From 1f9e3e9ba6a218048e67b748a3eed25bf2cf37ca Mon Sep 17 00:00:00 2001 From: Moritz Schneider Date: Wed, 12 Jun 2019 11:17:24 +0200 Subject: [PATCH 001/553] Styling: remove trailing whitespaces --- iterator/iter_utils.c | 138 +++++++++++++++++++++--------------------- 1 file changed, 69 insertions(+), 69 deletions(-) diff --git a/iterator/iter_utils.c b/iterator/iter_utils.c index 2ab55ceb4..c7f8def61 100644 --- a/iterator/iter_utils.c +++ b/iterator/iter_utils.c @@ -4,22 +4,22 @@ * Copyright (c) 2007, NLnet Labs. All rights reserved. * * This software is open source. - * + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: - * + * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. - * + * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. - * + * * Neither the name of the NLNET LABS nor the names of its contributors may * be used to endorse or promote products derived from this software without * specific prior written permission. - * + * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR @@ -37,7 +37,7 @@ * \file * * This file contains functions to assist the iterator module. - * Configuration options. Forward zones. + * Configuration options. Forward zones. */ #include "config.h" #include "iterator/iter_utils.h" @@ -140,7 +140,7 @@ caps_white_apply_cfg(rbtree_type* ntree, struct config_file* cfg) return 1; } -int +int iter_apply_cfg(struct iter_env* iter_env, struct config_file* cfg) { int i; @@ -150,7 +150,7 @@ iter_apply_cfg(struct iter_env* iter_env, struct config_file* cfg) for(i=0; imax_dependency_depth+1; i++) verbose(VERB_QUERY, "target fetch policy for level %d is %d", i, iter_env->target_fetch_policy[i]); - + if(!iter_env->donotq) iter_env->donotq = donotq_create(); if(!iter_env->donotq || !donotq_apply_cfg(iter_env->donotq, cfg)) { @@ -211,7 +211,7 @@ iter_apply_cfg(struct iter_env* iter_env, struct config_file* cfg) * dnsseclame servers get penalty * USEFUL_SERVER_TOP_TIMEOUT*3 .. * recursion lame servers get penalty - * UNKNOWN_SERVER_NICENESS + * UNKNOWN_SERVER_NICENESS * If no information is known about the server, this is * returned. 376 msec or so. * +BLACKLIST_PENALTY (of USEFUL_TOP_TIMEOUT*4) for dnssec failed IPs. @@ -220,11 +220,11 @@ iter_apply_cfg(struct iter_env* iter_env, struct config_file* cfg) * is turned off (so we do not discard the reply). * When a final value is chosen that is recursionlame; RD bit is set on query. * Because of the numbers this means recursionlame also have dnssec lameness - * checking turned off. + * checking turned off. */ static int iter_filter_unsuitable(struct iter_env* iter_env, struct module_env* env, - uint8_t* name, size_t namelen, uint16_t qtype, time_t now, + uint8_t* name, size_t namelen, uint16_t qtype, time_t now, struct delegpt_addr* a) { int rtt, lame, reclame, dnsseclame; @@ -242,8 +242,8 @@ iter_filter_unsuitable(struct iter_env* iter_env, struct module_env* env, return -1; /* there is no ip4 available */ } /* check lameness - need zone , class info */ - if(infra_get_lame_rtt(env->infra_cache, &a->addr, a->addrlen, - name, namelen, qtype, &lame, &dnsseclame, &reclame, + if(infra_get_lame_rtt(env->infra_cache, &a->addr, a->addrlen, + name, namelen, qtype, &lame, &dnsseclame, &reclame, &rtt, now)) { log_addr(VERB_ALGO, "servselect", &a->addr, a->addrlen); verbose(VERB_ALGO, " rtt=%d%s%s%s%s", rtt, @@ -281,7 +281,7 @@ iter_filter_unsuitable(struct iter_env* iter_env, struct module_env* env, /** lookup RTT information, and also store fastest rtt (if any) */ static int iter_fill_rtt(struct iter_env* iter_env, struct module_env* env, - uint8_t* name, size_t namelen, uint16_t qtype, time_t now, + uint8_t* name, size_t namelen, uint16_t qtype, time_t now, struct delegpt* dp, int* best_rtt, struct sock_list* blacklist, size_t* num_suitable_results) { @@ -292,7 +292,7 @@ iter_fill_rtt(struct iter_env* iter_env, struct module_env* env, if(dp->bogus) return 0; /* NS bogus, all bogus, nothing found */ for(a=dp->result_list; a; a = a->next_result) { - a->sel_rtt = iter_filter_unsuitable(iter_env, env, + a->sel_rtt = iter_filter_unsuitable(iter_env, env, name, namelen, qtype, now, a); if(a->sel_rtt != -1) { if(sock_list_find(blacklist, &a->addr, a->addrlen)) @@ -328,7 +328,7 @@ nth_rtt(struct delegpt_addr* result_list, size_t num_results, size_t n) int rtt_band; size_t i; int* rtt_list, *rtt_index; - + if(num_results < 1 || n >= num_results) { return -1; } @@ -360,8 +360,8 @@ nth_rtt(struct delegpt_addr* result_list, size_t num_results, size_t n) * returns number of best targets (or 0, no suitable targets) */ static int iter_filter_order(struct iter_env* iter_env, struct module_env* env, - uint8_t* name, size_t namelen, uint16_t qtype, time_t now, - struct delegpt* dp, int* selected_rtt, int open_target, + uint8_t* name, size_t namelen, uint16_t qtype, time_t now, + struct delegpt* dp, int* selected_rtt, int open_target, struct sock_list* blacklist, time_t prefetch) { int got_num = 0, low_rtt = 0, swap_to_front, rtt_band = RTT_BAND, nth; @@ -369,9 +369,9 @@ iter_filter_order(struct iter_env* iter_env, struct module_env* env, struct delegpt_addr* a, *n, *prev=NULL; /* fillup sel_rtt and find best rtt in the bunch */ - got_num = iter_fill_rtt(iter_env, env, name, namelen, qtype, now, dp, + got_num = iter_fill_rtt(iter_env, env, name, namelen, qtype, now, dp, &low_rtt, blacklist, &num_results); - if(got_num == 0) + if(got_num == 0) return 0; if(low_rtt >= USEFUL_SERVER_TOP_TIMEOUT && (delegpt_count_missing_targets(dp) > 0 || open_target > 0)) { @@ -488,9 +488,9 @@ iter_filter_order(struct iter_env* iter_env, struct module_env* env, return got_num; } -struct delegpt_addr* -iter_server_selection(struct iter_env* iter_env, - struct module_env* env, struct delegpt* dp, +struct delegpt_addr* +iter_server_selection(struct iter_env* iter_env, + struct module_env* env, struct delegpt* dp, uint8_t* name, size_t namelen, uint16_t qtype, int* dnssec_lame, int* chase_to_rd, int open_target, struct sock_list* blacklist, time_t prefetch) @@ -542,7 +542,7 @@ iter_server_selection(struct iter_env* iter_env, log_assert(num > 1); /* grab secure random number, to pick unexpected server. * also we need it to be threadsafe. */ - sel = ub_random_max(env->rnd, num); + sel = ub_random_max(env->rnd, num); a = dp->result_list; prev = NULL; while(sel > 0 && a) { @@ -561,8 +561,8 @@ iter_server_selection(struct iter_env* iter_env, return a; } -struct dns_msg* -dns_alloc_msg(sldns_buffer* pkt, struct msg_parse* msg, +struct dns_msg* +dns_alloc_msg(sldns_buffer* pkt, struct msg_parse* msg, struct regional* region) { struct dns_msg* m = (struct dns_msg*)regional_alloc(region, @@ -577,7 +577,7 @@ dns_alloc_msg(sldns_buffer* pkt, struct msg_parse* msg, return m; } -struct dns_msg* +struct dns_msg* dns_copy_msg(struct dns_msg* from, struct regional* region) { struct dns_msg* m = (struct dns_msg*)regional_alloc(region, @@ -593,7 +593,7 @@ dns_copy_msg(struct dns_msg* from, struct regional* region) return m; } -void +void iter_dns_store(struct module_env* env, struct query_info* msgqinf, struct reply_info* msgrep, int is_referral, time_t leeway, int pside, struct regional* region, uint16_t flags) @@ -603,7 +603,7 @@ iter_dns_store(struct module_env* env, struct query_info* msgqinf, log_err("out of memory: cannot store data in cache"); } -int +int iter_ns_probability(struct ub_randstate* rnd, int n, int m) { int sel; @@ -611,7 +611,7 @@ iter_ns_probability(struct ub_randstate* rnd, int n, int m) return 1; /* we do not need secure random numbers here, but * we do need it to be threadsafe, so we use this */ - sel = ub_random_max(rnd, m); + sel = ub_random_max(rnd, m); return (sel < n); } @@ -628,12 +628,12 @@ causes_cycle(struct module_qstate* qstate, uint8_t* name, size_t namelen, qinf.local_alias = NULL; fptr_ok(fptr_whitelist_modenv_detect_cycle( qstate->env->detect_cycle)); - return (*qstate->env->detect_cycle)(qstate, &qinf, + return (*qstate->env->detect_cycle)(qstate, &qinf, (uint16_t)(BIT_RD|BIT_CD), qstate->is_priming, qstate->is_valrec); } -void +void iter_mark_cycle_targets(struct module_qstate* qstate, struct delegpt* dp) { struct delegpt_ns* ns; @@ -641,21 +641,21 @@ iter_mark_cycle_targets(struct module_qstate* qstate, struct delegpt* dp) if(ns->resolved) continue; /* see if this ns as target causes dependency cycle */ - if(causes_cycle(qstate, ns->name, ns->namelen, + if(causes_cycle(qstate, ns->name, ns->namelen, LDNS_RR_TYPE_AAAA, qstate->qinfo.qclass) || - causes_cycle(qstate, ns->name, ns->namelen, + causes_cycle(qstate, ns->name, ns->namelen, LDNS_RR_TYPE_A, qstate->qinfo.qclass)) { log_nametypeclass(VERB_QUERY, "skipping target due " "to dependency cycle (harden-glue: no may " - "fix some of the cycles)", - ns->name, LDNS_RR_TYPE_A, + "fix some of the cycles)", + ns->name, LDNS_RR_TYPE_A, qstate->qinfo.qclass); ns->resolved = 1; } } } -void +void iter_mark_pside_cycle_targets(struct module_qstate* qstate, struct delegpt* dp) { struct delegpt_ns* ns; @@ -663,14 +663,14 @@ iter_mark_pside_cycle_targets(struct module_qstate* qstate, struct delegpt* dp) if(ns->done_pside4 && ns->done_pside6) continue; /* see if this ns as target causes dependency cycle */ - if(causes_cycle(qstate, ns->name, ns->namelen, + if(causes_cycle(qstate, ns->name, ns->namelen, LDNS_RR_TYPE_A, qstate->qinfo.qclass)) { log_nametypeclass(VERB_QUERY, "skipping target due " "to dependency cycle", ns->name, LDNS_RR_TYPE_A, qstate->qinfo.qclass); ns->done_pside4 = 1; } - if(causes_cycle(qstate, ns->name, ns->namelen, + if(causes_cycle(qstate, ns->name, ns->namelen, LDNS_RR_TYPE_AAAA, qstate->qinfo.qclass)) { log_nametypeclass(VERB_QUERY, "skipping target due " "to dependency cycle", ns->name, @@ -680,8 +680,8 @@ iter_mark_pside_cycle_targets(struct module_qstate* qstate, struct delegpt* dp) } } -int -iter_dp_is_useless(struct query_info* qinfo, uint16_t qflags, +int +iter_dp_is_useless(struct query_info* qinfo, uint16_t qflags, struct delegpt* dp) { struct delegpt_ns* ns; @@ -700,14 +700,14 @@ iter_dp_is_useless(struct query_info* qinfo, uint16_t qflags, /* either available or unused targets */ if(dp->usable_list || dp->result_list) return 0; - + /* see if query is for one of the nameservers, which is glue */ if( (qinfo->qtype == LDNS_RR_TYPE_A || qinfo->qtype == LDNS_RR_TYPE_AAAA) && dname_subdomain_c(qinfo->qname, dp->name) && delegpt_find_ns(dp, qinfo->qname, qinfo->qname_len)) return 1; - + for(ns = dp->nslist; ns; ns = ns->next) { if(ns->resolved) /* skip failed targets */ continue; @@ -725,7 +725,7 @@ iter_qname_indicates_dnssec(struct module_env* env, struct query_info *qinfo) return 0; /* a trust anchor exists above the name? */ if((a=anchors_lookup(env->anchors, qinfo->qname, qinfo->qname_len, - qinfo->qclass))) { + qinfo->qclass))) { if(a->numDS == 0 && a->numDNSKEY == 0) { /* insecure trust point */ lock_basic_unlock(&a->lock); @@ -738,7 +738,7 @@ iter_qname_indicates_dnssec(struct module_env* env, struct query_info *qinfo) return 0; } -int +int iter_indicates_dnssec(struct module_env* env, struct delegpt* dp, struct dns_msg* msg, uint16_t dclass) { @@ -782,7 +782,7 @@ iter_indicates_dnssec(struct module_env* env, struct delegpt* dp, return 0; } -int +int iter_msg_has_dnssec(struct dns_msg* msg) { size_t i; @@ -815,7 +815,7 @@ int iter_msg_from_zone(struct dns_msg* msg, struct delegpt* dp, * and referral to example.com. NS ... , then origin zone * is .com. For a referral to sub.example.com. NS ... then * we do not know, since example.com. may be in between. */ - for(i=0; irep->an_numrrsets+msg->rep->ns_numrrsets; + for(i=0; irep->an_numrrsets+msg->rep->ns_numrrsets; i++) { struct ub_packed_rrset_key* s = msg->rep->rrsets[i]; if(ntohs(s->rk.type) == LDNS_RR_TYPE_NS && @@ -830,7 +830,7 @@ int iter_msg_from_zone(struct dns_msg* msg, struct delegpt* dp, return 0; } log_assert(type==RESPONSE_TYPE_ANSWER || type==RESPONSE_TYPE_CNAME); - /* not a referral, and not lame delegation (upwards), so, + /* not a referral, and not lame delegation (upwards), so, * any NS rrset must be from the zone itself */ if(reply_find_rrset_section_an(msg->rep, dp->name, dp->namelen, LDNS_RR_TYPE_NS, dclass) || @@ -846,7 +846,7 @@ int iter_msg_from_zone(struct dns_msg* msg, struct delegpt* dp, } /** - * check equality of two rrsets + * check equality of two rrsets * @param k1: rrset * @param k2: rrset * @return true if equal @@ -875,7 +875,7 @@ rrset_equal(struct ub_packed_rrset_key* k1, struct ub_packed_rrset_key* k2) for(i=0; irr_len[i] != d2->rr_len[i] || /* no ttl check: d1->rr_ttl[i] != d2->rr_ttl[i] ||*/ - memcmp(d1->rr_data[i], d2->rr_data[i], + memcmp(d1->rr_data[i], d2->rr_data[i], d1->rr_len[i]) != 0) return 0; } @@ -906,7 +906,7 @@ rrset_canonical_sort_cmp(const void* x, const void* y) return 0; } -int +int reply_equal(struct reply_info* p, struct reply_info* q, struct regional* region) { size_t i; @@ -964,7 +964,7 @@ reply_equal(struct reply_info* p, struct reply_info* q, struct regional* region) return 1; } -void +void caps_strip_reply(struct reply_info* rep) { size_t i; @@ -1006,8 +1006,8 @@ int caps_failed_rcode(struct reply_info* rep) FLAGS_GET_RCODE(rep->flags) == LDNS_RCODE_NXDOMAIN); } -void -iter_store_parentside_rrset(struct module_env* env, +void +iter_store_parentside_rrset(struct module_env* env, struct ub_packed_rrset_key* rrset) { struct rrset_ref ref; @@ -1047,12 +1047,12 @@ iter_store_parentside_NS(struct module_env* env, struct reply_info* rep) } } -void iter_store_parentside_neg(struct module_env* env, +void iter_store_parentside_neg(struct module_env* env, struct query_info* qinfo, struct reply_info* rep) { /* TTL: NS from referral in iq->deleg_msg, * or first RR from iq->response, - * or servfail5secs if !iq->response */ + * or servfail5secs if !iq->response */ time_t ttl = NORR_TTL; struct ub_packed_rrset_key* neg; struct packed_rrset_data* newd; @@ -1073,7 +1073,7 @@ void iter_store_parentside_neg(struct module_env* env, neg->rk.type = htons(qinfo->qtype); neg->rk.rrset_class = htons(qinfo->qclass); neg->rk.flags = 0; - neg->rk.dname = regional_alloc_init(env->scratch, qinfo->qname, + neg->rk.dname = regional_alloc_init(env->scratch, qinfo->qname, qinfo->qname_len); if(!neg->rk.dname) { log_err("out of memory in store_parentside_neg"); @@ -1081,7 +1081,7 @@ void iter_store_parentside_neg(struct module_env* env, } neg->rk.dname_len = qinfo->qname_len; neg->entry.hash = rrset_key_hash(&neg->rk); - newd = (struct packed_rrset_data*)regional_alloc_zero(env->scratch, + newd = (struct packed_rrset_data*)regional_alloc_zero(env->scratch, sizeof(struct packed_rrset_data) + sizeof(size_t) + sizeof(uint8_t*) + sizeof(time_t) + sizeof(uint16_t)); if(!newd) { @@ -1106,13 +1106,13 @@ void iter_store_parentside_neg(struct module_env* env, iter_store_parentside_rrset(env, neg); } -int +int iter_lookup_parent_NS_from_cache(struct module_env* env, struct delegpt* dp, struct regional* region, struct query_info* qinfo) { struct ub_packed_rrset_key* akey; - akey = rrset_cache_lookup(env->rrset_cache, dp->name, - dp->namelen, LDNS_RR_TYPE_NS, qinfo->qclass, + akey = rrset_cache_lookup(env->rrset_cache, dp->name, + dp->namelen, LDNS_RR_TYPE_NS, qinfo->qclass, PACKED_RRSET_PARENT_SIDE, *env->now, 0); if(akey) { log_rrset_key(VERB_ALGO, "found parent-side NS in cache", akey); @@ -1135,8 +1135,8 @@ int iter_lookup_parent_glue_from_cache(struct module_env* env, size_t num = delegpt_count_targets(dp); for(ns = dp->nslist; ns; ns = ns->next) { /* get cached parentside A */ - akey = rrset_cache_lookup(env->rrset_cache, ns->name, - ns->namelen, LDNS_RR_TYPE_A, qinfo->qclass, + akey = rrset_cache_lookup(env->rrset_cache, ns->name, + ns->namelen, LDNS_RR_TYPE_A, qinfo->qclass, PACKED_RRSET_PARENT_SIDE, *env->now, 0); if(akey) { log_rrset_key(VERB_ALGO, "found parent-side", akey); @@ -1147,8 +1147,8 @@ int iter_lookup_parent_glue_from_cache(struct module_env* env, lock_rw_unlock(&akey->entry.lock); } /* get cached parentside AAAA */ - akey = rrset_cache_lookup(env->rrset_cache, ns->name, - ns->namelen, LDNS_RR_TYPE_AAAA, qinfo->qclass, + akey = rrset_cache_lookup(env->rrset_cache, ns->name, + ns->namelen, LDNS_RR_TYPE_AAAA, qinfo->qclass, PACKED_RRSET_PARENT_SIDE, *env->now, 0); if(akey) { log_rrset_key(VERB_ALGO, "found parent-side", akey); @@ -1163,8 +1163,8 @@ int iter_lookup_parent_glue_from_cache(struct module_env* env, return delegpt_count_targets(dp) != num; } -int -iter_get_next_root(struct iter_hints* hints, struct iter_forwards* fwd, +int +iter_get_next_root(struct iter_hints* hints, struct iter_forwards* fwd, uint16_t* c) { uint16_t c1 = *c, c2 = *c; @@ -1186,7 +1186,7 @@ void iter_scrub_ds(struct dns_msg* msg, struct ub_packed_rrset_key* ns, uint8_t* z) { /* Only the DS record for the delegation itself is expected. - * We allow DS for everything between the bailiwick and the + * We allow DS for everything between the bailiwick and the * zonecut, thus DS records must be at or above the zonecut. * And the DS records must be below the server authority zone. * The answer section is already scrubbed. */ @@ -1200,7 +1200,7 @@ iter_scrub_ds(struct dns_msg* msg, struct ub_packed_rrset_key* ns, uint8_t* z) s->rk.dname, ntohs(s->rk.type), ntohs(s->rk.rrset_class)); memmove(msg->rep->rrsets+i, msg->rep->rrsets+i+1, - sizeof(struct ub_packed_rrset_key*) * + sizeof(struct ub_packed_rrset_key*) * (msg->rep->rrset_count-i-1)); msg->rep->ns_numrrsets--; msg->rep->rrset_count--; From 2a4c7c81e737282638bb169df8ad57bb841e6ce6 Mon Sep 17 00:00:00 2001 From: Moritz Schneider Date: Wed, 12 Jun 2019 12:12:25 +0200 Subject: [PATCH 002/553] Styling: Fix mixture of tabs and spaces --- util/configparser.y | 420 ++++++++++++++++++++++---------------------- 1 file changed, 210 insertions(+), 210 deletions(-) diff --git a/util/configparser.y b/util/configparser.y index c7b916966..e90b18442 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -4,24 +4,24 @@ * Copyright (c) 2001-2006, NLnet Labs. All rights reserved. * * Copyright (c) 2007, NLnet Labs. All rights reserved. - * + * * This software is open source. - * + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: - * + * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. - * + * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. - * + * * Neither the name of the NLNET LABS nor the names of its contributors may * be used to endorse or promote products derived from this software without * specific prior written permission. - * + * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR @@ -87,13 +87,13 @@ extern struct config_parser_state* cfg_parser; %token VAR_TRUST_ANCHOR_FILE VAR_TRUST_ANCHOR VAR_VAL_OVERRIDE_DATE %token VAR_BOGUS_TTL VAR_VAL_CLEAN_ADDITIONAL VAR_VAL_PERMISSIVE_MODE %token VAR_INCOMING_NUM_TCP VAR_MSG_BUFFER_SIZE VAR_KEY_CACHE_SIZE -%token VAR_KEY_CACHE_SLABS VAR_TRUSTED_KEYS_FILE -%token VAR_VAL_NSEC3_KEYSIZE_ITERATIONS VAR_USE_SYSLOG +%token VAR_KEY_CACHE_SLABS VAR_TRUSTED_KEYS_FILE +%token VAR_VAL_NSEC3_KEYSIZE_ITERATIONS VAR_USE_SYSLOG %token VAR_OUTGOING_INTERFACE VAR_ROOT_HINTS VAR_DO_NOT_QUERY_LOCALHOST %token VAR_CACHE_MAX_TTL VAR_HARDEN_DNSSEC_STRIPPED VAR_ACCESS_CONTROL %token VAR_LOCAL_ZONE VAR_LOCAL_DATA VAR_INTERFACE_AUTOMATIC %token VAR_STATISTICS_INTERVAL VAR_DO_DAEMONIZE VAR_USE_CAPS_FOR_ID -%token VAR_STATISTICS_CUMULATIVE VAR_OUTGOING_PORT_PERMIT +%token VAR_STATISTICS_CUMULATIVE VAR_OUTGOING_PORT_PERMIT %token VAR_OUTGOING_PORT_AVOID VAR_DLV_ANCHOR_FILE VAR_DLV_ANCHOR %token VAR_NEG_CACHE_SIZE VAR_HARDEN_REFERRAL_PATH VAR_PRIVATE_ADDRESS %token VAR_PRIVATE_DOMAIN VAR_REMOTE_CONTROL VAR_CONTROL_ENABLE @@ -104,7 +104,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_STUB_PRIME VAR_UNWANTED_REPLY_THRESHOLD VAR_LOG_TIME_ASCII %token VAR_DOMAIN_INSECURE VAR_PYTHON VAR_PYTHON_SCRIPT VAR_VAL_SIG_SKEW_MIN %token VAR_VAL_SIG_SKEW_MAX VAR_CACHE_MIN_TTL VAR_VAL_LOG_LEVEL -%token VAR_AUTO_TRUST_ANCHOR_FILE VAR_KEEP_MISSING VAR_ADD_HOLDDOWN +%token VAR_AUTO_TRUST_ANCHOR_FILE VAR_KEEP_MISSING VAR_ADD_HOLDDOWN %token VAR_DEL_HOLDDOWN VAR_SO_RCVBUF VAR_EDNS_BUFFER_SIZE VAR_PREFETCH %token VAR_PREFETCH_KEY VAR_SO_SNDBUF VAR_SO_REUSEPORT VAR_HARDEN_BELOW_NXDOMAIN %token VAR_IGNORE_CD_FLAG VAR_LOG_QUERIES VAR_LOG_REPLIES VAR_LOG_LOCAL_ACTIONS @@ -171,7 +171,7 @@ extern struct config_parser_state* cfg_parser; %% toplevelvars: /* empty */ | toplevelvars toplevelvar ; toplevelvar: serverstart contents_server | stubstart contents_stub | - forwardstart contents_forward | pythonstart contents_py | + forwardstart contents_forward | pythonstart contents_py | rcstart contents_rc | dtstart contents_dt | viewstart contents_view | dnscstart contents_dnsc | cachedbstart contents_cachedb | authstart contents_auth @@ -179,11 +179,11 @@ toplevelvar: serverstart contents_server | stubstart contents_stub | /* server: declaration */ serverstart: VAR_SERVER - { - OUTYY(("\nP(server:)\n")); + { + OUTYY(("\nP(server:)\n")); } ; -contents_server: contents_server content_server +contents_server: contents_server content_server | ; content_server: server_num_threads | server_verbosity | server_port | server_outgoing_range | server_do_ip4 | @@ -191,38 +191,38 @@ content_server: server_num_threads | server_verbosity | server_port | server_do_udp | server_do_tcp | server_tcp_mss | server_outgoing_tcp_mss | server_tcp_idle_timeout | server_tcp_keepalive | server_tcp_keepalive_timeout | - server_interface | server_chroot | server_username | + server_interface | server_chroot | server_username | server_directory | server_logfile | server_pidfile | server_msg_cache_size | server_msg_cache_slabs | - server_num_queries_per_thread | server_rrset_cache_size | - server_rrset_cache_slabs | server_outgoing_num_tcp | - server_infra_host_ttl | server_infra_lame_ttl | + server_num_queries_per_thread | server_rrset_cache_size | + server_rrset_cache_slabs | server_outgoing_num_tcp | + server_infra_host_ttl | server_infra_lame_ttl | server_infra_cache_slabs | server_infra_cache_numhosts | - server_infra_cache_lame_size | server_target_fetch_policy | + server_infra_cache_lame_size | server_target_fetch_policy | server_harden_short_bufsize | server_harden_large_queries | server_do_not_query_address | server_hide_identity | server_hide_version | server_identity | server_version | server_harden_glue | server_module_conf | server_trust_anchor_file | server_trust_anchor | server_val_override_date | server_bogus_ttl | server_val_clean_additional | server_val_permissive_mode | - server_incoming_num_tcp | server_msg_buffer_size | - server_key_cache_size | server_key_cache_slabs | + server_incoming_num_tcp | server_msg_buffer_size | + server_key_cache_size | server_key_cache_slabs | server_trusted_keys_file | server_val_nsec3_keysize_iterations | server_use_syslog | server_outgoing_interface | server_root_hints | server_do_not_query_localhost | server_cache_max_ttl | server_harden_dnssec_stripped | server_access_control | server_local_zone | server_local_data | server_interface_automatic | - server_statistics_interval | server_do_daemonize | + server_statistics_interval | server_do_daemonize | server_use_caps_for_id | server_statistics_cumulative | server_outgoing_port_permit | server_outgoing_port_avoid | server_dlv_anchor_file | server_dlv_anchor | server_neg_cache_size | server_harden_referral_path | server_private_address | - server_private_domain | server_extended_statistics | - server_local_data_ptr | server_jostle_timeout | - server_unwanted_reply_threshold | server_log_time_ascii | - server_domain_insecure | server_val_sig_skew_min | + server_private_domain | server_extended_statistics | + server_local_data_ptr | server_jostle_timeout | + server_unwanted_reply_threshold | server_log_time_ascii | + server_domain_insecure | server_val_sig_skew_min | server_val_sig_skew_max | server_cache_min_ttl | server_val_log_level | - server_auto_trust_anchor_file | server_add_holddown | + server_auto_trust_anchor_file | server_add_holddown | server_del_holddown | server_keep_missing | server_so_rcvbuf | server_edns_buffer_size | server_prefetch | server_prefetch_key | server_so_sndbuf | server_harden_below_nxdomain | server_ignore_cd_flag | @@ -272,16 +272,16 @@ content_server: server_num_threads | server_verbosity | server_port | stubstart: VAR_STUB_ZONE { struct config_stub* s; - OUTYY(("\nP(stub_zone:)\n")); + 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 + } else yyerror("out of memory"); } ; -contents_stub: contents_stub content_stub +contents_stub: contents_stub content_stub | ; content_stub: stub_name | stub_host | stub_addr | stub_prime | stub_first | stub_no_cache | stub_ssl_upstream @@ -289,16 +289,16 @@ content_stub: stub_name | stub_host | stub_addr | stub_prime | stub_first | forwardstart: VAR_FORWARD_ZONE { struct config_stub* s; - OUTYY(("\nP(forward_zone:)\n")); + 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 + } else yyerror("out of memory"); } ; -contents_forward: contents_forward content_forward +contents_forward: contents_forward content_forward | ; content_forward: forward_name | forward_host | forward_addr | forward_first | forward_no_cache | forward_ssl_upstream @@ -306,18 +306,18 @@ content_forward: forward_name | forward_host | forward_addr | forward_first | viewstart: VAR_VIEW { struct config_view* s; - OUTYY(("\nP(view:)\n")); + 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 + } else yyerror("out of memory"); } ; -contents_view: contents_view content_view +contents_view: contents_view content_view | ; content_view: view_name | view_local_zone | view_local_data | view_first | view_response_ip | view_response_ip_data | view_local_data_ptr @@ -325,7 +325,7 @@ content_view: view_name | view_local_zone | view_local_data | view_first | authstart: VAR_AUTH_ZONE { struct config_auth* s; - OUTYY(("\nP(auth_zone:)\n")); + OUTYY(("\nP(auth_zone:)\n")); s = (struct config_auth*)calloc(1, sizeof(struct config_auth)); if(s) { s->next = cfg_parser->cfg->auths; @@ -334,37 +334,37 @@ authstart: VAR_AUTH_ZONE s->for_downstream = 1; s->for_upstream = 1; s->fallback_enabled = 0; - } else + } else yyerror("out of memory"); } ; -contents_auth: contents_auth content_auth +contents_auth: contents_auth content_auth | ; content_auth: auth_name | auth_zonefile | auth_master | auth_url | auth_for_downstream | auth_for_upstream | auth_fallback_enabled | auth_allow_notify ; -server_num_threads: VAR_NUM_THREADS STRING_ARG - { - OUTYY(("P(server_num_threads:%s)\n", $2)); +server_num_threads: VAR_NUM_THREADS STRING_ARG + { + OUTYY(("P(server_num_threads:%s)\n", $2)); if(atoi($2) == 0 && strcmp($2, "0") != 0) yyerror("number expected"); else cfg_parser->cfg->num_threads = atoi($2); free($2); } ; -server_verbosity: VAR_VERBOSITY STRING_ARG - { - OUTYY(("P(server_verbosity:%s)\n", $2)); +server_verbosity: VAR_VERBOSITY STRING_ARG + { + OUTYY(("P(server_verbosity:%s)\n", $2)); if(atoi($2) == 0 && strcmp($2, "0") != 0) yyerror("number expected"); else cfg_parser->cfg->verbosity = atoi($2); free($2); } ; -server_statistics_interval: VAR_STATISTICS_INTERVAL STRING_ARG - { - OUTYY(("P(server_statistics_interval:%s)\n", $2)); +server_statistics_interval: VAR_STATISTICS_INTERVAL STRING_ARG + { + OUTYY(("P(server_statistics_interval:%s)\n", $2)); if(strcmp($2, "") == 0 || strcmp($2, "0") == 0) cfg_parser->cfg->stat_interval = 0; else if(atoi($2) == 0) @@ -400,9 +400,9 @@ server_shm_enable: VAR_SHM_ENABLE STRING_ARG free($2); } ; -server_shm_key: VAR_SHM_KEY STRING_ARG - { - OUTYY(("P(server_shm_key:%s)\n", $2)); +server_shm_key: VAR_SHM_KEY STRING_ARG + { + OUTYY(("P(server_shm_key:%s)\n", $2)); if(strcmp($2, "") == 0 || strcmp($2, "0") == 0) cfg_parser->cfg->shm_key = 0; else if(atoi($2) == 0) @@ -573,7 +573,7 @@ server_interface: VAR_INTERFACE STRING_ARG OUTYY(("P(server_interface:%s)\n", $2)); 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, + 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"); @@ -586,8 +586,8 @@ server_outgoing_interface: VAR_OUTGOING_INTERFACE STRING_ARG OUTYY(("P(server_outgoing_interface:%s)\n", $2)); 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, + 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"); @@ -608,7 +608,7 @@ server_outgoing_range: VAR_OUTGOING_RANGE STRING_ARG server_outgoing_port_permit: VAR_OUTGOING_PORT_PERMIT STRING_ARG { OUTYY(("P(server_outgoing_port_permit:%s)\n", $2)); - if(!cfg_mark_ports($2, 1, + if(!cfg_mark_ports($2, 1, cfg_parser->cfg->outgoing_avail_ports, 65536)) yyerror("port number or range (\"low-high\") expected"); free($2); @@ -617,7 +617,7 @@ server_outgoing_port_permit: VAR_OUTGOING_PORT_PERMIT STRING_ARG server_outgoing_port_avoid: VAR_OUTGOING_PORT_AVOID STRING_ARG { OUTYY(("P(server_outgoing_port_avoid:%s)\n", $2)); - if(!cfg_mark_ports($2, 0, + if(!cfg_mark_ports($2, 0, cfg_parser->cfg->outgoing_avail_ports, 65536)) yyerror("port number or range (\"low-high\") expected"); free($2); @@ -698,10 +698,10 @@ server_prefer_ip6: VAR_PREFER_IP6 STRING_ARG server_tcp_mss: VAR_TCP_MSS STRING_ARG { OUTYY(("P(server_tcp_mss:%s)\n", $2)); - if(atoi($2) == 0 && strcmp($2, "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->tcp_mss = atoi($2); - free($2); + if(atoi($2) == 0 && strcmp($2, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->tcp_mss = atoi($2); + free($2); } ; server_outgoing_tcp_mss: VAR_OUTGOING_TCP_MSS STRING_ARG @@ -895,23 +895,23 @@ server_log_queries: VAR_LOG_QUERIES STRING_ARG } ; server_log_replies: VAR_LOG_REPLIES STRING_ARG - { - OUTYY(("P(server_log_replies:%s)\n", $2)); - if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->log_replies = (strcmp($2, "yes")==0); - free($2); - } - ; + { + OUTYY(("P(server_log_replies:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->log_replies = (strcmp($2, "yes")==0); + free($2); + } + ; server_log_tag_queryreply: VAR_LOG_TAG_QUERYREPLY STRING_ARG - { - OUTYY(("P(server_log_tag_queryreply:%s)\n", $2)); - if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->log_tag_queryreply = (strcmp($2, "yes")==0); - free($2); - } - ; + { + OUTYY(("P(server_log_tag_queryreply:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->log_tag_queryreply = (strcmp($2, "yes")==0); + free($2); + } + ; server_log_servfail: VAR_LOG_SERVFAIL STRING_ARG { OUTYY(("P(server_log_servfail:%s)\n", $2)); @@ -922,14 +922,14 @@ server_log_servfail: VAR_LOG_SERVFAIL STRING_ARG } ; server_log_local_actions: VAR_LOG_LOCAL_ACTIONS STRING_ARG - { - OUTYY(("P(server_log_local_actions:%s)\n", $2)); - if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->log_local_actions = (strcmp($2, "yes")==0); - free($2); - } - ; + { + OUTYY(("P(server_log_local_actions:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->log_local_actions = (strcmp($2, "yes")==0); + free($2); + } + ; server_chroot: VAR_CHROOT STRING_ARG { OUTYY(("P(server_chroot:%s)\n", $2)); @@ -963,7 +963,7 @@ server_directory: VAR_DIRECTORY STRING_ARG cfg_parser->chroot)) == 0) d += strlen(cfg_parser->chroot); if(d[0]) { - if(chdir(d)) + if(chdir(d)) log_err("cannot chdir to directory: %s (%s)", d, strerror(errno)); } @@ -1124,35 +1124,35 @@ server_so_sndbuf: VAR_SO_SNDBUF STRING_ARG } ; server_so_reuseport: VAR_SO_REUSEPORT STRING_ARG - { - OUTYY(("P(server_so_reuseport:%s)\n", $2)); - if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->so_reuseport = - (strcmp($2, "yes")==0); - free($2); - } - ; + { + OUTYY(("P(server_so_reuseport:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->so_reuseport = + (strcmp($2, "yes")==0); + free($2); + } + ; server_ip_transparent: VAR_IP_TRANSPARENT STRING_ARG - { - OUTYY(("P(server_ip_transparent:%s)\n", $2)); - if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->ip_transparent = - (strcmp($2, "yes")==0); - free($2); - } - ; + { + OUTYY(("P(server_ip_transparent:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->ip_transparent = + (strcmp($2, "yes")==0); + free($2); + } + ; server_ip_freebind: VAR_IP_FREEBIND STRING_ARG - { - OUTYY(("P(server_ip_freebind:%s)\n", $2)); - if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->ip_freebind = - (strcmp($2, "yes")==0); - free($2); - } - ; + { + OUTYY(("P(server_ip_freebind:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->ip_freebind = + (strcmp($2, "yes")==0); + free($2); + } + ; server_stream_wait_size: VAR_STREAM_WAIT_SIZE STRING_ARG { OUTYY(("P(server_stream_wait_size:%s)\n", $2)); @@ -1238,7 +1238,7 @@ server_unblock_lan_zones: VAR_UNBLOCK_LAN_ZONES STRING_ARG OUTYY(("P(server_unblock_lan_zones:%s)\n", $2)); if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->unblock_lan_zones = + else cfg_parser->cfg->unblock_lan_zones = (strcmp($2, "yes")==0); free($2); } @@ -1248,7 +1248,7 @@ server_insecure_lan_zones: VAR_INSECURE_LAN_ZONES STRING_ARG OUTYY(("P(server_insecure_lan_zones:%s)\n", $2)); if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->insecure_lan_zones = + else cfg_parser->cfg->insecure_lan_zones = (strcmp($2, "yes")==0); free($2); } @@ -1342,7 +1342,7 @@ server_harden_short_bufsize: VAR_HARDEN_SHORT_BUFSIZE STRING_ARG OUTYY(("P(server_harden_short_bufsize:%s)\n", $2)); if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->harden_short_bufsize = + else cfg_parser->cfg->harden_short_bufsize = (strcmp($2, "yes")==0); free($2); } @@ -1352,7 +1352,7 @@ server_harden_large_queries: VAR_HARDEN_LARGE_QUERIES STRING_ARG OUTYY(("P(server_harden_large_queries:%s)\n", $2)); if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->harden_large_queries = + else cfg_parser->cfg->harden_large_queries = (strcmp($2, "yes")==0); free($2); } @@ -1362,7 +1362,7 @@ server_harden_glue: VAR_HARDEN_GLUE STRING_ARG OUTYY(("P(server_harden_glue:%s)\n", $2)); if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->harden_glue = + else cfg_parser->cfg->harden_glue = (strcmp($2, "yes")==0); free($2); } @@ -1372,7 +1372,7 @@ server_harden_dnssec_stripped: VAR_HARDEN_DNSSEC_STRIPPED STRING_ARG OUTYY(("P(server_harden_dnssec_stripped:%s)\n", $2)); if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->harden_dnssec_stripped = + else cfg_parser->cfg->harden_dnssec_stripped = (strcmp($2, "yes")==0); free($2); } @@ -1382,7 +1382,7 @@ server_harden_below_nxdomain: VAR_HARDEN_BELOW_NXDOMAIN STRING_ARG OUTYY(("P(server_harden_below_nxdomain:%s)\n", $2)); if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->harden_below_nxdomain = + else cfg_parser->cfg->harden_below_nxdomain = (strcmp($2, "yes")==0); free($2); } @@ -1392,7 +1392,7 @@ server_harden_referral_path: VAR_HARDEN_REFERRAL_PATH STRING_ARG OUTYY(("P(server_harden_referral_path:%s)\n", $2)); if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->harden_referral_path = + else cfg_parser->cfg->harden_referral_path = (strcmp($2, "yes")==0); free($2); } @@ -1402,7 +1402,7 @@ server_harden_algo_downgrade: VAR_HARDEN_ALGO_DOWNGRADE STRING_ARG OUTYY(("P(server_harden_algo_downgrade:%s)\n", $2)); if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->harden_algo_downgrade = + else cfg_parser->cfg->harden_algo_downgrade = (strcmp($2, "yes")==0); free($2); } @@ -1412,7 +1412,7 @@ server_use_caps_for_id: VAR_USE_CAPS_FOR_ID STRING_ARG OUTYY(("P(server_use_caps_for_id:%s)\n", $2)); if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->use_caps_bits_for_id = + else cfg_parser->cfg->use_caps_bits_for_id = (strcmp($2, "yes")==0); free($2); } @@ -1486,7 +1486,7 @@ server_do_not_query_localhost: VAR_DO_NOT_QUERY_LOCALHOST STRING_ARG OUTYY(("P(server_do_not_query_localhost:%s)\n", $2)); if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->donotquery_localhost = + else cfg_parser->cfg->donotquery_localhost = (strcmp($2, "yes")==0); free($2); } @@ -1497,8 +1497,8 @@ server_access_control: VAR_ACCESS_CONTROL STRING_ARG STRING_ARG if(strcmp($3, "deny")!=0 && strcmp($3, "refuse")!=0 && strcmp($3, "deny_non_local")!=0 && strcmp($3, "refuse_non_local")!=0 && - strcmp($3, "allow_setrd")!=0 && - strcmp($3, "allow")!=0 && + strcmp($3, "allow_setrd")!=0 && + strcmp($3, "allow")!=0 && strcmp($3, "allow_snoop")!=0) { yyerror("expected deny, refuse, deny_non_local, " "refuse_non_local, allow, allow_setrd or " @@ -1524,7 +1524,7 @@ server_val_override_date: VAR_VAL_OVERRIDE_DATE STRING_ARG if(*$2 == '\0' || strcmp($2, "0") == 0) { cfg_parser->cfg->val_date_override = 0; } else if(strlen($2) == 14) { - cfg_parser->cfg->val_date_override = + cfg_parser->cfg->val_date_override = cfg_convert_timeval($2); if(!cfg_parser->cfg->val_date_override) yyerror("bad date/time specification"); @@ -1603,7 +1603,7 @@ server_val_clean_additional: VAR_VAL_CLEAN_ADDITIONAL STRING_ARG OUTYY(("P(server_val_clean_additional:%s)\n", $2)); if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->val_clean_additional = + else cfg_parser->cfg->val_clean_additional = (strcmp($2, "yes")==0); free($2); } @@ -1613,7 +1613,7 @@ server_val_permissive_mode: VAR_VAL_PERMISSIVE_MODE STRING_ARG OUTYY(("P(server_val_permissive_mode:%s)\n", $2)); if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->val_permissive_mode = + else cfg_parser->cfg->val_permissive_mode = (strcmp($2, "yes")==0); free($2); } @@ -1799,7 +1799,7 @@ server_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG fatal_exit("out of memory adding local-zone"); free($3); } else { - if(!cfg_str2list_insert(&cfg_parser->cfg->local_zones, + if(!cfg_str2list_insert(&cfg_parser->cfg->local_zones, $2, $3)) fatal_exit("out of memory adding local-zone"); } @@ -2007,9 +2007,9 @@ server_response_ip_tag: VAR_RESPONSE_IP_TAG STRING_ARG STRING_ARG } } ; -server_ip_ratelimit: VAR_IP_RATELIMIT STRING_ARG - { - OUTYY(("P(server_ip_ratelimit:%s)\n", $2)); +server_ip_ratelimit: VAR_IP_RATELIMIT STRING_ARG + { + OUTYY(("P(server_ip_ratelimit:%s)\n", $2)); if(atoi($2) == 0 && strcmp($2, "0") != 0) yyerror("number expected"); else cfg_parser->cfg->ip_ratelimit = atoi($2); @@ -2017,9 +2017,9 @@ server_ip_ratelimit: VAR_IP_RATELIMIT STRING_ARG } ; -server_ratelimit: VAR_RATELIMIT STRING_ARG - { - OUTYY(("P(server_ratelimit:%s)\n", $2)); +server_ratelimit: VAR_RATELIMIT STRING_ARG + { + OUTYY(("P(server_ratelimit:%s)\n", $2)); if(atoi($2) == 0 && strcmp($2, "0") != 0) yyerror("number expected"); else cfg_parser->cfg->ratelimit = atoi($2); @@ -2027,13 +2027,13 @@ server_ratelimit: VAR_RATELIMIT STRING_ARG } ; server_ip_ratelimit_size: VAR_IP_RATELIMIT_SIZE STRING_ARG - { - OUTYY(("P(server_ip_ratelimit_size:%s)\n", $2)); - if(!cfg_parse_memsize($2, &cfg_parser->cfg->ip_ratelimit_size)) - yyerror("memory size expected"); - free($2); - } - ; +{ + OUTYY(("P(server_ip_ratelimit_size:%s)\n", $2)); + if(!cfg_parse_memsize($2, &cfg_parser->cfg->ip_ratelimit_size)) + yyerror("memory size expected"); + free($2); +} +; server_ratelimit_size: VAR_RATELIMIT_SIZE STRING_ARG { OUTYY(("P(server_ratelimit_size:%s)\n", $2)); @@ -2043,18 +2043,18 @@ server_ratelimit_size: VAR_RATELIMIT_SIZE STRING_ARG } ; server_ip_ratelimit_slabs: VAR_IP_RATELIMIT_SLABS STRING_ARG - { - OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", $2)); - if(atoi($2) == 0) - yyerror("number expected"); - else { - cfg_parser->cfg->ip_ratelimit_slabs = atoi($2); - if(!is_pow2(cfg_parser->cfg->ip_ratelimit_slabs)) - yyerror("must be a power of 2"); - } - free($2); - } - ; +{ + OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", $2)); + if(atoi($2) == 0) + yyerror("number expected"); + else { + cfg_parser->cfg->ip_ratelimit_slabs = atoi($2); + if(!is_pow2(cfg_parser->cfg->ip_ratelimit_slabs)) + yyerror("must be a power of 2"); + } + free($2); +} +; server_ratelimit_slabs: VAR_RATELIMIT_SLABS STRING_ARG { OUTYY(("P(server_ratelimit_slabs:%s)\n", $2)); @@ -2098,42 +2098,42 @@ server_ratelimit_below_domain: VAR_RATELIMIT_BELOW_DOMAIN STRING_ARG STRING_ARG } } ; -server_ip_ratelimit_factor: VAR_IP_RATELIMIT_FACTOR STRING_ARG - { - OUTYY(("P(server_ip_ratelimit_factor:%s)\n", $2)); - if(atoi($2) == 0 && strcmp($2, "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->ip_ratelimit_factor = atoi($2); - free($2); +server_ip_ratelimit_factor: VAR_IP_RATELIMIT_FACTOR STRING_ARG + { + OUTYY(("P(server_ip_ratelimit_factor:%s)\n", $2)); + if(atoi($2) == 0 && strcmp($2, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->ip_ratelimit_factor = atoi($2); + free($2); } ; -server_ratelimit_factor: VAR_RATELIMIT_FACTOR STRING_ARG - { - OUTYY(("P(server_ratelimit_factor:%s)\n", $2)); +server_ratelimit_factor: VAR_RATELIMIT_FACTOR STRING_ARG + { + OUTYY(("P(server_ratelimit_factor:%s)\n", $2)); if(atoi($2) == 0 && strcmp($2, "0") != 0) yyerror("number expected"); else cfg_parser->cfg->ratelimit_factor = atoi($2); free($2); } ; -server_low_rtt: VAR_LOW_RTT STRING_ARG - { +server_low_rtt: VAR_LOW_RTT STRING_ARG + { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free($2); } ; -server_fast_server_num: VAR_FAST_SERVER_NUM STRING_ARG - { - OUTYY(("P(server_fast_server_num:%s)\n", $2)); +server_fast_server_num: VAR_FAST_SERVER_NUM STRING_ARG + { + OUTYY(("P(server_fast_server_num:%s)\n", $2)); if(atoi($2) <= 0) yyerror("number expected"); else cfg_parser->cfg->fast_server_num = atoi($2); free($2); } ; -server_fast_server_permil: VAR_FAST_SERVER_PERMIL STRING_ARG - { - OUTYY(("P(server_fast_server_permil:%s)\n", $2)); +server_fast_server_permil: VAR_FAST_SERVER_PERMIL STRING_ARG + { + OUTYY(("P(server_fast_server_permil:%s)\n", $2)); if(atoi($2) == 0 && strcmp($2, "0") != 0) yyerror("number expected"); else cfg_parser->cfg->fast_server_permil = atoi($2); @@ -2145,7 +2145,7 @@ server_qname_minimisation: VAR_QNAME_MINIMISATION STRING_ARG OUTYY(("P(server_qname_minimisation:%s)\n", $2)); if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->qname_minimisation = + else cfg_parser->cfg->qname_minimisation = (strcmp($2, "yes")==0); free($2); } @@ -2155,7 +2155,7 @@ server_qname_minimisation_strict: VAR_QNAME_MINIMISATION_STRICT STRING_ARG OUTYY(("P(server_qname_minimisation_strict:%s)\n", $2)); if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->qname_minimisation_strict = + else cfg_parser->cfg->qname_minimisation_strict = (strcmp($2, "yes")==0); free($2); } @@ -2285,7 +2285,7 @@ stub_ssl_upstream: VAR_STUB_SSL_UPSTREAM STRING_ARG OUTYY(("P(stub-ssl-upstream:%s)\n", $2)); if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->stubs->ssl_upstream = + else cfg_parser->cfg->stubs->ssl_upstream = (strcmp($2, "yes")==0); free($2); } @@ -2295,7 +2295,7 @@ stub_prime: VAR_STUB_PRIME STRING_ARG OUTYY(("P(stub-prime:%s)\n", $2)); if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->stubs->isprime = + else cfg_parser->cfg->stubs->isprime = (strcmp($2, "yes")==0); free($2); } @@ -2347,7 +2347,7 @@ forward_ssl_upstream: VAR_FORWARD_SSL_UPSTREAM STRING_ARG OUTYY(("P(forward-ssl-upstream:%s)\n", $2)); if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->forwards->ssl_upstream = + else cfg_parser->cfg->forwards->ssl_upstream = (strcmp($2, "yes")==0); free($2); } @@ -2457,7 +2457,7 @@ view_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG free($3); } else { if(!cfg_str2list_insert( - &cfg_parser->cfg->views->local_zones, + &cfg_parser->cfg->views->local_zones, $2, $3)) fatal_exit("out of memory adding local-zone"); } @@ -2514,11 +2514,11 @@ view_first: VAR_VIEW_FIRST STRING_ARG } ; rcstart: VAR_REMOTE_CONTROL - { - OUTYY(("\nP(remote-control:)\n")); + { + OUTYY(("\nP(remote-control:)\n")); } ; -contents_rc: contents_rc content_rc +contents_rc: contents_rc content_rc | ; content_rc: rc_control_enable | rc_control_interface | rc_control_port | rc_server_key_file | rc_server_cert_file | rc_control_key_file | @@ -2529,7 +2529,7 @@ rc_control_enable: VAR_CONTROL_ENABLE STRING_ARG OUTYY(("P(control_enable:%s)\n", $2)); if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->remote_control_enable = + else cfg_parser->cfg->remote_control_enable = (strcmp($2, "yes")==0); free($2); } @@ -2711,8 +2711,8 @@ dt_dnstap_log_forwarder_response_messages: VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MES } ; pythonstart: VAR_PYTHON - { - OUTYY(("\nP(python:)\n")); + { + OUTYY(("\nP(python:)\n")); } ; contents_py: contents_py content_py @@ -2828,44 +2828,44 @@ dnsc_dnscrypt_secret_key: VAR_DNSCRYPT_SECRET_KEY STRING_ARG ; dnsc_dnscrypt_shared_secret_cache_size: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE STRING_ARG { - OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", $2)); - if(!cfg_parse_memsize($2, &cfg_parser->cfg->dnscrypt_shared_secret_cache_size)) - yyerror("memory size expected"); - free($2); + OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", $2)); + if(!cfg_parse_memsize($2, &cfg_parser->cfg->dnscrypt_shared_secret_cache_size)) + yyerror("memory size expected"); + free($2); } ; dnsc_dnscrypt_shared_secret_cache_slabs: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS STRING_ARG { - OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", $2)); - if(atoi($2) == 0) - yyerror("number expected"); - else { - cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs = atoi($2); - if(!is_pow2(cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs)) - yyerror("must be a power of 2"); - } - free($2); + OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", $2)); + if(atoi($2) == 0) + yyerror("number expected"); + else { + cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs = atoi($2); + if(!is_pow2(cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs)) + yyerror("must be a power of 2"); + } + free($2); } ; dnsc_dnscrypt_nonce_cache_size: VAR_DNSCRYPT_NONCE_CACHE_SIZE STRING_ARG { - OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", $2)); - if(!cfg_parse_memsize($2, &cfg_parser->cfg->dnscrypt_nonce_cache_size)) - yyerror("memory size expected"); - free($2); + OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", $2)); + if(!cfg_parse_memsize($2, &cfg_parser->cfg->dnscrypt_nonce_cache_size)) + yyerror("memory size expected"); + free($2); } ; dnsc_dnscrypt_nonce_cache_slabs: VAR_DNSCRYPT_NONCE_CACHE_SLABS STRING_ARG { - OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", $2)); - if(atoi($2) == 0) - yyerror("number expected"); - else { - cfg_parser->cfg->dnscrypt_nonce_cache_slabs = atoi($2); - if(!is_pow2(cfg_parser->cfg->dnscrypt_nonce_cache_slabs)) - yyerror("must be a power of 2"); - } - free($2); + OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", $2)); + if(atoi($2) == 0) + yyerror("number expected"); + else { + cfg_parser->cfg->dnscrypt_nonce_cache_slabs = atoi($2); + if(!is_pow2(cfg_parser->cfg->dnscrypt_nonce_cache_slabs)) + yyerror("must be a power of 2"); + } + free($2); } ; cachedbstart: VAR_CACHEDB From 78fa3fcb070b3101af3de27b2708c040142cc110 Mon Sep 17 00:00:00 2001 From: Moritz Schneider Date: Wed, 12 Jun 2019 18:44:21 +0200 Subject: [PATCH 003/553] Add unit test for check the configuration of outbound max retries --- testdata/fwd_error_retries.rpl | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 testdata/fwd_error_retries.rpl diff --git a/testdata/fwd_error_retries.rpl b/testdata/fwd_error_retries.rpl new file mode 100644 index 000000000..b63086c0f --- /dev/null +++ b/testdata/fwd_error_retries.rpl @@ -0,0 +1,27 @@ +; config options +server: + outbound-msg-retry: 1 + +forward-zone: + name: "." + forward-addr: 216.0.0.1 +CONFIG_END +SCENARIO_BEGIN Test basic forwarding with servfail and retry of 1 +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END +; query fails with servfail, now we make only outgoing-msg-retry=1 retries +STEP 2 ERROR +; returns servfail +STEP 14 CHECK_ANSWER +ENTRY_BEGIN +MATCH opcode qname qtype +SECTION QUESTION +REPLY SERVFAIL QR RD RA +MATCH all +www.example.com. IN A +ENTRY_END +SCENARIO_END From 79cc0490964f37c7e047d4552bdd3c96f72ed9ec Mon Sep 17 00:00:00 2001 From: Moritz Schneider Date: Wed, 12 Jun 2019 18:51:26 +0200 Subject: [PATCH 004/553] Make outbound msg retry configurable --- iterator/iter_utils.c | 13 +++++++------ iterator/iter_utils.h | 7 +++++-- iterator/iterator.c | 15 ++++++++------- iterator/iterator.h | 5 +++-- util/config_file.c | 3 +++ util/config_file.h | 2 ++ util/configlexer.lex | 1 + util/configparser.y | 16 +++++++++++++--- 8 files changed, 42 insertions(+), 20 deletions(-) diff --git a/iterator/iter_utils.c b/iterator/iter_utils.c index c7f8def61..83563dbf5 100644 --- a/iterator/iter_utils.c +++ b/iterator/iter_utils.c @@ -175,6 +175,7 @@ iter_apply_cfg(struct iter_env* iter_env, struct config_file* cfg) } iter_env->supports_ipv6 = cfg->do_ip6; iter_env->supports_ipv4 = cfg->do_ip4; + iter_env->outbound_msg_retry = cfg->outbound_msg_retry; return 1; } @@ -532,7 +533,7 @@ iter_server_selection(struct iter_env* iter_env, if(num == 1) { a = dp->result_list; - if(++a->attempts < OUTBOUND_MSG_RETRY) + if(++a->attempts < iter_env->outbound_msg_retry) return a; dp->result_list = a->next_result; return a; @@ -552,7 +553,7 @@ iter_server_selection(struct iter_env* iter_env, } if(!a) /* robustness */ return NULL; - if(++a->attempts < OUTBOUND_MSG_RETRY) + if(++a->attempts < iter_env->outbound_msg_retry) return a; /* remove it from the delegation point result list */ if(prev) @@ -1224,11 +1225,11 @@ iter_scrub_nxdomain(struct dns_msg* msg) msg->rep->an_numrrsets = 0; } -void iter_dec_attempts(struct delegpt* dp, int d) +void iter_dec_attempts(struct delegpt* dp, int d, size_t outbound_msg_retry) { struct delegpt_addr* a; for(a=dp->target_list; a; a = a->next_target) { - if(a->attempts >= OUTBOUND_MSG_RETRY) { + if(a->attempts >= outbound_msg_retry) { /* add back to result list */ a->next_result = dp->result_list; dp->result_list = a; @@ -1239,7 +1240,7 @@ void iter_dec_attempts(struct delegpt* dp, int d) } } -void iter_merge_retry_counts(struct delegpt* dp, struct delegpt* old) +void iter_merge_retry_counts(struct delegpt* dp, struct delegpt* old, size_t outbound_msg_retry) { struct delegpt_addr* a, *o, *prev; for(a=dp->target_list; a; a = a->next_target) { @@ -1253,7 +1254,7 @@ void iter_merge_retry_counts(struct delegpt* dp, struct delegpt* old) prev = NULL; a = dp->usable_list; while(a) { - if(a->attempts >= OUTBOUND_MSG_RETRY) { + if(a->attempts >= outbound_msg_retry) { log_addr(VERB_ALGO, "remove from usable list dp", &a->addr, a->addrlen); /* remove from result list */ diff --git a/iterator/iter_utils.h b/iterator/iter_utils.h index f771930bb..1ad5d4216 100644 --- a/iterator/iter_utils.h +++ b/iterator/iter_utils.h @@ -345,16 +345,19 @@ void iter_scrub_nxdomain(struct dns_msg* msg); * Remove query attempts from all available ips. For 0x20. * @param dp: delegpt. * @param d: decrease. + * @param outbound_msg_retry: number of retries of outgoing queries */ -void iter_dec_attempts(struct delegpt* dp, int d); +void iter_dec_attempts(struct delegpt* dp, int d, size_t outbound_msg_retry); /** * Add retry counts from older delegpt to newer delegpt. * Does not waste time on timeout'd (or other failing) addresses. * @param dp: new delegationpoint. * @param old: old delegationpoint. + * @param outbound_msg_retry: number of retries of outgoing queries */ -void iter_merge_retry_counts(struct delegpt* dp, struct delegpt* old); +void iter_merge_retry_counts(struct delegpt* dp, struct delegpt* old, + size_t outbound_msg_retry); /** * See if a DS response (type ANSWER) is too low: a nodata answer with diff --git a/iterator/iterator.c b/iterator/iterator.c index c906c2714..0b6236ad2 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -2188,7 +2188,7 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, iq->minimise_count++; iq->minimise_timeout_count = 0; - iter_dec_attempts(iq->dp, 1); + iter_dec_attempts(iq->dp, 1, ie->outbound_msg_retry); /* Limit number of iterations for QNAMEs with more * than MAX_MINIMISE_COUNT labels. Send first MINIMISE_ONE_LAB @@ -2358,7 +2358,7 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, (int)iq->caps_server+1, (int)naddr*3); iq->response = iq->caps_response; iq->caps_fallback = 0; - iter_dec_attempts(iq->dp, 3); /* space for fallback */ + iter_dec_attempts(iq->dp, 3, ie->outbound_msg_retry); /* space for fallback */ iq->num_current_queries++; /* RespState decrements it*/ iq->referral_count++; /* make sure we don't loop */ iq->sent_count = 0; @@ -2445,7 +2445,7 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, (int)iq->caps_server+1); iq->response = iq->caps_response; iq->caps_fallback = 0; - iter_dec_attempts(iq->dp, 3); /* space for fallback */ + iter_dec_attempts(iq->dp, 3, ie->outbound_msg_retry); /* space for fallback */ iq->num_current_queries++; /* RespState decrements it*/ iq->referral_count++; /* make sure we don't loop */ iq->sent_count = 0; @@ -2570,7 +2570,7 @@ find_NS(struct reply_info* rep, size_t from, size_t to) */ static int processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq, - int id) + int id, size_t outbound_msg_retry) { int dnsseclame = 0; enum response_type type; @@ -2843,7 +2843,7 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq, } if(iq->store_parent_NS && query_dname_compare(iq->dp->name, iq->store_parent_NS->name) == 0) - iter_merge_retry_counts(iq->dp, iq->store_parent_NS); + iter_merge_retry_counts(iq->dp, iq->store_parent_NS, outbound_msg_retry); delegpt_log(VERB_ALGO, iq->dp); /* Count this as a referral. */ iq->referral_count++; @@ -3538,7 +3538,8 @@ iter_handle(struct module_qstate* qstate, struct iter_qstate* iq, cont = processQueryTargets(qstate, iq, ie, id); break; case QUERY_RESP_STATE: - cont = processQueryResponse(qstate, iq, id); + cont = processQueryResponse( + qstate, iq, id, ie->outbound_msg_retry); break; case PRIME_RESP_STATE: cont = processPrimeResponse(qstate, id); @@ -3608,7 +3609,7 @@ process_response(struct module_qstate* qstate, struct iter_qstate* iq, iq->num_current_queries--; /* need fresh attempts for the 0x20 fallback, if * that was the cause for the failure */ - iter_dec_attempts(iq->dp, 3); + iter_dec_attempts(iq->dp, 3, ie->outbound_msg_retry); verbose(VERB_DETAIL, "Capsforid: timeouts, starting fallback"); goto handle_it; } diff --git a/iterator/iterator.h b/iterator/iterator.h index a2f1b5705..87281969c 100644 --- a/iterator/iterator.h +++ b/iterator/iterator.h @@ -89,8 +89,6 @@ extern int UNKNOWN_SERVER_NICENESS; * Equals RTT_MAX_TIMEOUT */ #define USEFUL_SERVER_TOP_TIMEOUT 120000 -/** number of retries on outgoing queries */ -#define OUTBOUND_MSG_RETRY 5 /** RTT band, within this amount from the best, servers are chosen randomly. * Chosen so that the UNKNOWN_SERVER_NICENESS falls within the band of a * fast server, this causes server exploration as a side benefit. msec. */ @@ -134,6 +132,9 @@ struct iter_env { lock_basic_type queries_ratelimit_lock; /** number of queries that have been ratelimited */ size_t num_queries_ratelimited; + + /** number of retries on outgoing queries */ + size_t outbound_msg_retry; }; /** diff --git a/util/config_file.c b/util/config_file.c index 9b60254d7..63797c8e7 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -299,6 +299,7 @@ config_create(void) cfg->ratelimit_size = 4*1024*1024; cfg->ratelimit_for_domain = NULL; cfg->ratelimit_below_domain = NULL; + cfg->outbound_msg_retry = 5; cfg->ip_ratelimit_factor = 10; cfg->ratelimit_factor = 10; cfg->qname_minimisation = 1; @@ -660,6 +661,7 @@ int config_set_option(struct config_file* cfg, const char* opt, else S_POW2("ratelimit-slabs:", ratelimit_slabs) else S_NUMBER_OR_ZERO("ip-ratelimit-factor:", ip_ratelimit_factor) else S_NUMBER_OR_ZERO("ratelimit-factor:", ratelimit_factor) + else S_SIZET_NONZERO("outbound-msg-retry", outbound_msg_retry) else S_SIZET_NONZERO("fast-server-num:", fast_server_num) else S_NUMBER_OR_ZERO("fast-server-permil:", fast_server_permil) else S_YNO("qname-minimisation:", qname_minimisation) @@ -1066,6 +1068,7 @@ config_get_option(struct config_file* cfg, const char* opt, else O_LS2(opt, "ratelimit-below-domain", ratelimit_below_domain) else O_DEC(opt, "ip-ratelimit-factor", ip_ratelimit_factor) else O_DEC(opt, "ratelimit-factor", ratelimit_factor) + else O_UNS(opt, "outbound-msg-retry", outbound_msg_retry) else O_DEC(opt, "fast-server-num", fast_server_num) else O_DEC(opt, "fast-server-permil", fast_server_permil) else O_DEC(opt, "val-sig-skew-min", val_sig_skew_min) diff --git a/util/config_file.h b/util/config_file.h index 3cffdbff9..6c249eddc 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -511,6 +511,8 @@ struct config_file { struct config_str2list* ratelimit_below_domain; /** ratelimit factor, 0 blocks all, 10 allows 1/10 of traffic */ int ratelimit_factor; + /** number of retries on outgoing queries */ + size_t outbound_msg_retry; /** minimise outgoing QNAME and hide original QTYPE if possible */ int qname_minimisation; /** minimise QNAME in strict mode, minimise according to RFC. diff --git a/util/configlexer.lex b/util/configlexer.lex index 16b5bc547..df8a6d585 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -450,6 +450,7 @@ ratelimit-for-domain{COLON} { YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } ratelimit-below-domain{COLON} { YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } ip-ratelimit-factor{COLON} { YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } ratelimit-factor{COLON} { YDVAR(1, VAR_RATELIMIT_FACTOR) } +outbound-msg-retry{COLON} { YDVAR(1, VAR_OUTBOUND_MSG_RETRY) } low-rtt{COLON} { YDVAR(1, VAR_LOW_RTT) } fast-server-num{COLON} { YDVAR(1, VAR_FAST_SERVER_NUM) } low-rtt-pct{COLON} { YDVAR(1, VAR_FAST_SERVER_PERMIL) } diff --git a/util/configparser.y b/util/configparser.y index e90b18442..2681e76b5 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -130,6 +130,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_DISABLE_DNSSEC_LAME_CHECK %token VAR_IP_RATELIMIT VAR_IP_RATELIMIT_SLABS VAR_IP_RATELIMIT_SIZE %token VAR_RATELIMIT VAR_RATELIMIT_SLABS VAR_RATELIMIT_SIZE +%token VAR_OUTBOUND_MSG_RETRY %token VAR_RATELIMIT_FOR_DOMAIN VAR_RATELIMIT_BELOW_DOMAIN %token VAR_IP_RATELIMIT_FACTOR VAR_RATELIMIT_FACTOR %token VAR_SEND_CLIENT_SUBNET VAR_CLIENT_SUBNET_ZONE @@ -239,9 +240,9 @@ content_server: server_num_threads | server_verbosity | server_port | server_ip_ratelimit_size | server_ratelimit_size | server_ratelimit_for_domain | server_ratelimit_below_domain | server_ratelimit_factor | - server_ip_ratelimit_factor | server_send_client_subnet | - server_client_subnet_zone | server_client_subnet_always_forward | - server_client_subnet_opcode | + server_ip_ratelimit_factor | server_outbound_msg_retry | + 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 | @@ -2116,6 +2117,15 @@ server_ratelimit_factor: VAR_RATELIMIT_FACTOR STRING_ARG free($2); } ; +server_outbound_msg_retry: VAR_OUTBOUND_MSG_RETRY STRING_ARG +{ + OUTYY(("P(server_outbound_msg_retry:%s)\n", $2)); + if(atoi($2) == 0 && strcmp($2, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->outbound_msg_retry = atoi($2); + free($2); +} +; server_low_rtt: VAR_LOW_RTT STRING_ARG { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); From eb5683d6e62f2dc21512d2b7f2c1b2f0d8474de0 Mon Sep 17 00:00:00 2001 From: Moritz Schneider Date: Wed, 12 Jun 2019 18:52:41 +0200 Subject: [PATCH 005/553] Update configparser with outbound-msg-retry config parameter --- util/configlexer.c | 4269 ++++++++++++++++++++++--------------------- util/configparser.c | 3210 ++++++++++++++++---------------- util/configparser.h | 374 ++-- 3 files changed, 3941 insertions(+), 3912 deletions(-) diff --git a/util/configlexer.c b/util/configlexer.c index 2d9be6217..280c85e36 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -10,7 +10,7 @@ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 6 -#define YY_FLEX_SUBMINOR_VERSION 1 +#define YY_FLEX_SUBMINOR_VERSION 4 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif @@ -85,10 +85,16 @@ typedef unsigned int flex_uint32_t; #define UINT32_MAX (4294967295U) #endif +#ifndef SIZE_MAX +#define SIZE_MAX (~(size_t)0) +#endif + #endif /* ! C99 */ #endif /* ! FLEXINT_H */ +/* begin standard C++ headers. */ + /* TODO: this is always defined, so inline it */ #define yyconst const @@ -101,32 +107,26 @@ typedef unsigned int flex_uint32_t; /* Returned upon end-of-file. */ #define YY_NULL 0 -/* Promotes a possibly negative, possibly signed char to an unsigned - * integer for use as an array index. If the signed char is negative, - * we want to instead treat it as an 8-bit unsigned char, hence the - * double cast. +/* Promotes a possibly negative, possibly signed char to an + * integer in range [0..255] for use as an array index. */ -#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) +#define YY_SC_TO_UI(c) ((YY_CHAR) (c)) /* Enter a start condition. This macro really ought to take a parameter, * but we do it the disgusting crufty way forced on us by the ()-less * definition of BEGIN. */ #define BEGIN (yy_start) = 1 + 2 * - /* Translate the current start state into a value that can be later handed * to BEGIN to return to the state. The YYSTATE alias is for lex * compatibility. */ #define YY_START (((yy_start) - 1) / 2) #define YYSTATE YY_START - /* Action number for EOF rule of a given start state. */ #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) - /* Special action meaning "start processing a new file". */ -#define YY_NEW_FILE yyrestart(yyin ) - +#define YY_NEW_FILE yyrestart( yyin ) #define YY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ @@ -163,7 +163,7 @@ extern FILE *yyin, *yyout; #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 - + #define YY_LESS_LINENO(n) #define YY_LINENO_REWIND_TO(ptr) @@ -172,7 +172,7 @@ extern FILE *yyin, *yyout; do \ { \ /* Undo effects of setting up yytext. */ \ - yy_size_t yyless_macro_arg = (n); \ + int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ *yy_cp = (yy_hold_char); \ YY_RESTORE_YY_MORE_OFFSET \ @@ -180,7 +180,6 @@ extern FILE *yyin, *yyout; YY_DO_BEFORE_ACTION; /* set up yytext again */ \ } \ while ( 0 ) - #define unput(c) yyunput( c, (yytext_ptr) ) #ifndef YY_STRUCT_YY_BUFFER_STATE @@ -223,7 +222,7 @@ struct yy_buffer_state int yy_bs_lineno; /**< The line count. */ int yy_bs_column; /**< The column count. */ - + /* Whether to try to fill the input buffer when we reach the * end of it. */ @@ -262,7 +261,6 @@ static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ : NULL) - /* Same as previous macro, but useful when we know that the buffer stack is not * NULL or when we need an lvalue. For internal use only. */ @@ -283,62 +281,56 @@ static int yy_start = 0; /* start state number */ */ static int yy_did_buffer_switch_on_eof; -void yyrestart (FILE *input_file ); -void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ); -YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ); -void yy_delete_buffer (YY_BUFFER_STATE b ); -void yy_flush_buffer (YY_BUFFER_STATE b ); -void yypush_buffer_state (YY_BUFFER_STATE new_buffer ); -void yypop_buffer_state (void ); +void yyrestart ( FILE *input_file ); +void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer ); +YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size ); +void yy_delete_buffer ( YY_BUFFER_STATE b ); +void yy_flush_buffer ( YY_BUFFER_STATE b ); +void yypush_buffer_state ( YY_BUFFER_STATE new_buffer ); +void yypop_buffer_state ( void ); -static void yyensure_buffer_stack (void ); -static void yy_load_buffer_state (void ); -static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ); +static void yyensure_buffer_stack ( void ); +static void yy_load_buffer_state ( void ); +static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file ); +#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER ) -#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER ) +YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size ); +YY_BUFFER_STATE yy_scan_string ( const char *yy_str ); +YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len ); -YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ); -YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ); -YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len ); - -void *yyalloc (yy_size_t ); -void *yyrealloc (void *,yy_size_t ); -void yyfree (void * ); +void *yyalloc ( yy_size_t ); +void *yyrealloc ( void *, yy_size_t ); +void yyfree ( void * ); #define yy_new_buffer yy_create_buffer - #define yy_set_interactive(is_interactive) \ { \ if ( ! YY_CURRENT_BUFFER ){ \ yyensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer(yyin,YY_BUF_SIZE ); \ + yy_create_buffer( yyin, YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ } - #define yy_set_bol(at_bol) \ { \ if ( ! YY_CURRENT_BUFFER ){\ yyensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer(yyin,YY_BUF_SIZE ); \ + yy_create_buffer( yyin, YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ } - #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) /* Begin user sect3 */ - -typedef unsigned char YY_CHAR; +typedef flex_uint8_t YY_CHAR; FILE *yyin = NULL, *yyout = NULL; typedef int yy_state_type; extern int yylineno; - int yylineno = 1; extern char *yytext; @@ -347,10 +339,10 @@ extern char *yytext; #endif #define yytext_ptr yytext -static yy_state_type yy_get_previous_state (void ); -static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); -static int yy_get_next_buffer (void ); -static void yynoreturn yy_fatal_error (yyconst char* msg ); +static yy_state_type yy_get_previous_state ( void ); +static yy_state_type yy_try_NUL_trans ( yy_state_type current_state ); +static int yy_get_next_buffer ( void ); +static void yynoreturn yy_fatal_error ( const char* msg ); /* Done after the current pattern has been matched and before the * corresponding action - sets up yytext. @@ -362,9 +354,8 @@ static void yynoreturn yy_fatal_error (yyconst char* msg ); (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; - -#define YY_NUM_RULES 291 -#define YY_END_OF_BUFFER 292 +#define YY_NUM_RULES 292 +#define YY_END_OF_BUFFER 293 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -372,331 +363,332 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[2905] = +static const flex_int16_t yy_accept[2921] = { 0, - 1, 1, 273, 273, 277, 277, 281, 281, 285, 285, - 1, 1, 292, 289, 1, 271, 271, 290, 2, 290, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 273, 274, 274, 275, 290, 277, 278, 278, - 279, 290, 284, 281, 282, 282, 283, 290, 285, 286, - 286, 287, 290, 288, 272, 2, 276, 290, 288, 289, - 0, 1, 2, 2, 2, 2, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, + 1, 1, 274, 274, 278, 278, 282, 282, 286, 286, + 1, 1, 293, 290, 1, 272, 272, 291, 2, 291, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 274, 275, 275, 276, 291, 278, 279, 279, + 280, 291, 285, 282, 283, 283, 284, 291, 286, 287, + 287, 288, 291, 289, 273, 2, 277, 291, 289, 290, + 0, 1, 2, 2, 2, 2, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 273, - 0, 277, 0, 284, 0, 281, 285, 0, 288, 0, - 2, 2, 288, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 274, + 0, 278, 0, 285, 0, 282, 286, 0, 289, 0, + 2, 2, 289, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 288, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 289, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 114, - 289, 289, 289, 289, 289, 289, 289, 288, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 114, 290, 290, 290, 290, 290, 290, 290, 289, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 96, 289, 289, 289, 289, 289, 289, 8, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 119, 289, 288, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 96, 290, 290, 290, 290, 290, 290, 290, 8, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 119, 290, 289, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 288, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 54, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 214, 289, 14, 15, 289, 18, - 17, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 289, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 54, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 214, 290, 14, + 15, 290, 18, 17, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 113, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 198, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 3, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 113, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 198, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 3, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 289, 288, 289, 289, 289, 289, 289, 289, 289, 264, - 289, 289, 263, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 280, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 57, 289, 238, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 58, 289, 289, + 290, 290, 290, 290, 290, 289, 290, 290, 290, 290, + 290, 290, 290, 265, 290, 290, 264, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 281, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 57, 290, 239, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 187, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 20, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 138, 289, 289, - 280, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 94, 289, 289, 289, 289, 289, 289, 289, 246, + 290, 290, 58, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 187, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 20, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 138, 290, 290, 281, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 94, 290, 290, 290, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 159, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 137, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 93, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, + 290, 290, 290, 290, 247, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 159, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 137, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 93, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 31, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 32, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 55, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 112, 289, 289, 289, 289, 289, - 111, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 56, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 160, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, + 290, 290, 290, 290, 290, 290, 31, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 32, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 55, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 112, 290, 290, 290, 290, 290, 111, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 56, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 160, 290, 290, 290, 290, 290, 290, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 45, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 229, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 49, 289, 50, 289, 289, 289, 289, 289, 97, 289, - 98, 289, 289, 289, 289, 95, 289, 289, 289, 289, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 45, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 229, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 49, 290, 50, + 290, 290, 290, 290, 290, 97, 290, 98, 290, 290, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 7, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 207, 289, 289, 289, 289, 140, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 46, 289, 289, + 290, 290, 95, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 7, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 207, + 290, 290, 290, 290, 140, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 179, 289, 178, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 16, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 59, 289, 289, 289, 289, 289, 289, - 289, 289, 186, 289, 289, 289, 289, 289, 289, 100, - 289, 99, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 170, 289, 289, 289, 289, 289, 289, 289, + 290, 290, 290, 290, 46, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 179, 290, + 178, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 16, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 59, 290, 290, 290, 290, 290, 290, 290, 290, + 186, 290, 290, 290, 290, 290, 290, 100, 290, 99, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 289, 120, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 78, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 82, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 53, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 173, 174, 289, 289, 289, 240, 289, + 170, 290, 290, 290, 290, 290, 290, 290, 290, 120, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 78, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 82, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 53, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 6, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 244, 289, 289, 289, 265, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 41, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 43, 289, 289, 289, 289, 289, 289, 289, 289, 166, - 289, 289, 289, 115, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 191, 289, 167, 289, 289, 289, + 290, 173, 174, 290, 290, 290, 241, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 6, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 245, 290, 290, 290, 266, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 41, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 43, + 290, 290, 290, 290, 290, 290, 290, 290, 166, 290, + 290, 290, 115, 290, 290, 290, 290, 290, 290, 290, - 204, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 44, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 117, 105, 289, - 106, 289, 289, 289, 104, 289, 289, 289, 289, 289, - 289, 289, 289, 135, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 228, 289, 289, 289, 289, - 289, 289, 289, 289, 168, 289, 289, 289, 289, 289, - 171, 289, 177, 289, 289, 289, 289, 289, 203, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 92, 289, 289, 289, 289, 289, 289, + 290, 290, 290, 191, 290, 167, 290, 290, 290, 204, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 44, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 117, 105, 290, 106, + 290, 290, 290, 104, 290, 290, 290, 290, 290, 290, + 290, 290, 135, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 228, 290, 290, 290, 290, 290, + 290, 290, 290, 168, 290, 290, 290, 290, 290, 171, + 290, 177, 290, 290, 290, 290, 290, 203, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 51, 289, 289, 289, 25, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 19, - 289, 289, 289, 289, 289, 289, 26, 35, 289, 145, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 67, - 69, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 248, 289, 289, 289, 215, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 107, 289, 289, + 290, 290, 290, 92, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 51, 290, 290, 290, 25, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 19, + 290, 290, 290, 290, 290, 290, 26, 35, 290, 145, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 67, + 69, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 249, 290, 290, 290, 215, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 289, 289, 289, 289, 289, 289, 289, 134, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 259, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 139, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 197, 289, 289, 289, - 289, 289, 289, 289, 289, 268, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 156, 289, 289, 289, 289, - 289, 289, 289, 289, 101, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, + 290, 290, 290, 290, 290, 290, 290, 107, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 134, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 260, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 139, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 197, 290, 290, + 290, 290, 290, 290, 290, 290, 269, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 156, 290, 290, 290, + 290, 290, 290, 290, 290, 101, 290, 290, 290, 290, - 289, 289, 289, 289, 151, 289, 161, 289, 289, 289, - 289, 289, 123, 289, 289, 289, 289, 289, 88, 289, - 289, 289, 289, 189, 289, 289, 289, 289, 289, 289, - 205, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 220, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 116, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 155, 289, 289, 289, 289, 289, - 70, 71, 289, 289, 289, 289, 289, 52, 289, 289, - 289, 289, 289, 77, 162, 289, 180, 289, 208, 289, - 289, 172, 241, 289, 289, 289, 289, 289, 63, 289, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 151, 290, 161, 290, 290, + 290, 290, 290, 123, 290, 290, 290, 290, 290, 88, + 290, 290, 290, 290, 189, 290, 290, 290, 290, 290, + 290, 205, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 220, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 116, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 155, 290, 290, 290, 290, + 290, 70, 71, 290, 290, 290, 290, 290, 52, 290, + 290, 290, 290, 290, 77, 162, 290, 180, 290, 208, - 164, 289, 289, 289, 289, 289, 9, 289, 289, 289, - 91, 289, 289, 289, 289, 233, 289, 289, 289, 188, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 154, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 141, 289, 247, 289, - 289, 289, 289, 219, 289, 289, 289, 289, 289, 289, - 289, 289, 199, 289, 289, 289, 289, 239, 289, 289, + 290, 290, 172, 242, 290, 290, 290, 290, 290, 63, + 290, 164, 290, 290, 290, 290, 290, 290, 9, 290, + 290, 290, 91, 290, 290, 290, 290, 233, 290, 290, + 290, 188, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 154, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 141, 290, + 248, 290, 290, 290, 290, 219, 290, 290, 290, 290, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 262, 289, 163, 289, 289, 289, 289, 289, - 289, 289, 62, 64, 289, 289, 289, 289, 289, 289, - 289, 90, 289, 289, 289, 289, 231, 289, 289, 289, - 243, 289, 289, 289, 289, 289, 289, 289, 193, 33, - 27, 29, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 34, 289, 28, 30, 289, 289, 289, 289, 289, - 289, 289, 289, 87, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, + 290, 290, 290, 290, 199, 290, 290, 290, 290, 240, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 263, 290, 163, 290, 290, 290, + 290, 290, 290, 290, 62, 64, 290, 290, 290, 290, + 290, 290, 290, 290, 90, 290, 290, 290, 290, 231, + 290, 290, 290, 244, 290, 290, 290, 290, 290, 290, + 290, 193, 33, 27, 29, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 34, 290, 28, 30, 290, 290, + 290, 290, 290, 290, 290, 290, 87, 290, 290, 290, - 289, 195, 192, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 61, 289, 289, - 118, 289, 108, 289, 289, 289, 289, 289, 289, 289, - 289, 136, 13, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 257, 289, 260, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 12, 289, 289, 21, 289, - 289, 289, 237, 289, 289, 289, 245, 289, 65, 289, - 201, 289, 289, 194, 289, 289, 60, 289, 289, 289, - 289, 22, 289, 42, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 150, 149, 289, 289, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 195, 192, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 61, 290, 290, 118, 290, 108, 290, 290, 290, 290, + 290, 290, 290, 290, 136, 13, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 258, 290, 261, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 12, + 290, 290, 21, 290, 290, 290, 237, 290, 290, 290, + 246, 290, 65, 290, 201, 290, 290, 194, 290, 290, + 60, 290, 290, 290, 290, 22, 290, 42, 290, 290, - 289, 289, 289, 289, 289, 289, 289, 196, 190, 289, - 206, 289, 289, 249, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 72, 289, - 289, 289, 232, 289, 289, 289, 289, 176, 289, 289, - 289, 289, 200, 289, 289, 289, 289, 289, 289, 289, - 289, 266, 267, 147, 66, 289, 289, 157, 289, 289, - 102, 103, 289, 289, 289, 289, 142, 289, 144, 289, - 181, 289, 289, 289, 289, 148, 289, 289, 209, 289, - 289, 289, 289, 289, 289, 289, 125, 289, 289, 289, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 150, 149, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 196, 190, 290, 206, 290, 290, 250, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 72, 290, 290, 290, 232, 290, 290, 290, + 290, 176, 290, 290, 290, 290, 200, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 267, 268, 147, 66, + 290, 290, 157, 290, 290, 102, 103, 290, 290, 290, + 290, 142, 290, 144, 290, 181, 290, 290, 290, 290, - 289, 289, 289, 289, 289, 289, 289, 289, 216, 289, - 289, 289, 23, 289, 242, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 182, 289, 289, 230, - 289, 261, 289, 175, 289, 289, 289, 289, 47, 289, - 289, 289, 289, 4, 289, 289, 124, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 212, 36, 37, 289, 289, 289, 289, - 289, 289, 289, 250, 289, 289, 289, 289, 289, 289, - 218, 289, 289, 289, 185, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 75, 289, 48, 236, 289, 213, + 148, 290, 290, 209, 290, 290, 290, 290, 290, 290, + 290, 125, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 216, 290, 290, 290, 23, 290, 243, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 182, 290, 290, 230, 290, 262, 290, 175, 290, + 290, 290, 290, 238, 47, 290, 290, 290, 290, 4, + 290, 290, 124, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 212, + 36, 37, 290, 290, 290, 290, 290, 290, 290, 251, + 290, 290, 290, 290, 290, 290, 218, 290, 290, 290, - 289, 289, 289, 289, 11, 289, 289, 289, 289, 289, - 289, 289, 183, 79, 289, 39, 289, 289, 289, 289, - 289, 289, 289, 289, 153, 289, 289, 289, 289, 289, - 127, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 217, 121, 289, 289, 109, 110, 289, 289, 289, 81, - 85, 80, 289, 73, 289, 289, 289, 289, 289, 10, - 289, 289, 289, 234, 289, 289, 270, 38, 289, 289, - 289, 289, 289, 152, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 86, 84, 289, 74, 258, 289, 289, 289, + 185, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 75, 290, 48, 236, 290, 213, 290, 290, 290, 290, + 11, 290, 290, 290, 290, 290, 290, 290, 183, 79, + 290, 39, 290, 290, 290, 290, 290, 290, 290, 290, + 153, 290, 290, 290, 290, 290, 127, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 217, 121, 290, 290, + 109, 110, 290, 290, 290, 81, 85, 80, 290, 73, + 290, 290, 290, 290, 290, 10, 290, 290, 290, 234, + 290, 290, 271, 38, 290, 290, 290, 290, 290, 152, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 289, 289, 289, 289, 169, 289, 289, 289, 184, 289, - 289, 289, 289, 289, 289, 289, 289, 143, 68, 289, - 289, 289, 289, 289, 251, 289, 289, 289, 289, 289, - 289, 289, 122, 289, 83, 128, 129, 132, 133, 130, - 131, 76, 289, 235, 289, 289, 146, 289, 289, 289, - 289, 289, 211, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 158, 40, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 89, 289, 210, 289, 227, 255, 289, 289, 289, 289, + 290, 290, 290, 290, 290, 290, 290, 290, 86, 84, + 290, 74, 259, 290, 290, 290, 290, 290, 290, 290, + 169, 290, 290, 290, 184, 290, 290, 290, 290, 290, + 290, 290, 290, 143, 68, 290, 290, 290, 290, 290, + 252, 290, 290, 290, 290, 290, 290, 290, 122, 290, + 83, 128, 129, 132, 133, 130, 131, 76, 290, 235, + 290, 290, 146, 290, 290, 290, 290, 290, 211, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 158, 40, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 289, 289, 289, 289, 289, 289, 5, 289, 202, 289, - 289, 256, 289, 289, 289, 289, 289, 289, 289, 289, - 24, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 126, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 165, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 252, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 269, 289, 289, 223, 289, 289, 289, 289, - 289, 253, 289, 289, 289, 289, 289, 289, 254, 289, - 289, 289, 221, 289, 224, 225, 289, 289, 289, 289, + 290, 290, 290, 290, 290, 290, 89, 290, 210, 290, + 227, 256, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 5, 290, 202, 290, 290, 257, 290, 290, + 290, 290, 290, 290, 290, 290, 24, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 126, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 165, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 253, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 270, 290, + 290, 223, 290, 290, 290, 290, 290, 254, 290, 290, - 289, 222, 226, 0 + 290, 290, 290, 290, 255, 290, 290, 290, 221, 290, + 224, 225, 290, 290, 290, 290, 290, 222, 226, 0 } ; -static yyconst YY_CHAR yy_ec[256] = +static const YY_CHAR yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, @@ -728,7 +720,7 @@ static yyconst YY_CHAR yy_ec[256] = 1, 1, 1, 1, 1 } ; -static yyconst YY_CHAR yy_meta[41] = +static const YY_CHAR yy_meta[41] = { 0, 1, 2, 3, 4, 5, 1, 6, 1, 1, 1, 1, 1, 7, 1, 1, 1, 1, 1, 1, 1, @@ -736,15 +728,15 @@ static yyconst YY_CHAR yy_meta[41] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static yyconst flex_uint16_t yy_base[2919] = +static const flex_int16_t yy_base[2935] = { 0, 0, 0, 38, 41, 44, 46, 59, 65, 71, 77, - 90, 112, 2146, 1869, 81, 5674, 5674, 5674, 96, 52, + 90, 112, 2511, 2423, 81, 5700, 5700, 5700, 96, 52, 106, 63, 107, 111, 70, 128, 130, 133, 57, 88, 76, 135, 141, 117, 148, 145, 160, 164, 185, 176, - 191, 152, 1830, 5674, 5674, 5674, 107, 1790, 5674, 5674, - 5674, 165, 1674, 1331, 5674, 5674, 5674, 211, 1221, 5674, - 5674, 5674, 180, 1211, 5674, 217, 5674, 221, 168, 962, + 191, 152, 2327, 5700, 5700, 5700, 107, 2112, 5700, 5700, + 5700, 165, 2031, 1612, 5700, 5700, 5700, 211, 1164, 5700, + 5700, 5700, 180, 1103, 5700, 217, 5700, 221, 168, 952, 225, 189, 0, 232, 0, 0, 226, 189, 85, 221, 114, 227, 234, 156, 219, 235, 239, 236, 238, 132, 246, 242, 241, 252, 244, 247, 266, 243, 258, 273, @@ -752,641 +744,645 @@ static yyconst flex_uint16_t yy_base[2919] = 275, 187, 277, 278, 267, 274, 280, 283, 287, 289, 295, 297, 298, 299, 304, 305, 306, 311, 307, 315, 309, 313, 330, 318, 329, 325, 320, 335, 336, 339, - 340, 343, 345, 342, 346, 350, 349, 355, 357, 907, - 373, 754, 376, 671, 382, 632, 365, 386, 198, 390, + 340, 343, 345, 342, 346, 350, 349, 355, 357, 821, + 373, 750, 376, 672, 382, 633, 365, 386, 198, 390, 394, 0, 386, 374, 396, 388, 392, 393, 257, 391, 395, 397, 398, 400, 402, 415, 404, 413, 421, 423, 427, 424, 431, 434, 435, 436, 437, 419, 448, 446, 451, 443, 452, 454, 455, 458, 459, 474, 460, 461, 410, 468, 476, 478, 485, 470, 488, 489, 486, 493, - 491, 501, 503, 499, 500, 502, 504, 505, 509, 510, - 512, 514, 517, 515, 516, 520, 522, 521, 529, 523, - 534, 535, 542, 537, 538, 544, 541, 555, 556, 547, - 558, 551, 559, 560, 565, 568, 575, 570, 567, 571, - 579, 574, 577, 578, 582, 580, 594, 601, 592, 599, - 602, 600, 605, 606, 607, 608, 584, 617, 610, 581, - 622, 628, 612, 626, 631, 618, 614, 633, 635, 637, - 644, 640, 647, 643, 648, 649, 650, 652, 661, 656, - 659, 658, 660, 662, 664, 665, 668, 666, 674, 669, - 678, 680, 688, 686, 685, 698, 690, 691, 695, 701, + 491, 501, 503, 502, 499, 500, 505, 508, 510, 511, + 513, 515, 518, 516, 517, 521, 523, 522, 530, 524, + 535, 536, 543, 538, 539, 545, 542, 556, 557, 548, + 559, 552, 560, 561, 566, 569, 576, 571, 568, 572, + 580, 575, 578, 579, 583, 581, 595, 602, 593, 600, + 603, 601, 606, 607, 608, 609, 585, 618, 611, 582, + 623, 629, 613, 627, 632, 619, 615, 634, 636, 638, + 645, 641, 648, 644, 649, 650, 651, 653, 662, 657, + 660, 659, 661, 663, 665, 666, 669, 667, 675, 670, + 679, 681, 689, 687, 686, 699, 691, 692, 696, 702, - 693, 708, 702, 723, 712, 724, 713, 705, 694, 719, - 732, 729, 735, 737, 738, 739, 740, 741, 742, 750, - 745, 748, 755, 758, 762, 766, 746, 772, 747, 776, - 770, 774, 781, 803, 778, 768, 780, 782, 785, 5674, - 808, 786, 828, 792, 787, 815, 810, 812, 801, 817, - 825, 818, 829, 813, 821, 835, 851, 836, 838, 846, - 848, 852, 850, 860, 861, 853, 856, 864, 875, 867, - 870, 871, 882, 874, 872, 877, 881, 883, 887, 896, - 889, 897, 884, 898, 901, 904, 902, 908, 905, 909, - 912, 926, 906, 923, 928, 925, 931, 933, 935, 936, + 694, 709, 703, 724, 713, 725, 714, 706, 720, 695, + 729, 733, 736, 739, 730, 737, 743, 744, 746, 747, + 754, 749, 751, 758, 759, 760, 767, 761, 773, 768, + 778, 780, 781, 782, 804, 788, 790, 783, 784, 787, + 5700, 793, 800, 828, 802, 797, 816, 813, 818, 822, + 809, 826, 829, 838, 833, 834, 836, 851, 837, 846, + 849, 852, 853, 856, 863, 861, 864, 865, 868, 876, + 872, 873, 874, 883, 875, 878, 885, 886, 888, 753, + 887, 892, 896, 898, 902, 899, 905, 903, 907, 904, + 910, 911, 927, 922, 924, 928, 926, 929, 933, 935, - 937, 938, 946, 943, 942, 944, 949, 953, 955, 959, - 952, 945, 961, 966, 970, 967, 975, 977, 960, 983, - 5674, 985, 968, 980, 978, 990, 991, 5674, 993, 992, - 994, 1001, 996, 1004, 997, 1000, 1007, 1022, 999, 1006, - 1023, 1020, 1021, 783, 1024, 1025, 1027, 1028, 1030, 1031, - 1033, 1036, 1053, 1037, 1040, 1038, 1039, 1044, 1046, 1065, - 1048, 1051, 1062, 1066, 1077, 1064, 1081, 1068, 1076, 1085, - 1083, 1087, 1089, 1090, 1092, 1093, 1094, 1095, 1097, 1098, - 1099, 1103, 5674, 1101, 1111, 1119, 1118, 1105, 1121, 1122, - 1123, 1124, 1125, 1126, 1131, 1127, 1144, 1134, 1137, 1147, + 936, 937, 938, 946, 947, 942, 944, 953, 954, 955, + 960, 961, 945, 962, 966, 967, 968, 975, 973, 970, + 982, 5700, 984, 977, 979, 986, 988, 989, 990, 5700, + 992, 993, 994, 1001, 996, 1006, 999, 1003, 1011, 1020, + 1015, 1018, 1029, 1016, 1026, 1024, 1027, 1028, 1033, 1025, + 1034, 1036, 1037, 1041, 1057, 1042, 1044, 1045, 1050, 1051, + 1060, 1061, 1053, 1074, 1072, 1075, 1086, 1078, 1082, 1081, + 1087, 1089, 1092, 1095, 1093, 1043, 1097, 1099, 1098, 1100, + 1101, 1102, 1109, 1113, 5700, 1106, 1122, 1129, 1116, 1125, + 1111, 1127, 1131, 1114, 1133, 1134, 1136, 1135, 1145, 1148, - 1145, 1148, 1132, 1150, 1153, 1152, 1154, 1156, 1167, 1162, - 1160, 1169, 1177, 1179, 1181, 1182, 1164, 1183, 1184, 1174, - 1187, 1188, 1192, 1190, 1196, 1194, 1205, 1200, 1201, 1202, - 1203, 1212, 1209, 1208, 1217, 1210, 1226, 1216, 1230, 1231, - 1218, 1224, 1243, 1233, 1238, 1240, 1245, 1246, 1247, 1248, - 1251, 1253, 1254, 1256, 1255, 1258, 1259, 1262, 1263, 1265, - 1270, 1277, 1272, 1273, 1280, 1284, 1285, 1286, 1293, 1290, - 1294, 1296, 1292, 1307, 1291, 1298, 1302, 1314, 1305, 1309, - 1310, 1313, 1323, 1320, 1325, 1334, 1326, 1312, 1336, 1329, - 1339, 1335, 1340, 1342, 1343, 1344, 1351, 1346, 1347, 1352, + 1139, 1155, 1150, 1153, 1152, 1154, 1158, 1157, 1159, 1161, + 1171, 1167, 1173, 1182, 1185, 1184, 1187, 1194, 1174, 1189, + 1191, 1190, 1193, 1197, 1198, 1176, 1202, 1204, 1211, 1206, + 1207, 1212, 1213, 1220, 1218, 1215, 1216, 1222, 1226, 1230, + 1231, 1232, 1235, 1238, 1245, 1234, 1241, 1242, 1247, 1251, + 1250, 1256, 1257, 1258, 1260, 1259, 1261, 1263, 1267, 1266, + 1270, 1269, 1271, 1280, 1282, 1284, 1289, 1290, 1279, 1277, + 1293, 1300, 1296, 1304, 1299, 1303, 1311, 1306, 1309, 1312, + 1320, 1315, 1316, 1313, 1321, 1323, 1326, 1328, 1336, 1340, + 1327, 1342, 1329, 1343, 1337, 1346, 1347, 1349, 1350, 1357, - 1354, 1355, 1349, 1359, 1357, 1376, 1361, 1365, 1363, 1366, - 1374, 1379, 1380, 1381, 1383, 1384, 1386, 1387, 1389, 1390, - 1394, 1392, 1407, 1395, 1391, 1404, 1408, 1413, 1414, 1419, - 1420, 1398, 1422, 1423, 1426, 1427, 1430, 1428, 1431, 1435, - 1437, 1438, 1441, 1443, 1444, 1446, 1449, 1453, 1454, 5674, - 1448, 1461, 1459, 1460, 1462, 1466, 1468, 1475, 1470, 1473, - 1471, 1472, 1476, 1483, 5674, 1484, 5674, 5674, 1477, 5674, - 5674, 1481, 1487, 1482, 1500, 1506, 1508, 1501, 1485, 1510, - 1511, 1519, 1532, 1515, 1514, 1522, 1516, 1518, 1526, 1523, - 1527, 1537, 1542, 1548, 1546, 1554, 1545, 1517, 1538, 1556, + 1354, 1353, 1356, 1359, 1360, 1361, 1363, 1366, 1373, 1369, + 1372, 1376, 1377, 1382, 1379, 1385, 1387, 1388, 1389, 1390, + 1391, 1394, 1393, 1399, 1400, 1411, 1402, 1403, 1413, 1417, + 1415, 1421, 1425, 1427, 1419, 1429, 1431, 1409, 1433, 1434, + 1438, 1441, 1435, 1445, 1447, 1448, 1450, 1449, 1452, 1453, + 1458, 1460, 5700, 1455, 1467, 1465, 1468, 1466, 1471, 1473, + 1481, 1476, 1479, 1477, 1480, 1482, 1488, 5700, 1483, 5700, + 5700, 1487, 5700, 5700, 1490, 1503, 1492, 1511, 1512, 1516, + 1514, 1501, 1506, 1518, 1527, 1539, 1489, 1523, 1524, 1522, + 1526, 1531, 1528, 1532, 1534, 1536, 1545, 1552, 1548, 1554, - 1555, 1558, 1561, 1562, 1564, 1566, 1567, 1565, 1570, 1571, - 1578, 1576, 1574, 1590, 5674, 1586, 1594, 1598, 1595, 1602, - 1601, 1597, 1599, 1605, 1606, 1609, 1608, 1610, 1612, 1616, - 1618, 1623, 1619, 5674, 1621, 1622, 1627, 1628, 1633, 1634, - 1635, 1620, 1640, 1642, 1643, 1644, 1646, 1647, 5674, 1585, - 1652, 1648, 1654, 1655, 1660, 1661, 1656, 1663, 1664, 1665, - 1667, 1666, 1668, 1685, 1677, 1682, 1672, 1675, 1690, 1692, - 1693, 1700, 1695, 1701, 1697, 1703, 1702, 1704, 1705, 1707, - 1714, 1709, 1718, 1713, 1725, 1734, 1716, 1721, 1729, 1730, - 1731, 1736, 1738, 1739, 1743, 1744, 1751, 1746, 1748, 1750, + 1559, 1560, 1561, 1562, 1564, 1566, 1567, 1563, 1570, 1572, + 1569, 1576, 1575, 1586, 1585, 1592, 1595, 5700, 1593, 1602, + 1605, 1601, 1609, 1604, 1608, 1610, 1611, 1612, 1615, 1577, + 1616, 1613, 1622, 1617, 1625, 1634, 1624, 5700, 1627, 1629, + 1635, 1637, 1639, 1644, 1631, 1641, 1647, 1650, 1651, 1652, + 1653, 1656, 5700, 1655, 1663, 1654, 1664, 1658, 1660, 1668, + 1671, 1672, 1673, 1674, 1681, 1676, 1683, 1684, 1686, 1687, + 1689, 1690, 1700, 1691, 1696, 1710, 1698, 1703, 1707, 1711, + 1713, 1714, 1715, 1717, 1722, 1721, 1726, 1723, 1730, 1731, + 1728, 1729, 1738, 1739, 1740, 1741, 1751, 1746, 1747, 1753, - 1753, 1755, 1756, 1759, 1764, 1760, 1767, 1769, 1762, 5674, - 1770, 1772, 5674, 1773, 1775, 1797, 1776, 1779, 1780, 1785, - 1778, 1788, 1789, 1791, 1807, 1801, 1817, 1809, 1810, 1819, - 1820, 1821, 1822, 1824, 1827, 1831, 1838, 1839, 1799, 1847, - 1846, 1828, 1829, 1843, 1862, 1844, 1849, 1851, 1852, 1857, - 1855, 1859, 1866, 1853, 1871, 1874, 1875, 5674, 1883, 1884, - 1878, 1885, 1892, 1889, 1891, 1893, 1895, 1896, 1905, 1900, - 1901, 1903, 1906, 1907, 1911, 1913, 1914, 1915, 1916, 1917, - 1933, 5674, 1919, 5674, 1918, 1928, 1930, 1929, 1936, 1937, - 1939, 1940, 1941, 1938, 1950, 1959, 1942, 5674, 1956, 1963, + 1760, 1752, 1756, 1757, 1759, 1763, 1767, 1769, 1770, 1768, + 1774, 1776, 1777, 5700, 1778, 1779, 5700, 1780, 1783, 1805, + 1784, 1787, 1786, 1789, 1792, 1795, 1797, 1806, 1798, 1809, + 1819, 1811, 1824, 1807, 1827, 1829, 1830, 1815, 1831, 1833, + 1841, 1843, 1847, 1853, 1855, 1838, 1840, 1850, 1869, 1851, + 1852, 1858, 1854, 1861, 1871, 1856, 1865, 1867, 1873, 1881, + 1874, 5700, 1890, 1882, 1887, 1891, 1899, 1896, 1894, 1898, + 1900, 1902, 1903, 1905, 1908, 1910, 1911, 1912, 1916, 1917, + 1919, 1921, 1932, 1920, 1939, 5700, 1924, 5700, 1934, 1922, + 1925, 1935, 1923, 1943, 1945, 1946, 1947, 1953, 1954, 1963, - 1960, 1965, 1966, 1958, 1967, 1969, 1971, 1976, 1973, 1981, - 1974, 1979, 1983, 1984, 1987, 1990, 1991, 1992, 5674, 1999, - 1994, 2001, 2008, 1998, 2006, 2009, 2011, 2012, 2016, 2017, - 2018, 2019, 2020, 2029, 2030, 2021, 2032, 2035, 2031, 5674, - 2028, 2039, 2047, 2043, 2045, 2042, 2049, 2050, 2052, 2053, - 2054, 2057, 2060, 2061, 2069, 2070, 2062, 2066, 2074, 2067, - 2076, 2079, 2082, 2081, 2083, 2084, 2085, 5674, 2087, 2089, - 124, 2093, 2094, 2096, 2095, 2102, 2098, 2101, 2118, 2119, - 2115, 2114, 2117, 2123, 2124, 2125, 2126, 2127, 2128, 2129, - 2131, 5674, 2105, 2133, 2134, 2136, 2139, 2140, 2143, 5674, + 1965, 1956, 5700, 1960, 1967, 1970, 1972, 1964, 1968, 1973, + 1977, 1979, 1986, 1981, 1989, 1982, 1984, 1987, 1993, 1995, + 1997, 1999, 1996, 5700, 2000, 2003, 2007, 2015, 2017, 2012, + 2010, 2020, 2024, 2014, 2018, 2022, 2026, 2027, 2036, 2039, + 2038, 2041, 2044, 2051, 5700, 2034, 2035, 2053, 2054, 2057, + 2058, 2060, 2048, 2061, 2062, 2063, 2050, 2070, 2071, 2078, + 2079, 2076, 2075, 2084, 2077, 2081, 2085, 2092, 2086, 2089, + 2087, 2093, 5700, 2094, 2100, 124, 2101, 2102, 2107, 2103, + 2105, 2110, 2111, 2122, 2126, 2123, 2125, 2124, 2121, 2130, + 2132, 2133, 2134, 2136, 2139, 2138, 5700, 2141, 2142, 2145, - 2153, 2156, 2142, 2155, 2163, 2158, 2164, 2165, 2167, 2172, - 2168, 2171, 5674, 2175, 2178, 2180, 2181, 2182, 2184, 2189, - 2191, 2192, 2193, 2196, 2194, 2195, 2199, 2197, 2200, 2204, - 2213, 2203, 2205, 2210, 2214, 5674, 2226, 2215, 2224, 2217, - 2228, 2227, 2241, 2231, 2234, 2236, 2242, 2251, 2244, 2238, - 2252, 2253, 2258, 2262, 2261, 2267, 2268, 2265, 2269, 2275, - 2277, 2278, 2279, 2283, 2281, 2284, 2285, 2286, 2293, 2294, - 2291, 2302, 2300, 2307, 2305, 2310, 5674, 2311, 2312, 2295, - 2317, 2325, 2322, 2323, 2329, 2330, 2331, 2332, 2333, 2334, - 2335, 2338, 2336, 2337, 2342, 2349, 2347, 2353, 2357, 2358, + 2146, 2149, 2147, 2159, 5700, 2150, 2160, 2162, 2152, 2168, + 2158, 2170, 2172, 2174, 2180, 2181, 2182, 5700, 2184, 2186, + 2189, 2187, 2190, 2196, 2188, 2198, 2199, 2202, 2203, 2204, + 2205, 2206, 2208, 2209, 2210, 2211, 2216, 2220, 2222, 2223, + 5700, 2235, 2224, 2225, 2226, 2234, 2236, 2250, 2237, 2241, + 2245, 2251, 2259, 2247, 2253, 2263, 2265, 2269, 2261, 2277, + 2275, 2276, 2283, 2273, 2285, 2287, 2279, 2288, 2289, 2291, + 2295, 2293, 2296, 2303, 2308, 2304, 2301, 2310, 2312, 2315, + 2319, 2243, 5700, 2318, 2320, 2313, 2324, 2340, 2325, 2336, + 2329, 2337, 2338, 2342, 2344, 2345, 2348, 2349, 2351, 2350, - 5674, 2359, 2361, 2363, 2364, 2370, 2365, 2372, 2374, 2376, - 2377, 2378, 2380, 2383, 2384, 2386, 2388, 2391, 2390, 2389, - 5674, 2394, 2395, 2396, 2404, 2405, 2411, 2412, 2414, 2418, - 2402, 2419, 2421, 2422, 5674, 2430, 2432, 2429, 2433, 2431, - 2436, 2437, 2439, 2441, 5674, 2442, 2443, 2450, 2451, 2446, - 5674, 2453, 2449, 2454, 2456, 2457, 2458, 2459, 2464, 2465, - 2467, 2470, 2473, 2477, 2478, 5674, 2479, 2487, 2488, 2480, - 2491, 2482, 2492, 2493, 2497, 2501, 2495, 2510, 2512, 2513, - 2514, 2494, 2517, 2518, 2519, 2521, 2522, 5674, 2515, 2525, - 2527, 2530, 2528, 2534, 2536, 2544, 2539, 2540, 2546, 2541, + 2354, 2362, 2356, 2358, 2365, 2369, 5700, 2372, 2376, 2366, + 2374, 2378, 2370, 2387, 2388, 2391, 2380, 2382, 2393, 2384, + 2394, 2395, 2400, 2398, 2406, 2399, 5700, 2409, 2410, 2411, + 2413, 2414, 2419, 2421, 2427, 2429, 2402, 2430, 2431, 2432, + 5700, 2439, 2441, 2437, 2446, 2443, 2444, 2447, 2449, 2450, + 5700, 2451, 2453, 2460, 2461, 2456, 5700, 2465, 2464, 2457, + 2467, 2466, 2468, 2472, 2469, 2474, 2475, 2482, 2491, 2481, + 2483, 5700, 2492, 2501, 2485, 2496, 2494, 2498, 2506, 2507, + 2508, 2515, 2509, 2520, 2524, 2518, 2519, 2510, 2526, 2527, + 2530, 2534, 2531, 5700, 2533, 2535, 2537, 2540, 2542, 2543, - 2547, 2548, 2549, 2550, 2553, 2561, 2563, 2564, 2566, 2568, - 2569, 2570, 2577, 2582, 2583, 2585, 5674, 2588, 2589, 2591, - 2578, 2580, 2592, 2595, 2597, 2599, 2601, 2603, 2604, 2605, - 2612, 2616, 2613, 2620, 2617, 2622, 2614, 2625, 2626, 2627, - 2628, 2635, 2632, 2631, 2640, 2639, 2638, 2648, 2643, 2649, - 2650, 2651, 2652, 2653, 2656, 2654, 2660, 2661, 2665, 2667, - 2675, 2676, 2677, 2678, 2681, 5674, 2680, 2682, 2684, 2690, - 2693, 2694, 2696, 2698, 2703, 2688, 2695, 2705, 2715, 2711, - 5674, 2712, 5674, 2714, 2716, 2717, 2726, 2719, 5674, 2723, - 5674, 2724, 2729, 2731, 2732, 5674, 2733, 2734, 2737, 2740, + 2545, 2556, 2554, 2549, 2557, 2552, 2558, 2559, 2560, 2562, + 2570, 2563, 2574, 2576, 2572, 2579, 2580, 2584, 2588, 2592, + 2590, 2593, 5700, 2596, 2598, 2597, 2599, 2600, 2603, 2604, + 2607, 2605, 2612, 2610, 2609, 2613, 2622, 2630, 2619, 2626, + 2628, 2631, 2633, 2635, 2634, 2636, 2637, 2644, 2641, 2643, + 2651, 2648, 2652, 2660, 2649, 2657, 2659, 2661, 2662, 2663, + 2664, 2671, 2665, 2670, 2672, 2675, 2682, 2679, 2688, 2689, + 2690, 2691, 5700, 2694, 2692, 2695, 2696, 2705, 2706, 2708, + 2714, 2716, 2702, 2709, 2717, 2725, 2724, 5700, 2721, 5700, + 2726, 2728, 2729, 2738, 2731, 5700, 2735, 5700, 2740, 2742, - 2738, 2742, 2743, 2744, 2745, 2750, 2752, 2756, 2755, 2757, - 2760, 2761, 2764, 2766, 2768, 2772, 2765, 2777, 2773, 2775, - 2783, 2782, 2784, 5674, 2791, 2788, 2793, 2792, 2794, 2796, - 2797, 2799, 2800, 2802, 2805, 2810, 2803, 2816, 2819, 2831, - 2809, 2832, 5674, 2813, 2834, 2817, 2835, 5674, 2837, 2828, - 2838, 2843, 2840, 2830, 2845, 2846, 2850, 2847, 2853, 2858, - 2862, 2863, 2857, 2865, 2855, 2869, 2877, 2874, 2881, 2883, - 2891, 2887, 2875, 2878, 2867, 2889, 2890, 2900, 2901, 2897, - 2904, 2899, 2903, 2906, 2907, 2910, 2911, 2913, 2915, 2916, - 2914, 2919, 2923, 2918, 2920, 2921, 2924, 5674, 2937, 2927, + 2736, 2744, 5700, 2745, 2746, 2749, 2753, 2750, 2755, 2756, + 2757, 2759, 2763, 2761, 2767, 2768, 2769, 2771, 2772, 2778, + 2774, 2781, 2784, 2777, 2786, 2791, 2792, 2794, 2795, 2796, + 5700, 2800, 2802, 2804, 2805, 2807, 2806, 2808, 2810, 2812, + 2816, 2817, 2822, 2819, 2828, 2829, 2841, 2823, 2844, 5700, + 2833, 2846, 2837, 2842, 5700, 2849, 2840, 2850, 2852, 2855, + 2857, 2858, 2859, 2860, 2865, 2863, 2868, 2872, 2876, 2870, + 2880, 2867, 2884, 2888, 2889, 2890, 2895, 2899, 2897, 2898, + 2900, 2901, 2903, 2904, 2912, 2914, 2905, 2915, 2913, 2916, + 2925, 2917, 2919, 2926, 2927, 2928, 2929, 2932, 2935, 2939, - 2934, 2941, 2943, 2946, 2925, 2944, 2948, 2950, 2952, 2954, - 2951, 5674, 2953, 5674, 2955, 2961, 2970, 2972, 2974, 2975, - 2976, 2978, 2981, 2982, 2983, 2984, 2985, 2987, 2990, 2991, - 2996, 2997, 2998, 3012, 2995, 3000, 3002, 3007, 3009, 3014, - 5674, 3016, 3017, 3018, 3022, 3023, 3024, 3027, 3031, 3030, - 3033, 3034, 3045, 5674, 3036, 3053, 3037, 3057, 3064, 3046, - 3065, 3060, 5674, 3049, 3061, 3068, 3063, 3070, 3077, 5674, - 3072, 5674, 3067, 3074, 3081, 3078, 3082, 3083, 3084, 3085, - 3091, 3094, 3103, 3092, 3100, 3101, 3102, 3104, 3113, 3106, - 3108, 3109, 5674, 3111, 3114, 3118, 3125, 3126, 3132, 3129, + 2930, 2931, 2938, 2934, 5700, 2941, 2945, 2949, 2956, 2953, + 2958, 2959, 2960, 2961, 2962, 2964, 2967, 2966, 5700, 2969, + 5700, 2963, 2987, 2974, 2981, 2985, 2975, 2991, 2996, 2986, + 2992, 2998, 3000, 3001, 3002, 3004, 3006, 3007, 3008, 3015, + 3022, 3023, 3012, 3014, 3010, 3024, 3026, 3029, 5700, 3031, + 3033, 3034, 3036, 3037, 3039, 3047, 3045, 3040, 3043, 3049, + 3061, 5700, 3059, 3069, 3050, 3066, 3076, 3072, 3080, 3075, + 5700, 3071, 3078, 3085, 3082, 3084, 3089, 5700, 3086, 5700, + 3088, 3090, 3096, 3097, 3098, 3099, 3100, 3101, 3103, 3116, + 3119, 3105, 3108, 3117, 3120, 3121, 3129, 3122, 3125, 3127, - 3116, 5674, 3133, 3136, 3123, 3140, 3141, 3144, 3145, 3146, - 3149, 3150, 3147, 3151, 3163, 3155, 3154, 3158, 3169, 3170, - 3175, 5674, 3176, 3156, 3183, 3179, 3180, 3182, 3185, 3186, - 3187, 3189, 3190, 3191, 3193, 3198, 3197, 3194, 3195, 3200, - 3201, 3214, 3211, 3203, 3215, 3219, 3218, 3221, 3225, 3226, - 3229, 3231, 3222, 3233, 3236, 3240, 3243, 3245, 3246, 3253, - 3248, 5674, 3255, 3252, 3260, 3256, 3259, 3258, 3265, 3269, - 3271, 3267, 3268, 3278, 3273, 5674, 3280, 3275, 3292, 3286, - 3276, 3301, 3296, 3282, 3277, 3300, 3303, 3306, 3304, 3308, - 3309, 3312, 3313, 5674, 5674, 3315, 3316, 3317, 5674, 3318, + 5700, 3131, 3126, 3132, 3133, 3137, 3143, 3140, 3147, 5700, + 3150, 3152, 3153, 3154, 3155, 3157, 3159, 3160, 3163, 3164, + 3158, 3161, 3168, 3171, 3169, 3178, 3180, 3182, 3189, 5700, + 3186, 3190, 3198, 3194, 3195, 3200, 3201, 3196, 3197, 3203, + 3205, 3206, 3208, 3210, 3209, 3213, 3220, 3212, 3215, 3226, + 3233, 3214, 3228, 3234, 3231, 3236, 3239, 3240, 3244, 3246, + 3237, 3249, 3258, 3252, 3254, 3261, 3262, 3269, 3264, 5700, + 3271, 3256, 3276, 3268, 3277, 3279, 3281, 3289, 3272, 3287, + 3288, 3296, 3292, 5700, 3300, 3295, 3301, 3302, 3304, 3311, + 3297, 3298, 3310, 3315, 3316, 3320, 3317, 3322, 3323, 3326, - 3319, 3328, 3321, 3323, 3331, 3325, 3334, 3335, 3336, 3338, - 3339, 5674, 3342, 3351, 3348, 3349, 3358, 3359, 3363, 3360, - 3357, 3350, 3354, 3367, 3369, 3371, 3374, 3375, 3383, 3378, - 3380, 3381, 5674, 3382, 3384, 3390, 5674, 3387, 3388, 3391, - 3399, 3394, 3407, 3404, 3410, 3396, 3412, 3413, 3414, 3416, - 3418, 3427, 3422, 3423, 3425, 3429, 3431, 5674, 3433, 3434, - 3439, 3441, 3444, 3452, 3453, 3454, 3449, 3455, 3456, 3463, - 5674, 3458, 3461, 3462, 3464, 3472, 3469, 3473, 3471, 5674, - 3476, 3477, 3479, 5674, 3478, 3485, 3493, 3495, 3480, 3503, - 3498, 3482, 3499, 3501, 5674, 3502, 5674, 3506, 3508, 3511, + 3327, 5700, 5700, 3329, 3330, 3332, 5700, 3334, 3333, 3345, + 3336, 3338, 3346, 3349, 3348, 3340, 3350, 3352, 3353, 5700, + 3364, 3360, 3368, 3363, 3367, 3376, 3377, 3373, 3375, 3379, + 3381, 3384, 3382, 3386, 3387, 3385, 3390, 3398, 3393, 3395, + 3396, 5700, 3397, 3399, 3404, 5700, 3402, 3408, 3409, 3414, + 3407, 3420, 3422, 3426, 3427, 3428, 3430, 3429, 3431, 3432, + 3441, 3439, 3440, 3437, 3443, 3446, 5700, 3447, 3453, 3455, + 3458, 3460, 3467, 3468, 3471, 3463, 3472, 3470, 3479, 5700, + 3474, 3476, 3478, 3481, 3491, 3483, 3493, 3484, 5700, 3488, + 3492, 3494, 5700, 3495, 3501, 3504, 3508, 3497, 3515, 3510, - 5674, 3513, 3514, 3516, 3518, 3515, 3522, 3523, 3530, 3519, - 3531, 3532, 3533, 3534, 3536, 3543, 3535, 5674, 3544, 3542, - 3546, 3547, 3553, 3551, 3554, 3559, 3557, 5674, 5674, 3566, - 5674, 3558, 3567, 3568, 5674, 3571, 3573, 3578, 3574, 3576, - 3579, 3589, 3582, 5674, 3585, 3580, 3593, 3595, 3596, 3597, - 3598, 3599, 3601, 3603, 3602, 5674, 3605, 3607, 3613, 3606, - 3614, 3620, 3626, 3615, 5674, 3628, 3630, 3622, 3636, 3637, - 5674, 3629, 5674, 3639, 3642, 3643, 3645, 3646, 5674, 3648, - 3649, 3653, 3654, 3656, 3658, 3659, 3662, 3666, 3668, 3675, - 3671, 3670, 3673, 5674, 3672, 3678, 3686, 3689, 3679, 3677, + 3513, 3514, 3512, 5700, 3519, 5700, 3522, 3523, 3526, 5700, + 3528, 3529, 3531, 3533, 3530, 3537, 3538, 3545, 3534, 3546, + 3547, 3548, 3549, 3551, 3558, 3550, 5700, 3559, 3557, 3561, + 3562, 3568, 3566, 3569, 3574, 3572, 5700, 5700, 3581, 5700, + 3573, 3582, 3583, 5700, 3586, 3588, 3593, 3589, 3591, 3594, + 3604, 3597, 5700, 3600, 3595, 3608, 3610, 3611, 3612, 3613, + 3614, 3616, 3618, 3617, 5700, 3620, 3622, 3628, 3621, 3629, + 3635, 3641, 3630, 5700, 3643, 3645, 3637, 3651, 3652, 5700, + 3644, 5700, 3654, 3657, 3658, 3660, 3661, 5700, 3663, 3664, + 3668, 3669, 3671, 3673, 3674, 3677, 3681, 3683, 3684, 3691, - 3693, 3695, 3696, 3699, 3702, 3704, 3705, 3708, 3703, 3710, - 3711, 3714, 3724, 3717, 3720, 5674, 3721, 3725, 3729, 5674, - 3727, 3728, 3736, 3738, 3731, 3739, 3742, 3741, 3744, 5674, - 3750, 3751, 3746, 3747, 3756, 3760, 5674, 5674, 3764, 5674, - 3765, 3753, 3767, 3754, 3743, 3775, 3774, 3777, 3779, 3780, - 3781, 3787, 3788, 3795, 3796, 3797, 3800, 3674, 3793, 5674, - 5674, 3805, 3806, 3802, 3809, 3814, 3798, 3812, 3822, 3818, - 3819, 3825, 3826, 3833, 5674, 3834, 3817, 3835, 5674, 3828, - 3836, 3829, 3840, 3842, 3843, 3844, 3846, 3850, 3848, 3851, - 3849, 3857, 3858, 3859, 3865, 3862, 3867, 5674, 3868, 3870, + 3687, 3689, 3686, 5700, 3688, 3696, 3698, 3705, 3693, 3700, + 3709, 3711, 3712, 3713, 3718, 3715, 3722, 3724, 3719, 3726, + 3730, 3731, 3740, 3733, 3736, 5700, 3737, 3741, 3745, 5700, + 3743, 3744, 3751, 3754, 3747, 3755, 3758, 3757, 3761, 5700, + 3763, 3766, 3759, 3762, 3772, 3780, 5700, 5700, 3781, 5700, + 3782, 3768, 3769, 3783, 3770, 3785, 3793, 3790, 3797, 3786, + 3798, 3803, 3804, 3812, 3813, 3815, 3816, 3810, 3814, 5700, + 5700, 3821, 3822, 3824, 3826, 3827, 3829, 3831, 3836, 3835, + 3838, 3843, 3845, 3852, 5700, 3847, 3844, 3853, 5700, 3854, + 3855, 3858, 3856, 3861, 3859, 3862, 3868, 3865, 3870, 3875, - 3871, 3872, 3873, 3874, 3879, 3882, 3881, 5674, 3883, 3885, - 3888, 3886, 3887, 3892, 3903, 3907, 3909, 3896, 3910, 3912, - 3915, 3917, 3914, 5674, 3920, 3918, 3921, 3922, 3929, 3931, - 3926, 3933, 3935, 3937, 3939, 3942, 3944, 3949, 3946, 3950, - 3951, 3952, 5674, 3956, 3958, 3955, 3963, 3964, 3966, 3967, - 3968, 3976, 3973, 3978, 3977, 3980, 5674, 3981, 3983, 3985, - 3986, 3988, 3989, 3994, 3995, 5674, 3998, 3991, 4005, 3999, - 4002, 4003, 4007, 4015, 4014, 5674, 4018, 4019, 4020, 4021, - 4022, 4023, 4026, 4027, 5674, 4032, 4033, 4036, 4045, 4029, - 4047, 4043, 4049, 4040, 4042, 4056, 4052, 4057, 4058, 4060, + 3863, 3872, 3873, 3882, 3883, 3876, 3891, 5700, 3893, 3886, + 3888, 3874, 3895, 3898, 3899, 3900, 3902, 5700, 3903, 3909, + 3910, 3911, 3914, 3916, 3921, 3926, 3931, 3927, 3932, 3933, + 3935, 3937, 3938, 5700, 3941, 3939, 3940, 3949, 3951, 3953, + 3948, 3955, 3956, 3958, 3962, 3963, 3965, 3970, 3966, 3906, + 3971, 3972, 5700, 3973, 3976, 3979, 3982, 3983, 3984, 3986, + 3987, 3993, 3996, 3988, 3997, 3999, 4003, 5700, 4000, 4004, + 4006, 4010, 4016, 4005, 4008, 4011, 5700, 4029, 4013, 4025, + 4017, 4019, 4034, 4030, 4036, 4022, 5700, 4037, 4041, 4043, + 4040, 4044, 4047, 4050, 4051, 5700, 4053, 4054, 4052, 4062, - 4062, 4070, 4074, 4071, 5674, 4063, 5674, 4072, 4077, 4079, - 4084, 4080, 5674, 4082, 4087, 4089, 4086, 4090, 5674, 4092, - 4091, 4094, 4096, 5674, 4110, 4106, 4095, 4105, 4119, 4120, - 5674, 4123, 4124, 4125, 4132, 4134, 4136, 4129, 4137, 4133, - 4139, 4097, 4140, 5674, 4142, 4144, 4149, 4150, 4151, 4152, - 4154, 4157, 4161, 5674, 4159, 4162, 4163, 4165, 4166, 4167, - 4168, 4175, 4171, 4176, 5674, 4180, 4181, 4184, 4185, 4112, - 5674, 5674, 4188, 4189, 4192, 4191, 4197, 5674, 4199, 4206, - 4201, 4205, 4207, 5674, 5674, 4209, 5674, 4210, 5674, 4211, - 4214, 5674, 5674, 4215, 4212, 4218, 4219, 4222, 5674, 4227, + 4060, 4069, 4061, 4070, 4064, 4071, 4073, 4074, 4078, 4079, + 4082, 4072, 4096, 4098, 4093, 5700, 4080, 5700, 4085, 4101, + 4105, 4103, 4095, 5700, 4106, 4107, 4109, 4110, 4111, 5700, + 4114, 4113, 4116, 4118, 5700, 4121, 4127, 4119, 4128, 4134, + 4135, 5700, 4138, 4141, 4142, 4149, 4151, 4153, 4146, 4154, + 4150, 4156, 4148, 4157, 5700, 4159, 4161, 4166, 4168, 4169, + 4171, 4172, 4175, 4177, 5700, 4179, 4180, 4181, 4182, 4183, + 4185, 4188, 4192, 4189, 4194, 5700, 4197, 4198, 4208, 4199, + 4204, 5700, 5700, 4209, 4210, 4214, 4215, 4218, 5700, 4216, + 4227, 4222, 4225, 4226, 5700, 5700, 4229, 5700, 4230, 5700, - 5674, 4235, 4231, 4233, 4234, 4236, 5674, 4239, 4240, 4243, - 5674, 4237, 4250, 4245, 4247, 5674, 4254, 4248, 4251, 5674, - 4259, 4265, 4261, 4268, 4255, 4270, 4271, 4272, 4274, 4276, - 4278, 4281, 4283, 4286, 4287, 4288, 4289, 4294, 4291, 4296, - 4297, 4299, 4301, 4302, 4307, 4310, 4311, 4304, 4312, 4313, - 4314, 4318, 4320, 4324, 4327, 4328, 4329, 4330, 4332, 4333, - 4335, 4338, 4342, 4331, 4341, 5674, 4336, 4343, 4347, 4358, - 4348, 4359, 4363, 4353, 4367, 4371, 5674, 4373, 5674, 4375, - 4360, 4369, 4377, 5674, 4379, 4382, 4381, 4384, 4383, 4385, - 4388, 4386, 5674, 4390, 4391, 4393, 4395, 5674, 4398, 4409, + 4231, 4233, 5700, 5700, 4232, 4236, 4238, 4239, 4247, 5700, + 4251, 5700, 4258, 4240, 4253, 4255, 4242, 4256, 5700, 4257, + 4263, 4266, 5700, 4259, 4273, 4269, 4270, 5700, 4278, 4272, + 4274, 5700, 4279, 4282, 4283, 4284, 4293, 4286, 4290, 4294, + 4296, 4298, 4303, 4306, 4308, 4299, 4309, 4310, 4312, 4316, + 4318, 4319, 4320, 4321, 4323, 4324, 4326, 4329, 4333, 4334, + 4332, 4335, 4336, 4345, 4338, 4341, 4349, 4342, 4352, 4353, + 4354, 4355, 4357, 4359, 4363, 4362, 4365, 5700, 4364, 4366, + 4368, 4381, 4369, 4370, 4385, 4387, 4393, 4394, 5700, 4396, + 5700, 4398, 4389, 4400, 4401, 5700, 4402, 4403, 4404, 4405, - 4397, 4401, 4410, 4411, 4412, 4414, 4418, 4416, 4421, 4423, - 4431, 4424, 4428, 4427, 4433, 4429, 4436, 4439, 4445, 4441, - 4448, 4452, 5674, 4453, 5674, 4454, 4455, 4457, 4458, 4459, - 4460, 4462, 5674, 5674, 4465, 4467, 4476, 4468, 4461, 4487, - 4473, 5674, 4482, 4484, 4490, 4491, 5674, 4492, 4493, 4495, - 5674, 4496, 4499, 4500, 4502, 4466, 4503, 4506, 5674, 5674, - 5674, 5674, 4509, 4507, 4517, 4511, 4514, 4521, 4522, 4526, - 4518, 5674, 4535, 5674, 5674, 4523, 4532, 4536, 4538, 4539, - 4540, 4542, 4541, 5674, 4545, 4548, 4552, 4546, 4555, 4563, - 4558, 4564, 4556, 4566, 4573, 4570, 4571, 4568, 4576, 4578, + 4406, 4408, 4409, 4412, 5700, 4417, 4410, 4414, 4419, 5700, + 4424, 4430, 4431, 4434, 4435, 4436, 4437, 4438, 4441, 4439, + 4444, 4446, 4453, 4448, 4450, 4440, 4462, 4454, 4460, 4463, + 4374, 4470, 4471, 4476, 5700, 4464, 5700, 4472, 4477, 4478, + 4479, 4482, 4484, 4486, 5700, 5700, 4488, 4485, 4489, 4494, + 4491, 4495, 4498, 4507, 5700, 4500, 4510, 4502, 4509, 5700, + 4512, 4516, 4518, 5700, 4519, 4521, 4523, 4525, 4528, 4526, + 4530, 5700, 5700, 5700, 5700, 4534, 4527, 4540, 4537, 4541, + 4543, 4544, 4546, 4547, 5700, 4556, 5700, 5700, 4558, 4559, + 4551, 4561, 4560, 4548, 4569, 4571, 5700, 4557, 4570, 4576, - 4580, 5674, 5674, 4582, 4586, 4587, 4594, 4591, 4592, 4604, - 4599, 4600, 4601, 4602, 4606, 4607, 4608, 5674, 4611, 4615, - 5674, 4609, 5674, 4619, 4622, 4613, 4623, 4625, 4626, 4628, - 4630, 5674, 5674, 4632, 4633, 4637, 4641, 4638, 4643, 4644, - 4646, 4642, 5674, 4647, 5674, 4648, 4650, 4664, 4649, 4666, - 4671, 4673, 4670, 4672, 4676, 5674, 4675, 4677, 5674, 4678, - 4679, 4683, 5674, 4685, 4688, 4692, 5674, 4695, 5674, 4697, - 5674, 4689, 4705, 5674, 4700, 4701, 5674, 4707, 4711, 4655, - 4703, 5674, 4708, 5674, 4712, 4714, 4717, 4722, 4715, 4724, - 4725, 4719, 4727, 4734, 4736, 4729, 5674, 5674, 4745, 4731, + 4573, 4583, 4585, 4580, 4586, 4574, 4577, 4596, 4589, 4597, + 4593, 4599, 4601, 4603, 5700, 5700, 4605, 4607, 4609, 4616, + 4614, 4617, 4626, 4621, 4623, 4624, 4627, 4629, 4630, 4631, + 5700, 4634, 4638, 5700, 4632, 5700, 4640, 4646, 4636, 4647, + 4648, 4649, 4652, 4650, 5700, 5700, 4655, 4656, 4661, 4663, + 4664, 4666, 4667, 4669, 4665, 5700, 4670, 5700, 4671, 4673, + 4679, 4672, 4687, 4692, 4694, 4690, 4693, 4695, 4698, 5700, + 4696, 4699, 5700, 4700, 4702, 4706, 5700, 4707, 4710, 4714, + 5700, 4718, 5700, 4723, 5700, 4711, 4725, 5700, 4715, 4726, + 5700, 4729, 4733, 4734, 4730, 5700, 4736, 5700, 4738, 4740, - 4740, 4742, 4743, 4752, 4747, 4751, 4757, 5674, 5674, 4748, - 5674, 4750, 4761, 5674, 4759, 4763, 4765, 4768, 4767, 4769, - 4774, 4771, 4775, 4778, 4793, 4776, 4780, 4790, 4796, 4798, - 4800, 4802, 4803, 4804, 4781, 4805, 4806, 4809, 5674, 4811, - 4812, 4813, 5674, 4817, 4820, 4822, 4823, 5674, 4833, 4825, - 4830, 4835, 5674, 4819, 4841, 4838, 4836, 4843, 4852, 4847, - 4848, 5674, 5674, 5674, 5674, 4850, 4853, 5674, 4854, 4855, - 5674, 5674, 4856, 4859, 4862, 4870, 5674, 4861, 5674, 4865, - 5674, 4869, 4872, 4875, 4878, 5674, 4879, 4888, 5674, 4891, - 4894, 4896, 4897, 4880, 4866, 4898, 5674, 4905, 4902, 4904, + 4741, 4745, 4746, 4748, 4749, 4750, 4751, 4759, 4756, 4760, + 5700, 5700, 4772, 4752, 4757, 4763, 4767, 4776, 4769, 4774, + 4780, 5700, 5700, 4781, 5700, 4782, 4784, 5700, 4785, 4788, + 4789, 4792, 4793, 4795, 4798, 4800, 4801, 4796, 4809, 4802, + 4814, 4816, 4818, 4822, 4824, 4826, 4827, 4828, 4805, 4829, + 4830, 4833, 5700, 4835, 4836, 4837, 5700, 4841, 4844, 4846, + 4847, 5700, 4857, 4849, 4854, 4859, 5700, 4843, 4865, 4867, + 4869, 4862, 4860, 4878, 4870, 4876, 5700, 5700, 5700, 5700, + 4880, 4874, 5700, 4881, 4882, 5700, 5700, 4884, 4886, 4887, + 4897, 5700, 4888, 5700, 4889, 5700, 4893, 4896, 4902, 4899, - 4911, 4883, 4908, 4912, 4913, 4920, 4915, 4919, 5674, 4916, - 4921, 4922, 5674, 4924, 5674, 4925, 4926, 4928, 4934, 4930, - 4933, 4937, 4944, 4927, 4948, 4941, 5674, 4951, 4955, 5674, - 4956, 5674, 4958, 5674, 4959, 4962, 4963, 4961, 5674, 4965, - 4967, 4968, 4969, 5674, 4970, 4972, 5674, 4976, 4973, 4983, - 4985, 4974, 4990, 4992, 4993, 4980, 5004, 4996, 4999, 4997, - 5006, 5007, 5012, 5674, 5674, 5674, 5008, 5001, 5022, 5019, - 5023, 5030, 5014, 5674, 5028, 5029, 5025, 5037, 5035, 5039, - 5674, 5041, 5027, 5036, 5674, 5043, 5048, 5049, 5050, 5051, - 5058, 5060, 5062, 5063, 5674, 5066, 5674, 5674, 5055, 5674, + 5700, 4906, 4912, 5700, 4905, 4915, 4918, 4919, 4920, 4922, + 4921, 5700, 4929, 4925, 4927, 4934, 4924, 4931, 4938, 4935, + 4945, 4936, 4947, 5700, 4937, 4944, 4948, 5700, 4950, 5700, + 4951, 4954, 4958, 4957, 4955, 4960, 4965, 4969, 4963, 4976, + 4972, 5700, 4978, 4981, 5700, 4982, 5700, 4984, 5700, 4970, + 4985, 4988, 4987, 5700, 5700, 4994, 4990, 4995, 4996, 5700, + 4997, 4999, 5700, 5000, 5002, 5007, 5009, 5011, 5017, 5012, + 5019, 5014, 5026, 5021, 5025, 5022, 5030, 5032, 5038, 5700, + 5700, 5700, 5033, 5027, 5049, 5051, 5041, 5052, 5048, 5700, + 5053, 5054, 5055, 5062, 5060, 5064, 5700, 5068, 5057, 5061, - 5067, 5069, 5070, 5071, 5674, 5076, 5073, 5077, 5079, 5081, - 5082, 5078, 5674, 5674, 5085, 5674, 5094, 5090, 5086, 5102, - 5098, 5099, 5104, 5106, 5674, 5105, 5108, 5109, 5112, 5113, - 5674, 5115, 5116, 5117, 5118, 5121, 5120, 5126, 5127, 5129, - 5674, 5674, 5122, 5132, 5674, 5674, 5131, 5141, 5146, 5674, - 5674, 5674, 5152, 5674, 5154, 5158, 5162, 5166, 5157, 5674, - 5168, 5147, 5169, 5674, 5170, 5172, 5674, 5674, 5149, 5173, - 5177, 5176, 5178, 5674, 5179, 5182, 5186, 5189, 5195, 5184, - 5196, 5198, 5206, 5208, 5190, 5203, 5192, 5204, 5211, 5212, - 5220, 5217, 5674, 5674, 5224, 5674, 5674, 5226, 5228, 5230, + 5700, 5072, 5080, 5081, 5069, 5082, 5085, 5089, 5091, 5092, + 5700, 5094, 5700, 5700, 5095, 5700, 5096, 5098, 5099, 5100, + 5700, 5103, 5105, 5104, 5106, 5108, 5109, 5111, 5700, 5700, + 5113, 5700, 5123, 5125, 5117, 5132, 5127, 5065, 5134, 5135, + 5700, 5129, 5136, 5137, 5138, 5141, 5700, 5143, 5144, 5145, + 5146, 5152, 5148, 5154, 5153, 5155, 5700, 5700, 5157, 5162, + 5700, 5700, 5159, 5168, 5169, 5700, 5700, 5700, 5179, 5700, + 5181, 5185, 5189, 5193, 5184, 5700, 5195, 5192, 5197, 5700, + 5196, 5199, 5700, 5700, 5200, 5202, 5203, 5204, 5161, 5700, + 5205, 5206, 5216, 5219, 5221, 5212, 5224, 5222, 5236, 5214, - 5233, 5235, 5237, 5239, 5674, 5240, 5242, 5243, 5674, 5245, - 5247, 5244, 5248, 5250, 5251, 5253, 5255, 5674, 5674, 5256, - 5257, 5258, 5265, 5267, 5674, 5269, 5276, 5273, 5275, 5271, - 5277, 5278, 5674, 5281, 5674, 5674, 5674, 5674, 5674, 5674, - 5674, 5674, 5279, 5674, 5289, 5292, 5674, 5283, 5293, 5297, - 5298, 5286, 5674, 5299, 5303, 5304, 5305, 5308, 5310, 5312, - 5313, 5315, 5319, 5316, 5321, 5317, 5320, 5674, 5674, 5328, - 5324, 5327, 5330, 5346, 5347, 5350, 5352, 5334, 5337, 5355, - 5354, 5356, 5343, 5360, 5369, 5362, 5364, 5366, 5367, 5371, - 5674, 5372, 5674, 5373, 5674, 5674, 5378, 5379, 5374, 5381, + 5226, 5228, 5232, 5233, 5237, 5239, 5241, 5244, 5700, 5700, + 5246, 5700, 5700, 5248, 5255, 5257, 5260, 5262, 5264, 5266, + 5700, 5267, 5269, 5250, 5700, 5252, 5273, 5274, 5275, 5278, + 5279, 5277, 5282, 5700, 5700, 5283, 5284, 5285, 5293, 5286, + 5700, 5295, 5297, 5296, 5300, 5299, 5302, 5303, 5700, 5306, + 5700, 5700, 5700, 5700, 5700, 5700, 5700, 5700, 5309, 5700, + 5308, 5314, 5700, 5315, 5316, 5322, 5317, 5327, 5700, 5323, + 5324, 5328, 4611, 5329, 5330, 5332, 5334, 5336, 5339, 5340, + 5342, 5343, 5347, 5700, 5700, 5348, 5349, 5351, 5352, 5359, + 5370, 5373, 5375, 5360, 5356, 5363, 5377, 5378, 5368, 5380, - 5389, 5394, 5385, 5390, 5392, 5396, 5674, 5393, 5674, 5398, - 5397, 5674, 5402, 5404, 5405, 5406, 5407, 5408, 5410, 5416, - 5674, 5414, 5417, 5426, 5418, 5434, 5429, 5433, 5435, 5437, - 5431, 5445, 5441, 5444, 5674, 5447, 5448, 5214, 5449, 5452, - 5459, 5454, 5456, 5457, 5674, 5461, 5463, 5465, 5455, 5462, - 5464, 5478, 5480, 5476, 5674, 5466, 5482, 5484, 5486, 5490, - 5488, 5494, 5495, 5497, 5499, 5329, 5506, 5500, 5502, 5498, - 5508, 5510, 5674, 5512, 5515, 5674, 5516, 5518, 5519, 5520, - 5524, 5674, 5527, 5522, 5528, 5530, 5533, 5535, 5674, 5537, - 5544, 5545, 5674, 5546, 5674, 5674, 5548, 5540, 5549, 5555, + 5387, 5384, 5385, 5389, 5390, 5392, 5700, 5386, 5700, 5394, + 5700, 5700, 5397, 5399, 5402, 5403, 5413, 5414, 5404, 5406, + 5411, 5416, 5700, 5417, 5700, 5420, 5421, 5700, 5423, 5424, + 5426, 5427, 5428, 5431, 5433, 5439, 5700, 5435, 5432, 5447, + 5449, 5442, 5455, 5452, 5458, 5459, 5448, 5466, 5465, 5462, + 5700, 5468, 5469, 5471, 5473, 5474, 5481, 5476, 5477, 5479, + 5700, 5483, 5485, 5484, 5486, 5487, 5491, 5498, 5496, 5500, + 5700, 5502, 5507, 5503, 5509, 5511, 5514, 5516, 5515, 5518, + 5520, 5524, 5530, 5531, 5532, 5521, 5536, 5527, 5700, 5543, + 5533, 5700, 5544, 5545, 5535, 5537, 5547, 5700, 5558, 5551, - 5557, 5674, 5674, 5674, 5582, 5589, 5596, 5603, 5610, 88, - 5617, 5624, 5631, 5638, 5645, 5652, 5659, 5666 + 5553, 5559, 5562, 5564, 5700, 5566, 5568, 5569, 5700, 5573, + 5700, 5700, 5574, 5563, 5575, 5581, 5584, 5700, 5700, 5700, + 5608, 5615, 5622, 5629, 5636, 88, 5643, 5650, 5657, 5664, + 5671, 5678, 5685, 5692 } ; -static yyconst flex_int16_t yy_def[2919] = +static const flex_int16_t yy_def[2935] = { 0, - 2904, 1, 2905, 2905, 2906, 2906, 2907, 2907, 2908, 2908, - 2909, 2909, 2904, 2910, 2904, 2904, 2904, 2904, 2911, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2912, 2904, 2904, 2904, 2912, 2913, 2904, 2904, - 2904, 2913, 2914, 2904, 2904, 2904, 2904, 2914, 2915, 2904, - 2904, 2904, 2915, 2916, 2904, 2917, 2904, 2916, 2916, 2910, - 2910, 2904, 2918, 2911, 2918, 2911, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, + 2920, 1, 2921, 2921, 2922, 2922, 2923, 2923, 2924, 2924, + 2925, 2925, 2920, 2926, 2920, 2920, 2920, 2920, 2927, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2928, 2920, 2920, 2920, 2928, 2929, 2920, 2920, + 2920, 2929, 2930, 2920, 2920, 2920, 2920, 2930, 2931, 2920, + 2920, 2920, 2931, 2932, 2920, 2933, 2920, 2932, 2932, 2926, + 2926, 2920, 2934, 2927, 2934, 2927, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2912, - 2912, 2913, 2913, 2914, 2914, 2904, 2915, 2915, 2916, 2916, - 2917, 2917, 2916, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2928, + 2928, 2929, 2929, 2930, 2930, 2920, 2931, 2931, 2932, 2932, + 2933, 2933, 2932, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2916, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2932, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2916, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2920, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2932, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2904, 2910, 2916, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2920, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2920, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2920, 2926, 2932, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2916, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2904, 2910, 2904, 2904, 2910, 2904, - 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2932, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2920, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2920, 2926, 2920, + 2920, 2926, 2920, 2920, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2920, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2920, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2920, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, - 2910, 2916, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, - 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2904, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, + 2926, 2926, 2926, 2926, 2926, 2932, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2920, 2926, 2926, 2920, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2920, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2920, 2926, 2920, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, - 2916, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, + 2926, 2926, 2920, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2920, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2920, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2920, 2926, 2926, 2932, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2920, 2926, 2926, 2926, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, + 2926, 2926, 2926, 2926, 2920, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2920, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2920, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2920, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, - 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, - 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, + 2926, 2926, 2926, 2926, 2926, 2926, 2920, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2920, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2920, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2920, 2926, 2926, 2926, 2926, 2926, 2920, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2920, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2920, 2926, 2926, 2926, 2926, 2926, 2926, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2904, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2904, 2910, - 2904, 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2920, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2920, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2920, 2926, 2920, + 2926, 2926, 2926, 2926, 2926, 2920, 2926, 2920, 2926, 2926, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2904, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, + 2926, 2926, 2920, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2920, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2920, + 2926, 2926, 2926, 2926, 2920, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2904, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2904, - 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, + 2926, 2926, 2926, 2926, 2920, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2920, 2926, + 2920, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2920, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2920, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2920, 2926, 2926, 2926, 2926, 2926, 2926, 2920, 2926, 2920, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, - 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2904, 2904, 2910, 2910, 2910, 2904, 2910, + 2920, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2920, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2920, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2920, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2920, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2904, 2910, 2910, 2910, 2904, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, - 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2904, 2910, 2904, 2910, 2910, 2910, + 2926, 2920, 2920, 2926, 2926, 2926, 2920, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2920, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2920, 2926, 2926, 2926, 2920, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2920, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2920, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2920, 2926, + 2926, 2926, 2920, 2926, 2926, 2926, 2926, 2926, 2926, 2926, - 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2904, 2910, - 2904, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, - 2904, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2904, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, + 2926, 2926, 2926, 2920, 2926, 2920, 2926, 2926, 2926, 2920, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2920, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2920, 2920, 2926, 2920, + 2926, 2926, 2926, 2920, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2920, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2920, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2920, 2926, 2926, 2926, 2926, 2926, 2920, + 2926, 2920, 2926, 2926, 2926, 2926, 2926, 2920, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2904, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, - 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2904, 2910, 2904, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, - 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2904, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, + 2926, 2926, 2926, 2920, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2920, 2926, 2926, 2926, 2920, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2920, + 2926, 2926, 2926, 2926, 2926, 2926, 2920, 2920, 2926, 2920, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2920, + 2920, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2920, 2926, 2926, 2926, 2920, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2920, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2920, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2920, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2920, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2920, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2920, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2920, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2920, 2926, 2926, 2926, 2926, - 2910, 2910, 2910, 2910, 2904, 2910, 2904, 2910, 2910, 2910, - 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2904, 2910, - 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, - 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, - 2904, 2904, 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, - 2910, 2910, 2910, 2904, 2904, 2910, 2904, 2910, 2904, 2910, - 2910, 2904, 2904, 2910, 2910, 2910, 2910, 2910, 2904, 2910, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2920, 2926, 2920, 2926, 2926, + 2926, 2926, 2926, 2920, 2926, 2926, 2926, 2926, 2926, 2920, + 2926, 2926, 2926, 2926, 2920, 2926, 2926, 2926, 2926, 2926, + 2926, 2920, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2920, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2920, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2920, 2926, 2926, 2926, 2926, + 2926, 2920, 2920, 2926, 2926, 2926, 2926, 2926, 2920, 2926, + 2926, 2926, 2926, 2926, 2920, 2920, 2926, 2920, 2926, 2920, - 2904, 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, - 2904, 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2904, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2904, 2910, - 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2904, 2910, 2910, + 2926, 2926, 2920, 2920, 2926, 2926, 2926, 2926, 2926, 2920, + 2926, 2920, 2926, 2926, 2926, 2926, 2926, 2926, 2920, 2926, + 2926, 2926, 2920, 2926, 2926, 2926, 2926, 2920, 2926, 2926, + 2926, 2920, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2920, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2920, 2926, + 2920, 2926, 2926, 2926, 2926, 2920, 2926, 2926, 2926, 2926, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2904, 2910, 2904, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2904, 2904, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2904, 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, - 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2904, - 2904, 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2904, 2910, 2904, 2904, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, + 2926, 2926, 2926, 2926, 2920, 2926, 2926, 2926, 2926, 2920, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2920, 2926, 2920, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2920, 2920, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2920, 2926, 2926, 2926, 2926, 2920, + 2926, 2926, 2926, 2920, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2920, 2920, 2920, 2920, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2920, 2926, 2920, 2920, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2920, 2926, 2926, 2926, - 2910, 2904, 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, - 2904, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2904, 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2904, 2910, 2904, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2904, 2910, - 2910, 2910, 2904, 2910, 2910, 2910, 2904, 2910, 2904, 2910, - 2904, 2910, 2910, 2904, 2910, 2910, 2904, 2910, 2910, 2910, - 2910, 2904, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2904, 2910, 2910, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2920, 2920, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2920, 2926, 2926, 2920, 2926, 2920, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2920, 2920, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2920, 2926, 2920, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2920, + 2926, 2926, 2920, 2926, 2926, 2926, 2920, 2926, 2926, 2926, + 2920, 2926, 2920, 2926, 2920, 2926, 2926, 2920, 2926, 2926, + 2920, 2926, 2926, 2926, 2926, 2920, 2926, 2920, 2926, 2926, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2904, 2910, - 2904, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2910, - 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2904, 2910, 2910, - 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2904, 2904, 2904, 2904, 2910, 2910, 2904, 2910, 2910, - 2904, 2904, 2910, 2910, 2910, 2910, 2904, 2910, 2904, 2910, - 2904, 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2904, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2920, 2920, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2920, 2920, 2926, 2920, 2926, 2926, 2920, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2920, 2926, 2926, 2926, 2920, 2926, 2926, 2926, + 2926, 2920, 2926, 2926, 2926, 2926, 2920, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2920, 2920, 2920, 2920, + 2926, 2926, 2920, 2926, 2926, 2920, 2920, 2926, 2926, 2926, + 2926, 2920, 2926, 2920, 2926, 2920, 2926, 2926, 2926, 2926, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2910, - 2910, 2910, 2904, 2910, 2904, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2904, - 2910, 2904, 2910, 2904, 2910, 2910, 2910, 2910, 2904, 2910, - 2910, 2910, 2910, 2904, 2910, 2910, 2904, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2904, 2904, 2904, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, - 2904, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2904, 2910, 2904, 2904, 2910, 2904, + 2920, 2926, 2926, 2920, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2920, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2920, 2926, 2926, 2926, 2920, 2926, 2920, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2920, 2926, 2926, 2920, 2926, 2920, 2926, 2920, 2926, + 2926, 2926, 2926, 2920, 2920, 2926, 2926, 2926, 2926, 2920, + 2926, 2926, 2920, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2920, + 2920, 2920, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2920, + 2926, 2926, 2926, 2926, 2926, 2926, 2920, 2926, 2926, 2926, - 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2904, 2904, 2910, 2904, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, - 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2904, 2904, 2910, 2910, 2904, 2904, 2910, 2910, 2910, 2904, - 2904, 2904, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2904, - 2910, 2910, 2910, 2904, 2910, 2910, 2904, 2904, 2910, 2910, - 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2904, 2904, 2910, 2904, 2904, 2910, 2910, 2910, + 2920, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2920, 2926, 2920, 2920, 2926, 2920, 2926, 2926, 2926, 2926, + 2920, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2920, 2920, + 2926, 2920, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2920, 2926, 2926, 2926, 2926, 2926, 2920, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2920, 2920, 2926, 2926, + 2920, 2920, 2926, 2926, 2926, 2920, 2920, 2920, 2926, 2920, + 2926, 2926, 2926, 2926, 2926, 2920, 2926, 2926, 2926, 2920, + 2926, 2926, 2920, 2920, 2926, 2926, 2926, 2926, 2926, 2920, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, - 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2904, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2904, 2910, - 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2904, 2910, 2904, 2904, 2904, 2904, 2904, 2904, - 2904, 2904, 2910, 2904, 2910, 2910, 2904, 2910, 2910, 2910, - 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2904, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2904, 2910, 2904, 2910, 2904, 2904, 2910, 2910, 2910, 2910, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2920, 2920, + 2926, 2920, 2920, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2920, 2926, 2926, 2926, 2920, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2920, 2920, 2926, 2926, 2926, 2926, 2926, + 2920, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2920, 2926, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2926, 2920, + 2926, 2926, 2920, 2926, 2926, 2926, 2926, 2926, 2920, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2920, 2920, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, - 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2910, 2904, 2910, - 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2904, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, 2910, - 2910, 2910, 2904, 2910, 2910, 2904, 2910, 2910, 2910, 2910, - 2910, 2904, 2910, 2910, 2910, 2910, 2910, 2910, 2904, 2910, - 2910, 2910, 2904, 2910, 2904, 2904, 2910, 2910, 2910, 2910, + 2926, 2926, 2926, 2926, 2926, 2926, 2920, 2926, 2920, 2926, + 2920, 2920, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2920, 2926, 2920, 2926, 2926, 2920, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2920, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2920, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2920, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2920, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, + 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2926, 2920, 2926, + 2926, 2920, 2926, 2926, 2926, 2926, 2926, 2920, 2926, 2926, - 2910, 2904, 2904, 0, 2904, 2904, 2904, 2904, 2904, 2904, - 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904 + 2926, 2926, 2926, 2926, 2920, 2926, 2926, 2926, 2920, 2926, + 2920, 2920, 2926, 2926, 2926, 2926, 2926, 2920, 2920, 0, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920 } ; -static yyconst flex_uint16_t yy_nxt[5715] = +static const flex_int16_t yy_nxt[5741] = { 0, 14, 15, 16, 17, 18, 19, 18, 14, 14, 14, 14, 14, 18, 20, 21, 22, 23, 24, 25, 26, @@ -1444,582 +1440,584 @@ static yyconst flex_uint16_t yy_nxt[5715] = 295, 71, 298, 288, 292, 300, 301, 297, 71, 71, 304, 71, 71, 299, 71, 289, 71, 290, 306, 305, - 307, 302, 71, 71, 71, 71, 71, 71, 71, 308, - 303, 310, 71, 71, 312, 71, 309, 71, 71, 71, - 71, 314, 316, 71, 71, 71, 71, 311, 315, 317, - 321, 325, 71, 318, 313, 319, 323, 71, 71, 328, - 71, 71, 322, 320, 71, 71, 330, 71, 324, 331, - 71, 332, 333, 334, 71, 336, 326, 327, 71, 71, - 329, 71, 71, 71, 339, 341, 337, 340, 71, 335, - 71, 71, 343, 71, 71, 344, 338, 71, 71, 347, - 71, 71, 150, 71, 71, 71, 367, 71, 350, 342, + 307, 302, 71, 71, 71, 71, 71, 308, 71, 311, + 303, 71, 309, 71, 71, 310, 71, 313, 71, 71, + 71, 71, 315, 317, 71, 71, 71, 71, 312, 316, + 318, 322, 326, 71, 319, 314, 320, 324, 71, 71, + 329, 71, 71, 323, 321, 71, 71, 331, 71, 325, + 332, 71, 333, 334, 335, 71, 337, 327, 328, 71, + 71, 330, 71, 71, 71, 340, 342, 338, 341, 71, + 336, 71, 71, 344, 71, 71, 345, 339, 71, 71, + 348, 71, 71, 150, 71, 71, 71, 368, 71, 351, - 352, 354, 345, 346, 348, 71, 349, 71, 355, 358, - 356, 351, 71, 71, 71, 71, 353, 357, 71, 71, - 71, 71, 364, 71, 365, 71, 366, 71, 359, 363, - 71, 71, 360, 146, 362, 71, 368, 361, 369, 71, - 371, 71, 374, 370, 71, 372, 71, 373, 71, 375, - 71, 378, 376, 71, 380, 382, 71, 71, 381, 377, - 71, 71, 71, 71, 385, 71, 383, 379, 387, 71, - 386, 71, 71, 71, 71, 71, 392, 71, 71, 71, - 393, 71, 71, 384, 145, 395, 391, 71, 397, 388, - 389, 71, 390, 71, 399, 401, 394, 396, 71, 71, + 343, 353, 355, 346, 347, 349, 71, 350, 71, 356, + 359, 357, 352, 71, 71, 71, 71, 354, 358, 71, + 71, 71, 71, 365, 71, 366, 71, 367, 71, 360, + 364, 71, 71, 361, 146, 363, 71, 369, 362, 370, + 71, 372, 71, 375, 371, 71, 373, 71, 374, 71, + 376, 71, 379, 377, 71, 381, 383, 71, 71, 382, + 378, 71, 71, 71, 71, 386, 71, 384, 380, 388, + 71, 387, 71, 71, 71, 71, 71, 393, 71, 71, + 71, 394, 71, 71, 385, 145, 396, 392, 71, 398, + 389, 390, 71, 391, 71, 400, 402, 395, 397, 71, - 398, 71, 402, 71, 71, 400, 71, 71, 71, 416, - 403, 71, 410, 412, 71, 71, 426, 413, 71, 414, - 404, 71, 411, 405, 421, 71, 71, 418, 406, 407, - 408, 409, 71, 425, 417, 415, 71, 71, 419, 420, - 422, 427, 71, 423, 428, 71, 424, 429, 71, 430, - 71, 71, 71, 71, 71, 71, 432, 437, 71, 71, - 71, 71, 440, 71, 433, 431, 439, 143, 71, 451, - 436, 71, 434, 446, 435, 71, 441, 453, 438, 71, - 442, 71, 444, 71, 445, 71, 443, 71, 447, 71, - 452, 71, 454, 71, 71, 71, 71, 455, 71, 71, + 71, 399, 71, 403, 71, 71, 401, 71, 71, 71, + 417, 404, 71, 411, 413, 71, 71, 428, 414, 71, + 415, 405, 71, 412, 406, 422, 71, 71, 419, 407, + 408, 409, 410, 71, 426, 418, 416, 71, 71, 420, + 421, 423, 71, 71, 424, 430, 71, 425, 427, 71, + 71, 429, 71, 432, 431, 434, 71, 71, 433, 71, + 71, 439, 71, 143, 71, 442, 71, 71, 435, 441, + 521, 71, 71, 71, 71, 438, 436, 443, 444, 437, + 71, 71, 440, 446, 445, 447, 71, 455, 448, 449, + 453, 71, 454, 71, 71, 71, 71, 71, 457, 456, - 71, 448, 466, 456, 449, 71, 450, 457, 467, 481, - 468, 465, 469, 472, 71, 458, 71, 459, 589, 460, - 480, 71, 482, 71, 470, 150, 71, 483, 71, 484, - 71, 71, 461, 486, 71, 462, 490, 463, 71, 464, - 471, 71, 71, 473, 474, 487, 485, 488, 71, 71, - 489, 71, 491, 475, 492, 476, 477, 478, 494, 71, - 479, 71, 493, 71, 71, 71, 71, 502, 495, 71, - 500, 497, 496, 71, 71, 503, 499, 71, 501, 498, - 71, 505, 507, 71, 71, 71, 504, 71, 71, 510, - 71, 506, 511, 512, 71, 71, 71, 71, 517, 509, + 71, 71, 450, 71, 458, 451, 71, 452, 459, 472, + 71, 469, 470, 71, 471, 71, 460, 71, 461, 483, + 462, 467, 71, 484, 468, 473, 71, 474, 485, 71, + 482, 150, 486, 463, 141, 71, 464, 489, 465, 71, + 466, 71, 71, 475, 476, 492, 71, 71, 490, 71, + 71, 71, 487, 477, 488, 478, 479, 480, 496, 71, + 481, 491, 71, 495, 71, 71, 71, 494, 497, 71, + 504, 502, 493, 498, 71, 505, 71, 71, 71, 499, + 501, 71, 500, 509, 503, 71, 71, 71, 71, 71, + 507, 71, 512, 513, 514, 508, 71, 506, 71, 71, - 71, 514, 71, 522, 519, 508, 515, 513, 516, 71, - 71, 71, 524, 520, 71, 71, 518, 71, 71, 71, - 141, 71, 71, 532, 528, 71, 533, 525, 521, 523, - 531, 527, 526, 535, 534, 529, 71, 530, 71, 71, - 536, 71, 537, 539, 71, 538, 71, 541, 71, 71, - 71, 71, 545, 546, 543, 71, 71, 71, 71, 71, - 547, 542, 71, 544, 540, 71, 71, 550, 71, 552, - 548, 551, 71, 71, 71, 71, 556, 553, 549, 71, - 71, 71, 558, 71, 554, 555, 557, 559, 71, 561, - 71, 71, 560, 71, 563, 562, 71, 564, 71, 565, + 71, 71, 511, 519, 522, 71, 524, 516, 515, 71, + 510, 71, 71, 518, 517, 71, 71, 71, 71, 523, + 71, 520, 534, 71, 71, 530, 526, 535, 525, 533, + 528, 527, 529, 536, 537, 71, 531, 71, 532, 71, + 71, 71, 71, 539, 541, 540, 71, 543, 71, 71, + 71, 71, 547, 548, 545, 71, 538, 71, 71, 71, + 71, 544, 542, 546, 549, 71, 71, 71, 71, 554, + 550, 552, 553, 71, 71, 71, 558, 555, 551, 71, + 71, 71, 560, 71, 561, 556, 71, 559, 71, 563, + 71, 564, 71, 562, 557, 71, 566, 71, 567, 71, - 568, 567, 566, 71, 71, 71, 71, 71, 575, 71, - 71, 577, 71, 71, 71, 578, 570, 71, 576, 71, - 71, 574, 584, 569, 571, 573, 572, 579, 580, 582, - 585, 581, 583, 71, 71, 71, 71, 71, 71, 588, - 71, 71, 591, 71, 71, 592, 71, 587, 594, 71, - 71, 71, 71, 71, 586, 608, 593, 71, 590, 71, - 595, 71, 597, 611, 71, 596, 71, 598, 607, 615, - 606, 609, 599, 610, 600, 71, 614, 71, 71, 71, - 601, 71, 602, 612, 618, 603, 604, 613, 617, 71, - 71, 616, 605, 620, 71, 619, 71, 621, 71, 624, + 569, 71, 71, 71, 565, 71, 71, 71, 578, 71, + 571, 568, 71, 580, 71, 573, 71, 581, 579, 71, + 570, 577, 572, 574, 71, 575, 576, 585, 71, 71, + 582, 71, 583, 71, 587, 584, 588, 71, 71, 71, + 71, 71, 71, 590, 591, 594, 71, 71, 586, 71, + 71, 595, 597, 596, 71, 71, 71, 71, 71, 592, + 589, 593, 611, 71, 71, 598, 71, 600, 631, 599, + 71, 601, 610, 71, 71, 609, 602, 614, 603, 615, + 613, 617, 612, 616, 604, 71, 605, 71, 71, 606, + 607, 71, 618, 621, 71, 71, 608, 620, 624, 71, - 71, 626, 71, 71, 622, 71, 71, 71, 71, 623, - 71, 71, 71, 632, 71, 628, 71, 627, 71, 633, - 629, 625, 636, 637, 150, 630, 639, 635, 638, 631, - 634, 71, 71, 641, 71, 71, 71, 71, 71, 71, - 71, 651, 646, 640, 71, 71, 648, 71, 649, 643, - 71, 644, 647, 642, 653, 645, 650, 71, 71, 656, - 71, 71, 652, 71, 655, 71, 71, 71, 659, 71, - 654, 658, 667, 71, 664, 71, 660, 71, 657, 665, - 71, 668, 71, 661, 669, 663, 662, 71, 666, 672, - 71, 670, 71, 671, 71, 71, 71, 71, 673, 674, + 71, 619, 71, 627, 622, 71, 71, 623, 71, 629, + 71, 71, 71, 71, 71, 71, 150, 625, 635, 71, + 626, 630, 71, 636, 71, 632, 71, 71, 640, 71, + 628, 633, 639, 634, 637, 150, 642, 638, 71, 641, + 71, 643, 71, 645, 71, 648, 71, 71, 71, 71, + 649, 651, 71, 644, 646, 654, 652, 653, 71, 647, + 650, 71, 656, 71, 655, 71, 71, 71, 71, 658, + 71, 71, 71, 662, 71, 657, 661, 148, 667, 659, + 71, 663, 660, 668, 71, 670, 71, 71, 664, 71, + 666, 665, 672, 669, 671, 71, 673, 71, 71, 674, - 71, 71, 675, 71, 678, 71, 676, 71, 677, 71, - 679, 682, 683, 71, 71, 71, 71, 684, 71, 688, - 686, 71, 71, 71, 150, 71, 680, 689, 681, 71, - 71, 71, 685, 691, 148, 690, 687, 71, 692, 71, - 695, 694, 693, 71, 71, 699, 71, 696, 697, 698, - 701, 71, 700, 71, 703, 702, 71, 704, 71, 71, - 71, 71, 707, 706, 71, 708, 71, 71, 71, 71, - 715, 71, 71, 711, 713, 71, 71, 709, 71, 705, - 712, 716, 710, 71, 721, 71, 71, 719, 714, 723, - 71, 722, 718, 71, 717, 720, 724, 71, 71, 71, + 71, 675, 71, 71, 71, 677, 71, 71, 676, 678, + 71, 71, 683, 681, 680, 71, 682, 71, 686, 71, + 71, 685, 679, 687, 71, 71, 71, 691, 71, 71, + 689, 71, 694, 71, 684, 71, 692, 695, 688, 71, + 698, 696, 693, 71, 71, 71, 690, 71, 71, 700, + 701, 71, 704, 697, 71, 71, 705, 706, 71, 707, + 71, 699, 702, 71, 71, 709, 703, 710, 711, 71, + 71, 71, 71, 71, 71, 718, 71, 716, 714, 71, + 71, 708, 71, 71, 71, 712, 715, 724, 713, 719, + 71, 722, 71, 71, 717, 71, 723, 71, 720, 721, - 728, 730, 725, 71, 71, 71, 71, 71, 729, 71, - 732, 71, 731, 727, 733, 71, 726, 735, 71, 734, - 71, 739, 71, 71, 736, 71, 71, 71, 742, 743, - 745, 741, 146, 71, 737, 738, 71, 740, 71, 71, - 750, 748, 71, 747, 744, 746, 749, 71, 71, 71, - 751, 752, 71, 71, 754, 71, 71, 71, 760, 71, - 71, 753, 71, 761, 71, 71, 755, 71, 71, 762, - 71, 756, 71, 757, 71, 758, 71, 759, 71, 71, - 763, 766, 764, 769, 767, 768, 765, 71, 770, 71, - 771, 774, 71, 71, 71, 772, 71, 71, 773, 71, + 726, 725, 71, 71, 730, 727, 71, 732, 728, 71, + 729, 734, 71, 71, 733, 735, 71, 71, 737, 71, + 731, 736, 71, 738, 71, 71, 71, 743, 71, 71, + 749, 746, 739, 71, 71, 740, 71, 747, 745, 71, + 71, 71, 71, 752, 741, 742, 751, 744, 753, 71, + 71, 750, 748, 71, 754, 71, 71, 756, 758, 71, + 71, 757, 71, 71, 764, 755, 71, 71, 759, 71, + 71, 765, 71, 71, 71, 766, 71, 760, 761, 71, + 773, 762, 71, 763, 767, 71, 71, 768, 771, 71, + 71, 769, 71, 770, 772, 71, 774, 775, 71, 778, - 71, 782, 71, 71, 71, 71, 783, 71, 71, 776, - 775, 71, 777, 781, 778, 779, 780, 71, 785, 786, - 71, 71, 784, 789, 788, 787, 71, 71, 791, 796, - 790, 792, 71, 71, 793, 71, 71, 794, 795, 71, - 71, 150, 797, 71, 71, 798, 802, 803, 71, 800, - 71, 71, 804, 799, 71, 801, 71, 71, 810, 71, - 806, 71, 71, 811, 805, 813, 71, 71, 816, 807, - 808, 812, 71, 71, 71, 71, 814, 818, 809, 71, - 815, 71, 822, 71, 71, 71, 71, 819, 71, 71, - 71, 823, 817, 824, 71, 71, 71, 71, 71, 821, + 71, 71, 71, 71, 71, 786, 71, 71, 776, 777, + 779, 787, 71, 71, 780, 71, 71, 785, 781, 782, + 783, 784, 71, 789, 71, 788, 71, 790, 71, 791, + 71, 792, 71, 796, 71, 793, 803, 795, 71, 794, + 71, 797, 71, 798, 71, 799, 71, 71, 71, 801, + 800, 150, 808, 802, 71, 804, 806, 807, 71, 805, + 71, 71, 71, 71, 814, 71, 71, 815, 71, 810, + 817, 71, 809, 71, 820, 816, 811, 812, 71, 71, + 71, 71, 818, 813, 71, 822, 71, 819, 826, 71, + 71, 823, 71, 71, 71, 71, 71, 827, 821, 828, - 71, 828, 825, 835, 820, 829, 836, 834, 830, 827, - 826, 837, 833, 71, 71, 831, 842, 838, 832, 71, - 839, 71, 840, 71, 71, 841, 845, 71, 71, 71, - 71, 71, 71, 853, 857, 71, 71, 843, 858, 71, - 71, 860, 867, 859, 844, 71, 846, 847, 854, 848, - 71, 71, 849, 855, 856, 71, 862, 850, 71, 71, - 866, 71, 864, 851, 852, 861, 863, 71, 71, 71, - 868, 71, 865, 869, 71, 71, 873, 71, 71, 71, - 71, 876, 872, 71, 71, 880, 882, 71, 870, 71, - 871, 71, 874, 875, 881, 878, 877, 883, 71, 71, + 71, 71, 71, 71, 825, 71, 832, 857, 829, 824, + 833, 837, 839, 834, 71, 831, 71, 838, 830, 71, + 835, 841, 840, 836, 71, 71, 843, 71, 842, 71, + 844, 71, 846, 847, 849, 71, 71, 71, 845, 71, + 71, 71, 861, 862, 71, 71, 864, 71, 863, 71, + 866, 848, 71, 850, 851, 859, 852, 858, 71, 853, + 860, 71, 865, 867, 854, 71, 869, 71, 868, 870, + 855, 856, 71, 71, 71, 71, 71, 71, 873, 71, + 71, 877, 71, 71, 871, 71, 880, 876, 71, 71, + 71, 878, 872, 884, 900, 874, 875, 879, 71, 71, - 918, 886, 884, 71, 885, 887, 879, 71, 71, 889, - 71, 71, 71, 888, 71, 71, 891, 890, 71, 71, - 892, 71, 71, 71, 898, 71, 893, 895, 896, 71, - 901, 71, 71, 71, 71, 71, 71, 894, 899, 900, - 71, 71, 897, 903, 904, 905, 71, 71, 71, 907, - 906, 902, 908, 71, 911, 71, 71, 71, 910, 71, - 71, 71, 909, 916, 919, 71, 914, 71, 71, 71, - 912, 917, 921, 71, 71, 913, 71, 71, 71, 71, - 71, 71, 920, 915, 929, 71, 927, 145, 71, 922, - 71, 925, 932, 923, 924, 71, 926, 930, 71, 933, + 881, 882, 887, 885, 886, 71, 71, 888, 71, 890, + 883, 889, 891, 146, 71, 71, 893, 71, 71, 892, + 894, 71, 71, 71, 71, 71, 71, 895, 71, 71, + 71, 896, 897, 899, 903, 71, 901, 71, 71, 904, + 71, 906, 71, 898, 71, 902, 905, 71, 71, 908, + 71, 909, 71, 910, 71, 912, 907, 71, 914, 911, + 71, 916, 913, 71, 71, 71, 71, 71, 71, 71, + 923, 71, 921, 71, 919, 924, 71, 71, 917, 915, + 922, 71, 926, 918, 71, 71, 71, 71, 925, 71, + 920, 937, 927, 928, 71, 932, 71, 71, 934, 71, - 931, 928, 936, 71, 935, 71, 71, 934, 71, 937, - 71, 939, 940, 71, 71, 71, 71, 71, 71, 938, - 71, 949, 71, 942, 944, 951, 71, 71, 941, 71, - 943, 71, 953, 955, 71, 945, 950, 947, 71, 946, - 948, 954, 71, 71, 71, 962, 952, 71, 959, 71, - 961, 71, 71, 956, 957, 963, 71, 71, 966, 71, - 968, 71, 958, 71, 71, 960, 71, 971, 150, 71, - 965, 970, 71, 71, 964, 71, 973, 71, 974, 967, - 71, 969, 71, 71, 972, 71, 71, 977, 71, 71, - 989, 71, 71, 71, 978, 975, 990, 992, 71, 980, + 71, 929, 71, 71, 71, 931, 930, 935, 938, 71, + 933, 71, 939, 71, 944, 936, 71, 941, 943, 942, + 71, 940, 945, 71, 71, 947, 71, 71, 71, 954, + 71, 946, 949, 956, 71, 71, 71, 958, 959, 71, + 948, 71, 71, 71, 71, 960, 950, 952, 955, 951, + 953, 71, 71, 71, 71, 966, 957, 964, 967, 71, + 71, 961, 968, 962, 71, 71, 71, 971, 973, 71, + 71, 963, 71, 71, 965, 976, 150, 975, 969, 970, + 71, 71, 71, 71, 979, 972, 978, 71, 974, 71, + 71, 71, 71, 71, 982, 977, 71, 71, 994, 71, - 976, 71, 71, 143, 71, 994, 981, 979, 991, 982, - 71, 1013, 71, 983, 71, 984, 993, 995, 996, 985, - 71, 986, 71, 71, 999, 997, 987, 1002, 998, 1000, - 71, 988, 71, 71, 71, 71, 1001, 71, 1004, 1006, - 71, 71, 71, 141, 71, 1011, 1012, 1003, 1005, 1007, - 1010, 71, 71, 1015, 1009, 1014, 71, 71, 1008, 71, - 71, 1017, 71, 1016, 71, 71, 71, 1027, 71, 1026, - 71, 1030, 71, 1031, 1018, 71, 1019, 1029, 1028, 71, - 1032, 1020, 71, 1021, 71, 1034, 1036, 71, 71, 1022, - 1038, 71, 1037, 1033, 1023, 1024, 71, 71, 71, 1042, + 71, 997, 71, 980, 995, 71, 985, 981, 71, 983, + 71, 71, 999, 986, 996, 984, 1002, 987, 71, 71, + 71, 988, 71, 989, 71, 1000, 1004, 990, 71, 991, + 998, 1005, 71, 1001, 992, 1008, 1003, 71, 1006, 993, + 71, 1007, 71, 71, 71, 1009, 71, 1011, 1016, 1013, + 1017, 71, 1015, 71, 71, 1010, 71, 1012, 1014, 1018, + 71, 1019, 1020, 71, 71, 71, 71, 71, 71, 71, + 1032, 71, 1022, 1021, 71, 1035, 1031, 1037, 71, 1034, + 71, 1023, 71, 1024, 71, 1033, 71, 71, 1025, 1036, + 1026, 1042, 1038, 1041, 71, 71, 1027, 1043, 1044, 1039, - 1039, 1025, 71, 1035, 71, 71, 71, 1043, 71, 71, - 1040, 1041, 1048, 71, 71, 1045, 71, 1046, 71, 71, - 71, 1051, 1049, 1044, 71, 1047, 71, 71, 71, 71, - 71, 71, 71, 1050, 1053, 1058, 1056, 1057, 1055, 1052, - 1060, 71, 71, 71, 1054, 1062, 71, 1059, 1061, 71, - 71, 71, 71, 71, 71, 71, 1065, 1068, 1069, 1070, - 1071, 1063, 1064, 71, 1072, 1067, 1073, 1066, 1074, 71, - 1076, 71, 71, 71, 1078, 1077, 71, 1079, 71, 71, - 71, 1080, 71, 1086, 71, 1075, 71, 71, 1088, 71, - 1089, 1082, 71, 1081, 71, 1084, 71, 71, 1083, 1085, + 71, 1028, 1029, 71, 71, 1040, 1047, 71, 1030, 71, + 1053, 71, 71, 71, 1048, 71, 71, 1046, 71, 1045, + 1050, 71, 1051, 71, 71, 71, 1049, 1054, 1056, 71, + 71, 1052, 71, 71, 71, 71, 71, 71, 71, 1058, + 1055, 1061, 1060, 1062, 1057, 71, 1065, 71, 71, 1059, + 1064, 1063, 71, 1066, 1071, 1068, 71, 1069, 71, 71, + 71, 1067, 1070, 1073, 1074, 1075, 71, 71, 1077, 71, + 1078, 1072, 1079, 71, 1082, 1076, 71, 71, 71, 1083, + 71, 71, 1080, 71, 1084, 71, 71, 1085, 1086, 1081, + 71, 1087, 71, 1092, 71, 71, 1094, 71, 1095, 71, - 71, 1091, 1092, 71, 71, 71, 1087, 71, 1094, 1095, - 1101, 71, 71, 1090, 71, 1100, 1093, 1096, 1097, 71, - 1099, 71, 71, 1098, 71, 71, 1105, 1104, 1102, 71, - 71, 71, 71, 71, 71, 1109, 1111, 1112, 1116, 1113, - 1103, 71, 71, 71, 71, 71, 1110, 1106, 71, 1107, - 1114, 1108, 71, 1115, 1119, 71, 71, 1121, 71, 1117, - 71, 1120, 71, 71, 1122, 71, 71, 71, 1125, 1126, - 71, 1123, 1118, 71, 71, 71, 1131, 1132, 1127, 71, - 71, 1124, 71, 71, 1134, 1129, 1135, 71, 1128, 71, - 1133, 1139, 71, 1130, 71, 71, 71, 71, 71, 1136, + 71, 1088, 71, 1090, 1089, 1097, 71, 1091, 71, 71, + 71, 1098, 71, 71, 1093, 1100, 71, 1101, 1096, 1103, + 71, 1102, 1106, 71, 1099, 71, 1105, 71, 71, 1107, + 71, 71, 1104, 71, 1108, 71, 1110, 71, 1111, 71, + 71, 1109, 1115, 1117, 145, 1112, 1118, 71, 71, 71, + 1113, 71, 71, 1116, 71, 1114, 1119, 71, 1122, 1120, + 1125, 71, 1121, 71, 71, 1123, 71, 71, 1124, 1127, + 71, 71, 1126, 71, 71, 71, 71, 1131, 1132, 1130, + 1128, 1134, 1129, 71, 71, 1137, 1138, 1133, 71, 71, + 71, 71, 71, 1140, 71, 1135, 1141, 71, 71, 71, - 71, 1145, 71, 1137, 1138, 1141, 71, 71, 71, 71, - 1151, 71, 1140, 1149, 71, 71, 1142, 1166, 71, 1144, - 1146, 1148, 1147, 1143, 1150, 1153, 1154, 71, 71, 1156, - 71, 71, 71, 1155, 1152, 1157, 71, 71, 71, 71, - 71, 71, 71, 1160, 71, 2904, 71, 71, 1163, 71, - 1158, 1159, 71, 71, 1161, 71, 71, 1164, 1170, 1162, - 1167, 1172, 1178, 1165, 1169, 1168, 71, 1176, 71, 71, - 1173, 71, 1174, 1171, 1177, 1175, 71, 71, 71, 1180, - 71, 71, 1179, 1183, 71, 71, 1182, 1188, 71, 1181, - 1185, 71, 1186, 71, 71, 71, 1189, 71, 1190, 1184, + 71, 1145, 71, 1136, 1139, 71, 71, 71, 1143, 1142, + 1144, 1147, 1151, 71, 71, 71, 71, 1146, 71, 1148, + 71, 1155, 1157, 71, 71, 143, 1150, 1156, 1152, 1159, + 1153, 1149, 1154, 1160, 71, 71, 71, 71, 71, 71, + 1162, 1161, 1163, 71, 1158, 71, 71, 71, 1164, 71, + 1166, 71, 71, 1172, 71, 71, 1169, 1165, 71, 71, + 71, 1167, 71, 71, 1182, 71, 1168, 1170, 1176, 1173, + 1171, 71, 71, 71, 1175, 71, 1174, 1178, 1183, 1185, + 1177, 71, 1184, 71, 1186, 71, 1179, 71, 1180, 1187, + 1189, 1181, 1188, 71, 71, 71, 1194, 71, 1191, 71, - 1192, 1193, 71, 1187, 71, 71, 71, 71, 71, 71, - 71, 1194, 71, 71, 1191, 1200, 71, 71, 71, 1195, - 1196, 1198, 1199, 71, 1201, 1197, 71, 71, 71, 1202, - 71, 1206, 1205, 1210, 1203, 1204, 1209, 71, 1207, 71, - 71, 71, 1211, 1208, 71, 1212, 1214, 71, 1216, 71, - 1213, 71, 1215, 1217, 71, 71, 1221, 71, 2904, 1230, - 1229, 1219, 1220, 1218, 71, 71, 71, 1231, 1234, 1222, - 1228, 71, 1223, 1224, 71, 71, 1232, 1225, 71, 1237, - 71, 71, 71, 1226, 1233, 1235, 1236, 1227, 71, 1239, - 71, 71, 71, 1240, 71, 1241, 71, 71, 71, 71, + 71, 71, 71, 71, 1195, 1192, 1190, 1196, 1198, 71, + 1200, 71, 71, 1199, 1193, 71, 71, 71, 71, 71, + 1197, 71, 71, 71, 71, 1206, 1201, 1202, 1204, 71, + 1211, 1207, 1205, 71, 1203, 71, 71, 71, 71, 71, + 1208, 1210, 1216, 1209, 1212, 1215, 1218, 71, 71, 71, + 71, 1217, 1220, 1213, 71, 1214, 71, 1222, 71, 1219, + 71, 1221, 1223, 71, 71, 1227, 71, 1267, 1225, 1224, + 1236, 1226, 71, 1234, 71, 1235, 71, 1228, 71, 1237, + 1229, 1230, 71, 1239, 1240, 1231, 71, 1238, 71, 71, + 71, 1232, 71, 1241, 1242, 1233, 71, 1243, 71, 1245, - 1249, 1250, 1246, 1238, 71, 1244, 71, 71, 71, 1251, - 1243, 1242, 1247, 71, 1245, 71, 1259, 1248, 71, 1252, - 71, 1258, 1253, 71, 71, 71, 1263, 1254, 1261, 1255, - 71, 1256, 1265, 1257, 1260, 71, 71, 1266, 71, 1264, - 1262, 1268, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 1270, 1275, 1273, 71, 1269, 1267, 1277, 1281, - 71, 1274, 71, 1271, 1272, 1276, 71, 1280, 1278, 1283, - 71, 71, 71, 1284, 71, 1285, 71, 71, 71, 1286, - 1279, 1282, 1289, 71, 1291, 71, 1288, 71, 1292, 71, - 71, 71, 1296, 71, 1293, 1287, 71, 71, 1290, 71, + 71, 71, 71, 1246, 71, 1247, 71, 1244, 71, 71, + 1255, 1250, 1248, 1252, 71, 1256, 71, 71, 1258, 1249, + 1253, 71, 1257, 71, 1251, 71, 71, 1254, 71, 1265, + 1266, 71, 71, 71, 1260, 1268, 1259, 71, 71, 1261, + 141, 1262, 71, 1263, 1270, 1264, 1271, 1272, 1269, 71, + 71, 71, 1273, 71, 1275, 71, 1276, 71, 71, 1277, + 1274, 71, 71, 71, 71, 1280, 1282, 71, 1288, 71, + 1278, 71, 1281, 1284, 1279, 71, 1283, 1290, 71, 71, + 1287, 1285, 71, 71, 1291, 71, 1289, 71, 1292, 71, + 1296, 71, 1286, 71, 1293, 71, 1295, 71, 1294, 1298, - 1298, 71, 71, 71, 71, 1302, 1300, 71, 71, 71, - 1304, 1294, 1295, 1301, 1306, 71, 1297, 71, 71, 1299, - 1303, 2904, 1307, 1305, 71, 71, 1308, 71, 1311, 1309, - 1310, 71, 71, 1313, 71, 71, 1312, 1317, 1314, 1318, - 1320, 1315, 71, 71, 71, 71, 71, 1319, 1316, 71, - 71, 1324, 71, 1321, 71, 71, 71, 1328, 1329, 71, - 1331, 1323, 71, 71, 71, 1330, 71, 71, 1322, 71, - 71, 71, 71, 1338, 1325, 1326, 1332, 71, 71, 1327, - 71, 1335, 1333, 71, 1336, 1343, 71, 1334, 1342, 1337, - 71, 71, 71, 71, 1347, 71, 1345, 1339, 1341, 1348, + 71, 71, 1299, 1297, 71, 1303, 71, 71, 71, 1300, + 1305, 71, 71, 71, 1301, 71, 1302, 1304, 1307, 71, + 1308, 1309, 71, 71, 71, 1311, 71, 71, 1306, 1313, + 1310, 1314, 71, 1320, 71, 1315, 71, 1316, 1312, 1317, + 71, 1318, 71, 71, 71, 71, 1324, 1319, 1325, 1321, + 71, 1322, 71, 1327, 71, 1326, 71, 71, 1323, 71, + 71, 1331, 71, 71, 71, 1328, 71, 1335, 1336, 71, + 71, 1330, 1338, 71, 71, 1337, 1329, 71, 71, 71, + 71, 71, 71, 1332, 1333, 71, 1345, 71, 71, 1334, + 1341, 1339, 1342, 1343, 71, 71, 71, 1340, 71, 1344, - 71, 71, 1350, 1340, 71, 71, 71, 71, 71, 1352, - 71, 1346, 1351, 1344, 71, 1356, 1358, 1360, 1357, 1349, - 1353, 1354, 1359, 71, 1355, 71, 71, 71, 71, 1361, - 71, 71, 71, 1364, 71, 71, 1366, 1362, 71, 1368, - 71, 71, 1370, 71, 1373, 1374, 1363, 71, 1365, 71, - 1367, 1377, 71, 71, 71, 1369, 1371, 71, 1372, 71, - 71, 71, 71, 71, 1378, 1375, 71, 1384, 1376, 1381, - 1385, 1386, 1379, 1380, 71, 1382, 71, 71, 1389, 71, - 1383, 71, 71, 71, 1394, 1388, 2904, 1391, 1393, 1395, - 71, 71, 1387, 71, 1390, 71, 71, 1396, 71, 1397, + 1349, 1352, 1346, 1350, 71, 71, 1348, 71, 1354, 71, + 2920, 71, 1347, 1355, 71, 1358, 1356, 1351, 1357, 71, + 71, 71, 71, 71, 1353, 1359, 1363, 1367, 71, 1364, + 1365, 71, 71, 71, 1360, 1361, 1366, 71, 1362, 71, + 71, 1368, 1369, 71, 71, 1373, 71, 71, 71, 1371, + 71, 1370, 1375, 71, 1380, 71, 71, 1372, 71, 1381, + 1377, 1374, 71, 1384, 1376, 71, 1378, 71, 1379, 71, + 71, 71, 71, 71, 1382, 71, 71, 1383, 1391, 1385, + 1388, 1386, 1392, 71, 1387, 71, 1389, 71, 1393, 71, + 1396, 1390, 71, 71, 1394, 1401, 1395, 71, 1398, 1402, - 1398, 71, 71, 1392, 71, 71, 1399, 1402, 71, 1401, - 71, 1405, 71, 1400, 71, 1404, 71, 71, 71, 1411, - 1403, 1408, 1407, 1413, 1412, 71, 71, 71, 1414, 71, - 71, 1409, 1406, 71, 1416, 71, 1419, 1410, 71, 71, - 71, 71, 1424, 1420, 71, 71, 1415, 1427, 71, 1417, - 1425, 71, 71, 71, 1418, 1430, 71, 1429, 1421, 1423, - 1422, 71, 71, 71, 71, 71, 71, 71, 1438, 71, - 1426, 1428, 2904, 71, 71, 1431, 1439, 1441, 71, 1435, - 71, 1432, 1433, 1434, 1437, 1442, 1440, 1436, 71, 71, - 71, 71, 1443, 71, 71, 71, 1447, 71, 1450, 1445, + 1397, 71, 1400, 71, 1403, 71, 71, 1404, 1405, 71, + 71, 71, 71, 71, 1399, 1406, 71, 71, 71, 1407, + 71, 1412, 71, 71, 1411, 71, 71, 1409, 1415, 1418, + 1408, 1410, 71, 1414, 1419, 71, 1416, 1420, 1413, 71, + 1423, 71, 1421, 71, 71, 1417, 71, 71, 71, 71, + 71, 1431, 1422, 1427, 71, 1426, 71, 71, 1434, 1432, + 1424, 71, 71, 1425, 71, 71, 1428, 1437, 1430, 1429, + 71, 1436, 71, 71, 71, 71, 71, 71, 71, 1446, + 1435, 1438, 1433, 71, 71, 71, 1447, 1449, 71, 1439, + 1443, 1440, 71, 1441, 1442, 71, 1451, 1448, 1444, 1445, - 1448, 71, 1444, 71, 1446, 1454, 71, 71, 71, 71, - 1451, 71, 1455, 1449, 1456, 1457, 71, 1452, 71, 1453, - 1458, 1459, 1462, 1463, 71, 71, 1460, 71, 71, 71, - 71, 1467, 71, 1468, 1466, 1470, 71, 71, 1461, 71, - 1471, 1472, 71, 1464, 71, 71, 71, 71, 1465, 1475, - 71, 71, 1469, 71, 1478, 71, 71, 71, 71, 1477, - 1473, 1474, 1482, 71, 1484, 71, 1479, 1476, 71, 71, - 71, 1488, 1483, 71, 71, 1481, 1480, 71, 71, 71, - 1493, 71, 1491, 1485, 1486, 71, 71, 1489, 71, 1494, - 71, 1496, 1490, 1487, 1492, 71, 71, 71, 1495, 1498, + 1450, 71, 71, 71, 71, 71, 1455, 71, 71, 71, + 1456, 1453, 1458, 2920, 1452, 71, 1454, 1462, 71, 71, + 1459, 71, 71, 1457, 1463, 1461, 1464, 71, 1460, 71, + 71, 1465, 1470, 1466, 71, 1467, 1471, 71, 71, 71, + 1468, 71, 71, 1475, 71, 1476, 1474, 1478, 71, 71, + 1469, 71, 1472, 71, 1480, 71, 1479, 71, 71, 71, + 1473, 1483, 71, 71, 1477, 1481, 71, 1486, 71, 71, + 71, 1485, 71, 1482, 71, 1490, 71, 1492, 1487, 1484, + 71, 71, 71, 1496, 71, 71, 1491, 71, 1489, 1488, + 71, 71, 1493, 1501, 71, 1494, 1499, 71, 1497, 71, - 1499, 71, 1501, 1502, 71, 71, 71, 71, 1497, 71, - 71, 1509, 71, 71, 1500, 71, 71, 1510, 71, 1503, - 1504, 1507, 71, 71, 1505, 1506, 71, 1513, 1514, 71, - 71, 1516, 71, 1511, 1508, 1512, 1515, 1517, 1518, 1520, - 1521, 71, 1519, 71, 71, 71, 1522, 71, 71, 1523, - 71, 71, 1527, 71, 1524, 1525, 71, 1528, 71, 71, - 71, 1530, 1532, 71, 1533, 1526, 71, 1529, 71, 1539, - 71, 71, 1534, 1531, 1536, 71, 71, 1537, 71, 1541, - 71, 1540, 71, 1542, 1545, 1544, 1535, 71, 71, 1538, - 71, 71, 1546, 1543, 71, 1547, 71, 1548, 1549, 1553, + 1504, 1502, 1500, 1498, 71, 71, 1495, 71, 71, 71, + 1503, 1507, 1510, 71, 1509, 71, 1506, 71, 71, 71, + 71, 71, 1517, 71, 2920, 71, 1505, 1508, 1518, 71, + 71, 1512, 71, 1511, 1515, 71, 71, 1513, 1514, 1521, + 1522, 71, 71, 1524, 1516, 1519, 71, 1525, 1526, 1520, + 71, 1528, 1523, 71, 71, 71, 1527, 71, 1530, 71, + 1529, 1532, 71, 71, 1535, 71, 1536, 1533, 71, 1531, + 71, 71, 71, 71, 1541, 1540, 71, 1534, 71, 1547, + 71, 71, 1537, 71, 1544, 71, 1539, 1545, 1538, 71, + 1542, 2920, 1549, 71, 1548, 1553, 1543, 71, 1550, 1546, - 71, 1551, 71, 71, 71, 1550, 1555, 1556, 1557, 1552, - 71, 1559, 71, 71, 71, 1558, 71, 71, 1562, 71, - 71, 1561, 1554, 71, 71, 1563, 71, 71, 71, 71, - 1571, 71, 71, 71, 71, 1560, 71, 71, 71, 1569, - 71, 1564, 1567, 1568, 1565, 1570, 1566, 71, 1574, 1576, - 71, 1572, 1578, 1573, 71, 1579, 71, 71, 1575, 71, - 1577, 71, 1582, 71, 71, 71, 71, 71, 71, 2904, - 1584, 1580, 1586, 1581, 71, 1583, 1587, 1593, 1585, 1588, - 1589, 1590, 1594, 71, 1595, 71, 1591, 71, 71, 71, - 1599, 71, 1598, 1592, 71, 71, 71, 71, 71, 1596, + 1552, 71, 71, 71, 1555, 1551, 1557, 1554, 71, 1556, + 71, 71, 71, 71, 71, 1558, 71, 71, 71, 1564, + 1563, 1565, 1567, 1566, 1559, 71, 71, 71, 71, 71, + 71, 1560, 71, 1561, 1569, 1571, 1562, 1570, 71, 71, + 71, 71, 71, 71, 71, 71, 1579, 71, 71, 1568, + 1572, 71, 71, 1584, 71, 1575, 1576, 1577, 71, 1573, + 1574, 1578, 71, 1580, 1581, 1582, 71, 1586, 1583, 71, + 1587, 71, 71, 71, 71, 71, 71, 71, 1585, 71, + 71, 1588, 71, 1592, 1594, 1589, 1602, 71, 71, 1595, + 1593, 1591, 1596, 1603, 71, 1597, 1590, 1598, 71, 71, - 71, 1602, 1603, 71, 71, 1611, 1597, 1600, 71, 71, - 71, 71, 1606, 71, 1601, 71, 1605, 1604, 1608, 1610, - 71, 1609, 71, 1607, 1612, 71, 1614, 71, 1613, 71, - 71, 71, 1621, 1615, 1616, 71, 71, 71, 1617, 1618, - 71, 1625, 1624, 71, 71, 1623, 71, 71, 1620, 71, - 71, 1622, 1632, 1627, 1619, 1626, 1628, 1633, 71, 71, - 1635, 1629, 71, 1634, 1639, 1631, 71, 1630, 1636, 1637, - 71, 1638, 1640, 71, 71, 1644, 71, 71, 71, 1641, - 71, 71, 1642, 71, 1648, 71, 1646, 71, 1643, 1645, - 71, 71, 1647, 1649, 71, 71, 71, 71, 71, 1650, + 71, 1600, 1599, 1601, 71, 71, 1605, 1606, 1607, 71, + 1604, 71, 1608, 71, 71, 71, 1610, 71, 1611, 71, + 71, 71, 1619, 71, 1609, 71, 1614, 71, 71, 1616, + 1618, 1613, 1617, 1612, 1620, 71, 71, 71, 1615, 71, + 1623, 1624, 71, 1621, 71, 1622, 71, 71, 1630, 71, + 71, 1625, 71, 71, 1627, 1626, 71, 1633, 71, 1632, + 71, 1634, 71, 71, 1629, 1631, 2920, 1636, 1641, 1628, + 1637, 1638, 71, 1642, 71, 1635, 1644, 1639, 1646, 71, + 1640, 1645, 71, 1647, 71, 71, 1643, 1649, 71, 71, + 1648, 71, 1653, 71, 1650, 71, 1657, 71, 71, 71, - 1653, 1660, 1652, 1658, 71, 71, 1651, 71, 1654, 1655, - 1661, 1656, 1657, 71, 71, 71, 71, 71, 1662, 71, - 1667, 71, 71, 1671, 71, 1659, 71, 71, 2904, 71, - 1666, 71, 1664, 1663, 1665, 1673, 71, 1669, 71, 71, - 1670, 1668, 71, 1674, 1675, 71, 71, 1672, 1680, 71, - 1676, 1677, 1678, 71, 71, 1681, 1684, 71, 71, 71, - 71, 1679, 71, 71, 71, 1682, 1686, 71, 71, 71, - 1691, 71, 1685, 1683, 1687, 1688, 71, 1694, 1699, 1689, - 1692, 1695, 71, 71, 1690, 1693, 1696, 1697, 71, 71, - 1700, 1701, 71, 71, 1698, 71, 71, 1703, 71, 71, + 1655, 71, 71, 71, 1651, 1652, 1656, 1658, 1654, 71, + 71, 71, 71, 71, 71, 1667, 71, 1661, 71, 1662, + 1659, 71, 1660, 1669, 1663, 1664, 1670, 1665, 1666, 71, + 71, 1671, 71, 71, 71, 71, 1676, 1668, 71, 71, + 71, 1672, 71, 1680, 71, 71, 71, 1675, 1673, 1682, + 71, 1683, 1674, 71, 1678, 1684, 71, 1677, 1679, 1681, + 71, 1685, 1686, 71, 1689, 71, 71, 71, 71, 1693, + 71, 71, 71, 71, 71, 1700, 71, 71, 1688, 1691, + 1695, 71, 71, 1687, 71, 1690, 1694, 1692, 1696, 1697, + 1698, 71, 1704, 71, 1699, 71, 1701, 1703, 1705, 71, - 71, 1704, 71, 71, 71, 1702, 71, 71, 71, 1709, - 71, 71, 1713, 71, 71, 1710, 71, 1714, 1719, 1705, - 1707, 1708, 1706, 1711, 71, 1712, 1718, 71, 71, 1717, - 1715, 71, 71, 1716, 71, 71, 1724, 1720, 71, 71, - 1727, 1728, 71, 1729, 71, 1731, 71, 1721, 1722, 71, - 1732, 1723, 1725, 71, 1726, 1730, 71, 1735, 71, 71, - 1737, 71, 1739, 1736, 1738, 71, 71, 1741, 71, 71, - 1744, 71, 71, 71, 1733, 1743, 1746, 1734, 71, 1745, - 71, 71, 71, 1740, 71, 1753, 71, 1755, 71, 71, - 71, 71, 1756, 71, 1742, 71, 1747, 1748, 1749, 71, + 1702, 1706, 71, 71, 1707, 1709, 1710, 71, 71, 71, + 71, 71, 1708, 71, 71, 1712, 71, 1713, 71, 71, + 1711, 71, 71, 71, 1718, 71, 71, 71, 71, 1714, + 1719, 1722, 1715, 71, 1716, 1720, 1717, 1721, 1727, 71, + 1728, 71, 1723, 1726, 71, 1725, 71, 71, 1729, 71, + 71, 1733, 71, 71, 1736, 1724, 1737, 71, 1738, 71, + 1730, 1740, 71, 1731, 1732, 71, 1734, 71, 1735, 71, + 1739, 71, 1741, 1744, 71, 71, 1746, 71, 1748, 1745, + 1747, 71, 71, 1750, 71, 71, 1742, 1749, 1743, 71, + 71, 1753, 71, 1752, 71, 1754, 1755, 1756, 1757, 1758, - 1751, 1752, 1757, 1750, 1760, 71, 1754, 1758, 1761, 71, - 1759, 1764, 1765, 71, 71, 1763, 71, 71, 1762, 71, - 1767, 71, 71, 1770, 1771, 71, 71, 1773, 71, 71, - 71, 71, 71, 1779, 71, 1778, 71, 1768, 71, 1775, - 1776, 71, 1766, 1769, 71, 1782, 1772, 71, 71, 71, - 1785, 71, 71, 1777, 1774, 71, 1783, 1780, 1789, 1781, - 1788, 71, 71, 71, 71, 1792, 1793, 71, 1787, 1791, - 71, 71, 71, 71, 1784, 1794, 71, 1786, 1795, 1796, - 71, 1790, 71, 1797, 71, 1800, 1798, 71, 71, 1803, - 1804, 71, 1799, 71, 71, 71, 71, 71, 1807, 2904, + 71, 71, 71, 1762, 1759, 71, 1751, 1764, 71, 71, + 71, 71, 1765, 71, 71, 71, 1767, 71, 1770, 1771, + 1760, 1761, 1766, 71, 71, 1763, 1768, 1774, 71, 71, + 71, 1772, 1769, 71, 1776, 71, 71, 1779, 1780, 71, + 71, 1782, 71, 71, 1773, 71, 71, 71, 1788, 71, + 1777, 71, 1787, 71, 1784, 1775, 1785, 1778, 71, 71, + 1781, 71, 71, 71, 1794, 71, 71, 1786, 1783, 1791, + 1792, 1797, 1789, 71, 1790, 1799, 71, 71, 1798, 1793, + 71, 71, 1796, 1802, 1803, 1804, 71, 1801, 71, 71, + 71, 1795, 71, 1805, 71, 71, 1800, 71, 71, 71, - 71, 71, 1801, 71, 71, 1813, 1816, 71, 1806, 71, - 1814, 1805, 71, 1802, 1808, 1809, 1810, 71, 1811, 1812, - 71, 1815, 1820, 71, 1817, 71, 71, 71, 1818, 71, - 1821, 71, 1824, 1819, 1827, 71, 71, 1830, 71, 1822, - 71, 1829, 71, 1831, 71, 1823, 71, 71, 1832, 1825, - 1828, 1826, 71, 1837, 71, 1833, 1838, 71, 1834, 1839, - 1841, 1842, 71, 1835, 1840, 71, 71, 71, 71, 71, - 1846, 71, 1836, 1844, 71, 71, 71, 71, 1848, 1851, - 1853, 1845, 71, 1847, 71, 71, 71, 1849, 1843, 71, - 71, 71, 71, 71, 1858, 71, 1854, 1857, 71, 1859, + 71, 1806, 1810, 71, 1813, 1814, 71, 1809, 71, 71, + 71, 71, 71, 1817, 1807, 71, 1808, 71, 1811, 1826, + 71, 71, 71, 1816, 1812, 1823, 1815, 71, 1824, 1818, + 1819, 1820, 1821, 71, 1822, 71, 1825, 1827, 1830, 71, + 71, 71, 71, 71, 71, 71, 1828, 1834, 1837, 1840, + 71, 1829, 71, 71, 71, 1832, 71, 1841, 1839, 71, + 71, 1831, 1833, 1842, 1835, 1836, 71, 1838, 71, 1843, + 1847, 71, 1848, 71, 1849, 1851, 71, 1844, 1852, 1850, + 71, 71, 1845, 71, 71, 71, 1856, 71, 1846, 71, + 1854, 71, 71, 1858, 71, 1855, 71, 71, 1861, 1857, - 1865, 1855, 1850, 2904, 1852, 1860, 71, 1861, 71, 1856, - 1863, 71, 71, 1862, 71, 71, 71, 1864, 1866, 71, - 1868, 71, 1869, 1867, 71, 1871, 71, 71, 71, 71, - 1875, 71, 71, 1870, 1874, 71, 71, 1876, 1872, 1873, - 1877, 1878, 1879, 71, 71, 71, 71, 71, 71, 71, - 1886, 1884, 1880, 1881, 1885, 71, 71, 71, 1888, 71, - 71, 1892, 1887, 1882, 71, 1883, 71, 71, 1891, 1889, - 71, 71, 71, 1890, 1899, 1893, 1894, 1896, 1898, 71, - 71, 71, 2904, 1897, 71, 1904, 71, 71, 1895, 71, - 1906, 71, 71, 71, 1907, 71, 1900, 1901, 71, 1902, + 1863, 71, 1853, 1859, 71, 71, 71, 71, 71, 1864, + 71, 1868, 1867, 1865, 71, 1869, 1870, 71, 1862, 1860, + 1871, 71, 1873, 71, 1866, 71, 71, 71, 71, 1874, + 1872, 1875, 71, 1876, 1877, 71, 71, 1878, 1879, 71, + 1881, 71, 71, 71, 71, 1885, 71, 71, 1880, 1884, + 71, 71, 1886, 1882, 1883, 1887, 1888, 1889, 71, 71, + 71, 71, 71, 71, 71, 1896, 1894, 1890, 1891, 1895, + 71, 71, 71, 1898, 71, 71, 1902, 1897, 1892, 71, + 1893, 71, 71, 1901, 1899, 71, 71, 71, 1900, 1909, + 1903, 1904, 1906, 1908, 71, 71, 71, 2920, 1907, 71, - 1903, 1908, 71, 1909, 1905, 1910, 71, 1912, 71, 71, - 71, 71, 71, 1911, 71, 71, 71, 1913, 71, 71, - 71, 1920, 1915, 1916, 1917, 1924, 71, 71, 71, 2904, - 1914, 1919, 1923, 71, 1921, 71, 1927, 1925, 1922, 71, - 1918, 71, 71, 71, 1928, 1931, 1930, 1926, 1929, 71, - 71, 1935, 71, 1932, 1933, 71, 71, 1934, 71, 71, - 1939, 71, 71, 1941, 1937, 1943, 71, 71, 1938, 71, - 1936, 71, 71, 1946, 1945, 71, 1942, 1947, 1940, 71, - 1948, 71, 1951, 71, 71, 71, 71, 71, 71, 1952, - 71, 71, 71, 1944, 1954, 2017, 1953, 1949, 1957, 71, + 1914, 71, 71, 1905, 71, 1916, 71, 71, 71, 1917, + 71, 1910, 1911, 71, 1912, 1913, 1918, 71, 1919, 1915, + 1920, 71, 1922, 71, 71, 71, 71, 71, 1921, 71, + 71, 71, 1923, 71, 71, 71, 1930, 1925, 1926, 1927, + 1934, 71, 71, 71, 2920, 1924, 1929, 1933, 71, 1931, + 71, 1937, 1935, 1932, 71, 1928, 71, 71, 71, 1938, + 1941, 1940, 1936, 1939, 71, 71, 1945, 71, 1942, 1943, + 71, 71, 1944, 71, 71, 1949, 71, 71, 1951, 1947, + 1953, 71, 71, 1948, 71, 1946, 71, 71, 1956, 1955, + 71, 1952, 1957, 1950, 71, 1958, 71, 71, 1962, 71, - 1961, 1950, 71, 1958, 1955, 1956, 71, 1959, 71, 71, - 1960, 1963, 71, 1962, 1966, 71, 71, 71, 71, 1968, - 1964, 71, 1969, 71, 71, 1970, 1973, 71, 1965, 1967, - 71, 1975, 1971, 71, 71, 1972, 1976, 71, 71, 1977, - 71, 71, 71, 1980, 71, 1978, 1979, 1981, 1974, 71, - 1985, 71, 71, 1982, 71, 71, 71, 71, 1984, 71, - 71, 1983, 1986, 71, 71, 1994, 71, 71, 1989, 71, - 1987, 1988, 1990, 71, 1995, 1991, 1992, 71, 71, 1993, - 71, 2003, 1996, 1997, 1999, 2002, 2005, 71, 71, 2000, - 71, 2007, 71, 71, 71, 2001, 1998, 2004, 2009, 2006, + 71, 71, 71, 2920, 71, 1963, 71, 1965, 1954, 71, + 1968, 71, 1959, 71, 1960, 1964, 1972, 1961, 71, 1969, + 1966, 1970, 71, 1967, 71, 71, 71, 1974, 71, 1973, + 1977, 71, 71, 1971, 1975, 71, 1979, 71, 1980, 71, + 1978, 1981, 1976, 71, 71, 1984, 71, 1986, 1982, 71, + 71, 1983, 1987, 71, 71, 1988, 71, 71, 71, 1991, + 71, 1989, 1990, 1992, 71, 1985, 1996, 71, 71, 1993, + 71, 71, 71, 1995, 71, 71, 71, 1994, 1997, 71, + 2005, 71, 71, 71, 2000, 71, 1998, 1999, 2002, 2001, + 2006, 2003, 2004, 71, 71, 71, 71, 2012, 71, 71, - 71, 71, 2012, 2014, 2015, 2010, 71, 2013, 71, 71, - 71, 71, 2008, 71, 2011, 71, 2016, 2019, 71, 71, - 2020, 2024, 71, 2026, 2023, 71, 2018, 71, 2025, 2028, - 71, 71, 71, 2030, 2021, 71, 2029, 2031, 71, 71, - 2033, 71, 71, 2027, 2032, 2022, 71, 71, 71, 71, - 2035, 2034, 2036, 71, 2038, 71, 71, 71, 2044, 71, - 2041, 71, 71, 71, 71, 2039, 2037, 2045, 2040, 2047, - 71, 71, 71, 2043, 2042, 71, 2046, 2051, 71, 2054, - 71, 71, 2049, 71, 71, 71, 71, 71, 2048, 2055, - 2050, 2052, 71, 2053, 71, 71, 71, 2065, 71, 71, + 2008, 2010, 2007, 71, 2011, 2016, 71, 2015, 2014, 2018, + 71, 71, 2017, 2009, 2013, 2020, 71, 71, 2019, 2023, + 2025, 2021, 2026, 71, 2024, 71, 71, 71, 71, 71, + 2022, 2028, 2027, 2030, 71, 71, 2031, 71, 2035, 71, + 71, 2036, 71, 2039, 71, 2920, 2034, 2029, 71, 71, + 2032, 71, 2041, 2040, 2037, 2042, 71, 71, 71, 2044, + 71, 2033, 2038, 2043, 2045, 71, 71, 71, 71, 71, + 2047, 71, 71, 2049, 71, 71, 71, 2046, 71, 2052, + 2055, 71, 2056, 71, 2051, 71, 71, 71, 71, 71, + 2053, 2054, 2048, 2058, 2050, 71, 71, 2060, 2057, 71, - 71, 71, 2056, 2057, 2066, 71, 2060, 2062, 2058, 71, - 2059, 2064, 2067, 2061, 2068, 2063, 71, 2070, 2069, 2071, - 71, 2072, 71, 71, 2073, 71, 2075, 71, 71, 2078, - 71, 71, 2079, 71, 71, 71, 2074, 2076, 2080, 71, - 2077, 2084, 71, 2085, 71, 2087, 71, 2083, 71, 2089, - 71, 2081, 71, 2904, 2082, 71, 2092, 71, 2086, 71, - 2091, 2093, 71, 71, 71, 71, 2088, 2090, 71, 71, - 2099, 71, 2095, 2094, 2098, 2101, 71, 71, 2096, 71, - 71, 71, 2105, 2104, 2097, 2103, 71, 2100, 2107, 71, - 71, 71, 2111, 71, 71, 2102, 71, 2106, 71, 71, + 2062, 71, 2059, 2065, 71, 2061, 71, 2064, 71, 2063, + 2069, 71, 71, 71, 2066, 71, 71, 2920, 2067, 71, + 2068, 2076, 71, 71, 71, 2073, 2077, 71, 2106, 71, + 2071, 2075, 2070, 2072, 71, 2081, 2074, 2078, 2082, 71, + 71, 2079, 2080, 2083, 71, 71, 71, 2086, 71, 2089, + 71, 71, 71, 71, 71, 2084, 2090, 2087, 2085, 2091, + 2088, 71, 71, 2095, 71, 2096, 71, 2098, 71, 71, + 2100, 71, 2092, 2093, 2094, 71, 71, 2103, 71, 71, + 2097, 2102, 2104, 71, 71, 71, 71, 2099, 2110, 71, + 2101, 2109, 71, 2105, 2112, 71, 71, 71, 2107, 71, - 2116, 71, 71, 2115, 71, 2108, 2109, 71, 71, 2110, - 2120, 71, 71, 2114, 2112, 71, 71, 2125, 71, 2113, - 71, 2117, 2118, 2119, 2121, 2122, 2123, 71, 71, 2126, - 2127, 71, 71, 71, 71, 71, 71, 2130, 2131, 71, - 71, 2124, 71, 2129, 2135, 71, 71, 2128, 2133, 71, - 2137, 2138, 2140, 71, 2142, 71, 71, 2134, 71, 2132, - 71, 2143, 71, 2141, 2139, 71, 2136, 2144, 2146, 71, - 71, 71, 2147, 71, 2148, 71, 71, 2153, 2145, 2149, - 2150, 2154, 2151, 71, 71, 71, 2159, 71, 2155, 2152, - 71, 2158, 71, 71, 2157, 71, 2156, 71, 2160, 71, + 71, 71, 2114, 2116, 2108, 2115, 71, 2117, 2119, 71, + 71, 2111, 71, 71, 2113, 2123, 71, 71, 71, 71, + 2120, 71, 2118, 71, 71, 2121, 71, 2127, 2128, 71, + 71, 2122, 71, 2124, 2126, 71, 2130, 2129, 71, 2131, + 2125, 2132, 71, 71, 2135, 2134, 2133, 71, 2137, 71, + 71, 2139, 2138, 71, 71, 2140, 71, 71, 2136, 2142, + 71, 2143, 2141, 71, 71, 71, 71, 71, 2147, 2152, + 2145, 2149, 2150, 71, 71, 71, 2154, 71, 2144, 2155, + 2151, 2146, 71, 71, 71, 71, 71, 71, 2156, 2159, + 2148, 71, 71, 71, 2153, 71, 2160, 2158, 71, 2164, - 71, 2166, 71, 71, 71, 71, 2161, 71, 71, 71, - 71, 2164, 2168, 2162, 2167, 2163, 2165, 2169, 71, 71, - 2170, 2172, 2171, 71, 2174, 71, 2173, 2214, 2175, 2189, - 2176, 2177, 71, 71, 2178, 2179, 71, 71, 71, 2182, - 2180, 2183, 71, 2181, 2904, 71, 71, 71, 2184, 71, - 71, 2186, 71, 71, 2190, 71, 2185, 71, 2187, 2191, - 2192, 2193, 71, 71, 71, 71, 2188, 71, 2194, 2198, - 71, 2197, 71, 2195, 71, 71, 71, 2200, 71, 71, - 71, 71, 2207, 2204, 71, 2196, 2206, 2199, 71, 71, - 2208, 2212, 2203, 71, 71, 2201, 2202, 71, 71, 2211, + 2161, 2162, 2157, 2165, 2163, 2166, 71, 2169, 71, 71, + 2167, 71, 2171, 2168, 71, 2170, 71, 2172, 71, 71, + 71, 2178, 71, 71, 71, 2173, 71, 71, 2174, 71, + 2175, 71, 71, 2180, 71, 2176, 2177, 2185, 2179, 2181, + 71, 71, 2182, 2184, 2183, 2186, 2189, 71, 71, 2190, + 2191, 71, 2187, 2188, 71, 71, 2194, 2192, 2195, 71, + 2193, 71, 71, 71, 71, 2196, 71, 71, 2198, 71, + 71, 2202, 71, 2197, 71, 2199, 2203, 2204, 2205, 71, + 2201, 71, 71, 2200, 71, 71, 2206, 2210, 71, 2209, + 71, 2207, 71, 71, 71, 71, 71, 2212, 71, 2219, - 2205, 71, 71, 2216, 71, 71, 2213, 2209, 2217, 2210, - 71, 2219, 71, 2221, 71, 2215, 2220, 2223, 71, 71, - 71, 2225, 71, 71, 71, 71, 2222, 71, 71, 2224, - 2218, 71, 71, 2229, 2233, 71, 2231, 2232, 2227, 2234, - 71, 2226, 2235, 2228, 71, 2236, 71, 71, 71, 71, - 71, 2230, 71, 71, 2239, 2242, 71, 2244, 71, 2243, - 71, 71, 2237, 71, 71, 2241, 2247, 71, 71, 2238, - 2254, 2240, 71, 2250, 71, 2246, 2245, 2251, 71, 2252, - 2248, 71, 2249, 71, 71, 71, 2253, 71, 2259, 71, - 2260, 71, 2258, 2261, 71, 2262, 71, 2255, 2256, 71, + 2216, 71, 71, 2211, 2208, 71, 2218, 71, 2220, 2215, + 71, 71, 71, 2213, 2214, 2224, 2223, 71, 2217, 2226, + 2225, 71, 71, 71, 2228, 2221, 2222, 71, 71, 71, + 2229, 71, 2231, 2232, 2233, 71, 2227, 2235, 71, 71, + 71, 2237, 71, 71, 71, 71, 71, 2234, 2236, 71, + 2241, 71, 71, 71, 2230, 71, 2243, 2244, 2239, 2245, + 71, 2238, 2240, 2246, 71, 2247, 71, 2249, 71, 71, + 71, 71, 71, 2248, 2252, 2242, 71, 2251, 2255, 71, + 2257, 2256, 71, 71, 2250, 71, 71, 71, 2254, 2253, + 2260, 71, 71, 2263, 2264, 71, 71, 71, 2259, 71, - 71, 71, 71, 2266, 71, 2257, 2265, 71, 2267, 71, - 71, 2263, 71, 2272, 71, 71, 2268, 71, 2264, 2274, - 71, 2269, 2275, 71, 71, 71, 71, 71, 2271, 2277, - 2270, 71, 2278, 71, 2273, 2276, 2281, 71, 2279, 2284, - 71, 71, 71, 71, 71, 71, 71, 2280, 71, 71, - 2285, 71, 2291, 2282, 71, 71, 71, 2283, 2288, 2293, - 71, 71, 2290, 2287, 2292, 2302, 71, 2295, 2286, 2294, - 2289, 71, 71, 71, 2298, 2299, 71, 2300, 2296, 2303, - 71, 2301, 71, 2297, 71, 2304, 71, 2305, 71, 2306, - 71, 2307, 71, 2308, 71, 71, 71, 71, 71, 71, + 2258, 2265, 2266, 71, 2261, 2262, 71, 71, 2267, 71, + 2272, 71, 71, 2268, 2271, 2273, 71, 2269, 2274, 71, + 2275, 71, 71, 71, 2276, 71, 2279, 2270, 2278, 71, + 2280, 71, 71, 71, 71, 2285, 71, 71, 2287, 71, + 2277, 2288, 71, 2281, 2282, 71, 71, 71, 71, 71, + 2284, 71, 2291, 2283, 71, 71, 2286, 2289, 71, 2290, + 2292, 2297, 71, 2294, 2298, 71, 71, 71, 71, 2293, + 71, 2295, 71, 2304, 2296, 71, 71, 71, 71, 71, + 2301, 71, 71, 71, 2303, 2305, 2300, 71, 2313, 2355, + 2306, 2299, 2302, 2307, 71, 2308, 2312, 2311, 71, 2315, - 2317, 71, 2318, 71, 71, 2314, 71, 2321, 71, 2309, - 71, 71, 2310, 2311, 71, 2320, 2312, 2313, 2315, 2316, - 2322, 2323, 71, 71, 71, 71, 2319, 71, 2324, 71, - 2326, 71, 2325, 2332, 71, 2333, 71, 71, 2334, 2327, - 71, 71, 71, 2328, 71, 2329, 71, 2330, 2331, 71, - 2904, 2338, 71, 2343, 71, 2335, 2336, 2341, 71, 2337, - 2342, 71, 2339, 2344, 2345, 71, 71, 71, 71, 2340, - 71, 71, 71, 71, 71, 71, 2347, 2351, 71, 71, - 71, 71, 2349, 2355, 2372, 2346, 71, 2348, 2356, 71, - 2360, 2350, 2358, 2352, 2353, 71, 2357, 71, 2354, 2359, + 71, 2309, 71, 2314, 2310, 2316, 71, 71, 2317, 71, + 2318, 71, 2319, 71, 71, 71, 71, 71, 71, 71, + 2320, 71, 71, 71, 2321, 71, 2330, 71, 2327, 2331, + 71, 2334, 71, 2322, 2324, 2323, 2333, 71, 2326, 2325, + 2329, 2328, 2336, 71, 71, 2332, 2335, 71, 71, 71, + 71, 71, 71, 71, 71, 2339, 2345, 71, 2346, 71, + 2347, 71, 2337, 71, 2340, 2338, 71, 71, 2341, 2342, + 2343, 2344, 2350, 71, 2920, 71, 71, 71, 2349, 2348, + 2351, 2354, 2356, 71, 71, 71, 2357, 2352, 2358, 71, + 71, 71, 71, 2353, 2360, 71, 2359, 71, 71, 71, - 71, 2362, 2363, 71, 71, 71, 71, 2367, 71, 71, - 2361, 2369, 71, 71, 2371, 71, 71, 2364, 2374, 71, - 71, 2368, 71, 2375, 71, 2365, 2366, 71, 2373, 2377, - 71, 71, 2370, 2904, 71, 71, 71, 2378, 2382, 71, - 2379, 2385, 2376, 2380, 2381, 71, 2383, 2384, 71, 71, - 2386, 71, 71, 71, 71, 71, 2388, 2904, 71, 71, - 2389, 71, 2392, 2387, 2391, 71, 2394, 2397, 71, 71, - 2395, 71, 2390, 2393, 2396, 2398, 71, 71, 2399, 71, - 2403, 71, 2400, 71, 71, 2405, 71, 2401, 2404, 71, - 2408, 71, 2409, 71, 2407, 71, 2406, 2402, 2411, 71, + 2364, 71, 71, 2362, 71, 2369, 2370, 71, 71, 2361, + 2373, 71, 2363, 71, 2377, 71, 2368, 2365, 2366, 2371, + 71, 2367, 71, 71, 2374, 71, 2372, 2376, 2375, 71, + 2381, 71, 71, 2383, 71, 2378, 71, 2385, 71, 71, + 71, 71, 2388, 71, 2382, 2379, 2386, 71, 2389, 2380, + 71, 2387, 2391, 71, 71, 2384, 71, 71, 2396, 71, + 71, 71, 2390, 2392, 71, 2394, 2395, 2393, 2398, 71, + 71, 71, 71, 71, 71, 2397, 2399, 2400, 2401, 2402, + 2404, 2403, 71, 71, 71, 2407, 71, 71, 2408, 71, + 71, 2405, 2406, 71, 2409, 2411, 71, 2412, 71, 71, - 71, 2413, 2904, 2412, 71, 71, 2414, 71, 2410, 2415, - 2416, 2417, 71, 71, 71, 71, 2418, 71, 2419, 71, - 71, 71, 71, 2420, 71, 2423, 71, 2422, 71, 2425, - 2421, 2426, 71, 2424, 2427, 71, 71, 2428, 71, 71, - 2429, 71, 2434, 71, 2430, 71, 71, 2432, 2433, 2431, - 71, 71, 2435, 2439, 71, 71, 71, 71, 2443, 71, - 71, 71, 71, 71, 2436, 2441, 2437, 2447, 71, 2438, - 2440, 2473, 2442, 2450, 2444, 2445, 2448, 71, 2451, 71, - 2452, 2446, 2453, 71, 71, 71, 71, 2449, 71, 71, - 71, 71, 71, 2454, 2455, 2458, 71, 2456, 71, 2461, + 2413, 2410, 71, 2417, 2414, 2415, 71, 2418, 2416, 71, + 71, 2419, 71, 2422, 71, 2423, 71, 2421, 71, 2425, + 71, 2420, 71, 2427, 71, 2426, 2794, 71, 2428, 71, + 71, 2424, 2429, 2431, 71, 2430, 71, 71, 2432, 71, + 71, 2433, 71, 71, 71, 71, 2434, 71, 2437, 71, + 2436, 71, 2439, 71, 2440, 2435, 2438, 2441, 2442, 71, + 71, 71, 71, 71, 2443, 71, 2448, 2444, 71, 71, + 2446, 2447, 2449, 2445, 71, 2453, 71, 71, 71, 71, + 71, 2457, 71, 71, 71, 71, 71, 2450, 2455, 2451, + 2461, 2462, 71, 2452, 2464, 2456, 2454, 2458, 2459, 2465, - 2462, 71, 71, 2457, 2463, 71, 2459, 2464, 71, 2465, - 71, 2460, 2467, 71, 71, 2470, 71, 2468, 71, 2471, - 71, 71, 2466, 2472, 71, 71, 2477, 71, 71, 2474, - 71, 2478, 71, 2469, 2479, 71, 2481, 71, 71, 2475, - 71, 2485, 71, 2480, 71, 2476, 2487, 71, 2486, 71, - 2483, 2482, 2488, 71, 2484, 71, 71, 2489, 71, 2494, - 71, 71, 2493, 71, 71, 71, 2498, 2490, 2496, 2497, - 71, 2499, 71, 2491, 71, 2492, 71, 2500, 71, 2502, - 71, 71, 71, 2509, 71, 2495, 2505, 71, 71, 71, - 2904, 71, 2515, 71, 71, 2503, 2504, 2501, 2506, 2511, + 71, 2466, 2467, 71, 2460, 71, 71, 71, 71, 71, + 2463, 71, 71, 71, 2468, 71, 2470, 2473, 2471, 71, + 71, 2476, 2477, 71, 71, 2472, 2478, 71, 71, 2474, + 2479, 71, 2482, 2469, 2475, 2480, 71, 2483, 71, 71, + 2485, 2486, 71, 71, 2481, 2487, 71, 71, 2484, 71, + 2488, 71, 2492, 71, 71, 2493, 2489, 2494, 71, 71, + 2496, 71, 71, 71, 71, 71, 2500, 2490, 2501, 71, + 71, 2491, 71, 71, 2495, 2497, 71, 2502, 2499, 2503, + 71, 2498, 71, 2509, 2504, 71, 2508, 71, 2505, 71, + 2506, 2511, 2512, 71, 71, 71, 2507, 71, 71, 2513, - 2512, 2508, 2507, 71, 2516, 2513, 71, 2510, 2514, 71, - 2517, 71, 2518, 71, 2519, 71, 71, 71, 71, 71, - 2523, 2521, 71, 2527, 71, 71, 71, 2524, 2528, 2530, - 71, 2520, 71, 71, 2532, 71, 71, 2522, 71, 2525, - 2531, 2533, 2526, 71, 2529, 2534, 71, 2535, 71, 71, - 2538, 71, 2536, 2539, 71, 2540, 71, 2537, 2541, 2543, - 71, 71, 2547, 71, 2544, 71, 71, 71, 71, 71, - 2546, 2542, 71, 2545, 71, 71, 2549, 2554, 71, 71, - 2550, 2552, 71, 71, 2548, 71, 2555, 2557, 71, 2559, - 2558, 71, 71, 71, 2551, 2553, 71, 2561, 2569, 2556, + 2515, 71, 71, 2514, 2517, 71, 71, 2510, 71, 71, + 2520, 71, 2524, 71, 71, 71, 2527, 2526, 71, 2518, + 2519, 2528, 71, 2516, 2521, 2523, 2530, 71, 2522, 71, + 2531, 71, 2532, 2525, 2529, 71, 2533, 71, 2534, 71, + 71, 71, 71, 71, 2538, 2536, 71, 2542, 71, 71, + 71, 2539, 2543, 2545, 71, 2535, 71, 71, 2547, 71, + 71, 2537, 71, 2540, 2546, 2548, 2541, 71, 2544, 2549, + 71, 2550, 71, 71, 2553, 71, 2551, 2554, 71, 2555, + 71, 2552, 71, 71, 2557, 2559, 2556, 71, 2558, 71, + 2560, 71, 2563, 71, 71, 71, 2561, 71, 2562, 71, - 2560, 71, 2562, 2564, 71, 2563, 2565, 71, 2566, 71, - 71, 71, 2571, 2568, 2575, 71, 2570, 71, 71, 2567, - 2572, 71, 2573, 2574, 71, 71, 71, 2579, 71, 71, - 2577, 2581, 71, 71, 71, 71, 2585, 71, 71, 71, - 71, 71, 2576, 71, 2578, 2588, 71, 71, 2582, 2583, - 71, 2586, 2587, 2580, 71, 2584, 2589, 71, 2592, 2590, - 2595, 71, 2593, 2597, 71, 2591, 2594, 2598, 71, 71, - 2600, 71, 71, 2596, 71, 71, 71, 2605, 71, 2604, - 71, 71, 71, 71, 2609, 71, 71, 71, 2601, 71, - 2599, 2602, 2603, 71, 2611, 2613, 71, 2614, 71, 2610, + 71, 71, 71, 2565, 2570, 2564, 71, 2566, 2568, 71, + 71, 2573, 71, 2571, 2574, 71, 2575, 2580, 71, 71, + 2569, 2576, 2567, 2572, 2577, 71, 2578, 2581, 71, 2579, + 2582, 71, 71, 71, 71, 71, 2587, 71, 71, 2586, + 71, 2583, 71, 2588, 71, 2589, 2590, 71, 71, 71, + 71, 71, 2595, 2584, 2585, 2591, 2593, 71, 71, 2597, + 71, 71, 2601, 71, 71, 2592, 2594, 71, 71, 2598, + 71, 71, 2599, 71, 2596, 2604, 71, 2602, 71, 2605, + 2603, 2600, 71, 71, 2606, 71, 2608, 2609, 2611, 71, + 2613, 71, 2607, 2614, 71, 71, 2616, 71, 71, 2617, - 2606, 2608, 2616, 71, 2607, 71, 71, 2615, 2612, 71, - 71, 2621, 71, 2620, 71, 2619, 2618, 71, 2625, 71, - 71, 71, 2617, 2626, 2623, 71, 2627, 71, 2622, 2630, - 2624, 2631, 71, 2628, 2629, 71, 71, 2633, 71, 2632, - 71, 71, 71, 71, 2638, 2634, 2635, 2636, 71, 71, - 71, 2641, 71, 2642, 71, 2645, 71, 2637, 2644, 2643, - 2646, 71, 71, 71, 71, 2639, 2640, 2647, 71, 2649, - 2650, 71, 2651, 71, 2652, 71, 71, 2648, 2654, 71, - 71, 2653, 71, 71, 71, 2659, 71, 2655, 2660, 71, - 71, 71, 71, 2664, 71, 71, 2666, 2667, 71, 71, + 71, 71, 2610, 71, 2612, 2620, 2621, 71, 71, 71, + 71, 2625, 71, 71, 2618, 71, 2615, 2619, 2627, 2629, + 71, 2630, 71, 2622, 71, 71, 2626, 71, 2624, 2632, + 71, 2623, 71, 2637, 71, 71, 2634, 2628, 71, 71, + 71, 2635, 2641, 71, 2631, 71, 71, 2636, 2642, 2633, + 2639, 71, 2643, 2638, 71, 2640, 2646, 2648, 2644, 2649, + 2645, 71, 71, 2647, 71, 71, 71, 71, 71, 2654, + 71, 2651, 2652, 71, 71, 71, 2657, 71, 71, 2650, + 2658, 71, 71, 2660, 2661, 71, 2689, 2653, 2920, 2659, + 2655, 2656, 2662, 71, 71, 71, 2664, 2666, 71, 2663, - 2661, 2663, 2656, 71, 2657, 2658, 2668, 71, 2669, 2671, - 2662, 71, 71, 2670, 2665, 71, 2674, 71, 71, 71, - 2673, 71, 71, 2672, 2675, 71, 71, 2678, 71, 71, - 71, 71, 2680, 71, 71, 71, 2681, 2679, 2676, 71, - 71, 2677, 71, 2693, 71, 71, 2904, 2690, 2682, 2686, - 2683, 2684, 2685, 2694, 71, 2691, 2687, 2688, 2692, 71, - 71, 2689, 71, 2695, 2696, 71, 2697, 71, 2698, 2699, - 71, 71, 2700, 2701, 2704, 71, 2702, 2703, 2706, 71, - 2705, 71, 71, 71, 2709, 71, 71, 2710, 2708, 71, - 71, 71, 71, 2711, 2712, 71, 2707, 71, 2713, 71, + 2665, 2667, 71, 2668, 71, 71, 2670, 71, 71, 71, + 2669, 71, 71, 71, 2675, 2676, 71, 71, 71, 71, + 2680, 71, 71, 2920, 71, 2683, 71, 2671, 2679, 2682, + 71, 2672, 2677, 2673, 2674, 2684, 71, 2678, 71, 2687, + 71, 2681, 71, 2685, 2686, 71, 2690, 71, 71, 71, + 71, 71, 2688, 2691, 71, 2694, 71, 71, 71, 71, + 2696, 71, 2692, 2695, 2697, 71, 71, 71, 71, 2693, + 71, 2709, 71, 2706, 71, 71, 2698, 2702, 2699, 2700, + 2710, 71, 71, 2701, 2703, 2704, 2711, 2705, 2708, 2730, + 2707, 2712, 71, 2713, 71, 2714, 2715, 71, 71, 2716, - 2717, 2718, 71, 71, 2716, 71, 2714, 2719, 71, 71, - 2715, 71, 2720, 2724, 2721, 2726, 71, 71, 2725, 71, - 2722, 71, 2730, 2723, 71, 71, 2729, 71, 2727, 2731, - 71, 2728, 2733, 71, 2848, 2734, 2735, 71, 2736, 71, - 2737, 71, 2738, 71, 2732, 2739, 71, 2740, 71, 2741, - 71, 2742, 71, 71, 2744, 71, 71, 71, 71, 2747, - 71, 71, 2743, 71, 71, 2751, 71, 2753, 71, 71, - 71, 71, 2748, 2755, 2749, 2750, 2745, 2746, 71, 2757, - 71, 2752, 71, 2760, 71, 2759, 71, 2754, 71, 71, - 71, 71, 71, 2762, 71, 2767, 71, 2756, 2758, 71, + 2717, 2720, 71, 2718, 2719, 71, 71, 2721, 71, 71, + 71, 2725, 71, 71, 2724, 71, 71, 71, 71, 71, + 2728, 2742, 2727, 2722, 2723, 71, 2729, 71, 2732, 71, + 2733, 2734, 71, 2735, 71, 71, 2731, 71, 2726, 71, + 2736, 71, 2737, 2740, 2738, 71, 71, 2739, 2741, 71, + 71, 2746, 71, 2749, 71, 2747, 2744, 71, 2751, 71, + 2752, 71, 2750, 71, 2743, 71, 2745, 2753, 71, 2754, + 71, 2748, 2755, 71, 2756, 71, 2757, 71, 2758, 71, + 71, 2760, 71, 2761, 2762, 2763, 71, 71, 71, 2759, + 71, 71, 71, 2767, 2769, 71, 71, 71, 71, 71, - 2761, 2768, 71, 2763, 2769, 71, 71, 2765, 2764, 2766, - 71, 71, 71, 2774, 2772, 2771, 71, 71, 71, 2770, - 2778, 71, 2777, 71, 2780, 71, 71, 2776, 71, 71, - 71, 2773, 71, 71, 71, 2775, 2779, 71, 2781, 2791, - 71, 71, 71, 71, 2875, 2782, 2783, 71, 2784, 2786, - 71, 2787, 2792, 2788, 2785, 2789, 71, 2790, 2793, 71, - 71, 2794, 2795, 71, 2796, 71, 2797, 71, 71, 71, - 2798, 2799, 2800, 71, 2801, 71, 2804, 71, 2807, 71, - 71, 2802, 71, 2809, 71, 71, 71, 71, 2803, 2805, - 2812, 71, 71, 2813, 71, 2814, 2816, 2806, 71, 2808, + 2771, 2765, 2764, 2766, 2776, 2768, 71, 2773, 71, 71, + 71, 2775, 71, 71, 2770, 71, 71, 2774, 2778, 71, + 2784, 71, 71, 2777, 2772, 2783, 2785, 71, 71, 71, + 71, 2779, 2781, 2780, 2782, 71, 71, 71, 2787, 2788, + 71, 71, 71, 71, 2796, 71, 2793, 71, 2792, 71, + 2789, 2786, 71, 71, 2790, 71, 71, 2795, 2797, 2791, + 71, 71, 71, 2807, 71, 71, 2798, 2799, 2800, 71, + 2802, 2809, 71, 71, 2808, 2805, 71, 2803, 2801, 2815, + 2804, 71, 2806, 71, 2810, 2811, 71, 2812, 71, 2814, + 71, 71, 2813, 71, 2820, 2816, 2817, 71, 71, 71, - 2810, 2817, 71, 71, 2811, 71, 71, 71, 2821, 71, - 71, 71, 2818, 2815, 2824, 71, 2819, 71, 71, 71, - 71, 71, 2826, 71, 2820, 2823, 2822, 71, 2831, 71, - 71, 71, 2828, 2829, 2832, 2825, 2836, 2827, 2835, 71, - 2830, 2837, 71, 2838, 71, 2833, 71, 71, 71, 2834, - 71, 2839, 2843, 2840, 71, 2841, 2845, 71, 71, 2844, - 71, 71, 71, 2842, 2846, 71, 2851, 71, 71, 71, - 71, 2854, 71, 2855, 71, 71, 71, 71, 71, 71, - 2847, 2849, 2853, 2858, 2850, 2856, 2852, 2859, 2857, 71, - 2861, 71, 2862, 71, 2860, 71, 2866, 71, 2863, 71, + 71, 2823, 71, 71, 2825, 71, 2818, 71, 2819, 2828, + 71, 2821, 71, 2829, 2826, 71, 71, 71, 2822, 71, + 2832, 2833, 2824, 2830, 71, 2827, 71, 71, 2837, 71, + 71, 2834, 2835, 71, 71, 2831, 71, 71, 2840, 71, + 71, 71, 2842, 2836, 71, 71, 71, 2839, 71, 2853, + 2838, 2847, 71, 2844, 2845, 71, 2841, 2848, 2843, 2851, + 71, 71, 71, 2846, 2850, 71, 2849, 2852, 71, 2854, + 2855, 71, 71, 2859, 2861, 71, 2856, 2857, 71, 71, + 2858, 71, 71, 2860, 71, 2862, 71, 71, 2867, 71, + 71, 2864, 71, 2870, 71, 2871, 71, 71, 71, 71, - 2868, 71, 2864, 71, 2869, 2865, 2870, 71, 71, 2873, - 71, 71, 71, 71, 2871, 71, 2867, 2874, 2876, 71, - 2877, 71, 2878, 71, 2882, 71, 2880, 2872, 71, 71, - 2879, 71, 71, 71, 2884, 71, 2885, 71, 2888, 2889, - 71, 71, 2881, 71, 2892, 2893, 71, 2883, 71, 2895, - 71, 2886, 2887, 71, 2890, 2894, 2896, 71, 71, 71, - 2891, 71, 71, 2904, 2898, 2897, 2899, 2902, 71, 2903, - 71, 2904, 2900, 2904, 2904, 2904, 2904, 2904, 2904, 2904, - 2904, 2901, 43, 43, 43, 43, 43, 43, 43, 48, - 48, 48, 48, 48, 48, 48, 53, 53, 53, 53, + 71, 2863, 2874, 2869, 71, 2865, 2866, 2872, 2868, 71, + 2873, 71, 2878, 71, 2879, 71, 71, 2877, 2875, 2876, + 71, 2882, 71, 2884, 71, 2885, 2880, 71, 71, 71, + 2889, 71, 2886, 71, 71, 2883, 2887, 71, 2890, 2891, + 71, 2881, 2892, 71, 71, 71, 71, 2888, 71, 71, + 71, 2893, 2894, 2895, 2896, 2898, 71, 71, 71, 2897, + 71, 2904, 2900, 2901, 71, 2899, 71, 2902, 2920, 2903, + 2905, 71, 71, 2908, 2909, 71, 71, 71, 2911, 71, + 2912, 71, 71, 2906, 2910, 2907, 71, 71, 71, 2913, + 2920, 2914, 2915, 2918, 71, 2916, 2919, 71, 2920, 2920, - 53, 53, 53, 59, 59, 59, 59, 59, 59, 59, - 64, 64, 64, 64, 64, 64, 64, 74, 74, 2904, - 74, 74, 74, 74, 140, 140, 2904, 2904, 2904, 140, - 140, 142, 142, 2904, 2904, 142, 2904, 142, 144, 2904, - 2904, 2904, 2904, 2904, 144, 147, 147, 2904, 2904, 2904, - 147, 147, 149, 2904, 2904, 2904, 2904, 2904, 149, 151, - 151, 2904, 151, 151, 151, 151, 75, 75, 2904, 75, - 75, 75, 75, 13, 2904, 2904, 2904, 2904, 2904, 2904, - 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, - 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2917, 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, 2920, 74, 74, 74, 74, + 140, 140, 2920, 2920, 2920, 140, 140, 142, 142, 2920, + 2920, 142, 2920, 142, 144, 2920, 2920, 2920, 2920, 2920, + 144, 147, 147, 2920, 2920, 2920, 147, 147, 149, 2920, + 2920, 2920, 2920, 2920, 149, 151, 151, 2920, 151, 151, + 151, 151, 75, 75, 2920, 75, 75, 75, 75, 13, - 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, - 2904, 2904, 2904, 2904 + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920 } ; -static yyconst flex_int16_t yy_chk[5715] = +static const flex_int16_t yy_chk[5741] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2029,13 +2027,13 @@ static yyconst flex_int16_t yy_chk[5715] = 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, 2910, 31, + 10, 10, 15, 25, 9, 29, 15, 25, 2926, 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, 971, 24, 24, + 34, 21, 23, 24, 12, 23, 24, 976, 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, @@ -2077,579 +2075,581 @@ static yyconst flex_int16_t yy_chk[5715] = 193, 194, 195, 188, 190, 197, 198, 194, 195, 199, 200, 197, 198, 196, 201, 188, 200, 188, 202, 201, - 203, 198, 204, 205, 202, 206, 203, 207, 208, 204, - 199, 206, 209, 210, 208, 211, 205, 212, 214, 215, - 213, 210, 212, 216, 218, 217, 220, 207, 211, 213, - 217, 221, 219, 214, 209, 215, 219, 221, 222, 223, - 224, 225, 218, 216, 227, 223, 225, 226, 220, 226, - 230, 227, 228, 229, 232, 231, 222, 222, 228, 229, - 224, 231, 233, 234, 234, 236, 232, 235, 235, 230, - 239, 236, 237, 238, 240, 238, 233, 242, 237, 240, - 243, 244, 241, 246, 260, 245, 260, 257, 243, 236, + 203, 198, 205, 206, 202, 204, 203, 204, 207, 206, + 199, 208, 204, 209, 210, 205, 211, 208, 212, 214, + 215, 213, 210, 212, 216, 218, 217, 220, 207, 211, + 213, 217, 221, 219, 214, 209, 215, 219, 221, 222, + 223, 224, 225, 218, 216, 227, 223, 225, 226, 220, + 226, 230, 227, 228, 229, 232, 231, 222, 222, 228, + 229, 224, 231, 233, 234, 234, 236, 232, 235, 235, + 230, 239, 236, 237, 238, 240, 238, 233, 242, 237, + 240, 243, 244, 241, 246, 260, 245, 260, 257, 243, - 245, 247, 238, 239, 241, 249, 242, 247, 248, 251, - 249, 244, 250, 252, 248, 251, 246, 250, 253, 254, - 255, 256, 257, 259, 258, 263, 259, 267, 252, 256, - 258, 266, 253, 146, 255, 261, 261, 254, 262, 264, - 264, 262, 267, 263, 265, 265, 268, 266, 269, 268, - 270, 271, 269, 272, 273, 275, 274, 271, 274, 270, - 273, 275, 276, 277, 277, 278, 276, 272, 279, 280, - 278, 282, 281, 283, 279, 284, 284, 285, 286, 288, - 285, 287, 290, 276, 144, 287, 283, 289, 289, 280, - 281, 291, 282, 292, 291, 293, 286, 288, 295, 294, + 236, 245, 247, 238, 239, 241, 249, 242, 247, 248, + 251, 249, 244, 250, 252, 248, 251, 246, 250, 253, + 254, 255, 256, 257, 259, 258, 263, 259, 267, 252, + 256, 258, 266, 253, 146, 255, 261, 261, 254, 262, + 264, 264, 262, 267, 263, 265, 265, 268, 266, 269, + 268, 270, 271, 269, 272, 273, 275, 274, 271, 274, + 270, 273, 275, 276, 277, 277, 278, 276, 272, 279, + 280, 278, 282, 281, 283, 279, 284, 284, 285, 286, + 288, 285, 287, 290, 276, 144, 287, 283, 289, 289, + 280, 281, 291, 282, 292, 291, 293, 286, 288, 295, - 290, 293, 294, 297, 298, 292, 301, 309, 299, 301, - 295, 296, 297, 299, 300, 303, 309, 300, 308, 300, - 296, 302, 298, 296, 305, 305, 307, 303, 296, 296, - 296, 296, 310, 308, 302, 300, 304, 306, 304, 304, - 306, 310, 312, 307, 311, 311, 307, 312, 313, 313, - 314, 315, 316, 317, 318, 319, 315, 320, 321, 327, - 329, 322, 323, 320, 316, 314, 322, 142, 323, 329, - 319, 324, 317, 327, 318, 325, 324, 331, 321, 326, - 325, 336, 326, 331, 326, 328, 325, 332, 328, 330, - 330, 335, 332, 337, 333, 338, 444, 333, 339, 342, + 294, 290, 293, 294, 297, 298, 292, 301, 310, 299, + 301, 295, 296, 297, 299, 300, 303, 310, 300, 308, + 300, 296, 302, 298, 296, 305, 305, 307, 303, 296, + 296, 296, 296, 309, 308, 302, 300, 304, 306, 304, + 304, 306, 311, 315, 307, 312, 312, 307, 309, 313, + 316, 311, 314, 314, 313, 316, 317, 318, 315, 319, + 320, 321, 322, 142, 323, 324, 380, 321, 317, 323, + 380, 324, 325, 326, 328, 320, 318, 325, 326, 319, + 327, 330, 322, 327, 326, 327, 329, 332, 328, 329, + 330, 331, 331, 332, 333, 334, 338, 339, 334, 333, - 345, 328, 336, 333, 328, 344, 328, 333, 337, 345, - 338, 335, 339, 342, 349, 333, 334, 334, 444, 334, - 344, 341, 346, 347, 341, 348, 354, 346, 346, 347, - 350, 352, 334, 349, 355, 334, 353, 334, 351, 334, - 341, 343, 353, 343, 343, 350, 348, 351, 356, 358, - 352, 359, 354, 343, 355, 343, 343, 343, 357, 360, - 343, 361, 356, 363, 357, 362, 366, 364, 357, 367, - 362, 359, 358, 364, 365, 365, 361, 368, 363, 360, - 370, 367, 369, 371, 372, 375, 366, 374, 369, 372, - 376, 368, 373, 373, 377, 373, 378, 383, 378, 371, + 340, 336, 329, 337, 334, 329, 342, 329, 334, 342, + 346, 338, 339, 343, 340, 345, 334, 335, 335, 346, + 335, 336, 351, 347, 337, 342, 348, 343, 347, 347, + 345, 349, 348, 335, 140, 350, 335, 351, 335, 352, + 335, 344, 353, 344, 344, 354, 355, 356, 352, 357, + 359, 354, 349, 344, 350, 344, 344, 344, 358, 360, + 344, 353, 361, 357, 358, 362, 363, 356, 358, 364, + 365, 363, 355, 359, 366, 366, 365, 367, 368, 360, + 362, 369, 361, 370, 364, 371, 372, 373, 375, 370, + 368, 376, 373, 374, 374, 369, 374, 367, 377, 378, - 379, 375, 381, 381, 379, 370, 376, 374, 377, 380, - 382, 384, 383, 380, 385, 387, 378, 386, 389, 393, - 140, 388, 390, 389, 387, 391, 390, 384, 380, 382, - 388, 386, 385, 392, 391, 387, 394, 387, 396, 392, - 393, 395, 394, 396, 397, 395, 398, 398, 399, 400, - 401, 402, 402, 403, 400, 405, 404, 406, 412, 403, - 404, 399, 407, 401, 397, 411, 408, 407, 409, 409, - 405, 408, 410, 419, 413, 70, 412, 409, 406, 414, - 416, 423, 414, 415, 410, 411, 413, 415, 417, 417, - 418, 425, 416, 424, 419, 418, 420, 420, 422, 422, + 381, 379, 372, 379, 381, 382, 382, 376, 375, 383, + 371, 384, 386, 378, 377, 385, 388, 390, 387, 381, + 389, 379, 390, 391, 392, 388, 384, 391, 383, 389, + 386, 385, 387, 392, 393, 394, 388, 395, 388, 397, + 393, 396, 398, 395, 397, 396, 399, 399, 400, 401, + 402, 403, 403, 404, 401, 406, 394, 407, 413, 404, + 405, 400, 398, 402, 405, 70, 408, 409, 410, 410, + 406, 408, 409, 411, 412, 414, 413, 410, 407, 415, + 416, 417, 415, 420, 416, 411, 419, 414, 418, 418, + 424, 419, 425, 417, 412, 421, 421, 423, 423, 426, - 425, 424, 423, 426, 427, 430, 429, 431, 432, 433, - 435, 434, 439, 436, 432, 435, 427, 434, 433, 440, - 437, 431, 440, 426, 429, 430, 429, 436, 437, 438, - 441, 437, 439, 442, 443, 438, 441, 445, 446, 443, - 447, 448, 446, 449, 450, 447, 451, 442, 449, 452, - 454, 456, 457, 455, 441, 456, 448, 458, 445, 459, - 450, 461, 452, 459, 462, 451, 453, 453, 455, 462, - 454, 457, 453, 458, 453, 463, 461, 466, 460, 464, - 453, 468, 453, 460, 465, 453, 453, 460, 464, 469, - 465, 463, 453, 466, 467, 465, 471, 467, 470, 470, + 425, 427, 428, 429, 420, 431, 432, 433, 434, 435, + 427, 424, 437, 436, 434, 429, 438, 437, 435, 436, + 426, 433, 428, 431, 439, 431, 432, 440, 441, 444, + 438, 442, 439, 440, 442, 439, 443, 446, 450, 445, + 447, 448, 443, 444, 445, 448, 449, 451, 441, 452, + 453, 449, 451, 450, 454, 456, 476, 457, 458, 446, + 443, 447, 458, 459, 460, 452, 463, 454, 476, 453, + 455, 455, 457, 461, 462, 456, 455, 461, 455, 462, + 460, 463, 459, 462, 455, 465, 455, 464, 466, 455, + 455, 468, 464, 467, 470, 469, 455, 466, 469, 467, - 472, 472, 473, 474, 468, 475, 476, 477, 478, 469, - 479, 480, 481, 478, 484, 474, 482, 473, 488, 479, - 475, 471, 482, 484, 485, 476, 486, 481, 485, 477, - 480, 487, 486, 488, 489, 490, 491, 492, 493, 494, - 496, 498, 493, 487, 495, 503, 495, 498, 496, 490, - 499, 491, 494, 489, 500, 492, 497, 497, 501, 503, - 500, 502, 499, 504, 502, 506, 505, 507, 506, 508, - 501, 505, 511, 511, 509, 510, 507, 517, 504, 509, - 509, 512, 512, 507, 513, 508, 507, 520, 510, 516, - 513, 514, 514, 515, 515, 516, 518, 519, 517, 518, + 471, 465, 472, 472, 467, 473, 475, 468, 474, 474, + 477, 479, 478, 480, 481, 482, 64, 470, 480, 486, + 471, 475, 483, 481, 491, 477, 484, 494, 486, 489, + 473, 478, 484, 479, 482, 487, 488, 483, 490, 487, + 492, 489, 488, 491, 493, 494, 495, 496, 498, 497, + 495, 497, 501, 490, 492, 500, 498, 499, 499, 493, + 496, 500, 502, 503, 501, 505, 504, 506, 502, 504, + 508, 507, 509, 508, 510, 503, 507, 59, 511, 505, + 512, 509, 506, 511, 511, 513, 513, 519, 509, 526, + 510, 509, 515, 512, 514, 514, 516, 516, 515, 517, - 521, 522, 519, 524, 522, 523, 520, 526, 521, 525, - 523, 526, 527, 528, 529, 530, 531, 528, 527, 532, - 530, 534, 533, 536, 64, 532, 524, 533, 525, 538, - 535, 541, 529, 535, 59, 534, 531, 542, 535, 537, - 537, 536, 535, 539, 540, 541, 544, 538, 539, 540, - 543, 545, 542, 546, 545, 544, 543, 546, 547, 548, - 549, 550, 548, 547, 551, 549, 552, 553, 555, 554, - 556, 556, 557, 552, 554, 558, 559, 550, 560, 546, - 553, 557, 551, 561, 562, 563, 564, 560, 555, 564, - 562, 563, 559, 565, 558, 561, 565, 566, 567, 568, + 517, 518, 520, 522, 521, 520, 523, 518, 519, 521, + 524, 525, 526, 524, 523, 527, 525, 528, 529, 530, + 531, 528, 522, 530, 529, 532, 533, 534, 536, 537, + 532, 535, 537, 534, 527, 538, 535, 537, 531, 539, + 539, 537, 536, 540, 541, 542, 533, 546, 543, 541, + 542, 544, 545, 538, 547, 548, 546, 547, 545, 548, + 549, 540, 543, 551, 550, 549, 544, 550, 551, 552, + 553, 554, 556, 555, 557, 558, 558, 556, 554, 560, + 559, 548, 562, 561, 563, 552, 555, 564, 553, 559, + 570, 562, 569, 564, 557, 565, 563, 566, 560, 561, - 569, 571, 566, 570, 575, 573, 569, 571, 570, 572, - 573, 576, 572, 568, 574, 577, 567, 575, 579, 574, - 574, 578, 580, 581, 576, 588, 582, 578, 581, 582, - 583, 580, 54, 584, 577, 577, 583, 579, 585, 587, - 587, 586, 590, 585, 582, 584, 586, 586, 592, 589, - 588, 589, 591, 593, 591, 594, 595, 596, 597, 598, - 599, 590, 603, 598, 597, 600, 592, 601, 602, 599, - 605, 593, 604, 594, 607, 595, 609, 596, 608, 610, - 600, 603, 601, 606, 604, 605, 602, 611, 607, 606, - 608, 611, 612, 613, 614, 609, 615, 616, 610, 617, + 566, 565, 567, 568, 570, 567, 571, 572, 568, 573, + 569, 574, 575, 572, 573, 575, 576, 574, 577, 578, + 571, 576, 579, 577, 577, 580, 584, 581, 582, 583, + 586, 584, 578, 581, 585, 579, 586, 585, 583, 587, + 591, 588, 593, 589, 580, 580, 588, 582, 589, 589, + 595, 587, 585, 590, 590, 592, 594, 592, 594, 596, + 597, 593, 598, 599, 600, 591, 602, 601, 595, 603, + 600, 601, 604, 605, 606, 602, 607, 596, 597, 608, + 609, 598, 610, 599, 603, 611, 609, 604, 607, 612, + 613, 605, 615, 606, 608, 614, 610, 611, 616, 614, - 618, 618, 619, 620, 625, 622, 619, 621, 624, 613, - 612, 632, 614, 617, 615, 615, 616, 626, 621, 622, - 623, 627, 620, 625, 624, 623, 628, 629, 627, 632, - 626, 628, 630, 631, 629, 633, 634, 630, 631, 635, - 636, 638, 633, 637, 639, 634, 638, 639, 640, 636, - 641, 642, 640, 635, 643, 637, 644, 645, 646, 646, - 642, 651, 647, 647, 641, 648, 648, 649, 652, 643, - 644, 647, 653, 654, 652, 655, 649, 654, 645, 656, - 651, 657, 658, 659, 661, 662, 660, 655, 658, 663, - 669, 659, 653, 660, 672, 674, 664, 666, 679, 657, + 617, 618, 619, 620, 621, 621, 623, 622, 612, 613, + 615, 622, 624, 625, 616, 627, 628, 620, 617, 618, + 618, 619, 638, 624, 626, 623, 629, 625, 631, 626, + 630, 627, 635, 631, 632, 628, 638, 630, 633, 629, + 634, 632, 636, 633, 637, 634, 639, 640, 643, 636, + 635, 641, 643, 637, 642, 639, 641, 642, 644, 640, + 645, 646, 648, 647, 649, 649, 650, 650, 654, 645, + 651, 651, 644, 652, 655, 650, 646, 647, 656, 658, + 655, 657, 652, 648, 659, 657, 660, 654, 661, 662, + 664, 658, 663, 665, 661, 666, 669, 662, 656, 663, - 673, 664, 661, 672, 656, 664, 673, 669, 664, 663, - 662, 674, 666, 675, 678, 664, 679, 675, 664, 676, - 676, 677, 677, 680, 681, 678, 682, 685, 684, 687, - 698, 688, 682, 684, 688, 686, 690, 680, 689, 689, - 691, 691, 698, 690, 681, 683, 683, 683, 685, 683, - 692, 699, 683, 686, 687, 693, 693, 683, 697, 695, - 697, 694, 695, 683, 683, 692, 694, 696, 701, 700, - 699, 702, 696, 700, 703, 704, 704, 705, 708, 706, - 707, 707, 703, 709, 710, 711, 713, 713, 701, 712, - 702, 711, 705, 706, 712, 709, 708, 714, 750, 716, + 672, 667, 687, 675, 660, 677, 667, 687, 664, 659, + 667, 669, 675, 667, 682, 666, 676, 672, 665, 683, + 667, 677, 676, 667, 678, 679, 679, 681, 678, 680, + 680, 684, 682, 683, 685, 690, 688, 689, 681, 691, + 685, 693, 691, 692, 692, 694, 694, 695, 693, 696, + 696, 684, 686, 686, 686, 689, 686, 688, 697, 686, + 690, 699, 695, 697, 686, 698, 699, 700, 698, 700, + 686, 686, 701, 702, 703, 704, 708, 705, 703, 706, + 707, 707, 711, 709, 701, 710, 710, 706, 713, 712, + 730, 708, 702, 714, 730, 704, 705, 709, 715, 714, - 750, 717, 714, 714, 716, 718, 710, 717, 719, 720, - 722, 718, 723, 719, 721, 720, 722, 721, 724, 725, - 723, 727, 726, 728, 729, 729, 724, 726, 727, 730, - 732, 731, 733, 742, 735, 736, 732, 725, 730, 731, - 737, 738, 728, 735, 736, 737, 739, 740, 741, 739, - 738, 733, 740, 743, 743, 744, 745, 746, 742, 747, - 748, 752, 741, 748, 751, 751, 746, 753, 754, 757, - 744, 748, 753, 755, 756, 745, 758, 759, 760, 762, - 761, 763, 752, 747, 761, 767, 759, 53, 768, 754, - 765, 757, 764, 755, 756, 766, 758, 762, 764, 765, + 711, 712, 717, 715, 716, 716, 719, 717, 717, 720, + 713, 719, 721, 54, 722, 720, 723, 724, 721, 722, + 724, 725, 723, 726, 727, 728, 732, 725, 729, 731, + 734, 726, 727, 729, 733, 733, 731, 737, 735, 734, + 739, 736, 740, 728, 745, 732, 735, 736, 741, 739, + 742, 740, 743, 741, 746, 743, 737, 744, 745, 742, + 747, 747, 744, 748, 749, 750, 751, 756, 754, 752, + 754, 758, 752, 759, 750, 755, 755, 757, 748, 746, + 752, 760, 757, 749, 761, 762, 763, 764, 756, 766, + 751, 768, 758, 759, 765, 763, 767, 768, 765, 769, - 763, 760, 768, 769, 767, 770, 771, 766, 773, 769, - 775, 771, 772, 772, 774, 777, 776, 778, 779, 770, - 780, 781, 782, 774, 776, 783, 784, 781, 773, 787, - 775, 783, 785, 787, 788, 777, 782, 779, 785, 778, - 780, 786, 789, 790, 791, 793, 784, 786, 790, 792, - 792, 793, 794, 788, 789, 794, 795, 796, 797, 798, - 799, 799, 789, 800, 797, 791, 801, 802, 802, 803, - 796, 801, 804, 806, 795, 809, 804, 805, 805, 798, - 807, 800, 808, 811, 803, 812, 814, 808, 815, 817, - 817, 821, 818, 819, 809, 806, 818, 820, 820, 812, + 770, 760, 771, 772, 774, 762, 761, 766, 769, 775, + 764, 777, 770, 773, 775, 767, 778, 772, 774, 773, + 779, 771, 776, 776, 780, 778, 781, 782, 783, 785, + 784, 777, 780, 787, 786, 785, 788, 789, 790, 787, + 779, 791, 792, 789, 790, 791, 781, 783, 786, 782, + 784, 793, 794, 795, 796, 796, 788, 794, 797, 798, + 799, 792, 798, 793, 797, 802, 800, 801, 803, 803, + 804, 793, 805, 801, 795, 806, 806, 805, 799, 800, + 807, 810, 808, 809, 809, 802, 808, 811, 804, 812, + 813, 815, 816, 818, 812, 807, 819, 821, 821, 823, - 807, 822, 823, 48, 824, 822, 814, 811, 819, 815, - 816, 839, 839, 816, 826, 816, 821, 823, 824, 816, - 825, 816, 828, 829, 827, 825, 816, 829, 826, 827, - 827, 816, 830, 831, 832, 833, 828, 834, 831, 832, - 835, 842, 843, 43, 836, 837, 838, 830, 831, 833, - 836, 837, 838, 841, 835, 840, 844, 846, 834, 841, - 840, 843, 847, 842, 848, 849, 854, 847, 851, 846, - 850, 850, 852, 851, 844, 845, 845, 849, 848, 853, - 852, 845, 14, 845, 855, 854, 856, 856, 857, 845, - 859, 861, 857, 853, 845, 845, 859, 860, 862, 863, + 822, 824, 824, 810, 822, 825, 816, 811, 826, 813, + 827, 829, 826, 818, 823, 815, 829, 819, 820, 828, + 834, 820, 830, 820, 832, 827, 831, 820, 838, 820, + 825, 831, 831, 828, 820, 834, 830, 833, 832, 820, + 835, 833, 836, 837, 839, 835, 840, 836, 841, 838, + 842, 846, 840, 847, 841, 835, 842, 837, 839, 843, + 843, 844, 845, 848, 850, 851, 844, 853, 845, 856, + 851, 852, 847, 846, 854, 854, 850, 856, 857, 853, + 858, 848, 849, 849, 855, 852, 859, 861, 849, 855, + 849, 861, 857, 860, 860, 864, 849, 863, 864, 858, - 860, 845, 864, 855, 865, 863, 866, 864, 867, 868, - 861, 862, 869, 870, 871, 866, 872, 867, 869, 873, - 874, 872, 870, 865, 875, 868, 876, 877, 878, 879, - 880, 885, 883, 871, 874, 879, 877, 878, 876, 873, - 881, 886, 888, 887, 875, 885, 881, 880, 883, 889, - 890, 894, 891, 892, 893, 897, 888, 891, 892, 893, - 894, 886, 887, 895, 895, 890, 896, 889, 897, 899, - 900, 904, 896, 901, 901, 900, 900, 901, 902, 903, - 905, 902, 906, 908, 907, 899, 909, 911, 910, 908, - 911, 904, 912, 903, 910, 906, 913, 914, 905, 907, + 865, 849, 849, 863, 866, 859, 867, 869, 849, 868, + 873, 870, 867, 871, 868, 872, 873, 866, 874, 865, + 870, 875, 871, 876, 877, 878, 869, 874, 876, 879, + 880, 872, 881, 884, 882, 890, 893, 887, 891, 878, + 875, 881, 880, 882, 877, 883, 885, 889, 892, 879, + 884, 883, 885, 887, 893, 890, 894, 891, 895, 896, + 897, 889, 892, 895, 896, 897, 898, 899, 899, 902, + 900, 894, 901, 904, 905, 898, 900, 908, 901, 905, + 905, 909, 902, 906, 906, 907, 910, 906, 907, 904, + 911, 908, 912, 913, 914, 916, 915, 917, 916, 913, - 915, 913, 914, 916, 917, 918, 909, 921, 916, 917, - 924, 924, 920, 912, 922, 923, 915, 918, 920, 925, - 922, 923, 926, 921, 927, 928, 928, 927, 925, 929, - 930, 931, 932, 933, 936, 932, 934, 935, 939, 936, - 926, 941, 934, 935, 939, 937, 933, 929, 938, 930, - 937, 931, 942, 938, 943, 946, 944, 945, 945, 941, - 943, 944, 947, 948, 946, 949, 950, 951, 949, 950, - 952, 947, 942, 953, 954, 957, 955, 956, 951, 958, - 960, 948, 955, 956, 958, 953, 959, 959, 952, 961, - 957, 963, 962, 954, 964, 963, 965, 966, 967, 960, + 918, 909, 915, 911, 910, 918, 919, 912, 920, 923, + 921, 919, 922, 925, 914, 921, 926, 922, 917, 925, + 927, 923, 928, 931, 920, 930, 927, 934, 928, 929, + 929, 935, 926, 932, 930, 936, 932, 933, 933, 937, + 938, 931, 937, 939, 53, 934, 940, 946, 947, 939, + 935, 941, 940, 938, 942, 936, 941, 943, 944, 942, + 948, 953, 943, 957, 944, 946, 948, 949, 947, 950, + 950, 951, 949, 952, 954, 955, 956, 954, 955, 953, + 951, 957, 952, 958, 959, 960, 961, 956, 963, 962, + 965, 960, 961, 963, 966, 958, 964, 964, 967, 969, - 969, 970, 970, 961, 962, 965, 972, 973, 975, 974, - 977, 977, 964, 975, 978, 976, 966, 993, 993, 969, - 972, 974, 973, 967, 976, 979, 980, 982, 981, 982, - 983, 979, 980, 981, 978, 983, 984, 985, 986, 987, - 988, 989, 990, 986, 991, 13, 994, 995, 989, 996, - 984, 985, 997, 998, 987, 1003, 999, 990, 997, 988, - 994, 999, 1003, 991, 996, 995, 1001, 1001, 1004, 1002, - 999, 1006, 999, 998, 1002, 999, 1005, 1007, 1008, 1005, - 1009, 1011, 1004, 1008, 1012, 1010, 1007, 1014, 1014, 1006, - 1010, 1015, 1011, 1016, 1017, 1018, 1015, 1019, 1016, 1009, + 971, 968, 970, 959, 962, 968, 972, 974, 966, 965, + 967, 970, 975, 975, 977, 978, 980, 969, 981, 971, + 979, 980, 982, 982, 983, 48, 974, 981, 977, 984, + 978, 972, 979, 985, 989, 984, 986, 988, 987, 985, + 987, 986, 988, 990, 983, 991, 992, 993, 989, 994, + 991, 996, 995, 998, 998, 999, 994, 990, 1000, 1001, + 1003, 992, 1002, 1006, 1006, 1009, 993, 995, 1002, 999, + 996, 1011, 1004, 1007, 1001, 1008, 1000, 1004, 1007, 1009, + 1003, 1010, 1008, 1012, 1010, 1013, 1004, 1014, 1004, 1011, + 1013, 1004, 1012, 1015, 1016, 1017, 1019, 1019, 1015, 1020, - 1018, 1019, 1020, 1012, 1021, 1022, 1023, 1025, 1026, 1024, - 1028, 1020, 1027, 1029, 1017, 1026, 1032, 1030, 1033, 1021, - 1022, 1024, 1025, 1034, 1027, 1023, 1031, 1035, 1038, 1028, - 1040, 1032, 1031, 1037, 1029, 1030, 1035, 1039, 1033, 1037, - 1042, 1041, 1038, 1034, 1044, 1039, 1041, 1045, 1043, 1046, - 1040, 1050, 1042, 1043, 1043, 1047, 1047, 1049, 0, 1051, - 1050, 1045, 1046, 1044, 1048, 1051, 1052, 1052, 1055, 1048, - 1049, 1053, 1048, 1048, 1055, 1054, 1053, 1048, 1058, 1058, - 1056, 1057, 1059, 1048, 1054, 1056, 1057, 1048, 1060, 1060, - 1061, 1062, 1063, 1061, 1065, 1061, 1064, 1066, 1067, 1068, + 1022, 1025, 1021, 1023, 1020, 1016, 1014, 1021, 1023, 1024, + 1025, 1026, 1027, 1024, 1017, 1028, 1029, 1030, 1031, 1032, + 1022, 1033, 1034, 1035, 1036, 1031, 1026, 1027, 1029, 1037, + 1036, 1032, 1030, 1038, 1028, 1039, 1040, 1043, 1044, 1045, + 1033, 1035, 1042, 1034, 1037, 1040, 1044, 1046, 1042, 1047, + 1049, 1043, 1046, 1038, 1050, 1039, 1082, 1048, 1051, 1045, + 1054, 1047, 1048, 1048, 1052, 1052, 1055, 1082, 1050, 1049, + 1056, 1051, 1053, 1054, 1059, 1055, 1056, 1053, 1057, 1057, + 1053, 1053, 1058, 1059, 1060, 1053, 1064, 1058, 1061, 1062, + 1060, 1053, 1067, 1061, 1062, 1053, 1063, 1063, 1065, 1065, - 1069, 1070, 1066, 1059, 1071, 1064, 1069, 1070, 1080, 1071, - 1063, 1062, 1067, 1073, 1065, 1072, 1075, 1068, 1075, 1072, - 1074, 1074, 1073, 1076, 1078, 1079, 1080, 1073, 1078, 1073, - 1081, 1073, 1082, 1073, 1076, 1083, 1084, 1082, 1082, 1081, - 1079, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1093, - 1094, 1092, 1086, 1091, 1089, 1095, 1085, 1083, 1093, 1097, - 1097, 1090, 1096, 1087, 1088, 1092, 1098, 1096, 1094, 1099, - 1099, 1100, 1102, 1100, 1103, 1102, 1104, 1105, 1107, 1103, - 1095, 1098, 1106, 1106, 1108, 1108, 1105, 1109, 1109, 1110, - 1111, 1112, 1113, 1113, 1110, 1104, 1114, 1115, 1107, 1116, + 1066, 1068, 1069, 1066, 1070, 1066, 1072, 1064, 1071, 1073, + 1074, 1069, 1067, 1071, 1077, 1075, 1074, 1076, 1077, 1068, + 1072, 1075, 1076, 1078, 1070, 1079, 1086, 1073, 1080, 1080, + 1081, 1084, 1081, 1085, 1079, 1084, 1078, 1087, 1089, 1079, + 43, 1079, 1091, 1079, 1086, 1079, 1087, 1088, 1085, 1090, + 1092, 1093, 1088, 1088, 1090, 1094, 1091, 1095, 1096, 1092, + 1089, 1097, 1098, 1100, 1099, 1095, 1097, 1101, 1103, 1103, + 1093, 1104, 1096, 1099, 1094, 1102, 1098, 1105, 1105, 1110, + 1102, 1100, 1106, 1113, 1106, 1108, 1104, 1111, 1108, 1109, + 1112, 1112, 1101, 1117, 1109, 1118, 1111, 1120, 1110, 1114, - 1115, 1117, 1120, 1119, 1118, 1119, 1117, 1122, 1123, 1124, - 1122, 1111, 1112, 1118, 1124, 1131, 1114, 1125, 1126, 1116, - 1120, 0, 1125, 1123, 1127, 1128, 1126, 1129, 1129, 1127, - 1128, 1130, 1132, 1131, 1133, 1134, 1130, 1136, 1132, 1137, - 1139, 1133, 1138, 1136, 1140, 1137, 1139, 1138, 1134, 1141, - 1142, 1143, 1143, 1140, 1144, 1146, 1147, 1148, 1149, 1150, - 1152, 1142, 1153, 1148, 1149, 1150, 1152, 1154, 1141, 1155, - 1156, 1157, 1158, 1158, 1144, 1146, 1153, 1159, 1160, 1147, - 1161, 1155, 1153, 1162, 1156, 1163, 1163, 1154, 1162, 1157, - 1164, 1165, 1167, 1170, 1168, 1172, 1165, 1159, 1161, 1168, + 1114, 1115, 1115, 1113, 1116, 1119, 1119, 1121, 1122, 1116, + 1121, 1124, 1126, 1123, 1117, 1137, 1118, 1120, 1123, 1125, + 1124, 1125, 1128, 1129, 1130, 1128, 1131, 1132, 1122, 1130, + 1126, 1131, 1133, 1137, 1134, 1132, 14, 1133, 1129, 1134, + 1135, 1135, 1136, 1138, 1139, 1140, 1142, 1136, 1143, 1138, + 1144, 1139, 1142, 1145, 1143, 1144, 1146, 1147, 1140, 1145, + 1148, 1149, 1149, 1150, 1152, 1146, 1153, 1154, 1155, 1156, + 1160, 1148, 1158, 1154, 1155, 1156, 1147, 1159, 1158, 1162, + 1161, 1163, 1165, 1150, 1152, 1164, 1164, 1166, 1167, 1153, + 1160, 1159, 1161, 1162, 1170, 1168, 1171, 1159, 1175, 1163, - 1168, 1169, 1170, 1160, 1171, 1173, 1174, 1182, 1177, 1172, - 1175, 1167, 1171, 1164, 1176, 1175, 1176, 1178, 1175, 1169, - 1173, 1174, 1177, 1178, 1174, 1179, 1180, 1181, 1189, 1179, - 1183, 1184, 1185, 1182, 1186, 1187, 1184, 1180, 1190, 1186, - 1191, 1193, 1189, 1192, 1192, 1193, 1181, 1194, 1183, 1195, - 1185, 1196, 1197, 1198, 1200, 1187, 1190, 1196, 1191, 1199, - 1201, 1202, 1203, 1204, 1197, 1194, 1205, 1203, 1195, 1200, - 1204, 1205, 1198, 1199, 1206, 1201, 1207, 1208, 1208, 1209, - 1202, 1210, 1211, 1212, 1213, 1207, 0, 1210, 1212, 1214, - 1213, 1221, 1206, 1222, 1209, 1214, 1215, 1215, 1216, 1216, + 1168, 1171, 1165, 1169, 1169, 1173, 1167, 1177, 1174, 1176, + 13, 1178, 1166, 1174, 1174, 1177, 1175, 1170, 1176, 1179, + 1180, 1181, 1183, 1188, 1173, 1178, 1181, 1184, 1182, 1181, + 1182, 1186, 1187, 1184, 1179, 1180, 1183, 1185, 1180, 1189, + 1190, 1185, 1186, 1191, 1193, 1190, 1195, 1192, 1196, 1188, + 1197, 1187, 1192, 1198, 1198, 1199, 1200, 1189, 1201, 1199, + 1195, 1191, 1204, 1202, 1193, 1206, 1196, 1203, 1197, 1202, + 1205, 1207, 1208, 1209, 1200, 1210, 1212, 1201, 1209, 1203, + 1206, 1204, 1210, 1211, 1205, 1215, 1207, 1213, 1211, 1214, + 1214, 1208, 1216, 1217, 1212, 1219, 1213, 1218, 1216, 1220, - 1218, 1218, 1219, 1211, 1220, 1223, 1219, 1222, 1224, 1221, - 1225, 1225, 1226, 1220, 1227, 1224, 1228, 1229, 1230, 1231, - 1223, 1228, 1227, 1232, 1231, 1231, 1233, 1237, 1232, 1232, - 1235, 1229, 1226, 1234, 1234, 1236, 1237, 1230, 1238, 1239, - 1240, 1241, 1242, 1238, 1244, 1243, 1233, 1245, 1242, 1235, - 1243, 1247, 1246, 1245, 1236, 1248, 1249, 1247, 1239, 1241, - 1240, 1248, 1250, 1251, 1252, 1253, 1254, 1256, 1256, 1255, - 1244, 1246, 0, 1257, 1258, 1249, 1257, 1259, 1259, 1253, - 1260, 1250, 1251, 1252, 1255, 1260, 1258, 1254, 1261, 1262, - 1263, 1264, 1261, 1267, 1265, 1268, 1265, 1269, 1267, 1263, + 1215, 1219, 1218, 1221, 1221, 1220, 1222, 1222, 1224, 1224, + 1226, 1225, 1227, 1228, 1217, 1225, 1229, 1230, 1232, 1226, + 1231, 1231, 1235, 1234, 1230, 1233, 1236, 1228, 1234, 1237, + 1227, 1229, 1239, 1233, 1237, 1237, 1235, 1238, 1232, 1240, + 1240, 1241, 1238, 1238, 1242, 1236, 1243, 1245, 1244, 1246, + 1247, 1248, 1239, 1244, 1249, 1243, 1250, 1248, 1251, 1249, + 1241, 1252, 1255, 1242, 1251, 1253, 1245, 1254, 1247, 1246, + 1256, 1253, 1257, 1254, 1258, 1259, 1260, 1261, 1263, 1263, + 1252, 1255, 1250, 1264, 1262, 1265, 1264, 1266, 1266, 1256, + 1260, 1257, 1268, 1258, 1259, 1267, 1268, 1265, 1261, 1262, - 1265, 1276, 1262, 1270, 1264, 1271, 1271, 1272, 1277, 1273, - 1268, 1274, 1272, 1265, 1273, 1274, 1275, 1269, 1278, 1270, - 1275, 1276, 1279, 1280, 1280, 1282, 1277, 1284, 1279, 1285, - 1286, 1286, 1288, 1287, 1285, 1290, 1290, 1292, 1278, 1287, - 1292, 1293, 1293, 1282, 1294, 1295, 1297, 1298, 1284, 1297, - 1299, 1301, 1288, 1300, 1300, 1302, 1303, 1304, 1305, 1299, - 1294, 1295, 1304, 1306, 1306, 1307, 1301, 1298, 1309, 1308, - 1310, 1310, 1305, 1311, 1312, 1303, 1302, 1313, 1317, 1314, - 1315, 1315, 1313, 1307, 1308, 1316, 1319, 1311, 1320, 1316, - 1318, 1318, 1312, 1309, 1314, 1322, 1321, 1323, 1317, 1320, + 1267, 1269, 1270, 1271, 1272, 1275, 1272, 1274, 1276, 1277, + 1272, 1270, 1274, 0, 1269, 1283, 1271, 1278, 1278, 1279, + 1275, 1280, 1284, 1272, 1279, 1277, 1280, 1281, 1276, 1282, + 1285, 1281, 1286, 1282, 1289, 1283, 1287, 1287, 1286, 1291, + 1284, 1292, 1293, 1293, 1295, 1294, 1292, 1297, 1297, 1301, + 1285, 1294, 1289, 1299, 1300, 1300, 1299, 1302, 1304, 1305, + 1291, 1304, 1306, 1308, 1295, 1301, 1307, 1307, 1309, 1310, + 1311, 1306, 1312, 1302, 1314, 1311, 1313, 1313, 1308, 1305, + 1315, 1316, 1317, 1317, 1318, 1319, 1312, 1321, 1310, 1309, + 1324, 1320, 1314, 1322, 1322, 1315, 1320, 1323, 1318, 1325, - 1321, 1326, 1323, 1325, 1325, 1328, 1327, 1329, 1319, 1330, - 1331, 1331, 1332, 1333, 1322, 1334, 1337, 1332, 1335, 1326, - 1327, 1329, 1341, 1336, 1328, 1328, 1344, 1335, 1336, 1338, - 1346, 1338, 1339, 1333, 1330, 1334, 1337, 1339, 1340, 1342, - 1344, 1350, 1341, 1354, 1340, 1342, 1345, 1345, 1347, 1346, - 1349, 1351, 1351, 1353, 1347, 1349, 1352, 1352, 1355, 1356, - 1358, 1354, 1356, 1357, 1357, 1350, 1359, 1353, 1365, 1361, - 1363, 1360, 1358, 1355, 1360, 1361, 1362, 1360, 1364, 1363, - 1375, 1362, 1366, 1364, 1367, 1366, 1359, 1368, 1373, 1360, - 1367, 1374, 1368, 1365, 1369, 1369, 1370, 1370, 1371, 1375, + 1325, 1323, 1321, 1319, 1326, 1327, 1316, 1328, 1329, 1330, + 1324, 1328, 1332, 1332, 1330, 1333, 1327, 1334, 1335, 1337, + 1336, 1338, 1338, 1339, 0, 1340, 1326, 1329, 1339, 1341, + 1342, 1334, 1344, 1333, 1336, 1343, 1348, 1335, 1335, 1342, + 1343, 1345, 1346, 1345, 1337, 1340, 1351, 1346, 1347, 1341, + 1353, 1349, 1344, 1357, 1347, 1354, 1348, 1349, 1352, 1352, + 1351, 1354, 1356, 1358, 1358, 1359, 1359, 1356, 1360, 1353, + 1361, 1362, 1363, 1364, 1364, 1363, 1366, 1357, 1365, 1368, + 1372, 1367, 1360, 1370, 1367, 1368, 1362, 1367, 1361, 1369, + 1365, 0, 1370, 1371, 1369, 1374, 1366, 1373, 1371, 1367, - 1372, 1373, 1376, 1377, 1371, 1372, 1377, 1378, 1379, 1374, - 1380, 1381, 1382, 1378, 1379, 1380, 1383, 1381, 1384, 1384, - 1385, 1383, 1376, 1386, 1387, 1385, 1388, 1391, 1389, 1390, - 1393, 1394, 1392, 1395, 1396, 1382, 1393, 1397, 1405, 1391, - 1400, 1386, 1389, 1390, 1387, 1392, 1388, 1401, 1396, 1399, - 1399, 1394, 1401, 1395, 1402, 1402, 1403, 1406, 1397, 1404, - 1400, 1407, 1405, 1408, 1411, 1409, 1413, 1410, 1415, 0, - 1407, 1403, 1409, 1404, 1416, 1406, 1410, 1416, 1408, 1410, - 1411, 1413, 1417, 1417, 1418, 1418, 1413, 1419, 1420, 1421, - 1422, 1422, 1421, 1415, 1423, 1424, 1425, 1426, 1427, 1419, + 1373, 1374, 1375, 1376, 1376, 1372, 1378, 1375, 1377, 1377, + 1379, 1380, 1378, 1381, 1382, 1379, 1383, 1384, 1387, 1385, + 1384, 1386, 1388, 1387, 1380, 1385, 1389, 1386, 1388, 1390, + 1392, 1381, 1393, 1382, 1390, 1392, 1383, 1391, 1391, 1394, + 1395, 1396, 1397, 1401, 1402, 1398, 1400, 1404, 1399, 1389, + 1393, 1403, 1400, 1406, 1406, 1396, 1397, 1398, 1407, 1394, + 1395, 1399, 1408, 1401, 1402, 1403, 1410, 1408, 1404, 1409, + 1409, 1411, 1412, 1413, 1414, 1415, 1422, 1416, 1407, 1418, + 1417, 1410, 1420, 1414, 1416, 1411, 1424, 1424, 1427, 1417, + 1415, 1413, 1417, 1425, 1425, 1418, 1412, 1420, 1426, 1430, - 1428, 1425, 1426, 1429, 1430, 1433, 1420, 1423, 1435, 1431, - 1432, 1433, 1429, 1436, 1424, 1437, 1428, 1427, 1431, 1432, - 1438, 1431, 1439, 1430, 1434, 1434, 1436, 1440, 1435, 1442, - 1443, 1444, 1444, 1437, 1438, 1445, 1446, 1447, 1439, 1440, - 1448, 1448, 1447, 1450, 1449, 1446, 1451, 1452, 1443, 1455, - 1457, 1445, 1453, 1449, 1442, 1448, 1449, 1453, 1453, 1460, - 1456, 1450, 1464, 1455, 1460, 1452, 1456, 1451, 1457, 1458, - 1458, 1459, 1461, 1462, 1465, 1466, 1467, 1459, 1461, 1462, - 1473, 1466, 1464, 1468, 1469, 1471, 1468, 1474, 1465, 1467, - 1469, 1476, 1468, 1471, 1475, 1477, 1478, 1479, 1480, 1473, + 1423, 1422, 1420, 1423, 1428, 1431, 1427, 1428, 1429, 1429, + 1426, 1432, 1430, 1433, 1434, 1435, 1432, 1436, 1433, 1437, + 1438, 1439, 1440, 1445, 1431, 1443, 1436, 1444, 1440, 1438, + 1439, 1435, 1438, 1434, 1441, 1441, 1442, 1446, 1437, 1447, + 1444, 1445, 1448, 1442, 1450, 1443, 1451, 1452, 1452, 1453, + 1454, 1446, 1455, 1458, 1448, 1447, 1459, 1455, 1457, 1454, + 1456, 1456, 1460, 1465, 1451, 1453, 0, 1457, 1461, 1450, + 1457, 1458, 1463, 1461, 1461, 1456, 1464, 1459, 1466, 1466, + 1460, 1465, 1464, 1467, 1472, 1468, 1463, 1469, 1470, 1467, + 1468, 1473, 1474, 1469, 1470, 1475, 1477, 1476, 1474, 1479, - 1476, 1482, 1475, 1481, 1481, 1484, 1474, 1482, 1477, 1478, - 1483, 1479, 1480, 1485, 1486, 1487, 1483, 1488, 1484, 1490, - 1489, 1491, 1492, 1494, 1494, 1481, 1489, 1495, 0, 1501, - 1488, 1496, 1486, 1485, 1487, 1496, 1505, 1491, 1497, 1498, - 1492, 1490, 1500, 1497, 1498, 1499, 1503, 1495, 1504, 1504, - 1499, 1500, 1501, 1506, 1507, 1505, 1508, 1508, 1509, 1510, - 1513, 1503, 1511, 1512, 1514, 1506, 1510, 1517, 1516, 1524, - 1515, 1518, 1509, 1507, 1511, 1512, 1515, 1518, 1524, 1513, - 1516, 1519, 1519, 1520, 1514, 1517, 1520, 1521, 1521, 1523, - 1525, 1526, 1526, 1527, 1523, 1528, 1525, 1528, 1529, 1530, + 1476, 1481, 1477, 1482, 1472, 1473, 1476, 1479, 1475, 1483, + 1484, 1485, 1486, 1487, 1488, 1489, 1489, 1483, 1492, 1484, + 1481, 1493, 1482, 1490, 1485, 1486, 1491, 1487, 1488, 1490, + 1494, 1492, 1491, 1495, 1496, 1498, 1497, 1489, 1499, 1503, + 1500, 1493, 1497, 1502, 1502, 1504, 1505, 1496, 1494, 1504, + 1506, 1505, 1495, 1508, 1499, 1506, 1507, 1498, 1500, 1503, + 1509, 1507, 1508, 1511, 1512, 1512, 1513, 1514, 1515, 1516, + 1516, 1521, 1517, 1518, 1522, 1523, 1519, 1520, 1511, 1514, + 1518, 1523, 1525, 1509, 1524, 1513, 1517, 1515, 1519, 1520, + 1521, 1526, 1527, 1527, 1522, 1528, 1524, 1526, 1528, 1531, - 1531, 1529, 1532, 1533, 1534, 1527, 1535, 1538, 1539, 1534, - 1537, 1536, 1538, 1540, 1541, 1535, 1544, 1539, 1543, 1530, - 1532, 1533, 1531, 1536, 1543, 1537, 1542, 1542, 1545, 1541, - 1539, 1547, 1546, 1540, 1548, 1553, 1548, 1544, 1549, 1550, - 1550, 1551, 1551, 1552, 1552, 1554, 1554, 1545, 1546, 1555, - 1555, 1547, 1549, 1556, 1549, 1553, 1557, 1558, 1558, 1559, - 1560, 1561, 1563, 1559, 1561, 1564, 1560, 1565, 1563, 1566, - 1568, 1568, 1567, 1565, 1556, 1567, 1570, 1557, 1569, 1569, - 1572, 1573, 1570, 1564, 1571, 1574, 1575, 1577, 1578, 1581, - 1585, 1574, 1577, 1577, 1566, 1584, 1571, 1571, 1571, 1580, + 1525, 1529, 1529, 1532, 1531, 1533, 1534, 1534, 1535, 1538, + 1539, 1533, 1532, 1536, 1537, 1536, 1540, 1537, 1541, 1542, + 1535, 1543, 1545, 1544, 1542, 1548, 1546, 1552, 1549, 1538, + 1543, 1546, 1539, 1547, 1540, 1544, 1541, 1545, 1550, 1550, + 1551, 1553, 1547, 1549, 1555, 1548, 1551, 1554, 1552, 1556, + 1561, 1556, 1557, 1558, 1558, 1547, 1559, 1559, 1560, 1560, + 1553, 1562, 1562, 1554, 1555, 1564, 1557, 1565, 1557, 1572, + 1561, 1563, 1563, 1566, 1566, 1567, 1568, 1569, 1571, 1567, + 1569, 1574, 1568, 1573, 1571, 1579, 1564, 1572, 1565, 1573, + 1575, 1576, 1576, 1575, 1577, 1577, 1578, 1579, 1579, 1579, - 1572, 1573, 1578, 1571, 1581, 1579, 1575, 1579, 1582, 1583, - 1580, 1585, 1586, 1586, 1582, 1584, 1587, 1589, 1583, 1588, - 1588, 1590, 1591, 1591, 1592, 1592, 1593, 1596, 1596, 1597, - 1598, 1600, 1601, 1603, 1603, 1602, 1604, 1589, 1606, 1598, - 1600, 1602, 1587, 1590, 1605, 1606, 1593, 1607, 1608, 1609, - 1609, 1610, 1611, 1601, 1597, 1613, 1607, 1604, 1614, 1605, - 1613, 1615, 1616, 1622, 1614, 1617, 1618, 1623, 1611, 1616, - 1621, 1617, 1618, 1620, 1608, 1619, 1619, 1610, 1620, 1621, - 1624, 1615, 1625, 1622, 1626, 1625, 1623, 1627, 1628, 1628, - 1629, 1630, 1624, 1631, 1632, 1634, 1629, 1635, 1632, 0, + 1580, 1581, 1578, 1582, 1579, 1583, 1574, 1585, 1586, 1582, + 1591, 1592, 1585, 1585, 1587, 1588, 1587, 1589, 1590, 1591, + 1580, 1581, 1586, 1593, 1590, 1583, 1588, 1594, 1594, 1595, + 1597, 1592, 1589, 1596, 1596, 1598, 1599, 1599, 1600, 1600, + 1601, 1604, 1604, 1605, 1593, 1606, 1609, 1608, 1611, 1611, + 1597, 1612, 1610, 1616, 1606, 1595, 1608, 1598, 1610, 1613, + 1601, 1615, 1614, 1617, 1617, 1618, 1619, 1609, 1605, 1614, + 1615, 1621, 1612, 1622, 1613, 1623, 1624, 1621, 1622, 1616, + 1625, 1623, 1619, 1626, 1627, 1628, 1628, 1625, 1629, 1626, + 1627, 1618, 1630, 1629, 1631, 1633, 1624, 1632, 1636, 1634, - 1638, 1639, 1626, 1636, 1640, 1639, 1642, 1642, 1631, 1646, - 1640, 1630, 1641, 1627, 1632, 1634, 1635, 1644, 1636, 1638, - 1643, 1641, 1645, 1645, 1643, 1647, 1648, 1649, 1644, 1650, - 1646, 1651, 1649, 1644, 1652, 1653, 1654, 1655, 1655, 1647, - 1652, 1654, 1656, 1656, 1657, 1648, 1659, 1660, 1657, 1650, - 1653, 1651, 1661, 1662, 1662, 1659, 1663, 1663, 1660, 1664, - 1665, 1666, 1667, 1660, 1664, 1664, 1665, 1666, 1668, 1669, - 1670, 1672, 1661, 1668, 1673, 1674, 1670, 1675, 1673, 1676, - 1678, 1669, 1677, 1672, 1679, 1676, 1678, 1674, 1667, 1681, - 1682, 1685, 1683, 1689, 1685, 1692, 1679, 1683, 1686, 1686, + 1635, 1630, 1634, 1637, 1637, 1638, 1639, 1633, 1640, 1641, + 1643, 1638, 1644, 1641, 1631, 1647, 1632, 1645, 1635, 1651, + 1651, 1648, 1649, 1640, 1636, 1648, 1639, 1650, 1649, 1641, + 1643, 1644, 1645, 1652, 1647, 1653, 1650, 1652, 1654, 1654, + 1655, 1656, 1658, 1657, 1659, 1660, 1653, 1658, 1661, 1664, + 1664, 1653, 1662, 1663, 1661, 1656, 1665, 1665, 1663, 1666, + 1668, 1655, 1657, 1666, 1659, 1660, 1669, 1662, 1670, 1668, + 1671, 1671, 1672, 1672, 1673, 1674, 1676, 1669, 1675, 1673, + 1673, 1674, 1669, 1678, 1675, 1677, 1679, 1681, 1670, 1682, + 1677, 1683, 1679, 1682, 1684, 1678, 1686, 1688, 1685, 1681, - 1692, 1681, 1675, 0, 1677, 1687, 1687, 1688, 1688, 1682, - 1690, 1691, 1693, 1689, 1694, 1696, 1690, 1691, 1693, 1698, - 1696, 1699, 1698, 1694, 1700, 1700, 1702, 1703, 1706, 1704, - 1705, 1705, 1710, 1699, 1704, 1707, 1708, 1706, 1702, 1703, - 1707, 1708, 1709, 1709, 1711, 1712, 1713, 1714, 1717, 1715, - 1716, 1714, 1710, 1711, 1715, 1720, 1716, 1719, 1719, 1721, - 1722, 1722, 1717, 1712, 1724, 1713, 1723, 1725, 1721, 1719, - 1727, 1732, 1726, 1720, 1732, 1723, 1724, 1726, 1730, 1730, - 1733, 1734, 0, 1727, 1736, 1738, 1737, 1739, 1725, 1740, - 1740, 1738, 1741, 1746, 1741, 1743, 1733, 1734, 1745, 1736, + 1687, 1690, 1676, 1683, 1685, 1691, 1687, 1692, 1694, 1688, + 1698, 1694, 1692, 1690, 1695, 1695, 1696, 1696, 1686, 1684, + 1697, 1697, 1699, 1700, 1691, 1703, 1701, 1702, 1699, 1700, + 1698, 1701, 1705, 1702, 1703, 1707, 1708, 1705, 1707, 1709, + 1709, 1711, 1712, 1715, 1713, 1714, 1714, 1719, 1708, 1713, + 1716, 1717, 1715, 1711, 1712, 1716, 1717, 1718, 1718, 1720, + 1721, 1722, 1723, 1726, 1724, 1725, 1723, 1719, 1720, 1724, + 1729, 1725, 1728, 1728, 1730, 1731, 1731, 1726, 1721, 1733, + 1722, 1732, 1734, 1730, 1728, 1736, 1741, 1735, 1729, 1741, + 1732, 1733, 1735, 1739, 1739, 1742, 1743, 0, 1736, 1745, - 1737, 1742, 1742, 1743, 1739, 1745, 1747, 1747, 1748, 1749, - 1750, 1751, 1752, 1746, 1753, 1755, 1754, 1748, 1757, 1760, - 1758, 1755, 1750, 1751, 1752, 1759, 1759, 1761, 1764, 0, - 1749, 1754, 1758, 1762, 1755, 1768, 1762, 1760, 1757, 1763, - 1753, 1766, 1772, 1767, 1763, 1767, 1766, 1761, 1764, 1769, - 1770, 1772, 1774, 1768, 1769, 1775, 1776, 1770, 1777, 1778, - 1777, 1780, 1781, 1780, 1775, 1782, 1782, 1783, 1776, 1784, - 1774, 1785, 1786, 1785, 1784, 1787, 1781, 1786, 1778, 1788, - 1787, 1789, 1790, 1792, 1791, 1795, 1793, 1858, 1790, 1791, - 1800, 1796, 1799, 1783, 1793, 1858, 1792, 1788, 1797, 1797, + 1747, 1746, 1748, 1734, 1749, 1749, 1747, 1750, 1755, 1750, + 1752, 1742, 1743, 1754, 1745, 1746, 1751, 1751, 1752, 1748, + 1754, 1756, 1756, 1757, 1758, 1759, 1760, 1761, 1755, 1762, + 1764, 1763, 1757, 1766, 1769, 1767, 1764, 1759, 1760, 1761, + 1768, 1768, 1770, 1773, 0, 1758, 1763, 1767, 1771, 1764, + 1777, 1771, 1769, 1766, 1772, 1762, 1775, 1781, 1776, 1772, + 1776, 1775, 1770, 1773, 1778, 1779, 1781, 1783, 1777, 1778, + 1784, 1785, 1779, 1786, 1787, 1786, 1789, 1790, 1789, 1784, + 1791, 1791, 1792, 1785, 1793, 1783, 1794, 1795, 1794, 1793, + 1796, 1790, 1795, 1787, 1797, 1796, 1798, 1799, 1800, 1803, - 1801, 1789, 1798, 1798, 1795, 1796, 1801, 1799, 1802, 1803, - 1800, 1803, 1804, 1802, 1805, 1805, 1809, 1806, 1807, 1807, - 1804, 1808, 1808, 1810, 1811, 1809, 1811, 1812, 1804, 1806, - 1814, 1813, 1810, 1815, 1817, 1810, 1813, 1813, 1818, 1814, - 1821, 1822, 1819, 1818, 1825, 1815, 1817, 1819, 1812, 1823, - 1824, 1824, 1826, 1821, 1828, 1827, 1845, 1829, 1823, 1833, - 1834, 1822, 1825, 1831, 1832, 1834, 1842, 1844, 1828, 1835, - 1826, 1827, 1829, 1836, 1835, 1831, 1832, 1839, 1841, 1833, - 1843, 1845, 1836, 1839, 1841, 1844, 1847, 1847, 1846, 1842, - 1848, 1849, 1849, 1850, 1851, 1843, 1839, 1846, 1851, 1848, + 1801, 1805, 1802, 0, 1800, 1801, 1809, 1803, 1792, 1806, + 1807, 1807, 1797, 1810, 1798, 1802, 1811, 1799, 1808, 1808, + 1805, 1809, 1811, 1806, 1812, 1813, 1814, 1813, 1816, 1812, + 1815, 1815, 1819, 1810, 1814, 1817, 1817, 1818, 1818, 1820, + 1816, 1819, 1814, 1821, 1822, 1821, 1824, 1823, 1820, 1825, + 1827, 1820, 1823, 1823, 1828, 1824, 1831, 1832, 1829, 1828, + 1835, 1825, 1827, 1829, 1833, 1822, 1834, 1834, 1836, 1831, + 1838, 1837, 1843, 1833, 1839, 1844, 1841, 1832, 1835, 1842, + 1844, 1852, 1853, 1855, 1838, 1845, 1836, 1837, 1841, 1839, + 1845, 1842, 1843, 1846, 1849, 1851, 1854, 1853, 1856, 1860, - 1852, 1853, 1854, 1855, 1856, 1852, 1859, 1854, 1854, 1855, - 1856, 1867, 1850, 1857, 1853, 1864, 1857, 1862, 1862, 1863, - 1863, 1865, 1865, 1867, 1864, 1868, 1859, 1866, 1866, 1869, - 1877, 1870, 1871, 1871, 1863, 1869, 1870, 1872, 1872, 1873, - 1874, 1880, 1882, 1868, 1873, 1863, 1874, 1876, 1878, 1881, - 1877, 1876, 1878, 1883, 1881, 1884, 1885, 1886, 1887, 1887, - 1884, 1889, 1891, 1888, 1890, 1882, 1880, 1888, 1883, 1890, - 1892, 1893, 1894, 1886, 1885, 1896, 1889, 1894, 1895, 1897, - 1897, 1899, 1892, 1900, 1901, 1902, 1903, 1904, 1891, 1899, - 1893, 1895, 1905, 1896, 1907, 1906, 1909, 1910, 1910, 1912, + 1849, 1851, 1846, 1858, 1852, 1857, 1857, 1856, 1855, 1859, + 1859, 1861, 1858, 1849, 1854, 1861, 1862, 1863, 1860, 1864, + 1865, 1862, 1866, 1868, 1864, 1864, 1865, 1869, 1866, 1867, + 1863, 1868, 1867, 1872, 1872, 1873, 1873, 1874, 1875, 1875, + 1876, 1876, 1877, 1879, 1878, 0, 1874, 1869, 1880, 1879, + 1873, 1881, 1881, 1880, 1877, 1882, 1882, 1887, 1883, 1884, + 1886, 1873, 1878, 1883, 1886, 1884, 1888, 1890, 1891, 1893, + 1888, 1892, 1895, 1891, 1894, 1896, 1901, 1887, 1898, 1894, + 1897, 1897, 1898, 1899, 1893, 1902, 1903, 1912, 1900, 1906, + 1895, 1896, 1890, 1900, 1892, 1904, 1905, 1902, 1899, 1910, - 1913, 1911, 1900, 1901, 1911, 1914, 1904, 1906, 1902, 1918, - 1903, 1909, 1912, 1905, 1913, 1907, 1915, 1915, 1914, 1916, - 1916, 1917, 1917, 1919, 1918, 1920, 1920, 1923, 1921, 1922, - 1922, 1926, 1923, 1925, 1927, 1928, 1919, 1921, 1925, 1931, - 1921, 1929, 1929, 1930, 1930, 1932, 1932, 1928, 1933, 1934, - 1934, 1926, 1935, 0, 1927, 1936, 1937, 1937, 1931, 1939, - 1936, 1938, 1938, 1940, 1941, 1942, 1933, 1935, 1946, 1944, - 1945, 1945, 1940, 1939, 1944, 1947, 1947, 1948, 1941, 1949, - 1950, 1951, 1951, 1950, 1942, 1949, 1953, 1946, 1952, 1952, - 1955, 1954, 1956, 1956, 1958, 1948, 1959, 1951, 1960, 1961, + 1904, 1911, 1901, 1907, 1907, 1903, 1909, 1906, 1913, 1905, + 1912, 1914, 1915, 1916, 1909, 1917, 1919, 0, 1910, 1950, + 1911, 1920, 1920, 1921, 1922, 1916, 1921, 1923, 1950, 1924, + 1914, 1919, 1913, 1915, 1925, 1925, 1917, 1922, 1926, 1926, + 1928, 1923, 1924, 1927, 1927, 1929, 1930, 1930, 1931, 1932, + 1932, 1933, 1936, 1937, 1935, 1928, 1933, 1931, 1929, 1935, + 1931, 1941, 1938, 1939, 1939, 1940, 1940, 1942, 1942, 1943, + 1944, 1944, 1936, 1937, 1938, 1945, 1946, 1947, 1947, 1949, + 1941, 1946, 1948, 1948, 1951, 1952, 1954, 1943, 1955, 1955, + 1945, 1954, 1956, 1949, 1957, 1957, 1958, 1959, 1951, 1960, - 1962, 1962, 1963, 1961, 1968, 1953, 1954, 1964, 1965, 1955, - 1967, 1967, 1970, 1960, 1958, 1971, 1972, 1972, 1969, 1959, - 1973, 1963, 1964, 1965, 1968, 1969, 1970, 1975, 1974, 1973, - 1974, 1977, 1978, 1979, 1980, 1981, 1982, 1978, 1979, 1983, - 1984, 1971, 1990, 1977, 1983, 1986, 1987, 1975, 1981, 1988, - 1986, 1987, 1989, 1994, 1991, 1995, 1992, 1982, 1989, 1980, - 1991, 1992, 1993, 1990, 1988, 1997, 1984, 1993, 1995, 1996, - 1998, 1999, 1996, 2000, 1997, 2001, 2006, 2002, 1994, 1998, - 1999, 2003, 2000, 2002, 2004, 2008, 2010, 2003, 2004, 2001, - 2009, 2009, 2010, 2012, 2008, 2014, 2006, 2011, 2011, 2017, + 1961, 1964, 1959, 1961, 1952, 1960, 1962, 1962, 1963, 1963, + 1965, 1956, 1966, 1969, 1958, 1967, 1967, 1970, 1974, 1971, + 1964, 1975, 1962, 1972, 1976, 1965, 1979, 1972, 1973, 1973, + 1981, 1966, 1982, 1969, 1971, 1986, 1975, 1974, 1980, 1976, + 1970, 1978, 1978, 1984, 1981, 1980, 1979, 1983, 1983, 1985, + 1988, 1985, 1984, 1991, 1989, 1986, 1990, 1992, 1982, 1989, + 1993, 1990, 1988, 1994, 1995, 1999, 1997, 1998, 1994, 2000, + 1992, 1997, 1998, 2001, 2003, 2000, 2002, 2005, 1991, 2003, + 1999, 1993, 2002, 2004, 2006, 2012, 2007, 2008, 2004, 2007, + 1995, 2009, 2010, 2017, 2001, 2011, 2008, 2006, 2019, 2012, - 2015, 2016, 2016, 2018, 2021, 2020, 2011, 2022, 2027, 2023, - 2042, 2014, 2018, 2012, 2017, 2012, 2015, 2020, 2028, 2026, - 2021, 2023, 2022, 2025, 2026, 2070, 2025, 2070, 2027, 2042, - 2028, 2029, 2029, 2030, 2030, 2032, 2032, 2033, 2034, 2035, - 2033, 2036, 2038, 2034, 0, 2035, 2040, 2036, 2037, 2037, - 2039, 2039, 2041, 2043, 2043, 2045, 2038, 2046, 2040, 2045, - 2046, 2047, 2047, 2048, 2049, 2050, 2041, 2051, 2048, 2052, - 2052, 2051, 2055, 2049, 2053, 2056, 2057, 2055, 2058, 2059, - 2060, 2061, 2062, 2059, 2063, 2050, 2061, 2053, 2062, 2064, - 2063, 2068, 2058, 2066, 2067, 2056, 2057, 2068, 2069, 2067, + 2009, 2010, 2005, 2013, 2011, 2014, 2015, 2019, 2023, 2013, + 2015, 2014, 2021, 2017, 2020, 2020, 2022, 2022, 2021, 2025, + 2026, 2027, 2027, 2028, 2029, 2022, 2032, 2031, 2023, 2033, + 2023, 2034, 2038, 2029, 2036, 2025, 2026, 2036, 2028, 2031, + 2037, 2039, 2032, 2034, 2033, 2037, 2040, 2040, 2041, 2041, + 2043, 2043, 2038, 2039, 2044, 2045, 2046, 2044, 2047, 2049, + 2045, 2053, 2046, 2051, 2047, 2048, 2048, 2050, 2050, 2052, + 2054, 2054, 2056, 2049, 2057, 2051, 2056, 2057, 2058, 2058, + 2053, 2059, 2060, 2052, 2061, 2062, 2059, 2063, 2063, 2062, + 2064, 2060, 2066, 2067, 2068, 2069, 2070, 2066, 2071, 2073, - 2060, 2073, 2074, 2074, 2076, 2075, 2069, 2064, 2075, 2066, - 2077, 2077, 2079, 2080, 2081, 2073, 2079, 2082, 2082, 2080, - 2083, 2086, 2086, 2088, 2090, 2095, 2081, 2091, 2094, 2083, - 2076, 2096, 2097, 2094, 2098, 2098, 2096, 2097, 2090, 2100, - 2100, 2088, 2102, 2091, 2103, 2103, 2104, 2105, 2102, 2106, - 2112, 2095, 2108, 2109, 2106, 2110, 2110, 2113, 2114, 2112, - 2115, 2118, 2104, 2113, 2119, 2109, 2117, 2117, 2125, 2105, - 2125, 2108, 2121, 2121, 2123, 2115, 2114, 2122, 2122, 2123, - 2118, 2124, 2119, 2126, 2127, 2128, 2124, 2129, 2130, 2130, - 2131, 2131, 2129, 2132, 2132, 2133, 2133, 2126, 2127, 2134, + 2070, 2072, 2074, 2064, 2061, 2073, 2072, 2075, 2074, 2069, + 2077, 2078, 2080, 2067, 2068, 2079, 2078, 2081, 2071, 2081, + 2080, 2079, 2084, 2085, 2085, 2075, 2077, 2086, 2087, 2090, + 2086, 2088, 2088, 2090, 2091, 2092, 2084, 2093, 2093, 2094, + 2091, 2097, 2097, 2099, 2101, 2105, 2102, 2092, 2094, 2106, + 2105, 2107, 2108, 2114, 2087, 2117, 2107, 2108, 2101, 2109, + 2109, 2099, 2102, 2111, 2111, 2113, 2115, 2115, 2116, 2118, + 2120, 2113, 2124, 2114, 2118, 2106, 2121, 2117, 2122, 2122, + 2125, 2124, 2126, 2127, 2116, 2130, 2125, 2131, 2121, 2120, + 2129, 2129, 2133, 2133, 2134, 2134, 2135, 2136, 2127, 2138, - 2135, 2136, 2137, 2137, 2139, 2128, 2136, 2138, 2138, 2140, - 2141, 2134, 2142, 2143, 2143, 2144, 2139, 2148, 2135, 2145, - 2145, 2140, 2146, 2146, 2147, 2149, 2150, 2151, 2142, 2148, - 2141, 2152, 2149, 2153, 2144, 2147, 2152, 2154, 2150, 2155, - 2155, 2156, 2157, 2158, 2164, 2159, 2160, 2151, 2161, 2167, - 2156, 2162, 2162, 2153, 2165, 2163, 2168, 2154, 2159, 2164, - 2169, 2171, 2161, 2158, 2163, 2174, 2174, 2167, 2157, 2165, - 2160, 2170, 2172, 2181, 2170, 2171, 2173, 2172, 2168, 2175, - 2175, 2173, 2182, 2169, 2176, 2176, 2178, 2178, 2180, 2180, - 2183, 2181, 2185, 2182, 2187, 2186, 2189, 2188, 2190, 2192, + 2126, 2135, 2136, 2139, 2130, 2131, 2137, 2140, 2137, 2141, + 2142, 2142, 2146, 2138, 2141, 2143, 2143, 2139, 2144, 2144, + 2145, 2145, 2147, 2148, 2146, 2149, 2149, 2140, 2148, 2150, + 2150, 2151, 2152, 2153, 2154, 2155, 2155, 2156, 2157, 2157, + 2147, 2158, 2158, 2151, 2152, 2161, 2159, 2160, 2162, 2163, + 2154, 2165, 2161, 2153, 2166, 2168, 2156, 2159, 2164, 2160, + 2162, 2167, 2167, 2164, 2168, 2169, 2170, 2171, 2172, 2163, + 2173, 2165, 2174, 2174, 2166, 2176, 2175, 2179, 2177, 2180, + 2171, 2181, 2183, 2184, 2173, 2175, 2170, 2231, 2184, 2231, + 2176, 2169, 2172, 2177, 2182, 2179, 2183, 2182, 2185, 2186, - 2192, 2191, 2194, 2194, 2195, 2189, 2196, 2197, 2197, 2183, - 2201, 2199, 2185, 2186, 2202, 2196, 2187, 2188, 2190, 2191, - 2199, 2200, 2200, 2203, 2204, 2205, 2195, 2206, 2201, 2208, - 2203, 2207, 2202, 2209, 2209, 2210, 2210, 2212, 2211, 2204, - 2214, 2213, 2216, 2205, 2211, 2206, 2215, 2207, 2208, 2217, - 0, 2215, 2218, 2220, 2220, 2212, 2213, 2218, 2219, 2214, - 2219, 2221, 2216, 2221, 2222, 2222, 2224, 2226, 2227, 2217, - 2228, 2229, 2230, 2231, 2239, 2232, 2226, 2230, 2235, 2256, - 2236, 2238, 2228, 2236, 2256, 2224, 2241, 2227, 2237, 2237, - 2241, 2229, 2239, 2231, 2232, 2243, 2238, 2244, 2235, 2240, + 2186, 2180, 2193, 2185, 2181, 2187, 2187, 2188, 2188, 2190, + 2190, 2192, 2192, 2194, 2195, 2197, 2198, 2199, 2200, 2201, + 2193, 2202, 2203, 2207, 2194, 2204, 2204, 2208, 2201, 2206, + 2206, 2209, 2209, 2195, 2198, 2197, 2208, 2211, 2200, 2199, + 2203, 2202, 2212, 2212, 2213, 2207, 2211, 2214, 2215, 2216, + 2217, 2218, 2220, 2226, 2219, 2215, 2221, 2221, 2222, 2222, + 2223, 2224, 2213, 2225, 2216, 2214, 2223, 2228, 2217, 2218, + 2219, 2220, 2226, 2229, 0, 2227, 2230, 2236, 2225, 2224, + 2227, 2230, 2232, 2232, 2233, 2238, 2233, 2228, 2234, 2234, + 2239, 2240, 2241, 2229, 2238, 2242, 2236, 2243, 2248, 2244, - 2240, 2244, 2245, 2245, 2246, 2248, 2249, 2250, 2250, 2252, - 2243, 2253, 2253, 2254, 2255, 2255, 2257, 2246, 2258, 2258, - 2264, 2252, 2263, 2263, 2266, 2248, 2249, 2267, 2257, 2265, - 2265, 2271, 2254, 0, 2268, 2269, 2276, 2266, 2270, 2270, - 2267, 2276, 2264, 2268, 2269, 2277, 2271, 2273, 2273, 2278, - 2277, 2279, 2280, 2281, 2283, 2282, 2279, 0, 2285, 2288, - 2280, 2286, 2283, 2278, 2282, 2287, 2286, 2289, 2289, 2293, - 2287, 2291, 2281, 2285, 2288, 2290, 2290, 2292, 2291, 2294, - 2295, 2298, 2292, 2296, 2297, 2297, 2295, 2293, 2296, 2299, - 2300, 2300, 2301, 2301, 2299, 2304, 2298, 2294, 2305, 2305, + 2242, 2247, 2249, 2240, 2251, 2249, 2250, 2250, 2252, 2239, + 2253, 2253, 2241, 2256, 2258, 2258, 2248, 2243, 2244, 2251, + 2254, 2247, 2259, 2257, 2254, 2261, 2252, 2257, 2256, 2262, + 2263, 2263, 2265, 2266, 2266, 2259, 2267, 2268, 2268, 2270, + 2277, 2269, 2271, 2271, 2265, 2261, 2269, 2276, 2276, 2262, + 2279, 2270, 2278, 2278, 2280, 2267, 2281, 2282, 2283, 2283, + 2284, 2294, 2277, 2279, 2291, 2281, 2282, 2280, 2286, 2286, + 2298, 2289, 2290, 2293, 2292, 2284, 2289, 2290, 2291, 2292, + 2294, 2293, 2295, 2299, 2296, 2298, 2301, 2306, 2299, 2300, + 2307, 2295, 2296, 2304, 2300, 2302, 2302, 2303, 2303, 2305, - 2306, 2307, 0, 2306, 2308, 2309, 2307, 2307, 2304, 2308, - 2309, 2310, 2311, 2312, 2313, 2314, 2311, 2310, 2312, 2315, - 2316, 2317, 2322, 2313, 2319, 2316, 2326, 2315, 2320, 2319, - 2314, 2320, 2324, 2317, 2322, 2325, 2327, 2324, 2328, 2329, - 2325, 2330, 2330, 2331, 2326, 2334, 2335, 2328, 2329, 2327, - 2336, 2338, 2331, 2337, 2337, 2342, 2339, 2340, 2341, 2341, - 2344, 2346, 2349, 2347, 2334, 2339, 2335, 2347, 2380, 2336, - 2338, 2380, 2340, 2350, 2342, 2344, 2348, 2348, 2351, 2350, - 2352, 2346, 2353, 2353, 2351, 2354, 2352, 2349, 2357, 2355, - 2358, 2360, 2361, 2354, 2355, 2360, 2362, 2357, 2364, 2364, + 2304, 2301, 2309, 2308, 2305, 2306, 2311, 2309, 2307, 2308, + 2310, 2310, 2312, 2313, 2313, 2314, 2314, 2312, 2317, 2318, + 2318, 2311, 2319, 2320, 2773, 2319, 2773, 2321, 2320, 2320, + 2322, 2317, 2321, 2323, 2324, 2322, 2325, 2326, 2324, 2323, + 2327, 2325, 2328, 2329, 2330, 2335, 2326, 2332, 2329, 2339, + 2328, 2333, 2332, 2337, 2333, 2327, 2330, 2335, 2337, 2338, + 2340, 2341, 2342, 2344, 2338, 2343, 2343, 2339, 2347, 2348, + 2341, 2342, 2344, 2340, 2349, 2350, 2350, 2351, 2355, 2352, + 2353, 2354, 2354, 2357, 2359, 2362, 2360, 2347, 2352, 2348, + 2360, 2361, 2361, 2349, 2363, 2353, 2351, 2355, 2357, 2364, - 2365, 2365, 2372, 2358, 2366, 2366, 2361, 2368, 2368, 2370, - 2370, 2362, 2373, 2375, 2376, 2376, 2381, 2373, 2373, 2378, - 2378, 2383, 2372, 2379, 2379, 2385, 2386, 2386, 2389, 2381, - 2387, 2387, 2392, 2375, 2388, 2388, 2390, 2390, 2391, 2383, - 2393, 2394, 2396, 2389, 2400, 2385, 2396, 2394, 2395, 2395, - 2392, 2391, 2399, 2401, 2393, 2402, 2403, 2399, 2399, 2404, - 2405, 2410, 2403, 2412, 2406, 2404, 2410, 2400, 2406, 2407, - 2407, 2412, 2415, 2401, 2413, 2402, 2416, 2413, 2417, 2416, - 2419, 2418, 2420, 2422, 2422, 2405, 2418, 2421, 2423, 2426, - 0, 2424, 2427, 2427, 2435, 2417, 2417, 2415, 2419, 2424, + 2363, 2365, 2366, 2366, 2359, 2364, 2367, 2365, 2368, 2371, + 2362, 2369, 2372, 2374, 2367, 2375, 2369, 2374, 2371, 2376, + 2378, 2378, 2379, 2379, 2386, 2372, 2380, 2380, 2389, 2375, + 2382, 2382, 2387, 2368, 2376, 2384, 2384, 2387, 2387, 2390, + 2390, 2392, 2392, 2395, 2386, 2393, 2393, 2394, 2389, 2397, + 2394, 2399, 2400, 2400, 2401, 2401, 2395, 2402, 2402, 2403, + 2404, 2404, 2405, 2406, 2407, 2414, 2408, 2397, 2409, 2409, + 2415, 2399, 2408, 2410, 2403, 2405, 2416, 2410, 2407, 2413, + 2417, 2406, 2419, 2418, 2413, 2413, 2417, 2420, 2414, 2418, + 2415, 2420, 2421, 2421, 2424, 2426, 2416, 2427, 2429, 2424, - 2425, 2421, 2420, 2428, 2428, 2425, 2425, 2423, 2426, 2429, - 2429, 2430, 2430, 2431, 2431, 2432, 2433, 2434, 2436, 2437, - 2435, 2433, 2438, 2440, 2440, 2441, 2442, 2436, 2441, 2444, - 2444, 2432, 2454, 2445, 2446, 2446, 2447, 2434, 2450, 2437, - 2445, 2447, 2438, 2451, 2442, 2449, 2449, 2450, 2452, 2457, - 2454, 2456, 2451, 2455, 2455, 2456, 2458, 2452, 2457, 2459, - 2460, 2461, 2466, 2466, 2459, 2459, 2467, 2469, 2470, 2473, - 2461, 2458, 2474, 2460, 2478, 2475, 2469, 2476, 2480, 2495, - 2470, 2474, 2482, 2476, 2467, 2483, 2478, 2482, 2484, 2484, - 2483, 2485, 2487, 2494, 2473, 2475, 2502, 2487, 2495, 2480, + 2427, 2430, 2431, 2426, 2430, 2432, 2433, 2419, 2434, 2438, + 2432, 2435, 2436, 2436, 2437, 2440, 2439, 2438, 2449, 2431, + 2431, 2439, 2439, 2429, 2433, 2435, 2441, 2441, 2434, 2442, + 2442, 2443, 2443, 2437, 2440, 2444, 2444, 2445, 2445, 2446, + 2447, 2448, 2450, 2451, 2449, 2447, 2452, 2454, 2454, 2455, + 2456, 2450, 2455, 2458, 2458, 2446, 2468, 2459, 2460, 2460, + 2461, 2448, 2464, 2451, 2459, 2461, 2452, 2465, 2456, 2463, + 2463, 2464, 2466, 2473, 2468, 2472, 2465, 2469, 2469, 2470, + 2470, 2466, 2471, 2475, 2472, 2474, 2471, 2482, 2473, 2476, + 2474, 2474, 2481, 2481, 2484, 2485, 2475, 2488, 2476, 2489, - 2485, 2488, 2488, 2490, 2490, 2488, 2491, 2491, 2492, 2492, - 2493, 2496, 2498, 2494, 2502, 2499, 2496, 2500, 2498, 2493, - 2499, 2503, 2500, 2501, 2501, 2504, 2505, 2506, 2507, 2510, - 2504, 2508, 2508, 2506, 2511, 2512, 2514, 2514, 2516, 2517, - 2524, 2518, 2503, 2520, 2505, 2518, 2521, 2519, 2510, 2511, - 2522, 2516, 2517, 2507, 2526, 2512, 2519, 2523, 2522, 2520, - 2525, 2525, 2523, 2528, 2528, 2521, 2524, 2529, 2529, 2531, - 2533, 2533, 2535, 2526, 2538, 2536, 2537, 2540, 2540, 2538, - 2541, 2542, 2543, 2545, 2545, 2546, 2549, 2552, 2535, 2548, - 2531, 2536, 2537, 2556, 2548, 2550, 2550, 2551, 2551, 2546, + 2490, 2493, 2495, 2484, 2491, 2482, 2497, 2485, 2489, 2498, + 2491, 2497, 2500, 2493, 2498, 2499, 2499, 2505, 2505, 2502, + 2490, 2500, 2488, 2495, 2502, 2503, 2503, 2506, 2506, 2503, + 2507, 2507, 2508, 2509, 2511, 2510, 2513, 2517, 2514, 2511, + 2515, 2508, 2513, 2514, 2518, 2515, 2516, 2516, 2520, 2522, + 2525, 2519, 2521, 2509, 2510, 2517, 2519, 2526, 2521, 2523, + 2523, 2527, 2529, 2529, 2531, 2518, 2520, 2532, 2535, 2525, + 2534, 2533, 2526, 2536, 2522, 2533, 2539, 2531, 2537, 2534, + 2532, 2527, 2538, 2550, 2535, 2541, 2537, 2538, 2540, 2540, + 2543, 2543, 2536, 2544, 2544, 2546, 2548, 2548, 2551, 2550, - 2541, 2543, 2553, 2553, 2542, 2554, 2555, 2552, 2549, 2558, - 2560, 2557, 2559, 2556, 2568, 2555, 2554, 2557, 2561, 2561, - 2562, 2567, 2553, 2562, 2559, 2563, 2563, 2573, 2558, 2569, - 2560, 2570, 2570, 2567, 2568, 2569, 2571, 2572, 2577, 2571, - 2583, 2575, 2576, 2572, 2578, 2573, 2575, 2576, 2579, 2584, - 2578, 2580, 2580, 2582, 2582, 2586, 2586, 2577, 2584, 2583, - 2587, 2587, 2588, 2589, 2590, 2579, 2579, 2588, 2599, 2590, - 2591, 2591, 2592, 2592, 2593, 2593, 2594, 2589, 2596, 2596, - 2601, 2594, 2602, 2603, 2604, 2604, 2607, 2599, 2606, 2606, - 2608, 2612, 2609, 2610, 2610, 2611, 2612, 2615, 2615, 2619, + 2553, 2552, 2539, 2557, 2541, 2553, 2556, 2556, 2558, 2559, + 2561, 2561, 2562, 2564, 2551, 2565, 2546, 2552, 2564, 2566, + 2566, 2567, 2567, 2557, 2568, 2570, 2562, 2572, 2559, 2569, + 2569, 2558, 2571, 2573, 2574, 2576, 2570, 2565, 2575, 2573, + 2584, 2571, 2577, 2577, 2568, 2578, 2583, 2572, 2578, 2569, + 2575, 2579, 2579, 2574, 2587, 2576, 2585, 2587, 2583, 2588, + 2584, 2589, 2585, 2586, 2586, 2588, 2591, 2592, 2593, 2594, + 2599, 2591, 2592, 2595, 2600, 2594, 2596, 2596, 2638, 2589, + 2598, 2598, 2605, 2600, 2602, 2602, 2638, 2593, 0, 2599, + 2595, 2595, 2603, 2603, 2604, 2606, 2605, 2607, 2607, 2604, - 2607, 2609, 2601, 2618, 2602, 2603, 2617, 2617, 2618, 2620, - 2608, 2621, 2622, 2619, 2611, 2620, 2623, 2623, 2626, 2624, - 2622, 2627, 2628, 2621, 2624, 2629, 2630, 2628, 2632, 2633, - 2634, 2635, 2630, 2637, 2636, 2643, 2632, 2629, 2626, 2638, - 2639, 2627, 2640, 2647, 2647, 2644, 0, 2640, 2633, 2637, - 2634, 2635, 2636, 2648, 2648, 2643, 2638, 2638, 2644, 2649, - 2662, 2639, 2669, 2649, 2653, 2653, 2655, 2655, 2656, 2656, - 2659, 2656, 2657, 2657, 2659, 2657, 2658, 2658, 2662, 2658, - 2661, 2661, 2663, 2665, 2666, 2666, 2670, 2669, 2665, 2672, - 2671, 2673, 2675, 2670, 2671, 2676, 2663, 2680, 2672, 2677, + 2606, 2608, 2608, 2609, 2609, 2610, 2612, 2612, 2615, 2617, + 2610, 2618, 2619, 2620, 2620, 2622, 2622, 2624, 2623, 2625, + 2626, 2626, 2627, 0, 2628, 2631, 2631, 2615, 2625, 2628, + 2635, 2617, 2623, 2618, 2619, 2633, 2633, 2624, 2634, 2636, + 2637, 2627, 2642, 2634, 2635, 2636, 2639, 2639, 2640, 2643, + 2644, 2645, 2637, 2640, 2646, 2644, 2648, 2649, 2650, 2651, + 2646, 2653, 2642, 2645, 2648, 2652, 2655, 2654, 2656, 2643, + 2659, 2663, 2663, 2656, 2689, 2660, 2649, 2653, 2650, 2651, + 2664, 2664, 2665, 2652, 2654, 2654, 2665, 2655, 2660, 2689, + 2659, 2669, 2669, 2671, 2671, 2672, 2672, 2675, 2672, 2673, - 2677, 2678, 2678, 2685, 2676, 2687, 2673, 2679, 2679, 2681, - 2675, 2682, 2680, 2683, 2681, 2684, 2686, 2688, 2683, 2683, - 2682, 2684, 2688, 2682, 2689, 2690, 2687, 2838, 2685, 2689, - 2692, 2686, 2691, 2691, 2838, 2692, 2695, 2695, 2698, 2698, - 2699, 2699, 2700, 2700, 2690, 2701, 2701, 2702, 2702, 2703, - 2703, 2704, 2704, 2706, 2707, 2707, 2708, 2712, 2710, 2711, - 2711, 2713, 2706, 2714, 2715, 2715, 2716, 2717, 2717, 2720, - 2721, 2722, 2712, 2721, 2713, 2714, 2708, 2710, 2723, 2723, - 2724, 2716, 2726, 2727, 2730, 2726, 2728, 2720, 2729, 2727, - 2731, 2732, 2743, 2729, 2734, 2743, 2748, 2722, 2724, 2752, + 2673, 2675, 2673, 2674, 2674, 2678, 2674, 2677, 2677, 2681, + 2679, 2682, 2682, 2685, 2681, 2686, 2687, 2688, 2691, 2692, + 2687, 2700, 2686, 2678, 2679, 2696, 2688, 2700, 2692, 2693, + 2693, 2694, 2694, 2695, 2695, 2698, 2691, 2697, 2685, 2701, + 2696, 2702, 2697, 2699, 2698, 2703, 2704, 2698, 2699, 2699, + 2705, 2704, 2706, 2707, 2707, 2705, 2702, 2708, 2711, 2711, + 2714, 2714, 2708, 2724, 2701, 2726, 2703, 2715, 2715, 2716, + 2716, 2706, 2717, 2717, 2718, 2718, 2719, 2719, 2720, 2720, + 2722, 2723, 2723, 2724, 2726, 2727, 2727, 2728, 2729, 2722, + 2732, 2730, 2731, 2731, 2733, 2733, 2736, 2737, 2738, 2740, - 2728, 2745, 2745, 2730, 2746, 2746, 2749, 2732, 2731, 2734, - 2750, 2751, 2754, 2752, 2750, 2749, 2755, 2756, 2757, 2748, - 2757, 2758, 2756, 2759, 2759, 2760, 2761, 2755, 2762, 2764, - 2766, 2751, 2763, 2767, 2765, 2754, 2758, 2771, 2760, 2772, - 2772, 2770, 2866, 2773, 2866, 2761, 2762, 2778, 2763, 2765, - 2779, 2766, 2773, 2767, 2764, 2770, 2783, 2771, 2774, 2774, - 2775, 2775, 2776, 2776, 2777, 2777, 2778, 2781, 2780, 2782, - 2779, 2780, 2781, 2784, 2782, 2786, 2785, 2787, 2788, 2788, - 2789, 2783, 2785, 2790, 2790, 2792, 2794, 2799, 2784, 2786, - 2797, 2797, 2798, 2798, 2800, 2799, 2801, 2787, 2803, 2789, + 2737, 2729, 2728, 2730, 2743, 2732, 2739, 2739, 2742, 2744, + 2743, 2742, 2746, 2745, 2736, 2747, 2748, 2740, 2745, 2750, + 2761, 2761, 2759, 2744, 2738, 2759, 2762, 2762, 2764, 2765, + 2767, 2746, 2748, 2747, 2750, 2766, 2770, 2771, 2765, 2766, + 2768, 2772, 2774, 2775, 2775, 2776, 2772, 2777, 2771, 2778, + 2767, 2764, 2779, 2780, 2768, 2781, 2782, 2774, 2776, 2770, + 2783, 2786, 2787, 2788, 2788, 2789, 2777, 2778, 2779, 2795, + 2781, 2790, 2790, 2794, 2789, 2786, 2796, 2782, 2780, 2796, + 2783, 2799, 2787, 2791, 2791, 2792, 2792, 2793, 2793, 2795, + 2797, 2798, 2794, 2800, 2801, 2797, 2798, 2802, 2803, 2808, - 2792, 2802, 2801, 2804, 2794, 2805, 2808, 2802, 2806, 2806, - 2811, 2810, 2803, 2800, 2811, 2813, 2804, 2814, 2815, 2816, - 2817, 2818, 2814, 2819, 2805, 2810, 2808, 2822, 2819, 2820, - 2823, 2825, 2816, 2817, 2820, 2813, 2825, 2815, 2824, 2824, - 2818, 2826, 2827, 2827, 2831, 2822, 2828, 2826, 2829, 2823, - 2830, 2828, 2832, 2829, 2833, 2830, 2834, 2834, 2832, 2833, - 2836, 2837, 2839, 2831, 2836, 2840, 2841, 2842, 2849, 2843, - 2844, 2844, 2841, 2846, 2846, 2850, 2847, 2851, 2848, 2856, - 2837, 2839, 2843, 2848, 2840, 2847, 2842, 2849, 2847, 2854, - 2851, 2852, 2852, 2853, 2850, 2857, 2857, 2858, 2853, 2859, + 2801, 2804, 2804, 2805, 2806, 2806, 2799, 2810, 2800, 2813, + 2813, 2802, 2814, 2814, 2808, 2815, 2816, 2819, 2803, 2820, + 2817, 2818, 2805, 2815, 2821, 2810, 2817, 2818, 2822, 2822, + 2824, 2819, 2820, 2826, 2827, 2816, 2829, 2830, 2827, 2831, + 2832, 2833, 2830, 2821, 2834, 2839, 2835, 2826, 2838, 2842, + 2824, 2835, 2836, 2832, 2833, 2842, 2829, 2836, 2831, 2840, + 2840, 2847, 2841, 2834, 2839, 2844, 2838, 2841, 2843, 2843, + 2844, 2845, 2846, 2848, 2850, 2850, 2845, 2846, 2849, 2848, + 2847, 2852, 2853, 2849, 2854, 2852, 2855, 2856, 2857, 2858, + 2859, 2854, 2860, 2860, 2857, 2862, 2862, 2864, 2863, 2865, - 2859, 2861, 2854, 2860, 2860, 2856, 2861, 2862, 2863, 2864, - 2864, 2870, 2865, 2868, 2862, 2869, 2858, 2865, 2867, 2867, - 2868, 2871, 2869, 2872, 2874, 2874, 2871, 2863, 2875, 2877, - 2870, 2878, 2879, 2880, 2877, 2884, 2878, 2881, 2881, 2883, - 2883, 2885, 2872, 2886, 2886, 2887, 2887, 2875, 2888, 2890, - 2890, 2879, 2880, 2898, 2884, 2888, 2891, 2891, 2892, 2894, - 2885, 2897, 2899, 0, 2894, 2892, 2897, 2900, 2900, 2901, - 2901, 0, 2898, 0, 0, 0, 0, 0, 0, 0, - 0, 2899, 2905, 2905, 2905, 2905, 2905, 2905, 2905, 2906, - 2906, 2906, 2906, 2906, 2906, 2906, 2907, 2907, 2907, 2907, + 2866, 2853, 2864, 2859, 2867, 2855, 2856, 2863, 2858, 2869, + 2863, 2868, 2868, 2870, 2869, 2872, 2874, 2867, 2865, 2866, + 2873, 2873, 2875, 2875, 2876, 2876, 2870, 2877, 2879, 2878, + 2880, 2880, 2877, 2881, 2886, 2874, 2878, 2882, 2881, 2882, + 2888, 2872, 2883, 2883, 2884, 2885, 2891, 2879, 2895, 2887, + 2896, 2884, 2885, 2886, 2887, 2890, 2890, 2893, 2894, 2888, + 2897, 2897, 2893, 2894, 2900, 2891, 2901, 2895, 0, 2896, + 2899, 2899, 2902, 2902, 2903, 2903, 2914, 2904, 2906, 2906, + 2907, 2907, 2908, 2900, 2904, 2901, 2910, 2913, 2915, 2908, + 0, 2910, 2913, 2916, 2916, 2914, 2917, 2917, 0, 0, - 2907, 2907, 2907, 2908, 2908, 2908, 2908, 2908, 2908, 2908, - 2909, 2909, 2909, 2909, 2909, 2909, 2909, 2911, 2911, 0, - 2911, 2911, 2911, 2911, 2912, 2912, 0, 0, 0, 2912, - 2912, 2913, 2913, 0, 0, 2913, 0, 2913, 2914, 0, - 0, 0, 0, 0, 2914, 2915, 2915, 0, 0, 0, - 2915, 2915, 2916, 0, 0, 0, 0, 0, 2916, 2917, - 2917, 0, 2917, 2917, 2917, 2917, 2918, 2918, 0, 2918, - 2918, 2918, 2918, 2904, 2904, 2904, 2904, 2904, 2904, 2904, - 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, - 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, + 0, 0, 0, 0, 0, 0, 0, 2915, 2921, 2921, + 2921, 2921, 2921, 2921, 2921, 2922, 2922, 2922, 2922, 2922, + 2922, 2922, 2923, 2923, 2923, 2923, 2923, 2923, 2923, 2924, + 2924, 2924, 2924, 2924, 2924, 2924, 2925, 2925, 2925, 2925, + 2925, 2925, 2925, 2927, 2927, 0, 2927, 2927, 2927, 2927, + 2928, 2928, 0, 0, 0, 2928, 2928, 2929, 2929, 0, + 0, 2929, 0, 2929, 2930, 0, 0, 0, 0, 0, + 2930, 2931, 2931, 0, 0, 0, 2931, 2931, 2932, 0, + 0, 0, 0, 0, 2932, 2933, 2933, 0, 2933, 2933, + 2933, 2933, 2934, 2934, 0, 2934, 2934, 2934, 2934, 2920, - 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, - 2904, 2904, 2904, 2904 + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, + 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920, 2920 } ; static yy_state_type yy_last_accepting_state; @@ -2774,7 +2774,7 @@ static void config_start_include(const char* filename) config_include_stack = s; cfg_parser->filename = nm; cfg_parser->line = 1; - yy_switch_to_buffer(yy_create_buffer(input,YY_BUF_SIZE)); + yy_switch_to_buffer(yy_create_buffer(input, YY_BUF_SIZE)); } static void config_start_include_glob(const char* filename) @@ -2844,11 +2844,12 @@ static void config_end_include(void) #define yy_set_bol(at_bol) \ { \ if ( ! yy_current_buffer ) \ - yy_current_buffer = yy_create_buffer(yyin,YY_BUF_SIZE ); \ + yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ yy_current_buffer->yy_ch_buf[0] = ((at_bol)?'\n':' '); \ } #endif +#line 2851 "" #define YY_NO_INPUT 1 #line 185 "./util/configlexer.lex" #ifndef YY_NO_UNPUT @@ -2857,9 +2858,10 @@ static void config_end_include(void) #ifndef YY_NO_INPUT #define YY_NO_INPUT 1 #endif - #line 2860 "" +#line 2862 "" + #define INITIAL 0 #define quotedstring 1 #define singlequotedstr 2 @@ -2879,36 +2881,36 @@ static void config_end_include(void) #define YY_EXTRA_TYPE void * #endif -static int yy_init_globals (void ); +static int yy_init_globals ( void ); /* Accessor methods to globals. These are made visible to non-reentrant scanners for convenience. */ -int yylex_destroy (void ); +int yylex_destroy ( void ); -int yyget_debug (void ); +int yyget_debug ( void ); -void yyset_debug (int debug_flag ); +void yyset_debug ( int debug_flag ); -YY_EXTRA_TYPE yyget_extra (void ); +YY_EXTRA_TYPE yyget_extra ( void ); -void yyset_extra (YY_EXTRA_TYPE user_defined ); +void yyset_extra ( YY_EXTRA_TYPE user_defined ); -FILE *yyget_in (void ); +FILE *yyget_in ( void ); -void yyset_in (FILE * _in_str ); +void yyset_in ( FILE * _in_str ); -FILE *yyget_out (void ); +FILE *yyget_out ( void ); -void yyset_out (FILE * _out_str ); +void yyset_out ( FILE * _out_str ); - int yyget_leng (void ); + int yyget_leng ( void ); -char *yyget_text (void ); +char *yyget_text ( void ); -int yyget_lineno (void ); +int yyget_lineno ( void ); -void yyset_lineno (int _line_number ); +void yyset_lineno ( int _line_number ); /* Macros after this point can all be overridden by user definitions in * section 1. @@ -2916,9 +2918,9 @@ void yyset_lineno (int _line_number ); #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus -extern "C" int yywrap (void ); +extern "C" int yywrap ( void ); #else -extern int yywrap (void ); +extern int yywrap ( void ); #endif #endif @@ -2927,19 +2929,18 @@ extern int yywrap (void ); #endif #ifndef yytext_ptr -static void yy_flex_strncpy (char *,yyconst char *,int ); +static void yy_flex_strncpy ( char *, const char *, int ); #endif #ifdef YY_NEED_STRLEN -static int yy_flex_strlen (yyconst char * ); +static int yy_flex_strlen ( const char * ); #endif #ifndef YY_NO_INPUT - #ifdef __cplusplus -static int yyinput (void ); +static int yyinput ( void ); #else -static int input (void ); +static int input ( void ); #endif #endif @@ -3072,23 +3073,23 @@ YY_DECL if ( ! YY_CURRENT_BUFFER ) { yyensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer(yyin,YY_BUF_SIZE ); + yy_create_buffer( yyin, YY_BUF_SIZE ); } - yy_load_buffer_state( ); + yy_load_buffer_state( ); } { #line 205 "./util/configlexer.lex" -#line 3083 "" +#line 3084 "" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { (yy_more_len) = 0; if ( (yy_more_flag) ) { - (yy_more_len) = (yy_c_buf_p) - (yytext_ptr); + (yy_more_len) = (int) ((yy_c_buf_p) - (yytext_ptr)); (yy_more_flag) = 0; } yy_cp = (yy_c_buf_p); @@ -3114,13 +3115,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 >= 2905 ) - yy_c = yy_meta[(unsigned int) yy_c]; + if ( yy_current_state >= 2921 ) + yy_c = yy_meta[yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; + yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 5674 ); + while ( yy_base[yy_current_state] != 5700 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -4342,17 +4343,17 @@ YY_RULE_SETUP case 238: YY_RULE_SETUP #line 453 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOW_RTT) } +{ YDVAR(1, VAR_OUTBOUND_MSG_RETRY) } YY_BREAK case 239: YY_RULE_SETUP #line 454 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_NUM) } +{ YDVAR(1, VAR_LOW_RTT) } YY_BREAK case 240: YY_RULE_SETUP #line 455 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } +{ YDVAR(1, VAR_FAST_SERVER_NUM) } YY_BREAK case 241: YY_RULE_SETUP @@ -4367,180 +4368,185 @@ YY_RULE_SETUP case 243: YY_RULE_SETUP #line 458 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_TAG) } +{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 244: YY_RULE_SETUP #line 459 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP) } +{ YDVAR(2, VAR_RESPONSE_IP_TAG) } YY_BREAK case 245: YY_RULE_SETUP #line 460 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_DATA) } +{ YDVAR(2, VAR_RESPONSE_IP) } YY_BREAK case 246: YY_RULE_SETUP #line 461 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSCRYPT) } +{ YDVAR(2, VAR_RESPONSE_IP_DATA) } YY_BREAK case 247: YY_RULE_SETUP #line 462 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } +{ YDVAR(0, VAR_DNSCRYPT) } YY_BREAK case 248: YY_RULE_SETUP #line 463 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PORT) } +{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } YY_BREAK case 249: YY_RULE_SETUP #line 464 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } +{ YDVAR(1, VAR_DNSCRYPT_PORT) } YY_BREAK case 250: YY_RULE_SETUP #line 465 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } YY_BREAK case 251: YY_RULE_SETUP #line 466 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } +{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } YY_BREAK case 252: YY_RULE_SETUP #line 467 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } YY_BREAK case 253: YY_RULE_SETUP #line 468 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } YY_BREAK case 254: YY_RULE_SETUP -#line 470 "./util/configlexer.lex" +#line 469 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } YY_BREAK case 255: YY_RULE_SETUP -#line 472 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } +#line 471 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } YY_BREAK case 256: YY_RULE_SETUP #line 473 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } YY_BREAK case 257: YY_RULE_SETUP #line 474 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_ENABLED) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } YY_BREAK case 258: YY_RULE_SETUP #line 475 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } +{ YDVAR(1, VAR_IPSECMOD_ENABLED) } YY_BREAK case 259: YY_RULE_SETUP #line 476 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_HOOK) } +{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } YY_BREAK case 260: YY_RULE_SETUP #line 477 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } +{ YDVAR(1, VAR_IPSECMOD_HOOK) } YY_BREAK case 261: YY_RULE_SETUP #line 478 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } +{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } YY_BREAK case 262: YY_RULE_SETUP #line 479 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_STRICT) } +{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } YY_BREAK case 263: YY_RULE_SETUP #line 480 "./util/configlexer.lex" -{ YDVAR(0, VAR_CACHEDB) } +{ YDVAR(1, VAR_IPSECMOD_STRICT) } YY_BREAK case 264: YY_RULE_SETUP #line 481 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_BACKEND) } +{ YDVAR(0, VAR_CACHEDB) } YY_BREAK case 265: YY_RULE_SETUP #line 482 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } +{ YDVAR(1, VAR_CACHEDB_BACKEND) } YY_BREAK case 266: YY_RULE_SETUP #line 483 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISHOST) } +{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } YY_BREAK case 267: YY_RULE_SETUP #line 484 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISPORT) } +{ YDVAR(1, VAR_CACHEDB_REDISHOST) } YY_BREAK case 268: YY_RULE_SETUP #line 485 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } +{ YDVAR(1, VAR_CACHEDB_REDISPORT) } YY_BREAK case 269: YY_RULE_SETUP #line 486 "./util/configlexer.lex" -{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } +{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } YY_BREAK case 270: YY_RULE_SETUP #line 487 "./util/configlexer.lex" -{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } +{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } YY_BREAK case 271: -/* rule 271 can match eol */ YY_RULE_SETUP #line 488 "./util/configlexer.lex" +{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } + YY_BREAK +case 272: +/* rule 272 can match eol */ +YY_RULE_SETUP +#line 489 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK /* Quoted strings. Strip leading and ending quotes */ -case 272: +case 273: YY_RULE_SETUP -#line 491 "./util/configlexer.lex" +#line 492 "./util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 492 "./util/configlexer.lex" +#line 493 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 273: -YY_RULE_SETUP -#line 497 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 274: -/* rule 274 can match eol */ YY_RULE_SETUP #line 498 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 275: +/* rule 275 can match eol */ +YY_RULE_SETUP +#line 499 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 275: +case 276: YY_RULE_SETUP -#line 500 "./util/configlexer.lex" +#line 501 "./util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -4553,34 +4559,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 276: +case 277: YY_RULE_SETUP -#line 512 "./util/configlexer.lex" +#line 513 "./util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 513 "./util/configlexer.lex" +#line 514 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 277: -YY_RULE_SETUP -#line 518 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 278: -/* rule 278 can match eol */ YY_RULE_SETUP #line 519 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 279: +/* rule 279 can match eol */ +YY_RULE_SETUP +#line 520 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 279: +case 280: YY_RULE_SETUP -#line 521 "./util/configlexer.lex" +#line 522 "./util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -4593,38 +4599,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 280: +case 281: YY_RULE_SETUP -#line 533 "./util/configlexer.lex" +#line 534 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 535 "./util/configlexer.lex" +#line 536 "./util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); } YY_BREAK -case 281: -YY_RULE_SETUP -#line 539 "./util/configlexer.lex" -{ LEXOUT(("ISP ")); /* ignore */ } - YY_BREAK case 282: -/* rule 282 can match eol */ YY_RULE_SETUP #line 540 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++;} +{ LEXOUT(("ISP ")); /* ignore */ } YY_BREAK case 283: +/* rule 283 can match eol */ YY_RULE_SETUP #line 541 "./util/configlexer.lex" -{ LEXOUT(("IQS ")); BEGIN(include_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK case 284: YY_RULE_SETUP #line 542 "./util/configlexer.lex" +{ LEXOUT(("IQS ")); BEGIN(include_quoted); } + YY_BREAK +case 285: +YY_RULE_SETUP +#line 543 "./util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include_glob(yytext); @@ -4632,27 +4638,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 547 "./util/configlexer.lex" +#line 548 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 285: -YY_RULE_SETUP -#line 551 "./util/configlexer.lex" -{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } - YY_BREAK case 286: -/* rule 286 can match eol */ YY_RULE_SETUP #line 552 "./util/configlexer.lex" +{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } + YY_BREAK +case 287: +/* rule 287 can match eol */ +YY_RULE_SETUP +#line 553 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 287: +case 288: YY_RULE_SETUP -#line 554 "./util/configlexer.lex" +#line 555 "./util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -4662,7 +4668,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 560 "./util/configlexer.lex" +#line 561 "./util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ @@ -4674,33 +4680,33 @@ case YY_STATE_EOF(val): } } YY_BREAK -case 288: +case 289: YY_RULE_SETUP -#line 571 "./util/configlexer.lex" +#line 572 "./util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 289: +case 290: YY_RULE_SETUP -#line 575 "./util/configlexer.lex" +#line 576 "./util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 290: +case 291: YY_RULE_SETUP -#line 579 "./util/configlexer.lex" +#line 580 "./util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 291: +case 292: YY_RULE_SETUP -#line 583 "./util/configlexer.lex" +#line 584 "./util/configlexer.lex" ECHO; YY_BREAK -#line 4702 "" +#line 4708 "" case YY_END_OF_BUFFER: { @@ -4776,7 +4782,7 @@ ECHO; { (yy_did_buffer_switch_on_eof) = 0; - if ( yywrap( ) ) + if ( yywrap( ) ) { /* Note: because we've taken care in * yy_get_next_buffer() to have set up @@ -4843,7 +4849,7 @@ static int yy_get_next_buffer (void) { char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; char *source = (yytext_ptr); - yy_size_t number_to_move, i; + int number_to_move, i; int ret_val; if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) @@ -4872,7 +4878,7 @@ static int yy_get_next_buffer (void) /* Try to read more data. */ /* First move last chars to start of buffer. */ - number_to_move = (yy_size_t) ((yy_c_buf_p) - (yytext_ptr)) - 1; + number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1); for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); @@ -4908,7 +4914,8 @@ static int yy_get_next_buffer (void) b->yy_ch_buf = (char *) /* Include room in for 2 EOB chars. */ - yyrealloc((void *) b->yy_ch_buf,(yy_size_t) (b->yy_buf_size + 2) ); + yyrealloc( (void *) b->yy_ch_buf, + (yy_size_t) (b->yy_buf_size + 2) ); } else /* Can't grow it, we don't own it. */ @@ -4940,7 +4947,7 @@ static int yy_get_next_buffer (void) if ( number_to_move == YY_MORE_ADJ ) { ret_val = EOB_ACT_END_OF_FILE; - yyrestart(yyin ); + yyrestart( yyin ); } else @@ -4954,12 +4961,15 @@ static int yy_get_next_buffer (void) else ret_val = EOB_ACT_CONTINUE_SCAN; - if ((int) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { + if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,(yy_size_t) new_size ); + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( + (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); + /* "- 2" to take care of EOB's */ + YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2); } (yy_n_chars) += number_to_move; @@ -4991,10 +5001,10 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 2905 ) - yy_c = yy_meta[(unsigned int) yy_c]; + if ( yy_current_state >= 2921 ) + yy_c = yy_meta[yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; + yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; } return yy_current_state; @@ -5019,11 +5029,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 >= 2905 ) - yy_c = yy_meta[(unsigned int) yy_c]; + if ( yy_current_state >= 2921 ) + yy_c = yy_meta[yy_c]; } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; - yy_is_jam = (yy_current_state == 2904); + yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; + yy_is_jam = (yy_current_state == 2920); return yy_is_jam ? 0 : yy_current_state; } @@ -5056,7 +5066,7 @@ static int yy_get_next_buffer (void) else { /* need more input */ - int offset = (yy_c_buf_p) - (yytext_ptr); + int offset = (int) ((yy_c_buf_p) - (yytext_ptr)); ++(yy_c_buf_p); switch ( yy_get_next_buffer( ) ) @@ -5073,13 +5083,13 @@ static int yy_get_next_buffer (void) */ /* Reset buffer status. */ - yyrestart(yyin ); + yyrestart( yyin ); /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: { - if ( yywrap( ) ) + if ( yywrap( ) ) return 0; if ( ! (yy_did_buffer_switch_on_eof) ) @@ -5117,11 +5127,11 @@ static int yy_get_next_buffer (void) if ( ! YY_CURRENT_BUFFER ){ yyensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer(yyin,YY_BUF_SIZE ); + yy_create_buffer( yyin, YY_BUF_SIZE ); } - yy_init_buffer(YY_CURRENT_BUFFER,input_file ); - yy_load_buffer_state( ); + yy_init_buffer( YY_CURRENT_BUFFER, input_file ); + yy_load_buffer_state( ); } /** Switch to a different input buffer. @@ -5149,7 +5159,7 @@ static int yy_get_next_buffer (void) } YY_CURRENT_BUFFER_LVALUE = new_buffer; - yy_load_buffer_state( ); + yy_load_buffer_state( ); /* We don't actually know whether we did this switch during * EOF (yywrap()) processing, but the only time this flag @@ -5177,7 +5187,7 @@ static void yy_load_buffer_state (void) { YY_BUFFER_STATE b; - b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); + b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); @@ -5186,13 +5196,13 @@ static void yy_load_buffer_state (void) /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. */ - b->yy_ch_buf = (char *) yyalloc((yy_size_t) (b->yy_buf_size + 2) ); + b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) ); if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); b->yy_is_our_buffer = 1; - yy_init_buffer(b,file ); + yy_init_buffer( b, file ); return b; } @@ -5211,9 +5221,9 @@ static void yy_load_buffer_state (void) YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; if ( b->yy_is_our_buffer ) - yyfree((void *) b->yy_ch_buf ); + yyfree( (void *) b->yy_ch_buf ); - yyfree((void *) b ); + yyfree( (void *) b ); } /* Initializes or reinitializes a buffer. @@ -5225,7 +5235,7 @@ static void yy_load_buffer_state (void) { int oerrno = errno; - yy_flush_buffer(b ); + yy_flush_buffer( b ); b->yy_input_file = file; b->yy_fill_buffer = 1; @@ -5268,7 +5278,7 @@ static void yy_load_buffer_state (void) b->yy_buffer_status = YY_BUFFER_NEW; if ( b == YY_CURRENT_BUFFER ) - yy_load_buffer_state( ); + yy_load_buffer_state( ); } /** Pushes the new state onto the stack. The new state becomes @@ -5299,7 +5309,7 @@ void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) YY_CURRENT_BUFFER_LVALUE = new_buffer; /* copied from yy_switch_to_buffer. */ - yy_load_buffer_state( ); + yy_load_buffer_state( ); (yy_did_buffer_switch_on_eof) = 1; } @@ -5318,7 +5328,7 @@ void yypop_buffer_state (void) --(yy_buffer_stack_top); if (YY_CURRENT_BUFFER) { - yy_load_buffer_state( ); + yy_load_buffer_state( ); (yy_did_buffer_switch_on_eof) = 1; } } @@ -5328,7 +5338,7 @@ void yypop_buffer_state (void) */ static void yyensure_buffer_stack (void) { - int num_to_alloc; + yy_size_t num_to_alloc; if (!(yy_buffer_stack)) { @@ -5342,9 +5352,9 @@ static void yyensure_buffer_stack (void) ); if ( ! (yy_buffer_stack) ) YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); - + memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); - + (yy_buffer_stack_max) = num_to_alloc; (yy_buffer_stack_top) = 0; return; @@ -5373,7 +5383,7 @@ static void yyensure_buffer_stack (void) * @param base the character buffer * @param size the size in bytes of the character buffer * - * @return the newly allocated buffer state object. + * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) { @@ -5385,7 +5395,7 @@ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) /* They forgot to leave room for the EOB's. */ return NULL; - b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); + b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); @@ -5399,7 +5409,7 @@ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) b->yy_fill_buffer = 0; b->yy_buffer_status = YY_BUFFER_NEW; - yy_switch_to_buffer(b ); + yy_switch_to_buffer( b ); return b; } @@ -5412,10 +5422,10 @@ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) * @note If you want to scan bytes that may contain NUL values, then use * yy_scan_bytes() instead. */ -YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) +YY_BUFFER_STATE yy_scan_string (const char * yystr ) { - return yy_scan_bytes(yystr,(int) strlen(yystr) ); + return yy_scan_bytes( yystr, (int) strlen(yystr) ); } /** Setup the input buffer state to scan the given bytes. The next call to yylex() will @@ -5425,7 +5435,7 @@ YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) * * @return the newly allocated buffer state object. */ -YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len ) +YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) { YY_BUFFER_STATE b; char *buf; @@ -5434,7 +5444,7 @@ YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len ) /* Get memory for full buffer, including space for trailing EOB's. */ n = (yy_size_t) (_yybytes_len + 2); - buf = (char *) yyalloc(n ); + buf = (char *) yyalloc( n ); if ( ! buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); @@ -5443,7 +5453,7 @@ YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len ) buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; - b = yy_scan_buffer(buf,n ); + b = yy_scan_buffer( buf, n ); if ( ! b ) YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); @@ -5459,9 +5469,9 @@ YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len ) #define YY_EXIT_FAILURE 2 #endif -static void yynoreturn yy_fatal_error (yyconst char* msg ) +static void yynoreturn yy_fatal_error (const char* msg ) { - (void) fprintf( stderr, "%s\n", msg ); + fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); } @@ -5472,7 +5482,7 @@ static void yynoreturn yy_fatal_error (yyconst char* msg ) do \ { \ /* Undo effects of setting up yytext. */ \ - yy_size_t yyless_macro_arg = (n); \ + int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ yytext[yyleng] = (yy_hold_char); \ (yy_c_buf_p) = yytext + yyless_macro_arg; \ @@ -5489,7 +5499,7 @@ static void yynoreturn yy_fatal_error (yyconst char* msg ) */ int yyget_lineno (void) { - + return yylineno; } @@ -5596,7 +5606,7 @@ int yylex_destroy (void) /* Pop the buffer stack, destroying each element. */ while(YY_CURRENT_BUFFER){ - yy_delete_buffer(YY_CURRENT_BUFFER ); + yy_delete_buffer( YY_CURRENT_BUFFER ); YY_CURRENT_BUFFER_LVALUE = NULL; yypop_buffer_state(); } @@ -5617,7 +5627,7 @@ int yylex_destroy (void) */ #ifndef yytext_ptr -static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) +static void yy_flex_strncpy (char* s1, const char * s2, int n ) { int i; @@ -5627,7 +5637,7 @@ static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) #endif #ifdef YY_NEED_STRLEN -static int yy_flex_strlen (yyconst char * s ) +static int yy_flex_strlen (const char * s ) { int n; for ( n = 0; s[n]; ++n ) @@ -5662,7 +5672,6 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 583 "./util/configlexer.lex" - +#line 584 "./util/configlexer.lex" diff --git a/util/configparser.c b/util/configparser.c index 9253702bc..9b50af3f1 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.0.5. */ +/* 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 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 @@ -44,7 +44,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "3.0.5" +#define YYBISON_VERSION "3.0.4" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -299,97 +299,98 @@ extern int yydebug; VAR_RATELIMIT = 428, VAR_RATELIMIT_SLABS = 429, VAR_RATELIMIT_SIZE = 430, - VAR_RATELIMIT_FOR_DOMAIN = 431, - VAR_RATELIMIT_BELOW_DOMAIN = 432, - VAR_IP_RATELIMIT_FACTOR = 433, - VAR_RATELIMIT_FACTOR = 434, - VAR_SEND_CLIENT_SUBNET = 435, - VAR_CLIENT_SUBNET_ZONE = 436, - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 437, - VAR_CLIENT_SUBNET_OPCODE = 438, - VAR_MAX_CLIENT_SUBNET_IPV4 = 439, - VAR_MAX_CLIENT_SUBNET_IPV6 = 440, - VAR_MIN_CLIENT_SUBNET_IPV4 = 441, - VAR_MIN_CLIENT_SUBNET_IPV6 = 442, - VAR_MAX_ECS_TREE_SIZE_IPV4 = 443, - VAR_MAX_ECS_TREE_SIZE_IPV6 = 444, - VAR_CAPS_WHITELIST = 445, - VAR_CACHE_MAX_NEGATIVE_TTL = 446, - VAR_PERMIT_SMALL_HOLDDOWN = 447, - VAR_QNAME_MINIMISATION = 448, - VAR_QNAME_MINIMISATION_STRICT = 449, - VAR_IP_FREEBIND = 450, - VAR_DEFINE_TAG = 451, - VAR_LOCAL_ZONE_TAG = 452, - VAR_ACCESS_CONTROL_TAG = 453, - VAR_LOCAL_ZONE_OVERRIDE = 454, - VAR_ACCESS_CONTROL_TAG_ACTION = 455, - VAR_ACCESS_CONTROL_TAG_DATA = 456, - VAR_VIEW = 457, - VAR_ACCESS_CONTROL_VIEW = 458, - VAR_VIEW_FIRST = 459, - VAR_SERVE_EXPIRED = 460, - VAR_SERVE_EXPIRED_TTL = 461, - VAR_SERVE_EXPIRED_TTL_RESET = 462, - VAR_FAKE_DSA = 463, - VAR_FAKE_SHA1 = 464, - VAR_LOG_IDENTITY = 465, - VAR_HIDE_TRUSTANCHOR = 466, - VAR_TRUST_ANCHOR_SIGNALING = 467, - VAR_AGGRESSIVE_NSEC = 468, - VAR_USE_SYSTEMD = 469, - VAR_SHM_ENABLE = 470, - VAR_SHM_KEY = 471, - VAR_ROOT_KEY_SENTINEL = 472, - VAR_DNSCRYPT = 473, - VAR_DNSCRYPT_ENABLE = 474, - VAR_DNSCRYPT_PORT = 475, - VAR_DNSCRYPT_PROVIDER = 476, - VAR_DNSCRYPT_SECRET_KEY = 477, - VAR_DNSCRYPT_PROVIDER_CERT = 478, - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 479, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 480, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 481, - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 482, - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 483, - VAR_IPSECMOD_ENABLED = 484, - VAR_IPSECMOD_HOOK = 485, - VAR_IPSECMOD_IGNORE_BOGUS = 486, - VAR_IPSECMOD_MAX_TTL = 487, - VAR_IPSECMOD_WHITELIST = 488, - VAR_IPSECMOD_STRICT = 489, - VAR_CACHEDB = 490, - VAR_CACHEDB_BACKEND = 491, - VAR_CACHEDB_SECRETSEED = 492, - VAR_CACHEDB_REDISHOST = 493, - VAR_CACHEDB_REDISPORT = 494, - VAR_CACHEDB_REDISTIMEOUT = 495, - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 496, - VAR_FOR_UPSTREAM = 497, - VAR_AUTH_ZONE = 498, - VAR_ZONEFILE = 499, - VAR_MASTER = 500, - VAR_URL = 501, - VAR_FOR_DOWNSTREAM = 502, - VAR_FALLBACK_ENABLED = 503, - VAR_TLS_ADDITIONAL_PORT = 504, - VAR_LOW_RTT = 505, - VAR_LOW_RTT_PERMIL = 506, - VAR_FAST_SERVER_PERMIL = 507, - VAR_FAST_SERVER_NUM = 508, - VAR_ALLOW_NOTIFY = 509, - VAR_TLS_WIN_CERT = 510, - VAR_TCP_CONNECTION_LIMIT = 511, - VAR_FORWARD_NO_CACHE = 512, - VAR_STUB_NO_CACHE = 513, - VAR_LOG_SERVFAIL = 514, - VAR_DENY_ANY = 515, - VAR_UNKNOWN_SERVER_TIME_LIMIT = 516, - VAR_LOG_TAG_QUERYREPLY = 517, - VAR_STREAM_WAIT_SIZE = 518, - VAR_TLS_CIPHERS = 519, - VAR_TLS_CIPHERSUITES = 520, - VAR_TLS_SESSION_TICKET_KEYS = 521 + VAR_OUTBOUND_MSG_RETRY = 431, + VAR_RATELIMIT_FOR_DOMAIN = 432, + VAR_RATELIMIT_BELOW_DOMAIN = 433, + VAR_IP_RATELIMIT_FACTOR = 434, + VAR_RATELIMIT_FACTOR = 435, + VAR_SEND_CLIENT_SUBNET = 436, + VAR_CLIENT_SUBNET_ZONE = 437, + VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 438, + VAR_CLIENT_SUBNET_OPCODE = 439, + VAR_MAX_CLIENT_SUBNET_IPV4 = 440, + VAR_MAX_CLIENT_SUBNET_IPV6 = 441, + VAR_MIN_CLIENT_SUBNET_IPV4 = 442, + VAR_MIN_CLIENT_SUBNET_IPV6 = 443, + VAR_MAX_ECS_TREE_SIZE_IPV4 = 444, + VAR_MAX_ECS_TREE_SIZE_IPV6 = 445, + VAR_CAPS_WHITELIST = 446, + VAR_CACHE_MAX_NEGATIVE_TTL = 447, + VAR_PERMIT_SMALL_HOLDDOWN = 448, + VAR_QNAME_MINIMISATION = 449, + VAR_QNAME_MINIMISATION_STRICT = 450, + VAR_IP_FREEBIND = 451, + VAR_DEFINE_TAG = 452, + VAR_LOCAL_ZONE_TAG = 453, + VAR_ACCESS_CONTROL_TAG = 454, + VAR_LOCAL_ZONE_OVERRIDE = 455, + VAR_ACCESS_CONTROL_TAG_ACTION = 456, + VAR_ACCESS_CONTROL_TAG_DATA = 457, + VAR_VIEW = 458, + VAR_ACCESS_CONTROL_VIEW = 459, + VAR_VIEW_FIRST = 460, + VAR_SERVE_EXPIRED = 461, + VAR_SERVE_EXPIRED_TTL = 462, + VAR_SERVE_EXPIRED_TTL_RESET = 463, + VAR_FAKE_DSA = 464, + VAR_FAKE_SHA1 = 465, + VAR_LOG_IDENTITY = 466, + VAR_HIDE_TRUSTANCHOR = 467, + VAR_TRUST_ANCHOR_SIGNALING = 468, + VAR_AGGRESSIVE_NSEC = 469, + VAR_USE_SYSTEMD = 470, + VAR_SHM_ENABLE = 471, + VAR_SHM_KEY = 472, + VAR_ROOT_KEY_SENTINEL = 473, + VAR_DNSCRYPT = 474, + VAR_DNSCRYPT_ENABLE = 475, + VAR_DNSCRYPT_PORT = 476, + VAR_DNSCRYPT_PROVIDER = 477, + VAR_DNSCRYPT_SECRET_KEY = 478, + VAR_DNSCRYPT_PROVIDER_CERT = 479, + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 480, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 481, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 482, + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 483, + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 484, + VAR_IPSECMOD_ENABLED = 485, + VAR_IPSECMOD_HOOK = 486, + VAR_IPSECMOD_IGNORE_BOGUS = 487, + VAR_IPSECMOD_MAX_TTL = 488, + VAR_IPSECMOD_WHITELIST = 489, + VAR_IPSECMOD_STRICT = 490, + VAR_CACHEDB = 491, + VAR_CACHEDB_BACKEND = 492, + VAR_CACHEDB_SECRETSEED = 493, + VAR_CACHEDB_REDISHOST = 494, + VAR_CACHEDB_REDISPORT = 495, + VAR_CACHEDB_REDISTIMEOUT = 496, + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 497, + VAR_FOR_UPSTREAM = 498, + VAR_AUTH_ZONE = 499, + VAR_ZONEFILE = 500, + VAR_MASTER = 501, + VAR_URL = 502, + VAR_FOR_DOWNSTREAM = 503, + VAR_FALLBACK_ENABLED = 504, + VAR_TLS_ADDITIONAL_PORT = 505, + VAR_LOW_RTT = 506, + VAR_LOW_RTT_PERMIL = 507, + VAR_FAST_SERVER_PERMIL = 508, + VAR_FAST_SERVER_NUM = 509, + VAR_ALLOW_NOTIFY = 510, + VAR_TLS_WIN_CERT = 511, + VAR_TCP_CONNECTION_LIMIT = 512, + VAR_FORWARD_NO_CACHE = 513, + VAR_STUB_NO_CACHE = 514, + VAR_LOG_SERVFAIL = 515, + VAR_DENY_ANY = 516, + VAR_UNKNOWN_SERVER_TIME_LIMIT = 517, + VAR_LOG_TAG_QUERYREPLY = 518, + VAR_STREAM_WAIT_SIZE = 519, + VAR_TLS_CIPHERS = 520, + VAR_TLS_CIPHERSUITES = 521, + VAR_TLS_SESSION_TICKET_KEYS = 522 }; #endif /* Tokens. */ @@ -566,97 +567,98 @@ extern int yydebug; #define VAR_RATELIMIT 428 #define VAR_RATELIMIT_SLABS 429 #define VAR_RATELIMIT_SIZE 430 -#define VAR_RATELIMIT_FOR_DOMAIN 431 -#define VAR_RATELIMIT_BELOW_DOMAIN 432 -#define VAR_IP_RATELIMIT_FACTOR 433 -#define VAR_RATELIMIT_FACTOR 434 -#define VAR_SEND_CLIENT_SUBNET 435 -#define VAR_CLIENT_SUBNET_ZONE 436 -#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 437 -#define VAR_CLIENT_SUBNET_OPCODE 438 -#define VAR_MAX_CLIENT_SUBNET_IPV4 439 -#define VAR_MAX_CLIENT_SUBNET_IPV6 440 -#define VAR_MIN_CLIENT_SUBNET_IPV4 441 -#define VAR_MIN_CLIENT_SUBNET_IPV6 442 -#define VAR_MAX_ECS_TREE_SIZE_IPV4 443 -#define VAR_MAX_ECS_TREE_SIZE_IPV6 444 -#define VAR_CAPS_WHITELIST 445 -#define VAR_CACHE_MAX_NEGATIVE_TTL 446 -#define VAR_PERMIT_SMALL_HOLDDOWN 447 -#define VAR_QNAME_MINIMISATION 448 -#define VAR_QNAME_MINIMISATION_STRICT 449 -#define VAR_IP_FREEBIND 450 -#define VAR_DEFINE_TAG 451 -#define VAR_LOCAL_ZONE_TAG 452 -#define VAR_ACCESS_CONTROL_TAG 453 -#define VAR_LOCAL_ZONE_OVERRIDE 454 -#define VAR_ACCESS_CONTROL_TAG_ACTION 455 -#define VAR_ACCESS_CONTROL_TAG_DATA 456 -#define VAR_VIEW 457 -#define VAR_ACCESS_CONTROL_VIEW 458 -#define VAR_VIEW_FIRST 459 -#define VAR_SERVE_EXPIRED 460 -#define VAR_SERVE_EXPIRED_TTL 461 -#define VAR_SERVE_EXPIRED_TTL_RESET 462 -#define VAR_FAKE_DSA 463 -#define VAR_FAKE_SHA1 464 -#define VAR_LOG_IDENTITY 465 -#define VAR_HIDE_TRUSTANCHOR 466 -#define VAR_TRUST_ANCHOR_SIGNALING 467 -#define VAR_AGGRESSIVE_NSEC 468 -#define VAR_USE_SYSTEMD 469 -#define VAR_SHM_ENABLE 470 -#define VAR_SHM_KEY 471 -#define VAR_ROOT_KEY_SENTINEL 472 -#define VAR_DNSCRYPT 473 -#define VAR_DNSCRYPT_ENABLE 474 -#define VAR_DNSCRYPT_PORT 475 -#define VAR_DNSCRYPT_PROVIDER 476 -#define VAR_DNSCRYPT_SECRET_KEY 477 -#define VAR_DNSCRYPT_PROVIDER_CERT 478 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 479 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 480 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 481 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 482 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 483 -#define VAR_IPSECMOD_ENABLED 484 -#define VAR_IPSECMOD_HOOK 485 -#define VAR_IPSECMOD_IGNORE_BOGUS 486 -#define VAR_IPSECMOD_MAX_TTL 487 -#define VAR_IPSECMOD_WHITELIST 488 -#define VAR_IPSECMOD_STRICT 489 -#define VAR_CACHEDB 490 -#define VAR_CACHEDB_BACKEND 491 -#define VAR_CACHEDB_SECRETSEED 492 -#define VAR_CACHEDB_REDISHOST 493 -#define VAR_CACHEDB_REDISPORT 494 -#define VAR_CACHEDB_REDISTIMEOUT 495 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 496 -#define VAR_FOR_UPSTREAM 497 -#define VAR_AUTH_ZONE 498 -#define VAR_ZONEFILE 499 -#define VAR_MASTER 500 -#define VAR_URL 501 -#define VAR_FOR_DOWNSTREAM 502 -#define VAR_FALLBACK_ENABLED 503 -#define VAR_TLS_ADDITIONAL_PORT 504 -#define VAR_LOW_RTT 505 -#define VAR_LOW_RTT_PERMIL 506 -#define VAR_FAST_SERVER_PERMIL 507 -#define VAR_FAST_SERVER_NUM 508 -#define VAR_ALLOW_NOTIFY 509 -#define VAR_TLS_WIN_CERT 510 -#define VAR_TCP_CONNECTION_LIMIT 511 -#define VAR_FORWARD_NO_CACHE 512 -#define VAR_STUB_NO_CACHE 513 -#define VAR_LOG_SERVFAIL 514 -#define VAR_DENY_ANY 515 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 516 -#define VAR_LOG_TAG_QUERYREPLY 517 -#define VAR_STREAM_WAIT_SIZE 518 -#define VAR_TLS_CIPHERS 519 -#define VAR_TLS_CIPHERSUITES 520 -#define VAR_TLS_SESSION_TICKET_KEYS 521 +#define VAR_OUTBOUND_MSG_RETRY 431 +#define VAR_RATELIMIT_FOR_DOMAIN 432 +#define VAR_RATELIMIT_BELOW_DOMAIN 433 +#define VAR_IP_RATELIMIT_FACTOR 434 +#define VAR_RATELIMIT_FACTOR 435 +#define VAR_SEND_CLIENT_SUBNET 436 +#define VAR_CLIENT_SUBNET_ZONE 437 +#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 438 +#define VAR_CLIENT_SUBNET_OPCODE 439 +#define VAR_MAX_CLIENT_SUBNET_IPV4 440 +#define VAR_MAX_CLIENT_SUBNET_IPV6 441 +#define VAR_MIN_CLIENT_SUBNET_IPV4 442 +#define VAR_MIN_CLIENT_SUBNET_IPV6 443 +#define VAR_MAX_ECS_TREE_SIZE_IPV4 444 +#define VAR_MAX_ECS_TREE_SIZE_IPV6 445 +#define VAR_CAPS_WHITELIST 446 +#define VAR_CACHE_MAX_NEGATIVE_TTL 447 +#define VAR_PERMIT_SMALL_HOLDDOWN 448 +#define VAR_QNAME_MINIMISATION 449 +#define VAR_QNAME_MINIMISATION_STRICT 450 +#define VAR_IP_FREEBIND 451 +#define VAR_DEFINE_TAG 452 +#define VAR_LOCAL_ZONE_TAG 453 +#define VAR_ACCESS_CONTROL_TAG 454 +#define VAR_LOCAL_ZONE_OVERRIDE 455 +#define VAR_ACCESS_CONTROL_TAG_ACTION 456 +#define VAR_ACCESS_CONTROL_TAG_DATA 457 +#define VAR_VIEW 458 +#define VAR_ACCESS_CONTROL_VIEW 459 +#define VAR_VIEW_FIRST 460 +#define VAR_SERVE_EXPIRED 461 +#define VAR_SERVE_EXPIRED_TTL 462 +#define VAR_SERVE_EXPIRED_TTL_RESET 463 +#define VAR_FAKE_DSA 464 +#define VAR_FAKE_SHA1 465 +#define VAR_LOG_IDENTITY 466 +#define VAR_HIDE_TRUSTANCHOR 467 +#define VAR_TRUST_ANCHOR_SIGNALING 468 +#define VAR_AGGRESSIVE_NSEC 469 +#define VAR_USE_SYSTEMD 470 +#define VAR_SHM_ENABLE 471 +#define VAR_SHM_KEY 472 +#define VAR_ROOT_KEY_SENTINEL 473 +#define VAR_DNSCRYPT 474 +#define VAR_DNSCRYPT_ENABLE 475 +#define VAR_DNSCRYPT_PORT 476 +#define VAR_DNSCRYPT_PROVIDER 477 +#define VAR_DNSCRYPT_SECRET_KEY 478 +#define VAR_DNSCRYPT_PROVIDER_CERT 479 +#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 480 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 481 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 482 +#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 483 +#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 484 +#define VAR_IPSECMOD_ENABLED 485 +#define VAR_IPSECMOD_HOOK 486 +#define VAR_IPSECMOD_IGNORE_BOGUS 487 +#define VAR_IPSECMOD_MAX_TTL 488 +#define VAR_IPSECMOD_WHITELIST 489 +#define VAR_IPSECMOD_STRICT 490 +#define VAR_CACHEDB 491 +#define VAR_CACHEDB_BACKEND 492 +#define VAR_CACHEDB_SECRETSEED 493 +#define VAR_CACHEDB_REDISHOST 494 +#define VAR_CACHEDB_REDISPORT 495 +#define VAR_CACHEDB_REDISTIMEOUT 496 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 497 +#define VAR_FOR_UPSTREAM 498 +#define VAR_AUTH_ZONE 499 +#define VAR_ZONEFILE 500 +#define VAR_MASTER 501 +#define VAR_URL 502 +#define VAR_FOR_DOWNSTREAM 503 +#define VAR_FALLBACK_ENABLED 504 +#define VAR_TLS_ADDITIONAL_PORT 505 +#define VAR_LOW_RTT 506 +#define VAR_LOW_RTT_PERMIL 507 +#define VAR_FAST_SERVER_PERMIL 508 +#define VAR_FAST_SERVER_NUM 509 +#define VAR_ALLOW_NOTIFY 510 +#define VAR_TLS_WIN_CERT 511 +#define VAR_TCP_CONNECTION_LIMIT 512 +#define VAR_FORWARD_NO_CACHE 513 +#define VAR_STUB_NO_CACHE 514 +#define VAR_LOG_SERVFAIL 515 +#define VAR_DENY_ANY 516 +#define VAR_UNKNOWN_SERVER_TIME_LIMIT 517 +#define VAR_LOG_TAG_QUERYREPLY 518 +#define VAR_STREAM_WAIT_SIZE 519 +#define VAR_TLS_CIPHERS 520 +#define VAR_TLS_CIPHERSUITES 521 +#define VAR_TLS_SESSION_TICKET_KEYS 522 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -667,7 +669,7 @@ union YYSTYPE char* str; -#line 671 "util/configparser.c" /* yacc.c:355 */ +#line 673 "util/configparser.c" /* yacc.c:355 */ }; typedef union YYSTYPE YYSTYPE; @@ -684,7 +686,7 @@ int yyparse (void); /* Copy the second part of user declarations. */ -#line 688 "util/configparser.c" /* yacc.c:358 */ +#line 690 "util/configparser.c" /* yacc.c:358 */ #ifdef short # undef short @@ -926,21 +928,21 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 536 +#define YYLAST 538 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 267 +#define YYNTOKENS 268 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 286 +#define YYNNTS 287 /* YYNRULES -- Number of rules. */ -#define YYNRULES 549 +#define YYNRULES 551 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 823 +#define YYNSTATES 826 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 521 +#define YYMAXUTOK 522 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -1001,68 +1003,69 @@ static const yytype_uint16 yytranslate[] = 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 + 265, 266, 267 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 172, 172, 172, 173, 173, 174, 174, 175, 175, - 175, 176, 176, 177, 181, 186, 187, 188, 188, 188, - 189, 189, 190, 190, 191, 191, 192, 192, 192, 193, - 193, 194, 194, 194, 195, 195, 195, 196, 196, 197, - 197, 198, 198, 199, 199, 200, 200, 201, 201, 202, - 202, 203, 203, 204, 204, 204, 205, 205, 205, 206, - 206, 206, 207, 207, 208, 208, 209, 209, 210, 210, - 211, 211, 211, 212, 212, 213, 213, 214, 214, 214, - 215, 215, 216, 216, 217, 217, 218, 218, 218, 219, - 219, 220, 220, 221, 221, 222, 222, 223, 223, 224, - 224, 224, 225, 225, 226, 226, 226, 227, 227, 227, - 228, 228, 228, 229, 229, 229, 229, 230, 231, 231, - 231, 232, 232, 232, 233, 233, 234, 234, 235, 235, - 235, 236, 236, 237, 237, 237, 238, 238, 239, 239, - 240, 241, 241, 242, 242, 243, 243, 244, 245, 245, - 246, 246, 247, 247, 248, 248, 249, 249, 250, 250, - 250, 251, 251, 252, 252, 253, 253, 254, 254, 255, - 255, 256, 256, 256, 257, 257, 257, 258, 258, 258, - 259, 259, 260, 261, 261, 262, 262, 263, 263, 264, - 264, 265, 265, 265, 266, 266, 266, 267, 267, 267, - 268, 268, 269, 269, 270, 270, 272, 284, 285, 286, - 286, 286, 286, 286, 287, 287, 289, 301, 302, 303, - 303, 303, 303, 304, 304, 306, 320, 321, 322, 322, - 322, 322, 323, 323, 323, 325, 341, 342, 343, 343, - 343, 343, 344, 344, 344, 345, 347, 356, 365, 376, - 385, 394, 403, 414, 423, 434, 447, 462, 473, 490, - 507, 524, 541, 556, 571, 584, 599, 608, 617, 626, - 635, 644, 653, 662, 671, 680, 689, 698, 707, 716, - 729, 738, 751, 760, 769, 778, 785, 792, 801, 808, - 817, 825, 832, 839, 847, 856, 865, 879, 888, 897, - 906, 915, 924, 933, 940, 947, 973, 981, 988, 995, - 1002, 1009, 1017, 1025, 1033, 1040, 1051, 1062, 1069, 1078, - 1087, 1096, 1103, 1110, 1118, 1126, 1136, 1146, 1156, 1164, - 1177, 1188, 1196, 1209, 1218, 1227, 1236, 1246, 1256, 1264, - 1277, 1286, 1294, 1303, 1311, 1324, 1333, 1340, 1350, 1360, - 1370, 1380, 1390, 1400, 1410, 1420, 1427, 1434, 1441, 1450, - 1459, 1468, 1477, 1484, 1494, 1514, 1521, 1539, 1552, 1565, - 1574, 1583, 1592, 1601, 1611, 1621, 1632, 1641, 1650, 1659, - 1668, 1681, 1694, 1703, 1710, 1719, 1728, 1737, 1746, 1754, - 1767, 1775, 1808, 1815, 1830, 1840, 1850, 1857, 1864, 1871, - 1880, 1888, 1902, 1923, 1944, 1956, 1968, 1980, 1989, 2010, - 2020, 2029, 2037, 2045, 2058, 2071, 2086, 2101, 2110, 2119, - 2125, 2134, 2143, 2153, 2163, 2176, 2189, 2201, 2215, 2227, - 2241, 2251, 2258, 2265, 2274, 2283, 2293, 2303, 2313, 2320, - 2327, 2336, 2345, 2355, 2365, 2372, 2379, 2386, 2394, 2404, - 2414, 2424, 2434, 2466, 2476, 2484, 2492, 2507, 2516, 2521, - 2522, 2523, 2523, 2523, 2524, 2524, 2524, 2525, 2525, 2527, - 2537, 2546, 2553, 2560, 2567, 2574, 2581, 2588, 2593, 2594, - 2595, 2595, 2596, 2596, 2597, 2597, 2598, 2599, 2600, 2601, - 2602, 2603, 2605, 2614, 2621, 2630, 2639, 2646, 2653, 2663, - 2673, 2683, 2693, 2703, 2713, 2718, 2719, 2720, 2722, 2728, - 2738, 2745, 2754, 2762, 2767, 2768, 2770, 2770, 2770, 2771, - 2771, 2772, 2773, 2774, 2775, 2776, 2778, 2788, 2797, 2804, - 2813, 2820, 2829, 2837, 2850, 2858, 2871, 2876, 2877, 2878, - 2878, 2879, 2879, 2879, 2881, 2896, 2911, 2923, 2938, 2951 + 0, 173, 173, 173, 174, 174, 175, 175, 176, 176, + 176, 177, 177, 178, 182, 187, 188, 189, 189, 189, + 190, 190, 191, 191, 192, 192, 193, 193, 193, 194, + 194, 195, 195, 195, 196, 196, 196, 197, 197, 198, + 198, 199, 199, 200, 200, 201, 201, 202, 202, 203, + 203, 204, 204, 205, 205, 205, 206, 206, 206, 207, + 207, 207, 208, 208, 209, 209, 210, 210, 211, 211, + 212, 212, 212, 213, 213, 214, 214, 215, 215, 215, + 216, 216, 217, 217, 218, 218, 219, 219, 219, 220, + 220, 221, 221, 222, 222, 223, 223, 224, 224, 225, + 225, 225, 226, 226, 227, 227, 227, 228, 228, 228, + 229, 229, 229, 230, 230, 230, 230, 231, 232, 232, + 232, 233, 233, 233, 234, 234, 235, 235, 236, 236, + 236, 237, 237, 238, 238, 238, 239, 239, 240, 240, + 241, 242, 242, 243, 243, 244, 244, 245, 245, 246, + 246, 247, 247, 248, 248, 249, 249, 250, 250, 251, + 251, 251, 252, 252, 253, 253, 254, 254, 255, 255, + 256, 256, 257, 257, 257, 258, 258, 258, 259, 259, + 259, 260, 260, 261, 262, 262, 263, 263, 264, 264, + 265, 265, 266, 266, 266, 267, 267, 267, 268, 268, + 268, 269, 269, 270, 270, 271, 271, 273, 285, 286, + 287, 287, 287, 287, 287, 288, 288, 290, 302, 303, + 304, 304, 304, 304, 305, 305, 307, 321, 322, 323, + 323, 323, 323, 324, 324, 324, 326, 342, 343, 344, + 344, 344, 344, 345, 345, 345, 346, 348, 357, 366, + 377, 386, 395, 404, 415, 424, 435, 448, 463, 474, + 491, 508, 525, 542, 557, 572, 585, 600, 609, 618, + 627, 636, 645, 654, 663, 672, 681, 690, 699, 708, + 717, 730, 739, 752, 761, 770, 779, 786, 793, 802, + 809, 818, 826, 833, 840, 848, 857, 866, 880, 889, + 898, 907, 916, 925, 934, 941, 948, 974, 982, 989, + 996, 1003, 1010, 1018, 1026, 1034, 1041, 1052, 1063, 1070, + 1079, 1088, 1097, 1104, 1111, 1119, 1127, 1137, 1147, 1157, + 1165, 1178, 1189, 1197, 1210, 1219, 1228, 1237, 1247, 1257, + 1265, 1278, 1287, 1295, 1304, 1312, 1325, 1334, 1341, 1351, + 1361, 1371, 1381, 1391, 1401, 1411, 1421, 1428, 1435, 1442, + 1451, 1460, 1469, 1478, 1485, 1495, 1515, 1522, 1540, 1553, + 1566, 1575, 1584, 1593, 1602, 1612, 1622, 1633, 1642, 1651, + 1660, 1669, 1682, 1695, 1704, 1711, 1720, 1729, 1738, 1747, + 1755, 1768, 1776, 1809, 1816, 1831, 1841, 1851, 1858, 1865, + 1872, 1881, 1889, 1903, 1924, 1945, 1957, 1969, 1981, 1990, + 2011, 2021, 2030, 2038, 2046, 2059, 2072, 2087, 2102, 2111, + 2120, 2129, 2135, 2144, 2153, 2163, 2173, 2186, 2199, 2211, + 2225, 2237, 2251, 2261, 2268, 2275, 2284, 2293, 2303, 2313, + 2323, 2330, 2337, 2346, 2355, 2365, 2375, 2382, 2389, 2396, + 2404, 2414, 2424, 2434, 2444, 2476, 2486, 2494, 2502, 2517, + 2526, 2531, 2532, 2533, 2533, 2533, 2534, 2534, 2534, 2535, + 2535, 2537, 2547, 2556, 2563, 2570, 2577, 2584, 2591, 2598, + 2603, 2604, 2605, 2605, 2606, 2606, 2607, 2607, 2608, 2609, + 2610, 2611, 2612, 2613, 2615, 2624, 2631, 2640, 2649, 2656, + 2663, 2673, 2683, 2693, 2703, 2713, 2723, 2728, 2729, 2730, + 2732, 2738, 2748, 2755, 2764, 2772, 2777, 2778, 2780, 2780, + 2780, 2781, 2781, 2782, 2783, 2784, 2785, 2786, 2788, 2798, + 2807, 2814, 2823, 2830, 2839, 2847, 2860, 2868, 2881, 2886, + 2887, 2888, 2888, 2889, 2889, 2889, 2891, 2906, 2921, 2933, + 2948, 2961 }; #endif @@ -1132,20 +1135,21 @@ static const char *const yytname[] = "VAR_IP_TRANSPARENT", "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_OUTBOUND_MSG_RETRY", "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_FAKE_DSA", "VAR_FAKE_SHA1", "VAR_LOG_IDENTITY", "VAR_HIDE_TRUSTANCHOR", "VAR_TRUST_ANCHOR_SIGNALING", "VAR_AGGRESSIVE_NSEC", "VAR_USE_SYSTEMD", "VAR_SHM_ENABLE", @@ -1249,16 +1253,17 @@ static const char *const yytname[] = "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", + "server_ratelimit_factor", "server_outbound_msg_retry", "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", @@ -1320,14 +1325,14 @@ static const yytype_uint16 yytoknum[] = 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 + 515, 516, 517, 518, 519, 520, 521, 522 }; # endif -#define YYPACT_NINF -154 +#define YYPACT_NINF -155 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-154))) + (!!((Yystate) == (-155))) #define YYTABLE_NINF -1 @@ -1338,89 +1343,89 @@ static const yytype_uint16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - -154, 212, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -12, 102, 98, 166, 39, 213, - 142, -80, 52, -153, 22, 23, 24, 28, 29, 30, + -155, 213, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -12, 103, 99, 167, 39, 214, + 143, -80, 52, -154, 22, 23, 24, 28, 29, 30, 78, 79, 80, 84, 88, 89, 114, 115, 116, 118, - 129, 130, 132, 133, 134, 136, 141, 180, 182, 196, - 197, 200, 201, 203, 204, 205, 206, 214, 215, 216, - 217, 218, 220, 221, 222, 223, 225, 245, 247, 248, - 249, 250, 251, 253, 254, 255, 256, 257, 258, 259, - 272, 278, 279, 280, 281, 282, 297, 306, 307, 308, - 309, 310, 311, 313, 314, 315, 316, 317, 318, 319, - 320, 323, 324, 325, 326, 327, 328, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, 343, 344, 346, 347, 348, 349, 351, 352, 354, - 355, 356, 357, 358, 359, 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, 405, 406, - 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 438, - 439, 440, 441, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, 442, 443, 444, 446, 447, 448, 449, - -154, -154, -154, -154, -154, -154, -154, -154, 450, 451, - 452, 453, 454, 455, -154, -154, -154, -154, -154, -154, - -154, 456, 457, 458, 459, 460, 461, 462, -154, -154, - -154, -154, -154, -154, -154, -154, 463, 464, 465, 466, - 467, 468, 469, 470, -154, -154, -154, -154, -154, -154, - -154, -154, -154, 471, 472, 473, 474, 475, 476, 477, - 478, -154, -154, -154, -154, -154, -154, -154, -154, -154, - 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, - 489, 490, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, 491, -154, -154, 492, 493, - 494, 495, 496, 497, 498, 499, 500, 501, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, 502, - 503, 504, 505, 506, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, 507, - 508, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, 509, 510, 511, -154, - -154, -154, -154, -154, -154, -154, -154, -154, 512, 513, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, 514, - 515, 516, 517, 518, 519, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - 520, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, 521, -154, -154, 522, 523, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, 524, 525, 526, -154, -154, -154, -154, -154, - -154, -154, -154 + 129, 130, 131, 133, 134, 135, 137, 181, 183, 197, + 198, 201, 202, 204, 205, 206, 207, 215, 216, 217, + 218, 219, 221, 222, 223, 224, 226, 246, 248, 249, + 250, 251, 252, 254, 255, 256, 257, 258, 259, 260, + 273, 279, 280, 281, 282, 283, 298, 307, 308, 309, + 310, 311, 312, 314, 315, 316, 317, 318, 319, 320, + 321, 324, 325, 326, 327, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + 343, 344, 345, 346, 348, 349, 350, 351, 353, 355, + 356, 357, 358, 359, 360, 361, 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, 407, + 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, + 418, 419, 420, 421, 423, 424, 425, 426, 427, 428, + 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, + 440, 441, 442, 443, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, 444, 445, 446, 448, 449, + 450, 451, -155, -155, -155, -155, -155, -155, -155, -155, + 452, 453, 454, 455, 456, 457, -155, -155, -155, -155, + -155, -155, -155, 458, 459, 460, 461, 462, 463, 464, + -155, -155, -155, -155, -155, -155, -155, -155, 465, 466, + 467, 468, 469, 470, 471, 472, -155, -155, -155, -155, + -155, -155, -155, -155, -155, 473, 474, 475, 476, 477, + 478, 479, 480, -155, -155, -155, -155, -155, -155, -155, + -155, -155, 481, 482, 483, 484, 485, 486, 487, 488, + 489, 490, 491, 492, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, 493, -155, -155, + 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, 504, 505, 506, 507, 508, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, 509, 510, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, 511, 512, + 513, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, 514, 515, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, 516, 517, 518, 519, 520, 521, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, 522, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, 523, -155, -155, 524, + 525, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, 526, 527, 528, -155, -155, + -155, -155, -155, -155, -155, -155 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1428,9 +1433,9 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint16 yydefact[] = { - 2, 0, 1, 14, 206, 216, 458, 504, 477, 225, - 513, 536, 235, 3, 16, 208, 218, 227, 237, 460, - 479, 506, 515, 538, 4, 5, 6, 10, 13, 8, + 2, 0, 1, 14, 207, 217, 460, 506, 479, 226, + 515, 538, 236, 3, 16, 209, 219, 228, 238, 462, + 481, 508, 517, 540, 4, 5, 6, 10, 13, 8, 9, 7, 11, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1450,135 +1455,135 @@ 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, 15, 17, 18, 80, 83, 92, 177, - 178, 19, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 31, 71, 20, 84, 85, 42, 64, 79, - 21, 22, 24, 25, 23, 26, 27, 28, 29, 30, - 115, 189, 116, 118, 119, 120, 191, 196, 192, 203, - 204, 205, 173, 81, 70, 96, 113, 114, 201, 198, - 117, 32, 33, 34, 35, 36, 72, 86, 87, 102, - 58, 68, 59, 181, 182, 97, 52, 53, 180, 54, - 55, 106, 110, 124, 133, 158, 202, 107, 65, 37, - 38, 39, 94, 125, 126, 127, 40, 41, 43, 44, - 46, 47, 45, 131, 48, 49, 50, 56, 75, 111, - 89, 132, 82, 154, 90, 91, 108, 109, 199, 95, - 51, 73, 76, 57, 60, 98, 99, 74, 155, 100, - 61, 62, 63, 190, 112, 168, 169, 170, 171, 179, - 101, 69, 103, 104, 105, 156, 66, 67, 88, 77, - 78, 93, 121, 122, 200, 123, 128, 129, 130, 159, - 160, 162, 164, 165, 163, 166, 174, 134, 135, 138, - 139, 136, 137, 140, 141, 143, 142, 193, 195, 194, - 157, 167, 183, 185, 184, 186, 187, 188, 161, 172, - 175, 176, 197, 0, 0, 0, 0, 0, 0, 0, - 207, 209, 210, 211, 213, 214, 215, 212, 0, 0, - 0, 0, 0, 0, 217, 219, 220, 221, 222, 223, - 224, 0, 0, 0, 0, 0, 0, 0, 226, 228, - 229, 232, 233, 230, 234, 231, 0, 0, 0, 0, - 0, 0, 0, 0, 236, 238, 239, 240, 241, 245, - 242, 243, 244, 0, 0, 0, 0, 0, 0, 0, - 0, 459, 461, 463, 462, 468, 464, 465, 466, 467, + 0, 0, 0, 0, 15, 17, 18, 80, 83, 92, + 178, 179, 19, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 31, 71, 20, 84, 85, 42, 64, + 79, 21, 22, 24, 25, 23, 26, 27, 28, 29, + 30, 115, 190, 116, 118, 119, 120, 192, 197, 193, + 204, 205, 206, 174, 81, 70, 96, 113, 114, 202, + 199, 117, 32, 33, 34, 35, 36, 72, 86, 87, + 102, 58, 68, 59, 182, 183, 97, 52, 53, 181, + 54, 55, 106, 110, 124, 133, 159, 203, 107, 65, + 37, 38, 39, 94, 125, 126, 127, 40, 41, 43, + 44, 46, 47, 45, 131, 48, 49, 50, 56, 75, + 111, 89, 132, 82, 155, 90, 91, 108, 109, 200, + 95, 51, 73, 76, 57, 60, 98, 99, 74, 156, + 100, 61, 62, 63, 191, 112, 169, 170, 171, 172, + 180, 101, 69, 103, 104, 105, 157, 66, 67, 88, + 77, 78, 93, 121, 122, 201, 123, 128, 129, 130, + 160, 161, 163, 165, 166, 164, 167, 175, 134, 135, + 138, 139, 136, 137, 140, 141, 143, 142, 144, 194, + 196, 195, 158, 168, 184, 186, 185, 187, 188, 189, + 162, 173, 176, 177, 198, 0, 0, 0, 0, 0, + 0, 0, 208, 210, 211, 212, 214, 215, 216, 213, + 0, 0, 0, 0, 0, 0, 218, 220, 221, 222, + 223, 224, 225, 0, 0, 0, 0, 0, 0, 0, + 227, 229, 230, 233, 234, 231, 235, 232, 0, 0, + 0, 0, 0, 0, 0, 0, 237, 239, 240, 241, + 242, 246, 243, 244, 245, 0, 0, 0, 0, 0, + 0, 0, 0, 461, 463, 465, 464, 470, 466, 467, + 468, 469, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 480, 482, 483, 484, 485, 486, + 487, 488, 489, 490, 491, 492, 493, 0, 507, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 478, 480, 481, 482, 483, 484, 485, 486, - 487, 488, 489, 490, 491, 0, 505, 507, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 514, 516, - 517, 518, 520, 521, 519, 522, 523, 524, 525, 0, - 0, 0, 0, 0, 537, 539, 540, 541, 542, 543, - 247, 246, 253, 266, 264, 272, 273, 276, 274, 275, - 277, 278, 279, 280, 281, 303, 304, 305, 306, 307, - 331, 332, 333, 338, 339, 269, 340, 341, 344, 342, - 343, 346, 347, 348, 362, 318, 319, 321, 322, 349, - 365, 312, 314, 366, 372, 373, 374, 270, 330, 388, - 389, 313, 383, 296, 265, 308, 363, 369, 350, 0, - 0, 392, 271, 248, 295, 354, 249, 267, 268, 309, - 310, 390, 352, 356, 357, 250, 393, 334, 361, 297, - 317, 367, 368, 371, 382, 311, 386, 384, 385, 323, - 329, 358, 359, 324, 325, 351, 376, 298, 299, 302, - 282, 284, 285, 286, 287, 288, 394, 395, 397, 335, - 336, 337, 345, 398, 399, 400, 0, 0, 0, 353, - 326, 509, 409, 413, 411, 410, 414, 412, 0, 0, - 417, 418, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 355, 370, 387, 422, 423, 327, 401, 0, - 0, 0, 0, 0, 0, 377, 378, 379, 380, 381, - 510, 320, 315, 375, 294, 251, 252, 316, 424, 426, - 425, 427, 428, 429, 283, 290, 419, 421, 420, 289, - 0, 301, 360, 396, 300, 328, 291, 292, 293, 430, - 431, 432, 436, 435, 433, 434, 437, 438, 439, 440, - 442, 441, 451, 0, 455, 456, 0, 0, 457, 443, - 449, 444, 445, 446, 448, 450, 447, 469, 471, 470, - 473, 474, 475, 476, 472, 492, 493, 494, 495, 496, - 497, 498, 499, 500, 501, 502, 503, 508, 526, 527, - 528, 531, 529, 530, 532, 533, 534, 535, 544, 545, - 546, 547, 548, 364, 391, 408, 511, 512, 415, 416, - 402, 403, 0, 0, 0, 407, 549, 452, 453, 454, - 406, 404, 405 + 516, 518, 519, 520, 522, 523, 521, 524, 525, 526, + 527, 0, 0, 0, 0, 0, 539, 541, 542, 543, + 544, 545, 248, 247, 254, 267, 265, 273, 274, 277, + 275, 276, 278, 279, 280, 281, 282, 304, 305, 306, + 307, 308, 332, 333, 334, 339, 340, 270, 341, 342, + 345, 343, 344, 347, 348, 349, 363, 319, 320, 322, + 323, 350, 366, 313, 315, 367, 373, 374, 375, 271, + 331, 389, 390, 314, 384, 297, 266, 309, 364, 370, + 351, 0, 0, 393, 272, 249, 296, 355, 250, 268, + 269, 310, 311, 391, 353, 357, 358, 251, 394, 335, + 362, 298, 318, 368, 369, 372, 383, 312, 387, 385, + 386, 324, 330, 359, 360, 325, 326, 352, 377, 299, + 300, 303, 283, 285, 286, 287, 288, 289, 395, 396, + 398, 336, 337, 338, 346, 399, 400, 401, 0, 0, + 0, 354, 327, 511, 410, 414, 412, 411, 415, 413, + 420, 0, 0, 418, 419, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 356, 371, 388, 424, 425, + 328, 402, 0, 0, 0, 0, 0, 0, 378, 379, + 380, 381, 382, 512, 321, 316, 376, 295, 252, 253, + 317, 426, 428, 427, 429, 430, 431, 284, 291, 421, + 423, 422, 290, 0, 302, 361, 397, 301, 329, 292, + 293, 294, 432, 433, 434, 438, 437, 435, 436, 439, + 440, 441, 442, 444, 443, 453, 0, 457, 458, 0, + 0, 459, 445, 451, 446, 447, 448, 450, 452, 449, + 471, 473, 472, 475, 476, 477, 478, 474, 494, 495, + 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, + 510, 528, 529, 530, 533, 531, 532, 534, 535, 536, + 537, 546, 547, 548, 549, 550, 365, 392, 409, 513, + 514, 416, 417, 403, 404, 0, 0, 0, 408, 551, + 454, 455, 456, 407, 405, 406 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154, -154, -154, -154, -154, - -154, -154, -154, -154, -154, -154 + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155, -155, -155, -155, + -155, -155, -155, -155, -155, -155, -155 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 13, 14, 24, 223, 15, 25, 420, 16, - 26, 434, 17, 27, 448, 18, 28, 464, 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, - 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, 421, 422, 423, 424, 425, 426, 427, 435, - 436, 437, 438, 439, 440, 465, 466, 467, 468, 469, - 470, 471, 472, 449, 450, 451, 452, 453, 454, 455, - 19, 29, 481, 482, 483, 484, 485, 486, 487, 488, - 489, 20, 30, 502, 503, 504, 505, 506, 507, 508, - 509, 510, 511, 512, 513, 514, 21, 31, 516, 517, - 408, 409, 410, 411, 22, 32, 528, 529, 530, 531, - 532, 533, 534, 535, 536, 537, 538, 23, 33, 544, - 545, 546, 547, 548, 549, 412 + -1, 1, 13, 14, 24, 224, 15, 25, 422, 16, + 26, 436, 17, 27, 450, 18, 28, 466, 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, 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, 423, 424, 425, 426, 427, 428, 429, + 437, 438, 439, 440, 441, 442, 467, 468, 469, 470, + 471, 472, 473, 474, 451, 452, 453, 454, 455, 456, + 457, 19, 29, 483, 484, 485, 486, 487, 488, 489, + 490, 491, 20, 30, 504, 505, 506, 507, 508, 509, + 510, 511, 512, 513, 514, 515, 516, 21, 31, 518, + 519, 410, 411, 412, 413, 22, 32, 530, 531, 532, + 533, 534, 535, 536, 537, 538, 539, 540, 23, 33, + 546, 547, 548, 549, 550, 551, 414 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1589,57 +1594,57 @@ static const yytype_uint16 yytable[] = 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, 515, 550, 551, 552, 65, 66, 67, 553, 554, - 555, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 64, 517, 552, 553, 554, 65, 66, 67, 555, 556, + 557, 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, 456, 539, 540, 541, 542, 543, 556, 557, - 558, 109, 110, 111, 559, 112, 113, 114, 560, 561, + 107, 108, 458, 541, 542, 543, 544, 545, 558, 559, + 560, 109, 110, 111, 561, 112, 113, 114, 562, 563, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 562, 563, 564, 139, 565, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 566, - 567, 428, 568, 569, 570, 413, 571, 414, 415, 429, - 430, 572, 150, 151, 152, 153, 154, 155, 156, 157, + 135, 136, 137, 138, 564, 565, 566, 139, 567, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 568, + 569, 570, 430, 571, 572, 573, 415, 574, 416, 417, + 431, 432, 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, - 573, 188, 574, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 575, 576, 416, 441, - 577, 578, 2, 579, 580, 581, 582, 202, 203, 204, - 205, 206, 207, 3, 583, 584, 585, 586, 587, 208, - 588, 589, 590, 591, 431, 592, 432, 209, 210, 417, - 211, 212, 418, 213, 214, 442, 443, 215, 216, 217, - 218, 219, 220, 221, 222, 593, 4, 594, 595, 596, - 597, 598, 5, 599, 600, 601, 602, 603, 604, 605, - 444, 518, 519, 520, 521, 522, 523, 524, 525, 526, - 527, 457, 606, 458, 459, 460, 461, 462, 607, 608, - 609, 610, 611, 463, 490, 491, 492, 493, 494, 495, - 496, 497, 498, 499, 500, 501, 6, 612, 473, 474, - 475, 476, 477, 478, 479, 480, 613, 614, 615, 616, - 617, 618, 7, 619, 620, 621, 622, 623, 624, 625, - 626, 445, 446, 627, 628, 629, 630, 631, 632, 633, - 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, - 644, 645, 646, 647, 648, 433, 649, 650, 651, 652, - 419, 653, 654, 8, 655, 656, 657, 658, 659, 660, - 447, 661, 662, 663, 664, 665, 666, 667, 668, 669, - 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, - 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, - 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, - 700, 701, 702, 703, 9, 704, 705, 706, 707, 708, - 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, - 10, 719, 720, 721, 722, 723, 724, 725, 726, 727, - 728, 729, 730, 731, 732, 733, 734, 11, 735, 736, - 737, 738, 739, 740, 741, 12, 742, 743, 744, 745, - 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, - 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, - 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, - 776, 777, 778, 779, 780, 781, 782, 783, 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, 812, 813, 814, 815, - 816, 817, 818, 819, 820, 821, 822 + 188, 575, 189, 576, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 577, 578, 418, + 443, 579, 580, 2, 581, 582, 583, 584, 203, 204, + 205, 206, 207, 208, 3, 585, 586, 587, 588, 589, + 209, 590, 591, 592, 593, 433, 594, 434, 210, 211, + 419, 212, 213, 420, 214, 215, 444, 445, 216, 217, + 218, 219, 220, 221, 222, 223, 595, 4, 596, 597, + 598, 599, 600, 5, 601, 602, 603, 604, 605, 606, + 607, 446, 520, 521, 522, 523, 524, 525, 526, 527, + 528, 529, 459, 608, 460, 461, 462, 463, 464, 609, + 610, 611, 612, 613, 465, 492, 493, 494, 495, 496, + 497, 498, 499, 500, 501, 502, 503, 6, 614, 475, + 476, 477, 478, 479, 480, 481, 482, 615, 616, 617, + 618, 619, 620, 7, 621, 622, 623, 624, 625, 626, + 627, 628, 447, 448, 629, 630, 631, 632, 633, 634, + 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, + 645, 646, 647, 648, 649, 650, 651, 435, 652, 653, + 654, 655, 421, 656, 8, 657, 658, 659, 660, 661, + 662, 663, 449, 664, 665, 666, 667, 668, 669, 670, + 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, + 681, 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, 9, 707, 708, 709, + 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, + 720, 721, 10, 722, 723, 724, 725, 726, 727, 728, + 729, 730, 731, 732, 733, 734, 735, 736, 737, 11, + 738, 739, 740, 741, 742, 743, 744, 12, 745, 746, + 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, + 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, + 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, + 777, 778, 779, 780, 781, 782, 783, 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, 812, 813, 814, 815, 816, + 817, 818, 819, 820, 821, 822, 823, 824, 825 }; static const yytype_uint16 yycheck[] = @@ -1652,44 +1657,44 @@ static const yytype_uint16 yycheck[] = 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, 43, 236, 237, 238, 239, 240, 10, 10, + 92, 93, 43, 237, 238, 239, 240, 241, 10, 10, 10, 103, 104, 105, 10, 107, 108, 109, 10, 10, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 10, 10, 10, 139, 10, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 10, - 10, 43, 10, 10, 10, 43, 10, 45, 46, 51, - 52, 10, 164, 165, 166, 167, 168, 169, 170, 171, + 10, 10, 43, 10, 10, 10, 43, 10, 45, 46, + 51, 52, 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, - 10, 203, 10, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 10, 10, 106, 43, - 10, 10, 0, 10, 10, 10, 10, 229, 230, 231, - 232, 233, 234, 11, 10, 10, 10, 10, 10, 241, - 10, 10, 10, 10, 136, 10, 138, 249, 250, 137, - 252, 253, 140, 255, 256, 79, 80, 259, 260, 261, - 262, 263, 264, 265, 266, 10, 44, 10, 10, 10, - 10, 10, 50, 10, 10, 10, 10, 10, 10, 10, - 104, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 242, 10, 244, 245, 246, 247, 248, 10, 10, - 10, 10, 10, 254, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 94, 10, 95, 96, - 97, 98, 99, 100, 101, 102, 10, 10, 10, 10, - 10, 10, 110, 10, 10, 10, 10, 10, 10, 10, - 10, 165, 166, 10, 10, 10, 10, 10, 10, 10, + 202, 10, 204, 10, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 10, 10, 106, + 43, 10, 10, 0, 10, 10, 10, 10, 230, 231, + 232, 233, 234, 235, 11, 10, 10, 10, 10, 10, + 242, 10, 10, 10, 10, 136, 10, 138, 250, 251, + 137, 253, 254, 140, 256, 257, 79, 80, 260, 261, + 262, 263, 264, 265, 266, 267, 10, 44, 10, 10, + 10, 10, 10, 50, 10, 10, 10, 10, 10, 10, + 10, 104, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 243, 10, 245, 246, 247, 248, 249, 10, + 10, 10, 10, 10, 255, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 94, 10, 95, + 96, 97, 98, 99, 100, 101, 102, 10, 10, 10, + 10, 10, 10, 110, 10, 10, 10, 10, 10, 10, + 10, 10, 165, 166, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 257, 10, 10, 10, 10, - 258, 10, 10, 151, 10, 10, 10, 10, 10, 10, - 204, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 258, 10, 10, + 10, 10, 259, 10, 151, 10, 10, 10, 10, 10, + 10, 10, 205, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 202, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 203, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 218, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 235, 10, 10, - 10, 10, 10, 10, 10, 243, 10, 10, 10, 10, + 10, 10, 219, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 236, + 10, 10, 10, 10, 10, 10, 10, 244, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -1697,17 +1702,17 @@ static const yytype_uint16 yycheck[] = 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10 + 10, 10, 10, 10, 10, 10, 10, 10, 10 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint16 yystos[] = { - 0, 268, 0, 11, 44, 50, 94, 110, 151, 202, - 218, 235, 243, 269, 270, 273, 276, 279, 282, 497, - 508, 523, 531, 544, 271, 274, 277, 280, 283, 498, - 509, 524, 532, 545, 12, 13, 14, 15, 16, 17, + 0, 269, 0, 11, 44, 50, 94, 110, 151, 203, + 219, 236, 244, 270, 271, 274, 277, 280, 283, 499, + 510, 525, 533, 546, 272, 275, 278, 281, 284, 500, + 511, 526, 534, 547, 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, 47, 48, 49, 53, 54, @@ -1722,11 +1727,11 @@ static const yytype_uint16 yystos[] = 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, 203, 205, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 204, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 229, 230, 231, 232, 233, 234, 241, 249, - 250, 252, 253, 255, 256, 259, 260, 261, 262, 263, - 264, 265, 266, 272, 285, 286, 287, 288, 289, 290, + 216, 217, 218, 230, 231, 232, 233, 234, 235, 242, + 250, 251, 253, 254, 256, 257, 260, 261, 262, 263, + 264, 265, 266, 267, 273, 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, @@ -1744,21 +1749,22 @@ static const yytype_uint16 yystos[] = 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, 527, 528, - 529, 530, 552, 43, 45, 46, 106, 137, 140, 258, - 275, 469, 470, 471, 472, 473, 474, 475, 43, 51, - 52, 136, 138, 257, 278, 476, 477, 478, 479, 480, - 481, 43, 79, 80, 104, 165, 166, 204, 281, 490, - 491, 492, 493, 494, 495, 496, 43, 242, 244, 245, - 246, 247, 248, 254, 284, 482, 483, 484, 485, 486, - 487, 488, 489, 95, 96, 97, 98, 99, 100, 101, - 102, 499, 500, 501, 502, 503, 504, 505, 506, 507, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 510, 511, 512, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 522, 111, 525, 526, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542, 543, 236, - 237, 238, 239, 240, 546, 547, 548, 549, 550, 551, + 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, + 529, 530, 531, 532, 554, 43, 45, 46, 106, 137, + 140, 259, 276, 471, 472, 473, 474, 475, 476, 477, + 43, 51, 52, 136, 138, 258, 279, 478, 479, 480, + 481, 482, 483, 43, 79, 80, 104, 165, 166, 205, + 282, 492, 493, 494, 495, 496, 497, 498, 43, 243, + 245, 246, 247, 248, 249, 255, 285, 484, 485, 486, + 487, 488, 489, 490, 491, 95, 96, 97, 98, 99, + 100, 101, 102, 501, 502, 503, 504, 505, 506, 507, + 508, 509, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 512, 513, 514, 515, 516, 517, + 518, 519, 520, 521, 522, 523, 524, 111, 527, 528, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, + 545, 237, 238, 239, 240, 241, 548, 549, 550, 551, + 552, 553, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -1785,38 +1791,37 @@ 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 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint16 yyr1[] = { - 0, 267, 268, 268, 269, 269, 269, 269, 269, 269, - 269, 269, 269, 269, 270, 271, 271, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, 272, 272, 272, 272, 273, 274, 274, 275, - 275, 275, 275, 275, 275, 275, 276, 277, 277, 278, - 278, 278, 278, 278, 278, 279, 280, 280, 281, 281, - 281, 281, 281, 281, 281, 282, 283, 283, 284, 284, - 284, 284, 284, 284, 284, 284, 285, 286, 287, 288, + 0, 268, 269, 269, 270, 270, 270, 270, 270, 270, + 270, 270, 270, 270, 271, 272, 272, 273, 273, 273, + 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, + 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, + 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, + 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, + 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, + 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, + 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, + 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, + 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, + 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, + 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, + 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, + 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, + 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, + 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, + 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, + 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, + 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, + 273, 273, 273, 273, 273, 273, 273, 274, 275, 275, + 276, 276, 276, 276, 276, 276, 276, 277, 278, 278, + 279, 279, 279, 279, 279, 279, 280, 281, 281, 282, + 282, 282, 282, 282, 282, 282, 283, 284, 284, 285, + 285, 285, 285, 285, 285, 285, 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, @@ -1838,15 +1843,16 @@ static const yytype_uint16 yyr1[] = 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, - 498, 499, 499, 499, 499, 499, 499, 499, 499, 500, - 501, 502, 503, 504, 505, 506, 507, 508, 509, 509, - 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, - 510, 510, 511, 512, 513, 514, 515, 516, 517, 518, - 519, 520, 521, 522, 523, 524, 524, 525, 526, 527, - 528, 529, 530, 531, 532, 532, 533, 533, 533, 533, - 533, 533, 533, 533, 533, 533, 534, 535, 536, 537, - 538, 539, 540, 541, 542, 543, 544, 545, 545, 546, - 546, 546, 546, 546, 547, 548, 549, 550, 551, 552 + 499, 500, 500, 501, 501, 501, 501, 501, 501, 501, + 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, + 511, 511, 512, 512, 512, 512, 512, 512, 512, 512, + 512, 512, 512, 512, 513, 514, 515, 516, 517, 518, + 519, 520, 521, 522, 523, 524, 525, 526, 526, 527, + 528, 529, 530, 531, 532, 533, 534, 534, 535, 535, + 535, 535, 535, 535, 535, 535, 535, 535, 536, 537, + 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, + 547, 548, 548, 548, 548, 548, 549, 550, 551, 552, + 553, 554 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -1872,11 +1878,11 @@ static const yytype_uint8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 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, + 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, @@ -1888,25 +1894,26 @@ static const yytype_uint8 yyr2[] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 3, 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, 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, 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, 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, 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, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, - 1, 1, 1, 1, 2, 2, 2, 2, 2, 3 + 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 }; @@ -2267,7 +2274,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")); @@ -2584,65 +2590,65 @@ yyreduce: switch (yyn) { case 14: -#line 182 "./util/configparser.y" /* yacc.c:1648 */ - { - OUTYY(("\nP(server:)\n")); +#line 183 "./util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("\nP(server:)\n")); } -#line 2592 "util/configparser.c" /* yacc.c:1648 */ +#line 2598 "util/configparser.c" /* yacc.c:1646 */ break; - case 206: -#line 273 "./util/configparser.y" /* yacc.c:1648 */ + case 207: +#line 274 "./util/configparser.y" /* yacc.c:1646 */ { struct config_stub* s; - OUTYY(("\nP(stub_zone:)\n")); + 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 + } else yyerror("out of memory"); } -#line 2607 "util/configparser.c" /* yacc.c:1648 */ +#line 2613 "util/configparser.c" /* yacc.c:1646 */ break; - case 216: -#line 290 "./util/configparser.y" /* yacc.c:1648 */ + case 217: +#line 291 "./util/configparser.y" /* yacc.c:1646 */ { struct config_stub* s; - OUTYY(("\nP(forward_zone:)\n")); + 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 + } else yyerror("out of memory"); } -#line 2622 "util/configparser.c" /* yacc.c:1648 */ +#line 2628 "util/configparser.c" /* yacc.c:1646 */ break; - case 225: -#line 307 "./util/configparser.y" /* yacc.c:1648 */ + case 226: +#line 308 "./util/configparser.y" /* yacc.c:1646 */ { struct config_view* s; - OUTYY(("\nP(view:)\n")); + 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 + } else yyerror("out of memory"); } -#line 2639 "util/configparser.c" /* yacc.c:1648 */ +#line 2645 "util/configparser.c" /* yacc.c:1646 */ break; - case 235: -#line 326 "./util/configparser.y" /* yacc.c:1648 */ + case 236: +#line 327 "./util/configparser.y" /* yacc.c:1646 */ { struct config_auth* s; - OUTYY(("\nP(auth_zone:)\n")); + OUTYY(("\nP(auth_zone:)\n")); s = (struct config_auth*)calloc(1, sizeof(struct config_auth)); if(s) { s->next = cfg_parser->cfg->auths; @@ -2651,40 +2657,40 @@ yyreduce: s->for_downstream = 1; s->for_upstream = 1; s->fallback_enabled = 0; - } else + } else yyerror("out of memory"); } -#line 2658 "util/configparser.c" /* yacc.c:1648 */ +#line 2664 "util/configparser.c" /* yacc.c:1646 */ break; - case 246: -#line 348 "./util/configparser.y" /* yacc.c:1648 */ - { - OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); + case 247: +#line 349 "./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) yyerror("number expected"); else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2670 "util/configparser.c" /* yacc.c:1648 */ +#line 2676 "util/configparser.c" /* yacc.c:1646 */ break; - case 247: -#line 357 "./util/configparser.y" /* yacc.c:1648 */ - { - OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); + case 248: +#line 358 "./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) yyerror("number expected"); else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2682 "util/configparser.c" /* yacc.c:1648 */ +#line 2688 "util/configparser.c" /* yacc.c:1646 */ break; - case 248: -#line 366 "./util/configparser.y" /* yacc.c:1648 */ - { - OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); + case 249: +#line 367 "./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) cfg_parser->cfg->stat_interval = 0; else if(atoi((yyvsp[0].str)) == 0) @@ -2692,11 +2698,11 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2696 "util/configparser.c" /* yacc.c:1648 */ +#line 2702 "util/configparser.c" /* yacc.c:1646 */ break; - case 249: -#line 377 "./util/configparser.y" /* yacc.c:1648 */ + case 250: +#line 378 "./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) @@ -2704,11 +2710,11 @@ yyreduce: else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2708 "util/configparser.c" /* yacc.c:1648 */ +#line 2714 "util/configparser.c" /* yacc.c:1646 */ break; - case 250: -#line 386 "./util/configparser.y" /* yacc.c:1648 */ + case 251: +#line 387 "./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) @@ -2716,11 +2722,11 @@ yyreduce: else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2720 "util/configparser.c" /* yacc.c:1648 */ +#line 2726 "util/configparser.c" /* yacc.c:1646 */ break; - case 251: -#line 395 "./util/configparser.y" /* yacc.c:1648 */ + case 252: +#line 396 "./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) @@ -2728,13 +2734,13 @@ yyreduce: else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2732 "util/configparser.c" /* yacc.c:1648 */ +#line 2738 "util/configparser.c" /* yacc.c:1646 */ break; - case 252: -#line 404 "./util/configparser.y" /* yacc.c:1648 */ - { - OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str))); + case 253: +#line 405 "./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) cfg_parser->cfg->shm_key = 0; else if(atoi((yyvsp[0].str)) == 0) @@ -2742,11 +2748,11 @@ yyreduce: else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2746 "util/configparser.c" /* yacc.c:1648 */ +#line 2752 "util/configparser.c" /* yacc.c:1646 */ break; - case 253: -#line 415 "./util/configparser.y" /* yacc.c:1648 */ + case 254: +#line 416 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -2754,11 +2760,11 @@ yyreduce: else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2758 "util/configparser.c" /* yacc.c:1648 */ +#line 2764 "util/configparser.c" /* yacc.c:1646 */ break; - case 254: -#line 424 "./util/configparser.y" /* yacc.c:1648 */ + case 255: +#line 425 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str))); @@ -2768,11 +2774,11 @@ yyreduce: OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); #endif } -#line 2772 "util/configparser.c" /* yacc.c:1648 */ +#line 2778 "util/configparser.c" /* yacc.c:1646 */ break; - case 255: -#line 435 "./util/configparser.y" /* yacc.c:1648 */ + case 256: +#line 436 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str))); @@ -2783,11 +2789,11 @@ yyreduce: OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); #endif } -#line 2787 "util/configparser.c" /* yacc.c:1648 */ +#line 2793 "util/configparser.c" /* yacc.c:1646 */ break; - case 256: -#line 448 "./util/configparser.y" /* yacc.c:1648 */ + case 257: +#line 449 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str))); @@ -2801,11 +2807,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 2805 "util/configparser.c" /* yacc.c:1648 */ +#line 2811 "util/configparser.c" /* yacc.c:1646 */ break; - case 257: -#line 463 "./util/configparser.y" /* yacc.c:1648 */ + case 258: +#line 464 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str))); @@ -2815,11 +2821,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 2819 "util/configparser.c" /* yacc.c:1648 */ +#line 2825 "util/configparser.c" /* yacc.c:1646 */ break; - case 258: -#line 474 "./util/configparser.y" /* yacc.c:1648 */ + case 259: +#line 475 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -2835,11 +2841,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 2839 "util/configparser.c" /* yacc.c:1648 */ +#line 2845 "util/configparser.c" /* yacc.c:1646 */ break; - case 259: -#line 491 "./util/configparser.y" /* yacc.c:1648 */ + case 260: +#line 492 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -2855,11 +2861,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 2859 "util/configparser.c" /* yacc.c:1648 */ +#line 2865 "util/configparser.c" /* yacc.c:1646 */ break; - case 260: -#line 508 "./util/configparser.y" /* yacc.c:1648 */ + case 261: +#line 509 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -2875,11 +2881,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 2879 "util/configparser.c" /* yacc.c:1648 */ +#line 2885 "util/configparser.c" /* yacc.c:1646 */ break; - case 261: -#line 525 "./util/configparser.y" /* yacc.c:1648 */ + case 262: +#line 526 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -2895,11 +2901,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 2899 "util/configparser.c" /* yacc.c:1648 */ +#line 2905 "util/configparser.c" /* yacc.c:1646 */ break; - case 262: -#line 542 "./util/configparser.y" /* yacc.c:1648 */ + case 263: +#line 543 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str))); @@ -2913,11 +2919,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 2917 "util/configparser.c" /* yacc.c:1648 */ +#line 2923 "util/configparser.c" /* yacc.c:1646 */ break; - case 263: -#line 557 "./util/configparser.y" /* yacc.c:1648 */ + case 264: +#line 558 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str))); @@ -2931,33 +2937,33 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 2935 "util/configparser.c" /* yacc.c:1648 */ +#line 2941 "util/configparser.c" /* yacc.c:1646 */ break; - case 264: -#line 572 "./util/configparser.y" /* yacc.c:1648 */ + case 265: +#line 573 "./util/configparser.y" /* yacc.c:1646 */ { 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, + 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 2951 "util/configparser.c" /* yacc.c:1648 */ +#line 2957 "util/configparser.c" /* yacc.c:1646 */ break; - case 265: -#line 585 "./util/configparser.y" /* yacc.c:1648 */ + case 266: +#line 586 "./util/configparser.y" /* yacc.c:1646 */ { 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, + 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"); @@ -2965,11 +2971,11 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 2969 "util/configparser.c" /* yacc.c:1648 */ +#line 2975 "util/configparser.c" /* yacc.c:1646 */ break; - case 266: -#line 600 "./util/configparser.y" /* yacc.c:1648 */ + case 267: +#line 601 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -2977,35 +2983,35 @@ yyreduce: else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2981 "util/configparser.c" /* yacc.c:1648 */ - break; - - case 267: -#line 609 "./util/configparser.y" /* yacc.c:1648 */ - { - 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 2993 "util/configparser.c" /* yacc.c:1648 */ +#line 2987 "util/configparser.c" /* yacc.c:1646 */ break; case 268: -#line 618 "./util/configparser.y" /* yacc.c:1648 */ +#line 610 "./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, + 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 3005 "util/configparser.c" /* yacc.c:1648 */ +#line 2999 "util/configparser.c" /* yacc.c:1646 */ break; case 269: -#line 627 "./util/configparser.y" /* yacc.c:1648 */ +#line 619 "./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, + cfg_parser->cfg->outgoing_avail_ports, 65536)) + yyerror("port number or range (\"low-high\") expected"); + free((yyvsp[0].str)); + } +#line 3011 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 270: +#line 628 "./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) @@ -3013,11 +3019,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3017 "util/configparser.c" /* yacc.c:1648 */ +#line 3023 "util/configparser.c" /* yacc.c:1646 */ break; - case 270: -#line 636 "./util/configparser.y" /* yacc.c:1648 */ + case 271: +#line 637 "./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) @@ -3025,11 +3031,11 @@ yyreduce: else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3029 "util/configparser.c" /* yacc.c:1648 */ +#line 3035 "util/configparser.c" /* yacc.c:1646 */ break; - case 271: -#line 645 "./util/configparser.y" /* yacc.c:1648 */ + case 272: +#line 646 "./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) @@ -3037,11 +3043,11 @@ yyreduce: else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3041 "util/configparser.c" /* yacc.c:1648 */ +#line 3047 "util/configparser.c" /* yacc.c:1646 */ break; - case 272: -#line 654 "./util/configparser.y" /* yacc.c:1648 */ + case 273: +#line 655 "./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) @@ -3049,11 +3055,11 @@ yyreduce: else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3053 "util/configparser.c" /* yacc.c:1648 */ +#line 3059 "util/configparser.c" /* yacc.c:1646 */ break; - case 273: -#line 663 "./util/configparser.y" /* yacc.c:1648 */ + case 274: +#line 664 "./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) @@ -3061,11 +3067,11 @@ yyreduce: else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3065 "util/configparser.c" /* yacc.c:1648 */ +#line 3071 "util/configparser.c" /* yacc.c:1646 */ break; - case 274: -#line 672 "./util/configparser.y" /* yacc.c:1648 */ + case 275: +#line 673 "./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) @@ -3073,11 +3079,11 @@ yyreduce: else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3077 "util/configparser.c" /* yacc.c:1648 */ +#line 3083 "util/configparser.c" /* yacc.c:1646 */ break; - case 275: -#line 681 "./util/configparser.y" /* yacc.c:1648 */ + case 276: +#line 682 "./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) @@ -3085,11 +3091,11 @@ yyreduce: else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3089 "util/configparser.c" /* yacc.c:1648 */ +#line 3095 "util/configparser.c" /* yacc.c:1646 */ break; - case 276: -#line 690 "./util/configparser.y" /* yacc.c:1648 */ + case 277: +#line 691 "./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) @@ -3097,23 +3103,23 @@ yyreduce: else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3101 "util/configparser.c" /* yacc.c:1648 */ - break; - - case 277: -#line 699 "./util/configparser.y" /* yacc.c:1648 */ - { - 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 3113 "util/configparser.c" /* yacc.c:1648 */ +#line 3107 "util/configparser.c" /* yacc.c:1646 */ break; case 278: -#line 708 "./util/configparser.y" /* yacc.c:1648 */ +#line 700 "./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) + yyerror("number expected"); + else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); + } +#line 3119 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 279: +#line 709 "./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) @@ -3121,11 +3127,11 @@ yyreduce: else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3125 "util/configparser.c" /* yacc.c:1648 */ +#line 3131 "util/configparser.c" /* yacc.c:1646 */ break; - case 279: -#line 717 "./util/configparser.y" /* yacc.c:1648 */ + case 280: +#line 718 "./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) @@ -3137,11 +3143,11 @@ yyreduce: else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3141 "util/configparser.c" /* yacc.c:1648 */ +#line 3147 "util/configparser.c" /* yacc.c:1646 */ break; - case 280: -#line 730 "./util/configparser.y" /* yacc.c:1648 */ + case 281: +#line 731 "./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) @@ -3149,11 +3155,11 @@ yyreduce: else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3153 "util/configparser.c" /* yacc.c:1648 */ +#line 3159 "util/configparser.c" /* yacc.c:1646 */ break; - case 281: -#line 739 "./util/configparser.y" /* yacc.c:1648 */ + case 282: +#line 740 "./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) @@ -3165,11 +3171,11 @@ yyreduce: else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3169 "util/configparser.c" /* yacc.c:1648 */ +#line 3175 "util/configparser.c" /* yacc.c:1646 */ break; - case 282: -#line 752 "./util/configparser.y" /* yacc.c:1648 */ + case 283: +#line 753 "./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) @@ -3177,11 +3183,11 @@ yyreduce: else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3181 "util/configparser.c" /* yacc.c:1648 */ +#line 3187 "util/configparser.c" /* yacc.c:1646 */ break; - case 283: -#line 761 "./util/configparser.y" /* yacc.c:1648 */ + case 284: +#line 762 "./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) @@ -3189,11 +3195,11 @@ yyreduce: else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3193 "util/configparser.c" /* yacc.c:1648 */ +#line 3199 "util/configparser.c" /* yacc.c:1646 */ break; - case 284: -#line 770 "./util/configparser.y" /* yacc.c:1648 */ + case 285: +#line 771 "./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) @@ -3201,31 +3207,31 @@ yyreduce: else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3205 "util/configparser.c" /* yacc.c:1648 */ +#line 3211 "util/configparser.c" /* yacc.c:1646 */ break; - case 285: -#line 779 "./util/configparser.y" /* yacc.c:1648 */ + case 286: +#line 780 "./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 3215 "util/configparser.c" /* yacc.c:1648 */ +#line 3221 "util/configparser.c" /* yacc.c:1646 */ break; - case 286: -#line 786 "./util/configparser.y" /* yacc.c:1648 */ + case 287: +#line 787 "./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 3225 "util/configparser.c" /* yacc.c:1648 */ +#line 3231 "util/configparser.c" /* yacc.c:1646 */ break; - case 287: -#line 793 "./util/configparser.y" /* yacc.c:1648 */ + case 288: +#line 794 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3233,21 +3239,21 @@ yyreduce: else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3237 "util/configparser.c" /* yacc.c:1648 */ +#line 3243 "util/configparser.c" /* yacc.c:1646 */ break; - case 288: -#line 802 "./util/configparser.y" /* yacc.c:1648 */ + case 289: +#line 803 "./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 3247 "util/configparser.c" /* yacc.c:1648 */ +#line 3253 "util/configparser.c" /* yacc.c:1646 */ break; - case 289: -#line 809 "./util/configparser.y" /* yacc.c:1648 */ + case 290: +#line 810 "./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) @@ -3255,53 +3261,53 @@ yyreduce: else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3259 "util/configparser.c" /* yacc.c:1648 */ +#line 3265 "util/configparser.c" /* yacc.c:1646 */ break; - case 290: -#line 818 "./util/configparser.y" /* yacc.c:1648 */ + case 291: +#line 819 "./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 3270 "util/configparser.c" /* yacc.c:1648 */ +#line 3276 "util/configparser.c" /* yacc.c:1646 */ break; - case 291: -#line 826 "./util/configparser.y" /* yacc.c:1648 */ + case 292: +#line 827 "./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 3280 "util/configparser.c" /* yacc.c:1648 */ +#line 3286 "util/configparser.c" /* yacc.c:1646 */ break; - case 292: -#line 833 "./util/configparser.y" /* yacc.c:1648 */ + case 293: +#line 834 "./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 3290 "util/configparser.c" /* yacc.c:1648 */ +#line 3296 "util/configparser.c" /* yacc.c:1646 */ break; - case 293: -#line 840 "./util/configparser.y" /* yacc.c:1648 */ + case 294: +#line 841 "./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 3301 "util/configparser.c" /* yacc.c:1648 */ +#line 3307 "util/configparser.c" /* yacc.c:1646 */ break; - case 294: -#line 848 "./util/configparser.y" /* yacc.c:1648 */ + case 295: +#line 849 "./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) @@ -3309,11 +3315,11 @@ yyreduce: else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3313 "util/configparser.c" /* yacc.c:1648 */ +#line 3319 "util/configparser.c" /* yacc.c:1646 */ break; - case 295: -#line 857 "./util/configparser.y" /* yacc.c:1648 */ + case 296: +#line 858 "./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) @@ -3321,11 +3327,11 @@ yyreduce: else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3325 "util/configparser.c" /* yacc.c:1648 */ +#line 3331 "util/configparser.c" /* yacc.c:1646 */ break; - case 296: -#line 866 "./util/configparser.y" /* yacc.c:1648 */ + case 297: +#line 867 "./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) @@ -3338,11 +3344,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3342 "util/configparser.c" /* yacc.c:1648 */ +#line 3348 "util/configparser.c" /* yacc.c:1646 */ break; - case 297: -#line 880 "./util/configparser.y" /* yacc.c:1648 */ + case 298: +#line 881 "./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) @@ -3350,11 +3356,11 @@ yyreduce: else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3354 "util/configparser.c" /* yacc.c:1648 */ +#line 3360 "util/configparser.c" /* yacc.c:1646 */ break; - case 298: -#line 889 "./util/configparser.y" /* yacc.c:1648 */ + case 299: +#line 890 "./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) @@ -3362,35 +3368,35 @@ yyreduce: else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3366 "util/configparser.c" /* yacc.c:1648 */ - break; - - case 299: -#line 898 "./util/configparser.y" /* yacc.c:1648 */ - { - 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 3378 "util/configparser.c" /* yacc.c:1648 */ +#line 3372 "util/configparser.c" /* yacc.c:1646 */ break; case 300: -#line 907 "./util/configparser.y" /* yacc.c:1648 */ +#line 899 "./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) - yyerror("expected yes or no."); - else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3390 "util/configparser.c" /* yacc.c:1648 */ + 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 3384 "util/configparser.c" /* yacc.c:1646 */ break; case 301: -#line 916 "./util/configparser.y" /* yacc.c:1648 */ +#line 908 "./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) + yyerror("expected yes or no."); + else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); + } +#line 3396 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 302: +#line 917 "./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) @@ -3398,43 +3404,43 @@ yyreduce: else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3402 "util/configparser.c" /* yacc.c:1648 */ - break; - - case 302: -#line 925 "./util/configparser.y" /* yacc.c:1648 */ - { - 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 3414 "util/configparser.c" /* yacc.c:1648 */ +#line 3408 "util/configparser.c" /* yacc.c:1646 */ break; case 303: -#line 934 "./util/configparser.y" /* yacc.c:1648 */ +#line 926 "./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) + yyerror("expected yes or no."); + else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); + } +#line 3420 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 304: +#line 935 "./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 3424 "util/configparser.c" /* yacc.c:1648 */ +#line 3430 "util/configparser.c" /* yacc.c:1646 */ break; - case 304: -#line 941 "./util/configparser.y" /* yacc.c:1648 */ + case 305: +#line 942 "./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 3434 "util/configparser.c" /* yacc.c:1648 */ +#line 3440 "util/configparser.c" /* yacc.c:1646 */ break; - case 305: -#line 948 "./util/configparser.y" /* yacc.c:1648 */ + case 306: +#line 949 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->directory); @@ -3453,111 +3459,111 @@ yyreduce: cfg_parser->chroot)) == 0) d += strlen(cfg_parser->chroot); if(d[0]) { - if(chdir(d)) + if(chdir(d)) log_err("cannot chdir to directory: %s (%s)", d, strerror(errno)); } } } -#line 3463 "util/configparser.c" /* yacc.c:1648 */ +#line 3469 "util/configparser.c" /* yacc.c:1646 */ break; - case 306: -#line 974 "./util/configparser.y" /* yacc.c:1648 */ + case 307: +#line 975 "./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 3474 "util/configparser.c" /* yacc.c:1648 */ +#line 3480 "util/configparser.c" /* yacc.c:1646 */ break; - case 307: -#line 982 "./util/configparser.y" /* yacc.c:1648 */ + case 308: +#line 983 "./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 3484 "util/configparser.c" /* yacc.c:1648 */ +#line 3490 "util/configparser.c" /* yacc.c:1646 */ break; - case 308: -#line 989 "./util/configparser.y" /* yacc.c:1648 */ + case 309: +#line 990 "./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 3494 "util/configparser.c" /* yacc.c:1648 */ +#line 3500 "util/configparser.c" /* yacc.c:1646 */ break; - case 309: -#line 996 "./util/configparser.y" /* yacc.c:1648 */ + case 310: +#line 997 "./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 3504 "util/configparser.c" /* yacc.c:1648 */ +#line 3510 "util/configparser.c" /* yacc.c:1646 */ break; - case 310: -#line 1003 "./util/configparser.y" /* yacc.c:1648 */ + case 311: +#line 1004 "./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 3514 "util/configparser.c" /* yacc.c:1648 */ +#line 3520 "util/configparser.c" /* yacc.c:1646 */ break; - case 311: -#line 1010 "./util/configparser.y" /* yacc.c:1648 */ + case 312: +#line 1011 "./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 3525 "util/configparser.c" /* yacc.c:1648 */ +#line 3531 "util/configparser.c" /* yacc.c:1646 */ break; - case 312: -#line 1018 "./util/configparser.y" /* yacc.c:1648 */ + case 313: +#line 1019 "./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 3536 "util/configparser.c" /* yacc.c:1648 */ +#line 3542 "util/configparser.c" /* yacc.c:1646 */ break; - case 313: -#line 1026 "./util/configparser.y" /* yacc.c:1648 */ + case 314: +#line 1027 "./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 3547 "util/configparser.c" /* yacc.c:1648 */ +#line 3553 "util/configparser.c" /* yacc.c:1646 */ break; - case 314: -#line 1034 "./util/configparser.y" /* yacc.c:1648 */ + case 315: +#line 1035 "./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 3557 "util/configparser.c" /* yacc.c:1648 */ +#line 3563 "util/configparser.c" /* yacc.c:1646 */ break; - case 315: -#line 1041 "./util/configparser.y" /* yacc.c:1648 */ + case 316: +#line 1042 "./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) @@ -3567,11 +3573,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3571 "util/configparser.c" /* yacc.c:1648 */ +#line 3577 "util/configparser.c" /* yacc.c:1646 */ break; - case 316: -#line 1052 "./util/configparser.y" /* yacc.c:1648 */ + case 317: +#line 1053 "./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) @@ -3581,21 +3587,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3585 "util/configparser.c" /* yacc.c:1648 */ +#line 3591 "util/configparser.c" /* yacc.c:1646 */ break; - case 317: -#line 1063 "./util/configparser.y" /* yacc.c:1648 */ + case 318: +#line 1064 "./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 3595 "util/configparser.c" /* yacc.c:1648 */ +#line 3601 "util/configparser.c" /* yacc.c:1646 */ break; - case 318: -#line 1070 "./util/configparser.y" /* yacc.c:1648 */ + case 319: +#line 1071 "./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) @@ -3603,11 +3609,11 @@ yyreduce: else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3607 "util/configparser.c" /* yacc.c:1648 */ +#line 3613 "util/configparser.c" /* yacc.c:1646 */ break; - case 319: -#line 1079 "./util/configparser.y" /* yacc.c:1648 */ + case 320: +#line 1080 "./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) @@ -3615,11 +3621,11 @@ yyreduce: else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3619 "util/configparser.c" /* yacc.c:1648 */ +#line 3625 "util/configparser.c" /* yacc.c:1646 */ break; - case 320: -#line 1088 "./util/configparser.y" /* yacc.c:1648 */ + case 321: +#line 1089 "./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) @@ -3627,103 +3633,103 @@ yyreduce: else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3631 "util/configparser.c" /* yacc.c:1648 */ +#line 3637 "util/configparser.c" /* yacc.c:1646 */ break; - case 321: -#line 1097 "./util/configparser.y" /* yacc.c:1648 */ + case 322: +#line 1098 "./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 3641 "util/configparser.c" /* yacc.c:1648 */ +#line 3647 "util/configparser.c" /* yacc.c:1646 */ break; - case 322: -#line 1104 "./util/configparser.y" /* yacc.c:1648 */ + case 323: +#line 1105 "./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 3651 "util/configparser.c" /* yacc.c:1648 */ +#line 3657 "util/configparser.c" /* yacc.c:1646 */ break; - case 323: -#line 1111 "./util/configparser.y" /* yacc.c:1648 */ + case 324: +#line 1112 "./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 3662 "util/configparser.c" /* yacc.c:1648 */ +#line 3668 "util/configparser.c" /* yacc.c:1646 */ break; - case 324: -#line 1119 "./util/configparser.y" /* yacc.c:1648 */ + case 325: +#line 1120 "./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 3673 "util/configparser.c" /* yacc.c:1648 */ - break; - - case 325: -#line 1127 "./util/configparser.y" /* yacc.c:1648 */ - { - 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 3686 "util/configparser.c" /* yacc.c:1648 */ +#line 3679 "util/configparser.c" /* yacc.c:1646 */ break; case 326: -#line 1137 "./util/configparser.y" /* yacc.c:1648 */ +#line 1128 "./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) - yyerror("expected yes or no."); - else cfg_parser->cfg->ip_transparent = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3699 "util/configparser.c" /* yacc.c:1648 */ + 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 3692 "util/configparser.c" /* yacc.c:1646 */ break; case 327: -#line 1147 "./util/configparser.y" /* yacc.c:1648 */ +#line 1138 "./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) - yyerror("expected yes or no."); - else cfg_parser->cfg->ip_freebind = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3712 "util/configparser.c" /* yacc.c:1648 */ + 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 3705 "util/configparser.c" /* yacc.c:1646 */ break; case 328: -#line 1157 "./util/configparser.y" /* yacc.c:1648 */ +#line 1148 "./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) + yyerror("expected yes or no."); + else cfg_parser->cfg->ip_freebind = + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); + } +#line 3718 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 329: +#line 1158 "./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 3723 "util/configparser.c" /* yacc.c:1648 */ +#line 3729 "util/configparser.c" /* yacc.c:1646 */ break; - case 329: -#line 1165 "./util/configparser.y" /* yacc.c:1648 */ + case 330: +#line 1166 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3735,11 +3741,11 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3739 "util/configparser.c" /* yacc.c:1648 */ +#line 3745 "util/configparser.c" /* yacc.c:1646 */ break; - case 330: -#line 1178 "./util/configparser.y" /* yacc.c:1648 */ + case 331: +#line 1179 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3749,22 +3755,22 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3753 "util/configparser.c" /* yacc.c:1648 */ +#line 3759 "util/configparser.c" /* yacc.c:1646 */ break; - case 331: -#line 1189 "./util/configparser.y" /* yacc.c:1648 */ + case 332: +#line 1190 "./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 3764 "util/configparser.c" /* yacc.c:1648 */ +#line 3770 "util/configparser.c" /* yacc.c:1646 */ break; - case 332: -#line 1197 "./util/configparser.y" /* yacc.c:1648 */ + case 333: +#line 1198 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3776,11 +3782,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 3780 "util/configparser.c" /* yacc.c:1648 */ +#line 3786 "util/configparser.c" /* yacc.c:1646 */ break; - case 333: -#line 1210 "./util/configparser.y" /* yacc.c:1648 */ + case 334: +#line 1211 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3788,11 +3794,11 @@ yyreduce: else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3792 "util/configparser.c" /* yacc.c:1648 */ +#line 3798 "util/configparser.c" /* yacc.c:1646 */ break; - case 334: -#line 1219 "./util/configparser.y" /* yacc.c:1648 */ + case 335: +#line 1220 "./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) @@ -3800,11 +3806,11 @@ yyreduce: else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3804 "util/configparser.c" /* yacc.c:1648 */ +#line 3810 "util/configparser.c" /* yacc.c:1646 */ break; - case 335: -#line 1228 "./util/configparser.y" /* yacc.c:1648 */ + case 336: +#line 1229 "./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) @@ -3812,48 +3818,48 @@ yyreduce: else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3816 "util/configparser.c" /* yacc.c:1648 */ +#line 3822 "util/configparser.c" /* yacc.c:1646 */ break; - case 336: -#line 1237 "./util/configparser.y" /* yacc.c:1648 */ + case 337: +#line 1238 "./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) yyerror("expected yes or no."); - else cfg_parser->cfg->unblock_lan_zones = + else cfg_parser->cfg->unblock_lan_zones = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3829 "util/configparser.c" /* yacc.c:1648 */ +#line 3835 "util/configparser.c" /* yacc.c:1646 */ break; - case 337: -#line 1247 "./util/configparser.y" /* yacc.c:1648 */ + case 338: +#line 1248 "./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) yyerror("expected yes or no."); - else cfg_parser->cfg->insecure_lan_zones = + else cfg_parser->cfg->insecure_lan_zones = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3842 "util/configparser.c" /* yacc.c:1648 */ +#line 3848 "util/configparser.c" /* yacc.c:1646 */ break; - case 338: -#line 1257 "./util/configparser.y" /* yacc.c:1648 */ + case 339: +#line 1258 "./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 3853 "util/configparser.c" /* yacc.c:1648 */ +#line 3859 "util/configparser.c" /* yacc.c:1646 */ break; - case 339: -#line 1265 "./util/configparser.y" /* yacc.c:1648 */ + case 340: +#line 1266 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3865,11 +3871,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 3869 "util/configparser.c" /* yacc.c:1648 */ +#line 3875 "util/configparser.c" /* yacc.c:1646 */ break; - case 340: -#line 1278 "./util/configparser.y" /* yacc.c:1648 */ + case 341: +#line 1279 "./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) @@ -3877,22 +3883,22 @@ yyreduce: else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3881 "util/configparser.c" /* yacc.c:1648 */ +#line 3887 "util/configparser.c" /* yacc.c:1646 */ break; - case 341: -#line 1287 "./util/configparser.y" /* yacc.c:1648 */ + case 342: +#line 1288 "./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 3892 "util/configparser.c" /* yacc.c:1648 */ +#line 3898 "util/configparser.c" /* yacc.c:1646 */ break; - case 342: -#line 1295 "./util/configparser.y" /* yacc.c:1648 */ + case 343: +#line 1296 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3900,22 +3906,22 @@ yyreduce: else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3904 "util/configparser.c" /* yacc.c:1648 */ +#line 3910 "util/configparser.c" /* yacc.c:1646 */ break; - case 343: -#line 1304 "./util/configparser.y" /* yacc.c:1648 */ + case 344: +#line 1305 "./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 3915 "util/configparser.c" /* yacc.c:1648 */ +#line 3921 "util/configparser.c" /* yacc.c:1646 */ break; - case 344: -#line 1312 "./util/configparser.y" /* yacc.c:1648 */ + case 345: +#line 1313 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3927,11 +3933,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 3931 "util/configparser.c" /* yacc.c:1648 */ +#line 3937 "util/configparser.c" /* yacc.c:1646 */ break; - case 345: -#line 1325 "./util/configparser.y" /* yacc.c:1648 */ + case 346: +#line 1326 "./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) @@ -3939,155 +3945,155 @@ yyreduce: else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3943 "util/configparser.c" /* yacc.c:1648 */ +#line 3949 "util/configparser.c" /* yacc.c:1646 */ break; - case 346: -#line 1334 "./util/configparser.y" /* yacc.c:1648 */ + case 347: +#line 1335 "./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 3953 "util/configparser.c" /* yacc.c:1648 */ +#line 3959 "util/configparser.c" /* yacc.c:1646 */ break; - case 347: -#line 1341 "./util/configparser.y" /* yacc.c:1648 */ + case 348: +#line 1342 "./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) yyerror("expected yes or no."); - else cfg_parser->cfg->harden_short_bufsize = + else cfg_parser->cfg->harden_short_bufsize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3966 "util/configparser.c" /* yacc.c:1648 */ +#line 3972 "util/configparser.c" /* yacc.c:1646 */ break; - case 348: -#line 1351 "./util/configparser.y" /* yacc.c:1648 */ + case 349: +#line 1352 "./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) yyerror("expected yes or no."); - else cfg_parser->cfg->harden_large_queries = + else cfg_parser->cfg->harden_large_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3979 "util/configparser.c" /* yacc.c:1648 */ +#line 3985 "util/configparser.c" /* yacc.c:1646 */ break; - case 349: -#line 1361 "./util/configparser.y" /* yacc.c:1648 */ + case 350: +#line 1362 "./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) yyerror("expected yes or no."); - else cfg_parser->cfg->harden_glue = + else cfg_parser->cfg->harden_glue = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3992 "util/configparser.c" /* yacc.c:1648 */ +#line 3998 "util/configparser.c" /* yacc.c:1646 */ break; - case 350: -#line 1371 "./util/configparser.y" /* yacc.c:1648 */ + case 351: +#line 1372 "./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) yyerror("expected yes or no."); - else cfg_parser->cfg->harden_dnssec_stripped = + else cfg_parser->cfg->harden_dnssec_stripped = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4005 "util/configparser.c" /* yacc.c:1648 */ +#line 4011 "util/configparser.c" /* yacc.c:1646 */ break; - case 351: -#line 1381 "./util/configparser.y" /* yacc.c:1648 */ + case 352: +#line 1382 "./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) yyerror("expected yes or no."); - else cfg_parser->cfg->harden_below_nxdomain = + else cfg_parser->cfg->harden_below_nxdomain = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4018 "util/configparser.c" /* yacc.c:1648 */ +#line 4024 "util/configparser.c" /* yacc.c:1646 */ break; - case 352: -#line 1391 "./util/configparser.y" /* yacc.c:1648 */ + case 353: +#line 1392 "./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) yyerror("expected yes or no."); - else cfg_parser->cfg->harden_referral_path = + else cfg_parser->cfg->harden_referral_path = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4031 "util/configparser.c" /* yacc.c:1648 */ +#line 4037 "util/configparser.c" /* yacc.c:1646 */ break; - case 353: -#line 1401 "./util/configparser.y" /* yacc.c:1648 */ + case 354: +#line 1402 "./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) yyerror("expected yes or no."); - else cfg_parser->cfg->harden_algo_downgrade = + else cfg_parser->cfg->harden_algo_downgrade = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4044 "util/configparser.c" /* yacc.c:1648 */ +#line 4050 "util/configparser.c" /* yacc.c:1646 */ break; - case 354: -#line 1411 "./util/configparser.y" /* yacc.c:1648 */ + case 355: +#line 1412 "./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) yyerror("expected yes or no."); - else cfg_parser->cfg->use_caps_bits_for_id = + else cfg_parser->cfg->use_caps_bits_for_id = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4057 "util/configparser.c" /* yacc.c:1648 */ +#line 4063 "util/configparser.c" /* yacc.c:1646 */ break; - case 355: -#line 1421 "./util/configparser.y" /* yacc.c:1648 */ + case 356: +#line 1422 "./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 4067 "util/configparser.c" /* yacc.c:1648 */ +#line 4073 "util/configparser.c" /* yacc.c:1646 */ break; - case 356: -#line 1428 "./util/configparser.y" /* yacc.c:1648 */ + case 357: +#line 1429 "./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 4077 "util/configparser.c" /* yacc.c:1648 */ +#line 4083 "util/configparser.c" /* yacc.c:1646 */ break; - case 357: -#line 1435 "./util/configparser.y" /* yacc.c:1648 */ + case 358: +#line 1436 "./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 4087 "util/configparser.c" /* yacc.c:1648 */ +#line 4093 "util/configparser.c" /* yacc.c:1646 */ break; - case 358: -#line 1442 "./util/configparser.y" /* yacc.c:1648 */ + case 359: +#line 1443 "./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) @@ -4095,11 +4101,11 @@ yyreduce: else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4099 "util/configparser.c" /* yacc.c:1648 */ +#line 4105 "util/configparser.c" /* yacc.c:1646 */ break; - case 359: -#line 1451 "./util/configparser.y" /* yacc.c:1648 */ + case 360: +#line 1452 "./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) @@ -4107,11 +4113,11 @@ yyreduce: else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4111 "util/configparser.c" /* yacc.c:1648 */ +#line 4117 "util/configparser.c" /* yacc.c:1646 */ break; - case 360: -#line 1460 "./util/configparser.y" /* yacc.c:1648 */ + case 361: +#line 1461 "./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) @@ -4119,11 +4125,11 @@ yyreduce: else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4123 "util/configparser.c" /* yacc.c:1648 */ +#line 4129 "util/configparser.c" /* yacc.c:1646 */ break; - case 361: -#line 1469 "./util/configparser.y" /* yacc.c:1648 */ + case 362: +#line 1470 "./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) @@ -4131,41 +4137,41 @@ yyreduce: else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4135 "util/configparser.c" /* yacc.c:1648 */ +#line 4141 "util/configparser.c" /* yacc.c:1646 */ break; - case 362: -#line 1478 "./util/configparser.y" /* yacc.c:1648 */ + case 363: +#line 1479 "./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 4145 "util/configparser.c" /* yacc.c:1648 */ +#line 4151 "util/configparser.c" /* yacc.c:1646 */ break; - case 363: -#line 1485 "./util/configparser.y" /* yacc.c:1648 */ + case 364: +#line 1486 "./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) yyerror("expected yes or no."); - else cfg_parser->cfg->donotquery_localhost = + else cfg_parser->cfg->donotquery_localhost = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4158 "util/configparser.c" /* yacc.c:1648 */ +#line 4164 "util/configparser.c" /* yacc.c:1646 */ break; - case 364: -#line 1495 "./util/configparser.y" /* yacc.c:1648 */ + case 365: +#line 1496 "./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 && 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_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 " @@ -4177,27 +4183,27 @@ yyreduce: fatal_exit("out of memory adding acl"); } } -#line 4181 "util/configparser.c" /* yacc.c:1648 */ +#line 4187 "util/configparser.c" /* yacc.c:1646 */ break; - case 365: -#line 1515 "./util/configparser.y" /* yacc.c:1648 */ + case 366: +#line 1516 "./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 4191 "util/configparser.c" /* yacc.c:1648 */ +#line 4197 "util/configparser.c" /* yacc.c:1646 */ break; - case 366: -#line 1522 "./util/configparser.y" /* yacc.c:1648 */ + case 367: +#line 1523 "./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) { cfg_parser->cfg->val_date_override = 0; } else if(strlen((yyvsp[0].str)) == 14) { - cfg_parser->cfg->val_date_override = + cfg_parser->cfg->val_date_override = cfg_convert_timeval((yyvsp[0].str)); if(!cfg_parser->cfg->val_date_override) yyerror("bad date/time specification"); @@ -4208,11 +4214,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4212 "util/configparser.c" /* yacc.c:1648 */ +#line 4218 "util/configparser.c" /* yacc.c:1646 */ break; - case 367: -#line 1540 "./util/configparser.y" /* yacc.c:1648 */ + case 368: +#line 1541 "./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) { @@ -4224,11 +4230,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4228 "util/configparser.c" /* yacc.c:1648 */ +#line 4234 "util/configparser.c" /* yacc.c:1646 */ break; - case 368: -#line 1553 "./util/configparser.y" /* yacc.c:1648 */ + case 369: +#line 1554 "./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) { @@ -4240,11 +4246,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4244 "util/configparser.c" /* yacc.c:1648 */ +#line 4250 "util/configparser.c" /* yacc.c:1646 */ break; - case 369: -#line 1566 "./util/configparser.y" /* yacc.c:1648 */ + case 370: +#line 1567 "./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) @@ -4252,11 +4258,11 @@ yyreduce: else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4256 "util/configparser.c" /* yacc.c:1648 */ +#line 4262 "util/configparser.c" /* yacc.c:1646 */ break; - case 370: -#line 1575 "./util/configparser.y" /* yacc.c:1648 */ + case 371: +#line 1576 "./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) @@ -4264,11 +4270,11 @@ yyreduce: else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4268 "util/configparser.c" /* yacc.c:1648 */ +#line 4274 "util/configparser.c" /* yacc.c:1646 */ break; - case 371: -#line 1584 "./util/configparser.y" /* yacc.c:1648 */ + case 372: +#line 1585 "./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) @@ -4276,11 +4282,11 @@ yyreduce: else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4280 "util/configparser.c" /* yacc.c:1648 */ +#line 4286 "util/configparser.c" /* yacc.c:1646 */ break; - case 372: -#line 1593 "./util/configparser.y" /* yacc.c:1648 */ + case 373: +#line 1594 "./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) @@ -4288,37 +4294,37 @@ yyreduce: else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4292 "util/configparser.c" /* yacc.c:1648 */ +#line 4298 "util/configparser.c" /* yacc.c:1646 */ break; - case 373: -#line 1602 "./util/configparser.y" /* yacc.c:1648 */ + case 374: +#line 1603 "./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) yyerror("expected yes or no."); - else cfg_parser->cfg->val_clean_additional = + else cfg_parser->cfg->val_clean_additional = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4305 "util/configparser.c" /* yacc.c:1648 */ +#line 4311 "util/configparser.c" /* yacc.c:1646 */ break; - case 374: -#line 1612 "./util/configparser.y" /* yacc.c:1648 */ + case 375: +#line 1613 "./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) yyerror("expected yes or no."); - else cfg_parser->cfg->val_permissive_mode = + else cfg_parser->cfg->val_permissive_mode = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4318 "util/configparser.c" /* yacc.c:1648 */ +#line 4324 "util/configparser.c" /* yacc.c:1646 */ break; - case 375: -#line 1622 "./util/configparser.y" /* yacc.c:1648 */ + case 376: +#line 1623 "./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) @@ -4328,11 +4334,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4332 "util/configparser.c" /* yacc.c:1648 */ +#line 4338 "util/configparser.c" /* yacc.c:1646 */ break; - case 376: -#line 1633 "./util/configparser.y" /* yacc.c:1648 */ + case 377: +#line 1634 "./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) @@ -4340,11 +4346,11 @@ yyreduce: else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4344 "util/configparser.c" /* yacc.c:1648 */ +#line 4350 "util/configparser.c" /* yacc.c:1646 */ break; - case 377: -#line 1642 "./util/configparser.y" /* yacc.c:1648 */ + case 378: +#line 1643 "./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) @@ -4352,11 +4358,11 @@ yyreduce: else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4356 "util/configparser.c" /* yacc.c:1648 */ +#line 4362 "util/configparser.c" /* yacc.c:1646 */ break; - case 378: -#line 1651 "./util/configparser.y" /* yacc.c:1648 */ + case 379: +#line 1652 "./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) @@ -4364,11 +4370,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4368 "util/configparser.c" /* yacc.c:1648 */ +#line 4374 "util/configparser.c" /* yacc.c:1646 */ break; - case 379: -#line 1660 "./util/configparser.y" /* yacc.c:1648 */ + case 380: +#line 1661 "./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) @@ -4376,11 +4382,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4380 "util/configparser.c" /* yacc.c:1648 */ +#line 4386 "util/configparser.c" /* yacc.c:1646 */ break; - case 380: -#line 1669 "./util/configparser.y" /* yacc.c:1648 */ + case 381: +#line 1670 "./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) @@ -4392,11 +4398,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4396 "util/configparser.c" /* yacc.c:1648 */ +#line 4402 "util/configparser.c" /* yacc.c:1646 */ break; - case 381: -#line 1682 "./util/configparser.y" /* yacc.c:1648 */ + case 382: +#line 1683 "./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) @@ -4408,11 +4414,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4412 "util/configparser.c" /* yacc.c:1648 */ +#line 4418 "util/configparser.c" /* yacc.c:1646 */ break; - case 382: -#line 1695 "./util/configparser.y" /* yacc.c:1648 */ + case 383: +#line 1696 "./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) @@ -4420,21 +4426,21 @@ yyreduce: else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4424 "util/configparser.c" /* yacc.c:1648 */ +#line 4430 "util/configparser.c" /* yacc.c:1646 */ break; - case 383: -#line 1704 "./util/configparser.y" /* yacc.c:1648 */ + case 384: +#line 1705 "./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 4434 "util/configparser.c" /* yacc.c:1648 */ +#line 4440 "util/configparser.c" /* yacc.c:1646 */ break; - case 384: -#line 1711 "./util/configparser.y" /* yacc.c:1648 */ + case 385: +#line 1712 "./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) @@ -4442,11 +4448,11 @@ yyreduce: else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4446 "util/configparser.c" /* yacc.c:1648 */ +#line 4452 "util/configparser.c" /* yacc.c:1646 */ break; - case 385: -#line 1720 "./util/configparser.y" /* yacc.c:1648 */ + case 386: +#line 1721 "./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) @@ -4454,11 +4460,11 @@ yyreduce: else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4458 "util/configparser.c" /* yacc.c:1648 */ +#line 4464 "util/configparser.c" /* yacc.c:1646 */ break; - case 386: -#line 1729 "./util/configparser.y" /* yacc.c:1648 */ + case 387: +#line 1730 "./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) @@ -4466,11 +4472,11 @@ yyreduce: else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4470 "util/configparser.c" /* yacc.c:1648 */ +#line 4476 "util/configparser.c" /* yacc.c:1646 */ break; - case 387: -#line 1738 "./util/configparser.y" /* yacc.c:1648 */ + case 388: +#line 1739 "./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) @@ -4479,22 +4485,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4483 "util/configparser.c" /* yacc.c:1648 */ +#line 4489 "util/configparser.c" /* yacc.c:1646 */ break; - case 388: -#line 1747 "./util/configparser.y" /* yacc.c:1648 */ + case 389: +#line 1748 "./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 4494 "util/configparser.c" /* yacc.c:1648 */ +#line 4500 "util/configparser.c" /* yacc.c:1646 */ break; - case 389: -#line 1755 "./util/configparser.y" /* yacc.c:1648 */ + case 390: +#line 1756 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4506,22 +4512,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4510 "util/configparser.c" /* yacc.c:1648 */ +#line 4516 "util/configparser.c" /* yacc.c:1646 */ break; - case 390: -#line 1768 "./util/configparser.y" /* yacc.c:1648 */ + case 391: +#line 1769 "./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 4521 "util/configparser.c" /* yacc.c:1648 */ +#line 4527 "util/configparser.c" /* yacc.c:1646 */ break; - case 391: -#line 1776 "./util/configparser.y" /* yacc.c:1648 */ + case 392: +#line 1777 "./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 && @@ -4548,26 +4554,26 @@ yyreduce: fatal_exit("out of memory adding local-zone"); free((yyvsp[0].str)); } else { - if(!cfg_str2list_insert(&cfg_parser->cfg->local_zones, + if(!cfg_str2list_insert(&cfg_parser->cfg->local_zones, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding local-zone"); } } -#line 4557 "util/configparser.c" /* yacc.c:1648 */ +#line 4563 "util/configparser.c" /* yacc.c:1646 */ break; - case 392: -#line 1809 "./util/configparser.y" /* yacc.c:1648 */ + case 393: +#line 1810 "./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 4567 "util/configparser.c" /* yacc.c:1648 */ +#line 4573 "util/configparser.c" /* yacc.c:1646 */ break; - case 393: -#line 1816 "./util/configparser.y" /* yacc.c:1648 */ + case 394: +#line 1817 "./util/configparser.y" /* yacc.c:1646 */ { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -4581,11 +4587,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 4585 "util/configparser.c" /* yacc.c:1648 */ +#line 4591 "util/configparser.c" /* yacc.c:1646 */ break; - case 394: -#line 1831 "./util/configparser.y" /* yacc.c:1648 */ + case 395: +#line 1832 "./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) @@ -4594,11 +4600,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4598 "util/configparser.c" /* yacc.c:1648 */ +#line 4604 "util/configparser.c" /* yacc.c:1646 */ break; - case 395: -#line 1841 "./util/configparser.y" /* yacc.c:1648 */ + case 396: +#line 1842 "./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) @@ -4607,41 +4613,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4611 "util/configparser.c" /* yacc.c:1648 */ +#line 4617 "util/configparser.c" /* yacc.c:1646 */ break; - case 396: -#line 1851 "./util/configparser.y" /* yacc.c:1648 */ + case 397: +#line 1852 "./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 4621 "util/configparser.c" /* yacc.c:1648 */ +#line 4627 "util/configparser.c" /* yacc.c:1646 */ break; - case 397: -#line 1858 "./util/configparser.y" /* yacc.c:1648 */ + case 398: +#line 1859 "./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 4631 "util/configparser.c" /* yacc.c:1648 */ +#line 4637 "util/configparser.c" /* yacc.c:1646 */ break; - case 398: -#line 1865 "./util/configparser.y" /* yacc.c:1648 */ + case 399: +#line 1866 "./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 4641 "util/configparser.c" /* yacc.c:1648 */ +#line 4647 "util/configparser.c" /* yacc.c:1646 */ break; - case 399: -#line 1872 "./util/configparser.y" /* yacc.c:1648 */ + case 400: +#line 1873 "./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) @@ -4649,22 +4655,22 @@ yyreduce: else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4653 "util/configparser.c" /* yacc.c:1648 */ +#line 4659 "util/configparser.c" /* yacc.c:1646 */ break; - case 400: -#line 1881 "./util/configparser.y" /* yacc.c:1648 */ + case 401: +#line 1882 "./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 4664 "util/configparser.c" /* yacc.c:1648 */ +#line 4670 "util/configparser.c" /* yacc.c:1646 */ break; - case 401: -#line 1889 "./util/configparser.y" /* yacc.c:1648 */ + case 402: +#line 1890 "./util/configparser.y" /* yacc.c:1646 */ { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); @@ -4677,11 +4683,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4681 "util/configparser.c" /* yacc.c:1648 */ +#line 4687 "util/configparser.c" /* yacc.c:1646 */ break; - case 402: -#line 1903 "./util/configparser.y" /* yacc.c:1648 */ + case 403: +#line 1904 "./util/configparser.y" /* yacc.c:1646 */ { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -4701,11 +4707,11 @@ yyreduce: } } } -#line 4705 "util/configparser.c" /* yacc.c:1648 */ +#line 4711 "util/configparser.c" /* yacc.c:1646 */ break; - case 403: -#line 1924 "./util/configparser.y" /* yacc.c:1648 */ + case 404: +#line 1925 "./util/configparser.y" /* yacc.c:1646 */ { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -4725,11 +4731,11 @@ yyreduce: } } } -#line 4729 "util/configparser.c" /* yacc.c:1648 */ +#line 4735 "util/configparser.c" /* yacc.c:1646 */ break; - case 404: -#line 1945 "./util/configparser.y" /* yacc.c:1648 */ + case 405: +#line 1946 "./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, @@ -4740,11 +4746,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 4744 "util/configparser.c" /* yacc.c:1648 */ +#line 4750 "util/configparser.c" /* yacc.c:1646 */ break; - case 405: -#line 1957 "./util/configparser.y" /* yacc.c:1648 */ + case 406: +#line 1958 "./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, @@ -4755,11 +4761,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 4759 "util/configparser.c" /* yacc.c:1648 */ +#line 4765 "util/configparser.c" /* yacc.c:1646 */ break; - case 406: -#line 1969 "./util/configparser.y" /* yacc.c:1648 */ + case 407: +#line 1970 "./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, @@ -4770,11 +4776,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 4774 "util/configparser.c" /* yacc.c:1648 */ +#line 4780 "util/configparser.c" /* yacc.c:1646 */ break; - case 407: -#line 1981 "./util/configparser.y" /* yacc.c:1648 */ + case 408: +#line 1982 "./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, @@ -4782,11 +4788,11 @@ yyreduce: yyerror("out of memory"); } } -#line 4786 "util/configparser.c" /* yacc.c:1648 */ +#line 4792 "util/configparser.c" /* yacc.c:1646 */ break; - case 408: -#line 1990 "./util/configparser.y" /* yacc.c:1648 */ + case 409: +#line 1991 "./util/configparser.y" /* yacc.c:1646 */ { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -4806,73 +4812,73 @@ yyreduce: } } } -#line 4810 "util/configparser.c" /* yacc.c:1648 */ +#line 4816 "util/configparser.c" /* yacc.c:1646 */ break; - case 409: -#line 2011 "./util/configparser.y" /* yacc.c:1648 */ - { - OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str))); + case 410: +#line 2012 "./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) yyerror("number expected"); else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4822 "util/configparser.c" /* yacc.c:1648 */ +#line 4828 "util/configparser.c" /* yacc.c:1646 */ break; - case 410: -#line 2021 "./util/configparser.y" /* yacc.c:1648 */ - { - OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); + case 411: +#line 2022 "./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) yyerror("number expected"); else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4834 "util/configparser.c" /* yacc.c:1648 */ - break; - - case 411: -#line 2030 "./util/configparser.y" /* yacc.c:1648 */ - { - 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 4845 "util/configparser.c" /* yacc.c:1648 */ +#line 4840 "util/configparser.c" /* yacc.c:1646 */ break; case 412: -#line 2038 "./util/configparser.y" /* yacc.c:1648 */ +#line 2031 "./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 4851 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 413: +#line 2039 "./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 4856 "util/configparser.c" /* yacc.c:1648 */ - break; - - case 413: -#line 2046 "./util/configparser.y" /* yacc.c:1648 */ - { - 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 4872 "util/configparser.c" /* yacc.c:1648 */ +#line 4862 "util/configparser.c" /* yacc.c:1646 */ break; case 414: -#line 2059 "./util/configparser.y" /* yacc.c:1648 */ +#line 2047 "./util/configparser.y" /* yacc.c:1646 */ + { + 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 4878 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 415: +#line 2060 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4884,11 +4890,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4888 "util/configparser.c" /* yacc.c:1648 */ +#line 4894 "util/configparser.c" /* yacc.c:1646 */ break; - case 415: -#line 2072 "./util/configparser.y" /* yacc.c:1648 */ + case 416: +#line 2073 "./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) { @@ -4902,11 +4908,11 @@ yyreduce: "ratelimit-for-domain"); } } -#line 4906 "util/configparser.c" /* yacc.c:1648 */ +#line 4912 "util/configparser.c" /* yacc.c:1646 */ break; - case 416: -#line 2087 "./util/configparser.y" /* yacc.c:1648 */ + case 417: +#line 2088 "./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) { @@ -4920,94 +4926,106 @@ yyreduce: "ratelimit-below-domain"); } } -#line 4924 "util/configparser.c" /* yacc.c:1648 */ - break; - - case 417: -#line 2102 "./util/configparser.y" /* yacc.c:1648 */ - { - 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 4936 "util/configparser.c" /* yacc.c:1648 */ +#line 4930 "util/configparser.c" /* yacc.c:1646 */ break; case 418: -#line 2111 "./util/configparser.y" /* yacc.c:1648 */ - { - OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str))); +#line 2103 "./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) + yyerror("number expected"); + else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); + } +#line 4942 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 419: +#line 2112 "./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) yyerror("number expected"); else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4948 "util/configparser.c" /* yacc.c:1648 */ - break; - - case 419: -#line 2120 "./util/configparser.y" /* yacc.c:1648 */ - { - OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); - free((yyvsp[0].str)); - } -#line 4957 "util/configparser.c" /* yacc.c:1648 */ +#line 4954 "util/configparser.c" /* yacc.c:1646 */ break; case 420: -#line 2126 "./util/configparser.y" /* yacc.c:1648 */ - { - OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); +#line 2121 "./util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("P(server_outbound_msg_retry:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->outbound_msg_retry = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); +} +#line 4966 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 421: +#line 2130 "./util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); + free((yyvsp[0].str)); + } +#line 4975 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 422: +#line 2136 "./util/configparser.y" /* yacc.c:1646 */ + { + 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 4969 "util/configparser.c" /* yacc.c:1648 */ +#line 4987 "util/configparser.c" /* yacc.c:1646 */ break; - case 421: -#line 2135 "./util/configparser.y" /* yacc.c:1648 */ - { - OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[0].str))); + case 423: +#line 2145 "./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) yyerror("number expected"); else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4981 "util/configparser.c" /* yacc.c:1648 */ +#line 4999 "util/configparser.c" /* yacc.c:1646 */ break; - case 422: -#line 2144 "./util/configparser.y" /* yacc.c:1648 */ + case 424: +#line 2154 "./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) yyerror("expected yes or no."); - else cfg_parser->cfg->qname_minimisation = + else cfg_parser->cfg->qname_minimisation = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4994 "util/configparser.c" /* yacc.c:1648 */ +#line 5012 "util/configparser.c" /* yacc.c:1646 */ break; - case 423: -#line 2154 "./util/configparser.y" /* yacc.c:1648 */ + case 425: +#line 2164 "./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) yyerror("expected yes or no."); - else cfg_parser->cfg->qname_minimisation_strict = + else cfg_parser->cfg->qname_minimisation_strict = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5007 "util/configparser.c" /* yacc.c:1648 */ +#line 5025 "util/configparser.c" /* yacc.c:1646 */ break; - case 424: -#line 2164 "./util/configparser.y" /* yacc.c:1648 */ + case 426: +#line 2174 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); @@ -5019,11 +5037,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5023 "util/configparser.c" /* yacc.c:1648 */ +#line 5041 "util/configparser.c" /* yacc.c:1646 */ break; - case 425: -#line 2177 "./util/configparser.y" /* yacc.c:1648 */ + case 427: +#line 2187 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); @@ -5035,11 +5053,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5039 "util/configparser.c" /* yacc.c:1648 */ +#line 5057 "util/configparser.c" /* yacc.c:1646 */ break; - case 426: -#line 2190 "./util/configparser.y" /* yacc.c:1648 */ + case 428: +#line 2200 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); @@ -5050,11 +5068,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5054 "util/configparser.c" /* yacc.c:1648 */ +#line 5072 "util/configparser.c" /* yacc.c:1646 */ break; - case 427: -#line 2202 "./util/configparser.y" /* yacc.c:1648 */ + case 429: +#line 2212 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); @@ -5067,11 +5085,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5071 "util/configparser.c" /* yacc.c:1648 */ +#line 5089 "util/configparser.c" /* yacc.c:1646 */ break; - case 428: -#line 2216 "./util/configparser.y" /* yacc.c:1648 */ + case 430: +#line 2226 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); @@ -5082,11 +5100,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5086 "util/configparser.c" /* yacc.c:1648 */ +#line 5104 "util/configparser.c" /* yacc.c:1646 */ break; - case 429: -#line 2228 "./util/configparser.y" /* yacc.c:1648 */ + case 431: +#line 2238 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); @@ -5099,11 +5117,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5103 "util/configparser.c" /* yacc.c:1648 */ +#line 5121 "util/configparser.c" /* yacc.c:1646 */ break; - case 430: -#line 2242 "./util/configparser.y" /* yacc.c:1648 */ + case 432: +#line 2252 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) @@ -5112,31 +5130,31 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 5116 "util/configparser.c" /* yacc.c:1648 */ +#line 5134 "util/configparser.c" /* yacc.c:1646 */ break; - case 431: -#line 2252 "./util/configparser.y" /* yacc.c:1648 */ + case 433: +#line 2262 "./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 5126 "util/configparser.c" /* yacc.c:1648 */ +#line 5144 "util/configparser.c" /* yacc.c:1646 */ break; - case 432: -#line 2259 "./util/configparser.y" /* yacc.c:1648 */ + case 434: +#line 2269 "./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 5136 "util/configparser.c" /* yacc.c:1648 */ +#line 5154 "util/configparser.c" /* yacc.c:1646 */ break; - case 433: -#line 2266 "./util/configparser.y" /* yacc.c:1648 */ + case 435: +#line 2276 "./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) @@ -5144,11 +5162,11 @@ yyreduce: else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5148 "util/configparser.c" /* yacc.c:1648 */ +#line 5166 "util/configparser.c" /* yacc.c:1646 */ break; - case 434: -#line 2275 "./util/configparser.y" /* yacc.c:1648 */ + case 436: +#line 2285 "./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) @@ -5156,37 +5174,37 @@ yyreduce: else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5160 "util/configparser.c" /* yacc.c:1648 */ +#line 5178 "util/configparser.c" /* yacc.c:1646 */ break; - case 435: -#line 2284 "./util/configparser.y" /* yacc.c:1648 */ + case 437: +#line 2294 "./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) yyerror("expected yes or no."); - else cfg_parser->cfg->stubs->ssl_upstream = + else cfg_parser->cfg->stubs->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5173 "util/configparser.c" /* yacc.c:1648 */ +#line 5191 "util/configparser.c" /* yacc.c:1646 */ break; - case 436: -#line 2294 "./util/configparser.y" /* yacc.c:1648 */ + case 438: +#line 2304 "./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) yyerror("expected yes or no."); - else cfg_parser->cfg->stubs->isprime = + else cfg_parser->cfg->stubs->isprime = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5186 "util/configparser.c" /* yacc.c:1648 */ +#line 5204 "util/configparser.c" /* yacc.c:1646 */ break; - case 437: -#line 2304 "./util/configparser.y" /* yacc.c:1648 */ + case 439: +#line 2314 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) @@ -5195,31 +5213,31 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 5199 "util/configparser.c" /* yacc.c:1648 */ +#line 5217 "util/configparser.c" /* yacc.c:1646 */ break; - case 438: -#line 2314 "./util/configparser.y" /* yacc.c:1648 */ + case 440: +#line 2324 "./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 5209 "util/configparser.c" /* yacc.c:1648 */ +#line 5227 "util/configparser.c" /* yacc.c:1646 */ break; - case 439: -#line 2321 "./util/configparser.y" /* yacc.c:1648 */ + case 441: +#line 2331 "./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 5219 "util/configparser.c" /* yacc.c:1648 */ +#line 5237 "util/configparser.c" /* yacc.c:1646 */ break; - case 440: -#line 2328 "./util/configparser.y" /* yacc.c:1648 */ + case 442: +#line 2338 "./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) @@ -5227,11 +5245,11 @@ yyreduce: else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5231 "util/configparser.c" /* yacc.c:1648 */ +#line 5249 "util/configparser.c" /* yacc.c:1646 */ break; - case 441: -#line 2337 "./util/configparser.y" /* yacc.c:1648 */ + case 443: +#line 2347 "./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) @@ -5239,24 +5257,24 @@ yyreduce: else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5243 "util/configparser.c" /* yacc.c:1648 */ +#line 5261 "util/configparser.c" /* yacc.c:1646 */ break; - case 442: -#line 2346 "./util/configparser.y" /* yacc.c:1648 */ + case 444: +#line 2356 "./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) yyerror("expected yes or no."); - else cfg_parser->cfg->forwards->ssl_upstream = + else cfg_parser->cfg->forwards->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5256 "util/configparser.c" /* yacc.c:1648 */ +#line 5274 "util/configparser.c" /* yacc.c:1646 */ break; - case 443: -#line 2356 "./util/configparser.y" /* yacc.c:1648 */ + case 445: +#line 2366 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) @@ -5265,52 +5283,52 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 5269 "util/configparser.c" /* yacc.c:1648 */ +#line 5287 "util/configparser.c" /* yacc.c:1646 */ break; - case 444: -#line 2366 "./util/configparser.y" /* yacc.c:1648 */ + case 446: +#line 2376 "./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 5279 "util/configparser.c" /* yacc.c:1648 */ +#line 5297 "util/configparser.c" /* yacc.c:1646 */ break; - case 445: -#line 2373 "./util/configparser.y" /* yacc.c:1648 */ + case 447: +#line 2383 "./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 5289 "util/configparser.c" /* yacc.c:1648 */ +#line 5307 "util/configparser.c" /* yacc.c:1646 */ break; - case 446: -#line 2380 "./util/configparser.y" /* yacc.c:1648 */ + case 448: +#line 2390 "./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 5299 "util/configparser.c" /* yacc.c:1648 */ +#line 5317 "util/configparser.c" /* yacc.c:1646 */ break; - case 447: -#line 2387 "./util/configparser.y" /* yacc.c:1648 */ + case 449: +#line 2397 "./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 5310 "util/configparser.c" /* yacc.c:1648 */ +#line 5328 "util/configparser.c" /* yacc.c:1646 */ break; - case 448: -#line 2395 "./util/configparser.y" /* yacc.c:1648 */ + case 450: +#line 2405 "./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) @@ -5319,11 +5337,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5323 "util/configparser.c" /* yacc.c:1648 */ +#line 5341 "util/configparser.c" /* yacc.c:1646 */ break; - case 449: -#line 2405 "./util/configparser.y" /* yacc.c:1648 */ + case 451: +#line 2415 "./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) @@ -5332,11 +5350,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5336 "util/configparser.c" /* yacc.c:1648 */ +#line 5354 "util/configparser.c" /* yacc.c:1646 */ break; - case 450: -#line 2415 "./util/configparser.y" /* yacc.c:1648 */ + case 452: +#line 2425 "./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) @@ -5345,11 +5363,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5349 "util/configparser.c" /* yacc.c:1648 */ +#line 5367 "util/configparser.c" /* yacc.c:1646 */ break; - case 451: -#line 2425 "./util/configparser.y" /* yacc.c:1648 */ + case 453: +#line 2435 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) @@ -5358,11 +5376,11 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 5362 "util/configparser.c" /* yacc.c:1648 */ +#line 5380 "util/configparser.c" /* yacc.c:1646 */ break; - case 452: -#line 2435 "./util/configparser.y" /* yacc.c:1648 */ + case 454: +#line 2445 "./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 && @@ -5388,16 +5406,16 @@ yyreduce: free((yyvsp[0].str)); } else { if(!cfg_str2list_insert( - &cfg_parser->cfg->views->local_zones, + &cfg_parser->cfg->views->local_zones, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding local-zone"); } } -#line 5397 "util/configparser.c" /* yacc.c:1648 */ +#line 5415 "util/configparser.c" /* yacc.c:1646 */ break; - case 453: -#line 2467 "./util/configparser.y" /* yacc.c:1648 */ + case 455: +#line 2477 "./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)); @@ -5406,33 +5424,33 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 5410 "util/configparser.c" /* yacc.c:1648 */ +#line 5428 "util/configparser.c" /* yacc.c:1646 */ break; - case 454: -#line 2477 "./util/configparser.y" /* yacc.c:1648 */ + case 456: +#line 2487 "./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 5421 "util/configparser.c" /* yacc.c:1648 */ +#line 5439 "util/configparser.c" /* yacc.c:1646 */ break; - case 455: -#line 2485 "./util/configparser.y" /* yacc.c:1648 */ + case 457: +#line 2495 "./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 5432 "util/configparser.c" /* yacc.c:1648 */ +#line 5450 "util/configparser.c" /* yacc.c:1646 */ break; - case 456: -#line 2493 "./util/configparser.y" /* yacc.c:1648 */ + case 458: +#line 2503 "./util/configparser.y" /* yacc.c:1646 */ { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -5446,11 +5464,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5450 "util/configparser.c" /* yacc.c:1648 */ +#line 5468 "util/configparser.c" /* yacc.c:1646 */ break; - case 457: -#line 2508 "./util/configparser.y" /* yacc.c:1648 */ + case 459: +#line 2518 "./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) @@ -5458,32 +5476,32 @@ yyreduce: else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5462 "util/configparser.c" /* yacc.c:1648 */ +#line 5480 "util/configparser.c" /* yacc.c:1646 */ break; - case 458: -#line 2517 "./util/configparser.y" /* yacc.c:1648 */ - { - OUTYY(("\nP(remote-control:)\n")); + case 460: +#line 2527 "./util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("\nP(remote-control:)\n")); } -#line 5470 "util/configparser.c" /* yacc.c:1648 */ +#line 5488 "util/configparser.c" /* yacc.c:1646 */ break; - case 469: -#line 2528 "./util/configparser.y" /* yacc.c:1648 */ + case 471: +#line 2538 "./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) yyerror("expected yes or no."); - else cfg_parser->cfg->remote_control_enable = + else cfg_parser->cfg->remote_control_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5483 "util/configparser.c" /* yacc.c:1648 */ +#line 5501 "util/configparser.c" /* yacc.c:1646 */ break; - case 470: -#line 2538 "./util/configparser.y" /* yacc.c:1648 */ + case 472: +#line 2548 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5491,79 +5509,79 @@ yyreduce: else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5495 "util/configparser.c" /* yacc.c:1648 */ +#line 5513 "util/configparser.c" /* yacc.c:1646 */ break; - case 471: -#line 2547 "./util/configparser.y" /* yacc.c:1648 */ + case 473: +#line 2557 "./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 5505 "util/configparser.c" /* yacc.c:1648 */ +#line 5523 "util/configparser.c" /* yacc.c:1646 */ break; - case 472: -#line 2554 "./util/configparser.y" /* yacc.c:1648 */ + case 474: +#line 2564 "./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 5515 "util/configparser.c" /* yacc.c:1648 */ +#line 5533 "util/configparser.c" /* yacc.c:1646 */ break; - case 473: -#line 2561 "./util/configparser.y" /* yacc.c:1648 */ + case 475: +#line 2571 "./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 5525 "util/configparser.c" /* yacc.c:1648 */ +#line 5543 "util/configparser.c" /* yacc.c:1646 */ break; - case 474: -#line 2568 "./util/configparser.y" /* yacc.c:1648 */ + case 476: +#line 2578 "./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 5535 "util/configparser.c" /* yacc.c:1648 */ +#line 5553 "util/configparser.c" /* yacc.c:1646 */ break; - case 475: -#line 2575 "./util/configparser.y" /* yacc.c:1648 */ + case 477: +#line 2585 "./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 5545 "util/configparser.c" /* yacc.c:1648 */ +#line 5563 "util/configparser.c" /* yacc.c:1646 */ break; - case 476: -#line 2582 "./util/configparser.y" /* yacc.c:1648 */ + case 478: +#line 2592 "./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 5555 "util/configparser.c" /* yacc.c:1648 */ +#line 5573 "util/configparser.c" /* yacc.c:1646 */ break; - case 477: -#line 2589 "./util/configparser.y" /* yacc.c:1648 */ + case 479: +#line 2599 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(dnstap:)\n")); } -#line 5563 "util/configparser.c" /* yacc.c:1648 */ +#line 5581 "util/configparser.c" /* yacc.c:1646 */ break; - case 492: -#line 2606 "./util/configparser.y" /* yacc.c:1648 */ + case 494: +#line 2616 "./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) @@ -5571,21 +5589,21 @@ yyreduce: else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5575 "util/configparser.c" /* yacc.c:1648 */ +#line 5593 "util/configparser.c" /* yacc.c:1646 */ break; - case 493: -#line 2615 "./util/configparser.y" /* yacc.c:1648 */ + case 495: +#line 2625 "./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 5585 "util/configparser.c" /* yacc.c:1648 */ +#line 5603 "util/configparser.c" /* yacc.c:1646 */ break; - case 494: -#line 2622 "./util/configparser.y" /* yacc.c:1648 */ + case 496: +#line 2632 "./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) @@ -5593,11 +5611,11 @@ yyreduce: else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5597 "util/configparser.c" /* yacc.c:1648 */ +#line 5615 "util/configparser.c" /* yacc.c:1646 */ break; - case 495: -#line 2631 "./util/configparser.y" /* yacc.c:1648 */ + case 497: +#line 2641 "./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) @@ -5605,31 +5623,31 @@ yyreduce: else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5609 "util/configparser.c" /* yacc.c:1648 */ +#line 5627 "util/configparser.c" /* yacc.c:1646 */ break; - case 496: -#line 2640 "./util/configparser.y" /* yacc.c:1648 */ + case 498: +#line 2650 "./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 5619 "util/configparser.c" /* yacc.c:1648 */ +#line 5637 "util/configparser.c" /* yacc.c:1646 */ break; - case 497: -#line 2647 "./util/configparser.y" /* yacc.c:1648 */ + case 499: +#line 2657 "./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 5629 "util/configparser.c" /* yacc.c:1648 */ +#line 5647 "util/configparser.c" /* yacc.c:1646 */ break; - case 498: -#line 2654 "./util/configparser.y" /* yacc.c:1648 */ + case 500: +#line 2664 "./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) @@ -5638,11 +5656,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5642 "util/configparser.c" /* yacc.c:1648 */ +#line 5660 "util/configparser.c" /* yacc.c:1646 */ break; - case 499: -#line 2664 "./util/configparser.y" /* yacc.c:1648 */ + case 501: +#line 2674 "./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) @@ -5651,11 +5669,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5655 "util/configparser.c" /* yacc.c:1648 */ +#line 5673 "util/configparser.c" /* yacc.c:1646 */ break; - case 500: -#line 2674 "./util/configparser.y" /* yacc.c:1648 */ + case 502: +#line 2684 "./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) @@ -5664,11 +5682,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5668 "util/configparser.c" /* yacc.c:1648 */ +#line 5686 "util/configparser.c" /* yacc.c:1646 */ break; - case 501: -#line 2684 "./util/configparser.y" /* yacc.c:1648 */ + case 503: +#line 2694 "./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) @@ -5677,11 +5695,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5681 "util/configparser.c" /* yacc.c:1648 */ +#line 5699 "util/configparser.c" /* yacc.c:1646 */ break; - case 502: -#line 2694 "./util/configparser.y" /* yacc.c:1648 */ + case 504: +#line 2704 "./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) @@ -5690,11 +5708,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5694 "util/configparser.c" /* yacc.c:1648 */ +#line 5712 "util/configparser.c" /* yacc.c:1646 */ break; - case 503: -#line 2704 "./util/configparser.y" /* yacc.c:1648 */ + case 505: +#line 2714 "./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) @@ -5703,29 +5721,29 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5707 "util/configparser.c" /* yacc.c:1648 */ +#line 5725 "util/configparser.c" /* yacc.c:1646 */ break; - case 504: -#line 2714 "./util/configparser.y" /* yacc.c:1648 */ - { - OUTYY(("\nP(python:)\n")); + case 506: +#line 2724 "./util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("\nP(python:)\n")); } -#line 5715 "util/configparser.c" /* yacc.c:1648 */ +#line 5733 "util/configparser.c" /* yacc.c:1646 */ break; - case 508: -#line 2723 "./util/configparser.y" /* yacc.c:1648 */ + case 510: +#line 2733 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(python-script:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->python_script); cfg_parser->cfg->python_script = (yyvsp[0].str); } -#line 5725 "util/configparser.c" /* yacc.c:1648 */ +#line 5743 "util/configparser.c" /* yacc.c:1646 */ break; - case 509: -#line 2729 "./util/configparser.y" /* yacc.c:1648 */ + case 511: +#line 2739 "./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) @@ -5734,21 +5752,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5738 "util/configparser.c" /* yacc.c:1648 */ +#line 5756 "util/configparser.c" /* yacc.c:1646 */ break; - case 510: -#line 2739 "./util/configparser.y" /* yacc.c:1648 */ + case 512: +#line 2749 "./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 5748 "util/configparser.c" /* yacc.c:1648 */ +#line 5766 "util/configparser.c" /* yacc.c:1646 */ break; - case 511: -#line 2746 "./util/configparser.y" /* yacc.c:1648 */ + case 513: +#line 2756 "./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)); @@ -5756,30 +5774,30 @@ yyreduce: (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 5760 "util/configparser.c" /* yacc.c:1648 */ +#line 5778 "util/configparser.c" /* yacc.c:1646 */ break; - case 512: -#line 2755 "./util/configparser.y" /* yacc.c:1648 */ + case 514: +#line 2765 "./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 5771 "util/configparser.c" /* yacc.c:1648 */ +#line 5789 "util/configparser.c" /* yacc.c:1646 */ break; - case 513: -#line 2763 "./util/configparser.y" /* yacc.c:1648 */ + case 515: +#line 2773 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(dnscrypt:)\n")); } -#line 5779 "util/configparser.c" /* yacc.c:1648 */ +#line 5797 "util/configparser.c" /* yacc.c:1646 */ break; - case 526: -#line 2779 "./util/configparser.y" /* yacc.c:1648 */ + case 528: +#line 2789 "./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) @@ -5787,11 +5805,11 @@ yyreduce: else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5791 "util/configparser.c" /* yacc.c:1648 */ +#line 5809 "util/configparser.c" /* yacc.c:1646 */ break; - case 527: -#line 2789 "./util/configparser.y" /* yacc.c:1648 */ + case 529: +#line 2799 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5799,21 +5817,21 @@ yyreduce: else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5803 "util/configparser.c" /* yacc.c:1648 */ +#line 5821 "util/configparser.c" /* yacc.c:1646 */ break; - case 528: -#line 2798 "./util/configparser.y" /* yacc.c:1648 */ + case 530: +#line 2808 "./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 5813 "util/configparser.c" /* yacc.c:1648 */ +#line 5831 "util/configparser.c" /* yacc.c:1646 */ break; - case 529: -#line 2805 "./util/configparser.y" /* yacc.c:1648 */ + case 531: +#line 2815 "./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))) @@ -5821,21 +5839,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 5825 "util/configparser.c" /* yacc.c:1648 */ +#line 5843 "util/configparser.c" /* yacc.c:1646 */ break; - case 530: -#line 2814 "./util/configparser.y" /* yacc.c:1648 */ + case 532: +#line 2824 "./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 5835 "util/configparser.c" /* yacc.c:1648 */ +#line 5853 "util/configparser.c" /* yacc.c:1646 */ break; - case 531: -#line 2821 "./util/configparser.y" /* yacc.c:1648 */ + case 533: +#line 2831 "./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))) @@ -5843,73 +5861,73 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-secret-key"); } -#line 5847 "util/configparser.c" /* yacc.c:1648 */ - break; - - case 532: -#line 2830 "./util/configparser.y" /* yacc.c:1648 */ - { - 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 5858 "util/configparser.c" /* yacc.c:1648 */ - break; - - case 533: -#line 2838 "./util/configparser.y" /* yacc.c:1648 */ - { - 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 5874 "util/configparser.c" /* yacc.c:1648 */ +#line 5865 "util/configparser.c" /* yacc.c:1646 */ break; case 534: -#line 2851 "./util/configparser.y" /* yacc.c:1648 */ +#line 2840 "./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)); + 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 5885 "util/configparser.c" /* yacc.c:1648 */ +#line 5876 "util/configparser.c" /* yacc.c:1646 */ break; case 535: -#line 2859 "./util/configparser.y" /* yacc.c:1648 */ +#line 2848 "./util/configparser.y" /* yacc.c:1646 */ { - 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)); + 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 5901 "util/configparser.c" /* yacc.c:1648 */ +#line 5892 "util/configparser.c" /* yacc.c:1646 */ break; case 536: -#line 2872 "./util/configparser.y" /* yacc.c:1648 */ +#line 2861 "./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 5903 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 537: +#line 2869 "./util/configparser.y" /* yacc.c:1646 */ + { + 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 5919 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 538: +#line 2882 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(cachedb:)\n")); } -#line 5909 "util/configparser.c" /* yacc.c:1648 */ +#line 5927 "util/configparser.c" /* yacc.c:1646 */ break; - case 544: -#line 2882 "./util/configparser.y" /* yacc.c:1648 */ + case 546: +#line 2892 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); @@ -5923,11 +5941,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5927 "util/configparser.c" /* yacc.c:1648 */ +#line 5945 "util/configparser.c" /* yacc.c:1646 */ break; - case 545: -#line 2897 "./util/configparser.y" /* yacc.c:1648 */ + case 547: +#line 2907 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); @@ -5941,11 +5959,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5945 "util/configparser.c" /* yacc.c:1648 */ +#line 5963 "util/configparser.c" /* yacc.c:1646 */ break; - case 546: -#line 2912 "./util/configparser.y" /* yacc.c:1648 */ + case 548: +#line 2922 "./util/configparser.y" /* yacc.c:1646 */ { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); @@ -5956,11 +5974,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5960 "util/configparser.c" /* yacc.c:1648 */ +#line 5978 "util/configparser.c" /* yacc.c:1646 */ break; - case 547: -#line 2924 "./util/configparser.y" /* yacc.c:1648 */ + case 549: +#line 2934 "./util/configparser.y" /* yacc.c:1646 */ { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; @@ -5974,11 +5992,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5978 "util/configparser.c" /* yacc.c:1648 */ +#line 5996 "util/configparser.c" /* yacc.c:1646 */ break; - case 548: -#line 2939 "./util/configparser.y" /* yacc.c:1648 */ + case 550: +#line 2949 "./util/configparser.y" /* yacc.c:1646 */ { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); @@ -5990,11 +6008,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5994 "util/configparser.c" /* yacc.c:1648 */ +#line 6012 "util/configparser.c" /* yacc.c:1646 */ break; - case 549: -#line 2952 "./util/configparser.y" /* yacc.c:1648 */ + case 551: +#line 2962 "./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) @@ -6004,11 +6022,11 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 6008 "util/configparser.c" /* yacc.c:1648 */ +#line 6026 "util/configparser.c" /* yacc.c:1646 */ break; -#line 6012 "util/configparser.c" /* yacc.c:1648 */ +#line 6030 "util/configparser.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -6236,7 +6254,7 @@ yyreturn: #endif return yyresult; } -#line 2962 "./util/configparser.y" /* yacc.c:1907 */ +#line 2972 "./util/configparser.y" /* yacc.c:1906 */ /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index db6e94714..d4c00356c 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.0.5. */ +/* 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 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 @@ -218,97 +218,98 @@ extern int yydebug; VAR_RATELIMIT = 428, VAR_RATELIMIT_SLABS = 429, VAR_RATELIMIT_SIZE = 430, - VAR_RATELIMIT_FOR_DOMAIN = 431, - VAR_RATELIMIT_BELOW_DOMAIN = 432, - VAR_IP_RATELIMIT_FACTOR = 433, - VAR_RATELIMIT_FACTOR = 434, - VAR_SEND_CLIENT_SUBNET = 435, - VAR_CLIENT_SUBNET_ZONE = 436, - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 437, - VAR_CLIENT_SUBNET_OPCODE = 438, - VAR_MAX_CLIENT_SUBNET_IPV4 = 439, - VAR_MAX_CLIENT_SUBNET_IPV6 = 440, - VAR_MIN_CLIENT_SUBNET_IPV4 = 441, - VAR_MIN_CLIENT_SUBNET_IPV6 = 442, - VAR_MAX_ECS_TREE_SIZE_IPV4 = 443, - VAR_MAX_ECS_TREE_SIZE_IPV6 = 444, - VAR_CAPS_WHITELIST = 445, - VAR_CACHE_MAX_NEGATIVE_TTL = 446, - VAR_PERMIT_SMALL_HOLDDOWN = 447, - VAR_QNAME_MINIMISATION = 448, - VAR_QNAME_MINIMISATION_STRICT = 449, - VAR_IP_FREEBIND = 450, - VAR_DEFINE_TAG = 451, - VAR_LOCAL_ZONE_TAG = 452, - VAR_ACCESS_CONTROL_TAG = 453, - VAR_LOCAL_ZONE_OVERRIDE = 454, - VAR_ACCESS_CONTROL_TAG_ACTION = 455, - VAR_ACCESS_CONTROL_TAG_DATA = 456, - VAR_VIEW = 457, - VAR_ACCESS_CONTROL_VIEW = 458, - VAR_VIEW_FIRST = 459, - VAR_SERVE_EXPIRED = 460, - VAR_SERVE_EXPIRED_TTL = 461, - VAR_SERVE_EXPIRED_TTL_RESET = 462, - VAR_FAKE_DSA = 463, - VAR_FAKE_SHA1 = 464, - VAR_LOG_IDENTITY = 465, - VAR_HIDE_TRUSTANCHOR = 466, - VAR_TRUST_ANCHOR_SIGNALING = 467, - VAR_AGGRESSIVE_NSEC = 468, - VAR_USE_SYSTEMD = 469, - VAR_SHM_ENABLE = 470, - VAR_SHM_KEY = 471, - VAR_ROOT_KEY_SENTINEL = 472, - VAR_DNSCRYPT = 473, - VAR_DNSCRYPT_ENABLE = 474, - VAR_DNSCRYPT_PORT = 475, - VAR_DNSCRYPT_PROVIDER = 476, - VAR_DNSCRYPT_SECRET_KEY = 477, - VAR_DNSCRYPT_PROVIDER_CERT = 478, - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 479, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 480, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 481, - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 482, - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 483, - VAR_IPSECMOD_ENABLED = 484, - VAR_IPSECMOD_HOOK = 485, - VAR_IPSECMOD_IGNORE_BOGUS = 486, - VAR_IPSECMOD_MAX_TTL = 487, - VAR_IPSECMOD_WHITELIST = 488, - VAR_IPSECMOD_STRICT = 489, - VAR_CACHEDB = 490, - VAR_CACHEDB_BACKEND = 491, - VAR_CACHEDB_SECRETSEED = 492, - VAR_CACHEDB_REDISHOST = 493, - VAR_CACHEDB_REDISPORT = 494, - VAR_CACHEDB_REDISTIMEOUT = 495, - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 496, - VAR_FOR_UPSTREAM = 497, - VAR_AUTH_ZONE = 498, - VAR_ZONEFILE = 499, - VAR_MASTER = 500, - VAR_URL = 501, - VAR_FOR_DOWNSTREAM = 502, - VAR_FALLBACK_ENABLED = 503, - VAR_TLS_ADDITIONAL_PORT = 504, - VAR_LOW_RTT = 505, - VAR_LOW_RTT_PERMIL = 506, - VAR_FAST_SERVER_PERMIL = 507, - VAR_FAST_SERVER_NUM = 508, - VAR_ALLOW_NOTIFY = 509, - VAR_TLS_WIN_CERT = 510, - VAR_TCP_CONNECTION_LIMIT = 511, - VAR_FORWARD_NO_CACHE = 512, - VAR_STUB_NO_CACHE = 513, - VAR_LOG_SERVFAIL = 514, - VAR_DENY_ANY = 515, - VAR_UNKNOWN_SERVER_TIME_LIMIT = 516, - VAR_LOG_TAG_QUERYREPLY = 517, - VAR_STREAM_WAIT_SIZE = 518, - VAR_TLS_CIPHERS = 519, - VAR_TLS_CIPHERSUITES = 520, - VAR_TLS_SESSION_TICKET_KEYS = 521 + VAR_OUTBOUND_MSG_RETRY = 431, + VAR_RATELIMIT_FOR_DOMAIN = 432, + VAR_RATELIMIT_BELOW_DOMAIN = 433, + VAR_IP_RATELIMIT_FACTOR = 434, + VAR_RATELIMIT_FACTOR = 435, + VAR_SEND_CLIENT_SUBNET = 436, + VAR_CLIENT_SUBNET_ZONE = 437, + VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 438, + VAR_CLIENT_SUBNET_OPCODE = 439, + VAR_MAX_CLIENT_SUBNET_IPV4 = 440, + VAR_MAX_CLIENT_SUBNET_IPV6 = 441, + VAR_MIN_CLIENT_SUBNET_IPV4 = 442, + VAR_MIN_CLIENT_SUBNET_IPV6 = 443, + VAR_MAX_ECS_TREE_SIZE_IPV4 = 444, + VAR_MAX_ECS_TREE_SIZE_IPV6 = 445, + VAR_CAPS_WHITELIST = 446, + VAR_CACHE_MAX_NEGATIVE_TTL = 447, + VAR_PERMIT_SMALL_HOLDDOWN = 448, + VAR_QNAME_MINIMISATION = 449, + VAR_QNAME_MINIMISATION_STRICT = 450, + VAR_IP_FREEBIND = 451, + VAR_DEFINE_TAG = 452, + VAR_LOCAL_ZONE_TAG = 453, + VAR_ACCESS_CONTROL_TAG = 454, + VAR_LOCAL_ZONE_OVERRIDE = 455, + VAR_ACCESS_CONTROL_TAG_ACTION = 456, + VAR_ACCESS_CONTROL_TAG_DATA = 457, + VAR_VIEW = 458, + VAR_ACCESS_CONTROL_VIEW = 459, + VAR_VIEW_FIRST = 460, + VAR_SERVE_EXPIRED = 461, + VAR_SERVE_EXPIRED_TTL = 462, + VAR_SERVE_EXPIRED_TTL_RESET = 463, + VAR_FAKE_DSA = 464, + VAR_FAKE_SHA1 = 465, + VAR_LOG_IDENTITY = 466, + VAR_HIDE_TRUSTANCHOR = 467, + VAR_TRUST_ANCHOR_SIGNALING = 468, + VAR_AGGRESSIVE_NSEC = 469, + VAR_USE_SYSTEMD = 470, + VAR_SHM_ENABLE = 471, + VAR_SHM_KEY = 472, + VAR_ROOT_KEY_SENTINEL = 473, + VAR_DNSCRYPT = 474, + VAR_DNSCRYPT_ENABLE = 475, + VAR_DNSCRYPT_PORT = 476, + VAR_DNSCRYPT_PROVIDER = 477, + VAR_DNSCRYPT_SECRET_KEY = 478, + VAR_DNSCRYPT_PROVIDER_CERT = 479, + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 480, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 481, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 482, + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 483, + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 484, + VAR_IPSECMOD_ENABLED = 485, + VAR_IPSECMOD_HOOK = 486, + VAR_IPSECMOD_IGNORE_BOGUS = 487, + VAR_IPSECMOD_MAX_TTL = 488, + VAR_IPSECMOD_WHITELIST = 489, + VAR_IPSECMOD_STRICT = 490, + VAR_CACHEDB = 491, + VAR_CACHEDB_BACKEND = 492, + VAR_CACHEDB_SECRETSEED = 493, + VAR_CACHEDB_REDISHOST = 494, + VAR_CACHEDB_REDISPORT = 495, + VAR_CACHEDB_REDISTIMEOUT = 496, + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 497, + VAR_FOR_UPSTREAM = 498, + VAR_AUTH_ZONE = 499, + VAR_ZONEFILE = 500, + VAR_MASTER = 501, + VAR_URL = 502, + VAR_FOR_DOWNSTREAM = 503, + VAR_FALLBACK_ENABLED = 504, + VAR_TLS_ADDITIONAL_PORT = 505, + VAR_LOW_RTT = 506, + VAR_LOW_RTT_PERMIL = 507, + VAR_FAST_SERVER_PERMIL = 508, + VAR_FAST_SERVER_NUM = 509, + VAR_ALLOW_NOTIFY = 510, + VAR_TLS_WIN_CERT = 511, + VAR_TCP_CONNECTION_LIMIT = 512, + VAR_FORWARD_NO_CACHE = 513, + VAR_STUB_NO_CACHE = 514, + VAR_LOG_SERVFAIL = 515, + VAR_DENY_ANY = 516, + VAR_UNKNOWN_SERVER_TIME_LIMIT = 517, + VAR_LOG_TAG_QUERYREPLY = 518, + VAR_STREAM_WAIT_SIZE = 519, + VAR_TLS_CIPHERS = 520, + VAR_TLS_CIPHERSUITES = 521, + VAR_TLS_SESSION_TICKET_KEYS = 522 }; #endif /* Tokens. */ @@ -485,108 +486,109 @@ extern int yydebug; #define VAR_RATELIMIT 428 #define VAR_RATELIMIT_SLABS 429 #define VAR_RATELIMIT_SIZE 430 -#define VAR_RATELIMIT_FOR_DOMAIN 431 -#define VAR_RATELIMIT_BELOW_DOMAIN 432 -#define VAR_IP_RATELIMIT_FACTOR 433 -#define VAR_RATELIMIT_FACTOR 434 -#define VAR_SEND_CLIENT_SUBNET 435 -#define VAR_CLIENT_SUBNET_ZONE 436 -#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 437 -#define VAR_CLIENT_SUBNET_OPCODE 438 -#define VAR_MAX_CLIENT_SUBNET_IPV4 439 -#define VAR_MAX_CLIENT_SUBNET_IPV6 440 -#define VAR_MIN_CLIENT_SUBNET_IPV4 441 -#define VAR_MIN_CLIENT_SUBNET_IPV6 442 -#define VAR_MAX_ECS_TREE_SIZE_IPV4 443 -#define VAR_MAX_ECS_TREE_SIZE_IPV6 444 -#define VAR_CAPS_WHITELIST 445 -#define VAR_CACHE_MAX_NEGATIVE_TTL 446 -#define VAR_PERMIT_SMALL_HOLDDOWN 447 -#define VAR_QNAME_MINIMISATION 448 -#define VAR_QNAME_MINIMISATION_STRICT 449 -#define VAR_IP_FREEBIND 450 -#define VAR_DEFINE_TAG 451 -#define VAR_LOCAL_ZONE_TAG 452 -#define VAR_ACCESS_CONTROL_TAG 453 -#define VAR_LOCAL_ZONE_OVERRIDE 454 -#define VAR_ACCESS_CONTROL_TAG_ACTION 455 -#define VAR_ACCESS_CONTROL_TAG_DATA 456 -#define VAR_VIEW 457 -#define VAR_ACCESS_CONTROL_VIEW 458 -#define VAR_VIEW_FIRST 459 -#define VAR_SERVE_EXPIRED 460 -#define VAR_SERVE_EXPIRED_TTL 461 -#define VAR_SERVE_EXPIRED_TTL_RESET 462 -#define VAR_FAKE_DSA 463 -#define VAR_FAKE_SHA1 464 -#define VAR_LOG_IDENTITY 465 -#define VAR_HIDE_TRUSTANCHOR 466 -#define VAR_TRUST_ANCHOR_SIGNALING 467 -#define VAR_AGGRESSIVE_NSEC 468 -#define VAR_USE_SYSTEMD 469 -#define VAR_SHM_ENABLE 470 -#define VAR_SHM_KEY 471 -#define VAR_ROOT_KEY_SENTINEL 472 -#define VAR_DNSCRYPT 473 -#define VAR_DNSCRYPT_ENABLE 474 -#define VAR_DNSCRYPT_PORT 475 -#define VAR_DNSCRYPT_PROVIDER 476 -#define VAR_DNSCRYPT_SECRET_KEY 477 -#define VAR_DNSCRYPT_PROVIDER_CERT 478 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 479 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 480 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 481 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 482 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 483 -#define VAR_IPSECMOD_ENABLED 484 -#define VAR_IPSECMOD_HOOK 485 -#define VAR_IPSECMOD_IGNORE_BOGUS 486 -#define VAR_IPSECMOD_MAX_TTL 487 -#define VAR_IPSECMOD_WHITELIST 488 -#define VAR_IPSECMOD_STRICT 489 -#define VAR_CACHEDB 490 -#define VAR_CACHEDB_BACKEND 491 -#define VAR_CACHEDB_SECRETSEED 492 -#define VAR_CACHEDB_REDISHOST 493 -#define VAR_CACHEDB_REDISPORT 494 -#define VAR_CACHEDB_REDISTIMEOUT 495 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 496 -#define VAR_FOR_UPSTREAM 497 -#define VAR_AUTH_ZONE 498 -#define VAR_ZONEFILE 499 -#define VAR_MASTER 500 -#define VAR_URL 501 -#define VAR_FOR_DOWNSTREAM 502 -#define VAR_FALLBACK_ENABLED 503 -#define VAR_TLS_ADDITIONAL_PORT 504 -#define VAR_LOW_RTT 505 -#define VAR_LOW_RTT_PERMIL 506 -#define VAR_FAST_SERVER_PERMIL 507 -#define VAR_FAST_SERVER_NUM 508 -#define VAR_ALLOW_NOTIFY 509 -#define VAR_TLS_WIN_CERT 510 -#define VAR_TCP_CONNECTION_LIMIT 511 -#define VAR_FORWARD_NO_CACHE 512 -#define VAR_STUB_NO_CACHE 513 -#define VAR_LOG_SERVFAIL 514 -#define VAR_DENY_ANY 515 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 516 -#define VAR_LOG_TAG_QUERYREPLY 517 -#define VAR_STREAM_WAIT_SIZE 518 -#define VAR_TLS_CIPHERS 519 -#define VAR_TLS_CIPHERSUITES 520 -#define VAR_TLS_SESSION_TICKET_KEYS 521 +#define VAR_OUTBOUND_MSG_RETRY 431 +#define VAR_RATELIMIT_FOR_DOMAIN 432 +#define VAR_RATELIMIT_BELOW_DOMAIN 433 +#define VAR_IP_RATELIMIT_FACTOR 434 +#define VAR_RATELIMIT_FACTOR 435 +#define VAR_SEND_CLIENT_SUBNET 436 +#define VAR_CLIENT_SUBNET_ZONE 437 +#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 438 +#define VAR_CLIENT_SUBNET_OPCODE 439 +#define VAR_MAX_CLIENT_SUBNET_IPV4 440 +#define VAR_MAX_CLIENT_SUBNET_IPV6 441 +#define VAR_MIN_CLIENT_SUBNET_IPV4 442 +#define VAR_MIN_CLIENT_SUBNET_IPV6 443 +#define VAR_MAX_ECS_TREE_SIZE_IPV4 444 +#define VAR_MAX_ECS_TREE_SIZE_IPV6 445 +#define VAR_CAPS_WHITELIST 446 +#define VAR_CACHE_MAX_NEGATIVE_TTL 447 +#define VAR_PERMIT_SMALL_HOLDDOWN 448 +#define VAR_QNAME_MINIMISATION 449 +#define VAR_QNAME_MINIMISATION_STRICT 450 +#define VAR_IP_FREEBIND 451 +#define VAR_DEFINE_TAG 452 +#define VAR_LOCAL_ZONE_TAG 453 +#define VAR_ACCESS_CONTROL_TAG 454 +#define VAR_LOCAL_ZONE_OVERRIDE 455 +#define VAR_ACCESS_CONTROL_TAG_ACTION 456 +#define VAR_ACCESS_CONTROL_TAG_DATA 457 +#define VAR_VIEW 458 +#define VAR_ACCESS_CONTROL_VIEW 459 +#define VAR_VIEW_FIRST 460 +#define VAR_SERVE_EXPIRED 461 +#define VAR_SERVE_EXPIRED_TTL 462 +#define VAR_SERVE_EXPIRED_TTL_RESET 463 +#define VAR_FAKE_DSA 464 +#define VAR_FAKE_SHA1 465 +#define VAR_LOG_IDENTITY 466 +#define VAR_HIDE_TRUSTANCHOR 467 +#define VAR_TRUST_ANCHOR_SIGNALING 468 +#define VAR_AGGRESSIVE_NSEC 469 +#define VAR_USE_SYSTEMD 470 +#define VAR_SHM_ENABLE 471 +#define VAR_SHM_KEY 472 +#define VAR_ROOT_KEY_SENTINEL 473 +#define VAR_DNSCRYPT 474 +#define VAR_DNSCRYPT_ENABLE 475 +#define VAR_DNSCRYPT_PORT 476 +#define VAR_DNSCRYPT_PROVIDER 477 +#define VAR_DNSCRYPT_SECRET_KEY 478 +#define VAR_DNSCRYPT_PROVIDER_CERT 479 +#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 480 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 481 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 482 +#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 483 +#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 484 +#define VAR_IPSECMOD_ENABLED 485 +#define VAR_IPSECMOD_HOOK 486 +#define VAR_IPSECMOD_IGNORE_BOGUS 487 +#define VAR_IPSECMOD_MAX_TTL 488 +#define VAR_IPSECMOD_WHITELIST 489 +#define VAR_IPSECMOD_STRICT 490 +#define VAR_CACHEDB 491 +#define VAR_CACHEDB_BACKEND 492 +#define VAR_CACHEDB_SECRETSEED 493 +#define VAR_CACHEDB_REDISHOST 494 +#define VAR_CACHEDB_REDISPORT 495 +#define VAR_CACHEDB_REDISTIMEOUT 496 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 497 +#define VAR_FOR_UPSTREAM 498 +#define VAR_AUTH_ZONE 499 +#define VAR_ZONEFILE 500 +#define VAR_MASTER 501 +#define VAR_URL 502 +#define VAR_FOR_DOWNSTREAM 503 +#define VAR_FALLBACK_ENABLED 504 +#define VAR_TLS_ADDITIONAL_PORT 505 +#define VAR_LOW_RTT 506 +#define VAR_LOW_RTT_PERMIL 507 +#define VAR_FAST_SERVER_PERMIL 508 +#define VAR_FAST_SERVER_NUM 509 +#define VAR_ALLOW_NOTIFY 510 +#define VAR_TLS_WIN_CERT 511 +#define VAR_TCP_CONNECTION_LIMIT 512 +#define VAR_FORWARD_NO_CACHE 513 +#define VAR_STUB_NO_CACHE 514 +#define VAR_LOG_SERVFAIL 515 +#define VAR_DENY_ANY 516 +#define VAR_UNKNOWN_SERVER_TIME_LIMIT 517 +#define VAR_LOG_TAG_QUERYREPLY 518 +#define VAR_STREAM_WAIT_SIZE 519 +#define VAR_TLS_CIPHERS 520 +#define VAR_TLS_CIPHERSUITES 521 +#define VAR_TLS_SESSION_TICKET_KEYS 522 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED union YYSTYPE { -#line 66 "./util/configparser.y" /* yacc.c:1910 */ +#line 66 "./util/configparser.y" /* yacc.c:1909 */ char* str; -#line 590 "util/configparser.h" /* yacc.c:1910 */ +#line 592 "util/configparser.h" /* yacc.c:1909 */ }; typedef union YYSTYPE YYSTYPE; From 7c18b365210f4d796b60f8ac946c097a6c26785e Mon Sep 17 00:00:00 2001 From: Moritz Schneider Date: Wed, 12 Jun 2019 18:54:03 +0200 Subject: [PATCH 006/553] Adapt some comments --- testdata/fwd_error.rpl | 2 +- testdata/fwd_timeout.rpl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/testdata/fwd_error.rpl b/testdata/fwd_error.rpl index 238b1f58d..2421027a3 100644 --- a/testdata/fwd_error.rpl +++ b/testdata/fwd_error.rpl @@ -9,7 +9,7 @@ SECTION QUESTION www.example.com. IN A ENTRY_END ; But the pending query fails due to error (say TCP failure or malloc or ...) -; This is iterator/iterator.h OUTBOUND_MSG_RETRY number of errors. +; This is util/config_file.c outbound-msg-retry number of errors. STEP 2 ERROR STEP 3 ERROR STEP 4 ERROR diff --git a/testdata/fwd_timeout.rpl b/testdata/fwd_timeout.rpl index 1bb934dff..e4a711099 100644 --- a/testdata/fwd_timeout.rpl +++ b/testdata/fwd_timeout.rpl @@ -9,7 +9,7 @@ SECTION QUESTION www.example.com. IN A ENTRY_END ; But the pending query times out! -; OUTBOUND_MSG_RETRY times timeout. +; outbound-msg-retry times timeout. STEP 2 TIMEOUT STEP 3 TIMEOUT STEP 4 TIMEOUT From 8d9b94d3ef12b7a978593bdb130e3b1b16c411fb Mon Sep 17 00:00:00 2001 From: Moritz Schneider Date: Wed, 12 Jun 2019 19:08:59 +0200 Subject: [PATCH 007/553] Update documentation for outbound-msg-retry --- doc/unbound.conf.5.in | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 97e0bf924..b88d4e733 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -1454,6 +1454,11 @@ This can make ordinary queries complete (if repeatedly queried for), and enter the cache, whilst also mitigating the traffic flow by the factor given. .TP 5 +.B outbound\-msg\-retry: \fI +The number of retries unbound will do in case of a non positive response is +received. If a forward nameserver is used, this is the number of retries per +forward nameserver in case of throwaway response. +.TP 5 .B fast\-server\-permil: \fI Specify how many times out of 1000 to pick from the set of fastest servers. 0 turns the feature off. A value of 900 would pick from the fastest From f72885e5d7153c6f307141f55bebae285c9ee642 Mon Sep 17 00:00:00 2001 From: Moritz Schneider Date: Wed, 12 Jun 2019 19:11:20 +0200 Subject: [PATCH 008/553] Update Changelog --- doc/Changelog | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 88f2c6f08..a998119c8 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +12 June 2019: Moritz Schneider + - made outbound-msg-retry configurable + 6 June 2019: Wouter - 1.9.2rc1 release candidate tag. From dd70c2ef9afc32fae0ce48c7419bed23e32d0370 Mon Sep 17 00:00:00 2001 From: mb Date: Thu, 29 Oct 2020 15:58:13 +0100 Subject: [PATCH 009/553] RPZ: implement stubs for rpz-tcp-only actions. --- respip/respip.c | 1 - services/localzone.c | 20 ++++++++++++++++++-- services/localzone.h | 4 ++++ services/rpz.c | 36 +++++++++++++++++++++++------------- testdata/rpz_qname.rpl | 40 ++++++++++++++++++++++++++++++++++++++-- testdata/rpz_respip.rpl | 28 ++++++++++++++++++++++++++++ 6 files changed, 111 insertions(+), 18 deletions(-) diff --git a/respip/respip.c b/respip/respip.c index 6fa4f1885..82ca37d50 100644 --- a/respip/respip.c +++ b/respip/respip.c @@ -807,7 +807,6 @@ respip_nodata_answer(uint16_t qtype, enum respip_action action, * is explicitly specified. */ int rcode = (action == respip_always_nxdomain)? LDNS_RCODE_NXDOMAIN:LDNS_RCODE_NOERROR; - /* We should empty the answer section except for any preceding * CNAMEs (in that case rrset_id > 0). Type-ANY case is * special as noted in respip_data_answer(). */ diff --git a/services/localzone.c b/services/localzone.c index cad460663..b5d8472bc 100644 --- a/services/localzone.c +++ b/services/localzone.c @@ -1514,6 +1514,15 @@ local_zone_does_not_cover(struct local_zone* z, struct query_info* qinfo, return (lr == NULL); } +static inline int +local_zone_is_udp_query(struct comm_reply* repinfo) { + return repinfo != NULL + ? (repinfo->c != NULL + ? repinfo->c->type == comm_udp + : 0) + : 0; +} + int local_zones_zone_answer(struct local_zone* z, struct module_env* env, struct query_info* qinfo, struct edns_data* edns, @@ -1536,7 +1545,9 @@ local_zones_zone_answer(struct local_zone* z, struct module_env* env, lz_type == local_zone_redirect || lz_type == local_zone_inform_redirect || lz_type == local_zone_always_nxdomain || - lz_type == local_zone_always_nodata) { + lz_type == local_zone_always_nodata || + (lz_type == local_zone_truncate + && local_zone_is_udp_query(repinfo))) { /* for static, reply nodata or nxdomain * for redirect, reply nodata */ /* no additional section processing, @@ -1546,8 +1557,10 @@ local_zones_zone_answer(struct local_zone* z, struct module_env* env, */ int rcode = (ld || lz_type == local_zone_redirect || lz_type == local_zone_inform_redirect || - lz_type == local_zone_always_nodata)? + lz_type == local_zone_always_nodata || + lz_type == local_zone_truncate)? LDNS_RCODE_NOERROR:LDNS_RCODE_NXDOMAIN; + rcode = lz_type == local_zone_truncate ? (rcode|BIT_TC) : rcode; if(z->soa) return local_encode(qinfo, env, edns, repinfo, buf, temp, z->soa, 0, rcode); @@ -1763,6 +1776,7 @@ const char* local_zone_type2str(enum localzone_type t) case local_zone_always_nodata: return "always_nodata"; case local_zone_always_deny: return "always_deny"; case local_zone_noview: return "noview"; + case local_zone_truncate: return "truncate"; case local_zone_invalid: return "invalid"; } return "badtyped"; @@ -1800,6 +1814,8 @@ int local_zone_str2type(const char* type, enum localzone_type* t) *t = local_zone_always_deny; else if(strcmp(type, "noview") == 0) *t = local_zone_noview; + else if(strcmp(type, "truncate") == 0) + *t = local_zone_truncate; else if(strcmp(type, "nodefault") == 0) *t = local_zone_nodefault; else return 0; diff --git a/services/localzone.h b/services/localzone.h index bb3593936..39517c36a 100644 --- a/services/localzone.h +++ b/services/localzone.h @@ -98,6 +98,8 @@ enum localzone_type { local_zone_always_deny, /** answer not from the view, but global or no-answer */ local_zone_noview, + /** truncate the response; client should retry via tcp */ + local_zone_truncate, /** Invalid type, cannot be used to generate answer */ local_zone_invalid }; @@ -556,6 +558,8 @@ enum respip_action { respip_always_nodata = local_zone_always_nodata, /** answer with nodata response */ respip_always_deny = local_zone_always_deny, + /** RPZ: truncate answer in order to force switch to tcp */ + respip_truncate = local_zone_truncate, /* The rest of the values are only possible as * access-control-tag-action */ diff --git a/services/rpz.c b/services/rpz.c index 13304652c..25f8c8892 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -213,8 +213,8 @@ rpz_action_to_localzone_type(enum rpz_action a) case RPZ_PASSTHRU_ACTION: return local_zone_always_transparent; case RPZ_LOCAL_DATA_ACTION: /* fallthrough */ case RPZ_CNAME_OVERRIDE_ACTION: return local_zone_redirect; + case RPZ_TCP_ONLY_ACTION: return local_zone_truncate; case RPZ_INVALID_ACTION: /* fallthrough */ - case RPZ_TCP_ONLY_ACTION: /* fallthrough */ default: return local_zone_invalid; } } @@ -223,15 +223,15 @@ enum respip_action rpz_action_to_respip_action(enum rpz_action a) { switch(a) { - case RPZ_NXDOMAIN_ACTION: return respip_always_nxdomain; - case RPZ_NODATA_ACTION: return respip_always_nodata; - case RPZ_DROP_ACTION: return respip_always_deny; - case RPZ_PASSTHRU_ACTION: return respip_always_transparent; - case RPZ_LOCAL_DATA_ACTION: /* fallthrough */ + case RPZ_NXDOMAIN_ACTION: return respip_always_nxdomain; + case RPZ_NODATA_ACTION: return respip_always_nodata; + case RPZ_DROP_ACTION: return respip_always_deny; + case RPZ_PASSTHRU_ACTION: return respip_always_transparent; + case RPZ_LOCAL_DATA_ACTION: /* fallthrough */ case RPZ_CNAME_OVERRIDE_ACTION: return respip_redirect; - case RPZ_INVALID_ACTION: /* fallthrough */ - case RPZ_TCP_ONLY_ACTION: /* fallthrough */ - default: return respip_invalid; + case RPZ_TCP_ONLY_ACTION: return respip_truncate; + case RPZ_INVALID_ACTION: /* fallthrough */ + default: return respip_invalid; } } @@ -244,6 +244,7 @@ localzone_type_to_rpz_action(enum localzone_type lzt) case local_zone_always_deny: return RPZ_DROP_ACTION; case local_zone_always_transparent: return RPZ_PASSTHRU_ACTION; case local_zone_redirect: return RPZ_LOCAL_DATA_ACTION; + case local_zone_truncate: return RPZ_TCP_ONLY_ACTION; case local_zone_invalid: default: return RPZ_INVALID_ACTION; @@ -259,6 +260,7 @@ respip_action_to_rpz_action(enum respip_action a) case respip_always_deny: return RPZ_DROP_ACTION; case respip_always_transparent: return RPZ_PASSTHRU_ACTION; case respip_redirect: return RPZ_LOCAL_DATA_ACTION; + case respip_truncate: return RPZ_TCP_ONLY_ACTION; case respip_invalid: default: return RPZ_INVALID_ACTION; @@ -478,13 +480,17 @@ rpz_insert_qname_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, char* rrstr; int newzone = 0; - if(a == RPZ_TCP_ONLY_ACTION || a == RPZ_INVALID_ACTION) { + if(a == RPZ_INVALID_ACTION) { verbose(VERB_ALGO, "RPZ: skipping unsupported action: %s", rpz_action_to_string(a)); free(dname); return; } + if(a == RPZ_TCP_ONLY_ACTION) { + verbose(VERB_ALGO, "RPZ: insert qname trigger: tcp-only"); + } + lock_rw_wrlock(&r->local_zones->lock); /* exact match */ z = local_zones_find(r->local_zones, dname, dnamelen, dnamelabs, @@ -550,13 +556,16 @@ rpz_insert_response_ip_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, char* rrstr; enum respip_action respa = rpz_action_to_respip_action(a); - if(a == RPZ_TCP_ONLY_ACTION || a == RPZ_INVALID_ACTION || - respa == respip_invalid) { + if(a == RPZ_INVALID_ACTION || respa == respip_invalid) { verbose(VERB_ALGO, "RPZ: skipping unsupported action: %s", rpz_action_to_string(a)); return 0; } + if(a == RPZ_TCP_ONLY_ACTION) { + verbose(VERB_ALGO, "RPZ: insert respip trigger: tcp-only"); + } + if(!netblockdnametoaddr(dname, dnamelen, &addr, &addrlen, &net, &af)) return 0; @@ -984,6 +993,7 @@ rpz_apply_qname_trigger(struct auth_zones* az, struct module_env* env, lock_rw_unlock(&a->lock); /* not found in this auth_zone */ } lock_rw_unlock(&az->rpz_lock); + if(!z) return 0; /* not holding auth_zone.lock anymore */ @@ -1032,7 +1042,7 @@ rpz_apply_qname_trigger(struct auth_zones* az, struct module_env* env, lock_rw_unlock(&a->lock); return !qinfo->local_alias; } - +verbose(VERB_ALGO, "xxxxxx repinfo=%p is_udp=%d", repinfo, repinfo->c->type == comm_udp); ret = local_zones_zone_answer(z, env, qinfo, edns, repinfo, buf, temp, 0 /* no local data used */, lzt); if(r->log) diff --git a/testdata/rpz_qname.rpl b/testdata/rpz_qname.rpl index 7940e9392..4f17f8577 100644 --- a/testdata/rpz_qname.rpl +++ b/testdata/rpz_qname.rpl @@ -38,6 +38,7 @@ d TXT "local data 2nd zone" e CNAME *.a.example. *.e CNAME *.b.example. drop CNAME rpz-drop. +tcp CNAME rpz-tcp-only. TEMPFILE_END stub-zone: @@ -295,10 +296,45 @@ something.e.b.example. IN TXT "*.b.example. answer from upstream ns" ENTRY_END ; deny zone -STEP 90 QUERY +;STEP 90 QUERY +;ENTRY_BEGIN +;SECTION QUESTION +;drop. IN TXT +;ENTRY_END + +; tcp-only action + +STEP 95 QUERY ENTRY_BEGIN SECTION QUESTION -drop. IN TXT +tcp. IN TXT ENTRY_END + +STEP 96 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA TC NOERROR +SECTION QUESTION +tcp. IN TXT +SECTION ANSWER +ENTRY_END + +STEP 97 QUERY +ENTRY_BEGIN +MATCH TCP +SECTION QUESTION +tcp. IN TXT +ENTRY_END + +STEP 98 CHECK_ANSWER +ENTRY_BEGIN +MATCH all TCP +REPLY QR RD RA AA NOERROR +SECTION QUESTION +tcp. IN TXT +SECTION ANSWER +tcp. IN TXT "local tcp data 2nd zone" +ENTRY_END + ; no answer is checked at exit of testbound. SCENARIO_END diff --git a/testdata/rpz_respip.rpl b/testdata/rpz_respip.rpl index 94f998be6..894a7cc5f 100644 --- a/testdata/rpz_respip.rpl +++ b/testdata/rpz_respip.rpl @@ -20,6 +20,7 @@ $ORIGIN rpz.example.com. 16.0.0.10.10.rpz-ip CNAME . 24.0.10.10.10.rpz-ip CNAME rpz-drop. 32.10.10.10.10.rpz-ip CNAME rpz-passthru. +32.1.1.1.10.rpz-ip CNAME rpz-tcp-only. 32.zz.db8.2001.rpz-ip CNAME *. 48.zz.aa.db8.2001.rpz-ip CNAME . 64.zz.bb.aa.db8.2001.rpz-ip CNAME rpz-drop. @@ -217,6 +218,16 @@ SECTION ANSWER h. IN AAAA 2001:db8:aa:bb:cc::124 ENTRY_END +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +y. IN A +SECTION ANSWER +y. IN A 10.1.1.1 +ENTRY_END + RANGE_END STEP 1 QUERY @@ -446,4 +457,21 @@ SECTION QUESTION e. IN AAAA ENTRY_END STEP 29 TIME_PASSES ELAPSE 12 + +STEP 30 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +y. IN A +ENTRY_END + +STEP 31 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR TC RD RA NOERROR +SECTION QUESTION +y. IN A +SECTION ANSWER +ENTRY_END + SCENARIO_END From fb8c5a764d52c19d9330a095b0b1f766f41cb080 Mon Sep 17 00:00:00 2001 From: mb Date: Tue, 3 Nov 2020 11:02:36 +0100 Subject: [PATCH 010/553] RPZ: provide tcp-only triggers for respip actions --- services/mesh.c | 20 ++++++++++++++++++++ services/rpz.c | 6 ++---- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/services/mesh.c b/services/mesh.c index cd9050936..a255595e8 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -1175,6 +1175,22 @@ mesh_do_callback(struct mesh_state* m, int rcode, struct reply_info* rep, m->s.env->mesh->num_reply_addrs--; } +static inline int +mesh_is_rpz_respip_tcponly_action(struct mesh_state const* m) +{ + struct respip_action_info const* respip_info = m->s.respip_action_info; + return respip_info == NULL + ? 0 + : (respip_info->rpz_used + && !respip_info->rpz_disabled + && respip_info->action == respip_truncate); +} + +static inline int +mesh_is_udp(struct mesh_reply const* r) { + return r->query_reply.c->type == comm_udp; +} + /** * Send reply to mesh reply entry * @param m: mesh state to send it for. @@ -1193,6 +1209,10 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, struct timeval end_time; struct timeval duration; int secure; + + rcode = mesh_is_udp(r) && mesh_is_rpz_respip_tcponly_action(m) + ? (rcode|BIT_TC) : rcode; + /* Copy the client's EDNS for later restore, to make sure the edns * compare is with the correct edns options. */ struct edns_data edns_bak = r->edns; diff --git a/services/rpz.c b/services/rpz.c index 25f8c8892..fb047a7f2 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -480,6 +480,8 @@ rpz_insert_qname_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, char* rrstr; int newzone = 0; + verbose(VERB_ALGO, "RPZ: insert qname trigger: %s", rpz_action_to_string(a)); + if(a == RPZ_INVALID_ACTION) { verbose(VERB_ALGO, "RPZ: skipping unsupported action: %s", rpz_action_to_string(a)); @@ -487,10 +489,6 @@ rpz_insert_qname_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, return; } - if(a == RPZ_TCP_ONLY_ACTION) { - verbose(VERB_ALGO, "RPZ: insert qname trigger: tcp-only"); - } - lock_rw_wrlock(&r->local_zones->lock); /* exact match */ z = local_zones_find(r->local_zones, dname, dnamelen, dnamelabs, From 1ab84a1d27dd9178caefe0d09b7fa99e48029e06 Mon Sep 17 00:00:00 2001 From: mb Date: Tue, 3 Nov 2020 11:03:29 +0100 Subject: [PATCH 011/553] RPZ: testbound: add qname and respip tcp-only examples --- testdata/rpz_qname_tcponly.rpl | 117 ++++++++++++++++++ testdata/rpz_respip_tcponly.rpl | 207 ++++++++++++++++++++++++++++++++ 2 files changed, 324 insertions(+) create mode 100644 testdata/rpz_qname_tcponly.rpl create mode 100644 testdata/rpz_respip_tcponly.rpl diff --git a/testdata/rpz_qname_tcponly.rpl b/testdata/rpz_qname_tcponly.rpl new file mode 100644 index 000000000..d30b88616 --- /dev/null +++ b/testdata/rpz_qname_tcponly.rpl @@ -0,0 +1,117 @@ +; config options +server: + module-config: "respip validator iterator" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: no + +rpz: + name: "rpz.example.com." + zonefile: +TEMPFILE_NAME rpz.example.com +TEMPFILE_CONTENTS rpz.example.com +$ORIGIN example.com. +rpz 3600 IN SOA ns1.rpz.example.com. hostmaster.rpz.example.com. ( + 1379078166 28800 7200 604800 7200 ) + 3600 IN NS ns1.rpz.example.com. + 3600 IN NS ns2.rpz.example.com. +$ORIGIN rpz.example.com. +a.a CNAME rpz-passthru. +b.a CNAME rpz-tcp-only. +TEMPFILE_END + +stub-zone: + name: "a." + stub-addr: 10.20.30.40 +CONFIG_END + +SCENARIO_BEGIN Test RPZ qname trigger and tcp-only action + +RANGE_BEGIN 0 100 + ADDRESS 10.20.30.40 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +a. IN NS +SECTION ANSWER +a. IN NS ns.a. +SECTION ADDITIONAL +ns.a IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +a.a. IN TXT +SECTION ANSWER +a.a. IN TXT "upstream txt rr a.a." +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +b.a. IN TXT +SECTION ANSWER +b.a. IN TXT "upstream txt rr b.a." +ENTRY_END + +RANGE_END + +STEP 10 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +a.a. IN TXT +ENTRY_END + +STEP 11 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +a.a. IN TXT +SECTION ANSWER +a.a. IN TXT "upstream txt rr a.a." +ENTRY_END + +STEP 20 QUERY +ENTRY_BEGIN +MATCH UDP +REPLY RD +SECTION QUESTION +b.a. IN TXT +ENTRY_END + +STEP 21 CHECK_ANSWER +ENTRY_BEGIN +MATCH all UDP +REPLY QR AA TC RD RA NOERROR +SECTION QUESTION +b.a. IN TXT +SECTION ANSWER +ENTRY_END + +STEP 30 QUERY +ENTRY_BEGIN +MATCH TCP +REPLY RD +SECTION QUESTION +b.a. IN TXT +ENTRY_END + +STEP 31 CHECK_ANSWER +ENTRY_BEGIN +MATCH all TCP +REPLY QR RD RA NOERROR +SECTION QUESTION +b.a. IN TXT +SECTION ANSWER +b.a. IN TXT "upstream txt rr b.a." +ENTRY_END + +SCENARIO_END diff --git a/testdata/rpz_respip_tcponly.rpl b/testdata/rpz_respip_tcponly.rpl new file mode 100644 index 000000000..c495de203 --- /dev/null +++ b/testdata/rpz_respip_tcponly.rpl @@ -0,0 +1,207 @@ +; config options +server: + module-config: "respip validator iterator" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: no + +rpz: + name: "rpz.example.com." + zonefile: +TEMPFILE_NAME rpz.example.com +TEMPFILE_CONTENTS rpz.example.com +$ORIGIN example.com. +rpz 3600 IN SOA ns1.rpz.example.com. hostmaster.rpz.example.com. ( + 1379078166 28800 7200 604800 7200 ) + 3600 IN NS ns1.rpz.example.com. + 3600 IN NS ns2.rpz.example.com. +$ORIGIN rpz.example.com. +8.0.0.0.10.rpz-ip CNAME *. +16.0.0.10.10.rpz-ip CNAME . +24.0.10.10.10.rpz-ip CNAME rpz-drop. +32.10.10.10.10.rpz-ip CNAME rpz-passthru. +32.1.1.1.10.rpz-ip CNAME rpz-tcp-only. +TEMPFILE_END + +stub-zone: + name: "." + stub-addr: 10.20.30.40 +CONFIG_END + +SCENARIO_BEGIN Test RPZ response IP address trigger and tcp-only action + +RANGE_BEGIN 0 100 + ADDRESS 10.20.30.40 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS ns. +SECTION ADDITIONAL +ns. IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +a. IN A +SECTION ANSWER +a. IN A 10.0.0.123 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +b. IN A +SECTION ANSWER +b. IN A 10.1.0.123 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +c. IN A +SECTION ANSWER +c. IN A 10.11.0.123 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +d. IN A +SECTION ANSWER +d. IN A 10.10.0.123 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +f. IN A +SECTION ANSWER +f. IN A 10.10.10.10 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +y. IN A +SECTION ANSWER +y. IN A 10.1.1.1 +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +a. IN A +ENTRY_END + +STEP 2 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +a. IN A +SECTION ANSWER +ENTRY_END + +STEP 10 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +b. IN A +ENTRY_END + +STEP 11 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +b. IN A +SECTION ANSWER +ENTRY_END + +STEP 13 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +d. IN A +ENTRY_END + +STEP 14 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NXDOMAIN +SECTION QUESTION +d. IN A +SECTION ANSWER +ENTRY_END + +STEP 17 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +f. IN A +ENTRY_END + +STEP 18 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +f. IN A +SECTION ANSWER +f. IN A 10.10.10.10 +ENTRY_END + +STEP 30 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +y. IN A +ENTRY_END + +STEP 31 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR TC RD RA NOERROR +SECTION QUESTION +y. IN A +SECTION ANSWER +ENTRY_END + +STEP 40 QUERY +ENTRY_BEGIN +MATCH TCP +REPLY RD +SECTION QUESTION +y. IN A +ENTRY_END + +STEP 41 CHECK_ANSWER +ENTRY_BEGIN +MATCH all TCP +REPLY QR RD RA NOERROR +SECTION QUESTION +y. IN A +SECTION ANSWER +y. IN A 10.1.1.1 +ENTRY_END + +SCENARIO_END From fc4de71fe07e2272d17fb1ebe753bd61b6476c97 Mon Sep 17 00:00:00 2001 From: mb Date: Tue, 3 Nov 2020 15:45:26 +0100 Subject: [PATCH 012/553] RPZ: fix for c89 --- services/mesh.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/services/mesh.c b/services/mesh.c index a255595e8..ec2e940a4 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -1209,10 +1209,6 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, struct timeval end_time; struct timeval duration; int secure; - - rcode = mesh_is_udp(r) && mesh_is_rpz_respip_tcponly_action(m) - ? (rcode|BIT_TC) : rcode; - /* Copy the client's EDNS for later restore, to make sure the edns * compare is with the correct edns options. */ struct edns_data edns_bak = r->edns; @@ -1222,6 +1218,11 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, * null stops the mesh state remove and thus * reply_list modification and accounting */ struct mesh_reply* rlist = m->reply_list; + + /* RPZ: apply actions */ + rcode = mesh_is_udp(r) && mesh_is_rpz_respip_tcponly_action(m) + ? (rcode|BIT_TC) : rcode; + /* examine security status */ if(m->s.env->need_to_validate && (!(r->qflags&BIT_CD) || m->s.env->cfg->ignore_cd) && rep && From bd0c910830808b6d039bc4ac2655a95efd3991fe Mon Sep 17 00:00:00 2001 From: mb Date: Wed, 4 Nov 2020 17:00:28 +0100 Subject: [PATCH 013/553] RPZ: provide rpz-client-ip trigger and actions --- services/localzone.c | 4 +- services/rpz.c | 314 +++++++++++++++++++++++++++++--------- services/rpz.h | 1 + testdata/rpz_clientip.rpl | 180 ++++++++++++++++++++++ 4 files changed, 427 insertions(+), 72 deletions(-) create mode 100644 testdata/rpz_clientip.rpl diff --git a/services/localzone.c b/services/localzone.c index b5d8472bc..5e2104a7c 100644 --- a/services/localzone.c +++ b/services/localzone.c @@ -1561,7 +1561,7 @@ local_zones_zone_answer(struct local_zone* z, struct module_env* env, lz_type == local_zone_truncate)? LDNS_RCODE_NOERROR:LDNS_RCODE_NXDOMAIN; rcode = lz_type == local_zone_truncate ? (rcode|BIT_TC) : rcode; - if(z->soa) + if(z != NULL && z->soa) return local_encode(qinfo, env, edns, repinfo, buf, temp, z->soa, 0, rcode); local_error_encode(qinfo, env, edns, repinfo, buf, temp, rcode, @@ -1578,7 +1578,7 @@ 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 != NULL && z->soa) return local_encode(qinfo, env, edns, repinfo, buf, temp, z->soa, 0, rcode); local_error_encode(qinfo, env, edns, repinfo, buf, temp, rcode, diff --git a/services/rpz.c b/services/rpz.c index fb047a7f2..f8fa803de 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -51,6 +51,8 @@ #include "util/locks.h" #include "util/regional.h" +typedef struct resp_addr rpz_aclnode_type; + /** string for RPZ action enum */ const char* rpz_action_to_string(enum rpz_action a) @@ -305,6 +307,7 @@ void rpz_delete(struct rpz* r) return; local_zones_delete(r->local_zones); respip_set_delete(r->respip_set); + respip_set_delete(r->client_set); regional_destroy(r->region); free(r->taglist); free(r->log_name); @@ -317,12 +320,16 @@ rpz_clear(struct rpz* r) /* must hold write lock on auth_zone */ local_zones_delete(r->local_zones); respip_set_delete(r->respip_set); + respip_set_delete(r->client_set); if(!(r->local_zones = local_zones_create())){ return 0; } if(!(r->respip_set = respip_set_create())) { return 0; } + if(!(r->client_set = respip_set_create())) { + return 0; + } return 1; } @@ -332,6 +339,10 @@ rpz_finish_config(struct rpz* r) lock_rw_wrlock(&r->respip_set->lock); addr_tree_init_parents(&r->respip_set->ip_tree); lock_rw_unlock(&r->respip_set->lock); + + lock_rw_wrlock(&r->client_set->lock); + addr_tree_init_parents(&r->client_set->ip_tree); + lock_rw_unlock(&r->client_set->lock); } /** new rrset containing CNAME override, does not yet contain a dname */ @@ -398,6 +409,12 @@ rpz_create(struct config_auth* p) if(!(r->respip_set = respip_set_create())) { goto err; } + + /* (ab)use respip for client acl */ + if(!(r->client_set = respip_set_create())) { + goto err; + } + r->taglistlen = p->rpz_taglistlen; r->taglist = memdup(p->rpz_taglist, r->taglistlen); if(p->rpz_action_override) { @@ -440,6 +457,8 @@ err: local_zones_delete(r->local_zones); if(r->respip_set) respip_set_delete(r->respip_set); + if(r->client_set) + respip_set_delete(r->client_set); if(r->taglist) free(r->taglist); if(r->region) @@ -541,57 +560,95 @@ rpz_insert_qname_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, return; } +static int +rpz_insert_ipaddr_based_trigger(struct respip_set* set, struct sockaddr_storage* addr, + socklen_t addrlen, int net, enum rpz_action a, uint16_t rrtype, + uint16_t rrclass, uint32_t ttl, uint8_t* rdata, size_t rdata_len, + uint8_t* rr, size_t rr_len) +{ + struct resp_addr* node; + char* rrstr; + enum respip_action respa = rpz_action_to_respip_action(a); + + lock_rw_wrlock(&set->lock); + rrstr = sldns_wire2str_rr(rr, rr_len); + if(!rrstr) { + log_err("malloc error while inserting RPZ respip trigger"); + lock_rw_unlock(&set->lock); + return 0; + } + if(!(node=respip_sockaddr_find_or_create(set, addr, addrlen, + net, 1, rrstr))) { + lock_rw_unlock(&set->lock); + free(rrstr); + return 0; + } + + lock_rw_wrlock(&node->lock); + lock_rw_unlock(&set->lock); + node->action = respa; + + if(a == RPZ_LOCAL_DATA_ACTION) { + respip_enter_rr(set->region, node, rrtype, + rrclass, ttl, rdata, rdata_len, rrstr, ""); + } + lock_rw_unlock(&node->lock); + free(rrstr); + return 1; +} + +static int +rpz_insert_client_ip_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, + enum rpz_action a, uint16_t rrtype, uint16_t rrclass, uint32_t ttl, + uint8_t* rdata, size_t rdata_len, uint8_t* rr, size_t rr_len) +{ + struct sockaddr_storage addr; + socklen_t addrlen; + int net, af; + enum respip_action respa = rpz_action_to_respip_action(a); + + verbose(VERB_ALGO, "RPZ: insert client ip trigger: %s", rpz_action_to_string(a)); + if(a == RPZ_INVALID_ACTION || respa == respip_invalid) { + verbose(VERB_ALGO, "RPZ: skipping unsupported action: %s", + rpz_action_to_string(a)); + return 0; + } + + if(!netblockdnametoaddr(dname, dnamelen, &addr, &addrlen, &net, &af)) { + verbose(VERB_ALGO, "RPZ: unable to parse client ip"); + return 0; + } + + return rpz_insert_ipaddr_based_trigger(r->client_set, &addr, addrlen, net, + a, rrtype, rrclass, ttl, rdata, rdata_len, rr, rr_len); +} + /** Insert RR into RPZ's respip_set */ static int rpz_insert_response_ip_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, enum rpz_action a, uint16_t rrtype, uint16_t rrclass, uint32_t ttl, uint8_t* rdata, size_t rdata_len, uint8_t* rr, size_t rr_len) { - struct resp_addr* node; struct sockaddr_storage addr; socklen_t addrlen; int net, af; - char* rrstr; enum respip_action respa = rpz_action_to_respip_action(a); + verbose(VERB_ALGO, "RPZ: insert response ip trigger: %s", rpz_action_to_string(a)); + if(a == RPZ_INVALID_ACTION || respa == respip_invalid) { verbose(VERB_ALGO, "RPZ: skipping unsupported action: %s", rpz_action_to_string(a)); return 0; } - if(a == RPZ_TCP_ONLY_ACTION) { - verbose(VERB_ALGO, "RPZ: insert respip trigger: tcp-only"); - } - - if(!netblockdnametoaddr(dname, dnamelen, &addr, &addrlen, &net, &af)) - return 0; - - lock_rw_wrlock(&r->respip_set->lock); - rrstr = sldns_wire2str_rr(rr, rr_len); - if(!rrstr) { - log_err("malloc error while inserting RPZ respip trigger"); - lock_rw_unlock(&r->respip_set->lock); - return 0; - } - if(!(node=respip_sockaddr_find_or_create(r->respip_set, &addr, addrlen, - net, 1, rrstr))) { - lock_rw_unlock(&r->respip_set->lock); - free(rrstr); + if(!netblockdnametoaddr(dname, dnamelen, &addr, &addrlen, &net, &af)) { + verbose(VERB_ALGO, "RPZ: unable to parse response ip"); return 0; } - lock_rw_wrlock(&node->lock); - lock_rw_unlock(&r->respip_set->lock); - node->action = respa; - - if(a == RPZ_LOCAL_DATA_ACTION) { - respip_enter_rr(r->respip_set->region, node, rrtype, - rrclass, ttl, rdata, rdata_len, rrstr, ""); - } - lock_rw_unlock(&node->lock); - free(rrstr); - return 1; + return rpz_insert_ipaddr_based_trigger(r->respip_set, &addr, addrlen, net, + a, rrtype, rrclass, ttl, rdata, rdata_len, rr, rr_len); } int @@ -643,14 +700,17 @@ rpz_insert_rr(struct rpz* r, uint8_t* azname, size_t aznamelen, uint8_t* dname, rpz_insert_qname_trigger(r, policydname, policydnamelen, a, rr_type, rr_class, rr_ttl, rdatawl, rdatalen, rr, rr_len); - } - else if(t == RPZ_RESPONSE_IP_TRIGGER) { + } else if(t == RPZ_RESPONSE_IP_TRIGGER) { rpz_insert_response_ip_trigger(r, policydname, policydnamelen, a, rr_type, rr_class, rr_ttl, rdatawl, rdatalen, rr, rr_len); free(policydname); - } - else { + } else if(t == RPZ_CLIENT_IP_TRIGGER) { + rpz_insert_client_ip_trigger(r, policydname, policydnamelen, + a, rr_type, rr_class, rr_ttl, rdatawl, rdatalen, rr, + rr_len); + free(policydname); + } else { free(policydname); verbose(VERB_ALGO, "RPZ: skipping unsupported trigger: %s", rpz_trigger_to_string(t)); @@ -954,6 +1014,124 @@ log_rpz_apply(uint8_t* dname, enum rpz_action a, struct query_info* qinfo, log_nametypeclass(0, txt, qinfo->qname, qinfo->qtype, qinfo->qclass); } +static enum rpz_action +rpz_apply_client_ip_trigger(struct rpz* r, struct comm_reply* repinfo) +{ + struct resp_addr* raddr = NULL; + enum rpz_action action = RPZ_INVALID_ACTION; + struct sockaddr_storage* addr = &repinfo->addr; + socklen_t addrlen = repinfo->addrlen; + + lock_rw_rdlock(&r->client_set->lock); + + raddr = (struct resp_addr*)addr_tree_lookup(&r->client_set->ip_tree, + addr, addrlen); + if(raddr != NULL) { + action = respip_action_to_rpz_action(raddr->action); + lock_rw_unlock(&raddr->lock); + } + + verbose(VERB_ALGO, "RPZ: apply client ip trigger: found=%d action=%s", + raddr != NULL, rpz_action_to_string(action)); + + lock_rw_unlock(&r->client_set->lock); + + return action; +} + +static inline +enum rpz_action +rpz_resolve_client_action_and_zone(struct auth_zones* az, struct query_info* qinfo, + struct comm_reply* repinfo, uint8_t* taglist, size_t taglen, + struct ub_server_stats* stats, + /* output parameters */ + struct local_zone** z_out, struct auth_zone** a_out, struct rpz** r_out ) +{ + struct auth_zone* a = NULL; + struct rpz* r = NULL; + struct local_zone* z = NULL; + enum rpz_action action = RPZ_PASSTHRU_ACTION; + + lock_rw_rdlock(&az->rpz_lock); + + for(a = az->rpz_first; a; a = a->rpz_az_next) { + lock_rw_rdlock(&a->lock); + r = a->rpz; + if(r->taglist && !taglist_intersect(r->taglist, + r->taglistlen, taglist, taglen)) { + lock_rw_unlock(&a->lock); + continue; + } + z = rpz_find_zone(r, qinfo->qname, qinfo->qname_len, + qinfo->qclass, 0, 0, 0); + action = rpz_apply_client_ip_trigger(r, repinfo); + if(z && r->action_override == RPZ_DISABLED_ACTION) { + if(r->log) + log_rpz_apply(z->name, + r->action_override, + qinfo, repinfo, r->log_name); + /* TODO only register stats when stats_extended? */ + stats->rpz_action[r->action_override]++; + lock_rw_unlock(&z->lock); + z = NULL; + } + if(z) { + break; + } + /* not found in this auth_zone */ + lock_rw_unlock(&a->lock); + } + + lock_rw_unlock(&az->rpz_lock); + + *r_out = r; + *a_out = a; + *z_out = z; + + return action; +} + +static inline int +rpz_resolve_final_localzone_action(struct rpz* r, struct local_zone* z, enum rpz_action client_action) +{ + enum localzone_type lzt; + if(r->action_override == RPZ_NO_OVERRIDE_ACTION) { + switch (client_action) { + case RPZ_NODATA_ACTION: + case RPZ_NXDOMAIN_ACTION: + case RPZ_DROP_ACTION: + case RPZ_TCP_ONLY_ACTION: + case RPZ_PASSTHRU_ACTION: + lzt = rpz_action_to_localzone_type(client_action); + break; + case RPZ_LOCAL_DATA_ACTION: + verbose(VERB_ALGO, + "RPZ: client ip trigger with local-data unimplemented:" + " defaulting to rpz-passthru"); + lzt = rpz_action_to_localzone_type(RPZ_PASSTHRU_ACTION); + break; + case RPZ_INVALID_ACTION: + lzt = z->type; + break; + default: + lzt = z->type; + break; + } + } else { + lzt = rpz_action_to_localzone_type(r->action_override); + } + return lzt; +} + +static inline int +rpz_is_udp_query(struct comm_reply* repinfo) { + return repinfo != NULL + ? (repinfo->c != NULL + ? repinfo->c->type == comm_udp + : 0) + : 0; +} + int rpz_apply_qname_trigger(struct auth_zones* az, struct module_env* env, struct query_info* qinfo, struct edns_data* edns, sldns_buffer* buf, @@ -961,45 +1139,41 @@ rpz_apply_qname_trigger(struct auth_zones* az, struct module_env* env, uint8_t* taglist, size_t taglen, struct ub_server_stats* stats) { struct rpz* r = NULL; - struct auth_zone* a; - int ret; - enum localzone_type lzt; + struct auth_zone* a = NULL; struct local_zone* z = NULL; struct local_data* ld = NULL; - lock_rw_rdlock(&az->rpz_lock); - for(a = az->rpz_first; a; a = a->rpz_az_next) { - lock_rw_rdlock(&a->lock); - r = a->rpz; - if(!r->taglist || taglist_intersect(r->taglist, - r->taglistlen, taglist, taglen)) { - z = rpz_find_zone(r, qinfo->qname, qinfo->qname_len, - qinfo->qclass, 0, 0, 0); - if(z && r->action_override == RPZ_DISABLED_ACTION) { - if(r->log) - log_rpz_apply(z->name, - r->action_override, - qinfo, repinfo, r->log_name); - /* TODO only register stats when stats_extended? - * */ - stats->rpz_action[r->action_override]++; - lock_rw_unlock(&z->lock); - z = NULL; - } - if(z) - break; - } - lock_rw_unlock(&a->lock); /* not found in this auth_zone */ - } - lock_rw_unlock(&az->rpz_lock); + int ret; + enum localzone_type lzt; + enum rpz_action client_action; - if(!z) - return 0; /* not holding auth_zone.lock anymore */ + client_action = rpz_resolve_client_action_and_zone( + az, qinfo, repinfo, taglist, taglen, stats, &z, &a, &r); + + verbose(VERB_ALGO, "RPZ: qname trigger: client action=%s", + rpz_action_to_string(client_action)); + + if(!z) { + verbose(VERB_ALGO, "RPZ: client action without zone"); + if(client_action == RPZ_PASSTHRU_ACTION + || client_action == RPZ_INVALID_ACTION + || (client_action == RPZ_TCP_ONLY_ACTION + && !rpz_is_udp_query(repinfo))) { + return 0; + } + // XXX: log_rpz_apply not possbile because no zone + stats->rpz_action[client_action]++; + local_zones_zone_answer(NULL /*no zone*/, env, qinfo, edns, + repinfo, buf, temp, 0 /* no local data used */, + rpz_action_to_localzone_type(client_action)); + return 1; + } log_assert(r); - if(r->action_override == RPZ_NO_OVERRIDE_ACTION) - lzt = z->type; - else - lzt = rpz_action_to_localzone_type(r->action_override); + + lzt = rpz_resolve_final_localzone_action(r, z, client_action); + + verbose(VERB_ALGO, "RPZ: final client action=%s", + rpz_action_to_string(localzone_type_to_rpz_action(lzt))); if(r->action_override == RPZ_CNAME_OVERRIDE_ACTION) { qinfo->local_alias = @@ -1040,7 +1214,7 @@ rpz_apply_qname_trigger(struct auth_zones* az, struct module_env* env, lock_rw_unlock(&a->lock); return !qinfo->local_alias; } -verbose(VERB_ALGO, "xxxxxx repinfo=%p is_udp=%d", repinfo, repinfo->c->type == comm_udp); + ret = local_zones_zone_answer(z, env, qinfo, edns, repinfo, buf, temp, 0 /* no local data used */, lzt); if(r->log) diff --git a/services/rpz.h b/services/rpz.h index 77a2db55c..1210f2039 100644 --- a/services/rpz.h +++ b/services/rpz.h @@ -92,6 +92,7 @@ enum rpz_action { struct rpz { struct local_zones* local_zones; struct respip_set* respip_set; + struct respip_set* client_set; uint8_t* taglist; size_t taglistlen; enum rpz_action action_override; diff --git a/testdata/rpz_clientip.rpl b/testdata/rpz_clientip.rpl new file mode 100644 index 000000000..bd559871b --- /dev/null +++ b/testdata/rpz_clientip.rpl @@ -0,0 +1,180 @@ +; config options +server: + module-config: "respip validator iterator" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: no + access-control: 192.0.0.0/8 allow + +rpz: + name: "rpz.example.com." + zonefile: +TEMPFILE_NAME rpz.example.com +TEMPFILE_CONTENTS rpz.example.com +$ORIGIN example.com. +rpz 3600 IN SOA ns1.rpz.example.com. hostmaster.rpz.example.com. ( + 1379078166 28800 7200 604800 7200 ) + 3600 IN NS ns1.rpz.example.com. + 3600 IN NS ns2.rpz.example.com. +$ORIGIN rpz.example.com. +24.0.0.0.192.rpz-client-ip CNAME . +24.0.1.0.192.rpz-client-ip CNAME *. +24.0.2.0.192.rpz-client-ip CNAME rpz-drop. +24.0.3.0.192.rpz-client-ip CNAME rpz-passthru. +24.0.4.0.192.rpz-client-ip CNAME rpz-tcp-only. +TEMPFILE_END + +stub-zone: + name: "a." + stub-addr: 10.20.30.40 +CONFIG_END + +SCENARIO_BEGIN Test RPZ client ip triggers + +RANGE_BEGIN 0 100 + ADDRESS 10.20.30.40 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +a. IN NS +SECTION ANSWER +a. IN NS ns.a. +SECTION ADDITIONAL +ns.a IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +a.a. IN TXT +SECTION ANSWER +a.a. IN TXT "upstream txt rr a.a." +ENTRY_END + +RANGE_END + +; unrelated client ip address -- passthru + +STEP 10 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +a.a. IN TXT +ENTRY_END + +STEP 11 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +a.a. IN TXT +SECTION ANSWER +a.a. IN TXT "upstream txt rr a.a." +ENTRY_END + +; should be NXDOMAIN + +STEP 20 QUERY ADDRESS 192.0.0.1 +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +a.a. IN TXT +ENTRY_END + +STEP 21 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR AA RD RA NXDOMAIN +SECTION QUESTION +a.a. IN TXT +SECTION ANSWER +ENTRY_END + +; should be NODATA + +STEP 30 QUERY ADDRESS 192.0.1.1 +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +a.a. IN TXT +ENTRY_END + +STEP 31 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR AA RD RA NOERROR +SECTION QUESTION +a.a. IN TXT +SECTION ANSWER +ENTRY_END + +; should be PASSTHRU + +STEP 40 QUERY ADDRESS 192.0.3.1 +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +a.a. IN TXT +ENTRY_END + +STEP 41 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +a.a. IN TXT +SECTION ANSWER +a.a. IN TXT "upstream txt rr a.a." +ENTRY_END + +; should be TRUNCATED + +STEP 50 QUERY ADDRESS 192.0.4.1 +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +a.a. IN TXT +ENTRY_END + +STEP 51 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR AA TC RD RA NOERROR +SECTION QUESTION +a.a. IN TXT +SECTION ANSWER +ENTRY_END + +; should not be TRUNCATED via TCP + +STEP 52 QUERY ADDRESS 192.0.4.1 +ENTRY_BEGIN +MATCH TCP +REPLY RD +SECTION QUESTION +a.a. IN TXT +ENTRY_END + +STEP 53 CHECK_ANSWER +ENTRY_BEGIN +MATCH all TCP +REPLY QR RD RA NOERROR +SECTION QUESTION +a.a. IN TXT +SECTION ANSWER +a.a. IN TXT "upstream txt rr a.a." +ENTRY_END + +; should be DROPPED + +STEP 90 QUERY ADDRESS 192.0.2.1 +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +a.a. IN TXT +ENTRY_END + +SCENARIO_END From 80205ba133fa0dd8a81478baccddb41a9567db8b Mon Sep 17 00:00:00 2001 From: mb Date: Fri, 6 Nov 2020 12:54:32 +0100 Subject: [PATCH 014/553] RPZ: towards client ip trigger and local data action --- respip/respip.c | 10 ++-- respip/respip.h | 3 + services/rpz.c | 121 ++++++++++++++++++++++++++++++-------- testdata/rpz_clientip.rpl | 20 +++++++ 4 files changed, 123 insertions(+), 31 deletions(-) diff --git a/respip/respip.c b/respip/respip.c index 82ca37d50..75400bb4d 100644 --- a/respip/respip.c +++ b/respip/respip.c @@ -483,8 +483,8 @@ respip_views_apply_cfg(struct views* vs, struct config_file* cfg, * This function returns the copied rrset key on success, and NULL on memory * allocation failure. */ -static struct ub_packed_rrset_key* -copy_rrset(const struct ub_packed_rrset_key* key, struct regional* region) +struct ub_packed_rrset_key* +respip_copy_rrset(const struct ub_packed_rrset_key* key, struct regional* region) { struct ub_packed_rrset_key* ck = regional_alloc(region, sizeof(struct ub_packed_rrset_key)); @@ -730,7 +730,7 @@ respip_data_answer(enum respip_action action, "response-ip redirect with tag data [%d] %s", tag, (tagrk.dname = rep->rrsets[rrset_id]->rk.dname; @@ -1208,7 +1208,7 @@ respip_merge_cname(struct reply_info* base_rep, if(!new_rep) return 0; for(i=0,j=base_rep->an_numrrsets; ian_numrrsets; i++,j++) { - new_rep->rrsets[j] = copy_rrset(tgt_rep->rrsets[i], region); + new_rep->rrsets[j] = respip_copy_rrset(tgt_rep->rrsets[i], region); if(!new_rep->rrsets[j]) return 0; } diff --git a/respip/respip.h b/respip/respip.h index bbd471421..3dfb4e9f0 100644 --- a/respip/respip.h +++ b/respip/respip.h @@ -294,4 +294,7 @@ respip_enter_rr(struct regional* region, struct resp_addr* raddr, */ void respip_sockaddr_delete(struct respip_set* set, struct resp_addr* node); + +struct ub_packed_rrset_key* +respip_copy_rrset(const struct ub_packed_rrset_key* key, struct regional* region); #endif /* RESPIP_RESPIP_H */ diff --git a/services/rpz.c b/services/rpz.c index f8fa803de..4bf845547 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -50,6 +50,7 @@ #include "util/data/dname.h" #include "util/locks.h" #include "util/regional.h" +#include "util/data/msgencode.h" typedef struct resp_addr rpz_aclnode_type; @@ -1096,27 +1097,7 @@ rpz_resolve_final_localzone_action(struct rpz* r, struct local_zone* z, enum rpz { enum localzone_type lzt; if(r->action_override == RPZ_NO_OVERRIDE_ACTION) { - switch (client_action) { - case RPZ_NODATA_ACTION: - case RPZ_NXDOMAIN_ACTION: - case RPZ_DROP_ACTION: - case RPZ_TCP_ONLY_ACTION: - case RPZ_PASSTHRU_ACTION: - lzt = rpz_action_to_localzone_type(client_action); - break; - case RPZ_LOCAL_DATA_ACTION: - verbose(VERB_ALGO, - "RPZ: client ip trigger with local-data unimplemented:" - " defaulting to rpz-passthru"); - lzt = rpz_action_to_localzone_type(RPZ_PASSTHRU_ACTION); - break; - case RPZ_INVALID_ACTION: - lzt = z->type; - break; - default: - lzt = z->type; - break; - } + lzt = z->type; } else { lzt = rpz_action_to_localzone_type(r->action_override); } @@ -1132,6 +1113,88 @@ rpz_is_udp_query(struct comm_reply* repinfo) { : 0; } +/** encode answer consisting of 1 rrset */ +static int +rpz_local_encode(struct query_info* qinfo, struct module_env* env, + struct edns_data* edns, struct comm_reply* repinfo, sldns_buffer* buf, + struct regional* temp, struct ub_packed_rrset_key* rrset, int ansec, + int rcode) +{ + struct reply_info rep; + uint16_t udpsize; + /* make answer with time=0 for fixed TTL values */ + memset(&rep, 0, sizeof(rep)); + rep.flags = (uint16_t)((BIT_QR | BIT_AA | BIT_RA) | rcode); + rep.qdcount = 1; + if(ansec) + rep.an_numrrsets = 1; + else rep.ns_numrrsets = 1; + rep.rrset_count = 1; + rep.rrsets = &rrset; + + udpsize = edns->udp_size; + edns->edns_version = EDNS_ADVERTISED_VERSION; + edns->udp_size = EDNS_ADVERTISED_SIZE; + edns->ext_rcode = 0; + edns->bits &= EDNS_DO; + //!inplace_cb_reply_local_call(env, qinfo, NULL, &rep, rcode, edns,repinfo, temp) || + if(!inplace_cb_reply_local_call(env, qinfo, NULL, &rep, rcode, edns,repinfo, temp) ||!reply_info_answer_encode(qinfo, &rep, + *(uint16_t*)sldns_buffer_begin(buf), sldns_buffer_read_u16_at(buf, 2), + buf, 0, 0, temp, udpsize, edns, (int)(edns->bits&EDNS_DO), 0)) { + error_encode(buf, (LDNS_RCODE_SERVFAIL|BIT_AA), qinfo, + *(uint16_t*)sldns_buffer_begin(buf), + sldns_buffer_read_u16_at(buf, 2), edns); + } + return 1; +} + +static void +rpz_apply_clientip_localdata_action(struct rpz* r, struct module_env* env, + struct query_info* qinfo, struct edns_data* edns, struct comm_reply* repinfo, + sldns_buffer* buf, struct regional* temp) +{ + struct resp_addr* raddr = NULL; + enum rpz_action action = RPZ_INVALID_ACTION; + struct sockaddr_storage* addr = &repinfo->addr; + socklen_t addrlen = repinfo->addrlen; + struct ub_packed_rrset_key* rp = NULL; + int rcode = LDNS_RCODE_NOERROR|BIT_AA; + + verbose(VERB_ALGO, "RPZ: apply client ip trigger: found=%d action=%s", + raddr != NULL, rpz_action_to_string(action)); + + lock_rw_rdlock(&r->client_set->lock); + + raddr = (struct resp_addr*)addr_tree_lookup(&r->client_set->ip_tree, + addr, addrlen); + if(raddr == NULL) { + lock_rw_unlock(&r->client_set->lock); + return; + } + + /* prepare synthesized answer for the matching client */ + + action = respip_action_to_rpz_action(raddr->action); + if(action != RPZ_LOCAL_DATA_ACTION && raddr->data == NULL ) { + verbose(VERB_ALGO, "RPZ: bug: local-data action and no local data"); + goto done; + } + rp = respip_copy_rrset(raddr->data, temp); + if(!rp) { + verbose(VERB_ALGO, "RPZ: local-data action: out of memory"); + goto done; + } + rp->rk.flags |= PACKED_RRSET_FIXEDTTL; + rp->rk.dname = qinfo->qname; + rp->rk.dname_len = qinfo->qname_len; + rpz_local_encode(qinfo, env, edns, repinfo, buf, temp, rp, 1, rcode); + +done: + lock_rw_unlock(&raddr->lock); + lock_rw_unlock(&r->client_set->lock); + +} + int rpz_apply_qname_trigger(struct auth_zones* az, struct module_env* env, struct query_info* qinfo, struct edns_data* edns, sldns_buffer* buf, @@ -1152,7 +1215,8 @@ rpz_apply_qname_trigger(struct auth_zones* az, struct module_env* env, verbose(VERB_ALGO, "RPZ: qname trigger: client action=%s", rpz_action_to_string(client_action)); - if(!z) { + if(z == NULL || (client_action != RPZ_INVALID_ACTION && + client_action != RPZ_PASSTHRU_ACTION)) { verbose(VERB_ALGO, "RPZ: client action without zone"); if(client_action == RPZ_PASSTHRU_ACTION || client_action == RPZ_INVALID_ACTION @@ -1160,11 +1224,16 @@ rpz_apply_qname_trigger(struct auth_zones* az, struct module_env* env, && !rpz_is_udp_query(repinfo))) { return 0; } - // XXX: log_rpz_apply not possbile because no zone stats->rpz_action[client_action]++; - local_zones_zone_answer(NULL /*no zone*/, env, qinfo, edns, - repinfo, buf, temp, 0 /* no local data used */, - rpz_action_to_localzone_type(client_action)); + if(client_action == RPZ_LOCAL_DATA_ACTION) { + rpz_apply_clientip_localdata_action(r, env, qinfo, edns, + repinfo, buf, temp); + } else { + // XXX: log_rpz_apply not possbile because no zone + local_zones_zone_answer(NULL /*no zone*/, env, qinfo, edns, + repinfo, buf, temp, 0 /* no local data used */, + rpz_action_to_localzone_type(client_action)); + } return 1; } diff --git a/testdata/rpz_clientip.rpl b/testdata/rpz_clientip.rpl index bd559871b..24256cbf3 100644 --- a/testdata/rpz_clientip.rpl +++ b/testdata/rpz_clientip.rpl @@ -21,6 +21,7 @@ $ORIGIN rpz.example.com. 24.0.2.0.192.rpz-client-ip CNAME rpz-drop. 24.0.3.0.192.rpz-client-ip CNAME rpz-passthru. 24.0.4.0.192.rpz-client-ip CNAME rpz-tcp-only. +24.0.5.0.192.rpz-client-ip A 127.0.0.1 TEMPFILE_END stub-zone: @@ -168,6 +169,25 @@ SECTION ANSWER a.a. IN TXT "upstream txt rr a.a." ENTRY_END +; should be synthesized + +STEP 60 QUERY ADDRESS 192.0.5.1 +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +a.a. IN TXT +ENTRY_END + +STEP 61 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR AA RD RA NOERROR +SECTION QUESTION +a.a. IN A +SECTION ANSWER +a.a. IN A 127.0.0.1 +ENTRY_END + ; should be DROPPED STEP 90 QUERY ADDRESS 192.0.2.1 From 731afdc9248f60fdeca25cc2a7d6aad4cbe6b94d Mon Sep 17 00:00:00 2001 From: mb Date: Fri, 6 Nov 2020 13:42:48 +0100 Subject: [PATCH 015/553] RPZ: refactor clientip trigger --- services/rpz.c | 98 +++++++++++++++++++++++++++----------------------- 1 file changed, 54 insertions(+), 44 deletions(-) diff --git a/services/rpz.c b/services/rpz.c index 4bf845547..b823f6d76 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -1043,10 +1043,10 @@ rpz_apply_client_ip_trigger(struct rpz* r, struct comm_reply* repinfo) static inline enum rpz_action rpz_resolve_client_action_and_zone(struct auth_zones* az, struct query_info* qinfo, - struct comm_reply* repinfo, uint8_t* taglist, size_t taglen, - struct ub_server_stats* stats, - /* output parameters */ - struct local_zone** z_out, struct auth_zone** a_out, struct rpz** r_out ) + struct comm_reply* repinfo, uint8_t* taglist, size_t taglen, + struct ub_server_stats* stats, + /* output parameters */ + struct local_zone** z_out, struct auth_zone** a_out, struct rpz** r_out ) { struct auth_zone* a = NULL; struct rpz* r = NULL; @@ -1092,18 +1092,6 @@ rpz_resolve_client_action_and_zone(struct auth_zones* az, struct query_info* qin return action; } -static inline int -rpz_resolve_final_localzone_action(struct rpz* r, struct local_zone* z, enum rpz_action client_action) -{ - enum localzone_type lzt; - if(r->action_override == RPZ_NO_OVERRIDE_ACTION) { - lzt = z->type; - } else { - lzt = rpz_action_to_localzone_type(r->action_override); - } - return lzt; -} - static inline int rpz_is_udp_query(struct comm_reply* repinfo) { return repinfo != NULL @@ -1138,7 +1126,7 @@ rpz_local_encode(struct query_info* qinfo, struct module_env* env, edns->ext_rcode = 0; edns->bits &= EDNS_DO; //!inplace_cb_reply_local_call(env, qinfo, NULL, &rep, rcode, edns,repinfo, temp) || - if(!inplace_cb_reply_local_call(env, qinfo, NULL, &rep, rcode, edns,repinfo, temp) ||!reply_info_answer_encode(qinfo, &rep, + if(!reply_info_answer_encode(qinfo, &rep, *(uint16_t*)sldns_buffer_begin(buf), sldns_buffer_read_u16_at(buf, 2), buf, 0, 0, temp, udpsize, edns, (int)(edns->bits&EDNS_DO), 0)) { error_encode(buf, (LDNS_RCODE_SERVFAIL|BIT_AA), qinfo, @@ -1195,6 +1183,45 @@ done: } +static int +rpz_maybe_apply_clientip_trigger(struct auth_zones* az, struct module_env* env, + struct query_info* qinfo, struct edns_data* edns, + struct comm_reply* repinfo, uint8_t* taglist, size_t taglen, + struct ub_server_stats* stats,sldns_buffer* buf, struct regional* temp, + /* output parameters */ + struct local_zone** z_out, struct auth_zone** a_out, struct rpz** r_out) +{ + enum rpz_action client_action; + client_action = rpz_resolve_client_action_and_zone( + az, qinfo, repinfo, taglist, taglen, stats, z_out, a_out, r_out); + + verbose(VERB_ALGO, "RPZ: qname trigger: client action=%s", + rpz_action_to_string(client_action)); + + if(*z_out == NULL || (client_action != RPZ_INVALID_ACTION && + client_action != RPZ_PASSTHRU_ACTION)) { + verbose(VERB_ALGO, "RPZ: client action without zone"); + if(client_action == RPZ_PASSTHRU_ACTION + || client_action == RPZ_INVALID_ACTION + || (client_action == RPZ_TCP_ONLY_ACTION + && !rpz_is_udp_query(repinfo))) { + return 0; + } + stats->rpz_action[client_action]++; + if(client_action == RPZ_LOCAL_DATA_ACTION) { + rpz_apply_clientip_localdata_action(*r_out, env, qinfo, + edns, repinfo, buf, temp); + } else { + // XXX: log_rpz_apply not possbile because no zone + local_zones_zone_answer(NULL /*no zone*/, env, qinfo, edns, + repinfo, buf, temp, 0 /* no local data used */, + rpz_action_to_localzone_type(client_action)); + } + return 1; + } + return -1; +} + int rpz_apply_qname_trigger(struct auth_zones* az, struct module_env* env, struct query_info* qinfo, struct edns_data* edns, sldns_buffer* buf, @@ -1207,39 +1234,22 @@ rpz_apply_qname_trigger(struct auth_zones* az, struct module_env* env, struct local_data* ld = NULL; int ret; enum localzone_type lzt; - enum rpz_action client_action; - client_action = rpz_resolve_client_action_and_zone( - az, qinfo, repinfo, taglist, taglen, stats, &z, &a, &r); + int clientip_trigger = rpz_maybe_apply_clientip_trigger(az, env, qinfo, + edns, repinfo, taglist, taglen, stats, buf, temp, &z, &a, &r); + if(clientip_trigger >= 0) { return clientip_trigger; } - verbose(VERB_ALGO, "RPZ: qname trigger: client action=%s", - rpz_action_to_string(client_action)); - - if(z == NULL || (client_action != RPZ_INVALID_ACTION && - client_action != RPZ_PASSTHRU_ACTION)) { - verbose(VERB_ALGO, "RPZ: client action without zone"); - if(client_action == RPZ_PASSTHRU_ACTION - || client_action == RPZ_INVALID_ACTION - || (client_action == RPZ_TCP_ONLY_ACTION - && !rpz_is_udp_query(repinfo))) { - return 0; - } - stats->rpz_action[client_action]++; - if(client_action == RPZ_LOCAL_DATA_ACTION) { - rpz_apply_clientip_localdata_action(r, env, qinfo, edns, - repinfo, buf, temp); - } else { - // XXX: log_rpz_apply not possbile because no zone - local_zones_zone_answer(NULL /*no zone*/, env, qinfo, edns, - repinfo, buf, temp, 0 /* no local data used */, - rpz_action_to_localzone_type(client_action)); - } - return 1; + if(z == NULL) { + return 0; } log_assert(r); - lzt = rpz_resolve_final_localzone_action(r, z, client_action); + if(r->action_override == RPZ_NO_OVERRIDE_ACTION) { + lzt = z->type; + } else { + lzt = rpz_action_to_localzone_type(r->action_override); + } verbose(VERB_ALGO, "RPZ: final client action=%s", rpz_action_to_string(localzone_type_to_rpz_action(lzt))); From 9b4bbb49b431f40bd758d65f10e6a26272dec414 Mon Sep 17 00:00:00 2001 From: mb Date: Mon, 9 Nov 2020 12:08:06 +0100 Subject: [PATCH 016/553] RPZ: one more testcase --- services/rpz.c | 11 +++++++++-- testdata/rpz_clientip.rpl | 18 ++++++++++++++++++ 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/services/rpz.c b/services/rpz.c index b823f6d76..6e9265c9f 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -574,7 +574,7 @@ rpz_insert_ipaddr_based_trigger(struct respip_set* set, struct sockaddr_storage* lock_rw_wrlock(&set->lock); rrstr = sldns_wire2str_rr(rr, rr_len); if(!rrstr) { - log_err("malloc error while inserting RPZ respip trigger"); + log_err("malloc error while inserting RPZ ipaddr based trigger"); lock_rw_unlock(&set->lock); return 0; } @@ -1110,7 +1110,7 @@ rpz_local_encode(struct query_info* qinfo, struct module_env* env, { struct reply_info rep; uint16_t udpsize; - /* make answer with time=0 for fixed TTL values */ + memset(&rep, 0, sizeof(rep)); rep.flags = (uint16_t)((BIT_QR | BIT_AA | BIT_RA) | rcode); rep.qdcount = 1; @@ -1119,6 +1119,7 @@ rpz_local_encode(struct query_info* qinfo, struct module_env* env, else rep.ns_numrrsets = 1; rep.rrset_count = 1; rep.rrsets = &rrset; + rep.ttl = ((struct packed_rrset_data*)rrset->entry.data)->rr_ttl[0]; udpsize = edns->udp_size; edns->edns_version = EDNS_ADVERTISED_VERSION; @@ -1167,11 +1168,17 @@ rpz_apply_clientip_localdata_action(struct rpz* r, struct module_env* env, verbose(VERB_ALGO, "RPZ: bug: local-data action and no local data"); goto done; } + rp = respip_copy_rrset(raddr->data, temp); if(!rp) { verbose(VERB_ALGO, "RPZ: local-data action: out of memory"); goto done; } + + //struct packed_rrset_data* pd = raddr->data->entry.data; + //struct packed_rrset_data* pd2 = rp->entry.data; + //verbose(VERB_ALGO, "ttl=%ld ttl=%ld", pd->rr_ttl[0], pd2->rr_ttl[0]); + rp->rk.flags |= PACKED_RRSET_FIXEDTTL; rp->rk.dname = qinfo->qname; rp->rk.dname_len = qinfo->qname_len; diff --git a/testdata/rpz_clientip.rpl b/testdata/rpz_clientip.rpl index 24256cbf3..f679d5575 100644 --- a/testdata/rpz_clientip.rpl +++ b/testdata/rpz_clientip.rpl @@ -188,6 +188,24 @@ SECTION ANSWER a.a. IN A 127.0.0.1 ENTRY_END +; should be synthesized NODATA + +STEP 62 QUERY ADDRESS 192.0.5.1 +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +a.a. IN TXT +ENTRY_END + +STEP 63 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR AA RD RA NOERROR +SECTION QUESTION +a.a. IN TXT +SECTION ANSWER +ENTRY_END + ; should be DROPPED STEP 90 QUERY ADDRESS 192.0.2.1 From 667863770fffcb29cd5128ccdcad21ab05b70897 Mon Sep 17 00:00:00 2001 From: mb Date: Mon, 9 Nov 2020 15:14:25 +0100 Subject: [PATCH 017/553] RPZ: refactor clientip to handle multiple rrsets --- services/rpz.c | 267 +++++++++++++++++++++++++++++++++----- services/rpz.h | 23 +++- testdata/rpz_clientip.rpl | 43 +++++- 3 files changed, 300 insertions(+), 33 deletions(-) diff --git a/services/rpz.c b/services/rpz.c index 6e9265c9f..37438da3a 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -302,13 +302,53 @@ rpz_dname_to_trigger(uint8_t* dname, size_t dname_len) return RPZ_QNAME_TRIGGER; } -void rpz_delete(struct rpz* r) +static inline struct clientip_synthesized_rrset* +rpz_clientip_synthesized_set_create(void) +{ + struct clientip_synthesized_rrset* set = calloc(1, sizeof(*set)); + if(set == NULL) { + return NULL; + } + set->region = regional_create(); + if(set->region == NULL) { + free(set); + return NULL; + } + addr_tree_init(&set->entries); + lock_rw_init(&set->lock); + return set; +} + +static void +rpz_clientip_synthesized_rr_delete(rbnode_type* n, void* ATTR_UNUSED(arg)) +{ + struct clientip_synthesized_rr* r = (struct clientip_synthesized_rr*)n->key; + lock_rw_destroy(&r->lock); +#ifdef THREADS_DISABLED + (void)r; +#endif +} + +static inline void +rpz_clientip_synthesized_set_delete(struct clientip_synthesized_rrset* set) +{ + if(set == NULL) { + return; + } + lock_rw_destroy(&set->lock); + traverse_postorder(&set->entries, rpz_clientip_synthesized_rr_delete, NULL); + regional_destroy(set->region); + free(set); +} + +void +rpz_delete(struct rpz* r) { if(!r) return; local_zones_delete(r->local_zones); respip_set_delete(r->respip_set); - respip_set_delete(r->client_set); + rpz_clientip_synthesized_set_delete(r->client_set); regional_destroy(r->region); free(r->taglist); free(r->log_name); @@ -321,14 +361,14 @@ rpz_clear(struct rpz* r) /* must hold write lock on auth_zone */ local_zones_delete(r->local_zones); respip_set_delete(r->respip_set); - respip_set_delete(r->client_set); + rpz_clientip_synthesized_set_delete(r->client_set); if(!(r->local_zones = local_zones_create())){ return 0; } if(!(r->respip_set = respip_set_create())) { return 0; } - if(!(r->client_set = respip_set_create())) { + if(!(r->client_set = rpz_clientip_synthesized_set_create())) { return 0; } return 1; @@ -342,7 +382,7 @@ rpz_finish_config(struct rpz* r) lock_rw_unlock(&r->respip_set->lock); lock_rw_wrlock(&r->client_set->lock); - addr_tree_init_parents(&r->client_set->ip_tree); + addr_tree_init_parents(&r->client_set->entries); lock_rw_unlock(&r->client_set->lock); } @@ -411,8 +451,8 @@ rpz_create(struct config_auth* p) goto err; } - /* (ab)use respip for client acl */ - if(!(r->client_set = respip_set_create())) { + r->client_set = rpz_clientip_synthesized_set_create(); + if(r->client_set == NULL) { goto err; } @@ -458,8 +498,8 @@ err: local_zones_delete(r->local_zones); if(r->respip_set) respip_set_delete(r->respip_set); - if(r->client_set) - respip_set_delete(r->client_set); + if(r->client_set != NULL) + rpz_clientip_synthesized_set_delete(r->client_set); if(r->taglist) free(r->taglist); if(r->region) @@ -598,8 +638,149 @@ rpz_insert_ipaddr_based_trigger(struct respip_set* set, struct sockaddr_storage* return 1; } +static inline struct clientip_synthesized_rr* +rpz_clientip_ensure_entry(struct clientip_synthesized_rrset* set, + struct sockaddr_storage* addr, socklen_t addrlen, int net) +{ + int insert_ok; + struct clientip_synthesized_rr* node = + (struct clientip_synthesized_rr*)addr_tree_find(&set->entries, + addr, addrlen, net); + + if(node != NULL) { return node; } + + /* node does not yet exist => allocate one */ + node = regional_alloc_zero(set->region, sizeof(*node)); + if(node == NULL) { + log_err("out of memory"); + return NULL; + } + + lock_rw_init(&node->lock); + node->action = RPZ_INVALID_ACTION; + insert_ok = addr_tree_insert(&set->entries, &node->node, + addr, addrlen, net); + if (!insert_ok) { + log_warn("RPZ: unexpected: unable to insert clientip address node"); + /* we can not free the just allocated node. + * theoretically a memleak */ + return NULL; + } + + return node; +} + +static void +rpz_report_rrset_error(const char* msg, uint8_t* rr, size_t rr_len) { + char* rrstr = sldns_wire2str_rr(rr, rr_len); + if(rrstr == NULL) { + log_err("malloc error while inserting RPZ clientip based record"); + return; + } + log_err("RPZ: unexpected: unable to insert %s: %s", msg, rrstr); + free(rrstr); +} + +/* from localzone.c; difference is we don't have a dname */ +struct local_rrset* +rpz_clientip_new_rrset(struct regional* region, + struct clientip_synthesized_rr* raddr, uint16_t rrtype, uint16_t rrclass) +{ + struct packed_rrset_data* pd; + struct local_rrset* rrset = (struct local_rrset*) + regional_alloc_zero(region, sizeof(*rrset)); + if(rrset == NULL) { + log_err("out of memory"); + return NULL; + } + rrset->next = raddr->data; + raddr->data = rrset; + rrset->rrset = (struct ub_packed_rrset_key*) + regional_alloc_zero(region, sizeof(*rrset->rrset)); + if(rrset->rrset == NULL) { + log_err("out of memory"); + return NULL; + } + rrset->rrset->entry.key = rrset->rrset; + pd = (struct packed_rrset_data*)regional_alloc_zero(region, sizeof(*pd)); + if(pd == NULL) { + log_err("out of memory"); + return NULL; + } + pd->trust = rrset_trust_prim_noglue; + pd->security = sec_status_insecure; + rrset->rrset->entry.data = pd; + rrset->rrset->rk.type = htons(rrtype); + rrset->rrset->rk.rrset_class = htons(rrclass); + rrset->rrset->rk.dname = regional_alloc_zero(region, 1); + if(rrset->rrset->rk.dname == NULL) { + log_err("out of memory"); + return NULL; + } + rrset->rrset->rk.dname_len = 1; + return rrset; +} + static int -rpz_insert_client_ip_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, +rpz_clientip_enter_rr(struct regional* region, struct clientip_synthesized_rr* raddr, + uint16_t rrtype, uint16_t rrclass, time_t ttl, uint8_t* rdata, + size_t rdata_len) +{ + struct local_rrset* rrset; + struct sockaddr* sa; + sa = (struct sockaddr*)&raddr->node.addr; + if (rrtype == LDNS_RR_TYPE_CNAME && raddr->data != NULL) { + log_err("CNAME response-ip data can not co-exist with other " + "client-ip data"); + return 0; + } + + rrset = rpz_clientip_new_rrset(region, raddr, rrtype, rrclass); + if(raddr->data == NULL) { + return 0; + } + + return rrset_insert_rr(region, rrset->rrset->entry.data, rdata, rdata_len, ttl, "fixme"); +} + +static int +rpz_clientip_insert_trigger_rr(struct clientip_synthesized_rrset* set, struct sockaddr_storage* addr, + socklen_t addrlen, int net, enum rpz_action a, uint16_t rrtype, + uint16_t rrclass, uint32_t ttl, uint8_t* rdata, size_t rdata_len, + uint8_t* rr, size_t rr_len) +{ + struct clientip_synthesized_rr* node; + + lock_rw_wrlock(&set->lock); + + node = rpz_clientip_ensure_entry(set, addr, addrlen, net); + if(node == NULL) { + lock_rw_unlock(&set->lock); + rpz_report_rrset_error("client ip address", rr, rr_len); + return 0; + } + + lock_rw_wrlock(&node->lock); + lock_rw_unlock(&set->lock); + + node->action = a; + if(a == RPZ_LOCAL_DATA_ACTION) { + if(!rpz_clientip_enter_rr(set->region, node, rrtype, + rrclass, ttl, rdata, rdata_len)) { + verbose(VERB_ALGO, "RPZ: unable to insert clientip rr"); + lock_rw_unlock(&node->lock); + return 0; + } + + } + + lock_rw_unlock(&node->lock); + + return 1; +} + +static int +rpz_insert_clientip_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, enum rpz_action a, uint16_t rrtype, uint16_t rrclass, uint32_t ttl, uint8_t* rdata, size_t rdata_len, uint8_t* rr, size_t rr_len) { @@ -608,7 +789,8 @@ rpz_insert_client_ip_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, int net, af; enum respip_action respa = rpz_action_to_respip_action(a); - verbose(VERB_ALGO, "RPZ: insert client ip trigger: %s", rpz_action_to_string(a)); + verbose(VERB_ALGO, "RPZ: insert clientip trigger: %s", rpz_action_to_string(a)); + if(a == RPZ_INVALID_ACTION || respa == respip_invalid) { verbose(VERB_ALGO, "RPZ: skipping unsupported action: %s", rpz_action_to_string(a)); @@ -620,10 +802,12 @@ rpz_insert_client_ip_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, return 0; } - return rpz_insert_ipaddr_based_trigger(r->client_set, &addr, addrlen, net, + return rpz_clientip_insert_trigger_rr(r->client_set, &addr, addrlen, net, a, rrtype, rrclass, ttl, rdata, rdata_len, rr, rr_len); } + + /** Insert RR into RPZ's respip_set */ static int rpz_insert_response_ip_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, @@ -707,7 +891,7 @@ rpz_insert_rr(struct rpz* r, uint8_t* azname, size_t aznamelen, uint8_t* dname, rr_len); free(policydname); } else if(t == RPZ_CLIENT_IP_TRIGGER) { - rpz_insert_client_ip_trigger(r, policydname, policydnamelen, + rpz_insert_clientip_trigger(r, policydname, policydnamelen, a, rr_type, rr_class, rr_ttl, rdatawl, rdatalen, rr, rr_len); free(policydname); @@ -1018,17 +1202,17 @@ log_rpz_apply(uint8_t* dname, enum rpz_action a, struct query_info* qinfo, static enum rpz_action rpz_apply_client_ip_trigger(struct rpz* r, struct comm_reply* repinfo) { - struct resp_addr* raddr = NULL; + struct clientip_synthesized_rr* raddr = NULL; enum rpz_action action = RPZ_INVALID_ACTION; struct sockaddr_storage* addr = &repinfo->addr; socklen_t addrlen = repinfo->addrlen; lock_rw_rdlock(&r->client_set->lock); - raddr = (struct resp_addr*)addr_tree_lookup(&r->client_set->ip_tree, + raddr = (struct clientip_synthesized_rr*)addr_tree_lookup(&r->client_set->entries, addr, addrlen); if(raddr != NULL) { - action = respip_action_to_rpz_action(raddr->action); + action = raddr->action; lock_rw_unlock(&raddr->lock); } @@ -1114,12 +1298,12 @@ rpz_local_encode(struct query_info* qinfo, struct module_env* env, memset(&rep, 0, sizeof(rep)); rep.flags = (uint16_t)((BIT_QR | BIT_AA | BIT_RA) | rcode); rep.qdcount = 1; - if(ansec) + rep.rrset_count = ansec; + if(ansec > 0) { rep.an_numrrsets = 1; - else rep.ns_numrrsets = 1; - rep.rrset_count = 1; - rep.rrsets = &rrset; - rep.ttl = ((struct packed_rrset_data*)rrset->entry.data)->rr_ttl[0]; + rep.rrsets = &rrset; + rep.ttl = ((struct packed_rrset_data*)rrset->entry.data)->rr_ttl[0]; + } udpsize = edns->udp_size; edns->edns_version = EDNS_ADVERTISED_VERSION; @@ -1137,39 +1321,63 @@ rpz_local_encode(struct query_info* qinfo, struct module_env* env, return 1; } +static struct local_rrset* +rpz_clientip_find_rrset(struct query_info* qinfo, struct clientip_synthesized_rr* data) { + struct local_rrset* cursor = data->data; + while( cursor != NULL) { + struct packed_rrset_key* packed_rrset = &cursor->rrset->rk; + if(htons(qinfo->qtype) == packed_rrset->type) { + return cursor; + } + cursor = cursor->next; + } + return NULL; +} + static void rpz_apply_clientip_localdata_action(struct rpz* r, struct module_env* env, struct query_info* qinfo, struct edns_data* edns, struct comm_reply* repinfo, sldns_buffer* buf, struct regional* temp) { - struct resp_addr* raddr = NULL; + struct clientip_synthesized_rr* raddr = NULL; + struct local_rrset* rrset; enum rpz_action action = RPZ_INVALID_ACTION; struct sockaddr_storage* addr = &repinfo->addr; socklen_t addrlen = repinfo->addrlen; struct ub_packed_rrset_key* rp = NULL; int rcode = LDNS_RCODE_NOERROR|BIT_AA; + int rrset_count = 1; verbose(VERB_ALGO, "RPZ: apply client ip trigger: found=%d action=%s", raddr != NULL, rpz_action_to_string(action)); lock_rw_rdlock(&r->client_set->lock); - raddr = (struct resp_addr*)addr_tree_lookup(&r->client_set->ip_tree, - addr, addrlen); + raddr = (struct clientip_synthesized_rr*)addr_tree_lookup( + &r->client_set->entries, addr, addrlen); if(raddr == NULL) { lock_rw_unlock(&r->client_set->lock); return; } - /* prepare synthesized answer for the matching client */ + /* prepare synthesized answer for client */ - action = respip_action_to_rpz_action(raddr->action); + action = raddr->action; if(action != RPZ_LOCAL_DATA_ACTION && raddr->data == NULL ) { verbose(VERB_ALGO, "RPZ: bug: local-data action and no local data"); goto done; } - rp = respip_copy_rrset(raddr->data, temp); + /* check query type / rr type */ + + rrset = rpz_clientip_find_rrset(qinfo, raddr); + if(rrset == NULL) { + verbose(VERB_ALGO, "RPZ: unable to find local-data for query"); + rrset_count = 0; + goto nodata; + } + + rp = respip_copy_rrset(rrset->rrset, temp); if(!rp) { verbose(VERB_ALGO, "RPZ: local-data action: out of memory"); goto done; @@ -1178,16 +1386,15 @@ rpz_apply_clientip_localdata_action(struct rpz* r, struct module_env* env, //struct packed_rrset_data* pd = raddr->data->entry.data; //struct packed_rrset_data* pd2 = rp->entry.data; //verbose(VERB_ALGO, "ttl=%ld ttl=%ld", pd->rr_ttl[0], pd2->rr_ttl[0]); - rp->rk.flags |= PACKED_RRSET_FIXEDTTL; rp->rk.dname = qinfo->qname; rp->rk.dname_len = qinfo->qname_len; - rpz_local_encode(qinfo, env, edns, repinfo, buf, temp, rp, 1, rcode); +nodata: + rpz_local_encode(qinfo, env, edns, repinfo, buf, temp, rp, rrset_count, rcode); done: lock_rw_unlock(&raddr->lock); lock_rw_unlock(&r->client_set->lock); - } static int diff --git a/services/rpz.h b/services/rpz.h index 1210f2039..19dd867b6 100644 --- a/services/rpz.h +++ b/services/rpz.h @@ -83,6 +83,27 @@ enum rpz_action { RPZ_CNAME_OVERRIDE_ACTION, /* RPZ CNAME action override*/ }; +struct clientip_synthesized_rrset{ + struct regional* region; + struct rbtree_type entries; + lock_rw_type lock; /* lock on the respip tree */ +}; + +struct clientip_synthesized_rr { + /** node in address tree */ + struct addr_tree_node node; + /** lock on the node item */ + lock_rw_type lock; + /** tag bitlist */ + uint8_t* taglist; + /** length of the taglist (in bytes) */ + size_t taglen; + /** action for this address span */ + enum rpz_action action; + /** "local data" for this node */ + struct local_rrset* data; +}; + /** * RPZ containing policies. Pointed to from corresponding auth-zone. Part of a * linked list to keep configuration order. Iterating or changing the linked @@ -92,7 +113,7 @@ enum rpz_action { struct rpz { struct local_zones* local_zones; struct respip_set* respip_set; - struct respip_set* client_set; + struct clientip_synthesized_rrset* client_set; uint8_t* taglist; size_t taglistlen; enum rpz_action action_override; diff --git a/testdata/rpz_clientip.rpl b/testdata/rpz_clientip.rpl index f679d5575..64082210c 100644 --- a/testdata/rpz_clientip.rpl +++ b/testdata/rpz_clientip.rpl @@ -22,6 +22,7 @@ $ORIGIN rpz.example.com. 24.0.3.0.192.rpz-client-ip CNAME rpz-passthru. 24.0.4.0.192.rpz-client-ip CNAME rpz-tcp-only. 24.0.5.0.192.rpz-client-ip A 127.0.0.1 +24.0.5.0.192.rpz-client-ip TXT "42" TEMPFILE_END stub-zone: @@ -55,6 +56,26 @@ SECTION ANSWER a.a. IN TXT "upstream txt rr a.a." ENTRY_END +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +a.a. IN A +SECTION ANSWER +a.a. IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +a.a. IN AAAA +SECTION ANSWER +a.a. IN AAAA 2001:db8::123 +ENTRY_END + RANGE_END ; unrelated client ip address -- passthru @@ -175,7 +196,7 @@ STEP 60 QUERY ADDRESS 192.0.5.1 ENTRY_BEGIN REPLY RD SECTION QUESTION -a.a. IN TXT +a.a. IN A ENTRY_END STEP 61 CHECK_ANSWER @@ -188,7 +209,7 @@ SECTION ANSWER a.a. IN A 127.0.0.1 ENTRY_END -; should be synthesized NODATA +; should be synthesized STEP 62 QUERY ADDRESS 192.0.5.1 ENTRY_BEGIN @@ -204,6 +225,24 @@ REPLY QR AA RD RA NOERROR SECTION QUESTION a.a. IN TXT SECTION ANSWER +a.a. IN TXT "42" +ENTRY_END + +; should be synthesized NODATA + +STEP 64 QUERY ADDRESS 192.0.5.1 +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +a.a. IN AAAA +ENTRY_END + +STEP 65 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR AA RD RA NOERROR +SECTION QUESTION +a.a. IN AAAA ENTRY_END ; should be DROPPED From 9149a6d1e42ef2c8dfb1fca1b1c5b7dae4db9032 Mon Sep 17 00:00:00 2001 From: mb Date: Wed, 11 Nov 2020 11:21:54 +0100 Subject: [PATCH 018/553] RPZ: stub nsip testbound scenario --- testdata/rpz_nsip.rpl | 187 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 187 insertions(+) create mode 100644 testdata/rpz_nsip.rpl diff --git a/testdata/rpz_nsip.rpl b/testdata/rpz_nsip.rpl new file mode 100644 index 000000000..d07199c35 --- /dev/null +++ b/testdata/rpz_nsip.rpl @@ -0,0 +1,187 @@ +; config options +server: + module-config: "respip validator iterator" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: no + access-control: 192.0.0.0/8 allow + +rpz: + name: "rpz.example.com." + zonefile: +TEMPFILE_NAME rpz.example.com +TEMPFILE_CONTENTS rpz.example.com +$ORIGIN example.com. +rpz 3600 IN SOA ns1.rpz.gotham.com. hostmaster.rpz.example.com. ( + 1379078166 28800 7200 604800 7200 ) + 3600 IN NS ns1.rpz.example.com. + 3600 IN NS ns2.rpz.example.com. +$ORIGIN rpz.example.com. +24.0.0.0.192.rpz-nsip CNAME . +24.0.1.0.192.rpz-nsip CNAME *. +24.0.2.0.192.rpz-nsip CNAME rpz-drop. +24.0.3.0.192.rpz-nsip CNAME rpz-passthru. +24.0.4.0.192.rpz-nsip CNAME rpz-tcp-only. +24.0.5.0.192.rpz-nsip A 127.0.0.1 +24.0.5.0.192.rpz-nsip TXT "42" +TEMPFILE_END + +stub-zone: + name: "." + stub-addr: 1.1.1.1 +CONFIG_END + +SCENARIO_BEGIN Test RPZ nsip triggers + +; . +RANGE_BEGIN 0 100 + ADDRESS 1.1.1.1 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS ns.root. +SECTION ADDITIONAL +ns.root IN A 1.1.1.1 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS ns1.com. +SECTION ADDITIONAL +ns1.com. IN A 8.8.8.8 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +aa. IN A +SECTION AUTHORITY +aa. IN NS ns1.aa. +SECTION ADDITIONAL +ns1.aa. IN A 8.8.0.8 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +bb. IN A +SECTION AUTHORITY +bb. IN NS ns1.bb. +SECTION ADDITIONAL +ns1.bb. IN A 8.8.1.8 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +cc. IN A +SECTION AUTHORITY +cc. IN NS ns1.cc. +SECTION ADDITIONAL +ns1.cc. IN A 8.8.2.8 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +dd. IN A +SECTION AUTHORITY +dd. IN NS ns1.dd. +SECTION ADDITIONAL +ns1.dd. IN A 8.8.3.8 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +ee. IN A +SECTION AUTHORITY +ee. IN NS ns1.ee. +SECTION ADDITIONAL +ns1.ee. IN A 8.8.5.8 +ENTRY_END + +RANGE_END + +; com. +RANGE_BEGIN 0 100 + ADDRESS 8.8.8.8 + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS ns1.com. +SECTION ADDITIONAL +ns1.com. IN A 8.8.8.8 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +gotham.com. IN A +SECTION AUTHORITY +gotham.com. IN NS ns1.gotham.com. +SECTION ADDITIONAL +ns1.gotham.com. IN A 192.0.6.1 +ENTRY_END + +RANGE_END + +; ns1.gotham.com. +RANGE_BEGIN 0 100 + ADDRESS 192.0.6.1 + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +gotham.com. IN A +SECTION ANSWER +gotham.com. IN A 192.0.6.2 +ENTRY_END + +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +gotham.com. IN A +ENTRY_END + +STEP 2 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +gotham.com. IN A +SECTION ANSWER +gotham.com. IN A 192.0.6.2 +ENTRY_END + +SCENARIO_END From e27b160acdb611c4e800a61f03cec5c585698ee5 Mon Sep 17 00:00:00 2001 From: mb Date: Fri, 13 Nov 2020 14:33:11 +0100 Subject: [PATCH 019/553] rpz: stubs for nsip triggers --- iterator/iterator.c | 5 + services/rpz.c | 259 ++++++++++++++++++++++++++++++------------ services/rpz.h | 4 + testdata/rpz_nsip.rpl | 68 ++++++++++- 4 files changed, 261 insertions(+), 75 deletions(-) diff --git a/iterator/iterator.c b/iterator/iterator.c index 99d020117..fcda1bb3b 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -2660,11 +2660,16 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq, { int dnsseclame = 0; enum response_type type; + int rpz_filter_result; + iq->num_current_queries--; if(!inplace_cb_query_response_call(qstate->env, qstate, iq->response)) log_err("unable to call query_response callback"); + rpz_filter_result = rpz_iterator_module_callback(qstate, iq); + if(rpz_filter_result > 0) { next_state(iq, FINISHED_STATE); } + if(iq->response == NULL) { /* Don't increment qname when QNAME minimisation is enabled */ if(qstate->env->cfg->qname_minimisation) { diff --git a/services/rpz.c b/services/rpz.c index 37438da3a..ff994a482 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -51,6 +51,8 @@ #include "util/locks.h" #include "util/regional.h" #include "util/data/msgencode.h" +#include "services/cache/dns.h" +#include "iterator/iterator.h" typedef struct resp_addr rpz_aclnode_type; @@ -349,6 +351,7 @@ rpz_delete(struct rpz* r) local_zones_delete(r->local_zones); respip_set_delete(r->respip_set); rpz_clientip_synthesized_set_delete(r->client_set); + rpz_clientip_synthesized_set_delete(r->ns_set); regional_destroy(r->region); free(r->taglist); free(r->log_name); @@ -362,6 +365,7 @@ rpz_clear(struct rpz* r) local_zones_delete(r->local_zones); respip_set_delete(r->respip_set); rpz_clientip_synthesized_set_delete(r->client_set); + rpz_clientip_synthesized_set_delete(r->ns_set); if(!(r->local_zones = local_zones_create())){ return 0; } @@ -371,6 +375,9 @@ rpz_clear(struct rpz* r) if(!(r->client_set = rpz_clientip_synthesized_set_create())) { return 0; } + if(!(r->ns_set = rpz_clientip_synthesized_set_create())) { + return 0; + } return 1; } @@ -384,6 +391,10 @@ rpz_finish_config(struct rpz* r) lock_rw_wrlock(&r->client_set->lock); addr_tree_init_parents(&r->client_set->entries); lock_rw_unlock(&r->client_set->lock); + + lock_rw_wrlock(&r->ns_set->lock); + addr_tree_init_parents(&r->ns_set->entries); + lock_rw_unlock(&r->ns_set->lock); } /** new rrset containing CNAME override, does not yet contain a dname */ @@ -456,6 +467,11 @@ rpz_create(struct config_auth* p) goto err; } + r->ns_set = rpz_clientip_synthesized_set_create(); + if(r->ns_set == NULL) { + goto err; + } + r->taglistlen = p->rpz_taglistlen; r->taglist = memdup(p->rpz_taglist, r->taglistlen); if(p->rpz_action_override) { @@ -500,6 +516,8 @@ err: respip_set_delete(r->respip_set); if(r->client_set != NULL) rpz_clientip_synthesized_set_delete(r->client_set); + if(r->ns_set != NULL) + rpz_clientip_synthesized_set_delete(r->ns_set); if(r->taglist) free(r->taglist); if(r->region) @@ -540,10 +558,10 @@ rpz_insert_qname_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, char* rrstr; int newzone = 0; - verbose(VERB_ALGO, "RPZ: insert qname trigger: %s", rpz_action_to_string(a)); + verbose(VERB_ALGO, "rpz: insert qname trigger: %s", rpz_action_to_string(a)); if(a == RPZ_INVALID_ACTION) { - verbose(VERB_ALGO, "RPZ: skipping unsupported action: %s", + verbose(VERB_ALGO, "rpz: skipping unsupported action: %s", rpz_action_to_string(a)); free(dname); return; @@ -562,7 +580,7 @@ rpz_insert_qname_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, lock_rw_unlock(&r->local_zones->lock); return; } - verbose(VERB_ALGO, "RPZ: skipping duplicate record: '%s'", + verbose(VERB_ALGO, "rpz: skipping duplicate record: '%s'", rrstr); free(rrstr); free(dname); @@ -573,7 +591,7 @@ rpz_insert_qname_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, tp = rpz_action_to_localzone_type(a); if(!(z = local_zones_add_zone(r->local_zones, dname, dnamelen, dnamelabs, rrclass, tp))) { - log_warn("RPZ create failed"); + log_warn("rpz: create failed"); lock_rw_unlock(&r->local_zones->lock); /* dname will be free'd in failed local_zone_create() */ return; @@ -661,7 +679,7 @@ rpz_clientip_ensure_entry(struct clientip_synthesized_rrset* set, insert_ok = addr_tree_insert(&set->entries, &node->node, addr, addrlen, net); if (!insert_ok) { - log_warn("RPZ: unexpected: unable to insert clientip address node"); + log_warn("rpz: unexpected: unable to insert clientip address node"); /* we can not free the just allocated node. * theoretically a memleak */ return NULL; @@ -677,7 +695,7 @@ rpz_report_rrset_error(const char* msg, uint8_t* rr, size_t rr_len) { log_err("malloc error while inserting RPZ clientip based record"); return; } - log_err("RPZ: unexpected: unable to insert %s: %s", msg, rrstr); + log_err("rpz: unexpected: unable to insert %s: %s", msg, rrstr); free(rrstr); } @@ -767,7 +785,7 @@ rpz_clientip_insert_trigger_rr(struct clientip_synthesized_rrset* set, struct so if(a == RPZ_LOCAL_DATA_ACTION) { if(!rpz_clientip_enter_rr(set->region, node, rrtype, rrclass, ttl, rdata, rdata_len)) { - verbose(VERB_ALGO, "RPZ: unable to insert clientip rr"); + verbose(VERB_ALGO, "rpz: unable to insert clientip rr"); lock_rw_unlock(&node->lock); return 0; } @@ -787,18 +805,14 @@ rpz_insert_clientip_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, struct sockaddr_storage addr; socklen_t addrlen; int net, af; - enum respip_action respa = rpz_action_to_respip_action(a); - verbose(VERB_ALGO, "RPZ: insert clientip trigger: %s", rpz_action_to_string(a)); - - if(a == RPZ_INVALID_ACTION || respa == respip_invalid) { - verbose(VERB_ALGO, "RPZ: skipping unsupported action: %s", - rpz_action_to_string(a)); + verbose(VERB_ALGO, "rpz: insert clientip trigger: %s", rpz_action_to_string(a)); + if(a == RPZ_INVALID_ACTION) { return 0; } if(!netblockdnametoaddr(dname, dnamelen, &addr, &addrlen, &net, &af)) { - verbose(VERB_ALGO, "RPZ: unable to parse client ip"); + verbose(VERB_ALGO, "rpz: unable to parse client ip"); return 0; } @@ -806,7 +820,28 @@ rpz_insert_clientip_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, a, rrtype, rrclass, ttl, rdata, rdata_len, rr, rr_len); } +static int +rpz_insert_nsip_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, + enum rpz_action a, uint16_t rrtype, uint16_t rrclass, uint32_t ttl, + uint8_t* rdata, size_t rdata_len, uint8_t* rr, size_t rr_len) +{ + struct sockaddr_storage addr; + socklen_t addrlen; + int net, af; + verbose(VERB_ALGO, "rpz: insert nsip trigger: %s", rpz_action_to_string(a)); + if(a == RPZ_INVALID_ACTION) { + return 0; + } + + if(!netblockdnametoaddr(dname, dnamelen, &addr, &addrlen, &net, &af)) { + verbose(VERB_ALGO, "rpz: unable to parse ns ip"); + return 0; + } + + return rpz_clientip_insert_trigger_rr(r->ns_set, &addr, addrlen, net, + a, rrtype, rrclass, ttl, rdata, rdata_len, rr, rr_len); +} /** Insert RR into RPZ's respip_set */ static int @@ -817,18 +852,14 @@ rpz_insert_response_ip_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, struct sockaddr_storage addr; socklen_t addrlen; int net, af; - enum respip_action respa = rpz_action_to_respip_action(a); - verbose(VERB_ALGO, "RPZ: insert response ip trigger: %s", rpz_action_to_string(a)); - - if(a == RPZ_INVALID_ACTION || respa == respip_invalid) { - verbose(VERB_ALGO, "RPZ: skipping unsupported action: %s", - rpz_action_to_string(a)); + verbose(VERB_ALGO, "rpz: insert response ip trigger: %s", rpz_action_to_string(a)); + if(a == RPZ_INVALID_ACTION) { return 0; } if(!netblockdnametoaddr(dname, dnamelen, &addr, &addrlen, &net, &af)) { - verbose(VERB_ALGO, "RPZ: unable to parse response ip"); + verbose(VERB_ALGO, "rpz: unable to parse response ip"); return 0; } @@ -851,11 +882,11 @@ rpz_insert_rr(struct rpz* r, uint8_t* azname, size_t aznamelen, uint8_t* dname, char* dname_str = sldns_wire2str_dname(dname, dnamelen); char* azname_str = sldns_wire2str_dname(azname, aznamelen); if(dname_str && azname_str) { - log_err("RPZ: name of record (%s) to insert into RPZ is not a " + log_err("rpz: name of record (%s) to insert into RPZ is not a " "subdomain of the configured name of the RPZ zone (%s)", dname_str, azname_str); } else { - log_err("RPZ: name of record to insert into RPZ is not a " + log_err("rpz: name of record to insert into RPZ is not a " "subdomain of the configured name of the RPZ zone"); } free(dname_str); @@ -878,7 +909,7 @@ rpz_insert_rr(struct rpz* r, uint8_t* azname, size_t aznamelen, uint8_t* dname, t = rpz_dname_to_trigger(policydname, policydnamelen); if(t == RPZ_INVALID_TRIGGER) { free(policydname); - verbose(VERB_ALGO, "RPZ: skipping invalid trigger"); + verbose(VERB_ALGO, "rpz: skipping invalid trigger"); return 1; } if(t == RPZ_QNAME_TRIGGER) { @@ -895,9 +926,14 @@ rpz_insert_rr(struct rpz* r, uint8_t* azname, size_t aznamelen, uint8_t* dname, a, rr_type, rr_class, rr_ttl, rdatawl, rdatalen, rr, rr_len); free(policydname); + } else if(t == RPZ_NSIP_TRIGGER) { + rpz_insert_nsip_trigger(r, policydname, policydnamelen, + a, rr_type, rr_class, rr_ttl, rdatawl, rdatalen, rr, + rr_len); + free(policydname); } else { free(policydname); - verbose(VERB_ALGO, "RPZ: skipping unsupported trigger: %s", + verbose(VERB_ALGO, "rpz: skipping unsupported trigger: %s", rpz_trigger_to_string(t)); } return 1; @@ -1090,7 +1126,7 @@ rpz_remove_qname_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, z = rpz_find_zone(r, dname, dnamelen, rr_class, 1 /* only exact */, 1 /* wr lock */, 1 /* keep lock*/); if(!z) { - verbose(VERB_ALGO, "RPZ: cannot remove RR from IXFR, " + verbose(VERB_ALGO, "rpz: cannot remove RR from IXFR, " "RPZ domain not found"); return; } @@ -1126,7 +1162,7 @@ rpz_remove_response_ip_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, lock_rw_wrlock(&r->respip_set->lock); if(!(node = (struct resp_addr*)addr_tree_find( &r->respip_set->ip_tree, &addr, addrlen, net))) { - verbose(VERB_ALGO, "RPZ: cannot remove RR from IXFR, " + verbose(VERB_ALGO, "rpz: cannot remove RR from IXFR, " "RPZ domain not found"); lock_rw_unlock(&r->respip_set->lock); return; @@ -1199,43 +1235,41 @@ log_rpz_apply(uint8_t* dname, enum rpz_action a, struct query_info* qinfo, log_nametypeclass(0, txt, qinfo->qname, qinfo->qtype, qinfo->qclass); } -static enum rpz_action -rpz_apply_client_ip_trigger(struct rpz* r, struct comm_reply* repinfo) +static struct clientip_synthesized_rr* +rpz_ipbased_trigger_lookup(struct clientip_synthesized_rrset* set, struct sockaddr_storage* addr, socklen_t addrlen) { struct clientip_synthesized_rr* raddr = NULL; enum rpz_action action = RPZ_INVALID_ACTION; - struct sockaddr_storage* addr = &repinfo->addr; - socklen_t addrlen = repinfo->addrlen; - lock_rw_rdlock(&r->client_set->lock); + lock_rw_rdlock(&set->lock); - raddr = (struct clientip_synthesized_rr*)addr_tree_lookup(&r->client_set->entries, + raddr = (struct clientip_synthesized_rr*)addr_tree_lookup(&set->entries, addr, addrlen); if(raddr != NULL) { action = raddr->action; lock_rw_unlock(&raddr->lock); } - verbose(VERB_ALGO, "RPZ: apply client ip trigger: found=%d action=%s", + verbose(VERB_ALGO, "rpz: ipbased trigger lookup: found=%d action=%s", raddr != NULL, rpz_action_to_string(action)); - lock_rw_unlock(&r->client_set->lock); + lock_rw_unlock(&set->lock); - return action; + return raddr; } static inline -enum rpz_action +struct clientip_synthesized_rr* rpz_resolve_client_action_and_zone(struct auth_zones* az, struct query_info* qinfo, struct comm_reply* repinfo, uint8_t* taglist, size_t taglen, struct ub_server_stats* stats, /* output parameters */ struct local_zone** z_out, struct auth_zone** a_out, struct rpz** r_out ) { + struct clientip_synthesized_rr* node = NULL; struct auth_zone* a = NULL; struct rpz* r = NULL; struct local_zone* z = NULL; - enum rpz_action action = RPZ_PASSTHRU_ACTION; lock_rw_rdlock(&az->rpz_lock); @@ -1249,7 +1283,7 @@ rpz_resolve_client_action_and_zone(struct auth_zones* az, struct query_info* qin } z = rpz_find_zone(r, qinfo->qname, qinfo->qname_len, qinfo->qclass, 0, 0, 0); - action = rpz_apply_client_ip_trigger(r, repinfo); + node = rpz_ipbased_trigger_lookup(r->client_set, &repinfo->addr, repinfo->addrlen); if(z && r->action_override == RPZ_DISABLED_ACTION) { if(r->log) log_rpz_apply(z->name, @@ -1262,6 +1296,11 @@ rpz_resolve_client_action_and_zone(struct auth_zones* az, struct query_info* qin } if(z) { break; + } else { + if(node != NULL) { + lock_rw_unlock(&node->lock); + node = NULL; + } } /* not found in this auth_zone */ lock_rw_unlock(&a->lock); @@ -1273,7 +1312,7 @@ rpz_resolve_client_action_and_zone(struct auth_zones* az, struct query_info* qin *a_out = a; *z_out = z; - return action; + return node; } static inline int @@ -1335,52 +1374,40 @@ rpz_clientip_find_rrset(struct query_info* qinfo, struct clientip_synthesized_rr } static void -rpz_apply_clientip_localdata_action(struct rpz* r, struct module_env* env, - struct query_info* qinfo, struct edns_data* edns, struct comm_reply* repinfo, - sldns_buffer* buf, struct regional* temp) +rpz_apply_clientip_localdata_action(struct rpz* r, struct clientip_synthesized_rr* raddr, + struct module_env* env, struct query_info* qinfo, struct edns_data* edns, + struct comm_reply* repinfo, sldns_buffer* buf, struct regional* temp) { - struct clientip_synthesized_rr* raddr = NULL; struct local_rrset* rrset; enum rpz_action action = RPZ_INVALID_ACTION; - struct sockaddr_storage* addr = &repinfo->addr; - socklen_t addrlen = repinfo->addrlen; struct ub_packed_rrset_key* rp = NULL; int rcode = LDNS_RCODE_NOERROR|BIT_AA; int rrset_count = 1; - verbose(VERB_ALGO, "RPZ: apply client ip trigger: found=%d action=%s", + verbose(VERB_ALGO, "rpz: apply client ip trigger: found=%d action=%s", raddr != NULL, rpz_action_to_string(action)); - lock_rw_rdlock(&r->client_set->lock); - - raddr = (struct clientip_synthesized_rr*)addr_tree_lookup( - &r->client_set->entries, addr, addrlen); - if(raddr == NULL) { - lock_rw_unlock(&r->client_set->lock); - return; - } - /* prepare synthesized answer for client */ action = raddr->action; - if(action != RPZ_LOCAL_DATA_ACTION && raddr->data == NULL ) { - verbose(VERB_ALGO, "RPZ: bug: local-data action and no local data"); - goto done; + if(action == RPZ_LOCAL_DATA_ACTION && raddr->data == NULL ) { + verbose(VERB_ALGO, "rpz: bug: local-data action but no local data"); + return; } /* check query type / rr type */ rrset = rpz_clientip_find_rrset(qinfo, raddr); if(rrset == NULL) { - verbose(VERB_ALGO, "RPZ: unable to find local-data for query"); + verbose(VERB_ALGO, "rpz: unable to find local-data for query"); rrset_count = 0; goto nodata; } rp = respip_copy_rrset(rrset->rrset, temp); if(!rp) { - verbose(VERB_ALGO, "RPZ: local-data action: out of memory"); - goto done; + verbose(VERB_ALGO, "rpz: local-data action: out of memory"); + return; } //struct packed_rrset_data* pd = raddr->data->entry.data; @@ -1391,10 +1418,88 @@ rpz_apply_clientip_localdata_action(struct rpz* r, struct module_env* env, rp->rk.dname_len = qinfo->qname_len; nodata: rpz_local_encode(qinfo, env, edns, repinfo, buf, temp, rp, rrset_count, rcode); +} + +int +rpz_iterator_module_callback(struct module_qstate* ms, struct iter_qstate* is) +{ + struct auth_zones* az = ms->env->auth_zones; + struct auth_zone* a; + struct clientip_synthesized_rr* raddr; + struct local_rrset* rrset; + enum rpz_action action = RPZ_INVALID_ACTION; + struct sockaddr_storage* addr = &ms->reply->addr; + socklen_t addrlen = ms->reply->addrlen; + struct ub_packed_rrset_key* rp = NULL; + int rcode = LDNS_RCODE_NOERROR|BIT_AA; + int rrset_count = 1; + struct rpz* r; + int ret = 0; + + verbose(VERB_ALGO, "rpz: iterator module callback: have_rpz=%d", az->rpz_first != NULL); + + lock_rw_rdlock(&az->rpz_lock); + + raddr = NULL; + for(a = az->rpz_first; a != NULL; a = a->rpz_az_next) { + lock_rw_rdlock(&a->lock); + r = a->rpz; + raddr = rpz_ipbased_trigger_lookup(r->ns_set, &ms->reply->addr, ms->reply->addrlen); + if(raddr != NULL) { + lock_rw_unlock(&a->lock); + break; + } + lock_rw_unlock(&a->lock); + } + + if(raddr == NULL) { return 0; } + + verbose(VERB_ALGO, "rpz: iterator callback: nsip: apply action=%s", + rpz_action_to_string(raddr->action)); + + action = raddr->action; + if(action == RPZ_LOCAL_DATA_ACTION && raddr->data == NULL ) { + verbose(VERB_ALGO, "rpz: bug: local-data action but no local data"); + ret = -1; + goto done; + } + + switch(action) { + case RPZ_NXDOMAIN_ACTION: + FLAGS_SET_RCODE(is->response->rep->flags, LDNS_RCODE_NXDOMAIN); + is->response->rep->an_numrrsets = 0; + is->response->rep->ns_numrrsets = 0; + is->response->rep->ar_numrrsets = 0; + is->response->rep->authoritative = 1; + is->response->rep->qdcount = 1; + ret = 1; + break; + case RPZ_NODATA_ACTION: + FLAGS_SET_RCODE(is->response->rep->flags, LDNS_RCODE_NOERROR); + is->response->rep->an_numrrsets = 0; + is->response->rep->ns_numrrsets = 0; + is->response->rep->ar_numrrsets = 0; + is->response->rep->authoritative = 1; + is->response->rep->qdcount = 1; + ret = 1; + break; + case RPZ_PASSTHRU_ACTION: + ret = 0; + break; + default: + ret = 0; + } + + //rrset = rpz_clientip_find_rrset(qinfo, raddr); + //if(rrset == NULL) { + // verbose(VERB_ALGO, "rpz: unable to find local-data for query"); + // rrset_count = 0; + // goto nodata; + //} done: lock_rw_unlock(&raddr->lock); - lock_rw_unlock(&r->client_set->lock); + return ret; } static int @@ -1405,35 +1510,45 @@ rpz_maybe_apply_clientip_trigger(struct auth_zones* az, struct module_env* env, /* output parameters */ struct local_zone** z_out, struct auth_zone** a_out, struct rpz** r_out) { + int ret = 0; enum rpz_action client_action; - client_action = rpz_resolve_client_action_and_zone( + struct clientip_synthesized_rr* node = rpz_resolve_client_action_and_zone( az, qinfo, repinfo, taglist, taglen, stats, z_out, a_out, r_out); - verbose(VERB_ALGO, "RPZ: qname trigger: client action=%s", + client_action = node == NULL ? RPZ_INVALID_ACTION : node->action; + + verbose(VERB_ALGO, "rpz: qname trigger: client action=%s", rpz_action_to_string(client_action)); if(*z_out == NULL || (client_action != RPZ_INVALID_ACTION && client_action != RPZ_PASSTHRU_ACTION)) { - verbose(VERB_ALGO, "RPZ: client action without zone"); + verbose(VERB_ALGO, "rpz: client action without zone"); if(client_action == RPZ_PASSTHRU_ACTION || client_action == RPZ_INVALID_ACTION || (client_action == RPZ_TCP_ONLY_ACTION && !rpz_is_udp_query(repinfo))) { - return 0; + ret = 0; + goto done; } stats->rpz_action[client_action]++; if(client_action == RPZ_LOCAL_DATA_ACTION) { - rpz_apply_clientip_localdata_action(*r_out, env, qinfo, - edns, repinfo, buf, temp); + rpz_apply_clientip_localdata_action(*r_out, node, env, + qinfo, edns, repinfo, buf, temp); } else { // XXX: log_rpz_apply not possbile because no zone local_zones_zone_answer(NULL /*no zone*/, env, qinfo, edns, repinfo, buf, temp, 0 /* no local data used */, rpz_action_to_localzone_type(client_action)); } - return 1; + ret = 1; + goto done; } - return -1; + ret = -1; +done: + if(node != NULL) { + lock_rw_unlock(&node->lock); + } + return ret; } int @@ -1465,7 +1580,7 @@ rpz_apply_qname_trigger(struct auth_zones* az, struct module_env* env, lzt = rpz_action_to_localzone_type(r->action_override); } - verbose(VERB_ALGO, "RPZ: final client action=%s", + verbose(VERB_ALGO, "rpz: final client action=%s", rpz_action_to_string(localzone_type_to_rpz_action(lzt))); if(r->action_override == RPZ_CNAME_OVERRIDE_ACTION) { diff --git a/services/rpz.h b/services/rpz.h index 19dd867b6..71badbb74 100644 --- a/services/rpz.h +++ b/services/rpz.h @@ -114,6 +114,7 @@ struct rpz { struct local_zones* local_zones; struct respip_set* respip_set; struct clientip_synthesized_rrset* client_set; + struct clientip_synthesized_rrset* ns_set; uint8_t* taglist; size_t taglistlen; enum rpz_action action_override; @@ -177,6 +178,9 @@ int rpz_apply_qname_trigger(struct auth_zones* az, struct module_env* env, struct regional* temp, struct comm_reply* repinfo, uint8_t* taglist, size_t taglen, struct ub_server_stats* stats); +struct iter_qstate; +int rpz_iterator_module_callback(struct module_qstate*, struct iter_qstate*); + /** * Delete RPZ * @param r: RPZ struct to delete diff --git a/testdata/rpz_nsip.rpl b/testdata/rpz_nsip.rpl index d07199c35..29cd8e189 100644 --- a/testdata/rpz_nsip.rpl +++ b/testdata/rpz_nsip.rpl @@ -32,7 +32,7 @@ CONFIG_END SCENARIO_BEGIN Test RPZ nsip triggers -; . +; . -------------------------------------------------------------------------- RANGE_BEGIN 0 100 ADDRESS 1.1.1.1 ENTRY_BEGIN @@ -121,7 +121,7 @@ ENTRY_END RANGE_END -; com. +; com. ----------------------------------------------------------------------- RANGE_BEGIN 0 100 ADDRESS 8.8.8.8 @@ -151,7 +151,37 @@ ENTRY_END RANGE_END -; ns1.gotham.com. +; aa. ------------------------------------------------------------------------ +RANGE_BEGIN 0 100 + ADDRESS 8.8.0.8 + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +aa. IN NS +SECTION ANSWER +aa. IN NS ns1.aa. +SECTION ADDITIONAL +ns1.aa. IN A 8.8.0.8 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +gotham.aa. IN A +SECTION AUTHORITY +gotham.aa. IN NS ns1.gotham.aa. +SECTION ADDITIONAL +ns1.gotham.aa. IN A 192.0.0.1 +ENTRY_END + +RANGE_END + +; ns1.gotham.com. ------------------------------------------------------------ RANGE_BEGIN 0 100 ADDRESS 192.0.6.1 @@ -167,6 +197,22 @@ ENTRY_END RANGE_END +; ns1.gotham.aa. ------------------------------------------------------------- +RANGE_BEGIN 0 100 + ADDRESS 192.0.0.1 + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +gotham.aa. IN A +SECTION ANSWER +gotham.aa. IN A 192.0.0.2 +ENTRY_END + +RANGE_END + STEP 1 QUERY ENTRY_BEGIN REPLY RD @@ -184,4 +230,20 @@ SECTION ANSWER gotham.com. IN A 192.0.6.2 ENTRY_END +STEP 10 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +gotham.aa. IN A +ENTRY_END + +STEP 11 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR AA RD RA NXDOMAIN +SECTION QUESTION +gotham.aa. IN A +SECTION ANSWER +ENTRY_END + SCENARIO_END From 07d937f508006c9d9df82f941a46390d40e90148 Mon Sep 17 00:00:00 2001 From: mb Date: Mon, 16 Nov 2020 09:49:06 +0100 Subject: [PATCH 020/553] rpz: more nsip --- services/rpz.c | 4 ++- testdata/rpz_nsip.rpl | 64 ++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 66 insertions(+), 2 deletions(-) diff --git a/services/rpz.c b/services/rpz.c index ff994a482..9b1d23884 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -1458,7 +1458,7 @@ rpz_iterator_module_callback(struct module_qstate* ms, struct iter_qstate* is) rpz_action_to_string(raddr->action)); action = raddr->action; - if(action == RPZ_LOCAL_DATA_ACTION && raddr->data == NULL ) { + if(action == RPZ_LOCAL_DATA_ACTION && raddr->data == NULL) { verbose(VERB_ALGO, "rpz: bug: local-data action but no local data"); ret = -1; goto done; @@ -1467,6 +1467,7 @@ rpz_iterator_module_callback(struct module_qstate* ms, struct iter_qstate* is) switch(action) { case RPZ_NXDOMAIN_ACTION: FLAGS_SET_RCODE(is->response->rep->flags, LDNS_RCODE_NXDOMAIN); + is->response->rep->flags |= BIT_QR | BIT_AA | BIT_RA; is->response->rep->an_numrrsets = 0; is->response->rep->ns_numrrsets = 0; is->response->rep->ar_numrrsets = 0; @@ -1476,6 +1477,7 @@ rpz_iterator_module_callback(struct module_qstate* ms, struct iter_qstate* is) break; case RPZ_NODATA_ACTION: FLAGS_SET_RCODE(is->response->rep->flags, LDNS_RCODE_NOERROR); + is->response->rep->flags |= BIT_QR | BIT_AA | BIT_RA; is->response->rep->an_numrrsets = 0; is->response->rep->ns_numrrsets = 0; is->response->rep->ar_numrrsets = 0; diff --git a/testdata/rpz_nsip.rpl b/testdata/rpz_nsip.rpl index 29cd8e189..1d4462df0 100644 --- a/testdata/rpz_nsip.rpl +++ b/testdata/rpz_nsip.rpl @@ -181,6 +181,36 @@ ENTRY_END RANGE_END +; bb. ------------------------------------------------------------------------ +RANGE_BEGIN 0 100 + ADDRESS 8.8.1.8 + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +bb. IN NS +SECTION ANSWER +bb. IN NS ns1.aa. +SECTION ADDITIONAL +ns1.bb. IN A 8.8.1.8 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +gotham.bb. IN A +SECTION AUTHORITY +gotham.bb. IN NS ns1.gotham.bb. +SECTION ADDITIONAL +ns1.gotham.bb. IN A 192.0.1.1 +ENTRY_END + +RANGE_END + ; ns1.gotham.com. ------------------------------------------------------------ RANGE_BEGIN 0 100 ADDRESS 192.0.6.1 @@ -213,6 +243,22 @@ ENTRY_END RANGE_END +; ns1.gotham.bb. ------------------------------------------------------------- +RANGE_BEGIN 0 100 + ADDRESS 192.0.1.1 + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +gotham.bb. IN A +SECTION ANSWER +gotham.bb. IN A 192.0.1.2 +ENTRY_END + +RANGE_END + STEP 1 QUERY ENTRY_BEGIN REPLY RD @@ -240,10 +286,26 @@ ENTRY_END STEP 11 CHECK_ANSWER ENTRY_BEGIN MATCH all -REPLY QR AA RD RA NXDOMAIN +REPLY QR RD RA NXDOMAIN SECTION QUESTION gotham.aa. IN A SECTION ANSWER ENTRY_END +STEP 20 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +gotham.bb. IN A +ENTRY_END + +STEP 21 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +gotham.bb. IN A +SECTION ANSWER +ENTRY_END + SCENARIO_END From f7fb338c958450c08e78d22e631906c1084e64e5 Mon Sep 17 00:00:00 2001 From: mb Date: Mon, 16 Nov 2020 12:42:23 +0100 Subject: [PATCH 021/553] rpz: continue work on the nsip trigger --- respip/respip.c | 37 -------------- services/rpz.c | 113 +++++++++++++++++++++++++++++++----------- testdata/rpz_nsip.rpl | 79 ++++++++++++++++++++++++++++- util/data/msgreply.c | 26 ++++++++++ util/data/msgreply.h | 15 ++++++ 5 files changed, 202 insertions(+), 68 deletions(-) diff --git a/respip/respip.c b/respip/respip.c index 75400bb4d..40f839645 100644 --- a/respip/respip.c +++ b/respip/respip.c @@ -635,43 +635,6 @@ respip_addr_lookup(const struct reply_info *rep, struct respip_set* rs, return NULL; } -/* - * Create a new reply_info based on 'rep'. The new info is based on - * the passed 'rep', but ignores any rrsets except for the first 'an_numrrsets' - * RRsets in the answer section. These answer rrsets are copied to the - * new info, up to 'copy_rrsets' rrsets (which must not be larger than - * 'an_numrrsets'). If an_numrrsets > copy_rrsets, the remaining rrsets array - * entries will be kept empty so the caller can fill them later. When rrsets - * are copied, they are shallow copied. The caller must ensure that the - * copied rrsets are valid throughout its lifetime and must provide appropriate - * mutex if it can be shared by multiple threads. - */ -static struct reply_info * -make_new_reply_info(const struct reply_info* rep, struct regional* region, - size_t an_numrrsets, size_t copy_rrsets) -{ - struct reply_info* new_rep; - size_t i; - - /* create a base struct. we specify 'insecure' security status as - * the modified response won't be DNSSEC-valid. In our faked response - * the authority and additional sections will be empty (except possible - * EDNS0 OPT RR in the additional section appended on sending it out), - * so the total number of RRsets is an_numrrsets. */ - new_rep = construct_reply_info_base(region, rep->flags, - rep->qdcount, rep->ttl, rep->prefetch_ttl, - rep->serve_expired_ttl, an_numrrsets, 0, 0, an_numrrsets, - sec_status_insecure); - if(!new_rep) - return NULL; - if(!reply_info_alloc_rrset_keys(new_rep, NULL, region)) - return NULL; - for(i=0; irrsets[i] = rep->rrsets[i]; - - return new_rep; -} - /** * See if response-ip or tag data should override the original answer rrset * (which is rep->rrsets[rrset_id]) and if so override it. diff --git a/services/rpz.c b/services/rpz.c index 9b1d23884..eae3feeeb 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -1361,11 +1361,11 @@ rpz_local_encode(struct query_info* qinfo, struct module_env* env, } static struct local_rrset* -rpz_clientip_find_rrset(struct query_info* qinfo, struct clientip_synthesized_rr* data) { +rpz_find_synthesized_rrset(int qtype, struct clientip_synthesized_rr* data) { struct local_rrset* cursor = data->data; while( cursor != NULL) { struct packed_rrset_key* packed_rrset = &cursor->rrset->rk; - if(htons(qinfo->qtype) == packed_rrset->type) { + if(htons(qtype) == packed_rrset->type) { return cursor; } cursor = cursor->next; @@ -1397,7 +1397,7 @@ rpz_apply_clientip_localdata_action(struct rpz* r, struct clientip_synthesized_r /* check query type / rr type */ - rrset = rpz_clientip_find_rrset(qinfo, raddr); + rrset = rpz_find_synthesized_rrset(qinfo->qtype, raddr); if(rrset == NULL) { verbose(VERB_ALGO, "rpz: unable to find local-data for query"); rrset_count = 0; @@ -1420,19 +1420,82 @@ nodata: rpz_local_encode(qinfo, env, edns, repinfo, buf, temp, rp, rrset_count, rcode); } +static inline void +rpz_patch_nodata(struct reply_info* ri) +{ + FLAGS_SET_RCODE(ri->flags, LDNS_RCODE_NOERROR); + ri->flags |= BIT_QR | BIT_AA | BIT_RA; + ri->an_numrrsets = 0; + ri->ns_numrrsets = 0; + ri->ar_numrrsets = 0; + ri->authoritative = 0; + ri->rrset_count = 1; + ri->qdcount = 1; +} + +static inline void +rpz_patch_nxdomain(struct reply_info* ri) +{ + FLAGS_SET_RCODE(ri->flags, LDNS_RCODE_NXDOMAIN); + ri->flags |= BIT_QR | BIT_AA | BIT_RA; + ri->an_numrrsets = 0; + ri->ns_numrrsets = 0; + ri->ar_numrrsets = 0; + ri->authoritative = 0; + ri->rrset_count = 1; + ri->qdcount = 1; +} + +static inline int +rpz_patch_localdata(struct dns_msg* response, struct clientip_synthesized_rr* data, + struct regional* region) +{ + struct query_info* qi = &response->qinfo; + struct ub_packed_rrset_key* rp; + struct local_rrset* rrset; + struct reply_info* new_reply_info; + struct reply_info* ri = response->rep; + + rrset = rpz_find_synthesized_rrset(qi->qtype, data); + if(rrset == NULL) { + verbose(VERB_ALGO, "rpz: nsip: no matching synthesized data found; resorting to nodata"); + rpz_patch_nodata(ri); + return 1; + } + new_reply_info = make_new_reply_info(ri, region, 0, 0); + if(new_reply_info == NULL) { + log_err("out of memory"); + rpz_patch_nodata(ri); + return 1; + } + rp = respip_copy_rrset(rrset->rrset, region); + if(rp == NULL) { + log_err("out of memory"); + rpz_patch_nodata(ri); + return 1; + } + new_reply_info->rrsets = regional_alloc(region, sizeof(*new_reply_info->rrsets)); + if(new_reply_info->rrsets == NULL) { + log_err("out of memory"); + rpz_patch_nodata(ri); + return 1; + } + rp->rk.dname = qi->qname; + rp->rk.dname_len = qi->qname_len; + new_reply_info->rrset_count = 1; + new_reply_info->an_numrrsets = 1; + new_reply_info->rrsets[0] = rp; + response->rep = new_reply_info; + return 1; +} + int rpz_iterator_module_callback(struct module_qstate* ms, struct iter_qstate* is) { struct auth_zones* az = ms->env->auth_zones; struct auth_zone* a; struct clientip_synthesized_rr* raddr; - struct local_rrset* rrset; enum rpz_action action = RPZ_INVALID_ACTION; - struct sockaddr_storage* addr = &ms->reply->addr; - socklen_t addrlen = ms->reply->addrlen; - struct ub_packed_rrset_key* rp = NULL; - int rcode = LDNS_RCODE_NOERROR|BIT_AA; - int rrset_count = 1; struct rpz* r; int ret = 0; @@ -1466,39 +1529,29 @@ rpz_iterator_module_callback(struct module_qstate* ms, struct iter_qstate* is) switch(action) { case RPZ_NXDOMAIN_ACTION: - FLAGS_SET_RCODE(is->response->rep->flags, LDNS_RCODE_NXDOMAIN); - is->response->rep->flags |= BIT_QR | BIT_AA | BIT_RA; - is->response->rep->an_numrrsets = 0; - is->response->rep->ns_numrrsets = 0; - is->response->rep->ar_numrrsets = 0; - is->response->rep->authoritative = 1; - is->response->rep->qdcount = 1; + rpz_patch_nxdomain(is->response->rep); ret = 1; break; case RPZ_NODATA_ACTION: - FLAGS_SET_RCODE(is->response->rep->flags, LDNS_RCODE_NOERROR); - is->response->rep->flags |= BIT_QR | BIT_AA | BIT_RA; - is->response->rep->an_numrrsets = 0; - is->response->rep->ns_numrrsets = 0; - is->response->rep->ar_numrrsets = 0; - is->response->rep->authoritative = 1; - is->response->rep->qdcount = 1; + rpz_patch_nodata(is->response->rep); ret = 1; break; + case RPZ_TCP_ONLY_ACTION: + log_err("rpz: nsip: tcp-only trigger unimplemented; resorting to passthru"); + ret = 0; + break; case RPZ_PASSTHRU_ACTION: ret = 0; break; + case RPZ_LOCAL_DATA_ACTION: + ret = rpz_patch_localdata(is->response, raddr, ms->region); + break; default: + verbose(VERB_ALGO, "rpz: nsip: bug: unhandled or invalid action: '%s'", + rpz_action_to_string(action)); ret = 0; } - //rrset = rpz_clientip_find_rrset(qinfo, raddr); - //if(rrset == NULL) { - // verbose(VERB_ALGO, "rpz: unable to find local-data for query"); - // rrset_count = 0; - // goto nodata; - //} - done: lock_rw_unlock(&raddr->lock); return ret; diff --git a/testdata/rpz_nsip.rpl b/testdata/rpz_nsip.rpl index 1d4462df0..ac9e80b80 100644 --- a/testdata/rpz_nsip.rpl +++ b/testdata/rpz_nsip.rpl @@ -119,6 +119,18 @@ SECTION ADDITIONAL ns1.ee. IN A 8.8.5.8 ENTRY_END +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +ff. IN A +SECTION AUTHORITY +ff. IN NS ns1.ff. +SECTION ADDITIONAL +ns1.ff. IN A 8.8.6.8 +ENTRY_END + RANGE_END ; com. ----------------------------------------------------------------------- @@ -192,7 +204,7 @@ REPLY QR NOERROR SECTION QUESTION bb. IN NS SECTION ANSWER -bb. IN NS ns1.aa. +bb. IN NS ns1.bb. SECTION ADDITIONAL ns1.bb. IN A 8.8.1.8 ENTRY_END @@ -211,6 +223,36 @@ ENTRY_END RANGE_END +; ff. ------------------------------------------------------------------------ +RANGE_BEGIN 0 100 + ADDRESS 8.8.6.8 + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ff. IN NS +SECTION ANSWER +ff. IN NS ns1.ff. +SECTION ADDITIONAL +ns1.ff. IN A 8.8.6.8 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +gotham.ff. IN A +SECTION AUTHORITY +gotham.ff. IN NS ns1.gotham.ff. +SECTION ADDITIONAL +ns1.gotham.ff. IN A 192.0.5.1 +ENTRY_END + +RANGE_END + ; ns1.gotham.com. ------------------------------------------------------------ RANGE_BEGIN 0 100 ADDRESS 192.0.6.1 @@ -259,6 +301,24 @@ ENTRY_END RANGE_END +; ns1.gotham.ff. ------------------------------------------------------------- +RANGE_BEGIN 0 100 + ADDRESS 192.0.5.1 + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +gotham.ff. IN A +SECTION ANSWER +gotham.ff. IN A 192.0.5.2 +ENTRY_END + +RANGE_END + +; ---------------------------------------------------------------------------- + STEP 1 QUERY ENTRY_BEGIN REPLY RD @@ -308,4 +368,21 @@ gotham.bb. IN A SECTION ANSWER ENTRY_END +STEP 30 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +gotham.ff. IN A +ENTRY_END + +STEP 31 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +gotham.ff. IN A +SECTION ANSWER +gotham.ff. IN A 127.0.0.1 +ENTRY_END + SCENARIO_END diff --git a/util/data/msgreply.c b/util/data/msgreply.c index 927bf09a2..fed6e5345 100644 --- a/util/data/msgreply.c +++ b/util/data/msgreply.c @@ -164,6 +164,32 @@ reply_info_alloc_rrset_keys(struct reply_info* rep, struct alloc_cache* alloc, return 1; } +struct reply_info * +make_new_reply_info(const struct reply_info* rep, struct regional* region, + size_t an_numrrsets, size_t copy_rrsets) +{ + struct reply_info* new_rep; + size_t i; + + /* create a base struct. we specify 'insecure' security status as + * the modified response won't be DNSSEC-valid. In our faked response + * the authority and additional sections will be empty (except possible + * EDNS0 OPT RR in the additional section appended on sending it out), + * so the total number of RRsets is an_numrrsets. */ + new_rep = construct_reply_info_base(region, rep->flags, + rep->qdcount, rep->ttl, rep->prefetch_ttl, + rep->serve_expired_ttl, an_numrrsets, 0, 0, an_numrrsets, + sec_status_insecure); + if(!new_rep) + return NULL; + if(!reply_info_alloc_rrset_keys(new_rep, NULL, region)) + return NULL; + for(i=0; irrsets[i] = rep->rrsets[i]; + + return new_rep; +} + /** find the minimumttl in the rdata of SOA record */ static time_t soa_find_minttl(struct rr_parse* rr) diff --git a/util/data/msgreply.h b/util/data/msgreply.h index 385780268..64ff4dfbe 100644 --- a/util/data/msgreply.h +++ b/util/data/msgreply.h @@ -382,6 +382,21 @@ struct reply_info* reply_info_copy(struct reply_info* rep, int reply_info_alloc_rrset_keys(struct reply_info* rep, struct alloc_cache* alloc, struct regional* region); +/* + * Create a new reply_info based on 'rep'. The new info is based on + * the passed 'rep', but ignores any rrsets except for the first 'an_numrrsets' + * RRsets in the answer section. These answer rrsets are copied to the + * new info, up to 'copy_rrsets' rrsets (which must not be larger than + * 'an_numrrsets'). If an_numrrsets > copy_rrsets, the remaining rrsets array + * entries will be kept empty so the caller can fill them later. When rrsets + * are copied, they are shallow copied. The caller must ensure that the + * copied rrsets are valid throughout its lifetime and must provide appropriate + * mutex if it can be shared by multiple threads. + */ +struct reply_info * +make_new_reply_info(const struct reply_info* rep, struct regional* region, + size_t an_numrrsets, size_t copy_rrsets); + /** * Copy a parsed rrset into given key, decompressing and allocating rdata. * @param pkt: packet for decompression From 354c19f6ace2e23b30678a6d8d62db24efefd5aa Mon Sep 17 00:00:00 2001 From: mb Date: Tue, 24 Nov 2020 09:33:08 +0100 Subject: [PATCH 022/553] rpz: apply trigger at query time not response time --- iterator/iterator.c | 8 +++++--- services/rpz.c | 26 ++++++++++++++++++++++++-- 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/iterator/iterator.c b/iterator/iterator.c index fcda1bb3b..f2585be31 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -2471,6 +2471,8 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, /* Add the current set of unused targets to our queue. */ delegpt_add_unused_targets(iq->dp); + rpz_iterator_module_callback(qstate, iq); + /* Select the next usable target, filtering out unsuitable targets. */ target = iter_server_selection(ie, qstate->env, iq->dp, iq->dp->name, iq->dp->namelen, iq->qchase.qtype, @@ -2660,15 +2662,15 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq, { int dnsseclame = 0; enum response_type type; - int rpz_filter_result; + //int rpz_filter_result; iq->num_current_queries--; if(!inplace_cb_query_response_call(qstate->env, qstate, iq->response)) log_err("unable to call query_response callback"); - rpz_filter_result = rpz_iterator_module_callback(qstate, iq); - if(rpz_filter_result > 0) { next_state(iq, FINISHED_STATE); } + //rpz_filter_result = rpz_iterator_module_callback(qstate, iq); + //if(rpz_filter_result > 0) { next_state(iq, FINISHED_STATE); } if(iq->response == NULL) { /* Don't increment qname when QNAME minimisation is enabled */ diff --git a/services/rpz.c b/services/rpz.c index eae3feeeb..5b5c10eb8 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -53,6 +53,7 @@ #include "util/data/msgencode.h" #include "services/cache/dns.h" #include "iterator/iterator.h" +#include "iterator/iter_delegpt.h" typedef struct resp_addr rpz_aclnode_type; @@ -1489,16 +1490,35 @@ rpz_patch_localdata(struct dns_msg* response, struct clientip_synthesized_rr* da return 1; } +struct clientip_synthesized_rr* +rpz_delegation_point_ipbased_trigger_lookup(struct rpz* rpz, + struct iter_qstate* is) +{ + struct delegpt_addr* cursor; + struct clientip_synthesized_rr* action = NULL; + if(is->dp == NULL) { return NULL; } + for(cursor = is->dp->target_list; cursor != NULL; cursor = cursor->next_target) { + if(cursor->bogus) { continue; } + action = rpz_ipbased_trigger_lookup(rpz->ns_set, &cursor->addr, cursor->addrlen); + if(action != NULL) { return action; } + } + return NULL; +} + int rpz_iterator_module_callback(struct module_qstate* ms, struct iter_qstate* is) { - struct auth_zones* az = ms->env->auth_zones; + struct auth_zones* az; struct auth_zone* a; struct clientip_synthesized_rr* raddr; enum rpz_action action = RPZ_INVALID_ACTION; struct rpz* r; int ret = 0; + if(ms->env == NULL || ms->env->auth_zones == NULL) { return 0; } + + az = ms->env->auth_zones; + verbose(VERB_ALGO, "rpz: iterator module callback: have_rpz=%d", az->rpz_first != NULL); lock_rw_rdlock(&az->rpz_lock); @@ -1507,7 +1527,7 @@ rpz_iterator_module_callback(struct module_qstate* ms, struct iter_qstate* is) for(a = az->rpz_first; a != NULL; a = a->rpz_az_next) { lock_rw_rdlock(&a->lock); r = a->rpz; - raddr = rpz_ipbased_trigger_lookup(r->ns_set, &ms->reply->addr, ms->reply->addrlen); + raddr = rpz_delegation_point_ipbased_trigger_lookup(r, is); if(raddr != NULL) { lock_rw_unlock(&a->lock); break; @@ -1515,6 +1535,8 @@ rpz_iterator_module_callback(struct module_qstate* ms, struct iter_qstate* is) lock_rw_unlock(&a->lock); } + lock_rw_unlock(&az->rpz_lock); + if(raddr == NULL) { return 0; } verbose(VERB_ALGO, "rpz: iterator callback: nsip: apply action=%s", From 126e114d6f5f3ce1668f1c70845b8169dc1c2db3 Mon Sep 17 00:00:00 2001 From: mb Date: Tue, 24 Nov 2020 11:25:01 +0100 Subject: [PATCH 023/553] rpz: forge responses --- iterator/iterator.c | 13 +++-- services/rpz.c | 128 ++++++++++++++++++++++++++------------------ services/rpz.h | 2 +- 3 files changed, 86 insertions(+), 57 deletions(-) diff --git a/iterator/iterator.c b/iterator/iterator.c index f2585be31..609786a16 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -2471,7 +2471,14 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, /* Add the current set of unused targets to our queue. */ delegpt_add_unused_targets(iq->dp); - rpz_iterator_module_callback(qstate, iq); + { /* apply rpz triggers at query time */ + struct dns_msg* forged_response = rpz_iterator_module_callback(qstate, iq); + if(forged_response != NULL) { + iq->response = forged_response; + next_state(iq, FINISHED_STATE); + return 0; + } + } /* Select the next usable target, filtering out unsuitable targets. */ target = iter_server_selection(ie, qstate->env, iq->dp, @@ -2662,16 +2669,12 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq, { int dnsseclame = 0; enum response_type type; - //int rpz_filter_result; iq->num_current_queries--; if(!inplace_cb_query_response_call(qstate->env, qstate, iq->response)) log_err("unable to call query_response callback"); - //rpz_filter_result = rpz_iterator_module_callback(qstate, iq); - //if(rpz_filter_result > 0) { next_state(iq, FINISHED_STATE); } - if(iq->response == NULL) { /* Don't increment qname when QNAME minimisation is enabled */ if(qstate->env->cfg->qname_minimisation) { diff --git a/services/rpz.c b/services/rpz.c index 5b5c10eb8..acf2b8848 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -1421,73 +1421,101 @@ nodata: rpz_local_encode(qinfo, env, edns, repinfo, buf, temp, rp, rrset_count, rcode); } -static inline void -rpz_patch_nodata(struct reply_info* ri) +static inline struct dns_msg* +rpz_dns_msg_new(struct regional* region) { - FLAGS_SET_RCODE(ri->flags, LDNS_RCODE_NOERROR); - ri->flags |= BIT_QR | BIT_AA | BIT_RA; - ri->an_numrrsets = 0; - ri->ns_numrrsets = 0; - ri->ar_numrrsets = 0; - ri->authoritative = 0; - ri->rrset_count = 1; - ri->qdcount = 1; + struct dns_msg* msg = + (struct dns_msg*)regional_alloc(region, + sizeof(struct dns_msg)); + if(msg == NULL) { return NULL; } + memset(msg, 0, sizeof(struct dns_msg)); + + return msg; } -static inline void -rpz_patch_nxdomain(struct reply_info* ri) +static inline struct dns_msg* +rpz_patch_nodata(struct rpz* r, struct module_qstate* ms) { - FLAGS_SET_RCODE(ri->flags, LDNS_RCODE_NXDOMAIN); - ri->flags |= BIT_QR | BIT_AA | BIT_RA; - ri->an_numrrsets = 0; - ri->ns_numrrsets = 0; - ri->ar_numrrsets = 0; - ri->authoritative = 0; - ri->rrset_count = 1; - ri->qdcount = 1; + struct dns_msg* msg = rpz_dns_msg_new(ms->region); + if(msg == NULL) { return msg; } + msg->qinfo = ms->qinfo; + msg->rep = construct_reply_info_base(ms->region, + LDNS_RCODE_NOERROR|BIT_QR|BIT_AA|BIT_RA, + 1, //qd + 0, //ttl + 0, //prettl + 0, //expttl + 0, //an + 0, //ns + 0, //ar + 1, //total + sec_status_secure); + return msg; } -static inline int -rpz_patch_localdata(struct dns_msg* response, struct clientip_synthesized_rr* data, - struct regional* region) +static inline struct dns_msg* +rpz_patch_nxdomain(struct rpz* r, struct module_qstate* ms) { - struct query_info* qi = &response->qinfo; + struct dns_msg* msg = rpz_dns_msg_new(ms->region); + if(msg == NULL) { return msg; } + msg->qinfo = ms->qinfo; + msg->rep = construct_reply_info_base(ms->region, + LDNS_RCODE_NXDOMAIN|BIT_QR|BIT_AA|BIT_RA, + 1, //qd + 0, //ttl + 0, //prettl + 0, //expttl + 0, //an + 0, //ns + 0, //ar + 1, //total + sec_status_secure); + return msg; +} + +static inline struct dns_msg* +rpz_patch_localdata(struct rpz* r, + struct module_qstate* ms, + struct clientip_synthesized_rr* data) +{ + struct dns_msg* msg = NULL; + struct query_info* qi = &msg->qinfo; struct ub_packed_rrset_key* rp; struct local_rrset* rrset; struct reply_info* new_reply_info; - struct reply_info* ri = response->rep; + struct reply_info* ri = msg->rep; rrset = rpz_find_synthesized_rrset(qi->qtype, data); if(rrset == NULL) { verbose(VERB_ALGO, "rpz: nsip: no matching synthesized data found; resorting to nodata"); - rpz_patch_nodata(ri); - return 1; + return rpz_patch_nodata(r, ms); } - new_reply_info = make_new_reply_info(ri, region, 0, 0); + msg = rpz_dns_msg_new(ms->region); + if(msg == NULL) { return NULL; } + + // XXX: use ttl etc from rpz zone? + new_reply_info = make_new_reply_info(ri, ms->region, 0, 0); if(new_reply_info == NULL) { log_err("out of memory"); - rpz_patch_nodata(ri); - return 1; + return NULL; } - rp = respip_copy_rrset(rrset->rrset, region); + rp = respip_copy_rrset(rrset->rrset, ms->region); if(rp == NULL) { log_err("out of memory"); - rpz_patch_nodata(ri); - return 1; + return NULL; } - new_reply_info->rrsets = regional_alloc(region, sizeof(*new_reply_info->rrsets)); + new_reply_info->rrsets = regional_alloc(ms->region, sizeof(*new_reply_info->rrsets)); if(new_reply_info->rrsets == NULL) { log_err("out of memory"); - rpz_patch_nodata(ri); - return 1; + return NULL; } rp->rk.dname = qi->qname; rp->rk.dname_len = qi->qname_len; new_reply_info->rrset_count = 1; new_reply_info->an_numrrsets = 1; new_reply_info->rrsets[0] = rp; - response->rep = new_reply_info; - return 1; + msg->rep = new_reply_info; + return msg; } struct clientip_synthesized_rr* @@ -1505,7 +1533,7 @@ rpz_delegation_point_ipbased_trigger_lookup(struct rpz* rpz, return NULL; } -int +struct dns_msg* rpz_iterator_module_callback(struct module_qstate* ms, struct iter_qstate* is) { struct auth_zones* az; @@ -1513,7 +1541,7 @@ rpz_iterator_module_callback(struct module_qstate* ms, struct iter_qstate* is) struct clientip_synthesized_rr* raddr; enum rpz_action action = RPZ_INVALID_ACTION; struct rpz* r; - int ret = 0; + struct dns_msg* ret = NULL; if(ms->env == NULL || ms->env->auth_zones == NULL) { return 0; } @@ -1537,7 +1565,7 @@ rpz_iterator_module_callback(struct module_qstate* ms, struct iter_qstate* is) lock_rw_unlock(&az->rpz_lock); - if(raddr == NULL) { return 0; } + if(raddr == NULL) { return NULL; } verbose(VERB_ALGO, "rpz: iterator callback: nsip: apply action=%s", rpz_action_to_string(raddr->action)); @@ -1545,33 +1573,31 @@ rpz_iterator_module_callback(struct module_qstate* ms, struct iter_qstate* is) action = raddr->action; if(action == RPZ_LOCAL_DATA_ACTION && raddr->data == NULL) { verbose(VERB_ALGO, "rpz: bug: local-data action but no local data"); - ret = -1; + ret = rpz_patch_nodata(r, ms); goto done; } switch(action) { case RPZ_NXDOMAIN_ACTION: - rpz_patch_nxdomain(is->response->rep); - ret = 1; + ret = rpz_patch_nxdomain(r, ms); break; case RPZ_NODATA_ACTION: - rpz_patch_nodata(is->response->rep); - ret = 1; + ret = rpz_patch_nodata(r, ms); break; case RPZ_TCP_ONLY_ACTION: - log_err("rpz: nsip: tcp-only trigger unimplemented; resorting to passthru"); - ret = 0; + verbose(VERB_ALGO, "rpz: nsip: tcp-only trigger ignored"); + ret = NULL; break; case RPZ_PASSTHRU_ACTION: - ret = 0; + ret = NULL; break; case RPZ_LOCAL_DATA_ACTION: - ret = rpz_patch_localdata(is->response, raddr, ms->region); + ret = rpz_patch_localdata(r, ms, raddr); break; default: verbose(VERB_ALGO, "rpz: nsip: bug: unhandled or invalid action: '%s'", rpz_action_to_string(action)); - ret = 0; + ret = NULL; } done: diff --git a/services/rpz.h b/services/rpz.h index 71badbb74..7a2e9500e 100644 --- a/services/rpz.h +++ b/services/rpz.h @@ -179,7 +179,7 @@ int rpz_apply_qname_trigger(struct auth_zones* az, struct module_env* env, uint8_t* taglist, size_t taglen, struct ub_server_stats* stats); struct iter_qstate; -int rpz_iterator_module_callback(struct module_qstate*, struct iter_qstate*); +struct dns_msg* rpz_iterator_module_callback(struct module_qstate*, struct iter_qstate*); /** * Delete RPZ From b178cf34b65be7dbb5d81547910d87d94af87db2 Mon Sep 17 00:00:00 2001 From: mb Date: Tue, 24 Nov 2020 11:33:16 +0100 Subject: [PATCH 024/553] rpz: update ext_state in the iterator --- iterator/iterator.c | 1 + services/rpz.c | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/iterator/iterator.c b/iterator/iterator.c index 609786a16..6655ec875 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -2476,6 +2476,7 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, if(forged_response != NULL) { iq->response = forged_response; next_state(iq, FINISHED_STATE); + qstate->ext_state[id] = module_finished; return 0; } } diff --git a/services/rpz.c b/services/rpz.c index acf2b8848..fb219ab09 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -1448,7 +1448,7 @@ rpz_patch_nodata(struct rpz* r, struct module_qstate* ms) 0, //an 0, //ns 0, //ar - 1, //total + 0, //total sec_status_secure); return msg; } @@ -1468,7 +1468,7 @@ rpz_patch_nxdomain(struct rpz* r, struct module_qstate* ms) 0, //an 0, //ns 0, //ar - 1, //total + 0, //total sec_status_secure); return msg; } From afc73e28d8d601354c516a4cddaf66debe7a1e7d Mon Sep 17 00:00:00 2001 From: mb Date: Tue, 24 Nov 2020 12:02:59 +0100 Subject: [PATCH 025/553] rpz: fix forged messages --- iterator/iterator.c | 5 +++-- services/rpz.c | 6 ++++-- testdata/rpz_nsip.rpl | 4 ++-- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/iterator/iterator.c b/iterator/iterator.c index 6655ec875..85c0b29de 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -2474,9 +2474,10 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, { /* apply rpz triggers at query time */ struct dns_msg* forged_response = rpz_iterator_module_callback(qstate, iq); if(forged_response != NULL) { - iq->response = forged_response; - next_state(iq, FINISHED_STATE); qstate->ext_state[id] = module_finished; + qstate->return_rcode = forged_response->rep->flags; + qstate->return_msg = forged_response; + next_state(iq, FINISHED_STATE); return 0; } } diff --git a/services/rpz.c b/services/rpz.c index fb219ab09..f39c5297c 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -1440,7 +1440,7 @@ rpz_patch_nodata(struct rpz* r, struct module_qstate* ms) if(msg == NULL) { return msg; } msg->qinfo = ms->qinfo; msg->rep = construct_reply_info_base(ms->region, - LDNS_RCODE_NOERROR|BIT_QR|BIT_AA|BIT_RA, + BIT_RD|BIT_QR|BIT_AA|BIT_RA, 1, //qd 0, //ttl 0, //prettl @@ -1450,6 +1450,7 @@ rpz_patch_nodata(struct rpz* r, struct module_qstate* ms) 0, //ar 0, //total sec_status_secure); + FLAGS_SET_RCODE(msg->rep->flags, LDNS_RCODE_NOERROR); return msg; } @@ -1460,7 +1461,7 @@ rpz_patch_nxdomain(struct rpz* r, struct module_qstate* ms) if(msg == NULL) { return msg; } msg->qinfo = ms->qinfo; msg->rep = construct_reply_info_base(ms->region, - LDNS_RCODE_NXDOMAIN|BIT_QR|BIT_AA|BIT_RA, + BIT_RD|BIT_QR|BIT_AA|BIT_RA, 1, //qd 0, //ttl 0, //prettl @@ -1470,6 +1471,7 @@ rpz_patch_nxdomain(struct rpz* r, struct module_qstate* ms) 0, //ar 0, //total sec_status_secure); + FLAGS_SET_RCODE(msg->rep->flags, LDNS_RCODE_NXDOMAIN); return msg; } diff --git a/testdata/rpz_nsip.rpl b/testdata/rpz_nsip.rpl index ac9e80b80..215ee3a28 100644 --- a/testdata/rpz_nsip.rpl +++ b/testdata/rpz_nsip.rpl @@ -346,7 +346,7 @@ ENTRY_END STEP 11 CHECK_ANSWER ENTRY_BEGIN MATCH all -REPLY QR RD RA NXDOMAIN +REPLY QR AA RD RA NXDOMAIN SECTION QUESTION gotham.aa. IN A SECTION ANSWER @@ -362,7 +362,7 @@ ENTRY_END STEP 21 CHECK_ANSWER ENTRY_BEGIN MATCH all -REPLY QR RD RA NOERROR +REPLY QR AA RD RA NOERROR SECTION QUESTION gotham.bb. IN A SECTION ANSWER From 7acf1a5088cb8ebc9d02a815918352b4961ed04f Mon Sep 17 00:00:00 2001 From: mb Date: Tue, 24 Nov 2020 16:29:15 +0100 Subject: [PATCH 026/553] rpz: fix forged response --- iterator/iterator.c | 2 +- services/rpz.c | 40 ++++++++++++++++++++++++++-------------- 2 files changed, 27 insertions(+), 15 deletions(-) diff --git a/iterator/iterator.c b/iterator/iterator.c index 85c0b29de..831d90761 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -2475,7 +2475,7 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, struct dns_msg* forged_response = rpz_iterator_module_callback(qstate, iq); if(forged_response != NULL) { qstate->ext_state[id] = module_finished; - qstate->return_rcode = forged_response->rep->flags; + qstate->return_rcode = FLAGS_GET_RCODE(forged_response->rep->flags); qstate->return_msg = forged_response; next_state(iq, FINISHED_STATE); return 0; diff --git a/services/rpz.c b/services/rpz.c index f39c5297c..a089f4fa4 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -1440,7 +1440,7 @@ rpz_patch_nodata(struct rpz* r, struct module_qstate* ms) if(msg == NULL) { return msg; } msg->qinfo = ms->qinfo; msg->rep = construct_reply_info_base(ms->region, - BIT_RD|BIT_QR|BIT_AA|BIT_RA, + BIT_RD | BIT_QR | BIT_AA | BIT_RA, 1, //qd 0, //ttl 0, //prettl @@ -1461,7 +1461,7 @@ rpz_patch_nxdomain(struct rpz* r, struct module_qstate* ms) if(msg == NULL) { return msg; } msg->qinfo = ms->qinfo; msg->rep = construct_reply_info_base(ms->region, - BIT_RD|BIT_QR|BIT_AA|BIT_RA, + BIT_RD | BIT_QR | BIT_AA | BIT_RA, 1, //qd 0, //ttl 0, //prettl @@ -1481,22 +1481,32 @@ rpz_patch_localdata(struct rpz* r, struct clientip_synthesized_rr* data) { struct dns_msg* msg = NULL; - struct query_info* qi = &msg->qinfo; + struct query_info* qi = &ms->qinfo; struct ub_packed_rrset_key* rp; struct local_rrset* rrset; struct reply_info* new_reply_info; - struct reply_info* ri = msg->rep; rrset = rpz_find_synthesized_rrset(qi->qtype, data); if(rrset == NULL) { verbose(VERB_ALGO, "rpz: nsip: no matching synthesized data found; resorting to nodata"); return rpz_patch_nodata(r, ms); } + msg = rpz_dns_msg_new(ms->region); if(msg == NULL) { return NULL; } // XXX: use ttl etc from rpz zone? - new_reply_info = make_new_reply_info(ri, ms->region, 0, 0); + new_reply_info = construct_reply_info_base(ms->region, + LDNS_RCODE_NOERROR | BIT_RD | BIT_QR | BIT_AA | BIT_RA, + 1, //qd + 0, //ttl + 0, //prettl + 0, //expttl + 1, //an + 0, //ns + 0, //ar + 1, //total + sec_status_secure); if(new_reply_info == NULL) { log_err("out of memory"); return NULL; @@ -1506,15 +1516,13 @@ rpz_patch_localdata(struct rpz* r, log_err("out of memory"); return NULL; } - new_reply_info->rrsets = regional_alloc(ms->region, sizeof(*new_reply_info->rrsets)); - if(new_reply_info->rrsets == NULL) { - log_err("out of memory"); - return NULL; - } + //new_reply_info->rrsets = regional_alloc(ms->region, sizeof(*new_reply_info->rrsets)); + //if(new_reply_info->rrsets == NULL) { + // log_err("out of memory"); + // return NULL; + //} rp->rk.dname = qi->qname; rp->rk.dname_len = qi->qname_len; - new_reply_info->rrset_count = 1; - new_reply_info->an_numrrsets = 1; new_reply_info->rrsets[0] = rp; msg->rep = new_reply_info; return msg; @@ -1590,12 +1598,16 @@ rpz_iterator_module_callback(struct module_qstate* ms, struct iter_qstate* is) verbose(VERB_ALGO, "rpz: nsip: tcp-only trigger ignored"); ret = NULL; break; - case RPZ_PASSTHRU_ACTION: - ret = NULL; + case RPZ_DROP_ACTION: + ret = rpz_patch_nodata(r, ms); + ms->is_drop = 1; break; case RPZ_LOCAL_DATA_ACTION: ret = rpz_patch_localdata(r, ms, raddr); break; + case RPZ_PASSTHRU_ACTION: + ret = NULL; + break; default: verbose(VERB_ALGO, "rpz: nsip: bug: unhandled or invalid action: '%s'", rpz_action_to_string(action)); From d6a69d77e219e64ad4ff8508ab6f0d809ce70f00 Mon Sep 17 00:00:00 2001 From: mb Date: Wed, 25 Nov 2020 11:45:33 +0100 Subject: [PATCH 027/553] rpz: minor cleanups --- services/rpz.c | 106 ++++++++++++++++++++++++------------------ testdata/rpz_nsip.rpl | 4 +- 2 files changed, 64 insertions(+), 46 deletions(-) diff --git a/services/rpz.c b/services/rpz.c index a089f4fa4..06327ea03 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -1237,7 +1237,8 @@ log_rpz_apply(uint8_t* dname, enum rpz_action a, struct query_info* qinfo, } static struct clientip_synthesized_rr* -rpz_ipbased_trigger_lookup(struct clientip_synthesized_rrset* set, struct sockaddr_storage* addr, socklen_t addrlen) +rpz_ipbased_trigger_lookup(struct clientip_synthesized_rrset* set, + struct sockaddr_storage* addr, socklen_t addrlen) { struct clientip_synthesized_rr* raddr = NULL; enum rpz_action action = RPZ_INVALID_ACTION; @@ -1261,11 +1262,15 @@ rpz_ipbased_trigger_lookup(struct clientip_synthesized_rrset* set, struct sockad static inline struct clientip_synthesized_rr* -rpz_resolve_client_action_and_zone(struct auth_zones* az, struct query_info* qinfo, - struct comm_reply* repinfo, uint8_t* taglist, size_t taglen, - struct ub_server_stats* stats, - /* output parameters */ - struct local_zone** z_out, struct auth_zone** a_out, struct rpz** r_out ) +rpz_resolve_client_action_and_zone(struct auth_zones* az, + struct query_info* qinfo, + struct comm_reply* repinfo, + uint8_t* taglist, size_t taglen, + struct ub_server_stats* stats, + /* output parameters */ + struct local_zone** z_out, + struct auth_zone** a_out, + struct rpz** r_out ) { struct clientip_synthesized_rr* node = NULL; struct auth_zone* a = NULL; @@ -1327,10 +1332,15 @@ rpz_is_udp_query(struct comm_reply* repinfo) { /** encode answer consisting of 1 rrset */ static int -rpz_local_encode(struct query_info* qinfo, struct module_env* env, - struct edns_data* edns, struct comm_reply* repinfo, sldns_buffer* buf, - struct regional* temp, struct ub_packed_rrset_key* rrset, int ansec, - int rcode) +rpz_local_encode(struct query_info* qinfo, + struct module_env* env, + struct edns_data* edns, + struct comm_reply* repinfo, + sldns_buffer* buf, + struct regional* temp, + struct ub_packed_rrset_key* rrset, + int ansec, + int rcode) { struct reply_info rep; uint16_t udpsize; @@ -1375,9 +1385,14 @@ rpz_find_synthesized_rrset(int qtype, struct clientip_synthesized_rr* data) { } static void -rpz_apply_clientip_localdata_action(struct rpz* r, struct clientip_synthesized_rr* raddr, - struct module_env* env, struct query_info* qinfo, struct edns_data* edns, - struct comm_reply* repinfo, sldns_buffer* buf, struct regional* temp) +rpz_apply_clientip_localdata_action(struct rpz* r, + struct clientip_synthesized_rr* raddr, + struct module_env* env, + struct query_info* qinfo, + struct edns_data* edns, + struct comm_reply* repinfo, + sldns_buffer* buf, + struct regional* temp) { struct local_rrset* rrset; enum rpz_action action = RPZ_INVALID_ACTION; @@ -1411,9 +1426,6 @@ rpz_apply_clientip_localdata_action(struct rpz* r, struct clientip_synthesized_r return; } - //struct packed_rrset_data* pd = raddr->data->entry.data; - //struct packed_rrset_data* pd2 = rp->entry.data; - //verbose(VERB_ALGO, "ttl=%ld ttl=%ld", pd->rr_ttl[0], pd2->rr_ttl[0]); rp->rk.flags |= PACKED_RRSET_FIXEDTTL; rp->rk.dname = qinfo->qname; rp->rk.dname_len = qinfo->qname_len; @@ -1434,13 +1446,13 @@ rpz_dns_msg_new(struct regional* region) } static inline struct dns_msg* -rpz_patch_nodata(struct rpz* r, struct module_qstate* ms) +rpz_forge_nodata(struct rpz* r, struct module_qstate* ms) { struct dns_msg* msg = rpz_dns_msg_new(ms->region); if(msg == NULL) { return msg; } msg->qinfo = ms->qinfo; msg->rep = construct_reply_info_base(ms->region, - BIT_RD | BIT_QR | BIT_AA | BIT_RA, + LDNS_RCODE_NOERROR | BIT_RD | BIT_QR | BIT_AA | BIT_RA, 1, //qd 0, //ttl 0, //prettl @@ -1450,18 +1462,17 @@ rpz_patch_nodata(struct rpz* r, struct module_qstate* ms) 0, //ar 0, //total sec_status_secure); - FLAGS_SET_RCODE(msg->rep->flags, LDNS_RCODE_NOERROR); return msg; } static inline struct dns_msg* -rpz_patch_nxdomain(struct rpz* r, struct module_qstate* ms) +rpz_forge_nxdomain(struct rpz* r, struct module_qstate* ms) { struct dns_msg* msg = rpz_dns_msg_new(ms->region); if(msg == NULL) { return msg; } msg->qinfo = ms->qinfo; msg->rep = construct_reply_info_base(ms->region, - BIT_RD | BIT_QR | BIT_AA | BIT_RA, + LDNS_RCODE_NXDOMAIN | BIT_RD | BIT_QR | BIT_AA | BIT_RA, 1, //qd 0, //ttl 0, //prettl @@ -1471,12 +1482,11 @@ rpz_patch_nxdomain(struct rpz* r, struct module_qstate* ms) 0, //ar 0, //total sec_status_secure); - FLAGS_SET_RCODE(msg->rep->flags, LDNS_RCODE_NXDOMAIN); return msg; } static inline struct dns_msg* -rpz_patch_localdata(struct rpz* r, +rpz_forge_localdata(struct rpz* r, struct module_qstate* ms, struct clientip_synthesized_rr* data) { @@ -1489,7 +1499,7 @@ rpz_patch_localdata(struct rpz* r, rrset = rpz_find_synthesized_rrset(qi->qtype, data); if(rrset == NULL) { verbose(VERB_ALGO, "rpz: nsip: no matching synthesized data found; resorting to nodata"); - return rpz_patch_nodata(r, ms); + return rpz_forge_nodata(r, ms); } msg = rpz_dns_msg_new(ms->region); @@ -1516,11 +1526,6 @@ rpz_patch_localdata(struct rpz* r, log_err("out of memory"); return NULL; } - //new_reply_info->rrsets = regional_alloc(ms->region, sizeof(*new_reply_info->rrsets)); - //if(new_reply_info->rrsets == NULL) { - // log_err("out of memory"); - // return NULL; - //} rp->rk.dname = qi->qname; rp->rk.dname_len = qi->qname_len; new_reply_info->rrsets[0] = rp; @@ -1583,27 +1588,27 @@ rpz_iterator_module_callback(struct module_qstate* ms, struct iter_qstate* is) action = raddr->action; if(action == RPZ_LOCAL_DATA_ACTION && raddr->data == NULL) { verbose(VERB_ALGO, "rpz: bug: local-data action but no local data"); - ret = rpz_patch_nodata(r, ms); + ret = rpz_forge_nodata(r, ms); goto done; } switch(action) { case RPZ_NXDOMAIN_ACTION: - ret = rpz_patch_nxdomain(r, ms); + ret = rpz_forge_nxdomain(r, ms); break; case RPZ_NODATA_ACTION: - ret = rpz_patch_nodata(r, ms); + ret = rpz_forge_nodata(r, ms); break; case RPZ_TCP_ONLY_ACTION: verbose(VERB_ALGO, "rpz: nsip: tcp-only trigger ignored"); ret = NULL; break; case RPZ_DROP_ACTION: - ret = rpz_patch_nodata(r, ms); + ret = rpz_forge_nodata(r, ms); ms->is_drop = 1; break; case RPZ_LOCAL_DATA_ACTION: - ret = rpz_patch_localdata(r, ms, raddr); + ret = rpz_forge_localdata(r, ms, raddr); break; case RPZ_PASSTHRU_ACTION: ret = NULL; @@ -1620,12 +1625,19 @@ done: } static int -rpz_maybe_apply_clientip_trigger(struct auth_zones* az, struct module_env* env, - struct query_info* qinfo, struct edns_data* edns, - struct comm_reply* repinfo, uint8_t* taglist, size_t taglen, - struct ub_server_stats* stats,sldns_buffer* buf, struct regional* temp, - /* output parameters */ - struct local_zone** z_out, struct auth_zone** a_out, struct rpz** r_out) +rpz_maybe_apply_clientip_trigger(struct auth_zones* az, + struct module_env* env, + struct query_info* qinfo, + struct edns_data* edns, + struct comm_reply* repinfo, + uint8_t* taglist, size_t taglen, + struct ub_server_stats* stats, + sldns_buffer* buf, + struct regional* temp, + /* output parameters */ + struct local_zone** z_out, + struct auth_zone** a_out, + struct rpz** r_out) { int ret = 0; enum rpz_action client_action; @@ -1669,10 +1681,16 @@ done: } int -rpz_apply_qname_trigger(struct auth_zones* az, struct module_env* env, - struct query_info* qinfo, struct edns_data* edns, sldns_buffer* buf, - struct regional* temp, struct comm_reply* repinfo, - uint8_t* taglist, size_t taglen, struct ub_server_stats* stats) +rpz_apply_qname_trigger(struct auth_zones* az, + struct module_env* env, + struct query_info* qinfo, + struct edns_data* edns, + sldns_buffer* buf, + struct regional* temp, + struct comm_reply* repinfo, + uint8_t* taglist, + size_t taglen, + struct ub_server_stats* stats) { struct rpz* r = NULL; struct auth_zone* a = NULL; diff --git a/testdata/rpz_nsip.rpl b/testdata/rpz_nsip.rpl index 215ee3a28..ac9e80b80 100644 --- a/testdata/rpz_nsip.rpl +++ b/testdata/rpz_nsip.rpl @@ -346,7 +346,7 @@ ENTRY_END STEP 11 CHECK_ANSWER ENTRY_BEGIN MATCH all -REPLY QR AA RD RA NXDOMAIN +REPLY QR RD RA NXDOMAIN SECTION QUESTION gotham.aa. IN A SECTION ANSWER @@ -362,7 +362,7 @@ ENTRY_END STEP 21 CHECK_ANSWER ENTRY_BEGIN MATCH all -REPLY QR AA RD RA NOERROR +REPLY QR RD RA NOERROR SECTION QUESTION gotham.bb. IN A SECTION ANSWER From f78aa90ff1a296e1a09581b440d34407cfe5ff89 Mon Sep 17 00:00:00 2001 From: mb Date: Thu, 26 Nov 2020 11:33:49 +0100 Subject: [PATCH 028/553] rpz: nsdname stubs --- daemon/worker.c | 2 +- iterator/iterator.c | 2 +- services/rpz.c | 356 +++++++++++++++++++++++++++----------------- services/rpz.h | 5 +- 4 files changed, 224 insertions(+), 141 deletions(-) diff --git a/daemon/worker.c b/daemon/worker.c index 458afa04e..7d8a086e4 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -1373,7 +1373,7 @@ worker_handle_request(struct comm_point* c, void* arg, int error, goto send_reply; } if(worker->env.auth_zones && - rpz_apply_qname_trigger(worker->env.auth_zones, + rpz_callback_from_worker_request(worker->env.auth_zones, &worker->env, &qinfo, &edns, c->buffer, worker->scratchpad, repinfo, acladdr->taglist, acladdr->taglen, &worker->stats)) { regional_free_all(worker->scratchpad); diff --git a/iterator/iterator.c b/iterator/iterator.c index 831d90761..1ebbfe277 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -2472,7 +2472,7 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, delegpt_add_unused_targets(iq->dp); { /* apply rpz triggers at query time */ - struct dns_msg* forged_response = rpz_iterator_module_callback(qstate, iq); + struct dns_msg* forged_response = rpz_callback_from_iterator_module(qstate, iq); if(forged_response != NULL) { qstate->ext_state[id] = module_finished; qstate->return_rcode = FLAGS_GET_RCODE(forged_response->rep->flags); diff --git a/services/rpz.c b/services/rpz.c index 06327ea03..45064b388 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -350,6 +350,7 @@ rpz_delete(struct rpz* r) if(!r) return; local_zones_delete(r->local_zones); + local_zones_delete(r->nsdname_zones); respip_set_delete(r->respip_set); rpz_clientip_synthesized_set_delete(r->client_set); rpz_clientip_synthesized_set_delete(r->ns_set); @@ -364,12 +365,18 @@ rpz_clear(struct rpz* r) { /* must hold write lock on auth_zone */ local_zones_delete(r->local_zones); + local_zones_delete(r->nsdname_zones); respip_set_delete(r->respip_set); rpz_clientip_synthesized_set_delete(r->client_set); rpz_clientip_synthesized_set_delete(r->ns_set); + // XXX: this approach seems to leak memory if(!(r->local_zones = local_zones_create())){ return 0; } + r->nsdname_zones = local_zones_create(); + if(r->nsdname_zones == NULL) { + return 0; + } if(!(r->respip_set = respip_set_create())) { return 0; } @@ -459,6 +466,12 @@ rpz_create(struct config_auth* p) if(!(r->local_zones = local_zones_create())){ goto err; } + + r->nsdname_zones = local_zones_create(); + if(r->local_zones == NULL){ + goto err; + } + if(!(r->respip_set = respip_set_create())) { goto err; } @@ -513,6 +526,8 @@ err: if(r) { if(r->local_zones) local_zones_delete(r->local_zones); + if(r->nsdname_zones) + local_zones_delete(r->nsdname_zones); if(r->respip_set) respip_set_delete(r->respip_set); if(r->client_set != NULL) @@ -547,77 +562,99 @@ strip_dname_origin(uint8_t* dname, size_t dnamelen, size_t originlen, return newdnamelen + 1; /* + 1 for root label */ } -/** Insert RR into RPZ's local-zone */ static void -rpz_insert_qname_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, - enum rpz_action a, uint16_t rrtype, uint16_t rrclass, uint32_t ttl, - uint8_t* rdata, size_t rdata_len, uint8_t* rr, size_t rr_len) +rpz_insert_local_zones_trigger(struct local_zones* lz, uint8_t* dname, + size_t dnamelen, enum rpz_action a, uint16_t rrtype, uint16_t rrclass, + uint32_t ttl, uint8_t* rdata, size_t rdata_len, uint8_t* rr, size_t rr_len) { struct local_zone* z; enum localzone_type tp = local_zone_always_transparent; int dnamelabs = dname_count_labels(dname); - char* rrstr; + int newzone = 0; - verbose(VERB_ALGO, "rpz: insert qname trigger: %s", rpz_action_to_string(a)); - - if(a == RPZ_INVALID_ACTION) { - verbose(VERB_ALGO, "rpz: skipping unsupported action: %s", - rpz_action_to_string(a)); - free(dname); - return; - } - - lock_rw_wrlock(&r->local_zones->lock); + lock_rw_wrlock(&lz->lock); /* exact match */ - z = local_zones_find(r->local_zones, dname, dnamelen, dnamelabs, - LDNS_RR_CLASS_IN); - if(z && a != RPZ_LOCAL_DATA_ACTION) { - rrstr = sldns_wire2str_rr(rr, rr_len); - if(!rrstr) { - log_err("malloc error while inserting RPZ qname " - "trigger"); + z = local_zones_find(lz, dname, dnamelen, dnamelabs, LDNS_RR_CLASS_IN); + if(z != NULL && a != RPZ_LOCAL_DATA_ACTION) { + char* rrstr = sldns_wire2str_rr(rr, rr_len); + if(rrstr == NULL) { + log_err("malloc error while inserting rpz nsdname trigger"); free(dname); - lock_rw_unlock(&r->local_zones->lock); + lock_rw_unlock(&lz->lock); return; } - verbose(VERB_ALGO, "rpz: skipping duplicate record: '%s'", - rrstr); + verbose(VERB_ALGO, "rpz: skipping duplicate record: '%s'", rrstr); free(rrstr); free(dname); - lock_rw_unlock(&r->local_zones->lock); + lock_rw_unlock(&lz->lock); return; } - if(!z) { + if(z == NULL) { tp = rpz_action_to_localzone_type(a); - if(!(z = local_zones_add_zone(r->local_zones, dname, dnamelen, - dnamelabs, rrclass, tp))) { + z = local_zones_add_zone(lz, dname, dnamelen, + dnamelabs, rrclass, tp); + if(z == NULL) { log_warn("rpz: create failed"); - lock_rw_unlock(&r->local_zones->lock); + lock_rw_unlock(&lz->lock); /* dname will be free'd in failed local_zone_create() */ return; } newzone = 1; } if(a == RPZ_LOCAL_DATA_ACTION) { - rrstr = sldns_wire2str_rr(rr, rr_len); - if(!rrstr) { - log_err("malloc error while inserting RPZ qname " - "trigger"); + char* rrstr = sldns_wire2str_rr(rr, rr_len); + if(rrstr == NULL) { + log_err("malloc error while inserting rpz nsdname trigger"); free(dname); - lock_rw_unlock(&r->local_zones->lock); + lock_rw_unlock(&lz->lock); return; } lock_rw_wrlock(&z->lock); - local_zone_enter_rr(z, dname, dnamelen, dnamelabs, - rrtype, rrclass, ttl, rdata, rdata_len, rrstr); + local_zone_enter_rr(z, dname, dnamelen, dnamelabs, rrtype, + rrclass, ttl, rdata, rdata_len, rrstr); lock_rw_unlock(&z->lock); free(rrstr); } - if(!newzone) + if(!newzone) { free(dname); - lock_rw_unlock(&r->local_zones->lock); - return; + } + lock_rw_unlock(&lz->lock); +} + +/** Insert RR into RPZ's local-zone */ +static void +rpz_insert_qname_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, + enum rpz_action a, uint16_t rrtype, uint16_t rrclass, uint32_t ttl, + uint8_t* rdata, size_t rdata_len, uint8_t* rr, size_t rr_len) +{ + verbose(VERB_ALGO, "rpz: insert qname trigger: %s", rpz_action_to_string(a)); + + if(a == RPZ_INVALID_ACTION) { + verbose(VERB_ALGO, "rpz: skipping invalid action"); + free(dname); + return; + } + + rpz_insert_local_zones_trigger(r->local_zones, dname, dnamelen, a, rrtype, + rrclass, ttl, rdata, rdata_len, rr, rr_len); +} + +static void +rpz_insert_nsdname_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, + enum rpz_action a, uint16_t rrtype, uint16_t rrclass, uint32_t ttl, + uint8_t* rdata, size_t rdata_len, uint8_t* rr, size_t rr_len) +{ + verbose(VERB_ALGO, "rpz: insert nsdname trigger: %s", rpz_action_to_string(a)); + + if(a == RPZ_INVALID_ACTION) { + verbose(VERB_ALGO, "rpz: skipping invalid action"); + free(dname); + return; + } + + rpz_insert_local_zones_trigger(r->nsdname_zones, dname, dnamelen, a, rrtype, + rrclass, ttl, rdata, rdata_len, rr, rr_len); } static int @@ -631,14 +668,16 @@ rpz_insert_ipaddr_based_trigger(struct respip_set* set, struct sockaddr_storage* enum respip_action respa = rpz_action_to_respip_action(a); lock_rw_wrlock(&set->lock); + rrstr = sldns_wire2str_rr(rr, rr_len); - if(!rrstr) { - log_err("malloc error while inserting RPZ ipaddr based trigger"); + if(rrstr == NULL) { + log_err("malloc error while inserting rpz ipaddr based trigger"); lock_rw_unlock(&set->lock); return 0; } - if(!(node=respip_sockaddr_find_or_create(set, addr, addrlen, - net, 1, rrstr))) { + + node = respip_sockaddr_find_or_create(set, addr, addrlen, net, 1, rrstr); + if(node == NULL) { lock_rw_unlock(&set->lock); free(rrstr); return 0; @@ -646,12 +685,14 @@ rpz_insert_ipaddr_based_trigger(struct respip_set* set, struct sockaddr_storage* lock_rw_wrlock(&node->lock); lock_rw_unlock(&set->lock); + node->action = respa; if(a == RPZ_LOCAL_DATA_ACTION) { respip_enter_rr(set->region, node, rrtype, - rrclass, ttl, rdata, rdata_len, rrstr, ""); + rrclass, ttl, rdata, rdata_len, rrstr, ""); } + lock_rw_unlock(&node->lock); free(rrstr); return 1; @@ -693,7 +734,7 @@ static void rpz_report_rrset_error(const char* msg, uint8_t* rr, size_t rr_len) { char* rrstr = sldns_wire2str_rr(rr, rr_len); if(rrstr == NULL) { - log_err("malloc error while inserting RPZ clientip based record"); + log_err("malloc error while inserting rpz clientip based record"); return; } log_err("rpz: unexpected: unable to insert %s: %s", msg, rrstr); @@ -759,7 +800,7 @@ rpz_clientip_enter_rr(struct regional* region, struct clientip_synthesized_rr* r return 0; } - return rrset_insert_rr(region, rrset->rrset->entry.data, rdata, rdata_len, ttl, "fixme"); + return rrset_insert_rr(region, rrset->rrset->entry.data, rdata, rdata_len, ttl, ""); } static int @@ -914,6 +955,7 @@ rpz_insert_rr(struct rpz* r, uint8_t* azname, size_t aznamelen, uint8_t* dname, return 1; } if(t == RPZ_QNAME_TRIGGER) { + // policydname will be consumed, no free rpz_insert_qname_trigger(r, policydname, policydnamelen, a, rr_type, rr_class, rr_ttl, rdatawl, rdatalen, rr, rr_len); @@ -932,6 +974,11 @@ rpz_insert_rr(struct rpz* r, uint8_t* azname, size_t aznamelen, uint8_t* dname, a, rr_type, rr_class, rr_ttl, rdatawl, rdatalen, rr, rr_len); free(policydname); + } else if(t == RPZ_NSDNAME_TRIGGER) { + // policydname will be consumed, no free + rpz_insert_nsdname_trigger(r, policydname, policydnamelen, + a, rr_type, rr_class, rr_ttl, rdatawl, rdatalen, rr, + rr_len); } else { free(policydname); verbose(VERB_ALGO, "rpz: skipping unsupported trigger: %s", @@ -953,7 +1000,7 @@ rpz_insert_rr(struct rpz* r, uint8_t* azname, size_t aznamelen, uint8_t* dname, * @return: NULL or local-zone holding rd or wr lock */ static struct local_zone* -rpz_find_zone(struct rpz* r, uint8_t* qname, size_t qname_len, uint16_t qclass, +rpz_find_zone(struct local_zones* zones, uint8_t* qname, size_t qname_len, uint16_t qclass, int only_exact, int wr, int zones_keep_lock) { uint8_t* ce; @@ -961,16 +1008,17 @@ rpz_find_zone(struct rpz* r, uint8_t* qname, size_t qname_len, uint16_t qclass, uint8_t wc[LDNS_MAX_DOMAINLEN+1]; int exact; struct local_zone* z = NULL; + if(wr) { - lock_rw_wrlock(&r->local_zones->lock); + lock_rw_wrlock(&zones->lock); } else { - lock_rw_rdlock(&r->local_zones->lock); + lock_rw_rdlock(&zones->lock); } - z = local_zones_find_le(r->local_zones, qname, qname_len, + z = local_zones_find_le(zones, qname, qname_len, dname_count_labels(qname), LDNS_RR_CLASS_IN, &exact); if(!z || (only_exact && !exact)) { - lock_rw_unlock(&r->local_zones->lock); + lock_rw_unlock(&zones->lock); return NULL; } if(wr) { @@ -979,7 +1027,7 @@ rpz_find_zone(struct rpz* r, uint8_t* qname, size_t qname_len, uint16_t qclass, lock_rw_rdlock(&z->lock); } if(!zones_keep_lock) { - lock_rw_unlock(&r->local_zones->lock); + lock_rw_unlock(&zones->lock); } if(exact) @@ -993,7 +1041,7 @@ rpz_find_zone(struct rpz* r, uint8_t* qname, size_t qname_len, uint16_t qclass, if(!ce /* should not happen */ || !*ce /* root */) { lock_rw_unlock(&z->lock); if(zones_keep_lock) { - lock_rw_unlock(&r->local_zones->lock); + lock_rw_unlock(&zones->lock); } return NULL; } @@ -1001,7 +1049,7 @@ rpz_find_zone(struct rpz* r, uint8_t* qname, size_t qname_len, uint16_t qclass, if(ce_len+2 > sizeof(wc)) { lock_rw_unlock(&z->lock); if(zones_keep_lock) { - lock_rw_unlock(&r->local_zones->lock); + lock_rw_unlock(&zones->lock); } return NULL; } @@ -1012,15 +1060,15 @@ rpz_find_zone(struct rpz* r, uint8_t* qname, size_t qname_len, uint16_t qclass, if(!zones_keep_lock) { if(wr) { - lock_rw_wrlock(&r->local_zones->lock); + lock_rw_wrlock(&zones->lock); } else { - lock_rw_rdlock(&r->local_zones->lock); + lock_rw_rdlock(&zones->lock); } } - z = local_zones_find_le(r->local_zones, wc, + z = local_zones_find_le(zones, wc, ce_len+2, ce_labs+1, qclass, &exact); if(!z || !exact) { - lock_rw_unlock(&r->local_zones->lock); + lock_rw_unlock(&zones->lock); return NULL; } if(wr) { @@ -1029,7 +1077,7 @@ rpz_find_zone(struct rpz* r, uint8_t* qname, size_t qname_len, uint16_t qclass, lock_rw_rdlock(&z->lock); } if(!zones_keep_lock) { - lock_rw_unlock(&r->local_zones->lock); + lock_rw_unlock(&zones->lock); } return z; } @@ -1124,7 +1172,7 @@ rpz_remove_qname_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, { struct local_zone* z; int delete_zone = 1; - z = rpz_find_zone(r, dname, dnamelen, rr_class, + z = rpz_find_zone(r->local_zones, dname, dnamelen, rr_class, 1 /* only exact */, 1 /* wr lock */, 1 /* keep lock*/); if(!z) { verbose(VERB_ALGO, "rpz: cannot remove RR from IXFR, " @@ -1262,15 +1310,11 @@ rpz_ipbased_trigger_lookup(struct clientip_synthesized_rrset* set, static inline struct clientip_synthesized_rr* -rpz_resolve_client_action_and_zone(struct auth_zones* az, - struct query_info* qinfo, - struct comm_reply* repinfo, - uint8_t* taglist, size_t taglen, - struct ub_server_stats* stats, - /* output parameters */ - struct local_zone** z_out, - struct auth_zone** a_out, - struct rpz** r_out ) +rpz_resolve_client_action_and_zone(struct auth_zones* az, struct query_info* qinfo, + struct comm_reply* repinfo, uint8_t* taglist, size_t taglen, + struct ub_server_stats* stats, + /* output parameters */ + struct local_zone** z_out, struct auth_zone** a_out, struct rpz** r_out) { struct clientip_synthesized_rr* node = NULL; struct auth_zone* a = NULL; @@ -1287,7 +1331,7 @@ rpz_resolve_client_action_and_zone(struct auth_zones* az, lock_rw_unlock(&a->lock); continue; } - z = rpz_find_zone(r, qinfo->qname, qinfo->qname_len, + z = rpz_find_zone(r->local_zones, qinfo->qname, qinfo->qname_len, qinfo->qclass, 0, 0, 0); node = rpz_ipbased_trigger_lookup(r->client_set, &repinfo->addr, repinfo->addrlen); if(z && r->action_override == RPZ_DISABLED_ACTION) { @@ -1486,9 +1530,8 @@ rpz_forge_nxdomain(struct rpz* r, struct module_qstate* ms) } static inline struct dns_msg* -rpz_forge_localdata(struct rpz* r, - struct module_qstate* ms, - struct clientip_synthesized_rr* data) +rpz_forge_localdata(struct rpz* r, struct module_qstate* ms, + struct clientip_synthesized_rr* data) { struct dns_msg* msg = NULL; struct query_info* qi = &ms->qinfo; @@ -1534,8 +1577,7 @@ rpz_forge_localdata(struct rpz* r, } struct clientip_synthesized_rr* -rpz_delegation_point_ipbased_trigger_lookup(struct rpz* rpz, - struct iter_qstate* is) +rpz_delegation_point_ipbased_trigger_lookup(struct rpz* rpz, struct iter_qstate* is) { struct delegpt_addr* cursor; struct clientip_synthesized_rr* action = NULL; @@ -1549,43 +1591,14 @@ rpz_delegation_point_ipbased_trigger_lookup(struct rpz* rpz, } struct dns_msg* -rpz_iterator_module_callback(struct module_qstate* ms, struct iter_qstate* is) +rpz_apply_nsip_tigger(struct module_qstate* ms, struct rpz* r,struct clientip_synthesized_rr* raddr) { - struct auth_zones* az; - struct auth_zone* a; - struct clientip_synthesized_rr* raddr; - enum rpz_action action = RPZ_INVALID_ACTION; - struct rpz* r; + enum rpz_action action = raddr->action; struct dns_msg* ret = NULL; - if(ms->env == NULL || ms->env->auth_zones == NULL) { return 0; } - - az = ms->env->auth_zones; - - verbose(VERB_ALGO, "rpz: iterator module callback: have_rpz=%d", az->rpz_first != NULL); - - lock_rw_rdlock(&az->rpz_lock); - - raddr = NULL; - for(a = az->rpz_first; a != NULL; a = a->rpz_az_next) { - lock_rw_rdlock(&a->lock); - r = a->rpz; - raddr = rpz_delegation_point_ipbased_trigger_lookup(r, is); - if(raddr != NULL) { - lock_rw_unlock(&a->lock); - break; - } - lock_rw_unlock(&a->lock); - } - - lock_rw_unlock(&az->rpz_lock); - - if(raddr == NULL) { return NULL; } - verbose(VERB_ALGO, "rpz: iterator callback: nsip: apply action=%s", rpz_action_to_string(raddr->action)); - action = raddr->action; if(action == RPZ_LOCAL_DATA_ACTION && raddr->data == NULL) { verbose(VERB_ALGO, "rpz: bug: local-data action but no local data"); ret = rpz_forge_nodata(r, ms); @@ -1624,20 +1637,92 @@ done: return ret; } +struct dns_msg* +rpz_apply_nsdname_trigger(struct module_qstate* ms, struct rpz* r, struct local_zone* z) +{ + struct dns_msg* ret = NULL; + + verbose(VERB_ALGO, "rpz: iterator callback: nsdname: apply action"); + + return ret; +} + +static struct local_zone* +rpz_delegation_point_zone_lookup(struct delegpt* dp, struct local_zones* zones, uint16_t qclass) +{ + struct delegpt_ns* nameserver; + struct local_zone* z = NULL; + + z = rpz_find_zone(zones, dp->name, dp->namelen, qclass, 0, 0, 0); + + if(z == NULL) { + for(nameserver = dp->nslist; + nameserver != NULL; + nameserver = nameserver->next) { + z = rpz_find_zone(zones, nameserver->name, nameserver->namelen, + qclass, 0, 0, 0); + if(z != NULL) { break; } + } + } + + verbose(VERB_ALGO, "rpz: delegation point zone found=%d", z != NULL); + + return z; +} + +struct dns_msg* +rpz_callback_from_iterator_module(struct module_qstate* ms, struct iter_qstate* is) +{ + struct auth_zones* az; + struct auth_zone* a; + struct clientip_synthesized_rr* raddr = NULL; + struct rpz* r; + struct local_zone* z = NULL; + + if(ms->env == NULL || ms->env->auth_zones == NULL) { return 0; } + + az = ms->env->auth_zones; + + verbose(VERB_ALGO, "rpz: iterator module callback: have_rpz=%d", az->rpz_first != NULL); + + lock_rw_rdlock(&az->rpz_lock); + + for(a = az->rpz_first; a != NULL; a = a->rpz_az_next) { + lock_rw_rdlock(&a->lock); + r = a->rpz; + + // XXX: check rfc which action has preference + + raddr = rpz_delegation_point_ipbased_trigger_lookup(r, is); + if(raddr != NULL) { + lock_rw_unlock(&a->lock); + break; + } + + z = rpz_delegation_point_zone_lookup(is->dp, r->nsdname_zones, + ms->qinfo.qclass); + if(z != NULL) { + lock_rw_unlock(&a->lock); + break; + } + lock_rw_unlock(&a->lock); + } + + lock_rw_unlock(&az->rpz_lock); + + if(raddr == NULL && z == NULL) { return NULL; } + else if(raddr != NULL) { return rpz_apply_nsip_tigger(ms, r, raddr); } + else if(z != NULL) { return rpz_apply_nsdname_trigger(ms, r, z); } + else { return NULL; } +} + static int -rpz_maybe_apply_clientip_trigger(struct auth_zones* az, - struct module_env* env, - struct query_info* qinfo, - struct edns_data* edns, - struct comm_reply* repinfo, - uint8_t* taglist, size_t taglen, - struct ub_server_stats* stats, - sldns_buffer* buf, - struct regional* temp, - /* output parameters */ - struct local_zone** z_out, - struct auth_zone** a_out, - struct rpz** r_out) +rpz_apply_maybe_clientip_trigger(struct auth_zones* az, struct module_env* env, + struct query_info* qinfo, struct edns_data* edns, struct comm_reply* repinfo, + uint8_t* taglist, size_t taglen, struct ub_server_stats* stats, + sldns_buffer* buf, struct regional* temp, + /* output parameters */ + struct local_zone** z_out, struct auth_zone** a_out, struct rpz** r_out) { int ret = 0; enum rpz_action client_action; @@ -1681,16 +1766,10 @@ done: } int -rpz_apply_qname_trigger(struct auth_zones* az, - struct module_env* env, - struct query_info* qinfo, - struct edns_data* edns, - sldns_buffer* buf, - struct regional* temp, - struct comm_reply* repinfo, - uint8_t* taglist, - size_t taglen, - struct ub_server_stats* stats) +rpz_callback_from_worker_request(struct auth_zones* az, struct module_env* env, + struct query_info* qinfo, struct edns_data* edns, sldns_buffer* buf, + struct regional* temp, struct comm_reply* repinfo, uint8_t* taglist, + size_t taglen, struct ub_server_stats* stats) { struct rpz* r = NULL; struct auth_zone* a = NULL; @@ -1699,7 +1778,7 @@ rpz_apply_qname_trigger(struct auth_zones* az, int ret; enum localzone_type lzt; - int clientip_trigger = rpz_maybe_apply_clientip_trigger(az, env, qinfo, + int clientip_trigger = rpz_apply_maybe_clientip_trigger(az, env, qinfo, edns, repinfo, taglist, taglen, stats, buf, temp, &z, &a, &r); if(clientip_trigger >= 0) { return clientip_trigger; } @@ -1736,9 +1815,10 @@ rpz_apply_qname_trigger(struct auth_zones* az, } qinfo->local_alias->rrset->rk.dname = qinfo->qname; qinfo->local_alias->rrset->rk.dname_len = qinfo->qname_len; - if(r->log) - log_rpz_apply(z->name, RPZ_CNAME_OVERRIDE_ACTION, - qinfo, repinfo, r->log_name); + if(r->log) { + log_rpz_apply(z->name, RPZ_CNAME_OVERRIDE_ACTION, + qinfo, repinfo, r->log_name); + } stats->rpz_action[RPZ_CNAME_OVERRIDE_ACTION]++; lock_rw_unlock(&z->lock); lock_rw_unlock(&a->lock); @@ -1748,10 +1828,11 @@ rpz_apply_qname_trigger(struct auth_zones* az, if(lzt == local_zone_redirect && local_data_answer(z, env, qinfo, edns, repinfo, buf, temp, dname_count_labels(qinfo->qname), &ld, lzt, -1, NULL, 0, NULL, 0)) { - if(r->log) + if(r->log) { log_rpz_apply(z->name, localzone_type_to_rpz_action(lzt), qinfo, repinfo, r->log_name); + } stats->rpz_action[localzone_type_to_rpz_action(lzt)]++; lock_rw_unlock(&z->lock); lock_rw_unlock(&a->lock); @@ -1760,9 +1841,10 @@ rpz_apply_qname_trigger(struct auth_zones* az, ret = local_zones_zone_answer(z, env, qinfo, edns, repinfo, buf, temp, 0 /* no local data used */, lzt); - if(r->log) + if(r->log) { log_rpz_apply(z->name, localzone_type_to_rpz_action(lzt), - qinfo, repinfo, r->log_name); + qinfo, repinfo, r->log_name); + } stats->rpz_action[localzone_type_to_rpz_action(lzt)]++; lock_rw_unlock(&z->lock); lock_rw_unlock(&a->lock); diff --git a/services/rpz.h b/services/rpz.h index 7a2e9500e..7924c2c3a 100644 --- a/services/rpz.h +++ b/services/rpz.h @@ -115,6 +115,7 @@ struct rpz { struct respip_set* respip_set; struct clientip_synthesized_rrset* client_set; struct clientip_synthesized_rrset* ns_set; + struct local_zones* nsdname_zones; uint8_t* taglist; size_t taglistlen; enum rpz_action action_override; @@ -173,13 +174,13 @@ void rpz_remove_rr(struct rpz* r, size_t aznamelen, uint8_t* dname, * @param stats: worker stats struct * @return: 1 if client answer is ready, 0 to continue resolving */ -int rpz_apply_qname_trigger(struct auth_zones* az, struct module_env* env, +int rpz_callback_from_worker_request(struct auth_zones* az, struct module_env* env, struct query_info* qinfo, struct edns_data* edns, sldns_buffer* buf, struct regional* temp, struct comm_reply* repinfo, uint8_t* taglist, size_t taglen, struct ub_server_stats* stats); struct iter_qstate; -struct dns_msg* rpz_iterator_module_callback(struct module_qstate*, struct iter_qstate*); +struct dns_msg* rpz_callback_from_iterator_module(struct module_qstate*, struct iter_qstate*); /** * Delete RPZ From caaa38f7c53972050649396289099d44e6a49235 Mon Sep 17 00:00:00 2001 From: mb Date: Thu, 26 Nov 2020 12:16:33 +0100 Subject: [PATCH 029/553] rpz: strip .rpz-nsdname suffix when inserting trigger --- services/rpz.c | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/services/rpz.c b/services/rpz.c index 45064b388..51018b8bd 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -622,7 +622,15 @@ rpz_insert_local_zones_trigger(struct local_zones* lz, uint8_t* dname, lock_rw_unlock(&lz->lock); } -/** Insert RR into RPZ's local-zone */ +static void +rpz_log_dname(char const* msg, uint8_t* dname, size_t dname_len) +{ + char buf[LDNS_MAX_DOMAINLEN+1]; + (void)dname_len; + dname_str(dname, buf); + verbose(VERB_ALGO, "rpz: %s: <%s>", msg, buf); +} + static void rpz_insert_qname_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, enum rpz_action a, uint16_t rrtype, uint16_t rrclass, uint32_t ttl, @@ -630,6 +638,8 @@ rpz_insert_qname_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, { verbose(VERB_ALGO, "rpz: insert qname trigger: %s", rpz_action_to_string(a)); + rpz_log_dname("insert qname trigger", dname, dnamelen); + if(a == RPZ_INVALID_ACTION) { verbose(VERB_ALGO, "rpz: skipping invalid action"); free(dname); @@ -640,6 +650,14 @@ rpz_insert_qname_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, rrclass, ttl, rdata, rdata_len, rr, rr_len); } +static void +rpz_strip_nsdname_suffix(uint8_t* dname, size_t maxdnamelen) +{ + uint8_t* stripped = get_tld_label(dname, maxdnamelen); + if(stripped == NULL) { return; } + *stripped = 0; +} + static void rpz_insert_nsdname_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, enum rpz_action a, uint16_t rrtype, uint16_t rrclass, uint32_t ttl, @@ -647,6 +665,10 @@ rpz_insert_nsdname_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, { verbose(VERB_ALGO, "rpz: insert nsdname trigger: %s", rpz_action_to_string(a)); + rpz_log_dname("insert nsdname trigger", dname, dnamelen); + rpz_strip_nsdname_suffix(dname, dnamelen); + rpz_log_dname("insert nsdname trigger (stripped)", dname, dnamelen); + if(a == RPZ_INVALID_ACTION) { verbose(VERB_ALGO, "rpz: skipping invalid action"); free(dname); @@ -1653,12 +1675,14 @@ rpz_delegation_point_zone_lookup(struct delegpt* dp, struct local_zones* zones, struct delegpt_ns* nameserver; struct local_zone* z = NULL; + rpz_log_dname("delegation point", dp->name, dp->namelen); z = rpz_find_zone(zones, dp->name, dp->namelen, qclass, 0, 0, 0); if(z == NULL) { for(nameserver = dp->nslist; nameserver != NULL; nameserver = nameserver->next) { + rpz_log_dname("delegation point", nameserver->name, nameserver->namelen); z = rpz_find_zone(zones, nameserver->name, nameserver->namelen, qclass, 0, 0, 0); if(z != NULL) { break; } From 714d546d1d12e35ab013fe17380e944673055cdb Mon Sep 17 00:00:00 2001 From: mb Date: Thu, 26 Nov 2020 12:26:23 +0100 Subject: [PATCH 030/553] rpz: add testbound nsdname script (stub) --- services/rpz.c | 1 + testdata/rpz_nsdname.rpl | 388 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 389 insertions(+) create mode 100644 testdata/rpz_nsdname.rpl diff --git a/services/rpz.c b/services/rpz.c index 51018b8bd..646c9093e 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -1676,6 +1676,7 @@ rpz_delegation_point_zone_lookup(struct delegpt* dp, struct local_zones* zones, struct local_zone* z = NULL; rpz_log_dname("delegation point", dp->name, dp->namelen); + // XXX: do we want this? z = rpz_find_zone(zones, dp->name, dp->namelen, qclass, 0, 0, 0); if(z == NULL) { diff --git a/testdata/rpz_nsdname.rpl b/testdata/rpz_nsdname.rpl new file mode 100644 index 000000000..7587ccfe5 --- /dev/null +++ b/testdata/rpz_nsdname.rpl @@ -0,0 +1,388 @@ +; config options +server: + module-config: "respip validator iterator" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: no + access-control: 192.0.0.0/8 allow + +rpz: + name: "rpz.example.com." + zonefile: +TEMPFILE_NAME rpz.example.com +TEMPFILE_CONTENTS rpz.example.com +$ORIGIN example.com. +rpz 3600 IN SOA ns1.rpz.example.com. hostmaster.rpz.example.com. ( + 1379078166 28800 7200 604800 7200 ) + 3600 IN NS ns1.rpz.example.com. + 3600 IN NS ns2.rpz.example.com. +$ORIGIN rpz.example.com. +gotham.aa.rpz-nsdname CNAME . +gotham.bb.rpz-nsdname CNAME *. +gotham.cc.rpz-nsdname CNAME rpz-drop. +gotham.com.rpz-nsdname CNAME rpz-passthru. +gotham.dd.rpz-nsdname CNAME rpz-tcp-only. +gotham.ee.rpz-nsdname A 127.0.0.1 +gotham.ff.rpz-nsdname TXT "42" +TEMPFILE_END + +stub-zone: + name: "." + stub-addr: 1.1.1.1 +CONFIG_END + +SCENARIO_BEGIN Test RPZ nsip triggers + +; . -------------------------------------------------------------------------- +RANGE_BEGIN 0 100 + ADDRESS 1.1.1.1 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS ns.root. +SECTION ADDITIONAL +ns.root IN A 1.1.1.1 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN A +SECTION AUTHORITY +com. IN NS ns1.com. +SECTION ADDITIONAL +ns1.com. IN A 8.8.8.8 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +aa. IN A +SECTION AUTHORITY +aa. IN NS ns1.aa. +SECTION ADDITIONAL +ns1.aa. IN A 8.8.0.8 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +bb. IN A +SECTION AUTHORITY +bb. IN NS ns1.bb. +SECTION ADDITIONAL +ns1.bb. IN A 8.8.1.8 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +cc. IN A +SECTION AUTHORITY +cc. IN NS ns1.cc. +SECTION ADDITIONAL +ns1.cc. IN A 8.8.2.8 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +dd. IN A +SECTION AUTHORITY +dd. IN NS ns1.dd. +SECTION ADDITIONAL +ns1.dd. IN A 8.8.3.8 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +ee. IN A +SECTION AUTHORITY +ee. IN NS ns1.ee. +SECTION ADDITIONAL +ns1.ee. IN A 8.8.5.8 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +ff. IN A +SECTION AUTHORITY +ff. IN NS ns1.ff. +SECTION ADDITIONAL +ns1.ff. IN A 8.8.6.8 +ENTRY_END + +RANGE_END + +; com. ----------------------------------------------------------------------- +RANGE_BEGIN 0 100 + ADDRESS 8.8.8.8 + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS ns1.com. +SECTION ADDITIONAL +ns1.com. IN A 8.8.8.8 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +gotham.com. IN A +SECTION AUTHORITY +gotham.com. IN NS ns1.gotham.com. +SECTION ADDITIONAL +ns1.gotham.com. IN A 192.0.6.1 +ENTRY_END + +RANGE_END + +; aa. ------------------------------------------------------------------------ +RANGE_BEGIN 0 100 + ADDRESS 8.8.0.8 + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +aa. IN NS +SECTION ANSWER +aa. IN NS ns1.aa. +SECTION ADDITIONAL +ns1.aa. IN A 8.8.0.8 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +gotham.aa. IN A +SECTION AUTHORITY +gotham.aa. IN NS ns1.gotham.aa. +SECTION ADDITIONAL +ns1.gotham.aa. IN A 192.0.0.1 +ENTRY_END + +RANGE_END + +; bb. ------------------------------------------------------------------------ +RANGE_BEGIN 0 100 + ADDRESS 8.8.1.8 + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +bb. IN NS +SECTION ANSWER +bb. IN NS ns1.bb. +SECTION ADDITIONAL +ns1.bb. IN A 8.8.1.8 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +gotham.bb. IN A +SECTION AUTHORITY +gotham.bb. IN NS ns1.gotham.bb. +SECTION ADDITIONAL +ns1.gotham.bb. IN A 192.0.1.1 +ENTRY_END + +RANGE_END + +; ff. ------------------------------------------------------------------------ +RANGE_BEGIN 0 100 + ADDRESS 8.8.6.8 + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ff. IN NS +SECTION ANSWER +ff. IN NS ns1.ff. +SECTION ADDITIONAL +ns1.ff. IN A 8.8.6.8 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +gotham.ff. IN A +SECTION AUTHORITY +gotham.ff. IN NS ns1.gotham.ff. +SECTION ADDITIONAL +ns1.gotham.ff. IN A 192.0.5.1 +ENTRY_END + +RANGE_END + +; ns1.gotham.com. ------------------------------------------------------------ +RANGE_BEGIN 0 100 + ADDRESS 192.0.6.1 + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +gotham.com. IN A +SECTION ANSWER +gotham.com. IN A 192.0.6.2 +ENTRY_END + +RANGE_END + +; ns1.gotham.aa. ------------------------------------------------------------- +RANGE_BEGIN 0 100 + ADDRESS 192.0.0.1 + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +gotham.aa. IN A +SECTION ANSWER +gotham.aa. IN A 192.0.0.2 +ENTRY_END + +RANGE_END + +; ns1.gotham.bb. ------------------------------------------------------------- +RANGE_BEGIN 0 100 + ADDRESS 192.0.1.1 + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +gotham.bb. IN A +SECTION ANSWER +gotham.bb. IN A 192.0.1.2 +ENTRY_END + +RANGE_END + +; ns1.gotham.ff. ------------------------------------------------------------- +RANGE_BEGIN 0 100 + ADDRESS 192.0.5.1 + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +gotham.ff. IN A +SECTION ANSWER +gotham.ff. IN A 192.0.5.2 +ENTRY_END + +RANGE_END + +; ---------------------------------------------------------------------------- + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +gotham.com. IN A +ENTRY_END + +STEP 2 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +gotham.com. IN A +SECTION ANSWER +gotham.com. IN A 192.0.6.2 +ENTRY_END + +STEP 10 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +gotham.aa. IN A +ENTRY_END + +STEP 11 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NXDOMAIN +SECTION QUESTION +gotham.aa. IN A +SECTION ANSWER +ENTRY_END + +STEP 20 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +gotham.bb. IN A +ENTRY_END + +STEP 21 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +gotham.bb. IN A +SECTION ANSWER +ENTRY_END + +STEP 30 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +gotham.ff. IN A +ENTRY_END + +STEP 31 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +gotham.ff. IN A +SECTION ANSWER +gotham.ff. IN A 127.0.0.1 +ENTRY_END + +SCENARIO_END From eba7e1a7c70fc20e0995de58815fcc0bffe07db6 Mon Sep 17 00:00:00 2001 From: mb Date: Fri, 27 Nov 2020 10:09:54 +0100 Subject: [PATCH 031/553] rpz: nsdname actions --- services/mesh.c | 2 +- services/rpz.c | 327 ++++++++++++++++++++++++++---------------------- 2 files changed, 179 insertions(+), 150 deletions(-) diff --git a/services/mesh.c b/services/mesh.c index ec2e940a4..b639695fc 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -1219,7 +1219,7 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, * reply_list modification and accounting */ struct mesh_reply* rlist = m->reply_list; - /* RPZ: apply actions */ + /* rpz: apply actions */ rcode = mesh_is_udp(r) && mesh_is_rpz_respip_tcponly_action(m) ? (rcode|BIT_TC) : rcode; diff --git a/services/rpz.c b/services/rpz.c index 646c9093e..2f035e1d6 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -62,39 +62,32 @@ const char* rpz_action_to_string(enum rpz_action a) { switch(a) { - case RPZ_NXDOMAIN_ACTION: return "nxdomain"; - case RPZ_NODATA_ACTION: return "nodata"; - case RPZ_PASSTHRU_ACTION: return "passthru"; - case RPZ_DROP_ACTION: return "drop"; - case RPZ_TCP_ONLY_ACTION: return "tcp_only"; - case RPZ_INVALID_ACTION: return "invalid"; - case RPZ_LOCAL_DATA_ACTION: return "local_data"; - case RPZ_DISABLED_ACTION: return "disabled"; - case RPZ_CNAME_OVERRIDE_ACTION: return "cname_override"; - case RPZ_NO_OVERRIDE_ACTION: return "no_override"; + case RPZ_NXDOMAIN_ACTION: return "rpz-nxdomain"; + case RPZ_NODATA_ACTION: return "rpz-nodata"; + case RPZ_PASSTHRU_ACTION: return "rpz-passthru"; + case RPZ_DROP_ACTION: return "rpz-drop"; + case RPZ_TCP_ONLY_ACTION: return "rpz-tcp-only"; + case RPZ_INVALID_ACTION: return "rpz-invalid"; + case RPZ_LOCAL_DATA_ACTION: return "rpz-local-data"; + case RPZ_DISABLED_ACTION: return "rpz-disabled"; + case RPZ_CNAME_OVERRIDE_ACTION: return "rpz-cname-override"; + case RPZ_NO_OVERRIDE_ACTION: return "rpz-no-override"; + default: return "rpz-unkown-action"; } - return "unknown"; } /** RPZ action enum for config string */ static enum rpz_action rpz_config_to_action(char* a) { - if(strcmp(a, "nxdomain") == 0) - return RPZ_NXDOMAIN_ACTION; - else if(strcmp(a, "nodata") == 0) - return RPZ_NODATA_ACTION; - else if(strcmp(a, "passthru") == 0) - return RPZ_PASSTHRU_ACTION; - else if(strcmp(a, "drop") == 0) - return RPZ_DROP_ACTION; - else if(strcmp(a, "tcp_only") == 0) - return RPZ_TCP_ONLY_ACTION; - else if(strcmp(a, "cname") == 0) - return RPZ_CNAME_OVERRIDE_ACTION; - else if(strcmp(a, "disabled") == 0) - return RPZ_DISABLED_ACTION; - return RPZ_INVALID_ACTION; + if(strcmp(a, "nxdomain") == 0) return RPZ_NXDOMAIN_ACTION; + else if(strcmp(a, "nodata") == 0) return RPZ_NODATA_ACTION; + else if(strcmp(a, "passthru") == 0) return RPZ_PASSTHRU_ACTION; + else if(strcmp(a, "drop") == 0) return RPZ_DROP_ACTION; + else if(strcmp(a, "tcp_only") == 0) return RPZ_TCP_ONLY_ACTION; + else if(strcmp(a, "cname") == 0) return RPZ_CNAME_OVERRIDE_ACTION; + else if(strcmp(a, "disabled") == 0) return RPZ_DISABLED_ACTION; + else return RPZ_INVALID_ACTION; } /** string for RPZ trigger enum */ @@ -102,14 +95,14 @@ static const char* rpz_trigger_to_string(enum rpz_trigger r) { switch(r) { - case RPZ_QNAME_TRIGGER: return "qname"; - case RPZ_CLIENT_IP_TRIGGER: return "client_ip"; - case RPZ_RESPONSE_IP_TRIGGER: return "response_ip"; - case RPZ_NSDNAME_TRIGGER: return "nsdname"; - case RPZ_NSIP_TRIGGER: return "nsip"; - case RPZ_INVALID_TRIGGER: return "invalid"; + case RPZ_QNAME_TRIGGER: return "rpz-qname"; + case RPZ_CLIENT_IP_TRIGGER: return "rpz-client-ip"; + case RPZ_RESPONSE_IP_TRIGGER: return "rpz-response-ip"; + case RPZ_NSDNAME_TRIGGER: return "rpz-nsdname"; + case RPZ_NSIP_TRIGGER: return "rpz-nsip"; + case RPZ_INVALID_TRIGGER: return "rpz-invalid"; + default: return "rpz-unknown-trigger"; } - return "unknown"; } /** @@ -213,15 +206,15 @@ static enum localzone_type rpz_action_to_localzone_type(enum rpz_action a) { switch(a) { - case RPZ_NXDOMAIN_ACTION: return local_zone_always_nxdomain; - case RPZ_NODATA_ACTION: return local_zone_always_nodata; - case RPZ_DROP_ACTION: return local_zone_always_deny; - case RPZ_PASSTHRU_ACTION: return local_zone_always_transparent; + case RPZ_NXDOMAIN_ACTION: return local_zone_always_nxdomain; + case RPZ_NODATA_ACTION: return local_zone_always_nodata; + case RPZ_DROP_ACTION: return local_zone_always_deny; + case RPZ_PASSTHRU_ACTION: return local_zone_always_transparent; case RPZ_LOCAL_DATA_ACTION: /* fallthrough */ case RPZ_CNAME_OVERRIDE_ACTION: return local_zone_redirect; - case RPZ_TCP_ONLY_ACTION: return local_zone_truncate; - case RPZ_INVALID_ACTION: /* fallthrough */ - default: return local_zone_invalid; + case RPZ_TCP_ONLY_ACTION: return local_zone_truncate; + case RPZ_INVALID_ACTION: /* fallthrough */ + default: return local_zone_invalid; } } @@ -229,15 +222,15 @@ enum respip_action rpz_action_to_respip_action(enum rpz_action a) { switch(a) { - case RPZ_NXDOMAIN_ACTION: return respip_always_nxdomain; - case RPZ_NODATA_ACTION: return respip_always_nodata; - case RPZ_DROP_ACTION: return respip_always_deny; - case RPZ_PASSTHRU_ACTION: return respip_always_transparent; - case RPZ_LOCAL_DATA_ACTION: /* fallthrough */ + case RPZ_NXDOMAIN_ACTION: return respip_always_nxdomain; + case RPZ_NODATA_ACTION: return respip_always_nodata; + case RPZ_DROP_ACTION: return respip_always_deny; + case RPZ_PASSTHRU_ACTION: return respip_always_transparent; + case RPZ_LOCAL_DATA_ACTION: /* fallthrough */ case RPZ_CNAME_OVERRIDE_ACTION: return respip_redirect; - case RPZ_TCP_ONLY_ACTION: return respip_truncate; - case RPZ_INVALID_ACTION: /* fallthrough */ - default: return respip_invalid; + case RPZ_TCP_ONLY_ACTION: return respip_truncate; + case RPZ_INVALID_ACTION: /* fallthrough */ + default: return respip_invalid; } } @@ -245,15 +238,14 @@ static enum rpz_action localzone_type_to_rpz_action(enum localzone_type lzt) { switch(lzt) { - case local_zone_always_nxdomain: return RPZ_NXDOMAIN_ACTION; - case local_zone_always_nodata: return RPZ_NODATA_ACTION; - case local_zone_always_deny: return RPZ_DROP_ACTION; - case local_zone_always_transparent: return RPZ_PASSTHRU_ACTION; - case local_zone_redirect: return RPZ_LOCAL_DATA_ACTION; - case local_zone_truncate: return RPZ_TCP_ONLY_ACTION; - case local_zone_invalid: - default: - return RPZ_INVALID_ACTION; + case local_zone_always_nxdomain: return RPZ_NXDOMAIN_ACTION; + case local_zone_always_nodata: return RPZ_NODATA_ACTION; + case local_zone_always_deny: return RPZ_DROP_ACTION; + case local_zone_always_transparent: return RPZ_PASSTHRU_ACTION; + case local_zone_redirect: return RPZ_LOCAL_DATA_ACTION; + case local_zone_truncate: return RPZ_TCP_ONLY_ACTION; + case local_zone_invalid: /* fallthrough */ + default: return RPZ_INVALID_ACTION; } } @@ -261,15 +253,14 @@ enum rpz_action respip_action_to_rpz_action(enum respip_action a) { switch(a) { - case respip_always_nxdomain: return RPZ_NXDOMAIN_ACTION; - case respip_always_nodata: return RPZ_NODATA_ACTION; - case respip_always_deny: return RPZ_DROP_ACTION; - case respip_always_transparent: return RPZ_PASSTHRU_ACTION; - case respip_redirect: return RPZ_LOCAL_DATA_ACTION; - case respip_truncate: return RPZ_TCP_ONLY_ACTION; - case respip_invalid: - default: - return RPZ_INVALID_ACTION; + case respip_always_nxdomain: return RPZ_NXDOMAIN_ACTION; + case respip_always_nodata: return RPZ_NODATA_ACTION; + case respip_always_deny: return RPZ_DROP_ACTION; + case respip_always_transparent: return RPZ_PASSTHRU_ACTION; + case respip_redirect: return RPZ_LOCAL_DATA_ACTION; + case respip_truncate: return RPZ_TCP_ONLY_ACTION; + case respip_invalid: /* fallthrough */ + default: return RPZ_INVALID_ACTION; } } @@ -1297,11 +1288,11 @@ log_rpz_apply(uint8_t* dname, enum rpz_action a, struct query_info* qinfo, dname_str(dname, dnamestr); addr_to_str(&repinfo->addr, repinfo->addrlen, ip, sizeof(ip)); if(log_name) - snprintf(txt, sizeof(txt), "RPZ applied [%s] %s %s %s@%u", + snprintf(txt, sizeof(txt), "rpz: applied [%s] %s %s %s@%u", log_name, dnamestr, rpz_action_to_string(a), ip, (unsigned)port); else - snprintf(txt, sizeof(txt), "RPZ applied %s %s %s@%u", + snprintf(txt, sizeof(txt), "rpz: applied %s %s %s@%u", dnamestr, rpz_action_to_string(a), ip, (unsigned)port); log_nametypeclass(0, txt, qinfo->qname, qinfo->qtype, qinfo->qclass); } @@ -1398,15 +1389,8 @@ rpz_is_udp_query(struct comm_reply* repinfo) { /** encode answer consisting of 1 rrset */ static int -rpz_local_encode(struct query_info* qinfo, - struct module_env* env, - struct edns_data* edns, - struct comm_reply* repinfo, - sldns_buffer* buf, - struct regional* temp, - struct ub_packed_rrset_key* rrset, - int ansec, - int rcode) +rpz_local_encode(struct query_info* qinfo,struct edns_data* edns, sldns_buffer* buf, + struct regional* temp, struct ub_packed_rrset_key* rrset, int ansec, int rcode) { struct reply_info rep; uint16_t udpsize; @@ -1434,6 +1418,7 @@ rpz_local_encode(struct query_info* qinfo, *(uint16_t*)sldns_buffer_begin(buf), sldns_buffer_read_u16_at(buf, 2), edns); } + return 1; } @@ -1451,14 +1436,9 @@ rpz_find_synthesized_rrset(int qtype, struct clientip_synthesized_rr* data) { } static void -rpz_apply_clientip_localdata_action(struct rpz* r, - struct clientip_synthesized_rr* raddr, - struct module_env* env, - struct query_info* qinfo, - struct edns_data* edns, - struct comm_reply* repinfo, - sldns_buffer* buf, - struct regional* temp) +rpz_apply_clientip_localdata_action(struct clientip_synthesized_rr* raddr, + struct query_info* qinfo, struct edns_data* edns, sldns_buffer* buf, + struct regional* temp) { struct local_rrset* rrset; enum rpz_action action = RPZ_INVALID_ACTION; @@ -1496,7 +1476,7 @@ rpz_apply_clientip_localdata_action(struct rpz* r, rp->rk.dname = qinfo->qname; rp->rk.dname_len = qinfo->qname_len; nodata: - rpz_local_encode(qinfo, env, edns, repinfo, buf, temp, rp, rrset_count, rcode); + rpz_local_encode(qinfo, edns, buf, temp, rp, rrset_count, rcode); } static inline struct dns_msg* @@ -1512,7 +1492,7 @@ rpz_dns_msg_new(struct regional* region) } static inline struct dns_msg* -rpz_forge_nodata(struct rpz* r, struct module_qstate* ms) +rpz_synthesize_nodata(struct rpz* ATTR_UNUSED(r), struct module_qstate* ms) { struct dns_msg* msg = rpz_dns_msg_new(ms->region); if(msg == NULL) { return msg; } @@ -1532,7 +1512,7 @@ rpz_forge_nodata(struct rpz* r, struct module_qstate* ms) } static inline struct dns_msg* -rpz_forge_nxdomain(struct rpz* r, struct module_qstate* ms) +rpz_synthesize_nxdomain(struct rpz* ATTR_UNUSED(r), struct module_qstate* ms) { struct dns_msg* msg = rpz_dns_msg_new(ms->region); if(msg == NULL) { return msg; } @@ -1552,7 +1532,7 @@ rpz_forge_nxdomain(struct rpz* r, struct module_qstate* ms) } static inline struct dns_msg* -rpz_forge_localdata(struct rpz* r, struct module_qstate* ms, +rpz_synthesize_localdata(struct rpz* r, struct module_qstate* ms, struct clientip_synthesized_rr* data) { struct dns_msg* msg = NULL; @@ -1564,7 +1544,7 @@ rpz_forge_localdata(struct rpz* r, struct module_qstate* ms, rrset = rpz_find_synthesized_rrset(qi->qtype, data); if(rrset == NULL) { verbose(VERB_ALGO, "rpz: nsip: no matching synthesized data found; resorting to nodata"); - return rpz_forge_nodata(r, ms); + return rpz_synthesize_nodata(r, ms); } msg = rpz_dns_msg_new(ms->region); @@ -1598,6 +1578,57 @@ rpz_forge_localdata(struct rpz* r, struct module_qstate* ms, return msg; } +static int +rpz_synthesize_local_zone(struct module_env* env, struct rpz* r, struct local_zone* z, + enum localzone_type lzt, struct query_info* qinfo, + struct edns_data* edns, sldns_buffer* buf, + struct regional* temp, struct comm_reply* repinfo, + struct ub_server_stats* stats) +{ + struct local_data* ld = NULL; + int ret = 0; + if(r->action_override == RPZ_CNAME_OVERRIDE_ACTION) { + qinfo->local_alias = regional_alloc_zero(temp, sizeof(struct local_rrset)); + if(qinfo->local_alias == NULL) { + return 0; /* out of memory */ + } + qinfo->local_alias->rrset = regional_alloc_init(temp, r->cname_override, + sizeof(*r->cname_override)); + if(qinfo->local_alias->rrset == NULL) { + return 0; /* out of memory */ + } + qinfo->local_alias->rrset->rk.dname = qinfo->qname; + qinfo->local_alias->rrset->rk.dname_len = qinfo->qname_len; + if(r->log) { + log_rpz_apply(z->name, RPZ_CNAME_OVERRIDE_ACTION, + qinfo, repinfo, r->log_name); + } + stats->rpz_action[RPZ_CNAME_OVERRIDE_ACTION]++; + return 0; + } + + if(lzt == local_zone_redirect && local_data_answer(z, env, qinfo, + edns, repinfo, buf, temp, dname_count_labels(qinfo->qname), + &ld, lzt, -1, NULL, 0, NULL, 0)) { + if(r->log) { + log_rpz_apply(z->name, + localzone_type_to_rpz_action(lzt), qinfo, + repinfo, r->log_name); + } + stats->rpz_action[localzone_type_to_rpz_action(lzt)]++; + return !qinfo->local_alias; + } + + ret = local_zones_zone_answer(z, env, qinfo, edns, repinfo, buf, temp, + 0 /* no local data used */, lzt); + if(r->log) { + log_rpz_apply(z->name, localzone_type_to_rpz_action(lzt), + qinfo, repinfo, r->log_name); + } + stats->rpz_action[localzone_type_to_rpz_action(lzt)]++; + return ret; +} + struct clientip_synthesized_rr* rpz_delegation_point_ipbased_trigger_lookup(struct rpz* rpz, struct iter_qstate* is) { @@ -1618,32 +1649,40 @@ rpz_apply_nsip_tigger(struct module_qstate* ms, struct rpz* r,struct clientip_sy enum rpz_action action = raddr->action; struct dns_msg* ret = NULL; + if(r->action_override != RPZ_NO_OVERRIDE_ACTION) { + verbose(VERB_ALGO, "rpz: using override action=%s (replaces=%s)", + rpz_action_to_string(r->action_override), rpz_action_to_string(action)); + action = r->action_override; + } + verbose(VERB_ALGO, "rpz: iterator callback: nsip: apply action=%s", rpz_action_to_string(raddr->action)); if(action == RPZ_LOCAL_DATA_ACTION && raddr->data == NULL) { verbose(VERB_ALGO, "rpz: bug: local-data action but no local data"); - ret = rpz_forge_nodata(r, ms); + ret = rpz_synthesize_nodata(r, ms); goto done; } switch(action) { case RPZ_NXDOMAIN_ACTION: - ret = rpz_forge_nxdomain(r, ms); + ret = rpz_synthesize_nxdomain(r, ms); break; case RPZ_NODATA_ACTION: - ret = rpz_forge_nodata(r, ms); + ret = rpz_synthesize_nodata(r, ms); break; case RPZ_TCP_ONLY_ACTION: - verbose(VERB_ALGO, "rpz: nsip: tcp-only trigger ignored"); + // basically a passthru here but the tcp-only will be + // honored before the query gets send + ms->respip_action_info->action = respip_truncate; ret = NULL; break; case RPZ_DROP_ACTION: - ret = rpz_forge_nodata(r, ms); + ret = rpz_synthesize_nodata(r, ms); ms->is_drop = 1; break; case RPZ_LOCAL_DATA_ACTION: - ret = rpz_forge_localdata(r, ms, raddr); + ret = rpz_synthesize_localdata(r, ms, raddr); break; case RPZ_PASSTHRU_ACTION: ret = NULL; @@ -1663,8 +1702,45 @@ struct dns_msg* rpz_apply_nsdname_trigger(struct module_qstate* ms, struct rpz* r, struct local_zone* z) { struct dns_msg* ret = NULL; + enum rpz_action action = localzone_type_to_rpz_action(z->type); - verbose(VERB_ALGO, "rpz: iterator callback: nsdname: apply action"); + if(r->action_override != RPZ_NO_OVERRIDE_ACTION) { + verbose(VERB_ALGO, "rpz: using override action=%s (replaces=%s)", + rpz_action_to_string(r->action_override), rpz_action_to_string(action)); + action = r->action_override; + } + + verbose(VERB_ALGO, "rpz: nsdame trigger with action=%s", rpz_action_to_string(action)); + + switch(action) { + case RPZ_NXDOMAIN_ACTION: + ret = rpz_synthesize_nxdomain(r, ms); + break; + case RPZ_NODATA_ACTION: + ret = rpz_synthesize_nodata(r, ms); + break; + case RPZ_TCP_ONLY_ACTION: + // basically a passthru here but the tcp-only will be + // honored before the query gets send + ms->respip_action_info->action = respip_truncate; + ret = NULL; + break; + case RPZ_DROP_ACTION: + ret = rpz_synthesize_nodata(r, ms); + ms->is_drop = 1; + break; + case RPZ_LOCAL_DATA_ACTION: + //ret = rpz_synthesize_localdata(r, ms, raddr); + ret = NULL; + break; + case RPZ_PASSTHRU_ACTION: + ret = NULL; + break; + default: + verbose(VERB_ALGO, "rpz: nsip: bug: unhandled or invalid action: '%s'", + rpz_action_to_string(action)); + ret = NULL; + } return ret; } @@ -1771,8 +1847,8 @@ rpz_apply_maybe_clientip_trigger(struct auth_zones* az, struct module_env* env, } stats->rpz_action[client_action]++; if(client_action == RPZ_LOCAL_DATA_ACTION) { - rpz_apply_clientip_localdata_action(*r_out, node, env, - qinfo, edns, repinfo, buf, temp); + rpz_apply_clientip_localdata_action(node, qinfo, edns, + buf, temp); } else { // XXX: log_rpz_apply not possbile because no zone local_zones_zone_answer(NULL /*no zone*/, env, qinfo, edns, @@ -1799,7 +1875,6 @@ rpz_callback_from_worker_request(struct auth_zones* az, struct module_env* env, struct rpz* r = NULL; struct auth_zone* a = NULL; struct local_zone* z = NULL; - struct local_data* ld = NULL; int ret; enum localzone_type lzt; @@ -1819,58 +1894,12 @@ rpz_callback_from_worker_request(struct auth_zones* az, struct module_env* env, lzt = rpz_action_to_localzone_type(r->action_override); } - verbose(VERB_ALGO, "rpz: final client action=%s", + verbose(VERB_ALGO, "rpz: qname trigger with action=%s", rpz_action_to_string(localzone_type_to_rpz_action(lzt))); - if(r->action_override == RPZ_CNAME_OVERRIDE_ACTION) { - qinfo->local_alias = - regional_alloc_zero(temp, sizeof(struct local_rrset)); - if(!qinfo->local_alias) { - lock_rw_unlock(&z->lock); - lock_rw_unlock(&a->lock); - return 0; /* out of memory */ - } - qinfo->local_alias->rrset = - regional_alloc_init(temp, r->cname_override, - sizeof(*r->cname_override)); - if(!qinfo->local_alias->rrset) { - lock_rw_unlock(&z->lock); - lock_rw_unlock(&a->lock); - return 0; /* out of memory */ - } - qinfo->local_alias->rrset->rk.dname = qinfo->qname; - qinfo->local_alias->rrset->rk.dname_len = qinfo->qname_len; - if(r->log) { - log_rpz_apply(z->name, RPZ_CNAME_OVERRIDE_ACTION, - qinfo, repinfo, r->log_name); - } - stats->rpz_action[RPZ_CNAME_OVERRIDE_ACTION]++; - lock_rw_unlock(&z->lock); - lock_rw_unlock(&a->lock); - return 0; - } + ret = rpz_synthesize_local_zone(env, r, z, lzt, qinfo, edns, buf, temp, + repinfo, stats); - if(lzt == local_zone_redirect && local_data_answer(z, env, qinfo, - edns, repinfo, buf, temp, dname_count_labels(qinfo->qname), - &ld, lzt, -1, NULL, 0, NULL, 0)) { - if(r->log) { - log_rpz_apply(z->name, - localzone_type_to_rpz_action(lzt), qinfo, - repinfo, r->log_name); - } - stats->rpz_action[localzone_type_to_rpz_action(lzt)]++; - lock_rw_unlock(&z->lock); - lock_rw_unlock(&a->lock); - return !qinfo->local_alias; - } - - ret = local_zones_zone_answer(z, env, qinfo, edns, repinfo, buf, temp, - 0 /* no local data used */, lzt); - if(r->log) { - log_rpz_apply(z->name, localzone_type_to_rpz_action(lzt), - qinfo, repinfo, r->log_name); - } - stats->rpz_action[localzone_type_to_rpz_action(lzt)]++; lock_rw_unlock(&z->lock); lock_rw_unlock(&a->lock); From 8fce4ff27a07cd28f8651e23a365ac1481c0feda Mon Sep 17 00:00:00 2001 From: mb Date: Fri, 27 Nov 2020 10:46:54 +0100 Subject: [PATCH 032/553] rpz: continue nsdname and minor cleanups --- services/rpz.c | 97 ++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 74 insertions(+), 23 deletions(-) diff --git a/services/rpz.c b/services/rpz.c index 2f035e1d6..56677cb99 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -1532,20 +1532,14 @@ rpz_synthesize_nxdomain(struct rpz* ATTR_UNUSED(r), struct module_qstate* ms) } static inline struct dns_msg* -rpz_synthesize_localdata(struct rpz* r, struct module_qstate* ms, - struct clientip_synthesized_rr* data) +rpz_synthesize_localdata_from_rrset(struct rpz* ATTR_UNUSED(r), struct module_qstate* ms, + struct local_rrset* rrset) { struct dns_msg* msg = NULL; struct query_info* qi = &ms->qinfo; - struct ub_packed_rrset_key* rp; - struct local_rrset* rrset; struct reply_info* new_reply_info; + struct ub_packed_rrset_key* rp; - rrset = rpz_find_synthesized_rrset(qi->qtype, data); - if(rrset == NULL) { - verbose(VERB_ALGO, "rpz: nsip: no matching synthesized data found; resorting to nodata"); - return rpz_synthesize_nodata(r, ms); - } msg = rpz_dns_msg_new(ms->region); if(msg == NULL) { return NULL; } @@ -1578,12 +1572,64 @@ rpz_synthesize_localdata(struct rpz* r, struct module_qstate* ms, return msg; } +static inline struct dns_msg* +rpz_synthesize_localdata(struct rpz* r, struct module_qstate* ms, + struct clientip_synthesized_rr* data) +{ + struct query_info* qi = &ms->qinfo; + struct local_rrset* rrset; + + rrset = rpz_find_synthesized_rrset(qi->qtype, data); + if(rrset == NULL) { + verbose(VERB_ALGO, "rpz: nsip: no matching synthesized data found; resorting to nodata"); + return rpz_synthesize_nodata(r, ms); + } + + return rpz_synthesize_localdata_from_rrset(r, ms, rrset); +} + +// copy'n'pase from localzone.c +static struct local_rrset* +local_data_find_type(struct local_data* data, uint16_t type, int alias_ok) +{ + struct local_rrset* p; + type = htons(type); + for(p = data->rrsets; p; p = p->next) { + if(p->rrset->rk.type == type) + return p; + if(alias_ok && p->rrset->rk.type == htons(LDNS_RR_TYPE_CNAME)) + return p; + } + return NULL; +} + +static inline struct dns_msg* +rpz_synthesize_nsdname_localdata(struct rpz* r, struct module_qstate* ms, struct local_zone* z) { + struct query_info* qi = &ms->qinfo; + struct local_data key; + struct local_data* ld; + struct local_rrset* rrset; + + ld = (struct local_data*)rbtree_search(&z->data, &key.node); + if(ld == NULL) { + verbose(VERB_ALGO, "rpz: impossible: dname not found"); + return NULL; + } + + rrset = local_data_find_type(ld, qi->qtype, 1); + if(rrset == NULL) { + verbose(VERB_ALGO, "rpz: no matching localdata found"); + return NULL; + } + + return rpz_synthesize_localdata_from_rrset(r, ms, rrset); +} + static int -rpz_synthesize_local_zone(struct module_env* env, struct rpz* r, struct local_zone* z, - enum localzone_type lzt, struct query_info* qinfo, - struct edns_data* edns, sldns_buffer* buf, - struct regional* temp, struct comm_reply* repinfo, - struct ub_server_stats* stats) +rpz_synthesize_qname_localdata(struct module_env* env, struct rpz* r, + struct local_zone* z, enum localzone_type lzt, struct query_info* qinfo, + struct edns_data* edns, sldns_buffer* buf, struct regional* temp, + struct comm_reply* repinfo, struct ub_server_stats* stats) { struct local_data* ld = NULL; int ret = 0; @@ -1635,16 +1681,20 @@ rpz_delegation_point_ipbased_trigger_lookup(struct rpz* rpz, struct iter_qstate* struct delegpt_addr* cursor; struct clientip_synthesized_rr* action = NULL; if(is->dp == NULL) { return NULL; } - for(cursor = is->dp->target_list; cursor != NULL; cursor = cursor->next_target) { + for(cursor = is->dp->target_list; + cursor != NULL; + cursor = cursor->next_target) { if(cursor->bogus) { continue; } - action = rpz_ipbased_trigger_lookup(rpz->ns_set, &cursor->addr, cursor->addrlen); + action = rpz_ipbased_trigger_lookup(rpz->ns_set, &cursor->addr, + cursor->addrlen); if(action != NULL) { return action; } } return NULL; } struct dns_msg* -rpz_apply_nsip_tigger(struct module_qstate* ms, struct rpz* r,struct clientip_synthesized_rr* raddr) +rpz_apply_nsip_trigger(struct module_qstate* ms, struct rpz* r, + struct clientip_synthesized_rr* raddr) { enum rpz_action action = raddr->action; struct dns_msg* ret = NULL; @@ -1659,7 +1709,7 @@ rpz_apply_nsip_tigger(struct module_qstate* ms, struct rpz* r,struct clientip_sy rpz_action_to_string(raddr->action)); if(action == RPZ_LOCAL_DATA_ACTION && raddr->data == NULL) { - verbose(VERB_ALGO, "rpz: bug: local-data action but no local data"); + verbose(VERB_ALGO, "rpz: bug: nsip local-data action but no local data"); ret = rpz_synthesize_nodata(r, ms); goto done; } @@ -1683,6 +1733,7 @@ rpz_apply_nsip_tigger(struct module_qstate* ms, struct rpz* r,struct clientip_sy break; case RPZ_LOCAL_DATA_ACTION: ret = rpz_synthesize_localdata(r, ms, raddr); + if(ret == NULL) { ret = rpz_synthesize_nodata(r, ms); } break; case RPZ_PASSTHRU_ACTION: ret = NULL; @@ -1730,8 +1781,8 @@ rpz_apply_nsdname_trigger(struct module_qstate* ms, struct rpz* r, struct local_ ms->is_drop = 1; break; case RPZ_LOCAL_DATA_ACTION: - //ret = rpz_synthesize_localdata(r, ms, raddr); - ret = NULL; + ret = rpz_synthesize_nsdname_localdata(r, ms, z); + if(ret == NULL) { ret = rpz_synthesize_nodata(r, ms); } break; case RPZ_PASSTHRU_ACTION: ret = NULL; @@ -1812,7 +1863,7 @@ rpz_callback_from_iterator_module(struct module_qstate* ms, struct iter_qstate* lock_rw_unlock(&az->rpz_lock); if(raddr == NULL && z == NULL) { return NULL; } - else if(raddr != NULL) { return rpz_apply_nsip_tigger(ms, r, raddr); } + else if(raddr != NULL) { return rpz_apply_nsip_trigger(ms, r, raddr); } else if(z != NULL) { return rpz_apply_nsdname_trigger(ms, r, z); } else { return NULL; } } @@ -1897,8 +1948,8 @@ rpz_callback_from_worker_request(struct auth_zones* az, struct module_env* env, verbose(VERB_ALGO, "rpz: qname trigger with action=%s", rpz_action_to_string(localzone_type_to_rpz_action(lzt))); - ret = rpz_synthesize_local_zone(env, r, z, lzt, qinfo, edns, buf, temp, - repinfo, stats); + ret = rpz_synthesize_qname_localdata(env, r, z, lzt, qinfo, edns, buf, temp, + repinfo, stats); lock_rw_unlock(&z->lock); lock_rw_unlock(&a->lock); From 842c9bfc4116b7247d5b2f0bf1726b0ad7700b7f Mon Sep 17 00:00:00 2001 From: mb Date: Fri, 27 Nov 2020 10:52:01 +0100 Subject: [PATCH 033/553] rpz: cleanups --- services/rpz.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/services/rpz.c b/services/rpz.c index 56677cb99..f8f71f1d4 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -1573,7 +1573,7 @@ rpz_synthesize_localdata_from_rrset(struct rpz* ATTR_UNUSED(r), struct module_qs } static inline struct dns_msg* -rpz_synthesize_localdata(struct rpz* r, struct module_qstate* ms, +rpz_synthesize_nsip_localdata(struct rpz* r, struct module_qstate* ms, struct clientip_synthesized_rr* data) { struct query_info* qi = &ms->qinfo; @@ -1581,8 +1581,8 @@ rpz_synthesize_localdata(struct rpz* r, struct module_qstate* ms, rrset = rpz_find_synthesized_rrset(qi->qtype, data); if(rrset == NULL) { - verbose(VERB_ALGO, "rpz: nsip: no matching synthesized data found; resorting to nodata"); - return rpz_synthesize_nodata(r, ms); + verbose(VERB_ALGO, "rpz: nsip: no matching local data found"); + return NULL; } return rpz_synthesize_localdata_from_rrset(r, ms, rrset); @@ -1618,7 +1618,7 @@ rpz_synthesize_nsdname_localdata(struct rpz* r, struct module_qstate* ms, struct rrset = local_data_find_type(ld, qi->qtype, 1); if(rrset == NULL) { - verbose(VERB_ALGO, "rpz: no matching localdata found"); + verbose(VERB_ALGO, "rpz: nsdname: no matching local data found"); return NULL; } @@ -1709,7 +1709,7 @@ rpz_apply_nsip_trigger(struct module_qstate* ms, struct rpz* r, rpz_action_to_string(raddr->action)); if(action == RPZ_LOCAL_DATA_ACTION && raddr->data == NULL) { - verbose(VERB_ALGO, "rpz: bug: nsip local-data action but no local data"); + verbose(VERB_ALGO, "rpz: bug: nsip local data action but no local data"); ret = rpz_synthesize_nodata(r, ms); goto done; } @@ -1732,7 +1732,7 @@ rpz_apply_nsip_trigger(struct module_qstate* ms, struct rpz* r, ms->is_drop = 1; break; case RPZ_LOCAL_DATA_ACTION: - ret = rpz_synthesize_localdata(r, ms, raddr); + ret = rpz_synthesize_nsip_localdata(r, ms, raddr); if(ret == NULL) { ret = rpz_synthesize_nodata(r, ms); } break; case RPZ_PASSTHRU_ACTION: From 78bcfdee64b20f6bc67e121433034f058b264f42 Mon Sep 17 00:00:00 2001 From: mb Date: Fri, 27 Nov 2020 12:22:56 +0100 Subject: [PATCH 034/553] rpz: fix local data lookup for nsdname --- services/rpz.c | 56 ++++++++++++++++++++++++++++++---------- testdata/rpz_nsdname.rpl | 2 +- 2 files changed, 43 insertions(+), 15 deletions(-) diff --git a/services/rpz.c b/services/rpz.c index f8f71f1d4..777007b42 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -57,6 +57,11 @@ typedef struct resp_addr rpz_aclnode_type; +struct matched_delegation_point { + uint8_t* dname; + size_t dname_len; +}; + /** string for RPZ action enum */ const char* rpz_action_to_string(enum rpz_action a) @@ -1468,7 +1473,7 @@ rpz_apply_clientip_localdata_action(struct clientip_synthesized_rr* raddr, rp = respip_copy_rrset(rrset->rrset, temp); if(!rp) { - verbose(VERB_ALGO, "rpz: local-data action: out of memory"); + verbose(VERB_ALGO, "rpz: local data action: out of memory"); return; } @@ -1588,13 +1593,14 @@ rpz_synthesize_nsip_localdata(struct rpz* r, struct module_qstate* ms, return rpz_synthesize_localdata_from_rrset(r, ms, rrset); } -// copy'n'pase from localzone.c +// copy'n'paste from localzone.c static struct local_rrset* local_data_find_type(struct local_data* data, uint16_t type, int alias_ok) { struct local_rrset* p; type = htons(type); for(p = data->rrsets; p; p = p->next) { + verbose(VERB_ALGO, "type=%d (%d)", type, p->rrset->rk.type); if(p->rrset->rk.type == type) return p; if(alias_ok && p->rrset->rk.type == htons(LDNS_RR_TYPE_CNAME)) @@ -1603,20 +1609,31 @@ local_data_find_type(struct local_data* data, uint16_t type, int alias_ok) return NULL; } +// based on localzone.c:local_data_answer() static inline struct dns_msg* -rpz_synthesize_nsdname_localdata(struct rpz* r, struct module_qstate* ms, struct local_zone* z) { - struct query_info* qi = &ms->qinfo; +rpz_synthesize_nsdname_localdata(struct rpz* r, struct module_qstate* ms, + struct local_zone* z, struct matched_delegation_point const* match) +{ struct local_data key; struct local_data* ld; struct local_rrset* rrset; + if(match->dname == NULL) { return NULL; } + + key.node.key = &key; + key.name = match->dname; + key.namelen = match->dname_len; + key.namelabs = dname_count_labels(match->dname); + + rpz_log_dname("nsdname local data", key.name, key.namelen); + ld = (struct local_data*)rbtree_search(&z->data, &key.node); if(ld == NULL) { - verbose(VERB_ALGO, "rpz: impossible: dname not found"); + verbose(VERB_ALGO, "rpz: nsdname: impossible: qname not found"); return NULL; } - rrset = local_data_find_type(ld, qi->qtype, 1); + rrset = local_data_find_type(ld, ms->qinfo.qtype, 1); if(rrset == NULL) { verbose(VERB_ALGO, "rpz: nsdname: no matching local data found"); return NULL; @@ -1750,7 +1767,8 @@ done: } struct dns_msg* -rpz_apply_nsdname_trigger(struct module_qstate* ms, struct rpz* r, struct local_zone* z) +rpz_apply_nsdname_trigger(struct module_qstate* ms, struct rpz* r, + struct local_zone* z, struct matched_delegation_point const* match) { struct dns_msg* ret = NULL; enum rpz_action action = localzone_type_to_rpz_action(z->type); @@ -1781,7 +1799,7 @@ rpz_apply_nsdname_trigger(struct module_qstate* ms, struct rpz* r, struct local_ ms->is_drop = 1; break; case RPZ_LOCAL_DATA_ACTION: - ret = rpz_synthesize_nsdname_localdata(r, ms, z); + ret = rpz_synthesize_nsdname_localdata(r, ms, z, match); if(ret == NULL) { ret = rpz_synthesize_nodata(r, ms); } break; case RPZ_PASSTHRU_ACTION: @@ -1797,7 +1815,10 @@ rpz_apply_nsdname_trigger(struct module_qstate* ms, struct rpz* r, struct local_ } static struct local_zone* -rpz_delegation_point_zone_lookup(struct delegpt* dp, struct local_zones* zones, uint16_t qclass) +rpz_delegation_point_zone_lookup(struct delegpt* dp, struct local_zones* zones, + uint16_t qclass, + /* output parameter */ + struct matched_delegation_point* match) { struct delegpt_ns* nameserver; struct local_zone* z = NULL; @@ -1805,15 +1826,21 @@ rpz_delegation_point_zone_lookup(struct delegpt* dp, struct local_zones* zones, rpz_log_dname("delegation point", dp->name, dp->namelen); // XXX: do we want this? z = rpz_find_zone(zones, dp->name, dp->namelen, qclass, 0, 0, 0); - - if(z == NULL) { + if(z != NULL) { + match->dname = dp->name; + match->dname_len = dp->namelen; + } else if(z == NULL) { for(nameserver = dp->nslist; nameserver != NULL; nameserver = nameserver->next) { rpz_log_dname("delegation point", nameserver->name, nameserver->namelen); z = rpz_find_zone(zones, nameserver->name, nameserver->namelen, qclass, 0, 0, 0); - if(z != NULL) { break; } + if(z != NULL) { + match->dname = nameserver->name; + match->dname_len = nameserver->namelen; + break; + } } } @@ -1830,6 +1857,7 @@ rpz_callback_from_iterator_module(struct module_qstate* ms, struct iter_qstate* struct clientip_synthesized_rr* raddr = NULL; struct rpz* r; struct local_zone* z = NULL; + struct matched_delegation_point match = {0}; if(ms->env == NULL || ms->env->auth_zones == NULL) { return 0; } @@ -1852,7 +1880,7 @@ rpz_callback_from_iterator_module(struct module_qstate* ms, struct iter_qstate* } z = rpz_delegation_point_zone_lookup(is->dp, r->nsdname_zones, - ms->qinfo.qclass); + ms->qinfo.qclass, &match); if(z != NULL) { lock_rw_unlock(&a->lock); break; @@ -1864,7 +1892,7 @@ rpz_callback_from_iterator_module(struct module_qstate* ms, struct iter_qstate* if(raddr == NULL && z == NULL) { return NULL; } else if(raddr != NULL) { return rpz_apply_nsip_trigger(ms, r, raddr); } - else if(z != NULL) { return rpz_apply_nsdname_trigger(ms, r, z); } + else if(z != NULL) { return rpz_apply_nsdname_trigger(ms, r, z, &match); } else { return NULL; } } diff --git a/testdata/rpz_nsdname.rpl b/testdata/rpz_nsdname.rpl index 7587ccfe5..64fb98880 100644 --- a/testdata/rpz_nsdname.rpl +++ b/testdata/rpz_nsdname.rpl @@ -21,7 +21,7 @@ gotham.bb.rpz-nsdname CNAME *. gotham.cc.rpz-nsdname CNAME rpz-drop. gotham.com.rpz-nsdname CNAME rpz-passthru. gotham.dd.rpz-nsdname CNAME rpz-tcp-only. -gotham.ee.rpz-nsdname A 127.0.0.1 +gotham.ff.rpz-nsdname A 127.0.0.1 gotham.ff.rpz-nsdname TXT "42" TEMPFILE_END From 15b46257e1aee908d83de1b0342c620d0c6da32c Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 14 Jan 2021 13:49:42 +0100 Subject: [PATCH 035/553] - fix that testdata/rpz_clientip.rpl trigger tests succeed. --- services/rpz.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/services/rpz.c b/services/rpz.c index 0d825238f..b89583e8e 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -1356,7 +1356,7 @@ rpz_resolve_client_action_and_zone(struct auth_zones* az, struct query_info* qin z = rpz_find_zone(r->local_zones, qinfo->qname, qinfo->qname_len, qinfo->qclass, 0, 0, 0); node = rpz_ipbased_trigger_lookup(r->client_set, &repinfo->addr, repinfo->addrlen); - if(z && r->action_override == RPZ_DISABLED_ACTION) { + if((z || node) && r->action_override == RPZ_DISABLED_ACTION) { if(r->log) log_rpz_apply(z->name, r->action_override, @@ -1366,7 +1366,7 @@ rpz_resolve_client_action_and_zone(struct auth_zones* az, struct query_info* qin lock_rw_unlock(&z->lock); z = NULL; } - if(z) { + if(z || node) { break; } else { if(node != NULL) { @@ -1913,7 +1913,7 @@ rpz_apply_maybe_clientip_trigger(struct auth_zones* az, struct module_env* env, struct clientip_synthesized_rr* node = rpz_resolve_client_action_and_zone( az, qinfo, repinfo, taglist, taglen, stats, z_out, a_out, r_out); - client_action = node == NULL ? RPZ_INVALID_ACTION : node->action; + client_action = ((node == NULL) ? RPZ_INVALID_ACTION : node->action); verbose(VERB_ALGO, "rpz: qname trigger: client action=%s", rpz_action_to_string(client_action)); From 5e00d516fe9d0f5da94866657232d5497bebfa82 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 14 Jan 2021 15:31:17 +0100 Subject: [PATCH 036/553] - fix that testdata/rpz_qname.rpl trigger tests succeed. --- testdata/rpz_qname.rpl | 41 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 36 insertions(+), 5 deletions(-) diff --git a/testdata/rpz_qname.rpl b/testdata/rpz_qname.rpl index 4f17f8577..dd47f188a 100644 --- a/testdata/rpz_qname.rpl +++ b/testdata/rpz_qname.rpl @@ -47,12 +47,15 @@ stub-zone: stub-zone: name: "example." stub-addr: 10.20.30.50 +stub-zone: + name: "tcp." + stub-addr: 10.20.30.60 CONFIG_END SCENARIO_BEGIN Test all support RPZ action for QNAME trigger ; a. -RANGE_BEGIN 0 100 +RANGE_BEGIN 0 1000 ADDRESS 10.20.30.40 ENTRY_BEGIN MATCH opcode qtype qname @@ -89,7 +92,7 @@ ENTRY_END RANGE_END ; example. -RANGE_BEGIN 0 100 +RANGE_BEGIN 0 1000 ADDRESS 10.20.30.50 ENTRY_BEGIN MATCH opcode qtype qname @@ -125,6 +128,32 @@ ENTRY_END RANGE_END +; tcp. +RANGE_BEGIN 0 1000 + ADDRESS 10.20.30.60 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +tcp. IN NS +SECTION ANSWER +tcp. IN NS ns.example. +SECTION ADDITIONAL +ns.tcp IN A 10.20.30.60 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +tcp. IN TXT +SECTION ANSWER +tcp. IN TXT "tcp. answer from upstream ns" +ENTRY_END +RANGE_END + STEP 10 QUERY ENTRY_BEGIN REPLY RD @@ -306,6 +335,7 @@ ENTRY_END STEP 95 QUERY ENTRY_BEGIN +REPLY RD SECTION QUESTION tcp. IN TXT ENTRY_END @@ -313,7 +343,7 @@ ENTRY_END STEP 96 CHECK_ANSWER ENTRY_BEGIN MATCH all -REPLY QR RA AA TC NOERROR +REPLY QR RD RA AA TC NOERROR SECTION QUESTION tcp. IN TXT SECTION ANSWER @@ -322,6 +352,7 @@ ENTRY_END STEP 97 QUERY ENTRY_BEGIN MATCH TCP +REPLY RD SECTION QUESTION tcp. IN TXT ENTRY_END @@ -329,11 +360,11 @@ ENTRY_END STEP 98 CHECK_ANSWER ENTRY_BEGIN MATCH all TCP -REPLY QR RD RA AA NOERROR +REPLY QR RD RA NOERROR SECTION QUESTION tcp. IN TXT SECTION ANSWER -tcp. IN TXT "local tcp data 2nd zone" +tcp. IN TXT "tcp. answer from upstream ns" ENTRY_END ; no answer is checked at exit of testbound. From 5c760a13a4a5d50af30e22f227087b23445f0541 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 14 Jan 2021 15:31:33 +0100 Subject: [PATCH 037/553] - rpz trigger, unlock and remove node when rpz is disabled with action override. --- services/rpz.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/services/rpz.c b/services/rpz.c index b89583e8e..00f3b5a3d 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -1365,6 +1365,10 @@ rpz_resolve_client_action_and_zone(struct auth_zones* az, struct query_info* qin stats->rpz_action[r->action_override]++; lock_rw_unlock(&z->lock); z = NULL; + if(node != NULL) { + lock_rw_unlock(&node->lock); + node = NULL; + } } if(z || node) { break; From a190fc436f8b3650bee31b5b8bc37a800369572a Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Tue, 9 Mar 2021 11:03:54 +0200 Subject: [PATCH 038/553] unbound_munin_: remove trailing white space --- contrib/unbound_munin_ | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/unbound_munin_ b/contrib/unbound_munin_ index defca291c..3161f25e9 100755 --- a/contrib/unbound_munin_ +++ b/contrib/unbound_munin_ @@ -126,7 +126,7 @@ get_state ( ) { # obtain lock for fetching the state # because there is a race condition in fetching and writing to file - # see if the lock is stale, if so, take it + # see if the lock is stale, if so, take it if test -f $lock ; then pid="`cat $lock 2>&1`" kill -0 "$pid" >/dev/null 2>&1 From e1caa764b889b0d42b417866338174f3091473b3 Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Tue, 9 Mar 2021 11:09:45 +0200 Subject: [PATCH 039/553] unbound_munin_: use Munin's helper script to detect state file location --- contrib/unbound_munin_ | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/contrib/unbound_munin_ b/contrib/unbound_munin_ index 3161f25e9..6956d09a4 100755 --- a/contrib/unbound_munin_ +++ b/contrib/unbound_munin_ @@ -14,7 +14,6 @@ # Run the command unbound-control-setup to generate the key files. # # Environment variables for this script -# statefile - where to put temporary statefile. # unbound_conf - where the unbound.conf file is located. # unbound_control - where to find unbound-control executable. # spoof_warn - what level to warn about spoofing @@ -24,7 +23,6 @@ # with: # [unbound*] # user root -# env.statefile /usr/local/var/munin/plugin-state/unbound-state # env.unbound_conf /usr/local/etc/unbound/unbound.conf # env.unbound_control /usr/local/sbin/unbound-control # env.spoof_warn 1000 @@ -66,7 +64,6 @@ System with unbound daemon. [unbound*] user root - env.statefile /usr/local/var/munin/plugin-state/unbound-state env.unbound_conf /usr/local/etc/unbound/unbound.conf env.unbound_control /usr/local/sbin/unbound-control env.spoof_warn 1000 @@ -98,7 +95,8 @@ BSD =cut -state=${statefile:-/usr/local/var/munin/plugin-state/unbound-state} +. ${MUNIN_LIBDIR}/plugins/plugin.sh +state="${MUNIN_PLUGSTATE}/unbound.state" conf=${unbound_conf:-/usr/local/etc/unbound/unbound.conf} ctrl=${unbound_control:-/usr/local/sbin/unbound-control} warn=${spoof_warn:-1000} From 69e215b6301ea23a8b9217497c61a4401746777d Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Tue, 9 Mar 2021 12:03:51 +0200 Subject: [PATCH 040/553] unbound_munin: fix statistics after unbound restart / server reboot "unbound-control stats" lists only query types that has been seen after unbound restart. Munin requires list of all types ever seen, or the generated graphs are mostly empty after restart. Fix this by adding a state file with list of seen query types etc. --- contrib/unbound_munin_ | 46 ++++++++++++++++++++++++------------------ 1 file changed, 26 insertions(+), 20 deletions(-) diff --git a/contrib/unbound_munin_ b/contrib/unbound_munin_ index 6956d09a4..d4660f4b4 100755 --- a/contrib/unbound_munin_ +++ b/contrib/unbound_munin_ @@ -97,6 +97,7 @@ BSD . ${MUNIN_LIBDIR}/plugins/plugin.sh state="${MUNIN_PLUGSTATE}/unbound.state" +seentags="${MUNIN_PLUGSTATE}/unbound-seentags.state" conf=${unbound_conf:-/usr/local/etc/unbound/unbound.conf} ctrl=${unbound_control:-/usr/local/sbin/unbound-control} warn=${spoof_warn:-1000} @@ -119,6 +120,18 @@ get_value ( ) { fi } +# Update list of seen query types etc to seentags file. This is run while +# holding the lock, after the state file is updated. +update_seentags() { + tmplist="$(cat ${seentags} 2> /dev/null) +num.query.type.A +num.query.class.IN +num.query.opcode.QUERY +num.answer.rcode.NOERROR +" + (echo "${tmplist}"; grep ^num ${state} | sed -e 's/=.*//') | sort -u > ${seentags} +} + # download the state from the unbound server. get_state ( ) { # obtain lock for fetching the state @@ -166,6 +179,7 @@ get_state ( ) { rm -f $lock exit 1 fi + update_seentags rm -f $lock } @@ -282,8 +296,7 @@ if test "$1" = "config" ; then echo "graph_vlabel queries / \${graph_period}" echo "graph_scale no" echo "graph_category DNS" - for x in `grep "^num.query.type" $state`; do - nm=`echo $x | sed -e 's/=.*$//'` + for nm in `grep "^num.query.type" $seentags`; do tp=`echo $nm | sed -e s/num.query.type.//` p_config "$nm" "$tp" "ABSOLUTE" done @@ -295,8 +308,7 @@ if test "$1" = "config" ; then echo "graph_vlabel queries / \${graph_period}" echo "graph_scale no" echo "graph_category DNS" - for x in `grep "^num.query.class" $state`; do - nm=`echo $x | sed -e 's/=.*$//'` + for nm in `grep "^num.query.class" $seentags`; do tp=`echo $nm | sed -e s/num.query.class.//` p_config "$nm" "$tp" "ABSOLUTE" done @@ -308,8 +320,7 @@ if test "$1" = "config" ; then echo "graph_vlabel queries / \${graph_period}" echo "graph_scale no" echo "graph_category DNS" - for x in `grep "^num.query.opcode" $state`; do - nm=`echo $x | sed -e 's/=.*$//'` + for nm in `grep "^num.query.opcode" $seentags`; do tp=`echo $nm | sed -e s/num.query.opcode.//` p_config "$nm" "$tp" "ABSOLUTE" done @@ -321,8 +332,7 @@ if test "$1" = "config" ; then echo "graph_vlabel answer packets / \${graph_period}" echo "graph_scale no" echo "graph_category DNS" - for x in `grep "^num.answer.rcode" $state`; do - nm=`echo $x | sed -e 's/=.*$//'` + for nm in `grep "^num.answer.rcode" $seentags`; do tp=`echo $nm | sed -e s/num.answer.rcode.//` p_config "$nm" "$tp" "ABSOLUTE" done @@ -465,27 +475,23 @@ memory) done ;; by_type) - for x in `grep "^num.query.type" $state`; do - nm=`echo $x | sed -e 's/=.*$//'` - print_value_line $nm $x + for nm in `grep "^num.query.type" $seentags`; do + print_value $nm done ;; by_class) - for x in `grep "^num.query.class" $state`; do - nm=`echo $x | sed -e 's/=.*$//'` - print_value_line $nm $x + for nm in `grep "^num.query.class" $seentags`; do + print_value $nm done ;; by_opcode) - for x in `grep "^num.query.opcode" $state`; do - nm=`echo $x | sed -e 's/=.*$//'` - print_value_line $nm $x + for nm in `grep "^num.query.opcode" $seentags`; do + print_value $nm done ;; by_rcode) - for x in `grep "^num.answer.rcode" $state`; do - nm=`echo $x | sed -e 's/=.*$//'` - print_value_line $nm $x + for nm in `grep "^num.answer.rcode" $seentags`; do + print_value $nm $x done print_value "num.answer.secure" print_value "num.answer.bogus" From 534a1a42c92f32c94ec478f1a74e4b5e22c2eb45 Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Tue, 9 Mar 2021 12:20:55 +0200 Subject: [PATCH 041/553] unbound_munin: Munin categories are lower case --- contrib/unbound_munin_ | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/contrib/unbound_munin_ b/contrib/unbound_munin_ index d4660f4b4..82e6d1522 100755 --- a/contrib/unbound_munin_ +++ b/contrib/unbound_munin_ @@ -244,7 +244,7 @@ if test "$1" = "config" ; then echo "graph_args --base 1000 -l 0" echo "graph_vlabel queries / \${graph_period}" echo "graph_scale no" - echo "graph_category DNS" + echo "graph_category dns" for x in `grep "^thread[0-9][0-9]*\.num\.queries=" $state | sed -e 's/=.*//'`; do exist_config $x "queries handled by `basename $x .num.queries`" @@ -268,7 +268,7 @@ if test "$1" = "config" ; then echo "graph_args --base 1000 -l 0" echo "graph_vlabel number of queries" echo "graph_scale no" - echo "graph_category DNS" + echo "graph_category dns" p_config "total.requestlist.avg" "Average size of queue on insert" "GAUGE" p_config "total.requestlist.max" "Max size of queue (in 5 min)" "GAUGE" p_config "total.requestlist.overwritten" "Number of queries replaced by new ones" "GAUGE" @@ -279,7 +279,7 @@ if test "$1" = "config" ; then echo "graph_title Unbound memory usage" echo "graph_args --base 1024 -l 0" echo "graph_vlabel memory used in bytes" - echo "graph_category DNS" + echo "graph_category dns" p_config "mem.cache.rrset" "RRset cache memory" "GAUGE" p_config "mem.cache.message" "Message cache memory" "GAUGE" p_config "mem.mod.iterator" "Iterator module memory" "GAUGE" @@ -295,7 +295,7 @@ if test "$1" = "config" ; then echo "graph_args --base 1000 -l 0" echo "graph_vlabel queries / \${graph_period}" echo "graph_scale no" - echo "graph_category DNS" + echo "graph_category dns" for nm in `grep "^num.query.type" $seentags`; do tp=`echo $nm | sed -e s/num.query.type.//` p_config "$nm" "$tp" "ABSOLUTE" @@ -307,7 +307,7 @@ if test "$1" = "config" ; then echo "graph_args --base 1000 -l 0" echo "graph_vlabel queries / \${graph_period}" echo "graph_scale no" - echo "graph_category DNS" + echo "graph_category dns" for nm in `grep "^num.query.class" $seentags`; do tp=`echo $nm | sed -e s/num.query.class.//` p_config "$nm" "$tp" "ABSOLUTE" @@ -319,7 +319,7 @@ if test "$1" = "config" ; then echo "graph_args --base 1000 -l 0" echo "graph_vlabel queries / \${graph_period}" echo "graph_scale no" - echo "graph_category DNS" + echo "graph_category dns" for nm in `grep "^num.query.opcode" $seentags`; do tp=`echo $nm | sed -e s/num.query.opcode.//` p_config "$nm" "$tp" "ABSOLUTE" @@ -331,7 +331,7 @@ if test "$1" = "config" ; then echo "graph_args --base 1000 -l 0" echo "graph_vlabel answer packets / \${graph_period}" echo "graph_scale no" - echo "graph_category DNS" + echo "graph_category dns" for nm in `grep "^num.answer.rcode" $seentags`; do tp=`echo $nm | sed -e s/num.answer.rcode.//` p_config "$nm" "$tp" "ABSOLUTE" @@ -346,7 +346,7 @@ if test "$1" = "config" ; then echo "graph_args --base 1000 -l 0" echo "graph_vlabel queries / \${graph_period}" echo "graph_scale no" - echo "graph_category DNS" + echo "graph_category dns" p_config "num.query.flags.QR" "QR (query reply) flag" "ABSOLUTE" p_config "num.query.flags.AA" "AA (auth answer) flag" "ABSOLUTE" p_config "num.query.flags.TC" "TC (truncated) flag" "ABSOLUTE" @@ -364,7 +364,7 @@ if test "$1" = "config" ; then echo "graph_args --base 1000 -l 0" echo "graph_vlabel queries / \${graph_period}" echo "graph_scale no" - echo "graph_category DNS" + echo "graph_category dns" echo hcache.label "cache hits" echo hcache.min 0 echo hcache.type ABSOLUTE From eb82c368e08e2fd7ec4044a3a6e3902819135560 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 12 Mar 2021 08:54:00 +0100 Subject: [PATCH 042/553] - man page contents, list new triggers and actions. --- doc/example.conf.in | 9 +++++---- doc/unbound.conf.5.in | 8 ++++---- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/doc/example.conf.in b/doc/example.conf.in index b51bcfca5..b4870a344 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -1104,10 +1104,11 @@ remote-control: # dnstap-log-forwarder-response-messages: no # Response Policy Zones -# RPZ policies. Applied in order of configuration. QNAME and Response IP -# Address trigger are the only supported triggers. Supported actions are: -# NXDOMAIN, NODATA, PASSTHRU, DROP and Local Data. Policies can be loaded from -# file, using zone transfer, or using HTTP. The respip module needs to be added +# RPZ policies. Applied in order of configuration. QNAME, Response IP +# Address, nsdname, nsip and clientip triggers are supported. Supported +# actions are: NXDOMAIN, NODATA, PASSTHRU, DROP, Local Data, tcp-only +# and drop. Policies can be loaded from a file, or using zone +# transfer, or using HTTP. The respip module needs to be added # to the module-config, e.g.: module-config: "respip validator iterator". # rpz: # name: "rpz.example.com" diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index e7964d969..06e9e9ad3 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -2329,10 +2329,10 @@ with a different name. RPZ clauses are applied in order of configuration. The \fBrespip\fR module needs to be added to the \fBmodule-config\fR, e.g.: \fBmodule-config: "respip validator iterator"\fR. .P -Only the QNAME and Response IP Address triggers are supported. The supported RPZ -actions are: NXDOMAIN, NODATA, PASSTHRU, DROP and Local Data. RPZ QNAME triggers -are applied after -\fBlocal-zones\fR and before \fBauth-zones\fR. +QNAME, Response IP Address, nsdname, nsip and clientip triggers are supported. +Supported actions are: NXDOMAIN, NODATA, PASSTHRU, DROP, Local Data, tcp\-only +and drop. RPZ QNAME triggers are applied after \fBlocal\-zones\fR and +before \fBauth\-zones\fR. .TP .B name: \fI Name of the authority zone. From 7a5d82dd48704b1a854c2802afcbebba980e1792 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 12 Mar 2021 09:10:11 +0100 Subject: [PATCH 043/553] - rpz trigger, fix merge for unsupported ipaddr based trigger action. --- services/rpz.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/services/rpz.c b/services/rpz.c index cf2c10191..843036f34 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -704,15 +704,6 @@ rpz_insert_ipaddr_based_trigger(struct respip_set* set, struct sockaddr_storage* enum respip_action respa = rpz_action_to_respip_action(a); lock_rw_wrlock(&set->lock); - if(a == RPZ_TCP_ONLY_ACTION || a == RPZ_INVALID_ACTION || - respa == respip_invalid) { - char str[255+1]; - dname_str(dname, str); - verbose(VERB_ALGO, "RPZ: respip trigger, %s skipping unsupported action: %s", - str, rpz_action_to_string(a)); - return 0; - } - rrstr = sldns_wire2str_rr(rr, rr_len); if(rrstr == NULL) { log_err("malloc error while inserting rpz ipaddr based trigger"); @@ -949,6 +940,15 @@ rpz_insert_response_ip_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, return 0; } + if(a == RPZ_TCP_ONLY_ACTION || a == RPZ_INVALID_ACTION || + rpz_action_to_respip_action(a) == respip_invalid) { + char str[255+1]; + dname_str(dname, str); + verbose(VERB_ALGO, "RPZ: respip trigger, %s skipping unsupported action: %s", + str, rpz_action_to_string(a)); + return 0; + } + return rpz_insert_ipaddr_based_trigger(r->respip_set, &addr, addrlen, net, a, rrtype, rrclass, ttl, rdata, rdata_len, rr, rr_len); } From c7bb118a883de708a268fd0d841170563c8ddc94 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 12 Mar 2021 09:18:38 +0100 Subject: [PATCH 044/553] - rpz trigger, fix tcp only action after merge --- services/rpz.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/rpz.c b/services/rpz.c index 843036f34..e9d1226a0 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -569,7 +569,7 @@ rpz_insert_local_zones_trigger(struct local_zones* lz, uint8_t* dname, int dnamelabs = dname_count_labels(dname); int newzone = 0; - if(a == RPZ_TCP_ONLY_ACTION || a == RPZ_INVALID_ACTION) { + if(a == RPZ_INVALID_ACTION) { char str[255+1]; if(rrtype == LDNS_RR_TYPE_SOA || rrtype == LDNS_RR_TYPE_NS || rrtype == LDNS_RR_TYPE_DNAME || @@ -940,7 +940,7 @@ rpz_insert_response_ip_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, return 0; } - if(a == RPZ_TCP_ONLY_ACTION || a == RPZ_INVALID_ACTION || + if(a == RPZ_INVALID_ACTION || rpz_action_to_respip_action(a) == respip_invalid) { char str[255+1]; dname_str(dname, str); From 4f892a37bd15be83519515a9a3b7fdf1da669e6a Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 12 Mar 2021 10:21:29 +0100 Subject: [PATCH 045/553] - rpz triggers, spelling fix. --- services/rpz.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/rpz.c b/services/rpz.c index e9d1226a0..1e6cc0bd2 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -77,7 +77,7 @@ rpz_action_to_string(enum rpz_action a) case RPZ_DISABLED_ACTION: return "rpz-disabled"; case RPZ_CNAME_OVERRIDE_ACTION: return "rpz-cname-override"; case RPZ_NO_OVERRIDE_ACTION: return "rpz-no-override"; - default: return "rpz-unkown-action"; + default: return "rpz-unknown-action"; } } From da0bbcec483a86e8f96533d0872a48fbd884a90c Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 12 Mar 2021 10:21:48 +0100 Subject: [PATCH 046/553] - rpz triggers, man page explanation of rpz zone contents. --- doc/unbound.conf.5.in | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index a8c323e2f..c8d41d7d9 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -2389,6 +2389,44 @@ QNAME, Response IP Address, nsdname, nsip and clientip triggers are supported. Supported actions are: NXDOMAIN, NODATA, PASSTHRU, DROP, Local Data, tcp\-only and drop. RPZ QNAME triggers are applied after \fBlocal\-zones\fR and before \fBauth\-zones\fR. +.P +The rpz zone is formatted with a SOA start record as usual. The items in +the zone are entries, that specify what to act on (the trigger) and what to +do (the action). The trigger to act on is recorded in the name, the action +to do is recorded as the resource record. The names all end in the zone +name, so you could type them without a trailing dot in the zonefile. +.P +An example RPZ record, that answers example.com with NXDOMAIN +.nf + example.com CNAME . +.fi +.P +The triggers are encoded in the name on the left +.nf + name query name + netblock.rpz-client-ip. client IP address + netblock.rpz-ip. response IP address in the answer + name.rpz-nsdname. nameserver name + netblock.rpz-nsip. nameserver IP address +.fi +The netblock is written as .. +For IPv6 use 'zz' for '::'. Specify indiviual addresses with scope length +of 32 or 128. For example, 24.10.100.51.198.rpz-ip is 198.51.100.10/24 and +32.10.zz.db8.2001.rpz-ip is 2001:db8:0:0:0:0:0:10/32. +.P +The actions are specified with the record on the right +.nf + CNAME . nxdomain reply + CNAME *. nodata reply + CNAME rpz-passthru. do nothing, allow to continue + CNAME rpz-drop. the query is dropped + CNAME rpz-tcp-only. answer over TCP + A 192.0.2.1 answer with this IP address +.fi +Other records like AAAA, TXT and other CNAMEs (not rpz-..) can also be used to +answer queries with that content. +.P +The RPZ zones can be configured in the config file with these settings in the \fBrpz:\fR block. .TP .B name: \fI Name of the authority zone. From 263f9741203af6ef675fb8bc9f0a93f448ee25e8 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 12 Mar 2021 10:23:20 +0100 Subject: [PATCH 047/553] rpz triggers, man page fix end label --- doc/unbound.conf.5.in | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index c8d41d7d9..95f0c0038 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -2394,7 +2394,8 @@ The rpz zone is formatted with a SOA start record as usual. The items in the zone are entries, that specify what to act on (the trigger) and what to do (the action). The trigger to act on is recorded in the name, the action to do is recorded as the resource record. The names all end in the zone -name, so you could type them without a trailing dot in the zonefile. +name, so you could type the trigger names without a trailing dot in the +zonefile. .P An example RPZ record, that answers example.com with NXDOMAIN .nf @@ -2404,10 +2405,10 @@ An example RPZ record, that answers example.com with NXDOMAIN The triggers are encoded in the name on the left .nf name query name - netblock.rpz-client-ip. client IP address - netblock.rpz-ip. response IP address in the answer - name.rpz-nsdname. nameserver name - netblock.rpz-nsip. nameserver IP address + netblock.rpz-client-ip client IP address + netblock.rpz-ip response IP address in the answer + name.rpz-nsdname nameserver name + netblock.rpz-nsip nameserver IP address .fi The netblock is written as .. For IPv6 use 'zz' for '::'. Specify indiviual addresses with scope length From 62674aaff8e7972bf050c56c77f518d27f606aee Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 12 Mar 2021 13:13:17 +0100 Subject: [PATCH 048/553] - rpz triggers, fix to put braces around operator. --- doc/unbound.conf.5.in | 2 +- services/localzone.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 95f0c0038..d98514af5 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -2411,7 +2411,7 @@ The triggers are encoded in the name on the left netblock.rpz-nsip nameserver IP address .fi The netblock is written as .. -For IPv6 use 'zz' for '::'. Specify indiviual addresses with scope length +For IPv6 use 'zz' for '::'. Specify individual addresses with scope length of 32 or 128. For example, 24.10.100.51.198.rpz-ip is 198.51.100.10/24 and 32.10.zz.db8.2001.rpz-ip is 2001:db8:0:0:0:0:0:10/32. .P diff --git a/services/localzone.c b/services/localzone.c index fa586ef38..a24137eac 100644 --- a/services/localzone.c +++ b/services/localzone.c @@ -1604,7 +1604,7 @@ local_zones_zone_answer(struct local_zone* z, struct module_env* env, lz_type == local_zone_always_nodata || lz_type == local_zone_truncate)? LDNS_RCODE_NOERROR:LDNS_RCODE_NXDOMAIN; - rcode = lz_type == local_zone_truncate ? (rcode|BIT_TC) : rcode; + rcode = (lz_type == local_zone_truncate ? (rcode|BIT_TC) : rcode); if(z != NULL && z->soa && z->soa_negative) return local_encode(qinfo, env, edns, repinfo, buf, temp, z->soa_negative, 0, rcode); From 5ea042c863e0c5d9d44a2ac5cd3263a37e7e7b49 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 12 Mar 2021 13:24:17 +0100 Subject: [PATCH 049/553] - rpz triggers, document statistics and fix comment about statistics. --- doc/unbound-control.8.in | 4 ++-- services/rpz.c | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/doc/unbound-control.8.in b/doc/unbound-control.8.in index 20325abf2..bdb14cff0 100644 --- a/doc/unbound-control.8.in +++ b/doc/unbound-control.8.in @@ -685,8 +685,8 @@ specific cache, after getting processed by the edns client subnet module. .TP .I num.rpz.action. Number of queries answered using configured RPZ policy, per RPZ action type. -Possible actions are: nxdomain, nodata, passthru, drop, local_data, disabled, -and cname_override. +Possible actions are: nxdomain, nodata, passthru, drop, tcp\-only, local\-data, +disabled, and cname\-override. .SH "FILES" .TP .I @ub_conf_file@ diff --git a/services/rpz.c b/services/rpz.c index 1e6cc0bd2..568ae9840 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -1388,7 +1388,6 @@ rpz_resolve_client_action_and_zone(struct auth_zones* az, struct query_info* qin log_rpz_apply(z->name, r->action_override, qinfo, repinfo, r->log_name); - /* TODO only register stats when stats_extended? */ stats->rpz_action[r->action_override]++; lock_rw_unlock(&z->lock); z = NULL; From 2d4523d94615e84dfa987a4817c6dcb67ca522bf Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 12 Mar 2021 14:32:10 +0100 Subject: [PATCH 050/553] - rpz triggers, fix that nsdname suffix removal returns allocated memory of the correct length and the correct dnamelen. --- services/rpz.c | 42 +++++++++++++++++++++++++++++++++++------- 1 file changed, 35 insertions(+), 7 deletions(-) diff --git a/services/rpz.c b/services/rpz.c index 568ae9840..c4b15445c 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -664,12 +664,34 @@ rpz_insert_qname_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, rrclass, ttl, rdata, rdata_len, rr, rr_len); } -static void -rpz_strip_nsdname_suffix(uint8_t* dname, size_t maxdnamelen) +static int +rpz_strip_nsdname_suffix(uint8_t* dname, size_t maxdnamelen, + uint8_t** stripdname, size_t* stripdnamelen) { uint8_t* stripped = get_tld_label(dname, maxdnamelen); - if(stripped == NULL) { return; } + uint8_t swap; + if(stripped == NULL) { + *stripdname = memdup(dname, maxdnamelen); + if(!*stripdname) { + log_err("malloc failure for rpz strip suffix"); + return 0; + } + *stripdnamelen = maxdnamelen; + return 1; + } + /* shorten the domain name briefly, + * then we allocate a new name with the correct length */ + swap = *stripped; *stripped = 0; + (void)dname_count_size_labels(dname, stripdnamelen); + *stripdname = memdup(dname, *stripdnamelen); + *stripped = swap; + if(!*stripdname) { + *stripdnamelen = 0; + log_err("malloc failure for rpz strip suffix"); + return 0; + } + return 1; } static void @@ -677,20 +699,26 @@ rpz_insert_nsdname_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, enum rpz_action a, uint16_t rrtype, uint16_t rrclass, uint32_t ttl, uint8_t* rdata, size_t rdata_len, uint8_t* rr, size_t rr_len) { + uint8_t* dname_stripped = NULL; + size_t dnamelen_stripped = 0; verbose(VERB_ALGO, "rpz: insert nsdname trigger: %s", rpz_action_to_string(a)); rpz_log_dname("insert nsdname trigger", dname, dnamelen); - rpz_strip_nsdname_suffix(dname, dnamelen); - rpz_log_dname("insert nsdname trigger (stripped)", dname, dnamelen); + rpz_strip_nsdname_suffix(dname, dnamelen, &dname_stripped, + &dnamelen_stripped); + rpz_log_dname("insert nsdname trigger (stripped)", dname_stripped, dnamelen_stripped); if(a == RPZ_INVALID_ACTION) { verbose(VERB_ALGO, "rpz: skipping invalid action"); + free(dname_stripped); free(dname); return; } - rpz_insert_local_zones_trigger(r->nsdname_zones, dname, dnamelen, a, rrtype, - rrclass, ttl, rdata, rdata_len, rr, rr_len); + rpz_insert_local_zones_trigger(r->nsdname_zones, dname_stripped, + dnamelen_stripped, a, rrtype, rrclass, ttl, rdata, rdata_len, + rr, rr_len); + free(dname); } static int From e7afe0b153cb70e9918a96bffdecf14a13ac44ef Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 12 Mar 2021 14:35:34 +0100 Subject: [PATCH 051/553] - rpz triggers, rpz_insert_rr nicer. --- services/rpz.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/services/rpz.c b/services/rpz.c index c4b15445c..c8ce5ca0f 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -711,14 +711,13 @@ rpz_insert_nsdname_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, if(a == RPZ_INVALID_ACTION) { verbose(VERB_ALGO, "rpz: skipping invalid action"); free(dname_stripped); - free(dname); return; } + /* dname_stripped is consumed or freed by the insert routine */ rpz_insert_local_zones_trigger(r->nsdname_zones, dname_stripped, dnamelen_stripped, a, rrtype, rrclass, ttl, rdata, rdata_len, rr, rr_len); - free(dname); } static int @@ -1047,10 +1046,10 @@ rpz_insert_rr(struct rpz* r, uint8_t* azname, size_t aznamelen, uint8_t* dname, rr_len); free(policydname); } else if(t == RPZ_NSDNAME_TRIGGER) { - // policydname will be consumed, no free rpz_insert_nsdname_trigger(r, policydname, policydnamelen, a, rr_type, rr_class, rr_ttl, rdatawl, rdatalen, rr, rr_len); + free(policydname); } else { free(policydname); verbose(VERB_ALGO, "rpz: skipping unsupported trigger: %s", From 1a528238e2b855352ad514356230ad988f59d966 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 12 Mar 2021 16:07:37 +0100 Subject: [PATCH 052/553] - rpz triggers, use tld name for tld pointer in suffix removal. --- services/rpz.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/services/rpz.c b/services/rpz.c index c8ce5ca0f..3988bba46 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -668,11 +668,17 @@ static int rpz_strip_nsdname_suffix(uint8_t* dname, size_t maxdnamelen, uint8_t** stripdname, size_t* stripdnamelen) { - uint8_t* stripped = get_tld_label(dname, maxdnamelen); + uint8_t* tldstart = get_tld_label(dname, maxdnamelen); uint8_t swap; - if(stripped == NULL) { + if(tldstart == NULL) { + if(dname == NULL) { + *stripdname = NULL; + *stripdnamelen = 0; + return 0; + } *stripdname = memdup(dname, maxdnamelen); if(!*stripdname) { + *stripdnamelen = 0; log_err("malloc failure for rpz strip suffix"); return 0; } @@ -681,11 +687,11 @@ rpz_strip_nsdname_suffix(uint8_t* dname, size_t maxdnamelen, } /* shorten the domain name briefly, * then we allocate a new name with the correct length */ - swap = *stripped; - *stripped = 0; + swap = *tldstart; + *tldstart = 0; (void)dname_count_size_labels(dname, stripdnamelen); *stripdname = memdup(dname, *stripdnamelen); - *stripped = swap; + *tldstart = swap; if(!*stripdname) { *stripdnamelen = 0; log_err("malloc failure for rpz strip suffix"); @@ -701,12 +707,14 @@ rpz_insert_nsdname_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, { uint8_t* dname_stripped = NULL; size_t dnamelen_stripped = 0; - verbose(VERB_ALGO, "rpz: insert nsdname trigger: %s", rpz_action_to_string(a)); + verbose(VERB_ALGO, "rpz: insert nsdname trigger: %s", + rpz_action_to_string(a)); rpz_log_dname("insert nsdname trigger", dname, dnamelen); rpz_strip_nsdname_suffix(dname, dnamelen, &dname_stripped, &dnamelen_stripped); - rpz_log_dname("insert nsdname trigger (stripped)", dname_stripped, dnamelen_stripped); + rpz_log_dname("insert nsdname trigger (stripped)", dname_stripped, + dnamelen_stripped); if(a == RPZ_INVALID_ACTION) { verbose(VERB_ALGO, "rpz: skipping invalid action"); From 7f39003c04c2f663f5e1697b7be22724076b5e5b Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 19 Mar 2021 17:31:44 +0100 Subject: [PATCH 053/553] - rpz triggers, implement qname trigger after cname. --- iterator/iterator.c | 32 ++++++++++++ services/rpz.c | 112 +++++++++++++++++++++++++++++++++++++++-- services/rpz.h | 2 + testdata/rpz_qname.rpl | 29 +++++++++++ 4 files changed, 171 insertions(+), 4 deletions(-) diff --git a/iterator/iterator.c b/iterator/iterator.c index 1ebbfe277..63f8cbd56 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -3013,6 +3013,38 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq, /* set the current request's qname to the new value. */ iq->qchase.qname = sname; iq->qchase.qname_len = snamelen; + if(qstate->env->auth_zones) { + /* apply rpz qname triggers after cname */ + struct dns_msg* forged_response = + rpz_callback_from_iterator_cname(qstate, iq); + while(forged_response && reply_find_rrset_section_an( + forged_response->rep, iq->qchase.qname, + iq->qchase.qname_len, LDNS_RR_TYPE_CNAME, + iq->qchase.qclass)) { + /* another cname to follow */ + if(!handle_cname_response(qstate, iq, forged_response, + &sname, &snamelen)) { + errinf(qstate, "malloc failure, CNAME info"); + return error_response(qstate, id, LDNS_RCODE_SERVFAIL); + } + iq->qchase.qname = sname; + iq->qchase.qname_len = snamelen; + forged_response = + rpz_callback_from_iterator_cname(qstate, iq); + } + if(forged_response != NULL) { + qstate->ext_state[id] = module_finished; + qstate->return_rcode = FLAGS_GET_RCODE(forged_response->rep->flags); + qstate->return_msg = forged_response; + next_state(iq, FINISHED_STATE); + if(!iter_prepend(iq, qstate->return_msg, qstate->region)) { + log_err("rpz, prepend rrsets: out of memory"); + return error_response(qstate, id, LDNS_RCODE_SERVFAIL); + } + qstate->return_msg->qinfo = qstate->qinfo; + return 0; + } + } /* Clear the query state, since this is a query restart. */ iq->deleg_msg = NULL; iq->dp = NULL; diff --git a/services/rpz.c b/services/rpz.c index 3988bba46..538429e51 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -1607,10 +1607,9 @@ rpz_synthesize_nxdomain(struct rpz* ATTR_UNUSED(r), struct module_qstate* ms) static inline struct dns_msg* rpz_synthesize_localdata_from_rrset(struct rpz* ATTR_UNUSED(r), struct module_qstate* ms, - struct local_rrset* rrset) + struct query_info* qi, struct local_rrset* rrset) { struct dns_msg* msg = NULL; - struct query_info* qi = &ms->qinfo; struct reply_info* new_reply_info; struct ub_packed_rrset_key* rp; @@ -1659,7 +1658,7 @@ rpz_synthesize_nsip_localdata(struct rpz* r, struct module_qstate* ms, return NULL; } - return rpz_synthesize_localdata_from_rrset(r, ms, rrset); + return rpz_synthesize_localdata_from_rrset(r, ms, &ms->qinfo, rrset); } // copy'n'paste from localzone.c @@ -1708,7 +1707,32 @@ rpz_synthesize_nsdname_localdata(struct rpz* r, struct module_qstate* ms, return NULL; } - return rpz_synthesize_localdata_from_rrset(r, ms, rrset); + return rpz_synthesize_localdata_from_rrset(r, ms, &ms->qinfo, rrset); +} + +/* like local_data_answer for qname triggers after a cname */ +static struct dns_msg* +rpz_synthesize_qname_localdata_msg(struct rpz* r, struct module_qstate* ms, + struct query_info* qinfo, struct local_zone* z) +{ + struct local_data key; + struct local_data* ld; + struct local_rrset* rrset; + key.node.key = &key; + key.name = qinfo->qname; + key.namelen = qinfo->qname_len; + key.namelabs = dname_count_labels(qinfo->qname); + ld = (struct local_data*)rbtree_search(&z->data, &key.node); + if(ld == NULL) { + verbose(VERB_ALGO, "rpz: qname after cname: name not found"); + return NULL; + } + rrset = local_data_find_type(ld, qinfo->qtype, 1); + if(rrset == NULL) { + verbose(VERB_ALGO, "rpz: qname after cname: type not found"); + return NULL; + } + return rpz_synthesize_localdata_from_rrset(r, ms, qinfo, rrset); } static int @@ -1965,6 +1989,86 @@ rpz_callback_from_iterator_module(struct module_qstate* ms, struct iter_qstate* else { return NULL; } } +struct dns_msg* rpz_callback_from_iterator_cname(struct module_qstate* ms, + struct iter_qstate* is) +{ + struct auth_zones* az; + struct auth_zone* a = NULL; + struct rpz* r = NULL; + struct local_zone* z = NULL; + enum localzone_type lzt; + struct dns_msg* ret = NULL; + + if(ms->env == NULL || ms->env->auth_zones == NULL) { return 0; } + az = ms->env->auth_zones; + + lock_rw_rdlock(&az->rpz_lock); + + for(a = az->rpz_first; a; a = a->rpz_az_next) { + lock_rw_rdlock(&a->lock); + r = a->rpz; + if(r->disabled) { + lock_rw_unlock(&a->lock); + continue; + } + z = rpz_find_zone(r->local_zones, is->qchase.qname, + is->qchase.qname_len, is->qchase.qclass, 0, 0, 0); + if(z && r->action_override == RPZ_DISABLED_ACTION) { + lock_rw_unlock(&z->lock); + z = NULL; + } + if(z) { + break; + } + /* not found in this auth_zone */ + lock_rw_unlock(&a->lock); + } + lock_rw_unlock(&az->rpz_lock); + + if(z == NULL) + return NULL; + if(r->action_override == RPZ_NO_OVERRIDE_ACTION) { + lzt = z->type; + } else { + lzt = rpz_action_to_localzone_type(r->action_override); + } + + verbose(VERB_ALGO, "rpz: qname trigger after cname, with action=%s", + rpz_action_to_string(localzone_type_to_rpz_action(lzt))); + switch(localzone_type_to_rpz_action(lzt)) { + case RPZ_NXDOMAIN_ACTION: + ret = rpz_synthesize_nxdomain(r, ms); + break; + case RPZ_NODATA_ACTION: + ret = rpz_synthesize_nodata(r, ms); + break; + case RPZ_TCP_ONLY_ACTION: + /* basically a passthru here but the tcp-only will be + * honored before the query gets sent. */ + ms->respip_action_info->action = respip_truncate; + ret = NULL; + break; + case RPZ_DROP_ACTION: + ret = rpz_synthesize_nodata(r, ms); + ms->is_drop = 1; + break; + case RPZ_LOCAL_DATA_ACTION: + ret = rpz_synthesize_qname_localdata_msg(r, ms, &is->qchase, z); + if(ret == NULL) { ret = rpz_synthesize_nodata(r, ms); } + break; + case RPZ_PASSTHRU_ACTION: + ret = NULL; + break; + default: + verbose(VERB_ALGO, "rpz: qname trigger after cname: bug: unhandled or invalid action: '%s'", + rpz_action_to_string(localzone_type_to_rpz_action(lzt))); + ret = NULL; + } + lock_rw_unlock(&z->lock); + lock_rw_unlock(&a->lock); + return ret; +} + static int rpz_apply_maybe_clientip_trigger(struct auth_zones* az, struct module_env* env, struct query_info* qinfo, struct edns_data* edns, struct comm_reply* repinfo, diff --git a/services/rpz.h b/services/rpz.h index 62c345f29..74a8d09e2 100644 --- a/services/rpz.h +++ b/services/rpz.h @@ -183,6 +183,8 @@ int rpz_callback_from_worker_request(struct auth_zones* az, struct module_env* e struct iter_qstate; struct dns_msg* rpz_callback_from_iterator_module(struct module_qstate*, struct iter_qstate*); +struct dns_msg* rpz_callback_from_iterator_cname(struct module_qstate*, struct iter_qstate*); + /** * Delete RPZ * @param r: RPZ struct to delete diff --git a/testdata/rpz_qname.rpl b/testdata/rpz_qname.rpl index dd47f188a..2bc038c37 100644 --- a/testdata/rpz_qname.rpl +++ b/testdata/rpz_qname.rpl @@ -126,6 +126,16 @@ SECTION ANSWER something.e.b.example. IN TXT "*.b.example. answer from upstream ns" ENTRY_END +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +f.example. IN TXT +SECTION ANSWER +f.example. IN CNAME d. +ENTRY_END + RANGE_END ; tcp. @@ -367,5 +377,24 @@ SECTION ANSWER tcp. IN TXT "tcp. answer from upstream ns" ENTRY_END +; check if the name after the CNAME has the qname trigger applied to it. +STEP 100 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +f.example. IN TXT +ENTRY_END + +STEP 101 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +f.example. IN TXT +SECTION ANSWER +f.example. IN CNAME d. +d. IN TXT "local data 2nd zone" +ENTRY_END + ; no answer is checked at exit of testbound. SCENARIO_END From 5a23c849519da1046021d404c284df1aa471af5a Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 19 Mar 2021 17:36:09 +0100 Subject: [PATCH 054/553] - rpz triggers, fix query name on trigger after cname. --- services/rpz.c | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/services/rpz.c b/services/rpz.c index 538429e51..1daaf9bf2 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -1566,11 +1566,12 @@ rpz_dns_msg_new(struct regional* region) } static inline struct dns_msg* -rpz_synthesize_nodata(struct rpz* ATTR_UNUSED(r), struct module_qstate* ms) +rpz_synthesize_nodata(struct rpz* ATTR_UNUSED(r), struct module_qstate* ms, + struct query_info* qinfo) { struct dns_msg* msg = rpz_dns_msg_new(ms->region); if(msg == NULL) { return msg; } - msg->qinfo = ms->qinfo; + msg->qinfo = *qinfo; msg->rep = construct_reply_info_base(ms->region, LDNS_RCODE_NOERROR | BIT_RD | BIT_QR | BIT_AA | BIT_RA, 1, //qd @@ -1586,11 +1587,12 @@ rpz_synthesize_nodata(struct rpz* ATTR_UNUSED(r), struct module_qstate* ms) } static inline struct dns_msg* -rpz_synthesize_nxdomain(struct rpz* ATTR_UNUSED(r), struct module_qstate* ms) +rpz_synthesize_nxdomain(struct rpz* ATTR_UNUSED(r), struct module_qstate* ms, + struct query_info* qinfo) { struct dns_msg* msg = rpz_dns_msg_new(ms->region); if(msg == NULL) { return msg; } - msg->qinfo = ms->qinfo; + msg->qinfo = *qinfo; msg->rep = construct_reply_info_base(ms->region, LDNS_RCODE_NXDOMAIN | BIT_RD | BIT_QR | BIT_AA | BIT_RA, 1, //qd @@ -1820,16 +1822,16 @@ rpz_apply_nsip_trigger(struct module_qstate* ms, struct rpz* r, if(action == RPZ_LOCAL_DATA_ACTION && raddr->data == NULL) { verbose(VERB_ALGO, "rpz: bug: nsip local data action but no local data"); - ret = rpz_synthesize_nodata(r, ms); + ret = rpz_synthesize_nodata(r, ms, &ms->qinfo); goto done; } switch(action) { case RPZ_NXDOMAIN_ACTION: - ret = rpz_synthesize_nxdomain(r, ms); + ret = rpz_synthesize_nxdomain(r, ms, &ms->qinfo); break; case RPZ_NODATA_ACTION: - ret = rpz_synthesize_nodata(r, ms); + ret = rpz_synthesize_nodata(r, ms, &ms->qinfo); break; case RPZ_TCP_ONLY_ACTION: // basically a passthru here but the tcp-only will be @@ -1838,12 +1840,12 @@ rpz_apply_nsip_trigger(struct module_qstate* ms, struct rpz* r, ret = NULL; break; case RPZ_DROP_ACTION: - ret = rpz_synthesize_nodata(r, ms); + ret = rpz_synthesize_nodata(r, ms, &ms->qinfo); ms->is_drop = 1; break; case RPZ_LOCAL_DATA_ACTION: ret = rpz_synthesize_nsip_localdata(r, ms, raddr); - if(ret == NULL) { ret = rpz_synthesize_nodata(r, ms); } + if(ret == NULL) { ret = rpz_synthesize_nodata(r, ms, &ms->qinfo); } break; case RPZ_PASSTHRU_ACTION: ret = NULL; @@ -1876,10 +1878,10 @@ rpz_apply_nsdname_trigger(struct module_qstate* ms, struct rpz* r, switch(action) { case RPZ_NXDOMAIN_ACTION: - ret = rpz_synthesize_nxdomain(r, ms); + ret = rpz_synthesize_nxdomain(r, ms, &ms->qinfo); break; case RPZ_NODATA_ACTION: - ret = rpz_synthesize_nodata(r, ms); + ret = rpz_synthesize_nodata(r, ms, &ms->qinfo); break; case RPZ_TCP_ONLY_ACTION: // basically a passthru here but the tcp-only will be @@ -1888,12 +1890,12 @@ rpz_apply_nsdname_trigger(struct module_qstate* ms, struct rpz* r, ret = NULL; break; case RPZ_DROP_ACTION: - ret = rpz_synthesize_nodata(r, ms); + ret = rpz_synthesize_nodata(r, ms, &ms->qinfo); ms->is_drop = 1; break; case RPZ_LOCAL_DATA_ACTION: ret = rpz_synthesize_nsdname_localdata(r, ms, z, match); - if(ret == NULL) { ret = rpz_synthesize_nodata(r, ms); } + if(ret == NULL) { ret = rpz_synthesize_nodata(r, ms, &ms->qinfo); } break; case RPZ_PASSTHRU_ACTION: ret = NULL; @@ -2037,10 +2039,10 @@ struct dns_msg* rpz_callback_from_iterator_cname(struct module_qstate* ms, rpz_action_to_string(localzone_type_to_rpz_action(lzt))); switch(localzone_type_to_rpz_action(lzt)) { case RPZ_NXDOMAIN_ACTION: - ret = rpz_synthesize_nxdomain(r, ms); + ret = rpz_synthesize_nxdomain(r, ms, &is->qchase); break; case RPZ_NODATA_ACTION: - ret = rpz_synthesize_nodata(r, ms); + ret = rpz_synthesize_nodata(r, ms, &is->qchase); break; case RPZ_TCP_ONLY_ACTION: /* basically a passthru here but the tcp-only will be @@ -2049,12 +2051,12 @@ struct dns_msg* rpz_callback_from_iterator_cname(struct module_qstate* ms, ret = NULL; break; case RPZ_DROP_ACTION: - ret = rpz_synthesize_nodata(r, ms); + ret = rpz_synthesize_nodata(r, ms, &is->qchase); ms->is_drop = 1; break; case RPZ_LOCAL_DATA_ACTION: ret = rpz_synthesize_qname_localdata_msg(r, ms, &is->qchase, z); - if(ret == NULL) { ret = rpz_synthesize_nodata(r, ms); } + if(ret == NULL) { ret = rpz_synthesize_nodata(r, ms, &is->qchase); } break; case RPZ_PASSTHRU_ACTION: ret = NULL; From 0f804f1b562fd03cf3d4fe4019062915180ffd41 Mon Sep 17 00:00:00 2001 From: Sven Date: Sat, 20 Mar 2021 14:28:10 +0100 Subject: [PATCH 055/553] Update unbound-control.8.in, fix rpz_disable typo --- doc/unbound-control.8.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/unbound-control.8.in b/doc/unbound-control.8.in index 20325abf2..dad840cf5 100644 --- a/doc/unbound-control.8.in +++ b/doc/unbound-control.8.in @@ -308,7 +308,7 @@ serial check). And then the zone is transferred for a newer zone version. .B rpz_enable \fIzone\fR Enable the RPZ zone if it had previously been disabled. .TP -.B rpz_enable \fIzone\fR +.B rpz_disable \fIzone\fR Disable the RPZ zone. .TP .B view_list_local_zones \fIview\fR From 81cd0d76c8952f49fc6007e18f496c3eb273ff65 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 22 Mar 2021 09:39:12 +0100 Subject: [PATCH 056/553] - rpz-triggers, call rpz callback only if there are auth zones configured. --- iterator/iterator.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/iterator/iterator.c b/iterator/iterator.c index 63f8cbd56..f83170c16 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -2471,7 +2471,8 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, /* Add the current set of unused targets to our queue. */ delegpt_add_unused_targets(iq->dp); - { /* apply rpz triggers at query time */ + if(qstate->env->auth_zones) { + /* apply rpz triggers at query time */ struct dns_msg* forged_response = rpz_callback_from_iterator_module(qstate, iq); if(forged_response != NULL) { qstate->ext_state[id] = module_finished; From 8e7ced72e5c68671c8586152ea518df61b7b2e05 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 22 Mar 2021 09:42:04 +0100 Subject: [PATCH 057/553] - rpz-triggers, fix that after cname an nsdname or nsip trigger has cname rrsets prepended by the iterator. --- iterator/iterator.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/iterator/iterator.c b/iterator/iterator.c index f83170c16..0883b91b0 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -2479,6 +2479,10 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, qstate->return_rcode = FLAGS_GET_RCODE(forged_response->rep->flags); qstate->return_msg = forged_response; next_state(iq, FINISHED_STATE); + if(!iter_prepend(iq, qstate->return_msg, qstate->region)) { + log_err("rpz, prepend rrsets: out of memory"); + return error_response(qstate, id, LDNS_RCODE_SERVFAIL); + } return 0; } } @@ -3039,7 +3043,7 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq, qstate->return_msg = forged_response; next_state(iq, FINISHED_STATE); if(!iter_prepend(iq, qstate->return_msg, qstate->region)) { - log_err("rpz, prepend rrsets: out of memory"); + log_err("rpz after cname, prepend rrsets: out of memory"); return error_response(qstate, id, LDNS_RCODE_SERVFAIL); } qstate->return_msg->qinfo = qstate->qinfo; From 3dd804755bec46dc9bee035c38ee2b081c3d41d2 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 22 Mar 2021 09:49:22 +0100 Subject: [PATCH 058/553] - rpz-triggers, function documentation comments for iterator callback functions. --- services/rpz.c | 2 +- services/rpz.h | 25 ++++++++++++++++++++++--- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/services/rpz.c b/services/rpz.c index 1daaf9bf2..24029537b 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -1068,7 +1068,7 @@ rpz_insert_rr(struct rpz* r, uint8_t* azname, size_t aznamelen, uint8_t* dname, /** * Find RPZ local-zone by qname. - * @param r: rpz containing local-zone tree + * @param zones: local-zone tree * @param qname: qname * @param qname_len: length of qname * @param qclass: qclass diff --git a/services/rpz.h b/services/rpz.h index 74a8d09e2..642548bdd 100644 --- a/services/rpz.h +++ b/services/rpz.h @@ -50,6 +50,7 @@ #include "sldns/sbuffer.h" #include "daemon/stats.h" #include "respip/respip.h" +struct iter_qstate; /** * RPZ triggers, only the QNAME trigger is currently supported in Unbound. @@ -180,10 +181,28 @@ int rpz_callback_from_worker_request(struct auth_zones* az, struct module_env* e struct regional* temp, struct comm_reply* repinfo, uint8_t* taglist, size_t taglen, struct ub_server_stats* stats); -struct iter_qstate; -struct dns_msg* rpz_callback_from_iterator_module(struct module_qstate*, struct iter_qstate*); +/** + * Callback to process when the iterator module is about to send queries. + * Checks for nsip and nsdname triggers. + * @param qstate: the query state. + * @param iq: iterator module query state. + * @return NULL if nothing is done. Or a new message with the contents from + * the rpz, based on the delegation point. It is allocated in the + * qstate region. + */ +struct dns_msg* rpz_callback_from_iterator_module(struct module_qstate* qstate, + struct iter_qstate* iq); -struct dns_msg* rpz_callback_from_iterator_cname(struct module_qstate*, struct iter_qstate*); +/** + * Callback to process when the iterator module has followed a cname. + * There can be a qname trigger for the new query name. + * @param qstate: the query state. + * @param iq: iterator module query state. + * @return NULL if nothing is done. Or a new message with the contents from + * the rpz, based on the iq.qchase. It is allocated in the qstate region. + */ +struct dns_msg* rpz_callback_from_iterator_cname(struct module_qstate* qstate, + struct iter_qstate* iq); /** * Delete RPZ From a8e0de95b8f47817340ab5d661c16bce71325610 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 22 Mar 2021 09:52:00 +0100 Subject: [PATCH 059/553] - rpz-triggers, remove unused variable warning. --- services/rpz.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/services/rpz.c b/services/rpz.c index 24029537b..f61225e03 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -857,8 +857,6 @@ rpz_clientip_enter_rr(struct regional* region, struct clientip_synthesized_rr* r size_t rdata_len) { struct local_rrset* rrset; - struct sockaddr* sa; - sa = (struct sockaddr*)&raddr->node.addr; if (rrtype == LDNS_RR_TYPE_CNAME && raddr->data != NULL) { log_err("CNAME response-ip data can not co-exist with other " "client-ip data"); From 1c75e628041ed9c0e680002dbc82380cf1b2b3c3 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 1 Apr 2021 12:06:14 +0200 Subject: [PATCH 060/553] - rpz-triggers, separate cache storage of RPZ records from network records. --- iterator/iterator.c | 2 ++ services/rpz.c | 9 ++++++++ testdata/rpz_nsip.rpl | 49 ++++++++++++++++++++++++++++++++++++++++ util/data/packed_rrset.h | 8 +++++++ 4 files changed, 68 insertions(+) diff --git a/iterator/iterator.c b/iterator/iterator.c index 0883b91b0..7099f05da 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -2478,6 +2478,7 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, qstate->ext_state[id] = module_finished; qstate->return_rcode = FLAGS_GET_RCODE(forged_response->rep->flags); qstate->return_msg = forged_response; + iq->response = forged_response; next_state(iq, FINISHED_STATE); if(!iter_prepend(iq, qstate->return_msg, qstate->region)) { log_err("rpz, prepend rrsets: out of memory"); @@ -3041,6 +3042,7 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq, qstate->ext_state[id] = module_finished; qstate->return_rcode = FLAGS_GET_RCODE(forged_response->rep->flags); qstate->return_msg = forged_response; + iq->response = forged_response; next_state(iq, FINISHED_STATE); if(!iter_prepend(iq, qstate->return_msg, qstate->region)) { log_err("rpz after cname, prepend rrsets: out of memory"); diff --git a/services/rpz.c b/services/rpz.c index 2ab62581a..6a37cb9b3 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -1642,6 +1642,15 @@ rpz_synthesize_localdata_from_rrset(struct rpz* ATTR_UNUSED(r), struct module_qs } rp->rk.dname = qi->qname; rp->rk.dname_len = qi->qname_len; + /* this rrset is from the rpz data, or synthesized. + * It is not actually from the network, so we flag it with this + * flags as a fake RRset. If later the cache is used to look up + * rrsets, then the fake ones are not returned (if you look without + * the flag). For like CNAME lookups from the iterator or A, AAAA + * lookups for nameserver targets, it would use the without flag + * actual data. So that the actual network data and fake data + * are kept track of separately. */ + rp->rk.flags |= PACKED_RRSET_RPZ; new_reply_info->rrsets[0] = rp; msg->rep = new_reply_info; return msg; diff --git a/testdata/rpz_nsip.rpl b/testdata/rpz_nsip.rpl index ac9e80b80..11d1999b6 100644 --- a/testdata/rpz_nsip.rpl +++ b/testdata/rpz_nsip.rpl @@ -131,6 +131,18 @@ SECTION ADDITIONAL ns1.ff. IN A 8.8.6.8 ENTRY_END +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +bar. IN A +SECTION AUTHORITY +bar. IN NS gotham.ff. +SECTION ADDITIONAL +gotham.ff. IN A 192.0.5.2 +ENTRY_END + RANGE_END ; com. ----------------------------------------------------------------------- @@ -385,4 +397,41 @@ SECTION ANSWER gotham.ff. IN A 127.0.0.1 ENTRY_END +; again with more cache items +STEP 40 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +gotham.ff. IN A +ENTRY_END + +STEP 41 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +gotham.ff. IN A +SECTION ANSWER +gotham.ff. IN A 127.0.0.1 +ENTRY_END + +; query with a referral that tries to get the +; just faked A record as nameserver glue (from cache). +STEP 50 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +gotham.bar. IN A +ENTRY_END + +STEP 51 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +gotham.bar. IN A +SECTION ANSWER +gotham.bar. IN A 127.0.0.1 +ENTRY_END + SCENARIO_END diff --git a/util/data/packed_rrset.h b/util/data/packed_rrset.h index ff95c0af0..e1feb22bb 100644 --- a/util/data/packed_rrset.h +++ b/util/data/packed_rrset.h @@ -61,6 +61,13 @@ typedef uint64_t rrset_id_type; * updated on encoding in a reply. This flag is not expected to be set in * cached data. */ #define PACKED_RRSET_FIXEDTTL 0x80000000 +/** This rrset is from RPZ. It is not real, it is synthesized data to block + * access. The flag makes lookups, from cache in iterator, ignore the fake + * items and only use actual data. Eg. when the iterator looksup NS, CNAME, + * A and AAAA types, it then gets items without this flag that are the + * actual network. But messages with these records in it can be stored in + * the cache and retrieved for a reply. */ +#define PACKED_RRSET_RPZ 0x8 /** number of rrs and rrsets for integer overflow protection. More than * this is not really possible (64K packet has much less RRs and RRsets) in @@ -88,6 +95,7 @@ struct packed_rrset_key { * o PACKED_RRSET_PARENT_SIDE * o PACKED_RRSET_SOA_NEG * o PACKED_RRSET_FIXEDTTL (not supposed to be cached) + * o PACKED_RRSET_RPZ */ uint32_t flags; /** the rrset type in network format */ From 14582d2445a15b7efc4f226d72655b1574a73437 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 1 Apr 2021 12:56:47 +0200 Subject: [PATCH 061/553] - rpz-triggers, remove unused test. --- testdata/rpz_nsip.rpl | 31 ------------------------------- 1 file changed, 31 deletions(-) diff --git a/testdata/rpz_nsip.rpl b/testdata/rpz_nsip.rpl index 11d1999b6..a3cda6050 100644 --- a/testdata/rpz_nsip.rpl +++ b/testdata/rpz_nsip.rpl @@ -131,18 +131,6 @@ SECTION ADDITIONAL ns1.ff. IN A 8.8.6.8 ENTRY_END -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -bar. IN A -SECTION AUTHORITY -bar. IN NS gotham.ff. -SECTION ADDITIONAL -gotham.ff. IN A 192.0.5.2 -ENTRY_END - RANGE_END ; com. ----------------------------------------------------------------------- @@ -415,23 +403,4 @@ SECTION ANSWER gotham.ff. IN A 127.0.0.1 ENTRY_END -; query with a referral that tries to get the -; just faked A record as nameserver glue (from cache). -STEP 50 QUERY -ENTRY_BEGIN -REPLY RD -SECTION QUESTION -gotham.bar. IN A -ENTRY_END - -STEP 51 CHECK_ANSWER -ENTRY_BEGIN -MATCH all -REPLY QR RD RA NOERROR -SECTION QUESTION -gotham.bar. IN A -SECTION ANSWER -gotham.bar. IN A 127.0.0.1 -ENTRY_END - SCENARIO_END From a2ea701f31be11fd0e07cbb64cb994f359bd3411 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 1 Apr 2021 13:11:51 +0200 Subject: [PATCH 062/553] - rpz-triggers, fix what domain name to match for nsdname. --- services/rpz.c | 29 ++++++++++++----------------- testdata/rpz_nsdname.rpl | 14 +++++++------- 2 files changed, 19 insertions(+), 24 deletions(-) diff --git a/services/rpz.c b/services/rpz.c index 6a37cb9b3..9af652984 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -1928,23 +1928,18 @@ rpz_delegation_point_zone_lookup(struct delegpt* dp, struct local_zones* zones, struct local_zone* z = NULL; rpz_log_dname("delegation point", dp->name, dp->namelen); - // XXX: do we want this? - z = rpz_find_zone(zones, dp->name, dp->namelen, qclass, 0, 0, 0); - if(z != NULL) { - match->dname = dp->name; - match->dname_len = dp->namelen; - } else if(z == NULL) { - for(nameserver = dp->nslist; - nameserver != NULL; - nameserver = nameserver->next) { - rpz_log_dname("delegation point", nameserver->name, nameserver->namelen); - z = rpz_find_zone(zones, nameserver->name, nameserver->namelen, - qclass, 0, 0, 0); - if(z != NULL) { - match->dname = nameserver->name; - match->dname_len = nameserver->namelen; - break; - } + /* the rpz specs match the nameserver names (NS records), not the + * name of the delegation point itself, to the nsdname triggers */ + for(nameserver = dp->nslist; + nameserver != NULL; + nameserver = nameserver->next) { + rpz_log_dname("delegation point ns", nameserver->name, nameserver->namelen); + z = rpz_find_zone(zones, nameserver->name, nameserver->namelen, + qclass, 0, 0, 0); + if(z != NULL) { + match->dname = nameserver->name; + match->dname_len = nameserver->namelen; + break; } } diff --git a/testdata/rpz_nsdname.rpl b/testdata/rpz_nsdname.rpl index 64fb98880..7b55ebeb7 100644 --- a/testdata/rpz_nsdname.rpl +++ b/testdata/rpz_nsdname.rpl @@ -16,13 +16,13 @@ rpz 3600 IN SOA ns1.rpz.example.com. hostmaster.rpz.example.com. ( 3600 IN NS ns1.rpz.example.com. 3600 IN NS ns2.rpz.example.com. $ORIGIN rpz.example.com. -gotham.aa.rpz-nsdname CNAME . -gotham.bb.rpz-nsdname CNAME *. -gotham.cc.rpz-nsdname CNAME rpz-drop. -gotham.com.rpz-nsdname CNAME rpz-passthru. -gotham.dd.rpz-nsdname CNAME rpz-tcp-only. -gotham.ff.rpz-nsdname A 127.0.0.1 -gotham.ff.rpz-nsdname TXT "42" +ns1.gotham.aa.rpz-nsdname CNAME . +ns1.gotham.bb.rpz-nsdname CNAME *. +ns1.gotham.cc.rpz-nsdname CNAME rpz-drop. +ns1.gotham.com.rpz-nsdname CNAME rpz-passthru. +ns1.gotham.dd.rpz-nsdname CNAME rpz-tcp-only. +ns1.gotham.ff.rpz-nsdname A 127.0.0.1 +ns1.gotham.ff.rpz-nsdname TXT "42" TEMPFILE_END stub-zone: From 7396eff7af10eb85bee277ad06e2858cfa6f553e Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 8 Apr 2021 13:47:06 +0200 Subject: [PATCH 063/553] - Fix for #411: Depth protect for crash on deleted element timeout. --- doc/Changelog | 3 +++ services/outside_network.c | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 66e6f9a48..147775427 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +7 April 2021: Wouter + - Fix for #411: Depth protect for crash on deleted element timeout. + 1 April 2021: Wouter - Merge #460 from orbea: build: Link with the libtool archive. - Fix to stop IPv6 PMTU discovery. diff --git a/services/outside_network.c b/services/outside_network.c index 9769b7602..d5340d8c2 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -721,7 +721,7 @@ static void waiting_tcp_callback(struct waiting_tcp* w, struct comm_point* c, int error, struct comm_reply* reply_info) { - if(w->cb) { + if(w && w->cb) { fptr_ok(fptr_whitelist_pending_tcp(w->cb)); (void)(*w->cb)(c, w->cb_arg, error, reply_info); } From 473f0cc44be9be16068b754ae48bb9a623aa7d58 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 8 Apr 2021 14:39:48 +0200 Subject: [PATCH 064/553] - rpz-triggers, precedence fix for nsdname and nsip triggers. --- services/rpz.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/services/rpz.c b/services/rpz.c index 9af652984..7c928fb21 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -1966,21 +1966,25 @@ rpz_callback_from_iterator_module(struct module_qstate* ms, struct iter_qstate* lock_rw_rdlock(&az->rpz_lock); + /* precedencey of RPZ works, loosely, like this: + * CNAMEs in order of the CNAME chain. rpzs in the order they are + * configured. In an RPZ: first client-IP addr, then QNAME, then + * response IP, then NSDNAME, then NSIP. Longest match first. Smallest + * one from a set. */ for(a = az->rpz_first; a != NULL; a = a->rpz_az_next) { lock_rw_rdlock(&a->lock); r = a->rpz; - // XXX: check rfc which action has preference - - raddr = rpz_delegation_point_ipbased_trigger_lookup(r, is); - if(raddr != NULL) { + /* the nsdname has precedence over the nsip triggers */ + z = rpz_delegation_point_zone_lookup(is->dp, r->nsdname_zones, + ms->qinfo.qclass, &match); + if(z != NULL) { lock_rw_unlock(&a->lock); break; } - z = rpz_delegation_point_zone_lookup(is->dp, r->nsdname_zones, - ms->qinfo.qclass, &match); - if(z != NULL) { + raddr = rpz_delegation_point_ipbased_trigger_lookup(r, is); + if(raddr != NULL) { lock_rw_unlock(&a->lock); break; } From 0491176315aef21538ab0eadd9a1cdb38a4109ac Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 9 Apr 2021 08:38:18 +0200 Subject: [PATCH 065/553] - rpz-triggers, spelling --- services/rpz.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/rpz.c b/services/rpz.c index 7c928fb21..f8dba3d5b 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -1966,7 +1966,7 @@ rpz_callback_from_iterator_module(struct module_qstate* ms, struct iter_qstate* lock_rw_rdlock(&az->rpz_lock); - /* precedencey of RPZ works, loosely, like this: + /* precedence of RPZ works, loosely, like this: * CNAMEs in order of the CNAME chain. rpzs in the order they are * configured. In an RPZ: first client-IP addr, then QNAME, then * response IP, then NSDNAME, then NSIP. Longest match first. Smallest From fb0da1b6b02df215a54f59f8c68e735632959e1d Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 9 Apr 2021 17:19:04 +0200 Subject: [PATCH 066/553] - rebuild configure to set EXTRALINK to libunbound.la for #460. --- aclocal.m4 | 142 +++++++++++++++++++++++++++++++++----------------- configure | 49 ++++++----------- doc/Changelog | 3 ++ 3 files changed, 114 insertions(+), 80 deletions(-) diff --git a/aclocal.m4 b/aclocal.m4 index 2fedf028c..bf3c57e2f 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1,6 +1,6 @@ -# generated automatically by aclocal 1.16.1 -*- Autoconf -*- +# generated automatically by aclocal 1.16.2 -*- Autoconf -*- -# Copyright (C) 1996-2018 Free Software Foundation, Inc. +# Copyright (C) 1996-2020 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -736,6 +736,7 @@ _LT_CONFIG_SAVE_COMMANDS([ cat <<_LT_EOF >> "$cfgfile" #! $SHELL # Generated automatically by $as_me ($PACKAGE) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # Provide generalized library-building support services. @@ -1047,8 +1048,8 @@ int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD - echo "$AR cr libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD - $AR cr libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD + echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD + $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD cat > conftest.c << _LT_EOF @@ -1498,7 +1499,7 @@ need_locks=$enable_libtool_lock m4_defun([_LT_PROG_AR], [AC_CHECK_TOOLS(AR, [ar], false) : ${AR=ar} -: ${AR_FLAGS=cr} +: ${AR_FLAGS=cru} _LT_DECL([], [AR], [1], [The archiver]) _LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) @@ -2872,6 +2873,9 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) # before this can be enabled. hardcode_into_libs=yes + # Add ABI-specific directories to the system library path. + sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" + # Ideally, we could use ldconfig to report *all* directores which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command @@ -2880,7 +2884,7 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) # appending ld.so.conf contents (and includes) to the search path. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on @@ -2892,18 +2896,6 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) dynamic_linker='GNU/Linux ld.so' ;; -netbsdelf*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='NetBSD ld.elf_so' - ;; - netbsd*) version_type=sunos need_lib_prefix=no @@ -3563,7 +3555,7 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; -netbsd* | netbsdelf*-gnu) +netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else @@ -4069,8 +4061,7 @@ _LT_EOF if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. nlist=conftest.nm - $ECHO "$as_me:$LINENO: $NM conftest.$ac_objext | $lt_cv_sys_global_symbol_pipe > $nlist" >&AS_MESSAGE_LOG_FD - if eval "$NM" conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist 2>&AS_MESSAGE_LOG_FD && test -s "$nlist"; then + if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" @@ -4442,7 +4433,7 @@ m4_if([$1], [CXX], [ ;; esac ;; - netbsd* | netbsdelf*-gnu) + netbsd*) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise @@ -4710,12 +4701,6 @@ m4_if([$1], [CXX], [ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; - # flang / f18. f95 an alias for gfortran or flang on Debian - flang* | f18* | f95*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) @@ -4960,9 +4945,6 @@ m4_if([$1], [CXX], [ ;; esac ;; - linux* | k*bsd*-gnu | gnu*) - _LT_TAGVAR(link_all_deplibs, $1)=no - ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; @@ -5025,9 +5007,6 @@ dnl Note also adjust exclude_expsyms for C++ above. openbsd* | bitrig*) with_gnu_ld=no ;; - linux* | k*bsd*-gnu | gnu*) - _LT_TAGVAR(link_all_deplibs, $1)=no - ;; esac _LT_TAGVAR(ld_shlibs, $1)=yes @@ -5282,7 +5261,7 @@ _LT_EOF fi ;; - netbsd* | netbsdelf*-gnu) + netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= @@ -5803,7 +5782,6 @@ _LT_EOF if test yes = "$lt_cv_irix_exported_symbol"; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi - _LT_TAGVAR(link_all_deplibs, $1)=no else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' @@ -5825,7 +5803,7 @@ _LT_EOF esac ;; - netbsd* | netbsdelf*-gnu) + netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else @@ -6447,7 +6425,7 @@ if test yes != "$_lt_caught_CXX_error"; then # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else GXX=no @@ -6822,7 +6800,7 @@ if test yes != "$_lt_caught_CXX_error"; then # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP " \-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then @@ -6887,7 +6865,7 @@ if test yes != "$_lt_caught_CXX_error"; then # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP " \-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then @@ -7226,7 +7204,7 @@ if test yes != "$_lt_caught_CXX_error"; then # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # FIXME: insert proper C++ library support @@ -7310,7 +7288,7 @@ if test yes != "$_lt_caught_CXX_error"; then # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # g++ 2.7 appears to require '-G' NOT '-shared' on this # platform. @@ -7321,7 +7299,7 @@ if test yes != "$_lt_caught_CXX_error"; then # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir' @@ -9066,9 +9044,9 @@ m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) -dnl pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- -dnl serial 11 (pkg-config-0.29.1) -dnl +# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- +# serial 11 (pkg-config-0.29.1) + dnl Copyright © 2004 Scott James Remnant . dnl Copyright © 2012-2015 Dan Nicholson dnl @@ -9342,9 +9320,77 @@ AS_VAR_COPY([$1], [pkg_cv_][$1]) AS_VAR_IF([$1], [""], [$5], [$4])dnl ])dnl PKG_CHECK_VAR +dnl PKG_WITH_MODULES(VARIABLE-PREFIX, MODULES, +dnl [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND], +dnl [DESCRIPTION], [DEFAULT]) +dnl ------------------------------------------ +dnl +dnl Prepare a "--with-" configure option using the lowercase +dnl [VARIABLE-PREFIX] name, merging the behaviour of AC_ARG_WITH and +dnl PKG_CHECK_MODULES in a single macro. +AC_DEFUN([PKG_WITH_MODULES], +[ +m4_pushdef([with_arg], m4_tolower([$1])) + +m4_pushdef([description], + [m4_default([$5], [build with ]with_arg[ support])]) + +m4_pushdef([def_arg], [m4_default([$6], [auto])]) +m4_pushdef([def_action_if_found], [AS_TR_SH([with_]with_arg)=yes]) +m4_pushdef([def_action_if_not_found], [AS_TR_SH([with_]with_arg)=no]) + +m4_case(def_arg, + [yes],[m4_pushdef([with_without], [--without-]with_arg)], + [m4_pushdef([with_without],[--with-]with_arg)]) + +AC_ARG_WITH(with_arg, + AS_HELP_STRING(with_without, description[ @<:@default=]def_arg[@:>@]),, + [AS_TR_SH([with_]with_arg)=def_arg]) + +AS_CASE([$AS_TR_SH([with_]with_arg)], + [yes],[PKG_CHECK_MODULES([$1],[$2],$3,$4)], + [auto],[PKG_CHECK_MODULES([$1],[$2], + [m4_n([def_action_if_found]) $3], + [m4_n([def_action_if_not_found]) $4])]) + +m4_popdef([with_arg]) +m4_popdef([description]) +m4_popdef([def_arg]) + +])dnl PKG_WITH_MODULES + +dnl PKG_HAVE_WITH_MODULES(VARIABLE-PREFIX, MODULES, +dnl [DESCRIPTION], [DEFAULT]) +dnl ----------------------------------------------- +dnl +dnl Convenience macro to trigger AM_CONDITIONAL after PKG_WITH_MODULES +dnl check._[VARIABLE-PREFIX] is exported as make variable. +AC_DEFUN([PKG_HAVE_WITH_MODULES], +[ +PKG_WITH_MODULES([$1],[$2],,,[$3],[$4]) + +AM_CONDITIONAL([HAVE_][$1], + [test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"]) +])dnl PKG_HAVE_WITH_MODULES + +dnl PKG_HAVE_DEFINE_WITH_MODULES(VARIABLE-PREFIX, MODULES, +dnl [DESCRIPTION], [DEFAULT]) +dnl ------------------------------------------------------ +dnl +dnl Convenience macro to run AM_CONDITIONAL and AC_DEFINE after +dnl PKG_WITH_MODULES check. HAVE_[VARIABLE-PREFIX] is exported as make +dnl and preprocessor variable. +AC_DEFUN([PKG_HAVE_DEFINE_WITH_MODULES], +[ +PKG_HAVE_WITH_MODULES([$1],[$2],[$3],[$4]) + +AS_IF([test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"], + [AC_DEFINE([HAVE_][$1], 1, [Enable ]m4_tolower([$1])[ support])]) +])dnl PKG_HAVE_DEFINE_WITH_MODULES + # AM_CONDITIONAL -*- Autoconf -*- -# Copyright (C) 1997-2018 Free Software Foundation, Inc. +# Copyright (C) 1997-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -9375,7 +9421,7 @@ AC_CONFIG_COMMANDS_PRE( Usually this means the macro was only invoked conditionally.]]) fi])]) -# Copyright (C) 2006-2018 Free Software Foundation, Inc. +# Copyright (C) 2006-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, diff --git a/configure b/configure index 6099122b1..266691d42 100755 --- a/configure +++ b/configure @@ -8074,7 +8074,7 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; -netbsd* | netbsdelf*-gnu) +netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else @@ -8436,7 +8436,7 @@ esac fi : ${AR=ar} -: ${AR_FLAGS=cr} +: ${AR_FLAGS=cru} @@ -8979,8 +8979,11 @@ _LT_EOF test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm - $ECHO "$as_me:$LINENO: $NM conftest.$ac_objext | $lt_cv_sys_global_symbol_pipe > $nlist" >&5 - if eval "$NM" conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist 2>&5 && test -s "$nlist"; then + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 + (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" @@ -10199,8 +10202,8 @@ int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 - echo "$AR cr libconftest.a conftest.o" >&5 - $AR cr libconftest.a conftest.o 2>&5 + echo "$AR cru libconftest.a conftest.o" >&5 + $AR cru libconftest.a conftest.o 2>&5 echo "$RANLIB libconftest.a" >&5 $RANLIB libconftest.a 2>&5 cat > conftest.c << _LT_EOF @@ -11060,12 +11063,6 @@ lt_prog_compiler_static= lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; - # flang / f18. f95 an alias for gfortran or flang on Debian - flang* | f18* | f95*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) @@ -11542,9 +11539,6 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie openbsd* | bitrig*) with_gnu_ld=no ;; - linux* | k*bsd*-gnu | gnu*) - link_all_deplibs=no - ;; esac ld_shlibs=yes @@ -11799,7 +11793,7 @@ _LT_EOF fi ;; - netbsd* | netbsdelf*-gnu) + netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= @@ -12469,7 +12463,6 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; } if test yes = "$lt_cv_irix_exported_symbol"; then archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi - link_all_deplibs=no else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' @@ -12491,7 +12484,7 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; } esac ;; - netbsd* | netbsdelf*-gnu) + netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else @@ -13586,6 +13579,9 @@ fi # before this can be enabled. hardcode_into_libs=yes + # Add ABI-specific directories to the system library path. + sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" + # Ideally, we could use ldconfig to report *all* directores which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command @@ -13594,7 +13590,7 @@ fi # appending ld.so.conf contents (and includes) to the search path. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on @@ -13606,18 +13602,6 @@ fi dynamic_linker='GNU/Linux ld.so' ;; -netbsdelf*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='NetBSD ld.elf_so' - ;; - netbsd*) version_type=sunos need_lib_prefix=no @@ -21065,7 +21049,7 @@ case "$enable_allsymbols" in yes) COMMON_OBJ_ALL_SYMBOLS="" UBSYMS="" - EXTRALINK="-L. -L.libs -lunbound" + EXTRALINK="libunbound.la" $as_echo "#define EXPORT_ALL_SYMBOLS 1" >>confdefs.h @@ -23347,6 +23331,7 @@ $as_echo "$as_me: executing $ac_file commands" >&6;} cat <<_LT_EOF >> "$cfgfile" #! $SHELL # Generated automatically by $as_me ($PACKAGE) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # Provide generalized library-building support services. diff --git a/doc/Changelog b/doc/Changelog index 147775427..6986b2177 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +9 April 2021: Wouter + - rebuild configure to set EXTRALINK to libunbound.la for #460. + 7 April 2021: Wouter - Fix for #411: Depth protect for crash on deleted element timeout. From addd21f750b6042c40c2a92aef9b8919d8497532 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 12 Apr 2021 11:18:23 +0200 Subject: [PATCH 067/553] - Fix permission denied sendto log, squelch the log messages unless high verbosity is set. --- doc/Changelog | 4 ++++ util/netevent.c | 1 + 2 files changed, 5 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 6986b2177..e369037b1 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +12 April 2021: Wouter + - Fix permission denied sendto log, squelch the log messages + unless high verbosity is set. + 9 April 2021: Wouter - rebuild configure to set EXTRALINK to libunbound.la for #460. diff --git a/util/netevent.c b/util/netevent.c index a5ea46229..a7c4a306a 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -299,6 +299,7 @@ udp_send_errno_needs_log(struct sockaddr* addr, socklen_t addrlen) # ifdef ENETDOWN case ENETDOWN: # endif + case EPERM: if(verbosity < VERB_ALGO) return 0; default: From 403d0551b7a65023e15be43ae5c1fd938edd6025 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Mon, 12 Apr 2021 16:49:45 +0200 Subject: [PATCH 068/553] - Fix (increase) verbosity level for iterator error log in processQueryTargets(). --- doc/Changelog | 4 ++++ iterator/iterator.c | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index e369037b1..c62b48893 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +12 April 2021: George + - Fix (increase) verbosity level for iterator error log in + processQueryTargets(). + 12 April 2021: Wouter - Fix permission denied sendto log, squelch the log messages unless high verbosity is set. diff --git a/iterator/iterator.c b/iterator/iterator.c index 99d020117..83ded0808 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -2611,7 +2611,7 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, (iq->dp->ssl_upstream || qstate->env->cfg->ssl_upstream), target->tls_auth_name, qstate); if(!outq) { - log_addr(VERB_DETAIL, "error sending query to auth server", + log_addr(VERB_QUERY, "error sending query to auth server", &target->addr, target->addrlen); if(!(iq->chase_flags & BIT_RD) && !iq->ratelimit_ok) infra_ratelimit_dec(qstate->env->infra_cache, iq->dp->name, From 55ba863440dc5b1266b79f26ed92bbbdde5a2ebb Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 13 Apr 2021 13:52:57 +0200 Subject: [PATCH 069/553] - Fix that nxdomain synthesis does not happen above the stub or forward definition. --- cachedb/cachedb.c | 8 +++++++- doc/Changelog | 4 ++++ edns-subnet/subnetmod.c | 2 +- iterator/iter_utils.c | 15 ++++++++++++++- iterator/iter_utils.h | 7 ++++++- iterator/iterator.c | 12 +++++++----- services/cache/dns.c | 5 ++++- services/cache/dns.h | 4 +++- 8 files changed, 46 insertions(+), 11 deletions(-) diff --git a/cachedb/cachedb.c b/cachedb/cachedb.c index e948a6b0d..af4ffe5f2 100644 --- a/cachedb/cachedb.c +++ b/cachedb/cachedb.c @@ -617,12 +617,18 @@ cachedb_extcache_store(struct module_qstate* qstate, struct cachedb_env* ie) static int cachedb_intcache_lookup(struct module_qstate* qstate) { + uint8_t* dpname=NULL; + size_t dpnamelen=0; struct dns_msg* msg; + if(iter_stub_fwd_no_cache(qstate, &qstate->qinfo, + &dpname, &dpnamelen)) + return 0; /* no cache for these queries */ msg = dns_cache_lookup(qstate->env, qstate->qinfo.qname, qstate->qinfo.qname_len, qstate->qinfo.qtype, qstate->qinfo.qclass, qstate->query_flags, qstate->region, qstate->env->scratch, - 1 /* no partial messages with only a CNAME */ + 1, /* no partial messages with only a CNAME */ + dpname, dpnamelen ); if(!msg && qstate->env->neg_cache && iter_qname_indicates_dnssec(qstate->env, &qstate->qinfo)) { diff --git a/doc/Changelog b/doc/Changelog index c62b48893..1f61b19bb 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +13 April 2021: Wouter + - Fix that nxdomain synthesis does not happen above the stub or + forward definition. + 12 April 2021: George - Fix (increase) verbosity level for iterator error log in processQueryTargets(). diff --git a/edns-subnet/subnetmod.c b/edns-subnet/subnetmod.c index 6c8589aba..ade40c66e 100644 --- a/edns-subnet/subnetmod.c +++ b/edns-subnet/subnetmod.c @@ -150,7 +150,7 @@ int ecs_whitelist_check(struct query_info* qinfo, /* Cache by default, might be disabled after parsing EDNS option * received from nameserver. */ - if(!iter_stub_fwd_no_cache(qstate, &qstate->qinfo)) { + if(!iter_stub_fwd_no_cache(qstate, &qstate->qinfo, NULL, NULL)) { qstate->no_cache_store = 0; } diff --git a/iterator/iter_utils.c b/iterator/iter_utils.c index 94fa18f63..adc611f73 100644 --- a/iterator/iter_utils.c +++ b/iterator/iter_utils.c @@ -1391,7 +1391,8 @@ int iter_dp_cangodown(struct query_info* qinfo, struct delegpt* dp) } int -iter_stub_fwd_no_cache(struct module_qstate *qstate, struct query_info *qinf) +iter_stub_fwd_no_cache(struct module_qstate *qstate, struct query_info *qinf, + uint8_t** retdpname, size_t* retdpnamelen) { struct iter_hints_stub *stub; struct delegpt *dp; @@ -1420,6 +1421,10 @@ iter_stub_fwd_no_cache(struct module_qstate *qstate, struct query_info *qinf) dname_str(stub->dp->name, dpname); verbose(VERB_ALGO, "stub for %s %s has no_cache", qname, dpname); } + if(retdpname) { + *retdpname = stub->dp->name; + *retdpnamelen = stub->dp->namelen; + } return (stub->dp->no_cache); } @@ -1432,8 +1437,16 @@ iter_stub_fwd_no_cache(struct module_qstate *qstate, struct query_info *qinf) dname_str(dp->name, dpname); verbose(VERB_ALGO, "forward for %s %s has no_cache", qname, dpname); } + if(retdpname) { + *retdpname = dp->name; + *retdpnamelen = dp->namelen; + } return (dp->no_cache); } + if(retdpname) { + *retdpname = NULL; + *retdpnamelen = 0; + } return 0; } diff --git a/iterator/iter_utils.h b/iterator/iter_utils.h index 7be79cf4a..509d2921e 100644 --- a/iterator/iter_utils.h +++ b/iterator/iter_utils.h @@ -382,10 +382,15 @@ int iter_dp_cangodown(struct query_info* qinfo, struct delegpt* dp); * Lookup if no_cache is set in stub or fwd. * @param qstate: query state with env with hints and fwds. * @param qinf: query name to lookup for. + * @param retdpname: returns NULL or the deepest enclosing name of fwd or stub. + * This is the name under which the closest lookup is going to happen. + * Used for NXDOMAIN checks, above that it is an nxdomain from a + * different server and zone. You can pass NULL to not get it. + * @param retdpnamelen: returns the length of the dpname. * @return true if no_cache is set in stub or fwd. */ int iter_stub_fwd_no_cache(struct module_qstate *qstate, - struct query_info *qinf); + struct query_info *qinf, uint8_t** retdpname, size_t* retdpnamelen); /** * Set support for IP4 and IP6 depending on outgoing interfaces diff --git a/iterator/iterator.c b/iterator/iterator.c index 83ded0808..0f662304d 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -1228,8 +1228,8 @@ static int processInitRequest(struct module_qstate* qstate, struct iter_qstate* iq, struct iter_env* ie, int id) { - uint8_t* delname; - size_t delnamelen; + uint8_t* delname, *dpname=NULL; + size_t delnamelen, dpnamelen=0; struct dns_msg* msg = NULL; log_query_info(VERB_DETAIL, "resolving", &qstate->qinfo); @@ -1283,7 +1283,7 @@ processInitRequest(struct module_qstate* qstate, struct iter_qstate* iq, /* This either results in a query restart (CNAME cache response), a * terminating response (ANSWER), or a cache miss (null). */ - if (iter_stub_fwd_no_cache(qstate, &iq->qchase)) { + if (iter_stub_fwd_no_cache(qstate, &iq->qchase, &dpname, &dpnamelen)) { /* Asked to not query cache. */ verbose(VERB_ALGO, "no-cache set, going to the network"); qstate->no_cache_lookup = 1; @@ -1298,7 +1298,8 @@ processInitRequest(struct module_qstate* qstate, struct iter_qstate* iq, msg = dns_cache_lookup(qstate->env, iq->qchase.qname, iq->qchase.qname_len, iq->qchase.qtype, iq->qchase.qclass, qstate->query_flags, - qstate->region, qstate->env->scratch, 0); + qstate->region, qstate->env->scratch, 0, dpname, + dpnamelen); if(!msg && qstate->env->neg_cache && iter_qname_indicates_dnssec(qstate->env, &iq->qchase)) { /* lookup in negative cache; may result in @@ -2288,7 +2289,8 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, iq->qinfo_out.qname, iq->qinfo_out.qname_len, iq->qinfo_out.qtype, iq->qinfo_out.qclass, qstate->query_flags, qstate->region, - qstate->env->scratch, 0); + qstate->env->scratch, 0, iq->dp->name, + iq->dp->namelen); if(msg && FLAGS_GET_RCODE(msg->rep->flags) == LDNS_RCODE_NOERROR) /* no need to send query if it is already diff --git a/services/cache/dns.c b/services/cache/dns.c index f3149b614..5b64fe475 100644 --- a/services/cache/dns.c +++ b/services/cache/dns.c @@ -801,7 +801,7 @@ struct dns_msg* dns_cache_lookup(struct module_env* env, uint8_t* qname, size_t qnamelen, uint16_t qtype, uint16_t qclass, uint16_t flags, struct regional* region, struct regional* scratch, - int no_partial) + int no_partial, uint8_t* dpname, size_t dpnamelen) { struct lruhash_entry* e; struct query_info k; @@ -923,6 +923,9 @@ dns_cache_lookup(struct module_env* env, * the same. We search upwards for NXDOMAINs. */ if(env->cfg->harden_below_nxdomain) { while(!dname_is_root(k.qname)) { + if(dpname && dpnamelen + && !dname_subdomain_c(k.qname, dpname)) + break; /* no synth nxdomain above the stub */ dname_remove_label(&k.qname, &k.qname_len); h = query_info_hash(&k, flags); e = slabhash_lookup(env->msg_cache, h, &k, 0); diff --git a/services/cache/dns.h b/services/cache/dns.h index f1b77fb36..bece83702 100644 --- a/services/cache/dns.h +++ b/services/cache/dns.h @@ -164,6 +164,8 @@ struct dns_msg* tomsg(struct module_env* env, struct query_info* q, * @param scratch: where to allocate temporary data. * @param no_partial: if true, only complete messages and not a partial * one (with only the start of the CNAME chain and not the rest). + * @param dpname: if not NULL, do not return NXDOMAIN above this name. + * @param dpnamelen: length of dpname. * @return new response message (alloced in region, rrsets do not have IDs). * or NULL on error or if not found in cache. * TTLs are made relative to the current time. @@ -171,7 +173,7 @@ struct dns_msg* tomsg(struct module_env* env, struct query_info* q, struct dns_msg* dns_cache_lookup(struct module_env* env, uint8_t* qname, size_t qnamelen, uint16_t qtype, uint16_t qclass, uint16_t flags, struct regional* region, struct regional* scratch, - int no_partial); + int no_partial, uint8_t* dpname, size_t dpnamelen); /** * find and add A and AAAA records for missing nameservers in delegpt From b774d97b3cb650ffaf3ab316ade4f3e463478e28 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Tue, 13 Apr 2021 13:58:53 +0200 Subject: [PATCH 070/553] - Fix documentation comment for files previously residing in checkconf/. --- doc/Changelog | 3 +++ smallapp/unbound-checkconf.c | 2 +- smallapp/unbound-control.c | 2 +- smallapp/unbound-host.c | 2 +- smallapp/worker_cb.c | 2 +- 5 files changed, 7 insertions(+), 4 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index c62b48893..1ff1abbf6 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +13 April 2021: George + - Fix documentation comment for files previously residing in checkconf/. + 12 April 2021: George - Fix (increase) verbosity level for iterator error log in processQueryTargets(). diff --git a/smallapp/unbound-checkconf.c b/smallapp/unbound-checkconf.c index 34a1f5bb4..5d1d67684 100644 --- a/smallapp/unbound-checkconf.c +++ b/smallapp/unbound-checkconf.c @@ -1,5 +1,5 @@ /* - * checkconf/unbound-checkconf.c - config file checker for unbound.conf file. + * smallapp/unbound-checkconf.c - config file checker for unbound.conf file. * * Copyright (c) 2007, NLnet Labs. All rights reserved. * diff --git a/smallapp/unbound-control.c b/smallapp/unbound-control.c index 5a6f0c560..86e3949c0 100644 --- a/smallapp/unbound-control.c +++ b/smallapp/unbound-control.c @@ -1,5 +1,5 @@ /* - * checkconf/unbound-control.c - remote control utility for unbound. + * smallapp/unbound-control.c - remote control utility for unbound. * * Copyright (c) 2008, NLnet Labs. All rights reserved. * diff --git a/smallapp/unbound-host.c b/smallapp/unbound-host.c index 1ae2d8521..d612575f3 100644 --- a/smallapp/unbound-host.c +++ b/smallapp/unbound-host.c @@ -1,5 +1,5 @@ /* - * checkconf/unbound-host.c - replacement for host that supports validation. + * smallapp/unbound-host.c - replacement for host that supports validation. * * Copyright (c) 2007, NLnet Labs. All rights reserved. * diff --git a/smallapp/worker_cb.c b/smallapp/worker_cb.c index cdf855dc3..63c27fda2 100644 --- a/smallapp/worker_cb.c +++ b/smallapp/worker_cb.c @@ -1,5 +1,5 @@ /* - * checkconf/worker_cb.c - fake callback routines to make fptr_wlist work + * smallapp/worker_cb.c - fake callback routines to make fptr_wlist work * * Copyright (c) 2007, NLnet Labs. All rights reserved. * From 13e445d50b6e2a9441d9364d4213a57781d9e6f1 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Tue, 13 Apr 2021 14:54:26 +0200 Subject: [PATCH 071/553] - Remove unused functions worker_handle_reply and libworker_handle_reply. --- daemon/worker.c | 40 ---------------------------------- dnstap/unbound-dnstap-socket.c | 16 -------------- doc/Changelog | 1 + libunbound/libworker.c | 37 ------------------------------- libunbound/worker.h | 8 ------- smallapp/worker_cb.c | 16 -------------- util/fptr_wlist.c | 4 ---- 7 files changed, 1 insertion(+), 121 deletions(-) diff --git a/daemon/worker.c b/daemon/worker.c index ffe7ff2d4..7bd64bce4 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -236,38 +236,6 @@ worker_send_cmd(struct worker* worker, enum worker_commands cmd) } } -int -worker_handle_reply(struct comm_point* c, void* arg, int error, - struct comm_reply* reply_info) -{ - struct module_qstate* q = (struct module_qstate*)arg; - struct worker* worker = q->env->worker; - struct outbound_entry e; - e.qstate = q; - e.qsent = NULL; - - if(error != 0) { - mesh_report_reply(worker->env.mesh, &e, reply_info, error); - worker_mem_report(worker, NULL); - return 0; - } - /* sanity check. */ - if(!LDNS_QR_WIRE(sldns_buffer_begin(c->buffer)) - || LDNS_OPCODE_WIRE(sldns_buffer_begin(c->buffer)) != - LDNS_PACKET_QUERY - || LDNS_QDCOUNT(sldns_buffer_begin(c->buffer)) > 1) { - /* error becomes timeout for the module as if this reply - * never arrived. */ - mesh_report_reply(worker->env.mesh, &e, reply_info, - NETEVENT_TIMEOUT); - worker_mem_report(worker, NULL); - return 0; - } - mesh_report_reply(worker->env.mesh, &e, reply_info, NETEVENT_NOERROR); - worker_mem_report(worker, NULL); - return 0; -} - int worker_handle_service_reply(struct comm_point* c, void* arg, int error, struct comm_reply* reply_info) @@ -2077,14 +2045,6 @@ struct outbound_entry* libworker_send_query( return 0; } -int libworker_handle_reply(struct comm_point* ATTR_UNUSED(c), - void* ATTR_UNUSED(arg), int ATTR_UNUSED(error), - struct comm_reply* ATTR_UNUSED(reply_info)) -{ - log_assert(0); - return 0; -} - int libworker_handle_service_reply(struct comm_point* ATTR_UNUSED(c), void* ATTR_UNUSED(arg), int ATTR_UNUSED(error), struct comm_reply* ATTR_UNUSED(reply_info)) diff --git a/dnstap/unbound-dnstap-socket.c b/dnstap/unbound-dnstap-socket.c index 8e28be4e8..9eaf01243 100644 --- a/dnstap/unbound-dnstap-socket.c +++ b/dnstap/unbound-dnstap-socket.c @@ -1375,14 +1375,6 @@ int worker_handle_request(struct comm_point* ATTR_UNUSED(c), return 0; } -int worker_handle_reply(struct comm_point* ATTR_UNUSED(c), - void* ATTR_UNUSED(arg), int ATTR_UNUSED(error), - struct comm_reply* ATTR_UNUSED(reply_info)) -{ - log_assert(0); - return 0; -} - int worker_handle_service_reply(struct comm_point* ATTR_UNUSED(c), void* ATTR_UNUSED(arg), int ATTR_UNUSED(error), struct comm_reply* ATTR_UNUSED(reply_info)) @@ -1456,14 +1448,6 @@ struct outbound_entry* libworker_send_query( return 0; } -int libworker_handle_reply(struct comm_point* ATTR_UNUSED(c), - void* ATTR_UNUSED(arg), int ATTR_UNUSED(error), - struct comm_reply* ATTR_UNUSED(reply_info)) -{ - log_assert(0); - return 0; -} - int libworker_handle_service_reply(struct comm_point* ATTR_UNUSED(c), void* ATTR_UNUSED(arg), int ATTR_UNUSED(error), struct comm_reply* ATTR_UNUSED(reply_info)) diff --git a/doc/Changelog b/doc/Changelog index 8abea8ee6..af6ee1ab1 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,6 @@ 13 April 2021: George - Fix documentation comment for files previously residing in checkconf/. + - Remove unused functions worker_handle_reply and libworker_handle_reply. 13 April 2021: Wouter - Fix that nxdomain synthesis does not happen above the stub or diff --git a/libunbound/libworker.c b/libunbound/libworker.c index 7f46df386..2b7f7a1e4 100644 --- a/libunbound/libworker.c +++ b/libunbound/libworker.c @@ -876,35 +876,6 @@ struct outbound_entry* libworker_send_query(struct query_info* qinfo, return e; } -int -libworker_handle_reply(struct comm_point* c, void* arg, int error, - struct comm_reply* reply_info) -{ - struct module_qstate* q = (struct module_qstate*)arg; - struct libworker* lw = (struct libworker*)q->env->worker; - struct outbound_entry e; - e.qstate = q; - e.qsent = NULL; - - if(error != 0) { - mesh_report_reply(lw->env->mesh, &e, reply_info, error); - return 0; - } - /* sanity check. */ - if(!LDNS_QR_WIRE(sldns_buffer_begin(c->buffer)) - || LDNS_OPCODE_WIRE(sldns_buffer_begin(c->buffer)) != - LDNS_PACKET_QUERY - || LDNS_QDCOUNT(sldns_buffer_begin(c->buffer)) > 1) { - /* error becomes timeout for the module as if this reply - * never arrived. */ - mesh_report_reply(lw->env->mesh, &e, reply_info, - NETEVENT_TIMEOUT); - return 0; - } - mesh_report_reply(lw->env->mesh, &e, reply_info, NETEVENT_NOERROR); - return 0; -} - int libworker_handle_service_reply(struct comm_point* c, void* arg, int error, struct comm_reply* reply_info) @@ -947,14 +918,6 @@ int worker_handle_request(struct comm_point* ATTR_UNUSED(c), return 0; } -int worker_handle_reply(struct comm_point* ATTR_UNUSED(c), - void* ATTR_UNUSED(arg), int ATTR_UNUSED(error), - struct comm_reply* ATTR_UNUSED(reply_info)) -{ - log_assert(0); - return 0; -} - int worker_handle_service_reply(struct comm_point* ATTR_UNUSED(c), void* ATTR_UNUSED(arg), int ATTR_UNUSED(error), struct comm_reply* ATTR_UNUSED(reply_info)) diff --git a/libunbound/worker.h b/libunbound/worker.h index fe1d51878..bf7473861 100644 --- a/libunbound/worker.h +++ b/libunbound/worker.h @@ -75,10 +75,6 @@ struct outbound_entry* libworker_send_query(struct query_info* qinfo, size_t zonelen, int ssl_upstream, char* tls_auth_name, struct module_qstate* q); -/** process incoming replies from the network */ -int libworker_handle_reply(struct comm_point* c, void* arg, int error, - struct comm_reply* reply_info); - /** process incoming serviced query replies from the network */ int libworker_handle_service_reply(struct comm_point* c, void* arg, int error, struct comm_reply* reply_info); @@ -146,10 +142,6 @@ void worker_handle_control_cmd(struct tube* tube, uint8_t* msg, size_t len, int worker_handle_request(struct comm_point* c, void* arg, int error, struct comm_reply* repinfo); -/** process incoming replies from the network */ -int worker_handle_reply(struct comm_point* c, void* arg, int error, - struct comm_reply* reply_info); - /** process incoming serviced query replies from the network */ int worker_handle_service_reply(struct comm_point* c, void* arg, int error, struct comm_reply* reply_info); diff --git a/smallapp/worker_cb.c b/smallapp/worker_cb.c index 63c27fda2..473e32a60 100644 --- a/smallapp/worker_cb.c +++ b/smallapp/worker_cb.c @@ -65,14 +65,6 @@ int worker_handle_request(struct comm_point* ATTR_UNUSED(c), return 0; } -int worker_handle_reply(struct comm_point* ATTR_UNUSED(c), - void* ATTR_UNUSED(arg), int ATTR_UNUSED(error), - struct comm_reply* ATTR_UNUSED(reply_info)) -{ - log_assert(0); - return 0; -} - int worker_handle_service_reply(struct comm_point* ATTR_UNUSED(c), void* ATTR_UNUSED(arg), int ATTR_UNUSED(error), struct comm_reply* ATTR_UNUSED(reply_info)) @@ -146,14 +138,6 @@ struct outbound_entry* libworker_send_query( return 0; } -int libworker_handle_reply(struct comm_point* ATTR_UNUSED(c), - void* ATTR_UNUSED(arg), int ATTR_UNUSED(error), - struct comm_reply* ATTR_UNUSED(reply_info)) -{ - log_assert(0); - return 0; -} - int libworker_handle_service_reply(struct comm_point* ATTR_UNUSED(c), void* ATTR_UNUSED(arg), int ATTR_UNUSED(error), struct comm_reply* ATTR_UNUSED(reply_info)) diff --git a/util/fptr_wlist.c b/util/fptr_wlist.c index 2b01e533c..de6dbd02a 100644 --- a/util/fptr_wlist.c +++ b/util/fptr_wlist.c @@ -196,8 +196,6 @@ int fptr_whitelist_pending_udp(comm_point_callback_type *fptr) { if(fptr == &serviced_udp_callback) return 1; - else if(fptr == &worker_handle_reply) return 1; - else if(fptr == &libworker_handle_reply) return 1; return 0; } @@ -205,8 +203,6 @@ int fptr_whitelist_pending_tcp(comm_point_callback_type *fptr) { if(fptr == &serviced_tcp_callback) return 1; - else if(fptr == &worker_handle_reply) return 1; - else if(fptr == &libworker_handle_reply) return 1; return 0; } From ab94ca9684d31fbeaa6bb14bebc685ea8c9d99d6 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 14 Apr 2021 12:11:11 +0200 Subject: [PATCH 072/553] - rpz-triggers, nicer logging for nsdname and nsip triggers, one line and only when it applies to the delegation point. --- services/rpz.c | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/services/rpz.c b/services/rpz.c index f8dba3d5b..07189c198 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -709,15 +709,9 @@ rpz_insert_nsdname_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, { uint8_t* dname_stripped = NULL; size_t dnamelen_stripped = 0; - verbose(VERB_ALGO, "rpz: insert nsdname trigger: %s", - rpz_action_to_string(a)); - rpz_log_dname("insert nsdname trigger", dname, dnamelen); rpz_strip_nsdname_suffix(dname, dnamelen, &dname_stripped, &dnamelen_stripped); - rpz_log_dname("insert nsdname trigger (stripped)", dname_stripped, - dnamelen_stripped); - if(a == RPZ_INVALID_ACTION) { verbose(VERB_ALGO, "rpz: skipping invalid action"); free(dname_stripped); @@ -941,7 +935,6 @@ rpz_insert_nsip_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, socklen_t addrlen; int net, af; - verbose(VERB_ALGO, "rpz: insert nsip trigger: %s", rpz_action_to_string(a)); if(a == RPZ_INVALID_ACTION) { return 0; } @@ -1377,12 +1370,16 @@ rpz_ipbased_trigger_lookup(struct clientip_synthesized_rrset* set, addr, addrlen); if(raddr != NULL) { action = raddr->action; + if(verbosity >= VERB_ALGO) { + char ip[256], net[256]; + addr_to_str(addr, addrlen, ip, sizeof(ip)); + addr_to_str(&raddr->node.addr, raddr->node.addrlen, + net, sizeof(net)); + verbose(VERB_ALGO, "rpz: trigger nsip %s/%d on %s action=%s", + net, raddr->node.net, ip, rpz_action_to_string(action)); + } lock_rw_unlock(&raddr->lock); } - - verbose(VERB_ALGO, "rpz: ipbased trigger lookup: found=%d action=%s", - raddr != NULL, rpz_action_to_string(action)); - lock_rw_unlock(&set->lock); return raddr; @@ -1679,7 +1676,6 @@ local_data_find_type(struct local_data* data, uint16_t type, int alias_ok) struct local_rrset* p; type = htons(type); for(p = data->rrsets; p; p = p->next) { - verbose(VERB_ALGO, "type=%d (%d)", type, p->rrset->rk.type); if(p->rrset->rk.type == type) return p; if(alias_ok && p->rrset->rk.type == htons(LDNS_RR_TYPE_CNAME)) @@ -1826,9 +1822,6 @@ rpz_apply_nsip_trigger(struct module_qstate* ms, struct rpz* r, action = r->action_override; } - verbose(VERB_ALGO, "rpz: iterator callback: nsip: apply action=%s", - rpz_action_to_string(raddr->action)); - if(action == RPZ_LOCAL_DATA_ACTION && raddr->data == NULL) { verbose(VERB_ALGO, "rpz: bug: nsip local data action but no local data"); ret = rpz_synthesize_nodata(r, ms, &ms->qinfo); @@ -1883,8 +1876,6 @@ rpz_apply_nsdname_trigger(struct module_qstate* ms, struct rpz* r, action = r->action_override; } - verbose(VERB_ALGO, "rpz: nsdame trigger with action=%s", rpz_action_to_string(action)); - switch(action) { case RPZ_NXDOMAIN_ACTION: ret = rpz_synthesize_nxdomain(r, ms, &ms->qinfo); @@ -1927,24 +1918,31 @@ rpz_delegation_point_zone_lookup(struct delegpt* dp, struct local_zones* zones, struct delegpt_ns* nameserver; struct local_zone* z = NULL; - rpz_log_dname("delegation point", dp->name, dp->namelen); /* the rpz specs match the nameserver names (NS records), not the * name of the delegation point itself, to the nsdname triggers */ for(nameserver = dp->nslist; nameserver != NULL; nameserver = nameserver->next) { - rpz_log_dname("delegation point ns", nameserver->name, nameserver->namelen); z = rpz_find_zone(zones, nameserver->name, nameserver->namelen, qclass, 0, 0, 0); if(z != NULL) { match->dname = nameserver->name; match->dname_len = nameserver->namelen; + if(verbosity >= VERB_ALGO) { + char nm[255+1], zn[255+1]; + dname_str(match->dname, nm); + dname_str(z->name, zn); + if(strcmp(nm, zn) != 0) + verbose(VERB_ALGO, "rpz: trigger nsdname %s on %s action=%s", + zn, nm, rpz_action_to_string(localzone_type_to_rpz_action(z->type))); + else + verbose(VERB_ALGO, "rpz: trigger nsdname %s action=%s", + nm, rpz_action_to_string(localzone_type_to_rpz_action(z->type))); + } break; } } - verbose(VERB_ALGO, "rpz: delegation point zone found=%d", z != NULL); - return z; } @@ -1971,6 +1969,8 @@ rpz_callback_from_iterator_module(struct module_qstate* ms, struct iter_qstate* * configured. In an RPZ: first client-IP addr, then QNAME, then * response IP, then NSDNAME, then NSIP. Longest match first. Smallest * one from a set. */ + /* we use the precedence rules for the topics and triggers that + * are pertinent at this stage of the resolve processing */ for(a = az->rpz_first; a != NULL; a = a->rpz_az_next) { lock_rw_rdlock(&a->lock); r = a->rpz; From a23efc70eeb257fc699cb5f13b23e148b141777d Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 14 Apr 2021 13:54:27 +0200 Subject: [PATCH 073/553] - rpz-triggers, nicer logging for qname and clientip triggers. --- services/rpz.c | 81 ++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 58 insertions(+), 23 deletions(-) diff --git a/services/rpz.c b/services/rpz.c index 07189c198..3a998afaa 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -141,6 +141,31 @@ get_tld_label(uint8_t* dname, size_t maxdnamelen) return prevlab; } +/** + * The RR types that are to be ignored. + * DNSSEC RRs at the apex, and SOA and NS are ignored. + */ +static int +rpz_type_ignored(uint16_t rr_type) +{ + switch(rr_type) { + case LDNS_RR_TYPE_SOA: + case LDNS_RR_TYPE_NS: + case LDNS_RR_TYPE_DNAME: + /* all DNSSEC-related RRs must be ignored */ + case LDNS_RR_TYPE_DNSKEY: + case LDNS_RR_TYPE_DS: + case LDNS_RR_TYPE_RRSIG: + case LDNS_RR_TYPE_NSEC: + case LDNS_RR_TYPE_NSEC3: + case LDNS_RR_TYPE_NSEC3PARAM: + return 1; + default: + break; + } + return 0; +} + /** * Classify RPZ action for RR type/rdata * @param rr_type: the RR type @@ -600,6 +625,8 @@ rpz_insert_local_zones_trigger(struct local_zones* lz, uint8_t* dname, lock_rw_unlock(&lz->lock); return; } + if(rrstr[0]) + rrstr[strlen(rrstr)-1]=0; /* remove newline */ verbose(VERB_ALGO, "rpz: skipping duplicate record: '%s'", rrstr); free(rrstr); free(dname); @@ -652,10 +679,6 @@ rpz_insert_qname_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, enum rpz_action a, uint16_t rrtype, uint16_t rrclass, uint32_t ttl, uint8_t* rdata, size_t rdata_len, uint8_t* rr, size_t rr_len) { - verbose(VERB_ALGO, "rpz: insert qname trigger: %s", rpz_action_to_string(a)); - - rpz_log_dname("insert qname trigger", dname, dnamelen); - if(a == RPZ_INVALID_ACTION) { verbose(VERB_ALGO, "rpz: skipping invalid action"); free(dname); @@ -912,7 +935,6 @@ rpz_insert_clientip_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, socklen_t addrlen; int net, af; - verbose(VERB_ALGO, "rpz: insert clientip trigger: %s", rpz_action_to_string(a)); if(a == RPZ_INVALID_ACTION) { return 0; } @@ -992,6 +1014,10 @@ rpz_insert_rr(struct rpz* r, uint8_t* azname, size_t aznamelen, uint8_t* dname, enum rpz_action a; uint8_t* policydname; + if(rpz_type_ignored(rr_type)) { + /* this rpz action is not valid, eg. this is the SOA or NS RR */ + return 1; + } if(!dname_subdomain_c(dname, azname)) { char* dname_str = sldns_wire2str_dname(dname, dnamelen); char* azname_str = sldns_wire2str_dname(azname, aznamelen); @@ -1359,7 +1385,7 @@ log_rpz_apply(uint8_t* dname, enum rpz_action a, struct query_info* qinfo, static struct clientip_synthesized_rr* rpz_ipbased_trigger_lookup(struct clientip_synthesized_rrset* set, - struct sockaddr_storage* addr, socklen_t addrlen) + struct sockaddr_storage* addr, socklen_t addrlen, char* triggername) { struct clientip_synthesized_rr* raddr = NULL; enum rpz_action action = RPZ_INVALID_ACTION; @@ -1375,8 +1401,8 @@ rpz_ipbased_trigger_lookup(struct clientip_synthesized_rrset* set, addr_to_str(addr, addrlen, ip, sizeof(ip)); addr_to_str(&raddr->node.addr, raddr->node.addrlen, net, sizeof(net)); - verbose(VERB_ALGO, "rpz: trigger nsip %s/%d on %s action=%s", - net, raddr->node.net, ip, rpz_action_to_string(action)); + verbose(VERB_ALGO, "rpz: trigger %s %s/%d on %s action=%s", + triggername, net, raddr->node.net, ip, rpz_action_to_string(action)); } lock_rw_unlock(&raddr->lock); } @@ -1414,7 +1440,7 @@ rpz_resolve_client_action_and_zone(struct auth_zones* az, struct query_info* qin } z = rpz_find_zone(r->local_zones, qinfo->qname, qinfo->qname_len, qinfo->qclass, 0, 0, 0); - node = rpz_ipbased_trigger_lookup(r->client_set, &repinfo->addr, repinfo->addrlen); + node = rpz_ipbased_trigger_lookup(r->client_set, &repinfo->addr, repinfo->addrlen, "clientip"); if((z || node) && r->action_override == RPZ_DISABLED_ACTION) { if(r->log) log_rpz_apply(z->name, @@ -1517,11 +1543,7 @@ rpz_apply_clientip_localdata_action(struct clientip_synthesized_rr* raddr, int rcode = LDNS_RCODE_NOERROR|BIT_AA; int rrset_count = 1; - verbose(VERB_ALGO, "rpz: apply client ip trigger: found=%d action=%s", - raddr != NULL, rpz_action_to_string(action)); - /* prepare synthesized answer for client */ - action = raddr->action; if(action == RPZ_LOCAL_DATA_ACTION && raddr->data == NULL ) { verbose(VERB_ALGO, "rpz: bug: local-data action but no local data"); @@ -1529,7 +1551,6 @@ rpz_apply_clientip_localdata_action(struct clientip_synthesized_rr* raddr, } /* check query type / rr type */ - rrset = rpz_find_synthesized_rrset(qinfo->qtype, raddr); if(rrset == NULL) { verbose(VERB_ALGO, "rpz: unable to find local-data for query"); @@ -1803,7 +1824,7 @@ rpz_delegation_point_ipbased_trigger_lookup(struct rpz* rpz, struct iter_qstate* cursor = cursor->next_target) { if(cursor->bogus) { continue; } action = rpz_ipbased_trigger_lookup(rpz->ns_set, &cursor->addr, - cursor->addrlen); + cursor->addrlen, "nsip"); if(action != NULL) { return action; } } return NULL; @@ -2043,8 +2064,17 @@ struct dns_msg* rpz_callback_from_iterator_cname(struct module_qstate* ms, lzt = rpz_action_to_localzone_type(r->action_override); } - verbose(VERB_ALGO, "rpz: qname trigger after cname, with action=%s", - rpz_action_to_string(localzone_type_to_rpz_action(lzt))); + if(verbosity >= VERB_ALGO) { + char nm[255+1], zn[255+1]; + dname_str(is->qchase.qname, nm); + dname_str(z->name, zn); + if(strcmp(zn, nm) != 0) + verbose(VERB_ALGO, "rpz: qname trigger after cname %s on %s, with action=%s", + zn, nm, rpz_action_to_string(localzone_type_to_rpz_action(lzt))); + else + verbose(VERB_ALGO, "rpz: qname trigger after cname %s, with action=%s", + nm, rpz_action_to_string(localzone_type_to_rpz_action(lzt))); + } switch(localzone_type_to_rpz_action(lzt)) { case RPZ_NXDOMAIN_ACTION: ret = rpz_synthesize_nxdomain(r, ms, &is->qchase); @@ -2094,12 +2124,8 @@ rpz_apply_maybe_clientip_trigger(struct auth_zones* az, struct module_env* env, client_action = ((node == NULL) ? RPZ_INVALID_ACTION : node->action); - verbose(VERB_ALGO, "rpz: qname trigger: client action=%s", - rpz_action_to_string(client_action)); - if(*z_out == NULL || (client_action != RPZ_INVALID_ACTION && client_action != RPZ_PASSTHRU_ACTION)) { - verbose(VERB_ALGO, "rpz: client action without zone"); if(client_action == RPZ_PASSTHRU_ACTION || client_action == RPZ_INVALID_ACTION || (client_action == RPZ_TCP_ONLY_ACTION @@ -2156,8 +2182,17 @@ rpz_callback_from_worker_request(struct auth_zones* az, struct module_env* env, lzt = rpz_action_to_localzone_type(r->action_override); } - verbose(VERB_ALGO, "rpz: qname trigger with action=%s", - rpz_action_to_string(localzone_type_to_rpz_action(lzt))); + if(verbosity >= VERB_ALGO) { + char nm[255+1], zn[255+1]; + dname_str(qinfo->qname, nm); + dname_str(z->name, zn); + if(strcmp(zn, nm) != 0) + verbose(VERB_ALGO, "rpz: qname trigger %s on %s with action=%s", + zn, nm, rpz_action_to_string(localzone_type_to_rpz_action(lzt))); + else + verbose(VERB_ALGO, "rpz: qname trigger %s with action=%s", + nm, rpz_action_to_string(localzone_type_to_rpz_action(lzt))); + } ret = rpz_synthesize_qname_localdata(env, r, z, lzt, qinfo, edns, buf, temp, repinfo, stats); From 69349c7c249767de5e359d9a93652e0005d31f62 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 14 Apr 2021 16:35:39 +0200 Subject: [PATCH 074/553] - rpz-triggers, nicer logging for response IP triggers. --- respip/respip.c | 26 +++++++++++++++++++++----- services/rpz.c | 1 - 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/respip/respip.c b/respip/respip.c index 633cde6e0..cf1de07a5 100644 --- a/respip/respip.c +++ b/respip/respip.c @@ -602,7 +602,7 @@ rdata2sockaddr(const struct packed_rrset_data* rd, uint16_t rtype, size_t i, */ static struct resp_addr* respip_addr_lookup(const struct reply_info *rep, struct respip_set* rs, - size_t* rrset_id) + size_t* rrset_id, size_t* rr_id) { size_t i; struct resp_addr* ra; @@ -625,6 +625,7 @@ respip_addr_lookup(const struct reply_info *rep, struct respip_set* rs, &ss, addrlen); if(ra) { *rrset_id = i; + *rr_id = j; lock_rw_rdlock(&ra->lock); lock_rw_unlock(&rs->lock); return ra; @@ -869,7 +870,7 @@ respip_rewrite_reply(const struct query_info* qinfo, size_t tag_datas_size; struct view* view = NULL; struct respip_set* ipset = NULL; - size_t rrset_id = 0; + size_t rrset_id = 0, rr_id = 0; enum respip_action action = respip_none; int tag = -1; struct resp_addr* raddr = NULL; @@ -910,7 +911,7 @@ respip_rewrite_reply(const struct query_info* qinfo, lock_rw_rdlock(&view->lock); if(view->respip_set) { if((raddr = respip_addr_lookup(rep, - view->respip_set, &rrset_id))) { + view->respip_set, &rrset_id, &rr_id))) { /** for per-view respip directives the action * can only be direct (i.e. not tag-based) */ action = raddr->action; @@ -924,7 +925,7 @@ respip_rewrite_reply(const struct query_info* qinfo, } } if(!raddr && (raddr = respip_addr_lookup(rep, ipset, - &rrset_id))) { + &rrset_id, &rr_id))) { action = (enum respip_action)local_data_find_tag_action( raddr->taglist, raddr->taglen, ctaglist, ctaglen, tag_actions, tag_actions_size, @@ -938,7 +939,7 @@ respip_rewrite_reply(const struct query_info* qinfo, if(!r->taglist || taglist_intersect(r->taglist, r->taglistlen, ctaglist, ctaglen)) { if((raddr = respip_addr_lookup(rep, - r->respip_set, &rrset_id))) { + r->respip_set, &rrset_id, &rr_id))) { if(!respip_use_rpz(raddr, r, &action, &data, &rpz_log, &log_name, &rpz_cname_override, region, &rpz_used)) { @@ -949,6 +950,21 @@ respip_rewrite_reply(const struct query_info* qinfo, return 0; } if(rpz_used) { + if(verbosity >= VERB_ALGO) { + struct sockaddr_storage ss; + socklen_t ss_len = 0; + char nm[256], ip[256]; + char qn[255+1]; + if(!rdata2sockaddr(rep->rrsets[rrset_id]->entry.data, ntohs(rep->rrsets[rrset_id]->rk.type), rr_id, &ss, &ss_len)) + snprintf(ip, sizeof(ip), "invalidRRdata"); + else + addr_to_str(&ss, ss_len, ip, sizeof(ip)); + dname_str(qinfo->qname, qn); + addr_to_str(&raddr->node.addr, + raddr->node.addrlen, + nm, sizeof(nm)); + verbose(VERB_ALGO, "respip: rpz response-ip trigger %s/%d on %s %s with action %s", nm, raddr->node.net, qn, ip, rpz_action_to_string(respip_action_to_rpz_action(action))); + } /* break to make sure 'a' stays pointed * to used auth_zone, and keeps lock */ break; diff --git a/services/rpz.c b/services/rpz.c index 3a998afaa..966f7833a 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -980,7 +980,6 @@ rpz_insert_response_ip_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, socklen_t addrlen; int net, af; - verbose(VERB_ALGO, "rpz: insert response ip trigger: %s", rpz_action_to_string(a)); if(a == RPZ_INVALID_ACTION) { return 0; } From 2c9b548ebd81228d29af2fe02ef4dc4f1e0a3bb4 Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Fri, 16 Apr 2021 16:07:04 +0200 Subject: [PATCH 075/553] Simple zonefile printer (maybe I should have called it printzone?) --- Makefile.in | 486 +++++++++++++++++++------------------------- testcode/readzone.c | 107 ++++++++++ 2 files changed, 313 insertions(+), 280 deletions(-) create mode 100644 testcode/readzone.c diff --git a/Makefile.in b/Makefile.in index 8d5c7ee83..81b188bde 100644 --- a/Makefile.in +++ b/Makefile.in @@ -244,6 +244,9 @@ DELAYER_SRC=testcode/delayer.c DELAYER_OBJ=delayer.lo DELAYER_OBJ_LINK=$(DELAYER_OBJ) worker_cb.lo $(COMMON_OBJ) $(COMPAT_OBJ) \ $(SLDNS_OBJ) +READZONE_SRC=testcode/readzone.c +READZONE_OBJ=readzone.lo +READZONE_OBJ_LINK=$(READZONE_OBJ) $(COMPAT_OBJ) $(SLDNS_OBJ) IPSET_SRC=@IPSET_SRC@ IPSET_OBJ=@IPSET_OBJ@ DNSTAP_SOCKET_SRC=dnstap/unbound-dnstap-socket.c @@ -280,7 +283,7 @@ ALL_SRC=$(COMMON_SRC) $(UNITTEST_SRC) $(DAEMON_SRC) \ $(CONTROL_SRC) $(UBANCHOR_SRC) $(PETAL_SRC) $(DNSTAP_SOCKET_SRC)\ $(PYTHONMOD_SRC) $(PYUNBOUND_SRC) $(WIN_DAEMON_THE_SRC) \ $(SVCINST_SRC) $(SVCUNINST_SRC) $(ANCHORUPD_SRC) $(SLDNS_SRC) \ - $(DOHCLIENT_SRC) + $(DOHCLIENT_SRC) $(READZONE_SRC) ALL_OBJ=$(COMMON_OBJ) $(UNITTEST_OBJ) $(DAEMON_OBJ) \ $(TESTBOUND_OBJ) $(LOCKVERIFY_OBJ) $(PKTVIEW_OBJ) \ @@ -289,7 +292,7 @@ ALL_OBJ=$(COMMON_OBJ) $(UNITTEST_OBJ) $(DAEMON_OBJ) \ $(CONTROL_OBJ) $(UBANCHOR_OBJ) $(PETAL_OBJ) $(DNSTAP_SOCKET_OBJ)\ $(COMPAT_OBJ) $(PYUNBOUND_OBJ) \ $(SVCINST_OBJ) $(SVCUNINST_OBJ) $(ANCHORUPD_OBJ) $(SLDNS_OBJ) \ - $(DOHCLIENT_OBJ) + $(DOHCLIENT_OBJ) $(READZONE_OBJ) COMPILE=$(LIBTOOL) --tag=CC --mode=compile $(CC) $(CPPFLAGS) $(CFLAGS) @PTHREAD_CFLAGS_ONLY@ LINK=$(LIBTOOL) --tag=CC --mode=link $(CC) $(staticexe) $(RUNTIME_PATH) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) @@ -405,6 +408,9 @@ perf$(EXEEXT): $(PERF_OBJ_LINK) delayer$(EXEEXT): $(DELAYER_OBJ_LINK) $(LINK) -o $@ $(DELAYER_OBJ_LINK) $(SSLLIB) $(LIBS) +readzone$(EXEEXT): $(READZONE_OBJ_LINK) + $(LINK) -o $@ $(READZONE_OBJ_LINK) $(SSLLIB) $(LIBS) + signit$(EXEEXT): testcode/signit.c $(CC) $(CPPFLAGS) $(CFLAGS) @PTHREAD_CFLAGS_ONLY@ -o $@ testcode/signit.c $(LDFLAGS) -lldns $(SSLLIB) $(LIBS) @@ -701,7 +707,8 @@ infra.lo infra.o: $(srcdir)/services/cache/infra.c config.h $(srcdir)/sldns/rrde rrset.lo rrset.o: $(srcdir)/services/cache/rrset.c config.h $(srcdir)/services/cache/rrset.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/storage/slabhash.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/config_file.h \ - $(srcdir)/util/data/msgreply.h $(srcdir)/util/regional.h $(srcdir)/util/alloc.h $(srcdir)/util/net_help.h + $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/util/regional.h \ + $(srcdir)/util/alloc.h $(srcdir)/util/net_help.h as112.lo as112.o: $(srcdir)/util/as112.c $(srcdir)/util/as112.h dname.lo dname.o: $(srcdir)/util/data/dname.c config.h $(srcdir)/util/data/dname.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/msgparse.h \ @@ -790,7 +797,8 @@ iter_utils.lo iter_utils.o: $(srcdir)/iterator/iter_utils.c config.h $(srcdir)/i $(srcdir)/iterator/iter_donotq.h $(srcdir)/iterator/iter_delegpt.h $(srcdir)/iterator/iter_priv.h \ $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ $(srcdir)/services/cache/dns.h $(srcdir)/services/cache/rrset.h \ - $(srcdir)/util/storage/slabhash.h $(srcdir)/util/net_help.h $(srcdir)/util/config_file.h \ + $(srcdir)/util/storage/slabhash.h $(srcdir)/services/outside_network.h \ + $(srcdir)/util/net_help.h $(srcdir)/util/config_file.h \ $(srcdir)/util/regional.h $(srcdir)/util/data/dname.h $(srcdir)/util/random.h $(srcdir)/util/fptr_wlist.h \ $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h \ $(srcdir)/services/localzone.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/services/authzone.h \ @@ -837,11 +845,7 @@ modstack.lo modstack.o: $(srcdir)/services/modstack.c config.h $(srcdir)/service $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h \ $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/dns64/dns64.h $(srcdir)/iterator/iterator.h \ - $(srcdir)/services/outbound_list.h $(srcdir)/validator/validator.h $(srcdir)/validator/val_utils.h \ - $(PYTHONMOD_HEADER) $(DYNLIBMOD_HEADER) $(srcdir)/cachedb/cachedb.h \ - $(srcdir)/ipsecmod/ipsecmod.h $(srcdir)/edns-subnet/subnetmod.h $(srcdir)/util/alloc.h $(srcdir)/util/net_help.h \ - $(srcdir)/util/storage/slabhash.h $(srcdir)/util/data/dname.h $(srcdir)/edns-subnet/addrtree.h \ - $(srcdir)/edns-subnet/edns-subnet.h $(srcdir)/ipset/ipset.h + $(srcdir)/services/outbound_list.h $(srcdir)/validator/validator.h $(srcdir)/validator/val_utils.h view.lo view.o: $(srcdir)/services/view.c config.h $(srcdir)/services/view.h $(srcdir)/util/rbtree.h \ $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h \ $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/data/msgreply.h \ @@ -872,8 +876,7 @@ outside_network.lo outside_network.o: $(srcdir)/services/outside_network.c confi $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h \ $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h \ - $(srcdir)/util/edns.h $(srcdir)/dnstap/dnstap.h \ - + $(srcdir)/util/edns.h $(srcdir)/dnstap/dnstap.h alloc.lo alloc.o: $(srcdir)/util/alloc.c config.h $(srcdir)/util/alloc.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ $(srcdir)/util/regional.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ @@ -894,8 +897,7 @@ config_file.lo config_file.o: $(srcdir)/util/config_file.c config.h $(srcdir)/ut $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h \ $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/data/dname.h \ $(srcdir)/util/rtt.h $(srcdir)/services/cache/infra.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/parseutil.h \ - $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h $(srcdir)/edns-subnet/edns-subnet.h \ - $(srcdir)/util/iana_ports.inc + $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h $(srcdir)/util/iana_ports.inc configlexer.lo configlexer.o: util/configlexer.c config.h $(srcdir)/util/configyyrename.h \ $(srcdir)/util/config_file.h util/configparser.h configparser.lo configparser.o: util/configparser.c config.h $(srcdir)/util/configyyrename.h \ @@ -924,8 +926,9 @@ authzone.lo authzone.o: $(srcdir)/services/authzone.c config.h $(srcdir)/service $(srcdir)/util/data/msgencode.h $(srcdir)/util/regional.h $(srcdir)/util/net_help.h $(srcdir)/util/random.h \ $(srcdir)/services/cache/dns.h $(srcdir)/services/outside_network.h \ $(srcdir)/services/listen_dnsport.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/wire2str.h \ - $(srcdir)/sldns/parseutil.h $(srcdir)/sldns/keyraw.h \ - $(srcdir)/validator/val_nsec3.h $(srcdir)/validator/val_secalgo.h + $(srcdir)/sldns/parseutil.h $(srcdir)/sldns/keyraw.h $(srcdir)/validator/val_nsec3.h \ + $(srcdir)/validator/val_nsec.h $(srcdir)/validator/val_secalgo.h $(srcdir)/validator/val_sigcrypt.h \ + $(srcdir)/validator/val_anchor.h $(srcdir)/validator/val_utils.h fptr_wlist.lo fptr_wlist.o: $(srcdir)/util/fptr_wlist.c config.h $(srcdir)/util/fptr_wlist.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/module.h \ @@ -934,7 +937,7 @@ fptr_wlist.lo fptr_wlist.o: $(srcdir)/util/fptr_wlist.c config.h $(srcdir)/util/ $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h \ $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ - $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/mini_event.h \ + $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/mini_event.h $(srcdir)/util/rbtree.h \ $(srcdir)/services/outside_network.h $(srcdir)/services/cache/infra.h \ $(srcdir)/util/rtt.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/dns64/dns64.h \ $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h $(srcdir)/iterator/iter_fwd.h \ @@ -942,13 +945,18 @@ fptr_wlist.lo fptr_wlist.o: $(srcdir)/util/fptr_wlist.c config.h $(srcdir)/util/ $(srcdir)/validator/val_nsec3.h $(srcdir)/validator/val_sigcrypt.h $(srcdir)/validator/val_kentry.h \ $(srcdir)/validator/val_neg.h $(srcdir)/validator/autotrust.h $(srcdir)/libunbound/libworker.h \ $(srcdir)/libunbound/context.h $(srcdir)/util/alloc.h $(srcdir)/libunbound/unbound-event.h \ - $(srcdir)/libunbound/worker.h $(PYTHONMOD_HEADER) $(DYNLIBMOD_HEADER) \ - $(srcdir)/cachedb/cachedb.h $(srcdir)/ipsecmod/ipsecmod.h $(srcdir)/edns-subnet/subnetmod.h \ - $(srcdir)/util/net_help.h $(srcdir)/util/data/dname.h $(srcdir)/edns-subnet/addrtree.h \ - $(srcdir)/edns-subnet/edns-subnet.h $(srcdir)/ipset/ipset.h $(srcdir)/dnstap/dtstream.h + $(srcdir)/libunbound/worker.h locks.lo locks.o: $(srcdir)/util/locks.c config.h $(srcdir)/util/locks.h $(srcdir)/util/log.h log.lo log.o: $(srcdir)/util/log.c config.h $(srcdir)/util/log.h $(srcdir)/util/locks.h $(srcdir)/sldns/sbuffer.h -mini_event.lo mini_event.o: $(srcdir)/util/mini_event.c config.h $(srcdir)/util/mini_event.h +mini_event.lo mini_event.o: $(srcdir)/util/mini_event.c config.h $(srcdir)/util/mini_event.h $(srcdir)/util/rbtree.h \ + $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ + $(srcdir)/util/log.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ + $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h \ + $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h \ + $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h \ + $(srcdir)/sldns/sbuffer.h $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h \ + $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h module.lo module.o: $(srcdir)/util/module.c config.h $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h \ $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/wire2str.h @@ -961,14 +969,12 @@ netevent.lo netevent.o: $(srcdir)/util/netevent.c config.h $(srcdir)/util/neteve $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h $(srcdir)/services/view.h \ $(srcdir)/sldns/sbuffer.h $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h \ $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/sldns/str2wire.h \ - $(srcdir)/dnstap/dnstap.h $(srcdir)/services/listen_dnsport.h \ - + $(srcdir)/dnstap/dnstap.h $(srcdir)/services/listen_dnsport.h net_help.lo net_help.o: $(srcdir)/util/net_help.c config.h $(srcdir)/util/net_help.h $(srcdir)/util/log.h \ $(srcdir)/util/data/dname.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/module.h \ $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/regional.h $(srcdir)/util/config_file.h \ - $(srcdir)/sldns/parseutil.h $(srcdir)/sldns/wire2str.h \ - + $(srcdir)/sldns/parseutil.h $(srcdir)/sldns/wire2str.h random.lo random.o: $(srcdir)/util/random.c config.h $(srcdir)/util/random.h $(srcdir)/util/log.h rbtree.lo rbtree.o: $(srcdir)/util/rbtree.c config.h $(srcdir)/util/log.h $(srcdir)/util/fptr_wlist.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ @@ -1022,8 +1028,7 @@ tube.lo tube.o: $(srcdir)/util/tube.c config.h $(srcdir)/util/tube.h $(srcdir)/u $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/ub_event.h ub_event.lo ub_event.o: $(srcdir)/util/ub_event.c config.h $(srcdir)/util/ub_event.h $(srcdir)/util/log.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/util/tube.h \ - + $(srcdir)/util/tube.h $(srcdir)/util/mini_event.h $(srcdir)/util/rbtree.h ub_event_pluggable.lo ub_event_pluggable.o: $(srcdir)/util/ub_event_pluggable.c config.h $(srcdir)/util/ub_event.h \ $(srcdir)/libunbound/unbound-event.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ $(srcdir)/util/log.h $(srcdir)/util/fptr_wlist.h \ @@ -1033,8 +1038,7 @@ ub_event_pluggable.lo ub_event_pluggable.o: $(srcdir)/util/ub_event_pluggable.c $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h \ $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ - $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h \ - + $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/mini_event.h $(srcdir)/util/rbtree.h winsock_event.lo winsock_event.o: $(srcdir)/util/winsock_event.c config.h autotrust.lo autotrust.o: $(srcdir)/validator/autotrust.c config.h $(srcdir)/validator/autotrust.h \ $(srcdir)/util/rbtree.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ @@ -1047,8 +1051,7 @@ autotrust.lo autotrust.o: $(srcdir)/validator/autotrust.c config.h $(srcdir)/val $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h \ $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h \ $(srcdir)/respip/respip.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h \ - $(srcdir)/validator/val_kcache.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/keyraw.h \ - + $(srcdir)/validator/val_kcache.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/keyraw.h val_anchor.lo val_anchor.o: $(srcdir)/validator/val_anchor.c config.h $(srcdir)/validator/val_anchor.h \ $(srcdir)/util/rbtree.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/validator/val_sigcrypt.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/sldns/pkthdr.h \ @@ -1078,13 +1081,11 @@ val_kcache.lo val_kcache.o: $(srcdir)/validator/val_kcache.c config.h $(srcdir)/ val_kentry.lo val_kentry.o: $(srcdir)/validator/val_kentry.c config.h $(srcdir)/validator/val_kentry.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/packed_rrset.h \ $(srcdir)/util/data/dname.h $(srcdir)/util/storage/lookup3.h $(srcdir)/util/regional.h $(srcdir)/util/net_help.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/keyraw.h \ - -val_neg.lo val_neg.o: $(srcdir)/validator/val_neg.c config.h \ - $(srcdir)/validator/val_neg.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/rbtree.h \ - $(srcdir)/validator/val_nsec.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ - $(srcdir)/validator/val_nsec3.h $(srcdir)/validator/val_utils.h $(srcdir)/sldns/pkthdr.h \ - $(srcdir)/util/data/dname.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/net_help.h \ + $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/keyraw.h +val_neg.lo val_neg.o: $(srcdir)/validator/val_neg.c config.h $(srcdir)/validator/val_neg.h $(srcdir)/util/locks.h \ + $(srcdir)/util/log.h $(srcdir)/util/rbtree.h $(srcdir)/validator/val_nsec.h $(srcdir)/util/data/packed_rrset.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/validator/val_nsec3.h $(srcdir)/validator/val_utils.h \ + $(srcdir)/sldns/pkthdr.h $(srcdir)/util/data/dname.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/net_help.h \ $(srcdir)/util/config_file.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h \ $(srcdir)/services/cache/dns.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/sbuffer.h val_nsec3.lo val_nsec3.o: $(srcdir)/validator/val_nsec3.c config.h $(srcdir)/validator/val_nsec3.h \ @@ -1102,17 +1103,15 @@ val_nsec.lo val_nsec.o: $(srcdir)/validator/val_nsec.c config.h $(srcdir)/valida val_secalgo.lo val_secalgo.o: $(srcdir)/validator/val_secalgo.c config.h $(srcdir)/util/data/packed_rrset.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/validator/val_secalgo.h \ $(srcdir)/validator/val_nsec3.h $(srcdir)/util/rbtree.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/keyraw.h \ - $(srcdir)/sldns/sbuffer.h \ - + $(srcdir)/sldns/sbuffer.h val_sigcrypt.lo val_sigcrypt.o: $(srcdir)/validator/val_sigcrypt.c config.h \ $(srcdir)/validator/val_sigcrypt.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/sldns/pkthdr.h $(srcdir)/validator/val_secalgo.h \ $(srcdir)/validator/validator.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \ $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/rrdef.h $(srcdir)/validator/val_utils.h \ $(srcdir)/util/data/dname.h $(srcdir)/util/rbtree.h $(srcdir)/util/net_help.h $(srcdir)/util/regional.h \ - $(srcdir)/util/config_file.h $(srcdir)/sldns/keyraw.h \ - $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/parseutil.h $(srcdir)/sldns/wire2str.h \ - + $(srcdir)/util/config_file.h $(srcdir)/sldns/keyraw.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/parseutil.h \ + $(srcdir)/sldns/wire2str.h val_utils.lo val_utils.o: $(srcdir)/validator/val_utils.c config.h $(srcdir)/validator/val_utils.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ $(srcdir)/sldns/pkthdr.h $(srcdir)/validator/validator.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \ @@ -1133,43 +1132,13 @@ dns64.lo dns64.o: $(srcdir)/dns64/dns64.c config.h $(srcdir)/dns64/dns64.h $(src $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h \ $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/net_help.h \ $(srcdir)/util/regional.h $(srcdir)/util/data/dname.h $(srcdir)/sldns/str2wire.h -edns-subnet.lo edns-subnet.o: $(srcdir)/edns-subnet/edns-subnet.c config.h \ - $(srcdir)/edns-subnet/edns-subnet.h $(srcdir)/util/net_help.h $(srcdir)/util/log.h -subnetmod.lo subnetmod.o: $(srcdir)/edns-subnet/subnetmod.c config.h $(srcdir)/edns-subnet/subnetmod.h \ - $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ - $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ - $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/services/outbound_list.h $(srcdir)/util/alloc.h \ - $(srcdir)/util/net_help.h $(srcdir)/util/storage/slabhash.h $(srcdir)/util/data/dname.h \ - $(srcdir)/edns-subnet/addrtree.h $(srcdir)/edns-subnet/edns-subnet.h \ - $(srcdir)/edns-subnet/subnet-whitelist.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h \ - $(srcdir)/services/mesh.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h \ - $(srcdir)/services/localzone.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/util/config_file.h \ - $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h \ - $(srcdir)/respip/respip.h $(srcdir)/services/cache/dns.h $(srcdir)/util/regional.h \ - $(srcdir)/iterator/iter_utils.h $(srcdir)/iterator/iter_resptype.h +edns-subnet.lo edns-subnet.o: $(srcdir)/edns-subnet/edns-subnet.c config.h +subnetmod.lo subnetmod.o: $(srcdir)/edns-subnet/subnetmod.c config.h addrtree.lo addrtree.o: $(srcdir)/edns-subnet/addrtree.c config.h $(srcdir)/util/log.h \ $(srcdir)/util/data/msgreply.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/module.h $(srcdir)/util/data/msgparse.h \ $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/edns-subnet/addrtree.h -subnet-whitelist.lo subnet-whitelist.o: $(srcdir)/edns-subnet/subnet-whitelist.c config.h \ - $(srcdir)/edns-subnet/edns-subnet.h $(srcdir)/util/net_help.h $(srcdir)/util/log.h \ - $(srcdir)/edns-subnet/subnet-whitelist.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h \ - $(srcdir)/util/regional.h $(srcdir)/util/config_file.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/rrdef.h \ - $(srcdir)/util/data/dname.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h -cachedb.lo cachedb.o: $(srcdir)/cachedb/cachedb.c config.h $(srcdir)/cachedb/cachedb.h $(srcdir)/util/module.h \ - $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/msgreply.h \ - $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/cachedb/redis.h $(srcdir)/util/regional.h $(srcdir)/util/net_help.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/data/msgencode.h $(srcdir)/services/cache/dns.h \ - $(srcdir)/validator/val_neg.h $(srcdir)/util/rbtree.h $(srcdir)/validator/val_secalgo.h \ - $(srcdir)/iterator/iter_utils.h $(srcdir)/iterator/iter_resptype.h $(srcdir)/sldns/parseutil.h \ - $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/sbuffer.h -redis.lo redis.o: $(srcdir)/cachedb/redis.c config.h $(srcdir)/cachedb/redis.h $(srcdir)/cachedb/cachedb.h \ - $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ - $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ - $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/alloc.h $(srcdir)/util/config_file.h \ - $(srcdir)/sldns/sbuffer.h +subnet-whitelist.lo subnet-whitelist.o: $(srcdir)/edns-subnet/subnet-whitelist.c config.h respip.lo respip.o: $(srcdir)/respip/respip.c config.h $(srcdir)/services/localzone.h $(srcdir)/util/rbtree.h \ $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/module.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ @@ -1182,42 +1151,8 @@ respip.lo respip.o: $(srcdir)/respip/respip.c config.h $(srcdir)/services/localz $(srcdir)/util/regional.h checklocks.lo checklocks.o: $(srcdir)/testcode/checklocks.c config.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ $(srcdir)/testcode/checklocks.h -dnstap.lo dnstap.o: $(srcdir)/dnstap/dnstap.c config.h $(srcdir)/sldns/sbuffer.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/net_help.h $(srcdir)/util/log.h $(srcdir)/util/netevent.h \ - $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnstap/dnstap.h \ - $(srcdir)/dnstap/dtstream.h $(srcdir)/util/locks.h dnstap/dnstap.pb-c.h -dnstap.pb-c.lo dnstap.pb-c.o: dnstap/dnstap.pb-c.c dnstap/dnstap.pb-c.h \ - -dnstap_fstrm.lo dnstap_fstrm.o: $(srcdir)/dnstap/dnstap_fstrm.c config.h $(srcdir)/dnstap/dnstap_fstrm.h \ - $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/wire2str.h -dtstream.lo dtstream.o: $(srcdir)/dnstap/dtstream.c config.h $(srcdir)/dnstap/dtstream.h $(srcdir)/util/locks.h \ - $(srcdir)/util/log.h $(srcdir)/dnstap/dnstap_fstrm.h $(srcdir)/util/config_file.h $(srcdir)/util/ub_event.h \ - $(srcdir)/util/net_help.h $(srcdir)/services/outside_network.h $(srcdir)/util/rbtree.h $(srcdir)/util/netevent.h \ - $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/sldns/sbuffer.h \ - -ipsecmod.lo ipsecmod.o: $(srcdir)/ipsecmod/ipsecmod.c config.h $(srcdir)/ipsecmod/ipsecmod.h \ - $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ - $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ - $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/rbtree.h $(srcdir)/ipsecmod/ipsecmod-whitelist.h \ - $(srcdir)/util/storage/dnstree.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h \ - $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/util/tube.h \ - $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ - $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h \ - $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h \ - $(srcdir)/util/regional.h $(srcdir)/util/net_help.h $(srcdir)/services/cache/dns.h $(srcdir)/sldns/wire2str.h -ipsecmod-whitelist.lo ipsecmod-whitelist.o: $(srcdir)/ipsecmod/ipsecmod-whitelist.c config.h \ - $(srcdir)/ipsecmod/ipsecmod.h $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ - $(srcdir)/util/log.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ - $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/rbtree.h \ - $(srcdir)/ipsecmod/ipsecmod-whitelist.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/regional.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/data/dname.h $(srcdir)/sldns/str2wire.h -ipset.lo ipset.o: $(srcdir)/ipset/ipset.c config.h $(srcdir)/ipset/ipset.h $(srcdir)/util/module.h \ - $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/msgreply.h \ - $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/util/regional.h $(srcdir)/util/net_help.h $(srcdir)/util/config_file.h \ - $(srcdir)/services/cache/dns.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/parseutil.h +ipsecmod.lo ipsecmod.o: $(srcdir)/ipsecmod/ipsecmod.c config.h +ipsecmod-whitelist.lo ipsecmod-whitelist.o: $(srcdir)/ipsecmod/ipsecmod-whitelist.c config.h unitanchor.lo unitanchor.o: $(srcdir)/testcode/unitanchor.c config.h $(srcdir)/util/log.h $(srcdir)/util/data/dname.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/testcode/unitmain.h \ $(srcdir)/validator/val_anchor.h $(srcdir)/util/rbtree.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/rrdef.h @@ -1226,8 +1161,7 @@ unitdname.lo unitdname.o: $(srcdir)/testcode/unitdname.c config.h $(srcdir)/util $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/rrdef.h unitlruhash.lo unitlruhash.o: $(srcdir)/testcode/unitlruhash.c config.h $(srcdir)/testcode/unitmain.h \ $(srcdir)/util/log.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/storage/slabhash.h -unitmain.lo unitmain.o: $(srcdir)/testcode/unitmain.c config.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/keyraw.h \ +unitmain.lo unitmain.o: $(srcdir)/testcode/unitmain.c config.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/keyraw.h \ $(srcdir)/util/log.h $(srcdir)/testcode/unitmain.h $(srcdir)/util/alloc.h $(srcdir)/util/locks.h $(srcdir)/util/net_help.h \ $(srcdir)/util/config_file.h $(srcdir)/util/rtt.h $(srcdir)/util/timehist.h $(srcdir)/iterator/iterator.h \ $(srcdir)/services/outbound_list.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/storage/lruhash.h \ @@ -1268,14 +1202,7 @@ testpkts.lo testpkts.o: $(srcdir)/testcode/testpkts.c config.h $(srcdir)/testcod unitldns.lo unitldns.o: $(srcdir)/testcode/unitldns.c config.h $(srcdir)/util/log.h $(srcdir)/testcode/unitmain.h \ $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/wire2str.h \ $(srcdir)/sldns/parseutil.h -unitzonemd.lo unitzonemd.o: $(srcdir)/testcode/unitzonemd.c config.h $(srcdir)/services/authzone.h -unitecs.lo unitecs.o: $(srcdir)/testcode/unitecs.c config.h $(srcdir)/util/log.h $(srcdir)/util/module.h \ - $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/data/msgreply.h \ - $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/testcode/unitmain.h $(srcdir)/edns-subnet/addrtree.h \ - $(srcdir)/edns-subnet/subnetmod.h $(srcdir)/services/outbound_list.h $(srcdir)/util/alloc.h \ - $(srcdir)/util/net_help.h $(srcdir)/util/storage/slabhash.h $(srcdir)/util/data/dname.h \ - $(srcdir)/edns-subnet/edns-subnet.h +unitecs.lo unitecs.o: $(srcdir)/testcode/unitecs.c config.h unitauth.lo unitauth.o: $(srcdir)/testcode/unitauth.c config.h $(srcdir)/services/authzone.h \ $(srcdir)/util/rbtree.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/services/mesh.h $(srcdir)/util/netevent.h \ $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/util/data/msgparse.h \ @@ -1286,49 +1213,56 @@ unitauth.lo unitauth.o: $(srcdir)/testcode/unitauth.c config.h $(srcdir)/service $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/testcode/unitmain.h \ $(srcdir)/util/regional.h $(srcdir)/util/net_help.h $(srcdir)/services/cache/dns.h $(srcdir)/sldns/str2wire.h \ $(srcdir)/sldns/wire2str.h +unitzonemd.lo unitzonemd.o: $(srcdir)/testcode/unitzonemd.c config.h $(srcdir)/util/log.h \ + $(srcdir)/testcode/unitmain.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/rrdef.h $(srcdir)/services/authzone.h \ + $(srcdir)/util/rbtree.h $(srcdir)/util/locks.h $(srcdir)/services/mesh.h $(srcdir)/util/netevent.h \ + $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/sldns/pkthdr.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h \ + $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h \ + $(srcdir)/sldns/sbuffer.h $(srcdir)/util/config_file.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ + $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/data/dname.h $(srcdir)/util/regional.h \ + $(srcdir)/validator/val_anchor.h acl_list.lo acl_list.o: $(srcdir)/daemon/acl_list.c config.h $(srcdir)/daemon/acl_list.h \ $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/services/view.h $(srcdir)/util/locks.h \ $(srcdir)/util/log.h $(srcdir)/util/regional.h $(srcdir)/util/config_file.h $(srcdir)/util/net_help.h \ $(srcdir)/services/localzone.h $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h \ $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/str2wire.h -cachedump.lo cachedump.o: $(srcdir)/daemon/cachedump.c config.h \ - $(srcdir)/daemon/cachedump.h $(srcdir)/daemon/remote.h $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h \ - $(srcdir)/sldns/sbuffer.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ - $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h \ - $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h \ - $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h \ - $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h \ - $(srcdir)/services/cache/dns.h $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h \ - $(srcdir)/util/rbtree.h $(srcdir)/util/rtt.h $(srcdir)/util/regional.h $(srcdir)/util/net_help.h \ - $(srcdir)/util/data/dname.h $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h \ - $(srcdir)/iterator/iter_delegpt.h $(srcdir)/iterator/iter_utils.h $(srcdir)/iterator/iter_resptype.h \ - $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_hints.h $(srcdir)/sldns/wire2str.h \ - $(srcdir)/sldns/str2wire.h -daemon.lo daemon.o: $(srcdir)/daemon/daemon.c config.h \ - $(srcdir)/daemon/daemon.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ - $(srcdir)/daemon/worker.h \ - $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h $(srcdir)/util/data/packed_rrset.h \ - $(srcdir)/util/storage/lruhash.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ - $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/util/module.h \ - $(srcdir)/dnstap/dnstap.h $(srcdir)/daemon/remote.h \ - $(srcdir)/daemon/acl_list.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/services/view.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/shm_side/shm_main.h $(srcdir)/util/storage/lookup3.h \ - $(srcdir)/util/storage/slabhash.h $(srcdir)/util/tcp_conn_limit.h $(srcdir)/util/edns.h \ - $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h \ - $(srcdir)/util/rtt.h $(srcdir)/services/localzone.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h \ - $(srcdir)/services/rpz.h $(srcdir)/respip/respip.h $(srcdir)/util/random.h $(srcdir)/util/tube.h $(srcdir)/util/net_help.h \ - $(srcdir)/sldns/keyraw.h -remote.lo remote.o: $(srcdir)/daemon/remote.c config.h \ - $(srcdir)/daemon/remote.h \ - $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h \ +cachedump.lo cachedump.o: $(srcdir)/daemon/cachedump.c config.h $(srcdir)/daemon/cachedump.h \ + $(srcdir)/daemon/remote.h $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h \ - $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h $(srcdir)/daemon/daemon.h \ + $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h \ + $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/services/cache/dns.h \ + $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/util/rtt.h \ + $(srcdir)/util/regional.h $(srcdir)/util/net_help.h $(srcdir)/util/data/dname.h $(srcdir)/iterator/iterator.h \ + $(srcdir)/services/outbound_list.h $(srcdir)/iterator/iter_delegpt.h $(srcdir)/iterator/iter_utils.h \ + $(srcdir)/iterator/iter_resptype.h $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_hints.h \ + $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h +daemon.lo daemon.o: $(srcdir)/daemon/daemon.c config.h $(srcdir)/daemon/daemon.h $(srcdir)/util/locks.h \ + $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ + $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h \ + $(srcdir)/sldns/sbuffer.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ + $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/util/data/msgreply.h \ + $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h \ + $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h \ + $(srcdir)/daemon/remote.h $(srcdir)/daemon/acl_list.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h \ + $(srcdir)/services/view.h $(srcdir)/util/config_file.h $(srcdir)/util/shm_side/shm_main.h \ + $(srcdir)/util/storage/lookup3.h $(srcdir)/util/storage/slabhash.h $(srcdir)/util/tcp_conn_limit.h \ + $(srcdir)/util/edns.h $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/rrset.h \ + $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h $(srcdir)/services/localzone.h \ + $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h $(srcdir)/services/rpz.h $(srcdir)/respip/respip.h \ + $(srcdir)/util/random.h $(srcdir)/util/tube.h $(srcdir)/util/net_help.h $(srcdir)/sldns/keyraw.h +remote.lo remote.o: $(srcdir)/daemon/remote.c config.h $(srcdir)/daemon/remote.h $(srcdir)/daemon/worker.h \ + $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h $(srcdir)/util/data/packed_rrset.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/netevent.h \ + $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/util/alloc.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ + $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/util/module.h \ + $(srcdir)/dnstap/dnstap.h $(srcdir)/daemon/daemon.h \ $(srcdir)/services/modstack.h $(srcdir)/daemon/cachedump.h $(srcdir)/util/config_file.h \ $(srcdir)/util/net_help.h $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/rrset.h \ $(srcdir)/util/storage/slabhash.h $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h \ @@ -1353,21 +1287,19 @@ stats.lo stats.o: $(srcdir)/daemon/stats.c config.h $(srcdir)/daemon/stats.h $(s $(srcdir)/util/net_help.h $(srcdir)/validator/validator.h $(srcdir)/validator/val_utils.h \ $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h $(srcdir)/services/cache/rrset.h \ $(srcdir)/util/storage/slabhash.h $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h \ - $(srcdir)/validator/val_kcache.h $(srcdir)/validator/val_neg.h $(srcdir)/edns-subnet/subnetmod.h \ - $(srcdir)/util/data/dname.h $(srcdir)/edns-subnet/addrtree.h $(srcdir)/edns-subnet/edns-subnet.h \ - + $(srcdir)/validator/val_kcache.h $(srcdir)/validator/val_neg.h unbound.lo unbound.o: $(srcdir)/daemon/unbound.c config.h $(srcdir)/util/log.h $(srcdir)/daemon/daemon.h \ $(srcdir)/util/locks.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ - $(srcdir)/daemon/remote.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/storage/slabhash.h $(srcdir)/util/storage/lruhash.h \ - $(srcdir)/services/listen_dnsport.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/services/cache/rrset.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/services/cache/infra.h \ - $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/util/rtt.h $(srcdir)/util/data/msgreply.h \ - $(srcdir)/util/fptr_wlist.h $(srcdir)/util/module.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/services/rpz.h \ - $(srcdir)/services/localzone.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/services/authzone.h \ - $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h \ - $(srcdir)/util/net_help.h $(srcdir)/util/ub_event.h + $(srcdir)/daemon/remote.h $(srcdir)/util/config_file.h \ + $(srcdir)/util/storage/slabhash.h $(srcdir)/util/storage/lruhash.h $(srcdir)/services/listen_dnsport.h \ + $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/services/cache/rrset.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h \ + $(srcdir)/util/rbtree.h $(srcdir)/util/rtt.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/fptr_wlist.h \ + $(srcdir)/util/module.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ + $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ + $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h \ + $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/net_help.h \ + $(srcdir)/util/ub_event.h worker.lo worker.o: $(srcdir)/daemon/worker.c config.h $(srcdir)/util/log.h $(srcdir)/util/net_help.h \ $(srcdir)/util/random.h $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ @@ -1375,32 +1307,32 @@ worker.lo worker.o: $(srcdir)/daemon/worker.c config.h $(srcdir)/util/log.h $(sr $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h \ $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h $(srcdir)/daemon/daemon.h \ - $(srcdir)/services/modstack.h $(srcdir)/daemon/remote.h \ - $(srcdir)/daemon/acl_list.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/services/view.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/regional.h $(srcdir)/util/storage/slabhash.h \ - $(srcdir)/services/listen_dnsport.h $(srcdir)/services/outside_network.h \ - $(srcdir)/services/outbound_list.h $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h \ - $(srcdir)/util/rtt.h $(srcdir)/services/cache/dns.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h \ - $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h $(srcdir)/respip/respip.h \ - $(srcdir)/util/data/msgencode.h $(srcdir)/util/data/dname.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h \ - $(srcdir)/util/edns.h $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_hints.h \ - $(srcdir)/validator/autotrust.h $(srcdir)/validator/val_anchor.h $(srcdir)/libunbound/context.h \ - $(srcdir)/libunbound/unbound-event.h $(srcdir)/libunbound/libworker.h $(srcdir)/sldns/wire2str.h \ - $(srcdir)/util/shm_side/shm_main.h $(srcdir)/dnstap/dtstream.h + $(srcdir)/services/modstack.h $(srcdir)/daemon/remote.h $(srcdir)/daemon/acl_list.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/services/view.h $(srcdir)/util/config_file.h \ + $(srcdir)/util/regional.h $(srcdir)/util/storage/slabhash.h $(srcdir)/services/listen_dnsport.h \ + $(srcdir)/services/outside_network.h $(srcdir)/services/outbound_list.h \ + $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h \ + $(srcdir)/services/cache/dns.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h $(srcdir)/services/rpz.h \ + $(srcdir)/services/localzone.h $(srcdir)/respip/respip.h $(srcdir)/util/data/msgencode.h \ + $(srcdir)/util/data/dname.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h $(srcdir)/util/edns.h \ + $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_hints.h $(srcdir)/iterator/iter_utils.h \ + $(srcdir)/iterator/iter_resptype.h $(srcdir)/validator/autotrust.h $(srcdir)/validator/val_anchor.h \ + $(srcdir)/libunbound/context.h $(srcdir)/libunbound/unbound-event.h $(srcdir)/libunbound/libworker.h \ + $(srcdir)/sldns/wire2str.h $(srcdir)/util/shm_side/shm_main.h $(srcdir)/dnstap/dtstream.h testbound.lo testbound.o: $(srcdir)/testcode/testbound.c config.h $(srcdir)/testcode/testpkts.h \ $(srcdir)/testcode/replay.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ $(srcdir)/util/rbtree.h $(srcdir)/testcode/fake_event.h \ - $(srcdir)/daemon/remote.h \ - $(srcdir)/util/config_file.h $(srcdir)/sldns/keyraw.h $(srcdir)/daemon/unbound.c $(srcdir)/util/log.h \ - $(srcdir)/daemon/daemon.h $(srcdir)/util/locks.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ - $(srcdir)/util/storage/slabhash.h $(srcdir)/util/storage/lruhash.h \ - $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/rrset.h \ - $(srcdir)/util/data/packed_rrset.h $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h \ - $(srcdir)/util/rtt.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/module.h \ + $(srcdir)/daemon/remote.h $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ + $(srcdir)/util/config_file.h $(srcdir)/sldns/keyraw.h $(srcdir)/daemon/unbound.c $(srcdir)/daemon/daemon.h \ + $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ + $(srcdir)/util/storage/slabhash.h $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/rrset.h \ + $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rtt.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/module.h \ $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h \ $(srcdir)/services/mesh.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h $(srcdir)/services/view.h \ - $(srcdir)/sldns/sbuffer.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ - $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/net_help.h $(srcdir)/util/ub_event.h + $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h \ + $(srcdir)/respip/respip.h $(srcdir)/util/net_help.h $(srcdir)/util/ub_event.h testpkts.lo testpkts.o: $(srcdir)/testcode/testpkts.c config.h $(srcdir)/testcode/testpkts.h \ $(srcdir)/util/net_help.h $(srcdir)/util/log.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/pkthdr.h \ $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/wire2str.h @@ -1411,39 +1343,38 @@ worker.lo worker.o: $(srcdir)/daemon/worker.c config.h $(srcdir)/util/log.h $(sr $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h \ $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h $(srcdir)/daemon/daemon.h \ - $(srcdir)/services/modstack.h $(srcdir)/daemon/remote.h \ - $(srcdir)/daemon/acl_list.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/services/view.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/regional.h $(srcdir)/util/storage/slabhash.h \ - $(srcdir)/services/listen_dnsport.h $(srcdir)/services/outside_network.h \ - $(srcdir)/services/outbound_list.h $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h \ - $(srcdir)/util/rtt.h $(srcdir)/services/cache/dns.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h \ - $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h $(srcdir)/respip/respip.h \ - $(srcdir)/util/data/msgencode.h $(srcdir)/util/data/dname.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h \ - $(srcdir)/util/edns.h $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_hints.h \ - $(srcdir)/validator/autotrust.h $(srcdir)/validator/val_anchor.h $(srcdir)/libunbound/context.h \ - $(srcdir)/libunbound/unbound-event.h $(srcdir)/libunbound/libworker.h $(srcdir)/sldns/wire2str.h \ - $(srcdir)/util/shm_side/shm_main.h $(srcdir)/dnstap/dtstream.h + $(srcdir)/services/modstack.h $(srcdir)/daemon/remote.h $(srcdir)/daemon/acl_list.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/services/view.h $(srcdir)/util/config_file.h \ + $(srcdir)/util/regional.h $(srcdir)/util/storage/slabhash.h $(srcdir)/services/listen_dnsport.h \ + $(srcdir)/services/outside_network.h $(srcdir)/services/outbound_list.h \ + $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h \ + $(srcdir)/services/cache/dns.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h $(srcdir)/services/rpz.h \ + $(srcdir)/services/localzone.h $(srcdir)/respip/respip.h $(srcdir)/util/data/msgencode.h \ + $(srcdir)/util/data/dname.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h $(srcdir)/util/edns.h \ + $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_hints.h $(srcdir)/iterator/iter_utils.h \ + $(srcdir)/iterator/iter_resptype.h $(srcdir)/validator/autotrust.h $(srcdir)/validator/val_anchor.h \ + $(srcdir)/libunbound/context.h $(srcdir)/libunbound/unbound-event.h $(srcdir)/libunbound/libworker.h \ + $(srcdir)/sldns/wire2str.h $(srcdir)/util/shm_side/shm_main.h $(srcdir)/dnstap/dtstream.h acl_list.lo acl_list.o: $(srcdir)/daemon/acl_list.c config.h $(srcdir)/daemon/acl_list.h \ $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/services/view.h $(srcdir)/util/locks.h \ $(srcdir)/util/log.h $(srcdir)/util/regional.h $(srcdir)/util/config_file.h $(srcdir)/util/net_help.h \ $(srcdir)/services/localzone.h $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h \ $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/str2wire.h -daemon.lo daemon.o: $(srcdir)/daemon/daemon.c config.h \ - $(srcdir)/daemon/daemon.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ - $(srcdir)/daemon/worker.h \ - $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h $(srcdir)/util/data/packed_rrset.h \ - $(srcdir)/util/storage/lruhash.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ - $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/util/module.h \ - $(srcdir)/dnstap/dnstap.h $(srcdir)/daemon/remote.h \ - $(srcdir)/daemon/acl_list.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/services/view.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/shm_side/shm_main.h $(srcdir)/util/storage/lookup3.h \ - $(srcdir)/util/storage/slabhash.h $(srcdir)/util/tcp_conn_limit.h $(srcdir)/util/edns.h \ - $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h \ - $(srcdir)/util/rtt.h $(srcdir)/services/localzone.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h \ - $(srcdir)/services/rpz.h $(srcdir)/respip/respip.h $(srcdir)/util/random.h $(srcdir)/util/tube.h $(srcdir)/util/net_help.h \ - $(srcdir)/sldns/keyraw.h +daemon.lo daemon.o: $(srcdir)/daemon/daemon.c config.h $(srcdir)/daemon/daemon.h $(srcdir)/util/locks.h \ + $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ + $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h \ + $(srcdir)/sldns/sbuffer.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ + $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/util/data/msgreply.h \ + $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h \ + $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h \ + $(srcdir)/daemon/remote.h $(srcdir)/daemon/acl_list.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h \ + $(srcdir)/services/view.h $(srcdir)/util/config_file.h $(srcdir)/util/shm_side/shm_main.h \ + $(srcdir)/util/storage/lookup3.h $(srcdir)/util/storage/slabhash.h $(srcdir)/util/tcp_conn_limit.h \ + $(srcdir)/util/edns.h $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/rrset.h \ + $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h $(srcdir)/services/localzone.h \ + $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h $(srcdir)/services/rpz.h $(srcdir)/respip/respip.h \ + $(srcdir)/util/random.h $(srcdir)/util/tube.h $(srcdir)/util/net_help.h $(srcdir)/sldns/keyraw.h stats.lo stats.o: $(srcdir)/daemon/stats.c config.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ $(srcdir)/libunbound/unbound.h $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ @@ -1457,9 +1388,7 @@ stats.lo stats.o: $(srcdir)/daemon/stats.c config.h $(srcdir)/daemon/stats.h $(s $(srcdir)/util/net_help.h $(srcdir)/validator/validator.h $(srcdir)/validator/val_utils.h \ $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h $(srcdir)/services/cache/rrset.h \ $(srcdir)/util/storage/slabhash.h $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h \ - $(srcdir)/validator/val_kcache.h $(srcdir)/validator/val_neg.h $(srcdir)/edns-subnet/subnetmod.h \ - $(srcdir)/util/data/dname.h $(srcdir)/edns-subnet/addrtree.h $(srcdir)/edns-subnet/edns-subnet.h \ - + $(srcdir)/validator/val_kcache.h $(srcdir)/validator/val_neg.h replay.lo replay.o: $(srcdir)/testcode/replay.c config.h $(srcdir)/util/log.h $(srcdir)/util/net_help.h \ $(srcdir)/util/config_file.h $(srcdir)/testcode/replay.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ $(srcdir)/testcode/testpkts.h $(srcdir)/util/rbtree.h \ @@ -1476,7 +1405,7 @@ fake_event.lo fake_event.o: $(srcdir)/testcode/fake_event.c config.h $(srcdir)/t $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h \ $(srcdir)/services/localzone.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/services/authzone.h \ $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h \ - $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h + $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h $(srcdir)/daemon/remote.h lock_verify.lo lock_verify.o: $(srcdir)/testcode/lock_verify.c config.h $(srcdir)/util/log.h $(srcdir)/util/rbtree.h \ $(srcdir)/util/locks.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/module.h \ @@ -1511,8 +1440,7 @@ unbound-checkconf.lo unbound-checkconf.o: $(srcdir)/smallapp/unbound-checkconf.c $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ - $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/sldns/str2wire.h \ - $(PYTHONMOD_HEADER) $(srcdir)/edns-subnet/subnet-whitelist.h + $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/sldns/str2wire.h worker_cb.lo worker_cb.o: $(srcdir)/smallapp/worker_cb.c config.h $(srcdir)/libunbound/context.h \ $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h \ $(srcdir)/libunbound/unbound.h $(srcdir)/libunbound/unbound-event.h $(srcdir)/util/data/packed_rrset.h \ @@ -1546,70 +1474,72 @@ libunbound.lo libunbound.o: $(srcdir)/libunbound/libunbound.c $(srcdir)/libunbou $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/services/cache/rrset.h \ $(srcdir)/util/storage/slabhash.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h \ $(srcdir)/services/rpz.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/respip/respip.h -libworker.lo libworker.o: $(srcdir)/libunbound/libworker.c config.h \ - $(srcdir)/libunbound/libworker.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ - $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/libunbound/context.h $(srcdir)/util/alloc.h $(srcdir)/util/rbtree.h \ - $(srcdir)/services/modstack.h $(srcdir)/libunbound/unbound.h $(srcdir)/libunbound/unbound-event.h \ - $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h $(srcdir)/services/outside_network.h \ - $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/services/mesh.h $(srcdir)/util/data/msgparse.h \ - $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \ - $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h \ - $(srcdir)/services/view.h $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h \ - $(srcdir)/util/timehist.h $(srcdir)/respip/respip.h $(srcdir)/services/cache/rrset.h \ - $(srcdir)/util/storage/slabhash.h $(srcdir)/services/outbound_list.h $(srcdir)/util/fptr_wlist.h \ - $(srcdir)/util/tube.h $(srcdir)/util/regional.h $(srcdir)/util/random.h $(srcdir)/util/storage/lookup3.h \ - $(srcdir)/util/net_help.h $(srcdir)/util/data/dname.h $(srcdir)/util/data/msgencode.h \ - $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_hints.h $(srcdir)/sldns/str2wire.h +libworker.lo libworker.o: $(srcdir)/libunbound/libworker.c config.h $(srcdir)/libunbound/libworker.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ + $(srcdir)/libunbound/context.h $(srcdir)/util/alloc.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h \ + $(srcdir)/libunbound/unbound.h $(srcdir)/libunbound/unbound-event.h $(srcdir)/libunbound/worker.h \ + $(srcdir)/sldns/sbuffer.h $(srcdir)/services/outside_network.h $(srcdir)/util/netevent.h \ + $(srcdir)/dnscrypt/dnscrypt.h \ + $(srcdir)/services/mesh.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ + $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/util/config_file.h \ + $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/respip/respip.h \ + $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/services/outbound_list.h \ + $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h $(srcdir)/util/regional.h $(srcdir)/util/random.h \ + $(srcdir)/util/storage/lookup3.h $(srcdir)/util/net_help.h $(srcdir)/util/data/dname.h \ + $(srcdir)/util/data/msgencode.h $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_hints.h \ + $(srcdir)/sldns/str2wire.h unbound-host.lo unbound-host.o: $(srcdir)/smallapp/unbound-host.c config.h $(srcdir)/libunbound/unbound.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/wire2str.h \ - + $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/wire2str.h asynclook.lo asynclook.o: $(srcdir)/testcode/asynclook.c config.h $(srcdir)/libunbound/unbound.h \ $(srcdir)/libunbound/context.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/util/rbtree.h \ $(srcdir)/services/modstack.h $(srcdir)/libunbound/unbound-event.h $(srcdir)/util/data/packed_rrset.h \ - $(srcdir)/util/storage/lruhash.h $(srcdir)/sldns/rrdef.h \ - + $(srcdir)/util/storage/lruhash.h $(srcdir)/sldns/rrdef.h streamtcp.lo streamtcp.o: $(srcdir)/testcode/streamtcp.c config.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ $(srcdir)/util/net_help.h $(srcdir)/util/data/msgencode.h $(srcdir)/util/data/msgparse.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/data/msgreply.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/dname.h $(srcdir)/sldns/sbuffer.h \ - $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/wire2str.h \ - + $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/wire2str.h perf.lo perf.o: $(srcdir)/testcode/perf.c config.h $(srcdir)/util/log.h $(srcdir)/util/locks.h $(srcdir)/util/net_help.h \ $(srcdir)/util/data/msgencode.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/storage/lruhash.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h delayer.lo delayer.o: $(srcdir)/testcode/delayer.c config.h $(srcdir)/util/net_help.h $(srcdir)/util/log.h \ $(srcdir)/util/config_file.h $(srcdir)/sldns/sbuffer.h -unbound-control.lo unbound-control.o: $(srcdir)/smallapp/unbound-control.c config.h \ - $(srcdir)/util/log.h $(srcdir)/util/config_file.h $(srcdir)/util/locks.h $(srcdir)/util/net_help.h \ - $(srcdir)/util/shm_side/shm_main.h $(srcdir)/libunbound/unbound.h $(srcdir)/daemon/stats.h \ - $(srcdir)/util/timehist.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/pkthdr.h $(srcdir)/services/rpz.h \ - $(srcdir)/services/localzone.h $(srcdir)/util/rbtree.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/module.h \ - $(srcdir)/util/storage/lruhash.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ - $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/rrdef.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h \ - $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/services/modstack.h $(srcdir)/respip/respip.h +unbound-control.lo unbound-control.o: $(srcdir)/smallapp/unbound-control.c config.h $(srcdir)/util/log.h \ + $(srcdir)/util/config_file.h $(srcdir)/util/locks.h $(srcdir)/util/net_help.h $(srcdir)/util/shm_side/shm_main.h \ + $(srcdir)/libunbound/unbound.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/sldns/wire2str.h \ + $(srcdir)/sldns/pkthdr.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h $(srcdir)/util/rbtree.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/sldns/rrdef.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/services/authzone.h \ + $(srcdir)/services/mesh.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ + $(srcdir)/services/modstack.h $(srcdir)/respip/respip.h \ + $(srcdir)/services/listen_dnsport.h unbound-anchor.lo unbound-anchor.o: $(srcdir)/smallapp/unbound-anchor.c config.h $(srcdir)/libunbound/unbound.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/parseutil.h \ - -petal.lo petal.o: $(srcdir)/testcode/petal.c config.h \ - + $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/parseutil.h +petal.lo petal.o: $(srcdir)/testcode/petal.c config.h unbound-dnstap-socket.lo unbound-dnstap-socket.o: $(srcdir)/dnstap/unbound-dnstap-socket.c config.h \ $(srcdir)/dnstap/dtstream.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/dnstap/dnstap_fstrm.h \ $(srcdir)/util/ub_event.h $(srcdir)/util/net_help.h $(srcdir)/services/listen_dnsport.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/wire2str.h \ - dnstap/dnstap.pb-c.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h -pythonmod_utils.lo pythonmod_utils.o: $(srcdir)/pythonmod/pythonmod_utils.c config.h $(srcdir)/util/module.h \ - $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/msgreply.h \ - $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/util/net_help.h $(srcdir)/services/cache/dns.h \ - $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/util/regional.h \ - $(srcdir)/iterator/iter_delegpt.h $(srcdir)/sldns/sbuffer.h \ - + $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/wire2str.h $(srcdir)/util/config_file.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/daemon/worker.h \ + $(srcdir)/libunbound/worker.h $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h \ + $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h \ + $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h \ + $(srcdir)/daemon/remote.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h \ + $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h \ + $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h \ + $(srcdir)/services/authzone.h $(srcdir)/respip/respip.h $(srcdir)/libunbound/context.h \ + $(srcdir)/libunbound/unbound-event.h +pythonmod_utils.lo pythonmod_utils.o: $(srcdir)/pythonmod/pythonmod_utils.c config.h \ + $(srcdir)/pythonmod/pythonmod_utils.h $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h \ + $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ + $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/netevent.h \ + $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/util/net_help.h \ + $(srcdir)/services/cache/dns.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h \ + $(srcdir)/util/regional.h $(srcdir)/iterator/iter_delegpt.h $(srcdir)/sldns/sbuffer.h win_svc.lo win_svc.o: $(srcdir)/winrc/win_svc.c config.h $(srcdir)/winrc/win_svc.h $(srcdir)/winrc/w_inst.h \ $(srcdir)/daemon/daemon.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ $(srcdir)/daemon/worker.h \ @@ -1617,8 +1547,8 @@ win_svc.lo win_svc.o: $(srcdir)/winrc/win_svc.c config.h $(srcdir)/winrc/win_svc $(srcdir)/util/storage/lruhash.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/util/module.h \ - $(srcdir)/dnstap/dnstap.h $(srcdir)/daemon/remote.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/ub_event.h $(srcdir)/util/net_help.h + $(srcdir)/dnstap/dnstap.h $(srcdir)/daemon/remote.h $(srcdir)/util/config_file.h $(srcdir)/util/ub_event.h \ + $(srcdir)/util/net_help.h w_inst.lo w_inst.o: $(srcdir)/winrc/w_inst.c config.h $(srcdir)/winrc/w_inst.h $(srcdir)/winrc/win_svc.h unbound-service-install.lo unbound-service-install.o: $(srcdir)/winrc/unbound-service-install.c config.h \ $(srcdir)/winrc/w_inst.h @@ -1626,14 +1556,12 @@ unbound-service-remove.lo unbound-service-remove.o: $(srcdir)/winrc/unbound-serv $(srcdir)/winrc/w_inst.h anchor-update.lo anchor-update.o: $(srcdir)/winrc/anchor-update.c config.h $(srcdir)/libunbound/unbound.h \ $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/wire2str.h -keyraw.lo keyraw.o: $(srcdir)/sldns/keyraw.c config.h $(srcdir)/sldns/keyraw.h \ - $(srcdir)/sldns/rrdef.h \ - +keyraw.lo keyraw.o: $(srcdir)/sldns/keyraw.c config.h $(srcdir)/sldns/keyraw.h $(srcdir)/sldns/rrdef.h sbuffer.lo sbuffer.o: $(srcdir)/sldns/sbuffer.c config.h $(srcdir)/sldns/sbuffer.h wire2str.lo wire2str.o: $(srcdir)/sldns/wire2str.c config.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h \ $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/parseutil.h $(srcdir)/sldns/sbuffer.h \ - $(srcdir)/sldns/keyraw.h \ - $(srcdir)/util/data/dname.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h + $(srcdir)/sldns/keyraw.h $(srcdir)/util/data/dname.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ + $(srcdir)/util/log.h parse.lo parse.o: $(srcdir)/sldns/parse.c config.h $(srcdir)/sldns/parse.h $(srcdir)/sldns/parseutil.h \ $(srcdir)/sldns/sbuffer.h parseutil.lo parseutil.o: $(srcdir)/sldns/parseutil.c config.h $(srcdir)/sldns/parseutil.h @@ -1644,8 +1572,8 @@ dohclient.lo dohclient.o: $(srcdir)/testcode/dohclient.c config.h $(srcdir)/sldn $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/parseutil.h \ $(srcdir)/util/data/msgencode.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/storage/lruhash.h \ $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ - $(srcdir)/sldns/pkthdr.h $(srcdir)/util/net_help.h \ - + $(srcdir)/sldns/pkthdr.h $(srcdir)/util/net_help.h +readzone.lo readzone.o: $(srcdir)/testcode/readzone.c ctime_r.lo ctime_r.o: $(srcdir)/compat/ctime_r.c config.h $(srcdir)/util/locks.h $(srcdir)/util/log.h fake-rfc2553.lo fake-rfc2553.o: $(srcdir)/compat/fake-rfc2553.c $(srcdir)/compat/fake-rfc2553.h config.h gmtime_r.lo gmtime_r.o: $(srcdir)/compat/gmtime_r.c config.h @@ -1660,11 +1588,9 @@ strlcat.lo strlcat.o: $(srcdir)/compat/strlcat.c config.h strlcpy.lo strlcpy.o: $(srcdir)/compat/strlcpy.c config.h strptime.lo strptime.o: $(srcdir)/compat/strptime.c config.h getentropy_freebsd.lo getentropy_freebsd.o: $(srcdir)/compat/getentropy_freebsd.c -getentropy_linux.lo getentropy_linux.o: $(srcdir)/compat/getentropy_linux.c config.h \ - +getentropy_linux.lo getentropy_linux.o: $(srcdir)/compat/getentropy_linux.c config.h getentropy_osx.lo getentropy_osx.o: $(srcdir)/compat/getentropy_osx.c -getentropy_solaris.lo getentropy_solaris.o: $(srcdir)/compat/getentropy_solaris.c config.h \ - +getentropy_solaris.lo getentropy_solaris.o: $(srcdir)/compat/getentropy_solaris.c config.h getentropy_win.lo getentropy_win.o: $(srcdir)/compat/getentropy_win.c explicit_bzero.lo explicit_bzero.o: $(srcdir)/compat/explicit_bzero.c config.h arc4random.lo arc4random.o: $(srcdir)/compat/arc4random.c config.h $(srcdir)/compat/chacha_private.h diff --git a/testcode/readzone.c b/testcode/readzone.c new file mode 100644 index 000000000..927d55f53 --- /dev/null +++ b/testcode/readzone.c @@ -0,0 +1,107 @@ +#include +#include +#include +#include +#include + +#include +#include "config.h" +#include "sldns/str2wire.h" +#include "sldns/wire2str.h" + +int print_usage(FILE *out, const char *progname) +{ + fprintf(out, "usage: %s [ -u ] []\n", progname); + fprintf(out, "\t-u\tprint in unknown type (RFC3597) format\n"); + return out == stdout ? EXIT_SUCCESS : EXIT_FAILURE; +} + +int main(int argc, char *const *argv) +{ + char *progname = argv[0]; + uint8_t rr[LDNS_RR_BUF_SIZE]; + char *str = malloc(1024 * 1024); + size_t str_len = sizeof(str); + struct sldns_file_parse_state state; + FILE *in = NULL; + int s = -1; + int opt; + int print_in_unknown_type_format = 0; + + while ((opt = getopt(argc, argv, "hu")) != -1) { + switch (opt) { + case 'h': + return print_usage(stdout, progname); + case 'u': + print_in_unknown_type_format = 1; + break; + default: + return print_usage(stderr, progname); + } + } + argc -= optind; + argv += optind; + + memset(&state, 0, sizeof(state)); + state.default_ttl = 3600; + state.lineno = 1; + if (argc == 2) { + state.origin_len = sizeof(state.origin); + s = sldns_str2wire_dname_buf(argv[1], state.origin + , &state.origin_len); + if (s) { + fprintf(stderr, "Error parsing origin: %s\n" + , sldns_get_errorstr_parse(s)); + return EXIT_FAILURE; + } + s = -1; + } + if (!str) + fprintf(stderr, "Memory allocation error: %s\n" + , strerror(errno)); + + else if (argc != 1 && argc != 2) + return print_usage(stderr, progname); + + else if (!(in = fopen(argv[0], "r"))) + fprintf(stderr, "Error opening \"%s\": %s\n" + , argv[0], strerror(errno)); + else while (!feof(in)) { + size_t rr_len = sizeof(rr), dname_len = 0; + size_t written; + + s = sldns_fp2wire_rr_buf(in, rr, &rr_len, &dname_len, &state); + if (s) { + fprintf( stderr, "parse error %d:%d: %s" + , state.lineno, LDNS_WIREPARSE_OFFSET(s) + , sldns_get_errorstr_parse(s)); + break; + } + if (rr_len == 0) + continue; + + if (print_in_unknown_type_format) + written = sldns_wire2str_rr_unknown_buf( + rr, rr_len, str, str_len); + else + written = sldns_wire2str_rr_buf( + rr, rr_len, str, str_len); + + if (written > str_len) { + while (written > str_len) + str_len *= 2; + free(str); + if (!(str = malloc(str_len))) { + fprintf(stderr, "Memory allocation error: %s\n" + , strerror(errno)); + s = -1; + break; + } + (void) sldns_wire2str_rr_buf(rr, rr_len, str, str_len); + } + fprintf(stdout, "%s", str); + } + if (in) + fclose(in); + return !in || s ? EXIT_FAILURE : EXIT_SUCCESS; +} From 0efccaa1eb330a970812070ebc8eef19b47a4023 Mon Sep 17 00:00:00 2001 From: Felipe Gasper Date: Mon, 19 Apr 2021 13:05:50 -0400 Subject: [PATCH 076/553] Support OpenSSLs that lack SSL_get0_alpn_selected. --- configure.ac | 2 +- util/netevent.c | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 43286e2b9..ba5bf0058 100644 --- a/configure.ac +++ b/configure.ac @@ -859,7 +859,7 @@ AC_CHECK_FUNCS([OPENSSL_config EVP_sha1 EVP_sha256 EVP_sha512 FIPS_mode EVP_MD_C # these check_funcs need -lssl BAKLIBS="$LIBS" LIBS="-lssl $LIBS" -AC_CHECK_FUNCS([OPENSSL_init_ssl SSL_CTX_set_security_level SSL_set1_host SSL_get0_peername X509_VERIFY_PARAM_set1_host SSL_CTX_set_ciphersuites SSL_CTX_set_tlsext_ticket_key_evp_cb SSL_CTX_set_alpn_select_cb]) +AC_CHECK_FUNCS([OPENSSL_init_ssl SSL_CTX_set_security_level SSL_set1_host SSL_get0_peername X509_VERIFY_PARAM_set1_host SSL_CTX_set_ciphersuites SSL_CTX_set_tlsext_ticket_key_evp_cb SSL_CTX_set_alpn_select_cb SSL_get0_alpn_selected]) LIBS="$BAKLIBS" AC_CHECK_DECLS([SSL_COMP_get_compression_methods,sk_SSL_COMP_pop_free,SSL_CTX_set_ecdh_auto], [], [], [ diff --git a/util/netevent.c b/util/netevent.c index a7c4a306a..ede19726a 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -1314,6 +1314,7 @@ ssl_handshake(struct comm_point* c) c->repinfo.addrlen); } +#ifdef HAVE_SSL_GET0_ALPN_SELECTED /* check if http2 use is negotiated */ if(c->type == comm_http && c->h2_session) { const unsigned char *alpn; @@ -1325,6 +1326,7 @@ ssl_handshake(struct comm_point* c) c->use_h2 = 1; } } +#endif /* setup listen rw correctly */ if(c->tcp_is_reading) { From 75875d4d1c4c5d110680da45236d80d84c5d1ec8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Cruz?= Date: Wed, 21 Apr 2021 13:50:45 +0100 Subject: [PATCH 077/553] Allow configuration of persistent TCP connections Added 2 new options to configure previously hardcoded values: max-reuse-tcp-queries and tcp-reuse-timeout. These allow fine-grained control over how unbound uses persistent TCP connections to authority servers. --- daemon/worker.c | 3 +- doc/example.conf.in | 4 + doc/unbound.conf.5.in | 9 + libunbound/libworker.c | 3 +- services/outside_network.c | 20 +- services/outside_network.h | 13 +- testcode/fake_event.c | 3 +- util/config_file.c | 6 + util/config_file.h | 4 + util/configlexer.c | 5208 ++++++++++++++++++------------------ util/configlexer.lex | 2 + util/configparser.c | 4782 ++++++++++++++------------------- util/configparser.h | 839 +++--- util/configparser.y | 28 +- 14 files changed, 5197 insertions(+), 5727 deletions(-) diff --git a/daemon/worker.c b/daemon/worker.c index 7bd64bce4..b560e4493 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -1794,7 +1794,8 @@ worker_init(struct worker* worker, struct config_file *cfg, &worker_alloc_cleanup, worker, cfg->do_udp || cfg->udp_upstream_without_downstream, worker->daemon->connect_sslctx, cfg->delay_close, - cfg->tls_use_sni, dtenv, cfg->udp_connect); + cfg->tls_use_sni, dtenv, cfg->udp_connect, + cfg->max_reuse_tcp_queries, cfg->tcp_reuse_timeout); if(!worker->back) { log_err("could not create outgoing sockets"); worker_delete(worker); diff --git a/doc/example.conf.in b/doc/example.conf.in index 82b652f8a..17b1b7741 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -901,6 +901,10 @@ server: # ipsecmod-allow: "example.com" # ipsecmod-allow: "nlnetlabs.nl" + # Timeout for REUSE entries in milliseconds. + # tcp-reuse-timeout: 60000 + # Max number of queries on a reuse connection. + # max-reuse-tcp-queries: 200 # Python config section. To enable: # o use --with-pythonmodule to configure before compiling. diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 00c1191be..e58d3533a 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -451,6 +451,15 @@ total number configured, and finally to 0 if the number of free buffers falls below 20% of the total number configured. A minimum timeout of 200 milliseconds is observed regardless of the option value used. .TP +.B tcp-reuse-timeout: \fI\fR +The period Unbound will keep TCP persistent connections open to +authority servers. This option defaults to 60000 milliseconds. +.TP +.B max-reuse-tcp-queries: \fI\fR +The maximum number of queries that can be sent on a persistent TCP +connection. +This option defaults to 200 queries. +.TP .B edns-tcp-keepalive: \fI\fR Enable or disable EDNS TCP Keepalive. Default is no. .TP diff --git a/libunbound/libworker.c b/libunbound/libworker.c index 2b7f7a1e4..0c43a4110 100644 --- a/libunbound/libworker.c +++ b/libunbound/libworker.c @@ -241,7 +241,8 @@ libworker_setup(struct ub_ctx* ctx, int is_bg, struct ub_event_base* eb) ports, numports, cfg->unwanted_threshold, cfg->outgoing_tcp_mss, &libworker_alloc_cleanup, w, cfg->do_udp || cfg->udp_upstream_without_downstream, w->sslctx, - cfg->delay_close, cfg->tls_use_sni, NULL, cfg->udp_connect); + cfg->delay_close, cfg->tls_use_sni, NULL, cfg->udp_connect, + cfg->max_reuse_tcp_queries, cfg->tcp_reuse_timeout); w->env->outnet = w->back; if(!w->is_bg || w->is_bg_thread) { lock_basic_unlock(&ctx->cfglock); diff --git a/services/outside_network.c b/services/outside_network.c index d5340d8c2..353809759 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -514,7 +514,7 @@ reuse_tcp_find(struct outside_network* outnet, struct sockaddr_storage* addr, while(result && result != RBTREE_NULL && reuse_cmp_addrportssl(result->key, &key_p.reuse) == 0) { if(((struct reuse_tcp*)result)->tree_by_id.count < - MAX_REUSE_TCP_QUERIES) { + outnet->max_reuse_tcp_queries) { /* same address, port, ssl-yes-or-no, and has * space for another query */ return (struct reuse_tcp*)result; @@ -1012,22 +1012,22 @@ static void reuse_cb_and_decommission(struct outside_network* outnet, /** set timeout on tcp fd and setup read event to catch incoming dns msgs */ static void -reuse_tcp_setup_timeout(struct pending_tcp* pend_tcp) +reuse_tcp_setup_timeout(struct pending_tcp* pend_tcp, int tcp_reuse_timeout) { log_reuse_tcp(VERB_CLIENT, "reuse_tcp_setup_timeout", &pend_tcp->reuse); - comm_point_start_listening(pend_tcp->c, -1, REUSE_TIMEOUT); + comm_point_start_listening(pend_tcp->c, -1, tcp_reuse_timeout); } /** set timeout on tcp fd and setup read event to catch incoming dns msgs */ static void -reuse_tcp_setup_read_and_timeout(struct pending_tcp* pend_tcp) +reuse_tcp_setup_read_and_timeout(struct pending_tcp* pend_tcp, int tcp_reuse_timeout) { log_reuse_tcp(VERB_CLIENT, "reuse_tcp_setup_readtimeout", &pend_tcp->reuse); sldns_buffer_clear(pend_tcp->c->buffer); pend_tcp->c->tcp_is_reading = 1; pend_tcp->c->tcp_byte_count = 0; comm_point_stop_listening(pend_tcp->c); - comm_point_start_listening(pend_tcp->c, -1, REUSE_TIMEOUT); + comm_point_start_listening(pend_tcp->c, -1, tcp_reuse_timeout); } int @@ -1083,7 +1083,7 @@ outnet_tcp_cb(struct comm_point* c, void* arg, int error, pend->reuse.cp_more_write_again = 0; pend->c->tcp_is_reading = 1; comm_point_stop_listening(pend->c); - reuse_tcp_setup_timeout(pend); + reuse_tcp_setup_timeout(pend, outnet->tcp_reuse_timeout); } return 0; } else if(error != NETEVENT_NOERROR) { @@ -1136,7 +1136,7 @@ outnet_tcp_cb(struct comm_point* c, void* arg, int error, * and there could be more bytes to read on the input */ if(pend->reuse.tree_by_id.count != 0) pend->reuse.cp_more_read_again = 1; - reuse_tcp_setup_read_and_timeout(pend); + reuse_tcp_setup_read_and_timeout(pend, outnet->tcp_reuse_timeout); return 0; } verbose(VERB_CLIENT, "outnet_tcp_cb reuse after cb: decommission it"); @@ -1404,7 +1404,7 @@ outside_network_create(struct comm_base *base, size_t bufsize, int numavailports, size_t unwanted_threshold, int tcp_mss, void (*unwanted_action)(void*), void* unwanted_param, int do_udp, void* sslctx, int delayclose, int tls_use_sni, struct dt_env* dtenv, - int udp_connect) + int udp_connect, int max_reuse_tcp_queries, int tcp_reuse_timeout) { struct outside_network* outnet = (struct outside_network*) calloc(1, sizeof(struct outside_network)); @@ -1416,6 +1416,8 @@ outside_network_create(struct comm_base *base, size_t bufsize, comm_base_timept(base, &outnet->now_secs, &outnet->now_tv); outnet->base = base; outnet->num_tcp = num_tcp; + outnet->max_reuse_tcp_queries = max_reuse_tcp_queries; + outnet->tcp_reuse_timeout= tcp_reuse_timeout; outnet->num_tcp_outgoing = 0; outnet->infra = infra; outnet->rnd = rnd; @@ -2443,7 +2445,7 @@ reuse_tcp_remove_serviced_keep(struct waiting_tcp* w, if(!reuse_tcp_insert(sq->outnet, pend_tcp)) { return 0; } - reuse_tcp_setup_timeout(pend_tcp); + reuse_tcp_setup_timeout(pend_tcp, sq->outnet->tcp_reuse_timeout); return 1; } return 0; diff --git a/services/outside_network.h b/services/outside_network.h index 233588d40..58ab8b262 100644 --- a/services/outside_network.h +++ b/services/outside_network.h @@ -158,6 +158,10 @@ struct outside_network { size_t num_tcp; /** number of tcp communication points in use. */ size_t num_tcp_outgoing; + /** max number of queries on a reuse connection */ + int max_reuse_tcp_queries; + /** timeout for REUSE entries in milliseconds. */ + int tcp_reuse_timeout; /** * tree of still-open and waiting tcp connections for reuse. * can be closed and reopened to get a new tcp connection. @@ -295,11 +299,6 @@ struct reuse_tcp { struct outside_network* outnet; }; -/** max number of queries on a reuse connection */ -#define MAX_REUSE_TCP_QUERIES 200 -/** timeout for REUSE entries in milliseconds. */ -#define REUSE_TIMEOUT 60000 - /** * A query that has an answer pending for it. */ @@ -540,6 +539,8 @@ struct serviced_query { * @param tls_use_sni: if SNI is used for TLS connections. * @param dtenv: environment to send dnstap events with (if enabled). * @param udp_connect: if the udp_connect option is enabled. + * @param max_reuse_tcp_queries: max number of queries on a reuse connection. + * @param tcp_reuse_timeout: timeout for REUSE entries in milliseconds. * @return: the new structure (with no pending answers) or NULL on error. */ struct outside_network* outside_network_create(struct comm_base* base, @@ -549,7 +550,7 @@ struct outside_network* outside_network_create(struct comm_base* base, int numavailports, size_t unwanted_threshold, int tcp_mss, void (*unwanted_action)(void*), void* unwanted_param, int do_udp, void* sslctx, int delayclose, int tls_use_sni, struct dt_env *dtenv, - int udp_connect); + int udp_connect, int max_reuse_tcp_queries, int tcp_reuse_timeout); /** * Delete outside_network structure. diff --git a/testcode/fake_event.c b/testcode/fake_event.c index 3ff933928..d0bd14ecb 100644 --- a/testcode/fake_event.c +++ b/testcode/fake_event.c @@ -1046,7 +1046,8 @@ outside_network_create(struct comm_base* base, size_t bufsize, void (*unwanted_action)(void*), void* ATTR_UNUSED(unwanted_param), int ATTR_UNUSED(do_udp), void* ATTR_UNUSED(sslctx), int ATTR_UNUSED(delayclose), int ATTR_UNUSED(tls_use_sni), - struct dt_env* ATTR_UNUSED(dtenv), int ATTR_UNUSED(udp_connect)) + struct dt_env* ATTR_UNUSED(dtenv), int ATTR_UNUSED(udp_connect), + int ATTR_UNUSED(max_reuse_tcp_queries), int ATTR_UNUSED(tcp_reuse_timeout)) { struct replay_runtime* runtime = (struct replay_runtime*)base; struct outside_network* outnet = calloc(1, diff --git a/util/config_file.c b/util/config_file.c index 171251f67..938f6748e 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -105,6 +105,8 @@ config_create(void) cfg->do_ip6 = 1; cfg->do_udp = 1; cfg->do_tcp = 1; + cfg->tcp_reuse_timeout = 60 * 1000; /* 60s in milisecs */ + cfg->max_reuse_tcp_queries = 200; cfg->tcp_upstream = 0; cfg->udp_upstream_without_downstream = 0; cfg->tcp_mss = 0; @@ -518,6 +520,8 @@ int config_set_option(struct config_file* cfg, const char* opt, else S_NUMBER_NONZERO("tcp-mss:", tcp_mss) else S_NUMBER_NONZERO("outgoing-tcp-mss:", outgoing_tcp_mss) else S_NUMBER_NONZERO("tcp-idle-timeout:", tcp_idle_timeout) + else S_NUMBER_NONZERO("max-reuse-tcp-queries:", max_reuse_tcp_queries) + else S_NUMBER_NONZERO("tcp-reuse-timeout:", tcp_reuse_timeout) else S_YNO("edns-tcp-keepalive:", do_tcp_keepalive) else S_NUMBER_NONZERO("edns-tcp-keepalive-timeout:", tcp_keepalive_timeout) else S_YNO("ssl-upstream:", ssl_upstream) @@ -1008,6 +1012,8 @@ config_get_option(struct config_file* cfg, const char* opt, else O_DEC(opt, "tcp-mss", tcp_mss) else O_DEC(opt, "outgoing-tcp-mss", outgoing_tcp_mss) else O_DEC(opt, "tcp-idle-timeout", tcp_idle_timeout) + else O_DEC(opt, "max-reuse-tcp-queries", max_reuse_tcp_queries) + else O_DEC(opt, "tcp-reuse-timeout", tcp_reuse_timeout) else O_YNO(opt, "edns-tcp-keepalive", do_tcp_keepalive) else O_DEC(opt, "edns-tcp-keepalive-timeout", tcp_keepalive_timeout) else O_YNO(opt, "ssl-upstream", ssl_upstream) diff --git a/util/config_file.h b/util/config_file.h index f5eda738c..34f098696 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -93,6 +93,10 @@ struct config_file { int do_udp; /** do tcp query support. */ int do_tcp; + /** max number of queries on a reuse connection. */ + int max_reuse_tcp_queries; + /** timeout for REUSE entries in milliseconds. */ + int tcp_reuse_timeout; /** tcp upstream queries (no UDP upstream queries) */ int tcp_upstream; /** udp upstream enabled when no UDP downstream is enabled (do_udp no)*/ diff --git a/util/configlexer.c b/util/configlexer.c index cbf1c103c..6f6dc4f45 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -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 345 -#define YY_END_OF_BUFFER 346 +#define YY_NUM_RULES 347 +#define YY_END_OF_BUFFER 348 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -363,380 +363,384 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[3388] = +static const flex_int16_t yy_accept[3420] = { 0, - 1, 1, 319, 319, 323, 323, 327, 327, 331, 331, - 1, 1, 335, 335, 339, 339, 346, 343, 1, 317, - 317, 344, 2, 344, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 319, 320, 320, 321, - 344, 323, 324, 324, 325, 344, 330, 327, 328, 328, - 329, 344, 331, 332, 332, 333, 344, 342, 318, 2, - 322, 344, 342, 338, 335, 336, 336, 337, 344, 339, - 340, 340, 341, 344, 343, 0, 1, 2, 2, 2, - 2, 343, 343, 343, 343, 343, 343, 343, 343, 343, + 1, 1, 321, 321, 325, 325, 329, 329, 333, 333, + 1, 1, 337, 337, 341, 341, 348, 345, 1, 319, + 319, 346, 2, 346, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 321, 322, 322, 323, + 346, 325, 326, 326, 327, 346, 332, 329, 330, 330, + 331, 346, 333, 334, 334, 335, 346, 344, 320, 2, + 324, 346, 344, 340, 337, 338, 338, 339, 346, 341, + 342, 342, 343, 346, 345, 0, 1, 2, 2, 2, + 2, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 319, - 0, 323, 0, 330, 0, 327, 331, 0, 342, 0, - 2, 2, 342, 338, 0, 335, 339, 0, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 321, + 0, 325, 0, 332, 0, 329, 333, 0, 344, 0, + 2, 2, 344, 340, 0, 337, 341, 0, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 342, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 344, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 125, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 134, - 343, 343, 343, 343, 343, 343, 343, 342, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 127, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 136, + 345, 345, 345, 345, 345, 345, 345, 344, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 109, 343, 316, 343, - 343, 343, 343, 343, 343, 343, 8, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 111, 345, 318, + 345, 345, 345, 345, 345, 345, 345, 8, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 343, 343, 343, 343, 343, 343, 126, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 139, 343, 343, - 342, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, + 345, 345, 345, 345, 345, 345, 345, 128, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 141, + 345, 345, 344, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 343, 343, 343, 343, 343, 343, 343, 343, 309, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 311, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 342, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 64, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 241, 343, 14, 15, 343, 19, 18, 343, - 343, 225, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 344, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 66, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 243, 345, 14, 15, + 345, 19, 18, 345, 345, 227, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 343, 343, 343, 132, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 223, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 3, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, + 345, 345, 345, 345, 345, 345, 345, 134, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 225, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 3, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 343, 343, 343, 342, 343, 343, 343, 343, 343, 343, - 343, 303, 343, 343, 302, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 326, 343, 343, 343, 343, 343, 343, 343, - 343, 63, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 67, 343, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 344, + 345, 345, 345, 345, 345, 345, 345, 305, 345, 345, + 304, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 328, 345, + 345, 345, 345, 345, 345, 345, 345, 65, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 272, 343, 343, 343, 343, 343, 343, 343, 343, 310, - 311, 343, 343, 343, 343, 343, 343, 343, 68, 343, - 343, 133, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 129, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 212, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 21, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 158, 343, 343, + 345, 345, 345, 345, 69, 345, 274, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 312, 313, 345, 345, + 345, 345, 345, 345, 345, 70, 345, 345, 135, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 131, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 214, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 21, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 343, 343, 342, 326, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 107, 343, 343, 343, 343, - 343, 343, 343, 280, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 182, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 157, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, + 345, 345, 345, 345, 345, 160, 345, 345, 345, 345, + 344, 328, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 109, 345, 345, 345, 345, 345, 345, + 345, 282, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 184, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 159, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 106, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 32, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 33, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 65, 343, 343, 343, 343, 343, 343, 343, 343, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 108, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 34, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 35, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 343, 131, 343, 343, 342, 343, 343, 343, 343, 343, - 124, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 66, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 245, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 183, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 54, 343, 343, 343, 343, 343, 343, 343, 343, + 345, 67, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 133, 345, 345, 344, 345, 345, 345, 345, 345, + 126, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 68, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 247, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 185, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 263, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 58, 343, 59, 343, 343, 343, - 343, 343, 110, 343, 111, 343, 343, 343, 343, 108, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, + 345, 56, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 265, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 60, 345, 61, 345, 345, + 345, 345, 345, 112, 345, 113, 345, 345, 345, 345, + 110, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 7, - 343, 343, 343, 342, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 234, 343, 343, 343, 343, 160, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 246, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 45, 343, 343, 343, 343, 343, 343, 343, 343, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 7, 345, 345, 345, 344, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 236, 345, 345, 345, 345, 162, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 248, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 343, 55, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 204, 343, 203, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 16, 17, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 69, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 211, 343, 343, 343, 343, - 343, 343, 113, 343, 112, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, + 345, 345, 345, 47, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 57, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 206, 345, + 205, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 16, 17, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 71, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 213, 345, + 345, 345, 345, 345, 345, 115, 345, 114, 345, 345, - 343, 343, 343, 343, 343, 343, 343, 195, 343, 343, - 343, 343, 343, 343, 343, 343, 140, 343, 343, 342, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 101, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 89, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 224, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 94, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 197, 345, 345, 345, 345, 345, 345, 345, 345, + 142, 345, 345, 344, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 103, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 91, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 226, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 96, - 343, 343, 343, 343, 343, 343, 343, 62, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 198, 199, 343, 343, - 343, 274, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 6, 343, 343, 343, 343, 343, - 343, 293, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 278, - 343, 343, 343, 343, 343, 343, 304, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 42, 343, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 64, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 200, 201, 345, 345, 345, 276, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 6, + 345, 345, 345, 345, 345, 345, 295, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 280, 345, 345, 345, 345, 345, + 345, 306, 345, 345, 345, 345, 345, 345, 345, 345, - 343, 343, 343, 44, 343, 343, 343, 90, 343, 343, - 343, 343, 343, 52, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 342, 343, 191, 343, 343, 343, 135, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 216, 343, 192, 343, 343, 343, 231, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 53, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 137, 118, - 343, 119, 343, 343, 343, 117, 343, 343, 343, 343, - 343, 343, 343, 343, 155, 343, 343, 50, 343, 343, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 44, 345, 345, 345, 345, 46, + 345, 345, 345, 92, 345, 345, 345, 345, 345, 54, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 344, + 345, 193, 345, 345, 345, 137, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 218, 345, 194, 345, + 345, 345, 233, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 55, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 139, 120, 345, 121, 345, 345, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 262, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 193, 343, 343, 343, 343, 343, - 196, 343, 202, 343, 343, 343, 343, 343, 230, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 105, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 130, 343, 343, 343, 343, 343, - 343, 343, 60, 343, 343, 343, 26, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 20, 343, 343, 343, + 345, 119, 345, 345, 345, 345, 345, 345, 345, 345, + 157, 345, 345, 52, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 264, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 195, 345, 345, 345, 345, 345, 198, 345, 204, 345, + 345, 345, 345, 345, 345, 232, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 107, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 132, 345, 345, 345, 345, 345, 345, 345, 62, - 343, 343, 343, 27, 36, 343, 165, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 342, 343, 343, 343, 343, 343, 343, 77, - 79, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 282, 343, 343, 343, 343, 242, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 120, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 154, 343, 46, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, + 345, 345, 345, 28, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 20, 345, 345, 345, 345, 345, + 345, 29, 38, 345, 167, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 344, 345, 345, 345, 345, 345, 345, 79, 81, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 284, 345, 345, 345, 345, 244, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 122, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 343, 343, 343, 343, 343, 343, 297, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 159, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 291, 343, - 343, 343, 222, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 307, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 176, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 114, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 171, 343, 184, 343, 343, 343, + 156, 345, 48, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 299, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 161, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 293, 345, 345, + 345, 224, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 309, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 178, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 116, 345, 345, 345, 345, 345, 345, - 343, 343, 343, 342, 343, 143, 343, 343, 343, 343, - 343, 100, 343, 343, 343, 343, 214, 343, 343, 343, - 343, 343, 343, 232, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 254, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 136, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 175, 343, 343, 343, - 343, 343, 343, 80, 343, 81, 343, 343, 343, 343, - 343, 61, 300, 343, 343, 343, 343, 343, 88, 185, - 343, 205, 343, 235, 343, 343, 197, 275, 343, 343, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 173, 345, 186, 345, 345, 345, + 345, 345, 345, 344, 345, 145, 345, 345, 345, 345, + 345, 102, 345, 345, 345, 345, 216, 345, 345, 345, + 345, 345, 345, 234, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 256, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 138, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 177, 345, 345, 345, + 345, 345, 345, 82, 345, 83, 345, 345, 345, 345, - 343, 343, 343, 73, 343, 187, 343, 343, 343, 343, - 343, 9, 343, 343, 343, 343, 343, 104, 343, 343, - 343, 343, 267, 343, 343, 343, 343, 213, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 342, 343, 343, 343, - 343, 174, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 161, 343, 281, 343, 343, 343, 343, 343, + 345, 63, 302, 345, 345, 345, 345, 345, 90, 187, + 345, 207, 345, 237, 345, 345, 199, 277, 345, 345, + 345, 345, 345, 345, 75, 345, 189, 345, 345, 345, + 345, 345, 9, 345, 345, 345, 345, 345, 106, 345, + 345, 345, 345, 269, 345, 345, 345, 345, 215, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 344, 345, - 253, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 226, 343, 343, 343, 343, 343, 273, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 301, - 343, 186, 343, 343, 343, 343, 343, 343, 343, 72, - 74, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 103, 343, 343, 343, 343, 265, 343, 343, 343, 343, - 277, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 218, 34, 28, 30, 343, 343, 343, + 345, 345, 345, 176, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 163, 345, 283, 345, 345, 345, + 345, 345, 255, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 228, 345, 345, 345, 345, 345, + 275, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 303, 345, 188, 345, 345, 345, 345, 345, 345, + 345, 345, 74, 76, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 105, 345, 345, 345, 345, 267, 345, - 343, 343, 343, 343, 343, 343, 35, 343, 29, 31, - 343, 343, 343, 343, 343, 343, 343, 343, 99, 343, - 343, 343, 343, 343, 343, 343, 343, 342, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 220, - 217, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 71, - 343, 343, 343, 138, 343, 121, 343, 343, 343, 343, - 343, 343, 343, 343, 156, 47, 343, 343, 343, 334, - 13, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 295, 343, 298, 343, 343, 343, 343, 343, 343, + 345, 345, 345, 279, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 220, 36, 30, 32, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 37, 345, 31, 33, 345, 345, 345, 345, 345, 345, + 345, 345, 101, 345, 345, 345, 345, 345, 345, 345, + 345, 344, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 222, 219, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 73, 345, 345, 345, 140, 345, 123, + 345, 345, 345, 345, 345, 345, 345, 345, 158, 49, - 343, 343, 343, 343, 12, 343, 343, 22, 343, 343, - 343, 343, 343, 271, 343, 343, 343, 343, 279, 343, - 343, 343, 75, 343, 228, 343, 343, 343, 343, 343, - 219, 343, 343, 70, 343, 343, 343, 343, 23, 343, - 43, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 170, 169, 343, 343, 334, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 221, 215, 343, - 233, 343, 343, 283, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, + 345, 345, 345, 336, 13, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 297, 345, 300, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 12, + 345, 345, 22, 345, 345, 345, 345, 345, 273, 345, + 345, 345, 345, 281, 345, 345, 345, 77, 345, 230, + 345, 345, 345, 345, 345, 221, 345, 345, 72, 345, + 345, 345, 345, 23, 345, 345, 45, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 172, + 171, 345, 345, 336, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 223, 217, 345, 235, 345, 345, 285, - 343, 343, 343, 343, 343, 343, 82, 343, 343, 343, - 343, 266, 343, 343, 343, 343, 201, 343, 343, 343, - 343, 227, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 305, 306, 167, 343, 343, 76, 343, - 343, 343, 343, 177, 343, 343, 343, 115, 116, 343, - 343, 343, 343, 162, 343, 164, 343, 206, 343, 343, - 343, 343, 168, 343, 343, 343, 343, 236, 343, 343, - 343, 343, 343, 343, 343, 145, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 244, 343, - 343, 343, 343, 343, 343, 343, 314, 343, 24, 343, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 84, 345, 345, 345, 345, 268, 345, 345, + 345, 345, 203, 345, 345, 345, 345, 345, 229, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 307, 308, 169, 345, 345, 78, 345, 345, 345, 345, + 179, 345, 345, 345, 117, 118, 345, 345, 25, 345, + 345, 164, 345, 166, 345, 208, 345, 345, 345, 345, + 170, 345, 345, 345, 345, 238, 345, 345, 345, 345, - 276, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 86, 207, 343, 343, 264, - 343, 299, 343, 200, 343, 343, 343, 343, 56, 343, - 343, 343, 343, 343, 343, 4, 343, 343, 343, 343, - 128, 144, 343, 343, 343, 181, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 239, 37, 38, 343, 343, 343, 343, - 343, 343, 343, 284, 343, 343, 343, 343, 343, 343, - 343, 252, 343, 343, 343, 343, 343, 343, 343, 343, - 210, 343, 343, 343, 343, 343, 343, 343, 343, 343, + 345, 345, 345, 147, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 246, 345, 345, 345, + 345, 345, 345, 345, 316, 345, 26, 345, 278, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 88, 209, 345, 345, 266, 345, 301, + 345, 202, 345, 345, 345, 345, 345, 58, 345, 345, + 345, 345, 345, 345, 4, 345, 345, 345, 345, 130, + 146, 345, 345, 345, 183, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 241, 39, 40, 345, 345, 345, 345, 345, - 343, 343, 343, 85, 343, 57, 270, 343, 240, 343, - 343, 343, 343, 11, 343, 343, 343, 343, 343, 343, - 343, 343, 127, 343, 343, 343, 343, 208, 91, 343, - 40, 343, 343, 343, 343, 343, 343, 343, 343, 173, - 343, 343, 343, 343, 343, 343, 343, 147, 343, 343, - 343, 343, 243, 343, 343, 343, 343, 343, 251, 343, - 343, 343, 343, 141, 343, 343, 343, 122, 123, 343, - 343, 343, 93, 97, 92, 343, 343, 343, 343, 83, - 343, 343, 343, 343, 343, 10, 343, 343, 343, 343, - 343, 268, 308, 343, 343, 343, 343, 313, 39, 343, + 345, 345, 286, 345, 345, 345, 345, 345, 345, 345, + 254, 345, 345, 345, 345, 345, 345, 345, 345, 212, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 87, 345, 59, 272, 345, 242, 345, 345, + 345, 345, 345, 11, 345, 345, 345, 345, 345, 345, + 345, 345, 129, 345, 345, 345, 345, 210, 93, 345, + 42, 345, 345, 345, 345, 345, 345, 345, 345, 175, + 345, 345, 345, 345, 345, 345, 345, 149, 345, 345, + 345, 345, 245, 345, 345, 345, 345, 345, 253, 345, + 345, 345, 345, 143, 345, 345, 345, 124, 125, 345, - 343, 343, 343, 343, 172, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 98, 96, 343, 51, 343, 343, 84, 296, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 194, 343, 343, - 343, 343, 343, 209, 343, 343, 343, 343, 343, 343, - 343, 190, 343, 343, 163, 78, 343, 343, 343, 343, - 343, 285, 343, 343, 343, 343, 343, 343, 343, 248, - 343, 343, 247, 142, 343, 343, 95, 48, 343, 148, - 149, 152, 153, 150, 151, 87, 294, 343, 343, 269, + 345, 345, 95, 99, 94, 345, 345, 345, 345, 85, + 345, 345, 345, 345, 345, 345, 10, 345, 345, 345, + 345, 345, 270, 310, 345, 345, 345, 345, 315, 41, + 345, 345, 345, 345, 345, 174, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 100, 98, 345, 53, 345, 345, 86, 298, 345, + 345, 345, 345, 24, 345, 345, 345, 345, 345, 196, + 345, 345, 345, 345, 345, 211, 345, 345, 345, 345, + 345, 345, 345, 192, 345, 345, 165, 80, 345, 345, - 343, 343, 343, 343, 166, 343, 343, 343, 343, 189, - 343, 238, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 179, 178, 41, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 292, 343, 343, - 343, 343, 102, 343, 237, 343, 261, 289, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 315, - 343, 49, 5, 343, 343, 229, 343, 343, 290, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 249, 25, + 345, 345, 345, 287, 345, 345, 345, 345, 345, 345, + 345, 250, 345, 345, 249, 144, 345, 345, 97, 50, + 345, 150, 151, 154, 155, 152, 153, 89, 296, 345, + 345, 271, 345, 345, 345, 345, 168, 345, 345, 345, + 345, 191, 345, 240, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 181, 180, 43, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 294, + 345, 345, 345, 345, 104, 345, 239, 345, 263, 291, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 250, 343, 343, 343, 146, 343, 343, 343, - 343, 343, 343, 343, 343, 180, 343, 188, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 286, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 312, 343, 343, 257, 343, - 343, 343, 343, 343, 287, 343, 343, 343, 343, 343, - 343, 288, 343, 343, 343, 255, 343, 258, 259, 343, - 343, 343, 343, 343, 256, 260, 0 + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 317, 345, 51, 5, 345, 345, 231, 345, 345, + 292, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 251, 27, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 252, 345, 345, 345, 148, 345, + 345, 345, 345, 345, 345, 345, 345, 182, 345, 190, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 288, + 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 345, 345, 345, 345, 345, 345, 345, 314, 345, 345, + 259, 345, 345, 345, 345, 345, 289, 345, 345, 345, + + 345, 345, 345, 290, 345, 345, 345, 257, 345, 260, + 261, 345, 345, 345, 345, 345, 258, 262, 0 } ; static const YY_CHAR yy_ec[256] = @@ -779,17 +783,17 @@ static const YY_CHAR yy_meta[41] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[3406] = +static const flex_int16_t yy_base[3438] = { 0, 0, 0, 38, 41, 44, 46, 59, 65, 71, 77, - 90, 112, 96, 118, 124, 136, 4333, 3646, 81, 6613, - 6613, 6613, 129, 52, 130, 63, 131, 152, 70, 140, + 90, 112, 96, 118, 124, 136, 2906, 2853, 81, 6684, + 6684, 6684, 129, 52, 130, 63, 131, 152, 70, 140, 149, 156, 57, 88, 76, 173, 175, 95, 197, 145, - 185, 199, 208, 213, 178, 123, 3471, 6613, 6613, 6613, - 107, 3089, 6613, 6613, 6613, 154, 2938, 2734, 6613, 6613, - 6613, 245, 2551, 6613, 6613, 6613, 163, 2380, 6613, 249, - 6613, 253, 148, 2167, 2097, 6613, 6613, 6613, 257, 1895, - 6613, 6613, 6613, 233, 1571, 263, 201, 0, 267, 0, + 185, 199, 208, 213, 178, 123, 2798, 6684, 6684, 6684, + 107, 2623, 6684, 6684, 6684, 154, 2576, 2409, 6684, 6684, + 6684, 245, 2211, 6684, 6684, 6684, 163, 2110, 6684, 249, + 6684, 253, 148, 2024, 1966, 6684, 6684, 6684, 257, 1424, + 6684, 6684, 6684, 233, 1372, 263, 201, 0, 267, 0, 0, 165, 191, 221, 252, 205, 181, 265, 92, 261, 216, 263, 271, 272, 210, 279, 274, 282, 278, 291, @@ -797,8 +801,8 @@ static const flex_int16_t yy_base[3406] = 317, 311, 315, 319, 321, 331, 327, 332, 336, 322, 339, 337, 346, 345, 347, 348, 353, 351, 357, 284, 358, 359, 369, 360, 380, 365, 381, 379, 375, 366, - 367, 389, 390, 394, 393, 395, 396, 403, 404, 1355, - 419, 1172, 422, 1110, 429, 1014, 912, 433, 781, 437, + 367, 389, 390, 394, 393, 395, 396, 403, 404, 1294, + 419, 1265, 422, 1234, 429, 1013, 968, 433, 775, 437, 441, 0, 433, 705, 447, 479, 287, 452, 411, 445, 426, 446, 447, 448, 449, 450, 451, 453, 452, 456, 470, 234, 463, 473, 481, 479, 476, 483, 486, 487, @@ -817,727 +821,733 @@ static const flex_int16_t yy_base[3406] = 697, 700, 708, 704, 713, 712, 721, 716, 722, 719, 731, 732, 727, 717, 728, 729, 733, 736, 730, 740, 738, 741, 745, 743, 750, 752, 760, 755, 756, 771, - 763, 766, 762, 773, 774, 769, 775, 793, 798, 799, - 786, 800, 801, 804, 803, 805, 807, 808, 809, 818, - 811, 823, 815, 824, 825, 829, 836, 834, 6613, 831, - 833, 847, 848, 849, 852, 765, 856, 858, 839, 868, - 864, 861, 870, 892, 865, 878, 869, 871, 874, 6613, - 887, 880, 916, 882, 889, 902, 904, 900, 903, 905, - 914, 907, 933, 850, 909, 924, 940, 936, 925, 937, + 763, 766, 762, 774, 773, 765, 769, 794, 799, 782, + 787, 800, 801, 804, 802, 803, 806, 808, 809, 814, + 818, 819, 823, 807, 825, 827, 834, 829, 6684, 831, + 838, 846, 839, 847, 850, 848, 854, 856, 836, 866, + 864, 867, 868, 890, 849, 876, 859, 880, 878, 6684, + 882, 884, 914, 887, 894, 905, 912, 900, 888, 908, + 910, 896, 937, 920, 922, 924, 940, 927, 935, 936, - 939, 942, 943, 952, 948, 950, 951, 953, 961, 956, - 960, 964, 968, 962, 971, 972, 975, 977, 983, 974, - 980, 990, 973, 993, 994, 995, 997, 996, 1007, 1004, - 1000, 1001, 1015, 1014, 1028, 1017, 1026, 1027, 1030, 1029, - 1035, 1036, 1039, 1041, 1042, 1043, 1044, 1054, 1046, 1049, - 1051, 1053, 1057, 1059, 1061, 1063, 1066, 1065, 1067, 1071, - 1069, 1078, 1080, 1074, 1086, 1076, 6613, 1088, 6613, 1082, - 1091, 1092, 1090, 1097, 1093, 1094, 6613, 1096, 1100, 1104, - 1105, 1115, 1108, 1126, 1107, 1121, 1122, 1125, 1123, 1127, - 1138, 1129, 1131, 1145, 1136, 1141, 1140, 1143, 1144, 1147, + 939, 943, 945, 947, 951, 949, 953, 957, 964, 959, + 961, 962, 975, 963, 966, 970, 974, 976, 987, 981, + 991, 979, 992, 993, 996, 997, 999, 994, 1004, 1006, + 1019, 1020, 998, 1023, 1030, 1005, 1027, 1031, 1034, 1036, + 1029, 1038, 1040, 1043, 1045, 1044, 1046, 1054, 1051, 1052, + 1056, 1058, 1059, 1060, 1062, 1065, 1066, 1068, 1070, 1071, + 1075, 1078, 1081, 1083, 1072, 1086, 861, 6684, 1091, 6684, + 1089, 1094, 1095, 1096, 1098, 1099, 1097, 6684, 1100, 1105, + 1101, 1108, 1112, 1107, 1130, 1126, 1111, 1127, 1129, 1114, + 1133, 1140, 1136, 1139, 1143, 1141, 1144, 1145, 1147, 1146, - 1151, 1153, 1154, 1155, 1156, 1175, 6613, 1157, 1165, 1167, - 1159, 1168, 1182, 1187, 1173, 1185, 1193, 1197, 1205, 1198, - 1200, 1204, 1179, 1203, 1160, 1208, 1214, 1211, 1217, 1219, - 1218, 1220, 1222, 1221, 1224, 1225, 1232, 6613, 1235, 1241, - 1246, 1253, 1236, 1239, 1249, 1251, 1252, 1255, 1256, 1257, - 1259, 517, 1258, 1263, 1275, 1264, 1277, 1272, 1228, 1274, - 1278, 1280, 1279, 1281, 1283, 1292, 1289, 1295, 1304, 1307, - 1306, 1309, 1316, 1318, 1298, 1311, 1321, 1315, 1313, 1314, - 1325, 1326, 1327, 1329, 1330, 1339, 1336, 1335, 1337, 1338, - 1343, 1341, 1345, 1346, 1347, 1349, 1360, 1357, 1358, 1365, + 1152, 1151, 1153, 1154, 1159, 1160, 1179, 6684, 1162, 1169, + 1171, 1164, 1172, 1165, 1186, 1191, 1174, 1192, 1188, 1194, + 1208, 1201, 1206, 1209, 1210, 1211, 1214, 1217, 1218, 1220, + 1224, 1223, 1221, 1225, 1227, 1228, 1226, 1229, 1243, 6684, + 1230, 1246, 1248, 1257, 1241, 1254, 1255, 1256, 1258, 1259, + 1260, 1163, 1113, 517, 1263, 1262, 1272, 1267, 1281, 1268, + 1282, 1276, 1278, 1283, 1284, 1286, 1291, 1298, 1296, 1300, + 1304, 1312, 1311, 1314, 1321, 1323, 1308, 1289, 1316, 1320, + 1318, 1324, 1327, 1326, 1328, 1333, 1334, 1341, 1336, 1339, + 1342, 1344, 1345, 1348, 1343, 1349, 1350, 1353, 1361, 1360, - 1361, 1370, 1364, 1359, 1378, 1380, 1367, 1374, 6613, 1390, - 1287, 1388, 1392, 1393, 1394, 1395, 1386, 1387, 1399, 1401, - 1403, 1404, 1410, 1407, 1411, 1412, 1413, 1415, 1423, 1419, - 1426, 1434, 1433, 1435, 1420, 1437, 1439, 1441, 1448, 1445, - 1449, 1452, 1421, 1453, 1462, 1454, 1457, 1459, 1469, 1447, - 1465, 1468, 1471, 1475, 1477, 1480, 1487, 1482, 1485, 1502, - 1488, 1472, 1493, 1486, 1504, 1492, 1499, 1503, 1507, 1508, - 1515, 1512, 1511, 1514, 1518, 1513, 1519, 1522, 1524, 1536, - 1523, 1532, 1527, 1535, 1541, 1525, 1540, 1542, 1547, 1548, - 1550, 1549, 1551, 1553, 1558, 1559, 1562, 1561, 1564, 1568, + 1356, 1368, 1359, 1374, 1367, 1362, 1381, 1382, 1369, 1384, + 6684, 1394, 1389, 1390, 1391, 1392, 1400, 1396, 1402, 1404, + 1405, 1406, 1408, 1407, 1410, 1411, 1414, 1415, 1416, 1421, + 1423, 1431, 1428, 1426, 1440, 1439, 1441, 1443, 1444, 1445, + 1447, 1454, 1451, 1455, 1457, 1452, 1459, 1468, 1463, 1465, + 1469, 1479, 1453, 1471, 1470, 1481, 1482, 1484, 1487, 1492, + 1485, 1493, 1500, 1495, 1502, 1504, 1503, 1507, 1510, 1511, + 1512, 1513, 1514, 1521, 1516, 1517, 1518, 1523, 1519, 1524, + 1535, 1525, 1542, 1531, 1539, 1541, 1544, 1548, 1546, 1552, + 1553, 1554, 1555, 1549, 1556, 1557, 1558, 1562, 1563, 1564, - 1570, 1574, 1576, 1577, 1579, 1580, 1588, 1581, 1590, 1591, - 1592, 1594, 1595, 1602, 1604, 1598, 1608, 1605, 1611, 1610, - 1613, 1614, 1616, 1617, 1622, 1623, 1624, 6613, 1629, 1636, - 1631, 1634, 1632, 1637, 1639, 1646, 1641, 1643, 1642, 1645, - 1647, 1671, 6613, 1653, 6613, 6613, 1652, 6613, 6613, 1654, - 1655, 6613, 1658, 1656, 1659, 1674, 1681, 1684, 1666, 1679, - 1672, 1687, 1694, 1708, 1695, 1692, 1696, 1698, 1699, 1701, - 1706, 1703, 1689, 1716, 1725, 1730, 1731, 1717, 1719, 1732, - 1735, 1739, 1740, 1742, 1746, 1748, 1749, 1733, 1751, 1753, - 1756, 1754, 1757, 1759, 1763, 1764, 1760, 1767, 1766, 1776, + 1575, 1576, 1579, 1578, 1580, 1582, 1581, 1587, 1589, 1593, + 1597, 1585, 1600, 1601, 1591, 1604, 1606, 1614, 1611, 1609, + 1615, 1617, 1620, 1621, 1623, 1622, 1625, 1626, 1633, 1634, + 1638, 6684, 1630, 1646, 1628, 1641, 1642, 1644, 1650, 1657, + 1652, 1655, 1653, 1656, 1658, 1682, 6684, 1659, 6684, 6684, + 1663, 6684, 6684, 1661, 1666, 6684, 1667, 1676, 1677, 1675, + 1664, 1688, 1686, 1690, 1692, 1683, 1705, 1709, 1695, 1696, + 1707, 1714, 1698, 1715, 1724, 1712, 1723, 1720, 1730, 1740, + 1736, 1741, 1732, 1744, 1750, 1748, 1752, 1754, 1757, 1758, + 1761, 1746, 1762, 1763, 1767, 1764, 1768, 1770, 1774, 1775, - 1780, 1769, 1787, 6613, 1784, 1796, 1797, 1793, 1800, 1792, - 1799, 1801, 1772, 1783, 1802, 1803, 1806, 1807, 1804, 1808, - 1812, 1816, 1817, 1819, 1829, 1836, 1813, 6613, 1825, 1833, - 1820, 1818, 1837, 1835, 1840, 1839, 1841, 1843, 1847, 1855, - 1850, 1848, 1856, 1858, 1857, 1859, 1861, 6613, 1868, 1874, - 1862, 1871, 1865, 1869, 1878, 1879, 1880, 1882, 1884, 1888, - 1885, 1887, 1896, 1893, 1897, 1894, 1904, 1899, 1908, 1910, - 1912, 1914, 1916, 1917, 1919, 1920, 1921, 1923, 1924, 1932, - 1935, 1931, 1936, 1933, 1928, 1952, 1955, 1950, 1938, 1939, - 1953, 1941, 1960, 1969, 1964, 1956, 1965, 1972, 1968, 1971, + 1771, 1778, 1777, 1787, 1779, 1792, 1801, 6684, 1793, 1802, + 1794, 1803, 1804, 1811, 1807, 1806, 1808, 1815, 1818, 1819, + 1820, 1821, 1822, 1823, 1824, 1825, 1831, 1828, 1834, 1833, + 1845, 1835, 6684, 1843, 1846, 1836, 1848, 1847, 1858, 1857, + 1849, 1850, 1859, 1851, 1871, 1866, 1869, 1872, 1873, 1874, + 1876, 1877, 6684, 1780, 1879, 1881, 1885, 1883, 1886, 1887, + 1889, 1892, 1896, 1893, 1895, 1897, 1900, 1909, 1901, 1908, + 1913, 1914, 1917, 1921, 1922, 1925, 1918, 1926, 1929, 1930, + 1931, 1933, 1934, 1936, 1940, 1947, 1948, 1943, 1951, 1944, + 1949, 1965, 1967, 1962, 1952, 1963, 1968, 1964, 1976, 1978, - 1973, 1975, 1976, 1983, 1981, 1985, 1986, 1979, 1984, 1990, - 1993, 6613, 1997, 1999, 6613, 1998, 2000, 2002, 2024, 2005, - 2003, 2010, 2009, 2014, 2015, 2016, 2018, 2017, 2028, 2044, - 2037, 2034, 2047, 2026, 2049, 2050, 2052, 2053, 2055, 2056, - 2059, 2030, 2060, 2072, 2075, 2074, 2082, 2084, 2058, 2071, - 2061, 2091, 2081, 2083, 2086, 2089, 2094, 2098, 2096, 2102, - 2087, 2107, 2108, 2115, 2113, 2119, 2112, 2120, 2114, 2122, - 2123, 2125, 6613, 2134, 2135, 2129, 2137, 2133, 2147, 2139, - 2140, 6613, 2143, 2149, 2150, 2157, 2153, 2154, 2155, 2156, - 2161, 2163, 2165, 2169, 2170, 2168, 2164, 2186, 6613, 2171, + 1979, 1970, 1974, 1986, 1981, 1990, 1984, 1991, 1992, 1999, + 1994, 2000, 2005, 1995, 2003, 2007, 1997, 6684, 2011, 2013, + 6684, 2015, 2014, 2018, 2040, 2019, 2021, 2022, 2030, 2032, + 2038, 2026, 2033, 2031, 2044, 2054, 2046, 2050, 2059, 2052, + 2065, 2060, 2066, 2062, 2068, 2069, 2073, 2078, 2074, 2087, + 2091, 2093, 2095, 2094, 2077, 2086, 2096, 2115, 2097, 2098, + 2104, 2100, 2101, 2106, 2117, 2108, 2107, 2113, 2120, 2130, + 2128, 2119, 2127, 2137, 2138, 2140, 2142, 2143, 6684, 2150, + 2148, 2147, 2149, 2152, 2161, 2157, 2158, 6684, 2159, 2160, + 2164, 2173, 2170, 2171, 2176, 2172, 2174, 2175, 2182, 2178, - 6613, 2182, 2172, 2184, 2185, 2188, 2189, 2190, 2193, 6613, - 6613, 2197, 2191, 2207, 2211, 2201, 2194, 2212, 6613, 2213, - 2220, 6613, 2217, 2223, 2216, 2215, 2222, 2224, 2227, 2228, - 2237, 2232, 2239, 2234, 2236, 2244, 6613, 2245, 2246, 2250, - 2251, 2247, 2253, 2254, 2260, 2257, 6613, 2264, 2261, 2266, - 2274, 2276, 2271, 2273, 2278, 2282, 2279, 2284, 2285, 2286, - 2287, 2294, 2296, 2293, 2299, 2301, 2308, 6613, 2292, 2295, - 2313, 2309, 2312, 2316, 2317, 2318, 2319, 2320, 2321, 2322, - 2327, 2328, 2329, 2330, 2337, 2340, 2335, 2339, 2343, 2345, - 2347, 2348, 2355, 2352, 2353, 2354, 2356, 6613, 2357, 2359, + 2184, 2183, 2185, 2197, 6684, 2196, 6684, 2186, 2198, 2199, + 2201, 2203, 2205, 2206, 2208, 2209, 6684, 6684, 2210, 2207, + 2224, 2228, 2226, 2219, 2227, 6684, 2229, 2237, 6684, 2238, + 2230, 2232, 2241, 2243, 2244, 2247, 2248, 2255, 2250, 2257, + 2252, 2253, 2254, 6684, 2266, 2256, 2271, 2273, 2264, 2265, + 2279, 2281, 2275, 6684, 2282, 2283, 2285, 2295, 2293, 2294, + 2272, 2297, 2301, 2296, 2298, 2304, 2305, 2306, 2313, 2315, + 2311, 2318, 2320, 2327, 6684, 2326, 2310, 2312, 2335, 2333, + 2337, 2330, 2334, 2322, 2341, 2342, 2344, 1726, 2346, 2348, + 2349, 2350, 2358, 2359, 2355, 2357, 2364, 2354, 2365, 2356, - 2363, 2366, 2365, 171, 2369, 2367, 2372, 2374, 2377, 2388, - 2375, 2396, 2397, 2378, 2393, 2399, 2400, 2389, 2392, 2402, - 2404, 2408, 2409, 2410, 2411, 6613, 2413, 2414, 2415, 2417, - 2418, 2420, 2429, 6613, 2422, 2435, 2437, 2439, 2444, 2441, - 2446, 2431, 2447, 2452, 2453, 2454, 2456, 2457, 2460, 2459, - 2463, 6613, 2467, 2464, 2471, 2472, 2475, 2477, 2478, 2479, - 2483, 2484, 2485, 2486, 2488, 2490, 2489, 2491, 2493, 2499, - 2500, 2496, 2504, 2509, 2506, 2507, 2510, 2513, 2514, 2519, - 2517, 6613, 2529, 2520, 2527, 2525, 2528, 2530, 2531, 2538, - 2553, 2540, 2542, 2544, 2554, 2560, 2545, 2562, 2549, 2563, + 2371, 2372, 2374, 2375, 2376, 6684, 2377, 2381, 2382, 2384, + 2378, 171, 2385, 2388, 2392, 2386, 2393, 2406, 2395, 2413, + 2414, 2400, 2412, 2409, 2418, 2410, 2419, 2420, 2421, 2422, + 2427, 2428, 2426, 6684, 2430, 2432, 2431, 2435, 2438, 2437, + 2442, 6684, 2448, 2439, 2454, 2463, 2453, 2451, 2464, 2455, + 2466, 2468, 2470, 2469, 2471, 2473, 2472, 2476, 2479, 6684, + 2481, 2485, 2489, 2482, 2491, 2493, 2492, 2495, 2499, 2500, + 2503, 2505, 2504, 2506, 2507, 2508, 2509, 2516, 2513, 2512, + 2517, 2521, 2523, 2524, 2533, 2525, 2531, 2534, 2535, 6684, + 2542, 2539, 2546, 2540, 2541, 2547, 2552, 2550, 2559, 2551, - 2567, 2566, 2576, 2577, 2580, 2586, 2574, 2588, 2591, 2578, - 2581, 2584, 2590, 2592, 2600, 2601, 2608, 2609, 2606, 2612, - 2604, 2621, 2615, 2627, 2633, 2623, 6613, 2632, 2625, 2617, - 2637, 2644, 2639, 2641, 2642, 2645, 2649, 2650, 2651, 2652, - 2660, 2655, 2653, 2657, 2662, 2664, 2665, 2668, 2672, 2673, - 2676, 2680, 2677, 2683, 2421, 6613, 2684, 2686, 2685, 2688, - 2694, 2689, 2696, 2699, 2701, 2702, 2703, 2708, 2705, 2710, - 2711, 2712, 2718, 2605, 2714, 6613, 2716, 2715, 2721, 2720, - 2728, 2729, 2735, 2736, 2738, 2741, 2744, 2745, 2746, 2747, - 2748, 6613, 2756, 2757, 2753, 2765, 2755, 2760, 2762, 2767, + 2564, 2566, 2567, 2580, 2569, 2565, 2577, 2572, 2586, 2575, + 2596, 2587, 2595, 2597, 2583, 2601, 2605, 2594, 2606, 2613, + 2609, 2611, 2612, 2615, 2616, 2625, 2626, 2622, 2628, 2621, + 2633, 2636, 2642, 2647, 2640, 6684, 2648, 2646, 2649, 2653, + 2660, 2655, 2656, 2658, 2657, 2665, 2666, 2668, 2669, 2676, + 2672, 2680, 2675, 2677, 2679, 2681, 2684, 2686, 2692, 2694, + 2696, 2697, 2701, 2703, 6684, 2706, 2702, 2708, 2710, 2714, + 2698, 2716, 2720, 2723, 2711, 2722, 2725, 2726, 2730, 2729, + 2737, 2734, 2735, 2736, 2740, 6684, 2742, 2741, 2747, 2748, + 2750, 2751, 2760, 2754, 2761, 2763, 2767, 2753, 2768, 2769, - 2768, 6613, 2769, 832, 2770, 2771, 2772, 2780, 2781, 2776, - 6613, 2783, 2778, 2784, 2786, 2789, 2793, 2790, 2796, 2794, - 2799, 2800, 2805, 2803, 2809, 2811, 6613, 2812, 2821, 2817, - 2813, 2819, 2823, 2825, 2826, 2828, 2829, 2843, 2834, 6613, - 2852, 2847, 2839, 2855, 2842, 2830, 2853, 2857, 2858, 2859, - 2860, 2864, 2865, 6613, 2867, 2866, 2868, 2872, 2870, 2875, - 2876, 2888, 2878, 2879, 2883, 2887, 2889, 2891, 2894, 2896, - 2900, 2901, 2906, 2907, 2909, 2911, 2892, 2913, 2922, 2923, - 2918, 2926, 2921, 2928, 2929, 2930, 2937, 2939, 2940, 2941, - 2945, 6613, 2948, 2949, 2943, 2936, 2951, 2955, 2956, 2957, + 2770, 6684, 2779, 2781, 2777, 2784, 2780, 2785, 2786, 2788, + 2790, 6684, 2791, 2792, 2793, 2794, 2795, 2805, 2806, 2801, + 6684, 2817, 2812, 2796, 2803, 2813, 2815, 2819, 2820, 2822, + 2824, 2827, 2828, 2831, 2834, 2835, 6684, 2836, 2844, 2841, + 2839, 2846, 2847, 2850, 2851, 2862, 2863, 2856, 2860, 6684, + 2877, 2864, 2873, 2881, 2876, 2852, 2879, 2882, 2883, 2885, + 2886, 2889, 2890, 6684, 2891, 2893, 2896, 2898, 2900, 2901, + 2902, 2913, 2908, 2909, 2912, 2915, 2916, 2917, 2918, 2922, + 2927, 2924, 2925, 2937, 2933, 2935, 2939, 2940, 2949, 2951, + 2946, 2953, 2950, 2947, 2954, 2957, 2961, 2964, 2971, 2966, - 2958, 2960, 2962, 2961, 2965, 2967, 2974, 2978, 2975, 2981, - 2983, 2984, 2976, 2987, 2988, 2989, 2990, 2997, 2993, 2994, - 3005, 2996, 3000, 3010, 3011, 3012, 3013, 3014, 3021, 3001, - 3019, 3016, 3023, 3018, 3024, 3027, 3029, 3041, 3042, 3044, - 3025, 3036, 3046, 3049, 6613, 3052, 3053, 3050, 3054, 3056, - 3061, 3057, 3069, 3064, 3067, 3066, 3073, 3078, 3075, 3076, - 3081, 3083, 3091, 3087, 6613, 3084, 6613, 3088, 3092, 3098, - 3106, 3093, 6613, 3105, 6613, 3107, 3112, 3101, 3108, 6613, - 3115, 3096, 3114, 3119, 3121, 3122, 3125, 3126, 3127, 3128, - 3130, 3132, 3133, 3134, 3135, 3137, 3140, 3142, 3146, 3147, + 2968, 6684, 2973, 2970, 2976, 2977, 2978, 2979, 2981, 2980, + 2982, 2984, 2986, 2992, 2988, 2989, 3006, 3013, 2991, 2998, + 3001, 3003, 3009, 3010, 3014, 3016, 3017, 3025, 3021, 3023, + 3024, 3034, 3027, 3031, 3038, 3029, 3030, 3039, 3040, 3041, + 3042, 3045, 3051, 3044, 3053, 3054, 3056, 3062, 3065, 3066, + 3070, 3067, 3069, 3075, 3077, 6684, 3076, 3081, 3082, 3084, + 3085, 3090, 3087, 3099, 3091, 3095, 3098, 3105, 3107, 3100, + 3110, 3112, 3102, 3119, 3115, 6684, 3116, 6684, 3117, 3118, + 3124, 3132, 3127, 6684, 3130, 6684, 3133, 3140, 3135, 3137, + 6684, 3141, 3142, 3143, 3145, 3148, 3131, 3150, 3154, 3155, - 3153, 3145, 3156, 3157, 3161, 3163, 3164, 3165, 3166, 6613, - 3170, 3167, 3172, 3173, 3175, 3178, 3179, 3181, 3182, 3185, - 3191, 3188, 3190, 3201, 3194, 3197, 3204, 3209, 3212, 3219, - 3205, 3220, 6613, 3215, 3222, 3187, 3226, 6613, 3218, 3216, - 3227, 3230, 3233, 3234, 3235, 3236, 3237, 3241, 3242, 3243, - 3255, 3251, 3244, 3253, 6613, 3248, 3260, 3246, 3264, 3269, - 3276, 3280, 3277, 3278, 3283, 3281, 3285, 3286, 3287, 3288, - 3289, 3291, 3298, 3301, 3297, 3306, 3293, 3303, 3311, 3312, - 3296, 3304, 3313, 3315, 3318, 3320, 3319, 3321, 3262, 3323, - 3322, 6613, 3326, 3327, 3330, 3342, 3328, 3331, 3335, 3340, + 3156, 3157, 3159, 3161, 3163, 3164, 3166, 3174, 3167, 3169, + 3172, 3176, 3183, 3180, 3185, 3192, 3188, 3190, 3194, 3195, + 3197, 6684, 3200, 3196, 3203, 3204, 3206, 3207, 3211, 3212, + 3213, 3215, 3217, 3219, 3223, 3228, 3225, 3232, 3229, 3233, + 3236, 3246, 3242, 3250, 6684, 3245, 3248, 3251, 3252, 6684, + 3255, 3253, 3256, 3263, 3254, 3261, 3265, 3266, 3271, 3267, + 3274, 3273, 3278, 3282, 3283, 3287, 6684, 3289, 3292, 3275, + 3291, 3302, 3305, 3309, 3307, 3310, 3313, 3321, 3317, 3295, + 3316, 3304, 3318, 3324, 3325, 3326, 3328, 3335, 3330, 3331, + 3340, 3332, 3341, 3342, 3343, 3344, 3346, 3347, 3348, 3345, - 3344, 6613, 3350, 3351, 3352, 3356, 3358, 3345, 3353, 3361, - 3362, 3363, 3364, 3366, 3369, 3370, 6613, 3374, 6613, 3375, - 3384, 3377, 3383, 3390, 3388, 3392, 3397, 3391, 3393, 3398, - 3405, 3399, 3401, 3407, 3408, 3411, 3413, 3415, 3425, 3414, - 3419, 3421, 3426, 3428, 3436, 3433, 3429, 6613, 6613, 3431, - 3437, 3442, 3445, 3448, 3446, 3449, 3453, 3447, 3454, 3458, - 3459, 3469, 6613, 3460, 3466, 3467, 3470, 3482, 3473, 3484, - 3486, 3485, 3478, 3493, 3488, 6613, 3495, 3496, 3503, 3498, - 3499, 3506, 6613, 3501, 6613, 3504, 3505, 3512, 3507, 3513, - 3514, 3517, 3518, 3522, 3525, 3534, 3529, 3536, 3530, 3533, + 3350, 3349, 3352, 6684, 3355, 3356, 3364, 3375, 3365, 3357, + 3372, 3374, 3376, 6684, 3379, 3380, 3381, 3382, 3383, 3387, + 3389, 3390, 3391, 3395, 3393, 3398, 3401, 3396, 6684, 3406, + 6684, 3399, 3415, 3417, 3420, 3411, 3407, 3427, 3429, 3422, + 3431, 3432, 3433, 3434, 3438, 3440, 3442, 3441, 3443, 3444, + 3454, 3446, 3447, 3449, 3458, 3459, 3461, 3469, 3465, 3466, + 6684, 6684, 3464, 3472, 3474, 3471, 3479, 3480, 3481, 3483, + 3486, 3484, 3493, 3494, 3504, 6684, 3497, 3500, 3499, 3501, + 3513, 3505, 3509, 3516, 3517, 3518, 3525, 3520, 6684, 3524, + 3527, 3534, 3529, 3530, 3537, 6684, 3535, 6684, 3536, 3538, - 3537, 3539, 3540, 3547, 3544, 3545, 3546, 6613, 3549, 3552, - 3554, 3555, 3557, 3563, 3565, 3559, 6613, 3567, 3570, 3569, - 3571, 3578, 3575, 3579, 3580, 3584, 3587, 3585, 3588, 3590, - 6613, 3589, 3593, 3603, 3595, 3596, 3598, 3606, 3609, 3611, - 6613, 3615, 3616, 3623, 3619, 3621, 3622, 3626, 3627, 3628, - 3630, 3631, 3632, 3634, 3635, 3640, 3636, 3638, 3645, 3641, - 3653, 3655, 3642, 3663, 3670, 3656, 6613, 3659, 3666, 3668, - 3669, 3671, 3672, 3674, 3680, 3682, 3676, 3691, 3692, 3683, - 3687, 3695, 3697, 3705, 3700, 6613, 3712, 3698, 3713, 3702, - 3711, 3710, 3715, 3717, 3719, 3721, 3720, 3723, 3724, 3726, + 3540, 3545, 3546, 3547, 3549, 3550, 3551, 3553, 3566, 3567, + 3558, 3569, 3563, 3570, 3572, 3576, 3573, 3584, 3577, 3579, + 3580, 6684, 3582, 3585, 3589, 3587, 3596, 3597, 3594, 3590, + 6684, 3600, 3604, 3606, 3608, 3611, 3612, 3614, 3615, 3617, + 3619, 3620, 3624, 3625, 6684, 3621, 3622, 3635, 3632, 3628, + 3639, 3648, 3638, 3650, 6684, 3651, 3643, 3659, 3655, 3657, + 3658, 3661, 3662, 3663, 3665, 3666, 3667, 3668, 3670, 3674, + 3675, 3671, 3678, 3677, 3689, 3688, 3680, 3692, 3702, 3698, + 6684, 3699, 3703, 3704, 3705, 3706, 3707, 3709, 3712, 3714, + 3715, 3717, 3726, 3724, 3728, 3730, 3732, 3737, 3738, 6684, - 3738, 3730, 3733, 3729, 3734, 3745, 3737, 6613, 3752, 3748, - 3740, 3756, 3750, 3759, 3766, 3763, 3764, 3765, 3768, 3769, - 3770, 3773, 3775, 3776, 3779, 3780, 6613, 6613, 3782, 3783, - 3785, 6613, 3787, 3788, 3798, 3790, 3791, 3799, 3803, 3802, - 3801, 3804, 3806, 3807, 6613, 3813, 3821, 3816, 3817, 3825, - 3820, 6613, 3826, 3834, 3830, 3833, 3831, 3835, 3837, 3839, - 3841, 3842, 3843, 3846, 3854, 3858, 3850, 3849, 3853, 6613, - 3859, 3861, 3862, 3866, 3863, 3871, 6613, 3868, 3872, 3874, - 3878, 3880, 3891, 3877, 3885, 3893, 3888, 3894, 3895, 3897, - 3898, 3899, 3906, 3905, 3907, 3904, 3910, 3913, 6613, 3915, + 3739, 3734, 3746, 3742, 3744, 3751, 3743, 3748, 3755, 3756, + 3757, 3759, 3760, 3765, 3768, 3769, 3766, 3758, 3772, 3779, + 3774, 6684, 3790, 3777, 3780, 3785, 3793, 3796, 3803, 3798, + 3799, 3800, 3802, 3805, 3808, 3806, 3810, 3812, 3815, 3816, + 6684, 6684, 3818, 3820, 3824, 6684, 3825, 3822, 3829, 3828, + 3838, 3827, 3835, 3839, 3840, 3830, 3841, 3847, 3851, 6684, + 3852, 3859, 3854, 3855, 3864, 3861, 6684, 3860, 3871, 3869, + 3870, 3872, 3866, 3876, 3877, 3880, 3878, 3882, 3884, 3893, + 3894, 3890, 3891, 3897, 6684, 3892, 3898, 3899, 3903, 3900, + 3907, 6684, 3905, 3909, 3914, 3921, 3916, 3929, 3926, 3923, - 3916, 3921, 3923, 6613, 3926, 3934, 3935, 6613, 3936, 3931, - 3937, 3938, 3945, 6613, 3940, 3943, 3944, 3946, 3954, 3951, - 3955, 3953, 3958, 3959, 3962, 6613, 3963, 3960, 3961, 6613, - 3965, 3969, 3977, 3981, 3967, 3988, 3983, 3985, 3986, 3984, - 6613, 3991, 6613, 3994, 3995, 3998, 6613, 4000, 4001, 4003, - 4005, 4002, 4009, 4010, 4016, 4018, 4006, 4020, 4021, 4022, - 4023, 4025, 4034, 4024, 4031, 4032, 4033, 6613, 4036, 4035, - 4043, 4038, 4044, 4046, 4049, 4051, 4054, 4056, 6613, 6613, - 4063, 6613, 4057, 4064, 4065, 6613, 4067, 4070, 4074, 4066, - 4075, 4071, 4078, 4079, 6613, 4086, 4088, 6613, 4090, 4091, + 3932, 3933, 3935, 3918, 3936, 3938, 3940, 3948, 3944, 3945, + 3943, 3947, 3951, 3953, 6684, 3955, 3961, 3962, 3966, 6684, + 3968, 3975, 3976, 6684, 3979, 3963, 3978, 3980, 3987, 6684, + 3984, 3986, 3985, 3988, 3999, 3994, 4001, 3991, 3998, 4000, + 4002, 6684, 4003, 4004, 4006, 6684, 4009, 4007, 4020, 4022, + 4017, 4030, 4025, 4027, 4028, 4026, 6684, 4033, 6684, 4036, + 4029, 4042, 6684, 4040, 4044, 4045, 4047, 4048, 4049, 4053, + 4059, 4061, 4051, 4055, 4063, 4065, 4066, 4067, 4074, 4069, + 4073, 4075, 4076, 6684, 4077, 4079, 4083, 4080, 4085, 4094, + 4095, 4088, 4091, 4098, 6684, 6684, 4102, 6684, 4105, 4099, - 4098, 4093, 4094, 4095, 4101, 4096, 4099, 4106, 4107, 4108, - 4109, 4103, 4110, 4111, 6613, 4104, 4112, 4114, 4128, 4122, - 4131, 4133, 4132, 4134, 6613, 4138, 4139, 4142, 4144, 4145, - 6613, 4146, 6613, 4147, 4148, 4150, 4156, 4153, 6613, 4159, - 4163, 4167, 4164, 4168, 4169, 4170, 4174, 4176, 4178, 4186, - 4182, 4183, 4181, 4201, 4184, 6613, 4185, 4188, 4206, 4207, - 4197, 4189, 4216, 4213, 4215, 4203, 4211, 4223, 4214, 4224, - 4228, 4230, 4231, 4220, 6613, 4232, 4233, 4234, 4243, 4240, - 4245, 4246, 6613, 4247, 4248, 4251, 6613, 4249, 4250, 4257, - 4261, 4263, 4264, 4267, 4265, 4269, 6613, 4268, 4273, 4271, + 4104, 6684, 4106, 4110, 4118, 4113, 4116, 4123, 4127, 4114, + 6684, 4129, 4131, 6684, 4119, 4133, 4140, 4136, 4135, 4138, + 4144, 4137, 4141, 4147, 4148, 4149, 4151, 4150, 4152, 4155, + 6684, 4153, 4154, 4156, 4166, 4169, 4170, 4172, 4178, 4171, + 6684, 4179, 4180, 4181, 4188, 4185, 6684, 4186, 6684, 4189, + 4194, 4196, 4198, 4197, 4210, 6684, 4209, 4201, 4206, 4202, + 4212, 4218, 4214, 4221, 4213, 4222, 4229, 4225, 4224, 4227, + 4241, 4236, 6684, 4232, 4233, 4246, 4248, 4238, 4234, 4256, + 4252, 4258, 4243, 4255, 4265, 4262, 4266, 4268, 4270, 4272, + 4273, 6684, 4275, 4276, 4259, 4289, 4281, 4285, 4286, 6684, - 4272, 4287, 4286, 6613, 6613, 4288, 6613, 4290, 4274, 4278, - 4298, 4275, 4299, 4302, 4303, 4305, 4306, 4309, 4310, 4276, - 4311, 4320, 4317, 4324, 4327, 4328, 4326, 4191, 4331, 6613, - 6613, 4333, 4334, 4336, 4338, 4340, 4342, 4343, 4350, 4347, - 4355, 4358, 4348, 4365, 6613, 4362, 4363, 4364, 4367, 6613, - 4346, 4369, 4370, 4373, 4372, 4376, 4375, 4378, 4379, 4380, - 4382, 4385, 4386, 4390, 4392, 4396, 4397, 4400, 4399, 4403, - 4405, 4407, 6613, 4412, 4408, 4410, 4411, 4413, 4417, 4421, - 4426, 4422, 6613, 4415, 6613, 4428, 4425, 4440, 4431, 4445, - 4447, 4432, 4448, 4449, 4451, 4453, 4456, 4457, 4466, 4458, + 4290, 4292, 4295, 6684, 4296, 4299, 4301, 4304, 4305, 4306, + 4311, 4307, 4313, 4312, 6684, 4308, 4314, 4315, 4325, 4329, + 4322, 6684, 6684, 4332, 6684, 4333, 4318, 4337, 4336, 4340, + 4344, 4343, 4346, 4348, 4345, 4356, 4357, 4350, 4349, 4367, + 4358, 4372, 4375, 4376, 4374, 4373, 4359, 6684, 6684, 4383, + 4384, 4378, 4389, 4390, 4386, 4393, 4400, 4392, 4395, 4402, + 4403, 4412, 6684, 4405, 4404, 4413, 4407, 6684, 4414, 4415, + 4418, 4416, 4421, 4419, 4422, 4423, 4425, 4428, 4433, 4436, + 4429, 4442, 4434, 4435, 4445, 4446, 4449, 4448, 4451, 4456, + 6684, 4458, 4452, 4459, 4462, 4463, 4464, 4467, 4468, 4470, - 4462, 4467, 4460, 4471, 4477, 4474, 6613, 4478, 4480, 4481, - 4482, 4485, 4487, 4488, 4490, 4491, 4493, 4495, 4497, 4499, - 4504, 4505, 4506, 4508, 4511, 6613, 4512, 4514, 4516, 4521, - 4518, 4523, 4524, 4525, 4532, 4528, 4533, 4537, 6613, 4534, - 4538, 4543, 6613, 4540, 4544, 4546, 4550, 4552, 4545, 4553, - 4555, 4556, 6613, 4563, 4559, 4565, 4566, 4568, 4569, 4424, - 4573, 4575, 4576, 4582, 6613, 4583, 4581, 4589, 4590, 4588, - 4591, 4596, 4592, 4598, 6613, 4601, 4603, 4599, 4611, 4607, - 4615, 4616, 4618, 4610, 4612, 4619, 4620, 4627, 4630, 4631, - 4632, 4643, 4644, 4641, 6613, 4633, 6613, 4642, 4647, 4655, + 6684, 4474, 6684, 4473, 4476, 4475, 4477, 4493, 4494, 4495, + 4484, 4482, 4500, 4501, 4504, 4505, 4509, 4506, 4510, 4511, + 4515, 4517, 4519, 4520, 6684, 4526, 4514, 4522, 4528, 4530, + 4533, 4535, 4537, 4538, 4544, 4545, 4541, 4548, 4550, 4539, + 4552, 4551, 4555, 4557, 6684, 4558, 4565, 4559, 4567, 4562, + 4571, 4570, 4574, 4582, 4572, 4579, 4583, 6684, 4584, 4586, + 4588, 6684, 4589, 4592, 4593, 4596, 4598, 4595, 4601, 4602, + 4603, 6684, 4611, 4604, 4612, 4607, 4613, 4616, 4620, 4622, + 4626, 4625, 4629, 6684, 4636, 4628, 4633, 4637, 4639, 4641, + 4644, 4643, 4645, 6684, 4650, 4651, 4652, 4659, 4657, 4658, - 4656, 4650, 4660, 4658, 4652, 6613, 4654, 4662, 4667, 4664, - 4668, 6613, 4669, 4671, 4673, 4680, 6613, 4682, 4684, 4675, - 4686, 4691, 4693, 6613, 4697, 4699, 4700, 4707, 4709, 4704, - 4711, 4706, 4714, 4712, 4708, 4716, 4717, 4725, 4723, 4721, - 6613, 4727, 4729, 4734, 4736, 4730, 4738, 4728, 4740, 4743, - 4745, 6613, 4746, 4749, 4750, 4752, 4753, 4754, 4755, 4762, - 4759, 4761, 4763, 4764, 4767, 4768, 6613, 4773, 4771, 4775, - 4784, 4626, 4786, 6613, 4781, 6613, 4777, 4792, 4794, 4776, - 4795, 6613, 6613, 4799, 4804, 4800, 4806, 4801, 6613, 6613, - 4808, 6613, 4809, 6613, 4811, 4813, 6613, 6613, 4814, 4815, + 4666, 4663, 4669, 4661, 4662, 4676, 4672, 4680, 4682, 4683, + 4670, 4693, 4694, 4695, 6684, 4677, 6684, 4696, 4700, 4704, + 4702, 4706, 4707, 4685, 4709, 6684, 4710, 4712, 4714, 4717, + 4716, 6684, 4718, 4719, 4721, 4722, 6684, 4720, 4733, 4724, + 4727, 4741, 4742, 6684, 4746, 4747, 4748, 4755, 4757, 4752, + 4759, 4754, 4762, 4760, 4756, 4764, 4765, 4773, 4771, 4769, + 6684, 4775, 4777, 4782, 4784, 4778, 4786, 4776, 4788, 4791, + 4793, 6684, 4794, 4797, 4798, 4800, 4801, 4802, 4803, 4810, + 4807, 4809, 4811, 4812, 4815, 4816, 6684, 4821, 4819, 4823, + 4832, 4834, 4836, 6684, 4839, 6684, 4829, 4824, 4841, 4840, - 4816, 4817, 4824, 6613, 4831, 6613, 4826, 4832, 4818, 4828, - 4835, 6613, 4836, 4839, 4837, 4844, 4846, 6613, 4838, 4854, - 4843, 4851, 6613, 4853, 4857, 4858, 4862, 6613, 4863, 4868, - 4865, 4869, 4872, 4871, 4873, 4874, 4878, 4879, 4884, 4882, - 4883, 4885, 4894, 4896, 4898, 4900, 4901, 4886, 4905, 4906, - 4908, 4911, 4912, 4914, 4915, 4917, 4918, 4920, 4922, 4925, - 4926, 4676, 4927, 4928, 4930, 4929, 4932, 4941, 4933, 4943, - 4944, 4945, 4946, 4947, 4950, 4951, 4954, 4955, 4959, 4960, - 4962, 6613, 4963, 4957, 4965, 4971, 4973, 4978, 4980, 4990, - 4992, 4993, 6613, 4995, 6613, 4997, 4982, 4999, 4967, 5001, + 4845, 6684, 6684, 4847, 4855, 4850, 4853, 4854, 6684, 6684, + 4857, 6684, 4858, 6684, 4859, 4861, 6684, 6684, 4860, 4864, + 4867, 4869, 4870, 4872, 6684, 4879, 6684, 4886, 4881, 4868, + 4883, 4887, 6684, 4885, 4891, 4889, 4895, 4897, 6684, 4893, + 4906, 4898, 4899, 6684, 4909, 4910, 4903, 4911, 6684, 4917, + 4920, 4921, 4912, 4915, 4923, 4925, 4931, 4932, 4935, 4933, + 4934, 4936, 4937, 4940, 4944, 4949, 4951, 4941, 4952, 4955, + 4957, 4961, 4959, 4963, 4964, 4965, 4966, 4968, 4969, 4973, + 4977, 4974, 4978, 4980, 4979, 4981, 4989, 4983, 4992, 4996, + 4993, 4997, 4998, 5000, 5004, 5005, 4999, 5006, 5010, 5014, - 6613, 4984, 5002, 5003, 5006, 5005, 5007, 5009, 5008, 5012, - 5013, 5017, 6613, 5022, 5015, 5019, 5023, 5034, 6613, 5035, - 5037, 5024, 5038, 5039, 5040, 5043, 5045, 5048, 5047, 5050, - 5052, 5053, 5054, 5059, 5058, 5068, 5075, 5060, 5062, 5070, - 5071, 5074, 5076, 5080, 5081, 5082, 5088, 5090, 5094, 6613, - 5083, 6613, 5095, 5091, 5097, 5098, 5101, 5099, 5103, 6613, - 6613, 5105, 5108, 5113, 5114, 5115, 5117, 5120, 5121, 5123, - 6613, 5124, 5126, 5135, 5128, 6613, 5132, 5137, 5138, 5143, - 6613, 5140, 5144, 5145, 5151, 5146, 5155, 5156, 5159, 5148, - 5160, 5162, 5167, 6613, 6613, 6613, 6613, 5169, 5163, 5174, + 5007, 5009, 5011, 6684, 5017, 5020, 5025, 5027, 5029, 5031, + 5032, 5034, 5039, 5040, 6684, 5044, 6684, 5046, 5049, 5050, + 5051, 5053, 6684, 5052, 5055, 5054, 5057, 5056, 5058, 5060, + 5059, 5063, 5064, 5074, 6684, 5084, 5066, 5069, 5085, 5087, + 6684, 5088, 5090, 5092, 5093, 5095, 5098, 5096, 5099, 5100, + 5101, 5104, 5106, 5107, 5108, 5109, 5119, 5122, 5129, 5112, + 5124, 5125, 5128, 5131, 5132, 5133, 5135, 5141, 5138, 5145, + 5149, 6684, 5146, 6684, 5150, 5151, 5154, 5155, 5156, 5157, + 5158, 5160, 6684, 6684, 5163, 5164, 5169, 5171, 5172, 5174, + 5176, 5177, 5180, 6684, 5181, 5185, 5194, 5182, 6684, 5188, - 5171, 5175, 5177, 5178, 5180, 5176, 6613, 5190, 6613, 6613, - 5192, 5193, 5181, 5194, 5196, 5183, 5200, 5203, 6613, 5201, - 5205, 5207, 5206, 5214, 5218, 5215, 5208, 5223, 5219, 5224, - 5225, 5228, 5236, 5232, 5233, 5235, 5239, 5241, 5248, 6613, - 6613, 5238, 5253, 5242, 5255, 5256, 5257, 5258, 5265, 5260, - 5263, 5266, 5267, 5269, 5270, 5279, 5280, 5271, 5278, 6613, - 5281, 5284, 5283, 6613, 5285, 6613, 5287, 5293, 5294, 5295, - 5296, 5300, 5301, 5304, 6613, 6613, 5299, 5316, 5314, 6613, - 6613, 5303, 5306, 5311, 5319, 5321, 5315, 5323, 5324, 5336, - 5325, 6613, 5327, 6613, 5329, 5333, 5341, 5331, 5351, 5352, + 5191, 5197, 5199, 6684, 5200, 5201, 5202, 5205, 5207, 5209, + 5213, 5214, 5215, 5216, 5219, 5221, 6684, 6684, 6684, 6684, + 5224, 5222, 5230, 5227, 5232, 5233, 5234, 5236, 5237, 5238, + 6684, 5247, 6684, 6684, 5249, 5250, 5248, 5251, 5252, 5258, + 5259, 5261, 6684, 5263, 5265, 5266, 5264, 5273, 5275, 5276, + 5267, 5283, 5280, 5284, 5285, 5288, 5296, 5292, 5293, 5295, + 5299, 5301, 5308, 6684, 6684, 5298, 5313, 5302, 5315, 5316, + 5317, 5318, 5325, 5320, 5323, 5326, 5327, 5329, 5330, 5339, + 5340, 5331, 5338, 6684, 5341, 5344, 5343, 6684, 5345, 6684, + 5347, 5353, 5354, 5355, 5356, 5360, 5361, 5364, 6684, 6684, - 5353, 5355, 5350, 5338, 6613, 5348, 5359, 6613, 5366, 5361, - 5363, 5362, 5365, 6613, 5368, 5370, 5374, 5378, 6613, 5382, - 5371, 5379, 6613, 5386, 6613, 5383, 5387, 5389, 5396, 5393, - 6613, 5391, 5397, 6613, 5400, 5407, 5409, 5402, 6613, 5404, - 6613, 5394, 5417, 5418, 5421, 5408, 5425, 5413, 5410, 5427, - 5435, 5431, 5432, 6613, 6613, 5439, 5437, 135, 5444, 5434, - 5440, 5445, 5446, 5453, 5448, 5450, 5456, 6613, 6613, 5458, - 6613, 5451, 5461, 6613, 5449, 5466, 5467, 5462, 5470, 5471, - 5472, 5476, 5478, 5481, 5482, 5483, 5484, 5486, 5502, 5505, - 5487, 5508, 5509, 5511, 5513, 5515, 5517, 5518, 5500, 5498, + 5359, 5376, 5374, 6684, 6684, 5363, 5366, 5371, 5379, 5381, + 5375, 5383, 5384, 5396, 5385, 6684, 5387, 6684, 5389, 5393, + 5401, 5391, 5411, 5412, 5403, 5413, 5415, 5410, 5417, 6684, + 5419, 5420, 6684, 5429, 5424, 5426, 5425, 5431, 6684, 5434, + 5432, 5437, 5441, 6684, 5443, 5444, 5447, 6684, 5454, 6684, + 5438, 5451, 5445, 5461, 5459, 6684, 5449, 5462, 6684, 5465, + 5467, 5470, 5468, 6684, 5475, 5472, 6684, 5476, 5478, 5479, + 5483, 5484, 5486, 5487, 5488, 5489, 5497, 5493, 5494, 6684, + 6684, 5501, 5502, 135, 5510, 5505, 5511, 5512, 5508, 5519, + 5515, 5516, 5518, 6684, 6684, 5521, 6684, 5522, 5524, 6684, - 5521, 5519, 5522, 5525, 5528, 5529, 6613, 5531, 5536, 5488, - 5532, 6613, 5540, 5537, 5542, 5546, 6613, 5553, 5545, 5547, - 5555, 6613, 5543, 5558, 5559, 5560, 5562, 5565, 5567, 5572, - 5570, 5568, 5574, 6613, 6613, 6613, 5575, 5585, 6613, 5587, - 5579, 5573, 5588, 6613, 5590, 5591, 5592, 6613, 6613, 5594, - 5596, 5595, 5603, 6613, 5599, 6613, 5601, 6613, 5602, 5608, - 5609, 5612, 6613, 5618, 5614, 5616, 5624, 6613, 5632, 5634, - 5636, 5617, 5620, 5629, 5637, 6613, 5644, 5641, 5645, 5652, - 5639, 5643, 5647, 5649, 5653, 5662, 5658, 5660, 6613, 5661, - 5664, 5667, 5673, 5663, 5666, 5670, 6613, 5675, 6613, 5677, + 5523, 5533, 5534, 5525, 5539, 5529, 5537, 5538, 5546, 5541, + 5550, 5549, 5551, 5554, 5565, 5572, 5556, 5568, 5573, 5576, + 5578, 5580, 5569, 5582, 5583, 5558, 5586, 5588, 5589, 5590, + 5592, 5593, 6684, 5596, 5598, 5601, 5600, 6684, 5606, 5602, + 5611, 5614, 6684, 5616, 5608, 5620, 5621, 5622, 6684, 5623, + 5625, 5628, 5626, 5627, 5633, 5634, 5643, 5638, 5636, 5648, + 6684, 6684, 6684, 5650, 5640, 6684, 5654, 5647, 5656, 5657, + 6684, 5659, 5660, 5662, 6684, 6684, 5663, 5664, 6684, 5665, + 5672, 6684, 5667, 6684, 5668, 6684, 5671, 5677, 5683, 5678, + 6684, 5686, 5680, 5690, 5694, 6684, 5697, 5700, 5702, 5703, - 6613, 5678, 5679, 5680, 5687, 5686, 5688, 5689, 5693, 5699, - 5694, 5690, 5701, 5705, 5706, 6613, 6613, 5710, 5712, 6613, - 5713, 6613, 5715, 6613, 5716, 5717, 5719, 5718, 6613, 5721, - 5722, 5728, 5730, 5726, 5729, 6613, 5738, 5731, 5736, 5741, - 6613, 6613, 5743, 5750, 5746, 6613, 5747, 5753, 5757, 5754, - 5759, 5760, 5761, 5762, 5772, 5764, 5765, 5767, 5776, 5773, - 5781, 5786, 5779, 6613, 6613, 6613, 5785, 5790, 5798, 5794, - 5796, 5801, 5791, 6613, 5800, 5803, 5806, 5804, 5813, 5808, - 5815, 6613, 5812, 5816, 5817, 5818, 5820, 5821, 5822, 5827, - 6613, 5829, 5833, 5830, 5837, 5839, 5846, 5848, 5850, 5841, + 5705, 5692, 5708, 6684, 5715, 5714, 5716, 5707, 5710, 5717, + 5718, 5722, 5720, 5730, 5723, 5732, 6684, 5733, 5735, 5736, + 5742, 5726, 5734, 5744, 6684, 5746, 6684, 5751, 6684, 5747, + 5752, 5753, 5754, 5755, 5756, 5761, 5762, 5772, 5768, 5758, + 5764, 5779, 5770, 6684, 6684, 5781, 5783, 6684, 5774, 6684, + 5785, 6684, 5786, 5787, 5788, 5791, 5792, 6684, 5799, 5794, + 5796, 5806, 5801, 5804, 6684, 5808, 5811, 5810, 5813, 6684, + 6684, 5815, 5822, 5821, 6684, 5817, 5819, 5828, 5820, 5831, + 5832, 5833, 5834, 5844, 5836, 5837, 5841, 5846, 5847, 5848, + 5853, 5857, 6684, 6684, 6684, 5852, 5859, 5866, 5868, 5869, - 5843, 5858, 5855, 6613, 5857, 6613, 6613, 5853, 6613, 5859, - 5861, 5862, 5863, 6613, 5866, 5867, 5868, 5871, 5870, 5873, - 5875, 5877, 6613, 5886, 5878, 5888, 5889, 6613, 6613, 5892, - 6613, 5896, 5897, 5899, 5906, 5903, 5901, 5905, 5911, 6613, - 5908, 5914, 5910, 5917, 5918, 5920, 5921, 6613, 5925, 5922, - 5924, 5926, 6613, 5929, 5934, 5931, 5935, 5938, 6613, 5940, - 5939, 5942, 5952, 6613, 5951, 5955, 5953, 6613, 6613, 5961, - 5963, 5964, 6613, 6613, 6613, 5970, 5967, 5954, 5975, 6613, - 5977, 5981, 5985, 5989, 5980, 6613, 5988, 5990, 5992, 5994, - 5995, 6613, 6613, 5996, 5997, 5998, 6001, 6613, 6613, 6002, + 5871, 5863, 6684, 5870, 5874, 5877, 5876, 5884, 5880, 5886, + 6684, 5887, 5883, 5888, 5889, 5891, 5892, 5893, 5894, 6684, + 5905, 5907, 5910, 5900, 5912, 5919, 5921, 5923, 5916, 5908, + 5930, 5926, 6684, 5928, 6684, 6684, 5925, 6684, 5932, 5933, + 5937, 5935, 5938, 6684, 5941, 5936, 5942, 5945, 5943, 5949, + 5947, 5951, 6684, 5966, 5948, 5952, 5964, 6684, 6684, 5973, + 6684, 5975, 5965, 5953, 5982, 5977, 5978, 5980, 5983, 6684, + 5981, 5987, 5984, 5990, 5991, 5993, 5994, 6684, 5995, 5997, + 5998, 5999, 6684, 6002, 6001, 6006, 6007, 6008, 6684, 6009, + 6011, 6021, 6022, 6684, 6012, 6026, 6025, 6684, 6684, 6034, - 6004, 6006, 6005, 6007, 6613, 6008, 6013, 6020, 6015, 6028, - 6031, 6033, 6021, 6034, 6035, 6043, 6046, 6023, 6038, 6041, - 6045, 6049, 6051, 6056, 6058, 6057, 6060, 6065, 6061, 6066, - 6613, 6613, 6068, 6613, 6073, 6069, 6613, 6613, 6075, 6080, - 6082, 6084, 6086, 6088, 6090, 6092, 6077, 6613, 6093, 6095, - 6096, 6097, 6098, 6613, 6100, 6107, 6099, 6104, 6101, 6110, - 6116, 6613, 6108, 6121, 6613, 6613, 6112, 6122, 6124, 6126, - 6128, 6613, 6129, 6137, 6133, 6134, 6135, 6138, 6136, 6613, - 6142, 6140, 6613, 6613, 6141, 6143, 6613, 6613, 6144, 6613, - 6613, 6613, 6613, 6613, 6613, 6613, 6613, 6155, 6159, 6613, + 6036, 6037, 6684, 6684, 6684, 6040, 6042, 6030, 6044, 6684, + 6046, 6053, 6057, 6059, 6063, 6048, 6684, 6062, 6056, 6069, + 6064, 6066, 6684, 6684, 6070, 6071, 6072, 6074, 6684, 6684, + 6075, 6076, 6081, 6078, 6079, 6684, 6084, 6088, 6096, 6089, + 6103, 6106, 6108, 6086, 6092, 6109, 6116, 6117, 6099, 6112, + 6113, 6114, 6120, 6122, 6129, 6132, 6130, 6138, 6140, 6131, + 6142, 6684, 6684, 6144, 6684, 6149, 6145, 6684, 6684, 6151, + 6153, 6156, 6158, 6684, 6160, 6162, 6164, 6166, 6167, 6684, + 6168, 6170, 6171, 6123, 6172, 6684, 6175, 6174, 6176, 6182, + 6178, 6183, 6186, 6684, 6181, 6188, 6684, 6684, 6179, 6198, - 6151, 6166, 6168, 6172, 6613, 6153, 6169, 6157, 6163, 6613, - 6173, 6613, 6174, 6175, 6177, 6179, 6180, 6184, 6188, 6189, - 6191, 6190, 6192, 6196, 6193, 6198, 6194, 6200, 6207, 6204, - 6205, 6213, 6613, 6613, 6613, 6214, 6215, 6220, 6222, 6224, - 6226, 6230, 6233, 6234, 6216, 6237, 6238, 6239, 6241, 6242, - 6251, 6246, 6247, 6249, 6256, 6248, 6262, 6613, 6264, 6250, - 6252, 6270, 6613, 6258, 6613, 6267, 6613, 6613, 6275, 6276, - 6272, 6278, 6287, 6288, 6279, 6283, 6284, 6286, 6290, 6613, - 6295, 6613, 6613, 6292, 6298, 6613, 6300, 6301, 6613, 6299, - 6302, 6304, 6308, 6309, 6306, 6310, 6311, 6327, 6613, 6613, + 6189, 6199, 6202, 6684, 6203, 6210, 6205, 6207, 6208, 6211, + 6209, 6684, 6216, 6214, 6684, 6684, 6213, 6218, 6684, 6684, + 6221, 6684, 6684, 6684, 6684, 6684, 6684, 6684, 6684, 6226, + 6232, 6684, 6224, 6239, 6241, 6243, 6684, 6228, 6236, 6230, + 6244, 6684, 6246, 6684, 6248, 6250, 6249, 6253, 6252, 6256, + 6259, 6258, 6262, 6263, 6265, 6266, 6269, 6270, 6268, 6274, + 6283, 6276, 6284, 6286, 6684, 6684, 6684, 6285, 6287, 6293, + 6289, 6297, 6300, 6303, 6306, 6294, 6308, 6309, 6310, 6311, + 6314, 6317, 6324, 6319, 6322, 6320, 6327, 6321, 6330, 6684, + 6336, 6323, 6331, 6343, 6684, 6337, 6684, 6340, 6684, 6684, - 6312, 6317, 6320, 6329, 6331, 6330, 6333, 6337, 6338, 6340, - 6341, 6350, 6613, 6347, 6348, 6352, 6613, 6354, 6349, 6355, - 6356, 6357, 6365, 6361, 6364, 6613, 6366, 6613, 6370, 6372, - 6373, 6363, 6371, 6374, 6385, 6383, 6379, 6613, 6389, 6393, - 6391, 6395, 6397, 6399, 6400, 6401, 6403, 6406, 6412, 6409, - 6416, 6417, 6413, 6421, 6418, 6613, 6428, 6419, 6613, 6425, - 6429, 6422, 6431, 6435, 6613, 6440, 6433, 6442, 6443, 6446, - 6447, 6613, 6449, 6456, 6451, 6613, 6457, 6613, 6613, 6459, - 6453, 6460, 6466, 6468, 6613, 6613, 6613, 6493, 6500, 6507, - 6514, 6521, 6528, 6535, 88, 6542, 6549, 6556, 6563, 6570, + 6345, 6346, 6348, 6349, 6357, 6359, 6355, 6354, 6360, 6361, + 6363, 6684, 6365, 6684, 6684, 6370, 6372, 6684, 6371, 6373, + 6684, 6374, 6375, 6376, 6383, 6384, 6381, 6382, 6388, 6390, + 6684, 6684, 6378, 6386, 6399, 6402, 6403, 6411, 6406, 6409, + 6410, 6412, 6413, 6422, 6684, 6420, 6421, 6424, 6684, 6425, + 6427, 6428, 6430, 6431, 6439, 6434, 6438, 6684, 6436, 6684, + 6441, 6443, 6442, 6444, 6445, 6448, 6456, 6454, 6458, 6684, + 6460, 6465, 6462, 6467, 6469, 6472, 6473, 6474, 6476, 6478, + 6482, 6488, 6485, 6489, 6479, 6490, 6491, 6684, 6500, 6494, + 6684, 6497, 6501, 6503, 6504, 6507, 6684, 6512, 6505, 6509, - 6577, 6584, 6591, 6598, 6605 + 6514, 6517, 6518, 6684, 6520, 6527, 6529, 6684, 6530, 6684, + 6684, 6532, 6521, 6531, 6534, 6539, 6684, 6684, 6684, 6564, + 6571, 6578, 6585, 6592, 6599, 6606, 88, 6613, 6620, 6627, + 6634, 6641, 6648, 6655, 6662, 6669, 6676 } ; -static const flex_int16_t yy_def[3406] = +static const flex_int16_t yy_def[3438] = { 0, - 3387, 1, 3388, 3388, 3389, 3389, 3390, 3390, 3391, 3391, - 3392, 3392, 3393, 3393, 3394, 3394, 3387, 3395, 3387, 3387, - 3387, 3387, 3396, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3397, 3387, 3387, 3387, - 3397, 3398, 3387, 3387, 3387, 3398, 3399, 3387, 3387, 3387, - 3387, 3399, 3400, 3387, 3387, 3387, 3400, 3401, 3387, 3402, - 3387, 3401, 3401, 3403, 3387, 3387, 3387, 3387, 3403, 3404, - 3387, 3387, 3387, 3404, 3395, 3395, 3387, 3405, 3396, 3405, - 3396, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, + 3419, 1, 3420, 3420, 3421, 3421, 3422, 3422, 3423, 3423, + 3424, 3424, 3425, 3425, 3426, 3426, 3419, 3427, 3419, 3419, + 3419, 3419, 3428, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3429, 3419, 3419, 3419, + 3429, 3430, 3419, 3419, 3419, 3430, 3431, 3419, 3419, 3419, + 3419, 3431, 3432, 3419, 3419, 3419, 3432, 3433, 3419, 3434, + 3419, 3433, 3433, 3435, 3419, 3419, 3419, 3419, 3435, 3436, + 3419, 3419, 3419, 3436, 3427, 3427, 3419, 3437, 3428, 3437, + 3428, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3397, - 3397, 3398, 3398, 3399, 3399, 3387, 3400, 3400, 3401, 3401, - 3402, 3402, 3401, 3403, 3403, 3387, 3404, 3404, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3429, + 3429, 3430, 3430, 3431, 3431, 3419, 3432, 3432, 3433, 3433, + 3434, 3434, 3433, 3435, 3435, 3419, 3436, 3436, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3401, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3433, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3387, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3387, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3401, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3433, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3387, 3395, 3387, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3387, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3419, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3395, 3395, 3395, 3395, 3395, 3395, 3387, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3387, 3395, 3395, - 3401, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, + 3427, 3427, 3433, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3387, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3401, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3387, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3387, 3395, 3387, 3387, 3395, 3387, 3387, 3395, - 3395, 3387, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3433, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3419, 3419, + 3427, 3419, 3419, 3427, 3427, 3419, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3395, 3395, 3395, 3387, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3387, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3387, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3395, 3395, 3395, 3401, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3387, 3395, 3395, 3387, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3387, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3387, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3387, 3395, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3433, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, + 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3387, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3387, - 3387, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3387, 3395, - 3395, 3387, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3387, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3387, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3387, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3387, 3395, 3395, + 3427, 3427, 3427, 3427, 3419, 3427, 3419, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3419, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3419, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3395, 3395, 3401, 3401, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3387, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3387, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3387, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3387, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, + 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, + 3433, 3433, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3387, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3387, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3387, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3387, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3395, 3387, 3395, 3395, 3401, 3395, 3395, 3395, 3395, 3395, - 3387, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3387, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3387, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3387, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3387, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, + 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3419, 3427, 3427, 3433, 3427, 3427, 3427, 3427, 3427, + 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3387, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3387, 3395, 3387, 3395, 3395, 3395, - 3395, 3395, 3387, 3395, 3387, 3395, 3395, 3395, 3395, 3387, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, + 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3419, 3427, 3427, + 3427, 3427, 3427, 3419, 3427, 3419, 3427, 3427, 3427, 3427, + 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3387, - 3395, 3395, 3395, 3401, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3387, 3395, 3395, 3395, 3395, 3387, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3387, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3387, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3419, 3427, 3427, 3427, 3433, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3419, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3395, 3387, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3387, 3395, 3387, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3387, 3387, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3387, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3387, 3395, 3395, 3395, 3395, - 3395, 3395, 3387, 3395, 3387, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, + 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3427, + 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3419, 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3427, + 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3419, 3427, 3427, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3387, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3387, 3395, 3395, 3401, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3387, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3387, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3387, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3387, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3419, 3427, 3427, 3433, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3387, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3387, 3387, 3395, 3395, - 3395, 3387, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3387, 3395, 3395, 3395, 3395, 3395, - 3395, 3387, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3387, - 3395, 3395, 3395, 3395, 3395, 3395, 3387, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3387, 3395, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3419, 3419, 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, + 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, + 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3395, 3395, 3395, 3387, 3395, 3395, 3395, 3387, 3395, 3395, - 3395, 3395, 3395, 3387, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3401, 3395, 3387, 3395, 3395, 3395, 3387, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3387, 3395, 3387, 3395, 3395, 3395, 3387, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3387, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3387, 3387, - 3395, 3387, 3395, 3395, 3395, 3387, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3387, 3395, 3395, 3387, 3395, 3395, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3419, + 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3419, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3433, + 3427, 3419, 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3419, 3427, + 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3419, 3419, 3427, 3419, 3427, 3427, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3387, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3387, 3395, 3395, 3395, 3395, 3395, - 3387, 3395, 3387, 3395, 3395, 3395, 3395, 3395, 3387, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3387, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3387, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3387, 3395, 3395, 3395, 3387, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3387, 3395, 3395, 3395, + 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3419, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3419, 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3419, 3427, + 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, - 3395, 3395, 3395, 3387, 3387, 3395, 3387, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3401, 3395, 3395, 3395, 3395, 3395, 3395, 3387, - 3387, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3387, 3395, 3395, 3395, 3395, 3387, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3387, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3387, 3395, 3387, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, + 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, + 3427, 3419, 3419, 3427, 3419, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3433, 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3419, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3419, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3395, 3395, 3395, 3395, 3395, 3395, 3387, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3387, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3387, 3395, - 3395, 3395, 3387, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3387, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3387, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3387, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3387, 3395, 3387, 3395, 3395, 3395, + 3419, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, + 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, - 3395, 3395, 3395, 3401, 3395, 3387, 3395, 3395, 3395, 3395, - 3395, 3387, 3395, 3395, 3395, 3395, 3387, 3395, 3395, 3395, - 3395, 3395, 3395, 3387, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3387, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3387, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3387, 3395, 3395, 3395, - 3395, 3395, 3395, 3387, 3395, 3387, 3395, 3395, 3395, 3395, - 3395, 3387, 3387, 3395, 3395, 3395, 3395, 3395, 3387, 3387, - 3395, 3387, 3395, 3387, 3395, 3395, 3387, 3387, 3395, 3395, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3419, 3427, 3419, 3427, 3427, 3427, + 3427, 3427, 3427, 3433, 3427, 3419, 3427, 3427, 3427, 3427, + 3427, 3419, 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, + 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, + 3427, 3427, 3427, 3419, 3427, 3419, 3427, 3427, 3427, 3427, - 3395, 3395, 3395, 3387, 3395, 3387, 3395, 3395, 3395, 3395, - 3395, 3387, 3395, 3395, 3395, 3395, 3395, 3387, 3395, 3395, - 3395, 3395, 3387, 3395, 3395, 3395, 3395, 3387, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3401, 3395, 3395, 3395, - 3395, 3387, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3387, 3395, 3387, 3395, 3395, 3395, 3395, 3395, + 3427, 3419, 3419, 3427, 3427, 3427, 3427, 3427, 3419, 3419, + 3427, 3419, 3427, 3419, 3427, 3427, 3419, 3419, 3427, 3427, + 3427, 3427, 3427, 3427, 3419, 3427, 3419, 3427, 3427, 3427, + 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3419, 3427, + 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3419, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3433, 3427, - 3387, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3387, 3395, 3395, 3395, 3395, 3395, 3387, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3387, - 3395, 3387, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3387, - 3387, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3387, 3395, 3395, 3395, 3395, 3387, 3395, 3395, 3395, 3395, - 3387, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3387, 3387, 3387, 3387, 3395, 3395, 3395, + 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3419, 3427, 3419, 3427, 3427, 3427, + 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, + 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3419, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3419, 3419, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3419, 3427, - 3395, 3395, 3395, 3395, 3395, 3395, 3387, 3395, 3387, 3387, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3387, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3401, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3387, - 3387, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3387, - 3395, 3395, 3395, 3387, 3395, 3387, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3387, 3387, 3395, 3395, 3395, 3387, - 3387, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3387, 3395, 3387, 3395, 3395, 3395, 3395, 3395, 3395, + 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3419, 3419, 3419, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3419, 3427, 3419, 3419, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3433, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3419, 3419, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3419, 3427, 3419, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3419, - 3395, 3395, 3395, 3395, 3387, 3395, 3395, 3387, 3395, 3395, - 3395, 3395, 3395, 3387, 3395, 3395, 3395, 3395, 3387, 3395, - 3395, 3395, 3387, 3395, 3387, 3395, 3395, 3395, 3395, 3395, - 3387, 3395, 3395, 3387, 3395, 3395, 3395, 3395, 3387, 3395, - 3387, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3387, 3387, 3395, 3395, 3401, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3387, 3387, 3395, - 3387, 3395, 3395, 3387, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, + 3427, 3427, 3427, 3419, 3419, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3419, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, + 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3419, 3427, + 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3419, 3427, 3419, + 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3419, 3427, + 3427, 3427, 3427, 3419, 3427, 3427, 3419, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, + 3419, 3427, 3427, 3433, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3419, 3419, 3427, 3419, 3427, 3427, 3419, - 3395, 3395, 3395, 3395, 3395, 3395, 3387, 3395, 3395, 3395, - 3395, 3387, 3395, 3395, 3395, 3395, 3387, 3395, 3395, 3395, - 3395, 3387, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3387, 3387, 3387, 3395, 3395, 3387, 3395, - 3395, 3395, 3395, 3387, 3395, 3395, 3395, 3387, 3387, 3395, - 3395, 3395, 3395, 3387, 3395, 3387, 3395, 3387, 3395, 3395, - 3395, 3395, 3387, 3395, 3395, 3395, 3395, 3387, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3387, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3387, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3387, 3395, 3387, 3395, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3419, 3427, 3427, + 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3419, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3419, 3419, 3419, 3427, 3427, 3419, 3427, 3427, 3427, 3427, + 3419, 3427, 3427, 3427, 3419, 3419, 3427, 3427, 3419, 3427, + 3427, 3419, 3427, 3419, 3427, 3419, 3427, 3427, 3427, 3427, + 3419, 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, - 3387, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3387, 3387, 3395, 3395, 3387, - 3395, 3387, 3395, 3387, 3395, 3395, 3395, 3395, 3387, 3395, - 3395, 3395, 3395, 3395, 3395, 3387, 3395, 3395, 3395, 3395, - 3387, 3387, 3395, 3395, 3395, 3387, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3387, 3387, 3387, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3387, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3387, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3387, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, + 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3419, 3427, 3419, 3427, 3419, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3419, 3419, 3427, 3427, 3419, 3427, 3419, + 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, + 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3419, + 3419, 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3419, 3419, 3419, 3427, 3427, 3427, 3427, 3427, - 3395, 3395, 3395, 3387, 3395, 3387, 3387, 3395, 3387, 3395, - 3395, 3395, 3395, 3387, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3387, 3395, 3395, 3395, 3395, 3387, 3387, 3395, - 3387, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3387, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3387, 3395, 3395, - 3395, 3395, 3387, 3395, 3395, 3395, 3395, 3395, 3387, 3395, - 3395, 3395, 3395, 3387, 3395, 3395, 3395, 3387, 3387, 3395, - 3395, 3395, 3387, 3387, 3387, 3395, 3395, 3395, 3395, 3387, - 3395, 3395, 3395, 3395, 3395, 3387, 3395, 3395, 3395, 3395, - 3395, 3387, 3387, 3395, 3395, 3395, 3395, 3387, 3387, 3395, + 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3419, 3427, 3419, 3419, 3427, 3419, 3427, 3427, + 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3419, 3419, 3427, + 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, + 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3419, 3427, + 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3419, 3419, 3427, - 3395, 3395, 3395, 3395, 3387, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3387, 3387, 3395, 3387, 3395, 3395, 3387, 3387, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3387, 3395, 3395, - 3395, 3395, 3395, 3387, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3387, 3395, 3395, 3387, 3387, 3395, 3395, 3395, 3395, - 3395, 3387, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3387, - 3395, 3395, 3387, 3387, 3395, 3395, 3387, 3387, 3395, 3387, - 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3395, 3395, 3387, + 3427, 3427, 3419, 3419, 3419, 3427, 3427, 3427, 3427, 3419, + 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, + 3427, 3427, 3419, 3419, 3427, 3427, 3427, 3427, 3419, 3419, + 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3419, 3419, 3427, 3419, 3427, 3427, 3419, 3419, 3427, + 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3419, + 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3419, 3427, 3427, 3419, 3419, 3427, 3427, - 3395, 3395, 3395, 3395, 3387, 3395, 3395, 3395, 3395, 3387, - 3395, 3387, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3387, 3387, 3387, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3387, 3395, 3395, - 3395, 3395, 3387, 3395, 3387, 3395, 3387, 3387, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3387, - 3395, 3387, 3387, 3395, 3395, 3387, 3395, 3395, 3387, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3387, 3387, + 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3419, 3427, 3427, 3419, 3419, 3427, 3427, 3419, 3419, + 3427, 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3427, + 3427, 3419, 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, + 3427, 3419, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3419, 3419, 3419, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, + 3427, 3427, 3427, 3427, 3419, 3427, 3419, 3427, 3419, 3419, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3387, 3395, 3395, 3395, 3387, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3387, 3395, 3387, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3387, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, 3395, - 3395, 3395, 3395, 3395, 3395, 3387, 3395, 3395, 3387, 3395, - 3395, 3395, 3395, 3395, 3387, 3395, 3395, 3395, 3395, 3395, - 3395, 3387, 3395, 3395, 3395, 3387, 3395, 3387, 3387, 3395, - 3395, 3395, 3395, 3395, 3387, 3387, 0, 3387, 3387, 3387, - 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3419, 3427, 3419, 3419, 3427, 3427, 3419, 3427, 3427, + 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3419, 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3419, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3419, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, + 3419, 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, - 3387, 3387, 3387, 3387, 3387 + 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3419, 3427, 3419, + 3419, 3427, 3427, 3427, 3427, 3427, 3419, 3419, 0, 3419, + 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, + 3419, 3419, 3419, 3419, 3419, 3419, 3419 } ; -static const flex_int16_t yy_nxt[6654] = +static const flex_int16_t yy_nxt[6725] = { 0, 18, 19, 20, 21, 22, 23, 22, 18, 18, 18, 18, 18, 22, 24, 25, 26, 27, 28, 29, 30, @@ -1599,7 +1609,7 @@ static const flex_int16_t yy_nxt[6654] = 311, 86, 86, 86, 86, 307, 86, 318, 86, 86, 86, 319, 86, 325, 312, 313, 315, 309, 314, 316, 86, 320, 86, 329, 321, 328, 322, 330, 327, 326, - 332, 86, 86, 86, 726, 334, 86, 338, 323, 331, + 332, 86, 86, 86, 730, 334, 86, 338, 323, 331, 324, 86, 335, 86, 86, 340, 86, 342, 86, 339, 341, 86, 333, 86, 86, 86, 344, 336, 86, 86, 86, 343, 86, 86, 346, 86, 348, 86, 345, 86, @@ -1624,656 +1634,664 @@ static const flex_int16_t yy_nxt[6654] = 425, 86, 436, 86, 86, 434, 86, 438, 86, 441, 431, 437, 433, 86, 430, 86, 443, 446, 86, 86, 439, 447, 440, 86, 442, 86, 86, 445, 86, 86, - 457, 448, 86, 444, 86, 455, 86, 86, 86, 458, - 461, 459, 499, 449, 170, 462, 450, 456, 469, 86, + 457, 448, 86, 444, 86, 455, 86, 86, 170, 462, + 458, 463, 459, 449, 464, 86, 450, 456, 469, 470, - 463, 451, 452, 453, 454, 466, 86, 460, 464, 465, - 467, 86, 86, 86, 86, 468, 86, 86, 86, 477, - 86, 86, 86, 479, 86, 475, 478, 476, 86, 472, - 470, 86, 480, 471, 473, 474, 86, 86, 86, 481, - 483, 482, 86, 487, 86, 86, 86, 86, 488, 86, - 489, 492, 86, 505, 493, 1513, 484, 486, 485, 490, - 86, 86, 86, 86, 491, 86, 494, 495, 497, 86, - 498, 86, 500, 496, 86, 506, 507, 86, 86, 508, - 504, 86, 86, 86, 86, 501, 509, 86, 502, 547, - 503, 86, 510, 86, 520, 86, 511, 522, 519, 523, + 86, 451, 452, 453, 454, 460, 467, 86, 461, 465, + 466, 468, 86, 86, 86, 86, 86, 86, 478, 86, + 86, 86, 86, 480, 476, 477, 479, 86, 481, 473, + 471, 86, 86, 472, 474, 475, 86, 483, 86, 485, + 86, 488, 86, 489, 86, 490, 482, 86, 484, 86, + 506, 86, 86, 494, 491, 487, 493, 495, 486, 86, + 86, 86, 86, 86, 492, 496, 498, 86, 499, 86, + 501, 497, 86, 507, 86, 500, 508, 86, 505, 86, + 86, 86, 521, 502, 510, 509, 503, 524, 504, 86, + 511, 86, 522, 86, 512, 86, 635, 86, 527, 513, - 86, 524, 86, 525, 512, 86, 513, 527, 514, 537, - 535, 536, 521, 170, 538, 86, 86, 86, 86, 526, - 86, 515, 86, 539, 516, 168, 517, 86, 518, 86, - 540, 528, 529, 543, 541, 542, 544, 86, 86, 545, - 546, 530, 548, 531, 532, 533, 86, 550, 534, 86, - 86, 549, 86, 86, 552, 86, 86, 551, 554, 559, - 557, 86, 560, 86, 86, 86, 86, 556, 564, 86, - 555, 558, 553, 86, 86, 86, 562, 86, 568, 569, - 563, 86, 567, 561, 86, 86, 86, 86, 86, 566, - 86, 578, 574, 86, 565, 570, 86, 579, 575, 576, + 86, 86, 514, 86, 515, 526, 516, 86, 525, 86, + 523, 529, 539, 170, 528, 537, 538, 540, 86, 517, + 544, 86, 518, 86, 519, 86, 520, 86, 547, 530, + 531, 541, 546, 86, 543, 86, 545, 86, 542, 532, + 86, 533, 534, 535, 548, 554, 536, 552, 86, 86, + 86, 551, 86, 86, 561, 550, 86, 553, 86, 549, + 86, 559, 86, 555, 86, 562, 86, 558, 556, 557, + 86, 566, 86, 560, 86, 86, 86, 86, 564, 86, + 569, 168, 563, 86, 565, 570, 571, 86, 86, 86, + 568, 576, 86, 583, 86, 573, 572, 567, 580, 574, - 571, 572, 573, 86, 581, 582, 86, 86, 86, 86, - 86, 595, 580, 86, 86, 166, 577, 86, 587, 597, - 86, 583, 596, 584, 586, 590, 585, 86, 86, 588, - 86, 589, 598, 591, 592, 600, 599, 593, 594, 86, - 86, 86, 86, 86, 603, 602, 604, 605, 86, 86, - 607, 601, 86, 609, 86, 86, 86, 86, 612, 86, - 610, 613, 86, 614, 86, 608, 86, 86, 606, 611, - 86, 617, 86, 619, 86, 618, 86, 615, 86, 86, - 86, 620, 86, 625, 86, 616, 621, 86, 626, 86, - 624, 86, 628, 86, 627, 86, 622, 623, 629, 86, + 86, 575, 577, 578, 86, 86, 86, 86, 581, 86, + 86, 86, 86, 597, 166, 600, 589, 86, 86, 86, + 579, 585, 592, 582, 584, 586, 588, 590, 587, 591, + 593, 594, 86, 86, 595, 596, 86, 602, 599, 603, + 86, 598, 86, 86, 86, 601, 604, 86, 605, 86, + 606, 86, 609, 86, 607, 611, 86, 86, 86, 86, + 614, 615, 608, 612, 86, 86, 610, 86, 616, 86, + 613, 86, 86, 86, 621, 86, 619, 620, 86, 86, + 617, 86, 622, 86, 86, 86, 627, 623, 86, 628, + 618, 86, 629, 626, 86, 631, 86, 625, 624, 86, - 631, 86, 633, 86, 86, 86, 86, 86, 630, 86, - 86, 632, 635, 86, 636, 638, 634, 86, 86, 640, - 86, 86, 646, 165, 637, 649, 639, 641, 86, 642, - 647, 643, 645, 648, 86, 86, 86, 644, 86, 86, - 86, 653, 86, 651, 86, 656, 652, 658, 650, 86, - 654, 86, 659, 86, 86, 655, 86, 86, 86, 662, - 86, 665, 657, 661, 86, 666, 86, 86, 86, 86, - 86, 668, 86, 86, 700, 663, 660, 664, 86, 667, - 86, 86, 671, 669, 682, 163, 86, 670, 86, 672, - 680, 683, 86, 681, 673, 86, 674, 684, 86, 685, + 634, 632, 86, 630, 86, 636, 633, 86, 86, 86, + 86, 86, 86, 86, 86, 638, 641, 639, 86, 649, + 86, 86, 643, 637, 86, 86, 86, 86, 729, 650, + 640, 644, 642, 645, 647, 648, 646, 651, 653, 86, + 86, 657, 86, 86, 652, 656, 86, 659, 654, 86, + 662, 655, 86, 86, 86, 661, 86, 86, 86, 86, + 86, 658, 665, 668, 86, 86, 86, 86, 664, 660, + 669, 671, 86, 86, 663, 86, 86, 86, 86, 670, + 666, 667, 86, 672, 86, 86, 674, 86, 685, 728, + 687, 673, 86, 675, 688, 683, 686, 684, 676, 86, - 86, 688, 675, 689, 676, 686, 86, 677, 678, 687, - 86, 86, 693, 86, 679, 698, 86, 86, 86, 692, - 697, 86, 690, 694, 86, 691, 695, 86, 702, 696, - 86, 86, 86, 86, 86, 86, 699, 86, 86, 703, - 708, 86, 704, 709, 733, 86, 701, 705, 86, 86, - 706, 712, 86, 711, 86, 707, 710, 713, 714, 170, - 716, 717, 86, 715, 86, 86, 86, 718, 86, 86, - 86, 86, 86, 723, 725, 728, 86, 86, 720, 727, - 721, 719, 729, 724, 731, 86, 722, 86, 86, 730, - 86, 86, 86, 86, 86, 737, 86, 732, 736, 742, + 677, 86, 692, 689, 86, 86, 678, 86, 679, 690, + 693, 680, 681, 691, 86, 697, 696, 694, 682, 86, + 695, 86, 86, 86, 86, 701, 698, 86, 704, 699, + 86, 86, 706, 86, 86, 700, 86, 86, 86, 86, + 86, 86, 86, 86, 703, 712, 702, 165, 707, 708, + 713, 709, 717, 710, 86, 705, 86, 715, 714, 86, + 711, 170, 716, 718, 720, 719, 721, 86, 86, 86, + 86, 86, 86, 86, 732, 86, 86, 727, 163, 733, + 86, 86, 722, 724, 731, 86, 725, 723, 735, 86, + 726, 86, 734, 736, 86, 86, 86, 86, 737, 86, - 86, 734, 86, 738, 743, 86, 735, 745, 86, 791, - 739, 86, 741, 740, 747, 744, 746, 86, 748, 86, - 86, 749, 86, 750, 86, 751, 86, 86, 86, 86, - 752, 86, 753, 756, 86, 758, 754, 755, 86, 86, - 86, 759, 86, 86, 760, 757, 764, 763, 86, 86, - 86, 86, 86, 765, 86, 767, 86, 769, 86, 86, - 86, 762, 86, 761, 772, 768, 766, 775, 161, 770, - 86, 86, 86, 86, 86, 776, 773, 86, 86, 771, - 86, 778, 774, 86, 783, 777, 779, 86, 785, 780, - 781, 86, 782, 86, 788, 784, 786, 790, 787, 86, + 741, 740, 86, 738, 86, 746, 739, 161, 742, 86, + 747, 86, 749, 86, 758, 743, 750, 86, 744, 751, + 745, 86, 748, 752, 86, 86, 753, 86, 754, 86, + 755, 86, 759, 86, 86, 756, 86, 86, 760, 86, + 86, 86, 757, 763, 764, 762, 86, 86, 768, 86, + 761, 767, 86, 769, 86, 86, 86, 86, 86, 773, + 771, 86, 86, 86, 765, 766, 86, 776, 779, 86, + 770, 772, 86, 86, 86, 86, 774, 775, 780, 777, + 86, 86, 86, 781, 782, 86, 778, 86, 787, 783, + 786, 789, 784, 785, 86, 86, 792, 86, 788, 790, - 86, 86, 789, 86, 792, 86, 86, 86, 86, 793, - 796, 795, 86, 797, 86, 798, 86, 86, 799, 800, - 86, 802, 804, 86, 86, 86, 86, 801, 86, 805, - 810, 794, 86, 86, 86, 808, 86, 803, 811, 86, - 809, 807, 812, 806, 813, 814, 86, 86, 86, 815, - 86, 817, 86, 816, 86, 821, 823, 819, 86, 825, - 86, 86, 86, 822, 818, 86, 86, 86, 824, 827, - 86, 826, 86, 820, 828, 86, 834, 831, 86, 835, - 829, 86, 86, 830, 86, 86, 837, 836, 86, 839, - 86, 832, 833, 86, 843, 86, 841, 840, 86, 86, + 791, 794, 86, 86, 86, 86, 796, 86, 797, 86, + 799, 795, 793, 86, 801, 86, 800, 86, 86, 86, + 86, 86, 808, 86, 86, 804, 806, 86, 86, 86, + 798, 802, 805, 809, 86, 803, 86, 178, 815, 86, + 807, 86, 817, 813, 86, 812, 810, 816, 814, 811, + 818, 819, 86, 86, 86, 820, 86, 86, 86, 821, + 86, 826, 828, 824, 86, 86, 86, 86, 86, 827, + 86, 823, 86, 829, 822, 832, 86, 831, 86, 825, + 833, 86, 86, 86, 86, 840, 839, 836, 842, 834, + 830, 835, 86, 841, 86, 86, 844, 86, 86, 848, - 86, 86, 849, 845, 838, 86, 86, 844, 851, 847, - 850, 842, 86, 846, 848, 86, 86, 86, 852, 853, - 86, 86, 859, 854, 86, 86, 86, 86, 86, 860, - 855, 86, 86, 861, 856, 86, 86, 86, 86, 857, - 86, 858, 862, 868, 864, 86, 863, 866, 86, 86, - 869, 865, 867, 86, 86, 86, 874, 870, 873, 871, - 86, 86, 86, 86, 86, 882, 86, 872, 880, 875, - 883, 86, 86, 876, 86, 86, 881, 86, 877, 878, - 879, 86, 888, 86, 86, 884, 886, 86, 887, 86, - 86, 885, 86, 86, 86, 893, 892, 889, 895, 894, + 86, 837, 838, 846, 845, 86, 86, 852, 86, 854, + 849, 850, 853, 86, 843, 86, 86, 86, 847, 856, + 86, 851, 858, 86, 86, 86, 86, 86, 864, 86, + 86, 86, 86, 865, 86, 857, 86, 86, 86, 866, + 855, 859, 860, 861, 86, 862, 867, 863, 86, 873, + 869, 868, 86, 872, 86, 86, 870, 86, 874, 86, + 871, 86, 86, 879, 875, 86, 86, 86, 86, 86, + 86, 86, 888, 876, 886, 86, 86, 86, 877, 889, + 878, 885, 881, 880, 887, 882, 883, 884, 86, 86, + 890, 86, 86, 86, 86, 86, 891, 894, 86, 892, - 891, 86, 890, 86, 86, 86, 896, 86, 86, 903, - 898, 86, 897, 899, 905, 86, 901, 170, 86, 900, - 902, 86, 904, 86, 86, 906, 86, 86, 912, 86, - 86, 913, 907, 908, 915, 86, 86, 86, 909, 914, - 910, 916, 86, 919, 86, 86, 917, 86, 911, 86, - 86, 921, 86, 925, 86, 86, 86, 922, 86, 86, - 86, 918, 926, 927, 920, 86, 86, 86, 86, 86, - 924, 86, 86, 928, 941, 923, 940, 942, 943, 86, - 930, 938, 939, 929, 86, 86, 931, 86, 944, 932, - 948, 945, 86, 933, 86, 946, 934, 86, 947, 950, + 86, 898, 86, 893, 86, 899, 86, 895, 897, 900, + 86, 901, 896, 86, 86, 902, 903, 86, 906, 86, + 904, 909, 86, 905, 170, 911, 907, 86, 86, 910, + 86, 908, 912, 86, 86, 86, 86, 918, 86, 86, + 919, 86, 914, 86, 913, 921, 86, 86, 920, 915, + 916, 86, 922, 925, 86, 86, 917, 86, 927, 86, + 923, 926, 924, 86, 931, 86, 86, 928, 86, 86, + 86, 86, 86, 932, 86, 933, 86, 86, 952, 86, + 86, 930, 929, 946, 934, 947, 948, 944, 86, 86, + 86, 936, 951, 945, 935, 86, 86, 937, 949, 86, - 86, 952, 86, 935, 936, 86, 937, 86, 86, 86, - 949, 86, 86, 960, 86, 963, 86, 969, 965, 86, - 951, 86, 953, 954, 967, 955, 961, 962, 956, 86, - 86, 975, 86, 957, 966, 968, 964, 972, 86, 958, - 959, 971, 973, 86, 86, 86, 86, 976, 86, 978, - 977, 974, 86, 86, 970, 86, 980, 979, 982, 86, - 981, 86, 86, 983, 86, 985, 86, 86, 986, 86, - 86, 990, 86, 86, 984, 989, 86, 86, 993, 86, - 86, 999, 86, 997, 1010, 86, 987, 991, 988, 86, - 992, 994, 995, 86, 1000, 1011, 86, 86, 998, 1001, + 938, 86, 953, 86, 939, 86, 950, 940, 86, 86, + 954, 86, 958, 966, 941, 942, 957, 943, 86, 956, + 86, 955, 86, 959, 960, 86, 961, 86, 86, 962, + 967, 969, 971, 86, 963, 970, 86, 86, 968, 86, + 964, 965, 973, 86, 974, 86, 977, 978, 972, 86, + 1293, 975, 979, 86, 86, 981, 980, 86, 976, 86, + 982, 86, 983, 86, 984, 86, 985, 86, 986, 988, + 86, 86, 987, 989, 86, 86, 86, 86, 991, 992, + 86, 86, 996, 86, 86, 995, 990, 86, 86, 999, + 86, 86, 86, 86, 1003, 1053, 993, 1004, 997, 994, - 86, 996, 1002, 1003, 1004, 86, 86, 1006, 1007, 86, - 86, 1005, 86, 86, 86, 86, 86, 86, 1008, 86, - 86, 86, 1009, 1012, 1014, 86, 86, 1015, 1019, 86, - 86, 86, 86, 86, 1013, 1016, 1028, 1017, 86, 1020, - 1021, 1022, 86, 1023, 1018, 1024, 86, 1025, 86, 86, - 86, 1030, 86, 86, 86, 1026, 86, 1027, 1031, 1029, - 86, 86, 1036, 86, 1038, 1034, 1032, 1037, 86, 86, - 86, 86, 86, 1035, 86, 86, 1039, 1044, 86, 1033, - 1041, 86, 86, 1046, 86, 1045, 1047, 86, 1040, 1049, - 1043, 86, 86, 86, 1042, 86, 1048, 86, 86, 1050, + 86, 998, 1000, 1001, 1005, 86, 86, 86, 1006, 1009, + 1011, 1008, 1002, 1007, 86, 86, 86, 86, 1013, 86, + 86, 86, 1012, 1014, 86, 1015, 1010, 1017, 86, 1016, + 1018, 86, 86, 86, 86, 86, 86, 86, 86, 1021, + 1019, 86, 1022, 1026, 86, 1029, 86, 86, 86, 86, + 1027, 1020, 1030, 1024, 1023, 1028, 86, 1025, 86, 86, + 86, 86, 86, 86, 86, 1032, 1035, 1031, 1033, 1036, + 86, 86, 86, 1034, 1037, 1038, 1039, 1042, 1043, 86, + 1045, 1041, 86, 1044, 86, 86, 86, 86, 1040, 86, + 86, 1054, 86, 1051, 86, 1048, 86, 1046, 86, 86, - 86, 86, 1051, 1060, 1055, 1057, 86, 86, 178, 86, - 86, 1052, 86, 1054, 1053, 1061, 1058, 86, 1065, 1059, - 1056, 86, 1062, 86, 1068, 86, 1063, 86, 1067, 86, - 86, 1064, 86, 86, 86, 1066, 86, 86, 1070, 1077, - 1072, 86, 1078, 1080, 86, 86, 86, 1069, 86, 86, - 1071, 86, 86, 1073, 86, 1075, 1074, 1076, 1079, 1083, - 1081, 1082, 1084, 86, 1087, 86, 86, 1085, 86, 86, - 1086, 1089, 1088, 86, 1091, 1090, 1092, 86, 86, 1096, - 1093, 86, 86, 1098, 86, 86, 86, 1094, 86, 86, - 1103, 1095, 86, 1100, 86, 1104, 170, 86, 86, 86, + 86, 1052, 86, 1056, 1047, 86, 86, 1050, 86, 86, + 86, 1049, 1064, 86, 86, 1055, 1067, 1057, 1062, 1058, + 1059, 86, 86, 1068, 1060, 1061, 86, 86, 1065, 1063, + 86, 86, 1066, 1069, 86, 86, 1072, 1075, 86, 86, + 1074, 1071, 86, 86, 86, 1070, 86, 86, 1073, 86, + 1076, 1078, 1080, 86, 1085, 1086, 86, 86, 1088, 1077, + 86, 86, 86, 1079, 86, 86, 1081, 176, 1083, 1082, + 1087, 1089, 1091, 1084, 1092, 86, 86, 86, 86, 1093, + 86, 86, 1090, 86, 1094, 1100, 1097, 86, 1095, 86, + 1099, 86, 86, 1104, 86, 1101, 1096, 86, 1098, 86, - 1107, 1097, 1106, 86, 1099, 1101, 86, 1102, 1110, 1105, - 86, 86, 86, 86, 1108, 86, 86, 1109, 86, 1123, - 1124, 1126, 86, 86, 1114, 1111, 1113, 86, 86, 86, - 86, 86, 1128, 1115, 1112, 1131, 1116, 86, 1125, 86, - 1117, 86, 1118, 86, 1129, 1130, 1119, 86, 1120, 1148, - 86, 1133, 1127, 1121, 1139, 1132, 1134, 86, 1122, 1135, - 86, 1136, 86, 86, 1137, 86, 86, 1140, 86, 86, - 1143, 86, 86, 86, 86, 1142, 1138, 1141, 1149, 1150, - 1144, 1147, 1151, 1146, 86, 86, 1152, 86, 86, 1145, - 1153, 1154, 1157, 1155, 86, 86, 86, 86, 176, 86, + 1103, 1102, 1106, 86, 86, 86, 1111, 86, 86, 1108, + 86, 1112, 170, 86, 1105, 1107, 86, 1114, 86, 1115, + 86, 1109, 1113, 1110, 86, 1118, 86, 86, 86, 1119, + 1116, 86, 86, 1131, 86, 86, 1117, 175, 1132, 86, + 1121, 1122, 1134, 86, 86, 86, 86, 1123, 1120, 1139, + 1133, 86, 1124, 86, 1137, 1136, 1125, 86, 1126, 86, + 1138, 1141, 1127, 86, 1128, 86, 1142, 86, 1143, 1129, + 1135, 1140, 86, 86, 1130, 86, 1145, 1144, 86, 86, + 1147, 86, 86, 1148, 1151, 1150, 86, 86, 1146, 1152, + 86, 86, 1157, 1149, 1158, 1155, 1154, 1156, 1159, 86, - 86, 1166, 86, 1156, 86, 1158, 1165, 86, 1169, 86, - 1159, 86, 1160, 1167, 1168, 86, 1170, 1171, 1161, 1173, - 86, 86, 1176, 1162, 1163, 86, 86, 86, 86, 1172, - 1164, 1177, 86, 86, 1182, 86, 86, 1175, 86, 1174, - 1183, 1185, 86, 1179, 1178, 1181, 86, 86, 86, 1180, - 86, 1186, 86, 86, 1190, 1188, 86, 1191, 1184, 1189, - 86, 1187, 86, 86, 1196, 1193, 86, 86, 86, 86, - 86, 1194, 1192, 1199, 86, 1197, 86, 86, 86, 1195, - 175, 86, 86, 86, 86, 86, 1198, 1206, 1201, 1200, - 1203, 1204, 1205, 1208, 1207, 86, 1202, 86, 86, 86, + 86, 1162, 1153, 1161, 86, 1160, 86, 86, 86, 86, + 86, 86, 1163, 86, 86, 1177, 1174, 86, 1164, 86, + 86, 86, 1173, 170, 1178, 1176, 86, 1165, 86, 1166, + 86, 1175, 86, 86, 1167, 1180, 1168, 1184, 1179, 1181, + 86, 86, 1169, 86, 1186, 1182, 1185, 1170, 1171, 1183, + 86, 86, 1190, 86, 1172, 86, 86, 1193, 1187, 1191, + 86, 86, 86, 86, 1194, 86, 1188, 1196, 1198, 1189, + 86, 86, 86, 86, 86, 1199, 1192, 86, 1197, 1195, + 1204, 1201, 1202, 86, 86, 86, 86, 86, 86, 86, + 1200, 86, 1205, 1203, 1207, 86, 86, 86, 86, 86, - 1209, 86, 86, 86, 86, 1211, 86, 86, 1216, 1210, - 86, 1217, 1213, 1219, 86, 1218, 1212, 1215, 1221, 1214, - 86, 1220, 1223, 1222, 86, 86, 86, 1226, 86, 86, - 86, 1228, 1227, 86, 1229, 86, 86, 86, 1224, 1230, - 86, 86, 1225, 1231, 1237, 86, 1239, 86, 1232, 86, - 86, 1233, 86, 1235, 1241, 1234, 1236, 86, 86, 86, - 86, 1243, 1240, 86, 86, 1238, 86, 86, 1245, 1246, - 86, 1242, 1249, 86, 86, 1248, 1247, 86, 1250, 86, - 1244, 1255, 1251, 1252, 86, 1254, 86, 86, 1256, 86, - 1253, 86, 86, 1257, 1259, 86, 1260, 86, 86, 86, + 1212, 1209, 1214, 1206, 1216, 1208, 1213, 1211, 1210, 86, + 86, 86, 86, 1218, 86, 1215, 86, 1220, 86, 86, + 86, 86, 86, 86, 168, 1217, 1225, 1226, 1227, 1228, + 1222, 1219, 86, 1221, 1224, 1230, 1223, 86, 1229, 86, + 86, 86, 86, 86, 1235, 86, 1239, 1232, 1231, 1236, + 86, 86, 1237, 1233, 86, 1238, 86, 86, 1234, 1240, + 86, 86, 1246, 86, 1248, 86, 86, 86, 86, 86, + 86, 1250, 1242, 1244, 1241, 1243, 1245, 86, 86, 86, + 1249, 1251, 1252, 1247, 86, 86, 86, 1257, 86, 1254, + 1253, 1255, 86, 1256, 86, 86, 86, 1258, 86, 1259, - 86, 1266, 1264, 1267, 1258, 86, 86, 86, 86, 86, - 1261, 1268, 86, 1265, 86, 1271, 1262, 1269, 1263, 1270, - 1274, 86, 86, 1272, 1276, 86, 86, 1275, 1273, 86, - 86, 86, 86, 86, 86, 86, 1281, 1282, 1277, 1278, - 86, 86, 86, 86, 1288, 1284, 1283, 1289, 86, 1279, - 86, 1280, 86, 86, 1286, 1292, 86, 1291, 86, 1285, - 86, 86, 1287, 1290, 1296, 86, 86, 86, 86, 86, - 86, 1302, 86, 1295, 1294, 1298, 86, 1293, 170, 86, - 86, 1303, 86, 1297, 1304, 86, 1299, 86, 86, 1301, - 86, 86, 1309, 170, 1300, 1307, 1306, 1308, 1305, 1310, + 1260, 1261, 1264, 1267, 1263, 1265, 86, 86, 86, 86, + 86, 86, 1262, 1268, 86, 1269, 1266, 86, 86, 86, + 1275, 1273, 1276, 86, 86, 86, 86, 1270, 86, 1277, + 1271, 86, 1274, 86, 1280, 86, 1278, 1272, 1279, 86, + 86, 1282, 1284, 86, 1281, 1283, 86, 86, 86, 1286, + 86, 1285, 1287, 1289, 86, 86, 1288, 86, 1291, 86, + 1292, 86, 86, 86, 1294, 1298, 1299, 86, 86, 86, + 86, 86, 86, 1290, 1296, 1301, 1302, 86, 86, 1295, + 1306, 1305, 1297, 1300, 86, 86, 1303, 86, 86, 86, + 86, 170, 1304, 1312, 86, 86, 1308, 86, 86, 86, - 1311, 86, 86, 1313, 1314, 86, 86, 1315, 1312, 86, - 86, 1316, 86, 86, 1317, 86, 1319, 86, 1318, 1320, - 1321, 86, 86, 86, 86, 1327, 86, 86, 86, 1324, - 86, 86, 1322, 86, 86, 86, 1468, 1331, 1325, 1337, - 1323, 1328, 86, 1326, 86, 1330, 1329, 1333, 86, 1338, - 86, 1340, 86, 1332, 86, 1339, 1334, 86, 1335, 86, - 86, 1336, 1343, 1344, 1341, 86, 86, 86, 1342, 86, - 86, 1347, 86, 86, 1346, 1350, 86, 86, 1345, 1354, - 86, 1349, 1355, 1352, 86, 86, 1348, 1351, 86, 1356, - 86, 86, 86, 1358, 1359, 1353, 86, 86, 86, 86, + 1313, 86, 1314, 1307, 1319, 86, 86, 1309, 86, 1311, + 166, 1315, 1316, 86, 1310, 1320, 1317, 1318, 1321, 86, + 1323, 1324, 86, 86, 1327, 86, 86, 86, 1322, 1325, + 1326, 86, 86, 86, 86, 86, 1328, 1329, 1331, 86, + 86, 86, 1337, 86, 86, 86, 1330, 1334, 86, 1332, + 86, 86, 86, 1348, 1333, 86, 1335, 1341, 1336, 1338, + 1343, 86, 1339, 1340, 86, 1347, 86, 86, 86, 1344, + 1342, 1345, 1349, 1351, 1346, 1350, 86, 86, 1352, 86, + 1353, 86, 86, 86, 86, 86, 86, 1354, 1357, 86, + 1356, 1360, 86, 1364, 86, 86, 1359, 1355, 86, 1361, - 1360, 86, 86, 86, 86, 1357, 86, 1361, 1366, 86, - 1364, 1362, 86, 86, 1365, 1367, 1363, 86, 1371, 86, - 86, 1368, 86, 86, 1370, 1369, 86, 86, 1372, 1373, - 86, 1375, 86, 86, 1376, 1378, 1383, 1374, 86, 1377, - 86, 86, 86, 86, 86, 1379, 1386, 1381, 1384, 1389, - 1382, 86, 1380, 86, 1385, 86, 1406, 86, 86, 1388, - 1391, 1387, 86, 1390, 168, 1392, 86, 86, 1396, 1394, - 1395, 1404, 1393, 86, 1397, 86, 86, 1407, 1398, 86, - 86, 1399, 1400, 1410, 1405, 1408, 1401, 86, 1409, 86, - 86, 86, 1402, 86, 86, 1411, 1403, 86, 1412, 86, + 1362, 1358, 86, 1365, 86, 86, 86, 1366, 86, 1368, + 1369, 1363, 86, 86, 1370, 1367, 86, 86, 86, 86, + 86, 86, 86, 1371, 1376, 86, 86, 1372, 1374, 86, + 86, 1377, 1373, 1375, 86, 1381, 86, 86, 86, 1378, + 1380, 1382, 1379, 1385, 86, 1383, 86, 86, 86, 1393, + 1384, 1386, 86, 86, 86, 86, 1387, 1389, 1388, 86, + 86, 1396, 1391, 86, 86, 86, 1401, 1394, 1392, 1390, + 1399, 1402, 86, 1395, 1397, 1400, 1398, 86, 86, 86, + 86, 1406, 86, 1403, 1416, 86, 1417, 1415, 86, 165, + 86, 1404, 1405, 86, 1407, 1414, 86, 1419, 1408, 86, - 1413, 86, 1415, 86, 86, 86, 1420, 1416, 1414, 1417, - 1422, 1418, 1419, 86, 86, 1425, 1426, 86, 86, 86, - 1486, 86, 86, 1421, 1427, 86, 1429, 1423, 86, 1428, - 86, 1430, 1424, 1431, 86, 1432, 86, 1433, 86, 1434, - 86, 1436, 1435, 1437, 1438, 86, 86, 1439, 1442, 1440, - 86, 1444, 86, 1441, 86, 86, 1445, 86, 86, 1443, - 1448, 1446, 86, 86, 86, 86, 86, 1454, 86, 1455, - 86, 1450, 1449, 86, 1456, 86, 1447, 86, 86, 1453, - 1458, 86, 1451, 1452, 1457, 86, 86, 1460, 1461, 86, - 86, 1459, 1465, 86, 1464, 1467, 86, 86, 86, 86, + 86, 1409, 1410, 1420, 1418, 1421, 1411, 86, 86, 86, + 86, 1423, 1412, 1422, 86, 1425, 1413, 1424, 86, 86, + 1430, 1426, 86, 1427, 86, 86, 86, 1428, 86, 86, + 1433, 1431, 1436, 1437, 86, 86, 163, 1429, 86, 86, + 1438, 86, 1434, 1440, 1432, 1439, 86, 1435, 1441, 86, + 1442, 1445, 1443, 86, 1444, 86, 1447, 1448, 1449, 86, + 86, 86, 86, 1446, 1450, 1451, 86, 1455, 86, 86, + 86, 86, 1456, 86, 1452, 1454, 1459, 1457, 86, 86, + 1453, 86, 86, 1465, 1460, 86, 1466, 1461, 86, 86, + 86, 1458, 86, 86, 86, 1469, 1464, 86, 1462, 86, - 1469, 86, 86, 1462, 1470, 1466, 1473, 86, 1475, 86, - 1472, 1463, 86, 1476, 86, 86, 86, 1471, 86, 1477, - 1480, 86, 1474, 86, 86, 86, 1482, 86, 86, 86, - 1484, 86, 1488, 86, 86, 166, 1478, 1479, 1481, 1490, - 1485, 86, 86, 1489, 1483, 1487, 1492, 1491, 86, 86, - 1493, 86, 1495, 1494, 86, 1497, 1496, 86, 86, 86, - 86, 86, 1498, 1503, 1504, 1500, 86, 1501, 86, 86, - 86, 1505, 1506, 86, 1502, 86, 1499, 1507, 86, 1510, - 86, 86, 86, 170, 86, 86, 1509, 1517, 1518, 86, - 1520, 86, 1508, 86, 86, 1519, 86, 86, 1514, 86, + 1463, 1467, 1468, 1471, 1472, 86, 1470, 86, 1476, 86, + 86, 86, 1475, 1478, 86, 86, 86, 1473, 1479, 86, + 1481, 86, 1480, 86, 86, 1477, 1484, 86, 1486, 86, + 1474, 1485, 1483, 86, 1487, 86, 86, 1491, 86, 86, + 1482, 1488, 86, 86, 1495, 1489, 1493, 86, 86, 86, + 86, 1498, 1496, 86, 86, 86, 1490, 1497, 1500, 1492, + 86, 86, 1494, 86, 86, 1502, 86, 86, 1504, 1501, + 1507, 1499, 1505, 86, 86, 1503, 86, 1509, 1506, 1508, + 86, 86, 86, 86, 1511, 1510, 1515, 1512, 1516, 1513, + 86, 1518, 86, 86, 86, 1517, 1514, 86, 86, 86, - 1512, 1511, 86, 86, 1515, 1521, 86, 86, 1516, 86, - 1528, 1522, 86, 86, 1525, 1533, 86, 1523, 86, 1524, - 1526, 1527, 86, 1532, 86, 86, 86, 1529, 1537, 1535, - 86, 1531, 86, 1538, 86, 1540, 86, 1530, 86, 86, - 1541, 86, 86, 86, 1536, 1534, 1546, 86, 1539, 1547, - 1542, 1548, 86, 1543, 1544, 86, 86, 1545, 1549, 1551, - 86, 1550, 1554, 1553, 1552, 86, 86, 1555, 86, 1557, - 86, 86, 86, 86, 1556, 1559, 1560, 86, 86, 86, - 86, 86, 1563, 86, 1558, 86, 1568, 1569, 86, 86, - 1561, 86, 86, 1562, 1565, 1572, 86, 1566, 1564, 1567, + 1522, 86, 1519, 86, 86, 86, 170, 86, 86, 86, + 1521, 161, 1529, 1530, 86, 1525, 86, 1520, 86, 86, + 1531, 1526, 1524, 1523, 1532, 86, 86, 1527, 86, 1535, + 86, 1528, 86, 86, 1540, 86, 1536, 86, 1537, 1533, + 86, 86, 1538, 1545, 86, 1534, 1544, 86, 86, 86, + 1539, 1549, 86, 1547, 86, 1541, 1550, 86, 1543, 86, + 86, 1552, 1542, 86, 86, 86, 86, 1553, 1548, 86, + 1546, 1561, 1551, 86, 1554, 86, 86, 86, 1555, 1556, + 1558, 1564, 1557, 1559, 1563, 1560, 86, 1562, 1566, 86, + 86, 1569, 86, 1567, 86, 86, 86, 1565, 86, 86, - 86, 86, 86, 1573, 86, 86, 1570, 86, 1571, 86, - 1575, 1574, 1579, 86, 86, 1576, 1580, 1577, 1581, 86, - 86, 1584, 86, 1578, 86, 1587, 86, 1588, 1583, 1589, - 1590, 86, 1582, 1586, 86, 86, 86, 1585, 1592, 86, - 1593, 86, 86, 86, 1597, 1591, 1598, 1599, 1596, 86, - 86, 165, 86, 86, 86, 1600, 86, 1594, 86, 1601, - 1602, 86, 86, 1595, 86, 1604, 1603, 1605, 86, 86, - 86, 86, 1610, 86, 86, 86, 1606, 1609, 86, 1613, - 86, 1616, 1607, 1612, 1608, 1618, 1617, 86, 86, 86, - 1619, 86, 1614, 1611, 86, 1621, 86, 86, 1624, 1615, + 1571, 1572, 86, 86, 86, 3419, 86, 1575, 1568, 86, + 1570, 86, 1580, 86, 86, 86, 1573, 1581, 1577, 1574, + 1584, 86, 86, 1576, 1578, 86, 86, 1579, 86, 86, + 86, 86, 1582, 1585, 1583, 86, 1591, 86, 86, 1587, + 86, 1586, 1592, 1588, 1589, 1593, 86, 1595, 86, 1590, + 86, 1596, 86, 86, 1600, 1594, 1601, 1598, 1602, 86, + 86, 1597, 86, 86, 86, 1604, 86, 86, 1609, 1605, + 86, 1610, 1599, 1603, 86, 1608, 1606, 86, 1611, 86, + 1612, 86, 1613, 86, 86, 1614, 86, 1615, 1607, 86, + 86, 86, 86, 86, 86, 86, 1622, 86, 1616, 86, - 86, 86, 86, 86, 1629, 1625, 86, 86, 1620, 86, - 86, 1630, 1632, 86, 86, 1622, 1623, 1635, 86, 1634, - 1626, 1628, 1627, 86, 86, 86, 86, 86, 1633, 86, - 1643, 86, 86, 1631, 86, 1641, 86, 86, 86, 1644, - 86, 1648, 86, 1636, 1637, 1638, 1639, 1642, 1640, 86, - 1645, 1652, 1647, 1649, 86, 86, 1646, 86, 1653, 86, - 1650, 1651, 86, 86, 1655, 86, 86, 86, 1656, 86, - 86, 1659, 1654, 1663, 86, 1664, 1665, 86, 1660, 86, - 86, 1657, 86, 1658, 1668, 1662, 86, 1661, 86, 86, - 1669, 86, 1666, 1667, 86, 1670, 86, 86, 1675, 1676, + 1621, 86, 86, 1618, 86, 86, 1619, 1624, 1617, 1620, + 1625, 86, 1633, 1628, 86, 1626, 86, 1623, 1629, 86, + 1630, 1627, 86, 86, 1632, 1631, 86, 86, 1637, 86, + 86, 1636, 1641, 1634, 86, 1635, 86, 86, 86, 1642, + 86, 1645, 86, 86, 86, 1648, 1638, 86, 1640, 1639, + 1647, 86, 86, 86, 86, 86, 1643, 86, 86, 1646, + 1657, 1649, 1650, 1644, 86, 1656, 86, 86, 1653, 86, + 3419, 1651, 1652, 1655, 1661, 86, 1654, 1662, 86, 86, + 86, 1660, 86, 86, 1663, 1658, 1659, 1664, 86, 86, + 86, 1666, 1668, 1665, 86, 86, 1669, 86, 86, 1672, - 86, 86, 163, 1673, 86, 86, 86, 1672, 1671, 86, - 1679, 86, 1680, 1681, 86, 1677, 1674, 1683, 86, 86, - 86, 86, 1678, 1684, 1685, 86, 1682, 86, 86, 1689, - 1686, 1688, 86, 1691, 86, 86, 1690, 1687, 86, 86, - 86, 86, 1697, 86, 1695, 86, 86, 86, 86, 1692, - 86, 1703, 1698, 86, 1696, 86, 1693, 1694, 86, 86, - 86, 1700, 1709, 1699, 1706, 1708, 86, 1704, 1702, 86, - 86, 1711, 1701, 1705, 86, 1707, 86, 86, 86, 86, - 86, 1714, 1717, 86, 1716, 86, 170, 1713, 86, 1710, - 1719, 86, 86, 1718, 86, 86, 1712, 1715, 86, 1727, + 86, 1667, 1676, 86, 86, 1677, 1678, 1671, 86, 1670, + 1673, 86, 86, 86, 1675, 86, 1681, 1674, 86, 1679, + 86, 1680, 1682, 86, 1683, 86, 1688, 1689, 86, 86, + 86, 86, 86, 1684, 1686, 1687, 1692, 86, 1693, 1694, + 86, 1685, 1696, 86, 86, 86, 86, 1690, 86, 1697, + 86, 1691, 1698, 86, 86, 86, 86, 1701, 86, 1706, + 1695, 86, 1705, 86, 1699, 1703, 1700, 86, 86, 86, + 86, 1711, 86, 1709, 86, 1702, 86, 86, 1704, 86, + 86, 1712, 86, 1710, 1707, 86, 1708, 86, 1717, 86, + 1720, 1714, 1713, 86, 1718, 1722, 86, 1723, 86, 1716, - 86, 86, 1720, 86, 86, 1722, 1721, 86, 1725, 1728, - 86, 1723, 1724, 1731, 86, 1733, 1732, 86, 86, 1742, - 1726, 1729, 86, 1730, 1735, 86, 1737, 1739, 86, 86, - 1736, 86, 86, 86, 1741, 86, 1744, 1734, 1738, 86, - 86, 1746, 1740, 86, 1747, 1743, 86, 86, 86, 86, - 86, 1752, 1751, 1745, 86, 86, 86, 86, 1759, 86, - 1748, 86, 1760, 1750, 86, 1749, 86, 1754, 86, 1761, - 1763, 1756, 1753, 86, 1757, 86, 1755, 86, 1764, 1796, - 1766, 1767, 86, 1768, 1765, 1762, 1758, 1769, 1773, 86, - 86, 86, 1771, 86, 86, 1770, 86, 1772, 86, 86, + 1719, 86, 1715, 86, 1721, 86, 1725, 86, 86, 86, + 86, 1728, 1731, 86, 1727, 1730, 86, 170, 1724, 86, + 86, 1733, 1732, 1726, 86, 86, 86, 1729, 86, 1741, + 86, 3419, 86, 1734, 1736, 1742, 86, 1735, 86, 1739, + 1745, 86, 86, 1737, 1738, 86, 86, 1746, 1749, 86, + 1747, 1740, 1743, 1751, 1750, 86, 1744, 1753, 86, 86, + 1755, 86, 1748, 86, 86, 86, 86, 86, 86, 86, + 1760, 1757, 1754, 1758, 86, 1752, 86, 1761, 86, 86, + 86, 1762, 1765, 1756, 86, 1766, 86, 86, 86, 1773, + 1759, 86, 1763, 1764, 1770, 86, 86, 1771, 1767, 1768, - 86, 86, 86, 1774, 86, 1780, 86, 1779, 1781, 86, - 86, 86, 1775, 1783, 86, 1782, 86, 86, 1776, 86, - 1777, 1785, 1778, 1786, 86, 86, 86, 1788, 86, 1784, - 1787, 86, 86, 86, 86, 86, 86, 1789, 1797, 86, - 86, 86, 1791, 86, 86, 1792, 1790, 1793, 86, 1802, - 1794, 1799, 1800, 86, 1798, 86, 1801, 86, 86, 1795, - 1804, 1803, 1808, 86, 86, 86, 86, 1806, 1805, 86, - 1810, 86, 1812, 1813, 86, 86, 86, 86, 1807, 86, - 1814, 1811, 86, 86, 1809, 1817, 1819, 86, 86, 1827, - 86, 1820, 1818, 1816, 1821, 1828, 86, 86, 1815, 1822, + 86, 1774, 86, 1775, 86, 86, 1769, 1780, 86, 1772, + 1778, 1777, 1782, 1779, 1781, 86, 1783, 86, 86, 1776, + 86, 1789, 86, 86, 1785, 1784, 86, 1786, 1787, 86, + 86, 86, 1794, 1795, 86, 1788, 1791, 86, 86, 86, + 1793, 86, 1797, 86, 86, 86, 1796, 1790, 86, 1799, + 1801, 1792, 1800, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 1811, 86, 1798, 1810, 86, 86, + 86, 1805, 1802, 1806, 1807, 1803, 1804, 86, 86, 1808, + 1813, 1814, 1816, 1809, 1812, 86, 1818, 86, 86, 86, + 1815, 1822, 86, 86, 86, 86, 86, 1826, 1817, 1824, - 1826, 86, 1823, 86, 86, 86, 86, 1824, 1831, 1832, - 86, 86, 86, 1825, 86, 1829, 1835, 1833, 86, 1830, - 86, 86, 1844, 1836, 86, 1834, 86, 86, 86, 1839, - 1838, 1837, 86, 1841, 86, 1843, 1842, 1845, 86, 86, - 1840, 86, 86, 1851, 86, 1847, 86, 1846, 1852, 86, - 86, 1853, 1848, 1849, 1854, 86, 1857, 1850, 86, 86, - 86, 86, 86, 1861, 1860, 1865, 86, 86, 1856, 1855, - 1859, 86, 86, 86, 1858, 1863, 1869, 1862, 1864, 86, - 86, 1870, 86, 86, 161, 1866, 86, 1871, 1874, 1875, - 1868, 86, 1867, 1878, 1872, 86, 1877, 86, 86, 86, + 86, 1820, 86, 86, 86, 1819, 86, 1825, 86, 86, + 1821, 86, 86, 1823, 86, 1827, 1828, 1831, 1833, 86, + 86, 1832, 1830, 1834, 86, 1836, 1835, 1829, 86, 1841, + 86, 1840, 1842, 86, 1837, 86, 1843, 1839, 1844, 1838, + 86, 1846, 86, 1845, 86, 86, 86, 86, 1847, 1850, + 1849, 86, 1851, 86, 86, 86, 86, 86, 1860, 86, + 86, 1859, 86, 1848, 1854, 1856, 1858, 86, 1857, 1853, + 1852, 86, 86, 1855, 86, 1862, 1866, 86, 86, 86, + 1861, 1867, 86, 1868, 86, 86, 1864, 86, 1872, 1863, + 1865, 1869, 86, 86, 86, 1876, 86, 86, 1875, 86, - 1881, 86, 1873, 1879, 1876, 1880, 86, 1882, 86, 86, - 1885, 86, 86, 1889, 86, 1887, 86, 86, 86, 86, - 86, 1888, 1890, 1884, 1886, 86, 86, 86, 1883, 1894, - 86, 86, 1901, 1893, 1899, 86, 1891, 1892, 86, 1895, - 1896, 1902, 86, 86, 1897, 1898, 86, 86, 1904, 86, - 86, 1908, 86, 86, 1910, 1903, 1900, 86, 86, 86, - 86, 1914, 86, 1905, 1906, 86, 1909, 86, 86, 1907, - 86, 1916, 86, 1917, 1912, 1918, 86, 1913, 86, 1911, - 86, 1919, 170, 86, 86, 1915, 1923, 1920, 86, 1922, - 1926, 86, 86, 86, 1924, 1921, 1930, 86, 86, 1925, + 1873, 1874, 1870, 1871, 1880, 1878, 86, 86, 1879, 1877, + 86, 1884, 86, 86, 86, 1881, 1885, 86, 86, 1889, + 1890, 1892, 86, 1893, 1886, 1883, 86, 1882, 1887, 86, + 86, 86, 1896, 86, 1888, 1894, 1891, 86, 86, 1897, + 86, 1900, 86, 86, 1904, 1895, 1902, 86, 86, 86, + 86, 86, 1903, 86, 1899, 1901, 1905, 1898, 86, 86, + 86, 1908, 86, 86, 86, 1915, 86, 1909, 1906, 1911, + 1907, 86, 1910, 1917, 1918, 1912, 86, 1913, 1914, 86, + 86, 1920, 86, 86, 1919, 86, 86, 1916, 1924, 86, + 86, 1926, 86, 86, 1930, 86, 1921, 86, 86, 1925, - 86, 86, 86, 86, 1928, 1932, 86, 1927, 86, 86, - 1937, 86, 1929, 1933, 1931, 1934, 86, 1940, 1941, 86, - 1938, 1935, 86, 1943, 86, 1942, 1936, 1939, 86, 86, - 1946, 1947, 86, 1944, 86, 86, 86, 1949, 1945, 86, - 86, 86, 1950, 86, 86, 86, 1948, 86, 86, 86, - 1955, 86, 1956, 86, 86, 86, 1960, 1957, 86, 86, - 1951, 1953, 1954, 1952, 1959, 1958, 86, 1961, 86, 86, - 1967, 1964, 86, 1966, 1963, 1968, 86, 1969, 1965, 86, - 1962, 86, 86, 86, 86, 86, 1975, 86, 1978, 86, - 1970, 1971, 1979, 86, 1980, 86, 86, 1973, 1972, 1976, + 86, 1922, 86, 86, 1923, 1933, 1932, 86, 1928, 86, + 86, 1929, 1927, 86, 1934, 1935, 1936, 86, 1931, 170, + 1939, 86, 1938, 1942, 86, 86, 1937, 86, 86, 1946, + 86, 1940, 86, 86, 86, 86, 1941, 86, 86, 1944, + 1948, 86, 1953, 3419, 1943, 86, 1947, 1945, 86, 1949, + 1950, 86, 86, 1951, 1958, 1952, 86, 1954, 1956, 1955, + 1957, 86, 1959, 86, 86, 1961, 1962, 1963, 86, 1960, + 86, 86, 86, 1965, 86, 86, 86, 1966, 86, 86, + 86, 86, 1964, 86, 86, 1971, 1972, 86, 86, 1976, + 86, 86, 1973, 86, 3419, 1967, 1969, 1970, 1968, 1974, - 86, 1977, 1974, 1982, 86, 86, 1983, 1986, 86, 1981, - 86, 86, 1988, 86, 1987, 86, 1989, 1984, 86, 1990, - 1992, 1985, 1995, 86, 86, 86, 86, 1994, 86, 1991, - 86, 1998, 86, 86, 86, 1997, 86, 86, 2002, 86, - 1993, 2001, 86, 86, 2003, 2004, 86, 86, 1996, 1999, - 86, 86, 2012, 86, 2000, 2005, 2006, 2007, 86, 2014, - 2010, 86, 2008, 86, 2015, 86, 2009, 2011, 2017, 86, - 2013, 2018, 86, 2021, 2019, 2016, 86, 86, 86, 86, - 2025, 86, 86, 86, 2027, 2022, 86, 2020, 86, 86, - 2030, 2031, 86, 86, 2033, 86, 86, 2023, 86, 2024, + 1977, 86, 86, 1975, 1984, 86, 1982, 1980, 1983, 1985, + 1979, 86, 86, 1978, 1981, 86, 86, 86, 86, 86, + 86, 1991, 86, 1994, 1995, 86, 1996, 86, 86, 1998, + 86, 1987, 1986, 1989, 1992, 1988, 1993, 86, 1990, 86, + 1999, 86, 2002, 86, 2004, 86, 2006, 86, 1997, 2003, + 86, 86, 86, 2008, 2005, 86, 86, 86, 2000, 86, + 2010, 86, 2001, 2011, 86, 2007, 2013, 2014, 86, 86, + 86, 86, 86, 86, 2018, 2020, 2012, 2017, 86, 86, + 2009, 86, 86, 2019, 2015, 86, 2028, 86, 3419, 2026, + 86, 2016, 86, 86, 2021, 2022, 2023, 2030, 86, 2025, - 86, 86, 2039, 86, 86, 2038, 2028, 2035, 2026, 2036, - 2029, 86, 86, 2032, 86, 86, 86, 86, 2045, 86, - 86, 2034, 2037, 2042, 2043, 2040, 86, 2041, 2049, 86, - 86, 2048, 2052, 86, 86, 2053, 2047, 2051, 86, 86, - 2044, 2055, 2056, 86, 86, 2046, 86, 86, 86, 2050, - 86, 2057, 86, 2058, 86, 86, 86, 2062, 2054, 86, - 2065, 2066, 86, 86, 2061, 2067, 86, 86, 2059, 2060, - 2070, 86, 86, 2063, 86, 86, 86, 2069, 2075, 86, - 2074, 86, 2064, 2068, 86, 86, 2071, 86, 2080, 2079, - 86, 86, 2072, 86, 2084, 2076, 2073, 2081, 86, 2077, + 2034, 2024, 2031, 86, 2032, 2027, 86, 2029, 2033, 86, + 2037, 86, 86, 86, 2041, 86, 86, 2035, 86, 86, + 2038, 86, 2043, 86, 2036, 86, 2046, 2047, 86, 86, + 2049, 86, 2039, 86, 2040, 86, 2054, 86, 86, 2044, + 86, 86, 86, 86, 2042, 2045, 2051, 2052, 86, 2048, + 2056, 86, 86, 86, 86, 2062, 2053, 2055, 2050, 2059, + 86, 2057, 2060, 2058, 86, 86, 2066, 86, 86, 2061, + 2065, 2069, 86, 86, 86, 2068, 2070, 86, 2072, 86, + 2064, 2073, 86, 86, 86, 86, 2063, 2067, 2074, 86, + 86, 86, 2071, 86, 2075, 86, 2079, 86, 2082, 2076, - 2078, 86, 2082, 2083, 86, 2087, 86, 86, 86, 2085, - 86, 86, 86, 2094, 2086, 2091, 2097, 86, 86, 86, - 86, 2089, 2088, 86, 2098, 2096, 86, 2090, 86, 86, - 2099, 2092, 2093, 2095, 86, 2104, 86, 2100, 2105, 86, - 2101, 2106, 2108, 2109, 86, 2102, 2107, 86, 86, 86, - 86, 86, 2113, 86, 2103, 2111, 86, 86, 86, 86, - 2115, 2118, 2120, 2112, 86, 2114, 86, 86, 86, 2116, - 2110, 86, 170, 86, 86, 86, 86, 2123, 86, 2127, - 86, 2128, 86, 2129, 2117, 2121, 2119, 2124, 2125, 2130, - 86, 2122, 2126, 2131, 86, 2133, 86, 86, 86, 86, + 2083, 2084, 2078, 86, 86, 86, 86, 86, 2077, 2080, + 86, 86, 86, 86, 2087, 2092, 86, 2091, 86, 2086, + 86, 2081, 86, 2085, 3419, 2089, 2096, 86, 2097, 86, + 2088, 86, 2093, 2090, 86, 2094, 86, 2095, 2099, 86, + 2098, 2100, 86, 2101, 2104, 86, 86, 2102, 86, 86, + 2107, 86, 2103, 86, 2108, 2111, 86, 86, 86, 2115, + 86, 86, 2106, 2113, 86, 2116, 86, 2105, 86, 2114, + 2117, 2109, 2112, 2110, 86, 86, 86, 2118, 2122, 86, + 2123, 86, 2124, 2126, 3419, 2119, 2127, 2125, 86, 86, + 2120, 86, 86, 86, 2131, 2121, 2129, 86, 86, 86, - 2132, 86, 2134, 2135, 86, 2136, 2137, 86, 86, 2138, - 2139, 86, 2141, 86, 86, 86, 86, 2145, 86, 86, - 2140, 2144, 86, 86, 2146, 2142, 2143, 2147, 2148, 86, - 2150, 86, 2149, 86, 86, 86, 86, 86, 86, 2151, - 2155, 2157, 2152, 2156, 86, 86, 86, 86, 86, 86, - 2162, 86, 2153, 2159, 2154, 2158, 86, 86, 2167, 86, - 2161, 2163, 86, 2160, 86, 2165, 2164, 86, 2168, 86, - 86, 2166, 2171, 2174, 2169, 2173, 86, 86, 86, 86, - 86, 2179, 2172, 86, 86, 2170, 2182, 86, 86, 2181, - 2183, 86, 86, 2175, 2176, 2177, 2180, 2178, 2185, 86, + 86, 86, 2128, 2133, 86, 2130, 2136, 86, 2138, 2132, + 2134, 86, 86, 170, 86, 86, 86, 86, 2141, 86, + 86, 2147, 86, 2139, 2145, 2146, 2135, 2142, 2143, 2137, + 86, 2140, 2148, 86, 2149, 86, 2144, 2151, 86, 86, + 86, 86, 86, 86, 2152, 2153, 86, 2154, 2155, 86, + 2150, 2156, 2157, 86, 2158, 86, 2159, 86, 86, 2163, + 86, 86, 86, 2162, 86, 2160, 86, 2165, 86, 2161, + 2164, 2166, 86, 2168, 86, 2167, 86, 2170, 86, 86, + 86, 2175, 86, 2173, 2169, 2174, 86, 86, 86, 86, + 86, 2180, 86, 86, 2171, 2177, 86, 2172, 86, 2185, - 2184, 86, 2186, 86, 86, 2189, 86, 86, 86, 86, - 2188, 86, 86, 2190, 86, 2193, 86, 86, 2194, 86, - 86, 86, 86, 86, 86, 86, 2187, 86, 2192, 2191, - 2202, 2196, 2197, 2195, 2199, 86, 2198, 2204, 2201, 2206, - 2207, 86, 2200, 2203, 86, 86, 86, 86, 2205, 2210, - 2211, 86, 86, 2208, 2214, 86, 2213, 86, 86, 86, - 86, 86, 2216, 86, 2209, 2217, 86, 2212, 2218, 86, - 2220, 2222, 86, 2215, 2224, 2221, 86, 86, 2219, 2226, - 86, 86, 86, 86, 2229, 2223, 2228, 86, 2230, 86, - 2225, 86, 2231, 2234, 86, 86, 86, 86, 86, 86, + 2176, 86, 2181, 2179, 86, 2183, 2178, 86, 86, 2189, + 2182, 86, 86, 2184, 2191, 86, 2186, 86, 86, 86, + 2187, 2192, 2188, 86, 2190, 2197, 86, 86, 2193, 86, + 2199, 86, 86, 2194, 2195, 2202, 86, 2196, 2200, 2201, + 86, 2203, 86, 2198, 86, 2204, 86, 2207, 86, 86, + 86, 86, 2206, 86, 86, 2205, 2208, 86, 2211, 2212, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 2209, 2210, 2214, 2215, 2220, 2213, 2217, 2216, 2225, 86, + 2219, 2224, 86, 86, 86, 86, 2222, 2221, 2228, 2218, + 2223, 86, 86, 86, 86, 2232, 2229, 2231, 86, 86, - 2235, 86, 86, 2227, 86, 2240, 2237, 2232, 2238, 2236, - 86, 2233, 2310, 2239, 86, 2242, 86, 2241, 2243, 86, - 86, 2244, 2246, 2247, 86, 2245, 86, 86, 86, 86, - 2249, 2248, 2251, 86, 2250, 2253, 86, 86, 2255, 2254, - 2252, 86, 2256, 86, 86, 86, 86, 86, 2262, 2258, - 2264, 2259, 2257, 86, 2260, 2265, 86, 2261, 86, 86, - 86, 86, 86, 86, 86, 2266, 2270, 2267, 2263, 2271, - 86, 2268, 2269, 2275, 86, 2272, 86, 86, 86, 2274, - 86, 86, 86, 2273, 86, 86, 86, 86, 86, 86, - 2284, 86, 2279, 2281, 2276, 2277, 2278, 2280, 2282, 86, + 2226, 86, 86, 2227, 2230, 2235, 2234, 86, 2236, 86, + 86, 86, 2233, 2240, 86, 86, 2238, 2242, 2245, 86, + 2237, 2239, 86, 86, 2243, 86, 86, 86, 2244, 2241, + 2247, 86, 2249, 2248, 86, 86, 2253, 86, 86, 2250, + 86, 2246, 86, 2254, 2251, 86, 86, 86, 2257, 86, + 2255, 86, 2256, 2258, 86, 2252, 86, 2259, 2262, 86, + 2261, 86, 2263, 2266, 2260, 86, 2264, 2265, 86, 86, + 2267, 86, 86, 2268, 2269, 86, 2270, 2272, 86, 86, + 2274, 86, 2275, 86, 2271, 86, 86, 2273, 86, 86, + 2277, 2281, 2276, 2282, 86, 3419, 2283, 2279, 86, 86, - 86, 86, 2301, 86, 2283, 2285, 2291, 2287, 2286, 2289, - 2290, 86, 86, 2293, 2295, 86, 86, 2297, 86, 86, - 2288, 2294, 86, 86, 86, 2296, 2299, 2303, 2300, 2292, - 170, 2305, 3387, 86, 2307, 2308, 2306, 86, 2298, 86, - 86, 86, 2309, 2302, 86, 2312, 86, 86, 2313, 86, - 2317, 86, 2304, 86, 2318, 86, 86, 2321, 2316, 86, - 86, 86, 2314, 86, 2311, 2322, 2325, 2319, 86, 2323, - 2324, 86, 2326, 2315, 2320, 86, 86, 86, 86, 2327, - 86, 2329, 86, 86, 2331, 86, 86, 2332, 86, 86, - 2335, 86, 86, 86, 2341, 86, 2328, 2339, 86, 86, + 2280, 2284, 86, 86, 2278, 86, 2285, 2286, 86, 86, + 2289, 2287, 86, 2290, 86, 2288, 2294, 86, 86, 86, + 86, 86, 2291, 2293, 86, 86, 86, 86, 86, 3419, + 2300, 86, 2292, 2301, 2298, 86, 2295, 2296, 86, 2302, + 2297, 2299, 86, 2304, 2306, 86, 86, 2305, 2303, 86, + 86, 2307, 2309, 86, 2310, 2315, 86, 86, 86, 86, + 2317, 86, 86, 86, 2308, 2311, 2314, 2312, 2316, 86, + 86, 170, 86, 2319, 2323, 2320, 2321, 2318, 2313, 2325, + 86, 2322, 2327, 2328, 2326, 86, 86, 86, 86, 86, + 2329, 86, 2331, 2324, 2330, 2332, 86, 86, 2333, 86, - 2330, 2334, 2342, 86, 2337, 86, 2333, 2336, 2344, 86, - 86, 2338, 86, 86, 2343, 2340, 86, 2349, 86, 2352, - 86, 86, 2347, 86, 86, 86, 86, 2346, 86, 2350, - 86, 2345, 2348, 2353, 86, 86, 2351, 86, 86, 86, - 2354, 86, 2355, 2362, 86, 86, 2366, 2356, 2369, 2358, - 2357, 2360, 2364, 86, 2363, 2359, 2361, 2367, 86, 2365, - 86, 86, 86, 2434, 86, 2368, 86, 2373, 2374, 86, - 86, 86, 2375, 86, 2370, 86, 2371, 2372, 2376, 86, - 86, 2379, 2380, 2382, 86, 2381, 2377, 86, 2378, 2383, - 86, 86, 2384, 86, 86, 86, 2385, 2389, 86, 2390, + 2336, 2337, 86, 86, 2338, 86, 86, 2341, 86, 2343, + 2342, 2339, 2334, 86, 2344, 86, 86, 86, 86, 2346, + 86, 2345, 2347, 2335, 2340, 86, 86, 86, 86, 86, + 2349, 86, 86, 2352, 86, 86, 86, 2348, 86, 2355, + 2350, 86, 86, 2359, 2354, 2361, 86, 86, 86, 86, + 2356, 2357, 2351, 2362, 2353, 86, 2358, 2363, 86, 86, + 2364, 86, 86, 2360, 86, 86, 2366, 2369, 2372, 86, + 2367, 86, 86, 2365, 2370, 86, 86, 86, 2368, 2373, + 86, 86, 2371, 86, 2374, 3419, 86, 86, 86, 86, + 86, 2375, 2386, 2380, 2385, 86, 2378, 86, 2376, 2383, - 86, 86, 2392, 86, 86, 2394, 86, 2388, 86, 3387, - 86, 2397, 86, 2386, 2387, 2396, 2398, 86, 86, 86, - 2391, 86, 2393, 2395, 86, 86, 2404, 86, 2400, 86, - 2403, 86, 2399, 2406, 86, 2401, 86, 86, 86, 2410, - 2409, 86, 2408, 2402, 2412, 86, 86, 86, 2405, 2407, - 86, 86, 2415, 86, 2411, 2418, 86, 86, 86, 86, - 2413, 2414, 2416, 86, 2423, 86, 86, 2422, 86, 86, - 2417, 2425, 86, 2419, 2421, 2428, 86, 2424, 86, 86, - 2420, 86, 86, 2426, 2427, 2430, 86, 2435, 86, 86, - 2441, 2437, 2429, 2431, 86, 86, 86, 2436, 2438, 2432, + 2377, 2379, 2382, 2384, 2381, 2387, 86, 86, 86, 2391, + 2390, 2389, 2388, 86, 86, 2393, 2394, 86, 86, 86, + 2395, 2396, 86, 86, 86, 2399, 2392, 86, 86, 2402, + 86, 2403, 86, 86, 2397, 86, 2398, 2400, 2404, 86, + 2401, 86, 2409, 86, 2405, 2410, 86, 2406, 86, 2412, + 86, 86, 86, 2408, 86, 2407, 2414, 86, 86, 2416, + 2417, 86, 2418, 86, 86, 86, 2419, 2411, 86, 2413, + 86, 86, 86, 2415, 2420, 86, 2424, 2425, 86, 2427, + 86, 2421, 2422, 86, 86, 86, 2430, 86, 2431, 2423, + 2429, 2426, 86, 2428, 2433, 86, 86, 86, 2436, 86, - 2433, 86, 86, 86, 86, 86, 2442, 2443, 2444, 86, - 2448, 86, 86, 2439, 86, 2440, 86, 2446, 2453, 2450, - 86, 2451, 2455, 86, 86, 86, 2445, 2452, 86, 86, - 2447, 86, 86, 86, 2456, 2460, 2457, 2449, 2459, 86, - 86, 2454, 2461, 86, 86, 86, 86, 2539, 2458, 2462, - 2466, 2467, 2463, 2464, 86, 86, 86, 86, 2468, 2465, - 86, 2471, 2472, 86, 2470, 86, 2469, 86, 86, 86, - 2473, 170, 2475, 86, 2476, 86, 2477, 86, 2474, 2482, - 86, 86, 86, 2480, 86, 2478, 86, 2479, 86, 86, - 2484, 2481, 2483, 86, 2485, 86, 2613, 86, 2489, 86, + 2439, 86, 86, 2432, 2434, 86, 86, 2435, 86, 86, + 2444, 86, 2437, 2443, 86, 86, 86, 86, 2438, 2446, + 86, 2442, 2440, 2449, 86, 86, 86, 2445, 2441, 86, + 2447, 2448, 2451, 86, 2452, 86, 2456, 2450, 86, 86, + 2458, 86, 86, 2462, 2453, 2459, 86, 2454, 2457, 86, + 86, 2464, 86, 2463, 86, 2465, 86, 86, 86, 2455, + 2460, 2469, 2461, 86, 86, 86, 2474, 2467, 2471, 2472, + 86, 86, 86, 2477, 86, 86, 86, 2466, 2468, 86, + 2473, 2478, 86, 86, 2470, 86, 2476, 2479, 2481, 86, + 86, 2475, 2482, 86, 2483, 86, 86, 2487, 170, 2480, - 2486, 2487, 2490, 2493, 86, 2488, 86, 2494, 2491, 2495, - 86, 2492, 86, 86, 2498, 2496, 2499, 86, 2497, 86, - 86, 86, 86, 2501, 86, 86, 2500, 86, 2503, 86, - 86, 2507, 2508, 2502, 86, 2505, 86, 2504, 86, 2510, - 86, 86, 86, 86, 2511, 2512, 2513, 86, 2506, 86, - 2509, 86, 2515, 86, 2514, 2519, 86, 2518, 86, 86, - 2516, 2517, 86, 86, 2521, 86, 86, 86, 86, 2528, - 2525, 2520, 86, 2527, 86, 86, 86, 86, 2529, 2524, - 86, 86, 2522, 2523, 86, 2533, 86, 2526, 86, 86, - 86, 2538, 2530, 2537, 86, 2531, 2532, 86, 2535, 86, + 2488, 2489, 2484, 2499, 2485, 2486, 86, 86, 86, 86, + 2491, 2494, 2490, 86, 2493, 86, 2495, 86, 2492, 86, + 86, 2498, 86, 86, 2496, 86, 2504, 86, 2497, 86, + 86, 86, 86, 86, 86, 86, 2511, 86, 2506, 2502, + 86, 2503, 2500, 2507, 2501, 2505, 86, 2510, 2508, 2509, + 3419, 2512, 2514, 2515, 86, 86, 2516, 2513, 2517, 86, + 86, 86, 2520, 2518, 2521, 86, 2519, 86, 86, 86, + 86, 2523, 86, 86, 2522, 86, 2525, 86, 86, 2529, + 2530, 2524, 86, 2527, 86, 2526, 86, 2532, 86, 86, + 86, 86, 2533, 2534, 2535, 86, 2528, 86, 2531, 86, - 2536, 2540, 2534, 2541, 2542, 86, 2543, 86, 86, 2546, - 2544, 2548, 86, 86, 86, 2545, 2547, 86, 2550, 86, - 2552, 86, 86, 2551, 86, 2549, 86, 86, 86, 86, - 86, 86, 2556, 2562, 2558, 2559, 2560, 86, 2554, 86, - 2553, 86, 2555, 2561, 86, 86, 2563, 2564, 86, 86, - 86, 86, 86, 2566, 2557, 2568, 86, 86, 2571, 86, - 2572, 2573, 2569, 2565, 86, 2576, 86, 86, 2567, 2570, - 86, 86, 3387, 2577, 2574, 86, 86, 2580, 86, 2575, - 2581, 86, 86, 2582, 86, 86, 86, 86, 2586, 2585, - 2578, 86, 86, 2579, 2584, 86, 86, 86, 86, 86, + 2537, 86, 2536, 2541, 86, 2540, 86, 86, 2538, 2539, + 86, 86, 2543, 86, 86, 86, 86, 2550, 2547, 2542, + 86, 2549, 86, 86, 86, 86, 2551, 2546, 86, 86, + 2544, 2545, 86, 2555, 86, 2548, 86, 86, 2565, 2560, + 2552, 2559, 86, 2553, 2554, 86, 2557, 86, 2558, 86, + 2556, 2562, 86, 86, 86, 2561, 2564, 2566, 86, 2568, + 86, 2563, 2570, 86, 2569, 2572, 86, 86, 86, 2574, + 86, 86, 86, 86, 86, 2571, 2573, 86, 2578, 2567, + 86, 86, 86, 86, 2583, 86, 2576, 2581, 2582, 2575, + 2577, 2584, 86, 2585, 86, 2586, 86, 2587, 86, 86, - 2583, 2587, 2590, 2593, 2589, 2588, 2594, 86, 2595, 86, - 2596, 86, 2597, 86, 86, 2591, 2592, 2599, 86, 86, - 2601, 86, 2602, 2600, 86, 86, 2598, 86, 86, 2607, - 86, 86, 2609, 86, 2610, 86, 2603, 2604, 86, 86, - 86, 86, 86, 86, 2606, 86, 86, 2605, 2616, 2611, - 2608, 2612, 2614, 2619, 86, 2620, 86, 86, 86, 86, - 86, 2615, 2617, 86, 86, 2618, 2627, 170, 86, 2629, - 86, 2623, 86, 86, 2625, 86, 86, 2622, 86, 2628, - 86, 2630, 2621, 2624, 86, 2626, 86, 2636, 2631, 3387, - 2632, 86, 2634, 86, 2633, 86, 2638, 86, 2639, 2647, + 86, 2580, 86, 2579, 86, 2589, 86, 2591, 86, 2594, + 86, 86, 86, 2596, 2592, 2595, 86, 2590, 2588, 86, + 2593, 2599, 86, 86, 86, 86, 2600, 2598, 86, 2597, + 86, 2603, 2604, 86, 86, 2601, 86, 2607, 86, 2605, + 2609, 2608, 2602, 2606, 86, 86, 86, 86, 86, 86, + 86, 2613, 2617, 86, 86, 2616, 2618, 86, 2610, 2611, + 2612, 2619, 86, 2620, 86, 86, 2621, 2614, 86, 2615, + 86, 2624, 86, 2623, 86, 2625, 86, 86, 86, 86, + 2631, 86, 86, 2622, 2626, 2633, 86, 86, 2627, 2634, + 86, 86, 86, 86, 86, 2630, 86, 2628, 2635, 2629, - 2637, 2635, 2640, 86, 2641, 86, 86, 2642, 86, 2643, - 86, 2644, 86, 2645, 86, 86, 86, 2649, 86, 86, - 86, 86, 86, 2646, 2655, 86, 86, 2653, 86, 2648, - 86, 2659, 86, 2650, 2660, 86, 86, 86, 2651, 2652, - 2654, 2656, 2661, 2657, 2658, 2663, 2664, 86, 86, 2666, - 86, 86, 86, 86, 2662, 2667, 86, 2665, 86, 2669, - 86, 86, 2675, 86, 2676, 86, 86, 86, 2670, 2668, - 2680, 86, 86, 86, 2671, 86, 2672, 2673, 2679, 2674, - 2681, 86, 2682, 86, 86, 2678, 2677, 86, 86, 86, - 2684, 2683, 2687, 86, 86, 86, 86, 2691, 2686, 2690, + 2637, 2632, 86, 2636, 2638, 86, 86, 2640, 2643, 86, + 86, 86, 86, 86, 2639, 2644, 2641, 86, 86, 86, + 86, 2651, 86, 170, 86, 2642, 2647, 86, 2653, 2654, + 86, 2646, 2649, 86, 2650, 2652, 2645, 2655, 86, 2656, + 86, 2648, 86, 2660, 86, 86, 2664, 86, 2657, 2662, + 2663, 2665, 86, 86, 2666, 2658, 2661, 86, 2667, 86, + 2668, 2659, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 2670, 2679, 86, 86, 2677, 86, + 2669, 2672, 86, 2671, 3419, 2673, 2674, 86, 2683, 2675, + 2676, 2678, 2680, 2685, 2681, 2682, 2684, 86, 86, 2688, - 2692, 86, 2685, 86, 86, 2693, 2694, 86, 86, 2688, - 86, 86, 86, 2689, 86, 2695, 86, 2696, 86, 2700, - 3387, 86, 2698, 2697, 2704, 2705, 86, 86, 86, 2708, - 86, 2699, 2701, 86, 86, 2702, 86, 86, 2703, 86, - 2711, 86, 2706, 2713, 2709, 86, 2707, 2714, 86, 2710, - 86, 86, 2712, 86, 2715, 2719, 86, 86, 86, 86, - 2716, 86, 2722, 2723, 86, 2720, 2721, 2725, 86, 86, - 2717, 2718, 86, 86, 2726, 86, 86, 2728, 2724, 2731, - 86, 2727, 86, 2732, 86, 2729, 2734, 86, 86, 86, - 86, 86, 2739, 86, 86, 2730, 86, 2735, 2733, 2737, + 86, 86, 2690, 86, 2686, 86, 86, 2687, 86, 86, + 2689, 86, 86, 86, 86, 2693, 2699, 86, 2700, 86, + 86, 86, 86, 2691, 2692, 86, 2694, 2695, 2703, 2697, + 2696, 2704, 86, 2698, 2705, 86, 2706, 86, 86, 2702, + 2701, 86, 86, 2707, 86, 86, 86, 3419, 86, 2711, + 2716, 86, 2708, 2714, 86, 2710, 2715, 2709, 86, 86, + 2717, 2718, 86, 86, 86, 2712, 2713, 86, 86, 86, + 86, 86, 2720, 86, 2724, 2725, 86, 86, 2719, 2722, + 2729, 2730, 86, 2721, 86, 86, 2733, 86, 2723, 86, + 86, 2726, 2727, 86, 86, 86, 2728, 2736, 86, 2731, - 2738, 2736, 2741, 86, 2740, 86, 86, 86, 2744, 86, - 2742, 2743, 2745, 86, 86, 2747, 86, 2746, 86, 86, - 86, 86, 2748, 2751, 2749, 2752, 2754, 86, 86, 2750, - 2755, 86, 86, 2756, 2753, 2758, 170, 86, 86, 2759, - 2757, 86, 2760, 2763, 3387, 86, 86, 2765, 86, 86, - 2764, 86, 86, 2768, 86, 86, 2761, 2767, 2772, 2762, - 2769, 86, 2773, 2766, 2770, 2771, 86, 2774, 86, 86, - 86, 86, 2778, 86, 2775, 2776, 86, 2779, 86, 86, - 86, 2780, 86, 86, 86, 2777, 2785, 2786, 2781, 2787, - 2783, 86, 86, 86, 86, 2782, 86, 86, 86, 2791, + 2734, 86, 2738, 2732, 86, 2735, 2739, 86, 2740, 2737, + 86, 2744, 86, 86, 86, 86, 2741, 2748, 86, 2747, + 86, 2750, 86, 2746, 2742, 2745, 86, 86, 86, 86, + 2743, 2751, 86, 2756, 86, 86, 2752, 86, 2757, 2749, + 86, 2754, 2759, 86, 2753, 86, 86, 86, 2764, 86, + 86, 86, 2755, 2760, 3419, 2762, 2763, 2758, 2761, 2767, + 86, 86, 86, 86, 86, 86, 2766, 2768, 2769, 2771, + 2765, 86, 86, 2772, 86, 2770, 86, 86, 86, 86, + 86, 2774, 2775, 2777, 2778, 2780, 86, 2781, 86, 86, + 2773, 2776, 2779, 86, 2782, 2784, 170, 86, 86, 2783, - 86, 2789, 2790, 2788, 2784, 2793, 86, 86, 86, 86, - 2792, 2794, 86, 86, 86, 2799, 86, 86, 2797, 86, - 3387, 2796, 2798, 2802, 86, 2795, 2800, 86, 86, 86, - 2801, 2807, 86, 2803, 86, 2804, 86, 86, 86, 2805, - 86, 2808, 86, 2806, 86, 2810, 86, 2809, 2812, 86, - 2816, 86, 2811, 2817, 86, 2814, 2824, 2813, 2819, 2820, - 2821, 86, 2815, 86, 86, 86, 86, 2822, 86, 2818, - 2825, 2823, 86, 2827, 86, 86, 86, 2828, 86, 86, - 2829, 86, 2832, 86, 86, 2826, 2834, 86, 2837, 2830, - 2835, 86, 86, 2831, 2836, 86, 86, 2838, 2839, 86, + 2785, 86, 2786, 2789, 3419, 86, 86, 2791, 86, 86, + 2790, 86, 86, 2794, 86, 86, 2787, 2793, 2798, 2788, + 2795, 86, 2799, 2792, 2796, 2797, 86, 2800, 86, 86, + 86, 86, 2804, 86, 2801, 2802, 86, 2805, 86, 86, + 86, 2806, 86, 86, 86, 2803, 2811, 2812, 2807, 2813, + 2809, 86, 86, 86, 86, 2808, 86, 86, 86, 2817, + 86, 2815, 2816, 2814, 2810, 2819, 86, 86, 86, 86, + 2818, 2820, 86, 86, 86, 2825, 86, 86, 2823, 86, + 3419, 2822, 2824, 2828, 86, 2821, 2826, 86, 86, 86, + 2827, 2833, 86, 2829, 86, 2830, 86, 86, 86, 2831, - 86, 2833, 86, 2843, 86, 2841, 86, 86, 2844, 86, - 86, 2847, 2848, 86, 2842, 86, 2840, 86, 2845, 2849, - 86, 86, 86, 86, 2846, 2850, 86, 2853, 2851, 2854, - 86, 86, 2855, 2856, 86, 2852, 2857, 2858, 86, 2859, - 86, 2860, 2862, 2863, 86, 86, 2865, 86, 86, 2864, - 86, 2867, 86, 86, 2861, 2866, 2868, 86, 86, 86, - 2873, 86, 86, 86, 86, 2872, 86, 2875, 2876, 86, - 2869, 86, 2878, 2870, 86, 86, 2877, 2879, 2871, 86, - 86, 2882, 2881, 86, 86, 86, 2874, 2880, 2885, 86, - 2889, 86, 2883, 2884, 86, 86, 86, 86, 2891, 86, + 86, 2834, 86, 2832, 86, 2836, 86, 2835, 2838, 86, + 2842, 3419, 2837, 2843, 86, 2840, 86, 2839, 2845, 2846, + 2848, 3419, 2841, 86, 86, 86, 86, 2849, 86, 2844, + 86, 2850, 86, 86, 2847, 2851, 2854, 86, 86, 86, + 2855, 2852, 86, 2856, 86, 86, 2853, 86, 2859, 2861, + 86, 86, 2857, 2862, 86, 2863, 86, 86, 86, 2858, + 86, 2864, 86, 2860, 86, 2865, 2866, 86, 2870, 2868, + 2869, 2867, 86, 2871, 86, 86, 2874, 2875, 86, 2876, + 86, 86, 2873, 86, 2872, 86, 2877, 2879, 86, 86, + 2882, 86, 86, 2883, 2878, 2884, 86, 86, 2886, 86, - 86, 86, 2886, 2888, 2918, 2887, 2892, 2895, 2890, 2896, - 2893, 86, 2898, 86, 2897, 86, 2894, 2899, 86, 2900, - 2901, 86, 86, 2902, 86, 2903, 86, 2904, 86, 2905, - 86, 86, 86, 2908, 86, 86, 2907, 2909, 86, 2910, - 2912, 86, 86, 2916, 86, 86, 2906, 2913, 2917, 86, - 86, 2911, 2920, 86, 2922, 86, 86, 2921, 86, 86, - 86, 2914, 2915, 2919, 2923, 2924, 86, 2925, 86, 2926, - 2929, 86, 86, 86, 2928, 86, 2930, 2927, 86, 2935, - 86, 86, 2931, 86, 2936, 86, 86, 86, 86, 2933, - 2938, 2939, 86, 2940, 2932, 2934, 2937, 2941, 86, 2942, + 86, 86, 86, 2880, 2890, 2891, 86, 86, 2893, 2881, + 86, 2892, 2885, 2887, 86, 86, 2889, 2895, 86, 2888, + 2894, 86, 2896, 86, 86, 86, 2901, 2900, 86, 86, + 2904, 86, 86, 2903, 86, 86, 86, 86, 86, 2905, + 2907, 2897, 86, 2906, 2898, 2899, 86, 86, 2910, 2909, + 86, 86, 86, 2902, 86, 2911, 2912, 2913, 2917, 86, + 2914, 2908, 86, 86, 86, 2916, 2919, 86, 2918, 86, + 2915, 86, 2924, 3419, 2920, 2923, 2921, 2925, 86, 2926, + 2929, 86, 86, 2922, 2927, 86, 86, 2930, 2928, 86, + 2931, 86, 2932, 86, 2933, 86, 86, 2937, 2934, 86, - 86, 86, 2946, 86, 86, 86, 2943, 86, 86, 86, - 2952, 2944, 86, 2947, 86, 86, 86, 2948, 2950, 2945, - 2955, 86, 86, 2957, 2953, 86, 2956, 86, 2951, 86, - 86, 86, 2949, 86, 2958, 2954, 2959, 86, 2962, 2967, - 2960, 2963, 86, 2961, 2964, 86, 2965, 86, 2966, 86, - 86, 2971, 86, 2968, 86, 2970, 86, 86, 86, 2972, - 86, 2969, 86, 2973, 2974, 86, 86, 2978, 2976, 2980, - 2975, 86, 2982, 86, 86, 86, 86, 86, 2983, 86, - 86, 2977, 2984, 86, 2979, 2985, 86, 2986, 86, 2991, - 86, 86, 86, 86, 2988, 2987, 2981, 2994, 2989, 86, + 2935, 86, 86, 86, 2938, 86, 86, 2940, 2944, 86, + 2945, 86, 2941, 86, 86, 86, 2936, 2946, 2948, 86, + 2939, 86, 2949, 2950, 86, 2942, 2943, 86, 2952, 86, + 2953, 2947, 2951, 86, 86, 86, 86, 2958, 86, 86, + 86, 86, 2954, 2955, 2956, 2959, 86, 86, 2960, 86, + 2964, 86, 2970, 86, 2957, 2965, 86, 2962, 2967, 2961, + 86, 86, 2963, 86, 2966, 2968, 2971, 86, 2969, 86, + 86, 2975, 86, 86, 2972, 86, 86, 86, 86, 2981, + 86, 86, 2976, 3419, 86, 86, 2979, 2977, 2974, 2984, + 86, 86, 2982, 86, 2973, 2985, 86, 2986, 2980, 86, - 86, 86, 86, 86, 2992, 2993, 86, 86, 2990, 2995, - 2998, 2999, 86, 3000, 86, 2996, 3001, 3004, 86, 86, - 2997, 3002, 3006, 86, 3007, 86, 86, 3009, 86, 86, - 86, 86, 86, 3014, 86, 86, 3013, 3017, 3005, 86, - 3003, 86, 86, 86, 86, 3010, 3011, 3008, 3012, 86, - 3016, 86, 3020, 3023, 86, 3015, 86, 3025, 3021, 86, - 86, 3019, 3018, 86, 3026, 3028, 86, 86, 3022, 3029, - 86, 3031, 86, 86, 86, 86, 3024, 86, 86, 3036, - 86, 3387, 3027, 3034, 3033, 86, 86, 3030, 3040, 86, - 3038, 3032, 86, 3044, 86, 3035, 3037, 3042, 86, 86, + 2987, 2978, 2983, 86, 2988, 86, 2989, 86, 2991, 2993, + 86, 2992, 2994, 86, 2995, 86, 86, 2990, 86, 3003, + 86, 86, 3000, 86, 2998, 2996, 2999, 86, 86, 86, + 86, 86, 3001, 86, 3002, 86, 86, 3009, 2997, 86, + 3007, 3004, 3005, 86, 3011, 86, 86, 86, 86, 86, + 3012, 3008, 3006, 3013, 3014, 86, 3015, 86, 3016, 86, + 86, 3010, 3017, 3020, 86, 86, 86, 86, 86, 86, + 3023, 86, 3018, 3021, 86, 86, 3024, 86, 3022, 3019, + 3028, 86, 3027, 86, 3025, 86, 3029, 86, 3026, 3031, + 3030, 3033, 86, 3035, 86, 3036, 86, 3038, 86, 86, - 3039, 3041, 3043, 86, 86, 3047, 3048, 86, 3050, 86, - 3045, 86, 3049, 86, 86, 3053, 86, 86, 3052, 86, - 3056, 86, 3051, 3046, 3054, 86, 86, 3059, 86, 86, - 86, 86, 3064, 86, 86, 86, 3055, 3060, 3057, 3058, - 86, 3068, 86, 86, 3063, 3069, 86, 3061, 3070, 3067, - 86, 3066, 86, 3065, 86, 3062, 86, 3072, 3073, 86, - 3074, 86, 3075, 86, 3071, 3078, 86, 3076, 86, 3080, - 86, 86, 86, 3079, 86, 86, 86, 3085, 3086, 86, - 86, 86, 3077, 86, 86, 3081, 86, 3092, 86, 3093, - 86, 86, 3387, 3094, 3082, 3091, 3083, 3084, 3089, 86, + 86, 86, 3034, 3032, 86, 86, 3041, 86, 3037, 86, + 3043, 3044, 86, 3047, 86, 3039, 3040, 86, 3046, 86, + 3042, 86, 3050, 86, 86, 3053, 86, 3045, 86, 3055, + 86, 3058, 86, 86, 86, 86, 3049, 3048, 3051, 3056, + 3059, 86, 3052, 3061, 86, 86, 86, 86, 3054, 86, + 86, 3066, 3057, 3060, 86, 3064, 3063, 86, 3070, 86, + 86, 86, 3068, 3062, 3072, 86, 86, 3065, 3067, 3073, + 86, 3074, 86, 3077, 3069, 3071, 86, 3075, 3080, 86, + 3078, 86, 86, 86, 86, 3079, 3083, 86, 3082, 86, + 86, 3086, 3076, 86, 3081, 3084, 86, 86, 3089, 86, - 3088, 86, 86, 3090, 3098, 86, 3087, 3097, 3099, 86, - 86, 3095, 86, 3102, 86, 3100, 86, 3105, 86, 86, - 3096, 86, 3104, 86, 86, 3107, 3101, 86, 3103, 3106, - 86, 86, 3108, 86, 86, 86, 3111, 86, 86, 86, - 3113, 3387, 86, 3109, 86, 3112, 3114, 86, 86, 3126, - 3110, 86, 86, 86, 3115, 86, 3123, 3116, 3124, 3117, - 3118, 3120, 3121, 3119, 86, 86, 86, 86, 86, 3122, - 3127, 3129, 3125, 3131, 86, 3132, 86, 86, 3387, 3130, - 86, 3133, 3134, 86, 3128, 3135, 3136, 3137, 86, 3138, - 86, 3139, 3140, 86, 86, 3141, 3142, 3145, 86, 3143, + 86, 86, 86, 3094, 86, 86, 86, 86, 3085, 3419, + 3087, 3088, 3090, 86, 3091, 3093, 3097, 3098, 86, 3099, + 86, 86, 3096, 86, 3095, 86, 3092, 3101, 3100, 86, + 3102, 3103, 86, 3104, 86, 3105, 86, 3108, 86, 86, + 3110, 86, 3106, 86, 3109, 86, 86, 3107, 86, 86, + 86, 86, 3116, 3117, 86, 86, 86, 3111, 86, 3123, + 86, 86, 86, 3124, 86, 86, 86, 3112, 3113, 3114, + 3115, 3122, 3120, 3125, 3119, 3118, 3121, 86, 86, 86, + 3132, 3126, 3128, 3131, 3127, 3129, 86, 3130, 86, 3133, + 86, 86, 3136, 86, 86, 86, 86, 86, 3138, 3135, - 3144, 86, 86, 86, 3148, 86, 3146, 86, 86, 86, - 86, 86, 3147, 3154, 86, 86, 3153, 86, 86, 86, - 86, 86, 3150, 3157, 3156, 3149, 86, 3158, 86, 3151, - 3152, 3161, 3162, 86, 86, 3159, 86, 3163, 3387, 3160, - 3155, 86, 3164, 3165, 86, 3166, 86, 86, 86, 3167, - 3171, 86, 3168, 3173, 86, 3172, 86, 3169, 86, 86, - 3170, 3174, 86, 3177, 86, 3181, 3175, 3178, 3180, 86, - 86, 86, 3183, 86, 86, 3176, 3182, 3184, 86, 86, - 3187, 86, 86, 3179, 3186, 3188, 86, 3190, 86, 3185, - 86, 3189, 3191, 86, 3192, 86, 3193, 86, 3194, 86, + 86, 3137, 3134, 86, 86, 3139, 86, 86, 86, 3142, + 86, 86, 86, 3144, 86, 86, 3145, 3140, 3143, 86, + 86, 86, 86, 3141, 86, 86, 3154, 3155, 3157, 3146, + 3150, 3147, 3148, 3149, 86, 86, 3151, 3152, 86, 86, + 3158, 3153, 3160, 86, 3156, 3159, 3162, 86, 3163, 86, + 86, 3161, 3165, 86, 3164, 86, 3168, 86, 3169, 86, + 3166, 86, 3167, 3170, 3171, 3177, 86, 3172, 3173, 86, + 86, 3174, 86, 3175, 3176, 86, 86, 86, 3179, 86, + 3178, 3180, 86, 86, 86, 86, 3186, 86, 86, 86, + 3185, 86, 86, 3182, 86, 3181, 3188, 86, 3189, 86, - 3195, 86, 3196, 86, 3197, 86, 86, 3200, 86, 86, - 86, 86, 86, 86, 86, 3199, 3198, 86, 3201, 3205, - 86, 86, 3202, 86, 3209, 86, 3208, 3206, 3210, 86, - 3207, 3203, 3204, 3212, 86, 86, 3211, 86, 3214, 86, - 3216, 86, 86, 3213, 3219, 3218, 86, 86, 86, 86, - 86, 86, 3221, 86, 86, 86, 86, 86, 3227, 3217, - 3220, 3225, 3226, 3215, 86, 3224, 86, 3222, 86, 3223, - 86, 3228, 86, 3230, 3238, 3231, 86, 3232, 3233, 86, - 3234, 86, 86, 3229, 3235, 86, 86, 86, 86, 3236, - 86, 3237, 86, 86, 3244, 3243, 3239, 86, 3246, 3242, + 3190, 86, 86, 3183, 3184, 86, 3193, 3191, 3194, 86, + 3200, 3195, 86, 3187, 3199, 3192, 86, 3196, 3197, 86, + 3198, 86, 86, 3203, 3205, 86, 86, 86, 3204, 86, + 86, 3201, 3209, 86, 3202, 86, 86, 3206, 3210, 3213, + 3207, 3212, 86, 86, 86, 86, 3419, 3208, 3234, 3214, + 3215, 86, 3216, 86, 3211, 86, 3219, 86, 86, 3217, + 3218, 3220, 86, 3222, 86, 3223, 86, 3221, 3224, 86, + 3225, 86, 3226, 86, 3227, 86, 3228, 86, 3229, 86, + 86, 86, 3232, 86, 86, 86, 3237, 86, 86, 86, + 3231, 86, 86, 3233, 86, 86, 86, 3241, 3242, 86, - 3240, 86, 86, 86, 86, 86, 86, 86, 3245, 86, - 3241, 86, 3255, 86, 3247, 3253, 3258, 86, 86, 3250, - 86, 3248, 3249, 3254, 3252, 3257, 86, 86, 86, 86, - 3251, 3260, 3263, 86, 3256, 86, 3265, 86, 3259, 86, - 3266, 3261, 3267, 86, 3264, 3268, 86, 86, 3262, 3270, - 86, 86, 86, 3271, 86, 86, 3272, 3273, 3276, 86, - 86, 86, 86, 86, 86, 86, 3269, 3279, 3280, 86, - 3275, 86, 3278, 3277, 3282, 86, 3283, 86, 3284, 3274, - 86, 3281, 3286, 86, 3285, 86, 3287, 3289, 86, 86, - 3290, 86, 86, 3291, 3293, 3294, 86, 86, 3288, 86, + 3244, 86, 86, 3240, 3238, 3235, 3230, 3236, 3239, 3243, + 3245, 86, 86, 3248, 3246, 86, 86, 3251, 86, 3250, + 86, 86, 86, 86, 86, 3253, 86, 86, 3247, 86, + 3259, 86, 3252, 3249, 86, 3257, 3258, 86, 3256, 86, + 3254, 86, 3255, 86, 3262, 86, 3260, 3270, 3263, 86, + 3264, 3265, 86, 3266, 86, 3267, 86, 86, 3269, 86, + 3261, 86, 86, 86, 3268, 86, 86, 3275, 3276, 86, + 3278, 86, 86, 3272, 3274, 86, 86, 3271, 86, 86, + 3277, 86, 86, 86, 3273, 3279, 3287, 86, 3290, 86, + 3280, 3285, 3282, 3281, 3284, 3286, 86, 86, 86, 86, - 86, 86, 3299, 86, 3298, 86, 3295, 3300, 86, 3296, - 3292, 86, 86, 86, 86, 86, 3297, 86, 3304, 86, - 3306, 86, 86, 86, 86, 86, 3301, 3303, 3311, 3312, - 86, 3302, 3305, 86, 3308, 3309, 3307, 3319, 3310, 3313, - 86, 3317, 86, 86, 86, 3314, 86, 3320, 3315, 3318, - 86, 86, 3316, 86, 86, 3321, 3322, 3325, 3323, 3326, - 86, 86, 86, 86, 3328, 86, 3327, 86, 86, 86, - 86, 3329, 3334, 3324, 86, 3331, 86, 86, 86, 86, - 3337, 3330, 3338, 86, 86, 86, 86, 86, 3332, 3333, - 3336, 3341, 86, 3335, 3339, 3342, 86, 3340, 86, 3345, + 86, 3289, 86, 3283, 3292, 3295, 86, 86, 3288, 3297, + 86, 3296, 3293, 86, 3298, 3299, 86, 3291, 3300, 86, + 3294, 86, 86, 86, 86, 3303, 3301, 86, 3304, 3305, + 86, 3308, 86, 86, 86, 86, 86, 86, 3311, 3312, + 86, 3302, 3314, 86, 86, 3307, 3309, 3310, 3315, 86, + 86, 3316, 3306, 86, 3313, 3318, 86, 3321, 86, 86, + 3322, 86, 86, 3317, 3325, 3319, 3326, 86, 86, 3323, + 86, 3320, 86, 86, 86, 3331, 86, 3332, 86, 3330, + 3328, 3324, 3327, 86, 86, 86, 86, 86, 86, 86, + 3336, 86, 3329, 3338, 86, 86, 86, 86, 3335, 86, - 3344, 3346, 86, 3343, 86, 3347, 86, 3349, 86, 3351, - 86, 3352, 86, 86, 86, 3356, 86, 3353, 3387, 86, - 3354, 3359, 86, 3350, 3357, 86, 86, 3358, 3348, 86, - 86, 86, 86, 3355, 86, 86, 3360, 3361, 86, 3363, - 3365, 86, 86, 3367, 86, 3362, 86, 3368, 86, 3371, - 3364, 3366, 3372, 86, 3369, 86, 86, 3375, 3376, 86, - 86, 3378, 86, 3370, 86, 3373, 86, 3377, 3379, 86, - 86, 3380, 86, 86, 3374, 3381, 3387, 3382, 3385, 86, - 3386, 86, 3387, 3387, 3387, 3383, 3387, 3387, 3387, 3387, - 3387, 3387, 3384, 47, 47, 47, 47, 47, 47, 47, + 3343, 86, 3345, 86, 3333, 3334, 3344, 3337, 3339, 3340, + 3341, 3346, 86, 3342, 3349, 86, 86, 3347, 3351, 86, + 3352, 3350, 86, 86, 86, 86, 86, 3353, 3354, 3357, + 3355, 3348, 3358, 86, 86, 86, 3360, 86, 86, 3359, + 86, 86, 3361, 86, 86, 3356, 3366, 86, 3363, 86, + 3369, 86, 86, 3370, 86, 86, 86, 86, 86, 3362, + 3373, 86, 3364, 3365, 3368, 3371, 3367, 86, 3372, 86, + 3377, 86, 3378, 86, 3376, 86, 3374, 3375, 86, 3381, + 86, 3383, 86, 3384, 3379, 86, 86, 86, 3388, 86, + 3385, 86, 86, 3386, 3382, 86, 3389, 3390, 86, 3380, - 52, 52, 52, 52, 52, 52, 52, 57, 57, 57, - 57, 57, 57, 57, 63, 63, 63, 63, 63, 63, - 63, 68, 68, 68, 68, 68, 68, 68, 74, 74, - 74, 74, 74, 74, 74, 80, 80, 80, 80, 80, - 80, 80, 89, 89, 3387, 89, 89, 89, 89, 160, - 160, 3387, 3387, 3387, 160, 160, 162, 162, 3387, 3387, - 162, 3387, 162, 164, 3387, 3387, 3387, 3387, 3387, 164, - 167, 167, 3387, 3387, 3387, 167, 167, 169, 3387, 3387, - 3387, 3387, 3387, 169, 171, 171, 3387, 171, 171, 171, - 171, 174, 3387, 3387, 3387, 3387, 3387, 174, 177, 177, + 3391, 86, 86, 86, 86, 3392, 3387, 86, 3395, 3393, + 86, 3394, 3397, 86, 86, 3399, 86, 86, 86, 3400, + 86, 3403, 86, 3396, 3404, 86, 3398, 86, 3407, 3408, + 86, 86, 3410, 86, 86, 3401, 3402, 3405, 3409, 3411, + 86, 3406, 86, 86, 86, 86, 3417, 86, 3413, 3412, + 3414, 3418, 86, 3415, 3419, 3419, 3419, 3419, 3419, 3419, + 3419, 3419, 3419, 3416, 47, 47, 47, 47, 47, 47, + 47, 52, 52, 52, 52, 52, 52, 52, 57, 57, + 57, 57, 57, 57, 57, 63, 63, 63, 63, 63, + 63, 63, 68, 68, 68, 68, 68, 68, 68, 74, - 3387, 3387, 3387, 177, 177, 90, 90, 3387, 90, 90, - 90, 90, 17, 3387, 3387, 3387, 3387, 3387, 3387, 3387, - 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, - 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, - 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, - 3387, 3387, 3387 + 74, 74, 74, 74, 74, 74, 80, 80, 80, 80, + 80, 80, 80, 89, 89, 3419, 89, 89, 89, 89, + 160, 160, 3419, 3419, 3419, 160, 160, 162, 162, 3419, + 3419, 162, 3419, 162, 164, 3419, 3419, 3419, 3419, 3419, + 164, 167, 167, 3419, 3419, 3419, 167, 167, 169, 3419, + 3419, 3419, 3419, 3419, 169, 171, 171, 3419, 171, 171, + 171, 171, 174, 3419, 3419, 3419, 3419, 3419, 174, 177, + 177, 3419, 3419, 3419, 177, 177, 90, 90, 3419, 90, + 90, 90, 90, 17, 3419, 3419, 3419, 3419, 3419, 3419, + 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, + + 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, + 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, + 3419, 3419, 3419, 3419 } ; -static const flex_int16_t yy_chk[6654] = +static const flex_int16_t yy_chk[6725] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2283,18 +2301,18 @@ static const flex_int16_t yy_chk[6654] = 5, 3, 6, 24, 4, 24, 24, 5, 24, 6, 7, 7, 7, 7, 24, 7, 8, 8, 8, 8, 33, 8, 7, 9, 9, 9, 26, 26, 8, 10, - 10, 10, 19, 29, 9, 33, 19, 29, 3395, 35, + 10, 10, 19, 29, 9, 33, 19, 29, 3427, 35, 10, 11, 11, 11, 11, 11, 11, 13, 13, 13, 13, 34, 13, 11, 35, 99, 34, 29, 38, 13, 51, 51, 11, 12, 12, 12, 12, 12, 12, 14, 14, 14, 14, 99, 14, 12, 15, 15, 15, 38, 23, 14, 23, 23, 12, 23, 46, 15, 16, 16, - 16, 23, 23, 25, 27, 27, 25, 25, 2758, 16, + 16, 23, 23, 25, 27, 27, 25, 25, 2784, 16, 25, 46, 27, 30, 30, 25, 27, 56, 40, 27, 56, 73, 31, 31, 25, 28, 67, 67, 30, 32, 28, 31, 40, 32, 28, 73, 32, 28, 92, 28, - 28, 92, 31, 32, 1104, 32, 36, 36, 37, 37, + 28, 92, 31, 32, 1112, 32, 36, 36, 37, 37, 28, 45, 45, 37, 97, 36, 45, 97, 41, 41, 45, 36, 87, 41, 93, 36, 87, 37, 93, 37, @@ -2333,9 +2351,9 @@ static const flex_int16_t yy_chk[6654] = 200, 201, 202, 197, 203, 204, 201, 202, 205, 197, 197, 199, 196, 206, 205, 207, 203, 206, 208, 200, 207, 209, 213, 210, 211, 204, 214, 213, 216, 217, - 552, 214, 218, 216, 208, 209, 211, 205, 210, 211, + 554, 214, 218, 216, 208, 209, 211, 205, 210, 211, 215, 215, 220, 220, 215, 219, 215, 221, 218, 217, - 222, 219, 223, 221, 552, 224, 222, 227, 215, 221, + 222, 219, 223, 221, 554, 224, 222, 227, 215, 221, 215, 224, 225, 227, 228, 229, 230, 231, 225, 228, 230, 229, 223, 231, 232, 234, 233, 225, 235, 236, 237, 232, 233, 238, 235, 239, 237, 240, 234, 241, @@ -2359,654 +2377,662 @@ static const flex_int16_t yy_chk[6654] = 313, 315, 316, 319, 311, 312, 317, 317, 314, 318, 308, 321, 318, 320, 322, 316, 324, 320, 323, 323, 313, 319, 315, 325, 312, 326, 325, 327, 328, 329, - 321, 328, 322, 327, 324, 333, 331, 326, 366, 332, - 333, 329, 336, 325, 330, 331, 334, 335, 337, 334, - 335, 334, 366, 330, 169, 336, 330, 332, 341, 341, + 321, 328, 322, 327, 324, 333, 331, 326, 336, 332, + 333, 329, 337, 325, 330, 331, 335, 334, 169, 335, + 334, 336, 334, 330, 337, 340, 330, 332, 340, 341, - 337, 330, 330, 330, 330, 339, 338, 334, 338, 338, - 339, 339, 340, 342, 343, 340, 345, 344, 346, 347, - 347, 348, 349, 349, 351, 345, 348, 346, 353, 343, - 342, 350, 350, 342, 344, 344, 352, 354, 355, 351, - 353, 352, 356, 357, 360, 1304, 361, 358, 358, 357, - 358, 361, 369, 369, 362, 1304, 354, 356, 355, 358, - 362, 363, 364, 394, 360, 365, 363, 364, 365, 367, - 365, 368, 367, 364, 372, 370, 371, 371, 375, 372, - 368, 370, 377, 373, 378, 367, 373, 379, 367, 394, - 367, 376, 373, 382, 376, 384, 373, 377, 375, 378, + 341, 330, 330, 330, 330, 334, 339, 338, 334, 338, + 338, 339, 339, 342, 343, 345, 346, 344, 347, 347, + 354, 348, 349, 349, 345, 346, 348, 350, 350, 343, + 342, 351, 352, 342, 344, 344, 353, 352, 355, 354, + 356, 357, 358, 358, 360, 358, 351, 357, 353, 369, + 369, 361, 363, 362, 358, 356, 361, 363, 355, 362, + 364, 366, 375, 365, 360, 364, 365, 367, 365, 368, + 367, 364, 377, 370, 467, 366, 371, 371, 368, 370, + 372, 373, 375, 367, 373, 372, 367, 377, 367, 376, + 373, 379, 376, 378, 373, 381, 467, 382, 381, 373, - 381, 379, 385, 381, 373, 374, 374, 382, 374, 386, - 384, 385, 376, 388, 386, 386, 389, 387, 390, 381, - 392, 374, 395, 387, 374, 167, 374, 391, 374, 383, - 387, 383, 383, 390, 388, 389, 391, 396, 399, 392, - 393, 383, 395, 383, 383, 383, 393, 397, 383, 398, - 400, 396, 401, 397, 398, 402, 403, 397, 399, 404, - 402, 405, 405, 406, 407, 404, 408, 401, 409, 410, - 400, 403, 398, 411, 409, 414, 407, 412, 413, 413, - 408, 413, 412, 406, 415, 416, 423, 420, 417, 411, - 418, 420, 418, 421, 410, 414, 419, 421, 419, 419, + 384, 389, 373, 374, 374, 379, 374, 385, 378, 392, + 376, 382, 386, 388, 381, 384, 385, 386, 386, 374, + 389, 390, 374, 391, 374, 387, 374, 383, 392, 383, + 383, 387, 391, 394, 388, 395, 390, 396, 387, 383, + 398, 383, 383, 383, 393, 398, 383, 397, 399, 400, + 393, 396, 401, 397, 404, 395, 402, 397, 403, 394, + 404, 402, 406, 398, 405, 405, 407, 401, 399, 400, + 408, 409, 410, 403, 411, 412, 414, 409, 407, 415, + 412, 167, 406, 416, 408, 413, 413, 417, 413, 418, + 411, 418, 422, 422, 420, 415, 414, 410, 420, 416, - 415, 416, 417, 422, 422, 423, 424, 425, 426, 428, - 427, 430, 421, 431, 432, 166, 419, 430, 428, 432, - 429, 424, 431, 425, 427, 429, 426, 434, 433, 428, - 436, 428, 433, 429, 429, 435, 434, 429, 429, 437, - 438, 435, 440, 439, 438, 437, 439, 440, 441, 442, - 442, 436, 443, 444, 444, 445, 446, 447, 447, 449, - 445, 448, 450, 449, 451, 443, 452, 448, 441, 446, - 453, 452, 454, 454, 455, 453, 456, 450, 458, 457, - 459, 454, 461, 459, 460, 451, 455, 464, 460, 466, - 458, 462, 462, 463, 461, 470, 456, 457, 463, 465, + 419, 417, 419, 419, 421, 423, 424, 428, 421, 425, + 426, 433, 427, 430, 166, 433, 428, 429, 436, 430, + 419, 424, 429, 421, 423, 425, 427, 428, 426, 428, + 429, 429, 431, 432, 429, 429, 434, 435, 432, 436, + 437, 431, 441, 435, 438, 434, 437, 439, 438, 440, + 439, 442, 442, 443, 440, 444, 444, 446, 445, 447, + 447, 448, 441, 445, 449, 450, 443, 448, 449, 451, + 446, 452, 453, 454, 454, 455, 452, 453, 456, 457, + 450, 458, 454, 459, 460, 465, 459, 455, 461, 460, + 451, 462, 461, 458, 463, 463, 464, 457, 456, 466, - 465, 468, 468, 473, 471, 472, 475, 476, 464, 478, - 474, 466, 471, 479, 472, 474, 470, 480, 481, 476, - 485, 483, 482, 164, 473, 485, 475, 478, 482, 478, - 483, 479, 481, 484, 486, 487, 489, 480, 488, 484, - 490, 488, 492, 487, 493, 491, 487, 493, 486, 495, - 489, 491, 494, 497, 496, 490, 498, 499, 494, 496, - 500, 499, 492, 495, 501, 500, 502, 503, 504, 505, - 508, 502, 511, 525, 525, 497, 494, 498, 509, 501, - 510, 512, 505, 503, 510, 162, 515, 504, 506, 506, - 508, 511, 523, 509, 506, 513, 506, 512, 516, 513, + 466, 464, 471, 462, 469, 469, 465, 472, 473, 474, + 477, 475, 476, 479, 481, 472, 475, 473, 480, 483, + 484, 482, 477, 471, 487, 483, 553, 490, 553, 484, + 474, 479, 476, 479, 481, 482, 480, 485, 487, 486, + 488, 490, 489, 485, 486, 489, 491, 492, 488, 493, + 495, 488, 494, 492, 496, 494, 495, 497, 498, 500, + 499, 491, 497, 500, 502, 501, 503, 504, 496, 493, + 501, 503, 505, 506, 495, 509, 552, 512, 514, 502, + 498, 499, 510, 504, 511, 513, 506, 517, 511, 552, + 513, 505, 507, 507, 514, 509, 512, 510, 507, 515, - 514, 515, 506, 516, 506, 514, 517, 506, 506, 514, - 518, 520, 519, 521, 506, 523, 524, 522, 519, 518, - 522, 526, 517, 519, 528, 517, 520, 527, 527, 521, - 529, 531, 530, 532, 534, 533, 524, 535, 536, 528, - 533, 559, 529, 534, 559, 537, 526, 530, 539, 543, - 531, 537, 544, 536, 540, 532, 535, 539, 540, 541, - 542, 543, 545, 541, 546, 547, 542, 544, 548, 549, - 550, 553, 551, 549, 551, 554, 554, 556, 546, 553, - 547, 545, 555, 550, 557, 558, 548, 560, 555, 556, - 557, 561, 563, 562, 564, 563, 565, 558, 562, 566, + 507, 519, 517, 515, 516, 518, 507, 520, 507, 516, + 518, 507, 507, 516, 522, 521, 520, 519, 507, 523, + 519, 521, 524, 525, 526, 524, 521, 527, 527, 522, + 528, 529, 529, 530, 533, 523, 532, 531, 534, 537, + 535, 536, 538, 541, 526, 535, 525, 164, 530, 531, + 536, 532, 541, 533, 545, 528, 539, 538, 537, 542, + 534, 543, 539, 542, 544, 543, 545, 546, 547, 548, + 544, 549, 550, 551, 556, 556, 555, 551, 162, 557, + 558, 560, 546, 548, 555, 557, 549, 547, 559, 562, + 550, 563, 558, 560, 559, 561, 564, 565, 561, 566, - 611, 560, 567, 564, 566, 566, 561, 568, 568, 611, - 564, 575, 565, 564, 570, 567, 569, 569, 571, 571, - 570, 572, 572, 573, 576, 574, 579, 580, 578, 573, - 574, 574, 575, 578, 577, 580, 576, 577, 581, 582, - 583, 581, 584, 585, 582, 579, 586, 585, 588, 587, - 589, 590, 586, 587, 592, 589, 591, 591, 593, 594, - 595, 584, 596, 583, 594, 590, 588, 597, 160, 592, - 598, 599, 604, 597, 601, 598, 595, 603, 600, 593, - 607, 600, 596, 602, 602, 599, 600, 608, 604, 600, - 600, 605, 601, 606, 607, 603, 605, 610, 606, 617, + 565, 564, 578, 562, 567, 568, 563, 160, 566, 569, + 568, 568, 570, 570, 578, 566, 571, 571, 566, 572, + 567, 577, 569, 573, 573, 572, 574, 574, 575, 579, + 576, 581, 579, 580, 575, 576, 576, 582, 580, 584, + 583, 585, 577, 583, 584, 582, 586, 587, 588, 589, + 581, 587, 590, 589, 588, 591, 595, 592, 593, 593, + 591, 594, 596, 597, 585, 586, 598, 596, 599, 601, + 590, 592, 603, 600, 599, 606, 594, 595, 600, 597, + 605, 602, 609, 601, 602, 85, 598, 604, 604, 602, + 603, 606, 602, 602, 607, 608, 609, 610, 605, 607, - 618, 612, 608, 610, 612, 613, 614, 615, 616, 613, - 615, 614, 619, 616, 620, 617, 621, 622, 618, 619, - 624, 621, 623, 623, 625, 626, 627, 620, 628, 624, - 629, 613, 630, 635, 643, 627, 629, 622, 630, 631, - 628, 626, 631, 625, 632, 632, 633, 632, 634, 633, - 636, 635, 637, 634, 638, 639, 641, 637, 640, 643, - 650, 639, 641, 640, 636, 642, 644, 646, 642, 645, - 647, 644, 648, 638, 645, 645, 649, 648, 651, 650, - 646, 652, 649, 647, 653, 662, 652, 651, 654, 654, - 655, 648, 648, 656, 657, 658, 656, 655, 659, 664, + 608, 612, 613, 614, 615, 616, 614, 612, 615, 618, + 616, 613, 610, 617, 618, 619, 617, 620, 621, 622, + 624, 623, 625, 625, 626, 621, 623, 627, 628, 629, + 615, 619, 622, 626, 630, 620, 631, 80, 632, 634, + 624, 633, 634, 630, 632, 629, 627, 633, 631, 628, + 635, 635, 636, 635, 637, 636, 638, 639, 640, 637, + 641, 642, 644, 640, 643, 646, 653, 642, 644, 643, + 645, 639, 647, 645, 638, 648, 649, 647, 650, 641, + 648, 648, 651, 655, 654, 653, 652, 651, 655, 649, + 646, 650, 652, 654, 656, 657, 657, 658, 661, 660, - 657, 661, 661, 659, 653, 666, 663, 658, 663, 660, - 662, 656, 667, 659, 660, 660, 668, 665, 664, 665, - 669, 670, 671, 666, 673, 672, 676, 674, 671, 672, - 667, 675, 677, 673, 668, 678, 681, 679, 686, 669, - 683, 670, 674, 680, 676, 682, 675, 678, 684, 680, - 681, 677, 679, 687, 685, 688, 686, 682, 685, 683, - 689, 690, 692, 691, 693, 693, 694, 684, 691, 687, - 694, 695, 696, 688, 698, 697, 692, 699, 689, 689, - 690, 700, 699, 701, 85, 695, 697, 702, 698, 703, - 704, 696, 705, 706, 708, 704, 703, 700, 706, 705, + 659, 651, 651, 659, 658, 660, 662, 663, 664, 664, + 661, 662, 663, 663, 656, 665, 667, 666, 659, 666, + 668, 662, 668, 669, 670, 671, 672, 673, 674, 675, + 676, 677, 679, 675, 674, 667, 678, 680, 682, 676, + 665, 669, 670, 671, 684, 672, 677, 673, 681, 683, + 679, 678, 685, 682, 686, 683, 680, 687, 684, 689, + 681, 688, 694, 689, 685, 690, 691, 692, 693, 695, + 696, 697, 697, 686, 695, 698, 699, 700, 687, 698, + 688, 694, 691, 690, 696, 692, 693, 693, 701, 702, + 699, 704, 703, 705, 707, 706, 700, 703, 712, 701, - 702, 707, 701, 709, 710, 711, 707, 712, 713, 714, - 709, 716, 708, 710, 716, 714, 712, 715, 718, 711, - 713, 717, 715, 720, 719, 717, 721, 722, 723, 723, - 724, 724, 718, 719, 725, 725, 726, 727, 720, 724, - 721, 726, 729, 730, 731, 733, 727, 732, 722, 730, - 734, 732, 735, 736, 737, 739, 738, 733, 740, 736, - 741, 729, 737, 738, 731, 747, 744, 750, 751, 754, - 735, 753, 755, 739, 751, 734, 750, 753, 754, 759, - 741, 744, 747, 740, 742, 761, 742, 756, 755, 742, - 759, 756, 760, 742, 757, 757, 742, 758, 758, 761, + 708, 707, 709, 702, 715, 708, 710, 704, 706, 709, + 711, 710, 705, 713, 714, 711, 712, 716, 715, 717, + 713, 718, 720, 714, 719, 720, 716, 718, 721, 719, + 722, 717, 721, 723, 724, 726, 725, 727, 727, 728, + 728, 735, 723, 733, 722, 729, 729, 730, 728, 724, + 725, 731, 730, 734, 736, 737, 726, 738, 736, 734, + 731, 735, 733, 739, 740, 741, 743, 737, 742, 744, + 740, 745, 748, 741, 754, 742, 751, 761, 761, 755, + 757, 739, 738, 754, 743, 755, 757, 748, 760, 758, + 759, 745, 760, 751, 744, 746, 766, 746, 758, 763, - 762, 763, 773, 742, 742, 766, 742, 763, 765, 767, - 760, 768, 769, 765, 770, 768, 772, 773, 770, 771, - 762, 764, 764, 764, 771, 764, 766, 767, 764, 774, - 778, 778, 779, 764, 770, 772, 769, 776, 775, 764, - 764, 775, 776, 776, 777, 780, 788, 779, 781, 781, - 780, 777, 782, 783, 774, 784, 783, 782, 785, 785, - 784, 786, 787, 786, 789, 788, 790, 792, 789, 791, - 793, 793, 794, 797, 787, 792, 795, 796, 796, 799, - 798, 802, 802, 800, 813, 813, 790, 794, 791, 800, - 795, 797, 798, 801, 803, 814, 814, 805, 801, 803, + 746, 762, 762, 764, 746, 765, 759, 746, 769, 770, + 763, 773, 767, 769, 746, 746, 766, 746, 767, 765, + 771, 764, 768, 768, 768, 776, 768, 772, 774, 768, + 770, 772, 774, 778, 768, 773, 777, 775, 771, 1088, + 768, 768, 775, 779, 776, 783, 779, 780, 774, 781, + 1088, 777, 780, 780, 782, 782, 781, 784, 778, 792, + 783, 786, 784, 785, 785, 787, 786, 788, 787, 789, + 789, 790, 788, 790, 791, 793, 794, 796, 792, 793, + 795, 797, 797, 798, 801, 796, 791, 799, 800, 800, + 803, 802, 805, 854, 804, 854, 794, 805, 798, 795, - 803, 799, 805, 806, 807, 810, 808, 809, 810, 806, - 807, 808, 811, 809, 812, 815, 816, 819, 811, 817, - 818, 820, 812, 815, 817, 821, 827, 818, 822, 822, - 823, 832, 824, 831, 816, 819, 832, 820, 829, 823, - 824, 825, 825, 826, 821, 827, 830, 829, 834, 826, - 833, 834, 836, 835, 837, 830, 838, 831, 835, 833, - 839, 842, 840, 841, 841, 838, 836, 840, 840, 843, - 845, 844, 846, 839, 847, 851, 842, 847, 853, 837, - 844, 849, 854, 849, 852, 847, 850, 850, 843, 852, - 846, 855, 856, 857, 845, 858, 851, 859, 861, 853, + 804, 799, 801, 802, 806, 806, 809, 811, 807, 810, + 812, 809, 803, 807, 807, 810, 812, 813, 814, 816, + 815, 817, 813, 815, 814, 816, 811, 818, 818, 817, + 819, 819, 820, 821, 822, 823, 824, 825, 826, 822, + 820, 828, 823, 827, 827, 830, 830, 829, 832, 836, + 828, 821, 831, 825, 824, 829, 834, 826, 831, 835, + 838, 837, 841, 842, 844, 834, 837, 832, 835, 838, + 840, 839, 843, 836, 839, 840, 841, 844, 845, 846, + 846, 843, 847, 845, 845, 848, 849, 850, 842, 851, + 852, 855, 855, 852, 856, 849, 858, 847, 857, 859, - 862, 860, 854, 863, 858, 860, 864, 866, 80, 863, - 865, 855, 868, 857, 856, 864, 861, 867, 868, 862, - 859, 869, 865, 870, 871, 871, 866, 872, 870, 873, - 874, 867, 875, 876, 877, 869, 878, 879, 873, 880, - 875, 885, 881, 883, 882, 880, 884, 872, 881, 883, - 874, 889, 890, 876, 892, 878, 877, 879, 882, 886, - 884, 885, 887, 888, 890, 886, 891, 888, 887, 896, - 889, 891, 890, 893, 893, 892, 894, 895, 897, 898, - 895, 899, 894, 900, 900, 898, 901, 896, 902, 903, - 904, 897, 908, 902, 905, 904, 904, 909, 906, 907, + 860, 852, 861, 857, 848, 862, 864, 851, 865, 863, + 866, 850, 865, 867, 869, 856, 868, 858, 863, 859, + 860, 870, 868, 869, 861, 862, 871, 872, 866, 864, + 873, 877, 867, 870, 874, 875, 873, 876, 876, 878, + 875, 872, 879, 880, 881, 871, 882, 883, 874, 884, + 877, 879, 881, 885, 886, 887, 888, 890, 889, 878, + 886, 887, 891, 880, 889, 895, 882, 75, 884, 883, + 888, 890, 892, 885, 893, 894, 896, 898, 892, 894, + 893, 897, 891, 902, 895, 900, 897, 903, 896, 899, + 899, 900, 901, 904, 905, 901, 896, 907, 898, 904, - 907, 899, 906, 910, 901, 903, 911, 903, 910, 905, - 913, 916, 914, 917, 908, 918, 921, 909, 920, 920, - 921, 923, 923, 922, 916, 911, 914, 924, 925, 926, - 928, 927, 925, 917, 913, 928, 918, 919, 922, 934, - 919, 929, 919, 942, 926, 927, 919, 932, 919, 942, - 931, 930, 924, 919, 934, 929, 930, 930, 919, 931, - 933, 932, 935, 936, 933, 937, 938, 935, 939, 940, - 937, 949, 941, 943, 951, 936, 933, 935, 943, 944, - 938, 941, 945, 940, 950, 944, 946, 946, 945, 939, - 947, 948, 951, 949, 953, 947, 954, 948, 75, 955, + 903, 902, 906, 906, 908, 909, 910, 911, 914, 908, + 917, 910, 910, 912, 905, 907, 915, 912, 913, 913, + 916, 909, 911, 909, 919, 916, 920, 923, 922, 917, + 914, 924, 926, 926, 927, 928, 915, 74, 927, 932, + 920, 922, 929, 929, 934, 930, 933, 923, 919, 934, + 928, 931, 924, 925, 932, 931, 925, 935, 925, 937, + 933, 936, 925, 938, 925, 940, 936, 936, 937, 925, + 930, 935, 939, 942, 925, 944, 939, 938, 941, 943, + 940, 945, 946, 941, 943, 942, 947, 949, 939, 944, + 955, 948, 949, 941, 950, 947, 946, 948, 951, 956, - 961, 954, 956, 950, 952, 952, 953, 957, 957, 959, - 952, 958, 952, 955, 956, 960, 958, 959, 952, 961, - 962, 963, 964, 952, 952, 967, 965, 969, 964, 960, - 952, 965, 966, 968, 970, 970, 971, 963, 972, 962, - 971, 974, 976, 967, 966, 969, 978, 974, 975, 968, - 977, 975, 980, 981, 979, 977, 983, 980, 972, 978, - 979, 976, 984, 985, 986, 983, 987, 988, 989, 990, - 986, 984, 981, 989, 991, 987, 992, 997, 993, 985, - 74, 996, 994, 995, 1000, 1003, 988, 996, 991, 990, - 993, 994, 995, 998, 997, 1002, 992, 1004, 1005, 998, + 950, 954, 945, 953, 951, 952, 952, 954, 953, 957, + 959, 960, 955, 962, 963, 963, 960, 961, 956, 964, + 967, 966, 959, 68, 964, 962, 968, 957, 958, 958, + 965, 961, 972, 969, 958, 966, 958, 970, 965, 967, + 973, 971, 958, 970, 972, 968, 971, 958, 958, 969, + 974, 975, 976, 976, 958, 977, 978, 980, 973, 977, + 982, 981, 983, 980, 981, 984, 974, 983, 985, 975, + 986, 987, 989, 990, 985, 986, 978, 991, 984, 982, + 992, 989, 990, 993, 994, 996, 992, 997, 998, 995, + 987, 1000, 993, 991, 995, 999, 1002, 1001, 1003, 1008, - 1000, 1006, 1007, 1008, 1013, 1003, 1009, 1017, 1008, 1002, - 1012, 1009, 1005, 1013, 1016, 1012, 1004, 1007, 1015, 1006, - 1014, 1014, 1017, 1016, 1015, 1018, 1020, 1021, 1026, 1025, - 1023, 1023, 1021, 1021, 1023, 1027, 1024, 1028, 1018, 1024, - 1029, 1030, 1020, 1025, 1031, 1032, 1033, 1034, 1026, 1035, - 1031, 1027, 1033, 1029, 1035, 1028, 1030, 1036, 1038, 1039, - 1042, 1038, 1034, 1040, 1041, 1032, 1043, 1044, 1040, 1041, - 1046, 1036, 1044, 1045, 1049, 1043, 1042, 1048, 1045, 1050, - 1039, 1051, 1046, 1048, 1053, 1050, 1054, 1051, 1052, 1052, - 1049, 1055, 1057, 1053, 1055, 1056, 1056, 1058, 1059, 1060, + 1000, 997, 1002, 994, 1004, 996, 1001, 999, 998, 1006, + 1004, 1009, 1010, 1008, 1011, 1003, 1012, 1010, 1013, 1014, + 1020, 1015, 1016, 1019, 63, 1006, 1015, 1016, 1019, 1020, + 1012, 1009, 1024, 1011, 1014, 1022, 1013, 1021, 1021, 1023, + 1025, 1022, 1027, 1031, 1028, 1032, 1031, 1024, 1023, 1028, + 1028, 1030, 1030, 1025, 1033, 1030, 1034, 1035, 1027, 1032, + 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1038, 1046, + 1040, 1042, 1034, 1036, 1033, 1035, 1037, 1049, 1050, 1045, + 1041, 1043, 1045, 1039, 1047, 1061, 1048, 1050, 1053, 1047, + 1046, 1048, 1051, 1049, 1052, 1055, 1056, 1051, 1057, 1052, - 1061, 1062, 1060, 1063, 1054, 1069, 1064, 1062, 1070, 1063, - 1057, 1064, 1065, 1061, 1066, 1067, 1058, 1065, 1059, 1066, - 1071, 1067, 1072, 1069, 1073, 1073, 1071, 1072, 1070, 1074, - 1075, 1076, 1077, 1078, 1079, 1080, 1078, 1079, 1074, 1075, - 1081, 1082, 1083, 1084, 1085, 1081, 1080, 1086, 1087, 1076, - 1085, 1077, 1088, 1086, 1083, 1089, 1089, 1088, 1090, 1082, - 1091, 1092, 1084, 1087, 1093, 1094, 1095, 1096, 1093, 1097, - 1099, 1100, 1100, 1092, 1091, 1095, 1101, 1090, 1103, 1102, - 1106, 1101, 1105, 1094, 1102, 1107, 1096, 1108, 1111, 1099, - 1109, 1114, 1108, 68, 1097, 1106, 1105, 1107, 1103, 1109, + 1053, 1055, 1058, 1061, 1057, 1059, 1059, 1060, 1058, 1064, + 1062, 1065, 1056, 1062, 1063, 1063, 1060, 1066, 1067, 1068, + 1069, 1067, 1070, 1077, 1071, 1078, 1069, 1064, 1070, 1071, + 1065, 1072, 1068, 1073, 1074, 1084, 1072, 1066, 1073, 1076, + 1074, 1077, 1079, 1082, 1076, 1078, 1080, 1083, 1079, 1081, + 1081, 1080, 1082, 1084, 1085, 1086, 1083, 1087, 1086, 1089, + 1087, 1090, 1091, 1092, 1089, 1093, 1094, 1098, 1095, 1100, + 1096, 1093, 1094, 1085, 1091, 1096, 1097, 1097, 1099, 1090, + 1101, 1100, 1092, 1095, 1101, 1102, 1098, 1103, 1104, 1105, + 1107, 1111, 1099, 1108, 1108, 1109, 1103, 1110, 1113, 1116, - 1110, 1110, 1118, 1112, 1113, 1119, 1115, 1114, 1111, 1112, - 1113, 1115, 1116, 1117, 1116, 1120, 1118, 1121, 1117, 1119, - 1120, 1122, 1123, 1124, 1125, 1127, 1127, 1128, 1129, 1123, - 1130, 1131, 1121, 1132, 1255, 1135, 1255, 1131, 1124, 1135, - 1122, 1128, 1133, 1125, 1142, 1130, 1129, 1133, 1136, 1136, - 1137, 1138, 1138, 1132, 1140, 1137, 1133, 1139, 1133, 1141, - 1143, 1133, 1141, 1142, 1139, 1144, 1145, 1146, 1140, 1147, - 1148, 1145, 1150, 1149, 1144, 1148, 1151, 1154, 1143, 1153, - 1153, 1147, 1154, 1150, 1155, 1156, 1146, 1149, 1157, 1155, - 1158, 1159, 1160, 1157, 1158, 1151, 1161, 1162, 1163, 1164, + 1109, 1114, 1110, 1102, 1116, 1115, 1117, 1104, 1119, 1107, + 58, 1111, 1113, 1122, 1105, 1117, 1114, 1115, 1118, 1118, + 1120, 1121, 1124, 1126, 1124, 1123, 1120, 1121, 1119, 1122, + 1123, 1125, 1127, 1128, 1129, 1130, 1125, 1126, 1128, 1133, + 1131, 1132, 1135, 1135, 1137, 1136, 1127, 1131, 1138, 1129, + 1140, 1139, 1144, 1144, 1130, 1141, 1132, 1139, 1133, 1136, + 1141, 1143, 1137, 1138, 1148, 1143, 1147, 1145, 1150, 1141, + 1140, 1141, 1145, 1147, 1141, 1146, 1146, 1149, 1148, 1151, + 1149, 1152, 1154, 1153, 1155, 1157, 1156, 1150, 1153, 1158, + 1152, 1156, 1159, 1161, 1161, 1164, 1155, 1151, 1162, 1157, - 1159, 1165, 1167, 1166, 1168, 1156, 1169, 1160, 1165, 1172, - 1163, 1161, 1170, 1171, 1164, 1166, 1162, 1173, 1170, 1175, - 1176, 1167, 1174, 1177, 1169, 1168, 1178, 1179, 1171, 1172, - 1181, 1174, 1180, 1184, 1175, 1177, 1183, 1173, 1186, 1176, - 1185, 1187, 1183, 1188, 1189, 1178, 1186, 1180, 1184, 1189, - 1181, 1190, 1179, 1192, 1185, 1193, 1199, 1194, 1197, 1188, - 1191, 1187, 1199, 1190, 63, 1191, 1191, 1195, 1195, 1193, - 1194, 1197, 1192, 1196, 1196, 1198, 1200, 1200, 1196, 1202, - 1201, 1196, 1196, 1203, 1198, 1201, 1196, 1207, 1202, 1203, - 1204, 1210, 1196, 1205, 1211, 1204, 1196, 1212, 1205, 1206, + 1158, 1154, 1163, 1162, 1165, 1167, 1166, 1163, 1168, 1165, + 1166, 1159, 1169, 1170, 1167, 1164, 1171, 1173, 1172, 1174, + 1175, 1176, 1177, 1168, 1173, 1180, 1179, 1169, 1171, 1178, + 1181, 1174, 1170, 1172, 1182, 1178, 1183, 1184, 1186, 1175, + 1177, 1179, 1176, 1182, 1187, 1180, 1185, 1188, 1189, 1191, + 1181, 1183, 1192, 1194, 1195, 1191, 1184, 1186, 1185, 1193, + 1196, 1194, 1188, 1198, 1200, 1197, 1199, 1192, 1189, 1187, + 1197, 1199, 1199, 1193, 1195, 1198, 1196, 1201, 1206, 1202, + 1203, 1203, 1205, 1200, 1207, 1208, 1208, 1206, 1210, 57, + 1207, 1201, 1202, 1204, 1204, 1205, 1215, 1210, 1204, 1209, - 1206, 1208, 1208, 1213, 1209, 1214, 1212, 1209, 1207, 1209, - 1214, 1210, 1211, 1215, 1216, 1217, 1218, 1221, 1274, 1219, - 1274, 1217, 1218, 1213, 1219, 1220, 1221, 1215, 1223, 1220, - 1230, 1221, 1216, 1221, 1222, 1221, 1226, 1221, 1229, 1222, - 1224, 1224, 1223, 1225, 1225, 1228, 1225, 1226, 1230, 1228, - 1231, 1232, 1233, 1229, 1234, 1235, 1232, 1232, 1236, 1231, - 1235, 1233, 1237, 1238, 1239, 1240, 1243, 1241, 1242, 1242, - 1244, 1237, 1236, 1241, 1243, 1245, 1234, 1246, 1247, 1240, - 1245, 1248, 1238, 1239, 1244, 1249, 1250, 1247, 1248, 1251, - 1253, 1246, 1252, 1252, 1251, 1254, 1254, 1257, 1259, 1258, + 1212, 1204, 1204, 1211, 1209, 1212, 1204, 1218, 1213, 1211, + 1214, 1214, 1204, 1213, 1216, 1216, 1204, 1215, 1217, 1219, + 1220, 1217, 1221, 1217, 1222, 1223, 1220, 1218, 1224, 1225, + 1223, 1221, 1226, 1227, 1230, 1228, 52, 1219, 1226, 1227, + 1228, 1229, 1224, 1230, 1222, 1229, 1231, 1225, 1230, 1232, + 1230, 1231, 1230, 1235, 1230, 1233, 1233, 1234, 1234, 1238, + 1234, 1237, 1239, 1232, 1235, 1237, 1240, 1241, 1242, 1243, + 1245, 1244, 1241, 1241, 1238, 1240, 1244, 1242, 1246, 1247, + 1239, 1248, 1249, 1250, 1245, 1251, 1251, 1246, 1253, 1250, + 1254, 1243, 1255, 1252, 1256, 1254, 1249, 1257, 1247, 1258, - 1257, 1260, 1262, 1249, 1258, 1253, 1261, 1261, 1263, 1263, - 1260, 1250, 1264, 1264, 1265, 1266, 1267, 1259, 1269, 1265, - 1268, 1268, 1262, 1270, 1271, 1272, 1270, 1275, 1278, 1277, - 1272, 1273, 1277, 1280, 1279, 58, 1266, 1267, 1269, 1279, - 1273, 1281, 1282, 1278, 1271, 1275, 1281, 1280, 1283, 1284, - 1282, 1285, 1284, 1283, 1286, 1286, 1285, 1287, 1288, 1289, - 1290, 1291, 1287, 1293, 1294, 1289, 1295, 1290, 1297, 1293, - 1294, 1295, 1296, 1298, 1291, 1299, 1288, 1297, 1296, 1300, - 1300, 1301, 1303, 1305, 1306, 1307, 1299, 1308, 1309, 1310, - 1312, 1313, 1298, 1308, 1309, 1310, 1312, 1314, 1305, 1315, + 1248, 1252, 1253, 1256, 1257, 1259, 1255, 1260, 1261, 1261, + 1262, 1271, 1260, 1263, 1263, 1267, 1264, 1258, 1264, 1266, + 1267, 1268, 1266, 1269, 1275, 1262, 1270, 1270, 1272, 1272, + 1259, 1271, 1269, 1273, 1273, 1276, 1274, 1277, 1277, 1278, + 1268, 1274, 1280, 1279, 1281, 1275, 1279, 1282, 1283, 1284, + 1281, 1284, 1282, 1285, 1288, 1287, 1276, 1283, 1287, 1278, + 1289, 1290, 1280, 1291, 1292, 1289, 1298, 1294, 1291, 1288, + 1294, 1285, 1292, 1293, 1295, 1290, 1296, 1296, 1293, 1295, + 1297, 1299, 1300, 1301, 1298, 1297, 1303, 1299, 1304, 1300, + 1305, 1306, 1303, 1307, 1304, 1305, 1301, 1306, 1308, 1309, - 1303, 1301, 1316, 1318, 1306, 1313, 1317, 1320, 1307, 1319, - 1319, 1313, 1321, 1322, 1316, 1324, 1324, 1314, 1323, 1315, - 1317, 1318, 1325, 1323, 1326, 1328, 1331, 1320, 1329, 1326, - 1330, 1322, 1332, 1329, 1329, 1331, 1333, 1321, 1334, 1335, - 1332, 1336, 1337, 1346, 1328, 1325, 1336, 1339, 1330, 1336, - 1333, 1337, 1343, 1334, 1335, 1345, 1338, 1335, 1338, 1341, - 1342, 1339, 1344, 1343, 1342, 1341, 1347, 1344, 1344, 1346, - 1348, 1349, 1350, 1351, 1345, 1348, 1349, 1352, 1353, 1356, - 1355, 1357, 1352, 1359, 1347, 1358, 1358, 1359, 1360, 1361, - 1350, 1363, 1364, 1351, 1355, 1362, 1365, 1356, 1353, 1357, + 1310, 1310, 1307, 1311, 1313, 1314, 1315, 1316, 1317, 1324, + 1309, 47, 1318, 1319, 1320, 1314, 1325, 1308, 1318, 1319, + 1320, 1315, 1313, 1311, 1322, 1323, 1326, 1316, 1327, 1324, + 1322, 1317, 1328, 1329, 1329, 1330, 1325, 1331, 1326, 1323, + 1332, 1333, 1327, 1334, 1334, 1323, 1333, 1335, 1336, 1338, + 1328, 1339, 1341, 1336, 1340, 1330, 1339, 1339, 1332, 1342, + 1343, 1341, 1331, 1344, 1345, 1356, 18, 1342, 1338, 1348, + 1335, 1348, 1340, 1349, 1343, 1346, 1347, 1352, 1344, 1345, + 1346, 1352, 1345, 1346, 1351, 1347, 1353, 1349, 1354, 1355, + 1351, 1356, 1357, 1354, 1354, 1358, 1359, 1353, 1360, 1361, - 1366, 1362, 1367, 1363, 1368, 1377, 1360, 1369, 1361, 1370, - 1365, 1364, 1369, 1371, 1372, 1366, 1370, 1367, 1371, 1373, - 1374, 1374, 1375, 1368, 1376, 1377, 1378, 1378, 1373, 1379, - 1380, 1381, 1372, 1376, 1383, 1379, 1380, 1375, 1382, 1382, - 1383, 1384, 1385, 1386, 1387, 1381, 1388, 1389, 1386, 1396, - 1387, 57, 1388, 1389, 1390, 1390, 1395, 1384, 1391, 1391, - 1393, 1393, 1394, 1385, 1397, 1395, 1394, 1396, 1398, 1399, - 1400, 1401, 1401, 1402, 1404, 1403, 1397, 1400, 1405, 1404, - 1406, 1407, 1398, 1403, 1399, 1408, 1407, 1407, 1409, 1413, - 1408, 1408, 1405, 1402, 1410, 1410, 1411, 1412, 1413, 1406, + 1358, 1359, 1362, 1363, 1365, 17, 1366, 1362, 1355, 1367, + 1357, 1368, 1368, 1369, 1370, 1371, 1360, 1369, 1365, 1361, + 1372, 1373, 1374, 1363, 1366, 1375, 1372, 1367, 1376, 1377, + 1378, 1379, 1370, 1373, 1371, 1380, 1379, 1382, 1383, 1375, + 1381, 1374, 1380, 1376, 1377, 1381, 1385, 1383, 1386, 1378, + 1384, 1384, 1387, 1388, 1388, 1382, 1389, 1386, 1390, 1391, + 1394, 1385, 1389, 1393, 1390, 1392, 1392, 1395, 1397, 1393, + 1396, 1398, 1387, 1391, 1397, 1396, 1394, 1398, 1399, 1400, + 1400, 1401, 1401, 1404, 1399, 1403, 1403, 1404, 1395, 1405, + 1406, 1407, 1408, 1410, 1409, 1411, 1411, 1412, 1405, 1413, - 1414, 1415, 1416, 1417, 1418, 1414, 1419, 1420, 1409, 1422, - 1418, 1419, 1421, 1423, 1430, 1411, 1412, 1424, 1421, 1423, - 1415, 1417, 1416, 1424, 1425, 1426, 1427, 1428, 1422, 1432, - 1432, 1434, 1431, 1420, 1429, 1430, 1433, 1435, 1441, 1433, - 1436, 1437, 1437, 1425, 1426, 1427, 1428, 1431, 1429, 1442, - 1434, 1441, 1436, 1438, 1438, 1439, 1435, 1440, 1442, 1443, - 1439, 1440, 1444, 1448, 1444, 1446, 1447, 1449, 1444, 1450, - 1452, 1447, 1443, 1451, 1451, 1452, 1453, 1454, 1448, 1456, - 1455, 1444, 1453, 1446, 1456, 1450, 1457, 1449, 1459, 1460, - 1457, 1458, 1454, 1455, 1461, 1458, 1462, 1466, 1463, 1464, + 1410, 1415, 1416, 1407, 1419, 1414, 1408, 1413, 1406, 1409, + 1414, 1420, 1420, 1417, 1421, 1415, 1422, 1412, 1417, 1417, + 1418, 1416, 1423, 1424, 1419, 1418, 1418, 1425, 1424, 1426, + 1427, 1423, 1428, 1421, 1429, 1422, 1430, 1431, 1428, 1429, + 1433, 1432, 1436, 1437, 1434, 1435, 1425, 1432, 1427, 1426, + 1434, 1435, 1438, 1439, 1440, 1441, 1430, 1444, 1442, 1433, + 1444, 1436, 1437, 1431, 1443, 1443, 1445, 1446, 1440, 1447, + 0, 1438, 1439, 1442, 1448, 1448, 1441, 1449, 1449, 1450, + 1452, 1447, 1453, 1451, 1450, 1445, 1446, 1451, 1454, 1457, + 1455, 1453, 1455, 1452, 1458, 1459, 1455, 1460, 1461, 1458, - 1464, 1468, 52, 1461, 1463, 1469, 1472, 1460, 1459, 1482, - 1469, 1470, 1470, 1471, 1478, 1466, 1462, 1474, 1474, 1471, - 1476, 1479, 1468, 1476, 1477, 1477, 1472, 1483, 1481, 1482, - 1478, 1481, 1484, 1484, 1485, 1486, 1483, 1479, 1487, 1488, - 1489, 1490, 1490, 1491, 1488, 1492, 1493, 1494, 1495, 1485, - 1496, 1496, 1491, 1497, 1489, 1498, 1486, 1487, 1502, 1499, - 1500, 1493, 1502, 1492, 1499, 1501, 1501, 1497, 1495, 1503, - 1504, 1504, 1494, 1498, 1505, 1500, 1506, 1507, 1508, 1509, - 1512, 1507, 1511, 1511, 1509, 1513, 1514, 1506, 1515, 1503, - 1513, 1516, 1517, 1512, 1518, 1519, 1505, 1508, 1520, 1520, + 1463, 1454, 1462, 1462, 1465, 1463, 1464, 1457, 1466, 1455, + 1459, 1467, 1464, 1470, 1461, 1473, 1467, 1460, 1468, 1465, + 1469, 1466, 1468, 1471, 1469, 1472, 1474, 1475, 1475, 1477, + 1479, 1480, 1474, 1470, 1472, 1473, 1480, 1481, 1481, 1482, + 1483, 1471, 1485, 1485, 1497, 1482, 1487, 1477, 1489, 1487, + 1490, 1479, 1488, 1488, 1492, 1493, 1494, 1492, 1495, 1497, + 1483, 1496, 1496, 1498, 1489, 1494, 1490, 1499, 1500, 1501, + 1502, 1502, 1503, 1500, 1504, 1493, 1505, 1506, 1495, 1507, + 1509, 1503, 1510, 1501, 1498, 1511, 1499, 1508, 1508, 1512, + 1511, 1505, 1504, 1514, 1509, 1513, 1513, 1514, 1515, 1507, - 1536, 1522, 1514, 1523, 1521, 1516, 1515, 1525, 1518, 1521, - 1526, 1517, 1517, 1524, 1524, 1526, 1525, 1527, 1531, 1536, - 1519, 1522, 1528, 1523, 1528, 1529, 1530, 1532, 1534, 1540, - 1529, 1539, 1530, 1532, 1535, 1535, 1539, 1527, 1531, 1537, - 1541, 1541, 1534, 1542, 1542, 1537, 1543, 1544, 1545, 1546, - 1547, 1547, 1546, 1540, 1548, 1549, 1550, 1553, 1552, 1558, - 1543, 1556, 1553, 1545, 1552, 1544, 1554, 1549, 1551, 1554, - 1556, 1551, 1548, 1557, 1551, 1589, 1550, 1559, 1557, 1589, - 1559, 1560, 1560, 1561, 1558, 1554, 1551, 1562, 1566, 1561, - 1563, 1564, 1564, 1562, 1566, 1563, 1565, 1565, 1567, 1568, + 1510, 1517, 1506, 1518, 1512, 1516, 1516, 1519, 1520, 1524, + 1521, 1519, 1523, 1523, 1518, 1521, 1525, 1526, 1515, 1527, + 1528, 1525, 1524, 1517, 1529, 1530, 1531, 1520, 1532, 1532, + 1533, 0, 1534, 1526, 1528, 1533, 1535, 1527, 1537, 1530, + 1536, 1536, 1539, 1529, 1529, 1538, 1540, 1537, 1540, 1541, + 1538, 1531, 1534, 1542, 1541, 1543, 1535, 1544, 1546, 1542, + 1547, 1547, 1539, 1544, 1548, 1549, 1552, 1555, 1551, 1553, + 1553, 1549, 1546, 1551, 1556, 1543, 1554, 1554, 1557, 1558, + 1560, 1555, 1558, 1548, 1559, 1559, 1562, 1561, 1570, 1564, + 1552, 1563, 1556, 1557, 1563, 1564, 1565, 1563, 1560, 1561, - 1569, 1570, 1571, 1567, 1572, 1573, 1577, 1572, 1574, 1581, - 1575, 1573, 1568, 1576, 1574, 1575, 1578, 1582, 1569, 1576, - 1570, 1578, 1571, 1579, 1579, 1580, 1583, 1581, 1584, 1577, - 1580, 1585, 1587, 1586, 1588, 1591, 1590, 1582, 1590, 1593, - 1594, 1597, 1584, 1595, 1598, 1585, 1583, 1586, 1599, 1596, - 1587, 1593, 1594, 1600, 1591, 1596, 1595, 1601, 1608, 1588, - 1598, 1597, 1603, 1603, 1604, 1605, 1609, 1600, 1599, 1606, - 1605, 1607, 1607, 1608, 1610, 1611, 1612, 1613, 1601, 1614, - 1609, 1606, 1615, 1616, 1604, 1612, 1614, 1618, 1620, 1622, - 1622, 1615, 1613, 1611, 1615, 1623, 1623, 1621, 1610, 1616, + 1566, 1565, 1568, 1566, 1571, 1569, 1562, 1571, 1580, 1563, + 1569, 1568, 1573, 1570, 1572, 1572, 1574, 1582, 1573, 1566, + 1575, 1580, 1574, 1576, 1576, 1575, 1577, 1577, 1578, 1581, + 1579, 1583, 1585, 1586, 1578, 1579, 1582, 1584, 1585, 1586, + 1584, 1587, 1588, 1589, 1590, 1592, 1587, 1581, 1588, 1590, + 1592, 1583, 1591, 1591, 1593, 1594, 1595, 1596, 1600, 1597, + 1598, 1599, 1602, 1601, 1602, 1603, 1589, 1601, 1605, 1606, + 1610, 1596, 1593, 1597, 1598, 1594, 1595, 1607, 1609, 1599, + 1605, 1606, 1608, 1600, 1603, 1611, 1610, 1612, 1608, 1613, + 1607, 1615, 1615, 1616, 1617, 1618, 1619, 1619, 1609, 1617, - 1621, 1625, 1618, 1624, 1628, 1626, 1629, 1618, 1626, 1627, - 1627, 1630, 1632, 1620, 1633, 1624, 1630, 1628, 1631, 1625, - 1634, 1635, 1638, 1631, 1636, 1629, 1637, 1640, 1638, 1634, - 1633, 1632, 1641, 1636, 1642, 1637, 1636, 1639, 1639, 1643, - 1635, 1644, 1647, 1645, 1650, 1641, 1646, 1640, 1645, 1645, - 1651, 1646, 1642, 1643, 1647, 1652, 1652, 1644, 1653, 1655, - 1658, 1654, 1656, 1656, 1655, 1658, 1657, 1659, 1651, 1650, - 1654, 1660, 1661, 1664, 1653, 1657, 1662, 1656, 1657, 1665, - 1666, 1662, 1662, 1667, 47, 1659, 1669, 1664, 1667, 1668, - 1661, 1673, 1660, 1671, 1665, 1668, 1670, 1670, 1672, 1671, + 1620, 1612, 1621, 1622, 1623, 1611, 1625, 1618, 1624, 1628, + 1613, 1626, 1632, 1616, 1627, 1620, 1621, 1624, 1626, 1630, + 1637, 1625, 1623, 1627, 1636, 1628, 1627, 1622, 1633, 1634, + 1634, 1633, 1635, 1635, 1630, 1640, 1636, 1632, 1637, 1630, + 1638, 1639, 1639, 1638, 1641, 1642, 1643, 1644, 1640, 1643, + 1642, 1645, 1644, 1646, 1648, 1647, 1649, 1650, 1652, 1652, + 1653, 1651, 1654, 1641, 1647, 1649, 1650, 1651, 1649, 1646, + 1645, 1655, 1656, 1648, 1657, 1654, 1658, 1663, 1659, 1660, + 1653, 1658, 1658, 1659, 1666, 1664, 1656, 1665, 1665, 1655, + 1657, 1660, 1667, 1668, 1669, 1669, 1670, 1672, 1668, 1671, - 1674, 1675, 1666, 1672, 1669, 1673, 1674, 1675, 1677, 1678, - 1679, 1680, 1681, 1682, 1684, 1681, 1679, 1686, 1687, 1682, - 1689, 1681, 1684, 1678, 1680, 1688, 1690, 1691, 1677, 1689, - 1692, 1693, 1695, 1688, 1694, 1694, 1686, 1687, 1695, 1690, - 1691, 1696, 1697, 1699, 1692, 1693, 1700, 1696, 1698, 1698, - 1701, 1702, 1702, 1703, 1704, 1697, 1694, 1705, 1706, 1707, - 1704, 1709, 1709, 1699, 1700, 1710, 1703, 1711, 1712, 1701, - 1713, 1711, 1716, 1712, 1706, 1713, 1714, 1707, 1715, 1705, - 1718, 1714, 1720, 1719, 1721, 1710, 1719, 1715, 1723, 1718, - 1722, 1722, 1724, 1725, 1720, 1716, 1726, 1726, 1728, 1721, + 1666, 1667, 1663, 1664, 1671, 1670, 1673, 1674, 1670, 1669, + 1677, 1675, 1679, 1678, 1680, 1672, 1675, 1675, 1682, 1680, + 1681, 1683, 1683, 1684, 1677, 1674, 1681, 1673, 1678, 1684, + 1685, 1686, 1687, 1688, 1679, 1685, 1682, 1690, 1687, 1688, + 1691, 1692, 1693, 1694, 1695, 1686, 1694, 1692, 1697, 1699, + 1695, 1700, 1694, 1701, 1691, 1693, 1697, 1690, 1702, 1703, + 1704, 1701, 1705, 1706, 1707, 1708, 1708, 1702, 1699, 1704, + 1700, 1711, 1703, 1709, 1710, 1705, 1713, 1706, 1707, 1709, + 1710, 1712, 1712, 1714, 1711, 1715, 1717, 1708, 1716, 1716, + 1719, 1718, 1720, 1721, 1723, 1723, 1713, 1718, 1724, 1717, - 1727, 1729, 1732, 1730, 1724, 1728, 1733, 1723, 1735, 1736, - 1734, 1737, 1725, 1729, 1727, 1730, 1734, 1737, 1738, 1738, - 1735, 1732, 1739, 1740, 1740, 1739, 1733, 1736, 1742, 1743, - 1744, 1745, 1745, 1742, 1746, 1747, 1744, 1747, 1743, 1748, - 1749, 1750, 1748, 1751, 1752, 1753, 1746, 1754, 1755, 1757, - 1753, 1758, 1754, 1756, 1760, 1763, 1758, 1755, 1759, 18, - 1749, 1751, 1752, 1750, 1757, 1756, 1761, 1759, 1762, 1766, - 1763, 1761, 1768, 1762, 1760, 1764, 1764, 1765, 1761, 1769, - 1759, 1770, 1771, 1765, 1772, 1773, 1772, 1774, 1774, 1777, - 1766, 1768, 1775, 1775, 1776, 1776, 1780, 1770, 1769, 1773, + 1726, 1714, 1725, 1730, 1715, 1726, 1725, 1729, 1720, 1727, + 1728, 1721, 1719, 1732, 1727, 1728, 1729, 1733, 1724, 1734, + 1733, 1735, 1732, 1736, 1736, 1737, 1730, 1738, 1739, 1740, + 1740, 1734, 1741, 1742, 1746, 1747, 1735, 1743, 1744, 1738, + 1742, 1750, 1748, 0, 1737, 1749, 1741, 1739, 1748, 1743, + 1744, 1753, 1751, 1746, 1753, 1747, 1757, 1749, 1751, 1750, + 1752, 1752, 1754, 1754, 1756, 1757, 1758, 1759, 1759, 1756, + 1760, 1761, 1758, 1761, 1762, 1763, 1764, 1762, 1765, 1766, + 1767, 1768, 1760, 1769, 1772, 1767, 1768, 1770, 1771, 1772, + 1774, 1773, 1769, 1777, 0, 1763, 1765, 1766, 1764, 1770, - 1781, 1773, 1771, 1778, 1778, 1779, 1779, 1782, 1782, 1777, - 1783, 1788, 1784, 1785, 1783, 1790, 1785, 1780, 1784, 1787, - 1789, 1781, 1792, 1792, 1791, 1787, 1789, 1791, 1793, 1788, - 1794, 1795, 1795, 1797, 1796, 1794, 1798, 1799, 1799, 1800, - 1790, 1798, 1804, 1802, 1800, 1801, 1803, 1805, 1793, 1796, - 1807, 1801, 1806, 1811, 1797, 1802, 1802, 1802, 1806, 1809, - 1804, 1810, 1802, 1813, 1809, 1809, 1803, 1805, 1811, 1812, - 1807, 1812, 1814, 1815, 1813, 1810, 1816, 1817, 1818, 1815, - 1819, 1819, 1820, 1821, 1821, 1816, 1822, 1814, 1823, 1824, - 1824, 1825, 1825, 1826, 1829, 1829, 1830, 1817, 1831, 1818, + 1773, 1776, 1775, 1771, 1778, 1778, 1776, 1775, 1777, 1779, + 1774, 1780, 1782, 1773, 1775, 1779, 1783, 1784, 1785, 1786, + 1787, 1786, 1788, 1788, 1789, 1789, 1790, 1790, 1791, 1792, + 1792, 1782, 1780, 1784, 1787, 1783, 1787, 1794, 1785, 1793, + 1793, 1795, 1796, 1796, 1798, 1797, 1801, 1802, 1791, 1797, + 1798, 1799, 1801, 1803, 1799, 1804, 1807, 1805, 1794, 1803, + 1805, 1808, 1795, 1806, 1806, 1802, 1808, 1809, 1809, 1810, + 1811, 1818, 1812, 1813, 1813, 1815, 1807, 1812, 1814, 1817, + 1804, 1815, 1816, 1814, 1810, 1819, 1820, 1821, 0, 1818, + 1824, 1811, 1820, 1825, 1816, 1816, 1816, 1823, 1826, 1817, - 1833, 1834, 1836, 1836, 1837, 1835, 1822, 1831, 1820, 1833, - 1823, 1835, 1838, 1826, 1841, 1840, 1839, 1842, 1842, 1843, - 1844, 1830, 1834, 1839, 1840, 1837, 1846, 1838, 1847, 1848, - 1849, 1846, 1850, 1851, 1847, 1851, 1844, 1849, 1850, 1853, - 1841, 1854, 1855, 1855, 1857, 1843, 1856, 1854, 1858, 1848, - 1859, 1856, 1860, 1857, 1861, 1862, 1863, 1861, 1853, 1864, - 1864, 1865, 1868, 1867, 1860, 1866, 1869, 1865, 1858, 1859, - 1869, 1866, 1871, 1862, 1872, 1873, 1875, 1868, 1874, 1874, - 1873, 1878, 1863, 1867, 1876, 1879, 1869, 1880, 1880, 1879, - 1884, 1881, 1871, 1882, 1884, 1875, 1872, 1881, 1885, 1876, + 1826, 1816, 1823, 1823, 1824, 1819, 1827, 1821, 1825, 1828, + 1829, 1830, 1831, 1832, 1833, 1833, 1829, 1827, 1834, 1836, + 1830, 1835, 1835, 1837, 1828, 1838, 1838, 1839, 1839, 1840, + 1843, 1843, 1831, 1844, 1832, 1848, 1849, 1845, 1847, 1836, + 1852, 1850, 1849, 1856, 1834, 1837, 1845, 1847, 1853, 1840, + 1851, 1851, 1854, 1855, 1857, 1857, 1848, 1850, 1844, 1854, + 1858, 1852, 1855, 1853, 1859, 1861, 1862, 1863, 1864, 1856, + 1861, 1865, 1862, 1868, 1866, 1864, 1866, 1865, 1869, 1873, + 1859, 1870, 1870, 1871, 1869, 1872, 1858, 1863, 1871, 1874, + 1875, 1877, 1868, 1876, 1872, 1878, 1876, 1879, 1879, 1873, - 1878, 1887, 1882, 1883, 1883, 1886, 1886, 1888, 1889, 1885, - 1890, 1891, 1892, 1893, 1885, 1890, 1896, 1896, 1894, 1893, - 1895, 1888, 1887, 1897, 1897, 1895, 1898, 1889, 1900, 1901, - 1898, 1891, 1892, 1894, 1902, 1903, 1903, 1900, 1905, 1905, - 1901, 1906, 1907, 1909, 1910, 1901, 1906, 1906, 1907, 1909, - 1911, 1912, 1913, 1915, 1902, 1911, 1916, 1917, 1913, 1918, - 1916, 1919, 1921, 1912, 1920, 1915, 1922, 1919, 1921, 1917, - 1910, 1923, 1924, 1928, 1929, 1925, 1927, 1924, 1931, 1929, - 1935, 1931, 1932, 1932, 1918, 1922, 1920, 1925, 1927, 1933, - 1933, 1923, 1928, 1934, 1934, 1936, 1937, 1940, 1938, 1939, + 1880, 1881, 1875, 1882, 1883, 1886, 1880, 1881, 1874, 1877, + 1884, 1887, 1888, 1890, 1884, 1889, 1889, 1888, 1893, 1883, + 1891, 1878, 1894, 1882, 0, 1886, 1894, 1895, 1895, 1897, + 1884, 1904, 1890, 1887, 1896, 1891, 1900, 1893, 1897, 1899, + 1896, 1898, 1898, 1899, 1901, 1901, 1902, 1900, 1903, 1905, + 1904, 1906, 1900, 1907, 1905, 1908, 1911, 1909, 1910, 1912, + 1912, 1908, 1903, 1910, 1913, 1913, 1914, 1902, 1916, 1911, + 1914, 1906, 1909, 1907, 1917, 1918, 1926, 1916, 1919, 1919, + 1921, 1921, 1922, 1923, 0, 1917, 1925, 1922, 1922, 1923, + 1917, 1927, 1925, 1928, 1929, 1918, 1927, 1931, 1933, 1932, - 1935, 1936, 1937, 1938, 1942, 1939, 1940, 1944, 1945, 1942, - 1944, 1946, 1946, 1948, 1949, 1952, 1950, 1951, 1951, 1957, - 1945, 1950, 1953, 1954, 1952, 1948, 1949, 1953, 1954, 1955, - 1956, 1956, 1955, 1958, 1959, 1960, 1961, 1964, 1962, 1957, - 1961, 1963, 1958, 1962, 1965, 1966, 1967, 1963, 1970, 1969, - 1969, 1972, 1959, 1965, 1960, 1964, 1971, 1973, 1973, 1974, - 1967, 1969, 1975, 1966, 1976, 1971, 1970, 1977, 1974, 1978, - 1983, 1972, 1977, 1983, 1975, 1981, 1981, 1984, 1985, 1990, - 1987, 1989, 1978, 1988, 1992, 1976, 1992, 1989, 1991, 1991, - 1993, 1993, 1994, 1984, 1985, 1987, 1990, 1988, 1996, 1996, + 1929, 1934, 1926, 1932, 1938, 1928, 1935, 1936, 1937, 1931, + 1933, 1939, 1935, 1940, 1937, 1941, 1943, 1944, 1940, 1945, + 1948, 1948, 1947, 1938, 1945, 1947, 1934, 1941, 1943, 1936, + 1951, 1939, 1949, 1949, 1950, 1950, 1944, 1952, 1953, 1956, + 1954, 1955, 1961, 1952, 1953, 1954, 1958, 1955, 1956, 1960, + 1951, 1958, 1960, 1964, 1961, 1962, 1962, 1965, 1966, 1967, + 1967, 1968, 1969, 1966, 1973, 1964, 1970, 1969, 1974, 1965, + 1968, 1970, 1971, 1972, 1972, 1971, 1975, 1974, 1976, 1977, + 1978, 1979, 1980, 1977, 1973, 1978, 1981, 1979, 1982, 1983, + 1985, 1985, 1986, 1988, 1975, 1981, 1987, 1976, 1989, 1989, - 1994, 1997, 1997, 1999, 2000, 2001, 2002, 2003, 2004, 2006, - 2000, 2001, 2007, 2002, 2005, 2005, 2012, 2016, 2006, 2008, - 2009, 2010, 2011, 2013, 2014, 2017, 1999, 2018, 2004, 2003, - 2014, 2008, 2009, 2007, 2011, 2020, 2010, 2016, 2013, 2018, - 2019, 2019, 2012, 2014, 2021, 2023, 2022, 2024, 2017, 2022, - 2023, 2026, 2027, 2020, 2027, 2028, 2026, 2029, 2030, 2032, - 2034, 2035, 2029, 2036, 2021, 2030, 2038, 2024, 2032, 2037, - 2035, 2037, 2040, 2028, 2040, 2036, 2041, 2043, 2034, 2042, - 2042, 2044, 2045, 2046, 2045, 2038, 2044, 2047, 2046, 2048, - 2041, 2049, 2047, 2050, 2053, 2051, 2052, 2055, 2057, 2050, + 1980, 1992, 1985, 1983, 1993, 1987, 1982, 1990, 1991, 1993, + 1986, 1994, 2000, 1988, 1997, 1997, 1990, 2001, 1999, 2003, + 1991, 1999, 1992, 2004, 1994, 2005, 2006, 2010, 2000, 2007, + 2007, 2005, 2015, 2001, 2003, 2010, 2008, 2004, 2008, 2009, + 2009, 2012, 2012, 2006, 2013, 2013, 2016, 2017, 2019, 2018, + 2022, 2020, 2016, 2017, 2023, 2015, 2018, 2021, 2021, 2022, + 2024, 2025, 2026, 2028, 2027, 2029, 2032, 2033, 2030, 2034, + 2019, 2020, 2024, 2025, 2030, 2023, 2027, 2026, 2035, 2035, + 2029, 2034, 2036, 2037, 2040, 2038, 2032, 2030, 2038, 2028, + 2033, 2039, 2042, 2043, 2044, 2043, 2039, 2042, 2046, 2048, - 2051, 2058, 2062, 2043, 2128, 2055, 2053, 2048, 2054, 2052, - 2061, 2049, 2128, 2054, 2054, 2058, 2066, 2057, 2059, 2059, - 2060, 2060, 2062, 2063, 2067, 2061, 2064, 2069, 2065, 2063, - 2065, 2064, 2067, 2074, 2066, 2068, 2068, 2070, 2070, 2069, - 2067, 2071, 2071, 2072, 2073, 2076, 2077, 2078, 2077, 2073, - 2079, 2074, 2072, 2080, 2076, 2079, 2079, 2076, 2081, 2082, - 2084, 2085, 2088, 2089, 2086, 2080, 2085, 2081, 2078, 2086, - 2090, 2082, 2084, 2091, 2091, 2088, 2092, 2093, 2095, 2090, - 2094, 2098, 2096, 2089, 2100, 2101, 2099, 2109, 2112, 2120, - 2101, 2110, 2095, 2098, 2092, 2093, 2094, 2096, 2099, 2103, + 2036, 2045, 2050, 2037, 2040, 2046, 2045, 2051, 2048, 2052, + 2054, 2053, 2044, 2053, 2058, 2060, 2051, 2055, 2059, 2059, + 2050, 2052, 2057, 2055, 2057, 2061, 2065, 2063, 2058, 2054, + 2061, 2062, 2063, 2062, 2064, 2066, 2067, 2069, 2068, 2064, + 2070, 2060, 2067, 2068, 2065, 2074, 2075, 2079, 2071, 2072, + 2069, 2078, 2070, 2071, 2071, 2066, 2083, 2072, 2076, 2076, + 2075, 2077, 2077, 2080, 2074, 2081, 2078, 2079, 2084, 2080, + 2081, 2082, 2095, 2082, 2083, 2086, 2084, 2085, 2085, 2087, + 2087, 2088, 2088, 2089, 2084, 2090, 2091, 2086, 2093, 2094, + 2090, 2094, 2089, 2095, 2097, 0, 2096, 2093, 2098, 2099, - 2102, 2106, 2120, 2108, 2100, 2102, 2110, 2106, 2103, 2108, - 2109, 2111, 2113, 2112, 2114, 2114, 2115, 2116, 2116, 2117, - 2106, 2113, 2118, 2119, 2121, 2115, 2118, 2122, 2119, 2111, - 2123, 2124, 17, 2122, 2125, 2126, 2124, 2124, 2117, 2127, - 2125, 2126, 2127, 2121, 2129, 2132, 2132, 2133, 2133, 2134, - 2135, 2135, 2123, 2136, 2136, 2137, 2138, 2139, 2134, 2151, - 2140, 2143, 2133, 2139, 2129, 2140, 2143, 2137, 2141, 2141, - 2142, 2142, 2144, 2133, 2138, 2146, 2147, 2148, 2144, 2146, - 2149, 2148, 2152, 2153, 2151, 2155, 2154, 2152, 2157, 2156, - 2155, 2158, 2159, 2160, 2161, 2161, 2147, 2159, 2162, 2163, + 2093, 2096, 2096, 2101, 2091, 2102, 2097, 2098, 2103, 2105, + 2102, 2099, 2106, 2103, 2107, 2101, 2108, 2108, 2109, 2110, + 2112, 2116, 2105, 2107, 2111, 2114, 2113, 2117, 2118, 0, + 2114, 2127, 2106, 2116, 2112, 2121, 2109, 2110, 2119, 2117, + 2111, 2113, 2120, 2119, 2121, 2124, 2126, 2120, 2118, 2129, + 2128, 2124, 2126, 2130, 2127, 2132, 2132, 2131, 2135, 2133, + 2134, 2134, 2139, 2138, 2124, 2128, 2131, 2129, 2133, 2136, + 2137, 2141, 2147, 2136, 2140, 2137, 2138, 2135, 2130, 2142, + 2140, 2139, 2143, 2144, 2142, 2142, 2146, 2145, 2143, 2144, + 2145, 2152, 2147, 2141, 2146, 2150, 2150, 2151, 2151, 2155, - 2149, 2154, 2162, 2164, 2157, 2165, 2153, 2156, 2164, 2166, - 2167, 2158, 2169, 2168, 2163, 2160, 2170, 2169, 2171, 2172, - 2172, 2175, 2167, 2176, 2177, 2174, 2178, 2166, 2184, 2170, - 2179, 2165, 2168, 2174, 2180, 2182, 2171, 2260, 2187, 2181, - 2175, 2186, 2176, 2184, 2189, 2192, 2189, 2177, 2192, 2179, - 2178, 2181, 2187, 2188, 2186, 2180, 2182, 2190, 2190, 2188, - 2191, 2193, 2194, 2260, 2195, 2191, 2196, 2196, 2197, 2197, - 2198, 2200, 2198, 2203, 2193, 2201, 2194, 2195, 2199, 2199, - 2202, 2202, 2203, 2204, 2204, 2203, 2200, 2206, 2201, 2205, - 2205, 2208, 2206, 2209, 2210, 2211, 2208, 2212, 2212, 2213, + 2152, 2153, 2153, 2154, 2154, 2158, 2156, 2157, 2159, 2159, + 2158, 2155, 2151, 2157, 2160, 2160, 2161, 2165, 2164, 2162, + 2167, 2161, 2164, 2151, 2156, 2162, 2166, 2169, 2170, 2172, + 2166, 2171, 2174, 2170, 2173, 2175, 2176, 2165, 2177, 2173, + 2167, 2178, 2181, 2177, 2172, 2179, 2179, 2183, 2184, 2180, + 2174, 2175, 2169, 2180, 2171, 2182, 2176, 2181, 2185, 2186, + 2182, 2188, 2187, 2178, 2189, 2193, 2184, 2187, 2190, 2190, + 2185, 2192, 2194, 2183, 2188, 2195, 2196, 2197, 2186, 2192, + 2198, 2199, 2189, 2200, 2193, 0, 2204, 2202, 2206, 2205, + 2207, 2194, 2207, 2199, 2206, 2212, 2197, 2211, 2195, 2204, - 2213, 2214, 2215, 2215, 2216, 2217, 2217, 2211, 2218, 0, - 2219, 2220, 2220, 2209, 2210, 2219, 2221, 2221, 2222, 2223, - 2214, 2224, 2216, 2218, 2225, 2227, 2228, 2228, 2223, 2229, - 2227, 2231, 2222, 2230, 2230, 2224, 2232, 2233, 2234, 2234, - 2233, 2236, 2232, 2225, 2235, 2235, 2237, 2240, 2229, 2231, - 2238, 2241, 2238, 2244, 2234, 2242, 2242, 2245, 2249, 2246, - 2236, 2237, 2240, 2247, 2248, 2248, 2250, 2247, 2251, 2252, - 2241, 2250, 2255, 2244, 2246, 2254, 2254, 2249, 2256, 2257, - 2245, 2258, 2259, 2251, 2252, 2256, 2261, 2261, 2262, 2263, - 2266, 2263, 2255, 2257, 2267, 2264, 2266, 2262, 2264, 2258, + 2196, 2198, 2202, 2205, 2200, 2208, 2208, 2209, 2210, 2212, + 2211, 2210, 2209, 2213, 2214, 2214, 2215, 2215, 2216, 2218, + 2216, 2217, 2217, 2219, 2220, 2220, 2213, 2227, 2221, 2222, + 2222, 2223, 2223, 2224, 2218, 2228, 2219, 2221, 2224, 2226, + 2221, 2229, 2230, 2230, 2226, 2231, 2231, 2227, 2232, 2233, + 2233, 2234, 2240, 2229, 2237, 2228, 2235, 2235, 2236, 2237, + 2238, 2238, 2239, 2239, 2242, 2241, 2240, 2232, 2243, 2234, + 2244, 2246, 2248, 2236, 2241, 2250, 2246, 2247, 2247, 2249, + 2249, 2242, 2243, 2252, 2251, 2255, 2252, 2253, 2253, 2244, + 2251, 2248, 2256, 2250, 2254, 2254, 2257, 2259, 2257, 2260, - 2259, 2270, 2268, 2269, 2271, 2273, 2267, 2268, 2269, 2272, - 2273, 2274, 2278, 2264, 2276, 2264, 2277, 2271, 2279, 2276, - 2280, 2277, 2281, 2284, 2279, 2285, 2270, 2278, 2281, 2282, - 2272, 2283, 2286, 2287, 2282, 2286, 2283, 2274, 2285, 2372, - 2288, 2280, 2287, 2289, 2290, 2291, 2296, 2372, 2284, 2288, - 2292, 2293, 2289, 2290, 2294, 2298, 2292, 2293, 2294, 2291, - 2299, 2299, 2300, 2302, 2298, 2305, 2296, 2307, 2300, 2301, - 2301, 2304, 2302, 2303, 2303, 2308, 2304, 2310, 2301, 2309, - 2309, 2311, 2313, 2307, 2314, 2305, 2315, 2305, 2320, 2462, - 2311, 2308, 2310, 2316, 2313, 2318, 2462, 2319, 2318, 2321, + 2261, 2261, 2263, 2253, 2255, 2264, 2265, 2256, 2268, 2266, + 2267, 2267, 2259, 2266, 2269, 2270, 2271, 2274, 2260, 2269, + 2276, 2265, 2263, 2273, 2273, 2275, 2277, 2268, 2264, 2278, + 2270, 2271, 2275, 2279, 2276, 2280, 2280, 2274, 2282, 2281, + 2282, 2286, 2283, 2285, 2277, 2283, 2287, 2278, 2281, 2285, + 2288, 2287, 2289, 2286, 2290, 2288, 2292, 2291, 2293, 2279, + 2283, 2292, 2283, 2295, 2296, 2297, 2298, 2290, 2295, 2296, + 2299, 2300, 2298, 2301, 2304, 2305, 2302, 2289, 2291, 2301, + 2297, 2302, 2303, 2311, 2293, 2307, 2300, 2303, 2305, 2306, + 2316, 2299, 2306, 2308, 2307, 2309, 2310, 2311, 2324, 2304, - 2314, 2315, 2319, 2322, 2322, 2316, 2323, 2323, 2320, 2325, - 2325, 2321, 2326, 2327, 2328, 2326, 2329, 2330, 2327, 2332, - 2328, 2335, 2329, 2331, 2331, 2334, 2330, 2333, 2333, 2336, - 2337, 2337, 2338, 2332, 2340, 2335, 2339, 2334, 2338, 2340, - 2342, 2348, 2343, 2346, 2342, 2343, 2344, 2344, 2336, 2345, - 2339, 2347, 2346, 2349, 2345, 2350, 2350, 2349, 2351, 2353, - 2347, 2348, 2354, 2355, 2353, 2356, 2357, 2358, 2359, 2360, - 2357, 2351, 2361, 2359, 2362, 2360, 2363, 2364, 2361, 2356, - 2365, 2366, 2354, 2355, 2369, 2365, 2368, 2358, 2370, 2380, - 2377, 2371, 2362, 2370, 2375, 2363, 2364, 2371, 2368, 2373, + 2312, 2313, 2308, 2324, 2309, 2310, 2312, 2313, 2314, 2318, + 2316, 2320, 2314, 2319, 2319, 2321, 2321, 2320, 2318, 2322, + 2323, 2323, 2325, 2327, 2321, 2328, 2329, 2329, 2322, 2331, + 2330, 2333, 2334, 2338, 2335, 2336, 2338, 2340, 2331, 2327, + 2341, 2328, 2325, 2333, 2325, 2330, 2339, 2336, 2334, 2335, + 0, 2339, 2341, 2342, 2342, 2343, 2343, 2340, 2345, 2345, + 2346, 2347, 2348, 2346, 2349, 2350, 2347, 2352, 2348, 2355, + 2349, 2351, 2351, 2354, 2350, 2353, 2353, 2356, 2357, 2357, + 2358, 2352, 2360, 2355, 2359, 2354, 2358, 2360, 2362, 2368, + 2363, 2366, 2362, 2363, 2364, 2364, 2356, 2365, 2359, 2367, - 2369, 2373, 2366, 2375, 2377, 2378, 2378, 2379, 2381, 2381, - 2379, 2385, 2384, 2386, 2388, 2380, 2384, 2385, 2387, 2387, - 2391, 2391, 2393, 2388, 2395, 2386, 2396, 2399, 2400, 2401, - 2402, 2409, 2399, 2407, 2401, 2402, 2403, 2403, 2395, 2407, - 2393, 2410, 2396, 2405, 2405, 2408, 2408, 2409, 2411, 2413, - 2415, 2419, 2414, 2411, 2400, 2414, 2421, 2416, 2417, 2417, - 2419, 2420, 2415, 2410, 2422, 2424, 2424, 2420, 2413, 2416, - 2425, 2426, 0, 2425, 2421, 2427, 2429, 2429, 2431, 2422, - 2430, 2430, 2432, 2431, 2434, 2433, 2435, 2436, 2435, 2434, - 2426, 2437, 2438, 2427, 2433, 2440, 2441, 2439, 2442, 2448, + 2366, 2369, 2365, 2370, 2370, 2369, 2371, 2373, 2367, 2368, + 2374, 2375, 2373, 2376, 2377, 2378, 2379, 2380, 2377, 2371, + 2381, 2379, 2382, 2380, 2383, 2384, 2381, 2376, 2385, 2386, + 2374, 2375, 2389, 2385, 2388, 2378, 2390, 2398, 2398, 2391, + 2382, 2390, 2397, 2383, 2384, 2391, 2388, 2392, 2389, 2393, + 2386, 2393, 2395, 2400, 2399, 2392, 2397, 2399, 2401, 2401, + 2404, 2395, 2405, 2406, 2404, 2407, 2407, 2408, 2405, 2411, + 2411, 2413, 2415, 2419, 2416, 2406, 2408, 2420, 2419, 2400, + 2421, 2430, 2422, 2423, 2424, 2424, 2415, 2422, 2423, 2413, + 2416, 2426, 2426, 2428, 2429, 2429, 2431, 2430, 2434, 2428, - 2432, 2436, 2439, 2442, 2438, 2437, 2443, 2443, 2444, 2444, - 2445, 2445, 2446, 2446, 2447, 2440, 2441, 2448, 2449, 2450, - 2450, 2451, 2451, 2449, 2452, 2453, 2447, 2454, 2455, 2456, - 2456, 2457, 2458, 2458, 2459, 2459, 2452, 2453, 2460, 2461, - 2463, 2464, 2466, 2465, 2455, 2467, 2469, 2454, 2465, 2460, - 2457, 2461, 2463, 2468, 2468, 2469, 2470, 2471, 2472, 2473, - 2474, 2464, 2466, 2475, 2476, 2467, 2476, 2477, 2478, 2478, - 2484, 2472, 2479, 2480, 2474, 2481, 2483, 2471, 2485, 2477, - 2499, 2479, 2470, 2473, 2486, 2475, 2487, 2486, 2480, 0, - 2481, 2488, 2484, 2489, 2483, 2497, 2488, 2502, 2489, 2499, + 2432, 2421, 2436, 2420, 2435, 2432, 2440, 2435, 2437, 2438, + 2438, 2442, 2443, 2441, 2436, 2440, 2447, 2434, 2431, 2441, + 2437, 2445, 2445, 2446, 2448, 2453, 2446, 2443, 2454, 2442, + 2450, 2450, 2451, 2451, 2452, 2447, 2455, 2454, 2456, 2452, + 2456, 2455, 2448, 2453, 2457, 2458, 2460, 2461, 2459, 2462, + 2463, 2460, 2464, 2464, 2468, 2463, 2465, 2465, 2457, 2458, + 2459, 2466, 2466, 2467, 2467, 2469, 2468, 2461, 2470, 2462, + 2471, 2471, 2473, 2470, 2472, 2472, 2474, 2475, 2476, 2477, + 2478, 2478, 2479, 2469, 2473, 2480, 2480, 2482, 2474, 2481, + 2481, 2483, 2485, 2484, 2486, 2477, 2488, 2475, 2482, 2476, - 2487, 2485, 2490, 2490, 2491, 2491, 2492, 2492, 2494, 2494, - 2496, 2496, 2498, 2497, 2500, 2503, 2504, 2502, 2506, 2505, - 2507, 2509, 2508, 2498, 2508, 2510, 2511, 2506, 2515, 2500, - 2512, 2512, 2516, 2503, 2514, 2514, 2517, 2522, 2504, 2505, - 2507, 2509, 2515, 2510, 2511, 2517, 2518, 2518, 2520, 2521, - 2521, 2523, 2524, 2525, 2516, 2522, 2526, 2520, 2527, 2524, - 2529, 2528, 2530, 2530, 2531, 2531, 2532, 2533, 2525, 2523, - 2535, 2535, 2534, 2538, 2526, 2539, 2527, 2528, 2534, 2529, - 2536, 2536, 2537, 2540, 2541, 2533, 2532, 2542, 2537, 2543, - 2539, 2538, 2542, 2544, 2545, 2546, 2551, 2546, 2541, 2545, + 2484, 2479, 2487, 2483, 2485, 2489, 2491, 2487, 2490, 2490, + 2492, 2493, 2497, 2494, 2486, 2491, 2488, 2495, 2496, 2498, + 2501, 2498, 2502, 2499, 2503, 2489, 2494, 2500, 2500, 2501, + 2505, 2493, 2496, 2506, 2497, 2499, 2492, 2502, 2507, 2503, + 2508, 2495, 2509, 2508, 2510, 2511, 2512, 2512, 2505, 2510, + 2511, 2513, 2513, 2514, 2514, 2506, 2509, 2516, 2516, 2518, + 2518, 2507, 2519, 2520, 2521, 2524, 2522, 2526, 2525, 2528, + 2527, 2529, 2531, 2530, 2520, 2530, 2532, 2533, 2528, 2537, + 2519, 2522, 2538, 2521, 0, 2524, 2525, 2534, 2534, 2526, + 2527, 2529, 2531, 2537, 2532, 2533, 2536, 2536, 2539, 2540, - 2547, 2547, 2540, 2548, 2554, 2548, 2549, 2549, 2553, 2543, - 2555, 2556, 2558, 2544, 2557, 2551, 2559, 2553, 2562, 2557, - 0, 2563, 2555, 2554, 2563, 2564, 2564, 2565, 2566, 2567, - 2567, 2556, 2558, 2568, 2569, 2559, 2570, 2572, 2562, 2573, - 2570, 2575, 2565, 2573, 2568, 2577, 2566, 2574, 2574, 2569, - 2578, 2579, 2572, 2582, 2575, 2580, 2580, 2583, 2584, 2586, - 2577, 2590, 2584, 2585, 2585, 2582, 2583, 2587, 2587, 2588, - 2578, 2579, 2589, 2591, 2588, 2592, 2599, 2590, 2586, 2593, - 2593, 2589, 2598, 2598, 2601, 2591, 2600, 2600, 2602, 2606, - 2603, 2604, 2605, 2605, 2613, 2592, 2616, 2601, 2599, 2603, + 2540, 2542, 2543, 2543, 2538, 2544, 2545, 2539, 2546, 2548, + 2542, 2547, 2549, 2550, 2551, 2546, 2552, 2552, 2553, 2553, + 2554, 2555, 2556, 2544, 2545, 2560, 2547, 2548, 2556, 2550, + 2549, 2557, 2557, 2551, 2558, 2558, 2559, 2561, 2562, 2555, + 2554, 2563, 2559, 2560, 2564, 2565, 2566, 0, 2567, 2564, + 2569, 2569, 2561, 2567, 2568, 2563, 2568, 2562, 2570, 2573, + 2570, 2571, 2571, 2575, 2576, 2565, 2566, 2577, 2578, 2579, + 2580, 2581, 2575, 2582, 2579, 2580, 2585, 2586, 2573, 2577, + 2586, 2587, 2587, 2576, 2588, 2589, 2590, 2590, 2578, 2591, + 2592, 2581, 2582, 2593, 2595, 2598, 2585, 2593, 2596, 2588, - 2604, 2602, 2608, 2608, 2606, 2611, 2612, 2614, 2613, 2615, - 2611, 2612, 2614, 2617, 2620, 2616, 2618, 2615, 2621, 2623, - 2622, 2627, 2617, 2621, 2618, 2622, 2624, 2624, 2626, 2620, - 2625, 2625, 2629, 2626, 2623, 2628, 2628, 2630, 2631, 2629, - 2627, 2632, 2630, 2633, 0, 2634, 2635, 2635, 2636, 2633, - 2634, 2642, 2637, 2638, 2638, 2644, 2631, 2637, 2644, 2632, - 2639, 2639, 2645, 2636, 2642, 2643, 2643, 2645, 2645, 2646, - 2647, 2648, 2649, 2650, 2646, 2647, 2651, 2650, 2649, 2652, - 2653, 2651, 2654, 2655, 2658, 2648, 2656, 2657, 2652, 2658, - 2654, 2659, 2656, 2657, 2661, 2653, 2663, 2662, 2665, 2663, + 2591, 2600, 2596, 2589, 2601, 2592, 2597, 2597, 2598, 2595, + 2602, 2603, 2603, 2605, 2606, 2607, 2600, 2608, 2608, 2607, + 2609, 2610, 2610, 2606, 2601, 2605, 2611, 2612, 2613, 2614, + 2602, 2611, 2615, 2616, 2616, 2622, 2612, 2621, 2621, 2609, + 2624, 2614, 2623, 2623, 2613, 2625, 2626, 2627, 2628, 2628, + 2629, 2630, 2615, 2624, 0, 2626, 2627, 2622, 2625, 2632, + 2632, 2637, 2635, 2636, 2638, 2639, 2630, 2635, 2636, 2638, + 2629, 2640, 2641, 2639, 2642, 2637, 2644, 2647, 2645, 2646, + 2651, 2641, 2642, 2645, 2646, 2648, 2648, 2649, 2649, 2650, + 2640, 2644, 2647, 2653, 2650, 2652, 2652, 2654, 2655, 2651, - 2667, 2661, 2662, 2659, 2655, 2667, 2668, 2669, 2670, 2671, - 2665, 2668, 2677, 2672, 2673, 2673, 2682, 2674, 2671, 2683, - 0, 2670, 2672, 2678, 2684, 2669, 2674, 2679, 2687, 2678, - 2677, 2685, 2685, 2679, 2686, 2682, 2688, 2689, 2691, 2683, - 2693, 2686, 2695, 2684, 2698, 2688, 2696, 2687, 2690, 2690, - 2696, 2704, 2689, 2697, 2697, 2693, 2704, 2691, 2699, 2700, - 2701, 2706, 2695, 2703, 2699, 2700, 2701, 2702, 2702, 2698, - 2706, 2703, 2707, 2709, 2710, 2712, 2711, 2710, 2713, 2709, - 2711, 2715, 2715, 2716, 2721, 2707, 2717, 2717, 2721, 2712, - 2718, 2718, 2722, 2713, 2720, 2720, 2726, 2722, 2724, 2724, + 2653, 2656, 2654, 2657, 0, 2658, 2659, 2659, 2660, 2657, + 2658, 2666, 2661, 2662, 2662, 2668, 2655, 2661, 2668, 2656, + 2663, 2663, 2669, 2660, 2666, 2667, 2667, 2669, 2669, 2670, + 2671, 2672, 2673, 2674, 2670, 2671, 2675, 2674, 2673, 2676, + 2677, 2675, 2678, 2679, 2682, 2672, 2680, 2681, 2676, 2682, + 2678, 2683, 2680, 2681, 2685, 2677, 2687, 2686, 2689, 2687, + 2691, 2685, 2686, 2683, 2679, 2691, 2692, 2693, 2694, 2695, + 2689, 2692, 2701, 2696, 2697, 2697, 2706, 2698, 2695, 2707, + 0, 2694, 2696, 2702, 2708, 2693, 2698, 2703, 2711, 2702, + 2701, 2709, 2709, 2703, 2710, 2706, 2712, 2713, 2715, 2707, - 2727, 2716, 2728, 2729, 2732, 2727, 2730, 2742, 2729, 2729, - 2733, 2733, 2735, 2735, 2728, 2738, 2726, 2740, 2730, 2736, - 2736, 2746, 2737, 2749, 2732, 2737, 2748, 2742, 2738, 2743, - 2743, 2744, 2744, 2745, 2745, 2740, 2746, 2747, 2747, 2748, - 2750, 2749, 2751, 2752, 2752, 2753, 2756, 2760, 2751, 2753, - 2757, 2759, 2756, 2761, 2750, 2757, 2759, 2759, 2762, 2763, - 2764, 2765, 2775, 2766, 2772, 2763, 2764, 2766, 2767, 2767, - 2760, 2770, 2772, 2761, 2773, 2778, 2770, 2773, 2762, 2776, - 2777, 2777, 2776, 2779, 2780, 2781, 2765, 2775, 2779, 2782, - 2783, 2783, 2778, 2778, 2784, 2785, 2786, 2787, 2785, 2788, + 2717, 2710, 2719, 2708, 2722, 2712, 2720, 2711, 2714, 2714, + 2720, 0, 2713, 2721, 2721, 2717, 2725, 2715, 2723, 2724, + 2726, 0, 2719, 2728, 2723, 2724, 2726, 2727, 2727, 2722, + 2729, 2728, 2731, 2732, 2725, 2729, 2734, 2735, 2737, 2736, + 2735, 2731, 2734, 2736, 2738, 2741, 2732, 2740, 2740, 2742, + 2742, 2751, 2737, 2743, 2743, 2745, 2745, 2746, 2753, 2738, + 2747, 2746, 2757, 2741, 2752, 2747, 2749, 2749, 2754, 2752, + 2753, 2751, 2755, 2754, 2754, 2758, 2758, 2760, 2760, 2761, + 2761, 2763, 2757, 2762, 2755, 2766, 2762, 2765, 2765, 2768, + 2769, 2769, 2770, 2770, 2763, 2771, 2771, 2772, 2773, 2773, - 2791, 2810, 2780, 2782, 2810, 2781, 2785, 2788, 2784, 2789, - 2786, 2800, 2790, 2799, 2789, 2789, 2787, 2790, 2790, 2791, - 2792, 2792, 2793, 2793, 2794, 2794, 2795, 2795, 2796, 2796, - 2797, 2798, 2802, 2799, 2801, 2803, 2798, 2800, 2804, 2801, - 2803, 2805, 2806, 2808, 2808, 2811, 2797, 2804, 2809, 2809, - 2814, 2802, 2813, 2813, 2815, 2815, 2823, 2814, 2819, 2816, - 2820, 2805, 2806, 2811, 2816, 2818, 2818, 2819, 2821, 2820, - 2824, 2824, 2825, 2826, 2823, 2827, 2825, 2821, 2828, 2830, - 2829, 2832, 2826, 2831, 2830, 2830, 2842, 2833, 2837, 2828, - 2832, 2833, 2841, 2837, 2827, 2829, 2831, 2838, 2838, 2840, + 2774, 2775, 2776, 2766, 2777, 2778, 2778, 2779, 2782, 2768, + 2777, 2779, 2772, 2774, 2782, 2783, 2776, 2785, 2786, 2775, + 2783, 2789, 2785, 2785, 2787, 2788, 2790, 2789, 2791, 2792, + 2793, 2793, 2790, 2792, 2796, 2798, 2801, 2799, 2804, 2796, + 2799, 2786, 2806, 2798, 2787, 2788, 2802, 2803, 2803, 2802, + 2807, 2808, 2805, 2791, 2810, 2804, 2804, 2805, 2809, 2809, + 2806, 2801, 2812, 2811, 2813, 2808, 2811, 2814, 2810, 2817, + 2807, 2826, 2815, 0, 2811, 2814, 2812, 2815, 2815, 2816, + 2818, 2818, 2823, 2813, 2816, 2816, 2819, 2819, 2817, 2820, + 2820, 2821, 2821, 2822, 2822, 2824, 2825, 2826, 2823, 2827, - 2840, 2843, 2845, 2845, 2846, 2847, 2841, 2850, 2852, 2851, - 2853, 2842, 2855, 2846, 2857, 2859, 2853, 2847, 2851, 2843, - 2859, 2860, 2861, 2861, 2855, 2862, 2860, 2865, 2852, 2866, - 2872, 2864, 2850, 2873, 2862, 2857, 2864, 2867, 2867, 2872, - 2865, 2867, 2874, 2866, 2869, 2869, 2870, 2870, 2871, 2871, - 2875, 2877, 2881, 2873, 2878, 2875, 2882, 2877, 2879, 2878, - 2883, 2874, 2884, 2879, 2880, 2880, 2885, 2884, 2882, 2886, - 2881, 2887, 2888, 2888, 2890, 2886, 2894, 2891, 2890, 2895, - 2892, 2883, 2891, 2896, 2885, 2892, 2893, 2893, 2898, 2900, - 2900, 2902, 2903, 2904, 2895, 2894, 2887, 2904, 2896, 2906, + 2824, 2828, 2829, 2830, 2827, 2831, 2832, 2829, 2834, 2834, + 2835, 2835, 2830, 2837, 2836, 2840, 2825, 2836, 2839, 2839, + 2828, 2845, 2840, 2841, 2841, 2831, 2832, 2842, 2844, 2844, + 2845, 2837, 2842, 2846, 2847, 2848, 2850, 2851, 2851, 2853, + 2854, 2852, 2846, 2847, 2848, 2852, 2855, 2856, 2853, 2859, + 2857, 2858, 2865, 2865, 2850, 2857, 2857, 2855, 2859, 2854, + 2868, 2860, 2856, 2864, 2858, 2860, 2867, 2867, 2864, 2869, + 2870, 2872, 2872, 2873, 2868, 2874, 2877, 2878, 2880, 2881, + 2883, 2885, 2873, 0, 2887, 2881, 2878, 2874, 2870, 2887, + 2888, 2890, 2883, 2893, 2869, 2888, 2889, 2889, 2880, 2892, - 2905, 2907, 2908, 2912, 2902, 2903, 2909, 2911, 2898, 2905, - 2908, 2909, 2910, 2910, 2913, 2906, 2911, 2914, 2914, 2915, - 2907, 2912, 2918, 2918, 2919, 2919, 2921, 2923, 2923, 2925, - 2926, 2928, 2927, 2930, 2930, 2931, 2928, 2933, 2915, 2934, - 2913, 2932, 2935, 2933, 2938, 2925, 2926, 2921, 2927, 2939, - 2932, 2937, 2937, 2940, 2940, 2931, 2943, 2944, 2938, 2945, - 2947, 2935, 2934, 2944, 2945, 2948, 2948, 2950, 2939, 2949, - 2949, 2951, 2951, 2952, 2953, 2954, 2943, 2956, 2957, 2955, - 2958, 0, 2947, 2953, 2952, 2955, 2960, 2950, 2959, 2959, - 2957, 2951, 2963, 2963, 2961, 2954, 2956, 2961, 2967, 2962, + 2890, 2877, 2885, 2894, 2892, 2902, 2893, 2895, 2895, 2897, + 2897, 2895, 2898, 2898, 2899, 2899, 2900, 2894, 2901, 2908, + 2908, 2903, 2905, 2909, 2902, 2900, 2903, 2906, 2905, 2907, + 2910, 2911, 2906, 2913, 2907, 2912, 2915, 2914, 2901, 2922, + 2912, 2909, 2910, 2914, 2916, 2916, 2918, 2923, 2919, 2920, + 2918, 2913, 2911, 2919, 2920, 2921, 2921, 2924, 2922, 2926, + 2930, 2915, 2923, 2928, 2928, 2931, 2932, 2933, 2934, 2935, + 2932, 2940, 2924, 2930, 2936, 2937, 2933, 2941, 2931, 2926, + 2937, 2939, 2936, 2943, 2934, 2938, 2938, 2949, 2935, 2940, + 2939, 2942, 2942, 2946, 2946, 2947, 2947, 2951, 2951, 2953, - 2958, 2960, 2962, 2968, 2973, 2969, 2970, 2970, 2972, 2971, - 2967, 2969, 2971, 2975, 2972, 2976, 2976, 2978, 2975, 2977, - 2979, 2980, 2973, 2968, 2977, 2983, 2979, 2981, 2981, 2984, - 2985, 2986, 2987, 2987, 2988, 2989, 2978, 2983, 2980, 2980, - 2990, 2992, 2992, 2994, 2986, 2993, 2993, 2984, 2994, 2990, - 2995, 2989, 2996, 2988, 3000, 2985, 3001, 2996, 2997, 2997, - 2998, 2998, 2999, 2999, 2995, 3002, 3008, 3000, 3003, 3005, - 3005, 3002, 3010, 3003, 3011, 3012, 3013, 3013, 3015, 3015, - 3016, 3017, 3001, 3019, 3018, 3008, 3020, 3021, 3021, 3022, - 3022, 3025, 0, 3024, 3010, 3020, 3011, 3012, 3018, 3024, + 2954, 2955, 2943, 2941, 2956, 2957, 2955, 2960, 2949, 2961, + 2957, 2959, 2959, 2962, 2963, 2953, 2954, 2964, 2961, 2962, + 2956, 2966, 2966, 2968, 2967, 2969, 2969, 2960, 2972, 2973, + 2976, 2977, 2977, 2979, 2974, 2973, 2964, 2963, 2967, 2974, + 2978, 2978, 2968, 2980, 2980, 2981, 2982, 2983, 2972, 2985, + 2986, 2984, 2976, 2979, 2987, 2982, 2981, 2984, 2988, 2988, + 2989, 2990, 2986, 2980, 2990, 2996, 2991, 2983, 2985, 2991, + 2992, 2992, 2997, 2998, 2987, 2989, 3002, 2996, 3001, 2998, + 2999, 2999, 3000, 3004, 3001, 3000, 3005, 3005, 3004, 3007, + 3006, 3008, 2997, 3009, 3002, 3006, 3013, 3008, 3010, 3010, - 3017, 3026, 3027, 3019, 3030, 3030, 3016, 3027, 3032, 3032, - 3033, 3025, 3034, 3035, 3037, 3033, 3036, 3038, 3038, 3035, - 3026, 3041, 3037, 3043, 3039, 3041, 3034, 3042, 3036, 3039, - 3044, 3045, 3042, 3046, 3047, 3050, 3045, 3051, 3049, 3052, - 3047, 0, 3054, 3043, 3056, 3046, 3049, 3055, 3057, 3062, - 3044, 3058, 3061, 3060, 3050, 3062, 3058, 3051, 3060, 3052, - 3054, 3056, 3056, 3055, 3065, 3063, 3067, 3078, 3066, 3057, - 3063, 3066, 3061, 3070, 3070, 3071, 3071, 3072, 0, 3067, - 3077, 3072, 3076, 3076, 3065, 3077, 3078, 3079, 3079, 3081, - 3081, 3082, 3082, 3085, 3082, 3083, 3083, 3085, 3083, 3084, + 3012, 3014, 3015, 3016, 3016, 3017, 3018, 3019, 3007, 0, + 3009, 3009, 3012, 3024, 3013, 3015, 3019, 3021, 3021, 3022, + 3022, 3030, 3018, 3023, 3017, 3025, 3014, 3024, 3023, 3029, + 3025, 3026, 3026, 3027, 3027, 3028, 3028, 3031, 3037, 3032, + 3034, 3034, 3029, 3031, 3032, 3039, 3040, 3030, 3042, 3046, + 3041, 3043, 3043, 3045, 3045, 3047, 3049, 3037, 3048, 3051, + 3051, 3055, 3050, 3052, 3052, 3056, 3064, 3039, 3040, 3041, + 3042, 3050, 3048, 3054, 3047, 3046, 3049, 3057, 3063, 3054, + 3064, 3055, 3057, 3063, 3056, 3060, 3060, 3062, 3062, 3065, + 3066, 3067, 3068, 3068, 3071, 3065, 3069, 3073, 3071, 3067, - 3084, 3087, 3084, 3088, 3089, 3089, 3087, 3090, 3091, 3094, - 3095, 3096, 3088, 3097, 3097, 3100, 3096, 3101, 3103, 3102, - 3104, 3106, 3091, 3102, 3101, 3090, 3107, 3103, 3109, 3094, - 3095, 3107, 3108, 3108, 3113, 3104, 3118, 3109, 0, 3106, - 3100, 3110, 3110, 3111, 3111, 3112, 3112, 3114, 3115, 3113, - 3116, 3119, 3114, 3117, 3120, 3116, 3116, 3115, 3121, 3117, - 3115, 3118, 3122, 3121, 3123, 3125, 3119, 3122, 3124, 3124, - 3126, 3125, 3127, 3127, 3129, 3120, 3126, 3128, 3128, 3130, - 3133, 3133, 3136, 3123, 3130, 3135, 3135, 3139, 3139, 3129, - 3147, 3136, 3140, 3140, 3141, 3141, 3142, 3142, 3143, 3143, + 3072, 3069, 3066, 3074, 3075, 3072, 3076, 3077, 3079, 3075, + 3080, 3081, 3082, 3077, 3085, 3084, 3079, 3073, 3076, 3086, + 3087, 3088, 3090, 3074, 3091, 3095, 3088, 3090, 3092, 3080, + 3085, 3081, 3082, 3084, 3092, 3093, 3086, 3086, 3097, 3096, + 3093, 3087, 3096, 3108, 3091, 3095, 3100, 3100, 3101, 3101, + 3102, 3097, 3106, 3106, 3102, 3107, 3109, 3109, 3111, 3111, + 3107, 3116, 3108, 3112, 3112, 3116, 3112, 3113, 3113, 3119, + 3113, 3114, 3114, 3115, 3115, 3118, 3115, 3121, 3119, 3122, + 3118, 3120, 3120, 3125, 3126, 3127, 3128, 3128, 3131, 3132, + 3127, 3134, 3135, 3122, 3133, 3121, 3132, 3137, 3133, 3144, - 3144, 3144, 3145, 3145, 3146, 3146, 3149, 3150, 3150, 3151, - 3152, 3153, 3157, 3155, 3159, 3149, 3147, 3158, 3151, 3156, - 3156, 3163, 3152, 3160, 3160, 3167, 3159, 3157, 3161, 3161, - 3158, 3153, 3155, 3164, 3164, 3168, 3163, 3169, 3168, 3170, - 3170, 3171, 3173, 3167, 3174, 3173, 3175, 3176, 3177, 3179, - 3174, 3178, 3176, 3182, 3185, 3181, 3186, 3189, 3185, 3171, - 3175, 3181, 3182, 3169, 3201, 3179, 3206, 3177, 3198, 3178, - 3208, 3186, 3199, 3198, 3208, 3199, 3209, 3201, 3202, 3202, - 3203, 3203, 3207, 3189, 3204, 3204, 3211, 3213, 3214, 3206, - 3215, 3207, 3216, 3217, 3216, 3215, 3209, 3218, 3218, 3214, + 3134, 3138, 3140, 3125, 3126, 3145, 3138, 3135, 3139, 3139, + 3145, 3140, 3149, 3131, 3144, 3137, 3141, 3141, 3142, 3142, + 3143, 3143, 3146, 3147, 3148, 3150, 3151, 3152, 3147, 3147, + 3148, 3146, 3152, 3153, 3146, 3154, 3184, 3149, 3153, 3156, + 3150, 3155, 3155, 3157, 3160, 3156, 0, 3151, 3184, 3157, + 3158, 3158, 3159, 3159, 3154, 3161, 3164, 3164, 3167, 3160, + 3161, 3166, 3166, 3170, 3170, 3171, 3171, 3167, 3172, 3172, + 3173, 3173, 3175, 3175, 3176, 3176, 3177, 3177, 3178, 3178, + 3179, 3181, 3182, 3182, 3183, 3185, 3188, 3188, 3187, 3189, + 3181, 3191, 3199, 3183, 3195, 3190, 3192, 3192, 3193, 3193, - 3211, 3219, 3220, 3222, 3221, 3223, 3225, 3227, 3217, 3224, - 3213, 3226, 3227, 3228, 3219, 3225, 3230, 3230, 3231, 3222, - 3229, 3220, 3221, 3226, 3224, 3229, 3232, 3236, 3237, 3245, - 3223, 3232, 3238, 3238, 3228, 3239, 3240, 3240, 3231, 3241, - 3241, 3236, 3242, 3242, 3239, 3243, 3243, 3244, 3237, 3245, - 3246, 3247, 3248, 3246, 3249, 3250, 3247, 3248, 3251, 3252, - 3253, 3256, 3254, 3260, 3251, 3261, 3244, 3254, 3255, 3255, - 3250, 3264, 3253, 3252, 3257, 3257, 3259, 3259, 3260, 3249, - 3266, 3256, 3262, 3262, 3261, 3271, 3264, 3269, 3269, 3270, - 3270, 3272, 3275, 3271, 3273, 3274, 3276, 3277, 3266, 3278, + 3196, 3196, 3201, 3191, 3189, 3185, 3179, 3187, 3190, 3195, + 3199, 3200, 3202, 3202, 3200, 3203, 3205, 3206, 3207, 3205, + 3208, 3209, 3211, 3206, 3210, 3208, 3217, 3214, 3201, 3213, + 3217, 3218, 3207, 3203, 3221, 3213, 3214, 3233, 3211, 3230, + 3209, 3238, 3210, 3240, 3230, 3231, 3218, 3240, 3231, 3239, + 3233, 3234, 3234, 3235, 3235, 3236, 3236, 3241, 3239, 3243, + 3221, 3245, 3247, 3246, 3238, 3249, 3248, 3247, 3248, 3250, + 3250, 3252, 3251, 3243, 3246, 3253, 3254, 3241, 3255, 3256, + 3249, 3259, 3257, 3258, 3245, 3251, 3259, 3260, 3262, 3262, + 3252, 3257, 3254, 3253, 3256, 3258, 3261, 3263, 3268, 3264, - 3273, 3274, 3279, 3279, 3278, 3284, 3275, 3281, 3281, 3276, - 3272, 3285, 3290, 3287, 3288, 3291, 3277, 3292, 3288, 3295, - 3291, 3293, 3294, 3296, 3297, 3301, 3284, 3287, 3296, 3297, - 3302, 3285, 3290, 3303, 3293, 3294, 3292, 3306, 3295, 3298, - 3298, 3304, 3304, 3306, 3305, 3301, 3307, 3307, 3302, 3305, - 3308, 3309, 3303, 3310, 3311, 3308, 3309, 3312, 3310, 3314, - 3314, 3315, 3319, 3312, 3316, 3316, 3315, 3318, 3320, 3321, - 3322, 3318, 3323, 3311, 3324, 3320, 3332, 3325, 3323, 3327, - 3327, 3319, 3329, 3329, 3333, 3330, 3331, 3334, 3321, 3322, - 3325, 3331, 3337, 3324, 3330, 3332, 3336, 3330, 3335, 3335, + 3269, 3261, 3271, 3255, 3264, 3270, 3270, 3276, 3260, 3272, + 3272, 3271, 3268, 3273, 3273, 3274, 3274, 3263, 3275, 3275, + 3269, 3277, 3278, 3279, 3280, 3278, 3276, 3281, 3279, 3280, + 3282, 3283, 3284, 3286, 3288, 3285, 3292, 3283, 3286, 3287, + 3287, 3277, 3289, 3289, 3293, 3282, 3284, 3285, 3291, 3291, + 3296, 3292, 3281, 3298, 3288, 3294, 3294, 3301, 3301, 3302, + 3302, 3303, 3304, 3293, 3305, 3296, 3306, 3308, 3307, 3303, + 3305, 3298, 3306, 3309, 3310, 3311, 3311, 3313, 3313, 3310, + 3308, 3304, 3307, 3316, 3319, 3317, 3320, 3322, 3323, 3324, + 3320, 3333, 3309, 3323, 3327, 3328, 3325, 3326, 3319, 3334, - 3334, 3336, 3339, 3333, 3341, 3337, 3340, 3340, 3342, 3342, - 3343, 3343, 3344, 3345, 3346, 3347, 3347, 3344, 0, 3348, - 3345, 3350, 3350, 3341, 3348, 3349, 3353, 3349, 3339, 3351, - 3352, 3355, 3358, 3346, 3354, 3362, 3351, 3352, 3360, 3354, - 3357, 3357, 3361, 3360, 3363, 3353, 3367, 3361, 3364, 3364, - 3355, 3358, 3366, 3366, 3362, 3368, 3369, 3369, 3370, 3370, - 3371, 3373, 3373, 3363, 3375, 3367, 3381, 3371, 3374, 3374, - 3377, 3375, 3380, 3382, 3368, 3377, 0, 3380, 3383, 3383, - 3384, 3384, 0, 0, 0, 3381, 0, 0, 0, 0, - 0, 0, 3382, 3388, 3388, 3388, 3388, 3388, 3388, 3388, + 3328, 3329, 3330, 3330, 3316, 3317, 3329, 3322, 3324, 3325, + 3326, 3333, 3335, 3327, 3336, 3336, 3337, 3334, 3338, 3339, + 3339, 3337, 3340, 3341, 3338, 3342, 3343, 3340, 3341, 3344, + 3342, 3335, 3346, 3346, 3347, 3344, 3348, 3348, 3350, 3347, + 3351, 3352, 3350, 3353, 3354, 3343, 3355, 3356, 3352, 3359, + 3359, 3357, 3355, 3361, 3361, 3363, 3362, 3364, 3365, 3351, + 3363, 3366, 3353, 3354, 3357, 3362, 3356, 3368, 3362, 3367, + 3367, 3369, 3368, 3371, 3366, 3373, 3364, 3365, 3372, 3372, + 3374, 3374, 3375, 3375, 3369, 3376, 3377, 3378, 3379, 3379, + 3376, 3380, 3385, 3377, 3373, 3381, 3380, 3381, 3383, 3371, - 3389, 3389, 3389, 3389, 3389, 3389, 3389, 3390, 3390, 3390, - 3390, 3390, 3390, 3390, 3391, 3391, 3391, 3391, 3391, 3391, - 3391, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3393, 3393, - 3393, 3393, 3393, 3393, 3393, 3394, 3394, 3394, 3394, 3394, - 3394, 3394, 3396, 3396, 0, 3396, 3396, 3396, 3396, 3397, - 3397, 0, 0, 0, 3397, 3397, 3398, 3398, 0, 0, - 3398, 0, 3398, 3399, 0, 0, 0, 0, 0, 3399, - 3400, 3400, 0, 0, 0, 3400, 3400, 3401, 0, 0, - 0, 0, 0, 3401, 3402, 3402, 0, 3402, 3402, 3402, - 3402, 3403, 0, 0, 0, 0, 0, 3403, 3404, 3404, + 3382, 3382, 3384, 3386, 3387, 3383, 3378, 3390, 3386, 3384, + 3392, 3385, 3389, 3389, 3393, 3392, 3394, 3395, 3399, 3393, + 3396, 3396, 3400, 3387, 3398, 3398, 3390, 3401, 3401, 3402, + 3402, 3403, 3405, 3405, 3413, 3394, 3395, 3399, 3403, 3406, + 3406, 3400, 3407, 3409, 3414, 3412, 3415, 3415, 3409, 3407, + 3412, 3416, 3416, 3413, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3414, 3420, 3420, 3420, 3420, 3420, 3420, + 3420, 3421, 3421, 3421, 3421, 3421, 3421, 3421, 3422, 3422, + 3422, 3422, 3422, 3422, 3422, 3423, 3423, 3423, 3423, 3423, + 3423, 3423, 3424, 3424, 3424, 3424, 3424, 3424, 3424, 3425, - 0, 0, 0, 3404, 3404, 3405, 3405, 0, 3405, 3405, - 3405, 3405, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, - 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, - 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, - 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, - 3387, 3387, 3387 + 3425, 3425, 3425, 3425, 3425, 3425, 3426, 3426, 3426, 3426, + 3426, 3426, 3426, 3428, 3428, 0, 3428, 3428, 3428, 3428, + 3429, 3429, 0, 0, 0, 3429, 3429, 3430, 3430, 0, + 0, 3430, 0, 3430, 3431, 0, 0, 0, 0, 0, + 3431, 3432, 3432, 0, 0, 0, 3432, 3432, 3433, 0, + 0, 0, 0, 0, 3433, 3434, 3434, 0, 3434, 3434, + 3434, 3434, 3435, 0, 0, 0, 0, 0, 3435, 3436, + 3436, 0, 0, 0, 3436, 3436, 3437, 3437, 0, 3437, + 3437, 3437, 3437, 3419, 3419, 3419, 3419, 3419, 3419, 3419, + 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, + + 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, + 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, + 3419, 3419, 3419, 3419 } ; static yy_state_type yy_last_accepting_state; @@ -3212,7 +3238,7 @@ static void config_end_include(void) } #endif -#line 3213 "" +#line 3239 "" #define YY_NO_INPUT 1 #line 191 "./util/configlexer.lex" #ifndef YY_NO_UNPUT @@ -3221,9 +3247,9 @@ static void config_end_include(void) #ifndef YY_NO_INPUT #define YY_NO_INPUT 1 #endif -#line 3222 "" +#line 3248 "" -#line 3224 "" +#line 3250 "" #define INITIAL 0 #define quotedstring 1 @@ -3447,7 +3473,7 @@ YY_DECL { #line 211 "./util/configlexer.lex" -#line 3448 "" +#line 3474 "" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -3480,13 +3506,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 >= 3388 ) + if ( yy_current_state >= 3420 ) 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] != 6613 ); + while ( yy_base[yy_current_state] != 6684 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -3631,77 +3657,77 @@ YY_RULE_SETUP case 24: YY_RULE_SETUP #line 238 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDNS_TCP_KEEPALIVE) } +{ YDVAR(1, VAR_MAX_REUSE_TCP_QUERIES) } YY_BREAK case 25: YY_RULE_SETUP #line 239 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDNS_TCP_KEEPALIVE_TIMEOUT) } +{ YDVAR(1, VAR_TCP_REUSE_TIMEOUT) } YY_BREAK case 26: YY_RULE_SETUP #line 240 "./util/configlexer.lex" -{ YDVAR(1, VAR_SSL_UPSTREAM) } +{ YDVAR(1, VAR_EDNS_TCP_KEEPALIVE) } YY_BREAK case 27: YY_RULE_SETUP #line 241 "./util/configlexer.lex" -{ YDVAR(1, VAR_SSL_UPSTREAM) } +{ YDVAR(1, VAR_EDNS_TCP_KEEPALIVE_TIMEOUT) } YY_BREAK case 28: YY_RULE_SETUP #line 242 "./util/configlexer.lex" -{ YDVAR(1, VAR_SSL_SERVICE_KEY) } +{ YDVAR(1, VAR_SSL_UPSTREAM) } YY_BREAK case 29: YY_RULE_SETUP #line 243 "./util/configlexer.lex" -{ YDVAR(1, VAR_SSL_SERVICE_KEY) } +{ YDVAR(1, VAR_SSL_UPSTREAM) } YY_BREAK case 30: YY_RULE_SETUP #line 244 "./util/configlexer.lex" -{ YDVAR(1, VAR_SSL_SERVICE_PEM) } +{ YDVAR(1, VAR_SSL_SERVICE_KEY) } YY_BREAK case 31: YY_RULE_SETUP #line 245 "./util/configlexer.lex" -{ YDVAR(1, VAR_SSL_SERVICE_PEM) } +{ YDVAR(1, VAR_SSL_SERVICE_KEY) } YY_BREAK case 32: YY_RULE_SETUP #line 246 "./util/configlexer.lex" -{ YDVAR(1, VAR_SSL_PORT) } +{ YDVAR(1, VAR_SSL_SERVICE_PEM) } YY_BREAK case 33: YY_RULE_SETUP #line 247 "./util/configlexer.lex" -{ YDVAR(1, VAR_SSL_PORT) } +{ YDVAR(1, VAR_SSL_SERVICE_PEM) } YY_BREAK case 34: YY_RULE_SETUP #line 248 "./util/configlexer.lex" -{ YDVAR(1, VAR_TLS_CERT_BUNDLE) } +{ YDVAR(1, VAR_SSL_PORT) } YY_BREAK case 35: YY_RULE_SETUP #line 249 "./util/configlexer.lex" -{ YDVAR(1, VAR_TLS_CERT_BUNDLE) } +{ YDVAR(1, VAR_SSL_PORT) } YY_BREAK case 36: YY_RULE_SETUP #line 250 "./util/configlexer.lex" -{ YDVAR(1, VAR_TLS_WIN_CERT) } +{ YDVAR(1, VAR_TLS_CERT_BUNDLE) } YY_BREAK case 37: YY_RULE_SETUP #line 251 "./util/configlexer.lex" -{ YDVAR(1, VAR_TLS_ADDITIONAL_PORT) } +{ YDVAR(1, VAR_TLS_CERT_BUNDLE) } YY_BREAK case 38: YY_RULE_SETUP #line 252 "./util/configlexer.lex" -{ YDVAR(1, VAR_TLS_ADDITIONAL_PORT) } +{ YDVAR(1, VAR_TLS_WIN_CERT) } YY_BREAK case 39: YY_RULE_SETUP @@ -3716,1186 +3742,1186 @@ YY_RULE_SETUP case 41: YY_RULE_SETUP #line 255 "./util/configlexer.lex" -{ YDVAR(1, VAR_TLS_SESSION_TICKET_KEYS) } +{ YDVAR(1, VAR_TLS_ADDITIONAL_PORT) } YY_BREAK case 42: YY_RULE_SETUP #line 256 "./util/configlexer.lex" -{ YDVAR(1, VAR_TLS_CIPHERS) } +{ YDVAR(1, VAR_TLS_ADDITIONAL_PORT) } YY_BREAK case 43: YY_RULE_SETUP #line 257 "./util/configlexer.lex" -{ YDVAR(1, VAR_TLS_CIPHERSUITES) } +{ YDVAR(1, VAR_TLS_SESSION_TICKET_KEYS) } YY_BREAK case 44: YY_RULE_SETUP #line 258 "./util/configlexer.lex" -{ YDVAR(1, VAR_TLS_USE_SNI) } +{ YDVAR(1, VAR_TLS_CIPHERS) } YY_BREAK case 45: YY_RULE_SETUP #line 259 "./util/configlexer.lex" -{ YDVAR(1, VAR_HTTPS_PORT) } +{ YDVAR(1, VAR_TLS_CIPHERSUITES) } YY_BREAK case 46: YY_RULE_SETUP #line 260 "./util/configlexer.lex" -{ YDVAR(1, VAR_HTTP_ENDPOINT) } +{ YDVAR(1, VAR_TLS_USE_SNI) } YY_BREAK case 47: YY_RULE_SETUP #line 261 "./util/configlexer.lex" -{ YDVAR(1, VAR_HTTP_MAX_STREAMS) } +{ YDVAR(1, VAR_HTTPS_PORT) } YY_BREAK case 48: YY_RULE_SETUP #line 262 "./util/configlexer.lex" -{ YDVAR(1, VAR_HTTP_QUERY_BUFFER_SIZE) } +{ YDVAR(1, VAR_HTTP_ENDPOINT) } YY_BREAK case 49: YY_RULE_SETUP #line 263 "./util/configlexer.lex" -{ YDVAR(1, VAR_HTTP_RESPONSE_BUFFER_SIZE) } +{ YDVAR(1, VAR_HTTP_MAX_STREAMS) } YY_BREAK case 50: YY_RULE_SETUP #line 264 "./util/configlexer.lex" -{ YDVAR(1, VAR_HTTP_NODELAY) } +{ YDVAR(1, VAR_HTTP_QUERY_BUFFER_SIZE) } YY_BREAK case 51: YY_RULE_SETUP #line 265 "./util/configlexer.lex" -{ YDVAR(1, VAR_HTTP_NOTLS_DOWNSTREAM) } +{ YDVAR(1, VAR_HTTP_RESPONSE_BUFFER_SIZE) } YY_BREAK case 52: YY_RULE_SETUP #line 266 "./util/configlexer.lex" -{ YDVAR(1, VAR_USE_SYSTEMD) } +{ YDVAR(1, VAR_HTTP_NODELAY) } YY_BREAK case 53: YY_RULE_SETUP #line 267 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_DAEMONIZE) } +{ YDVAR(1, VAR_HTTP_NOTLS_DOWNSTREAM) } YY_BREAK case 54: YY_RULE_SETUP #line 268 "./util/configlexer.lex" -{ YDVAR(1, VAR_INTERFACE) } +{ YDVAR(1, VAR_USE_SYSTEMD) } YY_BREAK case 55: YY_RULE_SETUP #line 269 "./util/configlexer.lex" -{ YDVAR(1, VAR_INTERFACE) } +{ YDVAR(1, VAR_DO_DAEMONIZE) } YY_BREAK case 56: YY_RULE_SETUP #line 270 "./util/configlexer.lex" -{ YDVAR(1, VAR_OUTGOING_INTERFACE) } +{ YDVAR(1, VAR_INTERFACE) } YY_BREAK case 57: YY_RULE_SETUP #line 271 "./util/configlexer.lex" -{ YDVAR(1, VAR_INTERFACE_AUTOMATIC) } +{ YDVAR(1, VAR_INTERFACE) } YY_BREAK case 58: YY_RULE_SETUP #line 272 "./util/configlexer.lex" -{ YDVAR(1, VAR_SO_RCVBUF) } +{ YDVAR(1, VAR_OUTGOING_INTERFACE) } YY_BREAK case 59: YY_RULE_SETUP #line 273 "./util/configlexer.lex" -{ YDVAR(1, VAR_SO_SNDBUF) } +{ YDVAR(1, VAR_INTERFACE_AUTOMATIC) } YY_BREAK case 60: YY_RULE_SETUP #line 274 "./util/configlexer.lex" -{ YDVAR(1, VAR_SO_REUSEPORT) } +{ YDVAR(1, VAR_SO_RCVBUF) } YY_BREAK case 61: YY_RULE_SETUP #line 275 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_TRANSPARENT) } +{ YDVAR(1, VAR_SO_SNDBUF) } YY_BREAK case 62: YY_RULE_SETUP #line 276 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_FREEBIND) } +{ YDVAR(1, VAR_SO_REUSEPORT) } YY_BREAK case 63: YY_RULE_SETUP #line 277 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_DSCP) } +{ YDVAR(1, VAR_IP_TRANSPARENT) } YY_BREAK case 64: YY_RULE_SETUP #line 278 "./util/configlexer.lex" -{ YDVAR(1, VAR_CHROOT) } +{ YDVAR(1, VAR_IP_FREEBIND) } YY_BREAK case 65: YY_RULE_SETUP #line 279 "./util/configlexer.lex" -{ YDVAR(1, VAR_USERNAME) } +{ YDVAR(1, VAR_IP_DSCP) } YY_BREAK case 66: YY_RULE_SETUP #line 280 "./util/configlexer.lex" -{ YDVAR(1, VAR_DIRECTORY) } +{ YDVAR(1, VAR_CHROOT) } YY_BREAK case 67: YY_RULE_SETUP #line 281 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOGFILE) } +{ YDVAR(1, VAR_USERNAME) } YY_BREAK case 68: YY_RULE_SETUP #line 282 "./util/configlexer.lex" -{ YDVAR(1, VAR_PIDFILE) } +{ YDVAR(1, VAR_DIRECTORY) } YY_BREAK case 69: YY_RULE_SETUP #line 283 "./util/configlexer.lex" -{ YDVAR(1, VAR_ROOT_HINTS) } +{ YDVAR(1, VAR_LOGFILE) } YY_BREAK case 70: YY_RULE_SETUP #line 284 "./util/configlexer.lex" -{ YDVAR(1, VAR_STREAM_WAIT_SIZE) } +{ YDVAR(1, VAR_PIDFILE) } YY_BREAK case 71: YY_RULE_SETUP #line 285 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDNS_BUFFER_SIZE) } +{ YDVAR(1, VAR_ROOT_HINTS) } YY_BREAK case 72: YY_RULE_SETUP #line 286 "./util/configlexer.lex" -{ YDVAR(1, VAR_MSG_BUFFER_SIZE) } +{ YDVAR(1, VAR_STREAM_WAIT_SIZE) } YY_BREAK case 73: YY_RULE_SETUP #line 287 "./util/configlexer.lex" -{ YDVAR(1, VAR_MSG_CACHE_SIZE) } +{ YDVAR(1, VAR_EDNS_BUFFER_SIZE) } YY_BREAK case 74: YY_RULE_SETUP #line 288 "./util/configlexer.lex" -{ YDVAR(1, VAR_MSG_CACHE_SLABS) } +{ YDVAR(1, VAR_MSG_BUFFER_SIZE) } YY_BREAK case 75: YY_RULE_SETUP #line 289 "./util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_CACHE_SIZE) } +{ YDVAR(1, VAR_MSG_CACHE_SIZE) } YY_BREAK case 76: YY_RULE_SETUP #line 290 "./util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_CACHE_SLABS) } +{ YDVAR(1, VAR_MSG_CACHE_SLABS) } YY_BREAK case 77: YY_RULE_SETUP #line 291 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHE_MAX_TTL) } +{ YDVAR(1, VAR_RRSET_CACHE_SIZE) } YY_BREAK case 78: YY_RULE_SETUP #line 292 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHE_MAX_NEGATIVE_TTL) } +{ YDVAR(1, VAR_RRSET_CACHE_SLABS) } YY_BREAK case 79: YY_RULE_SETUP #line 293 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHE_MIN_TTL) } +{ YDVAR(1, VAR_CACHE_MAX_TTL) } YY_BREAK case 80: YY_RULE_SETUP #line 294 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_HOST_TTL) } +{ YDVAR(1, VAR_CACHE_MAX_NEGATIVE_TTL) } YY_BREAK case 81: YY_RULE_SETUP #line 295 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_LAME_TTL) } +{ YDVAR(1, VAR_CACHE_MIN_TTL) } YY_BREAK case 82: YY_RULE_SETUP #line 296 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_SLABS) } +{ YDVAR(1, VAR_INFRA_HOST_TTL) } YY_BREAK case 83: YY_RULE_SETUP #line 297 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_NUMHOSTS) } +{ YDVAR(1, VAR_INFRA_LAME_TTL) } YY_BREAK case 84: YY_RULE_SETUP #line 298 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_LAME_SIZE) } +{ YDVAR(1, VAR_INFRA_CACHE_SLABS) } YY_BREAK case 85: YY_RULE_SETUP #line 299 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_MIN_RTT) } +{ YDVAR(1, VAR_INFRA_CACHE_NUMHOSTS) } YY_BREAK case 86: YY_RULE_SETUP #line 300 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_KEEP_PROBING) } +{ YDVAR(1, VAR_INFRA_CACHE_LAME_SIZE) } YY_BREAK case 87: YY_RULE_SETUP #line 301 "./util/configlexer.lex" -{ YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) } +{ YDVAR(1, VAR_INFRA_CACHE_MIN_RTT) } YY_BREAK case 88: YY_RULE_SETUP #line 302 "./util/configlexer.lex" -{ YDVAR(1, VAR_JOSTLE_TIMEOUT) } +{ YDVAR(1, VAR_INFRA_KEEP_PROBING) } YY_BREAK case 89: YY_RULE_SETUP #line 303 "./util/configlexer.lex" -{ YDVAR(1, VAR_DELAY_CLOSE) } +{ YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) } YY_BREAK case 90: YY_RULE_SETUP #line 304 "./util/configlexer.lex" -{ YDVAR(1, VAR_UDP_CONNECT) } +{ YDVAR(1, VAR_JOSTLE_TIMEOUT) } YY_BREAK case 91: YY_RULE_SETUP #line 305 "./util/configlexer.lex" -{ YDVAR(1, VAR_TARGET_FETCH_POLICY) } +{ YDVAR(1, VAR_DELAY_CLOSE) } YY_BREAK case 92: YY_RULE_SETUP #line 306 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) } +{ YDVAR(1, VAR_UDP_CONNECT) } YY_BREAK case 93: YY_RULE_SETUP #line 307 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_LARGE_QUERIES) } +{ YDVAR(1, VAR_TARGET_FETCH_POLICY) } YY_BREAK case 94: YY_RULE_SETUP #line 308 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_GLUE) } +{ YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) } YY_BREAK case 95: YY_RULE_SETUP #line 309 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) } +{ YDVAR(1, VAR_HARDEN_LARGE_QUERIES) } YY_BREAK case 96: YY_RULE_SETUP #line 310 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) } +{ YDVAR(1, VAR_HARDEN_GLUE) } YY_BREAK case 97: YY_RULE_SETUP #line 311 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) } +{ YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) } YY_BREAK case 98: YY_RULE_SETUP #line 312 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_ALGO_DOWNGRADE) } +{ YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) } YY_BREAK case 99: YY_RULE_SETUP #line 313 "./util/configlexer.lex" -{ YDVAR(1, VAR_USE_CAPS_FOR_ID) } +{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) } YY_BREAK case 100: YY_RULE_SETUP #line 314 "./util/configlexer.lex" -{ YDVAR(1, VAR_CAPS_WHITELIST) } +{ YDVAR(1, VAR_HARDEN_ALGO_DOWNGRADE) } YY_BREAK case 101: YY_RULE_SETUP #line 315 "./util/configlexer.lex" -{ YDVAR(1, VAR_CAPS_WHITELIST) } +{ YDVAR(1, VAR_USE_CAPS_FOR_ID) } YY_BREAK case 102: YY_RULE_SETUP #line 316 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) } +{ YDVAR(1, VAR_CAPS_WHITELIST) } YY_BREAK case 103: YY_RULE_SETUP #line 317 "./util/configlexer.lex" -{ YDVAR(1, VAR_PRIVATE_ADDRESS) } +{ YDVAR(1, VAR_CAPS_WHITELIST) } YY_BREAK case 104: YY_RULE_SETUP #line 318 "./util/configlexer.lex" -{ YDVAR(1, VAR_PRIVATE_DOMAIN) } +{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) } YY_BREAK case 105: YY_RULE_SETUP #line 319 "./util/configlexer.lex" -{ YDVAR(1, VAR_PREFETCH_KEY) } +{ YDVAR(1, VAR_PRIVATE_ADDRESS) } YY_BREAK case 106: YY_RULE_SETUP #line 320 "./util/configlexer.lex" -{ YDVAR(1, VAR_PREFETCH) } +{ YDVAR(1, VAR_PRIVATE_DOMAIN) } YY_BREAK case 107: YY_RULE_SETUP #line 321 "./util/configlexer.lex" -{ YDVAR(1, VAR_DENY_ANY) } +{ YDVAR(1, VAR_PREFETCH_KEY) } YY_BREAK case 108: YY_RULE_SETUP #line 322 "./util/configlexer.lex" -{ YDVAR(0, VAR_STUB_ZONE) } +{ YDVAR(1, VAR_PREFETCH) } YY_BREAK case 109: YY_RULE_SETUP #line 323 "./util/configlexer.lex" -{ YDVAR(1, VAR_NAME) } +{ YDVAR(1, VAR_DENY_ANY) } YY_BREAK case 110: YY_RULE_SETUP #line 324 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_ADDR) } +{ YDVAR(0, VAR_STUB_ZONE) } YY_BREAK case 111: YY_RULE_SETUP #line 325 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_HOST) } +{ YDVAR(1, VAR_NAME) } YY_BREAK case 112: YY_RULE_SETUP #line 326 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_PRIME) } +{ YDVAR(1, VAR_STUB_ADDR) } YY_BREAK case 113: YY_RULE_SETUP #line 327 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_FIRST) } +{ YDVAR(1, VAR_STUB_HOST) } YY_BREAK case 114: YY_RULE_SETUP #line 328 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_NO_CACHE) } +{ YDVAR(1, VAR_STUB_PRIME) } YY_BREAK case 115: YY_RULE_SETUP #line 329 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_SSL_UPSTREAM) } +{ YDVAR(1, VAR_STUB_FIRST) } YY_BREAK case 116: YY_RULE_SETUP #line 330 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_SSL_UPSTREAM) } +{ YDVAR(1, VAR_STUB_NO_CACHE) } YY_BREAK case 117: YY_RULE_SETUP #line 331 "./util/configlexer.lex" -{ YDVAR(0, VAR_FORWARD_ZONE) } +{ YDVAR(1, VAR_STUB_SSL_UPSTREAM) } YY_BREAK case 118: YY_RULE_SETUP #line 332 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_ADDR) } +{ YDVAR(1, VAR_STUB_SSL_UPSTREAM) } YY_BREAK case 119: YY_RULE_SETUP #line 333 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_HOST) } +{ YDVAR(0, VAR_FORWARD_ZONE) } YY_BREAK case 120: YY_RULE_SETUP #line 334 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_FIRST) } +{ YDVAR(1, VAR_FORWARD_ADDR) } YY_BREAK case 121: YY_RULE_SETUP #line 335 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_NO_CACHE) } +{ YDVAR(1, VAR_FORWARD_HOST) } YY_BREAK case 122: YY_RULE_SETUP #line 336 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) } +{ YDVAR(1, VAR_FORWARD_FIRST) } YY_BREAK case 123: YY_RULE_SETUP #line 337 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) } +{ YDVAR(1, VAR_FORWARD_NO_CACHE) } YY_BREAK case 124: YY_RULE_SETUP #line 338 "./util/configlexer.lex" -{ YDVAR(0, VAR_AUTH_ZONE) } +{ YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) } YY_BREAK case 125: YY_RULE_SETUP #line 339 "./util/configlexer.lex" -{ YDVAR(0, VAR_RPZ) } +{ YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) } YY_BREAK case 126: YY_RULE_SETUP #line 340 "./util/configlexer.lex" -{ YDVAR(1, VAR_TAGS) } +{ YDVAR(0, VAR_AUTH_ZONE) } YY_BREAK case 127: YY_RULE_SETUP #line 341 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_ACTION_OVERRIDE) } +{ YDVAR(0, VAR_RPZ) } YY_BREAK case 128: YY_RULE_SETUP #line 342 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_CNAME_OVERRIDE) } +{ YDVAR(1, VAR_TAGS) } YY_BREAK case 129: YY_RULE_SETUP #line 343 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_LOG) } +{ YDVAR(1, VAR_RPZ_ACTION_OVERRIDE) } YY_BREAK case 130: YY_RULE_SETUP #line 344 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_LOG_NAME) } +{ YDVAR(1, VAR_RPZ_CNAME_OVERRIDE) } YY_BREAK case 131: YY_RULE_SETUP #line 345 "./util/configlexer.lex" -{ YDVAR(1, VAR_ZONEFILE) } +{ YDVAR(1, VAR_RPZ_LOG) } YY_BREAK case 132: YY_RULE_SETUP #line 346 "./util/configlexer.lex" -{ YDVAR(1, VAR_MASTER) } +{ YDVAR(1, VAR_RPZ_LOG_NAME) } YY_BREAK case 133: YY_RULE_SETUP #line 347 "./util/configlexer.lex" -{ YDVAR(1, VAR_MASTER) } +{ YDVAR(1, VAR_ZONEFILE) } YY_BREAK case 134: YY_RULE_SETUP #line 348 "./util/configlexer.lex" -{ YDVAR(1, VAR_URL) } +{ YDVAR(1, VAR_MASTER) } YY_BREAK case 135: YY_RULE_SETUP #line 349 "./util/configlexer.lex" -{ YDVAR(1, VAR_ALLOW_NOTIFY) } +{ YDVAR(1, VAR_MASTER) } YY_BREAK case 136: YY_RULE_SETUP #line 350 "./util/configlexer.lex" -{ YDVAR(1, VAR_FOR_DOWNSTREAM) } +{ YDVAR(1, VAR_URL) } YY_BREAK case 137: YY_RULE_SETUP #line 351 "./util/configlexer.lex" -{ YDVAR(1, VAR_FOR_UPSTREAM) } +{ YDVAR(1, VAR_ALLOW_NOTIFY) } YY_BREAK case 138: YY_RULE_SETUP #line 352 "./util/configlexer.lex" -{ YDVAR(1, VAR_FALLBACK_ENABLED) } +{ YDVAR(1, VAR_FOR_DOWNSTREAM) } YY_BREAK case 139: YY_RULE_SETUP #line 353 "./util/configlexer.lex" -{ YDVAR(0, VAR_VIEW) } +{ YDVAR(1, VAR_FOR_UPSTREAM) } YY_BREAK case 140: YY_RULE_SETUP #line 354 "./util/configlexer.lex" -{ YDVAR(1, VAR_VIEW_FIRST) } +{ YDVAR(1, VAR_FALLBACK_ENABLED) } YY_BREAK case 141: YY_RULE_SETUP #line 355 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } +{ YDVAR(0, VAR_VIEW) } YY_BREAK case 142: YY_RULE_SETUP #line 356 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } +{ YDVAR(1, VAR_VIEW_FIRST) } YY_BREAK case 143: YY_RULE_SETUP #line 357 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL) } +{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } YY_BREAK case 144: YY_RULE_SETUP #line 358 "./util/configlexer.lex" -{ YDVAR(1, VAR_SEND_CLIENT_SUBNET) } +{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } YY_BREAK case 145: YY_RULE_SETUP #line 359 "./util/configlexer.lex" -{ YDVAR(1, VAR_CLIENT_SUBNET_ZONE) } +{ YDVAR(2, VAR_ACCESS_CONTROL) } YY_BREAK case 146: YY_RULE_SETUP #line 360 "./util/configlexer.lex" -{ YDVAR(1, VAR_CLIENT_SUBNET_ALWAYS_FORWARD) } +{ YDVAR(1, VAR_SEND_CLIENT_SUBNET) } YY_BREAK case 147: YY_RULE_SETUP #line 361 "./util/configlexer.lex" -{ YDVAR(1, VAR_CLIENT_SUBNET_OPCODE) } +{ YDVAR(1, VAR_CLIENT_SUBNET_ZONE) } YY_BREAK case 148: YY_RULE_SETUP #line 362 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV4) } +{ YDVAR(1, VAR_CLIENT_SUBNET_ALWAYS_FORWARD) } YY_BREAK case 149: YY_RULE_SETUP #line 363 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV6) } +{ YDVAR(1, VAR_CLIENT_SUBNET_OPCODE) } YY_BREAK case 150: YY_RULE_SETUP #line 364 "./util/configlexer.lex" -{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV4) } +{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV4) } YY_BREAK case 151: YY_RULE_SETUP #line 365 "./util/configlexer.lex" -{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV6) } +{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV6) } YY_BREAK case 152: YY_RULE_SETUP #line 366 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV4) } +{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV4) } YY_BREAK case 153: YY_RULE_SETUP #line 367 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV6) } +{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV6) } YY_BREAK case 154: YY_RULE_SETUP #line 368 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_IDENTITY) } +{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV4) } YY_BREAK case 155: YY_RULE_SETUP #line 369 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_VERSION) } +{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV6) } YY_BREAK case 156: YY_RULE_SETUP #line 370 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_TRUSTANCHOR) } +{ YDVAR(1, VAR_HIDE_IDENTITY) } YY_BREAK case 157: YY_RULE_SETUP #line 371 "./util/configlexer.lex" -{ YDVAR(1, VAR_IDENTITY) } +{ YDVAR(1, VAR_HIDE_VERSION) } YY_BREAK case 158: YY_RULE_SETUP #line 372 "./util/configlexer.lex" -{ YDVAR(1, VAR_VERSION) } +{ YDVAR(1, VAR_HIDE_TRUSTANCHOR) } YY_BREAK case 159: YY_RULE_SETUP #line 373 "./util/configlexer.lex" -{ YDVAR(1, VAR_MODULE_CONF) } +{ YDVAR(1, VAR_IDENTITY) } YY_BREAK case 160: YY_RULE_SETUP #line 374 "./util/configlexer.lex" -{ YDVAR(1, VAR_DLV_ANCHOR) } +{ YDVAR(1, VAR_VERSION) } YY_BREAK case 161: YY_RULE_SETUP #line 375 "./util/configlexer.lex" -{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } +{ YDVAR(1, VAR_MODULE_CONF) } YY_BREAK case 162: YY_RULE_SETUP #line 376 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } +{ YDVAR(1, VAR_DLV_ANCHOR) } YY_BREAK case 163: YY_RULE_SETUP #line 377 "./util/configlexer.lex" -{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } +{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } YY_BREAK case 164: YY_RULE_SETUP #line 378 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } +{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } YY_BREAK case 165: YY_RULE_SETUP #line 379 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR) } +{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } YY_BREAK case 166: YY_RULE_SETUP #line 380 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR_SIGNALING) } +{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } YY_BREAK case 167: YY_RULE_SETUP #line 381 "./util/configlexer.lex" -{ YDVAR(1, VAR_ROOT_KEY_SENTINEL) } +{ YDVAR(1, VAR_TRUST_ANCHOR) } YY_BREAK case 168: YY_RULE_SETUP #line 382 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } +{ YDVAR(1, VAR_TRUST_ANCHOR_SIGNALING) } YY_BREAK case 169: YY_RULE_SETUP #line 383 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } +{ YDVAR(1, VAR_ROOT_KEY_SENTINEL) } YY_BREAK case 170: YY_RULE_SETUP #line 384 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } +{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } YY_BREAK case 171: YY_RULE_SETUP #line 385 "./util/configlexer.lex" -{ YDVAR(1, VAR_BOGUS_TTL) } +{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } YY_BREAK case 172: YY_RULE_SETUP #line 386 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } +{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } YY_BREAK case 173: YY_RULE_SETUP #line 387 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } +{ YDVAR(1, VAR_BOGUS_TTL) } YY_BREAK case 174: YY_RULE_SETUP #line 388 "./util/configlexer.lex" -{ YDVAR(1, VAR_AGGRESSIVE_NSEC) } +{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } YY_BREAK case 175: YY_RULE_SETUP #line 389 "./util/configlexer.lex" -{ YDVAR(1, VAR_IGNORE_CD_FLAG) } +{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } YY_BREAK case 176: YY_RULE_SETUP #line 390 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED) } +{ YDVAR(1, VAR_AGGRESSIVE_NSEC) } YY_BREAK case 177: YY_RULE_SETUP #line 391 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_TTL) } +{ YDVAR(1, VAR_IGNORE_CD_FLAG) } YY_BREAK case 178: YY_RULE_SETUP #line 392 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) } +{ YDVAR(1, VAR_SERVE_EXPIRED) } YY_BREAK case 179: YY_RULE_SETUP #line 393 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) } +{ YDVAR(1, VAR_SERVE_EXPIRED_TTL) } YY_BREAK case 180: YY_RULE_SETUP #line 394 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) } +{ YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) } YY_BREAK case 181: YY_RULE_SETUP #line 395 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_ORIGINAL_TTL) } +{ YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) } YY_BREAK case 182: YY_RULE_SETUP #line 396 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAKE_DSA) } +{ YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) } YY_BREAK case 183: YY_RULE_SETUP #line 397 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAKE_SHA1) } +{ YDVAR(1, VAR_SERVE_ORIGINAL_TTL) } YY_BREAK case 184: YY_RULE_SETUP #line 398 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_LOG_LEVEL) } +{ YDVAR(1, VAR_FAKE_DSA) } YY_BREAK case 185: YY_RULE_SETUP #line 399 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SIZE) } +{ YDVAR(1, VAR_FAKE_SHA1) } YY_BREAK case 186: YY_RULE_SETUP #line 400 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SLABS) } +{ YDVAR(1, VAR_VAL_LOG_LEVEL) } YY_BREAK case 187: YY_RULE_SETUP #line 401 "./util/configlexer.lex" -{ YDVAR(1, VAR_NEG_CACHE_SIZE) } +{ YDVAR(1, VAR_KEY_CACHE_SIZE) } YY_BREAK case 188: YY_RULE_SETUP #line 402 "./util/configlexer.lex" -{ - YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } +{ YDVAR(1, VAR_KEY_CACHE_SLABS) } YY_BREAK case 189: YY_RULE_SETUP -#line 404 "./util/configlexer.lex" -{ YDVAR(1, VAR_ZONEMD_PERMISSIVE_MODE) } +#line 403 "./util/configlexer.lex" +{ YDVAR(1, VAR_NEG_CACHE_SIZE) } YY_BREAK case 190: YY_RULE_SETUP -#line 405 "./util/configlexer.lex" -{ YDVAR(1, VAR_ZONEMD_REJECT_ABSENCE) } +#line 404 "./util/configlexer.lex" +{ + YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } YY_BREAK case 191: YY_RULE_SETUP #line 406 "./util/configlexer.lex" -{ YDVAR(1, VAR_ADD_HOLDDOWN) } +{ YDVAR(1, VAR_ZONEMD_PERMISSIVE_MODE) } YY_BREAK case 192: YY_RULE_SETUP #line 407 "./util/configlexer.lex" -{ YDVAR(1, VAR_DEL_HOLDDOWN) } +{ YDVAR(1, VAR_ZONEMD_REJECT_ABSENCE) } YY_BREAK case 193: YY_RULE_SETUP #line 408 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEEP_MISSING) } +{ YDVAR(1, VAR_ADD_HOLDDOWN) } YY_BREAK case 194: YY_RULE_SETUP #line 409 "./util/configlexer.lex" -{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } +{ YDVAR(1, VAR_DEL_HOLDDOWN) } YY_BREAK case 195: YY_RULE_SETUP #line 410 "./util/configlexer.lex" -{ YDVAR(1, VAR_USE_SYSLOG) } +{ YDVAR(1, VAR_KEEP_MISSING) } YY_BREAK case 196: YY_RULE_SETUP #line 411 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_IDENTITY) } +{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } YY_BREAK case 197: YY_RULE_SETUP #line 412 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TIME_ASCII) } +{ YDVAR(1, VAR_USE_SYSLOG) } YY_BREAK case 198: YY_RULE_SETUP #line 413 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_QUERIES) } +{ YDVAR(1, VAR_LOG_IDENTITY) } YY_BREAK case 199: YY_RULE_SETUP #line 414 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_REPLIES) } +{ YDVAR(1, VAR_LOG_TIME_ASCII) } YY_BREAK case 200: YY_RULE_SETUP #line 415 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) } +{ YDVAR(1, VAR_LOG_QUERIES) } YY_BREAK case 201: YY_RULE_SETUP #line 416 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) } +{ YDVAR(1, VAR_LOG_REPLIES) } YY_BREAK case 202: YY_RULE_SETUP #line 417 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_SERVFAIL) } +{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) } YY_BREAK case 203: YY_RULE_SETUP #line 418 "./util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE) } +{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) } YY_BREAK case 204: YY_RULE_SETUP #line 419 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA) } +{ YDVAR(1, VAR_LOG_SERVFAIL) } YY_BREAK case 205: YY_RULE_SETUP #line 420 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA_PTR) } +{ YDVAR(2, VAR_LOCAL_ZONE) } YY_BREAK case 206: YY_RULE_SETUP #line 421 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } +{ YDVAR(1, VAR_LOCAL_DATA) } YY_BREAK case 207: YY_RULE_SETUP #line 422 "./util/configlexer.lex" -{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } +{ YDVAR(1, VAR_LOCAL_DATA_PTR) } YY_BREAK case 208: YY_RULE_SETUP #line 423 "./util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_INTERVAL) } +{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } YY_BREAK case 209: YY_RULE_SETUP #line 424 "./util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } +{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } YY_BREAK case 210: YY_RULE_SETUP #line 425 "./util/configlexer.lex" -{ YDVAR(1, VAR_EXTENDED_STATISTICS) } +{ YDVAR(1, VAR_STATISTICS_INTERVAL) } YY_BREAK case 211: YY_RULE_SETUP #line 426 "./util/configlexer.lex" -{ YDVAR(1, VAR_SHM_ENABLE) } +{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } YY_BREAK case 212: YY_RULE_SETUP #line 427 "./util/configlexer.lex" -{ YDVAR(1, VAR_SHM_KEY) } +{ YDVAR(1, VAR_EXTENDED_STATISTICS) } YY_BREAK case 213: YY_RULE_SETUP #line 428 "./util/configlexer.lex" -{ YDVAR(0, VAR_REMOTE_CONTROL) } +{ YDVAR(1, VAR_SHM_ENABLE) } YY_BREAK case 214: YY_RULE_SETUP #line 429 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_ENABLE) } +{ YDVAR(1, VAR_SHM_KEY) } YY_BREAK case 215: YY_RULE_SETUP #line 430 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_INTERFACE) } +{ YDVAR(0, VAR_REMOTE_CONTROL) } YY_BREAK case 216: YY_RULE_SETUP #line 431 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_PORT) } +{ YDVAR(1, VAR_CONTROL_ENABLE) } YY_BREAK case 217: YY_RULE_SETUP #line 432 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_USE_CERT) } +{ YDVAR(1, VAR_CONTROL_INTERFACE) } YY_BREAK case 218: YY_RULE_SETUP #line 433 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_KEY_FILE) } +{ YDVAR(1, VAR_CONTROL_PORT) } YY_BREAK case 219: YY_RULE_SETUP #line 434 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_CERT_FILE) } +{ YDVAR(1, VAR_CONTROL_USE_CERT) } YY_BREAK case 220: YY_RULE_SETUP #line 435 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_KEY_FILE) } +{ YDVAR(1, VAR_SERVER_KEY_FILE) } YY_BREAK case 221: YY_RULE_SETUP #line 436 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_CERT_FILE) } +{ YDVAR(1, VAR_SERVER_CERT_FILE) } YY_BREAK case 222: YY_RULE_SETUP #line 437 "./util/configlexer.lex" -{ YDVAR(1, VAR_PYTHON_SCRIPT) } +{ YDVAR(1, VAR_CONTROL_KEY_FILE) } YY_BREAK case 223: YY_RULE_SETUP #line 438 "./util/configlexer.lex" -{ YDVAR(0, VAR_PYTHON) } +{ YDVAR(1, VAR_CONTROL_CERT_FILE) } YY_BREAK case 224: YY_RULE_SETUP #line 439 "./util/configlexer.lex" -{ YDVAR(1, VAR_DYNLIB_FILE) } +{ YDVAR(1, VAR_PYTHON_SCRIPT) } YY_BREAK case 225: YY_RULE_SETUP #line 440 "./util/configlexer.lex" -{ YDVAR(0, VAR_DYNLIB) } +{ YDVAR(0, VAR_PYTHON) } YY_BREAK case 226: YY_RULE_SETUP #line 441 "./util/configlexer.lex" -{ YDVAR(1, VAR_DOMAIN_INSECURE) } +{ YDVAR(1, VAR_DYNLIB_FILE) } YY_BREAK case 227: YY_RULE_SETUP #line 442 "./util/configlexer.lex" -{ YDVAR(1, VAR_MINIMAL_RESPONSES) } +{ YDVAR(0, VAR_DYNLIB) } YY_BREAK case 228: YY_RULE_SETUP #line 443 "./util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } +{ YDVAR(1, VAR_DOMAIN_INSECURE) } YY_BREAK case 229: YY_RULE_SETUP #line 444 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } +{ YDVAR(1, VAR_MINIMAL_RESPONSES) } YY_BREAK case 230: YY_RULE_SETUP #line 445 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_UDP_SIZE) } +{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } YY_BREAK case 231: YY_RULE_SETUP #line 446 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_PREFIX) } +{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } YY_BREAK case 232: YY_RULE_SETUP #line 447 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_SYNTHALL) } +{ YDVAR(1, VAR_MAX_UDP_SIZE) } YY_BREAK case 233: YY_RULE_SETUP #line 448 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } +{ YDVAR(1, VAR_DNS64_PREFIX) } YY_BREAK case 234: YY_RULE_SETUP #line 449 "./util/configlexer.lex" -{ YDVAR(1, VAR_DEFINE_TAG) } +{ YDVAR(1, VAR_DNS64_SYNTHALL) } YY_BREAK case 235: YY_RULE_SETUP #line 450 "./util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } +{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } YY_BREAK case 236: YY_RULE_SETUP #line 451 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } +{ YDVAR(1, VAR_DEFINE_TAG) } YY_BREAK case 237: YY_RULE_SETUP #line 452 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } +{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } YY_BREAK case 238: YY_RULE_SETUP #line 453 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } +{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } YY_BREAK case 239: YY_RULE_SETUP #line 454 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } YY_BREAK case 240: YY_RULE_SETUP #line 455 "./util/configlexer.lex" -{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } YY_BREAK case 241: YY_RULE_SETUP #line 456 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSTAP) } +{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } YY_BREAK case 242: YY_RULE_SETUP #line 457 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_ENABLE) } +{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } YY_BREAK case 243: YY_RULE_SETUP #line 458 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_BIDIRECTIONAL) } +{ YDVAR(0, VAR_DNSTAP) } YY_BREAK case 244: YY_RULE_SETUP #line 459 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } +{ YDVAR(1, VAR_DNSTAP_ENABLE) } YY_BREAK case 245: YY_RULE_SETUP #line 460 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IP) } +{ YDVAR(1, VAR_DNSTAP_BIDIRECTIONAL) } YY_BREAK case 246: YY_RULE_SETUP #line 461 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS) } +{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } YY_BREAK case 247: YY_RULE_SETUP #line 462 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } +{ YDVAR(1, VAR_DNSTAP_IP) } YY_BREAK case 248: YY_RULE_SETUP #line 463 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } +{ YDVAR(1, VAR_DNSTAP_TLS) } YY_BREAK case 249: YY_RULE_SETUP #line 464 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } +{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } YY_BREAK case 250: YY_RULE_SETUP -#line 466 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } +#line 465 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } YY_BREAK case 251: YY_RULE_SETUP -#line 468 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } +#line 466 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } YY_BREAK case 252: YY_RULE_SETUP -#line 469 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } +#line 468 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } YY_BREAK case 253: YY_RULE_SETUP #line 470 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IDENTITY) } +{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } YY_BREAK case 254: YY_RULE_SETUP #line 471 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_VERSION) } +{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } YY_BREAK case 255: YY_RULE_SETUP #line 472 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } +{ YDVAR(1, VAR_DNSTAP_IDENTITY) } YY_BREAK case 256: YY_RULE_SETUP -#line 474 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } +#line 473 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_VERSION) } YY_BREAK case 257: YY_RULE_SETUP -#line 476 "./util/configlexer.lex" +#line 474 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } YY_BREAK case 258: YY_RULE_SETUP -#line 478 "./util/configlexer.lex" +#line 476 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } YY_BREAK case 259: YY_RULE_SETUP -#line 480 "./util/configlexer.lex" +#line 478 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } YY_BREAK case 260: YY_RULE_SETUP -#line 482 "./util/configlexer.lex" +#line 480 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } YY_BREAK case 261: YY_RULE_SETUP -#line 484 "./util/configlexer.lex" -{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } +#line 482 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } YY_BREAK case 262: YY_RULE_SETUP -#line 485 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT) } +#line 484 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } YY_BREAK case 263: YY_RULE_SETUP #line 486 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT) } +{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } YY_BREAK case 264: YY_RULE_SETUP #line 487 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_IP_RATELIMIT) } YY_BREAK case 265: YY_RULE_SETUP #line 488 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_RATELIMIT) } YY_BREAK case 266: YY_RULE_SETUP #line 489 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } YY_BREAK case 267: YY_RULE_SETUP #line 490 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_RATELIMIT_SLABS) } YY_BREAK case 268: YY_RULE_SETUP #line 491 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } +{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } YY_BREAK case 269: YY_RULE_SETUP #line 492 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } +{ YDVAR(1, VAR_RATELIMIT_SIZE) } YY_BREAK case 270: YY_RULE_SETUP #line 493 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } +{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } YY_BREAK case 271: YY_RULE_SETUP #line 494 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_FACTOR) } +{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } YY_BREAK case 272: YY_RULE_SETUP #line 495 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOW_RTT) } +{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } YY_BREAK case 273: YY_RULE_SETUP #line 496 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_NUM) } +{ YDVAR(1, VAR_RATELIMIT_FACTOR) } YY_BREAK case 274: YY_RULE_SETUP #line 497 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } +{ YDVAR(1, VAR_LOW_RTT) } YY_BREAK case 275: YY_RULE_SETUP #line 498 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } +{ YDVAR(1, VAR_FAST_SERVER_NUM) } YY_BREAK case 276: YY_RULE_SETUP @@ -4905,240 +4931,250 @@ YY_RULE_SETUP case 277: YY_RULE_SETUP #line 500 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_TAG) } +{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 278: YY_RULE_SETUP #line 501 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP) } +{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 279: YY_RULE_SETUP #line 502 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_DATA) } +{ YDVAR(2, VAR_RESPONSE_IP_TAG) } YY_BREAK case 280: YY_RULE_SETUP #line 503 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSCRYPT) } +{ YDVAR(2, VAR_RESPONSE_IP) } YY_BREAK case 281: YY_RULE_SETUP #line 504 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } +{ YDVAR(2, VAR_RESPONSE_IP_DATA) } YY_BREAK case 282: YY_RULE_SETUP #line 505 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PORT) } +{ YDVAR(0, VAR_DNSCRYPT) } YY_BREAK case 283: YY_RULE_SETUP #line 506 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } +{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } YY_BREAK case 284: YY_RULE_SETUP #line 507 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } +{ YDVAR(1, VAR_DNSCRYPT_PORT) } YY_BREAK case 285: YY_RULE_SETUP #line 508 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } YY_BREAK case 286: YY_RULE_SETUP #line 509 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } +{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } YY_BREAK case 287: YY_RULE_SETUP #line 510 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } YY_BREAK case 288: YY_RULE_SETUP -#line 512 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } +#line 511 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } YY_BREAK case 289: YY_RULE_SETUP -#line 514 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } +#line 512 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } YY_BREAK case 290: YY_RULE_SETUP -#line 515 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } +#line 514 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } YY_BREAK case 291: YY_RULE_SETUP #line 516 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_RESPONSES) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } YY_BREAK case 292: YY_RULE_SETUP #line 517 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } YY_BREAK case 293: YY_RULE_SETUP #line 518 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_QUERIES) } +{ YDVAR(1, VAR_PAD_RESPONSES) } YY_BREAK case 294: YY_RULE_SETUP #line 519 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) } +{ YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) } YY_BREAK case 295: YY_RULE_SETUP #line 520 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_ENABLED) } +{ YDVAR(1, VAR_PAD_QUERIES) } YY_BREAK case 296: YY_RULE_SETUP #line 521 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } +{ YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) } YY_BREAK case 297: YY_RULE_SETUP #line 522 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_HOOK) } +{ YDVAR(1, VAR_IPSECMOD_ENABLED) } YY_BREAK case 298: YY_RULE_SETUP #line 523 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } +{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } YY_BREAK case 299: YY_RULE_SETUP #line 524 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } +{ YDVAR(1, VAR_IPSECMOD_HOOK) } YY_BREAK case 300: YY_RULE_SETUP #line 525 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } +{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } YY_BREAK case 301: YY_RULE_SETUP #line 526 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_STRICT) } +{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } YY_BREAK case 302: YY_RULE_SETUP #line 527 "./util/configlexer.lex" -{ YDVAR(0, VAR_CACHEDB) } +{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } YY_BREAK case 303: YY_RULE_SETUP #line 528 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_BACKEND) } +{ YDVAR(1, VAR_IPSECMOD_STRICT) } YY_BREAK case 304: YY_RULE_SETUP #line 529 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } +{ YDVAR(0, VAR_CACHEDB) } YY_BREAK case 305: YY_RULE_SETUP #line 530 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISHOST) } +{ YDVAR(1, VAR_CACHEDB_BACKEND) } YY_BREAK case 306: YY_RULE_SETUP #line 531 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISPORT) } +{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } YY_BREAK case 307: YY_RULE_SETUP #line 532 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } +{ YDVAR(1, VAR_CACHEDB_REDISHOST) } YY_BREAK case 308: YY_RULE_SETUP #line 533 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } +{ YDVAR(1, VAR_CACHEDB_REDISPORT) } YY_BREAK case 309: YY_RULE_SETUP #line 534 "./util/configlexer.lex" -{ YDVAR(0, VAR_IPSET) } +{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } YY_BREAK case 310: YY_RULE_SETUP #line 535 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V4) } +{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } YY_BREAK case 311: YY_RULE_SETUP #line 536 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V6) } +{ YDVAR(0, VAR_IPSET) } YY_BREAK case 312: YY_RULE_SETUP #line 537 "./util/configlexer.lex" -{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } +{ YDVAR(1, VAR_IPSET_NAME_V4) } YY_BREAK case 313: YY_RULE_SETUP #line 538 "./util/configlexer.lex" -{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } +{ YDVAR(1, VAR_IPSET_NAME_V6) } YY_BREAK case 314: YY_RULE_SETUP #line 539 "./util/configlexer.lex" -{ YDVAR(2, VAR_EDNS_CLIENT_STRING) } +{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } YY_BREAK case 315: YY_RULE_SETUP #line 540 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) } +{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } YY_BREAK case 316: YY_RULE_SETUP #line 541 "./util/configlexer.lex" -{ YDVAR(1, VAR_NSID ) } +{ YDVAR(2, VAR_EDNS_CLIENT_STRING) } YY_BREAK case 317: -/* rule 317 can match eol */ YY_RULE_SETUP #line 542 "./util/configlexer.lex" +{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) } + YY_BREAK +case 318: +YY_RULE_SETUP +#line 543 "./util/configlexer.lex" +{ YDVAR(1, VAR_NSID ) } + YY_BREAK +case 319: +/* rule 319 can match eol */ +YY_RULE_SETUP +#line 544 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK /* Quoted strings. Strip leading and ending quotes */ -case 318: +case 320: YY_RULE_SETUP -#line 545 "./util/configlexer.lex" +#line 547 "./util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 546 "./util/configlexer.lex" +#line 548 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 319: +case 321: YY_RULE_SETUP -#line 551 "./util/configlexer.lex" +#line 553 "./util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK -case 320: -/* rule 320 can match eol */ +case 322: +/* rule 322 can match eol */ YY_RULE_SETUP -#line 552 "./util/configlexer.lex" +#line 554 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 321: +case 323: YY_RULE_SETUP -#line 554 "./util/configlexer.lex" +#line 556 "./util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -5151,34 +5187,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 322: +case 324: YY_RULE_SETUP -#line 566 "./util/configlexer.lex" +#line 568 "./util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 567 "./util/configlexer.lex" +#line 569 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 323: +case 325: YY_RULE_SETUP -#line 572 "./util/configlexer.lex" +#line 574 "./util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK -case 324: -/* rule 324 can match eol */ +case 326: +/* rule 326 can match eol */ YY_RULE_SETUP -#line 573 "./util/configlexer.lex" +#line 575 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 325: +case 327: YY_RULE_SETUP -#line 575 "./util/configlexer.lex" +#line 577 "./util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -5191,38 +5227,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 326: +case 328: YY_RULE_SETUP -#line 587 "./util/configlexer.lex" +#line 589 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 589 "./util/configlexer.lex" +#line 591 "./util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); } YY_BREAK -case 327: -YY_RULE_SETUP -#line 593 "./util/configlexer.lex" -{ LEXOUT(("ISP ")); /* ignore */ } - YY_BREAK -case 328: -/* rule 328 can match eol */ -YY_RULE_SETUP -#line 594 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++;} - YY_BREAK case 329: YY_RULE_SETUP #line 595 "./util/configlexer.lex" -{ LEXOUT(("IQS ")); BEGIN(include_quoted); } +{ LEXOUT(("ISP ")); /* ignore */ } YY_BREAK case 330: +/* rule 330 can match eol */ YY_RULE_SETUP #line 596 "./util/configlexer.lex" +{ LEXOUT(("NL\n")); cfg_parser->line++;} + YY_BREAK +case 331: +YY_RULE_SETUP +#line 597 "./util/configlexer.lex" +{ LEXOUT(("IQS ")); BEGIN(include_quoted); } + YY_BREAK +case 332: +YY_RULE_SETUP +#line 598 "./util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 0); @@ -5230,27 +5266,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 601 "./util/configlexer.lex" +#line 603 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 331: +case 333: YY_RULE_SETUP -#line 605 "./util/configlexer.lex" +#line 607 "./util/configlexer.lex" { LEXOUT(("ISTR(%s) ", yytext)); yymore(); } YY_BREAK -case 332: -/* rule 332 can match eol */ +case 334: +/* rule 334 can match eol */ YY_RULE_SETUP -#line 606 "./util/configlexer.lex" +#line 608 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 333: +case 335: YY_RULE_SETUP -#line 608 "./util/configlexer.lex" +#line 610 "./util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -5260,7 +5296,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 614 "./util/configlexer.lex" +#line 616 "./util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ @@ -5275,39 +5311,39 @@ case YY_STATE_EOF(val): } YY_BREAK /* include-toplevel: directive */ -case 334: +case 336: YY_RULE_SETUP -#line 628 "./util/configlexer.lex" +#line 630 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include_toplevel); } YY_BREAK case YY_STATE_EOF(include_toplevel): -#line 631 "./util/configlexer.lex" +#line 633 "./util/configlexer.lex" { yyerror("EOF inside include_toplevel directive"); BEGIN(inc_prev); } YY_BREAK -case 335: -YY_RULE_SETUP -#line 635 "./util/configlexer.lex" -{ LEXOUT(("ITSP ")); /* ignore */ } - YY_BREAK -case 336: -/* rule 336 can match eol */ -YY_RULE_SETUP -#line 636 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++; } - YY_BREAK case 337: YY_RULE_SETUP #line 637 "./util/configlexer.lex" -{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } +{ LEXOUT(("ITSP ")); /* ignore */ } YY_BREAK case 338: +/* rule 338 can match eol */ YY_RULE_SETUP #line 638 "./util/configlexer.lex" +{ LEXOUT(("NL\n")); cfg_parser->line++; } + YY_BREAK +case 339: +YY_RULE_SETUP +#line 639 "./util/configlexer.lex" +{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } + YY_BREAK +case 340: +YY_RULE_SETUP +#line 640 "./util/configlexer.lex" { LEXOUT(("ITunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 1); @@ -5316,29 +5352,29 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_toplevel_quoted): -#line 644 "./util/configlexer.lex" +#line 646 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 339: +case 341: YY_RULE_SETUP -#line 648 "./util/configlexer.lex" +#line 650 "./util/configlexer.lex" { LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } YY_BREAK -case 340: -/* rule 340 can match eol */ +case 342: +/* rule 342 can match eol */ YY_RULE_SETUP -#line 649 "./util/configlexer.lex" +#line 651 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 341: +case 343: YY_RULE_SETUP -#line 653 "./util/configlexer.lex" +#line 655 "./util/configlexer.lex" { LEXOUT(("ITQE ")); yytext[yyleng - 1] = '\0'; @@ -5347,33 +5383,33 @@ YY_RULE_SETUP return (VAR_FORCE_TOPLEVEL); } YY_BREAK -case 342: +case 344: YY_RULE_SETUP -#line 661 "./util/configlexer.lex" +#line 663 "./util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 343: +case 345: YY_RULE_SETUP -#line 665 "./util/configlexer.lex" +#line 667 "./util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 344: +case 346: YY_RULE_SETUP -#line 669 "./util/configlexer.lex" +#line 671 "./util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 345: +case 347: YY_RULE_SETUP -#line 673 "./util/configlexer.lex" +#line 675 "./util/configlexer.lex" ECHO; YY_BREAK -#line 5374 "" +#line 5410 "" case YY_END_OF_BUFFER: { @@ -5668,7 +5704,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 >= 3388 ) + if ( yy_current_state >= 3420 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -5696,11 +5732,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 >= 3388 ) + if ( yy_current_state >= 3420 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 3387); + yy_is_jam = (yy_current_state == 3419); return yy_is_jam ? 0 : yy_current_state; } @@ -6339,6 +6375,6 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 673 "./util/configlexer.lex" +#line 675 "./util/configlexer.lex" diff --git a/util/configlexer.lex b/util/configlexer.lex index b52ddf81e..c031fab39 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -235,6 +235,8 @@ tcp-upstream{COLON} { YDVAR(1, VAR_TCP_UPSTREAM) } tcp-mss{COLON} { YDVAR(1, VAR_TCP_MSS) } outgoing-tcp-mss{COLON} { YDVAR(1, VAR_OUTGOING_TCP_MSS) } tcp-idle-timeout{COLON} { YDVAR(1, VAR_TCP_IDLE_TIMEOUT) } +max-reuse-tcp-queries{COLON} { YDVAR(1, VAR_MAX_REUSE_TCP_QUERIES) } +tcp-reuse-timeout{COLON} { YDVAR(1, VAR_TCP_REUSE_TIMEOUT) } edns-tcp-keepalive{COLON} { YDVAR(1, VAR_EDNS_TCP_KEEPALIVE) } edns-tcp-keepalive-timeout{COLON} { YDVAR(1, VAR_EDNS_TCP_KEEPALIVE_TIMEOUT) } ssl-upstream{COLON} { YDVAR(1, VAR_SSL_UPSTREAM) } diff --git a/util/configparser.c b/util/configparser.c index 4da644d3a..3faf61c5e 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.6.4. */ +/* A Bison parser, made by GNU Bison 3.7.6. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -16,7 +16,7 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program. If not, see . */ + 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 @@ -45,11 +45,11 @@ define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ -/* Identify Bison output. */ -#define YYBISON 1 +/* Identify Bison output, and Bison version. */ +#define YYBISON 30706 -/* Bison version. */ -#define YYBISON_VERSION "3.6.4" +/* Bison version string. */ +#define YYBISON_VERSION "3.7.6" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -67,7 +67,7 @@ /* First part of user prologue. */ -#line 38 "./util/configparser.y" +#line 38 "util/configparser.y" #include "config.h" @@ -119,673 +119,7 @@ extern struct config_parser_state* cfg_parser; # endif # 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 kinds. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - enum yytokentype - { - YYEMPTY = -2, - YYEOF = 0, /* "end of file" */ - YYerror = 256, /* error */ - YYUNDEF = 257, /* "invalid token" */ - SPACE = 258, /* SPACE */ - LETTER = 259, /* LETTER */ - NEWLINE = 260, /* NEWLINE */ - COMMENT = 261, /* COMMENT */ - COLON = 262, /* COLON */ - ANY = 263, /* ANY */ - ZONESTR = 264, /* ZONESTR */ - STRING_ARG = 265, /* STRING_ARG */ - VAR_FORCE_TOPLEVEL = 266, /* VAR_FORCE_TOPLEVEL */ - VAR_SERVER = 267, /* VAR_SERVER */ - VAR_VERBOSITY = 268, /* VAR_VERBOSITY */ - VAR_NUM_THREADS = 269, /* VAR_NUM_THREADS */ - VAR_PORT = 270, /* VAR_PORT */ - VAR_OUTGOING_RANGE = 271, /* VAR_OUTGOING_RANGE */ - VAR_INTERFACE = 272, /* VAR_INTERFACE */ - VAR_PREFER_IP4 = 273, /* VAR_PREFER_IP4 */ - VAR_DO_IP4 = 274, /* VAR_DO_IP4 */ - VAR_DO_IP6 = 275, /* VAR_DO_IP6 */ - VAR_PREFER_IP6 = 276, /* VAR_PREFER_IP6 */ - VAR_DO_UDP = 277, /* VAR_DO_UDP */ - VAR_DO_TCP = 278, /* VAR_DO_TCP */ - VAR_TCP_MSS = 279, /* VAR_TCP_MSS */ - VAR_OUTGOING_TCP_MSS = 280, /* VAR_OUTGOING_TCP_MSS */ - VAR_TCP_IDLE_TIMEOUT = 281, /* VAR_TCP_IDLE_TIMEOUT */ - VAR_EDNS_TCP_KEEPALIVE = 282, /* VAR_EDNS_TCP_KEEPALIVE */ - VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 283, /* VAR_EDNS_TCP_KEEPALIVE_TIMEOUT */ - VAR_CHROOT = 284, /* VAR_CHROOT */ - VAR_USERNAME = 285, /* VAR_USERNAME */ - VAR_DIRECTORY = 286, /* VAR_DIRECTORY */ - VAR_LOGFILE = 287, /* VAR_LOGFILE */ - VAR_PIDFILE = 288, /* VAR_PIDFILE */ - VAR_MSG_CACHE_SIZE = 289, /* VAR_MSG_CACHE_SIZE */ - VAR_MSG_CACHE_SLABS = 290, /* VAR_MSG_CACHE_SLABS */ - VAR_NUM_QUERIES_PER_THREAD = 291, /* VAR_NUM_QUERIES_PER_THREAD */ - VAR_RRSET_CACHE_SIZE = 292, /* VAR_RRSET_CACHE_SIZE */ - VAR_RRSET_CACHE_SLABS = 293, /* VAR_RRSET_CACHE_SLABS */ - VAR_OUTGOING_NUM_TCP = 294, /* VAR_OUTGOING_NUM_TCP */ - VAR_INFRA_HOST_TTL = 295, /* VAR_INFRA_HOST_TTL */ - VAR_INFRA_LAME_TTL = 296, /* VAR_INFRA_LAME_TTL */ - VAR_INFRA_CACHE_SLABS = 297, /* VAR_INFRA_CACHE_SLABS */ - VAR_INFRA_CACHE_NUMHOSTS = 298, /* VAR_INFRA_CACHE_NUMHOSTS */ - VAR_INFRA_CACHE_LAME_SIZE = 299, /* VAR_INFRA_CACHE_LAME_SIZE */ - VAR_NAME = 300, /* VAR_NAME */ - VAR_STUB_ZONE = 301, /* VAR_STUB_ZONE */ - VAR_STUB_HOST = 302, /* VAR_STUB_HOST */ - VAR_STUB_ADDR = 303, /* VAR_STUB_ADDR */ - VAR_TARGET_FETCH_POLICY = 304, /* VAR_TARGET_FETCH_POLICY */ - VAR_HARDEN_SHORT_BUFSIZE = 305, /* VAR_HARDEN_SHORT_BUFSIZE */ - VAR_HARDEN_LARGE_QUERIES = 306, /* VAR_HARDEN_LARGE_QUERIES */ - VAR_FORWARD_ZONE = 307, /* VAR_FORWARD_ZONE */ - VAR_FORWARD_HOST = 308, /* VAR_FORWARD_HOST */ - VAR_FORWARD_ADDR = 309, /* VAR_FORWARD_ADDR */ - VAR_DO_NOT_QUERY_ADDRESS = 310, /* VAR_DO_NOT_QUERY_ADDRESS */ - VAR_HIDE_IDENTITY = 311, /* VAR_HIDE_IDENTITY */ - VAR_HIDE_VERSION = 312, /* VAR_HIDE_VERSION */ - VAR_IDENTITY = 313, /* VAR_IDENTITY */ - VAR_VERSION = 314, /* VAR_VERSION */ - VAR_HARDEN_GLUE = 315, /* VAR_HARDEN_GLUE */ - VAR_MODULE_CONF = 316, /* VAR_MODULE_CONF */ - VAR_TRUST_ANCHOR_FILE = 317, /* VAR_TRUST_ANCHOR_FILE */ - VAR_TRUST_ANCHOR = 318, /* VAR_TRUST_ANCHOR */ - VAR_VAL_OVERRIDE_DATE = 319, /* VAR_VAL_OVERRIDE_DATE */ - VAR_BOGUS_TTL = 320, /* VAR_BOGUS_TTL */ - VAR_VAL_CLEAN_ADDITIONAL = 321, /* VAR_VAL_CLEAN_ADDITIONAL */ - VAR_VAL_PERMISSIVE_MODE = 322, /* VAR_VAL_PERMISSIVE_MODE */ - VAR_INCOMING_NUM_TCP = 323, /* VAR_INCOMING_NUM_TCP */ - VAR_MSG_BUFFER_SIZE = 324, /* VAR_MSG_BUFFER_SIZE */ - VAR_KEY_CACHE_SIZE = 325, /* VAR_KEY_CACHE_SIZE */ - VAR_KEY_CACHE_SLABS = 326, /* VAR_KEY_CACHE_SLABS */ - VAR_TRUSTED_KEYS_FILE = 327, /* VAR_TRUSTED_KEYS_FILE */ - VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 328, /* VAR_VAL_NSEC3_KEYSIZE_ITERATIONS */ - VAR_USE_SYSLOG = 329, /* VAR_USE_SYSLOG */ - VAR_OUTGOING_INTERFACE = 330, /* VAR_OUTGOING_INTERFACE */ - VAR_ROOT_HINTS = 331, /* VAR_ROOT_HINTS */ - VAR_DO_NOT_QUERY_LOCALHOST = 332, /* VAR_DO_NOT_QUERY_LOCALHOST */ - VAR_CACHE_MAX_TTL = 333, /* VAR_CACHE_MAX_TTL */ - VAR_HARDEN_DNSSEC_STRIPPED = 334, /* VAR_HARDEN_DNSSEC_STRIPPED */ - VAR_ACCESS_CONTROL = 335, /* VAR_ACCESS_CONTROL */ - VAR_LOCAL_ZONE = 336, /* VAR_LOCAL_ZONE */ - VAR_LOCAL_DATA = 337, /* VAR_LOCAL_DATA */ - VAR_INTERFACE_AUTOMATIC = 338, /* VAR_INTERFACE_AUTOMATIC */ - VAR_STATISTICS_INTERVAL = 339, /* VAR_STATISTICS_INTERVAL */ - VAR_DO_DAEMONIZE = 340, /* VAR_DO_DAEMONIZE */ - VAR_USE_CAPS_FOR_ID = 341, /* VAR_USE_CAPS_FOR_ID */ - VAR_STATISTICS_CUMULATIVE = 342, /* VAR_STATISTICS_CUMULATIVE */ - VAR_OUTGOING_PORT_PERMIT = 343, /* VAR_OUTGOING_PORT_PERMIT */ - VAR_OUTGOING_PORT_AVOID = 344, /* VAR_OUTGOING_PORT_AVOID */ - VAR_DLV_ANCHOR_FILE = 345, /* VAR_DLV_ANCHOR_FILE */ - VAR_DLV_ANCHOR = 346, /* VAR_DLV_ANCHOR */ - VAR_NEG_CACHE_SIZE = 347, /* VAR_NEG_CACHE_SIZE */ - VAR_HARDEN_REFERRAL_PATH = 348, /* VAR_HARDEN_REFERRAL_PATH */ - VAR_PRIVATE_ADDRESS = 349, /* VAR_PRIVATE_ADDRESS */ - VAR_PRIVATE_DOMAIN = 350, /* VAR_PRIVATE_DOMAIN */ - VAR_REMOTE_CONTROL = 351, /* VAR_REMOTE_CONTROL */ - VAR_CONTROL_ENABLE = 352, /* VAR_CONTROL_ENABLE */ - VAR_CONTROL_INTERFACE = 353, /* VAR_CONTROL_INTERFACE */ - VAR_CONTROL_PORT = 354, /* VAR_CONTROL_PORT */ - VAR_SERVER_KEY_FILE = 355, /* VAR_SERVER_KEY_FILE */ - VAR_SERVER_CERT_FILE = 356, /* VAR_SERVER_CERT_FILE */ - VAR_CONTROL_KEY_FILE = 357, /* VAR_CONTROL_KEY_FILE */ - VAR_CONTROL_CERT_FILE = 358, /* VAR_CONTROL_CERT_FILE */ - VAR_CONTROL_USE_CERT = 359, /* VAR_CONTROL_USE_CERT */ - VAR_EXTENDED_STATISTICS = 360, /* VAR_EXTENDED_STATISTICS */ - VAR_LOCAL_DATA_PTR = 361, /* VAR_LOCAL_DATA_PTR */ - VAR_JOSTLE_TIMEOUT = 362, /* VAR_JOSTLE_TIMEOUT */ - VAR_STUB_PRIME = 363, /* VAR_STUB_PRIME */ - VAR_UNWANTED_REPLY_THRESHOLD = 364, /* VAR_UNWANTED_REPLY_THRESHOLD */ - VAR_LOG_TIME_ASCII = 365, /* VAR_LOG_TIME_ASCII */ - VAR_DOMAIN_INSECURE = 366, /* VAR_DOMAIN_INSECURE */ - VAR_PYTHON = 367, /* VAR_PYTHON */ - VAR_PYTHON_SCRIPT = 368, /* VAR_PYTHON_SCRIPT */ - VAR_VAL_SIG_SKEW_MIN = 369, /* VAR_VAL_SIG_SKEW_MIN */ - VAR_VAL_SIG_SKEW_MAX = 370, /* VAR_VAL_SIG_SKEW_MAX */ - VAR_CACHE_MIN_TTL = 371, /* VAR_CACHE_MIN_TTL */ - VAR_VAL_LOG_LEVEL = 372, /* VAR_VAL_LOG_LEVEL */ - VAR_AUTO_TRUST_ANCHOR_FILE = 373, /* VAR_AUTO_TRUST_ANCHOR_FILE */ - VAR_KEEP_MISSING = 374, /* VAR_KEEP_MISSING */ - VAR_ADD_HOLDDOWN = 375, /* VAR_ADD_HOLDDOWN */ - VAR_DEL_HOLDDOWN = 376, /* VAR_DEL_HOLDDOWN */ - VAR_SO_RCVBUF = 377, /* VAR_SO_RCVBUF */ - VAR_EDNS_BUFFER_SIZE = 378, /* VAR_EDNS_BUFFER_SIZE */ - VAR_PREFETCH = 379, /* VAR_PREFETCH */ - VAR_PREFETCH_KEY = 380, /* VAR_PREFETCH_KEY */ - VAR_SO_SNDBUF = 381, /* VAR_SO_SNDBUF */ - VAR_SO_REUSEPORT = 382, /* VAR_SO_REUSEPORT */ - VAR_HARDEN_BELOW_NXDOMAIN = 383, /* VAR_HARDEN_BELOW_NXDOMAIN */ - VAR_IGNORE_CD_FLAG = 384, /* VAR_IGNORE_CD_FLAG */ - VAR_LOG_QUERIES = 385, /* VAR_LOG_QUERIES */ - VAR_LOG_REPLIES = 386, /* VAR_LOG_REPLIES */ - VAR_LOG_LOCAL_ACTIONS = 387, /* VAR_LOG_LOCAL_ACTIONS */ - VAR_TCP_UPSTREAM = 388, /* VAR_TCP_UPSTREAM */ - VAR_SSL_UPSTREAM = 389, /* VAR_SSL_UPSTREAM */ - VAR_SSL_SERVICE_KEY = 390, /* VAR_SSL_SERVICE_KEY */ - VAR_SSL_SERVICE_PEM = 391, /* VAR_SSL_SERVICE_PEM */ - VAR_SSL_PORT = 392, /* VAR_SSL_PORT */ - VAR_FORWARD_FIRST = 393, /* VAR_FORWARD_FIRST */ - VAR_STUB_SSL_UPSTREAM = 394, /* VAR_STUB_SSL_UPSTREAM */ - VAR_FORWARD_SSL_UPSTREAM = 395, /* VAR_FORWARD_SSL_UPSTREAM */ - VAR_TLS_CERT_BUNDLE = 396, /* VAR_TLS_CERT_BUNDLE */ - VAR_HTTPS_PORT = 397, /* VAR_HTTPS_PORT */ - VAR_HTTP_ENDPOINT = 398, /* VAR_HTTP_ENDPOINT */ - VAR_HTTP_MAX_STREAMS = 399, /* VAR_HTTP_MAX_STREAMS */ - VAR_HTTP_QUERY_BUFFER_SIZE = 400, /* VAR_HTTP_QUERY_BUFFER_SIZE */ - VAR_HTTP_RESPONSE_BUFFER_SIZE = 401, /* VAR_HTTP_RESPONSE_BUFFER_SIZE */ - VAR_HTTP_NODELAY = 402, /* VAR_HTTP_NODELAY */ - VAR_HTTP_NOTLS_DOWNSTREAM = 403, /* VAR_HTTP_NOTLS_DOWNSTREAM */ - VAR_STUB_FIRST = 404, /* VAR_STUB_FIRST */ - VAR_MINIMAL_RESPONSES = 405, /* VAR_MINIMAL_RESPONSES */ - VAR_RRSET_ROUNDROBIN = 406, /* VAR_RRSET_ROUNDROBIN */ - VAR_MAX_UDP_SIZE = 407, /* VAR_MAX_UDP_SIZE */ - VAR_DELAY_CLOSE = 408, /* VAR_DELAY_CLOSE */ - VAR_UDP_CONNECT = 409, /* VAR_UDP_CONNECT */ - VAR_UNBLOCK_LAN_ZONES = 410, /* VAR_UNBLOCK_LAN_ZONES */ - VAR_INSECURE_LAN_ZONES = 411, /* VAR_INSECURE_LAN_ZONES */ - VAR_INFRA_CACHE_MIN_RTT = 412, /* VAR_INFRA_CACHE_MIN_RTT */ - VAR_INFRA_KEEP_PROBING = 413, /* VAR_INFRA_KEEP_PROBING */ - VAR_DNS64_PREFIX = 414, /* VAR_DNS64_PREFIX */ - VAR_DNS64_SYNTHALL = 415, /* VAR_DNS64_SYNTHALL */ - VAR_DNS64_IGNORE_AAAA = 416, /* VAR_DNS64_IGNORE_AAAA */ - VAR_DNSTAP = 417, /* VAR_DNSTAP */ - VAR_DNSTAP_ENABLE = 418, /* VAR_DNSTAP_ENABLE */ - VAR_DNSTAP_SOCKET_PATH = 419, /* VAR_DNSTAP_SOCKET_PATH */ - VAR_DNSTAP_IP = 420, /* VAR_DNSTAP_IP */ - VAR_DNSTAP_TLS = 421, /* VAR_DNSTAP_TLS */ - VAR_DNSTAP_TLS_SERVER_NAME = 422, /* VAR_DNSTAP_TLS_SERVER_NAME */ - VAR_DNSTAP_TLS_CERT_BUNDLE = 423, /* VAR_DNSTAP_TLS_CERT_BUNDLE */ - VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 424, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE */ - VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 425, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE */ - VAR_DNSTAP_SEND_IDENTITY = 426, /* VAR_DNSTAP_SEND_IDENTITY */ - VAR_DNSTAP_SEND_VERSION = 427, /* VAR_DNSTAP_SEND_VERSION */ - VAR_DNSTAP_BIDIRECTIONAL = 428, /* VAR_DNSTAP_BIDIRECTIONAL */ - VAR_DNSTAP_IDENTITY = 429, /* VAR_DNSTAP_IDENTITY */ - VAR_DNSTAP_VERSION = 430, /* VAR_DNSTAP_VERSION */ - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 431, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES */ - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 432, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES */ - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 433, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES */ - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 434, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES */ - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 435, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES */ - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 436, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES */ - VAR_RESPONSE_IP_TAG = 437, /* VAR_RESPONSE_IP_TAG */ - VAR_RESPONSE_IP = 438, /* VAR_RESPONSE_IP */ - VAR_RESPONSE_IP_DATA = 439, /* VAR_RESPONSE_IP_DATA */ - VAR_HARDEN_ALGO_DOWNGRADE = 440, /* VAR_HARDEN_ALGO_DOWNGRADE */ - VAR_IP_TRANSPARENT = 441, /* VAR_IP_TRANSPARENT */ - VAR_IP_DSCP = 442, /* VAR_IP_DSCP */ - VAR_DISABLE_DNSSEC_LAME_CHECK = 443, /* VAR_DISABLE_DNSSEC_LAME_CHECK */ - VAR_IP_RATELIMIT = 444, /* VAR_IP_RATELIMIT */ - VAR_IP_RATELIMIT_SLABS = 445, /* VAR_IP_RATELIMIT_SLABS */ - VAR_IP_RATELIMIT_SIZE = 446, /* VAR_IP_RATELIMIT_SIZE */ - VAR_RATELIMIT = 447, /* VAR_RATELIMIT */ - VAR_RATELIMIT_SLABS = 448, /* VAR_RATELIMIT_SLABS */ - VAR_RATELIMIT_SIZE = 449, /* VAR_RATELIMIT_SIZE */ - VAR_RATELIMIT_FOR_DOMAIN = 450, /* VAR_RATELIMIT_FOR_DOMAIN */ - VAR_RATELIMIT_BELOW_DOMAIN = 451, /* VAR_RATELIMIT_BELOW_DOMAIN */ - VAR_IP_RATELIMIT_FACTOR = 452, /* VAR_IP_RATELIMIT_FACTOR */ - VAR_RATELIMIT_FACTOR = 453, /* VAR_RATELIMIT_FACTOR */ - VAR_SEND_CLIENT_SUBNET = 454, /* VAR_SEND_CLIENT_SUBNET */ - VAR_CLIENT_SUBNET_ZONE = 455, /* VAR_CLIENT_SUBNET_ZONE */ - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 456, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ - VAR_CLIENT_SUBNET_OPCODE = 457, /* VAR_CLIENT_SUBNET_OPCODE */ - VAR_MAX_CLIENT_SUBNET_IPV4 = 458, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ - VAR_MAX_CLIENT_SUBNET_IPV6 = 459, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ - VAR_MIN_CLIENT_SUBNET_IPV4 = 460, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ - VAR_MIN_CLIENT_SUBNET_IPV6 = 461, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ - VAR_MAX_ECS_TREE_SIZE_IPV4 = 462, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ - VAR_MAX_ECS_TREE_SIZE_IPV6 = 463, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ - VAR_CAPS_WHITELIST = 464, /* VAR_CAPS_WHITELIST */ - VAR_CACHE_MAX_NEGATIVE_TTL = 465, /* VAR_CACHE_MAX_NEGATIVE_TTL */ - VAR_PERMIT_SMALL_HOLDDOWN = 466, /* VAR_PERMIT_SMALL_HOLDDOWN */ - VAR_QNAME_MINIMISATION = 467, /* VAR_QNAME_MINIMISATION */ - VAR_QNAME_MINIMISATION_STRICT = 468, /* VAR_QNAME_MINIMISATION_STRICT */ - VAR_IP_FREEBIND = 469, /* VAR_IP_FREEBIND */ - VAR_DEFINE_TAG = 470, /* VAR_DEFINE_TAG */ - VAR_LOCAL_ZONE_TAG = 471, /* VAR_LOCAL_ZONE_TAG */ - VAR_ACCESS_CONTROL_TAG = 472, /* VAR_ACCESS_CONTROL_TAG */ - VAR_LOCAL_ZONE_OVERRIDE = 473, /* VAR_LOCAL_ZONE_OVERRIDE */ - VAR_ACCESS_CONTROL_TAG_ACTION = 474, /* VAR_ACCESS_CONTROL_TAG_ACTION */ - VAR_ACCESS_CONTROL_TAG_DATA = 475, /* VAR_ACCESS_CONTROL_TAG_DATA */ - VAR_VIEW = 476, /* VAR_VIEW */ - VAR_ACCESS_CONTROL_VIEW = 477, /* VAR_ACCESS_CONTROL_VIEW */ - VAR_VIEW_FIRST = 478, /* VAR_VIEW_FIRST */ - VAR_SERVE_EXPIRED = 479, /* VAR_SERVE_EXPIRED */ - VAR_SERVE_EXPIRED_TTL = 480, /* VAR_SERVE_EXPIRED_TTL */ - VAR_SERVE_EXPIRED_TTL_RESET = 481, /* VAR_SERVE_EXPIRED_TTL_RESET */ - VAR_SERVE_EXPIRED_REPLY_TTL = 482, /* VAR_SERVE_EXPIRED_REPLY_TTL */ - VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 483, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ - VAR_SERVE_ORIGINAL_TTL = 484, /* VAR_SERVE_ORIGINAL_TTL */ - VAR_FAKE_DSA = 485, /* VAR_FAKE_DSA */ - VAR_FAKE_SHA1 = 486, /* VAR_FAKE_SHA1 */ - VAR_LOG_IDENTITY = 487, /* VAR_LOG_IDENTITY */ - VAR_HIDE_TRUSTANCHOR = 488, /* VAR_HIDE_TRUSTANCHOR */ - VAR_TRUST_ANCHOR_SIGNALING = 489, /* VAR_TRUST_ANCHOR_SIGNALING */ - VAR_AGGRESSIVE_NSEC = 490, /* VAR_AGGRESSIVE_NSEC */ - VAR_USE_SYSTEMD = 491, /* VAR_USE_SYSTEMD */ - VAR_SHM_ENABLE = 492, /* VAR_SHM_ENABLE */ - VAR_SHM_KEY = 493, /* VAR_SHM_KEY */ - VAR_ROOT_KEY_SENTINEL = 494, /* VAR_ROOT_KEY_SENTINEL */ - VAR_DNSCRYPT = 495, /* VAR_DNSCRYPT */ - VAR_DNSCRYPT_ENABLE = 496, /* VAR_DNSCRYPT_ENABLE */ - VAR_DNSCRYPT_PORT = 497, /* VAR_DNSCRYPT_PORT */ - VAR_DNSCRYPT_PROVIDER = 498, /* VAR_DNSCRYPT_PROVIDER */ - VAR_DNSCRYPT_SECRET_KEY = 499, /* VAR_DNSCRYPT_SECRET_KEY */ - VAR_DNSCRYPT_PROVIDER_CERT = 500, /* VAR_DNSCRYPT_PROVIDER_CERT */ - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 501, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 502, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 503, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 504, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 505, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ - VAR_PAD_RESPONSES = 506, /* VAR_PAD_RESPONSES */ - VAR_PAD_RESPONSES_BLOCK_SIZE = 507, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ - VAR_PAD_QUERIES = 508, /* VAR_PAD_QUERIES */ - VAR_PAD_QUERIES_BLOCK_SIZE = 509, /* VAR_PAD_QUERIES_BLOCK_SIZE */ - VAR_IPSECMOD_ENABLED = 510, /* VAR_IPSECMOD_ENABLED */ - VAR_IPSECMOD_HOOK = 511, /* VAR_IPSECMOD_HOOK */ - VAR_IPSECMOD_IGNORE_BOGUS = 512, /* VAR_IPSECMOD_IGNORE_BOGUS */ - VAR_IPSECMOD_MAX_TTL = 513, /* VAR_IPSECMOD_MAX_TTL */ - VAR_IPSECMOD_WHITELIST = 514, /* VAR_IPSECMOD_WHITELIST */ - VAR_IPSECMOD_STRICT = 515, /* VAR_IPSECMOD_STRICT */ - VAR_CACHEDB = 516, /* VAR_CACHEDB */ - VAR_CACHEDB_BACKEND = 517, /* VAR_CACHEDB_BACKEND */ - VAR_CACHEDB_SECRETSEED = 518, /* VAR_CACHEDB_SECRETSEED */ - VAR_CACHEDB_REDISHOST = 519, /* VAR_CACHEDB_REDISHOST */ - VAR_CACHEDB_REDISPORT = 520, /* VAR_CACHEDB_REDISPORT */ - VAR_CACHEDB_REDISTIMEOUT = 521, /* VAR_CACHEDB_REDISTIMEOUT */ - VAR_CACHEDB_REDISEXPIRERECORDS = 522, /* VAR_CACHEDB_REDISEXPIRERECORDS */ - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 523, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ - VAR_FOR_UPSTREAM = 524, /* VAR_FOR_UPSTREAM */ - VAR_AUTH_ZONE = 525, /* VAR_AUTH_ZONE */ - VAR_ZONEFILE = 526, /* VAR_ZONEFILE */ - VAR_MASTER = 527, /* VAR_MASTER */ - VAR_URL = 528, /* VAR_URL */ - VAR_FOR_DOWNSTREAM = 529, /* VAR_FOR_DOWNSTREAM */ - VAR_FALLBACK_ENABLED = 530, /* VAR_FALLBACK_ENABLED */ - VAR_TLS_ADDITIONAL_PORT = 531, /* VAR_TLS_ADDITIONAL_PORT */ - VAR_LOW_RTT = 532, /* VAR_LOW_RTT */ - VAR_LOW_RTT_PERMIL = 533, /* VAR_LOW_RTT_PERMIL */ - VAR_FAST_SERVER_PERMIL = 534, /* VAR_FAST_SERVER_PERMIL */ - VAR_FAST_SERVER_NUM = 535, /* VAR_FAST_SERVER_NUM */ - VAR_ALLOW_NOTIFY = 536, /* VAR_ALLOW_NOTIFY */ - VAR_TLS_WIN_CERT = 537, /* VAR_TLS_WIN_CERT */ - VAR_TCP_CONNECTION_LIMIT = 538, /* VAR_TCP_CONNECTION_LIMIT */ - VAR_FORWARD_NO_CACHE = 539, /* VAR_FORWARD_NO_CACHE */ - VAR_STUB_NO_CACHE = 540, /* VAR_STUB_NO_CACHE */ - VAR_LOG_SERVFAIL = 541, /* VAR_LOG_SERVFAIL */ - VAR_DENY_ANY = 542, /* VAR_DENY_ANY */ - VAR_UNKNOWN_SERVER_TIME_LIMIT = 543, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ - VAR_LOG_TAG_QUERYREPLY = 544, /* VAR_LOG_TAG_QUERYREPLY */ - VAR_STREAM_WAIT_SIZE = 545, /* VAR_STREAM_WAIT_SIZE */ - VAR_TLS_CIPHERS = 546, /* VAR_TLS_CIPHERS */ - VAR_TLS_CIPHERSUITES = 547, /* VAR_TLS_CIPHERSUITES */ - VAR_TLS_USE_SNI = 548, /* VAR_TLS_USE_SNI */ - VAR_IPSET = 549, /* VAR_IPSET */ - VAR_IPSET_NAME_V4 = 550, /* VAR_IPSET_NAME_V4 */ - VAR_IPSET_NAME_V6 = 551, /* VAR_IPSET_NAME_V6 */ - VAR_TLS_SESSION_TICKET_KEYS = 552, /* VAR_TLS_SESSION_TICKET_KEYS */ - VAR_RPZ = 553, /* VAR_RPZ */ - VAR_TAGS = 554, /* VAR_TAGS */ - VAR_RPZ_ACTION_OVERRIDE = 555, /* VAR_RPZ_ACTION_OVERRIDE */ - VAR_RPZ_CNAME_OVERRIDE = 556, /* VAR_RPZ_CNAME_OVERRIDE */ - VAR_RPZ_LOG = 557, /* VAR_RPZ_LOG */ - VAR_RPZ_LOG_NAME = 558, /* VAR_RPZ_LOG_NAME */ - VAR_DYNLIB = 559, /* VAR_DYNLIB */ - VAR_DYNLIB_FILE = 560, /* VAR_DYNLIB_FILE */ - VAR_EDNS_CLIENT_STRING = 561, /* VAR_EDNS_CLIENT_STRING */ - VAR_EDNS_CLIENT_STRING_OPCODE = 562, /* VAR_EDNS_CLIENT_STRING_OPCODE */ - VAR_NSID = 563, /* VAR_NSID */ - VAR_ZONEMD_PERMISSIVE_MODE = 564, /* VAR_ZONEMD_PERMISSIVE_MODE */ - VAR_ZONEMD_REJECT_ABSENCE = 565 /* VAR_ZONEMD_REJECT_ABSENCE */ - }; - typedef enum yytokentype yytoken_kind_t; -#endif -/* Token kinds. */ -#define YYEOF 0 -#define YYerror 256 -#define YYUNDEF 257 -#define SPACE 258 -#define LETTER 259 -#define NEWLINE 260 -#define COMMENT 261 -#define COLON 262 -#define ANY 263 -#define ZONESTR 264 -#define STRING_ARG 265 -#define VAR_FORCE_TOPLEVEL 266 -#define VAR_SERVER 267 -#define VAR_VERBOSITY 268 -#define VAR_NUM_THREADS 269 -#define VAR_PORT 270 -#define VAR_OUTGOING_RANGE 271 -#define VAR_INTERFACE 272 -#define VAR_PREFER_IP4 273 -#define VAR_DO_IP4 274 -#define VAR_DO_IP6 275 -#define VAR_PREFER_IP6 276 -#define VAR_DO_UDP 277 -#define VAR_DO_TCP 278 -#define VAR_TCP_MSS 279 -#define VAR_OUTGOING_TCP_MSS 280 -#define VAR_TCP_IDLE_TIMEOUT 281 -#define VAR_EDNS_TCP_KEEPALIVE 282 -#define VAR_EDNS_TCP_KEEPALIVE_TIMEOUT 283 -#define VAR_CHROOT 284 -#define VAR_USERNAME 285 -#define VAR_DIRECTORY 286 -#define VAR_LOGFILE 287 -#define VAR_PIDFILE 288 -#define VAR_MSG_CACHE_SIZE 289 -#define VAR_MSG_CACHE_SLABS 290 -#define VAR_NUM_QUERIES_PER_THREAD 291 -#define VAR_RRSET_CACHE_SIZE 292 -#define VAR_RRSET_CACHE_SLABS 293 -#define VAR_OUTGOING_NUM_TCP 294 -#define VAR_INFRA_HOST_TTL 295 -#define VAR_INFRA_LAME_TTL 296 -#define VAR_INFRA_CACHE_SLABS 297 -#define VAR_INFRA_CACHE_NUMHOSTS 298 -#define VAR_INFRA_CACHE_LAME_SIZE 299 -#define VAR_NAME 300 -#define VAR_STUB_ZONE 301 -#define VAR_STUB_HOST 302 -#define VAR_STUB_ADDR 303 -#define VAR_TARGET_FETCH_POLICY 304 -#define VAR_HARDEN_SHORT_BUFSIZE 305 -#define VAR_HARDEN_LARGE_QUERIES 306 -#define VAR_FORWARD_ZONE 307 -#define VAR_FORWARD_HOST 308 -#define VAR_FORWARD_ADDR 309 -#define VAR_DO_NOT_QUERY_ADDRESS 310 -#define VAR_HIDE_IDENTITY 311 -#define VAR_HIDE_VERSION 312 -#define VAR_IDENTITY 313 -#define VAR_VERSION 314 -#define VAR_HARDEN_GLUE 315 -#define VAR_MODULE_CONF 316 -#define VAR_TRUST_ANCHOR_FILE 317 -#define VAR_TRUST_ANCHOR 318 -#define VAR_VAL_OVERRIDE_DATE 319 -#define VAR_BOGUS_TTL 320 -#define VAR_VAL_CLEAN_ADDITIONAL 321 -#define VAR_VAL_PERMISSIVE_MODE 322 -#define VAR_INCOMING_NUM_TCP 323 -#define VAR_MSG_BUFFER_SIZE 324 -#define VAR_KEY_CACHE_SIZE 325 -#define VAR_KEY_CACHE_SLABS 326 -#define VAR_TRUSTED_KEYS_FILE 327 -#define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 328 -#define VAR_USE_SYSLOG 329 -#define VAR_OUTGOING_INTERFACE 330 -#define VAR_ROOT_HINTS 331 -#define VAR_DO_NOT_QUERY_LOCALHOST 332 -#define VAR_CACHE_MAX_TTL 333 -#define VAR_HARDEN_DNSSEC_STRIPPED 334 -#define VAR_ACCESS_CONTROL 335 -#define VAR_LOCAL_ZONE 336 -#define VAR_LOCAL_DATA 337 -#define VAR_INTERFACE_AUTOMATIC 338 -#define VAR_STATISTICS_INTERVAL 339 -#define VAR_DO_DAEMONIZE 340 -#define VAR_USE_CAPS_FOR_ID 341 -#define VAR_STATISTICS_CUMULATIVE 342 -#define VAR_OUTGOING_PORT_PERMIT 343 -#define VAR_OUTGOING_PORT_AVOID 344 -#define VAR_DLV_ANCHOR_FILE 345 -#define VAR_DLV_ANCHOR 346 -#define VAR_NEG_CACHE_SIZE 347 -#define VAR_HARDEN_REFERRAL_PATH 348 -#define VAR_PRIVATE_ADDRESS 349 -#define VAR_PRIVATE_DOMAIN 350 -#define VAR_REMOTE_CONTROL 351 -#define VAR_CONTROL_ENABLE 352 -#define VAR_CONTROL_INTERFACE 353 -#define VAR_CONTROL_PORT 354 -#define VAR_SERVER_KEY_FILE 355 -#define VAR_SERVER_CERT_FILE 356 -#define VAR_CONTROL_KEY_FILE 357 -#define VAR_CONTROL_CERT_FILE 358 -#define VAR_CONTROL_USE_CERT 359 -#define VAR_EXTENDED_STATISTICS 360 -#define VAR_LOCAL_DATA_PTR 361 -#define VAR_JOSTLE_TIMEOUT 362 -#define VAR_STUB_PRIME 363 -#define VAR_UNWANTED_REPLY_THRESHOLD 364 -#define VAR_LOG_TIME_ASCII 365 -#define VAR_DOMAIN_INSECURE 366 -#define VAR_PYTHON 367 -#define VAR_PYTHON_SCRIPT 368 -#define VAR_VAL_SIG_SKEW_MIN 369 -#define VAR_VAL_SIG_SKEW_MAX 370 -#define VAR_CACHE_MIN_TTL 371 -#define VAR_VAL_LOG_LEVEL 372 -#define VAR_AUTO_TRUST_ANCHOR_FILE 373 -#define VAR_KEEP_MISSING 374 -#define VAR_ADD_HOLDDOWN 375 -#define VAR_DEL_HOLDDOWN 376 -#define VAR_SO_RCVBUF 377 -#define VAR_EDNS_BUFFER_SIZE 378 -#define VAR_PREFETCH 379 -#define VAR_PREFETCH_KEY 380 -#define VAR_SO_SNDBUF 381 -#define VAR_SO_REUSEPORT 382 -#define VAR_HARDEN_BELOW_NXDOMAIN 383 -#define VAR_IGNORE_CD_FLAG 384 -#define VAR_LOG_QUERIES 385 -#define VAR_LOG_REPLIES 386 -#define VAR_LOG_LOCAL_ACTIONS 387 -#define VAR_TCP_UPSTREAM 388 -#define VAR_SSL_UPSTREAM 389 -#define VAR_SSL_SERVICE_KEY 390 -#define VAR_SSL_SERVICE_PEM 391 -#define VAR_SSL_PORT 392 -#define VAR_FORWARD_FIRST 393 -#define VAR_STUB_SSL_UPSTREAM 394 -#define VAR_FORWARD_SSL_UPSTREAM 395 -#define VAR_TLS_CERT_BUNDLE 396 -#define VAR_HTTPS_PORT 397 -#define VAR_HTTP_ENDPOINT 398 -#define VAR_HTTP_MAX_STREAMS 399 -#define VAR_HTTP_QUERY_BUFFER_SIZE 400 -#define VAR_HTTP_RESPONSE_BUFFER_SIZE 401 -#define VAR_HTTP_NODELAY 402 -#define VAR_HTTP_NOTLS_DOWNSTREAM 403 -#define VAR_STUB_FIRST 404 -#define VAR_MINIMAL_RESPONSES 405 -#define VAR_RRSET_ROUNDROBIN 406 -#define VAR_MAX_UDP_SIZE 407 -#define VAR_DELAY_CLOSE 408 -#define VAR_UDP_CONNECT 409 -#define VAR_UNBLOCK_LAN_ZONES 410 -#define VAR_INSECURE_LAN_ZONES 411 -#define VAR_INFRA_CACHE_MIN_RTT 412 -#define VAR_INFRA_KEEP_PROBING 413 -#define VAR_DNS64_PREFIX 414 -#define VAR_DNS64_SYNTHALL 415 -#define VAR_DNS64_IGNORE_AAAA 416 -#define VAR_DNSTAP 417 -#define VAR_DNSTAP_ENABLE 418 -#define VAR_DNSTAP_SOCKET_PATH 419 -#define VAR_DNSTAP_IP 420 -#define VAR_DNSTAP_TLS 421 -#define VAR_DNSTAP_TLS_SERVER_NAME 422 -#define VAR_DNSTAP_TLS_CERT_BUNDLE 423 -#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 424 -#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 425 -#define VAR_DNSTAP_SEND_IDENTITY 426 -#define VAR_DNSTAP_SEND_VERSION 427 -#define VAR_DNSTAP_BIDIRECTIONAL 428 -#define VAR_DNSTAP_IDENTITY 429 -#define VAR_DNSTAP_VERSION 430 -#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 431 -#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 432 -#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 433 -#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 434 -#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 435 -#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 436 -#define VAR_RESPONSE_IP_TAG 437 -#define VAR_RESPONSE_IP 438 -#define VAR_RESPONSE_IP_DATA 439 -#define VAR_HARDEN_ALGO_DOWNGRADE 440 -#define VAR_IP_TRANSPARENT 441 -#define VAR_IP_DSCP 442 -#define VAR_DISABLE_DNSSEC_LAME_CHECK 443 -#define VAR_IP_RATELIMIT 444 -#define VAR_IP_RATELIMIT_SLABS 445 -#define VAR_IP_RATELIMIT_SIZE 446 -#define VAR_RATELIMIT 447 -#define VAR_RATELIMIT_SLABS 448 -#define VAR_RATELIMIT_SIZE 449 -#define VAR_RATELIMIT_FOR_DOMAIN 450 -#define VAR_RATELIMIT_BELOW_DOMAIN 451 -#define VAR_IP_RATELIMIT_FACTOR 452 -#define VAR_RATELIMIT_FACTOR 453 -#define VAR_SEND_CLIENT_SUBNET 454 -#define VAR_CLIENT_SUBNET_ZONE 455 -#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 456 -#define VAR_CLIENT_SUBNET_OPCODE 457 -#define VAR_MAX_CLIENT_SUBNET_IPV4 458 -#define VAR_MAX_CLIENT_SUBNET_IPV6 459 -#define VAR_MIN_CLIENT_SUBNET_IPV4 460 -#define VAR_MIN_CLIENT_SUBNET_IPV6 461 -#define VAR_MAX_ECS_TREE_SIZE_IPV4 462 -#define VAR_MAX_ECS_TREE_SIZE_IPV6 463 -#define VAR_CAPS_WHITELIST 464 -#define VAR_CACHE_MAX_NEGATIVE_TTL 465 -#define VAR_PERMIT_SMALL_HOLDDOWN 466 -#define VAR_QNAME_MINIMISATION 467 -#define VAR_QNAME_MINIMISATION_STRICT 468 -#define VAR_IP_FREEBIND 469 -#define VAR_DEFINE_TAG 470 -#define VAR_LOCAL_ZONE_TAG 471 -#define VAR_ACCESS_CONTROL_TAG 472 -#define VAR_LOCAL_ZONE_OVERRIDE 473 -#define VAR_ACCESS_CONTROL_TAG_ACTION 474 -#define VAR_ACCESS_CONTROL_TAG_DATA 475 -#define VAR_VIEW 476 -#define VAR_ACCESS_CONTROL_VIEW 477 -#define VAR_VIEW_FIRST 478 -#define VAR_SERVE_EXPIRED 479 -#define VAR_SERVE_EXPIRED_TTL 480 -#define VAR_SERVE_EXPIRED_TTL_RESET 481 -#define VAR_SERVE_EXPIRED_REPLY_TTL 482 -#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 483 -#define VAR_SERVE_ORIGINAL_TTL 484 -#define VAR_FAKE_DSA 485 -#define VAR_FAKE_SHA1 486 -#define VAR_LOG_IDENTITY 487 -#define VAR_HIDE_TRUSTANCHOR 488 -#define VAR_TRUST_ANCHOR_SIGNALING 489 -#define VAR_AGGRESSIVE_NSEC 490 -#define VAR_USE_SYSTEMD 491 -#define VAR_SHM_ENABLE 492 -#define VAR_SHM_KEY 493 -#define VAR_ROOT_KEY_SENTINEL 494 -#define VAR_DNSCRYPT 495 -#define VAR_DNSCRYPT_ENABLE 496 -#define VAR_DNSCRYPT_PORT 497 -#define VAR_DNSCRYPT_PROVIDER 498 -#define VAR_DNSCRYPT_SECRET_KEY 499 -#define VAR_DNSCRYPT_PROVIDER_CERT 500 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 501 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 502 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 503 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 504 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 505 -#define VAR_PAD_RESPONSES 506 -#define VAR_PAD_RESPONSES_BLOCK_SIZE 507 -#define VAR_PAD_QUERIES 508 -#define VAR_PAD_QUERIES_BLOCK_SIZE 509 -#define VAR_IPSECMOD_ENABLED 510 -#define VAR_IPSECMOD_HOOK 511 -#define VAR_IPSECMOD_IGNORE_BOGUS 512 -#define VAR_IPSECMOD_MAX_TTL 513 -#define VAR_IPSECMOD_WHITELIST 514 -#define VAR_IPSECMOD_STRICT 515 -#define VAR_CACHEDB 516 -#define VAR_CACHEDB_BACKEND 517 -#define VAR_CACHEDB_SECRETSEED 518 -#define VAR_CACHEDB_REDISHOST 519 -#define VAR_CACHEDB_REDISPORT 520 -#define VAR_CACHEDB_REDISTIMEOUT 521 -#define VAR_CACHEDB_REDISEXPIRERECORDS 522 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 523 -#define VAR_FOR_UPSTREAM 524 -#define VAR_AUTH_ZONE 525 -#define VAR_ZONEFILE 526 -#define VAR_MASTER 527 -#define VAR_URL 528 -#define VAR_FOR_DOWNSTREAM 529 -#define VAR_FALLBACK_ENABLED 530 -#define VAR_TLS_ADDITIONAL_PORT 531 -#define VAR_LOW_RTT 532 -#define VAR_LOW_RTT_PERMIL 533 -#define VAR_FAST_SERVER_PERMIL 534 -#define VAR_FAST_SERVER_NUM 535 -#define VAR_ALLOW_NOTIFY 536 -#define VAR_TLS_WIN_CERT 537 -#define VAR_TCP_CONNECTION_LIMIT 538 -#define VAR_FORWARD_NO_CACHE 539 -#define VAR_STUB_NO_CACHE 540 -#define VAR_LOG_SERVFAIL 541 -#define VAR_DENY_ANY 542 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 543 -#define VAR_LOG_TAG_QUERYREPLY 544 -#define VAR_STREAM_WAIT_SIZE 545 -#define VAR_TLS_CIPHERS 546 -#define VAR_TLS_CIPHERSUITES 547 -#define VAR_TLS_USE_SNI 548 -#define VAR_IPSET 549 -#define VAR_IPSET_NAME_V4 550 -#define VAR_IPSET_NAME_V6 551 -#define VAR_TLS_SESSION_TICKET_KEYS 552 -#define VAR_RPZ 553 -#define VAR_TAGS 554 -#define VAR_RPZ_ACTION_OVERRIDE 555 -#define VAR_RPZ_CNAME_OVERRIDE 556 -#define VAR_RPZ_LOG 557 -#define VAR_RPZ_LOG_NAME 558 -#define VAR_DYNLIB 559 -#define VAR_DYNLIB_FILE 560 -#define VAR_EDNS_CLIENT_STRING 561 -#define VAR_EDNS_CLIENT_STRING_OPCODE 562 -#define VAR_NSID 563 -#define VAR_ZONEMD_PERMISSIVE_MODE 564 -#define VAR_ZONEMD_REJECT_ABSENCE 565 - -/* Value type. */ -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -union YYSTYPE -{ -#line 66 "./util/configparser.y" - - char* str; - -#line 776 "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 */ +#include "configparser.h" /* Symbol kind. */ enum yysymbol_kind_t { @@ -895,548 +229,552 @@ enum yysymbol_kind_t YYSYMBOL_VAR_CONTROL_KEY_FILE = 102, /* VAR_CONTROL_KEY_FILE */ YYSYMBOL_VAR_CONTROL_CERT_FILE = 103, /* VAR_CONTROL_CERT_FILE */ YYSYMBOL_VAR_CONTROL_USE_CERT = 104, /* VAR_CONTROL_USE_CERT */ - YYSYMBOL_VAR_EXTENDED_STATISTICS = 105, /* VAR_EXTENDED_STATISTICS */ - YYSYMBOL_VAR_LOCAL_DATA_PTR = 106, /* VAR_LOCAL_DATA_PTR */ - YYSYMBOL_VAR_JOSTLE_TIMEOUT = 107, /* VAR_JOSTLE_TIMEOUT */ - YYSYMBOL_VAR_STUB_PRIME = 108, /* VAR_STUB_PRIME */ - YYSYMBOL_VAR_UNWANTED_REPLY_THRESHOLD = 109, /* VAR_UNWANTED_REPLY_THRESHOLD */ - YYSYMBOL_VAR_LOG_TIME_ASCII = 110, /* VAR_LOG_TIME_ASCII */ - YYSYMBOL_VAR_DOMAIN_INSECURE = 111, /* VAR_DOMAIN_INSECURE */ - YYSYMBOL_VAR_PYTHON = 112, /* VAR_PYTHON */ - YYSYMBOL_VAR_PYTHON_SCRIPT = 113, /* VAR_PYTHON_SCRIPT */ - YYSYMBOL_VAR_VAL_SIG_SKEW_MIN = 114, /* VAR_VAL_SIG_SKEW_MIN */ - YYSYMBOL_VAR_VAL_SIG_SKEW_MAX = 115, /* VAR_VAL_SIG_SKEW_MAX */ - YYSYMBOL_VAR_CACHE_MIN_TTL = 116, /* VAR_CACHE_MIN_TTL */ - YYSYMBOL_VAR_VAL_LOG_LEVEL = 117, /* VAR_VAL_LOG_LEVEL */ - YYSYMBOL_VAR_AUTO_TRUST_ANCHOR_FILE = 118, /* VAR_AUTO_TRUST_ANCHOR_FILE */ - YYSYMBOL_VAR_KEEP_MISSING = 119, /* VAR_KEEP_MISSING */ - YYSYMBOL_VAR_ADD_HOLDDOWN = 120, /* VAR_ADD_HOLDDOWN */ - YYSYMBOL_VAR_DEL_HOLDDOWN = 121, /* VAR_DEL_HOLDDOWN */ - YYSYMBOL_VAR_SO_RCVBUF = 122, /* VAR_SO_RCVBUF */ - YYSYMBOL_VAR_EDNS_BUFFER_SIZE = 123, /* VAR_EDNS_BUFFER_SIZE */ - YYSYMBOL_VAR_PREFETCH = 124, /* VAR_PREFETCH */ - YYSYMBOL_VAR_PREFETCH_KEY = 125, /* VAR_PREFETCH_KEY */ - YYSYMBOL_VAR_SO_SNDBUF = 126, /* VAR_SO_SNDBUF */ - YYSYMBOL_VAR_SO_REUSEPORT = 127, /* VAR_SO_REUSEPORT */ - YYSYMBOL_VAR_HARDEN_BELOW_NXDOMAIN = 128, /* VAR_HARDEN_BELOW_NXDOMAIN */ - YYSYMBOL_VAR_IGNORE_CD_FLAG = 129, /* VAR_IGNORE_CD_FLAG */ - YYSYMBOL_VAR_LOG_QUERIES = 130, /* VAR_LOG_QUERIES */ - YYSYMBOL_VAR_LOG_REPLIES = 131, /* VAR_LOG_REPLIES */ - YYSYMBOL_VAR_LOG_LOCAL_ACTIONS = 132, /* VAR_LOG_LOCAL_ACTIONS */ - YYSYMBOL_VAR_TCP_UPSTREAM = 133, /* VAR_TCP_UPSTREAM */ - YYSYMBOL_VAR_SSL_UPSTREAM = 134, /* VAR_SSL_UPSTREAM */ - YYSYMBOL_VAR_SSL_SERVICE_KEY = 135, /* VAR_SSL_SERVICE_KEY */ - YYSYMBOL_VAR_SSL_SERVICE_PEM = 136, /* VAR_SSL_SERVICE_PEM */ - YYSYMBOL_VAR_SSL_PORT = 137, /* VAR_SSL_PORT */ - YYSYMBOL_VAR_FORWARD_FIRST = 138, /* VAR_FORWARD_FIRST */ - YYSYMBOL_VAR_STUB_SSL_UPSTREAM = 139, /* VAR_STUB_SSL_UPSTREAM */ - YYSYMBOL_VAR_FORWARD_SSL_UPSTREAM = 140, /* VAR_FORWARD_SSL_UPSTREAM */ - YYSYMBOL_VAR_TLS_CERT_BUNDLE = 141, /* VAR_TLS_CERT_BUNDLE */ - YYSYMBOL_VAR_HTTPS_PORT = 142, /* VAR_HTTPS_PORT */ - YYSYMBOL_VAR_HTTP_ENDPOINT = 143, /* VAR_HTTP_ENDPOINT */ - YYSYMBOL_VAR_HTTP_MAX_STREAMS = 144, /* VAR_HTTP_MAX_STREAMS */ - YYSYMBOL_VAR_HTTP_QUERY_BUFFER_SIZE = 145, /* VAR_HTTP_QUERY_BUFFER_SIZE */ - YYSYMBOL_VAR_HTTP_RESPONSE_BUFFER_SIZE = 146, /* VAR_HTTP_RESPONSE_BUFFER_SIZE */ - YYSYMBOL_VAR_HTTP_NODELAY = 147, /* VAR_HTTP_NODELAY */ - YYSYMBOL_VAR_HTTP_NOTLS_DOWNSTREAM = 148, /* VAR_HTTP_NOTLS_DOWNSTREAM */ - YYSYMBOL_VAR_STUB_FIRST = 149, /* VAR_STUB_FIRST */ - YYSYMBOL_VAR_MINIMAL_RESPONSES = 150, /* VAR_MINIMAL_RESPONSES */ - YYSYMBOL_VAR_RRSET_ROUNDROBIN = 151, /* VAR_RRSET_ROUNDROBIN */ - YYSYMBOL_VAR_MAX_UDP_SIZE = 152, /* VAR_MAX_UDP_SIZE */ - YYSYMBOL_VAR_DELAY_CLOSE = 153, /* VAR_DELAY_CLOSE */ - YYSYMBOL_VAR_UDP_CONNECT = 154, /* VAR_UDP_CONNECT */ - YYSYMBOL_VAR_UNBLOCK_LAN_ZONES = 155, /* VAR_UNBLOCK_LAN_ZONES */ - YYSYMBOL_VAR_INSECURE_LAN_ZONES = 156, /* VAR_INSECURE_LAN_ZONES */ - YYSYMBOL_VAR_INFRA_CACHE_MIN_RTT = 157, /* VAR_INFRA_CACHE_MIN_RTT */ - YYSYMBOL_VAR_INFRA_KEEP_PROBING = 158, /* VAR_INFRA_KEEP_PROBING */ - YYSYMBOL_VAR_DNS64_PREFIX = 159, /* VAR_DNS64_PREFIX */ - YYSYMBOL_VAR_DNS64_SYNTHALL = 160, /* VAR_DNS64_SYNTHALL */ - YYSYMBOL_VAR_DNS64_IGNORE_AAAA = 161, /* VAR_DNS64_IGNORE_AAAA */ - YYSYMBOL_VAR_DNSTAP = 162, /* VAR_DNSTAP */ - YYSYMBOL_VAR_DNSTAP_ENABLE = 163, /* VAR_DNSTAP_ENABLE */ - YYSYMBOL_VAR_DNSTAP_SOCKET_PATH = 164, /* VAR_DNSTAP_SOCKET_PATH */ - YYSYMBOL_VAR_DNSTAP_IP = 165, /* VAR_DNSTAP_IP */ - YYSYMBOL_VAR_DNSTAP_TLS = 166, /* VAR_DNSTAP_TLS */ - YYSYMBOL_VAR_DNSTAP_TLS_SERVER_NAME = 167, /* VAR_DNSTAP_TLS_SERVER_NAME */ - YYSYMBOL_VAR_DNSTAP_TLS_CERT_BUNDLE = 168, /* VAR_DNSTAP_TLS_CERT_BUNDLE */ - YYSYMBOL_VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 169, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE */ - YYSYMBOL_VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 170, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE */ - YYSYMBOL_VAR_DNSTAP_SEND_IDENTITY = 171, /* VAR_DNSTAP_SEND_IDENTITY */ - YYSYMBOL_VAR_DNSTAP_SEND_VERSION = 172, /* VAR_DNSTAP_SEND_VERSION */ - YYSYMBOL_VAR_DNSTAP_BIDIRECTIONAL = 173, /* VAR_DNSTAP_BIDIRECTIONAL */ - YYSYMBOL_VAR_DNSTAP_IDENTITY = 174, /* VAR_DNSTAP_IDENTITY */ - YYSYMBOL_VAR_DNSTAP_VERSION = 175, /* VAR_DNSTAP_VERSION */ - YYSYMBOL_VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 176, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES */ - YYSYMBOL_VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 177, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES */ - YYSYMBOL_VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 178, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES */ - YYSYMBOL_VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 179, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES */ - YYSYMBOL_VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 180, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES */ - YYSYMBOL_VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 181, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES */ - YYSYMBOL_VAR_RESPONSE_IP_TAG = 182, /* VAR_RESPONSE_IP_TAG */ - YYSYMBOL_VAR_RESPONSE_IP = 183, /* VAR_RESPONSE_IP */ - YYSYMBOL_VAR_RESPONSE_IP_DATA = 184, /* VAR_RESPONSE_IP_DATA */ - YYSYMBOL_VAR_HARDEN_ALGO_DOWNGRADE = 185, /* VAR_HARDEN_ALGO_DOWNGRADE */ - YYSYMBOL_VAR_IP_TRANSPARENT = 186, /* VAR_IP_TRANSPARENT */ - YYSYMBOL_VAR_IP_DSCP = 187, /* VAR_IP_DSCP */ - YYSYMBOL_VAR_DISABLE_DNSSEC_LAME_CHECK = 188, /* VAR_DISABLE_DNSSEC_LAME_CHECK */ - YYSYMBOL_VAR_IP_RATELIMIT = 189, /* VAR_IP_RATELIMIT */ - YYSYMBOL_VAR_IP_RATELIMIT_SLABS = 190, /* VAR_IP_RATELIMIT_SLABS */ - YYSYMBOL_VAR_IP_RATELIMIT_SIZE = 191, /* VAR_IP_RATELIMIT_SIZE */ - YYSYMBOL_VAR_RATELIMIT = 192, /* VAR_RATELIMIT */ - YYSYMBOL_VAR_RATELIMIT_SLABS = 193, /* VAR_RATELIMIT_SLABS */ - YYSYMBOL_VAR_RATELIMIT_SIZE = 194, /* VAR_RATELIMIT_SIZE */ - YYSYMBOL_VAR_RATELIMIT_FOR_DOMAIN = 195, /* VAR_RATELIMIT_FOR_DOMAIN */ - YYSYMBOL_VAR_RATELIMIT_BELOW_DOMAIN = 196, /* VAR_RATELIMIT_BELOW_DOMAIN */ - YYSYMBOL_VAR_IP_RATELIMIT_FACTOR = 197, /* VAR_IP_RATELIMIT_FACTOR */ - YYSYMBOL_VAR_RATELIMIT_FACTOR = 198, /* VAR_RATELIMIT_FACTOR */ - YYSYMBOL_VAR_SEND_CLIENT_SUBNET = 199, /* VAR_SEND_CLIENT_SUBNET */ - YYSYMBOL_VAR_CLIENT_SUBNET_ZONE = 200, /* VAR_CLIENT_SUBNET_ZONE */ - YYSYMBOL_VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 201, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ - YYSYMBOL_VAR_CLIENT_SUBNET_OPCODE = 202, /* VAR_CLIENT_SUBNET_OPCODE */ - YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV4 = 203, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ - YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV6 = 204, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ - YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV4 = 205, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ - YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV6 = 206, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ - YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV4 = 207, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ - YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV6 = 208, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ - YYSYMBOL_VAR_CAPS_WHITELIST = 209, /* VAR_CAPS_WHITELIST */ - YYSYMBOL_VAR_CACHE_MAX_NEGATIVE_TTL = 210, /* VAR_CACHE_MAX_NEGATIVE_TTL */ - YYSYMBOL_VAR_PERMIT_SMALL_HOLDDOWN = 211, /* VAR_PERMIT_SMALL_HOLDDOWN */ - YYSYMBOL_VAR_QNAME_MINIMISATION = 212, /* VAR_QNAME_MINIMISATION */ - YYSYMBOL_VAR_QNAME_MINIMISATION_STRICT = 213, /* VAR_QNAME_MINIMISATION_STRICT */ - YYSYMBOL_VAR_IP_FREEBIND = 214, /* VAR_IP_FREEBIND */ - YYSYMBOL_VAR_DEFINE_TAG = 215, /* VAR_DEFINE_TAG */ - YYSYMBOL_VAR_LOCAL_ZONE_TAG = 216, /* VAR_LOCAL_ZONE_TAG */ - YYSYMBOL_VAR_ACCESS_CONTROL_TAG = 217, /* VAR_ACCESS_CONTROL_TAG */ - YYSYMBOL_VAR_LOCAL_ZONE_OVERRIDE = 218, /* VAR_LOCAL_ZONE_OVERRIDE */ - YYSYMBOL_VAR_ACCESS_CONTROL_TAG_ACTION = 219, /* VAR_ACCESS_CONTROL_TAG_ACTION */ - YYSYMBOL_VAR_ACCESS_CONTROL_TAG_DATA = 220, /* VAR_ACCESS_CONTROL_TAG_DATA */ - YYSYMBOL_VAR_VIEW = 221, /* VAR_VIEW */ - YYSYMBOL_VAR_ACCESS_CONTROL_VIEW = 222, /* VAR_ACCESS_CONTROL_VIEW */ - YYSYMBOL_VAR_VIEW_FIRST = 223, /* VAR_VIEW_FIRST */ - YYSYMBOL_VAR_SERVE_EXPIRED = 224, /* VAR_SERVE_EXPIRED */ - YYSYMBOL_VAR_SERVE_EXPIRED_TTL = 225, /* VAR_SERVE_EXPIRED_TTL */ - YYSYMBOL_VAR_SERVE_EXPIRED_TTL_RESET = 226, /* VAR_SERVE_EXPIRED_TTL_RESET */ - YYSYMBOL_VAR_SERVE_EXPIRED_REPLY_TTL = 227, /* VAR_SERVE_EXPIRED_REPLY_TTL */ - YYSYMBOL_VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 228, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ - YYSYMBOL_VAR_SERVE_ORIGINAL_TTL = 229, /* VAR_SERVE_ORIGINAL_TTL */ - YYSYMBOL_VAR_FAKE_DSA = 230, /* VAR_FAKE_DSA */ - YYSYMBOL_VAR_FAKE_SHA1 = 231, /* VAR_FAKE_SHA1 */ - YYSYMBOL_VAR_LOG_IDENTITY = 232, /* VAR_LOG_IDENTITY */ - YYSYMBOL_VAR_HIDE_TRUSTANCHOR = 233, /* VAR_HIDE_TRUSTANCHOR */ - YYSYMBOL_VAR_TRUST_ANCHOR_SIGNALING = 234, /* VAR_TRUST_ANCHOR_SIGNALING */ - YYSYMBOL_VAR_AGGRESSIVE_NSEC = 235, /* VAR_AGGRESSIVE_NSEC */ - YYSYMBOL_VAR_USE_SYSTEMD = 236, /* VAR_USE_SYSTEMD */ - YYSYMBOL_VAR_SHM_ENABLE = 237, /* VAR_SHM_ENABLE */ - YYSYMBOL_VAR_SHM_KEY = 238, /* VAR_SHM_KEY */ - YYSYMBOL_VAR_ROOT_KEY_SENTINEL = 239, /* VAR_ROOT_KEY_SENTINEL */ - YYSYMBOL_VAR_DNSCRYPT = 240, /* VAR_DNSCRYPT */ - YYSYMBOL_VAR_DNSCRYPT_ENABLE = 241, /* VAR_DNSCRYPT_ENABLE */ - YYSYMBOL_VAR_DNSCRYPT_PORT = 242, /* VAR_DNSCRYPT_PORT */ - YYSYMBOL_VAR_DNSCRYPT_PROVIDER = 243, /* VAR_DNSCRYPT_PROVIDER */ - YYSYMBOL_VAR_DNSCRYPT_SECRET_KEY = 244, /* VAR_DNSCRYPT_SECRET_KEY */ - YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT = 245, /* VAR_DNSCRYPT_PROVIDER_CERT */ - YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 246, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ - YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 247, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ - YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 248, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ - YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SIZE = 249, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ - YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SLABS = 250, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ - YYSYMBOL_VAR_PAD_RESPONSES = 251, /* VAR_PAD_RESPONSES */ - YYSYMBOL_VAR_PAD_RESPONSES_BLOCK_SIZE = 252, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ - YYSYMBOL_VAR_PAD_QUERIES = 253, /* VAR_PAD_QUERIES */ - YYSYMBOL_VAR_PAD_QUERIES_BLOCK_SIZE = 254, /* VAR_PAD_QUERIES_BLOCK_SIZE */ - YYSYMBOL_VAR_IPSECMOD_ENABLED = 255, /* VAR_IPSECMOD_ENABLED */ - YYSYMBOL_VAR_IPSECMOD_HOOK = 256, /* VAR_IPSECMOD_HOOK */ - YYSYMBOL_VAR_IPSECMOD_IGNORE_BOGUS = 257, /* VAR_IPSECMOD_IGNORE_BOGUS */ - YYSYMBOL_VAR_IPSECMOD_MAX_TTL = 258, /* VAR_IPSECMOD_MAX_TTL */ - YYSYMBOL_VAR_IPSECMOD_WHITELIST = 259, /* VAR_IPSECMOD_WHITELIST */ - YYSYMBOL_VAR_IPSECMOD_STRICT = 260, /* VAR_IPSECMOD_STRICT */ - YYSYMBOL_VAR_CACHEDB = 261, /* VAR_CACHEDB */ - YYSYMBOL_VAR_CACHEDB_BACKEND = 262, /* VAR_CACHEDB_BACKEND */ - YYSYMBOL_VAR_CACHEDB_SECRETSEED = 263, /* VAR_CACHEDB_SECRETSEED */ - YYSYMBOL_VAR_CACHEDB_REDISHOST = 264, /* VAR_CACHEDB_REDISHOST */ - YYSYMBOL_VAR_CACHEDB_REDISPORT = 265, /* VAR_CACHEDB_REDISPORT */ - YYSYMBOL_VAR_CACHEDB_REDISTIMEOUT = 266, /* VAR_CACHEDB_REDISTIMEOUT */ - YYSYMBOL_VAR_CACHEDB_REDISEXPIRERECORDS = 267, /* VAR_CACHEDB_REDISEXPIRERECORDS */ - YYSYMBOL_VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 268, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ - YYSYMBOL_VAR_FOR_UPSTREAM = 269, /* VAR_FOR_UPSTREAM */ - YYSYMBOL_VAR_AUTH_ZONE = 270, /* VAR_AUTH_ZONE */ - YYSYMBOL_VAR_ZONEFILE = 271, /* VAR_ZONEFILE */ - YYSYMBOL_VAR_MASTER = 272, /* VAR_MASTER */ - YYSYMBOL_VAR_URL = 273, /* VAR_URL */ - YYSYMBOL_VAR_FOR_DOWNSTREAM = 274, /* VAR_FOR_DOWNSTREAM */ - YYSYMBOL_VAR_FALLBACK_ENABLED = 275, /* VAR_FALLBACK_ENABLED */ - YYSYMBOL_VAR_TLS_ADDITIONAL_PORT = 276, /* VAR_TLS_ADDITIONAL_PORT */ - YYSYMBOL_VAR_LOW_RTT = 277, /* VAR_LOW_RTT */ - YYSYMBOL_VAR_LOW_RTT_PERMIL = 278, /* VAR_LOW_RTT_PERMIL */ - YYSYMBOL_VAR_FAST_SERVER_PERMIL = 279, /* VAR_FAST_SERVER_PERMIL */ - YYSYMBOL_VAR_FAST_SERVER_NUM = 280, /* VAR_FAST_SERVER_NUM */ - YYSYMBOL_VAR_ALLOW_NOTIFY = 281, /* VAR_ALLOW_NOTIFY */ - YYSYMBOL_VAR_TLS_WIN_CERT = 282, /* VAR_TLS_WIN_CERT */ - YYSYMBOL_VAR_TCP_CONNECTION_LIMIT = 283, /* VAR_TCP_CONNECTION_LIMIT */ - YYSYMBOL_VAR_FORWARD_NO_CACHE = 284, /* VAR_FORWARD_NO_CACHE */ - YYSYMBOL_VAR_STUB_NO_CACHE = 285, /* VAR_STUB_NO_CACHE */ - YYSYMBOL_VAR_LOG_SERVFAIL = 286, /* VAR_LOG_SERVFAIL */ - YYSYMBOL_VAR_DENY_ANY = 287, /* VAR_DENY_ANY */ - YYSYMBOL_VAR_UNKNOWN_SERVER_TIME_LIMIT = 288, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ - YYSYMBOL_VAR_LOG_TAG_QUERYREPLY = 289, /* VAR_LOG_TAG_QUERYREPLY */ - YYSYMBOL_VAR_STREAM_WAIT_SIZE = 290, /* VAR_STREAM_WAIT_SIZE */ - YYSYMBOL_VAR_TLS_CIPHERS = 291, /* VAR_TLS_CIPHERS */ - YYSYMBOL_VAR_TLS_CIPHERSUITES = 292, /* VAR_TLS_CIPHERSUITES */ - YYSYMBOL_VAR_TLS_USE_SNI = 293, /* VAR_TLS_USE_SNI */ - YYSYMBOL_VAR_IPSET = 294, /* VAR_IPSET */ - YYSYMBOL_VAR_IPSET_NAME_V4 = 295, /* VAR_IPSET_NAME_V4 */ - YYSYMBOL_VAR_IPSET_NAME_V6 = 296, /* VAR_IPSET_NAME_V6 */ - YYSYMBOL_VAR_TLS_SESSION_TICKET_KEYS = 297, /* VAR_TLS_SESSION_TICKET_KEYS */ - YYSYMBOL_VAR_RPZ = 298, /* VAR_RPZ */ - YYSYMBOL_VAR_TAGS = 299, /* VAR_TAGS */ - YYSYMBOL_VAR_RPZ_ACTION_OVERRIDE = 300, /* VAR_RPZ_ACTION_OVERRIDE */ - YYSYMBOL_VAR_RPZ_CNAME_OVERRIDE = 301, /* VAR_RPZ_CNAME_OVERRIDE */ - YYSYMBOL_VAR_RPZ_LOG = 302, /* VAR_RPZ_LOG */ - YYSYMBOL_VAR_RPZ_LOG_NAME = 303, /* VAR_RPZ_LOG_NAME */ - YYSYMBOL_VAR_DYNLIB = 304, /* VAR_DYNLIB */ - YYSYMBOL_VAR_DYNLIB_FILE = 305, /* VAR_DYNLIB_FILE */ - YYSYMBOL_VAR_EDNS_CLIENT_STRING = 306, /* VAR_EDNS_CLIENT_STRING */ - YYSYMBOL_VAR_EDNS_CLIENT_STRING_OPCODE = 307, /* VAR_EDNS_CLIENT_STRING_OPCODE */ - YYSYMBOL_VAR_NSID = 308, /* VAR_NSID */ - YYSYMBOL_VAR_ZONEMD_PERMISSIVE_MODE = 309, /* VAR_ZONEMD_PERMISSIVE_MODE */ - YYSYMBOL_VAR_ZONEMD_REJECT_ABSENCE = 310, /* VAR_ZONEMD_REJECT_ABSENCE */ - YYSYMBOL_YYACCEPT = 311, /* $accept */ - YYSYMBOL_toplevelvars = 312, /* toplevelvars */ - YYSYMBOL_toplevelvar = 313, /* toplevelvar */ - YYSYMBOL_force_toplevel = 314, /* force_toplevel */ - YYSYMBOL_serverstart = 315, /* serverstart */ - YYSYMBOL_contents_server = 316, /* contents_server */ - YYSYMBOL_content_server = 317, /* content_server */ - YYSYMBOL_stubstart = 318, /* stubstart */ - YYSYMBOL_contents_stub = 319, /* contents_stub */ - YYSYMBOL_content_stub = 320, /* content_stub */ - YYSYMBOL_forwardstart = 321, /* forwardstart */ - YYSYMBOL_contents_forward = 322, /* contents_forward */ - YYSYMBOL_content_forward = 323, /* content_forward */ - YYSYMBOL_viewstart = 324, /* viewstart */ - YYSYMBOL_contents_view = 325, /* contents_view */ - YYSYMBOL_content_view = 326, /* content_view */ - YYSYMBOL_authstart = 327, /* authstart */ - YYSYMBOL_contents_auth = 328, /* contents_auth */ - YYSYMBOL_content_auth = 329, /* content_auth */ - YYSYMBOL_rpz_tag = 330, /* rpz_tag */ - YYSYMBOL_rpz_action_override = 331, /* rpz_action_override */ - YYSYMBOL_rpz_cname_override = 332, /* rpz_cname_override */ - YYSYMBOL_rpz_log = 333, /* rpz_log */ - YYSYMBOL_rpz_log_name = 334, /* rpz_log_name */ - YYSYMBOL_rpzstart = 335, /* rpzstart */ - YYSYMBOL_contents_rpz = 336, /* contents_rpz */ - YYSYMBOL_content_rpz = 337, /* content_rpz */ - YYSYMBOL_server_num_threads = 338, /* server_num_threads */ - YYSYMBOL_server_verbosity = 339, /* server_verbosity */ - YYSYMBOL_server_statistics_interval = 340, /* server_statistics_interval */ - YYSYMBOL_server_statistics_cumulative = 341, /* server_statistics_cumulative */ - YYSYMBOL_server_extended_statistics = 342, /* server_extended_statistics */ - YYSYMBOL_server_shm_enable = 343, /* server_shm_enable */ - YYSYMBOL_server_shm_key = 344, /* server_shm_key */ - YYSYMBOL_server_port = 345, /* server_port */ - YYSYMBOL_server_send_client_subnet = 346, /* server_send_client_subnet */ - YYSYMBOL_server_client_subnet_zone = 347, /* server_client_subnet_zone */ - YYSYMBOL_server_client_subnet_always_forward = 348, /* server_client_subnet_always_forward */ - YYSYMBOL_server_client_subnet_opcode = 349, /* server_client_subnet_opcode */ - YYSYMBOL_server_max_client_subnet_ipv4 = 350, /* server_max_client_subnet_ipv4 */ - YYSYMBOL_server_max_client_subnet_ipv6 = 351, /* server_max_client_subnet_ipv6 */ - YYSYMBOL_server_min_client_subnet_ipv4 = 352, /* server_min_client_subnet_ipv4 */ - YYSYMBOL_server_min_client_subnet_ipv6 = 353, /* server_min_client_subnet_ipv6 */ - YYSYMBOL_server_max_ecs_tree_size_ipv4 = 354, /* server_max_ecs_tree_size_ipv4 */ - YYSYMBOL_server_max_ecs_tree_size_ipv6 = 355, /* server_max_ecs_tree_size_ipv6 */ - YYSYMBOL_server_interface = 356, /* server_interface */ - YYSYMBOL_server_outgoing_interface = 357, /* server_outgoing_interface */ - YYSYMBOL_server_outgoing_range = 358, /* server_outgoing_range */ - YYSYMBOL_server_outgoing_port_permit = 359, /* server_outgoing_port_permit */ - YYSYMBOL_server_outgoing_port_avoid = 360, /* server_outgoing_port_avoid */ - YYSYMBOL_server_outgoing_num_tcp = 361, /* server_outgoing_num_tcp */ - YYSYMBOL_server_incoming_num_tcp = 362, /* server_incoming_num_tcp */ - YYSYMBOL_server_interface_automatic = 363, /* server_interface_automatic */ - YYSYMBOL_server_do_ip4 = 364, /* server_do_ip4 */ - YYSYMBOL_server_do_ip6 = 365, /* server_do_ip6 */ - YYSYMBOL_server_do_udp = 366, /* server_do_udp */ - YYSYMBOL_server_do_tcp = 367, /* server_do_tcp */ - YYSYMBOL_server_prefer_ip4 = 368, /* server_prefer_ip4 */ - YYSYMBOL_server_prefer_ip6 = 369, /* server_prefer_ip6 */ - YYSYMBOL_server_tcp_mss = 370, /* server_tcp_mss */ - YYSYMBOL_server_outgoing_tcp_mss = 371, /* server_outgoing_tcp_mss */ - YYSYMBOL_server_tcp_idle_timeout = 372, /* server_tcp_idle_timeout */ - YYSYMBOL_server_tcp_keepalive = 373, /* server_tcp_keepalive */ - YYSYMBOL_server_tcp_keepalive_timeout = 374, /* server_tcp_keepalive_timeout */ - YYSYMBOL_server_tcp_upstream = 375, /* server_tcp_upstream */ - YYSYMBOL_server_udp_upstream_without_downstream = 376, /* server_udp_upstream_without_downstream */ - YYSYMBOL_server_ssl_upstream = 377, /* server_ssl_upstream */ - YYSYMBOL_server_ssl_service_key = 378, /* server_ssl_service_key */ - YYSYMBOL_server_ssl_service_pem = 379, /* server_ssl_service_pem */ - YYSYMBOL_server_ssl_port = 380, /* server_ssl_port */ - YYSYMBOL_server_tls_cert_bundle = 381, /* server_tls_cert_bundle */ - YYSYMBOL_server_tls_win_cert = 382, /* server_tls_win_cert */ - YYSYMBOL_server_tls_additional_port = 383, /* server_tls_additional_port */ - YYSYMBOL_server_tls_ciphers = 384, /* server_tls_ciphers */ - YYSYMBOL_server_tls_ciphersuites = 385, /* server_tls_ciphersuites */ - YYSYMBOL_server_tls_session_ticket_keys = 386, /* server_tls_session_ticket_keys */ - YYSYMBOL_server_tls_use_sni = 387, /* server_tls_use_sni */ - YYSYMBOL_server_https_port = 388, /* server_https_port */ - YYSYMBOL_server_http_endpoint = 389, /* server_http_endpoint */ - YYSYMBOL_server_http_max_streams = 390, /* server_http_max_streams */ - YYSYMBOL_server_http_query_buffer_size = 391, /* server_http_query_buffer_size */ - YYSYMBOL_server_http_response_buffer_size = 392, /* server_http_response_buffer_size */ - YYSYMBOL_server_http_nodelay = 393, /* server_http_nodelay */ - YYSYMBOL_server_http_notls_downstream = 394, /* server_http_notls_downstream */ - YYSYMBOL_server_use_systemd = 395, /* server_use_systemd */ - YYSYMBOL_server_do_daemonize = 396, /* server_do_daemonize */ - YYSYMBOL_server_use_syslog = 397, /* server_use_syslog */ - YYSYMBOL_server_log_time_ascii = 398, /* server_log_time_ascii */ - YYSYMBOL_server_log_queries = 399, /* server_log_queries */ - YYSYMBOL_server_log_replies = 400, /* server_log_replies */ - YYSYMBOL_server_log_tag_queryreply = 401, /* server_log_tag_queryreply */ - YYSYMBOL_server_log_servfail = 402, /* server_log_servfail */ - YYSYMBOL_server_log_local_actions = 403, /* server_log_local_actions */ - YYSYMBOL_server_chroot = 404, /* server_chroot */ - YYSYMBOL_server_username = 405, /* server_username */ - YYSYMBOL_server_directory = 406, /* server_directory */ - YYSYMBOL_server_logfile = 407, /* server_logfile */ - YYSYMBOL_server_pidfile = 408, /* server_pidfile */ - YYSYMBOL_server_root_hints = 409, /* server_root_hints */ - YYSYMBOL_server_dlv_anchor_file = 410, /* server_dlv_anchor_file */ - YYSYMBOL_server_dlv_anchor = 411, /* server_dlv_anchor */ - YYSYMBOL_server_auto_trust_anchor_file = 412, /* server_auto_trust_anchor_file */ - YYSYMBOL_server_trust_anchor_file = 413, /* server_trust_anchor_file */ - YYSYMBOL_server_trusted_keys_file = 414, /* server_trusted_keys_file */ - YYSYMBOL_server_trust_anchor = 415, /* server_trust_anchor */ - YYSYMBOL_server_trust_anchor_signaling = 416, /* server_trust_anchor_signaling */ - YYSYMBOL_server_root_key_sentinel = 417, /* server_root_key_sentinel */ - YYSYMBOL_server_domain_insecure = 418, /* server_domain_insecure */ - YYSYMBOL_server_hide_identity = 419, /* server_hide_identity */ - YYSYMBOL_server_hide_version = 420, /* server_hide_version */ - YYSYMBOL_server_hide_trustanchor = 421, /* server_hide_trustanchor */ - YYSYMBOL_server_identity = 422, /* server_identity */ - YYSYMBOL_server_version = 423, /* server_version */ - YYSYMBOL_server_nsid = 424, /* server_nsid */ - YYSYMBOL_server_so_rcvbuf = 425, /* server_so_rcvbuf */ - YYSYMBOL_server_so_sndbuf = 426, /* server_so_sndbuf */ - YYSYMBOL_server_so_reuseport = 427, /* server_so_reuseport */ - YYSYMBOL_server_ip_transparent = 428, /* server_ip_transparent */ - YYSYMBOL_server_ip_freebind = 429, /* server_ip_freebind */ - YYSYMBOL_server_ip_dscp = 430, /* server_ip_dscp */ - YYSYMBOL_server_stream_wait_size = 431, /* server_stream_wait_size */ - YYSYMBOL_server_edns_buffer_size = 432, /* server_edns_buffer_size */ - YYSYMBOL_server_msg_buffer_size = 433, /* server_msg_buffer_size */ - YYSYMBOL_server_msg_cache_size = 434, /* server_msg_cache_size */ - YYSYMBOL_server_msg_cache_slabs = 435, /* server_msg_cache_slabs */ - YYSYMBOL_server_num_queries_per_thread = 436, /* server_num_queries_per_thread */ - YYSYMBOL_server_jostle_timeout = 437, /* server_jostle_timeout */ - YYSYMBOL_server_delay_close = 438, /* server_delay_close */ - YYSYMBOL_server_udp_connect = 439, /* server_udp_connect */ - YYSYMBOL_server_unblock_lan_zones = 440, /* server_unblock_lan_zones */ - YYSYMBOL_server_insecure_lan_zones = 441, /* server_insecure_lan_zones */ - YYSYMBOL_server_rrset_cache_size = 442, /* server_rrset_cache_size */ - YYSYMBOL_server_rrset_cache_slabs = 443, /* server_rrset_cache_slabs */ - YYSYMBOL_server_infra_host_ttl = 444, /* server_infra_host_ttl */ - YYSYMBOL_server_infra_lame_ttl = 445, /* server_infra_lame_ttl */ - YYSYMBOL_server_infra_cache_numhosts = 446, /* server_infra_cache_numhosts */ - YYSYMBOL_server_infra_cache_lame_size = 447, /* server_infra_cache_lame_size */ - YYSYMBOL_server_infra_cache_slabs = 448, /* server_infra_cache_slabs */ - YYSYMBOL_server_infra_cache_min_rtt = 449, /* server_infra_cache_min_rtt */ - YYSYMBOL_server_infra_keep_probing = 450, /* server_infra_keep_probing */ - YYSYMBOL_server_target_fetch_policy = 451, /* server_target_fetch_policy */ - YYSYMBOL_server_harden_short_bufsize = 452, /* server_harden_short_bufsize */ - YYSYMBOL_server_harden_large_queries = 453, /* server_harden_large_queries */ - YYSYMBOL_server_harden_glue = 454, /* server_harden_glue */ - YYSYMBOL_server_harden_dnssec_stripped = 455, /* server_harden_dnssec_stripped */ - YYSYMBOL_server_harden_below_nxdomain = 456, /* server_harden_below_nxdomain */ - YYSYMBOL_server_harden_referral_path = 457, /* server_harden_referral_path */ - YYSYMBOL_server_harden_algo_downgrade = 458, /* server_harden_algo_downgrade */ - YYSYMBOL_server_use_caps_for_id = 459, /* server_use_caps_for_id */ - YYSYMBOL_server_caps_whitelist = 460, /* server_caps_whitelist */ - YYSYMBOL_server_private_address = 461, /* server_private_address */ - YYSYMBOL_server_private_domain = 462, /* server_private_domain */ - YYSYMBOL_server_prefetch = 463, /* server_prefetch */ - YYSYMBOL_server_prefetch_key = 464, /* server_prefetch_key */ - YYSYMBOL_server_deny_any = 465, /* server_deny_any */ - YYSYMBOL_server_unwanted_reply_threshold = 466, /* server_unwanted_reply_threshold */ - YYSYMBOL_server_do_not_query_address = 467, /* server_do_not_query_address */ - YYSYMBOL_server_do_not_query_localhost = 468, /* server_do_not_query_localhost */ - YYSYMBOL_server_access_control = 469, /* server_access_control */ - YYSYMBOL_server_module_conf = 470, /* server_module_conf */ - YYSYMBOL_server_val_override_date = 471, /* server_val_override_date */ - YYSYMBOL_server_val_sig_skew_min = 472, /* server_val_sig_skew_min */ - YYSYMBOL_server_val_sig_skew_max = 473, /* server_val_sig_skew_max */ - YYSYMBOL_server_cache_max_ttl = 474, /* server_cache_max_ttl */ - YYSYMBOL_server_cache_max_negative_ttl = 475, /* server_cache_max_negative_ttl */ - YYSYMBOL_server_cache_min_ttl = 476, /* server_cache_min_ttl */ - YYSYMBOL_server_bogus_ttl = 477, /* server_bogus_ttl */ - YYSYMBOL_server_val_clean_additional = 478, /* server_val_clean_additional */ - YYSYMBOL_server_val_permissive_mode = 479, /* server_val_permissive_mode */ - YYSYMBOL_server_aggressive_nsec = 480, /* server_aggressive_nsec */ - YYSYMBOL_server_ignore_cd_flag = 481, /* server_ignore_cd_flag */ - YYSYMBOL_server_serve_expired = 482, /* server_serve_expired */ - YYSYMBOL_server_serve_expired_ttl = 483, /* server_serve_expired_ttl */ - YYSYMBOL_server_serve_expired_ttl_reset = 484, /* server_serve_expired_ttl_reset */ - YYSYMBOL_server_serve_expired_reply_ttl = 485, /* server_serve_expired_reply_ttl */ - YYSYMBOL_server_serve_expired_client_timeout = 486, /* server_serve_expired_client_timeout */ - YYSYMBOL_server_serve_original_ttl = 487, /* server_serve_original_ttl */ - YYSYMBOL_server_fake_dsa = 488, /* server_fake_dsa */ - YYSYMBOL_server_fake_sha1 = 489, /* server_fake_sha1 */ - YYSYMBOL_server_val_log_level = 490, /* server_val_log_level */ - YYSYMBOL_server_val_nsec3_keysize_iterations = 491, /* server_val_nsec3_keysize_iterations */ - YYSYMBOL_server_zonemd_permissive_mode = 492, /* server_zonemd_permissive_mode */ - YYSYMBOL_server_add_holddown = 493, /* server_add_holddown */ - YYSYMBOL_server_del_holddown = 494, /* server_del_holddown */ - YYSYMBOL_server_keep_missing = 495, /* server_keep_missing */ - YYSYMBOL_server_permit_small_holddown = 496, /* server_permit_small_holddown */ - YYSYMBOL_server_key_cache_size = 497, /* server_key_cache_size */ - YYSYMBOL_server_key_cache_slabs = 498, /* server_key_cache_slabs */ - YYSYMBOL_server_neg_cache_size = 499, /* server_neg_cache_size */ - YYSYMBOL_server_local_zone = 500, /* server_local_zone */ - YYSYMBOL_server_local_data = 501, /* server_local_data */ - YYSYMBOL_server_local_data_ptr = 502, /* server_local_data_ptr */ - YYSYMBOL_server_minimal_responses = 503, /* server_minimal_responses */ - YYSYMBOL_server_rrset_roundrobin = 504, /* server_rrset_roundrobin */ - YYSYMBOL_server_unknown_server_time_limit = 505, /* server_unknown_server_time_limit */ - YYSYMBOL_server_max_udp_size = 506, /* server_max_udp_size */ - YYSYMBOL_server_dns64_prefix = 507, /* server_dns64_prefix */ - YYSYMBOL_server_dns64_synthall = 508, /* server_dns64_synthall */ - YYSYMBOL_server_dns64_ignore_aaaa = 509, /* server_dns64_ignore_aaaa */ - YYSYMBOL_server_define_tag = 510, /* server_define_tag */ - YYSYMBOL_server_local_zone_tag = 511, /* server_local_zone_tag */ - YYSYMBOL_server_access_control_tag = 512, /* server_access_control_tag */ - YYSYMBOL_server_access_control_tag_action = 513, /* server_access_control_tag_action */ - YYSYMBOL_server_access_control_tag_data = 514, /* server_access_control_tag_data */ - YYSYMBOL_server_local_zone_override = 515, /* server_local_zone_override */ - YYSYMBOL_server_access_control_view = 516, /* server_access_control_view */ - YYSYMBOL_server_response_ip_tag = 517, /* server_response_ip_tag */ - YYSYMBOL_server_ip_ratelimit = 518, /* server_ip_ratelimit */ - YYSYMBOL_server_ratelimit = 519, /* server_ratelimit */ - YYSYMBOL_server_ip_ratelimit_size = 520, /* server_ip_ratelimit_size */ - YYSYMBOL_server_ratelimit_size = 521, /* server_ratelimit_size */ - YYSYMBOL_server_ip_ratelimit_slabs = 522, /* server_ip_ratelimit_slabs */ - YYSYMBOL_server_ratelimit_slabs = 523, /* server_ratelimit_slabs */ - YYSYMBOL_server_ratelimit_for_domain = 524, /* server_ratelimit_for_domain */ - YYSYMBOL_server_ratelimit_below_domain = 525, /* server_ratelimit_below_domain */ - YYSYMBOL_server_ip_ratelimit_factor = 526, /* server_ip_ratelimit_factor */ - YYSYMBOL_server_ratelimit_factor = 527, /* server_ratelimit_factor */ - YYSYMBOL_server_low_rtt = 528, /* server_low_rtt */ - YYSYMBOL_server_fast_server_num = 529, /* server_fast_server_num */ - YYSYMBOL_server_fast_server_permil = 530, /* server_fast_server_permil */ - YYSYMBOL_server_qname_minimisation = 531, /* server_qname_minimisation */ - YYSYMBOL_server_qname_minimisation_strict = 532, /* server_qname_minimisation_strict */ - YYSYMBOL_server_pad_responses = 533, /* server_pad_responses */ - YYSYMBOL_server_pad_responses_block_size = 534, /* server_pad_responses_block_size */ - YYSYMBOL_server_pad_queries = 535, /* server_pad_queries */ - YYSYMBOL_server_pad_queries_block_size = 536, /* server_pad_queries_block_size */ - YYSYMBOL_server_ipsecmod_enabled = 537, /* server_ipsecmod_enabled */ - YYSYMBOL_server_ipsecmod_ignore_bogus = 538, /* server_ipsecmod_ignore_bogus */ - YYSYMBOL_server_ipsecmod_hook = 539, /* server_ipsecmod_hook */ - YYSYMBOL_server_ipsecmod_max_ttl = 540, /* server_ipsecmod_max_ttl */ - YYSYMBOL_server_ipsecmod_whitelist = 541, /* server_ipsecmod_whitelist */ - YYSYMBOL_server_ipsecmod_strict = 542, /* server_ipsecmod_strict */ - YYSYMBOL_server_edns_client_string = 543, /* server_edns_client_string */ - YYSYMBOL_server_edns_client_string_opcode = 544, /* server_edns_client_string_opcode */ - YYSYMBOL_stub_name = 545, /* stub_name */ - YYSYMBOL_stub_host = 546, /* stub_host */ - YYSYMBOL_stub_addr = 547, /* stub_addr */ - YYSYMBOL_stub_first = 548, /* stub_first */ - YYSYMBOL_stub_no_cache = 549, /* stub_no_cache */ - YYSYMBOL_stub_ssl_upstream = 550, /* stub_ssl_upstream */ - YYSYMBOL_stub_prime = 551, /* stub_prime */ - YYSYMBOL_forward_name = 552, /* forward_name */ - YYSYMBOL_forward_host = 553, /* forward_host */ - YYSYMBOL_forward_addr = 554, /* forward_addr */ - YYSYMBOL_forward_first = 555, /* forward_first */ - YYSYMBOL_forward_no_cache = 556, /* forward_no_cache */ - YYSYMBOL_forward_ssl_upstream = 557, /* forward_ssl_upstream */ - YYSYMBOL_auth_name = 558, /* auth_name */ - YYSYMBOL_auth_zonefile = 559, /* auth_zonefile */ - YYSYMBOL_auth_master = 560, /* auth_master */ - YYSYMBOL_auth_url = 561, /* auth_url */ - YYSYMBOL_auth_allow_notify = 562, /* auth_allow_notify */ - YYSYMBOL_auth_zonemd_reject_absence = 563, /* auth_zonemd_reject_absence */ - YYSYMBOL_auth_for_downstream = 564, /* auth_for_downstream */ - YYSYMBOL_auth_for_upstream = 565, /* auth_for_upstream */ - YYSYMBOL_auth_fallback_enabled = 566, /* auth_fallback_enabled */ - YYSYMBOL_view_name = 567, /* view_name */ - YYSYMBOL_view_local_zone = 568, /* view_local_zone */ - YYSYMBOL_view_response_ip = 569, /* view_response_ip */ - YYSYMBOL_view_response_ip_data = 570, /* view_response_ip_data */ - YYSYMBOL_view_local_data = 571, /* view_local_data */ - YYSYMBOL_view_local_data_ptr = 572, /* view_local_data_ptr */ - YYSYMBOL_view_first = 573, /* view_first */ - YYSYMBOL_rcstart = 574, /* rcstart */ - YYSYMBOL_contents_rc = 575, /* contents_rc */ - YYSYMBOL_content_rc = 576, /* content_rc */ - YYSYMBOL_rc_control_enable = 577, /* rc_control_enable */ - YYSYMBOL_rc_control_port = 578, /* rc_control_port */ - YYSYMBOL_rc_control_interface = 579, /* rc_control_interface */ - YYSYMBOL_rc_control_use_cert = 580, /* rc_control_use_cert */ - YYSYMBOL_rc_server_key_file = 581, /* rc_server_key_file */ - YYSYMBOL_rc_server_cert_file = 582, /* rc_server_cert_file */ - YYSYMBOL_rc_control_key_file = 583, /* rc_control_key_file */ - YYSYMBOL_rc_control_cert_file = 584, /* rc_control_cert_file */ - YYSYMBOL_dtstart = 585, /* dtstart */ - YYSYMBOL_contents_dt = 586, /* contents_dt */ - YYSYMBOL_content_dt = 587, /* content_dt */ - YYSYMBOL_dt_dnstap_enable = 588, /* dt_dnstap_enable */ - YYSYMBOL_dt_dnstap_bidirectional = 589, /* dt_dnstap_bidirectional */ - YYSYMBOL_dt_dnstap_socket_path = 590, /* dt_dnstap_socket_path */ - YYSYMBOL_dt_dnstap_ip = 591, /* dt_dnstap_ip */ - YYSYMBOL_dt_dnstap_tls = 592, /* dt_dnstap_tls */ - YYSYMBOL_dt_dnstap_tls_server_name = 593, /* dt_dnstap_tls_server_name */ - YYSYMBOL_dt_dnstap_tls_cert_bundle = 594, /* dt_dnstap_tls_cert_bundle */ - YYSYMBOL_dt_dnstap_tls_client_key_file = 595, /* dt_dnstap_tls_client_key_file */ - YYSYMBOL_dt_dnstap_tls_client_cert_file = 596, /* dt_dnstap_tls_client_cert_file */ - YYSYMBOL_dt_dnstap_send_identity = 597, /* dt_dnstap_send_identity */ - YYSYMBOL_dt_dnstap_send_version = 598, /* dt_dnstap_send_version */ - YYSYMBOL_dt_dnstap_identity = 599, /* dt_dnstap_identity */ - YYSYMBOL_dt_dnstap_version = 600, /* dt_dnstap_version */ - YYSYMBOL_dt_dnstap_log_resolver_query_messages = 601, /* dt_dnstap_log_resolver_query_messages */ - YYSYMBOL_dt_dnstap_log_resolver_response_messages = 602, /* dt_dnstap_log_resolver_response_messages */ - YYSYMBOL_dt_dnstap_log_client_query_messages = 603, /* dt_dnstap_log_client_query_messages */ - YYSYMBOL_dt_dnstap_log_client_response_messages = 604, /* dt_dnstap_log_client_response_messages */ - YYSYMBOL_dt_dnstap_log_forwarder_query_messages = 605, /* dt_dnstap_log_forwarder_query_messages */ - YYSYMBOL_dt_dnstap_log_forwarder_response_messages = 606, /* dt_dnstap_log_forwarder_response_messages */ - YYSYMBOL_pythonstart = 607, /* pythonstart */ - YYSYMBOL_contents_py = 608, /* contents_py */ - YYSYMBOL_content_py = 609, /* content_py */ - YYSYMBOL_py_script = 610, /* py_script */ - YYSYMBOL_dynlibstart = 611, /* dynlibstart */ - YYSYMBOL_contents_dl = 612, /* contents_dl */ - YYSYMBOL_content_dl = 613, /* content_dl */ - YYSYMBOL_dl_file = 614, /* dl_file */ - YYSYMBOL_server_disable_dnssec_lame_check = 615, /* server_disable_dnssec_lame_check */ - YYSYMBOL_server_log_identity = 616, /* server_log_identity */ - YYSYMBOL_server_response_ip = 617, /* server_response_ip */ - YYSYMBOL_server_response_ip_data = 618, /* server_response_ip_data */ - YYSYMBOL_dnscstart = 619, /* dnscstart */ - YYSYMBOL_contents_dnsc = 620, /* contents_dnsc */ - YYSYMBOL_content_dnsc = 621, /* content_dnsc */ - YYSYMBOL_dnsc_dnscrypt_enable = 622, /* dnsc_dnscrypt_enable */ - YYSYMBOL_dnsc_dnscrypt_port = 623, /* dnsc_dnscrypt_port */ - YYSYMBOL_dnsc_dnscrypt_provider = 624, /* dnsc_dnscrypt_provider */ - YYSYMBOL_dnsc_dnscrypt_provider_cert = 625, /* dnsc_dnscrypt_provider_cert */ - YYSYMBOL_dnsc_dnscrypt_provider_cert_rotated = 626, /* dnsc_dnscrypt_provider_cert_rotated */ - YYSYMBOL_dnsc_dnscrypt_secret_key = 627, /* dnsc_dnscrypt_secret_key */ - YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_size = 628, /* dnsc_dnscrypt_shared_secret_cache_size */ - YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_slabs = 629, /* dnsc_dnscrypt_shared_secret_cache_slabs */ - YYSYMBOL_dnsc_dnscrypt_nonce_cache_size = 630, /* dnsc_dnscrypt_nonce_cache_size */ - YYSYMBOL_dnsc_dnscrypt_nonce_cache_slabs = 631, /* dnsc_dnscrypt_nonce_cache_slabs */ - YYSYMBOL_cachedbstart = 632, /* cachedbstart */ - YYSYMBOL_contents_cachedb = 633, /* contents_cachedb */ - YYSYMBOL_content_cachedb = 634, /* content_cachedb */ - YYSYMBOL_cachedb_backend_name = 635, /* cachedb_backend_name */ - YYSYMBOL_cachedb_secret_seed = 636, /* cachedb_secret_seed */ - YYSYMBOL_redis_server_host = 637, /* redis_server_host */ - YYSYMBOL_redis_server_port = 638, /* redis_server_port */ - YYSYMBOL_redis_timeout = 639, /* redis_timeout */ - YYSYMBOL_redis_expire_records = 640, /* redis_expire_records */ - YYSYMBOL_server_tcp_connection_limit = 641, /* server_tcp_connection_limit */ - YYSYMBOL_ipsetstart = 642, /* ipsetstart */ - YYSYMBOL_contents_ipset = 643, /* contents_ipset */ - YYSYMBOL_content_ipset = 644, /* content_ipset */ - YYSYMBOL_ipset_name_v4 = 645, /* ipset_name_v4 */ - YYSYMBOL_ipset_name_v6 = 646 /* ipset_name_v6 */ + YYSYMBOL_VAR_TCP_REUSE_TIMEOUT = 105, /* VAR_TCP_REUSE_TIMEOUT */ + YYSYMBOL_VAR_MAX_REUSE_TCP_QUERIES = 106, /* VAR_MAX_REUSE_TCP_QUERIES */ + YYSYMBOL_VAR_EXTENDED_STATISTICS = 107, /* VAR_EXTENDED_STATISTICS */ + YYSYMBOL_VAR_LOCAL_DATA_PTR = 108, /* VAR_LOCAL_DATA_PTR */ + YYSYMBOL_VAR_JOSTLE_TIMEOUT = 109, /* VAR_JOSTLE_TIMEOUT */ + YYSYMBOL_VAR_STUB_PRIME = 110, /* VAR_STUB_PRIME */ + YYSYMBOL_VAR_UNWANTED_REPLY_THRESHOLD = 111, /* VAR_UNWANTED_REPLY_THRESHOLD */ + YYSYMBOL_VAR_LOG_TIME_ASCII = 112, /* VAR_LOG_TIME_ASCII */ + YYSYMBOL_VAR_DOMAIN_INSECURE = 113, /* VAR_DOMAIN_INSECURE */ + YYSYMBOL_VAR_PYTHON = 114, /* VAR_PYTHON */ + YYSYMBOL_VAR_PYTHON_SCRIPT = 115, /* VAR_PYTHON_SCRIPT */ + YYSYMBOL_VAR_VAL_SIG_SKEW_MIN = 116, /* VAR_VAL_SIG_SKEW_MIN */ + YYSYMBOL_VAR_VAL_SIG_SKEW_MAX = 117, /* VAR_VAL_SIG_SKEW_MAX */ + YYSYMBOL_VAR_CACHE_MIN_TTL = 118, /* VAR_CACHE_MIN_TTL */ + YYSYMBOL_VAR_VAL_LOG_LEVEL = 119, /* VAR_VAL_LOG_LEVEL */ + YYSYMBOL_VAR_AUTO_TRUST_ANCHOR_FILE = 120, /* VAR_AUTO_TRUST_ANCHOR_FILE */ + YYSYMBOL_VAR_KEEP_MISSING = 121, /* VAR_KEEP_MISSING */ + YYSYMBOL_VAR_ADD_HOLDDOWN = 122, /* VAR_ADD_HOLDDOWN */ + YYSYMBOL_VAR_DEL_HOLDDOWN = 123, /* VAR_DEL_HOLDDOWN */ + YYSYMBOL_VAR_SO_RCVBUF = 124, /* VAR_SO_RCVBUF */ + YYSYMBOL_VAR_EDNS_BUFFER_SIZE = 125, /* VAR_EDNS_BUFFER_SIZE */ + YYSYMBOL_VAR_PREFETCH = 126, /* VAR_PREFETCH */ + YYSYMBOL_VAR_PREFETCH_KEY = 127, /* VAR_PREFETCH_KEY */ + YYSYMBOL_VAR_SO_SNDBUF = 128, /* VAR_SO_SNDBUF */ + YYSYMBOL_VAR_SO_REUSEPORT = 129, /* VAR_SO_REUSEPORT */ + YYSYMBOL_VAR_HARDEN_BELOW_NXDOMAIN = 130, /* VAR_HARDEN_BELOW_NXDOMAIN */ + YYSYMBOL_VAR_IGNORE_CD_FLAG = 131, /* VAR_IGNORE_CD_FLAG */ + YYSYMBOL_VAR_LOG_QUERIES = 132, /* VAR_LOG_QUERIES */ + YYSYMBOL_VAR_LOG_REPLIES = 133, /* VAR_LOG_REPLIES */ + YYSYMBOL_VAR_LOG_LOCAL_ACTIONS = 134, /* VAR_LOG_LOCAL_ACTIONS */ + YYSYMBOL_VAR_TCP_UPSTREAM = 135, /* VAR_TCP_UPSTREAM */ + YYSYMBOL_VAR_SSL_UPSTREAM = 136, /* VAR_SSL_UPSTREAM */ + YYSYMBOL_VAR_SSL_SERVICE_KEY = 137, /* VAR_SSL_SERVICE_KEY */ + YYSYMBOL_VAR_SSL_SERVICE_PEM = 138, /* VAR_SSL_SERVICE_PEM */ + YYSYMBOL_VAR_SSL_PORT = 139, /* VAR_SSL_PORT */ + YYSYMBOL_VAR_FORWARD_FIRST = 140, /* VAR_FORWARD_FIRST */ + YYSYMBOL_VAR_STUB_SSL_UPSTREAM = 141, /* VAR_STUB_SSL_UPSTREAM */ + YYSYMBOL_VAR_FORWARD_SSL_UPSTREAM = 142, /* VAR_FORWARD_SSL_UPSTREAM */ + YYSYMBOL_VAR_TLS_CERT_BUNDLE = 143, /* VAR_TLS_CERT_BUNDLE */ + YYSYMBOL_VAR_HTTPS_PORT = 144, /* VAR_HTTPS_PORT */ + YYSYMBOL_VAR_HTTP_ENDPOINT = 145, /* VAR_HTTP_ENDPOINT */ + YYSYMBOL_VAR_HTTP_MAX_STREAMS = 146, /* VAR_HTTP_MAX_STREAMS */ + YYSYMBOL_VAR_HTTP_QUERY_BUFFER_SIZE = 147, /* VAR_HTTP_QUERY_BUFFER_SIZE */ + YYSYMBOL_VAR_HTTP_RESPONSE_BUFFER_SIZE = 148, /* VAR_HTTP_RESPONSE_BUFFER_SIZE */ + YYSYMBOL_VAR_HTTP_NODELAY = 149, /* VAR_HTTP_NODELAY */ + YYSYMBOL_VAR_HTTP_NOTLS_DOWNSTREAM = 150, /* VAR_HTTP_NOTLS_DOWNSTREAM */ + YYSYMBOL_VAR_STUB_FIRST = 151, /* VAR_STUB_FIRST */ + YYSYMBOL_VAR_MINIMAL_RESPONSES = 152, /* VAR_MINIMAL_RESPONSES */ + YYSYMBOL_VAR_RRSET_ROUNDROBIN = 153, /* VAR_RRSET_ROUNDROBIN */ + YYSYMBOL_VAR_MAX_UDP_SIZE = 154, /* VAR_MAX_UDP_SIZE */ + YYSYMBOL_VAR_DELAY_CLOSE = 155, /* VAR_DELAY_CLOSE */ + YYSYMBOL_VAR_UDP_CONNECT = 156, /* VAR_UDP_CONNECT */ + YYSYMBOL_VAR_UNBLOCK_LAN_ZONES = 157, /* VAR_UNBLOCK_LAN_ZONES */ + YYSYMBOL_VAR_INSECURE_LAN_ZONES = 158, /* VAR_INSECURE_LAN_ZONES */ + YYSYMBOL_VAR_INFRA_CACHE_MIN_RTT = 159, /* VAR_INFRA_CACHE_MIN_RTT */ + YYSYMBOL_VAR_INFRA_KEEP_PROBING = 160, /* VAR_INFRA_KEEP_PROBING */ + YYSYMBOL_VAR_DNS64_PREFIX = 161, /* VAR_DNS64_PREFIX */ + YYSYMBOL_VAR_DNS64_SYNTHALL = 162, /* VAR_DNS64_SYNTHALL */ + YYSYMBOL_VAR_DNS64_IGNORE_AAAA = 163, /* VAR_DNS64_IGNORE_AAAA */ + YYSYMBOL_VAR_DNSTAP = 164, /* VAR_DNSTAP */ + YYSYMBOL_VAR_DNSTAP_ENABLE = 165, /* VAR_DNSTAP_ENABLE */ + YYSYMBOL_VAR_DNSTAP_SOCKET_PATH = 166, /* VAR_DNSTAP_SOCKET_PATH */ + YYSYMBOL_VAR_DNSTAP_IP = 167, /* VAR_DNSTAP_IP */ + YYSYMBOL_VAR_DNSTAP_TLS = 168, /* VAR_DNSTAP_TLS */ + YYSYMBOL_VAR_DNSTAP_TLS_SERVER_NAME = 169, /* VAR_DNSTAP_TLS_SERVER_NAME */ + YYSYMBOL_VAR_DNSTAP_TLS_CERT_BUNDLE = 170, /* VAR_DNSTAP_TLS_CERT_BUNDLE */ + YYSYMBOL_VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 171, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE */ + YYSYMBOL_VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 172, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE */ + YYSYMBOL_VAR_DNSTAP_SEND_IDENTITY = 173, /* VAR_DNSTAP_SEND_IDENTITY */ + YYSYMBOL_VAR_DNSTAP_SEND_VERSION = 174, /* VAR_DNSTAP_SEND_VERSION */ + YYSYMBOL_VAR_DNSTAP_BIDIRECTIONAL = 175, /* VAR_DNSTAP_BIDIRECTIONAL */ + YYSYMBOL_VAR_DNSTAP_IDENTITY = 176, /* VAR_DNSTAP_IDENTITY */ + YYSYMBOL_VAR_DNSTAP_VERSION = 177, /* VAR_DNSTAP_VERSION */ + YYSYMBOL_VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 178, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES */ + YYSYMBOL_VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 179, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES */ + YYSYMBOL_VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 180, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES */ + YYSYMBOL_VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 181, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES */ + YYSYMBOL_VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 182, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES */ + YYSYMBOL_VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 183, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES */ + YYSYMBOL_VAR_RESPONSE_IP_TAG = 184, /* VAR_RESPONSE_IP_TAG */ + YYSYMBOL_VAR_RESPONSE_IP = 185, /* VAR_RESPONSE_IP */ + YYSYMBOL_VAR_RESPONSE_IP_DATA = 186, /* VAR_RESPONSE_IP_DATA */ + YYSYMBOL_VAR_HARDEN_ALGO_DOWNGRADE = 187, /* VAR_HARDEN_ALGO_DOWNGRADE */ + YYSYMBOL_VAR_IP_TRANSPARENT = 188, /* VAR_IP_TRANSPARENT */ + YYSYMBOL_VAR_IP_DSCP = 189, /* VAR_IP_DSCP */ + YYSYMBOL_VAR_DISABLE_DNSSEC_LAME_CHECK = 190, /* VAR_DISABLE_DNSSEC_LAME_CHECK */ + YYSYMBOL_VAR_IP_RATELIMIT = 191, /* VAR_IP_RATELIMIT */ + YYSYMBOL_VAR_IP_RATELIMIT_SLABS = 192, /* VAR_IP_RATELIMIT_SLABS */ + YYSYMBOL_VAR_IP_RATELIMIT_SIZE = 193, /* VAR_IP_RATELIMIT_SIZE */ + YYSYMBOL_VAR_RATELIMIT = 194, /* VAR_RATELIMIT */ + YYSYMBOL_VAR_RATELIMIT_SLABS = 195, /* VAR_RATELIMIT_SLABS */ + YYSYMBOL_VAR_RATELIMIT_SIZE = 196, /* VAR_RATELIMIT_SIZE */ + YYSYMBOL_VAR_RATELIMIT_FOR_DOMAIN = 197, /* VAR_RATELIMIT_FOR_DOMAIN */ + YYSYMBOL_VAR_RATELIMIT_BELOW_DOMAIN = 198, /* VAR_RATELIMIT_BELOW_DOMAIN */ + YYSYMBOL_VAR_IP_RATELIMIT_FACTOR = 199, /* VAR_IP_RATELIMIT_FACTOR */ + YYSYMBOL_VAR_RATELIMIT_FACTOR = 200, /* VAR_RATELIMIT_FACTOR */ + YYSYMBOL_VAR_SEND_CLIENT_SUBNET = 201, /* VAR_SEND_CLIENT_SUBNET */ + YYSYMBOL_VAR_CLIENT_SUBNET_ZONE = 202, /* VAR_CLIENT_SUBNET_ZONE */ + YYSYMBOL_VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 203, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ + YYSYMBOL_VAR_CLIENT_SUBNET_OPCODE = 204, /* VAR_CLIENT_SUBNET_OPCODE */ + YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV4 = 205, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ + YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV6 = 206, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ + YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV4 = 207, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ + YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV6 = 208, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ + YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV4 = 209, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ + YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV6 = 210, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ + YYSYMBOL_VAR_CAPS_WHITELIST = 211, /* VAR_CAPS_WHITELIST */ + YYSYMBOL_VAR_CACHE_MAX_NEGATIVE_TTL = 212, /* VAR_CACHE_MAX_NEGATIVE_TTL */ + YYSYMBOL_VAR_PERMIT_SMALL_HOLDDOWN = 213, /* VAR_PERMIT_SMALL_HOLDDOWN */ + YYSYMBOL_VAR_QNAME_MINIMISATION = 214, /* VAR_QNAME_MINIMISATION */ + YYSYMBOL_VAR_QNAME_MINIMISATION_STRICT = 215, /* VAR_QNAME_MINIMISATION_STRICT */ + YYSYMBOL_VAR_IP_FREEBIND = 216, /* VAR_IP_FREEBIND */ + YYSYMBOL_VAR_DEFINE_TAG = 217, /* VAR_DEFINE_TAG */ + YYSYMBOL_VAR_LOCAL_ZONE_TAG = 218, /* VAR_LOCAL_ZONE_TAG */ + YYSYMBOL_VAR_ACCESS_CONTROL_TAG = 219, /* VAR_ACCESS_CONTROL_TAG */ + YYSYMBOL_VAR_LOCAL_ZONE_OVERRIDE = 220, /* VAR_LOCAL_ZONE_OVERRIDE */ + YYSYMBOL_VAR_ACCESS_CONTROL_TAG_ACTION = 221, /* VAR_ACCESS_CONTROL_TAG_ACTION */ + YYSYMBOL_VAR_ACCESS_CONTROL_TAG_DATA = 222, /* VAR_ACCESS_CONTROL_TAG_DATA */ + YYSYMBOL_VAR_VIEW = 223, /* VAR_VIEW */ + YYSYMBOL_VAR_ACCESS_CONTROL_VIEW = 224, /* VAR_ACCESS_CONTROL_VIEW */ + YYSYMBOL_VAR_VIEW_FIRST = 225, /* VAR_VIEW_FIRST */ + YYSYMBOL_VAR_SERVE_EXPIRED = 226, /* VAR_SERVE_EXPIRED */ + YYSYMBOL_VAR_SERVE_EXPIRED_TTL = 227, /* VAR_SERVE_EXPIRED_TTL */ + YYSYMBOL_VAR_SERVE_EXPIRED_TTL_RESET = 228, /* VAR_SERVE_EXPIRED_TTL_RESET */ + YYSYMBOL_VAR_SERVE_EXPIRED_REPLY_TTL = 229, /* VAR_SERVE_EXPIRED_REPLY_TTL */ + YYSYMBOL_VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 230, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ + YYSYMBOL_VAR_SERVE_ORIGINAL_TTL = 231, /* VAR_SERVE_ORIGINAL_TTL */ + YYSYMBOL_VAR_FAKE_DSA = 232, /* VAR_FAKE_DSA */ + YYSYMBOL_VAR_FAKE_SHA1 = 233, /* VAR_FAKE_SHA1 */ + YYSYMBOL_VAR_LOG_IDENTITY = 234, /* VAR_LOG_IDENTITY */ + YYSYMBOL_VAR_HIDE_TRUSTANCHOR = 235, /* VAR_HIDE_TRUSTANCHOR */ + YYSYMBOL_VAR_TRUST_ANCHOR_SIGNALING = 236, /* VAR_TRUST_ANCHOR_SIGNALING */ + YYSYMBOL_VAR_AGGRESSIVE_NSEC = 237, /* VAR_AGGRESSIVE_NSEC */ + YYSYMBOL_VAR_USE_SYSTEMD = 238, /* VAR_USE_SYSTEMD */ + YYSYMBOL_VAR_SHM_ENABLE = 239, /* VAR_SHM_ENABLE */ + YYSYMBOL_VAR_SHM_KEY = 240, /* VAR_SHM_KEY */ + YYSYMBOL_VAR_ROOT_KEY_SENTINEL = 241, /* VAR_ROOT_KEY_SENTINEL */ + YYSYMBOL_VAR_DNSCRYPT = 242, /* VAR_DNSCRYPT */ + YYSYMBOL_VAR_DNSCRYPT_ENABLE = 243, /* VAR_DNSCRYPT_ENABLE */ + YYSYMBOL_VAR_DNSCRYPT_PORT = 244, /* VAR_DNSCRYPT_PORT */ + YYSYMBOL_VAR_DNSCRYPT_PROVIDER = 245, /* VAR_DNSCRYPT_PROVIDER */ + YYSYMBOL_VAR_DNSCRYPT_SECRET_KEY = 246, /* VAR_DNSCRYPT_SECRET_KEY */ + YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT = 247, /* VAR_DNSCRYPT_PROVIDER_CERT */ + YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 248, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ + YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 249, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ + YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 250, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ + YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SIZE = 251, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ + YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SLABS = 252, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ + YYSYMBOL_VAR_PAD_RESPONSES = 253, /* VAR_PAD_RESPONSES */ + YYSYMBOL_VAR_PAD_RESPONSES_BLOCK_SIZE = 254, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ + YYSYMBOL_VAR_PAD_QUERIES = 255, /* VAR_PAD_QUERIES */ + YYSYMBOL_VAR_PAD_QUERIES_BLOCK_SIZE = 256, /* VAR_PAD_QUERIES_BLOCK_SIZE */ + YYSYMBOL_VAR_IPSECMOD_ENABLED = 257, /* VAR_IPSECMOD_ENABLED */ + YYSYMBOL_VAR_IPSECMOD_HOOK = 258, /* VAR_IPSECMOD_HOOK */ + YYSYMBOL_VAR_IPSECMOD_IGNORE_BOGUS = 259, /* VAR_IPSECMOD_IGNORE_BOGUS */ + YYSYMBOL_VAR_IPSECMOD_MAX_TTL = 260, /* VAR_IPSECMOD_MAX_TTL */ + YYSYMBOL_VAR_IPSECMOD_WHITELIST = 261, /* VAR_IPSECMOD_WHITELIST */ + YYSYMBOL_VAR_IPSECMOD_STRICT = 262, /* VAR_IPSECMOD_STRICT */ + YYSYMBOL_VAR_CACHEDB = 263, /* VAR_CACHEDB */ + YYSYMBOL_VAR_CACHEDB_BACKEND = 264, /* VAR_CACHEDB_BACKEND */ + YYSYMBOL_VAR_CACHEDB_SECRETSEED = 265, /* VAR_CACHEDB_SECRETSEED */ + YYSYMBOL_VAR_CACHEDB_REDISHOST = 266, /* VAR_CACHEDB_REDISHOST */ + YYSYMBOL_VAR_CACHEDB_REDISPORT = 267, /* VAR_CACHEDB_REDISPORT */ + YYSYMBOL_VAR_CACHEDB_REDISTIMEOUT = 268, /* VAR_CACHEDB_REDISTIMEOUT */ + YYSYMBOL_VAR_CACHEDB_REDISEXPIRERECORDS = 269, /* VAR_CACHEDB_REDISEXPIRERECORDS */ + YYSYMBOL_VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 270, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ + YYSYMBOL_VAR_FOR_UPSTREAM = 271, /* VAR_FOR_UPSTREAM */ + YYSYMBOL_VAR_AUTH_ZONE = 272, /* VAR_AUTH_ZONE */ + YYSYMBOL_VAR_ZONEFILE = 273, /* VAR_ZONEFILE */ + YYSYMBOL_VAR_MASTER = 274, /* VAR_MASTER */ + YYSYMBOL_VAR_URL = 275, /* VAR_URL */ + YYSYMBOL_VAR_FOR_DOWNSTREAM = 276, /* VAR_FOR_DOWNSTREAM */ + YYSYMBOL_VAR_FALLBACK_ENABLED = 277, /* VAR_FALLBACK_ENABLED */ + YYSYMBOL_VAR_TLS_ADDITIONAL_PORT = 278, /* VAR_TLS_ADDITIONAL_PORT */ + YYSYMBOL_VAR_LOW_RTT = 279, /* VAR_LOW_RTT */ + YYSYMBOL_VAR_LOW_RTT_PERMIL = 280, /* VAR_LOW_RTT_PERMIL */ + YYSYMBOL_VAR_FAST_SERVER_PERMIL = 281, /* VAR_FAST_SERVER_PERMIL */ + YYSYMBOL_VAR_FAST_SERVER_NUM = 282, /* VAR_FAST_SERVER_NUM */ + YYSYMBOL_VAR_ALLOW_NOTIFY = 283, /* VAR_ALLOW_NOTIFY */ + YYSYMBOL_VAR_TLS_WIN_CERT = 284, /* VAR_TLS_WIN_CERT */ + YYSYMBOL_VAR_TCP_CONNECTION_LIMIT = 285, /* VAR_TCP_CONNECTION_LIMIT */ + YYSYMBOL_VAR_FORWARD_NO_CACHE = 286, /* VAR_FORWARD_NO_CACHE */ + YYSYMBOL_VAR_STUB_NO_CACHE = 287, /* VAR_STUB_NO_CACHE */ + YYSYMBOL_VAR_LOG_SERVFAIL = 288, /* VAR_LOG_SERVFAIL */ + YYSYMBOL_VAR_DENY_ANY = 289, /* VAR_DENY_ANY */ + YYSYMBOL_VAR_UNKNOWN_SERVER_TIME_LIMIT = 290, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ + YYSYMBOL_VAR_LOG_TAG_QUERYREPLY = 291, /* VAR_LOG_TAG_QUERYREPLY */ + YYSYMBOL_VAR_STREAM_WAIT_SIZE = 292, /* VAR_STREAM_WAIT_SIZE */ + YYSYMBOL_VAR_TLS_CIPHERS = 293, /* VAR_TLS_CIPHERS */ + YYSYMBOL_VAR_TLS_CIPHERSUITES = 294, /* VAR_TLS_CIPHERSUITES */ + YYSYMBOL_VAR_TLS_USE_SNI = 295, /* VAR_TLS_USE_SNI */ + YYSYMBOL_VAR_IPSET = 296, /* VAR_IPSET */ + YYSYMBOL_VAR_IPSET_NAME_V4 = 297, /* VAR_IPSET_NAME_V4 */ + YYSYMBOL_VAR_IPSET_NAME_V6 = 298, /* VAR_IPSET_NAME_V6 */ + YYSYMBOL_VAR_TLS_SESSION_TICKET_KEYS = 299, /* VAR_TLS_SESSION_TICKET_KEYS */ + YYSYMBOL_VAR_RPZ = 300, /* VAR_RPZ */ + YYSYMBOL_VAR_TAGS = 301, /* VAR_TAGS */ + YYSYMBOL_VAR_RPZ_ACTION_OVERRIDE = 302, /* VAR_RPZ_ACTION_OVERRIDE */ + YYSYMBOL_VAR_RPZ_CNAME_OVERRIDE = 303, /* VAR_RPZ_CNAME_OVERRIDE */ + YYSYMBOL_VAR_RPZ_LOG = 304, /* VAR_RPZ_LOG */ + YYSYMBOL_VAR_RPZ_LOG_NAME = 305, /* VAR_RPZ_LOG_NAME */ + YYSYMBOL_VAR_DYNLIB = 306, /* VAR_DYNLIB */ + YYSYMBOL_VAR_DYNLIB_FILE = 307, /* VAR_DYNLIB_FILE */ + YYSYMBOL_VAR_EDNS_CLIENT_STRING = 308, /* VAR_EDNS_CLIENT_STRING */ + YYSYMBOL_VAR_EDNS_CLIENT_STRING_OPCODE = 309, /* VAR_EDNS_CLIENT_STRING_OPCODE */ + YYSYMBOL_VAR_NSID = 310, /* VAR_NSID */ + YYSYMBOL_VAR_ZONEMD_PERMISSIVE_MODE = 311, /* VAR_ZONEMD_PERMISSIVE_MODE */ + YYSYMBOL_VAR_ZONEMD_REJECT_ABSENCE = 312, /* VAR_ZONEMD_REJECT_ABSENCE */ + YYSYMBOL_YYACCEPT = 313, /* $accept */ + YYSYMBOL_toplevelvars = 314, /* toplevelvars */ + YYSYMBOL_toplevelvar = 315, /* toplevelvar */ + YYSYMBOL_force_toplevel = 316, /* force_toplevel */ + YYSYMBOL_serverstart = 317, /* serverstart */ + YYSYMBOL_contents_server = 318, /* contents_server */ + YYSYMBOL_content_server = 319, /* content_server */ + YYSYMBOL_stubstart = 320, /* stubstart */ + YYSYMBOL_contents_stub = 321, /* contents_stub */ + YYSYMBOL_content_stub = 322, /* content_stub */ + YYSYMBOL_forwardstart = 323, /* forwardstart */ + YYSYMBOL_contents_forward = 324, /* contents_forward */ + YYSYMBOL_content_forward = 325, /* content_forward */ + YYSYMBOL_viewstart = 326, /* viewstart */ + YYSYMBOL_contents_view = 327, /* contents_view */ + YYSYMBOL_content_view = 328, /* content_view */ + YYSYMBOL_authstart = 329, /* authstart */ + YYSYMBOL_contents_auth = 330, /* contents_auth */ + YYSYMBOL_content_auth = 331, /* content_auth */ + YYSYMBOL_rpz_tag = 332, /* rpz_tag */ + YYSYMBOL_rpz_action_override = 333, /* rpz_action_override */ + YYSYMBOL_rpz_cname_override = 334, /* rpz_cname_override */ + YYSYMBOL_rpz_log = 335, /* rpz_log */ + YYSYMBOL_rpz_log_name = 336, /* rpz_log_name */ + YYSYMBOL_rpzstart = 337, /* rpzstart */ + YYSYMBOL_contents_rpz = 338, /* contents_rpz */ + YYSYMBOL_content_rpz = 339, /* content_rpz */ + YYSYMBOL_server_num_threads = 340, /* server_num_threads */ + YYSYMBOL_server_verbosity = 341, /* server_verbosity */ + YYSYMBOL_server_statistics_interval = 342, /* server_statistics_interval */ + YYSYMBOL_server_statistics_cumulative = 343, /* server_statistics_cumulative */ + YYSYMBOL_server_extended_statistics = 344, /* server_extended_statistics */ + YYSYMBOL_server_shm_enable = 345, /* server_shm_enable */ + YYSYMBOL_server_shm_key = 346, /* server_shm_key */ + YYSYMBOL_server_port = 347, /* server_port */ + YYSYMBOL_server_send_client_subnet = 348, /* server_send_client_subnet */ + YYSYMBOL_server_client_subnet_zone = 349, /* server_client_subnet_zone */ + YYSYMBOL_server_client_subnet_always_forward = 350, /* server_client_subnet_always_forward */ + YYSYMBOL_server_client_subnet_opcode = 351, /* server_client_subnet_opcode */ + YYSYMBOL_server_max_client_subnet_ipv4 = 352, /* server_max_client_subnet_ipv4 */ + YYSYMBOL_server_max_client_subnet_ipv6 = 353, /* server_max_client_subnet_ipv6 */ + YYSYMBOL_server_min_client_subnet_ipv4 = 354, /* server_min_client_subnet_ipv4 */ + YYSYMBOL_server_min_client_subnet_ipv6 = 355, /* server_min_client_subnet_ipv6 */ + YYSYMBOL_server_max_ecs_tree_size_ipv4 = 356, /* server_max_ecs_tree_size_ipv4 */ + YYSYMBOL_server_max_ecs_tree_size_ipv6 = 357, /* server_max_ecs_tree_size_ipv6 */ + YYSYMBOL_server_interface = 358, /* server_interface */ + YYSYMBOL_server_outgoing_interface = 359, /* server_outgoing_interface */ + YYSYMBOL_server_outgoing_range = 360, /* server_outgoing_range */ + YYSYMBOL_server_outgoing_port_permit = 361, /* server_outgoing_port_permit */ + YYSYMBOL_server_outgoing_port_avoid = 362, /* server_outgoing_port_avoid */ + YYSYMBOL_server_outgoing_num_tcp = 363, /* server_outgoing_num_tcp */ + YYSYMBOL_server_incoming_num_tcp = 364, /* server_incoming_num_tcp */ + YYSYMBOL_server_interface_automatic = 365, /* server_interface_automatic */ + YYSYMBOL_server_do_ip4 = 366, /* server_do_ip4 */ + YYSYMBOL_server_do_ip6 = 367, /* server_do_ip6 */ + YYSYMBOL_server_do_udp = 368, /* server_do_udp */ + YYSYMBOL_server_do_tcp = 369, /* server_do_tcp */ + YYSYMBOL_server_prefer_ip4 = 370, /* server_prefer_ip4 */ + YYSYMBOL_server_prefer_ip6 = 371, /* server_prefer_ip6 */ + YYSYMBOL_server_tcp_mss = 372, /* server_tcp_mss */ + YYSYMBOL_server_outgoing_tcp_mss = 373, /* server_outgoing_tcp_mss */ + YYSYMBOL_server_tcp_idle_timeout = 374, /* server_tcp_idle_timeout */ + YYSYMBOL_server_max_reuse_tcp_queries = 375, /* server_max_reuse_tcp_queries */ + YYSYMBOL_server_tcp_reuse_timeout = 376, /* server_tcp_reuse_timeout */ + YYSYMBOL_server_tcp_keepalive = 377, /* server_tcp_keepalive */ + YYSYMBOL_server_tcp_keepalive_timeout = 378, /* server_tcp_keepalive_timeout */ + YYSYMBOL_server_tcp_upstream = 379, /* server_tcp_upstream */ + YYSYMBOL_server_udp_upstream_without_downstream = 380, /* server_udp_upstream_without_downstream */ + YYSYMBOL_server_ssl_upstream = 381, /* server_ssl_upstream */ + YYSYMBOL_server_ssl_service_key = 382, /* server_ssl_service_key */ + YYSYMBOL_server_ssl_service_pem = 383, /* server_ssl_service_pem */ + YYSYMBOL_server_ssl_port = 384, /* server_ssl_port */ + YYSYMBOL_server_tls_cert_bundle = 385, /* server_tls_cert_bundle */ + YYSYMBOL_server_tls_win_cert = 386, /* server_tls_win_cert */ + YYSYMBOL_server_tls_additional_port = 387, /* server_tls_additional_port */ + YYSYMBOL_server_tls_ciphers = 388, /* server_tls_ciphers */ + YYSYMBOL_server_tls_ciphersuites = 389, /* server_tls_ciphersuites */ + YYSYMBOL_server_tls_session_ticket_keys = 390, /* server_tls_session_ticket_keys */ + YYSYMBOL_server_tls_use_sni = 391, /* server_tls_use_sni */ + YYSYMBOL_server_https_port = 392, /* server_https_port */ + YYSYMBOL_server_http_endpoint = 393, /* server_http_endpoint */ + YYSYMBOL_server_http_max_streams = 394, /* server_http_max_streams */ + YYSYMBOL_server_http_query_buffer_size = 395, /* server_http_query_buffer_size */ + YYSYMBOL_server_http_response_buffer_size = 396, /* server_http_response_buffer_size */ + YYSYMBOL_server_http_nodelay = 397, /* server_http_nodelay */ + YYSYMBOL_server_http_notls_downstream = 398, /* server_http_notls_downstream */ + YYSYMBOL_server_use_systemd = 399, /* server_use_systemd */ + YYSYMBOL_server_do_daemonize = 400, /* server_do_daemonize */ + YYSYMBOL_server_use_syslog = 401, /* server_use_syslog */ + YYSYMBOL_server_log_time_ascii = 402, /* server_log_time_ascii */ + YYSYMBOL_server_log_queries = 403, /* server_log_queries */ + YYSYMBOL_server_log_replies = 404, /* server_log_replies */ + YYSYMBOL_server_log_tag_queryreply = 405, /* server_log_tag_queryreply */ + YYSYMBOL_server_log_servfail = 406, /* server_log_servfail */ + YYSYMBOL_server_log_local_actions = 407, /* server_log_local_actions */ + YYSYMBOL_server_chroot = 408, /* server_chroot */ + YYSYMBOL_server_username = 409, /* server_username */ + YYSYMBOL_server_directory = 410, /* server_directory */ + YYSYMBOL_server_logfile = 411, /* server_logfile */ + YYSYMBOL_server_pidfile = 412, /* server_pidfile */ + YYSYMBOL_server_root_hints = 413, /* server_root_hints */ + YYSYMBOL_server_dlv_anchor_file = 414, /* server_dlv_anchor_file */ + YYSYMBOL_server_dlv_anchor = 415, /* server_dlv_anchor */ + YYSYMBOL_server_auto_trust_anchor_file = 416, /* server_auto_trust_anchor_file */ + YYSYMBOL_server_trust_anchor_file = 417, /* server_trust_anchor_file */ + YYSYMBOL_server_trusted_keys_file = 418, /* server_trusted_keys_file */ + YYSYMBOL_server_trust_anchor = 419, /* server_trust_anchor */ + YYSYMBOL_server_trust_anchor_signaling = 420, /* server_trust_anchor_signaling */ + YYSYMBOL_server_root_key_sentinel = 421, /* server_root_key_sentinel */ + YYSYMBOL_server_domain_insecure = 422, /* server_domain_insecure */ + YYSYMBOL_server_hide_identity = 423, /* server_hide_identity */ + YYSYMBOL_server_hide_version = 424, /* server_hide_version */ + YYSYMBOL_server_hide_trustanchor = 425, /* server_hide_trustanchor */ + YYSYMBOL_server_identity = 426, /* server_identity */ + YYSYMBOL_server_version = 427, /* server_version */ + YYSYMBOL_server_nsid = 428, /* server_nsid */ + YYSYMBOL_server_so_rcvbuf = 429, /* server_so_rcvbuf */ + YYSYMBOL_server_so_sndbuf = 430, /* server_so_sndbuf */ + YYSYMBOL_server_so_reuseport = 431, /* server_so_reuseport */ + YYSYMBOL_server_ip_transparent = 432, /* server_ip_transparent */ + YYSYMBOL_server_ip_freebind = 433, /* server_ip_freebind */ + YYSYMBOL_server_ip_dscp = 434, /* server_ip_dscp */ + YYSYMBOL_server_stream_wait_size = 435, /* server_stream_wait_size */ + YYSYMBOL_server_edns_buffer_size = 436, /* server_edns_buffer_size */ + YYSYMBOL_server_msg_buffer_size = 437, /* server_msg_buffer_size */ + YYSYMBOL_server_msg_cache_size = 438, /* server_msg_cache_size */ + YYSYMBOL_server_msg_cache_slabs = 439, /* server_msg_cache_slabs */ + YYSYMBOL_server_num_queries_per_thread = 440, /* server_num_queries_per_thread */ + YYSYMBOL_server_jostle_timeout = 441, /* server_jostle_timeout */ + YYSYMBOL_server_delay_close = 442, /* server_delay_close */ + YYSYMBOL_server_udp_connect = 443, /* server_udp_connect */ + YYSYMBOL_server_unblock_lan_zones = 444, /* server_unblock_lan_zones */ + YYSYMBOL_server_insecure_lan_zones = 445, /* server_insecure_lan_zones */ + YYSYMBOL_server_rrset_cache_size = 446, /* server_rrset_cache_size */ + YYSYMBOL_server_rrset_cache_slabs = 447, /* server_rrset_cache_slabs */ + YYSYMBOL_server_infra_host_ttl = 448, /* server_infra_host_ttl */ + YYSYMBOL_server_infra_lame_ttl = 449, /* server_infra_lame_ttl */ + YYSYMBOL_server_infra_cache_numhosts = 450, /* server_infra_cache_numhosts */ + YYSYMBOL_server_infra_cache_lame_size = 451, /* server_infra_cache_lame_size */ + YYSYMBOL_server_infra_cache_slabs = 452, /* server_infra_cache_slabs */ + YYSYMBOL_server_infra_cache_min_rtt = 453, /* server_infra_cache_min_rtt */ + YYSYMBOL_server_infra_keep_probing = 454, /* server_infra_keep_probing */ + YYSYMBOL_server_target_fetch_policy = 455, /* server_target_fetch_policy */ + YYSYMBOL_server_harden_short_bufsize = 456, /* server_harden_short_bufsize */ + YYSYMBOL_server_harden_large_queries = 457, /* server_harden_large_queries */ + YYSYMBOL_server_harden_glue = 458, /* server_harden_glue */ + YYSYMBOL_server_harden_dnssec_stripped = 459, /* server_harden_dnssec_stripped */ + YYSYMBOL_server_harden_below_nxdomain = 460, /* server_harden_below_nxdomain */ + YYSYMBOL_server_harden_referral_path = 461, /* server_harden_referral_path */ + YYSYMBOL_server_harden_algo_downgrade = 462, /* server_harden_algo_downgrade */ + YYSYMBOL_server_use_caps_for_id = 463, /* server_use_caps_for_id */ + YYSYMBOL_server_caps_whitelist = 464, /* server_caps_whitelist */ + YYSYMBOL_server_private_address = 465, /* server_private_address */ + YYSYMBOL_server_private_domain = 466, /* server_private_domain */ + YYSYMBOL_server_prefetch = 467, /* server_prefetch */ + YYSYMBOL_server_prefetch_key = 468, /* server_prefetch_key */ + YYSYMBOL_server_deny_any = 469, /* server_deny_any */ + YYSYMBOL_server_unwanted_reply_threshold = 470, /* server_unwanted_reply_threshold */ + YYSYMBOL_server_do_not_query_address = 471, /* server_do_not_query_address */ + YYSYMBOL_server_do_not_query_localhost = 472, /* server_do_not_query_localhost */ + YYSYMBOL_server_access_control = 473, /* server_access_control */ + YYSYMBOL_server_module_conf = 474, /* server_module_conf */ + YYSYMBOL_server_val_override_date = 475, /* server_val_override_date */ + YYSYMBOL_server_val_sig_skew_min = 476, /* server_val_sig_skew_min */ + YYSYMBOL_server_val_sig_skew_max = 477, /* server_val_sig_skew_max */ + YYSYMBOL_server_cache_max_ttl = 478, /* server_cache_max_ttl */ + YYSYMBOL_server_cache_max_negative_ttl = 479, /* server_cache_max_negative_ttl */ + YYSYMBOL_server_cache_min_ttl = 480, /* server_cache_min_ttl */ + YYSYMBOL_server_bogus_ttl = 481, /* server_bogus_ttl */ + YYSYMBOL_server_val_clean_additional = 482, /* server_val_clean_additional */ + YYSYMBOL_server_val_permissive_mode = 483, /* server_val_permissive_mode */ + YYSYMBOL_server_aggressive_nsec = 484, /* server_aggressive_nsec */ + YYSYMBOL_server_ignore_cd_flag = 485, /* server_ignore_cd_flag */ + YYSYMBOL_server_serve_expired = 486, /* server_serve_expired */ + YYSYMBOL_server_serve_expired_ttl = 487, /* server_serve_expired_ttl */ + YYSYMBOL_server_serve_expired_ttl_reset = 488, /* server_serve_expired_ttl_reset */ + YYSYMBOL_server_serve_expired_reply_ttl = 489, /* server_serve_expired_reply_ttl */ + YYSYMBOL_server_serve_expired_client_timeout = 490, /* server_serve_expired_client_timeout */ + YYSYMBOL_server_serve_original_ttl = 491, /* server_serve_original_ttl */ + YYSYMBOL_server_fake_dsa = 492, /* server_fake_dsa */ + YYSYMBOL_server_fake_sha1 = 493, /* server_fake_sha1 */ + YYSYMBOL_server_val_log_level = 494, /* server_val_log_level */ + YYSYMBOL_server_val_nsec3_keysize_iterations = 495, /* server_val_nsec3_keysize_iterations */ + YYSYMBOL_server_zonemd_permissive_mode = 496, /* server_zonemd_permissive_mode */ + YYSYMBOL_server_add_holddown = 497, /* server_add_holddown */ + YYSYMBOL_server_del_holddown = 498, /* server_del_holddown */ + YYSYMBOL_server_keep_missing = 499, /* server_keep_missing */ + YYSYMBOL_server_permit_small_holddown = 500, /* server_permit_small_holddown */ + YYSYMBOL_server_key_cache_size = 501, /* server_key_cache_size */ + YYSYMBOL_server_key_cache_slabs = 502, /* server_key_cache_slabs */ + YYSYMBOL_server_neg_cache_size = 503, /* server_neg_cache_size */ + YYSYMBOL_server_local_zone = 504, /* server_local_zone */ + YYSYMBOL_server_local_data = 505, /* server_local_data */ + YYSYMBOL_server_local_data_ptr = 506, /* server_local_data_ptr */ + YYSYMBOL_server_minimal_responses = 507, /* server_minimal_responses */ + YYSYMBOL_server_rrset_roundrobin = 508, /* server_rrset_roundrobin */ + YYSYMBOL_server_unknown_server_time_limit = 509, /* server_unknown_server_time_limit */ + YYSYMBOL_server_max_udp_size = 510, /* server_max_udp_size */ + YYSYMBOL_server_dns64_prefix = 511, /* server_dns64_prefix */ + YYSYMBOL_server_dns64_synthall = 512, /* server_dns64_synthall */ + YYSYMBOL_server_dns64_ignore_aaaa = 513, /* server_dns64_ignore_aaaa */ + YYSYMBOL_server_define_tag = 514, /* server_define_tag */ + YYSYMBOL_server_local_zone_tag = 515, /* server_local_zone_tag */ + YYSYMBOL_server_access_control_tag = 516, /* server_access_control_tag */ + YYSYMBOL_server_access_control_tag_action = 517, /* server_access_control_tag_action */ + YYSYMBOL_server_access_control_tag_data = 518, /* server_access_control_tag_data */ + YYSYMBOL_server_local_zone_override = 519, /* server_local_zone_override */ + YYSYMBOL_server_access_control_view = 520, /* server_access_control_view */ + YYSYMBOL_server_response_ip_tag = 521, /* server_response_ip_tag */ + YYSYMBOL_server_ip_ratelimit = 522, /* server_ip_ratelimit */ + YYSYMBOL_server_ratelimit = 523, /* server_ratelimit */ + YYSYMBOL_server_ip_ratelimit_size = 524, /* server_ip_ratelimit_size */ + YYSYMBOL_server_ratelimit_size = 525, /* server_ratelimit_size */ + YYSYMBOL_server_ip_ratelimit_slabs = 526, /* server_ip_ratelimit_slabs */ + YYSYMBOL_server_ratelimit_slabs = 527, /* server_ratelimit_slabs */ + YYSYMBOL_server_ratelimit_for_domain = 528, /* server_ratelimit_for_domain */ + YYSYMBOL_server_ratelimit_below_domain = 529, /* server_ratelimit_below_domain */ + YYSYMBOL_server_ip_ratelimit_factor = 530, /* server_ip_ratelimit_factor */ + YYSYMBOL_server_ratelimit_factor = 531, /* server_ratelimit_factor */ + YYSYMBOL_server_low_rtt = 532, /* server_low_rtt */ + YYSYMBOL_server_fast_server_num = 533, /* server_fast_server_num */ + YYSYMBOL_server_fast_server_permil = 534, /* server_fast_server_permil */ + YYSYMBOL_server_qname_minimisation = 535, /* server_qname_minimisation */ + YYSYMBOL_server_qname_minimisation_strict = 536, /* server_qname_minimisation_strict */ + YYSYMBOL_server_pad_responses = 537, /* server_pad_responses */ + YYSYMBOL_server_pad_responses_block_size = 538, /* server_pad_responses_block_size */ + YYSYMBOL_server_pad_queries = 539, /* server_pad_queries */ + YYSYMBOL_server_pad_queries_block_size = 540, /* server_pad_queries_block_size */ + YYSYMBOL_server_ipsecmod_enabled = 541, /* server_ipsecmod_enabled */ + YYSYMBOL_server_ipsecmod_ignore_bogus = 542, /* server_ipsecmod_ignore_bogus */ + YYSYMBOL_server_ipsecmod_hook = 543, /* server_ipsecmod_hook */ + YYSYMBOL_server_ipsecmod_max_ttl = 544, /* server_ipsecmod_max_ttl */ + YYSYMBOL_server_ipsecmod_whitelist = 545, /* server_ipsecmod_whitelist */ + YYSYMBOL_server_ipsecmod_strict = 546, /* server_ipsecmod_strict */ + YYSYMBOL_server_edns_client_string = 547, /* server_edns_client_string */ + YYSYMBOL_server_edns_client_string_opcode = 548, /* server_edns_client_string_opcode */ + YYSYMBOL_stub_name = 549, /* stub_name */ + YYSYMBOL_stub_host = 550, /* stub_host */ + YYSYMBOL_stub_addr = 551, /* stub_addr */ + YYSYMBOL_stub_first = 552, /* stub_first */ + YYSYMBOL_stub_no_cache = 553, /* stub_no_cache */ + YYSYMBOL_stub_ssl_upstream = 554, /* stub_ssl_upstream */ + YYSYMBOL_stub_prime = 555, /* stub_prime */ + YYSYMBOL_forward_name = 556, /* forward_name */ + YYSYMBOL_forward_host = 557, /* forward_host */ + YYSYMBOL_forward_addr = 558, /* forward_addr */ + YYSYMBOL_forward_first = 559, /* forward_first */ + YYSYMBOL_forward_no_cache = 560, /* forward_no_cache */ + YYSYMBOL_forward_ssl_upstream = 561, /* forward_ssl_upstream */ + YYSYMBOL_auth_name = 562, /* auth_name */ + YYSYMBOL_auth_zonefile = 563, /* auth_zonefile */ + YYSYMBOL_auth_master = 564, /* auth_master */ + YYSYMBOL_auth_url = 565, /* auth_url */ + YYSYMBOL_auth_allow_notify = 566, /* auth_allow_notify */ + YYSYMBOL_auth_zonemd_reject_absence = 567, /* auth_zonemd_reject_absence */ + YYSYMBOL_auth_for_downstream = 568, /* auth_for_downstream */ + YYSYMBOL_auth_for_upstream = 569, /* auth_for_upstream */ + YYSYMBOL_auth_fallback_enabled = 570, /* auth_fallback_enabled */ + YYSYMBOL_view_name = 571, /* view_name */ + YYSYMBOL_view_local_zone = 572, /* view_local_zone */ + YYSYMBOL_view_response_ip = 573, /* view_response_ip */ + YYSYMBOL_view_response_ip_data = 574, /* view_response_ip_data */ + YYSYMBOL_view_local_data = 575, /* view_local_data */ + YYSYMBOL_view_local_data_ptr = 576, /* view_local_data_ptr */ + YYSYMBOL_view_first = 577, /* view_first */ + YYSYMBOL_rcstart = 578, /* rcstart */ + YYSYMBOL_contents_rc = 579, /* contents_rc */ + YYSYMBOL_content_rc = 580, /* content_rc */ + YYSYMBOL_rc_control_enable = 581, /* rc_control_enable */ + YYSYMBOL_rc_control_port = 582, /* rc_control_port */ + YYSYMBOL_rc_control_interface = 583, /* rc_control_interface */ + YYSYMBOL_rc_control_use_cert = 584, /* rc_control_use_cert */ + YYSYMBOL_rc_server_key_file = 585, /* rc_server_key_file */ + YYSYMBOL_rc_server_cert_file = 586, /* rc_server_cert_file */ + YYSYMBOL_rc_control_key_file = 587, /* rc_control_key_file */ + YYSYMBOL_rc_control_cert_file = 588, /* rc_control_cert_file */ + YYSYMBOL_dtstart = 589, /* dtstart */ + YYSYMBOL_contents_dt = 590, /* contents_dt */ + YYSYMBOL_content_dt = 591, /* content_dt */ + YYSYMBOL_dt_dnstap_enable = 592, /* dt_dnstap_enable */ + YYSYMBOL_dt_dnstap_bidirectional = 593, /* dt_dnstap_bidirectional */ + YYSYMBOL_dt_dnstap_socket_path = 594, /* dt_dnstap_socket_path */ + YYSYMBOL_dt_dnstap_ip = 595, /* dt_dnstap_ip */ + YYSYMBOL_dt_dnstap_tls = 596, /* dt_dnstap_tls */ + YYSYMBOL_dt_dnstap_tls_server_name = 597, /* dt_dnstap_tls_server_name */ + YYSYMBOL_dt_dnstap_tls_cert_bundle = 598, /* dt_dnstap_tls_cert_bundle */ + YYSYMBOL_dt_dnstap_tls_client_key_file = 599, /* dt_dnstap_tls_client_key_file */ + YYSYMBOL_dt_dnstap_tls_client_cert_file = 600, /* dt_dnstap_tls_client_cert_file */ + YYSYMBOL_dt_dnstap_send_identity = 601, /* dt_dnstap_send_identity */ + YYSYMBOL_dt_dnstap_send_version = 602, /* dt_dnstap_send_version */ + YYSYMBOL_dt_dnstap_identity = 603, /* dt_dnstap_identity */ + YYSYMBOL_dt_dnstap_version = 604, /* dt_dnstap_version */ + YYSYMBOL_dt_dnstap_log_resolver_query_messages = 605, /* dt_dnstap_log_resolver_query_messages */ + YYSYMBOL_dt_dnstap_log_resolver_response_messages = 606, /* dt_dnstap_log_resolver_response_messages */ + YYSYMBOL_dt_dnstap_log_client_query_messages = 607, /* dt_dnstap_log_client_query_messages */ + YYSYMBOL_dt_dnstap_log_client_response_messages = 608, /* dt_dnstap_log_client_response_messages */ + YYSYMBOL_dt_dnstap_log_forwarder_query_messages = 609, /* dt_dnstap_log_forwarder_query_messages */ + YYSYMBOL_dt_dnstap_log_forwarder_response_messages = 610, /* dt_dnstap_log_forwarder_response_messages */ + YYSYMBOL_pythonstart = 611, /* pythonstart */ + YYSYMBOL_contents_py = 612, /* contents_py */ + YYSYMBOL_content_py = 613, /* content_py */ + YYSYMBOL_py_script = 614, /* py_script */ + YYSYMBOL_dynlibstart = 615, /* dynlibstart */ + YYSYMBOL_contents_dl = 616, /* contents_dl */ + YYSYMBOL_content_dl = 617, /* content_dl */ + YYSYMBOL_dl_file = 618, /* dl_file */ + YYSYMBOL_server_disable_dnssec_lame_check = 619, /* server_disable_dnssec_lame_check */ + YYSYMBOL_server_log_identity = 620, /* server_log_identity */ + YYSYMBOL_server_response_ip = 621, /* server_response_ip */ + YYSYMBOL_server_response_ip_data = 622, /* server_response_ip_data */ + YYSYMBOL_dnscstart = 623, /* dnscstart */ + YYSYMBOL_contents_dnsc = 624, /* contents_dnsc */ + YYSYMBOL_content_dnsc = 625, /* content_dnsc */ + YYSYMBOL_dnsc_dnscrypt_enable = 626, /* dnsc_dnscrypt_enable */ + YYSYMBOL_dnsc_dnscrypt_port = 627, /* dnsc_dnscrypt_port */ + YYSYMBOL_dnsc_dnscrypt_provider = 628, /* dnsc_dnscrypt_provider */ + YYSYMBOL_dnsc_dnscrypt_provider_cert = 629, /* dnsc_dnscrypt_provider_cert */ + YYSYMBOL_dnsc_dnscrypt_provider_cert_rotated = 630, /* dnsc_dnscrypt_provider_cert_rotated */ + YYSYMBOL_dnsc_dnscrypt_secret_key = 631, /* dnsc_dnscrypt_secret_key */ + YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_size = 632, /* dnsc_dnscrypt_shared_secret_cache_size */ + YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_slabs = 633, /* dnsc_dnscrypt_shared_secret_cache_slabs */ + YYSYMBOL_dnsc_dnscrypt_nonce_cache_size = 634, /* dnsc_dnscrypt_nonce_cache_size */ + YYSYMBOL_dnsc_dnscrypt_nonce_cache_slabs = 635, /* dnsc_dnscrypt_nonce_cache_slabs */ + YYSYMBOL_cachedbstart = 636, /* cachedbstart */ + YYSYMBOL_contents_cachedb = 637, /* contents_cachedb */ + YYSYMBOL_content_cachedb = 638, /* content_cachedb */ + YYSYMBOL_cachedb_backend_name = 639, /* cachedb_backend_name */ + YYSYMBOL_cachedb_secret_seed = 640, /* cachedb_secret_seed */ + YYSYMBOL_redis_server_host = 641, /* redis_server_host */ + YYSYMBOL_redis_server_port = 642, /* redis_server_port */ + YYSYMBOL_redis_timeout = 643, /* redis_timeout */ + YYSYMBOL_redis_expire_records = 644, /* redis_expire_records */ + YYSYMBOL_server_tcp_connection_limit = 645, /* server_tcp_connection_limit */ + YYSYMBOL_ipsetstart = 646, /* ipsetstart */ + YYSYMBOL_contents_ipset = 647, /* contents_ipset */ + YYSYMBOL_content_ipset = 648, /* content_ipset */ + YYSYMBOL_ipset_name_v4 = 649, /* ipset_name_v4 */ + YYSYMBOL_ipset_name_v6 = 650 /* ipset_name_v6 */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; @@ -1480,6 +818,18 @@ typedef int_least16_t yytype_int16; typedef short yytype_int16; #endif +/* Work around bug in HP-UX 11.23, which defines these macros + incorrectly for preprocessor constants. This workaround can likely + be removed in 2023, as HPE has promised support for HP-UX 11.23 + (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of + . */ +#ifdef __hpux +# undef UINT_LEAST8_MAX +# undef UINT_LEAST16_MAX +# define UINT_LEAST8_MAX 255 +# define UINT_LEAST16_MAX 65535 +#endif + #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ typedef __UINT_LEAST8_TYPE__ yytype_uint8; #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ @@ -1577,9 +927,9 @@ typedef int yy_state_fast_t; /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ -# define YYUSE(E) ((void) (E)) +# define YY_USE(E) ((void) (E)) #else -# define YYUSE(E) /* empty */ +# define YY_USE(E) /* empty */ #endif #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ @@ -1746,18 +1096,19 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 657 +#define YYLAST 661 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 311 +#define YYNTOKENS 313 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 336 +#define YYNNTS 338 /* YYNRULES -- Number of rules. */ -#define YYNRULES 648 +#define YYNRULES 652 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 963 +#define YYNSTATES 969 -#define YYMAXUTOK 565 +/* YYMAXUTOK -- Last valid token kind. */ +#define YYMAXUTOK 567 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM @@ -1827,7 +1178,7 @@ static const yytype_int16 yytranslate[] = 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 + 305, 306, 307, 308, 309, 310, 311, 312 }; #if YYDEBUG @@ -1857,48 +1208,49 @@ static const yytype_int16 yyrline[] = 289, 289, 289, 290, 290, 291, 292, 292, 293, 293, 294, 294, 295, 295, 296, 296, 296, 297, 297, 297, 298, 298, 298, 299, 299, 300, 300, 301, 301, 302, - 302, 303, 303, 304, 306, 318, 319, 320, 320, 320, - 320, 320, 321, 321, 323, 335, 336, 337, 337, 337, - 337, 338, 338, 340, 354, 355, 356, 356, 356, 356, - 357, 357, 357, 359, 377, 378, 379, 379, 379, 379, - 380, 380, 380, 381, 381, 384, 403, 420, 428, 438, - 446, 463, 464, 465, 465, 465, 465, 465, 466, 466, - 466, 467, 467, 469, 478, 487, 498, 507, 516, 525, - 536, 545, 557, 571, 586, 597, 614, 631, 648, 665, - 680, 695, 708, 723, 732, 741, 750, 759, 768, 777, - 786, 795, 804, 813, 822, 831, 840, 849, 862, 871, - 884, 893, 902, 911, 918, 925, 934, 941, 950, 958, - 965, 972, 980, 989, 997, 1013, 1021, 1029, 1037, 1045, - 1053, 1062, 1071, 1085, 1094, 1103, 1112, 1121, 1130, 1139, - 1146, 1153, 1179, 1187, 1194, 1201, 1208, 1215, 1223, 1231, - 1239, 1246, 1257, 1268, 1275, 1284, 1293, 1302, 1309, 1316, - 1332, 1340, 1348, 1358, 1368, 1378, 1392, 1400, 1413, 1424, - 1432, 1445, 1454, 1463, 1472, 1481, 1491, 1501, 1509, 1522, - 1531, 1539, 1548, 1556, 1569, 1578, 1588, 1595, 1605, 1615, - 1625, 1635, 1645, 1655, 1665, 1675, 1682, 1689, 1696, 1705, - 1714, 1723, 1732, 1739, 1749, 1769, 1776, 1794, 1807, 1820, - 1829, 1838, 1847, 1856, 1866, 1876, 1887, 1896, 1905, 1914, - 1923, 1932, 1941, 1950, 1963, 1976, 1985, 1992, 2001, 2010, - 2019, 2028, 2037, 2045, 2058, 2066, 2111, 2118, 2133, 2143, - 2153, 2160, 2167, 2174, 2183, 2191, 2205, 2226, 2247, 2259, - 2271, 2283, 2292, 2313, 2323, 2332, 2340, 2348, 2361, 2374, - 2389, 2404, 2413, 2422, 2428, 2437, 2446, 2456, 2466, 2476, - 2485, 2495, 2504, 2517, 2530, 2542, 2556, 2568, 2582, 2591, - 2603, 2613, 2620, 2627, 2636, 2645, 2655, 2665, 2675, 2682, - 2689, 2698, 2707, 2717, 2727, 2734, 2741, 2748, 2756, 2766, - 2776, 2786, 2796, 2806, 2845, 2855, 2863, 2871, 2886, 2895, - 2900, 2901, 2902, 2902, 2902, 2903, 2903, 2903, 2904, 2904, - 2906, 2916, 2925, 2932, 2939, 2946, 2953, 2960, 2967, 2972, - 2973, 2974, 2974, 2974, 2975, 2975, 2975, 2976, 2977, 2977, - 2978, 2978, 2979, 2979, 2980, 2981, 2982, 2983, 2984, 2985, - 2987, 2996, 3006, 3013, 3020, 3029, 3036, 3043, 3050, 3057, - 3066, 3075, 3082, 3089, 3099, 3109, 3119, 3129, 3139, 3149, - 3154, 3155, 3156, 3158, 3164, 3169, 3170, 3171, 3173, 3179, - 3189, 3196, 3205, 3213, 3218, 3219, 3221, 3221, 3221, 3222, - 3222, 3223, 3224, 3225, 3226, 3227, 3229, 3239, 3248, 3255, - 3264, 3271, 3280, 3288, 3301, 3309, 3322, 3327, 3328, 3329, - 3329, 3330, 3330, 3330, 3331, 3333, 3345, 3357, 3369, 3384, - 3397, 3410, 3421, 3426, 3427, 3428, 3428, 3430, 3445 + 302, 303, 303, 304, 304, 305, 308, 320, 321, 322, + 322, 322, 322, 322, 323, 323, 325, 337, 338, 339, + 339, 339, 339, 340, 340, 342, 356, 357, 358, 358, + 358, 358, 359, 359, 359, 361, 379, 380, 381, 381, + 381, 381, 382, 382, 382, 383, 383, 386, 405, 422, + 430, 440, 448, 465, 466, 467, 467, 467, 467, 467, + 468, 468, 468, 469, 469, 471, 480, 489, 500, 509, + 518, 527, 538, 547, 559, 573, 588, 599, 616, 633, + 650, 667, 682, 697, 710, 725, 734, 743, 752, 761, + 770, 779, 788, 797, 806, 815, 824, 833, 842, 851, + 864, 875, 886, 895, 908, 917, 926, 935, 942, 949, + 958, 965, 974, 982, 989, 996, 1004, 1013, 1021, 1037, + 1045, 1053, 1061, 1069, 1077, 1086, 1095, 1109, 1118, 1127, + 1136, 1145, 1154, 1163, 1170, 1177, 1203, 1211, 1218, 1225, + 1232, 1239, 1247, 1255, 1263, 1270, 1281, 1292, 1299, 1308, + 1317, 1326, 1333, 1340, 1356, 1364, 1372, 1382, 1392, 1402, + 1416, 1424, 1437, 1448, 1456, 1469, 1478, 1487, 1496, 1505, + 1515, 1525, 1533, 1546, 1555, 1563, 1572, 1580, 1593, 1602, + 1612, 1619, 1629, 1639, 1649, 1659, 1669, 1679, 1689, 1699, + 1706, 1713, 1720, 1729, 1738, 1747, 1756, 1763, 1773, 1793, + 1800, 1818, 1831, 1844, 1853, 1862, 1871, 1880, 1890, 1900, + 1911, 1920, 1929, 1938, 1947, 1956, 1965, 1974, 1987, 2000, + 2009, 2016, 2025, 2034, 2043, 2052, 2061, 2069, 2082, 2090, + 2135, 2142, 2157, 2167, 2177, 2184, 2191, 2198, 2207, 2215, + 2229, 2250, 2271, 2283, 2295, 2307, 2316, 2337, 2347, 2356, + 2364, 2372, 2385, 2398, 2413, 2428, 2437, 2446, 2452, 2461, + 2470, 2480, 2490, 2500, 2509, 2519, 2528, 2541, 2554, 2566, + 2580, 2592, 2606, 2615, 2627, 2637, 2644, 2651, 2660, 2669, + 2679, 2689, 2699, 2706, 2713, 2722, 2731, 2741, 2751, 2758, + 2765, 2772, 2780, 2790, 2800, 2810, 2820, 2830, 2869, 2879, + 2887, 2895, 2910, 2919, 2924, 2925, 2926, 2926, 2926, 2927, + 2927, 2927, 2928, 2928, 2930, 2940, 2949, 2956, 2963, 2970, + 2977, 2984, 2991, 2996, 2997, 2998, 2998, 2998, 2999, 2999, + 2999, 3000, 3001, 3001, 3002, 3002, 3003, 3003, 3004, 3005, + 3006, 3007, 3008, 3009, 3011, 3020, 3030, 3037, 3044, 3053, + 3060, 3067, 3074, 3081, 3090, 3099, 3106, 3113, 3123, 3133, + 3143, 3153, 3163, 3173, 3178, 3179, 3180, 3182, 3188, 3193, + 3194, 3195, 3197, 3203, 3213, 3220, 3229, 3237, 3242, 3243, + 3245, 3245, 3245, 3246, 3246, 3247, 3248, 3249, 3250, 3251, + 3253, 3263, 3272, 3279, 3288, 3295, 3304, 3312, 3325, 3333, + 3346, 3351, 3352, 3353, 3353, 3354, 3354, 3354, 3355, 3357, + 3369, 3381, 3393, 3408, 3421, 3434, 3445, 3450, 3451, 3452, + 3452, 3454, 3469 }; #endif @@ -1947,32 +1299,34 @@ static const char *const yytname[] = "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_HTTPS_PORT", - "VAR_HTTP_ENDPOINT", "VAR_HTTP_MAX_STREAMS", - "VAR_HTTP_QUERY_BUFFER_SIZE", "VAR_HTTP_RESPONSE_BUFFER_SIZE", - "VAR_HTTP_NODELAY", "VAR_HTTP_NOTLS_DOWNSTREAM", "VAR_STUB_FIRST", - "VAR_MINIMAL_RESPONSES", "VAR_RRSET_ROUNDROBIN", "VAR_MAX_UDP_SIZE", - "VAR_DELAY_CLOSE", "VAR_UDP_CONNECT", "VAR_UNBLOCK_LAN_ZONES", - "VAR_INSECURE_LAN_ZONES", "VAR_INFRA_CACHE_MIN_RTT", - "VAR_INFRA_KEEP_PROBING", "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_BIDIRECTIONAL", "VAR_DNSTAP_IDENTITY", "VAR_DNSTAP_VERSION", + "VAR_CONTROL_USE_CERT", "VAR_TCP_REUSE_TIMEOUT", + "VAR_MAX_REUSE_TCP_QUERIES", "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_HTTPS_PORT", "VAR_HTTP_ENDPOINT", + "VAR_HTTP_MAX_STREAMS", "VAR_HTTP_QUERY_BUFFER_SIZE", + "VAR_HTTP_RESPONSE_BUFFER_SIZE", "VAR_HTTP_NODELAY", + "VAR_HTTP_NOTLS_DOWNSTREAM", "VAR_STUB_FIRST", "VAR_MINIMAL_RESPONSES", + "VAR_RRSET_ROUNDROBIN", "VAR_MAX_UDP_SIZE", "VAR_DELAY_CLOSE", + "VAR_UDP_CONNECT", "VAR_UNBLOCK_LAN_ZONES", "VAR_INSECURE_LAN_ZONES", + "VAR_INFRA_CACHE_MIN_RTT", "VAR_INFRA_KEEP_PROBING", "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_BIDIRECTIONAL", + "VAR_DNSTAP_IDENTITY", "VAR_DNSTAP_VERSION", "VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES", "VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES", "VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES", @@ -2050,7 +1404,8 @@ static const char *const yytname[] = "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_idle_timeout", "server_max_reuse_tcp_queries", + "server_tcp_reuse_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", @@ -2208,11 +1563,11 @@ static const yytype_int16 yytoknum[] = 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, - 565 + 565, 566, 567 }; #endif -#define YYPACT_NINF (-299) +#define YYPACT_NINF (-298) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) @@ -2226,103 +1581,103 @@ static const yytype_int16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - -299, 0, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, 292, -39, -35, -43, -44, -28, -67, -93, - -108, -298, -221, -222, -292, 3, 4, 5, 6, 37, - 38, 39, 40, 41, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 54, 55, 56, 57, 58, 79, - 80, 81, 82, 83, 84, 85, 87, 88, 89, 91, - 92, 94, 96, 97, 98, 99, 101, 103, 104, 105, + -298, 0, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, 294, -43, -38, -42, -44, -28, -29, -147, + -109, -297, -190, -188, -289, 3, 4, 27, 28, 31, + 32, 33, 34, 35, 37, 38, 39, 40, 41, 53, + 54, 55, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 87, 89, 90, 91, + 93, 95, 96, 97, 99, 100, 101, 102, 103, 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, 132, 133, 134, 135, 136, 137, + 126, 127, 128, 129, 130, 131, 132, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 153, 154, 155, 156, 157, 158, + 148, 149, 150, 151, 152, 153, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 169, 170, 171, 172, 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, 212, 213, 214, 216, 222, 223, 224, 225, 226, - 228, 229, 231, 232, 237, 238, 240, 241, 242, 244, - 245, 246, 247, 248, 249, 250, 252, 253, 254, 255, - 257, 258, 259, 266, 267, 268, 269, 270, 271, 272, + 210, 211, 212, 214, 215, 216, 218, 224, 225, 226, + 227, 228, 230, 231, 233, 239, 240, 241, 242, 243, + 244, 246, 247, 248, 249, 250, 251, 252, 254, 255, + 256, 257, 259, 260, 261, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 285, 286, 287, 289, 290, 291, 293, 327, 328, - 329, 330, 334, 335, 336, 378, 379, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - 380, 381, 382, 383, 384, 385, 386, -299, -299, -299, - -299, -299, -299, -299, -299, 390, 394, 395, 420, 421, - 422, -299, -299, -299, -299, -299, -299, -299, 431, 444, - 445, 446, 447, 448, 449, -299, -299, -299, -299, -299, - -299, -299, -299, 450, 451, 452, 453, 454, 455, 456, - 457, 458, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, 459, 460, 461, 462, 463, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, 503, 505, - 522, 523, 524, 525, 526, 527, -299, -299, -299, -299, - -299, -299, -299, -299, -299, 528, 529, 530, 531, 532, - 543, 544, 545, 546, 547, 548, 549, 551, 552, 553, - 554, 555, 556, 557, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, 560, -299, -299, 563, -299, -299, - 566, 567, 576, 577, 578, 580, 581, 582, 583, 584, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, 585, 586, 587, 592, 593, 594, -299, -299, -299, - -299, -299, -299, -299, 595, 596, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, 597, - 598, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, 599, 600, 601, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, 602, 603, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, 604, - 605, 606, 607, 608, 609, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, 610, -299, -299, - -299, -299, -299, -299, -299, -299, -299, 611, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, 612, -299, -299, 613, 614, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, 615, 616, 617, -299, -299, -299, -299, -299, -299, - -299, -299, -299 + 283, 284, 285, 287, 288, 289, 291, 292, 293, 295, + 329, 330, 331, 332, 336, 337, 338, 380, 381, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, 382, 383, 384, 385, 386, 387, + 388, -298, -298, -298, -298, -298, -298, -298, -298, 394, + 398, 399, 424, 425, 426, -298, -298, -298, -298, -298, + -298, -298, 435, 448, 449, 450, 451, 452, 453, -298, + -298, -298, -298, -298, -298, -298, -298, 454, 455, 456, + 457, 458, 459, 460, 461, 462, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, 463, 464, 465, 466, + 467, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, 507, 509, 526, 527, 528, 529, 530, 531, + -298, -298, -298, -298, -298, -298, -298, -298, -298, 532, + 533, 534, 535, 536, 547, 548, 549, 550, 551, 552, + 553, 555, 556, 557, 558, 559, 560, 561, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, 564, -298, + -298, 567, -298, -298, 570, 571, 580, 581, 582, 584, + 585, 586, 587, 588, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, 589, 590, 591, 596, 597, + 598, -298, -298, -298, -298, -298, -298, -298, 599, 600, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, 601, 602, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, 603, 604, 605, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, 606, 607, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, 608, 609, 610, 611, 612, + 613, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, 614, -298, -298, -298, -298, -298, -298, + -298, -298, -298, 615, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, 616, -298, -298, 617, 618, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, 619, 620, 621, + -298, -298, -298, -298, -298, -298, -298, -298, -298 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -2330,10 +1685,10 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_int16 yydefact[] = { - 2, 0, 1, 18, 19, 234, 244, 529, 589, 548, - 253, 603, 626, 263, 642, 280, 594, 3, 17, 21, - 236, 246, 255, 265, 282, 531, 550, 591, 596, 605, - 628, 644, 4, 5, 6, 10, 14, 15, 8, 9, + 2, 0, 1, 18, 19, 236, 246, 533, 593, 552, + 255, 607, 630, 265, 646, 282, 598, 3, 17, 21, + 238, 248, 257, 267, 284, 535, 554, 595, 600, 609, + 632, 648, 4, 5, 6, 10, 14, 15, 8, 9, 7, 16, 11, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2355,156 +1710,156 @@ static const yytype_int16 yydefact[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 20, 22, 23, - 86, 89, 98, 200, 201, 24, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 37, 77, 25, 90, - 91, 48, 70, 85, 26, 27, 30, 31, 28, 29, - 32, 33, 34, 35, 36, 121, 212, 122, 124, 125, - 126, 214, 219, 215, 226, 227, 228, 229, 127, 128, - 129, 130, 131, 132, 133, 196, 87, 76, 102, 119, - 120, 224, 221, 123, 38, 39, 40, 41, 42, 78, - 92, 93, 108, 64, 74, 65, 204, 205, 103, 58, - 59, 203, 60, 61, 232, 112, 116, 137, 147, 174, - 150, 225, 113, 71, 43, 44, 45, 100, 138, 139, - 140, 141, 46, 47, 49, 50, 52, 53, 51, 145, - 151, 54, 55, 56, 62, 81, 117, 95, 146, 88, - 170, 96, 97, 114, 115, 222, 101, 57, 79, 82, - 63, 66, 104, 105, 80, 171, 106, 67, 68, 69, - 213, 118, 188, 189, 190, 191, 192, 193, 194, 202, - 107, 75, 233, 109, 110, 111, 172, 72, 73, 94, - 83, 84, 99, 134, 135, 223, 136, 142, 143, 144, - 175, 176, 178, 180, 181, 179, 182, 197, 148, 149, - 154, 155, 152, 153, 156, 157, 159, 158, 216, 218, - 217, 173, 183, 184, 185, 186, 187, 206, 208, 207, - 209, 210, 211, 230, 231, 177, 195, 198, 199, 220, - 0, 0, 0, 0, 0, 0, 0, 235, 237, 238, - 239, 241, 242, 243, 240, 0, 0, 0, 0, 0, - 0, 245, 247, 248, 249, 250, 251, 252, 0, 0, - 0, 0, 0, 0, 0, 254, 256, 257, 260, 261, - 258, 262, 259, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 264, 266, 267, 268, 269, 273, 274, 270, - 271, 272, 0, 0, 0, 0, 0, 285, 289, 290, - 291, 292, 281, 283, 284, 286, 287, 288, 0, 0, - 0, 0, 0, 0, 0, 0, 530, 532, 534, 533, - 539, 535, 536, 537, 538, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, + 22, 23, 86, 89, 98, 200, 201, 24, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 37, 77, + 25, 90, 91, 48, 70, 85, 26, 27, 30, 31, + 28, 29, 32, 33, 34, 234, 235, 35, 36, 121, + 212, 122, 124, 125, 126, 214, 219, 215, 226, 227, + 228, 229, 127, 128, 129, 130, 131, 132, 133, 196, + 87, 76, 102, 119, 120, 224, 221, 123, 38, 39, + 40, 41, 42, 78, 92, 93, 108, 64, 74, 65, + 204, 205, 103, 58, 59, 203, 60, 61, 232, 112, + 116, 137, 147, 174, 150, 225, 113, 71, 43, 44, + 45, 100, 138, 139, 140, 141, 46, 47, 49, 50, + 52, 53, 51, 145, 151, 54, 55, 56, 62, 81, + 117, 95, 146, 88, 170, 96, 97, 114, 115, 222, + 101, 57, 79, 82, 63, 66, 104, 105, 80, 171, + 106, 67, 68, 69, 213, 118, 188, 189, 190, 191, + 192, 193, 194, 202, 107, 75, 233, 109, 110, 111, + 172, 72, 73, 94, 83, 84, 99, 134, 135, 223, + 136, 142, 143, 144, 175, 176, 178, 180, 181, 179, + 182, 197, 148, 149, 154, 155, 152, 153, 156, 157, + 159, 158, 216, 218, 217, 173, 183, 184, 185, 186, + 187, 206, 208, 207, 209, 210, 211, 230, 231, 177, + 195, 198, 199, 220, 0, 0, 0, 0, 0, 0, + 0, 237, 239, 240, 241, 243, 244, 245, 242, 0, + 0, 0, 0, 0, 0, 247, 249, 250, 251, 252, + 253, 254, 0, 0, 0, 0, 0, 0, 0, 256, + 258, 259, 262, 263, 260, 264, 261, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 266, 268, 269, 270, + 271, 275, 276, 272, 273, 274, 0, 0, 0, 0, + 0, 287, 291, 292, 293, 294, 283, 285, 286, 288, + 289, 290, 0, 0, 0, 0, 0, 0, 0, 0, + 534, 536, 538, 537, 543, 539, 540, 541, 542, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 549, 551, 553, 552, 554, 555, - 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 0, 590, 592, 0, 595, 597, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 604, 606, 607, 608, 610, 611, 609, 612, 613, 614, - 615, 0, 0, 0, 0, 0, 0, 627, 629, 630, - 631, 632, 633, 634, 0, 0, 643, 645, 646, 294, - 293, 300, 313, 311, 323, 319, 320, 324, 321, 322, - 325, 326, 327, 328, 329, 359, 360, 361, 362, 363, - 389, 390, 391, 397, 398, 316, 399, 400, 403, 401, - 402, 406, 407, 408, 422, 374, 375, 377, 378, 409, - 425, 368, 370, 426, 432, 433, 434, 317, 388, 452, - 453, 369, 446, 352, 312, 364, 423, 429, 410, 0, - 0, 456, 318, 295, 351, 414, 296, 314, 315, 365, - 366, 454, 412, 416, 417, 297, 457, 392, 421, 353, - 373, 427, 428, 431, 445, 367, 450, 448, 449, 380, - 387, 418, 419, 381, 382, 411, 436, 354, 355, 358, - 330, 332, 333, 334, 335, 336, 343, 344, 345, 346, - 347, 348, 349, 458, 459, 461, 393, 394, 395, 396, - 404, 405, 462, 463, 464, 0, 0, 0, 413, 383, - 385, 599, 473, 477, 475, 474, 478, 476, 0, 0, - 481, 482, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 415, 430, 451, 486, 487, 384, 465, 0, - 0, 0, 0, 0, 0, 437, 438, 439, 440, 441, - 442, 443, 444, 600, 376, 371, 435, 350, 298, 299, - 372, 488, 489, 490, 491, 492, 494, 493, 495, 496, - 497, 331, 338, 483, 485, 484, 337, 0, 357, 420, - 460, 356, 386, 339, 340, 342, 341, 0, 499, 379, - 447, 500, 501, 502, 506, 505, 503, 504, 507, 508, - 509, 510, 512, 511, 522, 0, 526, 527, 0, 0, - 528, 513, 520, 514, 515, 516, 519, 521, 517, 518, - 275, 276, 277, 278, 279, 540, 542, 541, 544, 545, - 546, 547, 543, 570, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 571, 581, 582, 583, 584, 585, 586, - 587, 588, 593, 598, 616, 617, 618, 621, 619, 620, - 622, 623, 624, 625, 635, 636, 637, 638, 639, 640, - 647, 648, 424, 455, 472, 601, 602, 479, 480, 466, - 467, 0, 0, 0, 471, 641, 498, 523, 524, 525, - 470, 468, 469 + 0, 0, 0, 0, 0, 0, 0, 0, 553, 555, + 557, 556, 558, 559, 560, 561, 562, 563, 564, 565, + 566, 567, 568, 569, 570, 571, 572, 573, 0, 594, + 596, 0, 599, 601, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 608, 610, 611, 612, 614, 615, + 613, 616, 617, 618, 619, 0, 0, 0, 0, 0, + 0, 631, 633, 634, 635, 636, 637, 638, 0, 0, + 647, 649, 650, 296, 295, 302, 315, 313, 325, 321, + 322, 326, 323, 324, 327, 328, 329, 332, 333, 363, + 364, 365, 366, 367, 393, 394, 395, 401, 402, 318, + 403, 404, 407, 405, 406, 410, 411, 412, 426, 378, + 379, 381, 382, 413, 429, 372, 374, 430, 436, 437, + 438, 319, 392, 456, 457, 373, 450, 356, 314, 368, + 427, 433, 414, 0, 0, 460, 320, 297, 355, 418, + 298, 316, 317, 369, 370, 458, 416, 420, 421, 331, + 330, 299, 461, 396, 425, 357, 377, 431, 432, 435, + 449, 371, 454, 452, 453, 384, 391, 422, 423, 385, + 386, 415, 440, 358, 359, 362, 334, 336, 337, 338, + 339, 340, 347, 348, 349, 350, 351, 352, 353, 462, + 463, 465, 397, 398, 399, 400, 408, 409, 466, 467, + 468, 0, 0, 0, 417, 387, 389, 603, 477, 481, + 479, 478, 482, 480, 0, 0, 485, 486, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 419, 434, + 455, 490, 491, 388, 469, 0, 0, 0, 0, 0, + 0, 441, 442, 443, 444, 445, 446, 447, 448, 604, + 380, 375, 439, 354, 300, 301, 376, 492, 493, 494, + 495, 496, 498, 497, 499, 500, 501, 335, 342, 487, + 489, 488, 341, 0, 361, 424, 464, 360, 390, 343, + 344, 346, 345, 0, 503, 383, 451, 504, 505, 506, + 510, 509, 507, 508, 511, 512, 513, 514, 516, 515, + 526, 0, 530, 531, 0, 0, 532, 517, 524, 518, + 519, 520, 523, 525, 521, 522, 277, 278, 279, 280, + 281, 544, 546, 545, 548, 549, 550, 551, 547, 574, + 576, 577, 578, 579, 580, 581, 582, 583, 584, 575, + 585, 586, 587, 588, 589, 590, 591, 592, 597, 602, + 620, 621, 622, 625, 623, 624, 626, 627, 628, 629, + 639, 640, 641, 642, 643, 644, 651, 652, 428, 459, + 476, 605, 606, 483, 484, 470, 471, 0, 0, 0, + 475, 645, 502, 527, 528, 529, 474, 472, 473 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, 265, 591, 618, - 619, 620, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299 + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, 267, + 595, 622, 623, 624, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, + -298, -298, -298, -298, -298, -298, -298, -298 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 17, 18, 19, 32, 257, 20, 33, 477, - 21, 34, 491, 22, 35, 505, 23, 36, 522, 537, - 538, 539, 540, 541, 24, 37, 542, 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, 478, 479, 480, 481, 482, 483, - 484, 492, 493, 494, 495, 496, 497, 523, 524, 525, - 526, 527, 528, 529, 530, 531, 506, 507, 508, 509, - 510, 511, 512, 25, 38, 556, 557, 558, 559, 560, - 561, 562, 563, 564, 26, 39, 584, 585, 586, 587, - 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, - 598, 599, 600, 601, 602, 603, 27, 40, 605, 606, - 28, 41, 608, 609, 465, 466, 467, 468, 29, 42, - 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, - 630, 30, 43, 637, 638, 639, 640, 641, 642, 643, - 469, 31, 44, 646, 647, 648 + 0, 1, 17, 18, 19, 32, 259, 20, 33, 481, + 21, 34, 495, 22, 35, 509, 23, 36, 526, 541, + 542, 543, 544, 545, 24, 37, 546, 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, 482, 483, 484, 485, + 486, 487, 488, 496, 497, 498, 499, 500, 501, 527, + 528, 529, 530, 531, 532, 533, 534, 535, 510, 511, + 512, 513, 514, 515, 516, 25, 38, 560, 561, 562, + 563, 564, 565, 566, 567, 568, 26, 39, 588, 589, + 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, + 600, 601, 602, 603, 604, 605, 606, 607, 27, 40, + 609, 610, 28, 41, 612, 613, 469, 470, 471, 472, + 29, 42, 624, 625, 626, 627, 628, 629, 630, 631, + 632, 633, 634, 30, 43, 641, 642, 643, 644, 645, + 646, 647, 473, 31, 44, 650, 651, 652 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -2512,153 +1867,155 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 2, 513, 498, 644, 645, 604, 470, 607, 471, 472, - 485, 3, 4, 649, 650, 651, 652, 513, 486, 487, - 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, - 548, 549, 550, 551, 552, 553, 554, 555, 499, 500, - 631, 632, 633, 634, 635, 636, 5, 653, 654, 655, - 656, 657, 6, 658, 659, 660, 661, 662, 663, 664, - 665, 666, 667, 501, 668, 669, 670, 671, 672, 473, - 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, - 575, 576, 577, 578, 579, 580, 581, 582, 583, 673, - 674, 675, 676, 677, 678, 679, 7, 680, 681, 682, - 474, 683, 684, 488, 685, 489, 686, 687, 688, 689, - 475, 690, 8, 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, - 502, 503, 718, 719, 720, 721, 722, 723, 724, 725, - 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, - 736, 737, 9, 738, 739, 740, 741, 742, 743, 744, - 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, - 504, 755, 756, 757, 758, 759, 760, 761, 762, 763, - 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, - 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, - 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, - 794, 10, 795, 796, 797, 514, 798, 515, 516, 517, - 518, 519, 799, 800, 801, 802, 803, 520, 804, 805, - 11, 806, 807, 515, 516, 517, 476, 808, 809, 490, - 810, 811, 812, 520, 813, 814, 815, 816, 817, 818, - 819, 12, 820, 821, 822, 823, 521, 824, 825, 826, - 13, 532, 533, 534, 535, 536, 827, 828, 829, 830, - 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, - 841, 842, 843, 844, 14, 845, 846, 847, 15, 848, - 849, 850, 543, 851, 16, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 852, 853, 854, - 855, 77, 78, 79, 856, 857, 858, 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, 859, 860, - 861, 862, 863, 864, 865, 866, 867, 121, 122, 123, - 868, 124, 125, 126, 869, 870, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 871, 872, 873, 151, 152, 153, 154, 155, 156, 157, - 158, 874, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 875, 876, 877, 878, 879, 880, - 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, - 891, 892, 893, 894, 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, 895, 210, 896, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 897, 898, 899, 900, 901, 902, 903, 904, - 905, 906, 907, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 908, 909, 910, 911, 912, 913, 914, - 237, 915, 916, 917, 918, 919, 920, 921, 238, 239, - 922, 240, 241, 923, 242, 243, 924, 925, 244, 245, - 246, 247, 248, 249, 250, 251, 926, 927, 928, 252, - 929, 930, 931, 932, 933, 934, 935, 936, 253, 254, - 255, 256, 937, 938, 939, 940, 941, 942, 943, 944, - 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, - 955, 956, 957, 958, 959, 960, 961, 962, 544, 0, + 2, 517, 474, 502, 475, 476, 608, 489, 648, 649, + 611, 3, 4, 653, 654, 490, 491, 517, 569, 570, + 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, + 581, 582, 583, 584, 585, 586, 587, 655, 656, 503, + 504, 657, 658, 659, 660, 661, 5, 662, 663, 664, + 665, 666, 6, 614, 615, 616, 617, 618, 619, 620, + 621, 622, 623, 667, 668, 669, 505, 477, 552, 553, + 554, 555, 556, 557, 558, 559, 635, 636, 637, 638, + 639, 640, 670, 671, 672, 673, 674, 675, 676, 677, + 678, 679, 680, 681, 682, 683, 7, 684, 478, 685, + 686, 687, 492, 688, 493, 689, 690, 691, 479, 692, + 693, 694, 695, 696, 8, 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, 506, 507, 725, 726, 727, 728, 729, + 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, + 740, 741, 742, 743, 9, 744, 745, 746, 747, 748, + 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, + 759, 760, 761, 508, 762, 763, 764, 765, 766, 767, + 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, + 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, + 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, + 798, 799, 800, 10, 801, 802, 803, 518, 804, 519, + 520, 521, 522, 523, 805, 806, 807, 808, 809, 524, + 810, 811, 11, 812, 480, 519, 520, 521, 494, 813, + 814, 815, 816, 817, 818, 524, 819, 820, 821, 822, + 823, 824, 825, 12, 826, 827, 828, 829, 525, 830, + 831, 832, 13, 536, 537, 538, 539, 540, 833, 834, + 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, + 845, 846, 847, 848, 849, 850, 14, 851, 852, 853, + 15, 854, 855, 856, 547, 857, 16, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 858, + 859, 860, 861, 77, 78, 79, 862, 863, 864, 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, + 865, 866, 867, 868, 869, 870, 871, 872, 873, 121, + 122, 123, 124, 125, 874, 126, 127, 128, 875, 876, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 877, 878, 879, 153, 154, 155, + 156, 157, 158, 159, 160, 880, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 881, 882, + 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, + 893, 894, 895, 896, 897, 898, 899, 900, 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, 901, 212, 902, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 903, 904, 905, 906, + 907, 908, 909, 910, 911, 912, 913, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 914, 915, 916, + 917, 918, 919, 920, 239, 921, 922, 923, 924, 925, + 926, 927, 240, 241, 928, 242, 243, 929, 244, 245, + 930, 931, 246, 247, 248, 249, 250, 251, 252, 253, + 932, 933, 934, 254, 935, 936, 937, 938, 939, 940, + 941, 942, 255, 256, 257, 258, 943, 944, 945, 946, + 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, + 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, + 967, 968, 548, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 545, 546, 547 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 549, + 550, 551 }; static const yytype_int16 yycheck[] = { - 0, 45, 45, 295, 296, 113, 45, 305, 47, 48, - 45, 11, 12, 10, 10, 10, 10, 45, 53, 54, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 97, 98, 99, 100, 101, 102, 103, 104, 81, 82, - 262, 263, 264, 265, 266, 267, 46, 10, 10, 10, - 10, 10, 52, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 106, 10, 10, 10, 10, 10, 108, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 10, - 10, 10, 10, 10, 10, 10, 96, 10, 10, 10, - 139, 10, 10, 138, 10, 140, 10, 10, 10, 10, - 149, 10, 112, 10, 10, 10, 10, 10, 10, 10, + 0, 45, 45, 45, 47, 48, 115, 45, 297, 298, + 307, 11, 12, 10, 10, 53, 54, 45, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 10, 10, 81, + 82, 10, 10, 10, 10, 10, 46, 10, 10, 10, + 10, 10, 52, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 10, 10, 10, 108, 110, 97, 98, + 99, 100, 101, 102, 103, 104, 264, 265, 266, 267, + 268, 269, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 96, 10, 141, 10, + 10, 10, 140, 10, 142, 10, 10, 10, 151, 10, + 10, 10, 10, 10, 114, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 183, 184, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 185, 186, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 162, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 164, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 223, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 225, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 221, 10, 10, 10, 269, 10, 271, 272, 273, - 274, 275, 10, 10, 10, 10, 10, 281, 10, 10, - 240, 10, 10, 271, 272, 273, 285, 10, 10, 284, - 10, 10, 10, 281, 10, 10, 10, 10, 10, 10, - 10, 261, 10, 10, 10, 10, 310, 10, 10, 10, - 270, 299, 300, 301, 302, 303, 10, 10, 10, 10, + 10, 10, 10, 223, 10, 10, 10, 271, 10, 273, + 274, 275, 276, 277, 10, 10, 10, 10, 10, 283, + 10, 10, 242, 10, 287, 273, 274, 275, 286, 10, + 10, 10, 10, 10, 10, 283, 10, 10, 10, 10, + 10, 10, 10, 263, 10, 10, 10, 10, 312, 10, + 10, 10, 272, 301, 302, 303, 304, 305, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 294, 10, 10, 10, 298, 10, - 10, 10, 37, 10, 304, 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, 10, 10, 10, - 10, 49, 50, 51, 10, 10, 10, 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, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 105, 106, 107, - 10, 109, 110, 111, 10, 10, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 10, 10, 10, 141, 142, 143, 144, 145, 146, 147, - 148, 10, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 296, 10, 10, 10, + 300, 10, 10, 10, 37, 10, 306, 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, 10, + 10, 10, 10, 49, 50, 51, 10, 10, 10, 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, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 105, + 106, 107, 108, 109, 10, 111, 112, 113, 10, 10, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 10, 10, 10, 143, 144, 145, + 146, 147, 148, 149, 150, 10, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 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, 10, 222, 10, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 10, 10, 10, 10, 10, 10, 10, - 268, 10, 10, 10, 10, 10, 10, 10, 276, 277, - 10, 279, 280, 10, 282, 283, 10, 10, 286, 287, - 288, 289, 290, 291, 292, 293, 10, 10, 10, 297, - 10, 10, 10, 10, 10, 10, 10, 10, 306, 307, - 308, 309, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 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, 10, 224, 10, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 10, 10, 10, + 10, 10, 10, 10, 270, 10, 10, 10, 10, 10, + 10, 10, 278, 279, 10, 281, 282, 10, 284, 285, + 10, 10, 288, 289, 290, 291, 292, 293, 294, 295, + 10, 10, 10, 299, 10, 10, 10, 10, 10, 10, + 10, 10, 308, 309, 310, 311, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 37, -1, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 37, 37, 37 + -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, + 37, 37 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_int16 yystos[] = { - 0, 312, 0, 11, 12, 46, 52, 96, 112, 162, - 221, 240, 261, 270, 294, 298, 304, 313, 314, 315, - 318, 321, 324, 327, 335, 574, 585, 607, 611, 619, - 632, 642, 316, 319, 322, 325, 328, 336, 575, 586, - 608, 612, 620, 633, 643, 13, 14, 15, 16, 17, + 0, 314, 0, 11, 12, 46, 52, 96, 114, 164, + 223, 242, 263, 272, 296, 300, 306, 315, 316, 317, + 320, 323, 326, 329, 337, 578, 589, 611, 615, 623, + 636, 646, 318, 321, 324, 327, 330, 338, 579, 590, + 612, 616, 624, 637, 647, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 49, 50, 51, @@ -2666,20 +2023,20 @@ static const yytype_int16 yystos[] = 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, 105, 106, 107, 109, 110, 111, 114, 115, 116, + 95, 105, 106, 107, 108, 109, 111, 112, 113, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 141, 142, 143, 144, 145, 146, 147, 148, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 137, 138, 139, 143, 144, 145, 146, 147, 148, 149, + 150, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 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, - 222, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 268, 276, 277, - 279, 280, 282, 283, 286, 287, 288, 289, 290, 291, - 292, 293, 297, 306, 307, 308, 309, 317, 338, 339, + 221, 222, 224, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 270, + 278, 279, 281, 282, 284, 285, 288, 289, 290, 291, + 292, 293, 294, 295, 299, 308, 309, 310, 311, 319, 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, @@ -2700,25 +2057,26 @@ static const yytype_int16 yystos[] = 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, 615, 616, 617, 618, 641, - 45, 47, 48, 108, 139, 149, 285, 320, 545, 546, - 547, 548, 549, 550, 551, 45, 53, 54, 138, 140, - 284, 323, 552, 553, 554, 555, 556, 557, 45, 81, - 82, 106, 183, 184, 223, 326, 567, 568, 569, 570, - 571, 572, 573, 45, 269, 271, 272, 273, 274, 275, - 281, 310, 329, 558, 559, 560, 561, 562, 563, 564, - 565, 566, 299, 300, 301, 302, 303, 330, 331, 332, - 333, 334, 337, 558, 559, 560, 561, 562, 97, 98, - 99, 100, 101, 102, 103, 104, 576, 577, 578, 579, - 580, 581, 582, 583, 584, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 587, 588, 589, 590, 591, 592, + 540, 541, 542, 543, 544, 545, 546, 547, 548, 619, + 620, 621, 622, 645, 45, 47, 48, 110, 141, 151, + 287, 322, 549, 550, 551, 552, 553, 554, 555, 45, + 53, 54, 140, 142, 286, 325, 556, 557, 558, 559, + 560, 561, 45, 81, 82, 108, 185, 186, 225, 328, + 571, 572, 573, 574, 575, 576, 577, 45, 271, 273, + 274, 275, 276, 277, 283, 312, 331, 562, 563, 564, + 565, 566, 567, 568, 569, 570, 301, 302, 303, 304, + 305, 332, 333, 334, 335, 336, 339, 562, 563, 564, + 565, 566, 97, 98, 99, 100, 101, 102, 103, 104, + 580, 581, 582, 583, 584, 585, 586, 587, 588, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, - 603, 604, 605, 606, 113, 609, 610, 305, 613, 614, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, - 631, 262, 263, 264, 265, 266, 267, 634, 635, 636, - 637, 638, 639, 640, 295, 296, 644, 645, 646, 10, + 603, 604, 605, 606, 607, 608, 609, 610, 115, 613, + 614, 307, 617, 618, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 625, 626, 627, 628, 629, 630, + 631, 632, 633, 634, 635, 264, 265, 266, 267, 268, + 269, 638, 639, 640, 641, 642, 643, 644, 297, 298, + 648, 649, 650, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -2749,43 +2107,42 @@ static const yytype_int16 yystos[] = 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10 + 10, 10, 10, 10, 10, 10, 10, 10, 10 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_int16 yyr1[] = { - 0, 311, 312, 312, 313, 313, 313, 313, 313, 313, - 313, 313, 313, 313, 313, 313, 313, 313, 314, 315, - 316, 316, 317, 317, 317, 317, 317, 317, 317, 317, - 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, - 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, - 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, - 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, - 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, - 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, - 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, - 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, - 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, - 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, - 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, - 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, - 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, - 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, - 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, - 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, - 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, - 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, - 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, - 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, - 317, 317, 317, 317, 318, 319, 319, 320, 320, 320, - 320, 320, 320, 320, 321, 322, 322, 323, 323, 323, - 323, 323, 323, 324, 325, 325, 326, 326, 326, 326, - 326, 326, 326, 327, 328, 328, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 330, 331, 332, 333, 334, - 335, 336, 336, 337, 337, 337, 337, 337, 337, 337, - 337, 337, 337, 338, 339, 340, 341, 342, 343, 344, + 0, 313, 314, 314, 315, 315, 315, 315, 315, 315, + 315, 315, 315, 315, 315, 315, 315, 315, 316, 317, + 318, 318, 319, 319, 319, 319, 319, 319, 319, 319, + 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, + 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, + 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, + 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, + 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, + 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, + 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, + 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, + 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, + 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, + 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, + 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, + 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, + 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, + 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, + 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, + 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, + 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, + 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, + 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, + 319, 319, 319, 319, 319, 319, 320, 321, 321, 322, + 322, 322, 322, 322, 322, 322, 323, 324, 324, 325, + 325, 325, 325, 325, 325, 326, 327, 327, 328, 328, + 328, 328, 328, 328, 328, 329, 330, 330, 331, 331, + 331, 331, 331, 331, 331, 331, 331, 332, 333, 334, + 335, 336, 337, 338, 338, 339, 339, 339, 339, 339, + 339, 339, 339, 339, 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, @@ -2809,18 +2166,19 @@ static const yytype_int16 yyr1[] = 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, - 575, 575, 576, 576, 576, 576, 576, 576, 576, 576, - 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, - 586, 587, 587, 587, 587, 587, 587, 587, 587, 587, - 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, - 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, + 575, 576, 577, 578, 579, 579, 580, 580, 580, 580, + 580, 580, 580, 580, 581, 582, 583, 584, 585, 586, + 587, 588, 589, 590, 590, 591, 591, 591, 591, 591, + 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, + 591, 591, 591, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, - 608, 608, 609, 610, 611, 612, 612, 613, 614, 615, - 616, 617, 618, 619, 620, 620, 621, 621, 621, 621, - 621, 621, 621, 621, 621, 621, 622, 623, 624, 625, - 626, 627, 628, 629, 630, 631, 632, 633, 633, 634, - 634, 634, 634, 634, 634, 635, 636, 637, 638, 639, - 640, 641, 642, 643, 643, 644, 644, 645, 646 + 608, 609, 610, 611, 612, 612, 613, 614, 615, 616, + 616, 617, 618, 619, 620, 621, 622, 623, 624, 624, + 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, + 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, + 636, 637, 637, 638, 638, 638, 638, 638, 638, 639, + 640, 641, 642, 643, 644, 645, 646, 647, 647, 648, + 648, 649, 650 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -2849,13 +2207,13 @@ static const yytype_int8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 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, 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, 1, 2, 2, 2, + 2, 2, 1, 2, 0, 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, @@ -2868,29 +2226,30 @@ static const yytype_int8 yyr2[] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 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, 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, 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, + 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, 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, 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, 1, 2, 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, - 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, 2, + 2, 2, 2, 2, 2, 3, 1, 2, 0, 1, + 1, 2, 2 }; @@ -2969,7 +2328,7 @@ yy_symbol_value_print (FILE *yyo, yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep) { FILE *yyoutput = yyo; - YYUSE (yyoutput); + YY_USE (yyoutput); if (!yyvaluep) return; # ifdef YYPRINT @@ -2977,7 +2336,7 @@ yy_symbol_value_print (FILE *yyo, YYPRINT (yyo, yytoknum[yykind], *yyvaluep); # endif YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YYUSE (yykind); + YY_USE (yykind); YY_IGNORE_MAYBE_UNINITIALIZED_END } @@ -3091,18 +2450,18 @@ static void yydestruct (const char *yymsg, yysymbol_kind_t yykind, YYSTYPE *yyvaluep) { - YYUSE (yyvaluep); + YY_USE (yyvaluep); if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp); YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YYUSE (yykind); + YY_USE (yykind); YY_IGNORE_MAYBE_UNINITIALIZED_END } -/* The lookahead symbol. */ +/* Lookahead token kind. */ int yychar; /* The semantic value of the lookahead symbol. */ @@ -3120,34 +2479,30 @@ int yynerrs; int yyparse (void) { - yy_state_fast_t yystate; + yy_state_fast_t yystate = 0; /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; + int yyerrstatus = 0; - /* The stacks and their tools: - 'yyss': related to states. - 'yyvs': related to semantic values. - - Refer to the stacks through separate pointers, to allow yyoverflow + /* Refer to the stacks through separate pointers, to allow yyoverflow to reallocate them elsewhere. */ /* Their size. */ - YYPTRDIFF_T yystacksize; + YYPTRDIFF_T yystacksize = YYINITDEPTH; - /* The state stack. */ + /* The state stack: array, bottom, top. */ yy_state_t yyssa[YYINITDEPTH]; - yy_state_t *yyss; - yy_state_t *yyssp; + yy_state_t *yyss = yyssa; + yy_state_t *yyssp = yyss; - /* The semantic value stack. */ + /* The semantic value stack: array, bottom, top. */ YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs; - YYSTYPE *yyvsp; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp = yyvs; int yyn; /* The return value of yyparse. */ int yyresult; - /* Lookahead token as an internal (translated) token number. */ + /* Lookahead symbol kind. */ yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY; /* The variables used to return semantic value and location from the action routines. */ @@ -3161,15 +2516,6 @@ yyparse (void) Keep to zero when no symbol should be popped. */ int yylen = 0; - yynerrs = 0; - yystate = 0; - yyerrstatus = 0; - - yystacksize = YYINITDEPTH; - yyssp = yyss = yyssa; - yyvsp = yyvs = yyvsa; - - YYDPRINTF ((stderr, "Starting parse\n")); yychar = YYEMPTY; /* Cause a token to be read. */ @@ -3370,24 +2716,24 @@ yyreduce: YY_REDUCE_PRINT (yyn); switch (yyn) { - case 18: -#line 198 "./util/configparser.y" + case 18: /* force_toplevel: VAR_FORCE_TOPLEVEL */ +#line 198 "util/configparser.y" { OUTYY(("\nP(force-toplevel)\n")); } -#line 3379 "util/configparser.c" +#line 2725 "util/configparser.c" break; - case 19: -#line 204 "./util/configparser.y" + case 19: /* serverstart: VAR_SERVER */ +#line 204 "util/configparser.y" { OUTYY(("\nP(server:)\n")); } -#line 3387 "util/configparser.c" +#line 2733 "util/configparser.c" break; - case 234: -#line 307 "./util/configparser.y" + case 236: /* stubstart: VAR_STUB_ZONE */ +#line 309 "util/configparser.y" { struct config_stub* s; OUTYY(("\nP(stub_zone:)\n")); @@ -3398,11 +2744,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 3402 "util/configparser.c" +#line 2748 "util/configparser.c" break; - case 244: -#line 324 "./util/configparser.y" + case 246: /* forwardstart: VAR_FORWARD_ZONE */ +#line 326 "util/configparser.y" { struct config_stub* s; OUTYY(("\nP(forward_zone:)\n")); @@ -3413,11 +2759,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 3417 "util/configparser.c" +#line 2763 "util/configparser.c" break; - case 253: -#line 341 "./util/configparser.y" + case 255: /* viewstart: VAR_VIEW */ +#line 343 "util/configparser.y" { struct config_view* s; OUTYY(("\nP(view:)\n")); @@ -3430,11 +2776,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 3434 "util/configparser.c" +#line 2780 "util/configparser.c" break; - case 263: -#line 360 "./util/configparser.y" + case 265: /* authstart: VAR_AUTH_ZONE */ +#line 362 "util/configparser.y" { struct config_auth* s; OUTYY(("\nP(auth_zone:)\n")); @@ -3451,11 +2797,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 3455 "util/configparser.c" +#line 2801 "util/configparser.c" break; - case 275: -#line 385 "./util/configparser.y" + case 277: /* rpz_tag: VAR_TAGS STRING_ARG */ +#line 387 "util/configparser.y" { uint8_t* bitlist; size_t len = 0; @@ -3472,11 +2818,11 @@ yyreduce: } } -#line 3476 "util/configparser.c" +#line 2822 "util/configparser.c" break; - case 276: -#line 404 "./util/configparser.y" + case 278: /* rpz_action_override: VAR_RPZ_ACTION_OVERRIDE STRING_ARG */ +#line 406 "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 && @@ -3491,21 +2837,21 @@ yyreduce: cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); } } -#line 3495 "util/configparser.c" +#line 2841 "util/configparser.c" break; - case 277: -#line 421 "./util/configparser.y" + case 279: /* rpz_cname_override: VAR_RPZ_CNAME_OVERRIDE STRING_ARG */ +#line 423 "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 3505 "util/configparser.c" +#line 2851 "util/configparser.c" break; - case 278: -#line 429 "./util/configparser.y" + case 280: /* rpz_log: VAR_RPZ_LOG STRING_ARG */ +#line 431 "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) @@ -3513,21 +2859,21 @@ yyreduce: else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3517 "util/configparser.c" +#line 2863 "util/configparser.c" break; - case 279: -#line 439 "./util/configparser.y" + case 281: /* rpz_log_name: VAR_RPZ_LOG_NAME STRING_ARG */ +#line 441 "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 3527 "util/configparser.c" +#line 2873 "util/configparser.c" break; - case 280: -#line 447 "./util/configparser.y" + case 282: /* rpzstart: VAR_RPZ */ +#line 449 "util/configparser.y" { struct config_auth* s; OUTYY(("\nP(rpz:)\n")); @@ -3543,11 +2889,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 3547 "util/configparser.c" +#line 2893 "util/configparser.c" break; - case 293: -#line 470 "./util/configparser.y" + case 295: /* server_num_threads: VAR_NUM_THREADS STRING_ARG */ +#line 472 "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) @@ -3555,11 +2901,11 @@ yyreduce: else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3559 "util/configparser.c" +#line 2905 "util/configparser.c" break; - case 294: -#line 479 "./util/configparser.y" + case 296: /* server_verbosity: VAR_VERBOSITY STRING_ARG */ +#line 481 "util/configparser.y" { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3567,11 +2913,11 @@ yyreduce: else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3571 "util/configparser.c" +#line 2917 "util/configparser.c" break; - case 295: -#line 488 "./util/configparser.y" + case 297: /* server_statistics_interval: VAR_STATISTICS_INTERVAL STRING_ARG */ +#line 490 "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) @@ -3581,11 +2927,11 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3585 "util/configparser.c" +#line 2931 "util/configparser.c" break; - case 296: -#line 499 "./util/configparser.y" + case 298: /* server_statistics_cumulative: VAR_STATISTICS_CUMULATIVE STRING_ARG */ +#line 501 "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) @@ -3593,11 +2939,11 @@ yyreduce: else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3597 "util/configparser.c" +#line 2943 "util/configparser.c" break; - case 297: -#line 508 "./util/configparser.y" + case 299: /* server_extended_statistics: VAR_EXTENDED_STATISTICS STRING_ARG */ +#line 510 "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) @@ -3605,11 +2951,11 @@ yyreduce: else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3609 "util/configparser.c" +#line 2955 "util/configparser.c" break; - case 298: -#line 517 "./util/configparser.y" + case 300: /* server_shm_enable: VAR_SHM_ENABLE STRING_ARG */ +#line 519 "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) @@ -3617,11 +2963,11 @@ yyreduce: else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3621 "util/configparser.c" +#line 2967 "util/configparser.c" break; - case 299: -#line 526 "./util/configparser.y" + case 301: /* server_shm_key: VAR_SHM_KEY STRING_ARG */ +#line 528 "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) @@ -3631,11 +2977,11 @@ yyreduce: else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3635 "util/configparser.c" +#line 2981 "util/configparser.c" break; - case 300: -#line 537 "./util/configparser.y" + case 302: /* server_port: VAR_PORT STRING_ARG */ +#line 539 "util/configparser.y" { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3643,11 +2989,11 @@ yyreduce: else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3647 "util/configparser.c" +#line 2993 "util/configparser.c" break; - case 301: -#line 546 "./util/configparser.y" + case 303: /* server_send_client_subnet: VAR_SEND_CLIENT_SUBNET STRING_ARG */ +#line 548 "util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str))); @@ -3658,11 +3004,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3662 "util/configparser.c" +#line 3008 "util/configparser.c" break; - case 302: -#line 558 "./util/configparser.y" + case 304: /* server_client_subnet_zone: VAR_CLIENT_SUBNET_ZONE STRING_ARG */ +#line 560 "util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str))); @@ -3674,11 +3020,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3678 "util/configparser.c" +#line 3024 "util/configparser.c" break; - case 303: -#line 572 "./util/configparser.y" + case 305: /* server_client_subnet_always_forward: VAR_CLIENT_SUBNET_ALWAYS_FORWARD STRING_ARG */ +#line 574 "util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str))); @@ -3692,11 +3038,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3696 "util/configparser.c" +#line 3042 "util/configparser.c" break; - case 304: -#line 587 "./util/configparser.y" + case 306: /* server_client_subnet_opcode: VAR_CLIENT_SUBNET_OPCODE STRING_ARG */ +#line 589 "util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str))); @@ -3706,11 +3052,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3710 "util/configparser.c" +#line 3056 "util/configparser.c" break; - case 305: -#line 598 "./util/configparser.y" + case 307: /* server_max_client_subnet_ipv4: VAR_MAX_CLIENT_SUBNET_IPV4 STRING_ARG */ +#line 600 "util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -3726,11 +3072,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3730 "util/configparser.c" +#line 3076 "util/configparser.c" break; - case 306: -#line 615 "./util/configparser.y" + case 308: /* server_max_client_subnet_ipv6: VAR_MAX_CLIENT_SUBNET_IPV6 STRING_ARG */ +#line 617 "util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3746,11 +3092,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3750 "util/configparser.c" +#line 3096 "util/configparser.c" break; - case 307: -#line 632 "./util/configparser.y" + case 309: /* server_min_client_subnet_ipv4: VAR_MIN_CLIENT_SUBNET_IPV4 STRING_ARG */ +#line 634 "util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -3766,11 +3112,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3770 "util/configparser.c" +#line 3116 "util/configparser.c" break; - case 308: -#line 649 "./util/configparser.y" + case 310: /* server_min_client_subnet_ipv6: VAR_MIN_CLIENT_SUBNET_IPV6 STRING_ARG */ +#line 651 "util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3786,11 +3132,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3790 "util/configparser.c" +#line 3136 "util/configparser.c" break; - case 309: -#line 666 "./util/configparser.y" + case 311: /* server_max_ecs_tree_size_ipv4: VAR_MAX_ECS_TREE_SIZE_IPV4 STRING_ARG */ +#line 668 "util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str))); @@ -3804,11 +3150,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3808 "util/configparser.c" +#line 3154 "util/configparser.c" break; - case 310: -#line 681 "./util/configparser.y" + case 312: /* server_max_ecs_tree_size_ipv6: VAR_MAX_ECS_TREE_SIZE_IPV6 STRING_ARG */ +#line 683 "util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str))); @@ -3822,11 +3168,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3826 "util/configparser.c" +#line 3172 "util/configparser.c" break; - case 311: -#line 696 "./util/configparser.y" + case 313: /* server_interface: VAR_INTERFACE STRING_ARG */ +#line 698 "util/configparser.y" { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_ifs == 0) @@ -3838,11 +3184,11 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 3842 "util/configparser.c" +#line 3188 "util/configparser.c" break; - case 312: -#line 709 "./util/configparser.y" + case 314: /* server_outgoing_interface: VAR_OUTGOING_INTERFACE STRING_ARG */ +#line 711 "util/configparser.y" { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_out_ifs == 0) @@ -3856,11 +3202,11 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 3860 "util/configparser.c" +#line 3206 "util/configparser.c" break; - case 313: -#line 724 "./util/configparser.y" + case 315: /* server_outgoing_range: VAR_OUTGOING_RANGE STRING_ARG */ +#line 726 "util/configparser.y" { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3868,11 +3214,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3872 "util/configparser.c" +#line 3218 "util/configparser.c" break; - case 314: -#line 733 "./util/configparser.y" + case 316: /* server_outgoing_port_permit: VAR_OUTGOING_PORT_PERMIT STRING_ARG */ +#line 735 "util/configparser.y" { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 1, @@ -3880,11 +3226,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3884 "util/configparser.c" +#line 3230 "util/configparser.c" break; - case 315: -#line 742 "./util/configparser.y" + case 317: /* server_outgoing_port_avoid: VAR_OUTGOING_PORT_AVOID STRING_ARG */ +#line 744 "util/configparser.y" { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 0, @@ -3892,11 +3238,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3896 "util/configparser.c" +#line 3242 "util/configparser.c" break; - case 316: -#line 751 "./util/configparser.y" + case 318: /* server_outgoing_num_tcp: VAR_OUTGOING_NUM_TCP STRING_ARG */ +#line 753 "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) @@ -3904,11 +3250,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3908 "util/configparser.c" +#line 3254 "util/configparser.c" break; - case 317: -#line 760 "./util/configparser.y" + case 319: /* server_incoming_num_tcp: VAR_INCOMING_NUM_TCP STRING_ARG */ +#line 762 "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) @@ -3916,11 +3262,11 @@ yyreduce: else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3920 "util/configparser.c" +#line 3266 "util/configparser.c" break; - case 318: -#line 769 "./util/configparser.y" + case 320: /* server_interface_automatic: VAR_INTERFACE_AUTOMATIC STRING_ARG */ +#line 771 "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) @@ -3928,11 +3274,11 @@ yyreduce: else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3932 "util/configparser.c" +#line 3278 "util/configparser.c" break; - case 319: -#line 778 "./util/configparser.y" + case 321: /* server_do_ip4: VAR_DO_IP4 STRING_ARG */ +#line 780 "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) @@ -3940,11 +3286,11 @@ yyreduce: else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3944 "util/configparser.c" +#line 3290 "util/configparser.c" break; - case 320: -#line 787 "./util/configparser.y" + case 322: /* server_do_ip6: VAR_DO_IP6 STRING_ARG */ +#line 789 "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) @@ -3952,11 +3298,11 @@ yyreduce: else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3956 "util/configparser.c" +#line 3302 "util/configparser.c" break; - case 321: -#line 796 "./util/configparser.y" + case 323: /* server_do_udp: VAR_DO_UDP STRING_ARG */ +#line 798 "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) @@ -3964,11 +3310,11 @@ yyreduce: else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3968 "util/configparser.c" +#line 3314 "util/configparser.c" break; - case 322: -#line 805 "./util/configparser.y" + case 324: /* server_do_tcp: VAR_DO_TCP STRING_ARG */ +#line 807 "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) @@ -3976,11 +3322,11 @@ yyreduce: else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3980 "util/configparser.c" +#line 3326 "util/configparser.c" break; - case 323: -#line 814 "./util/configparser.y" + case 325: /* server_prefer_ip4: VAR_PREFER_IP4 STRING_ARG */ +#line 816 "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) @@ -3988,11 +3334,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3992 "util/configparser.c" +#line 3338 "util/configparser.c" break; - case 324: -#line 823 "./util/configparser.y" + case 326: /* server_prefer_ip6: VAR_PREFER_IP6 STRING_ARG */ +#line 825 "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) @@ -4000,11 +3346,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4004 "util/configparser.c" +#line 3350 "util/configparser.c" break; - case 325: -#line 832 "./util/configparser.y" + case 327: /* server_tcp_mss: VAR_TCP_MSS STRING_ARG */ +#line 834 "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) @@ -4012,11 +3358,11 @@ yyreduce: else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4016 "util/configparser.c" +#line 3362 "util/configparser.c" break; - case 326: -#line 841 "./util/configparser.y" + case 328: /* server_outgoing_tcp_mss: VAR_OUTGOING_TCP_MSS STRING_ARG */ +#line 843 "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) @@ -4024,11 +3370,11 @@ yyreduce: else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4028 "util/configparser.c" +#line 3374 "util/configparser.c" break; - case 327: -#line 850 "./util/configparser.y" + case 329: /* server_tcp_idle_timeout: VAR_TCP_IDLE_TIMEOUT STRING_ARG */ +#line 852 "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) @@ -4040,11 +3386,39 @@ yyreduce: else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4044 "util/configparser.c" +#line 3390 "util/configparser.c" break; - case 328: -#line 863 "./util/configparser.y" + case 330: /* server_max_reuse_tcp_queries: VAR_MAX_REUSE_TCP_QUERIES STRING_ARG */ +#line 865 "util/configparser.y" + { + OUTYY(("P(server_max_reuse_tcp_queries:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + yyerror("number expected"); + else if (atoi((yyvsp[0].str)) < 1) + cfg_parser->cfg->max_reuse_tcp_queries = 0; + else cfg_parser->cfg->max_reuse_tcp_queries = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); + } +#line 3404 "util/configparser.c" + break; + + case 331: /* server_tcp_reuse_timeout: VAR_TCP_REUSE_TIMEOUT STRING_ARG */ +#line 876 "util/configparser.y" + { + OUTYY(("P(server_tcp_reuse_timeout:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + yyerror("number expected"); + else if (atoi((yyvsp[0].str)) < 1) + cfg_parser->cfg->tcp_reuse_timeout = 0; + else cfg_parser->cfg->tcp_reuse_timeout = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); + } +#line 3418 "util/configparser.c" + break; + + case 332: /* server_tcp_keepalive: VAR_EDNS_TCP_KEEPALIVE STRING_ARG */ +#line 887 "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) @@ -4052,11 +3426,11 @@ yyreduce: else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4056 "util/configparser.c" +#line 3430 "util/configparser.c" break; - case 329: -#line 872 "./util/configparser.y" + case 333: /* server_tcp_keepalive_timeout: VAR_EDNS_TCP_KEEPALIVE_TIMEOUT STRING_ARG */ +#line 896 "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) @@ -4068,11 +3442,11 @@ yyreduce: else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4072 "util/configparser.c" +#line 3446 "util/configparser.c" break; - case 330: -#line 885 "./util/configparser.y" + case 334: /* server_tcp_upstream: VAR_TCP_UPSTREAM STRING_ARG */ +#line 909 "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) @@ -4080,11 +3454,11 @@ yyreduce: else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4084 "util/configparser.c" +#line 3458 "util/configparser.c" break; - case 331: -#line 894 "./util/configparser.y" + case 335: /* server_udp_upstream_without_downstream: VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM STRING_ARG */ +#line 918 "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) @@ -4092,11 +3466,11 @@ yyreduce: else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4096 "util/configparser.c" +#line 3470 "util/configparser.c" break; - case 332: -#line 903 "./util/configparser.y" + case 336: /* server_ssl_upstream: VAR_SSL_UPSTREAM STRING_ARG */ +#line 927 "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) @@ -4104,31 +3478,31 @@ yyreduce: else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4108 "util/configparser.c" +#line 3482 "util/configparser.c" break; - case 333: -#line 912 "./util/configparser.y" + case 337: /* server_ssl_service_key: VAR_SSL_SERVICE_KEY STRING_ARG */ +#line 936 "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 4118 "util/configparser.c" +#line 3492 "util/configparser.c" break; - case 334: -#line 919 "./util/configparser.y" + case 338: /* server_ssl_service_pem: VAR_SSL_SERVICE_PEM STRING_ARG */ +#line 943 "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 4128 "util/configparser.c" +#line 3502 "util/configparser.c" break; - case 335: -#line 926 "./util/configparser.y" + case 339: /* server_ssl_port: VAR_SSL_PORT STRING_ARG */ +#line 950 "util/configparser.y" { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4136,21 +3510,21 @@ yyreduce: else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4140 "util/configparser.c" +#line 3514 "util/configparser.c" break; - case 336: -#line 935 "./util/configparser.y" + case 340: /* server_tls_cert_bundle: VAR_TLS_CERT_BUNDLE STRING_ARG */ +#line 959 "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 4150 "util/configparser.c" +#line 3524 "util/configparser.c" break; - case 337: -#line 942 "./util/configparser.y" + case 341: /* server_tls_win_cert: VAR_TLS_WIN_CERT STRING_ARG */ +#line 966 "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) @@ -4158,53 +3532,53 @@ yyreduce: else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4162 "util/configparser.c" +#line 3536 "util/configparser.c" break; - case 338: -#line 951 "./util/configparser.y" + case 342: /* server_tls_additional_port: VAR_TLS_ADDITIONAL_PORT STRING_ARG */ +#line 975 "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 4173 "util/configparser.c" +#line 3547 "util/configparser.c" break; - case 339: -#line 959 "./util/configparser.y" + case 343: /* server_tls_ciphers: VAR_TLS_CIPHERS STRING_ARG */ +#line 983 "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 4183 "util/configparser.c" +#line 3557 "util/configparser.c" break; - case 340: -#line 966 "./util/configparser.y" + case 344: /* server_tls_ciphersuites: VAR_TLS_CIPHERSUITES STRING_ARG */ +#line 990 "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 4193 "util/configparser.c" +#line 3567 "util/configparser.c" break; - case 341: -#line 973 "./util/configparser.y" + case 345: /* server_tls_session_ticket_keys: VAR_TLS_SESSION_TICKET_KEYS STRING_ARG */ +#line 997 "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 4204 "util/configparser.c" +#line 3578 "util/configparser.c" break; - case 342: -#line 981 "./util/configparser.y" + case 346: /* server_tls_use_sni: VAR_TLS_USE_SNI STRING_ARG */ +#line 1005 "util/configparser.y" { OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4212,11 +3586,11 @@ yyreduce: else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4216 "util/configparser.c" +#line 3590 "util/configparser.c" break; - case 343: -#line 990 "./util/configparser.y" + case 347: /* server_https_port: VAR_HTTPS_PORT STRING_ARG */ +#line 1014 "util/configparser.y" { OUTYY(("P(server_https_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4224,11 +3598,11 @@ yyreduce: else cfg_parser->cfg->https_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4228 "util/configparser.c" +#line 3602 "util/configparser.c" break; - case 344: -#line 998 "./util/configparser.y" + case 348: /* server_http_endpoint: VAR_HTTP_ENDPOINT STRING_ARG */ +#line 1022 "util/configparser.y" { OUTYY(("P(server_http_endpoint:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->http_endpoint); @@ -4244,11 +3618,11 @@ yyreduce: cfg_parser->cfg->http_endpoint = (yyvsp[0].str); } } -#line 4248 "util/configparser.c" +#line 3622 "util/configparser.c" break; - case 345: -#line 1014 "./util/configparser.y" + case 349: /* server_http_max_streams: VAR_HTTP_MAX_STREAMS STRING_ARG */ +#line 1038 "util/configparser.y" { OUTYY(("P(server_http_max_streams:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4256,11 +3630,11 @@ yyreduce: else cfg_parser->cfg->http_max_streams = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4260 "util/configparser.c" +#line 3634 "util/configparser.c" break; - case 346: -#line 1022 "./util/configparser.y" + case 350: /* server_http_query_buffer_size: VAR_HTTP_QUERY_BUFFER_SIZE STRING_ARG */ +#line 1046 "util/configparser.y" { OUTYY(("P(server_http_query_buffer_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), @@ -4268,11 +3642,11 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4272 "util/configparser.c" +#line 3646 "util/configparser.c" break; - case 347: -#line 1030 "./util/configparser.y" + case 351: /* server_http_response_buffer_size: VAR_HTTP_RESPONSE_BUFFER_SIZE STRING_ARG */ +#line 1054 "util/configparser.y" { OUTYY(("P(server_http_response_buffer_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), @@ -4280,11 +3654,11 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4284 "util/configparser.c" +#line 3658 "util/configparser.c" break; - case 348: -#line 1038 "./util/configparser.y" + case 352: /* server_http_nodelay: VAR_HTTP_NODELAY STRING_ARG */ +#line 1062 "util/configparser.y" { OUTYY(("P(server_http_nodelay:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4292,11 +3666,11 @@ yyreduce: else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4296 "util/configparser.c" +#line 3670 "util/configparser.c" break; - case 349: -#line 1046 "./util/configparser.y" + case 353: /* server_http_notls_downstream: VAR_HTTP_NOTLS_DOWNSTREAM STRING_ARG */ +#line 1070 "util/configparser.y" { OUTYY(("P(server_http_notls_downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4304,11 +3678,11 @@ yyreduce: else cfg_parser->cfg->http_notls_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4308 "util/configparser.c" +#line 3682 "util/configparser.c" break; - case 350: -#line 1054 "./util/configparser.y" + case 354: /* server_use_systemd: VAR_USE_SYSTEMD STRING_ARG */ +#line 1078 "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) @@ -4316,11 +3690,11 @@ yyreduce: else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4320 "util/configparser.c" +#line 3694 "util/configparser.c" break; - case 351: -#line 1063 "./util/configparser.y" + case 355: /* server_do_daemonize: VAR_DO_DAEMONIZE STRING_ARG */ +#line 1087 "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) @@ -4328,11 +3702,11 @@ yyreduce: else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4332 "util/configparser.c" +#line 3706 "util/configparser.c" break; - case 352: -#line 1072 "./util/configparser.y" + case 356: /* server_use_syslog: VAR_USE_SYSLOG STRING_ARG */ +#line 1096 "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) @@ -4345,11 +3719,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4349 "util/configparser.c" +#line 3723 "util/configparser.c" break; - case 353: -#line 1086 "./util/configparser.y" + case 357: /* server_log_time_ascii: VAR_LOG_TIME_ASCII STRING_ARG */ +#line 1110 "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) @@ -4357,11 +3731,11 @@ yyreduce: else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4361 "util/configparser.c" +#line 3735 "util/configparser.c" break; - case 354: -#line 1095 "./util/configparser.y" + case 358: /* server_log_queries: VAR_LOG_QUERIES STRING_ARG */ +#line 1119 "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) @@ -4369,11 +3743,11 @@ yyreduce: else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4373 "util/configparser.c" +#line 3747 "util/configparser.c" break; - case 355: -#line 1104 "./util/configparser.y" + case 359: /* server_log_replies: VAR_LOG_REPLIES STRING_ARG */ +#line 1128 "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) @@ -4381,11 +3755,11 @@ yyreduce: else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4385 "util/configparser.c" +#line 3759 "util/configparser.c" break; - case 356: -#line 1113 "./util/configparser.y" + case 360: /* server_log_tag_queryreply: VAR_LOG_TAG_QUERYREPLY STRING_ARG */ +#line 1137 "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) @@ -4393,11 +3767,11 @@ yyreduce: else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4397 "util/configparser.c" +#line 3771 "util/configparser.c" break; - case 357: -#line 1122 "./util/configparser.y" + case 361: /* server_log_servfail: VAR_LOG_SERVFAIL STRING_ARG */ +#line 1146 "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) @@ -4405,11 +3779,11 @@ yyreduce: else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4409 "util/configparser.c" +#line 3783 "util/configparser.c" break; - case 358: -#line 1131 "./util/configparser.y" + case 362: /* server_log_local_actions: VAR_LOG_LOCAL_ACTIONS STRING_ARG */ +#line 1155 "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) @@ -4417,31 +3791,31 @@ yyreduce: else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4421 "util/configparser.c" +#line 3795 "util/configparser.c" break; - case 359: -#line 1140 "./util/configparser.y" + case 363: /* server_chroot: VAR_CHROOT STRING_ARG */ +#line 1164 "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 4431 "util/configparser.c" +#line 3805 "util/configparser.c" break; - case 360: -#line 1147 "./util/configparser.y" + case 364: /* server_username: VAR_USERNAME STRING_ARG */ +#line 1171 "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 4441 "util/configparser.c" +#line 3815 "util/configparser.c" break; - case 361: -#line 1154 "./util/configparser.y" + case 365: /* server_directory: VAR_DIRECTORY STRING_ARG */ +#line 1178 "util/configparser.y" { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->directory); @@ -4466,105 +3840,105 @@ yyreduce: } } } -#line 4470 "util/configparser.c" +#line 3844 "util/configparser.c" break; - case 362: -#line 1180 "./util/configparser.y" + case 366: /* server_logfile: VAR_LOGFILE STRING_ARG */ +#line 1204 "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 4481 "util/configparser.c" +#line 3855 "util/configparser.c" break; - case 363: -#line 1188 "./util/configparser.y" + case 367: /* server_pidfile: VAR_PIDFILE STRING_ARG */ +#line 1212 "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 4491 "util/configparser.c" +#line 3865 "util/configparser.c" break; - case 364: -#line 1195 "./util/configparser.y" + case 368: /* server_root_hints: VAR_ROOT_HINTS STRING_ARG */ +#line 1219 "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 4501 "util/configparser.c" +#line 3875 "util/configparser.c" break; - case 365: -#line 1202 "./util/configparser.y" + case 369: /* server_dlv_anchor_file: VAR_DLV_ANCHOR_FILE STRING_ARG */ +#line 1226 "util/configparser.y" { OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str))); log_warn("option dlv-anchor-file ignored: DLV is decommissioned"); free((yyvsp[0].str)); } -#line 4511 "util/configparser.c" +#line 3885 "util/configparser.c" break; - case 366: -#line 1209 "./util/configparser.y" + case 370: /* server_dlv_anchor: VAR_DLV_ANCHOR STRING_ARG */ +#line 1233 "util/configparser.y" { OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str))); log_warn("option dlv-anchor ignored: DLV is decommissioned"); free((yyvsp[0].str)); } -#line 4521 "util/configparser.c" +#line 3895 "util/configparser.c" break; - case 367: -#line 1216 "./util/configparser.y" + case 371: /* server_auto_trust_anchor_file: VAR_AUTO_TRUST_ANCHOR_FILE STRING_ARG */ +#line 1240 "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 4532 "util/configparser.c" +#line 3906 "util/configparser.c" break; - case 368: -#line 1224 "./util/configparser.y" + case 372: /* server_trust_anchor_file: VAR_TRUST_ANCHOR_FILE STRING_ARG */ +#line 1248 "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 4543 "util/configparser.c" +#line 3917 "util/configparser.c" break; - case 369: -#line 1232 "./util/configparser.y" + case 373: /* server_trusted_keys_file: VAR_TRUSTED_KEYS_FILE STRING_ARG */ +#line 1256 "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 4554 "util/configparser.c" +#line 3928 "util/configparser.c" break; - case 370: -#line 1240 "./util/configparser.y" + case 374: /* server_trust_anchor: VAR_TRUST_ANCHOR STRING_ARG */ +#line 1264 "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 4564 "util/configparser.c" +#line 3938 "util/configparser.c" break; - case 371: -#line 1247 "./util/configparser.y" + case 375: /* server_trust_anchor_signaling: VAR_TRUST_ANCHOR_SIGNALING STRING_ARG */ +#line 1271 "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) @@ -4574,11 +3948,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4578 "util/configparser.c" +#line 3952 "util/configparser.c" break; - case 372: -#line 1258 "./util/configparser.y" + case 376: /* server_root_key_sentinel: VAR_ROOT_KEY_SENTINEL STRING_ARG */ +#line 1282 "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) @@ -4588,21 +3962,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4592 "util/configparser.c" +#line 3966 "util/configparser.c" break; - case 373: -#line 1269 "./util/configparser.y" + case 377: /* server_domain_insecure: VAR_DOMAIN_INSECURE STRING_ARG */ +#line 1293 "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 4602 "util/configparser.c" +#line 3976 "util/configparser.c" break; - case 374: -#line 1276 "./util/configparser.y" + case 378: /* server_hide_identity: VAR_HIDE_IDENTITY STRING_ARG */ +#line 1300 "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) @@ -4610,11 +3984,11 @@ yyreduce: else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4614 "util/configparser.c" +#line 3988 "util/configparser.c" break; - case 375: -#line 1285 "./util/configparser.y" + case 379: /* server_hide_version: VAR_HIDE_VERSION STRING_ARG */ +#line 1309 "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) @@ -4622,11 +3996,11 @@ yyreduce: else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4626 "util/configparser.c" +#line 4000 "util/configparser.c" break; - case 376: -#line 1294 "./util/configparser.y" + case 380: /* server_hide_trustanchor: VAR_HIDE_TRUSTANCHOR STRING_ARG */ +#line 1318 "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) @@ -4634,31 +4008,31 @@ yyreduce: else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4638 "util/configparser.c" +#line 4012 "util/configparser.c" break; - case 377: -#line 1303 "./util/configparser.y" + case 381: /* server_identity: VAR_IDENTITY STRING_ARG */ +#line 1327 "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 4648 "util/configparser.c" +#line 4022 "util/configparser.c" break; - case 378: -#line 1310 "./util/configparser.y" + case 382: /* server_version: VAR_VERSION STRING_ARG */ +#line 1334 "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 4658 "util/configparser.c" +#line 4032 "util/configparser.c" break; - case 379: -#line 1317 "./util/configparser.y" + case 383: /* server_nsid: VAR_NSID STRING_ARG */ +#line 1341 "util/configparser.y" { OUTYY(("P(server_nsid:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->nsid_cfg_str); @@ -4673,33 +4047,33 @@ yyreduce: yyerror("the NSID must be either a hex string or an " "ascii character string prepended with ascii_."); } -#line 4677 "util/configparser.c" +#line 4051 "util/configparser.c" break; - case 380: -#line 1333 "./util/configparser.y" + case 384: /* server_so_rcvbuf: VAR_SO_RCVBUF STRING_ARG */ +#line 1357 "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 4688 "util/configparser.c" +#line 4062 "util/configparser.c" break; - case 381: -#line 1341 "./util/configparser.y" + case 385: /* server_so_sndbuf: VAR_SO_SNDBUF STRING_ARG */ +#line 1365 "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 4699 "util/configparser.c" +#line 4073 "util/configparser.c" break; - case 382: -#line 1349 "./util/configparser.y" + case 386: /* server_so_reuseport: VAR_SO_REUSEPORT STRING_ARG */ +#line 1373 "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) @@ -4708,11 +4082,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4712 "util/configparser.c" +#line 4086 "util/configparser.c" break; - case 383: -#line 1359 "./util/configparser.y" + case 387: /* server_ip_transparent: VAR_IP_TRANSPARENT STRING_ARG */ +#line 1383 "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) @@ -4721,11 +4095,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4725 "util/configparser.c" +#line 4099 "util/configparser.c" break; - case 384: -#line 1369 "./util/configparser.y" + case 388: /* server_ip_freebind: VAR_IP_FREEBIND STRING_ARG */ +#line 1393 "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) @@ -4734,11 +4108,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4738 "util/configparser.c" +#line 4112 "util/configparser.c" break; - case 385: -#line 1379 "./util/configparser.y" + case 389: /* server_ip_dscp: VAR_IP_DSCP STRING_ARG */ +#line 1403 "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) @@ -4751,22 +4125,22 @@ yyreduce: cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4755 "util/configparser.c" +#line 4129 "util/configparser.c" break; - case 386: -#line 1393 "./util/configparser.y" + case 390: /* server_stream_wait_size: VAR_STREAM_WAIT_SIZE STRING_ARG */ +#line 1417 "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 4766 "util/configparser.c" +#line 4140 "util/configparser.c" break; - case 387: -#line 1401 "./util/configparser.y" + case 391: /* server_edns_buffer_size: VAR_EDNS_BUFFER_SIZE STRING_ARG */ +#line 1425 "util/configparser.y" { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4778,11 +4152,11 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4782 "util/configparser.c" +#line 4156 "util/configparser.c" break; - case 388: -#line 1414 "./util/configparser.y" + case 392: /* server_msg_buffer_size: VAR_MSG_BUFFER_SIZE STRING_ARG */ +#line 1438 "util/configparser.y" { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4792,22 +4166,22 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4796 "util/configparser.c" +#line 4170 "util/configparser.c" break; - case 389: -#line 1425 "./util/configparser.y" + case 393: /* server_msg_cache_size: VAR_MSG_CACHE_SIZE STRING_ARG */ +#line 1449 "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 4807 "util/configparser.c" +#line 4181 "util/configparser.c" break; - case 390: -#line 1433 "./util/configparser.y" + case 394: /* server_msg_cache_slabs: VAR_MSG_CACHE_SLABS STRING_ARG */ +#line 1457 "util/configparser.y" { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4819,11 +4193,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4823 "util/configparser.c" +#line 4197 "util/configparser.c" break; - case 391: -#line 1446 "./util/configparser.y" + case 395: /* server_num_queries_per_thread: VAR_NUM_QUERIES_PER_THREAD STRING_ARG */ +#line 1470 "util/configparser.y" { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4831,11 +4205,11 @@ yyreduce: else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4835 "util/configparser.c" +#line 4209 "util/configparser.c" break; - case 392: -#line 1455 "./util/configparser.y" + case 396: /* server_jostle_timeout: VAR_JOSTLE_TIMEOUT STRING_ARG */ +#line 1479 "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) @@ -4843,11 +4217,11 @@ yyreduce: else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4847 "util/configparser.c" +#line 4221 "util/configparser.c" break; - case 393: -#line 1464 "./util/configparser.y" + case 397: /* server_delay_close: VAR_DELAY_CLOSE STRING_ARG */ +#line 1488 "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) @@ -4855,11 +4229,11 @@ yyreduce: else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4859 "util/configparser.c" +#line 4233 "util/configparser.c" break; - case 394: -#line 1473 "./util/configparser.y" + case 398: /* server_udp_connect: VAR_UDP_CONNECT STRING_ARG */ +#line 1497 "util/configparser.y" { OUTYY(("P(server_udp_connect:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4867,11 +4241,11 @@ yyreduce: else cfg_parser->cfg->udp_connect = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4871 "util/configparser.c" +#line 4245 "util/configparser.c" break; - case 395: -#line 1482 "./util/configparser.y" + case 399: /* server_unblock_lan_zones: VAR_UNBLOCK_LAN_ZONES STRING_ARG */ +#line 1506 "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) @@ -4880,11 +4254,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4884 "util/configparser.c" +#line 4258 "util/configparser.c" break; - case 396: -#line 1492 "./util/configparser.y" + case 400: /* server_insecure_lan_zones: VAR_INSECURE_LAN_ZONES STRING_ARG */ +#line 1516 "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) @@ -4893,22 +4267,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4897 "util/configparser.c" +#line 4271 "util/configparser.c" break; - case 397: -#line 1502 "./util/configparser.y" + case 401: /* server_rrset_cache_size: VAR_RRSET_CACHE_SIZE STRING_ARG */ +#line 1526 "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 4908 "util/configparser.c" +#line 4282 "util/configparser.c" break; - case 398: -#line 1510 "./util/configparser.y" + case 402: /* server_rrset_cache_slabs: VAR_RRSET_CACHE_SLABS STRING_ARG */ +#line 1534 "util/configparser.y" { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4920,11 +4294,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4924 "util/configparser.c" +#line 4298 "util/configparser.c" break; - case 399: -#line 1523 "./util/configparser.y" + case 403: /* server_infra_host_ttl: VAR_INFRA_HOST_TTL STRING_ARG */ +#line 1547 "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) @@ -4932,22 +4306,22 @@ yyreduce: else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4936 "util/configparser.c" +#line 4310 "util/configparser.c" break; - case 400: -#line 1532 "./util/configparser.y" + case 404: /* server_infra_lame_ttl: VAR_INFRA_LAME_TTL STRING_ARG */ +#line 1556 "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 4947 "util/configparser.c" +#line 4321 "util/configparser.c" break; - case 401: -#line 1540 "./util/configparser.y" + case 405: /* server_infra_cache_numhosts: VAR_INFRA_CACHE_NUMHOSTS STRING_ARG */ +#line 1564 "util/configparser.y" { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4955,22 +4329,22 @@ yyreduce: else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4959 "util/configparser.c" +#line 4333 "util/configparser.c" break; - case 402: -#line 1549 "./util/configparser.y" + case 406: /* server_infra_cache_lame_size: VAR_INFRA_CACHE_LAME_SIZE STRING_ARG */ +#line 1573 "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 4970 "util/configparser.c" +#line 4344 "util/configparser.c" break; - case 403: -#line 1557 "./util/configparser.y" + case 407: /* server_infra_cache_slabs: VAR_INFRA_CACHE_SLABS STRING_ARG */ +#line 1581 "util/configparser.y" { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4982,11 +4356,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4986 "util/configparser.c" +#line 4360 "util/configparser.c" break; - case 404: -#line 1570 "./util/configparser.y" + case 408: /* server_infra_cache_min_rtt: VAR_INFRA_CACHE_MIN_RTT STRING_ARG */ +#line 1594 "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) @@ -4994,11 +4368,11 @@ yyreduce: else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4998 "util/configparser.c" +#line 4372 "util/configparser.c" break; - case 405: -#line 1579 "./util/configparser.y" + case 409: /* server_infra_keep_probing: VAR_INFRA_KEEP_PROBING STRING_ARG */ +#line 1603 "util/configparser.y" { OUTYY(("P(server_infra_keep_probing:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5007,21 +4381,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5011 "util/configparser.c" +#line 4385 "util/configparser.c" break; - case 406: -#line 1589 "./util/configparser.y" + case 410: /* server_target_fetch_policy: VAR_TARGET_FETCH_POLICY STRING_ARG */ +#line 1613 "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 5021 "util/configparser.c" +#line 4395 "util/configparser.c" break; - case 407: -#line 1596 "./util/configparser.y" + case 411: /* server_harden_short_bufsize: VAR_HARDEN_SHORT_BUFSIZE STRING_ARG */ +#line 1620 "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) @@ -5030,11 +4404,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5034 "util/configparser.c" +#line 4408 "util/configparser.c" break; - case 408: -#line 1606 "./util/configparser.y" + case 412: /* server_harden_large_queries: VAR_HARDEN_LARGE_QUERIES STRING_ARG */ +#line 1630 "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) @@ -5043,11 +4417,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5047 "util/configparser.c" +#line 4421 "util/configparser.c" break; - case 409: -#line 1616 "./util/configparser.y" + case 413: /* server_harden_glue: VAR_HARDEN_GLUE STRING_ARG */ +#line 1640 "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) @@ -5056,11 +4430,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5060 "util/configparser.c" +#line 4434 "util/configparser.c" break; - case 410: -#line 1626 "./util/configparser.y" + case 414: /* server_harden_dnssec_stripped: VAR_HARDEN_DNSSEC_STRIPPED STRING_ARG */ +#line 1650 "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) @@ -5069,11 +4443,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5073 "util/configparser.c" +#line 4447 "util/configparser.c" break; - case 411: -#line 1636 "./util/configparser.y" + case 415: /* server_harden_below_nxdomain: VAR_HARDEN_BELOW_NXDOMAIN STRING_ARG */ +#line 1660 "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) @@ -5082,11 +4456,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5086 "util/configparser.c" +#line 4460 "util/configparser.c" break; - case 412: -#line 1646 "./util/configparser.y" + case 416: /* server_harden_referral_path: VAR_HARDEN_REFERRAL_PATH STRING_ARG */ +#line 1670 "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) @@ -5095,11 +4469,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5099 "util/configparser.c" +#line 4473 "util/configparser.c" break; - case 413: -#line 1656 "./util/configparser.y" + case 417: /* server_harden_algo_downgrade: VAR_HARDEN_ALGO_DOWNGRADE STRING_ARG */ +#line 1680 "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) @@ -5108,11 +4482,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5112 "util/configparser.c" +#line 4486 "util/configparser.c" break; - case 414: -#line 1666 "./util/configparser.y" + case 418: /* server_use_caps_for_id: VAR_USE_CAPS_FOR_ID STRING_ARG */ +#line 1690 "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) @@ -5121,41 +4495,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5125 "util/configparser.c" +#line 4499 "util/configparser.c" break; - case 415: -#line 1676 "./util/configparser.y" + case 419: /* server_caps_whitelist: VAR_CAPS_WHITELIST STRING_ARG */ +#line 1700 "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 5135 "util/configparser.c" +#line 4509 "util/configparser.c" break; - case 416: -#line 1683 "./util/configparser.y" + case 420: /* server_private_address: VAR_PRIVATE_ADDRESS STRING_ARG */ +#line 1707 "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 5145 "util/configparser.c" +#line 4519 "util/configparser.c" break; - case 417: -#line 1690 "./util/configparser.y" + case 421: /* server_private_domain: VAR_PRIVATE_DOMAIN STRING_ARG */ +#line 1714 "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 5155 "util/configparser.c" +#line 4529 "util/configparser.c" break; - case 418: -#line 1697 "./util/configparser.y" + case 422: /* server_prefetch: VAR_PREFETCH STRING_ARG */ +#line 1721 "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) @@ -5163,11 +4537,11 @@ yyreduce: else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5167 "util/configparser.c" +#line 4541 "util/configparser.c" break; - case 419: -#line 1706 "./util/configparser.y" + case 423: /* server_prefetch_key: VAR_PREFETCH_KEY STRING_ARG */ +#line 1730 "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) @@ -5175,11 +4549,11 @@ yyreduce: else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5179 "util/configparser.c" +#line 4553 "util/configparser.c" break; - case 420: -#line 1715 "./util/configparser.y" + case 424: /* server_deny_any: VAR_DENY_ANY STRING_ARG */ +#line 1739 "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) @@ -5187,11 +4561,11 @@ yyreduce: else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5191 "util/configparser.c" +#line 4565 "util/configparser.c" break; - case 421: -#line 1724 "./util/configparser.y" + case 425: /* server_unwanted_reply_threshold: VAR_UNWANTED_REPLY_THRESHOLD STRING_ARG */ +#line 1748 "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) @@ -5199,21 +4573,21 @@ yyreduce: else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5203 "util/configparser.c" +#line 4577 "util/configparser.c" break; - case 422: -#line 1733 "./util/configparser.y" + case 426: /* server_do_not_query_address: VAR_DO_NOT_QUERY_ADDRESS STRING_ARG */ +#line 1757 "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 5213 "util/configparser.c" +#line 4587 "util/configparser.c" break; - case 423: -#line 1740 "./util/configparser.y" + case 427: /* server_do_not_query_localhost: VAR_DO_NOT_QUERY_LOCALHOST STRING_ARG */ +#line 1764 "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) @@ -5222,11 +4596,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5226 "util/configparser.c" +#line 4600 "util/configparser.c" break; - case 424: -#line 1750 "./util/configparser.y" + case 428: /* server_access_control: VAR_ACCESS_CONTROL STRING_ARG STRING_ARG */ +#line 1774 "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 && @@ -5245,21 +4619,21 @@ yyreduce: fatal_exit("out of memory adding acl"); } } -#line 5249 "util/configparser.c" +#line 4623 "util/configparser.c" break; - case 425: -#line 1770 "./util/configparser.y" + case 429: /* server_module_conf: VAR_MODULE_CONF STRING_ARG */ +#line 1794 "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 5259 "util/configparser.c" +#line 4633 "util/configparser.c" break; - case 426: -#line 1777 "./util/configparser.y" + case 430: /* server_val_override_date: VAR_VAL_OVERRIDE_DATE STRING_ARG */ +#line 1801 "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) { @@ -5276,11 +4650,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5280 "util/configparser.c" +#line 4654 "util/configparser.c" break; - case 427: -#line 1795 "./util/configparser.y" + case 431: /* server_val_sig_skew_min: VAR_VAL_SIG_SKEW_MIN STRING_ARG */ +#line 1819 "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) { @@ -5292,11 +4666,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5296 "util/configparser.c" +#line 4670 "util/configparser.c" break; - case 428: -#line 1808 "./util/configparser.y" + case 432: /* server_val_sig_skew_max: VAR_VAL_SIG_SKEW_MAX STRING_ARG */ +#line 1832 "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) { @@ -5308,11 +4682,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5312 "util/configparser.c" +#line 4686 "util/configparser.c" break; - case 429: -#line 1821 "./util/configparser.y" + case 433: /* server_cache_max_ttl: VAR_CACHE_MAX_TTL STRING_ARG */ +#line 1845 "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) @@ -5320,11 +4694,11 @@ yyreduce: else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5324 "util/configparser.c" +#line 4698 "util/configparser.c" break; - case 430: -#line 1830 "./util/configparser.y" + case 434: /* server_cache_max_negative_ttl: VAR_CACHE_MAX_NEGATIVE_TTL STRING_ARG */ +#line 1854 "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) @@ -5332,11 +4706,11 @@ yyreduce: else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5336 "util/configparser.c" +#line 4710 "util/configparser.c" break; - case 431: -#line 1839 "./util/configparser.y" + case 435: /* server_cache_min_ttl: VAR_CACHE_MIN_TTL STRING_ARG */ +#line 1863 "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) @@ -5344,11 +4718,11 @@ yyreduce: else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5348 "util/configparser.c" +#line 4722 "util/configparser.c" break; - case 432: -#line 1848 "./util/configparser.y" + case 436: /* server_bogus_ttl: VAR_BOGUS_TTL STRING_ARG */ +#line 1872 "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) @@ -5356,11 +4730,11 @@ yyreduce: else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5360 "util/configparser.c" +#line 4734 "util/configparser.c" break; - case 433: -#line 1857 "./util/configparser.y" + case 437: /* server_val_clean_additional: VAR_VAL_CLEAN_ADDITIONAL STRING_ARG */ +#line 1881 "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) @@ -5369,11 +4743,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5373 "util/configparser.c" +#line 4747 "util/configparser.c" break; - case 434: -#line 1867 "./util/configparser.y" + case 438: /* server_val_permissive_mode: VAR_VAL_PERMISSIVE_MODE STRING_ARG */ +#line 1891 "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) @@ -5382,11 +4756,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5386 "util/configparser.c" +#line 4760 "util/configparser.c" break; - case 435: -#line 1877 "./util/configparser.y" + case 439: /* server_aggressive_nsec: VAR_AGGRESSIVE_NSEC STRING_ARG */ +#line 1901 "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) @@ -5396,11 +4770,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5400 "util/configparser.c" +#line 4774 "util/configparser.c" break; - case 436: -#line 1888 "./util/configparser.y" + case 440: /* server_ignore_cd_flag: VAR_IGNORE_CD_FLAG STRING_ARG */ +#line 1912 "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) @@ -5408,11 +4782,11 @@ yyreduce: else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5412 "util/configparser.c" +#line 4786 "util/configparser.c" break; - case 437: -#line 1897 "./util/configparser.y" + case 441: /* server_serve_expired: VAR_SERVE_EXPIRED STRING_ARG */ +#line 1921 "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) @@ -5420,11 +4794,11 @@ yyreduce: else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5424 "util/configparser.c" +#line 4798 "util/configparser.c" break; - case 438: -#line 1906 "./util/configparser.y" + case 442: /* server_serve_expired_ttl: VAR_SERVE_EXPIRED_TTL STRING_ARG */ +#line 1930 "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) @@ -5432,11 +4806,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5436 "util/configparser.c" +#line 4810 "util/configparser.c" break; - case 439: -#line 1915 "./util/configparser.y" + case 443: /* server_serve_expired_ttl_reset: VAR_SERVE_EXPIRED_TTL_RESET STRING_ARG */ +#line 1939 "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) @@ -5444,11 +4818,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5448 "util/configparser.c" +#line 4822 "util/configparser.c" break; - case 440: -#line 1924 "./util/configparser.y" + case 444: /* server_serve_expired_reply_ttl: VAR_SERVE_EXPIRED_REPLY_TTL STRING_ARG */ +#line 1948 "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) @@ -5456,11 +4830,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5460 "util/configparser.c" +#line 4834 "util/configparser.c" break; - case 441: -#line 1933 "./util/configparser.y" + case 445: /* server_serve_expired_client_timeout: VAR_SERVE_EXPIRED_CLIENT_TIMEOUT STRING_ARG */ +#line 1957 "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) @@ -5468,11 +4842,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5472 "util/configparser.c" +#line 4846 "util/configparser.c" break; - case 442: -#line 1942 "./util/configparser.y" + case 446: /* server_serve_original_ttl: VAR_SERVE_ORIGINAL_TTL STRING_ARG */ +#line 1966 "util/configparser.y" { OUTYY(("P(server_serve_original_ttl:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5480,11 +4854,11 @@ yyreduce: else cfg_parser->cfg->serve_original_ttl = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5484 "util/configparser.c" +#line 4858 "util/configparser.c" break; - case 443: -#line 1951 "./util/configparser.y" + case 447: /* server_fake_dsa: VAR_FAKE_DSA STRING_ARG */ +#line 1975 "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) @@ -5496,11 +4870,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5500 "util/configparser.c" +#line 4874 "util/configparser.c" break; - case 444: -#line 1964 "./util/configparser.y" + case 448: /* server_fake_sha1: VAR_FAKE_SHA1 STRING_ARG */ +#line 1988 "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) @@ -5512,11 +4886,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5516 "util/configparser.c" +#line 4890 "util/configparser.c" break; - case 445: -#line 1977 "./util/configparser.y" + case 449: /* server_val_log_level: VAR_VAL_LOG_LEVEL STRING_ARG */ +#line 2001 "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) @@ -5524,21 +4898,21 @@ yyreduce: else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5528 "util/configparser.c" +#line 4902 "util/configparser.c" break; - case 446: -#line 1986 "./util/configparser.y" + case 450: /* server_val_nsec3_keysize_iterations: VAR_VAL_NSEC3_KEYSIZE_ITERATIONS STRING_ARG */ +#line 2010 "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 5538 "util/configparser.c" +#line 4912 "util/configparser.c" break; - case 447: -#line 1993 "./util/configparser.y" + case 451: /* server_zonemd_permissive_mode: VAR_ZONEMD_PERMISSIVE_MODE STRING_ARG */ +#line 2017 "util/configparser.y" { OUTYY(("P(server_zonemd_permissive_mode:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5546,11 +4920,11 @@ yyreduce: else cfg_parser->cfg->zonemd_permissive_mode = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5550 "util/configparser.c" +#line 4924 "util/configparser.c" break; - case 448: -#line 2002 "./util/configparser.y" + case 452: /* server_add_holddown: VAR_ADD_HOLDDOWN STRING_ARG */ +#line 2026 "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) @@ -5558,11 +4932,11 @@ yyreduce: else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5562 "util/configparser.c" +#line 4936 "util/configparser.c" break; - case 449: -#line 2011 "./util/configparser.y" + case 453: /* server_del_holddown: VAR_DEL_HOLDDOWN STRING_ARG */ +#line 2035 "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) @@ -5570,11 +4944,11 @@ yyreduce: else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5574 "util/configparser.c" +#line 4948 "util/configparser.c" break; - case 450: -#line 2020 "./util/configparser.y" + case 454: /* server_keep_missing: VAR_KEEP_MISSING STRING_ARG */ +#line 2044 "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) @@ -5582,11 +4956,11 @@ yyreduce: else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5586 "util/configparser.c" +#line 4960 "util/configparser.c" break; - case 451: -#line 2029 "./util/configparser.y" + case 455: /* server_permit_small_holddown: VAR_PERMIT_SMALL_HOLDDOWN STRING_ARG */ +#line 2053 "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) @@ -5595,22 +4969,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5599 "util/configparser.c" +#line 4973 "util/configparser.c" break; - case 452: -#line 2038 "./util/configparser.y" + case 456: /* server_key_cache_size: VAR_KEY_CACHE_SIZE STRING_ARG */ +#line 2062 "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 5610 "util/configparser.c" +#line 4984 "util/configparser.c" break; - case 453: -#line 2046 "./util/configparser.y" + case 457: /* server_key_cache_slabs: VAR_KEY_CACHE_SLABS STRING_ARG */ +#line 2070 "util/configparser.y" { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5622,22 +4996,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5626 "util/configparser.c" +#line 5000 "util/configparser.c" break; - case 454: -#line 2059 "./util/configparser.y" + case 458: /* server_neg_cache_size: VAR_NEG_CACHE_SIZE STRING_ARG */ +#line 2083 "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 5637 "util/configparser.c" +#line 5011 "util/configparser.c" break; - case 455: -#line 2067 "./util/configparser.y" + case 459: /* server_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */ +#line 2091 "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 && @@ -5681,21 +5055,21 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5685 "util/configparser.c" +#line 5059 "util/configparser.c" break; - case 456: -#line 2112 "./util/configparser.y" + case 460: /* server_local_data: VAR_LOCAL_DATA STRING_ARG */ +#line 2136 "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 5695 "util/configparser.c" +#line 5069 "util/configparser.c" break; - case 457: -#line 2119 "./util/configparser.y" + case 461: /* server_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ +#line 2143 "util/configparser.y" { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -5709,11 +5083,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5713 "util/configparser.c" +#line 5087 "util/configparser.c" break; - case 458: -#line 2134 "./util/configparser.y" + case 462: /* server_minimal_responses: VAR_MINIMAL_RESPONSES STRING_ARG */ +#line 2158 "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) @@ -5722,11 +5096,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5726 "util/configparser.c" +#line 5100 "util/configparser.c" break; - case 459: -#line 2144 "./util/configparser.y" + case 463: /* server_rrset_roundrobin: VAR_RRSET_ROUNDROBIN STRING_ARG */ +#line 2168 "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) @@ -5735,41 +5109,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5739 "util/configparser.c" +#line 5113 "util/configparser.c" break; - case 460: -#line 2154 "./util/configparser.y" + case 464: /* server_unknown_server_time_limit: VAR_UNKNOWN_SERVER_TIME_LIMIT STRING_ARG */ +#line 2178 "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 5749 "util/configparser.c" +#line 5123 "util/configparser.c" break; - case 461: -#line 2161 "./util/configparser.y" + case 465: /* server_max_udp_size: VAR_MAX_UDP_SIZE STRING_ARG */ +#line 2185 "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 5759 "util/configparser.c" +#line 5133 "util/configparser.c" break; - case 462: -#line 2168 "./util/configparser.y" + case 466: /* server_dns64_prefix: VAR_DNS64_PREFIX STRING_ARG */ +#line 2192 "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 5769 "util/configparser.c" +#line 5143 "util/configparser.c" break; - case 463: -#line 2175 "./util/configparser.y" + case 467: /* server_dns64_synthall: VAR_DNS64_SYNTHALL STRING_ARG */ +#line 2199 "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) @@ -5777,22 +5151,22 @@ yyreduce: else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5781 "util/configparser.c" +#line 5155 "util/configparser.c" break; - case 464: -#line 2184 "./util/configparser.y" + case 468: /* server_dns64_ignore_aaaa: VAR_DNS64_IGNORE_AAAA STRING_ARG */ +#line 2208 "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 5792 "util/configparser.c" +#line 5166 "util/configparser.c" break; - case 465: -#line 2192 "./util/configparser.y" + case 469: /* server_define_tag: VAR_DEFINE_TAG STRING_ARG */ +#line 2216 "util/configparser.y" { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); @@ -5805,11 +5179,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5809 "util/configparser.c" +#line 5183 "util/configparser.c" break; - case 466: -#line 2206 "./util/configparser.y" + case 470: /* server_local_zone_tag: VAR_LOCAL_ZONE_TAG STRING_ARG STRING_ARG */ +#line 2230 "util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5829,11 +5203,11 @@ yyreduce: } } } -#line 5833 "util/configparser.c" +#line 5207 "util/configparser.c" break; - case 467: -#line 2227 "./util/configparser.y" + case 471: /* server_access_control_tag: VAR_ACCESS_CONTROL_TAG STRING_ARG STRING_ARG */ +#line 2251 "util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5853,11 +5227,11 @@ yyreduce: } } } -#line 5857 "util/configparser.c" +#line 5231 "util/configparser.c" break; - case 468: -#line 2248 "./util/configparser.y" + case 472: /* server_access_control_tag_action: VAR_ACCESS_CONTROL_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG */ +#line 2272 "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, @@ -5868,11 +5242,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5872 "util/configparser.c" +#line 5246 "util/configparser.c" break; - case 469: -#line 2260 "./util/configparser.y" + case 473: /* server_access_control_tag_data: VAR_ACCESS_CONTROL_TAG_DATA STRING_ARG STRING_ARG STRING_ARG */ +#line 2284 "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, @@ -5883,11 +5257,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5887 "util/configparser.c" +#line 5261 "util/configparser.c" break; - case 470: -#line 2272 "./util/configparser.y" + case 474: /* server_local_zone_override: VAR_LOCAL_ZONE_OVERRIDE STRING_ARG STRING_ARG STRING_ARG */ +#line 2296 "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, @@ -5898,11 +5272,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5902 "util/configparser.c" +#line 5276 "util/configparser.c" break; - case 471: -#line 2284 "./util/configparser.y" + case 475: /* server_access_control_view: VAR_ACCESS_CONTROL_VIEW STRING_ARG STRING_ARG */ +#line 2308 "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, @@ -5910,11 +5284,11 @@ yyreduce: yyerror("out of memory"); } } -#line 5914 "util/configparser.c" +#line 5288 "util/configparser.c" break; - case 472: -#line 2293 "./util/configparser.y" + case 476: /* server_response_ip_tag: VAR_RESPONSE_IP_TAG STRING_ARG STRING_ARG */ +#line 2317 "util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5934,11 +5308,11 @@ yyreduce: } } } -#line 5938 "util/configparser.c" +#line 5312 "util/configparser.c" break; - case 473: -#line 2314 "./util/configparser.y" + case 477: /* server_ip_ratelimit: VAR_IP_RATELIMIT STRING_ARG */ +#line 2338 "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) @@ -5946,11 +5320,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5950 "util/configparser.c" +#line 5324 "util/configparser.c" break; - case 474: -#line 2324 "./util/configparser.y" + case 478: /* server_ratelimit: VAR_RATELIMIT STRING_ARG */ +#line 2348 "util/configparser.y" { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5958,33 +5332,33 @@ yyreduce: else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5962 "util/configparser.c" +#line 5336 "util/configparser.c" break; - case 475: -#line 2333 "./util/configparser.y" + case 479: /* server_ip_ratelimit_size: VAR_IP_RATELIMIT_SIZE STRING_ARG */ +#line 2357 "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 5973 "util/configparser.c" +#line 5347 "util/configparser.c" break; - case 476: -#line 2341 "./util/configparser.y" + case 480: /* server_ratelimit_size: VAR_RATELIMIT_SIZE STRING_ARG */ +#line 2365 "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 5984 "util/configparser.c" +#line 5358 "util/configparser.c" break; - case 477: -#line 2349 "./util/configparser.y" + case 481: /* server_ip_ratelimit_slabs: VAR_IP_RATELIMIT_SLABS STRING_ARG */ +#line 2373 "util/configparser.y" { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5996,11 +5370,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6000 "util/configparser.c" +#line 5374 "util/configparser.c" break; - case 478: -#line 2362 "./util/configparser.y" + case 482: /* server_ratelimit_slabs: VAR_RATELIMIT_SLABS STRING_ARG */ +#line 2386 "util/configparser.y" { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6012,11 +5386,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6016 "util/configparser.c" +#line 5390 "util/configparser.c" break; - case 479: -#line 2375 "./util/configparser.y" + case 483: /* server_ratelimit_for_domain: VAR_RATELIMIT_FOR_DOMAIN STRING_ARG STRING_ARG */ +#line 2399 "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) { @@ -6030,11 +5404,11 @@ yyreduce: "ratelimit-for-domain"); } } -#line 6034 "util/configparser.c" +#line 5408 "util/configparser.c" break; - case 480: -#line 2390 "./util/configparser.y" + case 484: /* server_ratelimit_below_domain: VAR_RATELIMIT_BELOW_DOMAIN STRING_ARG STRING_ARG */ +#line 2414 "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) { @@ -6048,11 +5422,11 @@ yyreduce: "ratelimit-below-domain"); } } -#line 6052 "util/configparser.c" +#line 5426 "util/configparser.c" break; - case 481: -#line 2405 "./util/configparser.y" + case 485: /* server_ip_ratelimit_factor: VAR_IP_RATELIMIT_FACTOR STRING_ARG */ +#line 2429 "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) @@ -6060,11 +5434,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6064 "util/configparser.c" +#line 5438 "util/configparser.c" break; - case 482: -#line 2414 "./util/configparser.y" + case 486: /* server_ratelimit_factor: VAR_RATELIMIT_FACTOR STRING_ARG */ +#line 2438 "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) @@ -6072,20 +5446,20 @@ yyreduce: else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6076 "util/configparser.c" +#line 5450 "util/configparser.c" break; - case 483: -#line 2423 "./util/configparser.y" + case 487: /* server_low_rtt: VAR_LOW_RTT STRING_ARG */ +#line 2447 "util/configparser.y" { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 6085 "util/configparser.c" +#line 5459 "util/configparser.c" break; - case 484: -#line 2429 "./util/configparser.y" + case 488: /* server_fast_server_num: VAR_FAST_SERVER_NUM STRING_ARG */ +#line 2453 "util/configparser.y" { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) <= 0) @@ -6093,11 +5467,11 @@ yyreduce: else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6097 "util/configparser.c" +#line 5471 "util/configparser.c" break; - case 485: -#line 2438 "./util/configparser.y" + case 489: /* server_fast_server_permil: VAR_FAST_SERVER_PERMIL STRING_ARG */ +#line 2462 "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) @@ -6105,11 +5479,11 @@ yyreduce: else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6109 "util/configparser.c" +#line 5483 "util/configparser.c" break; - case 486: -#line 2447 "./util/configparser.y" + case 490: /* server_qname_minimisation: VAR_QNAME_MINIMISATION STRING_ARG */ +#line 2471 "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) @@ -6118,11 +5492,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6122 "util/configparser.c" +#line 5496 "util/configparser.c" break; - case 487: -#line 2457 "./util/configparser.y" + case 491: /* server_qname_minimisation_strict: VAR_QNAME_MINIMISATION_STRICT STRING_ARG */ +#line 2481 "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) @@ -6131,11 +5505,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6135 "util/configparser.c" +#line 5509 "util/configparser.c" break; - case 488: -#line 2467 "./util/configparser.y" + case 492: /* server_pad_responses: VAR_PAD_RESPONSES STRING_ARG */ +#line 2491 "util/configparser.y" { OUTYY(("P(server_pad_responses:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6144,11 +5518,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6148 "util/configparser.c" +#line 5522 "util/configparser.c" break; - case 489: -#line 2477 "./util/configparser.y" + case 493: /* server_pad_responses_block_size: VAR_PAD_RESPONSES_BLOCK_SIZE STRING_ARG */ +#line 2501 "util/configparser.y" { OUTYY(("P(server_pad_responses_block_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6156,11 +5530,11 @@ yyreduce: else cfg_parser->cfg->pad_responses_block_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6160 "util/configparser.c" +#line 5534 "util/configparser.c" break; - case 490: -#line 2486 "./util/configparser.y" + case 494: /* server_pad_queries: VAR_PAD_QUERIES STRING_ARG */ +#line 2510 "util/configparser.y" { OUTYY(("P(server_pad_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6169,11 +5543,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6173 "util/configparser.c" +#line 5547 "util/configparser.c" break; - case 491: -#line 2496 "./util/configparser.y" + case 495: /* server_pad_queries_block_size: VAR_PAD_QUERIES_BLOCK_SIZE STRING_ARG */ +#line 2520 "util/configparser.y" { OUTYY(("P(server_pad_queries_block_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6181,11 +5555,11 @@ yyreduce: else cfg_parser->cfg->pad_queries_block_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6185 "util/configparser.c" +#line 5559 "util/configparser.c" break; - case 492: -#line 2505 "./util/configparser.y" + case 496: /* server_ipsecmod_enabled: VAR_IPSECMOD_ENABLED STRING_ARG */ +#line 2529 "util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); @@ -6197,11 +5571,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6201 "util/configparser.c" +#line 5575 "util/configparser.c" break; - case 493: -#line 2518 "./util/configparser.y" + case 497: /* server_ipsecmod_ignore_bogus: VAR_IPSECMOD_IGNORE_BOGUS STRING_ARG */ +#line 2542 "util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); @@ -6213,11 +5587,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6217 "util/configparser.c" +#line 5591 "util/configparser.c" break; - case 494: -#line 2531 "./util/configparser.y" + case 498: /* server_ipsecmod_hook: VAR_IPSECMOD_HOOK STRING_ARG */ +#line 2555 "util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); @@ -6228,11 +5602,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6232 "util/configparser.c" +#line 5606 "util/configparser.c" break; - case 495: -#line 2543 "./util/configparser.y" + case 499: /* server_ipsecmod_max_ttl: VAR_IPSECMOD_MAX_TTL STRING_ARG */ +#line 2567 "util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); @@ -6245,11 +5619,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6249 "util/configparser.c" +#line 5623 "util/configparser.c" break; - case 496: -#line 2557 "./util/configparser.y" + case 500: /* server_ipsecmod_whitelist: VAR_IPSECMOD_WHITELIST STRING_ARG */ +#line 2581 "util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); @@ -6260,11 +5634,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6264 "util/configparser.c" +#line 5638 "util/configparser.c" break; - case 497: -#line 2569 "./util/configparser.y" + case 501: /* server_ipsecmod_strict: VAR_IPSECMOD_STRICT STRING_ARG */ +#line 2593 "util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); @@ -6277,11 +5651,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6281 "util/configparser.c" +#line 5655 "util/configparser.c" break; - case 498: -#line 2583 "./util/configparser.y" + case 502: /* server_edns_client_string: VAR_EDNS_CLIENT_STRING STRING_ARG STRING_ARG */ +#line 2607 "util/configparser.y" { OUTYY(("P(server_edns_client_string:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert( @@ -6289,11 +5663,11 @@ yyreduce: fatal_exit("out of memory adding " "edns-client-string"); } -#line 6293 "util/configparser.c" +#line 5667 "util/configparser.c" break; - case 499: -#line 2592 "./util/configparser.y" + case 503: /* server_edns_client_string_opcode: VAR_EDNS_CLIENT_STRING_OPCODE STRING_ARG */ +#line 2616 "util/configparser.y" { OUTYY(("P(edns_client_string_opcode:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -6304,11 +5678,11 @@ yyreduce: free((yyvsp[0].str)); } -#line 6308 "util/configparser.c" +#line 5682 "util/configparser.c" break; - case 500: -#line 2604 "./util/configparser.y" + case 504: /* stub_name: VAR_NAME STRING_ARG */ +#line 2628 "util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) @@ -6317,31 +5691,31 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 6321 "util/configparser.c" +#line 5695 "util/configparser.c" break; - case 501: -#line 2614 "./util/configparser.y" + case 505: /* stub_host: VAR_STUB_HOST STRING_ARG */ +#line 2638 "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 6331 "util/configparser.c" +#line 5705 "util/configparser.c" break; - case 502: -#line 2621 "./util/configparser.y" + case 506: /* stub_addr: VAR_STUB_ADDR STRING_ARG */ +#line 2645 "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 6341 "util/configparser.c" +#line 5715 "util/configparser.c" break; - case 503: -#line 2628 "./util/configparser.y" + case 507: /* stub_first: VAR_STUB_FIRST STRING_ARG */ +#line 2652 "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) @@ -6349,11 +5723,11 @@ yyreduce: else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6353 "util/configparser.c" +#line 5727 "util/configparser.c" break; - case 504: -#line 2637 "./util/configparser.y" + case 508: /* stub_no_cache: VAR_STUB_NO_CACHE STRING_ARG */ +#line 2661 "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) @@ -6361,11 +5735,11 @@ yyreduce: else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6365 "util/configparser.c" +#line 5739 "util/configparser.c" break; - case 505: -#line 2646 "./util/configparser.y" + case 509: /* stub_ssl_upstream: VAR_STUB_SSL_UPSTREAM STRING_ARG */ +#line 2670 "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) @@ -6374,11 +5748,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6378 "util/configparser.c" +#line 5752 "util/configparser.c" break; - case 506: -#line 2656 "./util/configparser.y" + case 510: /* stub_prime: VAR_STUB_PRIME STRING_ARG */ +#line 2680 "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) @@ -6387,11 +5761,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6391 "util/configparser.c" +#line 5765 "util/configparser.c" break; - case 507: -#line 2666 "./util/configparser.y" + case 511: /* forward_name: VAR_NAME STRING_ARG */ +#line 2690 "util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) @@ -6400,31 +5774,31 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 6404 "util/configparser.c" +#line 5778 "util/configparser.c" break; - case 508: -#line 2676 "./util/configparser.y" + case 512: /* forward_host: VAR_FORWARD_HOST STRING_ARG */ +#line 2700 "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 6414 "util/configparser.c" +#line 5788 "util/configparser.c" break; - case 509: -#line 2683 "./util/configparser.y" + case 513: /* forward_addr: VAR_FORWARD_ADDR STRING_ARG */ +#line 2707 "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 6424 "util/configparser.c" +#line 5798 "util/configparser.c" break; - case 510: -#line 2690 "./util/configparser.y" + case 514: /* forward_first: VAR_FORWARD_FIRST STRING_ARG */ +#line 2714 "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) @@ -6432,11 +5806,11 @@ yyreduce: else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6436 "util/configparser.c" +#line 5810 "util/configparser.c" break; - case 511: -#line 2699 "./util/configparser.y" + case 515: /* forward_no_cache: VAR_FORWARD_NO_CACHE STRING_ARG */ +#line 2723 "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) @@ -6444,11 +5818,11 @@ yyreduce: else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6448 "util/configparser.c" +#line 5822 "util/configparser.c" break; - case 512: -#line 2708 "./util/configparser.y" + case 516: /* forward_ssl_upstream: VAR_FORWARD_SSL_UPSTREAM STRING_ARG */ +#line 2732 "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) @@ -6457,11 +5831,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6461 "util/configparser.c" +#line 5835 "util/configparser.c" break; - case 513: -#line 2718 "./util/configparser.y" + case 517: /* auth_name: VAR_NAME STRING_ARG */ +#line 2742 "util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) @@ -6470,52 +5844,52 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 6474 "util/configparser.c" +#line 5848 "util/configparser.c" break; - case 514: -#line 2728 "./util/configparser.y" + case 518: /* auth_zonefile: VAR_ZONEFILE STRING_ARG */ +#line 2752 "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 6484 "util/configparser.c" +#line 5858 "util/configparser.c" break; - case 515: -#line 2735 "./util/configparser.y" + case 519: /* auth_master: VAR_MASTER STRING_ARG */ +#line 2759 "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 6494 "util/configparser.c" +#line 5868 "util/configparser.c" break; - case 516: -#line 2742 "./util/configparser.y" + case 520: /* auth_url: VAR_URL STRING_ARG */ +#line 2766 "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 6504 "util/configparser.c" +#line 5878 "util/configparser.c" break; - case 517: -#line 2749 "./util/configparser.y" + case 521: /* auth_allow_notify: VAR_ALLOW_NOTIFY STRING_ARG */ +#line 2773 "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 6515 "util/configparser.c" +#line 5889 "util/configparser.c" break; - case 518: -#line 2757 "./util/configparser.y" + case 522: /* auth_zonemd_reject_absence: VAR_ZONEMD_REJECT_ABSENCE STRING_ARG */ +#line 2781 "util/configparser.y" { OUTYY(("P(zonemd-reject-absence:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6524,11 +5898,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6528 "util/configparser.c" +#line 5902 "util/configparser.c" break; - case 519: -#line 2767 "./util/configparser.y" + case 523: /* auth_for_downstream: VAR_FOR_DOWNSTREAM STRING_ARG */ +#line 2791 "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) @@ -6537,11 +5911,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6541 "util/configparser.c" +#line 5915 "util/configparser.c" break; - case 520: -#line 2777 "./util/configparser.y" + case 524: /* auth_for_upstream: VAR_FOR_UPSTREAM STRING_ARG */ +#line 2801 "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) @@ -6550,11 +5924,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6554 "util/configparser.c" +#line 5928 "util/configparser.c" break; - case 521: -#line 2787 "./util/configparser.y" + case 525: /* auth_fallback_enabled: VAR_FALLBACK_ENABLED STRING_ARG */ +#line 2811 "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) @@ -6563,11 +5937,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6567 "util/configparser.c" +#line 5941 "util/configparser.c" break; - case 522: -#line 2797 "./util/configparser.y" + case 526: /* view_name: VAR_NAME STRING_ARG */ +#line 2821 "util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) @@ -6576,11 +5950,11 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 6580 "util/configparser.c" +#line 5954 "util/configparser.c" break; - case 523: -#line 2807 "./util/configparser.y" + case 527: /* view_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */ +#line 2831 "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 && @@ -6618,11 +5992,11 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 6622 "util/configparser.c" +#line 5996 "util/configparser.c" break; - case 524: -#line 2846 "./util/configparser.y" + case 528: /* view_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ +#line 2870 "util/configparser.y" { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -6631,33 +6005,33 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 6635 "util/configparser.c" +#line 6009 "util/configparser.c" break; - case 525: -#line 2856 "./util/configparser.y" + case 529: /* view_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ +#line 2880 "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 6646 "util/configparser.c" +#line 6020 "util/configparser.c" break; - case 526: -#line 2864 "./util/configparser.y" + case 530: /* view_local_data: VAR_LOCAL_DATA STRING_ARG */ +#line 2888 "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 6657 "util/configparser.c" +#line 6031 "util/configparser.c" break; - case 527: -#line 2872 "./util/configparser.y" + case 531: /* view_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ +#line 2896 "util/configparser.y" { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -6671,11 +6045,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 6675 "util/configparser.c" +#line 6049 "util/configparser.c" break; - case 528: -#line 2887 "./util/configparser.y" + case 532: /* view_first: VAR_VIEW_FIRST STRING_ARG */ +#line 2911 "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) @@ -6683,19 +6057,19 @@ yyreduce: else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6687 "util/configparser.c" +#line 6061 "util/configparser.c" break; - case 529: -#line 2896 "./util/configparser.y" + case 533: /* rcstart: VAR_REMOTE_CONTROL */ +#line 2920 "util/configparser.y" { OUTYY(("\nP(remote-control:)\n")); } -#line 6695 "util/configparser.c" +#line 6069 "util/configparser.c" break; - case 540: -#line 2907 "./util/configparser.y" + case 544: /* rc_control_enable: VAR_CONTROL_ENABLE STRING_ARG */ +#line 2931 "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) @@ -6704,11 +6078,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6708 "util/configparser.c" +#line 6082 "util/configparser.c" break; - case 541: -#line 2917 "./util/configparser.y" + case 545: /* rc_control_port: VAR_CONTROL_PORT STRING_ARG */ +#line 2941 "util/configparser.y" { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6716,79 +6090,79 @@ yyreduce: else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6720 "util/configparser.c" +#line 6094 "util/configparser.c" break; - case 542: -#line 2926 "./util/configparser.y" + case 546: /* rc_control_interface: VAR_CONTROL_INTERFACE STRING_ARG */ +#line 2950 "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 6730 "util/configparser.c" +#line 6104 "util/configparser.c" break; - case 543: -#line 2933 "./util/configparser.y" + case 547: /* rc_control_use_cert: VAR_CONTROL_USE_CERT STRING_ARG */ +#line 2957 "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 6740 "util/configparser.c" +#line 6114 "util/configparser.c" break; - case 544: -#line 2940 "./util/configparser.y" + case 548: /* rc_server_key_file: VAR_SERVER_KEY_FILE STRING_ARG */ +#line 2964 "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 6750 "util/configparser.c" +#line 6124 "util/configparser.c" break; - case 545: -#line 2947 "./util/configparser.y" + case 549: /* rc_server_cert_file: VAR_SERVER_CERT_FILE STRING_ARG */ +#line 2971 "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 6760 "util/configparser.c" +#line 6134 "util/configparser.c" break; - case 546: -#line 2954 "./util/configparser.y" + case 550: /* rc_control_key_file: VAR_CONTROL_KEY_FILE STRING_ARG */ +#line 2978 "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 6770 "util/configparser.c" +#line 6144 "util/configparser.c" break; - case 547: -#line 2961 "./util/configparser.y" + case 551: /* rc_control_cert_file: VAR_CONTROL_CERT_FILE STRING_ARG */ +#line 2985 "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 6780 "util/configparser.c" +#line 6154 "util/configparser.c" break; - case 548: -#line 2968 "./util/configparser.y" + case 552: /* dtstart: VAR_DNSTAP */ +#line 2992 "util/configparser.y" { OUTYY(("\nP(dnstap:)\n")); } -#line 6788 "util/configparser.c" +#line 6162 "util/configparser.c" break; - case 570: -#line 2988 "./util/configparser.y" + case 574: /* dt_dnstap_enable: VAR_DNSTAP_ENABLE STRING_ARG */ +#line 3012 "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) @@ -6796,11 +6170,11 @@ yyreduce: else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6800 "util/configparser.c" +#line 6174 "util/configparser.c" break; - case 571: -#line 2997 "./util/configparser.y" + case 575: /* dt_dnstap_bidirectional: VAR_DNSTAP_BIDIRECTIONAL STRING_ARG */ +#line 3021 "util/configparser.y" { OUTYY(("P(dt_dnstap_bidirectional:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6809,31 +6183,31 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6813 "util/configparser.c" +#line 6187 "util/configparser.c" break; - case 572: -#line 3007 "./util/configparser.y" + case 576: /* dt_dnstap_socket_path: VAR_DNSTAP_SOCKET_PATH STRING_ARG */ +#line 3031 "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 6823 "util/configparser.c" +#line 6197 "util/configparser.c" break; - case 573: -#line 3014 "./util/configparser.y" + case 577: /* dt_dnstap_ip: VAR_DNSTAP_IP STRING_ARG */ +#line 3038 "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 6833 "util/configparser.c" +#line 6207 "util/configparser.c" break; - case 574: -#line 3021 "./util/configparser.y" + case 578: /* dt_dnstap_tls: VAR_DNSTAP_TLS STRING_ARG */ +#line 3045 "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) @@ -6841,51 +6215,51 @@ yyreduce: else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6845 "util/configparser.c" +#line 6219 "util/configparser.c" break; - case 575: -#line 3030 "./util/configparser.y" + case 579: /* dt_dnstap_tls_server_name: VAR_DNSTAP_TLS_SERVER_NAME STRING_ARG */ +#line 3054 "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 6855 "util/configparser.c" +#line 6229 "util/configparser.c" break; - case 576: -#line 3037 "./util/configparser.y" + case 580: /* dt_dnstap_tls_cert_bundle: VAR_DNSTAP_TLS_CERT_BUNDLE STRING_ARG */ +#line 3061 "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 6865 "util/configparser.c" +#line 6239 "util/configparser.c" break; - case 577: -#line 3044 "./util/configparser.y" + case 581: /* dt_dnstap_tls_client_key_file: VAR_DNSTAP_TLS_CLIENT_KEY_FILE STRING_ARG */ +#line 3068 "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 6875 "util/configparser.c" +#line 6249 "util/configparser.c" break; - case 578: -#line 3051 "./util/configparser.y" + case 582: /* dt_dnstap_tls_client_cert_file: VAR_DNSTAP_TLS_CLIENT_CERT_FILE STRING_ARG */ +#line 3075 "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 6885 "util/configparser.c" +#line 6259 "util/configparser.c" break; - case 579: -#line 3058 "./util/configparser.y" + case 583: /* dt_dnstap_send_identity: VAR_DNSTAP_SEND_IDENTITY STRING_ARG */ +#line 3082 "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) @@ -6893,11 +6267,11 @@ yyreduce: else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6897 "util/configparser.c" +#line 6271 "util/configparser.c" break; - case 580: -#line 3067 "./util/configparser.y" + case 584: /* dt_dnstap_send_version: VAR_DNSTAP_SEND_VERSION STRING_ARG */ +#line 3091 "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) @@ -6905,31 +6279,31 @@ yyreduce: else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6909 "util/configparser.c" +#line 6283 "util/configparser.c" break; - case 581: -#line 3076 "./util/configparser.y" + case 585: /* dt_dnstap_identity: VAR_DNSTAP_IDENTITY STRING_ARG */ +#line 3100 "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 6919 "util/configparser.c" +#line 6293 "util/configparser.c" break; - case 582: -#line 3083 "./util/configparser.y" + case 586: /* dt_dnstap_version: VAR_DNSTAP_VERSION STRING_ARG */ +#line 3107 "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 6929 "util/configparser.c" +#line 6303 "util/configparser.c" break; - case 583: -#line 3090 "./util/configparser.y" + case 587: /* dt_dnstap_log_resolver_query_messages: VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES STRING_ARG */ +#line 3114 "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) @@ -6938,11 +6312,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6942 "util/configparser.c" +#line 6316 "util/configparser.c" break; - case 584: -#line 3100 "./util/configparser.y" + case 588: /* dt_dnstap_log_resolver_response_messages: VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES STRING_ARG */ +#line 3124 "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) @@ -6951,11 +6325,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6955 "util/configparser.c" +#line 6329 "util/configparser.c" break; - case 585: -#line 3110 "./util/configparser.y" + case 589: /* dt_dnstap_log_client_query_messages: VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES STRING_ARG */ +#line 3134 "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) @@ -6964,11 +6338,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6968 "util/configparser.c" +#line 6342 "util/configparser.c" break; - case 586: -#line 3120 "./util/configparser.y" + case 590: /* dt_dnstap_log_client_response_messages: VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES STRING_ARG */ +#line 3144 "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) @@ -6977,11 +6351,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6981 "util/configparser.c" +#line 6355 "util/configparser.c" break; - case 587: -#line 3130 "./util/configparser.y" + case 591: /* dt_dnstap_log_forwarder_query_messages: VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES STRING_ARG */ +#line 3154 "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) @@ -6990,11 +6364,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6994 "util/configparser.c" +#line 6368 "util/configparser.c" break; - case 588: -#line 3140 "./util/configparser.y" + case 592: /* dt_dnstap_log_forwarder_response_messages: VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES STRING_ARG */ +#line 3164 "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) @@ -7003,47 +6377,47 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7007 "util/configparser.c" +#line 6381 "util/configparser.c" break; - case 589: -#line 3150 "./util/configparser.y" + case 593: /* pythonstart: VAR_PYTHON */ +#line 3174 "util/configparser.y" { OUTYY(("\nP(python:)\n")); } -#line 7015 "util/configparser.c" +#line 6389 "util/configparser.c" break; - case 593: -#line 3159 "./util/configparser.y" + case 597: /* py_script: VAR_PYTHON_SCRIPT STRING_ARG */ +#line 3183 "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 7025 "util/configparser.c" +#line 6399 "util/configparser.c" break; - case 594: -#line 3165 "./util/configparser.y" + case 598: /* dynlibstart: VAR_DYNLIB */ +#line 3189 "util/configparser.y" { OUTYY(("\nP(dynlib:)\n")); } -#line 7033 "util/configparser.c" +#line 6407 "util/configparser.c" break; - case 598: -#line 3174 "./util/configparser.y" + case 602: /* dl_file: VAR_DYNLIB_FILE STRING_ARG */ +#line 3198 "util/configparser.y" { OUTYY(("P(dynlib-file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, (yyvsp[0].str))) yyerror("out of memory"); } -#line 7043 "util/configparser.c" +#line 6417 "util/configparser.c" break; - case 599: -#line 3180 "./util/configparser.y" + case 603: /* server_disable_dnssec_lame_check: VAR_DISABLE_DNSSEC_LAME_CHECK STRING_ARG */ +#line 3204 "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) @@ -7052,21 +6426,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7056 "util/configparser.c" +#line 6430 "util/configparser.c" break; - case 600: -#line 3190 "./util/configparser.y" + case 604: /* server_log_identity: VAR_LOG_IDENTITY STRING_ARG */ +#line 3214 "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 7066 "util/configparser.c" +#line 6440 "util/configparser.c" break; - case 601: -#line 3197 "./util/configparser.y" + case 605: /* server_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ +#line 3221 "util/configparser.y" { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -7074,30 +6448,30 @@ yyreduce: (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 7078 "util/configparser.c" +#line 6452 "util/configparser.c" break; - case 602: -#line 3206 "./util/configparser.y" + case 606: /* server_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ +#line 3230 "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 7089 "util/configparser.c" +#line 6463 "util/configparser.c" break; - case 603: -#line 3214 "./util/configparser.y" + case 607: /* dnscstart: VAR_DNSCRYPT */ +#line 3238 "util/configparser.y" { OUTYY(("\nP(dnscrypt:)\n")); } -#line 7097 "util/configparser.c" +#line 6471 "util/configparser.c" break; - case 616: -#line 3230 "./util/configparser.y" + case 620: /* dnsc_dnscrypt_enable: VAR_DNSCRYPT_ENABLE STRING_ARG */ +#line 3254 "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) @@ -7105,11 +6479,11 @@ yyreduce: else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7109 "util/configparser.c" +#line 6483 "util/configparser.c" break; - case 617: -#line 3240 "./util/configparser.y" + case 621: /* dnsc_dnscrypt_port: VAR_DNSCRYPT_PORT STRING_ARG */ +#line 3264 "util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -7117,21 +6491,21 @@ yyreduce: else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 7121 "util/configparser.c" +#line 6495 "util/configparser.c" break; - case 618: -#line 3249 "./util/configparser.y" + case 622: /* dnsc_dnscrypt_provider: VAR_DNSCRYPT_PROVIDER STRING_ARG */ +#line 3273 "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 7131 "util/configparser.c" +#line 6505 "util/configparser.c" break; - case 619: -#line 3256 "./util/configparser.y" + case 623: /* dnsc_dnscrypt_provider_cert: VAR_DNSCRYPT_PROVIDER_CERT STRING_ARG */ +#line 3280 "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))) @@ -7139,21 +6513,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 7143 "util/configparser.c" +#line 6517 "util/configparser.c" break; - case 620: -#line 3265 "./util/configparser.y" + case 624: /* dnsc_dnscrypt_provider_cert_rotated: VAR_DNSCRYPT_PROVIDER_CERT_ROTATED STRING_ARG */ +#line 3289 "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 7153 "util/configparser.c" +#line 6527 "util/configparser.c" break; - case 621: -#line 3272 "./util/configparser.y" + case 625: /* dnsc_dnscrypt_secret_key: VAR_DNSCRYPT_SECRET_KEY STRING_ARG */ +#line 3296 "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))) @@ -7161,22 +6535,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 7165 "util/configparser.c" +#line 6539 "util/configparser.c" break; - case 622: -#line 3281 "./util/configparser.y" + case 626: /* dnsc_dnscrypt_shared_secret_cache_size: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE STRING_ARG */ +#line 3305 "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 7176 "util/configparser.c" +#line 6550 "util/configparser.c" break; - case 623: -#line 3289 "./util/configparser.y" + case 627: /* dnsc_dnscrypt_shared_secret_cache_slabs: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS STRING_ARG */ +#line 3313 "util/configparser.y" { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -7188,22 +6562,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 7192 "util/configparser.c" +#line 6566 "util/configparser.c" break; - case 624: -#line 3302 "./util/configparser.y" + case 628: /* dnsc_dnscrypt_nonce_cache_size: VAR_DNSCRYPT_NONCE_CACHE_SIZE STRING_ARG */ +#line 3326 "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 7203 "util/configparser.c" +#line 6577 "util/configparser.c" break; - case 625: -#line 3310 "./util/configparser.y" + case 629: /* dnsc_dnscrypt_nonce_cache_slabs: VAR_DNSCRYPT_NONCE_CACHE_SLABS STRING_ARG */ +#line 3334 "util/configparser.y" { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -7215,19 +6589,19 @@ yyreduce: } free((yyvsp[0].str)); } -#line 7219 "util/configparser.c" +#line 6593 "util/configparser.c" break; - case 626: -#line 3323 "./util/configparser.y" + case 630: /* cachedbstart: VAR_CACHEDB */ +#line 3347 "util/configparser.y" { OUTYY(("\nP(cachedb:)\n")); } -#line 7227 "util/configparser.c" +#line 6601 "util/configparser.c" break; - case 635: -#line 3334 "./util/configparser.y" + case 639: /* cachedb_backend_name: VAR_CACHEDB_BACKEND STRING_ARG */ +#line 3358 "util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); @@ -7238,11 +6612,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7242 "util/configparser.c" +#line 6616 "util/configparser.c" break; - case 636: -#line 3346 "./util/configparser.y" + case 640: /* cachedb_secret_seed: VAR_CACHEDB_SECRETSEED STRING_ARG */ +#line 3370 "util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); @@ -7253,11 +6627,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7257 "util/configparser.c" +#line 6631 "util/configparser.c" break; - case 637: -#line 3358 "./util/configparser.y" + case 641: /* redis_server_host: VAR_CACHEDB_REDISHOST STRING_ARG */ +#line 3382 "util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); @@ -7268,11 +6642,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7272 "util/configparser.c" +#line 6646 "util/configparser.c" break; - case 638: -#line 3370 "./util/configparser.y" + case 642: /* redis_server_port: VAR_CACHEDB_REDISPORT STRING_ARG */ +#line 3394 "util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; @@ -7286,11 +6660,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 7290 "util/configparser.c" +#line 6664 "util/configparser.c" break; - case 639: -#line 3385 "./util/configparser.y" + case 643: /* redis_timeout: VAR_CACHEDB_REDISTIMEOUT STRING_ARG */ +#line 3409 "util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); @@ -7302,11 +6676,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 7306 "util/configparser.c" +#line 6680 "util/configparser.c" break; - case 640: -#line 3398 "./util/configparser.y" + case 644: /* redis_expire_records: VAR_CACHEDB_REDISEXPIRERECORDS STRING_ARG */ +#line 3422 "util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str))); @@ -7318,11 +6692,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 7322 "util/configparser.c" +#line 6696 "util/configparser.c" break; - case 641: -#line 3411 "./util/configparser.y" + case 645: /* server_tcp_connection_limit: VAR_TCP_CONNECTION_LIMIT STRING_ARG STRING_ARG */ +#line 3435 "util/configparser.y" { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) @@ -7332,19 +6706,19 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 7336 "util/configparser.c" +#line 6710 "util/configparser.c" break; - case 642: -#line 3422 "./util/configparser.y" + case 646: /* ipsetstart: VAR_IPSET */ +#line 3446 "util/configparser.y" { OUTYY(("\nP(ipset:)\n")); } -#line 7344 "util/configparser.c" +#line 6718 "util/configparser.c" break; - case 647: -#line 3431 "./util/configparser.y" + case 651: /* ipset_name_v4: VAR_IPSET_NAME_V4 STRING_ARG */ +#line 3455 "util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); @@ -7358,11 +6732,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7362 "util/configparser.c" +#line 6736 "util/configparser.c" break; - case 648: -#line 3446 "./util/configparser.y" + case 652: /* ipset_name_v6: VAR_IPSET_NAME_V6 STRING_ARG */ +#line 3470 "util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); @@ -7376,11 +6750,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7380 "util/configparser.c" +#line 6754 "util/configparser.c" break; -#line 7384 "util/configparser.c" +#line 6758 "util/configparser.c" default: break; } @@ -7540,13 +6914,13 @@ yyabortlab: yyexhaustedlab: yyerror (YY_("memory exhausted")); yyresult = 2; - /* Fall through. */ + goto yyreturn; #endif -/*-----------------------------------------------------. -| yyreturn -- parsing is finished, return the result. | -`-----------------------------------------------------*/ +/*-------------------------------------------------------. +| yyreturn -- parsing is finished, clean up and return. | +`-------------------------------------------------------*/ yyreturn: if (yychar != YYEMPTY) { @@ -7574,7 +6948,7 @@ yyreturn: return yyresult; } -#line 3460 "./util/configparser.y" +#line 3484 "util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index fcbb51ec4..58935003b 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.6.4. */ +/* A Bison parser, made by GNU Bison 3.7.6. */ /* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -16,7 +16,7 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program. If not, see . */ + 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 @@ -156,216 +156,219 @@ extern int yydebug; VAR_CONTROL_KEY_FILE = 357, /* VAR_CONTROL_KEY_FILE */ VAR_CONTROL_CERT_FILE = 358, /* VAR_CONTROL_CERT_FILE */ VAR_CONTROL_USE_CERT = 359, /* VAR_CONTROL_USE_CERT */ - VAR_EXTENDED_STATISTICS = 360, /* VAR_EXTENDED_STATISTICS */ - VAR_LOCAL_DATA_PTR = 361, /* VAR_LOCAL_DATA_PTR */ - VAR_JOSTLE_TIMEOUT = 362, /* VAR_JOSTLE_TIMEOUT */ - VAR_STUB_PRIME = 363, /* VAR_STUB_PRIME */ - VAR_UNWANTED_REPLY_THRESHOLD = 364, /* VAR_UNWANTED_REPLY_THRESHOLD */ - VAR_LOG_TIME_ASCII = 365, /* VAR_LOG_TIME_ASCII */ - VAR_DOMAIN_INSECURE = 366, /* VAR_DOMAIN_INSECURE */ - VAR_PYTHON = 367, /* VAR_PYTHON */ - VAR_PYTHON_SCRIPT = 368, /* VAR_PYTHON_SCRIPT */ - VAR_VAL_SIG_SKEW_MIN = 369, /* VAR_VAL_SIG_SKEW_MIN */ - VAR_VAL_SIG_SKEW_MAX = 370, /* VAR_VAL_SIG_SKEW_MAX */ - VAR_CACHE_MIN_TTL = 371, /* VAR_CACHE_MIN_TTL */ - VAR_VAL_LOG_LEVEL = 372, /* VAR_VAL_LOG_LEVEL */ - VAR_AUTO_TRUST_ANCHOR_FILE = 373, /* VAR_AUTO_TRUST_ANCHOR_FILE */ - VAR_KEEP_MISSING = 374, /* VAR_KEEP_MISSING */ - VAR_ADD_HOLDDOWN = 375, /* VAR_ADD_HOLDDOWN */ - VAR_DEL_HOLDDOWN = 376, /* VAR_DEL_HOLDDOWN */ - VAR_SO_RCVBUF = 377, /* VAR_SO_RCVBUF */ - VAR_EDNS_BUFFER_SIZE = 378, /* VAR_EDNS_BUFFER_SIZE */ - VAR_PREFETCH = 379, /* VAR_PREFETCH */ - VAR_PREFETCH_KEY = 380, /* VAR_PREFETCH_KEY */ - VAR_SO_SNDBUF = 381, /* VAR_SO_SNDBUF */ - VAR_SO_REUSEPORT = 382, /* VAR_SO_REUSEPORT */ - VAR_HARDEN_BELOW_NXDOMAIN = 383, /* VAR_HARDEN_BELOW_NXDOMAIN */ - VAR_IGNORE_CD_FLAG = 384, /* VAR_IGNORE_CD_FLAG */ - VAR_LOG_QUERIES = 385, /* VAR_LOG_QUERIES */ - VAR_LOG_REPLIES = 386, /* VAR_LOG_REPLIES */ - VAR_LOG_LOCAL_ACTIONS = 387, /* VAR_LOG_LOCAL_ACTIONS */ - VAR_TCP_UPSTREAM = 388, /* VAR_TCP_UPSTREAM */ - VAR_SSL_UPSTREAM = 389, /* VAR_SSL_UPSTREAM */ - VAR_SSL_SERVICE_KEY = 390, /* VAR_SSL_SERVICE_KEY */ - VAR_SSL_SERVICE_PEM = 391, /* VAR_SSL_SERVICE_PEM */ - VAR_SSL_PORT = 392, /* VAR_SSL_PORT */ - VAR_FORWARD_FIRST = 393, /* VAR_FORWARD_FIRST */ - VAR_STUB_SSL_UPSTREAM = 394, /* VAR_STUB_SSL_UPSTREAM */ - VAR_FORWARD_SSL_UPSTREAM = 395, /* VAR_FORWARD_SSL_UPSTREAM */ - VAR_TLS_CERT_BUNDLE = 396, /* VAR_TLS_CERT_BUNDLE */ - VAR_HTTPS_PORT = 397, /* VAR_HTTPS_PORT */ - VAR_HTTP_ENDPOINT = 398, /* VAR_HTTP_ENDPOINT */ - VAR_HTTP_MAX_STREAMS = 399, /* VAR_HTTP_MAX_STREAMS */ - VAR_HTTP_QUERY_BUFFER_SIZE = 400, /* VAR_HTTP_QUERY_BUFFER_SIZE */ - VAR_HTTP_RESPONSE_BUFFER_SIZE = 401, /* VAR_HTTP_RESPONSE_BUFFER_SIZE */ - VAR_HTTP_NODELAY = 402, /* VAR_HTTP_NODELAY */ - VAR_HTTP_NOTLS_DOWNSTREAM = 403, /* VAR_HTTP_NOTLS_DOWNSTREAM */ - VAR_STUB_FIRST = 404, /* VAR_STUB_FIRST */ - VAR_MINIMAL_RESPONSES = 405, /* VAR_MINIMAL_RESPONSES */ - VAR_RRSET_ROUNDROBIN = 406, /* VAR_RRSET_ROUNDROBIN */ - VAR_MAX_UDP_SIZE = 407, /* VAR_MAX_UDP_SIZE */ - VAR_DELAY_CLOSE = 408, /* VAR_DELAY_CLOSE */ - VAR_UDP_CONNECT = 409, /* VAR_UDP_CONNECT */ - VAR_UNBLOCK_LAN_ZONES = 410, /* VAR_UNBLOCK_LAN_ZONES */ - VAR_INSECURE_LAN_ZONES = 411, /* VAR_INSECURE_LAN_ZONES */ - VAR_INFRA_CACHE_MIN_RTT = 412, /* VAR_INFRA_CACHE_MIN_RTT */ - VAR_INFRA_KEEP_PROBING = 413, /* VAR_INFRA_KEEP_PROBING */ - VAR_DNS64_PREFIX = 414, /* VAR_DNS64_PREFIX */ - VAR_DNS64_SYNTHALL = 415, /* VAR_DNS64_SYNTHALL */ - VAR_DNS64_IGNORE_AAAA = 416, /* VAR_DNS64_IGNORE_AAAA */ - VAR_DNSTAP = 417, /* VAR_DNSTAP */ - VAR_DNSTAP_ENABLE = 418, /* VAR_DNSTAP_ENABLE */ - VAR_DNSTAP_SOCKET_PATH = 419, /* VAR_DNSTAP_SOCKET_PATH */ - VAR_DNSTAP_IP = 420, /* VAR_DNSTAP_IP */ - VAR_DNSTAP_TLS = 421, /* VAR_DNSTAP_TLS */ - VAR_DNSTAP_TLS_SERVER_NAME = 422, /* VAR_DNSTAP_TLS_SERVER_NAME */ - VAR_DNSTAP_TLS_CERT_BUNDLE = 423, /* VAR_DNSTAP_TLS_CERT_BUNDLE */ - VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 424, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE */ - VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 425, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE */ - VAR_DNSTAP_SEND_IDENTITY = 426, /* VAR_DNSTAP_SEND_IDENTITY */ - VAR_DNSTAP_SEND_VERSION = 427, /* VAR_DNSTAP_SEND_VERSION */ - VAR_DNSTAP_BIDIRECTIONAL = 428, /* VAR_DNSTAP_BIDIRECTIONAL */ - VAR_DNSTAP_IDENTITY = 429, /* VAR_DNSTAP_IDENTITY */ - VAR_DNSTAP_VERSION = 430, /* VAR_DNSTAP_VERSION */ - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 431, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES */ - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 432, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES */ - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 433, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES */ - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 434, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES */ - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 435, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES */ - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 436, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES */ - VAR_RESPONSE_IP_TAG = 437, /* VAR_RESPONSE_IP_TAG */ - VAR_RESPONSE_IP = 438, /* VAR_RESPONSE_IP */ - VAR_RESPONSE_IP_DATA = 439, /* VAR_RESPONSE_IP_DATA */ - VAR_HARDEN_ALGO_DOWNGRADE = 440, /* VAR_HARDEN_ALGO_DOWNGRADE */ - VAR_IP_TRANSPARENT = 441, /* VAR_IP_TRANSPARENT */ - VAR_IP_DSCP = 442, /* VAR_IP_DSCP */ - VAR_DISABLE_DNSSEC_LAME_CHECK = 443, /* VAR_DISABLE_DNSSEC_LAME_CHECK */ - VAR_IP_RATELIMIT = 444, /* VAR_IP_RATELIMIT */ - VAR_IP_RATELIMIT_SLABS = 445, /* VAR_IP_RATELIMIT_SLABS */ - VAR_IP_RATELIMIT_SIZE = 446, /* VAR_IP_RATELIMIT_SIZE */ - VAR_RATELIMIT = 447, /* VAR_RATELIMIT */ - VAR_RATELIMIT_SLABS = 448, /* VAR_RATELIMIT_SLABS */ - VAR_RATELIMIT_SIZE = 449, /* VAR_RATELIMIT_SIZE */ - VAR_RATELIMIT_FOR_DOMAIN = 450, /* VAR_RATELIMIT_FOR_DOMAIN */ - VAR_RATELIMIT_BELOW_DOMAIN = 451, /* VAR_RATELIMIT_BELOW_DOMAIN */ - VAR_IP_RATELIMIT_FACTOR = 452, /* VAR_IP_RATELIMIT_FACTOR */ - VAR_RATELIMIT_FACTOR = 453, /* VAR_RATELIMIT_FACTOR */ - VAR_SEND_CLIENT_SUBNET = 454, /* VAR_SEND_CLIENT_SUBNET */ - VAR_CLIENT_SUBNET_ZONE = 455, /* VAR_CLIENT_SUBNET_ZONE */ - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 456, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ - VAR_CLIENT_SUBNET_OPCODE = 457, /* VAR_CLIENT_SUBNET_OPCODE */ - VAR_MAX_CLIENT_SUBNET_IPV4 = 458, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ - VAR_MAX_CLIENT_SUBNET_IPV6 = 459, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ - VAR_MIN_CLIENT_SUBNET_IPV4 = 460, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ - VAR_MIN_CLIENT_SUBNET_IPV6 = 461, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ - VAR_MAX_ECS_TREE_SIZE_IPV4 = 462, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ - VAR_MAX_ECS_TREE_SIZE_IPV6 = 463, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ - VAR_CAPS_WHITELIST = 464, /* VAR_CAPS_WHITELIST */ - VAR_CACHE_MAX_NEGATIVE_TTL = 465, /* VAR_CACHE_MAX_NEGATIVE_TTL */ - VAR_PERMIT_SMALL_HOLDDOWN = 466, /* VAR_PERMIT_SMALL_HOLDDOWN */ - VAR_QNAME_MINIMISATION = 467, /* VAR_QNAME_MINIMISATION */ - VAR_QNAME_MINIMISATION_STRICT = 468, /* VAR_QNAME_MINIMISATION_STRICT */ - VAR_IP_FREEBIND = 469, /* VAR_IP_FREEBIND */ - VAR_DEFINE_TAG = 470, /* VAR_DEFINE_TAG */ - VAR_LOCAL_ZONE_TAG = 471, /* VAR_LOCAL_ZONE_TAG */ - VAR_ACCESS_CONTROL_TAG = 472, /* VAR_ACCESS_CONTROL_TAG */ - VAR_LOCAL_ZONE_OVERRIDE = 473, /* VAR_LOCAL_ZONE_OVERRIDE */ - VAR_ACCESS_CONTROL_TAG_ACTION = 474, /* VAR_ACCESS_CONTROL_TAG_ACTION */ - VAR_ACCESS_CONTROL_TAG_DATA = 475, /* VAR_ACCESS_CONTROL_TAG_DATA */ - VAR_VIEW = 476, /* VAR_VIEW */ - VAR_ACCESS_CONTROL_VIEW = 477, /* VAR_ACCESS_CONTROL_VIEW */ - VAR_VIEW_FIRST = 478, /* VAR_VIEW_FIRST */ - VAR_SERVE_EXPIRED = 479, /* VAR_SERVE_EXPIRED */ - VAR_SERVE_EXPIRED_TTL = 480, /* VAR_SERVE_EXPIRED_TTL */ - VAR_SERVE_EXPIRED_TTL_RESET = 481, /* VAR_SERVE_EXPIRED_TTL_RESET */ - VAR_SERVE_EXPIRED_REPLY_TTL = 482, /* VAR_SERVE_EXPIRED_REPLY_TTL */ - VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 483, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ - VAR_SERVE_ORIGINAL_TTL = 484, /* VAR_SERVE_ORIGINAL_TTL */ - VAR_FAKE_DSA = 485, /* VAR_FAKE_DSA */ - VAR_FAKE_SHA1 = 486, /* VAR_FAKE_SHA1 */ - VAR_LOG_IDENTITY = 487, /* VAR_LOG_IDENTITY */ - VAR_HIDE_TRUSTANCHOR = 488, /* VAR_HIDE_TRUSTANCHOR */ - VAR_TRUST_ANCHOR_SIGNALING = 489, /* VAR_TRUST_ANCHOR_SIGNALING */ - VAR_AGGRESSIVE_NSEC = 490, /* VAR_AGGRESSIVE_NSEC */ - VAR_USE_SYSTEMD = 491, /* VAR_USE_SYSTEMD */ - VAR_SHM_ENABLE = 492, /* VAR_SHM_ENABLE */ - VAR_SHM_KEY = 493, /* VAR_SHM_KEY */ - VAR_ROOT_KEY_SENTINEL = 494, /* VAR_ROOT_KEY_SENTINEL */ - VAR_DNSCRYPT = 495, /* VAR_DNSCRYPT */ - VAR_DNSCRYPT_ENABLE = 496, /* VAR_DNSCRYPT_ENABLE */ - VAR_DNSCRYPT_PORT = 497, /* VAR_DNSCRYPT_PORT */ - VAR_DNSCRYPT_PROVIDER = 498, /* VAR_DNSCRYPT_PROVIDER */ - VAR_DNSCRYPT_SECRET_KEY = 499, /* VAR_DNSCRYPT_SECRET_KEY */ - VAR_DNSCRYPT_PROVIDER_CERT = 500, /* VAR_DNSCRYPT_PROVIDER_CERT */ - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 501, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 502, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 503, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 504, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 505, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ - VAR_PAD_RESPONSES = 506, /* VAR_PAD_RESPONSES */ - VAR_PAD_RESPONSES_BLOCK_SIZE = 507, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ - VAR_PAD_QUERIES = 508, /* VAR_PAD_QUERIES */ - VAR_PAD_QUERIES_BLOCK_SIZE = 509, /* VAR_PAD_QUERIES_BLOCK_SIZE */ - VAR_IPSECMOD_ENABLED = 510, /* VAR_IPSECMOD_ENABLED */ - VAR_IPSECMOD_HOOK = 511, /* VAR_IPSECMOD_HOOK */ - VAR_IPSECMOD_IGNORE_BOGUS = 512, /* VAR_IPSECMOD_IGNORE_BOGUS */ - VAR_IPSECMOD_MAX_TTL = 513, /* VAR_IPSECMOD_MAX_TTL */ - VAR_IPSECMOD_WHITELIST = 514, /* VAR_IPSECMOD_WHITELIST */ - VAR_IPSECMOD_STRICT = 515, /* VAR_IPSECMOD_STRICT */ - VAR_CACHEDB = 516, /* VAR_CACHEDB */ - VAR_CACHEDB_BACKEND = 517, /* VAR_CACHEDB_BACKEND */ - VAR_CACHEDB_SECRETSEED = 518, /* VAR_CACHEDB_SECRETSEED */ - VAR_CACHEDB_REDISHOST = 519, /* VAR_CACHEDB_REDISHOST */ - VAR_CACHEDB_REDISPORT = 520, /* VAR_CACHEDB_REDISPORT */ - VAR_CACHEDB_REDISTIMEOUT = 521, /* VAR_CACHEDB_REDISTIMEOUT */ - VAR_CACHEDB_REDISEXPIRERECORDS = 522, /* VAR_CACHEDB_REDISEXPIRERECORDS */ - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 523, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ - VAR_FOR_UPSTREAM = 524, /* VAR_FOR_UPSTREAM */ - VAR_AUTH_ZONE = 525, /* VAR_AUTH_ZONE */ - VAR_ZONEFILE = 526, /* VAR_ZONEFILE */ - VAR_MASTER = 527, /* VAR_MASTER */ - VAR_URL = 528, /* VAR_URL */ - VAR_FOR_DOWNSTREAM = 529, /* VAR_FOR_DOWNSTREAM */ - VAR_FALLBACK_ENABLED = 530, /* VAR_FALLBACK_ENABLED */ - VAR_TLS_ADDITIONAL_PORT = 531, /* VAR_TLS_ADDITIONAL_PORT */ - VAR_LOW_RTT = 532, /* VAR_LOW_RTT */ - VAR_LOW_RTT_PERMIL = 533, /* VAR_LOW_RTT_PERMIL */ - VAR_FAST_SERVER_PERMIL = 534, /* VAR_FAST_SERVER_PERMIL */ - VAR_FAST_SERVER_NUM = 535, /* VAR_FAST_SERVER_NUM */ - VAR_ALLOW_NOTIFY = 536, /* VAR_ALLOW_NOTIFY */ - VAR_TLS_WIN_CERT = 537, /* VAR_TLS_WIN_CERT */ - VAR_TCP_CONNECTION_LIMIT = 538, /* VAR_TCP_CONNECTION_LIMIT */ - VAR_FORWARD_NO_CACHE = 539, /* VAR_FORWARD_NO_CACHE */ - VAR_STUB_NO_CACHE = 540, /* VAR_STUB_NO_CACHE */ - VAR_LOG_SERVFAIL = 541, /* VAR_LOG_SERVFAIL */ - VAR_DENY_ANY = 542, /* VAR_DENY_ANY */ - VAR_UNKNOWN_SERVER_TIME_LIMIT = 543, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ - VAR_LOG_TAG_QUERYREPLY = 544, /* VAR_LOG_TAG_QUERYREPLY */ - VAR_STREAM_WAIT_SIZE = 545, /* VAR_STREAM_WAIT_SIZE */ - VAR_TLS_CIPHERS = 546, /* VAR_TLS_CIPHERS */ - VAR_TLS_CIPHERSUITES = 547, /* VAR_TLS_CIPHERSUITES */ - VAR_TLS_USE_SNI = 548, /* VAR_TLS_USE_SNI */ - VAR_IPSET = 549, /* VAR_IPSET */ - VAR_IPSET_NAME_V4 = 550, /* VAR_IPSET_NAME_V4 */ - VAR_IPSET_NAME_V6 = 551, /* VAR_IPSET_NAME_V6 */ - VAR_TLS_SESSION_TICKET_KEYS = 552, /* VAR_TLS_SESSION_TICKET_KEYS */ - VAR_RPZ = 553, /* VAR_RPZ */ - VAR_TAGS = 554, /* VAR_TAGS */ - VAR_RPZ_ACTION_OVERRIDE = 555, /* VAR_RPZ_ACTION_OVERRIDE */ - VAR_RPZ_CNAME_OVERRIDE = 556, /* VAR_RPZ_CNAME_OVERRIDE */ - VAR_RPZ_LOG = 557, /* VAR_RPZ_LOG */ - VAR_RPZ_LOG_NAME = 558, /* VAR_RPZ_LOG_NAME */ - VAR_DYNLIB = 559, /* VAR_DYNLIB */ - VAR_DYNLIB_FILE = 560, /* VAR_DYNLIB_FILE */ - VAR_EDNS_CLIENT_STRING = 561, /* VAR_EDNS_CLIENT_STRING */ - VAR_EDNS_CLIENT_STRING_OPCODE = 562, /* VAR_EDNS_CLIENT_STRING_OPCODE */ - VAR_NSID = 563, /* VAR_NSID */ - VAR_ZONEMD_PERMISSIVE_MODE = 564, /* VAR_ZONEMD_PERMISSIVE_MODE */ - VAR_ZONEMD_REJECT_ABSENCE = 565 /* VAR_ZONEMD_REJECT_ABSENCE */ + VAR_TCP_REUSE_TIMEOUT = 360, /* VAR_TCP_REUSE_TIMEOUT */ + VAR_MAX_REUSE_TCP_QUERIES = 361, /* VAR_MAX_REUSE_TCP_QUERIES */ + VAR_EXTENDED_STATISTICS = 362, /* VAR_EXTENDED_STATISTICS */ + VAR_LOCAL_DATA_PTR = 363, /* VAR_LOCAL_DATA_PTR */ + VAR_JOSTLE_TIMEOUT = 364, /* VAR_JOSTLE_TIMEOUT */ + VAR_STUB_PRIME = 365, /* VAR_STUB_PRIME */ + VAR_UNWANTED_REPLY_THRESHOLD = 366, /* VAR_UNWANTED_REPLY_THRESHOLD */ + VAR_LOG_TIME_ASCII = 367, /* VAR_LOG_TIME_ASCII */ + VAR_DOMAIN_INSECURE = 368, /* VAR_DOMAIN_INSECURE */ + VAR_PYTHON = 369, /* VAR_PYTHON */ + VAR_PYTHON_SCRIPT = 370, /* VAR_PYTHON_SCRIPT */ + VAR_VAL_SIG_SKEW_MIN = 371, /* VAR_VAL_SIG_SKEW_MIN */ + VAR_VAL_SIG_SKEW_MAX = 372, /* VAR_VAL_SIG_SKEW_MAX */ + VAR_CACHE_MIN_TTL = 373, /* VAR_CACHE_MIN_TTL */ + VAR_VAL_LOG_LEVEL = 374, /* VAR_VAL_LOG_LEVEL */ + VAR_AUTO_TRUST_ANCHOR_FILE = 375, /* VAR_AUTO_TRUST_ANCHOR_FILE */ + VAR_KEEP_MISSING = 376, /* VAR_KEEP_MISSING */ + VAR_ADD_HOLDDOWN = 377, /* VAR_ADD_HOLDDOWN */ + VAR_DEL_HOLDDOWN = 378, /* VAR_DEL_HOLDDOWN */ + VAR_SO_RCVBUF = 379, /* VAR_SO_RCVBUF */ + VAR_EDNS_BUFFER_SIZE = 380, /* VAR_EDNS_BUFFER_SIZE */ + VAR_PREFETCH = 381, /* VAR_PREFETCH */ + VAR_PREFETCH_KEY = 382, /* VAR_PREFETCH_KEY */ + VAR_SO_SNDBUF = 383, /* VAR_SO_SNDBUF */ + VAR_SO_REUSEPORT = 384, /* VAR_SO_REUSEPORT */ + VAR_HARDEN_BELOW_NXDOMAIN = 385, /* VAR_HARDEN_BELOW_NXDOMAIN */ + VAR_IGNORE_CD_FLAG = 386, /* VAR_IGNORE_CD_FLAG */ + VAR_LOG_QUERIES = 387, /* VAR_LOG_QUERIES */ + VAR_LOG_REPLIES = 388, /* VAR_LOG_REPLIES */ + VAR_LOG_LOCAL_ACTIONS = 389, /* VAR_LOG_LOCAL_ACTIONS */ + VAR_TCP_UPSTREAM = 390, /* VAR_TCP_UPSTREAM */ + VAR_SSL_UPSTREAM = 391, /* VAR_SSL_UPSTREAM */ + VAR_SSL_SERVICE_KEY = 392, /* VAR_SSL_SERVICE_KEY */ + VAR_SSL_SERVICE_PEM = 393, /* VAR_SSL_SERVICE_PEM */ + VAR_SSL_PORT = 394, /* VAR_SSL_PORT */ + VAR_FORWARD_FIRST = 395, /* VAR_FORWARD_FIRST */ + VAR_STUB_SSL_UPSTREAM = 396, /* VAR_STUB_SSL_UPSTREAM */ + VAR_FORWARD_SSL_UPSTREAM = 397, /* VAR_FORWARD_SSL_UPSTREAM */ + VAR_TLS_CERT_BUNDLE = 398, /* VAR_TLS_CERT_BUNDLE */ + VAR_HTTPS_PORT = 399, /* VAR_HTTPS_PORT */ + VAR_HTTP_ENDPOINT = 400, /* VAR_HTTP_ENDPOINT */ + VAR_HTTP_MAX_STREAMS = 401, /* VAR_HTTP_MAX_STREAMS */ + VAR_HTTP_QUERY_BUFFER_SIZE = 402, /* VAR_HTTP_QUERY_BUFFER_SIZE */ + VAR_HTTP_RESPONSE_BUFFER_SIZE = 403, /* VAR_HTTP_RESPONSE_BUFFER_SIZE */ + VAR_HTTP_NODELAY = 404, /* VAR_HTTP_NODELAY */ + VAR_HTTP_NOTLS_DOWNSTREAM = 405, /* VAR_HTTP_NOTLS_DOWNSTREAM */ + VAR_STUB_FIRST = 406, /* VAR_STUB_FIRST */ + VAR_MINIMAL_RESPONSES = 407, /* VAR_MINIMAL_RESPONSES */ + VAR_RRSET_ROUNDROBIN = 408, /* VAR_RRSET_ROUNDROBIN */ + VAR_MAX_UDP_SIZE = 409, /* VAR_MAX_UDP_SIZE */ + VAR_DELAY_CLOSE = 410, /* VAR_DELAY_CLOSE */ + VAR_UDP_CONNECT = 411, /* VAR_UDP_CONNECT */ + VAR_UNBLOCK_LAN_ZONES = 412, /* VAR_UNBLOCK_LAN_ZONES */ + VAR_INSECURE_LAN_ZONES = 413, /* VAR_INSECURE_LAN_ZONES */ + VAR_INFRA_CACHE_MIN_RTT = 414, /* VAR_INFRA_CACHE_MIN_RTT */ + VAR_INFRA_KEEP_PROBING = 415, /* VAR_INFRA_KEEP_PROBING */ + VAR_DNS64_PREFIX = 416, /* VAR_DNS64_PREFIX */ + VAR_DNS64_SYNTHALL = 417, /* VAR_DNS64_SYNTHALL */ + VAR_DNS64_IGNORE_AAAA = 418, /* VAR_DNS64_IGNORE_AAAA */ + VAR_DNSTAP = 419, /* VAR_DNSTAP */ + VAR_DNSTAP_ENABLE = 420, /* VAR_DNSTAP_ENABLE */ + VAR_DNSTAP_SOCKET_PATH = 421, /* VAR_DNSTAP_SOCKET_PATH */ + VAR_DNSTAP_IP = 422, /* VAR_DNSTAP_IP */ + VAR_DNSTAP_TLS = 423, /* VAR_DNSTAP_TLS */ + VAR_DNSTAP_TLS_SERVER_NAME = 424, /* VAR_DNSTAP_TLS_SERVER_NAME */ + VAR_DNSTAP_TLS_CERT_BUNDLE = 425, /* VAR_DNSTAP_TLS_CERT_BUNDLE */ + VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 426, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE */ + VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 427, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE */ + VAR_DNSTAP_SEND_IDENTITY = 428, /* VAR_DNSTAP_SEND_IDENTITY */ + VAR_DNSTAP_SEND_VERSION = 429, /* VAR_DNSTAP_SEND_VERSION */ + VAR_DNSTAP_BIDIRECTIONAL = 430, /* VAR_DNSTAP_BIDIRECTIONAL */ + VAR_DNSTAP_IDENTITY = 431, /* VAR_DNSTAP_IDENTITY */ + VAR_DNSTAP_VERSION = 432, /* VAR_DNSTAP_VERSION */ + VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 433, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES */ + VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 434, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES */ + VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 435, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES */ + VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 436, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES */ + VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 437, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES */ + VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 438, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES */ + VAR_RESPONSE_IP_TAG = 439, /* VAR_RESPONSE_IP_TAG */ + VAR_RESPONSE_IP = 440, /* VAR_RESPONSE_IP */ + VAR_RESPONSE_IP_DATA = 441, /* VAR_RESPONSE_IP_DATA */ + VAR_HARDEN_ALGO_DOWNGRADE = 442, /* VAR_HARDEN_ALGO_DOWNGRADE */ + VAR_IP_TRANSPARENT = 443, /* VAR_IP_TRANSPARENT */ + VAR_IP_DSCP = 444, /* VAR_IP_DSCP */ + VAR_DISABLE_DNSSEC_LAME_CHECK = 445, /* VAR_DISABLE_DNSSEC_LAME_CHECK */ + VAR_IP_RATELIMIT = 446, /* VAR_IP_RATELIMIT */ + VAR_IP_RATELIMIT_SLABS = 447, /* VAR_IP_RATELIMIT_SLABS */ + VAR_IP_RATELIMIT_SIZE = 448, /* VAR_IP_RATELIMIT_SIZE */ + VAR_RATELIMIT = 449, /* VAR_RATELIMIT */ + VAR_RATELIMIT_SLABS = 450, /* VAR_RATELIMIT_SLABS */ + VAR_RATELIMIT_SIZE = 451, /* VAR_RATELIMIT_SIZE */ + VAR_RATELIMIT_FOR_DOMAIN = 452, /* VAR_RATELIMIT_FOR_DOMAIN */ + VAR_RATELIMIT_BELOW_DOMAIN = 453, /* VAR_RATELIMIT_BELOW_DOMAIN */ + VAR_IP_RATELIMIT_FACTOR = 454, /* VAR_IP_RATELIMIT_FACTOR */ + VAR_RATELIMIT_FACTOR = 455, /* VAR_RATELIMIT_FACTOR */ + VAR_SEND_CLIENT_SUBNET = 456, /* VAR_SEND_CLIENT_SUBNET */ + VAR_CLIENT_SUBNET_ZONE = 457, /* VAR_CLIENT_SUBNET_ZONE */ + VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 458, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ + VAR_CLIENT_SUBNET_OPCODE = 459, /* VAR_CLIENT_SUBNET_OPCODE */ + VAR_MAX_CLIENT_SUBNET_IPV4 = 460, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ + VAR_MAX_CLIENT_SUBNET_IPV6 = 461, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ + VAR_MIN_CLIENT_SUBNET_IPV4 = 462, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ + VAR_MIN_CLIENT_SUBNET_IPV6 = 463, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ + VAR_MAX_ECS_TREE_SIZE_IPV4 = 464, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ + VAR_MAX_ECS_TREE_SIZE_IPV6 = 465, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ + VAR_CAPS_WHITELIST = 466, /* VAR_CAPS_WHITELIST */ + VAR_CACHE_MAX_NEGATIVE_TTL = 467, /* VAR_CACHE_MAX_NEGATIVE_TTL */ + VAR_PERMIT_SMALL_HOLDDOWN = 468, /* VAR_PERMIT_SMALL_HOLDDOWN */ + VAR_QNAME_MINIMISATION = 469, /* VAR_QNAME_MINIMISATION */ + VAR_QNAME_MINIMISATION_STRICT = 470, /* VAR_QNAME_MINIMISATION_STRICT */ + VAR_IP_FREEBIND = 471, /* VAR_IP_FREEBIND */ + VAR_DEFINE_TAG = 472, /* VAR_DEFINE_TAG */ + VAR_LOCAL_ZONE_TAG = 473, /* VAR_LOCAL_ZONE_TAG */ + VAR_ACCESS_CONTROL_TAG = 474, /* VAR_ACCESS_CONTROL_TAG */ + VAR_LOCAL_ZONE_OVERRIDE = 475, /* VAR_LOCAL_ZONE_OVERRIDE */ + VAR_ACCESS_CONTROL_TAG_ACTION = 476, /* VAR_ACCESS_CONTROL_TAG_ACTION */ + VAR_ACCESS_CONTROL_TAG_DATA = 477, /* VAR_ACCESS_CONTROL_TAG_DATA */ + VAR_VIEW = 478, /* VAR_VIEW */ + VAR_ACCESS_CONTROL_VIEW = 479, /* VAR_ACCESS_CONTROL_VIEW */ + VAR_VIEW_FIRST = 480, /* VAR_VIEW_FIRST */ + VAR_SERVE_EXPIRED = 481, /* VAR_SERVE_EXPIRED */ + VAR_SERVE_EXPIRED_TTL = 482, /* VAR_SERVE_EXPIRED_TTL */ + VAR_SERVE_EXPIRED_TTL_RESET = 483, /* VAR_SERVE_EXPIRED_TTL_RESET */ + VAR_SERVE_EXPIRED_REPLY_TTL = 484, /* VAR_SERVE_EXPIRED_REPLY_TTL */ + VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 485, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ + VAR_SERVE_ORIGINAL_TTL = 486, /* VAR_SERVE_ORIGINAL_TTL */ + VAR_FAKE_DSA = 487, /* VAR_FAKE_DSA */ + VAR_FAKE_SHA1 = 488, /* VAR_FAKE_SHA1 */ + VAR_LOG_IDENTITY = 489, /* VAR_LOG_IDENTITY */ + VAR_HIDE_TRUSTANCHOR = 490, /* VAR_HIDE_TRUSTANCHOR */ + VAR_TRUST_ANCHOR_SIGNALING = 491, /* VAR_TRUST_ANCHOR_SIGNALING */ + VAR_AGGRESSIVE_NSEC = 492, /* VAR_AGGRESSIVE_NSEC */ + VAR_USE_SYSTEMD = 493, /* VAR_USE_SYSTEMD */ + VAR_SHM_ENABLE = 494, /* VAR_SHM_ENABLE */ + VAR_SHM_KEY = 495, /* VAR_SHM_KEY */ + VAR_ROOT_KEY_SENTINEL = 496, /* VAR_ROOT_KEY_SENTINEL */ + VAR_DNSCRYPT = 497, /* VAR_DNSCRYPT */ + VAR_DNSCRYPT_ENABLE = 498, /* VAR_DNSCRYPT_ENABLE */ + VAR_DNSCRYPT_PORT = 499, /* VAR_DNSCRYPT_PORT */ + VAR_DNSCRYPT_PROVIDER = 500, /* VAR_DNSCRYPT_PROVIDER */ + VAR_DNSCRYPT_SECRET_KEY = 501, /* VAR_DNSCRYPT_SECRET_KEY */ + VAR_DNSCRYPT_PROVIDER_CERT = 502, /* VAR_DNSCRYPT_PROVIDER_CERT */ + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 503, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 504, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 505, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 506, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 507, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ + VAR_PAD_RESPONSES = 508, /* VAR_PAD_RESPONSES */ + VAR_PAD_RESPONSES_BLOCK_SIZE = 509, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ + VAR_PAD_QUERIES = 510, /* VAR_PAD_QUERIES */ + VAR_PAD_QUERIES_BLOCK_SIZE = 511, /* VAR_PAD_QUERIES_BLOCK_SIZE */ + VAR_IPSECMOD_ENABLED = 512, /* VAR_IPSECMOD_ENABLED */ + VAR_IPSECMOD_HOOK = 513, /* VAR_IPSECMOD_HOOK */ + VAR_IPSECMOD_IGNORE_BOGUS = 514, /* VAR_IPSECMOD_IGNORE_BOGUS */ + VAR_IPSECMOD_MAX_TTL = 515, /* VAR_IPSECMOD_MAX_TTL */ + VAR_IPSECMOD_WHITELIST = 516, /* VAR_IPSECMOD_WHITELIST */ + VAR_IPSECMOD_STRICT = 517, /* VAR_IPSECMOD_STRICT */ + VAR_CACHEDB = 518, /* VAR_CACHEDB */ + VAR_CACHEDB_BACKEND = 519, /* VAR_CACHEDB_BACKEND */ + VAR_CACHEDB_SECRETSEED = 520, /* VAR_CACHEDB_SECRETSEED */ + VAR_CACHEDB_REDISHOST = 521, /* VAR_CACHEDB_REDISHOST */ + VAR_CACHEDB_REDISPORT = 522, /* VAR_CACHEDB_REDISPORT */ + VAR_CACHEDB_REDISTIMEOUT = 523, /* VAR_CACHEDB_REDISTIMEOUT */ + VAR_CACHEDB_REDISEXPIRERECORDS = 524, /* VAR_CACHEDB_REDISEXPIRERECORDS */ + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 525, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ + VAR_FOR_UPSTREAM = 526, /* VAR_FOR_UPSTREAM */ + VAR_AUTH_ZONE = 527, /* VAR_AUTH_ZONE */ + VAR_ZONEFILE = 528, /* VAR_ZONEFILE */ + VAR_MASTER = 529, /* VAR_MASTER */ + VAR_URL = 530, /* VAR_URL */ + VAR_FOR_DOWNSTREAM = 531, /* VAR_FOR_DOWNSTREAM */ + VAR_FALLBACK_ENABLED = 532, /* VAR_FALLBACK_ENABLED */ + VAR_TLS_ADDITIONAL_PORT = 533, /* VAR_TLS_ADDITIONAL_PORT */ + VAR_LOW_RTT = 534, /* VAR_LOW_RTT */ + VAR_LOW_RTT_PERMIL = 535, /* VAR_LOW_RTT_PERMIL */ + VAR_FAST_SERVER_PERMIL = 536, /* VAR_FAST_SERVER_PERMIL */ + VAR_FAST_SERVER_NUM = 537, /* VAR_FAST_SERVER_NUM */ + VAR_ALLOW_NOTIFY = 538, /* VAR_ALLOW_NOTIFY */ + VAR_TLS_WIN_CERT = 539, /* VAR_TLS_WIN_CERT */ + VAR_TCP_CONNECTION_LIMIT = 540, /* VAR_TCP_CONNECTION_LIMIT */ + VAR_FORWARD_NO_CACHE = 541, /* VAR_FORWARD_NO_CACHE */ + VAR_STUB_NO_CACHE = 542, /* VAR_STUB_NO_CACHE */ + VAR_LOG_SERVFAIL = 543, /* VAR_LOG_SERVFAIL */ + VAR_DENY_ANY = 544, /* VAR_DENY_ANY */ + VAR_UNKNOWN_SERVER_TIME_LIMIT = 545, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ + VAR_LOG_TAG_QUERYREPLY = 546, /* VAR_LOG_TAG_QUERYREPLY */ + VAR_STREAM_WAIT_SIZE = 547, /* VAR_STREAM_WAIT_SIZE */ + VAR_TLS_CIPHERS = 548, /* VAR_TLS_CIPHERS */ + VAR_TLS_CIPHERSUITES = 549, /* VAR_TLS_CIPHERSUITES */ + VAR_TLS_USE_SNI = 550, /* VAR_TLS_USE_SNI */ + VAR_IPSET = 551, /* VAR_IPSET */ + VAR_IPSET_NAME_V4 = 552, /* VAR_IPSET_NAME_V4 */ + VAR_IPSET_NAME_V6 = 553, /* VAR_IPSET_NAME_V6 */ + VAR_TLS_SESSION_TICKET_KEYS = 554, /* VAR_TLS_SESSION_TICKET_KEYS */ + VAR_RPZ = 555, /* VAR_RPZ */ + VAR_TAGS = 556, /* VAR_TAGS */ + VAR_RPZ_ACTION_OVERRIDE = 557, /* VAR_RPZ_ACTION_OVERRIDE */ + VAR_RPZ_CNAME_OVERRIDE = 558, /* VAR_RPZ_CNAME_OVERRIDE */ + VAR_RPZ_LOG = 559, /* VAR_RPZ_LOG */ + VAR_RPZ_LOG_NAME = 560, /* VAR_RPZ_LOG_NAME */ + VAR_DYNLIB = 561, /* VAR_DYNLIB */ + VAR_DYNLIB_FILE = 562, /* VAR_DYNLIB_FILE */ + VAR_EDNS_CLIENT_STRING = 563, /* VAR_EDNS_CLIENT_STRING */ + VAR_EDNS_CLIENT_STRING_OPCODE = 564, /* VAR_EDNS_CLIENT_STRING_OPCODE */ + VAR_NSID = 565, /* VAR_NSID */ + VAR_ZONEMD_PERMISSIVE_MODE = 566, /* VAR_ZONEMD_PERMISSIVE_MODE */ + VAR_ZONEMD_REJECT_ABSENCE = 567 /* VAR_ZONEMD_REJECT_ABSENCE */ }; typedef enum yytokentype yytoken_kind_t; #endif /* Token kinds. */ +#define YYEMPTY -2 #define YYEOF 0 #define YYerror 256 #define YYUNDEF 257 @@ -471,222 +474,224 @@ extern int yydebug; #define VAR_CONTROL_KEY_FILE 357 #define VAR_CONTROL_CERT_FILE 358 #define VAR_CONTROL_USE_CERT 359 -#define VAR_EXTENDED_STATISTICS 360 -#define VAR_LOCAL_DATA_PTR 361 -#define VAR_JOSTLE_TIMEOUT 362 -#define VAR_STUB_PRIME 363 -#define VAR_UNWANTED_REPLY_THRESHOLD 364 -#define VAR_LOG_TIME_ASCII 365 -#define VAR_DOMAIN_INSECURE 366 -#define VAR_PYTHON 367 -#define VAR_PYTHON_SCRIPT 368 -#define VAR_VAL_SIG_SKEW_MIN 369 -#define VAR_VAL_SIG_SKEW_MAX 370 -#define VAR_CACHE_MIN_TTL 371 -#define VAR_VAL_LOG_LEVEL 372 -#define VAR_AUTO_TRUST_ANCHOR_FILE 373 -#define VAR_KEEP_MISSING 374 -#define VAR_ADD_HOLDDOWN 375 -#define VAR_DEL_HOLDDOWN 376 -#define VAR_SO_RCVBUF 377 -#define VAR_EDNS_BUFFER_SIZE 378 -#define VAR_PREFETCH 379 -#define VAR_PREFETCH_KEY 380 -#define VAR_SO_SNDBUF 381 -#define VAR_SO_REUSEPORT 382 -#define VAR_HARDEN_BELOW_NXDOMAIN 383 -#define VAR_IGNORE_CD_FLAG 384 -#define VAR_LOG_QUERIES 385 -#define VAR_LOG_REPLIES 386 -#define VAR_LOG_LOCAL_ACTIONS 387 -#define VAR_TCP_UPSTREAM 388 -#define VAR_SSL_UPSTREAM 389 -#define VAR_SSL_SERVICE_KEY 390 -#define VAR_SSL_SERVICE_PEM 391 -#define VAR_SSL_PORT 392 -#define VAR_FORWARD_FIRST 393 -#define VAR_STUB_SSL_UPSTREAM 394 -#define VAR_FORWARD_SSL_UPSTREAM 395 -#define VAR_TLS_CERT_BUNDLE 396 -#define VAR_HTTPS_PORT 397 -#define VAR_HTTP_ENDPOINT 398 -#define VAR_HTTP_MAX_STREAMS 399 -#define VAR_HTTP_QUERY_BUFFER_SIZE 400 -#define VAR_HTTP_RESPONSE_BUFFER_SIZE 401 -#define VAR_HTTP_NODELAY 402 -#define VAR_HTTP_NOTLS_DOWNSTREAM 403 -#define VAR_STUB_FIRST 404 -#define VAR_MINIMAL_RESPONSES 405 -#define VAR_RRSET_ROUNDROBIN 406 -#define VAR_MAX_UDP_SIZE 407 -#define VAR_DELAY_CLOSE 408 -#define VAR_UDP_CONNECT 409 -#define VAR_UNBLOCK_LAN_ZONES 410 -#define VAR_INSECURE_LAN_ZONES 411 -#define VAR_INFRA_CACHE_MIN_RTT 412 -#define VAR_INFRA_KEEP_PROBING 413 -#define VAR_DNS64_PREFIX 414 -#define VAR_DNS64_SYNTHALL 415 -#define VAR_DNS64_IGNORE_AAAA 416 -#define VAR_DNSTAP 417 -#define VAR_DNSTAP_ENABLE 418 -#define VAR_DNSTAP_SOCKET_PATH 419 -#define VAR_DNSTAP_IP 420 -#define VAR_DNSTAP_TLS 421 -#define VAR_DNSTAP_TLS_SERVER_NAME 422 -#define VAR_DNSTAP_TLS_CERT_BUNDLE 423 -#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 424 -#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 425 -#define VAR_DNSTAP_SEND_IDENTITY 426 -#define VAR_DNSTAP_SEND_VERSION 427 -#define VAR_DNSTAP_BIDIRECTIONAL 428 -#define VAR_DNSTAP_IDENTITY 429 -#define VAR_DNSTAP_VERSION 430 -#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 431 -#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 432 -#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 433 -#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 434 -#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 435 -#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 436 -#define VAR_RESPONSE_IP_TAG 437 -#define VAR_RESPONSE_IP 438 -#define VAR_RESPONSE_IP_DATA 439 -#define VAR_HARDEN_ALGO_DOWNGRADE 440 -#define VAR_IP_TRANSPARENT 441 -#define VAR_IP_DSCP 442 -#define VAR_DISABLE_DNSSEC_LAME_CHECK 443 -#define VAR_IP_RATELIMIT 444 -#define VAR_IP_RATELIMIT_SLABS 445 -#define VAR_IP_RATELIMIT_SIZE 446 -#define VAR_RATELIMIT 447 -#define VAR_RATELIMIT_SLABS 448 -#define VAR_RATELIMIT_SIZE 449 -#define VAR_RATELIMIT_FOR_DOMAIN 450 -#define VAR_RATELIMIT_BELOW_DOMAIN 451 -#define VAR_IP_RATELIMIT_FACTOR 452 -#define VAR_RATELIMIT_FACTOR 453 -#define VAR_SEND_CLIENT_SUBNET 454 -#define VAR_CLIENT_SUBNET_ZONE 455 -#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 456 -#define VAR_CLIENT_SUBNET_OPCODE 457 -#define VAR_MAX_CLIENT_SUBNET_IPV4 458 -#define VAR_MAX_CLIENT_SUBNET_IPV6 459 -#define VAR_MIN_CLIENT_SUBNET_IPV4 460 -#define VAR_MIN_CLIENT_SUBNET_IPV6 461 -#define VAR_MAX_ECS_TREE_SIZE_IPV4 462 -#define VAR_MAX_ECS_TREE_SIZE_IPV6 463 -#define VAR_CAPS_WHITELIST 464 -#define VAR_CACHE_MAX_NEGATIVE_TTL 465 -#define VAR_PERMIT_SMALL_HOLDDOWN 466 -#define VAR_QNAME_MINIMISATION 467 -#define VAR_QNAME_MINIMISATION_STRICT 468 -#define VAR_IP_FREEBIND 469 -#define VAR_DEFINE_TAG 470 -#define VAR_LOCAL_ZONE_TAG 471 -#define VAR_ACCESS_CONTROL_TAG 472 -#define VAR_LOCAL_ZONE_OVERRIDE 473 -#define VAR_ACCESS_CONTROL_TAG_ACTION 474 -#define VAR_ACCESS_CONTROL_TAG_DATA 475 -#define VAR_VIEW 476 -#define VAR_ACCESS_CONTROL_VIEW 477 -#define VAR_VIEW_FIRST 478 -#define VAR_SERVE_EXPIRED 479 -#define VAR_SERVE_EXPIRED_TTL 480 -#define VAR_SERVE_EXPIRED_TTL_RESET 481 -#define VAR_SERVE_EXPIRED_REPLY_TTL 482 -#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 483 -#define VAR_SERVE_ORIGINAL_TTL 484 -#define VAR_FAKE_DSA 485 -#define VAR_FAKE_SHA1 486 -#define VAR_LOG_IDENTITY 487 -#define VAR_HIDE_TRUSTANCHOR 488 -#define VAR_TRUST_ANCHOR_SIGNALING 489 -#define VAR_AGGRESSIVE_NSEC 490 -#define VAR_USE_SYSTEMD 491 -#define VAR_SHM_ENABLE 492 -#define VAR_SHM_KEY 493 -#define VAR_ROOT_KEY_SENTINEL 494 -#define VAR_DNSCRYPT 495 -#define VAR_DNSCRYPT_ENABLE 496 -#define VAR_DNSCRYPT_PORT 497 -#define VAR_DNSCRYPT_PROVIDER 498 -#define VAR_DNSCRYPT_SECRET_KEY 499 -#define VAR_DNSCRYPT_PROVIDER_CERT 500 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 501 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 502 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 503 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 504 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 505 -#define VAR_PAD_RESPONSES 506 -#define VAR_PAD_RESPONSES_BLOCK_SIZE 507 -#define VAR_PAD_QUERIES 508 -#define VAR_PAD_QUERIES_BLOCK_SIZE 509 -#define VAR_IPSECMOD_ENABLED 510 -#define VAR_IPSECMOD_HOOK 511 -#define VAR_IPSECMOD_IGNORE_BOGUS 512 -#define VAR_IPSECMOD_MAX_TTL 513 -#define VAR_IPSECMOD_WHITELIST 514 -#define VAR_IPSECMOD_STRICT 515 -#define VAR_CACHEDB 516 -#define VAR_CACHEDB_BACKEND 517 -#define VAR_CACHEDB_SECRETSEED 518 -#define VAR_CACHEDB_REDISHOST 519 -#define VAR_CACHEDB_REDISPORT 520 -#define VAR_CACHEDB_REDISTIMEOUT 521 -#define VAR_CACHEDB_REDISEXPIRERECORDS 522 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 523 -#define VAR_FOR_UPSTREAM 524 -#define VAR_AUTH_ZONE 525 -#define VAR_ZONEFILE 526 -#define VAR_MASTER 527 -#define VAR_URL 528 -#define VAR_FOR_DOWNSTREAM 529 -#define VAR_FALLBACK_ENABLED 530 -#define VAR_TLS_ADDITIONAL_PORT 531 -#define VAR_LOW_RTT 532 -#define VAR_LOW_RTT_PERMIL 533 -#define VAR_FAST_SERVER_PERMIL 534 -#define VAR_FAST_SERVER_NUM 535 -#define VAR_ALLOW_NOTIFY 536 -#define VAR_TLS_WIN_CERT 537 -#define VAR_TCP_CONNECTION_LIMIT 538 -#define VAR_FORWARD_NO_CACHE 539 -#define VAR_STUB_NO_CACHE 540 -#define VAR_LOG_SERVFAIL 541 -#define VAR_DENY_ANY 542 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 543 -#define VAR_LOG_TAG_QUERYREPLY 544 -#define VAR_STREAM_WAIT_SIZE 545 -#define VAR_TLS_CIPHERS 546 -#define VAR_TLS_CIPHERSUITES 547 -#define VAR_TLS_USE_SNI 548 -#define VAR_IPSET 549 -#define VAR_IPSET_NAME_V4 550 -#define VAR_IPSET_NAME_V6 551 -#define VAR_TLS_SESSION_TICKET_KEYS 552 -#define VAR_RPZ 553 -#define VAR_TAGS 554 -#define VAR_RPZ_ACTION_OVERRIDE 555 -#define VAR_RPZ_CNAME_OVERRIDE 556 -#define VAR_RPZ_LOG 557 -#define VAR_RPZ_LOG_NAME 558 -#define VAR_DYNLIB 559 -#define VAR_DYNLIB_FILE 560 -#define VAR_EDNS_CLIENT_STRING 561 -#define VAR_EDNS_CLIENT_STRING_OPCODE 562 -#define VAR_NSID 563 -#define VAR_ZONEMD_PERMISSIVE_MODE 564 -#define VAR_ZONEMD_REJECT_ABSENCE 565 +#define VAR_TCP_REUSE_TIMEOUT 360 +#define VAR_MAX_REUSE_TCP_QUERIES 361 +#define VAR_EXTENDED_STATISTICS 362 +#define VAR_LOCAL_DATA_PTR 363 +#define VAR_JOSTLE_TIMEOUT 364 +#define VAR_STUB_PRIME 365 +#define VAR_UNWANTED_REPLY_THRESHOLD 366 +#define VAR_LOG_TIME_ASCII 367 +#define VAR_DOMAIN_INSECURE 368 +#define VAR_PYTHON 369 +#define VAR_PYTHON_SCRIPT 370 +#define VAR_VAL_SIG_SKEW_MIN 371 +#define VAR_VAL_SIG_SKEW_MAX 372 +#define VAR_CACHE_MIN_TTL 373 +#define VAR_VAL_LOG_LEVEL 374 +#define VAR_AUTO_TRUST_ANCHOR_FILE 375 +#define VAR_KEEP_MISSING 376 +#define VAR_ADD_HOLDDOWN 377 +#define VAR_DEL_HOLDDOWN 378 +#define VAR_SO_RCVBUF 379 +#define VAR_EDNS_BUFFER_SIZE 380 +#define VAR_PREFETCH 381 +#define VAR_PREFETCH_KEY 382 +#define VAR_SO_SNDBUF 383 +#define VAR_SO_REUSEPORT 384 +#define VAR_HARDEN_BELOW_NXDOMAIN 385 +#define VAR_IGNORE_CD_FLAG 386 +#define VAR_LOG_QUERIES 387 +#define VAR_LOG_REPLIES 388 +#define VAR_LOG_LOCAL_ACTIONS 389 +#define VAR_TCP_UPSTREAM 390 +#define VAR_SSL_UPSTREAM 391 +#define VAR_SSL_SERVICE_KEY 392 +#define VAR_SSL_SERVICE_PEM 393 +#define VAR_SSL_PORT 394 +#define VAR_FORWARD_FIRST 395 +#define VAR_STUB_SSL_UPSTREAM 396 +#define VAR_FORWARD_SSL_UPSTREAM 397 +#define VAR_TLS_CERT_BUNDLE 398 +#define VAR_HTTPS_PORT 399 +#define VAR_HTTP_ENDPOINT 400 +#define VAR_HTTP_MAX_STREAMS 401 +#define VAR_HTTP_QUERY_BUFFER_SIZE 402 +#define VAR_HTTP_RESPONSE_BUFFER_SIZE 403 +#define VAR_HTTP_NODELAY 404 +#define VAR_HTTP_NOTLS_DOWNSTREAM 405 +#define VAR_STUB_FIRST 406 +#define VAR_MINIMAL_RESPONSES 407 +#define VAR_RRSET_ROUNDROBIN 408 +#define VAR_MAX_UDP_SIZE 409 +#define VAR_DELAY_CLOSE 410 +#define VAR_UDP_CONNECT 411 +#define VAR_UNBLOCK_LAN_ZONES 412 +#define VAR_INSECURE_LAN_ZONES 413 +#define VAR_INFRA_CACHE_MIN_RTT 414 +#define VAR_INFRA_KEEP_PROBING 415 +#define VAR_DNS64_PREFIX 416 +#define VAR_DNS64_SYNTHALL 417 +#define VAR_DNS64_IGNORE_AAAA 418 +#define VAR_DNSTAP 419 +#define VAR_DNSTAP_ENABLE 420 +#define VAR_DNSTAP_SOCKET_PATH 421 +#define VAR_DNSTAP_IP 422 +#define VAR_DNSTAP_TLS 423 +#define VAR_DNSTAP_TLS_SERVER_NAME 424 +#define VAR_DNSTAP_TLS_CERT_BUNDLE 425 +#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 426 +#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 427 +#define VAR_DNSTAP_SEND_IDENTITY 428 +#define VAR_DNSTAP_SEND_VERSION 429 +#define VAR_DNSTAP_BIDIRECTIONAL 430 +#define VAR_DNSTAP_IDENTITY 431 +#define VAR_DNSTAP_VERSION 432 +#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 433 +#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 434 +#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 435 +#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 436 +#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 437 +#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 438 +#define VAR_RESPONSE_IP_TAG 439 +#define VAR_RESPONSE_IP 440 +#define VAR_RESPONSE_IP_DATA 441 +#define VAR_HARDEN_ALGO_DOWNGRADE 442 +#define VAR_IP_TRANSPARENT 443 +#define VAR_IP_DSCP 444 +#define VAR_DISABLE_DNSSEC_LAME_CHECK 445 +#define VAR_IP_RATELIMIT 446 +#define VAR_IP_RATELIMIT_SLABS 447 +#define VAR_IP_RATELIMIT_SIZE 448 +#define VAR_RATELIMIT 449 +#define VAR_RATELIMIT_SLABS 450 +#define VAR_RATELIMIT_SIZE 451 +#define VAR_RATELIMIT_FOR_DOMAIN 452 +#define VAR_RATELIMIT_BELOW_DOMAIN 453 +#define VAR_IP_RATELIMIT_FACTOR 454 +#define VAR_RATELIMIT_FACTOR 455 +#define VAR_SEND_CLIENT_SUBNET 456 +#define VAR_CLIENT_SUBNET_ZONE 457 +#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 458 +#define VAR_CLIENT_SUBNET_OPCODE 459 +#define VAR_MAX_CLIENT_SUBNET_IPV4 460 +#define VAR_MAX_CLIENT_SUBNET_IPV6 461 +#define VAR_MIN_CLIENT_SUBNET_IPV4 462 +#define VAR_MIN_CLIENT_SUBNET_IPV6 463 +#define VAR_MAX_ECS_TREE_SIZE_IPV4 464 +#define VAR_MAX_ECS_TREE_SIZE_IPV6 465 +#define VAR_CAPS_WHITELIST 466 +#define VAR_CACHE_MAX_NEGATIVE_TTL 467 +#define VAR_PERMIT_SMALL_HOLDDOWN 468 +#define VAR_QNAME_MINIMISATION 469 +#define VAR_QNAME_MINIMISATION_STRICT 470 +#define VAR_IP_FREEBIND 471 +#define VAR_DEFINE_TAG 472 +#define VAR_LOCAL_ZONE_TAG 473 +#define VAR_ACCESS_CONTROL_TAG 474 +#define VAR_LOCAL_ZONE_OVERRIDE 475 +#define VAR_ACCESS_CONTROL_TAG_ACTION 476 +#define VAR_ACCESS_CONTROL_TAG_DATA 477 +#define VAR_VIEW 478 +#define VAR_ACCESS_CONTROL_VIEW 479 +#define VAR_VIEW_FIRST 480 +#define VAR_SERVE_EXPIRED 481 +#define VAR_SERVE_EXPIRED_TTL 482 +#define VAR_SERVE_EXPIRED_TTL_RESET 483 +#define VAR_SERVE_EXPIRED_REPLY_TTL 484 +#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 485 +#define VAR_SERVE_ORIGINAL_TTL 486 +#define VAR_FAKE_DSA 487 +#define VAR_FAKE_SHA1 488 +#define VAR_LOG_IDENTITY 489 +#define VAR_HIDE_TRUSTANCHOR 490 +#define VAR_TRUST_ANCHOR_SIGNALING 491 +#define VAR_AGGRESSIVE_NSEC 492 +#define VAR_USE_SYSTEMD 493 +#define VAR_SHM_ENABLE 494 +#define VAR_SHM_KEY 495 +#define VAR_ROOT_KEY_SENTINEL 496 +#define VAR_DNSCRYPT 497 +#define VAR_DNSCRYPT_ENABLE 498 +#define VAR_DNSCRYPT_PORT 499 +#define VAR_DNSCRYPT_PROVIDER 500 +#define VAR_DNSCRYPT_SECRET_KEY 501 +#define VAR_DNSCRYPT_PROVIDER_CERT 502 +#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 503 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 504 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 505 +#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 506 +#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 507 +#define VAR_PAD_RESPONSES 508 +#define VAR_PAD_RESPONSES_BLOCK_SIZE 509 +#define VAR_PAD_QUERIES 510 +#define VAR_PAD_QUERIES_BLOCK_SIZE 511 +#define VAR_IPSECMOD_ENABLED 512 +#define VAR_IPSECMOD_HOOK 513 +#define VAR_IPSECMOD_IGNORE_BOGUS 514 +#define VAR_IPSECMOD_MAX_TTL 515 +#define VAR_IPSECMOD_WHITELIST 516 +#define VAR_IPSECMOD_STRICT 517 +#define VAR_CACHEDB 518 +#define VAR_CACHEDB_BACKEND 519 +#define VAR_CACHEDB_SECRETSEED 520 +#define VAR_CACHEDB_REDISHOST 521 +#define VAR_CACHEDB_REDISPORT 522 +#define VAR_CACHEDB_REDISTIMEOUT 523 +#define VAR_CACHEDB_REDISEXPIRERECORDS 524 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 525 +#define VAR_FOR_UPSTREAM 526 +#define VAR_AUTH_ZONE 527 +#define VAR_ZONEFILE 528 +#define VAR_MASTER 529 +#define VAR_URL 530 +#define VAR_FOR_DOWNSTREAM 531 +#define VAR_FALLBACK_ENABLED 532 +#define VAR_TLS_ADDITIONAL_PORT 533 +#define VAR_LOW_RTT 534 +#define VAR_LOW_RTT_PERMIL 535 +#define VAR_FAST_SERVER_PERMIL 536 +#define VAR_FAST_SERVER_NUM 537 +#define VAR_ALLOW_NOTIFY 538 +#define VAR_TLS_WIN_CERT 539 +#define VAR_TCP_CONNECTION_LIMIT 540 +#define VAR_FORWARD_NO_CACHE 541 +#define VAR_STUB_NO_CACHE 542 +#define VAR_LOG_SERVFAIL 543 +#define VAR_DENY_ANY 544 +#define VAR_UNKNOWN_SERVER_TIME_LIMIT 545 +#define VAR_LOG_TAG_QUERYREPLY 546 +#define VAR_STREAM_WAIT_SIZE 547 +#define VAR_TLS_CIPHERS 548 +#define VAR_TLS_CIPHERSUITES 549 +#define VAR_TLS_USE_SNI 550 +#define VAR_IPSET 551 +#define VAR_IPSET_NAME_V4 552 +#define VAR_IPSET_NAME_V6 553 +#define VAR_TLS_SESSION_TICKET_KEYS 554 +#define VAR_RPZ 555 +#define VAR_TAGS 556 +#define VAR_RPZ_ACTION_OVERRIDE 557 +#define VAR_RPZ_CNAME_OVERRIDE 558 +#define VAR_RPZ_LOG 559 +#define VAR_RPZ_LOG_NAME 560 +#define VAR_DYNLIB 561 +#define VAR_DYNLIB_FILE 562 +#define VAR_EDNS_CLIENT_STRING 563 +#define VAR_EDNS_CLIENT_STRING_OPCODE 564 +#define VAR_NSID 565 +#define VAR_ZONEMD_PERMISSIVE_MODE 566 +#define VAR_ZONEMD_REJECT_ABSENCE 567 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED union YYSTYPE { -#line 66 "./util/configparser.y" +#line 66 "util/configparser.y" char* str; -#line 690 "util/configparser.h" +#line 695 "util/configparser.h" }; typedef union YYSTYPE YYSTYPE; diff --git a/util/configparser.y b/util/configparser.y index 10f5ac1c4..6d82938c3 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -100,7 +100,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_PRIVATE_DOMAIN VAR_REMOTE_CONTROL VAR_CONTROL_ENABLE %token VAR_CONTROL_INTERFACE VAR_CONTROL_PORT VAR_SERVER_KEY_FILE %token VAR_SERVER_CERT_FILE VAR_CONTROL_KEY_FILE VAR_CONTROL_CERT_FILE -%token VAR_CONTROL_USE_CERT +%token VAR_CONTROL_USE_CERT VAR_TCP_REUSE_TIMEOUT VAR_MAX_REUSE_TCP_QUERIES %token VAR_EXTENDED_STATISTICS VAR_LOCAL_DATA_PTR VAR_JOSTLE_TIMEOUT %token VAR_STUB_PRIME VAR_UNWANTED_REPLY_THRESHOLD VAR_LOG_TIME_ASCII %token VAR_DOMAIN_INSECURE VAR_PYTHON VAR_PYTHON_SCRIPT VAR_VAL_SIG_SKEW_MIN @@ -301,7 +301,9 @@ content_server: server_num_threads | server_verbosity | server_port | server_tls_ciphersuites | server_tls_session_ticket_keys | server_tls_use_sni | server_edns_client_string | server_edns_client_string_opcode | server_nsid | - server_zonemd_permissive_mode + server_zonemd_permissive_mode | server_max_reuse_tcp_queries | + server_tcp_reuse_timeout + ; stubstart: VAR_STUB_ZONE { @@ -859,6 +861,28 @@ server_tcp_idle_timeout: VAR_TCP_IDLE_TIMEOUT STRING_ARG free($2); } ; +server_max_reuse_tcp_queries: VAR_MAX_REUSE_TCP_QUERIES STRING_ARG + { + OUTYY(("P(server_max_reuse_tcp_queries:%s)\n", $2)); + if(atoi($2) == 0 && strcmp($2, "0") != 0) + yyerror("number expected"); + else if (atoi($2) < 1) + cfg_parser->cfg->max_reuse_tcp_queries = 0; + else cfg_parser->cfg->max_reuse_tcp_queries = atoi($2); + free($2); + } + ; +server_tcp_reuse_timeout: VAR_TCP_REUSE_TIMEOUT STRING_ARG + { + OUTYY(("P(server_tcp_reuse_timeout:%s)\n", $2)); + if(atoi($2) == 0 && strcmp($2, "0") != 0) + yyerror("number expected"); + else if (atoi($2) < 1) + cfg_parser->cfg->tcp_reuse_timeout = 0; + else cfg_parser->cfg->tcp_reuse_timeout = atoi($2); + free($2); + } + ; server_tcp_keepalive: VAR_EDNS_TCP_KEEPALIVE STRING_ARG { OUTYY(("P(server_tcp_keepalive:%s)\n", $2)); From c71a7faddde3f5853809c44d9d68a5053ff8f802 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 22 Apr 2021 08:57:50 +0200 Subject: [PATCH 078/553] Changelog note for #466 - Merge #466 from FGasper: Support OpenSSLs that lack SSL_get0_alpn_selected. --- doc/Changelog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index af6ee1ab1..3e7148713 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +22 April 2021: Wouter + - Merge #466 from FGasper: Support OpenSSLs that lack + SSL_get0_alpn_selected. + 13 April 2021: George - Fix documentation comment for files previously residing in checkconf/. - Remove unused functions worker_handle_reply and libworker_handle_reply. From 25425d9aa74347b728bd15e1b70e821159ec0854 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 22 Apr 2021 09:00:15 +0200 Subject: [PATCH 079/553] - Fix #468: OpenSSL 1.0.1 can no longer build Unbound. --- config.h.in | 3 +++ configure | 2 +- doc/Changelog | 1 + util/net_help.c | 2 +- 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/config.h.in b/config.h.in index 103ad9f00..fd382694a 100644 --- a/config.h.in +++ b/config.h.in @@ -529,6 +529,9 @@ function. */ #undef HAVE_SSL_CTX_SET_TLSEXT_TICKET_KEY_EVP_CB +/* Define to 1 if you have the `SSL_get0_alpn_selected' function. */ +#undef HAVE_SSL_GET0_ALPN_SELECTED + /* Define to 1 if you have the `SSL_get0_peername' function. */ #undef HAVE_SSL_GET0_PEERNAME diff --git a/configure b/configure index 266691d42..f86683f76 100755 --- a/configure +++ b/configure @@ -18418,7 +18418,7 @@ done # these check_funcs need -lssl BAKLIBS="$LIBS" LIBS="-lssl $LIBS" -for ac_func in OPENSSL_init_ssl SSL_CTX_set_security_level SSL_set1_host SSL_get0_peername X509_VERIFY_PARAM_set1_host SSL_CTX_set_ciphersuites SSL_CTX_set_tlsext_ticket_key_evp_cb SSL_CTX_set_alpn_select_cb +for ac_func in OPENSSL_init_ssl SSL_CTX_set_security_level SSL_set1_host SSL_get0_peername X509_VERIFY_PARAM_set1_host SSL_CTX_set_ciphersuites SSL_CTX_set_tlsext_ticket_key_evp_cb SSL_CTX_set_alpn_select_cb SSL_get0_alpn_selected do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" diff --git a/doc/Changelog b/doc/Changelog index 3e7148713..d6e1e485a 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,7 @@ 22 April 2021: Wouter - Merge #466 from FGasper: Support OpenSSLs that lack SSL_get0_alpn_selected. + - Fix #468: OpenSSL 1.0.1 can no longer build Unbound. 13 April 2021: George - Fix documentation comment for files previously residing in checkconf/. diff --git a/util/net_help.c b/util/net_help.c index bcc8d34bd..06bc1f5dd 100644 --- a/util/net_help.c +++ b/util/net_help.c @@ -887,7 +887,7 @@ log_cert(unsigned level, const char* str, void* cert) } #endif /* HAVE_SSL */ -#if defined(HAVE_SSL) && defined(HAVE_NGHTTP2) +#if defined(HAVE_SSL) && defined(HAVE_NGHTTP2) && defined(HAVE_SSL_CTX_SET_ALPN_SELECT_CB) static int alpn_select_cb(SSL* ATTR_UNUSED(ssl), const unsigned char** out, unsigned char* outlen, const unsigned char* in, unsigned int inlen, void* ATTR_UNUSED(arg)) From a45a7efe694d7524d2d37070b5266453004bd4a1 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 22 Apr 2021 09:05:43 +0200 Subject: [PATCH 080/553] - Further fix for #468: detect SSL_CTX_set_alpn_protos for build with OpenSSL 1.0.1. --- config.h.in | 3 +++ configure | 2 +- configure.ac | 2 +- doc/Changelog | 2 ++ testcode/dohclient.c | 2 ++ 5 files changed, 9 insertions(+), 2 deletions(-) diff --git a/config.h.in b/config.h.in index fd382694a..a843d703d 100644 --- a/config.h.in +++ b/config.h.in @@ -516,6 +516,9 @@ /* Define if you have the SSL libraries installed. */ #undef HAVE_SSL +/* Define to 1 if you have the `SSL_CTX_set_alpn_protos' function. */ +#undef HAVE_SSL_CTX_SET_ALPN_PROTOS + /* Define to 1 if you have the `SSL_CTX_set_alpn_select_cb' function. */ #undef HAVE_SSL_CTX_SET_ALPN_SELECT_CB diff --git a/configure b/configure index f86683f76..30e061f35 100755 --- a/configure +++ b/configure @@ -18418,7 +18418,7 @@ done # these check_funcs need -lssl BAKLIBS="$LIBS" LIBS="-lssl $LIBS" -for ac_func in OPENSSL_init_ssl SSL_CTX_set_security_level SSL_set1_host SSL_get0_peername X509_VERIFY_PARAM_set1_host SSL_CTX_set_ciphersuites SSL_CTX_set_tlsext_ticket_key_evp_cb SSL_CTX_set_alpn_select_cb SSL_get0_alpn_selected +for ac_func in OPENSSL_init_ssl SSL_CTX_set_security_level SSL_set1_host SSL_get0_peername X509_VERIFY_PARAM_set1_host SSL_CTX_set_ciphersuites SSL_CTX_set_tlsext_ticket_key_evp_cb SSL_CTX_set_alpn_select_cb SSL_get0_alpn_selected SSL_CTX_set_alpn_protos do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" diff --git a/configure.ac b/configure.ac index ba5bf0058..14d9b02c2 100644 --- a/configure.ac +++ b/configure.ac @@ -859,7 +859,7 @@ AC_CHECK_FUNCS([OPENSSL_config EVP_sha1 EVP_sha256 EVP_sha512 FIPS_mode EVP_MD_C # these check_funcs need -lssl BAKLIBS="$LIBS" LIBS="-lssl $LIBS" -AC_CHECK_FUNCS([OPENSSL_init_ssl SSL_CTX_set_security_level SSL_set1_host SSL_get0_peername X509_VERIFY_PARAM_set1_host SSL_CTX_set_ciphersuites SSL_CTX_set_tlsext_ticket_key_evp_cb SSL_CTX_set_alpn_select_cb SSL_get0_alpn_selected]) +AC_CHECK_FUNCS([OPENSSL_init_ssl SSL_CTX_set_security_level SSL_set1_host SSL_get0_peername X509_VERIFY_PARAM_set1_host SSL_CTX_set_ciphersuites SSL_CTX_set_tlsext_ticket_key_evp_cb SSL_CTX_set_alpn_select_cb SSL_get0_alpn_selected SSL_CTX_set_alpn_protos]) LIBS="$BAKLIBS" AC_CHECK_DECLS([SSL_COMP_get_compression_methods,sk_SSL_COMP_pop_free,SSL_CTX_set_ecdh_auto], [], [], [ diff --git a/doc/Changelog b/doc/Changelog index d6e1e485a..793b40cf1 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -2,6 +2,8 @@ - Merge #466 from FGasper: Support OpenSSLs that lack SSL_get0_alpn_selected. - Fix #468: OpenSSL 1.0.1 can no longer build Unbound. + - Further fix for #468: detect SSL_CTX_set_alpn_protos for build with + OpenSSL 1.0.1. 13 April 2021: George - Fix documentation comment for files previously residing in checkconf/. diff --git a/testcode/dohclient.c b/testcode/dohclient.c index 263418049..b00bb15e0 100644 --- a/testcode/dohclient.c +++ b/testcode/dohclient.c @@ -501,7 +501,9 @@ run(struct http2_session* h2_session, int port, int no_tls, int count, char** q) if(!no_tls) { ctx = connect_sslctx_create(NULL, NULL, NULL, 0); if(!ctx) fatal_exit("cannot create ssl ctx"); +#ifdef HAVE_SSL_CTX_SET_ALPN_PROTOS SSL_CTX_set_alpn_protos(ctx, (const unsigned char *)"\x02h2", 3); +#endif ssl = outgoing_ssl_fd(ctx, fd); if(!ssl) { printf("cannot create ssl\n"); From 7226d2f9f24f2047357a192ebb7be9754357fe93 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 22 Apr 2021 09:41:04 +0200 Subject: [PATCH 081/553] - Fix that testcode dohclient has OpenSSL initialisation calls. --- doc/Changelog | 1 + testcode/dohclient.c | 20 +++++++++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 793b40cf1..85eb78c2a 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -4,6 +4,7 @@ - Fix #468: OpenSSL 1.0.1 can no longer build Unbound. - Further fix for #468: detect SSL_CTX_set_alpn_protos for build with OpenSSL 1.0.1. + - Fix that testcode dohclient has OpenSSL initialisation calls. 13 April 2021: George - Fix documentation comment for files previously residing in checkconf/. diff --git a/testcode/dohclient.c b/testcode/dohclient.c index b00bb15e0..0dc039f26 100644 --- a/testcode/dohclient.c +++ b/testcode/dohclient.c @@ -622,7 +622,25 @@ int main(int argc, char** argv) return 1; } - + if(!no_tls) { +#if OPENSSL_VERSION_NUMBER < 0x10100000 || !defined(HAVE_OPENSSL_INIT_SSL) + ERR_load_SSL_strings(); +#endif +#if OPENSSL_VERSION_NUMBER < 0x10100000 || !defined(HAVE_OPENSSL_INIT_CRYPTO) +# ifndef S_SPLINT_S + OpenSSL_add_all_algorithms(); +# endif +#else + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS + | OPENSSL_INIT_ADD_ALL_DIGESTS + | OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL); +#endif +#if OPENSSL_VERSION_NUMBER < 0x10100000 || !defined(HAVE_OPENSSL_INIT_SSL) + (void)SSL_library_init(); +#else + (void)OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS, NULL); +#endif + } run(h2_session, port, no_tls, argc, argv); checklock_stop(); From 77451862f0455c532aa9f6d30f8fb429d2f3a609 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 26 Apr 2021 16:07:28 +0200 Subject: [PATCH 082/553] Changelog note for PR #470 - Merge #470 from edevil: Allow configuration of persistent TCP connections. --- doc/Changelog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 85eb78c2a..84572302d 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +26 April 2021: Wouter + - Merge #470 from edevil: Allow configuration of persistent TCP + connections. + 22 April 2021: Wouter - Merge #466 from FGasper: Support OpenSSLs that lack SSL_get0_alpn_selected. From 4604f30d704af8f2ec8101428ab4d416bbade5e0 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 28 Apr 2021 14:05:23 +0200 Subject: [PATCH 083/553] - Fix #474: always_null and others inside view. --- doc/Changelog | 3 + util/configparser.c | 2659 +++++++++++++++++++++++++++---------------- util/configparser.h | 11 +- util/configparser.y | 13 +- 4 files changed, 1686 insertions(+), 1000 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 84572302d..977a73136 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +28 April 2021: Wouter + - Fix #474: always_null and others inside view. + 26 April 2021: Wouter - Merge #470 from edevil: Allow configuration of persistent TCP connections. diff --git a/util/configparser.c b/util/configparser.c index 3faf61c5e..3acfe4452 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.7.6. */ +/* A Bison parser, made by GNU Bison 3.6.4. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -16,7 +16,7 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program. If not, see . */ + 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 @@ -45,11 +45,11 @@ define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ -/* Identify Bison output, and Bison version. */ -#define YYBISON 30706 +/* Identify Bison output. */ +#define YYBISON 1 -/* Bison version string. */ -#define YYBISON_VERSION "3.7.6" +/* Bison version. */ +#define YYBISON_VERSION "3.6.4" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -67,7 +67,7 @@ /* First part of user prologue. */ -#line 38 "util/configparser.y" +#line 38 "./util/configparser.y" #include "config.h" @@ -119,7 +119,677 @@ extern struct config_parser_state* cfg_parser; # endif # endif -#include "configparser.h" +/* Use api.header.include to #include this header + instead of duplicating it here. */ +#ifndef YY_YY_UTIL_CONFIGPARSER_H_INCLUDED +# define YY_YY_UTIL_CONFIGPARSER_H_INCLUDED +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int yydebug; +#endif + +/* Token kinds. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + enum yytokentype + { + YYEMPTY = -2, + YYEOF = 0, /* "end of file" */ + YYerror = 256, /* error */ + YYUNDEF = 257, /* "invalid token" */ + SPACE = 258, /* SPACE */ + LETTER = 259, /* LETTER */ + NEWLINE = 260, /* NEWLINE */ + COMMENT = 261, /* COMMENT */ + COLON = 262, /* COLON */ + ANY = 263, /* ANY */ + ZONESTR = 264, /* ZONESTR */ + STRING_ARG = 265, /* STRING_ARG */ + VAR_FORCE_TOPLEVEL = 266, /* VAR_FORCE_TOPLEVEL */ + VAR_SERVER = 267, /* VAR_SERVER */ + VAR_VERBOSITY = 268, /* VAR_VERBOSITY */ + VAR_NUM_THREADS = 269, /* VAR_NUM_THREADS */ + VAR_PORT = 270, /* VAR_PORT */ + VAR_OUTGOING_RANGE = 271, /* VAR_OUTGOING_RANGE */ + VAR_INTERFACE = 272, /* VAR_INTERFACE */ + VAR_PREFER_IP4 = 273, /* VAR_PREFER_IP4 */ + VAR_DO_IP4 = 274, /* VAR_DO_IP4 */ + VAR_DO_IP6 = 275, /* VAR_DO_IP6 */ + VAR_PREFER_IP6 = 276, /* VAR_PREFER_IP6 */ + VAR_DO_UDP = 277, /* VAR_DO_UDP */ + VAR_DO_TCP = 278, /* VAR_DO_TCP */ + VAR_TCP_MSS = 279, /* VAR_TCP_MSS */ + VAR_OUTGOING_TCP_MSS = 280, /* VAR_OUTGOING_TCP_MSS */ + VAR_TCP_IDLE_TIMEOUT = 281, /* VAR_TCP_IDLE_TIMEOUT */ + VAR_EDNS_TCP_KEEPALIVE = 282, /* VAR_EDNS_TCP_KEEPALIVE */ + VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 283, /* VAR_EDNS_TCP_KEEPALIVE_TIMEOUT */ + VAR_CHROOT = 284, /* VAR_CHROOT */ + VAR_USERNAME = 285, /* VAR_USERNAME */ + VAR_DIRECTORY = 286, /* VAR_DIRECTORY */ + VAR_LOGFILE = 287, /* VAR_LOGFILE */ + VAR_PIDFILE = 288, /* VAR_PIDFILE */ + VAR_MSG_CACHE_SIZE = 289, /* VAR_MSG_CACHE_SIZE */ + VAR_MSG_CACHE_SLABS = 290, /* VAR_MSG_CACHE_SLABS */ + VAR_NUM_QUERIES_PER_THREAD = 291, /* VAR_NUM_QUERIES_PER_THREAD */ + VAR_RRSET_CACHE_SIZE = 292, /* VAR_RRSET_CACHE_SIZE */ + VAR_RRSET_CACHE_SLABS = 293, /* VAR_RRSET_CACHE_SLABS */ + VAR_OUTGOING_NUM_TCP = 294, /* VAR_OUTGOING_NUM_TCP */ + VAR_INFRA_HOST_TTL = 295, /* VAR_INFRA_HOST_TTL */ + VAR_INFRA_LAME_TTL = 296, /* VAR_INFRA_LAME_TTL */ + VAR_INFRA_CACHE_SLABS = 297, /* VAR_INFRA_CACHE_SLABS */ + VAR_INFRA_CACHE_NUMHOSTS = 298, /* VAR_INFRA_CACHE_NUMHOSTS */ + VAR_INFRA_CACHE_LAME_SIZE = 299, /* VAR_INFRA_CACHE_LAME_SIZE */ + VAR_NAME = 300, /* VAR_NAME */ + VAR_STUB_ZONE = 301, /* VAR_STUB_ZONE */ + VAR_STUB_HOST = 302, /* VAR_STUB_HOST */ + VAR_STUB_ADDR = 303, /* VAR_STUB_ADDR */ + VAR_TARGET_FETCH_POLICY = 304, /* VAR_TARGET_FETCH_POLICY */ + VAR_HARDEN_SHORT_BUFSIZE = 305, /* VAR_HARDEN_SHORT_BUFSIZE */ + VAR_HARDEN_LARGE_QUERIES = 306, /* VAR_HARDEN_LARGE_QUERIES */ + VAR_FORWARD_ZONE = 307, /* VAR_FORWARD_ZONE */ + VAR_FORWARD_HOST = 308, /* VAR_FORWARD_HOST */ + VAR_FORWARD_ADDR = 309, /* VAR_FORWARD_ADDR */ + VAR_DO_NOT_QUERY_ADDRESS = 310, /* VAR_DO_NOT_QUERY_ADDRESS */ + VAR_HIDE_IDENTITY = 311, /* VAR_HIDE_IDENTITY */ + VAR_HIDE_VERSION = 312, /* VAR_HIDE_VERSION */ + VAR_IDENTITY = 313, /* VAR_IDENTITY */ + VAR_VERSION = 314, /* VAR_VERSION */ + VAR_HARDEN_GLUE = 315, /* VAR_HARDEN_GLUE */ + VAR_MODULE_CONF = 316, /* VAR_MODULE_CONF */ + VAR_TRUST_ANCHOR_FILE = 317, /* VAR_TRUST_ANCHOR_FILE */ + VAR_TRUST_ANCHOR = 318, /* VAR_TRUST_ANCHOR */ + VAR_VAL_OVERRIDE_DATE = 319, /* VAR_VAL_OVERRIDE_DATE */ + VAR_BOGUS_TTL = 320, /* VAR_BOGUS_TTL */ + VAR_VAL_CLEAN_ADDITIONAL = 321, /* VAR_VAL_CLEAN_ADDITIONAL */ + VAR_VAL_PERMISSIVE_MODE = 322, /* VAR_VAL_PERMISSIVE_MODE */ + VAR_INCOMING_NUM_TCP = 323, /* VAR_INCOMING_NUM_TCP */ + VAR_MSG_BUFFER_SIZE = 324, /* VAR_MSG_BUFFER_SIZE */ + VAR_KEY_CACHE_SIZE = 325, /* VAR_KEY_CACHE_SIZE */ + VAR_KEY_CACHE_SLABS = 326, /* VAR_KEY_CACHE_SLABS */ + VAR_TRUSTED_KEYS_FILE = 327, /* VAR_TRUSTED_KEYS_FILE */ + VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 328, /* VAR_VAL_NSEC3_KEYSIZE_ITERATIONS */ + VAR_USE_SYSLOG = 329, /* VAR_USE_SYSLOG */ + VAR_OUTGOING_INTERFACE = 330, /* VAR_OUTGOING_INTERFACE */ + VAR_ROOT_HINTS = 331, /* VAR_ROOT_HINTS */ + VAR_DO_NOT_QUERY_LOCALHOST = 332, /* VAR_DO_NOT_QUERY_LOCALHOST */ + VAR_CACHE_MAX_TTL = 333, /* VAR_CACHE_MAX_TTL */ + VAR_HARDEN_DNSSEC_STRIPPED = 334, /* VAR_HARDEN_DNSSEC_STRIPPED */ + VAR_ACCESS_CONTROL = 335, /* VAR_ACCESS_CONTROL */ + VAR_LOCAL_ZONE = 336, /* VAR_LOCAL_ZONE */ + VAR_LOCAL_DATA = 337, /* VAR_LOCAL_DATA */ + VAR_INTERFACE_AUTOMATIC = 338, /* VAR_INTERFACE_AUTOMATIC */ + VAR_STATISTICS_INTERVAL = 339, /* VAR_STATISTICS_INTERVAL */ + VAR_DO_DAEMONIZE = 340, /* VAR_DO_DAEMONIZE */ + VAR_USE_CAPS_FOR_ID = 341, /* VAR_USE_CAPS_FOR_ID */ + VAR_STATISTICS_CUMULATIVE = 342, /* VAR_STATISTICS_CUMULATIVE */ + VAR_OUTGOING_PORT_PERMIT = 343, /* VAR_OUTGOING_PORT_PERMIT */ + VAR_OUTGOING_PORT_AVOID = 344, /* VAR_OUTGOING_PORT_AVOID */ + VAR_DLV_ANCHOR_FILE = 345, /* VAR_DLV_ANCHOR_FILE */ + VAR_DLV_ANCHOR = 346, /* VAR_DLV_ANCHOR */ + VAR_NEG_CACHE_SIZE = 347, /* VAR_NEG_CACHE_SIZE */ + VAR_HARDEN_REFERRAL_PATH = 348, /* VAR_HARDEN_REFERRAL_PATH */ + VAR_PRIVATE_ADDRESS = 349, /* VAR_PRIVATE_ADDRESS */ + VAR_PRIVATE_DOMAIN = 350, /* VAR_PRIVATE_DOMAIN */ + VAR_REMOTE_CONTROL = 351, /* VAR_REMOTE_CONTROL */ + VAR_CONTROL_ENABLE = 352, /* VAR_CONTROL_ENABLE */ + VAR_CONTROL_INTERFACE = 353, /* VAR_CONTROL_INTERFACE */ + VAR_CONTROL_PORT = 354, /* VAR_CONTROL_PORT */ + VAR_SERVER_KEY_FILE = 355, /* VAR_SERVER_KEY_FILE */ + VAR_SERVER_CERT_FILE = 356, /* VAR_SERVER_CERT_FILE */ + VAR_CONTROL_KEY_FILE = 357, /* VAR_CONTROL_KEY_FILE */ + VAR_CONTROL_CERT_FILE = 358, /* VAR_CONTROL_CERT_FILE */ + VAR_CONTROL_USE_CERT = 359, /* VAR_CONTROL_USE_CERT */ + VAR_TCP_REUSE_TIMEOUT = 360, /* VAR_TCP_REUSE_TIMEOUT */ + VAR_MAX_REUSE_TCP_QUERIES = 361, /* VAR_MAX_REUSE_TCP_QUERIES */ + VAR_EXTENDED_STATISTICS = 362, /* VAR_EXTENDED_STATISTICS */ + VAR_LOCAL_DATA_PTR = 363, /* VAR_LOCAL_DATA_PTR */ + VAR_JOSTLE_TIMEOUT = 364, /* VAR_JOSTLE_TIMEOUT */ + VAR_STUB_PRIME = 365, /* VAR_STUB_PRIME */ + VAR_UNWANTED_REPLY_THRESHOLD = 366, /* VAR_UNWANTED_REPLY_THRESHOLD */ + VAR_LOG_TIME_ASCII = 367, /* VAR_LOG_TIME_ASCII */ + VAR_DOMAIN_INSECURE = 368, /* VAR_DOMAIN_INSECURE */ + VAR_PYTHON = 369, /* VAR_PYTHON */ + VAR_PYTHON_SCRIPT = 370, /* VAR_PYTHON_SCRIPT */ + VAR_VAL_SIG_SKEW_MIN = 371, /* VAR_VAL_SIG_SKEW_MIN */ + VAR_VAL_SIG_SKEW_MAX = 372, /* VAR_VAL_SIG_SKEW_MAX */ + VAR_CACHE_MIN_TTL = 373, /* VAR_CACHE_MIN_TTL */ + VAR_VAL_LOG_LEVEL = 374, /* VAR_VAL_LOG_LEVEL */ + VAR_AUTO_TRUST_ANCHOR_FILE = 375, /* VAR_AUTO_TRUST_ANCHOR_FILE */ + VAR_KEEP_MISSING = 376, /* VAR_KEEP_MISSING */ + VAR_ADD_HOLDDOWN = 377, /* VAR_ADD_HOLDDOWN */ + VAR_DEL_HOLDDOWN = 378, /* VAR_DEL_HOLDDOWN */ + VAR_SO_RCVBUF = 379, /* VAR_SO_RCVBUF */ + VAR_EDNS_BUFFER_SIZE = 380, /* VAR_EDNS_BUFFER_SIZE */ + VAR_PREFETCH = 381, /* VAR_PREFETCH */ + VAR_PREFETCH_KEY = 382, /* VAR_PREFETCH_KEY */ + VAR_SO_SNDBUF = 383, /* VAR_SO_SNDBUF */ + VAR_SO_REUSEPORT = 384, /* VAR_SO_REUSEPORT */ + VAR_HARDEN_BELOW_NXDOMAIN = 385, /* VAR_HARDEN_BELOW_NXDOMAIN */ + VAR_IGNORE_CD_FLAG = 386, /* VAR_IGNORE_CD_FLAG */ + VAR_LOG_QUERIES = 387, /* VAR_LOG_QUERIES */ + VAR_LOG_REPLIES = 388, /* VAR_LOG_REPLIES */ + VAR_LOG_LOCAL_ACTIONS = 389, /* VAR_LOG_LOCAL_ACTIONS */ + VAR_TCP_UPSTREAM = 390, /* VAR_TCP_UPSTREAM */ + VAR_SSL_UPSTREAM = 391, /* VAR_SSL_UPSTREAM */ + VAR_SSL_SERVICE_KEY = 392, /* VAR_SSL_SERVICE_KEY */ + VAR_SSL_SERVICE_PEM = 393, /* VAR_SSL_SERVICE_PEM */ + VAR_SSL_PORT = 394, /* VAR_SSL_PORT */ + VAR_FORWARD_FIRST = 395, /* VAR_FORWARD_FIRST */ + VAR_STUB_SSL_UPSTREAM = 396, /* VAR_STUB_SSL_UPSTREAM */ + VAR_FORWARD_SSL_UPSTREAM = 397, /* VAR_FORWARD_SSL_UPSTREAM */ + VAR_TLS_CERT_BUNDLE = 398, /* VAR_TLS_CERT_BUNDLE */ + VAR_HTTPS_PORT = 399, /* VAR_HTTPS_PORT */ + VAR_HTTP_ENDPOINT = 400, /* VAR_HTTP_ENDPOINT */ + VAR_HTTP_MAX_STREAMS = 401, /* VAR_HTTP_MAX_STREAMS */ + VAR_HTTP_QUERY_BUFFER_SIZE = 402, /* VAR_HTTP_QUERY_BUFFER_SIZE */ + VAR_HTTP_RESPONSE_BUFFER_SIZE = 403, /* VAR_HTTP_RESPONSE_BUFFER_SIZE */ + VAR_HTTP_NODELAY = 404, /* VAR_HTTP_NODELAY */ + VAR_HTTP_NOTLS_DOWNSTREAM = 405, /* VAR_HTTP_NOTLS_DOWNSTREAM */ + VAR_STUB_FIRST = 406, /* VAR_STUB_FIRST */ + VAR_MINIMAL_RESPONSES = 407, /* VAR_MINIMAL_RESPONSES */ + VAR_RRSET_ROUNDROBIN = 408, /* VAR_RRSET_ROUNDROBIN */ + VAR_MAX_UDP_SIZE = 409, /* VAR_MAX_UDP_SIZE */ + VAR_DELAY_CLOSE = 410, /* VAR_DELAY_CLOSE */ + VAR_UDP_CONNECT = 411, /* VAR_UDP_CONNECT */ + VAR_UNBLOCK_LAN_ZONES = 412, /* VAR_UNBLOCK_LAN_ZONES */ + VAR_INSECURE_LAN_ZONES = 413, /* VAR_INSECURE_LAN_ZONES */ + VAR_INFRA_CACHE_MIN_RTT = 414, /* VAR_INFRA_CACHE_MIN_RTT */ + VAR_INFRA_KEEP_PROBING = 415, /* VAR_INFRA_KEEP_PROBING */ + VAR_DNS64_PREFIX = 416, /* VAR_DNS64_PREFIX */ + VAR_DNS64_SYNTHALL = 417, /* VAR_DNS64_SYNTHALL */ + VAR_DNS64_IGNORE_AAAA = 418, /* VAR_DNS64_IGNORE_AAAA */ + VAR_DNSTAP = 419, /* VAR_DNSTAP */ + VAR_DNSTAP_ENABLE = 420, /* VAR_DNSTAP_ENABLE */ + VAR_DNSTAP_SOCKET_PATH = 421, /* VAR_DNSTAP_SOCKET_PATH */ + VAR_DNSTAP_IP = 422, /* VAR_DNSTAP_IP */ + VAR_DNSTAP_TLS = 423, /* VAR_DNSTAP_TLS */ + VAR_DNSTAP_TLS_SERVER_NAME = 424, /* VAR_DNSTAP_TLS_SERVER_NAME */ + VAR_DNSTAP_TLS_CERT_BUNDLE = 425, /* VAR_DNSTAP_TLS_CERT_BUNDLE */ + VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 426, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE */ + VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 427, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE */ + VAR_DNSTAP_SEND_IDENTITY = 428, /* VAR_DNSTAP_SEND_IDENTITY */ + VAR_DNSTAP_SEND_VERSION = 429, /* VAR_DNSTAP_SEND_VERSION */ + VAR_DNSTAP_BIDIRECTIONAL = 430, /* VAR_DNSTAP_BIDIRECTIONAL */ + VAR_DNSTAP_IDENTITY = 431, /* VAR_DNSTAP_IDENTITY */ + VAR_DNSTAP_VERSION = 432, /* VAR_DNSTAP_VERSION */ + VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 433, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES */ + VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 434, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES */ + VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 435, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES */ + VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 436, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES */ + VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 437, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES */ + VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 438, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES */ + VAR_RESPONSE_IP_TAG = 439, /* VAR_RESPONSE_IP_TAG */ + VAR_RESPONSE_IP = 440, /* VAR_RESPONSE_IP */ + VAR_RESPONSE_IP_DATA = 441, /* VAR_RESPONSE_IP_DATA */ + VAR_HARDEN_ALGO_DOWNGRADE = 442, /* VAR_HARDEN_ALGO_DOWNGRADE */ + VAR_IP_TRANSPARENT = 443, /* VAR_IP_TRANSPARENT */ + VAR_IP_DSCP = 444, /* VAR_IP_DSCP */ + VAR_DISABLE_DNSSEC_LAME_CHECK = 445, /* VAR_DISABLE_DNSSEC_LAME_CHECK */ + VAR_IP_RATELIMIT = 446, /* VAR_IP_RATELIMIT */ + VAR_IP_RATELIMIT_SLABS = 447, /* VAR_IP_RATELIMIT_SLABS */ + VAR_IP_RATELIMIT_SIZE = 448, /* VAR_IP_RATELIMIT_SIZE */ + VAR_RATELIMIT = 449, /* VAR_RATELIMIT */ + VAR_RATELIMIT_SLABS = 450, /* VAR_RATELIMIT_SLABS */ + VAR_RATELIMIT_SIZE = 451, /* VAR_RATELIMIT_SIZE */ + VAR_RATELIMIT_FOR_DOMAIN = 452, /* VAR_RATELIMIT_FOR_DOMAIN */ + VAR_RATELIMIT_BELOW_DOMAIN = 453, /* VAR_RATELIMIT_BELOW_DOMAIN */ + VAR_IP_RATELIMIT_FACTOR = 454, /* VAR_IP_RATELIMIT_FACTOR */ + VAR_RATELIMIT_FACTOR = 455, /* VAR_RATELIMIT_FACTOR */ + VAR_SEND_CLIENT_SUBNET = 456, /* VAR_SEND_CLIENT_SUBNET */ + VAR_CLIENT_SUBNET_ZONE = 457, /* VAR_CLIENT_SUBNET_ZONE */ + VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 458, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ + VAR_CLIENT_SUBNET_OPCODE = 459, /* VAR_CLIENT_SUBNET_OPCODE */ + VAR_MAX_CLIENT_SUBNET_IPV4 = 460, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ + VAR_MAX_CLIENT_SUBNET_IPV6 = 461, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ + VAR_MIN_CLIENT_SUBNET_IPV4 = 462, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ + VAR_MIN_CLIENT_SUBNET_IPV6 = 463, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ + VAR_MAX_ECS_TREE_SIZE_IPV4 = 464, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ + VAR_MAX_ECS_TREE_SIZE_IPV6 = 465, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ + VAR_CAPS_WHITELIST = 466, /* VAR_CAPS_WHITELIST */ + VAR_CACHE_MAX_NEGATIVE_TTL = 467, /* VAR_CACHE_MAX_NEGATIVE_TTL */ + VAR_PERMIT_SMALL_HOLDDOWN = 468, /* VAR_PERMIT_SMALL_HOLDDOWN */ + VAR_QNAME_MINIMISATION = 469, /* VAR_QNAME_MINIMISATION */ + VAR_QNAME_MINIMISATION_STRICT = 470, /* VAR_QNAME_MINIMISATION_STRICT */ + VAR_IP_FREEBIND = 471, /* VAR_IP_FREEBIND */ + VAR_DEFINE_TAG = 472, /* VAR_DEFINE_TAG */ + VAR_LOCAL_ZONE_TAG = 473, /* VAR_LOCAL_ZONE_TAG */ + VAR_ACCESS_CONTROL_TAG = 474, /* VAR_ACCESS_CONTROL_TAG */ + VAR_LOCAL_ZONE_OVERRIDE = 475, /* VAR_LOCAL_ZONE_OVERRIDE */ + VAR_ACCESS_CONTROL_TAG_ACTION = 476, /* VAR_ACCESS_CONTROL_TAG_ACTION */ + VAR_ACCESS_CONTROL_TAG_DATA = 477, /* VAR_ACCESS_CONTROL_TAG_DATA */ + VAR_VIEW = 478, /* VAR_VIEW */ + VAR_ACCESS_CONTROL_VIEW = 479, /* VAR_ACCESS_CONTROL_VIEW */ + VAR_VIEW_FIRST = 480, /* VAR_VIEW_FIRST */ + VAR_SERVE_EXPIRED = 481, /* VAR_SERVE_EXPIRED */ + VAR_SERVE_EXPIRED_TTL = 482, /* VAR_SERVE_EXPIRED_TTL */ + VAR_SERVE_EXPIRED_TTL_RESET = 483, /* VAR_SERVE_EXPIRED_TTL_RESET */ + VAR_SERVE_EXPIRED_REPLY_TTL = 484, /* VAR_SERVE_EXPIRED_REPLY_TTL */ + VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 485, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ + VAR_SERVE_ORIGINAL_TTL = 486, /* VAR_SERVE_ORIGINAL_TTL */ + VAR_FAKE_DSA = 487, /* VAR_FAKE_DSA */ + VAR_FAKE_SHA1 = 488, /* VAR_FAKE_SHA1 */ + VAR_LOG_IDENTITY = 489, /* VAR_LOG_IDENTITY */ + VAR_HIDE_TRUSTANCHOR = 490, /* VAR_HIDE_TRUSTANCHOR */ + VAR_TRUST_ANCHOR_SIGNALING = 491, /* VAR_TRUST_ANCHOR_SIGNALING */ + VAR_AGGRESSIVE_NSEC = 492, /* VAR_AGGRESSIVE_NSEC */ + VAR_USE_SYSTEMD = 493, /* VAR_USE_SYSTEMD */ + VAR_SHM_ENABLE = 494, /* VAR_SHM_ENABLE */ + VAR_SHM_KEY = 495, /* VAR_SHM_KEY */ + VAR_ROOT_KEY_SENTINEL = 496, /* VAR_ROOT_KEY_SENTINEL */ + VAR_DNSCRYPT = 497, /* VAR_DNSCRYPT */ + VAR_DNSCRYPT_ENABLE = 498, /* VAR_DNSCRYPT_ENABLE */ + VAR_DNSCRYPT_PORT = 499, /* VAR_DNSCRYPT_PORT */ + VAR_DNSCRYPT_PROVIDER = 500, /* VAR_DNSCRYPT_PROVIDER */ + VAR_DNSCRYPT_SECRET_KEY = 501, /* VAR_DNSCRYPT_SECRET_KEY */ + VAR_DNSCRYPT_PROVIDER_CERT = 502, /* VAR_DNSCRYPT_PROVIDER_CERT */ + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 503, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 504, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 505, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 506, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 507, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ + VAR_PAD_RESPONSES = 508, /* VAR_PAD_RESPONSES */ + VAR_PAD_RESPONSES_BLOCK_SIZE = 509, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ + VAR_PAD_QUERIES = 510, /* VAR_PAD_QUERIES */ + VAR_PAD_QUERIES_BLOCK_SIZE = 511, /* VAR_PAD_QUERIES_BLOCK_SIZE */ + VAR_IPSECMOD_ENABLED = 512, /* VAR_IPSECMOD_ENABLED */ + VAR_IPSECMOD_HOOK = 513, /* VAR_IPSECMOD_HOOK */ + VAR_IPSECMOD_IGNORE_BOGUS = 514, /* VAR_IPSECMOD_IGNORE_BOGUS */ + VAR_IPSECMOD_MAX_TTL = 515, /* VAR_IPSECMOD_MAX_TTL */ + VAR_IPSECMOD_WHITELIST = 516, /* VAR_IPSECMOD_WHITELIST */ + VAR_IPSECMOD_STRICT = 517, /* VAR_IPSECMOD_STRICT */ + VAR_CACHEDB = 518, /* VAR_CACHEDB */ + VAR_CACHEDB_BACKEND = 519, /* VAR_CACHEDB_BACKEND */ + VAR_CACHEDB_SECRETSEED = 520, /* VAR_CACHEDB_SECRETSEED */ + VAR_CACHEDB_REDISHOST = 521, /* VAR_CACHEDB_REDISHOST */ + VAR_CACHEDB_REDISPORT = 522, /* VAR_CACHEDB_REDISPORT */ + VAR_CACHEDB_REDISTIMEOUT = 523, /* VAR_CACHEDB_REDISTIMEOUT */ + VAR_CACHEDB_REDISEXPIRERECORDS = 524, /* VAR_CACHEDB_REDISEXPIRERECORDS */ + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 525, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ + VAR_FOR_UPSTREAM = 526, /* VAR_FOR_UPSTREAM */ + VAR_AUTH_ZONE = 527, /* VAR_AUTH_ZONE */ + VAR_ZONEFILE = 528, /* VAR_ZONEFILE */ + VAR_MASTER = 529, /* VAR_MASTER */ + VAR_URL = 530, /* VAR_URL */ + VAR_FOR_DOWNSTREAM = 531, /* VAR_FOR_DOWNSTREAM */ + VAR_FALLBACK_ENABLED = 532, /* VAR_FALLBACK_ENABLED */ + VAR_TLS_ADDITIONAL_PORT = 533, /* VAR_TLS_ADDITIONAL_PORT */ + VAR_LOW_RTT = 534, /* VAR_LOW_RTT */ + VAR_LOW_RTT_PERMIL = 535, /* VAR_LOW_RTT_PERMIL */ + VAR_FAST_SERVER_PERMIL = 536, /* VAR_FAST_SERVER_PERMIL */ + VAR_FAST_SERVER_NUM = 537, /* VAR_FAST_SERVER_NUM */ + VAR_ALLOW_NOTIFY = 538, /* VAR_ALLOW_NOTIFY */ + VAR_TLS_WIN_CERT = 539, /* VAR_TLS_WIN_CERT */ + VAR_TCP_CONNECTION_LIMIT = 540, /* VAR_TCP_CONNECTION_LIMIT */ + VAR_FORWARD_NO_CACHE = 541, /* VAR_FORWARD_NO_CACHE */ + VAR_STUB_NO_CACHE = 542, /* VAR_STUB_NO_CACHE */ + VAR_LOG_SERVFAIL = 543, /* VAR_LOG_SERVFAIL */ + VAR_DENY_ANY = 544, /* VAR_DENY_ANY */ + VAR_UNKNOWN_SERVER_TIME_LIMIT = 545, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ + VAR_LOG_TAG_QUERYREPLY = 546, /* VAR_LOG_TAG_QUERYREPLY */ + VAR_STREAM_WAIT_SIZE = 547, /* VAR_STREAM_WAIT_SIZE */ + VAR_TLS_CIPHERS = 548, /* VAR_TLS_CIPHERS */ + VAR_TLS_CIPHERSUITES = 549, /* VAR_TLS_CIPHERSUITES */ + VAR_TLS_USE_SNI = 550, /* VAR_TLS_USE_SNI */ + VAR_IPSET = 551, /* VAR_IPSET */ + VAR_IPSET_NAME_V4 = 552, /* VAR_IPSET_NAME_V4 */ + VAR_IPSET_NAME_V6 = 553, /* VAR_IPSET_NAME_V6 */ + VAR_TLS_SESSION_TICKET_KEYS = 554, /* VAR_TLS_SESSION_TICKET_KEYS */ + VAR_RPZ = 555, /* VAR_RPZ */ + VAR_TAGS = 556, /* VAR_TAGS */ + VAR_RPZ_ACTION_OVERRIDE = 557, /* VAR_RPZ_ACTION_OVERRIDE */ + VAR_RPZ_CNAME_OVERRIDE = 558, /* VAR_RPZ_CNAME_OVERRIDE */ + VAR_RPZ_LOG = 559, /* VAR_RPZ_LOG */ + VAR_RPZ_LOG_NAME = 560, /* VAR_RPZ_LOG_NAME */ + VAR_DYNLIB = 561, /* VAR_DYNLIB */ + VAR_DYNLIB_FILE = 562, /* VAR_DYNLIB_FILE */ + VAR_EDNS_CLIENT_STRING = 563, /* VAR_EDNS_CLIENT_STRING */ + VAR_EDNS_CLIENT_STRING_OPCODE = 564, /* VAR_EDNS_CLIENT_STRING_OPCODE */ + VAR_NSID = 565, /* VAR_NSID */ + VAR_ZONEMD_PERMISSIVE_MODE = 566, /* VAR_ZONEMD_PERMISSIVE_MODE */ + VAR_ZONEMD_REJECT_ABSENCE = 567 /* VAR_ZONEMD_REJECT_ABSENCE */ + }; + typedef enum yytokentype yytoken_kind_t; +#endif +/* Token kinds. */ +#define YYEOF 0 +#define YYerror 256 +#define YYUNDEF 257 +#define SPACE 258 +#define LETTER 259 +#define NEWLINE 260 +#define COMMENT 261 +#define COLON 262 +#define ANY 263 +#define ZONESTR 264 +#define STRING_ARG 265 +#define VAR_FORCE_TOPLEVEL 266 +#define VAR_SERVER 267 +#define VAR_VERBOSITY 268 +#define VAR_NUM_THREADS 269 +#define VAR_PORT 270 +#define VAR_OUTGOING_RANGE 271 +#define VAR_INTERFACE 272 +#define VAR_PREFER_IP4 273 +#define VAR_DO_IP4 274 +#define VAR_DO_IP6 275 +#define VAR_PREFER_IP6 276 +#define VAR_DO_UDP 277 +#define VAR_DO_TCP 278 +#define VAR_TCP_MSS 279 +#define VAR_OUTGOING_TCP_MSS 280 +#define VAR_TCP_IDLE_TIMEOUT 281 +#define VAR_EDNS_TCP_KEEPALIVE 282 +#define VAR_EDNS_TCP_KEEPALIVE_TIMEOUT 283 +#define VAR_CHROOT 284 +#define VAR_USERNAME 285 +#define VAR_DIRECTORY 286 +#define VAR_LOGFILE 287 +#define VAR_PIDFILE 288 +#define VAR_MSG_CACHE_SIZE 289 +#define VAR_MSG_CACHE_SLABS 290 +#define VAR_NUM_QUERIES_PER_THREAD 291 +#define VAR_RRSET_CACHE_SIZE 292 +#define VAR_RRSET_CACHE_SLABS 293 +#define VAR_OUTGOING_NUM_TCP 294 +#define VAR_INFRA_HOST_TTL 295 +#define VAR_INFRA_LAME_TTL 296 +#define VAR_INFRA_CACHE_SLABS 297 +#define VAR_INFRA_CACHE_NUMHOSTS 298 +#define VAR_INFRA_CACHE_LAME_SIZE 299 +#define VAR_NAME 300 +#define VAR_STUB_ZONE 301 +#define VAR_STUB_HOST 302 +#define VAR_STUB_ADDR 303 +#define VAR_TARGET_FETCH_POLICY 304 +#define VAR_HARDEN_SHORT_BUFSIZE 305 +#define VAR_HARDEN_LARGE_QUERIES 306 +#define VAR_FORWARD_ZONE 307 +#define VAR_FORWARD_HOST 308 +#define VAR_FORWARD_ADDR 309 +#define VAR_DO_NOT_QUERY_ADDRESS 310 +#define VAR_HIDE_IDENTITY 311 +#define VAR_HIDE_VERSION 312 +#define VAR_IDENTITY 313 +#define VAR_VERSION 314 +#define VAR_HARDEN_GLUE 315 +#define VAR_MODULE_CONF 316 +#define VAR_TRUST_ANCHOR_FILE 317 +#define VAR_TRUST_ANCHOR 318 +#define VAR_VAL_OVERRIDE_DATE 319 +#define VAR_BOGUS_TTL 320 +#define VAR_VAL_CLEAN_ADDITIONAL 321 +#define VAR_VAL_PERMISSIVE_MODE 322 +#define VAR_INCOMING_NUM_TCP 323 +#define VAR_MSG_BUFFER_SIZE 324 +#define VAR_KEY_CACHE_SIZE 325 +#define VAR_KEY_CACHE_SLABS 326 +#define VAR_TRUSTED_KEYS_FILE 327 +#define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 328 +#define VAR_USE_SYSLOG 329 +#define VAR_OUTGOING_INTERFACE 330 +#define VAR_ROOT_HINTS 331 +#define VAR_DO_NOT_QUERY_LOCALHOST 332 +#define VAR_CACHE_MAX_TTL 333 +#define VAR_HARDEN_DNSSEC_STRIPPED 334 +#define VAR_ACCESS_CONTROL 335 +#define VAR_LOCAL_ZONE 336 +#define VAR_LOCAL_DATA 337 +#define VAR_INTERFACE_AUTOMATIC 338 +#define VAR_STATISTICS_INTERVAL 339 +#define VAR_DO_DAEMONIZE 340 +#define VAR_USE_CAPS_FOR_ID 341 +#define VAR_STATISTICS_CUMULATIVE 342 +#define VAR_OUTGOING_PORT_PERMIT 343 +#define VAR_OUTGOING_PORT_AVOID 344 +#define VAR_DLV_ANCHOR_FILE 345 +#define VAR_DLV_ANCHOR 346 +#define VAR_NEG_CACHE_SIZE 347 +#define VAR_HARDEN_REFERRAL_PATH 348 +#define VAR_PRIVATE_ADDRESS 349 +#define VAR_PRIVATE_DOMAIN 350 +#define VAR_REMOTE_CONTROL 351 +#define VAR_CONTROL_ENABLE 352 +#define VAR_CONTROL_INTERFACE 353 +#define VAR_CONTROL_PORT 354 +#define VAR_SERVER_KEY_FILE 355 +#define VAR_SERVER_CERT_FILE 356 +#define VAR_CONTROL_KEY_FILE 357 +#define VAR_CONTROL_CERT_FILE 358 +#define VAR_CONTROL_USE_CERT 359 +#define VAR_TCP_REUSE_TIMEOUT 360 +#define VAR_MAX_REUSE_TCP_QUERIES 361 +#define VAR_EXTENDED_STATISTICS 362 +#define VAR_LOCAL_DATA_PTR 363 +#define VAR_JOSTLE_TIMEOUT 364 +#define VAR_STUB_PRIME 365 +#define VAR_UNWANTED_REPLY_THRESHOLD 366 +#define VAR_LOG_TIME_ASCII 367 +#define VAR_DOMAIN_INSECURE 368 +#define VAR_PYTHON 369 +#define VAR_PYTHON_SCRIPT 370 +#define VAR_VAL_SIG_SKEW_MIN 371 +#define VAR_VAL_SIG_SKEW_MAX 372 +#define VAR_CACHE_MIN_TTL 373 +#define VAR_VAL_LOG_LEVEL 374 +#define VAR_AUTO_TRUST_ANCHOR_FILE 375 +#define VAR_KEEP_MISSING 376 +#define VAR_ADD_HOLDDOWN 377 +#define VAR_DEL_HOLDDOWN 378 +#define VAR_SO_RCVBUF 379 +#define VAR_EDNS_BUFFER_SIZE 380 +#define VAR_PREFETCH 381 +#define VAR_PREFETCH_KEY 382 +#define VAR_SO_SNDBUF 383 +#define VAR_SO_REUSEPORT 384 +#define VAR_HARDEN_BELOW_NXDOMAIN 385 +#define VAR_IGNORE_CD_FLAG 386 +#define VAR_LOG_QUERIES 387 +#define VAR_LOG_REPLIES 388 +#define VAR_LOG_LOCAL_ACTIONS 389 +#define VAR_TCP_UPSTREAM 390 +#define VAR_SSL_UPSTREAM 391 +#define VAR_SSL_SERVICE_KEY 392 +#define VAR_SSL_SERVICE_PEM 393 +#define VAR_SSL_PORT 394 +#define VAR_FORWARD_FIRST 395 +#define VAR_STUB_SSL_UPSTREAM 396 +#define VAR_FORWARD_SSL_UPSTREAM 397 +#define VAR_TLS_CERT_BUNDLE 398 +#define VAR_HTTPS_PORT 399 +#define VAR_HTTP_ENDPOINT 400 +#define VAR_HTTP_MAX_STREAMS 401 +#define VAR_HTTP_QUERY_BUFFER_SIZE 402 +#define VAR_HTTP_RESPONSE_BUFFER_SIZE 403 +#define VAR_HTTP_NODELAY 404 +#define VAR_HTTP_NOTLS_DOWNSTREAM 405 +#define VAR_STUB_FIRST 406 +#define VAR_MINIMAL_RESPONSES 407 +#define VAR_RRSET_ROUNDROBIN 408 +#define VAR_MAX_UDP_SIZE 409 +#define VAR_DELAY_CLOSE 410 +#define VAR_UDP_CONNECT 411 +#define VAR_UNBLOCK_LAN_ZONES 412 +#define VAR_INSECURE_LAN_ZONES 413 +#define VAR_INFRA_CACHE_MIN_RTT 414 +#define VAR_INFRA_KEEP_PROBING 415 +#define VAR_DNS64_PREFIX 416 +#define VAR_DNS64_SYNTHALL 417 +#define VAR_DNS64_IGNORE_AAAA 418 +#define VAR_DNSTAP 419 +#define VAR_DNSTAP_ENABLE 420 +#define VAR_DNSTAP_SOCKET_PATH 421 +#define VAR_DNSTAP_IP 422 +#define VAR_DNSTAP_TLS 423 +#define VAR_DNSTAP_TLS_SERVER_NAME 424 +#define VAR_DNSTAP_TLS_CERT_BUNDLE 425 +#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 426 +#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 427 +#define VAR_DNSTAP_SEND_IDENTITY 428 +#define VAR_DNSTAP_SEND_VERSION 429 +#define VAR_DNSTAP_BIDIRECTIONAL 430 +#define VAR_DNSTAP_IDENTITY 431 +#define VAR_DNSTAP_VERSION 432 +#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 433 +#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 434 +#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 435 +#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 436 +#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 437 +#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 438 +#define VAR_RESPONSE_IP_TAG 439 +#define VAR_RESPONSE_IP 440 +#define VAR_RESPONSE_IP_DATA 441 +#define VAR_HARDEN_ALGO_DOWNGRADE 442 +#define VAR_IP_TRANSPARENT 443 +#define VAR_IP_DSCP 444 +#define VAR_DISABLE_DNSSEC_LAME_CHECK 445 +#define VAR_IP_RATELIMIT 446 +#define VAR_IP_RATELIMIT_SLABS 447 +#define VAR_IP_RATELIMIT_SIZE 448 +#define VAR_RATELIMIT 449 +#define VAR_RATELIMIT_SLABS 450 +#define VAR_RATELIMIT_SIZE 451 +#define VAR_RATELIMIT_FOR_DOMAIN 452 +#define VAR_RATELIMIT_BELOW_DOMAIN 453 +#define VAR_IP_RATELIMIT_FACTOR 454 +#define VAR_RATELIMIT_FACTOR 455 +#define VAR_SEND_CLIENT_SUBNET 456 +#define VAR_CLIENT_SUBNET_ZONE 457 +#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 458 +#define VAR_CLIENT_SUBNET_OPCODE 459 +#define VAR_MAX_CLIENT_SUBNET_IPV4 460 +#define VAR_MAX_CLIENT_SUBNET_IPV6 461 +#define VAR_MIN_CLIENT_SUBNET_IPV4 462 +#define VAR_MIN_CLIENT_SUBNET_IPV6 463 +#define VAR_MAX_ECS_TREE_SIZE_IPV4 464 +#define VAR_MAX_ECS_TREE_SIZE_IPV6 465 +#define VAR_CAPS_WHITELIST 466 +#define VAR_CACHE_MAX_NEGATIVE_TTL 467 +#define VAR_PERMIT_SMALL_HOLDDOWN 468 +#define VAR_QNAME_MINIMISATION 469 +#define VAR_QNAME_MINIMISATION_STRICT 470 +#define VAR_IP_FREEBIND 471 +#define VAR_DEFINE_TAG 472 +#define VAR_LOCAL_ZONE_TAG 473 +#define VAR_ACCESS_CONTROL_TAG 474 +#define VAR_LOCAL_ZONE_OVERRIDE 475 +#define VAR_ACCESS_CONTROL_TAG_ACTION 476 +#define VAR_ACCESS_CONTROL_TAG_DATA 477 +#define VAR_VIEW 478 +#define VAR_ACCESS_CONTROL_VIEW 479 +#define VAR_VIEW_FIRST 480 +#define VAR_SERVE_EXPIRED 481 +#define VAR_SERVE_EXPIRED_TTL 482 +#define VAR_SERVE_EXPIRED_TTL_RESET 483 +#define VAR_SERVE_EXPIRED_REPLY_TTL 484 +#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 485 +#define VAR_SERVE_ORIGINAL_TTL 486 +#define VAR_FAKE_DSA 487 +#define VAR_FAKE_SHA1 488 +#define VAR_LOG_IDENTITY 489 +#define VAR_HIDE_TRUSTANCHOR 490 +#define VAR_TRUST_ANCHOR_SIGNALING 491 +#define VAR_AGGRESSIVE_NSEC 492 +#define VAR_USE_SYSTEMD 493 +#define VAR_SHM_ENABLE 494 +#define VAR_SHM_KEY 495 +#define VAR_ROOT_KEY_SENTINEL 496 +#define VAR_DNSCRYPT 497 +#define VAR_DNSCRYPT_ENABLE 498 +#define VAR_DNSCRYPT_PORT 499 +#define VAR_DNSCRYPT_PROVIDER 500 +#define VAR_DNSCRYPT_SECRET_KEY 501 +#define VAR_DNSCRYPT_PROVIDER_CERT 502 +#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 503 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 504 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 505 +#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 506 +#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 507 +#define VAR_PAD_RESPONSES 508 +#define VAR_PAD_RESPONSES_BLOCK_SIZE 509 +#define VAR_PAD_QUERIES 510 +#define VAR_PAD_QUERIES_BLOCK_SIZE 511 +#define VAR_IPSECMOD_ENABLED 512 +#define VAR_IPSECMOD_HOOK 513 +#define VAR_IPSECMOD_IGNORE_BOGUS 514 +#define VAR_IPSECMOD_MAX_TTL 515 +#define VAR_IPSECMOD_WHITELIST 516 +#define VAR_IPSECMOD_STRICT 517 +#define VAR_CACHEDB 518 +#define VAR_CACHEDB_BACKEND 519 +#define VAR_CACHEDB_SECRETSEED 520 +#define VAR_CACHEDB_REDISHOST 521 +#define VAR_CACHEDB_REDISPORT 522 +#define VAR_CACHEDB_REDISTIMEOUT 523 +#define VAR_CACHEDB_REDISEXPIRERECORDS 524 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 525 +#define VAR_FOR_UPSTREAM 526 +#define VAR_AUTH_ZONE 527 +#define VAR_ZONEFILE 528 +#define VAR_MASTER 529 +#define VAR_URL 530 +#define VAR_FOR_DOWNSTREAM 531 +#define VAR_FALLBACK_ENABLED 532 +#define VAR_TLS_ADDITIONAL_PORT 533 +#define VAR_LOW_RTT 534 +#define VAR_LOW_RTT_PERMIL 535 +#define VAR_FAST_SERVER_PERMIL 536 +#define VAR_FAST_SERVER_NUM 537 +#define VAR_ALLOW_NOTIFY 538 +#define VAR_TLS_WIN_CERT 539 +#define VAR_TCP_CONNECTION_LIMIT 540 +#define VAR_FORWARD_NO_CACHE 541 +#define VAR_STUB_NO_CACHE 542 +#define VAR_LOG_SERVFAIL 543 +#define VAR_DENY_ANY 544 +#define VAR_UNKNOWN_SERVER_TIME_LIMIT 545 +#define VAR_LOG_TAG_QUERYREPLY 546 +#define VAR_STREAM_WAIT_SIZE 547 +#define VAR_TLS_CIPHERS 548 +#define VAR_TLS_CIPHERSUITES 549 +#define VAR_TLS_USE_SNI 550 +#define VAR_IPSET 551 +#define VAR_IPSET_NAME_V4 552 +#define VAR_IPSET_NAME_V6 553 +#define VAR_TLS_SESSION_TICKET_KEYS 554 +#define VAR_RPZ 555 +#define VAR_TAGS 556 +#define VAR_RPZ_ACTION_OVERRIDE 557 +#define VAR_RPZ_CNAME_OVERRIDE 558 +#define VAR_RPZ_LOG 559 +#define VAR_RPZ_LOG_NAME 560 +#define VAR_DYNLIB 561 +#define VAR_DYNLIB_FILE 562 +#define VAR_EDNS_CLIENT_STRING 563 +#define VAR_EDNS_CLIENT_STRING_OPCODE 564 +#define VAR_NSID 565 +#define VAR_ZONEMD_PERMISSIVE_MODE 566 +#define VAR_ZONEMD_REJECT_ABSENCE 567 + +/* Value type. */ +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +union YYSTYPE +{ +#line 66 "./util/configparser.y" + + char* str; + +#line 780 "util/configparser.c" + +}; +typedef union YYSTYPE YYSTYPE; +# define YYSTYPE_IS_TRIVIAL 1 +# define YYSTYPE_IS_DECLARED 1 +#endif + + +extern YYSTYPE yylval; + +int yyparse (void); + +#endif /* !YY_YY_UTIL_CONFIGPARSER_H_INCLUDED */ /* Symbol kind. */ enum yysymbol_kind_t { @@ -818,18 +1488,6 @@ typedef int_least16_t yytype_int16; typedef short yytype_int16; #endif -/* Work around bug in HP-UX 11.23, which defines these macros - incorrectly for preprocessor constants. This workaround can likely - be removed in 2023, as HPE has promised support for HP-UX 11.23 - (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of - . */ -#ifdef __hpux -# undef UINT_LEAST8_MAX -# undef UINT_LEAST16_MAX -# define UINT_LEAST8_MAX 255 -# define UINT_LEAST16_MAX 65535 -#endif - #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ typedef __UINT_LEAST8_TYPE__ yytype_uint8; #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ @@ -927,9 +1585,9 @@ typedef int yy_state_fast_t; /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ -# define YY_USE(E) ((void) (E)) +# define YYUSE(E) ((void) (E)) #else -# define YY_USE(E) /* empty */ +# define YYUSE(E) /* empty */ #endif #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ @@ -1107,7 +1765,6 @@ union yyalloc /* YYNSTATES -- Number of states. */ #define YYNSTATES 969 -/* YYMAXUTOK -- Last valid token kind. */ #define YYMAXUTOK 567 @@ -1237,20 +1894,20 @@ static const yytype_int16 yyrline[] = 2470, 2480, 2490, 2500, 2509, 2519, 2528, 2541, 2554, 2566, 2580, 2592, 2606, 2615, 2627, 2637, 2644, 2651, 2660, 2669, 2679, 2689, 2699, 2706, 2713, 2722, 2731, 2741, 2751, 2758, - 2765, 2772, 2780, 2790, 2800, 2810, 2820, 2830, 2869, 2879, - 2887, 2895, 2910, 2919, 2924, 2925, 2926, 2926, 2926, 2927, - 2927, 2927, 2928, 2928, 2930, 2940, 2949, 2956, 2963, 2970, - 2977, 2984, 2991, 2996, 2997, 2998, 2998, 2998, 2999, 2999, - 2999, 3000, 3001, 3001, 3002, 3002, 3003, 3003, 3004, 3005, - 3006, 3007, 3008, 3009, 3011, 3020, 3030, 3037, 3044, 3053, - 3060, 3067, 3074, 3081, 3090, 3099, 3106, 3113, 3123, 3133, - 3143, 3153, 3163, 3173, 3178, 3179, 3180, 3182, 3188, 3193, - 3194, 3195, 3197, 3203, 3213, 3220, 3229, 3237, 3242, 3243, - 3245, 3245, 3245, 3246, 3246, 3247, 3248, 3249, 3250, 3251, - 3253, 3263, 3272, 3279, 3288, 3295, 3304, 3312, 3325, 3333, - 3346, 3351, 3352, 3353, 3353, 3354, 3354, 3354, 3355, 3357, - 3369, 3381, 3393, 3408, 3421, 3434, 3445, 3450, 3451, 3452, - 3452, 3454, 3469 + 2765, 2772, 2780, 2790, 2800, 2810, 2820, 2830, 2876, 2886, + 2894, 2902, 2917, 2926, 2931, 2932, 2933, 2933, 2933, 2934, + 2934, 2934, 2935, 2935, 2937, 2947, 2956, 2963, 2970, 2977, + 2984, 2991, 2998, 3003, 3004, 3005, 3005, 3005, 3006, 3006, + 3006, 3007, 3008, 3008, 3009, 3009, 3010, 3010, 3011, 3012, + 3013, 3014, 3015, 3016, 3018, 3027, 3037, 3044, 3051, 3060, + 3067, 3074, 3081, 3088, 3097, 3106, 3113, 3120, 3130, 3140, + 3150, 3160, 3170, 3180, 3185, 3186, 3187, 3189, 3195, 3200, + 3201, 3202, 3204, 3210, 3220, 3227, 3236, 3244, 3249, 3250, + 3252, 3252, 3252, 3253, 3253, 3254, 3255, 3256, 3257, 3258, + 3260, 3270, 3279, 3286, 3295, 3302, 3311, 3319, 3332, 3340, + 3353, 3358, 3359, 3360, 3360, 3361, 3361, 3361, 3362, 3364, + 3376, 3388, 3400, 3415, 3428, 3441, 3452, 3457, 3458, 3459, + 3459, 3461, 3476 }; #endif @@ -1826,7 +2483,7 @@ static const yytype_int16 yypgoto[] = /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - 0, 1, 17, 18, 19, 32, 259, 20, 33, 481, + -1, 1, 17, 18, 19, 32, 259, 20, 33, 481, 21, 34, 495, 22, 35, 509, 23, 36, 526, 541, 542, 543, 544, 545, 24, 37, 546, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, @@ -2328,7 +2985,7 @@ yy_symbol_value_print (FILE *yyo, yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep) { FILE *yyoutput = yyo; - YY_USE (yyoutput); + YYUSE (yyoutput); if (!yyvaluep) return; # ifdef YYPRINT @@ -2336,7 +2993,7 @@ yy_symbol_value_print (FILE *yyo, YYPRINT (yyo, yytoknum[yykind], *yyvaluep); # endif YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YY_USE (yykind); + YYUSE (yykind); YY_IGNORE_MAYBE_UNINITIALIZED_END } @@ -2450,18 +3107,18 @@ static void yydestruct (const char *yymsg, yysymbol_kind_t yykind, YYSTYPE *yyvaluep) { - YY_USE (yyvaluep); + YYUSE (yyvaluep); if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp); YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YY_USE (yykind); + YYUSE (yykind); YY_IGNORE_MAYBE_UNINITIALIZED_END } -/* Lookahead token kind. */ +/* The lookahead symbol. */ int yychar; /* The semantic value of the lookahead symbol. */ @@ -2479,30 +3136,34 @@ int yynerrs; int yyparse (void) { - yy_state_fast_t yystate = 0; + yy_state_fast_t yystate; /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus = 0; + int yyerrstatus; - /* Refer to the stacks through separate pointers, to allow yyoverflow + /* 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. */ /* Their size. */ - YYPTRDIFF_T yystacksize = YYINITDEPTH; + YYPTRDIFF_T yystacksize; - /* The state stack: array, bottom, top. */ + /* The state stack. */ yy_state_t yyssa[YYINITDEPTH]; - yy_state_t *yyss = yyssa; - yy_state_t *yyssp = yyss; + yy_state_t *yyss; + yy_state_t *yyssp; - /* The semantic value stack: array, bottom, top. */ + /* The semantic value stack. */ YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs = yyvsa; - YYSTYPE *yyvsp = yyvs; + YYSTYPE *yyvs; + YYSTYPE *yyvsp; int yyn; /* The return value of yyparse. */ int yyresult; - /* Lookahead symbol kind. */ + /* Lookahead token as an internal (translated) token number. */ yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY; /* The variables used to return semantic value and location from the action routines. */ @@ -2516,6 +3177,15 @@ yyparse (void) Keep to zero when no symbol should be popped. */ int yylen = 0; + yynerrs = 0; + yystate = 0; + yyerrstatus = 0; + + yystacksize = YYINITDEPTH; + yyssp = yyss = yyssa; + yyvsp = yyvs = yyvsa; + + YYDPRINTF ((stderr, "Starting parse\n")); yychar = YYEMPTY; /* Cause a token to be read. */ @@ -2716,24 +3386,24 @@ yyreduce: YY_REDUCE_PRINT (yyn); switch (yyn) { - case 18: /* force_toplevel: VAR_FORCE_TOPLEVEL */ -#line 198 "util/configparser.y" + case 18: +#line 198 "./util/configparser.y" { OUTYY(("\nP(force-toplevel)\n")); } -#line 2725 "util/configparser.c" +#line 3395 "util/configparser.c" break; - case 19: /* serverstart: VAR_SERVER */ -#line 204 "util/configparser.y" + case 19: +#line 204 "./util/configparser.y" { OUTYY(("\nP(server:)\n")); } -#line 2733 "util/configparser.c" +#line 3403 "util/configparser.c" break; - case 236: /* stubstart: VAR_STUB_ZONE */ -#line 309 "util/configparser.y" + case 236: +#line 309 "./util/configparser.y" { struct config_stub* s; OUTYY(("\nP(stub_zone:)\n")); @@ -2744,11 +3414,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2748 "util/configparser.c" +#line 3418 "util/configparser.c" break; - case 246: /* forwardstart: VAR_FORWARD_ZONE */ -#line 326 "util/configparser.y" + case 246: +#line 326 "./util/configparser.y" { struct config_stub* s; OUTYY(("\nP(forward_zone:)\n")); @@ -2759,11 +3429,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2763 "util/configparser.c" +#line 3433 "util/configparser.c" break; - case 255: /* viewstart: VAR_VIEW */ -#line 343 "util/configparser.y" + case 255: +#line 343 "./util/configparser.y" { struct config_view* s; OUTYY(("\nP(view:)\n")); @@ -2776,11 +3446,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2780 "util/configparser.c" +#line 3450 "util/configparser.c" break; - case 265: /* authstart: VAR_AUTH_ZONE */ -#line 362 "util/configparser.y" + case 265: +#line 362 "./util/configparser.y" { struct config_auth* s; OUTYY(("\nP(auth_zone:)\n")); @@ -2797,11 +3467,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2801 "util/configparser.c" +#line 3471 "util/configparser.c" break; - case 277: /* rpz_tag: VAR_TAGS STRING_ARG */ -#line 387 "util/configparser.y" + case 277: +#line 387 "./util/configparser.y" { uint8_t* bitlist; size_t len = 0; @@ -2818,11 +3488,11 @@ yyreduce: } } -#line 2822 "util/configparser.c" +#line 3492 "util/configparser.c" break; - case 278: /* rpz_action_override: VAR_RPZ_ACTION_OVERRIDE STRING_ARG */ -#line 406 "util/configparser.y" + case 278: +#line 406 "./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 && @@ -2837,21 +3507,21 @@ yyreduce: cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); } } -#line 2841 "util/configparser.c" +#line 3511 "util/configparser.c" break; - case 279: /* rpz_cname_override: VAR_RPZ_CNAME_OVERRIDE STRING_ARG */ -#line 423 "util/configparser.y" + case 279: +#line 423 "./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 2851 "util/configparser.c" +#line 3521 "util/configparser.c" break; - case 280: /* rpz_log: VAR_RPZ_LOG STRING_ARG */ -#line 431 "util/configparser.y" + case 280: +#line 431 "./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) @@ -2859,21 +3529,21 @@ yyreduce: else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2863 "util/configparser.c" +#line 3533 "util/configparser.c" break; - case 281: /* rpz_log_name: VAR_RPZ_LOG_NAME STRING_ARG */ -#line 441 "util/configparser.y" + case 281: +#line 441 "./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 2873 "util/configparser.c" +#line 3543 "util/configparser.c" break; - case 282: /* rpzstart: VAR_RPZ */ -#line 449 "util/configparser.y" + case 282: +#line 449 "./util/configparser.y" { struct config_auth* s; OUTYY(("\nP(rpz:)\n")); @@ -2889,11 +3559,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2893 "util/configparser.c" +#line 3563 "util/configparser.c" break; - case 295: /* server_num_threads: VAR_NUM_THREADS STRING_ARG */ -#line 472 "util/configparser.y" + case 295: +#line 472 "./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) @@ -2901,11 +3571,11 @@ yyreduce: else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2905 "util/configparser.c" +#line 3575 "util/configparser.c" break; - case 296: /* server_verbosity: VAR_VERBOSITY STRING_ARG */ -#line 481 "util/configparser.y" + case 296: +#line 481 "./util/configparser.y" { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -2913,11 +3583,11 @@ yyreduce: else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2917 "util/configparser.c" +#line 3587 "util/configparser.c" break; - case 297: /* server_statistics_interval: VAR_STATISTICS_INTERVAL STRING_ARG */ -#line 490 "util/configparser.y" + case 297: +#line 490 "./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) @@ -2927,11 +3597,11 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2931 "util/configparser.c" +#line 3601 "util/configparser.c" break; - case 298: /* server_statistics_cumulative: VAR_STATISTICS_CUMULATIVE STRING_ARG */ -#line 501 "util/configparser.y" + case 298: +#line 501 "./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) @@ -2939,11 +3609,11 @@ yyreduce: else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2943 "util/configparser.c" +#line 3613 "util/configparser.c" break; - case 299: /* server_extended_statistics: VAR_EXTENDED_STATISTICS STRING_ARG */ -#line 510 "util/configparser.y" + case 299: +#line 510 "./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) @@ -2951,11 +3621,11 @@ yyreduce: else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2955 "util/configparser.c" +#line 3625 "util/configparser.c" break; - case 300: /* server_shm_enable: VAR_SHM_ENABLE STRING_ARG */ -#line 519 "util/configparser.y" + case 300: +#line 519 "./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) @@ -2963,11 +3633,11 @@ yyreduce: else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2967 "util/configparser.c" +#line 3637 "util/configparser.c" break; - case 301: /* server_shm_key: VAR_SHM_KEY STRING_ARG */ -#line 528 "util/configparser.y" + case 301: +#line 528 "./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) @@ -2977,11 +3647,11 @@ yyreduce: else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2981 "util/configparser.c" +#line 3651 "util/configparser.c" break; - case 302: /* server_port: VAR_PORT STRING_ARG */ -#line 539 "util/configparser.y" + case 302: +#line 539 "./util/configparser.y" { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -2989,11 +3659,11 @@ yyreduce: else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2993 "util/configparser.c" +#line 3663 "util/configparser.c" break; - case 303: /* server_send_client_subnet: VAR_SEND_CLIENT_SUBNET STRING_ARG */ -#line 548 "util/configparser.y" + case 303: +#line 548 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str))); @@ -3004,11 +3674,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3008 "util/configparser.c" +#line 3678 "util/configparser.c" break; - case 304: /* server_client_subnet_zone: VAR_CLIENT_SUBNET_ZONE STRING_ARG */ -#line 560 "util/configparser.y" + case 304: +#line 560 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str))); @@ -3020,11 +3690,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3024 "util/configparser.c" +#line 3694 "util/configparser.c" break; - case 305: /* server_client_subnet_always_forward: VAR_CLIENT_SUBNET_ALWAYS_FORWARD STRING_ARG */ -#line 574 "util/configparser.y" + case 305: +#line 574 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str))); @@ -3038,11 +3708,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3042 "util/configparser.c" +#line 3712 "util/configparser.c" break; - case 306: /* server_client_subnet_opcode: VAR_CLIENT_SUBNET_OPCODE STRING_ARG */ -#line 589 "util/configparser.y" + case 306: +#line 589 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str))); @@ -3052,11 +3722,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3056 "util/configparser.c" +#line 3726 "util/configparser.c" break; - case 307: /* server_max_client_subnet_ipv4: VAR_MAX_CLIENT_SUBNET_IPV4 STRING_ARG */ -#line 600 "util/configparser.y" + case 307: +#line 600 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -3072,11 +3742,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3076 "util/configparser.c" +#line 3746 "util/configparser.c" break; - case 308: /* server_max_client_subnet_ipv6: VAR_MAX_CLIENT_SUBNET_IPV6 STRING_ARG */ -#line 617 "util/configparser.y" + case 308: +#line 617 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3092,11 +3762,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3096 "util/configparser.c" +#line 3766 "util/configparser.c" break; - case 309: /* server_min_client_subnet_ipv4: VAR_MIN_CLIENT_SUBNET_IPV4 STRING_ARG */ -#line 634 "util/configparser.y" + case 309: +#line 634 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -3112,11 +3782,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3116 "util/configparser.c" +#line 3786 "util/configparser.c" break; - case 310: /* server_min_client_subnet_ipv6: VAR_MIN_CLIENT_SUBNET_IPV6 STRING_ARG */ -#line 651 "util/configparser.y" + case 310: +#line 651 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3132,11 +3802,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3136 "util/configparser.c" +#line 3806 "util/configparser.c" break; - case 311: /* server_max_ecs_tree_size_ipv4: VAR_MAX_ECS_TREE_SIZE_IPV4 STRING_ARG */ -#line 668 "util/configparser.y" + case 311: +#line 668 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str))); @@ -3150,11 +3820,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3154 "util/configparser.c" +#line 3824 "util/configparser.c" break; - case 312: /* server_max_ecs_tree_size_ipv6: VAR_MAX_ECS_TREE_SIZE_IPV6 STRING_ARG */ -#line 683 "util/configparser.y" + case 312: +#line 683 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str))); @@ -3168,11 +3838,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3172 "util/configparser.c" +#line 3842 "util/configparser.c" break; - case 313: /* server_interface: VAR_INTERFACE STRING_ARG */ -#line 698 "util/configparser.y" + case 313: +#line 698 "./util/configparser.y" { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_ifs == 0) @@ -3184,11 +3854,11 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 3188 "util/configparser.c" +#line 3858 "util/configparser.c" break; - case 314: /* server_outgoing_interface: VAR_OUTGOING_INTERFACE STRING_ARG */ -#line 711 "util/configparser.y" + case 314: +#line 711 "./util/configparser.y" { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_out_ifs == 0) @@ -3202,11 +3872,11 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 3206 "util/configparser.c" +#line 3876 "util/configparser.c" break; - case 315: /* server_outgoing_range: VAR_OUTGOING_RANGE STRING_ARG */ -#line 726 "util/configparser.y" + case 315: +#line 726 "./util/configparser.y" { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3214,11 +3884,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3218 "util/configparser.c" +#line 3888 "util/configparser.c" break; - case 316: /* server_outgoing_port_permit: VAR_OUTGOING_PORT_PERMIT STRING_ARG */ -#line 735 "util/configparser.y" + case 316: +#line 735 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 1, @@ -3226,11 +3896,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3230 "util/configparser.c" +#line 3900 "util/configparser.c" break; - case 317: /* server_outgoing_port_avoid: VAR_OUTGOING_PORT_AVOID STRING_ARG */ -#line 744 "util/configparser.y" + case 317: +#line 744 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 0, @@ -3238,11 +3908,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3242 "util/configparser.c" +#line 3912 "util/configparser.c" break; - case 318: /* server_outgoing_num_tcp: VAR_OUTGOING_NUM_TCP STRING_ARG */ -#line 753 "util/configparser.y" + case 318: +#line 753 "./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) @@ -3250,11 +3920,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3254 "util/configparser.c" +#line 3924 "util/configparser.c" break; - case 319: /* server_incoming_num_tcp: VAR_INCOMING_NUM_TCP STRING_ARG */ -#line 762 "util/configparser.y" + case 319: +#line 762 "./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) @@ -3262,11 +3932,11 @@ yyreduce: else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3266 "util/configparser.c" +#line 3936 "util/configparser.c" break; - case 320: /* server_interface_automatic: VAR_INTERFACE_AUTOMATIC STRING_ARG */ -#line 771 "util/configparser.y" + case 320: +#line 771 "./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) @@ -3274,11 +3944,11 @@ yyreduce: else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3278 "util/configparser.c" +#line 3948 "util/configparser.c" break; - case 321: /* server_do_ip4: VAR_DO_IP4 STRING_ARG */ -#line 780 "util/configparser.y" + case 321: +#line 780 "./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) @@ -3286,11 +3956,11 @@ yyreduce: else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3290 "util/configparser.c" +#line 3960 "util/configparser.c" break; - case 322: /* server_do_ip6: VAR_DO_IP6 STRING_ARG */ -#line 789 "util/configparser.y" + case 322: +#line 789 "./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) @@ -3298,11 +3968,11 @@ yyreduce: else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3302 "util/configparser.c" +#line 3972 "util/configparser.c" break; - case 323: /* server_do_udp: VAR_DO_UDP STRING_ARG */ -#line 798 "util/configparser.y" + case 323: +#line 798 "./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) @@ -3310,11 +3980,11 @@ yyreduce: else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3314 "util/configparser.c" +#line 3984 "util/configparser.c" break; - case 324: /* server_do_tcp: VAR_DO_TCP STRING_ARG */ -#line 807 "util/configparser.y" + case 324: +#line 807 "./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) @@ -3322,11 +3992,11 @@ yyreduce: else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3326 "util/configparser.c" +#line 3996 "util/configparser.c" break; - case 325: /* server_prefer_ip4: VAR_PREFER_IP4 STRING_ARG */ -#line 816 "util/configparser.y" + case 325: +#line 816 "./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) @@ -3334,11 +4004,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3338 "util/configparser.c" +#line 4008 "util/configparser.c" break; - case 326: /* server_prefer_ip6: VAR_PREFER_IP6 STRING_ARG */ -#line 825 "util/configparser.y" + case 326: +#line 825 "./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) @@ -3346,11 +4016,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3350 "util/configparser.c" +#line 4020 "util/configparser.c" break; - case 327: /* server_tcp_mss: VAR_TCP_MSS STRING_ARG */ -#line 834 "util/configparser.y" + case 327: +#line 834 "./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) @@ -3358,11 +4028,11 @@ yyreduce: else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3362 "util/configparser.c" +#line 4032 "util/configparser.c" break; - case 328: /* server_outgoing_tcp_mss: VAR_OUTGOING_TCP_MSS STRING_ARG */ -#line 843 "util/configparser.y" + case 328: +#line 843 "./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) @@ -3370,11 +4040,11 @@ yyreduce: else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3374 "util/configparser.c" +#line 4044 "util/configparser.c" break; - case 329: /* server_tcp_idle_timeout: VAR_TCP_IDLE_TIMEOUT STRING_ARG */ -#line 852 "util/configparser.y" + case 329: +#line 852 "./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) @@ -3386,11 +4056,11 @@ yyreduce: else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3390 "util/configparser.c" +#line 4060 "util/configparser.c" break; - case 330: /* server_max_reuse_tcp_queries: VAR_MAX_REUSE_TCP_QUERIES STRING_ARG */ -#line 865 "util/configparser.y" + case 330: +#line 865 "./util/configparser.y" { OUTYY(("P(server_max_reuse_tcp_queries:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3400,11 +4070,11 @@ yyreduce: else cfg_parser->cfg->max_reuse_tcp_queries = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3404 "util/configparser.c" +#line 4074 "util/configparser.c" break; - case 331: /* server_tcp_reuse_timeout: VAR_TCP_REUSE_TIMEOUT STRING_ARG */ -#line 876 "util/configparser.y" + case 331: +#line 876 "./util/configparser.y" { OUTYY(("P(server_tcp_reuse_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3414,11 +4084,11 @@ yyreduce: else cfg_parser->cfg->tcp_reuse_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3418 "util/configparser.c" +#line 4088 "util/configparser.c" break; - case 332: /* server_tcp_keepalive: VAR_EDNS_TCP_KEEPALIVE STRING_ARG */ -#line 887 "util/configparser.y" + case 332: +#line 887 "./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) @@ -3426,11 +4096,11 @@ yyreduce: else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3430 "util/configparser.c" +#line 4100 "util/configparser.c" break; - case 333: /* server_tcp_keepalive_timeout: VAR_EDNS_TCP_KEEPALIVE_TIMEOUT STRING_ARG */ -#line 896 "util/configparser.y" + case 333: +#line 896 "./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) @@ -3442,11 +4112,11 @@ yyreduce: else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3446 "util/configparser.c" +#line 4116 "util/configparser.c" break; - case 334: /* server_tcp_upstream: VAR_TCP_UPSTREAM STRING_ARG */ -#line 909 "util/configparser.y" + case 334: +#line 909 "./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) @@ -3454,11 +4124,11 @@ yyreduce: else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3458 "util/configparser.c" +#line 4128 "util/configparser.c" break; - case 335: /* server_udp_upstream_without_downstream: VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM STRING_ARG */ -#line 918 "util/configparser.y" + case 335: +#line 918 "./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) @@ -3466,11 +4136,11 @@ yyreduce: else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3470 "util/configparser.c" +#line 4140 "util/configparser.c" break; - case 336: /* server_ssl_upstream: VAR_SSL_UPSTREAM STRING_ARG */ -#line 927 "util/configparser.y" + case 336: +#line 927 "./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) @@ -3478,31 +4148,31 @@ yyreduce: else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3482 "util/configparser.c" +#line 4152 "util/configparser.c" break; - case 337: /* server_ssl_service_key: VAR_SSL_SERVICE_KEY STRING_ARG */ -#line 936 "util/configparser.y" + case 337: +#line 936 "./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 3492 "util/configparser.c" +#line 4162 "util/configparser.c" break; - case 338: /* server_ssl_service_pem: VAR_SSL_SERVICE_PEM STRING_ARG */ -#line 943 "util/configparser.y" + case 338: +#line 943 "./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 3502 "util/configparser.c" +#line 4172 "util/configparser.c" break; - case 339: /* server_ssl_port: VAR_SSL_PORT STRING_ARG */ -#line 950 "util/configparser.y" + case 339: +#line 950 "./util/configparser.y" { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3510,21 +4180,21 @@ yyreduce: else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3514 "util/configparser.c" +#line 4184 "util/configparser.c" break; - case 340: /* server_tls_cert_bundle: VAR_TLS_CERT_BUNDLE STRING_ARG */ -#line 959 "util/configparser.y" + case 340: +#line 959 "./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 3524 "util/configparser.c" +#line 4194 "util/configparser.c" break; - case 341: /* server_tls_win_cert: VAR_TLS_WIN_CERT STRING_ARG */ -#line 966 "util/configparser.y" + case 341: +#line 966 "./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) @@ -3532,53 +4202,53 @@ yyreduce: else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3536 "util/configparser.c" +#line 4206 "util/configparser.c" break; - case 342: /* server_tls_additional_port: VAR_TLS_ADDITIONAL_PORT STRING_ARG */ -#line 975 "util/configparser.y" + case 342: +#line 975 "./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 3547 "util/configparser.c" +#line 4217 "util/configparser.c" break; - case 343: /* server_tls_ciphers: VAR_TLS_CIPHERS STRING_ARG */ -#line 983 "util/configparser.y" + case 343: +#line 983 "./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 3557 "util/configparser.c" +#line 4227 "util/configparser.c" break; - case 344: /* server_tls_ciphersuites: VAR_TLS_CIPHERSUITES STRING_ARG */ -#line 990 "util/configparser.y" + case 344: +#line 990 "./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 3567 "util/configparser.c" +#line 4237 "util/configparser.c" break; - case 345: /* server_tls_session_ticket_keys: VAR_TLS_SESSION_TICKET_KEYS STRING_ARG */ -#line 997 "util/configparser.y" + case 345: +#line 997 "./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 3578 "util/configparser.c" +#line 4248 "util/configparser.c" break; - case 346: /* server_tls_use_sni: VAR_TLS_USE_SNI STRING_ARG */ -#line 1005 "util/configparser.y" + case 346: +#line 1005 "./util/configparser.y" { OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3586,11 +4256,11 @@ yyreduce: else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3590 "util/configparser.c" +#line 4260 "util/configparser.c" break; - case 347: /* server_https_port: VAR_HTTPS_PORT STRING_ARG */ -#line 1014 "util/configparser.y" + case 347: +#line 1014 "./util/configparser.y" { OUTYY(("P(server_https_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3598,11 +4268,11 @@ yyreduce: else cfg_parser->cfg->https_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3602 "util/configparser.c" +#line 4272 "util/configparser.c" break; - case 348: /* server_http_endpoint: VAR_HTTP_ENDPOINT STRING_ARG */ -#line 1022 "util/configparser.y" + case 348: +#line 1022 "./util/configparser.y" { OUTYY(("P(server_http_endpoint:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->http_endpoint); @@ -3618,11 +4288,11 @@ yyreduce: cfg_parser->cfg->http_endpoint = (yyvsp[0].str); } } -#line 3622 "util/configparser.c" +#line 4292 "util/configparser.c" break; - case 349: /* server_http_max_streams: VAR_HTTP_MAX_STREAMS STRING_ARG */ -#line 1038 "util/configparser.y" + case 349: +#line 1038 "./util/configparser.y" { OUTYY(("P(server_http_max_streams:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3630,11 +4300,11 @@ yyreduce: else cfg_parser->cfg->http_max_streams = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3634 "util/configparser.c" +#line 4304 "util/configparser.c" break; - case 350: /* server_http_query_buffer_size: VAR_HTTP_QUERY_BUFFER_SIZE STRING_ARG */ -#line 1046 "util/configparser.y" + case 350: +#line 1046 "./util/configparser.y" { OUTYY(("P(server_http_query_buffer_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), @@ -3642,11 +4312,11 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3646 "util/configparser.c" +#line 4316 "util/configparser.c" break; - case 351: /* server_http_response_buffer_size: VAR_HTTP_RESPONSE_BUFFER_SIZE STRING_ARG */ -#line 1054 "util/configparser.y" + case 351: +#line 1054 "./util/configparser.y" { OUTYY(("P(server_http_response_buffer_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), @@ -3654,11 +4324,11 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3658 "util/configparser.c" +#line 4328 "util/configparser.c" break; - case 352: /* server_http_nodelay: VAR_HTTP_NODELAY STRING_ARG */ -#line 1062 "util/configparser.y" + case 352: +#line 1062 "./util/configparser.y" { OUTYY(("P(server_http_nodelay:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3666,11 +4336,11 @@ yyreduce: else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3670 "util/configparser.c" +#line 4340 "util/configparser.c" break; - case 353: /* server_http_notls_downstream: VAR_HTTP_NOTLS_DOWNSTREAM STRING_ARG */ -#line 1070 "util/configparser.y" + case 353: +#line 1070 "./util/configparser.y" { OUTYY(("P(server_http_notls_downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3678,11 +4348,11 @@ yyreduce: else cfg_parser->cfg->http_notls_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3682 "util/configparser.c" +#line 4352 "util/configparser.c" break; - case 354: /* server_use_systemd: VAR_USE_SYSTEMD STRING_ARG */ -#line 1078 "util/configparser.y" + case 354: +#line 1078 "./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) @@ -3690,11 +4360,11 @@ yyreduce: else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3694 "util/configparser.c" +#line 4364 "util/configparser.c" break; - case 355: /* server_do_daemonize: VAR_DO_DAEMONIZE STRING_ARG */ -#line 1087 "util/configparser.y" + case 355: +#line 1087 "./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) @@ -3702,11 +4372,11 @@ yyreduce: else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3706 "util/configparser.c" +#line 4376 "util/configparser.c" break; - case 356: /* server_use_syslog: VAR_USE_SYSLOG STRING_ARG */ -#line 1096 "util/configparser.y" + case 356: +#line 1096 "./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) @@ -3719,11 +4389,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3723 "util/configparser.c" +#line 4393 "util/configparser.c" break; - case 357: /* server_log_time_ascii: VAR_LOG_TIME_ASCII STRING_ARG */ -#line 1110 "util/configparser.y" + case 357: +#line 1110 "./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) @@ -3731,11 +4401,11 @@ yyreduce: else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3735 "util/configparser.c" +#line 4405 "util/configparser.c" break; - case 358: /* server_log_queries: VAR_LOG_QUERIES STRING_ARG */ -#line 1119 "util/configparser.y" + case 358: +#line 1119 "./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) @@ -3743,11 +4413,11 @@ yyreduce: else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3747 "util/configparser.c" +#line 4417 "util/configparser.c" break; - case 359: /* server_log_replies: VAR_LOG_REPLIES STRING_ARG */ -#line 1128 "util/configparser.y" + case 359: +#line 1128 "./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) @@ -3755,11 +4425,11 @@ yyreduce: else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3759 "util/configparser.c" +#line 4429 "util/configparser.c" break; - case 360: /* server_log_tag_queryreply: VAR_LOG_TAG_QUERYREPLY STRING_ARG */ -#line 1137 "util/configparser.y" + case 360: +#line 1137 "./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) @@ -3767,11 +4437,11 @@ yyreduce: else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3771 "util/configparser.c" +#line 4441 "util/configparser.c" break; - case 361: /* server_log_servfail: VAR_LOG_SERVFAIL STRING_ARG */ -#line 1146 "util/configparser.y" + case 361: +#line 1146 "./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) @@ -3779,11 +4449,11 @@ yyreduce: else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3783 "util/configparser.c" +#line 4453 "util/configparser.c" break; - case 362: /* server_log_local_actions: VAR_LOG_LOCAL_ACTIONS STRING_ARG */ -#line 1155 "util/configparser.y" + case 362: +#line 1155 "./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) @@ -3791,31 +4461,31 @@ yyreduce: else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3795 "util/configparser.c" +#line 4465 "util/configparser.c" break; - case 363: /* server_chroot: VAR_CHROOT STRING_ARG */ -#line 1164 "util/configparser.y" + case 363: +#line 1164 "./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 3805 "util/configparser.c" +#line 4475 "util/configparser.c" break; - case 364: /* server_username: VAR_USERNAME STRING_ARG */ -#line 1171 "util/configparser.y" + case 364: +#line 1171 "./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 3815 "util/configparser.c" +#line 4485 "util/configparser.c" break; - case 365: /* server_directory: VAR_DIRECTORY STRING_ARG */ -#line 1178 "util/configparser.y" + case 365: +#line 1178 "./util/configparser.y" { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->directory); @@ -3840,105 +4510,105 @@ yyreduce: } } } -#line 3844 "util/configparser.c" +#line 4514 "util/configparser.c" break; - case 366: /* server_logfile: VAR_LOGFILE STRING_ARG */ -#line 1204 "util/configparser.y" + case 366: +#line 1204 "./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 3855 "util/configparser.c" +#line 4525 "util/configparser.c" break; - case 367: /* server_pidfile: VAR_PIDFILE STRING_ARG */ -#line 1212 "util/configparser.y" + case 367: +#line 1212 "./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 3865 "util/configparser.c" +#line 4535 "util/configparser.c" break; - case 368: /* server_root_hints: VAR_ROOT_HINTS STRING_ARG */ -#line 1219 "util/configparser.y" + case 368: +#line 1219 "./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 3875 "util/configparser.c" +#line 4545 "util/configparser.c" break; - case 369: /* server_dlv_anchor_file: VAR_DLV_ANCHOR_FILE STRING_ARG */ -#line 1226 "util/configparser.y" + case 369: +#line 1226 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str))); log_warn("option dlv-anchor-file ignored: DLV is decommissioned"); free((yyvsp[0].str)); } -#line 3885 "util/configparser.c" +#line 4555 "util/configparser.c" break; - case 370: /* server_dlv_anchor: VAR_DLV_ANCHOR STRING_ARG */ -#line 1233 "util/configparser.y" + case 370: +#line 1233 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str))); log_warn("option dlv-anchor ignored: DLV is decommissioned"); free((yyvsp[0].str)); } -#line 3895 "util/configparser.c" +#line 4565 "util/configparser.c" break; - case 371: /* server_auto_trust_anchor_file: VAR_AUTO_TRUST_ANCHOR_FILE STRING_ARG */ -#line 1240 "util/configparser.y" + case 371: +#line 1240 "./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 3906 "util/configparser.c" +#line 4576 "util/configparser.c" break; - case 372: /* server_trust_anchor_file: VAR_TRUST_ANCHOR_FILE STRING_ARG */ -#line 1248 "util/configparser.y" + case 372: +#line 1248 "./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 3917 "util/configparser.c" +#line 4587 "util/configparser.c" break; - case 373: /* server_trusted_keys_file: VAR_TRUSTED_KEYS_FILE STRING_ARG */ -#line 1256 "util/configparser.y" + case 373: +#line 1256 "./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 3928 "util/configparser.c" +#line 4598 "util/configparser.c" break; - case 374: /* server_trust_anchor: VAR_TRUST_ANCHOR STRING_ARG */ -#line 1264 "util/configparser.y" + case 374: +#line 1264 "./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 3938 "util/configparser.c" +#line 4608 "util/configparser.c" break; - case 375: /* server_trust_anchor_signaling: VAR_TRUST_ANCHOR_SIGNALING STRING_ARG */ -#line 1271 "util/configparser.y" + case 375: +#line 1271 "./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) @@ -3948,11 +4618,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3952 "util/configparser.c" +#line 4622 "util/configparser.c" break; - case 376: /* server_root_key_sentinel: VAR_ROOT_KEY_SENTINEL STRING_ARG */ -#line 1282 "util/configparser.y" + case 376: +#line 1282 "./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) @@ -3962,21 +4632,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3966 "util/configparser.c" +#line 4636 "util/configparser.c" break; - case 377: /* server_domain_insecure: VAR_DOMAIN_INSECURE STRING_ARG */ -#line 1293 "util/configparser.y" + case 377: +#line 1293 "./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 3976 "util/configparser.c" +#line 4646 "util/configparser.c" break; - case 378: /* server_hide_identity: VAR_HIDE_IDENTITY STRING_ARG */ -#line 1300 "util/configparser.y" + case 378: +#line 1300 "./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) @@ -3984,11 +4654,11 @@ yyreduce: else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3988 "util/configparser.c" +#line 4658 "util/configparser.c" break; - case 379: /* server_hide_version: VAR_HIDE_VERSION STRING_ARG */ -#line 1309 "util/configparser.y" + case 379: +#line 1309 "./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) @@ -3996,11 +4666,11 @@ yyreduce: else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4000 "util/configparser.c" +#line 4670 "util/configparser.c" break; - case 380: /* server_hide_trustanchor: VAR_HIDE_TRUSTANCHOR STRING_ARG */ -#line 1318 "util/configparser.y" + case 380: +#line 1318 "./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) @@ -4008,31 +4678,31 @@ yyreduce: else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4012 "util/configparser.c" +#line 4682 "util/configparser.c" break; - case 381: /* server_identity: VAR_IDENTITY STRING_ARG */ -#line 1327 "util/configparser.y" + case 381: +#line 1327 "./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 4022 "util/configparser.c" +#line 4692 "util/configparser.c" break; - case 382: /* server_version: VAR_VERSION STRING_ARG */ -#line 1334 "util/configparser.y" + case 382: +#line 1334 "./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 4032 "util/configparser.c" +#line 4702 "util/configparser.c" break; - case 383: /* server_nsid: VAR_NSID STRING_ARG */ -#line 1341 "util/configparser.y" + case 383: +#line 1341 "./util/configparser.y" { OUTYY(("P(server_nsid:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->nsid_cfg_str); @@ -4047,33 +4717,33 @@ yyreduce: yyerror("the NSID must be either a hex string or an " "ascii character string prepended with ascii_."); } -#line 4051 "util/configparser.c" +#line 4721 "util/configparser.c" break; - case 384: /* server_so_rcvbuf: VAR_SO_RCVBUF STRING_ARG */ -#line 1357 "util/configparser.y" + case 384: +#line 1357 "./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 4062 "util/configparser.c" +#line 4732 "util/configparser.c" break; - case 385: /* server_so_sndbuf: VAR_SO_SNDBUF STRING_ARG */ -#line 1365 "util/configparser.y" + case 385: +#line 1365 "./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 4073 "util/configparser.c" +#line 4743 "util/configparser.c" break; - case 386: /* server_so_reuseport: VAR_SO_REUSEPORT STRING_ARG */ -#line 1373 "util/configparser.y" + case 386: +#line 1373 "./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) @@ -4082,11 +4752,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4086 "util/configparser.c" +#line 4756 "util/configparser.c" break; - case 387: /* server_ip_transparent: VAR_IP_TRANSPARENT STRING_ARG */ -#line 1383 "util/configparser.y" + case 387: +#line 1383 "./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) @@ -4095,11 +4765,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4099 "util/configparser.c" +#line 4769 "util/configparser.c" break; - case 388: /* server_ip_freebind: VAR_IP_FREEBIND STRING_ARG */ -#line 1393 "util/configparser.y" + case 388: +#line 1393 "./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) @@ -4108,11 +4778,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4112 "util/configparser.c" +#line 4782 "util/configparser.c" break; - case 389: /* server_ip_dscp: VAR_IP_DSCP STRING_ARG */ -#line 1403 "util/configparser.y" + case 389: +#line 1403 "./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) @@ -4125,22 +4795,22 @@ yyreduce: cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4129 "util/configparser.c" +#line 4799 "util/configparser.c" break; - case 390: /* server_stream_wait_size: VAR_STREAM_WAIT_SIZE STRING_ARG */ -#line 1417 "util/configparser.y" + case 390: +#line 1417 "./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 4140 "util/configparser.c" +#line 4810 "util/configparser.c" break; - case 391: /* server_edns_buffer_size: VAR_EDNS_BUFFER_SIZE STRING_ARG */ -#line 1425 "util/configparser.y" + case 391: +#line 1425 "./util/configparser.y" { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4152,11 +4822,11 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4156 "util/configparser.c" +#line 4826 "util/configparser.c" break; - case 392: /* server_msg_buffer_size: VAR_MSG_BUFFER_SIZE STRING_ARG */ -#line 1438 "util/configparser.y" + case 392: +#line 1438 "./util/configparser.y" { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4166,22 +4836,22 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4170 "util/configparser.c" +#line 4840 "util/configparser.c" break; - case 393: /* server_msg_cache_size: VAR_MSG_CACHE_SIZE STRING_ARG */ -#line 1449 "util/configparser.y" + case 393: +#line 1449 "./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 4181 "util/configparser.c" +#line 4851 "util/configparser.c" break; - case 394: /* server_msg_cache_slabs: VAR_MSG_CACHE_SLABS STRING_ARG */ -#line 1457 "util/configparser.y" + case 394: +#line 1457 "./util/configparser.y" { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4193,11 +4863,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4197 "util/configparser.c" +#line 4867 "util/configparser.c" break; - case 395: /* server_num_queries_per_thread: VAR_NUM_QUERIES_PER_THREAD STRING_ARG */ -#line 1470 "util/configparser.y" + case 395: +#line 1470 "./util/configparser.y" { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4205,11 +4875,11 @@ yyreduce: else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4209 "util/configparser.c" +#line 4879 "util/configparser.c" break; - case 396: /* server_jostle_timeout: VAR_JOSTLE_TIMEOUT STRING_ARG */ -#line 1479 "util/configparser.y" + case 396: +#line 1479 "./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) @@ -4217,11 +4887,11 @@ yyreduce: else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4221 "util/configparser.c" +#line 4891 "util/configparser.c" break; - case 397: /* server_delay_close: VAR_DELAY_CLOSE STRING_ARG */ -#line 1488 "util/configparser.y" + case 397: +#line 1488 "./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) @@ -4229,11 +4899,11 @@ yyreduce: else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4233 "util/configparser.c" +#line 4903 "util/configparser.c" break; - case 398: /* server_udp_connect: VAR_UDP_CONNECT STRING_ARG */ -#line 1497 "util/configparser.y" + case 398: +#line 1497 "./util/configparser.y" { OUTYY(("P(server_udp_connect:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4241,11 +4911,11 @@ yyreduce: else cfg_parser->cfg->udp_connect = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4245 "util/configparser.c" +#line 4915 "util/configparser.c" break; - case 399: /* server_unblock_lan_zones: VAR_UNBLOCK_LAN_ZONES STRING_ARG */ -#line 1506 "util/configparser.y" + case 399: +#line 1506 "./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) @@ -4254,11 +4924,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4258 "util/configparser.c" +#line 4928 "util/configparser.c" break; - case 400: /* server_insecure_lan_zones: VAR_INSECURE_LAN_ZONES STRING_ARG */ -#line 1516 "util/configparser.y" + case 400: +#line 1516 "./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) @@ -4267,22 +4937,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4271 "util/configparser.c" +#line 4941 "util/configparser.c" break; - case 401: /* server_rrset_cache_size: VAR_RRSET_CACHE_SIZE STRING_ARG */ -#line 1526 "util/configparser.y" + case 401: +#line 1526 "./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 4282 "util/configparser.c" +#line 4952 "util/configparser.c" break; - case 402: /* server_rrset_cache_slabs: VAR_RRSET_CACHE_SLABS STRING_ARG */ -#line 1534 "util/configparser.y" + case 402: +#line 1534 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4294,11 +4964,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4298 "util/configparser.c" +#line 4968 "util/configparser.c" break; - case 403: /* server_infra_host_ttl: VAR_INFRA_HOST_TTL STRING_ARG */ -#line 1547 "util/configparser.y" + case 403: +#line 1547 "./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) @@ -4306,22 +4976,22 @@ yyreduce: else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4310 "util/configparser.c" +#line 4980 "util/configparser.c" break; - case 404: /* server_infra_lame_ttl: VAR_INFRA_LAME_TTL STRING_ARG */ -#line 1556 "util/configparser.y" + case 404: +#line 1556 "./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 4321 "util/configparser.c" +#line 4991 "util/configparser.c" break; - case 405: /* server_infra_cache_numhosts: VAR_INFRA_CACHE_NUMHOSTS STRING_ARG */ -#line 1564 "util/configparser.y" + case 405: +#line 1564 "./util/configparser.y" { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4329,22 +4999,22 @@ yyreduce: else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4333 "util/configparser.c" +#line 5003 "util/configparser.c" break; - case 406: /* server_infra_cache_lame_size: VAR_INFRA_CACHE_LAME_SIZE STRING_ARG */ -#line 1573 "util/configparser.y" + case 406: +#line 1573 "./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 4344 "util/configparser.c" +#line 5014 "util/configparser.c" break; - case 407: /* server_infra_cache_slabs: VAR_INFRA_CACHE_SLABS STRING_ARG */ -#line 1581 "util/configparser.y" + case 407: +#line 1581 "./util/configparser.y" { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4356,11 +5026,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4360 "util/configparser.c" +#line 5030 "util/configparser.c" break; - case 408: /* server_infra_cache_min_rtt: VAR_INFRA_CACHE_MIN_RTT STRING_ARG */ -#line 1594 "util/configparser.y" + case 408: +#line 1594 "./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) @@ -4368,11 +5038,11 @@ yyreduce: else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4372 "util/configparser.c" +#line 5042 "util/configparser.c" break; - case 409: /* server_infra_keep_probing: VAR_INFRA_KEEP_PROBING STRING_ARG */ -#line 1603 "util/configparser.y" + case 409: +#line 1603 "./util/configparser.y" { OUTYY(("P(server_infra_keep_probing:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4381,21 +5051,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4385 "util/configparser.c" +#line 5055 "util/configparser.c" break; - case 410: /* server_target_fetch_policy: VAR_TARGET_FETCH_POLICY STRING_ARG */ -#line 1613 "util/configparser.y" + case 410: +#line 1613 "./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 4395 "util/configparser.c" +#line 5065 "util/configparser.c" break; - case 411: /* server_harden_short_bufsize: VAR_HARDEN_SHORT_BUFSIZE STRING_ARG */ -#line 1620 "util/configparser.y" + case 411: +#line 1620 "./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) @@ -4404,11 +5074,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4408 "util/configparser.c" +#line 5078 "util/configparser.c" break; - case 412: /* server_harden_large_queries: VAR_HARDEN_LARGE_QUERIES STRING_ARG */ -#line 1630 "util/configparser.y" + case 412: +#line 1630 "./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) @@ -4417,11 +5087,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4421 "util/configparser.c" +#line 5091 "util/configparser.c" break; - case 413: /* server_harden_glue: VAR_HARDEN_GLUE STRING_ARG */ -#line 1640 "util/configparser.y" + case 413: +#line 1640 "./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) @@ -4430,11 +5100,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4434 "util/configparser.c" +#line 5104 "util/configparser.c" break; - case 414: /* server_harden_dnssec_stripped: VAR_HARDEN_DNSSEC_STRIPPED STRING_ARG */ -#line 1650 "util/configparser.y" + case 414: +#line 1650 "./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) @@ -4443,11 +5113,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4447 "util/configparser.c" +#line 5117 "util/configparser.c" break; - case 415: /* server_harden_below_nxdomain: VAR_HARDEN_BELOW_NXDOMAIN STRING_ARG */ -#line 1660 "util/configparser.y" + case 415: +#line 1660 "./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) @@ -4456,11 +5126,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4460 "util/configparser.c" +#line 5130 "util/configparser.c" break; - case 416: /* server_harden_referral_path: VAR_HARDEN_REFERRAL_PATH STRING_ARG */ -#line 1670 "util/configparser.y" + case 416: +#line 1670 "./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) @@ -4469,11 +5139,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4473 "util/configparser.c" +#line 5143 "util/configparser.c" break; - case 417: /* server_harden_algo_downgrade: VAR_HARDEN_ALGO_DOWNGRADE STRING_ARG */ -#line 1680 "util/configparser.y" + case 417: +#line 1680 "./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) @@ -4482,11 +5152,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4486 "util/configparser.c" +#line 5156 "util/configparser.c" break; - case 418: /* server_use_caps_for_id: VAR_USE_CAPS_FOR_ID STRING_ARG */ -#line 1690 "util/configparser.y" + case 418: +#line 1690 "./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) @@ -4495,41 +5165,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4499 "util/configparser.c" +#line 5169 "util/configparser.c" break; - case 419: /* server_caps_whitelist: VAR_CAPS_WHITELIST STRING_ARG */ -#line 1700 "util/configparser.y" + case 419: +#line 1700 "./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 4509 "util/configparser.c" +#line 5179 "util/configparser.c" break; - case 420: /* server_private_address: VAR_PRIVATE_ADDRESS STRING_ARG */ -#line 1707 "util/configparser.y" + case 420: +#line 1707 "./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 4519 "util/configparser.c" +#line 5189 "util/configparser.c" break; - case 421: /* server_private_domain: VAR_PRIVATE_DOMAIN STRING_ARG */ -#line 1714 "util/configparser.y" + case 421: +#line 1714 "./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 4529 "util/configparser.c" +#line 5199 "util/configparser.c" break; - case 422: /* server_prefetch: VAR_PREFETCH STRING_ARG */ -#line 1721 "util/configparser.y" + case 422: +#line 1721 "./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) @@ -4537,11 +5207,11 @@ yyreduce: else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4541 "util/configparser.c" +#line 5211 "util/configparser.c" break; - case 423: /* server_prefetch_key: VAR_PREFETCH_KEY STRING_ARG */ -#line 1730 "util/configparser.y" + case 423: +#line 1730 "./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) @@ -4549,11 +5219,11 @@ yyreduce: else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4553 "util/configparser.c" +#line 5223 "util/configparser.c" break; - case 424: /* server_deny_any: VAR_DENY_ANY STRING_ARG */ -#line 1739 "util/configparser.y" + case 424: +#line 1739 "./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) @@ -4561,11 +5231,11 @@ yyreduce: else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4565 "util/configparser.c" +#line 5235 "util/configparser.c" break; - case 425: /* server_unwanted_reply_threshold: VAR_UNWANTED_REPLY_THRESHOLD STRING_ARG */ -#line 1748 "util/configparser.y" + case 425: +#line 1748 "./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) @@ -4573,21 +5243,21 @@ yyreduce: else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4577 "util/configparser.c" +#line 5247 "util/configparser.c" break; - case 426: /* server_do_not_query_address: VAR_DO_NOT_QUERY_ADDRESS STRING_ARG */ -#line 1757 "util/configparser.y" + case 426: +#line 1757 "./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 4587 "util/configparser.c" +#line 5257 "util/configparser.c" break; - case 427: /* server_do_not_query_localhost: VAR_DO_NOT_QUERY_LOCALHOST STRING_ARG */ -#line 1764 "util/configparser.y" + case 427: +#line 1764 "./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) @@ -4596,11 +5266,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4600 "util/configparser.c" +#line 5270 "util/configparser.c" break; - case 428: /* server_access_control: VAR_ACCESS_CONTROL STRING_ARG STRING_ARG */ -#line 1774 "util/configparser.y" + case 428: +#line 1774 "./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 && @@ -4619,21 +5289,21 @@ yyreduce: fatal_exit("out of memory adding acl"); } } -#line 4623 "util/configparser.c" +#line 5293 "util/configparser.c" break; - case 429: /* server_module_conf: VAR_MODULE_CONF STRING_ARG */ -#line 1794 "util/configparser.y" + case 429: +#line 1794 "./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 4633 "util/configparser.c" +#line 5303 "util/configparser.c" break; - case 430: /* server_val_override_date: VAR_VAL_OVERRIDE_DATE STRING_ARG */ -#line 1801 "util/configparser.y" + case 430: +#line 1801 "./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) { @@ -4650,11 +5320,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4654 "util/configparser.c" +#line 5324 "util/configparser.c" break; - case 431: /* server_val_sig_skew_min: VAR_VAL_SIG_SKEW_MIN STRING_ARG */ -#line 1819 "util/configparser.y" + case 431: +#line 1819 "./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) { @@ -4666,11 +5336,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4670 "util/configparser.c" +#line 5340 "util/configparser.c" break; - case 432: /* server_val_sig_skew_max: VAR_VAL_SIG_SKEW_MAX STRING_ARG */ -#line 1832 "util/configparser.y" + case 432: +#line 1832 "./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) { @@ -4682,11 +5352,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4686 "util/configparser.c" +#line 5356 "util/configparser.c" break; - case 433: /* server_cache_max_ttl: VAR_CACHE_MAX_TTL STRING_ARG */ -#line 1845 "util/configparser.y" + case 433: +#line 1845 "./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) @@ -4694,11 +5364,11 @@ yyreduce: else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4698 "util/configparser.c" +#line 5368 "util/configparser.c" break; - case 434: /* server_cache_max_negative_ttl: VAR_CACHE_MAX_NEGATIVE_TTL STRING_ARG */ -#line 1854 "util/configparser.y" + case 434: +#line 1854 "./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) @@ -4706,11 +5376,11 @@ yyreduce: else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4710 "util/configparser.c" +#line 5380 "util/configparser.c" break; - case 435: /* server_cache_min_ttl: VAR_CACHE_MIN_TTL STRING_ARG */ -#line 1863 "util/configparser.y" + case 435: +#line 1863 "./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) @@ -4718,11 +5388,11 @@ yyreduce: else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4722 "util/configparser.c" +#line 5392 "util/configparser.c" break; - case 436: /* server_bogus_ttl: VAR_BOGUS_TTL STRING_ARG */ -#line 1872 "util/configparser.y" + case 436: +#line 1872 "./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) @@ -4730,11 +5400,11 @@ yyreduce: else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4734 "util/configparser.c" +#line 5404 "util/configparser.c" break; - case 437: /* server_val_clean_additional: VAR_VAL_CLEAN_ADDITIONAL STRING_ARG */ -#line 1881 "util/configparser.y" + case 437: +#line 1881 "./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) @@ -4743,11 +5413,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4747 "util/configparser.c" +#line 5417 "util/configparser.c" break; - case 438: /* server_val_permissive_mode: VAR_VAL_PERMISSIVE_MODE STRING_ARG */ -#line 1891 "util/configparser.y" + case 438: +#line 1891 "./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) @@ -4756,11 +5426,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4760 "util/configparser.c" +#line 5430 "util/configparser.c" break; - case 439: /* server_aggressive_nsec: VAR_AGGRESSIVE_NSEC STRING_ARG */ -#line 1901 "util/configparser.y" + case 439: +#line 1901 "./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) @@ -4770,11 +5440,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4774 "util/configparser.c" +#line 5444 "util/configparser.c" break; - case 440: /* server_ignore_cd_flag: VAR_IGNORE_CD_FLAG STRING_ARG */ -#line 1912 "util/configparser.y" + case 440: +#line 1912 "./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) @@ -4782,11 +5452,11 @@ yyreduce: else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4786 "util/configparser.c" +#line 5456 "util/configparser.c" break; - case 441: /* server_serve_expired: VAR_SERVE_EXPIRED STRING_ARG */ -#line 1921 "util/configparser.y" + case 441: +#line 1921 "./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) @@ -4794,11 +5464,11 @@ yyreduce: else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4798 "util/configparser.c" +#line 5468 "util/configparser.c" break; - case 442: /* server_serve_expired_ttl: VAR_SERVE_EXPIRED_TTL STRING_ARG */ -#line 1930 "util/configparser.y" + case 442: +#line 1930 "./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) @@ -4806,11 +5476,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4810 "util/configparser.c" +#line 5480 "util/configparser.c" break; - case 443: /* server_serve_expired_ttl_reset: VAR_SERVE_EXPIRED_TTL_RESET STRING_ARG */ -#line 1939 "util/configparser.y" + case 443: +#line 1939 "./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) @@ -4818,11 +5488,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4822 "util/configparser.c" +#line 5492 "util/configparser.c" break; - case 444: /* server_serve_expired_reply_ttl: VAR_SERVE_EXPIRED_REPLY_TTL STRING_ARG */ -#line 1948 "util/configparser.y" + case 444: +#line 1948 "./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) @@ -4830,11 +5500,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4834 "util/configparser.c" +#line 5504 "util/configparser.c" break; - case 445: /* server_serve_expired_client_timeout: VAR_SERVE_EXPIRED_CLIENT_TIMEOUT STRING_ARG */ -#line 1957 "util/configparser.y" + case 445: +#line 1957 "./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) @@ -4842,11 +5512,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4846 "util/configparser.c" +#line 5516 "util/configparser.c" break; - case 446: /* server_serve_original_ttl: VAR_SERVE_ORIGINAL_TTL STRING_ARG */ -#line 1966 "util/configparser.y" + case 446: +#line 1966 "./util/configparser.y" { OUTYY(("P(server_serve_original_ttl:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4854,11 +5524,11 @@ yyreduce: else cfg_parser->cfg->serve_original_ttl = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4858 "util/configparser.c" +#line 5528 "util/configparser.c" break; - case 447: /* server_fake_dsa: VAR_FAKE_DSA STRING_ARG */ -#line 1975 "util/configparser.y" + case 447: +#line 1975 "./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) @@ -4870,11 +5540,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4874 "util/configparser.c" +#line 5544 "util/configparser.c" break; - case 448: /* server_fake_sha1: VAR_FAKE_SHA1 STRING_ARG */ -#line 1988 "util/configparser.y" + case 448: +#line 1988 "./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) @@ -4886,11 +5556,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4890 "util/configparser.c" +#line 5560 "util/configparser.c" break; - case 449: /* server_val_log_level: VAR_VAL_LOG_LEVEL STRING_ARG */ -#line 2001 "util/configparser.y" + case 449: +#line 2001 "./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) @@ -4898,21 +5568,21 @@ yyreduce: else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4902 "util/configparser.c" +#line 5572 "util/configparser.c" break; - case 450: /* server_val_nsec3_keysize_iterations: VAR_VAL_NSEC3_KEYSIZE_ITERATIONS STRING_ARG */ -#line 2010 "util/configparser.y" + case 450: +#line 2010 "./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 4912 "util/configparser.c" +#line 5582 "util/configparser.c" break; - case 451: /* server_zonemd_permissive_mode: VAR_ZONEMD_PERMISSIVE_MODE STRING_ARG */ -#line 2017 "util/configparser.y" + case 451: +#line 2017 "./util/configparser.y" { OUTYY(("P(server_zonemd_permissive_mode:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4920,11 +5590,11 @@ yyreduce: else cfg_parser->cfg->zonemd_permissive_mode = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4924 "util/configparser.c" +#line 5594 "util/configparser.c" break; - case 452: /* server_add_holddown: VAR_ADD_HOLDDOWN STRING_ARG */ -#line 2026 "util/configparser.y" + case 452: +#line 2026 "./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) @@ -4932,11 +5602,11 @@ yyreduce: else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4936 "util/configparser.c" +#line 5606 "util/configparser.c" break; - case 453: /* server_del_holddown: VAR_DEL_HOLDDOWN STRING_ARG */ -#line 2035 "util/configparser.y" + case 453: +#line 2035 "./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) @@ -4944,11 +5614,11 @@ yyreduce: else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4948 "util/configparser.c" +#line 5618 "util/configparser.c" break; - case 454: /* server_keep_missing: VAR_KEEP_MISSING STRING_ARG */ -#line 2044 "util/configparser.y" + case 454: +#line 2044 "./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) @@ -4956,11 +5626,11 @@ yyreduce: else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4960 "util/configparser.c" +#line 5630 "util/configparser.c" break; - case 455: /* server_permit_small_holddown: VAR_PERMIT_SMALL_HOLDDOWN STRING_ARG */ -#line 2053 "util/configparser.y" + case 455: +#line 2053 "./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) @@ -4969,22 +5639,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4973 "util/configparser.c" +#line 5643 "util/configparser.c" break; - case 456: /* server_key_cache_size: VAR_KEY_CACHE_SIZE STRING_ARG */ -#line 2062 "util/configparser.y" + case 456: +#line 2062 "./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 4984 "util/configparser.c" +#line 5654 "util/configparser.c" break; - case 457: /* server_key_cache_slabs: VAR_KEY_CACHE_SLABS STRING_ARG */ -#line 2070 "util/configparser.y" + case 457: +#line 2070 "./util/configparser.y" { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4996,22 +5666,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5000 "util/configparser.c" +#line 5670 "util/configparser.c" break; - case 458: /* server_neg_cache_size: VAR_NEG_CACHE_SIZE STRING_ARG */ -#line 2083 "util/configparser.y" + case 458: +#line 2083 "./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 5011 "util/configparser.c" +#line 5681 "util/configparser.c" break; - case 459: /* server_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */ -#line 2091 "util/configparser.y" + case 459: +#line 2091 "./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 && @@ -5055,21 +5725,21 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5059 "util/configparser.c" +#line 5729 "util/configparser.c" break; - case 460: /* server_local_data: VAR_LOCAL_DATA STRING_ARG */ -#line 2136 "util/configparser.y" + case 460: +#line 2136 "./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 5069 "util/configparser.c" +#line 5739 "util/configparser.c" break; - case 461: /* server_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ -#line 2143 "util/configparser.y" + case 461: +#line 2143 "./util/configparser.y" { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -5083,11 +5753,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5087 "util/configparser.c" +#line 5757 "util/configparser.c" break; - case 462: /* server_minimal_responses: VAR_MINIMAL_RESPONSES STRING_ARG */ -#line 2158 "util/configparser.y" + case 462: +#line 2158 "./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) @@ -5096,11 +5766,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5100 "util/configparser.c" +#line 5770 "util/configparser.c" break; - case 463: /* server_rrset_roundrobin: VAR_RRSET_ROUNDROBIN STRING_ARG */ -#line 2168 "util/configparser.y" + case 463: +#line 2168 "./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) @@ -5109,41 +5779,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5113 "util/configparser.c" +#line 5783 "util/configparser.c" break; - case 464: /* server_unknown_server_time_limit: VAR_UNKNOWN_SERVER_TIME_LIMIT STRING_ARG */ -#line 2178 "util/configparser.y" + case 464: +#line 2178 "./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 5123 "util/configparser.c" +#line 5793 "util/configparser.c" break; - case 465: /* server_max_udp_size: VAR_MAX_UDP_SIZE STRING_ARG */ -#line 2185 "util/configparser.y" + case 465: +#line 2185 "./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 5133 "util/configparser.c" +#line 5803 "util/configparser.c" break; - case 466: /* server_dns64_prefix: VAR_DNS64_PREFIX STRING_ARG */ -#line 2192 "util/configparser.y" + case 466: +#line 2192 "./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 5143 "util/configparser.c" +#line 5813 "util/configparser.c" break; - case 467: /* server_dns64_synthall: VAR_DNS64_SYNTHALL STRING_ARG */ -#line 2199 "util/configparser.y" + case 467: +#line 2199 "./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) @@ -5151,22 +5821,22 @@ yyreduce: else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5155 "util/configparser.c" +#line 5825 "util/configparser.c" break; - case 468: /* server_dns64_ignore_aaaa: VAR_DNS64_IGNORE_AAAA STRING_ARG */ -#line 2208 "util/configparser.y" + case 468: +#line 2208 "./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 5166 "util/configparser.c" +#line 5836 "util/configparser.c" break; - case 469: /* server_define_tag: VAR_DEFINE_TAG STRING_ARG */ -#line 2216 "util/configparser.y" + case 469: +#line 2216 "./util/configparser.y" { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); @@ -5179,11 +5849,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5183 "util/configparser.c" +#line 5853 "util/configparser.c" break; - case 470: /* server_local_zone_tag: VAR_LOCAL_ZONE_TAG STRING_ARG STRING_ARG */ -#line 2230 "util/configparser.y" + case 470: +#line 2230 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5203,11 +5873,11 @@ yyreduce: } } } -#line 5207 "util/configparser.c" +#line 5877 "util/configparser.c" break; - case 471: /* server_access_control_tag: VAR_ACCESS_CONTROL_TAG STRING_ARG STRING_ARG */ -#line 2251 "util/configparser.y" + case 471: +#line 2251 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5227,11 +5897,11 @@ yyreduce: } } } -#line 5231 "util/configparser.c" +#line 5901 "util/configparser.c" break; - case 472: /* server_access_control_tag_action: VAR_ACCESS_CONTROL_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG */ -#line 2272 "util/configparser.y" + case 472: +#line 2272 "./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, @@ -5242,11 +5912,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5246 "util/configparser.c" +#line 5916 "util/configparser.c" break; - case 473: /* server_access_control_tag_data: VAR_ACCESS_CONTROL_TAG_DATA STRING_ARG STRING_ARG STRING_ARG */ -#line 2284 "util/configparser.y" + case 473: +#line 2284 "./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, @@ -5257,11 +5927,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5261 "util/configparser.c" +#line 5931 "util/configparser.c" break; - case 474: /* server_local_zone_override: VAR_LOCAL_ZONE_OVERRIDE STRING_ARG STRING_ARG STRING_ARG */ -#line 2296 "util/configparser.y" + case 474: +#line 2296 "./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, @@ -5272,11 +5942,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5276 "util/configparser.c" +#line 5946 "util/configparser.c" break; - case 475: /* server_access_control_view: VAR_ACCESS_CONTROL_VIEW STRING_ARG STRING_ARG */ -#line 2308 "util/configparser.y" + case 475: +#line 2308 "./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, @@ -5284,11 +5954,11 @@ yyreduce: yyerror("out of memory"); } } -#line 5288 "util/configparser.c" +#line 5958 "util/configparser.c" break; - case 476: /* server_response_ip_tag: VAR_RESPONSE_IP_TAG STRING_ARG STRING_ARG */ -#line 2317 "util/configparser.y" + case 476: +#line 2317 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5308,11 +5978,11 @@ yyreduce: } } } -#line 5312 "util/configparser.c" +#line 5982 "util/configparser.c" break; - case 477: /* server_ip_ratelimit: VAR_IP_RATELIMIT STRING_ARG */ -#line 2338 "util/configparser.y" + case 477: +#line 2338 "./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) @@ -5320,11 +5990,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5324 "util/configparser.c" +#line 5994 "util/configparser.c" break; - case 478: /* server_ratelimit: VAR_RATELIMIT STRING_ARG */ -#line 2348 "util/configparser.y" + case 478: +#line 2348 "./util/configparser.y" { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5332,33 +6002,33 @@ yyreduce: else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5336 "util/configparser.c" +#line 6006 "util/configparser.c" break; - case 479: /* server_ip_ratelimit_size: VAR_IP_RATELIMIT_SIZE STRING_ARG */ -#line 2357 "util/configparser.y" + case 479: +#line 2357 "./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 5347 "util/configparser.c" +#line 6017 "util/configparser.c" break; - case 480: /* server_ratelimit_size: VAR_RATELIMIT_SIZE STRING_ARG */ -#line 2365 "util/configparser.y" + case 480: +#line 2365 "./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 5358 "util/configparser.c" +#line 6028 "util/configparser.c" break; - case 481: /* server_ip_ratelimit_slabs: VAR_IP_RATELIMIT_SLABS STRING_ARG */ -#line 2373 "util/configparser.y" + case 481: +#line 2373 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5370,11 +6040,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5374 "util/configparser.c" +#line 6044 "util/configparser.c" break; - case 482: /* server_ratelimit_slabs: VAR_RATELIMIT_SLABS STRING_ARG */ -#line 2386 "util/configparser.y" + case 482: +#line 2386 "./util/configparser.y" { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5386,11 +6056,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5390 "util/configparser.c" +#line 6060 "util/configparser.c" break; - case 483: /* server_ratelimit_for_domain: VAR_RATELIMIT_FOR_DOMAIN STRING_ARG STRING_ARG */ -#line 2399 "util/configparser.y" + case 483: +#line 2399 "./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) { @@ -5404,11 +6074,11 @@ yyreduce: "ratelimit-for-domain"); } } -#line 5408 "util/configparser.c" +#line 6078 "util/configparser.c" break; - case 484: /* server_ratelimit_below_domain: VAR_RATELIMIT_BELOW_DOMAIN STRING_ARG STRING_ARG */ -#line 2414 "util/configparser.y" + case 484: +#line 2414 "./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) { @@ -5422,11 +6092,11 @@ yyreduce: "ratelimit-below-domain"); } } -#line 5426 "util/configparser.c" +#line 6096 "util/configparser.c" break; - case 485: /* server_ip_ratelimit_factor: VAR_IP_RATELIMIT_FACTOR STRING_ARG */ -#line 2429 "util/configparser.y" + case 485: +#line 2429 "./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) @@ -5434,11 +6104,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5438 "util/configparser.c" +#line 6108 "util/configparser.c" break; - case 486: /* server_ratelimit_factor: VAR_RATELIMIT_FACTOR STRING_ARG */ -#line 2438 "util/configparser.y" + case 486: +#line 2438 "./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) @@ -5446,20 +6116,20 @@ yyreduce: else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5450 "util/configparser.c" +#line 6120 "util/configparser.c" break; - case 487: /* server_low_rtt: VAR_LOW_RTT STRING_ARG */ -#line 2447 "util/configparser.y" + case 487: +#line 2447 "./util/configparser.y" { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 5459 "util/configparser.c" +#line 6129 "util/configparser.c" break; - case 488: /* server_fast_server_num: VAR_FAST_SERVER_NUM STRING_ARG */ -#line 2453 "util/configparser.y" + case 488: +#line 2453 "./util/configparser.y" { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) <= 0) @@ -5467,11 +6137,11 @@ yyreduce: else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5471 "util/configparser.c" +#line 6141 "util/configparser.c" break; - case 489: /* server_fast_server_permil: VAR_FAST_SERVER_PERMIL STRING_ARG */ -#line 2462 "util/configparser.y" + case 489: +#line 2462 "./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) @@ -5479,11 +6149,11 @@ yyreduce: else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5483 "util/configparser.c" +#line 6153 "util/configparser.c" break; - case 490: /* server_qname_minimisation: VAR_QNAME_MINIMISATION STRING_ARG */ -#line 2471 "util/configparser.y" + case 490: +#line 2471 "./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) @@ -5492,11 +6162,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5496 "util/configparser.c" +#line 6166 "util/configparser.c" break; - case 491: /* server_qname_minimisation_strict: VAR_QNAME_MINIMISATION_STRICT STRING_ARG */ -#line 2481 "util/configparser.y" + case 491: +#line 2481 "./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) @@ -5505,11 +6175,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5509 "util/configparser.c" +#line 6179 "util/configparser.c" break; - case 492: /* server_pad_responses: VAR_PAD_RESPONSES STRING_ARG */ -#line 2491 "util/configparser.y" + case 492: +#line 2491 "./util/configparser.y" { OUTYY(("P(server_pad_responses:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5518,11 +6188,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5522 "util/configparser.c" +#line 6192 "util/configparser.c" break; - case 493: /* server_pad_responses_block_size: VAR_PAD_RESPONSES_BLOCK_SIZE STRING_ARG */ -#line 2501 "util/configparser.y" + case 493: +#line 2501 "./util/configparser.y" { OUTYY(("P(server_pad_responses_block_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5530,11 +6200,11 @@ yyreduce: else cfg_parser->cfg->pad_responses_block_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5534 "util/configparser.c" +#line 6204 "util/configparser.c" break; - case 494: /* server_pad_queries: VAR_PAD_QUERIES STRING_ARG */ -#line 2510 "util/configparser.y" + case 494: +#line 2510 "./util/configparser.y" { OUTYY(("P(server_pad_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5543,11 +6213,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5547 "util/configparser.c" +#line 6217 "util/configparser.c" break; - case 495: /* server_pad_queries_block_size: VAR_PAD_QUERIES_BLOCK_SIZE STRING_ARG */ -#line 2520 "util/configparser.y" + case 495: +#line 2520 "./util/configparser.y" { OUTYY(("P(server_pad_queries_block_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5555,11 +6225,11 @@ yyreduce: else cfg_parser->cfg->pad_queries_block_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5559 "util/configparser.c" +#line 6229 "util/configparser.c" break; - case 496: /* server_ipsecmod_enabled: VAR_IPSECMOD_ENABLED STRING_ARG */ -#line 2529 "util/configparser.y" + case 496: +#line 2529 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); @@ -5571,11 +6241,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5575 "util/configparser.c" +#line 6245 "util/configparser.c" break; - case 497: /* server_ipsecmod_ignore_bogus: VAR_IPSECMOD_IGNORE_BOGUS STRING_ARG */ -#line 2542 "util/configparser.y" + case 497: +#line 2542 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); @@ -5587,11 +6257,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5591 "util/configparser.c" +#line 6261 "util/configparser.c" break; - case 498: /* server_ipsecmod_hook: VAR_IPSECMOD_HOOK STRING_ARG */ -#line 2555 "util/configparser.y" + case 498: +#line 2555 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); @@ -5602,11 +6272,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5606 "util/configparser.c" +#line 6276 "util/configparser.c" break; - case 499: /* server_ipsecmod_max_ttl: VAR_IPSECMOD_MAX_TTL STRING_ARG */ -#line 2567 "util/configparser.y" + case 499: +#line 2567 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); @@ -5619,11 +6289,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5623 "util/configparser.c" +#line 6293 "util/configparser.c" break; - case 500: /* server_ipsecmod_whitelist: VAR_IPSECMOD_WHITELIST STRING_ARG */ -#line 2581 "util/configparser.y" + case 500: +#line 2581 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); @@ -5634,11 +6304,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5638 "util/configparser.c" +#line 6308 "util/configparser.c" break; - case 501: /* server_ipsecmod_strict: VAR_IPSECMOD_STRICT STRING_ARG */ -#line 2593 "util/configparser.y" + case 501: +#line 2593 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); @@ -5651,11 +6321,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5655 "util/configparser.c" +#line 6325 "util/configparser.c" break; - case 502: /* server_edns_client_string: VAR_EDNS_CLIENT_STRING STRING_ARG STRING_ARG */ -#line 2607 "util/configparser.y" + case 502: +#line 2607 "./util/configparser.y" { OUTYY(("P(server_edns_client_string:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert( @@ -5663,11 +6333,11 @@ yyreduce: fatal_exit("out of memory adding " "edns-client-string"); } -#line 5667 "util/configparser.c" +#line 6337 "util/configparser.c" break; - case 503: /* server_edns_client_string_opcode: VAR_EDNS_CLIENT_STRING_OPCODE STRING_ARG */ -#line 2616 "util/configparser.y" + case 503: +#line 2616 "./util/configparser.y" { OUTYY(("P(edns_client_string_opcode:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5678,11 +6348,11 @@ yyreduce: free((yyvsp[0].str)); } -#line 5682 "util/configparser.c" +#line 6352 "util/configparser.c" break; - case 504: /* stub_name: VAR_NAME STRING_ARG */ -#line 2628 "util/configparser.y" + case 504: +#line 2628 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) @@ -5691,31 +6361,31 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 5695 "util/configparser.c" +#line 6365 "util/configparser.c" break; - case 505: /* stub_host: VAR_STUB_HOST STRING_ARG */ -#line 2638 "util/configparser.y" + case 505: +#line 2638 "./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 5705 "util/configparser.c" +#line 6375 "util/configparser.c" break; - case 506: /* stub_addr: VAR_STUB_ADDR STRING_ARG */ -#line 2645 "util/configparser.y" + case 506: +#line 2645 "./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 5715 "util/configparser.c" +#line 6385 "util/configparser.c" break; - case 507: /* stub_first: VAR_STUB_FIRST STRING_ARG */ -#line 2652 "util/configparser.y" + case 507: +#line 2652 "./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) @@ -5723,11 +6393,11 @@ yyreduce: else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5727 "util/configparser.c" +#line 6397 "util/configparser.c" break; - case 508: /* stub_no_cache: VAR_STUB_NO_CACHE STRING_ARG */ -#line 2661 "util/configparser.y" + case 508: +#line 2661 "./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) @@ -5735,11 +6405,11 @@ yyreduce: else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5739 "util/configparser.c" +#line 6409 "util/configparser.c" break; - case 509: /* stub_ssl_upstream: VAR_STUB_SSL_UPSTREAM STRING_ARG */ -#line 2670 "util/configparser.y" + case 509: +#line 2670 "./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) @@ -5748,11 +6418,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5752 "util/configparser.c" +#line 6422 "util/configparser.c" break; - case 510: /* stub_prime: VAR_STUB_PRIME STRING_ARG */ -#line 2680 "util/configparser.y" + case 510: +#line 2680 "./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) @@ -5761,11 +6431,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5765 "util/configparser.c" +#line 6435 "util/configparser.c" break; - case 511: /* forward_name: VAR_NAME STRING_ARG */ -#line 2690 "util/configparser.y" + case 511: +#line 2690 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) @@ -5774,31 +6444,31 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 5778 "util/configparser.c" +#line 6448 "util/configparser.c" break; - case 512: /* forward_host: VAR_FORWARD_HOST STRING_ARG */ -#line 2700 "util/configparser.y" + case 512: +#line 2700 "./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 5788 "util/configparser.c" +#line 6458 "util/configparser.c" break; - case 513: /* forward_addr: VAR_FORWARD_ADDR STRING_ARG */ -#line 2707 "util/configparser.y" + case 513: +#line 2707 "./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 5798 "util/configparser.c" +#line 6468 "util/configparser.c" break; - case 514: /* forward_first: VAR_FORWARD_FIRST STRING_ARG */ -#line 2714 "util/configparser.y" + case 514: +#line 2714 "./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) @@ -5806,11 +6476,11 @@ yyreduce: else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5810 "util/configparser.c" +#line 6480 "util/configparser.c" break; - case 515: /* forward_no_cache: VAR_FORWARD_NO_CACHE STRING_ARG */ -#line 2723 "util/configparser.y" + case 515: +#line 2723 "./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) @@ -5818,11 +6488,11 @@ yyreduce: else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5822 "util/configparser.c" +#line 6492 "util/configparser.c" break; - case 516: /* forward_ssl_upstream: VAR_FORWARD_SSL_UPSTREAM STRING_ARG */ -#line 2732 "util/configparser.y" + case 516: +#line 2732 "./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) @@ -5831,11 +6501,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5835 "util/configparser.c" +#line 6505 "util/configparser.c" break; - case 517: /* auth_name: VAR_NAME STRING_ARG */ -#line 2742 "util/configparser.y" + case 517: +#line 2742 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) @@ -5844,52 +6514,52 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 5848 "util/configparser.c" +#line 6518 "util/configparser.c" break; - case 518: /* auth_zonefile: VAR_ZONEFILE STRING_ARG */ -#line 2752 "util/configparser.y" + case 518: +#line 2752 "./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 5858 "util/configparser.c" +#line 6528 "util/configparser.c" break; - case 519: /* auth_master: VAR_MASTER STRING_ARG */ -#line 2759 "util/configparser.y" + case 519: +#line 2759 "./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 5868 "util/configparser.c" +#line 6538 "util/configparser.c" break; - case 520: /* auth_url: VAR_URL STRING_ARG */ -#line 2766 "util/configparser.y" + case 520: +#line 2766 "./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 5878 "util/configparser.c" +#line 6548 "util/configparser.c" break; - case 521: /* auth_allow_notify: VAR_ALLOW_NOTIFY STRING_ARG */ -#line 2773 "util/configparser.y" + case 521: +#line 2773 "./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 5889 "util/configparser.c" +#line 6559 "util/configparser.c" break; - case 522: /* auth_zonemd_reject_absence: VAR_ZONEMD_REJECT_ABSENCE STRING_ARG */ -#line 2781 "util/configparser.y" + case 522: +#line 2781 "./util/configparser.y" { OUTYY(("P(zonemd-reject-absence:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5898,11 +6568,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5902 "util/configparser.c" +#line 6572 "util/configparser.c" break; - case 523: /* auth_for_downstream: VAR_FOR_DOWNSTREAM STRING_ARG */ -#line 2791 "util/configparser.y" + case 523: +#line 2791 "./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) @@ -5911,11 +6581,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5915 "util/configparser.c" +#line 6585 "util/configparser.c" break; - case 524: /* auth_for_upstream: VAR_FOR_UPSTREAM STRING_ARG */ -#line 2801 "util/configparser.y" + case 524: +#line 2801 "./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) @@ -5924,11 +6594,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5928 "util/configparser.c" +#line 6598 "util/configparser.c" break; - case 525: /* auth_fallback_enabled: VAR_FALLBACK_ENABLED STRING_ARG */ -#line 2811 "util/configparser.y" + case 525: +#line 2811 "./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) @@ -5937,11 +6607,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5941 "util/configparser.c" +#line 6611 "util/configparser.c" break; - case 526: /* view_name: VAR_NAME STRING_ARG */ -#line 2821 "util/configparser.y" + case 526: +#line 2821 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) @@ -5950,11 +6620,11 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 5954 "util/configparser.c" +#line 6624 "util/configparser.c" break; - case 527: /* view_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */ -#line 2831 "util/configparser.y" + case 527: +#line 2831 "./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 && @@ -5964,13 +6634,20 @@ yyreduce: && 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), "always_nodata")!=0 + && strcmp((yyvsp[0].str), "always_deny")!=0 + && strcmp((yyvsp[0].str), "always_null")!=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")!=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, " - "always_transparent, always_refuse, " - "always_nxdomain, noview or nodefault"); + "inform_redirect, always_transparent, " + "always_refuse, always_nxdomain, " + "always_nodata, always_deny, always_null, " + "noview, nodefault or ipset"); free((yyvsp[-1].str)); free((yyvsp[0].str)); } else if(strcmp((yyvsp[0].str), "nodefault")==0) { @@ -5992,11 +6669,11 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5996 "util/configparser.c" +#line 6673 "util/configparser.c" break; - case 528: /* view_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ -#line 2870 "util/configparser.y" + case 528: +#line 2877 "./util/configparser.y" { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -6005,33 +6682,33 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 6009 "util/configparser.c" +#line 6686 "util/configparser.c" break; - case 529: /* view_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ -#line 2880 "util/configparser.y" + case 529: +#line 2887 "./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 6020 "util/configparser.c" +#line 6697 "util/configparser.c" break; - case 530: /* view_local_data: VAR_LOCAL_DATA STRING_ARG */ -#line 2888 "util/configparser.y" + case 530: +#line 2895 "./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 6031 "util/configparser.c" +#line 6708 "util/configparser.c" break; - case 531: /* view_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ -#line 2896 "util/configparser.y" + case 531: +#line 2903 "./util/configparser.y" { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -6045,11 +6722,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 6049 "util/configparser.c" +#line 6726 "util/configparser.c" break; - case 532: /* view_first: VAR_VIEW_FIRST STRING_ARG */ -#line 2911 "util/configparser.y" + case 532: +#line 2918 "./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) @@ -6057,19 +6734,19 @@ yyreduce: else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6061 "util/configparser.c" +#line 6738 "util/configparser.c" break; - case 533: /* rcstart: VAR_REMOTE_CONTROL */ -#line 2920 "util/configparser.y" + case 533: +#line 2927 "./util/configparser.y" { OUTYY(("\nP(remote-control:)\n")); } -#line 6069 "util/configparser.c" +#line 6746 "util/configparser.c" break; - case 544: /* rc_control_enable: VAR_CONTROL_ENABLE STRING_ARG */ -#line 2931 "util/configparser.y" + case 544: +#line 2938 "./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) @@ -6078,11 +6755,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6082 "util/configparser.c" +#line 6759 "util/configparser.c" break; - case 545: /* rc_control_port: VAR_CONTROL_PORT STRING_ARG */ -#line 2941 "util/configparser.y" + case 545: +#line 2948 "./util/configparser.y" { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6090,79 +6767,79 @@ yyreduce: else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6094 "util/configparser.c" +#line 6771 "util/configparser.c" break; - case 546: /* rc_control_interface: VAR_CONTROL_INTERFACE STRING_ARG */ -#line 2950 "util/configparser.y" + case 546: +#line 2957 "./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 6104 "util/configparser.c" +#line 6781 "util/configparser.c" break; - case 547: /* rc_control_use_cert: VAR_CONTROL_USE_CERT STRING_ARG */ -#line 2957 "util/configparser.y" + case 547: +#line 2964 "./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 6114 "util/configparser.c" +#line 6791 "util/configparser.c" break; - case 548: /* rc_server_key_file: VAR_SERVER_KEY_FILE STRING_ARG */ -#line 2964 "util/configparser.y" + case 548: +#line 2971 "./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 6124 "util/configparser.c" +#line 6801 "util/configparser.c" break; - case 549: /* rc_server_cert_file: VAR_SERVER_CERT_FILE STRING_ARG */ -#line 2971 "util/configparser.y" + case 549: +#line 2978 "./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 6134 "util/configparser.c" +#line 6811 "util/configparser.c" break; - case 550: /* rc_control_key_file: VAR_CONTROL_KEY_FILE STRING_ARG */ -#line 2978 "util/configparser.y" + case 550: +#line 2985 "./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 6144 "util/configparser.c" +#line 6821 "util/configparser.c" break; - case 551: /* rc_control_cert_file: VAR_CONTROL_CERT_FILE STRING_ARG */ -#line 2985 "util/configparser.y" + case 551: +#line 2992 "./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 6154 "util/configparser.c" +#line 6831 "util/configparser.c" break; - case 552: /* dtstart: VAR_DNSTAP */ -#line 2992 "util/configparser.y" + case 552: +#line 2999 "./util/configparser.y" { OUTYY(("\nP(dnstap:)\n")); } -#line 6162 "util/configparser.c" +#line 6839 "util/configparser.c" break; - case 574: /* dt_dnstap_enable: VAR_DNSTAP_ENABLE STRING_ARG */ -#line 3012 "util/configparser.y" + case 574: +#line 3019 "./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) @@ -6170,11 +6847,11 @@ yyreduce: else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6174 "util/configparser.c" +#line 6851 "util/configparser.c" break; - case 575: /* dt_dnstap_bidirectional: VAR_DNSTAP_BIDIRECTIONAL STRING_ARG */ -#line 3021 "util/configparser.y" + case 575: +#line 3028 "./util/configparser.y" { OUTYY(("P(dt_dnstap_bidirectional:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6183,31 +6860,31 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6187 "util/configparser.c" +#line 6864 "util/configparser.c" break; - case 576: /* dt_dnstap_socket_path: VAR_DNSTAP_SOCKET_PATH STRING_ARG */ -#line 3031 "util/configparser.y" + case 576: +#line 3038 "./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 6197 "util/configparser.c" +#line 6874 "util/configparser.c" break; - case 577: /* dt_dnstap_ip: VAR_DNSTAP_IP STRING_ARG */ -#line 3038 "util/configparser.y" + case 577: +#line 3045 "./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 6207 "util/configparser.c" +#line 6884 "util/configparser.c" break; - case 578: /* dt_dnstap_tls: VAR_DNSTAP_TLS STRING_ARG */ -#line 3045 "util/configparser.y" + case 578: +#line 3052 "./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) @@ -6215,51 +6892,51 @@ yyreduce: else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6219 "util/configparser.c" +#line 6896 "util/configparser.c" break; - case 579: /* dt_dnstap_tls_server_name: VAR_DNSTAP_TLS_SERVER_NAME STRING_ARG */ -#line 3054 "util/configparser.y" + case 579: +#line 3061 "./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 6229 "util/configparser.c" +#line 6906 "util/configparser.c" break; - case 580: /* dt_dnstap_tls_cert_bundle: VAR_DNSTAP_TLS_CERT_BUNDLE STRING_ARG */ -#line 3061 "util/configparser.y" + case 580: +#line 3068 "./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 6239 "util/configparser.c" +#line 6916 "util/configparser.c" break; - case 581: /* dt_dnstap_tls_client_key_file: VAR_DNSTAP_TLS_CLIENT_KEY_FILE STRING_ARG */ -#line 3068 "util/configparser.y" + case 581: +#line 3075 "./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 6249 "util/configparser.c" +#line 6926 "util/configparser.c" break; - case 582: /* dt_dnstap_tls_client_cert_file: VAR_DNSTAP_TLS_CLIENT_CERT_FILE STRING_ARG */ -#line 3075 "util/configparser.y" + case 582: +#line 3082 "./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 6259 "util/configparser.c" +#line 6936 "util/configparser.c" break; - case 583: /* dt_dnstap_send_identity: VAR_DNSTAP_SEND_IDENTITY STRING_ARG */ -#line 3082 "util/configparser.y" + case 583: +#line 3089 "./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) @@ -6267,11 +6944,11 @@ yyreduce: else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6271 "util/configparser.c" +#line 6948 "util/configparser.c" break; - case 584: /* dt_dnstap_send_version: VAR_DNSTAP_SEND_VERSION STRING_ARG */ -#line 3091 "util/configparser.y" + case 584: +#line 3098 "./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) @@ -6279,31 +6956,31 @@ yyreduce: else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6283 "util/configparser.c" +#line 6960 "util/configparser.c" break; - case 585: /* dt_dnstap_identity: VAR_DNSTAP_IDENTITY STRING_ARG */ -#line 3100 "util/configparser.y" + case 585: +#line 3107 "./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 6293 "util/configparser.c" +#line 6970 "util/configparser.c" break; - case 586: /* dt_dnstap_version: VAR_DNSTAP_VERSION STRING_ARG */ -#line 3107 "util/configparser.y" + case 586: +#line 3114 "./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 6303 "util/configparser.c" +#line 6980 "util/configparser.c" break; - case 587: /* dt_dnstap_log_resolver_query_messages: VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES STRING_ARG */ -#line 3114 "util/configparser.y" + case 587: +#line 3121 "./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) @@ -6312,11 +6989,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6316 "util/configparser.c" +#line 6993 "util/configparser.c" break; - case 588: /* dt_dnstap_log_resolver_response_messages: VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES STRING_ARG */ -#line 3124 "util/configparser.y" + case 588: +#line 3131 "./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) @@ -6325,11 +7002,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6329 "util/configparser.c" +#line 7006 "util/configparser.c" break; - case 589: /* dt_dnstap_log_client_query_messages: VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES STRING_ARG */ -#line 3134 "util/configparser.y" + case 589: +#line 3141 "./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) @@ -6338,11 +7015,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6342 "util/configparser.c" +#line 7019 "util/configparser.c" break; - case 590: /* dt_dnstap_log_client_response_messages: VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES STRING_ARG */ -#line 3144 "util/configparser.y" + case 590: +#line 3151 "./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) @@ -6351,11 +7028,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6355 "util/configparser.c" +#line 7032 "util/configparser.c" break; - case 591: /* dt_dnstap_log_forwarder_query_messages: VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES STRING_ARG */ -#line 3154 "util/configparser.y" + case 591: +#line 3161 "./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) @@ -6364,11 +7041,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6368 "util/configparser.c" +#line 7045 "util/configparser.c" break; - case 592: /* dt_dnstap_log_forwarder_response_messages: VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES STRING_ARG */ -#line 3164 "util/configparser.y" + case 592: +#line 3171 "./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) @@ -6377,47 +7054,47 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6381 "util/configparser.c" +#line 7058 "util/configparser.c" break; - case 593: /* pythonstart: VAR_PYTHON */ -#line 3174 "util/configparser.y" + case 593: +#line 3181 "./util/configparser.y" { OUTYY(("\nP(python:)\n")); } -#line 6389 "util/configparser.c" +#line 7066 "util/configparser.c" break; - case 597: /* py_script: VAR_PYTHON_SCRIPT STRING_ARG */ -#line 3183 "util/configparser.y" + case 597: +#line 3190 "./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 6399 "util/configparser.c" +#line 7076 "util/configparser.c" break; - case 598: /* dynlibstart: VAR_DYNLIB */ -#line 3189 "util/configparser.y" + case 598: +#line 3196 "./util/configparser.y" { OUTYY(("\nP(dynlib:)\n")); } -#line 6407 "util/configparser.c" +#line 7084 "util/configparser.c" break; - case 602: /* dl_file: VAR_DYNLIB_FILE STRING_ARG */ -#line 3198 "util/configparser.y" + case 602: +#line 3205 "./util/configparser.y" { OUTYY(("P(dynlib-file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6417 "util/configparser.c" +#line 7094 "util/configparser.c" break; - case 603: /* server_disable_dnssec_lame_check: VAR_DISABLE_DNSSEC_LAME_CHECK STRING_ARG */ -#line 3204 "util/configparser.y" + case 603: +#line 3211 "./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) @@ -6426,21 +7103,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6430 "util/configparser.c" +#line 7107 "util/configparser.c" break; - case 604: /* server_log_identity: VAR_LOG_IDENTITY STRING_ARG */ -#line 3214 "util/configparser.y" + case 604: +#line 3221 "./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 6440 "util/configparser.c" +#line 7117 "util/configparser.c" break; - case 605: /* server_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ -#line 3221 "util/configparser.y" + case 605: +#line 3228 "./util/configparser.y" { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -6448,30 +7125,30 @@ yyreduce: (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 6452 "util/configparser.c" +#line 7129 "util/configparser.c" break; - case 606: /* server_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ -#line 3230 "util/configparser.y" + case 606: +#line 3237 "./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 6463 "util/configparser.c" +#line 7140 "util/configparser.c" break; - case 607: /* dnscstart: VAR_DNSCRYPT */ -#line 3238 "util/configparser.y" + case 607: +#line 3245 "./util/configparser.y" { OUTYY(("\nP(dnscrypt:)\n")); } -#line 6471 "util/configparser.c" +#line 7148 "util/configparser.c" break; - case 620: /* dnsc_dnscrypt_enable: VAR_DNSCRYPT_ENABLE STRING_ARG */ -#line 3254 "util/configparser.y" + case 620: +#line 3261 "./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) @@ -6479,11 +7156,11 @@ yyreduce: else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6483 "util/configparser.c" +#line 7160 "util/configparser.c" break; - case 621: /* dnsc_dnscrypt_port: VAR_DNSCRYPT_PORT STRING_ARG */ -#line 3264 "util/configparser.y" + case 621: +#line 3271 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6491,21 +7168,21 @@ yyreduce: else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6495 "util/configparser.c" +#line 7172 "util/configparser.c" break; - case 622: /* dnsc_dnscrypt_provider: VAR_DNSCRYPT_PROVIDER STRING_ARG */ -#line 3273 "util/configparser.y" + case 622: +#line 3280 "./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 6505 "util/configparser.c" +#line 7182 "util/configparser.c" break; - case 623: /* dnsc_dnscrypt_provider_cert: VAR_DNSCRYPT_PROVIDER_CERT STRING_ARG */ -#line 3280 "util/configparser.y" + case 623: +#line 3287 "./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))) @@ -6513,21 +7190,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 6517 "util/configparser.c" +#line 7194 "util/configparser.c" break; - case 624: /* dnsc_dnscrypt_provider_cert_rotated: VAR_DNSCRYPT_PROVIDER_CERT_ROTATED STRING_ARG */ -#line 3289 "util/configparser.y" + case 624: +#line 3296 "./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 6527 "util/configparser.c" +#line 7204 "util/configparser.c" break; - case 625: /* dnsc_dnscrypt_secret_key: VAR_DNSCRYPT_SECRET_KEY STRING_ARG */ -#line 3296 "util/configparser.y" + case 625: +#line 3303 "./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))) @@ -6535,22 +7212,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 6539 "util/configparser.c" +#line 7216 "util/configparser.c" break; - case 626: /* dnsc_dnscrypt_shared_secret_cache_size: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE STRING_ARG */ -#line 3305 "util/configparser.y" + case 626: +#line 3312 "./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 6550 "util/configparser.c" +#line 7227 "util/configparser.c" break; - case 627: /* dnsc_dnscrypt_shared_secret_cache_slabs: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS STRING_ARG */ -#line 3313 "util/configparser.y" + case 627: +#line 3320 "./util/configparser.y" { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6562,22 +7239,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6566 "util/configparser.c" +#line 7243 "util/configparser.c" break; - case 628: /* dnsc_dnscrypt_nonce_cache_size: VAR_DNSCRYPT_NONCE_CACHE_SIZE STRING_ARG */ -#line 3326 "util/configparser.y" + case 628: +#line 3333 "./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 6577 "util/configparser.c" +#line 7254 "util/configparser.c" break; - case 629: /* dnsc_dnscrypt_nonce_cache_slabs: VAR_DNSCRYPT_NONCE_CACHE_SLABS STRING_ARG */ -#line 3334 "util/configparser.y" + case 629: +#line 3341 "./util/configparser.y" { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6589,19 +7266,19 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6593 "util/configparser.c" +#line 7270 "util/configparser.c" break; - case 630: /* cachedbstart: VAR_CACHEDB */ -#line 3347 "util/configparser.y" + case 630: +#line 3354 "./util/configparser.y" { OUTYY(("\nP(cachedb:)\n")); } -#line 6601 "util/configparser.c" +#line 7278 "util/configparser.c" break; - case 639: /* cachedb_backend_name: VAR_CACHEDB_BACKEND STRING_ARG */ -#line 3358 "util/configparser.y" + case 639: +#line 3365 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); @@ -6612,11 +7289,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6616 "util/configparser.c" +#line 7293 "util/configparser.c" break; - case 640: /* cachedb_secret_seed: VAR_CACHEDB_SECRETSEED STRING_ARG */ -#line 3370 "util/configparser.y" + case 640: +#line 3377 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); @@ -6627,11 +7304,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6631 "util/configparser.c" +#line 7308 "util/configparser.c" break; - case 641: /* redis_server_host: VAR_CACHEDB_REDISHOST STRING_ARG */ -#line 3382 "util/configparser.y" + case 641: +#line 3389 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); @@ -6642,11 +7319,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6646 "util/configparser.c" +#line 7323 "util/configparser.c" break; - case 642: /* redis_server_port: VAR_CACHEDB_REDISPORT STRING_ARG */ -#line 3394 "util/configparser.y" + case 642: +#line 3401 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; @@ -6660,11 +7337,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6664 "util/configparser.c" +#line 7341 "util/configparser.c" break; - case 643: /* redis_timeout: VAR_CACHEDB_REDISTIMEOUT STRING_ARG */ -#line 3409 "util/configparser.y" + case 643: +#line 3416 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); @@ -6676,11 +7353,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6680 "util/configparser.c" +#line 7357 "util/configparser.c" break; - case 644: /* redis_expire_records: VAR_CACHEDB_REDISEXPIRERECORDS STRING_ARG */ -#line 3422 "util/configparser.y" + case 644: +#line 3429 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str))); @@ -6692,11 +7369,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6696 "util/configparser.c" +#line 7373 "util/configparser.c" break; - case 645: /* server_tcp_connection_limit: VAR_TCP_CONNECTION_LIMIT STRING_ARG STRING_ARG */ -#line 3435 "util/configparser.y" + case 645: +#line 3442 "./util/configparser.y" { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) @@ -6706,19 +7383,19 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 6710 "util/configparser.c" +#line 7387 "util/configparser.c" break; - case 646: /* ipsetstart: VAR_IPSET */ -#line 3446 "util/configparser.y" + case 646: +#line 3453 "./util/configparser.y" { OUTYY(("\nP(ipset:)\n")); } -#line 6718 "util/configparser.c" +#line 7395 "util/configparser.c" break; - case 651: /* ipset_name_v4: VAR_IPSET_NAME_V4 STRING_ARG */ -#line 3455 "util/configparser.y" + case 651: +#line 3462 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); @@ -6732,11 +7409,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6736 "util/configparser.c" +#line 7413 "util/configparser.c" break; - case 652: /* ipset_name_v6: VAR_IPSET_NAME_V6 STRING_ARG */ -#line 3470 "util/configparser.y" + case 652: +#line 3477 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); @@ -6750,11 +7427,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6754 "util/configparser.c" +#line 7431 "util/configparser.c" break; -#line 6758 "util/configparser.c" +#line 7435 "util/configparser.c" default: break; } @@ -6914,13 +7591,13 @@ yyabortlab: yyexhaustedlab: yyerror (YY_("memory exhausted")); yyresult = 2; - goto yyreturn; + /* Fall through. */ #endif -/*-------------------------------------------------------. -| yyreturn -- parsing is finished, clean up and return. | -`-------------------------------------------------------*/ +/*-----------------------------------------------------. +| yyreturn -- parsing is finished, return the result. | +`-----------------------------------------------------*/ yyreturn: if (yychar != YYEMPTY) { @@ -6948,7 +7625,7 @@ yyreturn: return yyresult; } -#line 3484 "util/configparser.y" +#line 3491 "./util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index 58935003b..5f1f73fec 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.7.6. */ +/* A Bison parser, made by GNU Bison 3.6.4. */ /* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -16,7 +16,7 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program. If not, see . */ + 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 @@ -368,7 +368,6 @@ extern int yydebug; typedef enum yytokentype yytoken_kind_t; #endif /* Token kinds. */ -#define YYEMPTY -2 #define YYEOF 0 #define YYerror 256 #define YYUNDEF 257 @@ -687,11 +686,11 @@ extern int yydebug; #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED union YYSTYPE { -#line 66 "util/configparser.y" +#line 66 "./util/configparser.y" char* str; -#line 695 "util/configparser.h" +#line 694 "util/configparser.h" }; typedef union YYSTYPE YYSTYPE; diff --git a/util/configparser.y b/util/configparser.y index 6d82938c3..3561630b3 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -2837,13 +2837,20 @@ view_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG && strcmp($3, "always_transparent")!=0 && strcmp($3, "always_refuse")!=0 && strcmp($3, "always_nxdomain")!=0 + && strcmp($3, "always_nodata")!=0 + && strcmp($3, "always_deny")!=0 + && strcmp($3, "always_null")!=0 && strcmp($3, "noview")!=0 - && strcmp($3, "inform")!=0 && strcmp($3, "inform_deny")!=0) { + && strcmp($3, "inform")!=0 && strcmp($3, "inform_deny")!=0 + && strcmp($3, "inform_redirect") != 0 + && strcmp($3, "ipset") != 0) { yyerror("local-zone type: expected static, deny, " "refuse, redirect, transparent, " "typetransparent, inform, inform_deny, " - "always_transparent, always_refuse, " - "always_nxdomain, noview or nodefault"); + "inform_redirect, always_transparent, " + "always_refuse, always_nxdomain, " + "always_nodata, always_deny, always_null, " + "noview, nodefault or ipset"); free($2); free($3); } else if(strcmp($3, "nodefault")==0) { From 45328d37b100b1bc6a5a14d7b36beafcd912f7d5 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Wed, 28 Apr 2021 16:15:52 +0200 Subject: [PATCH 084/553] - Fix compiler warning for signed/unsigned comparison for max_reuse_tcp_queries. --- doc/Changelog | 4 ++++ services/outside_network.h | 2 +- util/config_file.h | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 977a73136..35ee6786f 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +28 April 2021: George + - Fix compiler warning for signed/unsigned comparison for + max_reuse_tcp_queries. + 28 April 2021: Wouter - Fix #474: always_null and others inside view. diff --git a/services/outside_network.h b/services/outside_network.h index 58ab8b262..b71469372 100644 --- a/services/outside_network.h +++ b/services/outside_network.h @@ -159,7 +159,7 @@ struct outside_network { /** number of tcp communication points in use. */ size_t num_tcp_outgoing; /** max number of queries on a reuse connection */ - int max_reuse_tcp_queries; + size_t max_reuse_tcp_queries; /** timeout for REUSE entries in milliseconds. */ int tcp_reuse_timeout; /** diff --git a/util/config_file.h b/util/config_file.h index 34f098696..8b629d1dd 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -94,7 +94,7 @@ struct config_file { /** do tcp query support. */ int do_tcp; /** max number of queries on a reuse connection. */ - int max_reuse_tcp_queries; + size_t max_reuse_tcp_queries; /** timeout for REUSE entries in milliseconds. */ int tcp_reuse_timeout; /** tcp upstream queries (no UDP upstream queries) */ From 90198ee07196e726a9c9da607d6cf62b1f5886f2 Mon Sep 17 00:00:00 2001 From: gthess Date: Wed, 28 Apr 2021 16:40:48 +0200 Subject: [PATCH 085/553] Create issue templates Create issue templates for bug reports and feature requests. --- .github/ISSUE_TEMPLATE/bug_report.md | 41 +++++++++++++++++++++++ .github/ISSUE_TEMPLATE/feature_request.md | 31 +++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 000000000..3b783bb63 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,41 @@ +--- +name: Bug report +about: Create a report to help us improve Unbound +title: '' +labels: '' +assignees: '' + +--- + + + +**Describe the bug** +A clear and concise description of what the bug is. + +**To reproduce** +Steps to reproduce the behavior: +1. +2. +3. + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**System:** + - Unbound version: + - OS: + - `unbound -V` output: + +**Additional information** +Add any other information that you may have gathered about the issue here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 000000000..1a3910694 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,31 @@ +--- +name: Feature request +about: Suggest an idea for Unbound +title: "[FR]" +labels: '' +assignees: '' + +--- + + + +**Current behavior** +Is there a current behavior that the feature relates to? +If yes, would you wish the current behavior to change? + +**Describe the desired feature** +A clear and concise description of what the feature should be. + +**Potential use-case** +Describe how you see this feature being useful to other Unbound users. From e07f973938b12577701374da7e606490c1e5afcc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Cruz?= Date: Tue, 27 Apr 2021 18:43:19 +0100 Subject: [PATCH 086/553] Allow configuration of TCP timeout while waiting for response This allows us to configure how long Unbound will wait for a response on a TCP connection. --- daemon/worker.c | 3 +- doc/example.conf.in | 3 + doc/unbound.conf.5.in | 4 + libunbound/libworker.c | 3 +- services/outside_network.c | 12 +- services/outside_network.h | 6 +- testcode/fake_event.c | 3 +- util/config_file.c | 3 + util/config_file.h | 2 + util/configlexer.c | 7081 ++++++++++++++++++++++++++ util/configlexer.lex | 1 + util/configparser.c | 9683 +++++++++++++++++------------------- util/configparser.h | 1050 ++-- util/configparser.y | 15 +- util/net_help.h | 2 - 15 files changed, 12235 insertions(+), 5636 deletions(-) diff --git a/daemon/worker.c b/daemon/worker.c index b560e4493..7537bd33d 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -1795,7 +1795,8 @@ worker_init(struct worker* worker, struct config_file *cfg, cfg->do_udp || cfg->udp_upstream_without_downstream, worker->daemon->connect_sslctx, cfg->delay_close, cfg->tls_use_sni, dtenv, cfg->udp_connect, - cfg->max_reuse_tcp_queries, cfg->tcp_reuse_timeout); + cfg->max_reuse_tcp_queries, cfg->tcp_reuse_timeout, + cfg->tcp_auth_query_timeout); if(!worker->back) { log_err("could not create outgoing sockets"); worker_delete(worker); diff --git a/doc/example.conf.in b/doc/example.conf.in index 17b1b7741..3a9e50144 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -905,6 +905,9 @@ server: # tcp-reuse-timeout: 60000 # Max number of queries on a reuse connection. # max-reuse-tcp-queries: 200 + # Timeout in milliseconds for TCP queries to auth servers. + # tcp-auth-query-timeout: 3000 + # Python config section. To enable: # o use --with-pythonmodule to configure before compiling. diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index e58d3533a..9aa12c65c 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -460,6 +460,10 @@ The maximum number of queries that can be sent on a persistent TCP connection. This option defaults to 200 queries. .TP +.B tcp-auth-query-timeout: \fI\fR +Timeout in milliseconds for TCP queries to auth servers. +This option defaults to 3000 milliseconds. +.TP .B edns-tcp-keepalive: \fI\fR Enable or disable EDNS TCP Keepalive. Default is no. .TP diff --git a/libunbound/libworker.c b/libunbound/libworker.c index 0c43a4110..4733eb464 100644 --- a/libunbound/libworker.c +++ b/libunbound/libworker.c @@ -242,7 +242,8 @@ libworker_setup(struct ub_ctx* ctx, int is_bg, struct ub_event_base* eb) cfg->outgoing_tcp_mss, &libworker_alloc_cleanup, w, cfg->do_udp || cfg->udp_upstream_without_downstream, w->sslctx, cfg->delay_close, cfg->tls_use_sni, NULL, cfg->udp_connect, - cfg->max_reuse_tcp_queries, cfg->tcp_reuse_timeout); + cfg->max_reuse_tcp_queries, cfg->tcp_reuse_timeout, + cfg->tcp_auth_query_timeout); w->env->outnet = w->back; if(!w->is_bg || w->is_bg_thread) { lock_basic_unlock(&ctx->cfglock); diff --git a/services/outside_network.c b/services/outside_network.c index 353809759..5fb4f3faa 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -1404,7 +1404,8 @@ outside_network_create(struct comm_base *base, size_t bufsize, int numavailports, size_t unwanted_threshold, int tcp_mss, void (*unwanted_action)(void*), void* unwanted_param, int do_udp, void* sslctx, int delayclose, int tls_use_sni, struct dt_env* dtenv, - int udp_connect, int max_reuse_tcp_queries, int tcp_reuse_timeout) + int udp_connect, int max_reuse_tcp_queries, int tcp_reuse_timeout, + int tcp_auth_query_timeout) { struct outside_network* outnet = (struct outside_network*) calloc(1, sizeof(struct outside_network)); @@ -1418,6 +1419,7 @@ outside_network_create(struct comm_base *base, size_t bufsize, outnet->num_tcp = num_tcp; outnet->max_reuse_tcp_queries = max_reuse_tcp_queries; outnet->tcp_reuse_timeout= tcp_reuse_timeout; + outnet->tcp_auth_query_timeout = tcp_auth_query_timeout; outnet->num_tcp_outgoing = 0; outnet->infra = infra; outnet->rnd = rnd; @@ -2875,7 +2877,7 @@ serviced_tcp_initiate(struct serviced_query* sq, sldns_buffer* buff) sq->status==serviced_query_TCP_EDNS?"EDNS":""); serviced_encode(sq, buff, sq->status == serviced_query_TCP_EDNS); sq->last_sent_time = *sq->outnet->now_tv; - sq->pending = pending_tcp_query(sq, buff, TCP_AUTH_QUERY_TIMEOUT, + sq->pending = pending_tcp_query(sq, buff, sq->outnet->tcp_auth_query_timeout, serviced_tcp_callback, sq); if(!sq->pending) { /* delete from tree so that a retry by above layer does not @@ -2903,10 +2905,10 @@ serviced_tcp_send(struct serviced_query* sq, sldns_buffer* buff) sq->last_sent_time = *sq->outnet->now_tv; if(sq->tcp_upstream || sq->ssl_upstream) { timeout = rtt; - if(rtt >= UNKNOWN_SERVER_NICENESS && rtt < TCP_AUTH_QUERY_TIMEOUT) - timeout = TCP_AUTH_QUERY_TIMEOUT; + if(rtt >= UNKNOWN_SERVER_NICENESS && rtt < sq->outnet->tcp_auth_query_timeout) + timeout = sq->outnet->tcp_auth_query_timeout; } else { - timeout = TCP_AUTH_QUERY_TIMEOUT; + timeout = sq->outnet->tcp_auth_query_timeout; } sq->pending = pending_tcp_query(sq, buff, timeout, serviced_tcp_callback, sq); diff --git a/services/outside_network.h b/services/outside_network.h index b71469372..071f37dde 100644 --- a/services/outside_network.h +++ b/services/outside_network.h @@ -162,6 +162,8 @@ struct outside_network { size_t max_reuse_tcp_queries; /** timeout for REUSE entries in milliseconds. */ int tcp_reuse_timeout; + /** timeout in milliseconds for TCP queries to auth servers. */ + int tcp_auth_query_timeout; /** * tree of still-open and waiting tcp connections for reuse. * can be closed and reopened to get a new tcp connection. @@ -541,6 +543,7 @@ struct serviced_query { * @param udp_connect: if the udp_connect option is enabled. * @param max_reuse_tcp_queries: max number of queries on a reuse connection. * @param tcp_reuse_timeout: timeout for REUSE entries in milliseconds. + * @param tcp_auth_query_timeout: timeout in milliseconds for TCP queries to auth servers. * @return: the new structure (with no pending answers) or NULL on error. */ struct outside_network* outside_network_create(struct comm_base* base, @@ -550,7 +553,8 @@ struct outside_network* outside_network_create(struct comm_base* base, int numavailports, size_t unwanted_threshold, int tcp_mss, void (*unwanted_action)(void*), void* unwanted_param, int do_udp, void* sslctx, int delayclose, int tls_use_sni, struct dt_env *dtenv, - int udp_connect, int max_reuse_tcp_queries, int tcp_reuse_timeout); + int udp_connect, int max_reuse_tcp_queries, int tcp_reuse_timeout, + int tcp_auth_query_timeout); /** * Delete outside_network structure. diff --git a/testcode/fake_event.c b/testcode/fake_event.c index d0bd14ecb..125355f05 100644 --- a/testcode/fake_event.c +++ b/testcode/fake_event.c @@ -1047,7 +1047,8 @@ outside_network_create(struct comm_base* base, size_t bufsize, int ATTR_UNUSED(do_udp), void* ATTR_UNUSED(sslctx), int ATTR_UNUSED(delayclose), int ATTR_UNUSED(tls_use_sni), struct dt_env* ATTR_UNUSED(dtenv), int ATTR_UNUSED(udp_connect), - int ATTR_UNUSED(max_reuse_tcp_queries), int ATTR_UNUSED(tcp_reuse_timeout)) + int ATTR_UNUSED(max_reuse_tcp_queries), int ATTR_UNUSED(tcp_reuse_timeout), + int ATTR_UNUSED(tcp_auth_query_timeout)) { struct replay_runtime* runtime = (struct replay_runtime*)base; struct outside_network* outnet = calloc(1, diff --git a/util/config_file.c b/util/config_file.c index 938f6748e..1d6374156 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -112,6 +112,7 @@ config_create(void) cfg->tcp_mss = 0; cfg->outgoing_tcp_mss = 0; cfg->tcp_idle_timeout = 30 * 1000; /* 30s in millisecs */ + cfg->tcp_auth_query_timeout = 3 * 1000; /* 3s in millisecs */ cfg->do_tcp_keepalive = 0; cfg->tcp_keepalive_timeout = 120 * 1000; /* 120s in millisecs */ cfg->ssl_service_key = NULL; @@ -519,6 +520,7 @@ int config_set_option(struct config_file* cfg, const char* opt, udp_upstream_without_downstream) else S_NUMBER_NONZERO("tcp-mss:", tcp_mss) else S_NUMBER_NONZERO("outgoing-tcp-mss:", outgoing_tcp_mss) + else S_NUMBER_NONZERO("tcp-auth-query-timeout:", tcp_auth_query_timeout) else S_NUMBER_NONZERO("tcp-idle-timeout:", tcp_idle_timeout) else S_NUMBER_NONZERO("max-reuse-tcp-queries:", max_reuse_tcp_queries) else S_NUMBER_NONZERO("tcp-reuse-timeout:", tcp_reuse_timeout) @@ -1011,6 +1013,7 @@ config_get_option(struct config_file* cfg, const char* opt, else O_YNO(opt, "udp-upstream-without-downstream", udp_upstream_without_downstream) else O_DEC(opt, "tcp-mss", tcp_mss) else O_DEC(opt, "outgoing-tcp-mss", outgoing_tcp_mss) + else O_DEC(opt, "tcp-auth-query-timeout", tcp_auth_query_timeout) else O_DEC(opt, "tcp-idle-timeout", tcp_idle_timeout) else O_DEC(opt, "max-reuse-tcp-queries", max_reuse_tcp_queries) else O_DEC(opt, "tcp-reuse-timeout", tcp_reuse_timeout) diff --git a/util/config_file.h b/util/config_file.h index 8b629d1dd..524e648fe 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -97,6 +97,8 @@ struct config_file { size_t max_reuse_tcp_queries; /** timeout for REUSE entries in milliseconds. */ int tcp_reuse_timeout; + /** timeout in milliseconds for TCP queries to auth servers. */ + int tcp_auth_query_timeout; /** tcp upstream queries (no UDP upstream queries) */ int tcp_upstream; /** udp upstream enabled when no UDP downstream is enabled (do_udp no)*/ diff --git a/util/configlexer.c b/util/configlexer.c index 6f6dc4f45..fac54a193 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -6378,3 +6378,7084 @@ void yyfree (void * ptr ) #line 675 "./util/configlexer.lex" + +#line 3 "" + +#define YY_INT_ALIGNED short int + +/* A lexical scanner generated by flex */ + +#define FLEX_SCANNER +#define YY_FLEX_MAJOR_VERSION 2 +#define YY_FLEX_MINOR_VERSION 5 +#define YY_FLEX_SUBMINOR_VERSION 35 +#if YY_FLEX_SUBMINOR_VERSION > 0 +#define FLEX_BETA +#endif + +/* First, we deal with platform-specific or compiler-specific issues. */ + +/* begin standard C headers. */ +#include +#include +#include +#include + +/* end standard C headers. */ + +/* flex integer type definitions */ + +#ifndef FLEXINT_H +#define FLEXINT_H + +/* C99 systems have . Non-C99 systems may or may not. */ + +#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + +/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, + * if you want the limit (max/min) macros for int types. + */ +#ifndef __STDC_LIMIT_MACROS +#define __STDC_LIMIT_MACROS 1 +#endif + +#include +typedef int8_t flex_int8_t; +typedef uint8_t flex_uint8_t; +typedef int16_t flex_int16_t; +typedef uint16_t flex_uint16_t; +typedef int32_t flex_int32_t; +typedef uint32_t flex_uint32_t; +typedef uint64_t flex_uint64_t; +#else +typedef signed char flex_int8_t; +typedef short int flex_int16_t; +typedef int flex_int32_t; +typedef unsigned char flex_uint8_t; +typedef unsigned short int flex_uint16_t; +typedef unsigned int flex_uint32_t; +#endif /* ! C99 */ + +/* Limits of integral types. */ +#ifndef INT8_MIN +#define INT8_MIN (-128) +#endif +#ifndef INT16_MIN +#define INT16_MIN (-32767-1) +#endif +#ifndef INT32_MIN +#define INT32_MIN (-2147483647-1) +#endif +#ifndef INT8_MAX +#define INT8_MAX (127) +#endif +#ifndef INT16_MAX +#define INT16_MAX (32767) +#endif +#ifndef INT32_MAX +#define INT32_MAX (2147483647) +#endif +#ifndef UINT8_MAX +#define UINT8_MAX (255U) +#endif +#ifndef UINT16_MAX +#define UINT16_MAX (65535U) +#endif +#ifndef UINT32_MAX +#define UINT32_MAX (4294967295U) +#endif + +#endif /* ! FLEXINT_H */ + +#ifdef __cplusplus + +/* The "const" storage-class-modifier is valid. */ +#define YY_USE_CONST + +#else /* ! __cplusplus */ + +/* C99 requires __STDC__ to be defined as 1. */ +#if defined (__STDC__) + +#define YY_USE_CONST + +#endif /* defined (__STDC__) */ +#endif /* ! __cplusplus */ + +#ifdef YY_USE_CONST +#define yyconst const +#else +#define yyconst +#endif + +/* Returned upon end-of-file. */ +#define YY_NULL 0 + +/* Promotes a possibly negative, possibly signed char to an unsigned + * integer for use as an array index. If the signed char is negative, + * we want to instead treat it as an 8-bit unsigned char, hence the + * double cast. + */ +#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) + +/* Enter a start condition. This macro really ought to take a parameter, + * but we do it the disgusting crufty way forced on us by the ()-less + * definition of BEGIN. + */ +#define BEGIN (yy_start) = 1 + 2 * + +/* Translate the current start state into a value that can be later handed + * to BEGIN to return to the state. The YYSTATE alias is for lex + * compatibility. + */ +#define YY_START (((yy_start) - 1) / 2) +#define YYSTATE YY_START + +/* Action number for EOF rule of a given start state. */ +#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) + +/* Special action meaning "start processing a new file". */ +#define YY_NEW_FILE yyrestart(yyin ) + +#define YY_END_OF_BUFFER_CHAR 0 + +/* Size of default input buffer. */ +#ifndef YY_BUF_SIZE +#define YY_BUF_SIZE 16384 +#endif + +/* The state buf must be large enough to hold one state per character in the main buffer. + */ +#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) + +#ifndef YY_TYPEDEF_YY_BUFFER_STATE +#define YY_TYPEDEF_YY_BUFFER_STATE +typedef struct yy_buffer_state *YY_BUFFER_STATE; +#endif + +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef size_t yy_size_t; +#endif + +extern yy_size_t yyleng; + +extern FILE *yyin, *yyout; + +#define EOB_ACT_CONTINUE_SCAN 0 +#define EOB_ACT_END_OF_FILE 1 +#define EOB_ACT_LAST_MATCH 2 + + #define YY_LESS_LINENO(n) + +/* Return all but the first "n" matched characters back to the input stream. */ +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + *yy_cp = (yy_hold_char); \ + YY_RESTORE_YY_MORE_OFFSET \ + (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ + YY_DO_BEFORE_ACTION; /* set up yytext again */ \ + } \ + while ( 0 ) + +#define unput(c) yyunput( c, (yytext_ptr) ) + +#ifndef YY_STRUCT_YY_BUFFER_STATE +#define YY_STRUCT_YY_BUFFER_STATE +struct yy_buffer_state + { + FILE *yy_input_file; + + char *yy_ch_buf; /* input buffer */ + char *yy_buf_pos; /* current position in input buffer */ + + /* Size of input buffer in bytes, not including room for EOB + * characters. + */ + yy_size_t yy_buf_size; + + /* Number of characters read into yy_ch_buf, not including EOB + * characters. + */ + yy_size_t yy_n_chars; + + /* Whether we "own" the buffer - i.e., we know we created it, + * and can realloc() it to grow it, and should free() it to + * delete it. + */ + int yy_is_our_buffer; + + /* Whether this is an "interactive" input source; if so, and + * if we're using stdio for input, then we want to use getc() + * instead of fread(), to make sure we stop fetching input after + * each newline. + */ + int yy_is_interactive; + + /* Whether we're considered to be at the beginning of a line. + * If so, '^' rules will be active on the next match, otherwise + * not. + */ + int yy_at_bol; + + int yy_bs_lineno; /**< The line count. */ + int yy_bs_column; /**< The column count. */ + + /* Whether to try to fill the input buffer when we reach the + * end of it. + */ + int yy_fill_buffer; + + int yy_buffer_status; + +#define YY_BUFFER_NEW 0 +#define YY_BUFFER_NORMAL 1 + /* When an EOF's been seen but there's still some text to process + * then we mark the buffer as YY_EOF_PENDING, to indicate that we + * shouldn't try reading from the input source any more. We might + * still have a bunch of tokens to match, though, because of + * possible backing-up. + * + * When we actually see the EOF, we change the status to "new" + * (via yyrestart()), so that the user can continue scanning by + * just pointing yyin at a new input file. + */ +#define YY_BUFFER_EOF_PENDING 2 + + }; +#endif /* !YY_STRUCT_YY_BUFFER_STATE */ + +/* Stack of input buffers. */ +static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ +static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ +static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ + +/* We provide macros for accessing buffer states in case in the + * future we want to put the buffer states in a more general + * "scanner state". + * + * Returns the top of the stack, or NULL. + */ +#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ + ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ + : NULL) + +/* Same as previous macro, but useful when we know that the buffer stack is not + * NULL or when we need an lvalue. For internal use only. + */ +#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] + +/* yy_hold_char holds the character lost when yytext is formed. */ +static char yy_hold_char; +static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */ +yy_size_t yyleng; + +/* Points to current character in buffer. */ +static char *yy_c_buf_p = (char *) 0; +static int yy_init = 0; /* whether we need to initialize */ +static int yy_start = 0; /* start state number */ + +/* Flag which is used to allow yywrap()'s to do buffer switches + * instead of setting up a fresh yyin. A bit of a hack ... + */ +static int yy_did_buffer_switch_on_eof; + +void yyrestart (FILE *input_file ); +void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ); +YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ); +void yy_delete_buffer (YY_BUFFER_STATE b ); +void yy_flush_buffer (YY_BUFFER_STATE b ); +void yypush_buffer_state (YY_BUFFER_STATE new_buffer ); +void yypop_buffer_state (void ); + +static void yyensure_buffer_stack (void ); +static void yy_load_buffer_state (void ); +static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ); + +#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER ) + +YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ); +YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ); +YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len ); + +void *yyalloc (yy_size_t ); +void *yyrealloc (void *,yy_size_t ); +void yyfree (void * ); + +#define yy_new_buffer yy_create_buffer + +#define yy_set_interactive(is_interactive) \ + { \ + if ( ! YY_CURRENT_BUFFER ){ \ + yyensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + yy_create_buffer(yyin,YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ + } + +#define yy_set_bol(at_bol) \ + { \ + if ( ! YY_CURRENT_BUFFER ){\ + yyensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + yy_create_buffer(yyin,YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ + } + +#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) + +/* Begin user sect3 */ + +typedef unsigned char YY_CHAR; + +FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; + +typedef int yy_state_type; + +extern int yylineno; + +int yylineno = 1; + +extern char *yytext; +#define yytext_ptr yytext + +static yy_state_type yy_get_previous_state (void ); +static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); +static int yy_get_next_buffer (void ); +static void yy_fatal_error (yyconst char msg[] ); + +/* Done after the current pattern has been matched and before the + * corresponding action - sets up yytext. + */ +#define YY_DO_BEFORE_ACTION \ + (yytext_ptr) = yy_bp; \ + (yytext_ptr) -= (yy_more_len); \ + yyleng = (yy_size_t) (yy_cp - (yytext_ptr)); \ + (yy_hold_char) = *yy_cp; \ + *yy_cp = '\0'; \ + (yy_c_buf_p) = yy_cp; + +#define YY_NUM_RULES 348 +#define YY_END_OF_BUFFER 349 +/* This struct is not used in this scanner, + but its presence is necessary. */ +struct yy_trans_info + { + flex_int32_t yy_verify; + flex_int32_t yy_nxt; + }; +static yyconst flex_int16_t yy_accept[3439] = + { 0, + 1, 1, 322, 322, 326, 326, 330, 330, 334, 334, + 1, 1, 338, 338, 342, 342, 349, 346, 1, 320, + 320, 347, 2, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 347, 322, 323, 323, 324, + 347, 326, 327, 327, 328, 347, 333, 330, 331, 331, + 332, 347, 334, 335, 335, 336, 347, 345, 321, 2, + 325, 345, 347, 341, 338, 339, 339, 340, 347, 342, + 343, 343, 344, 347, 346, 0, 1, 2, 2, 2, + 2, 346, 346, 346, 346, 346, 346, 346, 346, 346, + + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 322, + 0, 326, 0, 333, 0, 330, 334, 0, 345, 0, + 2, 2, 345, 341, 0, 338, 342, 0, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 345, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 128, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 137, + 346, 346, 346, 346, 346, 346, 346, 345, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 112, 346, 319, + 346, 346, 346, 346, 346, 346, 346, 8, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + + 346, 346, 346, 346, 346, 346, 346, 129, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 142, 346, 346, 345, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 312, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 345, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 67, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 244, 346, + 14, 15, 346, 19, 18, 346, 346, 228, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + + 346, 346, 346, 346, 346, 346, 346, 346, 346, 135, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 226, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 3, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 345, 346, 346, 346, 346, 346, 346, 346, + 306, 346, 346, 305, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 329, 346, 346, 346, 346, 346, 346, 346, 346, + 66, 346, 346, 346, 346, 346, 346, 346, 346, 346, + + 346, 346, 346, 346, 346, 346, 346, 70, 346, 275, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 313, + 314, 346, 346, 346, 346, 346, 346, 346, 71, 346, + 346, 136, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 132, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 215, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 21, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + + 346, 346, 346, 346, 346, 346, 346, 346, 346, 161, + 346, 346, 346, 346, 345, 329, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 110, 346, 346, + 346, 346, 346, 346, 346, 283, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 185, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 160, 346, 346, 346, 346, 346, 346, + + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 109, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 35, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 36, 346, 346, 346, 346, 346, 346, 346, 346, 346, + + 346, 346, 346, 346, 346, 346, 68, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 134, 346, 346, 345, + 346, 346, 346, 346, 346, 127, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 69, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 248, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 186, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + + 346, 346, 346, 346, 346, 346, 57, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 266, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 61, 346, 62, 346, 346, 346, 346, 346, 113, 346, + 114, 346, 346, 346, 346, 111, 346, 346, 346, 346, + + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 7, 346, 346, + 346, 345, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 237, 346, 346, 346, 346, 163, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 249, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + + 346, 346, 346, 346, 346, 346, 346, 346, 346, 48, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 58, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 207, 346, 206, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 16, 17, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 72, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 214, 346, 346, 346, 346, 346, + + 346, 116, 346, 115, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 198, 346, + 346, 346, 346, 346, 346, 346, 346, 143, 346, 346, + 345, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 104, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 92, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 227, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + + 346, 346, 346, 346, 346, 346, 97, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 65, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 201, 202, 346, + 346, 346, 277, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 6, 346, 346, 346, + 346, 346, 346, 296, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 281, 346, 346, 346, 346, 346, 346, 307, 346, + + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 45, 346, 346, 346, 346, 47, 346, 346, + 346, 93, 346, 346, 346, 346, 346, 55, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 345, 346, 194, + 346, 346, 346, 138, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 219, 346, 195, 346, 346, 346, + 234, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 56, 346, 346, 346, 346, 346, 346, 346, 346, + + 346, 346, 140, 121, 346, 122, 346, 346, 346, 120, + 346, 346, 346, 346, 346, 346, 346, 346, 158, 346, + 346, 53, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 265, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 196, 346, + 346, 346, 346, 346, 199, 346, 205, 346, 346, 346, + 346, 346, 346, 233, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 108, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 133, + + 346, 346, 346, 346, 346, 346, 346, 63, 346, 346, + 346, 29, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 20, 346, 346, 346, 346, 346, 346, + 30, 39, 346, 168, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 345, + 346, 346, 346, 346, 346, 346, 80, 82, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 285, 346, 346, 346, 346, 245, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 123, + + 346, 346, 346, 346, 346, 346, 346, 346, 346, 157, + 346, 49, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 300, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 162, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 294, 346, 346, 346, + 225, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 310, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 179, 346, 346, 346, 346, 346, 346, 346, + + 346, 346, 117, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 174, 346, 187, 346, 346, 346, + 346, 346, 346, 345, 346, 146, 346, 346, 346, 346, + 346, 103, 346, 346, 346, 346, 217, 346, 346, 346, + 346, 346, 346, 235, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 257, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 139, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 178, 346, 346, 346, + + 346, 346, 346, 83, 346, 84, 346, 346, 346, 346, + 346, 64, 303, 346, 346, 346, 346, 346, 91, 188, + 346, 208, 346, 238, 346, 346, 200, 278, 346, 346, + 346, 346, 346, 346, 76, 346, 190, 346, 346, 346, + 346, 346, 9, 346, 346, 346, 346, 346, 107, 346, + 346, 346, 346, 270, 346, 346, 346, 346, 216, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + + 346, 346, 346, 346, 346, 346, 346, 346, 346, 345, + 346, 346, 346, 346, 177, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 164, 346, 284, 346, 346, + 346, 346, 346, 256, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 229, 346, 346, 346, 346, + 346, 276, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 304, 346, 189, 346, 346, 346, 346, 346, + 346, 346, 346, 75, 77, 346, 346, 346, 346, 346, + + 346, 346, 346, 346, 106, 346, 346, 346, 346, 268, + 346, 346, 346, 346, 280, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 221, 37, 31, + 33, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 38, 346, 32, 34, 346, 346, 346, 346, + 346, 346, 346, 346, 102, 346, 346, 346, 346, 346, + 346, 346, 346, 345, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 223, 220, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 74, 346, 346, 346, 141, + + 346, 124, 346, 346, 346, 346, 346, 346, 346, 346, + 159, 50, 346, 346, 346, 337, 13, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 298, 346, 301, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 12, 346, 346, 22, 346, 346, 346, 346, 346, + 274, 346, 346, 346, 346, 282, 346, 346, 346, 78, + 346, 231, 346, 346, 346, 346, 346, 222, 346, 346, + 73, 346, 346, 346, 346, 346, 23, 346, 346, 46, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 173, 172, 346, 346, 337, 346, 346, 346, + + 346, 346, 346, 346, 346, 346, 224, 218, 346, 236, + 346, 346, 286, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 85, 346, 346, 346, 346, + 269, 346, 346, 346, 346, 204, 346, 346, 346, 346, + 346, 230, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 308, 309, 170, 346, 346, 79, 346, + 346, 346, 346, 180, 346, 346, 346, 118, 119, 346, + 346, 346, 25, 346, 346, 165, 346, 167, 346, 209, + + 346, 346, 346, 346, 171, 346, 346, 346, 346, 239, + 346, 346, 346, 346, 346, 346, 346, 148, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 247, 346, 346, 346, 346, 346, 346, 346, 317, 346, + 27, 346, 279, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 89, 210, 346, + 346, 267, 346, 302, 346, 203, 346, 346, 346, 346, + 346, 59, 346, 346, 346, 346, 346, 346, 4, 346, + 346, 346, 346, 131, 147, 346, 346, 346, 184, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + + 346, 346, 346, 346, 346, 346, 346, 242, 40, 41, + 346, 346, 346, 346, 346, 346, 346, 287, 346, 346, + 346, 346, 346, 346, 346, 255, 346, 346, 346, 346, + 346, 346, 346, 346, 213, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 88, 346, 60, + 273, 346, 243, 346, 346, 346, 346, 346, 11, 346, + 346, 346, 346, 346, 346, 346, 346, 130, 346, 346, + 346, 346, 211, 94, 346, 346, 43, 346, 346, 346, + 346, 346, 346, 346, 346, 176, 346, 346, 346, 346, + 346, 346, 346, 150, 346, 346, 346, 346, 246, 346, + + 346, 346, 346, 346, 254, 346, 346, 346, 346, 144, + 346, 346, 346, 125, 126, 346, 346, 346, 96, 100, + 95, 346, 346, 346, 346, 86, 346, 346, 346, 346, + 346, 346, 10, 346, 346, 346, 346, 346, 271, 311, + 346, 346, 346, 346, 346, 316, 42, 346, 346, 346, + 346, 346, 175, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 101, 99, + 346, 54, 346, 346, 87, 299, 346, 346, 346, 346, + 24, 346, 346, 346, 346, 346, 197, 346, 346, 346, + + 346, 346, 212, 346, 346, 346, 346, 346, 346, 346, + 346, 193, 346, 346, 166, 81, 346, 346, 346, 346, + 346, 288, 346, 346, 346, 346, 346, 346, 346, 251, + 346, 346, 250, 145, 346, 346, 98, 51, 346, 151, + 152, 155, 156, 153, 154, 90, 297, 346, 346, 272, + 346, 346, 346, 26, 346, 169, 346, 346, 346, 346, + 192, 346, 241, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 182, 181, 44, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + + 346, 346, 346, 346, 346, 346, 346, 346, 295, 346, + 346, 346, 346, 105, 346, 240, 346, 264, 292, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 318, 346, 52, 5, 346, 346, 232, 346, 346, 293, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 252, + 28, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 253, 346, 346, 346, 149, 346, 346, + 346, 346, 346, 346, 346, 346, 183, 346, 191, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 289, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + + 346, 346, 346, 346, 346, 346, 315, 346, 346, 260, + 346, 346, 346, 346, 346, 290, 346, 346, 346, 346, + 346, 346, 291, 346, 346, 346, 258, 346, 261, 262, + 346, 346, 346, 346, 346, 259, 263, 0 + } ; + +static yyconst flex_int32_t yy_ec[256] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, + 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 1, 5, 6, 1, 1, 1, 7, 1, + 1, 1, 1, 1, 8, 1, 1, 1, 9, 1, + 10, 11, 1, 12, 1, 1, 1, 13, 1, 1, + 1, 1, 1, 1, 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, + 1, 40, 1, 1, 1, 1, 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, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1 + } ; + +static yyconst flex_int32_t yy_meta[67] = + { 0, + 1, 2, 3, 4, 5, 1, 6, 1, 1, 1, + 1, 1, 7, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1 + } ; + +static yyconst flex_int16_t yy_base[3457] = + { 0, + 0, 0, 64, 67, 70, 72, 78, 84, 89, 92, + 131, 137, 112, 118, 123, 142, 429, 383, 96, 9825, + 9825, 9825, 160, 185, 116, 183, 229, 132, 175, 173, + 232, 50, 66, 120, 263, 275, 151, 323, 134, 375, + 416, 286, 308, 283, 126, 237, 374, 9825, 9825, 9825, + 95, 372, 9825, 9825, 9825, 186, 361, 373, 9825, 9825, + 9825, 258, 309, 9825, 9825, 9825, 104, 293, 9825, 266, + 9825, 167, 351, 281, 311, 9825, 9825, 9825, 369, 268, + 9825, 9825, 9825, 146, 252, 378, 177, 0, 392, 0, + 0, 303, 270, 235, 317, 362, 344, 384, 178, 177, + + 226, 420, 377, 330, 379, 402, 414, 419, 410, 453, + 319, 367, 440, 429, 447, 454, 463, 459, 458, 489, + 495, 484, 474, 493, 499, 460, 500, 504, 510, 492, + 524, 520, 532, 525, 537, 529, 412, 533, 558, 539, + 531, 548, 565, 559, 250, 505, 587, 575, 574, 584, + 570, 580, 610, 601, 595, 604, 607, 614, 615, 208, + 294, 205, 236, 194, 670, 225, 180, 326, 158, 674, + 678, 0, 623, 152, 682, 176, 130, 653, 650, 680, + 661, 609, 675, 670, 676, 666, 671, 682, 672, 691, + 720, 697, 696, 703, 256, 726, 770, 731, 723, 714, + + 734, 737, 724, 718, 745, 740, 749, 759, 766, 728, + 773, 760, 772, 787, 819, 789, 762, 797, 339, 802, + 827, 378, 808, 443, 832, 805, 699, 829, 725, 838, + 836, 844, 843, 835, 852, 847, 866, 860, 849, 864, + 875, 874, 871, 865, 868, 911, 885, 878, 893, 892, + 894, 907, 908, 902, 913, 781, 909, 920, 921, 935, + 912, 937, 930, 919, 943, 950, 948, 956, 957, 938, + 958, 955, 953, 960, 954, 973, 969, 984, 994, 986, + 993, 1002, 989, 995, 988, 996, 999, 987, 1013, 1014, + 1022, 1026, 144, 1020, 1029, 1031, 1019, 1028, 1039, 1041, + + 1051, 1052, 1053, 1036, 1057, 1062, 1072, 1069, 1070, 1076, + 1079, 1088, 1055, 1067, 1065, 1082, 1092, 1098, 1087, 1100, + 1091, 1103, 1115, 1106, 1120, 1099, 1134, 1132, 1127, 1159, + 1136, 1128, 1148, 1189, 1154, 1143, 1162, 1185, 1169, 1155, + 1190, 1182, 1193, 1205, 1191, 1204, 1197, 1206, 1224, 1227, + 1215, 1231, 1229, 1220, 1226, 1233, 1249, 1258, 9825, 1242, + 1240, 1269, 1260, 1266, 1275, 1267, 1296, 1273, 1283, 1279, + 1291, 1298, 1344, 1392, 1293, 1311, 1301, 1304, 1307, 9825, + 1333, 1308, 1441, 1339, 1328, 1329, 1363, 1340, 1331, 1355, + 1364, 1356, 1300, 1359, 1367, 1390, 1403, 1400, 1379, 1389, + + 1406, 1419, 1410, 1306, 1438, 1427, 1437, 1431, 1383, 1434, + 1446, 1458, 1479, 1461, 1475, 1476, 1480, 1493, 1496, 1497, + 1508, 1503, 1486, 1502, 1518, 1515, 1522, 1528, 1573, 1484, + 1529, 1535, 1542, 1532, 1520, 1448, 1547, 1554, 1549, 1561, + 1562, 1556, 1579, 1401, 1567, 1583, 1570, 1575, 1597, 1580, + 1594, 1598, 1599, 1607, 1600, 1609, 1593, 1620, 1630, 1635, + 1637, 1634, 1643, 1645, 1627, 1651, 1631, 9825, 1654, 9825, + 1642, 1657, 1667, 1662, 1661, 1671, 1673, 9825, 1677, 1669, + 1679, 1688, 1706, 1696, 1712, 1681, 1703, 1708, 1718, 1711, + 1713, 1714, 1700, 1731, 1736, 1723, 1744, 1729, 1732, 1738, + + 1752, 1745, 1761, 1746, 1748, 1755, 1795, 9825, 1750, 1764, + 1771, 1779, 1773, 1797, 1789, 1800, 1828, 1793, 1812, 1824, + 1798, 1851, 1830, 1831, 1823, 1836, 1834, 1848, 1841, 1861, + 1850, 1857, 1858, 1852, 1860, 1875, 1881, 1872, 1879, 1889, + 9825, 1888, 1899, 1900, 1906, 1893, 1896, 1909, 1898, 1914, + 1892, 1930, 1922, 1938, 1918, 1936, 1943, 1919, 1939, 1952, + 1941, 1945, 1946, 1949, 1954, 1947, 1973, 1967, 1990, 1971, + 1988, 1993, 2000, 1996, 1997, 2004, 2006, 1981, 1991, 2009, + 2008, 1995, 1999, 2018, 2020, 2005, 2019, 2033, 2047, 2039, + 2026, 2045, 2035, 2053, 2036, 2040, 2052, 2042, 2048, 2064, + + 2077, 2059, 2086, 2065, 2092, 2069, 2074, 2100, 2101, 2085, + 2088, 9825, 2107, 2102, 2115, 2127, 2117, 2120, 2130, 2121, + 2125, 2129, 2128, 2134, 2140, 2146, 2142, 2152, 2138, 2156, + 2165, 2163, 2113, 2170, 2178, 2186, 2179, 2183, 2173, 2180, + 2184, 2177, 2198, 2190, 2217, 2211, 2199, 2215, 2232, 2206, + 2216, 2230, 2233, 2212, 2225, 2240, 2228, 2236, 2246, 2251, + 2241, 2258, 2274, 2271, 2264, 2257, 2281, 2267, 2285, 2272, + 2275, 2277, 2284, 2280, 2310, 2311, 2309, 2304, 2306, 2305, + 2307, 2312, 2313, 2330, 2327, 2329, 2332, 2322, 2331, 2342, + 2356, 2345, 2346, 2348, 2358, 2359, 2375, 2367, 2364, 2391, + + 2370, 2379, 2385, 2386, 2394, 2393, 2397, 2388, 2403, 2412, + 2407, 2424, 2426, 2415, 2425, 2436, 2421, 2437, 2428, 2340, + 2442, 2451, 2434, 2443, 2441, 2456, 2452, 2455, 2475, 2479, + 2485, 2481, 2478, 9825, 2470, 2495, 2472, 2490, 2484, 2493, + 2482, 2506, 2502, 2497, 2507, 2501, 2512, 2558, 9825, 2515, + 9825, 9825, 2521, 9825, 9825, 2535, 2541, 9825, 2548, 2537, + 2539, 2545, 2568, 2582, 2573, 2561, 2572, 2571, 2566, 2618, + 2596, 2581, 2594, 2611, 2565, 2613, 2621, 2605, 2616, 2629, + 2632, 2655, 2607, 2660, 2650, 2662, 2668, 2666, 2670, 2674, + 2672, 2676, 2663, 2664, 2680, 2688, 2685, 2701, 2712, 2699, + + 2702, 2717, 2703, 2707, 2698, 2690, 2722, 2723, 2737, 9825, + 2728, 2729, 2732, 2743, 2747, 2758, 2739, 2755, 2749, 2762, + 2763, 2759, 2750, 2760, 2764, 2754, 2777, 2756, 2773, 2787, + 2789, 2780, 2806, 2784, 9825, 2799, 2800, 2786, 2807, 2813, + 2802, 2814, 2801, 2818, 2829, 2804, 2852, 2847, 2835, 2832, + 2844, 2830, 2837, 2857, 9825, 2856, 2861, 2842, 2862, 2845, + 2871, 2872, 2874, 2877, 2893, 2880, 2882, 2887, 2881, 2911, + 2901, 2904, 2898, 2907, 2906, 2914, 2926, 2930, 2915, 2927, + 2925, 2938, 2931, 2928, 2939, 2934, 2941, 2944, 2955, 2974, + 2961, 2981, 2963, 2965, 2984, 2986, 2966, 2976, 2987, 2989, + + 2979, 2997, 3001, 3002, 2991, 3004, 3015, 3003, 3019, 3020, + 3028, 3021, 3040, 3026, 3045, 3042, 3029, 3032, 3053, 3035, + 9825, 3047, 3059, 9825, 3048, 3057, 3062, 3108, 3081, 3087, + 3078, 3063, 3069, 3095, 3088, 3098, 3096, 3118, 3107, 3122, + 3123, 3138, 3121, 3128, 3135, 3148, 3152, 3140, 3157, 3159, + 3167, 3172, 3100, 3162, 3176, 381, 3183, 3160, 3178, 3174, + 3224, 3179, 3180, 3188, 3184, 3189, 3208, 3206, 3207, 3201, + 3212, 3210, 3227, 3237, 3233, 3228, 3240, 3248, 3236, 3257, + 3254, 9825, 3267, 3265, 3259, 3271, 3269, 3284, 3275, 3270, + 9825, 3281, 3291, 3283, 3292, 3295, 3287, 3307, 3293, 3301, + + 3303, 3309, 3316, 3320, 3318, 3327, 3337, 9825, 3319, 9825, + 3339, 3338, 3336, 3330, 3345, 3342, 3340, 3356, 3365, 9825, + 9825, 3368, 3366, 3376, 3379, 3369, 3374, 3371, 9825, 3383, + 3412, 9825, 3390, 3405, 3395, 3393, 3398, 3397, 3406, 3416, + 3428, 3407, 3433, 3422, 3424, 3430, 9825, 3435, 3426, 3440, + 3443, 3434, 3454, 3461, 3464, 3456, 9825, 3446, 3460, 3453, + 3483, 3482, 3475, 3467, 3486, 3491, 3479, 3480, 3478, 3501, + 3487, 3506, 3513, 3510, 3512, 3525, 3516, 3527, 9825, 3518, + 3511, 3514, 3535, 3531, 3532, 3537, 3538, 3533, 3530, 3550, + 3552, 3556, 3561, 3554, 3557, 3568, 3573, 3575, 3570, 3581, + + 3571, 3582, 3576, 3577, 91, 3588, 3583, 3599, 3580, 9825, + 3602, 3611, 3615, 3617, 3603, 128, 3610, 3612, 3613, 3626, + 3632, 3634, 3616, 3640, 3651, 3639, 3652, 3654, 3659, 3646, + 3648, 3665, 3661, 3650, 3667, 3675, 3653, 9825, 3671, 3679, + 3677, 3685, 3699, 3687, 3714, 9825, 3704, 3709, 3711, 3713, + 3717, 3715, 3718, 3720, 3731, 3741, 3747, 3734, 3742, 3757, + 3745, 3756, 3744, 9825, 3764, 3760, 3768, 3755, 3780, 3766, + 3769, 3783, 3784, 3782, 3776, 3789, 3806, 3796, 3795, 3797, + 3802, 3811, 3812, 3810, 3816, 3823, 3819, 3829, 3837, 3833, + 3826, 3840, 3838, 9825, 3847, 3853, 3856, 3854, 3846, 3861, + + 3864, 3859, 3892, 3875, 3876, 3886, 3883, 3926, 3888, 3896, + 3911, 3913, 3915, 3916, 3917, 3919, 3928, 3929, 3938, 3936, + 3964, 3889, 3950, 3923, 3961, 3951, 3974, 3966, 3955, 3986, + 3988, 3982, 3981, 4007, 3997, 3976, 3947, 4006, 3999, 9825, + 4014, 4004, 3993, 4013, 4035, 4030, 4020, 4031, 4037, 4044, + 4040, 4041, 4047, 4049, 4054, 4048, 4058, 4065, 4063, 4064, + 4082, 4066, 4069, 4074, 4095, 4083, 4102, 4101, 9825, 4104, + 4100, 4093, 4099, 4113, 4097, 4114, 4118, 4110, 4122, 4126, + 4123, 4128, 4134, 4130, 4132, 4141, 4149, 4129, 4156, 4144, + 9825, 4160, 4157, 4159, 4153, 4161, 4165, 4177, 4192, 4191, + + 4197, 4200, 4183, 4202, 4199, 4190, 9825, 4207, 4212, 4209, + 4216, 4204, 4218, 4227, 4215, 4224, 9825, 4228, 4239, 4232, + 4230, 4225, 4226, 4261, 4252, 9825, 4265, 4264, 4242, 4243, + 4255, 4254, 4269, 4271, 4266, 4275, 4279, 4296, 4280, 4281, + 4298, 9825, 4290, 4315, 4294, 4307, 4310, 4305, 4311, 4329, + 4343, 4313, 4331, 4327, 9825, 4325, 4346, 4352, 4362, 4340, + 4338, 4354, 4356, 4371, 4366, 4360, 4377, 4365, 9825, 4381, + 4378, 4379, 4393, 4398, 4383, 4399, 4405, 4403, 4400, 4417, + 4420, 4421, 4414, 4411, 4427, 4432, 4422, 4430, 4449, 4438, + 4442, 4448, 4454, 4457, 4461, 4456, 4471, 4466, 4458, 4452, + + 4481, 4492, 4494, 4495, 4490, 4501, 9825, 4496, 4499, 4497, + 4487, 4498, 4493, 4489, 4508, 4511, 4516, 4519, 4535, 4530, + 4522, 4550, 4552, 4528, 4555, 4532, 4534, 4549, 4559, 4546, + 4554, 4542, 4571, 4567, 4568, 4563, 4575, 4577, 4578, 4598, + 4581, 4587, 4590, 4591, 4593, 4576, 4604, 4611, 4618, 4603, + 4613, 4614, 4628, 4629, 4630, 4638, 4631, 4634, 4637, 4661, + 9825, 4633, 4647, 4639, 4648, 4656, 4673, 4671, 4687, 4669, + 4678, 4681, 4685, 4688, 4677, 4675, 4700, 4690, 4706, 4721, + 9825, 4704, 9825, 4702, 4720, 4727, 4711, 4712, 9825, 4726, + 9825, 4731, 4730, 4719, 4724, 9825, 4738, 4739, 4736, 4755, + + 4749, 4743, 4757, 4752, 4758, 4770, 4766, 4785, 4765, 4763, + 4779, 4778, 4768, 4797, 4795, 4792, 4784, 4799, 4817, 4816, + 4807, 4822, 4806, 4818, 4831, 4813, 4833, 9825, 4839, 4840, + 4837, 4830, 4834, 4849, 4851, 4854, 4847, 4874, 4877, 4864, + 4865, 4883, 4878, 4881, 4869, 4891, 4895, 4899, 4897, 4908, + 9825, 4892, 4888, 4902, 4901, 9825, 4918, 4912, 4924, 4929, + 4926, 4914, 4916, 4934, 4941, 4920, 4943, 4946, 4968, 4951, + 4949, 4969, 9825, 4953, 4970, 4952, 4957, 4983, 4990, 4995, + 4987, 4993, 4999, 4996, 4998, 5005, 4989, 5009, 5004, 5008, + 5010, 5013, 5034, 5014, 5006, 5037, 5043, 5041, 5026, 5027, + + 5030, 5035, 5038, 5045, 5040, 5053, 5056, 5061, 5062, 9825, + 5070, 5072, 5079, 5080, 5071, 5077, 5074, 5086, 5075, 9825, + 5095, 5083, 5107, 5102, 5115, 5109, 5111, 5104, 5099, 5123, + 5118, 5130, 5144, 5119, 9825, 5134, 9825, 5138, 5145, 5140, + 5147, 5146, 5150, 5166, 5170, 5165, 5160, 5177, 5181, 5183, + 5167, 5173, 5190, 5193, 5209, 5192, 5171, 5202, 5187, 5210, + 5204, 5211, 5208, 5232, 5228, 5229, 9825, 9825, 5215, 5226, + 5242, 5230, 5238, 5249, 5257, 5252, 5270, 5259, 5262, 5260, + 5295, 9825, 5266, 5267, 5274, 5287, 5235, 5285, 5298, 5305, + 5301, 5294, 5316, 5307, 9825, 5297, 5304, 5320, 5314, 5333, + + 5321, 9825, 5329, 9825, 5319, 5330, 5331, 5345, 5343, 5340, + 5346, 5348, 5354, 5357, 5362, 5364, 5379, 5365, 5385, 5366, + 5369, 5375, 5390, 5384, 5404, 5381, 5391, 5382, 9825, 5401, + 5395, 5412, 5414, 5418, 5420, 5417, 5406, 9825, 5427, 5432, + 5428, 5422, 5438, 5439, 5445, 5441, 5448, 5447, 5444, 5464, + 5465, 9825, 5454, 5459, 5474, 5468, 5471, 5484, 5470, 5491, + 5482, 9825, 5478, 5487, 5498, 5499, 5500, 5506, 5510, 5495, + 5497, 5502, 5514, 5523, 5525, 5522, 5524, 5529, 5533, 5539, + 5542, 5565, 5540, 5549, 5553, 5507, 5547, 9825, 5554, 5559, + 5563, 5567, 5580, 5569, 5592, 5584, 5598, 5581, 5599, 5602, + + 5594, 5595, 5613, 5614, 5607, 5620, 9825, 5622, 5606, 5632, + 5610, 5628, 5636, 5619, 5633, 5644, 5637, 5627, 5651, 5660, + 5662, 5658, 5678, 5649, 5650, 5653, 5675, 5654, 9825, 5698, + 5672, 5688, 5655, 5693, 5694, 5711, 5699, 5687, 5689, 5712, + 5696, 5726, 5713, 5719, 5728, 5732, 5723, 9825, 9825, 5742, + 5720, 5735, 9825, 5739, 5730, 5757, 5747, 5758, 5740, 5749, + 5766, 5756, 5753, 5776, 5755, 5770, 9825, 5782, 5794, 5775, + 5789, 5799, 5803, 9825, 5788, 5804, 5798, 5806, 5792, 5790, + 5793, 5815, 5821, 5817, 5814, 5828, 5823, 5841, 5825, 5831, + 5839, 9825, 5833, 5842, 5844, 5847, 5838, 5848, 9825, 5858, + + 5874, 5860, 5873, 5872, 5882, 5885, 5886, 5883, 5871, 5880, + 5876, 5888, 5891, 5903, 5901, 5899, 5910, 5909, 5918, 5927, + 5932, 5930, 9825, 5926, 5940, 5919, 5942, 9825, 5943, 5968, + 5937, 9825, 5945, 5921, 5944, 5953, 5960, 9825, 5961, 5971, + 5967, 5957, 5986, 5963, 5991, 5970, 5976, 5972, 5981, 9825, + 5995, 5992, 6000, 9825, 5998, 6009, 6014, 6015, 5997, 6026, + 6023, 6025, 6027, 6022, 9825, 6034, 9825, 6032, 6028, 6042, + 9825, 6036, 6052, 6041, 6045, 6038, 6066, 6072, 6073, 6051, + 6060, 6074, 6063, 6065, 6078, 6089, 6090, 6068, 6079, 6096, + 6098, 9825, 6117, 6101, 6111, 6104, 6121, 6123, 6115, 6109, + + 6128, 6113, 9825, 9825, 6134, 9825, 6140, 6136, 6142, 9825, + 6147, 6150, 6170, 6149, 6167, 6169, 6172, 6165, 9825, 6175, + 6177, 9825, 6157, 6176, 6186, 6181, 6179, 6163, 6210, 6203, + 6193, 6204, 6205, 6206, 6207, 6196, 6209, 6223, 9825, 6198, + 6230, 6228, 6227, 6234, 6238, 6232, 6255, 6243, 9825, 6259, + 6245, 6248, 6268, 6269, 9825, 6262, 9825, 6265, 6272, 6282, + 6275, 6278, 6289, 9825, 6286, 6287, 6306, 6285, 6302, 6315, + 6313, 6314, 6304, 6300, 6328, 6321, 6312, 6323, 6337, 6343, + 9825, 6338, 6340, 6336, 6355, 6344, 6341, 6348, 6353, 6364, + 6342, 6381, 6372, 6365, 6373, 6375, 6385, 6390, 6378, 9825, + + 6398, 6404, 6388, 6418, 6399, 6405, 6408, 9825, 6415, 6423, + 6424, 9825, 6417, 6419, 6431, 6443, 6434, 6435, 6432, 6438, + 6446, 6449, 6466, 9825, 6456, 6457, 6454, 6467, 6473, 6476, + 9825, 9825, 6483, 9825, 6480, 6465, 6482, 6490, 6479, 6505, + 6511, 6509, 6519, 6501, 6517, 6522, 6510, 6506, 6531, 6512, + 6556, 6535, 6545, 6539, 6547, 6533, 9825, 9825, 6543, 6558, + 6554, 6564, 6566, 6565, 6560, 6562, 6570, 6587, 6568, 6571, + 6601, 9825, 6595, 6586, 6603, 6589, 9825, 6583, 6612, 6596, + 6605, 6613, 6611, 6615, 6621, 6622, 6628, 6624, 6633, 6638, + 6647, 6635, 6639, 6651, 6640, 6664, 6658, 6654, 6643, 9825, + + 6665, 6656, 6668, 6666, 6670, 6682, 6655, 6692, 6684, 9825, + 6691, 9825, 6695, 6693, 6709, 6710, 6713, 6718, 6714, 6711, + 6716, 6733, 6725, 6727, 6745, 6729, 6734, 6735, 6754, 6756, + 6758, 6759, 6761, 9825, 6762, 6743, 6744, 6757, 6777, 6778, + 6760, 6780, 6781, 6797, 6783, 6795, 6801, 6802, 6789, 6804, + 6792, 6806, 6796, 9825, 6807, 6811, 6816, 6814, 6819, 6826, + 6818, 6849, 6817, 6833, 6836, 6853, 9825, 6839, 6842, 6856, + 9825, 6847, 6845, 6843, 6869, 6857, 6870, 6866, 6860, 6876, + 9825, 6886, 6879, 6883, 6887, 6893, 6894, 6878, 6906, 6900, + 6913, 6905, 9825, 6924, 6910, 6936, 6938, 6919, 6932, 6926, + + 6949, 6903, 9825, 6950, 6952, 6933, 6963, 6966, 6946, 6965, + 6969, 6973, 6981, 6958, 6974, 6985, 6982, 6989, 6990, 6993, + 6992, 6994, 7000, 7007, 9825, 6977, 9825, 7013, 7027, 7008, + 7030, 7014, 7035, 7032, 7024, 9825, 7026, 7029, 7043, 7033, + 7038, 9825, 7040, 7060, 7053, 7065, 9825, 7058, 7073, 7062, + 7069, 7083, 7085, 9825, 7084, 7087, 7088, 7096, 7099, 7089, + 7097, 7092, 7100, 7095, 7104, 7102, 7129, 7137, 7122, 7133, + 9825, 7131, 7139, 7140, 7141, 7134, 7144, 7127, 7148, 7150, + 7159, 9825, 7171, 7158, 7161, 7168, 7179, 7164, 7185, 7160, + 7186, 7175, 7170, 7177, 7195, 7180, 9825, 7202, 7199, 7213, + + 7226, 7216, 7223, 9825, 7221, 9825, 7217, 7232, 7234, 7209, + 7238, 9825, 9825, 7242, 7243, 7244, 7247, 7240, 9825, 9825, + 7254, 9825, 7245, 9825, 7241, 7259, 9825, 9825, 7272, 7252, + 7264, 7279, 7282, 7280, 9825, 7288, 9825, 7294, 7291, 7281, + 7271, 7290, 9825, 7304, 7298, 7314, 7315, 7303, 9825, 7307, + 7305, 7311, 7318, 9825, 7310, 7332, 7317, 7321, 9825, 7345, + 7313, 7342, 7331, 7343, 7350, 7359, 7337, 7353, 7356, 7360, + 7364, 7369, 7366, 7375, 7381, 7385, 7390, 7387, 7379, 7395, + 7402, 7404, 7398, 7393, 7406, 7401, 7388, 7407, 7419, 7416, + 7438, 7439, 7430, 7432, 7440, 7437, 7431, 7448, 7434, 7436, + + 7442, 7443, 7446, 7457, 7469, 7461, 7473, 7464, 7488, 7480, + 7493, 7489, 7491, 7495, 9825, 7484, 7481, 7474, 7520, 7512, + 7500, 7529, 7528, 7531, 7535, 9825, 7537, 9825, 7539, 7524, + 7530, 7525, 7533, 9825, 7550, 7527, 7551, 7554, 7567, 7559, + 7578, 7562, 7565, 7566, 7586, 9825, 7585, 7577, 7568, 7589, + 7588, 9825, 7593, 7596, 7581, 7601, 7614, 7607, 7606, 7609, + 7615, 7611, 7632, 7635, 7617, 7625, 7633, 7640, 7645, 7652, + 7638, 7646, 7636, 7654, 7648, 7649, 7651, 7672, 7682, 7674, + 7683, 7686, 9825, 7670, 9825, 7678, 7673, 7679, 7688, 7697, + 7698, 7700, 7704, 9825, 9825, 7701, 7714, 7707, 7711, 7715, + + 7722, 7725, 7724, 7728, 9825, 7730, 7742, 7737, 7727, 9825, + 7741, 7738, 7750, 7761, 9825, 7759, 7753, 7772, 7774, 7760, + 7775, 7773, 7781, 7766, 7780, 7764, 7794, 9825, 9825, 9825, + 9825, 7795, 7788, 7804, 7799, 7800, 7805, 7807, 7809, 7820, + 7808, 7815, 9825, 7824, 9825, 9825, 7833, 7839, 7832, 7843, + 7841, 7806, 7845, 7842, 9825, 7847, 7851, 7853, 7852, 7861, + 7863, 7859, 7865, 7882, 7880, 7888, 7877, 7878, 7902, 7894, + 7897, 7885, 7901, 7903, 7908, 9825, 9825, 7904, 7910, 7913, + 7918, 7914, 7927, 7920, 7941, 7935, 7933, 7940, 7936, 7942, + 7931, 7947, 7953, 7959, 7943, 9825, 7965, 7966, 7954, 9825, + + 7961, 9825, 7970, 7978, 7967, 7974, 7980, 7981, 7994, 7997, + 9825, 9825, 7986, 8001, 8003, 9825, 9825, 7992, 7998, 7996, + 8020, 8019, 8008, 8023, 8014, 8034, 8021, 9825, 8022, 9825, + 8024, 8035, 8043, 8030, 8057, 8063, 8042, 8068, 8065, 8064, + 8069, 9825, 8066, 8067, 9825, 8073, 8076, 8077, 8071, 8082, + 9825, 8087, 8092, 8078, 8086, 9825, 8089, 8107, 8112, 9825, + 8118, 9825, 8100, 8116, 8113, 8128, 8114, 9825, 8102, 8129, + 9825, 8131, 8132, 8133, 8137, 8138, 9825, 8135, 8143, 9825, + 8146, 8142, 8153, 8167, 8156, 8168, 8159, 8157, 8160, 8181, + 8179, 8178, 9825, 9825, 8190, 8184, 73, 8196, 8177, 8183, + + 8187, 8186, 8195, 8193, 8208, 8197, 9825, 9825, 8210, 9825, + 8213, 8222, 9825, 8201, 8228, 8232, 8229, 8236, 8239, 8223, + 8224, 8244, 8240, 8258, 8248, 8245, 8268, 8282, 8283, 8260, + 8280, 8285, 8289, 8291, 8293, 8281, 8295, 8278, 8275, 8299, + 8296, 8306, 8305, 8309, 8310, 9825, 8334, 8335, 8336, 8322, + 9825, 8343, 8337, 8345, 8341, 9825, 8347, 8342, 8349, 8350, + 8356, 9825, 8357, 8352, 8376, 8372, 8363, 8377, 8374, 8360, + 8378, 8384, 8390, 9825, 9825, 9825, 8392, 8395, 9825, 8396, + 8386, 8385, 8407, 9825, 8406, 8405, 8416, 9825, 9825, 8404, + 8421, 8427, 9825, 8415, 8403, 9825, 8432, 9825, 8418, 9825, + + 8433, 8441, 8448, 8431, 9825, 8442, 8437, 8443, 8477, 9825, + 8461, 8472, 8479, 8471, 8462, 8464, 8485, 9825, 8491, 8487, + 8488, 8494, 8484, 8489, 8476, 8495, 8505, 8518, 8506, 8525, + 9825, 8522, 8529, 8530, 8536, 8519, 8524, 8527, 9825, 8520, + 9825, 8541, 9825, 8546, 8547, 8544, 8561, 8556, 8557, 8569, + 8573, 8554, 8571, 8567, 8563, 8579, 8574, 9825, 9825, 8591, + 8592, 9825, 8581, 9825, 8595, 9825, 8594, 8597, 8604, 8598, + 8606, 9825, 8615, 8603, 8608, 8631, 8605, 8620, 9825, 8626, + 8629, 8630, 8634, 9825, 9825, 8625, 8651, 8654, 9825, 8638, + 8648, 8662, 8652, 8644, 8663, 8657, 8665, 8653, 8656, 8650, + + 8676, 8677, 8685, 8678, 8695, 8696, 8701, 9825, 9825, 9825, + 8694, 8687, 8713, 8710, 8708, 8718, 8709, 9825, 8712, 8716, + 8714, 8723, 8735, 8730, 8731, 9825, 8737, 8733, 8728, 8739, + 8732, 8744, 8740, 8759, 9825, 8761, 8765, 8767, 8770, 8776, + 8773, 8777, 8782, 8774, 8779, 8775, 8780, 9825, 8789, 9825, + 9825, 8791, 9825, 8771, 8795, 8794, 8797, 8814, 9825, 8796, + 8799, 8808, 8816, 8809, 8822, 8828, 8833, 9825, 8839, 8818, + 8832, 8842, 9825, 9825, 8840, 8848, 9825, 8850, 8857, 8849, + 8844, 8841, 8856, 8870, 8867, 9825, 8869, 8874, 8865, 8866, + 8876, 8875, 8889, 9825, 8890, 8888, 8884, 8899, 9825, 8891, + + 8894, 8906, 8908, 8900, 9825, 8915, 8918, 8933, 8925, 9825, + 8921, 8936, 8927, 9825, 9825, 8943, 8944, 8945, 9825, 9825, + 9825, 8953, 8950, 8942, 8958, 9825, 8959, 8975, 8980, 8962, + 8985, 8960, 9825, 8976, 8983, 8990, 8977, 8979, 9825, 9825, + 8974, 8978, 8991, 8997, 8989, 9825, 9825, 8986, 9007, 9022, + 9006, 9012, 9825, 9010, 9024, 9030, 9023, 9034, 9031, 9040, + 9033, 9038, 9054, 9052, 9049, 9044, 9053, 9051, 9059, 9077, + 9065, 9046, 9050, 9079, 9074, 9083, 9073, 9089, 9825, 9825, + 9087, 9825, 9097, 9093, 9825, 9825, 9098, 9103, 9105, 9107, + 9825, 9108, 9113, 9117, 9118, 9096, 9825, 9110, 9126, 9124, + + 9115, 9111, 9825, 9128, 9120, 9136, 9135, 9130, 9129, 9147, + 9152, 9825, 9144, 9161, 9825, 9825, 9146, 9162, 9154, 9166, + 9151, 9825, 9173, 9177, 9168, 9178, 9171, 9179, 9185, 9825, + 9181, 9175, 9825, 9825, 9195, 9198, 9825, 9825, 9189, 9825, + 9825, 9825, 9825, 9825, 9825, 9825, 9825, 9214, 9217, 9825, + 9205, 9221, 9223, 9825, 9227, 9825, 9206, 9222, 9226, 9216, + 9825, 9224, 9825, 9212, 9241, 9232, 9253, 9245, 9265, 9248, + 9250, 9249, 9254, 9246, 9259, 9275, 9273, 9278, 9268, 9286, + 9290, 9279, 9298, 9825, 9825, 9825, 9293, 9288, 9304, 9300, + 9314, 9318, 9321, 9322, 9305, 9313, 9320, 9332, 9334, 9317, + + 9328, 9357, 9340, 9326, 9351, 9358, 9348, 9362, 9825, 9363, + 9359, 9352, 9372, 9825, 9361, 9825, 9355, 9825, 9825, 9377, + 9379, 9383, 9375, 9392, 9397, 9382, 9395, 9386, 9388, 9411, + 9825, 9412, 9825, 9825, 9404, 9406, 9825, 9400, 9413, 9825, + 9409, 9423, 9415, 9403, 9424, 9427, 9440, 9442, 9448, 9825, + 9825, 9438, 9439, 9441, 9449, 9454, 9467, 9462, 9465, 9466, + 9472, 9461, 9483, 9825, 9479, 9486, 9482, 9825, 9492, 9476, + 9493, 9489, 9498, 9488, 9502, 9499, 9825, 9504, 9825, 9501, + 9524, 9525, 9515, 9518, 9527, 9542, 9541, 9545, 9825, 9523, + 9552, 9528, 9555, 9561, 9554, 9564, 9565, 9511, 9570, 9576, + + 9514, 9580, 9583, 9574, 9572, 9581, 9825, 9594, 9596, 9825, + 9601, 9604, 9597, 9599, 9611, 9825, 9595, 9610, 9613, 9624, + 9619, 9623, 9825, 9634, 9635, 9637, 9825, 9636, 9825, 9825, + 9642, 9639, 9646, 9648, 9649, 9825, 9825, 9825, 9705, 9712, + 9719, 9726, 9733, 9740, 9747, 102, 9754, 9761, 9768, 9775, + 9782, 9789, 9796, 9803, 9810, 9817 + } ; + +static yyconst flex_int16_t yy_def[3457] = + { 0, + 3438, 1, 3439, 3439, 3440, 3440, 3441, 3441, 3442, 3442, + 3443, 3443, 3444, 3444, 3445, 3445, 3438, 3446, 3438, 3438, + 3438, 3438, 3447, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3448, 3438, 3438, 3438, + 3448, 3449, 3438, 3438, 3438, 3449, 3450, 3438, 3438, 3438, + 3438, 3450, 3451, 3438, 3438, 3438, 3451, 3452, 3438, 3453, + 3438, 3452, 3452, 3454, 3438, 3438, 3438, 3438, 3454, 3455, + 3438, 3438, 3438, 3455, 3446, 3446, 3438, 3456, 3447, 3456, + 3447, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3448, + 3448, 3449, 3449, 3450, 3450, 3438, 3451, 3451, 3452, 3452, + 3453, 3453, 3452, 3454, 3454, 3438, 3455, 3455, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3452, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3452, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3438, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3438, 3446, 3446, 3452, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3452, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3438, 3438, 3446, 3438, 3438, 3446, 3446, 3438, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3452, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3438, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3438, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, + 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, + 3446, 3446, 3446, 3446, 3452, 3452, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, + + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + + 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3452, + 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + + 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3438, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3438, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, + + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, + 3446, 3452, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3438, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3438, 3446, 3438, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3438, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, + + 3446, 3438, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, + 3452, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + + 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3438, 3446, + 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, + 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3438, 3446, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3452, 3446, 3438, + 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3438, 3446, 3438, 3446, 3446, 3446, + 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + + 3446, 3446, 3438, 3438, 3446, 3438, 3446, 3446, 3446, 3438, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3446, 3446, 3446, 3446, 3438, 3446, 3438, 3446, 3446, 3446, + 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, + + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, + 3438, 3438, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3452, + 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3438, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, + + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, + 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + + 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3438, 3446, 3438, 3446, 3446, 3446, + 3446, 3446, 3446, 3452, 3446, 3438, 3446, 3446, 3446, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, + 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, + + 3446, 3446, 3446, 3438, 3446, 3438, 3446, 3446, 3446, 3446, + 3446, 3438, 3438, 3446, 3446, 3446, 3446, 3446, 3438, 3438, + 3446, 3438, 3446, 3438, 3446, 3446, 3438, 3438, 3446, 3446, + 3446, 3446, 3446, 3446, 3438, 3446, 3438, 3446, 3446, 3446, + 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3438, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3452, + 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3438, 3446, 3446, + 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3438, 3446, 3438, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3438, 3438, 3446, 3446, 3446, 3446, 3446, + + 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3438, + 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3438, 3438, + 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3438, 3446, 3438, 3438, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3452, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3438, 3438, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3438, + + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3438, 3438, 3446, 3446, 3446, 3438, 3438, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3438, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3438, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, + 3438, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3438, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, + 3438, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3438, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3438, 3438, 3446, 3446, 3452, 3446, 3446, 3446, + + 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3438, 3446, 3438, + 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, + 3438, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3438, 3438, 3438, 3446, 3446, 3438, 3446, + 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3438, 3438, 3446, + 3446, 3446, 3438, 3446, 3446, 3438, 3446, 3438, 3446, 3438, + + 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3438, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3438, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3438, 3446, + 3446, 3438, 3446, 3438, 3446, 3438, 3446, 3446, 3446, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3446, 3446, 3446, 3438, 3438, 3446, 3446, 3446, 3438, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3438, 3438, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3438, + 3438, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, + 3446, 3446, 3438, 3438, 3446, 3446, 3438, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3438, 3446, + + 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3438, + 3446, 3446, 3446, 3438, 3438, 3446, 3446, 3446, 3438, 3438, + 3438, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, + 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3438, 3438, + 3446, 3446, 3446, 3446, 3446, 3438, 3438, 3446, 3446, 3446, + 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3438, + 3446, 3438, 3446, 3446, 3438, 3438, 3446, 3446, 3446, 3446, + 3438, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, + + 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3438, 3446, 3446, 3438, 3438, 3446, 3446, 3446, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, + 3446, 3446, 3438, 3438, 3446, 3446, 3438, 3438, 3446, 3438, + 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3446, 3446, 3438, + 3446, 3446, 3446, 3438, 3446, 3438, 3446, 3446, 3446, 3446, + 3438, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3438, 3438, 3438, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3446, 3446, 3446, 3438, 3446, 3438, 3446, 3438, 3438, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3438, 3446, 3438, 3438, 3446, 3446, 3438, 3446, 3446, 3438, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, + 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3438, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3438, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + + 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3438, + 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, + 3446, 3446, 3438, 3446, 3446, 3446, 3438, 3446, 3438, 3438, + 3446, 3446, 3446, 3446, 3446, 3438, 3438, 0, 3438, 3438, + 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, + 3438, 3438, 3438, 3438, 3438, 3438 + } ; + +static yyconst flex_int16_t yy_nxt[9892] = + { 0, + 18, 19, 20, 21, 22, 23, 22, 18, 18, 18, + 18, 18, 22, 24, 25, 26, 27, 28, 29, 18, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 18, 18, 18, 45, 46, + 24, 25, 26, 27, 28, 29, 18, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 18, 18, 18, 45, 48, 49, 50, 48, + 49, 50, 53, 54, 53, 54, 55, 119, 55, 58, + 59, 60, 61, 120, 22, 58, 59, 60, 61, 86, + 22, 64, 65, 66, 64, 65, 66, 87, 160, 160, + + 1311, 88, 85, 51, 119, 86, 51, 167, 167, 56, + 120, 56, 170, 75, 76, 77, 78, 62, 22, 75, + 76, 77, 78, 62, 22, 81, 82, 83, 67, 97, + 86, 67, 19, 20, 21, 69, 70, 71, 19, 20, + 21, 69, 70, 71, 81, 82, 83, 121, 108, 177, + 177, 79, 72, 159, 409, 86, 97, 79, 72, 86, + 137, 90, 84, 90, 90, 86, 90, 170, 109, 178, + 73, 86, 90, 86, 121, 108, 73, 176, 87, 72, + 159, 84, 88, 86, 130, 72, 112, 137, 110, 162, + 86, 175, 162, 173, 113, 109, 98, 170, 188, 91, + + 92, 93, 111, 99, 94, 114, 170, 100, 187, 95, + 101, 130, 86, 112, 86, 110, 86, 86, 96, 168, + 173, 113, 86, 98, 86, 188, 166, 92, 93, 111, + 99, 94, 114, 165, 100, 187, 95, 101, 85, 162, + 85, 85, 162, 85, 163, 96, 102, 161, 115, 85, + 103, 116, 189, 104, 181, 105, 106, 252, 117, 164, + 118, 164, 164, 292, 164, 86, 107, 90, 86, 90, + 90, 86, 90, 102, 86, 115, 122, 103, 116, 189, + 104, 181, 105, 106, 123, 117, 180, 118, 126, 86, + 124, 86, 127, 107, 125, 86, 156, 160, 160, 148, + + 157, 149, 86, 122, 158, 172, 128, 178, 129, 86, + 150, 123, 176, 180, 86, 126, 151, 124, 179, 127, + 175, 125, 86, 156, 152, 86, 148, 157, 149, 167, + 167, 158, 170, 128, 153, 129, 131, 150, 154, 155, + 132, 182, 86, 151, 133, 179, 328, 86, 168, 205, + 134, 152, 169, 135, 169, 169, 86, 169, 86, 184, + 136, 153, 86, 131, 195, 154, 155, 132, 182, 86, + 174, 133, 174, 174, 166, 174, 205, 134, 86, 85, + 135, 85, 85, 86, 85, 332, 184, 136, 138, 1165, + 85, 195, 139, 90, 183, 90, 90, 206, 90, 185, + + 165, 86, 140, 141, 90, 142, 86, 193, 194, 197, + 196, 163, 186, 161, 86, 138, 86, 86, 86, 139, + 86, 183, 86, 86, 206, 240, 185, 198, 3438, 140, + 141, 91, 142, 143, 193, 194, 144, 196, 190, 186, + 199, 86, 201, 145, 191, 200, 192, 146, 147, 86, + 334, 86, 240, 86, 198, 86, 207, 3438, 86, 86, + 143, 208, 3438, 144, 209, 190, 215, 199, 86, 201, + 145, 191, 200, 192, 146, 147, 202, 203, 211, 86, + 210, 212, 86, 207, 204, 228, 86, 3438, 208, 217, + 216, 209, 86, 86, 213, 214, 3438, 86, 86, 86, + + 225, 3438, 86, 202, 203, 211, 218, 210, 212, 226, + 220, 204, 228, 86, 221, 223, 217, 216, 227, 229, + 224, 213, 214, 86, 232, 230, 219, 225, 86, 253, + 222, 86, 86, 218, 86, 231, 226, 220, 86, 86, + 233, 221, 223, 86, 86, 227, 229, 224, 235, 86, + 234, 232, 230, 219, 237, 236, 253, 222, 238, 86, + 3438, 239, 231, 86, 86, 241, 245, 233, 86, 246, + 86, 86, 86, 3438, 242, 235, 86, 234, 86, 247, + 248, 237, 236, 243, 251, 238, 3438, 86, 239, 244, + 3438, 249, 241, 245, 257, 250, 246, 86, 86, 3438, + + 254, 242, 259, 261, 86, 258, 247, 248, 262, 86, + 243, 251, 267, 86, 86, 260, 244, 255, 249, 86, + 256, 257, 250, 86, 263, 266, 86, 254, 268, 259, + 261, 270, 258, 264, 86, 262, 277, 269, 272, 267, + 86, 271, 260, 86, 255, 265, 86, 256, 86, 86, + 3438, 263, 266, 86, 86, 268, 177, 177, 270, 3438, + 264, 3438, 170, 277, 269, 272, 3438, 273, 271, 3438, + 3438, 164, 265, 164, 164, 169, 164, 169, 169, 90, + 169, 90, 90, 174, 90, 174, 174, 274, 174, 86, + 3438, 276, 3438, 280, 273, 278, 281, 282, 283, 284, + + 86, 275, 279, 3438, 285, 86, 338, 3438, 3438, 86, + 86, 86, 286, 290, 86, 86, 291, 172, 276, 86, + 280, 86, 278, 281, 282, 283, 284, 287, 275, 279, + 86, 285, 340, 288, 289, 86, 86, 293, 86, 286, + 290, 294, 86, 291, 301, 303, 3438, 302, 306, 3438, + 307, 304, 308, 86, 305, 314, 310, 86, 295, 86, + 288, 289, 86, 86, 86, 86, 311, 86, 294, 3438, + 86, 301, 303, 86, 302, 306, 86, 307, 304, 86, + 309, 305, 314, 310, 86, 295, 296, 312, 86, 318, + 317, 297, 313, 311, 326, 370, 298, 315, 86, 86, + + 316, 86, 299, 300, 319, 86, 325, 309, 3438, 86, + 3438, 86, 86, 296, 312, 329, 318, 317, 297, 313, + 86, 326, 370, 298, 315, 327, 86, 316, 86, 299, + 300, 319, 320, 325, 330, 321, 86, 322, 337, 335, + 333, 86, 329, 342, 86, 331, 339, 86, 3438, 323, + 344, 324, 327, 336, 341, 3438, 3438, 3438, 86, 320, + 345, 3438, 321, 343, 322, 337, 86, 333, 86, 351, + 346, 86, 331, 339, 86, 86, 323, 86, 324, 347, + 336, 341, 86, 86, 348, 349, 86, 345, 86, 352, + 343, 86, 353, 356, 350, 354, 351, 346, 355, 86, + + 357, 364, 360, 86, 86, 86, 347, 86, 361, 362, + 86, 348, 349, 86, 86, 367, 352, 86, 358, 353, + 356, 350, 354, 359, 86, 355, 363, 357, 373, 360, + 369, 86, 86, 86, 368, 361, 362, 365, 366, 372, + 371, 86, 374, 375, 376, 378, 86, 86, 86, 3438, + 86, 86, 86, 363, 377, 381, 379, 369, 86, 86, + 86, 368, 380, 383, 365, 366, 372, 371, 3438, 86, + 375, 384, 378, 386, 86, 387, 86, 86, 382, 388, + 390, 377, 86, 379, 389, 3438, 391, 86, 385, 86, + 392, 394, 86, 86, 170, 86, 86, 86, 384, 86, + + 386, 395, 387, 396, 393, 382, 388, 390, 86, 398, + 397, 389, 86, 391, 3438, 385, 399, 392, 401, 403, + 405, 400, 402, 86, 404, 86, 86, 86, 86, 406, + 396, 393, 86, 86, 86, 86, 407, 397, 86, 408, + 3438, 86, 411, 399, 412, 401, 403, 413, 400, 402, + 410, 404, 86, 86, 415, 414, 406, 416, 86, 86, + 419, 86, 420, 407, 421, 86, 408, 86, 86, 411, + 86, 412, 417, 418, 413, 86, 422, 410, 86, 423, + 86, 415, 414, 426, 416, 424, 428, 431, 3438, 420, + 86, 86, 86, 427, 86, 429, 86, 432, 433, 417, + + 418, 86, 425, 422, 86, 435, 86, 434, 86, 86, + 426, 86, 424, 436, 431, 86, 438, 437, 86, 430, + 427, 86, 439, 445, 432, 433, 86, 86, 441, 425, + 86, 86, 435, 440, 434, 443, 442, 86, 86, 86, + 436, 446, 86, 438, 437, 86, 430, 447, 3438, 439, + 445, 448, 444, 3438, 86, 441, 3438, 455, 456, 86, + 440, 3438, 443, 442, 3438, 457, 86, 86, 463, 462, + 469, 86, 3438, 86, 447, 86, 467, 3438, 448, 444, + 449, 468, 86, 450, 455, 456, 464, 86, 451, 452, + 453, 454, 457, 86, 86, 463, 462, 469, 86, 465, + + 466, 86, 470, 3438, 458, 3438, 459, 449, 86, 478, + 450, 471, 476, 464, 472, 451, 452, 453, 454, 460, + 473, 86, 461, 479, 86, 477, 465, 466, 86, 86, + 86, 458, 86, 459, 474, 475, 86, 480, 471, 476, + 481, 472, 482, 86, 86, 86, 460, 473, 483, 461, + 479, 485, 477, 484, 86, 3438, 488, 493, 486, 86, + 487, 474, 475, 86, 480, 86, 86, 481, 86, 482, + 86, 489, 86, 490, 492, 483, 494, 495, 485, 86, + 484, 86, 491, 496, 493, 486, 507, 487, 86, 497, + 498, 3438, 499, 500, 505, 3438, 506, 86, 489, 86, + + 490, 492, 3438, 508, 495, 86, 86, 549, 86, 491, + 496, 501, 86, 562, 86, 509, 497, 498, 86, 499, + 500, 505, 86, 506, 502, 522, 523, 503, 525, 504, + 86, 526, 86, 527, 530, 86, 540, 86, 501, 86, + 86, 541, 509, 86, 524, 86, 86, 86, 528, 539, + 86, 502, 522, 523, 503, 525, 504, 510, 526, 511, + 527, 530, 545, 3438, 529, 512, 538, 86, 86, 513, + 86, 524, 86, 544, 514, 528, 539, 515, 86, 170, + 3438, 542, 546, 86, 510, 547, 511, 548, 543, 545, + 567, 529, 512, 538, 86, 86, 513, 550, 86, 551, + + 544, 514, 86, 86, 515, 516, 86, 517, 542, 546, + 553, 557, 547, 612, 548, 543, 552, 555, 86, 554, + 518, 558, 86, 519, 550, 520, 551, 521, 86, 86, + 3438, 86, 516, 559, 517, 556, 560, 561, 557, 86, + 86, 3438, 86, 552, 555, 86, 554, 518, 558, 86, + 519, 563, 520, 3438, 521, 531, 532, 566, 86, 564, + 559, 565, 556, 560, 561, 533, 86, 534, 535, 536, + 86, 568, 537, 86, 569, 570, 86, 86, 563, 3438, + 86, 604, 531, 532, 566, 86, 564, 86, 565, 571, + 572, 598, 533, 573, 534, 535, 536, 86, 568, 537, + + 86, 569, 570, 574, 575, 3438, 576, 577, 604, 3438, + 578, 579, 3438, 581, 86, 86, 584, 585, 86, 86, + 573, 3438, 3438, 86, 582, 86, 3438, 603, 580, 586, + 574, 575, 86, 576, 577, 86, 86, 578, 579, 583, + 581, 86, 86, 584, 585, 588, 587, 86, 589, 590, + 599, 582, 600, 602, 86, 580, 586, 86, 601, 86, + 591, 86, 592, 3438, 607, 605, 583, 86, 86, 610, + 606, 86, 588, 587, 86, 589, 590, 599, 608, 600, + 602, 86, 616, 615, 613, 601, 86, 591, 86, 592, + 593, 607, 605, 86, 609, 86, 610, 606, 594, 595, + + 86, 86, 596, 597, 611, 608, 86, 618, 614, 86, + 615, 613, 86, 617, 86, 620, 621, 593, 86, 86, + 622, 609, 86, 626, 624, 594, 595, 619, 623, 596, + 597, 611, 86, 86, 618, 614, 86, 86, 86, 86, + 617, 625, 620, 621, 627, 628, 86, 622, 86, 3438, + 626, 624, 629, 630, 619, 623, 632, 3438, 631, 86, + 634, 3438, 633, 3438, 635, 636, 86, 637, 625, 86, + 86, 627, 628, 86, 86, 638, 86, 639, 642, 629, + 630, 86, 86, 632, 86, 631, 3438, 634, 640, 633, + 86, 635, 636, 86, 637, 641, 86, 644, 653, 647, + + 86, 86, 638, 643, 639, 642, 86, 645, 86, 646, + 86, 648, 86, 650, 649, 640, 86, 651, 86, 652, + 86, 660, 641, 3438, 644, 653, 647, 86, 655, 654, + 643, 656, 661, 657, 645, 86, 646, 658, 648, 86, + 659, 649, 86, 663, 651, 86, 662, 86, 3438, 665, + 86, 86, 86, 86, 669, 655, 654, 86, 656, 661, + 657, 666, 86, 667, 658, 668, 664, 659, 86, 670, + 86, 86, 671, 662, 673, 86, 665, 86, 672, 674, + 675, 669, 684, 86, 86, 86, 3438, 86, 666, 86, + 667, 86, 668, 664, 86, 687, 670, 685, 686, 671, + + 86, 673, 3438, 86, 688, 672, 674, 675, 676, 684, + 86, 3438, 86, 677, 689, 678, 691, 690, 86, 698, + 694, 679, 687, 680, 685, 686, 681, 682, 86, 695, + 3438, 688, 86, 683, 86, 676, 86, 86, 703, 86, + 677, 689, 678, 691, 690, 692, 698, 694, 679, 693, + 680, 86, 696, 681, 682, 697, 695, 701, 699, 702, + 683, 706, 86, 86, 3438, 703, 705, 86, 700, 86, + 86, 704, 692, 86, 708, 86, 693, 709, 707, 696, + 86, 710, 697, 712, 701, 711, 702, 86, 706, 86, + 86, 86, 714, 705, 713, 700, 86, 86, 704, 86, + + 86, 708, 715, 716, 709, 707, 717, 718, 710, 719, + 712, 86, 711, 722, 86, 720, 721, 723, 86, 714, + 86, 713, 728, 724, 726, 3438, 735, 86, 86, 715, + 716, 86, 86, 717, 718, 86, 719, 86, 86, 170, + 725, 727, 720, 721, 723, 86, 729, 730, 86, 728, + 724, 726, 731, 86, 732, 734, 733, 86, 86, 737, + 739, 86, 743, 736, 3438, 738, 3438, 725, 727, 86, + 3438, 742, 740, 729, 730, 86, 741, 86, 86, 731, + 86, 732, 86, 733, 86, 86, 86, 739, 86, 743, + 736, 86, 738, 86, 744, 747, 750, 748, 742, 740, + + 751, 745, 749, 741, 746, 752, 86, 753, 754, 755, + 86, 756, 86, 757, 759, 760, 3438, 3438, 758, 764, + 86, 744, 747, 750, 761, 762, 763, 86, 745, 86, + 86, 746, 86, 765, 86, 86, 86, 766, 86, 86, + 767, 759, 760, 86, 86, 86, 764, 86, 86, 769, + 768, 761, 762, 763, 770, 771, 772, 86, 86, 86, + 765, 774, 773, 776, 766, 86, 775, 767, 3438, 778, + 779, 781, 86, 777, 86, 86, 769, 768, 86, 86, + 780, 86, 771, 772, 86, 783, 86, 86, 774, 773, + 776, 86, 86, 775, 782, 788, 778, 779, 86, 790, + + 777, 784, 791, 86, 86, 789, 785, 780, 86, 786, + 787, 794, 783, 86, 796, 795, 86, 792, 793, 3438, + 817, 782, 788, 797, 86, 86, 790, 86, 784, 791, + 798, 86, 789, 785, 801, 802, 786, 787, 794, 86, + 86, 86, 795, 799, 792, 793, 86, 803, 806, 804, + 797, 808, 86, 807, 86, 805, 86, 798, 810, 86, + 86, 801, 802, 811, 86, 800, 86, 86, 86, 86, + 799, 813, 809, 86, 803, 806, 804, 86, 808, 86, + 807, 86, 805, 812, 814, 86, 815, 816, 818, 3438, + 811, 86, 800, 819, 822, 86, 820, 821, 813, 809, + + 823, 826, 86, 824, 86, 828, 825, 829, 827, 86, + 812, 814, 86, 815, 816, 818, 86, 86, 86, 86, + 819, 822, 86, 86, 830, 86, 831, 823, 826, 86, + 824, 836, 833, 825, 829, 827, 832, 86, 86, 834, + 841, 837, 3438, 842, 835, 86, 843, 838, 850, 846, + 86, 86, 3438, 831, 86, 86, 86, 844, 836, 833, + 845, 839, 840, 832, 86, 847, 848, 86, 837, 86, + 842, 86, 86, 843, 838, 86, 846, 856, 854, 86, + 86, 849, 851, 855, 844, 86, 3438, 845, 839, 840, + 86, 852, 847, 848, 857, 858, 86, 86, 859, 860, + + 3438, 853, 861, 86, 856, 862, 86, 863, 849, 851, + 86, 86, 865, 86, 86, 864, 86, 866, 852, 86, + 86, 857, 858, 86, 86, 859, 860, 867, 853, 861, + 868, 869, 862, 870, 863, 871, 873, 875, 872, 865, + 874, 3438, 864, 86, 86, 86, 86, 912, 86, 86, + 86, 86, 86, 879, 867, 877, 878, 868, 869, 876, + 870, 86, 871, 873, 880, 872, 86, 874, 86, 86, + 86, 86, 882, 881, 884, 883, 3438, 891, 885, 86, + 879, 86, 877, 878, 86, 86, 876, 86, 886, 887, + 888, 880, 889, 890, 3438, 86, 893, 86, 86, 882, + + 881, 884, 883, 86, 891, 885, 86, 892, 895, 86, + 894, 897, 896, 900, 86, 886, 887, 888, 86, 889, + 890, 898, 901, 893, 86, 86, 903, 86, 899, 902, + 86, 3438, 86, 86, 892, 895, 86, 894, 897, 896, + 900, 904, 86, 905, 907, 906, 86, 909, 898, 901, + 915, 86, 911, 903, 86, 899, 902, 908, 910, 913, + 86, 3438, 917, 86, 86, 86, 914, 86, 904, 916, + 905, 907, 906, 86, 909, 86, 86, 915, 919, 911, + 86, 170, 86, 918, 908, 910, 913, 921, 920, 917, + 86, 86, 922, 914, 86, 86, 916, 924, 925, 926, + + 923, 927, 928, 3438, 929, 919, 930, 3438, 931, 86, + 918, 86, 933, 934, 86, 920, 936, 86, 86, 922, + 86, 86, 935, 86, 86, 925, 926, 923, 927, 86, + 932, 929, 86, 930, 86, 931, 86, 937, 938, 933, + 86, 86, 947, 936, 939, 86, 86, 3438, 3438, 935, + 948, 86, 3438, 3438, 86, 3438, 949, 932, 952, 950, + 86, 954, 3438, 3438, 937, 938, 951, 953, 3438, 947, + 3438, 939, 940, 961, 86, 941, 86, 948, 86, 942, + 86, 955, 943, 949, 86, 952, 950, 86, 954, 944, + 945, 958, 946, 951, 953, 956, 957, 86, 959, 940, + + 86, 973, 941, 960, 86, 86, 942, 86, 955, 943, + 86, 86, 86, 969, 970, 3438, 944, 945, 958, 946, + 86, 86, 956, 957, 971, 959, 983, 972, 973, 974, + 960, 962, 963, 86, 964, 86, 977, 965, 976, 3438, + 969, 970, 966, 978, 86, 975, 86, 980, 967, 968, + 86, 971, 86, 983, 972, 86, 974, 86, 962, 963, + 86, 964, 981, 977, 965, 976, 979, 982, 86, 966, + 978, 86, 975, 984, 980, 967, 968, 985, 3438, 986, + 3438, 987, 3438, 988, 991, 989, 3438, 993, 3438, 86, + 992, 990, 3438, 979, 86, 994, 995, 1006, 3438, 86, + + 984, 86, 86, 86, 985, 86, 986, 86, 987, 86, + 988, 86, 989, 86, 993, 86, 997, 992, 990, 86, + 996, 998, 994, 995, 86, 999, 1000, 86, 1001, 86, + 1002, 1004, 1005, 1003, 3438, 1008, 1012, 86, 86, 1007, + 86, 86, 86, 997, 1009, 1011, 86, 996, 998, 1010, + 1014, 86, 999, 1000, 1017, 1001, 86, 1002, 1004, 1005, + 1003, 86, 86, 1013, 1015, 1016, 1007, 86, 86, 1019, + 3438, 86, 1011, 1018, 1020, 1021, 86, 1024, 86, 1022, + 1023, 1017, 86, 1025, 1026, 1029, 86, 1028, 86, 86, + 1013, 1015, 1032, 86, 86, 86, 1019, 86, 86, 86, + + 1018, 86, 86, 86, 1024, 1027, 1022, 1023, 1030, 1031, + 1025, 1026, 86, 1033, 1028, 1034, 86, 1040, 3438, 86, + 1035, 1036, 1037, 86, 1038, 86, 86, 1042, 86, 1045, + 3438, 1041, 1027, 3438, 1039, 1030, 1031, 3438, 86, 86, + 86, 86, 1034, 86, 1040, 86, 86, 1035, 1036, 1037, + 1044, 1038, 86, 86, 1042, 1043, 1045, 86, 1041, 1046, + 1048, 1039, 1049, 1050, 1047, 1051, 1052, 1053, 86, 86, + 1056, 86, 1054, 1057, 86, 1058, 86, 1044, 1060, 1059, + 1055, 86, 1043, 86, 86, 3438, 86, 1048, 3438, 1049, + 1050, 86, 1051, 1052, 1053, 86, 86, 1056, 1067, 1054, + + 86, 86, 1058, 1061, 1062, 1060, 1059, 1055, 1063, 1064, + 86, 86, 1069, 86, 1065, 1066, 86, 1068, 1070, 86, + 86, 86, 1071, 3438, 1075, 1067, 86, 1079, 1072, 1073, + 1061, 1062, 86, 1074, 1076, 1063, 1064, 86, 3438, 1069, + 86, 1065, 1066, 86, 1068, 86, 86, 1078, 1084, 1071, + 86, 1075, 1077, 86, 86, 1072, 1073, 1081, 1080, 1082, + 1074, 1076, 1089, 1083, 86, 86, 86, 86, 1086, 86, + 86, 1085, 1087, 86, 1078, 1084, 1088, 86, 86, 1077, + 86, 1090, 1097, 86, 1081, 1080, 1082, 1091, 1092, 1093, + 1083, 1095, 3438, 1096, 86, 1086, 3438, 1094, 1085, 1087, + + 86, 3438, 86, 1088, 86, 86, 1101, 1098, 1104, 1097, + 1103, 1099, 1102, 86, 1091, 86, 1093, 1105, 86, 1100, + 86, 1106, 1108, 86, 1094, 86, 86, 3438, 86, 1107, + 86, 1110, 3438, 1101, 1098, 1109, 86, 1103, 1099, 1102, + 86, 86, 86, 86, 1105, 1112, 1100, 1115, 1106, 1113, + 1111, 1114, 1116, 1117, 86, 1119, 1107, 3438, 86, 86, + 86, 1118, 1109, 1120, 1121, 86, 1123, 86, 86, 3438, + 1122, 86, 1112, 1126, 86, 1138, 1113, 1111, 1114, 170, + 1117, 86, 1119, 1124, 86, 1125, 86, 86, 1118, 1127, + 1120, 1121, 86, 1123, 1135, 1128, 86, 1122, 86, 3438, + + 1126, 86, 86, 1136, 3438, 1137, 1139, 1162, 86, 3438, + 1124, 1140, 1125, 1143, 1145, 1141, 1127, 86, 3438, 1146, + 86, 1135, 1128, 1129, 1142, 1130, 86, 86, 3438, 1131, + 1136, 1132, 1137, 1139, 86, 86, 1133, 86, 1140, 86, + 1143, 1134, 1141, 1147, 1144, 1152, 86, 86, 1151, 1148, + 1129, 1142, 1130, 3438, 1149, 1153, 1131, 86, 1132, 1154, + 86, 86, 86, 1133, 3438, 1155, 1150, 86, 1134, 1163, + 1147, 1144, 1152, 1157, 86, 1151, 1148, 86, 1156, 86, + 1159, 1149, 1153, 1158, 3438, 1160, 1154, 86, 1164, 1161, + 1166, 86, 1155, 1150, 1167, 3438, 86, 1178, 86, 86, + + 1157, 86, 1181, 1177, 1169, 1156, 86, 1159, 1180, 1168, + 1158, 86, 1160, 86, 1179, 86, 1161, 86, 86, 86, + 3438, 1167, 86, 86, 1178, 1182, 1183, 86, 86, 1181, + 1177, 1169, 1185, 1184, 1188, 1180, 1168, 1170, 1187, 3438, + 86, 1179, 1171, 1186, 1172, 86, 86, 86, 1194, 86, + 1173, 86, 1182, 1183, 1189, 1174, 1175, 1190, 1191, 1185, + 1184, 3438, 1176, 86, 1170, 1187, 86, 86, 1192, 1171, + 1186, 1172, 86, 1195, 1197, 86, 86, 1173, 1193, 86, + 1198, 1189, 1174, 1175, 1190, 1191, 1196, 86, 1200, 1176, + 1199, 1202, 1203, 86, 1201, 1192, 86, 3438, 86, 1208, + + 1195, 1204, 1205, 3438, 86, 1193, 86, 1198, 86, 86, + 86, 1207, 1206, 1196, 86, 1200, 1209, 1199, 1210, 1203, + 86, 1201, 86, 86, 1211, 1212, 86, 1213, 1204, 1205, + 86, 86, 86, 1215, 86, 1214, 1218, 1216, 1207, 1206, + 86, 1217, 86, 1209, 1220, 1210, 86, 1221, 86, 3438, + 3438, 1211, 1212, 1224, 1213, 86, 1219, 86, 86, 86, + 1215, 1225, 1214, 1218, 1216, 1222, 86, 1228, 1217, 86, + 1223, 1226, 1227, 1229, 1221, 86, 86, 86, 86, 86, + 1224, 86, 1230, 1219, 86, 1231, 1234, 1232, 1225, 1233, + 1235, 3438, 1222, 3438, 1228, 86, 1237, 1223, 1226, 1227, + + 1229, 1236, 3438, 1241, 86, 86, 1242, 86, 86, 1230, + 86, 1238, 1231, 86, 1232, 86, 1233, 1235, 86, 1239, + 1243, 1244, 86, 1237, 1240, 1245, 1246, 1247, 1236, 86, + 1241, 1248, 86, 1242, 86, 1250, 86, 86, 1238, 1251, + 1252, 1254, 3438, 1249, 86, 86, 86, 1243, 1244, 1253, + 1256, 86, 1245, 1246, 1247, 86, 1255, 1258, 1248, 1257, + 1259, 86, 1260, 86, 1265, 86, 1251, 86, 1254, 86, + 1249, 1267, 86, 86, 86, 1261, 1253, 1256, 1262, 86, + 1264, 1263, 86, 1255, 1258, 86, 1257, 1259, 1266, 1260, + 1268, 1265, 86, 86, 1269, 86, 1270, 1271, 1267, 86, + + 86, 1272, 1261, 86, 1273, 1262, 86, 1264, 1263, 1274, + 1276, 1275, 1278, 1279, 86, 1266, 1277, 86, 86, 86, + 1280, 86, 86, 1270, 1271, 86, 86, 1281, 1272, 1282, + 86, 1273, 1283, 1284, 1285, 1286, 1274, 1276, 1275, 1278, + 86, 1287, 1289, 1277, 1291, 86, 1288, 3438, 1290, 86, + 86, 86, 86, 86, 1281, 86, 1282, 86, 1292, 1293, + 1284, 1295, 1286, 1294, 86, 1296, 86, 1297, 1287, 86, + 86, 86, 86, 1288, 86, 1290, 86, 86, 1299, 1298, + 1303, 1301, 1304, 1307, 1300, 1292, 1293, 3438, 1295, 86, + 1294, 86, 1296, 86, 1297, 86, 86, 1305, 1306, 1302, + + 86, 1310, 1309, 3438, 1313, 1299, 1298, 86, 1301, 86, + 86, 1300, 86, 1308, 86, 86, 86, 1315, 1312, 86, + 86, 86, 86, 1317, 1305, 1306, 1302, 86, 1310, 1309, + 1314, 1313, 1318, 1316, 1319, 1320, 1321, 1323, 86, 1322, + 1308, 86, 170, 1324, 1315, 1312, 1326, 1328, 1327, 86, + 86, 86, 86, 1325, 86, 86, 86, 1314, 1329, 1318, + 1316, 1319, 1320, 1321, 1323, 86, 1322, 1330, 1332, 1331, + 1324, 86, 1334, 86, 1335, 1327, 1333, 3438, 86, 86, + 1325, 1338, 1336, 1342, 1341, 86, 1339, 86, 1337, 86, + 86, 86, 86, 86, 1330, 1332, 1331, 3438, 86, 1334, + + 86, 1335, 1340, 1333, 86, 1343, 86, 1344, 1338, 1336, + 86, 1341, 1345, 1339, 86, 1337, 86, 1346, 86, 1347, + 1352, 3438, 1353, 3438, 86, 1355, 86, 3438, 1354, 1340, + 3438, 1348, 1343, 1358, 1344, 3438, 1356, 3438, 86, 1345, + 1349, 1357, 1350, 86, 1346, 1351, 1347, 1352, 86, 1353, + 86, 1359, 86, 86, 86, 1354, 86, 86, 1348, 86, + 1358, 1360, 1361, 1356, 1362, 1363, 1364, 1349, 1357, 1350, + 86, 1366, 1351, 86, 1365, 1368, 1369, 1370, 1359, 1367, + 86, 86, 1374, 86, 86, 1371, 86, 1372, 1360, 1361, + 1375, 1362, 1363, 1364, 86, 86, 86, 1373, 1366, 86, + + 1379, 1365, 1368, 86, 1370, 86, 1367, 86, 86, 1374, + 1376, 1377, 1371, 1378, 1372, 86, 1380, 1375, 3438, 86, + 1382, 86, 86, 86, 1373, 1381, 1383, 1379, 86, 1386, + 1384, 3438, 1385, 3438, 86, 86, 86, 1376, 1377, 1387, + 1378, 86, 1388, 1380, 1390, 86, 1391, 1382, 1389, 86, + 86, 86, 1381, 1383, 1398, 86, 1386, 1384, 86, 1385, + 1392, 1393, 86, 1395, 1394, 86, 1387, 1396, 86, 1388, + 1397, 1390, 86, 1391, 1401, 1389, 86, 86, 1402, 86, + 1399, 1404, 1400, 1405, 3438, 86, 86, 1392, 1393, 1403, + 1395, 1394, 86, 86, 1396, 86, 1411, 1397, 86, 1406, + + 86, 1401, 1409, 86, 1407, 1402, 1408, 1399, 1404, 1400, + 1405, 1410, 3438, 1419, 86, 86, 1403, 1420, 1421, 3438, + 3438, 1433, 86, 1411, 1425, 86, 1422, 86, 86, 1409, + 1435, 86, 1423, 1408, 3438, 86, 1426, 1424, 1410, 1412, + 1419, 3438, 1428, 1413, 1420, 1427, 1414, 1415, 1433, 1430, + 86, 1416, 86, 1422, 86, 86, 86, 1417, 86, 1423, + 1452, 1418, 86, 1426, 1424, 86, 1412, 86, 86, 1428, + 1413, 1429, 1427, 1414, 1415, 86, 1430, 86, 1416, 1431, + 1434, 1432, 1436, 1437, 1417, 1440, 86, 1452, 1418, 86, + 86, 1438, 1439, 1441, 86, 1442, 3438, 1444, 1429, 1443, + + 86, 3438, 1451, 86, 3438, 86, 1431, 1434, 1432, 1436, + 1437, 3438, 1440, 86, 1450, 86, 1453, 1454, 1438, 1439, + 86, 86, 1455, 1458, 1444, 86, 1443, 86, 1445, 1451, + 1456, 1457, 86, 1446, 1459, 1447, 86, 1448, 86, 1449, + 3438, 1450, 1460, 86, 3438, 86, 86, 1461, 1464, 1455, + 1458, 1462, 86, 86, 1463, 1445, 1470, 1456, 1457, 86, + 1446, 1459, 1447, 1465, 1448, 1466, 1449, 1471, 1472, 86, + 86, 1467, 1468, 1469, 86, 1464, 86, 3438, 1462, 86, + 86, 1463, 1474, 86, 1473, 1476, 86, 86, 86, 1475, + 1465, 1480, 1466, 86, 1471, 1472, 1478, 86, 1467, 1468, + + 1469, 1477, 86, 86, 86, 86, 1479, 1481, 86, 1474, + 1482, 1473, 1476, 86, 1483, 1484, 1475, 1486, 1480, 1485, + 1488, 86, 86, 1478, 1487, 1489, 1491, 1493, 1477, 1490, + 3438, 1492, 86, 1479, 86, 1496, 86, 1482, 86, 86, + 86, 86, 1484, 86, 1486, 1499, 1485, 1488, 1501, 86, + 1503, 1487, 86, 86, 1493, 1494, 1490, 86, 1492, 1495, + 1497, 86, 86, 1498, 1500, 86, 1502, 86, 86, 86, + 1504, 86, 1499, 86, 1505, 1506, 1508, 1503, 1510, 1509, + 86, 3438, 1494, 86, 1507, 1511, 1495, 1497, 86, 3438, + 1498, 1500, 86, 1502, 1512, 86, 86, 1504, 86, 86, + + 86, 1505, 1506, 1508, 86, 1510, 1509, 1513, 1514, 3438, + 1515, 1507, 1511, 1517, 1521, 1520, 86, 1516, 1519, 1522, + 1518, 1512, 86, 1524, 3438, 1525, 1523, 1528, 3438, 86, + 86, 86, 3438, 1535, 1513, 1514, 86, 1515, 86, 86, + 1517, 86, 1520, 86, 1516, 1519, 86, 1518, 86, 1526, + 1527, 86, 1525, 1523, 86, 86, 1529, 86, 1530, 1532, + 1534, 1531, 1533, 86, 86, 86, 86, 86, 1536, 86, + 1537, 170, 1538, 3438, 1541, 1542, 1526, 1527, 86, 1543, + 1544, 86, 86, 1529, 1546, 1530, 1532, 1534, 1531, 1533, + 1539, 86, 1551, 86, 86, 3438, 1540, 1537, 1547, 1545, + + 86, 1541, 1542, 86, 86, 86, 1543, 1544, 86, 1549, + 86, 1546, 1548, 1550, 86, 1553, 1552, 1539, 86, 86, + 86, 1554, 1555, 1540, 1557, 1547, 1545, 1556, 1558, 86, + 1559, 1560, 1569, 86, 1566, 86, 1549, 86, 1561, 1548, + 1550, 3438, 1553, 1552, 86, 1567, 86, 3438, 1554, 86, + 86, 1557, 86, 1568, 86, 1558, 1562, 1559, 1560, 1563, + 1564, 1566, 1570, 1565, 86, 1561, 86, 3438, 86, 1572, + 86, 1574, 1567, 1577, 1573, 1571, 1575, 86, 3438, 86, + 1568, 3438, 86, 1562, 1576, 86, 1563, 1564, 1578, 1570, + 1565, 86, 1580, 86, 1581, 86, 1579, 1582, 1574, 86, + + 1577, 86, 1571, 1575, 86, 86, 1586, 1583, 1584, 1585, + 86, 1576, 1590, 1588, 1587, 1578, 86, 86, 86, 1580, + 86, 1581, 86, 1579, 1582, 3438, 3438, 1591, 1597, 3438, + 1589, 1592, 86, 1586, 1583, 1584, 1585, 86, 86, 86, + 1588, 1587, 86, 1593, 86, 1596, 1598, 1594, 1595, 1599, + 86, 1601, 1600, 86, 1591, 1597, 86, 1589, 1592, 86, + 86, 86, 1602, 1604, 1607, 1603, 86, 1606, 1608, 86, + 1593, 86, 1596, 1598, 1594, 1595, 1599, 86, 1601, 1600, + 1605, 86, 1609, 1610, 1611, 1613, 1612, 86, 86, 1602, + 1604, 86, 1603, 86, 1606, 86, 86, 86, 1614, 1615, + + 86, 1616, 1617, 1618, 3438, 86, 3438, 1605, 1620, 1609, + 86, 1611, 1613, 1612, 1619, 1621, 1626, 1623, 1622, 1625, + 86, 3438, 1624, 3438, 1628, 1614, 86, 1627, 86, 86, + 1618, 86, 86, 86, 86, 86, 86, 86, 86, 1630, + 86, 1619, 1621, 1626, 1623, 1622, 1625, 86, 1629, 1624, + 86, 1628, 1631, 1633, 1627, 86, 1632, 1634, 86, 1636, + 1638, 86, 1635, 1640, 1637, 1641, 1630, 86, 1639, 86, + 1642, 86, 1646, 86, 86, 1629, 1643, 1644, 1647, 1631, + 1633, 86, 1651, 1632, 1648, 86, 1645, 1638, 86, 86, + 1640, 86, 1641, 86, 86, 1639, 1653, 1642, 86, 1646, + + 1649, 1650, 86, 1643, 1644, 1654, 86, 86, 1652, 1660, + 86, 1648, 1655, 1645, 86, 86, 86, 86, 1656, 1659, + 86, 1657, 1658, 1653, 1662, 3438, 86, 1649, 1650, 86, + 86, 1661, 86, 1663, 1664, 1652, 1660, 86, 1666, 1655, + 1667, 1668, 86, 86, 1665, 1656, 1659, 1669, 1657, 1658, + 86, 1662, 86, 86, 1670, 1672, 1671, 86, 1661, 3438, + 1663, 1664, 1673, 1677, 1678, 1666, 1679, 86, 86, 86, + 86, 1665, 86, 86, 1669, 1674, 86, 86, 86, 1675, + 1680, 1670, 1672, 1671, 1681, 1682, 86, 86, 1683, 1673, + 1677, 1678, 1676, 1679, 1684, 86, 1685, 3438, 1687, 3438, + + 86, 1688, 1674, 1686, 1689, 1691, 1675, 1680, 86, 1690, + 86, 1681, 86, 1694, 86, 1683, 86, 86, 1700, 1676, + 86, 1692, 1693, 1685, 86, 1687, 86, 86, 1688, 86, + 1686, 1689, 1691, 1695, 1696, 1697, 1690, 1698, 1702, 86, + 1699, 86, 1704, 86, 1701, 86, 1703, 1705, 1692, 1693, + 86, 86, 1706, 1707, 3438, 3438, 1712, 3438, 86, 86, + 86, 1696, 1697, 86, 1698, 86, 86, 1699, 1709, 86, + 86, 1701, 1708, 1703, 1705, 86, 1710, 86, 86, 1706, + 1707, 1711, 86, 1712, 1713, 1714, 1719, 1716, 86, 1715, + 3438, 86, 1717, 1720, 86, 1709, 86, 86, 1718, 1708, + + 1723, 1727, 86, 1710, 86, 86, 1721, 86, 1711, 86, + 1724, 1713, 1714, 1719, 1716, 1722, 1715, 86, 86, 1717, + 1720, 1725, 1726, 86, 86, 1718, 1728, 1723, 1727, 1729, + 3438, 86, 1730, 1721, 86, 1732, 86, 1724, 86, 1731, + 1733, 1734, 1722, 3438, 1736, 86, 86, 1735, 1725, 1726, + 1737, 1738, 86, 1728, 1740, 86, 86, 86, 1741, 1730, + 3438, 86, 1732, 3438, 1742, 1739, 1731, 1733, 1734, 170, + 86, 1736, 86, 86, 1735, 1743, 86, 1737, 86, 86, + 1746, 1740, 1744, 1745, 1747, 1741, 86, 1748, 86, 3438, + 86, 1742, 1739, 86, 1749, 1752, 1750, 1751, 1754, 1753, + + 1762, 1755, 1743, 86, 86, 1756, 1758, 1746, 86, 1744, + 1745, 1747, 1757, 86, 1748, 1760, 86, 86, 1761, 1764, + 86, 1749, 86, 1750, 1751, 1754, 1753, 86, 1755, 1759, + 86, 86, 1756, 1763, 86, 1765, 86, 1767, 86, 1757, + 86, 86, 1768, 1771, 1770, 1761, 1764, 86, 1766, 1772, + 1774, 86, 1769, 86, 1773, 86, 1759, 86, 1780, 86, + 1763, 3438, 1765, 86, 1767, 86, 1781, 1775, 86, 1768, + 1771, 1770, 1787, 86, 1784, 1766, 1772, 1774, 1776, 1769, + 86, 1773, 86, 1777, 1782, 86, 1778, 1785, 86, 1786, + 86, 86, 86, 1781, 1775, 1788, 86, 1789, 1779, 1787, + + 1783, 1784, 1790, 1794, 1791, 1776, 1792, 86, 86, 86, + 1777, 1782, 1793, 1778, 1785, 1795, 1786, 1801, 3438, 1797, + 1802, 1804, 86, 1800, 3438, 1779, 86, 1783, 86, 86, + 1796, 1791, 86, 1792, 86, 86, 1799, 86, 86, 1793, + 1798, 1805, 1795, 86, 86, 86, 1797, 86, 86, 86, + 1800, 1803, 86, 86, 1806, 1807, 1809, 1796, 1808, 1810, + 3438, 1812, 1811, 1799, 1813, 86, 86, 1798, 1805, 86, + 1815, 1814, 1817, 86, 86, 1818, 86, 86, 1803, 86, + 86, 1806, 86, 1809, 86, 1808, 1810, 1823, 1812, 1811, + 1816, 1813, 86, 1819, 1820, 86, 1821, 1815, 1814, 1817, + + 86, 86, 1818, 1824, 1822, 1825, 1826, 1829, 1828, 86, + 86, 86, 1827, 86, 86, 1830, 86, 1816, 86, 86, + 1819, 1820, 86, 1821, 1831, 86, 1832, 3438, 1833, 1837, + 1824, 1822, 1825, 1826, 86, 1828, 1834, 1835, 86, 1827, + 1836, 86, 1830, 86, 1838, 1839, 86, 1843, 86, 1840, + 86, 1831, 1848, 1832, 86, 1833, 1837, 86, 86, 1849, + 1847, 1844, 86, 1834, 1835, 1841, 1845, 1836, 1842, 86, + 1850, 1838, 1839, 86, 1843, 1846, 1840, 86, 1866, 86, + 1851, 1852, 1853, 86, 86, 86, 86, 1847, 1844, 86, + 1854, 1855, 1841, 1845, 1856, 1842, 1857, 1850, 1859, 86, + + 1858, 1860, 1846, 3438, 86, 86, 86, 1851, 1852, 86, + 86, 1861, 86, 1865, 1867, 3438, 86, 1854, 1855, 1868, + 86, 1856, 86, 1857, 1862, 1859, 86, 1858, 1860, 86, + 1863, 86, 86, 1864, 1870, 1869, 1872, 1871, 1861, 1873, + 1865, 86, 1897, 86, 1874, 1875, 1868, 86, 86, 86, + 86, 1862, 1877, 1876, 86, 1879, 1878, 1863, 1880, 1881, + 1864, 1870, 1869, 1872, 1871, 86, 1882, 86, 86, 86, + 1883, 86, 1875, 1885, 86, 3438, 1886, 86, 3438, 1877, + 1876, 86, 1879, 1878, 1884, 1880, 1881, 1887, 86, 1888, + 1890, 86, 1893, 1882, 1894, 1889, 86, 1883, 86, 86, + + 1885, 86, 1891, 1886, 1896, 86, 86, 1892, 1895, 86, + 1899, 1884, 1900, 86, 1887, 1898, 1888, 1890, 1901, 1893, + 1902, 1894, 1889, 1903, 86, 1904, 86, 1907, 1911, 1905, + 1906, 1896, 3438, 86, 86, 1895, 86, 86, 3438, 1908, + 86, 3438, 1898, 86, 86, 1901, 86, 1902, 1909, 1912, + 1913, 1915, 1904, 86, 1910, 86, 1905, 1906, 86, 86, + 86, 1914, 1916, 3438, 1917, 1918, 1908, 1919, 86, 86, + 86, 1925, 86, 1920, 1923, 1909, 1912, 1913, 1915, 86, + 1921, 1910, 86, 1922, 86, 86, 1926, 86, 1914, 1916, + 1927, 1917, 1918, 86, 1919, 1924, 86, 1928, 1929, 1930, + + 1920, 86, 1932, 86, 86, 86, 1931, 1921, 86, 1933, + 1922, 1934, 1937, 1938, 86, 1935, 3438, 1927, 86, 1936, + 86, 86, 1924, 86, 86, 1929, 1930, 1939, 1940, 86, + 86, 1941, 3438, 1931, 86, 1942, 1933, 1943, 1944, 1937, + 86, 1945, 1935, 86, 3438, 86, 1936, 1947, 1946, 1949, + 1950, 86, 1948, 86, 1939, 1940, 86, 86, 1941, 86, + 1954, 86, 1942, 1956, 1943, 1944, 86, 170, 1945, 1952, + 1951, 86, 1953, 1955, 1947, 1946, 1949, 86, 86, 1948, + 86, 1961, 1965, 86, 86, 1959, 86, 86, 1957, 1958, + 1956, 1960, 1962, 86, 1967, 1968, 1952, 1951, 86, 1953, + + 1955, 1963, 1964, 86, 86, 1970, 1966, 86, 1969, 86, + 86, 1971, 1959, 86, 1993, 1957, 1958, 86, 1960, 1962, + 1973, 86, 1968, 86, 1972, 1974, 86, 1975, 1963, 1964, + 86, 1976, 1977, 1966, 86, 1969, 86, 86, 86, 86, + 1979, 86, 1980, 1981, 1978, 86, 86, 1973, 1982, 86, + 1984, 1972, 1974, 86, 1975, 3438, 1983, 1990, 1976, 1977, + 1985, 86, 86, 86, 86, 1992, 3438, 1979, 86, 1980, + 1981, 1978, 86, 1986, 1987, 1982, 1991, 1984, 86, 86, + 1994, 86, 1988, 1983, 1990, 1995, 86, 1985, 86, 1989, + 1996, 1997, 86, 86, 1999, 2000, 2003, 2001, 86, 1998, + + 1986, 1987, 86, 1991, 86, 2002, 86, 1994, 86, 1988, + 2004, 2006, 1995, 2005, 2012, 2007, 1989, 1996, 1997, 86, + 86, 1999, 2000, 86, 2001, 2010, 1998, 2008, 2009, 2014, + 2011, 86, 2002, 86, 86, 2013, 2015, 86, 86, 2016, + 2005, 86, 2007, 2018, 3438, 86, 86, 2017, 2019, 86, + 2021, 2020, 86, 86, 2008, 2009, 2022, 2011, 86, 86, + 2024, 86, 2013, 2015, 2023, 2028, 86, 86, 2025, 2042, + 2018, 86, 86, 2026, 2017, 86, 86, 2021, 2020, 2027, + 2034, 2033, 2036, 86, 3438, 2035, 2037, 2024, 86, 86, + 86, 2023, 86, 86, 86, 2025, 2042, 86, 2040, 86, + + 2026, 86, 2029, 2030, 2031, 2038, 2027, 2034, 2033, 2032, + 2039, 86, 2035, 2037, 86, 2041, 2043, 86, 2045, 2047, + 2046, 2044, 2048, 3438, 2049, 2040, 86, 86, 86, 2029, + 2030, 2031, 86, 86, 2050, 86, 2032, 86, 86, 2051, + 3438, 2054, 2041, 2043, 2055, 2052, 2047, 2046, 2044, 2048, + 86, 86, 86, 2053, 2057, 2056, 2059, 2058, 86, 86, + 2060, 2050, 86, 2061, 2062, 86, 2051, 86, 2054, 86, + 2064, 86, 2052, 2065, 86, 2063, 2066, 2068, 86, 86, + 2053, 86, 2056, 2059, 2058, 2067, 86, 2060, 86, 2070, + 2061, 2069, 86, 2071, 86, 86, 86, 86, 2072, 2073, + + 2065, 2074, 2063, 2066, 2068, 86, 2077, 2075, 2076, 86, + 2081, 2080, 2067, 2083, 86, 86, 2070, 2078, 2069, 2079, + 2071, 86, 2084, 2082, 2085, 2072, 2073, 86, 86, 86, + 2091, 86, 86, 86, 2075, 2076, 2087, 86, 86, 2086, + 2083, 2090, 86, 86, 2078, 86, 2079, 2088, 2092, 2084, + 2082, 2085, 2089, 86, 86, 2095, 86, 2093, 2094, 2100, + 86, 2099, 86, 2087, 86, 2097, 2086, 86, 2090, 2101, + 86, 2096, 86, 2105, 2088, 2102, 2098, 86, 86, 2089, + 86, 86, 2095, 86, 2093, 2094, 86, 86, 2099, 2103, + 2104, 2106, 2097, 2107, 2108, 2112, 2101, 86, 2096, 86, + + 2105, 2109, 2102, 2098, 2113, 2116, 2114, 2115, 2119, 2110, + 86, 86, 86, 86, 2111, 86, 2103, 2104, 2106, 86, + 2107, 86, 86, 2117, 86, 86, 2122, 86, 2109, 2120, + 86, 2113, 2116, 2114, 2115, 2118, 2110, 2121, 86, 2124, + 86, 2111, 86, 2123, 2135, 2125, 2126, 2127, 86, 86, + 2117, 2130, 2136, 2122, 2131, 2132, 2120, 86, 86, 2137, + 86, 2138, 2118, 2128, 2121, 86, 86, 2140, 2129, 86, + 2123, 86, 2125, 2126, 2127, 2133, 86, 2139, 2130, 86, + 2134, 86, 86, 86, 86, 2141, 2137, 2142, 2138, 2150, + 2128, 2143, 86, 2145, 2144, 2129, 86, 2146, 2147, 86, + + 86, 2148, 86, 3438, 2139, 2151, 86, 86, 2149, 86, + 86, 170, 2141, 2155, 2142, 86, 2150, 2154, 2143, 2152, + 86, 2144, 2156, 2153, 2146, 86, 2157, 2158, 2148, 2159, + 86, 86, 2151, 2160, 86, 2149, 86, 86, 3438, 86, + 2155, 2161, 2162, 2164, 2154, 2163, 2152, 2166, 86, 2156, + 2153, 2165, 2167, 86, 86, 2168, 2159, 2172, 2171, 2173, + 2169, 86, 86, 2177, 86, 86, 86, 86, 2161, 2162, + 2164, 86, 2163, 86, 2166, 86, 2170, 86, 2165, 2167, + 86, 86, 2168, 2174, 86, 2171, 2173, 2169, 2176, 2175, + 86, 86, 2178, 2180, 2182, 2179, 2181, 2184, 2185, 86, + + 2186, 3438, 86, 2170, 86, 86, 2183, 86, 3438, 3438, + 2174, 86, 86, 86, 3438, 2176, 2175, 86, 86, 2178, + 2180, 2182, 2179, 2181, 2188, 2185, 2187, 2186, 86, 86, + 2189, 2191, 2192, 2183, 2194, 86, 2193, 86, 2199, 2196, + 86, 2190, 2197, 86, 2195, 2198, 2200, 3438, 86, 3438, + 86, 2188, 86, 2187, 86, 2201, 86, 2189, 2191, 2192, + 86, 2194, 86, 2193, 2202, 2199, 2196, 86, 2190, 2197, + 2203, 2195, 2198, 86, 2204, 86, 2205, 2206, 2207, 86, + 2208, 86, 2201, 2209, 2210, 2211, 86, 2212, 86, 86, + 2213, 2202, 2214, 2216, 2215, 2219, 86, 2203, 3438, 3438, + + 2217, 2204, 86, 2205, 86, 2207, 86, 2208, 86, 86, + 2209, 86, 2211, 2218, 86, 86, 86, 2213, 86, 2214, + 86, 2215, 2219, 2220, 2221, 86, 2222, 2217, 2223, 2224, + 2231, 2226, 86, 2225, 2227, 86, 2228, 86, 3438, 2234, + 2218, 2229, 86, 86, 86, 86, 86, 2237, 86, 86, + 2220, 2221, 2233, 2222, 2230, 2223, 2224, 2231, 2226, 2241, + 2225, 2227, 86, 2228, 2235, 2232, 86, 86, 2229, 86, + 2236, 86, 2238, 86, 2237, 2239, 2240, 86, 2242, 2233, + 3438, 2230, 86, 2245, 86, 2243, 2241, 86, 2244, 2249, + 3438, 2235, 2232, 2247, 86, 2246, 2251, 2236, 86, 2238, + + 2252, 86, 2239, 2240, 86, 2242, 2248, 86, 86, 2250, + 2245, 86, 2243, 2253, 86, 2244, 2249, 86, 2254, 2256, + 2247, 86, 2246, 2255, 86, 86, 86, 2252, 86, 2257, + 2258, 2259, 2261, 2248, 2260, 2262, 2250, 2264, 2263, 86, + 2253, 86, 3438, 86, 2266, 86, 2256, 2265, 2271, 2267, + 2255, 86, 86, 86, 86, 2275, 2257, 2258, 2259, 2261, + 86, 2260, 86, 2268, 2264, 2263, 2270, 86, 2272, 2269, + 2276, 2273, 2278, 2274, 2265, 86, 86, 86, 2277, 86, + 86, 86, 86, 86, 2281, 3438, 2283, 86, 2284, 2282, + 2268, 3438, 86, 2270, 86, 2272, 2269, 2276, 2273, 2278, + + 2274, 2279, 3438, 86, 86, 2277, 2285, 2286, 2287, 2280, + 3438, 86, 86, 2283, 86, 2284, 2282, 86, 2290, 2288, + 86, 2291, 2289, 2294, 86, 2292, 2295, 86, 2279, 86, + 2293, 3438, 2296, 2285, 2286, 2287, 2280, 86, 86, 2297, + 2298, 2299, 2300, 86, 86, 2290, 2288, 86, 2291, 2289, + 2294, 2301, 2302, 2295, 86, 2303, 86, 86, 86, 2296, + 2306, 3438, 86, 86, 2304, 2305, 2297, 2298, 2299, 2300, + 86, 86, 2308, 86, 86, 2307, 2309, 86, 2301, 2302, + 2311, 2312, 86, 2310, 2314, 86, 2313, 2306, 86, 3438, + 2315, 2304, 2305, 86, 3438, 86, 86, 2316, 2319, 2308, + + 2320, 2317, 2307, 2309, 86, 86, 86, 2311, 2312, 2321, + 2310, 2314, 86, 2313, 2318, 86, 2323, 2315, 86, 86, + 2322, 86, 86, 2325, 2316, 2319, 2324, 2320, 2317, 86, + 2326, 2327, 2328, 2329, 3438, 2331, 2321, 2332, 2333, 2330, + 86, 2318, 2337, 2323, 86, 86, 2334, 2322, 86, 86, + 86, 170, 2338, 2324, 2339, 2342, 86, 2326, 86, 2328, + 2329, 86, 2331, 2335, 2332, 2341, 2330, 2340, 2336, 2351, + 86, 2343, 86, 2334, 86, 2346, 2347, 3438, 86, 2348, + 2354, 2339, 86, 3438, 86, 2344, 86, 2352, 2355, 2349, + 2350, 3438, 2341, 86, 2340, 86, 2345, 86, 2343, 86, + + 2353, 86, 2346, 86, 86, 86, 2348, 86, 2356, 86, + 86, 2357, 2344, 3438, 2352, 2355, 2349, 2350, 2358, 2359, + 2361, 2360, 86, 2345, 3438, 86, 86, 2353, 86, 2362, + 2365, 2363, 2364, 3438, 86, 86, 2371, 3438, 2357, 2369, + 86, 2366, 86, 2367, 86, 2358, 2359, 2361, 2360, 2372, + 86, 86, 86, 2368, 86, 2382, 2362, 2365, 2363, 2364, + 86, 86, 2370, 86, 2374, 2373, 2369, 86, 2366, 2376, + 2367, 2378, 86, 2375, 86, 2377, 2372, 86, 86, 86, + 2368, 2379, 86, 2380, 2381, 2383, 86, 2384, 2389, 2370, + 86, 2374, 2373, 86, 86, 86, 2376, 86, 2378, 2385, + + 2375, 2386, 2377, 86, 86, 86, 2387, 86, 2379, 86, + 2380, 2381, 2383, 2388, 2384, 2389, 2390, 2391, 2392, 2394, + 2393, 86, 3438, 86, 2396, 2397, 2385, 2395, 2386, 2399, + 86, 86, 86, 2387, 86, 2398, 2400, 3438, 2403, 2404, + 2388, 2406, 2401, 2390, 2391, 2392, 2394, 2393, 86, 86, + 86, 2396, 86, 86, 2395, 86, 2399, 86, 2402, 2405, + 2408, 2407, 2398, 2400, 86, 2403, 86, 2409, 86, 2401, + 2412, 2413, 86, 86, 86, 2416, 2417, 2410, 2414, 2415, + 2411, 2418, 86, 86, 86, 2402, 2405, 2408, 2407, 2419, + 2420, 2421, 2422, 86, 2409, 86, 86, 86, 86, 86, + + 86, 86, 2416, 2417, 2410, 2414, 2415, 2411, 2418, 2424, + 2425, 2423, 2426, 2427, 2428, 2429, 86, 86, 2421, 86, + 86, 2431, 86, 2435, 2434, 2430, 2437, 2433, 86, 2443, + 3438, 86, 2432, 2440, 86, 86, 86, 2425, 2423, 2426, + 86, 86, 2429, 86, 2439, 86, 86, 2436, 2431, 2438, + 86, 2434, 2430, 86, 2433, 86, 86, 86, 86, 2432, + 2440, 3438, 2441, 2445, 2444, 86, 2447, 2446, 2449, 2454, + 2452, 2439, 86, 2448, 2436, 86, 2438, 2442, 86, 2450, + 2451, 86, 86, 2456, 86, 2453, 86, 2457, 86, 2441, + 2445, 2444, 86, 2447, 2446, 86, 86, 2452, 2459, 86, + + 2448, 2455, 2461, 2458, 2442, 86, 2450, 2451, 86, 86, + 2456, 2460, 2453, 2462, 2457, 86, 2465, 86, 86, 2466, + 2469, 2467, 86, 2463, 2464, 86, 86, 2468, 2455, 2461, + 2458, 2472, 86, 86, 2473, 2470, 3438, 2471, 2460, 86, + 2462, 2480, 86, 2465, 86, 86, 2466, 2469, 2467, 86, + 2463, 2464, 86, 2474, 2468, 2475, 2476, 2477, 86, 2478, + 2483, 2473, 2470, 86, 2471, 86, 2479, 2481, 2480, 2482, + 2484, 86, 86, 2485, 3438, 86, 2488, 86, 3438, 2486, + 2474, 3438, 2475, 2476, 2477, 86, 2478, 2483, 86, 86, + 2489, 86, 2487, 2479, 2481, 2491, 2482, 86, 2490, 2492, + + 2493, 2499, 86, 2494, 86, 86, 2486, 2500, 86, 2502, + 2495, 2496, 86, 86, 2497, 2505, 86, 2489, 2498, 2487, + 86, 86, 2491, 2501, 86, 2490, 2492, 2493, 86, 86, + 2494, 86, 86, 86, 2503, 2508, 2502, 2495, 2496, 86, + 2504, 2497, 3438, 2506, 3438, 2498, 86, 86, 2509, 2510, + 2501, 2507, 86, 86, 2513, 2515, 2511, 2514, 2512, 2517, + 2516, 2503, 2508, 86, 2518, 86, 86, 2504, 86, 86, + 2506, 170, 86, 2522, 86, 2509, 2510, 86, 2507, 86, + 2520, 2513, 86, 2511, 2514, 2512, 2517, 2516, 2519, 2521, + 2523, 2518, 86, 2525, 2524, 2526, 2528, 86, 2527, 86, + + 2522, 86, 2529, 2531, 86, 2530, 2532, 2520, 86, 2534, + 2533, 3438, 86, 2536, 3438, 2519, 2521, 2523, 2535, 2537, + 2525, 2524, 86, 86, 86, 2527, 86, 86, 86, 2529, + 2538, 86, 2530, 2539, 86, 86, 86, 2533, 86, 86, + 2536, 86, 2540, 86, 2541, 2535, 2537, 2544, 2542, 3438, + 2543, 3438, 2546, 3438, 2545, 2548, 3438, 2538, 2547, 2550, + 2539, 86, 2552, 3438, 2551, 2549, 86, 2561, 86, 2540, + 86, 3438, 86, 86, 2544, 2542, 86, 2543, 86, 86, + 86, 2545, 2548, 86, 2553, 2547, 2550, 86, 2554, 86, + 2555, 2551, 2549, 2556, 2557, 2558, 2559, 86, 86, 86, + + 86, 2564, 2560, 86, 2562, 2563, 3438, 86, 2565, 86, + 86, 2553, 2566, 2567, 86, 2554, 86, 2555, 86, 86, + 2556, 2557, 2558, 2559, 86, 86, 2568, 2569, 2564, 2560, + 2570, 2562, 2563, 2571, 86, 2565, 2572, 2573, 86, 2566, + 2567, 86, 2574, 2575, 3438, 2576, 3438, 2578, 86, 2577, + 2581, 2579, 86, 2568, 2569, 86, 86, 2570, 2580, 2583, + 86, 2584, 86, 2572, 2573, 86, 2585, 2587, 2582, 2574, + 2575, 86, 2576, 86, 2578, 2586, 2577, 86, 2579, 86, + 86, 86, 86, 86, 86, 2580, 86, 2588, 2584, 2589, + 2590, 86, 2594, 86, 2587, 2582, 2592, 2591, 86, 2593, + + 2595, 2596, 2586, 86, 2597, 2599, 3438, 2600, 3438, 2598, + 86, 86, 2607, 2602, 2588, 2605, 2589, 2590, 86, 86, + 86, 86, 2610, 2592, 2591, 2615, 2593, 86, 2606, 86, + 86, 2597, 2599, 86, 2600, 2601, 2598, 86, 2603, 2604, + 2602, 2608, 86, 86, 86, 2609, 86, 2611, 2612, 86, + 86, 2613, 86, 86, 86, 2606, 86, 86, 2614, 2616, + 86, 2617, 2601, 2621, 2618, 2603, 2604, 2619, 2608, 3438, + 86, 86, 2609, 2620, 2611, 2612, 86, 2624, 2613, 2622, + 2623, 86, 86, 2627, 86, 2614, 2616, 2628, 2617, 86, + 2621, 2618, 86, 2629, 2619, 86, 2625, 2630, 86, 86, + + 2620, 2626, 2631, 86, 2624, 86, 2622, 2623, 86, 2633, + 2627, 2632, 2634, 3438, 86, 2635, 3438, 2636, 86, 3438, + 86, 2641, 2637, 2625, 86, 2638, 86, 86, 2626, 86, + 2639, 2643, 86, 2640, 86, 2642, 2633, 86, 2632, 2634, + 86, 86, 2635, 86, 2636, 86, 86, 2644, 2641, 2637, + 2645, 2646, 2638, 2647, 2655, 86, 2648, 2639, 86, 2649, + 2640, 2650, 2642, 2651, 2656, 2652, 2653, 3438, 2654, 86, + 86, 86, 3438, 86, 2644, 86, 86, 86, 86, 86, + 2647, 86, 86, 2648, 2657, 86, 2649, 86, 2650, 2658, + 2651, 2656, 2652, 2653, 2659, 2654, 86, 2660, 2662, 2661, + + 86, 3438, 2663, 86, 2664, 3438, 2665, 3438, 86, 2671, + 2666, 2657, 86, 86, 2669, 2670, 2658, 2674, 2667, 170, + 86, 2659, 2668, 86, 2660, 2662, 2661, 86, 86, 2663, + 86, 2664, 86, 2665, 86, 2672, 2671, 2666, 2673, 86, + 2676, 2669, 2670, 2677, 2674, 2667, 2675, 3438, 2678, 2668, + 2679, 86, 2680, 2682, 2681, 3438, 2683, 2686, 3438, 86, + 2684, 3438, 2672, 86, 86, 2673, 86, 86, 86, 86, + 86, 3438, 86, 2675, 86, 2678, 86, 2679, 86, 2680, + 2682, 2681, 2685, 2683, 2686, 2687, 2688, 2684, 2689, 86, + 86, 2690, 2691, 86, 2692, 2693, 2694, 2696, 86, 2695, + + 2700, 86, 2698, 2697, 86, 86, 86, 86, 2702, 2685, + 2699, 2703, 2687, 2688, 2701, 2689, 86, 86, 2690, 2691, + 86, 2692, 2693, 2694, 86, 86, 2695, 86, 86, 2698, + 2697, 2704, 86, 2705, 2706, 86, 2707, 2699, 2703, 2708, + 86, 2701, 2710, 2709, 2711, 86, 86, 2712, 86, 2713, + 86, 2715, 2716, 86, 86, 2714, 86, 2717, 2704, 2718, + 2705, 2706, 3438, 2707, 86, 2723, 2708, 2721, 2719, 2710, + 2709, 86, 86, 2720, 86, 86, 2713, 86, 2715, 86, + 2722, 2724, 2714, 2725, 86, 86, 2728, 86, 86, 2726, + 86, 86, 2723, 86, 2721, 2719, 2727, 2729, 2730, 2732, + + 2720, 2731, 3438, 2734, 2733, 3438, 3438, 2722, 2724, 86, + 2725, 86, 86, 86, 2736, 2737, 2726, 86, 86, 2742, + 2735, 86, 86, 2727, 2729, 86, 2732, 86, 2731, 2741, + 2734, 2733, 2738, 2740, 2745, 2739, 86, 86, 2743, 86, + 86, 2736, 2737, 86, 2748, 2744, 86, 2735, 2746, 2751, + 86, 2747, 2752, 86, 86, 3438, 2741, 2749, 2750, 2738, + 2740, 86, 2739, 86, 86, 2743, 86, 86, 2753, 86, + 2754, 2748, 2744, 2756, 2758, 2746, 86, 86, 2747, 2752, + 86, 86, 2755, 2757, 2749, 2750, 2760, 2762, 2759, 86, + 2763, 2761, 86, 3438, 2765, 2753, 2767, 2754, 86, 86, + + 86, 2758, 2764, 86, 2766, 86, 2768, 3438, 2769, 2755, + 2757, 86, 86, 86, 86, 2759, 2771, 2763, 2761, 86, + 86, 2765, 2770, 2767, 2772, 2773, 2774, 86, 2775, 2764, + 2776, 2766, 2777, 86, 86, 2769, 2780, 2786, 86, 86, + 2778, 3438, 2779, 86, 86, 86, 86, 86, 86, 2770, + 2781, 2772, 2773, 2774, 86, 2775, 2782, 2776, 2783, 86, + 2784, 2785, 2788, 86, 2786, 3438, 2787, 2778, 2790, 2779, + 2791, 86, 86, 2793, 2789, 2794, 2795, 2781, 86, 2792, + 86, 86, 86, 2782, 86, 2783, 86, 2784, 2785, 2788, + 86, 86, 86, 2787, 2797, 2790, 2796, 2791, 86, 2798, + + 86, 2789, 86, 2795, 86, 2799, 2792, 2800, 2801, 2802, + 2804, 2803, 2805, 3438, 3438, 2807, 86, 86, 2806, 86, + 2808, 170, 2810, 2796, 86, 2812, 2798, 86, 2811, 2809, + 2813, 2814, 2799, 86, 2800, 2801, 86, 2804, 2803, 2805, + 86, 86, 86, 86, 2815, 2806, 2816, 86, 2817, 86, + 2819, 2818, 86, 86, 2824, 2811, 2809, 86, 2814, 86, + 2825, 2820, 2822, 2821, 2823, 3438, 86, 2827, 3438, 2830, + 86, 2815, 86, 2816, 86, 86, 2826, 2819, 2818, 86, + 86, 86, 86, 2829, 2828, 2831, 86, 2832, 2820, 2822, + 2821, 2823, 86, 86, 2827, 2833, 2830, 2834, 86, 2835, + + 86, 2836, 2837, 2826, 86, 86, 86, 2838, 2841, 86, + 2829, 2828, 2831, 86, 2832, 3438, 2840, 86, 2839, 86, + 86, 2842, 2833, 2843, 2834, 86, 2835, 2845, 2836, 2837, + 2844, 86, 2846, 86, 2838, 86, 86, 86, 2847, 2848, + 86, 2850, 86, 2840, 2849, 2839, 2851, 86, 2842, 2853, + 2843, 2855, 2852, 86, 2845, 2856, 2854, 2844, 86, 86, + 86, 86, 86, 86, 2858, 2847, 2848, 2857, 2850, 86, + 2859, 2849, 2860, 86, 86, 2861, 2853, 2862, 2855, 2852, + 2867, 86, 86, 2854, 2863, 3438, 2864, 2865, 3438, 3438, + 2874, 2868, 2866, 2869, 2857, 3438, 86, 2870, 2875, 2860, + + 2872, 2876, 86, 86, 86, 86, 86, 86, 86, 2871, + 86, 2863, 86, 2864, 2865, 86, 86, 86, 2868, 2866, + 2869, 86, 2873, 2877, 2870, 86, 86, 2872, 86, 2878, + 2879, 86, 2880, 2881, 2886, 2883, 2871, 2882, 2885, 86, + 2884, 86, 2887, 2888, 2889, 3438, 86, 2893, 2890, 2873, + 2877, 86, 86, 86, 2896, 86, 2878, 86, 3438, 2880, + 2881, 2886, 2891, 2892, 2882, 2885, 2897, 86, 86, 2887, + 86, 86, 86, 2894, 86, 2890, 86, 86, 2895, 2898, + 2900, 86, 86, 2899, 2901, 86, 2903, 2902, 2904, 2891, + 2892, 2905, 86, 2897, 2906, 86, 86, 2907, 86, 86, + + 2894, 2908, 2915, 2909, 2914, 2895, 86, 86, 2910, 2918, + 2899, 2901, 2911, 2903, 2902, 2912, 86, 86, 86, 2913, + 86, 2906, 86, 86, 2917, 86, 86, 2919, 2908, 86, + 2916, 2914, 86, 2920, 86, 86, 86, 2921, 2922, 2911, + 86, 3438, 2912, 2923, 3438, 2924, 2913, 86, 3438, 86, + 2930, 2917, 86, 2927, 2919, 2929, 2931, 2916, 2925, 2926, + 2920, 86, 86, 86, 2921, 2922, 2932, 86, 86, 2928, + 2923, 86, 2924, 2933, 2935, 86, 2936, 2930, 86, 86, + 2927, 2934, 2929, 86, 86, 2925, 2926, 86, 2937, 2938, + 2940, 2942, 2943, 2932, 2939, 2941, 2928, 86, 2944, 86, + + 2933, 2935, 2945, 2936, 2946, 3438, 2947, 86, 2934, 2948, + 2950, 3438, 2949, 2951, 86, 2937, 2952, 86, 2942, 86, + 86, 86, 86, 2954, 86, 2944, 2955, 2953, 86, 2945, + 86, 2946, 86, 2947, 86, 86, 2948, 2950, 86, 2949, + 2951, 2956, 2957, 2952, 86, 86, 2958, 2959, 86, 86, + 2954, 2960, 2961, 2955, 2953, 2962, 2963, 2964, 2965, 2966, + 3438, 86, 3438, 2967, 2972, 3438, 3438, 2978, 2956, 2957, + 2968, 2969, 2979, 86, 86, 86, 86, 2970, 2960, 2961, + 86, 86, 86, 2963, 86, 2965, 86, 2971, 86, 86, + 2967, 86, 2973, 2974, 2975, 86, 86, 2968, 2969, 86, + + 2976, 2977, 86, 2980, 2970, 2981, 2982, 2984, 2985, 2983, + 2996, 86, 2986, 86, 2971, 86, 86, 86, 2989, 2973, + 2974, 2975, 2987, 86, 86, 86, 2990, 2976, 2977, 86, + 2980, 86, 2981, 2982, 86, 86, 2983, 2988, 2993, 2986, + 2991, 2992, 86, 86, 86, 86, 86, 2995, 2994, 2987, + 2999, 2998, 3002, 2990, 86, 86, 2997, 86, 3000, 3003, + 86, 3001, 3004, 3438, 2988, 2993, 86, 2991, 2992, 3005, + 86, 86, 86, 3008, 2995, 2994, 86, 2999, 2998, 3002, + 86, 86, 86, 2997, 3009, 3000, 3003, 86, 3001, 3004, + 3006, 3010, 3011, 3007, 3012, 3013, 3005, 3438, 3015, 3438, + + 86, 86, 3014, 86, 3016, 3017, 3018, 3438, 3438, 3021, + 86, 86, 3022, 3020, 3019, 86, 86, 3006, 86, 3011, + 3007, 3012, 3013, 86, 86, 3024, 86, 86, 86, 3014, + 86, 3016, 3017, 86, 86, 3023, 3021, 3026, 3027, 3022, + 3020, 3019, 3438, 3025, 86, 86, 3028, 3029, 3438, 3030, + 3031, 3032, 3034, 3035, 3033, 3438, 3438, 86, 86, 86, + 3038, 86, 3023, 86, 86, 3027, 86, 3044, 86, 86, + 3025, 3036, 3037, 3028, 3029, 86, 3030, 3031, 3032, 3034, + 86, 3033, 3039, 86, 3040, 86, 86, 3038, 3041, 3042, + 3043, 3048, 3045, 86, 3044, 86, 86, 3046, 3036, 3037, + + 86, 3047, 86, 3050, 3051, 3049, 86, 3053, 86, 3039, + 86, 3040, 86, 86, 3052, 3041, 3042, 3043, 86, 3045, + 86, 3056, 3054, 3058, 3046, 3055, 3057, 3059, 3047, 3061, + 86, 86, 3049, 86, 86, 3060, 86, 86, 3062, 3065, + 3063, 3052, 86, 86, 86, 86, 3068, 86, 3056, 3054, + 3058, 3064, 3055, 3057, 86, 3066, 3061, 3069, 3070, 86, + 3073, 3067, 3060, 3082, 86, 86, 3065, 3063, 86, 86, + 86, 3071, 3072, 86, 3074, 3077, 3076, 86, 3064, 3075, + 3079, 3083, 3066, 86, 3069, 3081, 3080, 86, 3067, 86, + 86, 86, 86, 86, 3078, 86, 86, 3086, 3071, 3072, + + 3084, 86, 86, 3076, 86, 3087, 3075, 3079, 3083, 3085, + 3088, 3089, 3081, 3080, 3090, 86, 86, 86, 3091, 3092, + 3093, 3078, 3094, 3095, 86, 3096, 86, 3084, 3099, 3098, + 3438, 3100, 3087, 86, 86, 86, 3085, 3088, 3089, 3097, + 86, 3090, 3102, 3105, 3110, 3091, 3092, 86, 86, 86, + 3095, 86, 86, 86, 3101, 86, 3098, 86, 3100, 3103, + 3104, 3106, 86, 3107, 3109, 3108, 3097, 86, 3112, 86, + 86, 86, 86, 3114, 86, 3111, 86, 3115, 86, 86, + 3113, 3101, 3124, 86, 3116, 3119, 3103, 3104, 3106, 3120, + 3107, 3109, 3108, 3118, 3121, 3112, 3117, 3125, 86, 3122, + + 86, 3126, 3111, 3438, 86, 3128, 86, 3113, 3133, 86, + 86, 3116, 86, 86, 86, 86, 86, 3123, 86, 86, + 3118, 86, 3127, 3117, 3125, 3130, 3122, 3132, 86, 3129, + 86, 3131, 3128, 86, 86, 86, 86, 3134, 86, 3135, + 3139, 3137, 3136, 3138, 3123, 3140, 3141, 86, 86, 3127, + 3142, 3150, 3130, 86, 3132, 86, 3129, 86, 3131, 3144, + 3146, 86, 3147, 3143, 3134, 3151, 3135, 86, 3137, 3136, + 3138, 86, 86, 3145, 3148, 3149, 3152, 3142, 86, 86, + 86, 86, 3153, 86, 3154, 3155, 3144, 86, 86, 86, + 3143, 3156, 3151, 3159, 3438, 86, 86, 3157, 3158, 3160, + + 3145, 3148, 3149, 3152, 86, 86, 86, 3161, 86, 86, + 3162, 3154, 3155, 86, 86, 86, 3164, 3171, 3156, 3163, + 3159, 3166, 3167, 86, 3157, 3158, 3160, 86, 86, 86, + 86, 3165, 3172, 86, 3161, 3168, 3169, 3162, 86, 86, + 3174, 3170, 3175, 3164, 3171, 86, 3163, 86, 3166, 3167, + 3173, 3177, 3178, 3176, 86, 3179, 3180, 86, 3165, 3172, + 86, 3181, 3168, 3169, 86, 3182, 86, 3183, 3170, 3175, + 3185, 3186, 86, 3184, 3191, 86, 3194, 3173, 3177, 3178, + 3176, 86, 86, 86, 86, 3187, 3188, 3438, 3181, 86, + 3189, 3190, 86, 3195, 3183, 3192, 3193, 86, 86, 86, + + 3184, 86, 3197, 3194, 3196, 3199, 3200, 3198, 3202, 3203, + 3201, 3438, 3438, 86, 86, 86, 86, 86, 86, 86, + 3195, 3204, 86, 3205, 86, 86, 3206, 3208, 86, 86, + 86, 3196, 3199, 3200, 3198, 3202, 86, 3201, 3207, 3209, + 3210, 3211, 3212, 3215, 3213, 86, 86, 3214, 3204, 86, + 3205, 86, 3216, 3206, 3208, 3218, 3223, 3231, 3230, 3221, + 3217, 86, 86, 86, 3222, 3207, 3209, 3210, 3211, 86, + 86, 3213, 86, 86, 3214, 3219, 3227, 86, 3220, 86, + 3225, 3224, 3218, 86, 3226, 86, 3233, 3217, 86, 86, + 86, 86, 86, 86, 3228, 3234, 3229, 3232, 86, 3237, + + 3235, 3438, 3219, 3227, 86, 3220, 3236, 3225, 3224, 3238, + 3240, 3226, 86, 86, 3239, 3241, 86, 3242, 86, 3243, + 3244, 3228, 86, 3229, 3232, 3245, 86, 3235, 86, 3246, + 3247, 3249, 86, 3236, 3248, 86, 86, 86, 3250, 3252, + 3254, 3239, 86, 3253, 86, 3251, 86, 86, 3256, 86, + 86, 3255, 86, 3259, 86, 3258, 86, 86, 3249, 86, + 3260, 3248, 3257, 86, 3261, 86, 3252, 86, 86, 86, + 3253, 3262, 3251, 3263, 86, 86, 3264, 3265, 3255, 3267, + 3259, 3268, 3258, 86, 3270, 86, 86, 3260, 3269, 3257, + 86, 86, 3266, 86, 3271, 3272, 3277, 3438, 3262, 3276, + + 86, 86, 3273, 3264, 3265, 86, 3267, 86, 3268, 3274, + 86, 3278, 86, 3275, 86, 3269, 86, 86, 86, 3266, + 86, 3271, 3272, 3277, 86, 3279, 3276, 3280, 86, 3273, + 3283, 3281, 3282, 3284, 86, 3285, 3274, 86, 3278, 3286, + 3275, 3287, 3289, 3288, 86, 86, 3438, 3292, 3290, 3294, + 3291, 86, 3279, 86, 3280, 86, 86, 3283, 3281, 3282, + 86, 86, 86, 86, 3293, 86, 86, 3295, 3287, 3289, + 3288, 86, 3296, 3298, 3292, 3290, 3294, 3291, 3297, 3300, + 86, 3299, 3301, 3302, 86, 86, 3303, 86, 86, 86, + 3438, 3293, 86, 86, 3295, 3306, 3304, 3305, 86, 3296, + + 3298, 3307, 3309, 3308, 86, 3297, 3300, 86, 3299, 3301, + 3302, 3310, 86, 3303, 86, 3311, 3314, 86, 86, 3312, + 3313, 3315, 3306, 3304, 3305, 86, 3316, 86, 3307, 86, + 3308, 3317, 86, 3318, 3319, 3322, 3320, 86, 3310, 86, + 3438, 3438, 3311, 86, 86, 3321, 3312, 3313, 3315, 3323, + 3329, 3324, 86, 86, 3325, 3326, 86, 86, 3317, 86, + 86, 86, 3322, 3320, 3327, 86, 3328, 86, 3330, 3438, + 3331, 86, 3321, 86, 3333, 3334, 3323, 3329, 3324, 86, + 3332, 3325, 3326, 3336, 3337, 3339, 3335, 86, 3338, 3340, + 86, 86, 3341, 3328, 86, 3330, 86, 86, 86, 3344, + + 86, 86, 86, 3342, 3345, 3349, 3343, 3332, 3346, 3438, + 3336, 86, 3339, 3335, 86, 3338, 86, 3348, 86, 3341, + 3347, 86, 86, 3350, 3351, 86, 3354, 86, 3359, 3355, + 3342, 86, 3349, 3343, 86, 3346, 86, 3352, 3353, 86, + 3357, 3356, 86, 86, 3348, 86, 3358, 3347, 86, 3360, + 86, 86, 86, 3354, 86, 3359, 3355, 3362, 3361, 3363, + 3364, 3368, 86, 86, 3352, 3353, 86, 3357, 3356, 3366, + 3365, 3369, 3367, 3358, 3370, 3371, 3360, 86, 86, 86, + 86, 86, 3372, 3373, 3362, 3361, 3363, 86, 86, 3374, + 3376, 3377, 3375, 86, 3379, 3385, 3366, 3365, 3369, 3367, + + 86, 86, 3371, 3378, 86, 86, 86, 3381, 3380, 3372, + 3373, 86, 3382, 3389, 3438, 86, 3374, 3388, 86, 3375, + 3383, 86, 86, 3407, 3387, 86, 3410, 86, 86, 3384, + 3378, 86, 86, 3386, 3381, 3380, 3438, 86, 86, 3382, + 86, 86, 3392, 86, 3388, 3390, 3393, 3383, 3391, 3394, + 86, 3387, 3395, 86, 86, 3396, 3384, 86, 3397, 3401, + 3386, 3399, 86, 86, 86, 3400, 86, 86, 3402, 3392, + 3398, 3404, 3390, 3393, 3403, 3391, 3394, 3438, 3438, 3395, + 86, 86, 3396, 3405, 86, 3397, 3401, 3408, 3399, 3414, + 3409, 86, 3400, 86, 86, 3402, 3406, 3398, 3404, 3411, + + 86, 3403, 3412, 86, 86, 3413, 3416, 3423, 3438, 86, + 3405, 86, 3415, 86, 3408, 86, 3414, 3409, 3418, 86, + 86, 3419, 86, 3406, 3422, 3438, 3411, 3417, 3420, 3412, + 3421, 3427, 3413, 86, 86, 86, 86, 3426, 86, 3415, + 86, 3424, 3428, 86, 3425, 3418, 3429, 3430, 3419, 86, + 86, 3422, 86, 3432, 3417, 3420, 3431, 3421, 86, 3433, + 3436, 3437, 86, 86, 3426, 3438, 3438, 3438, 3424, 3428, + 3434, 3425, 3438, 86, 86, 86, 86, 3435, 86, 3438, + 3432, 86, 3438, 3431, 3438, 86, 3433, 86, 86, 3438, + 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3434, 3438, 3438, + + 3438, 3438, 3438, 3438, 3435, 47, 47, 47, 47, 47, + 47, 47, 52, 52, 52, 52, 52, 52, 52, 57, + 57, 57, 57, 57, 57, 57, 63, 63, 63, 63, + 63, 63, 63, 68, 68, 68, 68, 68, 68, 68, + 74, 74, 74, 74, 74, 74, 74, 80, 80, 80, + 80, 80, 80, 80, 89, 89, 3438, 89, 89, 89, + 89, 160, 160, 3438, 3438, 3438, 160, 160, 162, 162, + 3438, 3438, 162, 3438, 162, 164, 3438, 3438, 3438, 3438, + 3438, 164, 167, 167, 3438, 3438, 3438, 167, 167, 169, + 3438, 3438, 3438, 3438, 3438, 169, 171, 171, 3438, 171, + + 171, 171, 171, 174, 3438, 3438, 3438, 3438, 3438, 174, + 177, 177, 3438, 3438, 3438, 177, 177, 90, 90, 3438, + 90, 90, 90, 90, 17, 3438, 3438, 3438, 3438, 3438, + 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, + 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, + 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, + 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, + 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, + 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, + 3438 + + } ; + +static yyconst flex_int16_t yy_chk[9892] = + { 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, 3, 3, 3, 4, + 4, 4, 5, 5, 6, 6, 5, 32, 6, 7, + 7, 7, 7, 33, 7, 8, 8, 8, 8, 32, + 8, 9, 9, 9, 10, 10, 10, 19, 51, 51, + + 1105, 19, 3446, 3, 32, 33, 4, 67, 67, 5, + 33, 6, 2797, 13, 13, 13, 13, 7, 13, 14, + 14, 14, 14, 8, 14, 15, 15, 15, 9, 25, + 1105, 10, 11, 11, 11, 11, 11, 11, 12, 12, + 12, 12, 12, 12, 16, 16, 16, 34, 28, 84, + 84, 13, 11, 45, 293, 25, 25, 14, 12, 34, + 39, 23, 15, 23, 23, 45, 23, 1116, 28, 177, + 11, 28, 23, 39, 34, 28, 12, 176, 87, 11, + 45, 16, 87, 293, 37, 12, 30, 39, 29, 56, + 37, 174, 56, 72, 30, 28, 26, 169, 100, 23, + + 24, 24, 29, 26, 24, 30, 72, 26, 99, 24, + 26, 37, 30, 30, 29, 29, 100, 99, 24, 167, + 72, 30, 26, 26, 24, 100, 166, 24, 24, 29, + 26, 24, 30, 164, 26, 99, 24, 26, 46, 163, + 46, 46, 163, 46, 162, 24, 27, 160, 31, 46, + 27, 31, 101, 27, 94, 27, 27, 145, 31, 62, + 31, 62, 62, 195, 62, 101, 27, 70, 27, 70, + 70, 31, 70, 27, 94, 31, 35, 27, 31, 101, + 27, 94, 27, 27, 35, 31, 93, 31, 36, 145, + 35, 85, 36, 27, 35, 195, 44, 161, 161, 42, + + 44, 42, 35, 35, 44, 70, 36, 80, 36, 93, + 42, 35, 75, 93, 36, 36, 42, 35, 92, 36, + 74, 35, 44, 44, 43, 42, 42, 44, 42, 168, + 168, 44, 68, 36, 43, 36, 38, 42, 43, 43, + 38, 95, 92, 42, 38, 92, 219, 43, 63, 111, + 38, 43, 73, 38, 73, 73, 95, 73, 111, 97, + 38, 43, 38, 38, 104, 43, 43, 38, 95, 104, + 79, 38, 79, 79, 58, 79, 111, 38, 219, 86, + 38, 86, 86, 97, 86, 222, 97, 38, 40, 956, + 86, 104, 40, 89, 96, 89, 89, 112, 89, 98, + + 57, 96, 40, 40, 89, 40, 112, 103, 103, 106, + 105, 52, 98, 47, 40, 40, 103, 222, 105, 40, + 956, 96, 18, 98, 112, 137, 98, 106, 17, 40, + 40, 89, 40, 41, 103, 103, 41, 105, 102, 98, + 107, 106, 109, 41, 102, 108, 102, 41, 41, 109, + 224, 137, 137, 107, 106, 41, 113, 0, 108, 102, + 41, 114, 0, 41, 115, 102, 118, 107, 114, 109, + 41, 102, 108, 102, 41, 41, 110, 110, 117, 113, + 116, 117, 224, 113, 110, 126, 115, 0, 114, 119, + 118, 115, 110, 116, 117, 117, 0, 119, 118, 126, + + 123, 0, 117, 110, 110, 117, 120, 116, 117, 124, + 121, 110, 126, 123, 121, 122, 119, 118, 125, 127, + 122, 117, 117, 122, 130, 128, 120, 123, 120, 146, + 121, 130, 124, 120, 121, 129, 124, 121, 125, 127, + 131, 121, 122, 128, 146, 125, 127, 122, 133, 129, + 132, 130, 128, 120, 135, 134, 146, 121, 135, 132, + 0, 136, 129, 131, 134, 138, 140, 131, 136, 141, + 141, 133, 138, 0, 139, 133, 135, 132, 140, 142, + 143, 135, 134, 139, 144, 135, 0, 142, 136, 139, + 0, 143, 138, 140, 148, 143, 141, 139, 144, 0, + + 147, 139, 149, 151, 143, 148, 142, 143, 152, 151, + 139, 144, 155, 149, 148, 150, 139, 147, 143, 152, + 147, 148, 143, 150, 153, 154, 147, 147, 156, 149, + 151, 158, 148, 153, 155, 152, 182, 157, 173, 155, + 154, 159, 150, 156, 147, 153, 157, 147, 182, 153, + 0, 153, 154, 158, 159, 156, 178, 178, 158, 0, + 153, 0, 173, 182, 157, 173, 0, 179, 159, 0, + 0, 165, 153, 165, 165, 170, 165, 170, 170, 171, + 170, 171, 171, 175, 171, 175, 175, 180, 175, 179, + 0, 181, 0, 184, 179, 183, 185, 186, 187, 188, + + 181, 180, 183, 0, 189, 186, 227, 0, 0, 184, + 187, 189, 190, 193, 183, 185, 194, 171, 181, 180, + 184, 188, 183, 185, 186, 187, 188, 191, 180, 183, + 190, 189, 229, 191, 192, 193, 192, 196, 227, 190, + 193, 196, 194, 194, 198, 200, 0, 199, 203, 0, + 204, 201, 205, 200, 202, 210, 206, 204, 196, 191, + 191, 192, 199, 203, 229, 196, 207, 210, 196, 0, + 198, 198, 200, 201, 199, 203, 202, 204, 201, 206, + 205, 202, 210, 206, 205, 196, 197, 208, 207, 213, + 212, 197, 209, 207, 217, 256, 197, 211, 208, 212, + + 211, 217, 197, 197, 214, 209, 216, 205, 0, 197, + 0, 213, 211, 197, 208, 220, 213, 212, 197, 209, + 256, 217, 256, 197, 211, 218, 214, 211, 216, 197, + 197, 214, 215, 216, 221, 215, 218, 215, 226, 225, + 223, 220, 220, 231, 226, 221, 228, 223, 0, 215, + 233, 215, 218, 225, 230, 0, 0, 0, 215, 215, + 234, 0, 215, 232, 215, 226, 221, 223, 228, 239, + 235, 225, 221, 228, 234, 231, 215, 230, 215, 236, + 225, 230, 233, 232, 237, 238, 236, 234, 239, 240, + 232, 235, 241, 244, 238, 242, 239, 235, 243, 238, + + 245, 251, 247, 240, 244, 237, 236, 245, 248, 249, + 243, 237, 238, 242, 241, 253, 240, 248, 246, 241, + 244, 238, 242, 246, 247, 243, 250, 245, 259, 247, + 255, 250, 249, 251, 254, 248, 249, 252, 252, 258, + 257, 254, 260, 261, 262, 264, 252, 253, 257, 0, + 246, 261, 255, 250, 263, 267, 265, 255, 264, 258, + 259, 254, 266, 268, 252, 252, 258, 257, 0, 263, + 261, 269, 264, 270, 260, 271, 262, 270, 267, 272, + 274, 263, 265, 265, 273, 0, 275, 267, 269, 266, + 276, 278, 273, 275, 272, 268, 269, 271, 269, 274, + + 270, 279, 271, 280, 277, 267, 272, 274, 277, 282, + 281, 273, 276, 275, 0, 269, 283, 276, 285, 287, + 289, 284, 286, 278, 288, 280, 288, 285, 283, 290, + 280, 277, 281, 279, 284, 286, 291, 281, 287, 292, + 0, 282, 295, 283, 296, 285, 287, 297, 284, 286, + 294, 288, 289, 290, 299, 298, 290, 300, 297, 294, + 303, 291, 304, 291, 305, 292, 292, 298, 295, 295, + 296, 296, 301, 302, 297, 304, 306, 294, 299, 307, + 300, 299, 298, 309, 300, 308, 311, 313, 0, 304, + 301, 302, 303, 310, 313, 312, 305, 314, 315, 301, + + 302, 306, 308, 306, 315, 317, 314, 316, 308, 309, + 309, 307, 308, 318, 313, 310, 320, 319, 311, 312, + 310, 316, 321, 326, 314, 315, 319, 312, 323, 308, + 321, 317, 317, 322, 316, 325, 324, 318, 326, 320, + 318, 327, 322, 320, 319, 324, 312, 328, 0, 321, + 326, 329, 325, 0, 323, 323, 0, 331, 332, 325, + 322, 0, 325, 324, 0, 333, 329, 332, 336, 335, + 340, 328, 0, 327, 328, 331, 339, 0, 329, 325, + 330, 339, 336, 330, 331, 332, 337, 333, 330, 330, + 330, 330, 333, 335, 340, 336, 335, 340, 330, 338, + + 338, 337, 341, 0, 334, 0, 334, 330, 339, 347, + 330, 342, 345, 337, 342, 330, 330, 330, 330, 334, + 343, 342, 334, 348, 338, 346, 338, 338, 334, 341, + 345, 334, 343, 334, 344, 344, 347, 349, 342, 345, + 350, 342, 351, 346, 344, 348, 334, 343, 352, 334, + 348, 354, 346, 353, 351, 0, 357, 361, 355, 354, + 356, 344, 344, 349, 349, 355, 350, 350, 353, 351, + 352, 358, 356, 358, 360, 352, 362, 363, 354, 361, + 353, 360, 358, 364, 361, 355, 370, 356, 357, 364, + 365, 0, 365, 366, 368, 0, 369, 358, 358, 363, + + 358, 360, 0, 371, 363, 364, 366, 393, 362, 358, + 364, 367, 368, 404, 365, 372, 364, 365, 370, 365, + 366, 368, 369, 369, 367, 375, 376, 367, 377, 367, + 371, 378, 375, 379, 382, 367, 386, 372, 367, 393, + 377, 386, 372, 378, 376, 404, 379, 382, 381, 385, + 376, 367, 375, 376, 367, 377, 367, 373, 378, 373, + 379, 382, 389, 0, 381, 373, 384, 385, 386, 373, + 389, 376, 381, 388, 373, 381, 385, 373, 384, 388, + 0, 387, 390, 373, 373, 391, 373, 392, 387, 389, + 409, 381, 373, 384, 390, 392, 373, 394, 394, 395, + + 388, 373, 387, 391, 373, 374, 395, 374, 387, 390, + 397, 399, 391, 444, 392, 387, 396, 398, 399, 397, + 374, 400, 409, 374, 394, 374, 395, 374, 400, 396, + 0, 374, 374, 401, 374, 398, 402, 403, 399, 398, + 444, 0, 397, 396, 398, 401, 397, 374, 400, 403, + 374, 405, 374, 0, 374, 383, 383, 408, 402, 406, + 401, 407, 398, 402, 403, 383, 406, 383, 383, 383, + 408, 410, 383, 410, 411, 412, 407, 405, 405, 0, + 383, 436, 383, 383, 408, 411, 406, 436, 407, 413, + 413, 430, 383, 414, 383, 383, 383, 412, 410, 383, + + 414, 411, 412, 415, 416, 0, 417, 418, 436, 0, + 419, 419, 0, 420, 415, 416, 422, 423, 413, 417, + 414, 0, 0, 430, 421, 423, 0, 435, 419, 424, + 415, 416, 418, 417, 418, 419, 420, 419, 419, 421, + 420, 424, 422, 422, 423, 426, 425, 421, 427, 428, + 431, 421, 432, 434, 426, 419, 424, 425, 433, 435, + 428, 427, 428, 0, 439, 437, 421, 428, 431, 442, + 438, 434, 426, 425, 432, 427, 428, 431, 440, 432, + 434, 433, 448, 447, 445, 433, 437, 428, 439, 428, + 429, 439, 437, 438, 441, 442, 442, 438, 429, 429, + + 440, 441, 429, 429, 443, 440, 445, 450, 446, 447, + 447, 445, 429, 449, 448, 452, 453, 429, 443, 450, + 454, 441, 446, 457, 455, 429, 429, 451, 454, 429, + 429, 443, 457, 451, 450, 446, 449, 452, 453, 455, + 449, 456, 452, 453, 458, 459, 454, 454, 456, 0, + 457, 455, 460, 461, 451, 454, 463, 0, 462, 458, + 465, 0, 464, 0, 466, 467, 465, 469, 456, 459, + 467, 458, 459, 462, 460, 471, 461, 472, 475, 460, + 461, 471, 463, 463, 464, 462, 0, 465, 473, 464, + 466, 466, 467, 469, 469, 474, 472, 477, 486, 480, + + 475, 474, 471, 476, 472, 475, 473, 479, 480, 479, + 476, 481, 477, 483, 482, 473, 479, 484, 481, 485, + 486, 492, 474, 0, 477, 486, 480, 482, 488, 487, + 476, 488, 493, 489, 479, 484, 479, 490, 481, 493, + 491, 482, 487, 495, 484, 483, 494, 488, 0, 496, + 490, 485, 491, 492, 500, 488, 487, 489, 488, 493, + 489, 497, 496, 498, 490, 499, 495, 491, 498, 501, + 494, 499, 502, 494, 504, 495, 496, 500, 503, 505, + 506, 500, 509, 497, 502, 504, 0, 505, 497, 509, + 498, 501, 499, 495, 506, 512, 501, 510, 511, 502, + + 503, 504, 0, 510, 513, 503, 505, 506, 507, 509, + 511, 0, 513, 507, 514, 507, 516, 515, 512, 521, + 518, 507, 512, 507, 510, 511, 507, 507, 515, 519, + 0, 513, 518, 507, 507, 507, 514, 521, 525, 516, + 507, 514, 507, 516, 515, 517, 521, 518, 507, 517, + 507, 519, 520, 507, 507, 520, 519, 523, 522, 524, + 507, 528, 525, 520, 0, 525, 527, 517, 522, 523, + 524, 526, 517, 527, 530, 526, 517, 531, 529, 520, + 529, 532, 520, 534, 523, 533, 524, 528, 528, 531, + 522, 534, 536, 527, 535, 522, 532, 533, 526, 535, + + 530, 530, 537, 538, 531, 529, 539, 540, 532, 542, + 534, 538, 533, 545, 536, 543, 544, 546, 539, 536, + 537, 535, 551, 547, 549, 0, 558, 542, 540, 537, + 538, 551, 546, 539, 540, 547, 542, 549, 543, 544, + 548, 550, 543, 544, 546, 545, 552, 553, 548, 551, + 547, 549, 554, 550, 555, 557, 556, 555, 558, 560, + 562, 553, 566, 559, 0, 561, 0, 548, 550, 552, + 0, 565, 563, 552, 553, 556, 564, 554, 559, 554, + 561, 555, 557, 556, 562, 563, 566, 562, 564, 566, + 559, 560, 561, 565, 567, 568, 570, 569, 565, 563, + + 571, 567, 569, 564, 567, 572, 568, 573, 574, 575, + 570, 576, 567, 577, 578, 579, 0, 0, 577, 583, + 578, 567, 568, 570, 580, 581, 582, 571, 567, 569, + 579, 567, 572, 584, 582, 574, 575, 585, 583, 573, + 586, 578, 579, 576, 586, 577, 583, 581, 580, 588, + 587, 580, 581, 582, 589, 590, 591, 584, 587, 585, + 584, 593, 592, 595, 585, 591, 594, 586, 0, 597, + 598, 600, 588, 596, 593, 595, 588, 587, 590, 596, + 599, 598, 590, 591, 592, 602, 589, 599, 593, 592, + 595, 597, 594, 594, 601, 604, 597, 598, 602, 606, + + 596, 603, 607, 600, 604, 605, 603, 599, 606, 603, + 603, 610, 602, 607, 613, 611, 601, 608, 609, 0, + 633, 601, 604, 614, 610, 603, 606, 611, 603, 607, + 615, 605, 605, 603, 617, 618, 603, 603, 610, 608, + 609, 614, 611, 616, 608, 609, 613, 619, 622, 620, + 614, 624, 633, 623, 615, 621, 617, 615, 626, 618, + 620, 617, 618, 627, 621, 616, 616, 623, 622, 619, + 616, 629, 625, 624, 619, 622, 620, 629, 624, 625, + 623, 627, 621, 628, 630, 626, 631, 632, 634, 0, + 627, 628, 616, 635, 637, 630, 636, 636, 629, 625, + + 638, 641, 632, 639, 631, 643, 640, 644, 642, 634, + 628, 630, 639, 631, 632, 634, 642, 635, 637, 640, + 635, 637, 638, 641, 645, 636, 646, 638, 641, 644, + 639, 650, 648, 640, 644, 642, 647, 643, 647, 649, + 653, 651, 0, 654, 649, 650, 655, 652, 661, 658, + 646, 654, 0, 646, 648, 651, 645, 656, 650, 648, + 657, 652, 652, 647, 655, 659, 660, 657, 651, 652, + 654, 649, 653, 655, 652, 658, 658, 665, 664, 656, + 661, 660, 662, 664, 656, 659, 0, 657, 652, 652, + 660, 663, 659, 660, 666, 667, 666, 662, 668, 669, + + 0, 663, 670, 665, 665, 671, 668, 672, 660, 662, + 664, 670, 674, 663, 671, 673, 672, 675, 663, 674, + 667, 666, 667, 673, 669, 668, 669, 676, 663, 670, + 677, 678, 671, 679, 672, 680, 682, 684, 681, 674, + 683, 0, 673, 678, 680, 679, 681, 720, 677, 675, + 676, 682, 683, 688, 676, 686, 687, 677, 678, 685, + 679, 688, 680, 682, 689, 681, 685, 683, 686, 684, + 689, 687, 691, 690, 693, 692, 0, 699, 694, 720, + 688, 690, 686, 687, 692, 693, 685, 694, 695, 695, + 696, 689, 697, 698, 0, 691, 701, 695, 696, 691, + + 690, 693, 692, 699, 699, 694, 698, 700, 703, 701, + 702, 705, 704, 708, 697, 695, 695, 696, 702, 697, + 698, 706, 709, 701, 703, 704, 711, 708, 707, 710, + 700, 0, 706, 705, 700, 703, 707, 702, 705, 704, + 708, 712, 709, 713, 715, 714, 711, 717, 706, 709, + 723, 710, 719, 711, 714, 707, 710, 716, 718, 721, + 717, 0, 725, 712, 715, 713, 722, 719, 712, 724, + 713, 715, 714, 723, 717, 716, 718, 723, 727, 719, + 725, 721, 724, 726, 716, 718, 721, 729, 728, 725, + 722, 727, 730, 722, 728, 726, 724, 731, 732, 733, + + 730, 735, 736, 0, 737, 727, 738, 0, 739, 735, + 726, 737, 741, 742, 729, 728, 744, 733, 730, 730, + 732, 741, 743, 739, 731, 732, 733, 730, 735, 738, + 740, 737, 740, 738, 736, 739, 744, 745, 746, 741, + 746, 743, 750, 744, 747, 742, 745, 0, 0, 743, + 753, 747, 0, 0, 750, 0, 756, 740, 760, 757, + 753, 762, 0, 0, 745, 746, 759, 761, 0, 750, + 0, 747, 748, 769, 756, 748, 760, 753, 761, 748, + 757, 763, 748, 756, 762, 760, 757, 759, 762, 748, + 748, 766, 748, 759, 761, 764, 765, 748, 767, 748, + + 766, 775, 748, 768, 775, 769, 748, 763, 763, 748, + 768, 767, 765, 771, 772, 0, 748, 748, 766, 748, + 772, 764, 764, 765, 773, 767, 783, 774, 775, 776, + 768, 770, 770, 773, 770, 771, 778, 770, 777, 0, + 771, 772, 770, 779, 778, 776, 783, 781, 770, 770, + 774, 773, 776, 783, 774, 779, 776, 770, 770, 770, + 777, 770, 782, 778, 770, 777, 780, 782, 780, 770, + 779, 781, 776, 784, 781, 770, 770, 785, 0, 786, + 0, 787, 0, 788, 791, 789, 0, 793, 0, 785, + 792, 790, 0, 780, 782, 794, 795, 806, 0, 784, + + 784, 786, 793, 794, 785, 788, 786, 787, 787, 789, + 788, 791, 789, 790, 793, 792, 797, 792, 790, 795, + 796, 798, 794, 795, 797, 799, 800, 796, 801, 806, + 802, 804, 805, 803, 0, 808, 812, 805, 800, 807, + 798, 801, 803, 797, 809, 811, 804, 796, 798, 809, + 814, 799, 799, 800, 817, 801, 802, 802, 804, 805, + 803, 807, 808, 813, 815, 816, 807, 811, 812, 819, + 0, 813, 811, 818, 820, 821, 809, 824, 817, 822, + 823, 817, 814, 825, 826, 829, 815, 828, 819, 823, + 813, 815, 832, 826, 818, 828, 819, 816, 822, 824, + + 818, 820, 821, 825, 824, 827, 822, 823, 830, 831, + 825, 826, 829, 833, 828, 834, 827, 841, 0, 832, + 836, 837, 838, 834, 839, 838, 830, 843, 831, 846, + 0, 842, 827, 0, 840, 830, 831, 0, 836, 837, + 843, 841, 834, 846, 841, 833, 839, 836, 837, 838, + 845, 839, 840, 842, 843, 844, 846, 844, 842, 847, + 848, 840, 849, 850, 847, 851, 852, 853, 845, 852, + 856, 850, 854, 857, 849, 858, 853, 845, 860, 859, + 854, 858, 844, 851, 860, 0, 848, 848, 0, 849, + 850, 847, 851, 852, 853, 856, 854, 856, 867, 854, + + 857, 859, 858, 861, 862, 860, 859, 854, 863, 864, + 861, 862, 869, 863, 865, 866, 864, 868, 870, 866, + 869, 867, 871, 0, 875, 867, 868, 879, 872, 873, + 861, 862, 865, 874, 876, 863, 864, 873, 0, 869, + 871, 865, 866, 872, 868, 875, 874, 878, 884, 871, + 870, 875, 877, 876, 879, 872, 873, 881, 880, 882, + 874, 876, 889, 883, 881, 877, 880, 884, 886, 878, + 883, 885, 887, 886, 878, 884, 888, 882, 885, 877, + 887, 890, 897, 888, 881, 880, 882, 891, 892, 893, + 883, 895, 0, 896, 889, 886, 0, 894, 885, 887, + + 891, 0, 893, 888, 894, 897, 900, 898, 903, 897, + 902, 899, 901, 890, 891, 898, 893, 904, 901, 899, + 892, 905, 907, 895, 894, 896, 899, 0, 900, 906, + 905, 909, 0, 900, 898, 908, 902, 902, 899, 901, + 903, 904, 908, 906, 904, 911, 899, 913, 905, 912, + 910, 912, 913, 914, 907, 916, 906, 0, 909, 910, + 912, 915, 908, 917, 918, 914, 920, 911, 917, 0, + 919, 918, 911, 925, 920, 932, 912, 910, 912, 913, + 914, 916, 916, 922, 915, 923, 922, 925, 915, 926, + 917, 918, 919, 920, 929, 927, 926, 919, 923, 0, + + 925, 927, 932, 930, 0, 931, 933, 953, 933, 0, + 922, 934, 923, 937, 939, 935, 926, 931, 0, 939, + 929, 929, 927, 928, 936, 928, 930, 935, 0, 928, + 930, 928, 931, 933, 934, 937, 928, 936, 934, 953, + 937, 928, 935, 940, 938, 944, 939, 928, 943, 941, + 928, 936, 928, 0, 942, 944, 928, 938, 928, 945, + 943, 940, 941, 928, 0, 946, 942, 944, 928, 954, + 940, 938, 944, 948, 945, 943, 941, 942, 947, 948, + 950, 942, 944, 949, 0, 951, 945, 946, 955, 952, + 957, 947, 946, 942, 958, 0, 949, 963, 950, 958, + + 948, 954, 966, 962, 960, 947, 951, 950, 965, 959, + 949, 952, 951, 960, 964, 955, 952, 959, 962, 963, + 0, 958, 957, 965, 963, 967, 968, 964, 966, 966, + 962, 960, 970, 969, 973, 965, 959, 961, 972, 0, + 970, 964, 961, 971, 961, 968, 969, 967, 979, 972, + 961, 971, 967, 968, 974, 961, 961, 975, 976, 970, + 969, 0, 961, 961, 961, 972, 973, 976, 977, 961, + 971, 961, 975, 980, 983, 979, 974, 961, 978, 977, + 984, 974, 961, 961, 975, 976, 981, 978, 986, 961, + 985, 988, 989, 981, 987, 977, 980, 0, 985, 995, + + 980, 990, 992, 0, 984, 978, 983, 984, 987, 990, + 986, 994, 993, 981, 989, 986, 996, 985, 997, 989, + 992, 987, 994, 988, 998, 999, 997, 1000, 990, 992, + 993, 995, 999, 1002, 996, 1001, 1005, 1003, 994, 993, + 1000, 1004, 1001, 996, 1007, 997, 998, 1009, 1002, 0, + 0, 998, 999, 1013, 1000, 1003, 1006, 1005, 1009, 1004, + 1002, 1014, 1001, 1005, 1003, 1011, 1006, 1017, 1004, 1014, + 1012, 1015, 1016, 1018, 1009, 1013, 1007, 1012, 1011, 1017, + 1013, 1016, 1019, 1006, 1015, 1022, 1025, 1023, 1014, 1024, + 1026, 0, 1011, 0, 1017, 1018, 1028, 1012, 1015, 1016, + + 1018, 1027, 0, 1033, 1019, 1023, 1033, 1022, 1026, 1019, + 1028, 1030, 1022, 1027, 1023, 1024, 1024, 1026, 1025, 1031, + 1034, 1035, 1030, 1028, 1031, 1036, 1037, 1038, 1027, 1033, + 1033, 1039, 1036, 1033, 1035, 1041, 1038, 1037, 1030, 1042, + 1043, 1045, 0, 1040, 1034, 1039, 1042, 1034, 1035, 1044, + 1048, 1031, 1036, 1037, 1038, 1040, 1046, 1050, 1039, 1049, + 1051, 1044, 1052, 1045, 1058, 1049, 1042, 1041, 1045, 1046, + 1040, 1060, 1043, 1052, 1048, 1053, 1044, 1048, 1054, 1050, + 1056, 1055, 1051, 1046, 1050, 1058, 1049, 1051, 1059, 1052, + 1061, 1058, 1060, 1053, 1062, 1056, 1063, 1064, 1060, 1059, + + 1054, 1065, 1053, 1055, 1066, 1054, 1064, 1056, 1055, 1067, + 1069, 1068, 1071, 1072, 1063, 1059, 1070, 1069, 1067, 1068, + 1073, 1062, 1061, 1063, 1064, 1065, 1071, 1074, 1065, 1075, + 1066, 1066, 1076, 1077, 1078, 1080, 1067, 1069, 1068, 1071, + 1070, 1081, 1083, 1070, 1085, 1072, 1082, 0, 1084, 1074, + 1081, 1075, 1073, 1082, 1074, 1077, 1075, 1080, 1086, 1087, + 1077, 1089, 1080, 1088, 1076, 1090, 1078, 1091, 1081, 1089, + 1084, 1085, 1088, 1082, 1083, 1084, 1086, 1087, 1093, 1092, + 1097, 1095, 1098, 1101, 1094, 1086, 1087, 0, 1089, 1090, + 1088, 1091, 1090, 1094, 1091, 1092, 1095, 1099, 1100, 1096, + + 1093, 1104, 1103, 0, 1107, 1093, 1092, 1096, 1095, 1099, + 1101, 1094, 1097, 1102, 1098, 1103, 1104, 1109, 1106, 1109, + 1100, 1102, 1107, 1112, 1099, 1100, 1096, 1106, 1104, 1103, + 1108, 1107, 1113, 1111, 1114, 1115, 1117, 1119, 1108, 1118, + 1102, 1111, 1115, 1120, 1109, 1106, 1122, 1124, 1123, 1117, + 1112, 1118, 1119, 1121, 1113, 1123, 1114, 1108, 1125, 1113, + 1111, 1114, 1115, 1117, 1119, 1120, 1118, 1126, 1128, 1127, + 1120, 1121, 1130, 1122, 1131, 1123, 1129, 0, 1126, 1124, + 1121, 1134, 1132, 1139, 1137, 1130, 1135, 1131, 1133, 1134, + 1125, 1127, 1137, 1128, 1126, 1128, 1127, 0, 1129, 1130, + + 1133, 1131, 1136, 1129, 1132, 1140, 1135, 1141, 1134, 1132, + 1139, 1137, 1142, 1135, 1136, 1133, 1141, 1143, 1140, 1144, + 1147, 0, 1148, 0, 1142, 1150, 1144, 0, 1149, 1136, + 0, 1145, 1140, 1153, 1141, 0, 1151, 0, 1143, 1142, + 1145, 1152, 1145, 1147, 1143, 1145, 1144, 1147, 1148, 1148, + 1149, 1154, 1150, 1145, 1152, 1149, 1151, 1153, 1145, 1154, + 1153, 1155, 1156, 1151, 1157, 1158, 1159, 1145, 1152, 1145, + 1155, 1161, 1145, 1158, 1160, 1163, 1165, 1166, 1154, 1162, + 1156, 1159, 1170, 1163, 1161, 1167, 1157, 1168, 1155, 1156, + 1171, 1157, 1158, 1159, 1168, 1162, 1160, 1169, 1161, 1166, + + 1175, 1160, 1163, 1165, 1166, 1170, 1162, 1167, 1171, 1170, + 1172, 1173, 1167, 1174, 1168, 1175, 1176, 1171, 0, 1169, + 1178, 1174, 1172, 1173, 1169, 1177, 1179, 1175, 1176, 1182, + 1180, 0, 1181, 0, 1179, 1178, 1180, 1172, 1173, 1183, + 1174, 1181, 1184, 1176, 1186, 1177, 1187, 1178, 1185, 1184, + 1182, 1183, 1177, 1179, 1195, 1185, 1182, 1180, 1187, 1181, + 1188, 1189, 1186, 1191, 1190, 1191, 1183, 1192, 1188, 1184, + 1193, 1186, 1190, 1187, 1198, 1185, 1189, 1193, 1199, 1192, + 1196, 1201, 1197, 1202, 0, 1199, 1195, 1188, 1189, 1200, + 1191, 1190, 1196, 1198, 1192, 1197, 1207, 1193, 1202, 1203, + + 1200, 1198, 1205, 1201, 1203, 1199, 1204, 1196, 1201, 1197, + 1202, 1206, 0, 1209, 1204, 1205, 1200, 1210, 1211, 0, + 0, 1222, 1207, 1207, 1215, 1206, 1212, 1209, 1222, 1205, + 1224, 1203, 1213, 1204, 0, 1210, 1216, 1214, 1206, 1208, + 1209, 0, 1218, 1208, 1210, 1217, 1208, 1208, 1222, 1220, + 1211, 1208, 1212, 1212, 1213, 1214, 1215, 1208, 1216, 1213, + 1237, 1208, 1224, 1216, 1214, 1208, 1208, 1217, 1218, 1218, + 1208, 1219, 1217, 1208, 1208, 1220, 1220, 1219, 1208, 1221, + 1223, 1221, 1225, 1226, 1208, 1229, 1237, 1237, 1208, 1223, + 1226, 1227, 1228, 1230, 1229, 1231, 0, 1233, 1219, 1232, + + 1225, 0, 1236, 1221, 0, 1228, 1221, 1223, 1221, 1225, + 1226, 0, 1229, 1227, 1235, 1236, 1238, 1238, 1227, 1228, + 1233, 1232, 1239, 1243, 1233, 1230, 1232, 1231, 1234, 1236, + 1241, 1242, 1243, 1234, 1244, 1234, 1235, 1234, 1239, 1234, + 0, 1235, 1245, 1242, 0, 1238, 1234, 1245, 1248, 1239, + 1243, 1246, 1244, 1241, 1247, 1234, 1254, 1241, 1242, 1247, + 1234, 1244, 1234, 1249, 1234, 1250, 1234, 1255, 1256, 1246, + 1248, 1251, 1252, 1253, 1245, 1248, 1249, 0, 1246, 1251, + 1252, 1247, 1258, 1250, 1257, 1260, 1253, 1256, 1254, 1259, + 1249, 1264, 1250, 1255, 1255, 1256, 1262, 1257, 1251, 1252, + + 1253, 1261, 1259, 1260, 1258, 1262, 1263, 1265, 1263, 1258, + 1266, 1257, 1260, 1264, 1267, 1268, 1259, 1271, 1264, 1270, + 1273, 1261, 1266, 1262, 1272, 1274, 1276, 1278, 1261, 1275, + 0, 1277, 1272, 1263, 1265, 1281, 1275, 1266, 1273, 1271, + 1268, 1267, 1268, 1270, 1271, 1284, 1270, 1273, 1286, 1278, + 1288, 1272, 1274, 1276, 1278, 1279, 1275, 1277, 1277, 1280, + 1282, 1279, 1281, 1283, 1285, 1280, 1287, 1282, 1288, 1284, + 1289, 1285, 1284, 1283, 1290, 1292, 1294, 1288, 1296, 1295, + 1286, 0, 1279, 1290, 1293, 1297, 1280, 1282, 1287, 0, + 1283, 1285, 1295, 1287, 1298, 1289, 1293, 1289, 1294, 1292, + + 1296, 1290, 1292, 1294, 1297, 1296, 1295, 1299, 1300, 0, + 1301, 1293, 1297, 1303, 1308, 1306, 1298, 1302, 1305, 1309, + 1304, 1298, 1303, 1311, 0, 1312, 1310, 1315, 0, 1306, + 1300, 1299, 0, 1323, 1299, 1300, 1301, 1301, 1305, 1302, + 1303, 1304, 1306, 1312, 1302, 1305, 1308, 1304, 1310, 1313, + 1314, 1309, 1312, 1310, 1315, 1311, 1316, 1313, 1318, 1320, + 1322, 1319, 1321, 1316, 1322, 1323, 1314, 1318, 1324, 1321, + 1325, 1320, 1327, 0, 1329, 1330, 1313, 1314, 1319, 1331, + 1332, 1329, 1330, 1316, 1334, 1318, 1320, 1322, 1319, 1321, + 1328, 1325, 1339, 1332, 1331, 0, 1328, 1325, 1335, 1333, + + 1324, 1329, 1330, 1328, 1327, 1335, 1331, 1332, 1333, 1337, + 1334, 1334, 1336, 1338, 1336, 1341, 1340, 1328, 1337, 1339, + 1340, 1343, 1344, 1328, 1345, 1335, 1333, 1344, 1346, 1343, + 1347, 1348, 1356, 1345, 1352, 1338, 1337, 1341, 1349, 1336, + 1338, 0, 1341, 1340, 1348, 1353, 1346, 0, 1343, 1347, + 1349, 1345, 1352, 1354, 1344, 1346, 1350, 1347, 1348, 1350, + 1351, 1352, 1357, 1351, 1356, 1349, 1354, 0, 1350, 1359, + 1353, 1360, 1353, 1363, 1359, 1358, 1361, 1361, 0, 1360, + 1354, 0, 1351, 1350, 1362, 1357, 1350, 1351, 1364, 1357, + 1351, 1358, 1366, 1362, 1367, 1363, 1365, 1368, 1360, 1366, + + 1363, 1359, 1358, 1361, 1368, 1365, 1373, 1370, 1371, 1372, + 1364, 1362, 1377, 1375, 1374, 1364, 1367, 1371, 1372, 1366, + 1370, 1367, 1375, 1365, 1368, 0, 0, 1378, 1384, 0, + 1376, 1379, 1373, 1373, 1370, 1371, 1372, 1374, 1376, 1379, + 1375, 1374, 1378, 1380, 1377, 1383, 1385, 1381, 1382, 1386, + 1384, 1388, 1387, 1383, 1378, 1384, 1380, 1376, 1379, 1381, + 1382, 1387, 1389, 1391, 1394, 1390, 1385, 1393, 1395, 1388, + 1380, 1386, 1383, 1385, 1381, 1382, 1386, 1390, 1388, 1387, + 1392, 1391, 1396, 1397, 1398, 1400, 1399, 1392, 1389, 1389, + 1391, 1400, 1390, 1393, 1393, 1396, 1394, 1399, 1401, 1402, + + 1395, 1403, 1404, 1405, 0, 1398, 0, 1392, 1408, 1396, + 1397, 1398, 1400, 1399, 1406, 1409, 1414, 1411, 1410, 1413, + 1401, 0, 1412, 0, 1416, 1401, 1411, 1415, 1414, 1405, + 1405, 1402, 1413, 1403, 1404, 1408, 1410, 1412, 1409, 1418, + 1406, 1406, 1409, 1414, 1411, 1410, 1413, 1415, 1417, 1412, + 1416, 1416, 1419, 1421, 1415, 1417, 1420, 1422, 1418, 1423, + 1424, 1421, 1422, 1426, 1423, 1427, 1418, 1424, 1425, 1420, + 1428, 1426, 1432, 1427, 1419, 1417, 1429, 1430, 1433, 1419, + 1421, 1432, 1437, 1420, 1434, 1430, 1431, 1424, 1428, 1422, + 1426, 1423, 1427, 1431, 1425, 1425, 1439, 1428, 1429, 1432, + + 1435, 1436, 1436, 1429, 1430, 1440, 1434, 1435, 1438, 1446, + 1433, 1434, 1441, 1431, 1437, 1446, 1438, 1439, 1442, 1445, + 1441, 1443, 1444, 1439, 1448, 0, 1442, 1435, 1436, 1443, + 1444, 1447, 1445, 1449, 1450, 1438, 1446, 1440, 1452, 1441, + 1453, 1454, 1450, 1447, 1451, 1442, 1445, 1455, 1443, 1444, + 1448, 1448, 1451, 1452, 1456, 1458, 1457, 1449, 1447, 0, + 1449, 1450, 1459, 1462, 1463, 1452, 1464, 1453, 1454, 1455, + 1457, 1451, 1462, 1458, 1455, 1460, 1459, 1456, 1464, 1460, + 1465, 1456, 1458, 1457, 1466, 1467, 1463, 1465, 1468, 1459, + 1462, 1463, 1460, 1464, 1469, 1466, 1470, 0, 1472, 0, + + 1460, 1473, 1460, 1471, 1474, 1476, 1460, 1465, 1470, 1475, + 1468, 1466, 1467, 1479, 1476, 1468, 1475, 1471, 1487, 1460, + 1472, 1477, 1478, 1470, 1473, 1472, 1469, 1474, 1473, 1478, + 1471, 1474, 1476, 1480, 1482, 1484, 1475, 1485, 1490, 1477, + 1486, 1484, 1493, 1482, 1488, 1479, 1492, 1494, 1477, 1478, + 1487, 1488, 1495, 1497, 0, 0, 1502, 0, 1494, 1485, + 1480, 1482, 1484, 1495, 1485, 1490, 1486, 1486, 1499, 1493, + 1492, 1488, 1498, 1492, 1494, 1499, 1500, 1497, 1498, 1495, + 1497, 1501, 1502, 1502, 1503, 1504, 1509, 1506, 1501, 1505, + 0, 1504, 1507, 1510, 1500, 1499, 1503, 1505, 1508, 1498, + + 1513, 1517, 1510, 1500, 1509, 1507, 1511, 1513, 1501, 1506, + 1514, 1503, 1504, 1509, 1506, 1512, 1505, 1512, 1511, 1507, + 1510, 1515, 1516, 1517, 1508, 1508, 1518, 1513, 1517, 1519, + 0, 1516, 1520, 1511, 1515, 1522, 1514, 1514, 1518, 1521, + 1523, 1524, 1512, 0, 1526, 1523, 1521, 1525, 1515, 1516, + 1527, 1529, 1526, 1518, 1531, 1520, 1519, 1524, 1532, 1520, + 0, 1522, 1522, 0, 1533, 1530, 1521, 1523, 1524, 1532, + 1525, 1526, 1527, 1533, 1525, 1534, 1531, 1527, 1529, 1530, + 1536, 1531, 1535, 1535, 1537, 1532, 1537, 1538, 1534, 0, + 1535, 1533, 1530, 1536, 1539, 1542, 1540, 1541, 1544, 1543, + + 1553, 1545, 1534, 1540, 1541, 1546, 1548, 1536, 1545, 1535, + 1535, 1537, 1547, 1538, 1538, 1550, 1539, 1543, 1552, 1555, + 1544, 1539, 1542, 1540, 1541, 1544, 1543, 1553, 1545, 1549, + 1546, 1552, 1546, 1554, 1547, 1557, 1549, 1559, 1548, 1547, + 1555, 1554, 1560, 1563, 1562, 1552, 1555, 1550, 1558, 1564, + 1566, 1558, 1561, 1562, 1565, 1563, 1549, 1557, 1570, 1566, + 1554, 0, 1557, 1559, 1559, 1561, 1571, 1567, 1560, 1560, + 1563, 1562, 1577, 1564, 1574, 1558, 1564, 1566, 1568, 1561, + 1565, 1565, 1567, 1569, 1572, 1568, 1569, 1575, 1571, 1576, + 1570, 1576, 1574, 1571, 1567, 1578, 1577, 1579, 1569, 1577, + + 1572, 1574, 1580, 1584, 1581, 1568, 1582, 1569, 1572, 1575, + 1569, 1572, 1583, 1569, 1575, 1585, 1576, 1591, 0, 1587, + 1592, 1594, 1578, 1590, 0, 1569, 1581, 1572, 1587, 1579, + 1586, 1581, 1582, 1582, 1580, 1584, 1589, 1585, 1583, 1583, + 1588, 1595, 1585, 1589, 1586, 1595, 1587, 1590, 1588, 1591, + 1590, 1593, 1592, 1594, 1596, 1597, 1599, 1586, 1598, 1600, + 0, 1602, 1601, 1589, 1603, 1599, 1600, 1588, 1595, 1601, + 1605, 1604, 1607, 1593, 1602, 1608, 1596, 1603, 1593, 1605, + 1598, 1596, 1597, 1599, 1604, 1598, 1600, 1614, 1602, 1601, + 1606, 1603, 1606, 1609, 1611, 1607, 1612, 1605, 1604, 1607, + + 1608, 1609, 1608, 1615, 1613, 1616, 1617, 1621, 1619, 1611, + 1615, 1612, 1618, 1617, 1619, 1622, 1616, 1606, 1613, 1614, + 1609, 1611, 1622, 1612, 1623, 1618, 1624, 0, 1625, 1629, + 1615, 1613, 1616, 1617, 1621, 1619, 1626, 1627, 1629, 1618, + 1628, 1624, 1622, 1628, 1630, 1631, 1623, 1634, 1626, 1632, + 1627, 1623, 1640, 1624, 1625, 1625, 1629, 1631, 1634, 1641, + 1639, 1636, 1630, 1626, 1627, 1633, 1636, 1628, 1633, 1632, + 1642, 1630, 1631, 1636, 1634, 1638, 1632, 1638, 1657, 1640, + 1643, 1644, 1645, 1633, 1639, 1642, 1641, 1639, 1636, 1643, + 1646, 1647, 1633, 1636, 1648, 1633, 1649, 1642, 1651, 1647, + + 1650, 1652, 1638, 0, 1646, 1644, 1651, 1643, 1644, 1645, + 1657, 1653, 1652, 1656, 1658, 0, 1648, 1646, 1647, 1659, + 1649, 1648, 1650, 1649, 1654, 1651, 1659, 1650, 1652, 1653, + 1655, 1656, 1654, 1655, 1661, 1660, 1663, 1662, 1653, 1664, + 1656, 1658, 1687, 1661, 1664, 1665, 1659, 1663, 1655, 1660, + 1662, 1654, 1669, 1666, 1669, 1671, 1670, 1655, 1672, 1673, + 1655, 1661, 1660, 1663, 1662, 1670, 1674, 1665, 1666, 1672, + 1675, 1664, 1665, 1676, 1687, 0, 1676, 1673, 0, 1669, + 1666, 1671, 1671, 1670, 1675, 1672, 1673, 1677, 1674, 1678, + 1680, 1676, 1683, 1674, 1684, 1679, 1675, 1675, 1678, 1680, + + 1676, 1679, 1681, 1676, 1686, 1683, 1684, 1681, 1685, 1677, + 1689, 1675, 1690, 1685, 1677, 1688, 1678, 1680, 1691, 1683, + 1692, 1684, 1679, 1693, 1688, 1694, 1686, 1698, 1701, 1696, + 1697, 1686, 0, 1692, 1681, 1685, 1696, 1689, 0, 1699, + 1691, 0, 1688, 1697, 1690, 1691, 1694, 1692, 1700, 1703, + 1705, 1707, 1694, 1699, 1700, 1693, 1696, 1697, 1705, 1698, + 1701, 1706, 1708, 0, 1709, 1710, 1699, 1711, 1703, 1706, + 1707, 1716, 1700, 1712, 1715, 1700, 1703, 1705, 1707, 1710, + 1713, 1700, 1709, 1714, 1708, 1711, 1717, 1712, 1706, 1708, + 1718, 1709, 1710, 1713, 1711, 1715, 1714, 1719, 1720, 1721, + + 1712, 1715, 1723, 1716, 1718, 1720, 1722, 1713, 1721, 1724, + 1714, 1725, 1728, 1730, 1722, 1726, 0, 1718, 1717, 1727, + 1726, 1728, 1715, 1724, 1719, 1720, 1721, 1731, 1732, 1723, + 1727, 1733, 0, 1722, 1731, 1734, 1724, 1735, 1736, 1728, + 1730, 1737, 1726, 1725, 0, 1737, 1727, 1740, 1739, 1742, + 1743, 1732, 1741, 1733, 1731, 1732, 1736, 1734, 1733, 1735, + 1747, 1742, 1734, 1749, 1735, 1736, 1739, 1741, 1737, 1745, + 1744, 1740, 1746, 1748, 1740, 1739, 1742, 1743, 1744, 1741, + 1746, 1755, 1759, 1749, 1745, 1753, 1748, 1747, 1750, 1751, + 1749, 1754, 1756, 1753, 1761, 1763, 1745, 1744, 1754, 1746, + + 1748, 1757, 1758, 1750, 1751, 1765, 1760, 1756, 1764, 1759, + 1757, 1766, 1753, 1755, 1786, 1750, 1751, 1763, 1754, 1756, + 1768, 1761, 1763, 1758, 1767, 1769, 1764, 1770, 1757, 1758, + 1760, 1771, 1772, 1760, 1770, 1764, 1771, 1765, 1766, 1767, + 1774, 1772, 1775, 1776, 1773, 1768, 1786, 1768, 1777, 1769, + 1779, 1767, 1769, 1773, 1770, 0, 1778, 1783, 1771, 1772, + 1780, 1776, 1774, 1777, 1775, 1785, 0, 1774, 1778, 1775, + 1776, 1773, 1779, 1780, 1781, 1777, 1784, 1779, 1780, 1783, + 1787, 1781, 1782, 1778, 1783, 1789, 1787, 1780, 1784, 1782, + 1790, 1791, 1785, 1789, 1793, 1794, 1796, 1794, 1790, 1792, + + 1780, 1781, 1791, 1784, 1782, 1795, 1792, 1787, 1794, 1782, + 1797, 1799, 1789, 1798, 1805, 1800, 1782, 1790, 1791, 1793, + 1798, 1793, 1794, 1796, 1794, 1803, 1792, 1801, 1802, 1808, + 1804, 1795, 1795, 1801, 1802, 1806, 1809, 1797, 1799, 1810, + 1798, 1800, 1800, 1812, 0, 1809, 1805, 1811, 1813, 1811, + 1815, 1814, 1803, 1804, 1801, 1802, 1816, 1804, 1814, 1806, + 1818, 1808, 1806, 1809, 1817, 1822, 1818, 1812, 1819, 1833, + 1812, 1810, 1815, 1820, 1811, 1813, 1817, 1815, 1814, 1821, + 1825, 1824, 1827, 1816, 0, 1826, 1828, 1818, 1824, 1825, + 1819, 1817, 1826, 1828, 1833, 1819, 1833, 1822, 1831, 1820, + + 1820, 1821, 1823, 1823, 1823, 1830, 1821, 1825, 1824, 1823, + 1830, 1831, 1826, 1828, 1827, 1832, 1834, 1823, 1836, 1838, + 1837, 1835, 1839, 0, 1840, 1831, 1838, 1832, 1839, 1823, + 1823, 1823, 1834, 1835, 1841, 1841, 1823, 1830, 1837, 1842, + 0, 1845, 1832, 1834, 1846, 1843, 1838, 1837, 1835, 1839, + 1836, 1840, 1843, 1844, 1850, 1847, 1852, 1851, 1844, 1851, + 1854, 1841, 1847, 1855, 1856, 1842, 1842, 1845, 1845, 1855, + 1858, 1846, 1843, 1859, 1852, 1857, 1860, 1862, 1854, 1859, + 1844, 1850, 1847, 1852, 1851, 1861, 1857, 1854, 1860, 1864, + 1855, 1863, 1863, 1865, 1865, 1862, 1856, 1858, 1866, 1868, + + 1859, 1869, 1857, 1860, 1862, 1861, 1872, 1870, 1871, 1866, + 1877, 1876, 1861, 1879, 1870, 1864, 1864, 1873, 1863, 1875, + 1865, 1868, 1880, 1878, 1881, 1866, 1868, 1875, 1871, 1880, + 1887, 1879, 1881, 1869, 1870, 1871, 1883, 1877, 1872, 1882, + 1879, 1886, 1873, 1876, 1873, 1878, 1875, 1884, 1888, 1880, + 1878, 1881, 1885, 1885, 1882, 1891, 1884, 1889, 1890, 1896, + 1883, 1895, 1887, 1883, 1889, 1893, 1882, 1886, 1886, 1897, + 1890, 1891, 1893, 1902, 1884, 1898, 1894, 1897, 1891, 1885, + 1888, 1894, 1891, 1895, 1889, 1890, 1896, 1898, 1895, 1900, + 1901, 1903, 1893, 1904, 1905, 1908, 1897, 1900, 1891, 1902, + + 1902, 1906, 1898, 1894, 1909, 1912, 1910, 1911, 1915, 1907, + 1909, 1904, 1903, 1901, 1907, 1911, 1900, 1901, 1903, 1910, + 1904, 1905, 1908, 1913, 1906, 1907, 1918, 1912, 1906, 1916, + 1913, 1909, 1912, 1910, 1911, 1914, 1907, 1917, 1916, 1920, + 1915, 1907, 1914, 1919, 1931, 1921, 1922, 1924, 1918, 1917, + 1913, 1926, 1933, 1918, 1927, 1929, 1916, 1919, 1926, 1934, + 1934, 1935, 1914, 1925, 1917, 1924, 1920, 1937, 1925, 1922, + 1919, 1921, 1921, 1922, 1924, 1930, 1931, 1936, 1926, 1925, + 1930, 1927, 1929, 1935, 1933, 1939, 1934, 1940, 1935, 1948, + 1925, 1941, 1936, 1943, 1942, 1925, 1942, 1944, 1945, 1937, + + 1939, 1946, 1944, 0, 1936, 1949, 1941, 1930, 1947, 1946, + 1940, 1948, 1939, 1955, 1940, 1947, 1948, 1953, 1941, 1951, + 1949, 1942, 1956, 1952, 1944, 1943, 1957, 1958, 1946, 1959, + 1945, 1952, 1949, 1960, 1951, 1947, 1959, 1955, 0, 1953, + 1955, 1961, 1962, 1964, 1953, 1963, 1951, 1968, 1956, 1956, + 1952, 1966, 1969, 1957, 1958, 1970, 1959, 1975, 1974, 1976, + 1972, 1964, 1961, 1980, 1962, 1960, 1963, 1969, 1961, 1962, + 1964, 1968, 1963, 1966, 1968, 1972, 1973, 1976, 1966, 1969, + 1974, 1970, 1970, 1977, 1975, 1974, 1976, 1972, 1979, 1978, + 1980, 1973, 1981, 1983, 1985, 1982, 1984, 1987, 1988, 1981, + + 1989, 0, 1983, 1973, 1984, 1977, 1986, 1988, 0, 0, + 1977, 1978, 1979, 1982, 0, 1979, 1978, 1985, 1989, 1981, + 1983, 1985, 1982, 1984, 1991, 1988, 1990, 1989, 1986, 1987, + 1993, 1994, 1995, 1986, 1997, 1990, 1996, 1991, 2002, 1999, + 1994, 1993, 2000, 1996, 1998, 2001, 2005, 0, 2000, 0, + 1995, 1991, 2002, 1990, 1999, 2007, 1993, 1993, 1994, 1995, + 1997, 1997, 1998, 1996, 2008, 2002, 1999, 2001, 1993, 2000, + 2009, 1998, 2001, 2005, 2011, 2008, 2012, 2013, 2014, 2007, + 2015, 2009, 2007, 2016, 2017, 2018, 2011, 2020, 2014, 2012, + 2021, 2008, 2023, 2025, 2024, 2028, 2023, 2009, 0, 0, + + 2026, 2011, 2028, 2012, 2018, 2014, 2015, 2015, 2016, 2013, + 2016, 2017, 2018, 2027, 2020, 2024, 2021, 2021, 2027, 2023, + 2026, 2024, 2028, 2029, 2030, 2025, 2031, 2026, 2032, 2033, + 2040, 2035, 2031, 2034, 2036, 2036, 2037, 2040, 0, 2043, + 2027, 2038, 2030, 2032, 2033, 2034, 2035, 2046, 2037, 2029, + 2029, 2030, 2042, 2031, 2038, 2032, 2033, 2040, 2035, 2051, + 2034, 2036, 2038, 2037, 2044, 2041, 2043, 2042, 2038, 2041, + 2045, 2046, 2047, 2044, 2046, 2048, 2050, 2045, 2052, 2042, + 0, 2038, 2048, 2056, 2051, 2053, 2051, 2052, 2054, 2061, + 0, 2044, 2041, 2059, 2047, 2058, 2063, 2045, 2050, 2047, + + 2065, 2056, 2048, 2050, 2058, 2052, 2060, 2053, 2054, 2062, + 2056, 2059, 2053, 2066, 2061, 2054, 2061, 2062, 2067, 2069, + 2059, 2060, 2058, 2068, 2068, 2065, 2066, 2065, 2063, 2070, + 2071, 2072, 2074, 2060, 2073, 2075, 2062, 2077, 2076, 2074, + 2066, 2069, 0, 2073, 2079, 2067, 2069, 2078, 2084, 2079, + 2068, 2077, 2071, 2072, 2070, 2088, 2070, 2071, 2072, 2074, + 2076, 2073, 2078, 2080, 2077, 2076, 2083, 2075, 2085, 2082, + 2089, 2086, 2091, 2087, 2078, 2084, 2079, 2082, 2090, 2083, + 2087, 2091, 2080, 2086, 2093, 0, 2095, 2088, 2096, 2094, + 2080, 0, 2089, 2083, 2085, 2085, 2082, 2089, 2086, 2091, + + 2087, 2092, 0, 2090, 2094, 2090, 2097, 2098, 2099, 2092, + 0, 2093, 2095, 2095, 2096, 2096, 2094, 2099, 2102, 2101, + 2092, 2103, 2101, 2105, 2097, 2104, 2106, 2103, 2092, 2098, + 2104, 0, 2107, 2097, 2098, 2099, 2092, 2101, 2105, 2109, + 2110, 2111, 2113, 2102, 2106, 2102, 2101, 2107, 2103, 2101, + 2105, 2114, 2115, 2106, 2109, 2116, 2113, 2104, 2114, 2107, + 2119, 0, 2110, 2111, 2117, 2118, 2109, 2110, 2111, 2113, + 2115, 2119, 2121, 2117, 2118, 2120, 2122, 2120, 2114, 2115, + 2125, 2126, 2116, 2123, 2128, 2121, 2127, 2119, 2122, 0, + 2129, 2117, 2118, 2127, 0, 2125, 2126, 2130, 2135, 2121, + + 2136, 2133, 2120, 2122, 2136, 2123, 2128, 2125, 2126, 2137, + 2123, 2128, 2129, 2127, 2133, 2130, 2139, 2129, 2139, 2135, + 2138, 2137, 2133, 2141, 2130, 2135, 2140, 2136, 2133, 2138, + 2142, 2143, 2144, 2145, 0, 2147, 2137, 2148, 2149, 2146, + 2144, 2133, 2152, 2139, 2140, 2148, 2150, 2138, 2142, 2147, + 2141, 2150, 2153, 2140, 2154, 2159, 2145, 2142, 2143, 2144, + 2145, 2146, 2147, 2151, 2148, 2156, 2146, 2155, 2151, 2166, + 2149, 2160, 2156, 2150, 2152, 2161, 2162, 0, 2154, 2163, + 2169, 2154, 2159, 0, 2153, 2160, 2155, 2167, 2170, 2164, + 2165, 0, 2156, 2161, 2155, 2151, 2160, 2160, 2160, 2165, + + 2168, 2166, 2161, 2162, 2164, 2163, 2163, 2169, 2171, 2167, + 2170, 2173, 2160, 0, 2167, 2170, 2164, 2165, 2174, 2175, + 2178, 2176, 2178, 2160, 0, 2174, 2168, 2168, 2176, 2179, + 2182, 2180, 2181, 0, 2173, 2180, 2188, 0, 2173, 2186, + 2171, 2183, 2175, 2184, 2181, 2174, 2175, 2178, 2176, 2189, + 2183, 2179, 2182, 2185, 2184, 2199, 2179, 2182, 2180, 2181, + 2185, 2186, 2187, 2188, 2191, 2190, 2186, 2187, 2183, 2193, + 2184, 2195, 2189, 2192, 2192, 2194, 2189, 2190, 2193, 2195, + 2185, 2196, 2199, 2197, 2198, 2201, 2191, 2202, 2207, 2187, + 2194, 2191, 2190, 2198, 2207, 2202, 2193, 2197, 2195, 2203, + + 2192, 2204, 2194, 2196, 2201, 2204, 2205, 2203, 2196, 2205, + 2197, 2198, 2201, 2206, 2202, 2207, 2208, 2209, 2211, 2214, + 2213, 2206, 0, 2209, 2216, 2217, 2203, 2215, 2204, 2219, + 2211, 2208, 2214, 2205, 2213, 2218, 2220, 0, 2223, 2224, + 2206, 2226, 2221, 2208, 2209, 2211, 2214, 2213, 2215, 2216, + 2220, 2216, 2217, 2219, 2215, 2221, 2219, 2218, 2222, 2225, + 2228, 2227, 2218, 2220, 2223, 2223, 2224, 2229, 2226, 2221, + 2231, 2232, 2222, 2227, 2228, 2236, 2237, 2230, 2233, 2235, + 2230, 2238, 2236, 2237, 2225, 2222, 2225, 2228, 2227, 2239, + 2240, 2241, 2242, 2229, 2229, 2230, 2238, 2231, 2232, 2241, + + 2233, 2235, 2236, 2237, 2230, 2233, 2235, 2230, 2238, 2244, + 2245, 2243, 2246, 2247, 2248, 2249, 2239, 2240, 2241, 2242, + 2243, 2251, 2245, 2256, 2255, 2250, 2258, 2253, 2249, 2263, + 0, 2251, 2252, 2261, 2246, 2253, 2244, 2245, 2243, 2246, + 2247, 2248, 2249, 2250, 2260, 2252, 2255, 2257, 2251, 2259, + 2256, 2255, 2250, 2258, 2253, 2257, 2263, 2261, 2259, 2252, + 2261, 0, 2262, 2265, 2264, 2260, 2268, 2266, 2270, 2276, + 2274, 2260, 2264, 2269, 2257, 2265, 2259, 2262, 2268, 2272, + 2273, 2269, 2274, 2278, 2273, 2275, 2272, 2279, 2262, 2262, + 2265, 2264, 2266, 2268, 2266, 2270, 2276, 2274, 2282, 2279, + + 2269, 2277, 2284, 2280, 2262, 2278, 2272, 2273, 2275, 2277, + 2278, 2283, 2275, 2285, 2279, 2280, 2288, 2288, 2283, 2289, + 2292, 2290, 2284, 2286, 2287, 2282, 2285, 2291, 2277, 2284, + 2280, 2294, 2286, 2287, 2295, 2292, 0, 2292, 2283, 2290, + 2285, 2302, 2302, 2288, 2292, 2289, 2289, 2292, 2290, 2295, + 2286, 2287, 2291, 2296, 2291, 2297, 2298, 2299, 2298, 2300, + 2306, 2295, 2292, 2294, 2292, 2300, 2301, 2304, 2302, 2305, + 2307, 2299, 2306, 2308, 0, 2296, 2311, 2297, 0, 2309, + 2296, 0, 2297, 2298, 2299, 2309, 2300, 2306, 2301, 2304, + 2312, 2305, 2310, 2301, 2304, 2314, 2305, 2314, 2313, 2315, + + 2316, 2322, 2307, 2317, 2310, 2308, 2309, 2323, 2311, 2326, + 2318, 2319, 2312, 2315, 2320, 2330, 2326, 2312, 2321, 2310, + 2313, 2317, 2314, 2324, 2316, 2313, 2315, 2316, 2318, 2319, + 2317, 2321, 2320, 2322, 2328, 2332, 2326, 2318, 2319, 2323, + 2329, 2320, 0, 2331, 0, 2321, 2324, 2330, 2333, 2334, + 2324, 2331, 2328, 2332, 2337, 2339, 2335, 2338, 2335, 2341, + 2340, 2328, 2332, 2335, 2343, 2337, 2329, 2329, 2338, 2331, + 2331, 2334, 2340, 2348, 2333, 2333, 2334, 2341, 2331, 2343, + 2345, 2337, 2339, 2335, 2338, 2335, 2341, 2340, 2344, 2346, + 2349, 2343, 2345, 2351, 2350, 2352, 2355, 2348, 2353, 2344, + + 2348, 2350, 2356, 2358, 2346, 2357, 2359, 2345, 2351, 2361, + 2360, 0, 2349, 2363, 0, 2344, 2346, 2349, 2362, 2364, + 2351, 2350, 2352, 2355, 2353, 2353, 2356, 2357, 2360, 2356, + 2365, 2362, 2357, 2366, 2364, 2358, 2361, 2360, 2359, 2363, + 2363, 2366, 2367, 2365, 2368, 2362, 2364, 2372, 2369, 0, + 2370, 0, 2374, 0, 2373, 2376, 0, 2365, 2375, 2378, + 2366, 2369, 2380, 0, 2379, 2377, 2378, 2390, 2367, 2367, + 2372, 0, 2370, 2376, 2372, 2369, 2368, 2370, 2373, 2374, + 2375, 2373, 2376, 2377, 2381, 2375, 2378, 2379, 2383, 2380, + 2384, 2379, 2377, 2385, 2386, 2387, 2388, 2384, 2381, 2390, + + 2385, 2393, 2389, 2388, 2391, 2392, 0, 2386, 2394, 2393, + 2383, 2381, 2395, 2396, 2392, 2383, 2394, 2384, 2387, 2396, + 2385, 2386, 2387, 2388, 2389, 2391, 2398, 2399, 2393, 2389, + 2400, 2391, 2392, 2401, 2395, 2394, 2402, 2403, 2399, 2395, + 2396, 2398, 2405, 2407, 0, 2408, 0, 2410, 2410, 2409, + 2415, 2411, 2400, 2398, 2399, 2402, 2407, 2400, 2414, 2417, + 2405, 2418, 2403, 2402, 2403, 2401, 2421, 2425, 2416, 2405, + 2407, 2408, 2408, 2409, 2410, 2423, 2409, 2411, 2411, 2418, + 2425, 2414, 2415, 2416, 2423, 2414, 2417, 2426, 2418, 2429, + 2430, 2430, 2434, 2421, 2425, 2416, 2432, 2431, 2426, 2433, + + 2436, 2438, 2423, 2431, 2439, 2441, 0, 2442, 0, 2440, + 2441, 2429, 2451, 2445, 2426, 2448, 2429, 2430, 2432, 2434, + 2440, 2433, 2455, 2432, 2431, 2461, 2433, 2436, 2450, 2442, + 2439, 2439, 2441, 2438, 2442, 2444, 2440, 2445, 2446, 2447, + 2445, 2452, 2448, 2444, 2451, 2453, 2450, 2456, 2457, 2455, + 2452, 2458, 2461, 2446, 2447, 2450, 2457, 2453, 2460, 2462, + 2458, 2463, 2444, 2467, 2464, 2446, 2447, 2465, 2452, 0, + 2463, 2456, 2453, 2466, 2456, 2457, 2467, 2470, 2458, 2468, + 2469, 2462, 2464, 2473, 2460, 2460, 2462, 2474, 2463, 2465, + 2467, 2464, 2468, 2475, 2465, 2469, 2471, 2476, 2466, 2470, + + 2466, 2472, 2477, 2471, 2470, 2473, 2468, 2469, 2472, 2479, + 2473, 2478, 2480, 0, 2474, 2481, 0, 2482, 2479, 0, + 2475, 2487, 2483, 2471, 2476, 2484, 2478, 2487, 2472, 2477, + 2485, 2489, 2484, 2486, 2480, 2488, 2479, 2483, 2478, 2480, + 2486, 2481, 2481, 2482, 2482, 2485, 2488, 2490, 2487, 2483, + 2491, 2492, 2484, 2493, 2501, 2490, 2494, 2485, 2489, 2495, + 2486, 2496, 2488, 2497, 2502, 2498, 2499, 0, 2500, 2493, + 2497, 2494, 0, 2499, 2490, 2500, 2496, 2491, 2492, 2495, + 2493, 2501, 2502, 2494, 2503, 2503, 2495, 2498, 2496, 2504, + 2497, 2502, 2498, 2499, 2505, 2500, 2504, 2506, 2508, 2507, + + 2506, 0, 2509, 2508, 2510, 0, 2511, 0, 2505, 2518, + 2512, 2503, 2507, 2518, 2516, 2517, 2504, 2521, 2513, 2510, + 2517, 2505, 2514, 2516, 2506, 2508, 2507, 2509, 2512, 2509, + 2513, 2510, 2511, 2511, 2514, 2519, 2518, 2512, 2520, 2521, + 2523, 2516, 2517, 2524, 2521, 2513, 2522, 0, 2525, 2514, + 2527, 2520, 2529, 2531, 2530, 0, 2532, 2536, 0, 2519, + 2533, 0, 2519, 2530, 2532, 2520, 2536, 2523, 2522, 2531, + 2524, 0, 2533, 2522, 2525, 2525, 2527, 2527, 2529, 2529, + 2531, 2530, 2535, 2532, 2536, 2537, 2538, 2533, 2539, 2535, + 2537, 2540, 2541, 2538, 2542, 2543, 2544, 2547, 2540, 2545, + + 2551, 2542, 2549, 2548, 2543, 2544, 2539, 2549, 2554, 2535, + 2550, 2555, 2537, 2538, 2553, 2539, 2548, 2541, 2540, 2541, + 2555, 2542, 2543, 2544, 2547, 2545, 2545, 2551, 2550, 2549, + 2548, 2556, 2553, 2557, 2558, 2554, 2559, 2550, 2555, 2560, + 2556, 2553, 2562, 2561, 2563, 2559, 2558, 2564, 2560, 2565, + 2562, 2567, 2568, 2557, 2561, 2566, 2565, 2569, 2556, 2570, + 2557, 2558, 0, 2559, 2566, 2575, 2560, 2573, 2571, 2562, + 2561, 2563, 2567, 2572, 2564, 2573, 2565, 2571, 2567, 2568, + 2574, 2576, 2566, 2577, 2569, 2572, 2580, 2575, 2576, 2578, + 2577, 2570, 2575, 2574, 2573, 2571, 2579, 2581, 2582, 2586, + + 2572, 2584, 0, 2588, 2587, 0, 0, 2574, 2576, 2584, + 2577, 2578, 2587, 2580, 2590, 2591, 2578, 2586, 2588, 2598, + 2589, 2579, 2581, 2579, 2581, 2582, 2586, 2589, 2584, 2597, + 2588, 2587, 2592, 2596, 2601, 2593, 2590, 2591, 2599, 2592, + 2596, 2590, 2591, 2593, 2604, 2600, 2598, 2589, 2602, 2608, + 2599, 2603, 2609, 2597, 2600, 0, 2597, 2606, 2607, 2592, + 2596, 2601, 2593, 2603, 2602, 2599, 2609, 2604, 2611, 2606, + 2612, 2604, 2600, 2614, 2617, 2602, 2608, 2612, 2603, 2609, + 2611, 2607, 2613, 2616, 2606, 2607, 2619, 2621, 2618, 2613, + 2622, 2620, 2617, 0, 2624, 2611, 2626, 2612, 2616, 2620, + + 2614, 2617, 2623, 2626, 2625, 2624, 2627, 0, 2632, 2613, + 2616, 2618, 2622, 2619, 2621, 2618, 2634, 2622, 2620, 2625, + 2623, 2624, 2633, 2626, 2635, 2636, 2637, 2633, 2638, 2623, + 2639, 2625, 2640, 2627, 2632, 2632, 2644, 2652, 2635, 2636, + 2641, 0, 2642, 2634, 2637, 2652, 2638, 2641, 2639, 2633, + 2647, 2635, 2636, 2637, 2642, 2638, 2648, 2639, 2649, 2640, + 2650, 2651, 2654, 2644, 2652, 0, 2653, 2641, 2657, 2642, + 2658, 2649, 2647, 2660, 2656, 2661, 2662, 2647, 2648, 2659, + 2651, 2654, 2650, 2648, 2653, 2649, 2656, 2650, 2651, 2654, + 2657, 2659, 2658, 2653, 2664, 2657, 2663, 2658, 2662, 2665, + + 2660, 2656, 2661, 2662, 2663, 2666, 2659, 2667, 2668, 2669, + 2671, 2670, 2672, 0, 0, 2674, 2667, 2668, 2673, 2665, + 2675, 2664, 2679, 2663, 2672, 2681, 2665, 2666, 2680, 2678, + 2681, 2682, 2666, 2670, 2667, 2668, 2671, 2671, 2670, 2672, + 2673, 2669, 2674, 2678, 2683, 2673, 2684, 2675, 2685, 2679, + 2687, 2686, 2680, 2682, 2692, 2680, 2678, 2681, 2682, 2684, + 2693, 2688, 2690, 2689, 2691, 0, 2683, 2695, 0, 2699, + 2691, 2683, 2687, 2684, 2686, 2689, 2694, 2687, 2686, 2688, + 2685, 2690, 2695, 2698, 2697, 2701, 2692, 2703, 2688, 2690, + 2689, 2691, 2693, 2699, 2695, 2704, 2699, 2705, 2694, 2706, + + 2701, 2707, 2708, 2694, 2697, 2698, 2705, 2709, 2714, 2703, + 2698, 2697, 2701, 2706, 2703, 0, 2713, 2704, 2710, 2707, + 2708, 2715, 2704, 2718, 2705, 2713, 2706, 2720, 2707, 2708, + 2719, 2718, 2721, 2709, 2709, 2720, 2710, 2719, 2722, 2723, + 2714, 2725, 2715, 2713, 2724, 2710, 2726, 2723, 2715, 2729, + 2718, 2732, 2727, 2725, 2720, 2733, 2731, 2719, 2722, 2721, + 2727, 2729, 2724, 2731, 2735, 2722, 2723, 2734, 2725, 2734, + 2736, 2724, 2737, 2726, 2732, 2738, 2729, 2739, 2732, 2727, + 2746, 2737, 2733, 2731, 2740, 0, 2741, 2743, 0, 0, + 2754, 2747, 2744, 2748, 2734, 0, 2735, 2749, 2755, 2737, + + 2752, 2757, 2736, 2740, 2739, 2743, 2744, 2738, 2741, 2750, + 2749, 2740, 2746, 2741, 2743, 2747, 2748, 2754, 2747, 2744, + 2748, 2750, 2753, 2758, 2749, 2755, 2752, 2752, 2757, 2759, + 2761, 2753, 2763, 2764, 2769, 2766, 2750, 2765, 2767, 2763, + 2766, 2769, 2770, 2772, 2773, 0, 2758, 2778, 2774, 2753, + 2758, 2759, 2765, 2767, 2782, 2764, 2759, 2761, 0, 2763, + 2764, 2769, 2775, 2776, 2765, 2767, 2783, 2766, 2770, 2770, + 2772, 2773, 2774, 2779, 2778, 2774, 2775, 2776, 2781, 2784, + 2786, 2782, 2779, 2785, 2787, 2781, 2789, 2788, 2790, 2775, + 2776, 2791, 2783, 2783, 2792, 2785, 2788, 2795, 2787, 2789, + + 2779, 2796, 2803, 2798, 2802, 2781, 2784, 2786, 2798, 2806, + 2785, 2787, 2799, 2789, 2788, 2800, 2799, 2792, 2791, 2801, + 2790, 2792, 2800, 2796, 2805, 2802, 2801, 2809, 2796, 2795, + 2804, 2802, 2804, 2811, 2803, 2798, 2806, 2812, 2814, 2799, + 2814, 0, 2800, 2815, 0, 2816, 2801, 2805, 0, 2809, + 2821, 2805, 2811, 2818, 2809, 2820, 2822, 2804, 2817, 2817, + 2811, 2812, 2820, 2821, 2812, 2814, 2823, 2815, 2817, 2819, + 2815, 2816, 2816, 2824, 2825, 2818, 2826, 2821, 2819, 2823, + 2818, 2824, 2820, 2822, 2826, 2817, 2817, 2825, 2827, 2828, + 2829, 2830, 2831, 2823, 2828, 2829, 2819, 2824, 2832, 2830, + + 2824, 2825, 2833, 2826, 2834, 0, 2835, 2827, 2824, 2836, + 2838, 0, 2837, 2839, 2839, 2827, 2840, 2838, 2830, 2831, + 2836, 2828, 2829, 2842, 2832, 2832, 2843, 2841, 2833, 2833, + 2834, 2834, 2835, 2835, 2837, 2841, 2836, 2838, 2840, 2837, + 2839, 2844, 2845, 2840, 2843, 2842, 2847, 2848, 2844, 2845, + 2842, 2849, 2850, 2843, 2841, 2852, 2853, 2854, 2855, 2857, + 0, 2850, 0, 2858, 2864, 0, 0, 2870, 2844, 2845, + 2859, 2860, 2870, 2847, 2848, 2849, 2853, 2861, 2849, 2850, + 2855, 2858, 2852, 2853, 2854, 2855, 2857, 2863, 2859, 2860, + 2858, 2864, 2865, 2866, 2867, 2861, 2863, 2859, 2860, 2870, + + 2868, 2869, 2867, 2871, 2861, 2872, 2873, 2878, 2880, 2877, + 2895, 2866, 2881, 2869, 2863, 2865, 2868, 2871, 2885, 2865, + 2866, 2867, 2882, 2872, 2882, 2881, 2886, 2868, 2869, 2873, + 2871, 2877, 2872, 2873, 2878, 2880, 2877, 2883, 2891, 2881, + 2887, 2890, 2895, 2890, 2886, 2885, 2883, 2894, 2892, 2882, + 2901, 2899, 2904, 2886, 2894, 2887, 2897, 2899, 2902, 2906, + 2891, 2903, 2907, 0, 2883, 2891, 2892, 2887, 2890, 2908, + 2904, 2897, 2901, 2911, 2894, 2892, 2907, 2901, 2899, 2904, + 2902, 2906, 2908, 2897, 2912, 2902, 2906, 2903, 2903, 2907, + 2909, 2913, 2914, 2909, 2915, 2916, 2908, 0, 2919, 0, + + 2911, 2915, 2917, 2916, 2920, 2921, 2922, 0, 0, 2925, + 2914, 2912, 2926, 2924, 2923, 2925, 2909, 2909, 2913, 2914, + 2909, 2915, 2916, 2923, 2917, 2928, 2920, 2921, 2924, 2917, + 2919, 2920, 2921, 2922, 2926, 2927, 2925, 2930, 2932, 2926, + 2924, 2923, 0, 2929, 2927, 2929, 2933, 2934, 0, 2935, + 2936, 2937, 2940, 2942, 2938, 0, 0, 2928, 2936, 2940, + 2946, 2932, 2927, 2937, 2930, 2932, 2938, 2952, 2933, 2934, + 2929, 2944, 2945, 2933, 2934, 2935, 2935, 2936, 2937, 2940, + 2942, 2938, 2947, 2946, 2948, 2944, 2945, 2946, 2949, 2950, + 2951, 2956, 2953, 2952, 2952, 2948, 2949, 2954, 2944, 2945, + + 2947, 2955, 2955, 2960, 2961, 2957, 2954, 2965, 2950, 2947, + 2953, 2948, 2951, 2957, 2963, 2949, 2950, 2951, 2956, 2953, + 2963, 2969, 2967, 2971, 2954, 2968, 2970, 2973, 2955, 2975, + 2960, 2961, 2957, 2967, 2965, 2974, 2968, 2970, 2976, 2980, + 2977, 2963, 2974, 2969, 2977, 2971, 2983, 2975, 2969, 2967, + 2971, 2978, 2968, 2970, 2973, 2981, 2975, 2986, 2987, 2978, + 2991, 2982, 2974, 2999, 2986, 2980, 2980, 2977, 2981, 2982, + 2976, 2988, 2990, 2983, 2992, 2995, 2994, 2990, 2978, 2993, + 2996, 3000, 2981, 2994, 2986, 2998, 2997, 2991, 2982, 3000, + 2987, 2993, 2998, 2988, 2995, 2999, 2996, 3003, 2988, 2990, + + 3001, 2992, 2995, 2994, 2997, 3004, 2993, 2996, 3000, 3002, + 3005, 3006, 2998, 2997, 3007, 3001, 3002, 3004, 3011, 3012, + 3013, 2995, 3014, 3015, 3003, 3016, 3012, 3001, 3020, 3019, + 0, 3021, 3004, 3011, 3005, 3006, 3002, 3005, 3006, 3017, + 3007, 3007, 3023, 3025, 3031, 3011, 3012, 3015, 3017, 3014, + 3015, 3019, 3013, 3021, 3022, 3020, 3019, 3016, 3021, 3024, + 3024, 3027, 3022, 3028, 3030, 3029, 3017, 3029, 3033, 3024, + 3025, 3031, 3028, 3036, 3023, 3032, 3027, 3037, 3030, 3033, + 3034, 3022, 3046, 3032, 3038, 3041, 3024, 3024, 3027, 3042, + 3028, 3030, 3029, 3040, 3043, 3033, 3039, 3047, 3034, 3044, + + 3036, 3049, 3032, 0, 3037, 3054, 3038, 3034, 3060, 3039, + 3054, 3038, 3041, 3044, 3046, 3040, 3042, 3045, 3045, 3047, + 3040, 3043, 3052, 3039, 3047, 3056, 3044, 3058, 3049, 3055, + 3052, 3057, 3054, 3056, 3055, 3060, 3057, 3061, 3061, 3062, + 3066, 3064, 3063, 3065, 3045, 3067, 3069, 3062, 3064, 3052, + 3070, 3081, 3056, 3058, 3058, 3063, 3055, 3070, 3057, 3072, + 3076, 3065, 3078, 3071, 3061, 3082, 3062, 3066, 3064, 3063, + 3065, 3071, 3067, 3075, 3079, 3080, 3083, 3070, 3069, 3075, + 3082, 3072, 3084, 3081, 3085, 3087, 3072, 3076, 3080, 3078, + 3071, 3088, 3082, 3091, 0, 3083, 3079, 3089, 3090, 3092, + + 3075, 3079, 3080, 3083, 3089, 3090, 3085, 3093, 3087, 3084, + 3095, 3085, 3087, 3088, 3092, 3091, 3097, 3104, 3088, 3096, + 3091, 3100, 3101, 3097, 3089, 3090, 3092, 3096, 3093, 3095, + 3100, 3098, 3106, 3101, 3093, 3102, 3102, 3095, 3098, 3104, + 3108, 3103, 3109, 3097, 3104, 3102, 3096, 3103, 3100, 3101, + 3107, 3112, 3113, 3111, 3106, 3116, 3117, 3107, 3098, 3106, + 3111, 3118, 3102, 3102, 3109, 3122, 3113, 3123, 3103, 3109, + 3125, 3127, 3108, 3124, 3130, 3112, 3132, 3107, 3112, 3113, + 3111, 3124, 3116, 3117, 3118, 3128, 3128, 0, 3118, 3123, + 3129, 3129, 3122, 3134, 3123, 3131, 3131, 3125, 3127, 3132, + + 3124, 3130, 3136, 3132, 3135, 3138, 3141, 3137, 3143, 3144, + 3142, 0, 0, 3141, 3128, 3134, 3137, 3142, 3138, 3129, + 3134, 3145, 3135, 3148, 3131, 3148, 3149, 3151, 3145, 3136, + 3143, 3135, 3138, 3141, 3137, 3143, 3144, 3142, 3150, 3152, + 3154, 3155, 3156, 3159, 3157, 3151, 3149, 3158, 3145, 3154, + 3148, 3152, 3160, 3149, 3151, 3162, 3165, 3173, 3172, 3164, + 3161, 3150, 3157, 3155, 3164, 3150, 3152, 3154, 3155, 3156, + 3159, 3157, 3161, 3158, 3158, 3163, 3169, 3162, 3163, 3160, + 3167, 3166, 3162, 3166, 3168, 3172, 3175, 3161, 3165, 3173, + 3168, 3164, 3167, 3163, 3170, 3176, 3171, 3174, 3169, 3181, + + 3177, 0, 3163, 3169, 3171, 3163, 3178, 3167, 3166, 3183, + 3187, 3168, 3177, 3175, 3184, 3188, 3170, 3189, 3174, 3190, + 3192, 3170, 3176, 3171, 3174, 3193, 3181, 3177, 3178, 3194, + 3195, 3198, 3184, 3178, 3196, 3196, 3183, 3187, 3199, 3201, + 3204, 3184, 3188, 3202, 3189, 3200, 3190, 3192, 3206, 3198, + 3202, 3205, 3193, 3209, 3201, 3208, 3194, 3195, 3198, 3205, + 3210, 3196, 3207, 3200, 3211, 3199, 3201, 3204, 3209, 3208, + 3202, 3213, 3200, 3214, 3207, 3206, 3217, 3218, 3205, 3220, + 3209, 3221, 3208, 3213, 3224, 3217, 3210, 3210, 3223, 3207, + 3221, 3211, 3219, 3219, 3225, 3226, 3232, 0, 3213, 3231, + + 3214, 3218, 3227, 3217, 3218, 3220, 3220, 3225, 3221, 3228, + 3227, 3235, 3223, 3229, 3232, 3223, 3224, 3226, 3228, 3219, + 3231, 3225, 3226, 3232, 3229, 3236, 3231, 3239, 3239, 3227, + 3251, 3248, 3249, 3252, 3235, 3253, 3228, 3236, 3235, 3255, + 3229, 3257, 3259, 3258, 3251, 3257, 0, 3264, 3260, 3266, + 3262, 3264, 3236, 3248, 3239, 3260, 3249, 3251, 3248, 3249, + 3252, 3258, 3253, 3262, 3265, 3259, 3255, 3267, 3257, 3259, + 3258, 3266, 3268, 3270, 3264, 3260, 3266, 3262, 3269, 3272, + 3265, 3271, 3273, 3274, 3268, 3274, 3275, 3270, 3272, 3271, + 0, 3265, 3267, 3273, 3267, 3278, 3276, 3277, 3275, 3268, + + 3270, 3279, 3281, 3280, 3269, 3269, 3272, 3279, 3271, 3273, + 3274, 3282, 3277, 3275, 3276, 3283, 3289, 3278, 3282, 3287, + 3288, 3290, 3278, 3276, 3277, 3280, 3291, 3288, 3279, 3281, + 3280, 3292, 3287, 3293, 3294, 3297, 3295, 3283, 3282, 3290, + 0, 0, 3283, 3289, 3295, 3296, 3287, 3288, 3290, 3298, + 3304, 3299, 3296, 3291, 3300, 3301, 3300, 3292, 3292, 3297, + 3293, 3294, 3297, 3295, 3302, 3304, 3303, 3301, 3305, 0, + 3306, 3298, 3296, 3299, 3308, 3310, 3298, 3304, 3299, 3303, + 3307, 3300, 3301, 3312, 3313, 3317, 3311, 3307, 3315, 3320, + 3305, 3312, 3321, 3303, 3317, 3305, 3302, 3306, 3311, 3324, + + 3315, 3308, 3310, 3322, 3325, 3329, 3323, 3307, 3326, 0, + 3312, 3313, 3317, 3311, 3323, 3315, 3320, 3328, 3321, 3321, + 3327, 3326, 3322, 3330, 3332, 3328, 3338, 3329, 3344, 3339, + 3322, 3324, 3329, 3323, 3327, 3326, 3325, 3335, 3336, 3338, + 3342, 3341, 3344, 3335, 3328, 3336, 3343, 3327, 3341, 3345, + 3330, 3332, 3339, 3338, 3343, 3344, 3339, 3347, 3346, 3348, + 3349, 3355, 3342, 3345, 3335, 3336, 3346, 3342, 3341, 3353, + 3352, 3356, 3354, 3343, 3357, 3358, 3345, 3352, 3353, 3347, + 3354, 3348, 3359, 3360, 3347, 3346, 3348, 3349, 3355, 3361, + 3363, 3365, 3362, 3356, 3367, 3374, 3353, 3352, 3356, 3354, + + 3362, 3358, 3358, 3366, 3359, 3360, 3357, 3370, 3369, 3359, + 3360, 3361, 3371, 3380, 0, 3370, 3361, 3378, 3365, 3362, + 3372, 3367, 3363, 3398, 3376, 3366, 3401, 3374, 3372, 3373, + 3366, 3369, 3371, 3375, 3370, 3369, 0, 3373, 3376, 3371, + 3380, 3375, 3382, 3378, 3378, 3381, 3383, 3372, 3381, 3384, + 3398, 3376, 3385, 3401, 3383, 3386, 3373, 3384, 3387, 3392, + 3375, 3390, 3390, 3381, 3382, 3391, 3385, 3392, 3393, 3382, + 3388, 3395, 3381, 3383, 3394, 3381, 3384, 0, 0, 3385, + 3387, 3386, 3386, 3396, 3388, 3387, 3392, 3399, 3390, 3405, + 3400, 3391, 3391, 3395, 3393, 3393, 3397, 3388, 3395, 3402, + + 3394, 3394, 3403, 3396, 3397, 3404, 3408, 3417, 0, 3399, + 3396, 3405, 3406, 3404, 3399, 3400, 3405, 3400, 3411, 3402, + 3406, 3412, 3403, 3397, 3415, 0, 3402, 3409, 3413, 3403, + 3414, 3421, 3404, 3408, 3417, 3409, 3413, 3420, 3414, 3406, + 3411, 3418, 3422, 3412, 3419, 3411, 3424, 3425, 3412, 3418, + 3415, 3415, 3419, 3428, 3409, 3413, 3426, 3414, 3421, 3431, + 3434, 3435, 3422, 3420, 3420, 0, 0, 0, 3418, 3422, + 3432, 3419, 0, 3424, 3425, 3428, 3426, 3433, 3432, 0, + 3428, 3431, 0, 3426, 0, 3433, 3431, 3434, 3435, 0, + 0, 0, 0, 0, 0, 0, 0, 3432, 0, 0, + + 0, 0, 0, 0, 3433, 3439, 3439, 3439, 3439, 3439, + 3439, 3439, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3441, + 3441, 3441, 3441, 3441, 3441, 3441, 3442, 3442, 3442, 3442, + 3442, 3442, 3442, 3443, 3443, 3443, 3443, 3443, 3443, 3443, + 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3445, 3445, 3445, + 3445, 3445, 3445, 3445, 3447, 3447, 0, 3447, 3447, 3447, + 3447, 3448, 3448, 0, 0, 0, 3448, 3448, 3449, 3449, + 0, 0, 3449, 0, 3449, 3450, 0, 0, 0, 0, + 0, 3450, 3451, 3451, 0, 0, 0, 3451, 3451, 3452, + 0, 0, 0, 0, 0, 3452, 3453, 3453, 0, 3453, + + 3453, 3453, 3453, 3454, 0, 0, 0, 0, 0, 3454, + 3455, 3455, 0, 0, 0, 3455, 3455, 3456, 3456, 0, + 3456, 3456, 3456, 3456, 3438, 3438, 3438, 3438, 3438, 3438, + 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, + 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, + 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, + 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, + 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, + 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, + 3438 + + } ; + +static yy_state_type yy_last_accepting_state; +static char *yy_last_accepting_cpos; + +extern int yy_flex_debug; +int yy_flex_debug = 0; + +/* The intent behind this definition is that it'll catch + * any uses of REJECT which flex missed. + */ +#define REJECT reject_used_but_not_detected +static int yy_more_flag = 0; +static int yy_more_len = 0; +#define yymore() ((yy_more_flag) = 1) +#define YY_MORE_ADJ (yy_more_len) +#define YY_RESTORE_YY_MORE_OFFSET +char *yytext; +#line 1 "util/configlexer.lex" +#line 2 "util/configlexer.lex" +/* + * configlexer.lex - lexical analyzer for unbound config file + * + * Copyright (c) 2001-2006, NLnet Labs. All rights reserved + * + * See LICENSE for the license. + * + */ + +/* because flex keeps having sign-unsigned compare problems that are unfixed*/ +#if defined(__clang__)||(defined(__GNUC__)&&((__GNUC__ >4)||(defined(__GNUC_MINOR__)&&(__GNUC__ ==4)&&(__GNUC_MINOR__ >=2)))) +#pragma GCC diagnostic ignored "-Wsign-compare" +#endif + +#include +#include +#ifdef HAVE_GLOB_H +# include +#endif + +#include "util/config_file.h" +#include "util/configparser.h" +void ub_c_error(const char *message); + +#if 0 +#define LEXOUT(s) printf s /* used ONLY when debugging */ +#else +#define LEXOUT(s) +#endif + +/** avoid warning in about fwrite return value */ +#define ECHO ub_c_error_msg("syntax error at text: %s", yytext) + +/** A parser variable, this is a statement in the config file which is + * of the form variable: value1 value2 ... nargs is the number of values. */ +#define YDVAR(nargs, var) \ + num_args=(nargs); \ + LEXOUT(("v(%s%d) ", yytext, num_args)); \ + if(num_args > 0) { BEGIN(val); } \ + return (var); + +struct inc_state { + char* filename; + int line; + YY_BUFFER_STATE buffer; + struct inc_state* next; + int inc_toplevel; +}; +static struct inc_state* config_include_stack = NULL; +static int inc_depth = 0; +static int inc_prev = 0; +static int num_args = 0; +static int inc_toplevel = 0; + +void init_cfg_parse(void) +{ + config_include_stack = NULL; + inc_depth = 0; + inc_prev = 0; + num_args = 0; + inc_toplevel = 0; +} + +static void config_start_include(const char* filename, int toplevel) +{ + FILE *input; + struct inc_state* s; + char* nm; + if(inc_depth+1 > 100000) { + ub_c_error_msg("too many include files"); + return; + } + if(*filename == '\0') { + ub_c_error_msg("empty include file name"); + return; + } + s = (struct inc_state*)malloc(sizeof(*s)); + if(!s) { + ub_c_error_msg("include %s: malloc failure", filename); + return; + } + if(cfg_parser->chroot && strncmp(filename, cfg_parser->chroot, + strlen(cfg_parser->chroot)) == 0) { + filename += strlen(cfg_parser->chroot); + } + nm = strdup(filename); + if(!nm) { + ub_c_error_msg("include %s: strdup failure", filename); + free(s); + return; + } + input = fopen(filename, "r"); + if(!input) { + ub_c_error_msg("cannot open include file '%s': %s", + filename, strerror(errno)); + free(s); + free(nm); + return; + } + LEXOUT(("switch_to_include_file(%s)\n", filename)); + inc_depth++; + s->filename = cfg_parser->filename; + s->line = cfg_parser->line; + s->buffer = YY_CURRENT_BUFFER; + s->inc_toplevel = inc_toplevel; + s->next = config_include_stack; + config_include_stack = s; + cfg_parser->filename = nm; + cfg_parser->line = 1; + inc_toplevel = toplevel; + yy_switch_to_buffer(yy_create_buffer(input,YY_BUF_SIZE)); +} + +static void config_start_include_glob(const char* filename, int toplevel) +{ + + /* check for wildcards */ +#ifdef HAVE_GLOB + glob_t g; + int i, r, flags; + if(!(!strchr(filename, '*') && !strchr(filename, '?') && !strchr(filename, '[') && + !strchr(filename, '{') && !strchr(filename, '~'))) { + flags = 0 +#ifdef GLOB_ERR + | GLOB_ERR +#endif + /* do not set GLOB_NOSORT so the results are sorted + and in a predictable order. */ +#ifdef GLOB_BRACE + | GLOB_BRACE +#endif +#ifdef GLOB_TILDE + | GLOB_TILDE +#endif + ; + memset(&g, 0, sizeof(g)); + if(cfg_parser->chroot && strncmp(filename, cfg_parser->chroot, + strlen(cfg_parser->chroot)) == 0) { + filename += strlen(cfg_parser->chroot); + } + r = glob(filename, flags, NULL, &g); + if(r) { + /* some error */ + globfree(&g); + if(r == GLOB_NOMATCH) + return; /* no matches for pattern */ + config_start_include(filename, toplevel); /* let original deal with it */ + return; + } + /* process files found, if any */ + for(i=(int)g.gl_pathc-1; i>=0; i--) { + config_start_include(g.gl_pathv[i], toplevel); + } + globfree(&g); + return; + } +#endif /* HAVE_GLOB */ + + config_start_include(filename, toplevel); +} + +static void config_end_include(void) +{ + struct inc_state* s = config_include_stack; + --inc_depth; + if(!s) return; + free(cfg_parser->filename); + cfg_parser->filename = s->filename; + cfg_parser->line = s->line; + yy_delete_buffer(YY_CURRENT_BUFFER); + yy_switch_to_buffer(s->buffer); + config_include_stack = s->next; + inc_toplevel = s->inc_toplevel; + free(s); +} + +#ifndef yy_set_bol /* compat definition, for flex 2.4.6 */ +#define yy_set_bol(at_bol) \ + { \ + if ( ! yy_current_buffer ) \ + yy_current_buffer = yy_create_buffer(yyin,YY_BUF_SIZE ); \ + yy_current_buffer->yy_ch_buf[0] = ((at_bol)?'\n':' '); \ + } +#endif + +#define YY_NO_INPUT 1 +#line 191 "util/configlexer.lex" +#ifndef YY_NO_UNPUT +#define YY_NO_UNPUT 1 +#endif +#ifndef YY_NO_INPUT +#define YY_NO_INPUT 1 +#endif + +#line 3965 "" + +#define INITIAL 0 +#define quotedstring 1 +#define singlequotedstr 2 +#define include 3 +#define include_quoted 4 +#define val 5 +#define include_toplevel 6 +#define include_toplevel_quoted 7 + +#ifndef YY_NO_UNISTD_H +/* Special case for "unistd.h", since it is non-ANSI. We include it way + * down here because we want the user's section 1 to have been scanned first. + * The user has a chance to override it with an option. + */ +#include +#endif + +#ifndef YY_EXTRA_TYPE +#define YY_EXTRA_TYPE void * +#endif + +static int yy_init_globals (void ); + +/* Accessor methods to globals. + These are made visible to non-reentrant scanners for convenience. */ + +int yylex_destroy (void ); + +int yyget_debug (void ); + +void yyset_debug (int debug_flag ); + +YY_EXTRA_TYPE yyget_extra (void ); + +void yyset_extra (YY_EXTRA_TYPE user_defined ); + +FILE *yyget_in (void ); + +void yyset_in (FILE * in_str ); + +FILE *yyget_out (void ); + +void yyset_out (FILE * out_str ); + +yy_size_t yyget_leng (void ); + +char *yyget_text (void ); + +int yyget_lineno (void ); + +void yyset_lineno (int line_number ); + +/* Macros after this point can all be overridden by user definitions in + * section 1. + */ + +#ifndef YY_SKIP_YYWRAP +#ifdef __cplusplus +extern "C" int yywrap (void ); +#else +extern int yywrap (void ); +#endif +#endif + +#ifndef yytext_ptr +static void yy_flex_strncpy (char *,yyconst char *,int ); +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (yyconst char * ); +#endif + +#ifndef YY_NO_INPUT + +#ifdef __cplusplus +static int yyinput (void ); +#else +static int input (void ); +#endif + +#endif + +/* Amount of stuff to slurp up with each read. */ +#ifndef YY_READ_BUF_SIZE +#define YY_READ_BUF_SIZE 8192 +#endif + +/* Copy whatever the last rule matched to the standard output. */ +#ifndef ECHO +/* This used to be an fputs(), but since the string might contain NUL's, + * we now use fwrite(). + */ +#define ECHO fwrite( yytext, yyleng, 1, yyout ) +#endif + +/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, + * is returned in "result". + */ +#ifndef YY_INPUT +#define YY_INPUT(buf,result,max_size) \ + if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ + { \ + int c = '*'; \ + yy_size_t n; \ + for ( n = 0; n < max_size && \ + (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ + buf[n] = (char) c; \ + if ( c == '\n' ) \ + buf[n++] = (char) c; \ + if ( c == EOF && ferror( yyin ) ) \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + result = n; \ + } \ + else \ + { \ + errno=0; \ + while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ + { \ + if( errno != EINTR) \ + { \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + break; \ + } \ + errno=0; \ + clearerr(yyin); \ + } \ + }\ +\ + +#endif + +/* No semi-colon after return; correct usage is to write "yyterminate();" - + * we don't want an extra ';' after the "return" because that will cause + * some compilers to complain about unreachable statements. + */ +#ifndef yyterminate +#define yyterminate() return YY_NULL +#endif + +/* Number of entries by which start-condition stack grows. */ +#ifndef YY_START_STACK_INCR +#define YY_START_STACK_INCR 25 +#endif + +/* Report a fatal error. */ +#ifndef YY_FATAL_ERROR +#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) +#endif + +/* end tables serialization structures and prototypes */ + +/* Default declaration of generated scanner - a define so the user can + * easily add parameters. + */ +#ifndef YY_DECL +#define YY_DECL_IS_OURS 1 + +extern int yylex (void); + +#define YY_DECL int yylex (void) +#endif /* !YY_DECL */ + +/* Code executed at the beginning of each rule, after yytext and yyleng + * have been set up. + */ +#ifndef YY_USER_ACTION +#define YY_USER_ACTION +#endif + +/* Code executed at the end of each rule. */ +#ifndef YY_BREAK +#define YY_BREAK break; +#endif + +#define YY_RULE_SETUP \ + YY_USER_ACTION + +/** The main scanner function which does all the work. + */ +YY_DECL +{ + register yy_state_type yy_current_state; + register char *yy_cp, *yy_bp; + register int yy_act; + +#line 211 "util/configlexer.lex" + +#line 4154 "" + + if ( !(yy_init) ) + { + (yy_init) = 1; + +#ifdef YY_USER_INIT + YY_USER_INIT; +#endif + + if ( ! (yy_start) ) + (yy_start) = 1; /* first start state */ + + if ( ! yyin ) + yyin = stdin; + + if ( ! yyout ) + yyout = stdout; + + if ( ! YY_CURRENT_BUFFER ) { + yyensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + yy_create_buffer(yyin,YY_BUF_SIZE ); + } + + yy_load_buffer_state( ); + } + + while ( 1 ) /* loops until end-of-file is reached */ + { + (yy_more_len) = 0; + if ( (yy_more_flag) ) + { + (yy_more_len) = (yy_c_buf_p) - (yytext_ptr); + (yy_more_flag) = 0; + } + yy_cp = (yy_c_buf_p); + + /* Support of yytext. */ + *yy_cp = (yy_hold_char); + + /* yy_bp points to the position in yy_ch_buf of the start of + * the current run. + */ + yy_bp = yy_cp; + + yy_current_state = (yy_start); +yy_match: + do + { + register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + 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 >= 3439 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + ++yy_cp; + } + while ( yy_base[yy_current_state] != 9825 ); + +yy_find_action: + yy_act = yy_accept[yy_current_state]; + if ( yy_act == 0 ) + { /* have to back up */ + yy_cp = (yy_last_accepting_cpos); + yy_current_state = (yy_last_accepting_state); + yy_act = yy_accept[yy_current_state]; + } + + YY_DO_BEFORE_ACTION; + +do_action: /* This label is used only to access EOF actions. */ + + switch ( yy_act ) + { /* beginning of action switch */ + case 0: /* must back up */ + /* undo the effects of YY_DO_BEFORE_ACTION */ + *yy_cp = (yy_hold_char); + yy_cp = (yy_last_accepting_cpos); + yy_current_state = (yy_last_accepting_state); + goto yy_find_action; + +case 1: +YY_RULE_SETUP +#line 212 "util/configlexer.lex" +{ + LEXOUT(("SP ")); /* ignore */ } + YY_BREAK +case 2: +YY_RULE_SETUP +#line 214 "util/configlexer.lex" +{ + /* note that flex makes the longest match and '.' is any but not nl */ + LEXOUT(("comment(%s) ", yytext)); /* ignore */ } + YY_BREAK +case 3: +YY_RULE_SETUP +#line 217 "util/configlexer.lex" +{ YDVAR(0, VAR_SERVER) } + YY_BREAK +case 4: +YY_RULE_SETUP +#line 218 "util/configlexer.lex" +{ YDVAR(1, VAR_QNAME_MINIMISATION) } + YY_BREAK +case 5: +YY_RULE_SETUP +#line 219 "util/configlexer.lex" +{ YDVAR(1, VAR_QNAME_MINIMISATION_STRICT) } + YY_BREAK +case 6: +YY_RULE_SETUP +#line 220 "util/configlexer.lex" +{ YDVAR(1, VAR_NUM_THREADS) } + YY_BREAK +case 7: +YY_RULE_SETUP +#line 221 "util/configlexer.lex" +{ YDVAR(1, VAR_VERBOSITY) } + YY_BREAK +case 8: +YY_RULE_SETUP +#line 222 "util/configlexer.lex" +{ YDVAR(1, VAR_PORT) } + YY_BREAK +case 9: +YY_RULE_SETUP +#line 223 "util/configlexer.lex" +{ YDVAR(1, VAR_OUTGOING_RANGE) } + YY_BREAK +case 10: +YY_RULE_SETUP +#line 224 "util/configlexer.lex" +{ YDVAR(1, VAR_OUTGOING_PORT_PERMIT) } + YY_BREAK +case 11: +YY_RULE_SETUP +#line 225 "util/configlexer.lex" +{ YDVAR(1, VAR_OUTGOING_PORT_AVOID) } + YY_BREAK +case 12: +YY_RULE_SETUP +#line 226 "util/configlexer.lex" +{ YDVAR(1, VAR_OUTGOING_NUM_TCP) } + YY_BREAK +case 13: +YY_RULE_SETUP +#line 227 "util/configlexer.lex" +{ YDVAR(1, VAR_INCOMING_NUM_TCP) } + YY_BREAK +case 14: +YY_RULE_SETUP +#line 228 "util/configlexer.lex" +{ YDVAR(1, VAR_DO_IP4) } + YY_BREAK +case 15: +YY_RULE_SETUP +#line 229 "util/configlexer.lex" +{ YDVAR(1, VAR_DO_IP6) } + YY_BREAK +case 16: +YY_RULE_SETUP +#line 230 "util/configlexer.lex" +{ YDVAR(1, VAR_PREFER_IP4) } + YY_BREAK +case 17: +YY_RULE_SETUP +#line 231 "util/configlexer.lex" +{ YDVAR(1, VAR_PREFER_IP6) } + YY_BREAK +case 18: +YY_RULE_SETUP +#line 232 "util/configlexer.lex" +{ YDVAR(1, VAR_DO_UDP) } + YY_BREAK +case 19: +YY_RULE_SETUP +#line 233 "util/configlexer.lex" +{ YDVAR(1, VAR_DO_TCP) } + YY_BREAK +case 20: +YY_RULE_SETUP +#line 234 "util/configlexer.lex" +{ YDVAR(1, VAR_TCP_UPSTREAM) } + YY_BREAK +case 21: +YY_RULE_SETUP +#line 235 "util/configlexer.lex" +{ YDVAR(1, VAR_TCP_MSS) } + YY_BREAK +case 22: +YY_RULE_SETUP +#line 236 "util/configlexer.lex" +{ YDVAR(1, VAR_OUTGOING_TCP_MSS) } + YY_BREAK +case 23: +YY_RULE_SETUP +#line 237 "util/configlexer.lex" +{ YDVAR(1, VAR_TCP_IDLE_TIMEOUT) } + YY_BREAK +case 24: +YY_RULE_SETUP +#line 238 "util/configlexer.lex" +{ YDVAR(1, VAR_MAX_REUSE_TCP_QUERIES) } + YY_BREAK +case 25: +YY_RULE_SETUP +#line 239 "util/configlexer.lex" +{ YDVAR(1, VAR_TCP_REUSE_TIMEOUT) } + YY_BREAK +case 26: +YY_RULE_SETUP +#line 240 "util/configlexer.lex" +{ YDVAR(1, VAR_TCP_AUTH_QUERY_TIMEOUT) } + YY_BREAK +case 27: +YY_RULE_SETUP +#line 241 "util/configlexer.lex" +{ YDVAR(1, VAR_EDNS_TCP_KEEPALIVE) } + YY_BREAK +case 28: +YY_RULE_SETUP +#line 242 "util/configlexer.lex" +{ YDVAR(1, VAR_EDNS_TCP_KEEPALIVE_TIMEOUT) } + YY_BREAK +case 29: +YY_RULE_SETUP +#line 243 "util/configlexer.lex" +{ YDVAR(1, VAR_SSL_UPSTREAM) } + YY_BREAK +case 30: +YY_RULE_SETUP +#line 244 "util/configlexer.lex" +{ YDVAR(1, VAR_SSL_UPSTREAM) } + YY_BREAK +case 31: +YY_RULE_SETUP +#line 245 "util/configlexer.lex" +{ YDVAR(1, VAR_SSL_SERVICE_KEY) } + YY_BREAK +case 32: +YY_RULE_SETUP +#line 246 "util/configlexer.lex" +{ YDVAR(1, VAR_SSL_SERVICE_KEY) } + YY_BREAK +case 33: +YY_RULE_SETUP +#line 247 "util/configlexer.lex" +{ YDVAR(1, VAR_SSL_SERVICE_PEM) } + YY_BREAK +case 34: +YY_RULE_SETUP +#line 248 "util/configlexer.lex" +{ YDVAR(1, VAR_SSL_SERVICE_PEM) } + YY_BREAK +case 35: +YY_RULE_SETUP +#line 249 "util/configlexer.lex" +{ YDVAR(1, VAR_SSL_PORT) } + YY_BREAK +case 36: +YY_RULE_SETUP +#line 250 "util/configlexer.lex" +{ YDVAR(1, VAR_SSL_PORT) } + YY_BREAK +case 37: +YY_RULE_SETUP +#line 251 "util/configlexer.lex" +{ YDVAR(1, VAR_TLS_CERT_BUNDLE) } + YY_BREAK +case 38: +YY_RULE_SETUP +#line 252 "util/configlexer.lex" +{ YDVAR(1, VAR_TLS_CERT_BUNDLE) } + YY_BREAK +case 39: +YY_RULE_SETUP +#line 253 "util/configlexer.lex" +{ YDVAR(1, VAR_TLS_WIN_CERT) } + YY_BREAK +case 40: +YY_RULE_SETUP +#line 254 "util/configlexer.lex" +{ YDVAR(1, VAR_TLS_ADDITIONAL_PORT) } + YY_BREAK +case 41: +YY_RULE_SETUP +#line 255 "util/configlexer.lex" +{ YDVAR(1, VAR_TLS_ADDITIONAL_PORT) } + YY_BREAK +case 42: +YY_RULE_SETUP +#line 256 "util/configlexer.lex" +{ YDVAR(1, VAR_TLS_ADDITIONAL_PORT) } + YY_BREAK +case 43: +YY_RULE_SETUP +#line 257 "util/configlexer.lex" +{ YDVAR(1, VAR_TLS_ADDITIONAL_PORT) } + YY_BREAK +case 44: +YY_RULE_SETUP +#line 258 "util/configlexer.lex" +{ YDVAR(1, VAR_TLS_SESSION_TICKET_KEYS) } + YY_BREAK +case 45: +YY_RULE_SETUP +#line 259 "util/configlexer.lex" +{ YDVAR(1, VAR_TLS_CIPHERS) } + YY_BREAK +case 46: +YY_RULE_SETUP +#line 260 "util/configlexer.lex" +{ YDVAR(1, VAR_TLS_CIPHERSUITES) } + YY_BREAK +case 47: +YY_RULE_SETUP +#line 261 "util/configlexer.lex" +{ YDVAR(1, VAR_TLS_USE_SNI) } + YY_BREAK +case 48: +YY_RULE_SETUP +#line 262 "util/configlexer.lex" +{ YDVAR(1, VAR_HTTPS_PORT) } + YY_BREAK +case 49: +YY_RULE_SETUP +#line 263 "util/configlexer.lex" +{ YDVAR(1, VAR_HTTP_ENDPOINT) } + YY_BREAK +case 50: +YY_RULE_SETUP +#line 264 "util/configlexer.lex" +{ YDVAR(1, VAR_HTTP_MAX_STREAMS) } + YY_BREAK +case 51: +YY_RULE_SETUP +#line 265 "util/configlexer.lex" +{ YDVAR(1, VAR_HTTP_QUERY_BUFFER_SIZE) } + YY_BREAK +case 52: +YY_RULE_SETUP +#line 266 "util/configlexer.lex" +{ YDVAR(1, VAR_HTTP_RESPONSE_BUFFER_SIZE) } + YY_BREAK +case 53: +YY_RULE_SETUP +#line 267 "util/configlexer.lex" +{ YDVAR(1, VAR_HTTP_NODELAY) } + YY_BREAK +case 54: +YY_RULE_SETUP +#line 268 "util/configlexer.lex" +{ YDVAR(1, VAR_HTTP_NOTLS_DOWNSTREAM) } + YY_BREAK +case 55: +YY_RULE_SETUP +#line 269 "util/configlexer.lex" +{ YDVAR(1, VAR_USE_SYSTEMD) } + YY_BREAK +case 56: +YY_RULE_SETUP +#line 270 "util/configlexer.lex" +{ YDVAR(1, VAR_DO_DAEMONIZE) } + YY_BREAK +case 57: +YY_RULE_SETUP +#line 271 "util/configlexer.lex" +{ YDVAR(1, VAR_INTERFACE) } + YY_BREAK +case 58: +YY_RULE_SETUP +#line 272 "util/configlexer.lex" +{ YDVAR(1, VAR_INTERFACE) } + YY_BREAK +case 59: +YY_RULE_SETUP +#line 273 "util/configlexer.lex" +{ YDVAR(1, VAR_OUTGOING_INTERFACE) } + YY_BREAK +case 60: +YY_RULE_SETUP +#line 274 "util/configlexer.lex" +{ YDVAR(1, VAR_INTERFACE_AUTOMATIC) } + YY_BREAK +case 61: +YY_RULE_SETUP +#line 275 "util/configlexer.lex" +{ YDVAR(1, VAR_SO_RCVBUF) } + YY_BREAK +case 62: +YY_RULE_SETUP +#line 276 "util/configlexer.lex" +{ YDVAR(1, VAR_SO_SNDBUF) } + YY_BREAK +case 63: +YY_RULE_SETUP +#line 277 "util/configlexer.lex" +{ YDVAR(1, VAR_SO_REUSEPORT) } + YY_BREAK +case 64: +YY_RULE_SETUP +#line 278 "util/configlexer.lex" +{ YDVAR(1, VAR_IP_TRANSPARENT) } + YY_BREAK +case 65: +YY_RULE_SETUP +#line 279 "util/configlexer.lex" +{ YDVAR(1, VAR_IP_FREEBIND) } + YY_BREAK +case 66: +YY_RULE_SETUP +#line 280 "util/configlexer.lex" +{ YDVAR(1, VAR_IP_DSCP) } + YY_BREAK +case 67: +YY_RULE_SETUP +#line 281 "util/configlexer.lex" +{ YDVAR(1, VAR_CHROOT) } + YY_BREAK +case 68: +YY_RULE_SETUP +#line 282 "util/configlexer.lex" +{ YDVAR(1, VAR_USERNAME) } + YY_BREAK +case 69: +YY_RULE_SETUP +#line 283 "util/configlexer.lex" +{ YDVAR(1, VAR_DIRECTORY) } + YY_BREAK +case 70: +YY_RULE_SETUP +#line 284 "util/configlexer.lex" +{ YDVAR(1, VAR_LOGFILE) } + YY_BREAK +case 71: +YY_RULE_SETUP +#line 285 "util/configlexer.lex" +{ YDVAR(1, VAR_PIDFILE) } + YY_BREAK +case 72: +YY_RULE_SETUP +#line 286 "util/configlexer.lex" +{ YDVAR(1, VAR_ROOT_HINTS) } + YY_BREAK +case 73: +YY_RULE_SETUP +#line 287 "util/configlexer.lex" +{ YDVAR(1, VAR_STREAM_WAIT_SIZE) } + YY_BREAK +case 74: +YY_RULE_SETUP +#line 288 "util/configlexer.lex" +{ YDVAR(1, VAR_EDNS_BUFFER_SIZE) } + YY_BREAK +case 75: +YY_RULE_SETUP +#line 289 "util/configlexer.lex" +{ YDVAR(1, VAR_MSG_BUFFER_SIZE) } + YY_BREAK +case 76: +YY_RULE_SETUP +#line 290 "util/configlexer.lex" +{ YDVAR(1, VAR_MSG_CACHE_SIZE) } + YY_BREAK +case 77: +YY_RULE_SETUP +#line 291 "util/configlexer.lex" +{ YDVAR(1, VAR_MSG_CACHE_SLABS) } + YY_BREAK +case 78: +YY_RULE_SETUP +#line 292 "util/configlexer.lex" +{ YDVAR(1, VAR_RRSET_CACHE_SIZE) } + YY_BREAK +case 79: +YY_RULE_SETUP +#line 293 "util/configlexer.lex" +{ YDVAR(1, VAR_RRSET_CACHE_SLABS) } + YY_BREAK +case 80: +YY_RULE_SETUP +#line 294 "util/configlexer.lex" +{ YDVAR(1, VAR_CACHE_MAX_TTL) } + YY_BREAK +case 81: +YY_RULE_SETUP +#line 295 "util/configlexer.lex" +{ YDVAR(1, VAR_CACHE_MAX_NEGATIVE_TTL) } + YY_BREAK +case 82: +YY_RULE_SETUP +#line 296 "util/configlexer.lex" +{ YDVAR(1, VAR_CACHE_MIN_TTL) } + YY_BREAK +case 83: +YY_RULE_SETUP +#line 297 "util/configlexer.lex" +{ YDVAR(1, VAR_INFRA_HOST_TTL) } + YY_BREAK +case 84: +YY_RULE_SETUP +#line 298 "util/configlexer.lex" +{ YDVAR(1, VAR_INFRA_LAME_TTL) } + YY_BREAK +case 85: +YY_RULE_SETUP +#line 299 "util/configlexer.lex" +{ YDVAR(1, VAR_INFRA_CACHE_SLABS) } + YY_BREAK +case 86: +YY_RULE_SETUP +#line 300 "util/configlexer.lex" +{ YDVAR(1, VAR_INFRA_CACHE_NUMHOSTS) } + YY_BREAK +case 87: +YY_RULE_SETUP +#line 301 "util/configlexer.lex" +{ YDVAR(1, VAR_INFRA_CACHE_LAME_SIZE) } + YY_BREAK +case 88: +YY_RULE_SETUP +#line 302 "util/configlexer.lex" +{ YDVAR(1, VAR_INFRA_CACHE_MIN_RTT) } + YY_BREAK +case 89: +YY_RULE_SETUP +#line 303 "util/configlexer.lex" +{ YDVAR(1, VAR_INFRA_KEEP_PROBING) } + YY_BREAK +case 90: +YY_RULE_SETUP +#line 304 "util/configlexer.lex" +{ YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) } + YY_BREAK +case 91: +YY_RULE_SETUP +#line 305 "util/configlexer.lex" +{ YDVAR(1, VAR_JOSTLE_TIMEOUT) } + YY_BREAK +case 92: +YY_RULE_SETUP +#line 306 "util/configlexer.lex" +{ YDVAR(1, VAR_DELAY_CLOSE) } + YY_BREAK +case 93: +YY_RULE_SETUP +#line 307 "util/configlexer.lex" +{ YDVAR(1, VAR_UDP_CONNECT) } + YY_BREAK +case 94: +YY_RULE_SETUP +#line 308 "util/configlexer.lex" +{ YDVAR(1, VAR_TARGET_FETCH_POLICY) } + YY_BREAK +case 95: +YY_RULE_SETUP +#line 309 "util/configlexer.lex" +{ YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) } + YY_BREAK +case 96: +YY_RULE_SETUP +#line 310 "util/configlexer.lex" +{ YDVAR(1, VAR_HARDEN_LARGE_QUERIES) } + YY_BREAK +case 97: +YY_RULE_SETUP +#line 311 "util/configlexer.lex" +{ YDVAR(1, VAR_HARDEN_GLUE) } + YY_BREAK +case 98: +YY_RULE_SETUP +#line 312 "util/configlexer.lex" +{ YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) } + YY_BREAK +case 99: +YY_RULE_SETUP +#line 313 "util/configlexer.lex" +{ YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) } + YY_BREAK +case 100: +YY_RULE_SETUP +#line 314 "util/configlexer.lex" +{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) } + YY_BREAK +case 101: +YY_RULE_SETUP +#line 315 "util/configlexer.lex" +{ YDVAR(1, VAR_HARDEN_ALGO_DOWNGRADE) } + YY_BREAK +case 102: +YY_RULE_SETUP +#line 316 "util/configlexer.lex" +{ YDVAR(1, VAR_USE_CAPS_FOR_ID) } + YY_BREAK +case 103: +YY_RULE_SETUP +#line 317 "util/configlexer.lex" +{ YDVAR(1, VAR_CAPS_WHITELIST) } + YY_BREAK +case 104: +YY_RULE_SETUP +#line 318 "util/configlexer.lex" +{ YDVAR(1, VAR_CAPS_WHITELIST) } + YY_BREAK +case 105: +YY_RULE_SETUP +#line 319 "util/configlexer.lex" +{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) } + YY_BREAK +case 106: +YY_RULE_SETUP +#line 320 "util/configlexer.lex" +{ YDVAR(1, VAR_PRIVATE_ADDRESS) } + YY_BREAK +case 107: +YY_RULE_SETUP +#line 321 "util/configlexer.lex" +{ YDVAR(1, VAR_PRIVATE_DOMAIN) } + YY_BREAK +case 108: +YY_RULE_SETUP +#line 322 "util/configlexer.lex" +{ YDVAR(1, VAR_PREFETCH_KEY) } + YY_BREAK +case 109: +YY_RULE_SETUP +#line 323 "util/configlexer.lex" +{ YDVAR(1, VAR_PREFETCH) } + YY_BREAK +case 110: +YY_RULE_SETUP +#line 324 "util/configlexer.lex" +{ YDVAR(1, VAR_DENY_ANY) } + YY_BREAK +case 111: +YY_RULE_SETUP +#line 325 "util/configlexer.lex" +{ YDVAR(0, VAR_STUB_ZONE) } + YY_BREAK +case 112: +YY_RULE_SETUP +#line 326 "util/configlexer.lex" +{ YDVAR(1, VAR_NAME) } + YY_BREAK +case 113: +YY_RULE_SETUP +#line 327 "util/configlexer.lex" +{ YDVAR(1, VAR_STUB_ADDR) } + YY_BREAK +case 114: +YY_RULE_SETUP +#line 328 "util/configlexer.lex" +{ YDVAR(1, VAR_STUB_HOST) } + YY_BREAK +case 115: +YY_RULE_SETUP +#line 329 "util/configlexer.lex" +{ YDVAR(1, VAR_STUB_PRIME) } + YY_BREAK +case 116: +YY_RULE_SETUP +#line 330 "util/configlexer.lex" +{ YDVAR(1, VAR_STUB_FIRST) } + YY_BREAK +case 117: +YY_RULE_SETUP +#line 331 "util/configlexer.lex" +{ YDVAR(1, VAR_STUB_NO_CACHE) } + YY_BREAK +case 118: +YY_RULE_SETUP +#line 332 "util/configlexer.lex" +{ YDVAR(1, VAR_STUB_SSL_UPSTREAM) } + YY_BREAK +case 119: +YY_RULE_SETUP +#line 333 "util/configlexer.lex" +{ YDVAR(1, VAR_STUB_SSL_UPSTREAM) } + YY_BREAK +case 120: +YY_RULE_SETUP +#line 334 "util/configlexer.lex" +{ YDVAR(0, VAR_FORWARD_ZONE) } + YY_BREAK +case 121: +YY_RULE_SETUP +#line 335 "util/configlexer.lex" +{ YDVAR(1, VAR_FORWARD_ADDR) } + YY_BREAK +case 122: +YY_RULE_SETUP +#line 336 "util/configlexer.lex" +{ YDVAR(1, VAR_FORWARD_HOST) } + YY_BREAK +case 123: +YY_RULE_SETUP +#line 337 "util/configlexer.lex" +{ YDVAR(1, VAR_FORWARD_FIRST) } + YY_BREAK +case 124: +YY_RULE_SETUP +#line 338 "util/configlexer.lex" +{ YDVAR(1, VAR_FORWARD_NO_CACHE) } + YY_BREAK +case 125: +YY_RULE_SETUP +#line 339 "util/configlexer.lex" +{ YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) } + YY_BREAK +case 126: +YY_RULE_SETUP +#line 340 "util/configlexer.lex" +{ YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) } + YY_BREAK +case 127: +YY_RULE_SETUP +#line 341 "util/configlexer.lex" +{ YDVAR(0, VAR_AUTH_ZONE) } + YY_BREAK +case 128: +YY_RULE_SETUP +#line 342 "util/configlexer.lex" +{ YDVAR(0, VAR_RPZ) } + YY_BREAK +case 129: +YY_RULE_SETUP +#line 343 "util/configlexer.lex" +{ YDVAR(1, VAR_TAGS) } + YY_BREAK +case 130: +YY_RULE_SETUP +#line 344 "util/configlexer.lex" +{ YDVAR(1, VAR_RPZ_ACTION_OVERRIDE) } + YY_BREAK +case 131: +YY_RULE_SETUP +#line 345 "util/configlexer.lex" +{ YDVAR(1, VAR_RPZ_CNAME_OVERRIDE) } + YY_BREAK +case 132: +YY_RULE_SETUP +#line 346 "util/configlexer.lex" +{ YDVAR(1, VAR_RPZ_LOG) } + YY_BREAK +case 133: +YY_RULE_SETUP +#line 347 "util/configlexer.lex" +{ YDVAR(1, VAR_RPZ_LOG_NAME) } + YY_BREAK +case 134: +YY_RULE_SETUP +#line 348 "util/configlexer.lex" +{ YDVAR(1, VAR_ZONEFILE) } + YY_BREAK +case 135: +YY_RULE_SETUP +#line 349 "util/configlexer.lex" +{ YDVAR(1, VAR_MASTER) } + YY_BREAK +case 136: +YY_RULE_SETUP +#line 350 "util/configlexer.lex" +{ YDVAR(1, VAR_MASTER) } + YY_BREAK +case 137: +YY_RULE_SETUP +#line 351 "util/configlexer.lex" +{ YDVAR(1, VAR_URL) } + YY_BREAK +case 138: +YY_RULE_SETUP +#line 352 "util/configlexer.lex" +{ YDVAR(1, VAR_ALLOW_NOTIFY) } + YY_BREAK +case 139: +YY_RULE_SETUP +#line 353 "util/configlexer.lex" +{ YDVAR(1, VAR_FOR_DOWNSTREAM) } + YY_BREAK +case 140: +YY_RULE_SETUP +#line 354 "util/configlexer.lex" +{ YDVAR(1, VAR_FOR_UPSTREAM) } + YY_BREAK +case 141: +YY_RULE_SETUP +#line 355 "util/configlexer.lex" +{ YDVAR(1, VAR_FALLBACK_ENABLED) } + YY_BREAK +case 142: +YY_RULE_SETUP +#line 356 "util/configlexer.lex" +{ YDVAR(0, VAR_VIEW) } + YY_BREAK +case 143: +YY_RULE_SETUP +#line 357 "util/configlexer.lex" +{ YDVAR(1, VAR_VIEW_FIRST) } + YY_BREAK +case 144: +YY_RULE_SETUP +#line 358 "util/configlexer.lex" +{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } + YY_BREAK +case 145: +YY_RULE_SETUP +#line 359 "util/configlexer.lex" +{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } + YY_BREAK +case 146: +YY_RULE_SETUP +#line 360 "util/configlexer.lex" +{ YDVAR(2, VAR_ACCESS_CONTROL) } + YY_BREAK +case 147: +YY_RULE_SETUP +#line 361 "util/configlexer.lex" +{ YDVAR(1, VAR_SEND_CLIENT_SUBNET) } + YY_BREAK +case 148: +YY_RULE_SETUP +#line 362 "util/configlexer.lex" +{ YDVAR(1, VAR_CLIENT_SUBNET_ZONE) } + YY_BREAK +case 149: +YY_RULE_SETUP +#line 363 "util/configlexer.lex" +{ YDVAR(1, VAR_CLIENT_SUBNET_ALWAYS_FORWARD) } + YY_BREAK +case 150: +YY_RULE_SETUP +#line 364 "util/configlexer.lex" +{ YDVAR(1, VAR_CLIENT_SUBNET_OPCODE) } + YY_BREAK +case 151: +YY_RULE_SETUP +#line 365 "util/configlexer.lex" +{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV4) } + YY_BREAK +case 152: +YY_RULE_SETUP +#line 366 "util/configlexer.lex" +{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV6) } + YY_BREAK +case 153: +YY_RULE_SETUP +#line 367 "util/configlexer.lex" +{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV4) } + YY_BREAK +case 154: +YY_RULE_SETUP +#line 368 "util/configlexer.lex" +{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV6) } + YY_BREAK +case 155: +YY_RULE_SETUP +#line 369 "util/configlexer.lex" +{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV4) } + YY_BREAK +case 156: +YY_RULE_SETUP +#line 370 "util/configlexer.lex" +{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV6) } + YY_BREAK +case 157: +YY_RULE_SETUP +#line 371 "util/configlexer.lex" +{ YDVAR(1, VAR_HIDE_IDENTITY) } + YY_BREAK +case 158: +YY_RULE_SETUP +#line 372 "util/configlexer.lex" +{ YDVAR(1, VAR_HIDE_VERSION) } + YY_BREAK +case 159: +YY_RULE_SETUP +#line 373 "util/configlexer.lex" +{ YDVAR(1, VAR_HIDE_TRUSTANCHOR) } + YY_BREAK +case 160: +YY_RULE_SETUP +#line 374 "util/configlexer.lex" +{ YDVAR(1, VAR_IDENTITY) } + YY_BREAK +case 161: +YY_RULE_SETUP +#line 375 "util/configlexer.lex" +{ YDVAR(1, VAR_VERSION) } + YY_BREAK +case 162: +YY_RULE_SETUP +#line 376 "util/configlexer.lex" +{ YDVAR(1, VAR_MODULE_CONF) } + YY_BREAK +case 163: +YY_RULE_SETUP +#line 377 "util/configlexer.lex" +{ YDVAR(1, VAR_DLV_ANCHOR) } + YY_BREAK +case 164: +YY_RULE_SETUP +#line 378 "util/configlexer.lex" +{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } + YY_BREAK +case 165: +YY_RULE_SETUP +#line 379 "util/configlexer.lex" +{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } + YY_BREAK +case 166: +YY_RULE_SETUP +#line 380 "util/configlexer.lex" +{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } + YY_BREAK +case 167: +YY_RULE_SETUP +#line 381 "util/configlexer.lex" +{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } + YY_BREAK +case 168: +YY_RULE_SETUP +#line 382 "util/configlexer.lex" +{ YDVAR(1, VAR_TRUST_ANCHOR) } + YY_BREAK +case 169: +YY_RULE_SETUP +#line 383 "util/configlexer.lex" +{ YDVAR(1, VAR_TRUST_ANCHOR_SIGNALING) } + YY_BREAK +case 170: +YY_RULE_SETUP +#line 384 "util/configlexer.lex" +{ YDVAR(1, VAR_ROOT_KEY_SENTINEL) } + YY_BREAK +case 171: +YY_RULE_SETUP +#line 385 "util/configlexer.lex" +{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } + YY_BREAK +case 172: +YY_RULE_SETUP +#line 386 "util/configlexer.lex" +{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } + YY_BREAK +case 173: +YY_RULE_SETUP +#line 387 "util/configlexer.lex" +{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } + YY_BREAK +case 174: +YY_RULE_SETUP +#line 388 "util/configlexer.lex" +{ YDVAR(1, VAR_BOGUS_TTL) } + YY_BREAK +case 175: +YY_RULE_SETUP +#line 389 "util/configlexer.lex" +{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } + YY_BREAK +case 176: +YY_RULE_SETUP +#line 390 "util/configlexer.lex" +{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } + YY_BREAK +case 177: +YY_RULE_SETUP +#line 391 "util/configlexer.lex" +{ YDVAR(1, VAR_AGGRESSIVE_NSEC) } + YY_BREAK +case 178: +YY_RULE_SETUP +#line 392 "util/configlexer.lex" +{ YDVAR(1, VAR_IGNORE_CD_FLAG) } + YY_BREAK +case 179: +YY_RULE_SETUP +#line 393 "util/configlexer.lex" +{ YDVAR(1, VAR_SERVE_EXPIRED) } + YY_BREAK +case 180: +YY_RULE_SETUP +#line 394 "util/configlexer.lex" +{ YDVAR(1, VAR_SERVE_EXPIRED_TTL) } + YY_BREAK +case 181: +YY_RULE_SETUP +#line 395 "util/configlexer.lex" +{ YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) } + YY_BREAK +case 182: +YY_RULE_SETUP +#line 396 "util/configlexer.lex" +{ YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) } + YY_BREAK +case 183: +YY_RULE_SETUP +#line 397 "util/configlexer.lex" +{ YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) } + YY_BREAK +case 184: +YY_RULE_SETUP +#line 398 "util/configlexer.lex" +{ YDVAR(1, VAR_SERVE_ORIGINAL_TTL) } + YY_BREAK +case 185: +YY_RULE_SETUP +#line 399 "util/configlexer.lex" +{ YDVAR(1, VAR_FAKE_DSA) } + YY_BREAK +case 186: +YY_RULE_SETUP +#line 400 "util/configlexer.lex" +{ YDVAR(1, VAR_FAKE_SHA1) } + YY_BREAK +case 187: +YY_RULE_SETUP +#line 401 "util/configlexer.lex" +{ YDVAR(1, VAR_VAL_LOG_LEVEL) } + YY_BREAK +case 188: +YY_RULE_SETUP +#line 402 "util/configlexer.lex" +{ YDVAR(1, VAR_KEY_CACHE_SIZE) } + YY_BREAK +case 189: +YY_RULE_SETUP +#line 403 "util/configlexer.lex" +{ YDVAR(1, VAR_KEY_CACHE_SLABS) } + YY_BREAK +case 190: +YY_RULE_SETUP +#line 404 "util/configlexer.lex" +{ YDVAR(1, VAR_NEG_CACHE_SIZE) } + YY_BREAK +case 191: +YY_RULE_SETUP +#line 405 "util/configlexer.lex" +{ + YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } + YY_BREAK +case 192: +YY_RULE_SETUP +#line 407 "util/configlexer.lex" +{ YDVAR(1, VAR_ZONEMD_PERMISSIVE_MODE) } + YY_BREAK +case 193: +YY_RULE_SETUP +#line 408 "util/configlexer.lex" +{ YDVAR(1, VAR_ZONEMD_REJECT_ABSENCE) } + YY_BREAK +case 194: +YY_RULE_SETUP +#line 409 "util/configlexer.lex" +{ YDVAR(1, VAR_ADD_HOLDDOWN) } + YY_BREAK +case 195: +YY_RULE_SETUP +#line 410 "util/configlexer.lex" +{ YDVAR(1, VAR_DEL_HOLDDOWN) } + YY_BREAK +case 196: +YY_RULE_SETUP +#line 411 "util/configlexer.lex" +{ YDVAR(1, VAR_KEEP_MISSING) } + YY_BREAK +case 197: +YY_RULE_SETUP +#line 412 "util/configlexer.lex" +{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } + YY_BREAK +case 198: +YY_RULE_SETUP +#line 413 "util/configlexer.lex" +{ YDVAR(1, VAR_USE_SYSLOG) } + YY_BREAK +case 199: +YY_RULE_SETUP +#line 414 "util/configlexer.lex" +{ YDVAR(1, VAR_LOG_IDENTITY) } + YY_BREAK +case 200: +YY_RULE_SETUP +#line 415 "util/configlexer.lex" +{ YDVAR(1, VAR_LOG_TIME_ASCII) } + YY_BREAK +case 201: +YY_RULE_SETUP +#line 416 "util/configlexer.lex" +{ YDVAR(1, VAR_LOG_QUERIES) } + YY_BREAK +case 202: +YY_RULE_SETUP +#line 417 "util/configlexer.lex" +{ YDVAR(1, VAR_LOG_REPLIES) } + YY_BREAK +case 203: +YY_RULE_SETUP +#line 418 "util/configlexer.lex" +{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) } + YY_BREAK +case 204: +YY_RULE_SETUP +#line 419 "util/configlexer.lex" +{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) } + YY_BREAK +case 205: +YY_RULE_SETUP +#line 420 "util/configlexer.lex" +{ YDVAR(1, VAR_LOG_SERVFAIL) } + YY_BREAK +case 206: +YY_RULE_SETUP +#line 421 "util/configlexer.lex" +{ YDVAR(2, VAR_LOCAL_ZONE) } + YY_BREAK +case 207: +YY_RULE_SETUP +#line 422 "util/configlexer.lex" +{ YDVAR(1, VAR_LOCAL_DATA) } + YY_BREAK +case 208: +YY_RULE_SETUP +#line 423 "util/configlexer.lex" +{ YDVAR(1, VAR_LOCAL_DATA_PTR) } + YY_BREAK +case 209: +YY_RULE_SETUP +#line 424 "util/configlexer.lex" +{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } + YY_BREAK +case 210: +YY_RULE_SETUP +#line 425 "util/configlexer.lex" +{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } + YY_BREAK +case 211: +YY_RULE_SETUP +#line 426 "util/configlexer.lex" +{ YDVAR(1, VAR_STATISTICS_INTERVAL) } + YY_BREAK +case 212: +YY_RULE_SETUP +#line 427 "util/configlexer.lex" +{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } + YY_BREAK +case 213: +YY_RULE_SETUP +#line 428 "util/configlexer.lex" +{ YDVAR(1, VAR_EXTENDED_STATISTICS) } + YY_BREAK +case 214: +YY_RULE_SETUP +#line 429 "util/configlexer.lex" +{ YDVAR(1, VAR_SHM_ENABLE) } + YY_BREAK +case 215: +YY_RULE_SETUP +#line 430 "util/configlexer.lex" +{ YDVAR(1, VAR_SHM_KEY) } + YY_BREAK +case 216: +YY_RULE_SETUP +#line 431 "util/configlexer.lex" +{ YDVAR(0, VAR_REMOTE_CONTROL) } + YY_BREAK +case 217: +YY_RULE_SETUP +#line 432 "util/configlexer.lex" +{ YDVAR(1, VAR_CONTROL_ENABLE) } + YY_BREAK +case 218: +YY_RULE_SETUP +#line 433 "util/configlexer.lex" +{ YDVAR(1, VAR_CONTROL_INTERFACE) } + YY_BREAK +case 219: +YY_RULE_SETUP +#line 434 "util/configlexer.lex" +{ YDVAR(1, VAR_CONTROL_PORT) } + YY_BREAK +case 220: +YY_RULE_SETUP +#line 435 "util/configlexer.lex" +{ YDVAR(1, VAR_CONTROL_USE_CERT) } + YY_BREAK +case 221: +YY_RULE_SETUP +#line 436 "util/configlexer.lex" +{ YDVAR(1, VAR_SERVER_KEY_FILE) } + YY_BREAK +case 222: +YY_RULE_SETUP +#line 437 "util/configlexer.lex" +{ YDVAR(1, VAR_SERVER_CERT_FILE) } + YY_BREAK +case 223: +YY_RULE_SETUP +#line 438 "util/configlexer.lex" +{ YDVAR(1, VAR_CONTROL_KEY_FILE) } + YY_BREAK +case 224: +YY_RULE_SETUP +#line 439 "util/configlexer.lex" +{ YDVAR(1, VAR_CONTROL_CERT_FILE) } + YY_BREAK +case 225: +YY_RULE_SETUP +#line 440 "util/configlexer.lex" +{ YDVAR(1, VAR_PYTHON_SCRIPT) } + YY_BREAK +case 226: +YY_RULE_SETUP +#line 441 "util/configlexer.lex" +{ YDVAR(0, VAR_PYTHON) } + YY_BREAK +case 227: +YY_RULE_SETUP +#line 442 "util/configlexer.lex" +{ YDVAR(1, VAR_DYNLIB_FILE) } + YY_BREAK +case 228: +YY_RULE_SETUP +#line 443 "util/configlexer.lex" +{ YDVAR(0, VAR_DYNLIB) } + YY_BREAK +case 229: +YY_RULE_SETUP +#line 444 "util/configlexer.lex" +{ YDVAR(1, VAR_DOMAIN_INSECURE) } + YY_BREAK +case 230: +YY_RULE_SETUP +#line 445 "util/configlexer.lex" +{ YDVAR(1, VAR_MINIMAL_RESPONSES) } + YY_BREAK +case 231: +YY_RULE_SETUP +#line 446 "util/configlexer.lex" +{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } + YY_BREAK +case 232: +YY_RULE_SETUP +#line 447 "util/configlexer.lex" +{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } + YY_BREAK +case 233: +YY_RULE_SETUP +#line 448 "util/configlexer.lex" +{ YDVAR(1, VAR_MAX_UDP_SIZE) } + YY_BREAK +case 234: +YY_RULE_SETUP +#line 449 "util/configlexer.lex" +{ YDVAR(1, VAR_DNS64_PREFIX) } + YY_BREAK +case 235: +YY_RULE_SETUP +#line 450 "util/configlexer.lex" +{ YDVAR(1, VAR_DNS64_SYNTHALL) } + YY_BREAK +case 236: +YY_RULE_SETUP +#line 451 "util/configlexer.lex" +{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } + YY_BREAK +case 237: +YY_RULE_SETUP +#line 452 "util/configlexer.lex" +{ YDVAR(1, VAR_DEFINE_TAG) } + YY_BREAK +case 238: +YY_RULE_SETUP +#line 453 "util/configlexer.lex" +{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } + YY_BREAK +case 239: +YY_RULE_SETUP +#line 454 "util/configlexer.lex" +{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } + YY_BREAK +case 240: +YY_RULE_SETUP +#line 455 "util/configlexer.lex" +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } + YY_BREAK +case 241: +YY_RULE_SETUP +#line 456 "util/configlexer.lex" +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } + YY_BREAK +case 242: +YY_RULE_SETUP +#line 457 "util/configlexer.lex" +{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } + YY_BREAK +case 243: +YY_RULE_SETUP +#line 458 "util/configlexer.lex" +{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } + YY_BREAK +case 244: +YY_RULE_SETUP +#line 459 "util/configlexer.lex" +{ YDVAR(0, VAR_DNSTAP) } + YY_BREAK +case 245: +YY_RULE_SETUP +#line 460 "util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_ENABLE) } + YY_BREAK +case 246: +YY_RULE_SETUP +#line 461 "util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_BIDIRECTIONAL) } + YY_BREAK +case 247: +YY_RULE_SETUP +#line 462 "util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } + YY_BREAK +case 248: +YY_RULE_SETUP +#line 463 "util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_IP) } + YY_BREAK +case 249: +YY_RULE_SETUP +#line 464 "util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_TLS) } + YY_BREAK +case 250: +YY_RULE_SETUP +#line 465 "util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } + YY_BREAK +case 251: +YY_RULE_SETUP +#line 466 "util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } + YY_BREAK +case 252: +YY_RULE_SETUP +#line 467 "util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } + YY_BREAK +case 253: +YY_RULE_SETUP +#line 469 "util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } + YY_BREAK +case 254: +YY_RULE_SETUP +#line 471 "util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } + YY_BREAK +case 255: +YY_RULE_SETUP +#line 472 "util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } + YY_BREAK +case 256: +YY_RULE_SETUP +#line 473 "util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_IDENTITY) } + YY_BREAK +case 257: +YY_RULE_SETUP +#line 474 "util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_VERSION) } + YY_BREAK +case 258: +YY_RULE_SETUP +#line 475 "util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } + YY_BREAK +case 259: +YY_RULE_SETUP +#line 477 "util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } + YY_BREAK +case 260: +YY_RULE_SETUP +#line 479 "util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } + YY_BREAK +case 261: +YY_RULE_SETUP +#line 481 "util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } + YY_BREAK +case 262: +YY_RULE_SETUP +#line 483 "util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } + YY_BREAK +case 263: +YY_RULE_SETUP +#line 485 "util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } + YY_BREAK +case 264: +YY_RULE_SETUP +#line 487 "util/configlexer.lex" +{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } + YY_BREAK +case 265: +YY_RULE_SETUP +#line 488 "util/configlexer.lex" +{ YDVAR(1, VAR_IP_RATELIMIT) } + YY_BREAK +case 266: +YY_RULE_SETUP +#line 489 "util/configlexer.lex" +{ YDVAR(1, VAR_RATELIMIT) } + YY_BREAK +case 267: +YY_RULE_SETUP +#line 490 "util/configlexer.lex" +{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } + YY_BREAK +case 268: +YY_RULE_SETUP +#line 491 "util/configlexer.lex" +{ YDVAR(1, VAR_RATELIMIT_SLABS) } + YY_BREAK +case 269: +YY_RULE_SETUP +#line 492 "util/configlexer.lex" +{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } + YY_BREAK +case 270: +YY_RULE_SETUP +#line 493 "util/configlexer.lex" +{ YDVAR(1, VAR_RATELIMIT_SIZE) } + YY_BREAK +case 271: +YY_RULE_SETUP +#line 494 "util/configlexer.lex" +{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } + YY_BREAK +case 272: +YY_RULE_SETUP +#line 495 "util/configlexer.lex" +{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } + YY_BREAK +case 273: +YY_RULE_SETUP +#line 496 "util/configlexer.lex" +{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } + YY_BREAK +case 274: +YY_RULE_SETUP +#line 497 "util/configlexer.lex" +{ YDVAR(1, VAR_RATELIMIT_FACTOR) } + YY_BREAK +case 275: +YY_RULE_SETUP +#line 498 "util/configlexer.lex" +{ YDVAR(1, VAR_LOW_RTT) } + YY_BREAK +case 276: +YY_RULE_SETUP +#line 499 "util/configlexer.lex" +{ YDVAR(1, VAR_FAST_SERVER_NUM) } + YY_BREAK +case 277: +YY_RULE_SETUP +#line 500 "util/configlexer.lex" +{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } + YY_BREAK +case 278: +YY_RULE_SETUP +#line 501 "util/configlexer.lex" +{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } + YY_BREAK +case 279: +YY_RULE_SETUP +#line 502 "util/configlexer.lex" +{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } + YY_BREAK +case 280: +YY_RULE_SETUP +#line 503 "util/configlexer.lex" +{ YDVAR(2, VAR_RESPONSE_IP_TAG) } + YY_BREAK +case 281: +YY_RULE_SETUP +#line 504 "util/configlexer.lex" +{ YDVAR(2, VAR_RESPONSE_IP) } + YY_BREAK +case 282: +YY_RULE_SETUP +#line 505 "util/configlexer.lex" +{ YDVAR(2, VAR_RESPONSE_IP_DATA) } + YY_BREAK +case 283: +YY_RULE_SETUP +#line 506 "util/configlexer.lex" +{ YDVAR(0, VAR_DNSCRYPT) } + YY_BREAK +case 284: +YY_RULE_SETUP +#line 507 "util/configlexer.lex" +{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } + YY_BREAK +case 285: +YY_RULE_SETUP +#line 508 "util/configlexer.lex" +{ YDVAR(1, VAR_DNSCRYPT_PORT) } + YY_BREAK +case 286: +YY_RULE_SETUP +#line 509 "util/configlexer.lex" +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } + YY_BREAK +case 287: +YY_RULE_SETUP +#line 510 "util/configlexer.lex" +{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } + YY_BREAK +case 288: +YY_RULE_SETUP +#line 511 "util/configlexer.lex" +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } + YY_BREAK +case 289: +YY_RULE_SETUP +#line 512 "util/configlexer.lex" +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } + YY_BREAK +case 290: +YY_RULE_SETUP +#line 513 "util/configlexer.lex" +{ + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } + YY_BREAK +case 291: +YY_RULE_SETUP +#line 515 "util/configlexer.lex" +{ + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } + YY_BREAK +case 292: +YY_RULE_SETUP +#line 517 "util/configlexer.lex" +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } + YY_BREAK +case 293: +YY_RULE_SETUP +#line 518 "util/configlexer.lex" +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } + YY_BREAK +case 294: +YY_RULE_SETUP +#line 519 "util/configlexer.lex" +{ YDVAR(1, VAR_PAD_RESPONSES) } + YY_BREAK +case 295: +YY_RULE_SETUP +#line 520 "util/configlexer.lex" +{ YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) } + YY_BREAK +case 296: +YY_RULE_SETUP +#line 521 "util/configlexer.lex" +{ YDVAR(1, VAR_PAD_QUERIES) } + YY_BREAK +case 297: +YY_RULE_SETUP +#line 522 "util/configlexer.lex" +{ YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) } + YY_BREAK +case 298: +YY_RULE_SETUP +#line 523 "util/configlexer.lex" +{ YDVAR(1, VAR_IPSECMOD_ENABLED) } + YY_BREAK +case 299: +YY_RULE_SETUP +#line 524 "util/configlexer.lex" +{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } + YY_BREAK +case 300: +YY_RULE_SETUP +#line 525 "util/configlexer.lex" +{ YDVAR(1, VAR_IPSECMOD_HOOK) } + YY_BREAK +case 301: +YY_RULE_SETUP +#line 526 "util/configlexer.lex" +{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } + YY_BREAK +case 302: +YY_RULE_SETUP +#line 527 "util/configlexer.lex" +{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } + YY_BREAK +case 303: +YY_RULE_SETUP +#line 528 "util/configlexer.lex" +{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } + YY_BREAK +case 304: +YY_RULE_SETUP +#line 529 "util/configlexer.lex" +{ YDVAR(1, VAR_IPSECMOD_STRICT) } + YY_BREAK +case 305: +YY_RULE_SETUP +#line 530 "util/configlexer.lex" +{ YDVAR(0, VAR_CACHEDB) } + YY_BREAK +case 306: +YY_RULE_SETUP +#line 531 "util/configlexer.lex" +{ YDVAR(1, VAR_CACHEDB_BACKEND) } + YY_BREAK +case 307: +YY_RULE_SETUP +#line 532 "util/configlexer.lex" +{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } + YY_BREAK +case 308: +YY_RULE_SETUP +#line 533 "util/configlexer.lex" +{ YDVAR(1, VAR_CACHEDB_REDISHOST) } + YY_BREAK +case 309: +YY_RULE_SETUP +#line 534 "util/configlexer.lex" +{ YDVAR(1, VAR_CACHEDB_REDISPORT) } + YY_BREAK +case 310: +YY_RULE_SETUP +#line 535 "util/configlexer.lex" +{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } + YY_BREAK +case 311: +YY_RULE_SETUP +#line 536 "util/configlexer.lex" +{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } + YY_BREAK +case 312: +YY_RULE_SETUP +#line 537 "util/configlexer.lex" +{ YDVAR(0, VAR_IPSET) } + YY_BREAK +case 313: +YY_RULE_SETUP +#line 538 "util/configlexer.lex" +{ YDVAR(1, VAR_IPSET_NAME_V4) } + YY_BREAK +case 314: +YY_RULE_SETUP +#line 539 "util/configlexer.lex" +{ YDVAR(1, VAR_IPSET_NAME_V6) } + YY_BREAK +case 315: +YY_RULE_SETUP +#line 540 "util/configlexer.lex" +{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } + YY_BREAK +case 316: +YY_RULE_SETUP +#line 541 "util/configlexer.lex" +{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } + YY_BREAK +case 317: +YY_RULE_SETUP +#line 542 "util/configlexer.lex" +{ YDVAR(2, VAR_EDNS_CLIENT_STRING) } + YY_BREAK +case 318: +YY_RULE_SETUP +#line 543 "util/configlexer.lex" +{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) } + YY_BREAK +case 319: +YY_RULE_SETUP +#line 544 "util/configlexer.lex" +{ YDVAR(1, VAR_NSID ) } + YY_BREAK +case 320: +/* rule 320 can match eol */ +YY_RULE_SETUP +#line 545 "util/configlexer.lex" +{ LEXOUT(("NL\n")); cfg_parser->line++; } + YY_BREAK +/* Quoted strings. Strip leading and ending quotes */ +case 321: +YY_RULE_SETUP +#line 548 "util/configlexer.lex" +{ BEGIN(quotedstring); LEXOUT(("QS ")); } + YY_BREAK +case YY_STATE_EOF(quotedstring): +#line 549 "util/configlexer.lex" +{ + yyerror("EOF inside quoted string"); + if(--num_args == 0) { BEGIN(INITIAL); } + else { BEGIN(val); } +} + YY_BREAK +case 322: +YY_RULE_SETUP +#line 554 "util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 323: +/* rule 323 can match eol */ +YY_RULE_SETUP +#line 555 "util/configlexer.lex" +{ yyerror("newline inside quoted string, no end \""); + cfg_parser->line++; BEGIN(INITIAL); } + YY_BREAK +case 324: +YY_RULE_SETUP +#line 557 "util/configlexer.lex" +{ + LEXOUT(("QE ")); + if(--num_args == 0) { BEGIN(INITIAL); } + else { BEGIN(val); } + yytext[yyleng - 1] = '\0'; + yylval.str = strdup(yytext); + if(!yylval.str) + yyerror("out of memory"); + return STRING_ARG; +} + YY_BREAK +/* Single Quoted strings. Strip leading and ending quotes */ +case 325: +YY_RULE_SETUP +#line 569 "util/configlexer.lex" +{ BEGIN(singlequotedstr); LEXOUT(("SQS ")); } + YY_BREAK +case YY_STATE_EOF(singlequotedstr): +#line 570 "util/configlexer.lex" +{ + yyerror("EOF inside quoted string"); + if(--num_args == 0) { BEGIN(INITIAL); } + else { BEGIN(val); } +} + YY_BREAK +case 326: +YY_RULE_SETUP +#line 575 "util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 327: +/* rule 327 can match eol */ +YY_RULE_SETUP +#line 576 "util/configlexer.lex" +{ yyerror("newline inside quoted string, no end '"); + cfg_parser->line++; BEGIN(INITIAL); } + YY_BREAK +case 328: +YY_RULE_SETUP +#line 578 "util/configlexer.lex" +{ + LEXOUT(("SQE ")); + if(--num_args == 0) { BEGIN(INITIAL); } + else { BEGIN(val); } + yytext[yyleng - 1] = '\0'; + yylval.str = strdup(yytext); + if(!yylval.str) + yyerror("out of memory"); + return STRING_ARG; +} + YY_BREAK +/* include: directive */ +case 329: +YY_RULE_SETUP +#line 590 "util/configlexer.lex" +{ + LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } + YY_BREAK +case YY_STATE_EOF(include): +#line 592 "util/configlexer.lex" +{ + yyerror("EOF inside include directive"); + BEGIN(inc_prev); +} + YY_BREAK +case 330: +YY_RULE_SETUP +#line 596 "util/configlexer.lex" +{ LEXOUT(("ISP ")); /* ignore */ } + YY_BREAK +case 331: +/* rule 331 can match eol */ +YY_RULE_SETUP +#line 597 "util/configlexer.lex" +{ LEXOUT(("NL\n")); cfg_parser->line++;} + YY_BREAK +case 332: +YY_RULE_SETUP +#line 598 "util/configlexer.lex" +{ LEXOUT(("IQS ")); BEGIN(include_quoted); } + YY_BREAK +case 333: +YY_RULE_SETUP +#line 599 "util/configlexer.lex" +{ + LEXOUT(("Iunquotedstr(%s) ", yytext)); + config_start_include_glob(yytext, 0); + BEGIN(inc_prev); +} + YY_BREAK +case YY_STATE_EOF(include_quoted): +#line 604 "util/configlexer.lex" +{ + yyerror("EOF inside quoted string"); + BEGIN(inc_prev); +} + YY_BREAK +case 334: +YY_RULE_SETUP +#line 608 "util/configlexer.lex" +{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } + YY_BREAK +case 335: +/* rule 335 can match eol */ +YY_RULE_SETUP +#line 609 "util/configlexer.lex" +{ yyerror("newline before \" in include name"); + cfg_parser->line++; BEGIN(inc_prev); } + YY_BREAK +case 336: +YY_RULE_SETUP +#line 611 "util/configlexer.lex" +{ + LEXOUT(("IQE ")); + yytext[yyleng - 1] = '\0'; + config_start_include_glob(yytext, 0); + BEGIN(inc_prev); +} + YY_BREAK +case YY_STATE_EOF(INITIAL): +case YY_STATE_EOF(val): +#line 617 "util/configlexer.lex" +{ + LEXOUT(("LEXEOF ")); + yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ + if (!config_include_stack) { + yyterminate(); + } else { + int prev_toplevel = inc_toplevel; + fclose(yyin); + config_end_include(); + if(prev_toplevel) return (VAR_FORCE_TOPLEVEL); + } +} + YY_BREAK +/* include-toplevel: directive */ +case 337: +YY_RULE_SETUP +#line 631 "util/configlexer.lex" +{ + LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include_toplevel); +} + YY_BREAK +case YY_STATE_EOF(include_toplevel): +#line 634 "util/configlexer.lex" +{ + yyerror("EOF inside include_toplevel directive"); + BEGIN(inc_prev); +} + YY_BREAK +case 338: +YY_RULE_SETUP +#line 638 "util/configlexer.lex" +{ LEXOUT(("ITSP ")); /* ignore */ } + YY_BREAK +case 339: +/* rule 339 can match eol */ +YY_RULE_SETUP +#line 639 "util/configlexer.lex" +{ LEXOUT(("NL\n")); cfg_parser->line++; } + YY_BREAK +case 340: +YY_RULE_SETUP +#line 640 "util/configlexer.lex" +{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } + YY_BREAK +case 341: +YY_RULE_SETUP +#line 641 "util/configlexer.lex" +{ + LEXOUT(("ITunquotedstr(%s) ", yytext)); + config_start_include_glob(yytext, 1); + BEGIN(inc_prev); + return (VAR_FORCE_TOPLEVEL); +} + YY_BREAK +case YY_STATE_EOF(include_toplevel_quoted): +#line 647 "util/configlexer.lex" +{ + yyerror("EOF inside quoted string"); + BEGIN(inc_prev); +} + YY_BREAK +case 342: +YY_RULE_SETUP +#line 651 "util/configlexer.lex" +{ LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } + YY_BREAK +case 343: +/* rule 343 can match eol */ +YY_RULE_SETUP +#line 652 "util/configlexer.lex" +{ + yyerror("newline before \" in include name"); + cfg_parser->line++; BEGIN(inc_prev); +} + YY_BREAK +case 344: +YY_RULE_SETUP +#line 656 "util/configlexer.lex" +{ + LEXOUT(("ITQE ")); + yytext[yyleng - 1] = '\0'; + config_start_include_glob(yytext, 1); + BEGIN(inc_prev); + return (VAR_FORCE_TOPLEVEL); +} + YY_BREAK +case 345: +YY_RULE_SETUP +#line 664 "util/configlexer.lex" +{ LEXOUT(("unquotedstr(%s) ", yytext)); + if(--num_args == 0) { BEGIN(INITIAL); } + yylval.str = strdup(yytext); return STRING_ARG; } + YY_BREAK +case 346: +YY_RULE_SETUP +#line 668 "util/configlexer.lex" +{ + ub_c_error_msg("unknown keyword '%s'", yytext); + } + YY_BREAK +case 347: +YY_RULE_SETUP +#line 672 "util/configlexer.lex" +{ + ub_c_error_msg("stray '%s'", yytext); + } + YY_BREAK +case 348: +YY_RULE_SETUP +#line 676 "util/configlexer.lex" +ECHO; + YY_BREAK +#line 6121 "" + + case YY_END_OF_BUFFER: + { + /* Amount of text matched not including the EOB char. */ + int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; + + /* Undo the effects of YY_DO_BEFORE_ACTION. */ + *yy_cp = (yy_hold_char); + YY_RESTORE_YY_MORE_OFFSET + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) + { + /* We're scanning a new file or input source. It's + * possible that this happened because the user + * just pointed yyin at a new source and called + * yylex(). If so, then we have to assure + * consistency between YY_CURRENT_BUFFER and our + * globals. Here is the right place to do so, because + * this is the first action (other than possibly a + * back-up) that will match for the new input source. + */ + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; + } + + /* Note that here we test for yy_c_buf_p "<=" to the position + * of the first EOB in the buffer, since yy_c_buf_p will + * already have been incremented past the NUL character + * (since all states make transitions on EOB to the + * end-of-buffer state). Contrast this with the test + * in input(). + */ + if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + { /* This was really a NUL. */ + yy_state_type yy_next_state; + + (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( ); + + /* Okay, we're now positioned to make the NUL + * transition. We couldn't have + * yy_get_previous_state() go ahead and do it + * for us because it doesn't know how to deal + * with the possibility of jamming (and we don't + * want to build jamming into it because then it + * will run more slowly). + */ + + yy_next_state = yy_try_NUL_trans( yy_current_state ); + + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + + if ( yy_next_state ) + { + /* Consume the NUL. */ + yy_cp = ++(yy_c_buf_p); + yy_current_state = yy_next_state; + goto yy_match; + } + + else + { + yy_cp = (yy_c_buf_p); + goto yy_find_action; + } + } + + else switch ( yy_get_next_buffer( ) ) + { + case EOB_ACT_END_OF_FILE: + { + (yy_did_buffer_switch_on_eof) = 0; + + if ( yywrap( ) ) + { + /* Note: because we've taken care in + * yy_get_next_buffer() to have set up + * yytext, we can now set up + * yy_c_buf_p so that if some total + * hoser (like flex itself) wants to + * call the scanner after we return the + * YY_NULL, it'll still work - another + * YY_NULL will get returned. + */ + (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; + + yy_act = YY_STATE_EOF(YY_START); + goto do_action; + } + + else + { + if ( ! (yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; + } + break; + } + + case EOB_ACT_CONTINUE_SCAN: + (yy_c_buf_p) = + (yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( ); + + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + goto yy_match; + + case EOB_ACT_LAST_MATCH: + (yy_c_buf_p) = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; + + yy_current_state = yy_get_previous_state( ); + + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + goto yy_find_action; + } + break; + } + + default: + YY_FATAL_ERROR( + "fatal flex scanner internal error--no action found" ); + } /* end of action switch */ + } /* end of scanning one token */ +} /* end of yylex */ + +/* yy_get_next_buffer - try to read in a new buffer + * + * Returns a code representing an action: + * EOB_ACT_LAST_MATCH - + * EOB_ACT_CONTINUE_SCAN - continue scanning from current position + * EOB_ACT_END_OF_FILE - end of file + */ +static int yy_get_next_buffer (void) +{ + register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + register char *source = (yytext_ptr); + register int number_to_move, i; + int ret_val; + + if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) + YY_FATAL_ERROR( + "fatal flex scanner internal error--end of buffer missed" ); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) + { /* Don't try to fill the buffer, so this is an EOF. */ + if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) + { + /* We matched a single character, the EOB, so + * treat this as a final EOF. + */ + return EOB_ACT_END_OF_FILE; + } + + else + { + /* We matched some text prior to the EOB, first + * process it. + */ + return EOB_ACT_LAST_MATCH; + } + } + + /* Try to read more data. */ + + /* First move last chars to start of buffer. */ + number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; + + for ( i = 0; i < number_to_move; ++i ) + *(dest++) = *(source++); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) + /* don't do the read, it's not guaranteed to return an EOF, + * just force an EOF + */ + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; + + else + { + yy_size_t num_to_read = + YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; + + while ( num_to_read <= 0 ) + { /* Not enough room in the buffer - grow it. */ + + /* just a shorter name for the current buffer */ + YY_BUFFER_STATE b = YY_CURRENT_BUFFER; + + int yy_c_buf_p_offset = + (int) ((yy_c_buf_p) - b->yy_ch_buf); + + if ( b->yy_is_our_buffer ) + { + yy_size_t new_size = b->yy_buf_size * 2; + + if ( new_size <= 0 ) + b->yy_buf_size += b->yy_buf_size / 8; + else + b->yy_buf_size *= 2; + + b->yy_ch_buf = (char *) + /* Include room in for 2 EOB chars. */ + yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); + } + else + /* Can't grow it, we don't own it. */ + b->yy_ch_buf = 0; + + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( + "fatal error - scanner input buffer overflow" ); + + (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; + + num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - + number_to_move - 1; + + } + + if ( num_to_read > YY_READ_BUF_SIZE ) + num_to_read = YY_READ_BUF_SIZE; + + /* Read in more data. */ + YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), + (yy_n_chars), num_to_read ); + + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + if ( (yy_n_chars) == 0 ) + { + if ( number_to_move == YY_MORE_ADJ ) + { + ret_val = EOB_ACT_END_OF_FILE; + yyrestart(yyin ); + } + + else + { + ret_val = EOB_ACT_LAST_MATCH; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = + YY_BUFFER_EOF_PENDING; + } + } + + else + ret_val = EOB_ACT_CONTINUE_SCAN; + + if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { + /* Extend the array by 50%, plus the number we really need. */ + yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); + if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); + } + + (yy_n_chars) += number_to_move; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; + + (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; + + return ret_val; +} + +/* yy_get_previous_state - get the state just before the EOB char was reached */ + + static yy_state_type yy_get_previous_state (void) +{ + register yy_state_type yy_current_state; + register char *yy_cp; + + yy_current_state = (yy_start); + + for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) + { + register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + 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 >= 3439 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + } + + return yy_current_state; +} + +/* yy_try_NUL_trans - try to make a transition on the NUL character + * + * synopsis + * next_state = yy_try_NUL_trans( current_state ); + */ + static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) +{ + register int yy_is_jam; + register char *yy_cp = (yy_c_buf_p); + + register YY_CHAR yy_c = 1; + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + 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 >= 3439 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + yy_is_jam = (yy_current_state == 3438); + + return yy_is_jam ? 0 : yy_current_state; +} + +#ifndef YY_NO_INPUT +#ifdef __cplusplus + static int yyinput (void) +#else + static int input (void) +#endif + +{ + int c; + + *(yy_c_buf_p) = (yy_hold_char); + + if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) + { + /* yy_c_buf_p now points to the character we want to return. + * If this occurs *before* the EOB characters, then it's a + * valid NUL; if not, then we've hit the end of the buffer. + */ + if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + /* This was really a NUL. */ + *(yy_c_buf_p) = '\0'; + + else + { /* need more input */ + yy_size_t offset = (yy_c_buf_p) - (yytext_ptr); + ++(yy_c_buf_p); + + switch ( yy_get_next_buffer( ) ) + { + case EOB_ACT_LAST_MATCH: + /* This happens because yy_g_n_b() + * sees that we've accumulated a + * token and flags that we need to + * try matching the token before + * proceeding. But for input(), + * there's no matching to consider. + * So convert the EOB_ACT_LAST_MATCH + * to EOB_ACT_END_OF_FILE. + */ + + /* Reset buffer status. */ + yyrestart(yyin ); + + /*FALLTHROUGH*/ + + case EOB_ACT_END_OF_FILE: + { + if ( yywrap( ) ) + return 0; + + if ( ! (yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; +#ifdef __cplusplus + return yyinput(); +#else + return input(); +#endif + } + + case EOB_ACT_CONTINUE_SCAN: + (yy_c_buf_p) = (yytext_ptr) + offset; + break; + } + } + } + + c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ + *(yy_c_buf_p) = '\0'; /* preserve yytext */ + (yy_hold_char) = *++(yy_c_buf_p); + + return c; +} +#endif /* ifndef YY_NO_INPUT */ + +/** Immediately switch to a different input stream. + * @param input_file A readable stream. + * + * @note This function does not reset the start condition to @c INITIAL . + */ + void yyrestart (FILE * input_file ) +{ + + if ( ! YY_CURRENT_BUFFER ){ + yyensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + yy_create_buffer(yyin,YY_BUF_SIZE ); + } + + yy_init_buffer(YY_CURRENT_BUFFER,input_file ); + yy_load_buffer_state( ); +} + +/** Switch to a different input buffer. + * @param new_buffer The new input buffer. + * + */ + void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) +{ + + /* TODO. We should be able to replace this entire function body + * with + * yypop_buffer_state(); + * yypush_buffer_state(new_buffer); + */ + yyensure_buffer_stack (); + if ( YY_CURRENT_BUFFER == new_buffer ) + return; + + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + YY_CURRENT_BUFFER_LVALUE = new_buffer; + yy_load_buffer_state( ); + + /* We don't actually know whether we did this switch during + * EOF (yywrap()) processing, but the only time this flag + * is looked at is after yywrap() is called, so it's safe + * to go ahead and always set it. + */ + (yy_did_buffer_switch_on_eof) = 1; +} + +static void yy_load_buffer_state (void) +{ + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; + yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; + (yy_hold_char) = *(yy_c_buf_p); +} + +/** Allocate and initialize an input buffer state. + * @param file A readable stream. + * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. + * + * @return the allocated buffer state. + */ + YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) +{ + YY_BUFFER_STATE b; + + b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_buf_size = size; + + /* yy_ch_buf has to be 2 characters longer than the size given because + * we need to put in 2 end-of-buffer characters. + */ + b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 ); + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_is_our_buffer = 1; + + yy_init_buffer(b,file ); + + return b; +} + +/** Destroy the buffer. + * @param b a buffer created with yy_create_buffer() + * + */ + void yy_delete_buffer (YY_BUFFER_STATE b ) +{ + + if ( ! b ) + return; + + if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ + YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; + + if ( b->yy_is_our_buffer ) + yyfree((void *) b->yy_ch_buf ); + + yyfree((void *) b ); +} + +#ifndef __cplusplus +extern int isatty (int ); +#endif /* __cplusplus */ + +/* Initializes or reinitializes a buffer. + * This function is sometimes called more than once on the same buffer, + * such as during a yyrestart() or at EOF. + */ + static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) + +{ + int oerrno = errno; + + yy_flush_buffer(b ); + + b->yy_input_file = file; + b->yy_fill_buffer = 1; + + /* If b is the current buffer, then yy_init_buffer was _probably_ + * called from yyrestart() or through yy_get_next_buffer. + * In that case, we don't want to reset the lineno or column. + */ + if (b != YY_CURRENT_BUFFER){ + b->yy_bs_lineno = 1; + b->yy_bs_column = 0; + } + + b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; + + errno = oerrno; +} + +/** Discard all buffered characters. On the next scan, YY_INPUT will be called. + * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. + * + */ + void yy_flush_buffer (YY_BUFFER_STATE b ) +{ + if ( ! b ) + return; + + b->yy_n_chars = 0; + + /* We always need two end-of-buffer characters. The first causes + * a transition to the end-of-buffer state. The second causes + * a jam in that state. + */ + b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; + b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; + + b->yy_buf_pos = &b->yy_ch_buf[0]; + + b->yy_at_bol = 1; + b->yy_buffer_status = YY_BUFFER_NEW; + + if ( b == YY_CURRENT_BUFFER ) + yy_load_buffer_state( ); +} + +/** Pushes the new state onto the stack. The new state becomes + * the current state. This function will allocate the stack + * if necessary. + * @param new_buffer The new state. + * + */ +void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) +{ + if (new_buffer == NULL) + return; + + yyensure_buffer_stack(); + + /* This block is copied from yy_switch_to_buffer. */ + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + /* Only push if top exists. Otherwise, replace top. */ + if (YY_CURRENT_BUFFER) + (yy_buffer_stack_top)++; + YY_CURRENT_BUFFER_LVALUE = new_buffer; + + /* copied from yy_switch_to_buffer. */ + yy_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; +} + +/** Removes and deletes the top of the stack, if present. + * The next element becomes the new top. + * + */ +void yypop_buffer_state (void) +{ + if (!YY_CURRENT_BUFFER) + return; + + yy_delete_buffer(YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + if ((yy_buffer_stack_top) > 0) + --(yy_buffer_stack_top); + + if (YY_CURRENT_BUFFER) { + yy_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; + } +} + +/* Allocates the stack if it does not exist. + * Guarantees space for at least one push. + */ +static void yyensure_buffer_stack (void) +{ + yy_size_t num_to_alloc; + + if (!(yy_buffer_stack)) { + + /* First allocation is just for 2 elements, since we don't know if this + * scanner will even need a stack. We use 2 instead of 1 to avoid an + * immediate realloc on the next call. + */ + num_to_alloc = 1; + (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc + (num_to_alloc * sizeof(struct yy_buffer_state*) + ); + if ( ! (yy_buffer_stack) ) + YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); + + memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); + + (yy_buffer_stack_max) = num_to_alloc; + (yy_buffer_stack_top) = 0; + return; + } + + if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ + + /* Increase the buffer to prepare for a possible push. */ + int grow_size = 8 /* arbitrary grow size */; + + num_to_alloc = (yy_buffer_stack_max) + grow_size; + (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc + ((yy_buffer_stack), + num_to_alloc * sizeof(struct yy_buffer_state*) + ); + if ( ! (yy_buffer_stack) ) + YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); + + /* zero only the new slots.*/ + memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); + (yy_buffer_stack_max) = num_to_alloc; + } +} + +/** Setup the input buffer state to scan directly from a user-specified character buffer. + * @param base the character buffer + * @param size the size in bytes of the character buffer + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) +{ + YY_BUFFER_STATE b; + + if ( size < 2 || + base[size-2] != YY_END_OF_BUFFER_CHAR || + base[size-1] != YY_END_OF_BUFFER_CHAR ) + /* They forgot to leave room for the EOB's. */ + return 0; + + b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); + + b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ + b->yy_buf_pos = b->yy_ch_buf = base; + b->yy_is_our_buffer = 0; + b->yy_input_file = 0; + b->yy_n_chars = b->yy_buf_size; + b->yy_is_interactive = 0; + b->yy_at_bol = 1; + b->yy_fill_buffer = 0; + b->yy_buffer_status = YY_BUFFER_NEW; + + yy_switch_to_buffer(b ); + + return b; +} + +/** Setup the input buffer state to scan a string. The next call to yylex() will + * scan from a @e copy of @a str. + * @param yystr a NUL-terminated string to scan + * + * @return the newly allocated buffer state object. + * @note If you want to scan bytes that may contain NUL values, then use + * yy_scan_bytes() instead. + */ +YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) +{ + + return yy_scan_bytes(yystr,strlen(yystr) ); +} + +/** Setup the input buffer state to scan the given bytes. The next call to yylex() will + * scan from a @e copy of @a bytes. + * @param bytes the byte buffer to scan + * @param len the number of bytes in the buffer pointed to by @a bytes. + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len ) +{ + YY_BUFFER_STATE b; + char *buf; + yy_size_t n, i; + + /* Get memory for full buffer, including space for trailing EOB's. */ + n = _yybytes_len + 2; + buf = (char *) yyalloc(n ); + if ( ! buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); + + for ( i = 0; i < _yybytes_len; ++i ) + buf[i] = yybytes[i]; + + buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; + + b = yy_scan_buffer(buf,n ); + if ( ! b ) + YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); + + /* It's okay to grow etc. this buffer, and we should throw it + * away when we're done. + */ + b->yy_is_our_buffer = 1; + + return b; +} + +#ifndef YY_EXIT_FAILURE +#define YY_EXIT_FAILURE 2 +#endif + +static void yy_fatal_error (yyconst char* msg ) +{ + (void) fprintf( stderr, "%s\n", msg ); + exit( YY_EXIT_FAILURE ); +} + +/* Redefine yyless() so it works in section 3 code. */ + +#undef yyless +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + yytext[yyleng] = (yy_hold_char); \ + (yy_c_buf_p) = yytext + yyless_macro_arg; \ + (yy_hold_char) = *(yy_c_buf_p); \ + *(yy_c_buf_p) = '\0'; \ + yyleng = yyless_macro_arg; \ + } \ + while ( 0 ) + +/* Accessor methods (get/set functions) to struct members. */ + +/** Get the current line number. + * + */ +int yyget_lineno (void) +{ + + return yylineno; +} + +/** Get the input stream. + * + */ +FILE *yyget_in (void) +{ + return yyin; +} + +/** Get the output stream. + * + */ +FILE *yyget_out (void) +{ + return yyout; +} + +/** Get the length of the current token. + * + */ +yy_size_t yyget_leng (void) +{ + return yyleng; +} + +/** Get the current token. + * + */ + +char *yyget_text (void) +{ + return yytext; +} + +/** Set the current line number. + * @param line_number + * + */ +void yyset_lineno (int line_number ) +{ + + yylineno = line_number; +} + +/** Set the input stream. This does not discard the current + * input buffer. + * @param in_str A readable stream. + * + * @see yy_switch_to_buffer + */ +void yyset_in (FILE * in_str ) +{ + yyin = in_str ; +} + +void yyset_out (FILE * out_str ) +{ + yyout = out_str ; +} + +int yyget_debug (void) +{ + return yy_flex_debug; +} + +void yyset_debug (int bdebug ) +{ + yy_flex_debug = bdebug ; +} + +static int yy_init_globals (void) +{ + /* Initialization is the same as for the non-reentrant scanner. + * This function is called from yylex_destroy(), so don't allocate here. + */ + + (yy_buffer_stack) = 0; + (yy_buffer_stack_top) = 0; + (yy_buffer_stack_max) = 0; + (yy_c_buf_p) = (char *) 0; + (yy_init) = 0; + (yy_start) = 0; + +/* Defined in main.c */ +#ifdef YY_STDINIT + yyin = stdin; + yyout = stdout; +#else + yyin = (FILE *) 0; + yyout = (FILE *) 0; +#endif + + /* For future reference: Set errno on error, since we are called by + * yylex_init() + */ + return 0; +} + +/* yylex_destroy is for both reentrant and non-reentrant scanners. */ +int yylex_destroy (void) +{ + + /* Pop the buffer stack, destroying each element. */ + while(YY_CURRENT_BUFFER){ + yy_delete_buffer(YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + yypop_buffer_state(); + } + + /* Destroy the stack itself. */ + yyfree((yy_buffer_stack) ); + (yy_buffer_stack) = NULL; + + /* Reset the globals. This is important in a non-reentrant scanner so the next time + * yylex() is called, initialization will occur. */ + yy_init_globals( ); + + return 0; +} + +/* + * Internal utility routines. + */ + +#ifndef yytext_ptr +static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) +{ + register int i; + for ( i = 0; i < n; ++i ) + s1[i] = s2[i]; +} +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (yyconst char * s ) +{ + register int n; + for ( n = 0; s[n]; ++n ) + ; + + return n; +} +#endif + +void *yyalloc (yy_size_t size ) +{ + return (void *) malloc( size ); +} + +void *yyrealloc (void * ptr, yy_size_t size ) +{ + /* The cast to (char *) in the following accommodates both + * implementations that use char* generic pointers, and those + * that use void* generic pointers. It works with the latter + * because both ANSI C and C++ allow castless assignment from + * any pointer type to void*, and deal with argument conversions + * as though doing an assignment. + */ + return (void *) realloc( (char *) ptr, size ); +} + +void yyfree (void * ptr ) +{ + free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ +} + +#define YYTABLES_NAME "yytables" + +#line 676 "util/configlexer.lex" + + + diff --git a/util/configlexer.lex b/util/configlexer.lex index c031fab39..e982463d1 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -237,6 +237,7 @@ outgoing-tcp-mss{COLON} { YDVAR(1, VAR_OUTGOING_TCP_MSS) } tcp-idle-timeout{COLON} { YDVAR(1, VAR_TCP_IDLE_TIMEOUT) } max-reuse-tcp-queries{COLON} { YDVAR(1, VAR_MAX_REUSE_TCP_QUERIES) } tcp-reuse-timeout{COLON} { YDVAR(1, VAR_TCP_REUSE_TIMEOUT) } +tcp-auth-query-timeout{COLON} { YDVAR(1, VAR_TCP_AUTH_QUERY_TIMEOUT) } edns-tcp-keepalive{COLON} { YDVAR(1, VAR_EDNS_TCP_KEEPALIVE) } edns-tcp-keepalive-timeout{COLON} { YDVAR(1, VAR_EDNS_TCP_KEEPALIVE_TIMEOUT) } ssl-upstream{COLON} { YDVAR(1, VAR_SSL_UPSTREAM) } diff --git a/util/configparser.c b/util/configparser.c index 3acfe4452..e37e5551b 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -1,14 +1,14 @@ -/* A Bison parser, made by GNU Bison 3.6.4. */ +/* A Bison parser, made by GNU Bison 2.3. */ -/* Bison implementation for Yacc-like parsers in C +/* Skeleton implementation for Bison's Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, - Inc. + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. - This program is free software: you can redistribute it and/or modify + 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. + the Free Software Foundation; either version 2, 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 @@ -16,7 +16,9 @@ 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 . */ + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work @@ -34,10 +36,6 @@ /* C LALR(1) parser skeleton written by Richard Stallman, by simplifying the original so-called "semantic" parser. */ -/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, - especially those whose name start with YY_ or yy_. They are - private implementation details that can be changed or removed. */ - /* 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. @@ -49,7 +47,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "3.6.4" +#define YYBISON_VERSION "2.3" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -57,406 +55,331 @@ /* Pure parsers. */ #define YYPURE 0 -/* Push parsers. */ -#define YYPUSH 0 - -/* Pull parsers. */ -#define YYPULL 1 +/* Using locations. */ +#define YYLSP_NEEDED 0 - -/* First part of user prologue. */ -#line 38 "./util/configparser.y" - -#include "config.h" - -#include -#include -#include -#include -#include - -#include "util/configyyrename.h" -#include "util/config_file.h" -#include "util/net_help.h" - -int ub_c_lex(void); -void ub_c_error(const char *message); - -static void validate_respip_action(const char* action); - -/* these need to be global, otherwise they cannot be used inside yacc */ -extern struct config_parser_state* cfg_parser; - -#if 0 -#define OUTYY(s) printf s /* used ONLY when debugging */ -#else -#define OUTYY(s) -#endif - - -#line 100 "util/configparser.c" - -# ifndef YY_CAST -# ifdef __cplusplus -# define YY_CAST(Type, Val) static_cast (Val) -# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast (Val) -# else -# define YY_CAST(Type, Val) ((Type) (Val)) -# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val)) -# endif -# endif -# 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 - -/* Use api.header.include to #include this header - instead of duplicating it here. */ -#ifndef YY_YY_UTIL_CONFIGPARSER_H_INCLUDED -# define YY_YY_UTIL_CONFIGPARSER_H_INCLUDED -/* Debug traces. */ -#ifndef YYDEBUG -# define YYDEBUG 0 -#endif -#if YYDEBUG -extern int yydebug; -#endif - -/* Token kinds. */ +/* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE - enum yytokentype - { - YYEMPTY = -2, - YYEOF = 0, /* "end of file" */ - YYerror = 256, /* error */ - YYUNDEF = 257, /* "invalid token" */ - SPACE = 258, /* SPACE */ - LETTER = 259, /* LETTER */ - NEWLINE = 260, /* NEWLINE */ - COMMENT = 261, /* COMMENT */ - COLON = 262, /* COLON */ - ANY = 263, /* ANY */ - ZONESTR = 264, /* ZONESTR */ - STRING_ARG = 265, /* STRING_ARG */ - VAR_FORCE_TOPLEVEL = 266, /* VAR_FORCE_TOPLEVEL */ - VAR_SERVER = 267, /* VAR_SERVER */ - VAR_VERBOSITY = 268, /* VAR_VERBOSITY */ - VAR_NUM_THREADS = 269, /* VAR_NUM_THREADS */ - VAR_PORT = 270, /* VAR_PORT */ - VAR_OUTGOING_RANGE = 271, /* VAR_OUTGOING_RANGE */ - VAR_INTERFACE = 272, /* VAR_INTERFACE */ - VAR_PREFER_IP4 = 273, /* VAR_PREFER_IP4 */ - VAR_DO_IP4 = 274, /* VAR_DO_IP4 */ - VAR_DO_IP6 = 275, /* VAR_DO_IP6 */ - VAR_PREFER_IP6 = 276, /* VAR_PREFER_IP6 */ - VAR_DO_UDP = 277, /* VAR_DO_UDP */ - VAR_DO_TCP = 278, /* VAR_DO_TCP */ - VAR_TCP_MSS = 279, /* VAR_TCP_MSS */ - VAR_OUTGOING_TCP_MSS = 280, /* VAR_OUTGOING_TCP_MSS */ - VAR_TCP_IDLE_TIMEOUT = 281, /* VAR_TCP_IDLE_TIMEOUT */ - VAR_EDNS_TCP_KEEPALIVE = 282, /* VAR_EDNS_TCP_KEEPALIVE */ - VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 283, /* VAR_EDNS_TCP_KEEPALIVE_TIMEOUT */ - VAR_CHROOT = 284, /* VAR_CHROOT */ - VAR_USERNAME = 285, /* VAR_USERNAME */ - VAR_DIRECTORY = 286, /* VAR_DIRECTORY */ - VAR_LOGFILE = 287, /* VAR_LOGFILE */ - VAR_PIDFILE = 288, /* VAR_PIDFILE */ - VAR_MSG_CACHE_SIZE = 289, /* VAR_MSG_CACHE_SIZE */ - VAR_MSG_CACHE_SLABS = 290, /* VAR_MSG_CACHE_SLABS */ - VAR_NUM_QUERIES_PER_THREAD = 291, /* VAR_NUM_QUERIES_PER_THREAD */ - VAR_RRSET_CACHE_SIZE = 292, /* VAR_RRSET_CACHE_SIZE */ - VAR_RRSET_CACHE_SLABS = 293, /* VAR_RRSET_CACHE_SLABS */ - VAR_OUTGOING_NUM_TCP = 294, /* VAR_OUTGOING_NUM_TCP */ - VAR_INFRA_HOST_TTL = 295, /* VAR_INFRA_HOST_TTL */ - VAR_INFRA_LAME_TTL = 296, /* VAR_INFRA_LAME_TTL */ - VAR_INFRA_CACHE_SLABS = 297, /* VAR_INFRA_CACHE_SLABS */ - VAR_INFRA_CACHE_NUMHOSTS = 298, /* VAR_INFRA_CACHE_NUMHOSTS */ - VAR_INFRA_CACHE_LAME_SIZE = 299, /* VAR_INFRA_CACHE_LAME_SIZE */ - VAR_NAME = 300, /* VAR_NAME */ - VAR_STUB_ZONE = 301, /* VAR_STUB_ZONE */ - VAR_STUB_HOST = 302, /* VAR_STUB_HOST */ - VAR_STUB_ADDR = 303, /* VAR_STUB_ADDR */ - VAR_TARGET_FETCH_POLICY = 304, /* VAR_TARGET_FETCH_POLICY */ - VAR_HARDEN_SHORT_BUFSIZE = 305, /* VAR_HARDEN_SHORT_BUFSIZE */ - VAR_HARDEN_LARGE_QUERIES = 306, /* VAR_HARDEN_LARGE_QUERIES */ - VAR_FORWARD_ZONE = 307, /* VAR_FORWARD_ZONE */ - VAR_FORWARD_HOST = 308, /* VAR_FORWARD_HOST */ - VAR_FORWARD_ADDR = 309, /* VAR_FORWARD_ADDR */ - VAR_DO_NOT_QUERY_ADDRESS = 310, /* VAR_DO_NOT_QUERY_ADDRESS */ - VAR_HIDE_IDENTITY = 311, /* VAR_HIDE_IDENTITY */ - VAR_HIDE_VERSION = 312, /* VAR_HIDE_VERSION */ - VAR_IDENTITY = 313, /* VAR_IDENTITY */ - VAR_VERSION = 314, /* VAR_VERSION */ - VAR_HARDEN_GLUE = 315, /* VAR_HARDEN_GLUE */ - VAR_MODULE_CONF = 316, /* VAR_MODULE_CONF */ - VAR_TRUST_ANCHOR_FILE = 317, /* VAR_TRUST_ANCHOR_FILE */ - VAR_TRUST_ANCHOR = 318, /* VAR_TRUST_ANCHOR */ - VAR_VAL_OVERRIDE_DATE = 319, /* VAR_VAL_OVERRIDE_DATE */ - VAR_BOGUS_TTL = 320, /* VAR_BOGUS_TTL */ - VAR_VAL_CLEAN_ADDITIONAL = 321, /* VAR_VAL_CLEAN_ADDITIONAL */ - VAR_VAL_PERMISSIVE_MODE = 322, /* VAR_VAL_PERMISSIVE_MODE */ - VAR_INCOMING_NUM_TCP = 323, /* VAR_INCOMING_NUM_TCP */ - VAR_MSG_BUFFER_SIZE = 324, /* VAR_MSG_BUFFER_SIZE */ - VAR_KEY_CACHE_SIZE = 325, /* VAR_KEY_CACHE_SIZE */ - VAR_KEY_CACHE_SLABS = 326, /* VAR_KEY_CACHE_SLABS */ - VAR_TRUSTED_KEYS_FILE = 327, /* VAR_TRUSTED_KEYS_FILE */ - VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 328, /* VAR_VAL_NSEC3_KEYSIZE_ITERATIONS */ - VAR_USE_SYSLOG = 329, /* VAR_USE_SYSLOG */ - VAR_OUTGOING_INTERFACE = 330, /* VAR_OUTGOING_INTERFACE */ - VAR_ROOT_HINTS = 331, /* VAR_ROOT_HINTS */ - VAR_DO_NOT_QUERY_LOCALHOST = 332, /* VAR_DO_NOT_QUERY_LOCALHOST */ - VAR_CACHE_MAX_TTL = 333, /* VAR_CACHE_MAX_TTL */ - VAR_HARDEN_DNSSEC_STRIPPED = 334, /* VAR_HARDEN_DNSSEC_STRIPPED */ - VAR_ACCESS_CONTROL = 335, /* VAR_ACCESS_CONTROL */ - VAR_LOCAL_ZONE = 336, /* VAR_LOCAL_ZONE */ - VAR_LOCAL_DATA = 337, /* VAR_LOCAL_DATA */ - VAR_INTERFACE_AUTOMATIC = 338, /* VAR_INTERFACE_AUTOMATIC */ - VAR_STATISTICS_INTERVAL = 339, /* VAR_STATISTICS_INTERVAL */ - VAR_DO_DAEMONIZE = 340, /* VAR_DO_DAEMONIZE */ - VAR_USE_CAPS_FOR_ID = 341, /* VAR_USE_CAPS_FOR_ID */ - VAR_STATISTICS_CUMULATIVE = 342, /* VAR_STATISTICS_CUMULATIVE */ - VAR_OUTGOING_PORT_PERMIT = 343, /* VAR_OUTGOING_PORT_PERMIT */ - VAR_OUTGOING_PORT_AVOID = 344, /* VAR_OUTGOING_PORT_AVOID */ - VAR_DLV_ANCHOR_FILE = 345, /* VAR_DLV_ANCHOR_FILE */ - VAR_DLV_ANCHOR = 346, /* VAR_DLV_ANCHOR */ - VAR_NEG_CACHE_SIZE = 347, /* VAR_NEG_CACHE_SIZE */ - VAR_HARDEN_REFERRAL_PATH = 348, /* VAR_HARDEN_REFERRAL_PATH */ - VAR_PRIVATE_ADDRESS = 349, /* VAR_PRIVATE_ADDRESS */ - VAR_PRIVATE_DOMAIN = 350, /* VAR_PRIVATE_DOMAIN */ - VAR_REMOTE_CONTROL = 351, /* VAR_REMOTE_CONTROL */ - VAR_CONTROL_ENABLE = 352, /* VAR_CONTROL_ENABLE */ - VAR_CONTROL_INTERFACE = 353, /* VAR_CONTROL_INTERFACE */ - VAR_CONTROL_PORT = 354, /* VAR_CONTROL_PORT */ - VAR_SERVER_KEY_FILE = 355, /* VAR_SERVER_KEY_FILE */ - VAR_SERVER_CERT_FILE = 356, /* VAR_SERVER_CERT_FILE */ - VAR_CONTROL_KEY_FILE = 357, /* VAR_CONTROL_KEY_FILE */ - VAR_CONTROL_CERT_FILE = 358, /* VAR_CONTROL_CERT_FILE */ - VAR_CONTROL_USE_CERT = 359, /* VAR_CONTROL_USE_CERT */ - VAR_TCP_REUSE_TIMEOUT = 360, /* VAR_TCP_REUSE_TIMEOUT */ - VAR_MAX_REUSE_TCP_QUERIES = 361, /* VAR_MAX_REUSE_TCP_QUERIES */ - VAR_EXTENDED_STATISTICS = 362, /* VAR_EXTENDED_STATISTICS */ - VAR_LOCAL_DATA_PTR = 363, /* VAR_LOCAL_DATA_PTR */ - VAR_JOSTLE_TIMEOUT = 364, /* VAR_JOSTLE_TIMEOUT */ - VAR_STUB_PRIME = 365, /* VAR_STUB_PRIME */ - VAR_UNWANTED_REPLY_THRESHOLD = 366, /* VAR_UNWANTED_REPLY_THRESHOLD */ - VAR_LOG_TIME_ASCII = 367, /* VAR_LOG_TIME_ASCII */ - VAR_DOMAIN_INSECURE = 368, /* VAR_DOMAIN_INSECURE */ - VAR_PYTHON = 369, /* VAR_PYTHON */ - VAR_PYTHON_SCRIPT = 370, /* VAR_PYTHON_SCRIPT */ - VAR_VAL_SIG_SKEW_MIN = 371, /* VAR_VAL_SIG_SKEW_MIN */ - VAR_VAL_SIG_SKEW_MAX = 372, /* VAR_VAL_SIG_SKEW_MAX */ - VAR_CACHE_MIN_TTL = 373, /* VAR_CACHE_MIN_TTL */ - VAR_VAL_LOG_LEVEL = 374, /* VAR_VAL_LOG_LEVEL */ - VAR_AUTO_TRUST_ANCHOR_FILE = 375, /* VAR_AUTO_TRUST_ANCHOR_FILE */ - VAR_KEEP_MISSING = 376, /* VAR_KEEP_MISSING */ - VAR_ADD_HOLDDOWN = 377, /* VAR_ADD_HOLDDOWN */ - VAR_DEL_HOLDDOWN = 378, /* VAR_DEL_HOLDDOWN */ - VAR_SO_RCVBUF = 379, /* VAR_SO_RCVBUF */ - VAR_EDNS_BUFFER_SIZE = 380, /* VAR_EDNS_BUFFER_SIZE */ - VAR_PREFETCH = 381, /* VAR_PREFETCH */ - VAR_PREFETCH_KEY = 382, /* VAR_PREFETCH_KEY */ - VAR_SO_SNDBUF = 383, /* VAR_SO_SNDBUF */ - VAR_SO_REUSEPORT = 384, /* VAR_SO_REUSEPORT */ - VAR_HARDEN_BELOW_NXDOMAIN = 385, /* VAR_HARDEN_BELOW_NXDOMAIN */ - VAR_IGNORE_CD_FLAG = 386, /* VAR_IGNORE_CD_FLAG */ - VAR_LOG_QUERIES = 387, /* VAR_LOG_QUERIES */ - VAR_LOG_REPLIES = 388, /* VAR_LOG_REPLIES */ - VAR_LOG_LOCAL_ACTIONS = 389, /* VAR_LOG_LOCAL_ACTIONS */ - VAR_TCP_UPSTREAM = 390, /* VAR_TCP_UPSTREAM */ - VAR_SSL_UPSTREAM = 391, /* VAR_SSL_UPSTREAM */ - VAR_SSL_SERVICE_KEY = 392, /* VAR_SSL_SERVICE_KEY */ - VAR_SSL_SERVICE_PEM = 393, /* VAR_SSL_SERVICE_PEM */ - VAR_SSL_PORT = 394, /* VAR_SSL_PORT */ - VAR_FORWARD_FIRST = 395, /* VAR_FORWARD_FIRST */ - VAR_STUB_SSL_UPSTREAM = 396, /* VAR_STUB_SSL_UPSTREAM */ - VAR_FORWARD_SSL_UPSTREAM = 397, /* VAR_FORWARD_SSL_UPSTREAM */ - VAR_TLS_CERT_BUNDLE = 398, /* VAR_TLS_CERT_BUNDLE */ - VAR_HTTPS_PORT = 399, /* VAR_HTTPS_PORT */ - VAR_HTTP_ENDPOINT = 400, /* VAR_HTTP_ENDPOINT */ - VAR_HTTP_MAX_STREAMS = 401, /* VAR_HTTP_MAX_STREAMS */ - VAR_HTTP_QUERY_BUFFER_SIZE = 402, /* VAR_HTTP_QUERY_BUFFER_SIZE */ - VAR_HTTP_RESPONSE_BUFFER_SIZE = 403, /* VAR_HTTP_RESPONSE_BUFFER_SIZE */ - VAR_HTTP_NODELAY = 404, /* VAR_HTTP_NODELAY */ - VAR_HTTP_NOTLS_DOWNSTREAM = 405, /* VAR_HTTP_NOTLS_DOWNSTREAM */ - VAR_STUB_FIRST = 406, /* VAR_STUB_FIRST */ - VAR_MINIMAL_RESPONSES = 407, /* VAR_MINIMAL_RESPONSES */ - VAR_RRSET_ROUNDROBIN = 408, /* VAR_RRSET_ROUNDROBIN */ - VAR_MAX_UDP_SIZE = 409, /* VAR_MAX_UDP_SIZE */ - VAR_DELAY_CLOSE = 410, /* VAR_DELAY_CLOSE */ - VAR_UDP_CONNECT = 411, /* VAR_UDP_CONNECT */ - VAR_UNBLOCK_LAN_ZONES = 412, /* VAR_UNBLOCK_LAN_ZONES */ - VAR_INSECURE_LAN_ZONES = 413, /* VAR_INSECURE_LAN_ZONES */ - VAR_INFRA_CACHE_MIN_RTT = 414, /* VAR_INFRA_CACHE_MIN_RTT */ - VAR_INFRA_KEEP_PROBING = 415, /* VAR_INFRA_KEEP_PROBING */ - VAR_DNS64_PREFIX = 416, /* VAR_DNS64_PREFIX */ - VAR_DNS64_SYNTHALL = 417, /* VAR_DNS64_SYNTHALL */ - VAR_DNS64_IGNORE_AAAA = 418, /* VAR_DNS64_IGNORE_AAAA */ - VAR_DNSTAP = 419, /* VAR_DNSTAP */ - VAR_DNSTAP_ENABLE = 420, /* VAR_DNSTAP_ENABLE */ - VAR_DNSTAP_SOCKET_PATH = 421, /* VAR_DNSTAP_SOCKET_PATH */ - VAR_DNSTAP_IP = 422, /* VAR_DNSTAP_IP */ - VAR_DNSTAP_TLS = 423, /* VAR_DNSTAP_TLS */ - VAR_DNSTAP_TLS_SERVER_NAME = 424, /* VAR_DNSTAP_TLS_SERVER_NAME */ - VAR_DNSTAP_TLS_CERT_BUNDLE = 425, /* VAR_DNSTAP_TLS_CERT_BUNDLE */ - VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 426, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE */ - VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 427, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE */ - VAR_DNSTAP_SEND_IDENTITY = 428, /* VAR_DNSTAP_SEND_IDENTITY */ - VAR_DNSTAP_SEND_VERSION = 429, /* VAR_DNSTAP_SEND_VERSION */ - VAR_DNSTAP_BIDIRECTIONAL = 430, /* VAR_DNSTAP_BIDIRECTIONAL */ - VAR_DNSTAP_IDENTITY = 431, /* VAR_DNSTAP_IDENTITY */ - VAR_DNSTAP_VERSION = 432, /* VAR_DNSTAP_VERSION */ - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 433, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES */ - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 434, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES */ - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 435, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES */ - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 436, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES */ - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 437, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES */ - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 438, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES */ - VAR_RESPONSE_IP_TAG = 439, /* VAR_RESPONSE_IP_TAG */ - VAR_RESPONSE_IP = 440, /* VAR_RESPONSE_IP */ - VAR_RESPONSE_IP_DATA = 441, /* VAR_RESPONSE_IP_DATA */ - VAR_HARDEN_ALGO_DOWNGRADE = 442, /* VAR_HARDEN_ALGO_DOWNGRADE */ - VAR_IP_TRANSPARENT = 443, /* VAR_IP_TRANSPARENT */ - VAR_IP_DSCP = 444, /* VAR_IP_DSCP */ - VAR_DISABLE_DNSSEC_LAME_CHECK = 445, /* VAR_DISABLE_DNSSEC_LAME_CHECK */ - VAR_IP_RATELIMIT = 446, /* VAR_IP_RATELIMIT */ - VAR_IP_RATELIMIT_SLABS = 447, /* VAR_IP_RATELIMIT_SLABS */ - VAR_IP_RATELIMIT_SIZE = 448, /* VAR_IP_RATELIMIT_SIZE */ - VAR_RATELIMIT = 449, /* VAR_RATELIMIT */ - VAR_RATELIMIT_SLABS = 450, /* VAR_RATELIMIT_SLABS */ - VAR_RATELIMIT_SIZE = 451, /* VAR_RATELIMIT_SIZE */ - VAR_RATELIMIT_FOR_DOMAIN = 452, /* VAR_RATELIMIT_FOR_DOMAIN */ - VAR_RATELIMIT_BELOW_DOMAIN = 453, /* VAR_RATELIMIT_BELOW_DOMAIN */ - VAR_IP_RATELIMIT_FACTOR = 454, /* VAR_IP_RATELIMIT_FACTOR */ - VAR_RATELIMIT_FACTOR = 455, /* VAR_RATELIMIT_FACTOR */ - VAR_SEND_CLIENT_SUBNET = 456, /* VAR_SEND_CLIENT_SUBNET */ - VAR_CLIENT_SUBNET_ZONE = 457, /* VAR_CLIENT_SUBNET_ZONE */ - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 458, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ - VAR_CLIENT_SUBNET_OPCODE = 459, /* VAR_CLIENT_SUBNET_OPCODE */ - VAR_MAX_CLIENT_SUBNET_IPV4 = 460, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ - VAR_MAX_CLIENT_SUBNET_IPV6 = 461, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ - VAR_MIN_CLIENT_SUBNET_IPV4 = 462, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ - VAR_MIN_CLIENT_SUBNET_IPV6 = 463, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ - VAR_MAX_ECS_TREE_SIZE_IPV4 = 464, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ - VAR_MAX_ECS_TREE_SIZE_IPV6 = 465, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ - VAR_CAPS_WHITELIST = 466, /* VAR_CAPS_WHITELIST */ - VAR_CACHE_MAX_NEGATIVE_TTL = 467, /* VAR_CACHE_MAX_NEGATIVE_TTL */ - VAR_PERMIT_SMALL_HOLDDOWN = 468, /* VAR_PERMIT_SMALL_HOLDDOWN */ - VAR_QNAME_MINIMISATION = 469, /* VAR_QNAME_MINIMISATION */ - VAR_QNAME_MINIMISATION_STRICT = 470, /* VAR_QNAME_MINIMISATION_STRICT */ - VAR_IP_FREEBIND = 471, /* VAR_IP_FREEBIND */ - VAR_DEFINE_TAG = 472, /* VAR_DEFINE_TAG */ - VAR_LOCAL_ZONE_TAG = 473, /* VAR_LOCAL_ZONE_TAG */ - VAR_ACCESS_CONTROL_TAG = 474, /* VAR_ACCESS_CONTROL_TAG */ - VAR_LOCAL_ZONE_OVERRIDE = 475, /* VAR_LOCAL_ZONE_OVERRIDE */ - VAR_ACCESS_CONTROL_TAG_ACTION = 476, /* VAR_ACCESS_CONTROL_TAG_ACTION */ - VAR_ACCESS_CONTROL_TAG_DATA = 477, /* VAR_ACCESS_CONTROL_TAG_DATA */ - VAR_VIEW = 478, /* VAR_VIEW */ - VAR_ACCESS_CONTROL_VIEW = 479, /* VAR_ACCESS_CONTROL_VIEW */ - VAR_VIEW_FIRST = 480, /* VAR_VIEW_FIRST */ - VAR_SERVE_EXPIRED = 481, /* VAR_SERVE_EXPIRED */ - VAR_SERVE_EXPIRED_TTL = 482, /* VAR_SERVE_EXPIRED_TTL */ - VAR_SERVE_EXPIRED_TTL_RESET = 483, /* VAR_SERVE_EXPIRED_TTL_RESET */ - VAR_SERVE_EXPIRED_REPLY_TTL = 484, /* VAR_SERVE_EXPIRED_REPLY_TTL */ - VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 485, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ - VAR_SERVE_ORIGINAL_TTL = 486, /* VAR_SERVE_ORIGINAL_TTL */ - VAR_FAKE_DSA = 487, /* VAR_FAKE_DSA */ - VAR_FAKE_SHA1 = 488, /* VAR_FAKE_SHA1 */ - VAR_LOG_IDENTITY = 489, /* VAR_LOG_IDENTITY */ - VAR_HIDE_TRUSTANCHOR = 490, /* VAR_HIDE_TRUSTANCHOR */ - VAR_TRUST_ANCHOR_SIGNALING = 491, /* VAR_TRUST_ANCHOR_SIGNALING */ - VAR_AGGRESSIVE_NSEC = 492, /* VAR_AGGRESSIVE_NSEC */ - VAR_USE_SYSTEMD = 493, /* VAR_USE_SYSTEMD */ - VAR_SHM_ENABLE = 494, /* VAR_SHM_ENABLE */ - VAR_SHM_KEY = 495, /* VAR_SHM_KEY */ - VAR_ROOT_KEY_SENTINEL = 496, /* VAR_ROOT_KEY_SENTINEL */ - VAR_DNSCRYPT = 497, /* VAR_DNSCRYPT */ - VAR_DNSCRYPT_ENABLE = 498, /* VAR_DNSCRYPT_ENABLE */ - VAR_DNSCRYPT_PORT = 499, /* VAR_DNSCRYPT_PORT */ - VAR_DNSCRYPT_PROVIDER = 500, /* VAR_DNSCRYPT_PROVIDER */ - VAR_DNSCRYPT_SECRET_KEY = 501, /* VAR_DNSCRYPT_SECRET_KEY */ - VAR_DNSCRYPT_PROVIDER_CERT = 502, /* VAR_DNSCRYPT_PROVIDER_CERT */ - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 503, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 504, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 505, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 506, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 507, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ - VAR_PAD_RESPONSES = 508, /* VAR_PAD_RESPONSES */ - VAR_PAD_RESPONSES_BLOCK_SIZE = 509, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ - VAR_PAD_QUERIES = 510, /* VAR_PAD_QUERIES */ - VAR_PAD_QUERIES_BLOCK_SIZE = 511, /* VAR_PAD_QUERIES_BLOCK_SIZE */ - VAR_IPSECMOD_ENABLED = 512, /* VAR_IPSECMOD_ENABLED */ - VAR_IPSECMOD_HOOK = 513, /* VAR_IPSECMOD_HOOK */ - VAR_IPSECMOD_IGNORE_BOGUS = 514, /* VAR_IPSECMOD_IGNORE_BOGUS */ - VAR_IPSECMOD_MAX_TTL = 515, /* VAR_IPSECMOD_MAX_TTL */ - VAR_IPSECMOD_WHITELIST = 516, /* VAR_IPSECMOD_WHITELIST */ - VAR_IPSECMOD_STRICT = 517, /* VAR_IPSECMOD_STRICT */ - VAR_CACHEDB = 518, /* VAR_CACHEDB */ - VAR_CACHEDB_BACKEND = 519, /* VAR_CACHEDB_BACKEND */ - VAR_CACHEDB_SECRETSEED = 520, /* VAR_CACHEDB_SECRETSEED */ - VAR_CACHEDB_REDISHOST = 521, /* VAR_CACHEDB_REDISHOST */ - VAR_CACHEDB_REDISPORT = 522, /* VAR_CACHEDB_REDISPORT */ - VAR_CACHEDB_REDISTIMEOUT = 523, /* VAR_CACHEDB_REDISTIMEOUT */ - VAR_CACHEDB_REDISEXPIRERECORDS = 524, /* VAR_CACHEDB_REDISEXPIRERECORDS */ - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 525, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ - VAR_FOR_UPSTREAM = 526, /* VAR_FOR_UPSTREAM */ - VAR_AUTH_ZONE = 527, /* VAR_AUTH_ZONE */ - VAR_ZONEFILE = 528, /* VAR_ZONEFILE */ - VAR_MASTER = 529, /* VAR_MASTER */ - VAR_URL = 530, /* VAR_URL */ - VAR_FOR_DOWNSTREAM = 531, /* VAR_FOR_DOWNSTREAM */ - VAR_FALLBACK_ENABLED = 532, /* VAR_FALLBACK_ENABLED */ - VAR_TLS_ADDITIONAL_PORT = 533, /* VAR_TLS_ADDITIONAL_PORT */ - VAR_LOW_RTT = 534, /* VAR_LOW_RTT */ - VAR_LOW_RTT_PERMIL = 535, /* VAR_LOW_RTT_PERMIL */ - VAR_FAST_SERVER_PERMIL = 536, /* VAR_FAST_SERVER_PERMIL */ - VAR_FAST_SERVER_NUM = 537, /* VAR_FAST_SERVER_NUM */ - VAR_ALLOW_NOTIFY = 538, /* VAR_ALLOW_NOTIFY */ - VAR_TLS_WIN_CERT = 539, /* VAR_TLS_WIN_CERT */ - VAR_TCP_CONNECTION_LIMIT = 540, /* VAR_TCP_CONNECTION_LIMIT */ - VAR_FORWARD_NO_CACHE = 541, /* VAR_FORWARD_NO_CACHE */ - VAR_STUB_NO_CACHE = 542, /* VAR_STUB_NO_CACHE */ - VAR_LOG_SERVFAIL = 543, /* VAR_LOG_SERVFAIL */ - VAR_DENY_ANY = 544, /* VAR_DENY_ANY */ - VAR_UNKNOWN_SERVER_TIME_LIMIT = 545, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ - VAR_LOG_TAG_QUERYREPLY = 546, /* VAR_LOG_TAG_QUERYREPLY */ - VAR_STREAM_WAIT_SIZE = 547, /* VAR_STREAM_WAIT_SIZE */ - VAR_TLS_CIPHERS = 548, /* VAR_TLS_CIPHERS */ - VAR_TLS_CIPHERSUITES = 549, /* VAR_TLS_CIPHERSUITES */ - VAR_TLS_USE_SNI = 550, /* VAR_TLS_USE_SNI */ - VAR_IPSET = 551, /* VAR_IPSET */ - VAR_IPSET_NAME_V4 = 552, /* VAR_IPSET_NAME_V4 */ - VAR_IPSET_NAME_V6 = 553, /* VAR_IPSET_NAME_V6 */ - VAR_TLS_SESSION_TICKET_KEYS = 554, /* VAR_TLS_SESSION_TICKET_KEYS */ - VAR_RPZ = 555, /* VAR_RPZ */ - VAR_TAGS = 556, /* VAR_TAGS */ - VAR_RPZ_ACTION_OVERRIDE = 557, /* VAR_RPZ_ACTION_OVERRIDE */ - VAR_RPZ_CNAME_OVERRIDE = 558, /* VAR_RPZ_CNAME_OVERRIDE */ - VAR_RPZ_LOG = 559, /* VAR_RPZ_LOG */ - VAR_RPZ_LOG_NAME = 560, /* VAR_RPZ_LOG_NAME */ - VAR_DYNLIB = 561, /* VAR_DYNLIB */ - VAR_DYNLIB_FILE = 562, /* VAR_DYNLIB_FILE */ - VAR_EDNS_CLIENT_STRING = 563, /* VAR_EDNS_CLIENT_STRING */ - VAR_EDNS_CLIENT_STRING_OPCODE = 564, /* VAR_EDNS_CLIENT_STRING_OPCODE */ - VAR_NSID = 565, /* VAR_NSID */ - VAR_ZONEMD_PERMISSIVE_MODE = 566, /* VAR_ZONEMD_PERMISSIVE_MODE */ - VAR_ZONEMD_REJECT_ABSENCE = 567 /* VAR_ZONEMD_REJECT_ABSENCE */ - }; - typedef enum yytokentype yytoken_kind_t; + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + SPACE = 258, + LETTER = 259, + NEWLINE = 260, + COMMENT = 261, + COLON = 262, + ANY = 263, + ZONESTR = 264, + STRING_ARG = 265, + VAR_FORCE_TOPLEVEL = 266, + VAR_SERVER = 267, + VAR_VERBOSITY = 268, + VAR_NUM_THREADS = 269, + VAR_PORT = 270, + VAR_OUTGOING_RANGE = 271, + VAR_INTERFACE = 272, + VAR_PREFER_IP4 = 273, + VAR_DO_IP4 = 274, + VAR_DO_IP6 = 275, + VAR_PREFER_IP6 = 276, + VAR_DO_UDP = 277, + VAR_DO_TCP = 278, + VAR_TCP_MSS = 279, + VAR_OUTGOING_TCP_MSS = 280, + VAR_TCP_IDLE_TIMEOUT = 281, + VAR_EDNS_TCP_KEEPALIVE = 282, + VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 283, + VAR_CHROOT = 284, + VAR_USERNAME = 285, + VAR_DIRECTORY = 286, + VAR_LOGFILE = 287, + VAR_PIDFILE = 288, + VAR_MSG_CACHE_SIZE = 289, + VAR_MSG_CACHE_SLABS = 290, + VAR_NUM_QUERIES_PER_THREAD = 291, + VAR_RRSET_CACHE_SIZE = 292, + VAR_RRSET_CACHE_SLABS = 293, + VAR_OUTGOING_NUM_TCP = 294, + VAR_INFRA_HOST_TTL = 295, + VAR_INFRA_LAME_TTL = 296, + VAR_INFRA_CACHE_SLABS = 297, + VAR_INFRA_CACHE_NUMHOSTS = 298, + VAR_INFRA_CACHE_LAME_SIZE = 299, + VAR_NAME = 300, + VAR_STUB_ZONE = 301, + VAR_STUB_HOST = 302, + VAR_STUB_ADDR = 303, + VAR_TARGET_FETCH_POLICY = 304, + VAR_HARDEN_SHORT_BUFSIZE = 305, + VAR_HARDEN_LARGE_QUERIES = 306, + VAR_FORWARD_ZONE = 307, + VAR_FORWARD_HOST = 308, + VAR_FORWARD_ADDR = 309, + VAR_DO_NOT_QUERY_ADDRESS = 310, + VAR_HIDE_IDENTITY = 311, + VAR_HIDE_VERSION = 312, + VAR_IDENTITY = 313, + VAR_VERSION = 314, + VAR_HARDEN_GLUE = 315, + VAR_MODULE_CONF = 316, + VAR_TRUST_ANCHOR_FILE = 317, + VAR_TRUST_ANCHOR = 318, + VAR_VAL_OVERRIDE_DATE = 319, + VAR_BOGUS_TTL = 320, + VAR_VAL_CLEAN_ADDITIONAL = 321, + VAR_VAL_PERMISSIVE_MODE = 322, + VAR_INCOMING_NUM_TCP = 323, + VAR_MSG_BUFFER_SIZE = 324, + VAR_KEY_CACHE_SIZE = 325, + VAR_KEY_CACHE_SLABS = 326, + VAR_TRUSTED_KEYS_FILE = 327, + VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 328, + VAR_USE_SYSLOG = 329, + VAR_OUTGOING_INTERFACE = 330, + VAR_ROOT_HINTS = 331, + VAR_DO_NOT_QUERY_LOCALHOST = 332, + VAR_CACHE_MAX_TTL = 333, + VAR_HARDEN_DNSSEC_STRIPPED = 334, + VAR_ACCESS_CONTROL = 335, + VAR_LOCAL_ZONE = 336, + VAR_LOCAL_DATA = 337, + VAR_INTERFACE_AUTOMATIC = 338, + VAR_STATISTICS_INTERVAL = 339, + VAR_DO_DAEMONIZE = 340, + VAR_USE_CAPS_FOR_ID = 341, + VAR_STATISTICS_CUMULATIVE = 342, + VAR_OUTGOING_PORT_PERMIT = 343, + VAR_OUTGOING_PORT_AVOID = 344, + VAR_DLV_ANCHOR_FILE = 345, + VAR_DLV_ANCHOR = 346, + VAR_NEG_CACHE_SIZE = 347, + VAR_HARDEN_REFERRAL_PATH = 348, + VAR_PRIVATE_ADDRESS = 349, + VAR_PRIVATE_DOMAIN = 350, + VAR_REMOTE_CONTROL = 351, + VAR_CONTROL_ENABLE = 352, + VAR_CONTROL_INTERFACE = 353, + VAR_CONTROL_PORT = 354, + VAR_SERVER_KEY_FILE = 355, + VAR_SERVER_CERT_FILE = 356, + VAR_CONTROL_KEY_FILE = 357, + VAR_CONTROL_CERT_FILE = 358, + VAR_CONTROL_USE_CERT = 359, + VAR_TCP_REUSE_TIMEOUT = 360, + VAR_MAX_REUSE_TCP_QUERIES = 361, + VAR_EXTENDED_STATISTICS = 362, + VAR_LOCAL_DATA_PTR = 363, + VAR_JOSTLE_TIMEOUT = 364, + VAR_STUB_PRIME = 365, + VAR_UNWANTED_REPLY_THRESHOLD = 366, + VAR_LOG_TIME_ASCII = 367, + VAR_DOMAIN_INSECURE = 368, + VAR_PYTHON = 369, + VAR_PYTHON_SCRIPT = 370, + VAR_VAL_SIG_SKEW_MIN = 371, + VAR_VAL_SIG_SKEW_MAX = 372, + VAR_CACHE_MIN_TTL = 373, + VAR_VAL_LOG_LEVEL = 374, + VAR_AUTO_TRUST_ANCHOR_FILE = 375, + VAR_KEEP_MISSING = 376, + VAR_ADD_HOLDDOWN = 377, + VAR_DEL_HOLDDOWN = 378, + VAR_SO_RCVBUF = 379, + VAR_EDNS_BUFFER_SIZE = 380, + VAR_PREFETCH = 381, + VAR_PREFETCH_KEY = 382, + VAR_SO_SNDBUF = 383, + VAR_SO_REUSEPORT = 384, + VAR_HARDEN_BELOW_NXDOMAIN = 385, + VAR_IGNORE_CD_FLAG = 386, + VAR_LOG_QUERIES = 387, + VAR_LOG_REPLIES = 388, + VAR_LOG_LOCAL_ACTIONS = 389, + VAR_TCP_UPSTREAM = 390, + VAR_SSL_UPSTREAM = 391, + VAR_TCP_AUTH_QUERY_TIMEOUT = 392, + VAR_SSL_SERVICE_KEY = 393, + VAR_SSL_SERVICE_PEM = 394, + VAR_SSL_PORT = 395, + VAR_FORWARD_FIRST = 396, + VAR_STUB_SSL_UPSTREAM = 397, + VAR_FORWARD_SSL_UPSTREAM = 398, + VAR_TLS_CERT_BUNDLE = 399, + VAR_HTTPS_PORT = 400, + VAR_HTTP_ENDPOINT = 401, + VAR_HTTP_MAX_STREAMS = 402, + VAR_HTTP_QUERY_BUFFER_SIZE = 403, + VAR_HTTP_RESPONSE_BUFFER_SIZE = 404, + VAR_HTTP_NODELAY = 405, + VAR_HTTP_NOTLS_DOWNSTREAM = 406, + VAR_STUB_FIRST = 407, + VAR_MINIMAL_RESPONSES = 408, + VAR_RRSET_ROUNDROBIN = 409, + VAR_MAX_UDP_SIZE = 410, + VAR_DELAY_CLOSE = 411, + VAR_UDP_CONNECT = 412, + VAR_UNBLOCK_LAN_ZONES = 413, + VAR_INSECURE_LAN_ZONES = 414, + VAR_INFRA_CACHE_MIN_RTT = 415, + VAR_INFRA_KEEP_PROBING = 416, + VAR_DNS64_PREFIX = 417, + VAR_DNS64_SYNTHALL = 418, + VAR_DNS64_IGNORE_AAAA = 419, + VAR_DNSTAP = 420, + VAR_DNSTAP_ENABLE = 421, + VAR_DNSTAP_SOCKET_PATH = 422, + VAR_DNSTAP_IP = 423, + VAR_DNSTAP_TLS = 424, + VAR_DNSTAP_TLS_SERVER_NAME = 425, + VAR_DNSTAP_TLS_CERT_BUNDLE = 426, + VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 427, + VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 428, + VAR_DNSTAP_SEND_IDENTITY = 429, + VAR_DNSTAP_SEND_VERSION = 430, + VAR_DNSTAP_BIDIRECTIONAL = 431, + VAR_DNSTAP_IDENTITY = 432, + VAR_DNSTAP_VERSION = 433, + VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 434, + VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 435, + VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 436, + VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 437, + VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 438, + VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 439, + VAR_RESPONSE_IP_TAG = 440, + VAR_RESPONSE_IP = 441, + VAR_RESPONSE_IP_DATA = 442, + VAR_HARDEN_ALGO_DOWNGRADE = 443, + VAR_IP_TRANSPARENT = 444, + VAR_IP_DSCP = 445, + VAR_DISABLE_DNSSEC_LAME_CHECK = 446, + VAR_IP_RATELIMIT = 447, + VAR_IP_RATELIMIT_SLABS = 448, + VAR_IP_RATELIMIT_SIZE = 449, + VAR_RATELIMIT = 450, + VAR_RATELIMIT_SLABS = 451, + VAR_RATELIMIT_SIZE = 452, + VAR_RATELIMIT_FOR_DOMAIN = 453, + VAR_RATELIMIT_BELOW_DOMAIN = 454, + VAR_IP_RATELIMIT_FACTOR = 455, + VAR_RATELIMIT_FACTOR = 456, + VAR_SEND_CLIENT_SUBNET = 457, + VAR_CLIENT_SUBNET_ZONE = 458, + VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 459, + VAR_CLIENT_SUBNET_OPCODE = 460, + VAR_MAX_CLIENT_SUBNET_IPV4 = 461, + VAR_MAX_CLIENT_SUBNET_IPV6 = 462, + VAR_MIN_CLIENT_SUBNET_IPV4 = 463, + VAR_MIN_CLIENT_SUBNET_IPV6 = 464, + VAR_MAX_ECS_TREE_SIZE_IPV4 = 465, + VAR_MAX_ECS_TREE_SIZE_IPV6 = 466, + VAR_CAPS_WHITELIST = 467, + VAR_CACHE_MAX_NEGATIVE_TTL = 468, + VAR_PERMIT_SMALL_HOLDDOWN = 469, + VAR_QNAME_MINIMISATION = 470, + VAR_QNAME_MINIMISATION_STRICT = 471, + VAR_IP_FREEBIND = 472, + VAR_DEFINE_TAG = 473, + VAR_LOCAL_ZONE_TAG = 474, + VAR_ACCESS_CONTROL_TAG = 475, + VAR_LOCAL_ZONE_OVERRIDE = 476, + VAR_ACCESS_CONTROL_TAG_ACTION = 477, + VAR_ACCESS_CONTROL_TAG_DATA = 478, + VAR_VIEW = 479, + VAR_ACCESS_CONTROL_VIEW = 480, + VAR_VIEW_FIRST = 481, + VAR_SERVE_EXPIRED = 482, + VAR_SERVE_EXPIRED_TTL = 483, + VAR_SERVE_EXPIRED_TTL_RESET = 484, + VAR_SERVE_EXPIRED_REPLY_TTL = 485, + VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 486, + VAR_SERVE_ORIGINAL_TTL = 487, + VAR_FAKE_DSA = 488, + VAR_FAKE_SHA1 = 489, + VAR_LOG_IDENTITY = 490, + VAR_HIDE_TRUSTANCHOR = 491, + VAR_TRUST_ANCHOR_SIGNALING = 492, + VAR_AGGRESSIVE_NSEC = 493, + VAR_USE_SYSTEMD = 494, + VAR_SHM_ENABLE = 495, + VAR_SHM_KEY = 496, + VAR_ROOT_KEY_SENTINEL = 497, + VAR_DNSCRYPT = 498, + VAR_DNSCRYPT_ENABLE = 499, + VAR_DNSCRYPT_PORT = 500, + VAR_DNSCRYPT_PROVIDER = 501, + VAR_DNSCRYPT_SECRET_KEY = 502, + VAR_DNSCRYPT_PROVIDER_CERT = 503, + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 504, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 505, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 506, + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 507, + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 508, + VAR_PAD_RESPONSES = 509, + VAR_PAD_RESPONSES_BLOCK_SIZE = 510, + VAR_PAD_QUERIES = 511, + VAR_PAD_QUERIES_BLOCK_SIZE = 512, + VAR_IPSECMOD_ENABLED = 513, + VAR_IPSECMOD_HOOK = 514, + VAR_IPSECMOD_IGNORE_BOGUS = 515, + VAR_IPSECMOD_MAX_TTL = 516, + VAR_IPSECMOD_WHITELIST = 517, + VAR_IPSECMOD_STRICT = 518, + VAR_CACHEDB = 519, + VAR_CACHEDB_BACKEND = 520, + VAR_CACHEDB_SECRETSEED = 521, + VAR_CACHEDB_REDISHOST = 522, + VAR_CACHEDB_REDISPORT = 523, + VAR_CACHEDB_REDISTIMEOUT = 524, + VAR_CACHEDB_REDISEXPIRERECORDS = 525, + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 526, + VAR_FOR_UPSTREAM = 527, + VAR_AUTH_ZONE = 528, + VAR_ZONEFILE = 529, + VAR_MASTER = 530, + VAR_URL = 531, + VAR_FOR_DOWNSTREAM = 532, + VAR_FALLBACK_ENABLED = 533, + VAR_TLS_ADDITIONAL_PORT = 534, + VAR_LOW_RTT = 535, + VAR_LOW_RTT_PERMIL = 536, + VAR_FAST_SERVER_PERMIL = 537, + VAR_FAST_SERVER_NUM = 538, + VAR_ALLOW_NOTIFY = 539, + VAR_TLS_WIN_CERT = 540, + VAR_TCP_CONNECTION_LIMIT = 541, + VAR_FORWARD_NO_CACHE = 542, + VAR_STUB_NO_CACHE = 543, + VAR_LOG_SERVFAIL = 544, + VAR_DENY_ANY = 545, + VAR_UNKNOWN_SERVER_TIME_LIMIT = 546, + VAR_LOG_TAG_QUERYREPLY = 547, + VAR_STREAM_WAIT_SIZE = 548, + VAR_TLS_CIPHERS = 549, + VAR_TLS_CIPHERSUITES = 550, + VAR_TLS_USE_SNI = 551, + VAR_IPSET = 552, + VAR_IPSET_NAME_V4 = 553, + VAR_IPSET_NAME_V6 = 554, + VAR_TLS_SESSION_TICKET_KEYS = 555, + VAR_RPZ = 556, + VAR_TAGS = 557, + VAR_RPZ_ACTION_OVERRIDE = 558, + VAR_RPZ_CNAME_OVERRIDE = 559, + VAR_RPZ_LOG = 560, + VAR_RPZ_LOG_NAME = 561, + VAR_DYNLIB = 562, + VAR_DYNLIB_FILE = 563, + VAR_EDNS_CLIENT_STRING = 564, + VAR_EDNS_CLIENT_STRING_OPCODE = 565, + VAR_NSID = 566, + VAR_ZONEMD_PERMISSIVE_MODE = 567, + VAR_ZONEMD_REJECT_ABSENCE = 568 + }; #endif -/* Token kinds. */ -#define YYEOF 0 -#define YYerror 256 -#define YYUNDEF 257 +/* Tokens. */ #define SPACE 258 #define LETTER 259 #define NEWLINE 260 @@ -591,939 +514,287 @@ extern int yydebug; #define VAR_LOG_LOCAL_ACTIONS 389 #define VAR_TCP_UPSTREAM 390 #define VAR_SSL_UPSTREAM 391 -#define VAR_SSL_SERVICE_KEY 392 -#define VAR_SSL_SERVICE_PEM 393 -#define VAR_SSL_PORT 394 -#define VAR_FORWARD_FIRST 395 -#define VAR_STUB_SSL_UPSTREAM 396 -#define VAR_FORWARD_SSL_UPSTREAM 397 -#define VAR_TLS_CERT_BUNDLE 398 -#define VAR_HTTPS_PORT 399 -#define VAR_HTTP_ENDPOINT 400 -#define VAR_HTTP_MAX_STREAMS 401 -#define VAR_HTTP_QUERY_BUFFER_SIZE 402 -#define VAR_HTTP_RESPONSE_BUFFER_SIZE 403 -#define VAR_HTTP_NODELAY 404 -#define VAR_HTTP_NOTLS_DOWNSTREAM 405 -#define VAR_STUB_FIRST 406 -#define VAR_MINIMAL_RESPONSES 407 -#define VAR_RRSET_ROUNDROBIN 408 -#define VAR_MAX_UDP_SIZE 409 -#define VAR_DELAY_CLOSE 410 -#define VAR_UDP_CONNECT 411 -#define VAR_UNBLOCK_LAN_ZONES 412 -#define VAR_INSECURE_LAN_ZONES 413 -#define VAR_INFRA_CACHE_MIN_RTT 414 -#define VAR_INFRA_KEEP_PROBING 415 -#define VAR_DNS64_PREFIX 416 -#define VAR_DNS64_SYNTHALL 417 -#define VAR_DNS64_IGNORE_AAAA 418 -#define VAR_DNSTAP 419 -#define VAR_DNSTAP_ENABLE 420 -#define VAR_DNSTAP_SOCKET_PATH 421 -#define VAR_DNSTAP_IP 422 -#define VAR_DNSTAP_TLS 423 -#define VAR_DNSTAP_TLS_SERVER_NAME 424 -#define VAR_DNSTAP_TLS_CERT_BUNDLE 425 -#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 426 -#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 427 -#define VAR_DNSTAP_SEND_IDENTITY 428 -#define VAR_DNSTAP_SEND_VERSION 429 -#define VAR_DNSTAP_BIDIRECTIONAL 430 -#define VAR_DNSTAP_IDENTITY 431 -#define VAR_DNSTAP_VERSION 432 -#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 433 -#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 434 -#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 435 -#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 436 -#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 437 -#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 438 -#define VAR_RESPONSE_IP_TAG 439 -#define VAR_RESPONSE_IP 440 -#define VAR_RESPONSE_IP_DATA 441 -#define VAR_HARDEN_ALGO_DOWNGRADE 442 -#define VAR_IP_TRANSPARENT 443 -#define VAR_IP_DSCP 444 -#define VAR_DISABLE_DNSSEC_LAME_CHECK 445 -#define VAR_IP_RATELIMIT 446 -#define VAR_IP_RATELIMIT_SLABS 447 -#define VAR_IP_RATELIMIT_SIZE 448 -#define VAR_RATELIMIT 449 -#define VAR_RATELIMIT_SLABS 450 -#define VAR_RATELIMIT_SIZE 451 -#define VAR_RATELIMIT_FOR_DOMAIN 452 -#define VAR_RATELIMIT_BELOW_DOMAIN 453 -#define VAR_IP_RATELIMIT_FACTOR 454 -#define VAR_RATELIMIT_FACTOR 455 -#define VAR_SEND_CLIENT_SUBNET 456 -#define VAR_CLIENT_SUBNET_ZONE 457 -#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 458 -#define VAR_CLIENT_SUBNET_OPCODE 459 -#define VAR_MAX_CLIENT_SUBNET_IPV4 460 -#define VAR_MAX_CLIENT_SUBNET_IPV6 461 -#define VAR_MIN_CLIENT_SUBNET_IPV4 462 -#define VAR_MIN_CLIENT_SUBNET_IPV6 463 -#define VAR_MAX_ECS_TREE_SIZE_IPV4 464 -#define VAR_MAX_ECS_TREE_SIZE_IPV6 465 -#define VAR_CAPS_WHITELIST 466 -#define VAR_CACHE_MAX_NEGATIVE_TTL 467 -#define VAR_PERMIT_SMALL_HOLDDOWN 468 -#define VAR_QNAME_MINIMISATION 469 -#define VAR_QNAME_MINIMISATION_STRICT 470 -#define VAR_IP_FREEBIND 471 -#define VAR_DEFINE_TAG 472 -#define VAR_LOCAL_ZONE_TAG 473 -#define VAR_ACCESS_CONTROL_TAG 474 -#define VAR_LOCAL_ZONE_OVERRIDE 475 -#define VAR_ACCESS_CONTROL_TAG_ACTION 476 -#define VAR_ACCESS_CONTROL_TAG_DATA 477 -#define VAR_VIEW 478 -#define VAR_ACCESS_CONTROL_VIEW 479 -#define VAR_VIEW_FIRST 480 -#define VAR_SERVE_EXPIRED 481 -#define VAR_SERVE_EXPIRED_TTL 482 -#define VAR_SERVE_EXPIRED_TTL_RESET 483 -#define VAR_SERVE_EXPIRED_REPLY_TTL 484 -#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 485 -#define VAR_SERVE_ORIGINAL_TTL 486 -#define VAR_FAKE_DSA 487 -#define VAR_FAKE_SHA1 488 -#define VAR_LOG_IDENTITY 489 -#define VAR_HIDE_TRUSTANCHOR 490 -#define VAR_TRUST_ANCHOR_SIGNALING 491 -#define VAR_AGGRESSIVE_NSEC 492 -#define VAR_USE_SYSTEMD 493 -#define VAR_SHM_ENABLE 494 -#define VAR_SHM_KEY 495 -#define VAR_ROOT_KEY_SENTINEL 496 -#define VAR_DNSCRYPT 497 -#define VAR_DNSCRYPT_ENABLE 498 -#define VAR_DNSCRYPT_PORT 499 -#define VAR_DNSCRYPT_PROVIDER 500 -#define VAR_DNSCRYPT_SECRET_KEY 501 -#define VAR_DNSCRYPT_PROVIDER_CERT 502 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 503 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 504 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 505 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 506 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 507 -#define VAR_PAD_RESPONSES 508 -#define VAR_PAD_RESPONSES_BLOCK_SIZE 509 -#define VAR_PAD_QUERIES 510 -#define VAR_PAD_QUERIES_BLOCK_SIZE 511 -#define VAR_IPSECMOD_ENABLED 512 -#define VAR_IPSECMOD_HOOK 513 -#define VAR_IPSECMOD_IGNORE_BOGUS 514 -#define VAR_IPSECMOD_MAX_TTL 515 -#define VAR_IPSECMOD_WHITELIST 516 -#define VAR_IPSECMOD_STRICT 517 -#define VAR_CACHEDB 518 -#define VAR_CACHEDB_BACKEND 519 -#define VAR_CACHEDB_SECRETSEED 520 -#define VAR_CACHEDB_REDISHOST 521 -#define VAR_CACHEDB_REDISPORT 522 -#define VAR_CACHEDB_REDISTIMEOUT 523 -#define VAR_CACHEDB_REDISEXPIRERECORDS 524 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 525 -#define VAR_FOR_UPSTREAM 526 -#define VAR_AUTH_ZONE 527 -#define VAR_ZONEFILE 528 -#define VAR_MASTER 529 -#define VAR_URL 530 -#define VAR_FOR_DOWNSTREAM 531 -#define VAR_FALLBACK_ENABLED 532 -#define VAR_TLS_ADDITIONAL_PORT 533 -#define VAR_LOW_RTT 534 -#define VAR_LOW_RTT_PERMIL 535 -#define VAR_FAST_SERVER_PERMIL 536 -#define VAR_FAST_SERVER_NUM 537 -#define VAR_ALLOW_NOTIFY 538 -#define VAR_TLS_WIN_CERT 539 -#define VAR_TCP_CONNECTION_LIMIT 540 -#define VAR_FORWARD_NO_CACHE 541 -#define VAR_STUB_NO_CACHE 542 -#define VAR_LOG_SERVFAIL 543 -#define VAR_DENY_ANY 544 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 545 -#define VAR_LOG_TAG_QUERYREPLY 546 -#define VAR_STREAM_WAIT_SIZE 547 -#define VAR_TLS_CIPHERS 548 -#define VAR_TLS_CIPHERSUITES 549 -#define VAR_TLS_USE_SNI 550 -#define VAR_IPSET 551 -#define VAR_IPSET_NAME_V4 552 -#define VAR_IPSET_NAME_V6 553 -#define VAR_TLS_SESSION_TICKET_KEYS 554 -#define VAR_RPZ 555 -#define VAR_TAGS 556 -#define VAR_RPZ_ACTION_OVERRIDE 557 -#define VAR_RPZ_CNAME_OVERRIDE 558 -#define VAR_RPZ_LOG 559 -#define VAR_RPZ_LOG_NAME 560 -#define VAR_DYNLIB 561 -#define VAR_DYNLIB_FILE 562 -#define VAR_EDNS_CLIENT_STRING 563 -#define VAR_EDNS_CLIENT_STRING_OPCODE 564 -#define VAR_NSID 565 -#define VAR_ZONEMD_PERMISSIVE_MODE 566 -#define VAR_ZONEMD_REJECT_ABSENCE 567 +#define VAR_TCP_AUTH_QUERY_TIMEOUT 392 +#define VAR_SSL_SERVICE_KEY 393 +#define VAR_SSL_SERVICE_PEM 394 +#define VAR_SSL_PORT 395 +#define VAR_FORWARD_FIRST 396 +#define VAR_STUB_SSL_UPSTREAM 397 +#define VAR_FORWARD_SSL_UPSTREAM 398 +#define VAR_TLS_CERT_BUNDLE 399 +#define VAR_HTTPS_PORT 400 +#define VAR_HTTP_ENDPOINT 401 +#define VAR_HTTP_MAX_STREAMS 402 +#define VAR_HTTP_QUERY_BUFFER_SIZE 403 +#define VAR_HTTP_RESPONSE_BUFFER_SIZE 404 +#define VAR_HTTP_NODELAY 405 +#define VAR_HTTP_NOTLS_DOWNSTREAM 406 +#define VAR_STUB_FIRST 407 +#define VAR_MINIMAL_RESPONSES 408 +#define VAR_RRSET_ROUNDROBIN 409 +#define VAR_MAX_UDP_SIZE 410 +#define VAR_DELAY_CLOSE 411 +#define VAR_UDP_CONNECT 412 +#define VAR_UNBLOCK_LAN_ZONES 413 +#define VAR_INSECURE_LAN_ZONES 414 +#define VAR_INFRA_CACHE_MIN_RTT 415 +#define VAR_INFRA_KEEP_PROBING 416 +#define VAR_DNS64_PREFIX 417 +#define VAR_DNS64_SYNTHALL 418 +#define VAR_DNS64_IGNORE_AAAA 419 +#define VAR_DNSTAP 420 +#define VAR_DNSTAP_ENABLE 421 +#define VAR_DNSTAP_SOCKET_PATH 422 +#define VAR_DNSTAP_IP 423 +#define VAR_DNSTAP_TLS 424 +#define VAR_DNSTAP_TLS_SERVER_NAME 425 +#define VAR_DNSTAP_TLS_CERT_BUNDLE 426 +#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 427 +#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 428 +#define VAR_DNSTAP_SEND_IDENTITY 429 +#define VAR_DNSTAP_SEND_VERSION 430 +#define VAR_DNSTAP_BIDIRECTIONAL 431 +#define VAR_DNSTAP_IDENTITY 432 +#define VAR_DNSTAP_VERSION 433 +#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 434 +#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 435 +#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 436 +#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 437 +#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 438 +#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 439 +#define VAR_RESPONSE_IP_TAG 440 +#define VAR_RESPONSE_IP 441 +#define VAR_RESPONSE_IP_DATA 442 +#define VAR_HARDEN_ALGO_DOWNGRADE 443 +#define VAR_IP_TRANSPARENT 444 +#define VAR_IP_DSCP 445 +#define VAR_DISABLE_DNSSEC_LAME_CHECK 446 +#define VAR_IP_RATELIMIT 447 +#define VAR_IP_RATELIMIT_SLABS 448 +#define VAR_IP_RATELIMIT_SIZE 449 +#define VAR_RATELIMIT 450 +#define VAR_RATELIMIT_SLABS 451 +#define VAR_RATELIMIT_SIZE 452 +#define VAR_RATELIMIT_FOR_DOMAIN 453 +#define VAR_RATELIMIT_BELOW_DOMAIN 454 +#define VAR_IP_RATELIMIT_FACTOR 455 +#define VAR_RATELIMIT_FACTOR 456 +#define VAR_SEND_CLIENT_SUBNET 457 +#define VAR_CLIENT_SUBNET_ZONE 458 +#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 459 +#define VAR_CLIENT_SUBNET_OPCODE 460 +#define VAR_MAX_CLIENT_SUBNET_IPV4 461 +#define VAR_MAX_CLIENT_SUBNET_IPV6 462 +#define VAR_MIN_CLIENT_SUBNET_IPV4 463 +#define VAR_MIN_CLIENT_SUBNET_IPV6 464 +#define VAR_MAX_ECS_TREE_SIZE_IPV4 465 +#define VAR_MAX_ECS_TREE_SIZE_IPV6 466 +#define VAR_CAPS_WHITELIST 467 +#define VAR_CACHE_MAX_NEGATIVE_TTL 468 +#define VAR_PERMIT_SMALL_HOLDDOWN 469 +#define VAR_QNAME_MINIMISATION 470 +#define VAR_QNAME_MINIMISATION_STRICT 471 +#define VAR_IP_FREEBIND 472 +#define VAR_DEFINE_TAG 473 +#define VAR_LOCAL_ZONE_TAG 474 +#define VAR_ACCESS_CONTROL_TAG 475 +#define VAR_LOCAL_ZONE_OVERRIDE 476 +#define VAR_ACCESS_CONTROL_TAG_ACTION 477 +#define VAR_ACCESS_CONTROL_TAG_DATA 478 +#define VAR_VIEW 479 +#define VAR_ACCESS_CONTROL_VIEW 480 +#define VAR_VIEW_FIRST 481 +#define VAR_SERVE_EXPIRED 482 +#define VAR_SERVE_EXPIRED_TTL 483 +#define VAR_SERVE_EXPIRED_TTL_RESET 484 +#define VAR_SERVE_EXPIRED_REPLY_TTL 485 +#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 486 +#define VAR_SERVE_ORIGINAL_TTL 487 +#define VAR_FAKE_DSA 488 +#define VAR_FAKE_SHA1 489 +#define VAR_LOG_IDENTITY 490 +#define VAR_HIDE_TRUSTANCHOR 491 +#define VAR_TRUST_ANCHOR_SIGNALING 492 +#define VAR_AGGRESSIVE_NSEC 493 +#define VAR_USE_SYSTEMD 494 +#define VAR_SHM_ENABLE 495 +#define VAR_SHM_KEY 496 +#define VAR_ROOT_KEY_SENTINEL 497 +#define VAR_DNSCRYPT 498 +#define VAR_DNSCRYPT_ENABLE 499 +#define VAR_DNSCRYPT_PORT 500 +#define VAR_DNSCRYPT_PROVIDER 501 +#define VAR_DNSCRYPT_SECRET_KEY 502 +#define VAR_DNSCRYPT_PROVIDER_CERT 503 +#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 504 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 505 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 506 +#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 507 +#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 508 +#define VAR_PAD_RESPONSES 509 +#define VAR_PAD_RESPONSES_BLOCK_SIZE 510 +#define VAR_PAD_QUERIES 511 +#define VAR_PAD_QUERIES_BLOCK_SIZE 512 +#define VAR_IPSECMOD_ENABLED 513 +#define VAR_IPSECMOD_HOOK 514 +#define VAR_IPSECMOD_IGNORE_BOGUS 515 +#define VAR_IPSECMOD_MAX_TTL 516 +#define VAR_IPSECMOD_WHITELIST 517 +#define VAR_IPSECMOD_STRICT 518 +#define VAR_CACHEDB 519 +#define VAR_CACHEDB_BACKEND 520 +#define VAR_CACHEDB_SECRETSEED 521 +#define VAR_CACHEDB_REDISHOST 522 +#define VAR_CACHEDB_REDISPORT 523 +#define VAR_CACHEDB_REDISTIMEOUT 524 +#define VAR_CACHEDB_REDISEXPIRERECORDS 525 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 526 +#define VAR_FOR_UPSTREAM 527 +#define VAR_AUTH_ZONE 528 +#define VAR_ZONEFILE 529 +#define VAR_MASTER 530 +#define VAR_URL 531 +#define VAR_FOR_DOWNSTREAM 532 +#define VAR_FALLBACK_ENABLED 533 +#define VAR_TLS_ADDITIONAL_PORT 534 +#define VAR_LOW_RTT 535 +#define VAR_LOW_RTT_PERMIL 536 +#define VAR_FAST_SERVER_PERMIL 537 +#define VAR_FAST_SERVER_NUM 538 +#define VAR_ALLOW_NOTIFY 539 +#define VAR_TLS_WIN_CERT 540 +#define VAR_TCP_CONNECTION_LIMIT 541 +#define VAR_FORWARD_NO_CACHE 542 +#define VAR_STUB_NO_CACHE 543 +#define VAR_LOG_SERVFAIL 544 +#define VAR_DENY_ANY 545 +#define VAR_UNKNOWN_SERVER_TIME_LIMIT 546 +#define VAR_LOG_TAG_QUERYREPLY 547 +#define VAR_STREAM_WAIT_SIZE 548 +#define VAR_TLS_CIPHERS 549 +#define VAR_TLS_CIPHERSUITES 550 +#define VAR_TLS_USE_SNI 551 +#define VAR_IPSET 552 +#define VAR_IPSET_NAME_V4 553 +#define VAR_IPSET_NAME_V6 554 +#define VAR_TLS_SESSION_TICKET_KEYS 555 +#define VAR_RPZ 556 +#define VAR_TAGS 557 +#define VAR_RPZ_ACTION_OVERRIDE 558 +#define VAR_RPZ_CNAME_OVERRIDE 559 +#define VAR_RPZ_LOG 560 +#define VAR_RPZ_LOG_NAME 561 +#define VAR_DYNLIB 562 +#define VAR_DYNLIB_FILE 563 +#define VAR_EDNS_CLIENT_STRING 564 +#define VAR_EDNS_CLIENT_STRING_OPCODE 565 +#define VAR_NSID 566 +#define VAR_ZONEMD_PERMISSIVE_MODE 567 +#define VAR_ZONEMD_REJECT_ABSENCE 568 -/* Value type. */ -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -union YYSTYPE -{ -#line 66 "./util/configparser.y" - char* str; -#line 780 "util/configparser.c" -}; -typedef union YYSTYPE YYSTYPE; -# define YYSTYPE_IS_TRIVIAL 1 -# define YYSTYPE_IS_DECLARED 1 +/* Copy the first part of user declarations. */ +#line 38 "util/configparser.y" + +#include "config.h" + +#include +#include +#include +#include +#include + +#include "util/configyyrename.h" +#include "util/config_file.h" +#include "util/net_help.h" + +int ub_c_lex(void); +void ub_c_error(const char *message); + +static void validate_respip_action(const char* action); + +/* these need to be global, otherwise they cannot be used inside yacc */ +extern struct config_parser_state* cfg_parser; + +#if 0 +#define OUTYY(s) printf s /* used ONLY when debugging */ +#else +#define OUTYY(s) #endif -extern YYSTYPE yylval; -int yyparse (void); +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif -#endif /* !YY_YY_UTIL_CONFIGPARSER_H_INCLUDED */ -/* Symbol kind. */ -enum yysymbol_kind_t +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* Enabling the token table. */ +#ifndef YYTOKEN_TABLE +# define YYTOKEN_TABLE 0 +#endif + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +#line 66 "util/configparser.y" { - YYSYMBOL_YYEMPTY = -2, - YYSYMBOL_YYEOF = 0, /* "end of file" */ - YYSYMBOL_YYerror = 1, /* error */ - YYSYMBOL_YYUNDEF = 2, /* "invalid token" */ - YYSYMBOL_SPACE = 3, /* SPACE */ - YYSYMBOL_LETTER = 4, /* LETTER */ - YYSYMBOL_NEWLINE = 5, /* NEWLINE */ - YYSYMBOL_COMMENT = 6, /* COMMENT */ - YYSYMBOL_COLON = 7, /* COLON */ - YYSYMBOL_ANY = 8, /* ANY */ - YYSYMBOL_ZONESTR = 9, /* ZONESTR */ - YYSYMBOL_STRING_ARG = 10, /* STRING_ARG */ - YYSYMBOL_VAR_FORCE_TOPLEVEL = 11, /* VAR_FORCE_TOPLEVEL */ - YYSYMBOL_VAR_SERVER = 12, /* VAR_SERVER */ - YYSYMBOL_VAR_VERBOSITY = 13, /* VAR_VERBOSITY */ - YYSYMBOL_VAR_NUM_THREADS = 14, /* VAR_NUM_THREADS */ - YYSYMBOL_VAR_PORT = 15, /* VAR_PORT */ - YYSYMBOL_VAR_OUTGOING_RANGE = 16, /* VAR_OUTGOING_RANGE */ - YYSYMBOL_VAR_INTERFACE = 17, /* VAR_INTERFACE */ - YYSYMBOL_VAR_PREFER_IP4 = 18, /* VAR_PREFER_IP4 */ - YYSYMBOL_VAR_DO_IP4 = 19, /* VAR_DO_IP4 */ - YYSYMBOL_VAR_DO_IP6 = 20, /* VAR_DO_IP6 */ - YYSYMBOL_VAR_PREFER_IP6 = 21, /* VAR_PREFER_IP6 */ - YYSYMBOL_VAR_DO_UDP = 22, /* VAR_DO_UDP */ - YYSYMBOL_VAR_DO_TCP = 23, /* VAR_DO_TCP */ - YYSYMBOL_VAR_TCP_MSS = 24, /* VAR_TCP_MSS */ - YYSYMBOL_VAR_OUTGOING_TCP_MSS = 25, /* VAR_OUTGOING_TCP_MSS */ - YYSYMBOL_VAR_TCP_IDLE_TIMEOUT = 26, /* VAR_TCP_IDLE_TIMEOUT */ - YYSYMBOL_VAR_EDNS_TCP_KEEPALIVE = 27, /* VAR_EDNS_TCP_KEEPALIVE */ - YYSYMBOL_VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 28, /* VAR_EDNS_TCP_KEEPALIVE_TIMEOUT */ - YYSYMBOL_VAR_CHROOT = 29, /* VAR_CHROOT */ - YYSYMBOL_VAR_USERNAME = 30, /* VAR_USERNAME */ - YYSYMBOL_VAR_DIRECTORY = 31, /* VAR_DIRECTORY */ - YYSYMBOL_VAR_LOGFILE = 32, /* VAR_LOGFILE */ - YYSYMBOL_VAR_PIDFILE = 33, /* VAR_PIDFILE */ - YYSYMBOL_VAR_MSG_CACHE_SIZE = 34, /* VAR_MSG_CACHE_SIZE */ - YYSYMBOL_VAR_MSG_CACHE_SLABS = 35, /* VAR_MSG_CACHE_SLABS */ - YYSYMBOL_VAR_NUM_QUERIES_PER_THREAD = 36, /* VAR_NUM_QUERIES_PER_THREAD */ - YYSYMBOL_VAR_RRSET_CACHE_SIZE = 37, /* VAR_RRSET_CACHE_SIZE */ - YYSYMBOL_VAR_RRSET_CACHE_SLABS = 38, /* VAR_RRSET_CACHE_SLABS */ - YYSYMBOL_VAR_OUTGOING_NUM_TCP = 39, /* VAR_OUTGOING_NUM_TCP */ - YYSYMBOL_VAR_INFRA_HOST_TTL = 40, /* VAR_INFRA_HOST_TTL */ - YYSYMBOL_VAR_INFRA_LAME_TTL = 41, /* VAR_INFRA_LAME_TTL */ - YYSYMBOL_VAR_INFRA_CACHE_SLABS = 42, /* VAR_INFRA_CACHE_SLABS */ - YYSYMBOL_VAR_INFRA_CACHE_NUMHOSTS = 43, /* VAR_INFRA_CACHE_NUMHOSTS */ - YYSYMBOL_VAR_INFRA_CACHE_LAME_SIZE = 44, /* VAR_INFRA_CACHE_LAME_SIZE */ - YYSYMBOL_VAR_NAME = 45, /* VAR_NAME */ - YYSYMBOL_VAR_STUB_ZONE = 46, /* VAR_STUB_ZONE */ - YYSYMBOL_VAR_STUB_HOST = 47, /* VAR_STUB_HOST */ - YYSYMBOL_VAR_STUB_ADDR = 48, /* VAR_STUB_ADDR */ - YYSYMBOL_VAR_TARGET_FETCH_POLICY = 49, /* VAR_TARGET_FETCH_POLICY */ - YYSYMBOL_VAR_HARDEN_SHORT_BUFSIZE = 50, /* VAR_HARDEN_SHORT_BUFSIZE */ - YYSYMBOL_VAR_HARDEN_LARGE_QUERIES = 51, /* VAR_HARDEN_LARGE_QUERIES */ - YYSYMBOL_VAR_FORWARD_ZONE = 52, /* VAR_FORWARD_ZONE */ - YYSYMBOL_VAR_FORWARD_HOST = 53, /* VAR_FORWARD_HOST */ - YYSYMBOL_VAR_FORWARD_ADDR = 54, /* VAR_FORWARD_ADDR */ - YYSYMBOL_VAR_DO_NOT_QUERY_ADDRESS = 55, /* VAR_DO_NOT_QUERY_ADDRESS */ - YYSYMBOL_VAR_HIDE_IDENTITY = 56, /* VAR_HIDE_IDENTITY */ - YYSYMBOL_VAR_HIDE_VERSION = 57, /* VAR_HIDE_VERSION */ - YYSYMBOL_VAR_IDENTITY = 58, /* VAR_IDENTITY */ - YYSYMBOL_VAR_VERSION = 59, /* VAR_VERSION */ - YYSYMBOL_VAR_HARDEN_GLUE = 60, /* VAR_HARDEN_GLUE */ - YYSYMBOL_VAR_MODULE_CONF = 61, /* VAR_MODULE_CONF */ - YYSYMBOL_VAR_TRUST_ANCHOR_FILE = 62, /* VAR_TRUST_ANCHOR_FILE */ - YYSYMBOL_VAR_TRUST_ANCHOR = 63, /* VAR_TRUST_ANCHOR */ - YYSYMBOL_VAR_VAL_OVERRIDE_DATE = 64, /* VAR_VAL_OVERRIDE_DATE */ - YYSYMBOL_VAR_BOGUS_TTL = 65, /* VAR_BOGUS_TTL */ - YYSYMBOL_VAR_VAL_CLEAN_ADDITIONAL = 66, /* VAR_VAL_CLEAN_ADDITIONAL */ - YYSYMBOL_VAR_VAL_PERMISSIVE_MODE = 67, /* VAR_VAL_PERMISSIVE_MODE */ - YYSYMBOL_VAR_INCOMING_NUM_TCP = 68, /* VAR_INCOMING_NUM_TCP */ - YYSYMBOL_VAR_MSG_BUFFER_SIZE = 69, /* VAR_MSG_BUFFER_SIZE */ - YYSYMBOL_VAR_KEY_CACHE_SIZE = 70, /* VAR_KEY_CACHE_SIZE */ - YYSYMBOL_VAR_KEY_CACHE_SLABS = 71, /* VAR_KEY_CACHE_SLABS */ - YYSYMBOL_VAR_TRUSTED_KEYS_FILE = 72, /* VAR_TRUSTED_KEYS_FILE */ - YYSYMBOL_VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 73, /* VAR_VAL_NSEC3_KEYSIZE_ITERATIONS */ - YYSYMBOL_VAR_USE_SYSLOG = 74, /* VAR_USE_SYSLOG */ - YYSYMBOL_VAR_OUTGOING_INTERFACE = 75, /* VAR_OUTGOING_INTERFACE */ - YYSYMBOL_VAR_ROOT_HINTS = 76, /* VAR_ROOT_HINTS */ - YYSYMBOL_VAR_DO_NOT_QUERY_LOCALHOST = 77, /* VAR_DO_NOT_QUERY_LOCALHOST */ - YYSYMBOL_VAR_CACHE_MAX_TTL = 78, /* VAR_CACHE_MAX_TTL */ - YYSYMBOL_VAR_HARDEN_DNSSEC_STRIPPED = 79, /* VAR_HARDEN_DNSSEC_STRIPPED */ - YYSYMBOL_VAR_ACCESS_CONTROL = 80, /* VAR_ACCESS_CONTROL */ - YYSYMBOL_VAR_LOCAL_ZONE = 81, /* VAR_LOCAL_ZONE */ - YYSYMBOL_VAR_LOCAL_DATA = 82, /* VAR_LOCAL_DATA */ - YYSYMBOL_VAR_INTERFACE_AUTOMATIC = 83, /* VAR_INTERFACE_AUTOMATIC */ - YYSYMBOL_VAR_STATISTICS_INTERVAL = 84, /* VAR_STATISTICS_INTERVAL */ - YYSYMBOL_VAR_DO_DAEMONIZE = 85, /* VAR_DO_DAEMONIZE */ - YYSYMBOL_VAR_USE_CAPS_FOR_ID = 86, /* VAR_USE_CAPS_FOR_ID */ - YYSYMBOL_VAR_STATISTICS_CUMULATIVE = 87, /* VAR_STATISTICS_CUMULATIVE */ - YYSYMBOL_VAR_OUTGOING_PORT_PERMIT = 88, /* VAR_OUTGOING_PORT_PERMIT */ - YYSYMBOL_VAR_OUTGOING_PORT_AVOID = 89, /* VAR_OUTGOING_PORT_AVOID */ - YYSYMBOL_VAR_DLV_ANCHOR_FILE = 90, /* VAR_DLV_ANCHOR_FILE */ - YYSYMBOL_VAR_DLV_ANCHOR = 91, /* VAR_DLV_ANCHOR */ - YYSYMBOL_VAR_NEG_CACHE_SIZE = 92, /* VAR_NEG_CACHE_SIZE */ - YYSYMBOL_VAR_HARDEN_REFERRAL_PATH = 93, /* VAR_HARDEN_REFERRAL_PATH */ - YYSYMBOL_VAR_PRIVATE_ADDRESS = 94, /* VAR_PRIVATE_ADDRESS */ - YYSYMBOL_VAR_PRIVATE_DOMAIN = 95, /* VAR_PRIVATE_DOMAIN */ - YYSYMBOL_VAR_REMOTE_CONTROL = 96, /* VAR_REMOTE_CONTROL */ - YYSYMBOL_VAR_CONTROL_ENABLE = 97, /* VAR_CONTROL_ENABLE */ - YYSYMBOL_VAR_CONTROL_INTERFACE = 98, /* VAR_CONTROL_INTERFACE */ - YYSYMBOL_VAR_CONTROL_PORT = 99, /* VAR_CONTROL_PORT */ - YYSYMBOL_VAR_SERVER_KEY_FILE = 100, /* VAR_SERVER_KEY_FILE */ - YYSYMBOL_VAR_SERVER_CERT_FILE = 101, /* VAR_SERVER_CERT_FILE */ - YYSYMBOL_VAR_CONTROL_KEY_FILE = 102, /* VAR_CONTROL_KEY_FILE */ - YYSYMBOL_VAR_CONTROL_CERT_FILE = 103, /* VAR_CONTROL_CERT_FILE */ - YYSYMBOL_VAR_CONTROL_USE_CERT = 104, /* VAR_CONTROL_USE_CERT */ - YYSYMBOL_VAR_TCP_REUSE_TIMEOUT = 105, /* VAR_TCP_REUSE_TIMEOUT */ - YYSYMBOL_VAR_MAX_REUSE_TCP_QUERIES = 106, /* VAR_MAX_REUSE_TCP_QUERIES */ - YYSYMBOL_VAR_EXTENDED_STATISTICS = 107, /* VAR_EXTENDED_STATISTICS */ - YYSYMBOL_VAR_LOCAL_DATA_PTR = 108, /* VAR_LOCAL_DATA_PTR */ - YYSYMBOL_VAR_JOSTLE_TIMEOUT = 109, /* VAR_JOSTLE_TIMEOUT */ - YYSYMBOL_VAR_STUB_PRIME = 110, /* VAR_STUB_PRIME */ - YYSYMBOL_VAR_UNWANTED_REPLY_THRESHOLD = 111, /* VAR_UNWANTED_REPLY_THRESHOLD */ - YYSYMBOL_VAR_LOG_TIME_ASCII = 112, /* VAR_LOG_TIME_ASCII */ - YYSYMBOL_VAR_DOMAIN_INSECURE = 113, /* VAR_DOMAIN_INSECURE */ - YYSYMBOL_VAR_PYTHON = 114, /* VAR_PYTHON */ - YYSYMBOL_VAR_PYTHON_SCRIPT = 115, /* VAR_PYTHON_SCRIPT */ - YYSYMBOL_VAR_VAL_SIG_SKEW_MIN = 116, /* VAR_VAL_SIG_SKEW_MIN */ - YYSYMBOL_VAR_VAL_SIG_SKEW_MAX = 117, /* VAR_VAL_SIG_SKEW_MAX */ - YYSYMBOL_VAR_CACHE_MIN_TTL = 118, /* VAR_CACHE_MIN_TTL */ - YYSYMBOL_VAR_VAL_LOG_LEVEL = 119, /* VAR_VAL_LOG_LEVEL */ - YYSYMBOL_VAR_AUTO_TRUST_ANCHOR_FILE = 120, /* VAR_AUTO_TRUST_ANCHOR_FILE */ - YYSYMBOL_VAR_KEEP_MISSING = 121, /* VAR_KEEP_MISSING */ - YYSYMBOL_VAR_ADD_HOLDDOWN = 122, /* VAR_ADD_HOLDDOWN */ - YYSYMBOL_VAR_DEL_HOLDDOWN = 123, /* VAR_DEL_HOLDDOWN */ - YYSYMBOL_VAR_SO_RCVBUF = 124, /* VAR_SO_RCVBUF */ - YYSYMBOL_VAR_EDNS_BUFFER_SIZE = 125, /* VAR_EDNS_BUFFER_SIZE */ - YYSYMBOL_VAR_PREFETCH = 126, /* VAR_PREFETCH */ - YYSYMBOL_VAR_PREFETCH_KEY = 127, /* VAR_PREFETCH_KEY */ - YYSYMBOL_VAR_SO_SNDBUF = 128, /* VAR_SO_SNDBUF */ - YYSYMBOL_VAR_SO_REUSEPORT = 129, /* VAR_SO_REUSEPORT */ - YYSYMBOL_VAR_HARDEN_BELOW_NXDOMAIN = 130, /* VAR_HARDEN_BELOW_NXDOMAIN */ - YYSYMBOL_VAR_IGNORE_CD_FLAG = 131, /* VAR_IGNORE_CD_FLAG */ - YYSYMBOL_VAR_LOG_QUERIES = 132, /* VAR_LOG_QUERIES */ - YYSYMBOL_VAR_LOG_REPLIES = 133, /* VAR_LOG_REPLIES */ - YYSYMBOL_VAR_LOG_LOCAL_ACTIONS = 134, /* VAR_LOG_LOCAL_ACTIONS */ - YYSYMBOL_VAR_TCP_UPSTREAM = 135, /* VAR_TCP_UPSTREAM */ - YYSYMBOL_VAR_SSL_UPSTREAM = 136, /* VAR_SSL_UPSTREAM */ - YYSYMBOL_VAR_SSL_SERVICE_KEY = 137, /* VAR_SSL_SERVICE_KEY */ - YYSYMBOL_VAR_SSL_SERVICE_PEM = 138, /* VAR_SSL_SERVICE_PEM */ - YYSYMBOL_VAR_SSL_PORT = 139, /* VAR_SSL_PORT */ - YYSYMBOL_VAR_FORWARD_FIRST = 140, /* VAR_FORWARD_FIRST */ - YYSYMBOL_VAR_STUB_SSL_UPSTREAM = 141, /* VAR_STUB_SSL_UPSTREAM */ - YYSYMBOL_VAR_FORWARD_SSL_UPSTREAM = 142, /* VAR_FORWARD_SSL_UPSTREAM */ - YYSYMBOL_VAR_TLS_CERT_BUNDLE = 143, /* VAR_TLS_CERT_BUNDLE */ - YYSYMBOL_VAR_HTTPS_PORT = 144, /* VAR_HTTPS_PORT */ - YYSYMBOL_VAR_HTTP_ENDPOINT = 145, /* VAR_HTTP_ENDPOINT */ - YYSYMBOL_VAR_HTTP_MAX_STREAMS = 146, /* VAR_HTTP_MAX_STREAMS */ - YYSYMBOL_VAR_HTTP_QUERY_BUFFER_SIZE = 147, /* VAR_HTTP_QUERY_BUFFER_SIZE */ - YYSYMBOL_VAR_HTTP_RESPONSE_BUFFER_SIZE = 148, /* VAR_HTTP_RESPONSE_BUFFER_SIZE */ - YYSYMBOL_VAR_HTTP_NODELAY = 149, /* VAR_HTTP_NODELAY */ - YYSYMBOL_VAR_HTTP_NOTLS_DOWNSTREAM = 150, /* VAR_HTTP_NOTLS_DOWNSTREAM */ - YYSYMBOL_VAR_STUB_FIRST = 151, /* VAR_STUB_FIRST */ - YYSYMBOL_VAR_MINIMAL_RESPONSES = 152, /* VAR_MINIMAL_RESPONSES */ - YYSYMBOL_VAR_RRSET_ROUNDROBIN = 153, /* VAR_RRSET_ROUNDROBIN */ - YYSYMBOL_VAR_MAX_UDP_SIZE = 154, /* VAR_MAX_UDP_SIZE */ - YYSYMBOL_VAR_DELAY_CLOSE = 155, /* VAR_DELAY_CLOSE */ - YYSYMBOL_VAR_UDP_CONNECT = 156, /* VAR_UDP_CONNECT */ - YYSYMBOL_VAR_UNBLOCK_LAN_ZONES = 157, /* VAR_UNBLOCK_LAN_ZONES */ - YYSYMBOL_VAR_INSECURE_LAN_ZONES = 158, /* VAR_INSECURE_LAN_ZONES */ - YYSYMBOL_VAR_INFRA_CACHE_MIN_RTT = 159, /* VAR_INFRA_CACHE_MIN_RTT */ - YYSYMBOL_VAR_INFRA_KEEP_PROBING = 160, /* VAR_INFRA_KEEP_PROBING */ - YYSYMBOL_VAR_DNS64_PREFIX = 161, /* VAR_DNS64_PREFIX */ - YYSYMBOL_VAR_DNS64_SYNTHALL = 162, /* VAR_DNS64_SYNTHALL */ - YYSYMBOL_VAR_DNS64_IGNORE_AAAA = 163, /* VAR_DNS64_IGNORE_AAAA */ - YYSYMBOL_VAR_DNSTAP = 164, /* VAR_DNSTAP */ - YYSYMBOL_VAR_DNSTAP_ENABLE = 165, /* VAR_DNSTAP_ENABLE */ - YYSYMBOL_VAR_DNSTAP_SOCKET_PATH = 166, /* VAR_DNSTAP_SOCKET_PATH */ - YYSYMBOL_VAR_DNSTAP_IP = 167, /* VAR_DNSTAP_IP */ - YYSYMBOL_VAR_DNSTAP_TLS = 168, /* VAR_DNSTAP_TLS */ - YYSYMBOL_VAR_DNSTAP_TLS_SERVER_NAME = 169, /* VAR_DNSTAP_TLS_SERVER_NAME */ - YYSYMBOL_VAR_DNSTAP_TLS_CERT_BUNDLE = 170, /* VAR_DNSTAP_TLS_CERT_BUNDLE */ - YYSYMBOL_VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 171, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE */ - YYSYMBOL_VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 172, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE */ - YYSYMBOL_VAR_DNSTAP_SEND_IDENTITY = 173, /* VAR_DNSTAP_SEND_IDENTITY */ - YYSYMBOL_VAR_DNSTAP_SEND_VERSION = 174, /* VAR_DNSTAP_SEND_VERSION */ - YYSYMBOL_VAR_DNSTAP_BIDIRECTIONAL = 175, /* VAR_DNSTAP_BIDIRECTIONAL */ - YYSYMBOL_VAR_DNSTAP_IDENTITY = 176, /* VAR_DNSTAP_IDENTITY */ - YYSYMBOL_VAR_DNSTAP_VERSION = 177, /* VAR_DNSTAP_VERSION */ - YYSYMBOL_VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 178, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES */ - YYSYMBOL_VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 179, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES */ - YYSYMBOL_VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 180, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES */ - YYSYMBOL_VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 181, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES */ - YYSYMBOL_VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 182, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES */ - YYSYMBOL_VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 183, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES */ - YYSYMBOL_VAR_RESPONSE_IP_TAG = 184, /* VAR_RESPONSE_IP_TAG */ - YYSYMBOL_VAR_RESPONSE_IP = 185, /* VAR_RESPONSE_IP */ - YYSYMBOL_VAR_RESPONSE_IP_DATA = 186, /* VAR_RESPONSE_IP_DATA */ - YYSYMBOL_VAR_HARDEN_ALGO_DOWNGRADE = 187, /* VAR_HARDEN_ALGO_DOWNGRADE */ - YYSYMBOL_VAR_IP_TRANSPARENT = 188, /* VAR_IP_TRANSPARENT */ - YYSYMBOL_VAR_IP_DSCP = 189, /* VAR_IP_DSCP */ - YYSYMBOL_VAR_DISABLE_DNSSEC_LAME_CHECK = 190, /* VAR_DISABLE_DNSSEC_LAME_CHECK */ - YYSYMBOL_VAR_IP_RATELIMIT = 191, /* VAR_IP_RATELIMIT */ - YYSYMBOL_VAR_IP_RATELIMIT_SLABS = 192, /* VAR_IP_RATELIMIT_SLABS */ - YYSYMBOL_VAR_IP_RATELIMIT_SIZE = 193, /* VAR_IP_RATELIMIT_SIZE */ - YYSYMBOL_VAR_RATELIMIT = 194, /* VAR_RATELIMIT */ - YYSYMBOL_VAR_RATELIMIT_SLABS = 195, /* VAR_RATELIMIT_SLABS */ - YYSYMBOL_VAR_RATELIMIT_SIZE = 196, /* VAR_RATELIMIT_SIZE */ - YYSYMBOL_VAR_RATELIMIT_FOR_DOMAIN = 197, /* VAR_RATELIMIT_FOR_DOMAIN */ - YYSYMBOL_VAR_RATELIMIT_BELOW_DOMAIN = 198, /* VAR_RATELIMIT_BELOW_DOMAIN */ - YYSYMBOL_VAR_IP_RATELIMIT_FACTOR = 199, /* VAR_IP_RATELIMIT_FACTOR */ - YYSYMBOL_VAR_RATELIMIT_FACTOR = 200, /* VAR_RATELIMIT_FACTOR */ - YYSYMBOL_VAR_SEND_CLIENT_SUBNET = 201, /* VAR_SEND_CLIENT_SUBNET */ - YYSYMBOL_VAR_CLIENT_SUBNET_ZONE = 202, /* VAR_CLIENT_SUBNET_ZONE */ - YYSYMBOL_VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 203, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ - YYSYMBOL_VAR_CLIENT_SUBNET_OPCODE = 204, /* VAR_CLIENT_SUBNET_OPCODE */ - YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV4 = 205, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ - YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV6 = 206, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ - YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV4 = 207, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ - YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV6 = 208, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ - YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV4 = 209, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ - YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV6 = 210, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ - YYSYMBOL_VAR_CAPS_WHITELIST = 211, /* VAR_CAPS_WHITELIST */ - YYSYMBOL_VAR_CACHE_MAX_NEGATIVE_TTL = 212, /* VAR_CACHE_MAX_NEGATIVE_TTL */ - YYSYMBOL_VAR_PERMIT_SMALL_HOLDDOWN = 213, /* VAR_PERMIT_SMALL_HOLDDOWN */ - YYSYMBOL_VAR_QNAME_MINIMISATION = 214, /* VAR_QNAME_MINIMISATION */ - YYSYMBOL_VAR_QNAME_MINIMISATION_STRICT = 215, /* VAR_QNAME_MINIMISATION_STRICT */ - YYSYMBOL_VAR_IP_FREEBIND = 216, /* VAR_IP_FREEBIND */ - YYSYMBOL_VAR_DEFINE_TAG = 217, /* VAR_DEFINE_TAG */ - YYSYMBOL_VAR_LOCAL_ZONE_TAG = 218, /* VAR_LOCAL_ZONE_TAG */ - YYSYMBOL_VAR_ACCESS_CONTROL_TAG = 219, /* VAR_ACCESS_CONTROL_TAG */ - YYSYMBOL_VAR_LOCAL_ZONE_OVERRIDE = 220, /* VAR_LOCAL_ZONE_OVERRIDE */ - YYSYMBOL_VAR_ACCESS_CONTROL_TAG_ACTION = 221, /* VAR_ACCESS_CONTROL_TAG_ACTION */ - YYSYMBOL_VAR_ACCESS_CONTROL_TAG_DATA = 222, /* VAR_ACCESS_CONTROL_TAG_DATA */ - YYSYMBOL_VAR_VIEW = 223, /* VAR_VIEW */ - YYSYMBOL_VAR_ACCESS_CONTROL_VIEW = 224, /* VAR_ACCESS_CONTROL_VIEW */ - YYSYMBOL_VAR_VIEW_FIRST = 225, /* VAR_VIEW_FIRST */ - YYSYMBOL_VAR_SERVE_EXPIRED = 226, /* VAR_SERVE_EXPIRED */ - YYSYMBOL_VAR_SERVE_EXPIRED_TTL = 227, /* VAR_SERVE_EXPIRED_TTL */ - YYSYMBOL_VAR_SERVE_EXPIRED_TTL_RESET = 228, /* VAR_SERVE_EXPIRED_TTL_RESET */ - YYSYMBOL_VAR_SERVE_EXPIRED_REPLY_TTL = 229, /* VAR_SERVE_EXPIRED_REPLY_TTL */ - YYSYMBOL_VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 230, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ - YYSYMBOL_VAR_SERVE_ORIGINAL_TTL = 231, /* VAR_SERVE_ORIGINAL_TTL */ - YYSYMBOL_VAR_FAKE_DSA = 232, /* VAR_FAKE_DSA */ - YYSYMBOL_VAR_FAKE_SHA1 = 233, /* VAR_FAKE_SHA1 */ - YYSYMBOL_VAR_LOG_IDENTITY = 234, /* VAR_LOG_IDENTITY */ - YYSYMBOL_VAR_HIDE_TRUSTANCHOR = 235, /* VAR_HIDE_TRUSTANCHOR */ - YYSYMBOL_VAR_TRUST_ANCHOR_SIGNALING = 236, /* VAR_TRUST_ANCHOR_SIGNALING */ - YYSYMBOL_VAR_AGGRESSIVE_NSEC = 237, /* VAR_AGGRESSIVE_NSEC */ - YYSYMBOL_VAR_USE_SYSTEMD = 238, /* VAR_USE_SYSTEMD */ - YYSYMBOL_VAR_SHM_ENABLE = 239, /* VAR_SHM_ENABLE */ - YYSYMBOL_VAR_SHM_KEY = 240, /* VAR_SHM_KEY */ - YYSYMBOL_VAR_ROOT_KEY_SENTINEL = 241, /* VAR_ROOT_KEY_SENTINEL */ - YYSYMBOL_VAR_DNSCRYPT = 242, /* VAR_DNSCRYPT */ - YYSYMBOL_VAR_DNSCRYPT_ENABLE = 243, /* VAR_DNSCRYPT_ENABLE */ - YYSYMBOL_VAR_DNSCRYPT_PORT = 244, /* VAR_DNSCRYPT_PORT */ - YYSYMBOL_VAR_DNSCRYPT_PROVIDER = 245, /* VAR_DNSCRYPT_PROVIDER */ - YYSYMBOL_VAR_DNSCRYPT_SECRET_KEY = 246, /* VAR_DNSCRYPT_SECRET_KEY */ - YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT = 247, /* VAR_DNSCRYPT_PROVIDER_CERT */ - YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 248, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ - YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 249, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ - YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 250, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ - YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SIZE = 251, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ - YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SLABS = 252, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ - YYSYMBOL_VAR_PAD_RESPONSES = 253, /* VAR_PAD_RESPONSES */ - YYSYMBOL_VAR_PAD_RESPONSES_BLOCK_SIZE = 254, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ - YYSYMBOL_VAR_PAD_QUERIES = 255, /* VAR_PAD_QUERIES */ - YYSYMBOL_VAR_PAD_QUERIES_BLOCK_SIZE = 256, /* VAR_PAD_QUERIES_BLOCK_SIZE */ - YYSYMBOL_VAR_IPSECMOD_ENABLED = 257, /* VAR_IPSECMOD_ENABLED */ - YYSYMBOL_VAR_IPSECMOD_HOOK = 258, /* VAR_IPSECMOD_HOOK */ - YYSYMBOL_VAR_IPSECMOD_IGNORE_BOGUS = 259, /* VAR_IPSECMOD_IGNORE_BOGUS */ - YYSYMBOL_VAR_IPSECMOD_MAX_TTL = 260, /* VAR_IPSECMOD_MAX_TTL */ - YYSYMBOL_VAR_IPSECMOD_WHITELIST = 261, /* VAR_IPSECMOD_WHITELIST */ - YYSYMBOL_VAR_IPSECMOD_STRICT = 262, /* VAR_IPSECMOD_STRICT */ - YYSYMBOL_VAR_CACHEDB = 263, /* VAR_CACHEDB */ - YYSYMBOL_VAR_CACHEDB_BACKEND = 264, /* VAR_CACHEDB_BACKEND */ - YYSYMBOL_VAR_CACHEDB_SECRETSEED = 265, /* VAR_CACHEDB_SECRETSEED */ - YYSYMBOL_VAR_CACHEDB_REDISHOST = 266, /* VAR_CACHEDB_REDISHOST */ - YYSYMBOL_VAR_CACHEDB_REDISPORT = 267, /* VAR_CACHEDB_REDISPORT */ - YYSYMBOL_VAR_CACHEDB_REDISTIMEOUT = 268, /* VAR_CACHEDB_REDISTIMEOUT */ - YYSYMBOL_VAR_CACHEDB_REDISEXPIRERECORDS = 269, /* VAR_CACHEDB_REDISEXPIRERECORDS */ - YYSYMBOL_VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 270, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ - YYSYMBOL_VAR_FOR_UPSTREAM = 271, /* VAR_FOR_UPSTREAM */ - YYSYMBOL_VAR_AUTH_ZONE = 272, /* VAR_AUTH_ZONE */ - YYSYMBOL_VAR_ZONEFILE = 273, /* VAR_ZONEFILE */ - YYSYMBOL_VAR_MASTER = 274, /* VAR_MASTER */ - YYSYMBOL_VAR_URL = 275, /* VAR_URL */ - YYSYMBOL_VAR_FOR_DOWNSTREAM = 276, /* VAR_FOR_DOWNSTREAM */ - YYSYMBOL_VAR_FALLBACK_ENABLED = 277, /* VAR_FALLBACK_ENABLED */ - YYSYMBOL_VAR_TLS_ADDITIONAL_PORT = 278, /* VAR_TLS_ADDITIONAL_PORT */ - YYSYMBOL_VAR_LOW_RTT = 279, /* VAR_LOW_RTT */ - YYSYMBOL_VAR_LOW_RTT_PERMIL = 280, /* VAR_LOW_RTT_PERMIL */ - YYSYMBOL_VAR_FAST_SERVER_PERMIL = 281, /* VAR_FAST_SERVER_PERMIL */ - YYSYMBOL_VAR_FAST_SERVER_NUM = 282, /* VAR_FAST_SERVER_NUM */ - YYSYMBOL_VAR_ALLOW_NOTIFY = 283, /* VAR_ALLOW_NOTIFY */ - YYSYMBOL_VAR_TLS_WIN_CERT = 284, /* VAR_TLS_WIN_CERT */ - YYSYMBOL_VAR_TCP_CONNECTION_LIMIT = 285, /* VAR_TCP_CONNECTION_LIMIT */ - YYSYMBOL_VAR_FORWARD_NO_CACHE = 286, /* VAR_FORWARD_NO_CACHE */ - YYSYMBOL_VAR_STUB_NO_CACHE = 287, /* VAR_STUB_NO_CACHE */ - YYSYMBOL_VAR_LOG_SERVFAIL = 288, /* VAR_LOG_SERVFAIL */ - YYSYMBOL_VAR_DENY_ANY = 289, /* VAR_DENY_ANY */ - YYSYMBOL_VAR_UNKNOWN_SERVER_TIME_LIMIT = 290, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ - YYSYMBOL_VAR_LOG_TAG_QUERYREPLY = 291, /* VAR_LOG_TAG_QUERYREPLY */ - YYSYMBOL_VAR_STREAM_WAIT_SIZE = 292, /* VAR_STREAM_WAIT_SIZE */ - YYSYMBOL_VAR_TLS_CIPHERS = 293, /* VAR_TLS_CIPHERS */ - YYSYMBOL_VAR_TLS_CIPHERSUITES = 294, /* VAR_TLS_CIPHERSUITES */ - YYSYMBOL_VAR_TLS_USE_SNI = 295, /* VAR_TLS_USE_SNI */ - YYSYMBOL_VAR_IPSET = 296, /* VAR_IPSET */ - YYSYMBOL_VAR_IPSET_NAME_V4 = 297, /* VAR_IPSET_NAME_V4 */ - YYSYMBOL_VAR_IPSET_NAME_V6 = 298, /* VAR_IPSET_NAME_V6 */ - YYSYMBOL_VAR_TLS_SESSION_TICKET_KEYS = 299, /* VAR_TLS_SESSION_TICKET_KEYS */ - YYSYMBOL_VAR_RPZ = 300, /* VAR_RPZ */ - YYSYMBOL_VAR_TAGS = 301, /* VAR_TAGS */ - YYSYMBOL_VAR_RPZ_ACTION_OVERRIDE = 302, /* VAR_RPZ_ACTION_OVERRIDE */ - YYSYMBOL_VAR_RPZ_CNAME_OVERRIDE = 303, /* VAR_RPZ_CNAME_OVERRIDE */ - YYSYMBOL_VAR_RPZ_LOG = 304, /* VAR_RPZ_LOG */ - YYSYMBOL_VAR_RPZ_LOG_NAME = 305, /* VAR_RPZ_LOG_NAME */ - YYSYMBOL_VAR_DYNLIB = 306, /* VAR_DYNLIB */ - YYSYMBOL_VAR_DYNLIB_FILE = 307, /* VAR_DYNLIB_FILE */ - YYSYMBOL_VAR_EDNS_CLIENT_STRING = 308, /* VAR_EDNS_CLIENT_STRING */ - YYSYMBOL_VAR_EDNS_CLIENT_STRING_OPCODE = 309, /* VAR_EDNS_CLIENT_STRING_OPCODE */ - YYSYMBOL_VAR_NSID = 310, /* VAR_NSID */ - YYSYMBOL_VAR_ZONEMD_PERMISSIVE_MODE = 311, /* VAR_ZONEMD_PERMISSIVE_MODE */ - YYSYMBOL_VAR_ZONEMD_REJECT_ABSENCE = 312, /* VAR_ZONEMD_REJECT_ABSENCE */ - YYSYMBOL_YYACCEPT = 313, /* $accept */ - YYSYMBOL_toplevelvars = 314, /* toplevelvars */ - YYSYMBOL_toplevelvar = 315, /* toplevelvar */ - YYSYMBOL_force_toplevel = 316, /* force_toplevel */ - YYSYMBOL_serverstart = 317, /* serverstart */ - YYSYMBOL_contents_server = 318, /* contents_server */ - YYSYMBOL_content_server = 319, /* content_server */ - YYSYMBOL_stubstart = 320, /* stubstart */ - YYSYMBOL_contents_stub = 321, /* contents_stub */ - YYSYMBOL_content_stub = 322, /* content_stub */ - YYSYMBOL_forwardstart = 323, /* forwardstart */ - YYSYMBOL_contents_forward = 324, /* contents_forward */ - YYSYMBOL_content_forward = 325, /* content_forward */ - YYSYMBOL_viewstart = 326, /* viewstart */ - YYSYMBOL_contents_view = 327, /* contents_view */ - YYSYMBOL_content_view = 328, /* content_view */ - YYSYMBOL_authstart = 329, /* authstart */ - YYSYMBOL_contents_auth = 330, /* contents_auth */ - YYSYMBOL_content_auth = 331, /* content_auth */ - YYSYMBOL_rpz_tag = 332, /* rpz_tag */ - YYSYMBOL_rpz_action_override = 333, /* rpz_action_override */ - YYSYMBOL_rpz_cname_override = 334, /* rpz_cname_override */ - YYSYMBOL_rpz_log = 335, /* rpz_log */ - YYSYMBOL_rpz_log_name = 336, /* rpz_log_name */ - YYSYMBOL_rpzstart = 337, /* rpzstart */ - YYSYMBOL_contents_rpz = 338, /* contents_rpz */ - YYSYMBOL_content_rpz = 339, /* content_rpz */ - YYSYMBOL_server_num_threads = 340, /* server_num_threads */ - YYSYMBOL_server_verbosity = 341, /* server_verbosity */ - YYSYMBOL_server_statistics_interval = 342, /* server_statistics_interval */ - YYSYMBOL_server_statistics_cumulative = 343, /* server_statistics_cumulative */ - YYSYMBOL_server_extended_statistics = 344, /* server_extended_statistics */ - YYSYMBOL_server_shm_enable = 345, /* server_shm_enable */ - YYSYMBOL_server_shm_key = 346, /* server_shm_key */ - YYSYMBOL_server_port = 347, /* server_port */ - YYSYMBOL_server_send_client_subnet = 348, /* server_send_client_subnet */ - YYSYMBOL_server_client_subnet_zone = 349, /* server_client_subnet_zone */ - YYSYMBOL_server_client_subnet_always_forward = 350, /* server_client_subnet_always_forward */ - YYSYMBOL_server_client_subnet_opcode = 351, /* server_client_subnet_opcode */ - YYSYMBOL_server_max_client_subnet_ipv4 = 352, /* server_max_client_subnet_ipv4 */ - YYSYMBOL_server_max_client_subnet_ipv6 = 353, /* server_max_client_subnet_ipv6 */ - YYSYMBOL_server_min_client_subnet_ipv4 = 354, /* server_min_client_subnet_ipv4 */ - YYSYMBOL_server_min_client_subnet_ipv6 = 355, /* server_min_client_subnet_ipv6 */ - YYSYMBOL_server_max_ecs_tree_size_ipv4 = 356, /* server_max_ecs_tree_size_ipv4 */ - YYSYMBOL_server_max_ecs_tree_size_ipv6 = 357, /* server_max_ecs_tree_size_ipv6 */ - YYSYMBOL_server_interface = 358, /* server_interface */ - YYSYMBOL_server_outgoing_interface = 359, /* server_outgoing_interface */ - YYSYMBOL_server_outgoing_range = 360, /* server_outgoing_range */ - YYSYMBOL_server_outgoing_port_permit = 361, /* server_outgoing_port_permit */ - YYSYMBOL_server_outgoing_port_avoid = 362, /* server_outgoing_port_avoid */ - YYSYMBOL_server_outgoing_num_tcp = 363, /* server_outgoing_num_tcp */ - YYSYMBOL_server_incoming_num_tcp = 364, /* server_incoming_num_tcp */ - YYSYMBOL_server_interface_automatic = 365, /* server_interface_automatic */ - YYSYMBOL_server_do_ip4 = 366, /* server_do_ip4 */ - YYSYMBOL_server_do_ip6 = 367, /* server_do_ip6 */ - YYSYMBOL_server_do_udp = 368, /* server_do_udp */ - YYSYMBOL_server_do_tcp = 369, /* server_do_tcp */ - YYSYMBOL_server_prefer_ip4 = 370, /* server_prefer_ip4 */ - YYSYMBOL_server_prefer_ip6 = 371, /* server_prefer_ip6 */ - YYSYMBOL_server_tcp_mss = 372, /* server_tcp_mss */ - YYSYMBOL_server_outgoing_tcp_mss = 373, /* server_outgoing_tcp_mss */ - YYSYMBOL_server_tcp_idle_timeout = 374, /* server_tcp_idle_timeout */ - YYSYMBOL_server_max_reuse_tcp_queries = 375, /* server_max_reuse_tcp_queries */ - YYSYMBOL_server_tcp_reuse_timeout = 376, /* server_tcp_reuse_timeout */ - YYSYMBOL_server_tcp_keepalive = 377, /* server_tcp_keepalive */ - YYSYMBOL_server_tcp_keepalive_timeout = 378, /* server_tcp_keepalive_timeout */ - YYSYMBOL_server_tcp_upstream = 379, /* server_tcp_upstream */ - YYSYMBOL_server_udp_upstream_without_downstream = 380, /* server_udp_upstream_without_downstream */ - YYSYMBOL_server_ssl_upstream = 381, /* server_ssl_upstream */ - YYSYMBOL_server_ssl_service_key = 382, /* server_ssl_service_key */ - YYSYMBOL_server_ssl_service_pem = 383, /* server_ssl_service_pem */ - YYSYMBOL_server_ssl_port = 384, /* server_ssl_port */ - YYSYMBOL_server_tls_cert_bundle = 385, /* server_tls_cert_bundle */ - YYSYMBOL_server_tls_win_cert = 386, /* server_tls_win_cert */ - YYSYMBOL_server_tls_additional_port = 387, /* server_tls_additional_port */ - YYSYMBOL_server_tls_ciphers = 388, /* server_tls_ciphers */ - YYSYMBOL_server_tls_ciphersuites = 389, /* server_tls_ciphersuites */ - YYSYMBOL_server_tls_session_ticket_keys = 390, /* server_tls_session_ticket_keys */ - YYSYMBOL_server_tls_use_sni = 391, /* server_tls_use_sni */ - YYSYMBOL_server_https_port = 392, /* server_https_port */ - YYSYMBOL_server_http_endpoint = 393, /* server_http_endpoint */ - YYSYMBOL_server_http_max_streams = 394, /* server_http_max_streams */ - YYSYMBOL_server_http_query_buffer_size = 395, /* server_http_query_buffer_size */ - YYSYMBOL_server_http_response_buffer_size = 396, /* server_http_response_buffer_size */ - YYSYMBOL_server_http_nodelay = 397, /* server_http_nodelay */ - YYSYMBOL_server_http_notls_downstream = 398, /* server_http_notls_downstream */ - YYSYMBOL_server_use_systemd = 399, /* server_use_systemd */ - YYSYMBOL_server_do_daemonize = 400, /* server_do_daemonize */ - YYSYMBOL_server_use_syslog = 401, /* server_use_syslog */ - YYSYMBOL_server_log_time_ascii = 402, /* server_log_time_ascii */ - YYSYMBOL_server_log_queries = 403, /* server_log_queries */ - YYSYMBOL_server_log_replies = 404, /* server_log_replies */ - YYSYMBOL_server_log_tag_queryreply = 405, /* server_log_tag_queryreply */ - YYSYMBOL_server_log_servfail = 406, /* server_log_servfail */ - YYSYMBOL_server_log_local_actions = 407, /* server_log_local_actions */ - YYSYMBOL_server_chroot = 408, /* server_chroot */ - YYSYMBOL_server_username = 409, /* server_username */ - YYSYMBOL_server_directory = 410, /* server_directory */ - YYSYMBOL_server_logfile = 411, /* server_logfile */ - YYSYMBOL_server_pidfile = 412, /* server_pidfile */ - YYSYMBOL_server_root_hints = 413, /* server_root_hints */ - YYSYMBOL_server_dlv_anchor_file = 414, /* server_dlv_anchor_file */ - YYSYMBOL_server_dlv_anchor = 415, /* server_dlv_anchor */ - YYSYMBOL_server_auto_trust_anchor_file = 416, /* server_auto_trust_anchor_file */ - YYSYMBOL_server_trust_anchor_file = 417, /* server_trust_anchor_file */ - YYSYMBOL_server_trusted_keys_file = 418, /* server_trusted_keys_file */ - YYSYMBOL_server_trust_anchor = 419, /* server_trust_anchor */ - YYSYMBOL_server_trust_anchor_signaling = 420, /* server_trust_anchor_signaling */ - YYSYMBOL_server_root_key_sentinel = 421, /* server_root_key_sentinel */ - YYSYMBOL_server_domain_insecure = 422, /* server_domain_insecure */ - YYSYMBOL_server_hide_identity = 423, /* server_hide_identity */ - YYSYMBOL_server_hide_version = 424, /* server_hide_version */ - YYSYMBOL_server_hide_trustanchor = 425, /* server_hide_trustanchor */ - YYSYMBOL_server_identity = 426, /* server_identity */ - YYSYMBOL_server_version = 427, /* server_version */ - YYSYMBOL_server_nsid = 428, /* server_nsid */ - YYSYMBOL_server_so_rcvbuf = 429, /* server_so_rcvbuf */ - YYSYMBOL_server_so_sndbuf = 430, /* server_so_sndbuf */ - YYSYMBOL_server_so_reuseport = 431, /* server_so_reuseport */ - YYSYMBOL_server_ip_transparent = 432, /* server_ip_transparent */ - YYSYMBOL_server_ip_freebind = 433, /* server_ip_freebind */ - YYSYMBOL_server_ip_dscp = 434, /* server_ip_dscp */ - YYSYMBOL_server_stream_wait_size = 435, /* server_stream_wait_size */ - YYSYMBOL_server_edns_buffer_size = 436, /* server_edns_buffer_size */ - YYSYMBOL_server_msg_buffer_size = 437, /* server_msg_buffer_size */ - YYSYMBOL_server_msg_cache_size = 438, /* server_msg_cache_size */ - YYSYMBOL_server_msg_cache_slabs = 439, /* server_msg_cache_slabs */ - YYSYMBOL_server_num_queries_per_thread = 440, /* server_num_queries_per_thread */ - YYSYMBOL_server_jostle_timeout = 441, /* server_jostle_timeout */ - YYSYMBOL_server_delay_close = 442, /* server_delay_close */ - YYSYMBOL_server_udp_connect = 443, /* server_udp_connect */ - YYSYMBOL_server_unblock_lan_zones = 444, /* server_unblock_lan_zones */ - YYSYMBOL_server_insecure_lan_zones = 445, /* server_insecure_lan_zones */ - YYSYMBOL_server_rrset_cache_size = 446, /* server_rrset_cache_size */ - YYSYMBOL_server_rrset_cache_slabs = 447, /* server_rrset_cache_slabs */ - YYSYMBOL_server_infra_host_ttl = 448, /* server_infra_host_ttl */ - YYSYMBOL_server_infra_lame_ttl = 449, /* server_infra_lame_ttl */ - YYSYMBOL_server_infra_cache_numhosts = 450, /* server_infra_cache_numhosts */ - YYSYMBOL_server_infra_cache_lame_size = 451, /* server_infra_cache_lame_size */ - YYSYMBOL_server_infra_cache_slabs = 452, /* server_infra_cache_slabs */ - YYSYMBOL_server_infra_cache_min_rtt = 453, /* server_infra_cache_min_rtt */ - YYSYMBOL_server_infra_keep_probing = 454, /* server_infra_keep_probing */ - YYSYMBOL_server_target_fetch_policy = 455, /* server_target_fetch_policy */ - YYSYMBOL_server_harden_short_bufsize = 456, /* server_harden_short_bufsize */ - YYSYMBOL_server_harden_large_queries = 457, /* server_harden_large_queries */ - YYSYMBOL_server_harden_glue = 458, /* server_harden_glue */ - YYSYMBOL_server_harden_dnssec_stripped = 459, /* server_harden_dnssec_stripped */ - YYSYMBOL_server_harden_below_nxdomain = 460, /* server_harden_below_nxdomain */ - YYSYMBOL_server_harden_referral_path = 461, /* server_harden_referral_path */ - YYSYMBOL_server_harden_algo_downgrade = 462, /* server_harden_algo_downgrade */ - YYSYMBOL_server_use_caps_for_id = 463, /* server_use_caps_for_id */ - YYSYMBOL_server_caps_whitelist = 464, /* server_caps_whitelist */ - YYSYMBOL_server_private_address = 465, /* server_private_address */ - YYSYMBOL_server_private_domain = 466, /* server_private_domain */ - YYSYMBOL_server_prefetch = 467, /* server_prefetch */ - YYSYMBOL_server_prefetch_key = 468, /* server_prefetch_key */ - YYSYMBOL_server_deny_any = 469, /* server_deny_any */ - YYSYMBOL_server_unwanted_reply_threshold = 470, /* server_unwanted_reply_threshold */ - YYSYMBOL_server_do_not_query_address = 471, /* server_do_not_query_address */ - YYSYMBOL_server_do_not_query_localhost = 472, /* server_do_not_query_localhost */ - YYSYMBOL_server_access_control = 473, /* server_access_control */ - YYSYMBOL_server_module_conf = 474, /* server_module_conf */ - YYSYMBOL_server_val_override_date = 475, /* server_val_override_date */ - YYSYMBOL_server_val_sig_skew_min = 476, /* server_val_sig_skew_min */ - YYSYMBOL_server_val_sig_skew_max = 477, /* server_val_sig_skew_max */ - YYSYMBOL_server_cache_max_ttl = 478, /* server_cache_max_ttl */ - YYSYMBOL_server_cache_max_negative_ttl = 479, /* server_cache_max_negative_ttl */ - YYSYMBOL_server_cache_min_ttl = 480, /* server_cache_min_ttl */ - YYSYMBOL_server_bogus_ttl = 481, /* server_bogus_ttl */ - YYSYMBOL_server_val_clean_additional = 482, /* server_val_clean_additional */ - YYSYMBOL_server_val_permissive_mode = 483, /* server_val_permissive_mode */ - YYSYMBOL_server_aggressive_nsec = 484, /* server_aggressive_nsec */ - YYSYMBOL_server_ignore_cd_flag = 485, /* server_ignore_cd_flag */ - YYSYMBOL_server_serve_expired = 486, /* server_serve_expired */ - YYSYMBOL_server_serve_expired_ttl = 487, /* server_serve_expired_ttl */ - YYSYMBOL_server_serve_expired_ttl_reset = 488, /* server_serve_expired_ttl_reset */ - YYSYMBOL_server_serve_expired_reply_ttl = 489, /* server_serve_expired_reply_ttl */ - YYSYMBOL_server_serve_expired_client_timeout = 490, /* server_serve_expired_client_timeout */ - YYSYMBOL_server_serve_original_ttl = 491, /* server_serve_original_ttl */ - YYSYMBOL_server_fake_dsa = 492, /* server_fake_dsa */ - YYSYMBOL_server_fake_sha1 = 493, /* server_fake_sha1 */ - YYSYMBOL_server_val_log_level = 494, /* server_val_log_level */ - YYSYMBOL_server_val_nsec3_keysize_iterations = 495, /* server_val_nsec3_keysize_iterations */ - YYSYMBOL_server_zonemd_permissive_mode = 496, /* server_zonemd_permissive_mode */ - YYSYMBOL_server_add_holddown = 497, /* server_add_holddown */ - YYSYMBOL_server_del_holddown = 498, /* server_del_holddown */ - YYSYMBOL_server_keep_missing = 499, /* server_keep_missing */ - YYSYMBOL_server_permit_small_holddown = 500, /* server_permit_small_holddown */ - YYSYMBOL_server_key_cache_size = 501, /* server_key_cache_size */ - YYSYMBOL_server_key_cache_slabs = 502, /* server_key_cache_slabs */ - YYSYMBOL_server_neg_cache_size = 503, /* server_neg_cache_size */ - YYSYMBOL_server_local_zone = 504, /* server_local_zone */ - YYSYMBOL_server_local_data = 505, /* server_local_data */ - YYSYMBOL_server_local_data_ptr = 506, /* server_local_data_ptr */ - YYSYMBOL_server_minimal_responses = 507, /* server_minimal_responses */ - YYSYMBOL_server_rrset_roundrobin = 508, /* server_rrset_roundrobin */ - YYSYMBOL_server_unknown_server_time_limit = 509, /* server_unknown_server_time_limit */ - YYSYMBOL_server_max_udp_size = 510, /* server_max_udp_size */ - YYSYMBOL_server_dns64_prefix = 511, /* server_dns64_prefix */ - YYSYMBOL_server_dns64_synthall = 512, /* server_dns64_synthall */ - YYSYMBOL_server_dns64_ignore_aaaa = 513, /* server_dns64_ignore_aaaa */ - YYSYMBOL_server_define_tag = 514, /* server_define_tag */ - YYSYMBOL_server_local_zone_tag = 515, /* server_local_zone_tag */ - YYSYMBOL_server_access_control_tag = 516, /* server_access_control_tag */ - YYSYMBOL_server_access_control_tag_action = 517, /* server_access_control_tag_action */ - YYSYMBOL_server_access_control_tag_data = 518, /* server_access_control_tag_data */ - YYSYMBOL_server_local_zone_override = 519, /* server_local_zone_override */ - YYSYMBOL_server_access_control_view = 520, /* server_access_control_view */ - YYSYMBOL_server_response_ip_tag = 521, /* server_response_ip_tag */ - YYSYMBOL_server_ip_ratelimit = 522, /* server_ip_ratelimit */ - YYSYMBOL_server_ratelimit = 523, /* server_ratelimit */ - YYSYMBOL_server_ip_ratelimit_size = 524, /* server_ip_ratelimit_size */ - YYSYMBOL_server_ratelimit_size = 525, /* server_ratelimit_size */ - YYSYMBOL_server_ip_ratelimit_slabs = 526, /* server_ip_ratelimit_slabs */ - YYSYMBOL_server_ratelimit_slabs = 527, /* server_ratelimit_slabs */ - YYSYMBOL_server_ratelimit_for_domain = 528, /* server_ratelimit_for_domain */ - YYSYMBOL_server_ratelimit_below_domain = 529, /* server_ratelimit_below_domain */ - YYSYMBOL_server_ip_ratelimit_factor = 530, /* server_ip_ratelimit_factor */ - YYSYMBOL_server_ratelimit_factor = 531, /* server_ratelimit_factor */ - YYSYMBOL_server_low_rtt = 532, /* server_low_rtt */ - YYSYMBOL_server_fast_server_num = 533, /* server_fast_server_num */ - YYSYMBOL_server_fast_server_permil = 534, /* server_fast_server_permil */ - YYSYMBOL_server_qname_minimisation = 535, /* server_qname_minimisation */ - YYSYMBOL_server_qname_minimisation_strict = 536, /* server_qname_minimisation_strict */ - YYSYMBOL_server_pad_responses = 537, /* server_pad_responses */ - YYSYMBOL_server_pad_responses_block_size = 538, /* server_pad_responses_block_size */ - YYSYMBOL_server_pad_queries = 539, /* server_pad_queries */ - YYSYMBOL_server_pad_queries_block_size = 540, /* server_pad_queries_block_size */ - YYSYMBOL_server_ipsecmod_enabled = 541, /* server_ipsecmod_enabled */ - YYSYMBOL_server_ipsecmod_ignore_bogus = 542, /* server_ipsecmod_ignore_bogus */ - YYSYMBOL_server_ipsecmod_hook = 543, /* server_ipsecmod_hook */ - YYSYMBOL_server_ipsecmod_max_ttl = 544, /* server_ipsecmod_max_ttl */ - YYSYMBOL_server_ipsecmod_whitelist = 545, /* server_ipsecmod_whitelist */ - YYSYMBOL_server_ipsecmod_strict = 546, /* server_ipsecmod_strict */ - YYSYMBOL_server_edns_client_string = 547, /* server_edns_client_string */ - YYSYMBOL_server_edns_client_string_opcode = 548, /* server_edns_client_string_opcode */ - YYSYMBOL_stub_name = 549, /* stub_name */ - YYSYMBOL_stub_host = 550, /* stub_host */ - YYSYMBOL_stub_addr = 551, /* stub_addr */ - YYSYMBOL_stub_first = 552, /* stub_first */ - YYSYMBOL_stub_no_cache = 553, /* stub_no_cache */ - YYSYMBOL_stub_ssl_upstream = 554, /* stub_ssl_upstream */ - YYSYMBOL_stub_prime = 555, /* stub_prime */ - YYSYMBOL_forward_name = 556, /* forward_name */ - YYSYMBOL_forward_host = 557, /* forward_host */ - YYSYMBOL_forward_addr = 558, /* forward_addr */ - YYSYMBOL_forward_first = 559, /* forward_first */ - YYSYMBOL_forward_no_cache = 560, /* forward_no_cache */ - YYSYMBOL_forward_ssl_upstream = 561, /* forward_ssl_upstream */ - YYSYMBOL_auth_name = 562, /* auth_name */ - YYSYMBOL_auth_zonefile = 563, /* auth_zonefile */ - YYSYMBOL_auth_master = 564, /* auth_master */ - YYSYMBOL_auth_url = 565, /* auth_url */ - YYSYMBOL_auth_allow_notify = 566, /* auth_allow_notify */ - YYSYMBOL_auth_zonemd_reject_absence = 567, /* auth_zonemd_reject_absence */ - YYSYMBOL_auth_for_downstream = 568, /* auth_for_downstream */ - YYSYMBOL_auth_for_upstream = 569, /* auth_for_upstream */ - YYSYMBOL_auth_fallback_enabled = 570, /* auth_fallback_enabled */ - YYSYMBOL_view_name = 571, /* view_name */ - YYSYMBOL_view_local_zone = 572, /* view_local_zone */ - YYSYMBOL_view_response_ip = 573, /* view_response_ip */ - YYSYMBOL_view_response_ip_data = 574, /* view_response_ip_data */ - YYSYMBOL_view_local_data = 575, /* view_local_data */ - YYSYMBOL_view_local_data_ptr = 576, /* view_local_data_ptr */ - YYSYMBOL_view_first = 577, /* view_first */ - YYSYMBOL_rcstart = 578, /* rcstart */ - YYSYMBOL_contents_rc = 579, /* contents_rc */ - YYSYMBOL_content_rc = 580, /* content_rc */ - YYSYMBOL_rc_control_enable = 581, /* rc_control_enable */ - YYSYMBOL_rc_control_port = 582, /* rc_control_port */ - YYSYMBOL_rc_control_interface = 583, /* rc_control_interface */ - YYSYMBOL_rc_control_use_cert = 584, /* rc_control_use_cert */ - YYSYMBOL_rc_server_key_file = 585, /* rc_server_key_file */ - YYSYMBOL_rc_server_cert_file = 586, /* rc_server_cert_file */ - YYSYMBOL_rc_control_key_file = 587, /* rc_control_key_file */ - YYSYMBOL_rc_control_cert_file = 588, /* rc_control_cert_file */ - YYSYMBOL_dtstart = 589, /* dtstart */ - YYSYMBOL_contents_dt = 590, /* contents_dt */ - YYSYMBOL_content_dt = 591, /* content_dt */ - YYSYMBOL_dt_dnstap_enable = 592, /* dt_dnstap_enable */ - YYSYMBOL_dt_dnstap_bidirectional = 593, /* dt_dnstap_bidirectional */ - YYSYMBOL_dt_dnstap_socket_path = 594, /* dt_dnstap_socket_path */ - YYSYMBOL_dt_dnstap_ip = 595, /* dt_dnstap_ip */ - YYSYMBOL_dt_dnstap_tls = 596, /* dt_dnstap_tls */ - YYSYMBOL_dt_dnstap_tls_server_name = 597, /* dt_dnstap_tls_server_name */ - YYSYMBOL_dt_dnstap_tls_cert_bundle = 598, /* dt_dnstap_tls_cert_bundle */ - YYSYMBOL_dt_dnstap_tls_client_key_file = 599, /* dt_dnstap_tls_client_key_file */ - YYSYMBOL_dt_dnstap_tls_client_cert_file = 600, /* dt_dnstap_tls_client_cert_file */ - YYSYMBOL_dt_dnstap_send_identity = 601, /* dt_dnstap_send_identity */ - YYSYMBOL_dt_dnstap_send_version = 602, /* dt_dnstap_send_version */ - YYSYMBOL_dt_dnstap_identity = 603, /* dt_dnstap_identity */ - YYSYMBOL_dt_dnstap_version = 604, /* dt_dnstap_version */ - YYSYMBOL_dt_dnstap_log_resolver_query_messages = 605, /* dt_dnstap_log_resolver_query_messages */ - YYSYMBOL_dt_dnstap_log_resolver_response_messages = 606, /* dt_dnstap_log_resolver_response_messages */ - YYSYMBOL_dt_dnstap_log_client_query_messages = 607, /* dt_dnstap_log_client_query_messages */ - YYSYMBOL_dt_dnstap_log_client_response_messages = 608, /* dt_dnstap_log_client_response_messages */ - YYSYMBOL_dt_dnstap_log_forwarder_query_messages = 609, /* dt_dnstap_log_forwarder_query_messages */ - YYSYMBOL_dt_dnstap_log_forwarder_response_messages = 610, /* dt_dnstap_log_forwarder_response_messages */ - YYSYMBOL_pythonstart = 611, /* pythonstart */ - YYSYMBOL_contents_py = 612, /* contents_py */ - YYSYMBOL_content_py = 613, /* content_py */ - YYSYMBOL_py_script = 614, /* py_script */ - YYSYMBOL_dynlibstart = 615, /* dynlibstart */ - YYSYMBOL_contents_dl = 616, /* contents_dl */ - YYSYMBOL_content_dl = 617, /* content_dl */ - YYSYMBOL_dl_file = 618, /* dl_file */ - YYSYMBOL_server_disable_dnssec_lame_check = 619, /* server_disable_dnssec_lame_check */ - YYSYMBOL_server_log_identity = 620, /* server_log_identity */ - YYSYMBOL_server_response_ip = 621, /* server_response_ip */ - YYSYMBOL_server_response_ip_data = 622, /* server_response_ip_data */ - YYSYMBOL_dnscstart = 623, /* dnscstart */ - YYSYMBOL_contents_dnsc = 624, /* contents_dnsc */ - YYSYMBOL_content_dnsc = 625, /* content_dnsc */ - YYSYMBOL_dnsc_dnscrypt_enable = 626, /* dnsc_dnscrypt_enable */ - YYSYMBOL_dnsc_dnscrypt_port = 627, /* dnsc_dnscrypt_port */ - YYSYMBOL_dnsc_dnscrypt_provider = 628, /* dnsc_dnscrypt_provider */ - YYSYMBOL_dnsc_dnscrypt_provider_cert = 629, /* dnsc_dnscrypt_provider_cert */ - YYSYMBOL_dnsc_dnscrypt_provider_cert_rotated = 630, /* dnsc_dnscrypt_provider_cert_rotated */ - YYSYMBOL_dnsc_dnscrypt_secret_key = 631, /* dnsc_dnscrypt_secret_key */ - YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_size = 632, /* dnsc_dnscrypt_shared_secret_cache_size */ - YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_slabs = 633, /* dnsc_dnscrypt_shared_secret_cache_slabs */ - YYSYMBOL_dnsc_dnscrypt_nonce_cache_size = 634, /* dnsc_dnscrypt_nonce_cache_size */ - YYSYMBOL_dnsc_dnscrypt_nonce_cache_slabs = 635, /* dnsc_dnscrypt_nonce_cache_slabs */ - YYSYMBOL_cachedbstart = 636, /* cachedbstart */ - YYSYMBOL_contents_cachedb = 637, /* contents_cachedb */ - YYSYMBOL_content_cachedb = 638, /* content_cachedb */ - YYSYMBOL_cachedb_backend_name = 639, /* cachedb_backend_name */ - YYSYMBOL_cachedb_secret_seed = 640, /* cachedb_secret_seed */ - YYSYMBOL_redis_server_host = 641, /* redis_server_host */ - YYSYMBOL_redis_server_port = 642, /* redis_server_port */ - YYSYMBOL_redis_timeout = 643, /* redis_timeout */ - YYSYMBOL_redis_expire_records = 644, /* redis_expire_records */ - YYSYMBOL_server_tcp_connection_limit = 645, /* server_tcp_connection_limit */ - YYSYMBOL_ipsetstart = 646, /* ipsetstart */ - YYSYMBOL_contents_ipset = 647, /* contents_ipset */ - YYSYMBOL_content_ipset = 648, /* content_ipset */ - YYSYMBOL_ipset_name_v4 = 649, /* ipset_name_v4 */ - YYSYMBOL_ipset_name_v6 = 650 /* ipset_name_v6 */ -}; -typedef enum yysymbol_kind_t yysymbol_kind_t; + char* str; +} +/* Line 193 of yacc.c. */ +#line 755 "util/configparser.c" + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif +/* Copy the second part of user declarations. */ + + +/* Line 216 of yacc.c. */ +#line 768 "util/configparser.c" #ifdef short # undef short #endif -/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure - and (if available) are included - so that the code can choose integer types of a good width. */ - -#ifndef __PTRDIFF_MAX__ -# include /* INFRINGES ON USER NAME SPACE */ -# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ -# include /* INFRINGES ON USER NAME SPACE */ -# define YY_STDINT_H -# endif -#endif - -/* Narrow types that promote to a signed type and that can represent a - signed or unsigned integer of at least N bits. In tables they can - save space and decrease cache pressure. Promoting to a signed type - helps avoid bugs in integer arithmetic. */ - -#ifdef __INT_LEAST8_MAX__ -typedef __INT_LEAST8_TYPE__ yytype_int8; -#elif defined YY_STDINT_H -typedef int_least8_t yytype_int8; +#ifdef YYTYPE_UINT8 +typedef YYTYPE_UINT8 yytype_uint8; #else -typedef signed char yytype_int8; -#endif - -#ifdef __INT_LEAST16_MAX__ -typedef __INT_LEAST16_TYPE__ yytype_int16; -#elif defined YY_STDINT_H -typedef int_least16_t yytype_int16; -#else -typedef short yytype_int16; -#endif - -#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ -typedef __UINT_LEAST8_TYPE__ yytype_uint8; -#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ - && UINT_LEAST8_MAX <= INT_MAX) -typedef uint_least8_t yytype_uint8; -#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX typedef unsigned char yytype_uint8; -#else -typedef short yytype_uint8; #endif -#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__ -typedef __UINT_LEAST16_TYPE__ yytype_uint16; -#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \ - && UINT_LEAST16_MAX <= INT_MAX) -typedef uint_least16_t yytype_uint16; -#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX -typedef unsigned short yytype_uint16; +#ifdef YYTYPE_INT8 +typedef YYTYPE_INT8 yytype_int8; +#elif (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +typedef signed char yytype_int8; #else -typedef int yytype_uint16; +typedef short int yytype_int8; #endif -#ifndef YYPTRDIFF_T -# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__ -# define YYPTRDIFF_T __PTRDIFF_TYPE__ -# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__ -# elif defined PTRDIFF_MAX -# ifndef ptrdiff_t -# include /* INFRINGES ON USER NAME SPACE */ -# endif -# define YYPTRDIFF_T ptrdiff_t -# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX -# else -# define YYPTRDIFF_T long -# define YYPTRDIFF_MAXIMUM LONG_MAX -# endif +#ifdef YYTYPE_UINT16 +typedef YYTYPE_UINT16 yytype_uint16; +#else +typedef unsigned short int yytype_uint16; +#endif + +#ifdef YYTYPE_INT16 +typedef YYTYPE_INT16 yytype_int16; +#else +typedef short int yytype_int16; #endif #ifndef YYSIZE_T @@ -1531,100 +802,55 @@ typedef int yytype_uint16; # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t -# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ +# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else -# define YYSIZE_T unsigned +# define YYSIZE_T unsigned int # endif #endif -#define YYSIZE_MAXIMUM \ - YY_CAST (YYPTRDIFF_T, \ - (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \ - ? YYPTRDIFF_MAXIMUM \ - : YY_CAST (YYSIZE_T, -1))) - -#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X)) - - -/* Stored state numbers (used for stacks). */ -typedef yytype_int16 yy_state_t; - -/* State numbers in computations. */ -typedef int yy_state_fast_t; +#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) +# define YY_(msgid) dgettext ("bison-runtime", msgid) # endif # endif # ifndef YY_ -# define YY_(Msgid) Msgid -# endif -#endif - - -#ifndef YY_ATTRIBUTE_PURE -# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__) -# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__)) -# else -# define YY_ATTRIBUTE_PURE -# endif -#endif - -#ifndef YY_ATTRIBUTE_UNUSED -# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__) -# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) -# else -# define YY_ATTRIBUTE_UNUSED +# define YY_(msgid) msgid # endif #endif /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ -# define YYUSE(E) ((void) (E)) +# define YYUSE(e) ((void) (e)) #else -# define YYUSE(E) /* empty */ +# define YYUSE(e) /* empty */ #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") +/* Identity function, used to suppress warnings about constant conditions. */ +#ifndef lint +# define YYID(n) (n) #else -# define YY_INITIAL_VALUE(Value) Value +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static int +YYID (int i) +#else +static int +YYID (i) + int i; #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. */ +{ + return i; +} #endif -#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__ -# define YY_IGNORE_USELESS_CAST_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"") -# define YY_IGNORE_USELESS_CAST_END \ - _Pragma ("GCC diagnostic pop") -#endif -#ifndef YY_IGNORE_USELESS_CAST_BEGIN -# define YY_IGNORE_USELESS_CAST_BEGIN -# define YY_IGNORE_USELESS_CAST_END -#endif - - -#define YY_ASSERT(E) ((void) (0 && (E))) - -#if !defined yyoverflow +#if ! defined yyoverflow || YYERROR_VERBOSE /* The parser invokes alloca or malloc; define the necessary symbols. */ @@ -1641,11 +867,11 @@ typedef int yy_state_fast_t; # define alloca _alloca # else # define YYSTACK_ALLOC alloca -# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS +# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ - /* Use EXIT_SUCCESS as a witness for stdlib.h. */ -# ifndef EXIT_SUCCESS -# define EXIT_SUCCESS 0 +# ifndef _STDLIB_H +# define _STDLIB_H 1 # endif # endif # endif @@ -1653,8 +879,8 @@ typedef int yy_state_fast_t; # endif # ifdef YYSTACK_ALLOC - /* Pacify GCC's 'empty if-body' warning. */ -# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (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 @@ -1668,116 +894,111 @@ typedef int yy_state_fast_t; # ifndef YYSTACK_ALLOC_MAXIMUM # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM # endif -# if (defined __cplusplus && ! defined EXIT_SUCCESS \ +# if (defined __cplusplus && ! defined _STDLIB_H \ && ! ((defined YYMALLOC || defined malloc) \ - && (defined YYFREE || defined free))) + && (defined YYFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ -# ifndef EXIT_SUCCESS -# define EXIT_SUCCESS 0 +# ifndef _STDLIB_H +# define _STDLIB_H 1 # endif # endif # ifndef YYMALLOC # define YYMALLOC malloc -# if ! defined malloc && ! defined EXIT_SUCCESS +# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free -# if ! defined free && ! defined EXIT_SUCCESS +# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif # endif -#endif /* !defined yyoverflow */ +#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ + #if (! defined yyoverflow \ && (! defined __cplusplus \ - || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc { - yy_state_t yyss_alloc; - YYSTYPE yyvs_alloc; -}; + yytype_int16 yyss; + YYSTYPE yyvs; + }; /* The size of the maximum gap between one aligned stack and the next. */ -# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1) +# 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) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \ + ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) -# define YYCOPY_NEEDED 1 +/* Copy COUNT objects from FROM to TO. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(To, From, Count) \ + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# else +# define YYCOPY(To, From, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ + while (YYID (0)) +# endif +# endif /* 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 \ - { \ - YYPTRDIFF_T yynewbytes; \ - YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ - Stack = &yyptr->Stack_alloc; \ - yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / YYSIZEOF (*yyptr); \ - } \ - while (0) +# define YYSTACK_RELOCATE(Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack, Stack, yysize); \ + Stack = &yyptr->Stack; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (YYID (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, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src))) -# else -# define YYCOPY(Dst, Src, Count) \ - do \ - { \ - YYPTRDIFF_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 661 +#define YYLAST 663 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 313 +#define YYNTOKENS 314 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 338 +#define YYNNTS 339 /* YYNRULES -- Number of rules. */ -#define YYNRULES 652 -/* YYNSTATES -- Number of states. */ -#define YYNSTATES 969 +#define YYNRULES 654 +/* YYNRULES -- Number of states. */ +#define YYNSTATES 972 -#define YYMAXUTOK 567 +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 568 +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) -/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM - as returned by yylex, with out-of-bounds checking. */ -#define YYTRANSLATE(YYX) \ - (0 <= (YYX) && (YYX) <= YYMAXUTOK \ - ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \ - : YYSYMBOL_YYUNDEF) - -/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM - as returned by yylex. */ -static const yytype_int16 yytranslate[] = +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to 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, @@ -1835,12 +1056,253 @@ static const yytype_int16 yytranslate[] = 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 + 305, 306, 307, 308, 309, 310, 311, 312, 313 }; #if YYDEBUG - /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ -static const yytype_int16 yyrline[] = +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const yytype_uint16 yyprhs[] = +{ + 0, 0, 3, 4, 7, 10, 13, 16, 19, 22, + 25, 28, 31, 34, 37, 40, 43, 46, 48, 50, + 52, 55, 56, 58, 60, 62, 64, 66, 68, 70, + 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, + 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, + 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, + 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, + 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, + 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, + 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, + 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, + 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, + 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, + 272, 274, 276, 278, 280, 282, 284, 286, 288, 290, + 292, 294, 296, 298, 300, 302, 304, 306, 308, 310, + 312, 314, 316, 318, 320, 322, 324, 326, 328, 330, + 332, 334, 336, 338, 340, 342, 344, 346, 348, 350, + 352, 354, 356, 358, 360, 362, 364, 366, 368, 370, + 372, 374, 376, 378, 380, 382, 384, 386, 388, 390, + 392, 394, 396, 398, 400, 402, 404, 406, 408, 410, + 412, 414, 416, 418, 420, 422, 424, 426, 428, 430, + 432, 434, 436, 438, 440, 442, 444, 446, 448, 450, + 452, 454, 456, 458, 460, 462, 464, 466, 468, 470, + 472, 474, 476, 478, 480, 482, 484, 486, 488, 491, + 492, 494, 496, 498, 500, 502, 504, 506, 508, 511, + 512, 514, 516, 518, 520, 522, 524, 526, 529, 530, + 532, 534, 536, 538, 540, 542, 544, 546, 549, 550, + 552, 554, 556, 558, 560, 562, 564, 566, 568, 571, + 574, 577, 580, 583, 585, 588, 589, 591, 593, 595, + 597, 599, 601, 603, 605, 607, 609, 612, 615, 618, + 621, 624, 627, 630, 633, 636, 639, 642, 645, 648, + 651, 654, 657, 660, 663, 666, 669, 672, 675, 678, + 681, 684, 687, 690, 693, 696, 699, 702, 705, 708, + 711, 714, 717, 720, 723, 726, 729, 732, 735, 738, + 741, 744, 747, 750, 753, 756, 759, 762, 765, 768, + 771, 774, 777, 780, 783, 786, 789, 792, 795, 798, + 801, 804, 807, 810, 813, 816, 819, 822, 825, 828, + 831, 834, 837, 840, 843, 846, 849, 852, 855, 858, + 861, 864, 867, 870, 873, 876, 879, 882, 885, 888, + 891, 894, 897, 900, 903, 906, 909, 912, 915, 918, + 921, 924, 927, 930, 933, 936, 939, 942, 945, 948, + 951, 954, 957, 960, 963, 966, 969, 972, 975, 978, + 981, 984, 987, 990, 993, 996, 999, 1002, 1005, 1008, + 1011, 1015, 1018, 1021, 1024, 1027, 1030, 1033, 1036, 1039, + 1042, 1045, 1048, 1051, 1054, 1057, 1060, 1063, 1066, 1069, + 1072, 1075, 1078, 1081, 1084, 1087, 1090, 1093, 1096, 1099, + 1102, 1105, 1109, 1112, 1115, 1118, 1121, 1124, 1127, 1130, + 1133, 1136, 1139, 1143, 1147, 1152, 1157, 1162, 1166, 1170, + 1173, 1176, 1179, 1182, 1185, 1188, 1192, 1196, 1199, 1202, + 1205, 1208, 1211, 1214, 1217, 1220, 1223, 1226, 1229, 1232, + 1235, 1238, 1241, 1244, 1247, 1251, 1254, 1257, 1260, 1263, + 1266, 1269, 1272, 1275, 1278, 1281, 1284, 1287, 1290, 1293, + 1296, 1299, 1302, 1305, 1308, 1311, 1314, 1317, 1320, 1323, + 1327, 1331, 1335, 1338, 1341, 1344, 1346, 1349, 1350, 1352, + 1354, 1356, 1358, 1360, 1362, 1364, 1366, 1369, 1372, 1375, + 1378, 1381, 1384, 1387, 1390, 1392, 1395, 1396, 1398, 1400, + 1402, 1404, 1406, 1408, 1410, 1412, 1414, 1416, 1418, 1420, + 1422, 1424, 1426, 1428, 1430, 1432, 1434, 1437, 1440, 1443, + 1446, 1449, 1452, 1455, 1458, 1461, 1464, 1467, 1470, 1473, + 1476, 1479, 1482, 1485, 1488, 1491, 1493, 1496, 1497, 1499, + 1502, 1504, 1507, 1508, 1510, 1513, 1516, 1519, 1523, 1527, + 1529, 1532, 1533, 1535, 1537, 1539, 1541, 1543, 1545, 1547, + 1549, 1551, 1553, 1556, 1559, 1562, 1565, 1568, 1571, 1574, + 1577, 1580, 1583, 1585, 1588, 1589, 1591, 1593, 1595, 1597, + 1599, 1601, 1604, 1607, 1610, 1613, 1616, 1619, 1623, 1625, + 1628, 1629, 1631, 1633, 1636 +}; + +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const yytype_int16 yyrhs[] = +{ + 315, 0, -1, -1, 315, 316, -1, 318, 319, -1, + 321, 322, -1, 324, 325, -1, 613, 614, -1, 580, + 581, -1, 591, 592, -1, 327, 328, -1, 625, 626, + -1, 638, 639, -1, 648, 649, -1, 330, 331, -1, + 338, 339, -1, 617, 618, -1, 317, -1, 11, -1, + 12, -1, 319, 320, -1, -1, 341, -1, 342, -1, + 348, -1, 361, -1, 367, -1, 368, -1, 371, -1, + 372, -1, 369, -1, 370, -1, 373, -1, 374, -1, + 375, -1, 379, -1, 380, -1, 359, -1, 410, -1, + 411, -1, 412, -1, 413, -1, 414, -1, 440, -1, + 441, -1, 442, -1, 448, -1, 449, -1, 364, -1, + 450, -1, 451, -1, 454, -1, 452, -1, 453, -1, + 457, -1, 458, -1, 459, -1, 473, -1, 425, -1, + 426, -1, 428, -1, 429, -1, 460, -1, 476, -1, + 419, -1, 421, -1, 477, -1, 483, -1, 484, -1, + 485, -1, 365, -1, 439, -1, 503, -1, 504, -1, + 420, -1, 497, -1, 403, -1, 360, -1, 415, -1, + 474, -1, 480, -1, 461, -1, 475, -1, 506, -1, + 507, -1, 366, -1, 343, -1, 402, -1, 465, -1, + 344, -1, 362, -1, 363, -1, 416, -1, 417, -1, + 505, -1, 463, -1, 467, -1, 468, -1, 345, -1, + 508, -1, 443, -1, 472, -1, 404, -1, 424, -1, + 478, -1, 479, -1, 482, -1, 496, -1, 418, -1, + 499, -1, 500, -1, 501, -1, 431, -1, 438, -1, + 469, -1, 470, -1, 432, -1, 462, -1, 487, -1, + 405, -1, 406, -1, 381, -1, 383, -1, 409, -1, + 384, -1, 385, -1, 386, -1, 394, -1, 395, -1, + 396, -1, 397, -1, 398, -1, 399, -1, 400, -1, + 509, -1, 510, -1, 512, -1, 433, -1, 444, -1, + 445, -1, 446, -1, 447, -1, 513, -1, 514, -1, + 515, -1, 455, -1, 464, -1, 434, -1, 524, -1, + 525, -1, 436, -1, 456, -1, 528, -1, 529, -1, + 526, -1, 527, -1, 530, -1, 531, -1, 533, -1, + 532, -1, 349, -1, 350, -1, 351, -1, 352, -1, + 353, -1, 354, -1, 355, -1, 356, -1, 357, -1, + 358, -1, 466, -1, 481, -1, 502, -1, 537, -1, + 435, -1, 516, -1, 517, -1, 621, -1, 518, -1, + 521, -1, 519, -1, 520, -1, 522, -1, 538, -1, + 539, -1, 540, -1, 541, -1, 542, -1, 488, -1, + 489, -1, 490, -1, 491, -1, 492, -1, 493, -1, + 494, -1, 622, -1, 401, -1, 523, -1, 623, -1, + 624, -1, 346, -1, 347, -1, 495, -1, 427, -1, + 422, -1, 423, -1, 543, -1, 545, -1, 544, -1, + 546, -1, 547, -1, 548, -1, 382, -1, 486, -1, + 387, -1, 389, -1, 534, -1, 536, -1, 535, -1, + 388, -1, 647, -1, 408, -1, 471, -1, 511, -1, + 407, -1, 437, -1, 390, -1, 391, -1, 392, -1, + 393, -1, 549, -1, 550, -1, 430, -1, 498, -1, + 376, -1, 377, -1, 378, -1, 46, -1, 322, 323, + -1, -1, 551, -1, 552, -1, 553, -1, 557, -1, + 554, -1, 555, -1, 556, -1, 52, -1, 325, 326, + -1, -1, 558, -1, 559, -1, 560, -1, 561, -1, + 562, -1, 563, -1, 224, -1, 328, 329, -1, -1, + 573, -1, 574, -1, 577, -1, 579, -1, 575, -1, + 576, -1, 578, -1, 273, -1, 331, 332, -1, -1, + 564, -1, 565, -1, 566, -1, 567, -1, 570, -1, + 571, -1, 572, -1, 568, -1, 569, -1, 302, 10, + -1, 303, 10, -1, 304, 10, -1, 305, 10, -1, + 306, 10, -1, 301, -1, 339, 340, -1, -1, 564, + -1, 565, -1, 333, -1, 566, -1, 567, -1, 568, + -1, 334, -1, 335, -1, 336, -1, 337, -1, 14, + 10, -1, 13, 10, -1, 84, 10, -1, 87, 10, + -1, 107, 10, -1, 240, 10, -1, 241, 10, -1, + 15, 10, -1, 202, 10, -1, 203, 10, -1, 204, + 10, -1, 205, 10, -1, 206, 10, -1, 207, 10, + -1, 208, 10, -1, 209, 10, -1, 210, 10, -1, + 211, 10, -1, 17, 10, -1, 75, 10, -1, 16, + 10, -1, 88, 10, -1, 89, 10, -1, 39, 10, + -1, 68, 10, -1, 83, 10, -1, 19, 10, -1, + 20, 10, -1, 22, 10, -1, 23, 10, -1, 18, + 10, -1, 21, 10, -1, 24, 10, -1, 25, 10, + -1, 26, 10, -1, 106, 10, -1, 105, 10, -1, + 137, 10, -1, 27, 10, -1, 28, 10, -1, 135, + 10, -1, 271, 10, -1, 136, 10, -1, 138, 10, + -1, 139, 10, -1, 140, 10, -1, 144, 10, -1, + 285, 10, -1, 279, 10, -1, 294, 10, -1, 295, + 10, -1, 300, 10, -1, 296, 10, -1, 145, 10, + -1, 146, 10, -1, 147, 10, -1, 148, 10, -1, + 149, 10, -1, 150, 10, -1, 151, 10, -1, 239, + 10, -1, 85, 10, -1, 74, 10, -1, 112, 10, + -1, 132, 10, -1, 133, 10, -1, 292, 10, -1, + 289, 10, -1, 134, 10, -1, 29, 10, -1, 30, + 10, -1, 31, 10, -1, 32, 10, -1, 33, 10, + -1, 76, 10, -1, 90, 10, -1, 91, 10, -1, + 120, 10, -1, 62, 10, -1, 72, 10, -1, 63, + 10, -1, 237, 10, -1, 242, 10, -1, 113, 10, + -1, 56, 10, -1, 57, 10, -1, 236, 10, -1, + 58, 10, -1, 59, 10, -1, 311, 10, -1, 124, + 10, -1, 128, 10, -1, 129, 10, -1, 189, 10, + -1, 217, 10, -1, 190, 10, -1, 293, 10, -1, + 125, 10, -1, 69, 10, -1, 34, 10, -1, 35, + 10, -1, 36, 10, -1, 109, 10, -1, 156, 10, + -1, 157, 10, -1, 158, 10, -1, 159, 10, -1, + 37, 10, -1, 38, 10, -1, 40, 10, -1, 41, + 10, -1, 43, 10, -1, 44, 10, -1, 42, 10, + -1, 160, 10, -1, 161, 10, -1, 49, 10, -1, + 50, 10, -1, 51, 10, -1, 60, 10, -1, 79, + 10, -1, 130, 10, -1, 93, 10, -1, 188, 10, + -1, 86, 10, -1, 212, 10, -1, 94, 10, -1, + 95, 10, -1, 126, 10, -1, 127, 10, -1, 290, + 10, -1, 111, 10, -1, 55, 10, -1, 77, 10, + -1, 80, 10, 10, -1, 61, 10, -1, 64, 10, + -1, 116, 10, -1, 117, 10, -1, 78, 10, -1, + 213, 10, -1, 118, 10, -1, 65, 10, -1, 66, + 10, -1, 67, 10, -1, 238, 10, -1, 131, 10, + -1, 227, 10, -1, 228, 10, -1, 229, 10, -1, + 230, 10, -1, 231, 10, -1, 232, 10, -1, 233, + 10, -1, 234, 10, -1, 119, 10, -1, 73, 10, + -1, 312, 10, -1, 122, 10, -1, 123, 10, -1, + 121, 10, -1, 214, 10, -1, 70, 10, -1, 71, + 10, -1, 92, 10, -1, 81, 10, 10, -1, 82, + 10, -1, 108, 10, -1, 153, 10, -1, 154, 10, + -1, 291, 10, -1, 155, 10, -1, 162, 10, -1, + 163, 10, -1, 164, 10, -1, 218, 10, -1, 219, + 10, 10, -1, 220, 10, 10, -1, 222, 10, 10, + 10, -1, 223, 10, 10, 10, -1, 221, 10, 10, + 10, -1, 225, 10, 10, -1, 185, 10, 10, -1, + 192, 10, -1, 195, 10, -1, 194, 10, -1, 197, + 10, -1, 193, 10, -1, 196, 10, -1, 198, 10, + 10, -1, 199, 10, 10, -1, 200, 10, -1, 201, + 10, -1, 280, 10, -1, 283, 10, -1, 282, 10, + -1, 215, 10, -1, 216, 10, -1, 254, 10, -1, + 255, 10, -1, 256, 10, -1, 257, 10, -1, 258, + 10, -1, 260, 10, -1, 259, 10, -1, 261, 10, + -1, 262, 10, -1, 263, 10, -1, 309, 10, 10, + -1, 310, 10, -1, 45, 10, -1, 47, 10, -1, + 48, 10, -1, 152, 10, -1, 288, 10, -1, 142, + 10, -1, 110, 10, -1, 45, 10, -1, 53, 10, + -1, 54, 10, -1, 141, 10, -1, 287, 10, -1, + 143, 10, -1, 45, 10, -1, 274, 10, -1, 275, + 10, -1, 276, 10, -1, 284, 10, -1, 313, 10, + -1, 277, 10, -1, 272, 10, -1, 278, 10, -1, + 45, 10, -1, 81, 10, 10, -1, 186, 10, 10, + -1, 187, 10, 10, -1, 82, 10, -1, 108, 10, + -1, 226, 10, -1, 96, -1, 581, 582, -1, -1, + 583, -1, 585, -1, 584, -1, 587, -1, 588, -1, + 589, -1, 590, -1, 586, -1, 97, 10, -1, 99, + 10, -1, 98, 10, -1, 104, 10, -1, 100, 10, + -1, 101, 10, -1, 102, 10, -1, 103, 10, -1, + 165, -1, 592, 593, -1, -1, 594, -1, 596, -1, + 595, -1, 597, -1, 598, -1, 599, -1, 600, -1, + 601, -1, 602, -1, 603, -1, 604, -1, 605, -1, + 606, -1, 607, -1, 608, -1, 609, -1, 610, -1, + 611, -1, 612, -1, 166, 10, -1, 176, 10, -1, + 167, 10, -1, 168, 10, -1, 169, 10, -1, 170, + 10, -1, 171, 10, -1, 172, 10, -1, 173, 10, + -1, 174, 10, -1, 175, 10, -1, 177, 10, -1, + 178, 10, -1, 179, 10, -1, 180, 10, -1, 181, + 10, -1, 182, 10, -1, 183, 10, -1, 184, 10, + -1, 114, -1, 614, 615, -1, -1, 616, -1, 115, + 10, -1, 307, -1, 618, 619, -1, -1, 620, -1, + 308, 10, -1, 191, 10, -1, 235, 10, -1, 186, + 10, 10, -1, 187, 10, 10, -1, 243, -1, 626, + 627, -1, -1, 628, -1, 629, -1, 630, -1, 633, + -1, 631, -1, 632, -1, 634, -1, 635, -1, 636, + -1, 637, -1, 244, 10, -1, 245, 10, -1, 246, + 10, -1, 248, 10, -1, 249, 10, -1, 247, 10, + -1, 250, 10, -1, 251, 10, -1, 252, 10, -1, + 253, 10, -1, 264, -1, 639, 640, -1, -1, 641, + -1, 642, -1, 643, -1, 644, -1, 645, -1, 646, + -1, 265, 10, -1, 266, 10, -1, 267, 10, -1, + 268, 10, -1, 269, 10, -1, 270, 10, -1, 286, + 10, 10, -1, 297, -1, 649, 650, -1, -1, 651, + -1, 652, -1, 298, 10, -1, 299, 10, -1 +}; + +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ +static const yytype_uint16 yyrline[] = { 0, 188, 188, 188, 189, 189, 190, 190, 191, 191, 191, 192, 192, 193, 193, 194, 194, 195, 197, 203, @@ -1865,69 +1327,62 @@ static const yytype_int16 yyrline[] = 289, 289, 289, 290, 290, 291, 292, 292, 293, 293, 294, 294, 295, 295, 296, 296, 296, 297, 297, 297, 298, 298, 298, 299, 299, 300, 300, 301, 301, 302, - 302, 303, 303, 304, 304, 305, 308, 320, 321, 322, - 322, 322, 322, 322, 323, 323, 325, 337, 338, 339, - 339, 339, 339, 340, 340, 342, 356, 357, 358, 358, - 358, 358, 359, 359, 359, 361, 379, 380, 381, 381, - 381, 381, 382, 382, 382, 383, 383, 386, 405, 422, - 430, 440, 448, 465, 466, 467, 467, 467, 467, 467, - 468, 468, 468, 469, 469, 471, 480, 489, 500, 509, - 518, 527, 538, 547, 559, 573, 588, 599, 616, 633, - 650, 667, 682, 697, 710, 725, 734, 743, 752, 761, - 770, 779, 788, 797, 806, 815, 824, 833, 842, 851, - 864, 875, 886, 895, 908, 917, 926, 935, 942, 949, - 958, 965, 974, 982, 989, 996, 1004, 1013, 1021, 1037, - 1045, 1053, 1061, 1069, 1077, 1086, 1095, 1109, 1118, 1127, - 1136, 1145, 1154, 1163, 1170, 1177, 1203, 1211, 1218, 1225, - 1232, 1239, 1247, 1255, 1263, 1270, 1281, 1292, 1299, 1308, - 1317, 1326, 1333, 1340, 1356, 1364, 1372, 1382, 1392, 1402, - 1416, 1424, 1437, 1448, 1456, 1469, 1478, 1487, 1496, 1505, - 1515, 1525, 1533, 1546, 1555, 1563, 1572, 1580, 1593, 1602, - 1612, 1619, 1629, 1639, 1649, 1659, 1669, 1679, 1689, 1699, - 1706, 1713, 1720, 1729, 1738, 1747, 1756, 1763, 1773, 1793, - 1800, 1818, 1831, 1844, 1853, 1862, 1871, 1880, 1890, 1900, - 1911, 1920, 1929, 1938, 1947, 1956, 1965, 1974, 1987, 2000, - 2009, 2016, 2025, 2034, 2043, 2052, 2061, 2069, 2082, 2090, - 2135, 2142, 2157, 2167, 2177, 2184, 2191, 2198, 2207, 2215, - 2229, 2250, 2271, 2283, 2295, 2307, 2316, 2337, 2347, 2356, - 2364, 2372, 2385, 2398, 2413, 2428, 2437, 2446, 2452, 2461, - 2470, 2480, 2490, 2500, 2509, 2519, 2528, 2541, 2554, 2566, - 2580, 2592, 2606, 2615, 2627, 2637, 2644, 2651, 2660, 2669, - 2679, 2689, 2699, 2706, 2713, 2722, 2731, 2741, 2751, 2758, - 2765, 2772, 2780, 2790, 2800, 2810, 2820, 2830, 2876, 2886, - 2894, 2902, 2917, 2926, 2931, 2932, 2933, 2933, 2933, 2934, - 2934, 2934, 2935, 2935, 2937, 2947, 2956, 2963, 2970, 2977, - 2984, 2991, 2998, 3003, 3004, 3005, 3005, 3005, 3006, 3006, - 3006, 3007, 3008, 3008, 3009, 3009, 3010, 3010, 3011, 3012, - 3013, 3014, 3015, 3016, 3018, 3027, 3037, 3044, 3051, 3060, - 3067, 3074, 3081, 3088, 3097, 3106, 3113, 3120, 3130, 3140, - 3150, 3160, 3170, 3180, 3185, 3186, 3187, 3189, 3195, 3200, - 3201, 3202, 3204, 3210, 3220, 3227, 3236, 3244, 3249, 3250, - 3252, 3252, 3252, 3253, 3253, 3254, 3255, 3256, 3257, 3258, - 3260, 3270, 3279, 3286, 3295, 3302, 3311, 3319, 3332, 3340, - 3353, 3358, 3359, 3360, 3360, 3361, 3361, 3361, 3362, 3364, - 3376, 3388, 3400, 3415, 3428, 3441, 3452, 3457, 3458, 3459, - 3459, 3461, 3476 + 302, 303, 303, 304, 304, 305, 305, 308, 320, 321, + 322, 322, 322, 322, 322, 323, 323, 325, 337, 338, + 339, 339, 339, 339, 340, 340, 342, 356, 357, 358, + 358, 358, 358, 359, 359, 359, 361, 379, 380, 381, + 381, 381, 381, 382, 382, 382, 383, 383, 386, 405, + 422, 430, 440, 448, 465, 466, 467, 467, 467, 467, + 467, 468, 468, 468, 469, 469, 471, 480, 489, 500, + 509, 518, 527, 538, 547, 559, 573, 588, 599, 616, + 633, 650, 667, 682, 697, 710, 725, 734, 743, 752, + 761, 770, 779, 788, 797, 806, 815, 824, 833, 842, + 851, 864, 875, 886, 897, 906, 919, 928, 937, 946, + 953, 960, 969, 976, 985, 993, 1000, 1007, 1015, 1024, + 1032, 1048, 1056, 1064, 1072, 1080, 1088, 1097, 1106, 1120, + 1129, 1138, 1147, 1156, 1165, 1174, 1181, 1188, 1214, 1222, + 1229, 1236, 1243, 1250, 1258, 1266, 1274, 1281, 1292, 1303, + 1310, 1319, 1328, 1337, 1344, 1351, 1367, 1375, 1383, 1393, + 1403, 1413, 1427, 1435, 1448, 1459, 1467, 1480, 1489, 1498, + 1507, 1516, 1526, 1536, 1544, 1557, 1566, 1574, 1583, 1591, + 1604, 1613, 1623, 1630, 1640, 1650, 1660, 1670, 1680, 1690, + 1700, 1710, 1717, 1724, 1731, 1740, 1749, 1758, 1767, 1774, + 1784, 1804, 1811, 1829, 1842, 1855, 1864, 1873, 1882, 1891, + 1901, 1911, 1922, 1931, 1940, 1949, 1958, 1967, 1976, 1985, + 1998, 2011, 2020, 2027, 2036, 2045, 2054, 2063, 2072, 2080, + 2093, 2101, 2146, 2153, 2168, 2178, 2188, 2195, 2202, 2209, + 2218, 2226, 2240, 2261, 2282, 2294, 2306, 2318, 2327, 2348, + 2358, 2367, 2375, 2383, 2396, 2409, 2424, 2439, 2448, 2457, + 2463, 2472, 2481, 2491, 2501, 2511, 2520, 2530, 2539, 2552, + 2565, 2577, 2591, 2603, 2617, 2626, 2638, 2648, 2655, 2662, + 2671, 2680, 2690, 2700, 2710, 2717, 2724, 2733, 2742, 2752, + 2762, 2769, 2776, 2783, 2791, 2801, 2811, 2821, 2831, 2841, + 2887, 2897, 2905, 2913, 2928, 2937, 2942, 2943, 2944, 2944, + 2944, 2945, 2945, 2945, 2946, 2946, 2948, 2958, 2967, 2974, + 2981, 2988, 2995, 3002, 3009, 3014, 3015, 3016, 3016, 3016, + 3017, 3017, 3017, 3018, 3019, 3019, 3020, 3020, 3021, 3021, + 3022, 3023, 3024, 3025, 3026, 3027, 3029, 3038, 3048, 3055, + 3062, 3071, 3078, 3085, 3092, 3099, 3108, 3117, 3124, 3131, + 3141, 3151, 3161, 3171, 3181, 3191, 3196, 3197, 3198, 3200, + 3206, 3211, 3212, 3213, 3215, 3221, 3231, 3238, 3247, 3255, + 3260, 3261, 3263, 3263, 3263, 3264, 3264, 3265, 3266, 3267, + 3268, 3269, 3271, 3281, 3290, 3297, 3306, 3313, 3322, 3330, + 3343, 3351, 3364, 3369, 3370, 3371, 3371, 3372, 3372, 3372, + 3373, 3375, 3387, 3399, 3411, 3426, 3439, 3452, 3463, 3468, + 3469, 3470, 3470, 3472, 3487 }; #endif -/** Accessing symbol of state STATE. */ -#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State]) - -#if YYDEBUG || 0 -/* The user-facing name of the symbol whose (internal) number is - YYSYMBOL. No bounds checking. */ -static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED; - +#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { - "\"end of file\"", "error", "\"invalid token\"", "SPACE", "LETTER", - "NEWLINE", "COMMENT", "COLON", "ANY", "ZONESTR", "STRING_ARG", - "VAR_FORCE_TOPLEVEL", "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", + "$end", "error", "$undefined", "SPACE", "LETTER", "NEWLINE", "COMMENT", + "COLON", "ANY", "ZONESTR", "STRING_ARG", "VAR_FORCE_TOPLEVEL", + "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", @@ -1968,8 +1423,9 @@ static const char *const yytname[] = "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_TCP_AUTH_QUERY_TIMEOUT", "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_HTTPS_PORT", "VAR_HTTP_ENDPOINT", "VAR_HTTP_MAX_STREAMS", "VAR_HTTP_QUERY_BUFFER_SIZE", "VAR_HTTP_RESPONSE_BUFFER_SIZE", "VAR_HTTP_NODELAY", @@ -2062,60 +1518,61 @@ static const char *const yytname[] = "server_do_udp", "server_do_tcp", "server_prefer_ip4", "server_prefer_ip6", "server_tcp_mss", "server_outgoing_tcp_mss", "server_tcp_idle_timeout", "server_max_reuse_tcp_queries", - "server_tcp_reuse_timeout", "server_tcp_keepalive", - "server_tcp_keepalive_timeout", "server_tcp_upstream", - "server_udp_upstream_without_downstream", "server_ssl_upstream", - "server_ssl_service_key", "server_ssl_service_pem", "server_ssl_port", - "server_tls_cert_bundle", "server_tls_win_cert", - "server_tls_additional_port", "server_tls_ciphers", - "server_tls_ciphersuites", "server_tls_session_ticket_keys", - "server_tls_use_sni", "server_https_port", "server_http_endpoint", - "server_http_max_streams", "server_http_query_buffer_size", - "server_http_response_buffer_size", "server_http_nodelay", - "server_http_notls_downstream", "server_use_systemd", - "server_do_daemonize", "server_use_syslog", "server_log_time_ascii", - "server_log_queries", "server_log_replies", "server_log_tag_queryreply", - "server_log_servfail", "server_log_local_actions", "server_chroot", - "server_username", "server_directory", "server_logfile", - "server_pidfile", "server_root_hints", "server_dlv_anchor_file", - "server_dlv_anchor", "server_auto_trust_anchor_file", - "server_trust_anchor_file", "server_trusted_keys_file", - "server_trust_anchor", "server_trust_anchor_signaling", - "server_root_key_sentinel", "server_domain_insecure", - "server_hide_identity", "server_hide_version", "server_hide_trustanchor", - "server_identity", "server_version", "server_nsid", "server_so_rcvbuf", - "server_so_sndbuf", "server_so_reuseport", "server_ip_transparent", - "server_ip_freebind", "server_ip_dscp", "server_stream_wait_size", - "server_edns_buffer_size", "server_msg_buffer_size", - "server_msg_cache_size", "server_msg_cache_slabs", - "server_num_queries_per_thread", "server_jostle_timeout", - "server_delay_close", "server_udp_connect", "server_unblock_lan_zones", - "server_insecure_lan_zones", "server_rrset_cache_size", - "server_rrset_cache_slabs", "server_infra_host_ttl", - "server_infra_lame_ttl", "server_infra_cache_numhosts", - "server_infra_cache_lame_size", "server_infra_cache_slabs", - "server_infra_cache_min_rtt", "server_infra_keep_probing", - "server_target_fetch_policy", "server_harden_short_bufsize", - "server_harden_large_queries", "server_harden_glue", - "server_harden_dnssec_stripped", "server_harden_below_nxdomain", - "server_harden_referral_path", "server_harden_algo_downgrade", - "server_use_caps_for_id", "server_caps_whitelist", - "server_private_address", "server_private_domain", "server_prefetch", - "server_prefetch_key", "server_deny_any", - "server_unwanted_reply_threshold", "server_do_not_query_address", - "server_do_not_query_localhost", "server_access_control", - "server_module_conf", "server_val_override_date", - "server_val_sig_skew_min", "server_val_sig_skew_max", - "server_cache_max_ttl", "server_cache_max_negative_ttl", - "server_cache_min_ttl", "server_bogus_ttl", - "server_val_clean_additional", "server_val_permissive_mode", - "server_aggressive_nsec", "server_ignore_cd_flag", - "server_serve_expired", "server_serve_expired_ttl", - "server_serve_expired_ttl_reset", "server_serve_expired_reply_ttl", - "server_serve_expired_client_timeout", "server_serve_original_ttl", - "server_fake_dsa", "server_fake_sha1", "server_val_log_level", - "server_val_nsec3_keysize_iterations", "server_zonemd_permissive_mode", - "server_add_holddown", "server_del_holddown", "server_keep_missing", + "server_tcp_reuse_timeout", "server_tcp_auth_query_timeout", + "server_tcp_keepalive", "server_tcp_keepalive_timeout", + "server_tcp_upstream", "server_udp_upstream_without_downstream", + "server_ssl_upstream", "server_ssl_service_key", + "server_ssl_service_pem", "server_ssl_port", "server_tls_cert_bundle", + "server_tls_win_cert", "server_tls_additional_port", + "server_tls_ciphers", "server_tls_ciphersuites", + "server_tls_session_ticket_keys", "server_tls_use_sni", + "server_https_port", "server_http_endpoint", "server_http_max_streams", + "server_http_query_buffer_size", "server_http_response_buffer_size", + "server_http_nodelay", "server_http_notls_downstream", + "server_use_systemd", "server_do_daemonize", "server_use_syslog", + "server_log_time_ascii", "server_log_queries", "server_log_replies", + "server_log_tag_queryreply", "server_log_servfail", + "server_log_local_actions", "server_chroot", "server_username", + "server_directory", "server_logfile", "server_pidfile", + "server_root_hints", "server_dlv_anchor_file", "server_dlv_anchor", + "server_auto_trust_anchor_file", "server_trust_anchor_file", + "server_trusted_keys_file", "server_trust_anchor", + "server_trust_anchor_signaling", "server_root_key_sentinel", + "server_domain_insecure", "server_hide_identity", "server_hide_version", + "server_hide_trustanchor", "server_identity", "server_version", + "server_nsid", "server_so_rcvbuf", "server_so_sndbuf", + "server_so_reuseport", "server_ip_transparent", "server_ip_freebind", + "server_ip_dscp", "server_stream_wait_size", "server_edns_buffer_size", + "server_msg_buffer_size", "server_msg_cache_size", + "server_msg_cache_slabs", "server_num_queries_per_thread", + "server_jostle_timeout", "server_delay_close", "server_udp_connect", + "server_unblock_lan_zones", "server_insecure_lan_zones", + "server_rrset_cache_size", "server_rrset_cache_slabs", + "server_infra_host_ttl", "server_infra_lame_ttl", + "server_infra_cache_numhosts", "server_infra_cache_lame_size", + "server_infra_cache_slabs", "server_infra_cache_min_rtt", + "server_infra_keep_probing", "server_target_fetch_policy", + "server_harden_short_bufsize", "server_harden_large_queries", + "server_harden_glue", "server_harden_dnssec_stripped", + "server_harden_below_nxdomain", "server_harden_referral_path", + "server_harden_algo_downgrade", "server_use_caps_for_id", + "server_caps_whitelist", "server_private_address", + "server_private_domain", "server_prefetch", "server_prefetch_key", + "server_deny_any", "server_unwanted_reply_threshold", + "server_do_not_query_address", "server_do_not_query_localhost", + "server_access_control", "server_module_conf", + "server_val_override_date", "server_val_sig_skew_min", + "server_val_sig_skew_max", "server_cache_max_ttl", + "server_cache_max_negative_ttl", "server_cache_min_ttl", + "server_bogus_ttl", "server_val_clean_additional", + "server_val_permissive_mode", "server_aggressive_nsec", + "server_ignore_cd_flag", "server_serve_expired", + "server_serve_expired_ttl", "server_serve_expired_ttl_reset", + "server_serve_expired_reply_ttl", "server_serve_expired_client_timeout", + "server_serve_original_ttl", "server_fake_dsa", "server_fake_sha1", + "server_val_log_level", "server_val_nsec3_keysize_iterations", + "server_zonemd_permissive_mode", "server_add_holddown", + "server_del_holddown", "server_keep_missing", "server_permit_small_holddown", "server_key_cache_size", "server_key_cache_slabs", "server_neg_cache_size", "server_local_zone", "server_local_data", "server_local_data_ptr", "server_minimal_responses", @@ -2174,20 +1631,14 @@ static const char *const yytname[] = "cachedb_backend_name", "cachedb_secret_seed", "redis_server_host", "redis_server_port", "redis_timeout", "redis_expire_records", "server_tcp_connection_limit", "ipsetstart", "contents_ipset", - "content_ipset", "ipset_name_v4", "ipset_name_v6", YY_NULLPTR + "content_ipset", "ipset_name_v4", "ipset_name_v6", 0 }; - -static const char * -yysymbol_name (yysymbol_kind_t yysymbol) -{ - return yytname[yysymbol]; -} #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_int16 yytoknum[] = +# ifdef YYPRINT +/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to + token YYLEX-NUM. */ +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, @@ -2220,586 +1671,43 @@ static const yytype_int16 yytoknum[] = 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, - 565, 566, 567 + 565, 566, 567, 568 }; -#endif +# endif -#define YYPACT_NINF (-298) - -#define yypact_value_is_default(Yyn) \ - ((Yyn) == YYPACT_NINF) - -#define YYTABLE_NINF (-1) - -#define yytable_value_is_error(Yyn) \ - 0 - - /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ -static const yytype_int16 yypact[] = +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint16 yyr1[] = { - -298, 0, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, 294, -43, -38, -42, -44, -28, -29, -147, - -109, -297, -190, -188, -289, 3, 4, 27, 28, 31, - 32, 33, 34, 35, 37, 38, 39, 40, 41, 53, - 54, 55, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 87, 89, 90, 91, - 93, 95, 96, 97, 99, 100, 101, 102, 103, 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, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 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, 214, 215, 216, 218, 224, 225, 226, - 227, 228, 230, 231, 233, 239, 240, 241, 242, 243, - 244, 246, 247, 248, 249, 250, 251, 252, 254, 255, - 256, 257, 259, 260, 261, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 287, 288, 289, 291, 292, 293, 295, - 329, 330, 331, 332, 336, 337, 338, 380, 381, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, 382, 383, 384, 385, 386, 387, - 388, -298, -298, -298, -298, -298, -298, -298, -298, 394, - 398, 399, 424, 425, 426, -298, -298, -298, -298, -298, - -298, -298, 435, 448, 449, 450, 451, 452, 453, -298, - -298, -298, -298, -298, -298, -298, -298, 454, 455, 456, - 457, 458, 459, 460, 461, 462, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, 463, 464, 465, 466, - 467, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, 507, 509, 526, 527, 528, 529, 530, 531, - -298, -298, -298, -298, -298, -298, -298, -298, -298, 532, - 533, 534, 535, 536, 547, 548, 549, 550, 551, 552, - 553, 555, 556, 557, 558, 559, 560, 561, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, 564, -298, - -298, 567, -298, -298, 570, 571, 580, 581, 582, 584, - 585, 586, 587, 588, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, 589, 590, 591, 596, 597, - 598, -298, -298, -298, -298, -298, -298, -298, 599, 600, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, 601, 602, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, 603, 604, 605, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, 606, 607, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, 608, 609, 610, 611, 612, - 613, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, 614, -298, -298, -298, -298, -298, -298, - -298, -298, -298, 615, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, 616, -298, -298, 617, 618, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, 619, 620, 621, - -298, -298, -298, -298, -298, -298, -298, -298, -298 -}; - - /* 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_int16 yydefact[] = -{ - 2, 0, 1, 18, 19, 236, 246, 533, 593, 552, - 255, 607, 630, 265, 646, 282, 598, 3, 17, 21, - 238, 248, 257, 267, 284, 535, 554, 595, 600, 609, - 632, 648, 4, 5, 6, 10, 14, 15, 8, 9, - 7, 16, 11, 12, 13, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, - 22, 23, 86, 89, 98, 200, 201, 24, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 37, 77, - 25, 90, 91, 48, 70, 85, 26, 27, 30, 31, - 28, 29, 32, 33, 34, 234, 235, 35, 36, 121, - 212, 122, 124, 125, 126, 214, 219, 215, 226, 227, - 228, 229, 127, 128, 129, 130, 131, 132, 133, 196, - 87, 76, 102, 119, 120, 224, 221, 123, 38, 39, - 40, 41, 42, 78, 92, 93, 108, 64, 74, 65, - 204, 205, 103, 58, 59, 203, 60, 61, 232, 112, - 116, 137, 147, 174, 150, 225, 113, 71, 43, 44, - 45, 100, 138, 139, 140, 141, 46, 47, 49, 50, - 52, 53, 51, 145, 151, 54, 55, 56, 62, 81, - 117, 95, 146, 88, 170, 96, 97, 114, 115, 222, - 101, 57, 79, 82, 63, 66, 104, 105, 80, 171, - 106, 67, 68, 69, 213, 118, 188, 189, 190, 191, - 192, 193, 194, 202, 107, 75, 233, 109, 110, 111, - 172, 72, 73, 94, 83, 84, 99, 134, 135, 223, - 136, 142, 143, 144, 175, 176, 178, 180, 181, 179, - 182, 197, 148, 149, 154, 155, 152, 153, 156, 157, - 159, 158, 216, 218, 217, 173, 183, 184, 185, 186, - 187, 206, 208, 207, 209, 210, 211, 230, 231, 177, - 195, 198, 199, 220, 0, 0, 0, 0, 0, 0, - 0, 237, 239, 240, 241, 243, 244, 245, 242, 0, - 0, 0, 0, 0, 0, 247, 249, 250, 251, 252, - 253, 254, 0, 0, 0, 0, 0, 0, 0, 256, - 258, 259, 262, 263, 260, 264, 261, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 266, 268, 269, 270, - 271, 275, 276, 272, 273, 274, 0, 0, 0, 0, - 0, 287, 291, 292, 293, 294, 283, 285, 286, 288, - 289, 290, 0, 0, 0, 0, 0, 0, 0, 0, - 534, 536, 538, 537, 543, 539, 540, 541, 542, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 553, 555, - 557, 556, 558, 559, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 0, 594, - 596, 0, 599, 601, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 608, 610, 611, 612, 614, 615, - 613, 616, 617, 618, 619, 0, 0, 0, 0, 0, - 0, 631, 633, 634, 635, 636, 637, 638, 0, 0, - 647, 649, 650, 296, 295, 302, 315, 313, 325, 321, - 322, 326, 323, 324, 327, 328, 329, 332, 333, 363, - 364, 365, 366, 367, 393, 394, 395, 401, 402, 318, - 403, 404, 407, 405, 406, 410, 411, 412, 426, 378, - 379, 381, 382, 413, 429, 372, 374, 430, 436, 437, - 438, 319, 392, 456, 457, 373, 450, 356, 314, 368, - 427, 433, 414, 0, 0, 460, 320, 297, 355, 418, - 298, 316, 317, 369, 370, 458, 416, 420, 421, 331, - 330, 299, 461, 396, 425, 357, 377, 431, 432, 435, - 449, 371, 454, 452, 453, 384, 391, 422, 423, 385, - 386, 415, 440, 358, 359, 362, 334, 336, 337, 338, - 339, 340, 347, 348, 349, 350, 351, 352, 353, 462, - 463, 465, 397, 398, 399, 400, 408, 409, 466, 467, - 468, 0, 0, 0, 417, 387, 389, 603, 477, 481, - 479, 478, 482, 480, 0, 0, 485, 486, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 419, 434, - 455, 490, 491, 388, 469, 0, 0, 0, 0, 0, - 0, 441, 442, 443, 444, 445, 446, 447, 448, 604, - 380, 375, 439, 354, 300, 301, 376, 492, 493, 494, - 495, 496, 498, 497, 499, 500, 501, 335, 342, 487, - 489, 488, 341, 0, 361, 424, 464, 360, 390, 343, - 344, 346, 345, 0, 503, 383, 451, 504, 505, 506, - 510, 509, 507, 508, 511, 512, 513, 514, 516, 515, - 526, 0, 530, 531, 0, 0, 532, 517, 524, 518, - 519, 520, 523, 525, 521, 522, 277, 278, 279, 280, - 281, 544, 546, 545, 548, 549, 550, 551, 547, 574, - 576, 577, 578, 579, 580, 581, 582, 583, 584, 575, - 585, 586, 587, 588, 589, 590, 591, 592, 597, 602, - 620, 621, 622, 625, 623, 624, 626, 627, 628, 629, - 639, 640, 641, 642, 643, 644, 651, 652, 428, 459, - 476, 605, 606, 483, 484, 470, 471, 0, 0, 0, - 475, 645, 502, 527, 528, 529, 474, 472, 473 -}; - - /* YYPGOTO[NTERM-NUM]. */ -static const yytype_int16 yypgoto[] = -{ - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, 267, - 595, 622, 623, 624, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298 -}; - - /* YYDEFGOTO[NTERM-NUM]. */ -static const yytype_int16 yydefgoto[] = -{ - -1, 1, 17, 18, 19, 32, 259, 20, 33, 481, - 21, 34, 495, 22, 35, 509, 23, 36, 526, 541, - 542, 543, 544, 545, 24, 37, 546, 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, 482, 483, 484, 485, - 486, 487, 488, 496, 497, 498, 499, 500, 501, 527, - 528, 529, 530, 531, 532, 533, 534, 535, 510, 511, - 512, 513, 514, 515, 516, 25, 38, 560, 561, 562, - 563, 564, 565, 566, 567, 568, 26, 39, 588, 589, - 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, - 600, 601, 602, 603, 604, 605, 606, 607, 27, 40, - 609, 610, 28, 41, 612, 613, 469, 470, 471, 472, - 29, 42, 624, 625, 626, 627, 628, 629, 630, 631, - 632, 633, 634, 30, 43, 641, 642, 643, 644, 645, - 646, 647, 473, 31, 44, 650, 651, 652 -}; - - /* 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_int16 yytable[] = -{ - 2, 517, 474, 502, 475, 476, 608, 489, 648, 649, - 611, 3, 4, 653, 654, 490, 491, 517, 569, 570, - 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, - 581, 582, 583, 584, 585, 586, 587, 655, 656, 503, - 504, 657, 658, 659, 660, 661, 5, 662, 663, 664, - 665, 666, 6, 614, 615, 616, 617, 618, 619, 620, - 621, 622, 623, 667, 668, 669, 505, 477, 552, 553, - 554, 555, 556, 557, 558, 559, 635, 636, 637, 638, - 639, 640, 670, 671, 672, 673, 674, 675, 676, 677, - 678, 679, 680, 681, 682, 683, 7, 684, 478, 685, - 686, 687, 492, 688, 493, 689, 690, 691, 479, 692, - 693, 694, 695, 696, 8, 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, 506, 507, 725, 726, 727, 728, 729, - 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, - 740, 741, 742, 743, 9, 744, 745, 746, 747, 748, - 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, - 759, 760, 761, 508, 762, 763, 764, 765, 766, 767, - 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, - 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, - 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, - 798, 799, 800, 10, 801, 802, 803, 518, 804, 519, - 520, 521, 522, 523, 805, 806, 807, 808, 809, 524, - 810, 811, 11, 812, 480, 519, 520, 521, 494, 813, - 814, 815, 816, 817, 818, 524, 819, 820, 821, 822, - 823, 824, 825, 12, 826, 827, 828, 829, 525, 830, - 831, 832, 13, 536, 537, 538, 539, 540, 833, 834, - 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, - 845, 846, 847, 848, 849, 850, 14, 851, 852, 853, - 15, 854, 855, 856, 547, 857, 16, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 858, - 859, 860, 861, 77, 78, 79, 862, 863, 864, 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, - 865, 866, 867, 868, 869, 870, 871, 872, 873, 121, - 122, 123, 124, 125, 874, 126, 127, 128, 875, 876, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 877, 878, 879, 153, 154, 155, - 156, 157, 158, 159, 160, 880, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 881, 882, - 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, - 893, 894, 895, 896, 897, 898, 899, 900, 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, 901, 212, 902, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 903, 904, 905, 906, - 907, 908, 909, 910, 911, 912, 913, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 914, 915, 916, - 917, 918, 919, 920, 239, 921, 922, 923, 924, 925, - 926, 927, 240, 241, 928, 242, 243, 929, 244, 245, - 930, 931, 246, 247, 248, 249, 250, 251, 252, 253, - 932, 933, 934, 254, 935, 936, 937, 938, 939, 940, - 941, 942, 255, 256, 257, 258, 943, 944, 945, 946, - 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, - 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, - 967, 968, 548, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 549, - 550, 551 -}; - -static const yytype_int16 yycheck[] = -{ - 0, 45, 45, 45, 47, 48, 115, 45, 297, 298, - 307, 11, 12, 10, 10, 53, 54, 45, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 10, 10, 81, - 82, 10, 10, 10, 10, 10, 46, 10, 10, 10, - 10, 10, 52, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 10, 10, 10, 108, 110, 97, 98, - 99, 100, 101, 102, 103, 104, 264, 265, 266, 267, - 268, 269, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 96, 10, 141, 10, - 10, 10, 140, 10, 142, 10, 10, 10, 151, 10, - 10, 10, 10, 10, 114, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 185, 186, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 164, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 225, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 223, 10, 10, 10, 271, 10, 273, - 274, 275, 276, 277, 10, 10, 10, 10, 10, 283, - 10, 10, 242, 10, 287, 273, 274, 275, 286, 10, - 10, 10, 10, 10, 10, 283, 10, 10, 10, 10, - 10, 10, 10, 263, 10, 10, 10, 10, 312, 10, - 10, 10, 272, 301, 302, 303, 304, 305, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 296, 10, 10, 10, - 300, 10, 10, 10, 37, 10, 306, 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, 10, - 10, 10, 10, 49, 50, 51, 10, 10, 10, 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, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 105, - 106, 107, 108, 109, 10, 111, 112, 113, 10, 10, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 10, 10, 10, 143, 144, 145, - 146, 147, 148, 149, 150, 10, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 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, 10, 224, 10, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 10, 10, 10, - 10, 10, 10, 10, 270, 10, 10, 10, 10, 10, - 10, 10, 278, 279, 10, 281, 282, 10, 284, 285, - 10, 10, 288, 289, 290, 291, 292, 293, 294, 295, - 10, 10, 10, 299, 10, 10, 10, 10, 10, 10, - 10, 10, 308, 309, 310, 311, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 37, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, - 37, 37 -}; - - /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ -static const yytype_int16 yystos[] = -{ - 0, 314, 0, 11, 12, 46, 52, 96, 114, 164, - 223, 242, 263, 272, 296, 300, 306, 315, 316, 317, - 320, 323, 326, 329, 337, 578, 589, 611, 615, 623, - 636, 646, 318, 321, 324, 327, 330, 338, 579, 590, - 612, 616, 624, 637, 647, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 49, 50, 51, - 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, 105, 106, 107, 108, 109, 111, 112, 113, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 143, 144, 145, 146, 147, 148, 149, - 150, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 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, 224, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 270, - 278, 279, 281, 282, 284, 285, 288, 289, 290, 291, - 292, 293, 294, 295, 299, 308, 309, 310, 311, 319, - 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, 541, 542, 543, 544, 545, 546, 547, 548, 619, - 620, 621, 622, 645, 45, 47, 48, 110, 141, 151, - 287, 322, 549, 550, 551, 552, 553, 554, 555, 45, - 53, 54, 140, 142, 286, 325, 556, 557, 558, 559, - 560, 561, 45, 81, 82, 108, 185, 186, 225, 328, - 571, 572, 573, 574, 575, 576, 577, 45, 271, 273, - 274, 275, 276, 277, 283, 312, 331, 562, 563, 564, - 565, 566, 567, 568, 569, 570, 301, 302, 303, 304, - 305, 332, 333, 334, 335, 336, 339, 562, 563, 564, - 565, 566, 97, 98, 99, 100, 101, 102, 103, 104, - 580, 581, 582, 583, 584, 585, 586, 587, 588, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 591, 592, - 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, - 603, 604, 605, 606, 607, 608, 609, 610, 115, 613, - 614, 307, 617, 618, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 625, 626, 627, 628, 629, 630, - 631, 632, 633, 634, 635, 264, 265, 266, 267, 268, - 269, 638, 639, 640, 641, 642, 643, 644, 297, 298, - 648, 649, 650, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10 -}; - - /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_int16 yyr1[] = -{ - 0, 313, 314, 314, 315, 315, 315, 315, 315, 315, - 315, 315, 315, 315, 315, 315, 315, 315, 316, 317, - 318, 318, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 319, 319, 319, 319, 319, 319, 320, 321, 321, 322, - 322, 322, 322, 322, 322, 322, 323, 324, 324, 325, - 325, 325, 325, 325, 325, 326, 327, 327, 328, 328, - 328, 328, 328, 328, 328, 329, 330, 330, 331, 331, - 331, 331, 331, 331, 331, 331, 331, 332, 333, 334, - 335, 336, 337, 338, 338, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 340, 341, 342, 343, 344, + 0, 314, 315, 315, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 317, 318, + 319, 319, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 321, 322, 322, + 323, 323, 323, 323, 323, 323, 323, 324, 325, 325, + 326, 326, 326, 326, 326, 326, 327, 328, 328, 329, + 329, 329, 329, 329, 329, 329, 330, 331, 331, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 333, 334, + 335, 336, 337, 338, 339, 339, 340, 340, 340, 340, + 340, 340, 340, 340, 340, 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, @@ -2823,23 +1731,23 @@ static const yytype_int16 yyr1[] = 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, - 575, 576, 577, 578, 579, 579, 580, 580, 580, 580, - 580, 580, 580, 580, 581, 582, 583, 584, 585, 586, - 587, 588, 589, 590, 590, 591, 591, 591, 591, 591, - 591, 591, 591, 591, 591, 591, 591, 591, 591, 591, - 591, 591, 591, 591, 592, 593, 594, 595, 596, 597, + 575, 576, 577, 578, 579, 580, 581, 581, 582, 582, + 582, 582, 582, 582, 582, 582, 583, 584, 585, 586, + 587, 588, 589, 590, 591, 592, 592, 593, 593, 593, + 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, + 593, 593, 593, 593, 593, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, - 608, 609, 610, 611, 612, 612, 613, 614, 615, 616, - 616, 617, 618, 619, 620, 621, 622, 623, 624, 624, - 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, - 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, - 636, 637, 637, 638, 638, 638, 638, 638, 638, 639, - 640, 641, 642, 643, 644, 645, 646, 647, 647, 648, - 648, 649, 650 + 608, 609, 610, 611, 612, 613, 614, 614, 615, 616, + 617, 618, 618, 619, 620, 621, 622, 623, 624, 625, + 626, 626, 627, 627, 627, 627, 627, 627, 627, 627, + 627, 627, 628, 629, 630, 631, 632, 633, 634, 635, + 636, 637, 638, 639, 639, 640, 640, 640, 640, 640, + 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, + 649, 650, 650, 651, 652 }; - /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ -static const yytype_int8 yyr2[] = +/* YYR2[YYN] -- Number of symbols composing 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, 2, 1, 1, 1, @@ -2864,13 +1772,13 @@ static const yytype_int8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 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, 1, 2, 2, 2, - 2, 2, 1, 2, 0, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, + 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, @@ -2883,66 +1791,660 @@ static const yytype_int8 yyr2[] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 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, 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, 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, 1, 2, 2, 2, 2, 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, 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, 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, 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, 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, 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, 2, 2, 2, 2, 2, 3, 1, 2, + 0, 1, 1, 2, 2 }; +/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state + STATE-NUM when YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ +static const yytype_uint16 yydefact[] = +{ + 2, 0, 1, 18, 19, 237, 247, 535, 595, 554, + 256, 609, 632, 266, 648, 283, 600, 3, 17, 21, + 239, 249, 258, 268, 285, 537, 556, 597, 602, 611, + 634, 650, 4, 5, 6, 10, 14, 15, 8, 9, + 7, 16, 11, 12, 13, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 20, 22, 23, 86, 89, 98, 200, 201, 24, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 37, + 77, 25, 90, 91, 48, 70, 85, 26, 27, 30, + 31, 28, 29, 32, 33, 34, 234, 235, 236, 35, + 36, 121, 212, 122, 124, 125, 126, 214, 219, 215, + 226, 227, 228, 229, 127, 128, 129, 130, 131, 132, + 133, 196, 87, 76, 102, 119, 120, 224, 221, 123, + 38, 39, 40, 41, 42, 78, 92, 93, 108, 64, + 74, 65, 204, 205, 103, 58, 59, 203, 60, 61, + 232, 112, 116, 137, 147, 174, 150, 225, 113, 71, + 43, 44, 45, 100, 138, 139, 140, 141, 46, 47, + 49, 50, 52, 53, 51, 145, 151, 54, 55, 56, + 62, 81, 117, 95, 146, 88, 170, 96, 97, 114, + 115, 222, 101, 57, 79, 82, 63, 66, 104, 105, + 80, 171, 106, 67, 68, 69, 213, 118, 188, 189, + 190, 191, 192, 193, 194, 202, 107, 75, 233, 109, + 110, 111, 172, 72, 73, 94, 83, 84, 99, 134, + 135, 223, 136, 142, 143, 144, 175, 176, 178, 180, + 181, 179, 182, 197, 148, 149, 154, 155, 152, 153, + 156, 157, 159, 158, 216, 218, 217, 173, 183, 184, + 185, 186, 187, 206, 208, 207, 209, 210, 211, 230, + 231, 177, 195, 198, 199, 220, 0, 0, 0, 0, + 0, 0, 0, 238, 240, 241, 242, 244, 245, 246, + 243, 0, 0, 0, 0, 0, 0, 248, 250, 251, + 252, 253, 254, 255, 0, 0, 0, 0, 0, 0, + 0, 257, 259, 260, 263, 264, 261, 265, 262, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 267, 269, + 270, 271, 272, 276, 277, 273, 274, 275, 0, 0, + 0, 0, 0, 288, 292, 293, 294, 295, 284, 286, + 287, 289, 290, 291, 0, 0, 0, 0, 0, 0, + 0, 0, 536, 538, 540, 539, 545, 541, 542, 543, + 544, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 555, 557, 559, 558, 560, 561, 562, 563, 564, 565, + 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, + 0, 596, 598, 0, 601, 603, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 610, 612, 613, 614, + 616, 617, 615, 618, 619, 620, 621, 0, 0, 0, + 0, 0, 0, 633, 635, 636, 637, 638, 639, 640, + 0, 0, 649, 651, 652, 297, 296, 303, 316, 314, + 326, 322, 323, 327, 324, 325, 328, 329, 330, 334, + 335, 365, 366, 367, 368, 369, 395, 396, 397, 403, + 404, 319, 405, 406, 409, 407, 408, 412, 413, 414, + 428, 380, 381, 383, 384, 415, 431, 374, 376, 432, + 438, 439, 440, 320, 394, 458, 459, 375, 452, 358, + 315, 370, 429, 435, 416, 0, 0, 462, 321, 298, + 357, 420, 299, 317, 318, 371, 372, 460, 418, 422, + 423, 332, 331, 300, 463, 398, 427, 359, 379, 433, + 434, 437, 451, 373, 456, 454, 455, 386, 393, 424, + 425, 387, 388, 417, 442, 360, 361, 364, 336, 338, + 333, 339, 340, 341, 342, 349, 350, 351, 352, 353, + 354, 355, 464, 465, 467, 399, 400, 401, 402, 410, + 411, 468, 469, 470, 0, 0, 0, 419, 389, 391, + 605, 479, 483, 481, 480, 484, 482, 0, 0, 487, + 488, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 421, 436, 457, 492, 493, 390, 471, 0, 0, + 0, 0, 0, 0, 443, 444, 445, 446, 447, 448, + 449, 450, 606, 382, 377, 441, 356, 301, 302, 378, + 494, 495, 496, 497, 498, 500, 499, 501, 502, 503, + 337, 344, 489, 491, 490, 343, 0, 363, 426, 466, + 362, 392, 345, 346, 348, 347, 0, 505, 385, 453, + 506, 507, 508, 512, 511, 509, 510, 513, 514, 515, + 516, 518, 517, 528, 0, 532, 533, 0, 0, 534, + 519, 526, 520, 521, 522, 525, 527, 523, 524, 278, + 279, 280, 281, 282, 546, 548, 547, 550, 551, 552, + 553, 549, 576, 578, 579, 580, 581, 582, 583, 584, + 585, 586, 577, 587, 588, 589, 590, 591, 592, 593, + 594, 599, 604, 622, 623, 624, 627, 625, 626, 628, + 629, 630, 631, 641, 642, 643, 644, 645, 646, 653, + 654, 430, 461, 478, 607, 608, 485, 486, 472, 473, + 0, 0, 0, 477, 647, 504, 529, 530, 531, 476, + 474, 475 +}; -enum { YYENOMEM = -2 }; +/* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int16 yydefgoto[] = +{ + -1, 1, 17, 18, 19, 32, 260, 20, 33, 483, + 21, 34, 497, 22, 35, 511, 23, 36, 528, 543, + 544, 545, 546, 547, 24, 37, 548, 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, 484, 485, 486, + 487, 488, 489, 490, 498, 499, 500, 501, 502, 503, + 529, 530, 531, 532, 533, 534, 535, 536, 537, 512, + 513, 514, 515, 516, 517, 518, 25, 38, 562, 563, + 564, 565, 566, 567, 568, 569, 570, 26, 39, 590, + 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, + 601, 602, 603, 604, 605, 606, 607, 608, 609, 27, + 40, 611, 612, 28, 41, 614, 615, 471, 472, 473, + 474, 29, 42, 626, 627, 628, 629, 630, 631, 632, + 633, 634, 635, 636, 30, 43, 643, 644, 645, 646, + 647, 648, 649, 475, 31, 44, 652, 653, 654 +}; -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +#define YYPACT_NINF -299 +static const yytype_int16 yypact[] = +{ + -299, 0, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, 295, -43, -38, -42, -44, -28, -29, -148, + -109, -298, -191, -189, -290, 3, 4, 27, 28, 31, + 32, 33, 34, 35, 37, 38, 39, 40, 41, 53, + 54, 55, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 87, 88, 90, 91, + 92, 94, 96, 97, 98, 100, 101, 102, 103, 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, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 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, 215, 216, 217, 219, 225, 226, + 227, 228, 229, 231, 232, 234, 240, 241, 242, 243, + 244, 245, 247, 248, 249, 250, 251, 252, 253, 255, + 256, 257, 258, 260, 261, 262, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 288, 289, 290, 292, 293, 294, + 296, 330, 331, 332, 333, 337, 338, 339, 381, 382, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, 383, 384, 385, 386, + 387, 388, 389, -299, -299, -299, -299, -299, -299, -299, + -299, 395, 399, 400, 426, 427, 428, -299, -299, -299, + -299, -299, -299, -299, 437, 450, 451, 452, 453, 454, + 455, -299, -299, -299, -299, -299, -299, -299, -299, 456, + 457, 458, 459, 460, 461, 462, 463, 464, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, 465, 466, + 467, 468, 469, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, 509, 511, 528, 529, 530, 531, + 532, 533, -299, -299, -299, -299, -299, -299, -299, -299, + -299, 534, 535, 536, 537, 538, 549, 550, 551, 552, + 553, 554, 555, 557, 558, 559, 560, 561, 562, 563, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + 566, -299, -299, 569, -299, -299, 572, 573, 582, 583, + 584, 586, 587, 588, 589, 590, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, 591, 592, 593, + 598, 599, 600, -299, -299, -299, -299, -299, -299, -299, + 601, 602, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, 603, 604, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, 605, 606, 607, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, 608, 609, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, 610, 611, + 612, 613, 614, 615, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, 616, -299, -299, -299, + -299, -299, -299, -299, -299, -299, 617, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, 618, -299, -299, 619, 620, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + 621, 622, 623, -299, -299, -299, -299, -299, -299, -299, + -299, -299 +}; -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrorlab +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int16 yypgoto[] = +{ + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + 268, 597, 624, 625, 626, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299 +}; +/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule which + number is the opposite. If zero, do what YYDEFACT says. + If YYTABLE_NINF, syntax error. */ +#define YYTABLE_NINF -1 +static const yytype_uint16 yytable[] = +{ + 2, 519, 476, 504, 477, 478, 610, 491, 650, 651, + 613, 3, 4, 655, 656, 492, 493, 519, 571, 572, + 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, + 583, 584, 585, 586, 587, 588, 589, 657, 658, 505, + 506, 659, 660, 661, 662, 663, 5, 664, 665, 666, + 667, 668, 6, 616, 617, 618, 619, 620, 621, 622, + 623, 624, 625, 669, 670, 671, 507, 479, 554, 555, + 556, 557, 558, 559, 560, 561, 637, 638, 639, 640, + 641, 642, 672, 673, 674, 675, 676, 677, 678, 679, + 680, 681, 682, 683, 684, 685, 7, 686, 687, 480, + 688, 689, 690, 494, 691, 495, 692, 693, 694, 481, + 695, 696, 697, 698, 8, 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, 508, 509, 728, 729, 730, 731, + 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, + 742, 743, 744, 745, 746, 9, 747, 748, 749, 750, + 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, + 761, 762, 763, 764, 510, 765, 766, 767, 768, 769, + 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, + 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, + 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, + 800, 801, 802, 803, 10, 804, 805, 806, 520, 807, + 521, 522, 523, 524, 525, 808, 809, 810, 811, 812, + 526, 813, 814, 11, 815, 482, 521, 522, 523, 496, + 816, 817, 818, 819, 820, 821, 526, 822, 823, 824, + 825, 826, 827, 828, 12, 829, 830, 831, 832, 527, + 833, 834, 835, 13, 538, 539, 540, 541, 542, 836, + 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, + 847, 848, 849, 850, 851, 852, 853, 14, 854, 855, + 856, 15, 857, 858, 859, 549, 860, 16, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 861, 862, 863, 864, 77, 78, 79, 865, 866, 867, + 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, 868, 869, 870, 871, 872, 873, 874, 875, 876, + 121, 122, 123, 124, 125, 877, 126, 127, 128, 878, + 879, 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, 880, 881, 882, 154, + 155, 156, 157, 158, 159, 160, 161, 883, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, + 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, + 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, 904, + 213, 905, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 906, 907, + 908, 909, 910, 911, 912, 913, 914, 915, 916, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 917, + 918, 919, 920, 921, 922, 923, 240, 924, 925, 926, + 927, 928, 929, 930, 241, 242, 931, 243, 244, 932, + 245, 246, 933, 934, 247, 248, 249, 250, 251, 252, + 253, 254, 935, 936, 937, 255, 938, 939, 940, 941, + 942, 943, 944, 945, 256, 257, 258, 259, 946, 947, + 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, + 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, + 968, 969, 970, 971, 550, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 551, 552, 553 +}; + +static const yytype_int16 yycheck[] = +{ + 0, 45, 45, 45, 47, 48, 115, 45, 298, 299, + 308, 11, 12, 10, 10, 53, 54, 45, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 10, 10, 81, + 82, 10, 10, 10, 10, 10, 46, 10, 10, 10, + 10, 10, 52, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 10, 10, 10, 108, 110, 97, 98, + 99, 100, 101, 102, 103, 104, 265, 266, 267, 268, + 269, 270, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 96, 10, 10, 142, + 10, 10, 10, 141, 10, 143, 10, 10, 10, 152, + 10, 10, 10, 10, 114, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 186, 187, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 165, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 226, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 224, 10, 10, 10, 272, 10, + 274, 275, 276, 277, 278, 10, 10, 10, 10, 10, + 284, 10, 10, 243, 10, 288, 274, 275, 276, 287, + 10, 10, 10, 10, 10, 10, 284, 10, 10, 10, + 10, 10, 10, 10, 264, 10, 10, 10, 10, 313, + 10, 10, 10, 273, 302, 303, 304, 305, 306, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 297, 10, 10, + 10, 301, 10, 10, 10, 37, 10, 307, 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, + 10, 10, 10, 10, 49, 50, 51, 10, 10, 10, + 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, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 105, 106, 107, 108, 109, 10, 111, 112, 113, 10, + 10, 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, 10, 10, 10, 144, + 145, 146, 147, 148, 149, 150, 151, 10, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 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, 10, + 225, 10, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 10, + 10, 10, 10, 10, 10, 10, 271, 10, 10, 10, + 10, 10, 10, 10, 279, 280, 10, 282, 283, 10, + 285, 286, 10, 10, 289, 290, 291, 292, 293, 294, + 295, 296, 10, 10, 10, 300, 10, 10, 10, 10, + 10, 10, 10, 10, 309, 310, 311, 312, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 37, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 37, 37, 37 +}; + +/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_uint16 yystos[] = +{ + 0, 315, 0, 11, 12, 46, 52, 96, 114, 165, + 224, 243, 264, 273, 297, 301, 307, 316, 317, 318, + 321, 324, 327, 330, 338, 580, 591, 613, 617, 625, + 638, 648, 319, 322, 325, 328, 331, 339, 581, 592, + 614, 618, 626, 639, 649, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 49, 50, 51, + 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, 105, 106, 107, 108, 109, 111, 112, 113, 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, 144, 145, 146, 147, 148, 149, + 150, 151, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 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, 225, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 271, 279, 280, 282, 283, 285, 286, 289, 290, 291, + 292, 293, 294, 295, 296, 300, 309, 310, 311, 312, + 320, 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, 541, 542, 543, 544, 545, 546, 547, 548, 549, + 550, 621, 622, 623, 624, 647, 45, 47, 48, 110, + 142, 152, 288, 323, 551, 552, 553, 554, 555, 556, + 557, 45, 53, 54, 141, 143, 287, 326, 558, 559, + 560, 561, 562, 563, 45, 81, 82, 108, 186, 187, + 226, 329, 573, 574, 575, 576, 577, 578, 579, 45, + 272, 274, 275, 276, 277, 278, 284, 313, 332, 564, + 565, 566, 567, 568, 569, 570, 571, 572, 302, 303, + 304, 305, 306, 333, 334, 335, 336, 337, 340, 564, + 565, 566, 567, 568, 97, 98, 99, 100, 101, 102, + 103, 104, 582, 583, 584, 585, 586, 587, 588, 589, + 590, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, + 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, + 115, 615, 616, 308, 619, 620, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 627, 628, 629, 630, + 631, 632, 633, 634, 635, 636, 637, 265, 266, 267, + 268, 269, 270, 640, 641, 642, 643, 644, 645, 646, + 298, 299, 650, 651, 652, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10 +}; + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + + +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. */ + +#define YYFAIL goto yyerrlab #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 && yylen == 1) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + yytoken = YYTRANSLATE (yychar); \ + YYPOPSTACK (1); \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (YYID (0)) -/* Backward compatibility with an undocumented macro. - Use YYerror or YYUNDEF. */ -#define YYERRCODE YYUNDEF +#define YYTERROR 1 +#define YYERRCODE 256 + + +/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. + If N is 0, then set CURRENT to the empty location which ends + the previous symbol: RHS[0] (always defined). */ + +#define YYRHSLOC(Rhs, K) ((Rhs)[K]) +#ifndef YYLLOC_DEFAULT +# define YYLLOC_DEFAULT(Current, Rhs, N) \ + do \ + if (YYID (N)) \ + { \ + (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ + (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ + (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ + (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ + } \ + else \ + { \ + (Current).first_line = (Current).last_line = \ + YYRHSLOC (Rhs, 0).last_line; \ + (Current).first_column = (Current).last_column = \ + YYRHSLOC (Rhs, 0).last_column; \ + } \ + while (YYID (0)) +#endif + + +/* YY_LOCATION_PRINT -- Print the location on the stream. + This macro was not mandated originally: define only if we know + we won't break user code: when these are the locations we know. */ + +#ifndef YY_LOCATION_PRINT +# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL +# define YY_LOCATION_PRINT(File, Loc) \ + fprintf (File, "%d.%d-%d.%d", \ + (Loc).first_line, (Loc).first_column, \ + (Loc).last_line, (Loc).last_column) +# else +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +# endif +#endif + + +/* YYLEX -- calling `yylex' with the right arguments. */ + +#ifdef YYLEX_PARAM +# define YYLEX yylex (YYLEX_PARAM) +#else +# define YYLEX yylex () +#endif /* Enable debugging if requested. */ #if YYDEBUG @@ -2952,65 +2454,80 @@ enum { YYENOMEM = -2 }; # define YYFPRINTF fprintf # endif -# define YYDPRINTF(Args) \ -do { \ - if (yydebug) \ - YYFPRINTF Args; \ -} while (0) +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (YYID (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 (YYID (0)) -# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \ -do { \ - if (yydebug) \ - { \ - YYFPRINTF (stderr, "%s ", Title); \ - yy_symbol_print (stderr, \ - Kind, Value); \ - YYFPRINTF (stderr, "\n"); \ - } \ -} while (0) - - -/*-----------------------------------. -| Print this symbol's value on YYO. | -`-----------------------------------*/ +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static void -yy_symbol_value_print (FILE *yyo, - yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep) +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_value_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif { - FILE *yyoutput = yyo; - YYUSE (yyoutput); if (!yyvaluep) return; # ifdef YYPRINT - if (yykind < YYNTOKENS) - YYPRINT (yyo, yytoknum[yykind], *yyvaluep); + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# else + YYUSE (yyoutput); # endif - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YYUSE (yykind); - YY_IGNORE_MAYBE_UNINITIALIZED_END + switch (yytype) + { + default: + break; + } } -/*---------------------------. -| Print this symbol on YYO. | -`---------------------------*/ +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static void -yy_symbol_print (FILE *yyo, - yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep) +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +#else +static void +yy_symbol_print (yyoutput, yytype, yyvaluep) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; +#endif { - YYFPRINTF (yyo, "%s %s (", - yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind)); + if (yytype < YYNTOKENS) + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); + else + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); - yy_symbol_value_print (yyo, yykind, yyvaluep); - YYFPRINTF (yyo, ")"); + yy_symbol_value_print (yyoutput, yytype, yyvaluep); + YYFPRINTF (yyoutput, ")"); } /*------------------------------------------------------------------. @@ -3018,68 +2535,80 @@ yy_symbol_print (FILE *yyo, | TOP (included). | `------------------------------------------------------------------*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static void -yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop) +yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) +#else +static void +yy_stack_print (bottom, top) + yytype_int16 *bottom; + yytype_int16 *top; +#endif { YYFPRINTF (stderr, "Stack now"); - for (; yybottom <= yytop; yybottom++) - { - int yybot = *yybottom; - YYFPRINTF (stderr, " %d", yybot); - } + for (; bottom <= top; ++bottom) + YYFPRINTF (stderr, " %d", *bottom); YYFPRINTF (stderr, "\n"); } -# define YY_STACK_PRINT(Bottom, Top) \ -do { \ - if (yydebug) \ - yy_stack_print ((Bottom), (Top)); \ -} while (0) +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (YYID (0)) /*------------------------------------------------. | Report that the YYRULE is going to be reduced. | `------------------------------------------------*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static void -yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, - int yyrule) +yy_reduce_print (YYSTYPE *yyvsp, int yyrule) +#else +static void +yy_reduce_print (yyvsp, yyrule) + YYSTYPE *yyvsp; + int yyrule; +#endif { - int yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; - YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n", - yyrule - 1, yylno); + unsigned long int yylno = yyrline[yyrule]; + 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, - YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]), - &yyvsp[(yyi + 1) - (yynrhs)]); - YYFPRINTF (stderr, "\n"); + fprintf (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], + &(yyvsp[(yyi + 1) - (yynrhs)]) + ); + fprintf (stderr, "\n"); } } -# define YY_REDUCE_PRINT(Rule) \ -do { \ - if (yydebug) \ - yy_reduce_print (yyssp, yyvsp, Rule); \ -} while (0) +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyvsp, Rule); \ +} while (YYID (0)) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ int yydebug; #else /* !YYDEBUG */ -# define YYDPRINTF(Args) ((void) 0) -# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) +# 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 +#ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif @@ -3094,230 +2623,478 @@ int yydebug; # define YYMAXDEPTH 10000 #endif + +#if YYERROR_VERBOSE +# ifndef yystrlen +# if defined __GLIBC__ && defined _STRING_H +# define yystrlen strlen +# else +/* Return the length of YYSTR. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static YYSIZE_T +yystrlen (const char *yystr) +#else +static YYSIZE_T +yystrlen (yystr) + const char *yystr; +#endif +{ + 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. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static char * +yystpcpy (char *yydest, const char *yysrc) +#else +static char * +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +#endif +{ + 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; + /* Fall through. */ + 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 yystpcpy (yyres, yystr) - yyres; +} +# endif + +/* Copy into YYRESULT an error message about the unexpected token + YYCHAR while in state YYSTATE. Return the number of bytes copied, + including the terminating null byte. If YYRESULT is null, do not + copy anything; just return the number of bytes that would be + copied. As a special case, return 0 if an ordinary "syntax error" + message will do. Return YYSIZE_MAXIMUM if overflow occurs during + size calculation. */ +static YYSIZE_T +yysyntax_error (char *yyresult, int yystate, int yychar) +{ + int yyn = yypact[yystate]; + + if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) + return 0; + else + { + int yytype = YYTRANSLATE (yychar); + YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); + YYSIZE_T yysize = yysize0; + YYSIZE_T yysize1; + int yysize_overflow = 0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + int yyx; + +# if 0 + /* This is so xgettext sees the translatable formats that are + constructed on the fly. */ + YY_("syntax error, unexpected %s"); + YY_("syntax error, unexpected %s, expecting %s"); + YY_("syntax error, unexpected %s, expecting %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); +# endif + char *yyfmt; + char const *yyf; + static char const yyunexpected[] = "syntax error, unexpected %s"; + static char const yyexpecting[] = ", expecting %s"; + static char const yyor[] = " or %s"; + char yyformat[sizeof yyunexpected + + sizeof yyexpecting - 1 + + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) + * (sizeof yyor - 1))]; + char const *yyprefix = yyexpecting; + + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. */ + 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 yycount = 1; + + yyarg[0] = yytname[yytype]; + yyfmt = yystpcpy (yyformat, yyunexpected); + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + yyformat[sizeof yyunexpected - 1] = '\0'; + break; + } + yyarg[yycount++] = yytname[yyx]; + yysize1 = yysize + yytnamerr (0, yytname[yyx]); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + yyfmt = yystpcpy (yyfmt, yyprefix); + yyprefix = yyor; + } + + yyf = YY_(yyformat); + yysize1 = yysize + yystrlen (yyf); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + + if (yysize_overflow) + return YYSIZE_MAXIMUM; + + if (yyresult) + { + /* 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 = yyresult; + int yyi = 0; + while ((*yyp = *yyf) != '\0') + { + if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyf += 2; + } + else + { + yyp++; + yyf++; + } + } + } + return yysize; + } +} +#endif /* YYERROR_VERBOSE */ + /*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static void -yydestruct (const char *yymsg, - yysymbol_kind_t yykind, YYSTYPE *yyvaluep) +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) +#else +static void +yydestruct (yymsg, yytype, yyvaluep) + const char *yymsg; + int yytype; + YYSTYPE *yyvaluep; +#endif { YYUSE (yyvaluep); + if (!yymsg) yymsg = "Deleting"; - YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp); + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YYUSE (yykind); - YY_IGNORE_MAYBE_UNINITIALIZED_END + switch (yytype) + { + + default: + break; + } } + + +/* Prevent warnings from -Wmissing-prototypes. */ + +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int yyparse (void *YYPARSE_PARAM); +#else +int yyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus +int yyparse (void); +#else +int yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ -/* The lookahead symbol. */ + +/* The look-ahead symbol. */ int yychar; -/* The semantic value of the lookahead symbol. */ +/* The semantic value of the look-ahead symbol. */ YYSTYPE yylval; + /* Number of syntax errors so far. */ int yynerrs; - /*----------. | yyparse. | `----------*/ +#ifdef YYPARSE_PARAM +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void *YYPARSE_PARAM) +#else +int +yyparse (YYPARSE_PARAM) + void *YYPARSE_PARAM; +#endif +#else /* ! YYPARSE_PARAM */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) int yyparse (void) +#else +int +yyparse () + +#endif +#endif { - yy_state_fast_t 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. */ - - /* Their size. */ - YYPTRDIFF_T yystacksize; - - /* The state stack. */ - yy_state_t yyssa[YYINITDEPTH]; - yy_state_t *yyss; - yy_state_t *yyssp; - - /* The semantic value stack. */ - YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs; - YYSTYPE *yyvsp; - + + int yystate; int yyn; - /* The return value of yyparse. */ int yyresult; - /* Lookahead token as an internal (translated) token number. */ - yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY; - /* The variables used to return semantic value and location from the - action routines. */ - YYSTYPE yyval; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + /* Look-ahead token as an internal (translated) token number. */ + int yytoken = 0; +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + + /* Three stacks and their tools: + `yyss': related to states, + `yyvs': related to semantic values, + `yyls': related to locations. + + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss = yyssa; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp; #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + YYSIZE_T yystacksize = YYINITDEPTH; + + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + + /* The number of symbols on the RHS of the reduced rule. Keep to zero when no symbol should be popped. */ int yylen = 0; - yynerrs = 0; - yystate = 0; - yyerrstatus = 0; - - yystacksize = YYINITDEPTH; - yyssp = yyss = yyssa; - yyvsp = yyvs = yyvsa; - - YYDPRINTF ((stderr, "Starting parse\n")); - yychar = YYEMPTY; /* Cause a token to be read. */ + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + + /* Initialize stack pointers. + Waste one element of value and location stack + so that they stay on the same level as the state stack. + The wasted elements are never initialized. */ + + yyssp = yyss; + yyvsp = yyvs; + 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++; - -/*--------------------------------------------------------------------. -| yysetstate -- set current state (the top of the stack) to yystate. | -`--------------------------------------------------------------------*/ -yysetstate: - YYDPRINTF ((stderr, "Entering state %d\n", yystate)); - YY_ASSERT (0 <= yystate && yystate < YYNSTATES); - YY_IGNORE_USELESS_CAST_BEGIN - *yyssp = YY_CAST (yy_state_t, yystate); - YY_IGNORE_USELESS_CAST_END - YY_STACK_PRINT (yyss, yyssp); + 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. */ - YYPTRDIFF_T yysize = 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 - memory. */ - yy_state_t *yyss1 = yyss; - YYSTYPE *yyvs1 = yyvs; + /* 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 * YYSIZEOF (*yyssp), - &yyvs1, yysize * YYSIZEOF (*yyvsp), - &yystacksize); - yyss = yyss1; - yyvs = yyvs1; + + /* 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 */ +#else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyexhaustedlab; +# else /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) - goto yyexhaustedlab; + goto yyexhaustedlab; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) - yystacksize = YYMAXDEPTH; + yystacksize = YYMAXDEPTH; { - yy_state_t *yyss1 = yyss; - union yyalloc *yyptr = - YY_CAST (union yyalloc *, - YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); - if (! yyptr) - goto yyexhaustedlab; - YYSTACK_RELOCATE (yyss_alloc, yyss); - YYSTACK_RELOCATE (yyvs_alloc, yyvs); + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss); + YYSTACK_RELOCATE (yyvs); + # undef YYSTACK_RELOCATE - if (yyss1 != yyssa) - YYSTACK_FREE (yyss1); + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); } # endif +#endif /* no yyoverflow */ yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; - YY_IGNORE_USELESS_CAST_BEGIN - YYDPRINTF ((stderr, "Stack size increased to %ld\n", - YY_CAST (long, yystacksize))); - YY_IGNORE_USELESS_CAST_END + + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) - YYABORT; + YYABORT; } -#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ - if (yystate == YYFINAL) - YYACCEPT; + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); 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. */ + /* Do appropriate processing given the current state. Read a + look-ahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to look-ahead token. */ yyn = yypact[yystate]; - if (yypact_value_is_default (yyn)) + if (yyn == YYPACT_NINF) goto yydefault; - /* Not known => get a lookahead token if don't already have one. */ + /* Not known => get a look-ahead token if don't already have one. */ - /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */ + /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ if (yychar == YYEMPTY) { - YYDPRINTF ((stderr, "Reading a token\n")); - yychar = yylex (); + YYDPRINTF ((stderr, "Reading a token: ")); + yychar = YYLEX; } if (yychar <= YYEOF) { - yychar = YYEOF; - yytoken = YYSYMBOL_YYEOF; + yychar = yytoken = YYEOF; YYDPRINTF ((stderr, "Now at end of input.\n")); } - else if (yychar == YYerror) - { - /* The scanner already issued an error message, process directly - to error recovery. But do not keep the error token as - lookahead, it is too special and may lead us to an endless - loop in error recovery. */ - yychar = YYUNDEF; - yytoken = YYSYMBOL_YYerror; - goto yyerrlab1; - } else { yytoken = YYTRANSLATE (yychar); @@ -3332,26 +3109,30 @@ yybackup: yyn = yytable[yyn]; if (yyn <= 0) { - if (yytable_value_is_error (yyn)) - goto yyerrlab; + if (yyn == 0 || yyn == YYTABLE_NINF) + goto yyerrlab; yyn = -yyn; goto yyreduce; } + if (yyn == YYFINAL) + YYACCEPT; + /* Count tokens shifted since error; after three, turn off error status. */ if (yyerrstatus) yyerrstatus--; - /* Shift the lookahead token. */ + /* Shift the look-ahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); - yystate = yyn; - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - *++yyvsp = yylval; - YY_IGNORE_MAYBE_UNINITIALIZED_END - /* Discard the shifted token. */ - yychar = YYEMPTY; + /* Discard the shifted token unless it is eof. */ + if (yychar != YYEOF) + yychar = YYEMPTY; + + yystate = yyn; + *++yyvsp = yylval; + goto yynewstate; @@ -3366,14 +3147,14 @@ yydefault: /*-----------------------------. -| yyreduce -- do a reduction. | +| 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'. + `$$ = $1'. Otherwise, the following line sets YYVAL to garbage. This behavior is undocumented and Bison @@ -3386,25 +3167,23 @@ yyreduce: YY_REDUCE_PRINT (yyn); switch (yyn) { - case 18: -#line 198 "./util/configparser.y" - { + case 18: +#line 198 "util/configparser.y" + { OUTYY(("\nP(force-toplevel)\n")); } -#line 3395 "util/configparser.c" break; case 19: -#line 204 "./util/configparser.y" - { +#line 204 "util/configparser.y" + { OUTYY(("\nP(server:)\n")); } -#line 3403 "util/configparser.c" break; - case 236: -#line 309 "./util/configparser.y" - { + case 237: +#line 309 "util/configparser.y" + { struct config_stub* s; OUTYY(("\nP(stub_zone:)\n")); s = (struct config_stub*)calloc(1, sizeof(struct config_stub)); @@ -3414,12 +3193,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 3418 "util/configparser.c" break; - case 246: -#line 326 "./util/configparser.y" - { + case 247: +#line 326 "util/configparser.y" + { struct config_stub* s; OUTYY(("\nP(forward_zone:)\n")); s = (struct config_stub*)calloc(1, sizeof(struct config_stub)); @@ -3429,12 +3207,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 3433 "util/configparser.c" break; - case 255: -#line 343 "./util/configparser.y" - { + case 256: +#line 343 "util/configparser.y" + { struct config_view* s; OUTYY(("\nP(view:)\n")); s = (struct config_view*)calloc(1, sizeof(struct config_view)); @@ -3446,12 +3223,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 3450 "util/configparser.c" break; - case 265: -#line 362 "./util/configparser.y" - { + case 266: +#line 362 "util/configparser.y" + { struct config_auth* s; OUTYY(("\nP(auth_zone:)\n")); s = (struct config_auth*)calloc(1, sizeof(struct config_auth)); @@ -3467,18 +3243,17 @@ yyreduce: } else yyerror("out of memory"); } -#line 3471 "util/configparser.c" break; - case 277: -#line 387 "./util/configparser.y" - { + case 278: +#line 387 "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), + OUTYY(("P(server_local_zone_tag:%s)\n", (yyvsp[(2) - (2)].str))); + bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[(2) - (2)].str), &len); - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); if(!bitlist) { yyerror("could not parse tags, (define-tag them first)"); } @@ -3488,63 +3263,58 @@ yyreduce: } } -#line 3492 "util/configparser.c" - break; - - case 278: -#line 406 "./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 3511 "util/configparser.c" break; case 279: -#line 423 "./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 406 "util/configparser.y" + { + OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "nxdomain")!=0 && strcmp((yyvsp[(2) - (2)].str), "nodata")!=0 && + strcmp((yyvsp[(2) - (2)].str), "passthru")!=0 && strcmp((yyvsp[(2) - (2)].str), "drop")!=0 && + strcmp((yyvsp[(2) - (2)].str), "cname")!=0 && strcmp((yyvsp[(2) - (2)].str), "disabled")!=0) { + yyerror("rpz-action-override action: expected nxdomain, " + "nodata, passthru, drop, cname or disabled"); + free((yyvsp[(2) - (2)].str)); + cfg_parser->cfg->auths->rpz_action_override = NULL; + } + else { + cfg_parser->cfg->auths->rpz_action_override = (yyvsp[(2) - (2)].str); + } } -#line 3521 "util/configparser.c" break; case 280: -#line 431 "./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 423 "util/configparser.y" + { + OUTYY(("P(rpz_cname_override:%s)\n", (yyvsp[(2) - (2)].str))); + free(cfg_parser->cfg->auths->rpz_cname); + cfg_parser->cfg->auths->rpz_cname = (yyvsp[(2) - (2)].str); } -#line 3533 "util/configparser.c" break; case 281: -#line 441 "./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 431 "util/configparser.y" + { + OUTYY(("P(rpz_log:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 3543 "util/configparser.c" break; case 282: -#line 449 "./util/configparser.y" - { +#line 441 "util/configparser.y" + { + OUTYY(("P(rpz_log_name:%s)\n", (yyvsp[(2) - (2)].str))); + free(cfg_parser->cfg->auths->rpz_log_name); + cfg_parser->cfg->auths->rpz_log_name = (yyvsp[(2) - (2)].str); + } + break; + + case 283: +#line 449 "util/configparser.y" + { struct config_auth* s; OUTYY(("\nP(rpz:)\n")); s = (struct config_auth*)calloc(1, sizeof(struct config_auth)); @@ -3559,292 +3329,273 @@ yyreduce: } else yyerror("out of memory"); } -#line 3563 "util/configparser.c" - break; - - case 295: -#line 472 "./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 3575 "util/configparser.c" break; case 296: -#line 481 "./util/configparser.y" - { - OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) +#line 472 "util/configparser.y" + { + OUTYY(("P(server_num_threads:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) yyerror("number expected"); - else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->num_threads = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 3587 "util/configparser.c" break; case 297: -#line 490 "./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) +#line 481 "util/configparser.y" + { + OUTYY(("P(server_verbosity:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) yyerror("number expected"); - else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->verbosity = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 3601 "util/configparser.c" break; case 298: -#line 501 "./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 490 "util/configparser.y" + { + OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "") == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) + cfg_parser->cfg->stat_interval = 0; + else if(atoi((yyvsp[(2) - (2)].str)) == 0) + yyerror("number expected"); + else cfg_parser->cfg->stat_interval = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 3613 "util/configparser.c" break; case 299: -#line 510 "./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) +#line 501 "util/configparser.y" + { + OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 3625 "util/configparser.c" break; case 300: -#line 519 "./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) +#line 510 "util/configparser.y" + { + OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 3637 "util/configparser.c" break; case 301: -#line 528 "./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 519 "util/configparser.y" + { + OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 3651 "util/configparser.c" break; case 302: -#line 539 "./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 528 "util/configparser.y" + { + OUTYY(("P(server_shm_key:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "") == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) + cfg_parser->cfg->shm_key = 0; + else if(atoi((yyvsp[(2) - (2)].str)) == 0) + yyerror("number expected"); + else cfg_parser->cfg->shm_key = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 3663 "util/configparser.c" break; case 303: -#line 548 "./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 539 "util/configparser.y" + { + OUTYY(("P(server_port:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0) + yyerror("port number expected"); + else cfg_parser->cfg->port = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 3678 "util/configparser.c" break; case 304: -#line 560 "./util/configparser.y" - { +#line 548 "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"); + OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet, (yyvsp[(2) - (2)].str))) + fatal_exit("out of memory adding client-subnet"); #else OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); #endif } -#line 3694 "util/configparser.c" break; case 305: -#line 574 "./util/configparser.y" - { +#line 560 "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); + OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet_zone, + (yyvsp[(2) - (2)].str))) + fatal_exit("out of memory adding client-subnet-zone"); #else OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); + free((yyvsp[(2) - (2)].str)); #endif - free((yyvsp[0].str)); } -#line 3712 "util/configparser.c" break; case 306: -#line 589 "./util/configparser.y" - { +#line 574 "util/configparser.y" + { #ifdef CLIENT_SUBNET - OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str))); + OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else + cfg_parser->cfg->client_subnet_always_forward = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + #else + OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); + #endif + free((yyvsp[(2) - (2)].str)); + } + break; + + case 307: +#line 589 "util/configparser.y" + { + #ifdef CLIENT_SUBNET + OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[(2) - (2)].str))); OUTYY(("P(Deprecated option, ignoring)\n")); #else OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); #endif - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 3726 "util/configparser.c" - break; - - case 307: -#line 600 "./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 3746 "util/configparser.c" break; case 308: -#line 617 "./util/configparser.y" - { +#line 600 "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)); + OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + yyerror("IPv4 subnet length expected"); + else if (atoi((yyvsp[(2) - (2)].str)) > 32) + cfg_parser->cfg->max_client_subnet_ipv4 = 32; + else if (atoi((yyvsp[(2) - (2)].str)) < 0) + cfg_parser->cfg->max_client_subnet_ipv4 = 0; + else cfg_parser->cfg->max_client_subnet_ipv4 = (uint8_t)atoi((yyvsp[(2) - (2)].str)); #else OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); #endif - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 3766 "util/configparser.c" break; case 309: -#line 634 "./util/configparser.y" - { +#line 617 "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)); + OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + yyerror("Ipv6 subnet length expected"); + else if (atoi((yyvsp[(2) - (2)].str)) > 128) + cfg_parser->cfg->max_client_subnet_ipv6 = 128; + else if (atoi((yyvsp[(2) - (2)].str)) < 0) + cfg_parser->cfg->max_client_subnet_ipv6 = 0; + else cfg_parser->cfg->max_client_subnet_ipv6 = (uint8_t)atoi((yyvsp[(2) - (2)].str)); #else OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); #endif - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 3786 "util/configparser.c" break; case 310: -#line 651 "./util/configparser.y" - { +#line 634 "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)); + OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + yyerror("IPv4 subnet length expected"); + else if (atoi((yyvsp[(2) - (2)].str)) > 32) + cfg_parser->cfg->min_client_subnet_ipv4 = 32; + else if (atoi((yyvsp[(2) - (2)].str)) < 0) + cfg_parser->cfg->min_client_subnet_ipv4 = 0; + else cfg_parser->cfg->min_client_subnet_ipv4 = (uint8_t)atoi((yyvsp[(2) - (2)].str)); #else OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); #endif - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 3806 "util/configparser.c" break; case 311: -#line 668 "./util/configparser.y" - { +#line 651 "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)); + OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + yyerror("Ipv6 subnet length expected"); + else if (atoi((yyvsp[(2) - (2)].str)) > 128) + cfg_parser->cfg->min_client_subnet_ipv6 = 128; + else if (atoi((yyvsp[(2) - (2)].str)) < 0) + cfg_parser->cfg->min_client_subnet_ipv6 = 0; + else cfg_parser->cfg->min_client_subnet_ipv6 = (uint8_t)atoi((yyvsp[(2) - (2)].str)); #else OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); #endif - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 3824 "util/configparser.c" break; case 312: -#line 683 "./util/configparser.y" - { +#line 668 "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)); + OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + yyerror("IPv4 ECS tree size expected"); + else if (atoi((yyvsp[(2) - (2)].str)) < 0) + cfg_parser->cfg->max_ecs_tree_size_ipv4 = 0; + else cfg_parser->cfg->max_ecs_tree_size_ipv4 = (uint32_t)atoi((yyvsp[(2) - (2)].str)); #else OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); #endif - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 3842 "util/configparser.c" break; case 313: -#line 698 "./util/configparser.y" - { - OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); +#line 683 "util/configparser.y" + { + #ifdef CLIENT_SUBNET + OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + yyerror("IPv6 ECS tree size expected"); + else if (atoi((yyvsp[(2) - (2)].str)) < 0) + cfg_parser->cfg->max_ecs_tree_size_ipv6 = 0; + else cfg_parser->cfg->max_ecs_tree_size_ipv6 = (uint32_t)atoi((yyvsp[(2) - (2)].str)); + #else + OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); + #endif + free((yyvsp[(2) - (2)].str)); + } + break; + + case 314: +#line 698 "util/configparser.y" + { + OUTYY(("P(server_interface:%s)\n", (yyvsp[(2) - (2)].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, @@ -3852,15 +3603,14 @@ yyreduce: if(!cfg_parser->cfg->ifs) yyerror("out of memory"); else - cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); + cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[(2) - (2)].str); } -#line 3858 "util/configparser.c" break; - case 314: -#line 711 "./util/configparser.y" - { - OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); + case 315: +#line 711 "util/configparser.y" + { + OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[(2) - (2)].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( @@ -3870,628 +3620,590 @@ yyreduce: yyerror("out of memory"); else cfg_parser->cfg->out_ifs[ - cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); + cfg_parser->cfg->num_out_ifs++] = (yyvsp[(2) - (2)].str); } -#line 3876 "util/configparser.c" - break; - - case 315: -#line 726 "./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 3888 "util/configparser.c" break; case 316: -#line 735 "./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 726 "util/configparser.y" + { + OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0) + yyerror("number expected"); + else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 3900 "util/configparser.c" break; case 317: -#line 744 "./util/configparser.y" - { - OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); - if(!cfg_mark_ports((yyvsp[0].str), 0, +#line 735 "util/configparser.y" + { + OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_mark_ports((yyvsp[(2) - (2)].str), 1, cfg_parser->cfg->outgoing_avail_ports, 65536)) yyerror("port number or range (\"low-high\") expected"); - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 3912 "util/configparser.c" break; case 318: -#line 753 "./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 744 "util/configparser.y" + { + OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_mark_ports((yyvsp[(2) - (2)].str), 0, + cfg_parser->cfg->outgoing_avail_ports, 65536)) + yyerror("port number or range (\"low-high\") expected"); + free((yyvsp[(2) - (2)].str)); } -#line 3924 "util/configparser.c" break; case 319: -#line 762 "./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) +#line 753 "util/configparser.y" + { + OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) yyerror("number expected"); - else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 3936 "util/configparser.c" break; case 320: -#line 771 "./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 762 "util/configparser.y" + { + OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 3948 "util/configparser.c" break; case 321: -#line 780 "./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) +#line 771 "util/configparser.y" + { + OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 3960 "util/configparser.c" break; case 322: -#line 789 "./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) +#line 780 "util/configparser.y" + { + OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 3972 "util/configparser.c" break; case 323: -#line 798 "./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) +#line 789 "util/configparser.y" + { + OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 3984 "util/configparser.c" break; case 324: -#line 807 "./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) +#line 798 "util/configparser.y" + { + OUTYY(("P(server_do_udp:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->do_udp = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 3996 "util/configparser.c" break; case 325: -#line 816 "./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) +#line 807 "util/configparser.y" + { + OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4008 "util/configparser.c" break; case 326: -#line 825 "./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) +#line 816 "util/configparser.y" + { + OUTYY(("P(server_prefer_ip4:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4020 "util/configparser.c" break; case 327: -#line 834 "./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 825 "util/configparser.y" + { + OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4032 "util/configparser.c" break; case 328: -#line 843 "./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 834 "util/configparser.y" + { + OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->tcp_mss = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 4044 "util/configparser.c" break; case 329: -#line 852 "./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) +#line 843 "util/configparser.y" + { + OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].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)); + else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 4060 "util/configparser.c" break; case 330: -#line 865 "./util/configparser.y" - { - OUTYY(("P(server_max_reuse_tcp_queries:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) +#line 852 "util/configparser.y" + { + OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) yyerror("number expected"); - else if (atoi((yyvsp[0].str)) < 1) - cfg_parser->cfg->max_reuse_tcp_queries = 0; - else cfg_parser->cfg->max_reuse_tcp_queries = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else if (atoi((yyvsp[(2) - (2)].str)) > 120000) + cfg_parser->cfg->tcp_idle_timeout = 120000; + else if (atoi((yyvsp[(2) - (2)].str)) < 1) + cfg_parser->cfg->tcp_idle_timeout = 1; + else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 4074 "util/configparser.c" break; case 331: -#line 876 "./util/configparser.y" - { - OUTYY(("P(server_tcp_reuse_timeout:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) +#line 865 "util/configparser.y" + { + OUTYY(("P(server_max_reuse_tcp_queries:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) yyerror("number expected"); - else if (atoi((yyvsp[0].str)) < 1) - cfg_parser->cfg->tcp_reuse_timeout = 0; - else cfg_parser->cfg->tcp_reuse_timeout = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else if (atoi((yyvsp[(2) - (2)].str)) < 1) + cfg_parser->cfg->max_reuse_tcp_queries = 0; + else cfg_parser->cfg->max_reuse_tcp_queries = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 4088 "util/configparser.c" break; case 332: -#line 887 "./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 876 "util/configparser.y" + { + OUTYY(("P(server_tcp_reuse_timeout:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + yyerror("number expected"); + else if (atoi((yyvsp[(2) - (2)].str)) < 1) + cfg_parser->cfg->tcp_reuse_timeout = 0; + else cfg_parser->cfg->tcp_reuse_timeout = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 4100 "util/configparser.c" break; case 333: -#line 896 "./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) +#line 887 "util/configparser.y" + { + OUTYY(("P(server_tcp_auth_query_timeout:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].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)); + else if (atoi((yyvsp[(2) - (2)].str)) < 1) + cfg_parser->cfg->tcp_auth_query_timeout = 0; + else cfg_parser->cfg->tcp_auth_query_timeout = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 4116 "util/configparser.c" break; case 334: -#line 909 "./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) +#line 898 "util/configparser.y" + { + OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4128 "util/configparser.c" break; case 335: -#line 918 "./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 907 "util/configparser.y" + { + OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + yyerror("number expected"); + else if (atoi((yyvsp[(2) - (2)].str)) > 6553500) + cfg_parser->cfg->tcp_keepalive_timeout = 6553500; + else if (atoi((yyvsp[(2) - (2)].str)) < 1) + cfg_parser->cfg->tcp_keepalive_timeout = 0; + else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 4140 "util/configparser.c" break; case 336: -#line 927 "./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) +#line 920 "util/configparser.y" + { + OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4152 "util/configparser.c" break; case 337: -#line 936 "./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 929 "util/configparser.y" + { + OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4162 "util/configparser.c" break; case 338: -#line 943 "./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 938 "util/configparser.y" + { + OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4172 "util/configparser.c" break; case 339: -#line 950 "./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 947 "util/configparser.y" + { + OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[(2) - (2)].str))); + free(cfg_parser->cfg->ssl_service_key); + cfg_parser->cfg->ssl_service_key = (yyvsp[(2) - (2)].str); } -#line 4184 "util/configparser.c" break; case 340: -#line 959 "./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 954 "util/configparser.y" + { + OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[(2) - (2)].str))); + free(cfg_parser->cfg->ssl_service_pem); + cfg_parser->cfg->ssl_service_pem = (yyvsp[(2) - (2)].str); } -#line 4194 "util/configparser.c" break; case 341: -#line 966 "./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 961 "util/configparser.y" + { + OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0) + yyerror("port number expected"); + else cfg_parser->cfg->ssl_port = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 4206 "util/configparser.c" break; case 342: -#line 975 "./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 970 "util/configparser.y" + { + OUTYY(("P(server_tls_cert_bundle:%s)\n", (yyvsp[(2) - (2)].str))); + free(cfg_parser->cfg->tls_cert_bundle); + cfg_parser->cfg->tls_cert_bundle = (yyvsp[(2) - (2)].str); } -#line 4217 "util/configparser.c" break; case 343: -#line 983 "./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 977 "util/configparser.y" + { + OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4227 "util/configparser.c" break; case 344: -#line 990 "./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 986 "util/configparser.y" + { + OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_strlist_insert(&cfg_parser->cfg->tls_additional_port, + (yyvsp[(2) - (2)].str))) + yyerror("out of memory"); } -#line 4237 "util/configparser.c" break; case 345: -#line 997 "./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 994 "util/configparser.y" + { + OUTYY(("P(server_tls_ciphers:%s)\n", (yyvsp[(2) - (2)].str))); + free(cfg_parser->cfg->tls_ciphers); + cfg_parser->cfg->tls_ciphers = (yyvsp[(2) - (2)].str); } -#line 4248 "util/configparser.c" break; case 346: -#line 1005 "./util/configparser.y" - { - OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); +#line 1001 "util/configparser.y" + { + OUTYY(("P(server_tls_ciphersuites:%s)\n", (yyvsp[(2) - (2)].str))); + free(cfg_parser->cfg->tls_ciphersuites); + cfg_parser->cfg->tls_ciphersuites = (yyvsp[(2) - (2)].str); } -#line 4260 "util/configparser.c" break; case 347: -#line 1014 "./util/configparser.y" - { - OUTYY(("P(server_https_port:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("port number expected"); - else cfg_parser->cfg->https_port = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); +#line 1008 "util/configparser.y" + { + OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_strlist_append(&cfg_parser->cfg->tls_session_ticket_keys, + (yyvsp[(2) - (2)].str))) + yyerror("out of memory"); } -#line 4272 "util/configparser.c" break; case 348: -#line 1022 "./util/configparser.y" - { - OUTYY(("P(server_http_endpoint:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->http_endpoint); - if((yyvsp[0].str) && (yyvsp[0].str)[0] != '/') { - cfg_parser->cfg->http_endpoint = malloc(strlen((yyvsp[0].str))+2); - if(!cfg_parser->cfg->http_endpoint) - yyerror("out of memory"); - cfg_parser->cfg->http_endpoint[0] = '/'; - memmove(cfg_parser->cfg->http_endpoint+1, (yyvsp[0].str), - strlen((yyvsp[0].str))+1); - free((yyvsp[0].str)); - } else { - cfg_parser->cfg->http_endpoint = (yyvsp[0].str); - } +#line 1016 "util/configparser.y" + { + OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4292 "util/configparser.c" break; case 349: -#line 1038 "./util/configparser.y" - { - OUTYY(("P(server_http_max_streams:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->http_max_streams = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); +#line 1025 "util/configparser.y" + { + OUTYY(("P(server_https_port:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0) + yyerror("port number expected"); + else cfg_parser->cfg->https_port = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 4304 "util/configparser.c" break; case 350: -#line 1046 "./util/configparser.y" - { - OUTYY(("P(server_http_query_buffer_size:%s)\n", (yyvsp[0].str))); - if(!cfg_parse_memsize((yyvsp[0].str), - &cfg_parser->cfg->http_query_buffer_size)) - yyerror("memory size expected"); - free((yyvsp[0].str)); +#line 1033 "util/configparser.y" + { + OUTYY(("P(server_http_endpoint:%s)\n", (yyvsp[(2) - (2)].str))); + free(cfg_parser->cfg->http_endpoint); + if((yyvsp[(2) - (2)].str) && (yyvsp[(2) - (2)].str)[0] != '/') { + cfg_parser->cfg->http_endpoint = malloc(strlen((yyvsp[(2) - (2)].str))+2); + if(!cfg_parser->cfg->http_endpoint) + yyerror("out of memory"); + cfg_parser->cfg->http_endpoint[0] = '/'; + memmove(cfg_parser->cfg->http_endpoint+1, (yyvsp[(2) - (2)].str), + strlen((yyvsp[(2) - (2)].str))+1); + free((yyvsp[(2) - (2)].str)); + } else { + cfg_parser->cfg->http_endpoint = (yyvsp[(2) - (2)].str); + } } -#line 4316 "util/configparser.c" break; case 351: -#line 1054 "./util/configparser.y" - { - OUTYY(("P(server_http_response_buffer_size:%s)\n", (yyvsp[0].str))); - if(!cfg_parse_memsize((yyvsp[0].str), - &cfg_parser->cfg->http_response_buffer_size)) - yyerror("memory size expected"); - free((yyvsp[0].str)); +#line 1049 "util/configparser.y" + { + OUTYY(("P(server_http_max_streams:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->http_max_streams = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 4328 "util/configparser.c" break; case 352: -#line 1062 "./util/configparser.y" - { - OUTYY(("P(server_http_nodelay:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); +#line 1057 "util/configparser.y" + { + OUTYY(("P(server_http_query_buffer_size:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), + &cfg_parser->cfg->http_query_buffer_size)) + yyerror("memory size expected"); + free((yyvsp[(2) - (2)].str)); } -#line 4340 "util/configparser.c" break; case 353: -#line 1070 "./util/configparser.y" - { - OUTYY(("P(server_http_notls_downstream:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->http_notls_downstream = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); +#line 1065 "util/configparser.y" + { + OUTYY(("P(server_http_response_buffer_size:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), + &cfg_parser->cfg->http_response_buffer_size)) + yyerror("memory size expected"); + free((yyvsp[(2) - (2)].str)); } -#line 4352 "util/configparser.c" break; case 354: -#line 1078 "./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) +#line 1073 "util/configparser.y" + { + OUTYY(("P(server_http_nodelay:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4364 "util/configparser.c" break; case 355: -#line 1087 "./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) +#line 1081 "util/configparser.y" + { + OUTYY(("P(server_http_notls_downstream:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->http_notls_downstream = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4376 "util/configparser.c" break; case 356: -#line 1096 "./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) +#line 1089 "util/configparser.y" + { + OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->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)); + else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4393 "util/configparser.c" break; case 357: -#line 1110 "./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) +#line 1098 "util/configparser.y" + { + OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4405 "util/configparser.c" break; case 358: -#line 1119 "./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) +#line 1107 "util/configparser.y" + { + OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->use_syslog = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); +#if !defined(HAVE_SYSLOG_H) && !defined(UB_ON_WINDOWS) + if(strcmp((yyvsp[(2) - (2)].str), "yes") == 0) + yyerror("no syslog services are available. " + "(reconfigure and compile to add)"); +#endif + free((yyvsp[(2) - (2)].str)); } -#line 4417 "util/configparser.c" break; case 359: -#line 1128 "./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 4429 "util/configparser.c" +#line 1121 "util/configparser.y" + { + OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); + } break; case 360: -#line 1137 "./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 4441 "util/configparser.c" +#line 1130 "util/configparser.y" + { + OUTYY(("P(server_log_queries:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->log_queries = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); + } break; case 361: -#line 1146 "./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 4453 "util/configparser.c" +#line 1139 "util/configparser.y" + { + OUTYY(("P(server_log_replies:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->log_replies = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); + } break; case 362: -#line 1155 "./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) +#line 1148 "util/configparser.y" + { + OUTYY(("P(server_log_tag_queryreply:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4465 "util/configparser.c" break; case 363: -#line 1164 "./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 1157 "util/configparser.y" + { + OUTYY(("P(server_log_servfail:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4475 "util/configparser.c" break; case 364: -#line 1171 "./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 4485 "util/configparser.c" +#line 1166 "util/configparser.y" + { + OUTYY(("P(server_log_local_actions:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); + } break; case 365: -#line 1178 "./util/configparser.y" - { - OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); +#line 1175 "util/configparser.y" + { + OUTYY(("P(server_chroot:%s)\n", (yyvsp[(2) - (2)].str))); + free(cfg_parser->cfg->chrootdir); + cfg_parser->cfg->chrootdir = (yyvsp[(2) - (2)].str); + } + break; + + case 366: +#line 1182 "util/configparser.y" + { + OUTYY(("P(server_username:%s)\n", (yyvsp[(2) - (2)].str))); + free(cfg_parser->cfg->username); + cfg_parser->cfg->username = (yyvsp[(2) - (2)].str); + } + break; + + case 367: +#line 1189 "util/configparser.y" + { + OUTYY(("P(server_directory:%s)\n", (yyvsp[(2) - (2)].str))); free(cfg_parser->cfg->directory); - cfg_parser->cfg->directory = (yyvsp[0].str); + cfg_parser->cfg->directory = (yyvsp[(2) - (2)].str); /* change there right away for includes relative to this */ - if((yyvsp[0].str)[0]) { + if((yyvsp[(2) - (2)].str)[0]) { char* d; #ifdef UB_ON_WINDOWS w_config_adjust_directory(cfg_parser->cfg); @@ -4510,1194 +4222,1100 @@ yyreduce: } } } -#line 4514 "util/configparser.c" - break; - - case 366: -#line 1204 "./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 4525 "util/configparser.c" - break; - - case 367: -#line 1212 "./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 4535 "util/configparser.c" break; case 368: -#line 1219 "./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 1215 "util/configparser.y" + { + OUTYY(("P(server_logfile:%s)\n", (yyvsp[(2) - (2)].str))); + free(cfg_parser->cfg->logfile); + cfg_parser->cfg->logfile = (yyvsp[(2) - (2)].str); + cfg_parser->cfg->use_syslog = 0; } -#line 4545 "util/configparser.c" break; case 369: -#line 1226 "./util/configparser.y" - { - OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str))); - log_warn("option dlv-anchor-file ignored: DLV is decommissioned"); - free((yyvsp[0].str)); +#line 1223 "util/configparser.y" + { + OUTYY(("P(server_pidfile:%s)\n", (yyvsp[(2) - (2)].str))); + free(cfg_parser->cfg->pidfile); + cfg_parser->cfg->pidfile = (yyvsp[(2) - (2)].str); } -#line 4555 "util/configparser.c" break; case 370: -#line 1233 "./util/configparser.y" - { - OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str))); - log_warn("option dlv-anchor ignored: DLV is decommissioned"); - free((yyvsp[0].str)); +#line 1230 "util/configparser.y" + { + OUTYY(("P(server_root_hints:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[(2) - (2)].str))) + yyerror("out of memory"); } -#line 4565 "util/configparser.c" break; case 371: -#line 1240 "./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 1237 "util/configparser.y" + { + OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[(2) - (2)].str))); + log_warn("option dlv-anchor-file ignored: DLV is decommissioned"); + free((yyvsp[(2) - (2)].str)); } -#line 4576 "util/configparser.c" break; case 372: -#line 1248 "./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 1244 "util/configparser.y" + { + OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[(2) - (2)].str))); + log_warn("option dlv-anchor ignored: DLV is decommissioned"); + free((yyvsp[(2) - (2)].str)); } -#line 4587 "util/configparser.c" break; case 373: -#line 1256 "./util/configparser.y" - { - OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str))); +#line 1251 "util/configparser.y" + { + OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[(2) - (2)].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> - trusted_keys_file_list, (yyvsp[0].str))) + auto_trust_anchor_file_list, (yyvsp[(2) - (2)].str))) yyerror("out of memory"); } -#line 4598 "util/configparser.c" break; case 374: -#line 1264 "./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))) +#line 1259 "util/configparser.y" + { + OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_strlist_insert(&cfg_parser->cfg-> + trust_anchor_file_list, (yyvsp[(2) - (2)].str))) yyerror("out of memory"); } -#line 4608 "util/configparser.c" break; case 375: -#line 1271 "./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 1267 "util/configparser.y" + { + OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_strlist_insert(&cfg_parser->cfg-> + trusted_keys_file_list, (yyvsp[(2) - (2)].str))) + yyerror("out of memory"); } -#line 4622 "util/configparser.c" break; case 376: -#line 1282 "./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 1275 "util/configparser.y" + { + OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[(2) - (2)].str))) + yyerror("out of memory"); } -#line 4636 "util/configparser.c" break; case 377: -#line 1293 "./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 1282 "util/configparser.y" + { + OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else + cfg_parser->cfg->trust_anchor_signaling = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4646 "util/configparser.c" break; case 378: -#line 1300 "./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) +#line 1293 "util/configparser.y" + { + OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else + cfg_parser->cfg->root_key_sentinel = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4658 "util/configparser.c" break; case 379: -#line 1309 "./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 1304 "util/configparser.y" + { + OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[(2) - (2)].str))) + yyerror("out of memory"); } -#line 4670 "util/configparser.c" break; case 380: -#line 1318 "./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) +#line 1311 "util/configparser.y" + { + OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4682 "util/configparser.c" break; case 381: -#line 1327 "./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 1320 "util/configparser.y" + { + OUTYY(("P(server_hide_version:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->hide_version = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4692 "util/configparser.c" break; case 382: -#line 1334 "./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 1329 "util/configparser.y" + { + OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4702 "util/configparser.c" break; case 383: -#line 1341 "./util/configparser.y" - { - OUTYY(("P(server_nsid:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->nsid_cfg_str); - cfg_parser->cfg->nsid_cfg_str = (yyvsp[0].str); - free(cfg_parser->cfg->nsid); - cfg_parser->cfg->nsid = NULL; - cfg_parser->cfg->nsid_len = 0; - if (*(yyvsp[0].str) == 0) - ; /* pass; empty string is not setting nsid */ - else if (!(cfg_parser->cfg->nsid = cfg_parse_nsid( - (yyvsp[0].str), &cfg_parser->cfg->nsid_len))) - yyerror("the NSID must be either a hex string or an " - "ascii character string prepended with ascii_."); +#line 1338 "util/configparser.y" + { + OUTYY(("P(server_identity:%s)\n", (yyvsp[(2) - (2)].str))); + free(cfg_parser->cfg->identity); + cfg_parser->cfg->identity = (yyvsp[(2) - (2)].str); } -#line 4721 "util/configparser.c" break; case 384: -#line 1357 "./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 1345 "util/configparser.y" + { + OUTYY(("P(server_version:%s)\n", (yyvsp[(2) - (2)].str))); + free(cfg_parser->cfg->version); + cfg_parser->cfg->version = (yyvsp[(2) - (2)].str); } -#line 4732 "util/configparser.c" break; case 385: -#line 1365 "./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 1352 "util/configparser.y" + { + OUTYY(("P(server_nsid:%s)\n", (yyvsp[(2) - (2)].str))); + free(cfg_parser->cfg->nsid_cfg_str); + cfg_parser->cfg->nsid_cfg_str = (yyvsp[(2) - (2)].str); + free(cfg_parser->cfg->nsid); + cfg_parser->cfg->nsid = NULL; + cfg_parser->cfg->nsid_len = 0; + if (*(yyvsp[(2) - (2)].str) == 0) + ; /* pass; empty string is not setting nsid */ + else if (!(cfg_parser->cfg->nsid = cfg_parse_nsid( + (yyvsp[(2) - (2)].str), &cfg_parser->cfg->nsid_len))) + yyerror("the NSID must be either a hex string or an " + "ascii character string prepended with ascii_."); } -#line 4743 "util/configparser.c" break; case 386: -#line 1373 "./util/configparser.y" +#line 1368 "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 4756 "util/configparser.c" + OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->so_rcvbuf)) + yyerror("buffer size expected"); + free((yyvsp[(2) - (2)].str)); + } break; case 387: -#line 1383 "./util/configparser.y" +#line 1376 "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 4769 "util/configparser.c" + OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->so_sndbuf)) + yyerror("buffer size expected"); + free((yyvsp[(2) - (2)].str)); + } break; case 388: -#line 1393 "./util/configparser.y" +#line 1384 "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) + OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->ip_freebind = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->so_reuseport = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4782 "util/configparser.c" break; case 389: -#line 1403 "./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 4799 "util/configparser.c" +#line 1394 "util/configparser.y" + { + OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->ip_transparent = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); + } break; case 390: -#line 1417 "./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 4810 "util/configparser.c" +#line 1404 "util/configparser.y" + { + OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->ip_freebind = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); + } break; case 391: -#line 1425 "./util/configparser.y" - { - OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) +#line 1414 "util/configparser.y" + { + OUTYY(("P(server_ip_dscp:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 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)); + else if (atoi((yyvsp[(2) - (2)].str)) > 63) + yyerror("value too large (max 63)"); + else if (atoi((yyvsp[(2) - (2)].str)) < 0) + yyerror("value too small (min 0)"); + else + cfg_parser->cfg->ip_dscp = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 4826 "util/configparser.c" break; case 392: -#line 1438 "./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 1428 "util/configparser.y" + { + OUTYY(("P(server_stream_wait_size:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->stream_wait_size)) + yyerror("memory size expected"); + free((yyvsp[(2) - (2)].str)); } -#line 4840 "util/configparser.c" break; case 393: -#line 1449 "./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 1436 "util/configparser.y" + { + OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0) + yyerror("number expected"); + else if (atoi((yyvsp[(2) - (2)].str)) < 12) + yyerror("edns buffer size too small"); + else if (atoi((yyvsp[(2) - (2)].str)) > 65535) + cfg_parser->cfg->edns_buffer_size = 65535; + else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 4851 "util/configparser.c" break; case 394: -#line 1457 "./util/configparser.y" - { - OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) +#line 1449 "util/configparser.y" + { + OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].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)); + else if (atoi((yyvsp[(2) - (2)].str)) < 4096) + yyerror("message buffer size too small (use 4096)"); + else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 4867 "util/configparser.c" break; case 395: -#line 1470 "./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 1460 "util/configparser.y" + { + OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->msg_cache_size)) + yyerror("memory size expected"); + free((yyvsp[(2) - (2)].str)); } -#line 4879 "util/configparser.c" break; case 396: -#line 1479 "./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) +#line 1468 "util/configparser.y" + { + OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0) yyerror("number expected"); - else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else { + cfg_parser->cfg->msg_cache_slabs = atoi((yyvsp[(2) - (2)].str)); + if(!is_pow2(cfg_parser->cfg->msg_cache_slabs)) + yyerror("must be a power of 2"); + } + free((yyvsp[(2) - (2)].str)); } -#line 4891 "util/configparser.c" break; case 397: -#line 1488 "./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) +#line 1481 "util/configparser.y" + { + OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0) yyerror("number expected"); - else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 4903 "util/configparser.c" break; case 398: -#line 1497 "./util/configparser.y" - { - OUTYY(("P(server_udp_connect:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->udp_connect = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); +#line 1490 "util/configparser.y" + { + OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->jostle_time = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 4915 "util/configparser.c" break; case 399: -#line 1506 "./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 1499 "util/configparser.y" + { + OUTYY(("P(server_delay_close:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->delay_close = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 4928 "util/configparser.c" break; case 400: -#line 1516 "./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) +#line 1508 "util/configparser.y" + { + OUTYY(("P(server_udp_connect:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->insecure_lan_zones = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->udp_connect = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4941 "util/configparser.c" break; case 401: -#line 1526 "./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 1517 "util/configparser.y" + { + OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->unblock_lan_zones = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4952 "util/configparser.c" break; case 402: -#line 1534 "./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 1527 "util/configparser.y" + { + OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->insecure_lan_zones = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 4968 "util/configparser.c" break; case 403: -#line 1547 "./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 1537 "util/configparser.y" + { + OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->rrset_cache_size)) + yyerror("memory size expected"); + free((yyvsp[(2) - (2)].str)); } -#line 4980 "util/configparser.c" break; case 404: -#line 1556 "./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 1545 "util/configparser.y" + { + OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0) + yyerror("number expected"); + else { + cfg_parser->cfg->rrset_cache_slabs = atoi((yyvsp[(2) - (2)].str)); + if(!is_pow2(cfg_parser->cfg->rrset_cache_slabs)) + yyerror("must be a power of 2"); + } + free((yyvsp[(2) - (2)].str)); } -#line 4991 "util/configparser.c" break; case 405: -#line 1564 "./util/configparser.y" - { - OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) +#line 1558 "util/configparser.y" + { + OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) yyerror("number expected"); - else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->host_ttl = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 5003 "util/configparser.c" break; case 406: -#line 1573 "./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 1567 "util/configparser.y" + { + OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[(2) - (2)].str))); + verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option " + "removed, use infra-host-ttl)", (yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 5014 "util/configparser.c" break; case 407: -#line 1581 "./util/configparser.y" - { - OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) +#line 1575 "util/configparser.y" + { + OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].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)); + else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 5030 "util/configparser.c" break; case 408: -#line 1594 "./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 1584 "util/configparser.y" + { + OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[(2) - (2)].str))); + verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s " + "(option removed, use infra-cache-numhosts)", (yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 5042 "util/configparser.c" break; case 409: -#line 1603 "./util/configparser.y" - { - OUTYY(("P(server_infra_keep_probing:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->infra_keep_probing = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); +#line 1592 "util/configparser.y" + { + OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0) + yyerror("number expected"); + else { + cfg_parser->cfg->infra_cache_slabs = atoi((yyvsp[(2) - (2)].str)); + if(!is_pow2(cfg_parser->cfg->infra_cache_slabs)) + yyerror("must be a power of 2"); + } + free((yyvsp[(2) - (2)].str)); } -#line 5055 "util/configparser.c" break; case 410: -#line 1613 "./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 1605 "util/configparser.y" + { + OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 5065 "util/configparser.c" break; case 411: -#line 1620 "./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) +#line 1614 "util/configparser.y" + { + OUTYY(("P(server_infra_keep_probing:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->harden_short_bufsize = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->infra_keep_probing = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 5078 "util/configparser.c" break; case 412: -#line 1630 "./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 1624 "util/configparser.y" + { + OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[(2) - (2)].str))); + free(cfg_parser->cfg->target_fetch_policy); + cfg_parser->cfg->target_fetch_policy = (yyvsp[(2) - (2)].str); } -#line 5091 "util/configparser.c" break; case 413: -#line 1640 "./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) +#line 1631 "util/configparser.y" + { + OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->harden_glue = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->harden_short_bufsize = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 5104 "util/configparser.c" break; case 414: -#line 1650 "./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) +#line 1641 "util/configparser.y" + { + OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->harden_dnssec_stripped = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->harden_large_queries = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 5117 "util/configparser.c" break; case 415: -#line 1660 "./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) +#line 1651 "util/configparser.y" + { + OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->harden_below_nxdomain = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->harden_glue = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 5130 "util/configparser.c" break; case 416: -#line 1670 "./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) +#line 1661 "util/configparser.y" + { + OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->harden_referral_path = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->harden_dnssec_stripped = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 5143 "util/configparser.c" break; case 417: -#line 1680 "./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) +#line 1671 "util/configparser.y" + { + OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->harden_algo_downgrade = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->harden_below_nxdomain = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 5156 "util/configparser.c" break; case 418: -#line 1690 "./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) +#line 1681 "util/configparser.y" + { + OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->use_caps_bits_for_id = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->harden_referral_path = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 5169 "util/configparser.c" break; case 419: -#line 1700 "./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 1691 "util/configparser.y" + { + OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->harden_algo_downgrade = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 5179 "util/configparser.c" break; case 420: -#line 1707 "./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 1701 "util/configparser.y" + { + OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->use_caps_bits_for_id = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 5189 "util/configparser.c" break; case 421: -#line 1714 "./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))) +#line 1711 "util/configparser.y" + { + OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[(2) - (2)].str))) yyerror("out of memory"); } -#line 5199 "util/configparser.c" break; case 422: -#line 1721 "./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 1718 "util/configparser.y" + { + OUTYY(("P(server_private_address:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[(2) - (2)].str))) + yyerror("out of memory"); } -#line 5211 "util/configparser.c" break; case 423: -#line 1730 "./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 1725 "util/configparser.y" + { + OUTYY(("P(server_private_domain:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[(2) - (2)].str))) + yyerror("out of memory"); } -#line 5223 "util/configparser.c" break; case 424: -#line 1739 "./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) +#line 1732 "util/configparser.y" + { + OUTYY(("P(server_prefetch:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->prefetch = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 5235 "util/configparser.c" break; case 425: -#line 1748 "./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 1741 "util/configparser.y" + { + OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 5247 "util/configparser.c" break; case 426: -#line 1757 "./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 1750 "util/configparser.y" + { + OUTYY(("P(server_deny_any:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->deny_any = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 5257 "util/configparser.c" break; case 427: -#line 1764 "./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 1759 "util/configparser.y" + { + OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 5270 "util/configparser.c" break; case 428: -#line 1774 "./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 1768 "util/configparser.y" + { + OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[(2) - (2)].str))) + yyerror("out of memory"); } -#line 5293 "util/configparser.c" break; case 429: -#line 1794 "./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 1775 "util/configparser.y" + { + OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->donotquery_localhost = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 5303 "util/configparser.c" break; case 430: -#line 1801 "./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"); +#line 1785 "util/configparser.y" + { + OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))); + if(strcmp((yyvsp[(3) - (3)].str), "deny")!=0 && strcmp((yyvsp[(3) - (3)].str), "refuse")!=0 && + strcmp((yyvsp[(3) - (3)].str), "deny_non_local")!=0 && + strcmp((yyvsp[(3) - (3)].str), "refuse_non_local")!=0 && + strcmp((yyvsp[(3) - (3)].str), "allow_setrd")!=0 && + strcmp((yyvsp[(3) - (3)].str), "allow")!=0 && + strcmp((yyvsp[(3) - (3)].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[(2) - (3)].str)); + free((yyvsp[(3) - (3)].str)); } else { - if(atoi((yyvsp[0].str)) == 0) - yyerror("number expected"); - cfg_parser->cfg->val_date_override = atoi((yyvsp[0].str)); + if(!cfg_str2list_insert(&cfg_parser->cfg->acls, (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))) + fatal_exit("out of memory adding acl"); } - free((yyvsp[0].str)); } -#line 5324 "util/configparser.c" break; case 431: -#line 1819 "./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 1805 "util/configparser.y" + { + OUTYY(("P(server_module_conf:%s)\n", (yyvsp[(2) - (2)].str))); + free(cfg_parser->cfg->module_conf); + cfg_parser->cfg->module_conf = (yyvsp[(2) - (2)].str); } -#line 5340 "util/configparser.c" break; case 432: -#line 1832 "./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; +#line 1812 "util/configparser.y" + { + OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[(2) - (2)].str))); + if(*(yyvsp[(2) - (2)].str) == '\0' || strcmp((yyvsp[(2) - (2)].str), "0") == 0) { + cfg_parser->cfg->val_date_override = 0; + } else if(strlen((yyvsp[(2) - (2)].str)) == 14) { + cfg_parser->cfg->val_date_override = + cfg_convert_timeval((yyvsp[(2) - (2)].str)); + if(!cfg_parser->cfg->val_date_override) + yyerror("bad date/time specification"); } else { - cfg_parser->cfg->val_sig_skew_max = atoi((yyvsp[0].str)); - if(!cfg_parser->cfg->val_sig_skew_max) + if(atoi((yyvsp[(2) - (2)].str)) == 0) yyerror("number expected"); + cfg_parser->cfg->val_date_override = atoi((yyvsp[(2) - (2)].str)); } - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 5356 "util/configparser.c" break; case 433: -#line 1845 "./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 1830 "util/configparser.y" + { + OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[(2) - (2)].str))); + if(*(yyvsp[(2) - (2)].str) == '\0' || strcmp((yyvsp[(2) - (2)].str), "0") == 0) { + cfg_parser->cfg->val_sig_skew_min = 0; + } else { + cfg_parser->cfg->val_sig_skew_min = atoi((yyvsp[(2) - (2)].str)); + if(!cfg_parser->cfg->val_sig_skew_min) + yyerror("number expected"); + } + free((yyvsp[(2) - (2)].str)); } -#line 5368 "util/configparser.c" break; case 434: -#line 1854 "./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 1843 "util/configparser.y" + { + OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[(2) - (2)].str))); + if(*(yyvsp[(2) - (2)].str) == '\0' || strcmp((yyvsp[(2) - (2)].str), "0") == 0) { + cfg_parser->cfg->val_sig_skew_max = 0; + } else { + cfg_parser->cfg->val_sig_skew_max = atoi((yyvsp[(2) - (2)].str)); + if(!cfg_parser->cfg->val_sig_skew_max) + yyerror("number expected"); + } + free((yyvsp[(2) - (2)].str)); } -#line 5380 "util/configparser.c" break; case 435: -#line 1863 "./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) +#line 1856 "util/configparser.y" + { + OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) yyerror("number expected"); - else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->max_ttl = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 5392 "util/configparser.c" break; case 436: -#line 1872 "./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) +#line 1865 "util/configparser.y" + { + OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) yyerror("number expected"); - else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 5404 "util/configparser.c" break; case 437: -#line 1881 "./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 1874 "util/configparser.y" + { + OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->min_ttl = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 5417 "util/configparser.c" break; case 438: -#line 1891 "./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 1883 "util/configparser.y" + { + OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 5430 "util/configparser.c" break; case 439: -#line 1901 "./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) +#line 1892 "util/configparser.y" + { + OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) yyerror("expected yes or no."); - else - cfg_parser->cfg->aggressive_nsec = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->val_clean_additional = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 5444 "util/configparser.c" break; case 440: -#line 1912 "./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) +#line 1902 "util/configparser.y" + { + OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->val_permissive_mode = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 5456 "util/configparser.c" break; case 441: -#line 1921 "./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) +#line 1912 "util/configparser.y" + { + OUTYY(("P(server_aggressive_nsec:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else + cfg_parser->cfg->aggressive_nsec = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 5468 "util/configparser.c" break; case 442: -#line 1930 "./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 1923 "util/configparser.y" + { + OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 5480 "util/configparser.c" break; case 443: -#line 1939 "./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) +#line 1932 "util/configparser.y" + { + OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 5492 "util/configparser.c" break; case 444: -#line 1948 "./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) +#line 1941 "util/configparser.y" + { + OUTYY(("P(server_serve_expired_ttl:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) yyerror("number expected"); - else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 5504 "util/configparser.c" break; case 445: -#line 1957 "./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 1950 "util/configparser.y" + { + OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 5516 "util/configparser.c" break; case 446: -#line 1966 "./util/configparser.y" - { - OUTYY(("P(server_serve_original_ttl:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->serve_original_ttl = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); +#line 1959 "util/configparser.y" + { + OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 5528 "util/configparser.c" break; case 447: -#line 1975 "./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 1968 "util/configparser.y" + { + OUTYY(("P(server_serve_expired_client_timeout:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 5544 "util/configparser.c" break; case 448: -#line 1988 "./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) +#line 1977 "util/configparser.y" + { + OUTYY(("P(server_serve_original_ttl:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) yyerror("expected yes or no."); -#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)); + else cfg_parser->cfg->serve_original_ttl = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 5560 "util/configparser.c" break; case 449: -#line 2001 "./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 1986 "util/configparser.y" + { + OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); +#if defined(HAVE_SSL) || defined(HAVE_NETTLE) + else fake_dsa = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + if(fake_dsa) + log_warn("test option fake_dsa is enabled"); +#endif + free((yyvsp[(2) - (2)].str)); } -#line 5572 "util/configparser.c" break; case 450: -#line 2010 "./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 1999 "util/configparser.y" + { + OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); +#if defined(HAVE_SSL) || defined(HAVE_NETTLE) + else fake_sha1 = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + if(fake_sha1) + log_warn("test option fake_sha1 is enabled"); +#endif + free((yyvsp[(2) - (2)].str)); } -#line 5582 "util/configparser.c" break; case 451: -#line 2017 "./util/configparser.y" - { - OUTYY(("P(server_zonemd_permissive_mode:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->zonemd_permissive_mode = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); +#line 2012 "util/configparser.y" + { + OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->val_log_level = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 5594 "util/configparser.c" break; case 452: -#line 2026 "./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 2021 "util/configparser.y" + { + OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[(2) - (2)].str))); + free(cfg_parser->cfg->val_nsec3_key_iterations); + cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[(2) - (2)].str); } -#line 5606 "util/configparser.c" break; case 453: -#line 2035 "./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 2028 "util/configparser.y" + { + OUTYY(("P(server_zonemd_permissive_mode:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->zonemd_permissive_mode = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 5618 "util/configparser.c" break; case 454: -#line 2044 "./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) +#line 2037 "util/configparser.y" + { + OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) yyerror("number expected"); - else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->add_holddown = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 5630 "util/configparser.c" break; case 455: -#line 2053 "./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 2046 "util/configparser.y" + { + OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->del_holddown = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 5643 "util/configparser.c" break; case 456: -#line 2062 "./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 2055 "util/configparser.y" + { + OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->keep_missing = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 5654 "util/configparser.c" break; case 457: -#line 2070 "./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 2064 "util/configparser.y" + { + OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->permit_small_holddown = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 5670 "util/configparser.c" break; case 458: -#line 2083 "./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)) +#line 2073 "util/configparser.y" + { + OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->key_cache_size)) yyerror("memory size expected"); - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 5681 "util/configparser.c" break; case 459: -#line 2091 "./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), "always_nodata")!=0 - && strcmp((yyvsp[0].str), "always_deny")!=0 - && strcmp((yyvsp[0].str), "always_null")!=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) { +#line 2081 "util/configparser.y" + { + OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0) + yyerror("number expected"); + else { + cfg_parser->cfg->key_cache_slabs = atoi((yyvsp[(2) - (2)].str)); + if(!is_pow2(cfg_parser->cfg->key_cache_slabs)) + yyerror("must be a power of 2"); + } + free((yyvsp[(2) - (2)].str)); + } + break; + + case 460: +#line 2094 "util/configparser.y" + { + OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->neg_cache_size)) + yyerror("memory size expected"); + free((yyvsp[(2) - (2)].str)); + } + break; + + case 461: +#line 2102 "util/configparser.y" + { + OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))); + if(strcmp((yyvsp[(3) - (3)].str), "static")!=0 && strcmp((yyvsp[(3) - (3)].str), "deny")!=0 && + strcmp((yyvsp[(3) - (3)].str), "refuse")!=0 && strcmp((yyvsp[(3) - (3)].str), "redirect")!=0 && + strcmp((yyvsp[(3) - (3)].str), "transparent")!=0 && strcmp((yyvsp[(3) - (3)].str), "nodefault")!=0 + && strcmp((yyvsp[(3) - (3)].str), "typetransparent")!=0 + && strcmp((yyvsp[(3) - (3)].str), "always_transparent")!=0 + && strcmp((yyvsp[(3) - (3)].str), "always_refuse")!=0 + && strcmp((yyvsp[(3) - (3)].str), "always_nxdomain")!=0 + && strcmp((yyvsp[(3) - (3)].str), "always_nodata")!=0 + && strcmp((yyvsp[(3) - (3)].str), "always_deny")!=0 + && strcmp((yyvsp[(3) - (3)].str), "always_null")!=0 + && strcmp((yyvsp[(3) - (3)].str), "noview")!=0 + && strcmp((yyvsp[(3) - (3)].str), "inform")!=0 && strcmp((yyvsp[(3) - (3)].str), "inform_deny")!=0 + && strcmp((yyvsp[(3) - (3)].str), "inform_redirect") != 0 + && strcmp((yyvsp[(3) - (3)].str), "ipset") != 0) { yyerror("local-zone type: expected static, deny, " "refuse, redirect, transparent, " "typetransparent, inform, inform_deny, " @@ -5705,46 +5323,44 @@ yyreduce: "always_refuse, always_nxdomain, " "always_nodata, always_deny, always_null, " "noview, nodefault or ipset"); - free((yyvsp[-1].str)); - free((yyvsp[0].str)); - } else if(strcmp((yyvsp[0].str), "nodefault")==0) { + free((yyvsp[(2) - (3)].str)); + free((yyvsp[(3) - (3)].str)); + } else if(strcmp((yyvsp[(3) - (3)].str), "nodefault")==0) { if(!cfg_strlist_insert(&cfg_parser->cfg-> - local_zones_nodefault, (yyvsp[-1].str))) + local_zones_nodefault, (yyvsp[(2) - (3)].str))) fatal_exit("out of memory adding local-zone"); - free((yyvsp[0].str)); + free((yyvsp[(3) - (3)].str)); #ifdef USE_IPSET - } else if(strcmp((yyvsp[0].str), "ipset")==0) { + } else if(strcmp((yyvsp[(3) - (3)].str), "ipset")==0) { if(!cfg_strlist_insert(&cfg_parser->cfg-> - local_zones_ipset, (yyvsp[-1].str))) + local_zones_ipset, (yyvsp[(2) - (3)].str))) fatal_exit("out of memory adding local-zone"); - free((yyvsp[0].str)); + free((yyvsp[(3) - (3)].str)); #endif } else { if(!cfg_str2list_insert(&cfg_parser->cfg->local_zones, - (yyvsp[-1].str), (yyvsp[0].str))) + (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))) fatal_exit("out of memory adding local-zone"); } } -#line 5729 "util/configparser.c" break; - case 460: -#line 2136 "./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))) + case 462: +#line 2147 "util/configparser.y" + { + OUTYY(("P(server_local_data:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[(2) - (2)].str))) fatal_exit("out of memory adding local-data"); } -#line 5739 "util/configparser.c" break; - case 461: -#line 2143 "./util/configparser.y" - { + case 463: +#line 2154 "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)); + OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[(2) - (2)].str))); + ptr = cfg_ptr_reverse((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); if(ptr) { if(!cfg_strlist_insert(&cfg_parser->cfg-> local_data, ptr)) @@ -5753,93 +5369,85 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5757 "util/configparser.c" - break; - - case 462: -#line 2158 "./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 5770 "util/configparser.c" - break; - - case 463: -#line 2168 "./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 5783 "util/configparser.c" break; case 464: -#line 2178 "./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 2169 "util/configparser.y" + { + OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->minimal_responses = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 5793 "util/configparser.c" break; case 465: -#line 2185 "./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 2179 "util/configparser.y" + { + OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->rrset_roundrobin = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 5803 "util/configparser.c" break; case 466: -#line 2192 "./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 2189 "util/configparser.y" + { + OUTYY(("P(server_unknown_server_time_limit:%s)\n", (yyvsp[(2) - (2)].str))); + cfg_parser->cfg->unknown_server_time_limit = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 5813 "util/configparser.c" break; case 467: -#line 2199 "./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 2196 "util/configparser.y" + { + OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[(2) - (2)].str))); + cfg_parser->cfg->max_udp_size = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 5825 "util/configparser.c" break; case 468: -#line 2208 "./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 2203 "util/configparser.y" + { + OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[(2) - (2)].str))); + free(cfg_parser->cfg->dns64_prefix); + cfg_parser->cfg->dns64_prefix = (yyvsp[(2) - (2)].str); } -#line 5836 "util/configparser.c" break; case 469: -#line 2216 "./util/configparser.y" - { - char* p, *s = (yyvsp[0].str); - OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); +#line 2210 "util/configparser.y" + { + OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); + } + break; + + case 470: +#line 2219 "util/configparser.y" + { + OUTYY(("P(dns64_ignore_aaaa:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_strlist_insert(&cfg_parser->cfg->dns64_ignore_aaaa, + (yyvsp[(2) - (2)].str))) + fatal_exit("out of memory adding dns64-ignore-aaaa"); + } + break; + + case 471: +#line 2227 "util/configparser.y" + { + char* p, *s = (yyvsp[(2) - (2)].str); + OUTYY(("P(server_define_tag:%s)\n", (yyvsp[(2) - (2)].str))); while((p=strsep(&s, " \t\n")) != NULL) { if(*p) { if(!config_add_tag(cfg_parser->cfg, p)) @@ -5847,800 +5455,742 @@ yyreduce: "out of memory"); } } - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 5853 "util/configparser.c" break; - case 470: -#line 2230 "./util/configparser.y" - { + case 472: +#line 2241 "util/configparser.y" + { size_t len = 0; - uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), + uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[(3) - (3)].str), &len); - free((yyvsp[0].str)); - OUTYY(("P(server_local_zone_tag:%s)\n", (yyvsp[-1].str))); + free((yyvsp[(3) - (3)].str)); + OUTYY(("P(server_local_zone_tag:%s)\n", (yyvsp[(2) - (3)].str))); if(!bitlist) { yyerror("could not parse tags, (define-tag them first)"); - free((yyvsp[-1].str)); + free((yyvsp[(2) - (3)].str)); } if(bitlist) { if(!cfg_strbytelist_insert( &cfg_parser->cfg->local_zone_tags, - (yyvsp[-1].str), bitlist, len)) { + (yyvsp[(2) - (3)].str), bitlist, len)) { yyerror("out of memory"); - free((yyvsp[-1].str)); + free((yyvsp[(2) - (3)].str)); } } } -#line 5877 "util/configparser.c" break; - case 471: -#line 2251 "./util/configparser.y" - { + case 473: +#line 2262 "util/configparser.y" + { size_t len = 0; - uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), + uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[(3) - (3)].str), &len); - free((yyvsp[0].str)); - OUTYY(("P(server_access_control_tag:%s)\n", (yyvsp[-1].str))); + free((yyvsp[(3) - (3)].str)); + OUTYY(("P(server_access_control_tag:%s)\n", (yyvsp[(2) - (3)].str))); if(!bitlist) { yyerror("could not parse tags, (define-tag them first)"); - free((yyvsp[-1].str)); + free((yyvsp[(2) - (3)].str)); } if(bitlist) { if(!cfg_strbytelist_insert( &cfg_parser->cfg->acl_tags, - (yyvsp[-1].str), bitlist, len)) { + (yyvsp[(2) - (3)].str), bitlist, len)) { yyerror("out of memory"); - free((yyvsp[-1].str)); + free((yyvsp[(2) - (3)].str)); } } } -#line 5901 "util/configparser.c" - break; - - case 472: -#line 2272 "./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 5916 "util/configparser.c" - break; - - case 473: -#line 2284 "./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 5931 "util/configparser.c" break; case 474: -#line 2296 "./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))) { +#line 2283 "util/configparser.y" + { + OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[(2) - (4)].str), (yyvsp[(3) - (4)].str), (yyvsp[(4) - (4)].str))); + if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_actions, + (yyvsp[(2) - (4)].str), (yyvsp[(3) - (4)].str), (yyvsp[(4) - (4)].str))) { yyerror("out of memory"); - free((yyvsp[-2].str)); - free((yyvsp[-1].str)); - free((yyvsp[0].str)); + free((yyvsp[(2) - (4)].str)); + free((yyvsp[(3) - (4)].str)); + free((yyvsp[(4) - (4)].str)); } } -#line 5946 "util/configparser.c" break; case 475: -#line 2308 "./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))) { +#line 2295 "util/configparser.y" + { + OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[(2) - (4)].str), (yyvsp[(3) - (4)].str), (yyvsp[(4) - (4)].str))); + if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_datas, + (yyvsp[(2) - (4)].str), (yyvsp[(3) - (4)].str), (yyvsp[(4) - (4)].str))) { yyerror("out of memory"); + free((yyvsp[(2) - (4)].str)); + free((yyvsp[(3) - (4)].str)); + free((yyvsp[(4) - (4)].str)); } } -#line 5958 "util/configparser.c" break; case 476: -#line 2317 "./util/configparser.y" - { +#line 2307 "util/configparser.y" + { + OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[(2) - (4)].str), (yyvsp[(3) - (4)].str), (yyvsp[(4) - (4)].str))); + if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides, + (yyvsp[(2) - (4)].str), (yyvsp[(3) - (4)].str), (yyvsp[(4) - (4)].str))) { + yyerror("out of memory"); + free((yyvsp[(2) - (4)].str)); + free((yyvsp[(3) - (4)].str)); + free((yyvsp[(4) - (4)].str)); + } + } + break; + + case 477: +#line 2319 "util/configparser.y" + { + OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))); + if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view, + (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))) { + yyerror("out of memory"); + } + } + break; + + case 478: +#line 2328 "util/configparser.y" + { size_t len = 0; - uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), + uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[(3) - (3)].str), &len); - free((yyvsp[0].str)); - OUTYY(("P(response_ip_tag:%s)\n", (yyvsp[-1].str))); + free((yyvsp[(3) - (3)].str)); + OUTYY(("P(response_ip_tag:%s)\n", (yyvsp[(2) - (3)].str))); if(!bitlist) { yyerror("could not parse tags, (define-tag them first)"); - free((yyvsp[-1].str)); + free((yyvsp[(2) - (3)].str)); } if(bitlist) { if(!cfg_strbytelist_insert( &cfg_parser->cfg->respip_tags, - (yyvsp[-1].str), bitlist, len)) { + (yyvsp[(2) - (3)].str), bitlist, len)) { yyerror("out of memory"); - free((yyvsp[-1].str)); + free((yyvsp[(2) - (3)].str)); } } } -#line 5982 "util/configparser.c" - break; - - case 477: -#line 2338 "./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 5994 "util/configparser.c" - break; - - case 478: -#line 2348 "./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 6006 "util/configparser.c" break; case 479: -#line 2357 "./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 6017 "util/configparser.c" +#line 2349 "util/configparser.y" + { + OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); + } break; case 480: -#line 2365 "./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 2359 "util/configparser.y" + { + OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->ratelimit = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 6028 "util/configparser.c" break; case 481: -#line 2373 "./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 2368 "util/configparser.y" + { + OUTYY(("P(server_ip_ratelimit_size:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->ip_ratelimit_size)) + yyerror("memory size expected"); + free((yyvsp[(2) - (2)].str)); } -#line 6044 "util/configparser.c" break; case 482: -#line 2386 "./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 2376 "util/configparser.y" + { + OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->ratelimit_size)) + yyerror("memory size expected"); + free((yyvsp[(2) - (2)].str)); } -#line 6060 "util/configparser.c" break; case 483: -#line 2399 "./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) { +#line 2384 "util/configparser.y" + { + OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0) + yyerror("number expected"); + else { + cfg_parser->cfg->ip_ratelimit_slabs = atoi((yyvsp[(2) - (2)].str)); + if(!is_pow2(cfg_parser->cfg->ip_ratelimit_slabs)) + yyerror("must be a power of 2"); + } + free((yyvsp[(2) - (2)].str)); + } + break; + + case 484: +#line 2397 "util/configparser.y" + { + OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0) yyerror("number expected"); - free((yyvsp[-1].str)); - free((yyvsp[0].str)); + else { + cfg_parser->cfg->ratelimit_slabs = atoi((yyvsp[(2) - (2)].str)); + if(!is_pow2(cfg_parser->cfg->ratelimit_slabs)) + yyerror("must be a power of 2"); + } + free((yyvsp[(2) - (2)].str)); + } + break; + + case 485: +#line 2410 "util/configparser.y" + { + OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))); + if(atoi((yyvsp[(3) - (3)].str)) == 0 && strcmp((yyvsp[(3) - (3)].str), "0") != 0) { + yyerror("number expected"); + free((yyvsp[(2) - (3)].str)); + free((yyvsp[(3) - (3)].str)); } else { if(!cfg_str2list_insert(&cfg_parser->cfg-> - ratelimit_for_domain, (yyvsp[-1].str), (yyvsp[0].str))) + ratelimit_for_domain, (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))) fatal_exit("out of memory adding " "ratelimit-for-domain"); } } -#line 6078 "util/configparser.c" break; - case 484: -#line 2414 "./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) { + case 486: +#line 2425 "util/configparser.y" + { + OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))); + if(atoi((yyvsp[(3) - (3)].str)) == 0 && strcmp((yyvsp[(3) - (3)].str), "0") != 0) { yyerror("number expected"); - free((yyvsp[-1].str)); - free((yyvsp[0].str)); + free((yyvsp[(2) - (3)].str)); + free((yyvsp[(3) - (3)].str)); } else { if(!cfg_str2list_insert(&cfg_parser->cfg-> - ratelimit_below_domain, (yyvsp[-1].str), (yyvsp[0].str))) + ratelimit_below_domain, (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))) fatal_exit("out of memory adding " "ratelimit-below-domain"); } } -#line 6096 "util/configparser.c" - break; - - case 485: -#line 2429 "./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 6108 "util/configparser.c" - break; - - case 486: -#line 2438 "./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 6120 "util/configparser.c" break; case 487: -#line 2447 "./util/configparser.y" - { - OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); - free((yyvsp[0].str)); +#line 2440 "util/configparser.y" + { + OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 6129 "util/configparser.c" break; case 488: -#line 2453 "./util/configparser.y" - { - OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) <= 0) +#line 2449 "util/configparser.y" + { + OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) yyerror("number expected"); - else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 6141 "util/configparser.c" break; case 489: -#line 2462 "./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 2458 "util/configparser.y" + { + OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); + free((yyvsp[(2) - (2)].str)); } -#line 6153 "util/configparser.c" break; case 490: -#line 2471 "./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 2464 "util/configparser.y" + { + OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) <= 0) + yyerror("number expected"); + else cfg_parser->cfg->fast_server_num = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 6166 "util/configparser.c" break; case 491: -#line 2481 "./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 2473 "util/configparser.y" + { + OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 6179 "util/configparser.c" break; case 492: -#line 2491 "./util/configparser.y" - { - OUTYY(("P(server_pad_responses:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) +#line 2482 "util/configparser.y" + { + OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->pad_responses = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->qname_minimisation = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 6192 "util/configparser.c" break; case 493: -#line 2501 "./util/configparser.y" - { - OUTYY(("P(server_pad_responses_block_size:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("number expected"); - else cfg_parser->cfg->pad_responses_block_size = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); +#line 2492 "util/configparser.y" + { + OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->qname_minimisation_strict = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 6204 "util/configparser.c" break; case 494: -#line 2510 "./util/configparser.y" - { - OUTYY(("P(server_pad_queries:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) +#line 2502 "util/configparser.y" + { + OUTYY(("P(server_pad_responses:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->pad_queries = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->pad_responses = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 6217 "util/configparser.c" break; case 495: -#line 2520 "./util/configparser.y" - { - OUTYY(("P(server_pad_queries_block_size:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) +#line 2512 "util/configparser.y" + { + OUTYY(("P(server_pad_responses_block_size:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0) yyerror("number expected"); - else cfg_parser->cfg->pad_queries_block_size = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); + else cfg_parser->cfg->pad_responses_block_size = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 6229 "util/configparser.c" break; case 496: -#line 2529 "./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) +#line 2521 "util/configparser.y" + { + OUTYY(("P(server_pad_queries:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->ipsecmod_enabled = (strcmp((yyvsp[0].str), "yes")==0); - #else - OUTYY(("P(Compiled without IPsec module, ignoring)\n")); - #endif - free((yyvsp[0].str)); + else cfg_parser->cfg->pad_queries = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 6245 "util/configparser.c" break; case 497: -#line 2542 "./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 2531 "util/configparser.y" + { + OUTYY(("P(server_pad_queries_block_size:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0) + yyerror("number expected"); + else cfg_parser->cfg->pad_queries_block_size = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 6261 "util/configparser.c" break; case 498: -#line 2555 "./util/configparser.y" - { +#line 2540 "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); + OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->ipsecmod_enabled = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); #else OUTYY(("P(Compiled without IPsec module, ignoring)\n")); - free((yyvsp[0].str)); #endif + free((yyvsp[(2) - (2)].str)); } -#line 6276 "util/configparser.c" break; case 499: -#line 2567 "./util/configparser.y" - { +#line 2553 "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)); + OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->ipsecmod_ignore_bogus = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); #else OUTYY(("P(Compiled without IPsec module, ignoring)\n")); - free((yyvsp[0].str)); #endif + free((yyvsp[(2) - (2)].str)); } -#line 6293 "util/configparser.c" break; case 500: -#line 2581 "./util/configparser.y" - { +#line 2566 "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"); + OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[(2) - (2)].str))); + free(cfg_parser->cfg->ipsecmod_hook); + cfg_parser->cfg->ipsecmod_hook = (yyvsp[(2) - (2)].str); #else OUTYY(("P(Compiled without IPsec module, ignoring)\n")); - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); #endif } -#line 6308 "util/configparser.c" break; case 501: -#line 2593 "./util/configparser.y" - { +#line 2578 "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)); + OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->ipsecmod_max_ttl = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); #else OUTYY(("P(Compiled without IPsec module, ignoring)\n")); - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); #endif } -#line 6325 "util/configparser.c" break; case 502: -#line 2607 "./util/configparser.y" - { - OUTYY(("P(server_edns_client_string:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); - if(!cfg_str2list_insert( - &cfg_parser->cfg->edns_client_strings, (yyvsp[-1].str), (yyvsp[0].str))) - fatal_exit("out of memory adding " - "edns-client-string"); +#line 2592 "util/configparser.y" + { + #ifdef USE_IPSECMOD + OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_strlist_insert(&cfg_parser->cfg->ipsecmod_whitelist, (yyvsp[(2) - (2)].str))) + yyerror("out of memory"); + #else + OUTYY(("P(Compiled without IPsec module, ignoring)\n")); + free((yyvsp[(2) - (2)].str)); + #endif } -#line 6337 "util/configparser.c" break; case 503: -#line 2616 "./util/configparser.y" - { - OUTYY(("P(edns_client_string_opcode:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("option code expected"); - else if(atoi((yyvsp[0].str)) > 65535 || atoi((yyvsp[0].str)) < 0) - yyerror("option code must be in interval [0, 65535]"); - else cfg_parser->cfg->edns_client_string_opcode = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - +#line 2604 "util/configparser.y" + { + #ifdef USE_IPSECMOD + OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->ipsecmod_strict = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); + #else + OUTYY(("P(Compiled without IPsec module, ignoring)\n")); + free((yyvsp[(2) - (2)].str)); + #endif } -#line 6352 "util/configparser.c" break; case 504: -#line 2628 "./util/configparser.y" - { - OUTYY(("P(name:%s)\n", (yyvsp[0].str))); +#line 2618 "util/configparser.y" + { + OUTYY(("P(server_edns_client_string:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))); + if(!cfg_str2list_insert( + &cfg_parser->cfg->edns_client_strings, (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))) + fatal_exit("out of memory adding " + "edns-client-string"); + } + break; + + case 505: +#line 2627 "util/configparser.y" + { + OUTYY(("P(edns_client_string_opcode:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + yyerror("option code expected"); + else if(atoi((yyvsp[(2) - (2)].str)) > 65535 || atoi((yyvsp[(2) - (2)].str)) < 0) + yyerror("option code must be in interval [0, 65535]"); + else cfg_parser->cfg->edns_client_string_opcode = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); + + } + break; + + case 506: +#line 2639 "util/configparser.y" + { + OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].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); + cfg_parser->cfg->stubs->name = (yyvsp[(2) - (2)].str); } -#line 6365 "util/configparser.c" - break; - - case 505: -#line 2638 "./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 6375 "util/configparser.c" - break; - - case 506: -#line 2645 "./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 6385 "util/configparser.c" break; case 507: -#line 2652 "./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 2649 "util/configparser.y" + { + OUTYY(("P(stub-host:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[(2) - (2)].str))) + yyerror("out of memory"); } -#line 6397 "util/configparser.c" break; case 508: -#line 2661 "./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 2656 "util/configparser.y" + { + OUTYY(("P(stub-addr:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[(2) - (2)].str))) + yyerror("out of memory"); } -#line 6409 "util/configparser.c" break; case 509: -#line 2670 "./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) +#line 2663 "util/configparser.y" + { + OUTYY(("P(stub-first:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->stubs->ssl_upstream = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 6422 "util/configparser.c" break; case 510: -#line 2680 "./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) +#line 2672 "util/configparser.y" + { + OUTYY(("P(stub-no-cache:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->stubs->isprime = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 6435 "util/configparser.c" break; case 511: -#line 2690 "./util/configparser.y" - { - OUTYY(("P(name:%s)\n", (yyvsp[0].str))); +#line 2681 "util/configparser.y" + { + OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->stubs->ssl_upstream = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); + } + break; + + case 512: +#line 2691 "util/configparser.y" + { + OUTYY(("P(stub-prime:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->stubs->isprime = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); + } + break; + + case 513: +#line 2701 "util/configparser.y" + { + OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].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); + cfg_parser->cfg->forwards->name = (yyvsp[(2) - (2)].str); } -#line 6448 "util/configparser.c" - break; - - case 512: -#line 2700 "./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 6458 "util/configparser.c" - break; - - case 513: -#line 2707 "./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 6468 "util/configparser.c" break; case 514: -#line 2714 "./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 2711 "util/configparser.y" + { + OUTYY(("P(forward-host:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[(2) - (2)].str))) + yyerror("out of memory"); } -#line 6480 "util/configparser.c" break; case 515: -#line 2723 "./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 2718 "util/configparser.y" + { + OUTYY(("P(forward-addr:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[(2) - (2)].str))) + yyerror("out of memory"); } -#line 6492 "util/configparser.c" break; case 516: -#line 2732 "./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) +#line 2725 "util/configparser.y" + { + OUTYY(("P(forward-first:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->forwards->ssl_upstream = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 6505 "util/configparser.c" break; case 517: -#line 2742 "./util/configparser.y" - { - OUTYY(("P(name:%s)\n", (yyvsp[0].str))); +#line 2734 "util/configparser.y" + { + OUTYY(("P(forward-no-cache:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); + } + break; + + case 518: +#line 2743 "util/configparser.y" + { + OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->forwards->ssl_upstream = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); + } + break; + + case 519: +#line 2753 "util/configparser.y" + { + OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].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); + cfg_parser->cfg->auths->name = (yyvsp[(2) - (2)].str); } -#line 6518 "util/configparser.c" - break; - - case 518: -#line 2752 "./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 6528 "util/configparser.c" - break; - - case 519: -#line 2759 "./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 6538 "util/configparser.c" break; case 520: -#line 2766 "./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 2763 "util/configparser.y" + { + OUTYY(("P(zonefile:%s)\n", (yyvsp[(2) - (2)].str))); + free(cfg_parser->cfg->auths->zonefile); + cfg_parser->cfg->auths->zonefile = (yyvsp[(2) - (2)].str); } -#line 6548 "util/configparser.c" break; case 521: -#line 2773 "./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))) +#line 2770 "util/configparser.y" + { + OUTYY(("P(master:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[(2) - (2)].str))) yyerror("out of memory"); } -#line 6559 "util/configparser.c" break; case 522: -#line 2781 "./util/configparser.y" - { - OUTYY(("P(zonemd-reject-absence:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->auths->zonemd_reject_absence = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); +#line 2777 "util/configparser.y" + { + OUTYY(("P(url:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[(2) - (2)].str))) + yyerror("out of memory"); } -#line 6572 "util/configparser.c" break; case 523: -#line 2791 "./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 2784 "util/configparser.y" + { + OUTYY(("P(allow-notify:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify, + (yyvsp[(2) - (2)].str))) + yyerror("out of memory"); } -#line 6585 "util/configparser.c" break; case 524: -#line 2801 "./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) +#line 2792 "util/configparser.y" + { + OUTYY(("P(zonemd-reject-absence:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->auths->for_upstream = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->auths->zonemd_reject_absence = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 6598 "util/configparser.c" break; case 525: -#line 2811 "./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) +#line 2802 "util/configparser.y" + { + OUTYY(("P(for-downstream:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->auths->fallback_enabled = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->auths->for_downstream = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 6611 "util/configparser.c" break; case 526: -#line 2821 "./util/configparser.y" - { - OUTYY(("P(name:%s)\n", (yyvsp[0].str))); +#line 2812 "util/configparser.y" + { + OUTYY(("P(for-upstream:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->auths->for_upstream = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); + } + break; + + case 527: +#line 2822 "util/configparser.y" + { + OUTYY(("P(fallback-enabled:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->auths->fallback_enabled = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); + } + break; + + case 528: +#line 2832 "util/configparser.y" + { + OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].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); + cfg_parser->cfg->views->name = (yyvsp[(2) - (2)].str); } -#line 6624 "util/configparser.c" break; - case 527: -#line 2831 "./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), "always_nodata")!=0 - && strcmp((yyvsp[0].str), "always_deny")!=0 - && strcmp((yyvsp[0].str), "always_null")!=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) { + case 529: +#line 2842 "util/configparser.y" + { + OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))); + if(strcmp((yyvsp[(3) - (3)].str), "static")!=0 && strcmp((yyvsp[(3) - (3)].str), "deny")!=0 && + strcmp((yyvsp[(3) - (3)].str), "refuse")!=0 && strcmp((yyvsp[(3) - (3)].str), "redirect")!=0 && + strcmp((yyvsp[(3) - (3)].str), "transparent")!=0 && strcmp((yyvsp[(3) - (3)].str), "nodefault")!=0 + && strcmp((yyvsp[(3) - (3)].str), "typetransparent")!=0 + && strcmp((yyvsp[(3) - (3)].str), "always_transparent")!=0 + && strcmp((yyvsp[(3) - (3)].str), "always_refuse")!=0 + && strcmp((yyvsp[(3) - (3)].str), "always_nxdomain")!=0 + && strcmp((yyvsp[(3) - (3)].str), "always_nodata")!=0 + && strcmp((yyvsp[(3) - (3)].str), "always_deny")!=0 + && strcmp((yyvsp[(3) - (3)].str), "always_null")!=0 + && strcmp((yyvsp[(3) - (3)].str), "noview")!=0 + && strcmp((yyvsp[(3) - (3)].str), "inform")!=0 && strcmp((yyvsp[(3) - (3)].str), "inform_deny")!=0 + && strcmp((yyvsp[(3) - (3)].str), "inform_redirect") != 0 + && strcmp((yyvsp[(3) - (3)].str), "ipset") != 0) { yyerror("local-zone type: expected static, deny, " "refuse, redirect, transparent, " "typetransparent, inform, inform_deny, " @@ -6648,72 +6198,68 @@ yyreduce: "always_refuse, always_nxdomain, " "always_nodata, always_deny, always_null, " "noview, nodefault or ipset"); - free((yyvsp[-1].str)); - free((yyvsp[0].str)); - } else if(strcmp((yyvsp[0].str), "nodefault")==0) { + free((yyvsp[(2) - (3)].str)); + free((yyvsp[(3) - (3)].str)); + } else if(strcmp((yyvsp[(3) - (3)].str), "nodefault")==0) { if(!cfg_strlist_insert(&cfg_parser->cfg->views-> - local_zones_nodefault, (yyvsp[-1].str))) + local_zones_nodefault, (yyvsp[(2) - (3)].str))) fatal_exit("out of memory adding local-zone"); - free((yyvsp[0].str)); + free((yyvsp[(3) - (3)].str)); #ifdef USE_IPSET - } else if(strcmp((yyvsp[0].str), "ipset")==0) { + } else if(strcmp((yyvsp[(3) - (3)].str), "ipset")==0) { if(!cfg_strlist_insert(&cfg_parser->cfg->views-> - local_zones_ipset, (yyvsp[-1].str))) + local_zones_ipset, (yyvsp[(2) - (3)].str))) fatal_exit("out of memory adding local-zone"); - free((yyvsp[0].str)); + free((yyvsp[(3) - (3)].str)); #endif } else { if(!cfg_str2list_insert( &cfg_parser->cfg->views->local_zones, - (yyvsp[-1].str), (yyvsp[0].str))) + (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))) fatal_exit("out of memory adding local-zone"); } } -#line 6673 "util/configparser.c" - break; - - case 528: -#line 2877 "./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 6686 "util/configparser.c" - break; - - case 529: -#line 2887 "./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 6697 "util/configparser.c" break; case 530: -#line 2895 "./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 2888 "util/configparser.y" + { + OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))); + validate_respip_action((yyvsp[(3) - (3)].str)); + if(!cfg_str2list_insert( + &cfg_parser->cfg->views->respip_actions, (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))) + fatal_exit("out of memory adding per-view " + "response-ip action"); } -#line 6708 "util/configparser.c" break; case 531: -#line 2903 "./util/configparser.y" - { +#line 2898 "util/configparser.y" + { + OUTYY(("P(view_response_ip_data:%s)\n", (yyvsp[(2) - (3)].str))); + if(!cfg_str2list_insert( + &cfg_parser->cfg->views->respip_data, (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))) + fatal_exit("out of memory adding response-ip-data"); + } + break; + + case 532: +#line 2906 "util/configparser.y" + { + OUTYY(("P(view_local_data:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[(2) - (2)].str))) { + fatal_exit("out of memory adding local-data"); + } + } + break; + + case 533: +#line 2914 "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)); + OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[(2) - (2)].str))); + ptr = cfg_ptr_reverse((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); if(ptr) { if(!cfg_strlist_insert(&cfg_parser->cfg->views-> local_data, ptr)) @@ -6722,785 +6268,749 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 6726 "util/configparser.c" break; - case 532: -#line 2918 "./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) + case 534: +#line 2929 "util/configparser.y" + { + OUTYY(("P(view-first:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 6738 "util/configparser.c" break; - case 533: -#line 2927 "./util/configparser.y" - { + case 535: +#line 2938 "util/configparser.y" + { OUTYY(("\nP(remote-control:)\n")); } -#line 6746 "util/configparser.c" - break; - - case 544: -#line 2938 "./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 6759 "util/configparser.c" - break; - - case 545: -#line 2948 "./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 6771 "util/configparser.c" break; case 546: -#line 2957 "./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 2949 "util/configparser.y" + { + OUTYY(("P(control_enable:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->remote_control_enable = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 6781 "util/configparser.c" break; case 547: -#line 2964 "./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 2959 "util/configparser.y" + { + OUTYY(("P(control_port:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0) + yyerror("control port number expected"); + else cfg_parser->cfg->control_port = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 6791 "util/configparser.c" break; case 548: -#line 2971 "./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 2968 "util/configparser.y" + { + OUTYY(("P(control_interface:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, (yyvsp[(2) - (2)].str))) + yyerror("out of memory"); } -#line 6801 "util/configparser.c" break; case 549: -#line 2978 "./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 2975 "util/configparser.y" + { + OUTYY(("P(control_use_cert:%s)\n", (yyvsp[(2) - (2)].str))); + cfg_parser->cfg->control_use_cert = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 6811 "util/configparser.c" break; case 550: -#line 2985 "./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 2982 "util/configparser.y" + { + OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[(2) - (2)].str))); + free(cfg_parser->cfg->server_key_file); + cfg_parser->cfg->server_key_file = (yyvsp[(2) - (2)].str); } -#line 6821 "util/configparser.c" break; case 551: -#line 2992 "./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 2989 "util/configparser.y" + { + OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[(2) - (2)].str))); + free(cfg_parser->cfg->server_cert_file); + cfg_parser->cfg->server_cert_file = (yyvsp[(2) - (2)].str); } -#line 6831 "util/configparser.c" break; case 552: -#line 2999 "./util/configparser.y" - { +#line 2996 "util/configparser.y" + { + OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[(2) - (2)].str))); + free(cfg_parser->cfg->control_key_file); + cfg_parser->cfg->control_key_file = (yyvsp[(2) - (2)].str); + } + break; + + case 553: +#line 3003 "util/configparser.y" + { + OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[(2) - (2)].str))); + free(cfg_parser->cfg->control_cert_file); + cfg_parser->cfg->control_cert_file = (yyvsp[(2) - (2)].str); + } + break; + + case 554: +#line 3010 "util/configparser.y" + { OUTYY(("\nP(dnstap:)\n")); } -#line 6839 "util/configparser.c" - break; - - case 574: -#line 3019 "./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 6851 "util/configparser.c" - break; - - case 575: -#line 3028 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_bidirectional:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->dnstap_bidirectional = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 6864 "util/configparser.c" break; case 576: -#line 3038 "./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 3030 "util/configparser.y" + { + OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 6874 "util/configparser.c" break; case 577: -#line 3045 "./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 3039 "util/configparser.y" + { + OUTYY(("P(dt_dnstap_bidirectional:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap_bidirectional = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 6884 "util/configparser.c" break; case 578: -#line 3052 "./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 3049 "util/configparser.y" + { + OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[(2) - (2)].str))); + free(cfg_parser->cfg->dnstap_socket_path); + cfg_parser->cfg->dnstap_socket_path = (yyvsp[(2) - (2)].str); } -#line 6896 "util/configparser.c" break; case 579: -#line 3061 "./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 3056 "util/configparser.y" + { + OUTYY(("P(dt_dnstap_ip:%s)\n", (yyvsp[(2) - (2)].str))); + free(cfg_parser->cfg->dnstap_ip); + cfg_parser->cfg->dnstap_ip = (yyvsp[(2) - (2)].str); } -#line 6906 "util/configparser.c" break; case 580: -#line 3068 "./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 3063 "util/configparser.y" + { + OUTYY(("P(dt_dnstap_tls:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 6916 "util/configparser.c" break; case 581: -#line 3075 "./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 3072 "util/configparser.y" + { + OUTYY(("P(dt_dnstap_tls_server_name:%s)\n", (yyvsp[(2) - (2)].str))); + free(cfg_parser->cfg->dnstap_tls_server_name); + cfg_parser->cfg->dnstap_tls_server_name = (yyvsp[(2) - (2)].str); } -#line 6926 "util/configparser.c" break; case 582: -#line 3082 "./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 3079 "util/configparser.y" + { + OUTYY(("P(dt_dnstap_tls_cert_bundle:%s)\n", (yyvsp[(2) - (2)].str))); + free(cfg_parser->cfg->dnstap_tls_cert_bundle); + cfg_parser->cfg->dnstap_tls_cert_bundle = (yyvsp[(2) - (2)].str); } -#line 6936 "util/configparser.c" break; case 583: -#line 3089 "./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 3086 "util/configparser.y" + { + OUTYY(("P(dt_dnstap_tls_client_key_file:%s)\n", (yyvsp[(2) - (2)].str))); + free(cfg_parser->cfg->dnstap_tls_client_key_file); + cfg_parser->cfg->dnstap_tls_client_key_file = (yyvsp[(2) - (2)].str); } -#line 6948 "util/configparser.c" break; case 584: -#line 3098 "./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 3093 "util/configparser.y" + { + OUTYY(("P(dt_dnstap_tls_client_cert_file:%s)\n", (yyvsp[(2) - (2)].str))); + free(cfg_parser->cfg->dnstap_tls_client_cert_file); + cfg_parser->cfg->dnstap_tls_client_cert_file = (yyvsp[(2) - (2)].str); } -#line 6960 "util/configparser.c" break; case 585: -#line 3107 "./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 3100 "util/configparser.y" + { + OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 6970 "util/configparser.c" break; case 586: -#line 3114 "./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 3109 "util/configparser.y" + { + OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 6980 "util/configparser.c" break; case 587: -#line 3121 "./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 3118 "util/configparser.y" + { + OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[(2) - (2)].str))); + free(cfg_parser->cfg->dnstap_identity); + cfg_parser->cfg->dnstap_identity = (yyvsp[(2) - (2)].str); } -#line 6993 "util/configparser.c" break; case 588: -#line 3131 "./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 3125 "util/configparser.y" + { + OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[(2) - (2)].str))); + free(cfg_parser->cfg->dnstap_version); + cfg_parser->cfg->dnstap_version = (yyvsp[(2) - (2)].str); } -#line 7006 "util/configparser.c" break; case 589: -#line 3141 "./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) +#line 3132 "util/configparser.y" + { + OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->dnstap_log_client_query_messages = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->dnstap_log_resolver_query_messages = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 7019 "util/configparser.c" break; case 590: -#line 3151 "./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) +#line 3142 "util/configparser.y" + { + OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->dnstap_log_client_response_messages = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->dnstap_log_resolver_response_messages = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 7032 "util/configparser.c" break; case 591: -#line 3161 "./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) +#line 3152 "util/configparser.y" + { + OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->dnstap_log_forwarder_query_messages = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->dnstap_log_client_query_messages = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 7045 "util/configparser.c" break; case 592: -#line 3171 "./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) +#line 3162 "util/configparser.y" + { + OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->dnstap_log_forwarder_response_messages = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); + else cfg_parser->cfg->dnstap_log_client_response_messages = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 7058 "util/configparser.c" break; case 593: -#line 3181 "./util/configparser.y" - { +#line 3172 "util/configparser.y" + { + OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap_log_forwarder_query_messages = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); + } + break; + + case 594: +#line 3182 "util/configparser.y" + { + OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap_log_forwarder_response_messages = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); + } + break; + + case 595: +#line 3192 "util/configparser.y" + { OUTYY(("\nP(python:)\n")); } -#line 7066 "util/configparser.c" break; - case 597: -#line 3190 "./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))) + case 599: +#line 3201 "util/configparser.y" + { + OUTYY(("P(python-script:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, (yyvsp[(2) - (2)].str))) yyerror("out of memory"); } -#line 7076 "util/configparser.c" break; - case 598: -#line 3196 "./util/configparser.y" - { + case 600: +#line 3207 "util/configparser.y" + { OUTYY(("\nP(dynlib:)\n")); } -#line 7084 "util/configparser.c" - break; - - case 602: -#line 3205 "./util/configparser.y" - { - OUTYY(("P(dynlib-file:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 7094 "util/configparser.c" - break; - - case 603: -#line 3211 "./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 7107 "util/configparser.c" break; case 604: -#line 3221 "./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 3216 "util/configparser.y" + { + OUTYY(("P(dynlib-file:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, (yyvsp[(2) - (2)].str))) + yyerror("out of memory"); } -#line 7117 "util/configparser.c" break; case 605: -#line 3228 "./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 3222 "util/configparser.y" + { + OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[(2) - (2)].str))); + if (strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->disable_dnssec_lame_check = + (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 7129 "util/configparser.c" break; case 606: -#line 3237 "./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 3232 "util/configparser.y" + { + OUTYY(("P(server_log_identity:%s)\n", (yyvsp[(2) - (2)].str))); + free(cfg_parser->cfg->log_identity); + cfg_parser->cfg->log_identity = (yyvsp[(2) - (2)].str); } -#line 7140 "util/configparser.c" break; case 607: -#line 3245 "./util/configparser.y" - { +#line 3239 "util/configparser.y" + { + OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))); + validate_respip_action((yyvsp[(3) - (3)].str)); + if(!cfg_str2list_insert(&cfg_parser->cfg->respip_actions, + (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))) + fatal_exit("out of memory adding response-ip"); + } + break; + + case 608: +#line 3248 "util/configparser.y" + { + OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[(2) - (3)].str))); + if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data, + (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))) + fatal_exit("out of memory adding response-ip-data"); + } + break; + + case 609: +#line 3256 "util/configparser.y" + { OUTYY(("\nP(dnscrypt:)\n")); } -#line 7148 "util/configparser.c" - break; - - case 620: -#line 3261 "./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 7160 "util/configparser.c" - break; - - case 621: -#line 3271 "./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 7172 "util/configparser.c" break; case 622: -#line 3280 "./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 3272 "util/configparser.y" + { + OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + free((yyvsp[(2) - (2)].str)); } -#line 7182 "util/configparser.c" break; case 623: -#line 3287 "./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 3282 "util/configparser.y" + { + OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0) + yyerror("port number expected"); + else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[(2) - (2)].str)); + free((yyvsp[(2) - (2)].str)); } -#line 7194 "util/configparser.c" break; case 624: -#line 3296 "./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 3291 "util/configparser.y" + { + OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", (yyvsp[(2) - (2)].str))); + free(cfg_parser->cfg->dnscrypt_provider); + cfg_parser->cfg->dnscrypt_provider = (yyvsp[(2) - (2)].str); } -#line 7204 "util/configparser.c" break; case 625: -#line 3303 "./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 3298 "util/configparser.y" + { + OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[(2) - (2)].str))); + if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[(2) - (2)].str))) + log_warn("dnscrypt-provider-cert %s is a duplicate", (yyvsp[(2) - (2)].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[(2) - (2)].str))) + fatal_exit("out of memory adding dnscrypt-provider-cert"); } -#line 7216 "util/configparser.c" break; case 626: -#line 3312 "./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 7227 "util/configparser.c" +#line 3307 "util/configparser.y" + { + OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, (yyvsp[(2) - (2)].str))) + fatal_exit("out of memory adding dnscrypt-provider-cert-rotated"); + } break; case 627: -#line 3320 "./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 7243 "util/configparser.c" +#line 3314 "util/configparser.y" + { + OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[(2) - (2)].str))); + if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[(2) - (2)].str))) + log_warn("dnscrypt-secret-key: %s is a duplicate", (yyvsp[(2) - (2)].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[(2) - (2)].str))) + fatal_exit("out of memory adding dnscrypt-secret-key"); + } break; case 628: -#line 3333 "./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)) +#line 3323 "util/configparser.y" + { + OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->dnscrypt_shared_secret_cache_size)) yyerror("memory size expected"); - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 7254 "util/configparser.c" break; case 629: -#line 3341 "./util/configparser.y" - { - OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) +#line 3331 "util/configparser.y" + { + OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].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)) + cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs = atoi((yyvsp[(2) - (2)].str)); + if(!is_pow2(cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs)) yyerror("must be a power of 2"); } - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); } -#line 7270 "util/configparser.c" break; case 630: -#line 3354 "./util/configparser.y" - { +#line 3344 "util/configparser.y" + { + OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", (yyvsp[(2) - (2)].str))); + if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->dnscrypt_nonce_cache_size)) + yyerror("memory size expected"); + free((yyvsp[(2) - (2)].str)); + } + break; + + case 631: +#line 3352 "util/configparser.y" + { + OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0) + yyerror("number expected"); + else { + cfg_parser->cfg->dnscrypt_nonce_cache_slabs = atoi((yyvsp[(2) - (2)].str)); + if(!is_pow2(cfg_parser->cfg->dnscrypt_nonce_cache_slabs)) + yyerror("must be a power of 2"); + } + free((yyvsp[(2) - (2)].str)); + } + break; + + case 632: +#line 3365 "util/configparser.y" + { OUTYY(("\nP(cachedb:)\n")); } -#line 7278 "util/configparser.c" - break; - - case 639: -#line 3365 "./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 7293 "util/configparser.c" - break; - - case 640: -#line 3377 "./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 7308 "util/configparser.c" break; case 641: -#line 3389 "./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); +#line 3376 "util/configparser.y" + { + #ifdef USE_CACHEDB + OUTYY(("P(backend:%s)\n", (yyvsp[(2) - (2)].str))); + free(cfg_parser->cfg->cachedb_backend); + cfg_parser->cfg->cachedb_backend = (yyvsp[(2) - (2)].str); #else - OUTYY(("P(Compiled without cachedb or redis, ignoring)\n")); - free((yyvsp[0].str)); + OUTYY(("P(Compiled without cachedb, ignoring)\n")); + free((yyvsp[(2) - (2)].str)); #endif } -#line 7323 "util/configparser.c" break; case 642: -#line 3401 "./util/configparser.y" - { +#line 3388 "util/configparser.y" + { + #ifdef USE_CACHEDB + OUTYY(("P(secret-seed:%s)\n", (yyvsp[(2) - (2)].str))); + free(cfg_parser->cfg->cachedb_secret); + cfg_parser->cfg->cachedb_secret = (yyvsp[(2) - (2)].str); + #else + OUTYY(("P(Compiled without cachedb, ignoring)\n")); + free((yyvsp[(2) - (2)].str)); + #endif + } + break; + + case 643: +#line 3400 "util/configparser.y" + { + #if defined(USE_CACHEDB) && defined(USE_REDIS) + OUTYY(("P(redis_server_host:%s)\n", (yyvsp[(2) - (2)].str))); + free(cfg_parser->cfg->redis_server_host); + cfg_parser->cfg->redis_server_host = (yyvsp[(2) - (2)].str); + #else + OUTYY(("P(Compiled without cachedb or redis, ignoring)\n")); + free((yyvsp[(2) - (2)].str)); + #endif + } + break; + + case 644: +#line 3412 "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)); + OUTYY(("P(redis_server_port:%s)\n", (yyvsp[(2) - (2)].str))); + port = atoi((yyvsp[(2) - (2)].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)); + free((yyvsp[(2) - (2)].str)); } -#line 7341 "util/configparser.c" - break; - - case 643: -#line 3416 "./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 7357 "util/configparser.c" - break; - - case 644: -#line 3429 "./util/configparser.y" - { - #if defined(USE_CACHEDB) && defined(USE_REDIS) - OUTYY(("P(redis_expire_records:%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->redis_expire_records = (strcmp((yyvsp[0].str), "yes")==0); - #else - OUTYY(("P(Compiled without cachedb or redis, ignoring)\n")); - #endif - free((yyvsp[0].str)); - } -#line 7373 "util/configparser.c" break; case 645: -#line 3442 "./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 3427 "util/configparser.y" + { + #if defined(USE_CACHEDB) && defined(USE_REDIS) + OUTYY(("P(redis_timeout:%s)\n", (yyvsp[(2) - (2)].str))); + if(atoi((yyvsp[(2) - (2)].str)) == 0) + yyerror("redis timeout value expected"); + else cfg_parser->cfg->redis_timeout = atoi((yyvsp[(2) - (2)].str)); + #else + OUTYY(("P(Compiled without cachedb or redis, ignoring)\n")); + #endif + free((yyvsp[(2) - (2)].str)); } -#line 7387 "util/configparser.c" break; case 646: -#line 3453 "./util/configparser.y" - { - OUTYY(("\nP(ipset:)\n")); - } -#line 7395 "util/configparser.c" +#line 3440 "util/configparser.y" + { + #if defined(USE_CACHEDB) && defined(USE_REDIS) + OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[(2) - (2)].str))); + if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->redis_expire_records = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + #else + OUTYY(("P(Compiled without cachedb or redis, ignoring)\n")); + #endif + free((yyvsp[(2) - (2)].str)); + } break; - case 651: -#line 3462 "./util/configparser.y" - { + case 647: +#line 3453 "util/configparser.y" + { + OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))); + if (atoi((yyvsp[(3) - (3)].str)) < 0) + yyerror("positive number expected"); + else { + if(!cfg_str2list_insert(&cfg_parser->cfg->tcp_connection_limits, (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))) + fatal_exit("out of memory adding tcp connection limit"); + } + } + break; + + case 648: +#line 3464 "util/configparser.y" + { + OUTYY(("\nP(ipset:)\n")); + } + break; + + case 653: +#line 3473 "util/configparser.y" + { #ifdef USE_IPSET - OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); + OUTYY(("P(name-v4:%s)\n", (yyvsp[(2) - (2)].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); + cfg_parser->cfg->ipset_name_v4 = (yyvsp[(2) - (2)].str); #else OUTYY(("P(Compiled without ipset, ignoring)\n")); - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); #endif } -#line 7413 "util/configparser.c" break; - case 652: -#line 3477 "./util/configparser.y" - { + case 654: +#line 3488 "util/configparser.y" + { #ifdef USE_IPSET - OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); + OUTYY(("P(name-v6:%s)\n", (yyvsp[(2) - (2)].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); + cfg_parser->cfg->ipset_name_v6 = (yyvsp[(2) - (2)].str); #else OUTYY(("P(Compiled without ipset, ignoring)\n")); - free((yyvsp[0].str)); + free((yyvsp[(2) - (2)].str)); #endif } -#line 7431 "util/configparser.c" break; -#line 7435 "util/configparser.c" - +/* Line 1267 of yacc.c. */ +#line 6921 "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 ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc); + 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 + + /* 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; -/*--------------------------------------. -| yyerrlab -- here on detecting error. | -`--------------------------------------*/ +/*------------------------------------. +| 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 ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar); /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { ++yynerrs; +#if ! YYERROR_VERBOSE yyerror (YY_("syntax error")); +#else + { + YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); + if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) + { + YYSIZE_T yyalloc = 2 * yysize; + if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) + yyalloc = YYSTACK_ALLOC_MAXIMUM; + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yyalloc); + if (yymsg) + yymsg_alloc = yyalloc; + else + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + } + } + + if (0 < yysize && yysize <= yymsg_alloc) + { + (void) yysyntax_error (yymsg, yystate, yychar); + yyerror (yymsg); + } + else + { + yyerror (YY_("syntax error")); + if (yysize != 0) + goto yyexhaustedlab; + } + } +#endif } + + if (yyerrstatus == 3) { - /* If just tried and failed to reuse lookahead token after an - error, discard it. */ + /* If just tried and failed to reuse look-ahead token after an + error, discard it. */ if (yychar <= YYEOF) - { - /* Return failure if at end of input. */ - if (yychar == YYEOF) - YYABORT; - } + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } else - { - yydestruct ("Error: discarding", - yytoken, &yylval); - yychar = YYEMPTY; - } + { + yydestruct ("Error: discarding", + yytoken, &yylval); + yychar = YYEMPTY; + } } - /* Else will try to reuse lookahead token after shifting the error + /* Else will try to reuse look-ahead token after shifting the error token. */ goto yyerrlab1; @@ -7509,12 +7019,14 @@ 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; - /* Do not reclaim the symbols of the rule whose action triggered + /* 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 which action triggered this YYERROR. */ YYPOPSTACK (yylen); yylen = 0; @@ -7527,42 +7039,42 @@ yyerrorlab: | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: - yyerrstatus = 3; /* Each real token shifted decrements this. */ + yyerrstatus = 3; /* Each real token shifted decrements this. */ - /* Pop stack until we find a state that shifts the error token. */ for (;;) { yyn = yypact[yystate]; - if (!yypact_value_is_default (yyn)) - { - yyn += YYSYMBOL_YYerror; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror) - { - yyn = yytable[yyn]; - if (0 < yyn) - break; - } - } + if (yyn != YYPACT_NINF) + { + 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; + YYABORT; yydestruct ("Error: popping", - YY_ACCESSING_SYMBOL (yystate), yyvsp); + yystos[yystate], yyvsp); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); } - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + if (yyn == YYFINAL) + YYACCEPT; + *++yyvsp = yylval; - YY_IGNORE_MAYBE_UNINITIALIZED_END /* Shift the error token. */ - YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp); + YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); yystate = yyn; goto yynewstate; @@ -7575,7 +7087,6 @@ yyacceptlab: yyresult = 0; goto yyreturn; - /*-----------------------------------. | yyabortlab -- YYABORT comes here. | `-----------------------------------*/ @@ -7583,8 +7094,7 @@ yyabortlab: yyresult = 1; goto yyreturn; - -#if !defined yyoverflow +#ifndef yyoverflow /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ @@ -7594,38 +7104,34 @@ yyexhaustedlab: /* Fall through. */ #endif - -/*-----------------------------------------------------. -| 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 + if (yychar != YYEOF && yychar != YYEMPTY) + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + /* Do not reclaim the symbols of the rule which action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); YY_STACK_PRINT (yyss, yyssp); while (yyssp != yyss) { yydestruct ("Cleanup: popping", - YY_ACCESSING_SYMBOL (+*yyssp), yyvsp); + yystos[*yyssp], yyvsp); YYPOPSTACK (1); } #ifndef yyoverflow if (yyss != yyssa) YYSTACK_FREE (yyss); #endif - - return yyresult; +#if YYERROR_VERBOSE + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); +#endif + /* Make sure YYID is used. */ + return YYID (yyresult); } -#line 3491 "./util/configparser.y" + +#line 3502 "util/configparser.y" /* parse helper routines could be here */ @@ -7647,3 +7153,4 @@ validate_respip_action(const char* action) } + diff --git a/util/configparser.h b/util/configparser.h index 5f1f73fec..430f09180 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -1,14 +1,14 @@ -/* A Bison parser, made by GNU Bison 3.6.4. */ +/* A Bison parser, made by GNU Bison 2.3. */ -/* Bison interface for Yacc-like parsers in C +/* Skeleton interface for Bison's Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, - Inc. + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. - This program is free software: you can redistribute it and/or modify + 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. + the Free Software Foundation; either version 2, 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 @@ -16,7 +16,9 @@ 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 . */ + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work @@ -31,346 +33,326 @@ This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ -/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, - especially those whose name start with YY_ or yy_. They are - private implementation details that can be changed or removed. */ - -#ifndef YY_YY_UTIL_CONFIGPARSER_H_INCLUDED -# define YY_YY_UTIL_CONFIGPARSER_H_INCLUDED -/* Debug traces. */ -#ifndef YYDEBUG -# define YYDEBUG 0 -#endif -#if YYDEBUG -extern int yydebug; -#endif - -/* Token kinds. */ +/* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE - enum yytokentype - { - YYEMPTY = -2, - YYEOF = 0, /* "end of file" */ - YYerror = 256, /* error */ - YYUNDEF = 257, /* "invalid token" */ - SPACE = 258, /* SPACE */ - LETTER = 259, /* LETTER */ - NEWLINE = 260, /* NEWLINE */ - COMMENT = 261, /* COMMENT */ - COLON = 262, /* COLON */ - ANY = 263, /* ANY */ - ZONESTR = 264, /* ZONESTR */ - STRING_ARG = 265, /* STRING_ARG */ - VAR_FORCE_TOPLEVEL = 266, /* VAR_FORCE_TOPLEVEL */ - VAR_SERVER = 267, /* VAR_SERVER */ - VAR_VERBOSITY = 268, /* VAR_VERBOSITY */ - VAR_NUM_THREADS = 269, /* VAR_NUM_THREADS */ - VAR_PORT = 270, /* VAR_PORT */ - VAR_OUTGOING_RANGE = 271, /* VAR_OUTGOING_RANGE */ - VAR_INTERFACE = 272, /* VAR_INTERFACE */ - VAR_PREFER_IP4 = 273, /* VAR_PREFER_IP4 */ - VAR_DO_IP4 = 274, /* VAR_DO_IP4 */ - VAR_DO_IP6 = 275, /* VAR_DO_IP6 */ - VAR_PREFER_IP6 = 276, /* VAR_PREFER_IP6 */ - VAR_DO_UDP = 277, /* VAR_DO_UDP */ - VAR_DO_TCP = 278, /* VAR_DO_TCP */ - VAR_TCP_MSS = 279, /* VAR_TCP_MSS */ - VAR_OUTGOING_TCP_MSS = 280, /* VAR_OUTGOING_TCP_MSS */ - VAR_TCP_IDLE_TIMEOUT = 281, /* VAR_TCP_IDLE_TIMEOUT */ - VAR_EDNS_TCP_KEEPALIVE = 282, /* VAR_EDNS_TCP_KEEPALIVE */ - VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 283, /* VAR_EDNS_TCP_KEEPALIVE_TIMEOUT */ - VAR_CHROOT = 284, /* VAR_CHROOT */ - VAR_USERNAME = 285, /* VAR_USERNAME */ - VAR_DIRECTORY = 286, /* VAR_DIRECTORY */ - VAR_LOGFILE = 287, /* VAR_LOGFILE */ - VAR_PIDFILE = 288, /* VAR_PIDFILE */ - VAR_MSG_CACHE_SIZE = 289, /* VAR_MSG_CACHE_SIZE */ - VAR_MSG_CACHE_SLABS = 290, /* VAR_MSG_CACHE_SLABS */ - VAR_NUM_QUERIES_PER_THREAD = 291, /* VAR_NUM_QUERIES_PER_THREAD */ - VAR_RRSET_CACHE_SIZE = 292, /* VAR_RRSET_CACHE_SIZE */ - VAR_RRSET_CACHE_SLABS = 293, /* VAR_RRSET_CACHE_SLABS */ - VAR_OUTGOING_NUM_TCP = 294, /* VAR_OUTGOING_NUM_TCP */ - VAR_INFRA_HOST_TTL = 295, /* VAR_INFRA_HOST_TTL */ - VAR_INFRA_LAME_TTL = 296, /* VAR_INFRA_LAME_TTL */ - VAR_INFRA_CACHE_SLABS = 297, /* VAR_INFRA_CACHE_SLABS */ - VAR_INFRA_CACHE_NUMHOSTS = 298, /* VAR_INFRA_CACHE_NUMHOSTS */ - VAR_INFRA_CACHE_LAME_SIZE = 299, /* VAR_INFRA_CACHE_LAME_SIZE */ - VAR_NAME = 300, /* VAR_NAME */ - VAR_STUB_ZONE = 301, /* VAR_STUB_ZONE */ - VAR_STUB_HOST = 302, /* VAR_STUB_HOST */ - VAR_STUB_ADDR = 303, /* VAR_STUB_ADDR */ - VAR_TARGET_FETCH_POLICY = 304, /* VAR_TARGET_FETCH_POLICY */ - VAR_HARDEN_SHORT_BUFSIZE = 305, /* VAR_HARDEN_SHORT_BUFSIZE */ - VAR_HARDEN_LARGE_QUERIES = 306, /* VAR_HARDEN_LARGE_QUERIES */ - VAR_FORWARD_ZONE = 307, /* VAR_FORWARD_ZONE */ - VAR_FORWARD_HOST = 308, /* VAR_FORWARD_HOST */ - VAR_FORWARD_ADDR = 309, /* VAR_FORWARD_ADDR */ - VAR_DO_NOT_QUERY_ADDRESS = 310, /* VAR_DO_NOT_QUERY_ADDRESS */ - VAR_HIDE_IDENTITY = 311, /* VAR_HIDE_IDENTITY */ - VAR_HIDE_VERSION = 312, /* VAR_HIDE_VERSION */ - VAR_IDENTITY = 313, /* VAR_IDENTITY */ - VAR_VERSION = 314, /* VAR_VERSION */ - VAR_HARDEN_GLUE = 315, /* VAR_HARDEN_GLUE */ - VAR_MODULE_CONF = 316, /* VAR_MODULE_CONF */ - VAR_TRUST_ANCHOR_FILE = 317, /* VAR_TRUST_ANCHOR_FILE */ - VAR_TRUST_ANCHOR = 318, /* VAR_TRUST_ANCHOR */ - VAR_VAL_OVERRIDE_DATE = 319, /* VAR_VAL_OVERRIDE_DATE */ - VAR_BOGUS_TTL = 320, /* VAR_BOGUS_TTL */ - VAR_VAL_CLEAN_ADDITIONAL = 321, /* VAR_VAL_CLEAN_ADDITIONAL */ - VAR_VAL_PERMISSIVE_MODE = 322, /* VAR_VAL_PERMISSIVE_MODE */ - VAR_INCOMING_NUM_TCP = 323, /* VAR_INCOMING_NUM_TCP */ - VAR_MSG_BUFFER_SIZE = 324, /* VAR_MSG_BUFFER_SIZE */ - VAR_KEY_CACHE_SIZE = 325, /* VAR_KEY_CACHE_SIZE */ - VAR_KEY_CACHE_SLABS = 326, /* VAR_KEY_CACHE_SLABS */ - VAR_TRUSTED_KEYS_FILE = 327, /* VAR_TRUSTED_KEYS_FILE */ - VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 328, /* VAR_VAL_NSEC3_KEYSIZE_ITERATIONS */ - VAR_USE_SYSLOG = 329, /* VAR_USE_SYSLOG */ - VAR_OUTGOING_INTERFACE = 330, /* VAR_OUTGOING_INTERFACE */ - VAR_ROOT_HINTS = 331, /* VAR_ROOT_HINTS */ - VAR_DO_NOT_QUERY_LOCALHOST = 332, /* VAR_DO_NOT_QUERY_LOCALHOST */ - VAR_CACHE_MAX_TTL = 333, /* VAR_CACHE_MAX_TTL */ - VAR_HARDEN_DNSSEC_STRIPPED = 334, /* VAR_HARDEN_DNSSEC_STRIPPED */ - VAR_ACCESS_CONTROL = 335, /* VAR_ACCESS_CONTROL */ - VAR_LOCAL_ZONE = 336, /* VAR_LOCAL_ZONE */ - VAR_LOCAL_DATA = 337, /* VAR_LOCAL_DATA */ - VAR_INTERFACE_AUTOMATIC = 338, /* VAR_INTERFACE_AUTOMATIC */ - VAR_STATISTICS_INTERVAL = 339, /* VAR_STATISTICS_INTERVAL */ - VAR_DO_DAEMONIZE = 340, /* VAR_DO_DAEMONIZE */ - VAR_USE_CAPS_FOR_ID = 341, /* VAR_USE_CAPS_FOR_ID */ - VAR_STATISTICS_CUMULATIVE = 342, /* VAR_STATISTICS_CUMULATIVE */ - VAR_OUTGOING_PORT_PERMIT = 343, /* VAR_OUTGOING_PORT_PERMIT */ - VAR_OUTGOING_PORT_AVOID = 344, /* VAR_OUTGOING_PORT_AVOID */ - VAR_DLV_ANCHOR_FILE = 345, /* VAR_DLV_ANCHOR_FILE */ - VAR_DLV_ANCHOR = 346, /* VAR_DLV_ANCHOR */ - VAR_NEG_CACHE_SIZE = 347, /* VAR_NEG_CACHE_SIZE */ - VAR_HARDEN_REFERRAL_PATH = 348, /* VAR_HARDEN_REFERRAL_PATH */ - VAR_PRIVATE_ADDRESS = 349, /* VAR_PRIVATE_ADDRESS */ - VAR_PRIVATE_DOMAIN = 350, /* VAR_PRIVATE_DOMAIN */ - VAR_REMOTE_CONTROL = 351, /* VAR_REMOTE_CONTROL */ - VAR_CONTROL_ENABLE = 352, /* VAR_CONTROL_ENABLE */ - VAR_CONTROL_INTERFACE = 353, /* VAR_CONTROL_INTERFACE */ - VAR_CONTROL_PORT = 354, /* VAR_CONTROL_PORT */ - VAR_SERVER_KEY_FILE = 355, /* VAR_SERVER_KEY_FILE */ - VAR_SERVER_CERT_FILE = 356, /* VAR_SERVER_CERT_FILE */ - VAR_CONTROL_KEY_FILE = 357, /* VAR_CONTROL_KEY_FILE */ - VAR_CONTROL_CERT_FILE = 358, /* VAR_CONTROL_CERT_FILE */ - VAR_CONTROL_USE_CERT = 359, /* VAR_CONTROL_USE_CERT */ - VAR_TCP_REUSE_TIMEOUT = 360, /* VAR_TCP_REUSE_TIMEOUT */ - VAR_MAX_REUSE_TCP_QUERIES = 361, /* VAR_MAX_REUSE_TCP_QUERIES */ - VAR_EXTENDED_STATISTICS = 362, /* VAR_EXTENDED_STATISTICS */ - VAR_LOCAL_DATA_PTR = 363, /* VAR_LOCAL_DATA_PTR */ - VAR_JOSTLE_TIMEOUT = 364, /* VAR_JOSTLE_TIMEOUT */ - VAR_STUB_PRIME = 365, /* VAR_STUB_PRIME */ - VAR_UNWANTED_REPLY_THRESHOLD = 366, /* VAR_UNWANTED_REPLY_THRESHOLD */ - VAR_LOG_TIME_ASCII = 367, /* VAR_LOG_TIME_ASCII */ - VAR_DOMAIN_INSECURE = 368, /* VAR_DOMAIN_INSECURE */ - VAR_PYTHON = 369, /* VAR_PYTHON */ - VAR_PYTHON_SCRIPT = 370, /* VAR_PYTHON_SCRIPT */ - VAR_VAL_SIG_SKEW_MIN = 371, /* VAR_VAL_SIG_SKEW_MIN */ - VAR_VAL_SIG_SKEW_MAX = 372, /* VAR_VAL_SIG_SKEW_MAX */ - VAR_CACHE_MIN_TTL = 373, /* VAR_CACHE_MIN_TTL */ - VAR_VAL_LOG_LEVEL = 374, /* VAR_VAL_LOG_LEVEL */ - VAR_AUTO_TRUST_ANCHOR_FILE = 375, /* VAR_AUTO_TRUST_ANCHOR_FILE */ - VAR_KEEP_MISSING = 376, /* VAR_KEEP_MISSING */ - VAR_ADD_HOLDDOWN = 377, /* VAR_ADD_HOLDDOWN */ - VAR_DEL_HOLDDOWN = 378, /* VAR_DEL_HOLDDOWN */ - VAR_SO_RCVBUF = 379, /* VAR_SO_RCVBUF */ - VAR_EDNS_BUFFER_SIZE = 380, /* VAR_EDNS_BUFFER_SIZE */ - VAR_PREFETCH = 381, /* VAR_PREFETCH */ - VAR_PREFETCH_KEY = 382, /* VAR_PREFETCH_KEY */ - VAR_SO_SNDBUF = 383, /* VAR_SO_SNDBUF */ - VAR_SO_REUSEPORT = 384, /* VAR_SO_REUSEPORT */ - VAR_HARDEN_BELOW_NXDOMAIN = 385, /* VAR_HARDEN_BELOW_NXDOMAIN */ - VAR_IGNORE_CD_FLAG = 386, /* VAR_IGNORE_CD_FLAG */ - VAR_LOG_QUERIES = 387, /* VAR_LOG_QUERIES */ - VAR_LOG_REPLIES = 388, /* VAR_LOG_REPLIES */ - VAR_LOG_LOCAL_ACTIONS = 389, /* VAR_LOG_LOCAL_ACTIONS */ - VAR_TCP_UPSTREAM = 390, /* VAR_TCP_UPSTREAM */ - VAR_SSL_UPSTREAM = 391, /* VAR_SSL_UPSTREAM */ - VAR_SSL_SERVICE_KEY = 392, /* VAR_SSL_SERVICE_KEY */ - VAR_SSL_SERVICE_PEM = 393, /* VAR_SSL_SERVICE_PEM */ - VAR_SSL_PORT = 394, /* VAR_SSL_PORT */ - VAR_FORWARD_FIRST = 395, /* VAR_FORWARD_FIRST */ - VAR_STUB_SSL_UPSTREAM = 396, /* VAR_STUB_SSL_UPSTREAM */ - VAR_FORWARD_SSL_UPSTREAM = 397, /* VAR_FORWARD_SSL_UPSTREAM */ - VAR_TLS_CERT_BUNDLE = 398, /* VAR_TLS_CERT_BUNDLE */ - VAR_HTTPS_PORT = 399, /* VAR_HTTPS_PORT */ - VAR_HTTP_ENDPOINT = 400, /* VAR_HTTP_ENDPOINT */ - VAR_HTTP_MAX_STREAMS = 401, /* VAR_HTTP_MAX_STREAMS */ - VAR_HTTP_QUERY_BUFFER_SIZE = 402, /* VAR_HTTP_QUERY_BUFFER_SIZE */ - VAR_HTTP_RESPONSE_BUFFER_SIZE = 403, /* VAR_HTTP_RESPONSE_BUFFER_SIZE */ - VAR_HTTP_NODELAY = 404, /* VAR_HTTP_NODELAY */ - VAR_HTTP_NOTLS_DOWNSTREAM = 405, /* VAR_HTTP_NOTLS_DOWNSTREAM */ - VAR_STUB_FIRST = 406, /* VAR_STUB_FIRST */ - VAR_MINIMAL_RESPONSES = 407, /* VAR_MINIMAL_RESPONSES */ - VAR_RRSET_ROUNDROBIN = 408, /* VAR_RRSET_ROUNDROBIN */ - VAR_MAX_UDP_SIZE = 409, /* VAR_MAX_UDP_SIZE */ - VAR_DELAY_CLOSE = 410, /* VAR_DELAY_CLOSE */ - VAR_UDP_CONNECT = 411, /* VAR_UDP_CONNECT */ - VAR_UNBLOCK_LAN_ZONES = 412, /* VAR_UNBLOCK_LAN_ZONES */ - VAR_INSECURE_LAN_ZONES = 413, /* VAR_INSECURE_LAN_ZONES */ - VAR_INFRA_CACHE_MIN_RTT = 414, /* VAR_INFRA_CACHE_MIN_RTT */ - VAR_INFRA_KEEP_PROBING = 415, /* VAR_INFRA_KEEP_PROBING */ - VAR_DNS64_PREFIX = 416, /* VAR_DNS64_PREFIX */ - VAR_DNS64_SYNTHALL = 417, /* VAR_DNS64_SYNTHALL */ - VAR_DNS64_IGNORE_AAAA = 418, /* VAR_DNS64_IGNORE_AAAA */ - VAR_DNSTAP = 419, /* VAR_DNSTAP */ - VAR_DNSTAP_ENABLE = 420, /* VAR_DNSTAP_ENABLE */ - VAR_DNSTAP_SOCKET_PATH = 421, /* VAR_DNSTAP_SOCKET_PATH */ - VAR_DNSTAP_IP = 422, /* VAR_DNSTAP_IP */ - VAR_DNSTAP_TLS = 423, /* VAR_DNSTAP_TLS */ - VAR_DNSTAP_TLS_SERVER_NAME = 424, /* VAR_DNSTAP_TLS_SERVER_NAME */ - VAR_DNSTAP_TLS_CERT_BUNDLE = 425, /* VAR_DNSTAP_TLS_CERT_BUNDLE */ - VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 426, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE */ - VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 427, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE */ - VAR_DNSTAP_SEND_IDENTITY = 428, /* VAR_DNSTAP_SEND_IDENTITY */ - VAR_DNSTAP_SEND_VERSION = 429, /* VAR_DNSTAP_SEND_VERSION */ - VAR_DNSTAP_BIDIRECTIONAL = 430, /* VAR_DNSTAP_BIDIRECTIONAL */ - VAR_DNSTAP_IDENTITY = 431, /* VAR_DNSTAP_IDENTITY */ - VAR_DNSTAP_VERSION = 432, /* VAR_DNSTAP_VERSION */ - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 433, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES */ - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 434, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES */ - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 435, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES */ - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 436, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES */ - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 437, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES */ - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 438, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES */ - VAR_RESPONSE_IP_TAG = 439, /* VAR_RESPONSE_IP_TAG */ - VAR_RESPONSE_IP = 440, /* VAR_RESPONSE_IP */ - VAR_RESPONSE_IP_DATA = 441, /* VAR_RESPONSE_IP_DATA */ - VAR_HARDEN_ALGO_DOWNGRADE = 442, /* VAR_HARDEN_ALGO_DOWNGRADE */ - VAR_IP_TRANSPARENT = 443, /* VAR_IP_TRANSPARENT */ - VAR_IP_DSCP = 444, /* VAR_IP_DSCP */ - VAR_DISABLE_DNSSEC_LAME_CHECK = 445, /* VAR_DISABLE_DNSSEC_LAME_CHECK */ - VAR_IP_RATELIMIT = 446, /* VAR_IP_RATELIMIT */ - VAR_IP_RATELIMIT_SLABS = 447, /* VAR_IP_RATELIMIT_SLABS */ - VAR_IP_RATELIMIT_SIZE = 448, /* VAR_IP_RATELIMIT_SIZE */ - VAR_RATELIMIT = 449, /* VAR_RATELIMIT */ - VAR_RATELIMIT_SLABS = 450, /* VAR_RATELIMIT_SLABS */ - VAR_RATELIMIT_SIZE = 451, /* VAR_RATELIMIT_SIZE */ - VAR_RATELIMIT_FOR_DOMAIN = 452, /* VAR_RATELIMIT_FOR_DOMAIN */ - VAR_RATELIMIT_BELOW_DOMAIN = 453, /* VAR_RATELIMIT_BELOW_DOMAIN */ - VAR_IP_RATELIMIT_FACTOR = 454, /* VAR_IP_RATELIMIT_FACTOR */ - VAR_RATELIMIT_FACTOR = 455, /* VAR_RATELIMIT_FACTOR */ - VAR_SEND_CLIENT_SUBNET = 456, /* VAR_SEND_CLIENT_SUBNET */ - VAR_CLIENT_SUBNET_ZONE = 457, /* VAR_CLIENT_SUBNET_ZONE */ - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 458, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ - VAR_CLIENT_SUBNET_OPCODE = 459, /* VAR_CLIENT_SUBNET_OPCODE */ - VAR_MAX_CLIENT_SUBNET_IPV4 = 460, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ - VAR_MAX_CLIENT_SUBNET_IPV6 = 461, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ - VAR_MIN_CLIENT_SUBNET_IPV4 = 462, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ - VAR_MIN_CLIENT_SUBNET_IPV6 = 463, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ - VAR_MAX_ECS_TREE_SIZE_IPV4 = 464, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ - VAR_MAX_ECS_TREE_SIZE_IPV6 = 465, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ - VAR_CAPS_WHITELIST = 466, /* VAR_CAPS_WHITELIST */ - VAR_CACHE_MAX_NEGATIVE_TTL = 467, /* VAR_CACHE_MAX_NEGATIVE_TTL */ - VAR_PERMIT_SMALL_HOLDDOWN = 468, /* VAR_PERMIT_SMALL_HOLDDOWN */ - VAR_QNAME_MINIMISATION = 469, /* VAR_QNAME_MINIMISATION */ - VAR_QNAME_MINIMISATION_STRICT = 470, /* VAR_QNAME_MINIMISATION_STRICT */ - VAR_IP_FREEBIND = 471, /* VAR_IP_FREEBIND */ - VAR_DEFINE_TAG = 472, /* VAR_DEFINE_TAG */ - VAR_LOCAL_ZONE_TAG = 473, /* VAR_LOCAL_ZONE_TAG */ - VAR_ACCESS_CONTROL_TAG = 474, /* VAR_ACCESS_CONTROL_TAG */ - VAR_LOCAL_ZONE_OVERRIDE = 475, /* VAR_LOCAL_ZONE_OVERRIDE */ - VAR_ACCESS_CONTROL_TAG_ACTION = 476, /* VAR_ACCESS_CONTROL_TAG_ACTION */ - VAR_ACCESS_CONTROL_TAG_DATA = 477, /* VAR_ACCESS_CONTROL_TAG_DATA */ - VAR_VIEW = 478, /* VAR_VIEW */ - VAR_ACCESS_CONTROL_VIEW = 479, /* VAR_ACCESS_CONTROL_VIEW */ - VAR_VIEW_FIRST = 480, /* VAR_VIEW_FIRST */ - VAR_SERVE_EXPIRED = 481, /* VAR_SERVE_EXPIRED */ - VAR_SERVE_EXPIRED_TTL = 482, /* VAR_SERVE_EXPIRED_TTL */ - VAR_SERVE_EXPIRED_TTL_RESET = 483, /* VAR_SERVE_EXPIRED_TTL_RESET */ - VAR_SERVE_EXPIRED_REPLY_TTL = 484, /* VAR_SERVE_EXPIRED_REPLY_TTL */ - VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 485, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ - VAR_SERVE_ORIGINAL_TTL = 486, /* VAR_SERVE_ORIGINAL_TTL */ - VAR_FAKE_DSA = 487, /* VAR_FAKE_DSA */ - VAR_FAKE_SHA1 = 488, /* VAR_FAKE_SHA1 */ - VAR_LOG_IDENTITY = 489, /* VAR_LOG_IDENTITY */ - VAR_HIDE_TRUSTANCHOR = 490, /* VAR_HIDE_TRUSTANCHOR */ - VAR_TRUST_ANCHOR_SIGNALING = 491, /* VAR_TRUST_ANCHOR_SIGNALING */ - VAR_AGGRESSIVE_NSEC = 492, /* VAR_AGGRESSIVE_NSEC */ - VAR_USE_SYSTEMD = 493, /* VAR_USE_SYSTEMD */ - VAR_SHM_ENABLE = 494, /* VAR_SHM_ENABLE */ - VAR_SHM_KEY = 495, /* VAR_SHM_KEY */ - VAR_ROOT_KEY_SENTINEL = 496, /* VAR_ROOT_KEY_SENTINEL */ - VAR_DNSCRYPT = 497, /* VAR_DNSCRYPT */ - VAR_DNSCRYPT_ENABLE = 498, /* VAR_DNSCRYPT_ENABLE */ - VAR_DNSCRYPT_PORT = 499, /* VAR_DNSCRYPT_PORT */ - VAR_DNSCRYPT_PROVIDER = 500, /* VAR_DNSCRYPT_PROVIDER */ - VAR_DNSCRYPT_SECRET_KEY = 501, /* VAR_DNSCRYPT_SECRET_KEY */ - VAR_DNSCRYPT_PROVIDER_CERT = 502, /* VAR_DNSCRYPT_PROVIDER_CERT */ - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 503, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 504, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 505, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 506, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 507, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ - VAR_PAD_RESPONSES = 508, /* VAR_PAD_RESPONSES */ - VAR_PAD_RESPONSES_BLOCK_SIZE = 509, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ - VAR_PAD_QUERIES = 510, /* VAR_PAD_QUERIES */ - VAR_PAD_QUERIES_BLOCK_SIZE = 511, /* VAR_PAD_QUERIES_BLOCK_SIZE */ - VAR_IPSECMOD_ENABLED = 512, /* VAR_IPSECMOD_ENABLED */ - VAR_IPSECMOD_HOOK = 513, /* VAR_IPSECMOD_HOOK */ - VAR_IPSECMOD_IGNORE_BOGUS = 514, /* VAR_IPSECMOD_IGNORE_BOGUS */ - VAR_IPSECMOD_MAX_TTL = 515, /* VAR_IPSECMOD_MAX_TTL */ - VAR_IPSECMOD_WHITELIST = 516, /* VAR_IPSECMOD_WHITELIST */ - VAR_IPSECMOD_STRICT = 517, /* VAR_IPSECMOD_STRICT */ - VAR_CACHEDB = 518, /* VAR_CACHEDB */ - VAR_CACHEDB_BACKEND = 519, /* VAR_CACHEDB_BACKEND */ - VAR_CACHEDB_SECRETSEED = 520, /* VAR_CACHEDB_SECRETSEED */ - VAR_CACHEDB_REDISHOST = 521, /* VAR_CACHEDB_REDISHOST */ - VAR_CACHEDB_REDISPORT = 522, /* VAR_CACHEDB_REDISPORT */ - VAR_CACHEDB_REDISTIMEOUT = 523, /* VAR_CACHEDB_REDISTIMEOUT */ - VAR_CACHEDB_REDISEXPIRERECORDS = 524, /* VAR_CACHEDB_REDISEXPIRERECORDS */ - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 525, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ - VAR_FOR_UPSTREAM = 526, /* VAR_FOR_UPSTREAM */ - VAR_AUTH_ZONE = 527, /* VAR_AUTH_ZONE */ - VAR_ZONEFILE = 528, /* VAR_ZONEFILE */ - VAR_MASTER = 529, /* VAR_MASTER */ - VAR_URL = 530, /* VAR_URL */ - VAR_FOR_DOWNSTREAM = 531, /* VAR_FOR_DOWNSTREAM */ - VAR_FALLBACK_ENABLED = 532, /* VAR_FALLBACK_ENABLED */ - VAR_TLS_ADDITIONAL_PORT = 533, /* VAR_TLS_ADDITIONAL_PORT */ - VAR_LOW_RTT = 534, /* VAR_LOW_RTT */ - VAR_LOW_RTT_PERMIL = 535, /* VAR_LOW_RTT_PERMIL */ - VAR_FAST_SERVER_PERMIL = 536, /* VAR_FAST_SERVER_PERMIL */ - VAR_FAST_SERVER_NUM = 537, /* VAR_FAST_SERVER_NUM */ - VAR_ALLOW_NOTIFY = 538, /* VAR_ALLOW_NOTIFY */ - VAR_TLS_WIN_CERT = 539, /* VAR_TLS_WIN_CERT */ - VAR_TCP_CONNECTION_LIMIT = 540, /* VAR_TCP_CONNECTION_LIMIT */ - VAR_FORWARD_NO_CACHE = 541, /* VAR_FORWARD_NO_CACHE */ - VAR_STUB_NO_CACHE = 542, /* VAR_STUB_NO_CACHE */ - VAR_LOG_SERVFAIL = 543, /* VAR_LOG_SERVFAIL */ - VAR_DENY_ANY = 544, /* VAR_DENY_ANY */ - VAR_UNKNOWN_SERVER_TIME_LIMIT = 545, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ - VAR_LOG_TAG_QUERYREPLY = 546, /* VAR_LOG_TAG_QUERYREPLY */ - VAR_STREAM_WAIT_SIZE = 547, /* VAR_STREAM_WAIT_SIZE */ - VAR_TLS_CIPHERS = 548, /* VAR_TLS_CIPHERS */ - VAR_TLS_CIPHERSUITES = 549, /* VAR_TLS_CIPHERSUITES */ - VAR_TLS_USE_SNI = 550, /* VAR_TLS_USE_SNI */ - VAR_IPSET = 551, /* VAR_IPSET */ - VAR_IPSET_NAME_V4 = 552, /* VAR_IPSET_NAME_V4 */ - VAR_IPSET_NAME_V6 = 553, /* VAR_IPSET_NAME_V6 */ - VAR_TLS_SESSION_TICKET_KEYS = 554, /* VAR_TLS_SESSION_TICKET_KEYS */ - VAR_RPZ = 555, /* VAR_RPZ */ - VAR_TAGS = 556, /* VAR_TAGS */ - VAR_RPZ_ACTION_OVERRIDE = 557, /* VAR_RPZ_ACTION_OVERRIDE */ - VAR_RPZ_CNAME_OVERRIDE = 558, /* VAR_RPZ_CNAME_OVERRIDE */ - VAR_RPZ_LOG = 559, /* VAR_RPZ_LOG */ - VAR_RPZ_LOG_NAME = 560, /* VAR_RPZ_LOG_NAME */ - VAR_DYNLIB = 561, /* VAR_DYNLIB */ - VAR_DYNLIB_FILE = 562, /* VAR_DYNLIB_FILE */ - VAR_EDNS_CLIENT_STRING = 563, /* VAR_EDNS_CLIENT_STRING */ - VAR_EDNS_CLIENT_STRING_OPCODE = 564, /* VAR_EDNS_CLIENT_STRING_OPCODE */ - VAR_NSID = 565, /* VAR_NSID */ - VAR_ZONEMD_PERMISSIVE_MODE = 566, /* VAR_ZONEMD_PERMISSIVE_MODE */ - VAR_ZONEMD_REJECT_ABSENCE = 567 /* VAR_ZONEMD_REJECT_ABSENCE */ - }; - typedef enum yytokentype yytoken_kind_t; + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + SPACE = 258, + LETTER = 259, + NEWLINE = 260, + COMMENT = 261, + COLON = 262, + ANY = 263, + ZONESTR = 264, + STRING_ARG = 265, + VAR_FORCE_TOPLEVEL = 266, + VAR_SERVER = 267, + VAR_VERBOSITY = 268, + VAR_NUM_THREADS = 269, + VAR_PORT = 270, + VAR_OUTGOING_RANGE = 271, + VAR_INTERFACE = 272, + VAR_PREFER_IP4 = 273, + VAR_DO_IP4 = 274, + VAR_DO_IP6 = 275, + VAR_PREFER_IP6 = 276, + VAR_DO_UDP = 277, + VAR_DO_TCP = 278, + VAR_TCP_MSS = 279, + VAR_OUTGOING_TCP_MSS = 280, + VAR_TCP_IDLE_TIMEOUT = 281, + VAR_EDNS_TCP_KEEPALIVE = 282, + VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 283, + VAR_CHROOT = 284, + VAR_USERNAME = 285, + VAR_DIRECTORY = 286, + VAR_LOGFILE = 287, + VAR_PIDFILE = 288, + VAR_MSG_CACHE_SIZE = 289, + VAR_MSG_CACHE_SLABS = 290, + VAR_NUM_QUERIES_PER_THREAD = 291, + VAR_RRSET_CACHE_SIZE = 292, + VAR_RRSET_CACHE_SLABS = 293, + VAR_OUTGOING_NUM_TCP = 294, + VAR_INFRA_HOST_TTL = 295, + VAR_INFRA_LAME_TTL = 296, + VAR_INFRA_CACHE_SLABS = 297, + VAR_INFRA_CACHE_NUMHOSTS = 298, + VAR_INFRA_CACHE_LAME_SIZE = 299, + VAR_NAME = 300, + VAR_STUB_ZONE = 301, + VAR_STUB_HOST = 302, + VAR_STUB_ADDR = 303, + VAR_TARGET_FETCH_POLICY = 304, + VAR_HARDEN_SHORT_BUFSIZE = 305, + VAR_HARDEN_LARGE_QUERIES = 306, + VAR_FORWARD_ZONE = 307, + VAR_FORWARD_HOST = 308, + VAR_FORWARD_ADDR = 309, + VAR_DO_NOT_QUERY_ADDRESS = 310, + VAR_HIDE_IDENTITY = 311, + VAR_HIDE_VERSION = 312, + VAR_IDENTITY = 313, + VAR_VERSION = 314, + VAR_HARDEN_GLUE = 315, + VAR_MODULE_CONF = 316, + VAR_TRUST_ANCHOR_FILE = 317, + VAR_TRUST_ANCHOR = 318, + VAR_VAL_OVERRIDE_DATE = 319, + VAR_BOGUS_TTL = 320, + VAR_VAL_CLEAN_ADDITIONAL = 321, + VAR_VAL_PERMISSIVE_MODE = 322, + VAR_INCOMING_NUM_TCP = 323, + VAR_MSG_BUFFER_SIZE = 324, + VAR_KEY_CACHE_SIZE = 325, + VAR_KEY_CACHE_SLABS = 326, + VAR_TRUSTED_KEYS_FILE = 327, + VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 328, + VAR_USE_SYSLOG = 329, + VAR_OUTGOING_INTERFACE = 330, + VAR_ROOT_HINTS = 331, + VAR_DO_NOT_QUERY_LOCALHOST = 332, + VAR_CACHE_MAX_TTL = 333, + VAR_HARDEN_DNSSEC_STRIPPED = 334, + VAR_ACCESS_CONTROL = 335, + VAR_LOCAL_ZONE = 336, + VAR_LOCAL_DATA = 337, + VAR_INTERFACE_AUTOMATIC = 338, + VAR_STATISTICS_INTERVAL = 339, + VAR_DO_DAEMONIZE = 340, + VAR_USE_CAPS_FOR_ID = 341, + VAR_STATISTICS_CUMULATIVE = 342, + VAR_OUTGOING_PORT_PERMIT = 343, + VAR_OUTGOING_PORT_AVOID = 344, + VAR_DLV_ANCHOR_FILE = 345, + VAR_DLV_ANCHOR = 346, + VAR_NEG_CACHE_SIZE = 347, + VAR_HARDEN_REFERRAL_PATH = 348, + VAR_PRIVATE_ADDRESS = 349, + VAR_PRIVATE_DOMAIN = 350, + VAR_REMOTE_CONTROL = 351, + VAR_CONTROL_ENABLE = 352, + VAR_CONTROL_INTERFACE = 353, + VAR_CONTROL_PORT = 354, + VAR_SERVER_KEY_FILE = 355, + VAR_SERVER_CERT_FILE = 356, + VAR_CONTROL_KEY_FILE = 357, + VAR_CONTROL_CERT_FILE = 358, + VAR_CONTROL_USE_CERT = 359, + VAR_TCP_REUSE_TIMEOUT = 360, + VAR_MAX_REUSE_TCP_QUERIES = 361, + VAR_EXTENDED_STATISTICS = 362, + VAR_LOCAL_DATA_PTR = 363, + VAR_JOSTLE_TIMEOUT = 364, + VAR_STUB_PRIME = 365, + VAR_UNWANTED_REPLY_THRESHOLD = 366, + VAR_LOG_TIME_ASCII = 367, + VAR_DOMAIN_INSECURE = 368, + VAR_PYTHON = 369, + VAR_PYTHON_SCRIPT = 370, + VAR_VAL_SIG_SKEW_MIN = 371, + VAR_VAL_SIG_SKEW_MAX = 372, + VAR_CACHE_MIN_TTL = 373, + VAR_VAL_LOG_LEVEL = 374, + VAR_AUTO_TRUST_ANCHOR_FILE = 375, + VAR_KEEP_MISSING = 376, + VAR_ADD_HOLDDOWN = 377, + VAR_DEL_HOLDDOWN = 378, + VAR_SO_RCVBUF = 379, + VAR_EDNS_BUFFER_SIZE = 380, + VAR_PREFETCH = 381, + VAR_PREFETCH_KEY = 382, + VAR_SO_SNDBUF = 383, + VAR_SO_REUSEPORT = 384, + VAR_HARDEN_BELOW_NXDOMAIN = 385, + VAR_IGNORE_CD_FLAG = 386, + VAR_LOG_QUERIES = 387, + VAR_LOG_REPLIES = 388, + VAR_LOG_LOCAL_ACTIONS = 389, + VAR_TCP_UPSTREAM = 390, + VAR_SSL_UPSTREAM = 391, + VAR_TCP_AUTH_QUERY_TIMEOUT = 392, + VAR_SSL_SERVICE_KEY = 393, + VAR_SSL_SERVICE_PEM = 394, + VAR_SSL_PORT = 395, + VAR_FORWARD_FIRST = 396, + VAR_STUB_SSL_UPSTREAM = 397, + VAR_FORWARD_SSL_UPSTREAM = 398, + VAR_TLS_CERT_BUNDLE = 399, + VAR_HTTPS_PORT = 400, + VAR_HTTP_ENDPOINT = 401, + VAR_HTTP_MAX_STREAMS = 402, + VAR_HTTP_QUERY_BUFFER_SIZE = 403, + VAR_HTTP_RESPONSE_BUFFER_SIZE = 404, + VAR_HTTP_NODELAY = 405, + VAR_HTTP_NOTLS_DOWNSTREAM = 406, + VAR_STUB_FIRST = 407, + VAR_MINIMAL_RESPONSES = 408, + VAR_RRSET_ROUNDROBIN = 409, + VAR_MAX_UDP_SIZE = 410, + VAR_DELAY_CLOSE = 411, + VAR_UDP_CONNECT = 412, + VAR_UNBLOCK_LAN_ZONES = 413, + VAR_INSECURE_LAN_ZONES = 414, + VAR_INFRA_CACHE_MIN_RTT = 415, + VAR_INFRA_KEEP_PROBING = 416, + VAR_DNS64_PREFIX = 417, + VAR_DNS64_SYNTHALL = 418, + VAR_DNS64_IGNORE_AAAA = 419, + VAR_DNSTAP = 420, + VAR_DNSTAP_ENABLE = 421, + VAR_DNSTAP_SOCKET_PATH = 422, + VAR_DNSTAP_IP = 423, + VAR_DNSTAP_TLS = 424, + VAR_DNSTAP_TLS_SERVER_NAME = 425, + VAR_DNSTAP_TLS_CERT_BUNDLE = 426, + VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 427, + VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 428, + VAR_DNSTAP_SEND_IDENTITY = 429, + VAR_DNSTAP_SEND_VERSION = 430, + VAR_DNSTAP_BIDIRECTIONAL = 431, + VAR_DNSTAP_IDENTITY = 432, + VAR_DNSTAP_VERSION = 433, + VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 434, + VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 435, + VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 436, + VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 437, + VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 438, + VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 439, + VAR_RESPONSE_IP_TAG = 440, + VAR_RESPONSE_IP = 441, + VAR_RESPONSE_IP_DATA = 442, + VAR_HARDEN_ALGO_DOWNGRADE = 443, + VAR_IP_TRANSPARENT = 444, + VAR_IP_DSCP = 445, + VAR_DISABLE_DNSSEC_LAME_CHECK = 446, + VAR_IP_RATELIMIT = 447, + VAR_IP_RATELIMIT_SLABS = 448, + VAR_IP_RATELIMIT_SIZE = 449, + VAR_RATELIMIT = 450, + VAR_RATELIMIT_SLABS = 451, + VAR_RATELIMIT_SIZE = 452, + VAR_RATELIMIT_FOR_DOMAIN = 453, + VAR_RATELIMIT_BELOW_DOMAIN = 454, + VAR_IP_RATELIMIT_FACTOR = 455, + VAR_RATELIMIT_FACTOR = 456, + VAR_SEND_CLIENT_SUBNET = 457, + VAR_CLIENT_SUBNET_ZONE = 458, + VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 459, + VAR_CLIENT_SUBNET_OPCODE = 460, + VAR_MAX_CLIENT_SUBNET_IPV4 = 461, + VAR_MAX_CLIENT_SUBNET_IPV6 = 462, + VAR_MIN_CLIENT_SUBNET_IPV4 = 463, + VAR_MIN_CLIENT_SUBNET_IPV6 = 464, + VAR_MAX_ECS_TREE_SIZE_IPV4 = 465, + VAR_MAX_ECS_TREE_SIZE_IPV6 = 466, + VAR_CAPS_WHITELIST = 467, + VAR_CACHE_MAX_NEGATIVE_TTL = 468, + VAR_PERMIT_SMALL_HOLDDOWN = 469, + VAR_QNAME_MINIMISATION = 470, + VAR_QNAME_MINIMISATION_STRICT = 471, + VAR_IP_FREEBIND = 472, + VAR_DEFINE_TAG = 473, + VAR_LOCAL_ZONE_TAG = 474, + VAR_ACCESS_CONTROL_TAG = 475, + VAR_LOCAL_ZONE_OVERRIDE = 476, + VAR_ACCESS_CONTROL_TAG_ACTION = 477, + VAR_ACCESS_CONTROL_TAG_DATA = 478, + VAR_VIEW = 479, + VAR_ACCESS_CONTROL_VIEW = 480, + VAR_VIEW_FIRST = 481, + VAR_SERVE_EXPIRED = 482, + VAR_SERVE_EXPIRED_TTL = 483, + VAR_SERVE_EXPIRED_TTL_RESET = 484, + VAR_SERVE_EXPIRED_REPLY_TTL = 485, + VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 486, + VAR_SERVE_ORIGINAL_TTL = 487, + VAR_FAKE_DSA = 488, + VAR_FAKE_SHA1 = 489, + VAR_LOG_IDENTITY = 490, + VAR_HIDE_TRUSTANCHOR = 491, + VAR_TRUST_ANCHOR_SIGNALING = 492, + VAR_AGGRESSIVE_NSEC = 493, + VAR_USE_SYSTEMD = 494, + VAR_SHM_ENABLE = 495, + VAR_SHM_KEY = 496, + VAR_ROOT_KEY_SENTINEL = 497, + VAR_DNSCRYPT = 498, + VAR_DNSCRYPT_ENABLE = 499, + VAR_DNSCRYPT_PORT = 500, + VAR_DNSCRYPT_PROVIDER = 501, + VAR_DNSCRYPT_SECRET_KEY = 502, + VAR_DNSCRYPT_PROVIDER_CERT = 503, + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 504, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 505, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 506, + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 507, + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 508, + VAR_PAD_RESPONSES = 509, + VAR_PAD_RESPONSES_BLOCK_SIZE = 510, + VAR_PAD_QUERIES = 511, + VAR_PAD_QUERIES_BLOCK_SIZE = 512, + VAR_IPSECMOD_ENABLED = 513, + VAR_IPSECMOD_HOOK = 514, + VAR_IPSECMOD_IGNORE_BOGUS = 515, + VAR_IPSECMOD_MAX_TTL = 516, + VAR_IPSECMOD_WHITELIST = 517, + VAR_IPSECMOD_STRICT = 518, + VAR_CACHEDB = 519, + VAR_CACHEDB_BACKEND = 520, + VAR_CACHEDB_SECRETSEED = 521, + VAR_CACHEDB_REDISHOST = 522, + VAR_CACHEDB_REDISPORT = 523, + VAR_CACHEDB_REDISTIMEOUT = 524, + VAR_CACHEDB_REDISEXPIRERECORDS = 525, + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 526, + VAR_FOR_UPSTREAM = 527, + VAR_AUTH_ZONE = 528, + VAR_ZONEFILE = 529, + VAR_MASTER = 530, + VAR_URL = 531, + VAR_FOR_DOWNSTREAM = 532, + VAR_FALLBACK_ENABLED = 533, + VAR_TLS_ADDITIONAL_PORT = 534, + VAR_LOW_RTT = 535, + VAR_LOW_RTT_PERMIL = 536, + VAR_FAST_SERVER_PERMIL = 537, + VAR_FAST_SERVER_NUM = 538, + VAR_ALLOW_NOTIFY = 539, + VAR_TLS_WIN_CERT = 540, + VAR_TCP_CONNECTION_LIMIT = 541, + VAR_FORWARD_NO_CACHE = 542, + VAR_STUB_NO_CACHE = 543, + VAR_LOG_SERVFAIL = 544, + VAR_DENY_ANY = 545, + VAR_UNKNOWN_SERVER_TIME_LIMIT = 546, + VAR_LOG_TAG_QUERYREPLY = 547, + VAR_STREAM_WAIT_SIZE = 548, + VAR_TLS_CIPHERS = 549, + VAR_TLS_CIPHERSUITES = 550, + VAR_TLS_USE_SNI = 551, + VAR_IPSET = 552, + VAR_IPSET_NAME_V4 = 553, + VAR_IPSET_NAME_V6 = 554, + VAR_TLS_SESSION_TICKET_KEYS = 555, + VAR_RPZ = 556, + VAR_TAGS = 557, + VAR_RPZ_ACTION_OVERRIDE = 558, + VAR_RPZ_CNAME_OVERRIDE = 559, + VAR_RPZ_LOG = 560, + VAR_RPZ_LOG_NAME = 561, + VAR_DYNLIB = 562, + VAR_DYNLIB_FILE = 563, + VAR_EDNS_CLIENT_STRING = 564, + VAR_EDNS_CLIENT_STRING_OPCODE = 565, + VAR_NSID = 566, + VAR_ZONEMD_PERMISSIVE_MODE = 567, + VAR_ZONEMD_REJECT_ABSENCE = 568 + }; #endif -/* Token kinds. */ -#define YYEOF 0 -#define YYerror 256 -#define YYUNDEF 257 +/* Tokens. */ #define SPACE 258 #define LETTER 259 #define NEWLINE 260 @@ -505,202 +487,200 @@ extern int yydebug; #define VAR_LOG_LOCAL_ACTIONS 389 #define VAR_TCP_UPSTREAM 390 #define VAR_SSL_UPSTREAM 391 -#define VAR_SSL_SERVICE_KEY 392 -#define VAR_SSL_SERVICE_PEM 393 -#define VAR_SSL_PORT 394 -#define VAR_FORWARD_FIRST 395 -#define VAR_STUB_SSL_UPSTREAM 396 -#define VAR_FORWARD_SSL_UPSTREAM 397 -#define VAR_TLS_CERT_BUNDLE 398 -#define VAR_HTTPS_PORT 399 -#define VAR_HTTP_ENDPOINT 400 -#define VAR_HTTP_MAX_STREAMS 401 -#define VAR_HTTP_QUERY_BUFFER_SIZE 402 -#define VAR_HTTP_RESPONSE_BUFFER_SIZE 403 -#define VAR_HTTP_NODELAY 404 -#define VAR_HTTP_NOTLS_DOWNSTREAM 405 -#define VAR_STUB_FIRST 406 -#define VAR_MINIMAL_RESPONSES 407 -#define VAR_RRSET_ROUNDROBIN 408 -#define VAR_MAX_UDP_SIZE 409 -#define VAR_DELAY_CLOSE 410 -#define VAR_UDP_CONNECT 411 -#define VAR_UNBLOCK_LAN_ZONES 412 -#define VAR_INSECURE_LAN_ZONES 413 -#define VAR_INFRA_CACHE_MIN_RTT 414 -#define VAR_INFRA_KEEP_PROBING 415 -#define VAR_DNS64_PREFIX 416 -#define VAR_DNS64_SYNTHALL 417 -#define VAR_DNS64_IGNORE_AAAA 418 -#define VAR_DNSTAP 419 -#define VAR_DNSTAP_ENABLE 420 -#define VAR_DNSTAP_SOCKET_PATH 421 -#define VAR_DNSTAP_IP 422 -#define VAR_DNSTAP_TLS 423 -#define VAR_DNSTAP_TLS_SERVER_NAME 424 -#define VAR_DNSTAP_TLS_CERT_BUNDLE 425 -#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 426 -#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 427 -#define VAR_DNSTAP_SEND_IDENTITY 428 -#define VAR_DNSTAP_SEND_VERSION 429 -#define VAR_DNSTAP_BIDIRECTIONAL 430 -#define VAR_DNSTAP_IDENTITY 431 -#define VAR_DNSTAP_VERSION 432 -#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 433 -#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 434 -#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 435 -#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 436 -#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 437 -#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 438 -#define VAR_RESPONSE_IP_TAG 439 -#define VAR_RESPONSE_IP 440 -#define VAR_RESPONSE_IP_DATA 441 -#define VAR_HARDEN_ALGO_DOWNGRADE 442 -#define VAR_IP_TRANSPARENT 443 -#define VAR_IP_DSCP 444 -#define VAR_DISABLE_DNSSEC_LAME_CHECK 445 -#define VAR_IP_RATELIMIT 446 -#define VAR_IP_RATELIMIT_SLABS 447 -#define VAR_IP_RATELIMIT_SIZE 448 -#define VAR_RATELIMIT 449 -#define VAR_RATELIMIT_SLABS 450 -#define VAR_RATELIMIT_SIZE 451 -#define VAR_RATELIMIT_FOR_DOMAIN 452 -#define VAR_RATELIMIT_BELOW_DOMAIN 453 -#define VAR_IP_RATELIMIT_FACTOR 454 -#define VAR_RATELIMIT_FACTOR 455 -#define VAR_SEND_CLIENT_SUBNET 456 -#define VAR_CLIENT_SUBNET_ZONE 457 -#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 458 -#define VAR_CLIENT_SUBNET_OPCODE 459 -#define VAR_MAX_CLIENT_SUBNET_IPV4 460 -#define VAR_MAX_CLIENT_SUBNET_IPV6 461 -#define VAR_MIN_CLIENT_SUBNET_IPV4 462 -#define VAR_MIN_CLIENT_SUBNET_IPV6 463 -#define VAR_MAX_ECS_TREE_SIZE_IPV4 464 -#define VAR_MAX_ECS_TREE_SIZE_IPV6 465 -#define VAR_CAPS_WHITELIST 466 -#define VAR_CACHE_MAX_NEGATIVE_TTL 467 -#define VAR_PERMIT_SMALL_HOLDDOWN 468 -#define VAR_QNAME_MINIMISATION 469 -#define VAR_QNAME_MINIMISATION_STRICT 470 -#define VAR_IP_FREEBIND 471 -#define VAR_DEFINE_TAG 472 -#define VAR_LOCAL_ZONE_TAG 473 -#define VAR_ACCESS_CONTROL_TAG 474 -#define VAR_LOCAL_ZONE_OVERRIDE 475 -#define VAR_ACCESS_CONTROL_TAG_ACTION 476 -#define VAR_ACCESS_CONTROL_TAG_DATA 477 -#define VAR_VIEW 478 -#define VAR_ACCESS_CONTROL_VIEW 479 -#define VAR_VIEW_FIRST 480 -#define VAR_SERVE_EXPIRED 481 -#define VAR_SERVE_EXPIRED_TTL 482 -#define VAR_SERVE_EXPIRED_TTL_RESET 483 -#define VAR_SERVE_EXPIRED_REPLY_TTL 484 -#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 485 -#define VAR_SERVE_ORIGINAL_TTL 486 -#define VAR_FAKE_DSA 487 -#define VAR_FAKE_SHA1 488 -#define VAR_LOG_IDENTITY 489 -#define VAR_HIDE_TRUSTANCHOR 490 -#define VAR_TRUST_ANCHOR_SIGNALING 491 -#define VAR_AGGRESSIVE_NSEC 492 -#define VAR_USE_SYSTEMD 493 -#define VAR_SHM_ENABLE 494 -#define VAR_SHM_KEY 495 -#define VAR_ROOT_KEY_SENTINEL 496 -#define VAR_DNSCRYPT 497 -#define VAR_DNSCRYPT_ENABLE 498 -#define VAR_DNSCRYPT_PORT 499 -#define VAR_DNSCRYPT_PROVIDER 500 -#define VAR_DNSCRYPT_SECRET_KEY 501 -#define VAR_DNSCRYPT_PROVIDER_CERT 502 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 503 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 504 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 505 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 506 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 507 -#define VAR_PAD_RESPONSES 508 -#define VAR_PAD_RESPONSES_BLOCK_SIZE 509 -#define VAR_PAD_QUERIES 510 -#define VAR_PAD_QUERIES_BLOCK_SIZE 511 -#define VAR_IPSECMOD_ENABLED 512 -#define VAR_IPSECMOD_HOOK 513 -#define VAR_IPSECMOD_IGNORE_BOGUS 514 -#define VAR_IPSECMOD_MAX_TTL 515 -#define VAR_IPSECMOD_WHITELIST 516 -#define VAR_IPSECMOD_STRICT 517 -#define VAR_CACHEDB 518 -#define VAR_CACHEDB_BACKEND 519 -#define VAR_CACHEDB_SECRETSEED 520 -#define VAR_CACHEDB_REDISHOST 521 -#define VAR_CACHEDB_REDISPORT 522 -#define VAR_CACHEDB_REDISTIMEOUT 523 -#define VAR_CACHEDB_REDISEXPIRERECORDS 524 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 525 -#define VAR_FOR_UPSTREAM 526 -#define VAR_AUTH_ZONE 527 -#define VAR_ZONEFILE 528 -#define VAR_MASTER 529 -#define VAR_URL 530 -#define VAR_FOR_DOWNSTREAM 531 -#define VAR_FALLBACK_ENABLED 532 -#define VAR_TLS_ADDITIONAL_PORT 533 -#define VAR_LOW_RTT 534 -#define VAR_LOW_RTT_PERMIL 535 -#define VAR_FAST_SERVER_PERMIL 536 -#define VAR_FAST_SERVER_NUM 537 -#define VAR_ALLOW_NOTIFY 538 -#define VAR_TLS_WIN_CERT 539 -#define VAR_TCP_CONNECTION_LIMIT 540 -#define VAR_FORWARD_NO_CACHE 541 -#define VAR_STUB_NO_CACHE 542 -#define VAR_LOG_SERVFAIL 543 -#define VAR_DENY_ANY 544 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 545 -#define VAR_LOG_TAG_QUERYREPLY 546 -#define VAR_STREAM_WAIT_SIZE 547 -#define VAR_TLS_CIPHERS 548 -#define VAR_TLS_CIPHERSUITES 549 -#define VAR_TLS_USE_SNI 550 -#define VAR_IPSET 551 -#define VAR_IPSET_NAME_V4 552 -#define VAR_IPSET_NAME_V6 553 -#define VAR_TLS_SESSION_TICKET_KEYS 554 -#define VAR_RPZ 555 -#define VAR_TAGS 556 -#define VAR_RPZ_ACTION_OVERRIDE 557 -#define VAR_RPZ_CNAME_OVERRIDE 558 -#define VAR_RPZ_LOG 559 -#define VAR_RPZ_LOG_NAME 560 -#define VAR_DYNLIB 561 -#define VAR_DYNLIB_FILE 562 -#define VAR_EDNS_CLIENT_STRING 563 -#define VAR_EDNS_CLIENT_STRING_OPCODE 564 -#define VAR_NSID 565 -#define VAR_ZONEMD_PERMISSIVE_MODE 566 -#define VAR_ZONEMD_REJECT_ABSENCE 567 +#define VAR_TCP_AUTH_QUERY_TIMEOUT 392 +#define VAR_SSL_SERVICE_KEY 393 +#define VAR_SSL_SERVICE_PEM 394 +#define VAR_SSL_PORT 395 +#define VAR_FORWARD_FIRST 396 +#define VAR_STUB_SSL_UPSTREAM 397 +#define VAR_FORWARD_SSL_UPSTREAM 398 +#define VAR_TLS_CERT_BUNDLE 399 +#define VAR_HTTPS_PORT 400 +#define VAR_HTTP_ENDPOINT 401 +#define VAR_HTTP_MAX_STREAMS 402 +#define VAR_HTTP_QUERY_BUFFER_SIZE 403 +#define VAR_HTTP_RESPONSE_BUFFER_SIZE 404 +#define VAR_HTTP_NODELAY 405 +#define VAR_HTTP_NOTLS_DOWNSTREAM 406 +#define VAR_STUB_FIRST 407 +#define VAR_MINIMAL_RESPONSES 408 +#define VAR_RRSET_ROUNDROBIN 409 +#define VAR_MAX_UDP_SIZE 410 +#define VAR_DELAY_CLOSE 411 +#define VAR_UDP_CONNECT 412 +#define VAR_UNBLOCK_LAN_ZONES 413 +#define VAR_INSECURE_LAN_ZONES 414 +#define VAR_INFRA_CACHE_MIN_RTT 415 +#define VAR_INFRA_KEEP_PROBING 416 +#define VAR_DNS64_PREFIX 417 +#define VAR_DNS64_SYNTHALL 418 +#define VAR_DNS64_IGNORE_AAAA 419 +#define VAR_DNSTAP 420 +#define VAR_DNSTAP_ENABLE 421 +#define VAR_DNSTAP_SOCKET_PATH 422 +#define VAR_DNSTAP_IP 423 +#define VAR_DNSTAP_TLS 424 +#define VAR_DNSTAP_TLS_SERVER_NAME 425 +#define VAR_DNSTAP_TLS_CERT_BUNDLE 426 +#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 427 +#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 428 +#define VAR_DNSTAP_SEND_IDENTITY 429 +#define VAR_DNSTAP_SEND_VERSION 430 +#define VAR_DNSTAP_BIDIRECTIONAL 431 +#define VAR_DNSTAP_IDENTITY 432 +#define VAR_DNSTAP_VERSION 433 +#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 434 +#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 435 +#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 436 +#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 437 +#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 438 +#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 439 +#define VAR_RESPONSE_IP_TAG 440 +#define VAR_RESPONSE_IP 441 +#define VAR_RESPONSE_IP_DATA 442 +#define VAR_HARDEN_ALGO_DOWNGRADE 443 +#define VAR_IP_TRANSPARENT 444 +#define VAR_IP_DSCP 445 +#define VAR_DISABLE_DNSSEC_LAME_CHECK 446 +#define VAR_IP_RATELIMIT 447 +#define VAR_IP_RATELIMIT_SLABS 448 +#define VAR_IP_RATELIMIT_SIZE 449 +#define VAR_RATELIMIT 450 +#define VAR_RATELIMIT_SLABS 451 +#define VAR_RATELIMIT_SIZE 452 +#define VAR_RATELIMIT_FOR_DOMAIN 453 +#define VAR_RATELIMIT_BELOW_DOMAIN 454 +#define VAR_IP_RATELIMIT_FACTOR 455 +#define VAR_RATELIMIT_FACTOR 456 +#define VAR_SEND_CLIENT_SUBNET 457 +#define VAR_CLIENT_SUBNET_ZONE 458 +#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 459 +#define VAR_CLIENT_SUBNET_OPCODE 460 +#define VAR_MAX_CLIENT_SUBNET_IPV4 461 +#define VAR_MAX_CLIENT_SUBNET_IPV6 462 +#define VAR_MIN_CLIENT_SUBNET_IPV4 463 +#define VAR_MIN_CLIENT_SUBNET_IPV6 464 +#define VAR_MAX_ECS_TREE_SIZE_IPV4 465 +#define VAR_MAX_ECS_TREE_SIZE_IPV6 466 +#define VAR_CAPS_WHITELIST 467 +#define VAR_CACHE_MAX_NEGATIVE_TTL 468 +#define VAR_PERMIT_SMALL_HOLDDOWN 469 +#define VAR_QNAME_MINIMISATION 470 +#define VAR_QNAME_MINIMISATION_STRICT 471 +#define VAR_IP_FREEBIND 472 +#define VAR_DEFINE_TAG 473 +#define VAR_LOCAL_ZONE_TAG 474 +#define VAR_ACCESS_CONTROL_TAG 475 +#define VAR_LOCAL_ZONE_OVERRIDE 476 +#define VAR_ACCESS_CONTROL_TAG_ACTION 477 +#define VAR_ACCESS_CONTROL_TAG_DATA 478 +#define VAR_VIEW 479 +#define VAR_ACCESS_CONTROL_VIEW 480 +#define VAR_VIEW_FIRST 481 +#define VAR_SERVE_EXPIRED 482 +#define VAR_SERVE_EXPIRED_TTL 483 +#define VAR_SERVE_EXPIRED_TTL_RESET 484 +#define VAR_SERVE_EXPIRED_REPLY_TTL 485 +#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 486 +#define VAR_SERVE_ORIGINAL_TTL 487 +#define VAR_FAKE_DSA 488 +#define VAR_FAKE_SHA1 489 +#define VAR_LOG_IDENTITY 490 +#define VAR_HIDE_TRUSTANCHOR 491 +#define VAR_TRUST_ANCHOR_SIGNALING 492 +#define VAR_AGGRESSIVE_NSEC 493 +#define VAR_USE_SYSTEMD 494 +#define VAR_SHM_ENABLE 495 +#define VAR_SHM_KEY 496 +#define VAR_ROOT_KEY_SENTINEL 497 +#define VAR_DNSCRYPT 498 +#define VAR_DNSCRYPT_ENABLE 499 +#define VAR_DNSCRYPT_PORT 500 +#define VAR_DNSCRYPT_PROVIDER 501 +#define VAR_DNSCRYPT_SECRET_KEY 502 +#define VAR_DNSCRYPT_PROVIDER_CERT 503 +#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 504 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 505 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 506 +#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 507 +#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 508 +#define VAR_PAD_RESPONSES 509 +#define VAR_PAD_RESPONSES_BLOCK_SIZE 510 +#define VAR_PAD_QUERIES 511 +#define VAR_PAD_QUERIES_BLOCK_SIZE 512 +#define VAR_IPSECMOD_ENABLED 513 +#define VAR_IPSECMOD_HOOK 514 +#define VAR_IPSECMOD_IGNORE_BOGUS 515 +#define VAR_IPSECMOD_MAX_TTL 516 +#define VAR_IPSECMOD_WHITELIST 517 +#define VAR_IPSECMOD_STRICT 518 +#define VAR_CACHEDB 519 +#define VAR_CACHEDB_BACKEND 520 +#define VAR_CACHEDB_SECRETSEED 521 +#define VAR_CACHEDB_REDISHOST 522 +#define VAR_CACHEDB_REDISPORT 523 +#define VAR_CACHEDB_REDISTIMEOUT 524 +#define VAR_CACHEDB_REDISEXPIRERECORDS 525 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 526 +#define VAR_FOR_UPSTREAM 527 +#define VAR_AUTH_ZONE 528 +#define VAR_ZONEFILE 529 +#define VAR_MASTER 530 +#define VAR_URL 531 +#define VAR_FOR_DOWNSTREAM 532 +#define VAR_FALLBACK_ENABLED 533 +#define VAR_TLS_ADDITIONAL_PORT 534 +#define VAR_LOW_RTT 535 +#define VAR_LOW_RTT_PERMIL 536 +#define VAR_FAST_SERVER_PERMIL 537 +#define VAR_FAST_SERVER_NUM 538 +#define VAR_ALLOW_NOTIFY 539 +#define VAR_TLS_WIN_CERT 540 +#define VAR_TCP_CONNECTION_LIMIT 541 +#define VAR_FORWARD_NO_CACHE 542 +#define VAR_STUB_NO_CACHE 543 +#define VAR_LOG_SERVFAIL 544 +#define VAR_DENY_ANY 545 +#define VAR_UNKNOWN_SERVER_TIME_LIMIT 546 +#define VAR_LOG_TAG_QUERYREPLY 547 +#define VAR_STREAM_WAIT_SIZE 548 +#define VAR_TLS_CIPHERS 549 +#define VAR_TLS_CIPHERSUITES 550 +#define VAR_TLS_USE_SNI 551 +#define VAR_IPSET 552 +#define VAR_IPSET_NAME_V4 553 +#define VAR_IPSET_NAME_V6 554 +#define VAR_TLS_SESSION_TICKET_KEYS 555 +#define VAR_RPZ 556 +#define VAR_TAGS 557 +#define VAR_RPZ_ACTION_OVERRIDE 558 +#define VAR_RPZ_CNAME_OVERRIDE 559 +#define VAR_RPZ_LOG 560 +#define VAR_RPZ_LOG_NAME 561 +#define VAR_DYNLIB 562 +#define VAR_DYNLIB_FILE 563 +#define VAR_EDNS_CLIENT_STRING 564 +#define VAR_EDNS_CLIENT_STRING_OPCODE 565 +#define VAR_NSID 566 +#define VAR_ZONEMD_PERMISSIVE_MODE 567 +#define VAR_ZONEMD_REJECT_ABSENCE 568 + + + -/* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -union YYSTYPE +typedef union YYSTYPE +#line 66 "util/configparser.y" { -#line 66 "./util/configparser.y" - char* str; - -#line 694 "util/configparser.h" - -}; -typedef union YYSTYPE YYSTYPE; -# define YYSTYPE_IS_TRIVIAL 1 +} +/* Line 1529 of yacc.c. */ +#line 679 "util/configparser.h" + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 #endif - extern YYSTYPE yylval; -int yyparse (void); - -#endif /* !YY_YY_UTIL_CONFIGPARSER_H_INCLUDED */ diff --git a/util/configparser.y b/util/configparser.y index 3561630b3..6a8f83112 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -109,7 +109,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_DEL_HOLDDOWN VAR_SO_RCVBUF VAR_EDNS_BUFFER_SIZE VAR_PREFETCH %token VAR_PREFETCH_KEY VAR_SO_SNDBUF VAR_SO_REUSEPORT VAR_HARDEN_BELOW_NXDOMAIN %token VAR_IGNORE_CD_FLAG VAR_LOG_QUERIES VAR_LOG_REPLIES VAR_LOG_LOCAL_ACTIONS -%token VAR_TCP_UPSTREAM VAR_SSL_UPSTREAM +%token VAR_TCP_UPSTREAM VAR_SSL_UPSTREAM VAR_TCP_AUTH_QUERY_TIMEOUT %token VAR_SSL_SERVICE_KEY VAR_SSL_SERVICE_PEM VAR_SSL_PORT VAR_FORWARD_FIRST %token VAR_STUB_SSL_UPSTREAM VAR_FORWARD_SSL_UPSTREAM VAR_TLS_CERT_BUNDLE %token VAR_HTTPS_PORT VAR_HTTP_ENDPOINT VAR_HTTP_MAX_STREAMS @@ -302,7 +302,7 @@ content_server: server_num_threads | server_verbosity | server_port | server_tls_use_sni | server_edns_client_string | server_edns_client_string_opcode | server_nsid | server_zonemd_permissive_mode | server_max_reuse_tcp_queries | - server_tcp_reuse_timeout + server_tcp_reuse_timeout | server_tcp_auth_query_timeout ; stubstart: VAR_STUB_ZONE @@ -883,6 +883,17 @@ server_tcp_reuse_timeout: VAR_TCP_REUSE_TIMEOUT STRING_ARG free($2); } ; +server_tcp_auth_query_timeout: VAR_TCP_AUTH_QUERY_TIMEOUT STRING_ARG + { + OUTYY(("P(server_tcp_auth_query_timeout:%s)\n", $2)); + if(atoi($2) == 0 && strcmp($2, "0") != 0) + yyerror("number expected"); + else if (atoi($2) < 1) + cfg_parser->cfg->tcp_auth_query_timeout = 0; + else cfg_parser->cfg->tcp_auth_query_timeout = atoi($2); + free($2); + } + ; server_tcp_keepalive: VAR_EDNS_TCP_KEEPALIVE STRING_ARG { OUTYY(("P(server_tcp_keepalive:%s)\n", $2)); diff --git a/util/net_help.h b/util/net_help.h index 45b607a43..114f4cdb5 100644 --- a/util/net_help.h +++ b/util/net_help.h @@ -76,8 +76,6 @@ struct config_strlist; /** timeout in milliseconds for UDP queries to auth servers. */ #define UDP_AUTH_QUERY_TIMEOUT 3000 -/** timeout in milliseconds for TCP queries to auth servers. */ -#define TCP_AUTH_QUERY_TIMEOUT 3000 /** Advertised version of EDNS capabilities */ #define EDNS_ADVERTISED_VERSION 0 /** Advertised size of EDNS capabilities */ From ecb8aed2f2cbe38bf8cc011edd8817f9bf9b0be4 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 29 Apr 2021 10:24:35 +0200 Subject: [PATCH 087/553] - Add that log-servfail prints an IP address and more information about one of the last failures for that query. --- doc/Changelog | 4 +++ ipsecmod/ipsecmod.c | 6 ++++ iterator/iterator.c | 65 +++++++++++++++++++++++++++++++++++++++++++- iterator/iterator.h | 6 ++++ testcode/testbound.c | 1 + 5 files changed, 81 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 35ee6786f..6f1b4c3a2 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +29 April 2021: Wouter + - Add that log-servfail prints an IP address and more information + about one of the last failures for that query. + 28 April 2021: George - Fix compiler warning for signed/unsigned comparison for max_reuse_tcp_queries. diff --git a/ipsecmod/ipsecmod.c b/ipsecmod/ipsecmod.c index e443e882b..e42af6f49 100644 --- a/ipsecmod/ipsecmod.c +++ b/ipsecmod/ipsecmod.c @@ -419,6 +419,7 @@ ipsecmod_handle_query(struct module_qstate* qstate, if(!qstate->env->cfg->ipsecmod_ignore_bogus && rrset_data->security == sec_status_bogus) { log_err("ipsecmod: bogus IPSECKEY"); + errinf(qstate, "ipsecmod: bogus IPSECKEY"); ipsecmod_error(qstate, id); return; } @@ -426,6 +427,7 @@ ipsecmod_handle_query(struct module_qstate* qstate, if(!call_hook(qstate, iq, ie) && qstate->env->cfg->ipsecmod_strict) { log_err("ipsecmod: ipsecmod-hook failed"); + errinf(qstate, "ipsecmod: ipsecmod-hook failed"); ipsecmod_error(qstate, id); return; } @@ -497,6 +499,7 @@ ipsecmod_handle_response(struct module_qstate* qstate, qstate->qinfo.qname_len, LDNS_RR_TYPE_IPSECKEY, qstate->qinfo.qclass, 0)) { log_err("ipsecmod: could not generate subquery."); + errinf(qstate, "ipsecmod: could not generate subquery."); ipsecmod_error(qstate, id); } return; @@ -520,6 +523,7 @@ ipsecmod_operate(struct module_qstate* qstate, enum module_ev event, int id, if((event == module_event_new || event == module_event_pass) && iq == NULL) { if(!ipsecmod_new(qstate, id)) { + errinf(qstate, "ipsecmod: could not ipsecmod_new"); ipsecmod_error(qstate, id); return; } @@ -542,6 +546,7 @@ ipsecmod_operate(struct module_qstate* qstate, enum module_ev event, int id, } if(event == module_event_error) { verbose(VERB_ALGO, "got called with event error, giving up"); + errinf(qstate, "ipsecmod: got called with event error"); ipsecmod_error(qstate, id); return; } @@ -552,6 +557,7 @@ ipsecmod_operate(struct module_qstate* qstate, enum module_ev event, int id, } log_err("ipsecmod: bad event %s", strmodulevent(event)); + errinf(qstate, "ipsecmod: operate got bad event"); ipsecmod_error(qstate, id); return; } diff --git a/iterator/iterator.c b/iterator/iterator.c index 0f662304d..f0105ad4b 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -585,6 +585,60 @@ handle_cname_response(struct module_qstate* qstate, struct iter_qstate* iq, return 1; } +/** add response specific error information for log servfail */ +static void +errinf_reply(struct module_qstate* qstate, struct iter_qstate* iq) +{ + if(qstate->env->cfg->val_log_level < 2 && !qstate->env->cfg->log_servfail) + return; + if((qstate->reply && qstate->reply->addrlen != 0) || + (iq->fail_reply && iq->fail_reply->addrlen != 0)) { + char from[256], frm[512]; + if(qstate->reply && qstate->reply->addrlen != 0) + addr_to_str(&qstate->reply->addr, qstate->reply->addrlen, + from, sizeof(from)); + else + addr_to_str(&iq->fail_reply->addr, iq->fail_reply->addrlen, + from, sizeof(from)); + snprintf(frm, sizeof(frm), "from %s", from); + errinf(qstate, frm); + } + if(iq->scrub_failures || iq->parse_failures) { + if(iq->scrub_failures) + errinf(qstate, "upstream response failed scrub"); + if(iq->parse_failures) + errinf(qstate, "could not parse upstream response"); + } else if(iq->response == NULL && iq->timeout_count != 0) { + errinf(qstate, "upstream server timeout"); + } else if(iq->response == NULL) { + errinf(qstate, "no server to query"); + if(iq->dp) { + if(iq->dp->target_list == NULL) + errinf(qstate, "no addresses for nameservers"); + else errinf(qstate, "nameserver addresses not usable"); + if(iq->dp->nslist == NULL) + errinf(qstate, "have no nameserver names"); + if(iq->dp->bogus) + errinf(qstate, "NS record was dnssec bogus"); + } + } + if(iq->response && iq->response->rep) { + if(FLAGS_GET_RCODE(iq->response->rep->flags) != 0) { + char rcode[256], rc[32]; + (void)sldns_wire2str_rcode_buf( + FLAGS_GET_RCODE(iq->response->rep->flags), + rc, sizeof(rc)); + snprintf(rcode, sizeof(rcode), "got %s", rc); + errinf(qstate, rcode); + } else { + /* rcode NOERROR */ + if(iq->response->rep->an_numrrsets == 0) { + errinf(qstate, "nodata answer"); + } + } + } +} + /** see if last resort is possible - does config allow queries to parent */ static int can_have_last_resort(struct module_env* env, uint8_t* nm, size_t nmlen, @@ -1922,6 +1976,7 @@ processLastResort(struct module_qstate* qstate, struct iter_qstate* iq, * of a response. */ errinf(qstate, "all the configured stub or forward servers failed,"); errinf_dname(qstate, "at zone", iq->dp->name); + errinf_reply(qstate, iq); verbose(VERB_QUERY, "configured stub or forward servers failed -- returning SERVFAIL"); return error_response_cache(qstate, id, LDNS_RCODE_SERVFAIL); } @@ -2068,6 +2123,7 @@ processLastResort(struct module_qstate* qstate, struct iter_qstate* iq, errinf(qstate, "all servers for this domain failed,"); errinf_dname(qstate, "at zone", iq->dp->name); + errinf_reply(qstate, iq); verbose(VERB_QUERY, "out of query targets -- returning SERVFAIL"); /* fail -- no more targets, no more hope of targets, no hope * of a response. */ @@ -2959,6 +3015,8 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq, qstate->env->detach_subs)); (*qstate->env->detach_subs)(qstate); iq->num_target_queries = 0; + iq->response = NULL; + iq->fail_reply = NULL; verbose(VERB_ALGO, "cleared outbound list for next round"); return next_state(iq, QUERYTARGETS_STATE); } else if(type == RESPONSE_TYPE_CNAME) { @@ -3722,6 +3780,7 @@ process_response(struct module_qstate* qstate, struct iter_qstate* iq, } /* parse message */ + iq->fail_reply = qstate->reply; prs = (struct msg_parse*)regional_alloc(qstate->env->scratch, sizeof(struct msg_parse)); if(!prs) { @@ -3735,12 +3794,15 @@ process_response(struct module_qstate* qstate, struct iter_qstate* iq, sldns_buffer_set_position(pkt, 0); if(parse_packet(pkt, prs, qstate->env->scratch) != LDNS_RCODE_NOERROR) { verbose(VERB_ALGO, "parse error on reply packet"); + iq->parse_failures++; goto handle_it; } /* edns is not examined, but removed from message to help cache */ if(parse_extract_edns(prs, &edns, qstate->env->scratch) != - LDNS_RCODE_NOERROR) + LDNS_RCODE_NOERROR) { + iq->parse_failures++; goto handle_it; + } /* Copy the edns options we may got from the back end */ if(edns.opt_list) { @@ -3774,6 +3836,7 @@ process_response(struct module_qstate* qstate, struct iter_qstate* iq, iq->num_current_queries--; verbose(VERB_DETAIL, "Capsforid: scrub failed, starting fallback with no response"); } + iq->scrub_failures++; goto handle_it; } diff --git a/iterator/iterator.h b/iterator/iterator.h index 342ac207e..7952f26df 100644 --- a/iterator/iterator.h +++ b/iterator/iterator.h @@ -406,6 +406,12 @@ struct iter_qstate { int auth_zone_response; /** True if the auth_zones should not be consulted for the query */ int auth_zone_avoid; + /** true if there have been scrubbing failures of reply packets */ + int scrub_failures; + /** true if there have been parse failures of reply packets */ + int parse_failures; + /** a failure printout address for last received answer */ + struct comm_reply* fail_reply; }; /** diff --git a/testcode/testbound.c b/testcode/testbound.c index 5e10779fc..a7cf27a73 100644 --- a/testcode/testbound.c +++ b/testcode/testbound.c @@ -279,6 +279,7 @@ setup_config(FILE* in, int* lineno, int* pass_argc, char* pass_argv[]) fprintf(cfg, " username: \"\"\n"); fprintf(cfg, " pidfile: \"\"\n"); fprintf(cfg, " val-log-level: 2\n"); + fprintf(cfg, " log-servfail: yes\n"); fprintf(cfg, "remote-control: control-enable: no\n"); while(fgets(line, MAX_LINE_LEN-1, in)) { parse = line; From 3f230f4aaf78f4a306d608a28726c76fbf0d8ccb Mon Sep 17 00:00:00 2001 From: Paul Menzel Date: Mon, 3 May 2021 12:54:11 +0200 Subject: [PATCH 088/553] doc/example.conf.in: Clarify comment for `auto-trust-anchor-file` Remove `And enable:` as it refers to the uncommented option. Fixes: 01dd4a35 ("- Added explicit note on unbound-anchor usage:") --- doc/example.conf.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/example.conf.in b/doc/example.conf.in index 17b1b7741..2149b2258 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -507,7 +507,7 @@ server: # Use several entries, one per domain name, to track multiple zones. # # If you want to perform DNSSEC validation, run unbound-anchor before - # you start unbound (i.e. in the system boot scripts). And enable: + # you start unbound (i.e. in the system boot scripts). # Please note usage of unbound-anchor root anchor is at your own risk # and under the terms of our LICENSE (see that file in the source). # auto-trust-anchor-file: "@UNBOUND_ROOTKEY_FILE@" From 728a3cd7a6acc7d7dfa66e8b91704db0c86bbf71 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 3 May 2021 13:07:12 +0200 Subject: [PATCH 089/553] Changelog note and improved comment. - Fix #481: Fix comment in configuration file. --- doc/Changelog | 3 +++ doc/example.conf.in | 1 + 2 files changed, 4 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 6f1b4c3a2..a3a93926b 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +3 May 2021: Wouter + - Fix #481: Fix comment in configuration file. + 29 April 2021: Wouter - Add that log-servfail prints an IP address and more information about one of the last failures for that query. diff --git a/doc/example.conf.in b/doc/example.conf.in index 2149b2258..0a250bc79 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -508,6 +508,7 @@ server: # # If you want to perform DNSSEC validation, run unbound-anchor before # you start unbound (i.e. in the system boot scripts). + # And then enable the auto-trust-anchor-file config item. # Please note usage of unbound-anchor root anchor is at your own risk # and under the terms of our LICENSE (see that file in the source). # auto-trust-anchor-file: "@UNBOUND_ROOTKEY_FILE@" From dea1da8d7f34f521b89a180c358c0de58e20e399 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 4 May 2021 10:25:32 +0200 Subject: [PATCH 090/553] Changelog note for #478 - Merge #478: Allow configuration of TCP timeout while waiting for response. --- doc/Changelog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index a3a93926b..ac80f79b5 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +4 May 2021: Wouter + - Merge #478: Allow configuration of TCP timeout while waiting for + response. + 3 May 2021: Wouter - Fix #481: Fix comment in configuration file. From edf35336a3c4bcdcf3c018dab2b13c6c75d9e271 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Tue, 4 May 2021 13:42:00 +0200 Subject: [PATCH 091/553] Clearer template text since not everyone can reopen GitHub issues. --- .github/ISSUE_TEMPLATE/bug_report.md | 4 ++-- .github/ISSUE_TEMPLATE/feature_request.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 3b783bb63..35d7ee94f 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -10,12 +10,12 @@ assignees: '' diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 1a3910694..e9ca08b7a 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -10,12 +10,12 @@ assignees: '' From 71f311dbe1a3a7d074916b877d74b25d6825ec3d Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Tue, 4 May 2021 14:45:01 +0200 Subject: [PATCH 092/553] - Fix for #367: only attempt to get the interface for queries that are no longer on the tcp_waiting_list. --- doc/Changelog | 4 ++++ services/outside_network.c | 10 +++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index ac80f79b5..6edbcf969 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +4 May 2021: George + - Fix for #367: only attempt to get the interface for queries that are no + longer on the tcp_waiting_list. + 4 May 2021: Wouter - Merge #478: Allow configuration of TCP timeout while waiting for response. diff --git a/services/outside_network.c b/services/outside_network.c index 5fb4f3faa..a1c18c617 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -2783,8 +2783,12 @@ serviced_tcp_callback(struct comm_point* c, void* arg, int error, struct comm_reply r2; #ifdef USE_DNSTAP struct waiting_tcp* w = (struct waiting_tcp*)sq->pending; - struct pending_tcp* pend_tcp = (struct pending_tcp*)w->next_waiting; - struct port_if* pi = pend_tcp->pi; + struct pending_tcp* pend_tcp = NULL; + struct port_if* pi = NULL; + if(!w->on_tcp_waiting_list && w->next_waiting) { + pend_tcp = (struct pending_tcp*)w->next_waiting; + pi = pend_tcp->pi; + } #endif sq->pending = NULL; /* removed after this callback */ if(error != NETEVENT_NOERROR) @@ -2797,7 +2801,7 @@ serviced_tcp_callback(struct comm_point* c, void* arg, int error, /* * sending src (local service)/dst (upstream) addresses over DNSTAP */ - if(error==NETEVENT_NOERROR && sq->outnet->dtenv && + if(error==NETEVENT_NOERROR && pi && sq->outnet->dtenv && (sq->outnet->dtenv->log_resolver_response_messages || sq->outnet->dtenv->log_forwarder_response_messages)) { log_addr(VERB_ALGO, "response from upstream", &sq->addr, sq->addrlen); From e9a5f5ab3f387d5982bc36cd97044ce18bf99c3f Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Tue, 4 May 2021 15:39:06 +0200 Subject: [PATCH 093/553] - Add more logging for out-of-memory cases. --- daemon/worker.c | 14 ++++++++++---- doc/Changelog | 1 + util/data/msgreply.c | 10 ++++++++-- validator/val_anchor.c | 4 ++++ 4 files changed, 23 insertions(+), 6 deletions(-) diff --git a/daemon/worker.c b/daemon/worker.c index 7537bd33d..e9e163a04 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -1850,6 +1850,11 @@ worker_init(struct worker* worker, struct config_file *cfg, return 0; } worker->env.mesh = mesh_create(&worker->daemon->mods, &worker->env); + if(!worker->env.mesh) { + log_err("malloc failure"); + worker_delete(worker); + return 0; + } /* Pass on daemon variables that we would need in the mesh area */ worker->env.mesh->use_response_ip = worker->daemon->use_response_ip; worker->env.mesh->use_rpz = worker->daemon->use_rpz; @@ -1860,6 +1865,11 @@ worker_init(struct worker* worker, struct config_file *cfg, worker->env.kill_sub = &mesh_state_delete; worker->env.detect_cycle = &mesh_detect_cycle; worker->env.scratch_buffer = sldns_buffer_new(cfg->msg_buffer_size); + if(!worker->env.scratch_buffer) { + log_err("malloc failure"); + worker_delete(worker); + return 0; + } if(!(worker->env.fwds = forwards_create()) || !forwards_apply_cfg(worker->env.fwds, cfg)) { log_err("Could not set forward zones"); @@ -1914,10 +1924,6 @@ worker_init(struct worker* worker, struct config_file *cfg, } } #endif /* USE_DNSTAP */ - if(!worker->env.mesh || !worker->env.scratch_buffer) { - worker_delete(worker); - return 0; - } worker_mem_report(worker, NULL); /* if statistics enabled start timer */ if(worker->env.cfg->stat_interval > 0) { diff --git a/doc/Changelog b/doc/Changelog index 6edbcf969..18cb98ae5 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,7 @@ 4 May 2021: George - Fix for #367: only attempt to get the interface for queries that are no longer on the tcp_waiting_list. + - Add more logging for out-of-memory cases. 4 May 2021: Wouter - Merge #478: Allow configuration of TCP timeout while waiting for diff --git a/util/data/msgreply.c b/util/data/msgreply.c index 4830b343f..48550cbe4 100644 --- a/util/data/msgreply.c +++ b/util/data/msgreply.c @@ -825,9 +825,15 @@ log_dns_msg(const char* str, struct query_info* qinfo, struct reply_info* rep) /* not particularly fast but flexible, make wireformat and print */ sldns_buffer* buf = sldns_buffer_new(65535); struct regional* region = regional_create(); - if(!reply_info_encode(qinfo, rep, 0, rep->flags, buf, 0, + if(!(buf && region)) { + log_err("%s: log_dns_msg: out of memory", str); + sldns_buffer_free(buf); + regional_destroy(region); + return; + } + if(!reply_info_encode(qinfo, rep, 0, rep->flags, buf, 0, region, 65535, 1, 0)) { - log_info("%s: log_dns_msg: out of memory", str); + log_err("%s: log_dns_msg: out of memory", str); } else { char* s = sldns_wire2str_pkt(sldns_buffer_begin(buf), sldns_buffer_limit(buf)); diff --git a/validator/val_anchor.c b/validator/val_anchor.c index 9b6574c5d..52711bbcb 100644 --- a/validator/val_anchor.c +++ b/validator/val_anchor.c @@ -1048,6 +1048,10 @@ anchors_apply_cfg(struct val_anchors* anchors, struct config_file* cfg) const char** zstr; char* nm; sldns_buffer* parsebuf = sldns_buffer_new(65535); + if(!parsebuf) { + log_err("malloc error in anchors_apply_cfg."); + return 0; + } if(cfg->insecure_lan_zones) { for(zstr = as112_zones; *zstr; zstr++) { if(!anchor_insert_insecure(anchors, *zstr)) { From 90d0f8bc19695250a1fcb2235f6a3b4e25098444 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 4 May 2021 16:21:42 +0200 Subject: [PATCH 094/553] - Fix to squelch tcp socket bind failures when the interface is gone. --- doc/Changelog | 1 + services/outside_network.c | 9 ++++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 6edbcf969..ca25ccc4c 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -5,6 +5,7 @@ 4 May 2021: Wouter - Merge #478: Allow configuration of TCP timeout while waiting for response. + - Fix to squelch tcp socket bind failures when the interface is gone. 3 May 2021: Wouter - Fix #481: Fix comment in configuration file. diff --git a/services/outside_network.c b/services/outside_network.c index a1c18c617..9b09aa360 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -238,7 +238,14 @@ pick_outgoing_tcp(struct pending_tcp* pend, struct waiting_tcp* w, int s) ((struct sockaddr_in6*)&pi->addr)->sin6_port = 0; else ((struct sockaddr_in*)&pi->addr)->sin_port = 0; if(bind(s, (struct sockaddr*)&pi->addr, pi->addrlen) != 0) { - log_err("outgoing tcp: bind: %s", sock_strerror(errno)); +#ifndef USE_WINSOCK +#ifdef EADDRNOTAVAIL + if(!(verbosity < 4 && errno == EADDRNOTAVAIL)) +#endif +#else /* USE_WINSOCK */ + if(!(verbosity < 4 && WSAGetLastError() == WSAEADDRNOTAVAIL)) +#endif + log_err("outgoing tcp: bind: %s", sock_strerror(errno)); sock_close(s); return 0; } From 80f06ae9b1e6b15e62b5ba4bf837c45778775496 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 4 May 2021 16:24:16 +0200 Subject: [PATCH 095/553] - Rerun flex and bison. --- doc/Changelog | 1 + util/configlexer.c | 12218 +++++++++--------------------------------- util/configparser.c | 7346 +++++++++++++------------ util/configparser.h | 698 +-- 4 files changed, 6869 insertions(+), 13394 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 811860b5b..cf306ea6b 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -7,6 +7,7 @@ - Merge #478: Allow configuration of TCP timeout while waiting for response. - Fix to squelch tcp socket bind failures when the interface is gone. + - Rerun flex and bison. 3 May 2021: Wouter - Fix #481: Fix comment in configuration file. diff --git a/util/configlexer.c b/util/configlexer.c index fac54a193..06a688467 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -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 347 -#define YY_END_OF_BUFFER 348 +#define YY_NUM_RULES 348 +#define YY_END_OF_BUFFER 349 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -363,384 +363,386 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[3420] = +static const flex_int16_t yy_accept[3439] = { 0, - 1, 1, 321, 321, 325, 325, 329, 329, 333, 333, - 1, 1, 337, 337, 341, 341, 348, 345, 1, 319, - 319, 346, 2, 346, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 321, 322, 322, 323, - 346, 325, 326, 326, 327, 346, 332, 329, 330, 330, - 331, 346, 333, 334, 334, 335, 346, 344, 320, 2, - 324, 346, 344, 340, 337, 338, 338, 339, 346, 341, - 342, 342, 343, 346, 345, 0, 1, 2, 2, 2, - 2, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 1, 1, 322, 322, 326, 326, 330, 330, 334, 334, + 1, 1, 338, 338, 342, 342, 349, 346, 1, 320, + 320, 347, 2, 347, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 322, 323, 323, 324, + 347, 326, 327, 327, 328, 347, 333, 330, 331, 331, + 332, 347, 334, 335, 335, 336, 347, 345, 321, 2, + 325, 347, 345, 341, 338, 339, 339, 340, 347, 342, + 343, 343, 344, 347, 346, 0, 1, 2, 2, 2, + 2, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 321, - 0, 325, 0, 332, 0, 329, 333, 0, 344, 0, - 2, 2, 344, 340, 0, 337, 341, 0, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 322, + 0, 326, 0, 333, 0, 330, 334, 0, 345, 0, + 2, 2, 345, 341, 0, 338, 342, 0, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 344, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 345, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 127, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 136, - 345, 345, 345, 345, 345, 345, 345, 344, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 128, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 137, + 346, 346, 346, 346, 346, 346, 346, 345, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 111, 345, 318, - 345, 345, 345, 345, 345, 345, 345, 8, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 112, 346, 319, + 346, 346, 346, 346, 346, 346, 346, 8, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 345, 345, 345, 345, 345, 345, 345, 128, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 141, - 345, 345, 344, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 346, 346, 346, 346, 346, 346, 346, 129, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 142, 346, 346, 345, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 311, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 312, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 344, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 66, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 243, 345, 14, 15, - 345, 19, 18, 345, 345, 227, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 345, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 67, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 244, 346, + 14, 15, 346, 19, 18, 346, 346, 228, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 345, 345, 345, 345, 345, 345, 345, 134, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 225, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 3, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 135, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 226, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 3, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 344, - 345, 345, 345, 345, 345, 345, 345, 305, 345, 345, - 304, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 328, 345, - 345, 345, 345, 345, 345, 345, 345, 65, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 345, 346, 346, 346, 346, 346, 346, 346, + 306, 346, 346, 305, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 329, 346, 346, 346, 346, 346, 346, 346, 346, + 66, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 345, 345, 345, 345, 69, 345, 274, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 312, 313, 345, 345, - 345, 345, 345, 345, 345, 70, 345, 345, 135, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 131, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 214, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 21, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 346, 346, 346, 346, 346, 346, 346, 70, 346, 275, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 313, + 314, 346, 346, 346, 346, 346, 346, 346, 71, 346, + 346, 136, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 132, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 215, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 21, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 345, 345, 345, 345, 345, 160, 345, 345, 345, 345, - 344, 328, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 109, 345, 345, 345, 345, 345, 345, - 345, 282, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 184, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 159, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 161, + 346, 346, 346, 346, 345, 329, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 110, 346, 346, + 346, 346, 346, 346, 346, 283, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 185, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 160, 346, 346, 346, 346, 346, 346, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 108, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 34, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 35, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 109, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 35, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 36, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 345, 67, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 133, 345, 345, 344, 345, 345, 345, 345, 345, - 126, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 68, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 247, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 185, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 346, 346, 346, 346, 346, 346, 68, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 134, 346, 346, 345, + 346, 346, 346, 346, 346, 127, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 69, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 248, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 186, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 345, 56, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 265, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 60, 345, 61, 345, 345, - 345, 345, 345, 112, 345, 113, 345, 345, 345, 345, - 110, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 346, 346, 346, 346, 346, 346, 57, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 266, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 61, 346, 62, 346, 346, 346, 346, 346, 113, 346, + 114, 346, 346, 346, 346, 111, 346, 346, 346, 346, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 7, 345, 345, 345, 344, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 236, 345, 345, 345, 345, 162, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 248, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 7, 346, 346, + 346, 345, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 237, 346, 346, 346, 346, 163, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 249, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 345, 345, 345, 47, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 57, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 206, 345, - 205, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 16, 17, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 71, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 213, 345, - 345, 345, 345, 345, 345, 115, 345, 114, 345, 345, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 48, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 58, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 207, 346, 206, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 16, 17, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 72, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 214, 346, 346, 346, 346, 346, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 197, 345, 345, 345, 345, 345, 345, 345, 345, - 142, 345, 345, 344, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 103, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 91, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 226, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 96, + 346, 116, 346, 115, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 198, 346, + 346, 346, 346, 346, 346, 346, 346, 143, 346, 346, + 345, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 104, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 92, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 227, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 64, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 200, 201, 345, 345, 345, 276, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 6, - 345, 345, 345, 345, 345, 345, 295, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 280, 345, 345, 345, 345, 345, - 345, 306, 345, 345, 345, 345, 345, 345, 345, 345, + 346, 346, 346, 346, 346, 346, 97, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 65, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 201, 202, 346, + 346, 346, 277, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 6, 346, 346, 346, + 346, 346, 346, 296, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 281, 346, 346, 346, 346, 346, 346, 307, 346, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 44, 345, 345, 345, 345, 46, - 345, 345, 345, 92, 345, 345, 345, 345, 345, 54, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 344, - 345, 193, 345, 345, 345, 137, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 218, 345, 194, 345, - 345, 345, 233, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 55, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 139, 120, 345, 121, 345, 345, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 45, 346, 346, 346, 346, 47, 346, 346, + 346, 93, 346, 346, 346, 346, 346, 55, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 345, 346, 194, + 346, 346, 346, 138, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 219, 346, 195, 346, 346, 346, + 234, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 56, 346, 346, 346, 346, 346, 346, 346, 346, - 345, 119, 345, 345, 345, 345, 345, 345, 345, 345, - 157, 345, 345, 52, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 264, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 195, 345, 345, 345, 345, 345, 198, 345, 204, 345, - 345, 345, 345, 345, 345, 232, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 107, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 132, 345, 345, 345, 345, 345, 345, 345, 62, + 346, 346, 140, 121, 346, 122, 346, 346, 346, 120, + 346, 346, 346, 346, 346, 346, 346, 346, 158, 346, + 346, 53, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 265, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 196, 346, + 346, 346, 346, 346, 199, 346, 205, 346, 346, 346, + 346, 346, 346, 233, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 108, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 133, - 345, 345, 345, 28, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 20, 345, 345, 345, 345, 345, - 345, 29, 38, 345, 167, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 344, 345, 345, 345, 345, 345, 345, 79, 81, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 284, 345, 345, 345, 345, 244, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 122, 345, 345, 345, 345, 345, 345, 345, 345, 345, + 346, 346, 346, 346, 346, 346, 346, 63, 346, 346, + 346, 29, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 20, 346, 346, 346, 346, 346, 346, + 30, 39, 346, 168, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 345, + 346, 346, 346, 346, 346, 346, 80, 82, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 285, 346, 346, 346, 346, 245, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 123, - 156, 345, 48, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 299, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 161, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 293, 345, 345, - 345, 224, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 309, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 178, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 116, 345, 345, 345, 345, 345, 345, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 157, + 346, 49, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 300, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 162, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 294, 346, 346, 346, + 225, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 310, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 179, 346, 346, 346, 346, 346, 346, 346, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 173, 345, 186, 345, 345, 345, - 345, 345, 345, 344, 345, 145, 345, 345, 345, 345, - 345, 102, 345, 345, 345, 345, 216, 345, 345, 345, - 345, 345, 345, 234, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 256, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 138, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 177, 345, 345, 345, - 345, 345, 345, 82, 345, 83, 345, 345, 345, 345, + 346, 346, 117, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 174, 346, 187, 346, 346, 346, + 346, 346, 346, 345, 346, 146, 346, 346, 346, 346, + 346, 103, 346, 346, 346, 346, 217, 346, 346, 346, + 346, 346, 346, 235, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 257, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 139, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 178, 346, 346, 346, - 345, 63, 302, 345, 345, 345, 345, 345, 90, 187, - 345, 207, 345, 237, 345, 345, 199, 277, 345, 345, - 345, 345, 345, 345, 75, 345, 189, 345, 345, 345, - 345, 345, 9, 345, 345, 345, 345, 345, 106, 345, - 345, 345, 345, 269, 345, 345, 345, 345, 215, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 344, 345, + 346, 346, 346, 83, 346, 84, 346, 346, 346, 346, + 346, 64, 303, 346, 346, 346, 346, 346, 91, 188, + 346, 208, 346, 238, 346, 346, 200, 278, 346, 346, + 346, 346, 346, 346, 76, 346, 190, 346, 346, 346, + 346, 346, 9, 346, 346, 346, 346, 346, 107, 346, + 346, 346, 346, 270, 346, 346, 346, 346, 216, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 345, 345, 345, 176, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 163, 345, 283, 345, 345, 345, - 345, 345, 255, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 228, 345, 345, 345, 345, 345, - 275, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 303, 345, 188, 345, 345, 345, 345, 345, 345, - 345, 345, 74, 76, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 105, 345, 345, 345, 345, 267, 345, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 345, + 346, 346, 346, 346, 177, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 164, 346, 284, 346, 346, + 346, 346, 346, 256, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 229, 346, 346, 346, 346, + 346, 276, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 304, 346, 189, 346, 346, 346, 346, 346, + 346, 346, 346, 75, 77, 346, 346, 346, 346, 346, - 345, 345, 345, 279, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 220, 36, 30, 32, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 37, 345, 31, 33, 345, 345, 345, 345, 345, 345, - 345, 345, 101, 345, 345, 345, 345, 345, 345, 345, - 345, 344, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 222, 219, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 73, 345, 345, 345, 140, 345, 123, - 345, 345, 345, 345, 345, 345, 345, 345, 158, 49, + 346, 346, 346, 346, 106, 346, 346, 346, 346, 268, + 346, 346, 346, 346, 280, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 221, 37, 31, + 33, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 38, 346, 32, 34, 346, 346, 346, 346, + 346, 346, 346, 346, 102, 346, 346, 346, 346, 346, + 346, 346, 346, 345, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 223, 220, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 74, 346, 346, 346, 141, - 345, 345, 345, 336, 13, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 297, 345, 300, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 12, - 345, 345, 22, 345, 345, 345, 345, 345, 273, 345, - 345, 345, 345, 281, 345, 345, 345, 77, 345, 230, - 345, 345, 345, 345, 345, 221, 345, 345, 72, 345, - 345, 345, 345, 23, 345, 345, 45, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 172, - 171, 345, 345, 336, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 223, 217, 345, 235, 345, 345, 285, + 346, 124, 346, 346, 346, 346, 346, 346, 346, 346, + 159, 50, 346, 346, 346, 337, 13, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 298, 346, 301, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 12, 346, 346, 22, 346, 346, 346, 346, 346, + 274, 346, 346, 346, 346, 282, 346, 346, 346, 78, + 346, 231, 346, 346, 346, 346, 346, 222, 346, 346, + 73, 346, 346, 346, 346, 346, 23, 346, 346, 46, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 173, 172, 346, 346, 337, 346, 346, 346, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 84, 345, 345, 345, 345, 268, 345, 345, - 345, 345, 203, 345, 345, 345, 345, 345, 229, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 307, 308, 169, 345, 345, 78, 345, 345, 345, 345, - 179, 345, 345, 345, 117, 118, 345, 345, 25, 345, - 345, 164, 345, 166, 345, 208, 345, 345, 345, 345, - 170, 345, 345, 345, 345, 238, 345, 345, 345, 345, + 346, 346, 346, 346, 346, 346, 224, 218, 346, 236, + 346, 346, 286, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 85, 346, 346, 346, 346, + 269, 346, 346, 346, 346, 204, 346, 346, 346, 346, + 346, 230, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 308, 309, 170, 346, 346, 79, 346, + 346, 346, 346, 180, 346, 346, 346, 118, 119, 346, + 346, 346, 25, 346, 346, 165, 346, 167, 346, 209, - 345, 345, 345, 147, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 246, 345, 345, 345, - 345, 345, 345, 345, 316, 345, 26, 345, 278, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 88, 209, 345, 345, 266, 345, 301, - 345, 202, 345, 345, 345, 345, 345, 58, 345, 345, - 345, 345, 345, 345, 4, 345, 345, 345, 345, 130, - 146, 345, 345, 345, 183, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 241, 39, 40, 345, 345, 345, 345, 345, + 346, 346, 346, 346, 171, 346, 346, 346, 346, 239, + 346, 346, 346, 346, 346, 346, 346, 148, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 247, 346, 346, 346, 346, 346, 346, 346, 317, 346, + 27, 346, 279, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 89, 210, 346, + 346, 267, 346, 302, 346, 203, 346, 346, 346, 346, + 346, 59, 346, 346, 346, 346, 346, 346, 4, 346, + 346, 346, 346, 131, 147, 346, 346, 346, 184, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 345, 345, 286, 345, 345, 345, 345, 345, 345, 345, - 254, 345, 345, 345, 345, 345, 345, 345, 345, 212, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 87, 345, 59, 272, 345, 242, 345, 345, - 345, 345, 345, 11, 345, 345, 345, 345, 345, 345, - 345, 345, 129, 345, 345, 345, 345, 210, 93, 345, - 42, 345, 345, 345, 345, 345, 345, 345, 345, 175, - 345, 345, 345, 345, 345, 345, 345, 149, 345, 345, - 345, 345, 245, 345, 345, 345, 345, 345, 253, 345, - 345, 345, 345, 143, 345, 345, 345, 124, 125, 345, + 346, 346, 346, 346, 346, 346, 346, 242, 40, 41, + 346, 346, 346, 346, 346, 346, 346, 287, 346, 346, + 346, 346, 346, 346, 346, 255, 346, 346, 346, 346, + 346, 346, 346, 346, 213, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 88, 346, 60, + 273, 346, 243, 346, 346, 346, 346, 346, 11, 346, + 346, 346, 346, 346, 346, 346, 346, 130, 346, 346, + 346, 346, 211, 94, 346, 346, 43, 346, 346, 346, + 346, 346, 346, 346, 346, 176, 346, 346, 346, 346, + 346, 346, 346, 150, 346, 346, 346, 346, 246, 346, - 345, 345, 95, 99, 94, 345, 345, 345, 345, 85, - 345, 345, 345, 345, 345, 345, 10, 345, 345, 345, - 345, 345, 270, 310, 345, 345, 345, 345, 315, 41, - 345, 345, 345, 345, 345, 174, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 100, 98, 345, 53, 345, 345, 86, 298, 345, - 345, 345, 345, 24, 345, 345, 345, 345, 345, 196, - 345, 345, 345, 345, 345, 211, 345, 345, 345, 345, - 345, 345, 345, 192, 345, 345, 165, 80, 345, 345, + 346, 346, 346, 346, 254, 346, 346, 346, 346, 144, + 346, 346, 346, 125, 126, 346, 346, 346, 96, 100, + 95, 346, 346, 346, 346, 86, 346, 346, 346, 346, + 346, 346, 10, 346, 346, 346, 346, 346, 271, 311, + 346, 346, 346, 346, 346, 316, 42, 346, 346, 346, + 346, 346, 175, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 101, 99, + 346, 54, 346, 346, 87, 299, 346, 346, 346, 346, + 24, 346, 346, 346, 346, 346, 197, 346, 346, 346, - 345, 345, 345, 287, 345, 345, 345, 345, 345, 345, - 345, 250, 345, 345, 249, 144, 345, 345, 97, 50, - 345, 150, 151, 154, 155, 152, 153, 89, 296, 345, - 345, 271, 345, 345, 345, 345, 168, 345, 345, 345, - 345, 191, 345, 240, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 181, 180, 43, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 294, - 345, 345, 345, 345, 104, 345, 239, 345, 263, 291, + 346, 346, 212, 346, 346, 346, 346, 346, 346, 346, + 346, 193, 346, 346, 166, 81, 346, 346, 346, 346, + 346, 288, 346, 346, 346, 346, 346, 346, 346, 251, + 346, 346, 250, 145, 346, 346, 98, 51, 346, 151, + 152, 155, 156, 153, 154, 90, 297, 346, 346, 272, + 346, 346, 346, 26, 346, 169, 346, 346, 346, 346, + 192, 346, 241, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 182, 181, 44, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 317, 345, 51, 5, 345, 345, 231, 345, 345, - 292, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 251, 27, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 252, 345, 345, 345, 148, 345, - 345, 345, 345, 345, 345, 345, 345, 182, 345, 190, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 288, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 314, 345, 345, - 259, 345, 345, 345, 345, 345, 289, 345, 345, 345, + 346, 346, 346, 346, 346, 346, 346, 346, 295, 346, + 346, 346, 346, 105, 346, 240, 346, 264, 292, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 318, 346, 52, 5, 346, 346, 232, 346, 346, 293, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 252, + 28, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 253, 346, 346, 346, 149, 346, 346, + 346, 346, 346, 346, 346, 346, 183, 346, 191, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 289, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 345, 345, 345, 290, 345, 345, 345, 257, 345, 260, - 261, 345, 345, 345, 345, 345, 258, 262, 0 + 346, 346, 346, 346, 346, 346, 315, 346, 346, 260, + 346, 346, 346, 346, 346, 290, 346, 346, 346, 346, + 346, 346, 291, 346, 346, 346, 258, 346, 261, 262, + 346, 346, 346, 346, 346, 259, 263, 0 } ; static const YY_CHAR yy_ec[256] = @@ -783,17 +785,17 @@ static const YY_CHAR yy_meta[41] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[3438] = +static const flex_int16_t yy_base[3457] = { 0, 0, 0, 38, 41, 44, 46, 59, 65, 71, 77, - 90, 112, 96, 118, 124, 136, 2906, 2853, 81, 6684, - 6684, 6684, 129, 52, 130, 63, 131, 152, 70, 140, + 90, 112, 96, 118, 124, 136, 2864, 2494, 81, 6714, + 6714, 6714, 129, 52, 130, 63, 131, 152, 70, 140, 149, 156, 57, 88, 76, 173, 175, 95, 197, 145, - 185, 199, 208, 213, 178, 123, 2798, 6684, 6684, 6684, - 107, 2623, 6684, 6684, 6684, 154, 2576, 2409, 6684, 6684, - 6684, 245, 2211, 6684, 6684, 6684, 163, 2110, 6684, 249, - 6684, 253, 148, 2024, 1966, 6684, 6684, 6684, 257, 1424, - 6684, 6684, 6684, 233, 1372, 263, 201, 0, 267, 0, + 185, 199, 208, 213, 178, 123, 2453, 6714, 6714, 6714, + 107, 2397, 6714, 6714, 6714, 154, 2315, 2042, 6714, 6714, + 6714, 245, 1786, 6714, 6714, 6714, 163, 1733, 6714, 249, + 6714, 253, 148, 1670, 1574, 6714, 6714, 6714, 257, 1426, + 6714, 6714, 6714, 233, 1294, 263, 201, 0, 267, 0, 0, 165, 191, 221, 252, 205, 181, 265, 92, 261, 216, 263, 271, 272, 210, 279, 274, 282, 278, 291, @@ -801,8 +803,8 @@ static const flex_int16_t yy_base[3438] = 317, 311, 315, 319, 321, 331, 327, 332, 336, 322, 339, 337, 346, 345, 347, 348, 353, 351, 357, 284, 358, 359, 369, 360, 380, 365, 381, 379, 375, 366, - 367, 389, 390, 394, 393, 395, 396, 403, 404, 1294, - 419, 1265, 422, 1234, 429, 1013, 968, 433, 775, 437, + 367, 389, 390, 394, 393, 395, 396, 403, 404, 1266, + 419, 1115, 422, 1023, 429, 930, 888, 433, 775, 437, 441, 0, 433, 705, 447, 479, 287, 452, 411, 445, 426, 446, 447, 448, 449, 450, 451, 453, 452, 456, 470, 234, 463, 473, 481, 479, 476, 483, 486, 487, @@ -823,731 +825,735 @@ static const flex_int16_t yy_base[3438] = 738, 741, 745, 743, 750, 752, 760, 755, 756, 771, 763, 766, 762, 774, 773, 765, 769, 794, 799, 782, 787, 800, 801, 804, 802, 803, 806, 808, 809, 814, - 818, 819, 823, 807, 825, 827, 834, 829, 6684, 831, + 818, 819, 823, 807, 825, 827, 834, 829, 6714, 831, 838, 846, 839, 847, 850, 848, 854, 856, 836, 866, - 864, 867, 868, 890, 849, 876, 859, 880, 878, 6684, - 882, 884, 914, 887, 894, 905, 912, 900, 888, 908, - 910, 896, 937, 920, 922, 924, 940, 927, 935, 936, + 864, 867, 876, 898, 849, 871, 868, 878, 881, 6714, + 884, 882, 922, 890, 891, 908, 910, 859, 909, 911, + 904, 912, 933, 906, 915, 929, 945, 942, 920, 930, - 939, 943, 945, 947, 951, 949, 953, 957, 964, 959, - 961, 962, 975, 963, 966, 970, 974, 976, 987, 981, - 991, 979, 992, 993, 996, 997, 999, 994, 1004, 1006, - 1019, 1020, 998, 1023, 1030, 1005, 1027, 1031, 1034, 1036, - 1029, 1038, 1040, 1043, 1045, 1044, 1046, 1054, 1051, 1052, - 1056, 1058, 1059, 1060, 1062, 1065, 1066, 1068, 1070, 1071, - 1075, 1078, 1081, 1083, 1072, 1086, 861, 6684, 1091, 6684, - 1089, 1094, 1095, 1096, 1098, 1099, 1097, 6684, 1100, 1105, - 1101, 1108, 1112, 1107, 1130, 1126, 1111, 1127, 1129, 1114, - 1133, 1140, 1136, 1139, 1143, 1141, 1144, 1145, 1147, 1146, + 944, 946, 948, 958, 953, 955, 956, 957, 966, 861, + 961, 962, 972, 964, 973, 974, 978, 979, 980, 987, + 993, 985, 976, 988, 994, 996, 999, 998, 1011, 1008, + 1006, 1004, 1001, 1017, 1027, 1019, 1030, 1031, 1034, 1033, + 1022, 1043, 1032, 1047, 1048, 1039, 1049, 1057, 1054, 1041, + 1055, 1059, 1060, 1061, 1063, 1066, 1067, 1068, 1069, 1073, + 1077, 1071, 1087, 1074, 1082, 1089, 1084, 6714, 1091, 6714, + 1093, 1094, 1095, 1096, 1100, 1098, 1097, 6714, 1101, 1107, + 1108, 1099, 1116, 1111, 1129, 1122, 1112, 1124, 1130, 1131, + 1134, 1142, 1137, 1138, 1146, 1139, 1143, 1144, 1147, 1150, - 1152, 1151, 1153, 1154, 1159, 1160, 1179, 6684, 1162, 1169, - 1171, 1164, 1172, 1165, 1186, 1191, 1174, 1192, 1188, 1194, - 1208, 1201, 1206, 1209, 1210, 1211, 1214, 1217, 1218, 1220, - 1224, 1223, 1221, 1225, 1227, 1228, 1226, 1229, 1243, 6684, - 1230, 1246, 1248, 1257, 1241, 1254, 1255, 1256, 1258, 1259, - 1260, 1163, 1113, 517, 1263, 1262, 1272, 1267, 1281, 1268, - 1282, 1276, 1278, 1283, 1284, 1286, 1291, 1298, 1296, 1300, - 1304, 1312, 1311, 1314, 1321, 1323, 1308, 1289, 1316, 1320, - 1318, 1324, 1327, 1326, 1328, 1333, 1334, 1341, 1336, 1339, - 1342, 1344, 1345, 1348, 1343, 1349, 1350, 1353, 1361, 1360, + 1151, 1152, 1155, 1158, 1159, 1162, 1179, 6714, 1161, 1163, + 1171, 1165, 1170, 1172, 1176, 1190, 1191, 1173, 1197, 1201, + 1203, 1210, 1206, 1207, 1208, 1209, 1213, 1182, 1214, 1218, + 1216, 1222, 1225, 1224, 1226, 1230, 1227, 1228, 1229, 1245, + 6714, 1237, 1238, 1249, 1256, 1252, 1254, 1241, 1257, 1255, + 1258, 1259, 1261, 1265, 517, 1272, 1278, 1268, 1273, 1281, + 1279, 1283, 1282, 1284, 1287, 1290, 1288, 1289, 1301, 1298, + 1303, 1309, 1312, 1314, 1316, 1323, 1325, 1310, 1318, 1326, + 1322, 1320, 1328, 1332, 1333, 1321, 1334, 1337, 1346, 1343, + 1342, 1345, 1348, 1351, 1349, 1354, 1356, 1355, 1357, 1365, - 1356, 1368, 1359, 1374, 1367, 1362, 1381, 1382, 1369, 1384, - 6684, 1394, 1389, 1390, 1391, 1392, 1400, 1396, 1402, 1404, - 1405, 1406, 1408, 1407, 1410, 1411, 1414, 1415, 1416, 1421, - 1423, 1431, 1428, 1426, 1440, 1439, 1441, 1443, 1444, 1445, - 1447, 1454, 1451, 1455, 1457, 1452, 1459, 1468, 1463, 1465, - 1469, 1479, 1453, 1471, 1470, 1481, 1482, 1484, 1487, 1492, - 1485, 1493, 1500, 1495, 1502, 1504, 1503, 1507, 1510, 1511, - 1512, 1513, 1514, 1521, 1516, 1517, 1518, 1523, 1519, 1524, - 1535, 1525, 1542, 1531, 1539, 1541, 1544, 1548, 1546, 1552, - 1553, 1554, 1555, 1549, 1556, 1557, 1558, 1562, 1563, 1564, + 1358, 1366, 1370, 1367, 1368, 1372, 1376, 1374, 1383, 1384, + 1386, 6714, 1393, 1391, 1394, 1395, 1402, 1403, 1404, 1389, + 1396, 1408, 1410, 1411, 1412, 1418, 1413, 1419, 1420, 1424, + 1425, 1427, 1435, 1430, 1428, 1445, 1444, 1446, 1437, 1448, + 1449, 1433, 1456, 1453, 1463, 1461, 1459, 1460, 1472, 1467, + 1468, 1469, 1476, 1473, 1477, 1478, 1475, 1490, 1487, 1479, + 1499, 1496, 1498, 1506, 1501, 1485, 1507, 1504, 1512, 1511, + 1515, 1516, 1517, 1518, 1525, 1520, 1521, 1522, 1526, 1527, + 1528, 1531, 1535, 1546, 1532, 1539, 1542, 1544, 1548, 1549, + 1551, 1556, 1557, 1558, 1559, 1560, 1561, 1567, 1564, 1571, - 1575, 1576, 1579, 1578, 1580, 1582, 1581, 1587, 1589, 1593, - 1597, 1585, 1600, 1601, 1591, 1604, 1606, 1614, 1611, 1609, - 1615, 1617, 1620, 1621, 1623, 1622, 1625, 1626, 1633, 1634, - 1638, 6684, 1630, 1646, 1628, 1641, 1642, 1644, 1650, 1657, - 1652, 1655, 1653, 1656, 1658, 1682, 6684, 1659, 6684, 6684, - 1663, 6684, 6684, 1661, 1666, 6684, 1667, 1676, 1677, 1675, - 1664, 1688, 1686, 1690, 1692, 1683, 1705, 1709, 1695, 1696, - 1707, 1714, 1698, 1715, 1724, 1712, 1723, 1720, 1730, 1740, - 1736, 1741, 1732, 1744, 1750, 1748, 1752, 1754, 1757, 1758, - 1761, 1746, 1762, 1763, 1767, 1764, 1768, 1770, 1774, 1775, + 1570, 1572, 1582, 1580, 1583, 1585, 1586, 1587, 1589, 1590, + 1592, 1597, 1598, 1604, 1606, 1607, 1609, 1608, 1612, 1620, + 1610, 1618, 1625, 1619, 1626, 1627, 1630, 1611, 1637, 1638, + 1641, 1643, 1645, 6714, 1631, 1634, 1646, 1649, 1651, 1652, + 1655, 1662, 1657, 1660, 1658, 1659, 1661, 1685, 6714, 1664, + 6714, 6714, 1669, 6714, 6714, 1671, 1668, 6714, 1672, 1682, + 1683, 1688, 1695, 1700, 1698, 1675, 1689, 1702, 1712, 1723, + 1708, 1710, 1711, 1714, 1715, 1716, 1721, 1719, 1717, 1728, + 1734, 1746, 1743, 1747, 1744, 1749, 1751, 1755, 1758, 1757, + 1764, 1765, 1756, 1766, 1769, 1770, 1772, 1771, 1774, 1777, - 1771, 1778, 1777, 1787, 1779, 1792, 1801, 6684, 1793, 1802, - 1794, 1803, 1804, 1811, 1807, 1806, 1808, 1815, 1818, 1819, - 1820, 1821, 1822, 1823, 1824, 1825, 1831, 1828, 1834, 1833, - 1845, 1835, 6684, 1843, 1846, 1836, 1848, 1847, 1858, 1857, - 1849, 1850, 1859, 1851, 1871, 1866, 1869, 1872, 1873, 1874, - 1876, 1877, 6684, 1780, 1879, 1881, 1885, 1883, 1886, 1887, - 1889, 1892, 1896, 1893, 1895, 1897, 1900, 1909, 1901, 1908, - 1913, 1914, 1917, 1921, 1922, 1925, 1918, 1926, 1929, 1930, - 1931, 1933, 1934, 1936, 1940, 1947, 1948, 1943, 1951, 1944, - 1949, 1965, 1967, 1962, 1952, 1963, 1968, 1964, 1976, 1978, + 1780, 1781, 1778, 1776, 1783, 1793, 1784, 1798, 1801, 6714, + 1799, 1808, 1803, 1812, 1809, 1813, 1815, 1810, 1811, 1821, + 1824, 1817, 1826, 1827, 1828, 1829, 1830, 1831, 1834, 1836, + 1840, 1838, 1849, 1839, 6714, 1842, 1852, 1841, 1854, 1853, + 1857, 1863, 1855, 1856, 1864, 1866, 1876, 1871, 1867, 1874, + 1877, 1878, 1880, 1884, 6714, 1883, 1889, 1890, 1891, 1892, + 1894, 1897, 1899, 1900, 1901, 1903, 1904, 1905, 1906, 1915, + 1907, 1912, 1918, 1919, 1922, 1927, 1929, 1931, 1939, 1930, + 1932, 1941, 1934, 1940, 1942, 1944, 1945, 1947, 1957, 1959, + 1946, 1961, 1956, 1958, 1969, 1971, 1968, 1973, 1974, 1975, - 1979, 1970, 1974, 1986, 1981, 1990, 1984, 1991, 1992, 1999, - 1994, 2000, 2005, 1995, 2003, 2007, 1997, 6684, 2011, 2013, - 6684, 2015, 2014, 2018, 2040, 2019, 2021, 2022, 2030, 2032, - 2038, 2026, 2033, 2031, 2044, 2054, 2046, 2050, 2059, 2052, - 2065, 2060, 2066, 2062, 2068, 2069, 2073, 2078, 2074, 2087, - 2091, 2093, 2095, 2094, 2077, 2086, 2096, 2115, 2097, 2098, - 2104, 2100, 2101, 2106, 2117, 2108, 2107, 2113, 2120, 2130, - 2128, 2119, 2127, 2137, 2138, 2140, 2142, 2143, 6684, 2150, - 2148, 2147, 2149, 2152, 2161, 2157, 2158, 6684, 2159, 2160, - 2164, 2173, 2170, 2171, 2176, 2172, 2174, 2175, 2182, 2178, + 1976, 1981, 1983, 1984, 1985, 1988, 1995, 1979, 1991, 1993, + 2000, 1996, 2008, 1998, 2006, 2015, 2004, 2009, 2017, 2018, + 6714, 2019, 2020, 6714, 2023, 2021, 2024, 2046, 2027, 2031, + 2025, 2033, 2038, 2044, 2039, 2042, 2047, 2050, 2059, 2060, + 2061, 2066, 2065, 2068, 2072, 2071, 2074, 2077, 2078, 2081, + 2079, 2086, 2093, 2095, 2097, 2099, 2106, 2101, 2102, 2104, + 2124, 2103, 2105, 2112, 2107, 2108, 2111, 2120, 2113, 2114, + 2117, 2118, 2135, 2137, 2139, 2131, 2140, 2141, 2146, 2148, + 2147, 6714, 2160, 2155, 2153, 2157, 2161, 2169, 2165, 2164, + 6714, 2166, 2168, 2171, 2179, 2176, 2178, 2181, 2180, 2182, - 2184, 2183, 2185, 2197, 6684, 2196, 6684, 2186, 2198, 2199, - 2201, 2203, 2205, 2206, 2208, 2209, 6684, 6684, 2210, 2207, - 2224, 2228, 2226, 2219, 2227, 6684, 2229, 2237, 6684, 2238, - 2230, 2232, 2241, 2243, 2244, 2247, 2248, 2255, 2250, 2257, - 2252, 2253, 2254, 6684, 2266, 2256, 2271, 2273, 2264, 2265, - 2279, 2281, 2275, 6684, 2282, 2283, 2285, 2295, 2293, 2294, - 2272, 2297, 2301, 2296, 2298, 2304, 2305, 2306, 2313, 2315, - 2311, 2318, 2320, 2327, 6684, 2326, 2310, 2312, 2335, 2333, - 2337, 2330, 2334, 2322, 2341, 2342, 2344, 1726, 2346, 2348, - 2349, 2350, 2358, 2359, 2355, 2357, 2364, 2354, 2365, 2356, + 2184, 2189, 2190, 2193, 2188, 2191, 2198, 6714, 2195, 6714, + 2203, 2205, 2207, 2209, 2206, 2213, 2214, 2210, 2216, 6714, + 6714, 2218, 2224, 2226, 2236, 2232, 2219, 2222, 6714, 2237, + 2244, 6714, 2245, 2239, 2240, 2247, 2248, 2250, 2252, 2251, + 2261, 2256, 2263, 2258, 2269, 2270, 6714, 2259, 2260, 2272, + 2275, 2271, 2279, 2278, 2285, 2282, 6714, 2286, 2289, 2291, + 2299, 2296, 2298, 2300, 2301, 2302, 2306, 2308, 2309, 2310, + 2312, 2317, 2320, 2316, 2323, 2332, 2330, 2337, 6714, 2333, + 2322, 2319, 2342, 2341, 2344, 2345, 2347, 2334, 2348, 2350, + 2355, 2349, 2357, 2351, 2359, 2361, 2370, 2372, 2363, 2368, - 2371, 2372, 2374, 2375, 2376, 6684, 2377, 2381, 2382, 2384, - 2378, 171, 2385, 2388, 2392, 2386, 2393, 2406, 2395, 2413, - 2414, 2400, 2412, 2409, 2418, 2410, 2419, 2420, 2421, 2422, - 2427, 2428, 2426, 6684, 2430, 2432, 2431, 2435, 2438, 2437, - 2442, 6684, 2448, 2439, 2454, 2463, 2453, 2451, 2464, 2455, - 2466, 2468, 2470, 2469, 2471, 2473, 2472, 2476, 2479, 6684, - 2481, 2485, 2489, 2482, 2491, 2493, 2492, 2495, 2499, 2500, - 2503, 2505, 2504, 2506, 2507, 2508, 2509, 2516, 2513, 2512, - 2517, 2521, 2523, 2524, 2533, 2525, 2531, 2534, 2535, 6684, - 2542, 2539, 2546, 2540, 2541, 2547, 2552, 2550, 2559, 2551, + 2375, 2365, 2376, 2377, 2383, 2381, 2382, 2385, 2386, 6714, + 2387, 2393, 2395, 2396, 2388, 171, 2398, 2394, 2402, 2405, + 2407, 2418, 2403, 2419, 2421, 2420, 2422, 2424, 2425, 2428, + 2429, 2432, 2431, 2433, 2434, 2435, 2438, 6714, 2440, 2444, + 2445, 2447, 2448, 2449, 2451, 6714, 2455, 2460, 2466, 2473, + 2468, 2464, 2474, 2476, 2479, 2480, 2481, 2482, 2484, 2483, + 2485, 2487, 2490, 6714, 2492, 2500, 2502, 2493, 2503, 2506, + 2511, 2504, 2512, 2514, 2516, 2515, 2517, 2522, 2518, 2521, + 2523, 2525, 2529, 2526, 2532, 2536, 2535, 2538, 2539, 2540, + 2543, 2547, 2549, 6714, 2554, 2555, 2553, 2556, 2558, 2560, - 2564, 2566, 2567, 2580, 2569, 2565, 2577, 2572, 2586, 2575, - 2596, 2587, 2595, 2597, 2583, 2601, 2605, 2594, 2606, 2613, - 2609, 2611, 2612, 2615, 2616, 2625, 2626, 2622, 2628, 2621, - 2633, 2636, 2642, 2647, 2640, 6684, 2648, 2646, 2649, 2653, - 2660, 2655, 2656, 2658, 2657, 2665, 2666, 2668, 2669, 2676, - 2672, 2680, 2675, 2677, 2679, 2681, 2684, 2686, 2692, 2694, - 2696, 2697, 2701, 2703, 6684, 2706, 2702, 2708, 2710, 2714, - 2698, 2716, 2720, 2723, 2711, 2722, 2725, 2726, 2730, 2729, - 2737, 2734, 2735, 2736, 2740, 6684, 2742, 2741, 2747, 2748, - 2750, 2751, 2760, 2754, 2761, 2763, 2767, 2753, 2768, 2769, + 2561, 2563, 2580, 2565, 2571, 2573, 2581, 2587, 2577, 2589, + 2597, 2593, 2599, 2602, 2607, 2603, 2609, 2612, 2605, 2615, + 2617, 2618, 2619, 2627, 2623, 2624, 2625, 2628, 2629, 2639, + 2640, 2631, 2641, 2643, 2646, 2635, 2653, 2658, 2572, 6714, + 2660, 2650, 2648, 2662, 2673, 2668, 2669, 2670, 2674, 2676, + 2678, 2679, 2680, 2687, 2682, 2684, 2686, 2690, 2689, 2693, + 2699, 2696, 2701, 2704, 2708, 2705, 2711, 2713, 6714, 2716, + 2712, 2718, 2721, 2723, 2724, 2728, 2731, 2729, 2725, 2733, + 2736, 2738, 2739, 2740, 2741, 2748, 2745, 2751, 2747, 2752, + 6714, 2759, 2753, 2764, 2757, 2767, 2755, 2773, 2774, 2775, - 2770, 6684, 2779, 2781, 2777, 2784, 2780, 2785, 2786, 2788, - 2790, 6684, 2791, 2792, 2793, 2794, 2795, 2805, 2806, 2801, - 6684, 2817, 2812, 2796, 2803, 2813, 2815, 2819, 2820, 2822, - 2824, 2827, 2828, 2831, 2834, 2835, 6684, 2836, 2844, 2841, - 2839, 2846, 2847, 2850, 2851, 2862, 2863, 2856, 2860, 6684, - 2877, 2864, 2873, 2881, 2876, 2852, 2879, 2882, 2883, 2885, - 2886, 2889, 2890, 6684, 2891, 2893, 2896, 2898, 2900, 2901, - 2902, 2913, 2908, 2909, 2912, 2915, 2916, 2917, 2918, 2922, - 2927, 2924, 2925, 2937, 2933, 2935, 2939, 2940, 2949, 2951, - 2946, 2953, 2950, 2947, 2954, 2957, 2961, 2964, 2971, 2966, + 2765, 2776, 2779, 2782, 2783, 2785, 6714, 2792, 2793, 2784, + 2800, 2795, 2791, 2796, 2802, 2799, 6714, 2803, 2805, 2808, + 2806, 2809, 2817, 2818, 2814, 6714, 2822, 2813, 2824, 2825, + 2828, 2829, 2830, 2834, 2831, 2836, 2837, 2841, 2839, 2842, + 2847, 6714, 2849, 2859, 2854, 2857, 2856, 2860, 2862, 2863, + 2871, 2873, 2867, 2870, 6714, 2886, 2883, 2885, 2894, 2889, + 2875, 2891, 2890, 2892, 2898, 2899, 2900, 2902, 6714, 2903, + 2906, 2907, 2910, 2914, 2912, 2904, 2921, 2920, 2926, 2913, + 2928, 2929, 2931, 2933, 2934, 2935, 2936, 2937, 2947, 2942, + 2949, 2939, 2951, 2961, 2962, 2953, 2964, 2960, 2965, 2968, - 2968, 6684, 2973, 2970, 2976, 2977, 2978, 2979, 2981, 2980, - 2982, 2984, 2986, 2992, 2988, 2989, 3006, 3013, 2991, 2998, - 3001, 3003, 3009, 3010, 3014, 3016, 3017, 3025, 3021, 3023, - 3024, 3034, 3027, 3031, 3038, 3029, 3030, 3039, 3040, 3041, - 3042, 3045, 3051, 3044, 3053, 3054, 3056, 3062, 3065, 3066, - 3070, 3067, 3069, 3075, 3077, 6684, 3076, 3081, 3082, 3084, - 3085, 3090, 3087, 3099, 3091, 3095, 3098, 3105, 3107, 3100, - 3110, 3112, 3102, 3119, 3115, 6684, 3116, 6684, 3117, 3118, - 3124, 3132, 3127, 6684, 3130, 6684, 3133, 3140, 3135, 3137, - 6684, 3141, 3142, 3143, 3145, 3148, 3131, 3150, 3154, 3155, + 2969, 2976, 2977, 2978, 2979, 2982, 6714, 2985, 2986, 2987, + 2973, 2988, 2992, 2993, 2994, 2997, 2975, 2999, 3004, 3002, + 3003, 3011, 3018, 3013, 3014, 3019, 3020, 3021, 3023, 3024, + 3025, 3026, 3035, 3027, 3031, 3034, 3042, 3037, 3040, 3047, + 3048, 3049, 3050, 3052, 3058, 3053, 3055, 3061, 3054, 3059, + 3063, 3064, 3066, 3080, 3081, 3073, 3075, 3083, 3084, 3085, + 6714, 3089, 3090, 3093, 3094, 3096, 3099, 3100, 3109, 3101, + 3102, 3106, 3113, 3118, 3110, 3119, 3120, 3121, 3131, 3124, + 6714, 3126, 6714, 3127, 3128, 3134, 3138, 3136, 6714, 3140, + 6714, 3142, 3147, 3143, 3149, 6714, 3150, 3151, 3154, 3152, - 3156, 3157, 3159, 3161, 3163, 3164, 3166, 3174, 3167, 3169, - 3172, 3176, 3183, 3180, 3185, 3192, 3188, 3190, 3194, 3195, - 3197, 6684, 3200, 3196, 3203, 3204, 3206, 3207, 3211, 3212, - 3213, 3215, 3217, 3219, 3223, 3228, 3225, 3232, 3229, 3233, - 3236, 3246, 3242, 3250, 6684, 3245, 3248, 3251, 3252, 6684, - 3255, 3253, 3256, 3263, 3254, 3261, 3265, 3266, 3271, 3267, - 3274, 3273, 3278, 3282, 3283, 3287, 6684, 3289, 3292, 3275, - 3291, 3302, 3305, 3309, 3307, 3310, 3313, 3321, 3317, 3295, - 3316, 3304, 3318, 3324, 3325, 3326, 3328, 3335, 3330, 3331, - 3340, 3332, 3341, 3342, 3343, 3344, 3346, 3347, 3348, 3345, + 3155, 3157, 3162, 3160, 3163, 3164, 3166, 3167, 3170, 3171, + 3173, 3176, 3178, 3183, 3185, 3186, 3187, 3190, 3194, 3191, + 3196, 3202, 3197, 3200, 3206, 3207, 3208, 6714, 3215, 3209, + 3212, 3218, 3220, 3221, 3223, 3225, 3224, 3227, 3231, 3230, + 3232, 3241, 3237, 3248, 3244, 3245, 3251, 3260, 3255, 3263, + 6714, 3258, 3262, 3259, 3265, 6714, 3268, 3266, 3269, 3276, + 3267, 3274, 3279, 3280, 3284, 3282, 3286, 3287, 3293, 3295, + 3297, 3301, 6714, 3303, 3305, 3288, 3306, 3315, 3322, 3323, + 3319, 3325, 3327, 3335, 3331, 3308, 3330, 3318, 3332, 3338, + 3339, 3340, 3342, 3349, 3344, 3345, 3354, 3346, 3355, 3356, - 3350, 3349, 3352, 6684, 3355, 3356, 3364, 3375, 3365, 3357, - 3372, 3374, 3376, 6684, 3379, 3380, 3381, 3382, 3383, 3387, - 3389, 3390, 3391, 3395, 3393, 3398, 3401, 3396, 6684, 3406, - 6684, 3399, 3415, 3417, 3420, 3411, 3407, 3427, 3429, 3422, - 3431, 3432, 3433, 3434, 3438, 3440, 3442, 3441, 3443, 3444, - 3454, 3446, 3447, 3449, 3458, 3459, 3461, 3469, 3465, 3466, - 6684, 6684, 3464, 3472, 3474, 3471, 3479, 3480, 3481, 3483, - 3486, 3484, 3493, 3494, 3504, 6684, 3497, 3500, 3499, 3501, - 3513, 3505, 3509, 3516, 3517, 3518, 3525, 3520, 6684, 3524, - 3527, 3534, 3529, 3530, 3537, 6684, 3535, 6684, 3536, 3538, + 3357, 3358, 3360, 3361, 3362, 3359, 3229, 3363, 3364, 6714, + 3366, 3369, 3379, 3388, 3370, 3371, 3385, 3386, 3368, 6714, + 3394, 3391, 3396, 3395, 3397, 3399, 3402, 3403, 3404, 3406, + 3408, 3410, 3409, 3412, 6714, 3419, 6714, 3413, 3426, 3425, + 3431, 3420, 3433, 3437, 3436, 3441, 3442, 3443, 3444, 3445, + 3446, 3452, 3449, 3453, 3455, 3457, 3462, 3460, 3463, 3469, + 3470, 3471, 3473, 3480, 3476, 3475, 6714, 6714, 3477, 3478, + 3490, 3484, 3486, 3492, 3493, 3498, 3499, 3501, 3503, 3505, + 3512, 6714, 3513, 3514, 3509, 3515, 3522, 3517, 3526, 3534, + 3532, 3530, 3539, 3536, 6714, 3518, 3540, 3547, 3543, 3546, - 3540, 3545, 3546, 3547, 3549, 3550, 3551, 3553, 3566, 3567, - 3558, 3569, 3563, 3570, 3572, 3576, 3573, 3584, 3577, 3579, - 3580, 6684, 3582, 3585, 3589, 3587, 3596, 3597, 3594, 3590, - 6684, 3600, 3604, 3606, 3608, 3611, 3612, 3614, 3615, 3617, - 3619, 3620, 3624, 3625, 6684, 3621, 3622, 3635, 3632, 3628, - 3639, 3648, 3638, 3650, 6684, 3651, 3643, 3659, 3655, 3657, - 3658, 3661, 3662, 3663, 3665, 3666, 3667, 3668, 3670, 3674, - 3675, 3671, 3678, 3677, 3689, 3688, 3680, 3692, 3702, 3698, - 6684, 3699, 3703, 3704, 3705, 3706, 3707, 3709, 3712, 3714, - 3715, 3717, 3726, 3724, 3728, 3730, 3732, 3737, 3738, 6684, + 3551, 6714, 3550, 6714, 3548, 3552, 3553, 3557, 3559, 3560, + 3563, 3564, 3565, 3566, 3570, 3581, 3582, 3574, 3584, 3578, + 3585, 3586, 3589, 3593, 3596, 3592, 3594, 3595, 6714, 3600, + 3597, 3604, 3602, 3611, 3615, 3609, 3601, 6714, 3612, 3619, + 3623, 3625, 3627, 3628, 3629, 3630, 3632, 3634, 3636, 3633, + 3638, 6714, 3637, 3639, 3652, 3642, 3644, 3651, 3661, 3655, + 3664, 6714, 3665, 3666, 3673, 3669, 3671, 3672, 3676, 3677, + 3678, 3680, 3681, 3682, 3684, 3685, 3690, 3686, 3688, 3695, + 3691, 3703, 3705, 3692, 3713, 3720, 3706, 6714, 3709, 3716, + 3718, 3719, 3721, 3722, 3724, 3730, 3732, 3726, 3741, 3742, - 3739, 3734, 3746, 3742, 3744, 3751, 3743, 3748, 3755, 3756, - 3757, 3759, 3760, 3765, 3768, 3769, 3766, 3758, 3772, 3779, - 3774, 6684, 3790, 3777, 3780, 3785, 3793, 3796, 3803, 3798, - 3799, 3800, 3802, 3805, 3808, 3806, 3810, 3812, 3815, 3816, - 6684, 6684, 3818, 3820, 3824, 6684, 3825, 3822, 3829, 3828, - 3838, 3827, 3835, 3839, 3840, 3830, 3841, 3847, 3851, 6684, - 3852, 3859, 3854, 3855, 3864, 3861, 6684, 3860, 3871, 3869, - 3870, 3872, 3866, 3876, 3877, 3880, 3878, 3882, 3884, 3893, - 3894, 3890, 3891, 3897, 6684, 3892, 3898, 3899, 3903, 3900, - 3907, 6684, 3905, 3909, 3914, 3921, 3916, 3929, 3926, 3923, + 3733, 3737, 3745, 3747, 3755, 3750, 6714, 3762, 3748, 3763, + 3752, 3761, 3760, 3765, 3767, 3769, 3771, 3770, 3773, 3774, + 3776, 3788, 3780, 3783, 3779, 3784, 3795, 3787, 6714, 3802, + 3798, 3790, 3806, 3800, 3809, 3816, 3813, 3814, 3815, 3818, + 3819, 3820, 3823, 3825, 3826, 3829, 3830, 6714, 6714, 3832, + 3833, 3835, 6714, 3837, 3838, 3848, 3839, 3841, 3849, 3851, + 3853, 3852, 3854, 3856, 3862, 3863, 6714, 3864, 3871, 3867, + 3868, 3878, 3874, 6714, 3873, 3883, 3882, 3884, 3885, 3886, + 3890, 3891, 3893, 3895, 3897, 3898, 3907, 3908, 3900, 3904, + 3910, 6714, 3905, 3911, 3912, 3916, 3918, 3921, 6714, 3922, - 3932, 3933, 3935, 3918, 3936, 3938, 3940, 3948, 3944, 3945, - 3943, 3947, 3951, 3953, 6684, 3955, 3961, 3962, 3966, 6684, - 3968, 3975, 3976, 6684, 3979, 3963, 3978, 3980, 3987, 6684, - 3984, 3986, 3985, 3988, 3999, 3994, 4001, 3991, 3998, 4000, - 4002, 6684, 4003, 4004, 4006, 6684, 4009, 4007, 4020, 4022, - 4017, 4030, 4025, 4027, 4028, 4026, 6684, 4033, 6684, 4036, - 4029, 4042, 6684, 4040, 4044, 4045, 4047, 4048, 4049, 4053, - 4059, 4061, 4051, 4055, 4063, 4065, 4066, 4067, 4074, 4069, - 4073, 4075, 4076, 6684, 4077, 4079, 4083, 4080, 4085, 4094, - 4095, 4088, 4091, 4098, 6684, 6684, 4102, 6684, 4105, 4099, + 3924, 3926, 3929, 3931, 3939, 3942, 3932, 3945, 3934, 3947, + 3949, 3951, 3950, 3952, 3959, 3957, 3954, 3958, 3960, 3965, + 3966, 3974, 6714, 3962, 3976, 3977, 3980, 6714, 3982, 3989, + 3990, 6714, 3991, 3986, 3993, 3994, 4001, 6714, 3996, 3999, + 4002, 4000, 4010, 4005, 4013, 4009, 4011, 4015, 4017, 6714, + 4018, 4016, 4019, 6714, 4023, 4021, 4033, 4037, 4034, 4044, + 4039, 4041, 4042, 4040, 6714, 4047, 6714, 4050, 4043, 4056, + 6714, 4051, 4058, 4059, 4061, 4062, 4067, 4068, 4066, 4075, + 4065, 4077, 4076, 4078, 4079, 4082, 4090, 4080, 4091, 4081, + 4088, 6714, 4092, 4089, 4096, 4095, 4108, 4101, 4106, 4103, - 4104, 6684, 4106, 4110, 4118, 4113, 4116, 4123, 4127, 4114, - 6684, 4129, 4131, 6684, 4119, 4133, 4140, 4136, 4135, 4138, - 4144, 4137, 4141, 4147, 4148, 4149, 4151, 4150, 4152, 4155, - 6684, 4153, 4154, 4156, 4166, 4169, 4170, 4172, 4178, 4171, - 6684, 4179, 4180, 4181, 4188, 4185, 6684, 4186, 6684, 4189, - 4194, 4196, 4198, 4197, 4210, 6684, 4209, 4201, 4206, 4202, - 4212, 4218, 4214, 4221, 4213, 4222, 4229, 4225, 4224, 4227, - 4241, 4236, 6684, 4232, 4233, 4246, 4248, 4238, 4234, 4256, - 4252, 4258, 4243, 4255, 4265, 4262, 4266, 4268, 4270, 4272, - 4273, 6684, 4275, 4276, 4259, 4289, 4281, 4285, 4286, 6684, + 4111, 4112, 6714, 6714, 4114, 6714, 4117, 4119, 4121, 6714, + 4123, 4122, 4132, 4127, 4128, 4131, 4140, 4134, 6714, 4146, + 4147, 6714, 4130, 4143, 4156, 4151, 4141, 4152, 4154, 4157, + 4159, 4161, 4162, 4160, 4164, 4165, 4167, 4171, 6714, 4168, + 4169, 4181, 4179, 4183, 4184, 4186, 4194, 4185, 6714, 4195, + 4196, 4197, 4202, 4203, 6714, 4208, 6714, 4206, 4209, 4211, + 4212, 4213, 4222, 6714, 4219, 4220, 4226, 4227, 4228, 4229, + 4230, 4236, 4237, 4238, 4245, 4242, 4243, 4240, 4250, 4246, + 6714, 4248, 4251, 4260, 4261, 4257, 4263, 4270, 4266, 4273, + 4268, 4269, 4279, 4276, 4280, 4289, 4282, 4287, 4284, 6714, - 4290, 4292, 4295, 6684, 4296, 4299, 4301, 4304, 4305, 4306, - 4311, 4307, 4313, 4312, 6684, 4308, 4314, 4315, 4325, 4329, - 4322, 6684, 6684, 4332, 6684, 4333, 4318, 4337, 4336, 4340, - 4344, 4343, 4346, 4348, 4345, 4356, 4357, 4350, 4349, 4367, - 4358, 4372, 4375, 4376, 4374, 4373, 4359, 6684, 6684, 4383, - 4384, 4378, 4389, 4390, 4386, 4393, 4400, 4392, 4395, 4402, - 4403, 4412, 6684, 4405, 4404, 4413, 4407, 6684, 4414, 4415, - 4418, 4416, 4421, 4419, 4422, 4423, 4425, 4428, 4433, 4436, - 4429, 4442, 4434, 4435, 4445, 4446, 4449, 4448, 4451, 4456, - 6684, 4458, 4452, 4459, 4462, 4463, 4464, 4467, 4468, 4470, + 4294, 4293, 4296, 4305, 4297, 4298, 4300, 6714, 4301, 4310, + 4311, 6714, 4308, 4314, 4318, 4320, 4322, 4323, 4326, 4324, + 4325, 4328, 4330, 6714, 4332, 4333, 4331, 4347, 4348, 4329, + 6714, 6714, 4350, 6714, 4354, 4336, 4346, 4337, 4357, 4358, + 4363, 4364, 4366, 4368, 4370, 4371, 4372, 4375, 4383, 4378, + 4390, 4386, 4397, 4392, 4388, 4379, 6714, 6714, 4402, 4403, + 4398, 4406, 4408, 4381, 4410, 4417, 4414, 4412, 4416, 4420, + 4427, 6714, 4422, 4423, 4430, 4424, 6714, 4431, 4432, 4435, + 4433, 4436, 4439, 4438, 4440, 4442, 4445, 4450, 4451, 4446, + 4459, 4452, 4453, 4462, 4463, 4465, 4466, 4468, 4473, 6714, - 6684, 4474, 6684, 4473, 4476, 4475, 4477, 4493, 4494, 4495, - 4484, 4482, 4500, 4501, 4504, 4505, 4509, 4506, 4510, 4511, - 4515, 4517, 4519, 4520, 6684, 4526, 4514, 4522, 4528, 4530, - 4533, 4535, 4537, 4538, 4544, 4545, 4541, 4548, 4550, 4539, - 4552, 4551, 4555, 4557, 6684, 4558, 4565, 4559, 4567, 4562, - 4571, 4570, 4574, 4582, 4572, 4579, 4583, 6684, 4584, 4586, - 4588, 6684, 4589, 4592, 4593, 4596, 4598, 4595, 4601, 4602, - 4603, 6684, 4611, 4604, 4612, 4607, 4613, 4616, 4620, 4622, - 4626, 4625, 4629, 6684, 4636, 4628, 4633, 4637, 4639, 4641, - 4644, 4643, 4645, 6684, 4650, 4651, 4652, 4659, 4657, 4658, + 4469, 4475, 4476, 4480, 4481, 4483, 4485, 4484, 4487, 6714, + 4489, 6714, 4488, 4493, 4491, 4490, 4499, 4509, 4510, 4511, + 4512, 4515, 4516, 4519, 4520, 4530, 4521, 4525, 4531, 4533, + 4535, 4540, 4541, 6714, 4543, 4527, 4537, 4544, 4550, 4552, + 4553, 4555, 4558, 4560, 4562, 4561, 4564, 4568, 4565, 4569, + 4170, 4570, 4571, 6714, 4575, 4574, 4581, 4583, 4585, 4586, + 4588, 4593, 4596, 4587, 4589, 4597, 6714, 4598, 4601, 4608, + 6714, 4602, 4500, 4610, 4611, 4617, 4605, 4614, 4612, 4618, + 6714, 4629, 4621, 4623, 4626, 4631, 4632, 4634, 4635, 4637, + 4642, 4645, 6714, 4653, 4639, 4638, 4652, 4654, 4655, 4656, - 4666, 4663, 4669, 4661, 4662, 4676, 4672, 4680, 4682, 4683, - 4670, 4693, 4694, 4695, 6684, 4677, 6684, 4696, 4700, 4704, - 4702, 4706, 4707, 4685, 4709, 6684, 4710, 4712, 4714, 4717, - 4716, 6684, 4718, 4719, 4721, 4722, 6684, 4720, 4733, 4724, - 4727, 4741, 4742, 6684, 4746, 4747, 4748, 4755, 4757, 4752, - 4759, 4754, 4762, 4760, 4756, 4764, 4765, 4773, 4771, 4769, - 6684, 4775, 4777, 4782, 4784, 4778, 4786, 4776, 4788, 4791, - 4793, 6684, 4794, 4797, 4798, 4800, 4801, 4802, 4803, 4810, - 4807, 4809, 4811, 4812, 4815, 4816, 6684, 4821, 4819, 4823, - 4832, 4834, 4836, 6684, 4839, 6684, 4829, 4824, 4841, 4840, + 4659, 4658, 6714, 4661, 4662, 4670, 4675, 4678, 4671, 4673, + 4680, 4676, 4682, 4683, 4686, 4690, 4689, 4691, 4694, 4695, + 4696, 4707, 4711, 4702, 6714, 4697, 6714, 4709, 4712, 4720, + 4715, 4719, 4721, 4725, 4723, 6714, 4726, 4731, 4733, 4729, + 4727, 6714, 4734, 4735, 4737, 4738, 6714, 4753, 4749, 4739, + 4748, 4741, 4757, 6714, 4762, 4763, 4764, 4771, 4773, 4768, + 4775, 4770, 4778, 4776, 4772, 4780, 4781, 4789, 4787, 4785, + 6714, 4791, 4793, 4798, 4800, 4794, 4802, 4792, 4804, 4807, + 4809, 6714, 4810, 4813, 4814, 4816, 4817, 4818, 4819, 4826, + 4823, 4825, 4827, 4828, 4831, 4832, 6714, 4837, 4835, 4839, - 4845, 6684, 6684, 4847, 4855, 4850, 4853, 4854, 6684, 6684, - 4857, 6684, 4858, 6684, 4859, 4861, 6684, 6684, 4860, 4864, - 4867, 4869, 4870, 4872, 6684, 4879, 6684, 4886, 4881, 4868, - 4883, 4887, 6684, 4885, 4891, 4889, 4895, 4897, 6684, 4893, - 4906, 4898, 4899, 6684, 4909, 4910, 4903, 4911, 6684, 4917, - 4920, 4921, 4912, 4915, 4923, 4925, 4931, 4932, 4935, 4933, - 4934, 4936, 4937, 4940, 4944, 4949, 4951, 4941, 4952, 4955, - 4957, 4961, 4959, 4963, 4964, 4965, 4966, 4968, 4969, 4973, - 4977, 4974, 4978, 4980, 4979, 4981, 4989, 4983, 4992, 4996, - 4993, 4997, 4998, 5000, 5004, 5005, 4999, 5006, 5010, 5014, + 4848, 4850, 4852, 6714, 4855, 6714, 4845, 4840, 4857, 4856, + 4861, 6714, 6714, 4863, 4871, 4866, 4869, 4870, 6714, 6714, + 4873, 6714, 4874, 6714, 4875, 4877, 6714, 6714, 4876, 4880, + 4883, 4885, 4886, 4888, 6714, 4895, 6714, 4902, 4897, 4884, + 4899, 4903, 6714, 4901, 4907, 4905, 4911, 4913, 6714, 4909, + 4922, 4914, 4915, 6714, 4925, 4926, 4919, 4927, 6714, 4933, + 4936, 4937, 4928, 4931, 4939, 4941, 4947, 4948, 4951, 4949, + 4950, 4952, 4953, 4956, 4960, 4965, 4967, 4957, 4968, 4971, + 4973, 4977, 4975, 4979, 4980, 4981, 4982, 4984, 4989, 4983, + 4991, 4994, 4985, 4995, 4997, 4998, 5005, 5006, 5008, 5009, - 5007, 5009, 5011, 6684, 5017, 5020, 5025, 5027, 5029, 5031, - 5032, 5034, 5039, 5040, 6684, 5044, 6684, 5046, 5049, 5050, - 5051, 5053, 6684, 5052, 5055, 5054, 5057, 5056, 5058, 5060, - 5059, 5063, 5064, 5074, 6684, 5084, 5066, 5069, 5085, 5087, - 6684, 5088, 5090, 5092, 5093, 5095, 5098, 5096, 5099, 5100, - 5101, 5104, 5106, 5107, 5108, 5109, 5119, 5122, 5129, 5112, - 5124, 5125, 5128, 5131, 5132, 5133, 5135, 5141, 5138, 5145, - 5149, 6684, 5146, 6684, 5150, 5151, 5154, 5155, 5156, 5157, - 5158, 5160, 6684, 6684, 5163, 5164, 5169, 5171, 5172, 5174, - 5176, 5177, 5180, 6684, 5181, 5185, 5194, 5182, 6684, 5188, + 5013, 5014, 5015, 5016, 5017, 5018, 5019, 5021, 5020, 5026, + 5031, 5035, 5024, 5034, 6714, 5027, 5037, 5040, 5047, 5046, + 5048, 5051, 5055, 5058, 5061, 6714, 5064, 6714, 5066, 5052, + 5068, 5069, 5071, 6714, 5072, 5073, 5074, 5075, 5076, 5077, + 5078, 5081, 5082, 5084, 5089, 6714, 5094, 5098, 5083, 5099, + 5104, 6714, 5106, 5110, 5107, 5111, 5113, 5116, 5114, 5117, + 5118, 5119, 5122, 5124, 5126, 5127, 5130, 5140, 5142, 5143, + 5133, 5144, 5128, 5148, 5149, 5150, 5152, 5153, 5155, 5161, + 5163, 5167, 6714, 5156, 6714, 5164, 5168, 5169, 5171, 5174, + 5177, 5176, 5178, 6714, 6714, 5180, 5183, 5185, 5188, 5189, - 5191, 5197, 5199, 6684, 5200, 5201, 5202, 5205, 5207, 5209, - 5213, 5214, 5215, 5216, 5219, 5221, 6684, 6684, 6684, 6684, - 5224, 5222, 5230, 5227, 5232, 5233, 5234, 5236, 5237, 5238, - 6684, 5247, 6684, 6684, 5249, 5250, 5248, 5251, 5252, 5258, - 5259, 5261, 6684, 5263, 5265, 5266, 5264, 5273, 5275, 5276, - 5267, 5283, 5280, 5284, 5285, 5288, 5296, 5292, 5293, 5295, - 5299, 5301, 5308, 6684, 6684, 5298, 5313, 5302, 5315, 5316, - 5317, 5318, 5325, 5320, 5323, 5326, 5327, 5329, 5330, 5339, - 5340, 5331, 5338, 6684, 5341, 5344, 5343, 6684, 5345, 6684, - 5347, 5353, 5354, 5355, 5356, 5360, 5361, 5364, 6684, 6684, + 5193, 5190, 5194, 5195, 6714, 5198, 5202, 5205, 5208, 6714, + 5210, 5211, 5212, 5215, 6714, 5216, 5217, 5218, 5220, 5223, + 5230, 5233, 5227, 5224, 5234, 5235, 5244, 6714, 6714, 6714, + 6714, 5247, 5237, 5250, 5239, 5241, 5251, 5253, 5256, 5258, + 5261, 5263, 6714, 5267, 6714, 6714, 5264, 5268, 5270, 5271, + 5272, 5274, 5277, 5275, 6714, 5279, 5282, 5285, 5288, 5292, + 5296, 5297, 5289, 5299, 5300, 5301, 5304, 5305, 5315, 5311, + 5312, 5310, 5314, 5318, 5321, 6714, 6714, 5324, 5327, 5328, + 5335, 5333, 5336, 5330, 5345, 5342, 5343, 5340, 5332, 5350, + 5351, 5359, 5360, 5352, 5355, 6714, 5356, 5361, 5362, 6714, - 5359, 5376, 5374, 6684, 6684, 5363, 5366, 5371, 5379, 5381, - 5375, 5383, 5384, 5396, 5385, 6684, 5387, 6684, 5389, 5393, - 5401, 5391, 5411, 5412, 5403, 5413, 5415, 5410, 5417, 6684, - 5419, 5420, 6684, 5429, 5424, 5426, 5425, 5431, 6684, 5434, - 5432, 5437, 5441, 6684, 5443, 5444, 5447, 6684, 5454, 6684, - 5438, 5451, 5445, 5461, 5459, 6684, 5449, 5462, 6684, 5465, - 5467, 5470, 5468, 6684, 5475, 5472, 6684, 5476, 5478, 5479, - 5483, 5484, 5486, 5487, 5488, 5489, 5497, 5493, 5494, 6684, - 6684, 5501, 5502, 135, 5510, 5505, 5511, 5512, 5508, 5519, - 5515, 5516, 5518, 6684, 6684, 5521, 6684, 5522, 5524, 6684, + 5364, 6714, 5368, 5369, 5370, 5371, 5377, 5378, 5379, 5381, + 6714, 6714, 5375, 5389, 5385, 6714, 6714, 5382, 5392, 5394, + 5396, 5397, 5398, 5399, 5400, 5403, 5405, 6714, 5406, 6714, + 5407, 5410, 5419, 5409, 5422, 5426, 5411, 5431, 5433, 5428, + 5430, 6714, 5437, 5438, 6714, 5445, 5440, 5444, 5441, 5442, + 6714, 5449, 5447, 5453, 5459, 6714, 5461, 5462, 5463, 6714, + 5470, 6714, 5454, 5467, 5464, 5479, 5471, 6714, 5475, 5480, + 6714, 5485, 5487, 5488, 5477, 5489, 6714, 5493, 5482, 6714, + 5494, 5497, 5498, 5504, 5501, 5506, 5507, 5508, 5509, 5517, + 5513, 5515, 6714, 6714, 5524, 5522, 135, 5531, 5510, 5521, - 5523, 5533, 5534, 5525, 5539, 5529, 5537, 5538, 5546, 5541, - 5550, 5549, 5551, 5554, 5565, 5572, 5556, 5568, 5573, 5576, - 5578, 5580, 5569, 5582, 5583, 5558, 5586, 5588, 5589, 5590, - 5592, 5593, 6684, 5596, 5598, 5601, 5600, 6684, 5606, 5602, - 5611, 5614, 6684, 5616, 5608, 5620, 5621, 5622, 6684, 5623, - 5625, 5628, 5626, 5627, 5633, 5634, 5643, 5638, 5636, 5648, - 6684, 6684, 6684, 5650, 5640, 6684, 5654, 5647, 5656, 5657, - 6684, 5659, 5660, 5662, 6684, 6684, 5663, 5664, 6684, 5665, - 5672, 6684, 5667, 6684, 5668, 6684, 5671, 5677, 5683, 5678, - 6684, 5686, 5680, 5690, 5694, 6684, 5697, 5700, 5702, 5703, + 5528, 5529, 5538, 5534, 5536, 5543, 6714, 6714, 5539, 6714, + 5537, 5546, 6714, 5547, 5550, 5551, 5556, 5555, 5557, 5558, + 5554, 5562, 5563, 5576, 5566, 5564, 5581, 5571, 5591, 5567, + 5593, 5594, 5596, 5598, 5600, 5588, 5602, 5603, 5582, 5605, + 5606, 5609, 5611, 5612, 5613, 6714, 5616, 5618, 5619, 5621, + 6714, 5627, 5624, 5629, 5630, 6714, 5637, 5634, 5638, 5640, + 5641, 6714, 5642, 5645, 5648, 5646, 5651, 5653, 5569, 5662, + 5654, 5657, 5659, 6714, 6714, 6714, 5668, 5672, 6714, 5675, + 5665, 5658, 5669, 6714, 5677, 5680, 5678, 6714, 6714, 5681, + 5686, 5684, 6714, 5682, 5694, 6714, 5685, 6714, 5692, 6714, - 5705, 5692, 5708, 6684, 5715, 5714, 5716, 5707, 5710, 5717, - 5718, 5722, 5720, 5730, 5723, 5732, 6684, 5733, 5735, 5736, - 5742, 5726, 5734, 5744, 6684, 5746, 6684, 5751, 6684, 5747, - 5752, 5753, 5754, 5755, 5756, 5761, 5762, 5772, 5768, 5758, - 5764, 5779, 5770, 6684, 6684, 5781, 5783, 6684, 5774, 6684, - 5785, 6684, 5786, 5787, 5788, 5791, 5792, 6684, 5799, 5794, - 5796, 5806, 5801, 5804, 6684, 5808, 5811, 5810, 5813, 6684, - 6684, 5815, 5822, 5821, 6684, 5817, 5819, 5828, 5820, 5831, - 5832, 5833, 5834, 5844, 5836, 5837, 5841, 5846, 5847, 5848, - 5853, 5857, 6684, 6684, 6684, 5852, 5859, 5866, 5868, 5869, + 5695, 5696, 5698, 5703, 6714, 5704, 5705, 5707, 5710, 6714, + 5716, 5720, 5723, 5708, 5724, 5726, 5725, 6714, 5733, 5729, + 5731, 5738, 5728, 5735, 5732, 5743, 5739, 5755, 5740, 5742, + 6714, 5750, 5751, 5758, 5759, 5752, 5761, 5762, 6714, 5764, + 6714, 5767, 6714, 5768, 5769, 5770, 5778, 5772, 5773, 5775, + 5780, 5789, 5786, 5779, 5791, 5794, 5796, 6714, 6714, 5799, + 5801, 6714, 5802, 6714, 5804, 6714, 5805, 5806, 5807, 5808, + 5809, 6714, 5811, 5813, 5816, 5826, 5818, 5819, 6714, 5827, + 5829, 5830, 5832, 6714, 6714, 5834, 5842, 5835, 6714, 5837, + 5845, 5847, 5848, 5850, 5852, 5853, 5856, 5855, 5866, 5839, - 5871, 5863, 6684, 5870, 5874, 5877, 5876, 5884, 5880, 5886, - 6684, 5887, 5883, 5888, 5889, 5891, 5892, 5893, 5894, 6684, - 5905, 5907, 5910, 5900, 5912, 5919, 5921, 5923, 5916, 5908, - 5930, 5926, 6684, 5928, 6684, 6684, 5925, 6684, 5932, 5933, - 5937, 5935, 5938, 6684, 5941, 5936, 5942, 5945, 5943, 5949, - 5947, 5951, 6684, 5966, 5948, 5952, 5964, 6684, 6684, 5973, - 6684, 5975, 5965, 5953, 5982, 5977, 5978, 5980, 5983, 6684, - 5981, 5987, 5984, 5990, 5991, 5993, 5994, 6684, 5995, 5997, - 5998, 5999, 6684, 6002, 6001, 6006, 6007, 6008, 6684, 6009, - 6011, 6021, 6022, 6684, 6012, 6026, 6025, 6684, 6684, 6034, + 5857, 5861, 5868, 5862, 5873, 5879, 5883, 6714, 6714, 6714, + 5874, 5872, 5891, 5888, 5890, 5895, 5878, 6714, 5894, 5898, + 5900, 5901, 5908, 5904, 5907, 6714, 5903, 5909, 5910, 5911, + 5913, 5914, 5916, 5917, 6714, 5919, 5929, 5925, 5923, 5931, + 5939, 5941, 5943, 5934, 5944, 5951, 5948, 6714, 5950, 6714, + 6714, 5946, 6714, 5952, 5954, 5956, 5955, 5957, 6714, 5960, + 5961, 5962, 5964, 5963, 5971, 5967, 5969, 6714, 5979, 5972, + 5982, 5984, 6714, 6714, 5985, 5991, 6714, 5994, 5995, 5988, + 6003, 5986, 5996, 6008, 6005, 6714, 6009, 6011, 5999, 6012, + 6015, 6014, 6017, 6714, 6021, 6018, 6022, 6024, 6714, 6025, - 6036, 6037, 6684, 6684, 6684, 6040, 6042, 6030, 6044, 6684, - 6046, 6053, 6057, 6059, 6063, 6048, 6684, 6062, 6056, 6069, - 6064, 6066, 6684, 6684, 6070, 6071, 6072, 6074, 6684, 6684, - 6075, 6076, 6081, 6078, 6079, 6684, 6084, 6088, 6096, 6089, - 6103, 6106, 6108, 6086, 6092, 6109, 6116, 6117, 6099, 6112, - 6113, 6114, 6120, 6122, 6129, 6132, 6130, 6138, 6140, 6131, - 6142, 6684, 6684, 6144, 6684, 6149, 6145, 6684, 6684, 6151, - 6153, 6156, 6158, 6684, 6160, 6162, 6164, 6166, 6167, 6684, - 6168, 6170, 6171, 6123, 6172, 6684, 6175, 6174, 6176, 6182, - 6178, 6183, 6186, 6684, 6181, 6188, 6684, 6684, 6179, 6198, + 6030, 6031, 6033, 6034, 6714, 6035, 6027, 6051, 6036, 6714, + 6038, 6050, 6052, 6714, 6714, 6056, 6060, 6057, 6714, 6714, + 6714, 6063, 6064, 6066, 6068, 6714, 6071, 6075, 6079, 6081, + 6086, 6074, 6714, 6082, 6088, 6090, 6091, 6092, 6714, 6714, + 6093, 6094, 6095, 6099, 6096, 6714, 6714, 6101, 6103, 6104, + 6102, 6105, 6714, 6107, 6112, 6119, 6115, 6121, 6128, 6130, + 6123, 6131, 6132, 6140, 6143, 6133, 6135, 6142, 6146, 6147, + 6145, 6149, 6159, 6154, 6156, 6162, 6157, 6165, 6714, 6714, + 6167, 6714, 6169, 6171, 6714, 6714, 6174, 6176, 6178, 6182, + 6714, 6184, 6186, 6188, 6190, 6179, 6714, 6191, 6193, 6194, - 6189, 6199, 6202, 6684, 6203, 6210, 6205, 6207, 6208, 6211, - 6209, 6684, 6216, 6214, 6684, 6684, 6213, 6218, 6684, 6684, - 6221, 6684, 6684, 6684, 6684, 6684, 6684, 6684, 6684, 6226, - 6232, 6684, 6224, 6239, 6241, 6243, 6684, 6228, 6236, 6230, - 6244, 6684, 6246, 6684, 6248, 6250, 6249, 6253, 6252, 6256, - 6259, 6258, 6262, 6263, 6265, 6266, 6269, 6270, 6268, 6274, - 6283, 6276, 6284, 6286, 6684, 6684, 6684, 6285, 6287, 6293, - 6289, 6297, 6300, 6303, 6306, 6294, 6308, 6309, 6310, 6311, - 6314, 6317, 6324, 6319, 6322, 6320, 6327, 6321, 6330, 6684, - 6336, 6323, 6331, 6343, 6684, 6337, 6684, 6340, 6684, 6684, + 6195, 6196, 6714, 6198, 6199, 6202, 6204, 6208, 6210, 6211, + 6214, 6714, 6209, 6226, 6714, 6714, 6215, 6217, 6206, 6227, + 6223, 6714, 6231, 6235, 6230, 6237, 6236, 6238, 6243, 6714, + 6239, 6240, 6714, 6714, 6246, 6247, 6714, 6714, 6248, 6714, + 6714, 6714, 6714, 6714, 6714, 6714, 6714, 6252, 6251, 6714, + 6253, 6261, 6264, 6714, 6268, 6714, 6258, 6269, 6271, 6265, + 6714, 6270, 6714, 6272, 6276, 6277, 6286, 6279, 6289, 6280, + 6273, 6283, 6291, 6296, 6297, 6299, 6298, 6300, 6302, 6304, + 6314, 6306, 6311, 6714, 6714, 6714, 6303, 6315, 6319, 6320, + 6325, 6327, 6331, 6333, 6322, 6334, 6336, 6337, 6338, 6340, - 6345, 6346, 6348, 6349, 6357, 6359, 6355, 6354, 6360, 6361, - 6363, 6684, 6365, 6684, 6684, 6370, 6372, 6684, 6371, 6373, - 6684, 6374, 6375, 6376, 6383, 6384, 6381, 6382, 6388, 6390, - 6684, 6684, 6378, 6386, 6399, 6402, 6403, 6411, 6406, 6409, - 6410, 6412, 6413, 6422, 6684, 6420, 6421, 6424, 6684, 6425, - 6427, 6428, 6430, 6431, 6439, 6434, 6438, 6684, 6436, 6684, - 6441, 6443, 6442, 6444, 6445, 6448, 6456, 6454, 6458, 6684, - 6460, 6465, 6462, 6467, 6469, 6472, 6473, 6474, 6476, 6478, - 6482, 6488, 6485, 6489, 6479, 6490, 6491, 6684, 6500, 6494, - 6684, 6497, 6501, 6503, 6504, 6507, 6684, 6512, 6505, 6509, + 6344, 6351, 6346, 6349, 6347, 6356, 6348, 6358, 6714, 6363, + 6364, 6350, 6367, 6714, 6370, 6714, 6353, 6714, 6714, 6373, + 6374, 6376, 6377, 6386, 6387, 6378, 6382, 6383, 6388, 6390, + 6714, 6398, 6714, 6714, 6391, 6394, 6714, 6399, 6400, 6714, + 6401, 6403, 6405, 6406, 6407, 6409, 6410, 6411, 6418, 6714, + 6714, 6422, 6423, 6425, 6427, 6429, 6436, 6431, 6433, 6435, + 6443, 6437, 6445, 6714, 6447, 6449, 6451, 6714, 6453, 6452, + 6455, 6458, 6459, 6466, 6461, 6463, 6714, 6464, 6714, 6468, + 6470, 6469, 6472, 6473, 6475, 6483, 6481, 6485, 6714, 6487, + 6489, 6493, 6494, 6496, 6499, 6500, 6501, 6503, 6505, 6506, - 6514, 6517, 6518, 6684, 6520, 6527, 6529, 6684, 6530, 6684, - 6684, 6532, 6521, 6531, 6534, 6539, 6684, 6684, 6684, 6564, - 6571, 6578, 6585, 6592, 6599, 6606, 88, 6613, 6620, 6627, - 6634, 6641, 6648, 6655, 6662, 6669, 6676 + 6515, 6509, 6511, 6517, 6519, 6521, 6714, 6523, 6525, 6714, + 6526, 6527, 6528, 6529, 6533, 6714, 6538, 6530, 6535, 6541, + 6546, 6543, 6714, 6552, 6556, 6553, 6714, 6557, 6714, 6714, + 6558, 6559, 6561, 6565, 6567, 6714, 6714, 6714, 6594, 6601, + 6608, 6615, 6622, 6629, 6636, 88, 6643, 6650, 6657, 6664, + 6671, 6678, 6685, 6692, 6699, 6706 } ; -static const flex_int16_t yy_def[3438] = +static const flex_int16_t yy_def[3457] = { 0, - 3419, 1, 3420, 3420, 3421, 3421, 3422, 3422, 3423, 3423, - 3424, 3424, 3425, 3425, 3426, 3426, 3419, 3427, 3419, 3419, - 3419, 3419, 3428, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3429, 3419, 3419, 3419, - 3429, 3430, 3419, 3419, 3419, 3430, 3431, 3419, 3419, 3419, - 3419, 3431, 3432, 3419, 3419, 3419, 3432, 3433, 3419, 3434, - 3419, 3433, 3433, 3435, 3419, 3419, 3419, 3419, 3435, 3436, - 3419, 3419, 3419, 3436, 3427, 3427, 3419, 3437, 3428, 3437, - 3428, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3438, 1, 3439, 3439, 3440, 3440, 3441, 3441, 3442, 3442, + 3443, 3443, 3444, 3444, 3445, 3445, 3438, 3446, 3438, 3438, + 3438, 3438, 3447, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3448, 3438, 3438, 3438, + 3448, 3449, 3438, 3438, 3438, 3449, 3450, 3438, 3438, 3438, + 3438, 3450, 3451, 3438, 3438, 3438, 3451, 3452, 3438, 3453, + 3438, 3452, 3452, 3454, 3438, 3438, 3438, 3438, 3454, 3455, + 3438, 3438, 3438, 3455, 3446, 3446, 3438, 3456, 3447, 3456, + 3447, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3429, - 3429, 3430, 3430, 3431, 3431, 3419, 3432, 3432, 3433, 3433, - 3434, 3434, 3433, 3435, 3435, 3419, 3436, 3436, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3448, + 3448, 3449, 3449, 3450, 3450, 3438, 3451, 3451, 3452, 3452, + 3453, 3453, 3452, 3454, 3454, 3438, 3455, 3455, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3433, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3452, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3433, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3452, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3419, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3438, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, - 3427, 3427, 3433, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3438, 3446, 3446, 3452, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3433, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3419, 3419, - 3427, 3419, 3419, 3427, 3427, 3419, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3452, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3438, 3438, 3446, 3438, 3438, 3446, 3446, 3438, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3433, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, - 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3452, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3438, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3427, 3427, 3427, 3427, 3419, 3427, 3419, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3419, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3419, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3438, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, + 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, - 3433, 3433, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, + 3446, 3446, 3446, 3446, 3452, 3452, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3419, 3427, 3427, 3433, 3427, 3427, 3427, 3427, 3427, - 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3452, + 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3419, 3427, 3427, - 3427, 3427, 3427, 3419, 3427, 3419, 3427, 3427, 3427, 3427, - 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3438, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3438, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3419, 3427, 3427, 3427, 3433, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3419, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, + 3446, 3452, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3438, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3427, - 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3419, 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3427, - 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3419, 3427, 3427, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3438, 3446, 3438, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3438, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3419, 3427, 3427, 3433, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, + 3446, 3438, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, + 3452, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3419, 3419, 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, - 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, - 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3438, 3446, + 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, + 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3419, - 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3419, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3433, - 3427, 3419, 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3419, 3427, - 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3419, 3419, 3427, 3419, 3427, 3427, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3438, 3446, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3452, 3446, 3438, + 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3438, 3446, 3438, 3446, 3446, 3446, + 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3419, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3419, 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3419, 3427, - 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, + 3446, 3446, 3438, 3438, 3446, 3438, 3446, 3446, 3446, 3438, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3446, 3446, 3446, 3446, 3438, 3446, 3438, 3446, 3446, 3446, + 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, - 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, - 3427, 3419, 3419, 3427, 3419, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3433, 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3419, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3419, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, + 3438, 3438, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3452, + 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3438, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, - 3419, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, - 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, + 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3419, 3427, 3419, 3427, 3427, 3427, - 3427, 3427, 3427, 3433, 3427, 3419, 3427, 3427, 3427, 3427, - 3427, 3419, 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, - 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, - 3427, 3427, 3427, 3419, 3427, 3419, 3427, 3427, 3427, 3427, + 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3438, 3446, 3438, 3446, 3446, 3446, + 3446, 3446, 3446, 3452, 3446, 3438, 3446, 3446, 3446, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, + 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, - 3427, 3419, 3419, 3427, 3427, 3427, 3427, 3427, 3419, 3419, - 3427, 3419, 3427, 3419, 3427, 3427, 3419, 3419, 3427, 3427, - 3427, 3427, 3427, 3427, 3419, 3427, 3419, 3427, 3427, 3427, - 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3419, 3427, - 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3419, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3433, 3427, + 3446, 3446, 3446, 3438, 3446, 3438, 3446, 3446, 3446, 3446, + 3446, 3438, 3438, 3446, 3446, 3446, 3446, 3446, 3438, 3438, + 3446, 3438, 3446, 3438, 3446, 3446, 3438, 3438, 3446, 3446, + 3446, 3446, 3446, 3446, 3438, 3446, 3438, 3446, 3446, 3446, + 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3438, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3419, 3427, 3419, 3427, 3427, 3427, - 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, - 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3419, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3419, 3419, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3419, 3427, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3452, + 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3438, 3446, 3446, + 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3438, 3446, 3438, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3438, 3438, 3446, 3446, 3446, 3446, 3446, - 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3419, 3419, 3419, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3419, 3427, 3419, 3419, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3433, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3419, 3419, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3419, 3427, 3419, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3419, + 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3438, + 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3438, 3438, + 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3438, 3446, 3438, 3438, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3452, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3438, 3438, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3438, - 3427, 3427, 3427, 3419, 3419, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3419, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, - 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3419, 3427, - 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3419, 3427, 3419, - 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3419, 3427, - 3427, 3427, 3427, 3419, 3427, 3427, 3419, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, - 3419, 3427, 3427, 3433, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3419, 3419, 3427, 3419, 3427, 3427, 3419, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3438, 3438, 3446, 3446, 3446, 3438, 3438, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3438, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3438, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, + 3438, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3438, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, + 3438, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3438, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3438, 3438, 3446, 3446, 3452, 3446, 3446, 3446, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3419, 3427, 3427, - 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3419, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3419, 3419, 3419, 3427, 3427, 3419, 3427, 3427, 3427, 3427, - 3419, 3427, 3427, 3427, 3419, 3419, 3427, 3427, 3419, 3427, - 3427, 3419, 3427, 3419, 3427, 3419, 3427, 3427, 3427, 3427, - 3419, 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, + 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3438, 3446, 3438, + 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, + 3438, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3438, 3438, 3438, 3446, 3446, 3438, 3446, + 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3438, 3438, 3446, + 3446, 3446, 3438, 3446, 3446, 3438, 3446, 3438, 3446, 3438, - 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3419, 3427, 3419, 3427, 3419, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3419, 3419, 3427, 3427, 3419, 3427, 3419, - 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, - 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3419, - 3419, 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3419, 3419, 3419, 3427, 3427, 3427, 3427, 3427, + 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3438, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3438, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3438, 3446, + 3446, 3438, 3446, 3438, 3446, 3438, 3446, 3446, 3446, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3446, 3446, 3446, 3438, 3438, 3446, 3446, 3446, 3438, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3419, 3427, 3419, 3419, 3427, 3419, 3427, 3427, - 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3419, 3419, 3427, - 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, - 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3419, 3427, - 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3419, 3419, 3427, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3438, 3438, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3438, + 3438, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, + 3446, 3446, 3438, 3438, 3446, 3446, 3438, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3438, 3446, - 3427, 3427, 3419, 3419, 3419, 3427, 3427, 3427, 3427, 3419, - 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, - 3427, 3427, 3419, 3419, 3427, 3427, 3427, 3427, 3419, 3419, - 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3419, 3419, 3427, 3419, 3427, 3427, 3419, 3419, 3427, - 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3419, - 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3419, 3427, 3427, 3419, 3419, 3427, 3427, + 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3438, + 3446, 3446, 3446, 3438, 3438, 3446, 3446, 3446, 3438, 3438, + 3438, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, + 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3438, 3438, + 3446, 3446, 3446, 3446, 3446, 3438, 3438, 3446, 3446, 3446, + 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3438, + 3446, 3438, 3446, 3446, 3438, 3438, 3446, 3446, 3446, 3446, + 3438, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, - 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3419, 3427, 3427, 3419, 3419, 3427, 3427, 3419, 3419, - 3427, 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3427, - 3427, 3419, 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, - 3427, 3419, 3427, 3419, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3419, 3419, 3419, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, - 3427, 3427, 3427, 3427, 3419, 3427, 3419, 3427, 3419, 3419, + 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3438, 3446, 3446, 3438, 3438, 3446, 3446, 3446, 3446, + 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, + 3446, 3446, 3438, 3438, 3446, 3446, 3438, 3438, 3446, 3438, + 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3446, 3446, 3438, + 3446, 3446, 3446, 3438, 3446, 3438, 3446, 3446, 3446, 3446, + 3438, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3438, 3438, 3438, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3419, 3427, 3419, 3419, 3427, 3427, 3419, 3427, 3427, - 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3419, 3419, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3419, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3419, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, - 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, - 3419, 3427, 3427, 3427, 3427, 3427, 3419, 3427, 3427, 3427, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3446, 3446, 3446, 3438, 3446, 3438, 3446, 3438, 3438, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3438, 3446, 3438, 3438, 3446, 3446, 3438, 3446, 3446, 3438, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, + 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3438, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3438, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3427, 3427, 3427, 3419, 3427, 3427, 3427, 3419, 3427, 3419, - 3419, 3427, 3427, 3427, 3427, 3427, 3419, 3419, 0, 3419, - 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, - 3419, 3419, 3419, 3419, 3419, 3419, 3419 + 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3438, + 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, + 3446, 3446, 3438, 3446, 3446, 3446, 3438, 3446, 3438, 3438, + 3446, 3446, 3446, 3446, 3446, 3438, 3438, 0, 3438, 3438, + 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, + 3438, 3438, 3438, 3438, 3438, 3438 } ; -static const flex_int16_t yy_nxt[6725] = +static const flex_int16_t yy_nxt[6755] = { 0, 18, 19, 20, 21, 22, 23, 22, 18, 18, 18, 18, 18, 22, 24, 25, 26, 27, 28, 29, 30, @@ -1609,7 +1615,7 @@ static const flex_int16_t yy_nxt[6725] = 311, 86, 86, 86, 86, 307, 86, 318, 86, 86, 86, 319, 86, 325, 312, 313, 315, 309, 314, 316, 86, 320, 86, 329, 321, 328, 322, 330, 327, 326, - 332, 86, 86, 86, 730, 334, 86, 338, 323, 331, + 332, 86, 86, 86, 732, 334, 86, 338, 323, 331, 324, 86, 335, 86, 86, 340, 86, 342, 86, 339, 341, 86, 333, 86, 86, 86, 344, 336, 86, 86, 86, 343, 86, 86, 346, 86, 348, 86, 345, 86, @@ -1644,654 +1650,657 @@ static const flex_int16_t yy_nxt[6725] = 86, 488, 86, 489, 86, 490, 482, 86, 484, 86, 506, 86, 86, 494, 491, 487, 493, 495, 486, 86, 86, 86, 86, 86, 492, 496, 498, 86, 499, 86, - 501, 497, 86, 507, 86, 500, 508, 86, 505, 86, - 86, 86, 521, 502, 510, 509, 503, 524, 504, 86, - 511, 86, 522, 86, 512, 86, 635, 86, 527, 513, + 501, 497, 170, 507, 86, 500, 508, 86, 505, 86, + 86, 86, 522, 502, 86, 509, 503, 523, 504, 86, + 510, 86, 511, 544, 86, 86, 525, 86, 512, 568, - 86, 86, 514, 86, 515, 526, 516, 86, 525, 86, - 523, 529, 539, 170, 528, 537, 538, 540, 86, 517, - 544, 86, 518, 86, 519, 86, 520, 86, 547, 530, - 531, 541, 546, 86, 543, 86, 545, 86, 542, 532, - 86, 533, 534, 535, 548, 554, 536, 552, 86, 86, - 86, 551, 86, 86, 561, 550, 86, 553, 86, 549, - 86, 559, 86, 555, 86, 562, 86, 558, 556, 557, - 86, 566, 86, 560, 86, 86, 86, 86, 564, 86, - 569, 168, 563, 86, 565, 570, 571, 86, 86, 86, - 568, 576, 86, 583, 86, 573, 572, 567, 580, 574, + 528, 168, 513, 86, 86, 524, 526, 514, 527, 530, + 515, 86, 516, 539, 517, 540, 529, 86, 538, 86, + 541, 86, 86, 86, 86, 86, 547, 518, 86, 542, + 519, 166, 520, 86, 521, 86, 543, 531, 532, 546, + 549, 545, 86, 86, 548, 550, 86, 533, 551, 534, + 535, 536, 553, 557, 537, 86, 552, 86, 86, 86, + 555, 86, 554, 558, 560, 562, 86, 563, 86, 86, + 86, 86, 559, 567, 86, 86, 561, 86, 556, 86, + 570, 565, 571, 572, 566, 86, 86, 86, 564, 86, + 569, 86, 86, 86, 577, 578, 579, 573, 86, 584, - 86, 575, 577, 578, 86, 86, 86, 86, 581, 86, - 86, 86, 86, 597, 166, 600, 589, 86, 86, 86, - 579, 585, 592, 582, 584, 586, 588, 590, 587, 591, - 593, 594, 86, 86, 595, 596, 86, 602, 599, 603, - 86, 598, 86, 86, 86, 601, 604, 86, 605, 86, - 606, 86, 609, 86, 607, 611, 86, 86, 86, 86, - 614, 615, 608, 612, 86, 86, 610, 86, 616, 86, - 613, 86, 86, 86, 621, 86, 619, 620, 86, 86, - 617, 86, 622, 86, 86, 86, 627, 623, 86, 628, - 618, 86, 629, 626, 86, 631, 86, 625, 624, 86, + 86, 86, 574, 575, 581, 576, 86, 86, 585, 86, + 582, 86, 86, 580, 86, 598, 586, 86, 601, 86, + 590, 86, 600, 587, 86, 583, 589, 588, 599, 593, + 86, 591, 86, 592, 603, 86, 165, 594, 595, 602, + 86, 596, 597, 86, 86, 86, 86, 86, 606, 605, + 607, 608, 86, 604, 86, 609, 86, 610, 611, 612, + 86, 86, 86, 615, 616, 614, 613, 86, 86, 618, + 86, 617, 86, 86, 86, 622, 86, 620, 621, 86, + 86, 86, 86, 623, 86, 628, 86, 86, 624, 619, + 86, 629, 633, 627, 630, 86, 631, 86, 626, 625, - 634, 632, 86, 630, 86, 636, 633, 86, 86, 86, - 86, 86, 86, 86, 86, 638, 641, 639, 86, 649, - 86, 86, 643, 637, 86, 86, 86, 86, 729, 650, - 640, 644, 642, 645, 647, 648, 646, 651, 653, 86, - 86, 657, 86, 86, 652, 656, 86, 659, 654, 86, - 662, 655, 86, 86, 86, 661, 86, 86, 86, 86, - 86, 658, 665, 668, 86, 86, 86, 86, 664, 660, - 669, 671, 86, 86, 663, 86, 86, 86, 86, 670, - 666, 667, 86, 672, 86, 86, 674, 86, 685, 728, - 687, 673, 86, 675, 688, 683, 686, 684, 676, 86, + 86, 632, 86, 635, 86, 637, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 639, 634, 640, 642, 636, + 86, 86, 644, 650, 86, 86, 649, 638, 163, 86, + 641, 643, 645, 651, 646, 86, 652, 86, 647, 654, + 653, 648, 86, 86, 86, 655, 657, 86, 656, 660, + 86, 86, 86, 663, 662, 86, 86, 86, 658, 86, + 86, 666, 659, 86, 86, 86, 665, 669, 86, 670, + 661, 86, 86, 672, 86, 86, 86, 664, 86, 667, + 671, 668, 687, 86, 86, 86, 86, 673, 675, 86, + 689, 674, 86, 676, 684, 86, 706, 685, 677, 686, - 677, 86, 692, 689, 86, 86, 678, 86, 679, 690, - 693, 680, 681, 691, 86, 697, 696, 694, 682, 86, - 695, 86, 86, 86, 86, 701, 698, 86, 704, 699, - 86, 86, 706, 86, 86, 700, 86, 86, 86, 86, - 86, 86, 86, 86, 703, 712, 702, 165, 707, 708, - 713, 709, 717, 710, 86, 705, 86, 715, 714, 86, - 711, 170, 716, 718, 720, 719, 721, 86, 86, 86, - 86, 86, 86, 86, 732, 86, 86, 727, 163, 733, - 86, 86, 722, 724, 731, 86, 725, 723, 735, 86, - 726, 86, 734, 736, 86, 86, 86, 86, 737, 86, + 678, 694, 688, 86, 86, 690, 679, 691, 680, 692, + 86, 681, 682, 693, 86, 695, 86, 699, 683, 86, + 86, 86, 86, 86, 703, 698, 86, 86, 700, 86, + 696, 86, 708, 697, 701, 86, 702, 86, 86, 86, + 86, 86, 86, 86, 709, 704, 705, 710, 714, 715, + 86, 86, 707, 711, 86, 720, 712, 717, 86, 719, + 716, 713, 170, 722, 718, 86, 721, 86, 86, 86, + 86, 86, 86, 725, 86, 735, 729, 723, 86, 161, + 731, 86, 724, 727, 726, 86, 86, 730, 737, 728, + 734, 86, 86, 733, 86, 86, 86, 86, 736, 739, - 741, 740, 86, 738, 86, 746, 739, 161, 742, 86, - 747, 86, 749, 86, 758, 743, 750, 86, 744, 751, - 745, 86, 748, 752, 86, 86, 753, 86, 754, 86, - 755, 86, 759, 86, 86, 756, 86, 86, 760, 86, - 86, 86, 757, 763, 764, 762, 86, 86, 768, 86, - 761, 767, 86, 769, 86, 86, 86, 86, 86, 773, - 771, 86, 86, 86, 765, 766, 86, 776, 779, 86, - 770, 772, 86, 86, 86, 86, 774, 775, 780, 777, - 86, 86, 86, 781, 782, 86, 778, 86, 787, 783, - 786, 789, 784, 785, 86, 86, 792, 86, 788, 790, + 86, 86, 86, 86, 738, 742, 743, 86, 748, 740, + 744, 86, 741, 749, 86, 751, 86, 745, 747, 753, + 746, 752, 86, 86, 750, 86, 754, 86, 755, 86, + 756, 86, 757, 86, 86, 86, 86, 758, 86, 86, + 762, 86, 761, 760, 759, 86, 86, 86, 765, 764, + 86, 766, 763, 770, 769, 86, 86, 767, 86, 86, + 771, 86, 86, 773, 86, 775, 768, 86, 86, 86, + 86, 86, 781, 772, 778, 774, 782, 776, 86, 86, + 86, 86, 789, 86, 779, 86, 784, 86, 777, 86, + 780, 785, 792, 783, 786, 787, 86, 86, 788, 86, - 791, 794, 86, 86, 86, 86, 796, 86, 797, 86, - 799, 795, 793, 86, 801, 86, 800, 86, 86, 86, - 86, 86, 808, 86, 86, 804, 806, 86, 86, 86, - 798, 802, 805, 809, 86, 803, 86, 178, 815, 86, - 807, 86, 817, 813, 86, 812, 810, 816, 814, 811, - 818, 819, 86, 86, 86, 820, 86, 86, 86, 821, - 86, 826, 828, 824, 86, 86, 86, 86, 86, 827, - 86, 823, 86, 829, 822, 832, 86, 831, 86, 825, - 833, 86, 86, 86, 86, 840, 839, 836, 842, 834, - 830, 835, 86, 841, 86, 86, 844, 86, 86, 848, + 796, 793, 86, 790, 86, 791, 86, 86, 86, 86, + 798, 794, 799, 797, 795, 86, 86, 86, 804, 802, + 801, 86, 803, 86, 86, 86, 86, 805, 806, 808, + 810, 86, 86, 86, 800, 811, 807, 86, 86, 178, + 86, 86, 817, 86, 819, 809, 86, 815, 86, 818, + 86, 812, 816, 814, 813, 820, 821, 86, 86, 86, + 822, 86, 86, 828, 823, 827, 86, 826, 824, 86, + 830, 829, 86, 86, 86, 825, 86, 831, 833, 834, + 86, 86, 86, 841, 835, 86, 86, 838, 86, 86, + 86, 86, 86, 836, 837, 848, 844, 832, 86, 843, - 86, 837, 838, 846, 845, 86, 86, 852, 86, 854, - 849, 850, 853, 86, 843, 86, 86, 86, 847, 856, - 86, 851, 858, 86, 86, 86, 86, 86, 864, 86, - 86, 86, 86, 865, 86, 857, 86, 86, 86, 866, - 855, 859, 860, 861, 86, 862, 867, 863, 86, 873, - 869, 868, 86, 872, 86, 86, 870, 86, 874, 86, - 871, 86, 86, 879, 875, 86, 86, 86, 86, 86, - 86, 86, 888, 876, 886, 86, 86, 86, 877, 889, - 878, 885, 881, 880, 887, 882, 883, 884, 86, 86, - 890, 86, 86, 86, 86, 86, 891, 894, 86, 892, + 86, 839, 840, 86, 846, 842, 850, 847, 845, 86, + 849, 86, 86, 854, 86, 856, 852, 86, 855, 86, + 86, 851, 858, 857, 86, 86, 853, 860, 86, 86, + 86, 86, 866, 86, 86, 86, 859, 867, 86, 86, + 86, 86, 861, 868, 86, 86, 862, 863, 86, 864, + 869, 865, 86, 875, 870, 86, 873, 86, 871, 86, + 872, 86, 86, 874, 86, 876, 877, 878, 882, 86, + 86, 86, 86, 86, 86, 176, 879, 86, 891, 889, + 86, 881, 880, 86, 86, 86, 884, 883, 892, 885, + 886, 887, 888, 86, 890, 86, 86, 893, 86, 86, - 86, 898, 86, 893, 86, 899, 86, 895, 897, 900, - 86, 901, 896, 86, 86, 902, 903, 86, 906, 86, - 904, 909, 86, 905, 170, 911, 907, 86, 86, 910, - 86, 908, 912, 86, 86, 86, 86, 918, 86, 86, - 919, 86, 914, 86, 913, 921, 86, 86, 920, 915, - 916, 86, 922, 925, 86, 86, 917, 86, 927, 86, - 923, 926, 924, 86, 931, 86, 86, 928, 86, 86, - 86, 86, 86, 932, 86, 933, 86, 86, 952, 86, - 86, 930, 929, 946, 934, 947, 948, 944, 86, 86, - 86, 936, 951, 945, 935, 86, 86, 937, 949, 86, + 86, 897, 86, 86, 894, 86, 895, 896, 902, 901, + 86, 86, 903, 900, 898, 904, 905, 86, 899, 86, + 86, 86, 86, 170, 86, 86, 907, 912, 913, 908, + 910, 86, 86, 86, 914, 906, 909, 911, 86, 86, + 86, 928, 915, 86, 86, 920, 916, 86, 917, 921, + 86, 86, 922, 924, 86, 918, 86, 919, 86, 86, + 923, 925, 86, 927, 86, 86, 930, 926, 86, 934, + 86, 86, 86, 86, 86, 86, 931, 86, 935, 929, + 936, 86, 86, 175, 86, 86, 933, 950, 86, 937, + 932, 951, 947, 949, 939, 86, 86, 938, 86, 948, - 938, 86, 953, 86, 939, 86, 950, 940, 86, 86, - 954, 86, 958, 966, 941, 942, 957, 943, 86, 956, - 86, 955, 86, 959, 960, 86, 961, 86, 86, 962, - 967, 969, 971, 86, 963, 970, 86, 86, 968, 86, - 964, 965, 973, 86, 974, 86, 977, 978, 972, 86, - 1293, 975, 979, 86, 86, 981, 980, 86, 976, 86, - 982, 86, 983, 86, 984, 86, 985, 86, 986, 988, - 86, 86, 987, 989, 86, 86, 86, 86, 991, 992, - 86, 86, 996, 86, 86, 995, 990, 86, 86, 999, - 86, 86, 86, 86, 1003, 1053, 993, 1004, 997, 994, + 940, 86, 86, 941, 952, 954, 958, 942, 86, 955, + 943, 86, 953, 86, 956, 86, 959, 944, 945, 961, + 946, 86, 957, 86, 86, 86, 969, 86, 86, 86, + 86, 972, 86, 974, 86, 960, 86, 962, 963, 976, + 964, 86, 971, 965, 970, 978, 170, 86, 966, 975, + 980, 977, 973, 981, 967, 968, 86, 86, 982, 86, + 86, 984, 86, 983, 86, 987, 979, 986, 86, 86, + 86, 86, 985, 988, 989, 990, 991, 86, 86, 86, + 992, 993, 86, 86, 86, 86, 995, 86, 999, 86, + 86, 86, 998, 86, 86, 1002, 86, 86, 994, 168, - 86, 998, 1000, 1001, 1005, 86, 86, 86, 1006, 1009, - 1011, 1008, 1002, 1007, 86, 86, 86, 86, 1013, 86, - 86, 86, 1012, 1014, 86, 1015, 1010, 1017, 86, 1016, - 1018, 86, 86, 86, 86, 86, 86, 86, 86, 1021, - 1019, 86, 1022, 1026, 86, 1029, 86, 86, 86, 86, - 1027, 1020, 1030, 1024, 1023, 1028, 86, 1025, 86, 86, - 86, 86, 86, 86, 86, 1032, 1035, 1031, 1033, 1036, - 86, 86, 86, 1034, 1037, 1038, 1039, 1042, 1043, 86, - 1045, 1041, 86, 1044, 86, 86, 86, 86, 1040, 86, - 86, 1054, 86, 1051, 86, 1048, 86, 1046, 86, 86, + 1006, 1004, 1007, 996, 997, 1000, 86, 1001, 1009, 1003, + 1008, 86, 86, 1010, 86, 1012, 86, 1011, 1005, 1014, + 1016, 86, 86, 86, 86, 86, 86, 1015, 86, 1018, + 86, 1017, 1019, 1020, 86, 1013, 1021, 86, 1022, 86, + 86, 86, 86, 86, 86, 1024, 1029, 86, 1025, 86, + 1032, 86, 86, 86, 86, 86, 1033, 1023, 1030, 1027, + 1026, 1031, 86, 1028, 1035, 86, 86, 86, 86, 86, + 86, 1034, 1038, 1040, 1036, 1039, 86, 86, 1037, 86, + 86, 1041, 1042, 1046, 86, 1048, 1044, 86, 1047, 86, + 86, 86, 1045, 86, 1043, 1049, 86, 86, 1056, 1051, - 86, 1052, 86, 1056, 1047, 86, 86, 1050, 86, 86, - 86, 1049, 1064, 86, 86, 1055, 1067, 1057, 1062, 1058, - 1059, 86, 86, 1068, 1060, 1061, 86, 86, 1065, 1063, - 86, 86, 1066, 1069, 86, 86, 1072, 1075, 86, 86, - 1074, 1071, 86, 86, 86, 1070, 86, 86, 1073, 86, - 1076, 1078, 1080, 86, 1085, 1086, 86, 86, 1088, 1077, - 86, 86, 86, 1079, 86, 86, 1081, 176, 1083, 1082, - 1087, 1089, 1091, 1084, 1092, 86, 86, 86, 86, 1093, - 86, 86, 1090, 86, 1094, 1100, 1097, 86, 1095, 86, - 1099, 86, 86, 1104, 86, 1101, 1096, 86, 1098, 86, + 1054, 1057, 86, 86, 86, 86, 1050, 86, 1055, 1059, + 86, 1053, 86, 86, 86, 1052, 86, 86, 86, 86, + 86, 1067, 1070, 1065, 1058, 86, 1060, 1061, 86, 1071, + 1062, 86, 86, 1064, 1063, 86, 1068, 1072, 1069, 1066, + 86, 1075, 86, 86, 86, 86, 1074, 86, 1076, 1078, + 1073, 1079, 86, 86, 86, 86, 1077, 86, 86, 86, + 86, 1084, 1080, 1082, 1089, 1081, 1090, 1083, 1092, 86, + 86, 86, 86, 1091, 86, 1085, 1095, 1087, 1096, 1086, + 1088, 86, 86, 1093, 86, 1097, 86, 86, 86, 86, + 1104, 1094, 86, 1101, 86, 1103, 86, 86, 86, 1099, - 1103, 1102, 1106, 86, 86, 86, 1111, 86, 86, 1108, - 86, 1112, 170, 86, 1105, 1107, 86, 1114, 86, 1115, - 86, 1109, 1113, 1110, 86, 1118, 86, 86, 86, 1119, - 1116, 86, 86, 1131, 86, 86, 1117, 175, 1132, 86, - 1121, 1122, 1134, 86, 86, 86, 86, 1123, 1120, 1139, - 1133, 86, 1124, 86, 1137, 1136, 1125, 86, 1126, 86, - 1138, 1141, 1127, 86, 1128, 86, 1142, 86, 1143, 1129, - 1135, 1140, 86, 86, 1130, 86, 1145, 1144, 86, 86, - 1147, 86, 86, 1148, 1151, 1150, 86, 86, 1146, 1152, - 86, 86, 1157, 1149, 1158, 1155, 1154, 1156, 1159, 86, + 1105, 86, 1108, 1110, 86, 1098, 86, 1100, 86, 86, + 1102, 86, 1109, 86, 1107, 1115, 1106, 86, 1112, 86, + 1116, 170, 86, 1118, 1111, 1113, 1117, 1114, 86, 1119, + 86, 86, 86, 86, 86, 1122, 86, 86, 86, 1120, + 86, 1135, 1121, 166, 86, 1138, 86, 1125, 1136, 1126, + 1123, 86, 86, 1137, 1127, 86, 1124, 86, 1128, 86, + 86, 1140, 1129, 86, 1130, 1143, 1145, 1141, 1131, 1142, + 1132, 1146, 86, 86, 86, 1133, 1139, 1144, 86, 86, + 1134, 86, 1147, 1149, 86, 86, 1152, 86, 1148, 1155, + 86, 86, 86, 1151, 86, 1150, 1153, 1154, 1160, 86, - 86, 1162, 1153, 1161, 86, 1160, 86, 86, 86, 86, - 86, 86, 1163, 86, 86, 1177, 1174, 86, 1164, 86, - 86, 86, 1173, 170, 1178, 1176, 86, 1165, 86, 1166, - 86, 1175, 86, 86, 1167, 1180, 1168, 1184, 1179, 1181, - 86, 86, 1169, 86, 1186, 1182, 1185, 1170, 1171, 1183, - 86, 86, 1190, 86, 1172, 86, 86, 1193, 1187, 1191, - 86, 86, 86, 86, 1194, 86, 1188, 1196, 1198, 1189, - 86, 86, 86, 86, 86, 1199, 1192, 86, 1197, 1195, - 1204, 1201, 1202, 86, 86, 86, 86, 86, 86, 86, - 1200, 86, 1205, 1203, 1207, 86, 86, 86, 86, 86, + 1162, 1156, 1163, 1159, 1161, 1158, 86, 1165, 86, 1164, + 86, 1157, 86, 1166, 86, 86, 86, 86, 86, 86, + 86, 86, 1181, 1178, 86, 86, 86, 86, 1177, 1182, + 86, 86, 1180, 86, 1168, 1169, 1167, 86, 1170, 1179, + 1184, 1183, 1188, 1171, 86, 1172, 1185, 1187, 86, 1186, + 86, 1173, 86, 86, 86, 1189, 1174, 1175, 1194, 86, + 86, 86, 1191, 1176, 1190, 1195, 86, 1197, 86, 1192, + 86, 1198, 1193, 86, 86, 1200, 1202, 86, 86, 86, + 1196, 86, 86, 1203, 86, 1199, 1208, 1201, 1205, 86, + 1206, 86, 86, 86, 86, 86, 1204, 86, 1209, 1211, - 1212, 1209, 1214, 1206, 1216, 1208, 1213, 1211, 1210, 86, - 86, 86, 86, 1218, 86, 1215, 86, 1220, 86, 86, - 86, 86, 86, 86, 168, 1217, 1225, 1226, 1227, 1228, - 1222, 1219, 86, 1221, 1224, 1230, 1223, 86, 1229, 86, - 86, 86, 86, 86, 1235, 86, 1239, 1232, 1231, 1236, - 86, 86, 1237, 1233, 86, 1238, 86, 86, 1234, 1240, - 86, 86, 1246, 86, 1248, 86, 86, 86, 86, 86, - 86, 1250, 1242, 1244, 1241, 1243, 1245, 86, 86, 86, - 1249, 1251, 1252, 1247, 86, 86, 86, 1257, 86, 1254, - 1253, 1255, 86, 1256, 86, 86, 86, 1258, 86, 1259, + 1207, 86, 86, 86, 86, 1220, 86, 1218, 86, 1213, + 1210, 86, 1216, 1212, 1215, 1217, 86, 1214, 86, 86, + 86, 1219, 86, 86, 1221, 1224, 86, 86, 1229, 86, + 1222, 86, 86, 1226, 1230, 86, 1231, 86, 1223, 86, + 1233, 1225, 1228, 1234, 1227, 86, 1232, 1236, 1237, 86, + 86, 1239, 86, 86, 1235, 1243, 1240, 86, 86, 1241, + 86, 86, 1242, 86, 86, 86, 1238, 1244, 1250, 86, + 1252, 86, 86, 86, 86, 1256, 86, 1246, 1248, 1249, + 1245, 1247, 86, 86, 86, 86, 1253, 1254, 86, 1251, + 1258, 86, 86, 1259, 1257, 86, 1262, 1255, 86, 86, - 1260, 1261, 1264, 1267, 1263, 1265, 86, 86, 86, 86, - 86, 86, 1262, 1268, 86, 1269, 1266, 86, 86, 86, - 1275, 1273, 1276, 86, 86, 86, 86, 1270, 86, 1277, - 1271, 86, 1274, 86, 1280, 86, 1278, 1272, 1279, 86, - 86, 1282, 1284, 86, 1281, 1283, 86, 86, 86, 1286, - 86, 1285, 1287, 1289, 86, 86, 1288, 86, 1291, 86, - 1292, 86, 86, 86, 1294, 1298, 1299, 86, 86, 86, - 86, 86, 86, 1290, 1296, 1301, 1302, 86, 86, 1295, - 1306, 1305, 1297, 1300, 86, 86, 1303, 86, 86, 86, - 86, 170, 1304, 1312, 86, 86, 1308, 86, 86, 86, + 1260, 1261, 86, 1263, 86, 1265, 1268, 1264, 1269, 86, + 1267, 86, 86, 86, 86, 86, 1273, 1272, 1266, 86, + 1270, 86, 86, 86, 1279, 86, 1277, 1280, 165, 86, + 86, 1271, 86, 86, 1281, 86, 86, 1274, 1278, 1283, + 1275, 1282, 1276, 86, 1285, 86, 86, 86, 1284, 1289, + 86, 1286, 1288, 1287, 86, 86, 1291, 86, 86, 1290, + 86, 86, 86, 86, 86, 1294, 1296, 1292, 86, 1293, + 86, 1297, 86, 1298, 86, 1299, 86, 1303, 86, 1304, + 1295, 86, 1300, 86, 1301, 86, 1306, 1307, 86, 86, + 86, 1305, 1311, 1302, 86, 86, 86, 1308, 86, 86, - 1313, 86, 1314, 1307, 1319, 86, 86, 1309, 86, 1311, - 166, 1315, 1316, 86, 1310, 1320, 1317, 1318, 1321, 86, - 1323, 1324, 86, 86, 1327, 86, 86, 86, 1322, 1325, - 1326, 86, 86, 86, 86, 86, 1328, 1329, 1331, 86, - 86, 86, 1337, 86, 86, 86, 1330, 1334, 86, 1332, - 86, 86, 86, 1348, 1333, 86, 1335, 1341, 1336, 1338, - 1343, 86, 1339, 1340, 86, 1347, 86, 86, 86, 1344, - 1342, 1345, 1349, 1351, 1346, 1350, 86, 86, 1352, 86, - 1353, 86, 86, 86, 86, 86, 86, 1354, 1357, 86, - 1356, 1360, 86, 1364, 86, 86, 1359, 1355, 86, 1361, + 86, 170, 1310, 1309, 1313, 1317, 86, 86, 86, 86, + 163, 86, 1312, 1318, 1319, 86, 86, 1314, 86, 1316, + 86, 1320, 1322, 1324, 1315, 1321, 1328, 1323, 1329, 1325, + 1326, 86, 86, 86, 86, 86, 1327, 86, 86, 1332, + 1331, 86, 86, 1333, 86, 86, 86, 86, 86, 1330, + 1336, 86, 1342, 86, 1339, 1334, 1335, 86, 86, 1337, + 86, 86, 86, 1340, 86, 1338, 161, 1346, 86, 1348, + 1341, 1343, 1352, 86, 1353, 1345, 1344, 86, 1349, 86, + 1350, 86, 1347, 1351, 1354, 1355, 86, 86, 1356, 86, + 1358, 1357, 86, 86, 86, 86, 86, 86, 86, 1362, - 1362, 1358, 86, 1365, 86, 86, 86, 1366, 86, 1368, - 1369, 1363, 86, 86, 1370, 1367, 86, 86, 86, 86, - 86, 86, 86, 1371, 1376, 86, 86, 1372, 1374, 86, - 86, 1377, 1373, 1375, 86, 1381, 86, 86, 86, 1378, - 1380, 1382, 1379, 1385, 86, 1383, 86, 86, 86, 1393, - 1384, 1386, 86, 86, 86, 86, 1387, 1389, 1388, 86, - 86, 1396, 1391, 86, 86, 86, 1401, 1394, 1392, 1390, - 1399, 1402, 86, 1395, 1397, 1400, 1398, 86, 86, 86, - 86, 1406, 86, 1403, 1416, 86, 1417, 1415, 86, 165, - 86, 1404, 1405, 86, 1407, 1414, 86, 1419, 1408, 86, + 86, 1365, 1361, 86, 1369, 86, 86, 86, 1359, 1364, + 1360, 1367, 1366, 86, 1363, 86, 86, 86, 1370, 86, + 1371, 1373, 1368, 1374, 86, 86, 1372, 86, 86, 86, + 86, 86, 1376, 1375, 86, 86, 86, 1381, 86, 86, + 1377, 1379, 86, 1380, 1386, 86, 1378, 1382, 86, 86, + 1383, 86, 86, 86, 1385, 1384, 86, 1387, 1390, 1388, + 86, 1398, 86, 1391, 1393, 1389, 86, 86, 86, 86, + 1392, 86, 1394, 86, 86, 1396, 86, 1401, 86, 1404, + 1400, 1395, 1397, 1399, 86, 86, 86, 1406, 1405, 1403, + 86, 1402, 1407, 86, 86, 1411, 1455, 1408, 1409, 1410, - 86, 1409, 1410, 1420, 1418, 1421, 1411, 86, 86, 86, - 86, 1423, 1412, 1422, 86, 1425, 1413, 1424, 86, 86, - 1430, 1426, 86, 1427, 86, 86, 86, 1428, 86, 86, - 1433, 1431, 1436, 1437, 86, 86, 163, 1429, 86, 86, - 1438, 86, 1434, 1440, 1432, 1439, 86, 1435, 1441, 86, - 1442, 1445, 1443, 86, 1444, 86, 1447, 1448, 1449, 86, - 86, 86, 86, 1446, 1450, 1451, 86, 1455, 86, 86, - 86, 86, 1456, 86, 1452, 1454, 1459, 1457, 86, 86, - 1453, 86, 86, 1465, 1460, 86, 1466, 1461, 86, 86, - 86, 1458, 86, 86, 86, 1469, 1464, 86, 1462, 86, + 86, 1412, 86, 1419, 1421, 1413, 86, 1422, 1414, 1415, + 86, 1420, 86, 1416, 1425, 86, 86, 1423, 86, 1417, + 86, 1426, 86, 1418, 1424, 86, 1428, 1427, 86, 1430, + 86, 86, 86, 1431, 1435, 1432, 86, 86, 86, 1429, + 86, 86, 86, 1438, 86, 1436, 1441, 1442, 86, 1443, + 1434, 1433, 86, 86, 86, 1439, 86, 1437, 1444, 86, + 1440, 86, 1451, 86, 1450, 1445, 86, 1452, 1453, 1454, + 1446, 86, 1447, 86, 1448, 86, 1449, 1456, 1457, 1458, + 1460, 86, 86, 86, 1459, 1461, 86, 86, 1464, 86, + 1462, 86, 86, 86, 1470, 86, 1471, 86, 1466, 86, - 1463, 1467, 1468, 1471, 1472, 86, 1470, 86, 1476, 86, - 86, 86, 1475, 1478, 86, 86, 86, 1473, 1479, 86, - 1481, 86, 1480, 86, 86, 1477, 1484, 86, 1486, 86, - 1474, 1485, 1483, 86, 1487, 86, 86, 1491, 86, 86, - 1482, 1488, 86, 86, 1495, 1489, 1493, 86, 86, 86, - 86, 1498, 1496, 86, 86, 86, 1490, 1497, 1500, 1492, - 86, 86, 1494, 86, 86, 1502, 86, 86, 1504, 1501, - 1507, 1499, 1505, 86, 86, 1503, 86, 1509, 1506, 1508, - 86, 86, 86, 86, 1511, 1510, 1515, 1512, 1516, 1513, - 86, 1518, 86, 86, 86, 1517, 1514, 86, 86, 86, + 86, 1465, 86, 86, 1463, 1472, 86, 1469, 1474, 86, + 1467, 1468, 86, 1473, 86, 1476, 1475, 86, 86, 1477, + 1481, 86, 1480, 1483, 86, 86, 86, 1478, 1484, 86, + 1486, 86, 1485, 1482, 86, 1489, 86, 86, 86, 1479, + 1491, 86, 86, 1488, 86, 1492, 86, 1493, 1496, 86, + 1487, 86, 86, 86, 86, 1501, 1499, 1490, 86, 1494, + 86, 86, 1504, 1502, 86, 86, 86, 1495, 86, 1498, + 86, 1497, 86, 1503, 1500, 1506, 1511, 86, 86, 1515, + 86, 1507, 1508, 1505, 1509, 1510, 86, 86, 86, 86, + 1513, 1512, 86, 1514, 1516, 86, 86, 86, 86, 1521, - 1522, 86, 1519, 86, 86, 86, 170, 86, 86, 86, - 1521, 161, 1529, 1530, 86, 1525, 86, 1520, 86, 86, - 1531, 1526, 1524, 1523, 1532, 86, 86, 1527, 86, 1535, - 86, 1528, 86, 86, 1540, 86, 1536, 86, 1537, 1533, - 86, 86, 1538, 1545, 86, 1534, 1544, 86, 86, 86, - 1539, 1549, 86, 1547, 86, 1541, 1550, 86, 1543, 86, - 86, 1552, 1542, 86, 86, 86, 86, 1553, 1548, 86, - 1546, 1561, 1551, 86, 1554, 86, 86, 86, 1555, 1556, - 1558, 1564, 1557, 1559, 1563, 1560, 86, 1562, 1566, 86, - 86, 1569, 86, 1567, 86, 86, 86, 1565, 86, 86, + 1522, 1518, 1523, 1519, 86, 86, 86, 1524, 86, 86, + 1517, 1520, 86, 86, 1528, 86, 86, 1525, 86, 86, + 1527, 170, 86, 1526, 1535, 1536, 86, 86, 1531, 1538, + 86, 86, 1529, 1537, 1530, 86, 1532, 86, 86, 1533, + 1539, 86, 86, 86, 86, 1534, 1540, 86, 1546, 86, + 86, 1551, 86, 1543, 86, 86, 1544, 1541, 1542, 1550, + 86, 1545, 86, 3438, 1547, 1553, 1555, 86, 1549, 86, + 86, 1556, 86, 86, 1548, 86, 86, 1559, 1552, 1558, + 86, 1554, 1567, 86, 86, 1557, 86, 1560, 86, 1564, + 1561, 1562, 1565, 1569, 1563, 1566, 86, 1568, 86, 86, - 1571, 1572, 86, 86, 86, 3419, 86, 1575, 1568, 86, - 1570, 86, 1580, 86, 86, 86, 1573, 1581, 1577, 1574, - 1584, 86, 86, 1576, 1578, 86, 86, 1579, 86, 86, - 86, 86, 1582, 1585, 1583, 86, 1591, 86, 86, 1587, - 86, 1586, 1592, 1588, 1589, 1593, 86, 1595, 86, 1590, - 86, 1596, 86, 86, 1600, 1594, 1601, 1598, 1602, 86, - 86, 1597, 86, 86, 86, 1604, 86, 86, 1609, 1605, - 86, 1610, 1599, 1603, 86, 1608, 1606, 86, 1611, 86, - 1612, 86, 1613, 86, 86, 1614, 86, 1615, 1607, 86, - 86, 86, 86, 86, 86, 86, 1622, 86, 1616, 86, + 1570, 1572, 86, 86, 86, 86, 1573, 86, 1577, 1571, + 1578, 86, 86, 86, 1575, 86, 86, 86, 1581, 86, + 86, 1574, 1576, 86, 1586, 86, 86, 86, 1590, 1579, + 1583, 1587, 1580, 86, 86, 1582, 1589, 1584, 1585, 86, + 1593, 86, 86, 1588, 86, 1591, 86, 86, 86, 86, + 86, 1597, 86, 1599, 1598, 86, 1594, 1595, 1592, 1601, + 86, 1602, 86, 1596, 86, 1606, 86, 1600, 1607, 1608, + 1603, 1604, 1605, 86, 86, 86, 1610, 86, 86, 1611, + 1609, 86, 86, 1615, 1616, 1617, 86, 1614, 86, 86, + 86, 86, 86, 1618, 1612, 86, 1619, 1620, 86, 86, - 1621, 86, 86, 1618, 86, 86, 1619, 1624, 1617, 1620, - 1625, 86, 1633, 1628, 86, 1626, 86, 1623, 1629, 86, - 1630, 1627, 86, 86, 1632, 1631, 86, 86, 1637, 86, - 86, 1636, 1641, 1634, 86, 1635, 86, 86, 86, 1642, - 86, 1645, 86, 86, 86, 1648, 1638, 86, 1640, 1639, - 1647, 86, 86, 86, 86, 86, 1643, 86, 86, 1646, - 1657, 1649, 1650, 1644, 86, 1656, 86, 86, 1653, 86, - 3419, 1651, 1652, 1655, 1661, 86, 1654, 1662, 86, 86, - 86, 1660, 86, 86, 1663, 1658, 1659, 1664, 86, 86, - 86, 1666, 1668, 1665, 86, 86, 1669, 86, 86, 1672, + 86, 86, 1613, 1621, 1623, 86, 86, 86, 1629, 1622, + 86, 1628, 86, 1624, 1627, 86, 86, 86, 1634, 1625, + 1630, 1626, 1631, 1635, 86, 1636, 86, 86, 1639, 1632, + 1637, 86, 86, 86, 86, 1633, 86, 86, 86, 86, + 86, 1643, 1647, 1642, 86, 1648, 1638, 86, 86, 1651, + 86, 1640, 1641, 86, 1654, 86, 1644, 1646, 1645, 1653, + 86, 86, 86, 86, 1649, 86, 86, 86, 86, 1652, + 1663, 86, 86, 1650, 86, 1662, 86, 86, 1667, 86, + 1655, 1656, 1657, 1661, 1658, 1659, 86, 1660, 86, 1666, + 1670, 1664, 1668, 86, 86, 1665, 86, 86, 86, 1669, - 86, 1667, 1676, 86, 86, 1677, 1678, 1671, 86, 1670, - 1673, 86, 86, 86, 1675, 86, 1681, 1674, 86, 1679, - 86, 1680, 1682, 86, 1683, 86, 1688, 1689, 86, 86, - 86, 86, 86, 1684, 1686, 1687, 1692, 86, 1693, 1694, - 86, 1685, 1696, 86, 86, 86, 86, 1690, 86, 1697, - 86, 1691, 1698, 86, 86, 86, 86, 1701, 86, 1706, - 1695, 86, 1705, 86, 1699, 1703, 1700, 86, 86, 86, - 86, 1711, 86, 1709, 86, 1702, 86, 86, 1704, 86, - 86, 1712, 86, 1710, 1707, 86, 1708, 86, 1717, 86, - 1720, 1714, 1713, 86, 1718, 1722, 86, 1723, 86, 1716, + 1674, 1671, 86, 86, 1675, 1672, 86, 86, 1678, 86, + 1673, 1682, 86, 86, 86, 86, 1684, 1676, 1683, 86, + 1677, 1679, 86, 86, 1687, 1681, 86, 1680, 1686, 1685, + 1688, 86, 86, 86, 86, 1689, 1695, 86, 1694, 86, + 86, 86, 1692, 1690, 86, 1700, 1698, 86, 1699, 86, + 1691, 86, 1702, 86, 1693, 86, 86, 1696, 1703, 1704, + 86, 1697, 86, 86, 86, 86, 1707, 86, 86, 1701, + 86, 1712, 1705, 86, 1710, 86, 86, 86, 1706, 86, + 86, 1718, 1716, 86, 86, 1708, 86, 1709, 1711, 86, + 1713, 86, 1719, 1717, 1714, 1715, 86, 1724, 86, 86, - 1719, 86, 1715, 86, 1721, 86, 1725, 86, 86, 86, - 86, 1728, 1731, 86, 1727, 1730, 86, 170, 1724, 86, - 86, 1733, 1732, 1726, 86, 86, 86, 1729, 86, 1741, - 86, 3419, 86, 1734, 1736, 1742, 86, 1735, 86, 1739, - 1745, 86, 86, 1737, 1738, 86, 86, 1746, 1749, 86, - 1747, 1740, 1743, 1751, 1750, 86, 1744, 1753, 86, 86, - 1755, 86, 1748, 86, 86, 86, 86, 86, 86, 86, - 1760, 1757, 1754, 1758, 86, 1752, 86, 1761, 86, 86, - 86, 1762, 1765, 1756, 86, 1766, 86, 86, 86, 1773, - 1759, 86, 1763, 1764, 1770, 86, 86, 1771, 1767, 1768, + 86, 1721, 1720, 86, 86, 1727, 1729, 86, 1730, 86, + 86, 1723, 1725, 86, 1722, 86, 1732, 1726, 1728, 86, + 86, 86, 86, 1735, 1734, 86, 1737, 1738, 86, 1731, + 1740, 170, 1733, 86, 86, 1739, 86, 86, 86, 1736, + 86, 1748, 86, 86, 86, 86, 1817, 1741, 1743, 1749, + 86, 1742, 1746, 1752, 86, 1744, 1745, 86, 86, 1753, + 1756, 86, 1747, 1750, 86, 1751, 1754, 1758, 86, 1757, + 1760, 86, 86, 86, 1762, 86, 86, 1755, 86, 86, + 86, 86, 86, 1767, 1764, 1761, 1765, 86, 1759, 86, + 1768, 1763, 86, 86, 1769, 86, 1772, 86, 1773, 86, - 86, 1774, 86, 1775, 86, 86, 1769, 1780, 86, 1772, - 1778, 1777, 1782, 1779, 1781, 86, 1783, 86, 86, 1776, - 86, 1789, 86, 86, 1785, 1784, 86, 1786, 1787, 86, - 86, 86, 1794, 1795, 86, 1788, 1791, 86, 86, 86, - 1793, 86, 1797, 86, 86, 86, 1796, 1790, 86, 1799, - 1801, 1792, 1800, 86, 86, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 1811, 86, 1798, 1810, 86, 86, - 86, 1805, 1802, 1806, 1807, 1803, 1804, 86, 86, 1808, - 1813, 1814, 1816, 1809, 1812, 86, 1818, 86, 86, 86, - 1815, 1822, 86, 86, 86, 86, 86, 1826, 1817, 1824, + 86, 86, 1780, 1766, 3438, 1770, 86, 1771, 86, 1777, + 86, 1775, 1778, 1774, 86, 1781, 86, 1782, 86, 86, + 1776, 86, 1787, 1785, 1779, 1784, 1786, 1788, 86, 1789, + 1790, 86, 86, 1783, 1796, 86, 86, 1791, 86, 1792, + 86, 1793, 1794, 86, 86, 86, 1801, 1802, 86, 1795, + 1798, 86, 86, 86, 1800, 86, 1804, 86, 86, 86, + 1803, 1797, 86, 1806, 1808, 1799, 1807, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 1818, 86, + 1805, 86, 86, 86, 86, 1812, 1809, 1813, 1814, 1810, + 1811, 1820, 86, 1815, 1821, 1823, 1819, 1816, 86, 86, - 86, 1820, 86, 86, 86, 1819, 86, 1825, 86, 86, - 1821, 86, 86, 1823, 86, 1827, 1828, 1831, 1833, 86, - 86, 1832, 1830, 1834, 86, 1836, 1835, 1829, 86, 1841, - 86, 1840, 1842, 86, 1837, 86, 1843, 1839, 1844, 1838, - 86, 1846, 86, 1845, 86, 86, 86, 86, 1847, 1850, - 1849, 86, 1851, 86, 86, 86, 86, 86, 1860, 86, - 86, 1859, 86, 1848, 1854, 1856, 1858, 86, 1857, 1853, - 1852, 86, 86, 1855, 86, 1862, 1866, 86, 86, 86, - 1861, 1867, 86, 1868, 86, 86, 1864, 86, 1872, 1863, - 1865, 1869, 86, 86, 86, 1876, 86, 86, 1875, 86, + 1825, 86, 1828, 1824, 86, 1822, 1829, 86, 86, 86, + 86, 1833, 86, 1827, 1831, 86, 86, 86, 1826, 86, + 1832, 86, 86, 86, 1830, 86, 86, 1834, 1838, 1835, + 1840, 1841, 86, 86, 1842, 1837, 1839, 1848, 86, 86, + 1836, 1843, 1847, 1849, 86, 1850, 86, 1844, 1853, 86, + 86, 1846, 1845, 1852, 86, 86, 86, 86, 86, 86, + 1857, 1856, 86, 1858, 1851, 86, 86, 1854, 86, 1866, + 86, 1861, 1867, 86, 1855, 86, 86, 1863, 1859, 1865, + 1864, 1860, 86, 86, 86, 1862, 86, 1873, 86, 86, + 86, 86, 1874, 86, 1875, 1869, 1868, 86, 1871, 86, - 1873, 1874, 1870, 1871, 1880, 1878, 86, 86, 1879, 1877, - 86, 1884, 86, 86, 86, 1881, 1885, 86, 86, 1889, - 1890, 1892, 86, 1893, 1886, 1883, 86, 1882, 1887, 86, - 86, 86, 1896, 86, 1888, 1894, 1891, 86, 86, 1897, - 86, 1900, 86, 86, 1904, 1895, 1902, 86, 86, 86, - 86, 86, 1903, 86, 1899, 1901, 1905, 1898, 86, 86, - 86, 1908, 86, 86, 86, 1915, 86, 1909, 1906, 1911, - 1907, 86, 1910, 1917, 1918, 1912, 86, 1913, 1914, 86, - 86, 1920, 86, 86, 1919, 86, 86, 1916, 1924, 86, - 86, 1926, 86, 86, 1930, 86, 1921, 86, 86, 1925, + 1876, 1870, 1872, 86, 1879, 86, 86, 1883, 1881, 1878, + 1882, 86, 86, 1880, 86, 1877, 86, 1887, 86, 1891, + 1885, 1884, 86, 1886, 1892, 86, 86, 86, 86, 1897, + 86, 86, 1888, 1896, 3438, 86, 1890, 1889, 1899, 86, + 1893, 1900, 1894, 86, 1895, 86, 1903, 86, 1898, 86, + 1901, 1905, 86, 86, 1907, 1904, 86, 1902, 1911, 86, + 86, 86, 1909, 86, 86, 86, 86, 1906, 1910, 1908, + 86, 1912, 86, 86, 1915, 1916, 86, 86, 86, 86, + 1913, 1917, 1923, 86, 1914, 1919, 1918, 86, 1925, 1926, + 1920, 86, 1921, 1922, 86, 86, 1928, 86, 86, 86, - 86, 1922, 86, 86, 1923, 1933, 1932, 86, 1928, 86, - 86, 1929, 1927, 86, 1934, 1935, 1936, 86, 1931, 170, - 1939, 86, 1938, 1942, 86, 86, 1937, 86, 86, 1946, - 86, 1940, 86, 86, 86, 86, 1941, 86, 86, 1944, - 1948, 86, 1953, 3419, 1943, 86, 1947, 1945, 86, 1949, - 1950, 86, 86, 1951, 1958, 1952, 86, 1954, 1956, 1955, - 1957, 86, 1959, 86, 86, 1961, 1962, 1963, 86, 1960, - 86, 86, 86, 1965, 86, 86, 86, 1966, 86, 86, - 86, 86, 1964, 86, 86, 1971, 1972, 86, 86, 1976, - 86, 86, 1973, 86, 3419, 1967, 1969, 1970, 1968, 1974, + 1927, 1932, 86, 1934, 1924, 86, 86, 86, 86, 86, + 86, 1929, 1938, 86, 86, 86, 1930, 86, 1931, 1933, + 1941, 1940, 86, 1936, 86, 86, 1937, 1935, 86, 1942, + 1939, 1944, 86, 1943, 1946, 1947, 170, 1945, 86, 1950, + 86, 86, 86, 86, 1954, 86, 86, 86, 1948, 86, + 86, 86, 86, 1949, 1952, 86, 1956, 86, 1957, 1961, + 1951, 1955, 1953, 1958, 86, 86, 3438, 1962, 86, 1959, + 1964, 1966, 1960, 1965, 86, 1963, 1967, 86, 86, 86, + 1970, 1971, 86, 1968, 86, 86, 86, 1973, 1969, 86, + 86, 86, 1974, 86, 86, 86, 1972, 86, 86, 86, - 1977, 86, 86, 1975, 1984, 86, 1982, 1980, 1983, 1985, - 1979, 86, 86, 1978, 1981, 86, 86, 86, 86, 86, - 86, 1991, 86, 1994, 1995, 86, 1996, 86, 86, 1998, - 86, 1987, 1986, 1989, 1992, 1988, 1993, 86, 1990, 86, - 1999, 86, 2002, 86, 2004, 86, 2006, 86, 1997, 2003, - 86, 86, 86, 2008, 2005, 86, 86, 86, 2000, 86, - 2010, 86, 2001, 2011, 86, 2007, 2013, 2014, 86, 86, - 86, 86, 86, 86, 2018, 2020, 2012, 2017, 86, 86, - 2009, 86, 86, 2019, 2015, 86, 2028, 86, 3419, 2026, - 86, 2016, 86, 86, 2021, 2022, 2023, 2030, 86, 2025, + 1979, 86, 1980, 86, 86, 86, 1984, 1981, 86, 3438, + 1975, 1977, 1978, 1976, 1983, 1982, 86, 1985, 86, 86, + 1991, 1988, 86, 1990, 1987, 1992, 86, 1993, 1989, 86, + 1986, 86, 86, 86, 86, 86, 1999, 86, 2002, 86, + 1994, 1995, 2003, 86, 2004, 86, 86, 1997, 1996, 2000, + 86, 2001, 1998, 2006, 86, 86, 2007, 2010, 86, 2005, + 86, 86, 2012, 86, 2011, 86, 2013, 2008, 86, 2014, + 2016, 2009, 2019, 86, 86, 86, 86, 2018, 86, 2015, + 86, 2022, 86, 86, 86, 2021, 86, 86, 2026, 86, + 2017, 2025, 86, 86, 2027, 2028, 86, 86, 2020, 2023, - 2034, 2024, 2031, 86, 2032, 2027, 86, 2029, 2033, 86, - 2037, 86, 86, 86, 2041, 86, 86, 2035, 86, 86, - 2038, 86, 2043, 86, 2036, 86, 2046, 2047, 86, 86, - 2049, 86, 2039, 86, 2040, 86, 2054, 86, 86, 2044, - 86, 86, 86, 86, 2042, 2045, 2051, 2052, 86, 2048, - 2056, 86, 86, 86, 86, 2062, 2053, 2055, 2050, 2059, - 86, 2057, 2060, 2058, 86, 86, 2066, 86, 86, 2061, - 2065, 2069, 86, 86, 86, 2068, 2070, 86, 2072, 86, - 2064, 2073, 86, 86, 86, 86, 2063, 2067, 2074, 86, - 86, 86, 2071, 86, 2075, 86, 2079, 86, 2082, 2076, + 86, 86, 2036, 86, 2024, 2029, 2030, 2031, 86, 2038, + 2034, 86, 2032, 86, 2039, 86, 2033, 2035, 2041, 86, + 2037, 2042, 86, 2045, 2043, 2040, 86, 86, 86, 86, + 2049, 86, 86, 86, 2051, 2046, 86, 2044, 86, 86, + 2054, 2055, 86, 86, 2057, 86, 86, 2047, 86, 2048, + 86, 86, 86, 2064, 86, 2062, 2052, 2059, 2050, 2060, + 2053, 86, 86, 2056, 86, 86, 86, 86, 2063, 86, + 2070, 2058, 2061, 2067, 2068, 86, 86, 86, 2074, 2066, + 86, 86, 2073, 2065, 86, 2077, 86, 86, 2076, 2078, + 2080, 86, 2072, 2069, 2081, 86, 86, 86, 86, 86, - 2083, 2084, 2078, 86, 86, 86, 86, 86, 2077, 2080, - 86, 86, 86, 86, 2087, 2092, 86, 2091, 86, 2086, - 86, 2081, 86, 2085, 3419, 2089, 2096, 86, 2097, 86, - 2088, 86, 2093, 2090, 86, 2094, 86, 2095, 2099, 86, - 2098, 2100, 86, 2101, 2104, 86, 86, 2102, 86, 86, - 2107, 86, 2103, 86, 2108, 2111, 86, 86, 86, 2115, - 86, 86, 2106, 2113, 86, 2116, 86, 2105, 86, 2114, - 2117, 2109, 2112, 2110, 86, 86, 86, 2118, 2122, 86, - 2123, 86, 2124, 2126, 3419, 2119, 2127, 2125, 86, 86, - 2120, 86, 86, 86, 2131, 2121, 2129, 86, 86, 86, + 2075, 2071, 2082, 86, 86, 2079, 86, 2083, 86, 2087, + 86, 86, 2090, 86, 2091, 2092, 2086, 86, 86, 2084, + 86, 86, 2085, 86, 86, 86, 2088, 2095, 2100, 86, + 2099, 86, 2094, 2093, 86, 86, 2089, 86, 2097, 86, + 2105, 2104, 86, 2096, 86, 86, 2098, 86, 2106, 2102, + 2101, 2108, 86, 2107, 2103, 86, 2110, 2112, 86, 2109, + 86, 2111, 86, 86, 86, 86, 2119, 86, 2113, 2116, + 86, 86, 86, 86, 2114, 86, 2122, 2124, 86, 86, + 2125, 2115, 2121, 2117, 2127, 2118, 2123, 86, 2120, 86, + 86, 2126, 2131, 86, 2132, 86, 2133, 2135, 2136, 86, - 86, 86, 2128, 2133, 86, 2130, 2136, 86, 2138, 2132, - 2134, 86, 86, 170, 86, 86, 86, 86, 2141, 86, - 86, 2147, 86, 2139, 2145, 2146, 2135, 2142, 2143, 2137, - 86, 2140, 2148, 86, 2149, 86, 2144, 2151, 86, 86, - 86, 86, 86, 86, 2152, 2153, 86, 2154, 2155, 86, - 2150, 2156, 2157, 86, 2158, 86, 2159, 86, 86, 2163, - 86, 86, 86, 2162, 86, 2160, 86, 2165, 86, 2161, - 2164, 2166, 86, 2168, 86, 2167, 86, 2170, 86, 86, - 86, 2175, 86, 2173, 2169, 2174, 86, 86, 86, 86, - 86, 2180, 86, 86, 2171, 2177, 86, 2172, 86, 2185, + 2128, 2134, 86, 86, 86, 2129, 86, 86, 2140, 86, + 2130, 2138, 86, 86, 86, 86, 2142, 2145, 86, 2139, + 2147, 2141, 86, 86, 86, 2137, 86, 2143, 170, 86, + 86, 86, 86, 2150, 86, 2156, 86, 2154, 2144, 2155, + 2146, 2148, 2151, 2152, 2149, 2157, 86, 86, 2153, 2158, + 86, 2160, 86, 86, 86, 86, 86, 86, 2161, 2162, + 86, 2163, 2164, 86, 86, 2165, 2166, 2159, 2167, 86, + 2168, 86, 86, 2172, 86, 86, 2169, 2171, 86, 86, + 86, 86, 2176, 2170, 2173, 2174, 2175, 2177, 86, 86, + 86, 86, 86, 86, 86, 86, 2182, 2184, 2178, 2179, - 2176, 86, 2181, 2179, 86, 2183, 2178, 86, 86, 2189, - 2182, 86, 86, 2184, 2191, 86, 2186, 86, 86, 86, - 2187, 2192, 2188, 86, 2190, 2197, 86, 86, 2193, 86, - 2199, 86, 86, 2194, 2195, 2202, 86, 2196, 2200, 2201, - 86, 2203, 86, 2198, 86, 2204, 86, 2207, 86, 86, - 86, 86, 2206, 86, 86, 2205, 2208, 86, 2211, 2212, - 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, - 2209, 2210, 2214, 2215, 2220, 2213, 2217, 2216, 2225, 86, - 2219, 2224, 86, 86, 86, 86, 2222, 2221, 2228, 2218, - 2223, 86, 86, 86, 86, 2232, 2229, 2231, 86, 86, + 2183, 86, 86, 86, 86, 86, 2189, 2180, 86, 86, + 2181, 2185, 2187, 2186, 86, 2188, 86, 2190, 2192, 86, + 2191, 86, 2194, 2195, 86, 86, 2200, 86, 2193, 2198, + 86, 2196, 86, 2201, 86, 86, 86, 2197, 2199, 2206, + 86, 86, 2208, 86, 86, 86, 2209, 86, 2202, 2205, + 2203, 2204, 2210, 86, 86, 2211, 86, 2207, 2212, 86, + 86, 2213, 2215, 2216, 86, 86, 2214, 86, 2220, 86, + 86, 2217, 86, 86, 86, 86, 2218, 86, 86, 2221, + 86, 86, 86, 86, 86, 2219, 2223, 2224, 2225, 2226, + 2229, 2234, 86, 2222, 86, 2228, 86, 86, 86, 86, - 2226, 86, 86, 2227, 2230, 2235, 2234, 86, 2236, 86, - 86, 86, 2233, 2240, 86, 86, 2238, 2242, 2245, 86, - 2237, 2239, 86, 86, 2243, 86, 86, 86, 2244, 2241, - 2247, 86, 2249, 2248, 86, 86, 2253, 86, 86, 2250, - 86, 2246, 86, 2254, 2251, 86, 86, 86, 2257, 86, - 2255, 86, 2256, 2258, 86, 2252, 86, 2259, 2262, 86, - 2261, 86, 2263, 2266, 2260, 86, 2264, 2265, 86, 86, - 2267, 86, 86, 2268, 2269, 86, 2270, 2272, 86, 86, - 2274, 86, 2275, 86, 2271, 86, 86, 2273, 86, 86, - 2277, 2281, 2276, 2282, 86, 3419, 2283, 2279, 86, 86, + 2431, 2231, 2237, 2230, 2227, 2232, 2233, 86, 86, 86, + 86, 2241, 2238, 2240, 2235, 86, 86, 2236, 2239, 86, + 2243, 86, 86, 2244, 86, 86, 86, 2249, 2242, 2251, + 2245, 2247, 86, 86, 2252, 86, 2248, 2246, 2254, 86, + 86, 86, 86, 86, 2257, 2250, 2256, 2253, 2258, 86, + 86, 86, 2262, 86, 2259, 86, 86, 2266, 86, 86, + 2263, 86, 2267, 86, 86, 2265, 2255, 2268, 2260, 2264, + 86, 2261, 2271, 86, 86, 2272, 86, 2275, 2270, 86, + 2269, 86, 86, 86, 2276, 2273, 86, 3438, 2277, 86, + 2279, 2281, 86, 86, 2283, 86, 2274, 86, 2280, 2278, - 2280, 2284, 86, 86, 2278, 86, 2285, 2286, 86, 86, - 2289, 2287, 86, 2290, 86, 2288, 2294, 86, 86, 86, - 86, 86, 2291, 2293, 86, 86, 86, 86, 86, 3419, - 2300, 86, 2292, 2301, 2298, 86, 2295, 2296, 86, 2302, - 2297, 2299, 86, 2304, 2306, 86, 86, 2305, 2303, 86, - 86, 2307, 2309, 86, 2310, 2315, 86, 86, 86, 86, - 2317, 86, 86, 86, 2308, 2311, 2314, 2312, 2316, 86, - 86, 170, 86, 2319, 2323, 2320, 2321, 2318, 2313, 2325, - 86, 2322, 2327, 2328, 2326, 86, 86, 86, 86, 86, - 2329, 86, 2331, 2324, 2330, 2332, 86, 86, 2333, 86, + 86, 2282, 86, 2284, 2285, 2286, 86, 86, 2290, 86, + 86, 86, 2292, 86, 86, 2287, 2288, 2293, 86, 2289, + 2295, 86, 2294, 86, 86, 2296, 2297, 86, 2298, 2299, + 2291, 86, 2303, 86, 2300, 86, 86, 86, 86, 86, + 2302, 86, 86, 86, 86, 86, 86, 2301, 2310, 86, + 86, 2316, 2308, 2304, 2305, 2306, 2309, 2311, 2312, 86, + 86, 86, 2307, 86, 2313, 2314, 2315, 86, 2322, 2317, + 86, 86, 2320, 2319, 2321, 2325, 86, 86, 2327, 86, + 2324, 86, 2318, 86, 86, 86, 2326, 2329, 86, 2330, + 2333, 170, 86, 2337, 86, 2323, 86, 2335, 2331, 86, - 2336, 2337, 86, 86, 2338, 86, 86, 2341, 86, 2343, - 2342, 2339, 2334, 86, 2344, 86, 86, 86, 86, 2346, - 86, 2345, 2347, 2335, 2340, 86, 86, 86, 86, 86, - 2349, 86, 86, 2352, 86, 86, 86, 2348, 86, 2355, - 2350, 86, 86, 2359, 2354, 2361, 86, 86, 86, 86, - 2356, 2357, 2351, 2362, 2353, 86, 2358, 2363, 86, 86, - 2364, 86, 86, 2360, 86, 86, 2366, 2369, 2372, 86, - 2367, 86, 86, 2365, 2370, 86, 86, 86, 2368, 2373, - 86, 86, 2371, 86, 2374, 3419, 86, 86, 86, 86, - 86, 2375, 2386, 2380, 2385, 86, 2378, 86, 2376, 2383, + 2328, 86, 2336, 86, 2338, 86, 2349, 2332, 2339, 2340, + 86, 86, 2341, 2334, 2342, 86, 86, 2343, 2347, 86, + 2346, 86, 2348, 86, 2351, 86, 2353, 86, 2354, 86, + 86, 2344, 2352, 86, 2356, 86, 86, 86, 2355, 2357, + 86, 2350, 2345, 86, 86, 86, 86, 2359, 86, 86, + 2362, 86, 86, 86, 2365, 86, 2358, 2360, 86, 86, + 2369, 2364, 2371, 86, 86, 86, 86, 2367, 2372, 2361, + 2366, 2363, 86, 2368, 2373, 86, 86, 2374, 86, 86, + 2370, 86, 86, 2379, 2376, 2382, 86, 2377, 86, 86, + 2383, 2375, 2380, 86, 86, 2378, 86, 86, 86, 2381, - 2377, 2379, 2382, 2384, 2381, 2387, 86, 86, 86, 2391, - 2390, 2389, 2388, 86, 86, 2393, 2394, 86, 86, 86, - 2395, 2396, 86, 86, 86, 2399, 2392, 86, 86, 2402, - 86, 2403, 86, 86, 2397, 86, 2398, 2400, 2404, 86, - 2401, 86, 2409, 86, 2405, 2410, 86, 2406, 86, 2412, - 86, 86, 86, 2408, 86, 2407, 2414, 86, 86, 2416, - 2417, 86, 2418, 86, 86, 86, 2419, 2411, 86, 2413, - 86, 86, 86, 2415, 2420, 86, 2424, 2425, 86, 2427, - 86, 2421, 2422, 86, 86, 86, 2430, 86, 2431, 2423, - 2429, 2426, 86, 2428, 2433, 86, 86, 86, 2436, 86, + 86, 86, 86, 86, 86, 2396, 86, 2384, 2385, 2390, + 2395, 2397, 86, 86, 2393, 2388, 2386, 2392, 2387, 2389, + 2394, 2391, 86, 86, 86, 86, 2399, 2398, 86, 86, + 2403, 2404, 86, 86, 86, 2405, 2451, 2400, 86, 2401, + 86, 2402, 2406, 86, 86, 2409, 86, 2412, 86, 2407, + 86, 2408, 2413, 86, 86, 2410, 86, 86, 2411, 2414, + 2416, 2415, 2419, 86, 2420, 86, 86, 2422, 86, 2418, + 2417, 86, 2424, 86, 86, 86, 2427, 86, 86, 2426, + 2428, 86, 86, 86, 86, 2421, 2435, 86, 86, 2423, + 2425, 2430, 2429, 2434, 86, 2437, 86, 2432, 86, 86, - 2439, 86, 86, 2432, 2434, 86, 86, 2435, 86, 86, - 2444, 86, 2437, 2443, 86, 86, 86, 86, 2438, 2446, - 86, 2442, 2440, 2449, 86, 86, 86, 2445, 2441, 86, - 2447, 2448, 2451, 86, 2452, 86, 2456, 2450, 86, 86, - 2458, 86, 86, 2462, 2453, 2459, 86, 2454, 2457, 86, - 86, 2464, 86, 2463, 86, 2465, 86, 86, 86, 2455, - 2460, 2469, 2461, 86, 86, 86, 2474, 2467, 2471, 2472, - 86, 86, 86, 2477, 86, 86, 86, 2466, 2468, 86, - 2473, 2478, 86, 86, 2470, 86, 2476, 2479, 2481, 86, - 86, 2475, 2482, 86, 2483, 86, 86, 2487, 170, 2480, + 86, 86, 86, 2433, 2440, 2439, 86, 2441, 2443, 86, + 86, 86, 2446, 2436, 86, 86, 2438, 2445, 86, 2444, + 2449, 86, 2442, 86, 86, 86, 2447, 86, 2453, 2454, + 86, 86, 2456, 2448, 86, 2450, 86, 2455, 2452, 86, + 2457, 2459, 86, 2461, 86, 86, 2458, 86, 86, 2466, + 86, 86, 86, 2462, 2460, 86, 2474, 2468, 86, 2467, + 2472, 2469, 2463, 2464, 2473, 86, 86, 86, 86, 86, + 2475, 86, 86, 2465, 86, 86, 2470, 2479, 2471, 2481, + 2482, 2477, 2484, 86, 86, 2485, 86, 2488, 86, 86, + 2478, 86, 2476, 86, 2489, 86, 86, 2480, 2483, 86, - 2488, 2489, 2484, 2499, 2485, 2486, 86, 86, 86, 86, - 2491, 2494, 2490, 86, 2493, 86, 2495, 86, 2492, 86, - 86, 2498, 86, 86, 2496, 86, 2504, 86, 2497, 86, - 86, 86, 86, 86, 86, 86, 2511, 86, 2506, 2502, - 86, 2503, 2500, 2507, 2501, 2505, 86, 2510, 2508, 2509, - 3419, 2512, 2514, 2515, 86, 86, 2516, 2513, 2517, 86, - 86, 86, 2520, 2518, 2521, 86, 2519, 86, 86, 86, - 86, 2523, 86, 86, 2522, 86, 2525, 86, 86, 2529, - 2530, 2524, 86, 2527, 86, 2526, 86, 2532, 86, 86, - 86, 86, 2533, 2534, 2535, 86, 2528, 86, 2531, 86, + 2490, 2487, 86, 86, 86, 2486, 2493, 86, 86, 86, + 86, 2494, 2492, 2495, 2499, 86, 2496, 2497, 2500, 2501, + 86, 2491, 86, 2498, 86, 86, 2504, 2505, 86, 2506, + 2502, 2503, 86, 86, 86, 2509, 86, 2507, 170, 86, + 86, 2508, 86, 2510, 86, 2515, 86, 86, 86, 2517, + 86, 86, 86, 2526, 86, 2513, 2511, 2516, 2512, 2518, + 2514, 86, 86, 2521, 2519, 2520, 86, 2523, 3438, 2522, + 86, 2527, 2524, 2525, 2528, 86, 86, 86, 2531, 2529, + 2532, 86, 2530, 86, 86, 86, 86, 2534, 86, 86, + 2533, 86, 2536, 86, 86, 2540, 2541, 2535, 86, 2538, - 2537, 86, 2536, 2541, 86, 2540, 86, 86, 2538, 2539, - 86, 86, 2543, 86, 86, 86, 86, 2550, 2547, 2542, - 86, 2549, 86, 86, 86, 86, 2551, 2546, 86, 86, - 2544, 2545, 86, 2555, 86, 2548, 86, 86, 2565, 2560, - 2552, 2559, 86, 2553, 2554, 86, 2557, 86, 2558, 86, - 2556, 2562, 86, 86, 86, 2561, 2564, 2566, 86, 2568, - 86, 2563, 2570, 86, 2569, 2572, 86, 86, 86, 2574, - 86, 86, 86, 86, 86, 2571, 2573, 86, 2578, 2567, - 86, 86, 86, 86, 2583, 86, 2576, 2581, 2582, 2575, - 2577, 2584, 86, 2585, 86, 2586, 86, 2587, 86, 86, + 86, 2537, 86, 2543, 86, 86, 86, 86, 2544, 2545, + 2546, 86, 2539, 86, 2542, 86, 2548, 86, 2547, 2552, + 86, 2551, 86, 86, 2549, 2550, 86, 86, 2554, 86, + 86, 86, 86, 2561, 2558, 2553, 86, 2560, 86, 86, + 86, 86, 2562, 2557, 86, 86, 2555, 2556, 86, 2566, + 86, 2559, 86, 86, 2576, 2571, 2563, 2570, 86, 2564, + 2565, 86, 2568, 86, 2569, 86, 2567, 2573, 86, 86, + 86, 2572, 2575, 2577, 86, 2579, 86, 2574, 2581, 86, + 2580, 2583, 86, 86, 86, 2585, 86, 86, 86, 86, + 86, 2582, 2584, 86, 2589, 2578, 86, 86, 86, 86, - 86, 2580, 86, 2579, 86, 2589, 86, 2591, 86, 2594, - 86, 86, 86, 2596, 2592, 2595, 86, 2590, 2588, 86, - 2593, 2599, 86, 86, 86, 86, 2600, 2598, 86, 2597, - 86, 2603, 2604, 86, 86, 2601, 86, 2607, 86, 2605, - 2609, 2608, 2602, 2606, 86, 86, 86, 86, 86, 86, - 86, 2613, 2617, 86, 86, 2616, 2618, 86, 2610, 2611, - 2612, 2619, 86, 2620, 86, 86, 2621, 2614, 86, 2615, - 86, 2624, 86, 2623, 86, 2625, 86, 86, 86, 86, - 2631, 86, 86, 2622, 2626, 2633, 86, 86, 2627, 2634, - 86, 86, 86, 86, 86, 2630, 86, 2628, 2635, 2629, + 2594, 86, 2587, 2592, 2593, 2586, 2588, 2595, 86, 2596, + 86, 2597, 86, 2598, 86, 86, 86, 2591, 86, 2590, + 86, 2600, 86, 2602, 86, 2605, 86, 86, 86, 2607, + 2603, 2606, 86, 2601, 2599, 86, 2604, 2610, 86, 86, + 86, 86, 2611, 2609, 86, 2608, 86, 2614, 2615, 86, + 86, 2612, 86, 2618, 86, 2616, 2620, 2619, 2613, 2617, + 86, 86, 86, 86, 86, 86, 86, 2624, 2628, 86, + 86, 2627, 2629, 86, 2621, 2622, 2623, 2630, 86, 2631, + 86, 86, 2632, 2625, 86, 2626, 86, 2635, 86, 2634, + 86, 2636, 86, 86, 86, 86, 86, 86, 86, 2633, - 2637, 2632, 86, 2636, 2638, 86, 86, 2640, 2643, 86, - 86, 86, 86, 86, 2639, 2644, 2641, 86, 86, 86, - 86, 2651, 86, 170, 86, 2642, 2647, 86, 2653, 2654, - 86, 2646, 2649, 86, 2650, 2652, 2645, 2655, 86, 2656, - 86, 2648, 86, 2660, 86, 86, 2664, 86, 2657, 2662, - 2663, 2665, 86, 86, 2666, 2658, 2661, 86, 2667, 86, - 2668, 2659, 86, 86, 86, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 2670, 2679, 86, 86, 2677, 86, - 2669, 2672, 86, 2671, 3419, 2673, 2674, 86, 2683, 2675, - 2676, 2678, 2680, 2685, 2681, 2682, 2684, 86, 86, 2688, + 2637, 2643, 86, 2645, 86, 2639, 2646, 86, 86, 2647, + 86, 86, 2638, 2642, 2640, 2644, 2641, 2649, 86, 86, + 2648, 86, 86, 2650, 2652, 2655, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 2663, 2656, 86, 2651, 170, + 86, 2653, 2654, 2659, 86, 2665, 2661, 86, 86, 2658, + 86, 2664, 2667, 86, 2657, 2660, 2662, 2666, 2669, 86, + 86, 86, 2668, 2672, 86, 86, 2674, 2676, 86, 2675, + 2677, 86, 2670, 2673, 86, 2678, 2671, 86, 2679, 86, + 2680, 86, 86, 2681, 86, 86, 86, 86, 86, 86, + 86, 86, 2682, 2691, 86, 86, 86, 86, 2689, 2684, - 86, 86, 2690, 86, 2686, 86, 86, 2687, 86, 86, - 2689, 86, 86, 86, 86, 2693, 2699, 86, 2700, 86, - 86, 86, 86, 2691, 2692, 86, 2694, 2695, 2703, 2697, - 2696, 2704, 86, 2698, 2705, 86, 2706, 86, 86, 2702, - 2701, 86, 86, 2707, 86, 86, 86, 3419, 86, 2711, - 2716, 86, 2708, 2714, 86, 2710, 2715, 2709, 86, 86, - 2717, 2718, 86, 86, 86, 2712, 2713, 86, 86, 86, - 86, 86, 2720, 86, 2724, 2725, 86, 86, 2719, 2722, - 2729, 2730, 86, 2721, 86, 86, 2733, 86, 2723, 86, - 86, 2726, 2727, 86, 86, 86, 2728, 2736, 86, 2731, + 3438, 2683, 86, 2695, 2686, 2685, 2696, 86, 2688, 2687, + 2690, 86, 86, 2693, 2692, 2694, 2700, 86, 2698, 86, + 86, 2699, 2702, 86, 86, 2697, 86, 86, 2701, 86, + 86, 86, 86, 2705, 2711, 86, 2712, 86, 2703, 86, + 86, 86, 2704, 86, 2706, 2707, 86, 2709, 2708, 2715, + 2718, 2710, 2716, 86, 2717, 86, 86, 86, 2714, 2713, + 2721, 86, 86, 86, 2719, 86, 86, 2723, 86, 86, + 2727, 2726, 2720, 2728, 86, 2722, 86, 86, 2729, 2730, + 86, 86, 86, 2724, 86, 2725, 2732, 86, 2731, 86, + 86, 86, 2736, 86, 2734, 2737, 86, 2742, 86, 2741, - 2734, 86, 2738, 2732, 86, 2735, 2739, 86, 2740, 2737, - 86, 2744, 86, 86, 86, 86, 2741, 2748, 86, 2747, - 86, 2750, 86, 2746, 2742, 2745, 86, 86, 86, 86, - 2743, 2751, 86, 2756, 86, 86, 2752, 86, 2757, 2749, - 86, 2754, 2759, 86, 2753, 86, 86, 86, 2764, 86, - 86, 86, 2755, 2760, 3419, 2762, 2763, 2758, 2761, 2767, - 86, 86, 86, 86, 86, 86, 2766, 2768, 2769, 2771, - 2765, 86, 86, 2772, 86, 2770, 86, 86, 86, 86, - 86, 2774, 2775, 2777, 2778, 2780, 86, 2781, 86, 86, - 2773, 2776, 2779, 86, 2782, 2784, 170, 86, 86, 2783, + 2733, 86, 86, 86, 2735, 2745, 86, 86, 86, 2738, + 2739, 86, 2748, 2740, 2746, 86, 2743, 2751, 86, 2750, + 2744, 86, 2747, 86, 86, 86, 2749, 2756, 86, 86, + 86, 86, 2760, 86, 2752, 2759, 86, 86, 2753, 2758, + 86, 2757, 2762, 86, 2754, 2755, 86, 86, 86, 2764, + 86, 2763, 86, 2765, 86, 2761, 2768, 86, 3438, 2766, + 86, 2769, 2771, 86, 86, 2772, 86, 2773, 2767, 86, + 2777, 86, 2770, 2774, 86, 2775, 86, 86, 2776, 2780, + 86, 86, 2781, 86, 86, 86, 2782, 86, 86, 2784, + 86, 2779, 86, 2785, 2778, 86, 2788, 2783, 86, 2787, - 2785, 86, 2786, 2789, 3419, 86, 86, 2791, 86, 86, - 2790, 86, 86, 2794, 86, 86, 2787, 2793, 2798, 2788, - 2795, 86, 2799, 2792, 2796, 2797, 86, 2800, 86, 86, - 86, 86, 2804, 86, 2801, 2802, 86, 2805, 86, 86, - 86, 2806, 86, 86, 86, 2803, 2811, 2812, 2807, 2813, - 2809, 86, 86, 86, 86, 2808, 86, 86, 86, 2817, - 86, 2815, 2816, 2814, 2810, 2819, 86, 86, 86, 86, - 2818, 2820, 86, 86, 86, 2825, 86, 86, 2823, 86, - 3419, 2822, 2824, 2828, 86, 2821, 2826, 86, 86, 86, - 2827, 2833, 86, 2829, 86, 2830, 86, 86, 86, 2831, + 2790, 86, 86, 2791, 2793, 86, 2786, 2789, 2794, 86, + 86, 2797, 170, 86, 86, 2795, 2792, 86, 86, 2799, + 2798, 2796, 2802, 86, 86, 86, 2804, 86, 86, 2803, + 2807, 86, 2806, 2808, 86, 2800, 2801, 86, 2805, 2810, + 86, 86, 2812, 86, 2811, 86, 86, 2813, 86, 86, + 2809, 2814, 2817, 86, 2815, 86, 86, 2816, 86, 2818, + 2821, 2819, 2820, 86, 86, 86, 2824, 2825, 86, 86, + 2826, 2822, 86, 86, 86, 86, 2828, 86, 2830, 2829, + 2827, 86, 86, 86, 86, 2823, 2832, 2833, 86, 2831, + 86, 86, 86, 2838, 86, 86, 2841, 2835, 86, 2836, - 86, 2834, 86, 2832, 86, 2836, 86, 2835, 2838, 86, - 2842, 3419, 2837, 2843, 86, 2840, 86, 2839, 2845, 2846, - 2848, 3419, 2841, 86, 86, 86, 86, 2849, 86, 2844, - 86, 2850, 86, 86, 2847, 2851, 2854, 86, 86, 86, - 2855, 2852, 86, 2856, 86, 86, 2853, 86, 2859, 2861, - 86, 86, 2857, 2862, 86, 2863, 86, 86, 86, 2858, - 86, 2864, 86, 2860, 86, 2865, 2866, 86, 2870, 2868, - 2869, 2867, 86, 2871, 86, 86, 2874, 2875, 86, 2876, - 86, 86, 2873, 86, 2872, 86, 2877, 2879, 86, 86, - 2882, 86, 86, 2883, 2878, 2884, 86, 86, 2886, 86, + 2837, 2834, 86, 2839, 2842, 86, 2840, 86, 2846, 86, + 86, 86, 86, 86, 2843, 2851, 86, 2847, 86, 86, + 86, 2849, 86, 86, 86, 2844, 2845, 2855, 2850, 2858, + 2848, 2856, 86, 2859, 2853, 86, 3438, 2852, 2861, 86, + 2854, 86, 2860, 86, 86, 2862, 86, 2857, 2864, 2863, + 86, 86, 2867, 86, 86, 86, 2868, 86, 86, 2865, + 86, 2869, 86, 2872, 2866, 2874, 86, 86, 2870, 3438, + 2871, 2875, 86, 2876, 86, 86, 86, 86, 2873, 2877, + 86, 2878, 2879, 86, 86, 2881, 2883, 2880, 86, 2882, + 86, 2884, 86, 86, 2887, 86, 2885, 2888, 86, 2889, - 86, 86, 86, 2880, 2890, 2891, 86, 86, 2893, 2881, - 86, 2892, 2885, 2887, 86, 86, 2889, 2895, 86, 2888, - 2894, 86, 2896, 86, 86, 86, 2901, 2900, 86, 86, - 2904, 86, 86, 2903, 86, 86, 86, 86, 86, 2905, - 2907, 2897, 86, 2906, 2898, 2899, 86, 86, 2910, 2909, - 86, 86, 86, 2902, 86, 2911, 2912, 2913, 2917, 86, - 2914, 2908, 86, 86, 86, 2916, 2919, 86, 2918, 86, - 2915, 86, 2924, 3419, 2920, 2923, 2921, 2925, 86, 2926, - 2929, 86, 86, 2922, 2927, 86, 86, 2930, 2928, 86, - 2931, 86, 2932, 86, 2933, 86, 86, 2937, 2934, 86, + 86, 86, 86, 2891, 2890, 2893, 86, 86, 2886, 2896, + 86, 86, 2897, 2894, 86, 2892, 2898, 86, 2900, 86, + 86, 86, 86, 86, 2904, 2905, 86, 2895, 86, 2899, + 86, 2907, 2906, 2901, 86, 86, 2903, 86, 2909, 2902, + 2908, 86, 86, 2910, 86, 2915, 2911, 86, 2914, 86, + 86, 86, 86, 2917, 2912, 2918, 86, 2919, 2920, 86, + 86, 2913, 2921, 86, 86, 2924, 2923, 86, 86, 86, + 86, 86, 2916, 2927, 2931, 86, 86, 86, 2938, 86, + 86, 2930, 86, 2939, 86, 2922, 2925, 2926, 2928, 86, + 2932, 2929, 2933, 2935, 86, 86, 2936, 2977, 2940, 2942, - 2935, 86, 86, 86, 2938, 86, 86, 2940, 2944, 86, - 2945, 86, 2941, 86, 86, 86, 2936, 2946, 2948, 86, - 2939, 86, 2949, 2950, 86, 2942, 2943, 86, 2952, 86, - 2953, 2947, 2951, 86, 86, 86, 86, 2958, 86, 86, - 86, 86, 2954, 2955, 2956, 2959, 86, 86, 2960, 86, - 2964, 86, 2970, 86, 2957, 2965, 86, 2962, 2967, 2961, - 86, 86, 2963, 86, 2966, 2968, 2971, 86, 2969, 86, - 86, 2975, 86, 86, 2972, 86, 86, 86, 86, 2981, - 86, 86, 2976, 3419, 86, 86, 2979, 2977, 2974, 2984, - 86, 86, 2982, 86, 2973, 2985, 86, 2986, 2980, 86, + 2934, 86, 2937, 2941, 86, 2943, 86, 86, 2944, 86, + 2945, 86, 2946, 86, 2947, 86, 86, 2948, 86, 86, + 2949, 2951, 86, 2952, 86, 86, 86, 2954, 2958, 86, + 2959, 86, 86, 2955, 86, 2960, 2950, 86, 2953, 2962, + 86, 2964, 86, 86, 2963, 2956, 2957, 86, 2965, 2966, + 86, 86, 2961, 86, 86, 86, 2967, 2972, 86, 86, + 2968, 86, 2969, 2970, 86, 2973, 86, 86, 2974, 2978, + 86, 86, 86, 2971, 2979, 86, 2982, 2976, 86, 2981, + 2980, 86, 86, 2975, 2984, 86, 2983, 2985, 86, 2989, + 86, 86, 2986, 86, 86, 86, 2987, 86, 86, 86, - 2987, 2978, 2983, 86, 2988, 86, 2989, 86, 2991, 2993, - 86, 2992, 2994, 86, 2995, 86, 86, 2990, 86, 3003, - 86, 86, 3000, 86, 2998, 2996, 2999, 86, 86, 86, - 86, 86, 3001, 86, 3002, 86, 86, 3009, 2997, 86, - 3007, 3004, 3005, 86, 3011, 86, 86, 86, 86, 86, - 3012, 3008, 3006, 3013, 3014, 86, 3015, 86, 3016, 86, - 86, 3010, 3017, 3020, 86, 86, 86, 86, 86, 86, - 3023, 86, 3018, 3021, 86, 86, 3024, 86, 3022, 3019, - 3028, 86, 3027, 86, 3025, 86, 3029, 86, 3026, 3031, - 3030, 3033, 86, 3035, 86, 3036, 86, 3038, 86, 86, + 2988, 2996, 2990, 2991, 2993, 86, 2994, 86, 86, 86, + 2997, 86, 3001, 2999, 3000, 2995, 86, 86, 86, 2992, + 86, 86, 3003, 86, 3006, 3002, 2998, 3007, 3008, 86, + 3011, 3004, 3009, 86, 3005, 3010, 86, 86, 86, 86, + 3015, 86, 86, 3014, 86, 86, 86, 3016, 86, 3017, + 3018, 86, 86, 86, 3026, 86, 86, 3012, 3013, 3019, + 3020, 3022, 3024, 86, 86, 86, 3021, 3027, 86, 3028, + 3023, 86, 86, 3030, 86, 86, 3029, 86, 3025, 3035, + 86, 86, 86, 86, 3031, 86, 86, 3038, 86, 3032, + 3033, 86, 86, 86, 3036, 3037, 3042, 3034, 3043, 86, - 86, 86, 3034, 3032, 86, 86, 3041, 86, 3037, 86, - 3043, 3044, 86, 3047, 86, 3039, 3040, 86, 3046, 86, - 3042, 86, 3050, 86, 86, 3053, 86, 3045, 86, 3055, - 86, 3058, 86, 86, 86, 86, 3049, 3048, 3051, 3056, - 3059, 86, 3052, 3061, 86, 86, 86, 86, 3054, 86, - 86, 3066, 3057, 3060, 86, 3064, 3063, 86, 3070, 86, - 86, 86, 3068, 3062, 3072, 86, 86, 3065, 3067, 3073, - 86, 3074, 86, 3077, 3069, 3071, 86, 3075, 3080, 86, - 3078, 86, 86, 86, 86, 3079, 3083, 86, 3082, 86, - 86, 3086, 3076, 86, 3081, 3084, 86, 86, 3089, 86, + 3039, 3040, 86, 3044, 86, 3041, 3048, 86, 3045, 86, + 3046, 3050, 86, 3051, 86, 86, 3053, 86, 86, 86, + 86, 86, 86, 3059, 86, 3056, 86, 3058, 3049, 86, + 3047, 86, 86, 3062, 3054, 3055, 3052, 3057, 3061, 86, + 86, 3065, 86, 86, 3068, 86, 3060, 86, 86, 3070, + 86, 3064, 86, 3071, 3063, 86, 3066, 3073, 86, 3074, + 86, 86, 3067, 86, 3077, 86, 86, 3069, 86, 86, + 86, 3083, 3072, 3082, 86, 86, 3075, 3079, 3080, 86, + 3086, 86, 3084, 3076, 3078, 86, 86, 86, 3081, 3088, + 3087, 86, 86, 3438, 3085, 3089, 86, 3090, 3093, 3091, - 86, 86, 86, 3094, 86, 86, 86, 86, 3085, 3419, - 3087, 3088, 3090, 86, 3091, 3093, 3097, 3098, 86, 3099, - 86, 86, 3096, 86, 3095, 86, 3092, 3101, 3100, 86, - 3102, 3103, 86, 3104, 86, 3105, 86, 3108, 86, 86, - 3110, 86, 3106, 86, 3109, 86, 86, 3107, 86, 86, - 86, 86, 3116, 3117, 86, 86, 86, 3111, 86, 3123, - 86, 86, 86, 3124, 86, 86, 86, 3112, 3113, 3114, - 3115, 3122, 3120, 3125, 3119, 3118, 3121, 86, 86, 86, - 3132, 3126, 3128, 3131, 3127, 3129, 86, 3130, 86, 3133, - 86, 86, 3136, 86, 86, 86, 86, 86, 3138, 3135, + 3094, 86, 3096, 86, 86, 3092, 3095, 86, 86, 3097, + 3099, 86, 3098, 86, 86, 3102, 86, 86, 3100, 3105, + 86, 86, 86, 86, 86, 3110, 86, 86, 3106, 86, + 86, 3114, 86, 3101, 3103, 3104, 86, 3109, 86, 3113, + 3107, 3115, 86, 3116, 86, 3112, 3111, 86, 3108, 3118, + 3117, 3119, 86, 3120, 86, 3121, 86, 86, 3124, 86, + 3122, 86, 3126, 86, 86, 86, 3125, 86, 86, 86, + 86, 3132, 3133, 86, 86, 86, 86, 86, 3127, 3139, + 86, 3140, 86, 3123, 86, 86, 3141, 3128, 3130, 3129, + 3131, 3136, 86, 3138, 3135, 86, 3137, 86, 86, 86, - 86, 3137, 3134, 86, 86, 3139, 86, 86, 86, 3142, - 86, 86, 86, 3144, 86, 86, 3145, 3140, 3143, 86, - 86, 86, 86, 3141, 86, 86, 3154, 3155, 3157, 3146, - 3150, 3147, 3148, 3149, 86, 86, 3151, 3152, 86, 86, - 3158, 3153, 3160, 86, 3156, 3159, 3162, 86, 3163, 86, - 86, 3161, 3165, 86, 3164, 86, 3168, 86, 3169, 86, - 3166, 86, 3167, 3170, 3171, 3177, 86, 3172, 3173, 86, - 86, 3174, 86, 3175, 3176, 86, 86, 86, 3179, 86, - 3178, 3180, 86, 86, 86, 86, 3186, 86, 86, 86, - 3185, 86, 86, 3182, 86, 3181, 3188, 86, 3189, 86, + 3134, 86, 3144, 3146, 86, 3142, 3147, 86, 86, 86, + 3150, 3151, 86, 3148, 3143, 3149, 86, 3152, 86, 3145, + 3153, 86, 86, 3154, 86, 86, 3155, 86, 86, 3156, + 86, 86, 3157, 3159, 86, 86, 3161, 86, 86, 3160, + 86, 3438, 3162, 86, 86, 3158, 86, 86, 86, 86, + 3163, 86, 3171, 3172, 3175, 3164, 3166, 3165, 3174, 3167, + 3173, 3168, 3169, 86, 86, 86, 3177, 3170, 3179, 86, + 86, 3176, 3180, 86, 3181, 3182, 86, 86, 3178, 86, + 3185, 86, 3183, 3186, 86, 3187, 3188, 86, 86, 3189, + 3190, 3194, 86, 3191, 86, 86, 3192, 3193, 3184, 86, - 3190, 86, 86, 3183, 3184, 86, 3193, 3191, 3194, 86, - 3200, 3195, 86, 3187, 3199, 3192, 86, 3196, 3197, 86, - 3198, 86, 86, 3203, 3205, 86, 86, 86, 3204, 86, - 86, 3201, 3209, 86, 3202, 86, 86, 3206, 3210, 3213, - 3207, 3212, 86, 86, 86, 86, 3419, 3208, 3234, 3214, - 3215, 86, 3216, 86, 3211, 86, 3219, 86, 86, 3217, - 3218, 3220, 86, 3222, 86, 3223, 86, 3221, 3224, 86, - 3225, 86, 3226, 86, 3227, 86, 3228, 86, 3229, 86, - 86, 86, 3232, 86, 86, 86, 3237, 86, 86, 86, - 3231, 86, 86, 3233, 86, 86, 86, 3241, 3242, 86, + 3195, 86, 3197, 86, 86, 86, 86, 86, 86, 86, + 3196, 3203, 86, 3202, 86, 86, 86, 86, 86, 3199, + 86, 3207, 3198, 3206, 3208, 86, 3200, 3201, 86, 3204, + 3211, 3212, 86, 3209, 86, 3214, 86, 3213, 3210, 3205, + 3215, 86, 3216, 86, 86, 86, 86, 3221, 86, 3218, + 3223, 3217, 3222, 86, 3219, 86, 86, 3220, 86, 86, + 86, 3230, 86, 3225, 3227, 3228, 3231, 86, 3233, 86, + 86, 3224, 86, 3232, 3234, 86, 3226, 3229, 86, 3237, + 86, 3238, 86, 3236, 86, 3235, 3240, 86, 3241, 86, + 3242, 86, 86, 3239, 3243, 86, 3244, 86, 3245, 86, - 3244, 86, 86, 3240, 3238, 3235, 3230, 3236, 3239, 3243, - 3245, 86, 86, 3248, 3246, 86, 86, 3251, 86, 3250, - 86, 86, 86, 86, 86, 3253, 86, 86, 3247, 86, - 3259, 86, 3252, 3249, 86, 3257, 3258, 86, 3256, 86, - 3254, 86, 3255, 86, 3262, 86, 3260, 3270, 3263, 86, - 3264, 3265, 86, 3266, 86, 3267, 86, 86, 3269, 86, - 3261, 86, 86, 86, 3268, 86, 86, 3275, 3276, 86, - 3278, 86, 86, 3272, 3274, 86, 86, 3271, 86, 86, - 3277, 86, 86, 86, 3273, 3279, 3287, 86, 3290, 86, - 3280, 3285, 3282, 3281, 3284, 3286, 86, 86, 86, 86, + 3246, 86, 3247, 86, 86, 3250, 86, 86, 86, 86, + 3254, 86, 86, 3249, 3256, 86, 3251, 86, 3248, 86, + 3252, 86, 86, 86, 86, 3260, 3261, 86, 86, 3253, + 86, 3255, 3257, 3265, 3258, 3259, 86, 3262, 3263, 86, + 86, 3267, 3270, 86, 86, 3266, 3264, 3269, 86, 86, + 86, 86, 86, 86, 3268, 3272, 86, 3271, 3276, 86, + 86, 86, 3277, 3278, 86, 86, 86, 3282, 3273, 3274, + 3281, 86, 3275, 3284, 86, 3279, 3285, 86, 86, 3283, + 3286, 86, 86, 86, 86, 86, 86, 3280, 3289, 86, + 86, 3288, 86, 86, 3287, 3294, 86, 3291, 3290, 86, - 86, 3289, 86, 3283, 3292, 3295, 86, 86, 3288, 3297, - 86, 3296, 3293, 86, 3298, 3299, 86, 3291, 3300, 86, - 3294, 86, 86, 86, 86, 3303, 3301, 86, 3304, 3305, - 86, 3308, 86, 86, 86, 86, 86, 86, 3311, 3312, - 86, 3302, 3314, 86, 86, 3307, 3309, 3310, 3315, 86, - 86, 3316, 3306, 86, 3313, 3318, 86, 3321, 86, 86, - 3322, 86, 86, 3317, 3325, 3319, 3326, 86, 86, 3323, - 86, 3320, 86, 86, 86, 3331, 86, 3332, 86, 3330, - 3328, 3324, 3327, 86, 86, 86, 86, 86, 86, 86, - 3336, 86, 3329, 3338, 86, 86, 86, 86, 3335, 86, + 3293, 3295, 86, 3297, 86, 3299, 3298, 3296, 3292, 86, + 86, 86, 86, 86, 3300, 86, 86, 86, 3306, 86, + 3301, 3304, 3308, 3305, 86, 3303, 3309, 86, 86, 3311, + 3312, 3314, 86, 86, 3302, 86, 3307, 3316, 86, 3310, + 86, 3317, 3315, 3318, 86, 3319, 86, 86, 3313, 86, + 86, 86, 3322, 86, 3320, 3323, 3324, 86, 3327, 86, + 86, 86, 86, 86, 86, 3330, 86, 3321, 3331, 86, + 3333, 86, 3326, 3328, 3329, 3334, 86, 86, 3325, 3337, + 86, 3332, 3336, 86, 3339, 3340, 86, 86, 3341, 86, + 86, 86, 3335, 3344, 3345, 86, 86, 3342, 3338, 86, - 3343, 86, 3345, 86, 3333, 3334, 3344, 3337, 3339, 3340, - 3341, 3346, 86, 3342, 3349, 86, 86, 3347, 3351, 86, - 3352, 3350, 86, 86, 86, 86, 86, 3353, 3354, 3357, - 3355, 3348, 3358, 86, 86, 86, 3360, 86, 86, 3359, - 86, 86, 3361, 86, 86, 3356, 3366, 86, 3363, 86, - 3369, 86, 86, 3370, 86, 86, 86, 86, 86, 3362, - 3373, 86, 3364, 3365, 3368, 3371, 3367, 86, 3372, 86, - 3377, 86, 3378, 86, 3376, 86, 3374, 3375, 86, 3381, - 86, 3383, 86, 3384, 3379, 86, 86, 86, 3388, 86, - 3385, 86, 86, 3386, 3382, 86, 3389, 3390, 86, 3380, + 86, 86, 3350, 86, 86, 3346, 3349, 86, 3347, 3343, + 3351, 86, 86, 86, 86, 3348, 86, 3355, 86, 86, + 86, 3357, 86, 86, 86, 3352, 3354, 3353, 3362, 3363, + 3364, 86, 3359, 3360, 3356, 86, 86, 3358, 86, 3368, + 86, 3361, 86, 3370, 86, 3371, 86, 3369, 86, 86, + 86, 3372, 3376, 3373, 3366, 3365, 86, 3367, 86, 3377, + 86, 3374, 86, 3379, 86, 86, 86, 3378, 86, 3375, + 3380, 86, 86, 3385, 86, 3382, 86, 86, 3388, 86, + 3389, 86, 86, 86, 3381, 86, 86, 3392, 86, 3387, + 3383, 3384, 3390, 3386, 86, 3391, 86, 3396, 86, 3397, + + 86, 3395, 86, 3400, 3393, 3394, 86, 86, 3402, 86, + 3403, 3398, 86, 86, 86, 3407, 86, 3404, 86, 86, + 3405, 3409, 86, 3408, 86, 3401, 3399, 3410, 86, 3411, + 86, 3412, 86, 3406, 86, 3416, 86, 3414, 86, 86, + 86, 86, 86, 86, 3418, 3419, 86, 3422, 86, 3413, + 3423, 86, 3438, 3415, 86, 3426, 86, 3417, 3427, 86, + 3420, 3421, 3424, 3428, 3429, 86, 86, 3425, 3430, 86, + 86, 86, 86, 3431, 86, 3432, 3433, 3436, 86, 3437, + 86, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, + 3438, 3434, 3438, 3435, 47, 47, 47, 47, 47, 47, - 3391, 86, 86, 86, 86, 3392, 3387, 86, 3395, 3393, - 86, 3394, 3397, 86, 86, 3399, 86, 86, 86, 3400, - 86, 3403, 86, 3396, 3404, 86, 3398, 86, 3407, 3408, - 86, 86, 3410, 86, 86, 3401, 3402, 3405, 3409, 3411, - 86, 3406, 86, 86, 86, 86, 3417, 86, 3413, 3412, - 3414, 3418, 86, 3415, 3419, 3419, 3419, 3419, 3419, 3419, - 3419, 3419, 3419, 3416, 47, 47, 47, 47, 47, 47, 47, 52, 52, 52, 52, 52, 52, 52, 57, 57, 57, 57, 57, 57, 57, 63, 63, 63, 63, 63, 63, 63, 68, 68, 68, 68, 68, 68, 68, 74, - 74, 74, 74, 74, 74, 74, 80, 80, 80, 80, - 80, 80, 80, 89, 89, 3419, 89, 89, 89, 89, - 160, 160, 3419, 3419, 3419, 160, 160, 162, 162, 3419, - 3419, 162, 3419, 162, 164, 3419, 3419, 3419, 3419, 3419, - 164, 167, 167, 3419, 3419, 3419, 167, 167, 169, 3419, - 3419, 3419, 3419, 3419, 169, 171, 171, 3419, 171, 171, - 171, 171, 174, 3419, 3419, 3419, 3419, 3419, 174, 177, - 177, 3419, 3419, 3419, 177, 177, 90, 90, 3419, 90, - 90, 90, 90, 17, 3419, 3419, 3419, 3419, 3419, 3419, - 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, + 80, 80, 80, 89, 89, 3438, 89, 89, 89, 89, + 160, 160, 3438, 3438, 3438, 160, 160, 162, 162, 3438, + 3438, 162, 3438, 162, 164, 3438, 3438, 3438, 3438, 3438, + 164, 167, 167, 3438, 3438, 3438, 167, 167, 169, 3438, + 3438, 3438, 3438, 3438, 169, 171, 171, 3438, 171, 171, + 171, 171, 174, 3438, 3438, 3438, 3438, 3438, 174, 177, - 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, - 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, - 3419, 3419, 3419, 3419 + 177, 3438, 3438, 3438, 177, 177, 90, 90, 3438, 90, + 90, 90, 90, 17, 3438, 3438, 3438, 3438, 3438, 3438, + 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, + 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, + 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, + 3438, 3438, 3438, 3438 } ; -static const flex_int16_t yy_chk[6725] = +static const flex_int16_t yy_chk[6755] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2301,18 +2310,18 @@ static const flex_int16_t yy_chk[6725] = 5, 3, 6, 24, 4, 24, 24, 5, 24, 6, 7, 7, 7, 7, 24, 7, 8, 8, 8, 8, 33, 8, 7, 9, 9, 9, 26, 26, 8, 10, - 10, 10, 19, 29, 9, 33, 19, 29, 3427, 35, + 10, 10, 19, 29, 9, 33, 19, 29, 3446, 35, 10, 11, 11, 11, 11, 11, 11, 13, 13, 13, 13, 34, 13, 11, 35, 99, 34, 29, 38, 13, 51, 51, 11, 12, 12, 12, 12, 12, 12, 14, 14, 14, 14, 99, 14, 12, 15, 15, 15, 38, 23, 14, 23, 23, 12, 23, 46, 15, 16, 16, - 16, 23, 23, 25, 27, 27, 25, 25, 2784, 16, + 16, 23, 23, 25, 27, 27, 25, 25, 2797, 16, 25, 46, 27, 30, 30, 25, 27, 56, 40, 27, 56, 73, 31, 31, 25, 28, 67, 67, 30, 32, 28, 31, 40, 32, 28, 73, 32, 28, 92, 28, - 28, 92, 31, 32, 1112, 32, 36, 36, 37, 37, + 28, 92, 31, 32, 1116, 32, 36, 36, 37, 37, 28, 45, 45, 37, 97, 36, 45, 97, 41, 41, 45, 36, 87, 41, 93, 36, 87, 37, 93, 37, @@ -2351,9 +2360,9 @@ static const flex_int16_t yy_chk[6725] = 200, 201, 202, 197, 203, 204, 201, 202, 205, 197, 197, 199, 196, 206, 205, 207, 203, 206, 208, 200, 207, 209, 213, 210, 211, 204, 214, 213, 216, 217, - 554, 214, 218, 216, 208, 209, 211, 205, 210, 211, + 555, 214, 218, 216, 208, 209, 211, 205, 210, 211, 215, 215, 220, 220, 215, 219, 215, 221, 218, 217, - 222, 219, 223, 221, 554, 224, 222, 227, 215, 221, + 222, 219, 223, 221, 555, 224, 222, 227, 215, 221, 215, 224, 225, 227, 228, 229, 230, 231, 225, 228, 230, 229, 223, 231, 232, 234, 233, 225, 235, 236, 237, 232, 233, 238, 235, 239, 237, 240, 234, 241, @@ -2388,651 +2397,654 @@ static const flex_int16_t yy_chk[6725] = 356, 357, 358, 358, 360, 358, 351, 357, 353, 369, 369, 361, 363, 362, 358, 356, 361, 363, 355, 362, 364, 366, 375, 365, 360, 364, 365, 367, 365, 368, - 367, 364, 377, 370, 467, 366, 371, 371, 368, 370, - 372, 373, 375, 367, 373, 372, 367, 377, 367, 376, - 373, 379, 376, 378, 373, 381, 467, 382, 381, 373, + 367, 364, 388, 370, 410, 366, 371, 371, 368, 370, + 372, 377, 375, 367, 376, 372, 367, 376, 367, 373, + 373, 378, 373, 388, 379, 382, 377, 381, 373, 410, - 384, 389, 373, 374, 374, 379, 374, 385, 378, 392, - 376, 382, 386, 388, 381, 384, 385, 386, 386, 374, - 389, 390, 374, 391, 374, 387, 374, 383, 392, 383, - 383, 387, 391, 394, 388, 395, 390, 396, 387, 383, - 398, 383, 383, 383, 393, 398, 383, 397, 399, 400, - 393, 396, 401, 397, 404, 395, 402, 397, 403, 394, - 404, 402, 406, 398, 405, 405, 407, 401, 399, 400, - 408, 409, 410, 403, 411, 412, 414, 409, 407, 415, - 412, 167, 406, 416, 408, 413, 413, 417, 413, 418, - 411, 418, 422, 422, 420, 415, 414, 410, 420, 416, + 381, 167, 373, 384, 385, 376, 378, 373, 379, 382, + 373, 374, 374, 385, 374, 386, 381, 391, 384, 394, + 386, 386, 389, 387, 390, 392, 391, 374, 395, 387, + 374, 166, 374, 399, 374, 383, 387, 383, 383, 390, + 393, 389, 396, 400, 392, 394, 393, 383, 395, 383, + 383, 383, 397, 399, 383, 398, 396, 401, 397, 402, + 398, 403, 397, 400, 402, 404, 405, 405, 406, 407, + 408, 404, 401, 409, 411, 412, 403, 414, 398, 409, + 412, 407, 413, 413, 408, 413, 415, 416, 406, 423, + 411, 417, 418, 419, 418, 419, 419, 414, 422, 422, - 419, 417, 419, 419, 421, 423, 424, 428, 421, 425, - 426, 433, 427, 430, 166, 433, 428, 429, 436, 430, - 419, 424, 429, 421, 423, 425, 427, 428, 426, 428, - 429, 429, 431, 432, 429, 429, 434, 435, 432, 436, - 437, 431, 441, 435, 438, 434, 437, 439, 438, 440, - 439, 442, 442, 443, 440, 444, 444, 446, 445, 447, - 447, 448, 441, 445, 449, 450, 443, 448, 449, 451, - 446, 452, 453, 454, 454, 455, 452, 453, 456, 457, - 450, 458, 454, 459, 460, 465, 459, 455, 461, 460, - 451, 462, 461, 458, 463, 463, 464, 457, 456, 466, + 420, 424, 415, 416, 420, 417, 421, 425, 423, 426, + 421, 428, 427, 419, 433, 430, 424, 432, 433, 431, + 428, 430, 432, 425, 429, 421, 427, 426, 431, 429, + 434, 428, 436, 428, 435, 441, 164, 429, 429, 434, + 435, 429, 429, 437, 438, 443, 440, 439, 438, 437, + 439, 440, 446, 436, 450, 441, 442, 442, 443, 444, + 444, 445, 447, 447, 448, 446, 445, 449, 451, 450, + 448, 449, 452, 453, 454, 454, 455, 452, 453, 456, + 457, 458, 459, 454, 462, 459, 460, 464, 455, 451, + 461, 460, 464, 458, 461, 465, 462, 467, 457, 456, - 466, 464, 471, 462, 469, 469, 465, 472, 473, 474, - 477, 475, 476, 479, 481, 472, 475, 473, 480, 483, - 484, 482, 477, 471, 487, 483, 553, 490, 553, 484, - 474, 479, 476, 479, 481, 482, 480, 485, 487, 486, - 488, 490, 489, 485, 486, 489, 491, 492, 488, 493, - 495, 488, 494, 492, 496, 494, 495, 497, 498, 500, - 499, 491, 497, 500, 502, 501, 503, 504, 496, 493, - 501, 503, 505, 506, 495, 509, 552, 512, 514, 502, - 498, 499, 510, 504, 511, 513, 506, 517, 511, 552, - 513, 505, 507, 507, 514, 509, 512, 510, 507, 515, + 463, 463, 466, 466, 469, 469, 471, 472, 473, 474, + 477, 476, 482, 475, 479, 472, 465, 473, 475, 467, + 480, 481, 477, 483, 484, 487, 482, 471, 162, 483, + 474, 476, 479, 484, 479, 486, 485, 488, 480, 487, + 486, 481, 485, 489, 490, 488, 489, 491, 488, 492, + 493, 494, 496, 495, 494, 492, 497, 498, 490, 495, + 499, 497, 491, 500, 501, 502, 496, 500, 503, 501, + 493, 504, 505, 503, 509, 506, 510, 495, 512, 498, + 502, 499, 512, 513, 511, 514, 518, 504, 506, 515, + 514, 505, 507, 507, 509, 528, 528, 510, 507, 511, - 507, 519, 517, 515, 516, 518, 507, 520, 507, 516, - 518, 507, 507, 516, 522, 521, 520, 519, 507, 523, - 519, 521, 524, 525, 526, 524, 521, 527, 527, 522, - 528, 529, 529, 530, 533, 523, 532, 531, 534, 537, - 535, 536, 538, 541, 526, 535, 525, 164, 530, 531, - 536, 532, 541, 533, 545, 528, 539, 538, 537, 542, - 534, 543, 539, 542, 544, 543, 545, 546, 547, 548, - 544, 549, 550, 551, 556, 556, 555, 551, 162, 557, - 558, 560, 546, 548, 555, 557, 549, 547, 559, 562, - 550, 563, 558, 560, 559, 561, 564, 565, 561, 566, + 507, 518, 513, 516, 517, 515, 507, 516, 507, 517, + 519, 507, 507, 517, 520, 519, 521, 522, 507, 523, + 524, 525, 526, 522, 525, 521, 527, 529, 522, 531, + 520, 530, 530, 520, 523, 532, 524, 534, 533, 535, + 537, 538, 539, 536, 531, 526, 527, 532, 536, 537, + 542, 543, 529, 533, 548, 543, 534, 539, 540, 542, + 538, 535, 544, 545, 540, 546, 544, 547, 550, 545, + 549, 551, 552, 548, 553, 558, 552, 546, 554, 160, + 554, 558, 547, 550, 549, 556, 559, 553, 560, 551, + 557, 557, 561, 556, 560, 563, 562, 564, 559, 562, - 565, 564, 578, 562, 567, 568, 563, 160, 566, 569, - 568, 568, 570, 570, 578, 566, 571, 571, 566, 572, - 567, 577, 569, 573, 573, 572, 574, 574, 575, 579, - 576, 581, 579, 580, 575, 576, 576, 582, 580, 584, - 583, 585, 577, 583, 584, 582, 586, 587, 588, 589, - 581, 587, 590, 589, 588, 591, 595, 592, 593, 593, - 591, 594, 596, 597, 585, 586, 598, 596, 599, 601, - 590, 592, 603, 600, 599, 606, 594, 595, 600, 597, - 605, 602, 609, 601, 602, 85, 598, 604, 604, 602, - 603, 606, 602, 602, 607, 608, 609, 610, 605, 607, + 565, 567, 568, 566, 561, 565, 566, 85, 569, 563, + 567, 570, 564, 569, 569, 571, 571, 567, 568, 573, + 567, 572, 572, 578, 570, 573, 574, 574, 575, 575, + 576, 579, 577, 582, 586, 581, 576, 577, 577, 580, + 581, 583, 580, 579, 578, 584, 585, 587, 584, 583, + 588, 585, 582, 589, 588, 591, 590, 586, 592, 589, + 590, 593, 595, 592, 594, 594, 587, 596, 598, 597, + 599, 601, 600, 591, 597, 593, 601, 595, 600, 602, + 604, 605, 605, 603, 598, 606, 603, 608, 596, 607, + 599, 603, 608, 602, 603, 603, 609, 610, 604, 611, - 608, 612, 613, 614, 615, 616, 614, 612, 615, 618, - 616, 613, 610, 617, 618, 619, 617, 620, 621, 622, - 624, 623, 625, 625, 626, 621, 623, 627, 628, 629, - 615, 619, 622, 626, 630, 620, 631, 80, 632, 634, - 624, 633, 634, 630, 632, 629, 627, 633, 631, 628, - 635, 635, 636, 635, 637, 636, 638, 639, 640, 637, - 641, 642, 644, 640, 643, 646, 653, 642, 644, 643, - 645, 639, 647, 645, 638, 648, 649, 647, 650, 641, - 648, 648, 651, 655, 654, 653, 652, 651, 655, 649, - 646, 650, 652, 654, 656, 657, 657, 658, 661, 660, + 613, 609, 620, 606, 614, 607, 613, 615, 616, 621, + 615, 610, 616, 614, 611, 617, 618, 619, 620, 618, + 617, 622, 619, 623, 624, 625, 627, 621, 622, 624, + 626, 626, 628, 629, 616, 627, 623, 630, 631, 80, + 632, 635, 633, 634, 635, 625, 642, 631, 633, 634, + 639, 628, 632, 630, 629, 636, 636, 637, 636, 638, + 637, 640, 641, 643, 638, 642, 644, 641, 639, 643, + 645, 644, 647, 648, 646, 640, 645, 646, 648, 649, + 650, 651, 652, 653, 649, 649, 654, 652, 657, 653, + 655, 656, 660, 650, 651, 660, 656, 647, 666, 655, - 659, 651, 651, 659, 658, 660, 662, 663, 664, 664, - 661, 662, 663, 663, 656, 665, 667, 666, 659, 666, - 668, 662, 668, 669, 670, 671, 672, 673, 674, 675, - 676, 677, 679, 675, 674, 667, 678, 680, 682, 676, - 665, 669, 670, 671, 684, 672, 677, 673, 681, 683, - 679, 678, 685, 682, 686, 683, 680, 687, 684, 689, - 681, 688, 694, 689, 685, 690, 691, 692, 693, 695, - 696, 697, 697, 686, 695, 698, 699, 700, 687, 698, - 688, 694, 691, 690, 696, 692, 693, 693, 701, 702, - 699, 704, 703, 705, 707, 706, 700, 703, 712, 701, + 659, 652, 652, 658, 658, 654, 661, 659, 657, 662, + 660, 663, 661, 664, 665, 665, 663, 668, 664, 664, + 667, 662, 667, 666, 670, 669, 663, 669, 671, 672, + 673, 674, 675, 676, 677, 678, 668, 676, 675, 679, + 680, 681, 670, 677, 682, 685, 671, 672, 683, 673, + 678, 674, 686, 684, 679, 687, 682, 688, 680, 684, + 681, 689, 690, 683, 691, 685, 686, 687, 691, 692, + 693, 694, 695, 696, 697, 75, 688, 699, 699, 697, + 698, 690, 689, 701, 700, 702, 693, 692, 700, 694, + 695, 695, 696, 704, 698, 703, 705, 701, 706, 707, - 708, 707, 709, 702, 715, 708, 710, 704, 706, 709, - 711, 710, 705, 713, 714, 711, 712, 716, 715, 717, - 713, 718, 720, 714, 719, 720, 716, 718, 721, 719, - 722, 717, 721, 723, 724, 726, 725, 727, 727, 728, - 728, 735, 723, 733, 722, 729, 729, 730, 728, 724, - 725, 731, 730, 734, 736, 737, 726, 738, 736, 734, - 731, 735, 733, 739, 740, 741, 743, 737, 742, 744, - 740, 745, 748, 741, 754, 742, 751, 761, 761, 755, - 757, 739, 738, 754, 743, 755, 757, 748, 760, 758, - 759, 745, 760, 751, 744, 746, 766, 746, 758, 763, + 708, 705, 709, 710, 702, 711, 703, 704, 710, 709, + 712, 713, 711, 708, 706, 712, 713, 714, 707, 715, + 716, 718, 717, 721, 728, 719, 715, 720, 721, 716, + 718, 722, 724, 720, 722, 714, 717, 719, 723, 725, + 726, 736, 723, 727, 735, 728, 724, 736, 725, 729, + 729, 730, 730, 731, 731, 726, 732, 727, 733, 737, + 730, 732, 738, 735, 739, 740, 738, 733, 741, 742, + 743, 745, 746, 744, 747, 742, 739, 750, 743, 737, + 744, 757, 753, 74, 756, 759, 741, 757, 766, 745, + 740, 759, 750, 756, 747, 760, 761, 746, 748, 753, - 746, 762, 762, 764, 746, 765, 759, 746, 769, 770, - 763, 773, 767, 769, 746, 746, 766, 746, 767, 765, - 771, 764, 768, 768, 768, 776, 768, 772, 774, 768, - 770, 772, 774, 778, 768, 773, 777, 775, 771, 1088, - 768, 768, 775, 779, 776, 783, 779, 780, 774, 781, - 1088, 777, 780, 780, 782, 782, 781, 784, 778, 792, - 783, 786, 784, 785, 785, 787, 786, 788, 787, 789, - 789, 790, 788, 790, 791, 793, 794, 796, 792, 793, - 795, 797, 797, 798, 801, 796, 791, 799, 800, 800, - 803, 802, 805, 854, 804, 854, 794, 805, 798, 795, + 748, 762, 767, 748, 760, 762, 766, 748, 763, 763, + 748, 765, 761, 764, 764, 768, 767, 748, 748, 769, + 748, 771, 765, 772, 773, 769, 771, 774, 775, 776, + 779, 774, 778, 776, 777, 768, 770, 770, 770, 777, + 770, 780, 773, 770, 772, 779, 68, 781, 770, 776, + 781, 778, 775, 782, 770, 770, 783, 785, 782, 782, + 784, 784, 786, 783, 787, 787, 780, 786, 788, 793, + 790, 789, 785, 788, 789, 790, 791, 791, 792, 794, + 792, 793, 795, 796, 798, 797, 795, 799, 799, 804, + 800, 803, 798, 801, 802, 802, 805, 807, 794, 63, - 804, 799, 801, 802, 806, 806, 809, 811, 807, 810, - 812, 809, 803, 807, 807, 810, 812, 813, 814, 816, - 815, 817, 813, 815, 814, 816, 811, 818, 818, 817, - 819, 819, 820, 821, 822, 823, 824, 825, 826, 822, - 820, 828, 823, 827, 827, 830, 830, 829, 832, 836, - 828, 821, 831, 825, 824, 829, 834, 826, 831, 835, - 838, 837, 841, 842, 844, 834, 837, 832, 835, 838, - 840, 839, 843, 836, 839, 840, 841, 844, 845, 846, - 846, 843, 847, 845, 845, 848, 849, 850, 842, 851, - 852, 855, 855, 852, 856, 849, 858, 847, 857, 859, + 806, 804, 807, 796, 797, 800, 806, 801, 809, 803, + 808, 808, 811, 809, 809, 812, 813, 811, 805, 814, + 816, 812, 815, 818, 819, 814, 816, 815, 817, 818, + 822, 817, 819, 820, 820, 813, 821, 821, 822, 823, + 824, 825, 826, 827, 828, 824, 829, 829, 825, 830, + 832, 832, 834, 831, 838, 836, 833, 823, 830, 827, + 826, 831, 833, 828, 836, 837, 840, 839, 843, 844, + 841, 834, 839, 841, 837, 840, 842, 845, 838, 846, + 849, 842, 843, 847, 848, 848, 845, 850, 847, 847, + 851, 852, 846, 853, 844, 849, 856, 854, 856, 851, - 860, 852, 861, 857, 848, 862, 864, 851, 865, 863, - 866, 850, 865, 867, 869, 856, 868, 858, 863, 859, - 860, 870, 868, 869, 861, 862, 871, 872, 866, 864, - 873, 877, 867, 870, 874, 875, 873, 876, 876, 878, - 875, 872, 879, 880, 881, 871, 882, 883, 874, 884, - 877, 879, 881, 885, 886, 887, 888, 890, 889, 878, - 886, 887, 891, 880, 889, 895, 882, 75, 884, 883, - 888, 890, 892, 885, 893, 894, 896, 898, 892, 894, - 893, 897, 891, 902, 895, 900, 897, 903, 896, 899, - 899, 900, 901, 904, 905, 901, 896, 907, 898, 904, + 854, 857, 857, 858, 859, 860, 850, 861, 854, 859, + 862, 853, 863, 864, 865, 852, 866, 867, 868, 869, + 871, 867, 870, 865, 858, 872, 860, 861, 870, 871, + 862, 873, 874, 864, 863, 875, 868, 872, 869, 866, + 876, 875, 877, 880, 878, 881, 874, 883, 876, 878, + 873, 879, 879, 884, 882, 885, 877, 886, 887, 891, + 888, 884, 880, 882, 889, 881, 890, 883, 892, 893, + 889, 894, 890, 891, 892, 885, 895, 887, 896, 886, + 888, 897, 895, 893, 896, 897, 898, 899, 900, 901, + 903, 894, 908, 900, 902, 902, 903, 904, 905, 899, - 903, 902, 906, 906, 908, 909, 910, 911, 914, 908, - 917, 910, 910, 912, 905, 907, 915, 912, 913, 913, - 916, 909, 911, 909, 919, 916, 920, 923, 922, 917, - 914, 924, 926, 926, 927, 928, 915, 74, 927, 932, - 920, 922, 929, 929, 934, 930, 933, 923, 919, 934, - 928, 931, 924, 925, 932, 931, 925, 935, 925, 937, - 933, 936, 925, 938, 925, 940, 936, 936, 937, 925, - 930, 935, 939, 942, 925, 944, 939, 938, 941, 943, - 940, 945, 946, 941, 943, 942, 947, 949, 939, 944, - 955, 948, 949, 941, 950, 947, 946, 948, 951, 956, + 904, 906, 907, 909, 909, 898, 910, 899, 907, 912, + 901, 914, 908, 911, 906, 913, 905, 917, 911, 915, + 913, 913, 918, 915, 910, 912, 914, 912, 916, 916, + 919, 920, 922, 923, 926, 919, 925, 927, 931, 917, + 929, 929, 918, 58, 930, 932, 932, 923, 930, 925, + 920, 933, 935, 931, 926, 936, 922, 934, 927, 928, + 937, 934, 928, 938, 928, 937, 939, 935, 928, 936, + 928, 939, 939, 940, 941, 928, 933, 938, 943, 942, + 928, 944, 940, 942, 946, 945, 944, 947, 941, 946, + 948, 949, 951, 943, 950, 942, 944, 945, 951, 952, - 950, 954, 945, 953, 951, 952, 952, 954, 953, 957, - 959, 960, 955, 962, 963, 963, 960, 961, 956, 964, - 967, 966, 959, 68, 964, 962, 968, 957, 958, 958, - 965, 961, 972, 969, 958, 966, 958, 970, 965, 967, - 973, 971, 958, 970, 972, 968, 971, 958, 958, 969, - 974, 975, 976, 976, 958, 977, 978, 980, 973, 977, - 982, 981, 983, 980, 981, 984, 974, 983, 985, 975, - 986, 987, 989, 990, 985, 986, 978, 991, 984, 982, - 992, 989, 990, 993, 994, 996, 992, 997, 998, 995, - 987, 1000, 993, 991, 995, 999, 1002, 1001, 1003, 1008, + 953, 947, 954, 950, 952, 949, 953, 956, 954, 955, + 955, 948, 956, 957, 958, 959, 962, 960, 963, 957, + 965, 966, 966, 963, 967, 964, 969, 970, 962, 967, + 971, 972, 965, 968, 959, 960, 958, 961, 961, 964, + 969, 968, 973, 961, 976, 961, 970, 972, 973, 971, + 974, 961, 975, 977, 978, 974, 961, 961, 979, 979, + 981, 980, 976, 961, 975, 980, 985, 983, 984, 977, + 986, 984, 978, 983, 987, 986, 988, 990, 989, 992, + 981, 993, 988, 989, 994, 985, 995, 987, 992, 996, + 993, 997, 995, 999, 998, 1000, 990, 1001, 996, 998, - 1000, 997, 1002, 994, 1004, 996, 1001, 999, 998, 1006, - 1004, 1009, 1010, 1008, 1011, 1003, 1012, 1010, 1013, 1014, - 1020, 1015, 1016, 1019, 63, 1006, 1015, 1016, 1019, 1020, - 1012, 1009, 1024, 1011, 1014, 1022, 1013, 1021, 1021, 1023, - 1025, 1022, 1027, 1031, 1028, 1032, 1031, 1024, 1023, 1028, - 1028, 1030, 1030, 1025, 1033, 1030, 1034, 1035, 1027, 1032, - 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1038, 1046, - 1040, 1042, 1034, 1036, 1033, 1035, 1037, 1049, 1050, 1045, - 1041, 1043, 1045, 1039, 1047, 1061, 1048, 1050, 1053, 1047, - 1046, 1048, 1051, 1049, 1052, 1055, 1056, 1051, 1057, 1052, + 994, 1005, 1002, 1003, 1006, 1007, 1004, 1005, 1009, 1000, + 997, 1007, 1003, 999, 1002, 1004, 1011, 1001, 1012, 1015, + 1013, 1006, 1014, 1018, 1009, 1013, 1016, 1017, 1018, 1019, + 1011, 1022, 1027, 1015, 1019, 1028, 1022, 1023, 1012, 1024, + 1024, 1014, 1017, 1025, 1016, 1026, 1023, 1027, 1028, 1025, + 1030, 1031, 1034, 1035, 1026, 1034, 1031, 1031, 1033, 1033, + 1036, 1037, 1033, 1038, 1040, 1039, 1030, 1035, 1041, 1042, + 1043, 1044, 1048, 1049, 1041, 1048, 1043, 1037, 1039, 1040, + 1036, 1038, 1045, 1046, 1052, 1050, 1044, 1045, 1051, 1042, + 1050, 1054, 1053, 1051, 1049, 1056, 1054, 1046, 1055, 1058, - 1053, 1055, 1058, 1061, 1057, 1059, 1059, 1060, 1058, 1064, - 1062, 1065, 1056, 1062, 1063, 1063, 1060, 1066, 1067, 1068, - 1069, 1067, 1070, 1077, 1071, 1078, 1069, 1064, 1070, 1071, - 1065, 1072, 1068, 1073, 1074, 1084, 1072, 1066, 1073, 1076, - 1074, 1077, 1079, 1082, 1076, 1078, 1080, 1083, 1079, 1081, - 1081, 1080, 1082, 1084, 1085, 1086, 1083, 1087, 1086, 1089, - 1087, 1090, 1091, 1092, 1089, 1093, 1094, 1098, 1095, 1100, - 1096, 1093, 1094, 1085, 1091, 1096, 1097, 1097, 1099, 1090, - 1101, 1100, 1092, 1095, 1101, 1102, 1098, 1103, 1104, 1105, - 1107, 1111, 1099, 1108, 1108, 1109, 1103, 1110, 1113, 1116, + 1052, 1053, 1059, 1055, 1060, 1058, 1061, 1056, 1062, 1062, + 1060, 1063, 1061, 1064, 1065, 1066, 1066, 1065, 1059, 1067, + 1063, 1068, 1069, 1070, 1072, 1071, 1070, 1073, 57, 1074, + 1072, 1064, 1082, 1073, 1074, 1081, 1075, 1067, 1071, 1076, + 1068, 1075, 1069, 1077, 1078, 1076, 1080, 1088, 1077, 1083, + 1078, 1080, 1082, 1081, 1084, 1083, 1085, 1085, 1086, 1084, + 1087, 1089, 1092, 1090, 1094, 1088, 1090, 1086, 1091, 1087, + 1093, 1091, 1095, 1092, 1096, 1093, 1099, 1097, 1102, 1098, + 1089, 1100, 1094, 1097, 1095, 1098, 1100, 1101, 1101, 1103, + 1104, 1099, 1105, 1096, 1106, 1107, 1105, 1102, 1108, 1109, - 1109, 1114, 1110, 1102, 1116, 1115, 1117, 1104, 1119, 1107, - 58, 1111, 1113, 1122, 1105, 1117, 1114, 1115, 1118, 1118, - 1120, 1121, 1124, 1126, 1124, 1123, 1120, 1121, 1119, 1122, - 1123, 1125, 1127, 1128, 1129, 1130, 1125, 1126, 1128, 1133, - 1131, 1132, 1135, 1135, 1137, 1136, 1127, 1131, 1138, 1129, - 1140, 1139, 1144, 1144, 1130, 1141, 1132, 1139, 1133, 1136, - 1141, 1143, 1137, 1138, 1148, 1143, 1147, 1145, 1150, 1141, - 1140, 1141, 1145, 1147, 1141, 1146, 1146, 1149, 1148, 1151, - 1149, 1152, 1154, 1153, 1155, 1157, 1156, 1150, 1153, 1158, - 1152, 1156, 1159, 1161, 1161, 1164, 1155, 1151, 1162, 1157, + 1111, 1115, 1104, 1103, 1107, 1112, 1112, 1118, 1113, 1114, + 52, 1117, 1106, 1113, 1114, 1119, 1123, 1108, 1120, 1111, + 1121, 1115, 1118, 1120, 1109, 1117, 1124, 1119, 1125, 1121, + 1122, 1122, 1124, 1126, 1125, 1127, 1123, 1128, 1129, 1128, + 1127, 1130, 1131, 1129, 1133, 1132, 1134, 1135, 1136, 1126, + 1132, 1137, 1139, 1139, 1135, 1130, 1131, 1140, 1141, 1133, + 1142, 1143, 1144, 1136, 1145, 1134, 47, 1143, 1147, 1145, + 1137, 1140, 1147, 1148, 1148, 1142, 1141, 1152, 1145, 1149, + 1145, 1151, 1144, 1145, 1149, 1150, 1150, 1153, 1151, 1154, + 1153, 1152, 1155, 1156, 1157, 1158, 1160, 1159, 1161, 1157, - 1158, 1154, 1163, 1162, 1165, 1167, 1166, 1163, 1168, 1165, - 1166, 1159, 1169, 1170, 1167, 1164, 1171, 1173, 1172, 1174, - 1175, 1176, 1177, 1168, 1173, 1180, 1179, 1169, 1171, 1178, - 1181, 1174, 1170, 1172, 1182, 1178, 1183, 1184, 1186, 1175, - 1177, 1179, 1176, 1182, 1187, 1180, 1185, 1188, 1189, 1191, - 1181, 1183, 1192, 1194, 1195, 1191, 1184, 1186, 1185, 1193, - 1196, 1194, 1188, 1198, 1200, 1197, 1199, 1192, 1189, 1187, - 1197, 1199, 1199, 1193, 1195, 1198, 1196, 1201, 1206, 1202, - 1203, 1203, 1205, 1200, 1207, 1208, 1208, 1206, 1210, 57, - 1207, 1201, 1202, 1204, 1204, 1205, 1215, 1210, 1204, 1209, + 1162, 1160, 1156, 1163, 1165, 1165, 1168, 18, 1154, 1159, + 1155, 1162, 1161, 1166, 1158, 1167, 1169, 1172, 1166, 1170, + 1167, 1169, 1163, 1170, 1171, 1173, 1168, 1174, 1176, 1175, + 1177, 1179, 1172, 1171, 1180, 1178, 1181, 1177, 1182, 1184, + 1173, 1175, 1183, 1176, 1182, 1185, 1174, 1178, 1187, 1186, + 1179, 1188, 1189, 1190, 1181, 1180, 1191, 1183, 1186, 1184, + 1192, 1195, 1193, 1187, 1189, 1185, 1197, 1195, 1196, 1198, + 1188, 1199, 1190, 1200, 1201, 1192, 1202, 1198, 1204, 1201, + 1197, 1191, 1193, 1196, 1205, 1239, 1206, 1203, 1202, 1200, + 1209, 1199, 1203, 1203, 1207, 1207, 1239, 1204, 1205, 1206, - 1212, 1204, 1204, 1211, 1209, 1212, 1204, 1218, 1213, 1211, - 1214, 1214, 1204, 1213, 1216, 1216, 1204, 1215, 1217, 1219, - 1220, 1217, 1221, 1217, 1222, 1223, 1220, 1218, 1224, 1225, - 1223, 1221, 1226, 1227, 1230, 1228, 52, 1219, 1226, 1227, - 1228, 1229, 1224, 1230, 1222, 1229, 1231, 1225, 1230, 1232, - 1230, 1231, 1230, 1235, 1230, 1233, 1233, 1234, 1234, 1238, - 1234, 1237, 1239, 1232, 1235, 1237, 1240, 1241, 1242, 1243, - 1245, 1244, 1241, 1241, 1238, 1240, 1244, 1242, 1246, 1247, - 1239, 1248, 1249, 1250, 1245, 1251, 1251, 1246, 1253, 1250, - 1254, 1243, 1255, 1252, 1256, 1254, 1249, 1257, 1247, 1258, + 1208, 1208, 1210, 1209, 1211, 1208, 1212, 1212, 1208, 1208, + 1211, 1210, 1213, 1208, 1215, 1214, 1216, 1213, 1219, 1208, + 1215, 1216, 1217, 1208, 1214, 1218, 1218, 1217, 1220, 1220, + 1221, 1222, 1223, 1221, 1224, 1221, 1225, 1226, 1227, 1219, + 1224, 1228, 1229, 1227, 1232, 1225, 1230, 1231, 1236, 1232, + 1223, 1222, 1230, 1231, 1233, 1228, 1234, 1226, 1233, 1235, + 1229, 1243, 1236, 1242, 1235, 1234, 1237, 1237, 1238, 1238, + 1234, 1238, 1234, 1241, 1234, 1244, 1234, 1241, 1242, 1243, + 1245, 1246, 1247, 1248, 1244, 1245, 1245, 1249, 1248, 1250, + 1246, 1251, 1252, 1253, 1254, 1255, 1255, 1256, 1250, 1257, - 1248, 1252, 1253, 1256, 1257, 1259, 1255, 1260, 1261, 1261, - 1262, 1271, 1260, 1263, 1263, 1267, 1264, 1258, 1264, 1266, - 1267, 1268, 1266, 1269, 1275, 1262, 1270, 1270, 1272, 1272, - 1259, 1271, 1269, 1273, 1273, 1276, 1274, 1277, 1277, 1278, - 1268, 1274, 1280, 1279, 1281, 1275, 1279, 1282, 1283, 1284, - 1281, 1284, 1282, 1285, 1288, 1287, 1276, 1283, 1287, 1278, - 1289, 1290, 1280, 1291, 1292, 1289, 1298, 1294, 1291, 1288, - 1294, 1285, 1292, 1293, 1295, 1290, 1296, 1296, 1293, 1295, - 1297, 1299, 1300, 1301, 1298, 1297, 1303, 1299, 1304, 1300, - 1305, 1306, 1303, 1307, 1304, 1305, 1301, 1306, 1308, 1309, + 1254, 1249, 1259, 1258, 1247, 1256, 1260, 1253, 1258, 1262, + 1251, 1252, 1261, 1257, 1263, 1260, 1259, 1264, 1266, 1261, + 1265, 1265, 1264, 1267, 1267, 1271, 1268, 1262, 1268, 1270, + 1271, 1272, 1270, 1266, 1273, 1274, 1274, 1275, 1279, 1263, + 1276, 1276, 1278, 1273, 1277, 1277, 1280, 1278, 1281, 1281, + 1272, 1282, 1283, 1284, 1285, 1286, 1284, 1275, 1287, 1279, + 1289, 1286, 1289, 1287, 1288, 1290, 1293, 1280, 1297, 1283, + 1295, 1282, 1292, 1288, 1285, 1292, 1297, 1294, 1301, 1301, + 1296, 1293, 1294, 1290, 1295, 1296, 1298, 1299, 1300, 1302, + 1299, 1298, 1303, 1300, 1302, 1304, 1305, 1310, 1306, 1308, - 1310, 1310, 1307, 1311, 1313, 1314, 1315, 1316, 1317, 1324, - 1309, 47, 1318, 1319, 1320, 1314, 1325, 1308, 1318, 1319, - 1320, 1315, 1313, 1311, 1322, 1323, 1326, 1316, 1327, 1324, - 1322, 1317, 1328, 1329, 1329, 1330, 1325, 1331, 1326, 1323, - 1332, 1333, 1327, 1334, 1334, 1323, 1333, 1335, 1336, 1338, - 1328, 1339, 1341, 1336, 1340, 1330, 1339, 1339, 1332, 1342, - 1343, 1341, 1331, 1344, 1345, 1356, 18, 1342, 1338, 1348, - 1335, 1348, 1340, 1349, 1343, 1346, 1347, 1352, 1344, 1345, - 1346, 1352, 1345, 1346, 1351, 1347, 1353, 1349, 1354, 1355, - 1351, 1356, 1357, 1354, 1354, 1358, 1359, 1353, 1360, 1361, + 1309, 1304, 1310, 1305, 1313, 1308, 1309, 1311, 1312, 1314, + 1303, 1306, 1316, 1311, 1315, 1315, 1318, 1312, 1319, 1321, + 1314, 1320, 1322, 1313, 1323, 1324, 1328, 1325, 1319, 1327, + 1323, 1324, 1316, 1325, 1318, 1327, 1320, 1329, 1330, 1321, + 1328, 1331, 1332, 1333, 1335, 1322, 1328, 1334, 1334, 1336, + 1337, 1339, 1339, 1331, 1338, 1340, 1332, 1329, 1330, 1338, + 1341, 1333, 1343, 17, 1335, 1341, 1344, 1345, 1337, 1347, + 1346, 1344, 1344, 1348, 1336, 1349, 1350, 1347, 1340, 1346, + 1353, 1343, 1353, 1354, 1351, 1345, 1352, 1348, 1361, 1351, + 1349, 1350, 1351, 1356, 1350, 1352, 1357, 1354, 1358, 1356, - 1358, 1359, 1362, 1363, 1365, 17, 1366, 1362, 1355, 1367, - 1357, 1368, 1368, 1369, 1370, 1371, 1360, 1369, 1365, 1361, - 1372, 1373, 1374, 1363, 1366, 1375, 1372, 1367, 1376, 1377, - 1378, 1379, 1370, 1373, 1371, 1380, 1379, 1382, 1383, 1375, - 1381, 1374, 1380, 1376, 1377, 1381, 1385, 1383, 1386, 1378, - 1384, 1384, 1387, 1388, 1388, 1382, 1389, 1386, 1390, 1391, - 1394, 1385, 1389, 1393, 1390, 1392, 1392, 1395, 1397, 1393, - 1396, 1398, 1387, 1391, 1397, 1396, 1394, 1398, 1399, 1400, - 1400, 1401, 1401, 1404, 1399, 1403, 1403, 1404, 1395, 1405, - 1406, 1407, 1408, 1410, 1409, 1411, 1411, 1412, 1405, 1413, + 1357, 1359, 1360, 1363, 1362, 1364, 1359, 1359, 1363, 1358, + 1364, 1365, 1366, 1367, 1361, 1368, 1370, 1376, 1367, 1371, + 1372, 1360, 1362, 1373, 1373, 1375, 1380, 1374, 1377, 1365, + 1370, 1374, 1366, 1378, 1377, 1368, 1376, 1371, 1372, 1379, + 1380, 1381, 1382, 1375, 1383, 1378, 1384, 1385, 1386, 1387, + 1388, 1384, 1392, 1386, 1385, 1390, 1381, 1382, 1379, 1388, + 1389, 1389, 1391, 1383, 1393, 1393, 1396, 1387, 1394, 1395, + 1390, 1391, 1392, 1398, 1394, 1395, 1397, 1397, 1399, 1398, + 1396, 1400, 1401, 1402, 1403, 1404, 1411, 1401, 1417, 1402, + 1403, 1404, 1405, 1405, 1399, 1406, 1406, 1408, 1408, 1409, - 1410, 1415, 1416, 1407, 1419, 1414, 1408, 1413, 1406, 1409, - 1414, 1420, 1420, 1417, 1421, 1415, 1422, 1412, 1417, 1417, - 1418, 1416, 1423, 1424, 1419, 1418, 1418, 1425, 1424, 1426, - 1427, 1423, 1428, 1421, 1429, 1422, 1430, 1431, 1428, 1429, - 1433, 1432, 1436, 1437, 1434, 1435, 1425, 1432, 1427, 1426, - 1434, 1435, 1438, 1439, 1440, 1441, 1430, 1444, 1442, 1433, - 1444, 1436, 1437, 1431, 1443, 1443, 1445, 1446, 1440, 1447, - 0, 1438, 1439, 1442, 1448, 1448, 1441, 1449, 1449, 1450, - 1452, 1447, 1453, 1451, 1450, 1445, 1446, 1451, 1454, 1457, - 1455, 1453, 1455, 1452, 1458, 1459, 1455, 1460, 1461, 1458, + 1410, 1412, 1400, 1409, 1411, 1413, 1414, 1415, 1417, 1410, + 1416, 1416, 1418, 1412, 1415, 1420, 1421, 1419, 1422, 1413, + 1418, 1414, 1419, 1422, 1422, 1423, 1424, 1425, 1425, 1420, + 1423, 1423, 1426, 1427, 1428, 1421, 1429, 1430, 1431, 1432, + 1434, 1429, 1433, 1428, 1435, 1434, 1424, 1436, 1433, 1437, + 1438, 1426, 1427, 1439, 1440, 1437, 1430, 1432, 1431, 1439, + 1440, 1441, 1442, 1443, 1435, 1444, 1446, 1449, 1447, 1438, + 1449, 1445, 1450, 1436, 1448, 1448, 1451, 1452, 1453, 1453, + 1441, 1442, 1443, 1447, 1444, 1445, 1456, 1446, 1457, 1452, + 1456, 1450, 1454, 1454, 1455, 1451, 1458, 1459, 1460, 1455, - 1463, 1454, 1462, 1462, 1465, 1463, 1464, 1457, 1466, 1455, - 1459, 1467, 1464, 1470, 1461, 1473, 1467, 1460, 1468, 1465, - 1469, 1466, 1468, 1471, 1469, 1472, 1474, 1475, 1475, 1477, - 1479, 1480, 1474, 1470, 1472, 1473, 1480, 1481, 1481, 1482, - 1483, 1471, 1485, 1485, 1497, 1482, 1487, 1477, 1489, 1487, - 1490, 1479, 1488, 1488, 1492, 1493, 1494, 1492, 1495, 1497, - 1483, 1496, 1496, 1498, 1489, 1494, 1490, 1499, 1500, 1501, - 1502, 1502, 1503, 1500, 1504, 1493, 1505, 1506, 1495, 1507, - 1509, 1503, 1510, 1501, 1498, 1511, 1499, 1508, 1508, 1512, - 1511, 1505, 1504, 1514, 1509, 1513, 1513, 1514, 1515, 1507, + 1460, 1457, 1462, 1463, 1460, 1458, 1464, 1465, 1463, 1466, + 1459, 1467, 1467, 1468, 1470, 1471, 1469, 1460, 1468, 1472, + 1462, 1464, 1469, 1475, 1472, 1466, 1473, 1465, 1471, 1470, + 1473, 1474, 1476, 1477, 1478, 1474, 1480, 1480, 1479, 1482, + 1484, 1485, 1477, 1475, 1479, 1487, 1485, 1486, 1486, 1488, + 1476, 1487, 1490, 1490, 1478, 1492, 1494, 1482, 1492, 1493, + 1493, 1484, 1495, 1497, 1498, 1500, 1497, 1499, 1501, 1488, + 1502, 1502, 1494, 1504, 1500, 1503, 1505, 1506, 1495, 1507, + 1508, 1508, 1506, 1509, 1510, 1498, 1511, 1499, 1501, 1512, + 1503, 1513, 1509, 1507, 1504, 1505, 1514, 1514, 1515, 1516, - 1510, 1517, 1506, 1518, 1512, 1516, 1516, 1519, 1520, 1524, - 1521, 1519, 1523, 1523, 1518, 1521, 1525, 1526, 1515, 1527, - 1528, 1525, 1524, 1517, 1529, 1530, 1531, 1520, 1532, 1532, - 1533, 0, 1534, 1526, 1528, 1533, 1535, 1527, 1537, 1530, - 1536, 1536, 1539, 1529, 1529, 1538, 1540, 1537, 1540, 1541, - 1538, 1531, 1534, 1542, 1541, 1543, 1535, 1544, 1546, 1542, - 1547, 1547, 1539, 1544, 1548, 1549, 1552, 1555, 1551, 1553, - 1553, 1549, 1546, 1551, 1556, 1543, 1554, 1554, 1557, 1558, - 1560, 1555, 1558, 1548, 1559, 1559, 1562, 1561, 1570, 1564, - 1552, 1563, 1556, 1557, 1563, 1564, 1565, 1563, 1560, 1561, + 1517, 1511, 1510, 1518, 1520, 1517, 1519, 1519, 1520, 1521, + 1523, 1513, 1515, 1524, 1512, 1522, 1522, 1516, 1518, 1525, + 1526, 1527, 1530, 1525, 1524, 1531, 1527, 1529, 1529, 1521, + 1531, 1532, 1523, 1533, 1534, 1530, 1535, 1537, 1536, 1526, + 1538, 1538, 1607, 1540, 1539, 1541, 1607, 1532, 1534, 1539, + 1543, 1533, 1536, 1542, 1542, 1535, 1535, 1545, 1546, 1543, + 1546, 1544, 1537, 1540, 1547, 1541, 1544, 1548, 1549, 1547, + 1550, 1552, 1554, 1548, 1553, 1553, 1550, 1545, 1555, 1558, + 1561, 1557, 1559, 1559, 1555, 1552, 1557, 1562, 1549, 1560, + 1560, 1554, 1563, 1564, 1561, 1566, 1564, 1565, 1565, 1567, - 1566, 1565, 1568, 1566, 1571, 1569, 1562, 1571, 1580, 1563, - 1569, 1568, 1573, 1570, 1572, 1572, 1574, 1582, 1573, 1566, - 1575, 1580, 1574, 1576, 1576, 1575, 1577, 1577, 1578, 1581, - 1579, 1583, 1585, 1586, 1578, 1579, 1582, 1584, 1585, 1586, - 1584, 1587, 1588, 1589, 1590, 1592, 1587, 1581, 1588, 1590, - 1592, 1583, 1591, 1591, 1593, 1594, 1595, 1596, 1600, 1597, - 1598, 1599, 1602, 1601, 1602, 1603, 1589, 1601, 1605, 1606, - 1610, 1596, 1593, 1597, 1598, 1594, 1595, 1607, 1609, 1599, - 1605, 1606, 1608, 1600, 1603, 1611, 1610, 1612, 1608, 1613, - 1607, 1615, 1615, 1616, 1617, 1618, 1619, 1619, 1609, 1617, + 1568, 1576, 1570, 1558, 0, 1562, 1569, 1563, 1570, 1569, + 1571, 1567, 1569, 1566, 1572, 1571, 1574, 1572, 1575, 1577, + 1568, 1586, 1577, 1575, 1569, 1574, 1576, 1578, 1578, 1579, + 1580, 1588, 1581, 1572, 1586, 1579, 1580, 1581, 1582, 1582, + 1583, 1583, 1584, 1587, 1585, 1589, 1591, 1592, 1584, 1585, + 1588, 1590, 1591, 1592, 1590, 1593, 1594, 1595, 1596, 1598, + 1593, 1587, 1594, 1596, 1598, 1589, 1597, 1597, 1599, 1600, + 1601, 1602, 1606, 1603, 1604, 1605, 1608, 1609, 1608, 1611, + 1595, 1619, 1612, 1615, 1616, 1602, 1599, 1603, 1604, 1600, + 1601, 1611, 1613, 1605, 1612, 1614, 1609, 1606, 1617, 1618, - 1620, 1612, 1621, 1622, 1623, 1611, 1625, 1618, 1624, 1628, - 1613, 1626, 1632, 1616, 1627, 1620, 1621, 1624, 1626, 1630, - 1637, 1625, 1623, 1627, 1636, 1628, 1627, 1622, 1633, 1634, - 1634, 1633, 1635, 1635, 1630, 1640, 1636, 1632, 1637, 1630, - 1638, 1639, 1639, 1638, 1641, 1642, 1643, 1644, 1640, 1643, - 1642, 1645, 1644, 1646, 1648, 1647, 1649, 1650, 1652, 1652, - 1653, 1651, 1654, 1641, 1647, 1649, 1650, 1651, 1649, 1646, - 1645, 1655, 1656, 1648, 1657, 1654, 1658, 1663, 1659, 1660, - 1653, 1658, 1658, 1659, 1666, 1664, 1656, 1665, 1665, 1655, - 1657, 1660, 1667, 1668, 1669, 1669, 1670, 1672, 1668, 1671, + 1616, 1614, 1619, 1615, 1622, 1613, 1621, 1621, 1624, 1623, + 1625, 1625, 1626, 1618, 1623, 1627, 1628, 1629, 1617, 1630, + 1624, 1631, 1633, 1632, 1622, 1634, 1638, 1626, 1630, 1627, + 1632, 1633, 1636, 1642, 1633, 1629, 1631, 1640, 1640, 1639, + 1628, 1634, 1639, 1641, 1641, 1642, 1643, 1636, 1645, 1645, + 1644, 1638, 1636, 1644, 1646, 1647, 1648, 1649, 1650, 1651, + 1649, 1648, 1653, 1650, 1643, 1652, 1654, 1646, 1655, 1657, + 1656, 1653, 1658, 1658, 1647, 1657, 1659, 1655, 1651, 1656, + 1655, 1652, 1660, 1661, 1662, 1654, 1663, 1664, 1666, 1665, + 1669, 1670, 1664, 1664, 1665, 1660, 1659, 1672, 1662, 1673, - 1666, 1667, 1663, 1664, 1671, 1670, 1673, 1674, 1670, 1669, - 1677, 1675, 1679, 1678, 1680, 1672, 1675, 1675, 1682, 1680, - 1681, 1683, 1683, 1684, 1677, 1674, 1681, 1673, 1678, 1684, - 1685, 1686, 1687, 1688, 1679, 1685, 1682, 1690, 1687, 1688, - 1691, 1692, 1693, 1694, 1695, 1686, 1694, 1692, 1697, 1699, - 1695, 1700, 1694, 1701, 1691, 1693, 1697, 1690, 1702, 1703, - 1704, 1701, 1705, 1706, 1707, 1708, 1708, 1702, 1699, 1704, - 1700, 1711, 1703, 1709, 1710, 1705, 1713, 1706, 1707, 1709, - 1710, 1712, 1712, 1714, 1711, 1715, 1717, 1708, 1716, 1716, - 1719, 1718, 1720, 1721, 1723, 1723, 1713, 1718, 1724, 1717, + 1666, 1661, 1663, 1671, 1671, 1674, 1675, 1675, 1673, 1670, + 1674, 1676, 1677, 1672, 1678, 1669, 1679, 1677, 1680, 1681, + 1676, 1675, 1685, 1676, 1681, 1681, 1683, 1684, 1686, 1687, + 1688, 1696, 1678, 1686, 0, 1687, 1680, 1679, 1689, 1689, + 1683, 1690, 1684, 1692, 1685, 1691, 1693, 1690, 1688, 1694, + 1691, 1696, 1693, 1697, 1698, 1694, 1699, 1692, 1701, 1700, + 1698, 1705, 1700, 1703, 1701, 1706, 1707, 1697, 1700, 1699, + 1708, 1703, 1709, 1710, 1707, 1708, 1711, 1712, 1713, 1714, + 1705, 1709, 1715, 1715, 1706, 1711, 1710, 1718, 1716, 1717, + 1712, 1720, 1713, 1714, 1716, 1717, 1719, 1719, 1721, 1722, - 1726, 1714, 1725, 1730, 1715, 1726, 1725, 1729, 1720, 1727, - 1728, 1721, 1719, 1732, 1727, 1728, 1729, 1733, 1724, 1734, - 1733, 1735, 1732, 1736, 1736, 1737, 1730, 1738, 1739, 1740, - 1740, 1734, 1741, 1742, 1746, 1747, 1735, 1743, 1744, 1738, - 1742, 1750, 1748, 0, 1737, 1749, 1741, 1739, 1748, 1743, - 1744, 1753, 1751, 1746, 1753, 1747, 1757, 1749, 1751, 1750, - 1752, 1752, 1754, 1754, 1756, 1757, 1758, 1759, 1759, 1756, - 1760, 1761, 1758, 1761, 1762, 1763, 1764, 1762, 1765, 1766, - 1767, 1768, 1760, 1769, 1772, 1767, 1768, 1770, 1771, 1772, - 1774, 1773, 1769, 1777, 0, 1763, 1765, 1766, 1764, 1770, + 1718, 1723, 1723, 1725, 1715, 1726, 1724, 1727, 1728, 1725, + 1731, 1720, 1730, 1730, 1737, 1733, 1721, 1732, 1722, 1724, + 1733, 1732, 1736, 1727, 1734, 1739, 1728, 1726, 1735, 1734, + 1731, 1736, 1740, 1735, 1739, 1740, 1741, 1737, 1742, 1743, + 1743, 1744, 1745, 1746, 1747, 1747, 1750, 1748, 1741, 1749, + 1753, 1751, 1754, 1742, 1745, 1756, 1749, 1757, 1750, 1755, + 1744, 1748, 1746, 1751, 1758, 1755, 0, 1756, 1760, 1753, + 1758, 1760, 1754, 1759, 1759, 1757, 1761, 1761, 1763, 1764, + 1765, 1766, 1766, 1763, 1767, 1768, 1765, 1768, 1764, 1769, + 1770, 1771, 1769, 1772, 1773, 1774, 1767, 1775, 1776, 1778, - 1773, 1776, 1775, 1771, 1778, 1778, 1776, 1775, 1777, 1779, - 1774, 1780, 1782, 1773, 1775, 1779, 1783, 1784, 1785, 1786, - 1787, 1786, 1788, 1788, 1789, 1789, 1790, 1790, 1791, 1792, - 1792, 1782, 1780, 1784, 1787, 1783, 1787, 1794, 1785, 1793, - 1793, 1795, 1796, 1796, 1798, 1797, 1801, 1802, 1791, 1797, - 1798, 1799, 1801, 1803, 1799, 1804, 1807, 1805, 1794, 1803, - 1805, 1808, 1795, 1806, 1806, 1802, 1808, 1809, 1809, 1810, - 1811, 1818, 1812, 1813, 1813, 1815, 1807, 1812, 1814, 1817, - 1804, 1815, 1816, 1814, 1810, 1819, 1820, 1821, 0, 1818, - 1824, 1811, 1820, 1825, 1816, 1816, 1816, 1823, 1826, 1817, + 1774, 1779, 1775, 1777, 1781, 1784, 1779, 1776, 1780, 0, + 1770, 1772, 1773, 1771, 1778, 1777, 1782, 1780, 1783, 1787, + 1784, 1782, 1789, 1783, 1781, 1785, 1785, 1786, 1782, 1790, + 1780, 1791, 1792, 1786, 1793, 1794, 1793, 1795, 1795, 1798, + 1787, 1789, 1796, 1796, 1797, 1797, 1801, 1791, 1790, 1794, + 1802, 1794, 1792, 1799, 1799, 1800, 1800, 1803, 1803, 1798, + 1804, 1809, 1805, 1806, 1804, 1811, 1806, 1801, 1805, 1808, + 1810, 1802, 1813, 1813, 1812, 1808, 1810, 1812, 1814, 1809, + 1815, 1816, 1816, 1818, 1817, 1815, 1819, 1820, 1820, 1821, + 1811, 1819, 1825, 1823, 1821, 1822, 1824, 1826, 1814, 1817, - 1826, 1816, 1823, 1823, 1824, 1819, 1827, 1821, 1825, 1828, - 1829, 1830, 1831, 1832, 1833, 1833, 1829, 1827, 1834, 1836, - 1830, 1835, 1835, 1837, 1828, 1838, 1838, 1839, 1839, 1840, - 1843, 1843, 1831, 1844, 1832, 1848, 1849, 1845, 1847, 1836, - 1852, 1850, 1849, 1856, 1834, 1837, 1845, 1847, 1853, 1840, - 1851, 1851, 1854, 1855, 1857, 1857, 1848, 1850, 1844, 1854, - 1858, 1852, 1855, 1853, 1859, 1861, 1862, 1863, 1864, 1856, - 1861, 1865, 1862, 1868, 1866, 1864, 1866, 1865, 1869, 1873, - 1859, 1870, 1870, 1871, 1869, 1872, 1858, 1863, 1871, 1874, - 1875, 1877, 1868, 1876, 1872, 1878, 1876, 1879, 1879, 1873, + 1828, 1822, 1827, 1832, 1818, 1823, 1823, 1823, 1827, 1830, + 1825, 1831, 1823, 1834, 1830, 1830, 1824, 1826, 1832, 1833, + 1828, 1833, 1835, 1836, 1834, 1831, 1837, 1838, 1839, 1836, + 1840, 1840, 1841, 1842, 1842, 1837, 1843, 1835, 1844, 1845, + 1845, 1846, 1846, 1847, 1850, 1850, 1851, 1838, 1852, 1839, + 1854, 1855, 1857, 1858, 1858, 1856, 1843, 1852, 1841, 1854, + 1844, 1856, 1859, 1847, 1860, 1862, 1861, 1863, 1857, 1864, + 1864, 1851, 1855, 1861, 1862, 1865, 1866, 1868, 1869, 1860, + 1870, 1871, 1868, 1859, 1869, 1872, 1875, 1873, 1871, 1873, + 1876, 1872, 1866, 1863, 1877, 1877, 1876, 1878, 1879, 1880, - 1880, 1881, 1875, 1882, 1883, 1886, 1880, 1881, 1874, 1877, - 1884, 1887, 1888, 1890, 1884, 1889, 1889, 1888, 1893, 1883, - 1891, 1878, 1894, 1882, 0, 1886, 1894, 1895, 1895, 1897, - 1884, 1904, 1890, 1887, 1896, 1891, 1900, 1893, 1897, 1899, - 1896, 1898, 1898, 1899, 1901, 1901, 1902, 1900, 1903, 1905, - 1904, 1906, 1900, 1907, 1905, 1908, 1911, 1909, 1910, 1912, - 1912, 1908, 1903, 1910, 1913, 1913, 1914, 1902, 1916, 1911, - 1914, 1906, 1909, 1907, 1917, 1918, 1926, 1916, 1919, 1919, - 1921, 1921, 1922, 1923, 0, 1917, 1925, 1922, 1922, 1923, - 1917, 1927, 1925, 1928, 1929, 1918, 1927, 1931, 1933, 1932, + 1870, 1865, 1878, 1881, 1882, 1875, 1883, 1879, 1884, 1883, + 1885, 1886, 1886, 1889, 1887, 1888, 1882, 1890, 1893, 1880, + 1887, 1888, 1881, 1891, 1894, 1895, 1884, 1891, 1896, 1896, + 1895, 1897, 1890, 1889, 1898, 1900, 1885, 1901, 1893, 1902, + 1902, 1901, 1903, 1891, 1904, 1907, 1894, 1909, 1903, 1898, + 1897, 1905, 1905, 1904, 1900, 1906, 1907, 1908, 1908, 1906, + 1910, 1907, 1911, 1913, 1912, 1914, 1915, 1917, 1909, 1912, + 1916, 1918, 1915, 1919, 1910, 1924, 1918, 1920, 1920, 1921, + 1921, 1911, 1917, 1913, 1924, 1914, 1919, 1922, 1916, 1925, + 1926, 1922, 1927, 1927, 1929, 1929, 1930, 1931, 1933, 1934, - 1929, 1934, 1926, 1932, 1938, 1928, 1935, 1936, 1937, 1931, - 1933, 1939, 1935, 1940, 1937, 1941, 1943, 1944, 1940, 1945, - 1948, 1948, 1947, 1938, 1945, 1947, 1934, 1941, 1943, 1936, - 1951, 1939, 1949, 1949, 1950, 1950, 1944, 1952, 1953, 1956, - 1954, 1955, 1961, 1952, 1953, 1954, 1958, 1955, 1956, 1960, - 1951, 1958, 1960, 1964, 1961, 1962, 1962, 1965, 1966, 1967, - 1967, 1968, 1969, 1966, 1973, 1964, 1970, 1969, 1974, 1965, - 1968, 1970, 1971, 1972, 1972, 1971, 1975, 1974, 1976, 1977, - 1978, 1979, 1980, 1977, 1973, 1978, 1981, 1979, 1982, 1983, - 1985, 1985, 1986, 1988, 1975, 1981, 1987, 1976, 1989, 1989, + 1925, 1930, 1930, 1931, 1933, 1925, 1935, 1936, 1937, 1939, + 1926, 1935, 1940, 1942, 1937, 1941, 1940, 1943, 1944, 1936, + 1945, 1939, 1946, 1943, 1947, 1934, 1945, 1941, 1948, 1952, + 1949, 1951, 1953, 1948, 1956, 1956, 1955, 1953, 1942, 1955, + 1944, 1946, 1949, 1951, 1947, 1957, 1957, 1959, 1952, 1958, + 1958, 1960, 1961, 1964, 1962, 1963, 1969, 1960, 1961, 1962, + 1966, 1963, 1964, 1968, 1972, 1966, 1968, 1959, 1969, 1970, + 1970, 1973, 1974, 1975, 1975, 1976, 1972, 1974, 1981, 1979, + 1977, 1978, 1979, 1973, 1976, 1977, 1978, 1980, 1980, 1983, + 1982, 1984, 1985, 1988, 1990, 1986, 1985, 1987, 1981, 1982, - 1980, 1992, 1985, 1983, 1993, 1987, 1982, 1990, 1991, 1993, - 1986, 1994, 2000, 1988, 1997, 1997, 1990, 2001, 1999, 2003, - 1991, 1999, 1992, 2004, 1994, 2005, 2006, 2010, 2000, 2007, - 2007, 2005, 2015, 2001, 2003, 2010, 2008, 2004, 2008, 2009, - 2009, 2012, 2012, 2006, 2013, 2013, 2016, 2017, 2019, 2018, - 2022, 2020, 2016, 2017, 2023, 2015, 2018, 2021, 2021, 2022, - 2024, 2025, 2026, 2028, 2027, 2029, 2032, 2033, 2030, 2034, - 2019, 2020, 2024, 2025, 2030, 2023, 2027, 2026, 2035, 2035, - 2029, 2034, 2036, 2037, 2040, 2038, 2032, 2030, 2038, 2028, - 2033, 2039, 2042, 2043, 2044, 2043, 2039, 2042, 2046, 2048, + 1986, 1991, 1994, 1987, 1989, 1993, 1993, 1983, 1996, 1995, + 1984, 1988, 1990, 1989, 1998, 1991, 2000, 1993, 1995, 1999, + 1994, 1997, 1997, 1998, 2001, 2002, 2005, 2005, 1996, 2001, + 2007, 1999, 2008, 2007, 2009, 2012, 2011, 2000, 2002, 2013, + 2014, 2015, 2015, 2023, 2016, 2013, 2016, 2018, 2008, 2012, + 2009, 2011, 2017, 2017, 2027, 2018, 2024, 2014, 2020, 2020, + 2021, 2021, 2024, 2025, 2026, 2028, 2023, 2029, 2029, 2025, + 2030, 2026, 2031, 2034, 2032, 2033, 2027, 2035, 2036, 2030, + 2037, 2040, 2041, 2251, 2038, 2028, 2032, 2033, 2034, 2035, + 2038, 2043, 2043, 2031, 2042, 2037, 2044, 2045, 2048, 2046, - 2036, 2045, 2050, 2037, 2040, 2046, 2045, 2051, 2048, 2052, - 2054, 2053, 2044, 2053, 2058, 2060, 2051, 2055, 2059, 2059, - 2050, 2052, 2057, 2055, 2057, 2061, 2065, 2063, 2058, 2054, - 2061, 2062, 2063, 2062, 2064, 2066, 2067, 2069, 2068, 2064, - 2070, 2060, 2067, 2068, 2065, 2074, 2075, 2079, 2071, 2072, - 2069, 2078, 2070, 2071, 2071, 2066, 2083, 2072, 2076, 2076, - 2075, 2077, 2077, 2080, 2074, 2081, 2078, 2079, 2084, 2080, - 2081, 2082, 2095, 2082, 2083, 2086, 2084, 2085, 2085, 2087, - 2087, 2088, 2088, 2089, 2084, 2090, 2091, 2086, 2093, 2094, - 2090, 2094, 2089, 2095, 2097, 0, 2096, 2093, 2098, 2099, + 2251, 2040, 2046, 2038, 2036, 2041, 2042, 2047, 2050, 2051, + 2052, 2051, 2047, 2050, 2044, 2053, 2054, 2045, 2048, 2058, + 2053, 2056, 2059, 2054, 2060, 2061, 2062, 2061, 2052, 2063, + 2056, 2059, 2065, 2066, 2065, 2063, 2060, 2058, 2067, 2067, + 2068, 2069, 2070, 2071, 2070, 2062, 2069, 2066, 2071, 2072, + 2073, 2074, 2075, 2078, 2072, 2076, 2077, 2079, 2075, 2080, + 2076, 2082, 2079, 2079, 2083, 2078, 2068, 2080, 2073, 2077, + 2086, 2074, 2084, 2084, 2085, 2085, 2087, 2088, 2083, 2089, + 2082, 2091, 2092, 2088, 2089, 2086, 2090, 0, 2090, 2094, + 2092, 2093, 2093, 2095, 2095, 2097, 2087, 2099, 2092, 2091, - 2093, 2096, 2096, 2101, 2091, 2102, 2097, 2098, 2103, 2105, - 2102, 2099, 2106, 2103, 2107, 2101, 2108, 2108, 2109, 2110, - 2112, 2116, 2105, 2107, 2111, 2114, 2113, 2117, 2118, 0, - 2114, 2127, 2106, 2116, 2112, 2121, 2109, 2110, 2119, 2117, - 2111, 2113, 2120, 2119, 2121, 2124, 2126, 2120, 2118, 2129, - 2128, 2124, 2126, 2130, 2127, 2132, 2132, 2131, 2135, 2133, - 2134, 2134, 2139, 2138, 2124, 2128, 2131, 2129, 2133, 2136, - 2137, 2141, 2147, 2136, 2140, 2137, 2138, 2135, 2130, 2142, - 2140, 2139, 2143, 2144, 2142, 2142, 2146, 2145, 2143, 2144, - 2145, 2152, 2147, 2141, 2146, 2150, 2150, 2151, 2151, 2155, + 2098, 2094, 2096, 2096, 2097, 2098, 2102, 2101, 2102, 2103, + 2105, 2106, 2104, 2107, 2109, 2099, 2101, 2104, 2104, 2101, + 2106, 2113, 2105, 2110, 2111, 2107, 2109, 2114, 2110, 2111, + 2103, 2115, 2116, 2116, 2113, 2117, 2118, 2120, 2121, 2119, + 2115, 2122, 2130, 2123, 2127, 2125, 2126, 2114, 2123, 2136, + 2138, 2130, 2121, 2117, 2118, 2119, 2122, 2125, 2126, 2137, + 2128, 2129, 2120, 2133, 2127, 2128, 2129, 2135, 2138, 2133, + 2139, 2140, 2136, 2135, 2137, 2141, 2141, 2142, 2143, 2143, + 2140, 2144, 2133, 2145, 2146, 2147, 2142, 2145, 2148, 2146, + 2149, 2150, 2156, 2152, 2164, 2139, 2149, 2151, 2147, 2152, - 2152, 2153, 2153, 2154, 2154, 2158, 2156, 2157, 2159, 2159, - 2158, 2155, 2151, 2157, 2160, 2160, 2161, 2165, 2164, 2162, - 2167, 2161, 2164, 2151, 2156, 2162, 2166, 2169, 2170, 2172, - 2166, 2171, 2174, 2170, 2173, 2175, 2176, 2165, 2177, 2173, - 2167, 2178, 2181, 2177, 2172, 2179, 2179, 2183, 2184, 2180, - 2174, 2175, 2169, 2180, 2171, 2182, 2176, 2181, 2185, 2186, - 2182, 2188, 2187, 2178, 2189, 2193, 2184, 2187, 2190, 2190, - 2185, 2192, 2194, 2183, 2188, 2195, 2196, 2197, 2186, 2192, - 2198, 2199, 2189, 2200, 2193, 0, 2204, 2202, 2206, 2205, - 2207, 2194, 2207, 2199, 2206, 2212, 2197, 2211, 2195, 2204, + 2144, 2155, 2151, 2151, 2153, 2154, 2164, 2148, 2154, 2155, + 2153, 2161, 2156, 2150, 2159, 2159, 2160, 2160, 2162, 2162, + 2161, 2163, 2163, 2165, 2166, 2168, 2168, 2167, 2169, 2169, + 2166, 2160, 2167, 2170, 2171, 2173, 2174, 2176, 2170, 2173, + 2171, 2165, 2160, 2175, 2178, 2179, 2181, 2175, 2180, 2182, + 2179, 2184, 2183, 2185, 2182, 2186, 2174, 2176, 2187, 2190, + 2186, 2181, 2188, 2188, 2189, 2192, 2193, 2184, 2189, 2178, + 2183, 2180, 2191, 2185, 2190, 2194, 2195, 2191, 2196, 2197, + 2187, 2198, 2201, 2196, 2193, 2199, 2199, 2194, 2202, 2203, + 2201, 2192, 2197, 2204, 2205, 2195, 2206, 2208, 2207, 2198, - 2196, 2198, 2202, 2205, 2200, 2208, 2208, 2209, 2210, 2212, - 2211, 2210, 2209, 2213, 2214, 2214, 2215, 2215, 2216, 2218, - 2216, 2217, 2217, 2219, 2220, 2220, 2213, 2227, 2221, 2222, - 2222, 2223, 2223, 2224, 2218, 2228, 2219, 2221, 2224, 2226, - 2221, 2229, 2230, 2230, 2226, 2231, 2231, 2227, 2232, 2233, - 2233, 2234, 2240, 2229, 2237, 2228, 2235, 2235, 2236, 2237, - 2238, 2238, 2239, 2239, 2242, 2241, 2240, 2232, 2243, 2234, - 2244, 2246, 2248, 2236, 2241, 2250, 2246, 2247, 2247, 2249, - 2249, 2242, 2243, 2252, 2251, 2255, 2252, 2253, 2253, 2244, - 2251, 2248, 2256, 2250, 2254, 2254, 2257, 2259, 2257, 2260, + 2209, 2213, 2211, 2216, 2215, 2216, 2214, 2202, 2203, 2208, + 2215, 2217, 2217, 2273, 2213, 2206, 2204, 2211, 2205, 2207, + 2214, 2209, 2218, 2219, 2220, 2221, 2219, 2218, 2222, 2223, + 2223, 2224, 2224, 2225, 2227, 2225, 2273, 2220, 2228, 2221, + 2236, 2222, 2226, 2226, 2229, 2229, 2230, 2231, 2231, 2227, + 2237, 2228, 2232, 2232, 2233, 2230, 2235, 2238, 2230, 2233, + 2236, 2235, 2239, 2239, 2240, 2240, 2241, 2242, 2242, 2238, + 2237, 2243, 2244, 2244, 2246, 2245, 2247, 2247, 2249, 2246, + 2248, 2248, 2250, 2252, 2253, 2241, 2256, 2256, 2255, 2243, + 2245, 2250, 2249, 2255, 2257, 2258, 2258, 2252, 2259, 2260, - 2261, 2261, 2263, 2253, 2255, 2264, 2265, 2256, 2268, 2266, - 2267, 2267, 2259, 2266, 2269, 2270, 2271, 2274, 2260, 2269, - 2276, 2265, 2263, 2273, 2273, 2275, 2277, 2268, 2264, 2278, - 2270, 2271, 2275, 2279, 2276, 2280, 2280, 2274, 2282, 2281, - 2282, 2286, 2283, 2285, 2277, 2283, 2287, 2278, 2281, 2285, - 2288, 2287, 2289, 2286, 2290, 2288, 2292, 2291, 2293, 2279, - 2283, 2292, 2283, 2295, 2296, 2297, 2298, 2290, 2295, 2296, - 2299, 2300, 2298, 2301, 2304, 2305, 2302, 2289, 2291, 2301, - 2297, 2302, 2303, 2311, 2293, 2307, 2300, 2303, 2305, 2306, - 2316, 2299, 2306, 2308, 2307, 2309, 2310, 2311, 2324, 2304, + 2264, 2261, 2265, 2253, 2261, 2260, 2262, 2262, 2263, 2263, + 2266, 2268, 2266, 2257, 2269, 2272, 2259, 2265, 2277, 2264, + 2270, 2270, 2262, 2274, 2275, 2279, 2268, 2278, 2275, 2276, + 2276, 2280, 2278, 2269, 2283, 2272, 2284, 2277, 2274, 2285, + 2279, 2282, 2282, 2284, 2286, 2287, 2280, 2288, 2289, 2289, + 2290, 2296, 2295, 2285, 2283, 2291, 2296, 2291, 2292, 2290, + 2294, 2292, 2286, 2287, 2295, 2297, 2294, 2298, 2299, 2300, + 2297, 2302, 2301, 2288, 2304, 2305, 2292, 2301, 2292, 2304, + 2305, 2299, 2307, 2306, 2309, 2308, 2310, 2311, 2307, 2312, + 2300, 2308, 2298, 2311, 2312, 2313, 2314, 2302, 2306, 2315, - 2312, 2313, 2308, 2324, 2309, 2310, 2312, 2313, 2314, 2318, - 2316, 2320, 2314, 2319, 2319, 2321, 2321, 2320, 2318, 2322, - 2323, 2323, 2325, 2327, 2321, 2328, 2329, 2329, 2322, 2331, - 2330, 2333, 2334, 2338, 2335, 2336, 2338, 2340, 2331, 2327, - 2341, 2328, 2325, 2333, 2325, 2330, 2339, 2336, 2334, 2335, - 0, 2339, 2341, 2342, 2342, 2343, 2343, 2340, 2345, 2345, - 2346, 2347, 2348, 2346, 2349, 2350, 2347, 2352, 2348, 2355, - 2349, 2351, 2351, 2354, 2350, 2353, 2353, 2356, 2357, 2357, - 2358, 2352, 2360, 2355, 2359, 2354, 2358, 2360, 2362, 2368, - 2363, 2366, 2362, 2363, 2364, 2364, 2356, 2365, 2359, 2367, + 2313, 2310, 2317, 2316, 2318, 2309, 2316, 2319, 2320, 2321, + 2326, 2317, 2315, 2318, 2322, 2324, 2319, 2320, 2323, 2324, + 2322, 2314, 2328, 2321, 2323, 2329, 2329, 2330, 2331, 2331, + 2326, 2328, 2332, 2330, 2333, 2333, 2335, 2331, 2334, 2337, + 2341, 2332, 2340, 2334, 2338, 2339, 2339, 2343, 2344, 2341, + 2345, 2346, 2350, 2352, 2352, 2337, 2335, 2340, 2335, 2343, + 2338, 2351, 2349, 2346, 2344, 2345, 2348, 2349, 0, 2348, + 2353, 2353, 2350, 2351, 2355, 2355, 2356, 2357, 2358, 2356, + 2359, 2360, 2357, 2362, 2358, 2365, 2359, 2361, 2361, 2364, + 2360, 2363, 2363, 2366, 2367, 2367, 2368, 2362, 2370, 2365, - 2366, 2369, 2365, 2370, 2370, 2369, 2371, 2373, 2367, 2368, - 2374, 2375, 2373, 2376, 2377, 2378, 2379, 2380, 2377, 2371, - 2381, 2379, 2382, 2380, 2383, 2384, 2381, 2376, 2385, 2386, - 2374, 2375, 2389, 2385, 2388, 2378, 2390, 2398, 2398, 2391, - 2382, 2390, 2397, 2383, 2384, 2391, 2388, 2392, 2389, 2393, - 2386, 2393, 2395, 2400, 2399, 2392, 2397, 2399, 2401, 2401, - 2404, 2395, 2405, 2406, 2404, 2407, 2407, 2408, 2405, 2411, - 2411, 2413, 2415, 2419, 2416, 2406, 2408, 2420, 2419, 2400, - 2421, 2430, 2422, 2423, 2424, 2424, 2415, 2422, 2423, 2413, - 2416, 2426, 2426, 2428, 2429, 2429, 2431, 2430, 2434, 2428, + 2369, 2364, 2368, 2370, 2372, 2378, 2373, 2376, 2372, 2373, + 2374, 2374, 2366, 2375, 2369, 2377, 2376, 2379, 2375, 2380, + 2380, 2379, 2381, 2383, 2377, 2378, 2384, 2385, 2383, 2386, + 2387, 2388, 2389, 2390, 2387, 2381, 2391, 2389, 2392, 2390, + 2393, 2394, 2391, 2386, 2395, 2396, 2384, 2385, 2399, 2395, + 2398, 2388, 2400, 2408, 2408, 2401, 2392, 2400, 2407, 2393, + 2394, 2401, 2398, 2402, 2399, 2403, 2396, 2403, 2405, 2410, + 2409, 2402, 2407, 2409, 2411, 2411, 2414, 2405, 2415, 2416, + 2414, 2417, 2417, 2418, 2415, 2421, 2421, 2423, 2425, 2429, + 2426, 2416, 2418, 2430, 2429, 2410, 2431, 2440, 2432, 2433, - 2432, 2421, 2436, 2420, 2435, 2432, 2440, 2435, 2437, 2438, - 2438, 2442, 2443, 2441, 2436, 2440, 2447, 2434, 2431, 2441, - 2437, 2445, 2445, 2446, 2448, 2453, 2446, 2443, 2454, 2442, - 2450, 2450, 2451, 2451, 2452, 2447, 2455, 2454, 2456, 2452, - 2456, 2455, 2448, 2453, 2457, 2458, 2460, 2461, 2459, 2462, - 2463, 2460, 2464, 2464, 2468, 2463, 2465, 2465, 2457, 2458, - 2459, 2466, 2466, 2467, 2467, 2469, 2468, 2461, 2470, 2462, - 2471, 2471, 2473, 2470, 2472, 2472, 2474, 2475, 2476, 2477, - 2478, 2478, 2479, 2469, 2473, 2480, 2480, 2482, 2474, 2481, - 2481, 2483, 2485, 2484, 2486, 2477, 2488, 2475, 2482, 2476, + 2434, 2434, 2425, 2432, 2433, 2423, 2426, 2436, 2436, 2438, + 2439, 2439, 2441, 2440, 2444, 2438, 2442, 2431, 2446, 2430, + 2445, 2442, 2450, 2445, 2447, 2448, 2448, 2452, 2453, 2451, + 2446, 2450, 2457, 2444, 2441, 2451, 2447, 2455, 2455, 2456, + 2458, 2463, 2456, 2453, 2464, 2452, 2460, 2460, 2461, 2461, + 2462, 2457, 2465, 2464, 2466, 2462, 2466, 2465, 2458, 2463, + 2467, 2468, 2470, 2471, 2469, 2472, 2473, 2470, 2474, 2474, + 2478, 2473, 2475, 2475, 2467, 2468, 2469, 2476, 2476, 2477, + 2477, 2479, 2478, 2471, 2480, 2472, 2481, 2481, 2483, 2480, + 2482, 2482, 2484, 2485, 2486, 2487, 2490, 2488, 2493, 2479, - 2484, 2479, 2487, 2483, 2485, 2489, 2491, 2487, 2490, 2490, - 2492, 2493, 2497, 2494, 2486, 2491, 2488, 2495, 2496, 2498, - 2501, 2498, 2502, 2499, 2503, 2489, 2494, 2500, 2500, 2501, - 2505, 2493, 2496, 2506, 2497, 2499, 2492, 2502, 2507, 2503, - 2508, 2495, 2509, 2508, 2510, 2511, 2512, 2512, 2505, 2510, - 2511, 2513, 2513, 2514, 2514, 2506, 2509, 2516, 2516, 2518, - 2518, 2507, 2519, 2520, 2521, 2524, 2522, 2526, 2525, 2528, - 2527, 2529, 2531, 2530, 2520, 2530, 2532, 2533, 2528, 2537, - 2519, 2522, 2538, 2521, 0, 2524, 2525, 2534, 2534, 2526, - 2527, 2529, 2531, 2537, 2532, 2533, 2536, 2536, 2539, 2540, + 2483, 2489, 2489, 2491, 2491, 2485, 2492, 2492, 2494, 2493, + 2495, 2496, 2484, 2488, 2486, 2490, 2487, 2495, 2497, 2498, + 2494, 2499, 2500, 2496, 2498, 2501, 2501, 2502, 2503, 2504, + 2505, 2506, 2507, 2509, 2508, 2509, 2502, 2513, 2497, 2510, + 2516, 2499, 2500, 2505, 2511, 2511, 2507, 2514, 2512, 2504, + 2517, 2510, 2513, 2518, 2503, 2506, 2508, 2512, 2516, 2520, + 2519, 2521, 2514, 2519, 2522, 2530, 2521, 2523, 2523, 2522, + 2524, 2524, 2517, 2520, 2525, 2525, 2518, 2527, 2527, 2529, + 2529, 2531, 2532, 2530, 2533, 2535, 2536, 2537, 2538, 2539, + 2540, 2541, 2531, 2541, 2542, 2543, 2549, 2544, 2539, 2533, - 2540, 2542, 2543, 2543, 2538, 2544, 2545, 2539, 2546, 2548, - 2542, 2547, 2549, 2550, 2551, 2546, 2552, 2552, 2553, 2553, - 2554, 2555, 2556, 2544, 2545, 2560, 2547, 2548, 2556, 2550, - 2549, 2557, 2557, 2551, 2558, 2558, 2559, 2561, 2562, 2555, - 2554, 2563, 2559, 2560, 2564, 2565, 2566, 0, 2567, 2564, - 2569, 2569, 2561, 2567, 2568, 2563, 2568, 2562, 2570, 2573, - 2570, 2571, 2571, 2575, 2576, 2565, 2566, 2577, 2578, 2579, - 2580, 2581, 2575, 2582, 2579, 2580, 2585, 2586, 2573, 2577, - 2586, 2587, 2587, 2576, 2588, 2589, 2590, 2590, 2578, 2591, - 2592, 2581, 2582, 2593, 2595, 2598, 2585, 2593, 2596, 2588, + 0, 2532, 2545, 2545, 2536, 2535, 2547, 2547, 2538, 2537, + 2540, 2548, 2550, 2543, 2542, 2544, 2551, 2551, 2549, 2553, + 2555, 2550, 2554, 2554, 2556, 2548, 2557, 2559, 2553, 2558, + 2560, 2561, 2562, 2557, 2563, 2563, 2564, 2564, 2555, 2565, + 2566, 2573, 2556, 2567, 2558, 2559, 2571, 2561, 2560, 2567, + 2570, 2562, 2568, 2568, 2569, 2569, 2570, 2572, 2566, 2565, + 2573, 2574, 2575, 2576, 2571, 2577, 2578, 2575, 2579, 2584, + 2579, 2578, 2572, 2580, 2580, 2574, 2581, 2586, 2581, 2582, + 2582, 2587, 2588, 2576, 2589, 2577, 2586, 2590, 2584, 2592, + 2591, 2593, 2590, 2596, 2588, 2591, 2597, 2598, 2598, 2597, - 2591, 2600, 2596, 2589, 2601, 2592, 2597, 2597, 2598, 2595, - 2602, 2603, 2603, 2605, 2606, 2607, 2600, 2608, 2608, 2607, - 2609, 2610, 2610, 2606, 2601, 2605, 2611, 2612, 2613, 2614, - 2602, 2611, 2615, 2616, 2616, 2622, 2612, 2621, 2621, 2609, - 2624, 2614, 2623, 2623, 2613, 2625, 2626, 2627, 2628, 2628, - 2629, 2630, 2615, 2624, 0, 2626, 2627, 2622, 2625, 2632, - 2632, 2637, 2635, 2636, 2638, 2639, 2630, 2635, 2636, 2638, - 2629, 2640, 2641, 2639, 2642, 2637, 2644, 2647, 2645, 2646, - 2651, 2641, 2642, 2645, 2646, 2648, 2648, 2649, 2649, 2650, - 2640, 2644, 2647, 2653, 2650, 2652, 2652, 2654, 2655, 2651, + 2587, 2599, 2600, 2602, 2589, 2601, 2601, 2603, 2604, 2592, + 2593, 2606, 2604, 2596, 2602, 2607, 2599, 2608, 2608, 2607, + 2600, 2609, 2603, 2611, 2612, 2613, 2606, 2614, 2614, 2616, + 2617, 2618, 2619, 2619, 2609, 2618, 2620, 2624, 2611, 2617, + 2623, 2616, 2621, 2621, 2612, 2613, 2622, 2625, 2626, 2623, + 2633, 2622, 2635, 2624, 2636, 2620, 2627, 2627, 0, 2625, + 2632, 2632, 2634, 2634, 2637, 2635, 2638, 2636, 2626, 2639, + 2640, 2640, 2633, 2637, 2641, 2638, 2642, 2647, 2639, 2644, + 2644, 2648, 2647, 2649, 2650, 2651, 2648, 2652, 2654, 2650, + 2653, 2642, 2656, 2651, 2641, 2657, 2654, 2649, 2658, 2653, - 2653, 2656, 2654, 2657, 0, 2658, 2659, 2659, 2660, 2657, - 2658, 2666, 2661, 2662, 2662, 2668, 2655, 2661, 2668, 2656, - 2663, 2663, 2669, 2660, 2666, 2667, 2667, 2669, 2669, 2670, - 2671, 2672, 2673, 2674, 2670, 2671, 2675, 2674, 2673, 2676, - 2677, 2675, 2678, 2679, 2682, 2672, 2680, 2681, 2676, 2682, - 2678, 2683, 2680, 2681, 2685, 2677, 2687, 2686, 2689, 2687, - 2691, 2685, 2686, 2683, 2679, 2691, 2692, 2693, 2694, 2695, - 2689, 2692, 2701, 2696, 2697, 2697, 2706, 2698, 2695, 2707, - 0, 2694, 2696, 2702, 2708, 2693, 2698, 2703, 2711, 2702, - 2701, 2709, 2709, 2703, 2710, 2706, 2712, 2713, 2715, 2707, + 2657, 2659, 2663, 2658, 2660, 2660, 2652, 2656, 2661, 2661, + 2662, 2664, 2664, 2665, 2666, 2662, 2659, 2667, 2668, 2666, + 2665, 2663, 2669, 2672, 2670, 2671, 2671, 2673, 2669, 2670, + 2674, 2674, 2673, 2675, 2675, 2667, 2668, 2678, 2672, 2679, + 2679, 2680, 2681, 2684, 2680, 2689, 2682, 2681, 2681, 2683, + 2678, 2682, 2685, 2688, 2683, 2686, 2687, 2684, 2685, 2686, + 2689, 2687, 2688, 2690, 2691, 2694, 2692, 2693, 2695, 2697, + 2694, 2690, 2692, 2693, 2698, 2699, 2697, 2701, 2699, 2698, + 2695, 2703, 2704, 2705, 2706, 2691, 2703, 2704, 2713, 2701, + 2707, 2708, 2709, 2709, 2710, 2718, 2714, 2706, 2715, 2707, - 2717, 2710, 2719, 2708, 2722, 2712, 2720, 2711, 2714, 2714, - 2720, 0, 2713, 2721, 2721, 2717, 2725, 2715, 2723, 2724, - 2726, 0, 2719, 2728, 2723, 2724, 2726, 2727, 2727, 2722, - 2729, 2728, 2731, 2732, 2725, 2729, 2734, 2735, 2737, 2736, - 2735, 2731, 2734, 2736, 2738, 2741, 2732, 2740, 2740, 2742, - 2742, 2751, 2737, 2743, 2743, 2745, 2745, 2746, 2753, 2738, - 2747, 2746, 2757, 2741, 2752, 2747, 2749, 2749, 2754, 2752, - 2753, 2751, 2755, 2754, 2754, 2758, 2758, 2760, 2760, 2761, - 2761, 2763, 2757, 2762, 2755, 2766, 2762, 2765, 2765, 2768, - 2769, 2769, 2770, 2770, 2763, 2771, 2771, 2772, 2773, 2773, + 2708, 2705, 2714, 2710, 2715, 2719, 2713, 2720, 2721, 2721, + 2722, 2723, 2724, 2725, 2718, 2726, 2726, 2722, 2727, 2729, + 2731, 2724, 2734, 2732, 2737, 2719, 2720, 2732, 2725, 2735, + 2723, 2733, 2733, 2736, 2729, 2735, 0, 2727, 2738, 2736, + 2731, 2740, 2737, 2741, 2738, 2739, 2739, 2734, 2741, 2740, + 2743, 2744, 2746, 2747, 2749, 2750, 2747, 2748, 2746, 2743, + 2753, 2748, 2752, 2752, 2744, 2754, 2754, 2763, 2749, 0, + 2750, 2755, 2755, 2757, 2757, 2758, 2759, 2765, 2753, 2758, + 2764, 2759, 2761, 2761, 2767, 2764, 2766, 2763, 2769, 2765, + 2775, 2766, 2766, 2770, 2770, 2779, 2767, 2772, 2772, 2773, - 2774, 2775, 2776, 2766, 2777, 2778, 2778, 2779, 2782, 2768, - 2777, 2779, 2772, 2774, 2782, 2783, 2776, 2785, 2786, 2775, - 2783, 2789, 2785, 2785, 2787, 2788, 2790, 2789, 2791, 2792, - 2793, 2793, 2790, 2792, 2796, 2798, 2801, 2799, 2804, 2796, - 2799, 2786, 2806, 2798, 2787, 2788, 2802, 2803, 2803, 2802, - 2807, 2808, 2805, 2791, 2810, 2804, 2804, 2805, 2809, 2809, - 2806, 2801, 2812, 2811, 2813, 2808, 2811, 2814, 2810, 2817, - 2807, 2826, 2815, 0, 2811, 2814, 2812, 2815, 2815, 2816, - 2818, 2818, 2823, 2813, 2816, 2816, 2819, 2819, 2817, 2820, - 2820, 2821, 2821, 2822, 2822, 2824, 2825, 2826, 2823, 2827, + 2773, 2774, 2776, 2775, 2774, 2778, 2778, 2781, 2769, 2782, + 2782, 2783, 2783, 2779, 2785, 2776, 2784, 2784, 2786, 2786, + 2787, 2788, 2789, 2799, 2790, 2791, 2791, 2781, 2792, 2785, + 2790, 2795, 2792, 2787, 2800, 2796, 2789, 2795, 2798, 2788, + 2796, 2801, 2802, 2798, 2798, 2803, 2799, 2804, 2802, 2805, + 2811, 2803, 2809, 2805, 2800, 2806, 2806, 2809, 2811, 2812, + 2814, 2801, 2812, 2815, 2816, 2816, 2815, 2821, 2818, 2817, + 2819, 2820, 2804, 2818, 2822, 2822, 2823, 2826, 2828, 2825, + 2830, 2821, 2869, 2828, 2828, 2814, 2817, 2817, 2819, 2824, + 2823, 2820, 2824, 2825, 2827, 2839, 2826, 2869, 2829, 2830, - 2824, 2828, 2829, 2830, 2827, 2831, 2832, 2829, 2834, 2834, - 2835, 2835, 2830, 2837, 2836, 2840, 2825, 2836, 2839, 2839, - 2828, 2845, 2840, 2841, 2841, 2831, 2832, 2842, 2844, 2844, - 2845, 2837, 2842, 2846, 2847, 2848, 2850, 2851, 2851, 2853, - 2854, 2852, 2846, 2847, 2848, 2852, 2855, 2856, 2853, 2859, - 2857, 2858, 2865, 2865, 2850, 2857, 2857, 2855, 2859, 2854, - 2868, 2860, 2856, 2864, 2858, 2860, 2867, 2867, 2864, 2869, - 2870, 2872, 2872, 2873, 2868, 2874, 2877, 2878, 2880, 2881, - 2883, 2885, 2873, 0, 2887, 2881, 2878, 2874, 2870, 2887, - 2888, 2890, 2883, 2893, 2869, 2888, 2889, 2889, 2880, 2892, + 2824, 2836, 2827, 2829, 2829, 2831, 2831, 2832, 2832, 2833, + 2833, 2834, 2834, 2835, 2835, 2837, 2838, 2836, 2840, 2841, + 2837, 2839, 2842, 2840, 2843, 2844, 2845, 2842, 2847, 2847, + 2848, 2848, 2849, 2843, 2850, 2849, 2838, 2853, 2841, 2852, + 2852, 2854, 2854, 2855, 2853, 2844, 2845, 2858, 2855, 2857, + 2857, 2859, 2850, 2860, 2861, 2863, 2858, 2864, 2864, 2866, + 2859, 2865, 2860, 2861, 2867, 2865, 2868, 2871, 2866, 2870, + 2872, 2882, 2873, 2863, 2870, 2870, 2873, 2868, 2881, 2872, + 2871, 2877, 2883, 2867, 2878, 2878, 2877, 2880, 2880, 2885, + 2885, 2887, 2881, 2886, 2890, 2894, 2882, 2892, 2897, 2891, - 2890, 2877, 2885, 2894, 2892, 2902, 2893, 2895, 2895, 2897, - 2897, 2895, 2898, 2898, 2899, 2899, 2900, 2894, 2901, 2908, - 2908, 2903, 2905, 2909, 2902, 2900, 2903, 2906, 2905, 2907, - 2910, 2911, 2906, 2913, 2907, 2912, 2915, 2914, 2901, 2922, - 2912, 2909, 2910, 2914, 2916, 2916, 2918, 2923, 2919, 2920, - 2918, 2913, 2911, 2919, 2920, 2921, 2921, 2924, 2922, 2926, - 2930, 2915, 2923, 2928, 2928, 2931, 2932, 2933, 2934, 2935, - 2932, 2940, 2924, 2930, 2936, 2937, 2933, 2941, 2931, 2926, - 2937, 2939, 2936, 2943, 2934, 2938, 2938, 2949, 2935, 2940, - 2939, 2942, 2942, 2946, 2946, 2947, 2947, 2951, 2951, 2953, + 2883, 2895, 2886, 2887, 2891, 2899, 2892, 2895, 2901, 2902, + 2897, 2903, 2903, 2901, 2902, 2894, 2904, 2906, 2907, 2890, + 2908, 2914, 2906, 2909, 2909, 2904, 2899, 2909, 2911, 2911, + 2914, 2907, 2912, 2912, 2908, 2913, 2913, 2915, 2917, 2916, + 2919, 2923, 2920, 2917, 2921, 2925, 2919, 2920, 2924, 2921, + 2922, 2922, 2927, 2929, 2930, 2930, 2926, 2915, 2916, 2923, + 2924, 2926, 2928, 2932, 2933, 2936, 2925, 2932, 2928, 2933, + 2927, 2934, 2935, 2935, 2937, 2938, 2934, 2940, 2929, 2942, + 2942, 2944, 2945, 2946, 2936, 2948, 2949, 2946, 2950, 2937, + 2938, 2947, 2954, 2951, 2944, 2945, 2950, 2940, 2951, 2953, - 2954, 2955, 2943, 2941, 2956, 2957, 2955, 2960, 2949, 2961, - 2957, 2959, 2959, 2962, 2963, 2953, 2954, 2964, 2961, 2962, - 2956, 2966, 2966, 2968, 2967, 2969, 2969, 2960, 2972, 2973, - 2976, 2977, 2977, 2979, 2974, 2973, 2964, 2963, 2967, 2974, - 2978, 2978, 2968, 2980, 2980, 2981, 2982, 2983, 2972, 2985, - 2986, 2984, 2976, 2979, 2987, 2982, 2981, 2984, 2988, 2988, - 2989, 2990, 2986, 2980, 2990, 2996, 2991, 2983, 2985, 2991, - 2992, 2992, 2997, 2998, 2987, 2989, 3002, 2996, 3001, 2998, - 2999, 2999, 3000, 3004, 3001, 3000, 3005, 3005, 3004, 3007, - 3006, 3008, 2997, 3009, 3002, 3006, 3013, 3008, 3010, 3010, + 2947, 2948, 2952, 2952, 2955, 2949, 2956, 2956, 2953, 2957, + 2954, 2960, 2960, 2961, 2961, 2963, 2965, 2965, 2967, 2968, + 2969, 2970, 2971, 2973, 2973, 2969, 2974, 2971, 2957, 2975, + 2955, 2977, 2978, 2976, 2967, 2968, 2963, 2970, 2975, 2976, + 2980, 2980, 2981, 2982, 2983, 2983, 2974, 2986, 2988, 2987, + 2990, 2978, 3000, 2988, 2977, 2987, 2981, 2991, 2991, 2992, + 2992, 2993, 2982, 2994, 2995, 2995, 2996, 2986, 2998, 2997, + 3001, 3000, 2990, 2999, 3002, 3004, 2993, 2996, 2997, 2999, + 3003, 3003, 3001, 2994, 2995, 3012, 3005, 3011, 2998, 3005, + 3004, 3017, 3006, 0, 3002, 3006, 3007, 3007, 3013, 3011, - 3012, 3014, 3015, 3016, 3016, 3017, 3018, 3019, 3007, 0, - 3009, 3009, 3012, 3024, 3013, 3015, 3019, 3021, 3021, 3022, - 3022, 3030, 3018, 3023, 3017, 3025, 3014, 3024, 3023, 3029, - 3025, 3026, 3026, 3027, 3027, 3028, 3028, 3031, 3037, 3032, - 3034, 3034, 3029, 3031, 3032, 3039, 3040, 3030, 3042, 3046, - 3041, 3043, 3043, 3045, 3045, 3047, 3049, 3037, 3048, 3051, - 3051, 3055, 3050, 3052, 3052, 3056, 3064, 3039, 3040, 3041, - 3042, 3050, 3048, 3054, 3047, 3046, 3049, 3057, 3063, 3054, - 3064, 3055, 3057, 3063, 3056, 3060, 3060, 3062, 3062, 3065, - 3066, 3067, 3068, 3068, 3071, 3065, 3069, 3073, 3071, 3067, + 3014, 3014, 3016, 3015, 3013, 3012, 3015, 3019, 3016, 3017, + 3020, 3020, 3019, 3021, 3022, 3023, 3027, 3024, 3021, 3025, + 3025, 3023, 3028, 3029, 3030, 3031, 3031, 3032, 3027, 3033, + 3034, 3036, 3036, 3022, 3024, 3024, 3039, 3030, 3038, 3034, + 3028, 3037, 3037, 3038, 3040, 3033, 3032, 3044, 3029, 3040, + 3039, 3041, 3041, 3042, 3042, 3043, 3043, 3045, 3046, 3052, + 3044, 3047, 3049, 3049, 3046, 3054, 3047, 3055, 3057, 3056, + 3058, 3058, 3060, 3060, 3061, 3062, 3064, 3063, 3052, 3066, + 3066, 3067, 3067, 3045, 3065, 3070, 3069, 3054, 3056, 3055, + 3057, 3063, 3069, 3065, 3062, 3071, 3064, 3072, 3075, 3082, - 3072, 3069, 3066, 3074, 3075, 3072, 3076, 3077, 3079, 3075, - 3080, 3081, 3082, 3077, 3085, 3084, 3079, 3073, 3076, 3086, - 3087, 3088, 3090, 3074, 3091, 3095, 3088, 3090, 3092, 3080, - 3085, 3081, 3082, 3084, 3092, 3093, 3086, 3086, 3097, 3096, - 3093, 3087, 3096, 3108, 3091, 3095, 3100, 3100, 3101, 3101, - 3102, 3097, 3106, 3106, 3102, 3107, 3109, 3109, 3111, 3111, - 3107, 3116, 3108, 3112, 3112, 3116, 3112, 3113, 3113, 3119, - 3113, 3114, 3114, 3115, 3115, 3118, 3115, 3121, 3119, 3122, - 3118, 3120, 3120, 3125, 3126, 3127, 3128, 3128, 3131, 3132, - 3127, 3134, 3135, 3122, 3133, 3121, 3132, 3137, 3133, 3144, + 3061, 3080, 3072, 3076, 3076, 3070, 3078, 3078, 3079, 3083, + 3081, 3082, 3089, 3079, 3071, 3080, 3081, 3083, 3085, 3075, + 3084, 3084, 3087, 3085, 3088, 3090, 3087, 3092, 3091, 3088, + 3093, 3096, 3089, 3091, 3095, 3097, 3093, 3098, 3100, 3092, + 3107, 0, 3095, 3101, 3102, 3090, 3103, 3104, 3106, 3109, + 3096, 3111, 3104, 3106, 3109, 3097, 3100, 3098, 3108, 3101, + 3107, 3102, 3102, 3112, 3108, 3113, 3112, 3103, 3116, 3116, + 3118, 3111, 3117, 3117, 3118, 3122, 3122, 3123, 3113, 3124, + 3125, 3125, 3123, 3127, 3127, 3128, 3128, 3132, 3128, 3129, + 3129, 3132, 3129, 3130, 3130, 3134, 3131, 3131, 3124, 3131, - 3134, 3138, 3140, 3125, 3126, 3145, 3138, 3135, 3139, 3139, - 3145, 3140, 3149, 3131, 3144, 3137, 3141, 3141, 3142, 3142, - 3143, 3143, 3146, 3147, 3148, 3150, 3151, 3152, 3147, 3147, - 3148, 3146, 3152, 3153, 3146, 3154, 3184, 3149, 3153, 3156, - 3150, 3155, 3155, 3157, 3160, 3156, 0, 3151, 3184, 3157, - 3158, 3158, 3159, 3159, 3154, 3161, 3164, 3164, 3167, 3160, - 3161, 3166, 3166, 3170, 3170, 3171, 3171, 3167, 3172, 3172, - 3173, 3173, 3175, 3175, 3176, 3176, 3177, 3177, 3178, 3178, - 3179, 3181, 3182, 3182, 3183, 3185, 3188, 3188, 3187, 3189, - 3181, 3191, 3199, 3183, 3195, 3190, 3192, 3192, 3193, 3193, + 3134, 3135, 3136, 3136, 3137, 3138, 3141, 3142, 3143, 3145, + 3135, 3144, 3144, 3143, 3148, 3151, 3149, 3150, 3152, 3138, + 3154, 3150, 3137, 3149, 3151, 3155, 3141, 3142, 3157, 3145, + 3155, 3156, 3156, 3152, 3158, 3158, 3161, 3157, 3154, 3148, + 3159, 3159, 3160, 3160, 3162, 3163, 3166, 3164, 3167, 3162, + 3165, 3161, 3164, 3164, 3163, 3168, 3165, 3163, 3171, 3169, + 3170, 3172, 3172, 3167, 3169, 3170, 3173, 3174, 3175, 3175, + 3177, 3166, 3173, 3174, 3176, 3176, 3168, 3171, 3178, 3181, + 3181, 3183, 3183, 3178, 3184, 3177, 3187, 3187, 3188, 3188, + 3189, 3189, 3196, 3184, 3190, 3190, 3192, 3192, 3193, 3193, - 3196, 3196, 3201, 3191, 3189, 3185, 3179, 3187, 3190, 3195, - 3199, 3200, 3202, 3202, 3200, 3203, 3205, 3206, 3207, 3205, - 3208, 3209, 3211, 3206, 3210, 3208, 3217, 3214, 3201, 3213, - 3217, 3218, 3207, 3203, 3221, 3213, 3214, 3233, 3211, 3230, - 3209, 3238, 3210, 3240, 3230, 3231, 3218, 3240, 3231, 3239, - 3233, 3234, 3234, 3235, 3235, 3236, 3236, 3241, 3239, 3243, - 3221, 3245, 3247, 3246, 3238, 3249, 3248, 3247, 3248, 3250, - 3250, 3252, 3251, 3243, 3246, 3253, 3254, 3241, 3255, 3256, - 3249, 3259, 3257, 3258, 3245, 3251, 3259, 3260, 3262, 3262, - 3252, 3257, 3254, 3253, 3256, 3258, 3261, 3263, 3268, 3264, + 3194, 3194, 3195, 3195, 3198, 3199, 3199, 3200, 3201, 3202, + 3204, 3204, 3205, 3198, 3206, 3206, 3200, 3207, 3196, 3219, + 3201, 3208, 3213, 3209, 3210, 3210, 3211, 3211, 3217, 3202, + 3218, 3205, 3207, 3218, 3208, 3209, 3221, 3213, 3214, 3214, + 3220, 3220, 3224, 3225, 3223, 3219, 3217, 3223, 3224, 3227, + 3226, 3228, 3231, 3232, 3221, 3226, 3229, 3225, 3231, 3235, + 3236, 3239, 3232, 3235, 3249, 3248, 3251, 3249, 3227, 3228, + 3248, 3257, 3229, 3252, 3252, 3236, 3253, 3253, 3260, 3251, + 3255, 3255, 3258, 3262, 3259, 3264, 3271, 3239, 3259, 3265, + 3266, 3258, 3268, 3270, 3257, 3266, 3272, 3262, 3260, 3267, - 3269, 3261, 3271, 3255, 3264, 3270, 3270, 3276, 3260, 3272, - 3272, 3271, 3268, 3273, 3273, 3274, 3274, 3263, 3275, 3275, - 3269, 3277, 3278, 3279, 3280, 3278, 3276, 3281, 3279, 3280, - 3282, 3283, 3284, 3286, 3288, 3285, 3292, 3283, 3286, 3287, - 3287, 3277, 3289, 3289, 3293, 3282, 3284, 3285, 3291, 3291, - 3296, 3292, 3281, 3298, 3288, 3294, 3294, 3301, 3301, 3302, - 3302, 3303, 3304, 3293, 3305, 3296, 3306, 3308, 3307, 3303, - 3305, 3298, 3306, 3309, 3310, 3311, 3311, 3313, 3313, 3310, - 3308, 3304, 3307, 3316, 3319, 3317, 3320, 3322, 3323, 3324, - 3320, 3333, 3309, 3323, 3327, 3328, 3325, 3326, 3319, 3334, + 3265, 3267, 3269, 3269, 3273, 3271, 3270, 3268, 3264, 3274, + 3275, 3277, 3276, 3278, 3272, 3279, 3287, 3280, 3278, 3282, + 3273, 3276, 3280, 3277, 3283, 3275, 3281, 3281, 3288, 3283, + 3287, 3289, 3289, 3290, 3274, 3295, 3279, 3291, 3291, 3282, + 3292, 3292, 3290, 3293, 3293, 3294, 3294, 3296, 3288, 3297, + 3298, 3299, 3297, 3300, 3295, 3298, 3299, 3301, 3302, 3303, + 3305, 3307, 3304, 3312, 3302, 3305, 3317, 3296, 3306, 3306, + 3308, 3308, 3301, 3303, 3304, 3310, 3310, 3311, 3300, 3313, + 3313, 3307, 3312, 3315, 3317, 3320, 3320, 3321, 3321, 3322, + 3323, 3326, 3311, 3324, 3325, 3327, 3328, 3322, 3315, 3324, - 3328, 3329, 3330, 3330, 3316, 3317, 3329, 3322, 3324, 3325, - 3326, 3333, 3335, 3327, 3336, 3336, 3337, 3334, 3338, 3339, - 3339, 3337, 3340, 3341, 3338, 3342, 3343, 3340, 3341, 3344, - 3342, 3335, 3346, 3346, 3347, 3344, 3348, 3348, 3350, 3347, - 3351, 3352, 3350, 3353, 3354, 3343, 3355, 3356, 3352, 3359, - 3359, 3357, 3355, 3361, 3361, 3363, 3362, 3364, 3365, 3351, - 3363, 3366, 3353, 3354, 3357, 3362, 3356, 3368, 3362, 3367, - 3367, 3369, 3368, 3371, 3366, 3373, 3364, 3365, 3372, 3372, - 3374, 3374, 3375, 3375, 3369, 3376, 3377, 3378, 3379, 3379, - 3376, 3380, 3385, 3377, 3373, 3381, 3380, 3381, 3383, 3371, + 3325, 3329, 3330, 3330, 3335, 3326, 3329, 3336, 3327, 3323, + 3332, 3332, 3338, 3339, 3341, 3328, 3342, 3339, 3343, 3344, + 3345, 3342, 3346, 3347, 3348, 3335, 3338, 3336, 3347, 3348, + 3349, 3349, 3344, 3345, 3341, 3352, 3353, 3343, 3354, 3355, + 3355, 3346, 3356, 3357, 3358, 3358, 3359, 3356, 3360, 3357, + 3362, 3359, 3363, 3360, 3353, 3352, 3361, 3354, 3363, 3365, + 3365, 3361, 3366, 3367, 3367, 3370, 3369, 3366, 3371, 3362, + 3369, 3372, 3373, 3374, 3375, 3371, 3376, 3378, 3378, 3374, + 3380, 3380, 3382, 3381, 3370, 3383, 3384, 3382, 3385, 3376, + 3372, 3373, 3381, 3375, 3387, 3381, 3386, 3386, 3388, 3387, - 3382, 3382, 3384, 3386, 3387, 3383, 3378, 3390, 3386, 3384, - 3392, 3385, 3389, 3389, 3393, 3392, 3394, 3395, 3399, 3393, - 3396, 3396, 3400, 3387, 3398, 3398, 3390, 3401, 3401, 3402, - 3402, 3403, 3405, 3405, 3413, 3394, 3395, 3399, 3403, 3406, - 3406, 3400, 3407, 3409, 3414, 3412, 3415, 3415, 3409, 3407, - 3412, 3416, 3416, 3413, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3414, 3420, 3420, 3420, 3420, 3420, 3420, - 3420, 3421, 3421, 3421, 3421, 3421, 3421, 3421, 3422, 3422, - 3422, 3422, 3422, 3422, 3422, 3423, 3423, 3423, 3423, 3423, - 3423, 3423, 3424, 3424, 3424, 3424, 3424, 3424, 3424, 3425, + 3390, 3385, 3391, 3391, 3383, 3384, 3392, 3393, 3393, 3394, + 3394, 3388, 3395, 3396, 3397, 3398, 3398, 3395, 3399, 3400, + 3396, 3400, 3402, 3399, 3403, 3392, 3390, 3401, 3401, 3402, + 3404, 3403, 3405, 3397, 3406, 3408, 3408, 3405, 3409, 3411, + 3412, 3413, 3414, 3418, 3411, 3412, 3415, 3415, 3419, 3404, + 3417, 3417, 0, 3406, 3420, 3420, 3422, 3409, 3421, 3421, + 3413, 3414, 3418, 3422, 3424, 3424, 3426, 3419, 3425, 3425, + 3428, 3431, 3432, 3426, 3433, 3428, 3431, 3434, 3434, 3435, + 3435, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3432, 0, 3433, 3439, 3439, 3439, 3439, 3439, 3439, - 3425, 3425, 3425, 3425, 3425, 3425, 3426, 3426, 3426, 3426, - 3426, 3426, 3426, 3428, 3428, 0, 3428, 3428, 3428, 3428, - 3429, 3429, 0, 0, 0, 3429, 3429, 3430, 3430, 0, - 0, 3430, 0, 3430, 3431, 0, 0, 0, 0, 0, - 3431, 3432, 3432, 0, 0, 0, 3432, 3432, 3433, 0, - 0, 0, 0, 0, 3433, 3434, 3434, 0, 3434, 3434, - 3434, 3434, 3435, 0, 0, 0, 0, 0, 3435, 3436, - 3436, 0, 0, 0, 3436, 3436, 3437, 3437, 0, 3437, - 3437, 3437, 3437, 3419, 3419, 3419, 3419, 3419, 3419, 3419, - 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, + 3439, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3441, 3441, + 3441, 3441, 3441, 3441, 3441, 3442, 3442, 3442, 3442, 3442, + 3442, 3442, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3444, + 3444, 3444, 3444, 3444, 3444, 3444, 3445, 3445, 3445, 3445, + 3445, 3445, 3445, 3447, 3447, 0, 3447, 3447, 3447, 3447, + 3448, 3448, 0, 0, 0, 3448, 3448, 3449, 3449, 0, + 0, 3449, 0, 3449, 3450, 0, 0, 0, 0, 0, + 3450, 3451, 3451, 0, 0, 0, 3451, 3451, 3452, 0, + 0, 0, 0, 0, 3452, 3453, 3453, 0, 3453, 3453, + 3453, 3453, 3454, 0, 0, 0, 0, 0, 3454, 3455, - 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, - 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, - 3419, 3419, 3419, 3419 + 3455, 0, 0, 0, 3455, 3455, 3456, 3456, 0, 3456, + 3456, 3456, 3456, 3438, 3438, 3438, 3438, 3438, 3438, 3438, + 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, + 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, + 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, + 3438, 3438, 3438, 3438 } ; static yy_state_type yy_last_accepting_state; @@ -3238,7 +3250,7 @@ static void config_end_include(void) } #endif -#line 3239 "" +#line 3251 "" #define YY_NO_INPUT 1 #line 191 "./util/configlexer.lex" #ifndef YY_NO_UNPUT @@ -3247,9 +3259,9 @@ static void config_end_include(void) #ifndef YY_NO_INPUT #define YY_NO_INPUT 1 #endif -#line 3248 "" +#line 3260 "" -#line 3250 "" +#line 3262 "" #define INITIAL 0 #define quotedstring 1 @@ -3473,7 +3485,7 @@ YY_DECL { #line 211 "./util/configlexer.lex" -#line 3474 "" +#line 3486 "" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -3506,13 +3518,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 >= 3420 ) + if ( yy_current_state >= 3439 ) 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] != 6684 ); + while ( yy_base[yy_current_state] != 6714 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -3667,17 +3679,17 @@ YY_RULE_SETUP case 26: YY_RULE_SETUP #line 240 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDNS_TCP_KEEPALIVE) } +{ YDVAR(1, VAR_TCP_AUTH_QUERY_TIMEOUT) } YY_BREAK case 27: YY_RULE_SETUP #line 241 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDNS_TCP_KEEPALIVE_TIMEOUT) } +{ YDVAR(1, VAR_EDNS_TCP_KEEPALIVE) } YY_BREAK case 28: YY_RULE_SETUP #line 242 "./util/configlexer.lex" -{ YDVAR(1, VAR_SSL_UPSTREAM) } +{ YDVAR(1, VAR_EDNS_TCP_KEEPALIVE_TIMEOUT) } YY_BREAK case 29: YY_RULE_SETUP @@ -3687,7 +3699,7 @@ YY_RULE_SETUP case 30: YY_RULE_SETUP #line 244 "./util/configlexer.lex" -{ YDVAR(1, VAR_SSL_SERVICE_KEY) } +{ YDVAR(1, VAR_SSL_UPSTREAM) } YY_BREAK case 31: YY_RULE_SETUP @@ -3697,7 +3709,7 @@ YY_RULE_SETUP case 32: YY_RULE_SETUP #line 246 "./util/configlexer.lex" -{ YDVAR(1, VAR_SSL_SERVICE_PEM) } +{ YDVAR(1, VAR_SSL_SERVICE_KEY) } YY_BREAK case 33: YY_RULE_SETUP @@ -3707,7 +3719,7 @@ YY_RULE_SETUP case 34: YY_RULE_SETUP #line 248 "./util/configlexer.lex" -{ YDVAR(1, VAR_SSL_PORT) } +{ YDVAR(1, VAR_SSL_SERVICE_PEM) } YY_BREAK case 35: YY_RULE_SETUP @@ -3717,7 +3729,7 @@ YY_RULE_SETUP case 36: YY_RULE_SETUP #line 250 "./util/configlexer.lex" -{ YDVAR(1, VAR_TLS_CERT_BUNDLE) } +{ YDVAR(1, VAR_SSL_PORT) } YY_BREAK case 37: YY_RULE_SETUP @@ -3727,12 +3739,12 @@ YY_RULE_SETUP case 38: YY_RULE_SETUP #line 252 "./util/configlexer.lex" -{ YDVAR(1, VAR_TLS_WIN_CERT) } +{ YDVAR(1, VAR_TLS_CERT_BUNDLE) } YY_BREAK case 39: YY_RULE_SETUP #line 253 "./util/configlexer.lex" -{ YDVAR(1, VAR_TLS_ADDITIONAL_PORT) } +{ YDVAR(1, VAR_TLS_WIN_CERT) } YY_BREAK case 40: YY_RULE_SETUP @@ -3752,72 +3764,72 @@ YY_RULE_SETUP case 43: YY_RULE_SETUP #line 257 "./util/configlexer.lex" -{ YDVAR(1, VAR_TLS_SESSION_TICKET_KEYS) } +{ YDVAR(1, VAR_TLS_ADDITIONAL_PORT) } YY_BREAK case 44: YY_RULE_SETUP #line 258 "./util/configlexer.lex" -{ YDVAR(1, VAR_TLS_CIPHERS) } +{ YDVAR(1, VAR_TLS_SESSION_TICKET_KEYS) } YY_BREAK case 45: YY_RULE_SETUP #line 259 "./util/configlexer.lex" -{ YDVAR(1, VAR_TLS_CIPHERSUITES) } +{ YDVAR(1, VAR_TLS_CIPHERS) } YY_BREAK case 46: YY_RULE_SETUP #line 260 "./util/configlexer.lex" -{ YDVAR(1, VAR_TLS_USE_SNI) } +{ YDVAR(1, VAR_TLS_CIPHERSUITES) } YY_BREAK case 47: YY_RULE_SETUP #line 261 "./util/configlexer.lex" -{ YDVAR(1, VAR_HTTPS_PORT) } +{ YDVAR(1, VAR_TLS_USE_SNI) } YY_BREAK case 48: YY_RULE_SETUP #line 262 "./util/configlexer.lex" -{ YDVAR(1, VAR_HTTP_ENDPOINT) } +{ YDVAR(1, VAR_HTTPS_PORT) } YY_BREAK case 49: YY_RULE_SETUP #line 263 "./util/configlexer.lex" -{ YDVAR(1, VAR_HTTP_MAX_STREAMS) } +{ YDVAR(1, VAR_HTTP_ENDPOINT) } YY_BREAK case 50: YY_RULE_SETUP #line 264 "./util/configlexer.lex" -{ YDVAR(1, VAR_HTTP_QUERY_BUFFER_SIZE) } +{ YDVAR(1, VAR_HTTP_MAX_STREAMS) } YY_BREAK case 51: YY_RULE_SETUP #line 265 "./util/configlexer.lex" -{ YDVAR(1, VAR_HTTP_RESPONSE_BUFFER_SIZE) } +{ YDVAR(1, VAR_HTTP_QUERY_BUFFER_SIZE) } YY_BREAK case 52: YY_RULE_SETUP #line 266 "./util/configlexer.lex" -{ YDVAR(1, VAR_HTTP_NODELAY) } +{ YDVAR(1, VAR_HTTP_RESPONSE_BUFFER_SIZE) } YY_BREAK case 53: YY_RULE_SETUP #line 267 "./util/configlexer.lex" -{ YDVAR(1, VAR_HTTP_NOTLS_DOWNSTREAM) } +{ YDVAR(1, VAR_HTTP_NODELAY) } YY_BREAK case 54: YY_RULE_SETUP #line 268 "./util/configlexer.lex" -{ YDVAR(1, VAR_USE_SYSTEMD) } +{ YDVAR(1, VAR_HTTP_NOTLS_DOWNSTREAM) } YY_BREAK case 55: YY_RULE_SETUP #line 269 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_DAEMONIZE) } +{ YDVAR(1, VAR_USE_SYSTEMD) } YY_BREAK case 56: YY_RULE_SETUP #line 270 "./util/configlexer.lex" -{ YDVAR(1, VAR_INTERFACE) } +{ YDVAR(1, VAR_DO_DAEMONIZE) } YY_BREAK case 57: YY_RULE_SETUP @@ -3827,227 +3839,227 @@ YY_RULE_SETUP case 58: YY_RULE_SETUP #line 272 "./util/configlexer.lex" -{ YDVAR(1, VAR_OUTGOING_INTERFACE) } +{ YDVAR(1, VAR_INTERFACE) } YY_BREAK case 59: YY_RULE_SETUP #line 273 "./util/configlexer.lex" -{ YDVAR(1, VAR_INTERFACE_AUTOMATIC) } +{ YDVAR(1, VAR_OUTGOING_INTERFACE) } YY_BREAK case 60: YY_RULE_SETUP #line 274 "./util/configlexer.lex" -{ YDVAR(1, VAR_SO_RCVBUF) } +{ YDVAR(1, VAR_INTERFACE_AUTOMATIC) } YY_BREAK case 61: YY_RULE_SETUP #line 275 "./util/configlexer.lex" -{ YDVAR(1, VAR_SO_SNDBUF) } +{ YDVAR(1, VAR_SO_RCVBUF) } YY_BREAK case 62: YY_RULE_SETUP #line 276 "./util/configlexer.lex" -{ YDVAR(1, VAR_SO_REUSEPORT) } +{ YDVAR(1, VAR_SO_SNDBUF) } YY_BREAK case 63: YY_RULE_SETUP #line 277 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_TRANSPARENT) } +{ YDVAR(1, VAR_SO_REUSEPORT) } YY_BREAK case 64: YY_RULE_SETUP #line 278 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_FREEBIND) } +{ YDVAR(1, VAR_IP_TRANSPARENT) } YY_BREAK case 65: YY_RULE_SETUP #line 279 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_DSCP) } +{ YDVAR(1, VAR_IP_FREEBIND) } YY_BREAK case 66: YY_RULE_SETUP #line 280 "./util/configlexer.lex" -{ YDVAR(1, VAR_CHROOT) } +{ YDVAR(1, VAR_IP_DSCP) } YY_BREAK case 67: YY_RULE_SETUP #line 281 "./util/configlexer.lex" -{ YDVAR(1, VAR_USERNAME) } +{ YDVAR(1, VAR_CHROOT) } YY_BREAK case 68: YY_RULE_SETUP #line 282 "./util/configlexer.lex" -{ YDVAR(1, VAR_DIRECTORY) } +{ YDVAR(1, VAR_USERNAME) } YY_BREAK case 69: YY_RULE_SETUP #line 283 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOGFILE) } +{ YDVAR(1, VAR_DIRECTORY) } YY_BREAK case 70: YY_RULE_SETUP #line 284 "./util/configlexer.lex" -{ YDVAR(1, VAR_PIDFILE) } +{ YDVAR(1, VAR_LOGFILE) } YY_BREAK case 71: YY_RULE_SETUP #line 285 "./util/configlexer.lex" -{ YDVAR(1, VAR_ROOT_HINTS) } +{ YDVAR(1, VAR_PIDFILE) } YY_BREAK case 72: YY_RULE_SETUP #line 286 "./util/configlexer.lex" -{ YDVAR(1, VAR_STREAM_WAIT_SIZE) } +{ YDVAR(1, VAR_ROOT_HINTS) } YY_BREAK case 73: YY_RULE_SETUP #line 287 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDNS_BUFFER_SIZE) } +{ YDVAR(1, VAR_STREAM_WAIT_SIZE) } YY_BREAK case 74: YY_RULE_SETUP #line 288 "./util/configlexer.lex" -{ YDVAR(1, VAR_MSG_BUFFER_SIZE) } +{ YDVAR(1, VAR_EDNS_BUFFER_SIZE) } YY_BREAK case 75: YY_RULE_SETUP #line 289 "./util/configlexer.lex" -{ YDVAR(1, VAR_MSG_CACHE_SIZE) } +{ YDVAR(1, VAR_MSG_BUFFER_SIZE) } YY_BREAK case 76: YY_RULE_SETUP #line 290 "./util/configlexer.lex" -{ YDVAR(1, VAR_MSG_CACHE_SLABS) } +{ YDVAR(1, VAR_MSG_CACHE_SIZE) } YY_BREAK case 77: YY_RULE_SETUP #line 291 "./util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_CACHE_SIZE) } +{ YDVAR(1, VAR_MSG_CACHE_SLABS) } YY_BREAK case 78: YY_RULE_SETUP #line 292 "./util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_CACHE_SLABS) } +{ YDVAR(1, VAR_RRSET_CACHE_SIZE) } YY_BREAK case 79: YY_RULE_SETUP #line 293 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHE_MAX_TTL) } +{ YDVAR(1, VAR_RRSET_CACHE_SLABS) } YY_BREAK case 80: YY_RULE_SETUP #line 294 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHE_MAX_NEGATIVE_TTL) } +{ YDVAR(1, VAR_CACHE_MAX_TTL) } YY_BREAK case 81: YY_RULE_SETUP #line 295 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHE_MIN_TTL) } +{ YDVAR(1, VAR_CACHE_MAX_NEGATIVE_TTL) } YY_BREAK case 82: YY_RULE_SETUP #line 296 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_HOST_TTL) } +{ YDVAR(1, VAR_CACHE_MIN_TTL) } YY_BREAK case 83: YY_RULE_SETUP #line 297 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_LAME_TTL) } +{ YDVAR(1, VAR_INFRA_HOST_TTL) } YY_BREAK case 84: YY_RULE_SETUP #line 298 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_SLABS) } +{ YDVAR(1, VAR_INFRA_LAME_TTL) } YY_BREAK case 85: YY_RULE_SETUP #line 299 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_NUMHOSTS) } +{ YDVAR(1, VAR_INFRA_CACHE_SLABS) } YY_BREAK case 86: YY_RULE_SETUP #line 300 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_LAME_SIZE) } +{ YDVAR(1, VAR_INFRA_CACHE_NUMHOSTS) } YY_BREAK case 87: YY_RULE_SETUP #line 301 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_MIN_RTT) } +{ YDVAR(1, VAR_INFRA_CACHE_LAME_SIZE) } YY_BREAK case 88: YY_RULE_SETUP #line 302 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_KEEP_PROBING) } +{ YDVAR(1, VAR_INFRA_CACHE_MIN_RTT) } YY_BREAK case 89: YY_RULE_SETUP #line 303 "./util/configlexer.lex" -{ YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) } +{ YDVAR(1, VAR_INFRA_KEEP_PROBING) } YY_BREAK case 90: YY_RULE_SETUP #line 304 "./util/configlexer.lex" -{ YDVAR(1, VAR_JOSTLE_TIMEOUT) } +{ YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) } YY_BREAK case 91: YY_RULE_SETUP #line 305 "./util/configlexer.lex" -{ YDVAR(1, VAR_DELAY_CLOSE) } +{ YDVAR(1, VAR_JOSTLE_TIMEOUT) } YY_BREAK case 92: YY_RULE_SETUP #line 306 "./util/configlexer.lex" -{ YDVAR(1, VAR_UDP_CONNECT) } +{ YDVAR(1, VAR_DELAY_CLOSE) } YY_BREAK case 93: YY_RULE_SETUP #line 307 "./util/configlexer.lex" -{ YDVAR(1, VAR_TARGET_FETCH_POLICY) } +{ YDVAR(1, VAR_UDP_CONNECT) } YY_BREAK case 94: YY_RULE_SETUP #line 308 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) } +{ YDVAR(1, VAR_TARGET_FETCH_POLICY) } YY_BREAK case 95: YY_RULE_SETUP #line 309 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_LARGE_QUERIES) } +{ YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) } YY_BREAK case 96: YY_RULE_SETUP #line 310 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_GLUE) } +{ YDVAR(1, VAR_HARDEN_LARGE_QUERIES) } YY_BREAK case 97: YY_RULE_SETUP #line 311 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) } +{ YDVAR(1, VAR_HARDEN_GLUE) } YY_BREAK case 98: YY_RULE_SETUP #line 312 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) } +{ YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) } YY_BREAK case 99: YY_RULE_SETUP #line 313 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) } +{ YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) } YY_BREAK case 100: YY_RULE_SETUP #line 314 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_ALGO_DOWNGRADE) } +{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) } YY_BREAK case 101: YY_RULE_SETUP #line 315 "./util/configlexer.lex" -{ YDVAR(1, VAR_USE_CAPS_FOR_ID) } +{ YDVAR(1, VAR_HARDEN_ALGO_DOWNGRADE) } YY_BREAK case 102: YY_RULE_SETUP #line 316 "./util/configlexer.lex" -{ YDVAR(1, VAR_CAPS_WHITELIST) } +{ YDVAR(1, VAR_USE_CAPS_FOR_ID) } YY_BREAK case 103: YY_RULE_SETUP @@ -4057,72 +4069,72 @@ YY_RULE_SETUP case 104: YY_RULE_SETUP #line 318 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) } +{ YDVAR(1, VAR_CAPS_WHITELIST) } YY_BREAK case 105: YY_RULE_SETUP #line 319 "./util/configlexer.lex" -{ YDVAR(1, VAR_PRIVATE_ADDRESS) } +{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) } YY_BREAK case 106: YY_RULE_SETUP #line 320 "./util/configlexer.lex" -{ YDVAR(1, VAR_PRIVATE_DOMAIN) } +{ YDVAR(1, VAR_PRIVATE_ADDRESS) } YY_BREAK case 107: YY_RULE_SETUP #line 321 "./util/configlexer.lex" -{ YDVAR(1, VAR_PREFETCH_KEY) } +{ YDVAR(1, VAR_PRIVATE_DOMAIN) } YY_BREAK case 108: YY_RULE_SETUP #line 322 "./util/configlexer.lex" -{ YDVAR(1, VAR_PREFETCH) } +{ YDVAR(1, VAR_PREFETCH_KEY) } YY_BREAK case 109: YY_RULE_SETUP #line 323 "./util/configlexer.lex" -{ YDVAR(1, VAR_DENY_ANY) } +{ YDVAR(1, VAR_PREFETCH) } YY_BREAK case 110: YY_RULE_SETUP #line 324 "./util/configlexer.lex" -{ YDVAR(0, VAR_STUB_ZONE) } +{ YDVAR(1, VAR_DENY_ANY) } YY_BREAK case 111: YY_RULE_SETUP #line 325 "./util/configlexer.lex" -{ YDVAR(1, VAR_NAME) } +{ YDVAR(0, VAR_STUB_ZONE) } YY_BREAK case 112: YY_RULE_SETUP #line 326 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_ADDR) } +{ YDVAR(1, VAR_NAME) } YY_BREAK case 113: YY_RULE_SETUP #line 327 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_HOST) } +{ YDVAR(1, VAR_STUB_ADDR) } YY_BREAK case 114: YY_RULE_SETUP #line 328 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_PRIME) } +{ YDVAR(1, VAR_STUB_HOST) } YY_BREAK case 115: YY_RULE_SETUP #line 329 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_FIRST) } +{ YDVAR(1, VAR_STUB_PRIME) } YY_BREAK case 116: YY_RULE_SETUP #line 330 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_NO_CACHE) } +{ YDVAR(1, VAR_STUB_FIRST) } YY_BREAK case 117: YY_RULE_SETUP #line 331 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_SSL_UPSTREAM) } +{ YDVAR(1, VAR_STUB_NO_CACHE) } YY_BREAK case 118: YY_RULE_SETUP @@ -4132,32 +4144,32 @@ YY_RULE_SETUP case 119: YY_RULE_SETUP #line 333 "./util/configlexer.lex" -{ YDVAR(0, VAR_FORWARD_ZONE) } +{ YDVAR(1, VAR_STUB_SSL_UPSTREAM) } YY_BREAK case 120: YY_RULE_SETUP #line 334 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_ADDR) } +{ YDVAR(0, VAR_FORWARD_ZONE) } YY_BREAK case 121: YY_RULE_SETUP #line 335 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_HOST) } +{ YDVAR(1, VAR_FORWARD_ADDR) } YY_BREAK case 122: YY_RULE_SETUP #line 336 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_FIRST) } +{ YDVAR(1, VAR_FORWARD_HOST) } YY_BREAK case 123: YY_RULE_SETUP #line 337 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_NO_CACHE) } +{ YDVAR(1, VAR_FORWARD_FIRST) } YY_BREAK case 124: YY_RULE_SETUP #line 338 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) } +{ YDVAR(1, VAR_FORWARD_NO_CACHE) } YY_BREAK case 125: YY_RULE_SETUP @@ -4167,47 +4179,47 @@ YY_RULE_SETUP case 126: YY_RULE_SETUP #line 340 "./util/configlexer.lex" -{ YDVAR(0, VAR_AUTH_ZONE) } +{ YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) } YY_BREAK case 127: YY_RULE_SETUP #line 341 "./util/configlexer.lex" -{ YDVAR(0, VAR_RPZ) } +{ YDVAR(0, VAR_AUTH_ZONE) } YY_BREAK case 128: YY_RULE_SETUP #line 342 "./util/configlexer.lex" -{ YDVAR(1, VAR_TAGS) } +{ YDVAR(0, VAR_RPZ) } YY_BREAK case 129: YY_RULE_SETUP #line 343 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_ACTION_OVERRIDE) } +{ YDVAR(1, VAR_TAGS) } YY_BREAK case 130: YY_RULE_SETUP #line 344 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_CNAME_OVERRIDE) } +{ YDVAR(1, VAR_RPZ_ACTION_OVERRIDE) } YY_BREAK case 131: YY_RULE_SETUP #line 345 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_LOG) } +{ YDVAR(1, VAR_RPZ_CNAME_OVERRIDE) } YY_BREAK case 132: YY_RULE_SETUP #line 346 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_LOG_NAME) } +{ YDVAR(1, VAR_RPZ_LOG) } YY_BREAK case 133: YY_RULE_SETUP #line 347 "./util/configlexer.lex" -{ YDVAR(1, VAR_ZONEFILE) } +{ YDVAR(1, VAR_RPZ_LOG_NAME) } YY_BREAK case 134: YY_RULE_SETUP #line 348 "./util/configlexer.lex" -{ YDVAR(1, VAR_MASTER) } +{ YDVAR(1, VAR_ZONEFILE) } YY_BREAK case 135: YY_RULE_SETUP @@ -4217,716 +4229,716 @@ YY_RULE_SETUP case 136: YY_RULE_SETUP #line 350 "./util/configlexer.lex" -{ YDVAR(1, VAR_URL) } +{ YDVAR(1, VAR_MASTER) } YY_BREAK case 137: YY_RULE_SETUP #line 351 "./util/configlexer.lex" -{ YDVAR(1, VAR_ALLOW_NOTIFY) } +{ YDVAR(1, VAR_URL) } YY_BREAK case 138: YY_RULE_SETUP #line 352 "./util/configlexer.lex" -{ YDVAR(1, VAR_FOR_DOWNSTREAM) } +{ YDVAR(1, VAR_ALLOW_NOTIFY) } YY_BREAK case 139: YY_RULE_SETUP #line 353 "./util/configlexer.lex" -{ YDVAR(1, VAR_FOR_UPSTREAM) } +{ YDVAR(1, VAR_FOR_DOWNSTREAM) } YY_BREAK case 140: YY_RULE_SETUP #line 354 "./util/configlexer.lex" -{ YDVAR(1, VAR_FALLBACK_ENABLED) } +{ YDVAR(1, VAR_FOR_UPSTREAM) } YY_BREAK case 141: YY_RULE_SETUP #line 355 "./util/configlexer.lex" -{ YDVAR(0, VAR_VIEW) } +{ YDVAR(1, VAR_FALLBACK_ENABLED) } YY_BREAK case 142: YY_RULE_SETUP #line 356 "./util/configlexer.lex" -{ YDVAR(1, VAR_VIEW_FIRST) } +{ YDVAR(0, VAR_VIEW) } YY_BREAK case 143: YY_RULE_SETUP #line 357 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } +{ YDVAR(1, VAR_VIEW_FIRST) } YY_BREAK case 144: YY_RULE_SETUP #line 358 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } +{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } YY_BREAK case 145: YY_RULE_SETUP #line 359 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL) } +{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } YY_BREAK case 146: YY_RULE_SETUP #line 360 "./util/configlexer.lex" -{ YDVAR(1, VAR_SEND_CLIENT_SUBNET) } +{ YDVAR(2, VAR_ACCESS_CONTROL) } YY_BREAK case 147: YY_RULE_SETUP #line 361 "./util/configlexer.lex" -{ YDVAR(1, VAR_CLIENT_SUBNET_ZONE) } +{ YDVAR(1, VAR_SEND_CLIENT_SUBNET) } YY_BREAK case 148: YY_RULE_SETUP #line 362 "./util/configlexer.lex" -{ YDVAR(1, VAR_CLIENT_SUBNET_ALWAYS_FORWARD) } +{ YDVAR(1, VAR_CLIENT_SUBNET_ZONE) } YY_BREAK case 149: YY_RULE_SETUP #line 363 "./util/configlexer.lex" -{ YDVAR(1, VAR_CLIENT_SUBNET_OPCODE) } +{ YDVAR(1, VAR_CLIENT_SUBNET_ALWAYS_FORWARD) } YY_BREAK case 150: YY_RULE_SETUP #line 364 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV4) } +{ YDVAR(1, VAR_CLIENT_SUBNET_OPCODE) } YY_BREAK case 151: YY_RULE_SETUP #line 365 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV6) } +{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV4) } YY_BREAK case 152: YY_RULE_SETUP #line 366 "./util/configlexer.lex" -{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV4) } +{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV6) } YY_BREAK case 153: YY_RULE_SETUP #line 367 "./util/configlexer.lex" -{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV6) } +{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV4) } YY_BREAK case 154: YY_RULE_SETUP #line 368 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV4) } +{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV6) } YY_BREAK case 155: YY_RULE_SETUP #line 369 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV6) } +{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV4) } YY_BREAK case 156: YY_RULE_SETUP #line 370 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_IDENTITY) } +{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV6) } YY_BREAK case 157: YY_RULE_SETUP #line 371 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_VERSION) } +{ YDVAR(1, VAR_HIDE_IDENTITY) } YY_BREAK case 158: YY_RULE_SETUP #line 372 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_TRUSTANCHOR) } +{ YDVAR(1, VAR_HIDE_VERSION) } YY_BREAK case 159: YY_RULE_SETUP #line 373 "./util/configlexer.lex" -{ YDVAR(1, VAR_IDENTITY) } +{ YDVAR(1, VAR_HIDE_TRUSTANCHOR) } YY_BREAK case 160: YY_RULE_SETUP #line 374 "./util/configlexer.lex" -{ YDVAR(1, VAR_VERSION) } +{ YDVAR(1, VAR_IDENTITY) } YY_BREAK case 161: YY_RULE_SETUP #line 375 "./util/configlexer.lex" -{ YDVAR(1, VAR_MODULE_CONF) } +{ YDVAR(1, VAR_VERSION) } YY_BREAK case 162: YY_RULE_SETUP #line 376 "./util/configlexer.lex" -{ YDVAR(1, VAR_DLV_ANCHOR) } +{ YDVAR(1, VAR_MODULE_CONF) } YY_BREAK case 163: YY_RULE_SETUP #line 377 "./util/configlexer.lex" -{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } +{ YDVAR(1, VAR_DLV_ANCHOR) } YY_BREAK case 164: YY_RULE_SETUP #line 378 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } +{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } YY_BREAK case 165: YY_RULE_SETUP #line 379 "./util/configlexer.lex" -{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } +{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } YY_BREAK case 166: YY_RULE_SETUP #line 380 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } +{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } YY_BREAK case 167: YY_RULE_SETUP #line 381 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR) } +{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } YY_BREAK case 168: YY_RULE_SETUP #line 382 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR_SIGNALING) } +{ YDVAR(1, VAR_TRUST_ANCHOR) } YY_BREAK case 169: YY_RULE_SETUP #line 383 "./util/configlexer.lex" -{ YDVAR(1, VAR_ROOT_KEY_SENTINEL) } +{ YDVAR(1, VAR_TRUST_ANCHOR_SIGNALING) } YY_BREAK case 170: YY_RULE_SETUP #line 384 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } +{ YDVAR(1, VAR_ROOT_KEY_SENTINEL) } YY_BREAK case 171: YY_RULE_SETUP #line 385 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } +{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } YY_BREAK case 172: YY_RULE_SETUP #line 386 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } +{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } YY_BREAK case 173: YY_RULE_SETUP #line 387 "./util/configlexer.lex" -{ YDVAR(1, VAR_BOGUS_TTL) } +{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } YY_BREAK case 174: YY_RULE_SETUP #line 388 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } +{ YDVAR(1, VAR_BOGUS_TTL) } YY_BREAK case 175: YY_RULE_SETUP #line 389 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } +{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } YY_BREAK case 176: YY_RULE_SETUP #line 390 "./util/configlexer.lex" -{ YDVAR(1, VAR_AGGRESSIVE_NSEC) } +{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } YY_BREAK case 177: YY_RULE_SETUP #line 391 "./util/configlexer.lex" -{ YDVAR(1, VAR_IGNORE_CD_FLAG) } +{ YDVAR(1, VAR_AGGRESSIVE_NSEC) } YY_BREAK case 178: YY_RULE_SETUP #line 392 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED) } +{ YDVAR(1, VAR_IGNORE_CD_FLAG) } YY_BREAK case 179: YY_RULE_SETUP #line 393 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_TTL) } +{ YDVAR(1, VAR_SERVE_EXPIRED) } YY_BREAK case 180: YY_RULE_SETUP #line 394 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) } +{ YDVAR(1, VAR_SERVE_EXPIRED_TTL) } YY_BREAK case 181: YY_RULE_SETUP #line 395 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) } +{ YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) } YY_BREAK case 182: YY_RULE_SETUP #line 396 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) } +{ YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) } YY_BREAK case 183: YY_RULE_SETUP #line 397 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_ORIGINAL_TTL) } +{ YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) } YY_BREAK case 184: YY_RULE_SETUP #line 398 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAKE_DSA) } +{ YDVAR(1, VAR_SERVE_ORIGINAL_TTL) } YY_BREAK case 185: YY_RULE_SETUP #line 399 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAKE_SHA1) } +{ YDVAR(1, VAR_FAKE_DSA) } YY_BREAK case 186: YY_RULE_SETUP #line 400 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_LOG_LEVEL) } +{ YDVAR(1, VAR_FAKE_SHA1) } YY_BREAK case 187: YY_RULE_SETUP #line 401 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SIZE) } +{ YDVAR(1, VAR_VAL_LOG_LEVEL) } YY_BREAK case 188: YY_RULE_SETUP #line 402 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SLABS) } +{ YDVAR(1, VAR_KEY_CACHE_SIZE) } YY_BREAK case 189: YY_RULE_SETUP #line 403 "./util/configlexer.lex" -{ YDVAR(1, VAR_NEG_CACHE_SIZE) } +{ YDVAR(1, VAR_KEY_CACHE_SLABS) } YY_BREAK case 190: YY_RULE_SETUP #line 404 "./util/configlexer.lex" -{ - YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } +{ YDVAR(1, VAR_NEG_CACHE_SIZE) } YY_BREAK case 191: YY_RULE_SETUP -#line 406 "./util/configlexer.lex" -{ YDVAR(1, VAR_ZONEMD_PERMISSIVE_MODE) } +#line 405 "./util/configlexer.lex" +{ + YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } YY_BREAK case 192: YY_RULE_SETUP #line 407 "./util/configlexer.lex" -{ YDVAR(1, VAR_ZONEMD_REJECT_ABSENCE) } +{ YDVAR(1, VAR_ZONEMD_PERMISSIVE_MODE) } YY_BREAK case 193: YY_RULE_SETUP #line 408 "./util/configlexer.lex" -{ YDVAR(1, VAR_ADD_HOLDDOWN) } +{ YDVAR(1, VAR_ZONEMD_REJECT_ABSENCE) } YY_BREAK case 194: YY_RULE_SETUP #line 409 "./util/configlexer.lex" -{ YDVAR(1, VAR_DEL_HOLDDOWN) } +{ YDVAR(1, VAR_ADD_HOLDDOWN) } YY_BREAK case 195: YY_RULE_SETUP #line 410 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEEP_MISSING) } +{ YDVAR(1, VAR_DEL_HOLDDOWN) } YY_BREAK case 196: YY_RULE_SETUP #line 411 "./util/configlexer.lex" -{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } +{ YDVAR(1, VAR_KEEP_MISSING) } YY_BREAK case 197: YY_RULE_SETUP #line 412 "./util/configlexer.lex" -{ YDVAR(1, VAR_USE_SYSLOG) } +{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } YY_BREAK case 198: YY_RULE_SETUP #line 413 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_IDENTITY) } +{ YDVAR(1, VAR_USE_SYSLOG) } YY_BREAK case 199: YY_RULE_SETUP #line 414 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TIME_ASCII) } +{ YDVAR(1, VAR_LOG_IDENTITY) } YY_BREAK case 200: YY_RULE_SETUP #line 415 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_QUERIES) } +{ YDVAR(1, VAR_LOG_TIME_ASCII) } YY_BREAK case 201: YY_RULE_SETUP #line 416 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_REPLIES) } +{ YDVAR(1, VAR_LOG_QUERIES) } YY_BREAK case 202: YY_RULE_SETUP #line 417 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) } +{ YDVAR(1, VAR_LOG_REPLIES) } YY_BREAK case 203: YY_RULE_SETUP #line 418 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) } +{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) } YY_BREAK case 204: YY_RULE_SETUP #line 419 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_SERVFAIL) } +{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) } YY_BREAK case 205: YY_RULE_SETUP #line 420 "./util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE) } +{ YDVAR(1, VAR_LOG_SERVFAIL) } YY_BREAK case 206: YY_RULE_SETUP #line 421 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA) } +{ YDVAR(2, VAR_LOCAL_ZONE) } YY_BREAK case 207: YY_RULE_SETUP #line 422 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA_PTR) } +{ YDVAR(1, VAR_LOCAL_DATA) } YY_BREAK case 208: YY_RULE_SETUP #line 423 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } +{ YDVAR(1, VAR_LOCAL_DATA_PTR) } YY_BREAK case 209: YY_RULE_SETUP #line 424 "./util/configlexer.lex" -{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } +{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } YY_BREAK case 210: YY_RULE_SETUP #line 425 "./util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_INTERVAL) } +{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } YY_BREAK case 211: YY_RULE_SETUP #line 426 "./util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } +{ YDVAR(1, VAR_STATISTICS_INTERVAL) } YY_BREAK case 212: YY_RULE_SETUP #line 427 "./util/configlexer.lex" -{ YDVAR(1, VAR_EXTENDED_STATISTICS) } +{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } YY_BREAK case 213: YY_RULE_SETUP #line 428 "./util/configlexer.lex" -{ YDVAR(1, VAR_SHM_ENABLE) } +{ YDVAR(1, VAR_EXTENDED_STATISTICS) } YY_BREAK case 214: YY_RULE_SETUP #line 429 "./util/configlexer.lex" -{ YDVAR(1, VAR_SHM_KEY) } +{ YDVAR(1, VAR_SHM_ENABLE) } YY_BREAK case 215: YY_RULE_SETUP #line 430 "./util/configlexer.lex" -{ YDVAR(0, VAR_REMOTE_CONTROL) } +{ YDVAR(1, VAR_SHM_KEY) } YY_BREAK case 216: YY_RULE_SETUP #line 431 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_ENABLE) } +{ YDVAR(0, VAR_REMOTE_CONTROL) } YY_BREAK case 217: YY_RULE_SETUP #line 432 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_INTERFACE) } +{ YDVAR(1, VAR_CONTROL_ENABLE) } YY_BREAK case 218: YY_RULE_SETUP #line 433 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_PORT) } +{ YDVAR(1, VAR_CONTROL_INTERFACE) } YY_BREAK case 219: YY_RULE_SETUP #line 434 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_USE_CERT) } +{ YDVAR(1, VAR_CONTROL_PORT) } YY_BREAK case 220: YY_RULE_SETUP #line 435 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_KEY_FILE) } +{ YDVAR(1, VAR_CONTROL_USE_CERT) } YY_BREAK case 221: YY_RULE_SETUP #line 436 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_CERT_FILE) } +{ YDVAR(1, VAR_SERVER_KEY_FILE) } YY_BREAK case 222: YY_RULE_SETUP #line 437 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_KEY_FILE) } +{ YDVAR(1, VAR_SERVER_CERT_FILE) } YY_BREAK case 223: YY_RULE_SETUP #line 438 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_CERT_FILE) } +{ YDVAR(1, VAR_CONTROL_KEY_FILE) } YY_BREAK case 224: YY_RULE_SETUP #line 439 "./util/configlexer.lex" -{ YDVAR(1, VAR_PYTHON_SCRIPT) } +{ YDVAR(1, VAR_CONTROL_CERT_FILE) } YY_BREAK case 225: YY_RULE_SETUP #line 440 "./util/configlexer.lex" -{ YDVAR(0, VAR_PYTHON) } +{ YDVAR(1, VAR_PYTHON_SCRIPT) } YY_BREAK case 226: YY_RULE_SETUP #line 441 "./util/configlexer.lex" -{ YDVAR(1, VAR_DYNLIB_FILE) } +{ YDVAR(0, VAR_PYTHON) } YY_BREAK case 227: YY_RULE_SETUP #line 442 "./util/configlexer.lex" -{ YDVAR(0, VAR_DYNLIB) } +{ YDVAR(1, VAR_DYNLIB_FILE) } YY_BREAK case 228: YY_RULE_SETUP #line 443 "./util/configlexer.lex" -{ YDVAR(1, VAR_DOMAIN_INSECURE) } +{ YDVAR(0, VAR_DYNLIB) } YY_BREAK case 229: YY_RULE_SETUP #line 444 "./util/configlexer.lex" -{ YDVAR(1, VAR_MINIMAL_RESPONSES) } +{ YDVAR(1, VAR_DOMAIN_INSECURE) } YY_BREAK case 230: YY_RULE_SETUP #line 445 "./util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } +{ YDVAR(1, VAR_MINIMAL_RESPONSES) } YY_BREAK case 231: YY_RULE_SETUP #line 446 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } +{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } YY_BREAK case 232: YY_RULE_SETUP #line 447 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_UDP_SIZE) } +{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } YY_BREAK case 233: YY_RULE_SETUP #line 448 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_PREFIX) } +{ YDVAR(1, VAR_MAX_UDP_SIZE) } YY_BREAK case 234: YY_RULE_SETUP #line 449 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_SYNTHALL) } +{ YDVAR(1, VAR_DNS64_PREFIX) } YY_BREAK case 235: YY_RULE_SETUP #line 450 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } +{ YDVAR(1, VAR_DNS64_SYNTHALL) } YY_BREAK case 236: YY_RULE_SETUP #line 451 "./util/configlexer.lex" -{ YDVAR(1, VAR_DEFINE_TAG) } +{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } YY_BREAK case 237: YY_RULE_SETUP #line 452 "./util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } +{ YDVAR(1, VAR_DEFINE_TAG) } YY_BREAK case 238: YY_RULE_SETUP #line 453 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } +{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } YY_BREAK case 239: YY_RULE_SETUP #line 454 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } +{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } YY_BREAK case 240: YY_RULE_SETUP #line 455 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } YY_BREAK case 241: YY_RULE_SETUP #line 456 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } YY_BREAK case 242: YY_RULE_SETUP #line 457 "./util/configlexer.lex" -{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } +{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } YY_BREAK case 243: YY_RULE_SETUP #line 458 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSTAP) } +{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } YY_BREAK case 244: YY_RULE_SETUP #line 459 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_ENABLE) } +{ YDVAR(0, VAR_DNSTAP) } YY_BREAK case 245: YY_RULE_SETUP #line 460 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_BIDIRECTIONAL) } +{ YDVAR(1, VAR_DNSTAP_ENABLE) } YY_BREAK case 246: YY_RULE_SETUP #line 461 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } +{ YDVAR(1, VAR_DNSTAP_BIDIRECTIONAL) } YY_BREAK case 247: YY_RULE_SETUP #line 462 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IP) } +{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } YY_BREAK case 248: YY_RULE_SETUP #line 463 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS) } +{ YDVAR(1, VAR_DNSTAP_IP) } YY_BREAK case 249: YY_RULE_SETUP #line 464 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } +{ YDVAR(1, VAR_DNSTAP_TLS) } YY_BREAK case 250: YY_RULE_SETUP #line 465 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } +{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } YY_BREAK case 251: YY_RULE_SETUP #line 466 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } +{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } YY_BREAK case 252: YY_RULE_SETUP -#line 468 "./util/configlexer.lex" +#line 467 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } YY_BREAK case 253: YY_RULE_SETUP -#line 470 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } +#line 469 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } YY_BREAK case 254: YY_RULE_SETUP #line 471 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } +{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } YY_BREAK case 255: YY_RULE_SETUP #line 472 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IDENTITY) } +{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } YY_BREAK case 256: YY_RULE_SETUP #line 473 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_VERSION) } +{ YDVAR(1, VAR_DNSTAP_IDENTITY) } YY_BREAK case 257: YY_RULE_SETUP #line 474 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } +{ YDVAR(1, VAR_DNSTAP_VERSION) } YY_BREAK case 258: YY_RULE_SETUP -#line 476 "./util/configlexer.lex" +#line 475 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } YY_BREAK case 259: YY_RULE_SETUP -#line 478 "./util/configlexer.lex" +#line 477 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } YY_BREAK case 260: YY_RULE_SETUP -#line 480 "./util/configlexer.lex" +#line 479 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } YY_BREAK case 261: YY_RULE_SETUP -#line 482 "./util/configlexer.lex" +#line 481 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } YY_BREAK case 262: YY_RULE_SETUP -#line 484 "./util/configlexer.lex" +#line 483 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } YY_BREAK case 263: YY_RULE_SETUP -#line 486 "./util/configlexer.lex" -{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } +#line 485 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } YY_BREAK case 264: YY_RULE_SETUP #line 487 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT) } +{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } YY_BREAK case 265: YY_RULE_SETUP #line 488 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT) } +{ YDVAR(1, VAR_IP_RATELIMIT) } YY_BREAK case 266: YY_RULE_SETUP #line 489 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_RATELIMIT) } YY_BREAK case 267: YY_RULE_SETUP #line 490 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } YY_BREAK case 268: YY_RULE_SETUP #line 491 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_RATELIMIT_SLABS) } YY_BREAK case 269: YY_RULE_SETUP #line 492 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } YY_BREAK case 270: YY_RULE_SETUP #line 493 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } +{ YDVAR(1, VAR_RATELIMIT_SIZE) } YY_BREAK case 271: YY_RULE_SETUP #line 494 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } +{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } YY_BREAK case 272: YY_RULE_SETUP #line 495 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } +{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } YY_BREAK case 273: YY_RULE_SETUP #line 496 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_FACTOR) } +{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } YY_BREAK case 274: YY_RULE_SETUP #line 497 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOW_RTT) } +{ YDVAR(1, VAR_RATELIMIT_FACTOR) } YY_BREAK case 275: YY_RULE_SETUP #line 498 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_NUM) } +{ YDVAR(1, VAR_LOW_RTT) } YY_BREAK case 276: YY_RULE_SETUP #line 499 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } +{ YDVAR(1, VAR_FAST_SERVER_NUM) } YY_BREAK case 277: YY_RULE_SETUP @@ -4941,119 +4953,119 @@ YY_RULE_SETUP case 279: YY_RULE_SETUP #line 502 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_TAG) } +{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 280: YY_RULE_SETUP #line 503 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP) } +{ YDVAR(2, VAR_RESPONSE_IP_TAG) } YY_BREAK case 281: YY_RULE_SETUP #line 504 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_DATA) } +{ YDVAR(2, VAR_RESPONSE_IP) } YY_BREAK case 282: YY_RULE_SETUP #line 505 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSCRYPT) } +{ YDVAR(2, VAR_RESPONSE_IP_DATA) } YY_BREAK case 283: YY_RULE_SETUP #line 506 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } +{ YDVAR(0, VAR_DNSCRYPT) } YY_BREAK case 284: YY_RULE_SETUP #line 507 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PORT) } +{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } YY_BREAK case 285: YY_RULE_SETUP #line 508 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } +{ YDVAR(1, VAR_DNSCRYPT_PORT) } YY_BREAK case 286: YY_RULE_SETUP #line 509 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } YY_BREAK case 287: YY_RULE_SETUP #line 510 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } +{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } YY_BREAK case 288: YY_RULE_SETUP #line 511 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } YY_BREAK case 289: YY_RULE_SETUP #line 512 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } YY_BREAK case 290: YY_RULE_SETUP -#line 514 "./util/configlexer.lex" +#line 513 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } YY_BREAK case 291: YY_RULE_SETUP -#line 516 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } +#line 515 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } YY_BREAK case 292: YY_RULE_SETUP #line 517 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } YY_BREAK case 293: YY_RULE_SETUP #line 518 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_RESPONSES) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } YY_BREAK case 294: YY_RULE_SETUP #line 519 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) } +{ YDVAR(1, VAR_PAD_RESPONSES) } YY_BREAK case 295: YY_RULE_SETUP #line 520 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_QUERIES) } +{ YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) } YY_BREAK case 296: YY_RULE_SETUP #line 521 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) } +{ YDVAR(1, VAR_PAD_QUERIES) } YY_BREAK case 297: YY_RULE_SETUP #line 522 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_ENABLED) } +{ YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) } YY_BREAK case 298: YY_RULE_SETUP #line 523 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } +{ YDVAR(1, VAR_IPSECMOD_ENABLED) } YY_BREAK case 299: YY_RULE_SETUP #line 524 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_HOOK) } +{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } YY_BREAK case 300: YY_RULE_SETUP #line 525 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } +{ YDVAR(1, VAR_IPSECMOD_HOOK) } YY_BREAK case 301: YY_RULE_SETUP #line 526 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } +{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } YY_BREAK case 302: YY_RULE_SETUP @@ -5063,118 +5075,123 @@ YY_RULE_SETUP case 303: YY_RULE_SETUP #line 528 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_STRICT) } +{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } YY_BREAK case 304: YY_RULE_SETUP #line 529 "./util/configlexer.lex" -{ YDVAR(0, VAR_CACHEDB) } +{ YDVAR(1, VAR_IPSECMOD_STRICT) } YY_BREAK case 305: YY_RULE_SETUP #line 530 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_BACKEND) } +{ YDVAR(0, VAR_CACHEDB) } YY_BREAK case 306: YY_RULE_SETUP #line 531 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } +{ YDVAR(1, VAR_CACHEDB_BACKEND) } YY_BREAK case 307: YY_RULE_SETUP #line 532 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISHOST) } +{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } YY_BREAK case 308: YY_RULE_SETUP #line 533 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISPORT) } +{ YDVAR(1, VAR_CACHEDB_REDISHOST) } YY_BREAK case 309: YY_RULE_SETUP #line 534 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } +{ YDVAR(1, VAR_CACHEDB_REDISPORT) } YY_BREAK case 310: YY_RULE_SETUP #line 535 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } +{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } YY_BREAK case 311: YY_RULE_SETUP #line 536 "./util/configlexer.lex" -{ YDVAR(0, VAR_IPSET) } +{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } YY_BREAK case 312: YY_RULE_SETUP #line 537 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V4) } +{ YDVAR(0, VAR_IPSET) } YY_BREAK case 313: YY_RULE_SETUP #line 538 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V6) } +{ YDVAR(1, VAR_IPSET_NAME_V4) } YY_BREAK case 314: YY_RULE_SETUP #line 539 "./util/configlexer.lex" -{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } +{ YDVAR(1, VAR_IPSET_NAME_V6) } YY_BREAK case 315: YY_RULE_SETUP #line 540 "./util/configlexer.lex" -{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } +{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } YY_BREAK case 316: YY_RULE_SETUP #line 541 "./util/configlexer.lex" -{ YDVAR(2, VAR_EDNS_CLIENT_STRING) } +{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } YY_BREAK case 317: YY_RULE_SETUP #line 542 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) } +{ YDVAR(2, VAR_EDNS_CLIENT_STRING) } YY_BREAK case 318: YY_RULE_SETUP #line 543 "./util/configlexer.lex" -{ YDVAR(1, VAR_NSID ) } +{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) } YY_BREAK case 319: -/* rule 319 can match eol */ YY_RULE_SETUP #line 544 "./util/configlexer.lex" +{ YDVAR(1, VAR_NSID ) } + YY_BREAK +case 320: +/* rule 320 can match eol */ +YY_RULE_SETUP +#line 545 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK /* Quoted strings. Strip leading and ending quotes */ -case 320: +case 321: YY_RULE_SETUP -#line 547 "./util/configlexer.lex" +#line 548 "./util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 548 "./util/configlexer.lex" +#line 549 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 321: -YY_RULE_SETUP -#line 553 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 322: -/* rule 322 can match eol */ YY_RULE_SETUP #line 554 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 323: +/* rule 323 can match eol */ +YY_RULE_SETUP +#line 555 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 323: +case 324: YY_RULE_SETUP -#line 556 "./util/configlexer.lex" +#line 557 "./util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -5187,34 +5204,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 324: +case 325: YY_RULE_SETUP -#line 568 "./util/configlexer.lex" +#line 569 "./util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 569 "./util/configlexer.lex" +#line 570 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 325: -YY_RULE_SETUP -#line 574 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 326: -/* rule 326 can match eol */ YY_RULE_SETUP #line 575 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 327: +/* rule 327 can match eol */ +YY_RULE_SETUP +#line 576 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 327: +case 328: YY_RULE_SETUP -#line 577 "./util/configlexer.lex" +#line 578 "./util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -5227,38 +5244,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 328: +case 329: YY_RULE_SETUP -#line 589 "./util/configlexer.lex" +#line 590 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 591 "./util/configlexer.lex" +#line 592 "./util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); } YY_BREAK -case 329: -YY_RULE_SETUP -#line 595 "./util/configlexer.lex" -{ LEXOUT(("ISP ")); /* ignore */ } - YY_BREAK case 330: -/* rule 330 can match eol */ YY_RULE_SETUP #line 596 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++;} +{ LEXOUT(("ISP ")); /* ignore */ } YY_BREAK case 331: +/* rule 331 can match eol */ YY_RULE_SETUP #line 597 "./util/configlexer.lex" -{ LEXOUT(("IQS ")); BEGIN(include_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK case 332: YY_RULE_SETUP #line 598 "./util/configlexer.lex" +{ LEXOUT(("IQS ")); BEGIN(include_quoted); } + YY_BREAK +case 333: +YY_RULE_SETUP +#line 599 "./util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 0); @@ -5266,27 +5283,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 603 "./util/configlexer.lex" +#line 604 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 333: -YY_RULE_SETUP -#line 607 "./util/configlexer.lex" -{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } - YY_BREAK case 334: -/* rule 334 can match eol */ YY_RULE_SETUP #line 608 "./util/configlexer.lex" +{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } + YY_BREAK +case 335: +/* rule 335 can match eol */ +YY_RULE_SETUP +#line 609 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 335: +case 336: YY_RULE_SETUP -#line 610 "./util/configlexer.lex" +#line 611 "./util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -5296,7 +5313,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 616 "./util/configlexer.lex" +#line 617 "./util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ @@ -5311,39 +5328,39 @@ case YY_STATE_EOF(val): } YY_BREAK /* include-toplevel: directive */ -case 336: +case 337: YY_RULE_SETUP -#line 630 "./util/configlexer.lex" +#line 631 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include_toplevel); } YY_BREAK case YY_STATE_EOF(include_toplevel): -#line 633 "./util/configlexer.lex" +#line 634 "./util/configlexer.lex" { yyerror("EOF inside include_toplevel directive"); BEGIN(inc_prev); } YY_BREAK -case 337: -YY_RULE_SETUP -#line 637 "./util/configlexer.lex" -{ LEXOUT(("ITSP ")); /* ignore */ } - YY_BREAK case 338: -/* rule 338 can match eol */ YY_RULE_SETUP #line 638 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++; } +{ LEXOUT(("ITSP ")); /* ignore */ } YY_BREAK case 339: +/* rule 339 can match eol */ YY_RULE_SETUP #line 639 "./util/configlexer.lex" -{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK case 340: YY_RULE_SETUP #line 640 "./util/configlexer.lex" +{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } + YY_BREAK +case 341: +YY_RULE_SETUP +#line 641 "./util/configlexer.lex" { LEXOUT(("ITunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 1); @@ -5352,29 +5369,29 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_toplevel_quoted): -#line 646 "./util/configlexer.lex" +#line 647 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 341: -YY_RULE_SETUP -#line 650 "./util/configlexer.lex" -{ LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } - YY_BREAK case 342: -/* rule 342 can match eol */ YY_RULE_SETUP #line 651 "./util/configlexer.lex" +{ LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } + YY_BREAK +case 343: +/* rule 343 can match eol */ +YY_RULE_SETUP +#line 652 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 343: +case 344: YY_RULE_SETUP -#line 655 "./util/configlexer.lex" +#line 656 "./util/configlexer.lex" { LEXOUT(("ITQE ")); yytext[yyleng - 1] = '\0'; @@ -5383,33 +5400,33 @@ YY_RULE_SETUP return (VAR_FORCE_TOPLEVEL); } YY_BREAK -case 344: +case 345: YY_RULE_SETUP -#line 663 "./util/configlexer.lex" +#line 664 "./util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 345: +case 346: YY_RULE_SETUP -#line 667 "./util/configlexer.lex" +#line 668 "./util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 346: +case 347: YY_RULE_SETUP -#line 671 "./util/configlexer.lex" +#line 672 "./util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 347: +case 348: YY_RULE_SETUP -#line 675 "./util/configlexer.lex" +#line 676 "./util/configlexer.lex" ECHO; YY_BREAK -#line 5410 "" +#line 5427 "" case YY_END_OF_BUFFER: { @@ -5704,7 +5721,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 >= 3420 ) + if ( yy_current_state >= 3439 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -5732,11 +5749,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 >= 3420 ) + if ( yy_current_state >= 3439 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 3419); + yy_is_jam = (yy_current_state == 3438); return yy_is_jam ? 0 : yy_current_state; } @@ -6375,7087 +6392,6 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 675 "./util/configlexer.lex" - - - -#line 3 "" - -#define YY_INT_ALIGNED short int - -/* A lexical scanner generated by flex */ - -#define FLEX_SCANNER -#define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 5 -#define YY_FLEX_SUBMINOR_VERSION 35 -#if YY_FLEX_SUBMINOR_VERSION > 0 -#define FLEX_BETA -#endif - -/* First, we deal with platform-specific or compiler-specific issues. */ - -/* begin standard C headers. */ -#include -#include -#include -#include - -/* end standard C headers. */ - -/* flex integer type definitions */ - -#ifndef FLEXINT_H -#define FLEXINT_H - -/* C99 systems have . Non-C99 systems may or may not. */ - -#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - -/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, - * if you want the limit (max/min) macros for int types. - */ -#ifndef __STDC_LIMIT_MACROS -#define __STDC_LIMIT_MACROS 1 -#endif - -#include -typedef int8_t flex_int8_t; -typedef uint8_t flex_uint8_t; -typedef int16_t flex_int16_t; -typedef uint16_t flex_uint16_t; -typedef int32_t flex_int32_t; -typedef uint32_t flex_uint32_t; -typedef uint64_t flex_uint64_t; -#else -typedef signed char flex_int8_t; -typedef short int flex_int16_t; -typedef int flex_int32_t; -typedef unsigned char flex_uint8_t; -typedef unsigned short int flex_uint16_t; -typedef unsigned int flex_uint32_t; -#endif /* ! C99 */ - -/* Limits of integral types. */ -#ifndef INT8_MIN -#define INT8_MIN (-128) -#endif -#ifndef INT16_MIN -#define INT16_MIN (-32767-1) -#endif -#ifndef INT32_MIN -#define INT32_MIN (-2147483647-1) -#endif -#ifndef INT8_MAX -#define INT8_MAX (127) -#endif -#ifndef INT16_MAX -#define INT16_MAX (32767) -#endif -#ifndef INT32_MAX -#define INT32_MAX (2147483647) -#endif -#ifndef UINT8_MAX -#define UINT8_MAX (255U) -#endif -#ifndef UINT16_MAX -#define UINT16_MAX (65535U) -#endif -#ifndef UINT32_MAX -#define UINT32_MAX (4294967295U) -#endif - -#endif /* ! FLEXINT_H */ - -#ifdef __cplusplus - -/* The "const" storage-class-modifier is valid. */ -#define YY_USE_CONST - -#else /* ! __cplusplus */ - -/* C99 requires __STDC__ to be defined as 1. */ -#if defined (__STDC__) - -#define YY_USE_CONST - -#endif /* defined (__STDC__) */ -#endif /* ! __cplusplus */ - -#ifdef YY_USE_CONST -#define yyconst const -#else -#define yyconst -#endif - -/* Returned upon end-of-file. */ -#define YY_NULL 0 - -/* Promotes a possibly negative, possibly signed char to an unsigned - * integer for use as an array index. If the signed char is negative, - * we want to instead treat it as an 8-bit unsigned char, hence the - * double cast. - */ -#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) - -/* Enter a start condition. This macro really ought to take a parameter, - * but we do it the disgusting crufty way forced on us by the ()-less - * definition of BEGIN. - */ -#define BEGIN (yy_start) = 1 + 2 * - -/* Translate the current start state into a value that can be later handed - * to BEGIN to return to the state. The YYSTATE alias is for lex - * compatibility. - */ -#define YY_START (((yy_start) - 1) / 2) -#define YYSTATE YY_START - -/* Action number for EOF rule of a given start state. */ -#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) - -/* Special action meaning "start processing a new file". */ -#define YY_NEW_FILE yyrestart(yyin ) - -#define YY_END_OF_BUFFER_CHAR 0 - -/* Size of default input buffer. */ -#ifndef YY_BUF_SIZE -#define YY_BUF_SIZE 16384 -#endif - -/* The state buf must be large enough to hold one state per character in the main buffer. - */ -#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) - -#ifndef YY_TYPEDEF_YY_BUFFER_STATE -#define YY_TYPEDEF_YY_BUFFER_STATE -typedef struct yy_buffer_state *YY_BUFFER_STATE; -#endif - -#ifndef YY_TYPEDEF_YY_SIZE_T -#define YY_TYPEDEF_YY_SIZE_T -typedef size_t yy_size_t; -#endif - -extern yy_size_t yyleng; - -extern FILE *yyin, *yyout; - -#define EOB_ACT_CONTINUE_SCAN 0 -#define EOB_ACT_END_OF_FILE 1 -#define EOB_ACT_LAST_MATCH 2 - - #define YY_LESS_LINENO(n) - -/* Return all but the first "n" matched characters back to the input stream. */ -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - *yy_cp = (yy_hold_char); \ - YY_RESTORE_YY_MORE_OFFSET \ - (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up yytext again */ \ - } \ - while ( 0 ) - -#define unput(c) yyunput( c, (yytext_ptr) ) - -#ifndef YY_STRUCT_YY_BUFFER_STATE -#define YY_STRUCT_YY_BUFFER_STATE -struct yy_buffer_state - { - FILE *yy_input_file; - - char *yy_ch_buf; /* input buffer */ - char *yy_buf_pos; /* current position in input buffer */ - - /* Size of input buffer in bytes, not including room for EOB - * characters. - */ - yy_size_t yy_buf_size; - - /* Number of characters read into yy_ch_buf, not including EOB - * characters. - */ - yy_size_t yy_n_chars; - - /* Whether we "own" the buffer - i.e., we know we created it, - * and can realloc() it to grow it, and should free() it to - * delete it. - */ - int yy_is_our_buffer; - - /* Whether this is an "interactive" input source; if so, and - * if we're using stdio for input, then we want to use getc() - * instead of fread(), to make sure we stop fetching input after - * each newline. - */ - int yy_is_interactive; - - /* Whether we're considered to be at the beginning of a line. - * If so, '^' rules will be active on the next match, otherwise - * not. - */ - int yy_at_bol; - - int yy_bs_lineno; /**< The line count. */ - int yy_bs_column; /**< The column count. */ - - /* Whether to try to fill the input buffer when we reach the - * end of it. - */ - int yy_fill_buffer; - - int yy_buffer_status; - -#define YY_BUFFER_NEW 0 -#define YY_BUFFER_NORMAL 1 - /* When an EOF's been seen but there's still some text to process - * then we mark the buffer as YY_EOF_PENDING, to indicate that we - * shouldn't try reading from the input source any more. We might - * still have a bunch of tokens to match, though, because of - * possible backing-up. - * - * When we actually see the EOF, we change the status to "new" - * (via yyrestart()), so that the user can continue scanning by - * just pointing yyin at a new input file. - */ -#define YY_BUFFER_EOF_PENDING 2 - - }; -#endif /* !YY_STRUCT_YY_BUFFER_STATE */ - -/* Stack of input buffers. */ -static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ -static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ -static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ - -/* We provide macros for accessing buffer states in case in the - * future we want to put the buffer states in a more general - * "scanner state". - * - * Returns the top of the stack, or NULL. - */ -#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ - ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ - : NULL) - -/* Same as previous macro, but useful when we know that the buffer stack is not - * NULL or when we need an lvalue. For internal use only. - */ -#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] - -/* yy_hold_char holds the character lost when yytext is formed. */ -static char yy_hold_char; -static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */ -yy_size_t yyleng; - -/* Points to current character in buffer. */ -static char *yy_c_buf_p = (char *) 0; -static int yy_init = 0; /* whether we need to initialize */ -static int yy_start = 0; /* start state number */ - -/* Flag which is used to allow yywrap()'s to do buffer switches - * instead of setting up a fresh yyin. A bit of a hack ... - */ -static int yy_did_buffer_switch_on_eof; - -void yyrestart (FILE *input_file ); -void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ); -YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ); -void yy_delete_buffer (YY_BUFFER_STATE b ); -void yy_flush_buffer (YY_BUFFER_STATE b ); -void yypush_buffer_state (YY_BUFFER_STATE new_buffer ); -void yypop_buffer_state (void ); - -static void yyensure_buffer_stack (void ); -static void yy_load_buffer_state (void ); -static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ); - -#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER ) - -YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ); -YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ); -YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len ); - -void *yyalloc (yy_size_t ); -void *yyrealloc (void *,yy_size_t ); -void yyfree (void * ); - -#define yy_new_buffer yy_create_buffer - -#define yy_set_interactive(is_interactive) \ - { \ - if ( ! YY_CURRENT_BUFFER ){ \ - yyensure_buffer_stack (); \ - YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer(yyin,YY_BUF_SIZE ); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ - } - -#define yy_set_bol(at_bol) \ - { \ - if ( ! YY_CURRENT_BUFFER ){\ - yyensure_buffer_stack (); \ - YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer(yyin,YY_BUF_SIZE ); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ - } - -#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) - -/* Begin user sect3 */ - -typedef unsigned char YY_CHAR; - -FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; - -typedef int yy_state_type; - -extern int yylineno; - -int yylineno = 1; - -extern char *yytext; -#define yytext_ptr yytext - -static yy_state_type yy_get_previous_state (void ); -static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); -static int yy_get_next_buffer (void ); -static void yy_fatal_error (yyconst char msg[] ); - -/* Done after the current pattern has been matched and before the - * corresponding action - sets up yytext. - */ -#define YY_DO_BEFORE_ACTION \ - (yytext_ptr) = yy_bp; \ - (yytext_ptr) -= (yy_more_len); \ - yyleng = (yy_size_t) (yy_cp - (yytext_ptr)); \ - (yy_hold_char) = *yy_cp; \ - *yy_cp = '\0'; \ - (yy_c_buf_p) = yy_cp; - -#define YY_NUM_RULES 348 -#define YY_END_OF_BUFFER 349 -/* This struct is not used in this scanner, - but its presence is necessary. */ -struct yy_trans_info - { - flex_int32_t yy_verify; - flex_int32_t yy_nxt; - }; -static yyconst flex_int16_t yy_accept[3439] = - { 0, - 1, 1, 322, 322, 326, 326, 330, 330, 334, 334, - 1, 1, 338, 338, 342, 342, 349, 346, 1, 320, - 320, 347, 2, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 347, 322, 323, 323, 324, - 347, 326, 327, 327, 328, 347, 333, 330, 331, 331, - 332, 347, 334, 335, 335, 336, 347, 345, 321, 2, - 325, 345, 347, 341, 338, 339, 339, 340, 347, 342, - 343, 343, 344, 347, 346, 0, 1, 2, 2, 2, - 2, 346, 346, 346, 346, 346, 346, 346, 346, 346, - - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 322, - 0, 326, 0, 333, 0, 330, 334, 0, 345, 0, - 2, 2, 345, 341, 0, 338, 342, 0, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 345, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 128, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 137, - 346, 346, 346, 346, 346, 346, 346, 345, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 112, 346, 319, - 346, 346, 346, 346, 346, 346, 346, 8, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - - 346, 346, 346, 346, 346, 346, 346, 129, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 142, 346, 346, 345, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 312, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 345, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 67, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 244, 346, - 14, 15, 346, 19, 18, 346, 346, 228, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - - 346, 346, 346, 346, 346, 346, 346, 346, 346, 135, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 226, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 3, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 345, 346, 346, 346, 346, 346, 346, 346, - 306, 346, 346, 305, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 329, 346, 346, 346, 346, 346, 346, 346, 346, - 66, 346, 346, 346, 346, 346, 346, 346, 346, 346, - - 346, 346, 346, 346, 346, 346, 346, 70, 346, 275, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 313, - 314, 346, 346, 346, 346, 346, 346, 346, 71, 346, - 346, 136, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 132, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 215, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 21, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - - 346, 346, 346, 346, 346, 346, 346, 346, 346, 161, - 346, 346, 346, 346, 345, 329, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 110, 346, 346, - 346, 346, 346, 346, 346, 283, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 185, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 160, 346, 346, 346, 346, 346, 346, - - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 109, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 35, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 36, 346, 346, 346, 346, 346, 346, 346, 346, 346, - - 346, 346, 346, 346, 346, 346, 68, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 134, 346, 346, 345, - 346, 346, 346, 346, 346, 127, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 69, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 248, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 186, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - - 346, 346, 346, 346, 346, 346, 57, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 266, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 61, 346, 62, 346, 346, 346, 346, 346, 113, 346, - 114, 346, 346, 346, 346, 111, 346, 346, 346, 346, - - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 7, 346, 346, - 346, 345, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 237, 346, 346, 346, 346, 163, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 249, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - - 346, 346, 346, 346, 346, 346, 346, 346, 346, 48, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 58, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 207, 346, 206, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 16, 17, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 72, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 214, 346, 346, 346, 346, 346, - - 346, 116, 346, 115, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 198, 346, - 346, 346, 346, 346, 346, 346, 346, 143, 346, 346, - 345, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 104, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 92, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 227, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - - 346, 346, 346, 346, 346, 346, 97, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 65, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 201, 202, 346, - 346, 346, 277, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 6, 346, 346, 346, - 346, 346, 346, 296, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 281, 346, 346, 346, 346, 346, 346, 307, 346, - - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 45, 346, 346, 346, 346, 47, 346, 346, - 346, 93, 346, 346, 346, 346, 346, 55, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 345, 346, 194, - 346, 346, 346, 138, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 219, 346, 195, 346, 346, 346, - 234, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 56, 346, 346, 346, 346, 346, 346, 346, 346, - - 346, 346, 140, 121, 346, 122, 346, 346, 346, 120, - 346, 346, 346, 346, 346, 346, 346, 346, 158, 346, - 346, 53, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 265, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 196, 346, - 346, 346, 346, 346, 199, 346, 205, 346, 346, 346, - 346, 346, 346, 233, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 108, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 133, - - 346, 346, 346, 346, 346, 346, 346, 63, 346, 346, - 346, 29, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 20, 346, 346, 346, 346, 346, 346, - 30, 39, 346, 168, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 345, - 346, 346, 346, 346, 346, 346, 80, 82, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 285, 346, 346, 346, 346, 245, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 123, - - 346, 346, 346, 346, 346, 346, 346, 346, 346, 157, - 346, 49, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 300, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 162, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 294, 346, 346, 346, - 225, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 310, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 179, 346, 346, 346, 346, 346, 346, 346, - - 346, 346, 117, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 174, 346, 187, 346, 346, 346, - 346, 346, 346, 345, 346, 146, 346, 346, 346, 346, - 346, 103, 346, 346, 346, 346, 217, 346, 346, 346, - 346, 346, 346, 235, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 257, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 139, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 178, 346, 346, 346, - - 346, 346, 346, 83, 346, 84, 346, 346, 346, 346, - 346, 64, 303, 346, 346, 346, 346, 346, 91, 188, - 346, 208, 346, 238, 346, 346, 200, 278, 346, 346, - 346, 346, 346, 346, 76, 346, 190, 346, 346, 346, - 346, 346, 9, 346, 346, 346, 346, 346, 107, 346, - 346, 346, 346, 270, 346, 346, 346, 346, 216, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - - 346, 346, 346, 346, 346, 346, 346, 346, 346, 345, - 346, 346, 346, 346, 177, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 164, 346, 284, 346, 346, - 346, 346, 346, 256, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 229, 346, 346, 346, 346, - 346, 276, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 304, 346, 189, 346, 346, 346, 346, 346, - 346, 346, 346, 75, 77, 346, 346, 346, 346, 346, - - 346, 346, 346, 346, 106, 346, 346, 346, 346, 268, - 346, 346, 346, 346, 280, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 221, 37, 31, - 33, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 38, 346, 32, 34, 346, 346, 346, 346, - 346, 346, 346, 346, 102, 346, 346, 346, 346, 346, - 346, 346, 346, 345, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 223, 220, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 74, 346, 346, 346, 141, - - 346, 124, 346, 346, 346, 346, 346, 346, 346, 346, - 159, 50, 346, 346, 346, 337, 13, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 298, 346, 301, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 12, 346, 346, 22, 346, 346, 346, 346, 346, - 274, 346, 346, 346, 346, 282, 346, 346, 346, 78, - 346, 231, 346, 346, 346, 346, 346, 222, 346, 346, - 73, 346, 346, 346, 346, 346, 23, 346, 346, 46, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 173, 172, 346, 346, 337, 346, 346, 346, - - 346, 346, 346, 346, 346, 346, 224, 218, 346, 236, - 346, 346, 286, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 85, 346, 346, 346, 346, - 269, 346, 346, 346, 346, 204, 346, 346, 346, 346, - 346, 230, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 308, 309, 170, 346, 346, 79, 346, - 346, 346, 346, 180, 346, 346, 346, 118, 119, 346, - 346, 346, 25, 346, 346, 165, 346, 167, 346, 209, - - 346, 346, 346, 346, 171, 346, 346, 346, 346, 239, - 346, 346, 346, 346, 346, 346, 346, 148, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 247, 346, 346, 346, 346, 346, 346, 346, 317, 346, - 27, 346, 279, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 89, 210, 346, - 346, 267, 346, 302, 346, 203, 346, 346, 346, 346, - 346, 59, 346, 346, 346, 346, 346, 346, 4, 346, - 346, 346, 346, 131, 147, 346, 346, 346, 184, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - - 346, 346, 346, 346, 346, 346, 346, 242, 40, 41, - 346, 346, 346, 346, 346, 346, 346, 287, 346, 346, - 346, 346, 346, 346, 346, 255, 346, 346, 346, 346, - 346, 346, 346, 346, 213, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 88, 346, 60, - 273, 346, 243, 346, 346, 346, 346, 346, 11, 346, - 346, 346, 346, 346, 346, 346, 346, 130, 346, 346, - 346, 346, 211, 94, 346, 346, 43, 346, 346, 346, - 346, 346, 346, 346, 346, 176, 346, 346, 346, 346, - 346, 346, 346, 150, 346, 346, 346, 346, 246, 346, - - 346, 346, 346, 346, 254, 346, 346, 346, 346, 144, - 346, 346, 346, 125, 126, 346, 346, 346, 96, 100, - 95, 346, 346, 346, 346, 86, 346, 346, 346, 346, - 346, 346, 10, 346, 346, 346, 346, 346, 271, 311, - 346, 346, 346, 346, 346, 316, 42, 346, 346, 346, - 346, 346, 175, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 101, 99, - 346, 54, 346, 346, 87, 299, 346, 346, 346, 346, - 24, 346, 346, 346, 346, 346, 197, 346, 346, 346, - - 346, 346, 212, 346, 346, 346, 346, 346, 346, 346, - 346, 193, 346, 346, 166, 81, 346, 346, 346, 346, - 346, 288, 346, 346, 346, 346, 346, 346, 346, 251, - 346, 346, 250, 145, 346, 346, 98, 51, 346, 151, - 152, 155, 156, 153, 154, 90, 297, 346, 346, 272, - 346, 346, 346, 26, 346, 169, 346, 346, 346, 346, - 192, 346, 241, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 182, 181, 44, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - - 346, 346, 346, 346, 346, 346, 346, 346, 295, 346, - 346, 346, 346, 105, 346, 240, 346, 264, 292, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 318, 346, 52, 5, 346, 346, 232, 346, 346, 293, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 252, - 28, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 253, 346, 346, 346, 149, 346, 346, - 346, 346, 346, 346, 346, 346, 183, 346, 191, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 289, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - - 346, 346, 346, 346, 346, 346, 315, 346, 346, 260, - 346, 346, 346, 346, 346, 290, 346, 346, 346, 346, - 346, 346, 291, 346, 346, 346, 258, 346, 261, 262, - 346, 346, 346, 346, 346, 259, 263, 0 - } ; - -static yyconst flex_int32_t yy_ec[256] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, - 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 1, 5, 6, 1, 1, 1, 7, 1, - 1, 1, 1, 1, 8, 1, 1, 1, 9, 1, - 10, 11, 1, 12, 1, 1, 1, 13, 1, 1, - 1, 1, 1, 1, 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, - 1, 40, 1, 1, 1, 1, 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, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1 - } ; - -static yyconst flex_int32_t yy_meta[67] = - { 0, - 1, 2, 3, 4, 5, 1, 6, 1, 1, 1, - 1, 1, 7, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1 - } ; - -static yyconst flex_int16_t yy_base[3457] = - { 0, - 0, 0, 64, 67, 70, 72, 78, 84, 89, 92, - 131, 137, 112, 118, 123, 142, 429, 383, 96, 9825, - 9825, 9825, 160, 185, 116, 183, 229, 132, 175, 173, - 232, 50, 66, 120, 263, 275, 151, 323, 134, 375, - 416, 286, 308, 283, 126, 237, 374, 9825, 9825, 9825, - 95, 372, 9825, 9825, 9825, 186, 361, 373, 9825, 9825, - 9825, 258, 309, 9825, 9825, 9825, 104, 293, 9825, 266, - 9825, 167, 351, 281, 311, 9825, 9825, 9825, 369, 268, - 9825, 9825, 9825, 146, 252, 378, 177, 0, 392, 0, - 0, 303, 270, 235, 317, 362, 344, 384, 178, 177, - - 226, 420, 377, 330, 379, 402, 414, 419, 410, 453, - 319, 367, 440, 429, 447, 454, 463, 459, 458, 489, - 495, 484, 474, 493, 499, 460, 500, 504, 510, 492, - 524, 520, 532, 525, 537, 529, 412, 533, 558, 539, - 531, 548, 565, 559, 250, 505, 587, 575, 574, 584, - 570, 580, 610, 601, 595, 604, 607, 614, 615, 208, - 294, 205, 236, 194, 670, 225, 180, 326, 158, 674, - 678, 0, 623, 152, 682, 176, 130, 653, 650, 680, - 661, 609, 675, 670, 676, 666, 671, 682, 672, 691, - 720, 697, 696, 703, 256, 726, 770, 731, 723, 714, - - 734, 737, 724, 718, 745, 740, 749, 759, 766, 728, - 773, 760, 772, 787, 819, 789, 762, 797, 339, 802, - 827, 378, 808, 443, 832, 805, 699, 829, 725, 838, - 836, 844, 843, 835, 852, 847, 866, 860, 849, 864, - 875, 874, 871, 865, 868, 911, 885, 878, 893, 892, - 894, 907, 908, 902, 913, 781, 909, 920, 921, 935, - 912, 937, 930, 919, 943, 950, 948, 956, 957, 938, - 958, 955, 953, 960, 954, 973, 969, 984, 994, 986, - 993, 1002, 989, 995, 988, 996, 999, 987, 1013, 1014, - 1022, 1026, 144, 1020, 1029, 1031, 1019, 1028, 1039, 1041, - - 1051, 1052, 1053, 1036, 1057, 1062, 1072, 1069, 1070, 1076, - 1079, 1088, 1055, 1067, 1065, 1082, 1092, 1098, 1087, 1100, - 1091, 1103, 1115, 1106, 1120, 1099, 1134, 1132, 1127, 1159, - 1136, 1128, 1148, 1189, 1154, 1143, 1162, 1185, 1169, 1155, - 1190, 1182, 1193, 1205, 1191, 1204, 1197, 1206, 1224, 1227, - 1215, 1231, 1229, 1220, 1226, 1233, 1249, 1258, 9825, 1242, - 1240, 1269, 1260, 1266, 1275, 1267, 1296, 1273, 1283, 1279, - 1291, 1298, 1344, 1392, 1293, 1311, 1301, 1304, 1307, 9825, - 1333, 1308, 1441, 1339, 1328, 1329, 1363, 1340, 1331, 1355, - 1364, 1356, 1300, 1359, 1367, 1390, 1403, 1400, 1379, 1389, - - 1406, 1419, 1410, 1306, 1438, 1427, 1437, 1431, 1383, 1434, - 1446, 1458, 1479, 1461, 1475, 1476, 1480, 1493, 1496, 1497, - 1508, 1503, 1486, 1502, 1518, 1515, 1522, 1528, 1573, 1484, - 1529, 1535, 1542, 1532, 1520, 1448, 1547, 1554, 1549, 1561, - 1562, 1556, 1579, 1401, 1567, 1583, 1570, 1575, 1597, 1580, - 1594, 1598, 1599, 1607, 1600, 1609, 1593, 1620, 1630, 1635, - 1637, 1634, 1643, 1645, 1627, 1651, 1631, 9825, 1654, 9825, - 1642, 1657, 1667, 1662, 1661, 1671, 1673, 9825, 1677, 1669, - 1679, 1688, 1706, 1696, 1712, 1681, 1703, 1708, 1718, 1711, - 1713, 1714, 1700, 1731, 1736, 1723, 1744, 1729, 1732, 1738, - - 1752, 1745, 1761, 1746, 1748, 1755, 1795, 9825, 1750, 1764, - 1771, 1779, 1773, 1797, 1789, 1800, 1828, 1793, 1812, 1824, - 1798, 1851, 1830, 1831, 1823, 1836, 1834, 1848, 1841, 1861, - 1850, 1857, 1858, 1852, 1860, 1875, 1881, 1872, 1879, 1889, - 9825, 1888, 1899, 1900, 1906, 1893, 1896, 1909, 1898, 1914, - 1892, 1930, 1922, 1938, 1918, 1936, 1943, 1919, 1939, 1952, - 1941, 1945, 1946, 1949, 1954, 1947, 1973, 1967, 1990, 1971, - 1988, 1993, 2000, 1996, 1997, 2004, 2006, 1981, 1991, 2009, - 2008, 1995, 1999, 2018, 2020, 2005, 2019, 2033, 2047, 2039, - 2026, 2045, 2035, 2053, 2036, 2040, 2052, 2042, 2048, 2064, - - 2077, 2059, 2086, 2065, 2092, 2069, 2074, 2100, 2101, 2085, - 2088, 9825, 2107, 2102, 2115, 2127, 2117, 2120, 2130, 2121, - 2125, 2129, 2128, 2134, 2140, 2146, 2142, 2152, 2138, 2156, - 2165, 2163, 2113, 2170, 2178, 2186, 2179, 2183, 2173, 2180, - 2184, 2177, 2198, 2190, 2217, 2211, 2199, 2215, 2232, 2206, - 2216, 2230, 2233, 2212, 2225, 2240, 2228, 2236, 2246, 2251, - 2241, 2258, 2274, 2271, 2264, 2257, 2281, 2267, 2285, 2272, - 2275, 2277, 2284, 2280, 2310, 2311, 2309, 2304, 2306, 2305, - 2307, 2312, 2313, 2330, 2327, 2329, 2332, 2322, 2331, 2342, - 2356, 2345, 2346, 2348, 2358, 2359, 2375, 2367, 2364, 2391, - - 2370, 2379, 2385, 2386, 2394, 2393, 2397, 2388, 2403, 2412, - 2407, 2424, 2426, 2415, 2425, 2436, 2421, 2437, 2428, 2340, - 2442, 2451, 2434, 2443, 2441, 2456, 2452, 2455, 2475, 2479, - 2485, 2481, 2478, 9825, 2470, 2495, 2472, 2490, 2484, 2493, - 2482, 2506, 2502, 2497, 2507, 2501, 2512, 2558, 9825, 2515, - 9825, 9825, 2521, 9825, 9825, 2535, 2541, 9825, 2548, 2537, - 2539, 2545, 2568, 2582, 2573, 2561, 2572, 2571, 2566, 2618, - 2596, 2581, 2594, 2611, 2565, 2613, 2621, 2605, 2616, 2629, - 2632, 2655, 2607, 2660, 2650, 2662, 2668, 2666, 2670, 2674, - 2672, 2676, 2663, 2664, 2680, 2688, 2685, 2701, 2712, 2699, - - 2702, 2717, 2703, 2707, 2698, 2690, 2722, 2723, 2737, 9825, - 2728, 2729, 2732, 2743, 2747, 2758, 2739, 2755, 2749, 2762, - 2763, 2759, 2750, 2760, 2764, 2754, 2777, 2756, 2773, 2787, - 2789, 2780, 2806, 2784, 9825, 2799, 2800, 2786, 2807, 2813, - 2802, 2814, 2801, 2818, 2829, 2804, 2852, 2847, 2835, 2832, - 2844, 2830, 2837, 2857, 9825, 2856, 2861, 2842, 2862, 2845, - 2871, 2872, 2874, 2877, 2893, 2880, 2882, 2887, 2881, 2911, - 2901, 2904, 2898, 2907, 2906, 2914, 2926, 2930, 2915, 2927, - 2925, 2938, 2931, 2928, 2939, 2934, 2941, 2944, 2955, 2974, - 2961, 2981, 2963, 2965, 2984, 2986, 2966, 2976, 2987, 2989, - - 2979, 2997, 3001, 3002, 2991, 3004, 3015, 3003, 3019, 3020, - 3028, 3021, 3040, 3026, 3045, 3042, 3029, 3032, 3053, 3035, - 9825, 3047, 3059, 9825, 3048, 3057, 3062, 3108, 3081, 3087, - 3078, 3063, 3069, 3095, 3088, 3098, 3096, 3118, 3107, 3122, - 3123, 3138, 3121, 3128, 3135, 3148, 3152, 3140, 3157, 3159, - 3167, 3172, 3100, 3162, 3176, 381, 3183, 3160, 3178, 3174, - 3224, 3179, 3180, 3188, 3184, 3189, 3208, 3206, 3207, 3201, - 3212, 3210, 3227, 3237, 3233, 3228, 3240, 3248, 3236, 3257, - 3254, 9825, 3267, 3265, 3259, 3271, 3269, 3284, 3275, 3270, - 9825, 3281, 3291, 3283, 3292, 3295, 3287, 3307, 3293, 3301, - - 3303, 3309, 3316, 3320, 3318, 3327, 3337, 9825, 3319, 9825, - 3339, 3338, 3336, 3330, 3345, 3342, 3340, 3356, 3365, 9825, - 9825, 3368, 3366, 3376, 3379, 3369, 3374, 3371, 9825, 3383, - 3412, 9825, 3390, 3405, 3395, 3393, 3398, 3397, 3406, 3416, - 3428, 3407, 3433, 3422, 3424, 3430, 9825, 3435, 3426, 3440, - 3443, 3434, 3454, 3461, 3464, 3456, 9825, 3446, 3460, 3453, - 3483, 3482, 3475, 3467, 3486, 3491, 3479, 3480, 3478, 3501, - 3487, 3506, 3513, 3510, 3512, 3525, 3516, 3527, 9825, 3518, - 3511, 3514, 3535, 3531, 3532, 3537, 3538, 3533, 3530, 3550, - 3552, 3556, 3561, 3554, 3557, 3568, 3573, 3575, 3570, 3581, - - 3571, 3582, 3576, 3577, 91, 3588, 3583, 3599, 3580, 9825, - 3602, 3611, 3615, 3617, 3603, 128, 3610, 3612, 3613, 3626, - 3632, 3634, 3616, 3640, 3651, 3639, 3652, 3654, 3659, 3646, - 3648, 3665, 3661, 3650, 3667, 3675, 3653, 9825, 3671, 3679, - 3677, 3685, 3699, 3687, 3714, 9825, 3704, 3709, 3711, 3713, - 3717, 3715, 3718, 3720, 3731, 3741, 3747, 3734, 3742, 3757, - 3745, 3756, 3744, 9825, 3764, 3760, 3768, 3755, 3780, 3766, - 3769, 3783, 3784, 3782, 3776, 3789, 3806, 3796, 3795, 3797, - 3802, 3811, 3812, 3810, 3816, 3823, 3819, 3829, 3837, 3833, - 3826, 3840, 3838, 9825, 3847, 3853, 3856, 3854, 3846, 3861, - - 3864, 3859, 3892, 3875, 3876, 3886, 3883, 3926, 3888, 3896, - 3911, 3913, 3915, 3916, 3917, 3919, 3928, 3929, 3938, 3936, - 3964, 3889, 3950, 3923, 3961, 3951, 3974, 3966, 3955, 3986, - 3988, 3982, 3981, 4007, 3997, 3976, 3947, 4006, 3999, 9825, - 4014, 4004, 3993, 4013, 4035, 4030, 4020, 4031, 4037, 4044, - 4040, 4041, 4047, 4049, 4054, 4048, 4058, 4065, 4063, 4064, - 4082, 4066, 4069, 4074, 4095, 4083, 4102, 4101, 9825, 4104, - 4100, 4093, 4099, 4113, 4097, 4114, 4118, 4110, 4122, 4126, - 4123, 4128, 4134, 4130, 4132, 4141, 4149, 4129, 4156, 4144, - 9825, 4160, 4157, 4159, 4153, 4161, 4165, 4177, 4192, 4191, - - 4197, 4200, 4183, 4202, 4199, 4190, 9825, 4207, 4212, 4209, - 4216, 4204, 4218, 4227, 4215, 4224, 9825, 4228, 4239, 4232, - 4230, 4225, 4226, 4261, 4252, 9825, 4265, 4264, 4242, 4243, - 4255, 4254, 4269, 4271, 4266, 4275, 4279, 4296, 4280, 4281, - 4298, 9825, 4290, 4315, 4294, 4307, 4310, 4305, 4311, 4329, - 4343, 4313, 4331, 4327, 9825, 4325, 4346, 4352, 4362, 4340, - 4338, 4354, 4356, 4371, 4366, 4360, 4377, 4365, 9825, 4381, - 4378, 4379, 4393, 4398, 4383, 4399, 4405, 4403, 4400, 4417, - 4420, 4421, 4414, 4411, 4427, 4432, 4422, 4430, 4449, 4438, - 4442, 4448, 4454, 4457, 4461, 4456, 4471, 4466, 4458, 4452, - - 4481, 4492, 4494, 4495, 4490, 4501, 9825, 4496, 4499, 4497, - 4487, 4498, 4493, 4489, 4508, 4511, 4516, 4519, 4535, 4530, - 4522, 4550, 4552, 4528, 4555, 4532, 4534, 4549, 4559, 4546, - 4554, 4542, 4571, 4567, 4568, 4563, 4575, 4577, 4578, 4598, - 4581, 4587, 4590, 4591, 4593, 4576, 4604, 4611, 4618, 4603, - 4613, 4614, 4628, 4629, 4630, 4638, 4631, 4634, 4637, 4661, - 9825, 4633, 4647, 4639, 4648, 4656, 4673, 4671, 4687, 4669, - 4678, 4681, 4685, 4688, 4677, 4675, 4700, 4690, 4706, 4721, - 9825, 4704, 9825, 4702, 4720, 4727, 4711, 4712, 9825, 4726, - 9825, 4731, 4730, 4719, 4724, 9825, 4738, 4739, 4736, 4755, - - 4749, 4743, 4757, 4752, 4758, 4770, 4766, 4785, 4765, 4763, - 4779, 4778, 4768, 4797, 4795, 4792, 4784, 4799, 4817, 4816, - 4807, 4822, 4806, 4818, 4831, 4813, 4833, 9825, 4839, 4840, - 4837, 4830, 4834, 4849, 4851, 4854, 4847, 4874, 4877, 4864, - 4865, 4883, 4878, 4881, 4869, 4891, 4895, 4899, 4897, 4908, - 9825, 4892, 4888, 4902, 4901, 9825, 4918, 4912, 4924, 4929, - 4926, 4914, 4916, 4934, 4941, 4920, 4943, 4946, 4968, 4951, - 4949, 4969, 9825, 4953, 4970, 4952, 4957, 4983, 4990, 4995, - 4987, 4993, 4999, 4996, 4998, 5005, 4989, 5009, 5004, 5008, - 5010, 5013, 5034, 5014, 5006, 5037, 5043, 5041, 5026, 5027, - - 5030, 5035, 5038, 5045, 5040, 5053, 5056, 5061, 5062, 9825, - 5070, 5072, 5079, 5080, 5071, 5077, 5074, 5086, 5075, 9825, - 5095, 5083, 5107, 5102, 5115, 5109, 5111, 5104, 5099, 5123, - 5118, 5130, 5144, 5119, 9825, 5134, 9825, 5138, 5145, 5140, - 5147, 5146, 5150, 5166, 5170, 5165, 5160, 5177, 5181, 5183, - 5167, 5173, 5190, 5193, 5209, 5192, 5171, 5202, 5187, 5210, - 5204, 5211, 5208, 5232, 5228, 5229, 9825, 9825, 5215, 5226, - 5242, 5230, 5238, 5249, 5257, 5252, 5270, 5259, 5262, 5260, - 5295, 9825, 5266, 5267, 5274, 5287, 5235, 5285, 5298, 5305, - 5301, 5294, 5316, 5307, 9825, 5297, 5304, 5320, 5314, 5333, - - 5321, 9825, 5329, 9825, 5319, 5330, 5331, 5345, 5343, 5340, - 5346, 5348, 5354, 5357, 5362, 5364, 5379, 5365, 5385, 5366, - 5369, 5375, 5390, 5384, 5404, 5381, 5391, 5382, 9825, 5401, - 5395, 5412, 5414, 5418, 5420, 5417, 5406, 9825, 5427, 5432, - 5428, 5422, 5438, 5439, 5445, 5441, 5448, 5447, 5444, 5464, - 5465, 9825, 5454, 5459, 5474, 5468, 5471, 5484, 5470, 5491, - 5482, 9825, 5478, 5487, 5498, 5499, 5500, 5506, 5510, 5495, - 5497, 5502, 5514, 5523, 5525, 5522, 5524, 5529, 5533, 5539, - 5542, 5565, 5540, 5549, 5553, 5507, 5547, 9825, 5554, 5559, - 5563, 5567, 5580, 5569, 5592, 5584, 5598, 5581, 5599, 5602, - - 5594, 5595, 5613, 5614, 5607, 5620, 9825, 5622, 5606, 5632, - 5610, 5628, 5636, 5619, 5633, 5644, 5637, 5627, 5651, 5660, - 5662, 5658, 5678, 5649, 5650, 5653, 5675, 5654, 9825, 5698, - 5672, 5688, 5655, 5693, 5694, 5711, 5699, 5687, 5689, 5712, - 5696, 5726, 5713, 5719, 5728, 5732, 5723, 9825, 9825, 5742, - 5720, 5735, 9825, 5739, 5730, 5757, 5747, 5758, 5740, 5749, - 5766, 5756, 5753, 5776, 5755, 5770, 9825, 5782, 5794, 5775, - 5789, 5799, 5803, 9825, 5788, 5804, 5798, 5806, 5792, 5790, - 5793, 5815, 5821, 5817, 5814, 5828, 5823, 5841, 5825, 5831, - 5839, 9825, 5833, 5842, 5844, 5847, 5838, 5848, 9825, 5858, - - 5874, 5860, 5873, 5872, 5882, 5885, 5886, 5883, 5871, 5880, - 5876, 5888, 5891, 5903, 5901, 5899, 5910, 5909, 5918, 5927, - 5932, 5930, 9825, 5926, 5940, 5919, 5942, 9825, 5943, 5968, - 5937, 9825, 5945, 5921, 5944, 5953, 5960, 9825, 5961, 5971, - 5967, 5957, 5986, 5963, 5991, 5970, 5976, 5972, 5981, 9825, - 5995, 5992, 6000, 9825, 5998, 6009, 6014, 6015, 5997, 6026, - 6023, 6025, 6027, 6022, 9825, 6034, 9825, 6032, 6028, 6042, - 9825, 6036, 6052, 6041, 6045, 6038, 6066, 6072, 6073, 6051, - 6060, 6074, 6063, 6065, 6078, 6089, 6090, 6068, 6079, 6096, - 6098, 9825, 6117, 6101, 6111, 6104, 6121, 6123, 6115, 6109, - - 6128, 6113, 9825, 9825, 6134, 9825, 6140, 6136, 6142, 9825, - 6147, 6150, 6170, 6149, 6167, 6169, 6172, 6165, 9825, 6175, - 6177, 9825, 6157, 6176, 6186, 6181, 6179, 6163, 6210, 6203, - 6193, 6204, 6205, 6206, 6207, 6196, 6209, 6223, 9825, 6198, - 6230, 6228, 6227, 6234, 6238, 6232, 6255, 6243, 9825, 6259, - 6245, 6248, 6268, 6269, 9825, 6262, 9825, 6265, 6272, 6282, - 6275, 6278, 6289, 9825, 6286, 6287, 6306, 6285, 6302, 6315, - 6313, 6314, 6304, 6300, 6328, 6321, 6312, 6323, 6337, 6343, - 9825, 6338, 6340, 6336, 6355, 6344, 6341, 6348, 6353, 6364, - 6342, 6381, 6372, 6365, 6373, 6375, 6385, 6390, 6378, 9825, - - 6398, 6404, 6388, 6418, 6399, 6405, 6408, 9825, 6415, 6423, - 6424, 9825, 6417, 6419, 6431, 6443, 6434, 6435, 6432, 6438, - 6446, 6449, 6466, 9825, 6456, 6457, 6454, 6467, 6473, 6476, - 9825, 9825, 6483, 9825, 6480, 6465, 6482, 6490, 6479, 6505, - 6511, 6509, 6519, 6501, 6517, 6522, 6510, 6506, 6531, 6512, - 6556, 6535, 6545, 6539, 6547, 6533, 9825, 9825, 6543, 6558, - 6554, 6564, 6566, 6565, 6560, 6562, 6570, 6587, 6568, 6571, - 6601, 9825, 6595, 6586, 6603, 6589, 9825, 6583, 6612, 6596, - 6605, 6613, 6611, 6615, 6621, 6622, 6628, 6624, 6633, 6638, - 6647, 6635, 6639, 6651, 6640, 6664, 6658, 6654, 6643, 9825, - - 6665, 6656, 6668, 6666, 6670, 6682, 6655, 6692, 6684, 9825, - 6691, 9825, 6695, 6693, 6709, 6710, 6713, 6718, 6714, 6711, - 6716, 6733, 6725, 6727, 6745, 6729, 6734, 6735, 6754, 6756, - 6758, 6759, 6761, 9825, 6762, 6743, 6744, 6757, 6777, 6778, - 6760, 6780, 6781, 6797, 6783, 6795, 6801, 6802, 6789, 6804, - 6792, 6806, 6796, 9825, 6807, 6811, 6816, 6814, 6819, 6826, - 6818, 6849, 6817, 6833, 6836, 6853, 9825, 6839, 6842, 6856, - 9825, 6847, 6845, 6843, 6869, 6857, 6870, 6866, 6860, 6876, - 9825, 6886, 6879, 6883, 6887, 6893, 6894, 6878, 6906, 6900, - 6913, 6905, 9825, 6924, 6910, 6936, 6938, 6919, 6932, 6926, - - 6949, 6903, 9825, 6950, 6952, 6933, 6963, 6966, 6946, 6965, - 6969, 6973, 6981, 6958, 6974, 6985, 6982, 6989, 6990, 6993, - 6992, 6994, 7000, 7007, 9825, 6977, 9825, 7013, 7027, 7008, - 7030, 7014, 7035, 7032, 7024, 9825, 7026, 7029, 7043, 7033, - 7038, 9825, 7040, 7060, 7053, 7065, 9825, 7058, 7073, 7062, - 7069, 7083, 7085, 9825, 7084, 7087, 7088, 7096, 7099, 7089, - 7097, 7092, 7100, 7095, 7104, 7102, 7129, 7137, 7122, 7133, - 9825, 7131, 7139, 7140, 7141, 7134, 7144, 7127, 7148, 7150, - 7159, 9825, 7171, 7158, 7161, 7168, 7179, 7164, 7185, 7160, - 7186, 7175, 7170, 7177, 7195, 7180, 9825, 7202, 7199, 7213, - - 7226, 7216, 7223, 9825, 7221, 9825, 7217, 7232, 7234, 7209, - 7238, 9825, 9825, 7242, 7243, 7244, 7247, 7240, 9825, 9825, - 7254, 9825, 7245, 9825, 7241, 7259, 9825, 9825, 7272, 7252, - 7264, 7279, 7282, 7280, 9825, 7288, 9825, 7294, 7291, 7281, - 7271, 7290, 9825, 7304, 7298, 7314, 7315, 7303, 9825, 7307, - 7305, 7311, 7318, 9825, 7310, 7332, 7317, 7321, 9825, 7345, - 7313, 7342, 7331, 7343, 7350, 7359, 7337, 7353, 7356, 7360, - 7364, 7369, 7366, 7375, 7381, 7385, 7390, 7387, 7379, 7395, - 7402, 7404, 7398, 7393, 7406, 7401, 7388, 7407, 7419, 7416, - 7438, 7439, 7430, 7432, 7440, 7437, 7431, 7448, 7434, 7436, - - 7442, 7443, 7446, 7457, 7469, 7461, 7473, 7464, 7488, 7480, - 7493, 7489, 7491, 7495, 9825, 7484, 7481, 7474, 7520, 7512, - 7500, 7529, 7528, 7531, 7535, 9825, 7537, 9825, 7539, 7524, - 7530, 7525, 7533, 9825, 7550, 7527, 7551, 7554, 7567, 7559, - 7578, 7562, 7565, 7566, 7586, 9825, 7585, 7577, 7568, 7589, - 7588, 9825, 7593, 7596, 7581, 7601, 7614, 7607, 7606, 7609, - 7615, 7611, 7632, 7635, 7617, 7625, 7633, 7640, 7645, 7652, - 7638, 7646, 7636, 7654, 7648, 7649, 7651, 7672, 7682, 7674, - 7683, 7686, 9825, 7670, 9825, 7678, 7673, 7679, 7688, 7697, - 7698, 7700, 7704, 9825, 9825, 7701, 7714, 7707, 7711, 7715, - - 7722, 7725, 7724, 7728, 9825, 7730, 7742, 7737, 7727, 9825, - 7741, 7738, 7750, 7761, 9825, 7759, 7753, 7772, 7774, 7760, - 7775, 7773, 7781, 7766, 7780, 7764, 7794, 9825, 9825, 9825, - 9825, 7795, 7788, 7804, 7799, 7800, 7805, 7807, 7809, 7820, - 7808, 7815, 9825, 7824, 9825, 9825, 7833, 7839, 7832, 7843, - 7841, 7806, 7845, 7842, 9825, 7847, 7851, 7853, 7852, 7861, - 7863, 7859, 7865, 7882, 7880, 7888, 7877, 7878, 7902, 7894, - 7897, 7885, 7901, 7903, 7908, 9825, 9825, 7904, 7910, 7913, - 7918, 7914, 7927, 7920, 7941, 7935, 7933, 7940, 7936, 7942, - 7931, 7947, 7953, 7959, 7943, 9825, 7965, 7966, 7954, 9825, - - 7961, 9825, 7970, 7978, 7967, 7974, 7980, 7981, 7994, 7997, - 9825, 9825, 7986, 8001, 8003, 9825, 9825, 7992, 7998, 7996, - 8020, 8019, 8008, 8023, 8014, 8034, 8021, 9825, 8022, 9825, - 8024, 8035, 8043, 8030, 8057, 8063, 8042, 8068, 8065, 8064, - 8069, 9825, 8066, 8067, 9825, 8073, 8076, 8077, 8071, 8082, - 9825, 8087, 8092, 8078, 8086, 9825, 8089, 8107, 8112, 9825, - 8118, 9825, 8100, 8116, 8113, 8128, 8114, 9825, 8102, 8129, - 9825, 8131, 8132, 8133, 8137, 8138, 9825, 8135, 8143, 9825, - 8146, 8142, 8153, 8167, 8156, 8168, 8159, 8157, 8160, 8181, - 8179, 8178, 9825, 9825, 8190, 8184, 73, 8196, 8177, 8183, - - 8187, 8186, 8195, 8193, 8208, 8197, 9825, 9825, 8210, 9825, - 8213, 8222, 9825, 8201, 8228, 8232, 8229, 8236, 8239, 8223, - 8224, 8244, 8240, 8258, 8248, 8245, 8268, 8282, 8283, 8260, - 8280, 8285, 8289, 8291, 8293, 8281, 8295, 8278, 8275, 8299, - 8296, 8306, 8305, 8309, 8310, 9825, 8334, 8335, 8336, 8322, - 9825, 8343, 8337, 8345, 8341, 9825, 8347, 8342, 8349, 8350, - 8356, 9825, 8357, 8352, 8376, 8372, 8363, 8377, 8374, 8360, - 8378, 8384, 8390, 9825, 9825, 9825, 8392, 8395, 9825, 8396, - 8386, 8385, 8407, 9825, 8406, 8405, 8416, 9825, 9825, 8404, - 8421, 8427, 9825, 8415, 8403, 9825, 8432, 9825, 8418, 9825, - - 8433, 8441, 8448, 8431, 9825, 8442, 8437, 8443, 8477, 9825, - 8461, 8472, 8479, 8471, 8462, 8464, 8485, 9825, 8491, 8487, - 8488, 8494, 8484, 8489, 8476, 8495, 8505, 8518, 8506, 8525, - 9825, 8522, 8529, 8530, 8536, 8519, 8524, 8527, 9825, 8520, - 9825, 8541, 9825, 8546, 8547, 8544, 8561, 8556, 8557, 8569, - 8573, 8554, 8571, 8567, 8563, 8579, 8574, 9825, 9825, 8591, - 8592, 9825, 8581, 9825, 8595, 9825, 8594, 8597, 8604, 8598, - 8606, 9825, 8615, 8603, 8608, 8631, 8605, 8620, 9825, 8626, - 8629, 8630, 8634, 9825, 9825, 8625, 8651, 8654, 9825, 8638, - 8648, 8662, 8652, 8644, 8663, 8657, 8665, 8653, 8656, 8650, - - 8676, 8677, 8685, 8678, 8695, 8696, 8701, 9825, 9825, 9825, - 8694, 8687, 8713, 8710, 8708, 8718, 8709, 9825, 8712, 8716, - 8714, 8723, 8735, 8730, 8731, 9825, 8737, 8733, 8728, 8739, - 8732, 8744, 8740, 8759, 9825, 8761, 8765, 8767, 8770, 8776, - 8773, 8777, 8782, 8774, 8779, 8775, 8780, 9825, 8789, 9825, - 9825, 8791, 9825, 8771, 8795, 8794, 8797, 8814, 9825, 8796, - 8799, 8808, 8816, 8809, 8822, 8828, 8833, 9825, 8839, 8818, - 8832, 8842, 9825, 9825, 8840, 8848, 9825, 8850, 8857, 8849, - 8844, 8841, 8856, 8870, 8867, 9825, 8869, 8874, 8865, 8866, - 8876, 8875, 8889, 9825, 8890, 8888, 8884, 8899, 9825, 8891, - - 8894, 8906, 8908, 8900, 9825, 8915, 8918, 8933, 8925, 9825, - 8921, 8936, 8927, 9825, 9825, 8943, 8944, 8945, 9825, 9825, - 9825, 8953, 8950, 8942, 8958, 9825, 8959, 8975, 8980, 8962, - 8985, 8960, 9825, 8976, 8983, 8990, 8977, 8979, 9825, 9825, - 8974, 8978, 8991, 8997, 8989, 9825, 9825, 8986, 9007, 9022, - 9006, 9012, 9825, 9010, 9024, 9030, 9023, 9034, 9031, 9040, - 9033, 9038, 9054, 9052, 9049, 9044, 9053, 9051, 9059, 9077, - 9065, 9046, 9050, 9079, 9074, 9083, 9073, 9089, 9825, 9825, - 9087, 9825, 9097, 9093, 9825, 9825, 9098, 9103, 9105, 9107, - 9825, 9108, 9113, 9117, 9118, 9096, 9825, 9110, 9126, 9124, - - 9115, 9111, 9825, 9128, 9120, 9136, 9135, 9130, 9129, 9147, - 9152, 9825, 9144, 9161, 9825, 9825, 9146, 9162, 9154, 9166, - 9151, 9825, 9173, 9177, 9168, 9178, 9171, 9179, 9185, 9825, - 9181, 9175, 9825, 9825, 9195, 9198, 9825, 9825, 9189, 9825, - 9825, 9825, 9825, 9825, 9825, 9825, 9825, 9214, 9217, 9825, - 9205, 9221, 9223, 9825, 9227, 9825, 9206, 9222, 9226, 9216, - 9825, 9224, 9825, 9212, 9241, 9232, 9253, 9245, 9265, 9248, - 9250, 9249, 9254, 9246, 9259, 9275, 9273, 9278, 9268, 9286, - 9290, 9279, 9298, 9825, 9825, 9825, 9293, 9288, 9304, 9300, - 9314, 9318, 9321, 9322, 9305, 9313, 9320, 9332, 9334, 9317, - - 9328, 9357, 9340, 9326, 9351, 9358, 9348, 9362, 9825, 9363, - 9359, 9352, 9372, 9825, 9361, 9825, 9355, 9825, 9825, 9377, - 9379, 9383, 9375, 9392, 9397, 9382, 9395, 9386, 9388, 9411, - 9825, 9412, 9825, 9825, 9404, 9406, 9825, 9400, 9413, 9825, - 9409, 9423, 9415, 9403, 9424, 9427, 9440, 9442, 9448, 9825, - 9825, 9438, 9439, 9441, 9449, 9454, 9467, 9462, 9465, 9466, - 9472, 9461, 9483, 9825, 9479, 9486, 9482, 9825, 9492, 9476, - 9493, 9489, 9498, 9488, 9502, 9499, 9825, 9504, 9825, 9501, - 9524, 9525, 9515, 9518, 9527, 9542, 9541, 9545, 9825, 9523, - 9552, 9528, 9555, 9561, 9554, 9564, 9565, 9511, 9570, 9576, - - 9514, 9580, 9583, 9574, 9572, 9581, 9825, 9594, 9596, 9825, - 9601, 9604, 9597, 9599, 9611, 9825, 9595, 9610, 9613, 9624, - 9619, 9623, 9825, 9634, 9635, 9637, 9825, 9636, 9825, 9825, - 9642, 9639, 9646, 9648, 9649, 9825, 9825, 9825, 9705, 9712, - 9719, 9726, 9733, 9740, 9747, 102, 9754, 9761, 9768, 9775, - 9782, 9789, 9796, 9803, 9810, 9817 - } ; - -static yyconst flex_int16_t yy_def[3457] = - { 0, - 3438, 1, 3439, 3439, 3440, 3440, 3441, 3441, 3442, 3442, - 3443, 3443, 3444, 3444, 3445, 3445, 3438, 3446, 3438, 3438, - 3438, 3438, 3447, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3448, 3438, 3438, 3438, - 3448, 3449, 3438, 3438, 3438, 3449, 3450, 3438, 3438, 3438, - 3438, 3450, 3451, 3438, 3438, 3438, 3451, 3452, 3438, 3453, - 3438, 3452, 3452, 3454, 3438, 3438, 3438, 3438, 3454, 3455, - 3438, 3438, 3438, 3455, 3446, 3446, 3438, 3456, 3447, 3456, - 3447, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3448, - 3448, 3449, 3449, 3450, 3450, 3438, 3451, 3451, 3452, 3452, - 3453, 3453, 3452, 3454, 3454, 3438, 3455, 3455, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3452, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3452, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3438, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3438, 3446, 3446, 3452, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3452, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, - 3438, 3438, 3446, 3438, 3438, 3446, 3446, 3438, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3452, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3438, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3438, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, - 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, - 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, - 3446, 3446, 3446, 3446, 3452, 3452, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, - - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - - 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3452, - 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - - 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3438, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3438, 3446, - 3438, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, - - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, - 3446, 3452, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3438, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3438, 3446, 3438, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3438, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, - - 3446, 3438, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, - 3452, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - - 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3438, 3446, - 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, - 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, - - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3438, 3446, 3446, - 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3452, 3446, 3438, - 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3438, 3446, 3438, 3446, 3446, 3446, - 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - - 3446, 3446, 3438, 3438, 3446, 3438, 3446, 3446, 3446, 3438, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, - 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, - 3446, 3446, 3446, 3446, 3438, 3446, 3438, 3446, 3446, 3446, - 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, - - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, - 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, - 3438, 3438, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3452, - 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3438, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3438, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, - - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, - 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, - 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - - 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3438, 3446, 3438, 3446, 3446, 3446, - 3446, 3446, 3446, 3452, 3446, 3438, 3446, 3446, 3446, 3446, - 3446, 3438, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, - 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, - - 3446, 3446, 3446, 3438, 3446, 3438, 3446, 3446, 3446, 3446, - 3446, 3438, 3438, 3446, 3446, 3446, 3446, 3446, 3438, 3438, - 3446, 3438, 3446, 3438, 3446, 3446, 3438, 3438, 3446, 3446, - 3446, 3446, 3446, 3446, 3438, 3446, 3438, 3446, 3446, 3446, - 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3438, 3446, - 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3438, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3452, - 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3438, 3446, 3446, - 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, - 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3438, 3446, 3438, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3438, 3438, 3446, 3446, 3446, 3446, 3446, - - 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3438, - 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3438, 3438, - 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3438, 3446, 3438, 3438, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3452, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3438, 3438, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3438, - - 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3438, 3438, 3446, 3446, 3446, 3438, 3438, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3438, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3438, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, - 3438, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3438, - 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, - 3438, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3438, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3438, 3438, 3446, 3446, 3452, 3446, 3446, 3446, - - 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3438, 3446, 3438, - 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, - 3438, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, - 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3438, 3438, 3438, 3446, 3446, 3438, 3446, - 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3438, 3438, 3446, - 3446, 3446, 3438, 3446, 3446, 3438, 3446, 3438, 3446, 3438, - - 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3438, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, - 3438, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3438, 3446, - 3446, 3438, 3446, 3438, 3446, 3438, 3446, 3446, 3446, 3446, - 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, - 3446, 3446, 3446, 3438, 3438, 3446, 3446, 3446, 3438, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3438, 3438, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3438, - 3438, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3438, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, - 3446, 3446, 3438, 3438, 3446, 3446, 3438, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3438, 3446, - - 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3438, - 3446, 3446, 3446, 3438, 3438, 3446, 3446, 3446, 3438, 3438, - 3438, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, - 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3438, 3438, - 3446, 3446, 3446, 3446, 3446, 3438, 3438, 3446, 3446, 3446, - 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3438, - 3446, 3438, 3446, 3446, 3438, 3438, 3446, 3446, 3446, 3446, - 3438, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, - - 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3438, 3446, 3446, 3438, 3438, 3446, 3446, 3446, 3446, - 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, - 3446, 3446, 3438, 3438, 3446, 3446, 3438, 3438, 3446, 3438, - 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3446, 3446, 3438, - 3446, 3446, 3446, 3438, 3446, 3438, 3446, 3446, 3446, 3446, - 3438, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3438, 3438, 3438, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, - 3446, 3446, 3446, 3438, 3446, 3438, 3446, 3438, 3438, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3438, 3446, 3438, 3438, 3446, 3446, 3438, 3446, 3446, 3438, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, - 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3438, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3438, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - - 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3438, - 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, - 3446, 3446, 3438, 3446, 3446, 3446, 3438, 3446, 3438, 3438, - 3446, 3446, 3446, 3446, 3446, 3438, 3438, 0, 3438, 3438, - 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, - 3438, 3438, 3438, 3438, 3438, 3438 - } ; - -static yyconst flex_int16_t yy_nxt[9892] = - { 0, - 18, 19, 20, 21, 22, 23, 22, 18, 18, 18, - 18, 18, 22, 24, 25, 26, 27, 28, 29, 18, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 18, 18, 18, 45, 46, - 24, 25, 26, 27, 28, 29, 18, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 18, 18, 18, 45, 48, 49, 50, 48, - 49, 50, 53, 54, 53, 54, 55, 119, 55, 58, - 59, 60, 61, 120, 22, 58, 59, 60, 61, 86, - 22, 64, 65, 66, 64, 65, 66, 87, 160, 160, - - 1311, 88, 85, 51, 119, 86, 51, 167, 167, 56, - 120, 56, 170, 75, 76, 77, 78, 62, 22, 75, - 76, 77, 78, 62, 22, 81, 82, 83, 67, 97, - 86, 67, 19, 20, 21, 69, 70, 71, 19, 20, - 21, 69, 70, 71, 81, 82, 83, 121, 108, 177, - 177, 79, 72, 159, 409, 86, 97, 79, 72, 86, - 137, 90, 84, 90, 90, 86, 90, 170, 109, 178, - 73, 86, 90, 86, 121, 108, 73, 176, 87, 72, - 159, 84, 88, 86, 130, 72, 112, 137, 110, 162, - 86, 175, 162, 173, 113, 109, 98, 170, 188, 91, - - 92, 93, 111, 99, 94, 114, 170, 100, 187, 95, - 101, 130, 86, 112, 86, 110, 86, 86, 96, 168, - 173, 113, 86, 98, 86, 188, 166, 92, 93, 111, - 99, 94, 114, 165, 100, 187, 95, 101, 85, 162, - 85, 85, 162, 85, 163, 96, 102, 161, 115, 85, - 103, 116, 189, 104, 181, 105, 106, 252, 117, 164, - 118, 164, 164, 292, 164, 86, 107, 90, 86, 90, - 90, 86, 90, 102, 86, 115, 122, 103, 116, 189, - 104, 181, 105, 106, 123, 117, 180, 118, 126, 86, - 124, 86, 127, 107, 125, 86, 156, 160, 160, 148, - - 157, 149, 86, 122, 158, 172, 128, 178, 129, 86, - 150, 123, 176, 180, 86, 126, 151, 124, 179, 127, - 175, 125, 86, 156, 152, 86, 148, 157, 149, 167, - 167, 158, 170, 128, 153, 129, 131, 150, 154, 155, - 132, 182, 86, 151, 133, 179, 328, 86, 168, 205, - 134, 152, 169, 135, 169, 169, 86, 169, 86, 184, - 136, 153, 86, 131, 195, 154, 155, 132, 182, 86, - 174, 133, 174, 174, 166, 174, 205, 134, 86, 85, - 135, 85, 85, 86, 85, 332, 184, 136, 138, 1165, - 85, 195, 139, 90, 183, 90, 90, 206, 90, 185, - - 165, 86, 140, 141, 90, 142, 86, 193, 194, 197, - 196, 163, 186, 161, 86, 138, 86, 86, 86, 139, - 86, 183, 86, 86, 206, 240, 185, 198, 3438, 140, - 141, 91, 142, 143, 193, 194, 144, 196, 190, 186, - 199, 86, 201, 145, 191, 200, 192, 146, 147, 86, - 334, 86, 240, 86, 198, 86, 207, 3438, 86, 86, - 143, 208, 3438, 144, 209, 190, 215, 199, 86, 201, - 145, 191, 200, 192, 146, 147, 202, 203, 211, 86, - 210, 212, 86, 207, 204, 228, 86, 3438, 208, 217, - 216, 209, 86, 86, 213, 214, 3438, 86, 86, 86, - - 225, 3438, 86, 202, 203, 211, 218, 210, 212, 226, - 220, 204, 228, 86, 221, 223, 217, 216, 227, 229, - 224, 213, 214, 86, 232, 230, 219, 225, 86, 253, - 222, 86, 86, 218, 86, 231, 226, 220, 86, 86, - 233, 221, 223, 86, 86, 227, 229, 224, 235, 86, - 234, 232, 230, 219, 237, 236, 253, 222, 238, 86, - 3438, 239, 231, 86, 86, 241, 245, 233, 86, 246, - 86, 86, 86, 3438, 242, 235, 86, 234, 86, 247, - 248, 237, 236, 243, 251, 238, 3438, 86, 239, 244, - 3438, 249, 241, 245, 257, 250, 246, 86, 86, 3438, - - 254, 242, 259, 261, 86, 258, 247, 248, 262, 86, - 243, 251, 267, 86, 86, 260, 244, 255, 249, 86, - 256, 257, 250, 86, 263, 266, 86, 254, 268, 259, - 261, 270, 258, 264, 86, 262, 277, 269, 272, 267, - 86, 271, 260, 86, 255, 265, 86, 256, 86, 86, - 3438, 263, 266, 86, 86, 268, 177, 177, 270, 3438, - 264, 3438, 170, 277, 269, 272, 3438, 273, 271, 3438, - 3438, 164, 265, 164, 164, 169, 164, 169, 169, 90, - 169, 90, 90, 174, 90, 174, 174, 274, 174, 86, - 3438, 276, 3438, 280, 273, 278, 281, 282, 283, 284, - - 86, 275, 279, 3438, 285, 86, 338, 3438, 3438, 86, - 86, 86, 286, 290, 86, 86, 291, 172, 276, 86, - 280, 86, 278, 281, 282, 283, 284, 287, 275, 279, - 86, 285, 340, 288, 289, 86, 86, 293, 86, 286, - 290, 294, 86, 291, 301, 303, 3438, 302, 306, 3438, - 307, 304, 308, 86, 305, 314, 310, 86, 295, 86, - 288, 289, 86, 86, 86, 86, 311, 86, 294, 3438, - 86, 301, 303, 86, 302, 306, 86, 307, 304, 86, - 309, 305, 314, 310, 86, 295, 296, 312, 86, 318, - 317, 297, 313, 311, 326, 370, 298, 315, 86, 86, - - 316, 86, 299, 300, 319, 86, 325, 309, 3438, 86, - 3438, 86, 86, 296, 312, 329, 318, 317, 297, 313, - 86, 326, 370, 298, 315, 327, 86, 316, 86, 299, - 300, 319, 320, 325, 330, 321, 86, 322, 337, 335, - 333, 86, 329, 342, 86, 331, 339, 86, 3438, 323, - 344, 324, 327, 336, 341, 3438, 3438, 3438, 86, 320, - 345, 3438, 321, 343, 322, 337, 86, 333, 86, 351, - 346, 86, 331, 339, 86, 86, 323, 86, 324, 347, - 336, 341, 86, 86, 348, 349, 86, 345, 86, 352, - 343, 86, 353, 356, 350, 354, 351, 346, 355, 86, - - 357, 364, 360, 86, 86, 86, 347, 86, 361, 362, - 86, 348, 349, 86, 86, 367, 352, 86, 358, 353, - 356, 350, 354, 359, 86, 355, 363, 357, 373, 360, - 369, 86, 86, 86, 368, 361, 362, 365, 366, 372, - 371, 86, 374, 375, 376, 378, 86, 86, 86, 3438, - 86, 86, 86, 363, 377, 381, 379, 369, 86, 86, - 86, 368, 380, 383, 365, 366, 372, 371, 3438, 86, - 375, 384, 378, 386, 86, 387, 86, 86, 382, 388, - 390, 377, 86, 379, 389, 3438, 391, 86, 385, 86, - 392, 394, 86, 86, 170, 86, 86, 86, 384, 86, - - 386, 395, 387, 396, 393, 382, 388, 390, 86, 398, - 397, 389, 86, 391, 3438, 385, 399, 392, 401, 403, - 405, 400, 402, 86, 404, 86, 86, 86, 86, 406, - 396, 393, 86, 86, 86, 86, 407, 397, 86, 408, - 3438, 86, 411, 399, 412, 401, 403, 413, 400, 402, - 410, 404, 86, 86, 415, 414, 406, 416, 86, 86, - 419, 86, 420, 407, 421, 86, 408, 86, 86, 411, - 86, 412, 417, 418, 413, 86, 422, 410, 86, 423, - 86, 415, 414, 426, 416, 424, 428, 431, 3438, 420, - 86, 86, 86, 427, 86, 429, 86, 432, 433, 417, - - 418, 86, 425, 422, 86, 435, 86, 434, 86, 86, - 426, 86, 424, 436, 431, 86, 438, 437, 86, 430, - 427, 86, 439, 445, 432, 433, 86, 86, 441, 425, - 86, 86, 435, 440, 434, 443, 442, 86, 86, 86, - 436, 446, 86, 438, 437, 86, 430, 447, 3438, 439, - 445, 448, 444, 3438, 86, 441, 3438, 455, 456, 86, - 440, 3438, 443, 442, 3438, 457, 86, 86, 463, 462, - 469, 86, 3438, 86, 447, 86, 467, 3438, 448, 444, - 449, 468, 86, 450, 455, 456, 464, 86, 451, 452, - 453, 454, 457, 86, 86, 463, 462, 469, 86, 465, - - 466, 86, 470, 3438, 458, 3438, 459, 449, 86, 478, - 450, 471, 476, 464, 472, 451, 452, 453, 454, 460, - 473, 86, 461, 479, 86, 477, 465, 466, 86, 86, - 86, 458, 86, 459, 474, 475, 86, 480, 471, 476, - 481, 472, 482, 86, 86, 86, 460, 473, 483, 461, - 479, 485, 477, 484, 86, 3438, 488, 493, 486, 86, - 487, 474, 475, 86, 480, 86, 86, 481, 86, 482, - 86, 489, 86, 490, 492, 483, 494, 495, 485, 86, - 484, 86, 491, 496, 493, 486, 507, 487, 86, 497, - 498, 3438, 499, 500, 505, 3438, 506, 86, 489, 86, - - 490, 492, 3438, 508, 495, 86, 86, 549, 86, 491, - 496, 501, 86, 562, 86, 509, 497, 498, 86, 499, - 500, 505, 86, 506, 502, 522, 523, 503, 525, 504, - 86, 526, 86, 527, 530, 86, 540, 86, 501, 86, - 86, 541, 509, 86, 524, 86, 86, 86, 528, 539, - 86, 502, 522, 523, 503, 525, 504, 510, 526, 511, - 527, 530, 545, 3438, 529, 512, 538, 86, 86, 513, - 86, 524, 86, 544, 514, 528, 539, 515, 86, 170, - 3438, 542, 546, 86, 510, 547, 511, 548, 543, 545, - 567, 529, 512, 538, 86, 86, 513, 550, 86, 551, - - 544, 514, 86, 86, 515, 516, 86, 517, 542, 546, - 553, 557, 547, 612, 548, 543, 552, 555, 86, 554, - 518, 558, 86, 519, 550, 520, 551, 521, 86, 86, - 3438, 86, 516, 559, 517, 556, 560, 561, 557, 86, - 86, 3438, 86, 552, 555, 86, 554, 518, 558, 86, - 519, 563, 520, 3438, 521, 531, 532, 566, 86, 564, - 559, 565, 556, 560, 561, 533, 86, 534, 535, 536, - 86, 568, 537, 86, 569, 570, 86, 86, 563, 3438, - 86, 604, 531, 532, 566, 86, 564, 86, 565, 571, - 572, 598, 533, 573, 534, 535, 536, 86, 568, 537, - - 86, 569, 570, 574, 575, 3438, 576, 577, 604, 3438, - 578, 579, 3438, 581, 86, 86, 584, 585, 86, 86, - 573, 3438, 3438, 86, 582, 86, 3438, 603, 580, 586, - 574, 575, 86, 576, 577, 86, 86, 578, 579, 583, - 581, 86, 86, 584, 585, 588, 587, 86, 589, 590, - 599, 582, 600, 602, 86, 580, 586, 86, 601, 86, - 591, 86, 592, 3438, 607, 605, 583, 86, 86, 610, - 606, 86, 588, 587, 86, 589, 590, 599, 608, 600, - 602, 86, 616, 615, 613, 601, 86, 591, 86, 592, - 593, 607, 605, 86, 609, 86, 610, 606, 594, 595, - - 86, 86, 596, 597, 611, 608, 86, 618, 614, 86, - 615, 613, 86, 617, 86, 620, 621, 593, 86, 86, - 622, 609, 86, 626, 624, 594, 595, 619, 623, 596, - 597, 611, 86, 86, 618, 614, 86, 86, 86, 86, - 617, 625, 620, 621, 627, 628, 86, 622, 86, 3438, - 626, 624, 629, 630, 619, 623, 632, 3438, 631, 86, - 634, 3438, 633, 3438, 635, 636, 86, 637, 625, 86, - 86, 627, 628, 86, 86, 638, 86, 639, 642, 629, - 630, 86, 86, 632, 86, 631, 3438, 634, 640, 633, - 86, 635, 636, 86, 637, 641, 86, 644, 653, 647, - - 86, 86, 638, 643, 639, 642, 86, 645, 86, 646, - 86, 648, 86, 650, 649, 640, 86, 651, 86, 652, - 86, 660, 641, 3438, 644, 653, 647, 86, 655, 654, - 643, 656, 661, 657, 645, 86, 646, 658, 648, 86, - 659, 649, 86, 663, 651, 86, 662, 86, 3438, 665, - 86, 86, 86, 86, 669, 655, 654, 86, 656, 661, - 657, 666, 86, 667, 658, 668, 664, 659, 86, 670, - 86, 86, 671, 662, 673, 86, 665, 86, 672, 674, - 675, 669, 684, 86, 86, 86, 3438, 86, 666, 86, - 667, 86, 668, 664, 86, 687, 670, 685, 686, 671, - - 86, 673, 3438, 86, 688, 672, 674, 675, 676, 684, - 86, 3438, 86, 677, 689, 678, 691, 690, 86, 698, - 694, 679, 687, 680, 685, 686, 681, 682, 86, 695, - 3438, 688, 86, 683, 86, 676, 86, 86, 703, 86, - 677, 689, 678, 691, 690, 692, 698, 694, 679, 693, - 680, 86, 696, 681, 682, 697, 695, 701, 699, 702, - 683, 706, 86, 86, 3438, 703, 705, 86, 700, 86, - 86, 704, 692, 86, 708, 86, 693, 709, 707, 696, - 86, 710, 697, 712, 701, 711, 702, 86, 706, 86, - 86, 86, 714, 705, 713, 700, 86, 86, 704, 86, - - 86, 708, 715, 716, 709, 707, 717, 718, 710, 719, - 712, 86, 711, 722, 86, 720, 721, 723, 86, 714, - 86, 713, 728, 724, 726, 3438, 735, 86, 86, 715, - 716, 86, 86, 717, 718, 86, 719, 86, 86, 170, - 725, 727, 720, 721, 723, 86, 729, 730, 86, 728, - 724, 726, 731, 86, 732, 734, 733, 86, 86, 737, - 739, 86, 743, 736, 3438, 738, 3438, 725, 727, 86, - 3438, 742, 740, 729, 730, 86, 741, 86, 86, 731, - 86, 732, 86, 733, 86, 86, 86, 739, 86, 743, - 736, 86, 738, 86, 744, 747, 750, 748, 742, 740, - - 751, 745, 749, 741, 746, 752, 86, 753, 754, 755, - 86, 756, 86, 757, 759, 760, 3438, 3438, 758, 764, - 86, 744, 747, 750, 761, 762, 763, 86, 745, 86, - 86, 746, 86, 765, 86, 86, 86, 766, 86, 86, - 767, 759, 760, 86, 86, 86, 764, 86, 86, 769, - 768, 761, 762, 763, 770, 771, 772, 86, 86, 86, - 765, 774, 773, 776, 766, 86, 775, 767, 3438, 778, - 779, 781, 86, 777, 86, 86, 769, 768, 86, 86, - 780, 86, 771, 772, 86, 783, 86, 86, 774, 773, - 776, 86, 86, 775, 782, 788, 778, 779, 86, 790, - - 777, 784, 791, 86, 86, 789, 785, 780, 86, 786, - 787, 794, 783, 86, 796, 795, 86, 792, 793, 3438, - 817, 782, 788, 797, 86, 86, 790, 86, 784, 791, - 798, 86, 789, 785, 801, 802, 786, 787, 794, 86, - 86, 86, 795, 799, 792, 793, 86, 803, 806, 804, - 797, 808, 86, 807, 86, 805, 86, 798, 810, 86, - 86, 801, 802, 811, 86, 800, 86, 86, 86, 86, - 799, 813, 809, 86, 803, 806, 804, 86, 808, 86, - 807, 86, 805, 812, 814, 86, 815, 816, 818, 3438, - 811, 86, 800, 819, 822, 86, 820, 821, 813, 809, - - 823, 826, 86, 824, 86, 828, 825, 829, 827, 86, - 812, 814, 86, 815, 816, 818, 86, 86, 86, 86, - 819, 822, 86, 86, 830, 86, 831, 823, 826, 86, - 824, 836, 833, 825, 829, 827, 832, 86, 86, 834, - 841, 837, 3438, 842, 835, 86, 843, 838, 850, 846, - 86, 86, 3438, 831, 86, 86, 86, 844, 836, 833, - 845, 839, 840, 832, 86, 847, 848, 86, 837, 86, - 842, 86, 86, 843, 838, 86, 846, 856, 854, 86, - 86, 849, 851, 855, 844, 86, 3438, 845, 839, 840, - 86, 852, 847, 848, 857, 858, 86, 86, 859, 860, - - 3438, 853, 861, 86, 856, 862, 86, 863, 849, 851, - 86, 86, 865, 86, 86, 864, 86, 866, 852, 86, - 86, 857, 858, 86, 86, 859, 860, 867, 853, 861, - 868, 869, 862, 870, 863, 871, 873, 875, 872, 865, - 874, 3438, 864, 86, 86, 86, 86, 912, 86, 86, - 86, 86, 86, 879, 867, 877, 878, 868, 869, 876, - 870, 86, 871, 873, 880, 872, 86, 874, 86, 86, - 86, 86, 882, 881, 884, 883, 3438, 891, 885, 86, - 879, 86, 877, 878, 86, 86, 876, 86, 886, 887, - 888, 880, 889, 890, 3438, 86, 893, 86, 86, 882, - - 881, 884, 883, 86, 891, 885, 86, 892, 895, 86, - 894, 897, 896, 900, 86, 886, 887, 888, 86, 889, - 890, 898, 901, 893, 86, 86, 903, 86, 899, 902, - 86, 3438, 86, 86, 892, 895, 86, 894, 897, 896, - 900, 904, 86, 905, 907, 906, 86, 909, 898, 901, - 915, 86, 911, 903, 86, 899, 902, 908, 910, 913, - 86, 3438, 917, 86, 86, 86, 914, 86, 904, 916, - 905, 907, 906, 86, 909, 86, 86, 915, 919, 911, - 86, 170, 86, 918, 908, 910, 913, 921, 920, 917, - 86, 86, 922, 914, 86, 86, 916, 924, 925, 926, - - 923, 927, 928, 3438, 929, 919, 930, 3438, 931, 86, - 918, 86, 933, 934, 86, 920, 936, 86, 86, 922, - 86, 86, 935, 86, 86, 925, 926, 923, 927, 86, - 932, 929, 86, 930, 86, 931, 86, 937, 938, 933, - 86, 86, 947, 936, 939, 86, 86, 3438, 3438, 935, - 948, 86, 3438, 3438, 86, 3438, 949, 932, 952, 950, - 86, 954, 3438, 3438, 937, 938, 951, 953, 3438, 947, - 3438, 939, 940, 961, 86, 941, 86, 948, 86, 942, - 86, 955, 943, 949, 86, 952, 950, 86, 954, 944, - 945, 958, 946, 951, 953, 956, 957, 86, 959, 940, - - 86, 973, 941, 960, 86, 86, 942, 86, 955, 943, - 86, 86, 86, 969, 970, 3438, 944, 945, 958, 946, - 86, 86, 956, 957, 971, 959, 983, 972, 973, 974, - 960, 962, 963, 86, 964, 86, 977, 965, 976, 3438, - 969, 970, 966, 978, 86, 975, 86, 980, 967, 968, - 86, 971, 86, 983, 972, 86, 974, 86, 962, 963, - 86, 964, 981, 977, 965, 976, 979, 982, 86, 966, - 978, 86, 975, 984, 980, 967, 968, 985, 3438, 986, - 3438, 987, 3438, 988, 991, 989, 3438, 993, 3438, 86, - 992, 990, 3438, 979, 86, 994, 995, 1006, 3438, 86, - - 984, 86, 86, 86, 985, 86, 986, 86, 987, 86, - 988, 86, 989, 86, 993, 86, 997, 992, 990, 86, - 996, 998, 994, 995, 86, 999, 1000, 86, 1001, 86, - 1002, 1004, 1005, 1003, 3438, 1008, 1012, 86, 86, 1007, - 86, 86, 86, 997, 1009, 1011, 86, 996, 998, 1010, - 1014, 86, 999, 1000, 1017, 1001, 86, 1002, 1004, 1005, - 1003, 86, 86, 1013, 1015, 1016, 1007, 86, 86, 1019, - 3438, 86, 1011, 1018, 1020, 1021, 86, 1024, 86, 1022, - 1023, 1017, 86, 1025, 1026, 1029, 86, 1028, 86, 86, - 1013, 1015, 1032, 86, 86, 86, 1019, 86, 86, 86, - - 1018, 86, 86, 86, 1024, 1027, 1022, 1023, 1030, 1031, - 1025, 1026, 86, 1033, 1028, 1034, 86, 1040, 3438, 86, - 1035, 1036, 1037, 86, 1038, 86, 86, 1042, 86, 1045, - 3438, 1041, 1027, 3438, 1039, 1030, 1031, 3438, 86, 86, - 86, 86, 1034, 86, 1040, 86, 86, 1035, 1036, 1037, - 1044, 1038, 86, 86, 1042, 1043, 1045, 86, 1041, 1046, - 1048, 1039, 1049, 1050, 1047, 1051, 1052, 1053, 86, 86, - 1056, 86, 1054, 1057, 86, 1058, 86, 1044, 1060, 1059, - 1055, 86, 1043, 86, 86, 3438, 86, 1048, 3438, 1049, - 1050, 86, 1051, 1052, 1053, 86, 86, 1056, 1067, 1054, - - 86, 86, 1058, 1061, 1062, 1060, 1059, 1055, 1063, 1064, - 86, 86, 1069, 86, 1065, 1066, 86, 1068, 1070, 86, - 86, 86, 1071, 3438, 1075, 1067, 86, 1079, 1072, 1073, - 1061, 1062, 86, 1074, 1076, 1063, 1064, 86, 3438, 1069, - 86, 1065, 1066, 86, 1068, 86, 86, 1078, 1084, 1071, - 86, 1075, 1077, 86, 86, 1072, 1073, 1081, 1080, 1082, - 1074, 1076, 1089, 1083, 86, 86, 86, 86, 1086, 86, - 86, 1085, 1087, 86, 1078, 1084, 1088, 86, 86, 1077, - 86, 1090, 1097, 86, 1081, 1080, 1082, 1091, 1092, 1093, - 1083, 1095, 3438, 1096, 86, 1086, 3438, 1094, 1085, 1087, - - 86, 3438, 86, 1088, 86, 86, 1101, 1098, 1104, 1097, - 1103, 1099, 1102, 86, 1091, 86, 1093, 1105, 86, 1100, - 86, 1106, 1108, 86, 1094, 86, 86, 3438, 86, 1107, - 86, 1110, 3438, 1101, 1098, 1109, 86, 1103, 1099, 1102, - 86, 86, 86, 86, 1105, 1112, 1100, 1115, 1106, 1113, - 1111, 1114, 1116, 1117, 86, 1119, 1107, 3438, 86, 86, - 86, 1118, 1109, 1120, 1121, 86, 1123, 86, 86, 3438, - 1122, 86, 1112, 1126, 86, 1138, 1113, 1111, 1114, 170, - 1117, 86, 1119, 1124, 86, 1125, 86, 86, 1118, 1127, - 1120, 1121, 86, 1123, 1135, 1128, 86, 1122, 86, 3438, - - 1126, 86, 86, 1136, 3438, 1137, 1139, 1162, 86, 3438, - 1124, 1140, 1125, 1143, 1145, 1141, 1127, 86, 3438, 1146, - 86, 1135, 1128, 1129, 1142, 1130, 86, 86, 3438, 1131, - 1136, 1132, 1137, 1139, 86, 86, 1133, 86, 1140, 86, - 1143, 1134, 1141, 1147, 1144, 1152, 86, 86, 1151, 1148, - 1129, 1142, 1130, 3438, 1149, 1153, 1131, 86, 1132, 1154, - 86, 86, 86, 1133, 3438, 1155, 1150, 86, 1134, 1163, - 1147, 1144, 1152, 1157, 86, 1151, 1148, 86, 1156, 86, - 1159, 1149, 1153, 1158, 3438, 1160, 1154, 86, 1164, 1161, - 1166, 86, 1155, 1150, 1167, 3438, 86, 1178, 86, 86, - - 1157, 86, 1181, 1177, 1169, 1156, 86, 1159, 1180, 1168, - 1158, 86, 1160, 86, 1179, 86, 1161, 86, 86, 86, - 3438, 1167, 86, 86, 1178, 1182, 1183, 86, 86, 1181, - 1177, 1169, 1185, 1184, 1188, 1180, 1168, 1170, 1187, 3438, - 86, 1179, 1171, 1186, 1172, 86, 86, 86, 1194, 86, - 1173, 86, 1182, 1183, 1189, 1174, 1175, 1190, 1191, 1185, - 1184, 3438, 1176, 86, 1170, 1187, 86, 86, 1192, 1171, - 1186, 1172, 86, 1195, 1197, 86, 86, 1173, 1193, 86, - 1198, 1189, 1174, 1175, 1190, 1191, 1196, 86, 1200, 1176, - 1199, 1202, 1203, 86, 1201, 1192, 86, 3438, 86, 1208, - - 1195, 1204, 1205, 3438, 86, 1193, 86, 1198, 86, 86, - 86, 1207, 1206, 1196, 86, 1200, 1209, 1199, 1210, 1203, - 86, 1201, 86, 86, 1211, 1212, 86, 1213, 1204, 1205, - 86, 86, 86, 1215, 86, 1214, 1218, 1216, 1207, 1206, - 86, 1217, 86, 1209, 1220, 1210, 86, 1221, 86, 3438, - 3438, 1211, 1212, 1224, 1213, 86, 1219, 86, 86, 86, - 1215, 1225, 1214, 1218, 1216, 1222, 86, 1228, 1217, 86, - 1223, 1226, 1227, 1229, 1221, 86, 86, 86, 86, 86, - 1224, 86, 1230, 1219, 86, 1231, 1234, 1232, 1225, 1233, - 1235, 3438, 1222, 3438, 1228, 86, 1237, 1223, 1226, 1227, - - 1229, 1236, 3438, 1241, 86, 86, 1242, 86, 86, 1230, - 86, 1238, 1231, 86, 1232, 86, 1233, 1235, 86, 1239, - 1243, 1244, 86, 1237, 1240, 1245, 1246, 1247, 1236, 86, - 1241, 1248, 86, 1242, 86, 1250, 86, 86, 1238, 1251, - 1252, 1254, 3438, 1249, 86, 86, 86, 1243, 1244, 1253, - 1256, 86, 1245, 1246, 1247, 86, 1255, 1258, 1248, 1257, - 1259, 86, 1260, 86, 1265, 86, 1251, 86, 1254, 86, - 1249, 1267, 86, 86, 86, 1261, 1253, 1256, 1262, 86, - 1264, 1263, 86, 1255, 1258, 86, 1257, 1259, 1266, 1260, - 1268, 1265, 86, 86, 1269, 86, 1270, 1271, 1267, 86, - - 86, 1272, 1261, 86, 1273, 1262, 86, 1264, 1263, 1274, - 1276, 1275, 1278, 1279, 86, 1266, 1277, 86, 86, 86, - 1280, 86, 86, 1270, 1271, 86, 86, 1281, 1272, 1282, - 86, 1273, 1283, 1284, 1285, 1286, 1274, 1276, 1275, 1278, - 86, 1287, 1289, 1277, 1291, 86, 1288, 3438, 1290, 86, - 86, 86, 86, 86, 1281, 86, 1282, 86, 1292, 1293, - 1284, 1295, 1286, 1294, 86, 1296, 86, 1297, 1287, 86, - 86, 86, 86, 1288, 86, 1290, 86, 86, 1299, 1298, - 1303, 1301, 1304, 1307, 1300, 1292, 1293, 3438, 1295, 86, - 1294, 86, 1296, 86, 1297, 86, 86, 1305, 1306, 1302, - - 86, 1310, 1309, 3438, 1313, 1299, 1298, 86, 1301, 86, - 86, 1300, 86, 1308, 86, 86, 86, 1315, 1312, 86, - 86, 86, 86, 1317, 1305, 1306, 1302, 86, 1310, 1309, - 1314, 1313, 1318, 1316, 1319, 1320, 1321, 1323, 86, 1322, - 1308, 86, 170, 1324, 1315, 1312, 1326, 1328, 1327, 86, - 86, 86, 86, 1325, 86, 86, 86, 1314, 1329, 1318, - 1316, 1319, 1320, 1321, 1323, 86, 1322, 1330, 1332, 1331, - 1324, 86, 1334, 86, 1335, 1327, 1333, 3438, 86, 86, - 1325, 1338, 1336, 1342, 1341, 86, 1339, 86, 1337, 86, - 86, 86, 86, 86, 1330, 1332, 1331, 3438, 86, 1334, - - 86, 1335, 1340, 1333, 86, 1343, 86, 1344, 1338, 1336, - 86, 1341, 1345, 1339, 86, 1337, 86, 1346, 86, 1347, - 1352, 3438, 1353, 3438, 86, 1355, 86, 3438, 1354, 1340, - 3438, 1348, 1343, 1358, 1344, 3438, 1356, 3438, 86, 1345, - 1349, 1357, 1350, 86, 1346, 1351, 1347, 1352, 86, 1353, - 86, 1359, 86, 86, 86, 1354, 86, 86, 1348, 86, - 1358, 1360, 1361, 1356, 1362, 1363, 1364, 1349, 1357, 1350, - 86, 1366, 1351, 86, 1365, 1368, 1369, 1370, 1359, 1367, - 86, 86, 1374, 86, 86, 1371, 86, 1372, 1360, 1361, - 1375, 1362, 1363, 1364, 86, 86, 86, 1373, 1366, 86, - - 1379, 1365, 1368, 86, 1370, 86, 1367, 86, 86, 1374, - 1376, 1377, 1371, 1378, 1372, 86, 1380, 1375, 3438, 86, - 1382, 86, 86, 86, 1373, 1381, 1383, 1379, 86, 1386, - 1384, 3438, 1385, 3438, 86, 86, 86, 1376, 1377, 1387, - 1378, 86, 1388, 1380, 1390, 86, 1391, 1382, 1389, 86, - 86, 86, 1381, 1383, 1398, 86, 1386, 1384, 86, 1385, - 1392, 1393, 86, 1395, 1394, 86, 1387, 1396, 86, 1388, - 1397, 1390, 86, 1391, 1401, 1389, 86, 86, 1402, 86, - 1399, 1404, 1400, 1405, 3438, 86, 86, 1392, 1393, 1403, - 1395, 1394, 86, 86, 1396, 86, 1411, 1397, 86, 1406, - - 86, 1401, 1409, 86, 1407, 1402, 1408, 1399, 1404, 1400, - 1405, 1410, 3438, 1419, 86, 86, 1403, 1420, 1421, 3438, - 3438, 1433, 86, 1411, 1425, 86, 1422, 86, 86, 1409, - 1435, 86, 1423, 1408, 3438, 86, 1426, 1424, 1410, 1412, - 1419, 3438, 1428, 1413, 1420, 1427, 1414, 1415, 1433, 1430, - 86, 1416, 86, 1422, 86, 86, 86, 1417, 86, 1423, - 1452, 1418, 86, 1426, 1424, 86, 1412, 86, 86, 1428, - 1413, 1429, 1427, 1414, 1415, 86, 1430, 86, 1416, 1431, - 1434, 1432, 1436, 1437, 1417, 1440, 86, 1452, 1418, 86, - 86, 1438, 1439, 1441, 86, 1442, 3438, 1444, 1429, 1443, - - 86, 3438, 1451, 86, 3438, 86, 1431, 1434, 1432, 1436, - 1437, 3438, 1440, 86, 1450, 86, 1453, 1454, 1438, 1439, - 86, 86, 1455, 1458, 1444, 86, 1443, 86, 1445, 1451, - 1456, 1457, 86, 1446, 1459, 1447, 86, 1448, 86, 1449, - 3438, 1450, 1460, 86, 3438, 86, 86, 1461, 1464, 1455, - 1458, 1462, 86, 86, 1463, 1445, 1470, 1456, 1457, 86, - 1446, 1459, 1447, 1465, 1448, 1466, 1449, 1471, 1472, 86, - 86, 1467, 1468, 1469, 86, 1464, 86, 3438, 1462, 86, - 86, 1463, 1474, 86, 1473, 1476, 86, 86, 86, 1475, - 1465, 1480, 1466, 86, 1471, 1472, 1478, 86, 1467, 1468, - - 1469, 1477, 86, 86, 86, 86, 1479, 1481, 86, 1474, - 1482, 1473, 1476, 86, 1483, 1484, 1475, 1486, 1480, 1485, - 1488, 86, 86, 1478, 1487, 1489, 1491, 1493, 1477, 1490, - 3438, 1492, 86, 1479, 86, 1496, 86, 1482, 86, 86, - 86, 86, 1484, 86, 1486, 1499, 1485, 1488, 1501, 86, - 1503, 1487, 86, 86, 1493, 1494, 1490, 86, 1492, 1495, - 1497, 86, 86, 1498, 1500, 86, 1502, 86, 86, 86, - 1504, 86, 1499, 86, 1505, 1506, 1508, 1503, 1510, 1509, - 86, 3438, 1494, 86, 1507, 1511, 1495, 1497, 86, 3438, - 1498, 1500, 86, 1502, 1512, 86, 86, 1504, 86, 86, - - 86, 1505, 1506, 1508, 86, 1510, 1509, 1513, 1514, 3438, - 1515, 1507, 1511, 1517, 1521, 1520, 86, 1516, 1519, 1522, - 1518, 1512, 86, 1524, 3438, 1525, 1523, 1528, 3438, 86, - 86, 86, 3438, 1535, 1513, 1514, 86, 1515, 86, 86, - 1517, 86, 1520, 86, 1516, 1519, 86, 1518, 86, 1526, - 1527, 86, 1525, 1523, 86, 86, 1529, 86, 1530, 1532, - 1534, 1531, 1533, 86, 86, 86, 86, 86, 1536, 86, - 1537, 170, 1538, 3438, 1541, 1542, 1526, 1527, 86, 1543, - 1544, 86, 86, 1529, 1546, 1530, 1532, 1534, 1531, 1533, - 1539, 86, 1551, 86, 86, 3438, 1540, 1537, 1547, 1545, - - 86, 1541, 1542, 86, 86, 86, 1543, 1544, 86, 1549, - 86, 1546, 1548, 1550, 86, 1553, 1552, 1539, 86, 86, - 86, 1554, 1555, 1540, 1557, 1547, 1545, 1556, 1558, 86, - 1559, 1560, 1569, 86, 1566, 86, 1549, 86, 1561, 1548, - 1550, 3438, 1553, 1552, 86, 1567, 86, 3438, 1554, 86, - 86, 1557, 86, 1568, 86, 1558, 1562, 1559, 1560, 1563, - 1564, 1566, 1570, 1565, 86, 1561, 86, 3438, 86, 1572, - 86, 1574, 1567, 1577, 1573, 1571, 1575, 86, 3438, 86, - 1568, 3438, 86, 1562, 1576, 86, 1563, 1564, 1578, 1570, - 1565, 86, 1580, 86, 1581, 86, 1579, 1582, 1574, 86, - - 1577, 86, 1571, 1575, 86, 86, 1586, 1583, 1584, 1585, - 86, 1576, 1590, 1588, 1587, 1578, 86, 86, 86, 1580, - 86, 1581, 86, 1579, 1582, 3438, 3438, 1591, 1597, 3438, - 1589, 1592, 86, 1586, 1583, 1584, 1585, 86, 86, 86, - 1588, 1587, 86, 1593, 86, 1596, 1598, 1594, 1595, 1599, - 86, 1601, 1600, 86, 1591, 1597, 86, 1589, 1592, 86, - 86, 86, 1602, 1604, 1607, 1603, 86, 1606, 1608, 86, - 1593, 86, 1596, 1598, 1594, 1595, 1599, 86, 1601, 1600, - 1605, 86, 1609, 1610, 1611, 1613, 1612, 86, 86, 1602, - 1604, 86, 1603, 86, 1606, 86, 86, 86, 1614, 1615, - - 86, 1616, 1617, 1618, 3438, 86, 3438, 1605, 1620, 1609, - 86, 1611, 1613, 1612, 1619, 1621, 1626, 1623, 1622, 1625, - 86, 3438, 1624, 3438, 1628, 1614, 86, 1627, 86, 86, - 1618, 86, 86, 86, 86, 86, 86, 86, 86, 1630, - 86, 1619, 1621, 1626, 1623, 1622, 1625, 86, 1629, 1624, - 86, 1628, 1631, 1633, 1627, 86, 1632, 1634, 86, 1636, - 1638, 86, 1635, 1640, 1637, 1641, 1630, 86, 1639, 86, - 1642, 86, 1646, 86, 86, 1629, 1643, 1644, 1647, 1631, - 1633, 86, 1651, 1632, 1648, 86, 1645, 1638, 86, 86, - 1640, 86, 1641, 86, 86, 1639, 1653, 1642, 86, 1646, - - 1649, 1650, 86, 1643, 1644, 1654, 86, 86, 1652, 1660, - 86, 1648, 1655, 1645, 86, 86, 86, 86, 1656, 1659, - 86, 1657, 1658, 1653, 1662, 3438, 86, 1649, 1650, 86, - 86, 1661, 86, 1663, 1664, 1652, 1660, 86, 1666, 1655, - 1667, 1668, 86, 86, 1665, 1656, 1659, 1669, 1657, 1658, - 86, 1662, 86, 86, 1670, 1672, 1671, 86, 1661, 3438, - 1663, 1664, 1673, 1677, 1678, 1666, 1679, 86, 86, 86, - 86, 1665, 86, 86, 1669, 1674, 86, 86, 86, 1675, - 1680, 1670, 1672, 1671, 1681, 1682, 86, 86, 1683, 1673, - 1677, 1678, 1676, 1679, 1684, 86, 1685, 3438, 1687, 3438, - - 86, 1688, 1674, 1686, 1689, 1691, 1675, 1680, 86, 1690, - 86, 1681, 86, 1694, 86, 1683, 86, 86, 1700, 1676, - 86, 1692, 1693, 1685, 86, 1687, 86, 86, 1688, 86, - 1686, 1689, 1691, 1695, 1696, 1697, 1690, 1698, 1702, 86, - 1699, 86, 1704, 86, 1701, 86, 1703, 1705, 1692, 1693, - 86, 86, 1706, 1707, 3438, 3438, 1712, 3438, 86, 86, - 86, 1696, 1697, 86, 1698, 86, 86, 1699, 1709, 86, - 86, 1701, 1708, 1703, 1705, 86, 1710, 86, 86, 1706, - 1707, 1711, 86, 1712, 1713, 1714, 1719, 1716, 86, 1715, - 3438, 86, 1717, 1720, 86, 1709, 86, 86, 1718, 1708, - - 1723, 1727, 86, 1710, 86, 86, 1721, 86, 1711, 86, - 1724, 1713, 1714, 1719, 1716, 1722, 1715, 86, 86, 1717, - 1720, 1725, 1726, 86, 86, 1718, 1728, 1723, 1727, 1729, - 3438, 86, 1730, 1721, 86, 1732, 86, 1724, 86, 1731, - 1733, 1734, 1722, 3438, 1736, 86, 86, 1735, 1725, 1726, - 1737, 1738, 86, 1728, 1740, 86, 86, 86, 1741, 1730, - 3438, 86, 1732, 3438, 1742, 1739, 1731, 1733, 1734, 170, - 86, 1736, 86, 86, 1735, 1743, 86, 1737, 86, 86, - 1746, 1740, 1744, 1745, 1747, 1741, 86, 1748, 86, 3438, - 86, 1742, 1739, 86, 1749, 1752, 1750, 1751, 1754, 1753, - - 1762, 1755, 1743, 86, 86, 1756, 1758, 1746, 86, 1744, - 1745, 1747, 1757, 86, 1748, 1760, 86, 86, 1761, 1764, - 86, 1749, 86, 1750, 1751, 1754, 1753, 86, 1755, 1759, - 86, 86, 1756, 1763, 86, 1765, 86, 1767, 86, 1757, - 86, 86, 1768, 1771, 1770, 1761, 1764, 86, 1766, 1772, - 1774, 86, 1769, 86, 1773, 86, 1759, 86, 1780, 86, - 1763, 3438, 1765, 86, 1767, 86, 1781, 1775, 86, 1768, - 1771, 1770, 1787, 86, 1784, 1766, 1772, 1774, 1776, 1769, - 86, 1773, 86, 1777, 1782, 86, 1778, 1785, 86, 1786, - 86, 86, 86, 1781, 1775, 1788, 86, 1789, 1779, 1787, - - 1783, 1784, 1790, 1794, 1791, 1776, 1792, 86, 86, 86, - 1777, 1782, 1793, 1778, 1785, 1795, 1786, 1801, 3438, 1797, - 1802, 1804, 86, 1800, 3438, 1779, 86, 1783, 86, 86, - 1796, 1791, 86, 1792, 86, 86, 1799, 86, 86, 1793, - 1798, 1805, 1795, 86, 86, 86, 1797, 86, 86, 86, - 1800, 1803, 86, 86, 1806, 1807, 1809, 1796, 1808, 1810, - 3438, 1812, 1811, 1799, 1813, 86, 86, 1798, 1805, 86, - 1815, 1814, 1817, 86, 86, 1818, 86, 86, 1803, 86, - 86, 1806, 86, 1809, 86, 1808, 1810, 1823, 1812, 1811, - 1816, 1813, 86, 1819, 1820, 86, 1821, 1815, 1814, 1817, - - 86, 86, 1818, 1824, 1822, 1825, 1826, 1829, 1828, 86, - 86, 86, 1827, 86, 86, 1830, 86, 1816, 86, 86, - 1819, 1820, 86, 1821, 1831, 86, 1832, 3438, 1833, 1837, - 1824, 1822, 1825, 1826, 86, 1828, 1834, 1835, 86, 1827, - 1836, 86, 1830, 86, 1838, 1839, 86, 1843, 86, 1840, - 86, 1831, 1848, 1832, 86, 1833, 1837, 86, 86, 1849, - 1847, 1844, 86, 1834, 1835, 1841, 1845, 1836, 1842, 86, - 1850, 1838, 1839, 86, 1843, 1846, 1840, 86, 1866, 86, - 1851, 1852, 1853, 86, 86, 86, 86, 1847, 1844, 86, - 1854, 1855, 1841, 1845, 1856, 1842, 1857, 1850, 1859, 86, - - 1858, 1860, 1846, 3438, 86, 86, 86, 1851, 1852, 86, - 86, 1861, 86, 1865, 1867, 3438, 86, 1854, 1855, 1868, - 86, 1856, 86, 1857, 1862, 1859, 86, 1858, 1860, 86, - 1863, 86, 86, 1864, 1870, 1869, 1872, 1871, 1861, 1873, - 1865, 86, 1897, 86, 1874, 1875, 1868, 86, 86, 86, - 86, 1862, 1877, 1876, 86, 1879, 1878, 1863, 1880, 1881, - 1864, 1870, 1869, 1872, 1871, 86, 1882, 86, 86, 86, - 1883, 86, 1875, 1885, 86, 3438, 1886, 86, 3438, 1877, - 1876, 86, 1879, 1878, 1884, 1880, 1881, 1887, 86, 1888, - 1890, 86, 1893, 1882, 1894, 1889, 86, 1883, 86, 86, - - 1885, 86, 1891, 1886, 1896, 86, 86, 1892, 1895, 86, - 1899, 1884, 1900, 86, 1887, 1898, 1888, 1890, 1901, 1893, - 1902, 1894, 1889, 1903, 86, 1904, 86, 1907, 1911, 1905, - 1906, 1896, 3438, 86, 86, 1895, 86, 86, 3438, 1908, - 86, 3438, 1898, 86, 86, 1901, 86, 1902, 1909, 1912, - 1913, 1915, 1904, 86, 1910, 86, 1905, 1906, 86, 86, - 86, 1914, 1916, 3438, 1917, 1918, 1908, 1919, 86, 86, - 86, 1925, 86, 1920, 1923, 1909, 1912, 1913, 1915, 86, - 1921, 1910, 86, 1922, 86, 86, 1926, 86, 1914, 1916, - 1927, 1917, 1918, 86, 1919, 1924, 86, 1928, 1929, 1930, - - 1920, 86, 1932, 86, 86, 86, 1931, 1921, 86, 1933, - 1922, 1934, 1937, 1938, 86, 1935, 3438, 1927, 86, 1936, - 86, 86, 1924, 86, 86, 1929, 1930, 1939, 1940, 86, - 86, 1941, 3438, 1931, 86, 1942, 1933, 1943, 1944, 1937, - 86, 1945, 1935, 86, 3438, 86, 1936, 1947, 1946, 1949, - 1950, 86, 1948, 86, 1939, 1940, 86, 86, 1941, 86, - 1954, 86, 1942, 1956, 1943, 1944, 86, 170, 1945, 1952, - 1951, 86, 1953, 1955, 1947, 1946, 1949, 86, 86, 1948, - 86, 1961, 1965, 86, 86, 1959, 86, 86, 1957, 1958, - 1956, 1960, 1962, 86, 1967, 1968, 1952, 1951, 86, 1953, - - 1955, 1963, 1964, 86, 86, 1970, 1966, 86, 1969, 86, - 86, 1971, 1959, 86, 1993, 1957, 1958, 86, 1960, 1962, - 1973, 86, 1968, 86, 1972, 1974, 86, 1975, 1963, 1964, - 86, 1976, 1977, 1966, 86, 1969, 86, 86, 86, 86, - 1979, 86, 1980, 1981, 1978, 86, 86, 1973, 1982, 86, - 1984, 1972, 1974, 86, 1975, 3438, 1983, 1990, 1976, 1977, - 1985, 86, 86, 86, 86, 1992, 3438, 1979, 86, 1980, - 1981, 1978, 86, 1986, 1987, 1982, 1991, 1984, 86, 86, - 1994, 86, 1988, 1983, 1990, 1995, 86, 1985, 86, 1989, - 1996, 1997, 86, 86, 1999, 2000, 2003, 2001, 86, 1998, - - 1986, 1987, 86, 1991, 86, 2002, 86, 1994, 86, 1988, - 2004, 2006, 1995, 2005, 2012, 2007, 1989, 1996, 1997, 86, - 86, 1999, 2000, 86, 2001, 2010, 1998, 2008, 2009, 2014, - 2011, 86, 2002, 86, 86, 2013, 2015, 86, 86, 2016, - 2005, 86, 2007, 2018, 3438, 86, 86, 2017, 2019, 86, - 2021, 2020, 86, 86, 2008, 2009, 2022, 2011, 86, 86, - 2024, 86, 2013, 2015, 2023, 2028, 86, 86, 2025, 2042, - 2018, 86, 86, 2026, 2017, 86, 86, 2021, 2020, 2027, - 2034, 2033, 2036, 86, 3438, 2035, 2037, 2024, 86, 86, - 86, 2023, 86, 86, 86, 2025, 2042, 86, 2040, 86, - - 2026, 86, 2029, 2030, 2031, 2038, 2027, 2034, 2033, 2032, - 2039, 86, 2035, 2037, 86, 2041, 2043, 86, 2045, 2047, - 2046, 2044, 2048, 3438, 2049, 2040, 86, 86, 86, 2029, - 2030, 2031, 86, 86, 2050, 86, 2032, 86, 86, 2051, - 3438, 2054, 2041, 2043, 2055, 2052, 2047, 2046, 2044, 2048, - 86, 86, 86, 2053, 2057, 2056, 2059, 2058, 86, 86, - 2060, 2050, 86, 2061, 2062, 86, 2051, 86, 2054, 86, - 2064, 86, 2052, 2065, 86, 2063, 2066, 2068, 86, 86, - 2053, 86, 2056, 2059, 2058, 2067, 86, 2060, 86, 2070, - 2061, 2069, 86, 2071, 86, 86, 86, 86, 2072, 2073, - - 2065, 2074, 2063, 2066, 2068, 86, 2077, 2075, 2076, 86, - 2081, 2080, 2067, 2083, 86, 86, 2070, 2078, 2069, 2079, - 2071, 86, 2084, 2082, 2085, 2072, 2073, 86, 86, 86, - 2091, 86, 86, 86, 2075, 2076, 2087, 86, 86, 2086, - 2083, 2090, 86, 86, 2078, 86, 2079, 2088, 2092, 2084, - 2082, 2085, 2089, 86, 86, 2095, 86, 2093, 2094, 2100, - 86, 2099, 86, 2087, 86, 2097, 2086, 86, 2090, 2101, - 86, 2096, 86, 2105, 2088, 2102, 2098, 86, 86, 2089, - 86, 86, 2095, 86, 2093, 2094, 86, 86, 2099, 2103, - 2104, 2106, 2097, 2107, 2108, 2112, 2101, 86, 2096, 86, - - 2105, 2109, 2102, 2098, 2113, 2116, 2114, 2115, 2119, 2110, - 86, 86, 86, 86, 2111, 86, 2103, 2104, 2106, 86, - 2107, 86, 86, 2117, 86, 86, 2122, 86, 2109, 2120, - 86, 2113, 2116, 2114, 2115, 2118, 2110, 2121, 86, 2124, - 86, 2111, 86, 2123, 2135, 2125, 2126, 2127, 86, 86, - 2117, 2130, 2136, 2122, 2131, 2132, 2120, 86, 86, 2137, - 86, 2138, 2118, 2128, 2121, 86, 86, 2140, 2129, 86, - 2123, 86, 2125, 2126, 2127, 2133, 86, 2139, 2130, 86, - 2134, 86, 86, 86, 86, 2141, 2137, 2142, 2138, 2150, - 2128, 2143, 86, 2145, 2144, 2129, 86, 2146, 2147, 86, - - 86, 2148, 86, 3438, 2139, 2151, 86, 86, 2149, 86, - 86, 170, 2141, 2155, 2142, 86, 2150, 2154, 2143, 2152, - 86, 2144, 2156, 2153, 2146, 86, 2157, 2158, 2148, 2159, - 86, 86, 2151, 2160, 86, 2149, 86, 86, 3438, 86, - 2155, 2161, 2162, 2164, 2154, 2163, 2152, 2166, 86, 2156, - 2153, 2165, 2167, 86, 86, 2168, 2159, 2172, 2171, 2173, - 2169, 86, 86, 2177, 86, 86, 86, 86, 2161, 2162, - 2164, 86, 2163, 86, 2166, 86, 2170, 86, 2165, 2167, - 86, 86, 2168, 2174, 86, 2171, 2173, 2169, 2176, 2175, - 86, 86, 2178, 2180, 2182, 2179, 2181, 2184, 2185, 86, - - 2186, 3438, 86, 2170, 86, 86, 2183, 86, 3438, 3438, - 2174, 86, 86, 86, 3438, 2176, 2175, 86, 86, 2178, - 2180, 2182, 2179, 2181, 2188, 2185, 2187, 2186, 86, 86, - 2189, 2191, 2192, 2183, 2194, 86, 2193, 86, 2199, 2196, - 86, 2190, 2197, 86, 2195, 2198, 2200, 3438, 86, 3438, - 86, 2188, 86, 2187, 86, 2201, 86, 2189, 2191, 2192, - 86, 2194, 86, 2193, 2202, 2199, 2196, 86, 2190, 2197, - 2203, 2195, 2198, 86, 2204, 86, 2205, 2206, 2207, 86, - 2208, 86, 2201, 2209, 2210, 2211, 86, 2212, 86, 86, - 2213, 2202, 2214, 2216, 2215, 2219, 86, 2203, 3438, 3438, - - 2217, 2204, 86, 2205, 86, 2207, 86, 2208, 86, 86, - 2209, 86, 2211, 2218, 86, 86, 86, 2213, 86, 2214, - 86, 2215, 2219, 2220, 2221, 86, 2222, 2217, 2223, 2224, - 2231, 2226, 86, 2225, 2227, 86, 2228, 86, 3438, 2234, - 2218, 2229, 86, 86, 86, 86, 86, 2237, 86, 86, - 2220, 2221, 2233, 2222, 2230, 2223, 2224, 2231, 2226, 2241, - 2225, 2227, 86, 2228, 2235, 2232, 86, 86, 2229, 86, - 2236, 86, 2238, 86, 2237, 2239, 2240, 86, 2242, 2233, - 3438, 2230, 86, 2245, 86, 2243, 2241, 86, 2244, 2249, - 3438, 2235, 2232, 2247, 86, 2246, 2251, 2236, 86, 2238, - - 2252, 86, 2239, 2240, 86, 2242, 2248, 86, 86, 2250, - 2245, 86, 2243, 2253, 86, 2244, 2249, 86, 2254, 2256, - 2247, 86, 2246, 2255, 86, 86, 86, 2252, 86, 2257, - 2258, 2259, 2261, 2248, 2260, 2262, 2250, 2264, 2263, 86, - 2253, 86, 3438, 86, 2266, 86, 2256, 2265, 2271, 2267, - 2255, 86, 86, 86, 86, 2275, 2257, 2258, 2259, 2261, - 86, 2260, 86, 2268, 2264, 2263, 2270, 86, 2272, 2269, - 2276, 2273, 2278, 2274, 2265, 86, 86, 86, 2277, 86, - 86, 86, 86, 86, 2281, 3438, 2283, 86, 2284, 2282, - 2268, 3438, 86, 2270, 86, 2272, 2269, 2276, 2273, 2278, - - 2274, 2279, 3438, 86, 86, 2277, 2285, 2286, 2287, 2280, - 3438, 86, 86, 2283, 86, 2284, 2282, 86, 2290, 2288, - 86, 2291, 2289, 2294, 86, 2292, 2295, 86, 2279, 86, - 2293, 3438, 2296, 2285, 2286, 2287, 2280, 86, 86, 2297, - 2298, 2299, 2300, 86, 86, 2290, 2288, 86, 2291, 2289, - 2294, 2301, 2302, 2295, 86, 2303, 86, 86, 86, 2296, - 2306, 3438, 86, 86, 2304, 2305, 2297, 2298, 2299, 2300, - 86, 86, 2308, 86, 86, 2307, 2309, 86, 2301, 2302, - 2311, 2312, 86, 2310, 2314, 86, 2313, 2306, 86, 3438, - 2315, 2304, 2305, 86, 3438, 86, 86, 2316, 2319, 2308, - - 2320, 2317, 2307, 2309, 86, 86, 86, 2311, 2312, 2321, - 2310, 2314, 86, 2313, 2318, 86, 2323, 2315, 86, 86, - 2322, 86, 86, 2325, 2316, 2319, 2324, 2320, 2317, 86, - 2326, 2327, 2328, 2329, 3438, 2331, 2321, 2332, 2333, 2330, - 86, 2318, 2337, 2323, 86, 86, 2334, 2322, 86, 86, - 86, 170, 2338, 2324, 2339, 2342, 86, 2326, 86, 2328, - 2329, 86, 2331, 2335, 2332, 2341, 2330, 2340, 2336, 2351, - 86, 2343, 86, 2334, 86, 2346, 2347, 3438, 86, 2348, - 2354, 2339, 86, 3438, 86, 2344, 86, 2352, 2355, 2349, - 2350, 3438, 2341, 86, 2340, 86, 2345, 86, 2343, 86, - - 2353, 86, 2346, 86, 86, 86, 2348, 86, 2356, 86, - 86, 2357, 2344, 3438, 2352, 2355, 2349, 2350, 2358, 2359, - 2361, 2360, 86, 2345, 3438, 86, 86, 2353, 86, 2362, - 2365, 2363, 2364, 3438, 86, 86, 2371, 3438, 2357, 2369, - 86, 2366, 86, 2367, 86, 2358, 2359, 2361, 2360, 2372, - 86, 86, 86, 2368, 86, 2382, 2362, 2365, 2363, 2364, - 86, 86, 2370, 86, 2374, 2373, 2369, 86, 2366, 2376, - 2367, 2378, 86, 2375, 86, 2377, 2372, 86, 86, 86, - 2368, 2379, 86, 2380, 2381, 2383, 86, 2384, 2389, 2370, - 86, 2374, 2373, 86, 86, 86, 2376, 86, 2378, 2385, - - 2375, 2386, 2377, 86, 86, 86, 2387, 86, 2379, 86, - 2380, 2381, 2383, 2388, 2384, 2389, 2390, 2391, 2392, 2394, - 2393, 86, 3438, 86, 2396, 2397, 2385, 2395, 2386, 2399, - 86, 86, 86, 2387, 86, 2398, 2400, 3438, 2403, 2404, - 2388, 2406, 2401, 2390, 2391, 2392, 2394, 2393, 86, 86, - 86, 2396, 86, 86, 2395, 86, 2399, 86, 2402, 2405, - 2408, 2407, 2398, 2400, 86, 2403, 86, 2409, 86, 2401, - 2412, 2413, 86, 86, 86, 2416, 2417, 2410, 2414, 2415, - 2411, 2418, 86, 86, 86, 2402, 2405, 2408, 2407, 2419, - 2420, 2421, 2422, 86, 2409, 86, 86, 86, 86, 86, - - 86, 86, 2416, 2417, 2410, 2414, 2415, 2411, 2418, 2424, - 2425, 2423, 2426, 2427, 2428, 2429, 86, 86, 2421, 86, - 86, 2431, 86, 2435, 2434, 2430, 2437, 2433, 86, 2443, - 3438, 86, 2432, 2440, 86, 86, 86, 2425, 2423, 2426, - 86, 86, 2429, 86, 2439, 86, 86, 2436, 2431, 2438, - 86, 2434, 2430, 86, 2433, 86, 86, 86, 86, 2432, - 2440, 3438, 2441, 2445, 2444, 86, 2447, 2446, 2449, 2454, - 2452, 2439, 86, 2448, 2436, 86, 2438, 2442, 86, 2450, - 2451, 86, 86, 2456, 86, 2453, 86, 2457, 86, 2441, - 2445, 2444, 86, 2447, 2446, 86, 86, 2452, 2459, 86, - - 2448, 2455, 2461, 2458, 2442, 86, 2450, 2451, 86, 86, - 2456, 2460, 2453, 2462, 2457, 86, 2465, 86, 86, 2466, - 2469, 2467, 86, 2463, 2464, 86, 86, 2468, 2455, 2461, - 2458, 2472, 86, 86, 2473, 2470, 3438, 2471, 2460, 86, - 2462, 2480, 86, 2465, 86, 86, 2466, 2469, 2467, 86, - 2463, 2464, 86, 2474, 2468, 2475, 2476, 2477, 86, 2478, - 2483, 2473, 2470, 86, 2471, 86, 2479, 2481, 2480, 2482, - 2484, 86, 86, 2485, 3438, 86, 2488, 86, 3438, 2486, - 2474, 3438, 2475, 2476, 2477, 86, 2478, 2483, 86, 86, - 2489, 86, 2487, 2479, 2481, 2491, 2482, 86, 2490, 2492, - - 2493, 2499, 86, 2494, 86, 86, 2486, 2500, 86, 2502, - 2495, 2496, 86, 86, 2497, 2505, 86, 2489, 2498, 2487, - 86, 86, 2491, 2501, 86, 2490, 2492, 2493, 86, 86, - 2494, 86, 86, 86, 2503, 2508, 2502, 2495, 2496, 86, - 2504, 2497, 3438, 2506, 3438, 2498, 86, 86, 2509, 2510, - 2501, 2507, 86, 86, 2513, 2515, 2511, 2514, 2512, 2517, - 2516, 2503, 2508, 86, 2518, 86, 86, 2504, 86, 86, - 2506, 170, 86, 2522, 86, 2509, 2510, 86, 2507, 86, - 2520, 2513, 86, 2511, 2514, 2512, 2517, 2516, 2519, 2521, - 2523, 2518, 86, 2525, 2524, 2526, 2528, 86, 2527, 86, - - 2522, 86, 2529, 2531, 86, 2530, 2532, 2520, 86, 2534, - 2533, 3438, 86, 2536, 3438, 2519, 2521, 2523, 2535, 2537, - 2525, 2524, 86, 86, 86, 2527, 86, 86, 86, 2529, - 2538, 86, 2530, 2539, 86, 86, 86, 2533, 86, 86, - 2536, 86, 2540, 86, 2541, 2535, 2537, 2544, 2542, 3438, - 2543, 3438, 2546, 3438, 2545, 2548, 3438, 2538, 2547, 2550, - 2539, 86, 2552, 3438, 2551, 2549, 86, 2561, 86, 2540, - 86, 3438, 86, 86, 2544, 2542, 86, 2543, 86, 86, - 86, 2545, 2548, 86, 2553, 2547, 2550, 86, 2554, 86, - 2555, 2551, 2549, 2556, 2557, 2558, 2559, 86, 86, 86, - - 86, 2564, 2560, 86, 2562, 2563, 3438, 86, 2565, 86, - 86, 2553, 2566, 2567, 86, 2554, 86, 2555, 86, 86, - 2556, 2557, 2558, 2559, 86, 86, 2568, 2569, 2564, 2560, - 2570, 2562, 2563, 2571, 86, 2565, 2572, 2573, 86, 2566, - 2567, 86, 2574, 2575, 3438, 2576, 3438, 2578, 86, 2577, - 2581, 2579, 86, 2568, 2569, 86, 86, 2570, 2580, 2583, - 86, 2584, 86, 2572, 2573, 86, 2585, 2587, 2582, 2574, - 2575, 86, 2576, 86, 2578, 2586, 2577, 86, 2579, 86, - 86, 86, 86, 86, 86, 2580, 86, 2588, 2584, 2589, - 2590, 86, 2594, 86, 2587, 2582, 2592, 2591, 86, 2593, - - 2595, 2596, 2586, 86, 2597, 2599, 3438, 2600, 3438, 2598, - 86, 86, 2607, 2602, 2588, 2605, 2589, 2590, 86, 86, - 86, 86, 2610, 2592, 2591, 2615, 2593, 86, 2606, 86, - 86, 2597, 2599, 86, 2600, 2601, 2598, 86, 2603, 2604, - 2602, 2608, 86, 86, 86, 2609, 86, 2611, 2612, 86, - 86, 2613, 86, 86, 86, 2606, 86, 86, 2614, 2616, - 86, 2617, 2601, 2621, 2618, 2603, 2604, 2619, 2608, 3438, - 86, 86, 2609, 2620, 2611, 2612, 86, 2624, 2613, 2622, - 2623, 86, 86, 2627, 86, 2614, 2616, 2628, 2617, 86, - 2621, 2618, 86, 2629, 2619, 86, 2625, 2630, 86, 86, - - 2620, 2626, 2631, 86, 2624, 86, 2622, 2623, 86, 2633, - 2627, 2632, 2634, 3438, 86, 2635, 3438, 2636, 86, 3438, - 86, 2641, 2637, 2625, 86, 2638, 86, 86, 2626, 86, - 2639, 2643, 86, 2640, 86, 2642, 2633, 86, 2632, 2634, - 86, 86, 2635, 86, 2636, 86, 86, 2644, 2641, 2637, - 2645, 2646, 2638, 2647, 2655, 86, 2648, 2639, 86, 2649, - 2640, 2650, 2642, 2651, 2656, 2652, 2653, 3438, 2654, 86, - 86, 86, 3438, 86, 2644, 86, 86, 86, 86, 86, - 2647, 86, 86, 2648, 2657, 86, 2649, 86, 2650, 2658, - 2651, 2656, 2652, 2653, 2659, 2654, 86, 2660, 2662, 2661, - - 86, 3438, 2663, 86, 2664, 3438, 2665, 3438, 86, 2671, - 2666, 2657, 86, 86, 2669, 2670, 2658, 2674, 2667, 170, - 86, 2659, 2668, 86, 2660, 2662, 2661, 86, 86, 2663, - 86, 2664, 86, 2665, 86, 2672, 2671, 2666, 2673, 86, - 2676, 2669, 2670, 2677, 2674, 2667, 2675, 3438, 2678, 2668, - 2679, 86, 2680, 2682, 2681, 3438, 2683, 2686, 3438, 86, - 2684, 3438, 2672, 86, 86, 2673, 86, 86, 86, 86, - 86, 3438, 86, 2675, 86, 2678, 86, 2679, 86, 2680, - 2682, 2681, 2685, 2683, 2686, 2687, 2688, 2684, 2689, 86, - 86, 2690, 2691, 86, 2692, 2693, 2694, 2696, 86, 2695, - - 2700, 86, 2698, 2697, 86, 86, 86, 86, 2702, 2685, - 2699, 2703, 2687, 2688, 2701, 2689, 86, 86, 2690, 2691, - 86, 2692, 2693, 2694, 86, 86, 2695, 86, 86, 2698, - 2697, 2704, 86, 2705, 2706, 86, 2707, 2699, 2703, 2708, - 86, 2701, 2710, 2709, 2711, 86, 86, 2712, 86, 2713, - 86, 2715, 2716, 86, 86, 2714, 86, 2717, 2704, 2718, - 2705, 2706, 3438, 2707, 86, 2723, 2708, 2721, 2719, 2710, - 2709, 86, 86, 2720, 86, 86, 2713, 86, 2715, 86, - 2722, 2724, 2714, 2725, 86, 86, 2728, 86, 86, 2726, - 86, 86, 2723, 86, 2721, 2719, 2727, 2729, 2730, 2732, - - 2720, 2731, 3438, 2734, 2733, 3438, 3438, 2722, 2724, 86, - 2725, 86, 86, 86, 2736, 2737, 2726, 86, 86, 2742, - 2735, 86, 86, 2727, 2729, 86, 2732, 86, 2731, 2741, - 2734, 2733, 2738, 2740, 2745, 2739, 86, 86, 2743, 86, - 86, 2736, 2737, 86, 2748, 2744, 86, 2735, 2746, 2751, - 86, 2747, 2752, 86, 86, 3438, 2741, 2749, 2750, 2738, - 2740, 86, 2739, 86, 86, 2743, 86, 86, 2753, 86, - 2754, 2748, 2744, 2756, 2758, 2746, 86, 86, 2747, 2752, - 86, 86, 2755, 2757, 2749, 2750, 2760, 2762, 2759, 86, - 2763, 2761, 86, 3438, 2765, 2753, 2767, 2754, 86, 86, - - 86, 2758, 2764, 86, 2766, 86, 2768, 3438, 2769, 2755, - 2757, 86, 86, 86, 86, 2759, 2771, 2763, 2761, 86, - 86, 2765, 2770, 2767, 2772, 2773, 2774, 86, 2775, 2764, - 2776, 2766, 2777, 86, 86, 2769, 2780, 2786, 86, 86, - 2778, 3438, 2779, 86, 86, 86, 86, 86, 86, 2770, - 2781, 2772, 2773, 2774, 86, 2775, 2782, 2776, 2783, 86, - 2784, 2785, 2788, 86, 2786, 3438, 2787, 2778, 2790, 2779, - 2791, 86, 86, 2793, 2789, 2794, 2795, 2781, 86, 2792, - 86, 86, 86, 2782, 86, 2783, 86, 2784, 2785, 2788, - 86, 86, 86, 2787, 2797, 2790, 2796, 2791, 86, 2798, - - 86, 2789, 86, 2795, 86, 2799, 2792, 2800, 2801, 2802, - 2804, 2803, 2805, 3438, 3438, 2807, 86, 86, 2806, 86, - 2808, 170, 2810, 2796, 86, 2812, 2798, 86, 2811, 2809, - 2813, 2814, 2799, 86, 2800, 2801, 86, 2804, 2803, 2805, - 86, 86, 86, 86, 2815, 2806, 2816, 86, 2817, 86, - 2819, 2818, 86, 86, 2824, 2811, 2809, 86, 2814, 86, - 2825, 2820, 2822, 2821, 2823, 3438, 86, 2827, 3438, 2830, - 86, 2815, 86, 2816, 86, 86, 2826, 2819, 2818, 86, - 86, 86, 86, 2829, 2828, 2831, 86, 2832, 2820, 2822, - 2821, 2823, 86, 86, 2827, 2833, 2830, 2834, 86, 2835, - - 86, 2836, 2837, 2826, 86, 86, 86, 2838, 2841, 86, - 2829, 2828, 2831, 86, 2832, 3438, 2840, 86, 2839, 86, - 86, 2842, 2833, 2843, 2834, 86, 2835, 2845, 2836, 2837, - 2844, 86, 2846, 86, 2838, 86, 86, 86, 2847, 2848, - 86, 2850, 86, 2840, 2849, 2839, 2851, 86, 2842, 2853, - 2843, 2855, 2852, 86, 2845, 2856, 2854, 2844, 86, 86, - 86, 86, 86, 86, 2858, 2847, 2848, 2857, 2850, 86, - 2859, 2849, 2860, 86, 86, 2861, 2853, 2862, 2855, 2852, - 2867, 86, 86, 2854, 2863, 3438, 2864, 2865, 3438, 3438, - 2874, 2868, 2866, 2869, 2857, 3438, 86, 2870, 2875, 2860, - - 2872, 2876, 86, 86, 86, 86, 86, 86, 86, 2871, - 86, 2863, 86, 2864, 2865, 86, 86, 86, 2868, 2866, - 2869, 86, 2873, 2877, 2870, 86, 86, 2872, 86, 2878, - 2879, 86, 2880, 2881, 2886, 2883, 2871, 2882, 2885, 86, - 2884, 86, 2887, 2888, 2889, 3438, 86, 2893, 2890, 2873, - 2877, 86, 86, 86, 2896, 86, 2878, 86, 3438, 2880, - 2881, 2886, 2891, 2892, 2882, 2885, 2897, 86, 86, 2887, - 86, 86, 86, 2894, 86, 2890, 86, 86, 2895, 2898, - 2900, 86, 86, 2899, 2901, 86, 2903, 2902, 2904, 2891, - 2892, 2905, 86, 2897, 2906, 86, 86, 2907, 86, 86, - - 2894, 2908, 2915, 2909, 2914, 2895, 86, 86, 2910, 2918, - 2899, 2901, 2911, 2903, 2902, 2912, 86, 86, 86, 2913, - 86, 2906, 86, 86, 2917, 86, 86, 2919, 2908, 86, - 2916, 2914, 86, 2920, 86, 86, 86, 2921, 2922, 2911, - 86, 3438, 2912, 2923, 3438, 2924, 2913, 86, 3438, 86, - 2930, 2917, 86, 2927, 2919, 2929, 2931, 2916, 2925, 2926, - 2920, 86, 86, 86, 2921, 2922, 2932, 86, 86, 2928, - 2923, 86, 2924, 2933, 2935, 86, 2936, 2930, 86, 86, - 2927, 2934, 2929, 86, 86, 2925, 2926, 86, 2937, 2938, - 2940, 2942, 2943, 2932, 2939, 2941, 2928, 86, 2944, 86, - - 2933, 2935, 2945, 2936, 2946, 3438, 2947, 86, 2934, 2948, - 2950, 3438, 2949, 2951, 86, 2937, 2952, 86, 2942, 86, - 86, 86, 86, 2954, 86, 2944, 2955, 2953, 86, 2945, - 86, 2946, 86, 2947, 86, 86, 2948, 2950, 86, 2949, - 2951, 2956, 2957, 2952, 86, 86, 2958, 2959, 86, 86, - 2954, 2960, 2961, 2955, 2953, 2962, 2963, 2964, 2965, 2966, - 3438, 86, 3438, 2967, 2972, 3438, 3438, 2978, 2956, 2957, - 2968, 2969, 2979, 86, 86, 86, 86, 2970, 2960, 2961, - 86, 86, 86, 2963, 86, 2965, 86, 2971, 86, 86, - 2967, 86, 2973, 2974, 2975, 86, 86, 2968, 2969, 86, - - 2976, 2977, 86, 2980, 2970, 2981, 2982, 2984, 2985, 2983, - 2996, 86, 2986, 86, 2971, 86, 86, 86, 2989, 2973, - 2974, 2975, 2987, 86, 86, 86, 2990, 2976, 2977, 86, - 2980, 86, 2981, 2982, 86, 86, 2983, 2988, 2993, 2986, - 2991, 2992, 86, 86, 86, 86, 86, 2995, 2994, 2987, - 2999, 2998, 3002, 2990, 86, 86, 2997, 86, 3000, 3003, - 86, 3001, 3004, 3438, 2988, 2993, 86, 2991, 2992, 3005, - 86, 86, 86, 3008, 2995, 2994, 86, 2999, 2998, 3002, - 86, 86, 86, 2997, 3009, 3000, 3003, 86, 3001, 3004, - 3006, 3010, 3011, 3007, 3012, 3013, 3005, 3438, 3015, 3438, - - 86, 86, 3014, 86, 3016, 3017, 3018, 3438, 3438, 3021, - 86, 86, 3022, 3020, 3019, 86, 86, 3006, 86, 3011, - 3007, 3012, 3013, 86, 86, 3024, 86, 86, 86, 3014, - 86, 3016, 3017, 86, 86, 3023, 3021, 3026, 3027, 3022, - 3020, 3019, 3438, 3025, 86, 86, 3028, 3029, 3438, 3030, - 3031, 3032, 3034, 3035, 3033, 3438, 3438, 86, 86, 86, - 3038, 86, 3023, 86, 86, 3027, 86, 3044, 86, 86, - 3025, 3036, 3037, 3028, 3029, 86, 3030, 3031, 3032, 3034, - 86, 3033, 3039, 86, 3040, 86, 86, 3038, 3041, 3042, - 3043, 3048, 3045, 86, 3044, 86, 86, 3046, 3036, 3037, - - 86, 3047, 86, 3050, 3051, 3049, 86, 3053, 86, 3039, - 86, 3040, 86, 86, 3052, 3041, 3042, 3043, 86, 3045, - 86, 3056, 3054, 3058, 3046, 3055, 3057, 3059, 3047, 3061, - 86, 86, 3049, 86, 86, 3060, 86, 86, 3062, 3065, - 3063, 3052, 86, 86, 86, 86, 3068, 86, 3056, 3054, - 3058, 3064, 3055, 3057, 86, 3066, 3061, 3069, 3070, 86, - 3073, 3067, 3060, 3082, 86, 86, 3065, 3063, 86, 86, - 86, 3071, 3072, 86, 3074, 3077, 3076, 86, 3064, 3075, - 3079, 3083, 3066, 86, 3069, 3081, 3080, 86, 3067, 86, - 86, 86, 86, 86, 3078, 86, 86, 3086, 3071, 3072, - - 3084, 86, 86, 3076, 86, 3087, 3075, 3079, 3083, 3085, - 3088, 3089, 3081, 3080, 3090, 86, 86, 86, 3091, 3092, - 3093, 3078, 3094, 3095, 86, 3096, 86, 3084, 3099, 3098, - 3438, 3100, 3087, 86, 86, 86, 3085, 3088, 3089, 3097, - 86, 3090, 3102, 3105, 3110, 3091, 3092, 86, 86, 86, - 3095, 86, 86, 86, 3101, 86, 3098, 86, 3100, 3103, - 3104, 3106, 86, 3107, 3109, 3108, 3097, 86, 3112, 86, - 86, 86, 86, 3114, 86, 3111, 86, 3115, 86, 86, - 3113, 3101, 3124, 86, 3116, 3119, 3103, 3104, 3106, 3120, - 3107, 3109, 3108, 3118, 3121, 3112, 3117, 3125, 86, 3122, - - 86, 3126, 3111, 3438, 86, 3128, 86, 3113, 3133, 86, - 86, 3116, 86, 86, 86, 86, 86, 3123, 86, 86, - 3118, 86, 3127, 3117, 3125, 3130, 3122, 3132, 86, 3129, - 86, 3131, 3128, 86, 86, 86, 86, 3134, 86, 3135, - 3139, 3137, 3136, 3138, 3123, 3140, 3141, 86, 86, 3127, - 3142, 3150, 3130, 86, 3132, 86, 3129, 86, 3131, 3144, - 3146, 86, 3147, 3143, 3134, 3151, 3135, 86, 3137, 3136, - 3138, 86, 86, 3145, 3148, 3149, 3152, 3142, 86, 86, - 86, 86, 3153, 86, 3154, 3155, 3144, 86, 86, 86, - 3143, 3156, 3151, 3159, 3438, 86, 86, 3157, 3158, 3160, - - 3145, 3148, 3149, 3152, 86, 86, 86, 3161, 86, 86, - 3162, 3154, 3155, 86, 86, 86, 3164, 3171, 3156, 3163, - 3159, 3166, 3167, 86, 3157, 3158, 3160, 86, 86, 86, - 86, 3165, 3172, 86, 3161, 3168, 3169, 3162, 86, 86, - 3174, 3170, 3175, 3164, 3171, 86, 3163, 86, 3166, 3167, - 3173, 3177, 3178, 3176, 86, 3179, 3180, 86, 3165, 3172, - 86, 3181, 3168, 3169, 86, 3182, 86, 3183, 3170, 3175, - 3185, 3186, 86, 3184, 3191, 86, 3194, 3173, 3177, 3178, - 3176, 86, 86, 86, 86, 3187, 3188, 3438, 3181, 86, - 3189, 3190, 86, 3195, 3183, 3192, 3193, 86, 86, 86, - - 3184, 86, 3197, 3194, 3196, 3199, 3200, 3198, 3202, 3203, - 3201, 3438, 3438, 86, 86, 86, 86, 86, 86, 86, - 3195, 3204, 86, 3205, 86, 86, 3206, 3208, 86, 86, - 86, 3196, 3199, 3200, 3198, 3202, 86, 3201, 3207, 3209, - 3210, 3211, 3212, 3215, 3213, 86, 86, 3214, 3204, 86, - 3205, 86, 3216, 3206, 3208, 3218, 3223, 3231, 3230, 3221, - 3217, 86, 86, 86, 3222, 3207, 3209, 3210, 3211, 86, - 86, 3213, 86, 86, 3214, 3219, 3227, 86, 3220, 86, - 3225, 3224, 3218, 86, 3226, 86, 3233, 3217, 86, 86, - 86, 86, 86, 86, 3228, 3234, 3229, 3232, 86, 3237, - - 3235, 3438, 3219, 3227, 86, 3220, 3236, 3225, 3224, 3238, - 3240, 3226, 86, 86, 3239, 3241, 86, 3242, 86, 3243, - 3244, 3228, 86, 3229, 3232, 3245, 86, 3235, 86, 3246, - 3247, 3249, 86, 3236, 3248, 86, 86, 86, 3250, 3252, - 3254, 3239, 86, 3253, 86, 3251, 86, 86, 3256, 86, - 86, 3255, 86, 3259, 86, 3258, 86, 86, 3249, 86, - 3260, 3248, 3257, 86, 3261, 86, 3252, 86, 86, 86, - 3253, 3262, 3251, 3263, 86, 86, 3264, 3265, 3255, 3267, - 3259, 3268, 3258, 86, 3270, 86, 86, 3260, 3269, 3257, - 86, 86, 3266, 86, 3271, 3272, 3277, 3438, 3262, 3276, - - 86, 86, 3273, 3264, 3265, 86, 3267, 86, 3268, 3274, - 86, 3278, 86, 3275, 86, 3269, 86, 86, 86, 3266, - 86, 3271, 3272, 3277, 86, 3279, 3276, 3280, 86, 3273, - 3283, 3281, 3282, 3284, 86, 3285, 3274, 86, 3278, 3286, - 3275, 3287, 3289, 3288, 86, 86, 3438, 3292, 3290, 3294, - 3291, 86, 3279, 86, 3280, 86, 86, 3283, 3281, 3282, - 86, 86, 86, 86, 3293, 86, 86, 3295, 3287, 3289, - 3288, 86, 3296, 3298, 3292, 3290, 3294, 3291, 3297, 3300, - 86, 3299, 3301, 3302, 86, 86, 3303, 86, 86, 86, - 3438, 3293, 86, 86, 3295, 3306, 3304, 3305, 86, 3296, - - 3298, 3307, 3309, 3308, 86, 3297, 3300, 86, 3299, 3301, - 3302, 3310, 86, 3303, 86, 3311, 3314, 86, 86, 3312, - 3313, 3315, 3306, 3304, 3305, 86, 3316, 86, 3307, 86, - 3308, 3317, 86, 3318, 3319, 3322, 3320, 86, 3310, 86, - 3438, 3438, 3311, 86, 86, 3321, 3312, 3313, 3315, 3323, - 3329, 3324, 86, 86, 3325, 3326, 86, 86, 3317, 86, - 86, 86, 3322, 3320, 3327, 86, 3328, 86, 3330, 3438, - 3331, 86, 3321, 86, 3333, 3334, 3323, 3329, 3324, 86, - 3332, 3325, 3326, 3336, 3337, 3339, 3335, 86, 3338, 3340, - 86, 86, 3341, 3328, 86, 3330, 86, 86, 86, 3344, - - 86, 86, 86, 3342, 3345, 3349, 3343, 3332, 3346, 3438, - 3336, 86, 3339, 3335, 86, 3338, 86, 3348, 86, 3341, - 3347, 86, 86, 3350, 3351, 86, 3354, 86, 3359, 3355, - 3342, 86, 3349, 3343, 86, 3346, 86, 3352, 3353, 86, - 3357, 3356, 86, 86, 3348, 86, 3358, 3347, 86, 3360, - 86, 86, 86, 3354, 86, 3359, 3355, 3362, 3361, 3363, - 3364, 3368, 86, 86, 3352, 3353, 86, 3357, 3356, 3366, - 3365, 3369, 3367, 3358, 3370, 3371, 3360, 86, 86, 86, - 86, 86, 3372, 3373, 3362, 3361, 3363, 86, 86, 3374, - 3376, 3377, 3375, 86, 3379, 3385, 3366, 3365, 3369, 3367, - - 86, 86, 3371, 3378, 86, 86, 86, 3381, 3380, 3372, - 3373, 86, 3382, 3389, 3438, 86, 3374, 3388, 86, 3375, - 3383, 86, 86, 3407, 3387, 86, 3410, 86, 86, 3384, - 3378, 86, 86, 3386, 3381, 3380, 3438, 86, 86, 3382, - 86, 86, 3392, 86, 3388, 3390, 3393, 3383, 3391, 3394, - 86, 3387, 3395, 86, 86, 3396, 3384, 86, 3397, 3401, - 3386, 3399, 86, 86, 86, 3400, 86, 86, 3402, 3392, - 3398, 3404, 3390, 3393, 3403, 3391, 3394, 3438, 3438, 3395, - 86, 86, 3396, 3405, 86, 3397, 3401, 3408, 3399, 3414, - 3409, 86, 3400, 86, 86, 3402, 3406, 3398, 3404, 3411, - - 86, 3403, 3412, 86, 86, 3413, 3416, 3423, 3438, 86, - 3405, 86, 3415, 86, 3408, 86, 3414, 3409, 3418, 86, - 86, 3419, 86, 3406, 3422, 3438, 3411, 3417, 3420, 3412, - 3421, 3427, 3413, 86, 86, 86, 86, 3426, 86, 3415, - 86, 3424, 3428, 86, 3425, 3418, 3429, 3430, 3419, 86, - 86, 3422, 86, 3432, 3417, 3420, 3431, 3421, 86, 3433, - 3436, 3437, 86, 86, 3426, 3438, 3438, 3438, 3424, 3428, - 3434, 3425, 3438, 86, 86, 86, 86, 3435, 86, 3438, - 3432, 86, 3438, 3431, 3438, 86, 3433, 86, 86, 3438, - 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3434, 3438, 3438, - - 3438, 3438, 3438, 3438, 3435, 47, 47, 47, 47, 47, - 47, 47, 52, 52, 52, 52, 52, 52, 52, 57, - 57, 57, 57, 57, 57, 57, 63, 63, 63, 63, - 63, 63, 63, 68, 68, 68, 68, 68, 68, 68, - 74, 74, 74, 74, 74, 74, 74, 80, 80, 80, - 80, 80, 80, 80, 89, 89, 3438, 89, 89, 89, - 89, 160, 160, 3438, 3438, 3438, 160, 160, 162, 162, - 3438, 3438, 162, 3438, 162, 164, 3438, 3438, 3438, 3438, - 3438, 164, 167, 167, 3438, 3438, 3438, 167, 167, 169, - 3438, 3438, 3438, 3438, 3438, 169, 171, 171, 3438, 171, - - 171, 171, 171, 174, 3438, 3438, 3438, 3438, 3438, 174, - 177, 177, 3438, 3438, 3438, 177, 177, 90, 90, 3438, - 90, 90, 90, 90, 17, 3438, 3438, 3438, 3438, 3438, - 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, - 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, - 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, - 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, - 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, - 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, - 3438 - - } ; - -static yyconst flex_int16_t yy_chk[9892] = - { 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, 3, 3, 3, 4, - 4, 4, 5, 5, 6, 6, 5, 32, 6, 7, - 7, 7, 7, 33, 7, 8, 8, 8, 8, 32, - 8, 9, 9, 9, 10, 10, 10, 19, 51, 51, - - 1105, 19, 3446, 3, 32, 33, 4, 67, 67, 5, - 33, 6, 2797, 13, 13, 13, 13, 7, 13, 14, - 14, 14, 14, 8, 14, 15, 15, 15, 9, 25, - 1105, 10, 11, 11, 11, 11, 11, 11, 12, 12, - 12, 12, 12, 12, 16, 16, 16, 34, 28, 84, - 84, 13, 11, 45, 293, 25, 25, 14, 12, 34, - 39, 23, 15, 23, 23, 45, 23, 1116, 28, 177, - 11, 28, 23, 39, 34, 28, 12, 176, 87, 11, - 45, 16, 87, 293, 37, 12, 30, 39, 29, 56, - 37, 174, 56, 72, 30, 28, 26, 169, 100, 23, - - 24, 24, 29, 26, 24, 30, 72, 26, 99, 24, - 26, 37, 30, 30, 29, 29, 100, 99, 24, 167, - 72, 30, 26, 26, 24, 100, 166, 24, 24, 29, - 26, 24, 30, 164, 26, 99, 24, 26, 46, 163, - 46, 46, 163, 46, 162, 24, 27, 160, 31, 46, - 27, 31, 101, 27, 94, 27, 27, 145, 31, 62, - 31, 62, 62, 195, 62, 101, 27, 70, 27, 70, - 70, 31, 70, 27, 94, 31, 35, 27, 31, 101, - 27, 94, 27, 27, 35, 31, 93, 31, 36, 145, - 35, 85, 36, 27, 35, 195, 44, 161, 161, 42, - - 44, 42, 35, 35, 44, 70, 36, 80, 36, 93, - 42, 35, 75, 93, 36, 36, 42, 35, 92, 36, - 74, 35, 44, 44, 43, 42, 42, 44, 42, 168, - 168, 44, 68, 36, 43, 36, 38, 42, 43, 43, - 38, 95, 92, 42, 38, 92, 219, 43, 63, 111, - 38, 43, 73, 38, 73, 73, 95, 73, 111, 97, - 38, 43, 38, 38, 104, 43, 43, 38, 95, 104, - 79, 38, 79, 79, 58, 79, 111, 38, 219, 86, - 38, 86, 86, 97, 86, 222, 97, 38, 40, 956, - 86, 104, 40, 89, 96, 89, 89, 112, 89, 98, - - 57, 96, 40, 40, 89, 40, 112, 103, 103, 106, - 105, 52, 98, 47, 40, 40, 103, 222, 105, 40, - 956, 96, 18, 98, 112, 137, 98, 106, 17, 40, - 40, 89, 40, 41, 103, 103, 41, 105, 102, 98, - 107, 106, 109, 41, 102, 108, 102, 41, 41, 109, - 224, 137, 137, 107, 106, 41, 113, 0, 108, 102, - 41, 114, 0, 41, 115, 102, 118, 107, 114, 109, - 41, 102, 108, 102, 41, 41, 110, 110, 117, 113, - 116, 117, 224, 113, 110, 126, 115, 0, 114, 119, - 118, 115, 110, 116, 117, 117, 0, 119, 118, 126, - - 123, 0, 117, 110, 110, 117, 120, 116, 117, 124, - 121, 110, 126, 123, 121, 122, 119, 118, 125, 127, - 122, 117, 117, 122, 130, 128, 120, 123, 120, 146, - 121, 130, 124, 120, 121, 129, 124, 121, 125, 127, - 131, 121, 122, 128, 146, 125, 127, 122, 133, 129, - 132, 130, 128, 120, 135, 134, 146, 121, 135, 132, - 0, 136, 129, 131, 134, 138, 140, 131, 136, 141, - 141, 133, 138, 0, 139, 133, 135, 132, 140, 142, - 143, 135, 134, 139, 144, 135, 0, 142, 136, 139, - 0, 143, 138, 140, 148, 143, 141, 139, 144, 0, - - 147, 139, 149, 151, 143, 148, 142, 143, 152, 151, - 139, 144, 155, 149, 148, 150, 139, 147, 143, 152, - 147, 148, 143, 150, 153, 154, 147, 147, 156, 149, - 151, 158, 148, 153, 155, 152, 182, 157, 173, 155, - 154, 159, 150, 156, 147, 153, 157, 147, 182, 153, - 0, 153, 154, 158, 159, 156, 178, 178, 158, 0, - 153, 0, 173, 182, 157, 173, 0, 179, 159, 0, - 0, 165, 153, 165, 165, 170, 165, 170, 170, 171, - 170, 171, 171, 175, 171, 175, 175, 180, 175, 179, - 0, 181, 0, 184, 179, 183, 185, 186, 187, 188, - - 181, 180, 183, 0, 189, 186, 227, 0, 0, 184, - 187, 189, 190, 193, 183, 185, 194, 171, 181, 180, - 184, 188, 183, 185, 186, 187, 188, 191, 180, 183, - 190, 189, 229, 191, 192, 193, 192, 196, 227, 190, - 193, 196, 194, 194, 198, 200, 0, 199, 203, 0, - 204, 201, 205, 200, 202, 210, 206, 204, 196, 191, - 191, 192, 199, 203, 229, 196, 207, 210, 196, 0, - 198, 198, 200, 201, 199, 203, 202, 204, 201, 206, - 205, 202, 210, 206, 205, 196, 197, 208, 207, 213, - 212, 197, 209, 207, 217, 256, 197, 211, 208, 212, - - 211, 217, 197, 197, 214, 209, 216, 205, 0, 197, - 0, 213, 211, 197, 208, 220, 213, 212, 197, 209, - 256, 217, 256, 197, 211, 218, 214, 211, 216, 197, - 197, 214, 215, 216, 221, 215, 218, 215, 226, 225, - 223, 220, 220, 231, 226, 221, 228, 223, 0, 215, - 233, 215, 218, 225, 230, 0, 0, 0, 215, 215, - 234, 0, 215, 232, 215, 226, 221, 223, 228, 239, - 235, 225, 221, 228, 234, 231, 215, 230, 215, 236, - 225, 230, 233, 232, 237, 238, 236, 234, 239, 240, - 232, 235, 241, 244, 238, 242, 239, 235, 243, 238, - - 245, 251, 247, 240, 244, 237, 236, 245, 248, 249, - 243, 237, 238, 242, 241, 253, 240, 248, 246, 241, - 244, 238, 242, 246, 247, 243, 250, 245, 259, 247, - 255, 250, 249, 251, 254, 248, 249, 252, 252, 258, - 257, 254, 260, 261, 262, 264, 252, 253, 257, 0, - 246, 261, 255, 250, 263, 267, 265, 255, 264, 258, - 259, 254, 266, 268, 252, 252, 258, 257, 0, 263, - 261, 269, 264, 270, 260, 271, 262, 270, 267, 272, - 274, 263, 265, 265, 273, 0, 275, 267, 269, 266, - 276, 278, 273, 275, 272, 268, 269, 271, 269, 274, - - 270, 279, 271, 280, 277, 267, 272, 274, 277, 282, - 281, 273, 276, 275, 0, 269, 283, 276, 285, 287, - 289, 284, 286, 278, 288, 280, 288, 285, 283, 290, - 280, 277, 281, 279, 284, 286, 291, 281, 287, 292, - 0, 282, 295, 283, 296, 285, 287, 297, 284, 286, - 294, 288, 289, 290, 299, 298, 290, 300, 297, 294, - 303, 291, 304, 291, 305, 292, 292, 298, 295, 295, - 296, 296, 301, 302, 297, 304, 306, 294, 299, 307, - 300, 299, 298, 309, 300, 308, 311, 313, 0, 304, - 301, 302, 303, 310, 313, 312, 305, 314, 315, 301, - - 302, 306, 308, 306, 315, 317, 314, 316, 308, 309, - 309, 307, 308, 318, 313, 310, 320, 319, 311, 312, - 310, 316, 321, 326, 314, 315, 319, 312, 323, 308, - 321, 317, 317, 322, 316, 325, 324, 318, 326, 320, - 318, 327, 322, 320, 319, 324, 312, 328, 0, 321, - 326, 329, 325, 0, 323, 323, 0, 331, 332, 325, - 322, 0, 325, 324, 0, 333, 329, 332, 336, 335, - 340, 328, 0, 327, 328, 331, 339, 0, 329, 325, - 330, 339, 336, 330, 331, 332, 337, 333, 330, 330, - 330, 330, 333, 335, 340, 336, 335, 340, 330, 338, - - 338, 337, 341, 0, 334, 0, 334, 330, 339, 347, - 330, 342, 345, 337, 342, 330, 330, 330, 330, 334, - 343, 342, 334, 348, 338, 346, 338, 338, 334, 341, - 345, 334, 343, 334, 344, 344, 347, 349, 342, 345, - 350, 342, 351, 346, 344, 348, 334, 343, 352, 334, - 348, 354, 346, 353, 351, 0, 357, 361, 355, 354, - 356, 344, 344, 349, 349, 355, 350, 350, 353, 351, - 352, 358, 356, 358, 360, 352, 362, 363, 354, 361, - 353, 360, 358, 364, 361, 355, 370, 356, 357, 364, - 365, 0, 365, 366, 368, 0, 369, 358, 358, 363, - - 358, 360, 0, 371, 363, 364, 366, 393, 362, 358, - 364, 367, 368, 404, 365, 372, 364, 365, 370, 365, - 366, 368, 369, 369, 367, 375, 376, 367, 377, 367, - 371, 378, 375, 379, 382, 367, 386, 372, 367, 393, - 377, 386, 372, 378, 376, 404, 379, 382, 381, 385, - 376, 367, 375, 376, 367, 377, 367, 373, 378, 373, - 379, 382, 389, 0, 381, 373, 384, 385, 386, 373, - 389, 376, 381, 388, 373, 381, 385, 373, 384, 388, - 0, 387, 390, 373, 373, 391, 373, 392, 387, 389, - 409, 381, 373, 384, 390, 392, 373, 394, 394, 395, - - 388, 373, 387, 391, 373, 374, 395, 374, 387, 390, - 397, 399, 391, 444, 392, 387, 396, 398, 399, 397, - 374, 400, 409, 374, 394, 374, 395, 374, 400, 396, - 0, 374, 374, 401, 374, 398, 402, 403, 399, 398, - 444, 0, 397, 396, 398, 401, 397, 374, 400, 403, - 374, 405, 374, 0, 374, 383, 383, 408, 402, 406, - 401, 407, 398, 402, 403, 383, 406, 383, 383, 383, - 408, 410, 383, 410, 411, 412, 407, 405, 405, 0, - 383, 436, 383, 383, 408, 411, 406, 436, 407, 413, - 413, 430, 383, 414, 383, 383, 383, 412, 410, 383, - - 414, 411, 412, 415, 416, 0, 417, 418, 436, 0, - 419, 419, 0, 420, 415, 416, 422, 423, 413, 417, - 414, 0, 0, 430, 421, 423, 0, 435, 419, 424, - 415, 416, 418, 417, 418, 419, 420, 419, 419, 421, - 420, 424, 422, 422, 423, 426, 425, 421, 427, 428, - 431, 421, 432, 434, 426, 419, 424, 425, 433, 435, - 428, 427, 428, 0, 439, 437, 421, 428, 431, 442, - 438, 434, 426, 425, 432, 427, 428, 431, 440, 432, - 434, 433, 448, 447, 445, 433, 437, 428, 439, 428, - 429, 439, 437, 438, 441, 442, 442, 438, 429, 429, - - 440, 441, 429, 429, 443, 440, 445, 450, 446, 447, - 447, 445, 429, 449, 448, 452, 453, 429, 443, 450, - 454, 441, 446, 457, 455, 429, 429, 451, 454, 429, - 429, 443, 457, 451, 450, 446, 449, 452, 453, 455, - 449, 456, 452, 453, 458, 459, 454, 454, 456, 0, - 457, 455, 460, 461, 451, 454, 463, 0, 462, 458, - 465, 0, 464, 0, 466, 467, 465, 469, 456, 459, - 467, 458, 459, 462, 460, 471, 461, 472, 475, 460, - 461, 471, 463, 463, 464, 462, 0, 465, 473, 464, - 466, 466, 467, 469, 469, 474, 472, 477, 486, 480, - - 475, 474, 471, 476, 472, 475, 473, 479, 480, 479, - 476, 481, 477, 483, 482, 473, 479, 484, 481, 485, - 486, 492, 474, 0, 477, 486, 480, 482, 488, 487, - 476, 488, 493, 489, 479, 484, 479, 490, 481, 493, - 491, 482, 487, 495, 484, 483, 494, 488, 0, 496, - 490, 485, 491, 492, 500, 488, 487, 489, 488, 493, - 489, 497, 496, 498, 490, 499, 495, 491, 498, 501, - 494, 499, 502, 494, 504, 495, 496, 500, 503, 505, - 506, 500, 509, 497, 502, 504, 0, 505, 497, 509, - 498, 501, 499, 495, 506, 512, 501, 510, 511, 502, - - 503, 504, 0, 510, 513, 503, 505, 506, 507, 509, - 511, 0, 513, 507, 514, 507, 516, 515, 512, 521, - 518, 507, 512, 507, 510, 511, 507, 507, 515, 519, - 0, 513, 518, 507, 507, 507, 514, 521, 525, 516, - 507, 514, 507, 516, 515, 517, 521, 518, 507, 517, - 507, 519, 520, 507, 507, 520, 519, 523, 522, 524, - 507, 528, 525, 520, 0, 525, 527, 517, 522, 523, - 524, 526, 517, 527, 530, 526, 517, 531, 529, 520, - 529, 532, 520, 534, 523, 533, 524, 528, 528, 531, - 522, 534, 536, 527, 535, 522, 532, 533, 526, 535, - - 530, 530, 537, 538, 531, 529, 539, 540, 532, 542, - 534, 538, 533, 545, 536, 543, 544, 546, 539, 536, - 537, 535, 551, 547, 549, 0, 558, 542, 540, 537, - 538, 551, 546, 539, 540, 547, 542, 549, 543, 544, - 548, 550, 543, 544, 546, 545, 552, 553, 548, 551, - 547, 549, 554, 550, 555, 557, 556, 555, 558, 560, - 562, 553, 566, 559, 0, 561, 0, 548, 550, 552, - 0, 565, 563, 552, 553, 556, 564, 554, 559, 554, - 561, 555, 557, 556, 562, 563, 566, 562, 564, 566, - 559, 560, 561, 565, 567, 568, 570, 569, 565, 563, - - 571, 567, 569, 564, 567, 572, 568, 573, 574, 575, - 570, 576, 567, 577, 578, 579, 0, 0, 577, 583, - 578, 567, 568, 570, 580, 581, 582, 571, 567, 569, - 579, 567, 572, 584, 582, 574, 575, 585, 583, 573, - 586, 578, 579, 576, 586, 577, 583, 581, 580, 588, - 587, 580, 581, 582, 589, 590, 591, 584, 587, 585, - 584, 593, 592, 595, 585, 591, 594, 586, 0, 597, - 598, 600, 588, 596, 593, 595, 588, 587, 590, 596, - 599, 598, 590, 591, 592, 602, 589, 599, 593, 592, - 595, 597, 594, 594, 601, 604, 597, 598, 602, 606, - - 596, 603, 607, 600, 604, 605, 603, 599, 606, 603, - 603, 610, 602, 607, 613, 611, 601, 608, 609, 0, - 633, 601, 604, 614, 610, 603, 606, 611, 603, 607, - 615, 605, 605, 603, 617, 618, 603, 603, 610, 608, - 609, 614, 611, 616, 608, 609, 613, 619, 622, 620, - 614, 624, 633, 623, 615, 621, 617, 615, 626, 618, - 620, 617, 618, 627, 621, 616, 616, 623, 622, 619, - 616, 629, 625, 624, 619, 622, 620, 629, 624, 625, - 623, 627, 621, 628, 630, 626, 631, 632, 634, 0, - 627, 628, 616, 635, 637, 630, 636, 636, 629, 625, - - 638, 641, 632, 639, 631, 643, 640, 644, 642, 634, - 628, 630, 639, 631, 632, 634, 642, 635, 637, 640, - 635, 637, 638, 641, 645, 636, 646, 638, 641, 644, - 639, 650, 648, 640, 644, 642, 647, 643, 647, 649, - 653, 651, 0, 654, 649, 650, 655, 652, 661, 658, - 646, 654, 0, 646, 648, 651, 645, 656, 650, 648, - 657, 652, 652, 647, 655, 659, 660, 657, 651, 652, - 654, 649, 653, 655, 652, 658, 658, 665, 664, 656, - 661, 660, 662, 664, 656, 659, 0, 657, 652, 652, - 660, 663, 659, 660, 666, 667, 666, 662, 668, 669, - - 0, 663, 670, 665, 665, 671, 668, 672, 660, 662, - 664, 670, 674, 663, 671, 673, 672, 675, 663, 674, - 667, 666, 667, 673, 669, 668, 669, 676, 663, 670, - 677, 678, 671, 679, 672, 680, 682, 684, 681, 674, - 683, 0, 673, 678, 680, 679, 681, 720, 677, 675, - 676, 682, 683, 688, 676, 686, 687, 677, 678, 685, - 679, 688, 680, 682, 689, 681, 685, 683, 686, 684, - 689, 687, 691, 690, 693, 692, 0, 699, 694, 720, - 688, 690, 686, 687, 692, 693, 685, 694, 695, 695, - 696, 689, 697, 698, 0, 691, 701, 695, 696, 691, - - 690, 693, 692, 699, 699, 694, 698, 700, 703, 701, - 702, 705, 704, 708, 697, 695, 695, 696, 702, 697, - 698, 706, 709, 701, 703, 704, 711, 708, 707, 710, - 700, 0, 706, 705, 700, 703, 707, 702, 705, 704, - 708, 712, 709, 713, 715, 714, 711, 717, 706, 709, - 723, 710, 719, 711, 714, 707, 710, 716, 718, 721, - 717, 0, 725, 712, 715, 713, 722, 719, 712, 724, - 713, 715, 714, 723, 717, 716, 718, 723, 727, 719, - 725, 721, 724, 726, 716, 718, 721, 729, 728, 725, - 722, 727, 730, 722, 728, 726, 724, 731, 732, 733, - - 730, 735, 736, 0, 737, 727, 738, 0, 739, 735, - 726, 737, 741, 742, 729, 728, 744, 733, 730, 730, - 732, 741, 743, 739, 731, 732, 733, 730, 735, 738, - 740, 737, 740, 738, 736, 739, 744, 745, 746, 741, - 746, 743, 750, 744, 747, 742, 745, 0, 0, 743, - 753, 747, 0, 0, 750, 0, 756, 740, 760, 757, - 753, 762, 0, 0, 745, 746, 759, 761, 0, 750, - 0, 747, 748, 769, 756, 748, 760, 753, 761, 748, - 757, 763, 748, 756, 762, 760, 757, 759, 762, 748, - 748, 766, 748, 759, 761, 764, 765, 748, 767, 748, - - 766, 775, 748, 768, 775, 769, 748, 763, 763, 748, - 768, 767, 765, 771, 772, 0, 748, 748, 766, 748, - 772, 764, 764, 765, 773, 767, 783, 774, 775, 776, - 768, 770, 770, 773, 770, 771, 778, 770, 777, 0, - 771, 772, 770, 779, 778, 776, 783, 781, 770, 770, - 774, 773, 776, 783, 774, 779, 776, 770, 770, 770, - 777, 770, 782, 778, 770, 777, 780, 782, 780, 770, - 779, 781, 776, 784, 781, 770, 770, 785, 0, 786, - 0, 787, 0, 788, 791, 789, 0, 793, 0, 785, - 792, 790, 0, 780, 782, 794, 795, 806, 0, 784, - - 784, 786, 793, 794, 785, 788, 786, 787, 787, 789, - 788, 791, 789, 790, 793, 792, 797, 792, 790, 795, - 796, 798, 794, 795, 797, 799, 800, 796, 801, 806, - 802, 804, 805, 803, 0, 808, 812, 805, 800, 807, - 798, 801, 803, 797, 809, 811, 804, 796, 798, 809, - 814, 799, 799, 800, 817, 801, 802, 802, 804, 805, - 803, 807, 808, 813, 815, 816, 807, 811, 812, 819, - 0, 813, 811, 818, 820, 821, 809, 824, 817, 822, - 823, 817, 814, 825, 826, 829, 815, 828, 819, 823, - 813, 815, 832, 826, 818, 828, 819, 816, 822, 824, - - 818, 820, 821, 825, 824, 827, 822, 823, 830, 831, - 825, 826, 829, 833, 828, 834, 827, 841, 0, 832, - 836, 837, 838, 834, 839, 838, 830, 843, 831, 846, - 0, 842, 827, 0, 840, 830, 831, 0, 836, 837, - 843, 841, 834, 846, 841, 833, 839, 836, 837, 838, - 845, 839, 840, 842, 843, 844, 846, 844, 842, 847, - 848, 840, 849, 850, 847, 851, 852, 853, 845, 852, - 856, 850, 854, 857, 849, 858, 853, 845, 860, 859, - 854, 858, 844, 851, 860, 0, 848, 848, 0, 849, - 850, 847, 851, 852, 853, 856, 854, 856, 867, 854, - - 857, 859, 858, 861, 862, 860, 859, 854, 863, 864, - 861, 862, 869, 863, 865, 866, 864, 868, 870, 866, - 869, 867, 871, 0, 875, 867, 868, 879, 872, 873, - 861, 862, 865, 874, 876, 863, 864, 873, 0, 869, - 871, 865, 866, 872, 868, 875, 874, 878, 884, 871, - 870, 875, 877, 876, 879, 872, 873, 881, 880, 882, - 874, 876, 889, 883, 881, 877, 880, 884, 886, 878, - 883, 885, 887, 886, 878, 884, 888, 882, 885, 877, - 887, 890, 897, 888, 881, 880, 882, 891, 892, 893, - 883, 895, 0, 896, 889, 886, 0, 894, 885, 887, - - 891, 0, 893, 888, 894, 897, 900, 898, 903, 897, - 902, 899, 901, 890, 891, 898, 893, 904, 901, 899, - 892, 905, 907, 895, 894, 896, 899, 0, 900, 906, - 905, 909, 0, 900, 898, 908, 902, 902, 899, 901, - 903, 904, 908, 906, 904, 911, 899, 913, 905, 912, - 910, 912, 913, 914, 907, 916, 906, 0, 909, 910, - 912, 915, 908, 917, 918, 914, 920, 911, 917, 0, - 919, 918, 911, 925, 920, 932, 912, 910, 912, 913, - 914, 916, 916, 922, 915, 923, 922, 925, 915, 926, - 917, 918, 919, 920, 929, 927, 926, 919, 923, 0, - - 925, 927, 932, 930, 0, 931, 933, 953, 933, 0, - 922, 934, 923, 937, 939, 935, 926, 931, 0, 939, - 929, 929, 927, 928, 936, 928, 930, 935, 0, 928, - 930, 928, 931, 933, 934, 937, 928, 936, 934, 953, - 937, 928, 935, 940, 938, 944, 939, 928, 943, 941, - 928, 936, 928, 0, 942, 944, 928, 938, 928, 945, - 943, 940, 941, 928, 0, 946, 942, 944, 928, 954, - 940, 938, 944, 948, 945, 943, 941, 942, 947, 948, - 950, 942, 944, 949, 0, 951, 945, 946, 955, 952, - 957, 947, 946, 942, 958, 0, 949, 963, 950, 958, - - 948, 954, 966, 962, 960, 947, 951, 950, 965, 959, - 949, 952, 951, 960, 964, 955, 952, 959, 962, 963, - 0, 958, 957, 965, 963, 967, 968, 964, 966, 966, - 962, 960, 970, 969, 973, 965, 959, 961, 972, 0, - 970, 964, 961, 971, 961, 968, 969, 967, 979, 972, - 961, 971, 967, 968, 974, 961, 961, 975, 976, 970, - 969, 0, 961, 961, 961, 972, 973, 976, 977, 961, - 971, 961, 975, 980, 983, 979, 974, 961, 978, 977, - 984, 974, 961, 961, 975, 976, 981, 978, 986, 961, - 985, 988, 989, 981, 987, 977, 980, 0, 985, 995, - - 980, 990, 992, 0, 984, 978, 983, 984, 987, 990, - 986, 994, 993, 981, 989, 986, 996, 985, 997, 989, - 992, 987, 994, 988, 998, 999, 997, 1000, 990, 992, - 993, 995, 999, 1002, 996, 1001, 1005, 1003, 994, 993, - 1000, 1004, 1001, 996, 1007, 997, 998, 1009, 1002, 0, - 0, 998, 999, 1013, 1000, 1003, 1006, 1005, 1009, 1004, - 1002, 1014, 1001, 1005, 1003, 1011, 1006, 1017, 1004, 1014, - 1012, 1015, 1016, 1018, 1009, 1013, 1007, 1012, 1011, 1017, - 1013, 1016, 1019, 1006, 1015, 1022, 1025, 1023, 1014, 1024, - 1026, 0, 1011, 0, 1017, 1018, 1028, 1012, 1015, 1016, - - 1018, 1027, 0, 1033, 1019, 1023, 1033, 1022, 1026, 1019, - 1028, 1030, 1022, 1027, 1023, 1024, 1024, 1026, 1025, 1031, - 1034, 1035, 1030, 1028, 1031, 1036, 1037, 1038, 1027, 1033, - 1033, 1039, 1036, 1033, 1035, 1041, 1038, 1037, 1030, 1042, - 1043, 1045, 0, 1040, 1034, 1039, 1042, 1034, 1035, 1044, - 1048, 1031, 1036, 1037, 1038, 1040, 1046, 1050, 1039, 1049, - 1051, 1044, 1052, 1045, 1058, 1049, 1042, 1041, 1045, 1046, - 1040, 1060, 1043, 1052, 1048, 1053, 1044, 1048, 1054, 1050, - 1056, 1055, 1051, 1046, 1050, 1058, 1049, 1051, 1059, 1052, - 1061, 1058, 1060, 1053, 1062, 1056, 1063, 1064, 1060, 1059, - - 1054, 1065, 1053, 1055, 1066, 1054, 1064, 1056, 1055, 1067, - 1069, 1068, 1071, 1072, 1063, 1059, 1070, 1069, 1067, 1068, - 1073, 1062, 1061, 1063, 1064, 1065, 1071, 1074, 1065, 1075, - 1066, 1066, 1076, 1077, 1078, 1080, 1067, 1069, 1068, 1071, - 1070, 1081, 1083, 1070, 1085, 1072, 1082, 0, 1084, 1074, - 1081, 1075, 1073, 1082, 1074, 1077, 1075, 1080, 1086, 1087, - 1077, 1089, 1080, 1088, 1076, 1090, 1078, 1091, 1081, 1089, - 1084, 1085, 1088, 1082, 1083, 1084, 1086, 1087, 1093, 1092, - 1097, 1095, 1098, 1101, 1094, 1086, 1087, 0, 1089, 1090, - 1088, 1091, 1090, 1094, 1091, 1092, 1095, 1099, 1100, 1096, - - 1093, 1104, 1103, 0, 1107, 1093, 1092, 1096, 1095, 1099, - 1101, 1094, 1097, 1102, 1098, 1103, 1104, 1109, 1106, 1109, - 1100, 1102, 1107, 1112, 1099, 1100, 1096, 1106, 1104, 1103, - 1108, 1107, 1113, 1111, 1114, 1115, 1117, 1119, 1108, 1118, - 1102, 1111, 1115, 1120, 1109, 1106, 1122, 1124, 1123, 1117, - 1112, 1118, 1119, 1121, 1113, 1123, 1114, 1108, 1125, 1113, - 1111, 1114, 1115, 1117, 1119, 1120, 1118, 1126, 1128, 1127, - 1120, 1121, 1130, 1122, 1131, 1123, 1129, 0, 1126, 1124, - 1121, 1134, 1132, 1139, 1137, 1130, 1135, 1131, 1133, 1134, - 1125, 1127, 1137, 1128, 1126, 1128, 1127, 0, 1129, 1130, - - 1133, 1131, 1136, 1129, 1132, 1140, 1135, 1141, 1134, 1132, - 1139, 1137, 1142, 1135, 1136, 1133, 1141, 1143, 1140, 1144, - 1147, 0, 1148, 0, 1142, 1150, 1144, 0, 1149, 1136, - 0, 1145, 1140, 1153, 1141, 0, 1151, 0, 1143, 1142, - 1145, 1152, 1145, 1147, 1143, 1145, 1144, 1147, 1148, 1148, - 1149, 1154, 1150, 1145, 1152, 1149, 1151, 1153, 1145, 1154, - 1153, 1155, 1156, 1151, 1157, 1158, 1159, 1145, 1152, 1145, - 1155, 1161, 1145, 1158, 1160, 1163, 1165, 1166, 1154, 1162, - 1156, 1159, 1170, 1163, 1161, 1167, 1157, 1168, 1155, 1156, - 1171, 1157, 1158, 1159, 1168, 1162, 1160, 1169, 1161, 1166, - - 1175, 1160, 1163, 1165, 1166, 1170, 1162, 1167, 1171, 1170, - 1172, 1173, 1167, 1174, 1168, 1175, 1176, 1171, 0, 1169, - 1178, 1174, 1172, 1173, 1169, 1177, 1179, 1175, 1176, 1182, - 1180, 0, 1181, 0, 1179, 1178, 1180, 1172, 1173, 1183, - 1174, 1181, 1184, 1176, 1186, 1177, 1187, 1178, 1185, 1184, - 1182, 1183, 1177, 1179, 1195, 1185, 1182, 1180, 1187, 1181, - 1188, 1189, 1186, 1191, 1190, 1191, 1183, 1192, 1188, 1184, - 1193, 1186, 1190, 1187, 1198, 1185, 1189, 1193, 1199, 1192, - 1196, 1201, 1197, 1202, 0, 1199, 1195, 1188, 1189, 1200, - 1191, 1190, 1196, 1198, 1192, 1197, 1207, 1193, 1202, 1203, - - 1200, 1198, 1205, 1201, 1203, 1199, 1204, 1196, 1201, 1197, - 1202, 1206, 0, 1209, 1204, 1205, 1200, 1210, 1211, 0, - 0, 1222, 1207, 1207, 1215, 1206, 1212, 1209, 1222, 1205, - 1224, 1203, 1213, 1204, 0, 1210, 1216, 1214, 1206, 1208, - 1209, 0, 1218, 1208, 1210, 1217, 1208, 1208, 1222, 1220, - 1211, 1208, 1212, 1212, 1213, 1214, 1215, 1208, 1216, 1213, - 1237, 1208, 1224, 1216, 1214, 1208, 1208, 1217, 1218, 1218, - 1208, 1219, 1217, 1208, 1208, 1220, 1220, 1219, 1208, 1221, - 1223, 1221, 1225, 1226, 1208, 1229, 1237, 1237, 1208, 1223, - 1226, 1227, 1228, 1230, 1229, 1231, 0, 1233, 1219, 1232, - - 1225, 0, 1236, 1221, 0, 1228, 1221, 1223, 1221, 1225, - 1226, 0, 1229, 1227, 1235, 1236, 1238, 1238, 1227, 1228, - 1233, 1232, 1239, 1243, 1233, 1230, 1232, 1231, 1234, 1236, - 1241, 1242, 1243, 1234, 1244, 1234, 1235, 1234, 1239, 1234, - 0, 1235, 1245, 1242, 0, 1238, 1234, 1245, 1248, 1239, - 1243, 1246, 1244, 1241, 1247, 1234, 1254, 1241, 1242, 1247, - 1234, 1244, 1234, 1249, 1234, 1250, 1234, 1255, 1256, 1246, - 1248, 1251, 1252, 1253, 1245, 1248, 1249, 0, 1246, 1251, - 1252, 1247, 1258, 1250, 1257, 1260, 1253, 1256, 1254, 1259, - 1249, 1264, 1250, 1255, 1255, 1256, 1262, 1257, 1251, 1252, - - 1253, 1261, 1259, 1260, 1258, 1262, 1263, 1265, 1263, 1258, - 1266, 1257, 1260, 1264, 1267, 1268, 1259, 1271, 1264, 1270, - 1273, 1261, 1266, 1262, 1272, 1274, 1276, 1278, 1261, 1275, - 0, 1277, 1272, 1263, 1265, 1281, 1275, 1266, 1273, 1271, - 1268, 1267, 1268, 1270, 1271, 1284, 1270, 1273, 1286, 1278, - 1288, 1272, 1274, 1276, 1278, 1279, 1275, 1277, 1277, 1280, - 1282, 1279, 1281, 1283, 1285, 1280, 1287, 1282, 1288, 1284, - 1289, 1285, 1284, 1283, 1290, 1292, 1294, 1288, 1296, 1295, - 1286, 0, 1279, 1290, 1293, 1297, 1280, 1282, 1287, 0, - 1283, 1285, 1295, 1287, 1298, 1289, 1293, 1289, 1294, 1292, - - 1296, 1290, 1292, 1294, 1297, 1296, 1295, 1299, 1300, 0, - 1301, 1293, 1297, 1303, 1308, 1306, 1298, 1302, 1305, 1309, - 1304, 1298, 1303, 1311, 0, 1312, 1310, 1315, 0, 1306, - 1300, 1299, 0, 1323, 1299, 1300, 1301, 1301, 1305, 1302, - 1303, 1304, 1306, 1312, 1302, 1305, 1308, 1304, 1310, 1313, - 1314, 1309, 1312, 1310, 1315, 1311, 1316, 1313, 1318, 1320, - 1322, 1319, 1321, 1316, 1322, 1323, 1314, 1318, 1324, 1321, - 1325, 1320, 1327, 0, 1329, 1330, 1313, 1314, 1319, 1331, - 1332, 1329, 1330, 1316, 1334, 1318, 1320, 1322, 1319, 1321, - 1328, 1325, 1339, 1332, 1331, 0, 1328, 1325, 1335, 1333, - - 1324, 1329, 1330, 1328, 1327, 1335, 1331, 1332, 1333, 1337, - 1334, 1334, 1336, 1338, 1336, 1341, 1340, 1328, 1337, 1339, - 1340, 1343, 1344, 1328, 1345, 1335, 1333, 1344, 1346, 1343, - 1347, 1348, 1356, 1345, 1352, 1338, 1337, 1341, 1349, 1336, - 1338, 0, 1341, 1340, 1348, 1353, 1346, 0, 1343, 1347, - 1349, 1345, 1352, 1354, 1344, 1346, 1350, 1347, 1348, 1350, - 1351, 1352, 1357, 1351, 1356, 1349, 1354, 0, 1350, 1359, - 1353, 1360, 1353, 1363, 1359, 1358, 1361, 1361, 0, 1360, - 1354, 0, 1351, 1350, 1362, 1357, 1350, 1351, 1364, 1357, - 1351, 1358, 1366, 1362, 1367, 1363, 1365, 1368, 1360, 1366, - - 1363, 1359, 1358, 1361, 1368, 1365, 1373, 1370, 1371, 1372, - 1364, 1362, 1377, 1375, 1374, 1364, 1367, 1371, 1372, 1366, - 1370, 1367, 1375, 1365, 1368, 0, 0, 1378, 1384, 0, - 1376, 1379, 1373, 1373, 1370, 1371, 1372, 1374, 1376, 1379, - 1375, 1374, 1378, 1380, 1377, 1383, 1385, 1381, 1382, 1386, - 1384, 1388, 1387, 1383, 1378, 1384, 1380, 1376, 1379, 1381, - 1382, 1387, 1389, 1391, 1394, 1390, 1385, 1393, 1395, 1388, - 1380, 1386, 1383, 1385, 1381, 1382, 1386, 1390, 1388, 1387, - 1392, 1391, 1396, 1397, 1398, 1400, 1399, 1392, 1389, 1389, - 1391, 1400, 1390, 1393, 1393, 1396, 1394, 1399, 1401, 1402, - - 1395, 1403, 1404, 1405, 0, 1398, 0, 1392, 1408, 1396, - 1397, 1398, 1400, 1399, 1406, 1409, 1414, 1411, 1410, 1413, - 1401, 0, 1412, 0, 1416, 1401, 1411, 1415, 1414, 1405, - 1405, 1402, 1413, 1403, 1404, 1408, 1410, 1412, 1409, 1418, - 1406, 1406, 1409, 1414, 1411, 1410, 1413, 1415, 1417, 1412, - 1416, 1416, 1419, 1421, 1415, 1417, 1420, 1422, 1418, 1423, - 1424, 1421, 1422, 1426, 1423, 1427, 1418, 1424, 1425, 1420, - 1428, 1426, 1432, 1427, 1419, 1417, 1429, 1430, 1433, 1419, - 1421, 1432, 1437, 1420, 1434, 1430, 1431, 1424, 1428, 1422, - 1426, 1423, 1427, 1431, 1425, 1425, 1439, 1428, 1429, 1432, - - 1435, 1436, 1436, 1429, 1430, 1440, 1434, 1435, 1438, 1446, - 1433, 1434, 1441, 1431, 1437, 1446, 1438, 1439, 1442, 1445, - 1441, 1443, 1444, 1439, 1448, 0, 1442, 1435, 1436, 1443, - 1444, 1447, 1445, 1449, 1450, 1438, 1446, 1440, 1452, 1441, - 1453, 1454, 1450, 1447, 1451, 1442, 1445, 1455, 1443, 1444, - 1448, 1448, 1451, 1452, 1456, 1458, 1457, 1449, 1447, 0, - 1449, 1450, 1459, 1462, 1463, 1452, 1464, 1453, 1454, 1455, - 1457, 1451, 1462, 1458, 1455, 1460, 1459, 1456, 1464, 1460, - 1465, 1456, 1458, 1457, 1466, 1467, 1463, 1465, 1468, 1459, - 1462, 1463, 1460, 1464, 1469, 1466, 1470, 0, 1472, 0, - - 1460, 1473, 1460, 1471, 1474, 1476, 1460, 1465, 1470, 1475, - 1468, 1466, 1467, 1479, 1476, 1468, 1475, 1471, 1487, 1460, - 1472, 1477, 1478, 1470, 1473, 1472, 1469, 1474, 1473, 1478, - 1471, 1474, 1476, 1480, 1482, 1484, 1475, 1485, 1490, 1477, - 1486, 1484, 1493, 1482, 1488, 1479, 1492, 1494, 1477, 1478, - 1487, 1488, 1495, 1497, 0, 0, 1502, 0, 1494, 1485, - 1480, 1482, 1484, 1495, 1485, 1490, 1486, 1486, 1499, 1493, - 1492, 1488, 1498, 1492, 1494, 1499, 1500, 1497, 1498, 1495, - 1497, 1501, 1502, 1502, 1503, 1504, 1509, 1506, 1501, 1505, - 0, 1504, 1507, 1510, 1500, 1499, 1503, 1505, 1508, 1498, - - 1513, 1517, 1510, 1500, 1509, 1507, 1511, 1513, 1501, 1506, - 1514, 1503, 1504, 1509, 1506, 1512, 1505, 1512, 1511, 1507, - 1510, 1515, 1516, 1517, 1508, 1508, 1518, 1513, 1517, 1519, - 0, 1516, 1520, 1511, 1515, 1522, 1514, 1514, 1518, 1521, - 1523, 1524, 1512, 0, 1526, 1523, 1521, 1525, 1515, 1516, - 1527, 1529, 1526, 1518, 1531, 1520, 1519, 1524, 1532, 1520, - 0, 1522, 1522, 0, 1533, 1530, 1521, 1523, 1524, 1532, - 1525, 1526, 1527, 1533, 1525, 1534, 1531, 1527, 1529, 1530, - 1536, 1531, 1535, 1535, 1537, 1532, 1537, 1538, 1534, 0, - 1535, 1533, 1530, 1536, 1539, 1542, 1540, 1541, 1544, 1543, - - 1553, 1545, 1534, 1540, 1541, 1546, 1548, 1536, 1545, 1535, - 1535, 1537, 1547, 1538, 1538, 1550, 1539, 1543, 1552, 1555, - 1544, 1539, 1542, 1540, 1541, 1544, 1543, 1553, 1545, 1549, - 1546, 1552, 1546, 1554, 1547, 1557, 1549, 1559, 1548, 1547, - 1555, 1554, 1560, 1563, 1562, 1552, 1555, 1550, 1558, 1564, - 1566, 1558, 1561, 1562, 1565, 1563, 1549, 1557, 1570, 1566, - 1554, 0, 1557, 1559, 1559, 1561, 1571, 1567, 1560, 1560, - 1563, 1562, 1577, 1564, 1574, 1558, 1564, 1566, 1568, 1561, - 1565, 1565, 1567, 1569, 1572, 1568, 1569, 1575, 1571, 1576, - 1570, 1576, 1574, 1571, 1567, 1578, 1577, 1579, 1569, 1577, - - 1572, 1574, 1580, 1584, 1581, 1568, 1582, 1569, 1572, 1575, - 1569, 1572, 1583, 1569, 1575, 1585, 1576, 1591, 0, 1587, - 1592, 1594, 1578, 1590, 0, 1569, 1581, 1572, 1587, 1579, - 1586, 1581, 1582, 1582, 1580, 1584, 1589, 1585, 1583, 1583, - 1588, 1595, 1585, 1589, 1586, 1595, 1587, 1590, 1588, 1591, - 1590, 1593, 1592, 1594, 1596, 1597, 1599, 1586, 1598, 1600, - 0, 1602, 1601, 1589, 1603, 1599, 1600, 1588, 1595, 1601, - 1605, 1604, 1607, 1593, 1602, 1608, 1596, 1603, 1593, 1605, - 1598, 1596, 1597, 1599, 1604, 1598, 1600, 1614, 1602, 1601, - 1606, 1603, 1606, 1609, 1611, 1607, 1612, 1605, 1604, 1607, - - 1608, 1609, 1608, 1615, 1613, 1616, 1617, 1621, 1619, 1611, - 1615, 1612, 1618, 1617, 1619, 1622, 1616, 1606, 1613, 1614, - 1609, 1611, 1622, 1612, 1623, 1618, 1624, 0, 1625, 1629, - 1615, 1613, 1616, 1617, 1621, 1619, 1626, 1627, 1629, 1618, - 1628, 1624, 1622, 1628, 1630, 1631, 1623, 1634, 1626, 1632, - 1627, 1623, 1640, 1624, 1625, 1625, 1629, 1631, 1634, 1641, - 1639, 1636, 1630, 1626, 1627, 1633, 1636, 1628, 1633, 1632, - 1642, 1630, 1631, 1636, 1634, 1638, 1632, 1638, 1657, 1640, - 1643, 1644, 1645, 1633, 1639, 1642, 1641, 1639, 1636, 1643, - 1646, 1647, 1633, 1636, 1648, 1633, 1649, 1642, 1651, 1647, - - 1650, 1652, 1638, 0, 1646, 1644, 1651, 1643, 1644, 1645, - 1657, 1653, 1652, 1656, 1658, 0, 1648, 1646, 1647, 1659, - 1649, 1648, 1650, 1649, 1654, 1651, 1659, 1650, 1652, 1653, - 1655, 1656, 1654, 1655, 1661, 1660, 1663, 1662, 1653, 1664, - 1656, 1658, 1687, 1661, 1664, 1665, 1659, 1663, 1655, 1660, - 1662, 1654, 1669, 1666, 1669, 1671, 1670, 1655, 1672, 1673, - 1655, 1661, 1660, 1663, 1662, 1670, 1674, 1665, 1666, 1672, - 1675, 1664, 1665, 1676, 1687, 0, 1676, 1673, 0, 1669, - 1666, 1671, 1671, 1670, 1675, 1672, 1673, 1677, 1674, 1678, - 1680, 1676, 1683, 1674, 1684, 1679, 1675, 1675, 1678, 1680, - - 1676, 1679, 1681, 1676, 1686, 1683, 1684, 1681, 1685, 1677, - 1689, 1675, 1690, 1685, 1677, 1688, 1678, 1680, 1691, 1683, - 1692, 1684, 1679, 1693, 1688, 1694, 1686, 1698, 1701, 1696, - 1697, 1686, 0, 1692, 1681, 1685, 1696, 1689, 0, 1699, - 1691, 0, 1688, 1697, 1690, 1691, 1694, 1692, 1700, 1703, - 1705, 1707, 1694, 1699, 1700, 1693, 1696, 1697, 1705, 1698, - 1701, 1706, 1708, 0, 1709, 1710, 1699, 1711, 1703, 1706, - 1707, 1716, 1700, 1712, 1715, 1700, 1703, 1705, 1707, 1710, - 1713, 1700, 1709, 1714, 1708, 1711, 1717, 1712, 1706, 1708, - 1718, 1709, 1710, 1713, 1711, 1715, 1714, 1719, 1720, 1721, - - 1712, 1715, 1723, 1716, 1718, 1720, 1722, 1713, 1721, 1724, - 1714, 1725, 1728, 1730, 1722, 1726, 0, 1718, 1717, 1727, - 1726, 1728, 1715, 1724, 1719, 1720, 1721, 1731, 1732, 1723, - 1727, 1733, 0, 1722, 1731, 1734, 1724, 1735, 1736, 1728, - 1730, 1737, 1726, 1725, 0, 1737, 1727, 1740, 1739, 1742, - 1743, 1732, 1741, 1733, 1731, 1732, 1736, 1734, 1733, 1735, - 1747, 1742, 1734, 1749, 1735, 1736, 1739, 1741, 1737, 1745, - 1744, 1740, 1746, 1748, 1740, 1739, 1742, 1743, 1744, 1741, - 1746, 1755, 1759, 1749, 1745, 1753, 1748, 1747, 1750, 1751, - 1749, 1754, 1756, 1753, 1761, 1763, 1745, 1744, 1754, 1746, - - 1748, 1757, 1758, 1750, 1751, 1765, 1760, 1756, 1764, 1759, - 1757, 1766, 1753, 1755, 1786, 1750, 1751, 1763, 1754, 1756, - 1768, 1761, 1763, 1758, 1767, 1769, 1764, 1770, 1757, 1758, - 1760, 1771, 1772, 1760, 1770, 1764, 1771, 1765, 1766, 1767, - 1774, 1772, 1775, 1776, 1773, 1768, 1786, 1768, 1777, 1769, - 1779, 1767, 1769, 1773, 1770, 0, 1778, 1783, 1771, 1772, - 1780, 1776, 1774, 1777, 1775, 1785, 0, 1774, 1778, 1775, - 1776, 1773, 1779, 1780, 1781, 1777, 1784, 1779, 1780, 1783, - 1787, 1781, 1782, 1778, 1783, 1789, 1787, 1780, 1784, 1782, - 1790, 1791, 1785, 1789, 1793, 1794, 1796, 1794, 1790, 1792, - - 1780, 1781, 1791, 1784, 1782, 1795, 1792, 1787, 1794, 1782, - 1797, 1799, 1789, 1798, 1805, 1800, 1782, 1790, 1791, 1793, - 1798, 1793, 1794, 1796, 1794, 1803, 1792, 1801, 1802, 1808, - 1804, 1795, 1795, 1801, 1802, 1806, 1809, 1797, 1799, 1810, - 1798, 1800, 1800, 1812, 0, 1809, 1805, 1811, 1813, 1811, - 1815, 1814, 1803, 1804, 1801, 1802, 1816, 1804, 1814, 1806, - 1818, 1808, 1806, 1809, 1817, 1822, 1818, 1812, 1819, 1833, - 1812, 1810, 1815, 1820, 1811, 1813, 1817, 1815, 1814, 1821, - 1825, 1824, 1827, 1816, 0, 1826, 1828, 1818, 1824, 1825, - 1819, 1817, 1826, 1828, 1833, 1819, 1833, 1822, 1831, 1820, - - 1820, 1821, 1823, 1823, 1823, 1830, 1821, 1825, 1824, 1823, - 1830, 1831, 1826, 1828, 1827, 1832, 1834, 1823, 1836, 1838, - 1837, 1835, 1839, 0, 1840, 1831, 1838, 1832, 1839, 1823, - 1823, 1823, 1834, 1835, 1841, 1841, 1823, 1830, 1837, 1842, - 0, 1845, 1832, 1834, 1846, 1843, 1838, 1837, 1835, 1839, - 1836, 1840, 1843, 1844, 1850, 1847, 1852, 1851, 1844, 1851, - 1854, 1841, 1847, 1855, 1856, 1842, 1842, 1845, 1845, 1855, - 1858, 1846, 1843, 1859, 1852, 1857, 1860, 1862, 1854, 1859, - 1844, 1850, 1847, 1852, 1851, 1861, 1857, 1854, 1860, 1864, - 1855, 1863, 1863, 1865, 1865, 1862, 1856, 1858, 1866, 1868, - - 1859, 1869, 1857, 1860, 1862, 1861, 1872, 1870, 1871, 1866, - 1877, 1876, 1861, 1879, 1870, 1864, 1864, 1873, 1863, 1875, - 1865, 1868, 1880, 1878, 1881, 1866, 1868, 1875, 1871, 1880, - 1887, 1879, 1881, 1869, 1870, 1871, 1883, 1877, 1872, 1882, - 1879, 1886, 1873, 1876, 1873, 1878, 1875, 1884, 1888, 1880, - 1878, 1881, 1885, 1885, 1882, 1891, 1884, 1889, 1890, 1896, - 1883, 1895, 1887, 1883, 1889, 1893, 1882, 1886, 1886, 1897, - 1890, 1891, 1893, 1902, 1884, 1898, 1894, 1897, 1891, 1885, - 1888, 1894, 1891, 1895, 1889, 1890, 1896, 1898, 1895, 1900, - 1901, 1903, 1893, 1904, 1905, 1908, 1897, 1900, 1891, 1902, - - 1902, 1906, 1898, 1894, 1909, 1912, 1910, 1911, 1915, 1907, - 1909, 1904, 1903, 1901, 1907, 1911, 1900, 1901, 1903, 1910, - 1904, 1905, 1908, 1913, 1906, 1907, 1918, 1912, 1906, 1916, - 1913, 1909, 1912, 1910, 1911, 1914, 1907, 1917, 1916, 1920, - 1915, 1907, 1914, 1919, 1931, 1921, 1922, 1924, 1918, 1917, - 1913, 1926, 1933, 1918, 1927, 1929, 1916, 1919, 1926, 1934, - 1934, 1935, 1914, 1925, 1917, 1924, 1920, 1937, 1925, 1922, - 1919, 1921, 1921, 1922, 1924, 1930, 1931, 1936, 1926, 1925, - 1930, 1927, 1929, 1935, 1933, 1939, 1934, 1940, 1935, 1948, - 1925, 1941, 1936, 1943, 1942, 1925, 1942, 1944, 1945, 1937, - - 1939, 1946, 1944, 0, 1936, 1949, 1941, 1930, 1947, 1946, - 1940, 1948, 1939, 1955, 1940, 1947, 1948, 1953, 1941, 1951, - 1949, 1942, 1956, 1952, 1944, 1943, 1957, 1958, 1946, 1959, - 1945, 1952, 1949, 1960, 1951, 1947, 1959, 1955, 0, 1953, - 1955, 1961, 1962, 1964, 1953, 1963, 1951, 1968, 1956, 1956, - 1952, 1966, 1969, 1957, 1958, 1970, 1959, 1975, 1974, 1976, - 1972, 1964, 1961, 1980, 1962, 1960, 1963, 1969, 1961, 1962, - 1964, 1968, 1963, 1966, 1968, 1972, 1973, 1976, 1966, 1969, - 1974, 1970, 1970, 1977, 1975, 1974, 1976, 1972, 1979, 1978, - 1980, 1973, 1981, 1983, 1985, 1982, 1984, 1987, 1988, 1981, - - 1989, 0, 1983, 1973, 1984, 1977, 1986, 1988, 0, 0, - 1977, 1978, 1979, 1982, 0, 1979, 1978, 1985, 1989, 1981, - 1983, 1985, 1982, 1984, 1991, 1988, 1990, 1989, 1986, 1987, - 1993, 1994, 1995, 1986, 1997, 1990, 1996, 1991, 2002, 1999, - 1994, 1993, 2000, 1996, 1998, 2001, 2005, 0, 2000, 0, - 1995, 1991, 2002, 1990, 1999, 2007, 1993, 1993, 1994, 1995, - 1997, 1997, 1998, 1996, 2008, 2002, 1999, 2001, 1993, 2000, - 2009, 1998, 2001, 2005, 2011, 2008, 2012, 2013, 2014, 2007, - 2015, 2009, 2007, 2016, 2017, 2018, 2011, 2020, 2014, 2012, - 2021, 2008, 2023, 2025, 2024, 2028, 2023, 2009, 0, 0, - - 2026, 2011, 2028, 2012, 2018, 2014, 2015, 2015, 2016, 2013, - 2016, 2017, 2018, 2027, 2020, 2024, 2021, 2021, 2027, 2023, - 2026, 2024, 2028, 2029, 2030, 2025, 2031, 2026, 2032, 2033, - 2040, 2035, 2031, 2034, 2036, 2036, 2037, 2040, 0, 2043, - 2027, 2038, 2030, 2032, 2033, 2034, 2035, 2046, 2037, 2029, - 2029, 2030, 2042, 2031, 2038, 2032, 2033, 2040, 2035, 2051, - 2034, 2036, 2038, 2037, 2044, 2041, 2043, 2042, 2038, 2041, - 2045, 2046, 2047, 2044, 2046, 2048, 2050, 2045, 2052, 2042, - 0, 2038, 2048, 2056, 2051, 2053, 2051, 2052, 2054, 2061, - 0, 2044, 2041, 2059, 2047, 2058, 2063, 2045, 2050, 2047, - - 2065, 2056, 2048, 2050, 2058, 2052, 2060, 2053, 2054, 2062, - 2056, 2059, 2053, 2066, 2061, 2054, 2061, 2062, 2067, 2069, - 2059, 2060, 2058, 2068, 2068, 2065, 2066, 2065, 2063, 2070, - 2071, 2072, 2074, 2060, 2073, 2075, 2062, 2077, 2076, 2074, - 2066, 2069, 0, 2073, 2079, 2067, 2069, 2078, 2084, 2079, - 2068, 2077, 2071, 2072, 2070, 2088, 2070, 2071, 2072, 2074, - 2076, 2073, 2078, 2080, 2077, 2076, 2083, 2075, 2085, 2082, - 2089, 2086, 2091, 2087, 2078, 2084, 2079, 2082, 2090, 2083, - 2087, 2091, 2080, 2086, 2093, 0, 2095, 2088, 2096, 2094, - 2080, 0, 2089, 2083, 2085, 2085, 2082, 2089, 2086, 2091, - - 2087, 2092, 0, 2090, 2094, 2090, 2097, 2098, 2099, 2092, - 0, 2093, 2095, 2095, 2096, 2096, 2094, 2099, 2102, 2101, - 2092, 2103, 2101, 2105, 2097, 2104, 2106, 2103, 2092, 2098, - 2104, 0, 2107, 2097, 2098, 2099, 2092, 2101, 2105, 2109, - 2110, 2111, 2113, 2102, 2106, 2102, 2101, 2107, 2103, 2101, - 2105, 2114, 2115, 2106, 2109, 2116, 2113, 2104, 2114, 2107, - 2119, 0, 2110, 2111, 2117, 2118, 2109, 2110, 2111, 2113, - 2115, 2119, 2121, 2117, 2118, 2120, 2122, 2120, 2114, 2115, - 2125, 2126, 2116, 2123, 2128, 2121, 2127, 2119, 2122, 0, - 2129, 2117, 2118, 2127, 0, 2125, 2126, 2130, 2135, 2121, - - 2136, 2133, 2120, 2122, 2136, 2123, 2128, 2125, 2126, 2137, - 2123, 2128, 2129, 2127, 2133, 2130, 2139, 2129, 2139, 2135, - 2138, 2137, 2133, 2141, 2130, 2135, 2140, 2136, 2133, 2138, - 2142, 2143, 2144, 2145, 0, 2147, 2137, 2148, 2149, 2146, - 2144, 2133, 2152, 2139, 2140, 2148, 2150, 2138, 2142, 2147, - 2141, 2150, 2153, 2140, 2154, 2159, 2145, 2142, 2143, 2144, - 2145, 2146, 2147, 2151, 2148, 2156, 2146, 2155, 2151, 2166, - 2149, 2160, 2156, 2150, 2152, 2161, 2162, 0, 2154, 2163, - 2169, 2154, 2159, 0, 2153, 2160, 2155, 2167, 2170, 2164, - 2165, 0, 2156, 2161, 2155, 2151, 2160, 2160, 2160, 2165, - - 2168, 2166, 2161, 2162, 2164, 2163, 2163, 2169, 2171, 2167, - 2170, 2173, 2160, 0, 2167, 2170, 2164, 2165, 2174, 2175, - 2178, 2176, 2178, 2160, 0, 2174, 2168, 2168, 2176, 2179, - 2182, 2180, 2181, 0, 2173, 2180, 2188, 0, 2173, 2186, - 2171, 2183, 2175, 2184, 2181, 2174, 2175, 2178, 2176, 2189, - 2183, 2179, 2182, 2185, 2184, 2199, 2179, 2182, 2180, 2181, - 2185, 2186, 2187, 2188, 2191, 2190, 2186, 2187, 2183, 2193, - 2184, 2195, 2189, 2192, 2192, 2194, 2189, 2190, 2193, 2195, - 2185, 2196, 2199, 2197, 2198, 2201, 2191, 2202, 2207, 2187, - 2194, 2191, 2190, 2198, 2207, 2202, 2193, 2197, 2195, 2203, - - 2192, 2204, 2194, 2196, 2201, 2204, 2205, 2203, 2196, 2205, - 2197, 2198, 2201, 2206, 2202, 2207, 2208, 2209, 2211, 2214, - 2213, 2206, 0, 2209, 2216, 2217, 2203, 2215, 2204, 2219, - 2211, 2208, 2214, 2205, 2213, 2218, 2220, 0, 2223, 2224, - 2206, 2226, 2221, 2208, 2209, 2211, 2214, 2213, 2215, 2216, - 2220, 2216, 2217, 2219, 2215, 2221, 2219, 2218, 2222, 2225, - 2228, 2227, 2218, 2220, 2223, 2223, 2224, 2229, 2226, 2221, - 2231, 2232, 2222, 2227, 2228, 2236, 2237, 2230, 2233, 2235, - 2230, 2238, 2236, 2237, 2225, 2222, 2225, 2228, 2227, 2239, - 2240, 2241, 2242, 2229, 2229, 2230, 2238, 2231, 2232, 2241, - - 2233, 2235, 2236, 2237, 2230, 2233, 2235, 2230, 2238, 2244, - 2245, 2243, 2246, 2247, 2248, 2249, 2239, 2240, 2241, 2242, - 2243, 2251, 2245, 2256, 2255, 2250, 2258, 2253, 2249, 2263, - 0, 2251, 2252, 2261, 2246, 2253, 2244, 2245, 2243, 2246, - 2247, 2248, 2249, 2250, 2260, 2252, 2255, 2257, 2251, 2259, - 2256, 2255, 2250, 2258, 2253, 2257, 2263, 2261, 2259, 2252, - 2261, 0, 2262, 2265, 2264, 2260, 2268, 2266, 2270, 2276, - 2274, 2260, 2264, 2269, 2257, 2265, 2259, 2262, 2268, 2272, - 2273, 2269, 2274, 2278, 2273, 2275, 2272, 2279, 2262, 2262, - 2265, 2264, 2266, 2268, 2266, 2270, 2276, 2274, 2282, 2279, - - 2269, 2277, 2284, 2280, 2262, 2278, 2272, 2273, 2275, 2277, - 2278, 2283, 2275, 2285, 2279, 2280, 2288, 2288, 2283, 2289, - 2292, 2290, 2284, 2286, 2287, 2282, 2285, 2291, 2277, 2284, - 2280, 2294, 2286, 2287, 2295, 2292, 0, 2292, 2283, 2290, - 2285, 2302, 2302, 2288, 2292, 2289, 2289, 2292, 2290, 2295, - 2286, 2287, 2291, 2296, 2291, 2297, 2298, 2299, 2298, 2300, - 2306, 2295, 2292, 2294, 2292, 2300, 2301, 2304, 2302, 2305, - 2307, 2299, 2306, 2308, 0, 2296, 2311, 2297, 0, 2309, - 2296, 0, 2297, 2298, 2299, 2309, 2300, 2306, 2301, 2304, - 2312, 2305, 2310, 2301, 2304, 2314, 2305, 2314, 2313, 2315, - - 2316, 2322, 2307, 2317, 2310, 2308, 2309, 2323, 2311, 2326, - 2318, 2319, 2312, 2315, 2320, 2330, 2326, 2312, 2321, 2310, - 2313, 2317, 2314, 2324, 2316, 2313, 2315, 2316, 2318, 2319, - 2317, 2321, 2320, 2322, 2328, 2332, 2326, 2318, 2319, 2323, - 2329, 2320, 0, 2331, 0, 2321, 2324, 2330, 2333, 2334, - 2324, 2331, 2328, 2332, 2337, 2339, 2335, 2338, 2335, 2341, - 2340, 2328, 2332, 2335, 2343, 2337, 2329, 2329, 2338, 2331, - 2331, 2334, 2340, 2348, 2333, 2333, 2334, 2341, 2331, 2343, - 2345, 2337, 2339, 2335, 2338, 2335, 2341, 2340, 2344, 2346, - 2349, 2343, 2345, 2351, 2350, 2352, 2355, 2348, 2353, 2344, - - 2348, 2350, 2356, 2358, 2346, 2357, 2359, 2345, 2351, 2361, - 2360, 0, 2349, 2363, 0, 2344, 2346, 2349, 2362, 2364, - 2351, 2350, 2352, 2355, 2353, 2353, 2356, 2357, 2360, 2356, - 2365, 2362, 2357, 2366, 2364, 2358, 2361, 2360, 2359, 2363, - 2363, 2366, 2367, 2365, 2368, 2362, 2364, 2372, 2369, 0, - 2370, 0, 2374, 0, 2373, 2376, 0, 2365, 2375, 2378, - 2366, 2369, 2380, 0, 2379, 2377, 2378, 2390, 2367, 2367, - 2372, 0, 2370, 2376, 2372, 2369, 2368, 2370, 2373, 2374, - 2375, 2373, 2376, 2377, 2381, 2375, 2378, 2379, 2383, 2380, - 2384, 2379, 2377, 2385, 2386, 2387, 2388, 2384, 2381, 2390, - - 2385, 2393, 2389, 2388, 2391, 2392, 0, 2386, 2394, 2393, - 2383, 2381, 2395, 2396, 2392, 2383, 2394, 2384, 2387, 2396, - 2385, 2386, 2387, 2388, 2389, 2391, 2398, 2399, 2393, 2389, - 2400, 2391, 2392, 2401, 2395, 2394, 2402, 2403, 2399, 2395, - 2396, 2398, 2405, 2407, 0, 2408, 0, 2410, 2410, 2409, - 2415, 2411, 2400, 2398, 2399, 2402, 2407, 2400, 2414, 2417, - 2405, 2418, 2403, 2402, 2403, 2401, 2421, 2425, 2416, 2405, - 2407, 2408, 2408, 2409, 2410, 2423, 2409, 2411, 2411, 2418, - 2425, 2414, 2415, 2416, 2423, 2414, 2417, 2426, 2418, 2429, - 2430, 2430, 2434, 2421, 2425, 2416, 2432, 2431, 2426, 2433, - - 2436, 2438, 2423, 2431, 2439, 2441, 0, 2442, 0, 2440, - 2441, 2429, 2451, 2445, 2426, 2448, 2429, 2430, 2432, 2434, - 2440, 2433, 2455, 2432, 2431, 2461, 2433, 2436, 2450, 2442, - 2439, 2439, 2441, 2438, 2442, 2444, 2440, 2445, 2446, 2447, - 2445, 2452, 2448, 2444, 2451, 2453, 2450, 2456, 2457, 2455, - 2452, 2458, 2461, 2446, 2447, 2450, 2457, 2453, 2460, 2462, - 2458, 2463, 2444, 2467, 2464, 2446, 2447, 2465, 2452, 0, - 2463, 2456, 2453, 2466, 2456, 2457, 2467, 2470, 2458, 2468, - 2469, 2462, 2464, 2473, 2460, 2460, 2462, 2474, 2463, 2465, - 2467, 2464, 2468, 2475, 2465, 2469, 2471, 2476, 2466, 2470, - - 2466, 2472, 2477, 2471, 2470, 2473, 2468, 2469, 2472, 2479, - 2473, 2478, 2480, 0, 2474, 2481, 0, 2482, 2479, 0, - 2475, 2487, 2483, 2471, 2476, 2484, 2478, 2487, 2472, 2477, - 2485, 2489, 2484, 2486, 2480, 2488, 2479, 2483, 2478, 2480, - 2486, 2481, 2481, 2482, 2482, 2485, 2488, 2490, 2487, 2483, - 2491, 2492, 2484, 2493, 2501, 2490, 2494, 2485, 2489, 2495, - 2486, 2496, 2488, 2497, 2502, 2498, 2499, 0, 2500, 2493, - 2497, 2494, 0, 2499, 2490, 2500, 2496, 2491, 2492, 2495, - 2493, 2501, 2502, 2494, 2503, 2503, 2495, 2498, 2496, 2504, - 2497, 2502, 2498, 2499, 2505, 2500, 2504, 2506, 2508, 2507, - - 2506, 0, 2509, 2508, 2510, 0, 2511, 0, 2505, 2518, - 2512, 2503, 2507, 2518, 2516, 2517, 2504, 2521, 2513, 2510, - 2517, 2505, 2514, 2516, 2506, 2508, 2507, 2509, 2512, 2509, - 2513, 2510, 2511, 2511, 2514, 2519, 2518, 2512, 2520, 2521, - 2523, 2516, 2517, 2524, 2521, 2513, 2522, 0, 2525, 2514, - 2527, 2520, 2529, 2531, 2530, 0, 2532, 2536, 0, 2519, - 2533, 0, 2519, 2530, 2532, 2520, 2536, 2523, 2522, 2531, - 2524, 0, 2533, 2522, 2525, 2525, 2527, 2527, 2529, 2529, - 2531, 2530, 2535, 2532, 2536, 2537, 2538, 2533, 2539, 2535, - 2537, 2540, 2541, 2538, 2542, 2543, 2544, 2547, 2540, 2545, - - 2551, 2542, 2549, 2548, 2543, 2544, 2539, 2549, 2554, 2535, - 2550, 2555, 2537, 2538, 2553, 2539, 2548, 2541, 2540, 2541, - 2555, 2542, 2543, 2544, 2547, 2545, 2545, 2551, 2550, 2549, - 2548, 2556, 2553, 2557, 2558, 2554, 2559, 2550, 2555, 2560, - 2556, 2553, 2562, 2561, 2563, 2559, 2558, 2564, 2560, 2565, - 2562, 2567, 2568, 2557, 2561, 2566, 2565, 2569, 2556, 2570, - 2557, 2558, 0, 2559, 2566, 2575, 2560, 2573, 2571, 2562, - 2561, 2563, 2567, 2572, 2564, 2573, 2565, 2571, 2567, 2568, - 2574, 2576, 2566, 2577, 2569, 2572, 2580, 2575, 2576, 2578, - 2577, 2570, 2575, 2574, 2573, 2571, 2579, 2581, 2582, 2586, - - 2572, 2584, 0, 2588, 2587, 0, 0, 2574, 2576, 2584, - 2577, 2578, 2587, 2580, 2590, 2591, 2578, 2586, 2588, 2598, - 2589, 2579, 2581, 2579, 2581, 2582, 2586, 2589, 2584, 2597, - 2588, 2587, 2592, 2596, 2601, 2593, 2590, 2591, 2599, 2592, - 2596, 2590, 2591, 2593, 2604, 2600, 2598, 2589, 2602, 2608, - 2599, 2603, 2609, 2597, 2600, 0, 2597, 2606, 2607, 2592, - 2596, 2601, 2593, 2603, 2602, 2599, 2609, 2604, 2611, 2606, - 2612, 2604, 2600, 2614, 2617, 2602, 2608, 2612, 2603, 2609, - 2611, 2607, 2613, 2616, 2606, 2607, 2619, 2621, 2618, 2613, - 2622, 2620, 2617, 0, 2624, 2611, 2626, 2612, 2616, 2620, - - 2614, 2617, 2623, 2626, 2625, 2624, 2627, 0, 2632, 2613, - 2616, 2618, 2622, 2619, 2621, 2618, 2634, 2622, 2620, 2625, - 2623, 2624, 2633, 2626, 2635, 2636, 2637, 2633, 2638, 2623, - 2639, 2625, 2640, 2627, 2632, 2632, 2644, 2652, 2635, 2636, - 2641, 0, 2642, 2634, 2637, 2652, 2638, 2641, 2639, 2633, - 2647, 2635, 2636, 2637, 2642, 2638, 2648, 2639, 2649, 2640, - 2650, 2651, 2654, 2644, 2652, 0, 2653, 2641, 2657, 2642, - 2658, 2649, 2647, 2660, 2656, 2661, 2662, 2647, 2648, 2659, - 2651, 2654, 2650, 2648, 2653, 2649, 2656, 2650, 2651, 2654, - 2657, 2659, 2658, 2653, 2664, 2657, 2663, 2658, 2662, 2665, - - 2660, 2656, 2661, 2662, 2663, 2666, 2659, 2667, 2668, 2669, - 2671, 2670, 2672, 0, 0, 2674, 2667, 2668, 2673, 2665, - 2675, 2664, 2679, 2663, 2672, 2681, 2665, 2666, 2680, 2678, - 2681, 2682, 2666, 2670, 2667, 2668, 2671, 2671, 2670, 2672, - 2673, 2669, 2674, 2678, 2683, 2673, 2684, 2675, 2685, 2679, - 2687, 2686, 2680, 2682, 2692, 2680, 2678, 2681, 2682, 2684, - 2693, 2688, 2690, 2689, 2691, 0, 2683, 2695, 0, 2699, - 2691, 2683, 2687, 2684, 2686, 2689, 2694, 2687, 2686, 2688, - 2685, 2690, 2695, 2698, 2697, 2701, 2692, 2703, 2688, 2690, - 2689, 2691, 2693, 2699, 2695, 2704, 2699, 2705, 2694, 2706, - - 2701, 2707, 2708, 2694, 2697, 2698, 2705, 2709, 2714, 2703, - 2698, 2697, 2701, 2706, 2703, 0, 2713, 2704, 2710, 2707, - 2708, 2715, 2704, 2718, 2705, 2713, 2706, 2720, 2707, 2708, - 2719, 2718, 2721, 2709, 2709, 2720, 2710, 2719, 2722, 2723, - 2714, 2725, 2715, 2713, 2724, 2710, 2726, 2723, 2715, 2729, - 2718, 2732, 2727, 2725, 2720, 2733, 2731, 2719, 2722, 2721, - 2727, 2729, 2724, 2731, 2735, 2722, 2723, 2734, 2725, 2734, - 2736, 2724, 2737, 2726, 2732, 2738, 2729, 2739, 2732, 2727, - 2746, 2737, 2733, 2731, 2740, 0, 2741, 2743, 0, 0, - 2754, 2747, 2744, 2748, 2734, 0, 2735, 2749, 2755, 2737, - - 2752, 2757, 2736, 2740, 2739, 2743, 2744, 2738, 2741, 2750, - 2749, 2740, 2746, 2741, 2743, 2747, 2748, 2754, 2747, 2744, - 2748, 2750, 2753, 2758, 2749, 2755, 2752, 2752, 2757, 2759, - 2761, 2753, 2763, 2764, 2769, 2766, 2750, 2765, 2767, 2763, - 2766, 2769, 2770, 2772, 2773, 0, 2758, 2778, 2774, 2753, - 2758, 2759, 2765, 2767, 2782, 2764, 2759, 2761, 0, 2763, - 2764, 2769, 2775, 2776, 2765, 2767, 2783, 2766, 2770, 2770, - 2772, 2773, 2774, 2779, 2778, 2774, 2775, 2776, 2781, 2784, - 2786, 2782, 2779, 2785, 2787, 2781, 2789, 2788, 2790, 2775, - 2776, 2791, 2783, 2783, 2792, 2785, 2788, 2795, 2787, 2789, - - 2779, 2796, 2803, 2798, 2802, 2781, 2784, 2786, 2798, 2806, - 2785, 2787, 2799, 2789, 2788, 2800, 2799, 2792, 2791, 2801, - 2790, 2792, 2800, 2796, 2805, 2802, 2801, 2809, 2796, 2795, - 2804, 2802, 2804, 2811, 2803, 2798, 2806, 2812, 2814, 2799, - 2814, 0, 2800, 2815, 0, 2816, 2801, 2805, 0, 2809, - 2821, 2805, 2811, 2818, 2809, 2820, 2822, 2804, 2817, 2817, - 2811, 2812, 2820, 2821, 2812, 2814, 2823, 2815, 2817, 2819, - 2815, 2816, 2816, 2824, 2825, 2818, 2826, 2821, 2819, 2823, - 2818, 2824, 2820, 2822, 2826, 2817, 2817, 2825, 2827, 2828, - 2829, 2830, 2831, 2823, 2828, 2829, 2819, 2824, 2832, 2830, - - 2824, 2825, 2833, 2826, 2834, 0, 2835, 2827, 2824, 2836, - 2838, 0, 2837, 2839, 2839, 2827, 2840, 2838, 2830, 2831, - 2836, 2828, 2829, 2842, 2832, 2832, 2843, 2841, 2833, 2833, - 2834, 2834, 2835, 2835, 2837, 2841, 2836, 2838, 2840, 2837, - 2839, 2844, 2845, 2840, 2843, 2842, 2847, 2848, 2844, 2845, - 2842, 2849, 2850, 2843, 2841, 2852, 2853, 2854, 2855, 2857, - 0, 2850, 0, 2858, 2864, 0, 0, 2870, 2844, 2845, - 2859, 2860, 2870, 2847, 2848, 2849, 2853, 2861, 2849, 2850, - 2855, 2858, 2852, 2853, 2854, 2855, 2857, 2863, 2859, 2860, - 2858, 2864, 2865, 2866, 2867, 2861, 2863, 2859, 2860, 2870, - - 2868, 2869, 2867, 2871, 2861, 2872, 2873, 2878, 2880, 2877, - 2895, 2866, 2881, 2869, 2863, 2865, 2868, 2871, 2885, 2865, - 2866, 2867, 2882, 2872, 2882, 2881, 2886, 2868, 2869, 2873, - 2871, 2877, 2872, 2873, 2878, 2880, 2877, 2883, 2891, 2881, - 2887, 2890, 2895, 2890, 2886, 2885, 2883, 2894, 2892, 2882, - 2901, 2899, 2904, 2886, 2894, 2887, 2897, 2899, 2902, 2906, - 2891, 2903, 2907, 0, 2883, 2891, 2892, 2887, 2890, 2908, - 2904, 2897, 2901, 2911, 2894, 2892, 2907, 2901, 2899, 2904, - 2902, 2906, 2908, 2897, 2912, 2902, 2906, 2903, 2903, 2907, - 2909, 2913, 2914, 2909, 2915, 2916, 2908, 0, 2919, 0, - - 2911, 2915, 2917, 2916, 2920, 2921, 2922, 0, 0, 2925, - 2914, 2912, 2926, 2924, 2923, 2925, 2909, 2909, 2913, 2914, - 2909, 2915, 2916, 2923, 2917, 2928, 2920, 2921, 2924, 2917, - 2919, 2920, 2921, 2922, 2926, 2927, 2925, 2930, 2932, 2926, - 2924, 2923, 0, 2929, 2927, 2929, 2933, 2934, 0, 2935, - 2936, 2937, 2940, 2942, 2938, 0, 0, 2928, 2936, 2940, - 2946, 2932, 2927, 2937, 2930, 2932, 2938, 2952, 2933, 2934, - 2929, 2944, 2945, 2933, 2934, 2935, 2935, 2936, 2937, 2940, - 2942, 2938, 2947, 2946, 2948, 2944, 2945, 2946, 2949, 2950, - 2951, 2956, 2953, 2952, 2952, 2948, 2949, 2954, 2944, 2945, - - 2947, 2955, 2955, 2960, 2961, 2957, 2954, 2965, 2950, 2947, - 2953, 2948, 2951, 2957, 2963, 2949, 2950, 2951, 2956, 2953, - 2963, 2969, 2967, 2971, 2954, 2968, 2970, 2973, 2955, 2975, - 2960, 2961, 2957, 2967, 2965, 2974, 2968, 2970, 2976, 2980, - 2977, 2963, 2974, 2969, 2977, 2971, 2983, 2975, 2969, 2967, - 2971, 2978, 2968, 2970, 2973, 2981, 2975, 2986, 2987, 2978, - 2991, 2982, 2974, 2999, 2986, 2980, 2980, 2977, 2981, 2982, - 2976, 2988, 2990, 2983, 2992, 2995, 2994, 2990, 2978, 2993, - 2996, 3000, 2981, 2994, 2986, 2998, 2997, 2991, 2982, 3000, - 2987, 2993, 2998, 2988, 2995, 2999, 2996, 3003, 2988, 2990, - - 3001, 2992, 2995, 2994, 2997, 3004, 2993, 2996, 3000, 3002, - 3005, 3006, 2998, 2997, 3007, 3001, 3002, 3004, 3011, 3012, - 3013, 2995, 3014, 3015, 3003, 3016, 3012, 3001, 3020, 3019, - 0, 3021, 3004, 3011, 3005, 3006, 3002, 3005, 3006, 3017, - 3007, 3007, 3023, 3025, 3031, 3011, 3012, 3015, 3017, 3014, - 3015, 3019, 3013, 3021, 3022, 3020, 3019, 3016, 3021, 3024, - 3024, 3027, 3022, 3028, 3030, 3029, 3017, 3029, 3033, 3024, - 3025, 3031, 3028, 3036, 3023, 3032, 3027, 3037, 3030, 3033, - 3034, 3022, 3046, 3032, 3038, 3041, 3024, 3024, 3027, 3042, - 3028, 3030, 3029, 3040, 3043, 3033, 3039, 3047, 3034, 3044, - - 3036, 3049, 3032, 0, 3037, 3054, 3038, 3034, 3060, 3039, - 3054, 3038, 3041, 3044, 3046, 3040, 3042, 3045, 3045, 3047, - 3040, 3043, 3052, 3039, 3047, 3056, 3044, 3058, 3049, 3055, - 3052, 3057, 3054, 3056, 3055, 3060, 3057, 3061, 3061, 3062, - 3066, 3064, 3063, 3065, 3045, 3067, 3069, 3062, 3064, 3052, - 3070, 3081, 3056, 3058, 3058, 3063, 3055, 3070, 3057, 3072, - 3076, 3065, 3078, 3071, 3061, 3082, 3062, 3066, 3064, 3063, - 3065, 3071, 3067, 3075, 3079, 3080, 3083, 3070, 3069, 3075, - 3082, 3072, 3084, 3081, 3085, 3087, 3072, 3076, 3080, 3078, - 3071, 3088, 3082, 3091, 0, 3083, 3079, 3089, 3090, 3092, - - 3075, 3079, 3080, 3083, 3089, 3090, 3085, 3093, 3087, 3084, - 3095, 3085, 3087, 3088, 3092, 3091, 3097, 3104, 3088, 3096, - 3091, 3100, 3101, 3097, 3089, 3090, 3092, 3096, 3093, 3095, - 3100, 3098, 3106, 3101, 3093, 3102, 3102, 3095, 3098, 3104, - 3108, 3103, 3109, 3097, 3104, 3102, 3096, 3103, 3100, 3101, - 3107, 3112, 3113, 3111, 3106, 3116, 3117, 3107, 3098, 3106, - 3111, 3118, 3102, 3102, 3109, 3122, 3113, 3123, 3103, 3109, - 3125, 3127, 3108, 3124, 3130, 3112, 3132, 3107, 3112, 3113, - 3111, 3124, 3116, 3117, 3118, 3128, 3128, 0, 3118, 3123, - 3129, 3129, 3122, 3134, 3123, 3131, 3131, 3125, 3127, 3132, - - 3124, 3130, 3136, 3132, 3135, 3138, 3141, 3137, 3143, 3144, - 3142, 0, 0, 3141, 3128, 3134, 3137, 3142, 3138, 3129, - 3134, 3145, 3135, 3148, 3131, 3148, 3149, 3151, 3145, 3136, - 3143, 3135, 3138, 3141, 3137, 3143, 3144, 3142, 3150, 3152, - 3154, 3155, 3156, 3159, 3157, 3151, 3149, 3158, 3145, 3154, - 3148, 3152, 3160, 3149, 3151, 3162, 3165, 3173, 3172, 3164, - 3161, 3150, 3157, 3155, 3164, 3150, 3152, 3154, 3155, 3156, - 3159, 3157, 3161, 3158, 3158, 3163, 3169, 3162, 3163, 3160, - 3167, 3166, 3162, 3166, 3168, 3172, 3175, 3161, 3165, 3173, - 3168, 3164, 3167, 3163, 3170, 3176, 3171, 3174, 3169, 3181, - - 3177, 0, 3163, 3169, 3171, 3163, 3178, 3167, 3166, 3183, - 3187, 3168, 3177, 3175, 3184, 3188, 3170, 3189, 3174, 3190, - 3192, 3170, 3176, 3171, 3174, 3193, 3181, 3177, 3178, 3194, - 3195, 3198, 3184, 3178, 3196, 3196, 3183, 3187, 3199, 3201, - 3204, 3184, 3188, 3202, 3189, 3200, 3190, 3192, 3206, 3198, - 3202, 3205, 3193, 3209, 3201, 3208, 3194, 3195, 3198, 3205, - 3210, 3196, 3207, 3200, 3211, 3199, 3201, 3204, 3209, 3208, - 3202, 3213, 3200, 3214, 3207, 3206, 3217, 3218, 3205, 3220, - 3209, 3221, 3208, 3213, 3224, 3217, 3210, 3210, 3223, 3207, - 3221, 3211, 3219, 3219, 3225, 3226, 3232, 0, 3213, 3231, - - 3214, 3218, 3227, 3217, 3218, 3220, 3220, 3225, 3221, 3228, - 3227, 3235, 3223, 3229, 3232, 3223, 3224, 3226, 3228, 3219, - 3231, 3225, 3226, 3232, 3229, 3236, 3231, 3239, 3239, 3227, - 3251, 3248, 3249, 3252, 3235, 3253, 3228, 3236, 3235, 3255, - 3229, 3257, 3259, 3258, 3251, 3257, 0, 3264, 3260, 3266, - 3262, 3264, 3236, 3248, 3239, 3260, 3249, 3251, 3248, 3249, - 3252, 3258, 3253, 3262, 3265, 3259, 3255, 3267, 3257, 3259, - 3258, 3266, 3268, 3270, 3264, 3260, 3266, 3262, 3269, 3272, - 3265, 3271, 3273, 3274, 3268, 3274, 3275, 3270, 3272, 3271, - 0, 3265, 3267, 3273, 3267, 3278, 3276, 3277, 3275, 3268, - - 3270, 3279, 3281, 3280, 3269, 3269, 3272, 3279, 3271, 3273, - 3274, 3282, 3277, 3275, 3276, 3283, 3289, 3278, 3282, 3287, - 3288, 3290, 3278, 3276, 3277, 3280, 3291, 3288, 3279, 3281, - 3280, 3292, 3287, 3293, 3294, 3297, 3295, 3283, 3282, 3290, - 0, 0, 3283, 3289, 3295, 3296, 3287, 3288, 3290, 3298, - 3304, 3299, 3296, 3291, 3300, 3301, 3300, 3292, 3292, 3297, - 3293, 3294, 3297, 3295, 3302, 3304, 3303, 3301, 3305, 0, - 3306, 3298, 3296, 3299, 3308, 3310, 3298, 3304, 3299, 3303, - 3307, 3300, 3301, 3312, 3313, 3317, 3311, 3307, 3315, 3320, - 3305, 3312, 3321, 3303, 3317, 3305, 3302, 3306, 3311, 3324, - - 3315, 3308, 3310, 3322, 3325, 3329, 3323, 3307, 3326, 0, - 3312, 3313, 3317, 3311, 3323, 3315, 3320, 3328, 3321, 3321, - 3327, 3326, 3322, 3330, 3332, 3328, 3338, 3329, 3344, 3339, - 3322, 3324, 3329, 3323, 3327, 3326, 3325, 3335, 3336, 3338, - 3342, 3341, 3344, 3335, 3328, 3336, 3343, 3327, 3341, 3345, - 3330, 3332, 3339, 3338, 3343, 3344, 3339, 3347, 3346, 3348, - 3349, 3355, 3342, 3345, 3335, 3336, 3346, 3342, 3341, 3353, - 3352, 3356, 3354, 3343, 3357, 3358, 3345, 3352, 3353, 3347, - 3354, 3348, 3359, 3360, 3347, 3346, 3348, 3349, 3355, 3361, - 3363, 3365, 3362, 3356, 3367, 3374, 3353, 3352, 3356, 3354, - - 3362, 3358, 3358, 3366, 3359, 3360, 3357, 3370, 3369, 3359, - 3360, 3361, 3371, 3380, 0, 3370, 3361, 3378, 3365, 3362, - 3372, 3367, 3363, 3398, 3376, 3366, 3401, 3374, 3372, 3373, - 3366, 3369, 3371, 3375, 3370, 3369, 0, 3373, 3376, 3371, - 3380, 3375, 3382, 3378, 3378, 3381, 3383, 3372, 3381, 3384, - 3398, 3376, 3385, 3401, 3383, 3386, 3373, 3384, 3387, 3392, - 3375, 3390, 3390, 3381, 3382, 3391, 3385, 3392, 3393, 3382, - 3388, 3395, 3381, 3383, 3394, 3381, 3384, 0, 0, 3385, - 3387, 3386, 3386, 3396, 3388, 3387, 3392, 3399, 3390, 3405, - 3400, 3391, 3391, 3395, 3393, 3393, 3397, 3388, 3395, 3402, - - 3394, 3394, 3403, 3396, 3397, 3404, 3408, 3417, 0, 3399, - 3396, 3405, 3406, 3404, 3399, 3400, 3405, 3400, 3411, 3402, - 3406, 3412, 3403, 3397, 3415, 0, 3402, 3409, 3413, 3403, - 3414, 3421, 3404, 3408, 3417, 3409, 3413, 3420, 3414, 3406, - 3411, 3418, 3422, 3412, 3419, 3411, 3424, 3425, 3412, 3418, - 3415, 3415, 3419, 3428, 3409, 3413, 3426, 3414, 3421, 3431, - 3434, 3435, 3422, 3420, 3420, 0, 0, 0, 3418, 3422, - 3432, 3419, 0, 3424, 3425, 3428, 3426, 3433, 3432, 0, - 3428, 3431, 0, 3426, 0, 3433, 3431, 3434, 3435, 0, - 0, 0, 0, 0, 0, 0, 0, 3432, 0, 0, - - 0, 0, 0, 0, 3433, 3439, 3439, 3439, 3439, 3439, - 3439, 3439, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3441, - 3441, 3441, 3441, 3441, 3441, 3441, 3442, 3442, 3442, 3442, - 3442, 3442, 3442, 3443, 3443, 3443, 3443, 3443, 3443, 3443, - 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3445, 3445, 3445, - 3445, 3445, 3445, 3445, 3447, 3447, 0, 3447, 3447, 3447, - 3447, 3448, 3448, 0, 0, 0, 3448, 3448, 3449, 3449, - 0, 0, 3449, 0, 3449, 3450, 0, 0, 0, 0, - 0, 3450, 3451, 3451, 0, 0, 0, 3451, 3451, 3452, - 0, 0, 0, 0, 0, 3452, 3453, 3453, 0, 3453, - - 3453, 3453, 3453, 3454, 0, 0, 0, 0, 0, 3454, - 3455, 3455, 0, 0, 0, 3455, 3455, 3456, 3456, 0, - 3456, 3456, 3456, 3456, 3438, 3438, 3438, 3438, 3438, 3438, - 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, - 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, - 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, - 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, - 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, - 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, - 3438 - - } ; - -static yy_state_type yy_last_accepting_state; -static char *yy_last_accepting_cpos; - -extern int yy_flex_debug; -int yy_flex_debug = 0; - -/* The intent behind this definition is that it'll catch - * any uses of REJECT which flex missed. - */ -#define REJECT reject_used_but_not_detected -static int yy_more_flag = 0; -static int yy_more_len = 0; -#define yymore() ((yy_more_flag) = 1) -#define YY_MORE_ADJ (yy_more_len) -#define YY_RESTORE_YY_MORE_OFFSET -char *yytext; -#line 1 "util/configlexer.lex" -#line 2 "util/configlexer.lex" -/* - * configlexer.lex - lexical analyzer for unbound config file - * - * Copyright (c) 2001-2006, NLnet Labs. All rights reserved - * - * See LICENSE for the license. - * - */ - -/* because flex keeps having sign-unsigned compare problems that are unfixed*/ -#if defined(__clang__)||(defined(__GNUC__)&&((__GNUC__ >4)||(defined(__GNUC_MINOR__)&&(__GNUC__ ==4)&&(__GNUC_MINOR__ >=2)))) -#pragma GCC diagnostic ignored "-Wsign-compare" -#endif - -#include -#include -#ifdef HAVE_GLOB_H -# include -#endif - -#include "util/config_file.h" -#include "util/configparser.h" -void ub_c_error(const char *message); - -#if 0 -#define LEXOUT(s) printf s /* used ONLY when debugging */ -#else -#define LEXOUT(s) -#endif - -/** avoid warning in about fwrite return value */ -#define ECHO ub_c_error_msg("syntax error at text: %s", yytext) - -/** A parser variable, this is a statement in the config file which is - * of the form variable: value1 value2 ... nargs is the number of values. */ -#define YDVAR(nargs, var) \ - num_args=(nargs); \ - LEXOUT(("v(%s%d) ", yytext, num_args)); \ - if(num_args > 0) { BEGIN(val); } \ - return (var); - -struct inc_state { - char* filename; - int line; - YY_BUFFER_STATE buffer; - struct inc_state* next; - int inc_toplevel; -}; -static struct inc_state* config_include_stack = NULL; -static int inc_depth = 0; -static int inc_prev = 0; -static int num_args = 0; -static int inc_toplevel = 0; - -void init_cfg_parse(void) -{ - config_include_stack = NULL; - inc_depth = 0; - inc_prev = 0; - num_args = 0; - inc_toplevel = 0; -} - -static void config_start_include(const char* filename, int toplevel) -{ - FILE *input; - struct inc_state* s; - char* nm; - if(inc_depth+1 > 100000) { - ub_c_error_msg("too many include files"); - return; - } - if(*filename == '\0') { - ub_c_error_msg("empty include file name"); - return; - } - s = (struct inc_state*)malloc(sizeof(*s)); - if(!s) { - ub_c_error_msg("include %s: malloc failure", filename); - return; - } - if(cfg_parser->chroot && strncmp(filename, cfg_parser->chroot, - strlen(cfg_parser->chroot)) == 0) { - filename += strlen(cfg_parser->chroot); - } - nm = strdup(filename); - if(!nm) { - ub_c_error_msg("include %s: strdup failure", filename); - free(s); - return; - } - input = fopen(filename, "r"); - if(!input) { - ub_c_error_msg("cannot open include file '%s': %s", - filename, strerror(errno)); - free(s); - free(nm); - return; - } - LEXOUT(("switch_to_include_file(%s)\n", filename)); - inc_depth++; - s->filename = cfg_parser->filename; - s->line = cfg_parser->line; - s->buffer = YY_CURRENT_BUFFER; - s->inc_toplevel = inc_toplevel; - s->next = config_include_stack; - config_include_stack = s; - cfg_parser->filename = nm; - cfg_parser->line = 1; - inc_toplevel = toplevel; - yy_switch_to_buffer(yy_create_buffer(input,YY_BUF_SIZE)); -} - -static void config_start_include_glob(const char* filename, int toplevel) -{ - - /* check for wildcards */ -#ifdef HAVE_GLOB - glob_t g; - int i, r, flags; - if(!(!strchr(filename, '*') && !strchr(filename, '?') && !strchr(filename, '[') && - !strchr(filename, '{') && !strchr(filename, '~'))) { - flags = 0 -#ifdef GLOB_ERR - | GLOB_ERR -#endif - /* do not set GLOB_NOSORT so the results are sorted - and in a predictable order. */ -#ifdef GLOB_BRACE - | GLOB_BRACE -#endif -#ifdef GLOB_TILDE - | GLOB_TILDE -#endif - ; - memset(&g, 0, sizeof(g)); - if(cfg_parser->chroot && strncmp(filename, cfg_parser->chroot, - strlen(cfg_parser->chroot)) == 0) { - filename += strlen(cfg_parser->chroot); - } - r = glob(filename, flags, NULL, &g); - if(r) { - /* some error */ - globfree(&g); - if(r == GLOB_NOMATCH) - return; /* no matches for pattern */ - config_start_include(filename, toplevel); /* let original deal with it */ - return; - } - /* process files found, if any */ - for(i=(int)g.gl_pathc-1; i>=0; i--) { - config_start_include(g.gl_pathv[i], toplevel); - } - globfree(&g); - return; - } -#endif /* HAVE_GLOB */ - - config_start_include(filename, toplevel); -} - -static void config_end_include(void) -{ - struct inc_state* s = config_include_stack; - --inc_depth; - if(!s) return; - free(cfg_parser->filename); - cfg_parser->filename = s->filename; - cfg_parser->line = s->line; - yy_delete_buffer(YY_CURRENT_BUFFER); - yy_switch_to_buffer(s->buffer); - config_include_stack = s->next; - inc_toplevel = s->inc_toplevel; - free(s); -} - -#ifndef yy_set_bol /* compat definition, for flex 2.4.6 */ -#define yy_set_bol(at_bol) \ - { \ - if ( ! yy_current_buffer ) \ - yy_current_buffer = yy_create_buffer(yyin,YY_BUF_SIZE ); \ - yy_current_buffer->yy_ch_buf[0] = ((at_bol)?'\n':' '); \ - } -#endif - -#define YY_NO_INPUT 1 -#line 191 "util/configlexer.lex" -#ifndef YY_NO_UNPUT -#define YY_NO_UNPUT 1 -#endif -#ifndef YY_NO_INPUT -#define YY_NO_INPUT 1 -#endif - -#line 3965 "" - -#define INITIAL 0 -#define quotedstring 1 -#define singlequotedstr 2 -#define include 3 -#define include_quoted 4 -#define val 5 -#define include_toplevel 6 -#define include_toplevel_quoted 7 - -#ifndef YY_NO_UNISTD_H -/* Special case for "unistd.h", since it is non-ANSI. We include it way - * down here because we want the user's section 1 to have been scanned first. - * The user has a chance to override it with an option. - */ -#include -#endif - -#ifndef YY_EXTRA_TYPE -#define YY_EXTRA_TYPE void * -#endif - -static int yy_init_globals (void ); - -/* Accessor methods to globals. - These are made visible to non-reentrant scanners for convenience. */ - -int yylex_destroy (void ); - -int yyget_debug (void ); - -void yyset_debug (int debug_flag ); - -YY_EXTRA_TYPE yyget_extra (void ); - -void yyset_extra (YY_EXTRA_TYPE user_defined ); - -FILE *yyget_in (void ); - -void yyset_in (FILE * in_str ); - -FILE *yyget_out (void ); - -void yyset_out (FILE * out_str ); - -yy_size_t yyget_leng (void ); - -char *yyget_text (void ); - -int yyget_lineno (void ); - -void yyset_lineno (int line_number ); - -/* Macros after this point can all be overridden by user definitions in - * section 1. - */ - -#ifndef YY_SKIP_YYWRAP -#ifdef __cplusplus -extern "C" int yywrap (void ); -#else -extern int yywrap (void ); -#endif -#endif - -#ifndef yytext_ptr -static void yy_flex_strncpy (char *,yyconst char *,int ); -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen (yyconst char * ); -#endif - -#ifndef YY_NO_INPUT - -#ifdef __cplusplus -static int yyinput (void ); -#else -static int input (void ); -#endif - -#endif - -/* Amount of stuff to slurp up with each read. */ -#ifndef YY_READ_BUF_SIZE -#define YY_READ_BUF_SIZE 8192 -#endif - -/* Copy whatever the last rule matched to the standard output. */ -#ifndef ECHO -/* This used to be an fputs(), but since the string might contain NUL's, - * we now use fwrite(). - */ -#define ECHO fwrite( yytext, yyleng, 1, yyout ) -#endif - -/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, - * is returned in "result". - */ -#ifndef YY_INPUT -#define YY_INPUT(buf,result,max_size) \ - if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ - { \ - int c = '*'; \ - yy_size_t n; \ - for ( n = 0; n < max_size && \ - (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ - buf[n] = (char) c; \ - if ( c == '\n' ) \ - buf[n++] = (char) c; \ - if ( c == EOF && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - result = n; \ - } \ - else \ - { \ - errno=0; \ - while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ - { \ - if( errno != EINTR) \ - { \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - break; \ - } \ - errno=0; \ - clearerr(yyin); \ - } \ - }\ -\ - -#endif - -/* No semi-colon after return; correct usage is to write "yyterminate();" - - * we don't want an extra ';' after the "return" because that will cause - * some compilers to complain about unreachable statements. - */ -#ifndef yyterminate -#define yyterminate() return YY_NULL -#endif - -/* Number of entries by which start-condition stack grows. */ -#ifndef YY_START_STACK_INCR -#define YY_START_STACK_INCR 25 -#endif - -/* Report a fatal error. */ -#ifndef YY_FATAL_ERROR -#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) -#endif - -/* end tables serialization structures and prototypes */ - -/* Default declaration of generated scanner - a define so the user can - * easily add parameters. - */ -#ifndef YY_DECL -#define YY_DECL_IS_OURS 1 - -extern int yylex (void); - -#define YY_DECL int yylex (void) -#endif /* !YY_DECL */ - -/* Code executed at the beginning of each rule, after yytext and yyleng - * have been set up. - */ -#ifndef YY_USER_ACTION -#define YY_USER_ACTION -#endif - -/* Code executed at the end of each rule. */ -#ifndef YY_BREAK -#define YY_BREAK break; -#endif - -#define YY_RULE_SETUP \ - YY_USER_ACTION - -/** The main scanner function which does all the work. - */ -YY_DECL -{ - register yy_state_type yy_current_state; - register char *yy_cp, *yy_bp; - register int yy_act; - -#line 211 "util/configlexer.lex" - -#line 4154 "" - - if ( !(yy_init) ) - { - (yy_init) = 1; - -#ifdef YY_USER_INIT - YY_USER_INIT; -#endif - - if ( ! (yy_start) ) - (yy_start) = 1; /* first start state */ - - if ( ! yyin ) - yyin = stdin; - - if ( ! yyout ) - yyout = stdout; - - if ( ! YY_CURRENT_BUFFER ) { - yyensure_buffer_stack (); - YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer(yyin,YY_BUF_SIZE ); - } - - yy_load_buffer_state( ); - } - - while ( 1 ) /* loops until end-of-file is reached */ - { - (yy_more_len) = 0; - if ( (yy_more_flag) ) - { - (yy_more_len) = (yy_c_buf_p) - (yytext_ptr); - (yy_more_flag) = 0; - } - yy_cp = (yy_c_buf_p); - - /* Support of yytext. */ - *yy_cp = (yy_hold_char); - - /* yy_bp points to the position in yy_ch_buf of the start of - * the current run. - */ - yy_bp = yy_cp; - - yy_current_state = (yy_start); -yy_match: - do - { - register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; - if ( yy_accept[yy_current_state] ) - { - (yy_last_accepting_state) = yy_current_state; - (yy_last_accepting_cpos) = yy_cp; - } - 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 >= 3439 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - ++yy_cp; - } - while ( yy_base[yy_current_state] != 9825 ); - -yy_find_action: - yy_act = yy_accept[yy_current_state]; - if ( yy_act == 0 ) - { /* have to back up */ - yy_cp = (yy_last_accepting_cpos); - yy_current_state = (yy_last_accepting_state); - yy_act = yy_accept[yy_current_state]; - } - - YY_DO_BEFORE_ACTION; - -do_action: /* This label is used only to access EOF actions. */ - - switch ( yy_act ) - { /* beginning of action switch */ - case 0: /* must back up */ - /* undo the effects of YY_DO_BEFORE_ACTION */ - *yy_cp = (yy_hold_char); - yy_cp = (yy_last_accepting_cpos); - yy_current_state = (yy_last_accepting_state); - goto yy_find_action; - -case 1: -YY_RULE_SETUP -#line 212 "util/configlexer.lex" -{ - LEXOUT(("SP ")); /* ignore */ } - YY_BREAK -case 2: -YY_RULE_SETUP -#line 214 "util/configlexer.lex" -{ - /* note that flex makes the longest match and '.' is any but not nl */ - LEXOUT(("comment(%s) ", yytext)); /* ignore */ } - YY_BREAK -case 3: -YY_RULE_SETUP -#line 217 "util/configlexer.lex" -{ YDVAR(0, VAR_SERVER) } - YY_BREAK -case 4: -YY_RULE_SETUP -#line 218 "util/configlexer.lex" -{ YDVAR(1, VAR_QNAME_MINIMISATION) } - YY_BREAK -case 5: -YY_RULE_SETUP -#line 219 "util/configlexer.lex" -{ YDVAR(1, VAR_QNAME_MINIMISATION_STRICT) } - YY_BREAK -case 6: -YY_RULE_SETUP -#line 220 "util/configlexer.lex" -{ YDVAR(1, VAR_NUM_THREADS) } - YY_BREAK -case 7: -YY_RULE_SETUP -#line 221 "util/configlexer.lex" -{ YDVAR(1, VAR_VERBOSITY) } - YY_BREAK -case 8: -YY_RULE_SETUP -#line 222 "util/configlexer.lex" -{ YDVAR(1, VAR_PORT) } - YY_BREAK -case 9: -YY_RULE_SETUP -#line 223 "util/configlexer.lex" -{ YDVAR(1, VAR_OUTGOING_RANGE) } - YY_BREAK -case 10: -YY_RULE_SETUP -#line 224 "util/configlexer.lex" -{ YDVAR(1, VAR_OUTGOING_PORT_PERMIT) } - YY_BREAK -case 11: -YY_RULE_SETUP -#line 225 "util/configlexer.lex" -{ YDVAR(1, VAR_OUTGOING_PORT_AVOID) } - YY_BREAK -case 12: -YY_RULE_SETUP -#line 226 "util/configlexer.lex" -{ YDVAR(1, VAR_OUTGOING_NUM_TCP) } - YY_BREAK -case 13: -YY_RULE_SETUP -#line 227 "util/configlexer.lex" -{ YDVAR(1, VAR_INCOMING_NUM_TCP) } - YY_BREAK -case 14: -YY_RULE_SETUP -#line 228 "util/configlexer.lex" -{ YDVAR(1, VAR_DO_IP4) } - YY_BREAK -case 15: -YY_RULE_SETUP -#line 229 "util/configlexer.lex" -{ YDVAR(1, VAR_DO_IP6) } - YY_BREAK -case 16: -YY_RULE_SETUP -#line 230 "util/configlexer.lex" -{ YDVAR(1, VAR_PREFER_IP4) } - YY_BREAK -case 17: -YY_RULE_SETUP -#line 231 "util/configlexer.lex" -{ YDVAR(1, VAR_PREFER_IP6) } - YY_BREAK -case 18: -YY_RULE_SETUP -#line 232 "util/configlexer.lex" -{ YDVAR(1, VAR_DO_UDP) } - YY_BREAK -case 19: -YY_RULE_SETUP -#line 233 "util/configlexer.lex" -{ YDVAR(1, VAR_DO_TCP) } - YY_BREAK -case 20: -YY_RULE_SETUP -#line 234 "util/configlexer.lex" -{ YDVAR(1, VAR_TCP_UPSTREAM) } - YY_BREAK -case 21: -YY_RULE_SETUP -#line 235 "util/configlexer.lex" -{ YDVAR(1, VAR_TCP_MSS) } - YY_BREAK -case 22: -YY_RULE_SETUP -#line 236 "util/configlexer.lex" -{ YDVAR(1, VAR_OUTGOING_TCP_MSS) } - YY_BREAK -case 23: -YY_RULE_SETUP -#line 237 "util/configlexer.lex" -{ YDVAR(1, VAR_TCP_IDLE_TIMEOUT) } - YY_BREAK -case 24: -YY_RULE_SETUP -#line 238 "util/configlexer.lex" -{ YDVAR(1, VAR_MAX_REUSE_TCP_QUERIES) } - YY_BREAK -case 25: -YY_RULE_SETUP -#line 239 "util/configlexer.lex" -{ YDVAR(1, VAR_TCP_REUSE_TIMEOUT) } - YY_BREAK -case 26: -YY_RULE_SETUP -#line 240 "util/configlexer.lex" -{ YDVAR(1, VAR_TCP_AUTH_QUERY_TIMEOUT) } - YY_BREAK -case 27: -YY_RULE_SETUP -#line 241 "util/configlexer.lex" -{ YDVAR(1, VAR_EDNS_TCP_KEEPALIVE) } - YY_BREAK -case 28: -YY_RULE_SETUP -#line 242 "util/configlexer.lex" -{ YDVAR(1, VAR_EDNS_TCP_KEEPALIVE_TIMEOUT) } - YY_BREAK -case 29: -YY_RULE_SETUP -#line 243 "util/configlexer.lex" -{ YDVAR(1, VAR_SSL_UPSTREAM) } - YY_BREAK -case 30: -YY_RULE_SETUP -#line 244 "util/configlexer.lex" -{ YDVAR(1, VAR_SSL_UPSTREAM) } - YY_BREAK -case 31: -YY_RULE_SETUP -#line 245 "util/configlexer.lex" -{ YDVAR(1, VAR_SSL_SERVICE_KEY) } - YY_BREAK -case 32: -YY_RULE_SETUP -#line 246 "util/configlexer.lex" -{ YDVAR(1, VAR_SSL_SERVICE_KEY) } - YY_BREAK -case 33: -YY_RULE_SETUP -#line 247 "util/configlexer.lex" -{ YDVAR(1, VAR_SSL_SERVICE_PEM) } - YY_BREAK -case 34: -YY_RULE_SETUP -#line 248 "util/configlexer.lex" -{ YDVAR(1, VAR_SSL_SERVICE_PEM) } - YY_BREAK -case 35: -YY_RULE_SETUP -#line 249 "util/configlexer.lex" -{ YDVAR(1, VAR_SSL_PORT) } - YY_BREAK -case 36: -YY_RULE_SETUP -#line 250 "util/configlexer.lex" -{ YDVAR(1, VAR_SSL_PORT) } - YY_BREAK -case 37: -YY_RULE_SETUP -#line 251 "util/configlexer.lex" -{ YDVAR(1, VAR_TLS_CERT_BUNDLE) } - YY_BREAK -case 38: -YY_RULE_SETUP -#line 252 "util/configlexer.lex" -{ YDVAR(1, VAR_TLS_CERT_BUNDLE) } - YY_BREAK -case 39: -YY_RULE_SETUP -#line 253 "util/configlexer.lex" -{ YDVAR(1, VAR_TLS_WIN_CERT) } - YY_BREAK -case 40: -YY_RULE_SETUP -#line 254 "util/configlexer.lex" -{ YDVAR(1, VAR_TLS_ADDITIONAL_PORT) } - YY_BREAK -case 41: -YY_RULE_SETUP -#line 255 "util/configlexer.lex" -{ YDVAR(1, VAR_TLS_ADDITIONAL_PORT) } - YY_BREAK -case 42: -YY_RULE_SETUP -#line 256 "util/configlexer.lex" -{ YDVAR(1, VAR_TLS_ADDITIONAL_PORT) } - YY_BREAK -case 43: -YY_RULE_SETUP -#line 257 "util/configlexer.lex" -{ YDVAR(1, VAR_TLS_ADDITIONAL_PORT) } - YY_BREAK -case 44: -YY_RULE_SETUP -#line 258 "util/configlexer.lex" -{ YDVAR(1, VAR_TLS_SESSION_TICKET_KEYS) } - YY_BREAK -case 45: -YY_RULE_SETUP -#line 259 "util/configlexer.lex" -{ YDVAR(1, VAR_TLS_CIPHERS) } - YY_BREAK -case 46: -YY_RULE_SETUP -#line 260 "util/configlexer.lex" -{ YDVAR(1, VAR_TLS_CIPHERSUITES) } - YY_BREAK -case 47: -YY_RULE_SETUP -#line 261 "util/configlexer.lex" -{ YDVAR(1, VAR_TLS_USE_SNI) } - YY_BREAK -case 48: -YY_RULE_SETUP -#line 262 "util/configlexer.lex" -{ YDVAR(1, VAR_HTTPS_PORT) } - YY_BREAK -case 49: -YY_RULE_SETUP -#line 263 "util/configlexer.lex" -{ YDVAR(1, VAR_HTTP_ENDPOINT) } - YY_BREAK -case 50: -YY_RULE_SETUP -#line 264 "util/configlexer.lex" -{ YDVAR(1, VAR_HTTP_MAX_STREAMS) } - YY_BREAK -case 51: -YY_RULE_SETUP -#line 265 "util/configlexer.lex" -{ YDVAR(1, VAR_HTTP_QUERY_BUFFER_SIZE) } - YY_BREAK -case 52: -YY_RULE_SETUP -#line 266 "util/configlexer.lex" -{ YDVAR(1, VAR_HTTP_RESPONSE_BUFFER_SIZE) } - YY_BREAK -case 53: -YY_RULE_SETUP -#line 267 "util/configlexer.lex" -{ YDVAR(1, VAR_HTTP_NODELAY) } - YY_BREAK -case 54: -YY_RULE_SETUP -#line 268 "util/configlexer.lex" -{ YDVAR(1, VAR_HTTP_NOTLS_DOWNSTREAM) } - YY_BREAK -case 55: -YY_RULE_SETUP -#line 269 "util/configlexer.lex" -{ YDVAR(1, VAR_USE_SYSTEMD) } - YY_BREAK -case 56: -YY_RULE_SETUP -#line 270 "util/configlexer.lex" -{ YDVAR(1, VAR_DO_DAEMONIZE) } - YY_BREAK -case 57: -YY_RULE_SETUP -#line 271 "util/configlexer.lex" -{ YDVAR(1, VAR_INTERFACE) } - YY_BREAK -case 58: -YY_RULE_SETUP -#line 272 "util/configlexer.lex" -{ YDVAR(1, VAR_INTERFACE) } - YY_BREAK -case 59: -YY_RULE_SETUP -#line 273 "util/configlexer.lex" -{ YDVAR(1, VAR_OUTGOING_INTERFACE) } - YY_BREAK -case 60: -YY_RULE_SETUP -#line 274 "util/configlexer.lex" -{ YDVAR(1, VAR_INTERFACE_AUTOMATIC) } - YY_BREAK -case 61: -YY_RULE_SETUP -#line 275 "util/configlexer.lex" -{ YDVAR(1, VAR_SO_RCVBUF) } - YY_BREAK -case 62: -YY_RULE_SETUP -#line 276 "util/configlexer.lex" -{ YDVAR(1, VAR_SO_SNDBUF) } - YY_BREAK -case 63: -YY_RULE_SETUP -#line 277 "util/configlexer.lex" -{ YDVAR(1, VAR_SO_REUSEPORT) } - YY_BREAK -case 64: -YY_RULE_SETUP -#line 278 "util/configlexer.lex" -{ YDVAR(1, VAR_IP_TRANSPARENT) } - YY_BREAK -case 65: -YY_RULE_SETUP -#line 279 "util/configlexer.lex" -{ YDVAR(1, VAR_IP_FREEBIND) } - YY_BREAK -case 66: -YY_RULE_SETUP -#line 280 "util/configlexer.lex" -{ YDVAR(1, VAR_IP_DSCP) } - YY_BREAK -case 67: -YY_RULE_SETUP -#line 281 "util/configlexer.lex" -{ YDVAR(1, VAR_CHROOT) } - YY_BREAK -case 68: -YY_RULE_SETUP -#line 282 "util/configlexer.lex" -{ YDVAR(1, VAR_USERNAME) } - YY_BREAK -case 69: -YY_RULE_SETUP -#line 283 "util/configlexer.lex" -{ YDVAR(1, VAR_DIRECTORY) } - YY_BREAK -case 70: -YY_RULE_SETUP -#line 284 "util/configlexer.lex" -{ YDVAR(1, VAR_LOGFILE) } - YY_BREAK -case 71: -YY_RULE_SETUP -#line 285 "util/configlexer.lex" -{ YDVAR(1, VAR_PIDFILE) } - YY_BREAK -case 72: -YY_RULE_SETUP -#line 286 "util/configlexer.lex" -{ YDVAR(1, VAR_ROOT_HINTS) } - YY_BREAK -case 73: -YY_RULE_SETUP -#line 287 "util/configlexer.lex" -{ YDVAR(1, VAR_STREAM_WAIT_SIZE) } - YY_BREAK -case 74: -YY_RULE_SETUP -#line 288 "util/configlexer.lex" -{ YDVAR(1, VAR_EDNS_BUFFER_SIZE) } - YY_BREAK -case 75: -YY_RULE_SETUP -#line 289 "util/configlexer.lex" -{ YDVAR(1, VAR_MSG_BUFFER_SIZE) } - YY_BREAK -case 76: -YY_RULE_SETUP -#line 290 "util/configlexer.lex" -{ YDVAR(1, VAR_MSG_CACHE_SIZE) } - YY_BREAK -case 77: -YY_RULE_SETUP -#line 291 "util/configlexer.lex" -{ YDVAR(1, VAR_MSG_CACHE_SLABS) } - YY_BREAK -case 78: -YY_RULE_SETUP -#line 292 "util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_CACHE_SIZE) } - YY_BREAK -case 79: -YY_RULE_SETUP -#line 293 "util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_CACHE_SLABS) } - YY_BREAK -case 80: -YY_RULE_SETUP -#line 294 "util/configlexer.lex" -{ YDVAR(1, VAR_CACHE_MAX_TTL) } - YY_BREAK -case 81: -YY_RULE_SETUP -#line 295 "util/configlexer.lex" -{ YDVAR(1, VAR_CACHE_MAX_NEGATIVE_TTL) } - YY_BREAK -case 82: -YY_RULE_SETUP -#line 296 "util/configlexer.lex" -{ YDVAR(1, VAR_CACHE_MIN_TTL) } - YY_BREAK -case 83: -YY_RULE_SETUP -#line 297 "util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_HOST_TTL) } - YY_BREAK -case 84: -YY_RULE_SETUP -#line 298 "util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_LAME_TTL) } - YY_BREAK -case 85: -YY_RULE_SETUP -#line 299 "util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_SLABS) } - YY_BREAK -case 86: -YY_RULE_SETUP -#line 300 "util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_NUMHOSTS) } - YY_BREAK -case 87: -YY_RULE_SETUP -#line 301 "util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_LAME_SIZE) } - YY_BREAK -case 88: -YY_RULE_SETUP -#line 302 "util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_MIN_RTT) } - YY_BREAK -case 89: -YY_RULE_SETUP -#line 303 "util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_KEEP_PROBING) } - YY_BREAK -case 90: -YY_RULE_SETUP -#line 304 "util/configlexer.lex" -{ YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) } - YY_BREAK -case 91: -YY_RULE_SETUP -#line 305 "util/configlexer.lex" -{ YDVAR(1, VAR_JOSTLE_TIMEOUT) } - YY_BREAK -case 92: -YY_RULE_SETUP -#line 306 "util/configlexer.lex" -{ YDVAR(1, VAR_DELAY_CLOSE) } - YY_BREAK -case 93: -YY_RULE_SETUP -#line 307 "util/configlexer.lex" -{ YDVAR(1, VAR_UDP_CONNECT) } - YY_BREAK -case 94: -YY_RULE_SETUP -#line 308 "util/configlexer.lex" -{ YDVAR(1, VAR_TARGET_FETCH_POLICY) } - YY_BREAK -case 95: -YY_RULE_SETUP -#line 309 "util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) } - YY_BREAK -case 96: -YY_RULE_SETUP -#line 310 "util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_LARGE_QUERIES) } - YY_BREAK -case 97: -YY_RULE_SETUP -#line 311 "util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_GLUE) } - YY_BREAK -case 98: -YY_RULE_SETUP -#line 312 "util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) } - YY_BREAK -case 99: -YY_RULE_SETUP -#line 313 "util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) } - YY_BREAK -case 100: -YY_RULE_SETUP -#line 314 "util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) } - YY_BREAK -case 101: -YY_RULE_SETUP -#line 315 "util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_ALGO_DOWNGRADE) } - YY_BREAK -case 102: -YY_RULE_SETUP -#line 316 "util/configlexer.lex" -{ YDVAR(1, VAR_USE_CAPS_FOR_ID) } - YY_BREAK -case 103: -YY_RULE_SETUP -#line 317 "util/configlexer.lex" -{ YDVAR(1, VAR_CAPS_WHITELIST) } - YY_BREAK -case 104: -YY_RULE_SETUP -#line 318 "util/configlexer.lex" -{ YDVAR(1, VAR_CAPS_WHITELIST) } - YY_BREAK -case 105: -YY_RULE_SETUP -#line 319 "util/configlexer.lex" -{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) } - YY_BREAK -case 106: -YY_RULE_SETUP -#line 320 "util/configlexer.lex" -{ YDVAR(1, VAR_PRIVATE_ADDRESS) } - YY_BREAK -case 107: -YY_RULE_SETUP -#line 321 "util/configlexer.lex" -{ YDVAR(1, VAR_PRIVATE_DOMAIN) } - YY_BREAK -case 108: -YY_RULE_SETUP -#line 322 "util/configlexer.lex" -{ YDVAR(1, VAR_PREFETCH_KEY) } - YY_BREAK -case 109: -YY_RULE_SETUP -#line 323 "util/configlexer.lex" -{ YDVAR(1, VAR_PREFETCH) } - YY_BREAK -case 110: -YY_RULE_SETUP -#line 324 "util/configlexer.lex" -{ YDVAR(1, VAR_DENY_ANY) } - YY_BREAK -case 111: -YY_RULE_SETUP -#line 325 "util/configlexer.lex" -{ YDVAR(0, VAR_STUB_ZONE) } - YY_BREAK -case 112: -YY_RULE_SETUP -#line 326 "util/configlexer.lex" -{ YDVAR(1, VAR_NAME) } - YY_BREAK -case 113: -YY_RULE_SETUP -#line 327 "util/configlexer.lex" -{ YDVAR(1, VAR_STUB_ADDR) } - YY_BREAK -case 114: -YY_RULE_SETUP -#line 328 "util/configlexer.lex" -{ YDVAR(1, VAR_STUB_HOST) } - YY_BREAK -case 115: -YY_RULE_SETUP -#line 329 "util/configlexer.lex" -{ YDVAR(1, VAR_STUB_PRIME) } - YY_BREAK -case 116: -YY_RULE_SETUP -#line 330 "util/configlexer.lex" -{ YDVAR(1, VAR_STUB_FIRST) } - YY_BREAK -case 117: -YY_RULE_SETUP -#line 331 "util/configlexer.lex" -{ YDVAR(1, VAR_STUB_NO_CACHE) } - YY_BREAK -case 118: -YY_RULE_SETUP -#line 332 "util/configlexer.lex" -{ YDVAR(1, VAR_STUB_SSL_UPSTREAM) } - YY_BREAK -case 119: -YY_RULE_SETUP -#line 333 "util/configlexer.lex" -{ YDVAR(1, VAR_STUB_SSL_UPSTREAM) } - YY_BREAK -case 120: -YY_RULE_SETUP -#line 334 "util/configlexer.lex" -{ YDVAR(0, VAR_FORWARD_ZONE) } - YY_BREAK -case 121: -YY_RULE_SETUP -#line 335 "util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_ADDR) } - YY_BREAK -case 122: -YY_RULE_SETUP -#line 336 "util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_HOST) } - YY_BREAK -case 123: -YY_RULE_SETUP -#line 337 "util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_FIRST) } - YY_BREAK -case 124: -YY_RULE_SETUP -#line 338 "util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_NO_CACHE) } - YY_BREAK -case 125: -YY_RULE_SETUP -#line 339 "util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) } - YY_BREAK -case 126: -YY_RULE_SETUP -#line 340 "util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) } - YY_BREAK -case 127: -YY_RULE_SETUP -#line 341 "util/configlexer.lex" -{ YDVAR(0, VAR_AUTH_ZONE) } - YY_BREAK -case 128: -YY_RULE_SETUP -#line 342 "util/configlexer.lex" -{ YDVAR(0, VAR_RPZ) } - YY_BREAK -case 129: -YY_RULE_SETUP -#line 343 "util/configlexer.lex" -{ YDVAR(1, VAR_TAGS) } - YY_BREAK -case 130: -YY_RULE_SETUP -#line 344 "util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_ACTION_OVERRIDE) } - YY_BREAK -case 131: -YY_RULE_SETUP -#line 345 "util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_CNAME_OVERRIDE) } - YY_BREAK -case 132: -YY_RULE_SETUP -#line 346 "util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_LOG) } - YY_BREAK -case 133: -YY_RULE_SETUP -#line 347 "util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_LOG_NAME) } - YY_BREAK -case 134: -YY_RULE_SETUP -#line 348 "util/configlexer.lex" -{ YDVAR(1, VAR_ZONEFILE) } - YY_BREAK -case 135: -YY_RULE_SETUP -#line 349 "util/configlexer.lex" -{ YDVAR(1, VAR_MASTER) } - YY_BREAK -case 136: -YY_RULE_SETUP -#line 350 "util/configlexer.lex" -{ YDVAR(1, VAR_MASTER) } - YY_BREAK -case 137: -YY_RULE_SETUP -#line 351 "util/configlexer.lex" -{ YDVAR(1, VAR_URL) } - YY_BREAK -case 138: -YY_RULE_SETUP -#line 352 "util/configlexer.lex" -{ YDVAR(1, VAR_ALLOW_NOTIFY) } - YY_BREAK -case 139: -YY_RULE_SETUP -#line 353 "util/configlexer.lex" -{ YDVAR(1, VAR_FOR_DOWNSTREAM) } - YY_BREAK -case 140: -YY_RULE_SETUP -#line 354 "util/configlexer.lex" -{ YDVAR(1, VAR_FOR_UPSTREAM) } - YY_BREAK -case 141: -YY_RULE_SETUP -#line 355 "util/configlexer.lex" -{ YDVAR(1, VAR_FALLBACK_ENABLED) } - YY_BREAK -case 142: -YY_RULE_SETUP -#line 356 "util/configlexer.lex" -{ YDVAR(0, VAR_VIEW) } - YY_BREAK -case 143: -YY_RULE_SETUP -#line 357 "util/configlexer.lex" -{ YDVAR(1, VAR_VIEW_FIRST) } - YY_BREAK -case 144: -YY_RULE_SETUP -#line 358 "util/configlexer.lex" -{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } - YY_BREAK -case 145: -YY_RULE_SETUP -#line 359 "util/configlexer.lex" -{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } - YY_BREAK -case 146: -YY_RULE_SETUP -#line 360 "util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL) } - YY_BREAK -case 147: -YY_RULE_SETUP -#line 361 "util/configlexer.lex" -{ YDVAR(1, VAR_SEND_CLIENT_SUBNET) } - YY_BREAK -case 148: -YY_RULE_SETUP -#line 362 "util/configlexer.lex" -{ YDVAR(1, VAR_CLIENT_SUBNET_ZONE) } - YY_BREAK -case 149: -YY_RULE_SETUP -#line 363 "util/configlexer.lex" -{ YDVAR(1, VAR_CLIENT_SUBNET_ALWAYS_FORWARD) } - YY_BREAK -case 150: -YY_RULE_SETUP -#line 364 "util/configlexer.lex" -{ YDVAR(1, VAR_CLIENT_SUBNET_OPCODE) } - YY_BREAK -case 151: -YY_RULE_SETUP -#line 365 "util/configlexer.lex" -{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV4) } - YY_BREAK -case 152: -YY_RULE_SETUP -#line 366 "util/configlexer.lex" -{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV6) } - YY_BREAK -case 153: -YY_RULE_SETUP -#line 367 "util/configlexer.lex" -{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV4) } - YY_BREAK -case 154: -YY_RULE_SETUP -#line 368 "util/configlexer.lex" -{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV6) } - YY_BREAK -case 155: -YY_RULE_SETUP -#line 369 "util/configlexer.lex" -{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV4) } - YY_BREAK -case 156: -YY_RULE_SETUP -#line 370 "util/configlexer.lex" -{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV6) } - YY_BREAK -case 157: -YY_RULE_SETUP -#line 371 "util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_IDENTITY) } - YY_BREAK -case 158: -YY_RULE_SETUP -#line 372 "util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_VERSION) } - YY_BREAK -case 159: -YY_RULE_SETUP -#line 373 "util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_TRUSTANCHOR) } - YY_BREAK -case 160: -YY_RULE_SETUP -#line 374 "util/configlexer.lex" -{ YDVAR(1, VAR_IDENTITY) } - YY_BREAK -case 161: -YY_RULE_SETUP -#line 375 "util/configlexer.lex" -{ YDVAR(1, VAR_VERSION) } - YY_BREAK -case 162: -YY_RULE_SETUP -#line 376 "util/configlexer.lex" -{ YDVAR(1, VAR_MODULE_CONF) } - YY_BREAK -case 163: -YY_RULE_SETUP -#line 377 "util/configlexer.lex" -{ YDVAR(1, VAR_DLV_ANCHOR) } - YY_BREAK -case 164: -YY_RULE_SETUP -#line 378 "util/configlexer.lex" -{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } - YY_BREAK -case 165: -YY_RULE_SETUP -#line 379 "util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } - YY_BREAK -case 166: -YY_RULE_SETUP -#line 380 "util/configlexer.lex" -{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } - YY_BREAK -case 167: -YY_RULE_SETUP -#line 381 "util/configlexer.lex" -{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } - YY_BREAK -case 168: -YY_RULE_SETUP -#line 382 "util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR) } - YY_BREAK -case 169: -YY_RULE_SETUP -#line 383 "util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR_SIGNALING) } - YY_BREAK -case 170: -YY_RULE_SETUP -#line 384 "util/configlexer.lex" -{ YDVAR(1, VAR_ROOT_KEY_SENTINEL) } - YY_BREAK -case 171: -YY_RULE_SETUP -#line 385 "util/configlexer.lex" -{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } - YY_BREAK -case 172: -YY_RULE_SETUP -#line 386 "util/configlexer.lex" -{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } - YY_BREAK -case 173: -YY_RULE_SETUP -#line 387 "util/configlexer.lex" -{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } - YY_BREAK -case 174: -YY_RULE_SETUP -#line 388 "util/configlexer.lex" -{ YDVAR(1, VAR_BOGUS_TTL) } - YY_BREAK -case 175: -YY_RULE_SETUP -#line 389 "util/configlexer.lex" -{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } - YY_BREAK -case 176: -YY_RULE_SETUP -#line 390 "util/configlexer.lex" -{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } - YY_BREAK -case 177: -YY_RULE_SETUP -#line 391 "util/configlexer.lex" -{ YDVAR(1, VAR_AGGRESSIVE_NSEC) } - YY_BREAK -case 178: -YY_RULE_SETUP -#line 392 "util/configlexer.lex" -{ YDVAR(1, VAR_IGNORE_CD_FLAG) } - YY_BREAK -case 179: -YY_RULE_SETUP -#line 393 "util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED) } - YY_BREAK -case 180: -YY_RULE_SETUP -#line 394 "util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_TTL) } - YY_BREAK -case 181: -YY_RULE_SETUP -#line 395 "util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) } - YY_BREAK -case 182: -YY_RULE_SETUP -#line 396 "util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) } - YY_BREAK -case 183: -YY_RULE_SETUP -#line 397 "util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) } - YY_BREAK -case 184: -YY_RULE_SETUP -#line 398 "util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_ORIGINAL_TTL) } - YY_BREAK -case 185: -YY_RULE_SETUP -#line 399 "util/configlexer.lex" -{ YDVAR(1, VAR_FAKE_DSA) } - YY_BREAK -case 186: -YY_RULE_SETUP -#line 400 "util/configlexer.lex" -{ YDVAR(1, VAR_FAKE_SHA1) } - YY_BREAK -case 187: -YY_RULE_SETUP -#line 401 "util/configlexer.lex" -{ YDVAR(1, VAR_VAL_LOG_LEVEL) } - YY_BREAK -case 188: -YY_RULE_SETUP -#line 402 "util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SIZE) } - YY_BREAK -case 189: -YY_RULE_SETUP -#line 403 "util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SLABS) } - YY_BREAK -case 190: -YY_RULE_SETUP -#line 404 "util/configlexer.lex" -{ YDVAR(1, VAR_NEG_CACHE_SIZE) } - YY_BREAK -case 191: -YY_RULE_SETUP -#line 405 "util/configlexer.lex" -{ - YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } - YY_BREAK -case 192: -YY_RULE_SETUP -#line 407 "util/configlexer.lex" -{ YDVAR(1, VAR_ZONEMD_PERMISSIVE_MODE) } - YY_BREAK -case 193: -YY_RULE_SETUP -#line 408 "util/configlexer.lex" -{ YDVAR(1, VAR_ZONEMD_REJECT_ABSENCE) } - YY_BREAK -case 194: -YY_RULE_SETUP -#line 409 "util/configlexer.lex" -{ YDVAR(1, VAR_ADD_HOLDDOWN) } - YY_BREAK -case 195: -YY_RULE_SETUP -#line 410 "util/configlexer.lex" -{ YDVAR(1, VAR_DEL_HOLDDOWN) } - YY_BREAK -case 196: -YY_RULE_SETUP -#line 411 "util/configlexer.lex" -{ YDVAR(1, VAR_KEEP_MISSING) } - YY_BREAK -case 197: -YY_RULE_SETUP -#line 412 "util/configlexer.lex" -{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } - YY_BREAK -case 198: -YY_RULE_SETUP -#line 413 "util/configlexer.lex" -{ YDVAR(1, VAR_USE_SYSLOG) } - YY_BREAK -case 199: -YY_RULE_SETUP -#line 414 "util/configlexer.lex" -{ YDVAR(1, VAR_LOG_IDENTITY) } - YY_BREAK -case 200: -YY_RULE_SETUP -#line 415 "util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TIME_ASCII) } - YY_BREAK -case 201: -YY_RULE_SETUP -#line 416 "util/configlexer.lex" -{ YDVAR(1, VAR_LOG_QUERIES) } - YY_BREAK -case 202: -YY_RULE_SETUP -#line 417 "util/configlexer.lex" -{ YDVAR(1, VAR_LOG_REPLIES) } - YY_BREAK -case 203: -YY_RULE_SETUP -#line 418 "util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) } - YY_BREAK -case 204: -YY_RULE_SETUP -#line 419 "util/configlexer.lex" -{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) } - YY_BREAK -case 205: -YY_RULE_SETUP -#line 420 "util/configlexer.lex" -{ YDVAR(1, VAR_LOG_SERVFAIL) } - YY_BREAK -case 206: -YY_RULE_SETUP -#line 421 "util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE) } - YY_BREAK -case 207: -YY_RULE_SETUP -#line 422 "util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA) } - YY_BREAK -case 208: -YY_RULE_SETUP -#line 423 "util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA_PTR) } - YY_BREAK -case 209: -YY_RULE_SETUP -#line 424 "util/configlexer.lex" -{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } - YY_BREAK -case 210: -YY_RULE_SETUP -#line 425 "util/configlexer.lex" -{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } - YY_BREAK -case 211: -YY_RULE_SETUP -#line 426 "util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_INTERVAL) } - YY_BREAK -case 212: -YY_RULE_SETUP -#line 427 "util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } - YY_BREAK -case 213: -YY_RULE_SETUP -#line 428 "util/configlexer.lex" -{ YDVAR(1, VAR_EXTENDED_STATISTICS) } - YY_BREAK -case 214: -YY_RULE_SETUP -#line 429 "util/configlexer.lex" -{ YDVAR(1, VAR_SHM_ENABLE) } - YY_BREAK -case 215: -YY_RULE_SETUP -#line 430 "util/configlexer.lex" -{ YDVAR(1, VAR_SHM_KEY) } - YY_BREAK -case 216: -YY_RULE_SETUP -#line 431 "util/configlexer.lex" -{ YDVAR(0, VAR_REMOTE_CONTROL) } - YY_BREAK -case 217: -YY_RULE_SETUP -#line 432 "util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_ENABLE) } - YY_BREAK -case 218: -YY_RULE_SETUP -#line 433 "util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_INTERFACE) } - YY_BREAK -case 219: -YY_RULE_SETUP -#line 434 "util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_PORT) } - YY_BREAK -case 220: -YY_RULE_SETUP -#line 435 "util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_USE_CERT) } - YY_BREAK -case 221: -YY_RULE_SETUP -#line 436 "util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_KEY_FILE) } - YY_BREAK -case 222: -YY_RULE_SETUP -#line 437 "util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_CERT_FILE) } - YY_BREAK -case 223: -YY_RULE_SETUP -#line 438 "util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_KEY_FILE) } - YY_BREAK -case 224: -YY_RULE_SETUP -#line 439 "util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_CERT_FILE) } - YY_BREAK -case 225: -YY_RULE_SETUP -#line 440 "util/configlexer.lex" -{ YDVAR(1, VAR_PYTHON_SCRIPT) } - YY_BREAK -case 226: -YY_RULE_SETUP -#line 441 "util/configlexer.lex" -{ YDVAR(0, VAR_PYTHON) } - YY_BREAK -case 227: -YY_RULE_SETUP -#line 442 "util/configlexer.lex" -{ YDVAR(1, VAR_DYNLIB_FILE) } - YY_BREAK -case 228: -YY_RULE_SETUP -#line 443 "util/configlexer.lex" -{ YDVAR(0, VAR_DYNLIB) } - YY_BREAK -case 229: -YY_RULE_SETUP -#line 444 "util/configlexer.lex" -{ YDVAR(1, VAR_DOMAIN_INSECURE) } - YY_BREAK -case 230: -YY_RULE_SETUP -#line 445 "util/configlexer.lex" -{ YDVAR(1, VAR_MINIMAL_RESPONSES) } - YY_BREAK -case 231: -YY_RULE_SETUP -#line 446 "util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } - YY_BREAK -case 232: -YY_RULE_SETUP -#line 447 "util/configlexer.lex" -{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } - YY_BREAK -case 233: -YY_RULE_SETUP -#line 448 "util/configlexer.lex" -{ YDVAR(1, VAR_MAX_UDP_SIZE) } - YY_BREAK -case 234: -YY_RULE_SETUP -#line 449 "util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_PREFIX) } - YY_BREAK -case 235: -YY_RULE_SETUP -#line 450 "util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_SYNTHALL) } - YY_BREAK -case 236: -YY_RULE_SETUP -#line 451 "util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } - YY_BREAK -case 237: -YY_RULE_SETUP -#line 452 "util/configlexer.lex" -{ YDVAR(1, VAR_DEFINE_TAG) } - YY_BREAK -case 238: -YY_RULE_SETUP -#line 453 "util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } - YY_BREAK -case 239: -YY_RULE_SETUP -#line 454 "util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } - YY_BREAK -case 240: -YY_RULE_SETUP -#line 455 "util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } - YY_BREAK -case 241: -YY_RULE_SETUP -#line 456 "util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } - YY_BREAK -case 242: -YY_RULE_SETUP -#line 457 "util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } - YY_BREAK -case 243: -YY_RULE_SETUP -#line 458 "util/configlexer.lex" -{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } - YY_BREAK -case 244: -YY_RULE_SETUP -#line 459 "util/configlexer.lex" -{ YDVAR(0, VAR_DNSTAP) } - YY_BREAK -case 245: -YY_RULE_SETUP -#line 460 "util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_ENABLE) } - YY_BREAK -case 246: -YY_RULE_SETUP -#line 461 "util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_BIDIRECTIONAL) } - YY_BREAK -case 247: -YY_RULE_SETUP -#line 462 "util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } - YY_BREAK -case 248: -YY_RULE_SETUP -#line 463 "util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IP) } - YY_BREAK -case 249: -YY_RULE_SETUP -#line 464 "util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS) } - YY_BREAK -case 250: -YY_RULE_SETUP -#line 465 "util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } - YY_BREAK -case 251: -YY_RULE_SETUP -#line 466 "util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } - YY_BREAK -case 252: -YY_RULE_SETUP -#line 467 "util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } - YY_BREAK -case 253: -YY_RULE_SETUP -#line 469 "util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } - YY_BREAK -case 254: -YY_RULE_SETUP -#line 471 "util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } - YY_BREAK -case 255: -YY_RULE_SETUP -#line 472 "util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } - YY_BREAK -case 256: -YY_RULE_SETUP -#line 473 "util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IDENTITY) } - YY_BREAK -case 257: -YY_RULE_SETUP -#line 474 "util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_VERSION) } - YY_BREAK -case 258: -YY_RULE_SETUP -#line 475 "util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } - YY_BREAK -case 259: -YY_RULE_SETUP -#line 477 "util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } - YY_BREAK -case 260: -YY_RULE_SETUP -#line 479 "util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } - YY_BREAK -case 261: -YY_RULE_SETUP -#line 481 "util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } - YY_BREAK -case 262: -YY_RULE_SETUP -#line 483 "util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } - YY_BREAK -case 263: -YY_RULE_SETUP -#line 485 "util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } - YY_BREAK -case 264: -YY_RULE_SETUP -#line 487 "util/configlexer.lex" -{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } - YY_BREAK -case 265: -YY_RULE_SETUP -#line 488 "util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT) } - YY_BREAK -case 266: -YY_RULE_SETUP -#line 489 "util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT) } - YY_BREAK -case 267: -YY_RULE_SETUP -#line 490 "util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } - YY_BREAK -case 268: -YY_RULE_SETUP -#line 491 "util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SLABS) } - YY_BREAK -case 269: -YY_RULE_SETUP -#line 492 "util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } - YY_BREAK -case 270: -YY_RULE_SETUP -#line 493 "util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SIZE) } - YY_BREAK -case 271: -YY_RULE_SETUP -#line 494 "util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } - YY_BREAK -case 272: -YY_RULE_SETUP -#line 495 "util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } - YY_BREAK -case 273: -YY_RULE_SETUP -#line 496 "util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } - YY_BREAK -case 274: -YY_RULE_SETUP -#line 497 "util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_FACTOR) } - YY_BREAK -case 275: -YY_RULE_SETUP -#line 498 "util/configlexer.lex" -{ YDVAR(1, VAR_LOW_RTT) } - YY_BREAK -case 276: -YY_RULE_SETUP -#line 499 "util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_NUM) } - YY_BREAK -case 277: -YY_RULE_SETUP -#line 500 "util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } - YY_BREAK -case 278: -YY_RULE_SETUP -#line 501 "util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } - YY_BREAK -case 279: -YY_RULE_SETUP -#line 502 "util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } - YY_BREAK -case 280: -YY_RULE_SETUP -#line 503 "util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_TAG) } - YY_BREAK -case 281: -YY_RULE_SETUP -#line 504 "util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP) } - YY_BREAK -case 282: -YY_RULE_SETUP -#line 505 "util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_DATA) } - YY_BREAK -case 283: -YY_RULE_SETUP -#line 506 "util/configlexer.lex" -{ YDVAR(0, VAR_DNSCRYPT) } - YY_BREAK -case 284: -YY_RULE_SETUP -#line 507 "util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } - YY_BREAK -case 285: -YY_RULE_SETUP -#line 508 "util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PORT) } - YY_BREAK -case 286: -YY_RULE_SETUP -#line 509 "util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } - YY_BREAK -case 287: -YY_RULE_SETUP -#line 510 "util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } - YY_BREAK -case 288: -YY_RULE_SETUP -#line 511 "util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } - YY_BREAK -case 289: -YY_RULE_SETUP -#line 512 "util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } - YY_BREAK -case 290: -YY_RULE_SETUP -#line 513 "util/configlexer.lex" -{ - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } - YY_BREAK -case 291: -YY_RULE_SETUP -#line 515 "util/configlexer.lex" -{ - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } - YY_BREAK -case 292: -YY_RULE_SETUP -#line 517 "util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } - YY_BREAK -case 293: -YY_RULE_SETUP -#line 518 "util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } - YY_BREAK -case 294: -YY_RULE_SETUP -#line 519 "util/configlexer.lex" -{ YDVAR(1, VAR_PAD_RESPONSES) } - YY_BREAK -case 295: -YY_RULE_SETUP -#line 520 "util/configlexer.lex" -{ YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) } - YY_BREAK -case 296: -YY_RULE_SETUP -#line 521 "util/configlexer.lex" -{ YDVAR(1, VAR_PAD_QUERIES) } - YY_BREAK -case 297: -YY_RULE_SETUP -#line 522 "util/configlexer.lex" -{ YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) } - YY_BREAK -case 298: -YY_RULE_SETUP -#line 523 "util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_ENABLED) } - YY_BREAK -case 299: -YY_RULE_SETUP -#line 524 "util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } - YY_BREAK -case 300: -YY_RULE_SETUP -#line 525 "util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_HOOK) } - YY_BREAK -case 301: -YY_RULE_SETUP -#line 526 "util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } - YY_BREAK -case 302: -YY_RULE_SETUP -#line 527 "util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } - YY_BREAK -case 303: -YY_RULE_SETUP -#line 528 "util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } - YY_BREAK -case 304: -YY_RULE_SETUP -#line 529 "util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_STRICT) } - YY_BREAK -case 305: -YY_RULE_SETUP -#line 530 "util/configlexer.lex" -{ YDVAR(0, VAR_CACHEDB) } - YY_BREAK -case 306: -YY_RULE_SETUP -#line 531 "util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_BACKEND) } - YY_BREAK -case 307: -YY_RULE_SETUP -#line 532 "util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } - YY_BREAK -case 308: -YY_RULE_SETUP -#line 533 "util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISHOST) } - YY_BREAK -case 309: -YY_RULE_SETUP -#line 534 "util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISPORT) } - YY_BREAK -case 310: -YY_RULE_SETUP -#line 535 "util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } - YY_BREAK -case 311: -YY_RULE_SETUP -#line 536 "util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } - YY_BREAK -case 312: -YY_RULE_SETUP -#line 537 "util/configlexer.lex" -{ YDVAR(0, VAR_IPSET) } - YY_BREAK -case 313: -YY_RULE_SETUP -#line 538 "util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V4) } - YY_BREAK -case 314: -YY_RULE_SETUP -#line 539 "util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V6) } - YY_BREAK -case 315: -YY_RULE_SETUP -#line 540 "util/configlexer.lex" -{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } - YY_BREAK -case 316: -YY_RULE_SETUP -#line 541 "util/configlexer.lex" -{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } - YY_BREAK -case 317: -YY_RULE_SETUP -#line 542 "util/configlexer.lex" -{ YDVAR(2, VAR_EDNS_CLIENT_STRING) } - YY_BREAK -case 318: -YY_RULE_SETUP -#line 543 "util/configlexer.lex" -{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) } - YY_BREAK -case 319: -YY_RULE_SETUP -#line 544 "util/configlexer.lex" -{ YDVAR(1, VAR_NSID ) } - YY_BREAK -case 320: -/* rule 320 can match eol */ -YY_RULE_SETUP -#line 545 "util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++; } - YY_BREAK -/* Quoted strings. Strip leading and ending quotes */ -case 321: -YY_RULE_SETUP -#line 548 "util/configlexer.lex" -{ BEGIN(quotedstring); LEXOUT(("QS ")); } - YY_BREAK -case YY_STATE_EOF(quotedstring): -#line 549 "util/configlexer.lex" -{ - yyerror("EOF inside quoted string"); - if(--num_args == 0) { BEGIN(INITIAL); } - else { BEGIN(val); } -} - YY_BREAK -case 322: -YY_RULE_SETUP -#line 554 "util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK -case 323: -/* rule 323 can match eol */ -YY_RULE_SETUP -#line 555 "util/configlexer.lex" -{ yyerror("newline inside quoted string, no end \""); - cfg_parser->line++; BEGIN(INITIAL); } - YY_BREAK -case 324: -YY_RULE_SETUP -#line 557 "util/configlexer.lex" -{ - LEXOUT(("QE ")); - if(--num_args == 0) { BEGIN(INITIAL); } - else { BEGIN(val); } - yytext[yyleng - 1] = '\0'; - yylval.str = strdup(yytext); - if(!yylval.str) - yyerror("out of memory"); - return STRING_ARG; -} - YY_BREAK -/* Single Quoted strings. Strip leading and ending quotes */ -case 325: -YY_RULE_SETUP -#line 569 "util/configlexer.lex" -{ BEGIN(singlequotedstr); LEXOUT(("SQS ")); } - YY_BREAK -case YY_STATE_EOF(singlequotedstr): -#line 570 "util/configlexer.lex" -{ - yyerror("EOF inside quoted string"); - if(--num_args == 0) { BEGIN(INITIAL); } - else { BEGIN(val); } -} - YY_BREAK -case 326: -YY_RULE_SETUP -#line 575 "util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK -case 327: -/* rule 327 can match eol */ -YY_RULE_SETUP -#line 576 "util/configlexer.lex" -{ yyerror("newline inside quoted string, no end '"); - cfg_parser->line++; BEGIN(INITIAL); } - YY_BREAK -case 328: -YY_RULE_SETUP -#line 578 "util/configlexer.lex" -{ - LEXOUT(("SQE ")); - if(--num_args == 0) { BEGIN(INITIAL); } - else { BEGIN(val); } - yytext[yyleng - 1] = '\0'; - yylval.str = strdup(yytext); - if(!yylval.str) - yyerror("out of memory"); - return STRING_ARG; -} - YY_BREAK -/* include: directive */ -case 329: -YY_RULE_SETUP -#line 590 "util/configlexer.lex" -{ - LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } - YY_BREAK -case YY_STATE_EOF(include): -#line 592 "util/configlexer.lex" -{ - yyerror("EOF inside include directive"); - BEGIN(inc_prev); -} - YY_BREAK -case 330: -YY_RULE_SETUP -#line 596 "util/configlexer.lex" -{ LEXOUT(("ISP ")); /* ignore */ } - YY_BREAK -case 331: -/* rule 331 can match eol */ -YY_RULE_SETUP -#line 597 "util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++;} - YY_BREAK -case 332: -YY_RULE_SETUP -#line 598 "util/configlexer.lex" -{ LEXOUT(("IQS ")); BEGIN(include_quoted); } - YY_BREAK -case 333: -YY_RULE_SETUP -#line 599 "util/configlexer.lex" -{ - LEXOUT(("Iunquotedstr(%s) ", yytext)); - config_start_include_glob(yytext, 0); - BEGIN(inc_prev); -} - YY_BREAK -case YY_STATE_EOF(include_quoted): -#line 604 "util/configlexer.lex" -{ - yyerror("EOF inside quoted string"); - BEGIN(inc_prev); -} - YY_BREAK -case 334: -YY_RULE_SETUP -#line 608 "util/configlexer.lex" -{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } - YY_BREAK -case 335: -/* rule 335 can match eol */ -YY_RULE_SETUP -#line 609 "util/configlexer.lex" -{ yyerror("newline before \" in include name"); - cfg_parser->line++; BEGIN(inc_prev); } - YY_BREAK -case 336: -YY_RULE_SETUP -#line 611 "util/configlexer.lex" -{ - LEXOUT(("IQE ")); - yytext[yyleng - 1] = '\0'; - config_start_include_glob(yytext, 0); - BEGIN(inc_prev); -} - YY_BREAK -case YY_STATE_EOF(INITIAL): -case YY_STATE_EOF(val): -#line 617 "util/configlexer.lex" -{ - LEXOUT(("LEXEOF ")); - yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ - if (!config_include_stack) { - yyterminate(); - } else { - int prev_toplevel = inc_toplevel; - fclose(yyin); - config_end_include(); - if(prev_toplevel) return (VAR_FORCE_TOPLEVEL); - } -} - YY_BREAK -/* include-toplevel: directive */ -case 337: -YY_RULE_SETUP -#line 631 "util/configlexer.lex" -{ - LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include_toplevel); -} - YY_BREAK -case YY_STATE_EOF(include_toplevel): -#line 634 "util/configlexer.lex" -{ - yyerror("EOF inside include_toplevel directive"); - BEGIN(inc_prev); -} - YY_BREAK -case 338: -YY_RULE_SETUP -#line 638 "util/configlexer.lex" -{ LEXOUT(("ITSP ")); /* ignore */ } - YY_BREAK -case 339: -/* rule 339 can match eol */ -YY_RULE_SETUP -#line 639 "util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++; } - YY_BREAK -case 340: -YY_RULE_SETUP -#line 640 "util/configlexer.lex" -{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } - YY_BREAK -case 341: -YY_RULE_SETUP -#line 641 "util/configlexer.lex" -{ - LEXOUT(("ITunquotedstr(%s) ", yytext)); - config_start_include_glob(yytext, 1); - BEGIN(inc_prev); - return (VAR_FORCE_TOPLEVEL); -} - YY_BREAK -case YY_STATE_EOF(include_toplevel_quoted): -#line 647 "util/configlexer.lex" -{ - yyerror("EOF inside quoted string"); - BEGIN(inc_prev); -} - YY_BREAK -case 342: -YY_RULE_SETUP -#line 651 "util/configlexer.lex" -{ LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } - YY_BREAK -case 343: -/* rule 343 can match eol */ -YY_RULE_SETUP -#line 652 "util/configlexer.lex" -{ - yyerror("newline before \" in include name"); - cfg_parser->line++; BEGIN(inc_prev); -} - YY_BREAK -case 344: -YY_RULE_SETUP -#line 656 "util/configlexer.lex" -{ - LEXOUT(("ITQE ")); - yytext[yyleng - 1] = '\0'; - config_start_include_glob(yytext, 1); - BEGIN(inc_prev); - return (VAR_FORCE_TOPLEVEL); -} - YY_BREAK -case 345: -YY_RULE_SETUP -#line 664 "util/configlexer.lex" -{ LEXOUT(("unquotedstr(%s) ", yytext)); - if(--num_args == 0) { BEGIN(INITIAL); } - yylval.str = strdup(yytext); return STRING_ARG; } - YY_BREAK -case 346: -YY_RULE_SETUP -#line 668 "util/configlexer.lex" -{ - ub_c_error_msg("unknown keyword '%s'", yytext); - } - YY_BREAK -case 347: -YY_RULE_SETUP -#line 672 "util/configlexer.lex" -{ - ub_c_error_msg("stray '%s'", yytext); - } - YY_BREAK -case 348: -YY_RULE_SETUP -#line 676 "util/configlexer.lex" -ECHO; - YY_BREAK -#line 6121 "" - - case YY_END_OF_BUFFER: - { - /* Amount of text matched not including the EOB char. */ - int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; - - /* Undo the effects of YY_DO_BEFORE_ACTION. */ - *yy_cp = (yy_hold_char); - YY_RESTORE_YY_MORE_OFFSET - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) - { - /* We're scanning a new file or input source. It's - * possible that this happened because the user - * just pointed yyin at a new source and called - * yylex(). If so, then we have to assure - * consistency between YY_CURRENT_BUFFER and our - * globals. Here is the right place to do so, because - * this is the first action (other than possibly a - * back-up) that will match for the new input source. - */ - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; - } - - /* Note that here we test for yy_c_buf_p "<=" to the position - * of the first EOB in the buffer, since yy_c_buf_p will - * already have been incremented past the NUL character - * (since all states make transitions on EOB to the - * end-of-buffer state). Contrast this with the test - * in input(). - */ - if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) - { /* This was really a NUL. */ - yy_state_type yy_next_state; - - (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( ); - - /* Okay, we're now positioned to make the NUL - * transition. We couldn't have - * yy_get_previous_state() go ahead and do it - * for us because it doesn't know how to deal - * with the possibility of jamming (and we don't - * want to build jamming into it because then it - * will run more slowly). - */ - - yy_next_state = yy_try_NUL_trans( yy_current_state ); - - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - - if ( yy_next_state ) - { - /* Consume the NUL. */ - yy_cp = ++(yy_c_buf_p); - yy_current_state = yy_next_state; - goto yy_match; - } - - else - { - yy_cp = (yy_c_buf_p); - goto yy_find_action; - } - } - - else switch ( yy_get_next_buffer( ) ) - { - case EOB_ACT_END_OF_FILE: - { - (yy_did_buffer_switch_on_eof) = 0; - - if ( yywrap( ) ) - { - /* Note: because we've taken care in - * yy_get_next_buffer() to have set up - * yytext, we can now set up - * yy_c_buf_p so that if some total - * hoser (like flex itself) wants to - * call the scanner after we return the - * YY_NULL, it'll still work - another - * YY_NULL will get returned. - */ - (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; - - yy_act = YY_STATE_EOF(YY_START); - goto do_action; - } - - else - { - if ( ! (yy_did_buffer_switch_on_eof) ) - YY_NEW_FILE; - } - break; - } - - case EOB_ACT_CONTINUE_SCAN: - (yy_c_buf_p) = - (yytext_ptr) + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( ); - - yy_cp = (yy_c_buf_p); - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - goto yy_match; - - case EOB_ACT_LAST_MATCH: - (yy_c_buf_p) = - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; - - yy_current_state = yy_get_previous_state( ); - - yy_cp = (yy_c_buf_p); - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - goto yy_find_action; - } - break; - } - - default: - YY_FATAL_ERROR( - "fatal flex scanner internal error--no action found" ); - } /* end of action switch */ - } /* end of scanning one token */ -} /* end of yylex */ - -/* yy_get_next_buffer - try to read in a new buffer - * - * Returns a code representing an action: - * EOB_ACT_LAST_MATCH - - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position - * EOB_ACT_END_OF_FILE - end of file - */ -static int yy_get_next_buffer (void) -{ - register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; - register char *source = (yytext_ptr); - register int number_to_move, i; - int ret_val; - - if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) - YY_FATAL_ERROR( - "fatal flex scanner internal error--end of buffer missed" ); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) - { /* Don't try to fill the buffer, so this is an EOF. */ - if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) - { - /* We matched a single character, the EOB, so - * treat this as a final EOF. - */ - return EOB_ACT_END_OF_FILE; - } - - else - { - /* We matched some text prior to the EOB, first - * process it. - */ - return EOB_ACT_LAST_MATCH; - } - } - - /* Try to read more data. */ - - /* First move last chars to start of buffer. */ - number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; - - for ( i = 0; i < number_to_move; ++i ) - *(dest++) = *(source++); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) - /* don't do the read, it's not guaranteed to return an EOF, - * just force an EOF - */ - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; - - else - { - yy_size_t num_to_read = - YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; - - while ( num_to_read <= 0 ) - { /* Not enough room in the buffer - grow it. */ - - /* just a shorter name for the current buffer */ - YY_BUFFER_STATE b = YY_CURRENT_BUFFER; - - int yy_c_buf_p_offset = - (int) ((yy_c_buf_p) - b->yy_ch_buf); - - if ( b->yy_is_our_buffer ) - { - yy_size_t new_size = b->yy_buf_size * 2; - - if ( new_size <= 0 ) - b->yy_buf_size += b->yy_buf_size / 8; - else - b->yy_buf_size *= 2; - - b->yy_ch_buf = (char *) - /* Include room in for 2 EOB chars. */ - yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); - } - else - /* Can't grow it, we don't own it. */ - b->yy_ch_buf = 0; - - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( - "fatal error - scanner input buffer overflow" ); - - (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; - - num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - - number_to_move - 1; - - } - - if ( num_to_read > YY_READ_BUF_SIZE ) - num_to_read = YY_READ_BUF_SIZE; - - /* Read in more data. */ - YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), - (yy_n_chars), num_to_read ); - - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - if ( (yy_n_chars) == 0 ) - { - if ( number_to_move == YY_MORE_ADJ ) - { - ret_val = EOB_ACT_END_OF_FILE; - yyrestart(yyin ); - } - - else - { - ret_val = EOB_ACT_LAST_MATCH; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = - YY_BUFFER_EOF_PENDING; - } - } - - else - ret_val = EOB_ACT_CONTINUE_SCAN; - - if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { - /* Extend the array by 50%, plus the number we really need. */ - yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); - if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); - } - - (yy_n_chars) += number_to_move; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; - - (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; - - return ret_val; -} - -/* yy_get_previous_state - get the state just before the EOB char was reached */ - - static yy_state_type yy_get_previous_state (void) -{ - register yy_state_type yy_current_state; - register char *yy_cp; - - yy_current_state = (yy_start); - - for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) - { - register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); - if ( yy_accept[yy_current_state] ) - { - (yy_last_accepting_state) = yy_current_state; - (yy_last_accepting_cpos) = yy_cp; - } - 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 >= 3439 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - } - - return yy_current_state; -} - -/* yy_try_NUL_trans - try to make a transition on the NUL character - * - * synopsis - * next_state = yy_try_NUL_trans( current_state ); - */ - static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) -{ - register int yy_is_jam; - register char *yy_cp = (yy_c_buf_p); - - register YY_CHAR yy_c = 1; - if ( yy_accept[yy_current_state] ) - { - (yy_last_accepting_state) = yy_current_state; - (yy_last_accepting_cpos) = yy_cp; - } - 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 >= 3439 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 3438); - - return yy_is_jam ? 0 : yy_current_state; -} - -#ifndef YY_NO_INPUT -#ifdef __cplusplus - static int yyinput (void) -#else - static int input (void) -#endif - -{ - int c; - - *(yy_c_buf_p) = (yy_hold_char); - - if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) - { - /* yy_c_buf_p now points to the character we want to return. - * If this occurs *before* the EOB characters, then it's a - * valid NUL; if not, then we've hit the end of the buffer. - */ - if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) - /* This was really a NUL. */ - *(yy_c_buf_p) = '\0'; - - else - { /* need more input */ - yy_size_t offset = (yy_c_buf_p) - (yytext_ptr); - ++(yy_c_buf_p); - - switch ( yy_get_next_buffer( ) ) - { - case EOB_ACT_LAST_MATCH: - /* This happens because yy_g_n_b() - * sees that we've accumulated a - * token and flags that we need to - * try matching the token before - * proceeding. But for input(), - * there's no matching to consider. - * So convert the EOB_ACT_LAST_MATCH - * to EOB_ACT_END_OF_FILE. - */ - - /* Reset buffer status. */ - yyrestart(yyin ); - - /*FALLTHROUGH*/ - - case EOB_ACT_END_OF_FILE: - { - if ( yywrap( ) ) - return 0; - - if ( ! (yy_did_buffer_switch_on_eof) ) - YY_NEW_FILE; -#ifdef __cplusplus - return yyinput(); -#else - return input(); -#endif - } - - case EOB_ACT_CONTINUE_SCAN: - (yy_c_buf_p) = (yytext_ptr) + offset; - break; - } - } - } - - c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ - *(yy_c_buf_p) = '\0'; /* preserve yytext */ - (yy_hold_char) = *++(yy_c_buf_p); - - return c; -} -#endif /* ifndef YY_NO_INPUT */ - -/** Immediately switch to a different input stream. - * @param input_file A readable stream. - * - * @note This function does not reset the start condition to @c INITIAL . - */ - void yyrestart (FILE * input_file ) -{ - - if ( ! YY_CURRENT_BUFFER ){ - yyensure_buffer_stack (); - YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer(yyin,YY_BUF_SIZE ); - } - - yy_init_buffer(YY_CURRENT_BUFFER,input_file ); - yy_load_buffer_state( ); -} - -/** Switch to a different input buffer. - * @param new_buffer The new input buffer. - * - */ - void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) -{ - - /* TODO. We should be able to replace this entire function body - * with - * yypop_buffer_state(); - * yypush_buffer_state(new_buffer); - */ - yyensure_buffer_stack (); - if ( YY_CURRENT_BUFFER == new_buffer ) - return; - - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *(yy_c_buf_p) = (yy_hold_char); - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - YY_CURRENT_BUFFER_LVALUE = new_buffer; - yy_load_buffer_state( ); - - /* We don't actually know whether we did this switch during - * EOF (yywrap()) processing, but the only time this flag - * is looked at is after yywrap() is called, so it's safe - * to go ahead and always set it. - */ - (yy_did_buffer_switch_on_eof) = 1; -} - -static void yy_load_buffer_state (void) -{ - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; - yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; - (yy_hold_char) = *(yy_c_buf_p); -} - -/** Allocate and initialize an input buffer state. - * @param file A readable stream. - * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. - * - * @return the allocated buffer state. - */ - YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) -{ - YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_buf_size = size; - - /* yy_ch_buf has to be 2 characters longer than the size given because - * we need to put in 2 end-of-buffer characters. - */ - b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 ); - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_is_our_buffer = 1; - - yy_init_buffer(b,file ); - - return b; -} - -/** Destroy the buffer. - * @param b a buffer created with yy_create_buffer() - * - */ - void yy_delete_buffer (YY_BUFFER_STATE b ) -{ - - if ( ! b ) - return; - - if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ - YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; - - if ( b->yy_is_our_buffer ) - yyfree((void *) b->yy_ch_buf ); - - yyfree((void *) b ); -} - -#ifndef __cplusplus -extern int isatty (int ); -#endif /* __cplusplus */ - -/* Initializes or reinitializes a buffer. - * This function is sometimes called more than once on the same buffer, - * such as during a yyrestart() or at EOF. - */ - static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) - -{ - int oerrno = errno; - - yy_flush_buffer(b ); - - b->yy_input_file = file; - b->yy_fill_buffer = 1; - - /* If b is the current buffer, then yy_init_buffer was _probably_ - * called from yyrestart() or through yy_get_next_buffer. - * In that case, we don't want to reset the lineno or column. - */ - if (b != YY_CURRENT_BUFFER){ - b->yy_bs_lineno = 1; - b->yy_bs_column = 0; - } - - b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; - - errno = oerrno; -} - -/** Discard all buffered characters. On the next scan, YY_INPUT will be called. - * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. - * - */ - void yy_flush_buffer (YY_BUFFER_STATE b ) -{ - if ( ! b ) - return; - - b->yy_n_chars = 0; - - /* We always need two end-of-buffer characters. The first causes - * a transition to the end-of-buffer state. The second causes - * a jam in that state. - */ - b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; - b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; - - b->yy_buf_pos = &b->yy_ch_buf[0]; - - b->yy_at_bol = 1; - b->yy_buffer_status = YY_BUFFER_NEW; - - if ( b == YY_CURRENT_BUFFER ) - yy_load_buffer_state( ); -} - -/** Pushes the new state onto the stack. The new state becomes - * the current state. This function will allocate the stack - * if necessary. - * @param new_buffer The new state. - * - */ -void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) -{ - if (new_buffer == NULL) - return; - - yyensure_buffer_stack(); - - /* This block is copied from yy_switch_to_buffer. */ - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *(yy_c_buf_p) = (yy_hold_char); - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - /* Only push if top exists. Otherwise, replace top. */ - if (YY_CURRENT_BUFFER) - (yy_buffer_stack_top)++; - YY_CURRENT_BUFFER_LVALUE = new_buffer; - - /* copied from yy_switch_to_buffer. */ - yy_load_buffer_state( ); - (yy_did_buffer_switch_on_eof) = 1; -} - -/** Removes and deletes the top of the stack, if present. - * The next element becomes the new top. - * - */ -void yypop_buffer_state (void) -{ - if (!YY_CURRENT_BUFFER) - return; - - yy_delete_buffer(YY_CURRENT_BUFFER ); - YY_CURRENT_BUFFER_LVALUE = NULL; - if ((yy_buffer_stack_top) > 0) - --(yy_buffer_stack_top); - - if (YY_CURRENT_BUFFER) { - yy_load_buffer_state( ); - (yy_did_buffer_switch_on_eof) = 1; - } -} - -/* Allocates the stack if it does not exist. - * Guarantees space for at least one push. - */ -static void yyensure_buffer_stack (void) -{ - yy_size_t num_to_alloc; - - if (!(yy_buffer_stack)) { - - /* First allocation is just for 2 elements, since we don't know if this - * scanner will even need a stack. We use 2 instead of 1 to avoid an - * immediate realloc on the next call. - */ - num_to_alloc = 1; - (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc - (num_to_alloc * sizeof(struct yy_buffer_state*) - ); - if ( ! (yy_buffer_stack) ) - YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); - - memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); - - (yy_buffer_stack_max) = num_to_alloc; - (yy_buffer_stack_top) = 0; - return; - } - - if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ - - /* Increase the buffer to prepare for a possible push. */ - int grow_size = 8 /* arbitrary grow size */; - - num_to_alloc = (yy_buffer_stack_max) + grow_size; - (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc - ((yy_buffer_stack), - num_to_alloc * sizeof(struct yy_buffer_state*) - ); - if ( ! (yy_buffer_stack) ) - YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); - - /* zero only the new slots.*/ - memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); - (yy_buffer_stack_max) = num_to_alloc; - } -} - -/** Setup the input buffer state to scan directly from a user-specified character buffer. - * @param base the character buffer - * @param size the size in bytes of the character buffer - * - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) -{ - YY_BUFFER_STATE b; - - if ( size < 2 || - base[size-2] != YY_END_OF_BUFFER_CHAR || - base[size-1] != YY_END_OF_BUFFER_CHAR ) - /* They forgot to leave room for the EOB's. */ - return 0; - - b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); - - b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ - b->yy_buf_pos = b->yy_ch_buf = base; - b->yy_is_our_buffer = 0; - b->yy_input_file = 0; - b->yy_n_chars = b->yy_buf_size; - b->yy_is_interactive = 0; - b->yy_at_bol = 1; - b->yy_fill_buffer = 0; - b->yy_buffer_status = YY_BUFFER_NEW; - - yy_switch_to_buffer(b ); - - return b; -} - -/** Setup the input buffer state to scan a string. The next call to yylex() will - * scan from a @e copy of @a str. - * @param yystr a NUL-terminated string to scan - * - * @return the newly allocated buffer state object. - * @note If you want to scan bytes that may contain NUL values, then use - * yy_scan_bytes() instead. - */ -YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) -{ - - return yy_scan_bytes(yystr,strlen(yystr) ); -} - -/** Setup the input buffer state to scan the given bytes. The next call to yylex() will - * scan from a @e copy of @a bytes. - * @param bytes the byte buffer to scan - * @param len the number of bytes in the buffer pointed to by @a bytes. - * - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len ) -{ - YY_BUFFER_STATE b; - char *buf; - yy_size_t n, i; - - /* Get memory for full buffer, including space for trailing EOB's. */ - n = _yybytes_len + 2; - buf = (char *) yyalloc(n ); - if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); - - for ( i = 0; i < _yybytes_len; ++i ) - buf[i] = yybytes[i]; - - buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; - - b = yy_scan_buffer(buf,n ); - if ( ! b ) - YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); - - /* It's okay to grow etc. this buffer, and we should throw it - * away when we're done. - */ - b->yy_is_our_buffer = 1; - - return b; -} - -#ifndef YY_EXIT_FAILURE -#define YY_EXIT_FAILURE 2 -#endif - -static void yy_fatal_error (yyconst char* msg ) -{ - (void) fprintf( stderr, "%s\n", msg ); - exit( YY_EXIT_FAILURE ); -} - -/* Redefine yyless() so it works in section 3 code. */ - -#undef yyless -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - yytext[yyleng] = (yy_hold_char); \ - (yy_c_buf_p) = yytext + yyless_macro_arg; \ - (yy_hold_char) = *(yy_c_buf_p); \ - *(yy_c_buf_p) = '\0'; \ - yyleng = yyless_macro_arg; \ - } \ - while ( 0 ) - -/* Accessor methods (get/set functions) to struct members. */ - -/** Get the current line number. - * - */ -int yyget_lineno (void) -{ - - return yylineno; -} - -/** Get the input stream. - * - */ -FILE *yyget_in (void) -{ - return yyin; -} - -/** Get the output stream. - * - */ -FILE *yyget_out (void) -{ - return yyout; -} - -/** Get the length of the current token. - * - */ -yy_size_t yyget_leng (void) -{ - return yyleng; -} - -/** Get the current token. - * - */ - -char *yyget_text (void) -{ - return yytext; -} - -/** Set the current line number. - * @param line_number - * - */ -void yyset_lineno (int line_number ) -{ - - yylineno = line_number; -} - -/** Set the input stream. This does not discard the current - * input buffer. - * @param in_str A readable stream. - * - * @see yy_switch_to_buffer - */ -void yyset_in (FILE * in_str ) -{ - yyin = in_str ; -} - -void yyset_out (FILE * out_str ) -{ - yyout = out_str ; -} - -int yyget_debug (void) -{ - return yy_flex_debug; -} - -void yyset_debug (int bdebug ) -{ - yy_flex_debug = bdebug ; -} - -static int yy_init_globals (void) -{ - /* Initialization is the same as for the non-reentrant scanner. - * This function is called from yylex_destroy(), so don't allocate here. - */ - - (yy_buffer_stack) = 0; - (yy_buffer_stack_top) = 0; - (yy_buffer_stack_max) = 0; - (yy_c_buf_p) = (char *) 0; - (yy_init) = 0; - (yy_start) = 0; - -/* Defined in main.c */ -#ifdef YY_STDINIT - yyin = stdin; - yyout = stdout; -#else - yyin = (FILE *) 0; - yyout = (FILE *) 0; -#endif - - /* For future reference: Set errno on error, since we are called by - * yylex_init() - */ - return 0; -} - -/* yylex_destroy is for both reentrant and non-reentrant scanners. */ -int yylex_destroy (void) -{ - - /* Pop the buffer stack, destroying each element. */ - while(YY_CURRENT_BUFFER){ - yy_delete_buffer(YY_CURRENT_BUFFER ); - YY_CURRENT_BUFFER_LVALUE = NULL; - yypop_buffer_state(); - } - - /* Destroy the stack itself. */ - yyfree((yy_buffer_stack) ); - (yy_buffer_stack) = NULL; - - /* Reset the globals. This is important in a non-reentrant scanner so the next time - * yylex() is called, initialization will occur. */ - yy_init_globals( ); - - return 0; -} - -/* - * Internal utility routines. - */ - -#ifndef yytext_ptr -static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) -{ - register int i; - for ( i = 0; i < n; ++i ) - s1[i] = s2[i]; -} -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen (yyconst char * s ) -{ - register int n; - for ( n = 0; s[n]; ++n ) - ; - - return n; -} -#endif - -void *yyalloc (yy_size_t size ) -{ - return (void *) malloc( size ); -} - -void *yyrealloc (void * ptr, yy_size_t size ) -{ - /* The cast to (char *) in the following accommodates both - * implementations that use char* generic pointers, and those - * that use void* generic pointers. It works with the latter - * because both ANSI C and C++ allow castless assignment from - * any pointer type to void*, and deal with argument conversions - * as though doing an assignment. - */ - return (void *) realloc( (char *) ptr, size ); -} - -void yyfree (void * ptr ) -{ - free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ -} - -#define YYTABLES_NAME "yytables" - -#line 676 "util/configlexer.lex" - +#line 676 "./util/configlexer.lex" diff --git a/util/configparser.c b/util/configparser.c index e37e5551b..2b3fcb558 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -1,14 +1,14 @@ -/* A Bison parser, made by GNU Bison 2.3. */ +/* A Bison parser, made by GNU Bison 3.6.4. */ -/* Skeleton implementation for Bison's Yacc-like parsers in C +/* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 - Free Software Foundation, Inc. + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, + Inc. - This program is free software; you can redistribute it and/or modify + 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 2, or (at your option) - any later version. + 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 @@ -16,9 +16,7 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. */ + 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 @@ -36,6 +34,10 @@ /* C LALR(1) parser skeleton written by Richard Stallman, by simplifying the original so-called "semantic" parser. */ +/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, + especially those whose name start with YY_ or yy_. They are + private implementation details that can be changed or removed. */ + /* 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. @@ -47,7 +49,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "2.3" +#define YYBISON_VERSION "3.6.4" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -55,331 +57,407 @@ /* Pure parsers. */ #define YYPURE 0 -/* Using locations. */ -#define YYLSP_NEEDED 0 +/* Push parsers. */ +#define YYPUSH 0 + +/* Pull parsers. */ +#define YYPULL 1 -/* Tokens. */ + +/* First part of user prologue. */ +#line 38 "./util/configparser.y" + +#include "config.h" + +#include +#include +#include +#include +#include + +#include "util/configyyrename.h" +#include "util/config_file.h" +#include "util/net_help.h" + +int ub_c_lex(void); +void ub_c_error(const char *message); + +static void validate_respip_action(const char* action); + +/* these need to be global, otherwise they cannot be used inside yacc */ +extern struct config_parser_state* cfg_parser; + +#if 0 +#define OUTYY(s) printf s /* used ONLY when debugging */ +#else +#define OUTYY(s) +#endif + + +#line 100 "util/configparser.c" + +# ifndef YY_CAST +# ifdef __cplusplus +# define YY_CAST(Type, Val) static_cast (Val) +# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast (Val) +# else +# define YY_CAST(Type, Val) ((Type) (Val)) +# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val)) +# endif +# endif +# 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 + +/* Use api.header.include to #include this header + instead of duplicating it here. */ +#ifndef YY_YY_UTIL_CONFIGPARSER_H_INCLUDED +# define YY_YY_UTIL_CONFIGPARSER_H_INCLUDED +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int yydebug; +#endif + +/* Token kinds. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum yytokentype { - SPACE = 258, - LETTER = 259, - NEWLINE = 260, - COMMENT = 261, - COLON = 262, - ANY = 263, - ZONESTR = 264, - STRING_ARG = 265, - VAR_FORCE_TOPLEVEL = 266, - VAR_SERVER = 267, - VAR_VERBOSITY = 268, - VAR_NUM_THREADS = 269, - VAR_PORT = 270, - VAR_OUTGOING_RANGE = 271, - VAR_INTERFACE = 272, - VAR_PREFER_IP4 = 273, - VAR_DO_IP4 = 274, - VAR_DO_IP6 = 275, - VAR_PREFER_IP6 = 276, - VAR_DO_UDP = 277, - VAR_DO_TCP = 278, - VAR_TCP_MSS = 279, - VAR_OUTGOING_TCP_MSS = 280, - VAR_TCP_IDLE_TIMEOUT = 281, - VAR_EDNS_TCP_KEEPALIVE = 282, - VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 283, - VAR_CHROOT = 284, - VAR_USERNAME = 285, - VAR_DIRECTORY = 286, - VAR_LOGFILE = 287, - VAR_PIDFILE = 288, - VAR_MSG_CACHE_SIZE = 289, - VAR_MSG_CACHE_SLABS = 290, - VAR_NUM_QUERIES_PER_THREAD = 291, - VAR_RRSET_CACHE_SIZE = 292, - VAR_RRSET_CACHE_SLABS = 293, - VAR_OUTGOING_NUM_TCP = 294, - VAR_INFRA_HOST_TTL = 295, - VAR_INFRA_LAME_TTL = 296, - VAR_INFRA_CACHE_SLABS = 297, - VAR_INFRA_CACHE_NUMHOSTS = 298, - VAR_INFRA_CACHE_LAME_SIZE = 299, - VAR_NAME = 300, - VAR_STUB_ZONE = 301, - VAR_STUB_HOST = 302, - VAR_STUB_ADDR = 303, - VAR_TARGET_FETCH_POLICY = 304, - VAR_HARDEN_SHORT_BUFSIZE = 305, - VAR_HARDEN_LARGE_QUERIES = 306, - VAR_FORWARD_ZONE = 307, - VAR_FORWARD_HOST = 308, - VAR_FORWARD_ADDR = 309, - VAR_DO_NOT_QUERY_ADDRESS = 310, - VAR_HIDE_IDENTITY = 311, - VAR_HIDE_VERSION = 312, - VAR_IDENTITY = 313, - VAR_VERSION = 314, - VAR_HARDEN_GLUE = 315, - VAR_MODULE_CONF = 316, - VAR_TRUST_ANCHOR_FILE = 317, - VAR_TRUST_ANCHOR = 318, - VAR_VAL_OVERRIDE_DATE = 319, - VAR_BOGUS_TTL = 320, - VAR_VAL_CLEAN_ADDITIONAL = 321, - VAR_VAL_PERMISSIVE_MODE = 322, - VAR_INCOMING_NUM_TCP = 323, - VAR_MSG_BUFFER_SIZE = 324, - VAR_KEY_CACHE_SIZE = 325, - VAR_KEY_CACHE_SLABS = 326, - VAR_TRUSTED_KEYS_FILE = 327, - VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 328, - VAR_USE_SYSLOG = 329, - VAR_OUTGOING_INTERFACE = 330, - VAR_ROOT_HINTS = 331, - VAR_DO_NOT_QUERY_LOCALHOST = 332, - VAR_CACHE_MAX_TTL = 333, - VAR_HARDEN_DNSSEC_STRIPPED = 334, - VAR_ACCESS_CONTROL = 335, - VAR_LOCAL_ZONE = 336, - VAR_LOCAL_DATA = 337, - VAR_INTERFACE_AUTOMATIC = 338, - VAR_STATISTICS_INTERVAL = 339, - VAR_DO_DAEMONIZE = 340, - VAR_USE_CAPS_FOR_ID = 341, - VAR_STATISTICS_CUMULATIVE = 342, - VAR_OUTGOING_PORT_PERMIT = 343, - VAR_OUTGOING_PORT_AVOID = 344, - VAR_DLV_ANCHOR_FILE = 345, - VAR_DLV_ANCHOR = 346, - VAR_NEG_CACHE_SIZE = 347, - VAR_HARDEN_REFERRAL_PATH = 348, - VAR_PRIVATE_ADDRESS = 349, - VAR_PRIVATE_DOMAIN = 350, - VAR_REMOTE_CONTROL = 351, - VAR_CONTROL_ENABLE = 352, - VAR_CONTROL_INTERFACE = 353, - VAR_CONTROL_PORT = 354, - VAR_SERVER_KEY_FILE = 355, - VAR_SERVER_CERT_FILE = 356, - VAR_CONTROL_KEY_FILE = 357, - VAR_CONTROL_CERT_FILE = 358, - VAR_CONTROL_USE_CERT = 359, - VAR_TCP_REUSE_TIMEOUT = 360, - VAR_MAX_REUSE_TCP_QUERIES = 361, - VAR_EXTENDED_STATISTICS = 362, - VAR_LOCAL_DATA_PTR = 363, - VAR_JOSTLE_TIMEOUT = 364, - VAR_STUB_PRIME = 365, - VAR_UNWANTED_REPLY_THRESHOLD = 366, - VAR_LOG_TIME_ASCII = 367, - VAR_DOMAIN_INSECURE = 368, - VAR_PYTHON = 369, - VAR_PYTHON_SCRIPT = 370, - VAR_VAL_SIG_SKEW_MIN = 371, - VAR_VAL_SIG_SKEW_MAX = 372, - VAR_CACHE_MIN_TTL = 373, - VAR_VAL_LOG_LEVEL = 374, - VAR_AUTO_TRUST_ANCHOR_FILE = 375, - VAR_KEEP_MISSING = 376, - VAR_ADD_HOLDDOWN = 377, - VAR_DEL_HOLDDOWN = 378, - VAR_SO_RCVBUF = 379, - VAR_EDNS_BUFFER_SIZE = 380, - VAR_PREFETCH = 381, - VAR_PREFETCH_KEY = 382, - VAR_SO_SNDBUF = 383, - VAR_SO_REUSEPORT = 384, - VAR_HARDEN_BELOW_NXDOMAIN = 385, - VAR_IGNORE_CD_FLAG = 386, - VAR_LOG_QUERIES = 387, - VAR_LOG_REPLIES = 388, - VAR_LOG_LOCAL_ACTIONS = 389, - VAR_TCP_UPSTREAM = 390, - VAR_SSL_UPSTREAM = 391, - VAR_TCP_AUTH_QUERY_TIMEOUT = 392, - VAR_SSL_SERVICE_KEY = 393, - VAR_SSL_SERVICE_PEM = 394, - VAR_SSL_PORT = 395, - VAR_FORWARD_FIRST = 396, - VAR_STUB_SSL_UPSTREAM = 397, - VAR_FORWARD_SSL_UPSTREAM = 398, - VAR_TLS_CERT_BUNDLE = 399, - VAR_HTTPS_PORT = 400, - VAR_HTTP_ENDPOINT = 401, - VAR_HTTP_MAX_STREAMS = 402, - VAR_HTTP_QUERY_BUFFER_SIZE = 403, - VAR_HTTP_RESPONSE_BUFFER_SIZE = 404, - VAR_HTTP_NODELAY = 405, - VAR_HTTP_NOTLS_DOWNSTREAM = 406, - VAR_STUB_FIRST = 407, - VAR_MINIMAL_RESPONSES = 408, - VAR_RRSET_ROUNDROBIN = 409, - VAR_MAX_UDP_SIZE = 410, - VAR_DELAY_CLOSE = 411, - VAR_UDP_CONNECT = 412, - VAR_UNBLOCK_LAN_ZONES = 413, - VAR_INSECURE_LAN_ZONES = 414, - VAR_INFRA_CACHE_MIN_RTT = 415, - VAR_INFRA_KEEP_PROBING = 416, - VAR_DNS64_PREFIX = 417, - VAR_DNS64_SYNTHALL = 418, - VAR_DNS64_IGNORE_AAAA = 419, - VAR_DNSTAP = 420, - VAR_DNSTAP_ENABLE = 421, - VAR_DNSTAP_SOCKET_PATH = 422, - VAR_DNSTAP_IP = 423, - VAR_DNSTAP_TLS = 424, - VAR_DNSTAP_TLS_SERVER_NAME = 425, - VAR_DNSTAP_TLS_CERT_BUNDLE = 426, - VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 427, - VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 428, - VAR_DNSTAP_SEND_IDENTITY = 429, - VAR_DNSTAP_SEND_VERSION = 430, - VAR_DNSTAP_BIDIRECTIONAL = 431, - VAR_DNSTAP_IDENTITY = 432, - VAR_DNSTAP_VERSION = 433, - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 434, - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 435, - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 436, - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 437, - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 438, - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 439, - VAR_RESPONSE_IP_TAG = 440, - VAR_RESPONSE_IP = 441, - VAR_RESPONSE_IP_DATA = 442, - VAR_HARDEN_ALGO_DOWNGRADE = 443, - VAR_IP_TRANSPARENT = 444, - VAR_IP_DSCP = 445, - VAR_DISABLE_DNSSEC_LAME_CHECK = 446, - VAR_IP_RATELIMIT = 447, - VAR_IP_RATELIMIT_SLABS = 448, - VAR_IP_RATELIMIT_SIZE = 449, - VAR_RATELIMIT = 450, - VAR_RATELIMIT_SLABS = 451, - VAR_RATELIMIT_SIZE = 452, - VAR_RATELIMIT_FOR_DOMAIN = 453, - VAR_RATELIMIT_BELOW_DOMAIN = 454, - VAR_IP_RATELIMIT_FACTOR = 455, - VAR_RATELIMIT_FACTOR = 456, - VAR_SEND_CLIENT_SUBNET = 457, - VAR_CLIENT_SUBNET_ZONE = 458, - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 459, - VAR_CLIENT_SUBNET_OPCODE = 460, - VAR_MAX_CLIENT_SUBNET_IPV4 = 461, - VAR_MAX_CLIENT_SUBNET_IPV6 = 462, - VAR_MIN_CLIENT_SUBNET_IPV4 = 463, - VAR_MIN_CLIENT_SUBNET_IPV6 = 464, - VAR_MAX_ECS_TREE_SIZE_IPV4 = 465, - VAR_MAX_ECS_TREE_SIZE_IPV6 = 466, - VAR_CAPS_WHITELIST = 467, - VAR_CACHE_MAX_NEGATIVE_TTL = 468, - VAR_PERMIT_SMALL_HOLDDOWN = 469, - VAR_QNAME_MINIMISATION = 470, - VAR_QNAME_MINIMISATION_STRICT = 471, - VAR_IP_FREEBIND = 472, - VAR_DEFINE_TAG = 473, - VAR_LOCAL_ZONE_TAG = 474, - VAR_ACCESS_CONTROL_TAG = 475, - VAR_LOCAL_ZONE_OVERRIDE = 476, - VAR_ACCESS_CONTROL_TAG_ACTION = 477, - VAR_ACCESS_CONTROL_TAG_DATA = 478, - VAR_VIEW = 479, - VAR_ACCESS_CONTROL_VIEW = 480, - VAR_VIEW_FIRST = 481, - VAR_SERVE_EXPIRED = 482, - VAR_SERVE_EXPIRED_TTL = 483, - VAR_SERVE_EXPIRED_TTL_RESET = 484, - VAR_SERVE_EXPIRED_REPLY_TTL = 485, - VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 486, - VAR_SERVE_ORIGINAL_TTL = 487, - VAR_FAKE_DSA = 488, - VAR_FAKE_SHA1 = 489, - VAR_LOG_IDENTITY = 490, - VAR_HIDE_TRUSTANCHOR = 491, - VAR_TRUST_ANCHOR_SIGNALING = 492, - VAR_AGGRESSIVE_NSEC = 493, - VAR_USE_SYSTEMD = 494, - VAR_SHM_ENABLE = 495, - VAR_SHM_KEY = 496, - VAR_ROOT_KEY_SENTINEL = 497, - VAR_DNSCRYPT = 498, - VAR_DNSCRYPT_ENABLE = 499, - VAR_DNSCRYPT_PORT = 500, - VAR_DNSCRYPT_PROVIDER = 501, - VAR_DNSCRYPT_SECRET_KEY = 502, - VAR_DNSCRYPT_PROVIDER_CERT = 503, - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 504, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 505, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 506, - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 507, - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 508, - VAR_PAD_RESPONSES = 509, - VAR_PAD_RESPONSES_BLOCK_SIZE = 510, - VAR_PAD_QUERIES = 511, - VAR_PAD_QUERIES_BLOCK_SIZE = 512, - VAR_IPSECMOD_ENABLED = 513, - VAR_IPSECMOD_HOOK = 514, - VAR_IPSECMOD_IGNORE_BOGUS = 515, - VAR_IPSECMOD_MAX_TTL = 516, - VAR_IPSECMOD_WHITELIST = 517, - VAR_IPSECMOD_STRICT = 518, - VAR_CACHEDB = 519, - VAR_CACHEDB_BACKEND = 520, - VAR_CACHEDB_SECRETSEED = 521, - VAR_CACHEDB_REDISHOST = 522, - VAR_CACHEDB_REDISPORT = 523, - VAR_CACHEDB_REDISTIMEOUT = 524, - VAR_CACHEDB_REDISEXPIRERECORDS = 525, - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 526, - VAR_FOR_UPSTREAM = 527, - VAR_AUTH_ZONE = 528, - VAR_ZONEFILE = 529, - VAR_MASTER = 530, - VAR_URL = 531, - VAR_FOR_DOWNSTREAM = 532, - VAR_FALLBACK_ENABLED = 533, - VAR_TLS_ADDITIONAL_PORT = 534, - VAR_LOW_RTT = 535, - VAR_LOW_RTT_PERMIL = 536, - VAR_FAST_SERVER_PERMIL = 537, - VAR_FAST_SERVER_NUM = 538, - VAR_ALLOW_NOTIFY = 539, - VAR_TLS_WIN_CERT = 540, - VAR_TCP_CONNECTION_LIMIT = 541, - VAR_FORWARD_NO_CACHE = 542, - VAR_STUB_NO_CACHE = 543, - VAR_LOG_SERVFAIL = 544, - VAR_DENY_ANY = 545, - VAR_UNKNOWN_SERVER_TIME_LIMIT = 546, - VAR_LOG_TAG_QUERYREPLY = 547, - VAR_STREAM_WAIT_SIZE = 548, - VAR_TLS_CIPHERS = 549, - VAR_TLS_CIPHERSUITES = 550, - VAR_TLS_USE_SNI = 551, - VAR_IPSET = 552, - VAR_IPSET_NAME_V4 = 553, - VAR_IPSET_NAME_V6 = 554, - VAR_TLS_SESSION_TICKET_KEYS = 555, - VAR_RPZ = 556, - VAR_TAGS = 557, - VAR_RPZ_ACTION_OVERRIDE = 558, - VAR_RPZ_CNAME_OVERRIDE = 559, - VAR_RPZ_LOG = 560, - VAR_RPZ_LOG_NAME = 561, - VAR_DYNLIB = 562, - VAR_DYNLIB_FILE = 563, - VAR_EDNS_CLIENT_STRING = 564, - VAR_EDNS_CLIENT_STRING_OPCODE = 565, - VAR_NSID = 566, - VAR_ZONEMD_PERMISSIVE_MODE = 567, - VAR_ZONEMD_REJECT_ABSENCE = 568 - }; + enum yytokentype + { + YYEMPTY = -2, + YYEOF = 0, /* "end of file" */ + YYerror = 256, /* error */ + YYUNDEF = 257, /* "invalid token" */ + SPACE = 258, /* SPACE */ + LETTER = 259, /* LETTER */ + NEWLINE = 260, /* NEWLINE */ + COMMENT = 261, /* COMMENT */ + COLON = 262, /* COLON */ + ANY = 263, /* ANY */ + ZONESTR = 264, /* ZONESTR */ + STRING_ARG = 265, /* STRING_ARG */ + VAR_FORCE_TOPLEVEL = 266, /* VAR_FORCE_TOPLEVEL */ + VAR_SERVER = 267, /* VAR_SERVER */ + VAR_VERBOSITY = 268, /* VAR_VERBOSITY */ + VAR_NUM_THREADS = 269, /* VAR_NUM_THREADS */ + VAR_PORT = 270, /* VAR_PORT */ + VAR_OUTGOING_RANGE = 271, /* VAR_OUTGOING_RANGE */ + VAR_INTERFACE = 272, /* VAR_INTERFACE */ + VAR_PREFER_IP4 = 273, /* VAR_PREFER_IP4 */ + VAR_DO_IP4 = 274, /* VAR_DO_IP4 */ + VAR_DO_IP6 = 275, /* VAR_DO_IP6 */ + VAR_PREFER_IP6 = 276, /* VAR_PREFER_IP6 */ + VAR_DO_UDP = 277, /* VAR_DO_UDP */ + VAR_DO_TCP = 278, /* VAR_DO_TCP */ + VAR_TCP_MSS = 279, /* VAR_TCP_MSS */ + VAR_OUTGOING_TCP_MSS = 280, /* VAR_OUTGOING_TCP_MSS */ + VAR_TCP_IDLE_TIMEOUT = 281, /* VAR_TCP_IDLE_TIMEOUT */ + VAR_EDNS_TCP_KEEPALIVE = 282, /* VAR_EDNS_TCP_KEEPALIVE */ + VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 283, /* VAR_EDNS_TCP_KEEPALIVE_TIMEOUT */ + VAR_CHROOT = 284, /* VAR_CHROOT */ + VAR_USERNAME = 285, /* VAR_USERNAME */ + VAR_DIRECTORY = 286, /* VAR_DIRECTORY */ + VAR_LOGFILE = 287, /* VAR_LOGFILE */ + VAR_PIDFILE = 288, /* VAR_PIDFILE */ + VAR_MSG_CACHE_SIZE = 289, /* VAR_MSG_CACHE_SIZE */ + VAR_MSG_CACHE_SLABS = 290, /* VAR_MSG_CACHE_SLABS */ + VAR_NUM_QUERIES_PER_THREAD = 291, /* VAR_NUM_QUERIES_PER_THREAD */ + VAR_RRSET_CACHE_SIZE = 292, /* VAR_RRSET_CACHE_SIZE */ + VAR_RRSET_CACHE_SLABS = 293, /* VAR_RRSET_CACHE_SLABS */ + VAR_OUTGOING_NUM_TCP = 294, /* VAR_OUTGOING_NUM_TCP */ + VAR_INFRA_HOST_TTL = 295, /* VAR_INFRA_HOST_TTL */ + VAR_INFRA_LAME_TTL = 296, /* VAR_INFRA_LAME_TTL */ + VAR_INFRA_CACHE_SLABS = 297, /* VAR_INFRA_CACHE_SLABS */ + VAR_INFRA_CACHE_NUMHOSTS = 298, /* VAR_INFRA_CACHE_NUMHOSTS */ + VAR_INFRA_CACHE_LAME_SIZE = 299, /* VAR_INFRA_CACHE_LAME_SIZE */ + VAR_NAME = 300, /* VAR_NAME */ + VAR_STUB_ZONE = 301, /* VAR_STUB_ZONE */ + VAR_STUB_HOST = 302, /* VAR_STUB_HOST */ + VAR_STUB_ADDR = 303, /* VAR_STUB_ADDR */ + VAR_TARGET_FETCH_POLICY = 304, /* VAR_TARGET_FETCH_POLICY */ + VAR_HARDEN_SHORT_BUFSIZE = 305, /* VAR_HARDEN_SHORT_BUFSIZE */ + VAR_HARDEN_LARGE_QUERIES = 306, /* VAR_HARDEN_LARGE_QUERIES */ + VAR_FORWARD_ZONE = 307, /* VAR_FORWARD_ZONE */ + VAR_FORWARD_HOST = 308, /* VAR_FORWARD_HOST */ + VAR_FORWARD_ADDR = 309, /* VAR_FORWARD_ADDR */ + VAR_DO_NOT_QUERY_ADDRESS = 310, /* VAR_DO_NOT_QUERY_ADDRESS */ + VAR_HIDE_IDENTITY = 311, /* VAR_HIDE_IDENTITY */ + VAR_HIDE_VERSION = 312, /* VAR_HIDE_VERSION */ + VAR_IDENTITY = 313, /* VAR_IDENTITY */ + VAR_VERSION = 314, /* VAR_VERSION */ + VAR_HARDEN_GLUE = 315, /* VAR_HARDEN_GLUE */ + VAR_MODULE_CONF = 316, /* VAR_MODULE_CONF */ + VAR_TRUST_ANCHOR_FILE = 317, /* VAR_TRUST_ANCHOR_FILE */ + VAR_TRUST_ANCHOR = 318, /* VAR_TRUST_ANCHOR */ + VAR_VAL_OVERRIDE_DATE = 319, /* VAR_VAL_OVERRIDE_DATE */ + VAR_BOGUS_TTL = 320, /* VAR_BOGUS_TTL */ + VAR_VAL_CLEAN_ADDITIONAL = 321, /* VAR_VAL_CLEAN_ADDITIONAL */ + VAR_VAL_PERMISSIVE_MODE = 322, /* VAR_VAL_PERMISSIVE_MODE */ + VAR_INCOMING_NUM_TCP = 323, /* VAR_INCOMING_NUM_TCP */ + VAR_MSG_BUFFER_SIZE = 324, /* VAR_MSG_BUFFER_SIZE */ + VAR_KEY_CACHE_SIZE = 325, /* VAR_KEY_CACHE_SIZE */ + VAR_KEY_CACHE_SLABS = 326, /* VAR_KEY_CACHE_SLABS */ + VAR_TRUSTED_KEYS_FILE = 327, /* VAR_TRUSTED_KEYS_FILE */ + VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 328, /* VAR_VAL_NSEC3_KEYSIZE_ITERATIONS */ + VAR_USE_SYSLOG = 329, /* VAR_USE_SYSLOG */ + VAR_OUTGOING_INTERFACE = 330, /* VAR_OUTGOING_INTERFACE */ + VAR_ROOT_HINTS = 331, /* VAR_ROOT_HINTS */ + VAR_DO_NOT_QUERY_LOCALHOST = 332, /* VAR_DO_NOT_QUERY_LOCALHOST */ + VAR_CACHE_MAX_TTL = 333, /* VAR_CACHE_MAX_TTL */ + VAR_HARDEN_DNSSEC_STRIPPED = 334, /* VAR_HARDEN_DNSSEC_STRIPPED */ + VAR_ACCESS_CONTROL = 335, /* VAR_ACCESS_CONTROL */ + VAR_LOCAL_ZONE = 336, /* VAR_LOCAL_ZONE */ + VAR_LOCAL_DATA = 337, /* VAR_LOCAL_DATA */ + VAR_INTERFACE_AUTOMATIC = 338, /* VAR_INTERFACE_AUTOMATIC */ + VAR_STATISTICS_INTERVAL = 339, /* VAR_STATISTICS_INTERVAL */ + VAR_DO_DAEMONIZE = 340, /* VAR_DO_DAEMONIZE */ + VAR_USE_CAPS_FOR_ID = 341, /* VAR_USE_CAPS_FOR_ID */ + VAR_STATISTICS_CUMULATIVE = 342, /* VAR_STATISTICS_CUMULATIVE */ + VAR_OUTGOING_PORT_PERMIT = 343, /* VAR_OUTGOING_PORT_PERMIT */ + VAR_OUTGOING_PORT_AVOID = 344, /* VAR_OUTGOING_PORT_AVOID */ + VAR_DLV_ANCHOR_FILE = 345, /* VAR_DLV_ANCHOR_FILE */ + VAR_DLV_ANCHOR = 346, /* VAR_DLV_ANCHOR */ + VAR_NEG_CACHE_SIZE = 347, /* VAR_NEG_CACHE_SIZE */ + VAR_HARDEN_REFERRAL_PATH = 348, /* VAR_HARDEN_REFERRAL_PATH */ + VAR_PRIVATE_ADDRESS = 349, /* VAR_PRIVATE_ADDRESS */ + VAR_PRIVATE_DOMAIN = 350, /* VAR_PRIVATE_DOMAIN */ + VAR_REMOTE_CONTROL = 351, /* VAR_REMOTE_CONTROL */ + VAR_CONTROL_ENABLE = 352, /* VAR_CONTROL_ENABLE */ + VAR_CONTROL_INTERFACE = 353, /* VAR_CONTROL_INTERFACE */ + VAR_CONTROL_PORT = 354, /* VAR_CONTROL_PORT */ + VAR_SERVER_KEY_FILE = 355, /* VAR_SERVER_KEY_FILE */ + VAR_SERVER_CERT_FILE = 356, /* VAR_SERVER_CERT_FILE */ + VAR_CONTROL_KEY_FILE = 357, /* VAR_CONTROL_KEY_FILE */ + VAR_CONTROL_CERT_FILE = 358, /* VAR_CONTROL_CERT_FILE */ + VAR_CONTROL_USE_CERT = 359, /* VAR_CONTROL_USE_CERT */ + VAR_TCP_REUSE_TIMEOUT = 360, /* VAR_TCP_REUSE_TIMEOUT */ + VAR_MAX_REUSE_TCP_QUERIES = 361, /* VAR_MAX_REUSE_TCP_QUERIES */ + VAR_EXTENDED_STATISTICS = 362, /* VAR_EXTENDED_STATISTICS */ + VAR_LOCAL_DATA_PTR = 363, /* VAR_LOCAL_DATA_PTR */ + VAR_JOSTLE_TIMEOUT = 364, /* VAR_JOSTLE_TIMEOUT */ + VAR_STUB_PRIME = 365, /* VAR_STUB_PRIME */ + VAR_UNWANTED_REPLY_THRESHOLD = 366, /* VAR_UNWANTED_REPLY_THRESHOLD */ + VAR_LOG_TIME_ASCII = 367, /* VAR_LOG_TIME_ASCII */ + VAR_DOMAIN_INSECURE = 368, /* VAR_DOMAIN_INSECURE */ + VAR_PYTHON = 369, /* VAR_PYTHON */ + VAR_PYTHON_SCRIPT = 370, /* VAR_PYTHON_SCRIPT */ + VAR_VAL_SIG_SKEW_MIN = 371, /* VAR_VAL_SIG_SKEW_MIN */ + VAR_VAL_SIG_SKEW_MAX = 372, /* VAR_VAL_SIG_SKEW_MAX */ + VAR_CACHE_MIN_TTL = 373, /* VAR_CACHE_MIN_TTL */ + VAR_VAL_LOG_LEVEL = 374, /* VAR_VAL_LOG_LEVEL */ + VAR_AUTO_TRUST_ANCHOR_FILE = 375, /* VAR_AUTO_TRUST_ANCHOR_FILE */ + VAR_KEEP_MISSING = 376, /* VAR_KEEP_MISSING */ + VAR_ADD_HOLDDOWN = 377, /* VAR_ADD_HOLDDOWN */ + VAR_DEL_HOLDDOWN = 378, /* VAR_DEL_HOLDDOWN */ + VAR_SO_RCVBUF = 379, /* VAR_SO_RCVBUF */ + VAR_EDNS_BUFFER_SIZE = 380, /* VAR_EDNS_BUFFER_SIZE */ + VAR_PREFETCH = 381, /* VAR_PREFETCH */ + VAR_PREFETCH_KEY = 382, /* VAR_PREFETCH_KEY */ + VAR_SO_SNDBUF = 383, /* VAR_SO_SNDBUF */ + VAR_SO_REUSEPORT = 384, /* VAR_SO_REUSEPORT */ + VAR_HARDEN_BELOW_NXDOMAIN = 385, /* VAR_HARDEN_BELOW_NXDOMAIN */ + VAR_IGNORE_CD_FLAG = 386, /* VAR_IGNORE_CD_FLAG */ + VAR_LOG_QUERIES = 387, /* VAR_LOG_QUERIES */ + VAR_LOG_REPLIES = 388, /* VAR_LOG_REPLIES */ + VAR_LOG_LOCAL_ACTIONS = 389, /* VAR_LOG_LOCAL_ACTIONS */ + VAR_TCP_UPSTREAM = 390, /* VAR_TCP_UPSTREAM */ + VAR_SSL_UPSTREAM = 391, /* VAR_SSL_UPSTREAM */ + VAR_TCP_AUTH_QUERY_TIMEOUT = 392, /* VAR_TCP_AUTH_QUERY_TIMEOUT */ + VAR_SSL_SERVICE_KEY = 393, /* VAR_SSL_SERVICE_KEY */ + VAR_SSL_SERVICE_PEM = 394, /* VAR_SSL_SERVICE_PEM */ + VAR_SSL_PORT = 395, /* VAR_SSL_PORT */ + VAR_FORWARD_FIRST = 396, /* VAR_FORWARD_FIRST */ + VAR_STUB_SSL_UPSTREAM = 397, /* VAR_STUB_SSL_UPSTREAM */ + VAR_FORWARD_SSL_UPSTREAM = 398, /* VAR_FORWARD_SSL_UPSTREAM */ + VAR_TLS_CERT_BUNDLE = 399, /* VAR_TLS_CERT_BUNDLE */ + VAR_HTTPS_PORT = 400, /* VAR_HTTPS_PORT */ + VAR_HTTP_ENDPOINT = 401, /* VAR_HTTP_ENDPOINT */ + VAR_HTTP_MAX_STREAMS = 402, /* VAR_HTTP_MAX_STREAMS */ + VAR_HTTP_QUERY_BUFFER_SIZE = 403, /* VAR_HTTP_QUERY_BUFFER_SIZE */ + VAR_HTTP_RESPONSE_BUFFER_SIZE = 404, /* VAR_HTTP_RESPONSE_BUFFER_SIZE */ + VAR_HTTP_NODELAY = 405, /* VAR_HTTP_NODELAY */ + VAR_HTTP_NOTLS_DOWNSTREAM = 406, /* VAR_HTTP_NOTLS_DOWNSTREAM */ + VAR_STUB_FIRST = 407, /* VAR_STUB_FIRST */ + VAR_MINIMAL_RESPONSES = 408, /* VAR_MINIMAL_RESPONSES */ + VAR_RRSET_ROUNDROBIN = 409, /* VAR_RRSET_ROUNDROBIN */ + VAR_MAX_UDP_SIZE = 410, /* VAR_MAX_UDP_SIZE */ + VAR_DELAY_CLOSE = 411, /* VAR_DELAY_CLOSE */ + VAR_UDP_CONNECT = 412, /* VAR_UDP_CONNECT */ + VAR_UNBLOCK_LAN_ZONES = 413, /* VAR_UNBLOCK_LAN_ZONES */ + VAR_INSECURE_LAN_ZONES = 414, /* VAR_INSECURE_LAN_ZONES */ + VAR_INFRA_CACHE_MIN_RTT = 415, /* VAR_INFRA_CACHE_MIN_RTT */ + VAR_INFRA_KEEP_PROBING = 416, /* VAR_INFRA_KEEP_PROBING */ + VAR_DNS64_PREFIX = 417, /* VAR_DNS64_PREFIX */ + VAR_DNS64_SYNTHALL = 418, /* VAR_DNS64_SYNTHALL */ + VAR_DNS64_IGNORE_AAAA = 419, /* VAR_DNS64_IGNORE_AAAA */ + VAR_DNSTAP = 420, /* VAR_DNSTAP */ + VAR_DNSTAP_ENABLE = 421, /* VAR_DNSTAP_ENABLE */ + VAR_DNSTAP_SOCKET_PATH = 422, /* VAR_DNSTAP_SOCKET_PATH */ + VAR_DNSTAP_IP = 423, /* VAR_DNSTAP_IP */ + VAR_DNSTAP_TLS = 424, /* VAR_DNSTAP_TLS */ + VAR_DNSTAP_TLS_SERVER_NAME = 425, /* VAR_DNSTAP_TLS_SERVER_NAME */ + VAR_DNSTAP_TLS_CERT_BUNDLE = 426, /* VAR_DNSTAP_TLS_CERT_BUNDLE */ + VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 427, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE */ + VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 428, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE */ + VAR_DNSTAP_SEND_IDENTITY = 429, /* VAR_DNSTAP_SEND_IDENTITY */ + VAR_DNSTAP_SEND_VERSION = 430, /* VAR_DNSTAP_SEND_VERSION */ + VAR_DNSTAP_BIDIRECTIONAL = 431, /* VAR_DNSTAP_BIDIRECTIONAL */ + VAR_DNSTAP_IDENTITY = 432, /* VAR_DNSTAP_IDENTITY */ + VAR_DNSTAP_VERSION = 433, /* VAR_DNSTAP_VERSION */ + VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 434, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES */ + VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 435, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES */ + VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 436, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES */ + VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 437, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES */ + VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 438, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES */ + VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 439, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES */ + VAR_RESPONSE_IP_TAG = 440, /* VAR_RESPONSE_IP_TAG */ + VAR_RESPONSE_IP = 441, /* VAR_RESPONSE_IP */ + VAR_RESPONSE_IP_DATA = 442, /* VAR_RESPONSE_IP_DATA */ + VAR_HARDEN_ALGO_DOWNGRADE = 443, /* VAR_HARDEN_ALGO_DOWNGRADE */ + VAR_IP_TRANSPARENT = 444, /* VAR_IP_TRANSPARENT */ + VAR_IP_DSCP = 445, /* VAR_IP_DSCP */ + VAR_DISABLE_DNSSEC_LAME_CHECK = 446, /* VAR_DISABLE_DNSSEC_LAME_CHECK */ + VAR_IP_RATELIMIT = 447, /* VAR_IP_RATELIMIT */ + VAR_IP_RATELIMIT_SLABS = 448, /* VAR_IP_RATELIMIT_SLABS */ + VAR_IP_RATELIMIT_SIZE = 449, /* VAR_IP_RATELIMIT_SIZE */ + VAR_RATELIMIT = 450, /* VAR_RATELIMIT */ + VAR_RATELIMIT_SLABS = 451, /* VAR_RATELIMIT_SLABS */ + VAR_RATELIMIT_SIZE = 452, /* VAR_RATELIMIT_SIZE */ + VAR_RATELIMIT_FOR_DOMAIN = 453, /* VAR_RATELIMIT_FOR_DOMAIN */ + VAR_RATELIMIT_BELOW_DOMAIN = 454, /* VAR_RATELIMIT_BELOW_DOMAIN */ + VAR_IP_RATELIMIT_FACTOR = 455, /* VAR_IP_RATELIMIT_FACTOR */ + VAR_RATELIMIT_FACTOR = 456, /* VAR_RATELIMIT_FACTOR */ + VAR_SEND_CLIENT_SUBNET = 457, /* VAR_SEND_CLIENT_SUBNET */ + VAR_CLIENT_SUBNET_ZONE = 458, /* VAR_CLIENT_SUBNET_ZONE */ + VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 459, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ + VAR_CLIENT_SUBNET_OPCODE = 460, /* VAR_CLIENT_SUBNET_OPCODE */ + VAR_MAX_CLIENT_SUBNET_IPV4 = 461, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ + VAR_MAX_CLIENT_SUBNET_IPV6 = 462, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ + VAR_MIN_CLIENT_SUBNET_IPV4 = 463, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ + VAR_MIN_CLIENT_SUBNET_IPV6 = 464, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ + VAR_MAX_ECS_TREE_SIZE_IPV4 = 465, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ + VAR_MAX_ECS_TREE_SIZE_IPV6 = 466, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ + VAR_CAPS_WHITELIST = 467, /* VAR_CAPS_WHITELIST */ + VAR_CACHE_MAX_NEGATIVE_TTL = 468, /* VAR_CACHE_MAX_NEGATIVE_TTL */ + VAR_PERMIT_SMALL_HOLDDOWN = 469, /* VAR_PERMIT_SMALL_HOLDDOWN */ + VAR_QNAME_MINIMISATION = 470, /* VAR_QNAME_MINIMISATION */ + VAR_QNAME_MINIMISATION_STRICT = 471, /* VAR_QNAME_MINIMISATION_STRICT */ + VAR_IP_FREEBIND = 472, /* VAR_IP_FREEBIND */ + VAR_DEFINE_TAG = 473, /* VAR_DEFINE_TAG */ + VAR_LOCAL_ZONE_TAG = 474, /* VAR_LOCAL_ZONE_TAG */ + VAR_ACCESS_CONTROL_TAG = 475, /* VAR_ACCESS_CONTROL_TAG */ + VAR_LOCAL_ZONE_OVERRIDE = 476, /* VAR_LOCAL_ZONE_OVERRIDE */ + VAR_ACCESS_CONTROL_TAG_ACTION = 477, /* VAR_ACCESS_CONTROL_TAG_ACTION */ + VAR_ACCESS_CONTROL_TAG_DATA = 478, /* VAR_ACCESS_CONTROL_TAG_DATA */ + VAR_VIEW = 479, /* VAR_VIEW */ + VAR_ACCESS_CONTROL_VIEW = 480, /* VAR_ACCESS_CONTROL_VIEW */ + VAR_VIEW_FIRST = 481, /* VAR_VIEW_FIRST */ + VAR_SERVE_EXPIRED = 482, /* VAR_SERVE_EXPIRED */ + VAR_SERVE_EXPIRED_TTL = 483, /* VAR_SERVE_EXPIRED_TTL */ + VAR_SERVE_EXPIRED_TTL_RESET = 484, /* VAR_SERVE_EXPIRED_TTL_RESET */ + VAR_SERVE_EXPIRED_REPLY_TTL = 485, /* VAR_SERVE_EXPIRED_REPLY_TTL */ + VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 486, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ + VAR_SERVE_ORIGINAL_TTL = 487, /* VAR_SERVE_ORIGINAL_TTL */ + VAR_FAKE_DSA = 488, /* VAR_FAKE_DSA */ + VAR_FAKE_SHA1 = 489, /* VAR_FAKE_SHA1 */ + VAR_LOG_IDENTITY = 490, /* VAR_LOG_IDENTITY */ + VAR_HIDE_TRUSTANCHOR = 491, /* VAR_HIDE_TRUSTANCHOR */ + VAR_TRUST_ANCHOR_SIGNALING = 492, /* VAR_TRUST_ANCHOR_SIGNALING */ + VAR_AGGRESSIVE_NSEC = 493, /* VAR_AGGRESSIVE_NSEC */ + VAR_USE_SYSTEMD = 494, /* VAR_USE_SYSTEMD */ + VAR_SHM_ENABLE = 495, /* VAR_SHM_ENABLE */ + VAR_SHM_KEY = 496, /* VAR_SHM_KEY */ + VAR_ROOT_KEY_SENTINEL = 497, /* VAR_ROOT_KEY_SENTINEL */ + VAR_DNSCRYPT = 498, /* VAR_DNSCRYPT */ + VAR_DNSCRYPT_ENABLE = 499, /* VAR_DNSCRYPT_ENABLE */ + VAR_DNSCRYPT_PORT = 500, /* VAR_DNSCRYPT_PORT */ + VAR_DNSCRYPT_PROVIDER = 501, /* VAR_DNSCRYPT_PROVIDER */ + VAR_DNSCRYPT_SECRET_KEY = 502, /* VAR_DNSCRYPT_SECRET_KEY */ + VAR_DNSCRYPT_PROVIDER_CERT = 503, /* VAR_DNSCRYPT_PROVIDER_CERT */ + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 504, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 505, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 506, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 507, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 508, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ + VAR_PAD_RESPONSES = 509, /* VAR_PAD_RESPONSES */ + VAR_PAD_RESPONSES_BLOCK_SIZE = 510, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ + VAR_PAD_QUERIES = 511, /* VAR_PAD_QUERIES */ + VAR_PAD_QUERIES_BLOCK_SIZE = 512, /* VAR_PAD_QUERIES_BLOCK_SIZE */ + VAR_IPSECMOD_ENABLED = 513, /* VAR_IPSECMOD_ENABLED */ + VAR_IPSECMOD_HOOK = 514, /* VAR_IPSECMOD_HOOK */ + VAR_IPSECMOD_IGNORE_BOGUS = 515, /* VAR_IPSECMOD_IGNORE_BOGUS */ + VAR_IPSECMOD_MAX_TTL = 516, /* VAR_IPSECMOD_MAX_TTL */ + VAR_IPSECMOD_WHITELIST = 517, /* VAR_IPSECMOD_WHITELIST */ + VAR_IPSECMOD_STRICT = 518, /* VAR_IPSECMOD_STRICT */ + VAR_CACHEDB = 519, /* VAR_CACHEDB */ + VAR_CACHEDB_BACKEND = 520, /* VAR_CACHEDB_BACKEND */ + VAR_CACHEDB_SECRETSEED = 521, /* VAR_CACHEDB_SECRETSEED */ + VAR_CACHEDB_REDISHOST = 522, /* VAR_CACHEDB_REDISHOST */ + VAR_CACHEDB_REDISPORT = 523, /* VAR_CACHEDB_REDISPORT */ + VAR_CACHEDB_REDISTIMEOUT = 524, /* VAR_CACHEDB_REDISTIMEOUT */ + VAR_CACHEDB_REDISEXPIRERECORDS = 525, /* VAR_CACHEDB_REDISEXPIRERECORDS */ + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 526, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ + VAR_FOR_UPSTREAM = 527, /* VAR_FOR_UPSTREAM */ + VAR_AUTH_ZONE = 528, /* VAR_AUTH_ZONE */ + VAR_ZONEFILE = 529, /* VAR_ZONEFILE */ + VAR_MASTER = 530, /* VAR_MASTER */ + VAR_URL = 531, /* VAR_URL */ + VAR_FOR_DOWNSTREAM = 532, /* VAR_FOR_DOWNSTREAM */ + VAR_FALLBACK_ENABLED = 533, /* VAR_FALLBACK_ENABLED */ + VAR_TLS_ADDITIONAL_PORT = 534, /* VAR_TLS_ADDITIONAL_PORT */ + VAR_LOW_RTT = 535, /* VAR_LOW_RTT */ + VAR_LOW_RTT_PERMIL = 536, /* VAR_LOW_RTT_PERMIL */ + VAR_FAST_SERVER_PERMIL = 537, /* VAR_FAST_SERVER_PERMIL */ + VAR_FAST_SERVER_NUM = 538, /* VAR_FAST_SERVER_NUM */ + VAR_ALLOW_NOTIFY = 539, /* VAR_ALLOW_NOTIFY */ + VAR_TLS_WIN_CERT = 540, /* VAR_TLS_WIN_CERT */ + VAR_TCP_CONNECTION_LIMIT = 541, /* VAR_TCP_CONNECTION_LIMIT */ + VAR_FORWARD_NO_CACHE = 542, /* VAR_FORWARD_NO_CACHE */ + VAR_STUB_NO_CACHE = 543, /* VAR_STUB_NO_CACHE */ + VAR_LOG_SERVFAIL = 544, /* VAR_LOG_SERVFAIL */ + VAR_DENY_ANY = 545, /* VAR_DENY_ANY */ + VAR_UNKNOWN_SERVER_TIME_LIMIT = 546, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ + VAR_LOG_TAG_QUERYREPLY = 547, /* VAR_LOG_TAG_QUERYREPLY */ + VAR_STREAM_WAIT_SIZE = 548, /* VAR_STREAM_WAIT_SIZE */ + VAR_TLS_CIPHERS = 549, /* VAR_TLS_CIPHERS */ + VAR_TLS_CIPHERSUITES = 550, /* VAR_TLS_CIPHERSUITES */ + VAR_TLS_USE_SNI = 551, /* VAR_TLS_USE_SNI */ + VAR_IPSET = 552, /* VAR_IPSET */ + VAR_IPSET_NAME_V4 = 553, /* VAR_IPSET_NAME_V4 */ + VAR_IPSET_NAME_V6 = 554, /* VAR_IPSET_NAME_V6 */ + VAR_TLS_SESSION_TICKET_KEYS = 555, /* VAR_TLS_SESSION_TICKET_KEYS */ + VAR_RPZ = 556, /* VAR_RPZ */ + VAR_TAGS = 557, /* VAR_TAGS */ + VAR_RPZ_ACTION_OVERRIDE = 558, /* VAR_RPZ_ACTION_OVERRIDE */ + VAR_RPZ_CNAME_OVERRIDE = 559, /* VAR_RPZ_CNAME_OVERRIDE */ + VAR_RPZ_LOG = 560, /* VAR_RPZ_LOG */ + VAR_RPZ_LOG_NAME = 561, /* VAR_RPZ_LOG_NAME */ + VAR_DYNLIB = 562, /* VAR_DYNLIB */ + VAR_DYNLIB_FILE = 563, /* VAR_DYNLIB_FILE */ + VAR_EDNS_CLIENT_STRING = 564, /* VAR_EDNS_CLIENT_STRING */ + VAR_EDNS_CLIENT_STRING_OPCODE = 565, /* VAR_EDNS_CLIENT_STRING_OPCODE */ + VAR_NSID = 566, /* VAR_NSID */ + VAR_ZONEMD_PERMISSIVE_MODE = 567, /* VAR_ZONEMD_PERMISSIVE_MODE */ + VAR_ZONEMD_REJECT_ABSENCE = 568 /* VAR_ZONEMD_REJECT_ABSENCE */ + }; + typedef enum yytokentype yytoken_kind_t; #endif -/* Tokens. */ +/* Token kinds. */ +#define YYEOF 0 +#define YYerror 256 +#define YYUNDEF 257 #define SPACE 258 #define LETTER 259 #define NEWLINE 260 @@ -692,109 +770,764 @@ #define VAR_ZONEMD_PERMISSIVE_MODE 567 #define VAR_ZONEMD_REJECT_ABSENCE 568 - - - -/* Copy the first part of user declarations. */ -#line 38 "util/configparser.y" - -#include "config.h" - -#include -#include -#include -#include -#include - -#include "util/configyyrename.h" -#include "util/config_file.h" -#include "util/net_help.h" - -int ub_c_lex(void); -void ub_c_error(const char *message); - -static void validate_respip_action(const char* action); - -/* these need to be global, otherwise they cannot be used inside yacc */ -extern struct config_parser_state* cfg_parser; - -#if 0 -#define OUTYY(s) printf s /* used ONLY when debugging */ -#else -#define OUTYY(s) -#endif - - - -/* Enabling traces. */ -#ifndef YYDEBUG -# define YYDEBUG 0 -#endif - -/* Enabling verbose error messages. */ -#ifdef YYERROR_VERBOSE -# undef YYERROR_VERBOSE -# define YYERROR_VERBOSE 1 -#else -# define YYERROR_VERBOSE 0 -#endif - -/* Enabling the token table. */ -#ifndef YYTOKEN_TABLE -# define YYTOKEN_TABLE 0 -#endif - +/* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -typedef union YYSTYPE -#line 66 "util/configparser.y" +union YYSTYPE { +#line 66 "./util/configparser.y" + char* str; -} -/* Line 193 of yacc.c. */ -#line 755 "util/configparser.c" - YYSTYPE; -# define yystype YYSTYPE /* obsolescent; will be withdrawn */ -# define YYSTYPE_IS_DECLARED 1 + +#line 782 "util/configparser.c" + +}; +typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 +# define YYSTYPE_IS_DECLARED 1 #endif +extern YYSTYPE yylval; + +int yyparse (void); + +#endif /* !YY_YY_UTIL_CONFIGPARSER_H_INCLUDED */ +/* Symbol kind. */ +enum yysymbol_kind_t +{ + YYSYMBOL_YYEMPTY = -2, + YYSYMBOL_YYEOF = 0, /* "end of file" */ + YYSYMBOL_YYerror = 1, /* error */ + YYSYMBOL_YYUNDEF = 2, /* "invalid token" */ + YYSYMBOL_SPACE = 3, /* SPACE */ + YYSYMBOL_LETTER = 4, /* LETTER */ + YYSYMBOL_NEWLINE = 5, /* NEWLINE */ + YYSYMBOL_COMMENT = 6, /* COMMENT */ + YYSYMBOL_COLON = 7, /* COLON */ + YYSYMBOL_ANY = 8, /* ANY */ + YYSYMBOL_ZONESTR = 9, /* ZONESTR */ + YYSYMBOL_STRING_ARG = 10, /* STRING_ARG */ + YYSYMBOL_VAR_FORCE_TOPLEVEL = 11, /* VAR_FORCE_TOPLEVEL */ + YYSYMBOL_VAR_SERVER = 12, /* VAR_SERVER */ + YYSYMBOL_VAR_VERBOSITY = 13, /* VAR_VERBOSITY */ + YYSYMBOL_VAR_NUM_THREADS = 14, /* VAR_NUM_THREADS */ + YYSYMBOL_VAR_PORT = 15, /* VAR_PORT */ + YYSYMBOL_VAR_OUTGOING_RANGE = 16, /* VAR_OUTGOING_RANGE */ + YYSYMBOL_VAR_INTERFACE = 17, /* VAR_INTERFACE */ + YYSYMBOL_VAR_PREFER_IP4 = 18, /* VAR_PREFER_IP4 */ + YYSYMBOL_VAR_DO_IP4 = 19, /* VAR_DO_IP4 */ + YYSYMBOL_VAR_DO_IP6 = 20, /* VAR_DO_IP6 */ + YYSYMBOL_VAR_PREFER_IP6 = 21, /* VAR_PREFER_IP6 */ + YYSYMBOL_VAR_DO_UDP = 22, /* VAR_DO_UDP */ + YYSYMBOL_VAR_DO_TCP = 23, /* VAR_DO_TCP */ + YYSYMBOL_VAR_TCP_MSS = 24, /* VAR_TCP_MSS */ + YYSYMBOL_VAR_OUTGOING_TCP_MSS = 25, /* VAR_OUTGOING_TCP_MSS */ + YYSYMBOL_VAR_TCP_IDLE_TIMEOUT = 26, /* VAR_TCP_IDLE_TIMEOUT */ + YYSYMBOL_VAR_EDNS_TCP_KEEPALIVE = 27, /* VAR_EDNS_TCP_KEEPALIVE */ + YYSYMBOL_VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 28, /* VAR_EDNS_TCP_KEEPALIVE_TIMEOUT */ + YYSYMBOL_VAR_CHROOT = 29, /* VAR_CHROOT */ + YYSYMBOL_VAR_USERNAME = 30, /* VAR_USERNAME */ + YYSYMBOL_VAR_DIRECTORY = 31, /* VAR_DIRECTORY */ + YYSYMBOL_VAR_LOGFILE = 32, /* VAR_LOGFILE */ + YYSYMBOL_VAR_PIDFILE = 33, /* VAR_PIDFILE */ + YYSYMBOL_VAR_MSG_CACHE_SIZE = 34, /* VAR_MSG_CACHE_SIZE */ + YYSYMBOL_VAR_MSG_CACHE_SLABS = 35, /* VAR_MSG_CACHE_SLABS */ + YYSYMBOL_VAR_NUM_QUERIES_PER_THREAD = 36, /* VAR_NUM_QUERIES_PER_THREAD */ + YYSYMBOL_VAR_RRSET_CACHE_SIZE = 37, /* VAR_RRSET_CACHE_SIZE */ + YYSYMBOL_VAR_RRSET_CACHE_SLABS = 38, /* VAR_RRSET_CACHE_SLABS */ + YYSYMBOL_VAR_OUTGOING_NUM_TCP = 39, /* VAR_OUTGOING_NUM_TCP */ + YYSYMBOL_VAR_INFRA_HOST_TTL = 40, /* VAR_INFRA_HOST_TTL */ + YYSYMBOL_VAR_INFRA_LAME_TTL = 41, /* VAR_INFRA_LAME_TTL */ + YYSYMBOL_VAR_INFRA_CACHE_SLABS = 42, /* VAR_INFRA_CACHE_SLABS */ + YYSYMBOL_VAR_INFRA_CACHE_NUMHOSTS = 43, /* VAR_INFRA_CACHE_NUMHOSTS */ + YYSYMBOL_VAR_INFRA_CACHE_LAME_SIZE = 44, /* VAR_INFRA_CACHE_LAME_SIZE */ + YYSYMBOL_VAR_NAME = 45, /* VAR_NAME */ + YYSYMBOL_VAR_STUB_ZONE = 46, /* VAR_STUB_ZONE */ + YYSYMBOL_VAR_STUB_HOST = 47, /* VAR_STUB_HOST */ + YYSYMBOL_VAR_STUB_ADDR = 48, /* VAR_STUB_ADDR */ + YYSYMBOL_VAR_TARGET_FETCH_POLICY = 49, /* VAR_TARGET_FETCH_POLICY */ + YYSYMBOL_VAR_HARDEN_SHORT_BUFSIZE = 50, /* VAR_HARDEN_SHORT_BUFSIZE */ + YYSYMBOL_VAR_HARDEN_LARGE_QUERIES = 51, /* VAR_HARDEN_LARGE_QUERIES */ + YYSYMBOL_VAR_FORWARD_ZONE = 52, /* VAR_FORWARD_ZONE */ + YYSYMBOL_VAR_FORWARD_HOST = 53, /* VAR_FORWARD_HOST */ + YYSYMBOL_VAR_FORWARD_ADDR = 54, /* VAR_FORWARD_ADDR */ + YYSYMBOL_VAR_DO_NOT_QUERY_ADDRESS = 55, /* VAR_DO_NOT_QUERY_ADDRESS */ + YYSYMBOL_VAR_HIDE_IDENTITY = 56, /* VAR_HIDE_IDENTITY */ + YYSYMBOL_VAR_HIDE_VERSION = 57, /* VAR_HIDE_VERSION */ + YYSYMBOL_VAR_IDENTITY = 58, /* VAR_IDENTITY */ + YYSYMBOL_VAR_VERSION = 59, /* VAR_VERSION */ + YYSYMBOL_VAR_HARDEN_GLUE = 60, /* VAR_HARDEN_GLUE */ + YYSYMBOL_VAR_MODULE_CONF = 61, /* VAR_MODULE_CONF */ + YYSYMBOL_VAR_TRUST_ANCHOR_FILE = 62, /* VAR_TRUST_ANCHOR_FILE */ + YYSYMBOL_VAR_TRUST_ANCHOR = 63, /* VAR_TRUST_ANCHOR */ + YYSYMBOL_VAR_VAL_OVERRIDE_DATE = 64, /* VAR_VAL_OVERRIDE_DATE */ + YYSYMBOL_VAR_BOGUS_TTL = 65, /* VAR_BOGUS_TTL */ + YYSYMBOL_VAR_VAL_CLEAN_ADDITIONAL = 66, /* VAR_VAL_CLEAN_ADDITIONAL */ + YYSYMBOL_VAR_VAL_PERMISSIVE_MODE = 67, /* VAR_VAL_PERMISSIVE_MODE */ + YYSYMBOL_VAR_INCOMING_NUM_TCP = 68, /* VAR_INCOMING_NUM_TCP */ + YYSYMBOL_VAR_MSG_BUFFER_SIZE = 69, /* VAR_MSG_BUFFER_SIZE */ + YYSYMBOL_VAR_KEY_CACHE_SIZE = 70, /* VAR_KEY_CACHE_SIZE */ + YYSYMBOL_VAR_KEY_CACHE_SLABS = 71, /* VAR_KEY_CACHE_SLABS */ + YYSYMBOL_VAR_TRUSTED_KEYS_FILE = 72, /* VAR_TRUSTED_KEYS_FILE */ + YYSYMBOL_VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 73, /* VAR_VAL_NSEC3_KEYSIZE_ITERATIONS */ + YYSYMBOL_VAR_USE_SYSLOG = 74, /* VAR_USE_SYSLOG */ + YYSYMBOL_VAR_OUTGOING_INTERFACE = 75, /* VAR_OUTGOING_INTERFACE */ + YYSYMBOL_VAR_ROOT_HINTS = 76, /* VAR_ROOT_HINTS */ + YYSYMBOL_VAR_DO_NOT_QUERY_LOCALHOST = 77, /* VAR_DO_NOT_QUERY_LOCALHOST */ + YYSYMBOL_VAR_CACHE_MAX_TTL = 78, /* VAR_CACHE_MAX_TTL */ + YYSYMBOL_VAR_HARDEN_DNSSEC_STRIPPED = 79, /* VAR_HARDEN_DNSSEC_STRIPPED */ + YYSYMBOL_VAR_ACCESS_CONTROL = 80, /* VAR_ACCESS_CONTROL */ + YYSYMBOL_VAR_LOCAL_ZONE = 81, /* VAR_LOCAL_ZONE */ + YYSYMBOL_VAR_LOCAL_DATA = 82, /* VAR_LOCAL_DATA */ + YYSYMBOL_VAR_INTERFACE_AUTOMATIC = 83, /* VAR_INTERFACE_AUTOMATIC */ + YYSYMBOL_VAR_STATISTICS_INTERVAL = 84, /* VAR_STATISTICS_INTERVAL */ + YYSYMBOL_VAR_DO_DAEMONIZE = 85, /* VAR_DO_DAEMONIZE */ + YYSYMBOL_VAR_USE_CAPS_FOR_ID = 86, /* VAR_USE_CAPS_FOR_ID */ + YYSYMBOL_VAR_STATISTICS_CUMULATIVE = 87, /* VAR_STATISTICS_CUMULATIVE */ + YYSYMBOL_VAR_OUTGOING_PORT_PERMIT = 88, /* VAR_OUTGOING_PORT_PERMIT */ + YYSYMBOL_VAR_OUTGOING_PORT_AVOID = 89, /* VAR_OUTGOING_PORT_AVOID */ + YYSYMBOL_VAR_DLV_ANCHOR_FILE = 90, /* VAR_DLV_ANCHOR_FILE */ + YYSYMBOL_VAR_DLV_ANCHOR = 91, /* VAR_DLV_ANCHOR */ + YYSYMBOL_VAR_NEG_CACHE_SIZE = 92, /* VAR_NEG_CACHE_SIZE */ + YYSYMBOL_VAR_HARDEN_REFERRAL_PATH = 93, /* VAR_HARDEN_REFERRAL_PATH */ + YYSYMBOL_VAR_PRIVATE_ADDRESS = 94, /* VAR_PRIVATE_ADDRESS */ + YYSYMBOL_VAR_PRIVATE_DOMAIN = 95, /* VAR_PRIVATE_DOMAIN */ + YYSYMBOL_VAR_REMOTE_CONTROL = 96, /* VAR_REMOTE_CONTROL */ + YYSYMBOL_VAR_CONTROL_ENABLE = 97, /* VAR_CONTROL_ENABLE */ + YYSYMBOL_VAR_CONTROL_INTERFACE = 98, /* VAR_CONTROL_INTERFACE */ + YYSYMBOL_VAR_CONTROL_PORT = 99, /* VAR_CONTROL_PORT */ + YYSYMBOL_VAR_SERVER_KEY_FILE = 100, /* VAR_SERVER_KEY_FILE */ + YYSYMBOL_VAR_SERVER_CERT_FILE = 101, /* VAR_SERVER_CERT_FILE */ + YYSYMBOL_VAR_CONTROL_KEY_FILE = 102, /* VAR_CONTROL_KEY_FILE */ + YYSYMBOL_VAR_CONTROL_CERT_FILE = 103, /* VAR_CONTROL_CERT_FILE */ + YYSYMBOL_VAR_CONTROL_USE_CERT = 104, /* VAR_CONTROL_USE_CERT */ + YYSYMBOL_VAR_TCP_REUSE_TIMEOUT = 105, /* VAR_TCP_REUSE_TIMEOUT */ + YYSYMBOL_VAR_MAX_REUSE_TCP_QUERIES = 106, /* VAR_MAX_REUSE_TCP_QUERIES */ + YYSYMBOL_VAR_EXTENDED_STATISTICS = 107, /* VAR_EXTENDED_STATISTICS */ + YYSYMBOL_VAR_LOCAL_DATA_PTR = 108, /* VAR_LOCAL_DATA_PTR */ + YYSYMBOL_VAR_JOSTLE_TIMEOUT = 109, /* VAR_JOSTLE_TIMEOUT */ + YYSYMBOL_VAR_STUB_PRIME = 110, /* VAR_STUB_PRIME */ + YYSYMBOL_VAR_UNWANTED_REPLY_THRESHOLD = 111, /* VAR_UNWANTED_REPLY_THRESHOLD */ + YYSYMBOL_VAR_LOG_TIME_ASCII = 112, /* VAR_LOG_TIME_ASCII */ + YYSYMBOL_VAR_DOMAIN_INSECURE = 113, /* VAR_DOMAIN_INSECURE */ + YYSYMBOL_VAR_PYTHON = 114, /* VAR_PYTHON */ + YYSYMBOL_VAR_PYTHON_SCRIPT = 115, /* VAR_PYTHON_SCRIPT */ + YYSYMBOL_VAR_VAL_SIG_SKEW_MIN = 116, /* VAR_VAL_SIG_SKEW_MIN */ + YYSYMBOL_VAR_VAL_SIG_SKEW_MAX = 117, /* VAR_VAL_SIG_SKEW_MAX */ + YYSYMBOL_VAR_CACHE_MIN_TTL = 118, /* VAR_CACHE_MIN_TTL */ + YYSYMBOL_VAR_VAL_LOG_LEVEL = 119, /* VAR_VAL_LOG_LEVEL */ + YYSYMBOL_VAR_AUTO_TRUST_ANCHOR_FILE = 120, /* VAR_AUTO_TRUST_ANCHOR_FILE */ + YYSYMBOL_VAR_KEEP_MISSING = 121, /* VAR_KEEP_MISSING */ + YYSYMBOL_VAR_ADD_HOLDDOWN = 122, /* VAR_ADD_HOLDDOWN */ + YYSYMBOL_VAR_DEL_HOLDDOWN = 123, /* VAR_DEL_HOLDDOWN */ + YYSYMBOL_VAR_SO_RCVBUF = 124, /* VAR_SO_RCVBUF */ + YYSYMBOL_VAR_EDNS_BUFFER_SIZE = 125, /* VAR_EDNS_BUFFER_SIZE */ + YYSYMBOL_VAR_PREFETCH = 126, /* VAR_PREFETCH */ + YYSYMBOL_VAR_PREFETCH_KEY = 127, /* VAR_PREFETCH_KEY */ + YYSYMBOL_VAR_SO_SNDBUF = 128, /* VAR_SO_SNDBUF */ + YYSYMBOL_VAR_SO_REUSEPORT = 129, /* VAR_SO_REUSEPORT */ + YYSYMBOL_VAR_HARDEN_BELOW_NXDOMAIN = 130, /* VAR_HARDEN_BELOW_NXDOMAIN */ + YYSYMBOL_VAR_IGNORE_CD_FLAG = 131, /* VAR_IGNORE_CD_FLAG */ + YYSYMBOL_VAR_LOG_QUERIES = 132, /* VAR_LOG_QUERIES */ + YYSYMBOL_VAR_LOG_REPLIES = 133, /* VAR_LOG_REPLIES */ + YYSYMBOL_VAR_LOG_LOCAL_ACTIONS = 134, /* VAR_LOG_LOCAL_ACTIONS */ + YYSYMBOL_VAR_TCP_UPSTREAM = 135, /* VAR_TCP_UPSTREAM */ + YYSYMBOL_VAR_SSL_UPSTREAM = 136, /* VAR_SSL_UPSTREAM */ + YYSYMBOL_VAR_TCP_AUTH_QUERY_TIMEOUT = 137, /* VAR_TCP_AUTH_QUERY_TIMEOUT */ + YYSYMBOL_VAR_SSL_SERVICE_KEY = 138, /* VAR_SSL_SERVICE_KEY */ + YYSYMBOL_VAR_SSL_SERVICE_PEM = 139, /* VAR_SSL_SERVICE_PEM */ + YYSYMBOL_VAR_SSL_PORT = 140, /* VAR_SSL_PORT */ + YYSYMBOL_VAR_FORWARD_FIRST = 141, /* VAR_FORWARD_FIRST */ + YYSYMBOL_VAR_STUB_SSL_UPSTREAM = 142, /* VAR_STUB_SSL_UPSTREAM */ + YYSYMBOL_VAR_FORWARD_SSL_UPSTREAM = 143, /* VAR_FORWARD_SSL_UPSTREAM */ + YYSYMBOL_VAR_TLS_CERT_BUNDLE = 144, /* VAR_TLS_CERT_BUNDLE */ + YYSYMBOL_VAR_HTTPS_PORT = 145, /* VAR_HTTPS_PORT */ + YYSYMBOL_VAR_HTTP_ENDPOINT = 146, /* VAR_HTTP_ENDPOINT */ + YYSYMBOL_VAR_HTTP_MAX_STREAMS = 147, /* VAR_HTTP_MAX_STREAMS */ + YYSYMBOL_VAR_HTTP_QUERY_BUFFER_SIZE = 148, /* VAR_HTTP_QUERY_BUFFER_SIZE */ + YYSYMBOL_VAR_HTTP_RESPONSE_BUFFER_SIZE = 149, /* VAR_HTTP_RESPONSE_BUFFER_SIZE */ + YYSYMBOL_VAR_HTTP_NODELAY = 150, /* VAR_HTTP_NODELAY */ + YYSYMBOL_VAR_HTTP_NOTLS_DOWNSTREAM = 151, /* VAR_HTTP_NOTLS_DOWNSTREAM */ + YYSYMBOL_VAR_STUB_FIRST = 152, /* VAR_STUB_FIRST */ + YYSYMBOL_VAR_MINIMAL_RESPONSES = 153, /* VAR_MINIMAL_RESPONSES */ + YYSYMBOL_VAR_RRSET_ROUNDROBIN = 154, /* VAR_RRSET_ROUNDROBIN */ + YYSYMBOL_VAR_MAX_UDP_SIZE = 155, /* VAR_MAX_UDP_SIZE */ + YYSYMBOL_VAR_DELAY_CLOSE = 156, /* VAR_DELAY_CLOSE */ + YYSYMBOL_VAR_UDP_CONNECT = 157, /* VAR_UDP_CONNECT */ + YYSYMBOL_VAR_UNBLOCK_LAN_ZONES = 158, /* VAR_UNBLOCK_LAN_ZONES */ + YYSYMBOL_VAR_INSECURE_LAN_ZONES = 159, /* VAR_INSECURE_LAN_ZONES */ + YYSYMBOL_VAR_INFRA_CACHE_MIN_RTT = 160, /* VAR_INFRA_CACHE_MIN_RTT */ + YYSYMBOL_VAR_INFRA_KEEP_PROBING = 161, /* VAR_INFRA_KEEP_PROBING */ + YYSYMBOL_VAR_DNS64_PREFIX = 162, /* VAR_DNS64_PREFIX */ + YYSYMBOL_VAR_DNS64_SYNTHALL = 163, /* VAR_DNS64_SYNTHALL */ + YYSYMBOL_VAR_DNS64_IGNORE_AAAA = 164, /* VAR_DNS64_IGNORE_AAAA */ + YYSYMBOL_VAR_DNSTAP = 165, /* VAR_DNSTAP */ + YYSYMBOL_VAR_DNSTAP_ENABLE = 166, /* VAR_DNSTAP_ENABLE */ + YYSYMBOL_VAR_DNSTAP_SOCKET_PATH = 167, /* VAR_DNSTAP_SOCKET_PATH */ + YYSYMBOL_VAR_DNSTAP_IP = 168, /* VAR_DNSTAP_IP */ + YYSYMBOL_VAR_DNSTAP_TLS = 169, /* VAR_DNSTAP_TLS */ + YYSYMBOL_VAR_DNSTAP_TLS_SERVER_NAME = 170, /* VAR_DNSTAP_TLS_SERVER_NAME */ + YYSYMBOL_VAR_DNSTAP_TLS_CERT_BUNDLE = 171, /* VAR_DNSTAP_TLS_CERT_BUNDLE */ + YYSYMBOL_VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 172, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE */ + YYSYMBOL_VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 173, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE */ + YYSYMBOL_VAR_DNSTAP_SEND_IDENTITY = 174, /* VAR_DNSTAP_SEND_IDENTITY */ + YYSYMBOL_VAR_DNSTAP_SEND_VERSION = 175, /* VAR_DNSTAP_SEND_VERSION */ + YYSYMBOL_VAR_DNSTAP_BIDIRECTIONAL = 176, /* VAR_DNSTAP_BIDIRECTIONAL */ + YYSYMBOL_VAR_DNSTAP_IDENTITY = 177, /* VAR_DNSTAP_IDENTITY */ + YYSYMBOL_VAR_DNSTAP_VERSION = 178, /* VAR_DNSTAP_VERSION */ + YYSYMBOL_VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 179, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES */ + YYSYMBOL_VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 180, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES */ + YYSYMBOL_VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 181, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES */ + YYSYMBOL_VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 182, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES */ + YYSYMBOL_VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 183, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES */ + YYSYMBOL_VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 184, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES */ + YYSYMBOL_VAR_RESPONSE_IP_TAG = 185, /* VAR_RESPONSE_IP_TAG */ + YYSYMBOL_VAR_RESPONSE_IP = 186, /* VAR_RESPONSE_IP */ + YYSYMBOL_VAR_RESPONSE_IP_DATA = 187, /* VAR_RESPONSE_IP_DATA */ + YYSYMBOL_VAR_HARDEN_ALGO_DOWNGRADE = 188, /* VAR_HARDEN_ALGO_DOWNGRADE */ + YYSYMBOL_VAR_IP_TRANSPARENT = 189, /* VAR_IP_TRANSPARENT */ + YYSYMBOL_VAR_IP_DSCP = 190, /* VAR_IP_DSCP */ + YYSYMBOL_VAR_DISABLE_DNSSEC_LAME_CHECK = 191, /* VAR_DISABLE_DNSSEC_LAME_CHECK */ + YYSYMBOL_VAR_IP_RATELIMIT = 192, /* VAR_IP_RATELIMIT */ + YYSYMBOL_VAR_IP_RATELIMIT_SLABS = 193, /* VAR_IP_RATELIMIT_SLABS */ + YYSYMBOL_VAR_IP_RATELIMIT_SIZE = 194, /* VAR_IP_RATELIMIT_SIZE */ + YYSYMBOL_VAR_RATELIMIT = 195, /* VAR_RATELIMIT */ + YYSYMBOL_VAR_RATELIMIT_SLABS = 196, /* VAR_RATELIMIT_SLABS */ + YYSYMBOL_VAR_RATELIMIT_SIZE = 197, /* VAR_RATELIMIT_SIZE */ + YYSYMBOL_VAR_RATELIMIT_FOR_DOMAIN = 198, /* VAR_RATELIMIT_FOR_DOMAIN */ + YYSYMBOL_VAR_RATELIMIT_BELOW_DOMAIN = 199, /* VAR_RATELIMIT_BELOW_DOMAIN */ + YYSYMBOL_VAR_IP_RATELIMIT_FACTOR = 200, /* VAR_IP_RATELIMIT_FACTOR */ + YYSYMBOL_VAR_RATELIMIT_FACTOR = 201, /* VAR_RATELIMIT_FACTOR */ + YYSYMBOL_VAR_SEND_CLIENT_SUBNET = 202, /* VAR_SEND_CLIENT_SUBNET */ + YYSYMBOL_VAR_CLIENT_SUBNET_ZONE = 203, /* VAR_CLIENT_SUBNET_ZONE */ + YYSYMBOL_VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 204, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ + YYSYMBOL_VAR_CLIENT_SUBNET_OPCODE = 205, /* VAR_CLIENT_SUBNET_OPCODE */ + YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV4 = 206, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ + YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV6 = 207, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ + YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV4 = 208, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ + YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV6 = 209, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ + YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV4 = 210, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ + YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV6 = 211, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ + YYSYMBOL_VAR_CAPS_WHITELIST = 212, /* VAR_CAPS_WHITELIST */ + YYSYMBOL_VAR_CACHE_MAX_NEGATIVE_TTL = 213, /* VAR_CACHE_MAX_NEGATIVE_TTL */ + YYSYMBOL_VAR_PERMIT_SMALL_HOLDDOWN = 214, /* VAR_PERMIT_SMALL_HOLDDOWN */ + YYSYMBOL_VAR_QNAME_MINIMISATION = 215, /* VAR_QNAME_MINIMISATION */ + YYSYMBOL_VAR_QNAME_MINIMISATION_STRICT = 216, /* VAR_QNAME_MINIMISATION_STRICT */ + YYSYMBOL_VAR_IP_FREEBIND = 217, /* VAR_IP_FREEBIND */ + YYSYMBOL_VAR_DEFINE_TAG = 218, /* VAR_DEFINE_TAG */ + YYSYMBOL_VAR_LOCAL_ZONE_TAG = 219, /* VAR_LOCAL_ZONE_TAG */ + YYSYMBOL_VAR_ACCESS_CONTROL_TAG = 220, /* VAR_ACCESS_CONTROL_TAG */ + YYSYMBOL_VAR_LOCAL_ZONE_OVERRIDE = 221, /* VAR_LOCAL_ZONE_OVERRIDE */ + YYSYMBOL_VAR_ACCESS_CONTROL_TAG_ACTION = 222, /* VAR_ACCESS_CONTROL_TAG_ACTION */ + YYSYMBOL_VAR_ACCESS_CONTROL_TAG_DATA = 223, /* VAR_ACCESS_CONTROL_TAG_DATA */ + YYSYMBOL_VAR_VIEW = 224, /* VAR_VIEW */ + YYSYMBOL_VAR_ACCESS_CONTROL_VIEW = 225, /* VAR_ACCESS_CONTROL_VIEW */ + YYSYMBOL_VAR_VIEW_FIRST = 226, /* VAR_VIEW_FIRST */ + YYSYMBOL_VAR_SERVE_EXPIRED = 227, /* VAR_SERVE_EXPIRED */ + YYSYMBOL_VAR_SERVE_EXPIRED_TTL = 228, /* VAR_SERVE_EXPIRED_TTL */ + YYSYMBOL_VAR_SERVE_EXPIRED_TTL_RESET = 229, /* VAR_SERVE_EXPIRED_TTL_RESET */ + YYSYMBOL_VAR_SERVE_EXPIRED_REPLY_TTL = 230, /* VAR_SERVE_EXPIRED_REPLY_TTL */ + YYSYMBOL_VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 231, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ + YYSYMBOL_VAR_SERVE_ORIGINAL_TTL = 232, /* VAR_SERVE_ORIGINAL_TTL */ + YYSYMBOL_VAR_FAKE_DSA = 233, /* VAR_FAKE_DSA */ + YYSYMBOL_VAR_FAKE_SHA1 = 234, /* VAR_FAKE_SHA1 */ + YYSYMBOL_VAR_LOG_IDENTITY = 235, /* VAR_LOG_IDENTITY */ + YYSYMBOL_VAR_HIDE_TRUSTANCHOR = 236, /* VAR_HIDE_TRUSTANCHOR */ + YYSYMBOL_VAR_TRUST_ANCHOR_SIGNALING = 237, /* VAR_TRUST_ANCHOR_SIGNALING */ + YYSYMBOL_VAR_AGGRESSIVE_NSEC = 238, /* VAR_AGGRESSIVE_NSEC */ + YYSYMBOL_VAR_USE_SYSTEMD = 239, /* VAR_USE_SYSTEMD */ + YYSYMBOL_VAR_SHM_ENABLE = 240, /* VAR_SHM_ENABLE */ + YYSYMBOL_VAR_SHM_KEY = 241, /* VAR_SHM_KEY */ + YYSYMBOL_VAR_ROOT_KEY_SENTINEL = 242, /* VAR_ROOT_KEY_SENTINEL */ + YYSYMBOL_VAR_DNSCRYPT = 243, /* VAR_DNSCRYPT */ + YYSYMBOL_VAR_DNSCRYPT_ENABLE = 244, /* VAR_DNSCRYPT_ENABLE */ + YYSYMBOL_VAR_DNSCRYPT_PORT = 245, /* VAR_DNSCRYPT_PORT */ + YYSYMBOL_VAR_DNSCRYPT_PROVIDER = 246, /* VAR_DNSCRYPT_PROVIDER */ + YYSYMBOL_VAR_DNSCRYPT_SECRET_KEY = 247, /* VAR_DNSCRYPT_SECRET_KEY */ + YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT = 248, /* VAR_DNSCRYPT_PROVIDER_CERT */ + YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 249, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ + YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 250, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ + YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 251, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ + YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SIZE = 252, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ + YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SLABS = 253, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ + YYSYMBOL_VAR_PAD_RESPONSES = 254, /* VAR_PAD_RESPONSES */ + YYSYMBOL_VAR_PAD_RESPONSES_BLOCK_SIZE = 255, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ + YYSYMBOL_VAR_PAD_QUERIES = 256, /* VAR_PAD_QUERIES */ + YYSYMBOL_VAR_PAD_QUERIES_BLOCK_SIZE = 257, /* VAR_PAD_QUERIES_BLOCK_SIZE */ + YYSYMBOL_VAR_IPSECMOD_ENABLED = 258, /* VAR_IPSECMOD_ENABLED */ + YYSYMBOL_VAR_IPSECMOD_HOOK = 259, /* VAR_IPSECMOD_HOOK */ + YYSYMBOL_VAR_IPSECMOD_IGNORE_BOGUS = 260, /* VAR_IPSECMOD_IGNORE_BOGUS */ + YYSYMBOL_VAR_IPSECMOD_MAX_TTL = 261, /* VAR_IPSECMOD_MAX_TTL */ + YYSYMBOL_VAR_IPSECMOD_WHITELIST = 262, /* VAR_IPSECMOD_WHITELIST */ + YYSYMBOL_VAR_IPSECMOD_STRICT = 263, /* VAR_IPSECMOD_STRICT */ + YYSYMBOL_VAR_CACHEDB = 264, /* VAR_CACHEDB */ + YYSYMBOL_VAR_CACHEDB_BACKEND = 265, /* VAR_CACHEDB_BACKEND */ + YYSYMBOL_VAR_CACHEDB_SECRETSEED = 266, /* VAR_CACHEDB_SECRETSEED */ + YYSYMBOL_VAR_CACHEDB_REDISHOST = 267, /* VAR_CACHEDB_REDISHOST */ + YYSYMBOL_VAR_CACHEDB_REDISPORT = 268, /* VAR_CACHEDB_REDISPORT */ + YYSYMBOL_VAR_CACHEDB_REDISTIMEOUT = 269, /* VAR_CACHEDB_REDISTIMEOUT */ + YYSYMBOL_VAR_CACHEDB_REDISEXPIRERECORDS = 270, /* VAR_CACHEDB_REDISEXPIRERECORDS */ + YYSYMBOL_VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 271, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ + YYSYMBOL_VAR_FOR_UPSTREAM = 272, /* VAR_FOR_UPSTREAM */ + YYSYMBOL_VAR_AUTH_ZONE = 273, /* VAR_AUTH_ZONE */ + YYSYMBOL_VAR_ZONEFILE = 274, /* VAR_ZONEFILE */ + YYSYMBOL_VAR_MASTER = 275, /* VAR_MASTER */ + YYSYMBOL_VAR_URL = 276, /* VAR_URL */ + YYSYMBOL_VAR_FOR_DOWNSTREAM = 277, /* VAR_FOR_DOWNSTREAM */ + YYSYMBOL_VAR_FALLBACK_ENABLED = 278, /* VAR_FALLBACK_ENABLED */ + YYSYMBOL_VAR_TLS_ADDITIONAL_PORT = 279, /* VAR_TLS_ADDITIONAL_PORT */ + YYSYMBOL_VAR_LOW_RTT = 280, /* VAR_LOW_RTT */ + YYSYMBOL_VAR_LOW_RTT_PERMIL = 281, /* VAR_LOW_RTT_PERMIL */ + YYSYMBOL_VAR_FAST_SERVER_PERMIL = 282, /* VAR_FAST_SERVER_PERMIL */ + YYSYMBOL_VAR_FAST_SERVER_NUM = 283, /* VAR_FAST_SERVER_NUM */ + YYSYMBOL_VAR_ALLOW_NOTIFY = 284, /* VAR_ALLOW_NOTIFY */ + YYSYMBOL_VAR_TLS_WIN_CERT = 285, /* VAR_TLS_WIN_CERT */ + YYSYMBOL_VAR_TCP_CONNECTION_LIMIT = 286, /* VAR_TCP_CONNECTION_LIMIT */ + YYSYMBOL_VAR_FORWARD_NO_CACHE = 287, /* VAR_FORWARD_NO_CACHE */ + YYSYMBOL_VAR_STUB_NO_CACHE = 288, /* VAR_STUB_NO_CACHE */ + YYSYMBOL_VAR_LOG_SERVFAIL = 289, /* VAR_LOG_SERVFAIL */ + YYSYMBOL_VAR_DENY_ANY = 290, /* VAR_DENY_ANY */ + YYSYMBOL_VAR_UNKNOWN_SERVER_TIME_LIMIT = 291, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ + YYSYMBOL_VAR_LOG_TAG_QUERYREPLY = 292, /* VAR_LOG_TAG_QUERYREPLY */ + YYSYMBOL_VAR_STREAM_WAIT_SIZE = 293, /* VAR_STREAM_WAIT_SIZE */ + YYSYMBOL_VAR_TLS_CIPHERS = 294, /* VAR_TLS_CIPHERS */ + YYSYMBOL_VAR_TLS_CIPHERSUITES = 295, /* VAR_TLS_CIPHERSUITES */ + YYSYMBOL_VAR_TLS_USE_SNI = 296, /* VAR_TLS_USE_SNI */ + YYSYMBOL_VAR_IPSET = 297, /* VAR_IPSET */ + YYSYMBOL_VAR_IPSET_NAME_V4 = 298, /* VAR_IPSET_NAME_V4 */ + YYSYMBOL_VAR_IPSET_NAME_V6 = 299, /* VAR_IPSET_NAME_V6 */ + YYSYMBOL_VAR_TLS_SESSION_TICKET_KEYS = 300, /* VAR_TLS_SESSION_TICKET_KEYS */ + YYSYMBOL_VAR_RPZ = 301, /* VAR_RPZ */ + YYSYMBOL_VAR_TAGS = 302, /* VAR_TAGS */ + YYSYMBOL_VAR_RPZ_ACTION_OVERRIDE = 303, /* VAR_RPZ_ACTION_OVERRIDE */ + YYSYMBOL_VAR_RPZ_CNAME_OVERRIDE = 304, /* VAR_RPZ_CNAME_OVERRIDE */ + YYSYMBOL_VAR_RPZ_LOG = 305, /* VAR_RPZ_LOG */ + YYSYMBOL_VAR_RPZ_LOG_NAME = 306, /* VAR_RPZ_LOG_NAME */ + YYSYMBOL_VAR_DYNLIB = 307, /* VAR_DYNLIB */ + YYSYMBOL_VAR_DYNLIB_FILE = 308, /* VAR_DYNLIB_FILE */ + YYSYMBOL_VAR_EDNS_CLIENT_STRING = 309, /* VAR_EDNS_CLIENT_STRING */ + YYSYMBOL_VAR_EDNS_CLIENT_STRING_OPCODE = 310, /* VAR_EDNS_CLIENT_STRING_OPCODE */ + YYSYMBOL_VAR_NSID = 311, /* VAR_NSID */ + YYSYMBOL_VAR_ZONEMD_PERMISSIVE_MODE = 312, /* VAR_ZONEMD_PERMISSIVE_MODE */ + YYSYMBOL_VAR_ZONEMD_REJECT_ABSENCE = 313, /* VAR_ZONEMD_REJECT_ABSENCE */ + YYSYMBOL_YYACCEPT = 314, /* $accept */ + YYSYMBOL_toplevelvars = 315, /* toplevelvars */ + YYSYMBOL_toplevelvar = 316, /* toplevelvar */ + YYSYMBOL_force_toplevel = 317, /* force_toplevel */ + YYSYMBOL_serverstart = 318, /* serverstart */ + YYSYMBOL_contents_server = 319, /* contents_server */ + YYSYMBOL_content_server = 320, /* content_server */ + YYSYMBOL_stubstart = 321, /* stubstart */ + YYSYMBOL_contents_stub = 322, /* contents_stub */ + YYSYMBOL_content_stub = 323, /* content_stub */ + YYSYMBOL_forwardstart = 324, /* forwardstart */ + YYSYMBOL_contents_forward = 325, /* contents_forward */ + YYSYMBOL_content_forward = 326, /* content_forward */ + YYSYMBOL_viewstart = 327, /* viewstart */ + YYSYMBOL_contents_view = 328, /* contents_view */ + YYSYMBOL_content_view = 329, /* content_view */ + YYSYMBOL_authstart = 330, /* authstart */ + YYSYMBOL_contents_auth = 331, /* contents_auth */ + YYSYMBOL_content_auth = 332, /* content_auth */ + YYSYMBOL_rpz_tag = 333, /* rpz_tag */ + YYSYMBOL_rpz_action_override = 334, /* rpz_action_override */ + YYSYMBOL_rpz_cname_override = 335, /* rpz_cname_override */ + YYSYMBOL_rpz_log = 336, /* rpz_log */ + YYSYMBOL_rpz_log_name = 337, /* rpz_log_name */ + YYSYMBOL_rpzstart = 338, /* rpzstart */ + YYSYMBOL_contents_rpz = 339, /* contents_rpz */ + YYSYMBOL_content_rpz = 340, /* content_rpz */ + YYSYMBOL_server_num_threads = 341, /* server_num_threads */ + YYSYMBOL_server_verbosity = 342, /* server_verbosity */ + YYSYMBOL_server_statistics_interval = 343, /* server_statistics_interval */ + YYSYMBOL_server_statistics_cumulative = 344, /* server_statistics_cumulative */ + YYSYMBOL_server_extended_statistics = 345, /* server_extended_statistics */ + YYSYMBOL_server_shm_enable = 346, /* server_shm_enable */ + YYSYMBOL_server_shm_key = 347, /* server_shm_key */ + YYSYMBOL_server_port = 348, /* server_port */ + YYSYMBOL_server_send_client_subnet = 349, /* server_send_client_subnet */ + YYSYMBOL_server_client_subnet_zone = 350, /* server_client_subnet_zone */ + YYSYMBOL_server_client_subnet_always_forward = 351, /* server_client_subnet_always_forward */ + YYSYMBOL_server_client_subnet_opcode = 352, /* server_client_subnet_opcode */ + YYSYMBOL_server_max_client_subnet_ipv4 = 353, /* server_max_client_subnet_ipv4 */ + YYSYMBOL_server_max_client_subnet_ipv6 = 354, /* server_max_client_subnet_ipv6 */ + YYSYMBOL_server_min_client_subnet_ipv4 = 355, /* server_min_client_subnet_ipv4 */ + YYSYMBOL_server_min_client_subnet_ipv6 = 356, /* server_min_client_subnet_ipv6 */ + YYSYMBOL_server_max_ecs_tree_size_ipv4 = 357, /* server_max_ecs_tree_size_ipv4 */ + YYSYMBOL_server_max_ecs_tree_size_ipv6 = 358, /* server_max_ecs_tree_size_ipv6 */ + YYSYMBOL_server_interface = 359, /* server_interface */ + YYSYMBOL_server_outgoing_interface = 360, /* server_outgoing_interface */ + YYSYMBOL_server_outgoing_range = 361, /* server_outgoing_range */ + YYSYMBOL_server_outgoing_port_permit = 362, /* server_outgoing_port_permit */ + YYSYMBOL_server_outgoing_port_avoid = 363, /* server_outgoing_port_avoid */ + YYSYMBOL_server_outgoing_num_tcp = 364, /* server_outgoing_num_tcp */ + YYSYMBOL_server_incoming_num_tcp = 365, /* server_incoming_num_tcp */ + YYSYMBOL_server_interface_automatic = 366, /* server_interface_automatic */ + YYSYMBOL_server_do_ip4 = 367, /* server_do_ip4 */ + YYSYMBOL_server_do_ip6 = 368, /* server_do_ip6 */ + YYSYMBOL_server_do_udp = 369, /* server_do_udp */ + YYSYMBOL_server_do_tcp = 370, /* server_do_tcp */ + YYSYMBOL_server_prefer_ip4 = 371, /* server_prefer_ip4 */ + YYSYMBOL_server_prefer_ip6 = 372, /* server_prefer_ip6 */ + YYSYMBOL_server_tcp_mss = 373, /* server_tcp_mss */ + YYSYMBOL_server_outgoing_tcp_mss = 374, /* server_outgoing_tcp_mss */ + YYSYMBOL_server_tcp_idle_timeout = 375, /* server_tcp_idle_timeout */ + YYSYMBOL_server_max_reuse_tcp_queries = 376, /* server_max_reuse_tcp_queries */ + YYSYMBOL_server_tcp_reuse_timeout = 377, /* server_tcp_reuse_timeout */ + YYSYMBOL_server_tcp_auth_query_timeout = 378, /* server_tcp_auth_query_timeout */ + YYSYMBOL_server_tcp_keepalive = 379, /* server_tcp_keepalive */ + YYSYMBOL_server_tcp_keepalive_timeout = 380, /* server_tcp_keepalive_timeout */ + YYSYMBOL_server_tcp_upstream = 381, /* server_tcp_upstream */ + YYSYMBOL_server_udp_upstream_without_downstream = 382, /* server_udp_upstream_without_downstream */ + YYSYMBOL_server_ssl_upstream = 383, /* server_ssl_upstream */ + YYSYMBOL_server_ssl_service_key = 384, /* server_ssl_service_key */ + YYSYMBOL_server_ssl_service_pem = 385, /* server_ssl_service_pem */ + YYSYMBOL_server_ssl_port = 386, /* server_ssl_port */ + YYSYMBOL_server_tls_cert_bundle = 387, /* server_tls_cert_bundle */ + YYSYMBOL_server_tls_win_cert = 388, /* server_tls_win_cert */ + YYSYMBOL_server_tls_additional_port = 389, /* server_tls_additional_port */ + YYSYMBOL_server_tls_ciphers = 390, /* server_tls_ciphers */ + YYSYMBOL_server_tls_ciphersuites = 391, /* server_tls_ciphersuites */ + YYSYMBOL_server_tls_session_ticket_keys = 392, /* server_tls_session_ticket_keys */ + YYSYMBOL_server_tls_use_sni = 393, /* server_tls_use_sni */ + YYSYMBOL_server_https_port = 394, /* server_https_port */ + YYSYMBOL_server_http_endpoint = 395, /* server_http_endpoint */ + YYSYMBOL_server_http_max_streams = 396, /* server_http_max_streams */ + YYSYMBOL_server_http_query_buffer_size = 397, /* server_http_query_buffer_size */ + YYSYMBOL_server_http_response_buffer_size = 398, /* server_http_response_buffer_size */ + YYSYMBOL_server_http_nodelay = 399, /* server_http_nodelay */ + YYSYMBOL_server_http_notls_downstream = 400, /* server_http_notls_downstream */ + YYSYMBOL_server_use_systemd = 401, /* server_use_systemd */ + YYSYMBOL_server_do_daemonize = 402, /* server_do_daemonize */ + YYSYMBOL_server_use_syslog = 403, /* server_use_syslog */ + YYSYMBOL_server_log_time_ascii = 404, /* server_log_time_ascii */ + YYSYMBOL_server_log_queries = 405, /* server_log_queries */ + YYSYMBOL_server_log_replies = 406, /* server_log_replies */ + YYSYMBOL_server_log_tag_queryreply = 407, /* server_log_tag_queryreply */ + YYSYMBOL_server_log_servfail = 408, /* server_log_servfail */ + YYSYMBOL_server_log_local_actions = 409, /* server_log_local_actions */ + YYSYMBOL_server_chroot = 410, /* server_chroot */ + YYSYMBOL_server_username = 411, /* server_username */ + YYSYMBOL_server_directory = 412, /* server_directory */ + YYSYMBOL_server_logfile = 413, /* server_logfile */ + YYSYMBOL_server_pidfile = 414, /* server_pidfile */ + YYSYMBOL_server_root_hints = 415, /* server_root_hints */ + YYSYMBOL_server_dlv_anchor_file = 416, /* server_dlv_anchor_file */ + YYSYMBOL_server_dlv_anchor = 417, /* server_dlv_anchor */ + YYSYMBOL_server_auto_trust_anchor_file = 418, /* server_auto_trust_anchor_file */ + YYSYMBOL_server_trust_anchor_file = 419, /* server_trust_anchor_file */ + YYSYMBOL_server_trusted_keys_file = 420, /* server_trusted_keys_file */ + YYSYMBOL_server_trust_anchor = 421, /* server_trust_anchor */ + YYSYMBOL_server_trust_anchor_signaling = 422, /* server_trust_anchor_signaling */ + YYSYMBOL_server_root_key_sentinel = 423, /* server_root_key_sentinel */ + YYSYMBOL_server_domain_insecure = 424, /* server_domain_insecure */ + YYSYMBOL_server_hide_identity = 425, /* server_hide_identity */ + YYSYMBOL_server_hide_version = 426, /* server_hide_version */ + YYSYMBOL_server_hide_trustanchor = 427, /* server_hide_trustanchor */ + YYSYMBOL_server_identity = 428, /* server_identity */ + YYSYMBOL_server_version = 429, /* server_version */ + YYSYMBOL_server_nsid = 430, /* server_nsid */ + YYSYMBOL_server_so_rcvbuf = 431, /* server_so_rcvbuf */ + YYSYMBOL_server_so_sndbuf = 432, /* server_so_sndbuf */ + YYSYMBOL_server_so_reuseport = 433, /* server_so_reuseport */ + YYSYMBOL_server_ip_transparent = 434, /* server_ip_transparent */ + YYSYMBOL_server_ip_freebind = 435, /* server_ip_freebind */ + YYSYMBOL_server_ip_dscp = 436, /* server_ip_dscp */ + YYSYMBOL_server_stream_wait_size = 437, /* server_stream_wait_size */ + YYSYMBOL_server_edns_buffer_size = 438, /* server_edns_buffer_size */ + YYSYMBOL_server_msg_buffer_size = 439, /* server_msg_buffer_size */ + YYSYMBOL_server_msg_cache_size = 440, /* server_msg_cache_size */ + YYSYMBOL_server_msg_cache_slabs = 441, /* server_msg_cache_slabs */ + YYSYMBOL_server_num_queries_per_thread = 442, /* server_num_queries_per_thread */ + YYSYMBOL_server_jostle_timeout = 443, /* server_jostle_timeout */ + YYSYMBOL_server_delay_close = 444, /* server_delay_close */ + YYSYMBOL_server_udp_connect = 445, /* server_udp_connect */ + YYSYMBOL_server_unblock_lan_zones = 446, /* server_unblock_lan_zones */ + YYSYMBOL_server_insecure_lan_zones = 447, /* server_insecure_lan_zones */ + YYSYMBOL_server_rrset_cache_size = 448, /* server_rrset_cache_size */ + YYSYMBOL_server_rrset_cache_slabs = 449, /* server_rrset_cache_slabs */ + YYSYMBOL_server_infra_host_ttl = 450, /* server_infra_host_ttl */ + YYSYMBOL_server_infra_lame_ttl = 451, /* server_infra_lame_ttl */ + YYSYMBOL_server_infra_cache_numhosts = 452, /* server_infra_cache_numhosts */ + YYSYMBOL_server_infra_cache_lame_size = 453, /* server_infra_cache_lame_size */ + YYSYMBOL_server_infra_cache_slabs = 454, /* server_infra_cache_slabs */ + YYSYMBOL_server_infra_cache_min_rtt = 455, /* server_infra_cache_min_rtt */ + YYSYMBOL_server_infra_keep_probing = 456, /* server_infra_keep_probing */ + YYSYMBOL_server_target_fetch_policy = 457, /* server_target_fetch_policy */ + YYSYMBOL_server_harden_short_bufsize = 458, /* server_harden_short_bufsize */ + YYSYMBOL_server_harden_large_queries = 459, /* server_harden_large_queries */ + YYSYMBOL_server_harden_glue = 460, /* server_harden_glue */ + YYSYMBOL_server_harden_dnssec_stripped = 461, /* server_harden_dnssec_stripped */ + YYSYMBOL_server_harden_below_nxdomain = 462, /* server_harden_below_nxdomain */ + YYSYMBOL_server_harden_referral_path = 463, /* server_harden_referral_path */ + YYSYMBOL_server_harden_algo_downgrade = 464, /* server_harden_algo_downgrade */ + YYSYMBOL_server_use_caps_for_id = 465, /* server_use_caps_for_id */ + YYSYMBOL_server_caps_whitelist = 466, /* server_caps_whitelist */ + YYSYMBOL_server_private_address = 467, /* server_private_address */ + YYSYMBOL_server_private_domain = 468, /* server_private_domain */ + YYSYMBOL_server_prefetch = 469, /* server_prefetch */ + YYSYMBOL_server_prefetch_key = 470, /* server_prefetch_key */ + YYSYMBOL_server_deny_any = 471, /* server_deny_any */ + YYSYMBOL_server_unwanted_reply_threshold = 472, /* server_unwanted_reply_threshold */ + YYSYMBOL_server_do_not_query_address = 473, /* server_do_not_query_address */ + YYSYMBOL_server_do_not_query_localhost = 474, /* server_do_not_query_localhost */ + YYSYMBOL_server_access_control = 475, /* server_access_control */ + YYSYMBOL_server_module_conf = 476, /* server_module_conf */ + YYSYMBOL_server_val_override_date = 477, /* server_val_override_date */ + YYSYMBOL_server_val_sig_skew_min = 478, /* server_val_sig_skew_min */ + YYSYMBOL_server_val_sig_skew_max = 479, /* server_val_sig_skew_max */ + YYSYMBOL_server_cache_max_ttl = 480, /* server_cache_max_ttl */ + YYSYMBOL_server_cache_max_negative_ttl = 481, /* server_cache_max_negative_ttl */ + YYSYMBOL_server_cache_min_ttl = 482, /* server_cache_min_ttl */ + YYSYMBOL_server_bogus_ttl = 483, /* server_bogus_ttl */ + YYSYMBOL_server_val_clean_additional = 484, /* server_val_clean_additional */ + YYSYMBOL_server_val_permissive_mode = 485, /* server_val_permissive_mode */ + YYSYMBOL_server_aggressive_nsec = 486, /* server_aggressive_nsec */ + YYSYMBOL_server_ignore_cd_flag = 487, /* server_ignore_cd_flag */ + YYSYMBOL_server_serve_expired = 488, /* server_serve_expired */ + YYSYMBOL_server_serve_expired_ttl = 489, /* server_serve_expired_ttl */ + YYSYMBOL_server_serve_expired_ttl_reset = 490, /* server_serve_expired_ttl_reset */ + YYSYMBOL_server_serve_expired_reply_ttl = 491, /* server_serve_expired_reply_ttl */ + YYSYMBOL_server_serve_expired_client_timeout = 492, /* server_serve_expired_client_timeout */ + YYSYMBOL_server_serve_original_ttl = 493, /* server_serve_original_ttl */ + YYSYMBOL_server_fake_dsa = 494, /* server_fake_dsa */ + YYSYMBOL_server_fake_sha1 = 495, /* server_fake_sha1 */ + YYSYMBOL_server_val_log_level = 496, /* server_val_log_level */ + YYSYMBOL_server_val_nsec3_keysize_iterations = 497, /* server_val_nsec3_keysize_iterations */ + YYSYMBOL_server_zonemd_permissive_mode = 498, /* server_zonemd_permissive_mode */ + YYSYMBOL_server_add_holddown = 499, /* server_add_holddown */ + YYSYMBOL_server_del_holddown = 500, /* server_del_holddown */ + YYSYMBOL_server_keep_missing = 501, /* server_keep_missing */ + YYSYMBOL_server_permit_small_holddown = 502, /* server_permit_small_holddown */ + YYSYMBOL_server_key_cache_size = 503, /* server_key_cache_size */ + YYSYMBOL_server_key_cache_slabs = 504, /* server_key_cache_slabs */ + YYSYMBOL_server_neg_cache_size = 505, /* server_neg_cache_size */ + YYSYMBOL_server_local_zone = 506, /* server_local_zone */ + YYSYMBOL_server_local_data = 507, /* server_local_data */ + YYSYMBOL_server_local_data_ptr = 508, /* server_local_data_ptr */ + YYSYMBOL_server_minimal_responses = 509, /* server_minimal_responses */ + YYSYMBOL_server_rrset_roundrobin = 510, /* server_rrset_roundrobin */ + YYSYMBOL_server_unknown_server_time_limit = 511, /* server_unknown_server_time_limit */ + YYSYMBOL_server_max_udp_size = 512, /* server_max_udp_size */ + YYSYMBOL_server_dns64_prefix = 513, /* server_dns64_prefix */ + YYSYMBOL_server_dns64_synthall = 514, /* server_dns64_synthall */ + YYSYMBOL_server_dns64_ignore_aaaa = 515, /* server_dns64_ignore_aaaa */ + YYSYMBOL_server_define_tag = 516, /* server_define_tag */ + YYSYMBOL_server_local_zone_tag = 517, /* server_local_zone_tag */ + YYSYMBOL_server_access_control_tag = 518, /* server_access_control_tag */ + YYSYMBOL_server_access_control_tag_action = 519, /* server_access_control_tag_action */ + YYSYMBOL_server_access_control_tag_data = 520, /* server_access_control_tag_data */ + YYSYMBOL_server_local_zone_override = 521, /* server_local_zone_override */ + YYSYMBOL_server_access_control_view = 522, /* server_access_control_view */ + YYSYMBOL_server_response_ip_tag = 523, /* server_response_ip_tag */ + YYSYMBOL_server_ip_ratelimit = 524, /* server_ip_ratelimit */ + YYSYMBOL_server_ratelimit = 525, /* server_ratelimit */ + YYSYMBOL_server_ip_ratelimit_size = 526, /* server_ip_ratelimit_size */ + YYSYMBOL_server_ratelimit_size = 527, /* server_ratelimit_size */ + YYSYMBOL_server_ip_ratelimit_slabs = 528, /* server_ip_ratelimit_slabs */ + YYSYMBOL_server_ratelimit_slabs = 529, /* server_ratelimit_slabs */ + YYSYMBOL_server_ratelimit_for_domain = 530, /* server_ratelimit_for_domain */ + YYSYMBOL_server_ratelimit_below_domain = 531, /* server_ratelimit_below_domain */ + YYSYMBOL_server_ip_ratelimit_factor = 532, /* server_ip_ratelimit_factor */ + YYSYMBOL_server_ratelimit_factor = 533, /* server_ratelimit_factor */ + YYSYMBOL_server_low_rtt = 534, /* server_low_rtt */ + YYSYMBOL_server_fast_server_num = 535, /* server_fast_server_num */ + YYSYMBOL_server_fast_server_permil = 536, /* server_fast_server_permil */ + YYSYMBOL_server_qname_minimisation = 537, /* server_qname_minimisation */ + YYSYMBOL_server_qname_minimisation_strict = 538, /* server_qname_minimisation_strict */ + YYSYMBOL_server_pad_responses = 539, /* server_pad_responses */ + YYSYMBOL_server_pad_responses_block_size = 540, /* server_pad_responses_block_size */ + YYSYMBOL_server_pad_queries = 541, /* server_pad_queries */ + YYSYMBOL_server_pad_queries_block_size = 542, /* server_pad_queries_block_size */ + YYSYMBOL_server_ipsecmod_enabled = 543, /* server_ipsecmod_enabled */ + YYSYMBOL_server_ipsecmod_ignore_bogus = 544, /* server_ipsecmod_ignore_bogus */ + YYSYMBOL_server_ipsecmod_hook = 545, /* server_ipsecmod_hook */ + YYSYMBOL_server_ipsecmod_max_ttl = 546, /* server_ipsecmod_max_ttl */ + YYSYMBOL_server_ipsecmod_whitelist = 547, /* server_ipsecmod_whitelist */ + YYSYMBOL_server_ipsecmod_strict = 548, /* server_ipsecmod_strict */ + YYSYMBOL_server_edns_client_string = 549, /* server_edns_client_string */ + YYSYMBOL_server_edns_client_string_opcode = 550, /* server_edns_client_string_opcode */ + YYSYMBOL_stub_name = 551, /* stub_name */ + YYSYMBOL_stub_host = 552, /* stub_host */ + YYSYMBOL_stub_addr = 553, /* stub_addr */ + YYSYMBOL_stub_first = 554, /* stub_first */ + YYSYMBOL_stub_no_cache = 555, /* stub_no_cache */ + YYSYMBOL_stub_ssl_upstream = 556, /* stub_ssl_upstream */ + YYSYMBOL_stub_prime = 557, /* stub_prime */ + YYSYMBOL_forward_name = 558, /* forward_name */ + YYSYMBOL_forward_host = 559, /* forward_host */ + YYSYMBOL_forward_addr = 560, /* forward_addr */ + YYSYMBOL_forward_first = 561, /* forward_first */ + YYSYMBOL_forward_no_cache = 562, /* forward_no_cache */ + YYSYMBOL_forward_ssl_upstream = 563, /* forward_ssl_upstream */ + YYSYMBOL_auth_name = 564, /* auth_name */ + YYSYMBOL_auth_zonefile = 565, /* auth_zonefile */ + YYSYMBOL_auth_master = 566, /* auth_master */ + YYSYMBOL_auth_url = 567, /* auth_url */ + YYSYMBOL_auth_allow_notify = 568, /* auth_allow_notify */ + YYSYMBOL_auth_zonemd_reject_absence = 569, /* auth_zonemd_reject_absence */ + YYSYMBOL_auth_for_downstream = 570, /* auth_for_downstream */ + YYSYMBOL_auth_for_upstream = 571, /* auth_for_upstream */ + YYSYMBOL_auth_fallback_enabled = 572, /* auth_fallback_enabled */ + YYSYMBOL_view_name = 573, /* view_name */ + YYSYMBOL_view_local_zone = 574, /* view_local_zone */ + YYSYMBOL_view_response_ip = 575, /* view_response_ip */ + YYSYMBOL_view_response_ip_data = 576, /* view_response_ip_data */ + YYSYMBOL_view_local_data = 577, /* view_local_data */ + YYSYMBOL_view_local_data_ptr = 578, /* view_local_data_ptr */ + YYSYMBOL_view_first = 579, /* view_first */ + YYSYMBOL_rcstart = 580, /* rcstart */ + YYSYMBOL_contents_rc = 581, /* contents_rc */ + YYSYMBOL_content_rc = 582, /* content_rc */ + YYSYMBOL_rc_control_enable = 583, /* rc_control_enable */ + YYSYMBOL_rc_control_port = 584, /* rc_control_port */ + YYSYMBOL_rc_control_interface = 585, /* rc_control_interface */ + YYSYMBOL_rc_control_use_cert = 586, /* rc_control_use_cert */ + YYSYMBOL_rc_server_key_file = 587, /* rc_server_key_file */ + YYSYMBOL_rc_server_cert_file = 588, /* rc_server_cert_file */ + YYSYMBOL_rc_control_key_file = 589, /* rc_control_key_file */ + YYSYMBOL_rc_control_cert_file = 590, /* rc_control_cert_file */ + YYSYMBOL_dtstart = 591, /* dtstart */ + YYSYMBOL_contents_dt = 592, /* contents_dt */ + YYSYMBOL_content_dt = 593, /* content_dt */ + YYSYMBOL_dt_dnstap_enable = 594, /* dt_dnstap_enable */ + YYSYMBOL_dt_dnstap_bidirectional = 595, /* dt_dnstap_bidirectional */ + YYSYMBOL_dt_dnstap_socket_path = 596, /* dt_dnstap_socket_path */ + YYSYMBOL_dt_dnstap_ip = 597, /* dt_dnstap_ip */ + YYSYMBOL_dt_dnstap_tls = 598, /* dt_dnstap_tls */ + YYSYMBOL_dt_dnstap_tls_server_name = 599, /* dt_dnstap_tls_server_name */ + YYSYMBOL_dt_dnstap_tls_cert_bundle = 600, /* dt_dnstap_tls_cert_bundle */ + YYSYMBOL_dt_dnstap_tls_client_key_file = 601, /* dt_dnstap_tls_client_key_file */ + YYSYMBOL_dt_dnstap_tls_client_cert_file = 602, /* dt_dnstap_tls_client_cert_file */ + YYSYMBOL_dt_dnstap_send_identity = 603, /* dt_dnstap_send_identity */ + YYSYMBOL_dt_dnstap_send_version = 604, /* dt_dnstap_send_version */ + YYSYMBOL_dt_dnstap_identity = 605, /* dt_dnstap_identity */ + YYSYMBOL_dt_dnstap_version = 606, /* dt_dnstap_version */ + YYSYMBOL_dt_dnstap_log_resolver_query_messages = 607, /* dt_dnstap_log_resolver_query_messages */ + YYSYMBOL_dt_dnstap_log_resolver_response_messages = 608, /* dt_dnstap_log_resolver_response_messages */ + YYSYMBOL_dt_dnstap_log_client_query_messages = 609, /* dt_dnstap_log_client_query_messages */ + YYSYMBOL_dt_dnstap_log_client_response_messages = 610, /* dt_dnstap_log_client_response_messages */ + YYSYMBOL_dt_dnstap_log_forwarder_query_messages = 611, /* dt_dnstap_log_forwarder_query_messages */ + YYSYMBOL_dt_dnstap_log_forwarder_response_messages = 612, /* dt_dnstap_log_forwarder_response_messages */ + YYSYMBOL_pythonstart = 613, /* pythonstart */ + YYSYMBOL_contents_py = 614, /* contents_py */ + YYSYMBOL_content_py = 615, /* content_py */ + YYSYMBOL_py_script = 616, /* py_script */ + YYSYMBOL_dynlibstart = 617, /* dynlibstart */ + YYSYMBOL_contents_dl = 618, /* contents_dl */ + YYSYMBOL_content_dl = 619, /* content_dl */ + YYSYMBOL_dl_file = 620, /* dl_file */ + YYSYMBOL_server_disable_dnssec_lame_check = 621, /* server_disable_dnssec_lame_check */ + YYSYMBOL_server_log_identity = 622, /* server_log_identity */ + YYSYMBOL_server_response_ip = 623, /* server_response_ip */ + YYSYMBOL_server_response_ip_data = 624, /* server_response_ip_data */ + YYSYMBOL_dnscstart = 625, /* dnscstart */ + YYSYMBOL_contents_dnsc = 626, /* contents_dnsc */ + YYSYMBOL_content_dnsc = 627, /* content_dnsc */ + YYSYMBOL_dnsc_dnscrypt_enable = 628, /* dnsc_dnscrypt_enable */ + YYSYMBOL_dnsc_dnscrypt_port = 629, /* dnsc_dnscrypt_port */ + YYSYMBOL_dnsc_dnscrypt_provider = 630, /* dnsc_dnscrypt_provider */ + YYSYMBOL_dnsc_dnscrypt_provider_cert = 631, /* dnsc_dnscrypt_provider_cert */ + YYSYMBOL_dnsc_dnscrypt_provider_cert_rotated = 632, /* dnsc_dnscrypt_provider_cert_rotated */ + YYSYMBOL_dnsc_dnscrypt_secret_key = 633, /* dnsc_dnscrypt_secret_key */ + YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_size = 634, /* dnsc_dnscrypt_shared_secret_cache_size */ + YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_slabs = 635, /* dnsc_dnscrypt_shared_secret_cache_slabs */ + YYSYMBOL_dnsc_dnscrypt_nonce_cache_size = 636, /* dnsc_dnscrypt_nonce_cache_size */ + YYSYMBOL_dnsc_dnscrypt_nonce_cache_slabs = 637, /* dnsc_dnscrypt_nonce_cache_slabs */ + YYSYMBOL_cachedbstart = 638, /* cachedbstart */ + YYSYMBOL_contents_cachedb = 639, /* contents_cachedb */ + YYSYMBOL_content_cachedb = 640, /* content_cachedb */ + YYSYMBOL_cachedb_backend_name = 641, /* cachedb_backend_name */ + YYSYMBOL_cachedb_secret_seed = 642, /* cachedb_secret_seed */ + YYSYMBOL_redis_server_host = 643, /* redis_server_host */ + YYSYMBOL_redis_server_port = 644, /* redis_server_port */ + YYSYMBOL_redis_timeout = 645, /* redis_timeout */ + YYSYMBOL_redis_expire_records = 646, /* redis_expire_records */ + YYSYMBOL_server_tcp_connection_limit = 647, /* server_tcp_connection_limit */ + YYSYMBOL_ipsetstart = 648, /* ipsetstart */ + YYSYMBOL_contents_ipset = 649, /* contents_ipset */ + YYSYMBOL_content_ipset = 650, /* content_ipset */ + YYSYMBOL_ipset_name_v4 = 651, /* ipset_name_v4 */ + YYSYMBOL_ipset_name_v6 = 652 /* ipset_name_v6 */ +}; +typedef enum yysymbol_kind_t yysymbol_kind_t; -/* Copy the second part of user declarations. */ -/* Line 216 of yacc.c. */ -#line 768 "util/configparser.c" #ifdef short # undef short #endif -#ifdef YYTYPE_UINT8 -typedef YYTYPE_UINT8 yytype_uint8; -#else -typedef unsigned char yytype_uint8; +/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure + and (if available) are included + so that the code can choose integer types of a good width. */ + +#ifndef __PTRDIFF_MAX__ +# include /* INFRINGES ON USER NAME SPACE */ +# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_STDINT_H +# endif #endif -#ifdef YYTYPE_INT8 -typedef YYTYPE_INT8 yytype_int8; -#elif (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +/* Narrow types that promote to a signed type and that can represent a + signed or unsigned integer of at least N bits. In tables they can + save space and decrease cache pressure. Promoting to a signed type + helps avoid bugs in integer arithmetic. */ + +#ifdef __INT_LEAST8_MAX__ +typedef __INT_LEAST8_TYPE__ yytype_int8; +#elif defined YY_STDINT_H +typedef int_least8_t yytype_int8; +#else typedef signed char yytype_int8; -#else -typedef short int yytype_int8; #endif -#ifdef YYTYPE_UINT16 -typedef YYTYPE_UINT16 yytype_uint16; +#ifdef __INT_LEAST16_MAX__ +typedef __INT_LEAST16_TYPE__ yytype_int16; +#elif defined YY_STDINT_H +typedef int_least16_t yytype_int16; #else -typedef unsigned short int yytype_uint16; +typedef short yytype_int16; #endif -#ifdef YYTYPE_INT16 -typedef YYTYPE_INT16 yytype_int16; +#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ +typedef __UINT_LEAST8_TYPE__ yytype_uint8; +#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ + && UINT_LEAST8_MAX <= INT_MAX) +typedef uint_least8_t yytype_uint8; +#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX +typedef unsigned char yytype_uint8; #else -typedef short int yytype_int16; +typedef short yytype_uint8; +#endif + +#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__ +typedef __UINT_LEAST16_TYPE__ yytype_uint16; +#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \ + && UINT_LEAST16_MAX <= INT_MAX) +typedef uint_least16_t yytype_uint16; +#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX +typedef unsigned short yytype_uint16; +#else +typedef int yytype_uint16; +#endif + +#ifndef YYPTRDIFF_T +# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__ +# define YYPTRDIFF_T __PTRDIFF_TYPE__ +# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__ +# elif defined PTRDIFF_MAX +# ifndef ptrdiff_t +# include /* INFRINGES ON USER NAME SPACE */ +# endif +# define YYPTRDIFF_T ptrdiff_t +# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX +# else +# define YYPTRDIFF_T long +# define YYPTRDIFF_MAXIMUM LONG_MAX +# endif #endif #ifndef YYSIZE_T @@ -802,55 +1535,100 @@ typedef short int yytype_int16; # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t -# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else -# define YYSIZE_T unsigned int +# define YYSIZE_T unsigned # endif #endif -#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) +#define YYSIZE_MAXIMUM \ + YY_CAST (YYPTRDIFF_T, \ + (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \ + ? YYPTRDIFF_MAXIMUM \ + : YY_CAST (YYSIZE_T, -1))) + +#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X)) + + +/* Stored state numbers (used for stacks). */ +typedef yytype_int16 yy_state_t; + +/* State numbers in computations. */ +typedef int yy_state_fast_t; #ifndef YY_ # if defined YYENABLE_NLS && YYENABLE_NLS # if ENABLE_NLS # include /* INFRINGES ON USER NAME SPACE */ -# define YY_(msgid) dgettext ("bison-runtime", msgid) +# define YY_(Msgid) dgettext ("bison-runtime", Msgid) # endif # endif # ifndef YY_ -# define YY_(msgid) msgid +# define YY_(Msgid) Msgid +# endif +#endif + + +#ifndef YY_ATTRIBUTE_PURE +# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__) +# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__)) +# else +# define YY_ATTRIBUTE_PURE +# endif +#endif + +#ifndef YY_ATTRIBUTE_UNUSED +# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__) +# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +# else +# define YY_ATTRIBUTE_UNUSED # endif #endif /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ -# define YYUSE(e) ((void) (e)) +# define YYUSE(E) ((void) (E)) #else -# define YYUSE(e) /* empty */ +# define YYUSE(E) /* empty */ #endif -/* Identity function, used to suppress warnings about constant conditions. */ -#ifndef lint -# define YYID(n) (n) +#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") #else -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static int -YYID (int i) -#else -static int -YYID (i) - int i; +# define YY_INITIAL_VALUE(Value) Value #endif -{ - return i; -} +#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. */ #endif -#if ! defined yyoverflow || YYERROR_VERBOSE +#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__ +# define YY_IGNORE_USELESS_CAST_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"") +# define YY_IGNORE_USELESS_CAST_END \ + _Pragma ("GCC diagnostic pop") +#endif +#ifndef YY_IGNORE_USELESS_CAST_BEGIN +# define YY_IGNORE_USELESS_CAST_BEGIN +# define YY_IGNORE_USELESS_CAST_END +#endif + + +#define YY_ASSERT(E) ((void) (0 && (E))) + +#if !defined yyoverflow /* The parser invokes alloca or malloc; define the necessary symbols. */ @@ -867,11 +1645,11 @@ YYID (i) # define alloca _alloca # else # define YYSTACK_ALLOC alloca -# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS # include /* INFRINGES ON USER NAME SPACE */ -# ifndef _STDLIB_H -# define _STDLIB_H 1 + /* Use EXIT_SUCCESS as a witness for stdlib.h. */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 # endif # endif # endif @@ -879,8 +1657,8 @@ YYID (i) # endif # ifdef YYSTACK_ALLOC - /* Pacify GCC's `empty if-body' warning. */ -# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) + /* 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 @@ -894,88 +1672,89 @@ YYID (i) # ifndef YYSTACK_ALLOC_MAXIMUM # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM # endif -# if (defined __cplusplus && ! defined _STDLIB_H \ +# if (defined __cplusplus && ! defined EXIT_SUCCESS \ && ! ((defined YYMALLOC || defined malloc) \ - && (defined YYFREE || defined free))) + && (defined YYFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ -# ifndef _STDLIB_H -# define _STDLIB_H 1 +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 # endif # endif # ifndef YYMALLOC # define YYMALLOC malloc -# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# 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 _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# if ! defined free && ! defined EXIT_SUCCESS void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif # endif -#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ - +#endif /* !defined yyoverflow */ #if (! defined yyoverflow \ && (! defined __cplusplus \ - || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc { - yytype_int16 yyss; - YYSTYPE yyvs; - }; + yy_state_t yyss_alloc; + YYSTYPE yyvs_alloc; +}; /* The size of the maximum gap between one aligned stack and the next. */ -# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) +# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (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)) \ + ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) -/* Copy COUNT objects from FROM to TO. The source and destination do - not overlap. */ -# ifndef YYCOPY -# if defined __GNUC__ && 1 < __GNUC__ -# define YYCOPY(To, From, Count) \ - __builtin_memcpy (To, From, (Count) * sizeof (*(From))) -# else -# define YYCOPY(To, From, Count) \ - do \ - { \ - YYSIZE_T yyi; \ - for (yyi = 0; yyi < (Count); yyi++) \ - (To)[yyi] = (From)[yyi]; \ - } \ - while (YYID (0)) -# endif -# endif +# 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) \ - do \ - { \ - YYSIZE_T yynewbytes; \ - YYCOPY (&yyptr->Stack, Stack, yysize); \ - Stack = &yyptr->Stack; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ - } \ - while (YYID (0)) +# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ + do \ + { \ + YYPTRDIFF_T yynewbytes; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ + yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / YYSIZEOF (*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, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src))) +# else +# define YYCOPY(Dst, Src, Count) \ + do \ + { \ + YYPTRDIFF_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. */ @@ -987,18 +1766,22 @@ union yyalloc #define YYNNTS 339 /* YYNRULES -- Number of rules. */ #define YYNRULES 654 -/* YYNRULES -- Number of states. */ +/* YYNSTATES -- Number of states. */ #define YYNSTATES 972 -/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ -#define YYUNDEFTOK 2 #define YYMAXUTOK 568 -#define YYTRANSLATE(YYX) \ - ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) -/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ -static const yytype_uint16 yytranslate[] = +/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM + as returned by yylex, with out-of-bounds checking. */ +#define YYTRANSLATE(YYX) \ + (0 <= (YYX) && (YYX) <= YYMAXUTOK \ + ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \ + : YYSYMBOL_YYUNDEF) + +/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM + as returned by yylex. */ +static const yytype_int16 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -1060,249 +1843,8 @@ static const yytype_uint16 yytranslate[] = }; #if YYDEBUG -/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in - YYRHS. */ -static const yytype_uint16 yyprhs[] = -{ - 0, 0, 3, 4, 7, 10, 13, 16, 19, 22, - 25, 28, 31, 34, 37, 40, 43, 46, 48, 50, - 52, 55, 56, 58, 60, 62, 64, 66, 68, 70, - 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, - 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, - 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, - 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, - 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, - 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, - 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, - 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, - 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, - 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, - 272, 274, 276, 278, 280, 282, 284, 286, 288, 290, - 292, 294, 296, 298, 300, 302, 304, 306, 308, 310, - 312, 314, 316, 318, 320, 322, 324, 326, 328, 330, - 332, 334, 336, 338, 340, 342, 344, 346, 348, 350, - 352, 354, 356, 358, 360, 362, 364, 366, 368, 370, - 372, 374, 376, 378, 380, 382, 384, 386, 388, 390, - 392, 394, 396, 398, 400, 402, 404, 406, 408, 410, - 412, 414, 416, 418, 420, 422, 424, 426, 428, 430, - 432, 434, 436, 438, 440, 442, 444, 446, 448, 450, - 452, 454, 456, 458, 460, 462, 464, 466, 468, 470, - 472, 474, 476, 478, 480, 482, 484, 486, 488, 491, - 492, 494, 496, 498, 500, 502, 504, 506, 508, 511, - 512, 514, 516, 518, 520, 522, 524, 526, 529, 530, - 532, 534, 536, 538, 540, 542, 544, 546, 549, 550, - 552, 554, 556, 558, 560, 562, 564, 566, 568, 571, - 574, 577, 580, 583, 585, 588, 589, 591, 593, 595, - 597, 599, 601, 603, 605, 607, 609, 612, 615, 618, - 621, 624, 627, 630, 633, 636, 639, 642, 645, 648, - 651, 654, 657, 660, 663, 666, 669, 672, 675, 678, - 681, 684, 687, 690, 693, 696, 699, 702, 705, 708, - 711, 714, 717, 720, 723, 726, 729, 732, 735, 738, - 741, 744, 747, 750, 753, 756, 759, 762, 765, 768, - 771, 774, 777, 780, 783, 786, 789, 792, 795, 798, - 801, 804, 807, 810, 813, 816, 819, 822, 825, 828, - 831, 834, 837, 840, 843, 846, 849, 852, 855, 858, - 861, 864, 867, 870, 873, 876, 879, 882, 885, 888, - 891, 894, 897, 900, 903, 906, 909, 912, 915, 918, - 921, 924, 927, 930, 933, 936, 939, 942, 945, 948, - 951, 954, 957, 960, 963, 966, 969, 972, 975, 978, - 981, 984, 987, 990, 993, 996, 999, 1002, 1005, 1008, - 1011, 1015, 1018, 1021, 1024, 1027, 1030, 1033, 1036, 1039, - 1042, 1045, 1048, 1051, 1054, 1057, 1060, 1063, 1066, 1069, - 1072, 1075, 1078, 1081, 1084, 1087, 1090, 1093, 1096, 1099, - 1102, 1105, 1109, 1112, 1115, 1118, 1121, 1124, 1127, 1130, - 1133, 1136, 1139, 1143, 1147, 1152, 1157, 1162, 1166, 1170, - 1173, 1176, 1179, 1182, 1185, 1188, 1192, 1196, 1199, 1202, - 1205, 1208, 1211, 1214, 1217, 1220, 1223, 1226, 1229, 1232, - 1235, 1238, 1241, 1244, 1247, 1251, 1254, 1257, 1260, 1263, - 1266, 1269, 1272, 1275, 1278, 1281, 1284, 1287, 1290, 1293, - 1296, 1299, 1302, 1305, 1308, 1311, 1314, 1317, 1320, 1323, - 1327, 1331, 1335, 1338, 1341, 1344, 1346, 1349, 1350, 1352, - 1354, 1356, 1358, 1360, 1362, 1364, 1366, 1369, 1372, 1375, - 1378, 1381, 1384, 1387, 1390, 1392, 1395, 1396, 1398, 1400, - 1402, 1404, 1406, 1408, 1410, 1412, 1414, 1416, 1418, 1420, - 1422, 1424, 1426, 1428, 1430, 1432, 1434, 1437, 1440, 1443, - 1446, 1449, 1452, 1455, 1458, 1461, 1464, 1467, 1470, 1473, - 1476, 1479, 1482, 1485, 1488, 1491, 1493, 1496, 1497, 1499, - 1502, 1504, 1507, 1508, 1510, 1513, 1516, 1519, 1523, 1527, - 1529, 1532, 1533, 1535, 1537, 1539, 1541, 1543, 1545, 1547, - 1549, 1551, 1553, 1556, 1559, 1562, 1565, 1568, 1571, 1574, - 1577, 1580, 1583, 1585, 1588, 1589, 1591, 1593, 1595, 1597, - 1599, 1601, 1604, 1607, 1610, 1613, 1616, 1619, 1623, 1625, - 1628, 1629, 1631, 1633, 1636 -}; - -/* YYRHS -- A `-1'-separated list of the rules' RHS. */ -static const yytype_int16 yyrhs[] = -{ - 315, 0, -1, -1, 315, 316, -1, 318, 319, -1, - 321, 322, -1, 324, 325, -1, 613, 614, -1, 580, - 581, -1, 591, 592, -1, 327, 328, -1, 625, 626, - -1, 638, 639, -1, 648, 649, -1, 330, 331, -1, - 338, 339, -1, 617, 618, -1, 317, -1, 11, -1, - 12, -1, 319, 320, -1, -1, 341, -1, 342, -1, - 348, -1, 361, -1, 367, -1, 368, -1, 371, -1, - 372, -1, 369, -1, 370, -1, 373, -1, 374, -1, - 375, -1, 379, -1, 380, -1, 359, -1, 410, -1, - 411, -1, 412, -1, 413, -1, 414, -1, 440, -1, - 441, -1, 442, -1, 448, -1, 449, -1, 364, -1, - 450, -1, 451, -1, 454, -1, 452, -1, 453, -1, - 457, -1, 458, -1, 459, -1, 473, -1, 425, -1, - 426, -1, 428, -1, 429, -1, 460, -1, 476, -1, - 419, -1, 421, -1, 477, -1, 483, -1, 484, -1, - 485, -1, 365, -1, 439, -1, 503, -1, 504, -1, - 420, -1, 497, -1, 403, -1, 360, -1, 415, -1, - 474, -1, 480, -1, 461, -1, 475, -1, 506, -1, - 507, -1, 366, -1, 343, -1, 402, -1, 465, -1, - 344, -1, 362, -1, 363, -1, 416, -1, 417, -1, - 505, -1, 463, -1, 467, -1, 468, -1, 345, -1, - 508, -1, 443, -1, 472, -1, 404, -1, 424, -1, - 478, -1, 479, -1, 482, -1, 496, -1, 418, -1, - 499, -1, 500, -1, 501, -1, 431, -1, 438, -1, - 469, -1, 470, -1, 432, -1, 462, -1, 487, -1, - 405, -1, 406, -1, 381, -1, 383, -1, 409, -1, - 384, -1, 385, -1, 386, -1, 394, -1, 395, -1, - 396, -1, 397, -1, 398, -1, 399, -1, 400, -1, - 509, -1, 510, -1, 512, -1, 433, -1, 444, -1, - 445, -1, 446, -1, 447, -1, 513, -1, 514, -1, - 515, -1, 455, -1, 464, -1, 434, -1, 524, -1, - 525, -1, 436, -1, 456, -1, 528, -1, 529, -1, - 526, -1, 527, -1, 530, -1, 531, -1, 533, -1, - 532, -1, 349, -1, 350, -1, 351, -1, 352, -1, - 353, -1, 354, -1, 355, -1, 356, -1, 357, -1, - 358, -1, 466, -1, 481, -1, 502, -1, 537, -1, - 435, -1, 516, -1, 517, -1, 621, -1, 518, -1, - 521, -1, 519, -1, 520, -1, 522, -1, 538, -1, - 539, -1, 540, -1, 541, -1, 542, -1, 488, -1, - 489, -1, 490, -1, 491, -1, 492, -1, 493, -1, - 494, -1, 622, -1, 401, -1, 523, -1, 623, -1, - 624, -1, 346, -1, 347, -1, 495, -1, 427, -1, - 422, -1, 423, -1, 543, -1, 545, -1, 544, -1, - 546, -1, 547, -1, 548, -1, 382, -1, 486, -1, - 387, -1, 389, -1, 534, -1, 536, -1, 535, -1, - 388, -1, 647, -1, 408, -1, 471, -1, 511, -1, - 407, -1, 437, -1, 390, -1, 391, -1, 392, -1, - 393, -1, 549, -1, 550, -1, 430, -1, 498, -1, - 376, -1, 377, -1, 378, -1, 46, -1, 322, 323, - -1, -1, 551, -1, 552, -1, 553, -1, 557, -1, - 554, -1, 555, -1, 556, -1, 52, -1, 325, 326, - -1, -1, 558, -1, 559, -1, 560, -1, 561, -1, - 562, -1, 563, -1, 224, -1, 328, 329, -1, -1, - 573, -1, 574, -1, 577, -1, 579, -1, 575, -1, - 576, -1, 578, -1, 273, -1, 331, 332, -1, -1, - 564, -1, 565, -1, 566, -1, 567, -1, 570, -1, - 571, -1, 572, -1, 568, -1, 569, -1, 302, 10, - -1, 303, 10, -1, 304, 10, -1, 305, 10, -1, - 306, 10, -1, 301, -1, 339, 340, -1, -1, 564, - -1, 565, -1, 333, -1, 566, -1, 567, -1, 568, - -1, 334, -1, 335, -1, 336, -1, 337, -1, 14, - 10, -1, 13, 10, -1, 84, 10, -1, 87, 10, - -1, 107, 10, -1, 240, 10, -1, 241, 10, -1, - 15, 10, -1, 202, 10, -1, 203, 10, -1, 204, - 10, -1, 205, 10, -1, 206, 10, -1, 207, 10, - -1, 208, 10, -1, 209, 10, -1, 210, 10, -1, - 211, 10, -1, 17, 10, -1, 75, 10, -1, 16, - 10, -1, 88, 10, -1, 89, 10, -1, 39, 10, - -1, 68, 10, -1, 83, 10, -1, 19, 10, -1, - 20, 10, -1, 22, 10, -1, 23, 10, -1, 18, - 10, -1, 21, 10, -1, 24, 10, -1, 25, 10, - -1, 26, 10, -1, 106, 10, -1, 105, 10, -1, - 137, 10, -1, 27, 10, -1, 28, 10, -1, 135, - 10, -1, 271, 10, -1, 136, 10, -1, 138, 10, - -1, 139, 10, -1, 140, 10, -1, 144, 10, -1, - 285, 10, -1, 279, 10, -1, 294, 10, -1, 295, - 10, -1, 300, 10, -1, 296, 10, -1, 145, 10, - -1, 146, 10, -1, 147, 10, -1, 148, 10, -1, - 149, 10, -1, 150, 10, -1, 151, 10, -1, 239, - 10, -1, 85, 10, -1, 74, 10, -1, 112, 10, - -1, 132, 10, -1, 133, 10, -1, 292, 10, -1, - 289, 10, -1, 134, 10, -1, 29, 10, -1, 30, - 10, -1, 31, 10, -1, 32, 10, -1, 33, 10, - -1, 76, 10, -1, 90, 10, -1, 91, 10, -1, - 120, 10, -1, 62, 10, -1, 72, 10, -1, 63, - 10, -1, 237, 10, -1, 242, 10, -1, 113, 10, - -1, 56, 10, -1, 57, 10, -1, 236, 10, -1, - 58, 10, -1, 59, 10, -1, 311, 10, -1, 124, - 10, -1, 128, 10, -1, 129, 10, -1, 189, 10, - -1, 217, 10, -1, 190, 10, -1, 293, 10, -1, - 125, 10, -1, 69, 10, -1, 34, 10, -1, 35, - 10, -1, 36, 10, -1, 109, 10, -1, 156, 10, - -1, 157, 10, -1, 158, 10, -1, 159, 10, -1, - 37, 10, -1, 38, 10, -1, 40, 10, -1, 41, - 10, -1, 43, 10, -1, 44, 10, -1, 42, 10, - -1, 160, 10, -1, 161, 10, -1, 49, 10, -1, - 50, 10, -1, 51, 10, -1, 60, 10, -1, 79, - 10, -1, 130, 10, -1, 93, 10, -1, 188, 10, - -1, 86, 10, -1, 212, 10, -1, 94, 10, -1, - 95, 10, -1, 126, 10, -1, 127, 10, -1, 290, - 10, -1, 111, 10, -1, 55, 10, -1, 77, 10, - -1, 80, 10, 10, -1, 61, 10, -1, 64, 10, - -1, 116, 10, -1, 117, 10, -1, 78, 10, -1, - 213, 10, -1, 118, 10, -1, 65, 10, -1, 66, - 10, -1, 67, 10, -1, 238, 10, -1, 131, 10, - -1, 227, 10, -1, 228, 10, -1, 229, 10, -1, - 230, 10, -1, 231, 10, -1, 232, 10, -1, 233, - 10, -1, 234, 10, -1, 119, 10, -1, 73, 10, - -1, 312, 10, -1, 122, 10, -1, 123, 10, -1, - 121, 10, -1, 214, 10, -1, 70, 10, -1, 71, - 10, -1, 92, 10, -1, 81, 10, 10, -1, 82, - 10, -1, 108, 10, -1, 153, 10, -1, 154, 10, - -1, 291, 10, -1, 155, 10, -1, 162, 10, -1, - 163, 10, -1, 164, 10, -1, 218, 10, -1, 219, - 10, 10, -1, 220, 10, 10, -1, 222, 10, 10, - 10, -1, 223, 10, 10, 10, -1, 221, 10, 10, - 10, -1, 225, 10, 10, -1, 185, 10, 10, -1, - 192, 10, -1, 195, 10, -1, 194, 10, -1, 197, - 10, -1, 193, 10, -1, 196, 10, -1, 198, 10, - 10, -1, 199, 10, 10, -1, 200, 10, -1, 201, - 10, -1, 280, 10, -1, 283, 10, -1, 282, 10, - -1, 215, 10, -1, 216, 10, -1, 254, 10, -1, - 255, 10, -1, 256, 10, -1, 257, 10, -1, 258, - 10, -1, 260, 10, -1, 259, 10, -1, 261, 10, - -1, 262, 10, -1, 263, 10, -1, 309, 10, 10, - -1, 310, 10, -1, 45, 10, -1, 47, 10, -1, - 48, 10, -1, 152, 10, -1, 288, 10, -1, 142, - 10, -1, 110, 10, -1, 45, 10, -1, 53, 10, - -1, 54, 10, -1, 141, 10, -1, 287, 10, -1, - 143, 10, -1, 45, 10, -1, 274, 10, -1, 275, - 10, -1, 276, 10, -1, 284, 10, -1, 313, 10, - -1, 277, 10, -1, 272, 10, -1, 278, 10, -1, - 45, 10, -1, 81, 10, 10, -1, 186, 10, 10, - -1, 187, 10, 10, -1, 82, 10, -1, 108, 10, - -1, 226, 10, -1, 96, -1, 581, 582, -1, -1, - 583, -1, 585, -1, 584, -1, 587, -1, 588, -1, - 589, -1, 590, -1, 586, -1, 97, 10, -1, 99, - 10, -1, 98, 10, -1, 104, 10, -1, 100, 10, - -1, 101, 10, -1, 102, 10, -1, 103, 10, -1, - 165, -1, 592, 593, -1, -1, 594, -1, 596, -1, - 595, -1, 597, -1, 598, -1, 599, -1, 600, -1, - 601, -1, 602, -1, 603, -1, 604, -1, 605, -1, - 606, -1, 607, -1, 608, -1, 609, -1, 610, -1, - 611, -1, 612, -1, 166, 10, -1, 176, 10, -1, - 167, 10, -1, 168, 10, -1, 169, 10, -1, 170, - 10, -1, 171, 10, -1, 172, 10, -1, 173, 10, - -1, 174, 10, -1, 175, 10, -1, 177, 10, -1, - 178, 10, -1, 179, 10, -1, 180, 10, -1, 181, - 10, -1, 182, 10, -1, 183, 10, -1, 184, 10, - -1, 114, -1, 614, 615, -1, -1, 616, -1, 115, - 10, -1, 307, -1, 618, 619, -1, -1, 620, -1, - 308, 10, -1, 191, 10, -1, 235, 10, -1, 186, - 10, 10, -1, 187, 10, 10, -1, 243, -1, 626, - 627, -1, -1, 628, -1, 629, -1, 630, -1, 633, - -1, 631, -1, 632, -1, 634, -1, 635, -1, 636, - -1, 637, -1, 244, 10, -1, 245, 10, -1, 246, - 10, -1, 248, 10, -1, 249, 10, -1, 247, 10, - -1, 250, 10, -1, 251, 10, -1, 252, 10, -1, - 253, 10, -1, 264, -1, 639, 640, -1, -1, 641, - -1, 642, -1, 643, -1, 644, -1, 645, -1, 646, - -1, 265, 10, -1, 266, 10, -1, 267, 10, -1, - 268, 10, -1, 269, 10, -1, 270, 10, -1, 286, - 10, 10, -1, 297, -1, 649, 650, -1, -1, 651, - -1, 652, -1, 298, 10, -1, 299, 10, -1 -}; - -/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ -static const yytype_uint16 yyrline[] = + /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ +static const yytype_int16 yyrline[] = { 0, 188, 188, 188, 189, 189, 190, 190, 191, 191, 191, 192, 192, 193, 193, 194, 194, 195, 197, 203, @@ -1373,16 +1915,23 @@ static const yytype_uint16 yyrline[] = }; #endif -#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE +/** Accessing symbol of state STATE. */ +#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State]) + +#if YYDEBUG || 0 +/* The user-facing name of the symbol whose (internal) number is + YYSYMBOL. No bounds checking. */ +static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED; + /* 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_FORCE_TOPLEVEL", - "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", + "\"end of file\"", "error", "\"invalid token\"", "SPACE", "LETTER", + "NEWLINE", "COMMENT", "COLON", "ANY", "ZONESTR", "STRING_ARG", + "VAR_FORCE_TOPLEVEL", "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", @@ -1631,14 +2180,20 @@ static const char *const yytname[] = "cachedb_backend_name", "cachedb_secret_seed", "redis_server_host", "redis_server_port", "redis_timeout", "redis_expire_records", "server_tcp_connection_limit", "ipsetstart", "contents_ipset", - "content_ipset", "ipset_name_v4", "ipset_name_v6", 0 + "content_ipset", "ipset_name_v4", "ipset_name_v6", YY_NULLPTR }; + +static const char * +yysymbol_name (yysymbol_kind_t yysymbol) +{ + return yytname[yysymbol]; +} #endif -# ifdef YYPRINT -/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to - token YYLEX-NUM. */ -static const yytype_uint16 yytoknum[] = +#ifdef YYPRINT +/* YYTOKNUM[NUM] -- (External) token number corresponding to the + (internal) symbol number NUM (which must be that of a token). */ +static const yytype_int16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, @@ -1673,297 +2228,20 @@ static const yytype_uint16 yytoknum[] = 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568 }; -# endif +#endif -/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_uint16 yyr1[] = -{ - 0, 314, 315, 315, 316, 316, 316, 316, 316, 316, - 316, 316, 316, 316, 316, 316, 316, 316, 317, 318, - 319, 319, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 320, 320, 320, 320, 320, 320, 321, 322, 322, - 323, 323, 323, 323, 323, 323, 323, 324, 325, 325, - 326, 326, 326, 326, 326, 326, 327, 328, 328, 329, - 329, 329, 329, 329, 329, 329, 330, 331, 331, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 333, 334, - 335, 336, 337, 338, 339, 339, 340, 340, 340, 340, - 340, 340, 340, 340, 340, 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, 541, 542, 543, 544, - 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, - 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, - 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, - 575, 576, 577, 578, 579, 580, 581, 581, 582, 582, - 582, 582, 582, 582, 582, 582, 583, 584, 585, 586, - 587, 588, 589, 590, 591, 592, 592, 593, 593, 593, - 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, - 593, 593, 593, 593, 593, 593, 594, 595, 596, 597, - 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, - 608, 609, 610, 611, 612, 613, 614, 614, 615, 616, - 617, 618, 618, 619, 620, 621, 622, 623, 624, 625, - 626, 626, 627, 627, 627, 627, 627, 627, 627, 627, - 627, 627, 628, 629, 630, 631, 632, 633, 634, 635, - 636, 637, 638, 639, 639, 640, 640, 640, 640, 640, - 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, - 649, 650, 650, 651, 652 -}; +#define YYPACT_NINF (-299) -/* YYR2[YYN] -- Number of symbols composing 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, 2, 1, 1, 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, 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, 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, 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, - 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, 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, 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, 1, 2, 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 -}; +#define yypact_value_is_default(Yyn) \ + ((Yyn) == YYPACT_NINF) -/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state - STATE-NUM when YYTABLE doesn't specify something else to do. Zero - means the default is an error. */ -static const yytype_uint16 yydefact[] = -{ - 2, 0, 1, 18, 19, 237, 247, 535, 595, 554, - 256, 609, 632, 266, 648, 283, 600, 3, 17, 21, - 239, 249, 258, 268, 285, 537, 556, 597, 602, 611, - 634, 650, 4, 5, 6, 10, 14, 15, 8, 9, - 7, 16, 11, 12, 13, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 20, 22, 23, 86, 89, 98, 200, 201, 24, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 37, - 77, 25, 90, 91, 48, 70, 85, 26, 27, 30, - 31, 28, 29, 32, 33, 34, 234, 235, 236, 35, - 36, 121, 212, 122, 124, 125, 126, 214, 219, 215, - 226, 227, 228, 229, 127, 128, 129, 130, 131, 132, - 133, 196, 87, 76, 102, 119, 120, 224, 221, 123, - 38, 39, 40, 41, 42, 78, 92, 93, 108, 64, - 74, 65, 204, 205, 103, 58, 59, 203, 60, 61, - 232, 112, 116, 137, 147, 174, 150, 225, 113, 71, - 43, 44, 45, 100, 138, 139, 140, 141, 46, 47, - 49, 50, 52, 53, 51, 145, 151, 54, 55, 56, - 62, 81, 117, 95, 146, 88, 170, 96, 97, 114, - 115, 222, 101, 57, 79, 82, 63, 66, 104, 105, - 80, 171, 106, 67, 68, 69, 213, 118, 188, 189, - 190, 191, 192, 193, 194, 202, 107, 75, 233, 109, - 110, 111, 172, 72, 73, 94, 83, 84, 99, 134, - 135, 223, 136, 142, 143, 144, 175, 176, 178, 180, - 181, 179, 182, 197, 148, 149, 154, 155, 152, 153, - 156, 157, 159, 158, 216, 218, 217, 173, 183, 184, - 185, 186, 187, 206, 208, 207, 209, 210, 211, 230, - 231, 177, 195, 198, 199, 220, 0, 0, 0, 0, - 0, 0, 0, 238, 240, 241, 242, 244, 245, 246, - 243, 0, 0, 0, 0, 0, 0, 248, 250, 251, - 252, 253, 254, 255, 0, 0, 0, 0, 0, 0, - 0, 257, 259, 260, 263, 264, 261, 265, 262, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 267, 269, - 270, 271, 272, 276, 277, 273, 274, 275, 0, 0, - 0, 0, 0, 288, 292, 293, 294, 295, 284, 286, - 287, 289, 290, 291, 0, 0, 0, 0, 0, 0, - 0, 0, 536, 538, 540, 539, 545, 541, 542, 543, - 544, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 555, 557, 559, 558, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, - 0, 596, 598, 0, 601, 603, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 610, 612, 613, 614, - 616, 617, 615, 618, 619, 620, 621, 0, 0, 0, - 0, 0, 0, 633, 635, 636, 637, 638, 639, 640, - 0, 0, 649, 651, 652, 297, 296, 303, 316, 314, - 326, 322, 323, 327, 324, 325, 328, 329, 330, 334, - 335, 365, 366, 367, 368, 369, 395, 396, 397, 403, - 404, 319, 405, 406, 409, 407, 408, 412, 413, 414, - 428, 380, 381, 383, 384, 415, 431, 374, 376, 432, - 438, 439, 440, 320, 394, 458, 459, 375, 452, 358, - 315, 370, 429, 435, 416, 0, 0, 462, 321, 298, - 357, 420, 299, 317, 318, 371, 372, 460, 418, 422, - 423, 332, 331, 300, 463, 398, 427, 359, 379, 433, - 434, 437, 451, 373, 456, 454, 455, 386, 393, 424, - 425, 387, 388, 417, 442, 360, 361, 364, 336, 338, - 333, 339, 340, 341, 342, 349, 350, 351, 352, 353, - 354, 355, 464, 465, 467, 399, 400, 401, 402, 410, - 411, 468, 469, 470, 0, 0, 0, 419, 389, 391, - 605, 479, 483, 481, 480, 484, 482, 0, 0, 487, - 488, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 421, 436, 457, 492, 493, 390, 471, 0, 0, - 0, 0, 0, 0, 443, 444, 445, 446, 447, 448, - 449, 450, 606, 382, 377, 441, 356, 301, 302, 378, - 494, 495, 496, 497, 498, 500, 499, 501, 502, 503, - 337, 344, 489, 491, 490, 343, 0, 363, 426, 466, - 362, 392, 345, 346, 348, 347, 0, 505, 385, 453, - 506, 507, 508, 512, 511, 509, 510, 513, 514, 515, - 516, 518, 517, 528, 0, 532, 533, 0, 0, 534, - 519, 526, 520, 521, 522, 525, 527, 523, 524, 278, - 279, 280, 281, 282, 546, 548, 547, 550, 551, 552, - 553, 549, 576, 578, 579, 580, 581, 582, 583, 584, - 585, 586, 577, 587, 588, 589, 590, 591, 592, 593, - 594, 599, 604, 622, 623, 624, 627, 625, 626, 628, - 629, 630, 631, 641, 642, 643, 644, 645, 646, 653, - 654, 430, 461, 478, 607, 608, 485, 486, 472, 473, - 0, 0, 0, 477, 647, 504, 529, 530, 531, 476, - 474, 475 -}; +#define YYTABLE_NINF (-1) -/* YYDEFGOTO[NTERM-NUM]. */ -static const yytype_int16 yydefgoto[] = -{ - -1, 1, 17, 18, 19, 32, 260, 20, 33, 483, - 21, 34, 497, 22, 35, 511, 23, 36, 528, 543, - 544, 545, 546, 547, 24, 37, 548, 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, 484, 485, 486, - 487, 488, 489, 490, 498, 499, 500, 501, 502, 503, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 512, - 513, 514, 515, 516, 517, 518, 25, 38, 562, 563, - 564, 565, 566, 567, 568, 569, 570, 26, 39, 590, - 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, - 601, 602, 603, 604, 605, 606, 607, 608, 609, 27, - 40, 611, 612, 28, 41, 614, 615, 471, 472, 473, - 474, 29, 42, 626, 627, 628, 629, 630, 631, 632, - 633, 634, 635, 636, 30, 43, 643, 644, 645, 646, - 647, 648, 649, 475, 31, 44, 652, 653, 654 -}; +#define yytable_value_is_error(Yyn) \ + 0 -/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ -#define YYPACT_NINF -299 + /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ static const yytype_int16 yypact[] = { -299, 0, -299, -299, -299, -299, -299, -299, -299, -299, @@ -2066,7 +2344,112 @@ static const yytype_int16 yypact[] = -299, -299 }; -/* YYPGOTO[NTERM-NUM]. */ + /* 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_int16 yydefact[] = +{ + 2, 0, 1, 18, 19, 237, 247, 535, 595, 554, + 256, 609, 632, 266, 648, 283, 600, 3, 17, 21, + 239, 249, 258, 268, 285, 537, 556, 597, 602, 611, + 634, 650, 4, 5, 6, 10, 14, 15, 8, 9, + 7, 16, 11, 12, 13, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 20, 22, 23, 86, 89, 98, 200, 201, 24, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 37, + 77, 25, 90, 91, 48, 70, 85, 26, 27, 30, + 31, 28, 29, 32, 33, 34, 234, 235, 236, 35, + 36, 121, 212, 122, 124, 125, 126, 214, 219, 215, + 226, 227, 228, 229, 127, 128, 129, 130, 131, 132, + 133, 196, 87, 76, 102, 119, 120, 224, 221, 123, + 38, 39, 40, 41, 42, 78, 92, 93, 108, 64, + 74, 65, 204, 205, 103, 58, 59, 203, 60, 61, + 232, 112, 116, 137, 147, 174, 150, 225, 113, 71, + 43, 44, 45, 100, 138, 139, 140, 141, 46, 47, + 49, 50, 52, 53, 51, 145, 151, 54, 55, 56, + 62, 81, 117, 95, 146, 88, 170, 96, 97, 114, + 115, 222, 101, 57, 79, 82, 63, 66, 104, 105, + 80, 171, 106, 67, 68, 69, 213, 118, 188, 189, + 190, 191, 192, 193, 194, 202, 107, 75, 233, 109, + 110, 111, 172, 72, 73, 94, 83, 84, 99, 134, + 135, 223, 136, 142, 143, 144, 175, 176, 178, 180, + 181, 179, 182, 197, 148, 149, 154, 155, 152, 153, + 156, 157, 159, 158, 216, 218, 217, 173, 183, 184, + 185, 186, 187, 206, 208, 207, 209, 210, 211, 230, + 231, 177, 195, 198, 199, 220, 0, 0, 0, 0, + 0, 0, 0, 238, 240, 241, 242, 244, 245, 246, + 243, 0, 0, 0, 0, 0, 0, 248, 250, 251, + 252, 253, 254, 255, 0, 0, 0, 0, 0, 0, + 0, 257, 259, 260, 263, 264, 261, 265, 262, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 267, 269, + 270, 271, 272, 276, 277, 273, 274, 275, 0, 0, + 0, 0, 0, 288, 292, 293, 294, 295, 284, 286, + 287, 289, 290, 291, 0, 0, 0, 0, 0, 0, + 0, 0, 536, 538, 540, 539, 545, 541, 542, 543, + 544, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 555, 557, 559, 558, 560, 561, 562, 563, 564, 565, + 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, + 0, 596, 598, 0, 601, 603, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 610, 612, 613, 614, + 616, 617, 615, 618, 619, 620, 621, 0, 0, 0, + 0, 0, 0, 633, 635, 636, 637, 638, 639, 640, + 0, 0, 649, 651, 652, 297, 296, 303, 316, 314, + 326, 322, 323, 327, 324, 325, 328, 329, 330, 334, + 335, 365, 366, 367, 368, 369, 395, 396, 397, 403, + 404, 319, 405, 406, 409, 407, 408, 412, 413, 414, + 428, 380, 381, 383, 384, 415, 431, 374, 376, 432, + 438, 439, 440, 320, 394, 458, 459, 375, 452, 358, + 315, 370, 429, 435, 416, 0, 0, 462, 321, 298, + 357, 420, 299, 317, 318, 371, 372, 460, 418, 422, + 423, 332, 331, 300, 463, 398, 427, 359, 379, 433, + 434, 437, 451, 373, 456, 454, 455, 386, 393, 424, + 425, 387, 388, 417, 442, 360, 361, 364, 336, 338, + 333, 339, 340, 341, 342, 349, 350, 351, 352, 353, + 354, 355, 464, 465, 467, 399, 400, 401, 402, 410, + 411, 468, 469, 470, 0, 0, 0, 419, 389, 391, + 605, 479, 483, 481, 480, 484, 482, 0, 0, 487, + 488, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 421, 436, 457, 492, 493, 390, 471, 0, 0, + 0, 0, 0, 0, 443, 444, 445, 446, 447, 448, + 449, 450, 606, 382, 377, 441, 356, 301, 302, 378, + 494, 495, 496, 497, 498, 500, 499, 501, 502, 503, + 337, 344, 489, 491, 490, 343, 0, 363, 426, 466, + 362, 392, 345, 346, 348, 347, 0, 505, 385, 453, + 506, 507, 508, 512, 511, 509, 510, 513, 514, 515, + 516, 518, 517, 528, 0, 532, 533, 0, 0, 534, + 519, 526, 520, 521, 522, 525, 527, 523, 524, 278, + 279, 280, 281, 282, 546, 548, 547, 550, 551, 552, + 553, 549, 576, 578, 579, 580, 581, 582, 583, 584, + 585, 586, 577, 587, 588, 589, 590, 591, 592, 593, + 594, 599, 604, 622, 623, 624, 627, 625, 626, 628, + 629, 630, 631, 641, 642, 643, 644, 645, 646, 653, + 654, 430, 461, 478, 607, 608, 485, 486, 472, 473, + 0, 0, 0, 477, 647, 504, 529, 530, 531, 476, + 474, 475 +}; + + /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, @@ -2105,12 +2488,49 @@ static const yytype_int16 yypgoto[] = -299, -299, -299, -299, -299, -299, -299, -299, -299 }; -/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule which - number is the opposite. If zero, do what YYDEFACT says. - If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -1 -static const yytype_uint16 yytable[] = + /* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int16 yydefgoto[] = +{ + -1, 1, 17, 18, 19, 32, 260, 20, 33, 483, + 21, 34, 497, 22, 35, 511, 23, 36, 528, 543, + 544, 545, 546, 547, 24, 37, 548, 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, 484, 485, 486, + 487, 488, 489, 490, 498, 499, 500, 501, 502, 503, + 529, 530, 531, 532, 533, 534, 535, 536, 537, 512, + 513, 514, 515, 516, 517, 518, 25, 38, 562, 563, + 564, 565, 566, 567, 568, 569, 570, 26, 39, 590, + 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, + 601, 602, 603, 604, 605, 606, 607, 608, 609, 27, + 40, 611, 612, 28, 41, 614, 615, 471, 472, 473, + 474, 29, 42, 626, 627, 628, 629, 630, 631, 632, + 633, 634, 635, 636, 30, 43, 643, 644, 645, 646, + 647, 648, 649, 475, 31, 44, 652, 653, 654 +}; + + /* 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_int16 yytable[] = { 2, 519, 476, 504, 477, 478, 610, 491, 650, 651, 613, 3, 4, 655, 656, 492, 493, 519, 571, 572, @@ -2252,9 +2672,9 @@ static const yytype_int16 yycheck[] = -1, 37, 37, 37 }; -/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ -static const yytype_uint16 yystos[] = + /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_int16 yystos[] = { 0, 315, 0, 11, 12, 46, 52, 96, 114, 165, 224, 243, 264, 273, 297, 301, 307, 316, 317, 318, @@ -2356,95 +2776,182 @@ static const yytype_uint16 yystos[] = 10, 10 }; -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) -#define YYEMPTY (-2) -#define YYEOF 0 + /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_int16 yyr1[] = +{ + 0, 314, 315, 315, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 317, 318, + 319, 319, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 321, 322, 322, + 323, 323, 323, 323, 323, 323, 323, 324, 325, 325, + 326, 326, 326, 326, 326, 326, 327, 328, 328, 329, + 329, 329, 329, 329, 329, 329, 330, 331, 331, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 333, 334, + 335, 336, 337, 338, 339, 339, 340, 340, 340, 340, + 340, 340, 340, 340, 340, 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, 541, 542, 543, 544, + 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, + 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, + 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, + 575, 576, 577, 578, 579, 580, 581, 581, 582, 582, + 582, 582, 582, 582, 582, 582, 583, 584, 585, 586, + 587, 588, 589, 590, 591, 592, 592, 593, 593, 593, + 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, + 593, 593, 593, 593, 593, 593, 594, 595, 596, 597, + 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, + 608, 609, 610, 611, 612, 613, 614, 614, 615, 616, + 617, 618, 618, 619, 620, 621, 622, 623, 624, 625, + 626, 626, 627, 627, 627, 627, 627, 627, 627, 627, + 627, 627, 628, 629, 630, 631, 632, 633, 634, 635, + 636, 637, 638, 639, 639, 640, 640, 640, 640, 640, + 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, + 649, 650, 650, 651, 652 +}; -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrorlab + /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ +static const yytype_int8 yyr2[] = +{ + 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 1, 1, 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, 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, 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, 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, + 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, 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, 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, 1, 2, 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 +}; -/* Like YYERROR except do call yyerror. This remains here temporarily - to ease the transition to the new meaning of YYERROR, for GCC. - Once GCC version 2 has supplanted version 1, this can go. */ +enum { YYENOMEM = -2 }; + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab -#define YYFAIL goto yyerrlab #define YYRECOVERING() (!!yyerrstatus) -#define YYBACKUP(Token, Value) \ -do \ - if (yychar == YYEMPTY && yylen == 1) \ - { \ - yychar = (Token); \ - yylval = (Value); \ - yytoken = YYTRANSLATE (yychar); \ - YYPOPSTACK (1); \ - goto yybackup; \ - } \ - else \ - { \ - yyerror (YY_("syntax error: cannot back up")); \ - YYERROR; \ - } \ -while (YYID (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) +/* Backward compatibility with an undocumented macro. + Use YYerror or YYUNDEF. */ +#define YYERRCODE YYUNDEF -#define YYTERROR 1 -#define YYERRCODE 256 - - -/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. - If N is 0, then set CURRENT to the empty location which ends - the previous symbol: RHS[0] (always defined). */ - -#define YYRHSLOC(Rhs, K) ((Rhs)[K]) -#ifndef YYLLOC_DEFAULT -# define YYLLOC_DEFAULT(Current, Rhs, N) \ - do \ - if (YYID (N)) \ - { \ - (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ - (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ - (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ - (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ - } \ - else \ - { \ - (Current).first_line = (Current).last_line = \ - YYRHSLOC (Rhs, 0).last_line; \ - (Current).first_column = (Current).last_column = \ - YYRHSLOC (Rhs, 0).last_column; \ - } \ - while (YYID (0)) -#endif - - -/* YY_LOCATION_PRINT -- Print the location on the stream. - This macro was not mandated originally: define only if we know - we won't break user code: when these are the locations we know. */ - -#ifndef YY_LOCATION_PRINT -# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL -# define YY_LOCATION_PRINT(File, Loc) \ - fprintf (File, "%d.%d-%d.%d", \ - (Loc).first_line, (Loc).first_column, \ - (Loc).last_line, (Loc).last_column) -# else -# define YY_LOCATION_PRINT(File, Loc) ((void) 0) -# endif -#endif - - -/* YYLEX -- calling `yylex' with the right arguments. */ - -#ifdef YYLEX_PARAM -# define YYLEX yylex (YYLEX_PARAM) -#else -# define YYLEX yylex () -#endif /* Enable debugging if requested. */ #if YYDEBUG @@ -2454,80 +2961,65 @@ while (YYID (0)) # define YYFPRINTF fprintf # endif -# define YYDPRINTF(Args) \ -do { \ - if (yydebug) \ - YYFPRINTF Args; \ -} while (YYID (0)) +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (0) -# 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 (YYID (0)) +/* This macro is provided for backward compatibility. */ +# ifndef YY_LOCATION_PRINT +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +# endif -/*--------------------------------. -| Print this symbol on YYOUTPUT. | -`--------------------------------*/ +# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Kind, Value); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (0) + + +/*-----------------------------------. +| Print this symbol's value on YYO. | +`-----------------------------------*/ -/*ARGSUSED*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static void -yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) -#else -static void -yy_symbol_value_print (yyoutput, yytype, yyvaluep) - FILE *yyoutput; - int yytype; - YYSTYPE const * const yyvaluep; -#endif +yy_symbol_value_print (FILE *yyo, + yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep) { + FILE *yyoutput = yyo; + YYUSE (yyoutput); if (!yyvaluep) return; # ifdef YYPRINT - if (yytype < YYNTOKENS) - YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); -# else - YYUSE (yyoutput); + if (yykind < YYNTOKENS) + YYPRINT (yyo, yytoknum[yykind], *yyvaluep); # endif - switch (yytype) - { - default: - break; - } + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + YYUSE (yykind); + YY_IGNORE_MAYBE_UNINITIALIZED_END } -/*--------------------------------. -| Print this symbol on YYOUTPUT. | -`--------------------------------*/ +/*---------------------------. +| Print this symbol on YYO. | +`---------------------------*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static void -yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) -#else -static void -yy_symbol_print (yyoutput, yytype, yyvaluep) - FILE *yyoutput; - int yytype; - YYSTYPE const * const yyvaluep; -#endif +yy_symbol_print (FILE *yyo, + yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep) { - if (yytype < YYNTOKENS) - YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); - else - YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + YYFPRINTF (yyo, "%s %s (", + yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind)); - yy_symbol_value_print (yyoutput, yytype, yyvaluep); - YYFPRINTF (yyoutput, ")"); + yy_symbol_value_print (yyo, yykind, yyvaluep); + YYFPRINTF (yyo, ")"); } /*------------------------------------------------------------------. @@ -2535,80 +3027,68 @@ yy_symbol_print (yyoutput, yytype, yyvaluep) | TOP (included). | `------------------------------------------------------------------*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static void -yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) -#else -static void -yy_stack_print (bottom, top) - yytype_int16 *bottom; - yytype_int16 *top; -#endif +yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop) { YYFPRINTF (stderr, "Stack now"); - for (; bottom <= top; ++bottom) - YYFPRINTF (stderr, " %d", *bottom); + 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 (YYID (0)) +# 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. | `------------------------------------------------*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static void -yy_reduce_print (YYSTYPE *yyvsp, int yyrule) -#else -static void -yy_reduce_print (yyvsp, yyrule) - YYSTYPE *yyvsp; - int yyrule; -#endif +yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, + int yyrule) { + int yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; - unsigned long int yylno = yyrline[yyrule]; - YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", - yyrule - 1, yylno); + YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n", + yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { - fprintf (stderr, " $%d = ", yyi + 1); - yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], - &(yyvsp[(yyi + 1) - (yynrhs)]) - ); - fprintf (stderr, "\n"); + YYFPRINTF (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, + YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]), + &yyvsp[(yyi + 1) - (yynrhs)]); + YYFPRINTF (stderr, "\n"); } } -# define YY_REDUCE_PRINT(Rule) \ -do { \ - if (yydebug) \ - yy_reduce_print (yyvsp, Rule); \ -} while (YYID (0)) +# 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 YYDPRINTF(Args) ((void) 0) +# define YY_SYMBOL_PRINT(Title, Kind, 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 +#ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif @@ -2623,478 +3103,230 @@ int yydebug; # define YYMAXDEPTH 10000 #endif - -#if YYERROR_VERBOSE -# ifndef yystrlen -# if defined __GLIBC__ && defined _STRING_H -# define yystrlen strlen -# else -/* Return the length of YYSTR. */ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static YYSIZE_T -yystrlen (const char *yystr) -#else -static YYSIZE_T -yystrlen (yystr) - const char *yystr; -#endif -{ - 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. */ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static char * -yystpcpy (char *yydest, const char *yysrc) -#else -static char * -yystpcpy (yydest, yysrc) - char *yydest; - const char *yysrc; -#endif -{ - 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; - /* Fall through. */ - 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 yystpcpy (yyres, yystr) - yyres; -} -# endif - -/* Copy into YYRESULT an error message about the unexpected token - YYCHAR while in state YYSTATE. Return the number of bytes copied, - including the terminating null byte. If YYRESULT is null, do not - copy anything; just return the number of bytes that would be - copied. As a special case, return 0 if an ordinary "syntax error" - message will do. Return YYSIZE_MAXIMUM if overflow occurs during - size calculation. */ -static YYSIZE_T -yysyntax_error (char *yyresult, int yystate, int yychar) -{ - int yyn = yypact[yystate]; - - if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) - return 0; - else - { - int yytype = YYTRANSLATE (yychar); - YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); - YYSIZE_T yysize = yysize0; - YYSIZE_T yysize1; - int yysize_overflow = 0; - enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; - char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; - int yyx; - -# if 0 - /* This is so xgettext sees the translatable formats that are - constructed on the fly. */ - YY_("syntax error, unexpected %s"); - YY_("syntax error, unexpected %s, expecting %s"); - YY_("syntax error, unexpected %s, expecting %s or %s"); - YY_("syntax error, unexpected %s, expecting %s or %s or %s"); - YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); -# endif - char *yyfmt; - char const *yyf; - static char const yyunexpected[] = "syntax error, unexpected %s"; - static char const yyexpecting[] = ", expecting %s"; - static char const yyor[] = " or %s"; - char yyformat[sizeof yyunexpected - + sizeof yyexpecting - 1 - + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) - * (sizeof yyor - 1))]; - char const *yyprefix = yyexpecting; - - /* Start YYX at -YYN if negative to avoid negative indexes in - YYCHECK. */ - 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 yycount = 1; - - yyarg[0] = yytname[yytype]; - yyfmt = yystpcpy (yyformat, yyunexpected); - - for (yyx = yyxbegin; yyx < yyxend; ++yyx) - if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) - { - if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) - { - yycount = 1; - yysize = yysize0; - yyformat[sizeof yyunexpected - 1] = '\0'; - break; - } - yyarg[yycount++] = yytname[yyx]; - yysize1 = yysize + yytnamerr (0, yytname[yyx]); - yysize_overflow |= (yysize1 < yysize); - yysize = yysize1; - yyfmt = yystpcpy (yyfmt, yyprefix); - yyprefix = yyor; - } - - yyf = YY_(yyformat); - yysize1 = yysize + yystrlen (yyf); - yysize_overflow |= (yysize1 < yysize); - yysize = yysize1; - - if (yysize_overflow) - return YYSIZE_MAXIMUM; - - if (yyresult) - { - /* 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 = yyresult; - int yyi = 0; - while ((*yyp = *yyf) != '\0') - { - if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) - { - yyp += yytnamerr (yyp, yyarg[yyi++]); - yyf += 2; - } - else - { - yyp++; - yyf++; - } - } - } - return yysize; - } -} -#endif /* YYERROR_VERBOSE */ - /*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ -/*ARGSUSED*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static void -yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) -#else -static void -yydestruct (yymsg, yytype, yyvaluep) - const char *yymsg; - int yytype; - YYSTYPE *yyvaluep; -#endif +yydestruct (const char *yymsg, + yysymbol_kind_t yykind, YYSTYPE *yyvaluep) { YYUSE (yyvaluep); - if (!yymsg) yymsg = "Deleting"; - YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp); - switch (yytype) - { - - default: - break; - } + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + YYUSE (yykind); + YY_IGNORE_MAYBE_UNINITIALIZED_END } - - -/* Prevent warnings from -Wmissing-prototypes. */ - -#ifdef YYPARSE_PARAM -#if defined __STDC__ || defined __cplusplus -int yyparse (void *YYPARSE_PARAM); -#else -int yyparse (); -#endif -#else /* ! YYPARSE_PARAM */ -#if defined __STDC__ || defined __cplusplus -int yyparse (void); -#else -int yyparse (); -#endif -#endif /* ! YYPARSE_PARAM */ - -/* The look-ahead symbol. */ +/* The lookahead symbol. */ int yychar; -/* The semantic value of the look-ahead symbol. */ +/* The semantic value of the lookahead symbol. */ YYSTYPE yylval; - /* Number of syntax errors so far. */ int yynerrs; + /*----------. | yyparse. | `----------*/ -#ifdef YYPARSE_PARAM -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -int -yyparse (void *YYPARSE_PARAM) -#else -int -yyparse (YYPARSE_PARAM) - void *YYPARSE_PARAM; -#endif -#else /* ! YYPARSE_PARAM */ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) int yyparse (void) -#else -int -yyparse () - -#endif -#endif { - - int yystate; + yy_state_fast_t 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. */ + + /* Their size. */ + YYPTRDIFF_T yystacksize; + + /* The state stack. */ + yy_state_t yyssa[YYINITDEPTH]; + yy_state_t *yyss; + yy_state_t *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs; + YYSTYPE *yyvsp; + int yyn; + /* The return value of yyparse. */ int yyresult; - /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; - /* Look-ahead token as an internal (translated) token number. */ - int yytoken = 0; -#if YYERROR_VERBOSE - /* Buffer for error messages, and its allocated size. */ - char yymsgbuf[128]; - char *yymsg = yymsgbuf; - YYSIZE_T yymsg_alloc = sizeof yymsgbuf; -#endif - - /* Three stacks and their tools: - `yyss': related to states, - `yyvs': related to semantic values, - `yyls': related to locations. - - Refer to the stacks thru separate pointers, to allow yyoverflow - to reallocate them elsewhere. */ - - /* The state stack. */ - yytype_int16 yyssa[YYINITDEPTH]; - yytype_int16 *yyss = yyssa; - yytype_int16 *yyssp; - - /* The semantic value stack. */ - YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs = yyvsa; - YYSTYPE *yyvsp; - - - -#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) - - YYSIZE_T yystacksize = YYINITDEPTH; - + /* Lookahead token as an internal (translated) token number. */ + yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; + +#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; - YYDPRINTF ((stderr, "Starting parse\n")); - + yynerrs = 0; yystate = 0; yyerrstatus = 0; - yynerrs = 0; - yychar = YYEMPTY; /* Cause a token to be read. */ - /* Initialize stack pointers. - Waste one element of value and location stack - so that they stay on the same level as the state stack. - The wasted elements are never initialized. */ + yystacksize = YYINITDEPTH; + yyssp = yyss = yyssa; + yyvsp = yyvs = yyvsa; - yyssp = yyss; - yyvsp = yyvs; + YYDPRINTF ((stderr, "Starting parse\n")); + + 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++; - yysetstate: - *yyssp = yystate; + +/*--------------------------------------------------------------------. +| yysetstate -- set current state (the top of the stack) to yystate. | +`--------------------------------------------------------------------*/ +yysetstate: + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + YY_ASSERT (0 <= yystate && yystate < YYNSTATES); + YY_IGNORE_USELESS_CAST_BEGIN + *yyssp = YY_CAST (yy_state_t, yystate); + YY_IGNORE_USELESS_CAST_END + YY_STACK_PRINT (yyss, yyssp); 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 = yyssp - yyss + 1; + YYPTRDIFF_T yysize = yyssp - yyss + 1; -#ifdef yyoverflow +# 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; + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + yy_state_t *yyss1 = yyss; + YYSTYPE *yyvs1 = yyvs; - - /* 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; + /* 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 * YYSIZEOF (*yyssp), + &yyvs1, yysize * YYSIZEOF (*yyvsp), + &yystacksize); + yyss = yyss1; + yyvs = yyvs1; } -#else /* no yyoverflow */ -# ifndef YYSTACK_RELOCATE - goto yyexhaustedlab; -# else +# else /* defined YYSTACK_RELOCATE */ /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) - goto yyexhaustedlab; + goto yyexhaustedlab; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) - yystacksize = YYMAXDEPTH; + yystacksize = YYMAXDEPTH; { - yytype_int16 *yyss1 = yyss; - union yyalloc *yyptr = - (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); - if (! yyptr) - goto yyexhaustedlab; - YYSTACK_RELOCATE (yyss); - YYSTACK_RELOCATE (yyvs); - + yy_state_t *yyss1 = yyss; + union yyalloc *yyptr = + YY_CAST (union yyalloc *, + YYSTACK_ALLOC (YY_CAST (YYSIZE_T, 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); + 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 int) yystacksize)); + YY_IGNORE_USELESS_CAST_BEGIN + YYDPRINTF ((stderr, "Stack size increased to %ld\n", + YY_CAST (long, yystacksize))); + YY_IGNORE_USELESS_CAST_END if (yyss + yystacksize - 1 <= yyssp) - YYABORT; + 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 - look-ahead token if we need one and don't already have one. */ + lookahead token if we need one and don't already have one. */ - /* First try to decide what to do without reference to look-ahead token. */ + /* First try to decide what to do without reference to lookahead token. */ yyn = yypact[yystate]; - if (yyn == YYPACT_NINF) + if (yypact_value_is_default (yyn)) goto yydefault; - /* Not known => get a look-ahead token if don't already have one. */ + /* Not known => get a lookahead token if don't already have one. */ - /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ + /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */ if (yychar == YYEMPTY) { - YYDPRINTF ((stderr, "Reading a token: ")); - yychar = YYLEX; + YYDPRINTF ((stderr, "Reading a token\n")); + yychar = yylex (); } if (yychar <= YYEOF) { - yychar = yytoken = YYEOF; + yychar = YYEOF; + yytoken = YYSYMBOL_YYEOF; YYDPRINTF ((stderr, "Now at end of input.\n")); } + else if (yychar == YYerror) + { + /* The scanner already issued an error message, process directly + to error recovery. But do not keep the error token as + lookahead, it is too special and may lead us to an endless + loop in error recovery. */ + yychar = YYUNDEF; + yytoken = YYSYMBOL_YYerror; + goto yyerrlab1; + } else { yytoken = YYTRANSLATE (yychar); @@ -3109,30 +3341,26 @@ yybackup: yyn = yytable[yyn]; if (yyn <= 0) { - if (yyn == 0 || yyn == YYTABLE_NINF) - goto yyerrlab; + if (yytable_value_is_error (yyn)) + goto yyerrlab; yyn = -yyn; goto yyreduce; } - if (yyn == YYFINAL) - YYACCEPT; - /* Count tokens shifted since error; after three, turn off error status. */ if (yyerrstatus) yyerrstatus--; - /* Shift the look-ahead token. */ + /* Shift the lookahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); - - /* Discard the shifted token unless it is eof. */ - if (yychar != YYEOF) - yychar = YYEMPTY; - yystate = yyn; + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END + /* Discard the shifted token. */ + yychar = YYEMPTY; goto yynewstate; @@ -3147,14 +3375,14 @@ yydefault: /*-----------------------------. -| yyreduce -- Do a reduction. | +| 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'. + '$$ = $1'. Otherwise, the following line sets YYVAL to garbage. This behavior is undocumented and Bison @@ -3167,23 +3395,25 @@ yyreduce: YY_REDUCE_PRINT (yyn); switch (yyn) { - case 18: -#line 198 "util/configparser.y" - { + case 18: +#line 198 "./util/configparser.y" + { OUTYY(("\nP(force-toplevel)\n")); } +#line 3404 "util/configparser.c" break; case 19: -#line 204 "util/configparser.y" - { +#line 204 "./util/configparser.y" + { OUTYY(("\nP(server:)\n")); } +#line 3412 "util/configparser.c" break; case 237: -#line 309 "util/configparser.y" - { +#line 309 "./util/configparser.y" + { struct config_stub* s; OUTYY(("\nP(stub_zone:)\n")); s = (struct config_stub*)calloc(1, sizeof(struct config_stub)); @@ -3193,11 +3423,12 @@ yyreduce: } else yyerror("out of memory"); } +#line 3427 "util/configparser.c" break; case 247: -#line 326 "util/configparser.y" - { +#line 326 "./util/configparser.y" + { struct config_stub* s; OUTYY(("\nP(forward_zone:)\n")); s = (struct config_stub*)calloc(1, sizeof(struct config_stub)); @@ -3207,11 +3438,12 @@ yyreduce: } else yyerror("out of memory"); } +#line 3442 "util/configparser.c" break; case 256: -#line 343 "util/configparser.y" - { +#line 343 "./util/configparser.y" + { struct config_view* s; OUTYY(("\nP(view:)\n")); s = (struct config_view*)calloc(1, sizeof(struct config_view)); @@ -3223,11 +3455,12 @@ yyreduce: } else yyerror("out of memory"); } +#line 3459 "util/configparser.c" break; case 266: -#line 362 "util/configparser.y" - { +#line 362 "./util/configparser.y" + { struct config_auth* s; OUTYY(("\nP(auth_zone:)\n")); s = (struct config_auth*)calloc(1, sizeof(struct config_auth)); @@ -3243,17 +3476,18 @@ yyreduce: } else yyerror("out of memory"); } +#line 3480 "util/configparser.c" break; case 278: -#line 387 "util/configparser.y" - { +#line 387 "./util/configparser.y" + { uint8_t* bitlist; size_t len = 0; - OUTYY(("P(server_local_zone_tag:%s)\n", (yyvsp[(2) - (2)].str))); - bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[(2) - (2)].str), + OUTYY(("P(server_local_zone_tag:%s)\n", (yyvsp[0].str))); + bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), &len); - free((yyvsp[(2) - (2)].str)); + free((yyvsp[0].str)); if(!bitlist) { yyerror("could not parse tags, (define-tag them first)"); } @@ -3263,58 +3497,63 @@ yyreduce: } } +#line 3501 "util/configparser.c" break; case 279: -#line 406 "util/configparser.y" - { - OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "nxdomain")!=0 && strcmp((yyvsp[(2) - (2)].str), "nodata")!=0 && - strcmp((yyvsp[(2) - (2)].str), "passthru")!=0 && strcmp((yyvsp[(2) - (2)].str), "drop")!=0 && - strcmp((yyvsp[(2) - (2)].str), "cname")!=0 && strcmp((yyvsp[(2) - (2)].str), "disabled")!=0) { +#line 406 "./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[(2) - (2)].str)); + free((yyvsp[0].str)); cfg_parser->cfg->auths->rpz_action_override = NULL; } else { - cfg_parser->cfg->auths->rpz_action_override = (yyvsp[(2) - (2)].str); + cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); } } +#line 3520 "util/configparser.c" break; case 280: -#line 423 "util/configparser.y" - { - OUTYY(("P(rpz_cname_override:%s)\n", (yyvsp[(2) - (2)].str))); +#line 423 "./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[(2) - (2)].str); + cfg_parser->cfg->auths->rpz_cname = (yyvsp[0].str); } +#line 3530 "util/configparser.c" break; case 281: -#line 431 "util/configparser.y" - { - OUTYY(("P(rpz_log:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 431 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 3542 "util/configparser.c" break; case 282: -#line 441 "util/configparser.y" - { - OUTYY(("P(rpz_log_name:%s)\n", (yyvsp[(2) - (2)].str))); +#line 441 "./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[(2) - (2)].str); + cfg_parser->cfg->auths->rpz_log_name = (yyvsp[0].str); } +#line 3552 "util/configparser.c" break; case 283: -#line 449 "util/configparser.y" - { +#line 449 "./util/configparser.y" + { struct config_auth* s; OUTYY(("\nP(rpz:)\n")); s = (struct config_auth*)calloc(1, sizeof(struct config_auth)); @@ -3329,273 +3568,292 @@ yyreduce: } else yyerror("out of memory"); } +#line 3572 "util/configparser.c" break; case 296: -#line 472 "util/configparser.y" - { - OUTYY(("P(server_num_threads:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) +#line 472 "./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[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 3584 "util/configparser.c" break; case 297: -#line 481 "util/configparser.y" - { - OUTYY(("P(server_verbosity:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) +#line 481 "./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[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 3596 "util/configparser.c" break; case 298: -#line 490 "util/configparser.y" - { - OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "") == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) +#line 490 "./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[(2) - (2)].str)) == 0) + else if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); - else cfg_parser->cfg->stat_interval = atoi((yyvsp[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 3610 "util/configparser.c" break; case 299: -#line 501 "util/configparser.y" - { - OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 501 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 3622 "util/configparser.c" break; case 300: -#line 510 "util/configparser.y" - { - OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 510 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 3634 "util/configparser.c" break; case 301: -#line 519 "util/configparser.y" - { - OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 519 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 3646 "util/configparser.c" break; case 302: -#line 528 "util/configparser.y" - { - OUTYY(("P(server_shm_key:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "") == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) +#line 528 "./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[(2) - (2)].str)) == 0) + else if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); - else cfg_parser->cfg->shm_key = atoi((yyvsp[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 3660 "util/configparser.c" break; case 303: -#line 539 "util/configparser.y" - { - OUTYY(("P(server_port:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0) +#line 539 "./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[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->port = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 3672 "util/configparser.c" break; case 304: -#line 548 "util/configparser.y" - { +#line 548 "./util/configparser.y" + { #ifdef CLIENT_SUBNET - OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet, (yyvsp[(2) - (2)].str))) + 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[(2) - (2)].str)); + free((yyvsp[0].str)); #endif } +#line 3687 "util/configparser.c" break; case 305: -#line 560 "util/configparser.y" - { +#line 560 "./util/configparser.y" + { #ifdef CLIENT_SUBNET - OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[(2) - (2)].str))); + OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet_zone, - (yyvsp[(2) - (2)].str))) + (yyvsp[0].str))) fatal_exit("out of memory adding client-subnet-zone"); #else OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); - free((yyvsp[(2) - (2)].str)); + free((yyvsp[0].str)); #endif } +#line 3703 "util/configparser.c" break; case 306: -#line 574 "util/configparser.y" - { +#line 574 "./util/configparser.y" + { #ifdef CLIENT_SUBNET - OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + 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[(2) - (2)].str), "yes")==0); + (strcmp((yyvsp[0].str), "yes")==0); #else OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); #endif - free((yyvsp[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 3721 "util/configparser.c" break; case 307: -#line 589 "util/configparser.y" - { +#line 589 "./util/configparser.y" + { #ifdef CLIENT_SUBNET - OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[(2) - (2)].str))); + 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[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 3735 "util/configparser.c" break; case 308: -#line 600 "util/configparser.y" - { +#line 600 "./util/configparser.y" + { #ifdef CLIENT_SUBNET - OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + 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[(2) - (2)].str)) > 32) + else if (atoi((yyvsp[0].str)) > 32) cfg_parser->cfg->max_client_subnet_ipv4 = 32; - else if (atoi((yyvsp[(2) - (2)].str)) < 0) + 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[(2) - (2)].str)); + 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[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 3755 "util/configparser.c" break; case 309: -#line 617 "util/configparser.y" - { +#line 617 "./util/configparser.y" + { #ifdef CLIENT_SUBNET - OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + 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[(2) - (2)].str)) > 128) + else if (atoi((yyvsp[0].str)) > 128) cfg_parser->cfg->max_client_subnet_ipv6 = 128; - else if (atoi((yyvsp[(2) - (2)].str)) < 0) + 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[(2) - (2)].str)); + 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[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 3775 "util/configparser.c" break; case 310: -#line 634 "util/configparser.y" - { +#line 634 "./util/configparser.y" + { #ifdef CLIENT_SUBNET - OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + 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[(2) - (2)].str)) > 32) + else if (atoi((yyvsp[0].str)) > 32) cfg_parser->cfg->min_client_subnet_ipv4 = 32; - else if (atoi((yyvsp[(2) - (2)].str)) < 0) + 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[(2) - (2)].str)); + 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[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 3795 "util/configparser.c" break; case 311: -#line 651 "util/configparser.y" - { +#line 651 "./util/configparser.y" + { #ifdef CLIENT_SUBNET - OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + 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[(2) - (2)].str)) > 128) + else if (atoi((yyvsp[0].str)) > 128) cfg_parser->cfg->min_client_subnet_ipv6 = 128; - else if (atoi((yyvsp[(2) - (2)].str)) < 0) + 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[(2) - (2)].str)); + 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[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 3815 "util/configparser.c" break; case 312: -#line 668 "util/configparser.y" - { +#line 668 "./util/configparser.y" + { #ifdef CLIENT_SUBNET - OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + 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[(2) - (2)].str)) < 0) + 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[(2) - (2)].str)); + 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[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 3833 "util/configparser.c" break; case 313: -#line 683 "util/configparser.y" - { +#line 683 "./util/configparser.y" + { #ifdef CLIENT_SUBNET - OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + 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[(2) - (2)].str)) < 0) + 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[(2) - (2)].str)); + 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[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 3851 "util/configparser.c" break; case 314: -#line 698 "util/configparser.y" - { - OUTYY(("P(server_interface:%s)\n", (yyvsp[(2) - (2)].str))); +#line 698 "./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, @@ -3603,14 +3861,15 @@ yyreduce: if(!cfg_parser->cfg->ifs) yyerror("out of memory"); else - cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[(2) - (2)].str); + cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } +#line 3867 "util/configparser.c" break; case 315: -#line 711 "util/configparser.y" - { - OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[(2) - (2)].str))); +#line 711 "./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( @@ -3620,590 +3879,642 @@ yyreduce: yyerror("out of memory"); else cfg_parser->cfg->out_ifs[ - cfg_parser->cfg->num_out_ifs++] = (yyvsp[(2) - (2)].str); + cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } +#line 3885 "util/configparser.c" break; case 316: -#line 726 "util/configparser.y" - { - OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0) +#line 726 "./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[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 3897 "util/configparser.c" break; case 317: -#line 735 "util/configparser.y" - { - OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_mark_ports((yyvsp[(2) - (2)].str), 1, +#line 735 "./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[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 3909 "util/configparser.c" break; case 318: -#line 744 "util/configparser.y" - { - OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_mark_ports((yyvsp[(2) - (2)].str), 0, +#line 744 "./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[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 3921 "util/configparser.c" break; case 319: -#line 753 "util/configparser.y" - { - OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) +#line 753 "./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[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 3933 "util/configparser.c" break; case 320: -#line 762 "util/configparser.y" - { - OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) +#line 762 "./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[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 3945 "util/configparser.c" break; case 321: -#line 771 "util/configparser.y" - { - OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 771 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 3957 "util/configparser.c" break; case 322: -#line 780 "util/configparser.y" - { - OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 780 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 3969 "util/configparser.c" break; case 323: -#line 789 "util/configparser.y" - { - OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 789 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 3981 "util/configparser.c" break; case 324: -#line 798 "util/configparser.y" - { - OUTYY(("P(server_do_udp:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 798 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 3993 "util/configparser.c" break; case 325: -#line 807 "util/configparser.y" - { - OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 807 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 4005 "util/configparser.c" break; case 326: -#line 816 "util/configparser.y" - { - OUTYY(("P(server_prefer_ip4:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 816 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 4017 "util/configparser.c" break; case 327: -#line 825 "util/configparser.y" - { - OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 825 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 4029 "util/configparser.c" break; case 328: -#line 834 "util/configparser.y" - { - OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) +#line 834 "./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[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 4041 "util/configparser.c" break; case 329: -#line 843 "util/configparser.y" - { - OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) +#line 843 "./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[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 4053 "util/configparser.c" break; case 330: -#line 852 "util/configparser.y" - { - OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) +#line 852 "./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[(2) - (2)].str)) > 120000) + else if (atoi((yyvsp[0].str)) > 120000) cfg_parser->cfg->tcp_idle_timeout = 120000; - else if (atoi((yyvsp[(2) - (2)].str)) < 1) + else if (atoi((yyvsp[0].str)) < 1) cfg_parser->cfg->tcp_idle_timeout = 1; - else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 4069 "util/configparser.c" break; case 331: -#line 865 "util/configparser.y" - { - OUTYY(("P(server_max_reuse_tcp_queries:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) +#line 865 "./util/configparser.y" + { + OUTYY(("P(server_max_reuse_tcp_queries:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); - else if (atoi((yyvsp[(2) - (2)].str)) < 1) + else if (atoi((yyvsp[0].str)) < 1) cfg_parser->cfg->max_reuse_tcp_queries = 0; - else cfg_parser->cfg->max_reuse_tcp_queries = atoi((yyvsp[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->max_reuse_tcp_queries = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 4083 "util/configparser.c" break; case 332: -#line 876 "util/configparser.y" - { - OUTYY(("P(server_tcp_reuse_timeout:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) +#line 876 "./util/configparser.y" + { + OUTYY(("P(server_tcp_reuse_timeout:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); - else if (atoi((yyvsp[(2) - (2)].str)) < 1) + else if (atoi((yyvsp[0].str)) < 1) cfg_parser->cfg->tcp_reuse_timeout = 0; - else cfg_parser->cfg->tcp_reuse_timeout = atoi((yyvsp[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->tcp_reuse_timeout = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 4097 "util/configparser.c" break; case 333: -#line 887 "util/configparser.y" - { - OUTYY(("P(server_tcp_auth_query_timeout:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) +#line 887 "./util/configparser.y" + { + OUTYY(("P(server_tcp_auth_query_timeout:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); - else if (atoi((yyvsp[(2) - (2)].str)) < 1) + else if (atoi((yyvsp[0].str)) < 1) cfg_parser->cfg->tcp_auth_query_timeout = 0; - else cfg_parser->cfg->tcp_auth_query_timeout = atoi((yyvsp[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->tcp_auth_query_timeout = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 4111 "util/configparser.c" break; case 334: -#line 898 "util/configparser.y" - { - OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 898 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 4123 "util/configparser.c" break; case 335: -#line 907 "util/configparser.y" - { - OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) +#line 907 "./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[(2) - (2)].str)) > 6553500) + else if (atoi((yyvsp[0].str)) > 6553500) cfg_parser->cfg->tcp_keepalive_timeout = 6553500; - else if (atoi((yyvsp[(2) - (2)].str)) < 1) + else if (atoi((yyvsp[0].str)) < 1) cfg_parser->cfg->tcp_keepalive_timeout = 0; - else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 4139 "util/configparser.c" break; case 336: -#line 920 "util/configparser.y" - { - OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 920 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 4151 "util/configparser.c" break; case 337: -#line 929 "util/configparser.y" - { - OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 929 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 4163 "util/configparser.c" break; case 338: -#line 938 "util/configparser.y" - { - OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 938 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 4175 "util/configparser.c" break; case 339: -#line 947 "util/configparser.y" - { - OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[(2) - (2)].str))); +#line 947 "./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[(2) - (2)].str); + cfg_parser->cfg->ssl_service_key = (yyvsp[0].str); } +#line 4185 "util/configparser.c" break; case 340: -#line 954 "util/configparser.y" - { - OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[(2) - (2)].str))); +#line 954 "./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[(2) - (2)].str); + cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str); } +#line 4195 "util/configparser.c" break; case 341: -#line 961 "util/configparser.y" - { - OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0) +#line 961 "./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[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 4207 "util/configparser.c" break; case 342: -#line 970 "util/configparser.y" - { - OUTYY(("P(server_tls_cert_bundle:%s)\n", (yyvsp[(2) - (2)].str))); +#line 970 "./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[(2) - (2)].str); + cfg_parser->cfg->tls_cert_bundle = (yyvsp[0].str); } +#line 4217 "util/configparser.c" break; case 343: -#line 977 "util/configparser.y" - { - OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 977 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 4229 "util/configparser.c" break; case 344: -#line 986 "util/configparser.y" - { - OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[(2) - (2)].str))); +#line 986 "./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[(2) - (2)].str))) + (yyvsp[0].str))) yyerror("out of memory"); } +#line 4240 "util/configparser.c" break; case 345: -#line 994 "util/configparser.y" - { - OUTYY(("P(server_tls_ciphers:%s)\n", (yyvsp[(2) - (2)].str))); +#line 994 "./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[(2) - (2)].str); + cfg_parser->cfg->tls_ciphers = (yyvsp[0].str); } +#line 4250 "util/configparser.c" break; case 346: -#line 1001 "util/configparser.y" - { - OUTYY(("P(server_tls_ciphersuites:%s)\n", (yyvsp[(2) - (2)].str))); +#line 1001 "./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[(2) - (2)].str); + cfg_parser->cfg->tls_ciphersuites = (yyvsp[0].str); } +#line 4260 "util/configparser.c" break; case 347: -#line 1008 "util/configparser.y" - { - OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[(2) - (2)].str))); +#line 1008 "./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[(2) - (2)].str))) + (yyvsp[0].str))) yyerror("out of memory"); } +#line 4271 "util/configparser.c" break; case 348: -#line 1016 "util/configparser.y" - { - OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 1016 "./util/configparser.y" + { + OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str))); + if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 4283 "util/configparser.c" break; case 349: -#line 1025 "util/configparser.y" - { - OUTYY(("P(server_https_port:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0) +#line 1025 "./util/configparser.y" + { + OUTYY(("P(server_https_port:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0) yyerror("port number expected"); - else cfg_parser->cfg->https_port = atoi((yyvsp[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->https_port = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 4295 "util/configparser.c" break; case 350: -#line 1033 "util/configparser.y" - { - OUTYY(("P(server_http_endpoint:%s)\n", (yyvsp[(2) - (2)].str))); +#line 1033 "./util/configparser.y" + { + OUTYY(("P(server_http_endpoint:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->http_endpoint); - if((yyvsp[(2) - (2)].str) && (yyvsp[(2) - (2)].str)[0] != '/') { - cfg_parser->cfg->http_endpoint = malloc(strlen((yyvsp[(2) - (2)].str))+2); + if((yyvsp[0].str) && (yyvsp[0].str)[0] != '/') { + cfg_parser->cfg->http_endpoint = malloc(strlen((yyvsp[0].str))+2); if(!cfg_parser->cfg->http_endpoint) yyerror("out of memory"); cfg_parser->cfg->http_endpoint[0] = '/'; - memmove(cfg_parser->cfg->http_endpoint+1, (yyvsp[(2) - (2)].str), - strlen((yyvsp[(2) - (2)].str))+1); - free((yyvsp[(2) - (2)].str)); + memmove(cfg_parser->cfg->http_endpoint+1, (yyvsp[0].str), + strlen((yyvsp[0].str))+1); + free((yyvsp[0].str)); } else { - cfg_parser->cfg->http_endpoint = (yyvsp[(2) - (2)].str); + cfg_parser->cfg->http_endpoint = (yyvsp[0].str); } } +#line 4315 "util/configparser.c" break; case 351: -#line 1049 "util/configparser.y" - { - OUTYY(("P(server_http_max_streams:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) +#line 1049 "./util/configparser.y" + { + OUTYY(("P(server_http_max_streams:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); - else cfg_parser->cfg->http_max_streams = atoi((yyvsp[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->http_max_streams = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 4327 "util/configparser.c" break; case 352: -#line 1057 "util/configparser.y" - { - OUTYY(("P(server_http_query_buffer_size:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), +#line 1057 "./util/configparser.y" + { + OUTYY(("P(server_http_query_buffer_size:%s)\n", (yyvsp[0].str))); + if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->http_query_buffer_size)) yyerror("memory size expected"); - free((yyvsp[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 4339 "util/configparser.c" break; case 353: -#line 1065 "util/configparser.y" - { - OUTYY(("P(server_http_response_buffer_size:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), +#line 1065 "./util/configparser.y" + { + OUTYY(("P(server_http_response_buffer_size:%s)\n", (yyvsp[0].str))); + if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->http_response_buffer_size)) yyerror("memory size expected"); - free((yyvsp[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 4351 "util/configparser.c" break; case 354: -#line 1073 "util/configparser.y" - { - OUTYY(("P(server_http_nodelay:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 1073 "./util/configparser.y" + { + OUTYY(("P(server_http_nodelay:%s)\n", (yyvsp[0].str))); + if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 4363 "util/configparser.c" break; case 355: -#line 1081 "util/configparser.y" - { - OUTYY(("P(server_http_notls_downstream:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 1081 "./util/configparser.y" + { + OUTYY(("P(server_http_notls_downstream:%s)\n", (yyvsp[0].str))); + if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->http_notls_downstream = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->http_notls_downstream = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 4375 "util/configparser.c" break; case 356: -#line 1089 "util/configparser.y" - { - OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 1089 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 4387 "util/configparser.c" break; case 357: -#line 1098 "util/configparser.y" - { - OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 1098 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 4399 "util/configparser.c" break; case 358: -#line 1107 "util/configparser.y" - { - OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 1107 "./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[(2) - (2)].str), "yes")==0); + else cfg_parser->cfg->use_syslog = (strcmp((yyvsp[0].str), "yes")==0); #if !defined(HAVE_SYSLOG_H) && !defined(UB_ON_WINDOWS) - if(strcmp((yyvsp[(2) - (2)].str), "yes") == 0) + if(strcmp((yyvsp[0].str), "yes") == 0) yyerror("no syslog services are available. " "(reconfigure and compile to add)"); #endif - free((yyvsp[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 4416 "util/configparser.c" break; case 359: -#line 1121 "util/configparser.y" - { - OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 1121 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 4428 "util/configparser.c" break; case 360: -#line 1130 "util/configparser.y" - { - OUTYY(("P(server_log_queries:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 1130 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 4440 "util/configparser.c" break; case 361: -#line 1139 "util/configparser.y" - { - OUTYY(("P(server_log_replies:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 1139 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 4452 "util/configparser.c" break; case 362: -#line 1148 "util/configparser.y" - { - OUTYY(("P(server_log_tag_queryreply:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 1148 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 4464 "util/configparser.c" break; case 363: -#line 1157 "util/configparser.y" - { - OUTYY(("P(server_log_servfail:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 1157 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 4476 "util/configparser.c" break; case 364: -#line 1166 "util/configparser.y" - { - OUTYY(("P(server_log_local_actions:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 1166 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 4488 "util/configparser.c" break; case 365: -#line 1175 "util/configparser.y" - { - OUTYY(("P(server_chroot:%s)\n", (yyvsp[(2) - (2)].str))); +#line 1175 "./util/configparser.y" + { + OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->chrootdir); - cfg_parser->cfg->chrootdir = (yyvsp[(2) - (2)].str); + cfg_parser->cfg->chrootdir = (yyvsp[0].str); } +#line 4498 "util/configparser.c" break; case 366: -#line 1182 "util/configparser.y" - { - OUTYY(("P(server_username:%s)\n", (yyvsp[(2) - (2)].str))); +#line 1182 "./util/configparser.y" + { + OUTYY(("P(server_username:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->username); - cfg_parser->cfg->username = (yyvsp[(2) - (2)].str); + cfg_parser->cfg->username = (yyvsp[0].str); } +#line 4508 "util/configparser.c" break; case 367: -#line 1189 "util/configparser.y" - { - OUTYY(("P(server_directory:%s)\n", (yyvsp[(2) - (2)].str))); +#line 1189 "./util/configparser.y" + { + OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->directory); - cfg_parser->cfg->directory = (yyvsp[(2) - (2)].str); + cfg_parser->cfg->directory = (yyvsp[0].str); /* change there right away for includes relative to this */ - if((yyvsp[(2) - (2)].str)[0]) { + if((yyvsp[0].str)[0]) { char* d; #ifdef UB_ON_WINDOWS w_config_adjust_directory(cfg_parser->cfg); @@ -4222,1100 +4533,1194 @@ yyreduce: } } } +#line 4537 "util/configparser.c" break; case 368: -#line 1215 "util/configparser.y" - { - OUTYY(("P(server_logfile:%s)\n", (yyvsp[(2) - (2)].str))); +#line 1215 "./util/configparser.y" + { + OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->logfile); - cfg_parser->cfg->logfile = (yyvsp[(2) - (2)].str); + cfg_parser->cfg->logfile = (yyvsp[0].str); cfg_parser->cfg->use_syslog = 0; } +#line 4548 "util/configparser.c" break; case 369: -#line 1223 "util/configparser.y" - { - OUTYY(("P(server_pidfile:%s)\n", (yyvsp[(2) - (2)].str))); +#line 1223 "./util/configparser.y" + { + OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->pidfile); - cfg_parser->cfg->pidfile = (yyvsp[(2) - (2)].str); + cfg_parser->cfg->pidfile = (yyvsp[0].str); } +#line 4558 "util/configparser.c" break; case 370: -#line 1230 "util/configparser.y" - { - OUTYY(("P(server_root_hints:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[(2) - (2)].str))) +#line 1230 "./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 4568 "util/configparser.c" break; case 371: -#line 1237 "util/configparser.y" - { - OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[(2) - (2)].str))); +#line 1237 "./util/configparser.y" + { + OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str))); log_warn("option dlv-anchor-file ignored: DLV is decommissioned"); - free((yyvsp[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 4578 "util/configparser.c" break; case 372: -#line 1244 "util/configparser.y" - { - OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[(2) - (2)].str))); +#line 1244 "./util/configparser.y" + { + OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str))); log_warn("option dlv-anchor ignored: DLV is decommissioned"); - free((yyvsp[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 4588 "util/configparser.c" break; case 373: -#line 1251 "util/configparser.y" - { - OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[(2) - (2)].str))); +#line 1251 "./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[(2) - (2)].str))) + auto_trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } +#line 4599 "util/configparser.c" break; case 374: -#line 1259 "util/configparser.y" - { - OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[(2) - (2)].str))); +#line 1259 "./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[(2) - (2)].str))) + trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } +#line 4610 "util/configparser.c" break; case 375: -#line 1267 "util/configparser.y" - { - OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[(2) - (2)].str))); +#line 1267 "./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[(2) - (2)].str))) + trusted_keys_file_list, (yyvsp[0].str))) yyerror("out of memory"); } +#line 4621 "util/configparser.c" break; case 376: -#line 1275 "util/configparser.y" - { - OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[(2) - (2)].str))) +#line 1275 "./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 4631 "util/configparser.c" break; case 377: -#line 1282 "util/configparser.y" - { - OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 1282 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 4645 "util/configparser.c" break; case 378: -#line 1293 "util/configparser.y" - { - OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 1293 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 4659 "util/configparser.c" break; case 379: -#line 1304 "util/configparser.y" - { - OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[(2) - (2)].str))) +#line 1304 "./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 4669 "util/configparser.c" break; case 380: -#line 1311 "util/configparser.y" - { - OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 1311 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 4681 "util/configparser.c" break; case 381: -#line 1320 "util/configparser.y" - { - OUTYY(("P(server_hide_version:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 1320 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 4693 "util/configparser.c" break; case 382: -#line 1329 "util/configparser.y" - { - OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 1329 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 4705 "util/configparser.c" break; case 383: -#line 1338 "util/configparser.y" - { - OUTYY(("P(server_identity:%s)\n", (yyvsp[(2) - (2)].str))); +#line 1338 "./util/configparser.y" + { + OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->identity); - cfg_parser->cfg->identity = (yyvsp[(2) - (2)].str); + cfg_parser->cfg->identity = (yyvsp[0].str); } +#line 4715 "util/configparser.c" break; case 384: -#line 1345 "util/configparser.y" - { - OUTYY(("P(server_version:%s)\n", (yyvsp[(2) - (2)].str))); +#line 1345 "./util/configparser.y" + { + OUTYY(("P(server_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->version); - cfg_parser->cfg->version = (yyvsp[(2) - (2)].str); + cfg_parser->cfg->version = (yyvsp[0].str); } +#line 4725 "util/configparser.c" break; case 385: -#line 1352 "util/configparser.y" - { - OUTYY(("P(server_nsid:%s)\n", (yyvsp[(2) - (2)].str))); +#line 1352 "./util/configparser.y" + { + OUTYY(("P(server_nsid:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->nsid_cfg_str); - cfg_parser->cfg->nsid_cfg_str = (yyvsp[(2) - (2)].str); + cfg_parser->cfg->nsid_cfg_str = (yyvsp[0].str); free(cfg_parser->cfg->nsid); cfg_parser->cfg->nsid = NULL; cfg_parser->cfg->nsid_len = 0; - if (*(yyvsp[(2) - (2)].str) == 0) + if (*(yyvsp[0].str) == 0) ; /* pass; empty string is not setting nsid */ else if (!(cfg_parser->cfg->nsid = cfg_parse_nsid( - (yyvsp[(2) - (2)].str), &cfg_parser->cfg->nsid_len))) + (yyvsp[0].str), &cfg_parser->cfg->nsid_len))) yyerror("the NSID must be either a hex string or an " "ascii character string prepended with ascii_."); } +#line 4744 "util/configparser.c" break; case 386: -#line 1368 "util/configparser.y" - { - OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->so_rcvbuf)) +#line 1368 "./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[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 4755 "util/configparser.c" break; case 387: -#line 1376 "util/configparser.y" - { - OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->so_sndbuf)) +#line 1376 "./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[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 4766 "util/configparser.c" break; case 388: -#line 1384 "util/configparser.y" +#line 1384 "./util/configparser.y" { - OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + 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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 4779 "util/configparser.c" break; case 389: -#line 1394 "util/configparser.y" +#line 1394 "./util/configparser.y" { - OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + 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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 4792 "util/configparser.c" break; case 390: -#line 1404 "util/configparser.y" +#line 1404 "./util/configparser.y" { - OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + 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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 4805 "util/configparser.c" break; case 391: -#line 1414 "util/configparser.y" - { - OUTYY(("P(server_ip_dscp:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) +#line 1414 "./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[(2) - (2)].str)) > 63) + else if (atoi((yyvsp[0].str)) > 63) yyerror("value too large (max 63)"); - else if (atoi((yyvsp[(2) - (2)].str)) < 0) + else if (atoi((yyvsp[0].str)) < 0) yyerror("value too small (min 0)"); else - cfg_parser->cfg->ip_dscp = atoi((yyvsp[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 4822 "util/configparser.c" break; case 392: -#line 1428 "util/configparser.y" - { - OUTYY(("P(server_stream_wait_size:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->stream_wait_size)) +#line 1428 "./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[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 4833 "util/configparser.c" break; case 393: -#line 1436 "util/configparser.y" - { - OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0) +#line 1436 "./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[(2) - (2)].str)) < 12) + else if (atoi((yyvsp[0].str)) < 12) yyerror("edns buffer size too small"); - else if (atoi((yyvsp[(2) - (2)].str)) > 65535) + else if (atoi((yyvsp[0].str)) > 65535) cfg_parser->cfg->edns_buffer_size = 65535; - else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 4849 "util/configparser.c" break; case 394: -#line 1449 "util/configparser.y" - { - OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0) +#line 1449 "./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[(2) - (2)].str)) < 4096) + else if (atoi((yyvsp[0].str)) < 4096) yyerror("message buffer size too small (use 4096)"); - else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 4863 "util/configparser.c" break; case 395: -#line 1460 "util/configparser.y" - { - OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->msg_cache_size)) +#line 1460 "./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[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 4874 "util/configparser.c" break; case 396: -#line 1468 "util/configparser.y" - { - OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0) +#line 1468 "./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[(2) - (2)].str)); + 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[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 4890 "util/configparser.c" break; case 397: -#line 1481 "util/configparser.y" - { - OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0) +#line 1481 "./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[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 4902 "util/configparser.c" break; case 398: -#line 1490 "util/configparser.y" - { - OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) +#line 1490 "./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[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 4914 "util/configparser.c" break; case 399: -#line 1499 "util/configparser.y" - { - OUTYY(("P(server_delay_close:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) +#line 1499 "./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[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 4926 "util/configparser.c" break; case 400: -#line 1508 "util/configparser.y" - { - OUTYY(("P(server_udp_connect:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 1508 "./util/configparser.y" + { + OUTYY(("P(server_udp_connect:%s)\n", (yyvsp[0].str))); + if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->udp_connect = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->udp_connect = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 4938 "util/configparser.c" break; case 401: -#line 1517 "util/configparser.y" - { - OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 1517 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 4951 "util/configparser.c" break; case 402: -#line 1527 "util/configparser.y" - { - OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 1527 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 4964 "util/configparser.c" break; case 403: -#line 1537 "util/configparser.y" - { - OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->rrset_cache_size)) +#line 1537 "./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[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 4975 "util/configparser.c" break; case 404: -#line 1545 "util/configparser.y" - { - OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0) +#line 1545 "./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[(2) - (2)].str)); + 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[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 4991 "util/configparser.c" break; case 405: -#line 1558 "util/configparser.y" - { - OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) +#line 1558 "./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[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 5003 "util/configparser.c" break; case 406: -#line 1567 "util/configparser.y" - { - OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[(2) - (2)].str))); +#line 1567 "./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[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + "removed, use infra-host-ttl)", (yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 5014 "util/configparser.c" break; case 407: -#line 1575 "util/configparser.y" - { - OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0) +#line 1575 "./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[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 5026 "util/configparser.c" break; case 408: -#line 1584 "util/configparser.y" - { - OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[(2) - (2)].str))); +#line 1584 "./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[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + "(option removed, use infra-cache-numhosts)", (yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 5037 "util/configparser.c" break; case 409: -#line 1592 "util/configparser.y" - { - OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0) +#line 1592 "./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[(2) - (2)].str)); + 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[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 5053 "util/configparser.c" break; case 410: -#line 1605 "util/configparser.y" - { - OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) +#line 1605 "./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[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 5065 "util/configparser.c" break; case 411: -#line 1614 "util/configparser.y" - { - OUTYY(("P(server_infra_keep_probing:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 1614 "./util/configparser.y" + { + OUTYY(("P(server_infra_keep_probing:%s)\n", (yyvsp[0].str))); + if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->infra_keep_probing = - (strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 5078 "util/configparser.c" break; case 412: -#line 1624 "util/configparser.y" - { - OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[(2) - (2)].str))); +#line 1624 "./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[(2) - (2)].str); + cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str); } +#line 5088 "util/configparser.c" break; case 413: -#line 1631 "util/configparser.y" - { - OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 1631 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 5101 "util/configparser.c" break; case 414: -#line 1641 "util/configparser.y" - { - OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 1641 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 5114 "util/configparser.c" break; case 415: -#line 1651 "util/configparser.y" - { - OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 1651 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 5127 "util/configparser.c" break; case 416: -#line 1661 "util/configparser.y" - { - OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 1661 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 5140 "util/configparser.c" break; case 417: -#line 1671 "util/configparser.y" - { - OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 1671 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 5153 "util/configparser.c" break; case 418: -#line 1681 "util/configparser.y" - { - OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 1681 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 5166 "util/configparser.c" break; case 419: -#line 1691 "util/configparser.y" - { - OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 1691 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 5179 "util/configparser.c" break; case 420: -#line 1701 "util/configparser.y" - { - OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 1701 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 5192 "util/configparser.c" break; case 421: -#line 1711 "util/configparser.y" - { - OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[(2) - (2)].str))) +#line 1711 "./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 5202 "util/configparser.c" break; case 422: -#line 1718 "util/configparser.y" - { - OUTYY(("P(server_private_address:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[(2) - (2)].str))) +#line 1718 "./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 5212 "util/configparser.c" break; case 423: -#line 1725 "util/configparser.y" - { - OUTYY(("P(server_private_domain:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[(2) - (2)].str))) +#line 1725 "./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 5222 "util/configparser.c" break; case 424: -#line 1732 "util/configparser.y" - { - OUTYY(("P(server_prefetch:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 1732 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 5234 "util/configparser.c" break; case 425: -#line 1741 "util/configparser.y" - { - OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 1741 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 5246 "util/configparser.c" break; case 426: -#line 1750 "util/configparser.y" - { - OUTYY(("P(server_deny_any:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 1750 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 5258 "util/configparser.c" break; case 427: -#line 1759 "util/configparser.y" - { - OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) +#line 1759 "./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[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 5270 "util/configparser.c" break; case 428: -#line 1768 "util/configparser.y" - { - OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[(2) - (2)].str))) +#line 1768 "./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 5280 "util/configparser.c" break; case 429: -#line 1775 "util/configparser.y" - { - OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 1775 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 5293 "util/configparser.c" break; case 430: -#line 1785 "util/configparser.y" - { - OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))); - if(strcmp((yyvsp[(3) - (3)].str), "deny")!=0 && strcmp((yyvsp[(3) - (3)].str), "refuse")!=0 && - strcmp((yyvsp[(3) - (3)].str), "deny_non_local")!=0 && - strcmp((yyvsp[(3) - (3)].str), "refuse_non_local")!=0 && - strcmp((yyvsp[(3) - (3)].str), "allow_setrd")!=0 && - strcmp((yyvsp[(3) - (3)].str), "allow")!=0 && - strcmp((yyvsp[(3) - (3)].str), "allow_snoop")!=0) { +#line 1785 "./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[(2) - (3)].str)); - free((yyvsp[(3) - (3)].str)); + free((yyvsp[-1].str)); + free((yyvsp[0].str)); } else { - if(!cfg_str2list_insert(&cfg_parser->cfg->acls, (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))) + if(!cfg_str2list_insert(&cfg_parser->cfg->acls, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding acl"); } } +#line 5316 "util/configparser.c" break; case 431: -#line 1805 "util/configparser.y" - { - OUTYY(("P(server_module_conf:%s)\n", (yyvsp[(2) - (2)].str))); +#line 1805 "./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[(2) - (2)].str); + cfg_parser->cfg->module_conf = (yyvsp[0].str); } +#line 5326 "util/configparser.c" break; case 432: -#line 1812 "util/configparser.y" - { - OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[(2) - (2)].str))); - if(*(yyvsp[(2) - (2)].str) == '\0' || strcmp((yyvsp[(2) - (2)].str), "0") == 0) { +#line 1812 "./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[(2) - (2)].str)) == 14) { + } else if(strlen((yyvsp[0].str)) == 14) { cfg_parser->cfg->val_date_override = - cfg_convert_timeval((yyvsp[(2) - (2)].str)); + cfg_convert_timeval((yyvsp[0].str)); if(!cfg_parser->cfg->val_date_override) yyerror("bad date/time specification"); } else { - if(atoi((yyvsp[(2) - (2)].str)) == 0) + if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); - cfg_parser->cfg->val_date_override = atoi((yyvsp[(2) - (2)].str)); + cfg_parser->cfg->val_date_override = atoi((yyvsp[0].str)); } - free((yyvsp[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 5347 "util/configparser.c" break; case 433: -#line 1830 "util/configparser.y" - { - OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[(2) - (2)].str))); - if(*(yyvsp[(2) - (2)].str) == '\0' || strcmp((yyvsp[(2) - (2)].str), "0") == 0) { +#line 1830 "./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[(2) - (2)].str)); + cfg_parser->cfg->val_sig_skew_min = atoi((yyvsp[0].str)); if(!cfg_parser->cfg->val_sig_skew_min) yyerror("number expected"); } - free((yyvsp[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 5363 "util/configparser.c" break; case 434: -#line 1843 "util/configparser.y" - { - OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[(2) - (2)].str))); - if(*(yyvsp[(2) - (2)].str) == '\0' || strcmp((yyvsp[(2) - (2)].str), "0") == 0) { +#line 1843 "./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[(2) - (2)].str)); + cfg_parser->cfg->val_sig_skew_max = atoi((yyvsp[0].str)); if(!cfg_parser->cfg->val_sig_skew_max) yyerror("number expected"); } - free((yyvsp[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 5379 "util/configparser.c" break; case 435: -#line 1856 "util/configparser.y" - { - OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) +#line 1856 "./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[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 5391 "util/configparser.c" break; case 436: -#line 1865 "util/configparser.y" - { - OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) +#line 1865 "./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[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 5403 "util/configparser.c" break; case 437: -#line 1874 "util/configparser.y" - { - OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) +#line 1874 "./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[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 5415 "util/configparser.c" break; case 438: -#line 1883 "util/configparser.y" - { - OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) +#line 1883 "./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[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 5427 "util/configparser.c" break; case 439: -#line 1892 "util/configparser.y" - { - OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 1892 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 5440 "util/configparser.c" break; case 440: -#line 1902 "util/configparser.y" - { - OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 1902 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 5453 "util/configparser.c" break; case 441: -#line 1912 "util/configparser.y" - { - OUTYY(("P(server_aggressive_nsec:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 1912 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 5467 "util/configparser.c" break; case 442: -#line 1923 "util/configparser.y" - { - OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 1923 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 5479 "util/configparser.c" break; case 443: -#line 1932 "util/configparser.y" - { - OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 1932 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 5491 "util/configparser.c" break; case 444: -#line 1941 "util/configparser.y" - { - OUTYY(("P(server_serve_expired_ttl:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) +#line 1941 "./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[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 5503 "util/configparser.c" break; case 445: -#line 1950 "util/configparser.y" - { - OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 1950 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 5515 "util/configparser.c" break; case 446: -#line 1959 "util/configparser.y" - { - OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) +#line 1959 "./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[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 5527 "util/configparser.c" break; case 447: -#line 1968 "util/configparser.y" - { - OUTYY(("P(server_serve_expired_client_timeout:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) +#line 1968 "./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[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 5539 "util/configparser.c" break; case 448: -#line 1977 "util/configparser.y" - { - OUTYY(("P(server_serve_original_ttl:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 1977 "./util/configparser.y" + { + OUTYY(("P(server_serve_original_ttl:%s)\n", (yyvsp[0].str))); + if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->serve_original_ttl = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->serve_original_ttl = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 5551 "util/configparser.c" break; case 449: -#line 1986 "util/configparser.y" - { - OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 1986 "./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[(2) - (2)].str), "yes")==0); + else fake_dsa = (strcmp((yyvsp[0].str), "yes")==0); if(fake_dsa) log_warn("test option fake_dsa is enabled"); #endif - free((yyvsp[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 5567 "util/configparser.c" break; case 450: -#line 1999 "util/configparser.y" - { - OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 1999 "./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[(2) - (2)].str), "yes")==0); + else fake_sha1 = (strcmp((yyvsp[0].str), "yes")==0); if(fake_sha1) log_warn("test option fake_sha1 is enabled"); #endif - free((yyvsp[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 5583 "util/configparser.c" break; case 451: -#line 2012 "util/configparser.y" - { - OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) +#line 2012 "./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[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 5595 "util/configparser.c" break; case 452: -#line 2021 "util/configparser.y" - { - OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[(2) - (2)].str))); +#line 2021 "./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[(2) - (2)].str); + cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str); } +#line 5605 "util/configparser.c" break; case 453: -#line 2028 "util/configparser.y" - { - OUTYY(("P(server_zonemd_permissive_mode:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 2028 "./util/configparser.y" + { + OUTYY(("P(server_zonemd_permissive_mode:%s)\n", (yyvsp[0].str))); + if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); - else cfg_parser->cfg->zonemd_permissive_mode = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->zonemd_permissive_mode = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 5617 "util/configparser.c" break; case 454: -#line 2037 "util/configparser.y" - { - OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) +#line 2037 "./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[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 5629 "util/configparser.c" break; case 455: -#line 2046 "util/configparser.y" - { - OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) +#line 2046 "./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[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 5641 "util/configparser.c" break; case 456: -#line 2055 "util/configparser.y" - { - OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) +#line 2055 "./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[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 5653 "util/configparser.c" break; case 457: -#line 2064 "util/configparser.y" - { - OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 2064 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 5666 "util/configparser.c" break; case 458: -#line 2073 "util/configparser.y" - { - OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->key_cache_size)) +#line 2073 "./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[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 5677 "util/configparser.c" break; case 459: -#line 2081 "util/configparser.y" - { - OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0) +#line 2081 "./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[(2) - (2)].str)); + 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[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 5693 "util/configparser.c" break; case 460: -#line 2094 "util/configparser.y" - { - OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->neg_cache_size)) +#line 2094 "./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[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 5704 "util/configparser.c" break; case 461: -#line 2102 "util/configparser.y" - { - OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))); - if(strcmp((yyvsp[(3) - (3)].str), "static")!=0 && strcmp((yyvsp[(3) - (3)].str), "deny")!=0 && - strcmp((yyvsp[(3) - (3)].str), "refuse")!=0 && strcmp((yyvsp[(3) - (3)].str), "redirect")!=0 && - strcmp((yyvsp[(3) - (3)].str), "transparent")!=0 && strcmp((yyvsp[(3) - (3)].str), "nodefault")!=0 - && strcmp((yyvsp[(3) - (3)].str), "typetransparent")!=0 - && strcmp((yyvsp[(3) - (3)].str), "always_transparent")!=0 - && strcmp((yyvsp[(3) - (3)].str), "always_refuse")!=0 - && strcmp((yyvsp[(3) - (3)].str), "always_nxdomain")!=0 - && strcmp((yyvsp[(3) - (3)].str), "always_nodata")!=0 - && strcmp((yyvsp[(3) - (3)].str), "always_deny")!=0 - && strcmp((yyvsp[(3) - (3)].str), "always_null")!=0 - && strcmp((yyvsp[(3) - (3)].str), "noview")!=0 - && strcmp((yyvsp[(3) - (3)].str), "inform")!=0 && strcmp((yyvsp[(3) - (3)].str), "inform_deny")!=0 - && strcmp((yyvsp[(3) - (3)].str), "inform_redirect") != 0 - && strcmp((yyvsp[(3) - (3)].str), "ipset") != 0) { +#line 2102 "./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), "always_nodata")!=0 + && strcmp((yyvsp[0].str), "always_deny")!=0 + && strcmp((yyvsp[0].str), "always_null")!=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, " @@ -5323,44 +5728,46 @@ yyreduce: "always_refuse, always_nxdomain, " "always_nodata, always_deny, always_null, " "noview, nodefault or ipset"); - free((yyvsp[(2) - (3)].str)); - free((yyvsp[(3) - (3)].str)); - } else if(strcmp((yyvsp[(3) - (3)].str), "nodefault")==0) { + 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[(2) - (3)].str))) + local_zones_nodefault, (yyvsp[-1].str))) fatal_exit("out of memory adding local-zone"); - free((yyvsp[(3) - (3)].str)); + free((yyvsp[0].str)); #ifdef USE_IPSET - } else if(strcmp((yyvsp[(3) - (3)].str), "ipset")==0) { + } else if(strcmp((yyvsp[0].str), "ipset")==0) { if(!cfg_strlist_insert(&cfg_parser->cfg-> - local_zones_ipset, (yyvsp[(2) - (3)].str))) + local_zones_ipset, (yyvsp[-1].str))) fatal_exit("out of memory adding local-zone"); - free((yyvsp[(3) - (3)].str)); + free((yyvsp[0].str)); #endif } else { if(!cfg_str2list_insert(&cfg_parser->cfg->local_zones, - (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))) + (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding local-zone"); } } +#line 5752 "util/configparser.c" break; case 462: -#line 2147 "util/configparser.y" - { - OUTYY(("P(server_local_data:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[(2) - (2)].str))) +#line 2147 "./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 5762 "util/configparser.c" break; case 463: -#line 2154 "util/configparser.y" - { +#line 2154 "./util/configparser.y" + { char* ptr; - OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[(2) - (2)].str))); - ptr = cfg_ptr_reverse((yyvsp[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + 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)) @@ -5369,85 +5776,93 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } +#line 5780 "util/configparser.c" break; case 464: -#line 2169 "util/configparser.y" - { - OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 2169 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 5793 "util/configparser.c" break; case 465: -#line 2179 "util/configparser.y" - { - OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 2179 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 5806 "util/configparser.c" break; case 466: -#line 2189 "util/configparser.y" - { - OUTYY(("P(server_unknown_server_time_limit:%s)\n", (yyvsp[(2) - (2)].str))); - cfg_parser->cfg->unknown_server_time_limit = atoi((yyvsp[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); +#line 2189 "./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 5816 "util/configparser.c" break; case 467: -#line 2196 "util/configparser.y" - { - OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[(2) - (2)].str))); - cfg_parser->cfg->max_udp_size = atoi((yyvsp[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); +#line 2196 "./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 5826 "util/configparser.c" break; case 468: -#line 2203 "util/configparser.y" - { - OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[(2) - (2)].str))); +#line 2203 "./util/configparser.y" + { + OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dns64_prefix); - cfg_parser->cfg->dns64_prefix = (yyvsp[(2) - (2)].str); + cfg_parser->cfg->dns64_prefix = (yyvsp[0].str); } +#line 5836 "util/configparser.c" break; case 469: -#line 2210 "util/configparser.y" - { - OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 2210 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 5848 "util/configparser.c" break; case 470: -#line 2219 "util/configparser.y" - { - OUTYY(("P(dns64_ignore_aaaa:%s)\n", (yyvsp[(2) - (2)].str))); +#line 2219 "./util/configparser.y" + { + OUTYY(("P(dns64_ignore_aaaa:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dns64_ignore_aaaa, - (yyvsp[(2) - (2)].str))) + (yyvsp[0].str))) fatal_exit("out of memory adding dns64-ignore-aaaa"); } +#line 5859 "util/configparser.c" break; case 471: -#line 2227 "util/configparser.y" - { - char* p, *s = (yyvsp[(2) - (2)].str); - OUTYY(("P(server_define_tag:%s)\n", (yyvsp[(2) - (2)].str))); +#line 2227 "./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)) @@ -5455,742 +5870,800 @@ yyreduce: "out of memory"); } } - free((yyvsp[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 5876 "util/configparser.c" break; case 472: -#line 2241 "util/configparser.y" - { +#line 2241 "./util/configparser.y" + { size_t len = 0; - uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[(3) - (3)].str), + uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), &len); - free((yyvsp[(3) - (3)].str)); - OUTYY(("P(server_local_zone_tag:%s)\n", (yyvsp[(2) - (3)].str))); + 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[(2) - (3)].str)); + free((yyvsp[-1].str)); } if(bitlist) { if(!cfg_strbytelist_insert( &cfg_parser->cfg->local_zone_tags, - (yyvsp[(2) - (3)].str), bitlist, len)) { + (yyvsp[-1].str), bitlist, len)) { yyerror("out of memory"); - free((yyvsp[(2) - (3)].str)); + free((yyvsp[-1].str)); } } } +#line 5900 "util/configparser.c" break; case 473: -#line 2262 "util/configparser.y" - { +#line 2262 "./util/configparser.y" + { size_t len = 0; - uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[(3) - (3)].str), + uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), &len); - free((yyvsp[(3) - (3)].str)); - OUTYY(("P(server_access_control_tag:%s)\n", (yyvsp[(2) - (3)].str))); + 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[(2) - (3)].str)); + free((yyvsp[-1].str)); } if(bitlist) { if(!cfg_strbytelist_insert( &cfg_parser->cfg->acl_tags, - (yyvsp[(2) - (3)].str), bitlist, len)) { + (yyvsp[-1].str), bitlist, len)) { yyerror("out of memory"); - free((yyvsp[(2) - (3)].str)); + free((yyvsp[-1].str)); } } } +#line 5924 "util/configparser.c" break; case 474: -#line 2283 "util/configparser.y" - { - OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[(2) - (4)].str), (yyvsp[(3) - (4)].str), (yyvsp[(4) - (4)].str))); +#line 2283 "./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) - (4)].str), (yyvsp[(3) - (4)].str), (yyvsp[(4) - (4)].str))) { + (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) { yyerror("out of memory"); - free((yyvsp[(2) - (4)].str)); - free((yyvsp[(3) - (4)].str)); - free((yyvsp[(4) - (4)].str)); + free((yyvsp[-2].str)); + free((yyvsp[-1].str)); + free((yyvsp[0].str)); } } +#line 5939 "util/configparser.c" break; case 475: -#line 2295 "util/configparser.y" - { - OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[(2) - (4)].str), (yyvsp[(3) - (4)].str), (yyvsp[(4) - (4)].str))); +#line 2295 "./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) - (4)].str), (yyvsp[(3) - (4)].str), (yyvsp[(4) - (4)].str))) { + (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) { yyerror("out of memory"); - free((yyvsp[(2) - (4)].str)); - free((yyvsp[(3) - (4)].str)); - free((yyvsp[(4) - (4)].str)); + free((yyvsp[-2].str)); + free((yyvsp[-1].str)); + free((yyvsp[0].str)); } } +#line 5954 "util/configparser.c" break; case 476: -#line 2307 "util/configparser.y" - { - OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[(2) - (4)].str), (yyvsp[(3) - (4)].str), (yyvsp[(4) - (4)].str))); +#line 2307 "./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) - (4)].str), (yyvsp[(3) - (4)].str), (yyvsp[(4) - (4)].str))) { + (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) { yyerror("out of memory"); - free((yyvsp[(2) - (4)].str)); - free((yyvsp[(3) - (4)].str)); - free((yyvsp[(4) - (4)].str)); + free((yyvsp[-2].str)); + free((yyvsp[-1].str)); + free((yyvsp[0].str)); } } +#line 5969 "util/configparser.c" break; case 477: -#line 2319 "util/configparser.y" - { - OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))); +#line 2319 "./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[(2) - (3)].str), (yyvsp[(3) - (3)].str))) { + (yyvsp[-1].str), (yyvsp[0].str))) { yyerror("out of memory"); } } +#line 5981 "util/configparser.c" break; case 478: -#line 2328 "util/configparser.y" - { +#line 2328 "./util/configparser.y" + { size_t len = 0; - uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[(3) - (3)].str), + uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), &len); - free((yyvsp[(3) - (3)].str)); - OUTYY(("P(response_ip_tag:%s)\n", (yyvsp[(2) - (3)].str))); + 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[(2) - (3)].str)); + free((yyvsp[-1].str)); } if(bitlist) { if(!cfg_strbytelist_insert( &cfg_parser->cfg->respip_tags, - (yyvsp[(2) - (3)].str), bitlist, len)) { + (yyvsp[-1].str), bitlist, len)) { yyerror("out of memory"); - free((yyvsp[(2) - (3)].str)); + free((yyvsp[-1].str)); } } } +#line 6005 "util/configparser.c" break; case 479: -#line 2349 "util/configparser.y" - { - OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) +#line 2349 "./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[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 6017 "util/configparser.c" break; case 480: -#line 2359 "util/configparser.y" - { - OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) +#line 2359 "./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[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 6029 "util/configparser.c" break; case 481: -#line 2368 "util/configparser.y" - { - OUTYY(("P(server_ip_ratelimit_size:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->ip_ratelimit_size)) +#line 2368 "./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[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 6040 "util/configparser.c" break; case 482: -#line 2376 "util/configparser.y" - { - OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->ratelimit_size)) +#line 2376 "./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[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 6051 "util/configparser.c" break; case 483: -#line 2384 "util/configparser.y" - { - OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0) +#line 2384 "./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[(2) - (2)].str)); + 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[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 6067 "util/configparser.c" break; case 484: -#line 2397 "util/configparser.y" - { - OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0) +#line 2397 "./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[(2) - (2)].str)); + 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[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 6083 "util/configparser.c" break; case 485: -#line 2410 "util/configparser.y" - { - OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))); - if(atoi((yyvsp[(3) - (3)].str)) == 0 && strcmp((yyvsp[(3) - (3)].str), "0") != 0) { +#line 2410 "./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[(2) - (3)].str)); - free((yyvsp[(3) - (3)].str)); + free((yyvsp[-1].str)); + free((yyvsp[0].str)); } else { if(!cfg_str2list_insert(&cfg_parser->cfg-> - ratelimit_for_domain, (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))) + ratelimit_for_domain, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding " "ratelimit-for-domain"); } } +#line 6101 "util/configparser.c" break; case 486: -#line 2425 "util/configparser.y" - { - OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))); - if(atoi((yyvsp[(3) - (3)].str)) == 0 && strcmp((yyvsp[(3) - (3)].str), "0") != 0) { +#line 2425 "./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[(2) - (3)].str)); - free((yyvsp[(3) - (3)].str)); + free((yyvsp[-1].str)); + free((yyvsp[0].str)); } else { if(!cfg_str2list_insert(&cfg_parser->cfg-> - ratelimit_below_domain, (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))) + ratelimit_below_domain, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding " "ratelimit-below-domain"); } } +#line 6119 "util/configparser.c" break; case 487: -#line 2440 "util/configparser.y" - { - OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) +#line 2440 "./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[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 6131 "util/configparser.c" break; case 488: -#line 2449 "util/configparser.y" - { - OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) +#line 2449 "./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[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 6143 "util/configparser.c" break; case 489: -#line 2458 "util/configparser.y" - { +#line 2458 "./util/configparser.y" + { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); - free((yyvsp[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 6152 "util/configparser.c" break; case 490: -#line 2464 "util/configparser.y" - { - OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) <= 0) +#line 2464 "./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[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 6164 "util/configparser.c" break; case 491: -#line 2473 "util/configparser.y" - { - OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) +#line 2473 "./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[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 6176 "util/configparser.c" break; case 492: -#line 2482 "util/configparser.y" - { - OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 2482 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 6189 "util/configparser.c" break; case 493: -#line 2492 "util/configparser.y" - { - OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 2492 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 6202 "util/configparser.c" break; case 494: -#line 2502 "util/configparser.y" - { - OUTYY(("P(server_pad_responses:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 2502 "./util/configparser.y" + { + OUTYY(("P(server_pad_responses:%s)\n", (yyvsp[0].str))); + if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->pad_responses = - (strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 6215 "util/configparser.c" break; case 495: -#line 2512 "util/configparser.y" - { - OUTYY(("P(server_pad_responses_block_size:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0) +#line 2512 "./util/configparser.y" + { + OUTYY(("P(server_pad_responses_block_size:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); - else cfg_parser->cfg->pad_responses_block_size = atoi((yyvsp[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->pad_responses_block_size = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 6227 "util/configparser.c" break; case 496: -#line 2521 "util/configparser.y" - { - OUTYY(("P(server_pad_queries:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 2521 "./util/configparser.y" + { + OUTYY(("P(server_pad_queries:%s)\n", (yyvsp[0].str))); + if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->pad_queries = - (strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 6240 "util/configparser.c" break; case 497: -#line 2531 "util/configparser.y" - { - OUTYY(("P(server_pad_queries_block_size:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0) +#line 2531 "./util/configparser.y" + { + OUTYY(("P(server_pad_queries_block_size:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); - else cfg_parser->cfg->pad_queries_block_size = atoi((yyvsp[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->pad_queries_block_size = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 6252 "util/configparser.c" break; case 498: -#line 2540 "util/configparser.y" - { +#line 2540 "./util/configparser.y" + { #ifdef USE_IPSECMOD - OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + 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[(2) - (2)].str), "yes")==0); + else cfg_parser->cfg->ipsecmod_enabled = (strcmp((yyvsp[0].str), "yes")==0); #else OUTYY(("P(Compiled without IPsec module, ignoring)\n")); #endif - free((yyvsp[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 6268 "util/configparser.c" break; case 499: -#line 2553 "util/configparser.y" - { +#line 2553 "./util/configparser.y" + { #ifdef USE_IPSECMOD - OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + 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[(2) - (2)].str), "yes")==0); + 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[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 6284 "util/configparser.c" break; case 500: -#line 2566 "util/configparser.y" - { +#line 2566 "./util/configparser.y" + { #ifdef USE_IPSECMOD - OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[(2) - (2)].str))); + OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ipsecmod_hook); - cfg_parser->cfg->ipsecmod_hook = (yyvsp[(2) - (2)].str); + cfg_parser->cfg->ipsecmod_hook = (yyvsp[0].str); #else OUTYY(("P(Compiled without IPsec module, ignoring)\n")); - free((yyvsp[(2) - (2)].str)); + free((yyvsp[0].str)); #endif } +#line 6299 "util/configparser.c" break; case 501: -#line 2578 "util/configparser.y" - { +#line 2578 "./util/configparser.y" + { #ifdef USE_IPSECMOD - OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) + 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[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + 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[(2) - (2)].str)); + free((yyvsp[0].str)); #endif } +#line 6316 "util/configparser.c" break; case 502: -#line 2592 "util/configparser.y" - { +#line 2592 "./util/configparser.y" + { #ifdef USE_IPSECMOD - OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->ipsecmod_whitelist, (yyvsp[(2) - (2)].str))) + 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[(2) - (2)].str)); + free((yyvsp[0].str)); #endif } +#line 6331 "util/configparser.c" break; case 503: -#line 2604 "util/configparser.y" - { +#line 2604 "./util/configparser.y" + { #ifdef USE_IPSECMOD - OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + 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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + 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[(2) - (2)].str)); + free((yyvsp[0].str)); #endif } +#line 6348 "util/configparser.c" break; case 504: -#line 2618 "util/configparser.y" - { - OUTYY(("P(server_edns_client_string:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))); +#line 2618 "./util/configparser.y" + { + OUTYY(("P(server_edns_client_string:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert( - &cfg_parser->cfg->edns_client_strings, (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))) + &cfg_parser->cfg->edns_client_strings, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding " "edns-client-string"); } +#line 6360 "util/configparser.c" break; case 505: -#line 2627 "util/configparser.y" - { - OUTYY(("P(edns_client_string_opcode:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) +#line 2627 "./util/configparser.y" + { + OUTYY(("P(edns_client_string_opcode:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("option code expected"); - else if(atoi((yyvsp[(2) - (2)].str)) > 65535 || atoi((yyvsp[(2) - (2)].str)) < 0) + else if(atoi((yyvsp[0].str)) > 65535 || atoi((yyvsp[0].str)) < 0) yyerror("option code must be in interval [0, 65535]"); - else cfg_parser->cfg->edns_client_string_opcode = atoi((yyvsp[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->edns_client_string_opcode = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 6375 "util/configparser.c" break; case 506: -#line 2639 "util/configparser.y" - { - OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str))); +#line 2639 "./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[(2) - (2)].str); + cfg_parser->cfg->stubs->name = (yyvsp[0].str); } +#line 6388 "util/configparser.c" break; case 507: -#line 2649 "util/configparser.y" - { - OUTYY(("P(stub-host:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[(2) - (2)].str))) +#line 2649 "./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 6398 "util/configparser.c" break; case 508: -#line 2656 "util/configparser.y" - { - OUTYY(("P(stub-addr:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[(2) - (2)].str))) +#line 2656 "./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 6408 "util/configparser.c" break; case 509: -#line 2663 "util/configparser.y" - { - OUTYY(("P(stub-first:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 2663 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 6420 "util/configparser.c" break; case 510: -#line 2672 "util/configparser.y" - { - OUTYY(("P(stub-no-cache:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 2672 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 6432 "util/configparser.c" break; case 511: -#line 2681 "util/configparser.y" - { - OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 2681 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 6445 "util/configparser.c" break; case 512: -#line 2691 "util/configparser.y" - { - OUTYY(("P(stub-prime:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 2691 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 6458 "util/configparser.c" break; case 513: -#line 2701 "util/configparser.y" - { - OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str))); +#line 2701 "./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[(2) - (2)].str); + cfg_parser->cfg->forwards->name = (yyvsp[0].str); } +#line 6471 "util/configparser.c" break; case 514: -#line 2711 "util/configparser.y" - { - OUTYY(("P(forward-host:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[(2) - (2)].str))) +#line 2711 "./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 6481 "util/configparser.c" break; case 515: -#line 2718 "util/configparser.y" - { - OUTYY(("P(forward-addr:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[(2) - (2)].str))) +#line 2718 "./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 6491 "util/configparser.c" break; case 516: -#line 2725 "util/configparser.y" - { - OUTYY(("P(forward-first:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 2725 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 6503 "util/configparser.c" break; case 517: -#line 2734 "util/configparser.y" - { - OUTYY(("P(forward-no-cache:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 2734 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 6515 "util/configparser.c" break; case 518: -#line 2743 "util/configparser.y" - { - OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 2743 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 6528 "util/configparser.c" break; case 519: -#line 2753 "util/configparser.y" - { - OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str))); +#line 2753 "./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[(2) - (2)].str); + cfg_parser->cfg->auths->name = (yyvsp[0].str); } +#line 6541 "util/configparser.c" break; case 520: -#line 2763 "util/configparser.y" - { - OUTYY(("P(zonefile:%s)\n", (yyvsp[(2) - (2)].str))); +#line 2763 "./util/configparser.y" + { + OUTYY(("P(zonefile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->zonefile); - cfg_parser->cfg->auths->zonefile = (yyvsp[(2) - (2)].str); + cfg_parser->cfg->auths->zonefile = (yyvsp[0].str); } +#line 6551 "util/configparser.c" break; case 521: -#line 2770 "util/configparser.y" - { - OUTYY(("P(master:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[(2) - (2)].str))) +#line 2770 "./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 6561 "util/configparser.c" break; case 522: -#line 2777 "util/configparser.y" - { - OUTYY(("P(url:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[(2) - (2)].str))) +#line 2777 "./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 6571 "util/configparser.c" break; case 523: -#line 2784 "util/configparser.y" - { - OUTYY(("P(allow-notify:%s)\n", (yyvsp[(2) - (2)].str))); +#line 2784 "./util/configparser.y" + { + OUTYY(("P(allow-notify:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify, - (yyvsp[(2) - (2)].str))) + (yyvsp[0].str))) yyerror("out of memory"); } +#line 6582 "util/configparser.c" break; case 524: -#line 2792 "util/configparser.y" - { - OUTYY(("P(zonemd-reject-absence:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 2792 "./util/configparser.y" + { + OUTYY(("P(zonemd-reject-absence:%s)\n", (yyvsp[0].str))); + if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->auths->zonemd_reject_absence = - (strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 6595 "util/configparser.c" break; case 525: -#line 2802 "util/configparser.y" - { - OUTYY(("P(for-downstream:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 2802 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 6608 "util/configparser.c" break; case 526: -#line 2812 "util/configparser.y" - { - OUTYY(("P(for-upstream:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 2812 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 6621 "util/configparser.c" break; case 527: -#line 2822 "util/configparser.y" - { - OUTYY(("P(fallback-enabled:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 2822 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 6634 "util/configparser.c" break; case 528: -#line 2832 "util/configparser.y" - { - OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str))); +#line 2832 "./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[(2) - (2)].str); + cfg_parser->cfg->views->name = (yyvsp[0].str); } +#line 6647 "util/configparser.c" break; case 529: -#line 2842 "util/configparser.y" - { - OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))); - if(strcmp((yyvsp[(3) - (3)].str), "static")!=0 && strcmp((yyvsp[(3) - (3)].str), "deny")!=0 && - strcmp((yyvsp[(3) - (3)].str), "refuse")!=0 && strcmp((yyvsp[(3) - (3)].str), "redirect")!=0 && - strcmp((yyvsp[(3) - (3)].str), "transparent")!=0 && strcmp((yyvsp[(3) - (3)].str), "nodefault")!=0 - && strcmp((yyvsp[(3) - (3)].str), "typetransparent")!=0 - && strcmp((yyvsp[(3) - (3)].str), "always_transparent")!=0 - && strcmp((yyvsp[(3) - (3)].str), "always_refuse")!=0 - && strcmp((yyvsp[(3) - (3)].str), "always_nxdomain")!=0 - && strcmp((yyvsp[(3) - (3)].str), "always_nodata")!=0 - && strcmp((yyvsp[(3) - (3)].str), "always_deny")!=0 - && strcmp((yyvsp[(3) - (3)].str), "always_null")!=0 - && strcmp((yyvsp[(3) - (3)].str), "noview")!=0 - && strcmp((yyvsp[(3) - (3)].str), "inform")!=0 && strcmp((yyvsp[(3) - (3)].str), "inform_deny")!=0 - && strcmp((yyvsp[(3) - (3)].str), "inform_redirect") != 0 - && strcmp((yyvsp[(3) - (3)].str), "ipset") != 0) { +#line 2842 "./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), "always_nodata")!=0 + && strcmp((yyvsp[0].str), "always_deny")!=0 + && strcmp((yyvsp[0].str), "always_null")!=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, " @@ -6198,68 +6671,72 @@ yyreduce: "always_refuse, always_nxdomain, " "always_nodata, always_deny, always_null, " "noview, nodefault or ipset"); - free((yyvsp[(2) - (3)].str)); - free((yyvsp[(3) - (3)].str)); - } else if(strcmp((yyvsp[(3) - (3)].str), "nodefault")==0) { + 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[(2) - (3)].str))) + local_zones_nodefault, (yyvsp[-1].str))) fatal_exit("out of memory adding local-zone"); - free((yyvsp[(3) - (3)].str)); + free((yyvsp[0].str)); #ifdef USE_IPSET - } else if(strcmp((yyvsp[(3) - (3)].str), "ipset")==0) { + } else if(strcmp((yyvsp[0].str), "ipset")==0) { if(!cfg_strlist_insert(&cfg_parser->cfg->views-> - local_zones_ipset, (yyvsp[(2) - (3)].str))) + local_zones_ipset, (yyvsp[-1].str))) fatal_exit("out of memory adding local-zone"); - free((yyvsp[(3) - (3)].str)); + free((yyvsp[0].str)); #endif } else { if(!cfg_str2list_insert( &cfg_parser->cfg->views->local_zones, - (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))) + (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding local-zone"); } } +#line 6696 "util/configparser.c" break; case 530: -#line 2888 "util/configparser.y" - { - OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))); - validate_respip_action((yyvsp[(3) - (3)].str)); +#line 2888 "./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[(2) - (3)].str), (yyvsp[(3) - (3)].str))) + &cfg_parser->cfg->views->respip_actions, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding per-view " "response-ip action"); } +#line 6709 "util/configparser.c" break; case 531: -#line 2898 "util/configparser.y" - { - OUTYY(("P(view_response_ip_data:%s)\n", (yyvsp[(2) - (3)].str))); +#line 2898 "./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[(2) - (3)].str), (yyvsp[(3) - (3)].str))) + &cfg_parser->cfg->views->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } +#line 6720 "util/configparser.c" break; case 532: -#line 2906 "util/configparser.y" - { - OUTYY(("P(view_local_data:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[(2) - (2)].str))) { +#line 2906 "./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 6731 "util/configparser.c" break; case 533: -#line 2914 "util/configparser.y" - { +#line 2914 "./util/configparser.y" + { char* ptr; - OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[(2) - (2)].str))); - ptr = cfg_ptr_reverse((yyvsp[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + 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)) @@ -6268,749 +6745,785 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } +#line 6749 "util/configparser.c" break; case 534: -#line 2929 "util/configparser.y" - { - OUTYY(("P(view-first:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 2929 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 6761 "util/configparser.c" break; case 535: -#line 2938 "util/configparser.y" - { +#line 2938 "./util/configparser.y" + { OUTYY(("\nP(remote-control:)\n")); } +#line 6769 "util/configparser.c" break; case 546: -#line 2949 "util/configparser.y" - { - OUTYY(("P(control_enable:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 2949 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 6782 "util/configparser.c" break; case 547: -#line 2959 "util/configparser.y" - { - OUTYY(("P(control_port:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0) +#line 2959 "./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[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 6794 "util/configparser.c" break; case 548: -#line 2968 "util/configparser.y" - { - OUTYY(("P(control_interface:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, (yyvsp[(2) - (2)].str))) +#line 2968 "./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 6804 "util/configparser.c" break; case 549: -#line 2975 "util/configparser.y" - { - OUTYY(("P(control_use_cert:%s)\n", (yyvsp[(2) - (2)].str))); - cfg_parser->cfg->control_use_cert = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); +#line 2975 "./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 6814 "util/configparser.c" break; case 550: -#line 2982 "util/configparser.y" - { - OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[(2) - (2)].str))); +#line 2982 "./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[(2) - (2)].str); + cfg_parser->cfg->server_key_file = (yyvsp[0].str); } +#line 6824 "util/configparser.c" break; case 551: -#line 2989 "util/configparser.y" - { - OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[(2) - (2)].str))); +#line 2989 "./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[(2) - (2)].str); + cfg_parser->cfg->server_cert_file = (yyvsp[0].str); } +#line 6834 "util/configparser.c" break; case 552: -#line 2996 "util/configparser.y" - { - OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[(2) - (2)].str))); +#line 2996 "./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[(2) - (2)].str); + cfg_parser->cfg->control_key_file = (yyvsp[0].str); } +#line 6844 "util/configparser.c" break; case 553: -#line 3003 "util/configparser.y" - { - OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[(2) - (2)].str))); +#line 3003 "./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[(2) - (2)].str); + cfg_parser->cfg->control_cert_file = (yyvsp[0].str); } +#line 6854 "util/configparser.c" break; case 554: -#line 3010 "util/configparser.y" - { +#line 3010 "./util/configparser.y" + { OUTYY(("\nP(dnstap:)\n")); } +#line 6862 "util/configparser.c" break; case 576: -#line 3030 "util/configparser.y" - { - OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 3030 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 6874 "util/configparser.c" break; case 577: -#line 3039 "util/configparser.y" - { - OUTYY(("P(dt_dnstap_bidirectional:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 3039 "./util/configparser.y" + { + OUTYY(("P(dt_dnstap_bidirectional:%s)\n", (yyvsp[0].str))); + if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap_bidirectional = - (strcmp((yyvsp[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 6887 "util/configparser.c" break; case 578: -#line 3049 "util/configparser.y" - { - OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[(2) - (2)].str))); +#line 3049 "./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[(2) - (2)].str); + cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str); } +#line 6897 "util/configparser.c" break; case 579: -#line 3056 "util/configparser.y" - { - OUTYY(("P(dt_dnstap_ip:%s)\n", (yyvsp[(2) - (2)].str))); +#line 3056 "./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[(2) - (2)].str); + cfg_parser->cfg->dnstap_ip = (yyvsp[0].str); } +#line 6907 "util/configparser.c" break; case 580: -#line 3063 "util/configparser.y" - { - OUTYY(("P(dt_dnstap_tls:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 3063 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 6919 "util/configparser.c" break; case 581: -#line 3072 "util/configparser.y" - { - OUTYY(("P(dt_dnstap_tls_server_name:%s)\n", (yyvsp[(2) - (2)].str))); +#line 3072 "./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[(2) - (2)].str); + cfg_parser->cfg->dnstap_tls_server_name = (yyvsp[0].str); } +#line 6929 "util/configparser.c" break; case 582: -#line 3079 "util/configparser.y" - { - OUTYY(("P(dt_dnstap_tls_cert_bundle:%s)\n", (yyvsp[(2) - (2)].str))); +#line 3079 "./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[(2) - (2)].str); + cfg_parser->cfg->dnstap_tls_cert_bundle = (yyvsp[0].str); } +#line 6939 "util/configparser.c" break; case 583: -#line 3086 "util/configparser.y" - { - OUTYY(("P(dt_dnstap_tls_client_key_file:%s)\n", (yyvsp[(2) - (2)].str))); +#line 3086 "./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[(2) - (2)].str); + cfg_parser->cfg->dnstap_tls_client_key_file = (yyvsp[0].str); } +#line 6949 "util/configparser.c" break; case 584: -#line 3093 "util/configparser.y" - { - OUTYY(("P(dt_dnstap_tls_client_cert_file:%s)\n", (yyvsp[(2) - (2)].str))); +#line 3093 "./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[(2) - (2)].str); + cfg_parser->cfg->dnstap_tls_client_cert_file = (yyvsp[0].str); } +#line 6959 "util/configparser.c" break; case 585: -#line 3100 "util/configparser.y" - { - OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 3100 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 6971 "util/configparser.c" break; case 586: -#line 3109 "util/configparser.y" - { - OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 3109 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 6983 "util/configparser.c" break; case 587: -#line 3118 "util/configparser.y" - { - OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[(2) - (2)].str))); +#line 3118 "./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[(2) - (2)].str); + cfg_parser->cfg->dnstap_identity = (yyvsp[0].str); } +#line 6993 "util/configparser.c" break; case 588: -#line 3125 "util/configparser.y" - { - OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[(2) - (2)].str))); +#line 3125 "./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[(2) - (2)].str); + cfg_parser->cfg->dnstap_version = (yyvsp[0].str); } +#line 7003 "util/configparser.c" break; case 589: -#line 3132 "util/configparser.y" - { - OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 3132 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 7016 "util/configparser.c" break; case 590: -#line 3142 "util/configparser.y" - { - OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 3142 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 7029 "util/configparser.c" break; case 591: -#line 3152 "util/configparser.y" - { - OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 3152 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 7042 "util/configparser.c" break; case 592: -#line 3162 "util/configparser.y" - { - OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 3162 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 7055 "util/configparser.c" break; case 593: -#line 3172 "util/configparser.y" - { - OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 3172 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 7068 "util/configparser.c" break; case 594: -#line 3182 "util/configparser.y" - { - OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 3182 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 7081 "util/configparser.c" break; case 595: -#line 3192 "util/configparser.y" - { +#line 3192 "./util/configparser.y" + { OUTYY(("\nP(python:)\n")); } +#line 7089 "util/configparser.c" break; case 599: -#line 3201 "util/configparser.y" - { - OUTYY(("P(python-script:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, (yyvsp[(2) - (2)].str))) +#line 3201 "./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 7099 "util/configparser.c" break; case 600: -#line 3207 "util/configparser.y" - { +#line 3207 "./util/configparser.y" + { OUTYY(("\nP(dynlib:)\n")); } +#line 7107 "util/configparser.c" break; case 604: -#line 3216 "util/configparser.y" - { - OUTYY(("P(dynlib-file:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, (yyvsp[(2) - (2)].str))) +#line 3216 "./util/configparser.y" + { + OUTYY(("P(dynlib-file:%s)\n", (yyvsp[0].str))); + if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, (yyvsp[0].str))) yyerror("out of memory"); } +#line 7117 "util/configparser.c" break; case 605: -#line 3222 "util/configparser.y" - { - OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[(2) - (2)].str))); - if (strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 3222 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 7130 "util/configparser.c" break; case 606: -#line 3232 "util/configparser.y" - { - OUTYY(("P(server_log_identity:%s)\n", (yyvsp[(2) - (2)].str))); +#line 3232 "./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[(2) - (2)].str); + cfg_parser->cfg->log_identity = (yyvsp[0].str); } +#line 7140 "util/configparser.c" break; case 607: -#line 3239 "util/configparser.y" - { - OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))); - validate_respip_action((yyvsp[(3) - (3)].str)); +#line 3239 "./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[(2) - (3)].str), (yyvsp[(3) - (3)].str))) + (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } +#line 7152 "util/configparser.c" break; case 608: -#line 3248 "util/configparser.y" - { - OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[(2) - (3)].str))); +#line 3248 "./util/configparser.y" + { + OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[-1].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data, - (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))) + (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } +#line 7163 "util/configparser.c" break; case 609: -#line 3256 "util/configparser.y" - { +#line 3256 "./util/configparser.y" + { OUTYY(("\nP(dnscrypt:)\n")); } +#line 7171 "util/configparser.c" break; case 622: -#line 3272 "util/configparser.y" - { - OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +#line 3272 "./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[(2) - (2)].str), "yes")==0); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); } +#line 7183 "util/configparser.c" break; case 623: -#line 3282 "util/configparser.y" - { - OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0) +#line 3282 "./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[(2) - (2)].str)); - free((yyvsp[(2) - (2)].str)); + else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } +#line 7195 "util/configparser.c" break; case 624: -#line 3291 "util/configparser.y" - { - OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", (yyvsp[(2) - (2)].str))); +#line 3291 "./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[(2) - (2)].str); + cfg_parser->cfg->dnscrypt_provider = (yyvsp[0].str); } +#line 7205 "util/configparser.c" break; case 625: -#line 3298 "util/configparser.y" - { - OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[(2) - (2)].str))); - if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[(2) - (2)].str))) - log_warn("dnscrypt-provider-cert %s is a duplicate", (yyvsp[(2) - (2)].str)); - if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[(2) - (2)].str))) +#line 3298 "./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 7217 "util/configparser.c" break; case 626: -#line 3307 "util/configparser.y" - { - OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, (yyvsp[(2) - (2)].str))) +#line 3307 "./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 7227 "util/configparser.c" break; case 627: -#line 3314 "util/configparser.y" - { - OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[(2) - (2)].str))); - if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[(2) - (2)].str))) - log_warn("dnscrypt-secret-key: %s is a duplicate", (yyvsp[(2) - (2)].str)); - if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[(2) - (2)].str))) +#line 3314 "./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 7239 "util/configparser.c" break; case 628: -#line 3323 "util/configparser.y" - { - OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->dnscrypt_shared_secret_cache_size)) +#line 3323 "./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[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 7250 "util/configparser.c" break; case 629: -#line 3331 "util/configparser.y" - { - OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0) +#line 3331 "./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[(2) - (2)].str)); + 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[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 7266 "util/configparser.c" break; case 630: -#line 3344 "util/configparser.y" - { - OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", (yyvsp[(2) - (2)].str))); - if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->dnscrypt_nonce_cache_size)) +#line 3344 "./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[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 7277 "util/configparser.c" break; case 631: -#line 3352 "util/configparser.y" - { - OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0) +#line 3352 "./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[(2) - (2)].str)); + 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[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 7293 "util/configparser.c" break; case 632: -#line 3365 "util/configparser.y" - { +#line 3365 "./util/configparser.y" + { OUTYY(("\nP(cachedb:)\n")); } +#line 7301 "util/configparser.c" break; case 641: -#line 3376 "util/configparser.y" - { +#line 3376 "./util/configparser.y" + { #ifdef USE_CACHEDB - OUTYY(("P(backend:%s)\n", (yyvsp[(2) - (2)].str))); + OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->cachedb_backend); - cfg_parser->cfg->cachedb_backend = (yyvsp[(2) - (2)].str); + cfg_parser->cfg->cachedb_backend = (yyvsp[0].str); #else OUTYY(("P(Compiled without cachedb, ignoring)\n")); - free((yyvsp[(2) - (2)].str)); + free((yyvsp[0].str)); #endif } +#line 7316 "util/configparser.c" break; case 642: -#line 3388 "util/configparser.y" - { +#line 3388 "./util/configparser.y" + { #ifdef USE_CACHEDB - OUTYY(("P(secret-seed:%s)\n", (yyvsp[(2) - (2)].str))); + OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->cachedb_secret); - cfg_parser->cfg->cachedb_secret = (yyvsp[(2) - (2)].str); + cfg_parser->cfg->cachedb_secret = (yyvsp[0].str); #else OUTYY(("P(Compiled without cachedb, ignoring)\n")); - free((yyvsp[(2) - (2)].str)); + free((yyvsp[0].str)); #endif } +#line 7331 "util/configparser.c" break; case 643: -#line 3400 "util/configparser.y" - { +#line 3400 "./util/configparser.y" + { #if defined(USE_CACHEDB) && defined(USE_REDIS) - OUTYY(("P(redis_server_host:%s)\n", (yyvsp[(2) - (2)].str))); + OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->redis_server_host); - cfg_parser->cfg->redis_server_host = (yyvsp[(2) - (2)].str); + cfg_parser->cfg->redis_server_host = (yyvsp[0].str); #else OUTYY(("P(Compiled without cachedb or redis, ignoring)\n")); - free((yyvsp[(2) - (2)].str)); + free((yyvsp[0].str)); #endif } +#line 7346 "util/configparser.c" break; case 644: -#line 3412 "util/configparser.y" - { +#line 3412 "./util/configparser.y" + { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; - OUTYY(("P(redis_server_port:%s)\n", (yyvsp[(2) - (2)].str))); - port = atoi((yyvsp[(2) - (2)].str)); + 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[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 7364 "util/configparser.c" break; case 645: -#line 3427 "util/configparser.y" - { +#line 3427 "./util/configparser.y" + { #if defined(USE_CACHEDB) && defined(USE_REDIS) - OUTYY(("P(redis_timeout:%s)\n", (yyvsp[(2) - (2)].str))); - if(atoi((yyvsp[(2) - (2)].str)) == 0) + 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[(2) - (2)].str)); + else cfg_parser->cfg->redis_timeout = atoi((yyvsp[0].str)); #else OUTYY(("P(Compiled without cachedb or redis, ignoring)\n")); #endif - free((yyvsp[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 7380 "util/configparser.c" break; case 646: -#line 3440 "util/configparser.y" - { +#line 3440 "./util/configparser.y" + { #if defined(USE_CACHEDB) && defined(USE_REDIS) - OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[(2) - (2)].str))); - if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) + OUTYY(("P(redis_expire_records:%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->redis_expire_records = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); + else cfg_parser->cfg->redis_expire_records = (strcmp((yyvsp[0].str), "yes")==0); #else OUTYY(("P(Compiled without cachedb or redis, ignoring)\n")); #endif - free((yyvsp[(2) - (2)].str)); + free((yyvsp[0].str)); } +#line 7396 "util/configparser.c" break; case 647: -#line 3453 "util/configparser.y" - { - OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))); - if (atoi((yyvsp[(3) - (3)].str)) < 0) +#line 3453 "./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[(2) - (3)].str), (yyvsp[(3) - (3)].str))) + 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 7410 "util/configparser.c" break; case 648: -#line 3464 "util/configparser.y" - { +#line 3464 "./util/configparser.y" + { OUTYY(("\nP(ipset:)\n")); } +#line 7418 "util/configparser.c" break; case 653: -#line 3473 "util/configparser.y" - { +#line 3473 "./util/configparser.y" + { #ifdef USE_IPSET - OUTYY(("P(name-v4:%s)\n", (yyvsp[(2) - (2)].str))); + 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[(2) - (2)].str); + cfg_parser->cfg->ipset_name_v4 = (yyvsp[0].str); #else OUTYY(("P(Compiled without ipset, ignoring)\n")); - free((yyvsp[(2) - (2)].str)); + free((yyvsp[0].str)); #endif } +#line 7436 "util/configparser.c" break; case 654: -#line 3488 "util/configparser.y" - { +#line 3488 "./util/configparser.y" + { #ifdef USE_IPSET - OUTYY(("P(name-v6:%s)\n", (yyvsp[(2) - (2)].str))); + 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[(2) - (2)].str); + cfg_parser->cfg->ipset_name_v6 = (yyvsp[0].str); #else OUTYY(("P(Compiled without ipset, ignoring)\n")); - free((yyvsp[(2) - (2)].str)); + free((yyvsp[0].str)); #endif } +#line 7454 "util/configparser.c" break; -/* Line 1267 of yacc.c. */ -#line 6921 "util/configparser.c" +#line 7458 "util/configparser.c" + default: break; } - YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + /* 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 ("-> $$ =", YY_CAST (yysymbol_kind_t, 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 + /* 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. */ - - yyn = yyr1[yyn]; - - yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; - if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) - yystate = yytable[yystate]; - else - yystate = yydefgoto[yyn - YYNTOKENS]; + { + 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 -- 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 ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar); /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { ++yynerrs; -#if ! YYERROR_VERBOSE yyerror (YY_("syntax error")); -#else - { - YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); - if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) - { - YYSIZE_T yyalloc = 2 * yysize; - if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) - yyalloc = YYSTACK_ALLOC_MAXIMUM; - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); - yymsg = (char *) YYSTACK_ALLOC (yyalloc); - if (yymsg) - yymsg_alloc = yyalloc; - else - { - yymsg = yymsgbuf; - yymsg_alloc = sizeof yymsgbuf; - } - } - - if (0 < yysize && yysize <= yymsg_alloc) - { - (void) yysyntax_error (yymsg, yystate, yychar); - yyerror (yymsg); - } - else - { - yyerror (YY_("syntax error")); - if (yysize != 0) - goto yyexhaustedlab; - } - } -#endif } - - if (yyerrstatus == 3) { - /* If just tried and failed to reuse look-ahead token after an - error, discard it. */ + /* 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; - } + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } else - { - yydestruct ("Error: discarding", - yytoken, &yylval); - yychar = YYEMPTY; - } + { + yydestruct ("Error: discarding", + yytoken, &yylval); + yychar = YYEMPTY; + } } - /* Else will try to reuse look-ahead token after shifting the error + /* Else will try to reuse lookahead token after shifting the error token. */ goto yyerrlab1; @@ -7019,14 +7532,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 which action triggered + /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ YYPOPSTACK (yylen); yylen = 0; @@ -7039,42 +7550,42 @@ yyerrorlab: | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: - yyerrstatus = 3; /* Each real token shifted decrements this. */ + yyerrstatus = 3; /* Each real token shifted decrements this. */ + /* Pop stack until we find a state that shifts the error token. */ for (;;) { yyn = yypact[yystate]; - if (yyn != YYPACT_NINF) - { - yyn += YYTERROR; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) - { - yyn = yytable[yyn]; - if (0 < yyn) - break; - } - } + if (!yypact_value_is_default (yyn)) + { + yyn += YYSYMBOL_YYerror; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } /* Pop the current state because it cannot handle the error token. */ if (yyssp == yyss) - YYABORT; + YYABORT; yydestruct ("Error: popping", - yystos[yystate], yyvsp); + YY_ACCESSING_SYMBOL (yystate), yyvsp); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); } - if (yyn == YYFINAL) - YYACCEPT; - + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END /* Shift the error token. */ - YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp); yystate = yyn; goto yynewstate; @@ -7087,6 +7598,7 @@ yyacceptlab: yyresult = 0; goto yyreturn; + /*-----------------------------------. | yyabortlab -- YYABORT comes here. | `-----------------------------------*/ @@ -7094,7 +7606,8 @@ yyabortlab: yyresult = 1; goto yyreturn; -#ifndef yyoverflow + +#if !defined yyoverflow /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ @@ -7104,34 +7617,38 @@ yyexhaustedlab: /* Fall through. */ #endif + +/*-----------------------------------------------------. +| yyreturn -- parsing is finished, return the result. | +`-----------------------------------------------------*/ yyreturn: - if (yychar != YYEOF && yychar != YYEMPTY) - yydestruct ("Cleanup: discarding lookahead", - yytoken, &yylval); - /* Do not reclaim the symbols of the rule which action triggered + 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); + YY_ACCESSING_SYMBOL (+*yyssp), yyvsp); YYPOPSTACK (1); } #ifndef yyoverflow if (yyss != yyssa) YYSTACK_FREE (yyss); #endif -#if YYERROR_VERBOSE - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); -#endif - /* Make sure YYID is used. */ - return YYID (yyresult); + + return yyresult; } - -#line 3502 "util/configparser.y" +#line 3502 "./util/configparser.y" /* parse helper routines could be here */ @@ -7153,4 +7670,3 @@ validate_respip_action(const char* action) } - diff --git a/util/configparser.h b/util/configparser.h index 430f09180..98e628db7 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -1,14 +1,14 @@ -/* A Bison parser, made by GNU Bison 2.3. */ +/* A Bison parser, made by GNU Bison 3.6.4. */ -/* Skeleton interface for Bison's Yacc-like parsers in C +/* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 - Free Software Foundation, Inc. + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, + Inc. - This program is free software; you can redistribute it and/or modify + 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 2, or (at your option) - any later version. + 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 @@ -16,9 +16,7 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. */ + 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 @@ -33,326 +31,347 @@ This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ -/* Tokens. */ +/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, + especially those whose name start with YY_ or yy_. They are + private implementation details that can be changed or removed. */ + +#ifndef YY_YY_UTIL_CONFIGPARSER_H_INCLUDED +# define YY_YY_UTIL_CONFIGPARSER_H_INCLUDED +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int yydebug; +#endif + +/* Token kinds. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum yytokentype { - SPACE = 258, - LETTER = 259, - NEWLINE = 260, - COMMENT = 261, - COLON = 262, - ANY = 263, - ZONESTR = 264, - STRING_ARG = 265, - VAR_FORCE_TOPLEVEL = 266, - VAR_SERVER = 267, - VAR_VERBOSITY = 268, - VAR_NUM_THREADS = 269, - VAR_PORT = 270, - VAR_OUTGOING_RANGE = 271, - VAR_INTERFACE = 272, - VAR_PREFER_IP4 = 273, - VAR_DO_IP4 = 274, - VAR_DO_IP6 = 275, - VAR_PREFER_IP6 = 276, - VAR_DO_UDP = 277, - VAR_DO_TCP = 278, - VAR_TCP_MSS = 279, - VAR_OUTGOING_TCP_MSS = 280, - VAR_TCP_IDLE_TIMEOUT = 281, - VAR_EDNS_TCP_KEEPALIVE = 282, - VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 283, - VAR_CHROOT = 284, - VAR_USERNAME = 285, - VAR_DIRECTORY = 286, - VAR_LOGFILE = 287, - VAR_PIDFILE = 288, - VAR_MSG_CACHE_SIZE = 289, - VAR_MSG_CACHE_SLABS = 290, - VAR_NUM_QUERIES_PER_THREAD = 291, - VAR_RRSET_CACHE_SIZE = 292, - VAR_RRSET_CACHE_SLABS = 293, - VAR_OUTGOING_NUM_TCP = 294, - VAR_INFRA_HOST_TTL = 295, - VAR_INFRA_LAME_TTL = 296, - VAR_INFRA_CACHE_SLABS = 297, - VAR_INFRA_CACHE_NUMHOSTS = 298, - VAR_INFRA_CACHE_LAME_SIZE = 299, - VAR_NAME = 300, - VAR_STUB_ZONE = 301, - VAR_STUB_HOST = 302, - VAR_STUB_ADDR = 303, - VAR_TARGET_FETCH_POLICY = 304, - VAR_HARDEN_SHORT_BUFSIZE = 305, - VAR_HARDEN_LARGE_QUERIES = 306, - VAR_FORWARD_ZONE = 307, - VAR_FORWARD_HOST = 308, - VAR_FORWARD_ADDR = 309, - VAR_DO_NOT_QUERY_ADDRESS = 310, - VAR_HIDE_IDENTITY = 311, - VAR_HIDE_VERSION = 312, - VAR_IDENTITY = 313, - VAR_VERSION = 314, - VAR_HARDEN_GLUE = 315, - VAR_MODULE_CONF = 316, - VAR_TRUST_ANCHOR_FILE = 317, - VAR_TRUST_ANCHOR = 318, - VAR_VAL_OVERRIDE_DATE = 319, - VAR_BOGUS_TTL = 320, - VAR_VAL_CLEAN_ADDITIONAL = 321, - VAR_VAL_PERMISSIVE_MODE = 322, - VAR_INCOMING_NUM_TCP = 323, - VAR_MSG_BUFFER_SIZE = 324, - VAR_KEY_CACHE_SIZE = 325, - VAR_KEY_CACHE_SLABS = 326, - VAR_TRUSTED_KEYS_FILE = 327, - VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 328, - VAR_USE_SYSLOG = 329, - VAR_OUTGOING_INTERFACE = 330, - VAR_ROOT_HINTS = 331, - VAR_DO_NOT_QUERY_LOCALHOST = 332, - VAR_CACHE_MAX_TTL = 333, - VAR_HARDEN_DNSSEC_STRIPPED = 334, - VAR_ACCESS_CONTROL = 335, - VAR_LOCAL_ZONE = 336, - VAR_LOCAL_DATA = 337, - VAR_INTERFACE_AUTOMATIC = 338, - VAR_STATISTICS_INTERVAL = 339, - VAR_DO_DAEMONIZE = 340, - VAR_USE_CAPS_FOR_ID = 341, - VAR_STATISTICS_CUMULATIVE = 342, - VAR_OUTGOING_PORT_PERMIT = 343, - VAR_OUTGOING_PORT_AVOID = 344, - VAR_DLV_ANCHOR_FILE = 345, - VAR_DLV_ANCHOR = 346, - VAR_NEG_CACHE_SIZE = 347, - VAR_HARDEN_REFERRAL_PATH = 348, - VAR_PRIVATE_ADDRESS = 349, - VAR_PRIVATE_DOMAIN = 350, - VAR_REMOTE_CONTROL = 351, - VAR_CONTROL_ENABLE = 352, - VAR_CONTROL_INTERFACE = 353, - VAR_CONTROL_PORT = 354, - VAR_SERVER_KEY_FILE = 355, - VAR_SERVER_CERT_FILE = 356, - VAR_CONTROL_KEY_FILE = 357, - VAR_CONTROL_CERT_FILE = 358, - VAR_CONTROL_USE_CERT = 359, - VAR_TCP_REUSE_TIMEOUT = 360, - VAR_MAX_REUSE_TCP_QUERIES = 361, - VAR_EXTENDED_STATISTICS = 362, - VAR_LOCAL_DATA_PTR = 363, - VAR_JOSTLE_TIMEOUT = 364, - VAR_STUB_PRIME = 365, - VAR_UNWANTED_REPLY_THRESHOLD = 366, - VAR_LOG_TIME_ASCII = 367, - VAR_DOMAIN_INSECURE = 368, - VAR_PYTHON = 369, - VAR_PYTHON_SCRIPT = 370, - VAR_VAL_SIG_SKEW_MIN = 371, - VAR_VAL_SIG_SKEW_MAX = 372, - VAR_CACHE_MIN_TTL = 373, - VAR_VAL_LOG_LEVEL = 374, - VAR_AUTO_TRUST_ANCHOR_FILE = 375, - VAR_KEEP_MISSING = 376, - VAR_ADD_HOLDDOWN = 377, - VAR_DEL_HOLDDOWN = 378, - VAR_SO_RCVBUF = 379, - VAR_EDNS_BUFFER_SIZE = 380, - VAR_PREFETCH = 381, - VAR_PREFETCH_KEY = 382, - VAR_SO_SNDBUF = 383, - VAR_SO_REUSEPORT = 384, - VAR_HARDEN_BELOW_NXDOMAIN = 385, - VAR_IGNORE_CD_FLAG = 386, - VAR_LOG_QUERIES = 387, - VAR_LOG_REPLIES = 388, - VAR_LOG_LOCAL_ACTIONS = 389, - VAR_TCP_UPSTREAM = 390, - VAR_SSL_UPSTREAM = 391, - VAR_TCP_AUTH_QUERY_TIMEOUT = 392, - VAR_SSL_SERVICE_KEY = 393, - VAR_SSL_SERVICE_PEM = 394, - VAR_SSL_PORT = 395, - VAR_FORWARD_FIRST = 396, - VAR_STUB_SSL_UPSTREAM = 397, - VAR_FORWARD_SSL_UPSTREAM = 398, - VAR_TLS_CERT_BUNDLE = 399, - VAR_HTTPS_PORT = 400, - VAR_HTTP_ENDPOINT = 401, - VAR_HTTP_MAX_STREAMS = 402, - VAR_HTTP_QUERY_BUFFER_SIZE = 403, - VAR_HTTP_RESPONSE_BUFFER_SIZE = 404, - VAR_HTTP_NODELAY = 405, - VAR_HTTP_NOTLS_DOWNSTREAM = 406, - VAR_STUB_FIRST = 407, - VAR_MINIMAL_RESPONSES = 408, - VAR_RRSET_ROUNDROBIN = 409, - VAR_MAX_UDP_SIZE = 410, - VAR_DELAY_CLOSE = 411, - VAR_UDP_CONNECT = 412, - VAR_UNBLOCK_LAN_ZONES = 413, - VAR_INSECURE_LAN_ZONES = 414, - VAR_INFRA_CACHE_MIN_RTT = 415, - VAR_INFRA_KEEP_PROBING = 416, - VAR_DNS64_PREFIX = 417, - VAR_DNS64_SYNTHALL = 418, - VAR_DNS64_IGNORE_AAAA = 419, - VAR_DNSTAP = 420, - VAR_DNSTAP_ENABLE = 421, - VAR_DNSTAP_SOCKET_PATH = 422, - VAR_DNSTAP_IP = 423, - VAR_DNSTAP_TLS = 424, - VAR_DNSTAP_TLS_SERVER_NAME = 425, - VAR_DNSTAP_TLS_CERT_BUNDLE = 426, - VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 427, - VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 428, - VAR_DNSTAP_SEND_IDENTITY = 429, - VAR_DNSTAP_SEND_VERSION = 430, - VAR_DNSTAP_BIDIRECTIONAL = 431, - VAR_DNSTAP_IDENTITY = 432, - VAR_DNSTAP_VERSION = 433, - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 434, - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 435, - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 436, - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 437, - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 438, - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 439, - VAR_RESPONSE_IP_TAG = 440, - VAR_RESPONSE_IP = 441, - VAR_RESPONSE_IP_DATA = 442, - VAR_HARDEN_ALGO_DOWNGRADE = 443, - VAR_IP_TRANSPARENT = 444, - VAR_IP_DSCP = 445, - VAR_DISABLE_DNSSEC_LAME_CHECK = 446, - VAR_IP_RATELIMIT = 447, - VAR_IP_RATELIMIT_SLABS = 448, - VAR_IP_RATELIMIT_SIZE = 449, - VAR_RATELIMIT = 450, - VAR_RATELIMIT_SLABS = 451, - VAR_RATELIMIT_SIZE = 452, - VAR_RATELIMIT_FOR_DOMAIN = 453, - VAR_RATELIMIT_BELOW_DOMAIN = 454, - VAR_IP_RATELIMIT_FACTOR = 455, - VAR_RATELIMIT_FACTOR = 456, - VAR_SEND_CLIENT_SUBNET = 457, - VAR_CLIENT_SUBNET_ZONE = 458, - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 459, - VAR_CLIENT_SUBNET_OPCODE = 460, - VAR_MAX_CLIENT_SUBNET_IPV4 = 461, - VAR_MAX_CLIENT_SUBNET_IPV6 = 462, - VAR_MIN_CLIENT_SUBNET_IPV4 = 463, - VAR_MIN_CLIENT_SUBNET_IPV6 = 464, - VAR_MAX_ECS_TREE_SIZE_IPV4 = 465, - VAR_MAX_ECS_TREE_SIZE_IPV6 = 466, - VAR_CAPS_WHITELIST = 467, - VAR_CACHE_MAX_NEGATIVE_TTL = 468, - VAR_PERMIT_SMALL_HOLDDOWN = 469, - VAR_QNAME_MINIMISATION = 470, - VAR_QNAME_MINIMISATION_STRICT = 471, - VAR_IP_FREEBIND = 472, - VAR_DEFINE_TAG = 473, - VAR_LOCAL_ZONE_TAG = 474, - VAR_ACCESS_CONTROL_TAG = 475, - VAR_LOCAL_ZONE_OVERRIDE = 476, - VAR_ACCESS_CONTROL_TAG_ACTION = 477, - VAR_ACCESS_CONTROL_TAG_DATA = 478, - VAR_VIEW = 479, - VAR_ACCESS_CONTROL_VIEW = 480, - VAR_VIEW_FIRST = 481, - VAR_SERVE_EXPIRED = 482, - VAR_SERVE_EXPIRED_TTL = 483, - VAR_SERVE_EXPIRED_TTL_RESET = 484, - VAR_SERVE_EXPIRED_REPLY_TTL = 485, - VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 486, - VAR_SERVE_ORIGINAL_TTL = 487, - VAR_FAKE_DSA = 488, - VAR_FAKE_SHA1 = 489, - VAR_LOG_IDENTITY = 490, - VAR_HIDE_TRUSTANCHOR = 491, - VAR_TRUST_ANCHOR_SIGNALING = 492, - VAR_AGGRESSIVE_NSEC = 493, - VAR_USE_SYSTEMD = 494, - VAR_SHM_ENABLE = 495, - VAR_SHM_KEY = 496, - VAR_ROOT_KEY_SENTINEL = 497, - VAR_DNSCRYPT = 498, - VAR_DNSCRYPT_ENABLE = 499, - VAR_DNSCRYPT_PORT = 500, - VAR_DNSCRYPT_PROVIDER = 501, - VAR_DNSCRYPT_SECRET_KEY = 502, - VAR_DNSCRYPT_PROVIDER_CERT = 503, - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 504, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 505, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 506, - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 507, - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 508, - VAR_PAD_RESPONSES = 509, - VAR_PAD_RESPONSES_BLOCK_SIZE = 510, - VAR_PAD_QUERIES = 511, - VAR_PAD_QUERIES_BLOCK_SIZE = 512, - VAR_IPSECMOD_ENABLED = 513, - VAR_IPSECMOD_HOOK = 514, - VAR_IPSECMOD_IGNORE_BOGUS = 515, - VAR_IPSECMOD_MAX_TTL = 516, - VAR_IPSECMOD_WHITELIST = 517, - VAR_IPSECMOD_STRICT = 518, - VAR_CACHEDB = 519, - VAR_CACHEDB_BACKEND = 520, - VAR_CACHEDB_SECRETSEED = 521, - VAR_CACHEDB_REDISHOST = 522, - VAR_CACHEDB_REDISPORT = 523, - VAR_CACHEDB_REDISTIMEOUT = 524, - VAR_CACHEDB_REDISEXPIRERECORDS = 525, - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 526, - VAR_FOR_UPSTREAM = 527, - VAR_AUTH_ZONE = 528, - VAR_ZONEFILE = 529, - VAR_MASTER = 530, - VAR_URL = 531, - VAR_FOR_DOWNSTREAM = 532, - VAR_FALLBACK_ENABLED = 533, - VAR_TLS_ADDITIONAL_PORT = 534, - VAR_LOW_RTT = 535, - VAR_LOW_RTT_PERMIL = 536, - VAR_FAST_SERVER_PERMIL = 537, - VAR_FAST_SERVER_NUM = 538, - VAR_ALLOW_NOTIFY = 539, - VAR_TLS_WIN_CERT = 540, - VAR_TCP_CONNECTION_LIMIT = 541, - VAR_FORWARD_NO_CACHE = 542, - VAR_STUB_NO_CACHE = 543, - VAR_LOG_SERVFAIL = 544, - VAR_DENY_ANY = 545, - VAR_UNKNOWN_SERVER_TIME_LIMIT = 546, - VAR_LOG_TAG_QUERYREPLY = 547, - VAR_STREAM_WAIT_SIZE = 548, - VAR_TLS_CIPHERS = 549, - VAR_TLS_CIPHERSUITES = 550, - VAR_TLS_USE_SNI = 551, - VAR_IPSET = 552, - VAR_IPSET_NAME_V4 = 553, - VAR_IPSET_NAME_V6 = 554, - VAR_TLS_SESSION_TICKET_KEYS = 555, - VAR_RPZ = 556, - VAR_TAGS = 557, - VAR_RPZ_ACTION_OVERRIDE = 558, - VAR_RPZ_CNAME_OVERRIDE = 559, - VAR_RPZ_LOG = 560, - VAR_RPZ_LOG_NAME = 561, - VAR_DYNLIB = 562, - VAR_DYNLIB_FILE = 563, - VAR_EDNS_CLIENT_STRING = 564, - VAR_EDNS_CLIENT_STRING_OPCODE = 565, - VAR_NSID = 566, - VAR_ZONEMD_PERMISSIVE_MODE = 567, - VAR_ZONEMD_REJECT_ABSENCE = 568 - }; + enum yytokentype + { + YYEMPTY = -2, + YYEOF = 0, /* "end of file" */ + YYerror = 256, /* error */ + YYUNDEF = 257, /* "invalid token" */ + SPACE = 258, /* SPACE */ + LETTER = 259, /* LETTER */ + NEWLINE = 260, /* NEWLINE */ + COMMENT = 261, /* COMMENT */ + COLON = 262, /* COLON */ + ANY = 263, /* ANY */ + ZONESTR = 264, /* ZONESTR */ + STRING_ARG = 265, /* STRING_ARG */ + VAR_FORCE_TOPLEVEL = 266, /* VAR_FORCE_TOPLEVEL */ + VAR_SERVER = 267, /* VAR_SERVER */ + VAR_VERBOSITY = 268, /* VAR_VERBOSITY */ + VAR_NUM_THREADS = 269, /* VAR_NUM_THREADS */ + VAR_PORT = 270, /* VAR_PORT */ + VAR_OUTGOING_RANGE = 271, /* VAR_OUTGOING_RANGE */ + VAR_INTERFACE = 272, /* VAR_INTERFACE */ + VAR_PREFER_IP4 = 273, /* VAR_PREFER_IP4 */ + VAR_DO_IP4 = 274, /* VAR_DO_IP4 */ + VAR_DO_IP6 = 275, /* VAR_DO_IP6 */ + VAR_PREFER_IP6 = 276, /* VAR_PREFER_IP6 */ + VAR_DO_UDP = 277, /* VAR_DO_UDP */ + VAR_DO_TCP = 278, /* VAR_DO_TCP */ + VAR_TCP_MSS = 279, /* VAR_TCP_MSS */ + VAR_OUTGOING_TCP_MSS = 280, /* VAR_OUTGOING_TCP_MSS */ + VAR_TCP_IDLE_TIMEOUT = 281, /* VAR_TCP_IDLE_TIMEOUT */ + VAR_EDNS_TCP_KEEPALIVE = 282, /* VAR_EDNS_TCP_KEEPALIVE */ + VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 283, /* VAR_EDNS_TCP_KEEPALIVE_TIMEOUT */ + VAR_CHROOT = 284, /* VAR_CHROOT */ + VAR_USERNAME = 285, /* VAR_USERNAME */ + VAR_DIRECTORY = 286, /* VAR_DIRECTORY */ + VAR_LOGFILE = 287, /* VAR_LOGFILE */ + VAR_PIDFILE = 288, /* VAR_PIDFILE */ + VAR_MSG_CACHE_SIZE = 289, /* VAR_MSG_CACHE_SIZE */ + VAR_MSG_CACHE_SLABS = 290, /* VAR_MSG_CACHE_SLABS */ + VAR_NUM_QUERIES_PER_THREAD = 291, /* VAR_NUM_QUERIES_PER_THREAD */ + VAR_RRSET_CACHE_SIZE = 292, /* VAR_RRSET_CACHE_SIZE */ + VAR_RRSET_CACHE_SLABS = 293, /* VAR_RRSET_CACHE_SLABS */ + VAR_OUTGOING_NUM_TCP = 294, /* VAR_OUTGOING_NUM_TCP */ + VAR_INFRA_HOST_TTL = 295, /* VAR_INFRA_HOST_TTL */ + VAR_INFRA_LAME_TTL = 296, /* VAR_INFRA_LAME_TTL */ + VAR_INFRA_CACHE_SLABS = 297, /* VAR_INFRA_CACHE_SLABS */ + VAR_INFRA_CACHE_NUMHOSTS = 298, /* VAR_INFRA_CACHE_NUMHOSTS */ + VAR_INFRA_CACHE_LAME_SIZE = 299, /* VAR_INFRA_CACHE_LAME_SIZE */ + VAR_NAME = 300, /* VAR_NAME */ + VAR_STUB_ZONE = 301, /* VAR_STUB_ZONE */ + VAR_STUB_HOST = 302, /* VAR_STUB_HOST */ + VAR_STUB_ADDR = 303, /* VAR_STUB_ADDR */ + VAR_TARGET_FETCH_POLICY = 304, /* VAR_TARGET_FETCH_POLICY */ + VAR_HARDEN_SHORT_BUFSIZE = 305, /* VAR_HARDEN_SHORT_BUFSIZE */ + VAR_HARDEN_LARGE_QUERIES = 306, /* VAR_HARDEN_LARGE_QUERIES */ + VAR_FORWARD_ZONE = 307, /* VAR_FORWARD_ZONE */ + VAR_FORWARD_HOST = 308, /* VAR_FORWARD_HOST */ + VAR_FORWARD_ADDR = 309, /* VAR_FORWARD_ADDR */ + VAR_DO_NOT_QUERY_ADDRESS = 310, /* VAR_DO_NOT_QUERY_ADDRESS */ + VAR_HIDE_IDENTITY = 311, /* VAR_HIDE_IDENTITY */ + VAR_HIDE_VERSION = 312, /* VAR_HIDE_VERSION */ + VAR_IDENTITY = 313, /* VAR_IDENTITY */ + VAR_VERSION = 314, /* VAR_VERSION */ + VAR_HARDEN_GLUE = 315, /* VAR_HARDEN_GLUE */ + VAR_MODULE_CONF = 316, /* VAR_MODULE_CONF */ + VAR_TRUST_ANCHOR_FILE = 317, /* VAR_TRUST_ANCHOR_FILE */ + VAR_TRUST_ANCHOR = 318, /* VAR_TRUST_ANCHOR */ + VAR_VAL_OVERRIDE_DATE = 319, /* VAR_VAL_OVERRIDE_DATE */ + VAR_BOGUS_TTL = 320, /* VAR_BOGUS_TTL */ + VAR_VAL_CLEAN_ADDITIONAL = 321, /* VAR_VAL_CLEAN_ADDITIONAL */ + VAR_VAL_PERMISSIVE_MODE = 322, /* VAR_VAL_PERMISSIVE_MODE */ + VAR_INCOMING_NUM_TCP = 323, /* VAR_INCOMING_NUM_TCP */ + VAR_MSG_BUFFER_SIZE = 324, /* VAR_MSG_BUFFER_SIZE */ + VAR_KEY_CACHE_SIZE = 325, /* VAR_KEY_CACHE_SIZE */ + VAR_KEY_CACHE_SLABS = 326, /* VAR_KEY_CACHE_SLABS */ + VAR_TRUSTED_KEYS_FILE = 327, /* VAR_TRUSTED_KEYS_FILE */ + VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 328, /* VAR_VAL_NSEC3_KEYSIZE_ITERATIONS */ + VAR_USE_SYSLOG = 329, /* VAR_USE_SYSLOG */ + VAR_OUTGOING_INTERFACE = 330, /* VAR_OUTGOING_INTERFACE */ + VAR_ROOT_HINTS = 331, /* VAR_ROOT_HINTS */ + VAR_DO_NOT_QUERY_LOCALHOST = 332, /* VAR_DO_NOT_QUERY_LOCALHOST */ + VAR_CACHE_MAX_TTL = 333, /* VAR_CACHE_MAX_TTL */ + VAR_HARDEN_DNSSEC_STRIPPED = 334, /* VAR_HARDEN_DNSSEC_STRIPPED */ + VAR_ACCESS_CONTROL = 335, /* VAR_ACCESS_CONTROL */ + VAR_LOCAL_ZONE = 336, /* VAR_LOCAL_ZONE */ + VAR_LOCAL_DATA = 337, /* VAR_LOCAL_DATA */ + VAR_INTERFACE_AUTOMATIC = 338, /* VAR_INTERFACE_AUTOMATIC */ + VAR_STATISTICS_INTERVAL = 339, /* VAR_STATISTICS_INTERVAL */ + VAR_DO_DAEMONIZE = 340, /* VAR_DO_DAEMONIZE */ + VAR_USE_CAPS_FOR_ID = 341, /* VAR_USE_CAPS_FOR_ID */ + VAR_STATISTICS_CUMULATIVE = 342, /* VAR_STATISTICS_CUMULATIVE */ + VAR_OUTGOING_PORT_PERMIT = 343, /* VAR_OUTGOING_PORT_PERMIT */ + VAR_OUTGOING_PORT_AVOID = 344, /* VAR_OUTGOING_PORT_AVOID */ + VAR_DLV_ANCHOR_FILE = 345, /* VAR_DLV_ANCHOR_FILE */ + VAR_DLV_ANCHOR = 346, /* VAR_DLV_ANCHOR */ + VAR_NEG_CACHE_SIZE = 347, /* VAR_NEG_CACHE_SIZE */ + VAR_HARDEN_REFERRAL_PATH = 348, /* VAR_HARDEN_REFERRAL_PATH */ + VAR_PRIVATE_ADDRESS = 349, /* VAR_PRIVATE_ADDRESS */ + VAR_PRIVATE_DOMAIN = 350, /* VAR_PRIVATE_DOMAIN */ + VAR_REMOTE_CONTROL = 351, /* VAR_REMOTE_CONTROL */ + VAR_CONTROL_ENABLE = 352, /* VAR_CONTROL_ENABLE */ + VAR_CONTROL_INTERFACE = 353, /* VAR_CONTROL_INTERFACE */ + VAR_CONTROL_PORT = 354, /* VAR_CONTROL_PORT */ + VAR_SERVER_KEY_FILE = 355, /* VAR_SERVER_KEY_FILE */ + VAR_SERVER_CERT_FILE = 356, /* VAR_SERVER_CERT_FILE */ + VAR_CONTROL_KEY_FILE = 357, /* VAR_CONTROL_KEY_FILE */ + VAR_CONTROL_CERT_FILE = 358, /* VAR_CONTROL_CERT_FILE */ + VAR_CONTROL_USE_CERT = 359, /* VAR_CONTROL_USE_CERT */ + VAR_TCP_REUSE_TIMEOUT = 360, /* VAR_TCP_REUSE_TIMEOUT */ + VAR_MAX_REUSE_TCP_QUERIES = 361, /* VAR_MAX_REUSE_TCP_QUERIES */ + VAR_EXTENDED_STATISTICS = 362, /* VAR_EXTENDED_STATISTICS */ + VAR_LOCAL_DATA_PTR = 363, /* VAR_LOCAL_DATA_PTR */ + VAR_JOSTLE_TIMEOUT = 364, /* VAR_JOSTLE_TIMEOUT */ + VAR_STUB_PRIME = 365, /* VAR_STUB_PRIME */ + VAR_UNWANTED_REPLY_THRESHOLD = 366, /* VAR_UNWANTED_REPLY_THRESHOLD */ + VAR_LOG_TIME_ASCII = 367, /* VAR_LOG_TIME_ASCII */ + VAR_DOMAIN_INSECURE = 368, /* VAR_DOMAIN_INSECURE */ + VAR_PYTHON = 369, /* VAR_PYTHON */ + VAR_PYTHON_SCRIPT = 370, /* VAR_PYTHON_SCRIPT */ + VAR_VAL_SIG_SKEW_MIN = 371, /* VAR_VAL_SIG_SKEW_MIN */ + VAR_VAL_SIG_SKEW_MAX = 372, /* VAR_VAL_SIG_SKEW_MAX */ + VAR_CACHE_MIN_TTL = 373, /* VAR_CACHE_MIN_TTL */ + VAR_VAL_LOG_LEVEL = 374, /* VAR_VAL_LOG_LEVEL */ + VAR_AUTO_TRUST_ANCHOR_FILE = 375, /* VAR_AUTO_TRUST_ANCHOR_FILE */ + VAR_KEEP_MISSING = 376, /* VAR_KEEP_MISSING */ + VAR_ADD_HOLDDOWN = 377, /* VAR_ADD_HOLDDOWN */ + VAR_DEL_HOLDDOWN = 378, /* VAR_DEL_HOLDDOWN */ + VAR_SO_RCVBUF = 379, /* VAR_SO_RCVBUF */ + VAR_EDNS_BUFFER_SIZE = 380, /* VAR_EDNS_BUFFER_SIZE */ + VAR_PREFETCH = 381, /* VAR_PREFETCH */ + VAR_PREFETCH_KEY = 382, /* VAR_PREFETCH_KEY */ + VAR_SO_SNDBUF = 383, /* VAR_SO_SNDBUF */ + VAR_SO_REUSEPORT = 384, /* VAR_SO_REUSEPORT */ + VAR_HARDEN_BELOW_NXDOMAIN = 385, /* VAR_HARDEN_BELOW_NXDOMAIN */ + VAR_IGNORE_CD_FLAG = 386, /* VAR_IGNORE_CD_FLAG */ + VAR_LOG_QUERIES = 387, /* VAR_LOG_QUERIES */ + VAR_LOG_REPLIES = 388, /* VAR_LOG_REPLIES */ + VAR_LOG_LOCAL_ACTIONS = 389, /* VAR_LOG_LOCAL_ACTIONS */ + VAR_TCP_UPSTREAM = 390, /* VAR_TCP_UPSTREAM */ + VAR_SSL_UPSTREAM = 391, /* VAR_SSL_UPSTREAM */ + VAR_TCP_AUTH_QUERY_TIMEOUT = 392, /* VAR_TCP_AUTH_QUERY_TIMEOUT */ + VAR_SSL_SERVICE_KEY = 393, /* VAR_SSL_SERVICE_KEY */ + VAR_SSL_SERVICE_PEM = 394, /* VAR_SSL_SERVICE_PEM */ + VAR_SSL_PORT = 395, /* VAR_SSL_PORT */ + VAR_FORWARD_FIRST = 396, /* VAR_FORWARD_FIRST */ + VAR_STUB_SSL_UPSTREAM = 397, /* VAR_STUB_SSL_UPSTREAM */ + VAR_FORWARD_SSL_UPSTREAM = 398, /* VAR_FORWARD_SSL_UPSTREAM */ + VAR_TLS_CERT_BUNDLE = 399, /* VAR_TLS_CERT_BUNDLE */ + VAR_HTTPS_PORT = 400, /* VAR_HTTPS_PORT */ + VAR_HTTP_ENDPOINT = 401, /* VAR_HTTP_ENDPOINT */ + VAR_HTTP_MAX_STREAMS = 402, /* VAR_HTTP_MAX_STREAMS */ + VAR_HTTP_QUERY_BUFFER_SIZE = 403, /* VAR_HTTP_QUERY_BUFFER_SIZE */ + VAR_HTTP_RESPONSE_BUFFER_SIZE = 404, /* VAR_HTTP_RESPONSE_BUFFER_SIZE */ + VAR_HTTP_NODELAY = 405, /* VAR_HTTP_NODELAY */ + VAR_HTTP_NOTLS_DOWNSTREAM = 406, /* VAR_HTTP_NOTLS_DOWNSTREAM */ + VAR_STUB_FIRST = 407, /* VAR_STUB_FIRST */ + VAR_MINIMAL_RESPONSES = 408, /* VAR_MINIMAL_RESPONSES */ + VAR_RRSET_ROUNDROBIN = 409, /* VAR_RRSET_ROUNDROBIN */ + VAR_MAX_UDP_SIZE = 410, /* VAR_MAX_UDP_SIZE */ + VAR_DELAY_CLOSE = 411, /* VAR_DELAY_CLOSE */ + VAR_UDP_CONNECT = 412, /* VAR_UDP_CONNECT */ + VAR_UNBLOCK_LAN_ZONES = 413, /* VAR_UNBLOCK_LAN_ZONES */ + VAR_INSECURE_LAN_ZONES = 414, /* VAR_INSECURE_LAN_ZONES */ + VAR_INFRA_CACHE_MIN_RTT = 415, /* VAR_INFRA_CACHE_MIN_RTT */ + VAR_INFRA_KEEP_PROBING = 416, /* VAR_INFRA_KEEP_PROBING */ + VAR_DNS64_PREFIX = 417, /* VAR_DNS64_PREFIX */ + VAR_DNS64_SYNTHALL = 418, /* VAR_DNS64_SYNTHALL */ + VAR_DNS64_IGNORE_AAAA = 419, /* VAR_DNS64_IGNORE_AAAA */ + VAR_DNSTAP = 420, /* VAR_DNSTAP */ + VAR_DNSTAP_ENABLE = 421, /* VAR_DNSTAP_ENABLE */ + VAR_DNSTAP_SOCKET_PATH = 422, /* VAR_DNSTAP_SOCKET_PATH */ + VAR_DNSTAP_IP = 423, /* VAR_DNSTAP_IP */ + VAR_DNSTAP_TLS = 424, /* VAR_DNSTAP_TLS */ + VAR_DNSTAP_TLS_SERVER_NAME = 425, /* VAR_DNSTAP_TLS_SERVER_NAME */ + VAR_DNSTAP_TLS_CERT_BUNDLE = 426, /* VAR_DNSTAP_TLS_CERT_BUNDLE */ + VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 427, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE */ + VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 428, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE */ + VAR_DNSTAP_SEND_IDENTITY = 429, /* VAR_DNSTAP_SEND_IDENTITY */ + VAR_DNSTAP_SEND_VERSION = 430, /* VAR_DNSTAP_SEND_VERSION */ + VAR_DNSTAP_BIDIRECTIONAL = 431, /* VAR_DNSTAP_BIDIRECTIONAL */ + VAR_DNSTAP_IDENTITY = 432, /* VAR_DNSTAP_IDENTITY */ + VAR_DNSTAP_VERSION = 433, /* VAR_DNSTAP_VERSION */ + VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 434, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES */ + VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 435, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES */ + VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 436, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES */ + VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 437, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES */ + VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 438, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES */ + VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 439, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES */ + VAR_RESPONSE_IP_TAG = 440, /* VAR_RESPONSE_IP_TAG */ + VAR_RESPONSE_IP = 441, /* VAR_RESPONSE_IP */ + VAR_RESPONSE_IP_DATA = 442, /* VAR_RESPONSE_IP_DATA */ + VAR_HARDEN_ALGO_DOWNGRADE = 443, /* VAR_HARDEN_ALGO_DOWNGRADE */ + VAR_IP_TRANSPARENT = 444, /* VAR_IP_TRANSPARENT */ + VAR_IP_DSCP = 445, /* VAR_IP_DSCP */ + VAR_DISABLE_DNSSEC_LAME_CHECK = 446, /* VAR_DISABLE_DNSSEC_LAME_CHECK */ + VAR_IP_RATELIMIT = 447, /* VAR_IP_RATELIMIT */ + VAR_IP_RATELIMIT_SLABS = 448, /* VAR_IP_RATELIMIT_SLABS */ + VAR_IP_RATELIMIT_SIZE = 449, /* VAR_IP_RATELIMIT_SIZE */ + VAR_RATELIMIT = 450, /* VAR_RATELIMIT */ + VAR_RATELIMIT_SLABS = 451, /* VAR_RATELIMIT_SLABS */ + VAR_RATELIMIT_SIZE = 452, /* VAR_RATELIMIT_SIZE */ + VAR_RATELIMIT_FOR_DOMAIN = 453, /* VAR_RATELIMIT_FOR_DOMAIN */ + VAR_RATELIMIT_BELOW_DOMAIN = 454, /* VAR_RATELIMIT_BELOW_DOMAIN */ + VAR_IP_RATELIMIT_FACTOR = 455, /* VAR_IP_RATELIMIT_FACTOR */ + VAR_RATELIMIT_FACTOR = 456, /* VAR_RATELIMIT_FACTOR */ + VAR_SEND_CLIENT_SUBNET = 457, /* VAR_SEND_CLIENT_SUBNET */ + VAR_CLIENT_SUBNET_ZONE = 458, /* VAR_CLIENT_SUBNET_ZONE */ + VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 459, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ + VAR_CLIENT_SUBNET_OPCODE = 460, /* VAR_CLIENT_SUBNET_OPCODE */ + VAR_MAX_CLIENT_SUBNET_IPV4 = 461, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ + VAR_MAX_CLIENT_SUBNET_IPV6 = 462, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ + VAR_MIN_CLIENT_SUBNET_IPV4 = 463, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ + VAR_MIN_CLIENT_SUBNET_IPV6 = 464, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ + VAR_MAX_ECS_TREE_SIZE_IPV4 = 465, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ + VAR_MAX_ECS_TREE_SIZE_IPV6 = 466, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ + VAR_CAPS_WHITELIST = 467, /* VAR_CAPS_WHITELIST */ + VAR_CACHE_MAX_NEGATIVE_TTL = 468, /* VAR_CACHE_MAX_NEGATIVE_TTL */ + VAR_PERMIT_SMALL_HOLDDOWN = 469, /* VAR_PERMIT_SMALL_HOLDDOWN */ + VAR_QNAME_MINIMISATION = 470, /* VAR_QNAME_MINIMISATION */ + VAR_QNAME_MINIMISATION_STRICT = 471, /* VAR_QNAME_MINIMISATION_STRICT */ + VAR_IP_FREEBIND = 472, /* VAR_IP_FREEBIND */ + VAR_DEFINE_TAG = 473, /* VAR_DEFINE_TAG */ + VAR_LOCAL_ZONE_TAG = 474, /* VAR_LOCAL_ZONE_TAG */ + VAR_ACCESS_CONTROL_TAG = 475, /* VAR_ACCESS_CONTROL_TAG */ + VAR_LOCAL_ZONE_OVERRIDE = 476, /* VAR_LOCAL_ZONE_OVERRIDE */ + VAR_ACCESS_CONTROL_TAG_ACTION = 477, /* VAR_ACCESS_CONTROL_TAG_ACTION */ + VAR_ACCESS_CONTROL_TAG_DATA = 478, /* VAR_ACCESS_CONTROL_TAG_DATA */ + VAR_VIEW = 479, /* VAR_VIEW */ + VAR_ACCESS_CONTROL_VIEW = 480, /* VAR_ACCESS_CONTROL_VIEW */ + VAR_VIEW_FIRST = 481, /* VAR_VIEW_FIRST */ + VAR_SERVE_EXPIRED = 482, /* VAR_SERVE_EXPIRED */ + VAR_SERVE_EXPIRED_TTL = 483, /* VAR_SERVE_EXPIRED_TTL */ + VAR_SERVE_EXPIRED_TTL_RESET = 484, /* VAR_SERVE_EXPIRED_TTL_RESET */ + VAR_SERVE_EXPIRED_REPLY_TTL = 485, /* VAR_SERVE_EXPIRED_REPLY_TTL */ + VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 486, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ + VAR_SERVE_ORIGINAL_TTL = 487, /* VAR_SERVE_ORIGINAL_TTL */ + VAR_FAKE_DSA = 488, /* VAR_FAKE_DSA */ + VAR_FAKE_SHA1 = 489, /* VAR_FAKE_SHA1 */ + VAR_LOG_IDENTITY = 490, /* VAR_LOG_IDENTITY */ + VAR_HIDE_TRUSTANCHOR = 491, /* VAR_HIDE_TRUSTANCHOR */ + VAR_TRUST_ANCHOR_SIGNALING = 492, /* VAR_TRUST_ANCHOR_SIGNALING */ + VAR_AGGRESSIVE_NSEC = 493, /* VAR_AGGRESSIVE_NSEC */ + VAR_USE_SYSTEMD = 494, /* VAR_USE_SYSTEMD */ + VAR_SHM_ENABLE = 495, /* VAR_SHM_ENABLE */ + VAR_SHM_KEY = 496, /* VAR_SHM_KEY */ + VAR_ROOT_KEY_SENTINEL = 497, /* VAR_ROOT_KEY_SENTINEL */ + VAR_DNSCRYPT = 498, /* VAR_DNSCRYPT */ + VAR_DNSCRYPT_ENABLE = 499, /* VAR_DNSCRYPT_ENABLE */ + VAR_DNSCRYPT_PORT = 500, /* VAR_DNSCRYPT_PORT */ + VAR_DNSCRYPT_PROVIDER = 501, /* VAR_DNSCRYPT_PROVIDER */ + VAR_DNSCRYPT_SECRET_KEY = 502, /* VAR_DNSCRYPT_SECRET_KEY */ + VAR_DNSCRYPT_PROVIDER_CERT = 503, /* VAR_DNSCRYPT_PROVIDER_CERT */ + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 504, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 505, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 506, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 507, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 508, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ + VAR_PAD_RESPONSES = 509, /* VAR_PAD_RESPONSES */ + VAR_PAD_RESPONSES_BLOCK_SIZE = 510, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ + VAR_PAD_QUERIES = 511, /* VAR_PAD_QUERIES */ + VAR_PAD_QUERIES_BLOCK_SIZE = 512, /* VAR_PAD_QUERIES_BLOCK_SIZE */ + VAR_IPSECMOD_ENABLED = 513, /* VAR_IPSECMOD_ENABLED */ + VAR_IPSECMOD_HOOK = 514, /* VAR_IPSECMOD_HOOK */ + VAR_IPSECMOD_IGNORE_BOGUS = 515, /* VAR_IPSECMOD_IGNORE_BOGUS */ + VAR_IPSECMOD_MAX_TTL = 516, /* VAR_IPSECMOD_MAX_TTL */ + VAR_IPSECMOD_WHITELIST = 517, /* VAR_IPSECMOD_WHITELIST */ + VAR_IPSECMOD_STRICT = 518, /* VAR_IPSECMOD_STRICT */ + VAR_CACHEDB = 519, /* VAR_CACHEDB */ + VAR_CACHEDB_BACKEND = 520, /* VAR_CACHEDB_BACKEND */ + VAR_CACHEDB_SECRETSEED = 521, /* VAR_CACHEDB_SECRETSEED */ + VAR_CACHEDB_REDISHOST = 522, /* VAR_CACHEDB_REDISHOST */ + VAR_CACHEDB_REDISPORT = 523, /* VAR_CACHEDB_REDISPORT */ + VAR_CACHEDB_REDISTIMEOUT = 524, /* VAR_CACHEDB_REDISTIMEOUT */ + VAR_CACHEDB_REDISEXPIRERECORDS = 525, /* VAR_CACHEDB_REDISEXPIRERECORDS */ + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 526, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ + VAR_FOR_UPSTREAM = 527, /* VAR_FOR_UPSTREAM */ + VAR_AUTH_ZONE = 528, /* VAR_AUTH_ZONE */ + VAR_ZONEFILE = 529, /* VAR_ZONEFILE */ + VAR_MASTER = 530, /* VAR_MASTER */ + VAR_URL = 531, /* VAR_URL */ + VAR_FOR_DOWNSTREAM = 532, /* VAR_FOR_DOWNSTREAM */ + VAR_FALLBACK_ENABLED = 533, /* VAR_FALLBACK_ENABLED */ + VAR_TLS_ADDITIONAL_PORT = 534, /* VAR_TLS_ADDITIONAL_PORT */ + VAR_LOW_RTT = 535, /* VAR_LOW_RTT */ + VAR_LOW_RTT_PERMIL = 536, /* VAR_LOW_RTT_PERMIL */ + VAR_FAST_SERVER_PERMIL = 537, /* VAR_FAST_SERVER_PERMIL */ + VAR_FAST_SERVER_NUM = 538, /* VAR_FAST_SERVER_NUM */ + VAR_ALLOW_NOTIFY = 539, /* VAR_ALLOW_NOTIFY */ + VAR_TLS_WIN_CERT = 540, /* VAR_TLS_WIN_CERT */ + VAR_TCP_CONNECTION_LIMIT = 541, /* VAR_TCP_CONNECTION_LIMIT */ + VAR_FORWARD_NO_CACHE = 542, /* VAR_FORWARD_NO_CACHE */ + VAR_STUB_NO_CACHE = 543, /* VAR_STUB_NO_CACHE */ + VAR_LOG_SERVFAIL = 544, /* VAR_LOG_SERVFAIL */ + VAR_DENY_ANY = 545, /* VAR_DENY_ANY */ + VAR_UNKNOWN_SERVER_TIME_LIMIT = 546, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ + VAR_LOG_TAG_QUERYREPLY = 547, /* VAR_LOG_TAG_QUERYREPLY */ + VAR_STREAM_WAIT_SIZE = 548, /* VAR_STREAM_WAIT_SIZE */ + VAR_TLS_CIPHERS = 549, /* VAR_TLS_CIPHERS */ + VAR_TLS_CIPHERSUITES = 550, /* VAR_TLS_CIPHERSUITES */ + VAR_TLS_USE_SNI = 551, /* VAR_TLS_USE_SNI */ + VAR_IPSET = 552, /* VAR_IPSET */ + VAR_IPSET_NAME_V4 = 553, /* VAR_IPSET_NAME_V4 */ + VAR_IPSET_NAME_V6 = 554, /* VAR_IPSET_NAME_V6 */ + VAR_TLS_SESSION_TICKET_KEYS = 555, /* VAR_TLS_SESSION_TICKET_KEYS */ + VAR_RPZ = 556, /* VAR_RPZ */ + VAR_TAGS = 557, /* VAR_TAGS */ + VAR_RPZ_ACTION_OVERRIDE = 558, /* VAR_RPZ_ACTION_OVERRIDE */ + VAR_RPZ_CNAME_OVERRIDE = 559, /* VAR_RPZ_CNAME_OVERRIDE */ + VAR_RPZ_LOG = 560, /* VAR_RPZ_LOG */ + VAR_RPZ_LOG_NAME = 561, /* VAR_RPZ_LOG_NAME */ + VAR_DYNLIB = 562, /* VAR_DYNLIB */ + VAR_DYNLIB_FILE = 563, /* VAR_DYNLIB_FILE */ + VAR_EDNS_CLIENT_STRING = 564, /* VAR_EDNS_CLIENT_STRING */ + VAR_EDNS_CLIENT_STRING_OPCODE = 565, /* VAR_EDNS_CLIENT_STRING_OPCODE */ + VAR_NSID = 566, /* VAR_NSID */ + VAR_ZONEMD_PERMISSIVE_MODE = 567, /* VAR_ZONEMD_PERMISSIVE_MODE */ + VAR_ZONEMD_REJECT_ABSENCE = 568 /* VAR_ZONEMD_REJECT_ABSENCE */ + }; + typedef enum yytokentype yytoken_kind_t; #endif -/* Tokens. */ +/* Token kinds. */ +#define YYEOF 0 +#define YYerror 256 +#define YYUNDEF 257 #define SPACE 258 #define LETTER 259 #define NEWLINE 260 @@ -665,22 +684,25 @@ #define VAR_ZONEMD_PERMISSIVE_MODE 567 #define VAR_ZONEMD_REJECT_ABSENCE 568 - - - +/* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -typedef union YYSTYPE -#line 66 "util/configparser.y" +union YYSTYPE { +#line 66 "./util/configparser.y" + char* str; -} -/* Line 1529 of yacc.c. */ -#line 679 "util/configparser.h" - YYSTYPE; -# define yystype YYSTYPE /* obsolescent; will be withdrawn */ -# define YYSTYPE_IS_DECLARED 1 + +#line 696 "util/configparser.h" + +}; +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 */ From 07fda669e45ca6068dc490b79ad9c918b5aa10a3 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 7 May 2021 11:13:44 +0200 Subject: [PATCH 096/553] - Fix #485: Unbound occasionally reports broken stats. --- daemon/remote.c | 10 ++++++++-- doc/Changelog | 3 +++ services/mesh.c | 10 ++++++++-- smallapp/unbound-control.c | 10 ++++++++-- 4 files changed, 27 insertions(+), 6 deletions(-) diff --git a/daemon/remote.c b/daemon/remote.c index 7e432fe52..5836c0c79 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -130,7 +130,7 @@ timeval_divide(struct timeval* avg, const struct timeval* sum, long long d) { #ifndef S_SPLINT_S size_t leftover; - if(d == 0) { + if(d <= 0) { avg->tv_sec = 0; avg->tv_usec = 0; return; @@ -139,7 +139,13 @@ timeval_divide(struct timeval* avg, const struct timeval* sum, long long d) avg->tv_usec = sum->tv_usec / d; /* handle fraction from seconds divide */ leftover = sum->tv_sec - avg->tv_sec*d; - avg->tv_usec += (leftover*1000000)/d; + if(leftover <= 0) + leftover = 0; + avg->tv_usec += (((long long)leftover)*((long long)1000000))/d; + if(avg->tv_sec < 0) + avg->tv_sec = 0; + if(avg->tv_usec < 0) + avg->tv_usec = 0; #endif } diff --git a/doc/Changelog b/doc/Changelog index cf306ea6b..61fd924c3 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +7 May 2021: Wouter + - Fix #485: Unbound occasionally reports broken stats. + 4 May 2021: George - Fix for #367: only attempt to get the interface for queries that are no longer on the tcp_waiting_list. diff --git a/services/mesh.c b/services/mesh.c index 88b3d15d0..7931a072f 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -99,7 +99,7 @@ timeval_divide(struct timeval* avg, const struct timeval* sum, size_t d) { #ifndef S_SPLINT_S size_t leftover; - if(d == 0) { + if(d <= 0) { avg->tv_sec = 0; avg->tv_usec = 0; return; @@ -108,7 +108,13 @@ timeval_divide(struct timeval* avg, const struct timeval* sum, size_t d) avg->tv_usec = sum->tv_usec / d; /* handle fraction from seconds divide */ leftover = sum->tv_sec - avg->tv_sec*d; - avg->tv_usec += (leftover*1000000)/d; + if(leftover <= 0) + leftover = 0; + avg->tv_usec += (((long long)leftover)*((long long)1000000))/d; + if(avg->tv_sec < 0) + avg->tv_sec = 0; + if(avg->tv_usec < 0) + avg->tv_usec = 0; #endif } diff --git a/smallapp/unbound-control.c b/smallapp/unbound-control.c index 86e3949c0..af72f2a4e 100644 --- a/smallapp/unbound-control.c +++ b/smallapp/unbound-control.c @@ -188,7 +188,7 @@ timeval_divide(struct timeval* avg, const struct timeval* sum, long long d) { #ifndef S_SPLINT_S size_t leftover; - if(d == 0) { + if(d <= 0) { avg->tv_sec = 0; avg->tv_usec = 0; return; @@ -197,7 +197,13 @@ timeval_divide(struct timeval* avg, const struct timeval* sum, long long d) avg->tv_usec = sum->tv_usec / d; /* handle fraction from seconds divide */ leftover = sum->tv_sec - avg->tv_sec*d; - avg->tv_usec += (leftover*1000000)/d; + if(leftover <= 0) + leftover = 0; + avg->tv_usec += (((long long)leftover)*((long long)1000000))/d; + if(avg->tv_sec < 0) + avg->tv_sec = 0; + if(avg->tv_usec < 0) + avg->tv_usec = 0; #endif } From 59ea44322ea468e3dfcc056870f66136707b475d Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 7 May 2021 14:28:20 +0200 Subject: [PATCH 097/553] - Add ./configure --with-deprecate-rsa-1024 that turns off RSA 1024. --- config.h.in | 3 +++ configure | 17 ++++++++++++++++ configure.ac | 5 +++++ doc/Changelog | 1 + validator/autotrust.c | 4 +++- validator/val_anchor.c | 3 ++- validator/val_sigcrypt.c | 42 ++++++++++++++++++++++++++++++++++++++++ validator/val_sigcrypt.h | 17 ++++++++++++++++ validator/val_utils.c | 39 ++++++++++++++++++++++++++++++++----- 9 files changed, 124 insertions(+), 7 deletions(-) diff --git a/config.h.in b/config.h.in index a843d703d..cb27afa4f 100644 --- a/config.h.in +++ b/config.h.in @@ -28,6 +28,9 @@ /* Whether daemon is deprecated */ #undef DEPRECATED_DAEMON +/* Deprecate RSA 1024 bit length, makes that an unsupported key */ +#undef DEPRECATE_RSA_1024 + /* Define this to enable kernel based UDP source port randomization. */ #undef DISABLE_EXPLICIT_PORT_RANDOMISATION diff --git a/configure b/configure index 30e061f35..fb3bcffe2 100755 --- a/configure +++ b/configure @@ -877,6 +877,7 @@ enable_subnet enable_gost enable_ecdsa enable_dsa +with_deprecate_rsa_1024 enable_ed25519 enable_ed448 enable_event_api @@ -1639,6 +1640,10 @@ Optional Packages: /usr/ssl /usr/pkg /usr/local /opt/local /usr/sfw /usr) --with-libbsd Use portable libbsd functions + --with-deprecate-rsa-1024 + Deprecate RSA 1024 bit length, makes that an + unsupported key, for use when OpenSSL FIPS refuses + 1024 bit verification --with-libevent=pathname use libevent (will check /usr/local /opt/local /usr/lib /usr/pkg /usr/sfw /usr or you can specify @@ -19035,6 +19040,18 @@ _ACEOF ;; esac + +# Check whether --with-deprecate-rsa-1024 was given. +if test "${with_deprecate_rsa_1024+set}" = set; then : + withval=$with_deprecate_rsa_1024; +fi + +if test "$with_deprecate_rsa_1024" = "yes"; then + +$as_echo "#define DEPRECATE_RSA_1024 1" >>confdefs.h + +fi + # Check whether --enable-ed25519 was given. if test "${enable_ed25519+set}" = set; then : enableval=$enable_ed25519; diff --git a/configure.ac b/configure.ac index 14d9b02c2..62bcee1df 100644 --- a/configure.ac +++ b/configure.ac @@ -1155,6 +1155,11 @@ AC_INCLUDES_DEFAULT ;; esac +AC_ARG_WITH(deprecate-rsa-1024, AS_HELP_STRING([--with-deprecate-rsa-1024],[Deprecate RSA 1024 bit length, makes that an unsupported key, for use when OpenSSL FIPS refuses 1024 bit verification])) +if test "$with_deprecate_rsa_1024" = "yes"; then + AC_DEFINE([DEPRECATE_RSA_1024], [1], [Deprecate RSA 1024 bit length, makes that an unsupported key]) +fi + AC_ARG_ENABLE(ed25519, AS_HELP_STRING([--disable-ed25519],[Disable ED25519 support])) use_ed25519="no" case "$enable_ed25519" in diff --git a/doc/Changelog b/doc/Changelog index 61fd924c3..2ed0bf92c 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,6 @@ 7 May 2021: Wouter - Fix #485: Unbound occasionally reports broken stats. + - Add ./configure --with-deprecate-rsa-1024 that turns off RSA 1024. 4 May 2021: George - Fix for #367: only attempt to get the interface for queries that are no diff --git a/validator/autotrust.c b/validator/autotrust.c index 7ce07e0d8..adf836754 100644 --- a/validator/autotrust.c +++ b/validator/autotrust.c @@ -1579,6 +1579,7 @@ key_matches_a_ds(struct module_env* env, struct val_env* ve, for(ds_idx=0; ds_idxnumDNSKEY; i++) { - if(!dnskey_algo_is_supported(ta->dnskey_rrset, i)) + if(!dnskey_algo_is_supported(ta->dnskey_rrset, i) || + !dnskey_size_is_supported(ta->dnskey_rrset, i)) num++; } return num; diff --git a/validator/val_sigcrypt.c b/validator/val_sigcrypt.c index 14e13da06..5ce20b223 100644 --- a/validator/val_sigcrypt.c +++ b/validator/val_sigcrypt.c @@ -386,6 +386,48 @@ int dnskey_algo_is_supported(struct ub_packed_rrset_key* dnskey_rrset, dnskey_idx)); } +int dnskey_size_is_supported(struct ub_packed_rrset_key* dnskey_rrset, + size_t dnskey_idx) +{ +#ifdef DEPRECATE_RSA_1024 + uint8_t* rdata; + size_t len; + int alg = dnskey_get_algo(dnskey_rrset, dnskey_idx); + size_t keysize; + + rrset_get_rdata(dnskey_rrset, dnskey_idx, &rdata, &len); + if(len < 2+4) + return 0; + keysize = sldns_rr_dnskey_key_size_raw(rdata+2+4, len-2-4, alg); + + switch((sldns_algorithm)alg) { + case LDNS_RSAMD5: + case LDNS_RSASHA1: + case LDNS_RSASHA1_NSEC3: + case LDNS_RSASHA256: + case LDNS_RSASHA512: + /* reject RSA keys of 1024 bits and shorter */ + if(keysize <= 1024) + return 0; + default: + break; + } +#else + (void)dnskey_rrset; (void)dnskey_idx; +#endif /* DEPRECATE_RSA_1024 */ + return 1; +} + +int dnskeyset_size_is_supported(struct ub_packed_rrset_key* dnskey_rrset) +{ + size_t i, num = rrset_get_count(dnskey_rrset); + for(i=0; i Date: Fri, 7 May 2021 17:06:09 +0200 Subject: [PATCH 098/553] - Remove case fallthrough from deprecate-rsa-1024 code. --- doc/Changelog | 1 + validator/val_sigcrypt.c | 1 + 2 files changed, 2 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 2ed0bf92c..fcd5a8a1d 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,7 @@ 7 May 2021: Wouter - Fix #485: Unbound occasionally reports broken stats. - Add ./configure --with-deprecate-rsa-1024 that turns off RSA 1024. + - Remove case fallthrough from deprecate-rsa-1024 code. 4 May 2021: George - Fix for #367: only attempt to get the interface for queries that are no diff --git a/validator/val_sigcrypt.c b/validator/val_sigcrypt.c index 5ce20b223..b15fba3f4 100644 --- a/validator/val_sigcrypt.c +++ b/validator/val_sigcrypt.c @@ -409,6 +409,7 @@ int dnskey_size_is_supported(struct ub_packed_rrset_key* dnskey_rrset, /* reject RSA keys of 1024 bits and shorter */ if(keysize <= 1024) return 0; + break; default: break; } From d4314cad33142d6004a8cfdf3d20fdea60af655c Mon Sep 17 00:00:00 2001 From: Florian Obser Date: Sat, 8 May 2021 16:56:32 +0200 Subject: [PATCH 099/553] Make VAL_MAX_RESTART_COUNT configurable. unbound tries very hard (up to 6 authoritative servers) to find a validating answer. This is not always desirable, for example on high latency links. --- doc/unbound.conf.5.in | 4 ++++ util/config_file.c | 8 ++++++-- util/config_file.h | 2 ++ util/configlexer.lex | 1 + util/configparser.y | 33 ++++++++++++++++++++++++--------- validator/validator.c | 18 ++++++++++-------- validator/validator.h | 6 +++--- 7 files changed, 50 insertions(+), 22 deletions(-) diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 9aa12c65c..16de27941 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -1131,6 +1131,10 @@ min and max very low disables the clock skew allowances. Setting both min and max very high makes the validator check the signature timestamps less strictly. .TP +.B val\-max\-restart: \fI +The maximum number the validator should restart validation with +another authority in case of failed validation. Default is 5. +.TP .B val\-bogus\-ttl: \fI The time to live for bogus data. This is data that has failed validation; due to invalid signatures or other checks. The TTL from that data cannot be diff --git a/util/config_file.c b/util/config_file.c index 1d6374156..d1bfa61c5 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -253,6 +253,7 @@ config_create(void) cfg->val_date_override = 0; cfg->val_sig_skew_min = 3600; /* at least daylight savings trouble */ cfg->val_sig_skew_max = 86400; /* at most timezone settings trouble */ + cfg->val_max_restart = 5; cfg->val_clean_additional = 1; cfg->val_log_level = 0; cfg->val_log_squelch = 0; @@ -764,12 +765,14 @@ int config_set_option(struct config_file* cfg, const char* opt, #endif else if(strcmp(opt, "define-tag:") ==0) { return config_add_tag(cfg, val); - /* val_sig_skew_min and max are copied into val_env during init, - * so this does not update val_env with set_option */ + /* val_sig_skew_min, max and val_max_restart are copied into val_env + * during init so this does not update val_env with set_option */ } else if(strcmp(opt, "val-sig-skew-min:") == 0) { IS_NUMBER_OR_ZERO; cfg->val_sig_skew_min = (int32_t)atoi(val); } else if(strcmp(opt, "val-sig-skew-max:") == 0) { IS_NUMBER_OR_ZERO; cfg->val_sig_skew_max = (int32_t)atoi(val); } + else if(strcmp(opt, "val-max-restart:") == 0) + { IS_NUMBER_OR_ZERO; cfg->val_max_restart = (int32_t)atoi(val); } else if (strcmp(opt, "outgoing-interface:") == 0) { char* d = strdup(val); char** oi = @@ -1190,6 +1193,7 @@ config_get_option(struct config_file* cfg, const char* opt, else O_DEC(opt, "fast-server-permil", fast_server_permil) else O_DEC(opt, "val-sig-skew-min", val_sig_skew_min) else O_DEC(opt, "val-sig-skew-max", val_sig_skew_max) + else O_DEC(opt, "val-max-restart", val_max_restart) else O_YNO(opt, "qname-minimisation", qname_minimisation) else O_YNO(opt, "qname-minimisation-strict", qname_minimisation_strict) else O_IFC(opt, "define-tag", num_tags, tagname) diff --git a/util/config_file.h b/util/config_file.h index 524e648fe..67abe55a8 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -373,6 +373,8 @@ struct config_file { int32_t val_sig_skew_min; /** the maximum for signature clock skew */ int32_t val_sig_skew_max; + /** max number of query restarts, number of IPs to probe */ + int32_t val_max_restart; /** this value sets the number of seconds before revalidating bogus */ int bogus_ttl; /** should validator clean additional section for secure msgs */ diff --git a/util/configlexer.lex b/util/configlexer.lex index e982463d1..732dd8310 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -385,6 +385,7 @@ root-key-sentinel{COLON} { YDVAR(1, VAR_ROOT_KEY_SENTINEL) } val-override-date{COLON} { YDVAR(1, VAR_VAL_OVERRIDE_DATE) } val-sig-skew-min{COLON} { YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } val-sig-skew-max{COLON} { YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } +val-max-restart{COLON} { YDVAR(1, VAR_VAL_MAX_RESTART) } val-bogus-ttl{COLON} { YDVAR(1, VAR_BOGUS_TTL) } val-clean-additional{COLON} { YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } val-permissive-mode{COLON} { YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } diff --git a/util/configparser.y b/util/configparser.y index 6a8f83112..86febcf1d 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -104,13 +104,14 @@ extern struct config_parser_state* cfg_parser; %token VAR_EXTENDED_STATISTICS VAR_LOCAL_DATA_PTR VAR_JOSTLE_TIMEOUT %token VAR_STUB_PRIME VAR_UNWANTED_REPLY_THRESHOLD VAR_LOG_TIME_ASCII %token VAR_DOMAIN_INSECURE VAR_PYTHON VAR_PYTHON_SCRIPT VAR_VAL_SIG_SKEW_MIN -%token VAR_VAL_SIG_SKEW_MAX VAR_CACHE_MIN_TTL VAR_VAL_LOG_LEVEL -%token VAR_AUTO_TRUST_ANCHOR_FILE VAR_KEEP_MISSING VAR_ADD_HOLDDOWN -%token VAR_DEL_HOLDDOWN VAR_SO_RCVBUF VAR_EDNS_BUFFER_SIZE VAR_PREFETCH -%token VAR_PREFETCH_KEY VAR_SO_SNDBUF VAR_SO_REUSEPORT VAR_HARDEN_BELOW_NXDOMAIN -%token VAR_IGNORE_CD_FLAG VAR_LOG_QUERIES VAR_LOG_REPLIES VAR_LOG_LOCAL_ACTIONS -%token VAR_TCP_UPSTREAM VAR_SSL_UPSTREAM VAR_TCP_AUTH_QUERY_TIMEOUT -%token VAR_SSL_SERVICE_KEY VAR_SSL_SERVICE_PEM VAR_SSL_PORT VAR_FORWARD_FIRST +%token VAR_VAL_SIG_SKEW_MAX VAR_VAL_MAX_RESTART VAR_CACHE_MIN_TTL +%token VAR_VAL_LOG_LEVEL VAR_AUTO_TRUST_ANCHOR_FILE VAR_KEEP_MISSING +%token VAR_ADD_HOLDDOWN VAR_DEL_HOLDDOWN VAR_SO_RCVBUF VAR_EDNS_BUFFER_SIZE +%token VAR_PREFETCH VAR_PREFETCH_KEY VAR_SO_SNDBUF VAR_SO_REUSEPORT +%token VAR_HARDEN_BELOW_NXDOMAIN VAR_IGNORE_CD_FLAG VAR_LOG_QUERIES +%token VAR_LOG_REPLIES VAR_LOG_LOCAL_ACTIONS VAR_TCP_UPSTREAM +%token VAR_SSL_UPSTREAM VAR_TCP_AUTH_QUERY_TIMEOUT VAR_SSL_SERVICE_KEY +%token VAR_SSL_SERVICE_PEM VAR_SSL_PORT VAR_FORWARD_FIRST %token VAR_STUB_SSL_UPSTREAM VAR_FORWARD_SSL_UPSTREAM VAR_TLS_CERT_BUNDLE %token VAR_HTTPS_PORT VAR_HTTP_ENDPOINT VAR_HTTP_MAX_STREAMS %token VAR_HTTP_QUERY_BUFFER_SIZE VAR_HTTP_RESPONSE_BUFFER_SIZE @@ -243,8 +244,9 @@ content_server: server_num_threads | server_verbosity | server_port | server_local_data_ptr | server_jostle_timeout | server_unwanted_reply_threshold | server_log_time_ascii | server_domain_insecure | server_val_sig_skew_min | - server_val_sig_skew_max | server_cache_min_ttl | server_val_log_level | - server_auto_trust_anchor_file | server_add_holddown | + server_val_sig_skew_max | server_val_max_restart | + server_cache_min_ttl | server_val_log_level | + server_auto_trust_anchor_file | server_add_holddown | server_del_holddown | server_keep_missing | server_so_rcvbuf | server_edns_buffer_size | server_prefetch | server_prefetch_key | server_so_sndbuf | server_harden_below_nxdomain | server_ignore_cd_flag | @@ -1852,6 +1854,19 @@ server_val_sig_skew_max: VAR_VAL_SIG_SKEW_MAX STRING_ARG free($2); } ; +server_val_max_restart: VAR_VAL_MAX_RESTART STRING_ARG + { + OUTYY(("P(server_val_max_restart:%s)\n", $2)); + if(*$2 == '\0' || strcmp($2, "0") == 0) { + cfg_parser->cfg->val_max_restart = 0; + } else { + cfg_parser->cfg->val_max_restart = atoi($2); + if(!cfg_parser->cfg->val_max_restart) + yyerror("number expected"); + } + free($2); + } + ; server_cache_max_ttl: VAR_CACHE_MAX_TTL STRING_ARG { OUTYY(("P(server_cache_max_ttl:%s)\n", $2)); diff --git a/validator/validator.c b/validator/validator.c index e12180b4b..d4d48d956 100644 --- a/validator/validator.c +++ b/validator/validator.c @@ -137,6 +137,7 @@ val_apply_cfg(struct module_env* env, struct val_env* val_env, val_env->date_override = cfg->val_date_override; val_env->skew_min = cfg->val_sig_skew_min; val_env->skew_max = cfg->val_sig_skew_max; + val_env->max_restart = cfg->val_max_restart; c = cfg_count_numbers(cfg->val_nsec3_key_iterations); if(c < 1 || (c&1)) { log_err("validator: unparseable or odd nsec3 key " @@ -1487,7 +1488,7 @@ processInit(struct module_qstate* qstate, struct val_qstate* vq, enum val_classification subtype = val_classify_response( qstate->query_flags, &qstate->qinfo, &vq->qchase, vq->orig_msg->rep, vq->rrset_skip); - if(vq->restart_count > VAL_MAX_RESTART_COUNT) { + if(vq->restart_count > ve->max_restart) { verbose(VERB_ALGO, "restart count exceeded"); return val_error(qstate, id); } @@ -1640,7 +1641,7 @@ processInit(struct module_qstate* qstate, struct val_qstate* vq, errinf(qstate, key_entry_get_reason(vq->key_entry)); } /* no retries, stop bothering the authority until timeout */ - vq->restart_count = VAL_MAX_RESTART_COUNT; + vq->restart_count = ve->max_restart; vq->chase_reply->security = sec_status_bogus; vq->state = VAL_FINISHED_STATE; return 1; @@ -1848,7 +1849,7 @@ processValidate(struct module_qstate* qstate, struct val_qstate* vq, LDNS_RR_TYPE_DNSKEY, vq->key_entry->key_class); vq->chase_reply->security = sec_status_bogus; errinf(qstate, "while building chain of trust"); - if(vq->restart_count >= VAL_MAX_RESTART_COUNT) + if(vq->restart_count >= ve->max_restart) key_cache_insert(ve->kcache, vq->key_entry, qstate); return 1; } @@ -2064,7 +2065,7 @@ processFinished(struct module_qstate* qstate, struct val_qstate* vq, * endless bogus revalidation */ if(vq->orig_msg->rep->security == sec_status_bogus) { /* see if we can try again to fetch data */ - if(vq->restart_count < VAL_MAX_RESTART_COUNT) { + if(vq->restart_count < ve->max_restart) { int restart_count = vq->restart_count+1; verbose(VERB_ALGO, "validation failed, " "blacklist and retry to fetch data"); @@ -2605,6 +2606,7 @@ process_ds_response(struct module_qstate* qstate, struct val_qstate* vq, int id, int rcode, struct dns_msg* msg, struct query_info* qinfo, struct sock_list* origin) { + struct val_env* ve = (struct val_env*)qstate->env->modinfo[id]; struct key_entry_key* dske = NULL; uint8_t* olds = vq->empty_DS_name; vq->empty_DS_name = NULL; @@ -2638,7 +2640,7 @@ process_ds_response(struct module_qstate* qstate, struct val_qstate* vq, vq->chain_blacklist = NULL; /* fresh blacklist for next part*/ /* Keep the forState.state on FINDKEY. */ } else if(key_entry_isbad(dske) - && vq->restart_count < VAL_MAX_RESTART_COUNT) { + && vq->restart_count < ve->max_restart) { vq->empty_DS_name = olds; val_blacklist(&vq->chain_blacklist, qstate->region, origin, 1); qstate->errinf = NULL; @@ -2691,7 +2693,7 @@ process_dnskey_response(struct module_qstate* qstate, struct val_qstate* vq, /* bad response */ verbose(VERB_DETAIL, "Missing DNSKEY RRset in response to " "DNSKEY query."); - if(vq->restart_count < VAL_MAX_RESTART_COUNT) { + if(vq->restart_count < ve->max_restart) { val_blacklist(&vq->chain_blacklist, qstate->region, origin, 1); qstate->errinf = NULL; @@ -2730,7 +2732,7 @@ process_dnskey_response(struct module_qstate* qstate, struct val_qstate* vq, * state. */ if(!key_entry_isgood(vq->key_entry)) { if(key_entry_isbad(vq->key_entry)) { - if(vq->restart_count < VAL_MAX_RESTART_COUNT) { + if(vq->restart_count < ve->max_restart) { val_blacklist(&vq->chain_blacklist, qstate->region, origin, 1); qstate->errinf = NULL; @@ -2807,7 +2809,7 @@ process_prime_response(struct module_qstate* qstate, struct val_qstate* vq, lock_basic_unlock(&ta->lock); if(vq->key_entry) { if(key_entry_isbad(vq->key_entry) - && vq->restart_count < VAL_MAX_RESTART_COUNT) { + && vq->restart_count < ve->max_restart) { val_blacklist(&vq->chain_blacklist, qstate->region, origin, 1); qstate->errinf = NULL; diff --git a/validator/validator.h b/validator/validator.h index 35da1920a..a928e10a6 100644 --- a/validator/validator.h +++ b/validator/validator.h @@ -64,9 +64,6 @@ struct config_strlist; */ #define BOGUS_KEY_TTL 60 /* seconds */ -/** max number of query restarts, number of IPs to probe */ -#define VAL_MAX_RESTART_COUNT 5 - /** Root key sentinel is ta preamble */ #define SENTINEL_IS "root-key-sentinel-is-ta-" /** Root key sentinel is not ta preamble */ @@ -95,6 +92,9 @@ struct val_env { /** clock skew max for signatures */ int32_t skew_max; + /** max number of query restarts, number of IPs to probe */ + int32_t max_restart; + /** TTL for bogus data; used instead of untrusted TTL from data. * Bogus data will not be verified more often than this interval. * seconds. */ From cde6284a036b32a03cbd89d9c478a6273d2124e5 Mon Sep 17 00:00:00 2001 From: Stuart Henderson Date: Sat, 8 May 2021 15:12:39 +0000 Subject: [PATCH 100/553] ifdef RLIMIT_AS in recently added check Some OS still don't have RLIMIT_AS --- daemon/unbound.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/daemon/unbound.c b/daemon/unbound.c index b2bb526c0..78771dbdd 100644 --- a/daemon/unbound.c +++ b/daemon/unbound.c @@ -212,12 +212,14 @@ checkrlimits(struct config_file* cfg) } #endif +#ifdef RLIMIT_AS if(getrlimit(RLIMIT_AS, &rlim) == 0) { if(rlim.rlim_cur != (rlim_t)RLIM_INFINITY && rlim.rlim_cur < (rlim_t)memsize_expect) { log_warn("the ulimit(max memory size) is smaller than the expected memory usage (added size of caches). %u < %u bytes", (unsigned)rlim.rlim_cur, (unsigned)memsize_expect); } } +#endif if(getrlimit(RLIMIT_DATA, &rlim) == 0) { if(rlim.rlim_cur != (rlim_t)RLIM_INFINITY && rlim.rlim_cur < memsize_expect) { From 1e85196fd9016f2309a248add1991360e6918b90 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 10 May 2021 08:18:15 +0200 Subject: [PATCH 101/553] Changelog note for #487 - Merge PR #487: ifdef RLIMIT_AS in recently added check. --- doc/Changelog | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index fcd5a8a1d..ac3a9c390 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +10 May 2021: Wouter + - Merge PR #487: ifdef RLIMIT_AS in recently added check. + 7 May 2021: Wouter - Fix #485: Unbound occasionally reports broken stats. - Add ./configure --with-deprecate-rsa-1024 that turns off RSA 1024. From 5b28b213fafc0cc6ce131495044645d298f01687 Mon Sep 17 00:00:00 2001 From: Tom Carpay Date: Mon, 10 May 2021 11:03:08 +0200 Subject: [PATCH 102/553] basic implementation of a selection of svcb params --- sldns/rrdef.c | 6 +- sldns/rrdef.h | 9 +- sldns/str2wire.c | 365 ++++++++++++++++++++++++++++++++++++++++++++++- sldns/str2wire.h | 15 ++ sldns/wire2str.c | 181 +++++++++++++++++++++++ sldns/wire2str.h | 3 + 6 files changed, 576 insertions(+), 3 deletions(-) diff --git a/sldns/rrdef.c b/sldns/rrdef.c index 54051313a..125d3d0ab 100644 --- a/sldns/rrdef.c +++ b/sldns/rrdef.c @@ -153,6 +153,9 @@ static const sldns_rdf_type type_csync_wireformat[] = { static const sldns_rdf_type type_zonemd_wireformat[] = { LDNS_RDF_TYPE_INT32, LDNS_RDF_TYPE_INT8, LDNS_RDF_TYPE_INT8, LDNS_RDF_TYPE_HEX }; +static const sldns_rdf_type type_svcb_wireformat[] = { + LDNS_RDF_TYPE_INT16, LDNS_RDF_TYPE_DNAME +}; /* nsec3 is some vars, followed by same type of data of nsec */ static const sldns_rdf_type type_nsec3_wireformat[] = { /* LDNS_RDF_TYPE_NSEC3_VARS, LDNS_RDF_TYPE_NSEC3_NEXT_OWNER, LDNS_RDF_TYPE_NSEC*/ @@ -377,7 +380,8 @@ static sldns_rr_descriptor rdata_field_descriptors[] = { {LDNS_RR_TYPE_CSYNC, "CSYNC", 3, 3, type_csync_wireformat, LDNS_RDF_TYPE_NONE, LDNS_RR_NO_COMPRESS, 0 }, /* 63 */ {LDNS_RR_TYPE_ZONEMD, "ZONEMD", 4, 4, type_zonemd_wireformat, LDNS_RDF_TYPE_NONE, LDNS_RR_NO_COMPRESS, 0 }, -{(enum sldns_enum_rr_type)0, "TYPE64", 1, 1, type_0_wireformat, LDNS_RDF_TYPE_NONE, LDNS_RR_NO_COMPRESS, 0 }, + /* 64 */ + {LDNS_RR_TYPE_SVCB, "SVCB", 2, 2, type_svcb_wireformat, LDNS_RDF_TYPE_SVCPARAM, LDNS_RR_NO_COMPRESS, 0 }, {(enum sldns_enum_rr_type)0, "TYPE65", 1, 1, type_0_wireformat, LDNS_RDF_TYPE_NONE, LDNS_RR_NO_COMPRESS, 0 }, {(enum sldns_enum_rr_type)0, "TYPE66", 1, 1, type_0_wireformat, LDNS_RDF_TYPE_NONE, LDNS_RR_NO_COMPRESS, 0 }, {(enum sldns_enum_rr_type)0, "TYPE67", 1, 1, type_0_wireformat, LDNS_RDF_TYPE_NONE, LDNS_RR_NO_COMPRESS, 0 }, diff --git a/sldns/rrdef.h b/sldns/rrdef.h index ece632c3c..cd65c4126 100644 --- a/sldns/rrdef.h +++ b/sldns/rrdef.h @@ -196,6 +196,8 @@ enum sldns_enum_rr_type LDNS_RR_TYPE_OPENPGPKEY = 61, /* RFC 7929 */ LDNS_RR_TYPE_CSYNC = 62, /* RFC 7477 */ LDNS_RR_TYPE_ZONEMD = 63, /* draft-ietf-dnsop-dns-zone-digest-12 */ + LDNS_RR_TYPE_SVCB = 64, /* draft-ietf-dnsop-svcb-https-04 */ + LDNS_RR_TYPE_HTTPS = 65, /* draft-ietf-dnsop-svcb-https-04 */ LDNS_RR_TYPE_SPF = 99, /* RFC 4408 */ @@ -353,8 +355,13 @@ enum sldns_enum_rdf_type /** TSIG extended 16bit error value */ LDNS_RDF_TYPE_TSIGERROR, + /* draft-ietf-dnsop-svcb-https-04: + * each SvcParam consisting of a SvcParamKey=SvcParamValue pair or + * a standalone SvcParamKey */ + LDNS_RDF_TYPE_SVCPARAM, + /* Aliases */ - LDNS_RDF_TYPE_BITMAP = LDNS_RDF_TYPE_NSEC + LDNS_RDF_TYPE_BITMAP = LDNS_RDF_TYPE_NSEC, }; typedef enum sldns_enum_rdf_type sldns_rdf_type; diff --git a/sldns/str2wire.c b/sldns/str2wire.c index 70eec6dab..8a3a1e22a 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -29,7 +29,6 @@ #define RET_ERR(e, off) ((int)((e)|((off)<= 4 && key_len <= 8 && !strncmp(key, "key", 3)) { + memcpy(buf, key + 3, key_len - 3); + buf[key_len - 3] = 0; + key_value = strtoul(buf, &endptr, 10); + if (endptr > buf /* digits seen */ + && *endptr == 0 /* no non-digit chars after digits */ + && key_value <= 65535) /* no overflow */ + return key_value; + + } else switch (key_len) { + case sizeof("mandatory")-1: + if (!strncmp(key, "mandatory", sizeof("mandatory")-1)) + return SVCB_KEY_MANDATORY; + if (!strncmp(key, "echconfig", sizeof("echconfig")-1)) + return SVCB_KEY_ECH; /* allow "echconfig as well as "ech" */ + break; + + case sizeof("alpn")-1: + if (!strncmp(key, "alpn", sizeof("alpn")-1)) + return SVCB_KEY_ALPN; + if (!strncmp(key, "port", sizeof("port")-1)) + return SVCB_KEY_PORT; + break; + + case sizeof("no-default-alpn")-1: + if (!strncmp( key , "no-default-alpn" + , sizeof("no-default-alpn")-1)) + return SVCB_KEY_NO_DEFAULT_ALPN; + break; + + case sizeof("ipv4hint")-1: + if (!strncmp(key, "ipv4hint", sizeof("ipv4hint")-1)) + return SVCB_KEY_IPV4HINT; + if (!strncmp(key, "ipv6hint", sizeof("ipv6hint")-1)) + return SVCB_KEY_IPV6HINT; + break; + case sizeof("ech")-1: + if (!strncmp(key, "ech", sizeof("ech")-1)) + return SVCB_KEY_ECH; + break; + default: + break; + } + if (key_len > sizeof(buf) - 1) {} + // ERROR: Unknown SvcParamKey + else { + memcpy(buf, key, key_len); + buf[key_len] = 0; + // Error: "Unknown SvcParamKey: %s" + } + /* Although the returned value might be used by the caller, + * the parser has erred, so the zone will not be loaded. + */ + return -1; +} + +static int +sldns_str2wire_svcparam_port(const char* val, uint8_t* rd, size_t* rd_len) +{ + unsigned long int port; + char *endptr; + + if (*rd_len < 6) + return LDNS_WIREPARSE_ERR_BUFFER_TOO_SMALL; + + port = strtoul(val, &endptr, 10); + + if (endptr > val /* digits seen */ + && *endptr == 0 /* no non-digit chars after digits */ + && port <= 65535) { /* no overflow */ + + sldns_write_uint16(rd, htons(SVCB_KEY_PORT)); + sldns_write_uint16(rd + 2, htons(sizeof(uint16_t))); + sldns_write_uint16(rd + 4, htons(port)); + *rd_len = 6; + + return LDNS_WIREPARSE_ERR_OK; + } + // ERROR: "Could not parse port SvcParamValue" + return -1; +} + +static int +sldns_str2wire_svcbparam_ipv4hint(const char* val, uint8_t* rd, size_t* rd_len) +{ + + int count; + char ip_str[INET_ADDRSTRLEN+1]; + char *next_ip_str; + uint32_t *ip_wire_dst; + size_t i; + + for (i = 0, count = 1; val[i]; i++) { + if (val[i] == ',') + count += 1; + if (count > SVCB_MAX_COMMA_SEPARATED_VALUES) { + // ERROR "Too many IPV4 addresses in ipv4hint" + return -1; + } + } + + if (*rd_len < (LDNS_IP4ADDRLEN * count) + 4) + return LDNS_WIREPARSE_ERR_BUFFER_TOO_SMALL; + + /* count is number of comma's in val + 1; so the actual number of IPv4 + * addresses in val + */ + sldns_write_uint16(rd, htons(SVCB_KEY_IPV4HINT)); + sldns_write_uint16(rd + 2, htons(LDNS_IP4ADDRLEN * count)); + *rd_len = 4; + + while (count) { + if (!(next_ip_str = strchr(val, ','))) { + if (inet_pton(AF_INET, val, rd + *rd_len) != 1) + *rd_len += LDNS_IP4ADDRLEN; + break; + + assert(count == 1); + + } else if (next_ip_str - val >= (int)sizeof(ip_str)) + break; + + else { + memcpy(ip_str, val, next_ip_str - val); + ip_str[next_ip_str - val] = 0; + if (inet_pton(AF_INET, ip_str, rd + *rd_len) != 1) { + *rd_len += LDNS_IP4ADDRLEN; + val = ip_str; /* to use in error reporting below */ + break; + } + + val = next_ip_str + 1; + } + ip_wire_dst++; + count--; + } + // if (count) /* verify that we parsed all values */ + // ERROR "Could not parse ipv4hint SvcParamValue: " + + return LDNS_WIREPARSE_ERR_OK; +} + +static int +sldns_str2wire_svcbparam_ipv6hint(const char* val, uint8_t* rd, size_t* rd_len) +{ + int count; + char ip_str[INET_ADDRSTRLEN+1]; + char *next_ip_str; + uint32_t *ip_wire_dst; + size_t i; + + for (i = 0, count = 1; val[i]; i++) { + if (val[i] == ',') + count += 1; + if (count > SVCB_MAX_COMMA_SEPARATED_VALUES) { + // ERROR "Too many IPV4 addresses in ipv4hint" + return -1; + } + } + + if (*rd_len < (LDNS_IP6ADDRLEN * count) + 4) + return LDNS_WIREPARSE_ERR_BUFFER_TOO_SMALL; + + /* count is number of comma's in val + 1; so the actual number of IPv6 + * addresses in val + */ + sldns_write_uint16(rd, htons(SVCB_KEY_IPV6HINT)); + sldns_write_uint16(rd + 2, htons(LDNS_IP6ADDRLEN * count)); + *rd_len = 4; + + while (count) { + if (!(next_ip_str = strchr(val, ','))) { + if (inet_pton(AF_INET, val, rd + *rd_len) != 1) + *rd_len += LDNS_IP6ADDRLEN; + break; + + assert(count == 1); + + } else if (next_ip_str - val >= (int)sizeof(ip_str)) + break; + + else { + memcpy(ip_str, val, next_ip_str - val); + ip_str[next_ip_str - val] = 0; + if (inet_pton(AF_INET, ip_str, rd + *rd_len) != 1) { + *rd_len += LDNS_IP6ADDRLEN; + + val = ip_str; /* to use in error reporting below */ + break; + } + + val = next_ip_str + 1; + } + ip_wire_dst++; + count--; + } + // if (count) /* verify that we parsed all values */ + // ERROR "Could not parse ipv6hint SvcParamValue: " + + return LDNS_WIREPARSE_ERR_OK; +} + +/* compare function used for sorting uint16_t's */ +static int +sldns_network_uint16_cmp(const void *a, const void *b) +{ + return ((int)sldns_read_uint16(a)) - ((int)sldns_read_uint16(b)); +} + +static int +sldns_str2wire_svcbparam_mandatory(const char* val, uint8_t* rd, size_t* rd_len) +{ + size_t i, count, val_len; + char* next_key; + uint16_t* key_dst; + + val_len = strlen(val); + + for (i = 0, count = 1; val[i]; i++) { + if (val[i] == ',') + count += 1; + if (count > SVCB_MAX_COMMA_SEPARATED_VALUES) { + // ERROR "Too many keys in mandatory" + return -1; + } + } + + // @TODO check if we have space to write in rd_len; look for the best spot + + sldns_write_uint16(rd, htons(SVCB_KEY_MANDATORY)); + sldns_write_uint16(rd + 2, htons(sizeof(uint16_t) * count)); + *rd_len = 4; + + for(;;) { + if (!(next_key = strchr(val, ','))) { + sldns_write_uint16(rd + *rd_len, + htons(sldns_str2wire_svcparam_key_lookup(val, val_len))); + *rd_len += LDNS_IP6ADDRLEN; + break; + } else { + sldns_write_uint16(rd + *rd_len, + htons(sldns_str2wire_svcparam_key_lookup(val, next_key - val))); + *rd_len += LDNS_IP6ADDRLEN; + } + + val_len -= next_key - val + 1; + val = next_key + 1; /* skip the comma */ + key_dst += 1; + } + + /* In draft-ietf-dnsop-svcb-https-04 Section 7: + * + * "In wire format, the keys are represented by their numeric + * values in network byte order, concatenated in ascending order." + */ + qsort((void *)(rd + 4), count, sizeof(uint16_t), sldns_network_uint16_cmp); + + return LDNS_WIREPARSE_ERR_OK; +} + +static int +sldns_str2wire_svcbparam_no_default_alpn(const char* val, uint8_t* rd, size_t* rd_len) +{ + if (*rd_len < 4) + return LDNS_WIREPARSE_ERR_BUFFER_TOO_SMALL; + + sldns_write_uint16(rd, htons(SVCB_KEY_NO_DEFAULT_ALPN)); + sldns_write_uint16(rd + 2, htons(0)); + *rd_len = 4; + + return LDNS_WIREPARSE_ERR_OK; +} + +static int +sldns_str2wire_svcbparam_ech_value(const char* val, uint8_t* rd, size_t* rd_len) +{ + uint8_t buffer[LDNS_MAX_RDFLEN]; + int wire_len; + + // @TODO fix this + // if(strcmp(b64, "0") == 0) { + /* single 0 represents empty buffer */ + // } + + wire_len = sldns_b64_pton(val, buffer, LDNS_MAX_RDFLEN); + + if (wire_len == -1) { + // zc_error_prev_line("invalid base64 data in ech"); + return LDNS_WIREPARSE_ERR_INVALID_STR; + } else { + sldns_write_uint16(rd, htons(SVCB_KEY_ECH)); + sldns_write_uint16(rd + 2, htons(wire_len)); + + // @TODO memcpy? + sldns_write_uint16(rd + 4, htons(buffer)); + *rd_len = 4 + wire_len; + + return LDNS_WIREPARSE_ERR_OK; + } +} + +static int +sldns_str2wire_svcparam_key_value(const char *key, size_t key_len, + const char *val, uint8_t* rd, size_t* rd_len) +{ + uint16_t svcparamkey = sldns_str2wire_svcparam_key_lookup(key, key_len); + + switch (svcparamkey) { + case SVCB_KEY_PORT: + return sldns_str2wire_svcparam_port(val, rd, rd_len); + case SVCB_KEY_IPV4HINT: + return sldns_str2wire_svcbparam_ipv4hint(val, rd, rd_len); + case SVCB_KEY_IPV6HINT: + return sldns_str2wire_svcbparam_ipv6hint(val, rd, rd_len); + case SVCB_KEY_MANDATORY: + return sldns_str2wire_svcbparam_mandatory(val, rd, rd_len); + case SVCB_KEY_NO_DEFAULT_ALPN: + return sldns_str2wire_svcbparam_no_default_alpn(val, rd, rd_len); + // if(zone_is_slave(parser->current_zone->opts)) + // zc_warning_prev_line("no-default-alpn should not have a value"); + // else + // zc_error_prev_line("no-default-alpn should not have a value"); + // break; + case SVCB_KEY_ECH: + return sldns_str2wire_svcbparam_ech_value(val, rd, rd_len); + case SVCB_KEY_ALPN: + // return sldns_str2wire_svcbparam_alpn_value(val, rd, rd_len); + default: + break; + } + + // @TODO change to error? + return LDNS_WIREPARSE_ERR_OK; +} + +int sldns_str2wire_svcparam_buf(const char* str, uint8_t* rd, size_t* rd_len) +{ + const char* eq_pos; + + int ret; + + eq_pos = strchr(str, '='); + + // @TODO handle "key=" case + + /* Verify that we have a have a value */ + if (eq_pos != NULL) { + return sldns_str2wire_svcparam_key_value(str, eq_pos - str, eq_pos + 1, rd, rd_len); + } else { + return sldns_str2wire_svcparam_key_value(str, strlen(str), NULL, rd, rd_len); + } + + return LDNS_WIREPARSE_ERR_OK; +} + int sldns_str2wire_rdf_buf(const char* str, uint8_t* rd, size_t* len, sldns_rdf_type rdftype) { @@ -1006,6 +1367,8 @@ int sldns_str2wire_rdf_buf(const char* str, uint8_t* rd, size_t* len, return sldns_str2wire_hip_buf(str, rd, len); case LDNS_RDF_TYPE_INT16_DATA: return sldns_str2wire_int16_data_buf(str, rd, len); + case LDNS_RDF_TYPE_SVCPARAM: + return sldns_str2wire_svcparam_buf(str, rd, len); case LDNS_RDF_TYPE_UNKNOWN: case LDNS_RDF_TYPE_SERVICE: return LDNS_WIREPARSE_ERR_NOT_IMPL; diff --git a/sldns/str2wire.h b/sldns/str2wire.h index 70070e4f5..b687546a7 100644 --- a/sldns/str2wire.h +++ b/sldns/str2wire.h @@ -23,10 +23,25 @@ extern "C" { #endif struct sldns_struct_lookup_table; +#define LDNS_IP4ADDRLEN (32/8) +#define LDNS_IP6ADDRLEN (128/8) + /** buffer to read an RR, cannot be larger than 64K because of packet size */ #define LDNS_RR_BUF_SIZE 65535 /* bytes */ #define LDNS_DEFAULT_TTL 3600 +/* SVCB keys currently defined in draft-ietf-dnsop-svcb-https */ +#define SVCB_KEY_MANDATORY 0 +#define SVCB_KEY_ALPN 1 +#define SVCB_KEY_NO_DEFAULT_ALPN 2 +#define SVCB_KEY_PORT 3 +#define SVCB_KEY_IPV4HINT 4 +#define SVCB_KEY_ECH 5 +#define SVCB_KEY_IPV6HINT 6 +#define SVCPARAMKEY_COUNT 7 + +#define SVCB_MAX_COMMA_SEPARATED_VALUES 1000 + /* * To convert class and type to string see * sldns_get_rr_class_by_name(str) diff --git a/sldns/wire2str.c b/sldns/wire2str.c index d0d1632d4..3fea10fcd 100644 --- a/sldns/wire2str.c +++ b/sldns/wire2str.c @@ -196,6 +196,12 @@ static sldns_lookup_table sldns_tsig_errors_data[] = { }; sldns_lookup_table* sldns_tsig_errors = sldns_tsig_errors_data; +/* draft-ietf-dnsop-svcb-https-04: 6. Initial SvcParamKeys */ +const char *svcparamkey_strs[] = { + "mandatory", "alpn", "no-default-alpn", "port", + "ipv4hint", "echconfig", "ipv6hint" +}; + char* sldns_wire2str_pkt(uint8_t* data, size_t len) { size_t slen = (size_t)sldns_wire2str_pkt_buf(data, len, NULL, 0); @@ -940,6 +946,179 @@ int sldns_wire2str_ttl_scan(uint8_t** d, size_t* dlen, char** s, size_t* slen) return sldns_str_print(s, slen, "%u", (unsigned)ttl); } +static int +sldns_print_svcparamkey(char** s, size_t* slen, uint16_t svcparamkey) +{ + if (svcparamkey < SVCPARAMKEY_COUNT) { + // fprintf(stderr, "HERE\n"); + return sldns_str_print(s, slen, "%s", svcparamkey_strs[svcparamkey]); + } + else { + return sldns_str_print(s, slen, "key%d", (int)svcparamkey); + } +} + +int sldns_wire2str_svcparam_port2str(char** s, + size_t* slen, uint16_t val_len, uint16_t val) +{ + int w = 0; + + if (val_len != 2) + return -1; /* wireformat error, a short is 2 bytes */ + w = sldns_str_print(s, slen, "=%d", (int)ntohs(val)); + return w; +} + +static int +sldns_wire2str_svcparam_ipv4hint2str(char** s, + size_t* slen, uint16_t val_len, uint8_t* data) +{ + char ip_str[INET_ADDRSTRLEN + 1]; + + // @TODO actually incorporate this + int w = 0; + + assert(val_len > 0); + + if ((val_len % LDNS_IP4ADDRLEN) == 0) { + if (inet_ntop(AF_INET, data, ip_str, sizeof(ip_str)) == NULL) + return 0; /* wireformat error, incorrect size or inet family */ + + sldns_str_print(s, slen, "=%s", ip_str); + data += LDNS_IP4ADDRLEN / sizeof(uint16_t); + + while ((val_len -= LDNS_IP4ADDRLEN) > 0) { + if (inet_ntop(AF_INET, data, ip_str, sizeof(ip_str)) == NULL) + return 0; /* wireformat error, incorrect size or inet family */ + + sldns_str_print(s, slen, ",%s", ip_str); + data += LDNS_IP4ADDRLEN / sizeof(uint16_t); + } + return 1; + } else + return 0; +} + +int sldns_wire2str_svcparam_ipv6hint2str(char** s, + size_t* slen, uint16_t val_len, uint8_t* data) +{ + char ip_str[INET6_ADDRSTRLEN + 1]; + + // @TODO actually incorporate this + int w = 0; + + assert(val_len > 0); + + if ((val_len % LDNS_IP6ADDRLEN) == 0) { + if (inet_ntop(AF_INET6, data, ip_str, sizeof(ip_str)) == NULL) + return 0; /* wireformat error, incorrect size or inet family */ + + sldns_str_print(s, slen, "=%s", ip_str); + data += LDNS_IP6ADDRLEN / sizeof(uint16_t); + + while ((val_len -= LDNS_IP6ADDRLEN) > 0) { + if (inet_ntop(AF_INET6, data, ip_str, sizeof(ip_str)) == NULL) + return 0; /* wireformat error, incorrect size or inet family */ + + sldns_str_print(s, slen, ",%s", ip_str); + data += LDNS_IP6ADDRLEN / sizeof(uint16_t); + } + return 1; + } else + return 0; +} + +int sldns_wire2str_svcparam_mandatory2str(char** s, + size_t* slen, uint16_t val_len, uint8_t* data) +{ + int w = 0; + + assert(val_len > 0); + + // if (val_len % sizeof(uint16_t)) + // return 0; // wireformat error, val_len must be multiple of shorts + w += sldns_str_print(s, slen, "="); + w += sldns_print_svcparamkey(s, slen, ntohs(sldns_read_uint16(data))); + data += 2; + + while ((val_len -= sizeof(uint16_t))) { + w += sldns_str_print(s, slen, ","); + w += sldns_print_svcparamkey(s, slen, ntohs(sldns_read_uint16(data))); + data += 2; + } + + return w; +} + +int sldns_wire2str_svcparam_scan(uint8_t** d, size_t* dlen, char** s, size_t* slen) +{ + uint16_t svcparamkey, val_len; + uint8_t* data = *d; + int written_chars = 0; + + if(*dlen == 0) return 0; /* verify that we actualy have data */ + + svcparamkey = ntohs(sldns_read_uint16(data)); + + written_chars += sldns_print_svcparamkey(s, slen, svcparamkey); + + // (*dlen) -= written_chars; + + // @TODO fix this to be dynamic and correct + // fprintf(stderr, "*dlen2: %zu\n", *dlen); + // fprintf(stderr, "val_len %zu\n", val_len); + (*dlen) = 0; + + val_len = ntohs(sldns_read_uint16(data+2)); + + // if (size != val_len + 4) + // return 0; wireformat error + + // if (!val_len) { + // /* Some SvcParams MUST have values */ + // switch (svcparamkey) { + // case SVCB_KEY_ALPN: + // case SVCB_KEY_PORT: + // case SVCB_KEY_IPV4HINT: + // case SVCB_KEY_IPV6HINT: + // case SVCB_KEY_MANDATORY: + // return 0; + // default: + // return 1; + // } + // } + switch (svcparamkey) { + case SVCB_KEY_PORT: + written_chars += sldns_wire2str_svcparam_port2str(s, slen, val_len, sldns_read_uint16(data+4)); + break; + case SVCB_KEY_IPV4HINT: + written_chars += sldns_wire2str_svcparam_ipv4hint2str(s, slen, val_len, data+4); + break; + case SVCB_KEY_IPV6HINT: + written_chars += sldns_wire2str_svcparam_ipv6hint2str(s, slen, val_len, data+4); + break; + case SVCB_KEY_MANDATORY: + written_chars += sldns_wire2str_svcparam_mandatory2str(s, slen, val_len, data+4); + break; + case SVCB_KEY_NO_DEFAULT_ALPN: + return 0; /* wireformat error, should not have a value */ + case SVCB_KEY_ALPN: + // written_chars += sldns_wire2str_svcparam_alpn2str(output, val_len, data+2); + // break; + case SVCB_KEY_ECH: + // written_chars += sldns_wire2str_svcparam_ech2str(output, val_len, data+2); + // break; + default: + break; + } + + // @TODO set str_len to 0: "If the end of the + // * output string is reached, *str_len is set to 0" + // *str_len = 0; + + return written_chars; +} + int sldns_wire2str_rdf_scan(uint8_t** d, size_t* dlen, char** s, size_t* slen, int rdftype, uint8_t* pkt, size_t pktlen, int* comprloop) { @@ -1017,6 +1196,8 @@ int sldns_wire2str_rdf_scan(uint8_t** d, size_t* dlen, char** s, size_t* slen, return sldns_wire2str_tag_scan(d, dlen, s, slen); case LDNS_RDF_TYPE_LONG_STR: return sldns_wire2str_long_str_scan(d, dlen, s, slen); + case LDNS_RDF_TYPE_SVCPARAM: + return sldns_wire2str_svcparam_scan(d, dlen, s, slen); case LDNS_RDF_TYPE_TSIGERROR: return sldns_wire2str_tsigerror_scan(d, dlen, s, slen); } diff --git a/sldns/wire2str.h b/sldns/wire2str.h index 0167fe7c1..3c777367c 100644 --- a/sldns/wire2str.h +++ b/sldns/wire2str.h @@ -41,6 +41,9 @@ extern struct sldns_struct_lookup_table* sldns_wireparse_errors; /** tsig errors are the rcodes with extra (higher) values */ extern struct sldns_struct_lookup_table* sldns_tsig_errors; +/* draft-ietf-dnsop-svcb-https-04: 6. Initial SvcParamKeys */ +extern const char *svcparamkey_strs[]; + /** * Convert wireformat packet to a string representation * @param data: wireformat packet data (starting at ID bytes). From b61d098950d444432b3bb385953370a67425b06f Mon Sep 17 00:00:00 2001 From: Tom Carpay Date: Mon, 10 May 2021 12:19:50 +0000 Subject: [PATCH 103/553] fix memcpy of buffer for ech --- sldns/str2wire.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/sldns/str2wire.c b/sldns/str2wire.c index 8a3a1e22a..5a9c5eed8 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -1206,8 +1206,8 @@ sldns_str2wire_svcbparam_no_default_alpn(const char* val, uint8_t* rd, size_t* r if (*rd_len < 4) return LDNS_WIREPARSE_ERR_BUFFER_TOO_SMALL; - sldns_write_uint16(rd, htons(SVCB_KEY_NO_DEFAULT_ALPN)); - sldns_write_uint16(rd + 2, htons(0)); + sldns_write_uint16(rd, SVCB_KEY_NO_DEFAULT_ALPN); + sldns_write_uint16(rd + 2, 0); *rd_len = 4; return LDNS_WIREPARSE_ERR_OK; @@ -1229,14 +1229,13 @@ sldns_str2wire_svcbparam_ech_value(const char* val, uint8_t* rd, size_t* rd_len) if (wire_len == -1) { // zc_error_prev_line("invalid base64 data in ech"); return LDNS_WIREPARSE_ERR_INVALID_STR; + } else if (wire_len + 4 > *rd_len) { + return LDNS_WIREPARSE_ERR_BUFFER_TOO_SMALL; } else { - sldns_write_uint16(rd, htons(SVCB_KEY_ECH)); - sldns_write_uint16(rd + 2, htons(wire_len)); - - // @TODO memcpy? - sldns_write_uint16(rd + 4, htons(buffer)); + sldns_write_uint16(rd, SVCB_KEY_ECH); + sldns_write_uint16(rd + 2, wire_len); + memcpy(rd + 4, buffer, wire_len); *rd_len = 4 + wire_len; - return LDNS_WIREPARSE_ERR_OK; } } From 9aa072d115c8e5123ba3ea8766946c19f1b5ecb0 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 12 May 2021 17:24:03 +0200 Subject: [PATCH 104/553] - Fix that auth-zone zonefiles use last TTL if no TTL is specified. --- doc/Changelog | 3 +++ sldns/str2wire.c | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index ac3a9c390..aaa1561e0 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +12 May 2021: Wouter + - Fix that auth-zone zonefiles use last TTL if no TTL is specified. + 10 May 2021: Wouter - Merge PR #487: ifdef RLIMIT_AS in recently added check. diff --git a/sldns/str2wire.c b/sldns/str2wire.c index 70eec6dab..401625728 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -929,6 +929,10 @@ int sldns_fp2wire_rr_buf(FILE* in, uint8_t* rr, size_t* len, size_t* dname_len, memmove(parse_state->prev_rr, rr, *dname_len); parse_state->prev_rr_len = (*dname_len); } + if(r == LDNS_WIREPARSE_ERR_OK && parse_state) { + parse_state->default_ttl = sldns_wirerr_get_ttl( + rr, *len, *dname_len); + } return r; } return LDNS_WIREPARSE_ERR_OK; From f9f3e9d4d0f18b31f60295e11febff22d7436d7a Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 14 May 2021 13:25:21 +0200 Subject: [PATCH 105/553] - rpz-triggers, fix compile warning --- respip/respip.c | 1 + 1 file changed, 1 insertion(+) diff --git a/respip/respip.c b/respip/respip.c index cf1de07a5..a4ef7dfce 100644 --- a/respip/respip.c +++ b/respip/respip.c @@ -25,6 +25,7 @@ #include "respip/respip.h" #include "services/view.h" #include "sldns/rrdef.h" +#include "util/data/dname.h" /** Subset of resp_addr.node, used for inform-variant logging */ From 9f40e93fe6f1473cd2bec93416b397599ce03fc2 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 14 May 2021 13:28:10 +0200 Subject: [PATCH 106/553] - rpz-triggers, use sec_status_insecure like respip, AA flag on RPZ responses. --- services/rpz.c | 11 ++++++++--- testdata/rpz_nsdname.rpl | 4 ++-- testdata/rpz_nsip.rpl | 6 +++--- testdata/rpz_qname.rpl | 2 +- 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/services/rpz.c b/services/rpz.c index 966f7833a..c06e096ae 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -1599,7 +1599,9 @@ rpz_synthesize_nodata(struct rpz* ATTR_UNUSED(r), struct module_qstate* ms, 0, //ns 0, //ar 0, //total - sec_status_secure); + sec_status_insecure); + if(msg->rep) + msg->rep->authoritative = 1; return msg; } @@ -1620,7 +1622,9 @@ rpz_synthesize_nxdomain(struct rpz* ATTR_UNUSED(r), struct module_qstate* ms, 0, //ns 0, //ar 0, //total - sec_status_secure); + sec_status_insecure); + if(msg->rep) + msg->rep->authoritative = 1; return msg; } @@ -1647,11 +1651,12 @@ rpz_synthesize_localdata_from_rrset(struct rpz* ATTR_UNUSED(r), struct module_qs 0, //ns 0, //ar 1, //total - sec_status_secure); + sec_status_insecure); if(new_reply_info == NULL) { log_err("out of memory"); return NULL; } + new_reply_info->authoritative = 1; rp = respip_copy_rrset(rrset->rrset, ms->region); if(rp == NULL) { log_err("out of memory"); diff --git a/testdata/rpz_nsdname.rpl b/testdata/rpz_nsdname.rpl index 7b55ebeb7..79b5bec40 100644 --- a/testdata/rpz_nsdname.rpl +++ b/testdata/rpz_nsdname.rpl @@ -362,7 +362,7 @@ ENTRY_END STEP 21 CHECK_ANSWER ENTRY_BEGIN MATCH all -REPLY QR RD RA NOERROR +REPLY QR RD RA AA NOERROR SECTION QUESTION gotham.bb. IN A SECTION ANSWER @@ -378,7 +378,7 @@ ENTRY_END STEP 31 CHECK_ANSWER ENTRY_BEGIN MATCH all -REPLY QR RD RA NOERROR +REPLY QR RD RA AA NOERROR SECTION QUESTION gotham.ff. IN A SECTION ANSWER diff --git a/testdata/rpz_nsip.rpl b/testdata/rpz_nsip.rpl index a3cda6050..58b377e8f 100644 --- a/testdata/rpz_nsip.rpl +++ b/testdata/rpz_nsip.rpl @@ -362,7 +362,7 @@ ENTRY_END STEP 21 CHECK_ANSWER ENTRY_BEGIN MATCH all -REPLY QR RD RA NOERROR +REPLY QR RD RA AA NOERROR SECTION QUESTION gotham.bb. IN A SECTION ANSWER @@ -378,7 +378,7 @@ ENTRY_END STEP 31 CHECK_ANSWER ENTRY_BEGIN MATCH all -REPLY QR RD RA NOERROR +REPLY QR RD RA AA NOERROR SECTION QUESTION gotham.ff. IN A SECTION ANSWER @@ -396,7 +396,7 @@ ENTRY_END STEP 41 CHECK_ANSWER ENTRY_BEGIN MATCH all -REPLY QR RD RA NOERROR +REPLY QR RD RA AA NOERROR SECTION QUESTION gotham.ff. IN A SECTION ANSWER diff --git a/testdata/rpz_qname.rpl b/testdata/rpz_qname.rpl index 2bc038c37..ede697233 100644 --- a/testdata/rpz_qname.rpl +++ b/testdata/rpz_qname.rpl @@ -388,7 +388,7 @@ ENTRY_END STEP 101 CHECK_ANSWER ENTRY_BEGIN MATCH all -REPLY QR RD RA NOERROR +REPLY QR RD RA AA NOERROR SECTION QUESTION f.example. IN TXT SECTION ANSWER From a9df16cf9b7c7bbfe127aa83f72a63054c3f1632 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 14 May 2021 13:35:24 +0200 Subject: [PATCH 107/553] - rpz-triggers, fix memory allocation trouble on allocation error path. --- services/rpz.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/services/rpz.c b/services/rpz.c index c06e096ae..9c05e69a5 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -387,11 +387,15 @@ rpz_clear(struct rpz* r) { /* must hold write lock on auth_zone */ local_zones_delete(r->local_zones); + r->local_zones = NULL; local_zones_delete(r->nsdname_zones); + r->nsdname_zones = NULL; respip_set_delete(r->respip_set); + r->respip_set = NULL; rpz_clientip_synthesized_set_delete(r->client_set); + r->client_set = NULL; rpz_clientip_synthesized_set_delete(r->ns_set); - // XXX: this approach seems to leak memory + r->ns_set = NULL; if(!(r->local_zones = local_zones_create())){ return 0; } From 193e37d6e892c86c114bba149bbadfd0cda5dd02 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 14 May 2021 13:42:54 +0200 Subject: [PATCH 108/553] - rpz-triggers, call module local callback for rpz local encode replies. --- services/rpz.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/services/rpz.c b/services/rpz.c index 9c05e69a5..dceab4a8a 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -1056,7 +1056,7 @@ rpz_insert_rr(struct rpz* r, uint8_t* azname, size_t aznamelen, uint8_t* dname, return 1; } if(t == RPZ_QNAME_TRIGGER) { - // policydname will be consumed, no free + /* policydname will be consumed, no free */ rpz_insert_qname_trigger(r, policydname, policydnamelen, a, rr_type, rr_class, rr_ttl, rdatawl, rdatalen, rr, rr_len); @@ -1489,8 +1489,10 @@ rpz_is_udp_query(struct comm_reply* repinfo) { /** encode answer consisting of 1 rrset */ static int -rpz_local_encode(struct query_info* qinfo,struct edns_data* edns, sldns_buffer* buf, - struct regional* temp, struct ub_packed_rrset_key* rrset, int ansec, int rcode) +rpz_local_encode(struct module_env* env, struct query_info* qinfo, + struct edns_data* edns, struct comm_reply* repinfo, sldns_buffer* buf, + struct regional* temp, struct ub_packed_rrset_key* rrset, int ansec, + int rcode) { struct reply_info rep; uint16_t udpsize; @@ -1510,8 +1512,9 @@ rpz_local_encode(struct query_info* qinfo,struct edns_data* edns, sldns_buffer* edns->udp_size = EDNS_ADVERTISED_SIZE; edns->ext_rcode = 0; edns->bits &= EDNS_DO; - //!inplace_cb_reply_local_call(env, qinfo, NULL, &rep, rcode, edns,repinfo, temp) || - if(!reply_info_answer_encode(qinfo, &rep, + if(!inplace_cb_reply_local_call(env, qinfo, NULL, &rep, rcode, edns, + repinfo, temp, env->now_tv) || + !reply_info_answer_encode(qinfo, &rep, *(uint16_t*)sldns_buffer_begin(buf), sldns_buffer_read_u16_at(buf, 2), buf, 0, 0, temp, udpsize, edns, (int)(edns->bits&EDNS_DO), 0)) { error_encode(buf, (LDNS_RCODE_SERVFAIL|BIT_AA), qinfo, @@ -1537,7 +1540,8 @@ rpz_find_synthesized_rrset(int qtype, struct clientip_synthesized_rr* data) { static void rpz_apply_clientip_localdata_action(struct clientip_synthesized_rr* raddr, - struct query_info* qinfo, struct edns_data* edns, sldns_buffer* buf, + struct module_env* env, struct query_info* qinfo, + struct edns_data* edns, struct comm_reply* repinfo, sldns_buffer* buf, struct regional* temp) { struct local_rrset* rrset; @@ -1571,7 +1575,8 @@ rpz_apply_clientip_localdata_action(struct clientip_synthesized_rr* raddr, rp->rk.dname = qinfo->qname; rp->rk.dname_len = qinfo->qname_len; nodata: - rpz_local_encode(qinfo, edns, buf, temp, rp, rrset_count, rcode); + rpz_local_encode(env, qinfo, edns, repinfo, buf, temp, rp, + rrset_count, rcode); } static inline struct dns_msg* @@ -2143,8 +2148,8 @@ rpz_apply_maybe_clientip_trigger(struct auth_zones* az, struct module_env* env, } stats->rpz_action[client_action]++; if(client_action == RPZ_LOCAL_DATA_ACTION) { - rpz_apply_clientip_localdata_action(node, qinfo, edns, - buf, temp); + rpz_apply_clientip_localdata_action(node, env, qinfo, + edns, repinfo, buf, temp); } else { // XXX: log_rpz_apply not possbile because no zone local_zones_zone_answer(NULL /*no zone*/, env, qinfo, edns, From e7f476d5c3e863e7d7fa93789942d2b59b65be19 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 14 May 2021 13:57:04 +0200 Subject: [PATCH 109/553] - rpz-triggers, fix comments, log no zone answers. --- services/rpz.c | 70 ++++++++++++++++++++++++++------------------------ 1 file changed, 37 insertions(+), 33 deletions(-) diff --git a/services/rpz.c b/services/rpz.c index dceab4a8a..307c67a56 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -1374,7 +1374,9 @@ log_rpz_apply(uint8_t* dname, enum rpz_action a, struct query_info* qinfo, char ip[128], txt[512]; char dnamestr[LDNS_MAX_DOMAINLEN+1]; uint16_t port = ntohs(((struct sockaddr_in*)&repinfo->addr)->sin_port); - dname_str(dname, dnamestr); + if(dname) + dname_str(dname, dnamestr); + else dnamestr[0]=0; addr_to_str(&repinfo->addr, repinfo->addrlen, ip, sizeof(ip)); if(log_name) snprintf(txt, sizeof(txt), "rpz: applied [%s] %s %s %s@%u", @@ -1600,14 +1602,14 @@ rpz_synthesize_nodata(struct rpz* ATTR_UNUSED(r), struct module_qstate* ms, msg->qinfo = *qinfo; msg->rep = construct_reply_info_base(ms->region, LDNS_RCODE_NOERROR | BIT_RD | BIT_QR | BIT_AA | BIT_RA, - 1, //qd - 0, //ttl - 0, //prettl - 0, //expttl - 0, //an - 0, //ns - 0, //ar - 0, //total + 1, /* qd */ + 0, /* ttl */ + 0, /* prettl */ + 0, /* expttl */ + 0, /* an */ + 0, /* ns */ + 0, /* ar */ + 0, /* total */ sec_status_insecure); if(msg->rep) msg->rep->authoritative = 1; @@ -1623,14 +1625,14 @@ rpz_synthesize_nxdomain(struct rpz* ATTR_UNUSED(r), struct module_qstate* ms, msg->qinfo = *qinfo; msg->rep = construct_reply_info_base(ms->region, LDNS_RCODE_NXDOMAIN | BIT_RD | BIT_QR | BIT_AA | BIT_RA, - 1, //qd - 0, //ttl - 0, //prettl - 0, //expttl - 0, //an - 0, //ns - 0, //ar - 0, //total + 1, /* qd */ + 0, /* ttl */ + 0, /* prettl */ + 0, /* expttl */ + 0, /* an */ + 0, /* ns */ + 0, /* ar */ + 0, /* total */ sec_status_insecure); if(msg->rep) msg->rep->authoritative = 1; @@ -1649,17 +1651,16 @@ rpz_synthesize_localdata_from_rrset(struct rpz* ATTR_UNUSED(r), struct module_qs msg = rpz_dns_msg_new(ms->region); if(msg == NULL) { return NULL; } - // XXX: use ttl etc from rpz zone? new_reply_info = construct_reply_info_base(ms->region, LDNS_RCODE_NOERROR | BIT_RD | BIT_QR | BIT_AA | BIT_RA, - 1, //qd - 0, //ttl - 0, //prettl - 0, //expttl - 1, //an - 0, //ns - 0, //ar - 1, //total + 1, /* qd */ + 0, /* ttl */ + 0, /* prettl */ + 0, /* expttl */ + 1, /* an */ + 0, /* ns */ + 0, /* ar */ + 1, /* total */ sec_status_insecure); if(new_reply_info == NULL) { log_err("out of memory"); @@ -1703,7 +1704,7 @@ rpz_synthesize_nsip_localdata(struct rpz* r, struct module_qstate* ms, return rpz_synthesize_localdata_from_rrset(r, ms, &ms->qinfo, rrset); } -// copy'n'paste from localzone.c +/* copy'n'paste from localzone.c */ static struct local_rrset* local_data_find_type(struct local_data* data, uint16_t type, int alias_ok) { @@ -1718,7 +1719,7 @@ local_data_find_type(struct local_data* data, uint16_t type, int alias_ok) return NULL; } -// based on localzone.c:local_data_answer() +/* based on localzone.c:local_data_answer() */ static inline struct dns_msg* rpz_synthesize_nsdname_localdata(struct rpz* r, struct module_qstate* ms, struct local_zone* z, struct matched_delegation_point const* match) @@ -1870,8 +1871,8 @@ rpz_apply_nsip_trigger(struct module_qstate* ms, struct rpz* r, ret = rpz_synthesize_nodata(r, ms, &ms->qinfo); break; case RPZ_TCP_ONLY_ACTION: - // basically a passthru here but the tcp-only will be - // honored before the query gets send + /* basically a passthru here but the tcp-only will be + * honored before the query gets send */ ms->respip_action_info->action = respip_truncate; ret = NULL; break; @@ -1918,8 +1919,8 @@ rpz_apply_nsdname_trigger(struct module_qstate* ms, struct rpz* r, ret = rpz_synthesize_nodata(r, ms, &ms->qinfo); break; case RPZ_TCP_ONLY_ACTION: - // basically a passthru here but the tcp-only will be - // honored before the query gets send + /* basically a passthru here but the tcp-only will be + * honored before the query gets send */ ms->respip_action_info->action = respip_truncate; ret = NULL; break; @@ -2151,7 +2152,10 @@ rpz_apply_maybe_clientip_trigger(struct auth_zones* az, struct module_env* env, rpz_apply_clientip_localdata_action(node, env, qinfo, edns, repinfo, buf, temp); } else { - // XXX: log_rpz_apply not possbile because no zone + if(*r_out && (*r_out)->log) + log_rpz_apply(((*z_out)?(*z_out)->name:NULL), + client_action, qinfo, repinfo, + (*r_out)->log_name); local_zones_zone_answer(NULL /*no zone*/, env, qinfo, edns, repinfo, buf, temp, 0 /* no local data used */, rpz_action_to_localzone_type(client_action)); From ad08971b7a75a83b1af48508b0df6cb8967157f6 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 14 May 2021 14:04:42 +0200 Subject: [PATCH 110/553] - rpz-triggers, use zone for local data zone based answer if available. --- services/rpz.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/rpz.c b/services/rpz.c index 307c67a56..e53c5cf81 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -2156,7 +2156,7 @@ rpz_apply_maybe_clientip_trigger(struct auth_zones* az, struct module_env* env, log_rpz_apply(((*z_out)?(*z_out)->name:NULL), client_action, qinfo, repinfo, (*r_out)->log_name); - local_zones_zone_answer(NULL /*no zone*/, env, qinfo, edns, + local_zones_zone_answer(*z_out /*likely NULL, no zone*/, env, qinfo, edns, repinfo, buf, temp, 0 /* no local data used */, rpz_action_to_localzone_type(client_action)); } From 50dcadd495f326ba7a2ddf652466a6b83a371a78 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 14 May 2021 15:34:48 +0200 Subject: [PATCH 111/553] - rpz-triggers, for clientip modified answers the rpz SOA is added to the additional section with the serial number and name of the rpz zone that was applied. --- cachedb/cachedb.c | 2 +- daemon/worker.c | 4 +-- services/authzone.c | 13 +++++++++- services/authzone.h | 3 +++ services/localzone.c | 2 +- services/mesh.c | 4 +-- services/rpz.c | 51 +++++++++++++++++++++++++++++++++------ testdata/rpz_clientip.rpl | 6 +++++ util/data/msgencode.c | 4 +-- util/data/msgencode.h | 4 ++- 10 files changed, 76 insertions(+), 17 deletions(-) diff --git a/cachedb/cachedb.c b/cachedb/cachedb.c index af4ffe5f2..707319e85 100644 --- a/cachedb/cachedb.c +++ b/cachedb/cachedb.c @@ -402,7 +402,7 @@ prep_data(struct module_qstate* qstate, struct sldns_buffer* buf) qstate->return_msg->rep); if(!reply_info_answer_encode(&qstate->return_msg->qinfo, qstate->return_msg->rep, 0, qstate->query_flags, - buf, 0, 1, qstate->env->scratch, 65535, &edns, 1, 0)) + buf, 0, 1, qstate->env->scratch, 65535, &edns, 1, 0, 0)) return 0; /* TTLs in the return_msg are relative to time(0) so we have to diff --git a/daemon/worker.c b/daemon/worker.c index 2ee8b8d9b..421cd82c4 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -522,7 +522,7 @@ answer_norec_from_cache(struct worker* worker, struct query_info* qinfo, repinfo->c, worker->scratchpad) || !reply_info_answer_encode(&msg->qinfo, msg->rep, id, flags, repinfo->c->buffer, 0, 1, worker->scratchpad, - udpsize, edns, (int)(edns->bits & EDNS_DO), secure)) { + udpsize, edns, (int)(edns->bits & EDNS_DO), secure, 0)) { if(!inplace_cb_reply_servfail_call(&worker->env, qinfo, NULL, NULL, LDNS_RCODE_SERVFAIL, edns, repinfo, worker->scratchpad, worker->env.now_tv)) @@ -726,7 +726,7 @@ answer_from_cache(struct worker* worker, struct query_info* qinfo, repinfo->c, worker->scratchpad) || !reply_info_answer_encode(qinfo, encode_rep, id, flags, repinfo->c->buffer, timenow, 1, worker->scratchpad, - udpsize, edns, (int)(edns->bits & EDNS_DO), *is_secure_answer)) { + udpsize, edns, (int)(edns->bits & EDNS_DO), *is_secure_answer, 0)) { if(!inplace_cb_reply_servfail_call(&worker->env, qinfo, NULL, NULL, LDNS_RCODE_SERVFAIL, edns, repinfo, worker->scratchpad, worker->env.now_tv)) diff --git a/services/authzone.c b/services/authzone.c index 196fe6693..19f462586 100644 --- a/services/authzone.c +++ b/services/authzone.c @@ -1948,6 +1948,17 @@ static int auth_zone_zonemd_check_hash(struct auth_zone* z, return 0; } +/** find the apex SOA RRset, if it exists */ +struct auth_rrset* auth_zone_get_soa_rrset(struct auth_zone* z) +{ + struct auth_data* apex; + struct auth_rrset* soa; + apex = az_find_name(z, z->name, z->namelen); + if(!apex) return NULL; + soa = az_domain_rrset(apex, LDNS_RR_TYPE_SOA); + return soa; +} + /** find serial number of zone or false if none */ int auth_zone_get_serial(struct auth_zone* z, uint32_t* serial) @@ -3484,7 +3495,7 @@ auth_answer_encode(struct query_info* qinfo, struct module_env* env, *(uint16_t*)sldns_buffer_begin(buf), sldns_buffer_read_u16_at(buf, 2), buf, 0, 0, temp, udpsize, edns, - (int)(edns->bits&EDNS_DO), 0)) { + (int)(edns->bits&EDNS_DO), 0, 0)) { error_encode(buf, (LDNS_RCODE_SERVFAIL|BIT_AA), qinfo, *(uint16_t*)sldns_buffer_begin(buf), sldns_buffer_read_u16_at(buf, 2), edns); diff --git a/services/authzone.h b/services/authzone.h index 4810017a3..7b9fc60fc 100644 --- a/services/authzone.h +++ b/services/authzone.h @@ -632,6 +632,9 @@ int auth_zones_startprobesequence(struct auth_zones* az, /** read auth zone from zonefile. caller must lock zone. false on failure */ int auth_zone_read_zonefile(struct auth_zone* z, struct config_file* cfg); +/** find the apex SOA RRset, if it exists. NULL if no SOA RRset. */ +struct auth_rrset* auth_zone_get_soa_rrset(struct auth_zone* z); + /** find serial number of zone or false if none (no SOA record) */ int auth_zone_get_serial(struct auth_zone* z, uint32_t* serial); diff --git a/services/localzone.c b/services/localzone.c index a24137eac..6eecab62a 100644 --- a/services/localzone.c +++ b/services/localzone.c @@ -1261,7 +1261,7 @@ local_encode(struct query_info* qinfo, struct module_env* env, if(!inplace_cb_reply_local_call(env, qinfo, NULL, &rep, rcode, edns, repinfo, temp, env->now_tv) || !reply_info_answer_encode(qinfo, &rep, *(uint16_t*)sldns_buffer_begin(buf), sldns_buffer_read_u16_at(buf, 2), - buf, 0, 0, temp, udpsize, edns, (int)(edns->bits&EDNS_DO), 0)) { + buf, 0, 0, temp, udpsize, edns, (int)(edns->bits&EDNS_DO), 0, 0)) { error_encode(buf, (LDNS_RCODE_SERVFAIL|BIT_AA), qinfo, *(uint16_t*)sldns_buffer_begin(buf), sldns_buffer_read_u16_at(buf, 2), edns); diff --git a/services/mesh.c b/services/mesh.c index f00ad3e86..3ff14a0dd 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -1167,7 +1167,7 @@ mesh_do_callback(struct mesh_state* m, int rcode, struct reply_info* rep, !reply_info_answer_encode(&m->s.qinfo, rep, r->qid, r->qflags, r->buf, 0, 1, m->s.env->scratch, udp_size, &r->edns, - (int)(r->edns.bits & EDNS_DO), secure)) + (int)(r->edns.bits & EDNS_DO), secure, 0)) { fptr_ok(fptr_whitelist_mesh_cb(r->cb)); (*r->cb)(r->cb_arg, LDNS_RCODE_SERVFAIL, r->buf, @@ -1313,7 +1313,7 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, !reply_info_answer_encode(&m->s.qinfo, rep, r->qid, r->qflags, r_buffer, 0, 1, m->s.env->scratch, udp_size, &r->edns, (int)(r->edns.bits & EDNS_DO), - secure)) + secure, 0)) { if(!inplace_cb_reply_servfail_call(m->s.env, &m->s.qinfo, &m->s, rep, LDNS_RCODE_SERVFAIL, &r->edns, &r->query_reply, m->s.region, &r->start_time)) diff --git a/services/rpz.c b/services/rpz.c index e53c5cf81..9e3510b7d 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -1494,20 +1494,30 @@ static int rpz_local_encode(struct module_env* env, struct query_info* qinfo, struct edns_data* edns, struct comm_reply* repinfo, sldns_buffer* buf, struct regional* temp, struct ub_packed_rrset_key* rrset, int ansec, - int rcode) + int rcode, struct ub_packed_rrset_key* soa_rrset) { struct reply_info rep; uint16_t udpsize; + struct ub_packed_rrset_key* rrsetlist[3]; memset(&rep, 0, sizeof(rep)); rep.flags = (uint16_t)((BIT_QR | BIT_AA | BIT_RA) | rcode); rep.qdcount = 1; rep.rrset_count = ansec; + rep.rrsets = rrsetlist; if(ansec > 0) { rep.an_numrrsets = 1; - rep.rrsets = &rrset; + rep.rrsets[0] = rrset; rep.ttl = ((struct packed_rrset_data*)rrset->entry.data)->rr_ttl[0]; } + if(soa_rrset != NULL) { + rep.ar_numrrsets = 1; + rep.rrsets[rep.rrset_count] = soa_rrset; + rep.rrset_count ++; + if(rep.ttl < ((struct packed_rrset_data*)soa_rrset->entry.data)->rr_ttl[0]) { + rep.ttl = ((struct packed_rrset_data*)soa_rrset->entry.data)->rr_ttl[0]; + } + } udpsize = edns->udp_size; edns->edns_version = EDNS_ADVERTISED_VERSION; @@ -1518,7 +1528,8 @@ rpz_local_encode(struct module_env* env, struct query_info* qinfo, repinfo, temp, env->now_tv) || !reply_info_answer_encode(qinfo, &rep, *(uint16_t*)sldns_buffer_begin(buf), sldns_buffer_read_u16_at(buf, 2), - buf, 0, 0, temp, udpsize, edns, (int)(edns->bits&EDNS_DO), 0)) { + buf, 0, 0, temp, udpsize, edns, (int)(edns->bits&EDNS_DO), 0, + 1 /* not minimal */ )) { error_encode(buf, (LDNS_RCODE_SERVFAIL|BIT_AA), qinfo, *(uint16_t*)sldns_buffer_begin(buf), sldns_buffer_read_u16_at(buf, 2), edns); @@ -1544,11 +1555,12 @@ static void rpz_apply_clientip_localdata_action(struct clientip_synthesized_rr* raddr, struct module_env* env, struct query_info* qinfo, struct edns_data* edns, struct comm_reply* repinfo, sldns_buffer* buf, - struct regional* temp) + struct regional* temp, struct auth_zone* auth_zone) { struct local_rrset* rrset; enum rpz_action action = RPZ_INVALID_ACTION; struct ub_packed_rrset_key* rp = NULL; + struct ub_packed_rrset_key* rsoa = NULL; int rcode = LDNS_RCODE_NOERROR|BIT_AA; int rrset_count = 1; @@ -1573,12 +1585,37 @@ rpz_apply_clientip_localdata_action(struct clientip_synthesized_rr* raddr, return; } - rp->rk.flags |= PACKED_RRSET_FIXEDTTL; + rp->rk.flags |= PACKED_RRSET_FIXEDTTL | PACKED_RRSET_RPZ; rp->rk.dname = qinfo->qname; rp->rk.dname_len = qinfo->qname_len; + rp->entry.hash = rrset_key_hash(&rp->rk); nodata: + if(auth_zone) { + struct auth_rrset* soa = NULL; + soa = auth_zone_get_soa_rrset(auth_zone); + if(soa) { + struct ub_packed_rrset_key csoa; + memset(&csoa, 0, sizeof(csoa)); + csoa.entry.key = &csoa; + csoa.rk.rrset_class = htons(LDNS_RR_CLASS_IN); + csoa.rk.type = htons(LDNS_RR_TYPE_SOA); + csoa.rk.flags |= PACKED_RRSET_FIXEDTTL + | PACKED_RRSET_RPZ; + csoa.rk.dname = auth_zone->name; + csoa.rk.dname_len = auth_zone->namelen; + csoa.entry.hash = rrset_key_hash(&csoa.rk); + csoa.entry.data = soa->data; + rsoa = respip_copy_rrset(&csoa, temp); + if(!rsoa) { + verbose(VERB_ALGO, "rpz: local data action soa: out of memory"); + return; + } + } + + } + rpz_local_encode(env, qinfo, edns, repinfo, buf, temp, rp, - rrset_count, rcode); + rrset_count, rcode, rsoa); } static inline struct dns_msg* @@ -2150,7 +2187,7 @@ rpz_apply_maybe_clientip_trigger(struct auth_zones* az, struct module_env* env, stats->rpz_action[client_action]++; if(client_action == RPZ_LOCAL_DATA_ACTION) { rpz_apply_clientip_localdata_action(node, env, qinfo, - edns, repinfo, buf, temp); + edns, repinfo, buf, temp, *a_out); } else { if(*r_out && (*r_out)->log) log_rpz_apply(((*z_out)?(*z_out)->name:NULL), diff --git a/testdata/rpz_clientip.rpl b/testdata/rpz_clientip.rpl index 64082210c..7d5b5330d 100644 --- a/testdata/rpz_clientip.rpl +++ b/testdata/rpz_clientip.rpl @@ -207,6 +207,8 @@ SECTION QUESTION a.a. IN A SECTION ANSWER a.a. IN A 127.0.0.1 +SECTION ADDITIONAL +rpz.example.com. 3600 IN SOA ns1.rpz.example.com. hostmaster.rpz.example.com. ( 1379078166 28800 7200 604800 7200 ) ENTRY_END ; should be synthesized @@ -226,6 +228,8 @@ SECTION QUESTION a.a. IN TXT SECTION ANSWER a.a. IN TXT "42" +SECTION ADDITIONAL +rpz.example.com. 3600 IN SOA ns1.rpz.example.com. hostmaster.rpz.example.com. ( 1379078166 28800 7200 604800 7200 ) ENTRY_END ; should be synthesized NODATA @@ -243,6 +247,8 @@ MATCH all REPLY QR AA RD RA NOERROR SECTION QUESTION a.a. IN AAAA +SECTION ADDITIONAL +rpz.example.com. 3600 IN SOA ns1.rpz.example.com. hostmaster.rpz.example.com. ( 1379078166 28800 7200 604800 7200 ) ENTRY_END ; should be DROPPED diff --git a/util/data/msgencode.c b/util/data/msgencode.c index 5f297b551..1cf30dd5d 100644 --- a/util/data/msgencode.c +++ b/util/data/msgencode.c @@ -878,7 +878,7 @@ 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, int cached, struct regional* region, uint16_t udpsize, - struct edns_data* edns, int dnssec, int secure) + struct edns_data* edns, int dnssec, int secure, int notminimal) { uint16_t flags; unsigned int attach_edns = 0; @@ -916,7 +916,7 @@ reply_info_answer_encode(struct query_info* qinf, struct reply_info* rep, } if(!reply_info_encode(qinf, rep, id, flags, pkt, timenow, region, - udpsize, dnssec, MINIMAL_RESPONSES)) { + udpsize, dnssec, (notminimal?0:MINIMAL_RESPONSES))) { log_err("reply encode: out of memory"); return 0; } diff --git a/util/data/msgencode.h b/util/data/msgencode.h index 30dc515cb..3baa0eaf9 100644 --- a/util/data/msgencode.h +++ b/util/data/msgencode.h @@ -64,12 +64,14 @@ struct edns_data; * or if edns_present = 0, it is not included. * @param dnssec: if 0 DNSSEC records are omitted from the answer. * @param secure: if 1, the AD bit is set in the reply. + * @param notminimal: if 1, ignore minimalresponses and include additional + * section anyway. * @return: 0 on error (server failure). */ int reply_info_answer_encode(struct query_info* qinf, struct reply_info* rep, uint16_t id, uint16_t qflags, struct sldns_buffer* dest, time_t timenow, int cached, struct regional* region, uint16_t udpsize, - struct edns_data* edns, int dnssec, int secure); + struct edns_data* edns, int dnssec, int secure, int notminimal); /** * Regenerate the wireformat from the stored msg reply. From 2094763bebc374c50b61ea1e40e6500b010b0a08 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 14 May 2021 16:28:55 +0200 Subject: [PATCH 112/553] - rpz-triggers, add rpz SOA when minimal responses is not set. --- services/rpz.c | 128 +++++++++++++++++++++++++++++++++---------------- 1 file changed, 86 insertions(+), 42 deletions(-) diff --git a/services/rpz.c b/services/rpz.c index 9e3510b7d..a612cc094 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -1551,6 +1551,27 @@ rpz_find_synthesized_rrset(int qtype, struct clientip_synthesized_rr* data) { return NULL; } +/** allocate SOA record ubrrsetkey in region */ +static struct ub_packed_rrset_key* +make_soa_ubrrset(struct auth_zone* auth_zone, struct auth_rrset* soa, + struct regional* temp) +{ + struct ub_packed_rrset_key csoa; + if(!soa) + return NULL; + memset(&csoa, 0, sizeof(csoa)); + csoa.entry.key = &csoa; + csoa.rk.rrset_class = htons(LDNS_RR_CLASS_IN); + csoa.rk.type = htons(LDNS_RR_TYPE_SOA); + csoa.rk.flags |= PACKED_RRSET_FIXEDTTL + | PACKED_RRSET_RPZ; + csoa.rk.dname = auth_zone->name; + csoa.rk.dname_len = auth_zone->namelen; + csoa.entry.hash = rrset_key_hash(&csoa.rk); + csoa.entry.data = soa->data; + return respip_copy_rrset(&csoa, temp); +} + static void rpz_apply_clientip_localdata_action(struct clientip_synthesized_rr* raddr, struct module_env* env, struct query_info* qinfo, @@ -1594,30 +1615,45 @@ nodata: struct auth_rrset* soa = NULL; soa = auth_zone_get_soa_rrset(auth_zone); if(soa) { - struct ub_packed_rrset_key csoa; - memset(&csoa, 0, sizeof(csoa)); - csoa.entry.key = &csoa; - csoa.rk.rrset_class = htons(LDNS_RR_CLASS_IN); - csoa.rk.type = htons(LDNS_RR_TYPE_SOA); - csoa.rk.flags |= PACKED_RRSET_FIXEDTTL - | PACKED_RRSET_RPZ; - csoa.rk.dname = auth_zone->name; - csoa.rk.dname_len = auth_zone->namelen; - csoa.entry.hash = rrset_key_hash(&csoa.rk); - csoa.entry.data = soa->data; - rsoa = respip_copy_rrset(&csoa, temp); + rsoa = make_soa_ubrrset(auth_zone, soa, temp); if(!rsoa) { verbose(VERB_ALGO, "rpz: local data action soa: out of memory"); return; } } - } rpz_local_encode(env, qinfo, edns, repinfo, buf, temp, rp, rrset_count, rcode, rsoa); } +/** add additional section SOA record to the reply. + * Since this gets fed into the normal iterator answer creation, it + * gets minimal-responses applied to it, that can remove the additional SOA + * again. */ +static int +rpz_add_soa(struct reply_info* rep, struct module_qstate* ms, + struct auth_zone* az) +{ + struct auth_rrset* soa = NULL; + struct ub_packed_rrset_key* rsoa = NULL; + struct ub_packed_rrset_key** prevrrsets; + soa = auth_zone_get_soa_rrset(az); + if(!soa) return 1; + if(!rep) return 0; + rsoa = make_soa_ubrrset(az, soa, ms->region); + if(!rsoa) return 0; + prevrrsets = rep->rrsets; + rep->rrsets = regional_alloc_zero(ms->region, + sizeof(*rep->rrsets)*(rep->rrset_count+1)); + if(prevrrsets && rep->rrset_count > 0) + memcpy(rep->rrsets, prevrrsets, rep->rrset_count*sizeof(*rep->rrsets)); + rep->rrset_count++; + rep->ar_numrrsets++; + rep->rrsets[rep->rrset_count-1] = rsoa; + return 1; +} + static inline struct dns_msg* rpz_dns_msg_new(struct regional* region) { @@ -1632,7 +1668,7 @@ rpz_dns_msg_new(struct regional* region) static inline struct dns_msg* rpz_synthesize_nodata(struct rpz* ATTR_UNUSED(r), struct module_qstate* ms, - struct query_info* qinfo) + struct query_info* qinfo, struct auth_zone* az) { struct dns_msg* msg = rpz_dns_msg_new(ms->region); if(msg == NULL) { return msg; } @@ -1650,12 +1686,14 @@ rpz_synthesize_nodata(struct rpz* ATTR_UNUSED(r), struct module_qstate* ms, sec_status_insecure); if(msg->rep) msg->rep->authoritative = 1; + if(!rpz_add_soa(msg->rep, ms, az)) + return NULL; return msg; } static inline struct dns_msg* rpz_synthesize_nxdomain(struct rpz* ATTR_UNUSED(r), struct module_qstate* ms, - struct query_info* qinfo) + struct query_info* qinfo, struct auth_zone* az) { struct dns_msg* msg = rpz_dns_msg_new(ms->region); if(msg == NULL) { return msg; } @@ -1673,12 +1711,14 @@ rpz_synthesize_nxdomain(struct rpz* ATTR_UNUSED(r), struct module_qstate* ms, sec_status_insecure); if(msg->rep) msg->rep->authoritative = 1; + if(!rpz_add_soa(msg->rep, ms, az)) + return NULL; return msg; } static inline struct dns_msg* rpz_synthesize_localdata_from_rrset(struct rpz* ATTR_UNUSED(r), struct module_qstate* ms, - struct query_info* qi, struct local_rrset* rrset) + struct query_info* qi, struct local_rrset* rrset, struct auth_zone* az) { struct dns_msg* msg = NULL; struct reply_info* new_reply_info; @@ -1722,12 +1762,14 @@ rpz_synthesize_localdata_from_rrset(struct rpz* ATTR_UNUSED(r), struct module_qs rp->rk.flags |= PACKED_RRSET_RPZ; new_reply_info->rrsets[0] = rp; msg->rep = new_reply_info; + if(!rpz_add_soa(msg->rep, ms, az)) + return NULL; return msg; } static inline struct dns_msg* rpz_synthesize_nsip_localdata(struct rpz* r, struct module_qstate* ms, - struct clientip_synthesized_rr* data) + struct clientip_synthesized_rr* data, struct auth_zone* az) { struct query_info* qi = &ms->qinfo; struct local_rrset* rrset; @@ -1738,7 +1780,7 @@ rpz_synthesize_nsip_localdata(struct rpz* r, struct module_qstate* ms, return NULL; } - return rpz_synthesize_localdata_from_rrset(r, ms, &ms->qinfo, rrset); + return rpz_synthesize_localdata_from_rrset(r, ms, &ms->qinfo, rrset, az); } /* copy'n'paste from localzone.c */ @@ -1759,7 +1801,8 @@ local_data_find_type(struct local_data* data, uint16_t type, int alias_ok) /* based on localzone.c:local_data_answer() */ static inline struct dns_msg* rpz_synthesize_nsdname_localdata(struct rpz* r, struct module_qstate* ms, - struct local_zone* z, struct matched_delegation_point const* match) + struct local_zone* z, struct matched_delegation_point const* match, + struct auth_zone* az) { struct local_data key; struct local_data* ld; @@ -1786,13 +1829,13 @@ rpz_synthesize_nsdname_localdata(struct rpz* r, struct module_qstate* ms, return NULL; } - return rpz_synthesize_localdata_from_rrset(r, ms, &ms->qinfo, rrset); + return rpz_synthesize_localdata_from_rrset(r, ms, &ms->qinfo, rrset, az); } /* like local_data_answer for qname triggers after a cname */ static struct dns_msg* rpz_synthesize_qname_localdata_msg(struct rpz* r, struct module_qstate* ms, - struct query_info* qinfo, struct local_zone* z) + struct query_info* qinfo, struct local_zone* z, struct auth_zone* az) { struct local_data key; struct local_data* ld; @@ -1811,7 +1854,7 @@ rpz_synthesize_qname_localdata_msg(struct rpz* r, struct module_qstate* ms, verbose(VERB_ALGO, "rpz: qname after cname: type not found"); return NULL; } - return rpz_synthesize_localdata_from_rrset(r, ms, qinfo, rrset); + return rpz_synthesize_localdata_from_rrset(r, ms, qinfo, rrset, az); } static int @@ -1883,7 +1926,7 @@ rpz_delegation_point_ipbased_trigger_lookup(struct rpz* rpz, struct iter_qstate* struct dns_msg* rpz_apply_nsip_trigger(struct module_qstate* ms, struct rpz* r, - struct clientip_synthesized_rr* raddr) + struct clientip_synthesized_rr* raddr, struct auth_zone* az) { enum rpz_action action = raddr->action; struct dns_msg* ret = NULL; @@ -1896,16 +1939,16 @@ rpz_apply_nsip_trigger(struct module_qstate* ms, struct rpz* r, if(action == RPZ_LOCAL_DATA_ACTION && raddr->data == NULL) { verbose(VERB_ALGO, "rpz: bug: nsip local data action but no local data"); - ret = rpz_synthesize_nodata(r, ms, &ms->qinfo); + ret = rpz_synthesize_nodata(r, ms, &ms->qinfo, az); goto done; } switch(action) { case RPZ_NXDOMAIN_ACTION: - ret = rpz_synthesize_nxdomain(r, ms, &ms->qinfo); + ret = rpz_synthesize_nxdomain(r, ms, &ms->qinfo, az); break; case RPZ_NODATA_ACTION: - ret = rpz_synthesize_nodata(r, ms, &ms->qinfo); + ret = rpz_synthesize_nodata(r, ms, &ms->qinfo, az); break; case RPZ_TCP_ONLY_ACTION: /* basically a passthru here but the tcp-only will be @@ -1914,12 +1957,12 @@ rpz_apply_nsip_trigger(struct module_qstate* ms, struct rpz* r, ret = NULL; break; case RPZ_DROP_ACTION: - ret = rpz_synthesize_nodata(r, ms, &ms->qinfo); + ret = rpz_synthesize_nodata(r, ms, &ms->qinfo, az); ms->is_drop = 1; break; case RPZ_LOCAL_DATA_ACTION: - ret = rpz_synthesize_nsip_localdata(r, ms, raddr); - if(ret == NULL) { ret = rpz_synthesize_nodata(r, ms, &ms->qinfo); } + ret = rpz_synthesize_nsip_localdata(r, ms, raddr, az); + if(ret == NULL) { ret = rpz_synthesize_nodata(r, ms, &ms->qinfo, az); } break; case RPZ_PASSTHRU_ACTION: ret = NULL; @@ -1937,7 +1980,8 @@ done: struct dns_msg* rpz_apply_nsdname_trigger(struct module_qstate* ms, struct rpz* r, - struct local_zone* z, struct matched_delegation_point const* match) + struct local_zone* z, struct matched_delegation_point const* match, + struct auth_zone* az) { struct dns_msg* ret = NULL; enum rpz_action action = localzone_type_to_rpz_action(z->type); @@ -1950,10 +1994,10 @@ rpz_apply_nsdname_trigger(struct module_qstate* ms, struct rpz* r, switch(action) { case RPZ_NXDOMAIN_ACTION: - ret = rpz_synthesize_nxdomain(r, ms, &ms->qinfo); + ret = rpz_synthesize_nxdomain(r, ms, &ms->qinfo, az); break; case RPZ_NODATA_ACTION: - ret = rpz_synthesize_nodata(r, ms, &ms->qinfo); + ret = rpz_synthesize_nodata(r, ms, &ms->qinfo, az); break; case RPZ_TCP_ONLY_ACTION: /* basically a passthru here but the tcp-only will be @@ -1962,12 +2006,12 @@ rpz_apply_nsdname_trigger(struct module_qstate* ms, struct rpz* r, ret = NULL; break; case RPZ_DROP_ACTION: - ret = rpz_synthesize_nodata(r, ms, &ms->qinfo); + ret = rpz_synthesize_nodata(r, ms, &ms->qinfo, az); ms->is_drop = 1; break; case RPZ_LOCAL_DATA_ACTION: - ret = rpz_synthesize_nsdname_localdata(r, ms, z, match); - if(ret == NULL) { ret = rpz_synthesize_nodata(r, ms, &ms->qinfo); } + ret = rpz_synthesize_nsdname_localdata(r, ms, z, match, az); + if(ret == NULL) { ret = rpz_synthesize_nodata(r, ms, &ms->qinfo, az); } break; case RPZ_PASSTHRU_ACTION: ret = NULL; @@ -2066,8 +2110,8 @@ rpz_callback_from_iterator_module(struct module_qstate* ms, struct iter_qstate* lock_rw_unlock(&az->rpz_lock); if(raddr == NULL && z == NULL) { return NULL; } - else if(raddr != NULL) { return rpz_apply_nsip_trigger(ms, r, raddr); } - else if(z != NULL) { return rpz_apply_nsdname_trigger(ms, r, z, &match); } + else if(raddr != NULL) { return rpz_apply_nsip_trigger(ms, r, raddr, a); } + else if(z != NULL) { return rpz_apply_nsdname_trigger(ms, r, z, &match, a); } else { return NULL; } } @@ -2128,10 +2172,10 @@ struct dns_msg* rpz_callback_from_iterator_cname(struct module_qstate* ms, } switch(localzone_type_to_rpz_action(lzt)) { case RPZ_NXDOMAIN_ACTION: - ret = rpz_synthesize_nxdomain(r, ms, &is->qchase); + ret = rpz_synthesize_nxdomain(r, ms, &is->qchase, a); break; case RPZ_NODATA_ACTION: - ret = rpz_synthesize_nodata(r, ms, &is->qchase); + ret = rpz_synthesize_nodata(r, ms, &is->qchase, a); break; case RPZ_TCP_ONLY_ACTION: /* basically a passthru here but the tcp-only will be @@ -2140,12 +2184,12 @@ struct dns_msg* rpz_callback_from_iterator_cname(struct module_qstate* ms, ret = NULL; break; case RPZ_DROP_ACTION: - ret = rpz_synthesize_nodata(r, ms, &is->qchase); + ret = rpz_synthesize_nodata(r, ms, &is->qchase, a); ms->is_drop = 1; break; case RPZ_LOCAL_DATA_ACTION: - ret = rpz_synthesize_qname_localdata_msg(r, ms, &is->qchase, z); - if(ret == NULL) { ret = rpz_synthesize_nodata(r, ms, &is->qchase); } + ret = rpz_synthesize_qname_localdata_msg(r, ms, &is->qchase, z, a); + if(ret == NULL) { ret = rpz_synthesize_nodata(r, ms, &is->qchase, a); } break; case RPZ_PASSTHRU_ACTION: ret = NULL; From 355526da7def69e614d2c49b65953195d1489af8 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 14 May 2021 16:34:38 +0200 Subject: [PATCH 113/553] - rpz-triggers, the added soa for client ip modified answers is affected by the minimal-responses config option. --- cachedb/cachedb.c | 2 +- daemon/worker.c | 4 ++-- services/authzone.c | 2 +- services/localzone.c | 2 +- services/mesh.c | 4 ++-- services/rpz.c | 3 +-- testdata/rpz_clientip.rpl | 1 + util/data/msgencode.c | 4 ++-- util/data/msgencode.h | 4 +--- 9 files changed, 12 insertions(+), 14 deletions(-) diff --git a/cachedb/cachedb.c b/cachedb/cachedb.c index 707319e85..af4ffe5f2 100644 --- a/cachedb/cachedb.c +++ b/cachedb/cachedb.c @@ -402,7 +402,7 @@ prep_data(struct module_qstate* qstate, struct sldns_buffer* buf) qstate->return_msg->rep); if(!reply_info_answer_encode(&qstate->return_msg->qinfo, qstate->return_msg->rep, 0, qstate->query_flags, - buf, 0, 1, qstate->env->scratch, 65535, &edns, 1, 0, 0)) + buf, 0, 1, qstate->env->scratch, 65535, &edns, 1, 0)) return 0; /* TTLs in the return_msg are relative to time(0) so we have to diff --git a/daemon/worker.c b/daemon/worker.c index 421cd82c4..2ee8b8d9b 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -522,7 +522,7 @@ answer_norec_from_cache(struct worker* worker, struct query_info* qinfo, repinfo->c, worker->scratchpad) || !reply_info_answer_encode(&msg->qinfo, msg->rep, id, flags, repinfo->c->buffer, 0, 1, worker->scratchpad, - udpsize, edns, (int)(edns->bits & EDNS_DO), secure, 0)) { + udpsize, edns, (int)(edns->bits & EDNS_DO), secure)) { if(!inplace_cb_reply_servfail_call(&worker->env, qinfo, NULL, NULL, LDNS_RCODE_SERVFAIL, edns, repinfo, worker->scratchpad, worker->env.now_tv)) @@ -726,7 +726,7 @@ answer_from_cache(struct worker* worker, struct query_info* qinfo, repinfo->c, worker->scratchpad) || !reply_info_answer_encode(qinfo, encode_rep, id, flags, repinfo->c->buffer, timenow, 1, worker->scratchpad, - udpsize, edns, (int)(edns->bits & EDNS_DO), *is_secure_answer, 0)) { + udpsize, edns, (int)(edns->bits & EDNS_DO), *is_secure_answer)) { if(!inplace_cb_reply_servfail_call(&worker->env, qinfo, NULL, NULL, LDNS_RCODE_SERVFAIL, edns, repinfo, worker->scratchpad, worker->env.now_tv)) diff --git a/services/authzone.c b/services/authzone.c index 19f462586..b0cfc4e26 100644 --- a/services/authzone.c +++ b/services/authzone.c @@ -3495,7 +3495,7 @@ auth_answer_encode(struct query_info* qinfo, struct module_env* env, *(uint16_t*)sldns_buffer_begin(buf), sldns_buffer_read_u16_at(buf, 2), buf, 0, 0, temp, udpsize, edns, - (int)(edns->bits&EDNS_DO), 0, 0)) { + (int)(edns->bits&EDNS_DO), 0)) { error_encode(buf, (LDNS_RCODE_SERVFAIL|BIT_AA), qinfo, *(uint16_t*)sldns_buffer_begin(buf), sldns_buffer_read_u16_at(buf, 2), edns); diff --git a/services/localzone.c b/services/localzone.c index 6eecab62a..a24137eac 100644 --- a/services/localzone.c +++ b/services/localzone.c @@ -1261,7 +1261,7 @@ local_encode(struct query_info* qinfo, struct module_env* env, if(!inplace_cb_reply_local_call(env, qinfo, NULL, &rep, rcode, edns, repinfo, temp, env->now_tv) || !reply_info_answer_encode(qinfo, &rep, *(uint16_t*)sldns_buffer_begin(buf), sldns_buffer_read_u16_at(buf, 2), - buf, 0, 0, temp, udpsize, edns, (int)(edns->bits&EDNS_DO), 0, 0)) { + buf, 0, 0, temp, udpsize, edns, (int)(edns->bits&EDNS_DO), 0)) { error_encode(buf, (LDNS_RCODE_SERVFAIL|BIT_AA), qinfo, *(uint16_t*)sldns_buffer_begin(buf), sldns_buffer_read_u16_at(buf, 2), edns); diff --git a/services/mesh.c b/services/mesh.c index 3ff14a0dd..f00ad3e86 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -1167,7 +1167,7 @@ mesh_do_callback(struct mesh_state* m, int rcode, struct reply_info* rep, !reply_info_answer_encode(&m->s.qinfo, rep, r->qid, r->qflags, r->buf, 0, 1, m->s.env->scratch, udp_size, &r->edns, - (int)(r->edns.bits & EDNS_DO), secure, 0)) + (int)(r->edns.bits & EDNS_DO), secure)) { fptr_ok(fptr_whitelist_mesh_cb(r->cb)); (*r->cb)(r->cb_arg, LDNS_RCODE_SERVFAIL, r->buf, @@ -1313,7 +1313,7 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, !reply_info_answer_encode(&m->s.qinfo, rep, r->qid, r->qflags, r_buffer, 0, 1, m->s.env->scratch, udp_size, &r->edns, (int)(r->edns.bits & EDNS_DO), - secure, 0)) + secure)) { if(!inplace_cb_reply_servfail_call(m->s.env, &m->s.qinfo, &m->s, rep, LDNS_RCODE_SERVFAIL, &r->edns, &r->query_reply, m->s.region, &r->start_time)) diff --git a/services/rpz.c b/services/rpz.c index a612cc094..d7bada4a9 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -1528,8 +1528,7 @@ rpz_local_encode(struct module_env* env, struct query_info* qinfo, repinfo, temp, env->now_tv) || !reply_info_answer_encode(qinfo, &rep, *(uint16_t*)sldns_buffer_begin(buf), sldns_buffer_read_u16_at(buf, 2), - buf, 0, 0, temp, udpsize, edns, (int)(edns->bits&EDNS_DO), 0, - 1 /* not minimal */ )) { + buf, 0, 0, temp, udpsize, edns, (int)(edns->bits&EDNS_DO), 0)) { error_encode(buf, (LDNS_RCODE_SERVFAIL|BIT_AA), qinfo, *(uint16_t*)sldns_buffer_begin(buf), sldns_buffer_read_u16_at(buf, 2), edns); diff --git a/testdata/rpz_clientip.rpl b/testdata/rpz_clientip.rpl index 7d5b5330d..78e05ad91 100644 --- a/testdata/rpz_clientip.rpl +++ b/testdata/rpz_clientip.rpl @@ -3,6 +3,7 @@ server: module-config: "respip validator iterator" target-fetch-policy: "0 0 0 0 0" qname-minimisation: no + minimal-responses: no access-control: 192.0.0.0/8 allow rpz: diff --git a/util/data/msgencode.c b/util/data/msgencode.c index 1cf30dd5d..5f297b551 100644 --- a/util/data/msgencode.c +++ b/util/data/msgencode.c @@ -878,7 +878,7 @@ 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, int cached, struct regional* region, uint16_t udpsize, - struct edns_data* edns, int dnssec, int secure, int notminimal) + struct edns_data* edns, int dnssec, int secure) { uint16_t flags; unsigned int attach_edns = 0; @@ -916,7 +916,7 @@ reply_info_answer_encode(struct query_info* qinf, struct reply_info* rep, } if(!reply_info_encode(qinf, rep, id, flags, pkt, timenow, region, - udpsize, dnssec, (notminimal?0:MINIMAL_RESPONSES))) { + udpsize, dnssec, MINIMAL_RESPONSES)) { log_err("reply encode: out of memory"); return 0; } diff --git a/util/data/msgencode.h b/util/data/msgencode.h index 3baa0eaf9..30dc515cb 100644 --- a/util/data/msgencode.h +++ b/util/data/msgencode.h @@ -64,14 +64,12 @@ struct edns_data; * or if edns_present = 0, it is not included. * @param dnssec: if 0 DNSSEC records are omitted from the answer. * @param secure: if 1, the AD bit is set in the reply. - * @param notminimal: if 1, ignore minimalresponses and include additional - * section anyway. * @return: 0 on error (server failure). */ int reply_info_answer_encode(struct query_info* qinf, struct reply_info* rep, uint16_t id, uint16_t qflags, struct sldns_buffer* dest, time_t timenow, int cached, struct regional* region, uint16_t udpsize, - struct edns_data* edns, int dnssec, int secure, int notminimal); + struct edns_data* edns, int dnssec, int secure); /** * Regenerate the wireformat from the stored msg reply. From 568aab1b67eb78e4307f517e29c891328d7d2c9b Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 14 May 2021 16:41:54 +0200 Subject: [PATCH 114/553] - rpz-triggers, in callback from iterator, if rpz is disabled, skip. --- services/rpz.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/services/rpz.c b/services/rpz.c index d7bada4a9..a389cf101 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -2089,6 +2089,10 @@ rpz_callback_from_iterator_module(struct module_qstate* ms, struct iter_qstate* for(a = az->rpz_first; a != NULL; a = a->rpz_az_next) { lock_rw_rdlock(&a->lock); r = a->rpz; + if(r->disabled) { + lock_rw_unlock(&a->lock); + continue; + } /* the nsdname has precedence over the nsip triggers */ z = rpz_delegation_point_zone_lookup(is->dp, r->nsdname_zones, From 44f5d27683c4970ae66c7f10a7a2f991eba151f1 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 14 May 2021 17:27:15 +0200 Subject: [PATCH 115/553] - rpz-triggers, check for alloc failure and zone for add rpz soa. --- services/rpz.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/services/rpz.c b/services/rpz.c index a389cf101..eb49f1cb3 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -1637,6 +1637,7 @@ rpz_add_soa(struct reply_info* rep, struct module_qstate* ms, struct auth_rrset* soa = NULL; struct ub_packed_rrset_key* rsoa = NULL; struct ub_packed_rrset_key** prevrrsets; + if(!az) return 1; soa = auth_zone_get_soa_rrset(az); if(!soa) return 1; if(!rep) return 0; @@ -1645,6 +1646,8 @@ rpz_add_soa(struct reply_info* rep, struct module_qstate* ms, prevrrsets = rep->rrsets; rep->rrsets = regional_alloc_zero(ms->region, sizeof(*rep->rrsets)*(rep->rrset_count+1)); + if(!rep->rrsets) + return 0; if(prevrrsets && rep->rrset_count > 0) memcpy(rep->rrsets, prevrrsets, rep->rrset_count*sizeof(*rep->rrsets)); rep->rrset_count++; From f5e0207a5e1aaad8b255713a9921656b57b1d3d8 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 17 May 2021 08:43:46 +0200 Subject: [PATCH 116/553] - Fix #489: Compile using MSYS2 MinGW 64-bit. --- acx_nlnetlabs.m4 | 6 ++++-- configure | 6 +++--- configure.ac | 4 ++-- doc/Changelog | 3 +++ 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/acx_nlnetlabs.m4 b/acx_nlnetlabs.m4 index dd8d8c329..ad8fb5007 100644 --- a/acx_nlnetlabs.m4 +++ b/acx_nlnetlabs.m4 @@ -2,7 +2,9 @@ # Copyright 2009, Wouter Wijngaards, NLnet Labs. # BSD licensed. # -# Version 38 +# Version 39 +# 2021-05-17 fix nonblocking socket test from grep on mingw32 to mingw for +# 64bit compatibility. # 2021-03-24 fix ACX_FUNC_DEPRECATED to use CPPFLAGS and CFLAGS. # 2021-01-05 fix defun for aclocal # 2021-01-05 autoconf 2.70 autoupdate and fixes, no AC_TRY_COMPILE @@ -915,7 +917,7 @@ dnl a nonblocking socket do not work, a new call to select is necessary. AC_DEFUN([ACX_CHECK_NONBLOCKING_BROKEN], [ AC_MSG_CHECKING([if nonblocking sockets work]) -if echo $target | grep mingw32 >/dev/null; then +if echo $target | grep mingw >/dev/null; then AC_MSG_RESULT([no (windows)]) AC_DEFINE([NONBLOCKING_IS_BROKEN], 1, [Define if the network stack does not fully support nonblocking io (causes lower performance).]) else diff --git a/configure b/configure index fb3bcffe2..d0050b1e6 100755 --- a/configure +++ b/configure @@ -4204,9 +4204,9 @@ case "$exec_prefix" in esac # are we on MinGW? -if uname -s 2>&1 | grep MINGW32 >/dev/null; then on_mingw="yes" +if uname -s 2>&1 | grep MINGW >/dev/null; then on_mingw="yes" else - if echo $host $target | grep mingw32 >/dev/null; then on_mingw="yes" + if echo $host $target | grep mingw >/dev/null; then on_mingw="yes" else on_mingw="no"; fi fi @@ -15927,7 +15927,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if nonblocking sockets work" >&5 $as_echo_n "checking if nonblocking sockets work... " >&6; } -if echo $target | grep mingw32 >/dev/null; then +if echo $target | grep mingw >/dev/null; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no (windows)" >&5 $as_echo "no (windows)" >&6; } diff --git a/configure.ac b/configure.ac index 62bcee1df..9abf2299f 100644 --- a/configure.ac +++ b/configure.ac @@ -147,9 +147,9 @@ case "$exec_prefix" in esac # are we on MinGW? -if uname -s 2>&1 | grep MINGW32 >/dev/null; then on_mingw="yes" +if uname -s 2>&1 | grep MINGW >/dev/null; then on_mingw="yes" else - if echo $host $target | grep mingw32 >/dev/null; then on_mingw="yes" + if echo $host $target | grep mingw >/dev/null; then on_mingw="yes" else on_mingw="no"; fi fi diff --git a/doc/Changelog b/doc/Changelog index aaa1561e0..3b30b6f07 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +15 May 2021: Wouter + - Fix #489: Compile using MSYS2 MinGW 64-bit. + 12 May 2021: Wouter - Fix that auth-zone zonefiles use last TTL if no TTL is specified. From 23152e6eb84e2de9a42e19db14cb7646c54a36cb Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 17 May 2021 09:13:29 +0200 Subject: [PATCH 117/553] Fix date in changelog. --- doc/Changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 3b30b6f07..6fd42f92d 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,4 +1,4 @@ -15 May 2021: Wouter +17 May 2021: Wouter - Fix #489: Compile using MSYS2 MinGW 64-bit. 12 May 2021: Wouter From ddec5aa559540e462372ab503da8944976940c45 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 19 May 2021 11:40:31 +0200 Subject: [PATCH 118/553] - rpz-triggers, spelling fix in comment. --- services/rpz.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/rpz.c b/services/rpz.c index eb49f1cb3..7fb3591b0 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -1954,7 +1954,7 @@ rpz_apply_nsip_trigger(struct module_qstate* ms, struct rpz* r, break; case RPZ_TCP_ONLY_ACTION: /* basically a passthru here but the tcp-only will be - * honored before the query gets send */ + * honored before the query gets sent. */ ms->respip_action_info->action = respip_truncate; ret = NULL; break; @@ -2003,7 +2003,7 @@ rpz_apply_nsdname_trigger(struct module_qstate* ms, struct rpz* r, break; case RPZ_TCP_ONLY_ACTION: /* basically a passthru here but the tcp-only will be - * honored before the query gets send */ + * honored before the query gets sent. */ ms->respip_action_info->action = respip_truncate; ret = NULL; break; From ff6b527184b33ffe1e2b643db8a32fae8061fc5a Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Wed, 19 May 2021 14:59:33 +0200 Subject: [PATCH 119/553] - Fix for #411, #439, #469: Reset the DNS message ID when moving queries between TCP streams. - Refactor for uniform way to produce random DNS message IDs. --- doc/Changelog | 5 +++++ services/authzone.c | 4 ++-- services/outside_network.c | 45 ++++++++++++++++++++++++++++++++------ util/net_help.h | 4 ++++ 4 files changed, 49 insertions(+), 9 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 6fd42f92d..c410c1880 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,8 @@ +19 May 2021: George + - Fix for #411, #439, #469: Reset the DNS message ID when moving queries + between TCP streams. + - Refactor for uniform way to produce random DNS message IDs. + 17 May 2021: Wouter - Fix #489: Compile using MSYS2 MinGW 64-bit. diff --git a/services/authzone.c b/services/authzone.c index 196fe6693..9f9b08f7d 100644 --- a/services/authzone.c +++ b/services/authzone.c @@ -5442,7 +5442,7 @@ xfr_transfer_init_fetch(struct auth_xfer* xfr, struct module_env* env) /* perform AXFR/IXFR */ /* set the packet to be written */ /* create new ID */ - xfr->task_transfer->id = (uint16_t)(ub_random(env->rnd)&0xffff); + xfr->task_transfer->id = GET_RANDOM_ID(env->rnd); xfr_create_ixfr_packet(xfr, env->scratch_buffer, xfr->task_transfer->id, master); @@ -6292,7 +6292,7 @@ xfr_probe_send_probe(struct auth_xfer* xfr, struct module_env* env, /* create new ID for new probes, but not on timeout retries, * this means we'll accept replies to previous retries to same ip */ if(timeout == AUTH_PROBE_TIMEOUT) - xfr->task_probe->id = (uint16_t)(ub_random(env->rnd)&0xffff); + xfr->task_probe->id = GET_RANDOM_ID(env->rnd); xfr_create_soa_probe_packet(xfr, env->scratch_buffer, xfr->task_probe->id); /* we need to remove the cp if we have a different ip4/ip6 type now */ diff --git a/services/outside_network.c b/services/outside_network.c index 9b09aa360..af14f8622 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -94,6 +94,10 @@ static void waiting_list_remove(struct outside_network* outnet, static void reuse_tcp_remove_tree_list(struct outside_network* outnet, struct reuse_tcp* reuse); +/** select a DNS ID for a TCP stream */ +static uint16_t tcp_select_id(struct outside_network* outnet, + struct reuse_tcp* reuse); + int pending_cmp(const void* key1, const void* key2) { @@ -406,9 +410,18 @@ static void reuse_write_wait_push_back(struct reuse_tcp* reuse, void reuse_tree_by_id_insert(struct reuse_tcp* reuse, struct waiting_tcp* w) { +#ifdef UNBOUND_DEBUG + rbnode_type* added; +#endif log_assert(w->id_node.key == NULL); w->id_node.key = w; +#ifdef UNBOUND_DEBUG + added = +#else + (void) +#endif rbtree_insert(&reuse->tree_by_id, &w->id_node); + log_assert(added); /* should have been added */ } /** find element in tree by id */ @@ -752,6 +765,9 @@ use_free_buffer(struct outside_network* outnet) w->on_tcp_waiting_list = 0; reuse = reuse_tcp_find(outnet, &w->addr, w->addrlen, w->ssl_upstream); + /* re-select an ID when moving to a new TCP buffer */ + w->id = tcp_select_id(outnet, reuse); + LDNS_ID_SET(w->pkt, w->id); if(reuse) { log_reuse_tcp(VERB_CLIENT, "use free buffer for waiting tcp: " "found reuse", reuse); @@ -830,8 +846,17 @@ outnet_add_tcp_waiting(struct outside_network* outnet, struct waiting_tcp* w) static void reuse_tree_by_id_delete(struct reuse_tcp* reuse, struct waiting_tcp* w) { +#ifdef UNBOUND_DEBUG + rbnode_type* rem; +#endif log_assert(w->id_node.key != NULL); +#ifdef UNBOUND_DEBUG + rem = +#else + (void) +#endif rbtree_delete(&reuse->tree_by_id, w); + log_assert(rem); /* should have been there */ w->id_node.key = NULL; } @@ -1788,14 +1813,14 @@ select_id(struct outside_network* outnet, struct pending* pend, sldns_buffer* packet) { int id_tries = 0; - pend->id = ((unsigned)ub_random(outnet->rnd)>>8) & 0xffff; + pend->id = GET_RANDOM_ID(outnet->rnd); LDNS_ID_SET(sldns_buffer_begin(packet), pend->id); /* insert in tree */ pend->node.key = pend; while(!rbtree_insert(outnet->pending, &pend->node)) { /* change ID to avoid collision */ - pend->id = ((unsigned)ub_random(outnet->rnd)>>8) & 0xffff; + pend->id = GET_RANDOM_ID(outnet->rnd); LDNS_ID_SET(sldns_buffer_begin(packet), pend->id); id_tries++; if(id_tries == MAX_ID_RETRY) { @@ -2088,6 +2113,14 @@ reuse_tcp_close_oldest(struct outside_network* outnet) reuse_cb_and_decommission(outnet, pend, NETEVENT_CLOSED); } +static uint16_t +tcp_select_id(struct outside_network* outnet, struct reuse_tcp* reuse) +{ + if(reuse) + return reuse_tcp_select_id(reuse, outnet); + return GET_RANDOM_ID(outnet->rnd); +} + /** find spare ID value for reuse tcp stream. That is random and also does * not collide with an existing query ID that is in use or waiting */ uint16_t @@ -2101,13 +2134,13 @@ reuse_tcp_select_id(struct reuse_tcp* reuse, struct outside_network* outnet) /* make really sure the tree is not empty */ if(reuse->tree_by_id.count == 0) { - id = ((unsigned)ub_random(outnet->rnd)>>8) & 0xffff; + id = GET_RANDOM_ID(outnet->rnd); return id; } /* try to find random empty spots by picking them */ for(i = 0; irnd)>>8) & 0xffff; + id = GET_RANDOM_ID(outnet->rnd); if(!reuse_tcp_by_id_find(reuse, id)) { return id; } @@ -2205,9 +2238,7 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, w->pkt = (uint8_t*)w + sizeof(struct waiting_tcp); w->pkt_len = sldns_buffer_limit(packet); memmove(w->pkt, sldns_buffer_begin(packet), w->pkt_len); - if(reuse) - w->id = reuse_tcp_select_id(reuse, sq->outnet); - else w->id = ((unsigned)ub_random(sq->outnet->rnd)>>8) & 0xffff; + w->id = tcp_select_id(sq->outnet, reuse); LDNS_ID_SET(w->pkt, w->id); memcpy(&w->addr, &sq->addr, sq->addrlen); w->addrlen = sq->addrlen; diff --git a/util/net_help.h b/util/net_help.h index 114f4cdb5..79835270c 100644 --- a/util/net_help.h +++ b/util/net_help.h @@ -42,6 +42,7 @@ #ifndef NET_HELP_H #define NET_HELP_H #include "util/log.h" +#include "util/random.h" struct sock_list; struct regional; struct config_strlist; @@ -92,6 +93,9 @@ extern uint16_t EDNS_ADVERTISED_SIZE; /** DNSKEY secure entry point, KSK flag */ #define DNSKEY_BIT_SEP 0x0001 +/** return a random 16-bit number given a random source */ +#define GET_RANDOM_ID(rnd) (((unsigned)ub_random(rnd)>>8) & 0xffff) + /** minimal responses when positive answer */ extern int MINIMAL_RESPONSES; From 1a28a276376158f07e90f89b50965960bfe3e48a Mon Sep 17 00:00:00 2001 From: Tom Carpay Date: Thu, 20 May 2021 13:28:34 +0200 Subject: [PATCH 120/553] happyflow for all signle svcparams --- sldns/str2wire.c | 117 ++++++++++++++++++++++++++++++----- sldns/wire2str.c | 157 ++++++++++++++++++++++++++++++++++------------- 2 files changed, 216 insertions(+), 58 deletions(-) diff --git a/sldns/str2wire.c b/sldns/str2wire.c index 5a9c5eed8..665c6da1d 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -1011,13 +1011,14 @@ sldns_str2wire_svcparam_port(const char* val, uint8_t* rd, size_t* rd_len) && *endptr == 0 /* no non-digit chars after digits */ && port <= 65535) { /* no overflow */ - sldns_write_uint16(rd, htons(SVCB_KEY_PORT)); - sldns_write_uint16(rd + 2, htons(sizeof(uint16_t))); - sldns_write_uint16(rd + 4, htons(port)); + sldns_write_uint16(rd, SVCB_KEY_PORT); + sldns_write_uint16(rd + 2, sizeof(uint16_t)); + sldns_write_uint16(rd + 4, port); *rd_len = 6; return LDNS_WIREPARSE_ERR_OK; } + // ERROR: "Could not parse port SvcParamValue" return -1; } @@ -1047,8 +1048,8 @@ sldns_str2wire_svcbparam_ipv4hint(const char* val, uint8_t* rd, size_t* rd_len) /* count is number of comma's in val + 1; so the actual number of IPv4 * addresses in val */ - sldns_write_uint16(rd, htons(SVCB_KEY_IPV4HINT)); - sldns_write_uint16(rd + 2, htons(LDNS_IP4ADDRLEN * count)); + sldns_write_uint16(rd, SVCB_KEY_IPV4HINT); + sldns_write_uint16(rd + 2, LDNS_IP4ADDRLEN * count); *rd_len = 4; while (count) { @@ -1106,8 +1107,8 @@ sldns_str2wire_svcbparam_ipv6hint(const char* val, uint8_t* rd, size_t* rd_len) /* count is number of comma's in val + 1; so the actual number of IPv6 * addresses in val */ - sldns_write_uint16(rd, htons(SVCB_KEY_IPV6HINT)); - sldns_write_uint16(rd + 2, htons(LDNS_IP6ADDRLEN * count)); + sldns_write_uint16(rd, SVCB_KEY_IPV6HINT); + sldns_write_uint16(rd + 2, LDNS_IP6ADDRLEN * count); *rd_len = 4; while (count) { @@ -1169,19 +1170,19 @@ sldns_str2wire_svcbparam_mandatory(const char* val, uint8_t* rd, size_t* rd_len) // @TODO check if we have space to write in rd_len; look for the best spot - sldns_write_uint16(rd, htons(SVCB_KEY_MANDATORY)); - sldns_write_uint16(rd + 2, htons(sizeof(uint16_t) * count)); + sldns_write_uint16(rd, SVCB_KEY_MANDATORY); + sldns_write_uint16(rd + 2, sizeof(uint16_t) * count); *rd_len = 4; - for(;;) { + while (1) { if (!(next_key = strchr(val, ','))) { sldns_write_uint16(rd + *rd_len, - htons(sldns_str2wire_svcparam_key_lookup(val, val_len))); + sldns_str2wire_svcparam_key_lookup(val, val_len)); *rd_len += LDNS_IP6ADDRLEN; break; } else { sldns_write_uint16(rd + *rd_len, - htons(sldns_str2wire_svcparam_key_lookup(val, next_key - val))); + sldns_str2wire_svcparam_key_lookup(val, next_key - val)); *rd_len += LDNS_IP6ADDRLEN; } @@ -1228,7 +1229,7 @@ sldns_str2wire_svcbparam_ech_value(const char* val, uint8_t* rd, size_t* rd_len) if (wire_len == -1) { // zc_error_prev_line("invalid base64 data in ech"); - return LDNS_WIREPARSE_ERR_INVALID_STR; + return LDNS_WIREPARSE_ERR_SYNTAX_B64; } else if (wire_len + 4 > *rd_len) { return LDNS_WIREPARSE_ERR_BUFFER_TOO_SMALL; } else { @@ -1236,16 +1237,104 @@ sldns_str2wire_svcbparam_ech_value(const char* val, uint8_t* rd, size_t* rd_len) sldns_write_uint16(rd + 2, wire_len); memcpy(rd + 4, buffer, wire_len); *rd_len = 4 + wire_len; + return LDNS_WIREPARSE_ERR_OK; } } +static const char* +sldns_str2wire_svcbparam_parse_alpn_next_unescaped_comma(const char *val) +{ + while (*val) { + /* Only return when the comma is not escaped*/ + if (*val == '\\'){ + ++val; + if (!*val) + break; + } else if (*val == ',') + return val; + + val++; + } + return NULL; +} + +static size_t +sldns_str2wire_svcbparam_parse_alpn_copy_unescaped(uint8_t *dst, + const char *src, size_t len) +{ + uint8_t *orig_dst = dst; + + while (len) { + if (*src == '\\') { + src++; + len--; + if (!len) + break; + } + *dst++ = *src++; + len--; + } + return (size_t)(dst - orig_dst); +} + +int sldns_str2wire_svcbparam_alpn_value(const char* val, + uint8_t* rd, size_t* rd_len) +{ + uint8_t unescaped_dst[65536]; + uint8_t *dst = unescaped_dst; + const char *next_str; + size_t str_len; + size_t dst_len; + size_t val_len; + int wire_len; + + val_len = strlen(val); + + if (val_len > sizeof(unescaped_dst)) { + return LDNS_WIREPARSE_ERR_SYNTAX_INTEGER_OVERFLOW; + } + while (val_len) { + size_t dst_len; + + str_len = (next_str = sldns_str2wire_svcbparam_parse_alpn_next_unescaped_comma(val)) + ? (size_t)(next_str - val) : val_len; + + if (str_len > 255) { + // ERROR "alpn strings need to be smaller than 255 chars" + return LDNS_WIREPARSE_ERR_SYNTAX_INTEGER_OVERFLOW; + } + dst_len = sldns_str2wire_svcbparam_parse_alpn_copy_unescaped(dst + 1, val, str_len); + *dst++ = dst_len; + dst += dst_len; + + if (!next_str) + break; + + /* skip the comma for the next iteration */ + val_len -= next_str - val + 1; + val = next_str + 1; + } + dst_len = dst - unescaped_dst; + + sldns_write_uint16(rd, SVCB_KEY_ALPN); + sldns_write_uint16(rd + 2, dst_len); + memcpy(rd + 4, unescaped_dst, dst_len); + *rd_len = 4 + dst_len; + + return LDNS_WIREPARSE_ERR_OK; +} + static int sldns_str2wire_svcparam_key_value(const char *key, size_t key_len, const char *val, uint8_t* rd, size_t* rd_len) { uint16_t svcparamkey = sldns_str2wire_svcparam_key_lookup(key, key_len); + + fprintf(stderr, "key: %s\n", key); + fprintf(stderr, "val: %s\n", val); + switch (svcparamkey) { case SVCB_KEY_PORT: return sldns_str2wire_svcparam_port(val, rd, rd_len); @@ -1265,7 +1354,7 @@ sldns_str2wire_svcparam_key_value(const char *key, size_t key_len, case SVCB_KEY_ECH: return sldns_str2wire_svcbparam_ech_value(val, rd, rd_len); case SVCB_KEY_ALPN: - // return sldns_str2wire_svcbparam_alpn_value(val, rd, rd_len); + return sldns_str2wire_svcbparam_alpn_value(val, rd, rd_len); default: break; } diff --git a/sldns/wire2str.c b/sldns/wire2str.c index 3fea10fcd..21f6195ce 100644 --- a/sldns/wire2str.c +++ b/sldns/wire2str.c @@ -950,7 +950,6 @@ static int sldns_print_svcparamkey(char** s, size_t* slen, uint16_t svcparamkey) { if (svcparamkey < SVCPARAMKEY_COUNT) { - // fprintf(stderr, "HERE\n"); return sldns_str_print(s, slen, "%s", svcparamkey_strs[svcparamkey]); } else { @@ -959,106 +958,175 @@ sldns_print_svcparamkey(char** s, size_t* slen, uint16_t svcparamkey) } int sldns_wire2str_svcparam_port2str(char** s, - size_t* slen, uint16_t val_len, uint16_t val) + size_t* slen, uint16_t data_len, uint16_t data) { int w = 0; - if (val_len != 2) + if (data_len != 2) return -1; /* wireformat error, a short is 2 bytes */ - w = sldns_str_print(s, slen, "=%d", (int)ntohs(val)); + w = sldns_str_print(s, slen, "=%d", (int)data); return w; } static int sldns_wire2str_svcparam_ipv4hint2str(char** s, - size_t* slen, uint16_t val_len, uint8_t* data) + size_t* slen, uint16_t data_len, uint8_t* data) { char ip_str[INET_ADDRSTRLEN + 1]; // @TODO actually incorporate this int w = 0; - assert(val_len > 0); + assert(data_len > 0); - if ((val_len % LDNS_IP4ADDRLEN) == 0) { + if ((data_len % LDNS_IP4ADDRLEN) == 0) { if (inet_ntop(AF_INET, data, ip_str, sizeof(ip_str)) == NULL) return 0; /* wireformat error, incorrect size or inet family */ - sldns_str_print(s, slen, "=%s", ip_str); + w += sldns_str_print(s, slen, "=%s", ip_str); data += LDNS_IP4ADDRLEN / sizeof(uint16_t); - while ((val_len -= LDNS_IP4ADDRLEN) > 0) { + while ((data_len -= LDNS_IP4ADDRLEN) > 0) { if (inet_ntop(AF_INET, data, ip_str, sizeof(ip_str)) == NULL) return 0; /* wireformat error, incorrect size or inet family */ - sldns_str_print(s, slen, ",%s", ip_str); + w += sldns_str_print(s, slen, ",%s", ip_str); data += LDNS_IP4ADDRLEN / sizeof(uint16_t); } - return 1; - } else - return 0; + } + + return w; } int sldns_wire2str_svcparam_ipv6hint2str(char** s, - size_t* slen, uint16_t val_len, uint8_t* data) + size_t* slen, uint16_t data_len, uint8_t* data) { char ip_str[INET6_ADDRSTRLEN + 1]; - // @TODO actually incorporate this + // @TODO actually incorporate this -> is this correct now? int w = 0; - assert(val_len > 0); + assert(data_len > 0); - if ((val_len % LDNS_IP6ADDRLEN) == 0) { + // @TODO fix ntohs -> see output + + if ((data_len % LDNS_IP6ADDRLEN) == 0) { if (inet_ntop(AF_INET6, data, ip_str, sizeof(ip_str)) == NULL) return 0; /* wireformat error, incorrect size or inet family */ - sldns_str_print(s, slen, "=%s", ip_str); + w += sldns_str_print(s, slen, "=%s", ip_str); data += LDNS_IP6ADDRLEN / sizeof(uint16_t); - while ((val_len -= LDNS_IP6ADDRLEN) > 0) { + while ((data_len -= LDNS_IP6ADDRLEN) > 0) { if (inet_ntop(AF_INET6, data, ip_str, sizeof(ip_str)) == NULL) return 0; /* wireformat error, incorrect size or inet family */ - sldns_str_print(s, slen, ",%s", ip_str); + w += sldns_str_print(s, slen, ",%s", ip_str); data += LDNS_IP6ADDRLEN / sizeof(uint16_t); } - return 1; - } else - return 0; + } + + return w; } int sldns_wire2str_svcparam_mandatory2str(char** s, - size_t* slen, uint16_t val_len, uint8_t* data) + size_t* slen, uint16_t data_len, uint8_t* data) { int w = 0; - assert(val_len > 0); + assert(data_len > 0); - // if (val_len % sizeof(uint16_t)) - // return 0; // wireformat error, val_len must be multiple of shorts + // if (data_len % sizeof(uint16_t)) + // return 0; // wireformat error, data_len must be multiple of shorts w += sldns_str_print(s, slen, "="); - w += sldns_print_svcparamkey(s, slen, ntohs(sldns_read_uint16(data))); + w += sldns_print_svcparamkey(s, slen, sldns_read_uint16(data)); data += 2; - while ((val_len -= sizeof(uint16_t))) { + while ((data_len -= sizeof(uint16_t))) { w += sldns_str_print(s, slen, ","); - w += sldns_print_svcparamkey(s, slen, ntohs(sldns_read_uint16(data))); + w += sldns_print_svcparamkey(s, slen, sldns_read_uint16(data)); data += 2; } return w; } +int sldns_wire2str_svcparam_alpn2str(char** s, + size_t* slen, uint16_t data_len, uint8_t* data) +{ + uint8_t *dp = (void *)data; + int w = 0; + + assert(data_len > 0); /* Guaranteed by rdata_svcparam_to_string */ + + w += sldns_str_print(s, slen, "=\""); + while (data_len) { + uint8_t i, str_len = *dp++; + + if (str_len > --data_len) + return 0; + + for (i = 0; i < str_len; i++) { + if (dp[i] == '"' || dp[i] == '\\') + w += sldns_str_print(s, slen, "\\\\\\%c", dp[i]); + + else if (dp[i] == ',') + w += sldns_str_print(s, slen, "\\\\%c", dp[i]); + + else if (!isprint(dp[i])) + w += sldns_str_print(s, slen, "\\%03u", (unsigned) dp[i]); + + else + w += sldns_str_print(s, slen, "%c", dp[i]); + } + dp += str_len; + if ((data_len -= str_len)) + w += sldns_str_print(s, slen, "%s", ","); + } + w += sldns_str_print(s, slen, "\""); + + return w; +} + +int sldns_wire2str_svcparam_ech2str(char** s, + size_t* slen, uint16_t data_len, uint8_t* data) +{ + int size; + int w; + + assert(data_len > 0); /* Guaranteed by rdata_svcparam_to_string */ + + w += sldns_str_print(s, slen, "=\""); + + /* b64_ntop_calculate size includes null at the end */ + size = sldns_b64_ntop_calculate_size(data_len); + + fprintf(stderr, "size %d\n", size); + + // @TODO store return value? + sldns_b64_ntop(data, data_len, *s, *slen); + (*s) += size; + (*slen) -= size; + + w += sldns_str_print(s, slen, "\""); + + // @TODO fix check + // if(size > *slen) { + // buffer_skip(output, size); + // } + + return w + size; +} + int sldns_wire2str_svcparam_scan(uint8_t** d, size_t* dlen, char** s, size_t* slen) { - uint16_t svcparamkey, val_len; + uint16_t svcparamkey, data_len; uint8_t* data = *d; int written_chars = 0; if(*dlen == 0) return 0; /* verify that we actualy have data */ - svcparamkey = ntohs(sldns_read_uint16(data)); + svcparamkey = sldns_read_uint16(data); written_chars += sldns_print_svcparamkey(s, slen, svcparamkey); @@ -1066,15 +1134,15 @@ int sldns_wire2str_svcparam_scan(uint8_t** d, size_t* dlen, char** s, size_t* sl // @TODO fix this to be dynamic and correct // fprintf(stderr, "*dlen2: %zu\n", *dlen); - // fprintf(stderr, "val_len %zu\n", val_len); + // fprintf(stderr, "data_len %zu\n", data_len); (*dlen) = 0; - val_len = ntohs(sldns_read_uint16(data+2)); + data_len = sldns_read_uint16(data+2); // if (size != val_len + 4) // return 0; wireformat error - // if (!val_len) { + // if (!data_len) { // /* Some SvcParams MUST have values */ // switch (svcparamkey) { // case SVCB_KEY_ALPN: @@ -1087,34 +1155,35 @@ int sldns_wire2str_svcparam_scan(uint8_t** d, size_t* dlen, char** s, size_t* sl // return 1; // } // } + switch (svcparamkey) { case SVCB_KEY_PORT: - written_chars += sldns_wire2str_svcparam_port2str(s, slen, val_len, sldns_read_uint16(data+4)); + written_chars += sldns_wire2str_svcparam_port2str(s, slen, data_len, sldns_read_uint16(data+4)); break; case SVCB_KEY_IPV4HINT: - written_chars += sldns_wire2str_svcparam_ipv4hint2str(s, slen, val_len, data+4); + written_chars += sldns_wire2str_svcparam_ipv4hint2str(s, slen, data_len, data+4); break; case SVCB_KEY_IPV6HINT: - written_chars += sldns_wire2str_svcparam_ipv6hint2str(s, slen, val_len, data+4); + written_chars += sldns_wire2str_svcparam_ipv6hint2str(s, slen, data_len, data+4); break; case SVCB_KEY_MANDATORY: - written_chars += sldns_wire2str_svcparam_mandatory2str(s, slen, val_len, data+4); + written_chars += sldns_wire2str_svcparam_mandatory2str(s, slen, data_len, data+4); break; case SVCB_KEY_NO_DEFAULT_ALPN: return 0; /* wireformat error, should not have a value */ case SVCB_KEY_ALPN: - // written_chars += sldns_wire2str_svcparam_alpn2str(output, val_len, data+2); - // break; + written_chars += sldns_wire2str_svcparam_alpn2str(s, slen, data_len, data+4); + break; case SVCB_KEY_ECH: - // written_chars += sldns_wire2str_svcparam_ech2str(output, val_len, data+2); - // break; + written_chars += sldns_wire2str_svcparam_ech2str(s, slen, data_len, data+4); + break; default: break; } // @TODO set str_len to 0: "If the end of the // * output string is reached, *str_len is set to 0" - // *str_len = 0; + // *slen = 0; return written_chars; } From eca19fe1d186353ad6a21ee9998f735c76562863 Mon Sep 17 00:00:00 2001 From: Tom Carpay Date: Thu, 20 May 2021 13:39:24 +0200 Subject: [PATCH 121/553] happyflow for all signle svcparams (now without debug prints) --- sldns/str2wire.c | 4 ---- sldns/wire2str.c | 2 -- 2 files changed, 6 deletions(-) diff --git a/sldns/str2wire.c b/sldns/str2wire.c index 665c6da1d..a35dfc836 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -1331,10 +1331,6 @@ sldns_str2wire_svcparam_key_value(const char *key, size_t key_len, { uint16_t svcparamkey = sldns_str2wire_svcparam_key_lookup(key, key_len); - - fprintf(stderr, "key: %s\n", key); - fprintf(stderr, "val: %s\n", val); - switch (svcparamkey) { case SVCB_KEY_PORT: return sldns_str2wire_svcparam_port(val, rd, rd_len); diff --git a/sldns/wire2str.c b/sldns/wire2str.c index 21f6195ce..7d1143c6d 100644 --- a/sldns/wire2str.c +++ b/sldns/wire2str.c @@ -1101,8 +1101,6 @@ int sldns_wire2str_svcparam_ech2str(char** s, /* b64_ntop_calculate size includes null at the end */ size = sldns_b64_ntop_calculate_size(data_len); - fprintf(stderr, "size %d\n", size); - // @TODO store return value? sldns_b64_ntop(data, data_len, *s, *slen); (*s) += size; From 0a6b22dc55faa7a49f0f3f1aef0ac44fad155f20 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 21 May 2021 14:05:19 +0200 Subject: [PATCH 122/553] - rpz-triggers, rpz log and stats for nsip and clientip and nsdname. --- services/rpz.c | 87 +++++++++++++++++++++++++++++----------- testdata/rpz_nsdname.rpl | 2 + testdata/rpz_nsip.rpl | 2 + 3 files changed, 67 insertions(+), 24 deletions(-) diff --git a/services/rpz.c b/services/rpz.c index 7fb3591b0..3a4404360 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -54,6 +54,7 @@ #include "services/cache/dns.h" #include "iterator/iterator.h" #include "iterator/iter_delegpt.h" +#include "daemon/worker.h" typedef struct resp_addr rpz_aclnode_type; @@ -1366,25 +1367,42 @@ rpz_remove_rr(struct rpz* r, size_t aznamelen, uint8_t* dname, size_t dnamelen, /** print log information for an applied RPZ policy. Based on local-zone's * lz_inform_print(). + * The repinfo contains the reply address. If it is NULL, the module + * state is used to report the first IP address (if any). + * The dname is used, for the applied rpz, if NULL, addrnode is used. */ static void -log_rpz_apply(uint8_t* dname, enum rpz_action a, struct query_info* qinfo, - struct comm_reply* repinfo, char* log_name) +log_rpz_apply(char* trigger, uint8_t* dname, struct addr_tree_node* addrnode, + enum rpz_action a, struct query_info* qinfo, + struct comm_reply* repinfo, struct module_qstate* ms, char* log_name) { - char ip[128], txt[512]; + char ip[128], txt[512], portstr[32]; char dnamestr[LDNS_MAX_DOMAINLEN+1]; - uint16_t port = ntohs(((struct sockaddr_in*)&repinfo->addr)->sin_port); - if(dname) + uint16_t port = 0; + if(dname) { dname_str(dname, dnamestr); - else dnamestr[0]=0; - addr_to_str(&repinfo->addr, repinfo->addrlen, ip, sizeof(ip)); - if(log_name) - snprintf(txt, sizeof(txt), "rpz: applied [%s] %s %s %s@%u", - log_name, dnamestr, rpz_action_to_string(a), ip, - (unsigned)port); - else - snprintf(txt, sizeof(txt), "rpz: applied %s %s %s@%u", - dnamestr, rpz_action_to_string(a), ip, (unsigned)port); + } else if(addrnode) { + char a[128]; + addr_to_str(&addrnode->addr, addrnode->addrlen, a, sizeof(a)); + snprintf(dnamestr, sizeof(dnamestr), "%s/%d", a, addrnode->net); + } else { + dnamestr[0]=0; + } + if(repinfo) { + addr_to_str(&repinfo->addr, repinfo->addrlen, ip, sizeof(ip)); + port = ntohs(((struct sockaddr_in*)&repinfo->addr)->sin_port); + } else if(ms && ms->mesh_info && ms->mesh_info->reply_list) { + addr_to_str(&ms->mesh_info->reply_list->query_reply.addr, ms->mesh_info->reply_list->query_reply.addrlen, ip, sizeof(ip)); + port = ntohs(((struct sockaddr_in*)&ms->mesh_info->reply_list->query_reply.addr)->sin_port); + } else { + ip[0]=0; + port = 0; + } + snprintf(portstr, sizeof(portstr), "@%u", (unsigned)port); + snprintf(txt, sizeof(txt), "rpz: applied %s%s%s%s %s %s %s%s", + (log_name?"[":""), (log_name?log_name:""), (log_name?"] ":""), + trigger, dnamestr, rpz_action_to_string(a), + (ip[0]?ip:""), (ip[0]?portstr:"")); log_nametypeclass(0, txt, qinfo->qname, qinfo->qtype, qinfo->qclass); } @@ -1448,9 +1466,11 @@ rpz_resolve_client_action_and_zone(struct auth_zones* az, struct query_info* qin node = rpz_ipbased_trigger_lookup(r->client_set, &repinfo->addr, repinfo->addrlen, "clientip"); if((z || node) && r->action_override == RPZ_DISABLED_ACTION) { if(r->log) - log_rpz_apply(z->name, + log_rpz_apply((node?"clientip":"qname"), + (z?z->name:NULL), + (node?&node->node:NULL), r->action_override, - qinfo, repinfo, r->log_name); + qinfo, repinfo, NULL, r->log_name); stats->rpz_action[r->action_override]++; lock_rw_unlock(&z->lock); z = NULL; @@ -1880,8 +1900,8 @@ rpz_synthesize_qname_localdata(struct module_env* env, struct rpz* r, qinfo->local_alias->rrset->rk.dname = qinfo->qname; qinfo->local_alias->rrset->rk.dname_len = qinfo->qname_len; if(r->log) { - log_rpz_apply(z->name, RPZ_CNAME_OVERRIDE_ACTION, - qinfo, repinfo, r->log_name); + log_rpz_apply("qname", z->name, NULL, RPZ_CNAME_OVERRIDE_ACTION, + qinfo, repinfo, NULL, r->log_name); } stats->rpz_action[RPZ_CNAME_OVERRIDE_ACTION]++; return 0; @@ -1891,9 +1911,9 @@ rpz_synthesize_qname_localdata(struct module_env* env, struct rpz* r, edns, repinfo, buf, temp, dname_count_labels(qinfo->qname), &ld, lzt, -1, NULL, 0, NULL, 0)) { if(r->log) { - log_rpz_apply(z->name, + log_rpz_apply("qname", z->name, NULL, localzone_type_to_rpz_action(lzt), qinfo, - repinfo, r->log_name); + repinfo, NULL, r->log_name); } stats->rpz_action[localzone_type_to_rpz_action(lzt)]++; return !qinfo->local_alias; @@ -1902,8 +1922,8 @@ rpz_synthesize_qname_localdata(struct module_env* env, struct rpz* r, ret = local_zones_zone_answer(z, env, qinfo, edns, repinfo, buf, temp, 0 /* no local data used */, lzt); if(r->log) { - log_rpz_apply(z->name, localzone_type_to_rpz_action(lzt), - qinfo, repinfo, r->log_name); + log_rpz_apply("qname", z->name, NULL, localzone_type_to_rpz_action(lzt), + qinfo, repinfo, NULL, r->log_name); } stats->rpz_action[localzone_type_to_rpz_action(lzt)]++; return ret; @@ -1976,6 +1996,11 @@ rpz_apply_nsip_trigger(struct module_qstate* ms, struct rpz* r, } done: + if(r->log) + log_rpz_apply("nsip", NULL, &raddr->node, + action, &ms->qinfo, NULL, ms, r->log_name); + if(ms->env->worker) + ms->env->worker->stats.rpz_action[action]++; lock_rw_unlock(&raddr->lock); return ret; } @@ -2024,6 +2049,11 @@ rpz_apply_nsdname_trigger(struct module_qstate* ms, struct rpz* r, ret = NULL; } + if(r->log) + log_rpz_apply("nsdname", match->dname, NULL, + action, &ms->qinfo, NULL, ms, r->log_name); + if(ms->env->worker) + ms->env->worker->stats.rpz_action[action]++; return ret; } @@ -2146,6 +2176,12 @@ struct dns_msg* rpz_callback_from_iterator_cname(struct module_qstate* ms, z = rpz_find_zone(r->local_zones, is->qchase.qname, is->qchase.qname_len, is->qchase.qclass, 0, 0, 0); if(z && r->action_override == RPZ_DISABLED_ACTION) { + if(r->log) + log_rpz_apply("qname", z->name, NULL, + r->action_override, + &ms->qinfo, NULL, ms, r->log_name); + if(ms->env->worker) + ms->env->worker->stats.rpz_action[r->action_override]++; lock_rw_unlock(&z->lock); z = NULL; } @@ -2240,8 +2276,11 @@ rpz_apply_maybe_clientip_trigger(struct auth_zones* az, struct module_env* env, edns, repinfo, buf, temp, *a_out); } else { if(*r_out && (*r_out)->log) - log_rpz_apply(((*z_out)?(*z_out)->name:NULL), - client_action, qinfo, repinfo, + log_rpz_apply( + (node?"clientip":"qname"), + ((*z_out)?(*z_out)->name:NULL), + (node?&node->node:NULL), + client_action, qinfo, repinfo, NULL, (*r_out)->log_name); local_zones_zone_answer(*z_out /*likely NULL, no zone*/, env, qinfo, edns, repinfo, buf, temp, 0 /* no local data used */, diff --git a/testdata/rpz_nsdname.rpl b/testdata/rpz_nsdname.rpl index 79b5bec40..08ff3c2e2 100644 --- a/testdata/rpz_nsdname.rpl +++ b/testdata/rpz_nsdname.rpl @@ -7,6 +7,8 @@ server: rpz: name: "rpz.example.com." + rpz-log: yes + rpz-log-name: "rpz.example.com" zonefile: TEMPFILE_NAME rpz.example.com TEMPFILE_CONTENTS rpz.example.com diff --git a/testdata/rpz_nsip.rpl b/testdata/rpz_nsip.rpl index 58b377e8f..ac132cae0 100644 --- a/testdata/rpz_nsip.rpl +++ b/testdata/rpz_nsip.rpl @@ -7,6 +7,8 @@ server: rpz: name: "rpz.example.com." + rpz-log: yes + rpz-log-name: "rpz.example.com" zonefile: TEMPFILE_NAME rpz.example.com TEMPFILE_CONTENTS rpz.example.com From 76532f7447a610949f0d2e0d4e74f81cda5ea4af Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 21 May 2021 14:56:38 +0200 Subject: [PATCH 123/553] - rpz-triggers, silence qname trigger explanation in rpz-log, this is backwards compatible. --- services/rpz.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/services/rpz.c b/services/rpz.c index 3a4404360..085353b3f 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -1399,9 +1399,11 @@ log_rpz_apply(char* trigger, uint8_t* dname, struct addr_tree_node* addrnode, port = 0; } snprintf(portstr, sizeof(portstr), "@%u", (unsigned)port); - snprintf(txt, sizeof(txt), "rpz: applied %s%s%s%s %s %s %s%s", + snprintf(txt, sizeof(txt), "rpz: applied %s%s%s%s%s%s %s %s%s", (log_name?"[":""), (log_name?log_name:""), (log_name?"] ":""), - trigger, dnamestr, rpz_action_to_string(a), + (strcmp(trigger,"qname")==0?"":trigger), + (strcmp(trigger,"qname")==0?"":" "), + dnamestr, rpz_action_to_string(a), (ip[0]?ip:""), (ip[0]?portstr:"")); log_nametypeclass(0, txt, qinfo->qname, qinfo->qtype, qinfo->qclass); } From 24e39a09a8cc2353d9698c7baef0e60f467a00f2 Mon Sep 17 00:00:00 2001 From: TCY16 <8014108+TCY16@users.noreply.github.com> Date: Fri, 21 May 2021 15:42:56 +0200 Subject: [PATCH 124/553] Apply suggestions from code review Co-authored-by: Willem Toorop --- sldns/rrdef.c | 2 +- sldns/rrdef.h | 2 +- sldns/str2wire.c | 4 ++-- sldns/wire2str.c | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/sldns/rrdef.c b/sldns/rrdef.c index 125d3d0ab..803a0fa7d 100644 --- a/sldns/rrdef.c +++ b/sldns/rrdef.c @@ -382,7 +382,7 @@ static sldns_rr_descriptor rdata_field_descriptors[] = { {LDNS_RR_TYPE_ZONEMD, "ZONEMD", 4, 4, type_zonemd_wireformat, LDNS_RDF_TYPE_NONE, LDNS_RR_NO_COMPRESS, 0 }, /* 64 */ {LDNS_RR_TYPE_SVCB, "SVCB", 2, 2, type_svcb_wireformat, LDNS_RDF_TYPE_SVCPARAM, LDNS_RR_NO_COMPRESS, 0 }, -{(enum sldns_enum_rr_type)0, "TYPE65", 1, 1, type_0_wireformat, LDNS_RDF_TYPE_NONE, LDNS_RR_NO_COMPRESS, 0 }, + {LDNS_RR_TYPE_HTTPS, "HTTPS", 2, 2, type_svcb_wireformat, LDNS_RDF_TYPE_SVCPARAM, LDNS_RR_NO_COMPRESS, 0 }, {(enum sldns_enum_rr_type)0, "TYPE66", 1, 1, type_0_wireformat, LDNS_RDF_TYPE_NONE, LDNS_RR_NO_COMPRESS, 0 }, {(enum sldns_enum_rr_type)0, "TYPE67", 1, 1, type_0_wireformat, LDNS_RDF_TYPE_NONE, LDNS_RR_NO_COMPRESS, 0 }, {(enum sldns_enum_rr_type)0, "TYPE68", 1, 1, type_0_wireformat, LDNS_RDF_TYPE_NONE, LDNS_RR_NO_COMPRESS, 0 }, diff --git a/sldns/rrdef.h b/sldns/rrdef.h index cd65c4126..42d5de064 100644 --- a/sldns/rrdef.h +++ b/sldns/rrdef.h @@ -355,7 +355,7 @@ enum sldns_enum_rdf_type /** TSIG extended 16bit error value */ LDNS_RDF_TYPE_TSIGERROR, - /* draft-ietf-dnsop-svcb-https-04: + /* draft-ietf-dnsop-svcb-https-05: * each SvcParam consisting of a SvcParamKey=SvcParamValue pair or * a standalone SvcParamKey */ LDNS_RDF_TYPE_SVCPARAM, diff --git a/sldns/str2wire.c b/sldns/str2wire.c index a35dfc836..f905939fd 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -1055,8 +1055,8 @@ sldns_str2wire_svcbparam_ipv4hint(const char* val, uint8_t* rd, size_t* rd_len) while (count) { if (!(next_ip_str = strchr(val, ','))) { if (inet_pton(AF_INET, val, rd + *rd_len) != 1) - *rd_len += LDNS_IP4ADDRLEN; break; + *rd_len += LDNS_IP4ADDRLEN; assert(count == 1); @@ -1067,10 +1067,10 @@ sldns_str2wire_svcbparam_ipv4hint(const char* val, uint8_t* rd, size_t* rd_len) memcpy(ip_str, val, next_ip_str - val); ip_str[next_ip_str - val] = 0; if (inet_pton(AF_INET, ip_str, rd + *rd_len) != 1) { - *rd_len += LDNS_IP4ADDRLEN; val = ip_str; /* to use in error reporting below */ break; } + *rd_len += LDNS_IP4ADDRLEN; val = next_ip_str + 1; } diff --git a/sldns/wire2str.c b/sldns/wire2str.c index 7d1143c6d..8ade3daca 100644 --- a/sldns/wire2str.c +++ b/sldns/wire2str.c @@ -1122,7 +1122,7 @@ int sldns_wire2str_svcparam_scan(uint8_t** d, size_t* dlen, char** s, size_t* sl uint8_t* data = *d; int written_chars = 0; - if(*dlen == 0) return 0; /* verify that we actualy have data */ + if(*dlen < 4) return 0; /* verify that we actualy have data */ svcparamkey = sldns_read_uint16(data); From 21c5aadbcdcb5acc1f6d2b9c0f2e44b0275f1d41 Mon Sep 17 00:00:00 2001 From: TCY16 <8014108+TCY16@users.noreply.github.com> Date: Fri, 21 May 2021 16:09:18 +0200 Subject: [PATCH 125/553] Apply suggestions from code review Co-authored-by: Willem Toorop --- sldns/str2wire.c | 4 ++-- sldns/wire2str.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/sldns/str2wire.c b/sldns/str2wire.c index f905939fd..05a623a2d 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -1077,8 +1077,8 @@ sldns_str2wire_svcbparam_ipv4hint(const char* val, uint8_t* rd, size_t* rd_len) ip_wire_dst++; count--; } - // if (count) /* verify that we parsed all values */ - // ERROR "Could not parse ipv4hint SvcParamValue: " + if (count) /* verify that we parsed all values */ + return LDNS_WIREPARSE_ERR_SYNTAX_IP4; return LDNS_WIREPARSE_ERR_OK; } diff --git a/sldns/wire2str.c b/sldns/wire2str.c index 8ade3daca..0d41a2bb8 100644 --- a/sldns/wire2str.c +++ b/sldns/wire2str.c @@ -984,14 +984,14 @@ sldns_wire2str_svcparam_ipv4hint2str(char** s, return 0; /* wireformat error, incorrect size or inet family */ w += sldns_str_print(s, slen, "=%s", ip_str); - data += LDNS_IP4ADDRLEN / sizeof(uint16_t); + data += LDNS_IP4ADDRLEN; while ((data_len -= LDNS_IP4ADDRLEN) > 0) { if (inet_ntop(AF_INET, data, ip_str, sizeof(ip_str)) == NULL) return 0; /* wireformat error, incorrect size or inet family */ w += sldns_str_print(s, slen, ",%s", ip_str); - data += LDNS_IP4ADDRLEN / sizeof(uint16_t); + data += LDNS_IP4ADDRLEN; } } From 4f7c194a833a76c7297d1403c7cd2a3f375545b0 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 21 May 2021 17:08:58 +0200 Subject: [PATCH 126/553] - Test code has -q option for quiet output. --- doc/Changelog | 3 +++ testcode/do-tests.sh | 12 +++++++++--- testcode/mini_tdir.sh | 45 ++++++++++++++++++++++++++++++------------- 3 files changed, 44 insertions(+), 16 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index c410c1880..fec5e9ab4 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +21 May 2021: Wouter + - Test code has -q option for quiet output. + 19 May 2021: George - Fix for #411, #439, #469: Reset the DNS message ID when moving queries between TCP streams. diff --git a/testcode/do-tests.sh b/testcode/do-tests.sh index effb7c16a..2a1cfc4c9 100755 --- a/testcode/do-tests.sh +++ b/testcode/do-tests.sh @@ -1,5 +1,11 @@ #!/usr/bin/env bash . testdata/common.sh +quiet=0 +if test "$1" = "-q"; then + quiet=1 + tdirarg="-q" + shift +fi NEED_SPLINT='00-lint.tdir' NEED_DOXYGEN='01-doc.tdir' @@ -33,7 +39,7 @@ fi export -n NOTIFY_SOCKET cd testdata; -sh ../testcode/mini_tdir.sh clean +sh ../testcode/mini_tdir.sh $tdirarg clean rm -f .perfstats.txt for test in `ls -d *.tdir`; do SKIP=0 @@ -57,10 +63,10 @@ for test in `ls -d *.tdir`; do fi if test $SKIP -eq 0; then echo $test - sh ../testcode/mini_tdir.sh -a ../.. exe $test + sh ../testcode/mini_tdir.sh -a ../.. $tdirarg exe $test else echo "skip $test" fi done -sh ../testcode/mini_tdir.sh report +sh ../testcode/mini_tdir.sh $tdirarg report cat .perfstats.txt diff --git a/testcode/mini_tdir.sh b/testcode/mini_tdir.sh index 5f02b0862..0457a95e7 100755 --- a/testcode/mini_tdir.sh +++ b/testcode/mini_tdir.sh @@ -5,14 +5,23 @@ if test "$1" = "-a"; then shift shift fi - +quiet=0 +if test "$1" = "-q"; then + quiet=1 + shift +fi + if test "$1" = "clean"; then - echo "rm -f result.* .done* .tdir.var.master .tdir.var.test" + if test $quiet = 0; then + echo "rm -f result.* .done* .tdir.var.master .tdir.var.test" + fi rm -f result.* .done* .tdir.var.master .tdir.var.test exit 0 fi if test "$1" = "fake"; then - echo "minitdir fake $2" + if test $quiet = 0; then + echo "minitdir fake $2" + fi echo "fake" > .done-`basename $2 .tdir` exit 0 fi @@ -37,7 +46,7 @@ if test "$1" = "-f" && test "$2" = "report"; then desc=`grep ^Description: "result.$name" | sed -e 's/Description: //'` fi if test -f ".done-$name"; then - if test "$1" != "-q"; then + if test $quiet = 0; then echo "** PASSED ** $timelen $name: $desc" pass=`expr $pass + 1` fi @@ -65,7 +74,7 @@ if test "$1" = "report" || test "$2" = "report"; then for result in *.tdir; do name=`basename $result .tdir` if test -f ".done-$name"; then - if test "$1" != "-q"; then + if test $quiet = 0; then echo "** PASSED ** : $name" fi else @@ -82,9 +91,9 @@ fi if test "$1" != 'exe'; then # usage echo "mini tdir. Reduced functionality for old shells." - echo " tdir exe " - echo " tdir fake " - echo " tdir clean" + echo " tdir [-q] exe " + echo " tdir [-q] fake " + echo " tdir [-q] clean" echo " tdir [-q|-f] report" exit 1 fi @@ -117,7 +126,9 @@ if test -f .done-$name; then fi # Copy -echo "minitdir copy $1 to $dir" +if test $quiet = 0; then + echo "minitdir copy $1 to $dir" +fi mkdir $dir if cp --help 2>&1 | grep -- "-a" >/dev/null; then cp -a $name.tdir/* $dir/ @@ -131,7 +142,9 @@ echo "minitdir exe $name" > $result grep "Description:" $name.dsc >> $result 2>&1 echo "DateRunStart: "`date "+%s" 2>/dev/null` >> $result if test -f $name.pre; then - echo "minitdir exe $name.pre" + if test $quiet = 0; then + echo "minitdir exe $name.pre" + fi echo "minitdir exe $name.pre" >> $result $shell $name.pre $args >> $result if test $? -ne 0; then @@ -139,7 +152,9 @@ if test -f $name.pre; then fi fi if test -f $name.test; then - echo "minitdir exe $name.test" + if test $quiet = 0; then + echo "minitdir exe $name.test" + fi echo "minitdir exe $name.test" >> $result $shell $name.test $args >>$result 2>&1 if test $? -ne 0; then @@ -149,12 +164,16 @@ if test -f $name.test; then else echo "$name: PASSED" >> $result echo "$name: PASSED" > ../.done-$name - echo "$name: PASSED" + if test $quiet = 0; then + echo "$name: PASSED" + fi success="yes" fi fi if test -f $name.post; then - echo "minitdir exe $name.post" + if test $quiet = 0; then + echo "minitdir exe $name.post" + fi echo "minitdir exe $name.post" >> $result $shell $name.post $args >> $result if test $? -ne 0; then From 56a112001a092f3ed6539c84e9b6b64969b2e17f Mon Sep 17 00:00:00 2001 From: Jaap Akkerhuis Date: Mon, 24 May 2021 12:41:09 +0200 Subject: [PATCH 127/553] Fix generation of libunbound.pc --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 9abf2299f..945a03f97 100644 --- a/configure.ac +++ b/configure.ac @@ -824,7 +824,7 @@ ACX_WITH_SSL ACX_LIB_SSL SSLLIB="-lssl" -PC_CRYPTO_DEPENDENCY="libcrypto libssl" +PC_CRYPTO_DEPENDENCY="" AC_SUBST(PC_CRYPTO_DEPENDENCY) # check if -lcrypt32 is needed because CAPIENG needs that. (on windows) From 76cd9390da2fc40cbd344d6d8d83e1e3460ac350 Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Tue, 25 May 2021 10:37:44 +0200 Subject: [PATCH 128/553] Fix str2wire ipv6hint like ipv4hint was fixed --- sldns/str2wire.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/sldns/str2wire.c b/sldns/str2wire.c index 05a623a2d..1ed41764d 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -1087,7 +1087,7 @@ static int sldns_str2wire_svcbparam_ipv6hint(const char* val, uint8_t* rd, size_t* rd_len) { int count; - char ip_str[INET_ADDRSTRLEN+1]; + char ip_str[INET6_ADDRSTRLEN+1]; char *next_ip_str; uint32_t *ip_wire_dst; size_t i; @@ -1113,10 +1113,11 @@ sldns_str2wire_svcbparam_ipv6hint(const char* val, uint8_t* rd, size_t* rd_len) while (count) { if (!(next_ip_str = strchr(val, ','))) { - if (inet_pton(AF_INET, val, rd + *rd_len) != 1) - *rd_len += LDNS_IP6ADDRLEN; + if (inet_pton(AF_INET6, val, rd + *rd_len) != 1) break; + *rd_len += LDNS_IP6ADDRLEN; + assert(count == 1); } else if (next_ip_str - val >= (int)sizeof(ip_str)) @@ -1125,12 +1126,11 @@ sldns_str2wire_svcbparam_ipv6hint(const char* val, uint8_t* rd, size_t* rd_len) else { memcpy(ip_str, val, next_ip_str - val); ip_str[next_ip_str - val] = 0; - if (inet_pton(AF_INET, ip_str, rd + *rd_len) != 1) { - *rd_len += LDNS_IP6ADDRLEN; - + if (inet_pton(AF_INET6, ip_str, rd + *rd_len) != 1) { val = ip_str; /* to use in error reporting below */ break; } + *rd_len += LDNS_IP6ADDRLEN; val = next_ip_str + 1; } From 5f22f3a9cf108903ef107ef1a147674ce637bdde Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Tue, 25 May 2021 10:41:00 +0200 Subject: [PATCH 129/553] Shift data pointer when scanning svcb wire data Also make internal auxilary functions static --- sldns/wire2str.c | 97 +++++++++++++++++++++++------------------------- 1 file changed, 46 insertions(+), 51 deletions(-) diff --git a/sldns/wire2str.c b/sldns/wire2str.c index 0d41a2bb8..a0d3ee3e9 100644 --- a/sldns/wire2str.c +++ b/sldns/wire2str.c @@ -957,19 +957,18 @@ sldns_print_svcparamkey(char** s, size_t* slen, uint16_t svcparamkey) } } -int sldns_wire2str_svcparam_port2str(char** s, - size_t* slen, uint16_t data_len, uint16_t data) +static int sldns_wire2str_svcparam_port2str(char** s, + size_t* slen, uint16_t data_len, uint8_t* data) { int w = 0; if (data_len != 2) return -1; /* wireformat error, a short is 2 bytes */ - w = sldns_str_print(s, slen, "=%d", (int)data); + w = sldns_str_print(s, slen, "=%d", (int)sldns_read_uint16(data)); return w; } -static int -sldns_wire2str_svcparam_ipv4hint2str(char** s, +static int sldns_wire2str_svcparam_ipv4hint2str(char** s, size_t* slen, uint16_t data_len, uint8_t* data) { char ip_str[INET_ADDRSTRLEN + 1]; @@ -998,7 +997,7 @@ sldns_wire2str_svcparam_ipv4hint2str(char** s, return w; } -int sldns_wire2str_svcparam_ipv6hint2str(char** s, +static int sldns_wire2str_svcparam_ipv6hint2str(char** s, size_t* slen, uint16_t data_len, uint8_t* data) { char ip_str[INET6_ADDRSTRLEN + 1]; @@ -1029,7 +1028,7 @@ int sldns_wire2str_svcparam_ipv6hint2str(char** s, return w; } -int sldns_wire2str_svcparam_mandatory2str(char** s, +static int sldns_wire2str_svcparam_mandatory2str(char** s, size_t* slen, uint16_t data_len, uint8_t* data) { int w = 0; @@ -1051,7 +1050,7 @@ int sldns_wire2str_svcparam_mandatory2str(char** s, return w; } -int sldns_wire2str_svcparam_alpn2str(char** s, +static int sldns_wire2str_svcparam_alpn2str(char** s, size_t* slen, uint16_t data_len, uint8_t* data) { uint8_t *dp = (void *)data; @@ -1088,7 +1087,7 @@ int sldns_wire2str_svcparam_alpn2str(char** s, return w; } -int sldns_wire2str_svcparam_ech2str(char** s, +static int sldns_wire2str_svcparam_ech2str(char** s, size_t* slen, uint16_t data_len, uint8_t* data) { int size; @@ -1119,70 +1118,66 @@ int sldns_wire2str_svcparam_ech2str(char** s, int sldns_wire2str_svcparam_scan(uint8_t** d, size_t* dlen, char** s, size_t* slen) { uint16_t svcparamkey, data_len; - uint8_t* data = *d; int written_chars = 0; + int r; - if(*dlen < 4) return 0; /* verify that we actualy have data */ + /* verify that we have enough data to read svcparamkey and data_len */ + if(*dlen < 4) + return -1; - svcparamkey = sldns_read_uint16(data); + svcparamkey = sldns_read_uint16(*d); + data_len = sldns_read_uint16(*d+2); + *d += 4; + *dlen -= 4; + + /* verify that we have data_len data */ + if (data_len > *dlen) + return -1; written_chars += sldns_print_svcparamkey(s, slen, svcparamkey); - - // (*dlen) -= written_chars; - - // @TODO fix this to be dynamic and correct - // fprintf(stderr, "*dlen2: %zu\n", *dlen); - // fprintf(stderr, "data_len %zu\n", data_len); - (*dlen) = 0; - - data_len = sldns_read_uint16(data+2); - - // if (size != val_len + 4) - // return 0; wireformat error - - // if (!data_len) { - // /* Some SvcParams MUST have values */ - // switch (svcparamkey) { - // case SVCB_KEY_ALPN: - // case SVCB_KEY_PORT: - // case SVCB_KEY_IPV4HINT: - // case SVCB_KEY_IPV6HINT: - // case SVCB_KEY_MANDATORY: - // return 0; - // default: - // return 1; - // } - // } - + if (!data_len) { + /* Some SvcParams MUST have values */ + switch (svcparamkey) { + case SVCB_KEY_ALPN: + case SVCB_KEY_PORT: + case SVCB_KEY_IPV4HINT: + case SVCB_KEY_IPV6HINT: + case SVCB_KEY_MANDATORY: + return -1; + default: + return written_chars; + } + } switch (svcparamkey) { case SVCB_KEY_PORT: - written_chars += sldns_wire2str_svcparam_port2str(s, slen, data_len, sldns_read_uint16(data+4)); + r = sldns_wire2str_svcparam_port2str(s, slen, data_len, *d); break; case SVCB_KEY_IPV4HINT: - written_chars += sldns_wire2str_svcparam_ipv4hint2str(s, slen, data_len, data+4); + r = sldns_wire2str_svcparam_ipv4hint2str(s, slen, data_len, *d); break; case SVCB_KEY_IPV6HINT: - written_chars += sldns_wire2str_svcparam_ipv6hint2str(s, slen, data_len, data+4); + r = sldns_wire2str_svcparam_ipv6hint2str(s, slen, data_len, *d); break; case SVCB_KEY_MANDATORY: - written_chars += sldns_wire2str_svcparam_mandatory2str(s, slen, data_len, data+4); + r = sldns_wire2str_svcparam_mandatory2str(s, slen, data_len, *d); break; case SVCB_KEY_NO_DEFAULT_ALPN: - return 0; /* wireformat error, should not have a value */ + return -1; /* wireformat error, should not have a value */ case SVCB_KEY_ALPN: - written_chars += sldns_wire2str_svcparam_alpn2str(s, slen, data_len, data+4); + r = sldns_wire2str_svcparam_alpn2str(s, slen, data_len, *d); break; case SVCB_KEY_ECH: - written_chars += sldns_wire2str_svcparam_ech2str(s, slen, data_len, data+4); + r = sldns_wire2str_svcparam_ech2str(s, slen, data_len, *d); break; default: break; } - - // @TODO set str_len to 0: "If the end of the - // * output string is reached, *str_len is set to 0" - // *slen = 0; - + if (r <= 0) + return -1; /* wireformat error */ + + written_chars += r; + *d += data_len; + *dlen -= data_len; return written_chars; } From 36093b0b8a41a19b8d2cdbc56c05cc98a7e85a39 Mon Sep 17 00:00:00 2001 From: Tom Carpay Date: Tue, 25 May 2021 11:43:46 +0200 Subject: [PATCH 130/553] fix multiple ipv6hints entries --- sldns/str2wire.c | 11 +++++------ sldns/wire2str.c | 4 ++-- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/sldns/str2wire.c b/sldns/str2wire.c index 05a623a2d..dba21a093 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -1087,7 +1087,7 @@ static int sldns_str2wire_svcbparam_ipv6hint(const char* val, uint8_t* rd, size_t* rd_len) { int count; - char ip_str[INET_ADDRSTRLEN+1]; + char ip_str[INET6_ADDRSTRLEN+1]; char *next_ip_str; uint32_t *ip_wire_dst; size_t i; @@ -1113,9 +1113,9 @@ sldns_str2wire_svcbparam_ipv6hint(const char* val, uint8_t* rd, size_t* rd_len) while (count) { if (!(next_ip_str = strchr(val, ','))) { - if (inet_pton(AF_INET, val, rd + *rd_len) != 1) - *rd_len += LDNS_IP6ADDRLEN; + if (inet_pton(AF_INET6, val, rd + *rd_len) != 1) break; + *rd_len += LDNS_IP6ADDRLEN; assert(count == 1); @@ -1125,12 +1125,11 @@ sldns_str2wire_svcbparam_ipv6hint(const char* val, uint8_t* rd, size_t* rd_len) else { memcpy(ip_str, val, next_ip_str - val); ip_str[next_ip_str - val] = 0; - if (inet_pton(AF_INET, ip_str, rd + *rd_len) != 1) { - *rd_len += LDNS_IP6ADDRLEN; - + if (inet_pton(AF_INET6, ip_str, rd + *rd_len) != 1) { val = ip_str; /* to use in error reporting below */ break; } + *rd_len += LDNS_IP6ADDRLEN; val = next_ip_str + 1; } diff --git a/sldns/wire2str.c b/sldns/wire2str.c index 0d41a2bb8..4c5065ee5 100644 --- a/sldns/wire2str.c +++ b/sldns/wire2str.c @@ -1015,14 +1015,14 @@ int sldns_wire2str_svcparam_ipv6hint2str(char** s, return 0; /* wireformat error, incorrect size or inet family */ w += sldns_str_print(s, slen, "=%s", ip_str); - data += LDNS_IP6ADDRLEN / sizeof(uint16_t); + data += LDNS_IP6ADDRLEN; while ((data_len -= LDNS_IP6ADDRLEN) > 0) { if (inet_ntop(AF_INET6, data, ip_str, sizeof(ip_str)) == NULL) return 0; /* wireformat error, incorrect size or inet family */ w += sldns_str_print(s, slen, ",%s", ip_str); - data += LDNS_IP6ADDRLEN / sizeof(uint16_t); + data += LDNS_IP6ADDRLEN; } } From 11b3ebc3869480dec06264cef7b6a7b5f4e22a47 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 25 May 2021 14:35:19 +0200 Subject: [PATCH 131/553] - Move the NSEC3 max iterations count in line with the 150 value used by BIND, Knot and PowerDNS. This sets the default value for it in the configuration to 150 for all key sizes. --- doc/Changelog | 5 +++++ doc/example.conf.in | 2 +- doc/unbound.conf.5.in | 2 +- util/config_file.c | 2 +- 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index fec5e9ab4..7e0383db3 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,8 @@ +25 May 2021: Wouter + - Move the NSEC3 max iterations count in line with the 150 value + used by BIND, Knot and PowerDNS. This sets the default value + for it in the configuration to 150 for all key sizes. + 21 May 2021: Wouter - Test code has -q option for quiet output. diff --git a/doc/example.conf.in b/doc/example.conf.in index f968184a9..96eeebd59 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -614,7 +614,7 @@ server: # keysize. Keep this table very short, as linear search is done. # A message with an NSEC3 with larger count is marked insecure. # List in ascending order the keysize and count values. - # val-nsec3-keysize-iterations: "1024 150 2048 500 4096 2500" + # val-nsec3-keysize-iterations: "1024 150 2048 150 4096 150" # if enabled, ZONEMD verification failures do not block the zone. # zonemd-permissive-mode: no diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 9aa12c65c..efd17c0de 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -1215,7 +1215,7 @@ 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 +by quotes. Default is "1024 150 2048 150 4096 150". This determines the maximum allowed NSEC3 iteration count before a message is simply marked insecure instead of performing the many hashing iterations. The list must be in ascending order and have at least one entry. If you set it to diff --git a/util/config_file.c b/util/config_file.c index 1d6374156..341978d97 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -309,7 +309,7 @@ config_create(void) if(!(cfg->module_conf = strdup("validator iterator"))) goto error_exit; #endif if(!(cfg->val_nsec3_key_iterations = - strdup("1024 150 2048 500 4096 2500"))) goto error_exit; + strdup("1024 150 2048 150 4096 150"))) goto error_exit; #if defined(DNSTAP_SOCKET_PATH) if(!(cfg->dnstap_socket_path = strdup(DNSTAP_SOCKET_PATH))) goto error_exit; From 182a78f1dc9e3163854739cd0dce156aef09f332 Mon Sep 17 00:00:00 2001 From: Havard Eidnes Date: Tue, 25 May 2021 14:51:31 +0200 Subject: [PATCH 132/553] Transplant parts of the contributed RPZ documentation. This comes from the doc/IP-BasedActions.pdf file with minor adaptations. --- doc/unbound.conf.5.in | 102 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 94 insertions(+), 8 deletions(-) diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 9aa12c65c..7c868e820 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -1027,6 +1027,7 @@ from the query ID, for speed and thread safety). Default is yes. .TP .B minimal-responses: \fI If yes, Unbound doesn't insert authority/additional sections into response +.\" ' messages when those sections are not required. This reduces response size significantly, and may avoid TCP fallback for some responses. This may cause a slight speedup. The default is yes, even though the DNS @@ -1044,15 +1045,24 @@ of this setting, if a trust anchor is loaded. .TP .B module\-config: \fI<"module names"> Module configuration, a list of module names separated by spaces, surround -the string with quotes (""). The modules can be validator, iterator. -Setting this to "iterator" will result in a non\-validating server. -Setting this to "validator iterator" will turn on DNSSEC validation. -The ordering of the modules is important. -You must also set trust\-anchors for validation to be useful. -The default is "validator iterator". When the server is built with -EDNS client subnet support the default is "subnetcache validator iterator". +the string with quotes (""). The modules can be \fIrespip\fR, +\fIvalidator\fR, or \fIiterator\fR (and possibly more, see below). +Setting this to just "\fIiterator\fR" will result in a non\-validating +server. +Setting this to "\fIvalidator iterator\fR" will turn on DNSSEC validation. +The ordering of the modules is significant, the order decides the +order of processing. +You must also set \fItrust\-anchors\fR for validation to be useful. +Adding \fIrespip\fR to the front will cause RPZ processing to be done on +all queries. +The default is "\fIvalidator iterator\fR". +.IP +When the server is built with +EDNS client subnet support the default is "\fIsubnetcache validator +iterator\fR". Most modules that need to be listed here have to be listed at the beginning -of the line. The cachedb module has to be listed just before the iterator. +of the line. The subnetcachedb module has to be listed just before +the iterator. The python module can be listed in different places, it then processes the output of the module it is just before. The dynlib module can be listed pretty much anywhere, it is only a very thin wrapper that allows dynamic libraries to @@ -1527,6 +1537,82 @@ Use this localzone type, regardless the type configured for the local-zone (both tagged and untagged) and regardless the type configured using access\-control\-tag\-action. .TP 5 +.B response\-ip: \fI +This requires use of the "respip" module. +.IP +If the IP address in an AAAA or A RR in the answer section of a +response matches the specified IP netblock, the specified action will +apply. +\fI\fR has generally the same semantics as that for +\fIaccess-control-tag-action\fR, but there are some exceptions. +.IP +Actions for \fIresponse-ip\fR are different from those for +\fIlocal-zone\fR in that in case of the former there is no point of +such conditions as "the query matches it but there is no local data". +Because of this difference, the semantics of \fIresponse-ip\fR actions +are modified or simplified as follows: The \fIstatic, refuse, +transparent, typetransparent,\fR and \fInodefault\fR actions are +invalid for \fIresponse-ip\fR. +Using any of these will cause the configuration to be rejected as +faulty. The \fIdeny\fR action is non-conditional, i.e. it always +results in dropping the corresponding query. +The resolution result before applying the deny action is still cached +and can be used for other queries. +.TP 5 +.B response-ip-data: \fI <"resource record string"> +This requires use of the "respip" module. +.IP +This specifies the action data for \fIresponse-ip\fR with action being +to redirect as specified by "\fIresource record string\fR". "Resource +record string" is similar to that of \fIaccess-control-tag-action\fR, +but it must be of either AAAA, A or CNAME types. +If the IP-netblock is an IPv6/IPV4 prefix, the record +must be AAAA/A respectively, unless it is a CNAME (which can be used +for both versions of IP netblocks). If it is CNAME there must not be +more than one \fIresponse-ip-data\fR for the same IP-netblock. +Also, CNAME and other types of records must not coexist for the same +IP-netblock, following the normal rules for CNAME records. +The textual domain name for the CNAME does not have to be explicitly +terminated with a dot ("."); the root name is assumed to be the origin +for the name. +.TP 5 +.B response-ip-tag: \fI <"list of tags"> +This requires use of the "respip" module. +.IP +Assign tags to response IP-netblocks. If the IP address in an AAAA or +A RR in the answer section of a response matches the specified +IP-netblock, the specified tags are assigned to the IP address. +Then, if an \fIaccess-control-tag\fR is defined for the client and it +includes one of the tags for the response IP, the corresponding +\fIaccess-control-tag-action\fR will apply. +Tag matching rule is the same as that for \fIaccess-control-tag\fR and +\fIlocal-zones\fR. +Unlike \fIlocal-zone-tag\fR, \fIresponse-ip-tag\fR can be defined for +an IP-netblock even if no \fIresponse-ip\fR is defined for that +netblock. +If multiple \fIresponse-ip-tag\fR options are specified for the same +IP-netblock in different statements, all but the first will be +ignored. +However, this will not be flagged as a configuration error, but the +result is probably not what was intended. +.IP +Actions specified in an +\fIaccess-control-tag-action\fR that has a matching tag with +\fIresponse-ip-tag\fR can be those that are "invalid" for +\fIresponse-ip\fR listed above, since \fIaccess-control-tag-action\fRs +can be shared with local zones. +For these actions, if they behave differently depending on whether +local data exists or not in case of local zones, the behavior for +\fIresponse-ip-data\fR will generally result in NOERROR/NODATA instead +of NXDOMAIN, since the \fIresponse-ip\fR data are inherently type +specific, and non-existence of data does not indicate anything about +the existence or non-existence of the qname itself. +For example, if the matching tag action is \fIstatic\fR but there is +no data for the corresponding \fIresponse-ip\fR configuration, then +the result will be NOERROR/NODATA. +The only case where NXDOMAIN is returned is when an +\fIalways_nxdomain\fR action applies. +.TP 5 .B ratelimit: \fI Enable ratelimiting of queries sent to nameserver for performing recursion. If 0, the default, it is disabled. This option is experimental at this time. From 58eeeeb9898e23d69e1dacf9ecdff1c746b861b1 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 25 May 2021 15:06:57 +0200 Subject: [PATCH 133/553] - Fix #492: module-config respip missing in unbound.conf.5.in man page. Merges #494 from he32. Remove comment line (?) from man page. --- doc/Changelog | 2 ++ doc/unbound.conf.5.in | 1 - 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 7e0383db3..cffaacbf8 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -2,6 +2,8 @@ - Move the NSEC3 max iterations count in line with the 150 value used by BIND, Knot and PowerDNS. This sets the default value for it in the configuration to 150 for all key sizes. + - Fix #492: module-config respip missing in unbound.conf.5.in man + page. Merges #494 from he32. 21 May 2021: Wouter - Test code has -q option for quiet output. diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 8cf99503a..435bff8d9 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -1027,7 +1027,6 @@ from the query ID, for speed and thread safety). Default is yes. .TP .B minimal-responses: \fI If yes, Unbound doesn't insert authority/additional sections into response -.\" ' messages when those sections are not required. This reduces response size significantly, and may avoid TCP fallback for some responses. This may cause a slight speedup. The default is yes, even though the DNS From 71904eb0d4cf3415a63e3f417a1e5c75d86b4f65 Mon Sep 17 00:00:00 2001 From: Tom Carpay Date: Tue, 25 May 2021 15:44:49 +0200 Subject: [PATCH 134/553] add svcb tpkg tests --- testdata/svcb.tdir/crypto.cloudflare.com.zone | 9 + testdata/svcb.tdir/failure-cases.zone | 95 +++++++ testdata/svcb.tdir/svcb.dsc | 16 ++ testdata/svcb.tdir/svcb.failure-cases-01 | 10 + testdata/svcb.tdir/svcb.failure-cases-02 | 8 + testdata/svcb.tdir/svcb.failure-cases-03 | 8 + testdata/svcb.tdir/svcb.failure-cases-04 | 8 + testdata/svcb.tdir/svcb.failure-cases-05 | 8 + testdata/svcb.tdir/svcb.failure-cases-06 | 8 + testdata/svcb.tdir/svcb.failure-cases-07 | 8 + testdata/svcb.tdir/svcb.failure-cases-08 | 8 + testdata/svcb.tdir/svcb.failure-cases-09 | 9 + testdata/svcb.tdir/svcb.failure-cases-10 | 10 + testdata/svcb.tdir/svcb.failure-cases-11 | 10 + testdata/svcb.tdir/svcb.failure-cases-12 | 8 + testdata/svcb.tdir/svcb.failure-cases-13 | 8 + testdata/svcb.tdir/svcb.failure-cases-14 | 8 + testdata/svcb.tdir/svcb.failure-cases-15 | 8 + testdata/svcb.tdir/svcb.failure-cases-16 | 8 + testdata/svcb.tdir/svcb.failure-cases-17 | 8 + testdata/svcb.tdir/svcb.failure-cases-18 | 8 + testdata/svcb.tdir/svcb.failure-cases-19 | 9 + testdata/svcb.tdir/svcb.failure-cases-20 | 10 + testdata/svcb.tdir/svcb.failure-cases-21 | 9 + testdata/svcb.tdir/svcb.failure-cases-22 | 8 + testdata/svcb.tdir/svcb.success-cases.zone | 40 +++ .../svcb.tdir/svcb.success-cases.zone.cmp | 12 + testdata/svcb.tdir/svcb.test | 234 ++++++++++++++++++ testdata/svcb.tdir/svcb.test-vectors-pf.zone | 92 +++++++ testdata/svcb.tdir/svcb.test-vectors-wf.zone | 232 +++++++++++++++++ 30 files changed, 917 insertions(+) create mode 100644 testdata/svcb.tdir/crypto.cloudflare.com.zone create mode 100644 testdata/svcb.tdir/failure-cases.zone create mode 100644 testdata/svcb.tdir/svcb.dsc create mode 100644 testdata/svcb.tdir/svcb.failure-cases-01 create mode 100644 testdata/svcb.tdir/svcb.failure-cases-02 create mode 100644 testdata/svcb.tdir/svcb.failure-cases-03 create mode 100644 testdata/svcb.tdir/svcb.failure-cases-04 create mode 100644 testdata/svcb.tdir/svcb.failure-cases-05 create mode 100644 testdata/svcb.tdir/svcb.failure-cases-06 create mode 100644 testdata/svcb.tdir/svcb.failure-cases-07 create mode 100644 testdata/svcb.tdir/svcb.failure-cases-08 create mode 100644 testdata/svcb.tdir/svcb.failure-cases-09 create mode 100644 testdata/svcb.tdir/svcb.failure-cases-10 create mode 100644 testdata/svcb.tdir/svcb.failure-cases-11 create mode 100644 testdata/svcb.tdir/svcb.failure-cases-12 create mode 100644 testdata/svcb.tdir/svcb.failure-cases-13 create mode 100644 testdata/svcb.tdir/svcb.failure-cases-14 create mode 100644 testdata/svcb.tdir/svcb.failure-cases-15 create mode 100644 testdata/svcb.tdir/svcb.failure-cases-16 create mode 100644 testdata/svcb.tdir/svcb.failure-cases-17 create mode 100644 testdata/svcb.tdir/svcb.failure-cases-18 create mode 100644 testdata/svcb.tdir/svcb.failure-cases-19 create mode 100644 testdata/svcb.tdir/svcb.failure-cases-20 create mode 100644 testdata/svcb.tdir/svcb.failure-cases-21 create mode 100644 testdata/svcb.tdir/svcb.failure-cases-22 create mode 100644 testdata/svcb.tdir/svcb.success-cases.zone create mode 100644 testdata/svcb.tdir/svcb.success-cases.zone.cmp create mode 100644 testdata/svcb.tdir/svcb.test create mode 100644 testdata/svcb.tdir/svcb.test-vectors-pf.zone create mode 100644 testdata/svcb.tdir/svcb.test-vectors-wf.zone diff --git a/testdata/svcb.tdir/crypto.cloudflare.com.zone b/testdata/svcb.tdir/crypto.cloudflare.com.zone new file mode 100644 index 000000000..53c89c735 --- /dev/null +++ b/testdata/svcb.tdir/crypto.cloudflare.com.zone @@ -0,0 +1,9 @@ +crypto.cloudflare.com. 3600 IN SOA jobs.ns.cloudflare.com. dns.cloudflare.com. ( + 2037099480 ; serial + 10000 ; refresh (2 hours 46 minutes 40 seconds) + 2400 ; retry (40 minutes) + 604800 ; expire (1 week) + 3600 ; minimum (1 hour) + ) +crypto.cloudflare.com. 300 IN HTTPS 1 . alpn=h2 ipv4hint=162.159.135.79,162.159.136.79 echconfig=AEj+CgBETwAgACDeVpr34JzYHDGNFoGWhksj5mpBxradonbqH3X9+h7jHgAEAAEAAQAAABNjbG91ZGZsYXJlLWVzbmkuY29tAAA= ipv6hint=2606:4700:7::a29f:874f,2606:4700:7::a29f:884f + diff --git a/testdata/svcb.tdir/failure-cases.zone b/testdata/svcb.tdir/failure-cases.zone new file mode 100644 index 000000000..9ca222ea9 --- /dev/null +++ b/testdata/svcb.tdir/failure-cases.zone @@ -0,0 +1,95 @@ +$ORIGIN failure-cases. +$TTL 3600 + + +@ SOA primary admin 1 3600 1800 7200 3600 + NS primary +primary A 127.0.0.1 + +; This example has multiple instances of the same SvcParamKey + +f01 SVCB 1 foo.example.com. ( + key123=abc key123=def + ) +; In the next examples the SvcParamKeys are missing their values. + +f02 SVCB 1 foo.example.com. mandatory + +; In the next examples the SvcParamKeys are missing their values. + +f03 SVCB 1 foo.example.com. alpn + +; In the next examples the SvcParamKeys are missing their values. + +f04 SVCB 1 foo.example.com. port + +; In the next examples the SvcParamKeys are missing their values. + +f05 SVCB 1 foo.example.com. ipv4hint + +; In the next examples the SvcParamKeys are missing their values. + +f06 SVCB 1 foo.example.com. ipv6hint + +; The "no-default-alpn" SvcParamKey value MUST be empty + +f07 SVCB 1 foo.example.com. no-default-alpn=abc + +; In this record a mandatory SvcParam is missing + +f08 SVCB 1 foo.example.com. mandatory=key123 + +; The "mandatory" SvcParamKey MUST not be included in mandatory list + +f09 SVCB 1 foo.example.com. mandatory=mandatory + +; Here there are multiple instances of the same SvcParamKey in the mandatory list + +f10 SVCB 1 foo.example.com. ( + mandatory=key123,key123 key123=abc + ) + +; This example has multiple instances of the same SvcParamKey + +f11 HTTPS 1 foo.example.com. ( + key123=abc key123=def + ) + +; In the next examples the SvcParamKeys are missing their values. + +f12 HTTPS 1 foo.example.com. mandatory + +; In the next examples the SvcParamKeys are missing their values. + +f13 HTTPS 1 foo.example.com. alpn + +; In the next examples the SvcParamKeys are missing their values. + +f14 HTTPS 1 foo.example.com. port + +; In the next examples the SvcParamKeys are missing their values. + +f15 HTTPS 1 foo.example.com. ipv4hint + +; In the next examples the SvcParamKeys are missing their values. + +f16 HTTPS 1 foo.example.com. ipv6hint + +; The "no-default-alpn" SvcParamKey value MUST be empty + +f17 HTTPS 1 foo.example.com. no-default-alpn=abc + +; In this record a mandatory SvcParam is missing + +f18 HTTPS 1 foo.example.com. mandatory=key123 + +; The "mandatory" SvcParamKey MUST not be included in mandatory list + +f19 HTTPS 1 foo.example.com. mandatory=mandatory + +; Here there are multiple instances of the same SvcParamKey in the mandatory list + +f20 HTTPS 1 foo.example.com. ( + mandatory=key123,key123 key123=abc + ) + diff --git a/testdata/svcb.tdir/svcb.dsc b/testdata/svcb.tdir/svcb.dsc new file mode 100644 index 000000000..6eae7638e --- /dev/null +++ b/testdata/svcb.tdir/svcb.dsc @@ -0,0 +1,16 @@ +BaseName: svcb +Version: 1.0 +Description: Test SVCB and HTTPS parsing +CreationDate: Fri May 25 12:51:22 UTC 2021 +Maintainer: Tom Carpay +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: +Post: +Test: svcb.test +AuxFiles: +Passed: +Failure: diff --git a/testdata/svcb.tdir/svcb.failure-cases-01 b/testdata/svcb.tdir/svcb.failure-cases-01 new file mode 100644 index 000000000..497098b1f --- /dev/null +++ b/testdata/svcb.tdir/svcb.failure-cases-01 @@ -0,0 +1,10 @@ +$ORIGIN failure-cases. +$TTL 3600 + +@ SOA primary admin 0 0 0 0 0 + +; This example has multiple instances of the same SvcParamKey + +f01 SVCB 1 foo.example.com. ( + key123=abc key123=def + ) diff --git a/testdata/svcb.tdir/svcb.failure-cases-02 b/testdata/svcb.tdir/svcb.failure-cases-02 new file mode 100644 index 000000000..73656171f --- /dev/null +++ b/testdata/svcb.tdir/svcb.failure-cases-02 @@ -0,0 +1,8 @@ +$ORIGIN failure-cases. +$TTL 3600 + +@ SOA primary admin 0 0 0 0 0 + +; In the next examples the SvcParamKeys are missing their values. + +f02 SVCB 1 foo.example.com. mandatory diff --git a/testdata/svcb.tdir/svcb.failure-cases-03 b/testdata/svcb.tdir/svcb.failure-cases-03 new file mode 100644 index 000000000..8ae6c4ab2 --- /dev/null +++ b/testdata/svcb.tdir/svcb.failure-cases-03 @@ -0,0 +1,8 @@ +$ORIGIN failure-cases. +$TTL 3600 + +@ SOA primary admin 0 0 0 0 0 + +; In the next examples the SvcParamKeys are missing their values. + +f03 SVCB 1 foo.example.com. alpn diff --git a/testdata/svcb.tdir/svcb.failure-cases-04 b/testdata/svcb.tdir/svcb.failure-cases-04 new file mode 100644 index 000000000..5aa32a83e --- /dev/null +++ b/testdata/svcb.tdir/svcb.failure-cases-04 @@ -0,0 +1,8 @@ +$ORIGIN failure-cases. +$TTL 3600 + +@ SOA primary admin 0 0 0 0 0 + +; In the next examples the SvcParamKeys are missing their values. + +f04 SVCB 1 foo.example.com. port diff --git a/testdata/svcb.tdir/svcb.failure-cases-05 b/testdata/svcb.tdir/svcb.failure-cases-05 new file mode 100644 index 000000000..4b2f95cc0 --- /dev/null +++ b/testdata/svcb.tdir/svcb.failure-cases-05 @@ -0,0 +1,8 @@ +$ORIGIN failure-cases. +$TTL 3600 + +@ SOA primary admin 0 0 0 0 0 + +; In the next examples the SvcParamKeys are missing their values. + +f05 SVCB 1 foo.example.com. ipv4hint diff --git a/testdata/svcb.tdir/svcb.failure-cases-06 b/testdata/svcb.tdir/svcb.failure-cases-06 new file mode 100644 index 000000000..a111846f1 --- /dev/null +++ b/testdata/svcb.tdir/svcb.failure-cases-06 @@ -0,0 +1,8 @@ +$ORIGIN failure-cases. +$TTL 3600 + +@ SOA primary admin 0 0 0 0 0 + +; In the next examples the SvcParamKeys are missing their values. + +f06 SVCB 1 foo.example.com. ipv6hint diff --git a/testdata/svcb.tdir/svcb.failure-cases-07 b/testdata/svcb.tdir/svcb.failure-cases-07 new file mode 100644 index 000000000..a8512ad4c --- /dev/null +++ b/testdata/svcb.tdir/svcb.failure-cases-07 @@ -0,0 +1,8 @@ +$ORIGIN failure-cases. +$TTL 3600 + +@ SOA primary admin 0 0 0 0 0 + +; The "no-default-alpn" SvcParamKey value MUST be empty + +f07 SVCB 1 foo.example.com. no-default-alpn=abc diff --git a/testdata/svcb.tdir/svcb.failure-cases-08 b/testdata/svcb.tdir/svcb.failure-cases-08 new file mode 100644 index 000000000..4bbf618cd --- /dev/null +++ b/testdata/svcb.tdir/svcb.failure-cases-08 @@ -0,0 +1,8 @@ +$ORIGIN failure-cases. +$TTL 3600 + +@ SOA primary admin 0 0 0 0 0 + +; In this record a mandatory SvcParam is missing + +f08 SVCB 1 foo.example.com. mandatory=key123 diff --git a/testdata/svcb.tdir/svcb.failure-cases-09 b/testdata/svcb.tdir/svcb.failure-cases-09 new file mode 100644 index 000000000..408e937d4 --- /dev/null +++ b/testdata/svcb.tdir/svcb.failure-cases-09 @@ -0,0 +1,9 @@ +$ORIGIN failure-cases. +$TTL 3600 + +@ SOA primary admin 0 0 0 0 0 + +; The "mandatory" SvcParamKey MUST not be included in mandatory list + +f09 SVCB 1 foo.example.com. mandatory=mandatory + diff --git a/testdata/svcb.tdir/svcb.failure-cases-10 b/testdata/svcb.tdir/svcb.failure-cases-10 new file mode 100644 index 000000000..b1e6ccf5f --- /dev/null +++ b/testdata/svcb.tdir/svcb.failure-cases-10 @@ -0,0 +1,10 @@ +$ORIGIN failure-cases. +$TTL 3600 + +@ SOA primary admin 0 0 0 0 0 + +; Here there are multiple instances of the same SvcParamKey in the mandatory list + +f10 SVCB 1 foo.example.com. ( + mandatory=key123,key123 key123=abc + ) diff --git a/testdata/svcb.tdir/svcb.failure-cases-11 b/testdata/svcb.tdir/svcb.failure-cases-11 new file mode 100644 index 000000000..ee4d5a431 --- /dev/null +++ b/testdata/svcb.tdir/svcb.failure-cases-11 @@ -0,0 +1,10 @@ +$ORIGIN failure-cases. +$TTL 3600 + +@ SOA primary admin 0 0 0 0 0 + +; This example has multiple instances of the same SvcParamKey + +f01 HTTPS 1 foo.example.com. ( + key123=abc key123=def + ) diff --git a/testdata/svcb.tdir/svcb.failure-cases-12 b/testdata/svcb.tdir/svcb.failure-cases-12 new file mode 100644 index 000000000..e57fa8819 --- /dev/null +++ b/testdata/svcb.tdir/svcb.failure-cases-12 @@ -0,0 +1,8 @@ +$ORIGIN failure-cases. +$TTL 3600 + +@ SOA primary admin 0 0 0 0 0 + +; In the next examples the SvcParamKeys are missing their values. + +f02 HTTPS 1 foo.example.com. mandatory diff --git a/testdata/svcb.tdir/svcb.failure-cases-13 b/testdata/svcb.tdir/svcb.failure-cases-13 new file mode 100644 index 000000000..52f3e6242 --- /dev/null +++ b/testdata/svcb.tdir/svcb.failure-cases-13 @@ -0,0 +1,8 @@ +$ORIGIN failure-cases. +$TTL 3600 + +@ SOA primary admin 0 0 0 0 0 + +; In the next examples the SvcParamKeys are missing their values. + +f03 HTTPS 1 foo.example.com. alpn diff --git a/testdata/svcb.tdir/svcb.failure-cases-14 b/testdata/svcb.tdir/svcb.failure-cases-14 new file mode 100644 index 000000000..3525d26d3 --- /dev/null +++ b/testdata/svcb.tdir/svcb.failure-cases-14 @@ -0,0 +1,8 @@ +$ORIGIN failure-cases. +$TTL 3600 + +@ SOA primary admin 0 0 0 0 0 + +; In the next examples the SvcParamKeys are missing their values. + +f04 HTTPS 1 foo.example.com. port diff --git a/testdata/svcb.tdir/svcb.failure-cases-15 b/testdata/svcb.tdir/svcb.failure-cases-15 new file mode 100644 index 000000000..1ab513725 --- /dev/null +++ b/testdata/svcb.tdir/svcb.failure-cases-15 @@ -0,0 +1,8 @@ +$ORIGIN failure-cases. +$TTL 3600 + +@ SOA primary admin 0 0 0 0 0 + +; In the next examples the SvcParamKeys are missing their values. + +f05 HTTPS 1 foo.example.com. ipv4hint diff --git a/testdata/svcb.tdir/svcb.failure-cases-16 b/testdata/svcb.tdir/svcb.failure-cases-16 new file mode 100644 index 000000000..78bed5c24 --- /dev/null +++ b/testdata/svcb.tdir/svcb.failure-cases-16 @@ -0,0 +1,8 @@ +$ORIGIN failure-cases. +$TTL 3600 + +@ SOA primary admin 0 0 0 0 0 + +; In the next examples the SvcParamKeys are missing their values. + +f06 HTTPS 1 foo.example.com. ipv6hint diff --git a/testdata/svcb.tdir/svcb.failure-cases-17 b/testdata/svcb.tdir/svcb.failure-cases-17 new file mode 100644 index 000000000..84aede049 --- /dev/null +++ b/testdata/svcb.tdir/svcb.failure-cases-17 @@ -0,0 +1,8 @@ +$ORIGIN failure-cases. +$TTL 3600 + +@ SOA primary admin 0 0 0 0 0 + +; The "no-default-alpn" SvcParamKey value MUST be empty + +f07 HTTPS 1 foo.example.com. no-default-alpn=abc diff --git a/testdata/svcb.tdir/svcb.failure-cases-18 b/testdata/svcb.tdir/svcb.failure-cases-18 new file mode 100644 index 000000000..0ecbc545f --- /dev/null +++ b/testdata/svcb.tdir/svcb.failure-cases-18 @@ -0,0 +1,8 @@ +$ORIGIN failure-cases. +$TTL 3600 + +@ SOA primary admin 0 0 0 0 0 + +; In this record a mandatory SvcParam is missing + +f08 HTTPS 1 foo.example.com. mandatory=key123 diff --git a/testdata/svcb.tdir/svcb.failure-cases-19 b/testdata/svcb.tdir/svcb.failure-cases-19 new file mode 100644 index 000000000..576556490 --- /dev/null +++ b/testdata/svcb.tdir/svcb.failure-cases-19 @@ -0,0 +1,9 @@ +$ORIGIN failure-cases. +$TTL 3600 + +@ SOA primary admin 0 0 0 0 0 + +; The "mandatory" SvcParamKey MUST not be included in mandatory list + +f09 HTTPS 1 foo.example.com. mandatory=mandatory + diff --git a/testdata/svcb.tdir/svcb.failure-cases-20 b/testdata/svcb.tdir/svcb.failure-cases-20 new file mode 100644 index 000000000..fc4781eaa --- /dev/null +++ b/testdata/svcb.tdir/svcb.failure-cases-20 @@ -0,0 +1,10 @@ +$ORIGIN failure-cases. +$TTL 3600 + +@ SOA primary admin 0 0 0 0 0 + +; Here there are multiple instances of the same SvcParamKey in the mandatory list + +f10 HTTPS 1 foo.example.com. ( + mandatory=key123,key123 key123=abc + ) diff --git a/testdata/svcb.tdir/svcb.failure-cases-21 b/testdata/svcb.tdir/svcb.failure-cases-21 new file mode 100644 index 000000000..c60151692 --- /dev/null +++ b/testdata/svcb.tdir/svcb.failure-cases-21 @@ -0,0 +1,9 @@ +$ORIGIN failure-cases. +$TTL 3600 + +@ SOA primary admin 0 0 0 0 0 + +; Here there are multiple instances of the same SvcParamKey in the mandatory list + +f21 HTTPS 1 foo.example.com. ech="123" +f21 HTTPS 1 foo.example.com. echconfig="123" diff --git a/testdata/svcb.tdir/svcb.failure-cases-22 b/testdata/svcb.tdir/svcb.failure-cases-22 new file mode 100644 index 000000000..d01b69700 --- /dev/null +++ b/testdata/svcb.tdir/svcb.failure-cases-22 @@ -0,0 +1,8 @@ +$ORIGIN failure-cases. +$TTL 3600 + +@ SOA primary admin 0 0 0 0 0 + +; Port mus be a positive number < 65536 + +f22 HTTPS 1 foo.example.com. port=65536 diff --git a/testdata/svcb.tdir/svcb.success-cases.zone b/testdata/svcb.tdir/svcb.success-cases.zone new file mode 100644 index 000000000..0a96659d8 --- /dev/null +++ b/testdata/svcb.tdir/svcb.success-cases.zone @@ -0,0 +1,40 @@ +$ORIGIN success-cases. +$TTL 3600 + +@ SOA primary admin 0 0 0 0 0 + + +; A particular key does not need to have a value + +s01 SVCB 0 . key123 + + +; echconfig does not need to have a value + +s02 SVCB 0 . echconfig + + +; When "no-default-alpn" is specified in an RR, "alpn" must also be specified +; in order for the RR to be "self-consistent" + +s03 HTTPS 0 . alpn="h2,h3" no-default-alpn + + +; SHOULD is not MUST (so allowed) +; Zone-file implementations SHOULD enforce self-consistency + +s04 HTTPS 0 . no-default-alpn + + +; SHOULD is not MUST (so allowed) +; (port and no-default-alpn are automatically mandatory keys with HTTPS) +; Other automatically mandatory keys SHOULD NOT appear in the list either. + +s05 HTTPS 0 . alpn="dot" no-default-alpn port=853 mandatory=port + +; Any valid base64 is okay for ech +s06 HTTPS 0 . ech="aGVsbG93b3JsZCE=" + +; echconfig is an alias for ech +s07 HTTPS 0 . echconfig="aGVsbG93b3JsZCE=" + diff --git a/testdata/svcb.tdir/svcb.success-cases.zone.cmp b/testdata/svcb.tdir/svcb.success-cases.zone.cmp new file mode 100644 index 000000000..540b541c4 --- /dev/null +++ b/testdata/svcb.tdir/svcb.success-cases.zone.cmp @@ -0,0 +1,12 @@ +$ORIGIN . +success-cases 3600 IN SOA primary.success-cases. admin.success-cases. ( + 0 0 0 0 0 ) +$ORIGIN success-cases. +s01 3600 IN SVCB 0 . key123 +s02 3600 IN SVCB 0 . ech +s03 3600 IN HTTPS 0 . alpn="h2,h3" no-default-alpn +s04 3600 IN HTTPS 0 . no-default-alpn +s05 3600 IN HTTPS 0 . mandatory=port alpn="dot" no-default-alpn port=853 +s06 3600 IN HTTPS 0 . ech=aGVsbG93b3JsZCE= +s07 3600 IN HTTPS 0 . ech=aGVsbG93b3JsZCE= +; zone success-cases is ok diff --git a/testdata/svcb.tdir/svcb.test b/testdata/svcb.tdir/svcb.test new file mode 100644 index 000000000..48a754512 --- /dev/null +++ b/testdata/svcb.tdir/svcb.test @@ -0,0 +1,234 @@ +# #-- svcb.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 + + +# check and write the test vectors in their respective formats +PRE=../.. +if ! $PRE/readzone svcb.test-vectors-pf.zone > svcb.test-vectors-pf.zone.out +then + echo "Could not parse presentation format zone" + exit 1 + +elif ! $PRE/readzone svcb.test-vectors-pf.zone.out > svcb.test-vectors-pf.zone.out.out +then + echo "Could not parse output from presentation format zone" + exit 1 + +elif ! $PRE/readzone svcb.test-vectors-wf.zone > svcb.test-vectors-wf.zone.out +then + echo "Could not parse RFC3597 formatted zone" + exit 1 + +elif ! $PRE/readzone svcb.test-vectors-wf.zone.out > svcb.test-vectors-wf.zone.out.out +then + echo "Could not parse output from RFC3597 formatted zone" + exit 1 +else + echo "All test zones parsed successfully" +fi + + +# check the formatting of the written files +if ! diff svcb.test-vectors-pf.zone.out svcb.test-vectors-pf.zone.out.out +then + echo "Parsing inconsistency 1" + exit 1 + +elif ! diff svcb.test-vectors-pf.zone.out svcb.test-vectors-wf.zone.out +then + echo "Parsing inconsistency 2" + exit 1 + +elif ! diff svcb.test-vectors-pf.zone.out svcb.test-vectors-wf.zone.out.out +then + echo "Parsing inconsistency 3" + exit 1 +else + echo "Parsing of SVCB and HTTPS was consistent" +fi + + +# check all the failure cases +if svcb.failure-cases-01 +then + echo "Failure case 1: Multiple instances of the same SvcParamKey" + echo "Incorrectly succeeded" + exit 1 + +elif $PRE/readzone svcb.failure-cases-02 +then + echo "Failure case 2: a SvcParamKey is missing a value" + echo "Incorrectly succeeded" + exit 1 + +elif $PRE/readzone svcb.failure-cases-03 +then + echo "Failure case 3: a SvcParamKey is missing a value" + echo "Incorrectly succeeded" + exit 1 + +elif $PRE/readzone svcb.failure-cases-04 +then + echo "Failure case 4: a SvcParamKey is missing a value" + echo "Incorrectly succeeded" + exit 1 + +elif $PRE/readzone svcb.failure-cases-05 +then + echo "Failure case 5: a SvcParamKey is missing a value" + echo "Incorrectly succeeded" + exit 1 + +elif $PRE/readzone svcb.failure-cases-06 +then + echo "Failure case 6: a SvcParamKey is missing a value" + echo "Incorrectly succeeded" + exit 1 + +elif $PRE/readzone svcb.failure-cases-07 +then + echo "Failure case 7: The \no-default-alpn\" SvcParamKey value MUST be empty + echo "Incorrectly succeeded" + exit 1 + +elif $PRE/readzone svcb.failure-cases-08 +then + echo "Failure case 8: a mandatory SvcParam is missing" + echo "Incorrectly succeeded" + exit 1 + +elif $PRE/readzone svcb.failure-cases-09 +then + echo "Failure case 9: The \"mandatory\" SvcParamKey MUST not be included in mandatory list" + echo "Incorrectly succeeded" + exit 1 + +elif $PRE/readzone svcb.failure-cases-10 +then + echo "Failure case 10: multiple instances of the same SvcParamKey in the mandatory list" + echo "Incorrectly succeeded" + exit 1 + +elif $PRE/readzone svcb.failure-cases-11 +then + echo "Failure case 11: Multiple instances of the same SvcParamKey" + echo "Incorrectly succeeded" + exit 1 + +elif $PRE/readzone svcb.failure-cases-12 +then + echo "Failure case 12: a SvcParamKey is missing a value" + echo "Incorrectly succeeded" + exit 1 + +elif $PRE/readzone svcb.failure-cases-13 +then + echo "Failure case 13: a SvcParamKey is missing a value" + echo "Incorrectly succeeded" + exit 1 + +elif $PRE/readzone svcb.failure-cases-14 +then + echo "Failure case 14: a SvcParamKey is missing a value" + echo "Incorrectly succeeded" + exit 1 + +elif $PRE/readzone svcb.failure-cases-15 +then + echo "Failure case 15: a SvcParamKey is missing a value" + echo "Incorrectly succeeded" + exit 1 + +elif $PRE/readzone svcb.failure-cases-16 +then + echo "Failure case 16: a SvcParamKey is missing a value" + echo "Incorrectly succeeded" + exit 1 + +elif $PRE/readzone svcb.failure-cases-17 +then + echo "Failure case 17: The \no-default-alpn\" SvcParamKey value MUST be empty + echo "Incorrectly succeeded" + exit 1 + +elif $PRE/readzone svcb.failure-cases-18 +then + echo "Failure case 18: a mandatory SvcParam is missing" + echo "Incorrectly succeeded" + exit 1 + +elif $PRE/readzone svcb.failure-cases-19 +then + echo "Failure case 19: The \"mandatory\" SvcParamKey MUST not be included in mandatory list" + echo "Incorrectly succeeded" + exit 1 + +elif $PRE/readzone svcb.failure-cases-20 +then + echo "Failure case 20: multiple instances of the same SvcParamKey in the mandatory list" + echo "Incorrectly succeeded" + exit 1 + +elif $PRE/readzone svcb.failure-cases-21 +then + echo "Failure case 21: ech value is not base64 encoded" + echo "Incorrectly succeeded" + exit 1 + +elif $PRE/readzone svcb.failure-cases-22 +then + echo "Failure case 22: port value needs to be a positive integer < 65536" + echo "Incorrectly succeeded" + exit 1 +else + echo "All failure cases test successfully" +fi + + +# check all the succes and write them +if ! $PRE/nsd-checkzone -p success-cases svcb.success-cases.zone > svcb.success-cases.zone.out +then + echo "Some particular success cases did not succeed to parse" + exit 1 + +elif ! diff svcb.success-cases.zone.out svcb.success-cases.zone.cmp +then + echo "Some success cases could not be printed" + exit 1 +else + echo "All particular success cases parsed and printed successfully" +fi + + +rem $PRE/nsd-control -c svcb.secondary.conf write +rem while [ ! -f test-vectors-secondary.zone ] +rem do +rem sleep 1 +rem done +rem while ! grep '^v20' test-vectors-secondary.zone +rem do +rem sleep 1 +rem done +rem grep -v '^;' svcb.test-vectors-pf.zone.out > svcb.test-vectors-pf.zone.out2 +rem grep -v '^;' test-vectors-secondary.zone > test-vectors-secondary.zone.out +rem if ! diff svcb.test-vectors-pf.zone.out2 test-vectors-secondary.zone.out +rem then +rem echo "Output from secondary did not match output from primary" +rem exit 1 +rem else +rem echo "Output from secondary did match output from primary" +rem fi + +rem dig @127.0.0.1 -p $TPKG_SEC_PORT f01.failure-cases. TYPE64 > f01.failure-cases.out +rem if grep 'status: NOERROR' f01.failure-cases.out +rem then +rem echo "Failure case 1: Multiple instances of the same SvcParamKey" +rem echo "allowed for secondary" +rem else +rem echo "Could not load failure-cases zone in secondary" +rem exit 1 +rem fi + diff --git a/testdata/svcb.tdir/svcb.test-vectors-pf.zone b/testdata/svcb.tdir/svcb.test-vectors-pf.zone new file mode 100644 index 000000000..d2cb5087b --- /dev/null +++ b/testdata/svcb.tdir/svcb.test-vectors-pf.zone @@ -0,0 +1,92 @@ +$ORIGIN test-vectors. +$TTL 3600 + +@ SOA primary admin 1 3600 1800 7200 3600 + + NS primary +primary A 127.0.0.1 +; D.1. AliasForm + +v01 SVCB 0 foo.example.com. + +; D.2. ServiceForm +; The first form is the simple "use the ownername". + +v02 SVCB 1 . + +; This vector only has a port. + +v03 SVCB 16 foo.example.com. port=53 + +; This example has a key that is not registered, its value is unquoted. + +v04 SVCB 1 foo.example.com. key667=hello + +; This example has a key that is not registered, its value is quoted and +; contains a decimal-escaped character. + +v05 SVCB 1 foo.example.com. key667="hello\210qoo" + +; Here, two IPv6 hints are quoted in the presentation format. + +v06 SVCB 1 foo.example.com. ipv6hint="2001:db8::1,2001:db8::53:1" + +; This example shows a single IPv6 hint in IPv4 mapped IPv6 presentation format. + +v07 SVCB 1 example.com. ipv6hint="2001:db8:ffff:ffff:ffff:ffff:198.51.100.100" + +; In the next vector, neither the SvcParamValues nor the mandatory keys are +; sorted in presentation format, but are correctly sorted in the wire-format. + +v08 SVCB 16 foo.example.org. (alpn=h2,h3-19 mandatory=ipv4hint,alpn + ipv4hint=192.0.2.1) + +; This last (two) vectors has an alpn value with an escaped comma and an +; escaped backslash in two presentation formats. + +v09 SVCB 16 foo.example.org. alpn="f\\\\oo\\,bar,h2" +v10 SVCB 16 foo.example.org. alpn=f\\\092oo\092,bar,h2 + + +; D.1. AliasForm + +v11 HTTPS 0 foo.example.com. + +; D.2. ServiceForm +; The first form is the simple "use the ownername". + +v12 HTTPS 1 . + +; This vector only has a port. + +v13 HTTPS 16 foo.example.com. port=53 + +; This example has a key that is not registered, its value is unquoted. + +v14 HTTPS 1 foo.example.com. key667=hello + +; This example has a key that is not registered, its value is quoted and +; contains a decimal-escaped character. + +v15 HTTPS 1 foo.example.com. key667="hello\210qoo" + +; Here, two IPv6 hints are quoted in the presentation format. + +v16 HTTPS 1 foo.example.com. ipv6hint="2001:db8::1,2001:db8::53:1" + +; This example shows a single IPv6 hint in IPv4 mapped IPv6 presentation format. + +v17 HTTPS 1 example.com. ipv6hint="2001:db8:ffff:ffff:ffff:ffff:198.51.100.100" + +; In the next vector, neither the SvcParamValues nor the mandatory keys are +; sorted in presentation format, but are correctly sorted in the wire-format. + +v18 HTTPS 16 foo.example.org. (alpn=h2,h3-19 mandatory=ipv4hint,alpn + ipv4hint=192.0.2.1) + +; This last (two) vectors has an alpn value with an escaped comma and an +; escaped backslash in two presentation formats. + +v19 HTTPS 16 foo.example.org. alpn="f\\\\oo\\,bar,h2" +v20 HTTPS 16 foo.example.org. alpn=f\\\092oo\092,bar,h2 + diff --git a/testdata/svcb.tdir/svcb.test-vectors-wf.zone b/testdata/svcb.tdir/svcb.test-vectors-wf.zone new file mode 100644 index 000000000..bf47ab75c --- /dev/null +++ b/testdata/svcb.tdir/svcb.test-vectors-wf.zone @@ -0,0 +1,232 @@ +$ORIGIN test-vectors. +$TTL 3600 + +@ SOA primary admin 1 3600 1800 7200 3600 + + NS primary +primary A 127.0.0.1 + +; D.1. AliasForm + +v01 SVCB \# 19 ( +00 00 ; priority +03 66 6f 6f 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 ; target +) + +; D.2. ServiceForm +; The first form is the simple "use the ownername". + +v02 SVCB \# 3 ( +00 01 ; priority +00 ; target (root label) +) + +; This vector only has a port. + +v03 SVCB \# 25 ( +00 10 ; priority +03 66 6f 6f 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 ; target +00 03 ; key 3 +00 02 ; length 2 +00 35 ; value +) + +; This example has a key that is not registered, its value is unquoted. + +v04 SVCB \# 28 ( +00 01 ; priority +03 66 6f 6f 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 ; target +02 9b ; key 667 +00 05 ; length 5 +68 65 6c 6c 6f ; value +) + +; This example has a key that is not registered, its value is quoted and +; contains a decimal-escaped character. + +v05 SVCB \# 32 ( +00 01 ; priority +03 66 6f 6f 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 ; target +02 9b ; key 667 +00 09 ; length 9 +68 65 6c 6c 6f d2 71 6f 6f ; value +) + +; Here, two IPv6 hints are quoted in the presentation format. + +v06 SVCB \# 55 ( +00 01 ; priority +03 66 6f 6f 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 ; target +00 06 ; key 6 +00 20 ; length 32 +20 01 0d b8 00 00 00 00 00 00 00 00 00 00 00 01 ; first address +20 01 0d b8 00 00 00 00 00 00 00 00 00 53 00 01 ; second address +) + +; This example shows a single IPv6 hint in IPv4 mapped IPv6 presentation format. + +v07 SVCB \# 35 ( +00 01 ; priority +07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 ; target +00 06 ; key 6 +00 10 ; length 16 +20 01 0d b8 ff ff ff ff ff ff ff ff c6 33 64 64 ; address +) + +; In the next vector, neither the SvcParamValues nor the mandatory keys are +; sorted in presentation format, but are correctly sorted in the wire-format. + +v08 SVCB \# 48 ( +00 10 ; priority +03 66 6f 6f 07 65 78 61 6d 70 6c 65 03 6f 72 67 00 ; target +00 00 ; key 0 +00 04 ; param length 4 +00 01 ; value: key 1 +00 04 ; value: key 4 +00 01 ; key 1 +00 09 ; param length 9 +02 ; alpn length 2 +68 32 ; alpn value +05 ; alpn length 5 +68 33 2d 31 39 ; alpn value +00 04 ; key 4 +00 04 ; param length 4 +c0 00 02 01 ; param value +) + +; This last (two) vectors has an alpn value with an escaped comma and an +; escaped backslash in two presentation formats. + +v09 SVCB \# 35 ( +00 10 ; priority +03 66 6f 6f 07 65 78 61 6d 70 6c 65 03 6f 72 67 00 ; target +00 01 ; key 1 +00 0c ; param length 12 +08 ; alpn length 8 +66 5c 6f 6f 2c 62 61 72 ; alpn value +02 ; alpn length 2 +68 32 ; alpn value +) +v10 SVCB \# 35 ( +00 10 ; priority +03 66 6f 6f 07 65 78 61 6d 70 6c 65 03 6f 72 67 00 ; target +00 01 ; key 1 +00 0c ; param length 12 +08 ; alpn length 8 +66 5c 6f 6f 2c 62 61 72 ; alpn value +02 ; alpn length 2 +68 32 ; alpn value +) + +; D.1. AliasForm + +v11 HTTPS \# 19 ( +00 00 ; priority +03 66 6f 6f 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 ; target +) + +; D.2. ServiceForm +; The first form is the simple "use the ownername". + +v12 HTTPS \# 3 ( +00 01 ; priority +00 ; target (root label) +) + +; This vector only has a port. + +v13 HTTPS \# 25 ( +00 10 ; priority +03 66 6f 6f 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 ; target +00 03 ; key 3 +00 02 ; length 2 +00 35 ; value +) + +; This example has a key that is not registered, its value is unquoted. + +v14 HTTPS \# 28 ( +00 01 ; priority +03 66 6f 6f 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 ; target +02 9b ; key 667 +00 05 ; length 5 +68 65 6c 6c 6f ; value +) + +; This example has a key that is not registered, its value is quoted and +; contains a decimal-escaped character. + +v15 HTTPS \# 32 ( +00 01 ; priority +03 66 6f 6f 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 ; target +02 9b ; key 667 +00 09 ; length 9 +68 65 6c 6c 6f d2 71 6f 6f ; value +) + +; Here, two IPv6 hints are quoted in the presentation format. + +v16 HTTPS \# 55 ( +00 01 ; priority +03 66 6f 6f 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 ; target +00 06 ; key 6 +00 20 ; length 32 +20 01 0d b8 00 00 00 00 00 00 00 00 00 00 00 01 ; first address +20 01 0d b8 00 00 00 00 00 00 00 00 00 53 00 01 ; second address +) + +; This example shows a single IPv6 hint in IPv4 mapped IPv6 presentation format. + +v17 HTTPS \# 35 ( +00 01 ; priority +07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 ; target +00 06 ; key 6 +00 10 ; length 16 +20 01 0d b8 ff ff ff ff ff ff ff ff c6 33 64 64 ; address +) + +; In the next vector, neither the SvcParamValues nor the mandatory keys are +; sorted in presentation format, but are correctly sorted in the wire-format. + +v18 HTTPS \# 48 ( +00 10 ; priority +03 66 6f 6f 07 65 78 61 6d 70 6c 65 03 6f 72 67 00 ; target +00 00 ; key 0 +00 04 ; param length 4 +00 01 ; value: key 1 +00 04 ; value: key 4 +00 01 ; key 1 +00 09 ; param length 9 +02 ; alpn length 2 +68 32 ; alpn value +05 ; alpn length 5 +68 33 2d 31 39 ; alpn value +00 04 ; key 4 +00 04 ; param length 4 +c0 00 02 01 ; param value +) + +; This last (two) vectors has an alpn value with an escaped comma and an +; escaped backslash in two presentation formats. + +v19 HTTPS \# 35 ( +00 10 ; priority +03 66 6f 6f 07 65 78 61 6d 70 6c 65 03 6f 72 67 00 ; target +00 01 ; key 1 +00 0c ; param length 12 +08 ; alpn length 8 +66 5c 6f 6f 2c 62 61 72 ; alpn value +02 ; alpn length 2 +68 32 ; alpn value +) +v20 HTTPS \# 35 ( +00 10 ; priority +03 66 6f 6f 07 65 78 61 6d 70 6c 65 03 6f 72 67 00 ; target +00 01 ; key 1 +00 0c ; param length 12 +08 ; alpn length 8 +66 5c 6f 6f 2c 62 61 72 ; alpn value +02 ; alpn length 2 +68 32 ; alpn value +) + From 956d7d4e44f15dd53241e3e15c60d91af79743e8 Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Tue, 25 May 2021 15:56:19 +0200 Subject: [PATCH 135/553] Fix mandatory parsing and ech printing --- sldns/str2wire.c | 8 ++++---- sldns/wire2str.c | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/sldns/str2wire.c b/sldns/str2wire.c index 1b09766bc..df244910e 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -1168,8 +1168,8 @@ sldns_str2wire_svcbparam_mandatory(const char* val, uint8_t* rd, size_t* rd_len) return -1; } } - - // @TODO check if we have space to write in rd_len; look for the best spot + if (sizeof(uint16_t) * (count + 2) > *rd_len) + return LDNS_WIREPARSE_ERR_BUFFER_TOO_SMALL; sldns_write_uint16(rd, SVCB_KEY_MANDATORY); sldns_write_uint16(rd + 2, sizeof(uint16_t) * count); @@ -1179,12 +1179,12 @@ sldns_str2wire_svcbparam_mandatory(const char* val, uint8_t* rd, size_t* rd_len) if (!(next_key = strchr(val, ','))) { sldns_write_uint16(rd + *rd_len, sldns_str2wire_svcparam_key_lookup(val, val_len)); - *rd_len += LDNS_IP6ADDRLEN; + *rd_len += 2; break; } else { sldns_write_uint16(rd + *rd_len, sldns_str2wire_svcparam_key_lookup(val, next_key - val)); - *rd_len += LDNS_IP6ADDRLEN; + *rd_len += 2; } val_len -= next_key - val + 1; diff --git a/sldns/wire2str.c b/sldns/wire2str.c index f6c32cfe3..07a4911c4 100644 --- a/sldns/wire2str.c +++ b/sldns/wire2str.c @@ -1091,14 +1091,14 @@ static int sldns_wire2str_svcparam_ech2str(char** s, size_t* slen, uint16_t data_len, uint8_t* data) { int size; - int w; + int w = 0; assert(data_len > 0); /* Guaranteed by rdata_svcparam_to_string */ w += sldns_str_print(s, slen, "=\""); /* b64_ntop_calculate size includes null at the end */ - size = sldns_b64_ntop_calculate_size(data_len); + size = sldns_b64_ntop_calculate_size(data_len) - 1; // @TODO store return value? sldns_b64_ntop(data, data_len, *s, *slen); From 21413aed78da849e0e036a6ae61c32162097dfa2 Mon Sep 17 00:00:00 2001 From: Tom Carpay Date: Tue, 25 May 2021 16:02:22 +0200 Subject: [PATCH 136/553] fix merge error in ipv6hints --- sldns/str2wire.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/sldns/str2wire.c b/sldns/str2wire.c index df244910e..aec8e51fe 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -1117,8 +1117,6 @@ sldns_str2wire_svcbparam_ipv6hint(const char* val, uint8_t* rd, size_t* rd_len) break; *rd_len += LDNS_IP6ADDRLEN; - *rd_len += LDNS_IP6ADDRLEN; - assert(count == 1); } else if (next_ip_str - val >= (int)sizeof(ip_str)) From 0f2ae816b5e28b3f15a13c91a8ad2b9fff22e990 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 25 May 2021 17:32:08 +0200 Subject: [PATCH 137/553] - For #492: Fix font highlighting for the man page on emacs. --- doc/Changelog | 1 + doc/unbound.conf.5.in | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index cffaacbf8..d87e545d7 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -4,6 +4,7 @@ for it in the configuration to 150 for all key sizes. - Fix #492: module-config respip missing in unbound.conf.5.in man page. Merges #494 from he32. + - For #492: Fix font highlighting for the man page on emacs. 21 May 2021: Wouter - Test code has -q option for quiet output. diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 435bff8d9..7215bce65 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -1026,7 +1026,7 @@ If yes, Unbound rotates RRSet order in response (the random number is taken from the query ID, for speed and thread safety). Default is yes. .TP .B minimal-responses: \fI -If yes, Unbound doesn't insert authority/additional sections into response +If yes, Unbound does not insert authority/additional sections into response messages when those sections are not required. This reduces response size significantly, and may avoid TCP fallback for some responses. This may cause a slight speedup. The default is yes, even though the DNS From 6066a24405465e50615f1a24035693d9e94034c6 Mon Sep 17 00:00:00 2001 From: Jim Hague Date: Thu, 27 May 2021 10:57:35 +0100 Subject: [PATCH 138/553] Use build system endianness if available, otherwise try to work it out. The getdns build system provides the endianness, enabling building on Windows native. This change is a convenience for getdns maintainers. --- util/storage/lookup3.c | 102 +++++++++++++++++++++++------------------ 1 file changed, 58 insertions(+), 44 deletions(-) diff --git a/util/storage/lookup3.c b/util/storage/lookup3.c index bb25eb433..c4026626c 100644 --- a/util/storage/lookup3.c +++ b/util/storage/lookup3.c @@ -53,21 +53,69 @@ on 1 byte), but shoehorning those bytes into integers efficiently is messy. #include "util/storage/lookup3.h" #include /* defines printf for tests */ #include /* defines time_t for timings in the test */ -/*#include defines uint32_t etc (from config.h) */ -#include /* attempt to define endianness */ -#ifdef HAVE_SYS_TYPES_H -# include /* attempt to define endianness (solaris) */ -#endif -#if defined(linux) || defined(__OpenBSD__) + +/* + * If our build system provides endianness info, signalled by + * HAVE_TARGET_ENDIANNESS and the presence or absence of TARGET_IS_BIG_ENDIAN, + * use that. Otherwise try to work out the endianness. + */ +#if defined(HAVE_TARGET_ENDIANNESS) +# if defined(TARGET_IS_BIG_ENDIAN) +# define HASH_LITTLE_ENDIAN 0 +# define HASH_BIG_ENDIAN 1 +# else +# define HASH_LITTLE_ENDIAN 1 +# define HASH_BIG_ENDIAN 0 +# endif +#else +# include /* attempt to define endianness */ +# ifdef HAVE_SYS_TYPES_H +# include /* attempt to define endianness (solaris) */ +# endif +# if defined(linux) || defined(__OpenBSD__) # ifdef HAVE_ENDIAN_H # include /* attempt to define endianness */ # else # include /* on older OpenBSD */ # endif -#endif -#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__DragonFly__) -#include /* attempt to define endianness */ -#endif +# endif +# if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__DragonFly__) +# include /* attempt to define endianness */ +# endif + /* + * My best guess at if you are big-endian or little-endian. This may + * need adjustment. + */ +# if (defined(__BYTE_ORDER) && defined(__LITTLE_ENDIAN) && \ + __BYTE_ORDER == __LITTLE_ENDIAN) || \ + (defined(i386) || defined(__i386__) || defined(__i486__) || \ + defined(__i586__) || defined(__i686__) || defined(vax) || defined(MIPSEL) || defined(__x86)) +# define HASH_LITTLE_ENDIAN 1 +# define HASH_BIG_ENDIAN 0 +# elif (defined(__BYTE_ORDER) && defined(__BIG_ENDIAN) && \ + __BYTE_ORDER == __BIG_ENDIAN) || \ + (defined(sparc) || defined(__sparc) || defined(__sparc__) || defined(POWERPC) || defined(mc68000) || defined(sel)) +# define HASH_LITTLE_ENDIAN 0 +# define HASH_BIG_ENDIAN 1 +# elif defined(_MACHINE_ENDIAN_H_) + /* test for machine_endian_h protects failure if some are empty strings */ +# if defined(_BYTE_ORDER) && defined(_BIG_ENDIAN) && _BYTE_ORDER == _BIG_ENDIAN +# define HASH_LITTLE_ENDIAN 0 +# define HASH_BIG_ENDIAN 1 +# endif +# if defined(_BYTE_ORDER) && defined(_LITTLE_ENDIAN) && _BYTE_ORDER == _LITTLE_ENDIAN +# define HASH_LITTLE_ENDIAN 1 +# define HASH_BIG_ENDIAN 0 +# endif /* _MACHINE_ENDIAN_H_ */ +# else +# define HASH_LITTLE_ENDIAN 0 +# define HASH_BIG_ENDIAN 0 +# endif +#endif /* defined(HAVE_TARGET_ENDIANNESS) */ + +#define hashsize(n) ((uint32_t)1<<(n)) +#define hashmask(n) (hashsize(n)-1) +#define rot(x,k) (((x)<<(k)) | ((x)>>(32-(k)))) /* random initial value */ static uint32_t raninit = (uint32_t)0xdeadbeef; @@ -78,40 +126,6 @@ hash_set_raninit(uint32_t v) raninit = v; } -/* - * My best guess at if you are big-endian or little-endian. This may - * need adjustment. - */ -#if (defined(__BYTE_ORDER) && defined(__LITTLE_ENDIAN) && \ - __BYTE_ORDER == __LITTLE_ENDIAN) || \ - (defined(i386) || defined(__i386__) || defined(__i486__) || \ - defined(__i586__) || defined(__i686__) || defined(vax) || defined(MIPSEL) || defined(__x86)) -# define HASH_LITTLE_ENDIAN 1 -# define HASH_BIG_ENDIAN 0 -#elif (defined(__BYTE_ORDER) && defined(__BIG_ENDIAN) && \ - __BYTE_ORDER == __BIG_ENDIAN) || \ - (defined(sparc) || defined(__sparc) || defined(__sparc__) || defined(POWERPC) || defined(mc68000) || defined(sel)) -# define HASH_LITTLE_ENDIAN 0 -# define HASH_BIG_ENDIAN 1 -#elif defined(_MACHINE_ENDIAN_H_) -/* test for machine_endian_h protects failure if some are empty strings */ -# if defined(_BYTE_ORDER) && defined(_BIG_ENDIAN) && _BYTE_ORDER == _BIG_ENDIAN -# define HASH_LITTLE_ENDIAN 0 -# define HASH_BIG_ENDIAN 1 -# endif -# if defined(_BYTE_ORDER) && defined(_LITTLE_ENDIAN) && _BYTE_ORDER == _LITTLE_ENDIAN -# define HASH_LITTLE_ENDIAN 1 -# define HASH_BIG_ENDIAN 0 -# endif /* _MACHINE_ENDIAN_H_ */ -#else -# define HASH_LITTLE_ENDIAN 0 -# define HASH_BIG_ENDIAN 0 -#endif - -#define hashsize(n) ((uint32_t)1<<(n)) -#define hashmask(n) (hashsize(n)-1) -#define rot(x,k) (((x)<<(k)) | ((x)>>(32-(k)))) - /* ------------------------------------------------------------------------------- mix -- mix 3 32-bit values reversibly. From 2196ccf5e83afd88fb3bb19b5326677f30af01f6 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 27 May 2021 13:29:33 +0200 Subject: [PATCH 139/553] - Merge #496 from banburybill: Use build system endianness if available, otherwise try to work it out. --- doc/Changelog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index d87e545d7..f322879dc 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +27 May 2021: Wouter + - Merge #496 from banburybill: Use build system endianness if + available, otherwise try to work it out. + 25 May 2021: Wouter - Move the NSEC3 max iterations count in line with the 150 value used by BIND, Knot and PowerDNS. This sets the default value From ea4f1ee8a68cfdbaaeb110990e59cd976bd1ce5d Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 27 May 2021 14:20:53 +0200 Subject: [PATCH 140/553] - zonemd-check: yesno option, default no, enables the processing of ZONEMD records for that zone. --- doc/Changelog | 2 + doc/example.conf.in | 1 + doc/unbound.conf.5.in | 6 + services/authzone.c | 9 + services/authzone.h | 2 + testcode/unitzonemd.c | 3 + testdata/auth_zonemd_anchor.rpl | 1 + testdata/auth_zonemd_anchor_fail.rpl | 1 + testdata/auth_zonemd_chain.rpl | 1 + testdata/auth_zonemd_chain_fail.rpl | 1 + testdata/auth_zonemd_file.rpl | 1 + testdata/auth_zonemd_file_fail.rpl | 1 + testdata/auth_zonemd_insecure.rpl | 1 + testdata/auth_zonemd_insecure_absent.rpl | 1 + .../auth_zonemd_insecure_absent_reject.rpl | 1 + testdata/auth_zonemd_insecure_fail.rpl | 1 + testdata/auth_zonemd_nokey.rpl | 1 + testdata/auth_zonemd_permissive_mode.rpl | 1 + testdata/auth_zonemd_xfr.rpl | 1 + testdata/auth_zonemd_xfr_anchor.rpl | 1 + testdata/auth_zonemd_xfr_anchor_fail.rpl | 1 + testdata/auth_zonemd_xfr_chain.rpl | 1 + testdata/auth_zonemd_xfr_chain_fail.rpl | 1 + testdata/auth_zonemd_xfr_fail.rpl | 1 + util/config_file.h | 2 + util/configlexer.c | 4302 +++++++++-------- util/configlexer.lex | 1 + util/configparser.c | 3187 ++++++------ util/configparser.h | 8 +- util/configparser.y | 15 +- 30 files changed, 3821 insertions(+), 3735 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index f322879dc..1362ef7b0 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,8 @@ 27 May 2021: Wouter - Merge #496 from banburybill: Use build system endianness if available, otherwise try to work it out. + - zonemd-check: yesno option, default no, enables the processing + of ZONEMD records for that zone. 25 May 2021: Wouter - Move the NSEC3 max iterations count in line with the 150 value diff --git a/doc/example.conf.in b/doc/example.conf.in index 96eeebd59..e93c40be9 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -1033,6 +1033,7 @@ remote-control: # name: "example.org" # for-downstream: yes # for-upstream: yes +# zonemd-check: no # zonemd-reject-absence: no # zonefile: "example.org.zone" diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 7215bce65..b0ed3aa26 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -1980,6 +1980,12 @@ to the authority servers for this zone, it'll fetch the data directly from the zone data. Turn it on when you want unbound to provide recursion for downstream clients, and use the zone data as a local copy to speed up lookups. .TP +.B zonemd\-check: \fI +Enable this option to check ZONEMD records in the zone. Default is disabled. +The ZONEMD record is a checksum over the zone data. This includes glue in +the zone and data from the zone file, and excludes comments from the zone file. +When there is a DNSSEC chain of trust, DNSSEC signatures are checked too. +.TP .B zonemd\-reject\-absence: \fI Enable this option to reject the absence of the ZONEMD record. Without it, when zonemd is not there it is not checked. It is useful to enable for a diff --git a/services/authzone.c b/services/authzone.c index 9f9b08f7d..9ebd79ed3 100644 --- a/services/authzone.c +++ b/services/authzone.c @@ -1755,6 +1755,8 @@ zonemd_offline_verify(struct auth_zone* z, struct module_env* env_for_val, { struct module_env env; time_t now = 0; + if(!z->zonemd_check) + return; env = *env_for_val; env.scratch_buffer = sldns_buffer_new(env.cfg->msg_buffer_size); if(!env.scratch_buffer) { @@ -2096,6 +2098,7 @@ auth_zones_cfg(struct auth_zones* az, struct config_auth* c) z->for_downstream = c->for_downstream; z->for_upstream = c->for_upstream; z->fallback_enabled = c->fallback_enabled; + z->zonemd_check = c->zonemd_check; z->zonemd_reject_absence = c->zonemd_reject_absence; if(c->isrpz && !z->rpz){ if(!(z->rpz = rpz_create(c))){ @@ -8234,6 +8237,8 @@ void auth_zone_verify_zonemd(struct auth_zone* z, struct module_env* env, int is_insecure = 0; /* verify the ZONEMD if present. * If not present check if absence is allowed by DNSSEC */ + if(!z->zonemd_check) + return; /* if zone is under a trustanchor */ /* is it equal to trustanchor - get dnskey's verified */ @@ -8302,6 +8307,10 @@ void auth_zones_pickup_zonemd_verify(struct auth_zones* az, lock_rw_rdlock(&az->lock); RBTREE_FOR(z, struct auth_zone*, &az->ztree) { lock_rw_wrlock(&z->lock); + if(!z->zonemd_check) { + lock_rw_unlock(&z->lock); + continue; + } key.dclass = z->dclass; key.namelabs = z->namelabs; if(z->namelen > sizeof(savezname)) { diff --git a/services/authzone.h b/services/authzone.h index 4810017a3..ffe234d59 100644 --- a/services/authzone.h +++ b/services/authzone.h @@ -132,6 +132,8 @@ struct auth_zone { /** for upstream: this zone answers queries that unbound intends to * send upstream. */ int for_upstream; + /** check ZONEMD records */ + int zonemd_check; /** reject absence of ZONEMD records */ int zonemd_reject_absence; /** RPZ zones */ diff --git a/testcode/unitzonemd.c b/testcode/unitzonemd.c index a8949a8c4..3352a7c37 100644 --- a/testcode/unitzonemd.c +++ b/testcode/unitzonemd.c @@ -82,6 +82,7 @@ static void zonemd_generate_test(const char* zname, char* zfile, /* read file */ z = authtest_addzone(az, zname, zfile); unit_assert(z); + z->zonemd_check = 1; /* create zonemd digest */ result = auth_zone_generate_zonemd_hash(z, scheme, hashalgo, @@ -196,6 +197,7 @@ static void zonemd_check_test(void) /* read file */ z = authtest_addzone(az, zname, zfile); unit_assert(z); + z->zonemd_check = 1; hashlen = sizeof(hash); if(sldns_str2wire_hex_buf(digest, hash, &hashlen) != 0) { unit_assert(0); /* parse failure */ @@ -291,6 +293,7 @@ static void zonemd_verify_test(char* zname, char* zfile, char* tastr, /* test */ lock_rw_wrlock(&z->lock); + z->zonemd_check = 1; auth_zone_verify_zonemd(z, &env, &mods, &result, 1, 0); lock_rw_unlock(&z->lock); if(verbosity >= VERB_ALGO) { diff --git a/testdata/auth_zonemd_anchor.rpl b/testdata/auth_zonemd_anchor.rpl index 7e4257513..c443f7d43 100644 --- a/testdata/auth_zonemd_anchor.rpl +++ b/testdata/auth_zonemd_anchor.rpl @@ -24,6 +24,7 @@ auth-zone: ## on failures with for-upstream, fallback to sending queries to ## the authority servers ## fallback-enabled: no + zonemd-check: yes ## this line generates zonefile: \n"/tmp/xxx.example.com"\n zonefile: diff --git a/testdata/auth_zonemd_anchor_fail.rpl b/testdata/auth_zonemd_anchor_fail.rpl index 69492d5f8..d055174dc 100644 --- a/testdata/auth_zonemd_anchor_fail.rpl +++ b/testdata/auth_zonemd_anchor_fail.rpl @@ -27,6 +27,7 @@ auth-zone: ## on failures with for-upstream, fallback to sending queries to ## the authority servers ## fallback-enabled: no + zonemd-check: yes ## this line generates zonefile: \n"/tmp/xxx.example.com"\n zonefile: diff --git a/testdata/auth_zonemd_chain.rpl b/testdata/auth_zonemd_chain.rpl index b693f6c35..74479274f 100644 --- a/testdata/auth_zonemd_chain.rpl +++ b/testdata/auth_zonemd_chain.rpl @@ -24,6 +24,7 @@ auth-zone: ## on failures with for-upstream, fallback to sending queries to ## the authority servers ## fallback-enabled: no + zonemd-check: yes ## this line generates zonefile: \n"/tmp/xxx.example.com"\n zonefile: diff --git a/testdata/auth_zonemd_chain_fail.rpl b/testdata/auth_zonemd_chain_fail.rpl index d38367b9d..393b1c028 100644 --- a/testdata/auth_zonemd_chain_fail.rpl +++ b/testdata/auth_zonemd_chain_fail.rpl @@ -24,6 +24,7 @@ auth-zone: ## on failures with for-upstream, fallback to sending queries to ## the authority servers ## fallback-enabled: no + zonemd-check: yes ## this line generates zonefile: \n"/tmp/xxx.example.com"\n zonefile: diff --git a/testdata/auth_zonemd_file.rpl b/testdata/auth_zonemd_file.rpl index ffccd6779..bdf0ccbae 100644 --- a/testdata/auth_zonemd_file.rpl +++ b/testdata/auth_zonemd_file.rpl @@ -21,6 +21,7 @@ auth-zone: ## on failures with for-upstream, fallback to sending queries to ## the authority servers ## fallback-enabled: no + zonemd-check: yes ## this line generates zonefile: \n"/tmp/xxx.example.com"\n zonefile: diff --git a/testdata/auth_zonemd_file_fail.rpl b/testdata/auth_zonemd_file_fail.rpl index 4bfa81b80..69487cf65 100644 --- a/testdata/auth_zonemd_file_fail.rpl +++ b/testdata/auth_zonemd_file_fail.rpl @@ -21,6 +21,7 @@ auth-zone: ## on failures with for-upstream, fallback to sending queries to ## the authority servers ## fallback-enabled: no + zonemd-check: yes ## this line generates zonefile: \n"/tmp/xxx.example.com"\n zonefile: diff --git a/testdata/auth_zonemd_insecure.rpl b/testdata/auth_zonemd_insecure.rpl index b48992b4d..18a4117d8 100644 --- a/testdata/auth_zonemd_insecure.rpl +++ b/testdata/auth_zonemd_insecure.rpl @@ -24,6 +24,7 @@ auth-zone: ## on failures with for-upstream, fallback to sending queries to ## the authority servers ## fallback-enabled: no + zonemd-check: yes ## this line generates zonefile: \n"/tmp/xxx.example.com"\n zonefile: diff --git a/testdata/auth_zonemd_insecure_absent.rpl b/testdata/auth_zonemd_insecure_absent.rpl index 4706ccb0a..1c3f48808 100644 --- a/testdata/auth_zonemd_insecure_absent.rpl +++ b/testdata/auth_zonemd_insecure_absent.rpl @@ -24,6 +24,7 @@ auth-zone: ## on failures with for-upstream, fallback to sending queries to ## the authority servers ## fallback-enabled: no + zonemd-check: yes ## this line generates zonefile: \n"/tmp/xxx.example.com"\n zonefile: diff --git a/testdata/auth_zonemd_insecure_absent_reject.rpl b/testdata/auth_zonemd_insecure_absent_reject.rpl index 79225c936..beb9f5b9a 100644 --- a/testdata/auth_zonemd_insecure_absent_reject.rpl +++ b/testdata/auth_zonemd_insecure_absent_reject.rpl @@ -7,6 +7,7 @@ server: auth-zone: name: "example.com." + zonemd-check: yes zonemd-reject-absence: yes ## zonefile (or none). ## zonefile: "example.com.zone" diff --git a/testdata/auth_zonemd_insecure_fail.rpl b/testdata/auth_zonemd_insecure_fail.rpl index 03bbdd64c..f7aad071e 100644 --- a/testdata/auth_zonemd_insecure_fail.rpl +++ b/testdata/auth_zonemd_insecure_fail.rpl @@ -24,6 +24,7 @@ auth-zone: ## on failures with for-upstream, fallback to sending queries to ## the authority servers ## fallback-enabled: no + zonemd-check: yes ## this line generates zonefile: \n"/tmp/xxx.example.com"\n zonefile: diff --git a/testdata/auth_zonemd_nokey.rpl b/testdata/auth_zonemd_nokey.rpl index 57609337e..a89414bf6 100644 --- a/testdata/auth_zonemd_nokey.rpl +++ b/testdata/auth_zonemd_nokey.rpl @@ -24,6 +24,7 @@ auth-zone: ## on failures with for-upstream, fallback to sending queries to ## the authority servers ## fallback-enabled: no + zonemd-check: yes ## this line generates zonefile: \n"/tmp/xxx.example.com"\n zonefile: diff --git a/testdata/auth_zonemd_permissive_mode.rpl b/testdata/auth_zonemd_permissive_mode.rpl index 0df0a2951..4149daa92 100644 --- a/testdata/auth_zonemd_permissive_mode.rpl +++ b/testdata/auth_zonemd_permissive_mode.rpl @@ -22,6 +22,7 @@ auth-zone: ## on failures with for-upstream, fallback to sending queries to ## the authority servers ## fallback-enabled: no + zonemd-check: yes ## this line generates zonefile: \n"/tmp/xxx.example.com"\n zonefile: diff --git a/testdata/auth_zonemd_xfr.rpl b/testdata/auth_zonemd_xfr.rpl index 0a4d45f92..89e22cea1 100644 --- a/testdata/auth_zonemd_xfr.rpl +++ b/testdata/auth_zonemd_xfr.rpl @@ -22,6 +22,7 @@ auth-zone: ## on failures with for-upstream, fallback to sending queries to ## the authority servers ## fallback-enabled: no + zonemd-check: yes ## this line generates zonefile: \n"/tmp/xxx.example.com"\n zonefile: diff --git a/testdata/auth_zonemd_xfr_anchor.rpl b/testdata/auth_zonemd_xfr_anchor.rpl index 682d51b47..667de2eae 100644 --- a/testdata/auth_zonemd_xfr_anchor.rpl +++ b/testdata/auth_zonemd_xfr_anchor.rpl @@ -25,6 +25,7 @@ auth-zone: ## on failures with for-upstream, fallback to sending queries to ## the authority servers ## fallback-enabled: no + zonemd-check: yes ## this line generates zonefile: \n"/tmp/xxx.example.com"\n zonefile: diff --git a/testdata/auth_zonemd_xfr_anchor_fail.rpl b/testdata/auth_zonemd_xfr_anchor_fail.rpl index 2b2849546..237ed9498 100644 --- a/testdata/auth_zonemd_xfr_anchor_fail.rpl +++ b/testdata/auth_zonemd_xfr_anchor_fail.rpl @@ -25,6 +25,7 @@ auth-zone: ## on failures with for-upstream, fallback to sending queries to ## the authority servers ## fallback-enabled: no + zonemd-check: yes ## this line generates zonefile: \n"/tmp/xxx.example.com"\n zonefile: diff --git a/testdata/auth_zonemd_xfr_chain.rpl b/testdata/auth_zonemd_xfr_chain.rpl index 9d1fdcf68..4deb99bcb 100644 --- a/testdata/auth_zonemd_xfr_chain.rpl +++ b/testdata/auth_zonemd_xfr_chain.rpl @@ -25,6 +25,7 @@ auth-zone: ## on failures with for-upstream, fallback to sending queries to ## the authority servers ## fallback-enabled: no + zonemd-check: yes ## this line generates zonefile: \n"/tmp/xxx.example.com"\n zonefile: diff --git a/testdata/auth_zonemd_xfr_chain_fail.rpl b/testdata/auth_zonemd_xfr_chain_fail.rpl index 8b3ad74f0..3e09c9e8e 100644 --- a/testdata/auth_zonemd_xfr_chain_fail.rpl +++ b/testdata/auth_zonemd_xfr_chain_fail.rpl @@ -25,6 +25,7 @@ auth-zone: ## on failures with for-upstream, fallback to sending queries to ## the authority servers ## fallback-enabled: no + zonemd-check: yes ## this line generates zonefile: \n"/tmp/xxx.example.com"\n zonefile: diff --git a/testdata/auth_zonemd_xfr_fail.rpl b/testdata/auth_zonemd_xfr_fail.rpl index 9fdf70889..f54ca7e08 100644 --- a/testdata/auth_zonemd_xfr_fail.rpl +++ b/testdata/auth_zonemd_xfr_fail.rpl @@ -22,6 +22,7 @@ auth-zone: ## on failures with for-upstream, fallback to sending queries to ## the authority servers ## fallback-enabled: no + zonemd-check: yes ## this line generates zonefile: \n"/tmp/xxx.example.com"\n zonefile: diff --git a/util/config_file.h b/util/config_file.h index 524e648fe..d62babba1 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -735,6 +735,8 @@ struct config_auth { /** Always reply with this CNAME target if the cname override action is * used */ char* rpz_cname; + /** Check ZONEMD records for this zone */ + int zonemd_check; /** Reject absence of ZONEMD records, zone must have one */ int zonemd_reject_absence; }; diff --git a/util/configlexer.c b/util/configlexer.c index 06a688467..e31e36739 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -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 348 -#define YY_END_OF_BUFFER 349 +#define YY_NUM_RULES 349 +#define YY_END_OF_BUFFER 350 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -363,386 +363,387 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[3439] = +static const flex_int16_t yy_accept[3445] = { 0, - 1, 1, 322, 322, 326, 326, 330, 330, 334, 334, - 1, 1, 338, 338, 342, 342, 349, 346, 1, 320, - 320, 347, 2, 347, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 322, 323, 323, 324, - 347, 326, 327, 327, 328, 347, 333, 330, 331, 331, - 332, 347, 334, 335, 335, 336, 347, 345, 321, 2, - 325, 347, 345, 341, 338, 339, 339, 340, 347, 342, - 343, 343, 344, 347, 346, 0, 1, 2, 2, 2, - 2, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 1, 1, 323, 323, 327, 327, 331, 331, 335, 335, + 1, 1, 339, 339, 343, 343, 350, 347, 1, 321, + 321, 348, 2, 348, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 323, 324, 324, 325, + 348, 327, 328, 328, 329, 348, 334, 331, 332, 332, + 333, 348, 335, 336, 336, 337, 348, 346, 322, 2, + 326, 348, 346, 342, 339, 340, 340, 341, 348, 343, + 344, 344, 345, 348, 347, 0, 1, 2, 2, 2, + 2, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 322, - 0, 326, 0, 333, 0, 330, 334, 0, 345, 0, - 2, 2, 345, 341, 0, 338, 342, 0, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 323, + 0, 327, 0, 334, 0, 331, 335, 0, 346, 0, + 2, 2, 346, 342, 0, 339, 343, 0, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 345, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 346, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 128, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 137, - 346, 346, 346, 346, 346, 346, 346, 345, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 128, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 137, + 347, 347, 347, 347, 347, 347, 347, 346, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 112, 346, 319, - 346, 346, 346, 346, 346, 346, 346, 8, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 112, 347, 320, + 347, 347, 347, 347, 347, 347, 347, 8, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 346, 346, 346, 346, 346, 346, 346, 129, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 142, 346, 346, 345, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 347, 347, 347, 347, 347, 347, 347, 129, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 142, 347, 347, 346, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 312, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 313, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 345, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 67, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 244, 346, - 14, 15, 346, 19, 18, 346, 346, 228, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 346, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 67, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 245, 347, + 14, 15, 347, 19, 18, 347, 347, 229, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 135, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 226, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 3, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 135, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 227, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 3, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 345, 346, 346, 346, 346, 346, 346, 346, - 306, 346, 346, 305, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 329, 346, 346, 346, 346, 346, 346, 346, 346, - 66, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 346, 347, 347, 347, 347, 347, 347, 347, + 307, 347, 347, 306, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 330, 347, 347, 347, 347, 347, 347, 347, 347, + 66, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 346, 346, 346, 346, 346, 346, 346, 70, 346, 275, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 313, - 314, 346, 346, 346, 346, 346, 346, 346, 71, 346, - 346, 136, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 132, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 215, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 21, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 347, 347, 347, 347, 347, 347, 347, 70, 347, 276, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 314, + 315, 347, 347, 347, 347, 347, 347, 347, 71, 347, + 347, 136, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 132, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 216, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 21, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 161, - 346, 346, 346, 346, 345, 329, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 110, 346, 346, - 346, 346, 346, 346, 346, 283, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 185, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 160, 346, 346, 346, 346, 346, 346, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 161, + 347, 347, 347, 347, 347, 346, 330, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 110, 347, + 347, 347, 347, 347, 347, 347, 284, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 185, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 160, 347, 347, 347, 347, 347, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 109, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 35, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 36, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 109, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 35, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 36, 347, 347, 347, 347, 347, 347, 347, 347, - 346, 346, 346, 346, 346, 346, 68, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 134, 346, 346, 345, - 346, 346, 346, 346, 346, 127, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 69, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 248, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 186, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 347, 347, 347, 347, 347, 347, 347, 68, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 134, 347, 347, + 347, 346, 347, 347, 347, 347, 347, 127, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 69, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 249, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 186, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 346, 346, 346, 346, 346, 346, 57, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 266, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 61, 346, 62, 346, 346, 346, 346, 346, 113, 346, - 114, 346, 346, 346, 346, 111, 346, 346, 346, 346, + 347, 347, 347, 347, 347, 347, 347, 347, 57, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 267, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 61, 347, 62, 347, 347, 347, 347, 347, + 113, 347, 114, 347, 347, 347, 347, 111, 347, 347, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 7, 346, 346, - 346, 345, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 237, 346, 346, 346, 346, 163, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 249, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 7, + 347, 347, 347, 347, 346, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 238, 347, 347, 347, 347, 163, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 250, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 48, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 58, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 207, 346, 206, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 16, 17, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 72, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 214, 346, 346, 346, 346, 346, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 48, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 58, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 208, 347, 207, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 16, + 17, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 72, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 215, 347, 347, - 346, 116, 346, 115, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 198, 346, - 346, 346, 346, 346, 346, 346, 346, 143, 346, 346, - 345, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 104, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 92, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 227, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 347, 347, 347, 347, 116, 347, 115, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 199, 347, 347, 347, 347, 347, 347, 347, 347, + 143, 347, 347, 347, 346, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 104, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 92, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 228, 347, 347, 347, 347, 347, 347, 347, 347, - 346, 346, 346, 346, 346, 346, 97, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 65, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 201, 202, 346, - 346, 346, 277, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 6, 346, 346, 346, - 346, 346, 346, 296, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 281, 346, 346, 346, 346, 346, 346, 307, 346, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 97, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 65, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 202, 203, 347, 347, 347, 278, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 6, 347, 347, 347, 347, 347, 347, 297, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 282, 347, 347, 347, 347, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 45, 346, 346, 346, 346, 47, 346, 346, - 346, 93, 346, 346, 346, 346, 346, 55, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 345, 346, 194, - 346, 346, 346, 138, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 219, 346, 195, 346, 346, 346, - 234, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 56, 346, 346, 346, 346, 346, 346, 346, 346, + 347, 347, 308, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 45, 347, 347, 347, + 347, 47, 347, 347, 347, 93, 347, 347, 347, 347, + 347, 55, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 346, 347, 195, 347, 347, 347, 138, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 220, + 347, 196, 347, 347, 347, 235, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 56, 347, 347, 347, - 346, 346, 140, 121, 346, 122, 346, 346, 346, 120, - 346, 346, 346, 346, 346, 346, 346, 346, 158, 346, - 346, 53, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 265, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 196, 346, - 346, 346, 346, 346, 199, 346, 205, 346, 346, 346, - 346, 346, 346, 233, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 108, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 133, + 347, 347, 347, 347, 347, 347, 347, 140, 121, 347, + 122, 347, 347, 347, 120, 347, 347, 347, 347, 347, + 347, 347, 347, 158, 347, 347, 53, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 266, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 197, 347, 347, 347, 347, 347, 200, + 347, 206, 347, 347, 347, 347, 347, 347, 234, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 108, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 346, 346, 346, 346, 346, 346, 346, 63, 346, 346, - 346, 29, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 20, 346, 346, 346, 346, 346, 346, - 30, 39, 346, 168, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 345, - 346, 346, 346, 346, 346, 346, 80, 82, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 285, 346, 346, 346, 346, 245, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 123, + 347, 347, 347, 347, 133, 347, 347, 347, 347, 347, + 347, 347, 63, 347, 347, 347, 29, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 20, 347, + 347, 347, 347, 347, 347, 30, 39, 347, 168, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 193, 347, 347, 346, 347, 347, 347, 347, + 347, 347, 80, 82, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 286, 347, 347, + 347, 347, 246, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 157, - 346, 49, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 300, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 162, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 294, 346, 346, 346, - 225, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 310, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 179, 346, 346, 346, 346, 346, 346, 346, + 347, 347, 347, 347, 347, 123, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 157, 347, 49, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 301, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 162, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 295, 347, 347, 347, 226, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 311, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 179, 347, - 346, 346, 117, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 174, 346, 187, 346, 346, 346, - 346, 346, 346, 345, 346, 146, 346, 346, 346, 346, - 346, 103, 346, 346, 346, 346, 217, 346, 346, 346, - 346, 346, 346, 235, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 257, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 139, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 178, 346, 346, 346, + 347, 347, 347, 347, 347, 347, 347, 347, 117, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 174, 347, 187, 347, 347, 347, 347, 347, 347, 346, + 347, 146, 347, 347, 347, 347, 347, 103, 347, 347, + 347, 347, 218, 347, 347, 347, 347, 347, 347, 236, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 258, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 139, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 346, 346, 346, 83, 346, 84, 346, 346, 346, 346, - 346, 64, 303, 346, 346, 346, 346, 346, 91, 188, - 346, 208, 346, 238, 346, 346, 200, 278, 346, 346, - 346, 346, 346, 346, 76, 346, 190, 346, 346, 346, - 346, 346, 9, 346, 346, 346, 346, 346, 107, 346, - 346, 346, 346, 270, 346, 346, 346, 346, 216, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 347, 347, 178, 347, 347, 347, 347, 347, 347, 83, + 347, 84, 347, 347, 347, 347, 347, 64, 304, 347, + 347, 347, 347, 347, 91, 188, 347, 209, 347, 239, + 347, 347, 201, 279, 347, 347, 347, 347, 347, 347, + 76, 347, 190, 347, 347, 347, 347, 347, 9, 347, + 347, 347, 347, 347, 107, 347, 347, 347, 347, 271, + 347, 347, 347, 347, 217, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 345, - 346, 346, 346, 346, 177, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 164, 346, 284, 346, 346, - 346, 346, 346, 256, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 229, 346, 346, 346, 346, - 346, 276, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 304, 346, 189, 346, 346, 346, 346, 346, - 346, 346, 346, 75, 77, 346, 346, 346, 346, 346, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 346, 347, 347, 347, 347, + 177, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 164, 347, 285, 347, 347, 347, 347, 347, 257, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 230, 347, 347, 347, 347, 347, 277, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 305, 347, + 189, 347, 347, 347, 347, 347, 347, 347, 347, 75, - 346, 346, 346, 346, 106, 346, 346, 346, 346, 268, - 346, 346, 346, 346, 280, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 221, 37, 31, - 33, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 38, 346, 32, 34, 346, 346, 346, 346, - 346, 346, 346, 346, 102, 346, 346, 346, 346, 346, - 346, 346, 346, 345, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 223, 220, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 74, 346, 346, 346, 141, + 77, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 106, 347, 347, 347, 347, 269, 347, 347, 347, 347, + 281, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 222, 37, 31, 33, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 38, 347, + 32, 34, 347, 347, 347, 347, 347, 347, 347, 347, + 102, 347, 347, 347, 347, 347, 347, 347, 347, 346, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 224, 221, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 346, 124, 346, 346, 346, 346, 346, 346, 346, 346, - 159, 50, 346, 346, 346, 337, 13, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 298, 346, 301, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 12, 346, 346, 22, 346, 346, 346, 346, 346, - 274, 346, 346, 346, 346, 282, 346, 346, 346, 78, - 346, 231, 346, 346, 346, 346, 346, 222, 346, 346, - 73, 346, 346, 346, 346, 346, 23, 346, 346, 46, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 173, 172, 346, 346, 337, 346, 346, 346, + 347, 74, 347, 347, 347, 141, 347, 124, 347, 347, + 347, 347, 347, 347, 347, 347, 159, 50, 347, 347, + 347, 338, 13, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 299, 347, 302, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 12, 347, 347, + 22, 347, 347, 347, 347, 347, 275, 347, 347, 347, + 347, 283, 347, 347, 347, 78, 347, 232, 347, 347, + 347, 347, 347, 223, 347, 347, 73, 347, 347, 347, + 347, 347, 23, 347, 347, 46, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 173, 172, - 346, 346, 346, 346, 346, 346, 224, 218, 346, 236, - 346, 346, 286, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 85, 346, 346, 346, 346, - 269, 346, 346, 346, 346, 204, 346, 346, 346, 346, - 346, 230, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 308, 309, 170, 346, 346, 79, 346, - 346, 346, 346, 180, 346, 346, 346, 118, 119, 346, - 346, 346, 25, 346, 346, 165, 346, 167, 346, 209, + 347, 347, 338, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 225, 219, 347, 237, 347, 347, 287, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 85, 347, 347, 347, 347, 270, 347, 347, 347, + 347, 205, 347, 347, 347, 347, 347, 231, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 309, + 310, 170, 347, 347, 79, 347, 347, 347, 347, 180, + 347, 347, 347, 118, 119, 347, 347, 347, 25, 347, - 346, 346, 346, 346, 171, 346, 346, 346, 346, 239, - 346, 346, 346, 346, 346, 346, 346, 148, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 247, 346, 346, 346, 346, 346, 346, 346, 317, 346, - 27, 346, 279, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 89, 210, 346, - 346, 267, 346, 302, 346, 203, 346, 346, 346, 346, - 346, 59, 346, 346, 346, 346, 346, 346, 4, 346, - 346, 346, 346, 131, 147, 346, 346, 346, 184, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 347, 165, 347, 167, 347, 210, 347, 347, 347, 347, + 171, 347, 347, 347, 347, 240, 347, 347, 347, 347, + 347, 347, 347, 148, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 248, 347, 347, 347, + 347, 347, 347, 347, 318, 347, 27, 347, 280, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 89, 211, 347, 347, 268, 347, 303, + 347, 204, 347, 347, 347, 347, 347, 59, 347, 347, + 347, 347, 347, 347, 4, 347, 347, 347, 347, 131, + 147, 347, 347, 347, 184, 347, 347, 347, 347, 347, - 346, 346, 346, 346, 346, 346, 346, 242, 40, 41, - 346, 346, 346, 346, 346, 346, 346, 287, 346, 346, - 346, 346, 346, 346, 346, 255, 346, 346, 346, 346, - 346, 346, 346, 346, 213, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 88, 346, 60, - 273, 346, 243, 346, 346, 346, 346, 346, 11, 346, - 346, 346, 346, 346, 346, 346, 346, 130, 346, 346, - 346, 346, 211, 94, 346, 346, 43, 346, 346, 346, - 346, 346, 346, 346, 346, 176, 346, 346, 346, 346, - 346, 346, 346, 150, 346, 346, 346, 346, 246, 346, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 243, 40, 41, 347, 347, 347, 347, + 347, 347, 347, 288, 347, 347, 347, 347, 347, 347, + 347, 256, 347, 347, 347, 347, 347, 347, 347, 347, + 214, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 88, 347, 60, 274, 347, 244, 347, + 347, 347, 347, 347, 11, 347, 347, 347, 347, 347, + 347, 347, 347, 130, 347, 347, 347, 347, 212, 94, + 347, 347, 43, 347, 347, 347, 347, 347, 347, 347, + 347, 176, 347, 347, 347, 347, 347, 347, 347, 150, - 346, 346, 346, 346, 254, 346, 346, 346, 346, 144, - 346, 346, 346, 125, 126, 346, 346, 346, 96, 100, - 95, 346, 346, 346, 346, 86, 346, 346, 346, 346, - 346, 346, 10, 346, 346, 346, 346, 346, 271, 311, - 346, 346, 346, 346, 346, 316, 42, 346, 346, 346, - 346, 346, 175, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 101, 99, - 346, 54, 346, 346, 87, 299, 346, 346, 346, 346, - 24, 346, 346, 346, 346, 346, 197, 346, 346, 346, + 347, 347, 347, 347, 247, 347, 347, 347, 347, 347, + 255, 347, 347, 347, 347, 144, 347, 347, 347, 125, + 126, 347, 347, 347, 96, 100, 95, 347, 347, 347, + 347, 86, 347, 347, 347, 347, 347, 347, 10, 347, + 347, 347, 347, 347, 272, 312, 347, 347, 347, 347, + 347, 317, 42, 347, 347, 347, 347, 347, 175, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 101, 99, 347, 54, 347, 347, + 87, 300, 347, 347, 347, 347, 24, 347, 347, 347, - 346, 346, 212, 346, 346, 346, 346, 346, 346, 346, - 346, 193, 346, 346, 166, 81, 346, 346, 346, 346, - 346, 288, 346, 346, 346, 346, 346, 346, 346, 251, - 346, 346, 250, 145, 346, 346, 98, 51, 346, 151, - 152, 155, 156, 153, 154, 90, 297, 346, 346, 272, - 346, 346, 346, 26, 346, 169, 346, 346, 346, 346, - 192, 346, 241, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 182, 181, 44, 346, 346, 346, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 347, 347, 198, 347, 347, 347, 347, 347, 213, 347, + 347, 347, 347, 347, 347, 347, 347, 194, 347, 347, + 166, 81, 347, 347, 347, 347, 347, 289, 347, 347, + 347, 347, 347, 347, 347, 252, 347, 347, 251, 145, + 347, 347, 98, 51, 347, 151, 152, 155, 156, 153, + 154, 90, 298, 347, 347, 273, 347, 347, 347, 26, + 347, 169, 347, 347, 347, 347, 192, 347, 242, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 182, + 181, 44, 347, 347, 347, 347, 347, 347, 347, 347, - 346, 346, 346, 346, 346, 346, 346, 346, 295, 346, - 346, 346, 346, 105, 346, 240, 346, 264, 292, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 318, 346, 52, 5, 346, 346, 232, 346, 346, 293, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 252, - 28, 346, 346, 346, 346, 346, 346, 346, 346, 346, - 346, 346, 346, 253, 346, 346, 346, 149, 346, 346, - 346, 346, 346, 346, 346, 346, 183, 346, 191, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 289, 346, - 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 296, 347, 347, 347, 347, 105, + 347, 241, 347, 265, 293, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 319, 347, 52, 5, + 347, 347, 233, 347, 347, 294, 347, 347, 347, 347, + 347, 347, 347, 347, 347, 253, 28, 347, 347, 347, + 347, 347, 347, 347, 347, 347, 347, 347, 347, 254, + 347, 347, 347, 149, 347, 347, 347, 347, 347, 347, + 347, 347, 183, 347, 191, 347, 347, 347, 347, 347, + 347, 347, 347, 347, 290, 347, 347, 347, 347, 347, - 346, 346, 346, 346, 346, 346, 315, 346, 346, 260, - 346, 346, 346, 346, 346, 290, 346, 346, 346, 346, - 346, 346, 291, 346, 346, 346, 258, 346, 261, 262, - 346, 346, 346, 346, 346, 259, 263, 0 + 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 347, 347, 316, 347, 347, 261, 347, 347, 347, 347, + 347, 291, 347, 347, 347, 347, 347, 347, 292, 347, + 347, 347, 259, 347, 262, 263, 347, 347, 347, 347, + 347, 260, 264, 0 } ; static const YY_CHAR yy_ec[256] = @@ -785,17 +786,17 @@ static const YY_CHAR yy_meta[41] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[3457] = +static const flex_int16_t yy_base[3463] = { 0, 0, 0, 38, 41, 44, 46, 59, 65, 71, 77, - 90, 112, 96, 118, 124, 136, 2864, 2494, 81, 6714, - 6714, 6714, 129, 52, 130, 63, 131, 152, 70, 140, + 90, 112, 96, 118, 124, 136, 4039, 3298, 81, 6721, + 6721, 6721, 129, 52, 130, 63, 131, 152, 70, 140, 149, 156, 57, 88, 76, 173, 175, 95, 197, 145, - 185, 199, 208, 213, 178, 123, 2453, 6714, 6714, 6714, - 107, 2397, 6714, 6714, 6714, 154, 2315, 2042, 6714, 6714, - 6714, 245, 1786, 6714, 6714, 6714, 163, 1733, 6714, 249, - 6714, 253, 148, 1670, 1574, 6714, 6714, 6714, 257, 1426, - 6714, 6714, 6714, 233, 1294, 263, 201, 0, 267, 0, + 185, 199, 208, 213, 178, 123, 3236, 6721, 6721, 6721, + 107, 2864, 6721, 6721, 6721, 154, 2451, 2010, 6721, 6721, + 6721, 245, 1786, 6721, 6721, 6721, 163, 1733, 6721, 249, + 6721, 253, 148, 1670, 1574, 6721, 6721, 6721, 257, 1426, + 6721, 6721, 6721, 233, 1294, 263, 201, 0, 267, 0, 0, 165, 191, 221, 252, 205, 181, 265, 92, 261, 216, 263, 271, 272, 210, 279, 274, 282, 278, 291, @@ -825,9 +826,9 @@ static const flex_int16_t yy_base[3457] = 738, 741, 745, 743, 750, 752, 760, 755, 756, 771, 763, 766, 762, 774, 773, 765, 769, 794, 799, 782, 787, 800, 801, 804, 802, 803, 806, 808, 809, 814, - 818, 819, 823, 807, 825, 827, 834, 829, 6714, 831, + 818, 819, 823, 807, 825, 827, 834, 829, 6721, 831, 838, 846, 839, 847, 850, 848, 854, 856, 836, 866, - 864, 867, 876, 898, 849, 871, 868, 878, 881, 6714, + 864, 867, 876, 898, 849, 871, 868, 878, 881, 6721, 884, 882, 922, 890, 891, 908, 910, 859, 909, 911, 904, 912, 933, 906, 915, 929, 945, 942, 920, 930, @@ -837,16 +838,16 @@ static const flex_int16_t yy_base[3457] = 1006, 1004, 1001, 1017, 1027, 1019, 1030, 1031, 1034, 1033, 1022, 1043, 1032, 1047, 1048, 1039, 1049, 1057, 1054, 1041, 1055, 1059, 1060, 1061, 1063, 1066, 1067, 1068, 1069, 1073, - 1077, 1071, 1087, 1074, 1082, 1089, 1084, 6714, 1091, 6714, - 1093, 1094, 1095, 1096, 1100, 1098, 1097, 6714, 1101, 1107, + 1077, 1071, 1087, 1074, 1082, 1089, 1084, 6721, 1091, 6721, + 1093, 1094, 1095, 1096, 1100, 1098, 1097, 6721, 1101, 1107, 1108, 1099, 1116, 1111, 1129, 1122, 1112, 1124, 1130, 1131, 1134, 1142, 1137, 1138, 1146, 1139, 1143, 1144, 1147, 1150, - 1151, 1152, 1155, 1158, 1159, 1162, 1179, 6714, 1161, 1163, + 1151, 1152, 1155, 1158, 1159, 1162, 1179, 6721, 1161, 1163, 1171, 1165, 1170, 1172, 1176, 1190, 1191, 1173, 1197, 1201, 1203, 1210, 1206, 1207, 1208, 1209, 1213, 1182, 1214, 1218, 1216, 1222, 1225, 1224, 1226, 1230, 1227, 1228, 1229, 1245, - 6714, 1237, 1238, 1249, 1256, 1252, 1254, 1241, 1257, 1255, + 6721, 1237, 1238, 1249, 1256, 1252, 1254, 1241, 1257, 1255, 1258, 1259, 1261, 1265, 517, 1272, 1278, 1268, 1273, 1281, 1279, 1283, 1282, 1284, 1287, 1290, 1288, 1289, 1301, 1298, 1303, 1309, 1312, 1314, 1316, 1323, 1325, 1310, 1318, 1326, @@ -854,7 +855,7 @@ static const flex_int16_t yy_base[3457] = 1342, 1345, 1348, 1351, 1349, 1354, 1356, 1355, 1357, 1365, 1358, 1366, 1370, 1367, 1368, 1372, 1376, 1374, 1383, 1384, - 1386, 6714, 1393, 1391, 1394, 1395, 1402, 1403, 1404, 1389, + 1386, 6721, 1393, 1391, 1394, 1395, 1402, 1403, 1404, 1389, 1396, 1408, 1410, 1411, 1412, 1418, 1413, 1419, 1420, 1424, 1425, 1427, 1435, 1430, 1428, 1445, 1444, 1446, 1437, 1448, 1449, 1433, 1456, 1453, 1463, 1461, 1459, 1460, 1472, 1467, @@ -867,693 +868,695 @@ static const flex_int16_t yy_base[3457] = 1570, 1572, 1582, 1580, 1583, 1585, 1586, 1587, 1589, 1590, 1592, 1597, 1598, 1604, 1606, 1607, 1609, 1608, 1612, 1620, 1610, 1618, 1625, 1619, 1626, 1627, 1630, 1611, 1637, 1638, - 1641, 1643, 1645, 6714, 1631, 1634, 1646, 1649, 1651, 1652, - 1655, 1662, 1657, 1660, 1658, 1659, 1661, 1685, 6714, 1664, - 6714, 6714, 1669, 6714, 6714, 1671, 1668, 6714, 1672, 1682, + 1641, 1643, 1645, 6721, 1631, 1634, 1646, 1649, 1651, 1652, + 1655, 1662, 1657, 1660, 1658, 1659, 1661, 1685, 6721, 1664, + 6721, 6721, 1669, 6721, 6721, 1671, 1668, 6721, 1672, 1682, 1683, 1688, 1695, 1700, 1698, 1675, 1689, 1702, 1712, 1723, 1708, 1710, 1711, 1714, 1715, 1716, 1721, 1719, 1717, 1728, 1734, 1746, 1743, 1747, 1744, 1749, 1751, 1755, 1758, 1757, 1764, 1765, 1756, 1766, 1769, 1770, 1772, 1771, 1774, 1777, - 1780, 1781, 1778, 1776, 1783, 1793, 1784, 1798, 1801, 6714, + 1780, 1781, 1778, 1776, 1783, 1793, 1784, 1798, 1801, 6721, 1799, 1808, 1803, 1812, 1809, 1813, 1815, 1810, 1811, 1821, 1824, 1817, 1826, 1827, 1828, 1829, 1830, 1831, 1834, 1836, - 1840, 1838, 1849, 1839, 6714, 1842, 1852, 1841, 1854, 1853, + 1840, 1838, 1849, 1839, 6721, 1842, 1852, 1841, 1854, 1853, 1857, 1863, 1855, 1856, 1864, 1866, 1876, 1871, 1867, 1874, - 1877, 1878, 1880, 1884, 6714, 1883, 1889, 1890, 1891, 1892, + 1877, 1878, 1880, 1884, 6721, 1883, 1889, 1890, 1891, 1892, 1894, 1897, 1899, 1900, 1901, 1903, 1904, 1905, 1906, 1915, 1907, 1912, 1918, 1919, 1922, 1927, 1929, 1931, 1939, 1930, 1932, 1941, 1934, 1940, 1942, 1944, 1945, 1947, 1957, 1959, 1946, 1961, 1956, 1958, 1969, 1971, 1968, 1973, 1974, 1975, 1976, 1981, 1983, 1984, 1985, 1988, 1995, 1979, 1991, 1993, - 2000, 1996, 2008, 1998, 2006, 2015, 2004, 2009, 2017, 2018, - 6714, 2019, 2020, 6714, 2023, 2021, 2024, 2046, 2027, 2031, - 2025, 2033, 2038, 2044, 2039, 2042, 2047, 2050, 2059, 2060, - 2061, 2066, 2065, 2068, 2072, 2071, 2074, 2077, 2078, 2081, - 2079, 2086, 2093, 2095, 2097, 2099, 2106, 2101, 2102, 2104, - 2124, 2103, 2105, 2112, 2107, 2108, 2111, 2120, 2113, 2114, - 2117, 2118, 2135, 2137, 2139, 2131, 2140, 2141, 2146, 2148, - 2147, 6714, 2160, 2155, 2153, 2157, 2161, 2169, 2165, 2164, - 6714, 2166, 2168, 2171, 2179, 2176, 2178, 2181, 2180, 2182, + 2000, 2004, 2014, 2002, 2006, 2015, 1996, 2009, 2019, 2012, + 6721, 2021, 2023, 6721, 2025, 2026, 2027, 2049, 2032, 2030, + 2028, 2036, 2039, 2040, 2041, 2047, 2050, 2053, 2063, 2042, + 2059, 2068, 2066, 2071, 2075, 2069, 2077, 2078, 2079, 2080, + 2082, 2085, 2098, 2100, 2096, 2102, 2107, 2083, 2103, 2106, + 2125, 2104, 2108, 2109, 2115, 2110, 2112, 2120, 2118, 2119, + 2121, 2114, 2135, 2136, 2134, 2137, 2142, 2143, 2148, 2149, + 2150, 6721, 2160, 2156, 2152, 2157, 2163, 2172, 2164, 2165, + 6721, 2168, 2173, 2167, 2180, 2178, 2175, 2181, 2179, 2188, - 2184, 2189, 2190, 2193, 2188, 2191, 2198, 6714, 2195, 6714, - 2203, 2205, 2207, 2209, 2206, 2213, 2214, 2210, 2216, 6714, - 6714, 2218, 2224, 2226, 2236, 2232, 2219, 2222, 6714, 2237, - 2244, 6714, 2245, 2239, 2240, 2247, 2248, 2250, 2252, 2251, - 2261, 2256, 2263, 2258, 2269, 2270, 6714, 2259, 2260, 2272, - 2275, 2271, 2279, 2278, 2285, 2282, 6714, 2286, 2289, 2291, - 2299, 2296, 2298, 2300, 2301, 2302, 2306, 2308, 2309, 2310, - 2312, 2317, 2320, 2316, 2323, 2332, 2330, 2337, 6714, 2333, - 2322, 2319, 2342, 2341, 2344, 2345, 2347, 2334, 2348, 2350, - 2355, 2349, 2357, 2351, 2359, 2361, 2370, 2372, 2363, 2368, + 2185, 2189, 2191, 2195, 2190, 2192, 2203, 6721, 2198, 6721, + 2193, 2206, 2208, 2210, 2211, 2212, 2216, 2215, 2217, 6721, + 6721, 2218, 2219, 2232, 2227, 2234, 2224, 2235, 6721, 2236, + 2246, 6721, 2237, 2244, 2242, 2249, 2250, 2253, 2251, 2255, + 2260, 2257, 2265, 2258, 2262, 2261, 6721, 2276, 2263, 2278, + 2280, 2272, 2281, 2282, 2286, 2289, 6721, 2268, 2292, 2293, + 2300, 2296, 2297, 2298, 2302, 2303, 2307, 2309, 2310, 2311, + 2313, 2318, 2321, 2317, 2319, 2329, 2327, 2337, 6721, 2333, + 2334, 2320, 2341, 2339, 2343, 2336, 2346, 2347, 2348, 2350, + 2351, 2349, 2356, 2357, 2358, 2359, 2368, 2369, 2364, 2366, - 2375, 2365, 2376, 2377, 2383, 2381, 2382, 2385, 2386, 6714, - 2387, 2393, 2395, 2396, 2388, 171, 2398, 2394, 2402, 2405, - 2407, 2418, 2403, 2419, 2421, 2420, 2422, 2424, 2425, 2428, - 2429, 2432, 2431, 2433, 2434, 2435, 2438, 6714, 2440, 2444, - 2445, 2447, 2448, 2449, 2451, 6714, 2455, 2460, 2466, 2473, - 2468, 2464, 2474, 2476, 2479, 2480, 2481, 2482, 2484, 2483, - 2485, 2487, 2490, 6714, 2492, 2500, 2502, 2493, 2503, 2506, - 2511, 2504, 2512, 2514, 2516, 2515, 2517, 2522, 2518, 2521, - 2523, 2525, 2529, 2526, 2532, 2536, 2535, 2538, 2539, 2540, - 2543, 2547, 2549, 6714, 2554, 2555, 2553, 2556, 2558, 2560, + 2373, 2374, 2376, 2377, 2384, 2381, 2382, 2383, 2385, 6721, + 2386, 2388, 2392, 2396, 2398, 2394, 171, 2395, 2397, 2404, + 2406, 2408, 2419, 2407, 2421, 2426, 2413, 2423, 2422, 2425, + 2431, 2432, 2433, 2434, 2435, 2436, 2437, 2439, 6721, 2441, + 2442, 2444, 2448, 2447, 2450, 2455, 6721, 2457, 2464, 2467, + 2476, 2459, 2468, 2477, 2473, 2478, 2479, 2481, 2483, 2485, + 2484, 2487, 2493, 2490, 6721, 2495, 2498, 2500, 2491, 2507, + 2506, 2499, 2513, 2514, 2515, 2518, 2516, 2517, 2520, 2519, + 2521, 2522, 2527, 2526, 2523, 2525, 2535, 2536, 2537, 2546, + 2547, 2539, 2548, 2549, 6721, 2559, 2550, 2554, 2552, 2555, - 2561, 2563, 2580, 2565, 2571, 2573, 2581, 2587, 2577, 2589, - 2597, 2593, 2599, 2602, 2607, 2603, 2609, 2612, 2605, 2615, - 2617, 2618, 2619, 2627, 2623, 2624, 2625, 2628, 2629, 2639, - 2640, 2631, 2641, 2643, 2646, 2635, 2653, 2658, 2572, 6714, - 2660, 2650, 2648, 2662, 2673, 2668, 2669, 2670, 2674, 2676, - 2678, 2679, 2680, 2687, 2682, 2684, 2686, 2690, 2689, 2693, - 2699, 2696, 2701, 2704, 2708, 2705, 2711, 2713, 6714, 2716, - 2712, 2718, 2721, 2723, 2724, 2728, 2731, 2729, 2725, 2733, - 2736, 2738, 2739, 2740, 2741, 2748, 2745, 2751, 2747, 2752, - 6714, 2759, 2753, 2764, 2757, 2767, 2755, 2773, 2774, 2775, + 2557, 2562, 2570, 2577, 2561, 2572, 2574, 2578, 2588, 2581, + 2583, 2590, 2598, 2595, 2603, 2591, 2604, 2605, 2613, 2602, + 2615, 2617, 2606, 2618, 2625, 2621, 2608, 2624, 2627, 2631, + 2638, 2639, 2635, 2642, 2634, 2651, 2644, 2659, 2664, 2655, + 6721, 2653, 2663, 2647, 2667, 2674, 2670, 2669, 2672, 2671, + 2675, 2680, 2681, 2682, 2689, 2686, 2637, 2688, 2690, 2692, + 2694, 2697, 2693, 2698, 2705, 2708, 2701, 2713, 2715, 6721, + 2718, 2709, 2719, 2720, 2725, 2722, 2727, 2730, 2728, 2732, + 2734, 2736, 2737, 2739, 2740, 2741, 2750, 2746, 2745, 2747, + 2748, 6721, 2759, 2752, 2758, 2760, 2764, 2765, 2770, 2768, - 2765, 2776, 2779, 2782, 2783, 2785, 6714, 2792, 2793, 2784, - 2800, 2795, 2791, 2796, 2802, 2799, 6714, 2803, 2805, 2808, - 2806, 2809, 2817, 2818, 2814, 6714, 2822, 2813, 2824, 2825, - 2828, 2829, 2830, 2834, 2831, 2836, 2837, 2841, 2839, 2842, - 2847, 6714, 2849, 2859, 2854, 2857, 2856, 2860, 2862, 2863, - 2871, 2873, 2867, 2870, 6714, 2886, 2883, 2885, 2894, 2889, - 2875, 2891, 2890, 2892, 2898, 2899, 2900, 2902, 6714, 2903, - 2906, 2907, 2910, 2914, 2912, 2904, 2921, 2920, 2926, 2913, - 2928, 2929, 2931, 2933, 2934, 2935, 2936, 2937, 2947, 2942, - 2949, 2939, 2951, 2961, 2962, 2953, 2964, 2960, 2965, 2968, + 2772, 2778, 2776, 2780, 2782, 2783, 2784, 6721, 2791, 2792, + 2789, 2793, 2795, 2796, 2799, 2801, 2802, 6721, 2803, 2805, + 2806, 2809, 2807, 2811, 2818, 2819, 2814, 6721, 2831, 2821, + 2817, 2826, 2828, 2829, 2830, 2832, 2836, 2838, 2839, 2842, + 2845, 2849, 2850, 6721, 2851, 2859, 2860, 2852, 2854, 2865, + 2866, 2867, 2868, 2871, 2875, 2869, 6721, 2890, 2887, 2886, + 2894, 2889, 2874, 2892, 2896, 2898, 2895, 2899, 2902, 2904, + 6721, 2906, 2905, 2909, 2911, 2914, 2915, 2916, 2928, 2917, + 2921, 2925, 2926, 2930, 2931, 2932, 2936, 2942, 2934, 2944, + 2948, 2946, 2951, 2938, 2954, 2962, 2963, 2959, 2965, 2966, - 2969, 2976, 2977, 2978, 2979, 2982, 6714, 2985, 2986, 2987, - 2973, 2988, 2992, 2993, 2994, 2997, 2975, 2999, 3004, 3002, - 3003, 3011, 3018, 3013, 3014, 3019, 3020, 3021, 3023, 3024, - 3025, 3026, 3035, 3027, 3031, 3034, 3042, 3037, 3040, 3047, - 3048, 3049, 3050, 3052, 3058, 3053, 3055, 3061, 3054, 3059, - 3063, 3064, 3066, 3080, 3081, 3073, 3075, 3083, 3084, 3085, - 6714, 3089, 3090, 3093, 3094, 3096, 3099, 3100, 3109, 3101, - 3102, 3106, 3113, 3118, 3110, 3119, 3120, 3121, 3131, 3124, - 6714, 3126, 6714, 3127, 3128, 3134, 3138, 3136, 6714, 3140, - 6714, 3142, 3147, 3143, 3149, 6714, 3150, 3151, 3154, 3152, + 2967, 2968, 2969, 2976, 2977, 2981, 2978, 2984, 6721, 2987, + 2988, 2982, 2980, 2990, 2993, 2994, 2996, 2999, 2995, 2997, + 3001, 3004, 3008, 3017, 3020, 3010, 3012, 3021, 3022, 3023, + 3024, 3025, 3026, 3031, 3034, 3033, 3035, 3036, 3043, 3039, + 3042, 3051, 3047, 3050, 3052, 3053, 3054, 3056, 3059, 3060, + 3064, 3057, 3063, 3073, 3079, 3081, 3065, 3083, 3075, 3084, + 3086, 3089, 6721, 3092, 3096, 3090, 3094, 3097, 3103, 3104, + 3106, 3107, 3098, 3112, 3115, 3116, 3118, 3121, 3123, 3124, + 3131, 3127, 6721, 3128, 6721, 3129, 3130, 3133, 3142, 3137, + 6721, 3141, 6721, 3145, 3152, 3143, 3147, 6721, 3153, 3149, - 3155, 3157, 3162, 3160, 3163, 3164, 3166, 3167, 3170, 3171, - 3173, 3176, 3178, 3183, 3185, 3186, 3187, 3190, 3194, 3191, - 3196, 3202, 3197, 3200, 3206, 3207, 3208, 6714, 3215, 3209, - 3212, 3218, 3220, 3221, 3223, 3225, 3224, 3227, 3231, 3230, - 3232, 3241, 3237, 3248, 3244, 3245, 3251, 3260, 3255, 3263, - 6714, 3258, 3262, 3259, 3265, 6714, 3268, 3266, 3269, 3276, - 3267, 3274, 3279, 3280, 3284, 3282, 3286, 3287, 3293, 3295, - 3297, 3301, 6714, 3303, 3305, 3288, 3306, 3315, 3322, 3323, - 3319, 3325, 3327, 3335, 3331, 3308, 3330, 3318, 3332, 3338, - 3339, 3340, 3342, 3349, 3344, 3345, 3354, 3346, 3355, 3356, + 3154, 3155, 3158, 3160, 3162, 3165, 3166, 3167, 3168, 3175, + 3171, 3169, 3173, 3179, 3181, 3183, 3189, 3190, 3191, 3192, + 3194, 3195, 3197, 3205, 3198, 3200, 3209, 3202, 3210, 6721, + 3219, 3222, 3214, 3223, 3216, 3212, 3224, 3226, 3229, 3231, + 3233, 3235, 3237, 3239, 3242, 3244, 3247, 3248, 3249, 3250, + 3260, 3258, 3267, 6721, 3262, 3264, 3265, 3266, 6721, 3269, + 3270, 3279, 3281, 3271, 3273, 3275, 3283, 3287, 3277, 3289, + 3292, 3293, 3303, 3300, 3304, 6721, 3306, 3308, 3302, 3314, + 3310, 3322, 3324, 3320, 3328, 3330, 3332, 3333, 3321, 3319, + 3335, 3336, 3339, 3346, 3347, 3343, 3350, 3345, 3352, 3359, - 3357, 3358, 3360, 3361, 3362, 3359, 3229, 3363, 3364, 6714, - 3366, 3369, 3379, 3388, 3370, 3371, 3385, 3386, 3368, 6714, - 3394, 3391, 3396, 3395, 3397, 3399, 3402, 3403, 3404, 3406, - 3408, 3410, 3409, 3412, 6714, 3419, 6714, 3413, 3426, 3425, - 3431, 3420, 3433, 3437, 3436, 3441, 3442, 3443, 3444, 3445, - 3446, 3452, 3449, 3453, 3455, 3457, 3462, 3460, 3463, 3469, - 3470, 3471, 3473, 3480, 3476, 3475, 6714, 6714, 3477, 3478, - 3490, 3484, 3486, 3492, 3493, 3498, 3499, 3501, 3503, 3505, - 3512, 6714, 3513, 3514, 3509, 3515, 3522, 3517, 3526, 3534, - 3532, 3530, 3539, 3536, 6714, 3518, 3540, 3547, 3543, 3546, + 3355, 3349, 3351, 3353, 3361, 3362, 3363, 3364, 3365, 3366, + 3372, 3369, 6721, 3379, 3380, 3381, 3384, 3383, 3385, 3386, + 3393, 3387, 6721, 3396, 3389, 3397, 3398, 3399, 3404, 3411, + 3405, 3412, 3413, 3416, 3414, 3415, 3417, 6721, 3420, 6721, + 3418, 3423, 3437, 3439, 3432, 3428, 3442, 3448, 3441, 3434, + 3450, 3449, 3451, 3457, 3458, 3459, 3460, 3461, 3462, 3469, + 3465, 3466, 3467, 3472, 3475, 3477, 3484, 3482, 3485, 6721, + 6721, 3481, 3491, 3494, 3488, 3492, 3498, 3499, 3496, 3502, + 3510, 3511, 3512, 3519, 6721, 3515, 3516, 3517, 3520, 3527, + 3522, 3524, 3541, 3533, 3534, 3542, 3537, 6721, 3526, 3544, - 3551, 6714, 3550, 6714, 3548, 3552, 3553, 3557, 3559, 3560, - 3563, 3564, 3565, 3566, 3570, 3581, 3582, 3574, 3584, 3578, - 3585, 3586, 3589, 3593, 3596, 3592, 3594, 3595, 6714, 3600, - 3597, 3604, 3602, 3611, 3615, 3609, 3601, 6714, 3612, 3619, - 3623, 3625, 3627, 3628, 3629, 3630, 3632, 3634, 3636, 3633, - 3638, 6714, 3637, 3639, 3652, 3642, 3644, 3651, 3661, 3655, - 3664, 6714, 3665, 3666, 3673, 3669, 3671, 3672, 3676, 3677, - 3678, 3680, 3681, 3682, 3684, 3685, 3690, 3686, 3688, 3695, - 3691, 3703, 3705, 3692, 3713, 3720, 3706, 6714, 3709, 3716, - 3718, 3719, 3721, 3722, 3724, 3730, 3732, 3726, 3741, 3742, + 3551, 3547, 3550, 3555, 6721, 3554, 6721, 3552, 3556, 3557, + 3561, 3563, 3564, 3567, 3568, 3569, 3570, 3574, 3585, 3586, + 3578, 3588, 3582, 3589, 3590, 3593, 3597, 3600, 3596, 3598, + 3599, 6721, 3604, 3601, 3608, 3606, 3615, 3619, 3613, 3605, + 6721, 3616, 3623, 3626, 3625, 3630, 3634, 3631, 3635, 3636, + 3639, 3640, 3641, 3644, 3646, 6721, 3642, 3643, 3657, 3652, + 3649, 3653, 3666, 3668, 3670, 6721, 3672, 3673, 3680, 3676, + 3678, 3660, 3681, 3679, 3683, 3685, 3686, 3687, 3688, 3689, + 3694, 3695, 3691, 3700, 3697, 3702, 3708, 3701, 3712, 3721, + 3718, 6721, 3719, 3723, 3720, 3724, 3725, 3729, 3730, 3733, - 3733, 3737, 3745, 3747, 3755, 3750, 6714, 3762, 3748, 3763, - 3752, 3761, 3760, 3765, 3767, 3769, 3771, 3770, 3773, 3774, - 3776, 3788, 3780, 3783, 3779, 3784, 3795, 3787, 6714, 3802, - 3798, 3790, 3806, 3800, 3809, 3816, 3813, 3814, 3815, 3818, - 3819, 3820, 3823, 3825, 3826, 3829, 3830, 6714, 6714, 3832, - 3833, 3835, 6714, 3837, 3838, 3848, 3839, 3841, 3849, 3851, - 3853, 3852, 3854, 3856, 3862, 3863, 6714, 3864, 3871, 3867, - 3868, 3878, 3874, 6714, 3873, 3883, 3882, 3884, 3885, 3886, - 3890, 3891, 3893, 3895, 3897, 3898, 3907, 3908, 3900, 3904, - 3910, 6714, 3905, 3911, 3912, 3916, 3918, 3921, 6714, 3922, + 3735, 3726, 3741, 3747, 3728, 3737, 3751, 3752, 3759, 3754, + 6721, 3761, 3760, 3768, 3763, 3764, 3766, 3769, 3770, 3772, + 3776, 3773, 3774, 3780, 3777, 3790, 3783, 3785, 3786, 3787, + 3798, 3793, 6721, 3809, 3800, 3801, 3810, 3806, 3811, 3821, + 3818, 3799, 3820, 3823, 3824, 3828, 3825, 3830, 3831, 3834, + 3835, 6721, 6721, 3837, 3838, 3839, 6721, 3840, 3843, 3853, + 3842, 3857, 3844, 3846, 3859, 3851, 3854, 3867, 3862, 3869, + 6721, 3870, 3877, 3872, 3874, 3879, 3876, 6721, 3882, 3889, + 3887, 3890, 3884, 3891, 3894, 3896, 3897, 3898, 3899, 3902, + 3910, 3912, 3907, 3905, 3914, 6721, 3909, 3915, 3917, 3924, - 3924, 3926, 3929, 3931, 3939, 3942, 3932, 3945, 3934, 3947, - 3949, 3951, 3950, 3952, 3959, 3957, 3954, 3958, 3960, 3965, - 3966, 3974, 6714, 3962, 3976, 3977, 3980, 6714, 3982, 3989, - 3990, 6714, 3991, 3986, 3993, 3994, 4001, 6714, 3996, 3999, - 4002, 4000, 4010, 4005, 4013, 4009, 4011, 4015, 4017, 6714, - 4018, 4016, 4019, 6714, 4023, 4021, 4033, 4037, 4034, 4044, - 4039, 4041, 4042, 4040, 6714, 4047, 6714, 4050, 4043, 4056, - 6714, 4051, 4058, 4059, 4061, 4062, 4067, 4068, 4066, 4075, - 4065, 4077, 4076, 4078, 4079, 4082, 4090, 4080, 4091, 4081, - 4088, 6714, 4092, 4089, 4096, 4095, 4108, 4101, 4106, 4103, + 3919, 3921, 6721, 3926, 3928, 3930, 3933, 3935, 3941, 3942, + 3943, 3948, 3949, 3950, 3952, 3951, 3953, 3955, 3963, 3958, + 3962, 3960, 3961, 3967, 3968, 3978, 6721, 3972, 3979, 3980, + 3984, 6721, 3986, 3993, 3994, 6721, 3997, 3989, 3996, 3998, + 4005, 6721, 4002, 4003, 4004, 4006, 4017, 4008, 4018, 4020, + 4009, 4013, 4021, 4022, 6721, 4023, 4024, 4027, 6721, 4036, + 4037, 4041, 4045, 4029, 4048, 4046, 4050, 4047, 4051, 6721, + 4054, 6721, 4058, 4056, 4062, 6721, 4057, 4064, 4065, 4067, + 4071, 4072, 4073, 4079, 4075, 4081, 4083, 4084, 4085, 4086, + 4088, 4095, 4087, 4091, 4094, 4096, 6721, 4097, 4099, 4106, - 4111, 4112, 6714, 6714, 4114, 6714, 4117, 4119, 4121, 6714, - 4123, 4122, 4132, 4127, 4128, 4131, 4140, 4134, 6714, 4146, - 4147, 6714, 4130, 4143, 4156, 4151, 4141, 4152, 4154, 4157, - 4159, 4161, 4162, 4160, 4164, 4165, 4167, 4171, 6714, 4168, - 4169, 4181, 4179, 4183, 4184, 4186, 4194, 4185, 6714, 4195, - 4196, 4197, 4202, 4203, 6714, 4208, 6714, 4206, 4209, 4211, - 4212, 4213, 4222, 6714, 4219, 4220, 4226, 4227, 4228, 4229, - 4230, 4236, 4237, 4238, 4245, 4242, 4243, 4240, 4250, 4246, - 6714, 4248, 4251, 4260, 4261, 4257, 4263, 4270, 4266, 4273, - 4268, 4269, 4279, 4276, 4280, 4289, 4282, 4287, 4284, 6714, + 4103, 4107, 4111, 4113, 4114, 4116, 4118, 6721, 6721, 4127, + 6721, 4119, 4124, 4128, 6721, 4130, 4129, 4138, 4133, 4136, + 4139, 4147, 4134, 6721, 4149, 4151, 6721, 4153, 4154, 4161, + 4156, 4157, 4158, 4164, 4159, 4162, 4169, 4170, 4171, 4172, + 4166, 4173, 4174, 6721, 4167, 4175, 4177, 4191, 4185, 4194, + 4196, 4195, 4197, 6721, 4201, 4202, 4205, 4207, 4208, 6721, + 4209, 6721, 4210, 4211, 4213, 4219, 4216, 4230, 6721, 4227, + 4222, 4232, 4226, 4233, 4237, 4240, 4241, 4242, 4234, 4249, + 4248, 4244, 4247, 4256, 4258, 6721, 4251, 4261, 4263, 4264, + 4267, 4268, 4277, 4269, 4276, 4272, 4273, 4280, 4283, 4284, - 4294, 4293, 4296, 4305, 4297, 4298, 4300, 6714, 4301, 4310, - 4311, 6714, 4308, 4314, 4318, 4320, 4322, 4323, 4326, 4324, - 4325, 4328, 4330, 6714, 4332, 4333, 4331, 4347, 4348, 4329, - 6714, 6714, 4350, 6714, 4354, 4336, 4346, 4337, 4357, 4358, - 4363, 4364, 4366, 4368, 4370, 4371, 4372, 4375, 4383, 4378, - 4390, 4386, 4397, 4392, 4388, 4379, 6714, 6714, 4402, 4403, - 4398, 4406, 4408, 4381, 4410, 4417, 4414, 4412, 4416, 4420, - 4427, 6714, 4422, 4423, 4430, 4424, 6714, 4431, 4432, 4435, - 4433, 4436, 4439, 4438, 4440, 4442, 4445, 4450, 4451, 4446, - 4459, 4452, 4453, 4462, 4463, 4465, 4466, 4468, 4473, 6714, + 4286, 4291, 4292, 4293, 6721, 4294, 4296, 4299, 4308, 4301, + 4305, 4304, 6721, 4309, 4310, 4312, 6721, 4318, 4319, 4323, + 4325, 4322, 4326, 4327, 4328, 4333, 4330, 4329, 6721, 4336, + 4337, 4335, 4341, 4351, 4350, 6721, 6721, 4352, 6721, 4354, + 4338, 4342, 4362, 4363, 4364, 4366, 4367, 4369, 4370, 4374, + 4372, 4379, 6721, 4375, 4387, 4382, 4391, 4399, 4401, 4383, + 4397, 4396, 6721, 6721, 4403, 4406, 4400, 4411, 4412, 4408, + 4415, 4423, 4414, 4424, 4427, 4429, 4428, 6721, 4431, 4398, + 4436, 4430, 6721, 4437, 4438, 4441, 4439, 4442, 4445, 4444, + 4446, 4448, 4449, 4452, 4455, 4457, 4456, 4458, 4465, 4467, - 4469, 4475, 4476, 4480, 4481, 4483, 4485, 4484, 4487, 6714, - 4489, 6714, 4488, 4493, 4491, 4490, 4499, 4509, 4510, 4511, - 4512, 4515, 4516, 4519, 4520, 4530, 4521, 4525, 4531, 4533, - 4535, 4540, 4541, 6714, 4543, 4527, 4537, 4544, 4550, 4552, - 4553, 4555, 4558, 4560, 4562, 4561, 4564, 4568, 4565, 4569, - 4170, 4570, 4571, 6714, 4575, 4574, 4581, 4583, 4585, 4586, - 4588, 4593, 4596, 4587, 4589, 4597, 6714, 4598, 4601, 4608, - 6714, 4602, 4500, 4610, 4611, 4617, 4605, 4614, 4612, 4618, - 6714, 4629, 4621, 4623, 4626, 4631, 4632, 4634, 4635, 4637, - 4642, 4645, 6714, 4653, 4639, 4638, 4652, 4654, 4655, 4656, + 4468, 4469, 4473, 4470, 4476, 6721, 4477, 4478, 4480, 4481, + 4482, 4489, 4490, 4491, 4492, 6721, 4494, 6721, 4501, 4493, + 4496, 4498, 4516, 4505, 4517, 4512, 4518, 4521, 4522, 4527, + 4528, 4536, 4524, 4529, 4537, 4531, 4545, 4547, 4548, 6721, + 4549, 4541, 4550, 4551, 4556, 4558, 4533, 4560, 4562, 4565, + 4566, 4567, 4569, 4574, 4571, 4575, 4576, 4577, 4578, 6721, + 4582, 4589, 4579, 4595, 4583, 4586, 4596, 4602, 4605, 4590, + 4600, 4606, 6721, 4607, 4610, 4612, 6721, 4613, 4614, 4616, + 4617, 4620, 4623, 4625, 4624, 4626, 6721, 4628, 4632, 4636, + 4634, 4635, 4638, 4640, 4644, 4646, 4647, 4651, 6721, 4663, - 4659, 4658, 6714, 4661, 4662, 4670, 4675, 4678, 4671, 4673, - 4680, 4676, 4682, 4683, 4686, 4690, 4689, 4691, 4694, 4695, - 4696, 4707, 4711, 4702, 6714, 4697, 6714, 4709, 4712, 4720, - 4715, 4719, 4721, 4725, 4723, 6714, 4726, 4731, 4733, 4729, - 4727, 6714, 4734, 4735, 4737, 4738, 6714, 4753, 4749, 4739, - 4748, 4741, 4757, 6714, 4762, 4763, 4764, 4771, 4773, 4768, - 4775, 4770, 4778, 4776, 4772, 4780, 4781, 4789, 4787, 4785, - 6714, 4791, 4793, 4798, 4800, 4794, 4802, 4792, 4804, 4807, - 4809, 6714, 4810, 4813, 4814, 4816, 4817, 4818, 4819, 4826, - 4823, 4825, 4827, 4828, 4831, 4832, 6714, 4837, 4835, 4839, + 4650, 4659, 4660, 4658, 4661, 4667, 4668, 4670, 6721, 4672, + 4675, 4676, 4684, 4685, 4681, 4682, 4692, 4689, 4690, 4687, + 4693, 4698, 4699, 4700, 4704, 4705, 4703, 4716, 4721, 4707, + 6721, 4718, 6721, 4719, 4722, 4726, 4724, 4727, 4729, 4732, + 4731, 6721, 4734, 4739, 4741, 4742, 4735, 6721, 4746, 4743, + 4745, 4749, 6721, 4762, 4747, 4748, 4754, 4764, 4769, 6721, + 4772, 4773, 4774, 4781, 4783, 4778, 4785, 4780, 4788, 4786, + 4782, 4790, 4791, 4799, 4797, 4795, 6721, 4801, 4803, 4808, + 4810, 4804, 4812, 4802, 4814, 4817, 4819, 6721, 4820, 4823, + 4824, 4826, 4827, 4828, 4829, 4836, 4833, 4835, 4837, 4838, - 4848, 4850, 4852, 6714, 4855, 6714, 4845, 4840, 4857, 4856, - 4861, 6714, 6714, 4863, 4871, 4866, 4869, 4870, 6714, 6714, - 4873, 6714, 4874, 6714, 4875, 4877, 6714, 6714, 4876, 4880, - 4883, 4885, 4886, 4888, 6714, 4895, 6714, 4902, 4897, 4884, - 4899, 4903, 6714, 4901, 4907, 4905, 4911, 4913, 6714, 4909, - 4922, 4914, 4915, 6714, 4925, 4926, 4919, 4927, 6714, 4933, - 4936, 4937, 4928, 4931, 4939, 4941, 4947, 4948, 4951, 4949, - 4950, 4952, 4953, 4956, 4960, 4965, 4967, 4957, 4968, 4971, - 4973, 4977, 4975, 4979, 4980, 4981, 4982, 4984, 4989, 4983, - 4991, 4994, 4985, 4995, 4997, 4998, 5005, 5006, 5008, 5009, + 4841, 4842, 6721, 4847, 4845, 4849, 4858, 4860, 4862, 6721, + 4865, 6721, 4855, 4850, 4867, 4866, 4871, 6721, 6721, 4873, + 4881, 4876, 4879, 4880, 6721, 6721, 4883, 6721, 4884, 6721, + 4885, 4887, 6721, 6721, 4886, 4890, 4893, 4895, 4896, 4898, + 6721, 4905, 6721, 4912, 4907, 4894, 4909, 4913, 6721, 4911, + 4917, 4915, 4921, 4923, 6721, 4919, 4932, 4924, 4925, 6721, + 4935, 4936, 4929, 4937, 6721, 4943, 4946, 4947, 4938, 4941, + 4949, 4951, 4957, 4958, 4961, 4959, 4960, 4962, 4963, 4966, + 4970, 4975, 4977, 4967, 4978, 4981, 4983, 4987, 4985, 4989, + 4990, 4991, 4992, 4994, 4999, 4993, 5001, 5004, 4756, 4995, - 5013, 5014, 5015, 5016, 5017, 5018, 5019, 5021, 5020, 5026, - 5031, 5035, 5024, 5034, 6714, 5027, 5037, 5040, 5047, 5046, - 5048, 5051, 5055, 5058, 5061, 6714, 5064, 6714, 5066, 5052, - 5068, 5069, 5071, 6714, 5072, 5073, 5074, 5075, 5076, 5077, - 5078, 5081, 5082, 5084, 5089, 6714, 5094, 5098, 5083, 5099, - 5104, 6714, 5106, 5110, 5107, 5111, 5113, 5116, 5114, 5117, - 5118, 5119, 5122, 5124, 5126, 5127, 5130, 5140, 5142, 5143, - 5133, 5144, 5128, 5148, 5149, 5150, 5152, 5153, 5155, 5161, - 5163, 5167, 6714, 5156, 6714, 5164, 5168, 5169, 5171, 5174, - 5177, 5176, 5178, 6714, 6714, 5180, 5183, 5185, 5188, 5189, + 5008, 5005, 5006, 5014, 5016, 5018, 5021, 5022, 5023, 5024, + 5027, 4495, 5025, 5028, 5030, 5029, 5033, 5037, 5042, 5043, + 6721, 5035, 5045, 5047, 5048, 5052, 5054, 5055, 5062, 5064, + 5068, 6721, 5071, 6721, 5073, 5065, 5075, 5076, 5077, 6721, + 5078, 5079, 5080, 5081, 5082, 5084, 5085, 5088, 5089, 5093, + 5099, 6721, 5106, 5096, 5090, 5094, 5114, 6721, 5109, 5116, + 5117, 5119, 5120, 5121, 5122, 5123, 5126, 5124, 5129, 5131, + 5125, 5132, 5133, 5147, 5149, 5144, 5134, 5151, 5153, 5154, + 5155, 5156, 5157, 5158, 5159, 5165, 5167, 5171, 6721, 5162, + 6721, 5173, 5174, 5175, 5178, 5179, 5180, 5183, 5186, 6721, - 5193, 5190, 5194, 5195, 6714, 5198, 5202, 5205, 5208, 6714, - 5210, 5211, 5212, 5215, 6714, 5216, 5217, 5218, 5220, 5223, - 5230, 5233, 5227, 5224, 5234, 5235, 5244, 6714, 6714, 6714, - 6714, 5247, 5237, 5250, 5239, 5241, 5251, 5253, 5256, 5258, - 5261, 5263, 6714, 5267, 6714, 6714, 5264, 5268, 5270, 5271, - 5272, 5274, 5277, 5275, 6714, 5279, 5282, 5285, 5288, 5292, - 5296, 5297, 5289, 5299, 5300, 5301, 5304, 5305, 5315, 5311, - 5312, 5310, 5314, 5318, 5321, 6714, 6714, 5324, 5327, 5328, - 5335, 5333, 5336, 5330, 5345, 5342, 5343, 5340, 5332, 5350, - 5351, 5359, 5360, 5352, 5355, 6714, 5356, 5361, 5362, 6714, + 6721, 5188, 5189, 5191, 5194, 5195, 5197, 5199, 5200, 5202, + 6721, 5201, 5207, 5218, 5212, 6721, 5204, 5214, 5220, 5222, + 6721, 5223, 5224, 5226, 5228, 5229, 5232, 5236, 5237, 5238, + 5239, 5242, 5244, 6721, 6721, 6721, 6721, 5249, 5245, 5253, + 5247, 5255, 5256, 5257, 5261, 5259, 5263, 5264, 6721, 5272, + 6721, 6721, 5269, 5273, 5275, 5276, 5277, 5280, 5282, 5284, + 6721, 5286, 5288, 5290, 5287, 5297, 5304, 5300, 5294, 5307, + 5308, 5309, 5298, 5310, 5317, 5318, 5319, 5312, 5321, 5325, + 5330, 6721, 6721, 5322, 5332, 5333, 5340, 5337, 5338, 5341, + 5350, 5345, 5346, 5347, 5348, 5352, 5353, 5364, 5365, 5357, - 5364, 6714, 5368, 5369, 5370, 5371, 5377, 5378, 5379, 5381, - 6714, 6714, 5375, 5389, 5385, 6714, 6714, 5382, 5392, 5394, - 5396, 5397, 5398, 5399, 5400, 5403, 5405, 6714, 5406, 6714, - 5407, 5410, 5419, 5409, 5422, 5426, 5411, 5431, 5433, 5428, - 5430, 6714, 5437, 5438, 6714, 5445, 5440, 5444, 5441, 5442, - 6714, 5449, 5447, 5453, 5459, 6714, 5461, 5462, 5463, 6714, - 5470, 6714, 5454, 5467, 5464, 5479, 5471, 6714, 5475, 5480, - 6714, 5485, 5487, 5488, 5477, 5489, 6714, 5493, 5482, 6714, - 5494, 5497, 5498, 5504, 5501, 5506, 5507, 5508, 5509, 5517, - 5513, 5515, 6714, 6714, 5524, 5522, 135, 5531, 5510, 5521, + 5354, 6721, 5361, 5367, 5370, 6721, 5369, 6721, 5371, 5375, + 5377, 5378, 5379, 5383, 5384, 5387, 6721, 6721, 5382, 5399, + 5397, 6721, 6721, 5386, 5389, 5394, 5402, 5404, 5398, 5406, + 5407, 5419, 5408, 6721, 5410, 6721, 5412, 5416, 5424, 5414, + 5434, 5435, 5426, 5436, 5438, 5433, 5440, 6721, 5442, 5443, + 6721, 5452, 5447, 5449, 5448, 5454, 6721, 5457, 5455, 5460, + 5464, 6721, 5466, 5467, 5470, 6721, 5477, 6721, 5461, 5474, + 5468, 5484, 5482, 6721, 5472, 5485, 6721, 5488, 5490, 5493, + 5491, 5495, 6721, 5498, 5499, 6721, 5500, 5502, 5505, 5510, + 5503, 5512, 5513, 5507, 5514, 5521, 5523, 5527, 6721, 6721, - 5528, 5529, 5538, 5534, 5536, 5543, 6714, 6714, 5539, 6714, - 5537, 5546, 6714, 5547, 5550, 5551, 5556, 5555, 5557, 5558, - 5554, 5562, 5563, 5576, 5566, 5564, 5581, 5571, 5591, 5567, - 5593, 5594, 5596, 5598, 5600, 5588, 5602, 5603, 5582, 5605, - 5606, 5609, 5611, 5612, 5613, 6714, 5616, 5618, 5619, 5621, - 6714, 5627, 5624, 5629, 5630, 6714, 5637, 5634, 5638, 5640, - 5641, 6714, 5642, 5645, 5648, 5646, 5651, 5653, 5569, 5662, - 5654, 5657, 5659, 6714, 6714, 6714, 5668, 5672, 6714, 5675, - 5665, 5658, 5669, 6714, 5677, 5680, 5678, 6714, 6714, 5681, - 5686, 5684, 6714, 5682, 5694, 6714, 5685, 6714, 5692, 6714, + 5530, 5529, 135, 5538, 5516, 5533, 5535, 5536, 5546, 5519, + 5541, 5548, 6721, 6721, 5549, 6721, 5543, 5556, 6721, 5550, + 5557, 5561, 5552, 5558, 5564, 5565, 5566, 5568, 5572, 5573, + 5574, 5571, 5579, 5595, 5597, 5581, 5578, 5592, 5598, 5601, + 5603, 5605, 5606, 5607, 5583, 5608, 5610, 5612, 5614, 5615, + 5616, 6721, 5619, 5625, 5628, 5620, 6721, 5633, 5630, 5640, + 5641, 6721, 5643, 5644, 5645, 5647, 5648, 6721, 5634, 5650, + 5622, 5651, 5655, 5658, 5661, 5665, 5662, 5663, 5666, 6721, + 6721, 6721, 5668, 5678, 6721, 5680, 5667, 5671, 5682, 6721, + 5684, 5685, 5686, 6721, 6721, 5687, 5688, 5690, 6721, 5689, - 5695, 5696, 5698, 5703, 6714, 5704, 5705, 5707, 5710, 6714, - 5716, 5720, 5723, 5708, 5724, 5726, 5725, 6714, 5733, 5729, - 5731, 5738, 5728, 5735, 5732, 5743, 5739, 5755, 5740, 5742, - 6714, 5750, 5751, 5758, 5759, 5752, 5761, 5762, 6714, 5764, - 6714, 5767, 6714, 5768, 5769, 5770, 5778, 5772, 5773, 5775, - 5780, 5789, 5786, 5779, 5791, 5794, 5796, 6714, 6714, 5799, - 5801, 6714, 5802, 6714, 5804, 6714, 5805, 5806, 5807, 5808, - 5809, 6714, 5811, 5813, 5816, 5826, 5818, 5819, 6714, 5827, - 5829, 5830, 5832, 6714, 6714, 5834, 5842, 5835, 6714, 5837, - 5845, 5847, 5848, 5850, 5852, 5853, 5856, 5855, 5866, 5839, + 5697, 6721, 5692, 6721, 5695, 6721, 5701, 5702, 5710, 5705, + 6721, 5703, 5713, 5715, 5717, 6721, 5720, 5723, 5725, 5727, + 5728, 5730, 5732, 6721, 5739, 5735, 5738, 5742, 5734, 5744, + 5745, 5746, 5747, 5759, 5750, 5755, 6721, 5757, 5758, 5762, + 5768, 5760, 5770, 5771, 6721, 5764, 6721, 5773, 6721, 5774, + 5776, 5777, 5782, 5778, 5780, 5788, 5790, 5792, 5797, 5783, + 5798, 5803, 5800, 6721, 6721, 5805, 5808, 6721, 5809, 6721, + 5811, 6721, 5812, 5813, 5815, 5816, 5817, 6721, 5826, 5814, + 5818, 5837, 5821, 5823, 6721, 5835, 5833, 5838, 5840, 6721, + 6721, 5841, 5849, 5845, 6721, 5846, 5852, 5854, 5848, 5855, - 5857, 5861, 5868, 5862, 5873, 5879, 5883, 6714, 6714, 6714, - 5874, 5872, 5891, 5888, 5890, 5895, 5878, 6714, 5894, 5898, - 5900, 5901, 5908, 5904, 5907, 6714, 5903, 5909, 5910, 5911, - 5913, 5914, 5916, 5917, 6714, 5919, 5929, 5925, 5923, 5931, - 5939, 5941, 5943, 5934, 5944, 5951, 5948, 6714, 5950, 6714, - 6714, 5946, 6714, 5952, 5954, 5956, 5955, 5957, 6714, 5960, - 5961, 5962, 5964, 5963, 5971, 5967, 5969, 6714, 5979, 5972, - 5982, 5984, 6714, 6714, 5985, 5991, 6714, 5994, 5995, 5988, - 6003, 5986, 5996, 6008, 6005, 6714, 6009, 6011, 5999, 6012, - 6015, 6014, 6017, 6714, 6021, 6018, 6022, 6024, 6714, 6025, + 5859, 5856, 5860, 5862, 5870, 5865, 5871, 5866, 5873, 5874, + 5876, 5877, 5887, 6721, 6721, 6721, 5881, 5885, 5896, 5892, + 5894, 5901, 5898, 6721, 5899, 5903, 5906, 5900, 5913, 5908, + 5910, 6721, 5912, 5914, 5915, 5917, 5921, 5918, 5922, 5927, + 6721, 5929, 5934, 5939, 5931, 5941, 5943, 5948, 5950, 5951, + 5935, 5958, 5954, 6721, 5956, 6721, 6721, 5953, 6721, 5957, + 5960, 5962, 5963, 5965, 6721, 5968, 5969, 5970, 5973, 5971, + 5974, 5976, 5978, 6721, 5986, 5984, 5988, 5992, 6721, 6721, + 5990, 5994, 6721, 5999, 5996, 6000, 6008, 6003, 6005, 6010, + 6012, 6721, 6016, 6018, 6006, 6019, 6022, 6021, 6024, 6721, - 6030, 6031, 6033, 6034, 6714, 6035, 6027, 6051, 6036, 6714, - 6038, 6050, 6052, 6714, 6714, 6056, 6060, 6057, 6714, 6714, - 6714, 6063, 6064, 6066, 6068, 6714, 6071, 6075, 6079, 6081, - 6086, 6074, 6714, 6082, 6088, 6090, 6091, 6092, 6714, 6714, - 6093, 6094, 6095, 6099, 6096, 6714, 6714, 6101, 6103, 6104, - 6102, 6105, 6714, 6107, 6112, 6119, 6115, 6121, 6128, 6130, - 6123, 6131, 6132, 6140, 6143, 6133, 6135, 6142, 6146, 6147, - 6145, 6149, 6159, 6154, 6156, 6162, 6157, 6165, 6714, 6714, - 6167, 6714, 6169, 6171, 6714, 6714, 6174, 6176, 6178, 6182, - 6714, 6184, 6186, 6188, 6190, 6179, 6714, 6191, 6193, 6194, + 6028, 6025, 6029, 6031, 6721, 6032, 6037, 6038, 6040, 6041, + 6721, 6042, 6034, 6058, 6043, 6721, 6045, 6057, 6059, 6721, + 6721, 6063, 6067, 6064, 6721, 6721, 6721, 6070, 6071, 6073, + 6075, 6721, 6078, 6082, 6086, 6088, 6093, 6081, 6721, 6089, + 6095, 6097, 6098, 6099, 6721, 6721, 6100, 6101, 6102, 6106, + 6103, 6721, 6721, 6108, 6110, 6111, 6109, 6112, 6721, 6114, + 6119, 6126, 6122, 6128, 6135, 6137, 6130, 6138, 6139, 6147, + 6150, 6140, 6142, 6149, 6153, 6154, 6152, 6156, 6166, 6161, + 6163, 6169, 6164, 6172, 6721, 6721, 6174, 6721, 6176, 6178, + 6721, 6721, 6181, 6183, 6185, 6189, 6721, 6191, 6193, 6195, - 6195, 6196, 6714, 6198, 6199, 6202, 6204, 6208, 6210, 6211, - 6214, 6714, 6209, 6226, 6714, 6714, 6215, 6217, 6206, 6227, - 6223, 6714, 6231, 6235, 6230, 6237, 6236, 6238, 6243, 6714, - 6239, 6240, 6714, 6714, 6246, 6247, 6714, 6714, 6248, 6714, - 6714, 6714, 6714, 6714, 6714, 6714, 6714, 6252, 6251, 6714, - 6253, 6261, 6264, 6714, 6268, 6714, 6258, 6269, 6271, 6265, - 6714, 6270, 6714, 6272, 6276, 6277, 6286, 6279, 6289, 6280, - 6273, 6283, 6291, 6296, 6297, 6299, 6298, 6300, 6302, 6304, - 6314, 6306, 6311, 6714, 6714, 6714, 6303, 6315, 6319, 6320, - 6325, 6327, 6331, 6333, 6322, 6334, 6336, 6337, 6338, 6340, + 6197, 6186, 6721, 6198, 6200, 6201, 6202, 6203, 6721, 6205, + 6206, 6209, 6211, 6215, 6217, 6218, 6221, 6721, 6216, 6233, + 6721, 6721, 6222, 6224, 6213, 6234, 6230, 6721, 6238, 6242, + 6237, 6244, 6243, 6245, 6250, 6721, 6246, 6247, 6721, 6721, + 6253, 6254, 6721, 6721, 6255, 6721, 6721, 6721, 6721, 6721, + 6721, 6721, 6721, 6259, 6258, 6721, 6260, 6268, 6271, 6721, + 6275, 6721, 6265, 6276, 6278, 6272, 6721, 6277, 6721, 6279, + 6283, 6284, 6293, 6286, 6296, 6287, 6280, 6290, 6298, 6303, + 6304, 6306, 6305, 6307, 6309, 6311, 6321, 6313, 6318, 6721, + 6721, 6721, 6310, 6322, 6326, 6327, 6332, 6334, 6338, 6340, - 6344, 6351, 6346, 6349, 6347, 6356, 6348, 6358, 6714, 6363, - 6364, 6350, 6367, 6714, 6370, 6714, 6353, 6714, 6714, 6373, - 6374, 6376, 6377, 6386, 6387, 6378, 6382, 6383, 6388, 6390, - 6714, 6398, 6714, 6714, 6391, 6394, 6714, 6399, 6400, 6714, - 6401, 6403, 6405, 6406, 6407, 6409, 6410, 6411, 6418, 6714, - 6714, 6422, 6423, 6425, 6427, 6429, 6436, 6431, 6433, 6435, - 6443, 6437, 6445, 6714, 6447, 6449, 6451, 6714, 6453, 6452, - 6455, 6458, 6459, 6466, 6461, 6463, 6714, 6464, 6714, 6468, - 6470, 6469, 6472, 6473, 6475, 6483, 6481, 6485, 6714, 6487, - 6489, 6493, 6494, 6496, 6499, 6500, 6501, 6503, 6505, 6506, + 6329, 6341, 6343, 6344, 6345, 6347, 6351, 6358, 6353, 6356, + 6354, 6363, 6355, 6365, 6721, 6370, 6371, 6357, 6374, 6721, + 6377, 6721, 6360, 6721, 6721, 6380, 6381, 6383, 6384, 6393, + 6394, 6385, 6389, 6390, 6395, 6397, 6721, 6405, 6721, 6721, + 6398, 6401, 6721, 6406, 6407, 6721, 6408, 6410, 6412, 6413, + 6414, 6416, 6417, 6418, 6425, 6721, 6721, 6429, 6430, 6432, + 6434, 6436, 6443, 6438, 6440, 6442, 6450, 6444, 6452, 6721, + 6454, 6456, 6458, 6721, 6460, 6459, 6462, 6465, 6466, 6473, + 6468, 6470, 6721, 6471, 6721, 6475, 6477, 6476, 6479, 6480, + 6482, 6490, 6488, 6492, 6721, 6494, 6496, 6500, 6501, 6503, - 6515, 6509, 6511, 6517, 6519, 6521, 6714, 6523, 6525, 6714, - 6526, 6527, 6528, 6529, 6533, 6714, 6538, 6530, 6535, 6541, - 6546, 6543, 6714, 6552, 6556, 6553, 6714, 6557, 6714, 6714, - 6558, 6559, 6561, 6565, 6567, 6714, 6714, 6714, 6594, 6601, - 6608, 6615, 6622, 6629, 6636, 88, 6643, 6650, 6657, 6664, - 6671, 6678, 6685, 6692, 6699, 6706 + 6506, 6507, 6508, 6510, 6512, 6513, 6522, 6516, 6518, 6524, + 6526, 6528, 6721, 6530, 6532, 6721, 6533, 6534, 6535, 6536, + 6540, 6721, 6545, 6537, 6542, 6548, 6553, 6550, 6721, 6559, + 6563, 6560, 6721, 6564, 6721, 6721, 6565, 6566, 6568, 6572, + 6574, 6721, 6721, 6721, 6601, 6608, 6615, 6622, 6629, 6636, + 6643, 88, 6650, 6657, 6664, 6671, 6678, 6685, 6692, 6699, + 6706, 6713 } ; -static const flex_int16_t yy_def[3457] = +static const flex_int16_t yy_def[3463] = { 0, - 3438, 1, 3439, 3439, 3440, 3440, 3441, 3441, 3442, 3442, - 3443, 3443, 3444, 3444, 3445, 3445, 3438, 3446, 3438, 3438, - 3438, 3438, 3447, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3448, 3438, 3438, 3438, - 3448, 3449, 3438, 3438, 3438, 3449, 3450, 3438, 3438, 3438, - 3438, 3450, 3451, 3438, 3438, 3438, 3451, 3452, 3438, 3453, - 3438, 3452, 3452, 3454, 3438, 3438, 3438, 3438, 3454, 3455, - 3438, 3438, 3438, 3455, 3446, 3446, 3438, 3456, 3447, 3456, - 3447, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3444, 1, 3445, 3445, 3446, 3446, 3447, 3447, 3448, 3448, + 3449, 3449, 3450, 3450, 3451, 3451, 3444, 3452, 3444, 3444, + 3444, 3444, 3453, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3454, 3444, 3444, 3444, + 3454, 3455, 3444, 3444, 3444, 3455, 3456, 3444, 3444, 3444, + 3444, 3456, 3457, 3444, 3444, 3444, 3457, 3458, 3444, 3459, + 3444, 3458, 3458, 3460, 3444, 3444, 3444, 3444, 3460, 3461, + 3444, 3444, 3444, 3461, 3452, 3452, 3444, 3462, 3453, 3462, + 3453, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3448, - 3448, 3449, 3449, 3450, 3450, 3438, 3451, 3451, 3452, 3452, - 3453, 3453, 3452, 3454, 3454, 3438, 3455, 3455, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3454, + 3454, 3455, 3455, 3456, 3456, 3444, 3457, 3457, 3458, 3458, + 3459, 3459, 3458, 3460, 3460, 3444, 3461, 3461, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3452, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3458, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3452, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3458, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3438, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3444, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3438, 3446, 3446, 3452, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3444, 3452, 3452, 3458, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3452, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, - 3438, 3438, 3446, 3438, 3438, 3446, 3446, 3438, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3458, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, + 3444, 3444, 3452, 3444, 3444, 3452, 3452, 3444, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3452, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3438, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3458, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3444, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3438, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, - 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, - 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3444, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, + 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, + 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, - 3446, 3446, 3446, 3446, 3452, 3452, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, + 3452, 3452, 3452, 3452, 3452, 3458, 3458, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3452, - 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, + 3452, 3458, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3438, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3438, 3446, - 3438, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3444, 3452, 3444, 3452, 3452, 3452, 3452, 3452, + 3444, 3452, 3444, 3452, 3452, 3452, 3452, 3444, 3452, 3452, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, - 3446, 3452, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3438, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, + 3452, 3452, 3452, 3452, 3458, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3444, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3438, 3446, 3438, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3438, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3444, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, + 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, - 3446, 3438, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, - 3452, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3452, 3452, 3452, 3452, 3444, 3452, 3444, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3444, 3452, 3452, 3452, 3458, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3438, 3446, - 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, - 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3444, 3444, 3452, 3452, 3452, 3444, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3438, 3446, 3446, - 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3452, 3446, 3438, - 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3438, 3446, 3438, 3446, 3446, 3446, - 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, + 3452, 3444, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, + 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3458, 3452, 3444, 3452, 3452, 3452, 3444, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, + 3452, 3444, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, - 3446, 3446, 3438, 3438, 3446, 3438, 3446, 3446, 3446, 3438, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, - 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, - 3446, 3446, 3446, 3446, 3438, 3446, 3438, 3446, 3446, 3446, - 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3444, 3452, + 3444, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3444, 3452, 3452, 3444, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3444, + 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, - 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, - 3438, 3438, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3452, - 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3438, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3438, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, + 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3444, 3452, 3452, 3452, 3444, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, + 3452, 3452, 3452, 3452, 3452, 3444, 3444, 3452, 3444, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3444, 3452, 3452, 3458, 3452, 3452, 3452, 3452, + 3452, 3452, 3444, 3444, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, + 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, - 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, - 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3444, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3444, 3452, 3452, 3452, 3444, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, - 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3438, 3446, 3438, 3446, 3446, 3446, - 3446, 3446, 3446, 3452, 3446, 3438, 3446, 3446, 3446, 3446, - 3446, 3438, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, - 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3444, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3458, + 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, + 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3444, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3446, 3446, 3446, 3438, 3446, 3438, 3446, 3446, 3446, 3446, - 3446, 3438, 3438, 3446, 3446, 3446, 3446, 3446, 3438, 3438, - 3446, 3438, 3446, 3438, 3446, 3446, 3438, 3438, 3446, 3446, - 3446, 3446, 3446, 3446, 3438, 3446, 3438, 3446, 3446, 3446, - 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3438, 3446, - 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3438, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3444, + 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3444, 3444, 3452, + 3452, 3452, 3452, 3452, 3444, 3444, 3452, 3444, 3452, 3444, + 3452, 3452, 3444, 3444, 3452, 3452, 3452, 3452, 3452, 3452, + 3444, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3444, 3452, + 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3444, + 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3452, - 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3438, 3446, 3446, - 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, - 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3438, 3446, 3438, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3438, 3438, 3446, 3446, 3446, 3446, 3446, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3458, 3452, 3452, 3452, 3452, + 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3444, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3444, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, + 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, - 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3438, - 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3438, 3438, - 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3438, 3446, 3438, 3438, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3452, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3438, 3438, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3438, + 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3444, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, + 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3444, 3444, 3444, 3444, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, + 3444, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3458, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3444, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3438, 3438, 3446, 3446, 3446, 3438, 3438, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3438, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3438, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, - 3438, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3438, - 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, - 3438, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3438, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3438, 3438, 3446, 3446, 3452, 3446, 3446, 3446, + 3452, 3444, 3452, 3452, 3452, 3444, 3452, 3444, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3444, 3452, 3452, + 3452, 3444, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3444, 3452, 3444, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, + 3444, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, + 3452, 3444, 3452, 3452, 3452, 3444, 3452, 3444, 3452, 3452, + 3452, 3452, 3452, 3444, 3452, 3452, 3444, 3452, 3452, 3452, + 3452, 3452, 3444, 3452, 3452, 3444, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3444, - 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3438, 3446, 3438, - 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, - 3438, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, - 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3438, 3438, 3438, 3446, 3446, 3438, 3446, - 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3438, 3438, 3446, - 3446, 3446, 3438, 3446, 3446, 3438, 3446, 3438, 3446, 3438, + 3452, 3452, 3458, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3444, 3444, 3452, 3444, 3452, 3452, 3444, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3444, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, + 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, + 3444, 3444, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3444, + 3452, 3452, 3452, 3444, 3444, 3452, 3452, 3452, 3444, 3452, - 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3438, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, - 3438, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3438, 3446, - 3446, 3438, 3446, 3438, 3446, 3438, 3446, 3446, 3446, 3446, - 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, - 3446, 3446, 3446, 3438, 3438, 3446, 3446, 3446, 3438, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3452, 3444, 3452, 3444, 3452, 3444, 3452, 3452, 3452, 3452, + 3444, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3444, 3452, 3444, 3452, 3444, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3444, 3444, 3452, 3452, 3444, 3452, 3444, + 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, + 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3444, + 3444, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3438, 3438, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3438, - 3438, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3438, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, - 3446, 3446, 3438, 3438, 3446, 3446, 3438, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3438, 3446, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3444, 3444, 3444, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3444, 3452, 3444, 3444, 3452, 3444, 3452, + 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3444, 3444, + 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, - 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3438, - 3446, 3446, 3446, 3438, 3438, 3446, 3446, 3446, 3438, 3438, - 3438, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, - 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3438, 3438, - 3446, 3446, 3446, 3446, 3446, 3438, 3438, 3446, 3446, 3446, - 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3438, - 3446, 3438, 3446, 3446, 3438, 3438, 3446, 3446, 3446, 3446, - 3438, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, + 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, + 3444, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3444, + 3444, 3452, 3452, 3452, 3444, 3444, 3444, 3452, 3452, 3452, + 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, + 3452, 3452, 3452, 3452, 3444, 3444, 3452, 3452, 3452, 3452, + 3452, 3444, 3444, 3452, 3452, 3452, 3452, 3452, 3444, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3444, 3444, 3452, 3444, 3452, 3452, + 3444, 3444, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, - 3446, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3438, 3446, 3446, 3438, 3438, 3446, 3446, 3446, 3446, - 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, - 3446, 3446, 3438, 3438, 3446, 3446, 3438, 3438, 3446, 3438, - 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3446, 3446, 3438, - 3446, 3446, 3446, 3438, 3446, 3438, 3446, 3446, 3446, 3446, - 3438, 3446, 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3438, 3438, 3438, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3444, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, + 3444, 3444, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3444, 3444, + 3452, 3452, 3444, 3444, 3452, 3444, 3444, 3444, 3444, 3444, + 3444, 3444, 3444, 3452, 3452, 3444, 3452, 3452, 3452, 3444, + 3452, 3444, 3452, 3452, 3452, 3452, 3444, 3452, 3444, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, + 3444, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, - 3446, 3446, 3446, 3438, 3446, 3438, 3446, 3438, 3438, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3438, 3446, 3438, 3438, 3446, 3446, 3438, 3446, 3446, 3438, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, - 3438, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3438, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3438, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3444, + 3452, 3444, 3452, 3444, 3444, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3444, 3444, + 3452, 3452, 3444, 3452, 3452, 3444, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3444, 3444, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, + 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3444, 3452, 3444, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, - 3446, 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3438, - 3446, 3446, 3446, 3446, 3446, 3438, 3446, 3446, 3446, 3446, - 3446, 3446, 3438, 3446, 3446, 3446, 3438, 3446, 3438, 3438, - 3446, 3446, 3446, 3446, 3446, 3438, 3438, 0, 3438, 3438, - 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, - 3438, 3438, 3438, 3438, 3438, 3438 + 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3452, 3452, 3444, 3452, 3452, 3444, 3452, 3452, 3452, 3452, + 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, + 3452, 3452, 3444, 3452, 3444, 3444, 3452, 3452, 3452, 3452, + 3452, 3444, 3444, 0, 3444, 3444, 3444, 3444, 3444, 3444, + 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, + 3444, 3444 } ; -static const flex_int16_t yy_nxt[6755] = +static const flex_int16_t yy_nxt[6762] = { 0, 18, 19, 20, 21, 22, 23, 22, 18, 18, 18, 18, 18, 22, 24, 25, 26, 27, 28, 29, 30, @@ -1776,531 +1779,532 @@ static const flex_int16_t yy_nxt[6755] = 1104, 1094, 86, 1101, 86, 1103, 86, 86, 86, 1099, 1105, 86, 1108, 1110, 86, 1098, 86, 1100, 86, 86, - 1102, 86, 1109, 86, 1107, 1115, 1106, 86, 1112, 86, - 1116, 170, 86, 1118, 1111, 1113, 1117, 1114, 86, 1119, - 86, 86, 86, 86, 86, 1122, 86, 86, 86, 1120, - 86, 1135, 1121, 166, 86, 1138, 86, 1125, 1136, 1126, - 1123, 86, 86, 1137, 1127, 86, 1124, 86, 1128, 86, - 86, 1140, 1129, 86, 1130, 1143, 1145, 1141, 1131, 1142, - 1132, 1146, 86, 86, 86, 1133, 1139, 1144, 86, 86, - 1134, 86, 1147, 1149, 86, 86, 1152, 86, 1148, 1155, - 86, 86, 86, 1151, 86, 1150, 1153, 1154, 1160, 86, + 1102, 166, 1109, 86, 1107, 86, 1106, 86, 1112, 86, + 1113, 1116, 86, 1119, 1111, 86, 1117, 170, 86, 1120, + 1118, 1121, 86, 1114, 86, 1115, 86, 1123, 86, 86, + 86, 86, 1122, 86, 1124, 86, 1136, 1137, 1139, 86, + 1126, 1127, 86, 86, 86, 86, 1138, 1141, 1125, 1128, + 86, 1129, 86, 86, 1148, 1130, 86, 1131, 1144, 1142, + 1146, 1132, 86, 1133, 1143, 1147, 86, 1140, 1134, 86, + 1145, 86, 86, 1135, 86, 1150, 1149, 1156, 86, 1153, + 86, 86, 86, 86, 1152, 86, 86, 1151, 86, 1154, - 1162, 1156, 1163, 1159, 1161, 1158, 86, 1165, 86, 1164, - 86, 1157, 86, 1166, 86, 86, 86, 86, 86, 86, - 86, 86, 1181, 1178, 86, 86, 86, 86, 1177, 1182, - 86, 86, 1180, 86, 1168, 1169, 1167, 86, 1170, 1179, - 1184, 1183, 1188, 1171, 86, 1172, 1185, 1187, 86, 1186, - 86, 1173, 86, 86, 86, 1189, 1174, 1175, 1194, 86, - 86, 86, 1191, 1176, 1190, 1195, 86, 1197, 86, 1192, - 86, 1198, 1193, 86, 86, 1200, 1202, 86, 86, 86, - 1196, 86, 86, 1203, 86, 1199, 1208, 1201, 1205, 86, - 1206, 86, 86, 86, 86, 86, 1204, 86, 1209, 1211, + 1155, 1161, 1160, 1162, 1157, 1163, 1159, 1164, 1165, 86, + 1166, 86, 1158, 86, 1167, 86, 86, 86, 1168, 86, + 86, 86, 86, 86, 1182, 86, 1179, 86, 86, 1178, + 1183, 86, 86, 86, 86, 1169, 1180, 1170, 86, 1171, + 1181, 1184, 1189, 1188, 1172, 1185, 1173, 86, 86, 86, + 86, 1186, 1174, 1187, 1190, 86, 86, 1175, 1176, 1191, + 1195, 86, 86, 86, 1177, 86, 1196, 1198, 1192, 86, + 86, 1193, 1199, 86, 1194, 1201, 86, 86, 86, 1203, + 86, 86, 1204, 1197, 1200, 86, 86, 1209, 86, 1202, + 1206, 86, 86, 86, 86, 1207, 1208, 1205, 86, 1212, - 1207, 86, 86, 86, 86, 1220, 86, 1218, 86, 1213, - 1210, 86, 1216, 1212, 1215, 1217, 86, 1214, 86, 86, - 86, 1219, 86, 86, 1221, 1224, 86, 86, 1229, 86, - 1222, 86, 86, 1226, 1230, 86, 1231, 86, 1223, 86, - 1233, 1225, 1228, 1234, 1227, 86, 1232, 1236, 1237, 86, - 86, 1239, 86, 86, 1235, 1243, 1240, 86, 86, 1241, - 86, 86, 1242, 86, 86, 86, 1238, 1244, 1250, 86, - 1252, 86, 86, 86, 86, 1256, 86, 1246, 1248, 1249, - 1245, 1247, 86, 86, 86, 86, 1253, 1254, 86, 1251, - 1258, 86, 86, 1259, 1257, 86, 1262, 1255, 86, 86, + 1210, 86, 86, 86, 86, 86, 86, 1211, 86, 1219, + 1221, 86, 1213, 1217, 1216, 1214, 86, 1218, 1215, 86, + 1223, 86, 1220, 86, 86, 86, 1225, 1222, 86, 86, + 86, 86, 86, 1230, 1235, 1231, 1232, 86, 1227, 1224, + 86, 1233, 1226, 1228, 1229, 86, 1234, 86, 86, 86, + 86, 1242, 1237, 1240, 1243, 86, 1236, 86, 1241, 86, + 1244, 1238, 86, 86, 86, 1239, 86, 1251, 86, 1245, + 86, 86, 1253, 86, 86, 86, 86, 1249, 86, 1247, + 1255, 86, 1246, 1250, 1248, 86, 1254, 1266, 1256, 86, + 1252, 86, 1257, 86, 86, 86, 1259, 1258, 1260, 86, - 1260, 1261, 86, 1263, 86, 1265, 1268, 1264, 1269, 86, - 1267, 86, 86, 86, 86, 86, 1273, 1272, 1266, 86, - 1270, 86, 86, 86, 1279, 86, 1277, 1280, 165, 86, - 86, 1271, 86, 86, 1281, 86, 86, 1274, 1278, 1283, - 1275, 1282, 1276, 86, 1285, 86, 86, 86, 1284, 1289, - 86, 1286, 1288, 1287, 86, 86, 1291, 86, 86, 1290, - 86, 86, 86, 86, 86, 1294, 1296, 1292, 86, 1293, - 86, 1297, 86, 1298, 86, 1299, 86, 1303, 86, 1304, - 1295, 86, 1300, 86, 1301, 86, 1306, 1307, 86, 86, - 86, 1305, 1311, 1302, 86, 86, 86, 1308, 86, 86, + 1263, 1261, 86, 1262, 1264, 86, 86, 1269, 1270, 86, + 86, 86, 1268, 86, 1265, 86, 86, 1274, 1273, 1271, + 86, 1267, 86, 86, 86, 1280, 86, 1278, 1281, 1272, + 86, 86, 86, 86, 86, 1282, 1284, 1283, 1275, 1279, + 86, 1276, 86, 1277, 1286, 1285, 86, 86, 1290, 86, + 86, 1287, 86, 1289, 86, 1292, 86, 1291, 1293, 86, + 86, 86, 86, 86, 86, 1288, 1297, 1298, 1294, 86, + 86, 86, 86, 1299, 1300, 1304, 1305, 86, 1295, 86, + 1296, 86, 86, 1302, 1307, 1308, 86, 86, 1301, 86, + 86, 1303, 1306, 1312, 86, 86, 86, 86, 86, 86, - 86, 170, 1310, 1309, 1313, 1317, 86, 86, 86, 86, - 163, 86, 1312, 1318, 1319, 86, 86, 1314, 86, 1316, - 86, 1320, 1322, 1324, 1315, 1321, 1328, 1323, 1329, 1325, - 1326, 86, 86, 86, 86, 86, 1327, 86, 86, 1332, - 1331, 86, 86, 1333, 86, 86, 86, 86, 86, 1330, - 1336, 86, 1342, 86, 1339, 1334, 1335, 86, 86, 1337, - 86, 86, 86, 1340, 86, 1338, 161, 1346, 86, 1348, - 1341, 1343, 1352, 86, 1353, 1345, 1344, 86, 1349, 86, - 1350, 86, 1347, 1351, 1354, 1355, 86, 86, 1356, 86, - 1358, 1357, 86, 86, 86, 86, 86, 86, 86, 1362, + 1318, 86, 1311, 1310, 1314, 86, 1309, 170, 86, 86, + 86, 86, 1313, 1319, 1320, 1315, 1321, 86, 1317, 86, + 86, 86, 1323, 1316, 1326, 1324, 86, 1322, 1330, 1325, + 1327, 1328, 86, 1331, 86, 86, 86, 1334, 86, 86, + 1329, 1333, 1332, 1335, 86, 86, 86, 86, 86, 86, + 86, 1338, 86, 1344, 86, 86, 1341, 86, 1336, 1337, + 86, 86, 1339, 86, 165, 1342, 1348, 1340, 86, 1345, + 86, 1343, 86, 1350, 1354, 1346, 1347, 86, 1355, 1358, + 86, 86, 1351, 1349, 1352, 1356, 86, 1353, 1357, 86, + 86, 86, 86, 1360, 86, 1359, 86, 86, 86, 1364, - 86, 1365, 1361, 86, 1369, 86, 86, 86, 1359, 1364, - 1360, 1367, 1366, 86, 1363, 86, 86, 86, 1370, 86, - 1371, 1373, 1368, 1374, 86, 86, 1372, 86, 86, 86, - 86, 86, 1376, 1375, 86, 86, 86, 1381, 86, 86, - 1377, 1379, 86, 1380, 1386, 86, 1378, 1382, 86, 86, - 1383, 86, 86, 86, 1385, 1384, 86, 1387, 1390, 1388, - 86, 1398, 86, 1391, 1393, 1389, 86, 86, 86, 86, - 1392, 86, 1394, 86, 86, 1396, 86, 1401, 86, 1404, - 1400, 1395, 1397, 1399, 86, 86, 86, 1406, 1405, 1403, - 86, 1402, 1407, 86, 86, 1411, 1455, 1408, 1409, 1410, + 86, 1363, 1367, 86, 86, 1361, 86, 1371, 86, 1362, + 1366, 86, 86, 86, 1368, 1365, 1372, 1369, 1373, 86, + 86, 1377, 1370, 1376, 1374, 1375, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 1383, 86, 86, + 86, 1378, 1379, 1381, 1382, 1384, 1388, 1380, 86, 86, + 86, 1385, 86, 1387, 1389, 1386, 1390, 1392, 1391, 86, + 86, 86, 86, 86, 1393, 86, 1400, 86, 86, 1394, + 86, 1395, 86, 1403, 86, 86, 1398, 1397, 1401, 1396, + 1406, 1402, 1399, 86, 1408, 86, 1405, 86, 1404, 1409, + 86, 86, 1413, 1410, 86, 1407, 86, 1423, 1427, 1411, - 86, 1412, 86, 1419, 1421, 1413, 86, 1422, 1414, 1415, - 86, 1420, 86, 1416, 1425, 86, 86, 1423, 86, 1417, - 86, 1426, 86, 1418, 1424, 86, 1428, 1427, 86, 1430, - 86, 86, 86, 1431, 1435, 1432, 86, 86, 86, 1429, - 86, 86, 86, 1438, 86, 1436, 1441, 1442, 86, 1443, - 1434, 1433, 86, 86, 86, 1439, 86, 1437, 1444, 86, - 1440, 86, 1451, 86, 1450, 1445, 86, 1452, 1453, 1454, - 1446, 86, 1447, 86, 1448, 86, 1449, 1456, 1457, 1458, - 1460, 86, 86, 86, 1459, 1461, 86, 86, 1464, 86, - 1462, 86, 86, 86, 1470, 86, 1471, 86, 1466, 86, + 1412, 86, 1414, 86, 86, 1422, 1415, 1421, 86, 1416, + 1417, 86, 1424, 1425, 1418, 86, 86, 86, 86, 86, + 1419, 86, 1428, 1429, 1420, 1426, 86, 1430, 86, 1432, + 86, 86, 1437, 1433, 86, 1434, 1431, 86, 86, 1435, + 86, 1439, 1440, 1438, 86, 1443, 1444, 86, 86, 1436, + 86, 86, 86, 1445, 1441, 86, 1447, 86, 1474, 1446, + 86, 1448, 1442, 1449, 86, 1450, 86, 1451, 86, 1452, + 1458, 1453, 86, 1454, 1455, 1456, 86, 86, 1460, 1457, + 86, 1462, 86, 86, 86, 86, 1463, 86, 86, 1461, + 1466, 1459, 1464, 86, 86, 86, 1472, 1468, 1467, 86, - 86, 1465, 86, 86, 1463, 1472, 86, 1469, 1474, 86, - 1467, 1468, 86, 1473, 86, 1476, 1475, 86, 86, 1477, - 1481, 86, 1480, 1483, 86, 86, 86, 1478, 1484, 86, - 1486, 86, 1485, 1482, 86, 1489, 86, 86, 86, 1479, - 1491, 86, 86, 1488, 86, 1492, 86, 1493, 1496, 86, - 1487, 86, 86, 86, 86, 1501, 1499, 1490, 86, 1494, - 86, 86, 1504, 1502, 86, 86, 86, 1495, 86, 1498, - 86, 1497, 86, 1503, 1500, 1506, 1511, 86, 86, 1515, - 86, 1507, 1508, 1505, 1509, 1510, 86, 86, 86, 86, - 1513, 1512, 86, 1514, 1516, 86, 86, 86, 86, 1521, + 1473, 86, 86, 86, 1465, 86, 86, 86, 1476, 1471, + 86, 86, 1469, 1470, 86, 1475, 1478, 1479, 86, 1477, + 1483, 86, 86, 1482, 1480, 1485, 86, 1488, 86, 1484, + 1486, 86, 86, 86, 1487, 86, 1481, 1491, 86, 1493, + 86, 86, 1490, 86, 1494, 86, 1495, 86, 1498, 86, + 86, 1489, 86, 86, 86, 1492, 1501, 1503, 86, 86, + 86, 86, 1506, 86, 1504, 86, 1496, 1505, 1497, 1500, + 1499, 86, 86, 86, 1502, 1508, 1510, 86, 86, 1507, + 1509, 86, 1512, 86, 1515, 86, 1513, 1511, 1514, 86, + 1516, 86, 1517, 86, 1518, 86, 86, 86, 1523, 1524, - 1522, 1518, 1523, 1519, 86, 86, 86, 1524, 86, 86, - 1517, 1520, 86, 86, 1528, 86, 86, 1525, 86, 86, - 1527, 170, 86, 1526, 1535, 1536, 86, 86, 1531, 1538, - 86, 86, 1529, 1537, 1530, 86, 1532, 86, 86, 1533, - 1539, 86, 86, 86, 86, 1534, 1540, 86, 1546, 86, - 86, 1551, 86, 1543, 86, 86, 1544, 1541, 1542, 1550, - 86, 1545, 86, 3438, 1547, 1553, 1555, 86, 1549, 86, - 86, 1556, 86, 86, 1548, 86, 86, 1559, 1552, 1558, - 86, 1554, 1567, 86, 86, 1557, 86, 1560, 86, 1564, - 1561, 1562, 1565, 1569, 1563, 1566, 86, 1568, 86, 86, + 1526, 1520, 86, 1521, 86, 86, 86, 1525, 86, 86, + 1522, 1519, 86, 1530, 86, 86, 86, 1527, 86, 86, + 86, 1532, 170, 1529, 86, 1538, 1539, 86, 1528, 1534, + 86, 86, 86, 1540, 86, 1531, 1533, 1535, 1541, 86, + 1536, 86, 86, 86, 86, 86, 1549, 1537, 1542, 86, + 1544, 86, 86, 1546, 1543, 86, 1547, 1554, 86, 1545, + 1553, 1548, 86, 86, 86, 86, 1558, 86, 1556, 1550, + 1552, 1559, 86, 86, 1561, 1562, 1551, 163, 86, 86, + 86, 86, 86, 1557, 86, 1555, 1567, 86, 86, 1568, + 1570, 1560, 1563, 1569, 1564, 1565, 1571, 1572, 1566, 86, - 1570, 1572, 86, 86, 86, 86, 1573, 86, 1577, 1571, - 1578, 86, 86, 86, 1575, 86, 86, 86, 1581, 86, - 86, 1574, 1576, 86, 1586, 86, 86, 86, 1590, 1579, - 1583, 1587, 1580, 86, 86, 1582, 1589, 1584, 1585, 86, - 1593, 86, 86, 1588, 86, 1591, 86, 86, 86, 86, - 86, 1597, 86, 1599, 1598, 86, 1594, 1595, 1592, 1601, - 86, 1602, 86, 1596, 86, 1606, 86, 1600, 1607, 1608, - 1603, 1604, 1605, 86, 86, 86, 1610, 86, 86, 1611, - 1609, 86, 86, 1615, 1616, 1617, 86, 1614, 86, 86, - 86, 86, 86, 1618, 1612, 86, 1619, 1620, 86, 86, + 86, 1575, 86, 86, 1573, 86, 1576, 86, 86, 86, + 1574, 86, 86, 1578, 1580, 86, 1581, 86, 86, 86, + 1584, 1577, 86, 1579, 86, 1589, 1582, 86, 86, 86, + 86, 1590, 1583, 1586, 86, 1593, 1587, 1585, 86, 86, + 1588, 86, 1594, 86, 86, 86, 1591, 86, 1592, 86, + 1600, 86, 1596, 1595, 1597, 86, 1601, 86, 1598, 86, + 1602, 86, 1605, 1599, 86, 1603, 1604, 86, 1609, 1610, + 1611, 1608, 86, 1607, 1606, 86, 86, 1613, 86, 86, + 86, 86, 86, 1618, 1619, 1614, 1612, 1617, 1620, 86, + 86, 86, 1621, 86, 86, 86, 1615, 86, 1622, 1623, - 86, 86, 1613, 1621, 1623, 86, 86, 86, 1629, 1622, - 86, 1628, 86, 1624, 1627, 86, 86, 86, 1634, 1625, - 1630, 1626, 1631, 1635, 86, 1636, 86, 86, 1639, 1632, - 1637, 86, 86, 86, 86, 1633, 86, 86, 86, 86, - 86, 1643, 1647, 1642, 86, 1648, 1638, 86, 86, 1651, - 86, 1640, 1641, 86, 1654, 86, 1644, 1646, 1645, 1653, - 86, 86, 86, 86, 1649, 86, 86, 86, 86, 1652, - 1663, 86, 86, 1650, 86, 1662, 86, 86, 1667, 86, - 1655, 1656, 1657, 1661, 1658, 1659, 86, 1660, 86, 1666, - 1670, 1664, 1668, 86, 86, 1665, 86, 86, 86, 1669, + 86, 86, 1616, 86, 1625, 1624, 86, 86, 86, 86, + 86, 1626, 86, 1631, 86, 1627, 1630, 86, 1633, 1634, + 1628, 86, 1629, 86, 1637, 86, 1642, 1639, 1632, 1638, + 86, 1635, 1640, 86, 86, 86, 86, 86, 86, 86, + 1636, 1650, 1646, 1641, 86, 1645, 86, 86, 86, 86, + 1654, 1651, 86, 1643, 1644, 86, 86, 1647, 1657, 1648, + 86, 1656, 1649, 86, 86, 86, 86, 86, 1652, 86, + 86, 1655, 86, 86, 1665, 1653, 86, 86, 86, 1658, + 1666, 1662, 1659, 1672, 1660, 1661, 86, 1664, 86, 1667, + 1663, 1670, 86, 1671, 86, 1668, 86, 86, 1669, 86, - 1674, 1671, 86, 86, 1675, 1672, 86, 86, 1678, 86, - 1673, 1682, 86, 86, 86, 86, 1684, 1676, 1683, 86, - 1677, 1679, 86, 86, 1687, 1681, 86, 1680, 1686, 1685, - 1688, 86, 86, 86, 86, 1689, 1695, 86, 1694, 86, - 86, 86, 1692, 1690, 86, 1700, 1698, 86, 1699, 86, - 1691, 86, 1702, 86, 1693, 86, 86, 1696, 1703, 1704, - 86, 1697, 86, 86, 86, 86, 1707, 86, 86, 1701, - 86, 1712, 1705, 86, 1710, 86, 86, 86, 1706, 86, - 86, 1718, 1716, 86, 86, 1708, 86, 1709, 1711, 86, - 1713, 86, 1719, 1717, 1714, 1715, 86, 1724, 86, 86, + 1673, 1674, 86, 86, 1677, 86, 1675, 86, 1678, 86, + 86, 86, 1676, 1687, 1681, 1685, 86, 86, 1682, 86, + 86, 1679, 1686, 1680, 1689, 86, 1684, 1683, 86, 86, + 1690, 86, 1691, 1692, 86, 1688, 86, 86, 1697, 1698, + 86, 86, 86, 86, 86, 1695, 86, 1702, 1701, 1703, + 86, 1693, 1694, 1705, 86, 86, 86, 1696, 86, 1699, + 86, 1706, 86, 1700, 1707, 86, 86, 86, 86, 1710, + 1704, 86, 1708, 86, 1715, 86, 1709, 1713, 86, 86, + 86, 86, 86, 1711, 86, 1719, 86, 1712, 86, 1721, + 1716, 1714, 86, 1722, 86, 1720, 86, 1727, 1718, 1717, - 86, 1721, 1720, 86, 86, 1727, 1729, 86, 1730, 86, - 86, 1723, 1725, 86, 1722, 86, 1732, 1726, 1728, 86, - 86, 86, 86, 1735, 1734, 86, 1737, 1738, 86, 1731, - 1740, 170, 1733, 86, 86, 1739, 86, 86, 86, 1736, - 86, 1748, 86, 86, 86, 86, 1817, 1741, 1743, 1749, - 86, 1742, 1746, 1752, 86, 1744, 1745, 86, 86, 1753, - 1756, 86, 1747, 1750, 86, 1751, 1754, 1758, 86, 1757, - 1760, 86, 86, 86, 1762, 86, 86, 1755, 86, 86, - 86, 86, 86, 1767, 1764, 1761, 1765, 86, 1759, 86, - 1768, 1763, 86, 86, 1769, 86, 1772, 86, 1773, 86, + 1723, 1724, 86, 86, 86, 86, 1732, 86, 86, 1730, + 86, 86, 1733, 86, 1726, 86, 1728, 1725, 86, 1735, + 1731, 1729, 86, 86, 1737, 86, 1738, 86, 1740, 170, + 1734, 1741, 86, 1736, 1739, 86, 86, 86, 1742, 86, + 1743, 1744, 86, 1746, 86, 1745, 86, 1752, 86, 161, + 86, 1747, 86, 1753, 1756, 86, 1750, 86, 1748, 1749, + 86, 86, 86, 86, 1760, 1758, 1757, 1762, 1761, 1751, + 1754, 86, 1755, 86, 1764, 86, 1766, 86, 86, 86, + 86, 1759, 86, 86, 86, 1768, 86, 1769, 86, 1765, + 86, 1763, 86, 1771, 86, 1772, 86, 1767, 1773, 1776, - 86, 86, 1780, 1766, 3438, 1770, 86, 1771, 86, 1777, - 86, 1775, 1778, 1774, 86, 1781, 86, 1782, 86, 86, - 1776, 86, 1787, 1785, 1779, 1784, 1786, 1788, 86, 1789, - 1790, 86, 86, 1783, 1796, 86, 86, 1791, 86, 1792, - 86, 1793, 1794, 86, 86, 86, 1801, 1802, 86, 1795, - 1798, 86, 86, 86, 1800, 86, 1804, 86, 86, 86, - 1803, 1797, 86, 1806, 1808, 1799, 1807, 86, 86, 86, - 86, 86, 86, 86, 86, 86, 86, 86, 1818, 86, - 1805, 86, 86, 86, 86, 1812, 1809, 1813, 1814, 1810, - 1811, 1820, 86, 1815, 1821, 1823, 1819, 1816, 86, 86, + 86, 1777, 86, 1775, 1774, 86, 86, 1770, 1778, 1781, + 1784, 86, 1782, 86, 1779, 86, 86, 86, 1785, 86, + 1786, 86, 1792, 86, 1783, 1780, 1789, 86, 1788, 1793, + 1791, 1794, 86, 86, 86, 86, 1787, 86, 1795, 1798, + 1790, 86, 1796, 86, 1797, 86, 86, 1800, 86, 86, + 1801, 1799, 86, 1805, 1806, 1804, 86, 1808, 86, 86, + 86, 1807, 86, 86, 86, 86, 86, 1802, 86, 1803, + 1810, 1811, 86, 1812, 86, 86, 86, 86, 86, 86, + 1813, 1809, 86, 1821, 1814, 86, 1815, 1822, 1816, 1817, + 1818, 1827, 86, 86, 86, 1819, 86, 86, 86, 86, - 1825, 86, 1828, 1824, 86, 1822, 1829, 86, 86, 86, - 86, 1833, 86, 1827, 1831, 86, 86, 86, 1826, 86, - 1832, 86, 86, 86, 1830, 86, 86, 1834, 1838, 1835, - 1840, 1841, 86, 86, 1842, 1837, 1839, 1848, 86, 86, - 1836, 1843, 1847, 1849, 86, 1850, 86, 1844, 1853, 86, - 86, 1846, 1845, 1852, 86, 86, 86, 86, 86, 86, - 1857, 1856, 86, 1858, 1851, 86, 86, 1854, 86, 1866, - 86, 1861, 1867, 86, 1855, 86, 86, 1863, 1859, 1865, - 1864, 1860, 86, 86, 86, 1862, 86, 1873, 86, 86, - 86, 86, 1874, 86, 1875, 1869, 1868, 86, 1871, 86, + 86, 1823, 86, 1820, 1824, 1825, 86, 1826, 1833, 86, + 86, 86, 86, 1837, 1829, 1835, 1828, 86, 86, 1830, + 1831, 1832, 1834, 1836, 86, 86, 86, 86, 86, 86, + 86, 86, 1838, 86, 1844, 1842, 86, 1845, 1839, 1851, + 1846, 86, 1840, 1841, 1843, 86, 1847, 86, 1848, 1852, + 86, 1853, 86, 1849, 86, 86, 1850, 1854, 1856, 1855, + 1857, 86, 86, 86, 86, 1861, 1859, 1858, 1860, 1862, + 86, 86, 86, 86, 86, 86, 1870, 1871, 86, 86, + 86, 1865, 86, 1867, 1869, 86, 1868, 1864, 86, 1863, + 86, 1877, 1866, 1873, 86, 86, 1878, 86, 86, 1872, - 1876, 1870, 1872, 86, 1879, 86, 86, 1883, 1881, 1878, - 1882, 86, 86, 1880, 86, 1877, 86, 1887, 86, 1891, - 1885, 1884, 86, 1886, 1892, 86, 86, 86, 86, 1897, - 86, 86, 1888, 1896, 3438, 86, 1890, 1889, 1899, 86, - 1893, 1900, 1894, 86, 1895, 86, 1903, 86, 1898, 86, - 1901, 1905, 86, 86, 1907, 1904, 86, 1902, 1911, 86, - 86, 86, 1909, 86, 86, 86, 86, 1906, 1910, 1908, - 86, 1912, 86, 86, 1915, 1916, 86, 86, 86, 86, - 1913, 1917, 1923, 86, 1914, 1919, 1918, 86, 1925, 1926, - 1920, 86, 1921, 1922, 86, 86, 1928, 86, 86, 86, + 1879, 86, 1875, 1874, 86, 86, 1876, 86, 1883, 86, + 1880, 86, 86, 1887, 1885, 86, 1886, 1884, 1889, 1881, + 1891, 1890, 1882, 86, 86, 86, 1895, 1888, 86, 86, + 86, 1896, 86, 86, 1901, 86, 1903, 86, 1900, 86, + 86, 1892, 1897, 1894, 1898, 1893, 86, 86, 1904, 1907, + 86, 1905, 1899, 1902, 86, 86, 1908, 86, 1911, 1909, + 86, 1906, 1915, 86, 86, 86, 1913, 86, 86, 86, + 86, 1910, 1914, 1912, 86, 1916, 86, 86, 1919, 1920, + 86, 86, 86, 86, 1917, 1921, 1927, 86, 1918, 1923, + 1922, 86, 1929, 1930, 1924, 86, 1925, 1926, 86, 86, - 1927, 1932, 86, 1934, 1924, 86, 86, 86, 86, 86, - 86, 1929, 1938, 86, 86, 86, 1930, 86, 1931, 1933, - 1941, 1940, 86, 1936, 86, 86, 1937, 1935, 86, 1942, - 1939, 1944, 86, 1943, 1946, 1947, 170, 1945, 86, 1950, - 86, 86, 86, 86, 1954, 86, 86, 86, 1948, 86, - 86, 86, 86, 1949, 1952, 86, 1956, 86, 1957, 1961, - 1951, 1955, 1953, 1958, 86, 86, 3438, 1962, 86, 1959, - 1964, 1966, 1960, 1965, 86, 1963, 1967, 86, 86, 86, - 1970, 1971, 86, 1968, 86, 86, 86, 1973, 1969, 86, - 86, 86, 1974, 86, 86, 86, 1972, 86, 86, 86, + 1932, 86, 86, 86, 1931, 1936, 86, 1938, 1928, 86, + 86, 86, 86, 86, 86, 1933, 1942, 86, 86, 86, + 1934, 86, 1935, 1937, 1945, 1944, 86, 1940, 86, 86, + 1941, 1939, 86, 1946, 1943, 1948, 86, 1947, 170, 86, + 1950, 1949, 1952, 86, 86, 1951, 1955, 86, 86, 86, + 1953, 1959, 86, 86, 86, 86, 86, 86, 1954, 86, + 1957, 1961, 86, 1956, 1966, 86, 86, 1960, 1958, 1962, + 86, 1963, 1969, 86, 1964, 1978, 1965, 1967, 1970, 86, + 1968, 86, 1972, 86, 1971, 86, 86, 1975, 1976, 86, + 1973, 86, 86, 86, 86, 1974, 86, 1979, 86, 86, - 1979, 86, 1980, 86, 86, 86, 1984, 1981, 86, 3438, - 1975, 1977, 1978, 1976, 1983, 1982, 86, 1985, 86, 86, - 1991, 1988, 86, 1990, 1987, 1992, 86, 1993, 1989, 86, - 1986, 86, 86, 86, 86, 86, 1999, 86, 2002, 86, - 1994, 1995, 2003, 86, 2004, 86, 86, 1997, 1996, 2000, - 86, 2001, 1998, 2006, 86, 86, 2007, 2010, 86, 2005, - 86, 86, 2012, 86, 2011, 86, 2013, 2008, 86, 2014, - 2016, 2009, 2019, 86, 86, 86, 86, 2018, 86, 2015, - 86, 2022, 86, 86, 86, 2021, 86, 86, 2026, 86, - 2017, 2025, 86, 86, 2027, 2028, 86, 86, 2020, 2023, + 86, 86, 86, 1977, 86, 1984, 1985, 86, 86, 1989, + 86, 1986, 1980, 86, 86, 86, 1982, 1983, 1981, 1987, + 1993, 86, 1990, 1988, 1997, 86, 1995, 1994, 1998, 1996, + 1992, 86, 86, 86, 86, 1991, 86, 86, 86, 86, + 2004, 86, 86, 86, 2007, 2008, 86, 2009, 86, 2002, + 86, 2000, 1999, 2011, 86, 2001, 2005, 2003, 2006, 2010, + 86, 2012, 2013, 2015, 86, 86, 2017, 86, 2019, 2016, + 2018, 2014, 86, 86, 86, 2021, 86, 86, 2024, 86, + 2023, 86, 86, 86, 2027, 86, 86, 86, 2026, 86, + 86, 2020, 2030, 86, 2031, 2032, 86, 2033, 86, 86, - 86, 86, 2036, 86, 2024, 2029, 2030, 2031, 86, 2038, - 2034, 86, 2032, 86, 2039, 86, 2033, 2035, 2041, 86, - 2037, 2042, 86, 2045, 2043, 2040, 86, 86, 86, 86, - 2049, 86, 86, 86, 2051, 2046, 86, 2044, 86, 86, - 2054, 2055, 86, 86, 2057, 86, 86, 2047, 86, 2048, - 86, 86, 86, 2064, 86, 2062, 2052, 2059, 2050, 2060, - 2053, 86, 86, 2056, 86, 86, 86, 86, 2063, 86, - 2070, 2058, 2061, 2067, 2068, 86, 86, 86, 2074, 2066, - 86, 86, 2073, 2065, 86, 2077, 86, 86, 2076, 2078, - 2080, 86, 2072, 2069, 2081, 86, 86, 86, 86, 86, + 86, 2022, 2025, 86, 2028, 2041, 86, 2029, 2034, 2035, + 2036, 86, 86, 86, 86, 2037, 2043, 2039, 2038, 86, + 2040, 2044, 86, 86, 86, 2047, 2042, 2045, 2050, 2046, + 2048, 86, 2052, 86, 86, 2054, 86, 86, 86, 2049, + 2051, 86, 2056, 86, 86, 2059, 2060, 86, 86, 2062, + 86, 86, 86, 86, 2053, 86, 86, 86, 2057, 86, + 2067, 2064, 2065, 2055, 86, 2058, 86, 86, 2061, 2069, + 86, 2068, 86, 2073, 2071, 86, 2063, 2066, 2070, 2072, + 86, 2075, 86, 86, 2079, 86, 2082, 86, 2078, 86, + 86, 2083, 86, 2074, 2081, 86, 2085, 86, 2077, 2086, - 2075, 2071, 2082, 86, 86, 2079, 86, 2083, 86, 2087, - 86, 86, 2090, 86, 2091, 2092, 2086, 86, 86, 2084, - 86, 86, 2085, 86, 86, 86, 2088, 2095, 2100, 86, - 2099, 86, 2094, 2093, 86, 86, 2089, 86, 2097, 86, - 2105, 2104, 86, 2096, 86, 86, 2098, 86, 2106, 2102, - 2101, 2108, 86, 2107, 2103, 86, 2110, 2112, 86, 2109, - 86, 2111, 86, 86, 86, 86, 2119, 86, 2113, 2116, - 86, 86, 86, 86, 2114, 86, 2122, 2124, 86, 86, - 2125, 2115, 2121, 2117, 2127, 2118, 2123, 86, 2120, 86, - 86, 2126, 2131, 86, 2132, 86, 2133, 2135, 2136, 86, + 86, 2076, 86, 86, 86, 2080, 2088, 86, 2087, 86, + 86, 86, 86, 2092, 2084, 86, 2095, 2096, 86, 2097, + 86, 2091, 86, 86, 2089, 86, 2090, 86, 86, 2093, + 86, 2100, 86, 2099, 86, 2104, 2105, 86, 2094, 86, + 2098, 86, 2102, 86, 2110, 2109, 86, 2101, 86, 2107, + 2103, 2106, 2111, 2113, 86, 86, 86, 2112, 2108, 2114, + 2117, 86, 86, 86, 86, 86, 86, 2115, 86, 2121, + 2124, 86, 2116, 86, 86, 86, 86, 2119, 2127, 2129, + 86, 86, 2130, 2118, 2120, 86, 2122, 2128, 2123, 2125, + 2126, 86, 86, 86, 2132, 2131, 2136, 86, 2137, 86, - 2128, 2134, 86, 86, 86, 2129, 86, 86, 2140, 86, - 2130, 2138, 86, 86, 86, 86, 2142, 2145, 86, 2139, - 2147, 2141, 86, 86, 86, 2137, 86, 2143, 170, 86, - 86, 86, 86, 2150, 86, 2156, 86, 2154, 2144, 2155, - 2146, 2148, 2151, 2152, 2149, 2157, 86, 86, 2153, 2158, - 86, 2160, 86, 86, 86, 86, 86, 86, 2161, 2162, - 86, 2163, 2164, 86, 86, 2165, 2166, 2159, 2167, 86, - 2168, 86, 86, 2172, 86, 86, 2169, 2171, 86, 86, - 86, 86, 2176, 2170, 2173, 2174, 2175, 2177, 86, 86, - 86, 86, 86, 86, 86, 86, 2182, 2184, 2178, 2179, + 2138, 2140, 86, 2133, 2141, 2139, 86, 86, 2134, 86, + 86, 86, 2145, 2135, 2143, 86, 86, 86, 86, 86, + 2147, 86, 86, 2144, 2150, 2152, 86, 2146, 2142, 2148, + 86, 86, 2153, 86, 170, 86, 86, 86, 3444, 2156, + 86, 2154, 86, 2151, 2149, 2160, 2155, 2157, 2158, 86, + 86, 2162, 2161, 2163, 86, 2166, 2159, 2164, 86, 86, + 86, 86, 2165, 86, 86, 2167, 2169, 86, 2168, 86, + 86, 86, 2171, 2170, 2172, 86, 2174, 86, 86, 2178, + 86, 2173, 2175, 2177, 86, 86, 86, 2183, 86, 2176, + 2180, 2181, 86, 2179, 86, 2182, 86, 86, 86, 86, - 2183, 86, 86, 86, 86, 86, 2189, 2180, 86, 86, - 2181, 2185, 2187, 2186, 86, 2188, 86, 2190, 2192, 86, - 2191, 86, 2194, 2195, 86, 86, 2200, 86, 2193, 2198, - 86, 2196, 86, 2201, 86, 86, 86, 2197, 2199, 2206, - 86, 86, 2208, 86, 86, 86, 2209, 86, 2202, 2205, - 2203, 2204, 2210, 86, 86, 2211, 86, 2207, 2212, 86, - 86, 2213, 2215, 2216, 86, 86, 2214, 86, 2220, 86, - 86, 2217, 86, 86, 86, 86, 2218, 86, 86, 2221, - 86, 86, 86, 86, 86, 2219, 2223, 2224, 2225, 2226, - 2229, 2234, 86, 2222, 86, 2228, 86, 86, 86, 86, + 86, 86, 2190, 2188, 86, 2185, 2189, 86, 86, 86, + 86, 2195, 86, 2192, 2184, 2186, 86, 2187, 2191, 86, + 86, 2200, 2196, 2194, 86, 2193, 86, 86, 2198, 86, + 2197, 86, 86, 2201, 2204, 2207, 2199, 86, 2202, 2206, + 86, 86, 86, 86, 2205, 2212, 86, 86, 2203, 86, + 2214, 86, 86, 2208, 2215, 2217, 2211, 2209, 2210, 2216, + 86, 2218, 86, 2213, 86, 2219, 86, 86, 2222, 86, + 86, 86, 86, 2221, 86, 86, 2223, 86, 2226, 86, + 86, 2227, 86, 86, 86, 86, 86, 86, 86, 2220, + 86, 2225, 2224, 2235, 2229, 2230, 2228, 2232, 86, 2231, - 2431, 2231, 2237, 2230, 2227, 2232, 2233, 86, 86, 86, - 86, 2241, 2238, 2240, 2235, 86, 86, 2236, 2239, 86, - 2243, 86, 86, 2244, 86, 86, 86, 2249, 2242, 2251, - 2245, 2247, 86, 86, 2252, 86, 2248, 2246, 2254, 86, - 86, 86, 86, 86, 2257, 2250, 2256, 2253, 2258, 86, - 86, 86, 2262, 86, 2259, 86, 86, 2266, 86, 86, - 2263, 86, 2267, 86, 86, 2265, 2255, 2268, 2260, 2264, - 86, 2261, 2271, 86, 86, 2272, 86, 2275, 2270, 86, - 2269, 86, 86, 86, 2276, 2273, 86, 3438, 2277, 86, - 2279, 2281, 86, 86, 2283, 86, 2274, 86, 2280, 2278, + 2237, 2234, 2239, 2240, 86, 2233, 2236, 86, 86, 86, + 86, 2238, 2243, 2244, 86, 86, 2241, 2247, 86, 2246, + 86, 86, 86, 86, 86, 2249, 86, 2242, 2250, 86, + 2245, 2251, 86, 2253, 2255, 86, 2248, 2257, 2254, 86, + 86, 2252, 2258, 86, 2260, 86, 86, 86, 2256, 2259, + 86, 2262, 2263, 86, 86, 86, 2268, 86, 2264, 2265, + 86, 86, 86, 2272, 86, 2261, 2269, 2267, 2273, 86, + 2270, 86, 2271, 2266, 86, 2277, 86, 86, 2278, 2274, + 86, 86, 86, 2275, 2281, 86, 86, 2282, 2276, 86, + 86, 2283, 2287, 86, 2285, 2279, 86, 86, 2289, 86, - 86, 2282, 86, 2284, 2285, 2286, 86, 86, 2290, 86, - 86, 86, 2292, 86, 86, 2287, 2288, 2293, 86, 2289, - 2295, 86, 2294, 86, 86, 2296, 2297, 86, 2298, 2299, - 2291, 86, 2303, 86, 2300, 86, 86, 86, 86, 86, - 2302, 86, 86, 86, 86, 86, 86, 2301, 2310, 86, - 86, 2316, 2308, 2304, 2305, 2306, 2309, 2311, 2312, 86, - 86, 86, 2307, 86, 2313, 2314, 2315, 86, 2322, 2317, - 86, 86, 2320, 2319, 2321, 2325, 86, 86, 2327, 86, - 2324, 86, 2318, 86, 86, 86, 2326, 2329, 86, 2330, - 2333, 170, 86, 2337, 86, 2323, 86, 2335, 2331, 86, + 2290, 2280, 2286, 2284, 86, 86, 86, 86, 2288, 86, + 2292, 2296, 86, 2291, 86, 2298, 2294, 86, 86, 2295, + 2299, 86, 86, 86, 2293, 86, 2300, 2301, 2304, 2302, + 2305, 86, 86, 2297, 2303, 86, 86, 2309, 86, 86, + 86, 86, 86, 86, 2306, 2308, 86, 2316, 86, 86, + 86, 86, 2307, 2310, 86, 86, 2312, 2311, 2315, 2320, + 2314, 2317, 2318, 86, 86, 86, 2313, 86, 2319, 2321, + 2327, 2323, 2322, 2325, 2326, 86, 86, 86, 2331, 86, + 86, 2333, 86, 86, 2324, 86, 2330, 86, 86, 2332, + 2336, 2335, 86, 2328, 2339, 170, 86, 3444, 2341, 2345, - 2328, 86, 2336, 86, 2338, 86, 2349, 2332, 2339, 2340, - 86, 86, 2341, 2334, 2342, 86, 86, 2343, 2347, 86, - 2346, 86, 2348, 86, 2351, 86, 2353, 86, 2354, 86, - 86, 2344, 2352, 86, 2356, 86, 86, 86, 2355, 2357, - 86, 2350, 2345, 86, 86, 86, 86, 2359, 86, 86, - 2362, 86, 86, 86, 2365, 86, 2358, 2360, 86, 86, - 2369, 2364, 2371, 86, 86, 86, 86, 2367, 2372, 2361, - 2366, 2363, 86, 2368, 2373, 86, 86, 2374, 86, 86, - 2370, 86, 86, 2379, 2376, 2382, 86, 2377, 86, 86, - 2383, 2375, 2380, 86, 86, 2378, 86, 86, 86, 2381, + 86, 2329, 2334, 2342, 86, 2337, 2343, 2338, 2344, 86, + 86, 86, 86, 86, 86, 2348, 86, 2340, 2346, 86, + 2349, 86, 2352, 2353, 86, 86, 2354, 86, 86, 2347, + 2357, 2364, 2358, 2355, 2350, 2362, 86, 86, 2359, 2360, + 86, 86, 86, 86, 86, 2351, 2356, 2361, 2363, 86, + 86, 86, 86, 2365, 86, 86, 2368, 86, 86, 86, + 2371, 86, 86, 2366, 2377, 86, 2375, 2370, 86, 86, + 86, 86, 2378, 2373, 2380, 2367, 2372, 2369, 86, 2374, + 86, 86, 86, 86, 2376, 2379, 86, 2385, 2388, 86, + 86, 86, 2383, 86, 86, 86, 2382, 2381, 2389, 2386, - 86, 86, 86, 86, 86, 2396, 86, 2384, 2385, 2390, - 2395, 2397, 86, 86, 2393, 2388, 2386, 2392, 2387, 2389, - 2394, 2391, 86, 86, 86, 86, 2399, 2398, 86, 86, - 2403, 2404, 86, 86, 86, 2405, 2451, 2400, 86, 2401, - 86, 2402, 2406, 86, 86, 2409, 86, 2412, 86, 2407, - 86, 2408, 2413, 86, 86, 2410, 86, 86, 2411, 2414, - 2416, 2415, 2419, 86, 2420, 86, 86, 2422, 86, 2418, - 2417, 86, 2424, 86, 86, 86, 2427, 86, 86, 2426, - 2428, 86, 86, 86, 86, 2421, 2435, 86, 86, 2423, - 2425, 2430, 2429, 2434, 86, 2437, 86, 2432, 86, 86, + 2384, 2387, 86, 86, 86, 86, 86, 86, 86, 86, + 2390, 86, 2391, 2402, 86, 2401, 2396, 2392, 86, 2393, + 2400, 2394, 2398, 2404, 2395, 86, 2397, 2399, 2403, 86, + 86, 86, 2666, 2405, 86, 86, 2409, 86, 2406, 2410, + 86, 86, 86, 2411, 86, 2407, 86, 2408, 2412, 86, + 86, 2415, 2413, 2416, 86, 2414, 2417, 2418, 86, 2419, + 86, 86, 86, 86, 86, 2427, 2420, 2421, 2425, 86, + 2426, 86, 2428, 86, 2422, 86, 2424, 2430, 86, 86, + 86, 2433, 86, 2423, 86, 2432, 2434, 86, 86, 86, + 86, 86, 86, 2429, 2431, 86, 86, 2436, 2435, 86, - 86, 86, 86, 2433, 2440, 2439, 86, 2441, 2443, 86, - 86, 86, 2446, 2436, 86, 86, 2438, 2445, 86, 2444, - 2449, 86, 2442, 86, 86, 86, 2447, 86, 2453, 2454, - 86, 86, 2456, 2448, 86, 2450, 86, 2455, 2452, 86, - 2457, 2459, 86, 2461, 86, 86, 2458, 86, 86, 2466, - 86, 86, 86, 2462, 2460, 86, 2474, 2468, 86, 2467, - 2472, 2469, 2463, 2464, 2473, 86, 86, 86, 86, 86, - 2475, 86, 86, 2465, 86, 86, 2470, 2479, 2471, 2481, - 2482, 2477, 2484, 86, 86, 2485, 86, 2488, 86, 86, - 2478, 86, 2476, 86, 2489, 86, 86, 2480, 2483, 86, + 2440, 2441, 86, 86, 2438, 2445, 2437, 2443, 86, 86, + 2439, 2442, 2446, 86, 2444, 86, 2447, 2449, 86, 86, + 86, 2452, 2450, 86, 2455, 86, 86, 86, 2451, 86, + 86, 2448, 2460, 86, 2459, 2453, 86, 86, 86, 86, + 2465, 86, 2454, 2462, 2458, 86, 2456, 86, 86, 86, + 2457, 86, 2463, 86, 2464, 2461, 2467, 86, 2472, 86, + 86, 2468, 2474, 86, 86, 2466, 2469, 2475, 2473, 2470, + 2478, 86, 86, 86, 86, 2479, 86, 2480, 2481, 2471, + 86, 86, 2476, 86, 2477, 86, 2485, 2483, 86, 86, + 2487, 2490, 2491, 2488, 86, 86, 2482, 86, 86, 2494, - 2490, 2487, 86, 86, 86, 2486, 2493, 86, 86, 86, - 86, 2494, 2492, 2495, 2499, 86, 2496, 2497, 2500, 2501, - 86, 2491, 86, 2498, 86, 86, 2504, 2505, 86, 2506, - 2502, 2503, 86, 86, 86, 2509, 86, 2507, 170, 86, - 86, 2508, 86, 2510, 86, 2515, 86, 86, 86, 2517, - 86, 86, 86, 2526, 86, 2513, 2511, 2516, 2512, 2518, - 2514, 86, 86, 2521, 2519, 2520, 86, 2523, 3438, 2522, - 86, 2527, 2524, 2525, 2528, 86, 86, 86, 2531, 2529, - 2532, 86, 2530, 86, 86, 86, 86, 2534, 86, 86, - 2533, 86, 2536, 86, 86, 2540, 2541, 2535, 86, 2538, + 86, 2484, 86, 86, 2489, 86, 86, 2495, 2496, 2486, + 2493, 86, 86, 86, 2499, 2492, 86, 86, 86, 2498, + 86, 2500, 2501, 2505, 2507, 2497, 2502, 2503, 2506, 86, + 2504, 86, 86, 2511, 86, 86, 2510, 86, 2512, 86, + 86, 2509, 86, 2515, 86, 170, 2513, 86, 86, 2514, + 2516, 2508, 86, 2521, 86, 86, 86, 2523, 86, 86, + 86, 86, 86, 2519, 2517, 2529, 2518, 86, 2520, 86, + 2522, 2524, 2525, 2526, 2527, 86, 2532, 86, 2528, 2531, + 2653, 2530, 86, 2533, 2534, 86, 86, 86, 2537, 2535, + 2538, 86, 2536, 86, 86, 86, 86, 2540, 86, 86, - 86, 2537, 86, 2543, 86, 86, 86, 86, 2544, 2545, - 2546, 86, 2539, 86, 2542, 86, 2548, 86, 2547, 2552, - 86, 2551, 86, 86, 2549, 2550, 86, 86, 2554, 86, - 86, 86, 86, 2561, 2558, 2553, 86, 2560, 86, 86, - 86, 86, 2562, 2557, 86, 86, 2555, 2556, 86, 2566, - 86, 2559, 86, 86, 2576, 2571, 2563, 2570, 86, 2564, - 2565, 86, 2568, 86, 2569, 86, 2567, 2573, 86, 86, - 86, 2572, 2575, 2577, 86, 2579, 86, 2574, 2581, 86, - 2580, 2583, 86, 86, 86, 2585, 86, 86, 86, 86, - 86, 2582, 2584, 86, 2589, 2578, 86, 86, 86, 86, + 2539, 86, 2542, 86, 86, 2546, 2547, 2541, 86, 2544, + 86, 2543, 86, 2549, 86, 86, 86, 86, 2550, 2551, + 2552, 86, 2545, 86, 2548, 86, 2554, 86, 2553, 2558, + 86, 2557, 86, 86, 2555, 2556, 86, 86, 2560, 86, + 86, 86, 86, 2567, 2564, 2559, 86, 2566, 86, 86, + 86, 86, 2568, 2563, 86, 86, 2561, 2562, 86, 2572, + 86, 2565, 86, 86, 2582, 2577, 2569, 2576, 86, 2570, + 2571, 86, 2574, 86, 2575, 86, 2573, 2579, 86, 86, + 86, 2578, 2581, 2583, 86, 2585, 86, 2580, 2587, 86, + 2586, 2589, 86, 86, 86, 2591, 86, 86, 86, 86, - 2594, 86, 2587, 2592, 2593, 2586, 2588, 2595, 86, 2596, - 86, 2597, 86, 2598, 86, 86, 86, 2591, 86, 2590, - 86, 2600, 86, 2602, 86, 2605, 86, 86, 86, 2607, - 2603, 2606, 86, 2601, 2599, 86, 2604, 2610, 86, 86, - 86, 86, 2611, 2609, 86, 2608, 86, 2614, 2615, 86, - 86, 2612, 86, 2618, 86, 2616, 2620, 2619, 2613, 2617, - 86, 86, 86, 86, 86, 86, 86, 2624, 2628, 86, - 86, 2627, 2629, 86, 2621, 2622, 2623, 2630, 86, 2631, - 86, 86, 2632, 2625, 86, 2626, 86, 2635, 86, 2634, - 86, 2636, 86, 86, 86, 86, 86, 86, 86, 2633, + 86, 2588, 2590, 86, 2595, 2584, 86, 86, 86, 86, + 2600, 86, 2593, 2598, 2599, 2592, 2594, 2601, 86, 2602, + 86, 2603, 86, 2604, 86, 86, 86, 2597, 86, 2596, + 86, 2606, 86, 2608, 86, 2611, 86, 86, 86, 2613, + 2609, 2612, 86, 2607, 2605, 86, 2610, 2616, 86, 86, + 86, 86, 2617, 2615, 86, 2614, 86, 2620, 2621, 86, + 86, 2618, 86, 2624, 86, 2622, 2626, 2625, 2619, 2623, + 86, 86, 86, 86, 86, 86, 86, 2630, 2634, 86, + 86, 2633, 2635, 86, 2627, 2628, 2629, 2636, 86, 2637, + 86, 86, 2638, 2631, 86, 2632, 86, 2641, 86, 2640, - 2637, 2643, 86, 2645, 86, 2639, 2646, 86, 86, 2647, - 86, 86, 2638, 2642, 2640, 2644, 2641, 2649, 86, 86, - 2648, 86, 86, 2650, 2652, 2655, 86, 86, 86, 86, - 86, 86, 86, 86, 86, 2663, 2656, 86, 2651, 170, - 86, 2653, 2654, 2659, 86, 2665, 2661, 86, 86, 2658, - 86, 2664, 2667, 86, 2657, 2660, 2662, 2666, 2669, 86, - 86, 86, 2668, 2672, 86, 86, 2674, 2676, 86, 2675, - 2677, 86, 2670, 2673, 86, 2678, 2671, 86, 2679, 86, - 2680, 86, 86, 2681, 86, 86, 86, 86, 86, 86, - 86, 86, 2682, 2691, 86, 86, 86, 86, 2689, 2684, + 86, 2642, 86, 86, 86, 86, 86, 86, 86, 2639, + 2643, 2649, 86, 2651, 86, 2645, 2652, 86, 86, 86, + 2654, 86, 2644, 2648, 2646, 2650, 2647, 86, 2655, 86, + 2656, 86, 2658, 2661, 86, 86, 86, 86, 86, 2657, + 86, 86, 170, 86, 2662, 2669, 86, 2671, 86, 2659, + 86, 2660, 2667, 2665, 2670, 86, 86, 2664, 86, 2672, + 86, 86, 2663, 2668, 2678, 86, 2675, 86, 86, 3444, + 2673, 2674, 2680, 2681, 2682, 86, 2683, 86, 86, 2679, + 2676, 86, 2684, 2677, 86, 2685, 86, 2686, 86, 86, + 86, 86, 86, 86, 86, 86, 2687, 86, 86, 2688, - 3438, 2683, 86, 2695, 2686, 2685, 2696, 86, 2688, 2687, - 2690, 86, 86, 2693, 2692, 2694, 2700, 86, 2698, 86, - 86, 2699, 2702, 86, 86, 2697, 86, 86, 2701, 86, - 86, 86, 86, 2705, 2711, 86, 2712, 86, 2703, 86, - 86, 86, 2704, 86, 2706, 2707, 86, 2709, 2708, 2715, - 2718, 2710, 2716, 86, 2717, 86, 86, 86, 2714, 2713, - 2721, 86, 86, 86, 2719, 86, 86, 2723, 86, 86, - 2727, 2726, 2720, 2728, 86, 2722, 86, 86, 2729, 2730, - 86, 86, 86, 2724, 86, 2725, 2732, 86, 2731, 86, - 86, 86, 2736, 86, 2734, 2737, 86, 2742, 86, 2741, + 2697, 86, 86, 86, 2695, 2690, 86, 86, 2689, 86, + 2692, 2691, 86, 2701, 2694, 2693, 2705, 2696, 2702, 86, + 2699, 2698, 86, 2703, 2700, 2704, 2706, 86, 2708, 86, + 86, 2707, 86, 86, 86, 86, 86, 86, 86, 86, + 2711, 2717, 86, 2718, 86, 86, 86, 86, 2709, 2712, + 2710, 2724, 2721, 2713, 2714, 2715, 2716, 86, 2719, 2722, + 86, 2723, 86, 2720, 86, 2725, 86, 86, 86, 86, + 86, 86, 86, 2729, 2733, 86, 2732, 2734, 86, 2726, + 86, 2728, 2735, 2736, 86, 2727, 86, 86, 86, 2730, + 2731, 86, 86, 86, 2737, 2738, 86, 2742, 2743, 86, - 2733, 86, 86, 86, 2735, 2745, 86, 86, 86, 2738, - 2739, 86, 2748, 2740, 2746, 86, 2743, 2751, 86, 2750, - 2744, 86, 2747, 86, 86, 86, 2749, 2756, 86, 86, - 86, 86, 2760, 86, 2752, 2759, 86, 86, 2753, 2758, - 86, 2757, 2762, 86, 2754, 2755, 86, 86, 86, 2764, - 86, 2763, 86, 2765, 86, 2761, 2768, 86, 3438, 2766, - 86, 2769, 2771, 86, 86, 2772, 86, 2773, 2767, 86, - 2777, 86, 2770, 2774, 86, 2775, 86, 86, 2776, 2780, - 86, 86, 2781, 86, 86, 86, 2782, 86, 86, 2784, - 86, 2779, 86, 2785, 2778, 86, 2788, 2783, 86, 2787, + 2740, 86, 86, 2748, 86, 2747, 2739, 86, 86, 2751, + 86, 2741, 86, 86, 86, 86, 2744, 86, 2745, 2754, + 86, 2746, 2749, 2752, 2756, 86, 2750, 86, 2753, 2755, + 2757, 86, 2759, 86, 2762, 86, 86, 86, 2758, 86, + 2766, 86, 86, 2765, 2768, 86, 2764, 2760, 2763, 86, + 86, 86, 86, 2761, 2769, 86, 2774, 86, 86, 2770, + 86, 2767, 86, 2775, 2772, 2777, 86, 2771, 86, 86, + 86, 2783, 86, 2778, 86, 2773, 86, 86, 2780, 2781, + 2776, 2779, 86, 2782, 2786, 86, 86, 2787, 86, 86, + 86, 2788, 2785, 86, 2790, 86, 2784, 86, 2791, 86, - 2790, 86, 86, 2791, 2793, 86, 2786, 2789, 2794, 86, - 86, 2797, 170, 86, 86, 2795, 2792, 86, 86, 2799, - 2798, 2796, 2802, 86, 86, 86, 2804, 86, 86, 2803, - 2807, 86, 2806, 2808, 86, 2800, 2801, 86, 2805, 2810, - 86, 86, 2812, 86, 2811, 86, 86, 2813, 86, 86, - 2809, 2814, 2817, 86, 2815, 86, 86, 2816, 86, 2818, - 2821, 2819, 2820, 86, 86, 86, 2824, 2825, 86, 86, - 2826, 2822, 86, 86, 86, 86, 2828, 86, 2830, 2829, - 2827, 86, 86, 86, 86, 2823, 2832, 2833, 86, 2831, - 86, 86, 86, 2838, 86, 86, 2841, 2835, 86, 2836, + 86, 86, 2789, 86, 2793, 2794, 2796, 86, 2797, 2799, + 86, 86, 2792, 86, 2795, 2798, 2800, 86, 2801, 2803, + 170, 86, 86, 86, 2808, 86, 2802, 2805, 2804, 2806, + 86, 86, 86, 2810, 86, 86, 2809, 2813, 86, 2812, + 2811, 2807, 2814, 86, 2816, 86, 86, 2818, 2815, 2817, + 86, 86, 2819, 86, 86, 2820, 2821, 2823, 86, 86, + 86, 86, 2824, 86, 2825, 86, 86, 86, 2822, 2826, + 86, 2830, 2831, 2828, 86, 2832, 2827, 86, 86, 2833, + 86, 2834, 86, 86, 86, 2835, 2836, 2829, 86, 2838, + 86, 86, 86, 2839, 2837, 86, 86, 86, 2844, 86, - 2837, 2834, 86, 2839, 2842, 86, 2840, 86, 2846, 86, - 86, 86, 86, 86, 2843, 2851, 86, 2847, 86, 86, - 86, 2849, 86, 86, 86, 2844, 2845, 2855, 2850, 2858, - 2848, 2856, 86, 2859, 2853, 86, 3438, 2852, 2861, 86, - 2854, 86, 2860, 86, 86, 2862, 86, 2857, 2864, 2863, - 86, 86, 2867, 86, 86, 86, 2868, 86, 86, 2865, - 86, 2869, 86, 2872, 2866, 2874, 86, 86, 2870, 3438, - 2871, 2875, 86, 2876, 86, 86, 86, 86, 2873, 2877, - 86, 2878, 2879, 86, 86, 2881, 2883, 2880, 86, 2882, - 86, 2884, 86, 86, 2887, 86, 2885, 2888, 86, 2889, + 86, 2842, 86, 3444, 2841, 2843, 2847, 86, 2840, 2845, + 86, 86, 86, 2846, 2852, 86, 2848, 86, 2849, 86, + 86, 86, 2850, 86, 2853, 86, 2851, 86, 2855, 86, + 2854, 2857, 86, 2861, 3444, 2856, 2862, 86, 2859, 86, + 2858, 2864, 2865, 2867, 3444, 2860, 86, 86, 86, 86, + 2868, 86, 2863, 86, 2869, 86, 86, 2866, 2870, 2873, + 86, 86, 86, 2874, 2871, 86, 2875, 86, 86, 2872, + 86, 2878, 2880, 86, 86, 2876, 2881, 86, 2882, 86, + 86, 86, 2877, 86, 2883, 86, 2879, 86, 2884, 2885, + 86, 2889, 2887, 2888, 2886, 86, 2890, 86, 86, 2893, - 86, 86, 86, 2891, 2890, 2893, 86, 86, 2886, 2896, - 86, 86, 2897, 2894, 86, 2892, 2898, 86, 2900, 86, - 86, 86, 86, 86, 2904, 2905, 86, 2895, 86, 2899, - 86, 2907, 2906, 2901, 86, 86, 2903, 86, 2909, 2902, - 2908, 86, 86, 2910, 86, 2915, 2911, 86, 2914, 86, - 86, 86, 86, 2917, 2912, 2918, 86, 2919, 2920, 86, - 86, 2913, 2921, 86, 86, 2924, 2923, 86, 86, 86, - 86, 86, 2916, 2927, 2931, 86, 86, 86, 2938, 86, - 86, 2930, 86, 2939, 86, 2922, 2925, 2926, 2928, 86, - 2932, 2929, 2933, 2935, 86, 86, 2936, 2977, 2940, 2942, + 2894, 86, 2895, 86, 86, 2892, 86, 2891, 86, 2896, + 2899, 86, 86, 86, 2902, 86, 86, 2897, 86, 2903, + 86, 2898, 2904, 86, 2906, 86, 86, 86, 2910, 86, + 2900, 2905, 86, 2901, 86, 2911, 86, 2913, 2908, 2907, + 86, 2909, 86, 86, 2912, 2915, 86, 2914, 86, 86, + 2916, 86, 2917, 2921, 86, 2920, 86, 2922, 2923, 86, + 2924, 86, 86, 86, 2926, 86, 2918, 2925, 2919, 86, + 86, 86, 2927, 2929, 86, 2930, 2933, 86, 86, 86, + 2937, 86, 2931, 2932, 86, 86, 86, 86, 2928, 2939, + 2949, 86, 86, 2936, 86, 2934, 86, 2940, 2935, 2938, - 2934, 86, 2937, 2941, 86, 2943, 86, 86, 2944, 86, - 2945, 86, 2946, 86, 2947, 86, 86, 2948, 86, 86, - 2949, 2951, 86, 2952, 86, 86, 86, 2954, 2958, 86, - 2959, 86, 86, 2955, 86, 2960, 2950, 86, 2953, 2962, - 86, 2964, 86, 86, 2963, 2956, 2957, 86, 2965, 2966, - 86, 86, 2961, 86, 86, 86, 2967, 2972, 86, 86, - 2968, 86, 2969, 2970, 86, 2973, 86, 86, 2974, 2978, - 86, 86, 86, 2971, 2979, 86, 2982, 2976, 86, 2981, - 2980, 86, 86, 2975, 2984, 86, 2983, 2985, 86, 2989, - 86, 86, 2986, 86, 86, 86, 2987, 86, 86, 86, + 2943, 2941, 2944, 2942, 2946, 86, 2950, 2945, 86, 2947, + 86, 86, 2951, 2948, 86, 2952, 86, 2953, 86, 86, + 86, 86, 2957, 86, 2955, 86, 2958, 86, 86, 86, + 2960, 2964, 86, 86, 2954, 86, 2961, 2965, 86, 2979, + 2956, 86, 2959, 86, 2966, 2968, 86, 86, 2962, 2963, + 2969, 2967, 2970, 86, 86, 2972, 86, 86, 86, 2971, + 86, 86, 2978, 86, 86, 2977, 2973, 2974, 86, 2975, + 2976, 86, 2984, 2980, 86, 86, 86, 2985, 86, 86, + 86, 86, 2982, 2988, 86, 2987, 2989, 2981, 2986, 2983, + 2990, 86, 2991, 86, 2992, 86, 2995, 86, 86, 86, - 2988, 2996, 2990, 2991, 2993, 86, 2994, 86, 86, 86, - 2997, 86, 3001, 2999, 3000, 2995, 86, 86, 86, 2992, - 86, 86, 3003, 86, 3006, 3002, 2998, 3007, 3008, 86, - 3011, 3004, 3009, 86, 3005, 3010, 86, 86, 86, 86, - 3015, 86, 86, 3014, 86, 86, 86, 3016, 86, 3017, - 3018, 86, 86, 86, 3026, 86, 86, 3012, 3013, 3019, - 3020, 3022, 3024, 86, 86, 86, 3021, 3027, 86, 3028, - 3023, 86, 86, 3030, 86, 86, 3029, 86, 3025, 3035, - 86, 86, 86, 86, 3031, 86, 86, 3038, 86, 3032, - 3033, 86, 86, 86, 3036, 3037, 3042, 3034, 3043, 86, + 86, 86, 86, 86, 3002, 86, 2999, 2996, 86, 2993, + 86, 2997, 3000, 2994, 86, 86, 86, 3003, 86, 3005, + 3006, 3009, 3001, 86, 3007, 2998, 86, 3008, 86, 3004, + 86, 3012, 3014, 86, 3013, 3015, 86, 3016, 86, 3010, + 86, 86, 3011, 86, 3444, 86, 3021, 86, 86, 3017, + 3020, 86, 86, 3022, 3024, 86, 3023, 86, 86, 86, + 86, 3018, 3019, 86, 3028, 3025, 3030, 3032, 86, 3026, + 86, 86, 86, 86, 3033, 86, 3034, 86, 3029, 3027, + 3035, 86, 3036, 86, 86, 3041, 86, 86, 3031, 86, + 86, 86, 3037, 86, 3044, 86, 86, 3040, 3038, 3039, - 3039, 3040, 86, 3044, 86, 3041, 3048, 86, 3045, 86, - 3046, 3050, 86, 3051, 86, 86, 3053, 86, 86, 86, - 86, 86, 86, 3059, 86, 3056, 86, 3058, 3049, 86, - 3047, 86, 86, 3062, 3054, 3055, 3052, 3057, 3061, 86, - 86, 3065, 86, 86, 3068, 86, 3060, 86, 86, 3070, - 86, 3064, 86, 3071, 3063, 86, 3066, 3073, 86, 3074, - 86, 86, 3067, 86, 3077, 86, 86, 3069, 86, 86, - 86, 3083, 3072, 3082, 86, 86, 3075, 3079, 3080, 86, - 3086, 86, 3084, 3076, 3078, 86, 86, 86, 3081, 3088, - 3087, 86, 86, 3438, 3085, 3089, 86, 3090, 3093, 3091, + 3042, 86, 3043, 86, 3045, 86, 3050, 3046, 3049, 3048, + 86, 86, 3047, 86, 3052, 3054, 86, 3056, 86, 3051, + 3057, 86, 86, 3059, 86, 86, 86, 86, 86, 86, + 86, 86, 3055, 3062, 86, 3064, 86, 3053, 3065, 86, + 3067, 3060, 3061, 3058, 3068, 3063, 86, 3066, 86, 3071, + 86, 86, 3074, 86, 86, 3070, 3076, 3069, 86, 86, + 3072, 86, 86, 3077, 3079, 86, 3080, 86, 86, 86, + 3073, 3083, 86, 86, 3075, 86, 3081, 3088, 86, 86, + 3085, 3078, 3086, 86, 86, 3092, 86, 86, 3082, 86, + 86, 3084, 3094, 3095, 86, 3087, 3090, 3089, 86, 3091, - 3094, 86, 3096, 86, 86, 3092, 3095, 86, 86, 3097, - 3099, 86, 3098, 86, 86, 3102, 86, 86, 3100, 3105, - 86, 86, 86, 86, 86, 3110, 86, 86, 3106, 86, - 86, 3114, 86, 3101, 3103, 3104, 86, 3109, 86, 3113, - 3107, 3115, 86, 3116, 86, 3112, 3111, 86, 3108, 3118, - 3117, 3119, 86, 3120, 86, 3121, 86, 86, 3124, 86, - 3122, 86, 3126, 86, 86, 86, 3125, 86, 86, 86, - 86, 3132, 3133, 86, 86, 86, 86, 86, 3127, 3139, - 86, 3140, 86, 3123, 86, 86, 3141, 3128, 3130, 3129, - 3131, 3136, 86, 3138, 3135, 86, 3137, 86, 86, 86, + 86, 3096, 3093, 3099, 3100, 86, 3097, 86, 3102, 86, + 3101, 86, 86, 86, 86, 3105, 86, 3104, 3098, 86, + 3108, 86, 3111, 86, 3106, 86, 86, 86, 86, 3103, + 86, 86, 3107, 3116, 86, 86, 3444, 3112, 3109, 3110, + 86, 3120, 86, 3115, 86, 3113, 3121, 86, 86, 3119, + 3117, 3118, 86, 3114, 86, 3125, 86, 3122, 3123, 3124, + 3126, 86, 3127, 86, 86, 3130, 86, 86, 3132, 86, + 86, 86, 3131, 86, 3129, 86, 86, 3128, 86, 3138, + 3139, 86, 86, 86, 86, 3133, 86, 86, 3145, 86, + 3146, 86, 3134, 3147, 3136, 3135, 3144, 86, 3137, 86, - 3134, 86, 3144, 3146, 86, 3142, 3147, 86, 86, 86, - 3150, 3151, 86, 3148, 3143, 3149, 86, 3152, 86, 3145, - 3153, 86, 86, 3154, 86, 86, 3155, 86, 86, 3156, - 86, 86, 3157, 3159, 86, 86, 3161, 86, 86, 3160, - 86, 3438, 3162, 86, 86, 3158, 86, 86, 86, 86, - 3163, 86, 3171, 3172, 3175, 3164, 3166, 3165, 3174, 3167, - 3173, 3168, 3169, 86, 86, 86, 3177, 3170, 3179, 86, - 86, 3176, 3180, 86, 3181, 3182, 86, 86, 3178, 86, - 3185, 86, 3183, 3186, 86, 3187, 3188, 86, 86, 3189, - 3190, 3194, 86, 3191, 86, 86, 3192, 3193, 3184, 86, + 3142, 86, 3141, 86, 3143, 86, 3152, 86, 3140, 86, + 3150, 3153, 86, 86, 3154, 3156, 86, 3148, 86, 86, + 3149, 86, 3159, 86, 3151, 86, 3158, 3155, 3157, 86, + 3160, 86, 86, 3161, 86, 86, 3162, 86, 86, 3163, + 3165, 86, 86, 3167, 86, 86, 3166, 86, 3444, 3168, + 86, 86, 3164, 86, 86, 86, 86, 3169, 86, 3177, + 3178, 3181, 3170, 3172, 3171, 3180, 3173, 3179, 3174, 3175, + 86, 86, 86, 3183, 3176, 3185, 86, 86, 3182, 3186, + 86, 3187, 3188, 86, 86, 3184, 86, 3191, 86, 3189, + 3192, 86, 3193, 3194, 86, 86, 3195, 3196, 3200, 86, - 3195, 86, 3197, 86, 86, 86, 86, 86, 86, 86, - 3196, 3203, 86, 3202, 86, 86, 86, 86, 86, 3199, - 86, 3207, 3198, 3206, 3208, 86, 3200, 3201, 86, 3204, - 3211, 3212, 86, 3209, 86, 3214, 86, 3213, 3210, 3205, - 3215, 86, 3216, 86, 86, 86, 86, 3221, 86, 3218, - 3223, 3217, 3222, 86, 3219, 86, 86, 3220, 86, 86, - 86, 3230, 86, 3225, 3227, 3228, 3231, 86, 3233, 86, - 86, 3224, 86, 3232, 3234, 86, 3226, 3229, 86, 3237, - 86, 3238, 86, 3236, 86, 3235, 3240, 86, 3241, 86, - 3242, 86, 86, 3239, 3243, 86, 3244, 86, 3245, 86, + 3197, 86, 86, 3198, 3199, 3190, 86, 3201, 86, 3203, + 86, 86, 86, 86, 86, 86, 86, 3202, 3209, 86, + 3208, 86, 86, 86, 86, 86, 3205, 86, 3213, 3204, + 3212, 3214, 86, 3206, 3207, 86, 3210, 3217, 3218, 86, + 3215, 86, 3220, 86, 3219, 3216, 3211, 3221, 86, 3222, + 86, 86, 86, 86, 3227, 86, 3224, 3229, 3223, 3228, + 86, 3225, 86, 86, 3226, 86, 86, 86, 3236, 86, + 3231, 3233, 3234, 3237, 86, 3239, 86, 86, 3230, 86, + 3238, 3240, 86, 3232, 3235, 86, 3243, 86, 3244, 86, + 3242, 86, 3241, 3246, 86, 3247, 86, 3248, 86, 86, - 3246, 86, 3247, 86, 86, 3250, 86, 86, 86, 86, - 3254, 86, 86, 3249, 3256, 86, 3251, 86, 3248, 86, - 3252, 86, 86, 86, 86, 3260, 3261, 86, 86, 3253, - 86, 3255, 3257, 3265, 3258, 3259, 86, 3262, 3263, 86, - 86, 3267, 3270, 86, 86, 3266, 3264, 3269, 86, 86, - 86, 86, 86, 86, 3268, 3272, 86, 3271, 3276, 86, - 86, 86, 3277, 3278, 86, 86, 86, 3282, 3273, 3274, - 3281, 86, 3275, 3284, 86, 3279, 3285, 86, 86, 3283, - 3286, 86, 86, 86, 86, 86, 86, 3280, 3289, 86, - 86, 3288, 86, 86, 3287, 3294, 86, 3291, 3290, 86, + 3245, 3249, 86, 3250, 86, 3251, 86, 3252, 86, 3253, + 86, 86, 3256, 86, 86, 86, 86, 3260, 86, 86, + 3255, 3262, 86, 3257, 86, 3254, 86, 3258, 86, 86, + 86, 86, 3266, 3267, 86, 86, 3259, 86, 3261, 3263, + 3271, 3264, 3265, 86, 3268, 3269, 86, 86, 3273, 3276, + 86, 86, 3272, 3270, 3275, 86, 86, 86, 86, 86, + 86, 3274, 3278, 86, 3277, 3282, 86, 86, 86, 3283, + 3284, 86, 86, 86, 3288, 3279, 3280, 3287, 86, 3281, + 3290, 86, 3285, 3291, 86, 86, 3289, 3292, 86, 86, + 86, 86, 86, 86, 3286, 3295, 86, 86, 3294, 86, - 3293, 3295, 86, 3297, 86, 3299, 3298, 3296, 3292, 86, - 86, 86, 86, 86, 3300, 86, 86, 86, 3306, 86, - 3301, 3304, 3308, 3305, 86, 3303, 3309, 86, 86, 3311, - 3312, 3314, 86, 86, 3302, 86, 3307, 3316, 86, 3310, - 86, 3317, 3315, 3318, 86, 3319, 86, 86, 3313, 86, - 86, 86, 3322, 86, 3320, 3323, 3324, 86, 3327, 86, - 86, 86, 86, 86, 86, 3330, 86, 3321, 3331, 86, - 3333, 86, 3326, 3328, 3329, 3334, 86, 86, 3325, 3337, - 86, 3332, 3336, 86, 3339, 3340, 86, 86, 3341, 86, - 86, 86, 3335, 3344, 3345, 86, 86, 3342, 3338, 86, + 86, 3293, 3300, 86, 3297, 3296, 86, 3299, 3301, 86, + 3303, 86, 3305, 3304, 3302, 3298, 86, 86, 86, 86, + 86, 3306, 86, 86, 86, 3312, 86, 3307, 3310, 3314, + 3311, 86, 3309, 3315, 86, 86, 3317, 3318, 3320, 86, + 86, 3308, 86, 3313, 3322, 86, 3316, 86, 3323, 3321, + 3324, 86, 3325, 86, 86, 3319, 86, 86, 86, 3328, + 86, 3326, 3329, 3330, 86, 3333, 86, 86, 86, 86, + 86, 86, 3336, 86, 3327, 3337, 86, 3339, 86, 3332, + 3334, 3335, 3340, 86, 86, 3331, 3343, 86, 3338, 3342, + 86, 3345, 3346, 86, 86, 3347, 86, 86, 86, 3341, - 86, 86, 3350, 86, 86, 3346, 3349, 86, 3347, 3343, - 3351, 86, 86, 86, 86, 3348, 86, 3355, 86, 86, - 86, 3357, 86, 86, 86, 3352, 3354, 3353, 3362, 3363, - 3364, 86, 3359, 3360, 3356, 86, 86, 3358, 86, 3368, - 86, 3361, 86, 3370, 86, 3371, 86, 3369, 86, 86, - 86, 3372, 3376, 3373, 3366, 3365, 86, 3367, 86, 3377, - 86, 3374, 86, 3379, 86, 86, 86, 3378, 86, 3375, - 3380, 86, 86, 3385, 86, 3382, 86, 86, 3388, 86, - 3389, 86, 86, 86, 3381, 86, 86, 3392, 86, 3387, - 3383, 3384, 3390, 3386, 86, 3391, 86, 3396, 86, 3397, + 3350, 3351, 86, 86, 3348, 3344, 86, 86, 86, 3356, + 86, 86, 3352, 3355, 86, 3353, 3349, 3357, 86, 86, + 86, 86, 3354, 86, 3361, 86, 86, 86, 3363, 86, + 86, 86, 3358, 3360, 3359, 3368, 3369, 3370, 86, 3365, + 3366, 3362, 86, 86, 3364, 86, 3374, 86, 3367, 86, + 3376, 86, 3377, 86, 3375, 86, 86, 86, 3378, 3382, + 3379, 3372, 3371, 86, 3373, 86, 3383, 86, 3380, 86, + 3385, 86, 86, 86, 3384, 86, 3381, 3386, 86, 86, + 3391, 86, 3388, 86, 86, 3394, 86, 3395, 86, 86, + 86, 3387, 86, 86, 3398, 86, 3393, 3389, 3390, 3396, - 86, 3395, 86, 3400, 3393, 3394, 86, 86, 3402, 86, - 3403, 3398, 86, 86, 86, 3407, 86, 3404, 86, 86, - 3405, 3409, 86, 3408, 86, 3401, 3399, 3410, 86, 3411, - 86, 3412, 86, 3406, 86, 3416, 86, 3414, 86, 86, - 86, 86, 86, 86, 3418, 3419, 86, 3422, 86, 3413, - 3423, 86, 3438, 3415, 86, 3426, 86, 3417, 3427, 86, - 3420, 3421, 3424, 3428, 3429, 86, 86, 3425, 3430, 86, - 86, 86, 86, 3431, 86, 3432, 3433, 3436, 86, 3437, - 86, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, - 3438, 3434, 3438, 3435, 47, 47, 47, 47, 47, 47, + 3392, 86, 3397, 86, 3402, 86, 3403, 86, 3401, 86, + 3406, 3399, 3400, 86, 86, 3408, 86, 3409, 3404, 86, + 86, 86, 3413, 86, 3410, 86, 86, 3411, 3415, 86, + 3414, 86, 3407, 3405, 3416, 86, 3417, 86, 3418, 86, + 3412, 86, 3422, 86, 3420, 86, 86, 86, 86, 86, + 86, 3424, 3425, 86, 3428, 86, 3419, 3429, 86, 3444, + 3421, 86, 3432, 86, 3423, 3433, 86, 3426, 3427, 3430, + 3434, 3435, 86, 86, 3431, 3436, 86, 86, 86, 86, + 3437, 86, 3438, 3439, 3442, 86, 3443, 86, 3444, 3444, + 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3440, 3444, - 47, 52, 52, 52, 52, 52, 52, 52, 57, 57, - 57, 57, 57, 57, 57, 63, 63, 63, 63, 63, - 63, 63, 68, 68, 68, 68, 68, 68, 68, 74, - 74, 74, 74, 74, 74, 74, 80, 80, 80, 80, - 80, 80, 80, 89, 89, 3438, 89, 89, 89, 89, - 160, 160, 3438, 3438, 3438, 160, 160, 162, 162, 3438, - 3438, 162, 3438, 162, 164, 3438, 3438, 3438, 3438, 3438, - 164, 167, 167, 3438, 3438, 3438, 167, 167, 169, 3438, - 3438, 3438, 3438, 3438, 169, 171, 171, 3438, 171, 171, - 171, 171, 174, 3438, 3438, 3438, 3438, 3438, 174, 177, + 3441, 47, 47, 47, 47, 47, 47, 47, 52, 52, + 52, 52, 52, 52, 52, 57, 57, 57, 57, 57, + 57, 57, 63, 63, 63, 63, 63, 63, 63, 68, + 68, 68, 68, 68, 68, 68, 74, 74, 74, 74, + 74, 74, 74, 80, 80, 80, 80, 80, 80, 80, + 89, 89, 3444, 89, 89, 89, 89, 160, 160, 3444, + 3444, 3444, 160, 160, 162, 162, 3444, 3444, 162, 3444, + 162, 164, 3444, 3444, 3444, 3444, 3444, 164, 167, 167, + 3444, 3444, 3444, 167, 167, 169, 3444, 3444, 3444, 3444, + 3444, 169, 171, 171, 3444, 171, 171, 171, 171, 174, - 177, 3438, 3438, 3438, 177, 177, 90, 90, 3438, 90, - 90, 90, 90, 17, 3438, 3438, 3438, 3438, 3438, 3438, - 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, - 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, - 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, - 3438, 3438, 3438, 3438 + 3444, 3444, 3444, 3444, 3444, 174, 177, 177, 3444, 3444, + 3444, 177, 177, 90, 90, 3444, 90, 90, 90, 90, + 17, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, + 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, + 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, + 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, + 3444 } ; -static const flex_int16_t yy_chk[6755] = +static const flex_int16_t yy_chk[6762] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2310,18 +2314,18 @@ static const flex_int16_t yy_chk[6755] = 5, 3, 6, 24, 4, 24, 24, 5, 24, 6, 7, 7, 7, 7, 24, 7, 8, 8, 8, 8, 33, 8, 7, 9, 9, 9, 26, 26, 8, 10, - 10, 10, 19, 29, 9, 33, 19, 29, 3446, 35, + 10, 10, 19, 29, 9, 33, 19, 29, 3452, 35, 10, 11, 11, 11, 11, 11, 11, 13, 13, 13, 13, 34, 13, 11, 35, 99, 34, 29, 38, 13, 51, 51, 11, 12, 12, 12, 12, 12, 12, 14, 14, 14, 14, 99, 14, 12, 15, 15, 15, 38, 23, 14, 23, 23, 12, 23, 46, 15, 16, 16, - 16, 23, 23, 25, 27, 27, 25, 25, 2797, 16, + 16, 23, 23, 25, 27, 27, 25, 25, 2803, 16, 25, 46, 27, 30, 30, 25, 27, 56, 40, 27, 56, 73, 31, 31, 25, 28, 67, 67, 30, 32, 28, 31, 40, 32, 28, 73, 32, 28, 92, 28, - 28, 92, 31, 32, 1116, 32, 36, 36, 37, 37, + 28, 92, 31, 32, 1117, 32, 36, 36, 37, 37, 28, 45, 45, 37, 97, 36, 45, 97, 41, 41, 45, 36, 87, 41, 93, 36, 87, 37, 93, 37, @@ -2522,529 +2526,530 @@ static const flex_int16_t yy_chk[6755] = 888, 897, 895, 893, 896, 897, 898, 899, 900, 901, 903, 894, 908, 900, 902, 902, 903, 904, 905, 899, - 904, 906, 907, 909, 909, 898, 910, 899, 907, 912, - 901, 914, 908, 911, 906, 913, 905, 917, 911, 915, - 913, 913, 918, 915, 910, 912, 914, 912, 916, 916, - 919, 920, 922, 923, 926, 919, 925, 927, 931, 917, - 929, 929, 918, 58, 930, 932, 932, 923, 930, 925, - 920, 933, 935, 931, 926, 936, 922, 934, 927, 928, - 937, 934, 928, 938, 928, 937, 939, 935, 928, 936, - 928, 939, 939, 940, 941, 928, 933, 938, 943, 942, - 928, 944, 940, 942, 946, 945, 944, 947, 941, 946, - 948, 949, 951, 943, 950, 942, 944, 945, 951, 952, + 904, 906, 907, 909, 909, 898, 910, 899, 907, 917, + 901, 58, 908, 911, 906, 914, 905, 912, 911, 915, + 912, 913, 918, 915, 910, 920, 913, 913, 916, 916, + 914, 917, 919, 912, 922, 912, 923, 919, 925, 926, + 927, 931, 918, 930, 920, 929, 929, 930, 932, 932, + 923, 925, 933, 934, 935, 940, 931, 934, 922, 926, + 936, 927, 928, 937, 940, 928, 938, 928, 937, 935, + 939, 928, 941, 928, 936, 939, 939, 933, 928, 943, + 938, 942, 946, 928, 944, 942, 941, 946, 945, 944, + 947, 948, 949, 950, 943, 951, 958, 942, 952, 944, - 953, 947, 954, 950, 952, 949, 953, 956, 954, 955, - 955, 948, 956, 957, 958, 959, 962, 960, 963, 957, - 965, 966, 966, 963, 967, 964, 969, 970, 962, 967, - 971, 972, 965, 968, 959, 960, 958, 961, 961, 964, - 969, 968, 973, 961, 976, 961, 970, 972, 973, 971, - 974, 961, 975, 977, 978, 974, 961, 961, 979, 979, - 981, 980, 976, 961, 975, 980, 985, 983, 984, 977, - 986, 984, 978, 983, 987, 986, 988, 990, 989, 992, - 981, 993, 988, 989, 994, 985, 995, 987, 992, 996, - 993, 997, 995, 999, 998, 1000, 990, 1001, 996, 998, + 945, 951, 950, 952, 947, 953, 949, 954, 955, 955, + 956, 953, 948, 954, 957, 956, 959, 962, 958, 960, + 957, 963, 964, 966, 966, 967, 963, 972, 965, 962, + 967, 969, 970, 968, 971, 959, 964, 960, 961, 961, + 965, 968, 973, 972, 961, 969, 961, 975, 973, 974, + 976, 970, 961, 971, 974, 977, 978, 961, 961, 975, + 979, 979, 980, 981, 961, 985, 980, 983, 976, 984, + 986, 977, 984, 983, 978, 986, 987, 989, 990, 988, + 994, 992, 989, 981, 985, 988, 993, 995, 997, 987, + 992, 996, 999, 995, 998, 993, 994, 990, 1001, 998, - 994, 1005, 1002, 1003, 1006, 1007, 1004, 1005, 1009, 1000, - 997, 1007, 1003, 999, 1002, 1004, 1011, 1001, 1012, 1015, - 1013, 1006, 1014, 1018, 1009, 1013, 1016, 1017, 1018, 1019, - 1011, 1022, 1027, 1015, 1019, 1028, 1022, 1023, 1012, 1024, - 1024, 1014, 1017, 1025, 1016, 1026, 1023, 1027, 1028, 1025, - 1030, 1031, 1034, 1035, 1026, 1034, 1031, 1031, 1033, 1033, - 1036, 1037, 1033, 1038, 1040, 1039, 1030, 1035, 1041, 1042, - 1043, 1044, 1048, 1049, 1041, 1048, 1043, 1037, 1039, 1040, - 1036, 1038, 1045, 1046, 1052, 1050, 1044, 1045, 1051, 1042, - 1050, 1054, 1053, 1051, 1049, 1056, 1054, 1046, 1055, 1058, + 996, 1000, 1002, 1005, 1003, 1006, 1011, 997, 1004, 1005, + 1007, 1009, 999, 1003, 1002, 1000, 1007, 1004, 1001, 1012, + 1011, 1013, 1006, 1014, 1015, 1016, 1013, 1009, 1018, 1017, + 1019, 1022, 1023, 1018, 1025, 1019, 1022, 1027, 1015, 1012, + 1025, 1023, 1014, 1016, 1017, 1024, 1024, 1026, 1028, 1030, + 1033, 1033, 1027, 1031, 1033, 1035, 1026, 1034, 1031, 1031, + 1034, 1028, 1036, 1037, 1039, 1030, 1038, 1041, 1040, 1035, + 1042, 1044, 1043, 1041, 1046, 1045, 1049, 1039, 1043, 1037, + 1045, 1058, 1036, 1040, 1038, 1052, 1044, 1058, 1046, 1048, + 1042, 1050, 1048, 1051, 1053, 1054, 1050, 1049, 1051, 1055, - 1052, 1053, 1059, 1055, 1060, 1058, 1061, 1056, 1062, 1062, - 1060, 1063, 1061, 1064, 1065, 1066, 1066, 1065, 1059, 1067, - 1063, 1068, 1069, 1070, 1072, 1071, 1070, 1073, 57, 1074, - 1072, 1064, 1082, 1073, 1074, 1081, 1075, 1067, 1071, 1076, - 1068, 1075, 1069, 1077, 1078, 1076, 1080, 1088, 1077, 1083, - 1078, 1080, 1082, 1081, 1084, 1083, 1085, 1085, 1086, 1084, - 1087, 1089, 1092, 1090, 1094, 1088, 1090, 1086, 1091, 1087, - 1093, 1091, 1095, 1092, 1096, 1093, 1099, 1097, 1102, 1098, - 1089, 1100, 1094, 1097, 1095, 1098, 1100, 1101, 1101, 1103, - 1104, 1099, 1105, 1096, 1106, 1107, 1105, 1102, 1108, 1109, + 1054, 1052, 1056, 1053, 1055, 1059, 1060, 1061, 1062, 1062, + 1063, 1064, 1060, 1061, 1056, 1065, 1066, 1066, 1065, 1063, + 1067, 1059, 1068, 1069, 1070, 1072, 1071, 1070, 1073, 1064, + 1074, 1072, 1075, 1082, 1073, 1074, 1076, 1075, 1067, 1071, + 1077, 1068, 1076, 1069, 1078, 1077, 1080, 1081, 1083, 1086, + 1078, 1080, 1084, 1082, 1083, 1085, 1085, 1084, 1086, 1087, + 1088, 1089, 1092, 1090, 1091, 1081, 1090, 1091, 1087, 1093, + 1094, 1095, 1096, 1092, 1093, 1097, 1098, 1099, 1088, 1100, + 1089, 1097, 1098, 1095, 1100, 1101, 1101, 1102, 1094, 1103, + 1104, 1096, 1099, 1105, 1106, 1107, 1108, 1105, 1109, 1111, - 1111, 1115, 1104, 1103, 1107, 1112, 1112, 1118, 1113, 1114, - 52, 1117, 1106, 1113, 1114, 1119, 1123, 1108, 1120, 1111, - 1121, 1115, 1118, 1120, 1109, 1117, 1124, 1119, 1125, 1121, - 1122, 1122, 1124, 1126, 1125, 1127, 1123, 1128, 1129, 1128, - 1127, 1130, 1131, 1129, 1133, 1132, 1134, 1135, 1136, 1126, - 1132, 1137, 1139, 1139, 1135, 1130, 1131, 1140, 1141, 1133, - 1142, 1143, 1144, 1136, 1145, 1134, 47, 1143, 1147, 1145, - 1137, 1140, 1147, 1148, 1148, 1142, 1141, 1152, 1145, 1149, - 1145, 1151, 1144, 1145, 1149, 1150, 1150, 1153, 1151, 1154, - 1153, 1152, 1155, 1156, 1157, 1158, 1160, 1159, 1161, 1157, + 1112, 1112, 1104, 1103, 1107, 1113, 1102, 1116, 1118, 1114, + 1119, 1115, 1106, 1113, 1114, 1108, 1115, 1120, 1111, 1121, + 1124, 1122, 1118, 1109, 1121, 1119, 1127, 1116, 1125, 1120, + 1122, 1123, 1123, 1126, 1125, 1129, 1128, 1129, 1130, 1126, + 1124, 1128, 1127, 1130, 1131, 1132, 1133, 1134, 1135, 1136, + 1137, 1133, 1138, 1140, 1140, 1141, 1136, 1142, 1131, 1132, + 1144, 1143, 1134, 1145, 57, 1137, 1144, 1135, 1146, 1141, + 1148, 1138, 1152, 1146, 1148, 1142, 1143, 1149, 1149, 1152, + 1150, 1153, 1146, 1145, 1146, 1150, 1155, 1146, 1151, 1151, + 1154, 1156, 1157, 1154, 1158, 1153, 1159, 1161, 1160, 1158, - 1162, 1160, 1156, 1163, 1165, 1165, 1168, 18, 1154, 1159, - 1155, 1162, 1161, 1166, 1158, 1167, 1169, 1172, 1166, 1170, - 1167, 1169, 1163, 1170, 1171, 1173, 1168, 1174, 1176, 1175, - 1177, 1179, 1172, 1171, 1180, 1178, 1181, 1177, 1182, 1184, - 1173, 1175, 1183, 1176, 1182, 1185, 1174, 1178, 1187, 1186, - 1179, 1188, 1189, 1190, 1181, 1180, 1191, 1183, 1186, 1184, - 1192, 1195, 1193, 1187, 1189, 1185, 1197, 1195, 1196, 1198, - 1188, 1199, 1190, 1200, 1201, 1192, 1202, 1198, 1204, 1201, - 1197, 1191, 1193, 1196, 1205, 1239, 1206, 1203, 1202, 1200, - 1209, 1199, 1203, 1203, 1207, 1207, 1239, 1204, 1205, 1206, + 1162, 1157, 1161, 1164, 1169, 1155, 1163, 1166, 1166, 1156, + 1160, 1167, 1172, 1168, 1162, 1159, 1167, 1163, 1168, 1171, + 1170, 1172, 1164, 1171, 1169, 1170, 1173, 1174, 1175, 1177, + 1178, 1176, 1180, 1179, 1181, 1182, 1185, 1178, 1186, 1184, + 1183, 1173, 1174, 1176, 1177, 1179, 1183, 1175, 1187, 1188, + 1189, 1180, 1192, 1182, 1184, 1181, 1185, 1187, 1186, 1190, + 1191, 1193, 1194, 1197, 1188, 1199, 1196, 1198, 1200, 1189, + 1201, 1190, 1196, 1199, 1205, 1202, 1193, 1192, 1197, 1191, + 1202, 1198, 1194, 1203, 1204, 1206, 1201, 1207, 1200, 1204, + 1204, 1208, 1208, 1205, 1210, 1203, 1211, 1212, 1216, 1206, - 1208, 1208, 1210, 1209, 1211, 1208, 1212, 1212, 1208, 1208, - 1211, 1210, 1213, 1208, 1215, 1214, 1216, 1213, 1219, 1208, - 1215, 1216, 1217, 1208, 1214, 1218, 1218, 1217, 1220, 1220, - 1221, 1222, 1223, 1221, 1224, 1221, 1225, 1226, 1227, 1219, - 1224, 1228, 1229, 1227, 1232, 1225, 1230, 1231, 1236, 1232, - 1223, 1222, 1230, 1231, 1233, 1228, 1234, 1226, 1233, 1235, - 1229, 1243, 1236, 1242, 1235, 1234, 1237, 1237, 1238, 1238, - 1234, 1238, 1234, 1241, 1234, 1244, 1234, 1241, 1242, 1243, - 1245, 1246, 1247, 1248, 1244, 1245, 1245, 1249, 1248, 1250, - 1246, 1251, 1252, 1253, 1254, 1255, 1255, 1256, 1250, 1257, + 1207, 1209, 1209, 1212, 1216, 1211, 1209, 1210, 1214, 1209, + 1209, 1213, 1213, 1214, 1209, 1220, 1215, 1217, 1218, 1223, + 1209, 1227, 1217, 1218, 1209, 1215, 1219, 1219, 1221, 1221, + 1222, 1224, 1225, 1222, 1226, 1222, 1220, 1228, 1225, 1223, + 1229, 1227, 1228, 1226, 1230, 1231, 1232, 1235, 1233, 1224, + 1257, 1231, 1232, 1233, 1229, 1234, 1235, 1237, 1257, 1234, + 1244, 1235, 1230, 1235, 1236, 1235, 1242, 1235, 1240, 1236, + 1242, 1237, 1238, 1238, 1239, 1239, 1243, 1239, 1244, 1240, + 1245, 1246, 1248, 1247, 1250, 1249, 1246, 1246, 1251, 1245, + 1249, 1243, 1247, 1252, 1253, 1254, 1255, 1251, 1250, 1256, - 1254, 1249, 1259, 1258, 1247, 1256, 1260, 1253, 1258, 1262, - 1251, 1252, 1261, 1257, 1263, 1260, 1259, 1264, 1266, 1261, - 1265, 1265, 1264, 1267, 1267, 1271, 1268, 1262, 1268, 1270, - 1271, 1272, 1270, 1266, 1273, 1274, 1274, 1275, 1279, 1263, - 1276, 1276, 1278, 1273, 1277, 1277, 1280, 1278, 1281, 1281, - 1272, 1282, 1283, 1284, 1285, 1286, 1284, 1275, 1287, 1279, - 1289, 1286, 1289, 1287, 1288, 1290, 1293, 1280, 1297, 1283, - 1295, 1282, 1292, 1288, 1285, 1292, 1297, 1294, 1301, 1301, - 1296, 1293, 1294, 1290, 1295, 1296, 1298, 1299, 1300, 1302, - 1299, 1298, 1303, 1300, 1302, 1304, 1305, 1310, 1306, 1308, + 1256, 1258, 1255, 1259, 1248, 1260, 1263, 1261, 1259, 1254, + 1262, 1264, 1252, 1253, 1267, 1258, 1261, 1262, 1265, 1260, + 1266, 1266, 1272, 1265, 1263, 1268, 1268, 1272, 1269, 1267, + 1269, 1271, 1273, 1274, 1271, 1276, 1264, 1275, 1275, 1277, + 1277, 1279, 1274, 1278, 1278, 1280, 1279, 1281, 1282, 1282, + 1283, 1273, 1284, 1285, 1286, 1276, 1285, 1287, 1289, 1288, + 1290, 1291, 1290, 1287, 1288, 1294, 1280, 1289, 1281, 1284, + 1283, 1295, 1293, 1296, 1286, 1293, 1295, 1297, 1298, 1291, + 1294, 1300, 1297, 1299, 1300, 1301, 1298, 1296, 1299, 1303, + 1301, 1302, 1302, 1304, 1303, 1305, 1306, 1307, 1309, 1310, - 1309, 1304, 1310, 1305, 1313, 1308, 1309, 1311, 1312, 1314, - 1303, 1306, 1316, 1311, 1315, 1315, 1318, 1312, 1319, 1321, - 1314, 1320, 1322, 1313, 1323, 1324, 1328, 1325, 1319, 1327, - 1323, 1324, 1316, 1325, 1318, 1327, 1320, 1329, 1330, 1321, - 1328, 1331, 1332, 1333, 1335, 1322, 1328, 1334, 1334, 1336, - 1337, 1339, 1339, 1331, 1338, 1340, 1332, 1329, 1330, 1338, - 1341, 1333, 1343, 17, 1335, 1341, 1344, 1345, 1337, 1347, - 1346, 1344, 1344, 1348, 1336, 1349, 1350, 1347, 1340, 1346, - 1353, 1343, 1353, 1354, 1351, 1345, 1352, 1348, 1361, 1351, - 1349, 1350, 1351, 1356, 1350, 1352, 1357, 1354, 1358, 1356, + 1312, 1305, 1311, 1306, 1309, 1310, 1312, 1311, 1313, 1314, + 1307, 1304, 1315, 1316, 1316, 1317, 1319, 1313, 1320, 1321, + 1323, 1319, 1322, 1315, 1324, 1325, 1326, 1327, 1314, 1321, + 1331, 1325, 1326, 1327, 1330, 1317, 1320, 1322, 1329, 1332, + 1323, 1333, 1334, 1335, 1329, 1336, 1336, 1324, 1330, 1337, + 1331, 1338, 1339, 1333, 1330, 1340, 1334, 1341, 1341, 1332, + 1340, 1335, 1342, 1343, 1345, 1348, 1346, 1349, 1343, 1337, + 1339, 1346, 1346, 1347, 1348, 1349, 1338, 52, 1350, 1351, + 1352, 1353, 1356, 1345, 1354, 1342, 1353, 1363, 1355, 1353, + 1355, 1347, 1350, 1354, 1351, 1352, 1356, 1358, 1352, 1360, - 1357, 1359, 1360, 1363, 1362, 1364, 1359, 1359, 1363, 1358, - 1364, 1365, 1366, 1367, 1361, 1368, 1370, 1376, 1367, 1371, - 1372, 1360, 1362, 1373, 1373, 1375, 1380, 1374, 1377, 1365, - 1370, 1374, 1366, 1378, 1377, 1368, 1376, 1371, 1372, 1379, - 1380, 1381, 1382, 1375, 1383, 1378, 1384, 1385, 1386, 1387, - 1388, 1384, 1392, 1386, 1385, 1390, 1381, 1382, 1379, 1388, - 1389, 1389, 1391, 1383, 1393, 1393, 1396, 1387, 1394, 1395, - 1390, 1391, 1392, 1398, 1394, 1395, 1397, 1397, 1399, 1398, - 1396, 1400, 1401, 1402, 1403, 1404, 1411, 1401, 1417, 1402, - 1403, 1404, 1405, 1405, 1399, 1406, 1406, 1408, 1408, 1409, + 1359, 1361, 1362, 1358, 1359, 1364, 1361, 1361, 1367, 1365, + 1360, 1366, 1368, 1363, 1365, 1369, 1366, 1370, 1373, 1372, + 1369, 1362, 1374, 1364, 1375, 1375, 1367, 1376, 1377, 1378, + 1380, 1376, 1368, 1372, 1381, 1379, 1373, 1370, 1382, 1383, + 1374, 1379, 1380, 1384, 1385, 1386, 1377, 1389, 1378, 1387, + 1386, 1394, 1382, 1381, 1383, 1388, 1387, 1390, 1384, 1392, + 1388, 1391, 1391, 1385, 1393, 1389, 1390, 1395, 1395, 1396, + 1397, 1394, 1398, 1393, 1392, 1396, 1397, 1399, 1399, 1400, + 1401, 1402, 1403, 1404, 1405, 1400, 1398, 1403, 1406, 1404, + 1405, 1407, 1407, 1413, 1406, 1412, 1401, 1408, 1408, 1410, - 1410, 1412, 1400, 1409, 1411, 1413, 1414, 1415, 1417, 1410, - 1416, 1416, 1418, 1412, 1415, 1420, 1421, 1419, 1422, 1413, - 1418, 1414, 1419, 1422, 1422, 1423, 1424, 1425, 1425, 1420, - 1423, 1423, 1426, 1427, 1428, 1421, 1429, 1430, 1431, 1432, - 1434, 1429, 1433, 1428, 1435, 1434, 1424, 1436, 1433, 1437, - 1438, 1426, 1427, 1439, 1440, 1437, 1430, 1432, 1431, 1439, - 1440, 1441, 1442, 1443, 1435, 1444, 1446, 1449, 1447, 1438, - 1449, 1445, 1450, 1436, 1448, 1448, 1451, 1452, 1453, 1453, - 1441, 1442, 1443, 1447, 1444, 1445, 1456, 1446, 1457, 1452, - 1456, 1450, 1454, 1454, 1455, 1451, 1458, 1459, 1460, 1455, + 1410, 1411, 1402, 1414, 1412, 1411, 1415, 1416, 1419, 1417, + 1420, 1413, 1418, 1418, 1421, 1414, 1417, 1422, 1420, 1421, + 1415, 1423, 1416, 1426, 1424, 1427, 1427, 1425, 1419, 1424, + 1424, 1422, 1425, 1425, 1428, 1429, 1430, 1431, 1432, 1433, + 1423, 1435, 1431, 1426, 1434, 1430, 1436, 1435, 1437, 1438, + 1439, 1436, 1440, 1428, 1429, 1441, 1439, 1432, 1442, 1433, + 1443, 1441, 1434, 1444, 1442, 1445, 1446, 1447, 1437, 1448, + 1452, 1440, 1449, 1450, 1450, 1438, 1453, 1451, 1457, 1443, + 1451, 1447, 1444, 1457, 1445, 1446, 1454, 1449, 1459, 1452, + 1448, 1455, 1455, 1456, 1456, 1453, 1458, 1460, 1454, 1461, - 1460, 1457, 1462, 1463, 1460, 1458, 1464, 1465, 1463, 1466, - 1459, 1467, 1467, 1468, 1470, 1471, 1469, 1460, 1468, 1472, - 1462, 1464, 1469, 1475, 1472, 1466, 1473, 1465, 1471, 1470, - 1473, 1474, 1476, 1477, 1478, 1474, 1480, 1480, 1479, 1482, - 1484, 1485, 1477, 1475, 1479, 1487, 1485, 1486, 1486, 1488, - 1476, 1487, 1490, 1490, 1478, 1492, 1494, 1482, 1492, 1493, - 1493, 1484, 1495, 1497, 1498, 1500, 1497, 1499, 1501, 1488, - 1502, 1502, 1494, 1504, 1500, 1503, 1505, 1506, 1495, 1507, - 1508, 1508, 1506, 1509, 1510, 1498, 1511, 1499, 1501, 1512, - 1503, 1513, 1509, 1507, 1504, 1505, 1514, 1514, 1515, 1516, + 1458, 1459, 1462, 1466, 1462, 1464, 1460, 1467, 1462, 1465, + 1468, 1473, 1461, 1471, 1465, 1469, 1469, 1470, 1466, 1471, + 1472, 1462, 1470, 1464, 1473, 1474, 1468, 1467, 1475, 1476, + 1474, 1477, 1475, 1476, 1478, 1472, 1479, 1480, 1481, 1482, + 1482, 1484, 1486, 1487, 1481, 1479, 1488, 1488, 1487, 1489, + 1490, 1477, 1478, 1492, 1492, 1489, 1496, 1480, 1494, 1484, + 1497, 1494, 1500, 1486, 1495, 1495, 1499, 1501, 1502, 1499, + 1490, 1503, 1496, 1504, 1504, 1505, 1497, 1502, 1506, 1507, + 1508, 1509, 1512, 1500, 1511, 1508, 1513, 1501, 1510, 1510, + 1505, 1503, 1514, 1511, 1515, 1509, 1516, 1516, 1507, 1506, - 1517, 1511, 1510, 1518, 1520, 1517, 1519, 1519, 1520, 1521, - 1523, 1513, 1515, 1524, 1512, 1522, 1522, 1516, 1518, 1525, - 1526, 1527, 1530, 1525, 1524, 1531, 1527, 1529, 1529, 1521, - 1531, 1532, 1523, 1533, 1534, 1530, 1535, 1537, 1536, 1526, - 1538, 1538, 1607, 1540, 1539, 1541, 1607, 1532, 1534, 1539, - 1543, 1533, 1536, 1542, 1542, 1535, 1535, 1545, 1546, 1543, - 1546, 1544, 1537, 1540, 1547, 1541, 1544, 1548, 1549, 1547, - 1550, 1552, 1554, 1548, 1553, 1553, 1550, 1545, 1555, 1558, - 1561, 1557, 1559, 1559, 1555, 1552, 1557, 1562, 1549, 1560, - 1560, 1554, 1563, 1564, 1561, 1566, 1564, 1565, 1565, 1567, + 1512, 1513, 1517, 1518, 1519, 1520, 1521, 1521, 1522, 1519, + 1523, 1525, 1522, 1526, 1515, 1528, 1517, 1514, 1524, 1524, + 1520, 1518, 1527, 1529, 1526, 1536, 1527, 1533, 1529, 1535, + 1523, 1531, 1531, 1525, 1528, 1532, 1534, 1537, 1532, 1538, + 1533, 1534, 1539, 1536, 1540, 1535, 1541, 1541, 1542, 47, + 1543, 1537, 1544, 1542, 1545, 1545, 1539, 1546, 1538, 1538, + 1547, 1548, 1549, 1550, 1549, 1547, 1546, 1551, 1550, 1540, + 1543, 1552, 1544, 1551, 1553, 1555, 1556, 1556, 1557, 1558, + 1553, 1548, 1560, 1561, 1564, 1558, 1565, 1560, 1566, 1555, + 1569, 1552, 1562, 1562, 1563, 1563, 1567, 1557, 1564, 1567, - 1568, 1576, 1570, 1558, 0, 1562, 1569, 1563, 1570, 1569, - 1571, 1567, 1569, 1566, 1572, 1571, 1574, 1572, 1575, 1577, - 1568, 1586, 1577, 1575, 1569, 1574, 1576, 1578, 1578, 1579, - 1580, 1588, 1581, 1572, 1586, 1579, 1580, 1581, 1582, 1582, - 1583, 1583, 1584, 1587, 1585, 1589, 1591, 1592, 1584, 1585, - 1588, 1590, 1591, 1592, 1590, 1593, 1594, 1595, 1596, 1598, - 1593, 1587, 1594, 1596, 1598, 1589, 1597, 1597, 1599, 1600, - 1601, 1602, 1606, 1603, 1604, 1605, 1608, 1609, 1608, 1611, - 1595, 1619, 1612, 1615, 1616, 1602, 1599, 1603, 1604, 1600, - 1601, 1611, 1613, 1605, 1612, 1614, 1609, 1606, 1617, 1618, + 1568, 1568, 1570, 1566, 1565, 1571, 1572, 1561, 1569, 1572, + 1573, 18, 1572, 1574, 1570, 1579, 1573, 1575, 1574, 1577, + 1575, 1578, 1581, 1581, 1572, 1571, 1578, 1580, 1577, 1582, + 1580, 1583, 1590, 1584, 1589, 1582, 1575, 1583, 1584, 1587, + 1579, 1585, 1585, 1586, 1586, 1587, 1588, 1589, 1591, 1592, + 1590, 1588, 1593, 1594, 1595, 1593, 1596, 1597, 1598, 1594, + 1595, 1596, 1602, 1597, 1603, 1599, 1604, 1591, 1601, 1592, + 1599, 1600, 1600, 1601, 1605, 1606, 1607, 1608, 1609, 1610, + 1602, 1598, 1612, 1610, 1603, 1611, 1604, 1611, 1605, 1606, + 1607, 1617, 1614, 1615, 1616, 1608, 1618, 1617, 1619, 1620, - 1616, 1614, 1619, 1615, 1622, 1613, 1621, 1621, 1624, 1623, - 1625, 1625, 1626, 1618, 1623, 1627, 1628, 1629, 1617, 1630, - 1624, 1631, 1633, 1632, 1622, 1634, 1638, 1626, 1630, 1627, - 1632, 1633, 1636, 1642, 1633, 1629, 1631, 1640, 1640, 1639, - 1628, 1634, 1639, 1641, 1641, 1642, 1643, 1636, 1645, 1645, - 1644, 1638, 1636, 1644, 1646, 1647, 1648, 1649, 1650, 1651, - 1649, 1648, 1653, 1650, 1643, 1652, 1654, 1646, 1655, 1657, - 1656, 1653, 1658, 1658, 1647, 1657, 1659, 1655, 1651, 1656, - 1655, 1652, 1660, 1661, 1662, 1654, 1663, 1664, 1666, 1665, - 1669, 1670, 1664, 1664, 1665, 1660, 1659, 1672, 1662, 1673, + 1622, 1612, 1625, 1609, 1614, 1615, 1621, 1616, 1624, 1624, + 1626, 1627, 1628, 1628, 1619, 1626, 1618, 1629, 1631, 1620, + 1621, 1622, 1625, 1627, 1630, 1632, 1633, 1635, 1636, 1634, + 1637, 1641, 1629, 1639, 1635, 1633, 1642, 1636, 1630, 1642, + 1636, 1646, 1631, 1632, 1634, 1645, 1637, 1650, 1639, 1643, + 1643, 1644, 1644, 1639, 1649, 1647, 1641, 1645, 1647, 1646, + 1648, 1648, 1652, 1651, 1653, 1652, 1650, 1649, 1651, 1653, + 1654, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1661, 1662, + 1663, 1656, 1660, 1658, 1659, 1664, 1658, 1655, 1665, 1654, + 1666, 1667, 1657, 1663, 1672, 1668, 1667, 1667, 1669, 1662, - 1666, 1661, 1663, 1671, 1671, 1674, 1675, 1675, 1673, 1670, - 1674, 1676, 1677, 1672, 1678, 1669, 1679, 1677, 1680, 1681, - 1676, 1675, 1685, 1676, 1681, 1681, 1683, 1684, 1686, 1687, - 1688, 1696, 1678, 1686, 0, 1687, 1680, 1679, 1689, 1689, - 1683, 1690, 1684, 1692, 1685, 1691, 1693, 1690, 1688, 1694, - 1691, 1696, 1693, 1697, 1698, 1694, 1699, 1692, 1701, 1700, - 1698, 1705, 1700, 1703, 1701, 1706, 1707, 1697, 1700, 1699, - 1708, 1703, 1709, 1710, 1707, 1708, 1711, 1712, 1713, 1714, - 1705, 1709, 1715, 1715, 1706, 1711, 1710, 1718, 1716, 1717, - 1712, 1720, 1713, 1714, 1716, 1717, 1719, 1719, 1721, 1722, + 1668, 1675, 1665, 1664, 1673, 1676, 1666, 1674, 1674, 1679, + 1669, 1677, 1678, 1678, 1676, 1680, 1677, 1675, 1679, 1672, + 1680, 1679, 1673, 1681, 1682, 1683, 1684, 1678, 1686, 1687, + 1688, 1684, 1684, 1689, 1690, 1691, 1692, 1692, 1689, 1699, + 1690, 1681, 1686, 1683, 1687, 1682, 1694, 1695, 1693, 1696, + 1697, 1694, 1688, 1691, 1693, 1696, 1697, 1700, 1701, 1699, + 1702, 1695, 1704, 1703, 1701, 1708, 1703, 1706, 1704, 1709, + 1710, 1700, 1703, 1702, 1711, 1706, 1712, 1713, 1710, 1711, + 1714, 1715, 1716, 1717, 1708, 1712, 1718, 1718, 1709, 1714, + 1713, 1721, 1719, 1720, 1715, 1723, 1716, 1717, 1719, 1720, - 1718, 1723, 1723, 1725, 1715, 1726, 1724, 1727, 1728, 1725, - 1731, 1720, 1730, 1730, 1737, 1733, 1721, 1732, 1722, 1724, - 1733, 1732, 1736, 1727, 1734, 1739, 1728, 1726, 1735, 1734, - 1731, 1736, 1740, 1735, 1739, 1740, 1741, 1737, 1742, 1743, - 1743, 1744, 1745, 1746, 1747, 1747, 1750, 1748, 1741, 1749, - 1753, 1751, 1754, 1742, 1745, 1756, 1749, 1757, 1750, 1755, - 1744, 1748, 1746, 1751, 1758, 1755, 0, 1756, 1760, 1753, - 1758, 1760, 1754, 1759, 1759, 1757, 1761, 1761, 1763, 1764, - 1765, 1766, 1766, 1763, 1767, 1768, 1765, 1768, 1764, 1769, - 1770, 1771, 1769, 1772, 1773, 1774, 1767, 1775, 1776, 1778, + 1722, 1722, 1724, 1725, 1721, 1726, 1726, 1728, 1718, 1729, + 1727, 1730, 1731, 1728, 1734, 1723, 1733, 1733, 1740, 1736, + 1724, 1735, 1725, 1727, 1736, 1735, 1739, 1730, 1737, 1742, + 1731, 1729, 1738, 1737, 1734, 1739, 1743, 1738, 1745, 1744, + 1742, 1740, 1744, 1746, 1748, 1743, 1747, 1747, 1749, 1750, + 1745, 1751, 1751, 1752, 1753, 1757, 1758, 1754, 1746, 1755, + 1749, 1753, 1761, 1748, 1759, 1760, 1762, 1752, 1750, 1754, + 1759, 1755, 1762, 1772, 1757, 1772, 1758, 1760, 1763, 1763, + 1761, 1764, 1765, 1765, 1764, 1767, 1768, 1769, 1770, 1770, + 1767, 1771, 1774, 1769, 1773, 1768, 1775, 1773, 1776, 1777, - 1774, 1779, 1775, 1777, 1781, 1784, 1779, 1776, 1780, 0, - 1770, 1772, 1773, 1771, 1778, 1777, 1782, 1780, 1783, 1787, - 1784, 1782, 1789, 1783, 1781, 1785, 1785, 1786, 1782, 1790, - 1780, 1791, 1792, 1786, 1793, 1794, 1793, 1795, 1795, 1798, - 1787, 1789, 1796, 1796, 1797, 1797, 1801, 1791, 1790, 1794, - 1802, 1794, 1792, 1799, 1799, 1800, 1800, 1803, 1803, 1798, - 1804, 1809, 1805, 1806, 1804, 1811, 1806, 1801, 1805, 1808, - 1810, 1802, 1813, 1813, 1812, 1808, 1810, 1812, 1814, 1809, - 1815, 1816, 1816, 1818, 1817, 1815, 1819, 1820, 1820, 1821, - 1811, 1819, 1825, 1823, 1821, 1822, 1824, 1826, 1814, 1817, + 1778, 1779, 1780, 1771, 1783, 1778, 1779, 1781, 1782, 1783, + 1785, 1780, 1774, 1784, 1788, 1786, 1776, 1777, 1775, 1781, + 1786, 1787, 1784, 1782, 1789, 1789, 1787, 1786, 1790, 1788, + 1785, 1791, 1793, 1795, 1790, 1784, 1794, 1796, 1797, 1802, + 1797, 1805, 1798, 1799, 1799, 1800, 1800, 1801, 1801, 1795, + 1806, 1793, 1791, 1803, 1803, 1794, 1798, 1796, 1798, 1802, + 1804, 1804, 1805, 1807, 1807, 1808, 1809, 1810, 1812, 1808, + 1810, 1806, 1809, 1813, 1812, 1814, 1815, 1816, 1817, 1817, + 1816, 1814, 1818, 1819, 1820, 1820, 1822, 1823, 1819, 1821, + 1825, 1813, 1823, 1824, 1824, 1825, 1827, 1826, 1828, 1829, - 1828, 1822, 1827, 1832, 1818, 1823, 1823, 1823, 1827, 1830, - 1825, 1831, 1823, 1834, 1830, 1830, 1824, 1826, 1832, 1833, - 1828, 1833, 1835, 1836, 1834, 1831, 1837, 1838, 1839, 1836, - 1840, 1840, 1841, 1842, 1842, 1837, 1843, 1835, 1844, 1845, - 1845, 1846, 1846, 1847, 1850, 1850, 1851, 1838, 1852, 1839, - 1854, 1855, 1857, 1858, 1858, 1856, 1843, 1852, 1841, 1854, - 1844, 1856, 1859, 1847, 1860, 1862, 1861, 1863, 1857, 1864, - 1864, 1851, 1855, 1861, 1862, 1865, 1866, 1868, 1869, 1860, - 1870, 1871, 1868, 1859, 1869, 1872, 1875, 1873, 1871, 1873, - 1876, 1872, 1866, 1863, 1877, 1877, 1876, 1878, 1879, 1880, + 1830, 1815, 1818, 1826, 1821, 1831, 1832, 1822, 1827, 1827, + 1827, 1831, 1842, 1835, 1836, 1827, 1834, 1829, 1828, 1838, + 1830, 1834, 1834, 1837, 1839, 1837, 1832, 1835, 1840, 1836, + 1838, 1841, 1842, 1843, 1840, 1844, 1844, 1845, 1847, 1839, + 1841, 1846, 1846, 1848, 1849, 1849, 1850, 1850, 1851, 1854, + 1854, 1855, 1856, 1858, 1843, 1861, 1859, 1863, 1847, 1864, + 1860, 1856, 1858, 1845, 1866, 1848, 1860, 1867, 1851, 1862, + 1862, 1861, 1865, 1866, 1864, 1869, 1855, 1859, 1863, 1865, + 1868, 1868, 1870, 1872, 1873, 1874, 1876, 1875, 1872, 1877, + 1873, 1877, 1876, 1867, 1875, 1879, 1880, 1883, 1870, 1881, - 1870, 1865, 1878, 1881, 1882, 1875, 1883, 1879, 1884, 1883, - 1885, 1886, 1886, 1889, 1887, 1888, 1882, 1890, 1893, 1880, - 1887, 1888, 1881, 1891, 1894, 1895, 1884, 1891, 1896, 1896, - 1895, 1897, 1890, 1889, 1898, 1900, 1885, 1901, 1893, 1902, - 1902, 1901, 1903, 1891, 1904, 1907, 1894, 1909, 1903, 1898, - 1897, 1905, 1905, 1904, 1900, 1906, 1907, 1908, 1908, 1906, - 1910, 1907, 1911, 1913, 1912, 1914, 1915, 1917, 1909, 1912, - 1916, 1918, 1915, 1919, 1910, 1924, 1918, 1920, 1920, 1921, - 1921, 1911, 1917, 1913, 1924, 1914, 1919, 1922, 1916, 1925, - 1926, 1922, 1927, 1927, 1929, 1929, 1930, 1931, 1933, 1934, + 1881, 1869, 1880, 1882, 1884, 1874, 1883, 1885, 1882, 1886, + 1887, 1888, 1889, 1887, 1879, 1890, 1890, 1891, 1894, 1892, + 1893, 1886, 1897, 1891, 1884, 1892, 1885, 1895, 1898, 1888, + 1899, 1895, 1901, 1894, 1902, 1899, 1900, 1900, 1889, 1904, + 1893, 1905, 1897, 1906, 1906, 1905, 1907, 1895, 1908, 1902, + 1898, 1901, 1907, 1909, 1909, 1910, 1911, 1908, 1904, 1910, + 1912, 1912, 1913, 1914, 1916, 1915, 1917, 1911, 1918, 1916, + 1919, 1920, 1911, 1922, 1923, 1921, 1919, 1914, 1922, 1924, + 1924, 1925, 1925, 1913, 1915, 1928, 1917, 1923, 1918, 1920, + 1921, 1926, 1929, 1930, 1928, 1926, 1931, 1931, 1933, 1933, - 1925, 1930, 1930, 1931, 1933, 1925, 1935, 1936, 1937, 1939, - 1926, 1935, 1940, 1942, 1937, 1941, 1940, 1943, 1944, 1936, - 1945, 1939, 1946, 1943, 1947, 1934, 1945, 1941, 1948, 1952, - 1949, 1951, 1953, 1948, 1956, 1956, 1955, 1953, 1942, 1955, - 1944, 1946, 1949, 1951, 1947, 1957, 1957, 1959, 1952, 1958, - 1958, 1960, 1961, 1964, 1962, 1963, 1969, 1960, 1961, 1962, - 1966, 1963, 1964, 1968, 1972, 1966, 1968, 1959, 1969, 1970, - 1970, 1973, 1974, 1975, 1975, 1976, 1972, 1974, 1981, 1979, - 1977, 1978, 1979, 1973, 1976, 1977, 1978, 1980, 1980, 1983, - 1982, 1984, 1985, 1988, 1990, 1986, 1985, 1987, 1981, 1982, + 1934, 1935, 1938, 1929, 1937, 1934, 1934, 1935, 1929, 1939, + 1937, 1940, 1941, 1930, 1939, 1943, 1944, 1945, 1941, 1946, + 1944, 1948, 1951, 1940, 1947, 1949, 1952, 1943, 1938, 1945, + 1947, 1949, 1950, 1950, 1953, 1954, 1956, 1957, 17, 1953, + 1958, 1951, 1964, 1948, 1946, 1958, 1952, 1954, 1956, 1960, + 1961, 1961, 1960, 1962, 1962, 1965, 1957, 1963, 1963, 1966, + 1968, 1965, 1964, 1967, 1969, 1966, 1968, 1971, 1967, 1974, + 1977, 1973, 1971, 1969, 1973, 1975, 1975, 1978, 1979, 1980, + 1980, 1974, 1977, 1979, 1981, 1982, 1983, 1985, 1985, 1978, + 1982, 1983, 1984, 1981, 1986, 1984, 1987, 1988, 1989, 1990, - 1986, 1991, 1994, 1987, 1989, 1993, 1993, 1983, 1996, 1995, - 1984, 1988, 1990, 1989, 1998, 1991, 2000, 1993, 1995, 1999, - 1994, 1997, 1997, 1998, 2001, 2002, 2005, 2005, 1996, 2001, - 2007, 1999, 2008, 2007, 2009, 2012, 2011, 2000, 2002, 2013, - 2014, 2015, 2015, 2023, 2016, 2013, 2016, 2018, 2008, 2012, - 2009, 2011, 2017, 2017, 2027, 2018, 2024, 2014, 2020, 2020, - 2021, 2021, 2024, 2025, 2026, 2028, 2023, 2029, 2029, 2025, - 2030, 2026, 2031, 2034, 2032, 2033, 2027, 2035, 2036, 2030, - 2037, 2040, 2041, 2251, 2038, 2028, 2032, 2033, 2034, 2035, - 2038, 2043, 2043, 2031, 2042, 2037, 2044, 2045, 2048, 2046, + 1993, 1991, 1992, 1990, 1994, 1987, 1991, 1995, 1992, 1996, + 1998, 1998, 1999, 1994, 1986, 1988, 2001, 1989, 1993, 2000, + 2002, 2002, 1998, 1996, 2003, 1995, 2004, 2005, 2000, 2006, + 1999, 2007, 2012, 2003, 2006, 2012, 2001, 2013, 2004, 2010, + 2010, 2014, 2017, 2016, 2007, 2018, 2019, 2023, 2005, 2020, + 2020, 2018, 2021, 2013, 2021, 2023, 2017, 2014, 2016, 2022, + 2022, 2025, 2025, 2019, 2026, 2026, 2028, 2029, 2030, 2031, + 2032, 2033, 2035, 2029, 2030, 2036, 2031, 2034, 2034, 2041, + 2045, 2035, 2037, 2038, 2039, 2040, 2042, 2043, 2046, 2028, + 2047, 2033, 2032, 2043, 2037, 2038, 2036, 2040, 2049, 2039, - 2251, 2040, 2046, 2038, 2036, 2041, 2042, 2047, 2050, 2051, - 2052, 2051, 2047, 2050, 2044, 2053, 2054, 2045, 2048, 2058, - 2053, 2056, 2059, 2054, 2060, 2061, 2062, 2061, 2052, 2063, - 2056, 2059, 2065, 2066, 2065, 2063, 2060, 2058, 2067, 2067, - 2068, 2069, 2070, 2071, 2070, 2062, 2069, 2066, 2071, 2072, - 2073, 2074, 2075, 2078, 2072, 2076, 2077, 2079, 2075, 2080, - 2076, 2082, 2079, 2079, 2083, 2078, 2068, 2080, 2073, 2077, - 2086, 2074, 2084, 2084, 2085, 2085, 2087, 2088, 2083, 2089, - 2082, 2091, 2092, 2088, 2089, 2086, 2090, 0, 2090, 2094, - 2092, 2093, 2093, 2095, 2095, 2097, 2087, 2099, 2092, 2091, + 2045, 2042, 2047, 2048, 2048, 2041, 2043, 2050, 2052, 2051, + 2053, 2046, 2051, 2052, 2055, 2056, 2049, 2056, 2057, 2055, + 2058, 2059, 2061, 2063, 2064, 2058, 2065, 2050, 2059, 2067, + 2053, 2061, 2066, 2064, 2066, 2071, 2057, 2068, 2065, 2073, + 2070, 2063, 2070, 2068, 2072, 2072, 2074, 2079, 2067, 2071, + 2075, 2074, 2075, 2076, 2077, 2078, 2080, 2082, 2076, 2077, + 2083, 2081, 2080, 2084, 2087, 2073, 2081, 2079, 2084, 2084, + 2082, 2085, 2083, 2078, 2088, 2089, 2089, 2090, 2090, 2085, + 2091, 2092, 2094, 2087, 2093, 2096, 2097, 2094, 2088, 2095, + 2093, 2095, 2098, 2098, 2097, 2091, 2099, 2100, 2100, 2101, - 2098, 2094, 2096, 2096, 2097, 2098, 2102, 2101, 2102, 2103, - 2105, 2106, 2104, 2107, 2109, 2099, 2101, 2104, 2104, 2101, - 2106, 2113, 2105, 2110, 2111, 2107, 2109, 2114, 2110, 2111, - 2103, 2115, 2116, 2116, 2113, 2117, 2118, 2120, 2121, 2119, - 2115, 2122, 2130, 2123, 2127, 2125, 2126, 2114, 2123, 2136, - 2138, 2130, 2121, 2117, 2118, 2119, 2122, 2125, 2126, 2137, - 2128, 2129, 2120, 2133, 2127, 2128, 2129, 2135, 2138, 2133, - 2139, 2140, 2136, 2135, 2137, 2141, 2141, 2142, 2143, 2143, - 2140, 2144, 2133, 2145, 2146, 2147, 2142, 2145, 2148, 2146, - 2149, 2150, 2156, 2152, 2164, 2139, 2149, 2151, 2147, 2152, + 2101, 2092, 2097, 2096, 2102, 2103, 2104, 2106, 2099, 2107, + 2103, 2107, 2108, 2102, 2110, 2109, 2106, 2112, 2111, 2106, + 2109, 2109, 2114, 2115, 2104, 2116, 2110, 2111, 2115, 2112, + 2116, 2118, 2119, 2108, 2114, 2122, 2120, 2121, 2121, 2123, + 2124, 2125, 2128, 2127, 2118, 2120, 2126, 2128, 2132, 2130, + 2131, 2141, 2119, 2122, 2133, 2142, 2124, 2123, 2127, 2133, + 2126, 2130, 2131, 2135, 2134, 2138, 2125, 2140, 2132, 2134, + 2142, 2138, 2135, 2140, 2141, 2143, 2144, 2145, 2146, 2146, + 2147, 2148, 2148, 2149, 2138, 2151, 2145, 2150, 2154, 2147, + 2151, 2150, 2152, 2143, 2155, 2156, 2160, 0, 2157, 2160, - 2144, 2155, 2151, 2151, 2153, 2154, 2164, 2148, 2154, 2155, - 2153, 2161, 2156, 2150, 2159, 2159, 2160, 2160, 2162, 2162, - 2161, 2163, 2163, 2165, 2166, 2168, 2168, 2167, 2169, 2169, - 2166, 2160, 2167, 2170, 2171, 2173, 2174, 2176, 2170, 2173, - 2171, 2165, 2160, 2175, 2178, 2179, 2181, 2175, 2180, 2182, - 2179, 2184, 2183, 2185, 2182, 2186, 2174, 2176, 2187, 2190, - 2186, 2181, 2188, 2188, 2189, 2192, 2193, 2184, 2189, 2178, - 2183, 2180, 2191, 2185, 2190, 2194, 2195, 2191, 2196, 2197, - 2187, 2198, 2201, 2196, 2193, 2199, 2199, 2194, 2202, 2203, - 2201, 2192, 2197, 2204, 2205, 2195, 2206, 2208, 2207, 2198, + 2155, 2144, 2149, 2157, 2157, 2152, 2158, 2154, 2159, 2162, + 2161, 2180, 2158, 2167, 2159, 2165, 2165, 2156, 2161, 2166, + 2166, 2170, 2167, 2168, 2168, 2169, 2169, 2173, 2171, 2162, + 2172, 2180, 2173, 2170, 2166, 2177, 2172, 2174, 2174, 2175, + 2175, 2177, 2176, 2182, 2179, 2166, 2171, 2176, 2179, 2181, + 2184, 2185, 2187, 2181, 2186, 2188, 2185, 2190, 2189, 2191, + 2188, 2192, 2193, 2182, 2194, 2194, 2192, 2187, 2195, 2197, + 2196, 2198, 2195, 2190, 2197, 2184, 2189, 2186, 2199, 2191, + 2200, 2201, 2202, 2204, 2193, 2196, 2203, 2202, 2205, 2205, + 2207, 2208, 2200, 2209, 2210, 2211, 2199, 2198, 2207, 2203, - 2209, 2213, 2211, 2216, 2215, 2216, 2214, 2202, 2203, 2208, - 2215, 2217, 2217, 2273, 2213, 2206, 2204, 2211, 2205, 2207, - 2214, 2209, 2218, 2219, 2220, 2221, 2219, 2218, 2222, 2223, - 2223, 2224, 2224, 2225, 2227, 2225, 2273, 2220, 2228, 2221, - 2236, 2222, 2226, 2226, 2229, 2229, 2230, 2231, 2231, 2227, - 2237, 2228, 2232, 2232, 2233, 2230, 2235, 2238, 2230, 2233, - 2236, 2235, 2239, 2239, 2240, 2240, 2241, 2242, 2242, 2238, - 2237, 2243, 2244, 2244, 2246, 2245, 2247, 2247, 2249, 2246, - 2248, 2248, 2250, 2252, 2253, 2241, 2256, 2256, 2255, 2243, - 2245, 2250, 2249, 2255, 2257, 2258, 2258, 2252, 2259, 2260, + 2201, 2204, 2212, 2213, 2214, 2215, 2220, 2217, 2512, 2221, + 2208, 2222, 2209, 2222, 2219, 2221, 2214, 2210, 2224, 2211, + 2220, 2212, 2217, 2224, 2213, 2226, 2215, 2219, 2223, 2223, + 2225, 2227, 2512, 2225, 2228, 2229, 2229, 2233, 2226, 2230, + 2230, 2231, 2234, 2231, 2236, 2227, 2247, 2228, 2232, 2232, + 2235, 2235, 2233, 2236, 2242, 2234, 2236, 2237, 2237, 2238, + 2238, 2239, 2241, 2243, 2244, 2247, 2239, 2241, 2245, 2245, + 2246, 2246, 2248, 2248, 2242, 2249, 2244, 2250, 2250, 2251, + 2252, 2253, 2253, 2243, 2255, 2252, 2254, 2254, 2256, 2257, + 2258, 2259, 2263, 2249, 2251, 2261, 2265, 2256, 2255, 2266, - 2264, 2261, 2265, 2253, 2261, 2260, 2262, 2262, 2263, 2263, - 2266, 2268, 2266, 2257, 2269, 2272, 2259, 2265, 2277, 2264, - 2270, 2270, 2262, 2274, 2275, 2279, 2268, 2278, 2275, 2276, - 2276, 2280, 2278, 2269, 2283, 2272, 2284, 2277, 2274, 2285, - 2279, 2282, 2282, 2284, 2286, 2287, 2280, 2288, 2289, 2289, - 2290, 2296, 2295, 2285, 2283, 2291, 2296, 2291, 2292, 2290, - 2294, 2292, 2286, 2287, 2295, 2297, 2294, 2298, 2299, 2300, - 2297, 2302, 2301, 2288, 2304, 2305, 2292, 2301, 2292, 2304, - 2305, 2299, 2307, 2306, 2309, 2308, 2310, 2311, 2307, 2312, - 2300, 2308, 2298, 2311, 2312, 2313, 2314, 2302, 2306, 2315, + 2261, 2262, 2262, 2270, 2258, 2266, 2257, 2264, 2264, 2267, + 2259, 2263, 2267, 2271, 2265, 2268, 2268, 2269, 2269, 2272, + 2274, 2272, 2270, 2275, 2276, 2276, 2278, 2279, 2271, 2280, + 2281, 2268, 2282, 2282, 2281, 2274, 2283, 2285, 2284, 2286, + 2288, 2288, 2275, 2284, 2280, 2289, 2278, 2291, 2292, 2290, + 2279, 2293, 2285, 2294, 2286, 2283, 2290, 2295, 2295, 2296, + 2297, 2291, 2297, 2301, 2298, 2289, 2292, 2298, 2296, 2293, + 2300, 2304, 2302, 2303, 2305, 2301, 2300, 2302, 2303, 2294, + 2306, 2307, 2298, 2308, 2298, 2310, 2307, 2305, 2311, 2312, + 2310, 2313, 2314, 2311, 2315, 2316, 2304, 2313, 2314, 2317, - 2313, 2310, 2317, 2316, 2318, 2309, 2316, 2319, 2320, 2321, - 2326, 2317, 2315, 2318, 2322, 2324, 2319, 2320, 2323, 2324, - 2322, 2314, 2328, 2321, 2323, 2329, 2329, 2330, 2331, 2331, - 2326, 2328, 2332, 2330, 2333, 2333, 2335, 2331, 2334, 2337, - 2341, 2332, 2340, 2334, 2338, 2339, 2339, 2343, 2344, 2341, - 2345, 2346, 2350, 2352, 2352, 2337, 2335, 2340, 2335, 2343, - 2338, 2351, 2349, 2346, 2344, 2345, 2348, 2349, 0, 2348, - 2353, 2353, 2350, 2351, 2355, 2355, 2356, 2357, 2358, 2356, - 2359, 2360, 2357, 2362, 2358, 2365, 2359, 2361, 2361, 2364, - 2360, 2363, 2363, 2366, 2367, 2367, 2368, 2362, 2370, 2365, + 2320, 2306, 2318, 2319, 2312, 2317, 2321, 2318, 2319, 2308, + 2316, 2322, 2323, 2324, 2322, 2315, 2327, 2325, 2326, 2321, + 2330, 2323, 2324, 2328, 2330, 2320, 2325, 2326, 2329, 2328, + 2327, 2332, 2334, 2336, 2329, 2335, 2335, 2337, 2337, 2336, + 2338, 2334, 2339, 2339, 2341, 2340, 2337, 2343, 2347, 2338, + 2340, 2332, 2344, 2345, 2345, 2346, 2350, 2347, 2351, 2349, + 2355, 2356, 2352, 2343, 2341, 2355, 2341, 2357, 2344, 2499, + 2346, 2349, 2350, 2351, 2352, 2354, 2358, 2358, 2354, 2357, + 2499, 2356, 2359, 2359, 2361, 2361, 2362, 2363, 2364, 2362, + 2365, 2366, 2363, 2368, 2364, 2371, 2365, 2367, 2367, 2370, - 2369, 2364, 2368, 2370, 2372, 2378, 2373, 2376, 2372, 2373, - 2374, 2374, 2366, 2375, 2369, 2377, 2376, 2379, 2375, 2380, - 2380, 2379, 2381, 2383, 2377, 2378, 2384, 2385, 2383, 2386, - 2387, 2388, 2389, 2390, 2387, 2381, 2391, 2389, 2392, 2390, - 2393, 2394, 2391, 2386, 2395, 2396, 2384, 2385, 2399, 2395, - 2398, 2388, 2400, 2408, 2408, 2401, 2392, 2400, 2407, 2393, - 2394, 2401, 2398, 2402, 2399, 2403, 2396, 2403, 2405, 2410, - 2409, 2402, 2407, 2409, 2411, 2411, 2414, 2405, 2415, 2416, - 2414, 2417, 2417, 2418, 2415, 2421, 2421, 2423, 2425, 2429, - 2426, 2416, 2418, 2430, 2429, 2410, 2431, 2440, 2432, 2433, + 2366, 2369, 2369, 2372, 2373, 2373, 2374, 2368, 2376, 2371, + 2375, 2370, 2374, 2376, 2378, 2384, 2379, 2382, 2378, 2379, + 2380, 2380, 2372, 2381, 2375, 2383, 2382, 2385, 2381, 2386, + 2386, 2385, 2387, 2389, 2383, 2384, 2390, 2391, 2389, 2392, + 2393, 2394, 2395, 2396, 2393, 2387, 2397, 2395, 2398, 2396, + 2399, 2400, 2397, 2392, 2401, 2402, 2390, 2391, 2405, 2401, + 2404, 2394, 2406, 2414, 2414, 2407, 2398, 2406, 2413, 2399, + 2400, 2407, 2404, 2408, 2405, 2409, 2402, 2409, 2411, 2416, + 2415, 2408, 2413, 2415, 2417, 2417, 2420, 2411, 2421, 2422, + 2420, 2423, 2423, 2424, 2421, 2427, 2427, 2429, 2431, 2435, - 2434, 2434, 2425, 2432, 2433, 2423, 2426, 2436, 2436, 2438, - 2439, 2439, 2441, 2440, 2444, 2438, 2442, 2431, 2446, 2430, - 2445, 2442, 2450, 2445, 2447, 2448, 2448, 2452, 2453, 2451, - 2446, 2450, 2457, 2444, 2441, 2451, 2447, 2455, 2455, 2456, - 2458, 2463, 2456, 2453, 2464, 2452, 2460, 2460, 2461, 2461, - 2462, 2457, 2465, 2464, 2466, 2462, 2466, 2465, 2458, 2463, - 2467, 2468, 2470, 2471, 2469, 2472, 2473, 2470, 2474, 2474, - 2478, 2473, 2475, 2475, 2467, 2468, 2469, 2476, 2476, 2477, - 2477, 2479, 2478, 2471, 2480, 2472, 2481, 2481, 2483, 2480, - 2482, 2482, 2484, 2485, 2486, 2487, 2490, 2488, 2493, 2479, + 2432, 2422, 2424, 2436, 2435, 2416, 2437, 2446, 2438, 2439, + 2440, 2440, 2431, 2438, 2439, 2429, 2432, 2442, 2442, 2444, + 2445, 2445, 2447, 2446, 2450, 2444, 2448, 2437, 2452, 2436, + 2451, 2448, 2456, 2451, 2453, 2454, 2454, 2458, 2459, 2457, + 2452, 2456, 2463, 2450, 2447, 2457, 2453, 2461, 2461, 2462, + 2464, 2469, 2462, 2459, 2470, 2458, 2466, 2466, 2467, 2467, + 2468, 2463, 2471, 2470, 2472, 2468, 2472, 2471, 2464, 2469, + 2473, 2474, 2476, 2477, 2475, 2478, 2479, 2476, 2480, 2480, + 2484, 2479, 2481, 2481, 2473, 2474, 2475, 2482, 2482, 2483, + 2483, 2485, 2484, 2477, 2486, 2478, 2487, 2487, 2489, 2486, - 2483, 2489, 2489, 2491, 2491, 2485, 2492, 2492, 2494, 2493, - 2495, 2496, 2484, 2488, 2486, 2490, 2487, 2495, 2497, 2498, - 2494, 2499, 2500, 2496, 2498, 2501, 2501, 2502, 2503, 2504, - 2505, 2506, 2507, 2509, 2508, 2509, 2502, 2513, 2497, 2510, - 2516, 2499, 2500, 2505, 2511, 2511, 2507, 2514, 2512, 2504, - 2517, 2510, 2513, 2518, 2503, 2506, 2508, 2512, 2516, 2520, - 2519, 2521, 2514, 2519, 2522, 2530, 2521, 2523, 2523, 2522, - 2524, 2524, 2517, 2520, 2525, 2525, 2518, 2527, 2527, 2529, - 2529, 2531, 2532, 2530, 2533, 2535, 2536, 2537, 2538, 2539, - 2540, 2541, 2531, 2541, 2542, 2543, 2549, 2544, 2539, 2533, + 2488, 2488, 2490, 2491, 2492, 2493, 2496, 2494, 2500, 2485, + 2489, 2495, 2495, 2497, 2497, 2491, 2498, 2498, 2502, 2503, + 2500, 2501, 2490, 2494, 2492, 2496, 2493, 2504, 2501, 2505, + 2502, 2506, 2504, 2507, 2507, 2508, 2509, 2510, 2513, 2503, + 2511, 2514, 2516, 2515, 2508, 2515, 2517, 2517, 2522, 2505, + 2518, 2506, 2513, 2511, 2516, 2519, 2520, 2510, 2523, 2518, + 2524, 2525, 2509, 2514, 2525, 2526, 2522, 2527, 2528, 0, + 2519, 2520, 2527, 2528, 2529, 2529, 2530, 2530, 2536, 2526, + 2523, 2531, 2531, 2524, 2533, 2533, 2535, 2535, 2537, 2538, + 2539, 2541, 2542, 2543, 2544, 2545, 2536, 2546, 2547, 2537, - 0, 2532, 2545, 2545, 2536, 2535, 2547, 2547, 2538, 2537, - 2540, 2548, 2550, 2543, 2542, 2544, 2551, 2551, 2549, 2553, - 2555, 2550, 2554, 2554, 2556, 2548, 2557, 2559, 2553, 2558, - 2560, 2561, 2562, 2557, 2563, 2563, 2564, 2564, 2555, 2565, - 2566, 2573, 2556, 2567, 2558, 2559, 2571, 2561, 2560, 2567, - 2570, 2562, 2568, 2568, 2569, 2569, 2570, 2572, 2566, 2565, - 2573, 2574, 2575, 2576, 2571, 2577, 2578, 2575, 2579, 2584, - 2579, 2578, 2572, 2580, 2580, 2574, 2581, 2586, 2581, 2582, - 2582, 2587, 2588, 2576, 2589, 2577, 2586, 2590, 2584, 2592, - 2591, 2593, 2590, 2596, 2588, 2591, 2597, 2598, 2598, 2597, + 2547, 2548, 2549, 2555, 2545, 2539, 2550, 2556, 2538, 2554, + 2542, 2541, 2551, 2551, 2544, 2543, 2556, 2546, 2553, 2553, + 2549, 2548, 2559, 2554, 2550, 2555, 2557, 2557, 2560, 2560, + 2561, 2559, 2562, 2563, 2564, 2565, 2566, 2568, 2571, 2567, + 2563, 2569, 2569, 2570, 2570, 2572, 2573, 2577, 2561, 2564, + 2562, 2576, 2573, 2565, 2566, 2567, 2568, 2576, 2571, 2574, + 2574, 2575, 2575, 2572, 2578, 2577, 2579, 2580, 2581, 2582, + 2583, 2584, 2585, 2581, 2585, 2590, 2584, 2586, 2586, 2578, + 2587, 2580, 2587, 2588, 2588, 2579, 2592, 2593, 2594, 2582, + 2583, 2595, 2596, 2597, 2590, 2592, 2598, 2596, 2597, 2599, - 2587, 2599, 2600, 2602, 2589, 2601, 2601, 2603, 2604, 2592, - 2593, 2606, 2604, 2596, 2602, 2607, 2599, 2608, 2608, 2607, - 2600, 2609, 2603, 2611, 2612, 2613, 2606, 2614, 2614, 2616, - 2617, 2618, 2619, 2619, 2609, 2618, 2620, 2624, 2611, 2617, - 2623, 2616, 2621, 2621, 2612, 2613, 2622, 2625, 2626, 2623, - 2633, 2622, 2635, 2624, 2636, 2620, 2627, 2627, 0, 2625, - 2632, 2632, 2634, 2634, 2637, 2635, 2638, 2636, 2626, 2639, - 2640, 2640, 2633, 2637, 2641, 2638, 2642, 2647, 2639, 2644, - 2644, 2648, 2647, 2649, 2650, 2651, 2648, 2652, 2654, 2650, - 2653, 2642, 2656, 2651, 2641, 2657, 2654, 2649, 2658, 2653, + 2594, 2602, 2603, 2604, 2604, 2603, 2593, 2605, 2606, 2607, + 2607, 2595, 2608, 2609, 2612, 2610, 2598, 2617, 2599, 2610, + 2613, 2602, 2605, 2608, 2613, 2615, 2606, 2618, 2609, 2612, + 2614, 2614, 2617, 2619, 2620, 2620, 2622, 2623, 2615, 2624, + 2625, 2625, 2626, 2624, 2627, 2627, 2623, 2618, 2622, 2628, + 2629, 2630, 2631, 2619, 2628, 2632, 2633, 2633, 2639, 2629, + 2641, 2626, 2638, 2638, 2631, 2640, 2640, 2630, 2642, 2643, + 2644, 2646, 2646, 2641, 2645, 2632, 2647, 2648, 2643, 2644, + 2639, 2642, 2653, 2645, 2650, 2650, 2654, 2653, 2655, 2656, + 2657, 2654, 2648, 2658, 2656, 2659, 2647, 2660, 2657, 2662, - 2657, 2659, 2663, 2658, 2660, 2660, 2652, 2656, 2661, 2661, - 2662, 2664, 2664, 2665, 2666, 2662, 2659, 2667, 2668, 2666, - 2665, 2663, 2669, 2672, 2670, 2671, 2671, 2673, 2669, 2670, - 2674, 2674, 2673, 2675, 2675, 2667, 2668, 2678, 2672, 2679, - 2679, 2680, 2681, 2684, 2680, 2689, 2682, 2681, 2681, 2683, - 2678, 2682, 2685, 2688, 2683, 2686, 2687, 2684, 2685, 2686, - 2689, 2687, 2688, 2690, 2691, 2694, 2692, 2693, 2695, 2697, - 2694, 2690, 2692, 2693, 2698, 2699, 2697, 2701, 2699, 2698, - 2695, 2703, 2704, 2705, 2706, 2691, 2703, 2704, 2713, 2701, - 2707, 2708, 2709, 2709, 2710, 2718, 2714, 2706, 2715, 2707, + 2665, 2663, 2655, 2664, 2659, 2660, 2663, 2669, 2664, 2666, + 2666, 2673, 2658, 2668, 2662, 2665, 2667, 2667, 2668, 2670, + 2670, 2671, 2672, 2674, 2675, 2678, 2669, 2672, 2671, 2673, + 2675, 2676, 2677, 2677, 2679, 2684, 2676, 2680, 2680, 2679, + 2678, 2674, 2681, 2681, 2685, 2685, 2686, 2687, 2684, 2686, + 2688, 2689, 2687, 2687, 2690, 2688, 2689, 2691, 2692, 2693, + 2694, 2695, 2692, 2691, 2693, 2696, 2697, 2701, 2690, 2694, + 2700, 2698, 2699, 2696, 2703, 2700, 2695, 2698, 2699, 2701, + 2704, 2703, 2707, 2705, 2709, 2704, 2705, 2697, 2710, 2709, + 2711, 2712, 2713, 2710, 2707, 2719, 2714, 2715, 2715, 2724, - 2708, 2705, 2714, 2710, 2715, 2719, 2713, 2720, 2721, 2721, - 2722, 2723, 2724, 2725, 2718, 2726, 2726, 2722, 2727, 2729, - 2731, 2724, 2734, 2732, 2737, 2719, 2720, 2732, 2725, 2735, - 2723, 2733, 2733, 2736, 2729, 2735, 0, 2727, 2738, 2736, - 2731, 2740, 2737, 2741, 2738, 2739, 2739, 2734, 2741, 2740, - 2743, 2744, 2746, 2747, 2749, 2750, 2747, 2748, 2746, 2743, - 2753, 2748, 2752, 2752, 2744, 2754, 2754, 2763, 2749, 0, - 2750, 2755, 2755, 2757, 2757, 2758, 2759, 2765, 2753, 2758, - 2764, 2759, 2761, 2761, 2767, 2764, 2766, 2763, 2769, 2765, - 2775, 2766, 2766, 2770, 2770, 2779, 2767, 2772, 2772, 2773, + 2716, 2713, 2725, 0, 2712, 2714, 2720, 2726, 2711, 2716, + 2721, 2729, 2720, 2719, 2727, 2727, 2721, 2728, 2724, 2730, + 2731, 2733, 2725, 2735, 2728, 2737, 2726, 2740, 2730, 2738, + 2729, 2732, 2732, 2738, 0, 2731, 2739, 2739, 2735, 2743, + 2733, 2741, 2742, 2744, 0, 2737, 2746, 2741, 2742, 2744, + 2745, 2745, 2740, 2747, 2746, 2749, 2750, 2743, 2747, 2752, + 2753, 2755, 2754, 2753, 2749, 2752, 2754, 2756, 2759, 2750, + 2758, 2758, 2760, 2760, 2769, 2755, 2761, 2761, 2763, 2763, + 2764, 2771, 2756, 2765, 2764, 2775, 2759, 2770, 2765, 2767, + 2767, 2772, 2770, 2771, 2769, 2773, 2772, 2772, 2776, 2776, - 2773, 2774, 2776, 2775, 2774, 2778, 2778, 2781, 2769, 2782, - 2782, 2783, 2783, 2779, 2785, 2776, 2784, 2784, 2786, 2786, - 2787, 2788, 2789, 2799, 2790, 2791, 2791, 2781, 2792, 2785, - 2790, 2795, 2792, 2787, 2800, 2796, 2789, 2795, 2798, 2788, - 2796, 2801, 2802, 2798, 2798, 2803, 2799, 2804, 2802, 2805, - 2811, 2803, 2809, 2805, 2800, 2806, 2806, 2809, 2811, 2812, - 2814, 2801, 2812, 2815, 2816, 2816, 2815, 2821, 2818, 2817, - 2819, 2820, 2804, 2818, 2822, 2822, 2823, 2826, 2828, 2825, - 2830, 2821, 2869, 2828, 2828, 2814, 2817, 2817, 2819, 2824, - 2823, 2820, 2824, 2825, 2827, 2839, 2826, 2869, 2829, 2830, + 2778, 2778, 2779, 2779, 2781, 2775, 2780, 2773, 2782, 2780, + 2784, 2784, 2785, 2787, 2788, 2788, 2791, 2781, 2789, 2789, + 2794, 2782, 2790, 2790, 2792, 2792, 2793, 2795, 2796, 2805, + 2785, 2791, 2810, 2787, 2796, 2797, 2797, 2801, 2794, 2793, + 2798, 2795, 2802, 2801, 2798, 2804, 2806, 2802, 2807, 2808, + 2804, 2804, 2805, 2809, 2811, 2808, 2817, 2810, 2811, 2809, + 2812, 2812, 2815, 2820, 2817, 2823, 2806, 2815, 2807, 2818, + 2821, 2824, 2818, 2821, 2822, 2822, 2824, 2825, 2826, 2827, + 2828, 2828, 2823, 2823, 2832, 2829, 2830, 2831, 2820, 2830, + 2837, 2837, 2833, 2827, 2836, 2825, 2845, 2830, 2826, 2829, - 2824, 2836, 2827, 2829, 2829, 2831, 2831, 2832, 2832, 2833, - 2833, 2834, 2834, 2835, 2835, 2837, 2838, 2836, 2840, 2841, - 2837, 2839, 2842, 2840, 2843, 2844, 2845, 2842, 2847, 2847, - 2848, 2848, 2849, 2843, 2850, 2849, 2838, 2853, 2841, 2852, - 2852, 2854, 2854, 2855, 2853, 2844, 2845, 2858, 2855, 2857, - 2857, 2859, 2850, 2860, 2861, 2863, 2858, 2864, 2864, 2866, - 2859, 2865, 2860, 2861, 2867, 2865, 2868, 2871, 2866, 2870, - 2872, 2882, 2873, 2863, 2870, 2870, 2873, 2868, 2881, 2872, - 2871, 2877, 2883, 2867, 2878, 2878, 2877, 2880, 2880, 2885, - 2885, 2887, 2881, 2886, 2890, 2894, 2882, 2892, 2897, 2891, + 2833, 2831, 2834, 2832, 2835, 2838, 2838, 2834, 2834, 2835, + 2835, 2839, 2839, 2836, 2840, 2840, 2841, 2841, 2842, 2843, + 2844, 2846, 2845, 2847, 2843, 2848, 2846, 2849, 2850, 2851, + 2848, 2853, 2853, 2856, 2842, 2871, 2849, 2854, 2854, 2871, + 2844, 2855, 2847, 2859, 2855, 2858, 2858, 2869, 2850, 2851, + 2859, 2856, 2860, 2860, 2861, 2863, 2863, 2864, 2865, 2861, + 2866, 2867, 2870, 2870, 2872, 2869, 2864, 2865, 2873, 2866, + 2867, 2874, 2876, 2872, 2875, 2877, 2878, 2876, 2876, 2879, + 2887, 2883, 2874, 2879, 2888, 2878, 2883, 2873, 2877, 2875, + 2884, 2884, 2886, 2886, 2887, 2889, 2891, 2891, 2892, 2893, - 2883, 2895, 2886, 2887, 2891, 2899, 2892, 2895, 2901, 2902, - 2897, 2903, 2903, 2901, 2902, 2894, 2904, 2906, 2907, 2890, - 2908, 2914, 2906, 2909, 2909, 2904, 2899, 2909, 2911, 2911, - 2914, 2907, 2912, 2912, 2908, 2913, 2913, 2915, 2917, 2916, - 2919, 2923, 2920, 2917, 2921, 2925, 2919, 2920, 2924, 2921, - 2922, 2922, 2927, 2929, 2930, 2930, 2926, 2915, 2916, 2923, - 2924, 2926, 2928, 2932, 2933, 2936, 2925, 2932, 2928, 2933, - 2927, 2934, 2935, 2935, 2937, 2938, 2934, 2940, 2929, 2942, - 2942, 2944, 2945, 2946, 2936, 2948, 2949, 2946, 2950, 2937, - 2938, 2947, 2954, 2951, 2944, 2945, 2950, 2940, 2951, 2953, + 2896, 2897, 2900, 2898, 2901, 2903, 2897, 2892, 2905, 2888, + 2901, 2893, 2898, 2889, 2907, 2908, 2912, 2903, 2910, 2907, + 2908, 2912, 2900, 2909, 2909, 2896, 2913, 2910, 2914, 2905, + 2915, 2915, 2917, 2917, 2915, 2918, 2918, 2919, 2919, 2913, + 2920, 2921, 2914, 2922, 0, 2923, 2925, 2929, 2926, 2920, + 2923, 2927, 2925, 2926, 2928, 2928, 2927, 2930, 2931, 2932, + 2933, 2921, 2922, 2935, 2932, 2929, 2934, 2936, 2936, 2930, + 2938, 2939, 2934, 2942, 2938, 2940, 2939, 2946, 2933, 2931, + 2940, 2941, 2941, 2943, 2944, 2948, 2948, 2950, 2935, 2951, + 2952, 2954, 2942, 2955, 2952, 2953, 2960, 2946, 2943, 2944, - 2947, 2948, 2952, 2952, 2955, 2949, 2956, 2956, 2953, 2957, - 2954, 2960, 2960, 2961, 2961, 2963, 2965, 2965, 2967, 2968, - 2969, 2970, 2971, 2973, 2973, 2969, 2974, 2971, 2957, 2975, - 2955, 2977, 2978, 2976, 2967, 2968, 2963, 2970, 2975, 2976, - 2980, 2980, 2981, 2982, 2983, 2983, 2974, 2986, 2988, 2987, - 2990, 2978, 3000, 2988, 2977, 2987, 2981, 2991, 2991, 2992, - 2992, 2993, 2982, 2994, 2995, 2995, 2996, 2986, 2998, 2997, - 3001, 3000, 2990, 2999, 3002, 3004, 2993, 2996, 2997, 2999, - 3003, 3003, 3001, 2994, 2995, 3012, 3005, 3011, 2998, 3005, - 3004, 3017, 3006, 0, 3002, 3006, 3007, 3007, 3013, 3011, + 2950, 2956, 2951, 2957, 2953, 2958, 2958, 2954, 2957, 2956, + 2959, 2961, 2955, 2963, 2960, 2962, 2962, 2966, 2966, 2959, + 2967, 2967, 2969, 2971, 2971, 2973, 2974, 2980, 2975, 2976, + 2977, 2981, 2963, 2975, 2983, 2977, 2984, 2961, 2979, 2979, + 2981, 2973, 2974, 2969, 2982, 2976, 2987, 2980, 2986, 2986, + 2982, 2988, 2989, 2989, 2992, 2984, 2993, 2983, 2994, 2996, + 2987, 2999, 2993, 2994, 2997, 2997, 2998, 2998, 3000, 3002, + 2988, 3001, 3001, 3003, 2992, 3004, 2999, 3005, 3006, 3008, + 3002, 2996, 3003, 3005, 3007, 3009, 3009, 3010, 3000, 3011, + 3012, 3001, 3011, 3012, 3017, 3004, 3007, 3006, 3018, 3008, - 3014, 3014, 3016, 3015, 3013, 3012, 3015, 3019, 3016, 3017, - 3020, 3020, 3019, 3021, 3022, 3023, 3027, 3024, 3021, 3025, - 3025, 3023, 3028, 3029, 3030, 3031, 3031, 3032, 3027, 3033, - 3034, 3036, 3036, 3022, 3024, 3024, 3039, 3030, 3038, 3034, - 3028, 3037, 3037, 3038, 3040, 3033, 3032, 3044, 3029, 3040, - 3039, 3041, 3041, 3042, 3042, 3043, 3043, 3045, 3046, 3052, - 3044, 3047, 3049, 3049, 3046, 3054, 3047, 3055, 3057, 3056, - 3058, 3058, 3060, 3060, 3061, 3062, 3064, 3063, 3052, 3066, - 3066, 3067, 3067, 3045, 3065, 3070, 3069, 3054, 3056, 3055, - 3057, 3063, 3069, 3065, 3062, 3071, 3064, 3072, 3075, 3082, + 3013, 3013, 3010, 3019, 3020, 3020, 3017, 3021, 3022, 3019, + 3021, 3023, 3025, 3028, 3022, 3026, 3026, 3025, 3018, 3027, + 3029, 3030, 3031, 3031, 3027, 3033, 3029, 3034, 3035, 3023, + 3036, 3038, 3028, 3037, 3037, 3039, 0, 3033, 3030, 3030, + 3040, 3042, 3042, 3036, 3045, 3034, 3043, 3043, 3051, 3040, + 3038, 3039, 3044, 3035, 3046, 3047, 3047, 3044, 3045, 3046, + 3048, 3048, 3049, 3049, 3050, 3052, 3058, 3053, 3055, 3055, + 3060, 3052, 3053, 3061, 3051, 3062, 3063, 3050, 3064, 3064, + 3066, 3066, 3067, 3068, 3070, 3058, 3069, 3071, 3072, 3072, + 3073, 3073, 3060, 3075, 3062, 3061, 3071, 3076, 3063, 3075, - 3061, 3080, 3072, 3076, 3076, 3070, 3078, 3078, 3079, 3083, - 3081, 3082, 3089, 3079, 3071, 3080, 3081, 3083, 3085, 3075, - 3084, 3084, 3087, 3085, 3088, 3090, 3087, 3092, 3091, 3088, - 3093, 3096, 3089, 3091, 3095, 3097, 3093, 3098, 3100, 3092, - 3107, 0, 3095, 3101, 3102, 3090, 3103, 3104, 3106, 3109, - 3096, 3111, 3104, 3106, 3109, 3097, 3100, 3098, 3108, 3101, - 3107, 3102, 3102, 3112, 3108, 3113, 3112, 3103, 3116, 3116, - 3118, 3111, 3117, 3117, 3118, 3122, 3122, 3123, 3113, 3124, - 3125, 3125, 3123, 3127, 3127, 3128, 3128, 3132, 3128, 3129, - 3129, 3132, 3129, 3130, 3130, 3134, 3131, 3131, 3124, 3131, + 3069, 3077, 3068, 3081, 3070, 3078, 3082, 3082, 3067, 3085, + 3078, 3084, 3084, 3086, 3085, 3087, 3088, 3076, 3089, 3095, + 3077, 3087, 3090, 3090, 3081, 3091, 3089, 3086, 3088, 3093, + 3091, 3094, 3096, 3093, 3098, 3097, 3094, 3099, 3102, 3095, + 3097, 3101, 3103, 3099, 3104, 3106, 3098, 3113, 0, 3101, + 3107, 3108, 3096, 3109, 3110, 3112, 3115, 3102, 3117, 3110, + 3112, 3115, 3103, 3106, 3104, 3114, 3107, 3113, 3108, 3108, + 3118, 3114, 3119, 3118, 3109, 3122, 3122, 3124, 3117, 3123, + 3123, 3124, 3128, 3128, 3129, 3119, 3130, 3131, 3131, 3129, + 3133, 3133, 3134, 3134, 3138, 3134, 3135, 3135, 3138, 3135, - 3134, 3135, 3136, 3136, 3137, 3138, 3141, 3142, 3143, 3145, - 3135, 3144, 3144, 3143, 3148, 3151, 3149, 3150, 3152, 3138, - 3154, 3150, 3137, 3149, 3151, 3155, 3141, 3142, 3157, 3145, - 3155, 3156, 3156, 3152, 3158, 3158, 3161, 3157, 3154, 3148, - 3159, 3159, 3160, 3160, 3162, 3163, 3166, 3164, 3167, 3162, - 3165, 3161, 3164, 3164, 3163, 3168, 3165, 3163, 3171, 3169, - 3170, 3172, 3172, 3167, 3169, 3170, 3173, 3174, 3175, 3175, - 3177, 3166, 3173, 3174, 3176, 3176, 3168, 3171, 3178, 3181, - 3181, 3183, 3183, 3178, 3184, 3177, 3187, 3187, 3188, 3188, - 3189, 3189, 3196, 3184, 3190, 3190, 3192, 3192, 3193, 3193, + 3136, 3136, 3140, 3137, 3137, 3130, 3137, 3140, 3141, 3142, + 3142, 3143, 3144, 3147, 3148, 3149, 3151, 3141, 3150, 3150, + 3149, 3154, 3157, 3155, 3156, 3158, 3144, 3160, 3156, 3143, + 3155, 3157, 3161, 3147, 3148, 3163, 3151, 3161, 3162, 3162, + 3158, 3164, 3164, 3167, 3163, 3160, 3154, 3165, 3165, 3166, + 3166, 3168, 3169, 3172, 3170, 3173, 3168, 3171, 3167, 3170, + 3170, 3169, 3174, 3171, 3169, 3177, 3175, 3176, 3178, 3178, + 3173, 3175, 3176, 3179, 3180, 3181, 3181, 3183, 3172, 3179, + 3180, 3182, 3182, 3174, 3177, 3184, 3187, 3187, 3189, 3189, + 3184, 3190, 3183, 3193, 3193, 3194, 3194, 3195, 3195, 3202, - 3194, 3194, 3195, 3195, 3198, 3199, 3199, 3200, 3201, 3202, - 3204, 3204, 3205, 3198, 3206, 3206, 3200, 3207, 3196, 3219, - 3201, 3208, 3213, 3209, 3210, 3210, 3211, 3211, 3217, 3202, - 3218, 3205, 3207, 3218, 3208, 3209, 3221, 3213, 3214, 3214, - 3220, 3220, 3224, 3225, 3223, 3219, 3217, 3223, 3224, 3227, - 3226, 3228, 3231, 3232, 3221, 3226, 3229, 3225, 3231, 3235, - 3236, 3239, 3232, 3235, 3249, 3248, 3251, 3249, 3227, 3228, - 3248, 3257, 3229, 3252, 3252, 3236, 3253, 3253, 3260, 3251, - 3255, 3255, 3258, 3262, 3259, 3264, 3271, 3239, 3259, 3265, - 3266, 3258, 3268, 3270, 3257, 3266, 3272, 3262, 3260, 3267, + 3190, 3196, 3196, 3198, 3198, 3199, 3199, 3200, 3200, 3201, + 3201, 3204, 3205, 3205, 3206, 3207, 3208, 3210, 3210, 3211, + 3204, 3212, 3212, 3206, 3213, 3202, 3225, 3207, 3214, 3219, + 3215, 3216, 3216, 3217, 3217, 3223, 3208, 3224, 3211, 3213, + 3224, 3214, 3215, 3227, 3219, 3220, 3220, 3226, 3226, 3230, + 3231, 3229, 3225, 3223, 3229, 3230, 3233, 3232, 3234, 3237, + 3238, 3227, 3232, 3235, 3231, 3237, 3241, 3242, 3245, 3238, + 3241, 3255, 3254, 3257, 3255, 3233, 3234, 3254, 3263, 3235, + 3258, 3258, 3242, 3259, 3259, 3266, 3257, 3261, 3261, 3264, + 3268, 3265, 3270, 3277, 3245, 3265, 3271, 3272, 3264, 3274, - 3265, 3267, 3269, 3269, 3273, 3271, 3270, 3268, 3264, 3274, - 3275, 3277, 3276, 3278, 3272, 3279, 3287, 3280, 3278, 3282, - 3273, 3276, 3280, 3277, 3283, 3275, 3281, 3281, 3288, 3283, - 3287, 3289, 3289, 3290, 3274, 3295, 3279, 3291, 3291, 3282, - 3292, 3292, 3290, 3293, 3293, 3294, 3294, 3296, 3288, 3297, - 3298, 3299, 3297, 3300, 3295, 3298, 3299, 3301, 3302, 3303, - 3305, 3307, 3304, 3312, 3302, 3305, 3317, 3296, 3306, 3306, - 3308, 3308, 3301, 3303, 3304, 3310, 3310, 3311, 3300, 3313, - 3313, 3307, 3312, 3315, 3317, 3320, 3320, 3321, 3321, 3322, - 3323, 3326, 3311, 3324, 3325, 3327, 3328, 3322, 3315, 3324, + 3276, 3263, 3272, 3278, 3268, 3266, 3273, 3271, 3273, 3275, + 3275, 3279, 3277, 3276, 3274, 3270, 3280, 3281, 3283, 3282, + 3284, 3278, 3285, 3293, 3286, 3284, 3288, 3279, 3282, 3286, + 3283, 3289, 3281, 3287, 3287, 3294, 3289, 3293, 3295, 3295, + 3296, 3280, 3301, 3285, 3297, 3297, 3288, 3298, 3298, 3296, + 3299, 3299, 3300, 3300, 3302, 3294, 3303, 3304, 3305, 3303, + 3306, 3301, 3304, 3305, 3307, 3308, 3309, 3311, 3313, 3310, + 3318, 3308, 3311, 3323, 3302, 3312, 3312, 3314, 3314, 3307, + 3309, 3310, 3316, 3316, 3317, 3306, 3319, 3319, 3313, 3318, + 3321, 3323, 3326, 3326, 3327, 3327, 3328, 3329, 3332, 3317, - 3325, 3329, 3330, 3330, 3335, 3326, 3329, 3336, 3327, 3323, - 3332, 3332, 3338, 3339, 3341, 3328, 3342, 3339, 3343, 3344, - 3345, 3342, 3346, 3347, 3348, 3335, 3338, 3336, 3347, 3348, - 3349, 3349, 3344, 3345, 3341, 3352, 3353, 3343, 3354, 3355, - 3355, 3346, 3356, 3357, 3358, 3358, 3359, 3356, 3360, 3357, - 3362, 3359, 3363, 3360, 3353, 3352, 3361, 3354, 3363, 3365, - 3365, 3361, 3366, 3367, 3367, 3370, 3369, 3366, 3371, 3362, - 3369, 3372, 3373, 3374, 3375, 3371, 3376, 3378, 3378, 3374, - 3380, 3380, 3382, 3381, 3370, 3383, 3384, 3382, 3385, 3376, - 3372, 3373, 3381, 3375, 3387, 3381, 3386, 3386, 3388, 3387, + 3330, 3331, 3333, 3334, 3328, 3321, 3330, 3331, 3335, 3336, + 3336, 3341, 3332, 3335, 3342, 3333, 3329, 3338, 3338, 3344, + 3345, 3347, 3334, 3348, 3345, 3349, 3350, 3351, 3348, 3352, + 3353, 3354, 3341, 3344, 3342, 3353, 3354, 3355, 3355, 3350, + 3351, 3347, 3358, 3359, 3349, 3360, 3361, 3361, 3352, 3362, + 3363, 3364, 3364, 3365, 3362, 3366, 3363, 3368, 3365, 3369, + 3366, 3359, 3358, 3367, 3360, 3369, 3371, 3371, 3367, 3372, + 3373, 3373, 3376, 3375, 3372, 3377, 3368, 3375, 3378, 3379, + 3380, 3381, 3377, 3382, 3384, 3384, 3380, 3386, 3386, 3388, + 3387, 3376, 3389, 3390, 3388, 3391, 3382, 3378, 3379, 3387, - 3390, 3385, 3391, 3391, 3383, 3384, 3392, 3393, 3393, 3394, - 3394, 3388, 3395, 3396, 3397, 3398, 3398, 3395, 3399, 3400, - 3396, 3400, 3402, 3399, 3403, 3392, 3390, 3401, 3401, 3402, - 3404, 3403, 3405, 3397, 3406, 3408, 3408, 3405, 3409, 3411, - 3412, 3413, 3414, 3418, 3411, 3412, 3415, 3415, 3419, 3404, - 3417, 3417, 0, 3406, 3420, 3420, 3422, 3409, 3421, 3421, - 3413, 3414, 3418, 3422, 3424, 3424, 3426, 3419, 3425, 3425, - 3428, 3431, 3432, 3426, 3433, 3428, 3431, 3434, 3434, 3435, - 3435, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3432, 0, 3433, 3439, 3439, 3439, 3439, 3439, 3439, + 3381, 3393, 3387, 3392, 3392, 3394, 3393, 3396, 3391, 3397, + 3397, 3389, 3390, 3398, 3399, 3399, 3400, 3400, 3394, 3401, + 3402, 3403, 3404, 3404, 3401, 3405, 3406, 3402, 3406, 3408, + 3405, 3409, 3398, 3396, 3407, 3407, 3408, 3410, 3409, 3411, + 3403, 3412, 3414, 3414, 3411, 3415, 3417, 3418, 3419, 3420, + 3424, 3417, 3418, 3421, 3421, 3425, 3410, 3423, 3423, 0, + 3412, 3426, 3426, 3428, 3415, 3427, 3427, 3419, 3420, 3424, + 3428, 3430, 3430, 3432, 3425, 3431, 3431, 3434, 3437, 3438, + 3432, 3439, 3434, 3437, 3440, 3440, 3441, 3441, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3438, 0, - 3439, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3441, 3441, - 3441, 3441, 3441, 3441, 3441, 3442, 3442, 3442, 3442, 3442, - 3442, 3442, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3444, - 3444, 3444, 3444, 3444, 3444, 3444, 3445, 3445, 3445, 3445, - 3445, 3445, 3445, 3447, 3447, 0, 3447, 3447, 3447, 3447, - 3448, 3448, 0, 0, 0, 3448, 3448, 3449, 3449, 0, - 0, 3449, 0, 3449, 3450, 0, 0, 0, 0, 0, - 3450, 3451, 3451, 0, 0, 0, 3451, 3451, 3452, 0, - 0, 0, 0, 0, 3452, 3453, 3453, 0, 3453, 3453, - 3453, 3453, 3454, 0, 0, 0, 0, 0, 3454, 3455, + 3439, 3445, 3445, 3445, 3445, 3445, 3445, 3445, 3446, 3446, + 3446, 3446, 3446, 3446, 3446, 3447, 3447, 3447, 3447, 3447, + 3447, 3447, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3449, + 3449, 3449, 3449, 3449, 3449, 3449, 3450, 3450, 3450, 3450, + 3450, 3450, 3450, 3451, 3451, 3451, 3451, 3451, 3451, 3451, + 3453, 3453, 0, 3453, 3453, 3453, 3453, 3454, 3454, 0, + 0, 0, 3454, 3454, 3455, 3455, 0, 0, 3455, 0, + 3455, 3456, 0, 0, 0, 0, 0, 3456, 3457, 3457, + 0, 0, 0, 3457, 3457, 3458, 0, 0, 0, 0, + 0, 3458, 3459, 3459, 0, 3459, 3459, 3459, 3459, 3460, - 3455, 0, 0, 0, 3455, 3455, 3456, 3456, 0, 3456, - 3456, 3456, 3456, 3438, 3438, 3438, 3438, 3438, 3438, 3438, - 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, - 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, - 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, - 3438, 3438, 3438, 3438 + 0, 0, 0, 0, 0, 3460, 3461, 3461, 0, 0, + 0, 3461, 3461, 3462, 3462, 0, 3462, 3462, 3462, 3462, + 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, + 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, + 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, + 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, + 3444 } ; static yy_state_type yy_last_accepting_state; @@ -3250,7 +3255,7 @@ static void config_end_include(void) } #endif -#line 3251 "" +#line 3256 "" #define YY_NO_INPUT 1 #line 191 "./util/configlexer.lex" #ifndef YY_NO_UNPUT @@ -3259,9 +3264,9 @@ static void config_end_include(void) #ifndef YY_NO_INPUT #define YY_NO_INPUT 1 #endif -#line 3260 "" +#line 3265 "" -#line 3262 "" +#line 3267 "" #define INITIAL 0 #define quotedstring 1 @@ -3485,7 +3490,7 @@ YY_DECL { #line 211 "./util/configlexer.lex" -#line 3486 "" +#line 3491 "" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -3518,13 +3523,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 >= 3439 ) + if ( yy_current_state >= 3445 ) 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] != 6714 ); + while ( yy_base[yy_current_state] != 6721 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -4515,435 +4520,435 @@ YY_RULE_SETUP case 193: YY_RULE_SETUP #line 408 "./util/configlexer.lex" -{ YDVAR(1, VAR_ZONEMD_REJECT_ABSENCE) } +{ YDVAR(1, VAR_ZONEMD_CHECK) } YY_BREAK case 194: YY_RULE_SETUP #line 409 "./util/configlexer.lex" -{ YDVAR(1, VAR_ADD_HOLDDOWN) } +{ YDVAR(1, VAR_ZONEMD_REJECT_ABSENCE) } YY_BREAK case 195: YY_RULE_SETUP #line 410 "./util/configlexer.lex" -{ YDVAR(1, VAR_DEL_HOLDDOWN) } +{ YDVAR(1, VAR_ADD_HOLDDOWN) } YY_BREAK case 196: YY_RULE_SETUP #line 411 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEEP_MISSING) } +{ YDVAR(1, VAR_DEL_HOLDDOWN) } YY_BREAK case 197: YY_RULE_SETUP #line 412 "./util/configlexer.lex" -{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } +{ YDVAR(1, VAR_KEEP_MISSING) } YY_BREAK case 198: YY_RULE_SETUP #line 413 "./util/configlexer.lex" -{ YDVAR(1, VAR_USE_SYSLOG) } +{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } YY_BREAK case 199: YY_RULE_SETUP #line 414 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_IDENTITY) } +{ YDVAR(1, VAR_USE_SYSLOG) } YY_BREAK case 200: YY_RULE_SETUP #line 415 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TIME_ASCII) } +{ YDVAR(1, VAR_LOG_IDENTITY) } YY_BREAK case 201: YY_RULE_SETUP #line 416 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_QUERIES) } +{ YDVAR(1, VAR_LOG_TIME_ASCII) } YY_BREAK case 202: YY_RULE_SETUP #line 417 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_REPLIES) } +{ YDVAR(1, VAR_LOG_QUERIES) } YY_BREAK case 203: YY_RULE_SETUP #line 418 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) } +{ YDVAR(1, VAR_LOG_REPLIES) } YY_BREAK case 204: YY_RULE_SETUP #line 419 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) } +{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) } YY_BREAK case 205: YY_RULE_SETUP #line 420 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_SERVFAIL) } +{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) } YY_BREAK case 206: YY_RULE_SETUP #line 421 "./util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE) } +{ YDVAR(1, VAR_LOG_SERVFAIL) } YY_BREAK case 207: YY_RULE_SETUP #line 422 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA) } +{ YDVAR(2, VAR_LOCAL_ZONE) } YY_BREAK case 208: YY_RULE_SETUP #line 423 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA_PTR) } +{ YDVAR(1, VAR_LOCAL_DATA) } YY_BREAK case 209: YY_RULE_SETUP #line 424 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } +{ YDVAR(1, VAR_LOCAL_DATA_PTR) } YY_BREAK case 210: YY_RULE_SETUP #line 425 "./util/configlexer.lex" -{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } +{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } YY_BREAK case 211: YY_RULE_SETUP #line 426 "./util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_INTERVAL) } +{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } YY_BREAK case 212: YY_RULE_SETUP #line 427 "./util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } +{ YDVAR(1, VAR_STATISTICS_INTERVAL) } YY_BREAK case 213: YY_RULE_SETUP #line 428 "./util/configlexer.lex" -{ YDVAR(1, VAR_EXTENDED_STATISTICS) } +{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } YY_BREAK case 214: YY_RULE_SETUP #line 429 "./util/configlexer.lex" -{ YDVAR(1, VAR_SHM_ENABLE) } +{ YDVAR(1, VAR_EXTENDED_STATISTICS) } YY_BREAK case 215: YY_RULE_SETUP #line 430 "./util/configlexer.lex" -{ YDVAR(1, VAR_SHM_KEY) } +{ YDVAR(1, VAR_SHM_ENABLE) } YY_BREAK case 216: YY_RULE_SETUP #line 431 "./util/configlexer.lex" -{ YDVAR(0, VAR_REMOTE_CONTROL) } +{ YDVAR(1, VAR_SHM_KEY) } YY_BREAK case 217: YY_RULE_SETUP #line 432 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_ENABLE) } +{ YDVAR(0, VAR_REMOTE_CONTROL) } YY_BREAK case 218: YY_RULE_SETUP #line 433 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_INTERFACE) } +{ YDVAR(1, VAR_CONTROL_ENABLE) } YY_BREAK case 219: YY_RULE_SETUP #line 434 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_PORT) } +{ YDVAR(1, VAR_CONTROL_INTERFACE) } YY_BREAK case 220: YY_RULE_SETUP #line 435 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_USE_CERT) } +{ YDVAR(1, VAR_CONTROL_PORT) } YY_BREAK case 221: YY_RULE_SETUP #line 436 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_KEY_FILE) } +{ YDVAR(1, VAR_CONTROL_USE_CERT) } YY_BREAK case 222: YY_RULE_SETUP #line 437 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_CERT_FILE) } +{ YDVAR(1, VAR_SERVER_KEY_FILE) } YY_BREAK case 223: YY_RULE_SETUP #line 438 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_KEY_FILE) } +{ YDVAR(1, VAR_SERVER_CERT_FILE) } YY_BREAK case 224: YY_RULE_SETUP #line 439 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_CERT_FILE) } +{ YDVAR(1, VAR_CONTROL_KEY_FILE) } YY_BREAK case 225: YY_RULE_SETUP #line 440 "./util/configlexer.lex" -{ YDVAR(1, VAR_PYTHON_SCRIPT) } +{ YDVAR(1, VAR_CONTROL_CERT_FILE) } YY_BREAK case 226: YY_RULE_SETUP #line 441 "./util/configlexer.lex" -{ YDVAR(0, VAR_PYTHON) } +{ YDVAR(1, VAR_PYTHON_SCRIPT) } YY_BREAK case 227: YY_RULE_SETUP #line 442 "./util/configlexer.lex" -{ YDVAR(1, VAR_DYNLIB_FILE) } +{ YDVAR(0, VAR_PYTHON) } YY_BREAK case 228: YY_RULE_SETUP #line 443 "./util/configlexer.lex" -{ YDVAR(0, VAR_DYNLIB) } +{ YDVAR(1, VAR_DYNLIB_FILE) } YY_BREAK case 229: YY_RULE_SETUP #line 444 "./util/configlexer.lex" -{ YDVAR(1, VAR_DOMAIN_INSECURE) } +{ YDVAR(0, VAR_DYNLIB) } YY_BREAK case 230: YY_RULE_SETUP #line 445 "./util/configlexer.lex" -{ YDVAR(1, VAR_MINIMAL_RESPONSES) } +{ YDVAR(1, VAR_DOMAIN_INSECURE) } YY_BREAK case 231: YY_RULE_SETUP #line 446 "./util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } +{ YDVAR(1, VAR_MINIMAL_RESPONSES) } YY_BREAK case 232: YY_RULE_SETUP #line 447 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } +{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } YY_BREAK case 233: YY_RULE_SETUP #line 448 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_UDP_SIZE) } +{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } YY_BREAK case 234: YY_RULE_SETUP #line 449 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_PREFIX) } +{ YDVAR(1, VAR_MAX_UDP_SIZE) } YY_BREAK case 235: YY_RULE_SETUP #line 450 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_SYNTHALL) } +{ YDVAR(1, VAR_DNS64_PREFIX) } YY_BREAK case 236: YY_RULE_SETUP #line 451 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } +{ YDVAR(1, VAR_DNS64_SYNTHALL) } YY_BREAK case 237: YY_RULE_SETUP #line 452 "./util/configlexer.lex" -{ YDVAR(1, VAR_DEFINE_TAG) } +{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } YY_BREAK case 238: YY_RULE_SETUP #line 453 "./util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } +{ YDVAR(1, VAR_DEFINE_TAG) } YY_BREAK case 239: YY_RULE_SETUP #line 454 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } +{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } YY_BREAK case 240: YY_RULE_SETUP #line 455 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } +{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } YY_BREAK case 241: YY_RULE_SETUP #line 456 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } YY_BREAK case 242: YY_RULE_SETUP #line 457 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } YY_BREAK case 243: YY_RULE_SETUP #line 458 "./util/configlexer.lex" -{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } +{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } YY_BREAK case 244: YY_RULE_SETUP #line 459 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSTAP) } +{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } YY_BREAK case 245: YY_RULE_SETUP #line 460 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_ENABLE) } +{ YDVAR(0, VAR_DNSTAP) } YY_BREAK case 246: YY_RULE_SETUP #line 461 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_BIDIRECTIONAL) } +{ YDVAR(1, VAR_DNSTAP_ENABLE) } YY_BREAK case 247: YY_RULE_SETUP #line 462 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } +{ YDVAR(1, VAR_DNSTAP_BIDIRECTIONAL) } YY_BREAK case 248: YY_RULE_SETUP #line 463 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IP) } +{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } YY_BREAK case 249: YY_RULE_SETUP #line 464 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS) } +{ YDVAR(1, VAR_DNSTAP_IP) } YY_BREAK case 250: YY_RULE_SETUP #line 465 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } +{ YDVAR(1, VAR_DNSTAP_TLS) } YY_BREAK case 251: YY_RULE_SETUP #line 466 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } +{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } YY_BREAK case 252: YY_RULE_SETUP #line 467 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } +{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } YY_BREAK case 253: YY_RULE_SETUP -#line 469 "./util/configlexer.lex" +#line 468 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } YY_BREAK case 254: YY_RULE_SETUP -#line 471 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } +#line 470 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } YY_BREAK case 255: YY_RULE_SETUP #line 472 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } +{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } YY_BREAK case 256: YY_RULE_SETUP #line 473 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IDENTITY) } +{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } YY_BREAK case 257: YY_RULE_SETUP #line 474 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_VERSION) } +{ YDVAR(1, VAR_DNSTAP_IDENTITY) } YY_BREAK case 258: YY_RULE_SETUP #line 475 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } +{ YDVAR(1, VAR_DNSTAP_VERSION) } YY_BREAK case 259: YY_RULE_SETUP -#line 477 "./util/configlexer.lex" +#line 476 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } YY_BREAK case 260: YY_RULE_SETUP -#line 479 "./util/configlexer.lex" +#line 478 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } YY_BREAK case 261: YY_RULE_SETUP -#line 481 "./util/configlexer.lex" +#line 480 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } YY_BREAK case 262: YY_RULE_SETUP -#line 483 "./util/configlexer.lex" +#line 482 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } YY_BREAK case 263: YY_RULE_SETUP -#line 485 "./util/configlexer.lex" +#line 484 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } YY_BREAK case 264: YY_RULE_SETUP -#line 487 "./util/configlexer.lex" -{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } +#line 486 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } YY_BREAK case 265: YY_RULE_SETUP #line 488 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT) } +{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } YY_BREAK case 266: YY_RULE_SETUP #line 489 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT) } +{ YDVAR(1, VAR_IP_RATELIMIT) } YY_BREAK case 267: YY_RULE_SETUP #line 490 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_RATELIMIT) } YY_BREAK case 268: YY_RULE_SETUP #line 491 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } YY_BREAK case 269: YY_RULE_SETUP #line 492 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_RATELIMIT_SLABS) } YY_BREAK case 270: YY_RULE_SETUP #line 493 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } YY_BREAK case 271: YY_RULE_SETUP #line 494 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } +{ YDVAR(1, VAR_RATELIMIT_SIZE) } YY_BREAK case 272: YY_RULE_SETUP #line 495 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } +{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } YY_BREAK case 273: YY_RULE_SETUP #line 496 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } +{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } YY_BREAK case 274: YY_RULE_SETUP #line 497 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_FACTOR) } +{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } YY_BREAK case 275: YY_RULE_SETUP #line 498 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOW_RTT) } +{ YDVAR(1, VAR_RATELIMIT_FACTOR) } YY_BREAK case 276: YY_RULE_SETUP #line 499 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_NUM) } +{ YDVAR(1, VAR_LOW_RTT) } YY_BREAK case 277: YY_RULE_SETUP #line 500 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } +{ YDVAR(1, VAR_FAST_SERVER_NUM) } YY_BREAK case 278: YY_RULE_SETUP @@ -4958,119 +4963,119 @@ YY_RULE_SETUP case 280: YY_RULE_SETUP #line 503 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_TAG) } +{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 281: YY_RULE_SETUP #line 504 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP) } +{ YDVAR(2, VAR_RESPONSE_IP_TAG) } YY_BREAK case 282: YY_RULE_SETUP #line 505 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_DATA) } +{ YDVAR(2, VAR_RESPONSE_IP) } YY_BREAK case 283: YY_RULE_SETUP #line 506 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSCRYPT) } +{ YDVAR(2, VAR_RESPONSE_IP_DATA) } YY_BREAK case 284: YY_RULE_SETUP #line 507 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } +{ YDVAR(0, VAR_DNSCRYPT) } YY_BREAK case 285: YY_RULE_SETUP #line 508 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PORT) } +{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } YY_BREAK case 286: YY_RULE_SETUP #line 509 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } +{ YDVAR(1, VAR_DNSCRYPT_PORT) } YY_BREAK case 287: YY_RULE_SETUP #line 510 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } YY_BREAK case 288: YY_RULE_SETUP #line 511 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } +{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } YY_BREAK case 289: YY_RULE_SETUP #line 512 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } YY_BREAK case 290: YY_RULE_SETUP #line 513 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } YY_BREAK case 291: YY_RULE_SETUP -#line 515 "./util/configlexer.lex" +#line 514 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } YY_BREAK case 292: YY_RULE_SETUP -#line 517 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } +#line 516 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } YY_BREAK case 293: YY_RULE_SETUP #line 518 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } YY_BREAK case 294: YY_RULE_SETUP #line 519 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_RESPONSES) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } YY_BREAK case 295: YY_RULE_SETUP #line 520 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) } +{ YDVAR(1, VAR_PAD_RESPONSES) } YY_BREAK case 296: YY_RULE_SETUP #line 521 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_QUERIES) } +{ YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) } YY_BREAK case 297: YY_RULE_SETUP #line 522 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) } +{ YDVAR(1, VAR_PAD_QUERIES) } YY_BREAK case 298: YY_RULE_SETUP #line 523 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_ENABLED) } +{ YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) } YY_BREAK case 299: YY_RULE_SETUP #line 524 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } +{ YDVAR(1, VAR_IPSECMOD_ENABLED) } YY_BREAK case 300: YY_RULE_SETUP #line 525 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_HOOK) } +{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } YY_BREAK case 301: YY_RULE_SETUP #line 526 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } +{ YDVAR(1, VAR_IPSECMOD_HOOK) } YY_BREAK case 302: YY_RULE_SETUP #line 527 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } +{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } YY_BREAK case 303: YY_RULE_SETUP @@ -5080,118 +5085,123 @@ YY_RULE_SETUP case 304: YY_RULE_SETUP #line 529 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_STRICT) } +{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } YY_BREAK case 305: YY_RULE_SETUP #line 530 "./util/configlexer.lex" -{ YDVAR(0, VAR_CACHEDB) } +{ YDVAR(1, VAR_IPSECMOD_STRICT) } YY_BREAK case 306: YY_RULE_SETUP #line 531 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_BACKEND) } +{ YDVAR(0, VAR_CACHEDB) } YY_BREAK case 307: YY_RULE_SETUP #line 532 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } +{ YDVAR(1, VAR_CACHEDB_BACKEND) } YY_BREAK case 308: YY_RULE_SETUP #line 533 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISHOST) } +{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } YY_BREAK case 309: YY_RULE_SETUP #line 534 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISPORT) } +{ YDVAR(1, VAR_CACHEDB_REDISHOST) } YY_BREAK case 310: YY_RULE_SETUP #line 535 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } +{ YDVAR(1, VAR_CACHEDB_REDISPORT) } YY_BREAK case 311: YY_RULE_SETUP #line 536 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } +{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } YY_BREAK case 312: YY_RULE_SETUP #line 537 "./util/configlexer.lex" -{ YDVAR(0, VAR_IPSET) } +{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } YY_BREAK case 313: YY_RULE_SETUP #line 538 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V4) } +{ YDVAR(0, VAR_IPSET) } YY_BREAK case 314: YY_RULE_SETUP #line 539 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V6) } +{ YDVAR(1, VAR_IPSET_NAME_V4) } YY_BREAK case 315: YY_RULE_SETUP #line 540 "./util/configlexer.lex" -{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } +{ YDVAR(1, VAR_IPSET_NAME_V6) } YY_BREAK case 316: YY_RULE_SETUP #line 541 "./util/configlexer.lex" -{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } +{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } YY_BREAK case 317: YY_RULE_SETUP #line 542 "./util/configlexer.lex" -{ YDVAR(2, VAR_EDNS_CLIENT_STRING) } +{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } YY_BREAK case 318: YY_RULE_SETUP #line 543 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) } +{ YDVAR(2, VAR_EDNS_CLIENT_STRING) } YY_BREAK case 319: YY_RULE_SETUP #line 544 "./util/configlexer.lex" -{ YDVAR(1, VAR_NSID ) } +{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) } YY_BREAK case 320: -/* rule 320 can match eol */ YY_RULE_SETUP #line 545 "./util/configlexer.lex" +{ YDVAR(1, VAR_NSID ) } + YY_BREAK +case 321: +/* rule 321 can match eol */ +YY_RULE_SETUP +#line 546 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK /* Quoted strings. Strip leading and ending quotes */ -case 321: +case 322: YY_RULE_SETUP -#line 548 "./util/configlexer.lex" +#line 549 "./util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 549 "./util/configlexer.lex" +#line 550 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 322: -YY_RULE_SETUP -#line 554 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 323: -/* rule 323 can match eol */ YY_RULE_SETUP #line 555 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 324: +/* rule 324 can match eol */ +YY_RULE_SETUP +#line 556 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 324: +case 325: YY_RULE_SETUP -#line 557 "./util/configlexer.lex" +#line 558 "./util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -5204,34 +5214,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 325: +case 326: YY_RULE_SETUP -#line 569 "./util/configlexer.lex" +#line 570 "./util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 570 "./util/configlexer.lex" +#line 571 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 326: -YY_RULE_SETUP -#line 575 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 327: -/* rule 327 can match eol */ YY_RULE_SETUP #line 576 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 328: +/* rule 328 can match eol */ +YY_RULE_SETUP +#line 577 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 328: +case 329: YY_RULE_SETUP -#line 578 "./util/configlexer.lex" +#line 579 "./util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -5244,38 +5254,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 329: +case 330: YY_RULE_SETUP -#line 590 "./util/configlexer.lex" +#line 591 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 592 "./util/configlexer.lex" +#line 593 "./util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); } YY_BREAK -case 330: -YY_RULE_SETUP -#line 596 "./util/configlexer.lex" -{ LEXOUT(("ISP ")); /* ignore */ } - YY_BREAK case 331: -/* rule 331 can match eol */ YY_RULE_SETUP #line 597 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++;} +{ LEXOUT(("ISP ")); /* ignore */ } YY_BREAK case 332: +/* rule 332 can match eol */ YY_RULE_SETUP #line 598 "./util/configlexer.lex" -{ LEXOUT(("IQS ")); BEGIN(include_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK case 333: YY_RULE_SETUP #line 599 "./util/configlexer.lex" +{ LEXOUT(("IQS ")); BEGIN(include_quoted); } + YY_BREAK +case 334: +YY_RULE_SETUP +#line 600 "./util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 0); @@ -5283,27 +5293,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 604 "./util/configlexer.lex" +#line 605 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 334: -YY_RULE_SETUP -#line 608 "./util/configlexer.lex" -{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } - YY_BREAK case 335: -/* rule 335 can match eol */ YY_RULE_SETUP #line 609 "./util/configlexer.lex" +{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } + YY_BREAK +case 336: +/* rule 336 can match eol */ +YY_RULE_SETUP +#line 610 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 336: +case 337: YY_RULE_SETUP -#line 611 "./util/configlexer.lex" +#line 612 "./util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -5313,7 +5323,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 617 "./util/configlexer.lex" +#line 618 "./util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ @@ -5328,39 +5338,39 @@ case YY_STATE_EOF(val): } YY_BREAK /* include-toplevel: directive */ -case 337: +case 338: YY_RULE_SETUP -#line 631 "./util/configlexer.lex" +#line 632 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include_toplevel); } YY_BREAK case YY_STATE_EOF(include_toplevel): -#line 634 "./util/configlexer.lex" +#line 635 "./util/configlexer.lex" { yyerror("EOF inside include_toplevel directive"); BEGIN(inc_prev); } YY_BREAK -case 338: -YY_RULE_SETUP -#line 638 "./util/configlexer.lex" -{ LEXOUT(("ITSP ")); /* ignore */ } - YY_BREAK case 339: -/* rule 339 can match eol */ YY_RULE_SETUP #line 639 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++; } +{ LEXOUT(("ITSP ")); /* ignore */ } YY_BREAK case 340: +/* rule 340 can match eol */ YY_RULE_SETUP #line 640 "./util/configlexer.lex" -{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK case 341: YY_RULE_SETUP #line 641 "./util/configlexer.lex" +{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } + YY_BREAK +case 342: +YY_RULE_SETUP +#line 642 "./util/configlexer.lex" { LEXOUT(("ITunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 1); @@ -5369,29 +5379,29 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_toplevel_quoted): -#line 647 "./util/configlexer.lex" +#line 648 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 342: -YY_RULE_SETUP -#line 651 "./util/configlexer.lex" -{ LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } - YY_BREAK case 343: -/* rule 343 can match eol */ YY_RULE_SETUP #line 652 "./util/configlexer.lex" +{ LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } + YY_BREAK +case 344: +/* rule 344 can match eol */ +YY_RULE_SETUP +#line 653 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 344: +case 345: YY_RULE_SETUP -#line 656 "./util/configlexer.lex" +#line 657 "./util/configlexer.lex" { LEXOUT(("ITQE ")); yytext[yyleng - 1] = '\0'; @@ -5400,33 +5410,33 @@ YY_RULE_SETUP return (VAR_FORCE_TOPLEVEL); } YY_BREAK -case 345: +case 346: YY_RULE_SETUP -#line 664 "./util/configlexer.lex" +#line 665 "./util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 346: +case 347: YY_RULE_SETUP -#line 668 "./util/configlexer.lex" +#line 669 "./util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 347: +case 348: YY_RULE_SETUP -#line 672 "./util/configlexer.lex" +#line 673 "./util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 348: +case 349: YY_RULE_SETUP -#line 676 "./util/configlexer.lex" +#line 677 "./util/configlexer.lex" ECHO; YY_BREAK -#line 5427 "" +#line 5437 "" case YY_END_OF_BUFFER: { @@ -5721,7 +5731,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 >= 3439 ) + if ( yy_current_state >= 3445 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -5749,11 +5759,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 >= 3439 ) + if ( yy_current_state >= 3445 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 3438); + yy_is_jam = (yy_current_state == 3444); return yy_is_jam ? 0 : yy_current_state; } @@ -6392,6 +6402,6 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 676 "./util/configlexer.lex" +#line 677 "./util/configlexer.lex" diff --git a/util/configlexer.lex b/util/configlexer.lex index e982463d1..e566e1c53 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -405,6 +405,7 @@ neg-cache-size{COLON} { YDVAR(1, VAR_NEG_CACHE_SIZE) } val-nsec3-keysize-iterations{COLON} { YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } zonemd-permissive-mode{COLON} { YDVAR(1, VAR_ZONEMD_PERMISSIVE_MODE) } +zonemd-check{COLON} { YDVAR(1, VAR_ZONEMD_CHECK) } zonemd-reject-absence{COLON} { YDVAR(1, VAR_ZONEMD_REJECT_ABSENCE) } add-holddown{COLON} { YDVAR(1, VAR_ADD_HOLDDOWN) } del-holddown{COLON} { YDVAR(1, VAR_DEL_HOLDDOWN) } diff --git a/util/configparser.c b/util/configparser.c index 2b3fcb558..3f519e9c7 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -450,7 +450,8 @@ extern int yydebug; VAR_EDNS_CLIENT_STRING_OPCODE = 565, /* VAR_EDNS_CLIENT_STRING_OPCODE */ VAR_NSID = 566, /* VAR_NSID */ VAR_ZONEMD_PERMISSIVE_MODE = 567, /* VAR_ZONEMD_PERMISSIVE_MODE */ - VAR_ZONEMD_REJECT_ABSENCE = 568 /* VAR_ZONEMD_REJECT_ABSENCE */ + VAR_ZONEMD_CHECK = 568, /* VAR_ZONEMD_CHECK */ + VAR_ZONEMD_REJECT_ABSENCE = 569 /* VAR_ZONEMD_REJECT_ABSENCE */ }; typedef enum yytokentype yytoken_kind_t; #endif @@ -768,7 +769,8 @@ extern int yydebug; #define VAR_EDNS_CLIENT_STRING_OPCODE 565 #define VAR_NSID 566 #define VAR_ZONEMD_PERMISSIVE_MODE 567 -#define VAR_ZONEMD_REJECT_ABSENCE 568 +#define VAR_ZONEMD_CHECK 568 +#define VAR_ZONEMD_REJECT_ABSENCE 569 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -778,7 +780,7 @@ union YYSTYPE char* str; -#line 782 "util/configparser.c" +#line 784 "util/configparser.c" }; typedef union YYSTYPE YYSTYPE; @@ -1109,346 +1111,348 @@ enum yysymbol_kind_t YYSYMBOL_VAR_EDNS_CLIENT_STRING_OPCODE = 310, /* VAR_EDNS_CLIENT_STRING_OPCODE */ YYSYMBOL_VAR_NSID = 311, /* VAR_NSID */ YYSYMBOL_VAR_ZONEMD_PERMISSIVE_MODE = 312, /* VAR_ZONEMD_PERMISSIVE_MODE */ - YYSYMBOL_VAR_ZONEMD_REJECT_ABSENCE = 313, /* VAR_ZONEMD_REJECT_ABSENCE */ - YYSYMBOL_YYACCEPT = 314, /* $accept */ - YYSYMBOL_toplevelvars = 315, /* toplevelvars */ - YYSYMBOL_toplevelvar = 316, /* toplevelvar */ - YYSYMBOL_force_toplevel = 317, /* force_toplevel */ - YYSYMBOL_serverstart = 318, /* serverstart */ - YYSYMBOL_contents_server = 319, /* contents_server */ - YYSYMBOL_content_server = 320, /* content_server */ - YYSYMBOL_stubstart = 321, /* stubstart */ - YYSYMBOL_contents_stub = 322, /* contents_stub */ - YYSYMBOL_content_stub = 323, /* content_stub */ - YYSYMBOL_forwardstart = 324, /* forwardstart */ - YYSYMBOL_contents_forward = 325, /* contents_forward */ - YYSYMBOL_content_forward = 326, /* content_forward */ - YYSYMBOL_viewstart = 327, /* viewstart */ - YYSYMBOL_contents_view = 328, /* contents_view */ - YYSYMBOL_content_view = 329, /* content_view */ - YYSYMBOL_authstart = 330, /* authstart */ - YYSYMBOL_contents_auth = 331, /* contents_auth */ - YYSYMBOL_content_auth = 332, /* content_auth */ - YYSYMBOL_rpz_tag = 333, /* rpz_tag */ - YYSYMBOL_rpz_action_override = 334, /* rpz_action_override */ - YYSYMBOL_rpz_cname_override = 335, /* rpz_cname_override */ - YYSYMBOL_rpz_log = 336, /* rpz_log */ - YYSYMBOL_rpz_log_name = 337, /* rpz_log_name */ - YYSYMBOL_rpzstart = 338, /* rpzstart */ - YYSYMBOL_contents_rpz = 339, /* contents_rpz */ - YYSYMBOL_content_rpz = 340, /* content_rpz */ - YYSYMBOL_server_num_threads = 341, /* server_num_threads */ - YYSYMBOL_server_verbosity = 342, /* server_verbosity */ - YYSYMBOL_server_statistics_interval = 343, /* server_statistics_interval */ - YYSYMBOL_server_statistics_cumulative = 344, /* server_statistics_cumulative */ - YYSYMBOL_server_extended_statistics = 345, /* server_extended_statistics */ - YYSYMBOL_server_shm_enable = 346, /* server_shm_enable */ - YYSYMBOL_server_shm_key = 347, /* server_shm_key */ - YYSYMBOL_server_port = 348, /* server_port */ - YYSYMBOL_server_send_client_subnet = 349, /* server_send_client_subnet */ - YYSYMBOL_server_client_subnet_zone = 350, /* server_client_subnet_zone */ - YYSYMBOL_server_client_subnet_always_forward = 351, /* server_client_subnet_always_forward */ - YYSYMBOL_server_client_subnet_opcode = 352, /* server_client_subnet_opcode */ - YYSYMBOL_server_max_client_subnet_ipv4 = 353, /* server_max_client_subnet_ipv4 */ - YYSYMBOL_server_max_client_subnet_ipv6 = 354, /* server_max_client_subnet_ipv6 */ - YYSYMBOL_server_min_client_subnet_ipv4 = 355, /* server_min_client_subnet_ipv4 */ - YYSYMBOL_server_min_client_subnet_ipv6 = 356, /* server_min_client_subnet_ipv6 */ - YYSYMBOL_server_max_ecs_tree_size_ipv4 = 357, /* server_max_ecs_tree_size_ipv4 */ - YYSYMBOL_server_max_ecs_tree_size_ipv6 = 358, /* server_max_ecs_tree_size_ipv6 */ - YYSYMBOL_server_interface = 359, /* server_interface */ - YYSYMBOL_server_outgoing_interface = 360, /* server_outgoing_interface */ - YYSYMBOL_server_outgoing_range = 361, /* server_outgoing_range */ - YYSYMBOL_server_outgoing_port_permit = 362, /* server_outgoing_port_permit */ - YYSYMBOL_server_outgoing_port_avoid = 363, /* server_outgoing_port_avoid */ - YYSYMBOL_server_outgoing_num_tcp = 364, /* server_outgoing_num_tcp */ - YYSYMBOL_server_incoming_num_tcp = 365, /* server_incoming_num_tcp */ - YYSYMBOL_server_interface_automatic = 366, /* server_interface_automatic */ - YYSYMBOL_server_do_ip4 = 367, /* server_do_ip4 */ - YYSYMBOL_server_do_ip6 = 368, /* server_do_ip6 */ - YYSYMBOL_server_do_udp = 369, /* server_do_udp */ - YYSYMBOL_server_do_tcp = 370, /* server_do_tcp */ - YYSYMBOL_server_prefer_ip4 = 371, /* server_prefer_ip4 */ - YYSYMBOL_server_prefer_ip6 = 372, /* server_prefer_ip6 */ - YYSYMBOL_server_tcp_mss = 373, /* server_tcp_mss */ - YYSYMBOL_server_outgoing_tcp_mss = 374, /* server_outgoing_tcp_mss */ - YYSYMBOL_server_tcp_idle_timeout = 375, /* server_tcp_idle_timeout */ - YYSYMBOL_server_max_reuse_tcp_queries = 376, /* server_max_reuse_tcp_queries */ - YYSYMBOL_server_tcp_reuse_timeout = 377, /* server_tcp_reuse_timeout */ - YYSYMBOL_server_tcp_auth_query_timeout = 378, /* server_tcp_auth_query_timeout */ - YYSYMBOL_server_tcp_keepalive = 379, /* server_tcp_keepalive */ - YYSYMBOL_server_tcp_keepalive_timeout = 380, /* server_tcp_keepalive_timeout */ - YYSYMBOL_server_tcp_upstream = 381, /* server_tcp_upstream */ - YYSYMBOL_server_udp_upstream_without_downstream = 382, /* server_udp_upstream_without_downstream */ - YYSYMBOL_server_ssl_upstream = 383, /* server_ssl_upstream */ - YYSYMBOL_server_ssl_service_key = 384, /* server_ssl_service_key */ - YYSYMBOL_server_ssl_service_pem = 385, /* server_ssl_service_pem */ - YYSYMBOL_server_ssl_port = 386, /* server_ssl_port */ - YYSYMBOL_server_tls_cert_bundle = 387, /* server_tls_cert_bundle */ - YYSYMBOL_server_tls_win_cert = 388, /* server_tls_win_cert */ - YYSYMBOL_server_tls_additional_port = 389, /* server_tls_additional_port */ - YYSYMBOL_server_tls_ciphers = 390, /* server_tls_ciphers */ - YYSYMBOL_server_tls_ciphersuites = 391, /* server_tls_ciphersuites */ - YYSYMBOL_server_tls_session_ticket_keys = 392, /* server_tls_session_ticket_keys */ - YYSYMBOL_server_tls_use_sni = 393, /* server_tls_use_sni */ - YYSYMBOL_server_https_port = 394, /* server_https_port */ - YYSYMBOL_server_http_endpoint = 395, /* server_http_endpoint */ - YYSYMBOL_server_http_max_streams = 396, /* server_http_max_streams */ - YYSYMBOL_server_http_query_buffer_size = 397, /* server_http_query_buffer_size */ - YYSYMBOL_server_http_response_buffer_size = 398, /* server_http_response_buffer_size */ - YYSYMBOL_server_http_nodelay = 399, /* server_http_nodelay */ - YYSYMBOL_server_http_notls_downstream = 400, /* server_http_notls_downstream */ - YYSYMBOL_server_use_systemd = 401, /* server_use_systemd */ - YYSYMBOL_server_do_daemonize = 402, /* server_do_daemonize */ - YYSYMBOL_server_use_syslog = 403, /* server_use_syslog */ - YYSYMBOL_server_log_time_ascii = 404, /* server_log_time_ascii */ - YYSYMBOL_server_log_queries = 405, /* server_log_queries */ - YYSYMBOL_server_log_replies = 406, /* server_log_replies */ - YYSYMBOL_server_log_tag_queryreply = 407, /* server_log_tag_queryreply */ - YYSYMBOL_server_log_servfail = 408, /* server_log_servfail */ - YYSYMBOL_server_log_local_actions = 409, /* server_log_local_actions */ - YYSYMBOL_server_chroot = 410, /* server_chroot */ - YYSYMBOL_server_username = 411, /* server_username */ - YYSYMBOL_server_directory = 412, /* server_directory */ - YYSYMBOL_server_logfile = 413, /* server_logfile */ - YYSYMBOL_server_pidfile = 414, /* server_pidfile */ - YYSYMBOL_server_root_hints = 415, /* server_root_hints */ - YYSYMBOL_server_dlv_anchor_file = 416, /* server_dlv_anchor_file */ - YYSYMBOL_server_dlv_anchor = 417, /* server_dlv_anchor */ - YYSYMBOL_server_auto_trust_anchor_file = 418, /* server_auto_trust_anchor_file */ - YYSYMBOL_server_trust_anchor_file = 419, /* server_trust_anchor_file */ - YYSYMBOL_server_trusted_keys_file = 420, /* server_trusted_keys_file */ - YYSYMBOL_server_trust_anchor = 421, /* server_trust_anchor */ - YYSYMBOL_server_trust_anchor_signaling = 422, /* server_trust_anchor_signaling */ - YYSYMBOL_server_root_key_sentinel = 423, /* server_root_key_sentinel */ - YYSYMBOL_server_domain_insecure = 424, /* server_domain_insecure */ - YYSYMBOL_server_hide_identity = 425, /* server_hide_identity */ - YYSYMBOL_server_hide_version = 426, /* server_hide_version */ - YYSYMBOL_server_hide_trustanchor = 427, /* server_hide_trustanchor */ - YYSYMBOL_server_identity = 428, /* server_identity */ - YYSYMBOL_server_version = 429, /* server_version */ - YYSYMBOL_server_nsid = 430, /* server_nsid */ - YYSYMBOL_server_so_rcvbuf = 431, /* server_so_rcvbuf */ - YYSYMBOL_server_so_sndbuf = 432, /* server_so_sndbuf */ - YYSYMBOL_server_so_reuseport = 433, /* server_so_reuseport */ - YYSYMBOL_server_ip_transparent = 434, /* server_ip_transparent */ - YYSYMBOL_server_ip_freebind = 435, /* server_ip_freebind */ - YYSYMBOL_server_ip_dscp = 436, /* server_ip_dscp */ - YYSYMBOL_server_stream_wait_size = 437, /* server_stream_wait_size */ - YYSYMBOL_server_edns_buffer_size = 438, /* server_edns_buffer_size */ - YYSYMBOL_server_msg_buffer_size = 439, /* server_msg_buffer_size */ - YYSYMBOL_server_msg_cache_size = 440, /* server_msg_cache_size */ - YYSYMBOL_server_msg_cache_slabs = 441, /* server_msg_cache_slabs */ - YYSYMBOL_server_num_queries_per_thread = 442, /* server_num_queries_per_thread */ - YYSYMBOL_server_jostle_timeout = 443, /* server_jostle_timeout */ - YYSYMBOL_server_delay_close = 444, /* server_delay_close */ - YYSYMBOL_server_udp_connect = 445, /* server_udp_connect */ - YYSYMBOL_server_unblock_lan_zones = 446, /* server_unblock_lan_zones */ - YYSYMBOL_server_insecure_lan_zones = 447, /* server_insecure_lan_zones */ - YYSYMBOL_server_rrset_cache_size = 448, /* server_rrset_cache_size */ - YYSYMBOL_server_rrset_cache_slabs = 449, /* server_rrset_cache_slabs */ - YYSYMBOL_server_infra_host_ttl = 450, /* server_infra_host_ttl */ - YYSYMBOL_server_infra_lame_ttl = 451, /* server_infra_lame_ttl */ - YYSYMBOL_server_infra_cache_numhosts = 452, /* server_infra_cache_numhosts */ - YYSYMBOL_server_infra_cache_lame_size = 453, /* server_infra_cache_lame_size */ - YYSYMBOL_server_infra_cache_slabs = 454, /* server_infra_cache_slabs */ - YYSYMBOL_server_infra_cache_min_rtt = 455, /* server_infra_cache_min_rtt */ - YYSYMBOL_server_infra_keep_probing = 456, /* server_infra_keep_probing */ - YYSYMBOL_server_target_fetch_policy = 457, /* server_target_fetch_policy */ - YYSYMBOL_server_harden_short_bufsize = 458, /* server_harden_short_bufsize */ - YYSYMBOL_server_harden_large_queries = 459, /* server_harden_large_queries */ - YYSYMBOL_server_harden_glue = 460, /* server_harden_glue */ - YYSYMBOL_server_harden_dnssec_stripped = 461, /* server_harden_dnssec_stripped */ - YYSYMBOL_server_harden_below_nxdomain = 462, /* server_harden_below_nxdomain */ - YYSYMBOL_server_harden_referral_path = 463, /* server_harden_referral_path */ - YYSYMBOL_server_harden_algo_downgrade = 464, /* server_harden_algo_downgrade */ - YYSYMBOL_server_use_caps_for_id = 465, /* server_use_caps_for_id */ - YYSYMBOL_server_caps_whitelist = 466, /* server_caps_whitelist */ - YYSYMBOL_server_private_address = 467, /* server_private_address */ - YYSYMBOL_server_private_domain = 468, /* server_private_domain */ - YYSYMBOL_server_prefetch = 469, /* server_prefetch */ - YYSYMBOL_server_prefetch_key = 470, /* server_prefetch_key */ - YYSYMBOL_server_deny_any = 471, /* server_deny_any */ - YYSYMBOL_server_unwanted_reply_threshold = 472, /* server_unwanted_reply_threshold */ - YYSYMBOL_server_do_not_query_address = 473, /* server_do_not_query_address */ - YYSYMBOL_server_do_not_query_localhost = 474, /* server_do_not_query_localhost */ - YYSYMBOL_server_access_control = 475, /* server_access_control */ - YYSYMBOL_server_module_conf = 476, /* server_module_conf */ - YYSYMBOL_server_val_override_date = 477, /* server_val_override_date */ - YYSYMBOL_server_val_sig_skew_min = 478, /* server_val_sig_skew_min */ - YYSYMBOL_server_val_sig_skew_max = 479, /* server_val_sig_skew_max */ - YYSYMBOL_server_cache_max_ttl = 480, /* server_cache_max_ttl */ - YYSYMBOL_server_cache_max_negative_ttl = 481, /* server_cache_max_negative_ttl */ - YYSYMBOL_server_cache_min_ttl = 482, /* server_cache_min_ttl */ - YYSYMBOL_server_bogus_ttl = 483, /* server_bogus_ttl */ - YYSYMBOL_server_val_clean_additional = 484, /* server_val_clean_additional */ - YYSYMBOL_server_val_permissive_mode = 485, /* server_val_permissive_mode */ - YYSYMBOL_server_aggressive_nsec = 486, /* server_aggressive_nsec */ - YYSYMBOL_server_ignore_cd_flag = 487, /* server_ignore_cd_flag */ - YYSYMBOL_server_serve_expired = 488, /* server_serve_expired */ - YYSYMBOL_server_serve_expired_ttl = 489, /* server_serve_expired_ttl */ - YYSYMBOL_server_serve_expired_ttl_reset = 490, /* server_serve_expired_ttl_reset */ - YYSYMBOL_server_serve_expired_reply_ttl = 491, /* server_serve_expired_reply_ttl */ - YYSYMBOL_server_serve_expired_client_timeout = 492, /* server_serve_expired_client_timeout */ - YYSYMBOL_server_serve_original_ttl = 493, /* server_serve_original_ttl */ - YYSYMBOL_server_fake_dsa = 494, /* server_fake_dsa */ - YYSYMBOL_server_fake_sha1 = 495, /* server_fake_sha1 */ - YYSYMBOL_server_val_log_level = 496, /* server_val_log_level */ - YYSYMBOL_server_val_nsec3_keysize_iterations = 497, /* server_val_nsec3_keysize_iterations */ - YYSYMBOL_server_zonemd_permissive_mode = 498, /* server_zonemd_permissive_mode */ - YYSYMBOL_server_add_holddown = 499, /* server_add_holddown */ - YYSYMBOL_server_del_holddown = 500, /* server_del_holddown */ - YYSYMBOL_server_keep_missing = 501, /* server_keep_missing */ - YYSYMBOL_server_permit_small_holddown = 502, /* server_permit_small_holddown */ - YYSYMBOL_server_key_cache_size = 503, /* server_key_cache_size */ - YYSYMBOL_server_key_cache_slabs = 504, /* server_key_cache_slabs */ - YYSYMBOL_server_neg_cache_size = 505, /* server_neg_cache_size */ - YYSYMBOL_server_local_zone = 506, /* server_local_zone */ - YYSYMBOL_server_local_data = 507, /* server_local_data */ - YYSYMBOL_server_local_data_ptr = 508, /* server_local_data_ptr */ - YYSYMBOL_server_minimal_responses = 509, /* server_minimal_responses */ - YYSYMBOL_server_rrset_roundrobin = 510, /* server_rrset_roundrobin */ - YYSYMBOL_server_unknown_server_time_limit = 511, /* server_unknown_server_time_limit */ - YYSYMBOL_server_max_udp_size = 512, /* server_max_udp_size */ - YYSYMBOL_server_dns64_prefix = 513, /* server_dns64_prefix */ - YYSYMBOL_server_dns64_synthall = 514, /* server_dns64_synthall */ - YYSYMBOL_server_dns64_ignore_aaaa = 515, /* server_dns64_ignore_aaaa */ - YYSYMBOL_server_define_tag = 516, /* server_define_tag */ - YYSYMBOL_server_local_zone_tag = 517, /* server_local_zone_tag */ - YYSYMBOL_server_access_control_tag = 518, /* server_access_control_tag */ - YYSYMBOL_server_access_control_tag_action = 519, /* server_access_control_tag_action */ - YYSYMBOL_server_access_control_tag_data = 520, /* server_access_control_tag_data */ - YYSYMBOL_server_local_zone_override = 521, /* server_local_zone_override */ - YYSYMBOL_server_access_control_view = 522, /* server_access_control_view */ - YYSYMBOL_server_response_ip_tag = 523, /* server_response_ip_tag */ - YYSYMBOL_server_ip_ratelimit = 524, /* server_ip_ratelimit */ - YYSYMBOL_server_ratelimit = 525, /* server_ratelimit */ - YYSYMBOL_server_ip_ratelimit_size = 526, /* server_ip_ratelimit_size */ - YYSYMBOL_server_ratelimit_size = 527, /* server_ratelimit_size */ - YYSYMBOL_server_ip_ratelimit_slabs = 528, /* server_ip_ratelimit_slabs */ - YYSYMBOL_server_ratelimit_slabs = 529, /* server_ratelimit_slabs */ - YYSYMBOL_server_ratelimit_for_domain = 530, /* server_ratelimit_for_domain */ - YYSYMBOL_server_ratelimit_below_domain = 531, /* server_ratelimit_below_domain */ - YYSYMBOL_server_ip_ratelimit_factor = 532, /* server_ip_ratelimit_factor */ - YYSYMBOL_server_ratelimit_factor = 533, /* server_ratelimit_factor */ - YYSYMBOL_server_low_rtt = 534, /* server_low_rtt */ - YYSYMBOL_server_fast_server_num = 535, /* server_fast_server_num */ - YYSYMBOL_server_fast_server_permil = 536, /* server_fast_server_permil */ - YYSYMBOL_server_qname_minimisation = 537, /* server_qname_minimisation */ - YYSYMBOL_server_qname_minimisation_strict = 538, /* server_qname_minimisation_strict */ - YYSYMBOL_server_pad_responses = 539, /* server_pad_responses */ - YYSYMBOL_server_pad_responses_block_size = 540, /* server_pad_responses_block_size */ - YYSYMBOL_server_pad_queries = 541, /* server_pad_queries */ - YYSYMBOL_server_pad_queries_block_size = 542, /* server_pad_queries_block_size */ - YYSYMBOL_server_ipsecmod_enabled = 543, /* server_ipsecmod_enabled */ - YYSYMBOL_server_ipsecmod_ignore_bogus = 544, /* server_ipsecmod_ignore_bogus */ - YYSYMBOL_server_ipsecmod_hook = 545, /* server_ipsecmod_hook */ - YYSYMBOL_server_ipsecmod_max_ttl = 546, /* server_ipsecmod_max_ttl */ - YYSYMBOL_server_ipsecmod_whitelist = 547, /* server_ipsecmod_whitelist */ - YYSYMBOL_server_ipsecmod_strict = 548, /* server_ipsecmod_strict */ - YYSYMBOL_server_edns_client_string = 549, /* server_edns_client_string */ - YYSYMBOL_server_edns_client_string_opcode = 550, /* server_edns_client_string_opcode */ - YYSYMBOL_stub_name = 551, /* stub_name */ - YYSYMBOL_stub_host = 552, /* stub_host */ - YYSYMBOL_stub_addr = 553, /* stub_addr */ - YYSYMBOL_stub_first = 554, /* stub_first */ - YYSYMBOL_stub_no_cache = 555, /* stub_no_cache */ - YYSYMBOL_stub_ssl_upstream = 556, /* stub_ssl_upstream */ - YYSYMBOL_stub_prime = 557, /* stub_prime */ - YYSYMBOL_forward_name = 558, /* forward_name */ - YYSYMBOL_forward_host = 559, /* forward_host */ - YYSYMBOL_forward_addr = 560, /* forward_addr */ - YYSYMBOL_forward_first = 561, /* forward_first */ - YYSYMBOL_forward_no_cache = 562, /* forward_no_cache */ - YYSYMBOL_forward_ssl_upstream = 563, /* forward_ssl_upstream */ - YYSYMBOL_auth_name = 564, /* auth_name */ - YYSYMBOL_auth_zonefile = 565, /* auth_zonefile */ - YYSYMBOL_auth_master = 566, /* auth_master */ - YYSYMBOL_auth_url = 567, /* auth_url */ - YYSYMBOL_auth_allow_notify = 568, /* auth_allow_notify */ - YYSYMBOL_auth_zonemd_reject_absence = 569, /* auth_zonemd_reject_absence */ - YYSYMBOL_auth_for_downstream = 570, /* auth_for_downstream */ - YYSYMBOL_auth_for_upstream = 571, /* auth_for_upstream */ - YYSYMBOL_auth_fallback_enabled = 572, /* auth_fallback_enabled */ - YYSYMBOL_view_name = 573, /* view_name */ - YYSYMBOL_view_local_zone = 574, /* view_local_zone */ - YYSYMBOL_view_response_ip = 575, /* view_response_ip */ - YYSYMBOL_view_response_ip_data = 576, /* view_response_ip_data */ - YYSYMBOL_view_local_data = 577, /* view_local_data */ - YYSYMBOL_view_local_data_ptr = 578, /* view_local_data_ptr */ - YYSYMBOL_view_first = 579, /* view_first */ - YYSYMBOL_rcstart = 580, /* rcstart */ - YYSYMBOL_contents_rc = 581, /* contents_rc */ - YYSYMBOL_content_rc = 582, /* content_rc */ - YYSYMBOL_rc_control_enable = 583, /* rc_control_enable */ - YYSYMBOL_rc_control_port = 584, /* rc_control_port */ - YYSYMBOL_rc_control_interface = 585, /* rc_control_interface */ - YYSYMBOL_rc_control_use_cert = 586, /* rc_control_use_cert */ - YYSYMBOL_rc_server_key_file = 587, /* rc_server_key_file */ - YYSYMBOL_rc_server_cert_file = 588, /* rc_server_cert_file */ - YYSYMBOL_rc_control_key_file = 589, /* rc_control_key_file */ - YYSYMBOL_rc_control_cert_file = 590, /* rc_control_cert_file */ - YYSYMBOL_dtstart = 591, /* dtstart */ - YYSYMBOL_contents_dt = 592, /* contents_dt */ - YYSYMBOL_content_dt = 593, /* content_dt */ - YYSYMBOL_dt_dnstap_enable = 594, /* dt_dnstap_enable */ - YYSYMBOL_dt_dnstap_bidirectional = 595, /* dt_dnstap_bidirectional */ - YYSYMBOL_dt_dnstap_socket_path = 596, /* dt_dnstap_socket_path */ - YYSYMBOL_dt_dnstap_ip = 597, /* dt_dnstap_ip */ - YYSYMBOL_dt_dnstap_tls = 598, /* dt_dnstap_tls */ - YYSYMBOL_dt_dnstap_tls_server_name = 599, /* dt_dnstap_tls_server_name */ - YYSYMBOL_dt_dnstap_tls_cert_bundle = 600, /* dt_dnstap_tls_cert_bundle */ - YYSYMBOL_dt_dnstap_tls_client_key_file = 601, /* dt_dnstap_tls_client_key_file */ - YYSYMBOL_dt_dnstap_tls_client_cert_file = 602, /* dt_dnstap_tls_client_cert_file */ - YYSYMBOL_dt_dnstap_send_identity = 603, /* dt_dnstap_send_identity */ - YYSYMBOL_dt_dnstap_send_version = 604, /* dt_dnstap_send_version */ - YYSYMBOL_dt_dnstap_identity = 605, /* dt_dnstap_identity */ - YYSYMBOL_dt_dnstap_version = 606, /* dt_dnstap_version */ - YYSYMBOL_dt_dnstap_log_resolver_query_messages = 607, /* dt_dnstap_log_resolver_query_messages */ - YYSYMBOL_dt_dnstap_log_resolver_response_messages = 608, /* dt_dnstap_log_resolver_response_messages */ - YYSYMBOL_dt_dnstap_log_client_query_messages = 609, /* dt_dnstap_log_client_query_messages */ - YYSYMBOL_dt_dnstap_log_client_response_messages = 610, /* dt_dnstap_log_client_response_messages */ - YYSYMBOL_dt_dnstap_log_forwarder_query_messages = 611, /* dt_dnstap_log_forwarder_query_messages */ - YYSYMBOL_dt_dnstap_log_forwarder_response_messages = 612, /* dt_dnstap_log_forwarder_response_messages */ - YYSYMBOL_pythonstart = 613, /* pythonstart */ - YYSYMBOL_contents_py = 614, /* contents_py */ - YYSYMBOL_content_py = 615, /* content_py */ - YYSYMBOL_py_script = 616, /* py_script */ - YYSYMBOL_dynlibstart = 617, /* dynlibstart */ - YYSYMBOL_contents_dl = 618, /* contents_dl */ - YYSYMBOL_content_dl = 619, /* content_dl */ - YYSYMBOL_dl_file = 620, /* dl_file */ - YYSYMBOL_server_disable_dnssec_lame_check = 621, /* server_disable_dnssec_lame_check */ - YYSYMBOL_server_log_identity = 622, /* server_log_identity */ - YYSYMBOL_server_response_ip = 623, /* server_response_ip */ - YYSYMBOL_server_response_ip_data = 624, /* server_response_ip_data */ - YYSYMBOL_dnscstart = 625, /* dnscstart */ - YYSYMBOL_contents_dnsc = 626, /* contents_dnsc */ - YYSYMBOL_content_dnsc = 627, /* content_dnsc */ - YYSYMBOL_dnsc_dnscrypt_enable = 628, /* dnsc_dnscrypt_enable */ - YYSYMBOL_dnsc_dnscrypt_port = 629, /* dnsc_dnscrypt_port */ - YYSYMBOL_dnsc_dnscrypt_provider = 630, /* dnsc_dnscrypt_provider */ - YYSYMBOL_dnsc_dnscrypt_provider_cert = 631, /* dnsc_dnscrypt_provider_cert */ - YYSYMBOL_dnsc_dnscrypt_provider_cert_rotated = 632, /* dnsc_dnscrypt_provider_cert_rotated */ - YYSYMBOL_dnsc_dnscrypt_secret_key = 633, /* dnsc_dnscrypt_secret_key */ - YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_size = 634, /* dnsc_dnscrypt_shared_secret_cache_size */ - YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_slabs = 635, /* dnsc_dnscrypt_shared_secret_cache_slabs */ - YYSYMBOL_dnsc_dnscrypt_nonce_cache_size = 636, /* dnsc_dnscrypt_nonce_cache_size */ - YYSYMBOL_dnsc_dnscrypt_nonce_cache_slabs = 637, /* dnsc_dnscrypt_nonce_cache_slabs */ - YYSYMBOL_cachedbstart = 638, /* cachedbstart */ - YYSYMBOL_contents_cachedb = 639, /* contents_cachedb */ - YYSYMBOL_content_cachedb = 640, /* content_cachedb */ - YYSYMBOL_cachedb_backend_name = 641, /* cachedb_backend_name */ - YYSYMBOL_cachedb_secret_seed = 642, /* cachedb_secret_seed */ - YYSYMBOL_redis_server_host = 643, /* redis_server_host */ - YYSYMBOL_redis_server_port = 644, /* redis_server_port */ - YYSYMBOL_redis_timeout = 645, /* redis_timeout */ - YYSYMBOL_redis_expire_records = 646, /* redis_expire_records */ - YYSYMBOL_server_tcp_connection_limit = 647, /* server_tcp_connection_limit */ - YYSYMBOL_ipsetstart = 648, /* ipsetstart */ - YYSYMBOL_contents_ipset = 649, /* contents_ipset */ - YYSYMBOL_content_ipset = 650, /* content_ipset */ - YYSYMBOL_ipset_name_v4 = 651, /* ipset_name_v4 */ - YYSYMBOL_ipset_name_v6 = 652 /* ipset_name_v6 */ + YYSYMBOL_VAR_ZONEMD_CHECK = 313, /* VAR_ZONEMD_CHECK */ + YYSYMBOL_VAR_ZONEMD_REJECT_ABSENCE = 314, /* VAR_ZONEMD_REJECT_ABSENCE */ + YYSYMBOL_YYACCEPT = 315, /* $accept */ + YYSYMBOL_toplevelvars = 316, /* toplevelvars */ + YYSYMBOL_toplevelvar = 317, /* toplevelvar */ + YYSYMBOL_force_toplevel = 318, /* force_toplevel */ + YYSYMBOL_serverstart = 319, /* serverstart */ + YYSYMBOL_contents_server = 320, /* contents_server */ + YYSYMBOL_content_server = 321, /* content_server */ + YYSYMBOL_stubstart = 322, /* stubstart */ + YYSYMBOL_contents_stub = 323, /* contents_stub */ + YYSYMBOL_content_stub = 324, /* content_stub */ + YYSYMBOL_forwardstart = 325, /* forwardstart */ + YYSYMBOL_contents_forward = 326, /* contents_forward */ + YYSYMBOL_content_forward = 327, /* content_forward */ + YYSYMBOL_viewstart = 328, /* viewstart */ + YYSYMBOL_contents_view = 329, /* contents_view */ + YYSYMBOL_content_view = 330, /* content_view */ + YYSYMBOL_authstart = 331, /* authstart */ + YYSYMBOL_contents_auth = 332, /* contents_auth */ + YYSYMBOL_content_auth = 333, /* content_auth */ + YYSYMBOL_rpz_tag = 334, /* rpz_tag */ + YYSYMBOL_rpz_action_override = 335, /* rpz_action_override */ + YYSYMBOL_rpz_cname_override = 336, /* rpz_cname_override */ + YYSYMBOL_rpz_log = 337, /* rpz_log */ + YYSYMBOL_rpz_log_name = 338, /* rpz_log_name */ + YYSYMBOL_rpzstart = 339, /* rpzstart */ + YYSYMBOL_contents_rpz = 340, /* contents_rpz */ + YYSYMBOL_content_rpz = 341, /* content_rpz */ + YYSYMBOL_server_num_threads = 342, /* server_num_threads */ + YYSYMBOL_server_verbosity = 343, /* server_verbosity */ + YYSYMBOL_server_statistics_interval = 344, /* server_statistics_interval */ + YYSYMBOL_server_statistics_cumulative = 345, /* server_statistics_cumulative */ + YYSYMBOL_server_extended_statistics = 346, /* server_extended_statistics */ + YYSYMBOL_server_shm_enable = 347, /* server_shm_enable */ + YYSYMBOL_server_shm_key = 348, /* server_shm_key */ + YYSYMBOL_server_port = 349, /* server_port */ + YYSYMBOL_server_send_client_subnet = 350, /* server_send_client_subnet */ + YYSYMBOL_server_client_subnet_zone = 351, /* server_client_subnet_zone */ + YYSYMBOL_server_client_subnet_always_forward = 352, /* server_client_subnet_always_forward */ + YYSYMBOL_server_client_subnet_opcode = 353, /* server_client_subnet_opcode */ + YYSYMBOL_server_max_client_subnet_ipv4 = 354, /* server_max_client_subnet_ipv4 */ + YYSYMBOL_server_max_client_subnet_ipv6 = 355, /* server_max_client_subnet_ipv6 */ + YYSYMBOL_server_min_client_subnet_ipv4 = 356, /* server_min_client_subnet_ipv4 */ + YYSYMBOL_server_min_client_subnet_ipv6 = 357, /* server_min_client_subnet_ipv6 */ + YYSYMBOL_server_max_ecs_tree_size_ipv4 = 358, /* server_max_ecs_tree_size_ipv4 */ + YYSYMBOL_server_max_ecs_tree_size_ipv6 = 359, /* server_max_ecs_tree_size_ipv6 */ + YYSYMBOL_server_interface = 360, /* server_interface */ + YYSYMBOL_server_outgoing_interface = 361, /* server_outgoing_interface */ + YYSYMBOL_server_outgoing_range = 362, /* server_outgoing_range */ + YYSYMBOL_server_outgoing_port_permit = 363, /* server_outgoing_port_permit */ + YYSYMBOL_server_outgoing_port_avoid = 364, /* server_outgoing_port_avoid */ + YYSYMBOL_server_outgoing_num_tcp = 365, /* server_outgoing_num_tcp */ + YYSYMBOL_server_incoming_num_tcp = 366, /* server_incoming_num_tcp */ + YYSYMBOL_server_interface_automatic = 367, /* server_interface_automatic */ + YYSYMBOL_server_do_ip4 = 368, /* server_do_ip4 */ + YYSYMBOL_server_do_ip6 = 369, /* server_do_ip6 */ + YYSYMBOL_server_do_udp = 370, /* server_do_udp */ + YYSYMBOL_server_do_tcp = 371, /* server_do_tcp */ + YYSYMBOL_server_prefer_ip4 = 372, /* server_prefer_ip4 */ + YYSYMBOL_server_prefer_ip6 = 373, /* server_prefer_ip6 */ + YYSYMBOL_server_tcp_mss = 374, /* server_tcp_mss */ + YYSYMBOL_server_outgoing_tcp_mss = 375, /* server_outgoing_tcp_mss */ + YYSYMBOL_server_tcp_idle_timeout = 376, /* server_tcp_idle_timeout */ + YYSYMBOL_server_max_reuse_tcp_queries = 377, /* server_max_reuse_tcp_queries */ + YYSYMBOL_server_tcp_reuse_timeout = 378, /* server_tcp_reuse_timeout */ + YYSYMBOL_server_tcp_auth_query_timeout = 379, /* server_tcp_auth_query_timeout */ + YYSYMBOL_server_tcp_keepalive = 380, /* server_tcp_keepalive */ + YYSYMBOL_server_tcp_keepalive_timeout = 381, /* server_tcp_keepalive_timeout */ + YYSYMBOL_server_tcp_upstream = 382, /* server_tcp_upstream */ + YYSYMBOL_server_udp_upstream_without_downstream = 383, /* server_udp_upstream_without_downstream */ + YYSYMBOL_server_ssl_upstream = 384, /* server_ssl_upstream */ + YYSYMBOL_server_ssl_service_key = 385, /* server_ssl_service_key */ + YYSYMBOL_server_ssl_service_pem = 386, /* server_ssl_service_pem */ + YYSYMBOL_server_ssl_port = 387, /* server_ssl_port */ + YYSYMBOL_server_tls_cert_bundle = 388, /* server_tls_cert_bundle */ + YYSYMBOL_server_tls_win_cert = 389, /* server_tls_win_cert */ + YYSYMBOL_server_tls_additional_port = 390, /* server_tls_additional_port */ + YYSYMBOL_server_tls_ciphers = 391, /* server_tls_ciphers */ + YYSYMBOL_server_tls_ciphersuites = 392, /* server_tls_ciphersuites */ + YYSYMBOL_server_tls_session_ticket_keys = 393, /* server_tls_session_ticket_keys */ + YYSYMBOL_server_tls_use_sni = 394, /* server_tls_use_sni */ + YYSYMBOL_server_https_port = 395, /* server_https_port */ + YYSYMBOL_server_http_endpoint = 396, /* server_http_endpoint */ + YYSYMBOL_server_http_max_streams = 397, /* server_http_max_streams */ + YYSYMBOL_server_http_query_buffer_size = 398, /* server_http_query_buffer_size */ + YYSYMBOL_server_http_response_buffer_size = 399, /* server_http_response_buffer_size */ + YYSYMBOL_server_http_nodelay = 400, /* server_http_nodelay */ + YYSYMBOL_server_http_notls_downstream = 401, /* server_http_notls_downstream */ + YYSYMBOL_server_use_systemd = 402, /* server_use_systemd */ + YYSYMBOL_server_do_daemonize = 403, /* server_do_daemonize */ + YYSYMBOL_server_use_syslog = 404, /* server_use_syslog */ + YYSYMBOL_server_log_time_ascii = 405, /* server_log_time_ascii */ + YYSYMBOL_server_log_queries = 406, /* server_log_queries */ + YYSYMBOL_server_log_replies = 407, /* server_log_replies */ + YYSYMBOL_server_log_tag_queryreply = 408, /* server_log_tag_queryreply */ + YYSYMBOL_server_log_servfail = 409, /* server_log_servfail */ + YYSYMBOL_server_log_local_actions = 410, /* server_log_local_actions */ + YYSYMBOL_server_chroot = 411, /* server_chroot */ + YYSYMBOL_server_username = 412, /* server_username */ + YYSYMBOL_server_directory = 413, /* server_directory */ + YYSYMBOL_server_logfile = 414, /* server_logfile */ + YYSYMBOL_server_pidfile = 415, /* server_pidfile */ + YYSYMBOL_server_root_hints = 416, /* server_root_hints */ + YYSYMBOL_server_dlv_anchor_file = 417, /* server_dlv_anchor_file */ + YYSYMBOL_server_dlv_anchor = 418, /* server_dlv_anchor */ + YYSYMBOL_server_auto_trust_anchor_file = 419, /* server_auto_trust_anchor_file */ + YYSYMBOL_server_trust_anchor_file = 420, /* server_trust_anchor_file */ + YYSYMBOL_server_trusted_keys_file = 421, /* server_trusted_keys_file */ + YYSYMBOL_server_trust_anchor = 422, /* server_trust_anchor */ + YYSYMBOL_server_trust_anchor_signaling = 423, /* server_trust_anchor_signaling */ + YYSYMBOL_server_root_key_sentinel = 424, /* server_root_key_sentinel */ + YYSYMBOL_server_domain_insecure = 425, /* server_domain_insecure */ + YYSYMBOL_server_hide_identity = 426, /* server_hide_identity */ + YYSYMBOL_server_hide_version = 427, /* server_hide_version */ + YYSYMBOL_server_hide_trustanchor = 428, /* server_hide_trustanchor */ + YYSYMBOL_server_identity = 429, /* server_identity */ + YYSYMBOL_server_version = 430, /* server_version */ + YYSYMBOL_server_nsid = 431, /* server_nsid */ + YYSYMBOL_server_so_rcvbuf = 432, /* server_so_rcvbuf */ + YYSYMBOL_server_so_sndbuf = 433, /* server_so_sndbuf */ + YYSYMBOL_server_so_reuseport = 434, /* server_so_reuseport */ + YYSYMBOL_server_ip_transparent = 435, /* server_ip_transparent */ + YYSYMBOL_server_ip_freebind = 436, /* server_ip_freebind */ + YYSYMBOL_server_ip_dscp = 437, /* server_ip_dscp */ + YYSYMBOL_server_stream_wait_size = 438, /* server_stream_wait_size */ + YYSYMBOL_server_edns_buffer_size = 439, /* server_edns_buffer_size */ + YYSYMBOL_server_msg_buffer_size = 440, /* server_msg_buffer_size */ + YYSYMBOL_server_msg_cache_size = 441, /* server_msg_cache_size */ + YYSYMBOL_server_msg_cache_slabs = 442, /* server_msg_cache_slabs */ + YYSYMBOL_server_num_queries_per_thread = 443, /* server_num_queries_per_thread */ + YYSYMBOL_server_jostle_timeout = 444, /* server_jostle_timeout */ + YYSYMBOL_server_delay_close = 445, /* server_delay_close */ + YYSYMBOL_server_udp_connect = 446, /* server_udp_connect */ + YYSYMBOL_server_unblock_lan_zones = 447, /* server_unblock_lan_zones */ + YYSYMBOL_server_insecure_lan_zones = 448, /* server_insecure_lan_zones */ + YYSYMBOL_server_rrset_cache_size = 449, /* server_rrset_cache_size */ + YYSYMBOL_server_rrset_cache_slabs = 450, /* server_rrset_cache_slabs */ + YYSYMBOL_server_infra_host_ttl = 451, /* server_infra_host_ttl */ + YYSYMBOL_server_infra_lame_ttl = 452, /* server_infra_lame_ttl */ + YYSYMBOL_server_infra_cache_numhosts = 453, /* server_infra_cache_numhosts */ + YYSYMBOL_server_infra_cache_lame_size = 454, /* server_infra_cache_lame_size */ + YYSYMBOL_server_infra_cache_slabs = 455, /* server_infra_cache_slabs */ + YYSYMBOL_server_infra_cache_min_rtt = 456, /* server_infra_cache_min_rtt */ + YYSYMBOL_server_infra_keep_probing = 457, /* server_infra_keep_probing */ + YYSYMBOL_server_target_fetch_policy = 458, /* server_target_fetch_policy */ + YYSYMBOL_server_harden_short_bufsize = 459, /* server_harden_short_bufsize */ + YYSYMBOL_server_harden_large_queries = 460, /* server_harden_large_queries */ + YYSYMBOL_server_harden_glue = 461, /* server_harden_glue */ + YYSYMBOL_server_harden_dnssec_stripped = 462, /* server_harden_dnssec_stripped */ + YYSYMBOL_server_harden_below_nxdomain = 463, /* server_harden_below_nxdomain */ + YYSYMBOL_server_harden_referral_path = 464, /* server_harden_referral_path */ + YYSYMBOL_server_harden_algo_downgrade = 465, /* server_harden_algo_downgrade */ + YYSYMBOL_server_use_caps_for_id = 466, /* server_use_caps_for_id */ + YYSYMBOL_server_caps_whitelist = 467, /* server_caps_whitelist */ + YYSYMBOL_server_private_address = 468, /* server_private_address */ + YYSYMBOL_server_private_domain = 469, /* server_private_domain */ + YYSYMBOL_server_prefetch = 470, /* server_prefetch */ + YYSYMBOL_server_prefetch_key = 471, /* server_prefetch_key */ + YYSYMBOL_server_deny_any = 472, /* server_deny_any */ + YYSYMBOL_server_unwanted_reply_threshold = 473, /* server_unwanted_reply_threshold */ + YYSYMBOL_server_do_not_query_address = 474, /* server_do_not_query_address */ + YYSYMBOL_server_do_not_query_localhost = 475, /* server_do_not_query_localhost */ + YYSYMBOL_server_access_control = 476, /* server_access_control */ + YYSYMBOL_server_module_conf = 477, /* server_module_conf */ + YYSYMBOL_server_val_override_date = 478, /* server_val_override_date */ + YYSYMBOL_server_val_sig_skew_min = 479, /* server_val_sig_skew_min */ + YYSYMBOL_server_val_sig_skew_max = 480, /* server_val_sig_skew_max */ + YYSYMBOL_server_cache_max_ttl = 481, /* server_cache_max_ttl */ + YYSYMBOL_server_cache_max_negative_ttl = 482, /* server_cache_max_negative_ttl */ + YYSYMBOL_server_cache_min_ttl = 483, /* server_cache_min_ttl */ + YYSYMBOL_server_bogus_ttl = 484, /* server_bogus_ttl */ + YYSYMBOL_server_val_clean_additional = 485, /* server_val_clean_additional */ + YYSYMBOL_server_val_permissive_mode = 486, /* server_val_permissive_mode */ + YYSYMBOL_server_aggressive_nsec = 487, /* server_aggressive_nsec */ + YYSYMBOL_server_ignore_cd_flag = 488, /* server_ignore_cd_flag */ + YYSYMBOL_server_serve_expired = 489, /* server_serve_expired */ + YYSYMBOL_server_serve_expired_ttl = 490, /* server_serve_expired_ttl */ + YYSYMBOL_server_serve_expired_ttl_reset = 491, /* server_serve_expired_ttl_reset */ + YYSYMBOL_server_serve_expired_reply_ttl = 492, /* server_serve_expired_reply_ttl */ + YYSYMBOL_server_serve_expired_client_timeout = 493, /* server_serve_expired_client_timeout */ + YYSYMBOL_server_serve_original_ttl = 494, /* server_serve_original_ttl */ + YYSYMBOL_server_fake_dsa = 495, /* server_fake_dsa */ + YYSYMBOL_server_fake_sha1 = 496, /* server_fake_sha1 */ + YYSYMBOL_server_val_log_level = 497, /* server_val_log_level */ + YYSYMBOL_server_val_nsec3_keysize_iterations = 498, /* server_val_nsec3_keysize_iterations */ + YYSYMBOL_server_zonemd_permissive_mode = 499, /* server_zonemd_permissive_mode */ + YYSYMBOL_server_add_holddown = 500, /* server_add_holddown */ + YYSYMBOL_server_del_holddown = 501, /* server_del_holddown */ + YYSYMBOL_server_keep_missing = 502, /* server_keep_missing */ + YYSYMBOL_server_permit_small_holddown = 503, /* server_permit_small_holddown */ + YYSYMBOL_server_key_cache_size = 504, /* server_key_cache_size */ + YYSYMBOL_server_key_cache_slabs = 505, /* server_key_cache_slabs */ + YYSYMBOL_server_neg_cache_size = 506, /* server_neg_cache_size */ + YYSYMBOL_server_local_zone = 507, /* server_local_zone */ + YYSYMBOL_server_local_data = 508, /* server_local_data */ + YYSYMBOL_server_local_data_ptr = 509, /* server_local_data_ptr */ + YYSYMBOL_server_minimal_responses = 510, /* server_minimal_responses */ + YYSYMBOL_server_rrset_roundrobin = 511, /* server_rrset_roundrobin */ + YYSYMBOL_server_unknown_server_time_limit = 512, /* server_unknown_server_time_limit */ + YYSYMBOL_server_max_udp_size = 513, /* server_max_udp_size */ + YYSYMBOL_server_dns64_prefix = 514, /* server_dns64_prefix */ + YYSYMBOL_server_dns64_synthall = 515, /* server_dns64_synthall */ + YYSYMBOL_server_dns64_ignore_aaaa = 516, /* server_dns64_ignore_aaaa */ + YYSYMBOL_server_define_tag = 517, /* server_define_tag */ + YYSYMBOL_server_local_zone_tag = 518, /* server_local_zone_tag */ + YYSYMBOL_server_access_control_tag = 519, /* server_access_control_tag */ + YYSYMBOL_server_access_control_tag_action = 520, /* server_access_control_tag_action */ + YYSYMBOL_server_access_control_tag_data = 521, /* server_access_control_tag_data */ + YYSYMBOL_server_local_zone_override = 522, /* server_local_zone_override */ + YYSYMBOL_server_access_control_view = 523, /* server_access_control_view */ + YYSYMBOL_server_response_ip_tag = 524, /* server_response_ip_tag */ + YYSYMBOL_server_ip_ratelimit = 525, /* server_ip_ratelimit */ + YYSYMBOL_server_ratelimit = 526, /* server_ratelimit */ + YYSYMBOL_server_ip_ratelimit_size = 527, /* server_ip_ratelimit_size */ + YYSYMBOL_server_ratelimit_size = 528, /* server_ratelimit_size */ + YYSYMBOL_server_ip_ratelimit_slabs = 529, /* server_ip_ratelimit_slabs */ + YYSYMBOL_server_ratelimit_slabs = 530, /* server_ratelimit_slabs */ + YYSYMBOL_server_ratelimit_for_domain = 531, /* server_ratelimit_for_domain */ + YYSYMBOL_server_ratelimit_below_domain = 532, /* server_ratelimit_below_domain */ + YYSYMBOL_server_ip_ratelimit_factor = 533, /* server_ip_ratelimit_factor */ + YYSYMBOL_server_ratelimit_factor = 534, /* server_ratelimit_factor */ + YYSYMBOL_server_low_rtt = 535, /* server_low_rtt */ + YYSYMBOL_server_fast_server_num = 536, /* server_fast_server_num */ + YYSYMBOL_server_fast_server_permil = 537, /* server_fast_server_permil */ + YYSYMBOL_server_qname_minimisation = 538, /* server_qname_minimisation */ + YYSYMBOL_server_qname_minimisation_strict = 539, /* server_qname_minimisation_strict */ + YYSYMBOL_server_pad_responses = 540, /* server_pad_responses */ + YYSYMBOL_server_pad_responses_block_size = 541, /* server_pad_responses_block_size */ + YYSYMBOL_server_pad_queries = 542, /* server_pad_queries */ + YYSYMBOL_server_pad_queries_block_size = 543, /* server_pad_queries_block_size */ + YYSYMBOL_server_ipsecmod_enabled = 544, /* server_ipsecmod_enabled */ + YYSYMBOL_server_ipsecmod_ignore_bogus = 545, /* server_ipsecmod_ignore_bogus */ + YYSYMBOL_server_ipsecmod_hook = 546, /* server_ipsecmod_hook */ + YYSYMBOL_server_ipsecmod_max_ttl = 547, /* server_ipsecmod_max_ttl */ + YYSYMBOL_server_ipsecmod_whitelist = 548, /* server_ipsecmod_whitelist */ + YYSYMBOL_server_ipsecmod_strict = 549, /* server_ipsecmod_strict */ + YYSYMBOL_server_edns_client_string = 550, /* server_edns_client_string */ + YYSYMBOL_server_edns_client_string_opcode = 551, /* server_edns_client_string_opcode */ + YYSYMBOL_stub_name = 552, /* stub_name */ + YYSYMBOL_stub_host = 553, /* stub_host */ + YYSYMBOL_stub_addr = 554, /* stub_addr */ + YYSYMBOL_stub_first = 555, /* stub_first */ + YYSYMBOL_stub_no_cache = 556, /* stub_no_cache */ + YYSYMBOL_stub_ssl_upstream = 557, /* stub_ssl_upstream */ + YYSYMBOL_stub_prime = 558, /* stub_prime */ + YYSYMBOL_forward_name = 559, /* forward_name */ + YYSYMBOL_forward_host = 560, /* forward_host */ + YYSYMBOL_forward_addr = 561, /* forward_addr */ + YYSYMBOL_forward_first = 562, /* forward_first */ + YYSYMBOL_forward_no_cache = 563, /* forward_no_cache */ + YYSYMBOL_forward_ssl_upstream = 564, /* forward_ssl_upstream */ + YYSYMBOL_auth_name = 565, /* auth_name */ + YYSYMBOL_auth_zonefile = 566, /* auth_zonefile */ + YYSYMBOL_auth_master = 567, /* auth_master */ + YYSYMBOL_auth_url = 568, /* auth_url */ + YYSYMBOL_auth_allow_notify = 569, /* auth_allow_notify */ + YYSYMBOL_auth_zonemd_check = 570, /* auth_zonemd_check */ + YYSYMBOL_auth_zonemd_reject_absence = 571, /* auth_zonemd_reject_absence */ + YYSYMBOL_auth_for_downstream = 572, /* auth_for_downstream */ + YYSYMBOL_auth_for_upstream = 573, /* auth_for_upstream */ + YYSYMBOL_auth_fallback_enabled = 574, /* auth_fallback_enabled */ + YYSYMBOL_view_name = 575, /* view_name */ + YYSYMBOL_view_local_zone = 576, /* view_local_zone */ + YYSYMBOL_view_response_ip = 577, /* view_response_ip */ + YYSYMBOL_view_response_ip_data = 578, /* view_response_ip_data */ + YYSYMBOL_view_local_data = 579, /* view_local_data */ + YYSYMBOL_view_local_data_ptr = 580, /* view_local_data_ptr */ + YYSYMBOL_view_first = 581, /* view_first */ + YYSYMBOL_rcstart = 582, /* rcstart */ + YYSYMBOL_contents_rc = 583, /* contents_rc */ + YYSYMBOL_content_rc = 584, /* content_rc */ + YYSYMBOL_rc_control_enable = 585, /* rc_control_enable */ + YYSYMBOL_rc_control_port = 586, /* rc_control_port */ + YYSYMBOL_rc_control_interface = 587, /* rc_control_interface */ + YYSYMBOL_rc_control_use_cert = 588, /* rc_control_use_cert */ + YYSYMBOL_rc_server_key_file = 589, /* rc_server_key_file */ + YYSYMBOL_rc_server_cert_file = 590, /* rc_server_cert_file */ + YYSYMBOL_rc_control_key_file = 591, /* rc_control_key_file */ + YYSYMBOL_rc_control_cert_file = 592, /* rc_control_cert_file */ + YYSYMBOL_dtstart = 593, /* dtstart */ + YYSYMBOL_contents_dt = 594, /* contents_dt */ + YYSYMBOL_content_dt = 595, /* content_dt */ + YYSYMBOL_dt_dnstap_enable = 596, /* dt_dnstap_enable */ + YYSYMBOL_dt_dnstap_bidirectional = 597, /* dt_dnstap_bidirectional */ + YYSYMBOL_dt_dnstap_socket_path = 598, /* dt_dnstap_socket_path */ + YYSYMBOL_dt_dnstap_ip = 599, /* dt_dnstap_ip */ + YYSYMBOL_dt_dnstap_tls = 600, /* dt_dnstap_tls */ + YYSYMBOL_dt_dnstap_tls_server_name = 601, /* dt_dnstap_tls_server_name */ + YYSYMBOL_dt_dnstap_tls_cert_bundle = 602, /* dt_dnstap_tls_cert_bundle */ + YYSYMBOL_dt_dnstap_tls_client_key_file = 603, /* dt_dnstap_tls_client_key_file */ + YYSYMBOL_dt_dnstap_tls_client_cert_file = 604, /* dt_dnstap_tls_client_cert_file */ + YYSYMBOL_dt_dnstap_send_identity = 605, /* dt_dnstap_send_identity */ + YYSYMBOL_dt_dnstap_send_version = 606, /* dt_dnstap_send_version */ + YYSYMBOL_dt_dnstap_identity = 607, /* dt_dnstap_identity */ + YYSYMBOL_dt_dnstap_version = 608, /* dt_dnstap_version */ + YYSYMBOL_dt_dnstap_log_resolver_query_messages = 609, /* dt_dnstap_log_resolver_query_messages */ + YYSYMBOL_dt_dnstap_log_resolver_response_messages = 610, /* dt_dnstap_log_resolver_response_messages */ + YYSYMBOL_dt_dnstap_log_client_query_messages = 611, /* dt_dnstap_log_client_query_messages */ + YYSYMBOL_dt_dnstap_log_client_response_messages = 612, /* dt_dnstap_log_client_response_messages */ + YYSYMBOL_dt_dnstap_log_forwarder_query_messages = 613, /* dt_dnstap_log_forwarder_query_messages */ + YYSYMBOL_dt_dnstap_log_forwarder_response_messages = 614, /* dt_dnstap_log_forwarder_response_messages */ + YYSYMBOL_pythonstart = 615, /* pythonstart */ + YYSYMBOL_contents_py = 616, /* contents_py */ + YYSYMBOL_content_py = 617, /* content_py */ + YYSYMBOL_py_script = 618, /* py_script */ + YYSYMBOL_dynlibstart = 619, /* dynlibstart */ + YYSYMBOL_contents_dl = 620, /* contents_dl */ + YYSYMBOL_content_dl = 621, /* content_dl */ + YYSYMBOL_dl_file = 622, /* dl_file */ + YYSYMBOL_server_disable_dnssec_lame_check = 623, /* server_disable_dnssec_lame_check */ + YYSYMBOL_server_log_identity = 624, /* server_log_identity */ + YYSYMBOL_server_response_ip = 625, /* server_response_ip */ + YYSYMBOL_server_response_ip_data = 626, /* server_response_ip_data */ + YYSYMBOL_dnscstart = 627, /* dnscstart */ + YYSYMBOL_contents_dnsc = 628, /* contents_dnsc */ + YYSYMBOL_content_dnsc = 629, /* content_dnsc */ + YYSYMBOL_dnsc_dnscrypt_enable = 630, /* dnsc_dnscrypt_enable */ + YYSYMBOL_dnsc_dnscrypt_port = 631, /* dnsc_dnscrypt_port */ + YYSYMBOL_dnsc_dnscrypt_provider = 632, /* dnsc_dnscrypt_provider */ + YYSYMBOL_dnsc_dnscrypt_provider_cert = 633, /* dnsc_dnscrypt_provider_cert */ + YYSYMBOL_dnsc_dnscrypt_provider_cert_rotated = 634, /* dnsc_dnscrypt_provider_cert_rotated */ + YYSYMBOL_dnsc_dnscrypt_secret_key = 635, /* dnsc_dnscrypt_secret_key */ + YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_size = 636, /* dnsc_dnscrypt_shared_secret_cache_size */ + YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_slabs = 637, /* dnsc_dnscrypt_shared_secret_cache_slabs */ + YYSYMBOL_dnsc_dnscrypt_nonce_cache_size = 638, /* dnsc_dnscrypt_nonce_cache_size */ + YYSYMBOL_dnsc_dnscrypt_nonce_cache_slabs = 639, /* dnsc_dnscrypt_nonce_cache_slabs */ + YYSYMBOL_cachedbstart = 640, /* cachedbstart */ + YYSYMBOL_contents_cachedb = 641, /* contents_cachedb */ + YYSYMBOL_content_cachedb = 642, /* content_cachedb */ + YYSYMBOL_cachedb_backend_name = 643, /* cachedb_backend_name */ + YYSYMBOL_cachedb_secret_seed = 644, /* cachedb_secret_seed */ + YYSYMBOL_redis_server_host = 645, /* redis_server_host */ + YYSYMBOL_redis_server_port = 646, /* redis_server_port */ + YYSYMBOL_redis_timeout = 647, /* redis_timeout */ + YYSYMBOL_redis_expire_records = 648, /* redis_expire_records */ + YYSYMBOL_server_tcp_connection_limit = 649, /* server_tcp_connection_limit */ + YYSYMBOL_ipsetstart = 650, /* ipsetstart */ + YYSYMBOL_contents_ipset = 651, /* contents_ipset */ + YYSYMBOL_content_ipset = 652, /* content_ipset */ + YYSYMBOL_ipset_name_v4 = 653, /* ipset_name_v4 */ + YYSYMBOL_ipset_name_v6 = 654 /* ipset_name_v6 */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; @@ -1758,18 +1762,18 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 663 +#define YYLAST 666 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 314 +#define YYNTOKENS 315 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 339 +#define YYNNTS 340 /* YYNRULES -- Number of rules. */ -#define YYNRULES 654 +#define YYNRULES 656 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 972 +#define YYNSTATES 975 -#define YYMAXUTOK 568 +#define YYMAXUTOK 569 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM @@ -1839,7 +1843,7 @@ static const yytype_int16 yytranslate[] = 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 + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314 }; #if YYDEBUG @@ -1872,46 +1876,46 @@ static const yytype_int16 yyrline[] = 302, 303, 303, 304, 304, 305, 305, 308, 320, 321, 322, 322, 322, 322, 322, 323, 323, 325, 337, 338, 339, 339, 339, 339, 340, 340, 342, 356, 357, 358, - 358, 358, 358, 359, 359, 359, 361, 379, 380, 381, - 381, 381, 381, 382, 382, 382, 383, 383, 386, 405, - 422, 430, 440, 448, 465, 466, 467, 467, 467, 467, - 467, 468, 468, 468, 469, 469, 471, 480, 489, 500, - 509, 518, 527, 538, 547, 559, 573, 588, 599, 616, - 633, 650, 667, 682, 697, 710, 725, 734, 743, 752, - 761, 770, 779, 788, 797, 806, 815, 824, 833, 842, - 851, 864, 875, 886, 897, 906, 919, 928, 937, 946, - 953, 960, 969, 976, 985, 993, 1000, 1007, 1015, 1024, - 1032, 1048, 1056, 1064, 1072, 1080, 1088, 1097, 1106, 1120, - 1129, 1138, 1147, 1156, 1165, 1174, 1181, 1188, 1214, 1222, - 1229, 1236, 1243, 1250, 1258, 1266, 1274, 1281, 1292, 1303, - 1310, 1319, 1328, 1337, 1344, 1351, 1367, 1375, 1383, 1393, - 1403, 1413, 1427, 1435, 1448, 1459, 1467, 1480, 1489, 1498, - 1507, 1516, 1526, 1536, 1544, 1557, 1566, 1574, 1583, 1591, - 1604, 1613, 1623, 1630, 1640, 1650, 1660, 1670, 1680, 1690, - 1700, 1710, 1717, 1724, 1731, 1740, 1749, 1758, 1767, 1774, - 1784, 1804, 1811, 1829, 1842, 1855, 1864, 1873, 1882, 1891, - 1901, 1911, 1922, 1931, 1940, 1949, 1958, 1967, 1976, 1985, - 1998, 2011, 2020, 2027, 2036, 2045, 2054, 2063, 2072, 2080, - 2093, 2101, 2146, 2153, 2168, 2178, 2188, 2195, 2202, 2209, - 2218, 2226, 2240, 2261, 2282, 2294, 2306, 2318, 2327, 2348, - 2358, 2367, 2375, 2383, 2396, 2409, 2424, 2439, 2448, 2457, - 2463, 2472, 2481, 2491, 2501, 2511, 2520, 2530, 2539, 2552, - 2565, 2577, 2591, 2603, 2617, 2626, 2638, 2648, 2655, 2662, - 2671, 2680, 2690, 2700, 2710, 2717, 2724, 2733, 2742, 2752, - 2762, 2769, 2776, 2783, 2791, 2801, 2811, 2821, 2831, 2841, - 2887, 2897, 2905, 2913, 2928, 2937, 2942, 2943, 2944, 2944, - 2944, 2945, 2945, 2945, 2946, 2946, 2948, 2958, 2967, 2974, - 2981, 2988, 2995, 3002, 3009, 3014, 3015, 3016, 3016, 3016, - 3017, 3017, 3017, 3018, 3019, 3019, 3020, 3020, 3021, 3021, - 3022, 3023, 3024, 3025, 3026, 3027, 3029, 3038, 3048, 3055, - 3062, 3071, 3078, 3085, 3092, 3099, 3108, 3117, 3124, 3131, - 3141, 3151, 3161, 3171, 3181, 3191, 3196, 3197, 3198, 3200, - 3206, 3211, 3212, 3213, 3215, 3221, 3231, 3238, 3247, 3255, - 3260, 3261, 3263, 3263, 3263, 3264, 3264, 3265, 3266, 3267, - 3268, 3269, 3271, 3281, 3290, 3297, 3306, 3313, 3322, 3330, - 3343, 3351, 3364, 3369, 3370, 3371, 3371, 3372, 3372, 3372, - 3373, 3375, 3387, 3399, 3411, 3426, 3439, 3452, 3463, 3468, - 3469, 3470, 3470, 3472, 3487 + 358, 358, 358, 359, 359, 359, 361, 380, 381, 382, + 382, 382, 382, 383, 383, 383, 384, 384, 384, 387, + 406, 423, 431, 441, 449, 466, 467, 468, 468, 468, + 468, 468, 469, 469, 469, 470, 470, 472, 481, 490, + 501, 510, 519, 528, 539, 548, 560, 574, 589, 600, + 617, 634, 651, 668, 683, 698, 711, 726, 735, 744, + 753, 762, 771, 780, 789, 798, 807, 816, 825, 834, + 843, 852, 865, 876, 887, 898, 907, 920, 929, 938, + 947, 954, 961, 970, 977, 986, 994, 1001, 1008, 1016, + 1025, 1033, 1049, 1057, 1065, 1073, 1081, 1089, 1098, 1107, + 1121, 1130, 1139, 1148, 1157, 1166, 1175, 1182, 1189, 1215, + 1223, 1230, 1237, 1244, 1251, 1259, 1267, 1275, 1282, 1293, + 1304, 1311, 1320, 1329, 1338, 1345, 1352, 1368, 1376, 1384, + 1394, 1404, 1414, 1428, 1436, 1449, 1460, 1468, 1481, 1490, + 1499, 1508, 1517, 1527, 1537, 1545, 1558, 1567, 1575, 1584, + 1592, 1605, 1614, 1624, 1631, 1641, 1651, 1661, 1671, 1681, + 1691, 1701, 1711, 1718, 1725, 1732, 1741, 1750, 1759, 1768, + 1775, 1785, 1805, 1812, 1830, 1843, 1856, 1865, 1874, 1883, + 1892, 1902, 1912, 1923, 1932, 1941, 1950, 1959, 1968, 1977, + 1986, 1999, 2012, 2021, 2028, 2037, 2046, 2055, 2064, 2073, + 2081, 2094, 2102, 2147, 2154, 2169, 2179, 2189, 2196, 2203, + 2210, 2219, 2227, 2241, 2262, 2283, 2295, 2307, 2319, 2328, + 2349, 2359, 2368, 2376, 2384, 2397, 2410, 2425, 2440, 2449, + 2458, 2464, 2473, 2482, 2492, 2502, 2512, 2521, 2531, 2540, + 2553, 2566, 2578, 2592, 2604, 2618, 2627, 2639, 2649, 2656, + 2663, 2672, 2681, 2691, 2701, 2711, 2718, 2725, 2734, 2743, + 2753, 2763, 2770, 2777, 2784, 2792, 2802, 2812, 2822, 2832, + 2842, 2852, 2898, 2908, 2916, 2924, 2939, 2948, 2953, 2954, + 2955, 2955, 2955, 2956, 2956, 2956, 2957, 2957, 2959, 2969, + 2978, 2985, 2992, 2999, 3006, 3013, 3020, 3025, 3026, 3027, + 3027, 3027, 3028, 3028, 3028, 3029, 3030, 3030, 3031, 3031, + 3032, 3032, 3033, 3034, 3035, 3036, 3037, 3038, 3040, 3049, + 3059, 3066, 3073, 3082, 3089, 3096, 3103, 3110, 3119, 3128, + 3135, 3142, 3152, 3162, 3172, 3182, 3192, 3202, 3207, 3208, + 3209, 3211, 3217, 3222, 3223, 3224, 3226, 3232, 3242, 3249, + 3258, 3266, 3271, 3272, 3274, 3274, 3274, 3275, 3275, 3276, + 3277, 3278, 3279, 3280, 3282, 3292, 3301, 3308, 3317, 3324, + 3333, 3341, 3354, 3362, 3375, 3380, 3381, 3382, 3382, 3383, + 3383, 3383, 3384, 3386, 3398, 3410, 3422, 3437, 3450, 3463, + 3474, 3479, 3480, 3481, 3481, 3483, 3498 }; #endif @@ -2045,17 +2049,18 @@ static const char *const yytname[] = "VAR_RPZ_ACTION_OVERRIDE", "VAR_RPZ_CNAME_OVERRIDE", "VAR_RPZ_LOG", "VAR_RPZ_LOG_NAME", "VAR_DYNLIB", "VAR_DYNLIB_FILE", "VAR_EDNS_CLIENT_STRING", "VAR_EDNS_CLIENT_STRING_OPCODE", "VAR_NSID", - "VAR_ZONEMD_PERMISSIVE_MODE", "VAR_ZONEMD_REJECT_ABSENCE", "$accept", - "toplevelvars", "toplevelvar", "force_toplevel", "serverstart", - "contents_server", "content_server", "stubstart", "contents_stub", - "content_stub", "forwardstart", "contents_forward", "content_forward", - "viewstart", "contents_view", "content_view", "authstart", - "contents_auth", "content_auth", "rpz_tag", "rpz_action_override", - "rpz_cname_override", "rpz_log", "rpz_log_name", "rpzstart", - "contents_rpz", "content_rpz", "server_num_threads", "server_verbosity", - "server_statistics_interval", "server_statistics_cumulative", - "server_extended_statistics", "server_shm_enable", "server_shm_key", - "server_port", "server_send_client_subnet", "server_client_subnet_zone", + "VAR_ZONEMD_PERMISSIVE_MODE", "VAR_ZONEMD_CHECK", + "VAR_ZONEMD_REJECT_ABSENCE", "$accept", "toplevelvars", "toplevelvar", + "force_toplevel", "serverstart", "contents_server", "content_server", + "stubstart", "contents_stub", "content_stub", "forwardstart", + "contents_forward", "content_forward", "viewstart", "contents_view", + "content_view", "authstart", "contents_auth", "content_auth", "rpz_tag", + "rpz_action_override", "rpz_cname_override", "rpz_log", "rpz_log_name", + "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", @@ -2148,11 +2153,11 @@ static const char *const yytname[] = "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_zonemd_reject_absence", "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", + "auth_zonemd_check", "auth_zonemd_reject_absence", "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", @@ -2226,7 +2231,7 @@ static const yytype_int16 yytoknum[] = 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, - 565, 566, 567, 568 + 565, 566, 567, 568, 569 }; #endif @@ -2266,10 +2271,10 @@ static const yytype_int16 yypact[] = 210, 211, 212, 213, 215, 216, 217, 219, 225, 226, 227, 228, 229, 231, 232, 234, 240, 241, 242, 243, 244, 245, 247, 248, 249, 250, 251, 252, 253, 255, - 256, 257, 258, 260, 261, 262, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 288, 289, 290, 292, 293, 294, - 296, 330, 331, 332, 333, 337, 338, 339, 381, 382, + 256, 257, 258, 261, 262, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 288, 289, 290, 292, 293, 294, 296, + 330, 331, 332, 333, 337, 338, 339, 381, 382, 383, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, @@ -2291,57 +2296,57 @@ static const yytype_int16 yypact[] = -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, 383, 384, 385, 386, - 387, 388, 389, -299, -299, -299, -299, -299, -299, -299, - -299, 395, 399, 400, 426, 427, 428, -299, -299, -299, - -299, -299, -299, -299, 437, 450, 451, 452, 453, 454, - 455, -299, -299, -299, -299, -299, -299, -299, -299, 456, - 457, 458, 459, 460, 461, 462, 463, 464, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, 465, 466, - 467, 468, 469, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, 509, 511, 528, 529, 530, 531, - 532, 533, -299, -299, -299, -299, -299, -299, -299, -299, - -299, 534, 535, 536, 537, 538, 549, 550, 551, 552, + -299, -299, -299, -299, -299, -299, 384, 385, 386, 387, + 388, 389, 395, -299, -299, -299, -299, -299, -299, -299, + -299, 399, 400, 426, 427, 428, 437, -299, -299, -299, + -299, -299, -299, -299, 450, 451, 452, 453, 454, 455, + 456, -299, -299, -299, -299, -299, -299, -299, -299, 457, + 458, 459, 460, 461, 462, 463, 464, 465, 466, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, + 467, 468, 469, 509, 511, -299, -299, -299, -299, -299, + -299, -299, -299, -299, -299, -299, 528, 529, 530, 531, + 532, 533, 534, 535, -299, -299, -299, -299, -299, -299, + -299, -299, -299, 536, 537, 538, 549, 550, 551, 552, 553, 554, 555, 557, 558, 559, 560, 561, 562, 563, + 566, 569, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - 566, -299, -299, 569, -299, -299, 572, 573, 582, 583, - 584, 586, 587, 588, 589, 590, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, 591, 592, 593, - 598, 599, 600, -299, -299, -299, -299, -299, -299, -299, - 601, 602, -299, -299, -299, -299, -299, -299, -299, -299, + -299, -299, 572, -299, -299, 573, -299, -299, 582, 583, + 584, 586, 587, 588, 589, 590, 591, 592, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, 593, + 598, 599, 600, 601, 602, -299, -299, -299, -299, -299, + -299, -299, 603, 604, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, 603, 604, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, 605, 606, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, 605, 606, 607, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, 608, 609, -299, + -299, -299, -299, -299, -299, -299, 607, 608, 609, -299, + -299, -299, -299, -299, -299, -299, -299, -299, -299, 610, + 611, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, 610, 611, - 612, 613, 614, 615, -299, -299, -299, -299, -299, -299, + 612, 613, 614, 615, 616, 617, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, 616, -299, -299, -299, - -299, -299, -299, -299, -299, -299, 617, -299, -299, -299, + -299, -299, -299, -299, -299, -299, -299, -299, 618, -299, + -299, -299, -299, -299, -299, -299, -299, -299, 619, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, 618, -299, -299, 619, 620, -299, + -299, -299, -299, -299, -299, -299, 620, -299, -299, 621, + 622, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - 621, 622, 623, -299, -299, -299, -299, -299, -299, -299, - -299, -299 + -299, -299, -299, 623, 624, 625, -299, -299, -299, -299, + -299, -299, -299, -299, -299 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -2349,10 +2354,10 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_int16 yydefact[] = { - 2, 0, 1, 18, 19, 237, 247, 535, 595, 554, - 256, 609, 632, 266, 648, 283, 600, 3, 17, 21, - 239, 249, 258, 268, 285, 537, 556, 597, 602, 611, - 634, 650, 4, 5, 6, 10, 14, 15, 8, 9, + 2, 0, 1, 18, 19, 237, 247, 537, 597, 556, + 256, 611, 634, 266, 650, 284, 602, 3, 17, 21, + 239, 249, 258, 268, 286, 539, 558, 599, 604, 613, + 636, 652, 4, 5, 6, 10, 14, 15, 8, 9, 7, 16, 11, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2401,52 +2406,52 @@ static const yytype_int16 yydefact[] = 243, 0, 0, 0, 0, 0, 0, 248, 250, 251, 252, 253, 254, 255, 0, 0, 0, 0, 0, 0, 0, 257, 259, 260, 263, 264, 261, 265, 262, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 267, 269, - 270, 271, 272, 276, 277, 273, 274, 275, 0, 0, - 0, 0, 0, 288, 292, 293, 294, 295, 284, 286, - 287, 289, 290, 291, 0, 0, 0, 0, 0, 0, - 0, 0, 536, 538, 540, 539, 545, 541, 542, 543, - 544, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 267, + 269, 270, 271, 272, 276, 277, 278, 273, 274, 275, + 0, 0, 0, 0, 0, 289, 293, 294, 295, 296, + 285, 287, 288, 290, 291, 292, 0, 0, 0, 0, + 0, 0, 0, 0, 538, 540, 542, 541, 547, 543, + 544, 545, 546, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 555, 557, 559, 558, 560, 561, 562, 563, 564, 565, + 0, 0, 557, 559, 561, 560, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, - 0, 596, 598, 0, 601, 603, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 610, 612, 613, 614, - 616, 617, 615, 618, 619, 620, 621, 0, 0, 0, - 0, 0, 0, 633, 635, 636, 637, 638, 639, 640, - 0, 0, 649, 651, 652, 297, 296, 303, 316, 314, - 326, 322, 323, 327, 324, 325, 328, 329, 330, 334, - 335, 365, 366, 367, 368, 369, 395, 396, 397, 403, - 404, 319, 405, 406, 409, 407, 408, 412, 413, 414, - 428, 380, 381, 383, 384, 415, 431, 374, 376, 432, - 438, 439, 440, 320, 394, 458, 459, 375, 452, 358, - 315, 370, 429, 435, 416, 0, 0, 462, 321, 298, - 357, 420, 299, 317, 318, 371, 372, 460, 418, 422, - 423, 332, 331, 300, 463, 398, 427, 359, 379, 433, - 434, 437, 451, 373, 456, 454, 455, 386, 393, 424, - 425, 387, 388, 417, 442, 360, 361, 364, 336, 338, - 333, 339, 340, 341, 342, 349, 350, 351, 352, 353, - 354, 355, 464, 465, 467, 399, 400, 401, 402, 410, - 411, 468, 469, 470, 0, 0, 0, 419, 389, 391, - 605, 479, 483, 481, 480, 484, 482, 0, 0, 487, - 488, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 421, 436, 457, 492, 493, 390, 471, 0, 0, - 0, 0, 0, 0, 443, 444, 445, 446, 447, 448, - 449, 450, 606, 382, 377, 441, 356, 301, 302, 378, - 494, 495, 496, 497, 498, 500, 499, 501, 502, 503, - 337, 344, 489, 491, 490, 343, 0, 363, 426, 466, - 362, 392, 345, 346, 348, 347, 0, 505, 385, 453, - 506, 507, 508, 512, 511, 509, 510, 513, 514, 515, - 516, 518, 517, 528, 0, 532, 533, 0, 0, 534, - 519, 526, 520, 521, 522, 525, 527, 523, 524, 278, - 279, 280, 281, 282, 546, 548, 547, 550, 551, 552, - 553, 549, 576, 578, 579, 580, 581, 582, 583, 584, - 585, 586, 577, 587, 588, 589, 590, 591, 592, 593, - 594, 599, 604, 622, 623, 624, 627, 625, 626, 628, - 629, 630, 631, 641, 642, 643, 644, 645, 646, 653, - 654, 430, 461, 478, 607, 608, 485, 486, 472, 473, - 0, 0, 0, 477, 647, 504, 529, 530, 531, 476, - 474, 475 + 576, 577, 0, 598, 600, 0, 603, 605, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 612, 614, + 615, 616, 618, 619, 617, 620, 621, 622, 623, 0, + 0, 0, 0, 0, 0, 635, 637, 638, 639, 640, + 641, 642, 0, 0, 651, 653, 654, 298, 297, 304, + 317, 315, 327, 323, 324, 328, 325, 326, 329, 330, + 331, 335, 336, 366, 367, 368, 369, 370, 396, 397, + 398, 404, 405, 320, 406, 407, 410, 408, 409, 413, + 414, 415, 429, 381, 382, 384, 385, 416, 432, 375, + 377, 433, 439, 440, 441, 321, 395, 459, 460, 376, + 453, 359, 316, 371, 430, 436, 417, 0, 0, 463, + 322, 299, 358, 421, 300, 318, 319, 372, 373, 461, + 419, 423, 424, 333, 332, 301, 464, 399, 428, 360, + 380, 434, 435, 438, 452, 374, 457, 455, 456, 387, + 394, 425, 426, 388, 389, 418, 443, 361, 362, 365, + 337, 339, 334, 340, 341, 342, 343, 350, 351, 352, + 353, 354, 355, 356, 465, 466, 468, 400, 401, 402, + 403, 411, 412, 469, 470, 471, 0, 0, 0, 420, + 390, 392, 607, 480, 484, 482, 481, 485, 483, 0, + 0, 488, 489, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 422, 437, 458, 493, 494, 391, 472, + 0, 0, 0, 0, 0, 0, 444, 445, 446, 447, + 448, 449, 450, 451, 608, 383, 378, 442, 357, 302, + 303, 379, 495, 496, 497, 498, 499, 501, 500, 502, + 503, 504, 338, 345, 490, 492, 491, 344, 0, 364, + 427, 467, 363, 393, 346, 347, 349, 348, 0, 506, + 386, 454, 507, 508, 509, 513, 512, 510, 511, 514, + 515, 516, 517, 519, 518, 530, 0, 534, 535, 0, + 0, 536, 520, 528, 521, 522, 523, 527, 529, 524, + 525, 526, 279, 280, 281, 282, 283, 548, 550, 549, + 552, 553, 554, 555, 551, 578, 580, 581, 582, 583, + 584, 585, 586, 587, 588, 579, 589, 590, 591, 592, + 593, 594, 595, 596, 601, 606, 624, 625, 626, 629, + 627, 628, 630, 631, 632, 633, 643, 644, 645, 646, + 647, 648, 655, 656, 431, 462, 479, 609, 610, 486, + 487, 473, 474, 0, 0, 0, 478, 649, 505, 531, + 532, 533, 477, 475, 476 }; /* YYPGOTO[NTERM-NUM]. */ @@ -2477,7 +2482,7 @@ static const yytype_int16 yypgoto[] = -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - 268, 597, 624, 625, 626, -299, -299, -299, -299, -299, + 268, 626, 627, 628, 629, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, @@ -2485,15 +2490,15 @@ static const yytype_int16 yypgoto[] = -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299 + -299, -299, -299, -299, -299, -299, -299, -299, -299, -299 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { -1, 1, 17, 18, 19, 32, 260, 20, 33, 483, - 21, 34, 497, 22, 35, 511, 23, 36, 528, 543, - 544, 545, 546, 547, 24, 37, 548, 261, 262, 263, + 21, 34, 497, 22, 35, 511, 23, 36, 529, 545, + 546, 547, 548, 549, 24, 37, 550, 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, @@ -2516,15 +2521,15 @@ static const yytype_int16 yydefgoto[] = 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 484, 485, 486, 487, 488, 489, 490, 498, 499, 500, 501, 502, 503, - 529, 530, 531, 532, 533, 534, 535, 536, 537, 512, - 513, 514, 515, 516, 517, 518, 25, 38, 562, 563, - 564, 565, 566, 567, 568, 569, 570, 26, 39, 590, - 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, - 601, 602, 603, 604, 605, 606, 607, 608, 609, 27, - 40, 611, 612, 28, 41, 614, 615, 471, 472, 473, - 474, 29, 42, 626, 627, 628, 629, 630, 631, 632, - 633, 634, 635, 636, 30, 43, 643, 644, 645, 646, - 647, 648, 649, 475, 31, 44, 652, 653, 654 + 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, + 512, 513, 514, 515, 516, 517, 518, 25, 38, 564, + 565, 566, 567, 568, 569, 570, 571, 572, 26, 39, + 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, + 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, + 27, 40, 613, 614, 28, 41, 616, 617, 471, 472, + 473, 474, 29, 42, 628, 629, 630, 631, 632, 633, + 634, 635, 636, 637, 638, 30, 43, 645, 646, 647, + 648, 649, 650, 651, 475, 31, 44, 654, 655, 656 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -2532,73 +2537,73 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 2, 519, 476, 504, 477, 478, 610, 491, 650, 651, - 613, 3, 4, 655, 656, 492, 493, 519, 571, 572, - 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, - 583, 584, 585, 586, 587, 588, 589, 657, 658, 505, - 506, 659, 660, 661, 662, 663, 5, 664, 665, 666, - 667, 668, 6, 616, 617, 618, 619, 620, 621, 622, - 623, 624, 625, 669, 670, 671, 507, 479, 554, 555, - 556, 557, 558, 559, 560, 561, 637, 638, 639, 640, - 641, 642, 672, 673, 674, 675, 676, 677, 678, 679, - 680, 681, 682, 683, 684, 685, 7, 686, 687, 480, - 688, 689, 690, 494, 691, 495, 692, 693, 694, 481, - 695, 696, 697, 698, 8, 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, 508, 509, 728, 729, 730, 731, - 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, - 742, 743, 744, 745, 746, 9, 747, 748, 749, 750, - 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, - 761, 762, 763, 764, 510, 765, 766, 767, 768, 769, - 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, - 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, - 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, - 800, 801, 802, 803, 10, 804, 805, 806, 520, 807, - 521, 522, 523, 524, 525, 808, 809, 810, 811, 812, - 526, 813, 814, 11, 815, 482, 521, 522, 523, 496, - 816, 817, 818, 819, 820, 821, 526, 822, 823, 824, - 825, 826, 827, 828, 12, 829, 830, 831, 832, 527, - 833, 834, 835, 13, 538, 539, 540, 541, 542, 836, - 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, - 847, 848, 849, 850, 851, 852, 853, 14, 854, 855, - 856, 15, 857, 858, 859, 549, 860, 16, 45, 46, + 2, 519, 476, 504, 477, 478, 612, 491, 652, 653, + 615, 3, 4, 657, 658, 492, 493, 519, 573, 574, + 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, + 585, 586, 587, 588, 589, 590, 591, 659, 660, 505, + 506, 661, 662, 663, 664, 665, 5, 666, 667, 668, + 669, 670, 6, 618, 619, 620, 621, 622, 623, 624, + 625, 626, 627, 671, 672, 673, 507, 479, 556, 557, + 558, 559, 560, 561, 562, 563, 639, 640, 641, 642, + 643, 644, 674, 675, 676, 677, 678, 679, 680, 681, + 682, 683, 684, 685, 686, 687, 7, 688, 689, 480, + 690, 691, 692, 494, 693, 495, 694, 695, 696, 481, + 697, 698, 699, 700, 8, 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, 508, 509, 730, 731, 732, 733, + 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, + 744, 745, 746, 747, 748, 9, 749, 750, 751, 752, + 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, + 763, 764, 765, 766, 510, 767, 768, 769, 770, 771, + 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, + 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, + 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, + 802, 803, 804, 805, 10, 806, 807, 808, 520, 809, + 521, 522, 523, 524, 525, 810, 811, 812, 813, 814, + 526, 815, 816, 11, 817, 482, 521, 522, 523, 496, + 818, 819, 820, 821, 822, 823, 526, 824, 825, 826, + 827, 828, 829, 830, 12, 831, 832, 833, 834, 527, + 528, 835, 836, 13, 540, 541, 542, 543, 544, 837, + 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, + 848, 849, 850, 851, 852, 853, 854, 14, 855, 856, + 857, 15, 858, 859, 860, 551, 861, 16, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 861, 862, 863, 864, 77, 78, 79, 865, 866, 867, + 862, 863, 864, 865, 77, 78, 79, 866, 867, 868, 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, 868, 869, 870, 871, 872, 873, 874, 875, 876, - 121, 122, 123, 124, 125, 877, 126, 127, 128, 878, - 879, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 120, 869, 870, 871, 872, 873, 874, 875, 876, 877, + 121, 122, 123, 124, 125, 878, 126, 127, 128, 879, + 880, 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, 880, 881, 882, 154, - 155, 156, 157, 158, 159, 160, 161, 883, 162, 163, + 148, 149, 150, 151, 152, 153, 881, 882, 883, 154, + 155, 156, 157, 158, 159, 160, 161, 884, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, - 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, + 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, + 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 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, 904, - 213, 905, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 906, 907, - 908, 909, 910, 911, 912, 913, 914, 915, 916, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 917, - 918, 919, 920, 921, 922, 923, 240, 924, 925, 926, - 927, 928, 929, 930, 241, 242, 931, 243, 244, 932, - 245, 246, 933, 934, 247, 248, 249, 250, 251, 252, - 253, 254, 935, 936, 937, 255, 938, 939, 940, 941, - 942, 943, 944, 945, 256, 257, 258, 259, 946, 947, - 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, - 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, - 968, 969, 970, 971, 550, 0, 0, 0, 0, 0, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 905, + 213, 906, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 907, 908, + 909, 910, 911, 912, 913, 914, 915, 916, 917, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 918, + 919, 920, 921, 922, 923, 924, 240, 925, 926, 927, + 928, 929, 930, 931, 241, 242, 932, 243, 244, 933, + 245, 246, 934, 935, 247, 248, 249, 250, 251, 252, + 253, 254, 936, 937, 938, 255, 939, 940, 941, 942, + 943, 944, 945, 946, 256, 257, 258, 259, 947, 948, + 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, + 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, + 969, 970, 971, 972, 973, 974, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 551, 552, 553 + 0, 0, 0, 552, 553, 554, 555 }; static const yytype_int16 yycheck[] = @@ -2630,7 +2635,7 @@ static const yytype_int16 yycheck[] = 284, 10, 10, 243, 10, 288, 274, 275, 276, 287, 10, 10, 10, 10, 10, 10, 284, 10, 10, 10, 10, 10, 10, 10, 264, 10, 10, 10, 10, 313, - 10, 10, 10, 273, 302, 303, 304, 305, 306, 10, + 314, 10, 10, 273, 302, 303, 304, 305, 306, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 297, 10, 10, 10, 301, 10, 10, 10, 37, 10, 307, 13, 14, @@ -2666,21 +2671,21 @@ static const yytype_int16 yycheck[] = 10, 10, 10, 10, 309, 310, 311, 312, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 37, -1, -1, -1, -1, -1, + 10, 10, 10, 10, 10, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 37, 37, 37 + -1, -1, -1, 37, 37, 37, 37 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_int16 yystos[] = { - 0, 315, 0, 11, 12, 46, 52, 96, 114, 165, - 224, 243, 264, 273, 297, 301, 307, 316, 317, 318, - 321, 324, 327, 330, 338, 580, 591, 613, 617, 625, - 638, 648, 319, 322, 325, 328, 331, 339, 581, 592, - 614, 618, 626, 639, 649, 13, 14, 15, 16, 17, + 0, 316, 0, 11, 12, 46, 52, 96, 114, 165, + 224, 243, 264, 273, 297, 301, 307, 317, 318, 319, + 322, 325, 328, 331, 339, 582, 593, 615, 619, 627, + 640, 650, 320, 323, 326, 329, 332, 340, 583, 594, + 616, 620, 628, 641, 651, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 49, 50, 51, @@ -2702,46 +2707,46 @@ static const yytype_int16 yystos[] = 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 271, 279, 280, 282, 283, 285, 286, 289, 290, 291, 292, 293, 294, 295, 296, 300, 309, 310, 311, 312, - 320, 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, 541, 542, 543, 544, 545, 546, 547, 548, 549, - 550, 621, 622, 623, 624, 647, 45, 47, 48, 110, - 142, 152, 288, 323, 551, 552, 553, 554, 555, 556, - 557, 45, 53, 54, 141, 143, 287, 326, 558, 559, - 560, 561, 562, 563, 45, 81, 82, 108, 186, 187, - 226, 329, 573, 574, 575, 576, 577, 578, 579, 45, - 272, 274, 275, 276, 277, 278, 284, 313, 332, 564, - 565, 566, 567, 568, 569, 570, 571, 572, 302, 303, - 304, 305, 306, 333, 334, 335, 336, 337, 340, 564, - 565, 566, 567, 568, 97, 98, 99, 100, 101, 102, - 103, 104, 582, 583, 584, 585, 586, 587, 588, 589, - 590, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, + 321, 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, + 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, + 551, 623, 624, 625, 626, 649, 45, 47, 48, 110, + 142, 152, 288, 324, 552, 553, 554, 555, 556, 557, + 558, 45, 53, 54, 141, 143, 287, 327, 559, 560, + 561, 562, 563, 564, 45, 81, 82, 108, 186, 187, + 226, 330, 575, 576, 577, 578, 579, 580, 581, 45, + 272, 274, 275, 276, 277, 278, 284, 313, 314, 333, + 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, + 302, 303, 304, 305, 306, 334, 335, 336, 337, 338, + 341, 565, 566, 567, 568, 569, 97, 98, 99, 100, + 101, 102, 103, 104, 584, 585, 586, 587, 588, 589, + 590, 591, 592, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, - 115, 615, 616, 308, 619, 620, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 627, 628, 629, 630, - 631, 632, 633, 634, 635, 636, 637, 265, 266, 267, - 268, 269, 270, 640, 641, 642, 643, 644, 645, 646, - 298, 299, 650, 651, 652, 10, 10, 10, 10, 10, + 613, 614, 115, 617, 618, 308, 621, 622, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 629, 630, + 631, 632, 633, 634, 635, 636, 637, 638, 639, 265, + 266, 267, 268, 269, 270, 642, 643, 644, 645, 646, + 647, 648, 298, 299, 652, 653, 654, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -2773,42 +2778,42 @@ static const yytype_int16 yystos[] = 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10 + 10, 10, 10, 10, 10 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_int16 yyr1[] = { - 0, 314, 315, 315, 316, 316, 316, 316, 316, 316, - 316, 316, 316, 316, 316, 316, 316, 316, 317, 318, - 319, 319, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 320, 320, 320, 320, 320, 320, 321, 322, 322, - 323, 323, 323, 323, 323, 323, 323, 324, 325, 325, - 326, 326, 326, 326, 326, 326, 327, 328, 328, 329, - 329, 329, 329, 329, 329, 329, 330, 331, 331, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 333, 334, - 335, 336, 337, 338, 339, 339, 340, 340, 340, 340, - 340, 340, 340, 340, 340, 340, 341, 342, 343, 344, + 0, 315, 316, 316, 317, 317, 317, 317, 317, 317, + 317, 317, 317, 317, 317, 317, 317, 317, 318, 319, + 320, 320, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 321, 322, 323, 323, + 324, 324, 324, 324, 324, 324, 324, 325, 326, 326, + 327, 327, 327, 327, 327, 327, 328, 329, 329, 330, + 330, 330, 330, 330, 330, 330, 331, 332, 332, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 334, + 335, 336, 337, 338, 339, 340, 340, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 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, @@ -2832,19 +2837,19 @@ static const yytype_int16 yyr1[] = 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, - 575, 576, 577, 578, 579, 580, 581, 581, 582, 582, - 582, 582, 582, 582, 582, 582, 583, 584, 585, 586, - 587, 588, 589, 590, 591, 592, 592, 593, 593, 593, - 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, - 593, 593, 593, 593, 593, 593, 594, 595, 596, 597, + 575, 576, 577, 578, 579, 580, 581, 582, 583, 583, + 584, 584, 584, 584, 584, 584, 584, 584, 585, 586, + 587, 588, 589, 590, 591, 592, 593, 594, 594, 595, + 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, + 595, 595, 595, 595, 595, 595, 595, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, - 608, 609, 610, 611, 612, 613, 614, 614, 615, 616, - 617, 618, 618, 619, 620, 621, 622, 623, 624, 625, - 626, 626, 627, 627, 627, 627, 627, 627, 627, 627, - 627, 627, 628, 629, 630, 631, 632, 633, 634, 635, - 636, 637, 638, 639, 639, 640, 640, 640, 640, 640, - 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, - 649, 650, 650, 651, 652 + 608, 609, 610, 611, 612, 613, 614, 615, 616, 616, + 617, 618, 619, 620, 620, 621, 622, 623, 624, 625, + 626, 627, 628, 628, 629, 629, 629, 629, 629, 629, + 629, 629, 629, 629, 630, 631, 632, 633, 634, 635, + 636, 637, 638, 639, 640, 641, 641, 642, 642, 642, + 642, 642, 642, 643, 644, 645, 646, 647, 648, 649, + 650, 651, 651, 652, 652, 653, 654 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -2877,9 +2882,9 @@ static const yytype_int8 yyr2[] = 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, 1, 2, 2, - 2, 2, 2, 1, 2, 0, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, + 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, @@ -2893,29 +2898,29 @@ static const yytype_int8 yyr2[] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 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, 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, 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, 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, + 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, 3, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 3, 3, 3, 2, 2, 2, 1, 2, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 1, 2, 0, 1, 2, - 1, 2, 0, 1, 2, 2, 2, 3, 3, 1, - 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 1, 2, 0, 1, 1, 1, 1, 1, - 1, 2, 2, 2, 2, 2, 2, 3, 1, 2, - 0, 1, 1, 2, 2 + 2, 2, 2, 2, 2, 2, 2, 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 }; @@ -3400,7 +3405,7 @@ yyreduce: { OUTYY(("\nP(force-toplevel)\n")); } -#line 3404 "util/configparser.c" +#line 3409 "util/configparser.c" break; case 19: @@ -3408,7 +3413,7 @@ yyreduce: { OUTYY(("\nP(server:)\n")); } -#line 3412 "util/configparser.c" +#line 3417 "util/configparser.c" break; case 237: @@ -3423,7 +3428,7 @@ yyreduce: } else yyerror("out of memory"); } -#line 3427 "util/configparser.c" +#line 3432 "util/configparser.c" break; case 247: @@ -3438,7 +3443,7 @@ yyreduce: } else yyerror("out of memory"); } -#line 3442 "util/configparser.c" +#line 3447 "util/configparser.c" break; case 256: @@ -3455,7 +3460,7 @@ yyreduce: } else yyerror("out of memory"); } -#line 3459 "util/configparser.c" +#line 3464 "util/configparser.c" break; case 266: @@ -3471,16 +3476,17 @@ yyreduce: s->for_downstream = 1; s->for_upstream = 1; s->fallback_enabled = 0; + s->zonemd_check = 0; s->zonemd_reject_absence = 0; s->isrpz = 0; } else yyerror("out of memory"); } -#line 3480 "util/configparser.c" +#line 3486 "util/configparser.c" break; - case 278: -#line 387 "./util/configparser.y" + case 279: +#line 388 "./util/configparser.y" { uint8_t* bitlist; size_t len = 0; @@ -3497,11 +3503,11 @@ yyreduce: } } -#line 3501 "util/configparser.c" +#line 3507 "util/configparser.c" break; - case 279: -#line 406 "./util/configparser.y" + case 280: +#line 407 "./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 && @@ -3516,21 +3522,21 @@ yyreduce: cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); } } -#line 3520 "util/configparser.c" +#line 3526 "util/configparser.c" break; - case 280: -#line 423 "./util/configparser.y" + case 281: +#line 424 "./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 3530 "util/configparser.c" +#line 3536 "util/configparser.c" break; - case 281: -#line 431 "./util/configparser.y" + case 282: +#line 432 "./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) @@ -3538,21 +3544,21 @@ yyreduce: else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3542 "util/configparser.c" +#line 3548 "util/configparser.c" break; - case 282: -#line 441 "./util/configparser.y" + case 283: +#line 442 "./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 3552 "util/configparser.c" +#line 3558 "util/configparser.c" break; - case 283: -#line 449 "./util/configparser.y" + case 284: +#line 450 "./util/configparser.y" { struct config_auth* s; OUTYY(("\nP(rpz:)\n")); @@ -3568,11 +3574,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 3572 "util/configparser.c" +#line 3578 "util/configparser.c" break; - case 296: -#line 472 "./util/configparser.y" + case 297: +#line 473 "./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) @@ -3580,11 +3586,11 @@ yyreduce: else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3584 "util/configparser.c" +#line 3590 "util/configparser.c" break; - case 297: -#line 481 "./util/configparser.y" + case 298: +#line 482 "./util/configparser.y" { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3592,11 +3598,11 @@ yyreduce: else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3596 "util/configparser.c" +#line 3602 "util/configparser.c" break; - case 298: -#line 490 "./util/configparser.y" + case 299: +#line 491 "./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) @@ -3606,11 +3612,11 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3610 "util/configparser.c" +#line 3616 "util/configparser.c" break; - case 299: -#line 501 "./util/configparser.y" + case 300: +#line 502 "./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) @@ -3618,11 +3624,11 @@ yyreduce: else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3622 "util/configparser.c" +#line 3628 "util/configparser.c" break; - case 300: -#line 510 "./util/configparser.y" + case 301: +#line 511 "./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) @@ -3630,11 +3636,11 @@ yyreduce: else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3634 "util/configparser.c" +#line 3640 "util/configparser.c" break; - case 301: -#line 519 "./util/configparser.y" + case 302: +#line 520 "./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) @@ -3642,11 +3648,11 @@ yyreduce: else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3646 "util/configparser.c" +#line 3652 "util/configparser.c" break; - case 302: -#line 528 "./util/configparser.y" + case 303: +#line 529 "./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) @@ -3656,11 +3662,11 @@ yyreduce: else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3660 "util/configparser.c" +#line 3666 "util/configparser.c" break; - case 303: -#line 539 "./util/configparser.y" + case 304: +#line 540 "./util/configparser.y" { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3668,11 +3674,11 @@ yyreduce: else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3672 "util/configparser.c" +#line 3678 "util/configparser.c" break; - case 304: -#line 548 "./util/configparser.y" + case 305: +#line 549 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str))); @@ -3683,11 +3689,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3687 "util/configparser.c" +#line 3693 "util/configparser.c" break; - case 305: -#line 560 "./util/configparser.y" + case 306: +#line 561 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str))); @@ -3699,11 +3705,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3703 "util/configparser.c" +#line 3709 "util/configparser.c" break; - case 306: -#line 574 "./util/configparser.y" + case 307: +#line 575 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str))); @@ -3717,11 +3723,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3721 "util/configparser.c" +#line 3727 "util/configparser.c" break; - case 307: -#line 589 "./util/configparser.y" + case 308: +#line 590 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str))); @@ -3731,11 +3737,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3735 "util/configparser.c" +#line 3741 "util/configparser.c" break; - case 308: -#line 600 "./util/configparser.y" + case 309: +#line 601 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -3751,11 +3757,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3755 "util/configparser.c" +#line 3761 "util/configparser.c" break; - case 309: -#line 617 "./util/configparser.y" + case 310: +#line 618 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3771,11 +3777,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3775 "util/configparser.c" +#line 3781 "util/configparser.c" break; - case 310: -#line 634 "./util/configparser.y" + case 311: +#line 635 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -3791,11 +3797,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3795 "util/configparser.c" +#line 3801 "util/configparser.c" break; - case 311: -#line 651 "./util/configparser.y" + case 312: +#line 652 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3811,11 +3817,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3815 "util/configparser.c" +#line 3821 "util/configparser.c" break; - case 312: -#line 668 "./util/configparser.y" + case 313: +#line 669 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str))); @@ -3829,11 +3835,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3833 "util/configparser.c" +#line 3839 "util/configparser.c" break; - case 313: -#line 683 "./util/configparser.y" + case 314: +#line 684 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str))); @@ -3847,11 +3853,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3851 "util/configparser.c" +#line 3857 "util/configparser.c" break; - case 314: -#line 698 "./util/configparser.y" + case 315: +#line 699 "./util/configparser.y" { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_ifs == 0) @@ -3863,11 +3869,11 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 3867 "util/configparser.c" +#line 3873 "util/configparser.c" break; - case 315: -#line 711 "./util/configparser.y" + case 316: +#line 712 "./util/configparser.y" { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_out_ifs == 0) @@ -3881,11 +3887,11 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 3885 "util/configparser.c" +#line 3891 "util/configparser.c" break; - case 316: -#line 726 "./util/configparser.y" + case 317: +#line 727 "./util/configparser.y" { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3893,11 +3899,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3897 "util/configparser.c" +#line 3903 "util/configparser.c" break; - case 317: -#line 735 "./util/configparser.y" + case 318: +#line 736 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 1, @@ -3905,11 +3911,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3909 "util/configparser.c" +#line 3915 "util/configparser.c" break; - case 318: -#line 744 "./util/configparser.y" + case 319: +#line 745 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 0, @@ -3917,11 +3923,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3921 "util/configparser.c" +#line 3927 "util/configparser.c" break; - case 319: -#line 753 "./util/configparser.y" + case 320: +#line 754 "./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) @@ -3929,11 +3935,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3933 "util/configparser.c" +#line 3939 "util/configparser.c" break; - case 320: -#line 762 "./util/configparser.y" + case 321: +#line 763 "./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) @@ -3941,11 +3947,11 @@ yyreduce: else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3945 "util/configparser.c" +#line 3951 "util/configparser.c" break; - case 321: -#line 771 "./util/configparser.y" + case 322: +#line 772 "./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) @@ -3953,11 +3959,11 @@ yyreduce: else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3957 "util/configparser.c" +#line 3963 "util/configparser.c" break; - case 322: -#line 780 "./util/configparser.y" + case 323: +#line 781 "./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) @@ -3965,11 +3971,11 @@ yyreduce: else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3969 "util/configparser.c" +#line 3975 "util/configparser.c" break; - case 323: -#line 789 "./util/configparser.y" + case 324: +#line 790 "./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) @@ -3977,11 +3983,11 @@ yyreduce: else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3981 "util/configparser.c" +#line 3987 "util/configparser.c" break; - case 324: -#line 798 "./util/configparser.y" + case 325: +#line 799 "./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) @@ -3989,11 +3995,11 @@ yyreduce: else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3993 "util/configparser.c" +#line 3999 "util/configparser.c" break; - case 325: -#line 807 "./util/configparser.y" + case 326: +#line 808 "./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) @@ -4001,11 +4007,11 @@ yyreduce: else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4005 "util/configparser.c" +#line 4011 "util/configparser.c" break; - case 326: -#line 816 "./util/configparser.y" + case 327: +#line 817 "./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) @@ -4013,11 +4019,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4017 "util/configparser.c" +#line 4023 "util/configparser.c" break; - case 327: -#line 825 "./util/configparser.y" + case 328: +#line 826 "./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) @@ -4025,11 +4031,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4029 "util/configparser.c" +#line 4035 "util/configparser.c" break; - case 328: -#line 834 "./util/configparser.y" + case 329: +#line 835 "./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) @@ -4037,11 +4043,11 @@ yyreduce: else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4041 "util/configparser.c" +#line 4047 "util/configparser.c" break; - case 329: -#line 843 "./util/configparser.y" + case 330: +#line 844 "./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) @@ -4049,11 +4055,11 @@ yyreduce: else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4053 "util/configparser.c" +#line 4059 "util/configparser.c" break; - case 330: -#line 852 "./util/configparser.y" + case 331: +#line 853 "./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) @@ -4065,11 +4071,11 @@ yyreduce: else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4069 "util/configparser.c" +#line 4075 "util/configparser.c" break; - case 331: -#line 865 "./util/configparser.y" + case 332: +#line 866 "./util/configparser.y" { OUTYY(("P(server_max_reuse_tcp_queries:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4079,11 +4085,11 @@ yyreduce: else cfg_parser->cfg->max_reuse_tcp_queries = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4083 "util/configparser.c" +#line 4089 "util/configparser.c" break; - case 332: -#line 876 "./util/configparser.y" + case 333: +#line 877 "./util/configparser.y" { OUTYY(("P(server_tcp_reuse_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4093,11 +4099,11 @@ yyreduce: else cfg_parser->cfg->tcp_reuse_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4097 "util/configparser.c" +#line 4103 "util/configparser.c" break; - case 333: -#line 887 "./util/configparser.y" + case 334: +#line 888 "./util/configparser.y" { OUTYY(("P(server_tcp_auth_query_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4107,11 +4113,11 @@ yyreduce: else cfg_parser->cfg->tcp_auth_query_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4111 "util/configparser.c" +#line 4117 "util/configparser.c" break; - case 334: -#line 898 "./util/configparser.y" + case 335: +#line 899 "./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) @@ -4119,11 +4125,11 @@ yyreduce: else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4123 "util/configparser.c" +#line 4129 "util/configparser.c" break; - case 335: -#line 907 "./util/configparser.y" + case 336: +#line 908 "./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) @@ -4135,11 +4141,11 @@ yyreduce: else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4139 "util/configparser.c" +#line 4145 "util/configparser.c" break; - case 336: -#line 920 "./util/configparser.y" + case 337: +#line 921 "./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) @@ -4147,11 +4153,11 @@ yyreduce: else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4151 "util/configparser.c" +#line 4157 "util/configparser.c" break; - case 337: -#line 929 "./util/configparser.y" + case 338: +#line 930 "./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) @@ -4159,11 +4165,11 @@ yyreduce: else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4163 "util/configparser.c" +#line 4169 "util/configparser.c" break; - case 338: -#line 938 "./util/configparser.y" + case 339: +#line 939 "./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) @@ -4171,31 +4177,31 @@ yyreduce: else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4175 "util/configparser.c" +#line 4181 "util/configparser.c" break; - case 339: -#line 947 "./util/configparser.y" + case 340: +#line 948 "./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 4185 "util/configparser.c" +#line 4191 "util/configparser.c" break; - case 340: -#line 954 "./util/configparser.y" + case 341: +#line 955 "./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 4195 "util/configparser.c" +#line 4201 "util/configparser.c" break; - case 341: -#line 961 "./util/configparser.y" + case 342: +#line 962 "./util/configparser.y" { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4203,21 +4209,21 @@ yyreduce: else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4207 "util/configparser.c" +#line 4213 "util/configparser.c" break; - case 342: -#line 970 "./util/configparser.y" + case 343: +#line 971 "./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 4217 "util/configparser.c" +#line 4223 "util/configparser.c" break; - case 343: -#line 977 "./util/configparser.y" + case 344: +#line 978 "./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) @@ -4225,53 +4231,53 @@ yyreduce: else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4229 "util/configparser.c" +#line 4235 "util/configparser.c" break; - case 344: -#line 986 "./util/configparser.y" + case 345: +#line 987 "./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 4240 "util/configparser.c" +#line 4246 "util/configparser.c" break; - case 345: -#line 994 "./util/configparser.y" + case 346: +#line 995 "./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 4250 "util/configparser.c" +#line 4256 "util/configparser.c" break; - case 346: -#line 1001 "./util/configparser.y" + case 347: +#line 1002 "./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 4260 "util/configparser.c" +#line 4266 "util/configparser.c" break; - case 347: -#line 1008 "./util/configparser.y" + case 348: +#line 1009 "./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 4271 "util/configparser.c" +#line 4277 "util/configparser.c" break; - case 348: -#line 1016 "./util/configparser.y" + case 349: +#line 1017 "./util/configparser.y" { OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4279,11 +4285,11 @@ yyreduce: else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4283 "util/configparser.c" +#line 4289 "util/configparser.c" break; - case 349: -#line 1025 "./util/configparser.y" + case 350: +#line 1026 "./util/configparser.y" { OUTYY(("P(server_https_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4291,11 +4297,11 @@ yyreduce: else cfg_parser->cfg->https_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4295 "util/configparser.c" +#line 4301 "util/configparser.c" break; - case 350: -#line 1033 "./util/configparser.y" + case 351: +#line 1034 "./util/configparser.y" { OUTYY(("P(server_http_endpoint:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->http_endpoint); @@ -4311,11 +4317,11 @@ yyreduce: cfg_parser->cfg->http_endpoint = (yyvsp[0].str); } } -#line 4315 "util/configparser.c" +#line 4321 "util/configparser.c" break; - case 351: -#line 1049 "./util/configparser.y" + case 352: +#line 1050 "./util/configparser.y" { OUTYY(("P(server_http_max_streams:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4323,11 +4329,11 @@ yyreduce: else cfg_parser->cfg->http_max_streams = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4327 "util/configparser.c" +#line 4333 "util/configparser.c" break; - case 352: -#line 1057 "./util/configparser.y" + case 353: +#line 1058 "./util/configparser.y" { OUTYY(("P(server_http_query_buffer_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), @@ -4335,11 +4341,11 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4339 "util/configparser.c" +#line 4345 "util/configparser.c" break; - case 353: -#line 1065 "./util/configparser.y" + case 354: +#line 1066 "./util/configparser.y" { OUTYY(("P(server_http_response_buffer_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), @@ -4347,11 +4353,11 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4351 "util/configparser.c" +#line 4357 "util/configparser.c" break; - case 354: -#line 1073 "./util/configparser.y" + case 355: +#line 1074 "./util/configparser.y" { OUTYY(("P(server_http_nodelay:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4359,11 +4365,11 @@ yyreduce: else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4363 "util/configparser.c" +#line 4369 "util/configparser.c" break; - case 355: -#line 1081 "./util/configparser.y" + case 356: +#line 1082 "./util/configparser.y" { OUTYY(("P(server_http_notls_downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4371,11 +4377,11 @@ yyreduce: else cfg_parser->cfg->http_notls_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4375 "util/configparser.c" +#line 4381 "util/configparser.c" break; - case 356: -#line 1089 "./util/configparser.y" + case 357: +#line 1090 "./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) @@ -4383,11 +4389,11 @@ yyreduce: else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4387 "util/configparser.c" +#line 4393 "util/configparser.c" break; - case 357: -#line 1098 "./util/configparser.y" + case 358: +#line 1099 "./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) @@ -4395,11 +4401,11 @@ yyreduce: else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4399 "util/configparser.c" +#line 4405 "util/configparser.c" break; - case 358: -#line 1107 "./util/configparser.y" + case 359: +#line 1108 "./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) @@ -4412,11 +4418,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4416 "util/configparser.c" +#line 4422 "util/configparser.c" break; - case 359: -#line 1121 "./util/configparser.y" + case 360: +#line 1122 "./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) @@ -4424,11 +4430,11 @@ yyreduce: else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4428 "util/configparser.c" +#line 4434 "util/configparser.c" break; - case 360: -#line 1130 "./util/configparser.y" + case 361: +#line 1131 "./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) @@ -4436,11 +4442,11 @@ yyreduce: else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4440 "util/configparser.c" +#line 4446 "util/configparser.c" break; - case 361: -#line 1139 "./util/configparser.y" + case 362: +#line 1140 "./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) @@ -4448,11 +4454,11 @@ yyreduce: else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4452 "util/configparser.c" +#line 4458 "util/configparser.c" break; - case 362: -#line 1148 "./util/configparser.y" + case 363: +#line 1149 "./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) @@ -4460,11 +4466,11 @@ yyreduce: else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4464 "util/configparser.c" +#line 4470 "util/configparser.c" break; - case 363: -#line 1157 "./util/configparser.y" + case 364: +#line 1158 "./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) @@ -4472,11 +4478,11 @@ yyreduce: else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4476 "util/configparser.c" +#line 4482 "util/configparser.c" break; - case 364: -#line 1166 "./util/configparser.y" + case 365: +#line 1167 "./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) @@ -4484,31 +4490,31 @@ yyreduce: else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4488 "util/configparser.c" +#line 4494 "util/configparser.c" break; - case 365: -#line 1175 "./util/configparser.y" + case 366: +#line 1176 "./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 4498 "util/configparser.c" +#line 4504 "util/configparser.c" break; - case 366: -#line 1182 "./util/configparser.y" + case 367: +#line 1183 "./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 4508 "util/configparser.c" +#line 4514 "util/configparser.c" break; - case 367: -#line 1189 "./util/configparser.y" + case 368: +#line 1190 "./util/configparser.y" { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->directory); @@ -4533,105 +4539,105 @@ yyreduce: } } } -#line 4537 "util/configparser.c" +#line 4543 "util/configparser.c" break; - case 368: -#line 1215 "./util/configparser.y" + case 369: +#line 1216 "./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 4548 "util/configparser.c" +#line 4554 "util/configparser.c" break; - case 369: -#line 1223 "./util/configparser.y" + case 370: +#line 1224 "./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 4558 "util/configparser.c" +#line 4564 "util/configparser.c" break; - case 370: -#line 1230 "./util/configparser.y" + case 371: +#line 1231 "./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 4568 "util/configparser.c" +#line 4574 "util/configparser.c" break; - case 371: -#line 1237 "./util/configparser.y" + case 372: +#line 1238 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str))); log_warn("option dlv-anchor-file ignored: DLV is decommissioned"); free((yyvsp[0].str)); } -#line 4578 "util/configparser.c" +#line 4584 "util/configparser.c" break; - case 372: -#line 1244 "./util/configparser.y" + case 373: +#line 1245 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str))); log_warn("option dlv-anchor ignored: DLV is decommissioned"); free((yyvsp[0].str)); } -#line 4588 "util/configparser.c" +#line 4594 "util/configparser.c" break; - case 373: -#line 1251 "./util/configparser.y" + case 374: +#line 1252 "./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 4599 "util/configparser.c" +#line 4605 "util/configparser.c" break; - case 374: -#line 1259 "./util/configparser.y" + case 375: +#line 1260 "./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 4610 "util/configparser.c" +#line 4616 "util/configparser.c" break; - case 375: -#line 1267 "./util/configparser.y" + case 376: +#line 1268 "./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 4621 "util/configparser.c" +#line 4627 "util/configparser.c" break; - case 376: -#line 1275 "./util/configparser.y" + case 377: +#line 1276 "./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 4631 "util/configparser.c" +#line 4637 "util/configparser.c" break; - case 377: -#line 1282 "./util/configparser.y" + case 378: +#line 1283 "./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) @@ -4641,11 +4647,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4645 "util/configparser.c" +#line 4651 "util/configparser.c" break; - case 378: -#line 1293 "./util/configparser.y" + case 379: +#line 1294 "./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) @@ -4655,21 +4661,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4659 "util/configparser.c" +#line 4665 "util/configparser.c" break; - case 379: -#line 1304 "./util/configparser.y" + case 380: +#line 1305 "./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 4669 "util/configparser.c" +#line 4675 "util/configparser.c" break; - case 380: -#line 1311 "./util/configparser.y" + case 381: +#line 1312 "./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) @@ -4677,11 +4683,11 @@ yyreduce: else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4681 "util/configparser.c" +#line 4687 "util/configparser.c" break; - case 381: -#line 1320 "./util/configparser.y" + case 382: +#line 1321 "./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) @@ -4689,11 +4695,11 @@ yyreduce: else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4693 "util/configparser.c" +#line 4699 "util/configparser.c" break; - case 382: -#line 1329 "./util/configparser.y" + case 383: +#line 1330 "./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) @@ -4701,31 +4707,31 @@ yyreduce: else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4705 "util/configparser.c" +#line 4711 "util/configparser.c" break; - case 383: -#line 1338 "./util/configparser.y" + case 384: +#line 1339 "./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 4715 "util/configparser.c" +#line 4721 "util/configparser.c" break; - case 384: -#line 1345 "./util/configparser.y" + case 385: +#line 1346 "./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 4725 "util/configparser.c" +#line 4731 "util/configparser.c" break; - case 385: -#line 1352 "./util/configparser.y" + case 386: +#line 1353 "./util/configparser.y" { OUTYY(("P(server_nsid:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->nsid_cfg_str); @@ -4740,33 +4746,33 @@ yyreduce: yyerror("the NSID must be either a hex string or an " "ascii character string prepended with ascii_."); } -#line 4744 "util/configparser.c" +#line 4750 "util/configparser.c" break; - case 386: -#line 1368 "./util/configparser.y" + case 387: +#line 1369 "./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 4755 "util/configparser.c" +#line 4761 "util/configparser.c" break; - case 387: -#line 1376 "./util/configparser.y" + case 388: +#line 1377 "./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 4766 "util/configparser.c" +#line 4772 "util/configparser.c" break; - case 388: -#line 1384 "./util/configparser.y" + case 389: +#line 1385 "./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) @@ -4775,11 +4781,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4779 "util/configparser.c" +#line 4785 "util/configparser.c" break; - case 389: -#line 1394 "./util/configparser.y" + case 390: +#line 1395 "./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) @@ -4788,11 +4794,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4792 "util/configparser.c" +#line 4798 "util/configparser.c" break; - case 390: -#line 1404 "./util/configparser.y" + case 391: +#line 1405 "./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) @@ -4801,11 +4807,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4805 "util/configparser.c" +#line 4811 "util/configparser.c" break; - case 391: -#line 1414 "./util/configparser.y" + case 392: +#line 1415 "./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) @@ -4818,22 +4824,22 @@ yyreduce: cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4822 "util/configparser.c" +#line 4828 "util/configparser.c" break; - case 392: -#line 1428 "./util/configparser.y" + case 393: +#line 1429 "./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 4833 "util/configparser.c" +#line 4839 "util/configparser.c" break; - case 393: -#line 1436 "./util/configparser.y" + case 394: +#line 1437 "./util/configparser.y" { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4845,11 +4851,11 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4849 "util/configparser.c" +#line 4855 "util/configparser.c" break; - case 394: -#line 1449 "./util/configparser.y" + case 395: +#line 1450 "./util/configparser.y" { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4859,22 +4865,22 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4863 "util/configparser.c" +#line 4869 "util/configparser.c" break; - case 395: -#line 1460 "./util/configparser.y" + case 396: +#line 1461 "./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 4874 "util/configparser.c" +#line 4880 "util/configparser.c" break; - case 396: -#line 1468 "./util/configparser.y" + case 397: +#line 1469 "./util/configparser.y" { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4886,11 +4892,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4890 "util/configparser.c" +#line 4896 "util/configparser.c" break; - case 397: -#line 1481 "./util/configparser.y" + case 398: +#line 1482 "./util/configparser.y" { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4898,11 +4904,11 @@ yyreduce: else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4902 "util/configparser.c" +#line 4908 "util/configparser.c" break; - case 398: -#line 1490 "./util/configparser.y" + case 399: +#line 1491 "./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) @@ -4910,11 +4916,11 @@ yyreduce: else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4914 "util/configparser.c" +#line 4920 "util/configparser.c" break; - case 399: -#line 1499 "./util/configparser.y" + case 400: +#line 1500 "./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) @@ -4922,11 +4928,11 @@ yyreduce: else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4926 "util/configparser.c" +#line 4932 "util/configparser.c" break; - case 400: -#line 1508 "./util/configparser.y" + case 401: +#line 1509 "./util/configparser.y" { OUTYY(("P(server_udp_connect:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4934,11 +4940,11 @@ yyreduce: else cfg_parser->cfg->udp_connect = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4938 "util/configparser.c" +#line 4944 "util/configparser.c" break; - case 401: -#line 1517 "./util/configparser.y" + case 402: +#line 1518 "./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) @@ -4947,11 +4953,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4951 "util/configparser.c" +#line 4957 "util/configparser.c" break; - case 402: -#line 1527 "./util/configparser.y" + case 403: +#line 1528 "./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) @@ -4960,22 +4966,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4964 "util/configparser.c" +#line 4970 "util/configparser.c" break; - case 403: -#line 1537 "./util/configparser.y" + case 404: +#line 1538 "./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 4975 "util/configparser.c" +#line 4981 "util/configparser.c" break; - case 404: -#line 1545 "./util/configparser.y" + case 405: +#line 1546 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4987,11 +4993,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4991 "util/configparser.c" +#line 4997 "util/configparser.c" break; - case 405: -#line 1558 "./util/configparser.y" + case 406: +#line 1559 "./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) @@ -4999,22 +5005,22 @@ yyreduce: else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5003 "util/configparser.c" +#line 5009 "util/configparser.c" break; - case 406: -#line 1567 "./util/configparser.y" + case 407: +#line 1568 "./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 5014 "util/configparser.c" +#line 5020 "util/configparser.c" break; - case 407: -#line 1575 "./util/configparser.y" + case 408: +#line 1576 "./util/configparser.y" { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5022,22 +5028,22 @@ yyreduce: else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5026 "util/configparser.c" +#line 5032 "util/configparser.c" break; - case 408: -#line 1584 "./util/configparser.y" + case 409: +#line 1585 "./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 5037 "util/configparser.c" +#line 5043 "util/configparser.c" break; - case 409: -#line 1592 "./util/configparser.y" + case 410: +#line 1593 "./util/configparser.y" { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5049,11 +5055,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5053 "util/configparser.c" +#line 5059 "util/configparser.c" break; - case 410: -#line 1605 "./util/configparser.y" + case 411: +#line 1606 "./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) @@ -5061,11 +5067,11 @@ yyreduce: else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5065 "util/configparser.c" +#line 5071 "util/configparser.c" break; - case 411: -#line 1614 "./util/configparser.y" + case 412: +#line 1615 "./util/configparser.y" { OUTYY(("P(server_infra_keep_probing:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5074,21 +5080,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5078 "util/configparser.c" +#line 5084 "util/configparser.c" break; - case 412: -#line 1624 "./util/configparser.y" + case 413: +#line 1625 "./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 5088 "util/configparser.c" +#line 5094 "util/configparser.c" break; - case 413: -#line 1631 "./util/configparser.y" + case 414: +#line 1632 "./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) @@ -5097,11 +5103,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5101 "util/configparser.c" +#line 5107 "util/configparser.c" break; - case 414: -#line 1641 "./util/configparser.y" + case 415: +#line 1642 "./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) @@ -5110,11 +5116,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5114 "util/configparser.c" +#line 5120 "util/configparser.c" break; - case 415: -#line 1651 "./util/configparser.y" + case 416: +#line 1652 "./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) @@ -5123,11 +5129,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5127 "util/configparser.c" +#line 5133 "util/configparser.c" break; - case 416: -#line 1661 "./util/configparser.y" + case 417: +#line 1662 "./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) @@ -5136,11 +5142,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5140 "util/configparser.c" +#line 5146 "util/configparser.c" break; - case 417: -#line 1671 "./util/configparser.y" + case 418: +#line 1672 "./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) @@ -5149,11 +5155,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5153 "util/configparser.c" +#line 5159 "util/configparser.c" break; - case 418: -#line 1681 "./util/configparser.y" + case 419: +#line 1682 "./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) @@ -5162,11 +5168,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5166 "util/configparser.c" +#line 5172 "util/configparser.c" break; - case 419: -#line 1691 "./util/configparser.y" + case 420: +#line 1692 "./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) @@ -5175,11 +5181,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5179 "util/configparser.c" +#line 5185 "util/configparser.c" break; - case 420: -#line 1701 "./util/configparser.y" + case 421: +#line 1702 "./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) @@ -5188,41 +5194,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5192 "util/configparser.c" +#line 5198 "util/configparser.c" break; - case 421: -#line 1711 "./util/configparser.y" + case 422: +#line 1712 "./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 5202 "util/configparser.c" +#line 5208 "util/configparser.c" break; - case 422: -#line 1718 "./util/configparser.y" + case 423: +#line 1719 "./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 5212 "util/configparser.c" +#line 5218 "util/configparser.c" break; - case 423: -#line 1725 "./util/configparser.y" + case 424: +#line 1726 "./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 5222 "util/configparser.c" +#line 5228 "util/configparser.c" break; - case 424: -#line 1732 "./util/configparser.y" + case 425: +#line 1733 "./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) @@ -5230,11 +5236,11 @@ yyreduce: else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5234 "util/configparser.c" +#line 5240 "util/configparser.c" break; - case 425: -#line 1741 "./util/configparser.y" + case 426: +#line 1742 "./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) @@ -5242,11 +5248,11 @@ yyreduce: else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5246 "util/configparser.c" +#line 5252 "util/configparser.c" break; - case 426: -#line 1750 "./util/configparser.y" + case 427: +#line 1751 "./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) @@ -5254,11 +5260,11 @@ yyreduce: else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5258 "util/configparser.c" +#line 5264 "util/configparser.c" break; - case 427: -#line 1759 "./util/configparser.y" + case 428: +#line 1760 "./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) @@ -5266,21 +5272,21 @@ yyreduce: else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5270 "util/configparser.c" +#line 5276 "util/configparser.c" break; - case 428: -#line 1768 "./util/configparser.y" + case 429: +#line 1769 "./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 5280 "util/configparser.c" +#line 5286 "util/configparser.c" break; - case 429: -#line 1775 "./util/configparser.y" + case 430: +#line 1776 "./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) @@ -5289,11 +5295,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5293 "util/configparser.c" +#line 5299 "util/configparser.c" break; - case 430: -#line 1785 "./util/configparser.y" + case 431: +#line 1786 "./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 && @@ -5312,21 +5318,21 @@ yyreduce: fatal_exit("out of memory adding acl"); } } -#line 5316 "util/configparser.c" +#line 5322 "util/configparser.c" break; - case 431: -#line 1805 "./util/configparser.y" + case 432: +#line 1806 "./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 5326 "util/configparser.c" +#line 5332 "util/configparser.c" break; - case 432: -#line 1812 "./util/configparser.y" + case 433: +#line 1813 "./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) { @@ -5343,11 +5349,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5347 "util/configparser.c" +#line 5353 "util/configparser.c" break; - case 433: -#line 1830 "./util/configparser.y" + case 434: +#line 1831 "./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) { @@ -5359,11 +5365,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5363 "util/configparser.c" +#line 5369 "util/configparser.c" break; - case 434: -#line 1843 "./util/configparser.y" + case 435: +#line 1844 "./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) { @@ -5375,11 +5381,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5379 "util/configparser.c" +#line 5385 "util/configparser.c" break; - case 435: -#line 1856 "./util/configparser.y" + case 436: +#line 1857 "./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) @@ -5387,11 +5393,11 @@ yyreduce: else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5391 "util/configparser.c" +#line 5397 "util/configparser.c" break; - case 436: -#line 1865 "./util/configparser.y" + case 437: +#line 1866 "./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) @@ -5399,11 +5405,11 @@ yyreduce: else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5403 "util/configparser.c" +#line 5409 "util/configparser.c" break; - case 437: -#line 1874 "./util/configparser.y" + case 438: +#line 1875 "./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) @@ -5411,11 +5417,11 @@ yyreduce: else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5415 "util/configparser.c" +#line 5421 "util/configparser.c" break; - case 438: -#line 1883 "./util/configparser.y" + case 439: +#line 1884 "./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) @@ -5423,11 +5429,11 @@ yyreduce: else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5427 "util/configparser.c" +#line 5433 "util/configparser.c" break; - case 439: -#line 1892 "./util/configparser.y" + case 440: +#line 1893 "./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) @@ -5436,11 +5442,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5440 "util/configparser.c" +#line 5446 "util/configparser.c" break; - case 440: -#line 1902 "./util/configparser.y" + case 441: +#line 1903 "./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) @@ -5449,11 +5455,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5453 "util/configparser.c" +#line 5459 "util/configparser.c" break; - case 441: -#line 1912 "./util/configparser.y" + case 442: +#line 1913 "./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) @@ -5463,11 +5469,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5467 "util/configparser.c" +#line 5473 "util/configparser.c" break; - case 442: -#line 1923 "./util/configparser.y" + case 443: +#line 1924 "./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) @@ -5475,11 +5481,11 @@ yyreduce: else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5479 "util/configparser.c" +#line 5485 "util/configparser.c" break; - case 443: -#line 1932 "./util/configparser.y" + case 444: +#line 1933 "./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) @@ -5487,11 +5493,11 @@ yyreduce: else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5491 "util/configparser.c" +#line 5497 "util/configparser.c" break; - case 444: -#line 1941 "./util/configparser.y" + case 445: +#line 1942 "./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) @@ -5499,11 +5505,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5503 "util/configparser.c" +#line 5509 "util/configparser.c" break; - case 445: -#line 1950 "./util/configparser.y" + case 446: +#line 1951 "./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) @@ -5511,11 +5517,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5515 "util/configparser.c" +#line 5521 "util/configparser.c" break; - case 446: -#line 1959 "./util/configparser.y" + case 447: +#line 1960 "./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) @@ -5523,11 +5529,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5527 "util/configparser.c" +#line 5533 "util/configparser.c" break; - case 447: -#line 1968 "./util/configparser.y" + case 448: +#line 1969 "./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) @@ -5535,11 +5541,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5539 "util/configparser.c" +#line 5545 "util/configparser.c" break; - case 448: -#line 1977 "./util/configparser.y" + case 449: +#line 1978 "./util/configparser.y" { OUTYY(("P(server_serve_original_ttl:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5547,11 +5553,11 @@ yyreduce: else cfg_parser->cfg->serve_original_ttl = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5551 "util/configparser.c" +#line 5557 "util/configparser.c" break; - case 449: -#line 1986 "./util/configparser.y" + case 450: +#line 1987 "./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) @@ -5563,11 +5569,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5567 "util/configparser.c" +#line 5573 "util/configparser.c" break; - case 450: -#line 1999 "./util/configparser.y" + case 451: +#line 2000 "./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) @@ -5579,11 +5585,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5583 "util/configparser.c" +#line 5589 "util/configparser.c" break; - case 451: -#line 2012 "./util/configparser.y" + case 452: +#line 2013 "./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) @@ -5591,21 +5597,21 @@ yyreduce: else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5595 "util/configparser.c" +#line 5601 "util/configparser.c" break; - case 452: -#line 2021 "./util/configparser.y" + case 453: +#line 2022 "./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 5605 "util/configparser.c" +#line 5611 "util/configparser.c" break; - case 453: -#line 2028 "./util/configparser.y" + case 454: +#line 2029 "./util/configparser.y" { OUTYY(("P(server_zonemd_permissive_mode:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5613,11 +5619,11 @@ yyreduce: else cfg_parser->cfg->zonemd_permissive_mode = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5617 "util/configparser.c" +#line 5623 "util/configparser.c" break; - case 454: -#line 2037 "./util/configparser.y" + case 455: +#line 2038 "./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) @@ -5625,11 +5631,11 @@ yyreduce: else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5629 "util/configparser.c" +#line 5635 "util/configparser.c" break; - case 455: -#line 2046 "./util/configparser.y" + case 456: +#line 2047 "./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) @@ -5637,11 +5643,11 @@ yyreduce: else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5641 "util/configparser.c" +#line 5647 "util/configparser.c" break; - case 456: -#line 2055 "./util/configparser.y" + case 457: +#line 2056 "./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) @@ -5649,11 +5655,11 @@ yyreduce: else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5653 "util/configparser.c" +#line 5659 "util/configparser.c" break; - case 457: -#line 2064 "./util/configparser.y" + case 458: +#line 2065 "./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) @@ -5662,22 +5668,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5666 "util/configparser.c" +#line 5672 "util/configparser.c" break; - case 458: -#line 2073 "./util/configparser.y" + case 459: +#line 2074 "./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 5677 "util/configparser.c" +#line 5683 "util/configparser.c" break; - case 459: -#line 2081 "./util/configparser.y" + case 460: +#line 2082 "./util/configparser.y" { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5689,22 +5695,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5693 "util/configparser.c" +#line 5699 "util/configparser.c" break; - case 460: -#line 2094 "./util/configparser.y" + case 461: +#line 2095 "./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 5704 "util/configparser.c" +#line 5710 "util/configparser.c" break; - case 461: -#line 2102 "./util/configparser.y" + case 462: +#line 2103 "./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 && @@ -5748,21 +5754,21 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5752 "util/configparser.c" +#line 5758 "util/configparser.c" break; - case 462: -#line 2147 "./util/configparser.y" + case 463: +#line 2148 "./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 5762 "util/configparser.c" +#line 5768 "util/configparser.c" break; - case 463: -#line 2154 "./util/configparser.y" + case 464: +#line 2155 "./util/configparser.y" { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -5776,11 +5782,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5780 "util/configparser.c" +#line 5786 "util/configparser.c" break; - case 464: -#line 2169 "./util/configparser.y" + case 465: +#line 2170 "./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) @@ -5789,11 +5795,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5793 "util/configparser.c" +#line 5799 "util/configparser.c" break; - case 465: -#line 2179 "./util/configparser.y" + case 466: +#line 2180 "./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) @@ -5802,41 +5808,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5806 "util/configparser.c" +#line 5812 "util/configparser.c" break; - case 466: -#line 2189 "./util/configparser.y" + case 467: +#line 2190 "./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 5816 "util/configparser.c" +#line 5822 "util/configparser.c" break; - case 467: -#line 2196 "./util/configparser.y" + case 468: +#line 2197 "./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 5826 "util/configparser.c" +#line 5832 "util/configparser.c" break; - case 468: -#line 2203 "./util/configparser.y" + case 469: +#line 2204 "./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 5836 "util/configparser.c" +#line 5842 "util/configparser.c" break; - case 469: -#line 2210 "./util/configparser.y" + case 470: +#line 2211 "./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) @@ -5844,22 +5850,22 @@ yyreduce: else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5848 "util/configparser.c" +#line 5854 "util/configparser.c" break; - case 470: -#line 2219 "./util/configparser.y" + case 471: +#line 2220 "./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 5859 "util/configparser.c" +#line 5865 "util/configparser.c" break; - case 471: -#line 2227 "./util/configparser.y" + case 472: +#line 2228 "./util/configparser.y" { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); @@ -5872,11 +5878,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5876 "util/configparser.c" +#line 5882 "util/configparser.c" break; - case 472: -#line 2241 "./util/configparser.y" + case 473: +#line 2242 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5896,11 +5902,11 @@ yyreduce: } } } -#line 5900 "util/configparser.c" +#line 5906 "util/configparser.c" break; - case 473: -#line 2262 "./util/configparser.y" + case 474: +#line 2263 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5920,11 +5926,11 @@ yyreduce: } } } -#line 5924 "util/configparser.c" +#line 5930 "util/configparser.c" break; - case 474: -#line 2283 "./util/configparser.y" + case 475: +#line 2284 "./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, @@ -5935,11 +5941,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5939 "util/configparser.c" +#line 5945 "util/configparser.c" break; - case 475: -#line 2295 "./util/configparser.y" + case 476: +#line 2296 "./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, @@ -5950,11 +5956,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5954 "util/configparser.c" +#line 5960 "util/configparser.c" break; - case 476: -#line 2307 "./util/configparser.y" + case 477: +#line 2308 "./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, @@ -5965,11 +5971,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5969 "util/configparser.c" +#line 5975 "util/configparser.c" break; - case 477: -#line 2319 "./util/configparser.y" + case 478: +#line 2320 "./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, @@ -5977,11 +5983,11 @@ yyreduce: yyerror("out of memory"); } } -#line 5981 "util/configparser.c" +#line 5987 "util/configparser.c" break; - case 478: -#line 2328 "./util/configparser.y" + case 479: +#line 2329 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -6001,11 +6007,11 @@ yyreduce: } } } -#line 6005 "util/configparser.c" +#line 6011 "util/configparser.c" break; - case 479: -#line 2349 "./util/configparser.y" + case 480: +#line 2350 "./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) @@ -6013,11 +6019,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6017 "util/configparser.c" +#line 6023 "util/configparser.c" break; - case 480: -#line 2359 "./util/configparser.y" + case 481: +#line 2360 "./util/configparser.y" { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -6025,33 +6031,33 @@ yyreduce: else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6029 "util/configparser.c" +#line 6035 "util/configparser.c" break; - case 481: -#line 2368 "./util/configparser.y" + case 482: +#line 2369 "./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 6040 "util/configparser.c" +#line 6046 "util/configparser.c" break; - case 482: -#line 2376 "./util/configparser.y" + case 483: +#line 2377 "./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 6051 "util/configparser.c" +#line 6057 "util/configparser.c" break; - case 483: -#line 2384 "./util/configparser.y" + case 484: +#line 2385 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6063,11 +6069,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6067 "util/configparser.c" +#line 6073 "util/configparser.c" break; - case 484: -#line 2397 "./util/configparser.y" + case 485: +#line 2398 "./util/configparser.y" { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6079,11 +6085,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6083 "util/configparser.c" +#line 6089 "util/configparser.c" break; - case 485: -#line 2410 "./util/configparser.y" + case 486: +#line 2411 "./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) { @@ -6097,11 +6103,11 @@ yyreduce: "ratelimit-for-domain"); } } -#line 6101 "util/configparser.c" +#line 6107 "util/configparser.c" break; - case 486: -#line 2425 "./util/configparser.y" + case 487: +#line 2426 "./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) { @@ -6115,11 +6121,11 @@ yyreduce: "ratelimit-below-domain"); } } -#line 6119 "util/configparser.c" +#line 6125 "util/configparser.c" break; - case 487: -#line 2440 "./util/configparser.y" + case 488: +#line 2441 "./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) @@ -6127,11 +6133,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6131 "util/configparser.c" +#line 6137 "util/configparser.c" break; - case 488: -#line 2449 "./util/configparser.y" + case 489: +#line 2450 "./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) @@ -6139,20 +6145,20 @@ yyreduce: else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6143 "util/configparser.c" +#line 6149 "util/configparser.c" break; - case 489: -#line 2458 "./util/configparser.y" + case 490: +#line 2459 "./util/configparser.y" { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 6152 "util/configparser.c" +#line 6158 "util/configparser.c" break; - case 490: -#line 2464 "./util/configparser.y" + case 491: +#line 2465 "./util/configparser.y" { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) <= 0) @@ -6160,11 +6166,11 @@ yyreduce: else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6164 "util/configparser.c" +#line 6170 "util/configparser.c" break; - case 491: -#line 2473 "./util/configparser.y" + case 492: +#line 2474 "./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) @@ -6172,11 +6178,11 @@ yyreduce: else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6176 "util/configparser.c" +#line 6182 "util/configparser.c" break; - case 492: -#line 2482 "./util/configparser.y" + case 493: +#line 2483 "./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) @@ -6185,11 +6191,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6189 "util/configparser.c" +#line 6195 "util/configparser.c" break; - case 493: -#line 2492 "./util/configparser.y" + case 494: +#line 2493 "./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) @@ -6198,11 +6204,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6202 "util/configparser.c" +#line 6208 "util/configparser.c" break; - case 494: -#line 2502 "./util/configparser.y" + case 495: +#line 2503 "./util/configparser.y" { OUTYY(("P(server_pad_responses:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6211,11 +6217,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6215 "util/configparser.c" +#line 6221 "util/configparser.c" break; - case 495: -#line 2512 "./util/configparser.y" + case 496: +#line 2513 "./util/configparser.y" { OUTYY(("P(server_pad_responses_block_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6223,11 +6229,11 @@ yyreduce: else cfg_parser->cfg->pad_responses_block_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6227 "util/configparser.c" +#line 6233 "util/configparser.c" break; - case 496: -#line 2521 "./util/configparser.y" + case 497: +#line 2522 "./util/configparser.y" { OUTYY(("P(server_pad_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6236,11 +6242,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6240 "util/configparser.c" +#line 6246 "util/configparser.c" break; - case 497: -#line 2531 "./util/configparser.y" + case 498: +#line 2532 "./util/configparser.y" { OUTYY(("P(server_pad_queries_block_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6248,11 +6254,11 @@ yyreduce: else cfg_parser->cfg->pad_queries_block_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6252 "util/configparser.c" +#line 6258 "util/configparser.c" break; - case 498: -#line 2540 "./util/configparser.y" + case 499: +#line 2541 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); @@ -6264,11 +6270,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6268 "util/configparser.c" +#line 6274 "util/configparser.c" break; - case 499: -#line 2553 "./util/configparser.y" + case 500: +#line 2554 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); @@ -6280,11 +6286,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6284 "util/configparser.c" +#line 6290 "util/configparser.c" break; - case 500: -#line 2566 "./util/configparser.y" + case 501: +#line 2567 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); @@ -6295,11 +6301,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6299 "util/configparser.c" +#line 6305 "util/configparser.c" break; - case 501: -#line 2578 "./util/configparser.y" + case 502: +#line 2579 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); @@ -6312,11 +6318,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6316 "util/configparser.c" +#line 6322 "util/configparser.c" break; - case 502: -#line 2592 "./util/configparser.y" + case 503: +#line 2593 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); @@ -6327,11 +6333,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6331 "util/configparser.c" +#line 6337 "util/configparser.c" break; - case 503: -#line 2604 "./util/configparser.y" + case 504: +#line 2605 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); @@ -6344,11 +6350,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6348 "util/configparser.c" +#line 6354 "util/configparser.c" break; - case 504: -#line 2618 "./util/configparser.y" + case 505: +#line 2619 "./util/configparser.y" { OUTYY(("P(server_edns_client_string:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert( @@ -6356,11 +6362,11 @@ yyreduce: fatal_exit("out of memory adding " "edns-client-string"); } -#line 6360 "util/configparser.c" +#line 6366 "util/configparser.c" break; - case 505: -#line 2627 "./util/configparser.y" + case 506: +#line 2628 "./util/configparser.y" { OUTYY(("P(edns_client_string_opcode:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -6371,11 +6377,11 @@ yyreduce: free((yyvsp[0].str)); } -#line 6375 "util/configparser.c" +#line 6381 "util/configparser.c" break; - case 506: -#line 2639 "./util/configparser.y" + case 507: +#line 2640 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) @@ -6384,31 +6390,31 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 6388 "util/configparser.c" +#line 6394 "util/configparser.c" break; - case 507: -#line 2649 "./util/configparser.y" + case 508: +#line 2650 "./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 6398 "util/configparser.c" +#line 6404 "util/configparser.c" break; - case 508: -#line 2656 "./util/configparser.y" + case 509: +#line 2657 "./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 6408 "util/configparser.c" +#line 6414 "util/configparser.c" break; - case 509: -#line 2663 "./util/configparser.y" + case 510: +#line 2664 "./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) @@ -6416,11 +6422,11 @@ yyreduce: else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6420 "util/configparser.c" +#line 6426 "util/configparser.c" break; - case 510: -#line 2672 "./util/configparser.y" + case 511: +#line 2673 "./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) @@ -6428,11 +6434,11 @@ yyreduce: else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6432 "util/configparser.c" +#line 6438 "util/configparser.c" break; - case 511: -#line 2681 "./util/configparser.y" + case 512: +#line 2682 "./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) @@ -6441,11 +6447,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6445 "util/configparser.c" +#line 6451 "util/configparser.c" break; - case 512: -#line 2691 "./util/configparser.y" + case 513: +#line 2692 "./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) @@ -6454,11 +6460,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6458 "util/configparser.c" +#line 6464 "util/configparser.c" break; - case 513: -#line 2701 "./util/configparser.y" + case 514: +#line 2702 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) @@ -6467,31 +6473,31 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 6471 "util/configparser.c" +#line 6477 "util/configparser.c" break; - case 514: -#line 2711 "./util/configparser.y" + case 515: +#line 2712 "./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 6481 "util/configparser.c" +#line 6487 "util/configparser.c" break; - case 515: -#line 2718 "./util/configparser.y" + case 516: +#line 2719 "./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 6491 "util/configparser.c" +#line 6497 "util/configparser.c" break; - case 516: -#line 2725 "./util/configparser.y" + case 517: +#line 2726 "./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) @@ -6499,11 +6505,11 @@ yyreduce: else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6503 "util/configparser.c" +#line 6509 "util/configparser.c" break; - case 517: -#line 2734 "./util/configparser.y" + case 518: +#line 2735 "./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) @@ -6511,11 +6517,11 @@ yyreduce: else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6515 "util/configparser.c" +#line 6521 "util/configparser.c" break; - case 518: -#line 2743 "./util/configparser.y" + case 519: +#line 2744 "./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) @@ -6524,11 +6530,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6528 "util/configparser.c" +#line 6534 "util/configparser.c" break; - case 519: -#line 2753 "./util/configparser.y" + case 520: +#line 2754 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) @@ -6537,52 +6543,65 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 6541 "util/configparser.c" +#line 6547 "util/configparser.c" break; - case 520: -#line 2763 "./util/configparser.y" + case 521: +#line 2764 "./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 6551 "util/configparser.c" +#line 6557 "util/configparser.c" break; - case 521: -#line 2770 "./util/configparser.y" + case 522: +#line 2771 "./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 6561 "util/configparser.c" +#line 6567 "util/configparser.c" break; - case 522: -#line 2777 "./util/configparser.y" + case 523: +#line 2778 "./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 6571 "util/configparser.c" +#line 6577 "util/configparser.c" break; - case 523: -#line 2784 "./util/configparser.y" + case 524: +#line 2785 "./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 6582 "util/configparser.c" +#line 6588 "util/configparser.c" break; - case 524: -#line 2792 "./util/configparser.y" + case 525: +#line 2793 "./util/configparser.y" + { + OUTYY(("P(zonemd-check:%s)\n", (yyvsp[0].str))); + if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->auths->zonemd_check = + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); + } +#line 6601 "util/configparser.c" + break; + + case 526: +#line 2803 "./util/configparser.y" { OUTYY(("P(zonemd-reject-absence:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6591,11 +6610,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6595 "util/configparser.c" +#line 6614 "util/configparser.c" break; - case 525: -#line 2802 "./util/configparser.y" + case 527: +#line 2813 "./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) @@ -6604,11 +6623,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6608 "util/configparser.c" +#line 6627 "util/configparser.c" break; - case 526: -#line 2812 "./util/configparser.y" + case 528: +#line 2823 "./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) @@ -6617,11 +6636,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6621 "util/configparser.c" +#line 6640 "util/configparser.c" break; - case 527: -#line 2822 "./util/configparser.y" + case 529: +#line 2833 "./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) @@ -6630,11 +6649,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6634 "util/configparser.c" +#line 6653 "util/configparser.c" break; - case 528: -#line 2832 "./util/configparser.y" + case 530: +#line 2843 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) @@ -6643,11 +6662,11 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 6647 "util/configparser.c" +#line 6666 "util/configparser.c" break; - case 529: -#line 2842 "./util/configparser.y" + case 531: +#line 2853 "./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 && @@ -6692,11 +6711,11 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 6696 "util/configparser.c" +#line 6715 "util/configparser.c" break; - case 530: -#line 2888 "./util/configparser.y" + case 532: +#line 2899 "./util/configparser.y" { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -6705,33 +6724,33 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 6709 "util/configparser.c" +#line 6728 "util/configparser.c" break; - case 531: -#line 2898 "./util/configparser.y" + case 533: +#line 2909 "./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 6720 "util/configparser.c" +#line 6739 "util/configparser.c" break; - case 532: -#line 2906 "./util/configparser.y" + case 534: +#line 2917 "./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 6731 "util/configparser.c" +#line 6750 "util/configparser.c" break; - case 533: -#line 2914 "./util/configparser.y" + case 535: +#line 2925 "./util/configparser.y" { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -6745,11 +6764,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 6749 "util/configparser.c" +#line 6768 "util/configparser.c" break; - case 534: -#line 2929 "./util/configparser.y" + case 536: +#line 2940 "./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) @@ -6757,19 +6776,19 @@ yyreduce: else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6761 "util/configparser.c" +#line 6780 "util/configparser.c" break; - case 535: -#line 2938 "./util/configparser.y" + case 537: +#line 2949 "./util/configparser.y" { OUTYY(("\nP(remote-control:)\n")); } -#line 6769 "util/configparser.c" +#line 6788 "util/configparser.c" break; - case 546: -#line 2949 "./util/configparser.y" + case 548: +#line 2960 "./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) @@ -6778,11 +6797,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6782 "util/configparser.c" +#line 6801 "util/configparser.c" break; - case 547: -#line 2959 "./util/configparser.y" + case 549: +#line 2970 "./util/configparser.y" { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6790,79 +6809,79 @@ yyreduce: else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6794 "util/configparser.c" +#line 6813 "util/configparser.c" break; - case 548: -#line 2968 "./util/configparser.y" + case 550: +#line 2979 "./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 6804 "util/configparser.c" +#line 6823 "util/configparser.c" break; - case 549: -#line 2975 "./util/configparser.y" + case 551: +#line 2986 "./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 6814 "util/configparser.c" +#line 6833 "util/configparser.c" break; - case 550: -#line 2982 "./util/configparser.y" + case 552: +#line 2993 "./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 6824 "util/configparser.c" +#line 6843 "util/configparser.c" break; - case 551: -#line 2989 "./util/configparser.y" + case 553: +#line 3000 "./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 6834 "util/configparser.c" +#line 6853 "util/configparser.c" break; - case 552: -#line 2996 "./util/configparser.y" + case 554: +#line 3007 "./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 6844 "util/configparser.c" +#line 6863 "util/configparser.c" break; - case 553: -#line 3003 "./util/configparser.y" + case 555: +#line 3014 "./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 6854 "util/configparser.c" +#line 6873 "util/configparser.c" break; - case 554: -#line 3010 "./util/configparser.y" + case 556: +#line 3021 "./util/configparser.y" { OUTYY(("\nP(dnstap:)\n")); } -#line 6862 "util/configparser.c" +#line 6881 "util/configparser.c" break; - case 576: -#line 3030 "./util/configparser.y" + case 578: +#line 3041 "./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) @@ -6870,11 +6889,11 @@ yyreduce: else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6874 "util/configparser.c" +#line 6893 "util/configparser.c" break; - case 577: -#line 3039 "./util/configparser.y" + case 579: +#line 3050 "./util/configparser.y" { OUTYY(("P(dt_dnstap_bidirectional:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6883,31 +6902,31 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6887 "util/configparser.c" +#line 6906 "util/configparser.c" break; - case 578: -#line 3049 "./util/configparser.y" + case 580: +#line 3060 "./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 6897 "util/configparser.c" +#line 6916 "util/configparser.c" break; - case 579: -#line 3056 "./util/configparser.y" + case 581: +#line 3067 "./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 6907 "util/configparser.c" +#line 6926 "util/configparser.c" break; - case 580: -#line 3063 "./util/configparser.y" + case 582: +#line 3074 "./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) @@ -6915,51 +6934,51 @@ yyreduce: else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6919 "util/configparser.c" +#line 6938 "util/configparser.c" break; - case 581: -#line 3072 "./util/configparser.y" + case 583: +#line 3083 "./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 6929 "util/configparser.c" +#line 6948 "util/configparser.c" break; - case 582: -#line 3079 "./util/configparser.y" + case 584: +#line 3090 "./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 6939 "util/configparser.c" +#line 6958 "util/configparser.c" break; - case 583: -#line 3086 "./util/configparser.y" + case 585: +#line 3097 "./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 6949 "util/configparser.c" +#line 6968 "util/configparser.c" break; - case 584: -#line 3093 "./util/configparser.y" + case 586: +#line 3104 "./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 6959 "util/configparser.c" +#line 6978 "util/configparser.c" break; - case 585: -#line 3100 "./util/configparser.y" + case 587: +#line 3111 "./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) @@ -6967,11 +6986,11 @@ yyreduce: else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6971 "util/configparser.c" +#line 6990 "util/configparser.c" break; - case 586: -#line 3109 "./util/configparser.y" + case 588: +#line 3120 "./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) @@ -6979,31 +6998,31 @@ yyreduce: else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6983 "util/configparser.c" +#line 7002 "util/configparser.c" break; - case 587: -#line 3118 "./util/configparser.y" + case 589: +#line 3129 "./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 6993 "util/configparser.c" +#line 7012 "util/configparser.c" break; - case 588: -#line 3125 "./util/configparser.y" + case 590: +#line 3136 "./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 7003 "util/configparser.c" +#line 7022 "util/configparser.c" break; - case 589: -#line 3132 "./util/configparser.y" + case 591: +#line 3143 "./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) @@ -7012,11 +7031,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7016 "util/configparser.c" +#line 7035 "util/configparser.c" break; - case 590: -#line 3142 "./util/configparser.y" + case 592: +#line 3153 "./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) @@ -7025,11 +7044,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7029 "util/configparser.c" +#line 7048 "util/configparser.c" break; - case 591: -#line 3152 "./util/configparser.y" + case 593: +#line 3163 "./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) @@ -7038,11 +7057,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7042 "util/configparser.c" +#line 7061 "util/configparser.c" break; - case 592: -#line 3162 "./util/configparser.y" + case 594: +#line 3173 "./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) @@ -7051,11 +7070,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7055 "util/configparser.c" +#line 7074 "util/configparser.c" break; - case 593: -#line 3172 "./util/configparser.y" + case 595: +#line 3183 "./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) @@ -7064,11 +7083,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7068 "util/configparser.c" +#line 7087 "util/configparser.c" break; - case 594: -#line 3182 "./util/configparser.y" + case 596: +#line 3193 "./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) @@ -7077,47 +7096,47 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7081 "util/configparser.c" +#line 7100 "util/configparser.c" break; - case 595: -#line 3192 "./util/configparser.y" + case 597: +#line 3203 "./util/configparser.y" { OUTYY(("\nP(python:)\n")); } -#line 7089 "util/configparser.c" +#line 7108 "util/configparser.c" break; - case 599: -#line 3201 "./util/configparser.y" + case 601: +#line 3212 "./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 7099 "util/configparser.c" +#line 7118 "util/configparser.c" break; - case 600: -#line 3207 "./util/configparser.y" + case 602: +#line 3218 "./util/configparser.y" { OUTYY(("\nP(dynlib:)\n")); } -#line 7107 "util/configparser.c" +#line 7126 "util/configparser.c" break; - case 604: -#line 3216 "./util/configparser.y" + case 606: +#line 3227 "./util/configparser.y" { OUTYY(("P(dynlib-file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, (yyvsp[0].str))) yyerror("out of memory"); } -#line 7117 "util/configparser.c" +#line 7136 "util/configparser.c" break; - case 605: -#line 3222 "./util/configparser.y" + case 607: +#line 3233 "./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) @@ -7126,21 +7145,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7130 "util/configparser.c" +#line 7149 "util/configparser.c" break; - case 606: -#line 3232 "./util/configparser.y" + case 608: +#line 3243 "./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 7140 "util/configparser.c" +#line 7159 "util/configparser.c" break; - case 607: -#line 3239 "./util/configparser.y" + case 609: +#line 3250 "./util/configparser.y" { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -7148,30 +7167,30 @@ yyreduce: (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 7152 "util/configparser.c" +#line 7171 "util/configparser.c" break; - case 608: -#line 3248 "./util/configparser.y" + case 610: +#line 3259 "./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 7163 "util/configparser.c" +#line 7182 "util/configparser.c" break; - case 609: -#line 3256 "./util/configparser.y" + case 611: +#line 3267 "./util/configparser.y" { OUTYY(("\nP(dnscrypt:)\n")); } -#line 7171 "util/configparser.c" +#line 7190 "util/configparser.c" break; - case 622: -#line 3272 "./util/configparser.y" + case 624: +#line 3283 "./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) @@ -7179,11 +7198,11 @@ yyreduce: else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7183 "util/configparser.c" +#line 7202 "util/configparser.c" break; - case 623: -#line 3282 "./util/configparser.y" + case 625: +#line 3293 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -7191,21 +7210,21 @@ yyreduce: else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 7195 "util/configparser.c" +#line 7214 "util/configparser.c" break; - case 624: -#line 3291 "./util/configparser.y" + case 626: +#line 3302 "./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 7205 "util/configparser.c" +#line 7224 "util/configparser.c" break; - case 625: -#line 3298 "./util/configparser.y" + case 627: +#line 3309 "./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))) @@ -7213,21 +7232,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 7217 "util/configparser.c" +#line 7236 "util/configparser.c" break; - case 626: -#line 3307 "./util/configparser.y" + case 628: +#line 3318 "./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 7227 "util/configparser.c" +#line 7246 "util/configparser.c" break; - case 627: -#line 3314 "./util/configparser.y" + case 629: +#line 3325 "./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))) @@ -7235,22 +7254,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 7239 "util/configparser.c" +#line 7258 "util/configparser.c" break; - case 628: -#line 3323 "./util/configparser.y" + case 630: +#line 3334 "./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 7250 "util/configparser.c" +#line 7269 "util/configparser.c" break; - case 629: -#line 3331 "./util/configparser.y" + case 631: +#line 3342 "./util/configparser.y" { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -7262,22 +7281,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 7266 "util/configparser.c" +#line 7285 "util/configparser.c" break; - case 630: -#line 3344 "./util/configparser.y" + case 632: +#line 3355 "./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 7277 "util/configparser.c" +#line 7296 "util/configparser.c" break; - case 631: -#line 3352 "./util/configparser.y" + case 633: +#line 3363 "./util/configparser.y" { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -7289,19 +7308,19 @@ yyreduce: } free((yyvsp[0].str)); } -#line 7293 "util/configparser.c" +#line 7312 "util/configparser.c" break; - case 632: -#line 3365 "./util/configparser.y" + case 634: +#line 3376 "./util/configparser.y" { OUTYY(("\nP(cachedb:)\n")); } -#line 7301 "util/configparser.c" +#line 7320 "util/configparser.c" break; - case 641: -#line 3376 "./util/configparser.y" + case 643: +#line 3387 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); @@ -7312,11 +7331,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7316 "util/configparser.c" +#line 7335 "util/configparser.c" break; - case 642: -#line 3388 "./util/configparser.y" + case 644: +#line 3399 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); @@ -7327,11 +7346,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7331 "util/configparser.c" +#line 7350 "util/configparser.c" break; - case 643: -#line 3400 "./util/configparser.y" + case 645: +#line 3411 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); @@ -7342,11 +7361,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7346 "util/configparser.c" +#line 7365 "util/configparser.c" break; - case 644: -#line 3412 "./util/configparser.y" + case 646: +#line 3423 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; @@ -7360,11 +7379,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 7364 "util/configparser.c" +#line 7383 "util/configparser.c" break; - case 645: -#line 3427 "./util/configparser.y" + case 647: +#line 3438 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); @@ -7376,11 +7395,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 7380 "util/configparser.c" +#line 7399 "util/configparser.c" break; - case 646: -#line 3440 "./util/configparser.y" + case 648: +#line 3451 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str))); @@ -7392,11 +7411,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 7396 "util/configparser.c" +#line 7415 "util/configparser.c" break; - case 647: -#line 3453 "./util/configparser.y" + case 649: +#line 3464 "./util/configparser.y" { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) @@ -7406,19 +7425,19 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 7410 "util/configparser.c" +#line 7429 "util/configparser.c" break; - case 648: -#line 3464 "./util/configparser.y" + case 650: +#line 3475 "./util/configparser.y" { OUTYY(("\nP(ipset:)\n")); } -#line 7418 "util/configparser.c" +#line 7437 "util/configparser.c" break; - case 653: -#line 3473 "./util/configparser.y" + case 655: +#line 3484 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); @@ -7432,11 +7451,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7436 "util/configparser.c" +#line 7455 "util/configparser.c" break; - case 654: -#line 3488 "./util/configparser.y" + case 656: +#line 3499 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); @@ -7450,11 +7469,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7454 "util/configparser.c" +#line 7473 "util/configparser.c" break; -#line 7458 "util/configparser.c" +#line 7477 "util/configparser.c" default: break; } @@ -7648,7 +7667,7 @@ yyreturn: return yyresult; } -#line 3502 "./util/configparser.y" +#line 3513 "./util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index 98e628db7..aa54b9a17 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -364,7 +364,8 @@ extern int yydebug; VAR_EDNS_CLIENT_STRING_OPCODE = 565, /* VAR_EDNS_CLIENT_STRING_OPCODE */ VAR_NSID = 566, /* VAR_NSID */ VAR_ZONEMD_PERMISSIVE_MODE = 567, /* VAR_ZONEMD_PERMISSIVE_MODE */ - VAR_ZONEMD_REJECT_ABSENCE = 568 /* VAR_ZONEMD_REJECT_ABSENCE */ + VAR_ZONEMD_CHECK = 568, /* VAR_ZONEMD_CHECK */ + VAR_ZONEMD_REJECT_ABSENCE = 569 /* VAR_ZONEMD_REJECT_ABSENCE */ }; typedef enum yytokentype yytoken_kind_t; #endif @@ -682,7 +683,8 @@ extern int yydebug; #define VAR_EDNS_CLIENT_STRING_OPCODE 565 #define VAR_NSID 566 #define VAR_ZONEMD_PERMISSIVE_MODE 567 -#define VAR_ZONEMD_REJECT_ABSENCE 568 +#define VAR_ZONEMD_CHECK 568 +#define VAR_ZONEMD_REJECT_ABSENCE 569 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -692,7 +694,7 @@ union YYSTYPE char* str; -#line 696 "util/configparser.h" +#line 698 "util/configparser.h" }; typedef union YYSTYPE YYSTYPE; diff --git a/util/configparser.y b/util/configparser.y index 6a8f83112..2418f7c74 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -182,7 +182,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_RPZ_CNAME_OVERRIDE VAR_RPZ_LOG VAR_RPZ_LOG_NAME %token VAR_DYNLIB VAR_DYNLIB_FILE VAR_EDNS_CLIENT_STRING %token VAR_EDNS_CLIENT_STRING_OPCODE VAR_NSID -%token VAR_ZONEMD_PERMISSIVE_MODE VAR_ZONEMD_REJECT_ABSENCE +%token VAR_ZONEMD_PERMISSIVE_MODE VAR_ZONEMD_CHECK VAR_ZONEMD_REJECT_ABSENCE %% toplevelvars: /* empty */ | toplevelvars toplevelvar ; @@ -370,6 +370,7 @@ authstart: VAR_AUTH_ZONE s->for_downstream = 1; s->for_upstream = 1; s->fallback_enabled = 0; + s->zonemd_check = 0; s->zonemd_reject_absence = 0; s->isrpz = 0; } else @@ -380,7 +381,7 @@ contents_auth: contents_auth content_auth | ; content_auth: auth_name | auth_zonefile | auth_master | auth_url | auth_for_downstream | auth_for_upstream | auth_fallback_enabled | - auth_allow_notify | auth_zonemd_reject_absence + auth_allow_notify | auth_zonemd_check | auth_zonemd_reject_absence ; rpz_tag: VAR_TAGS STRING_ARG @@ -2788,6 +2789,16 @@ auth_allow_notify: VAR_ALLOW_NOTIFY STRING_ARG yyerror("out of memory"); } ; +auth_zonemd_check: VAR_ZONEMD_CHECK STRING_ARG + { + OUTYY(("P(zonemd-check:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->auths->zonemd_check = + (strcmp($2, "yes")==0); + free($2); + } + ; auth_zonemd_reject_absence: VAR_ZONEMD_REJECT_ABSENCE STRING_ARG { OUTYY(("P(zonemd-reject-absence:%s)\n", $2)); From eb0e029dda38d9df317f0ee1e8872576c5b75318 Mon Sep 17 00:00:00 2001 From: Tom Carpay Date: Thu, 27 May 2021 15:22:32 +0200 Subject: [PATCH 141/553] add escaping --- sldns/str2wire.c | 87 +++++++++++++++++++++++++++++++++++++++--------- sldns/wire2str.c | 31 ++++++++++++++--- 2 files changed, 99 insertions(+), 19 deletions(-) diff --git a/sldns/str2wire.c b/sldns/str2wire.c index aec8e51fe..83eca3524 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -711,6 +711,18 @@ rrinternal_parse_rdata(sldns_buffer* strbuf, char* token, size_t token_len, /* write rdata length */ sldns_write_uint16(rr+dname_len+8, (uint16_t)(rr_cur_len-dname_len-10)); *rr_len = rr_cur_len; + /* SVCB/HTTPS handling */ + if (rr_type == LDNS_RR_TYPE_SVCB || rr_type == LDNS_RR_TYPE_HTTPS) { + + + + // 1. Find the size + // 2. qsort the data according to the keys + // 3. verify that keys are unique + // 4. verify that mandatory keys are present and unique + + + } return LDNS_WIREPARSE_ERR_OK; } @@ -976,14 +988,17 @@ sldns_str2wire_svcparam_key_lookup(const char *key, size_t key_len) if (!strncmp(key, "ipv6hint", sizeof("ipv6hint")-1)) return SVCB_KEY_IPV6HINT; break; + case sizeof("ech")-1: if (!strncmp(key, "ech", sizeof("ech")-1)) return SVCB_KEY_ECH; break; + default: break; } - if (key_len > sizeof(buf) - 1) {} + + if (key_len > sizeof(buf) - 1) {} // ERROR: Unknown SvcParamKey else { memcpy(buf, key, key_len); @@ -1286,7 +1301,6 @@ int sldns_str2wire_svcbparam_alpn_value(const char* val, size_t str_len; size_t dst_len; size_t val_len; - int wire_len; val_len = strlen(val); @@ -1328,8 +1342,28 @@ static int sldns_str2wire_svcparam_key_value(const char *key, size_t key_len, const char *val, uint8_t* rd, size_t* rd_len) { + size_t str_len; uint16_t svcparamkey = sldns_str2wire_svcparam_key_lookup(key, key_len); + + // @TODO add case where svcparamkey == -1 + + /* key and no value case*/ + if (val == NULL) { + sldns_write_uint16(rd, svcparamkey); + sldns_write_uint16(rd + 2, 0); + *rd_len = 4; + + return LDNS_WIREPARSE_ERR_OK; + } + + // @TODO unescape characters in the value list + + // if (val[0] == '"' && val[str_len - 1]) { + + // } + + /* value is non-empty */ switch (svcparamkey) { case SVCB_KEY_PORT: return sldns_str2wire_svcparam_port(val, rd, rd_len); @@ -1340,18 +1374,24 @@ sldns_str2wire_svcparam_key_value(const char *key, size_t key_len, case SVCB_KEY_MANDATORY: return sldns_str2wire_svcbparam_mandatory(val, rd, rd_len); case SVCB_KEY_NO_DEFAULT_ALPN: + + // @TODO is this superfluous now? + return sldns_str2wire_svcbparam_no_default_alpn(val, rd, rd_len); - // if(zone_is_slave(parser->current_zone->opts)) - // zc_warning_prev_line("no-default-alpn should not have a value"); - // else - // zc_error_prev_line("no-default-alpn should not have a value"); - // break; case SVCB_KEY_ECH: return sldns_str2wire_svcbparam_ech_value(val, rd, rd_len); case SVCB_KEY_ALPN: return sldns_str2wire_svcbparam_alpn_value(val, rd, rd_len); default: - break; + // @TODO escaping here -> copy from alpn? + + str_len = strlen(val); + sldns_write_uint16(rd, svcparamkey); + sldns_write_uint16(rd + 2, str_len); + memcpy(rd + 4, val, str_len); + *rd_len = 4 + str_len; + + return LDNS_WIREPARSE_ERR_OK; } // @TODO change to error? @@ -1360,18 +1400,35 @@ sldns_str2wire_svcparam_key_value(const char *key, size_t key_len, int sldns_str2wire_svcparam_buf(const char* str, uint8_t* rd, size_t* rd_len) { + size_t str_len; const char* eq_pos; - - int ret; + char unescaped_val[65536]; + char* val_out = unescaped_val; + const char* val_in; eq_pos = strchr(str, '='); - // @TODO handle "key=" case + if (eq_pos != NULL && eq_pos[1]) { /* case: key=value */ + val_in = eq_pos + 1; + + /* unescape characters and "" blocks */ + if (*val_in == '"') { + val_in++; + while (*val_in != '"' && sldns_parse_char( (uint8_t*) val_out, &val_in)) { + val_out++; + } + } else { + while ( sldns_parse_char( (uint8_t*) val_out, &val_in)) { + val_out++; + } + } + *val_out = 0; - /* Verify that we have a have a value */ - if (eq_pos != NULL) { - return sldns_str2wire_svcparam_key_value(str, eq_pos - str, eq_pos + 1, rd, rd_len); - } else { + return sldns_str2wire_svcparam_key_value(str, eq_pos - str, + unescaped_val[0] ? unescaped_val : NULL, rd, rd_len); + } else if (eq_pos != NULL && !(eq_pos[1])) { /* case: key= */ + return sldns_str2wire_svcparam_key_value(str, eq_pos - str, NULL, rd, rd_len); + } else { /* case: key */ return sldns_str2wire_svcparam_key_value(str, strlen(str), NULL, rd, rd_len); } diff --git a/sldns/wire2str.c b/sldns/wire2str.c index 07a4911c4..cf87f0aa8 100644 --- a/sldns/wire2str.c +++ b/sldns/wire2str.c @@ -199,7 +199,7 @@ sldns_lookup_table* sldns_tsig_errors = sldns_tsig_errors_data; /* draft-ietf-dnsop-svcb-https-04: 6. Initial SvcParamKeys */ const char *svcparamkey_strs[] = { "mandatory", "alpn", "no-default-alpn", "port", - "ipv4hint", "echconfig", "ipv6hint" + "ipv4hint", "ech", "ipv6hint" }; char* sldns_wire2str_pkt(uint8_t* data, size_t len) @@ -965,6 +965,8 @@ static int sldns_wire2str_svcparam_port2str(char** s, if (data_len != 2) return -1; /* wireformat error, a short is 2 bytes */ w = sldns_str_print(s, slen, "=%d", (int)sldns_read_uint16(data)); + *data += 2; + return w; } @@ -1117,9 +1119,10 @@ static int sldns_wire2str_svcparam_ech2str(char** s, int sldns_wire2str_svcparam_scan(uint8_t** d, size_t* dlen, char** s, size_t* slen) { + char ch; uint16_t svcparamkey, data_len; int written_chars = 0; - int r; + int r, i; /* verify that we have enough data to read svcparamkey and data_len */ if(*dlen < 4) @@ -1130,12 +1133,15 @@ int sldns_wire2str_svcparam_scan(uint8_t** d, size_t* dlen, char** s, size_t* sl *d += 4; *dlen -= 4; + // fprintf(stderr, "data_len: %hu\n", data_len); + /* verify that we have data_len data */ if (data_len > *dlen) return -1; written_chars += sldns_print_svcparamkey(s, slen, svcparamkey); if (!data_len) { + /* Some SvcParams MUST have values */ switch (svcparamkey) { case SVCB_KEY_ALPN: @@ -1143,11 +1149,12 @@ int sldns_wire2str_svcparam_scan(uint8_t** d, size_t* dlen, char** s, size_t* sl case SVCB_KEY_IPV4HINT: case SVCB_KEY_IPV6HINT: case SVCB_KEY_MANDATORY: - return -1; + return LDNS_WIREPARSE_ERR_SYNTAX_MISSING_VALUE; default: - return written_chars; + return LDNS_WIREPARSE_ERR_OK; } } + switch (svcparamkey) { case SVCB_KEY_PORT: r = sldns_wire2str_svcparam_port2str(s, slen, data_len, *d); @@ -1170,6 +1177,22 @@ int sldns_wire2str_svcparam_scan(uint8_t** d, size_t* dlen, char** s, size_t* sl r = sldns_wire2str_svcparam_ech2str(s, slen, data_len, *d); break; default: + r += sldns_str_print(s, slen, "=\""); + + for (i = 0; i < data_len; i++) { + ch = (*d)[i]; + + if (ch == '"' || ch == '\\') + r += sldns_str_print(s, slen, "\\%c", ch); + + else if (!isprint(ch)) + r += sldns_str_print(s, slen, "\\%03u", (unsigned) ch); + + else + r += sldns_str_print(s, slen, "%c", ch); + + } + r += sldns_str_print(s, slen, "%c", '"'); break; } if (r <= 0) From 9dcfc90225f356aa5c1ad868a201629875c54539 Mon Sep 17 00:00:00 2001 From: Tom Carpay Date: Thu, 27 May 2021 14:15:15 +0000 Subject: [PATCH 142/553] start of sldns_heck_svcbparams --- sldns/str2wire.c | 69 ++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 64 insertions(+), 5 deletions(-) diff --git a/sldns/str2wire.c b/sldns/str2wire.c index 83eca3524..8eafca042 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -614,6 +614,43 @@ sldns_affix_token(sldns_buffer* strbuf, char* token, size_t* token_len, return 1; } +static void sldns_check_svcbparams(uint8_t* rdata, uint16_t rdata_len) +{ + size_t nparams = 0, i; + uint8_t* svcparams[10240]; // @TODO change array size in actual max number of svcbparams + + // 1. Find the SvcParams + while (rdata_len) { + uint16_t svcbparam_len; + + svcparams[nparams] = rdata; + if (rdata_len < 4) + return; + svcbparam_len = sldns_read_uint16(rdata + 2); + rdata_len -= 4; + rdata += 4; + + if (rdata_len < svcbparam_len) + return; + rdata_len -= svcbparam_len; + rdata += svcbparam_len; + + nparams += 1; + } + + for (i = 0; i < nparams; i++) { + uint8_t* svcparam_data = svcparams[i]; + uint16_t svcparam_key = sldns_read_uint16(svcparam_data); + uint16_t svcparam_len = sldns_read_uint16(svcparam_data + 2); + + fprintf(stderr, "param %zu, key: %d, len: %d\n" + , i, (int)svcparam_key, (int)svcparam_len); + } + // 2. qsort the data according to the keys + // 3. verify that keys are unique + // 4. verify that mandatory keys are present and unique +} + /** parse rdata from string into rr buffer(-remainder after dname). */ static int rrinternal_parse_rdata(sldns_buffer* strbuf, char* token, size_t token_len, @@ -713,15 +750,37 @@ rrinternal_parse_rdata(sldns_buffer* strbuf, char* token, size_t token_len, *rr_len = rr_cur_len; /* SVCB/HTTPS handling */ if (rr_type == LDNS_RR_TYPE_SVCB || rr_type == LDNS_RR_TYPE_HTTPS) { - + uint16_t rdata_len = rr_cur_len - dname_len - 10; + uint8_t *rdata = rr+dname_len + 10; + /* skip 1st rdata field SvcPriority (uint16_t) */ + if (rdata_len < sizeof(uint16_t)) + return LDNS_WIREPARSE_ERR_OK; - // 1. Find the size - // 2. qsort the data according to the keys - // 3. verify that keys are unique - // 4. verify that mandatory keys are present and unique + rdata_len -= sizeof(uint16_t); + rdata += sizeof(uint16_t); + /* skip 2nd rdata field dname */ + while (rdata_len && *rdata != 0) { + uint8_t label_len; + if (*rdata & 0xC0) + return LDNS_WIREPARSE_ERR_OK; + + label_len = *rdata + 1; + if (rdata_len < label_len) + return LDNS_WIREPARSE_ERR_OK; + + rdata_len -= label_len; + rdata += label_len; + } + assert(*rdata == 0); + if (rdata_len < 2) + return LDNS_WIREPARSE_ERR_OK; + + rdata_len -= 1; + rdata += 1; + check_svcbparams(rdata, rdata_len); } return LDNS_WIREPARSE_ERR_OK; } From 2e8787167802f9f68a82c46917bf61f71f5e9980 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Tue, 1 Jun 2021 18:02:10 +0200 Subject: [PATCH 143/553] - Fix test for zonemd-check option. --- doc/Changelog | 3 +++ testdata/zonemd_reload.tdir/zonemd_reload.conf | 1 + 2 files changed, 4 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 1362ef7b0..1751095a8 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +1 June 2021: George + - Fix test for zonemd-check option. + 27 May 2021: Wouter - Merge #496 from banburybill: Use build system endianness if available, otherwise try to work it out. diff --git a/testdata/zonemd_reload.tdir/zonemd_reload.conf b/testdata/zonemd_reload.tdir/zonemd_reload.conf index 27bdb4424..9afd6e2b1 100644 --- a/testdata/zonemd_reload.tdir/zonemd_reload.conf +++ b/testdata/zonemd_reload.tdir/zonemd_reload.conf @@ -19,4 +19,5 @@ auth-zone: for-upstream: yes for-downstream: yes zonefile: "zonemd_reload.zone" + zonemd-check: yes #master: "127.0.0.1@@TOPORT@" From e89743b2b8c37910b74b18fc7ad85981876afd74 Mon Sep 17 00:00:00 2001 From: Tom Carpay Date: Wed, 2 Jun 2021 10:10:05 +0200 Subject: [PATCH 144/553] add check_svcbparams --- sldns/str2wire.c | 108 +++++++++++++++++++++++++++++++++++++++-------- sldns/str2wire.h | 5 +++ sldns/wire2str.c | 9 +++- 3 files changed, 102 insertions(+), 20 deletions(-) diff --git a/sldns/str2wire.c b/sldns/str2wire.c index 8eafca042..1ae173014 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -614,41 +614,91 @@ sldns_affix_token(sldns_buffer* strbuf, char* token, size_t* token_len, return 1; } -static void sldns_check_svcbparams(uint8_t* rdata, uint16_t rdata_len) +static int sldns_str2wire_svcparam_key_cmp(const void *a, const void *b) { - size_t nparams = 0, i; - uint8_t* svcparams[10240]; // @TODO change array size in actual max number of svcbparams + return sldns_read_uint16(*(uint8_t**) a) + - sldns_read_uint16(*(uint8_t**) b); +} - // 1. Find the SvcParams +static int sldns_str2wire_check_svcbparams(uint8_t* rdata, uint16_t rdata_len) +{ + size_t nparams = 0, i, j; + uint8_t* svcparams[10240]; // @TODO change array size in actual max number of svcbparams + uint8_t* mandatory = NULL; + + /* find the SvcParams */ while (rdata_len) { uint16_t svcbparam_len; svcparams[nparams] = rdata; if (rdata_len < 4) - return; + // @TODO verify that these are correct + return LDNS_WIREPARSE_ERR_OK; svcbparam_len = sldns_read_uint16(rdata + 2); rdata_len -= 4; rdata += 4; if (rdata_len < svcbparam_len) - return; + // @TODO verify that these are correct + return LDNS_WIREPARSE_ERR_OK; rdata_len -= svcbparam_len; rdata += svcbparam_len; nparams += 1; } - for (i = 0; i < nparams; i++) { - uint8_t* svcparam_data = svcparams[i]; - uint16_t svcparam_key = sldns_read_uint16(svcparam_data); - uint16_t svcparam_len = sldns_read_uint16(svcparam_data + 2); + /* In draft-ietf-dnsop-svcb-https-05 Section 7: + * + * In wire format, the keys are represented by their numeric + * values in network byte order, concatenated in ascending order. + */ + qsort((void *)svcparams + ,nparams + ,sizeof(uint8_t*) + ,sldns_str2wire_svcparam_key_cmp); - fprintf(stderr, "param %zu, key: %d, len: %d\n" - , i, (int)svcparam_key, (int)svcparam_len); + /* In draft-ietf-dnsop-svcb-https-05 Section 7: + * + * Keys (...) MUST NOT appear more than once. + * + * If they key has already been seen, we have a duplicate + */ + for (i = 0; i < nparams - 1; i++) { + uint16_t key = sldns_read_uint16(svcparams[i]); + + if (i + 1 < nparams && key == sldns_read_uint16(svcparams[i+1])) + return LDNS_WIREPARSE_ERR_SVCB_DUPLICATE_KEYS; + + if (key == SVCB_KEY_MANDATORY) + mandatory = svcparams[i]; } - // 2. qsort the data according to the keys - // 3. verify that keys are unique - // 4. verify that mandatory keys are present and unique + + /* 4. verify that all the SvcParamKeys in mandatory are present */ + if (mandatory) { + /* divide by sizeof(uint16_t)*/ + uint16_t mandatory_len = sldns_read_uint16(mandatory + 2) >> 1; + + // @TODO do we need this? + if (mandatory_len < 1) + return LDNS_WIREPARSE_ERR_SVCB_MISSING_PARAM; + + for (i = 0; i < mandatory_len; i++) { + // @TODO fix ugly math + uint16_t mandatory_key = sldns_read_uint16(mandatory + 2 + 2 * i); + uint8_t found = 0; + + for (j = 0; j < nparams; j++) { + if (mandatory_key == sldns_read_uint16(svcparams[j])) + found = 1; + } + + if (!found) + return LDNS_WIREPARSE_ERR_SVCB_MISSING_MANDATORY; + } + + } + + return LDNS_WIREPARSE_ERR_OK; } /** parse rdata from string into rr buffer(-remainder after dname). */ @@ -750,7 +800,7 @@ rrinternal_parse_rdata(sldns_buffer* strbuf, char* token, size_t token_len, *rr_len = rr_cur_len; /* SVCB/HTTPS handling */ if (rr_type == LDNS_RR_TYPE_SVCB || rr_type == LDNS_RR_TYPE_HTTPS) { - uint16_t rdata_len = rr_cur_len - dname_len - 10; + size_t rdata_len = rr_cur_len - dname_len - 10; uint8_t *rdata = rr+dname_len + 10; /* skip 1st rdata field SvcPriority (uint16_t) */ @@ -780,7 +830,8 @@ rrinternal_parse_rdata(sldns_buffer* strbuf, char* token, size_t token_len, rdata_len -= 1; rdata += 1; - check_svcbparams(rdata, rdata_len); + return sldns_str2wire_check_svcbparams(rdata, rdata_len); + } return LDNS_WIREPARSE_ERR_OK; } @@ -1264,13 +1315,32 @@ sldns_str2wire_svcbparam_mandatory(const char* val, uint8_t* rd, size_t* rd_len) key_dst += 1; } - /* In draft-ietf-dnsop-svcb-https-04 Section 7: + /* In draft-ietf-dnsop-svcb-https-05 Section 7: * * "In wire format, the keys are represented by their numeric * values in network byte order, concatenated in ascending order." */ qsort((void *)(rd + 4), count, sizeof(uint16_t), sldns_network_uint16_cmp); + /* Guarantee key uniqueness. After the sort we only need to + * compare neighbours */ + if (count > 1) { + for (i = 0; i < count - 1; i++) { + uint8_t* current_pos = (rd + 4 + (sizeof(uint16_t) * i)); + uint16_t key = sldns_read_uint16(current_pos); + + /* In draft-ietf-dnsop-svcb-https-05 Section 8 + * automatically mandatory MUST NOT appear in its own value-list + */ + if (key == SVCB_KEY_MANDATORY) + return LDNS_WIREPARSE_ERR_SVCB_MANDATORY_IN_MANDATORY; + + if (key == sldns_read_uint16(current_pos + 2)) { + return LDNS_WIREPARSE_ERR_SVCB_MANDATORY_DUPLICATE_KEY; + } + } + } + return LDNS_WIREPARSE_ERR_OK; } @@ -1407,6 +1477,8 @@ sldns_str2wire_svcparam_key_value(const char *key, size_t key_len, // @TODO add case where svcparamkey == -1 + // @TODO add cases where keys cannot be vallueless -> LDNS_WIREPARSE_ERR_SVCB_MISSING_PARAM + /* key and no value case*/ if (val == NULL) { sldns_write_uint16(rd, svcparamkey); diff --git a/sldns/str2wire.h b/sldns/str2wire.h index b687546a7..fbdda66e2 100644 --- a/sldns/str2wire.h +++ b/sldns/str2wire.h @@ -219,6 +219,11 @@ uint8_t* sldns_wirerr_get_rdatawl(uint8_t* rr, size_t len, size_t dname_len); #define LDNS_WIREPARSE_ERR_SYNTAX_INTEGER_OVERFLOW 370 #define LDNS_WIREPARSE_ERR_INCLUDE 371 #define LDNS_WIREPARSE_ERR_PARENTHESIS 372 +#define LDNS_WIREPARSE_ERR_SVCB_MISSING_PARAM 373 +#define LDNS_WIREPARSE_ERR_SVCB_MISSING_MANDATORY 374 +#define LDNS_WIREPARSE_ERR_SVCB_MANDATORY_DUPLICATE_KEY 375 +#define LDNS_WIREPARSE_ERR_SVCB_MANDATORY_IN_MANDATORY 376 +#define LDNS_WIREPARSE_ERR_SVCB_DUPLICATE_KEYS 377 /** * Get reference to a constant string for the (parse) error. diff --git a/sldns/wire2str.c b/sldns/wire2str.c index cf87f0aa8..9426bdb2c 100644 --- a/sldns/wire2str.c +++ b/sldns/wire2str.c @@ -149,6 +149,13 @@ static sldns_lookup_table sldns_wireparse_errors_data[] = { { LDNS_WIREPARSE_ERR_SYNTAX_INTEGER_OVERFLOW, "Syntax error, integer overflow" }, { LDNS_WIREPARSE_ERR_INCLUDE, "$INCLUDE directive was seen in the zone" }, { LDNS_WIREPARSE_ERR_PARENTHESIS, "Parse error, parenthesis mismatch" }, + { LDNS_WIREPARSE_ERR_SVCB_MISSING_PARAM, "Value expected for SvcParam"}, + { LDNS_WIREPARSE_ERR_SVCB_MISSING_MANDATORY, "Mandatory SvcParamKey is missing"}, + { LDNS_WIREPARSE_ERR_SVCB_MANDATORY_DUPLICATE_KEY, + "Keys in SvcParam mandatory MUST be unique" }, + { LDNS_WIREPARSE_ERR_SVCB_MANDATORY_IN_MANDATORY, + "mandatory MUST not be included as mandatory parameter" }, + { LDNS_WIREPARSE_ERR_SVCB_DUPLICATE_KEYS, "Duplicate SVCB key found"}, { 0, NULL } }; sldns_lookup_table* sldns_wireparse_errors = sldns_wireparse_errors_data; @@ -1133,8 +1140,6 @@ int sldns_wire2str_svcparam_scan(uint8_t** d, size_t* dlen, char** s, size_t* sl *d += 4; *dlen -= 4; - // fprintf(stderr, "data_len: %hu\n", data_len); - /* verify that we have data_len data */ if (data_len > *dlen) return -1; From 41f642bfb9e44d5263920f766732d9bcfb7c9e56 Mon Sep 17 00:00:00 2001 From: Tom Carpay Date: Wed, 2 Jun 2021 12:27:48 +0200 Subject: [PATCH 145/553] add error handling --- sldns/str2wire.c | 66 ++++++++++++++++++++++++++++-------------------- sldns/str2wire.h | 16 ++++++++---- sldns/wire2str.c | 15 +++++++++-- 3 files changed, 62 insertions(+), 35 deletions(-) diff --git a/sldns/str2wire.c b/sldns/str2wire.c index 1ae173014..0053a757a 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -620,10 +620,15 @@ static int sldns_str2wire_svcparam_key_cmp(const void *a, const void *b) - sldns_read_uint16(*(uint8_t**) b); } +/** + * Add constraints to the SVCB RRs which involve the whole set + */ static int sldns_str2wire_check_svcbparams(uint8_t* rdata, uint16_t rdata_len) { size_t nparams = 0, i, j; - uint8_t* svcparams[10240]; // @TODO change array size in actual max number of svcbparams + uint8_t new_rdata[65536]; + uint8_t* new_rdata_ptr = new_rdata; + uint8_t* svcparams[64]; uint8_t* mandatory = NULL; /* find the SvcParams */ @@ -684,7 +689,7 @@ static int sldns_str2wire_check_svcbparams(uint8_t* rdata, uint16_t rdata_len) for (i = 0; i < mandatory_len; i++) { // @TODO fix ugly math - uint16_t mandatory_key = sldns_read_uint16(mandatory + 2 + 2 * i); + uint16_t mandatory_key = sldns_read_uint16(mandatory + 4 + i * 2); uint8_t found = 0; for (j = 0; j < nparams; j++) { @@ -693,11 +698,21 @@ static int sldns_str2wire_check_svcbparams(uint8_t* rdata, uint16_t rdata_len) } if (!found) - return LDNS_WIREPARSE_ERR_SVCB_MISSING_MANDATORY; + return LDNS_WIREPARSE_ERR_SVCB_MANDATORY_MISSING_PARAM; } } + // Write rdata + for (i = 0; i < nparams; i++) { + uint16_t svcparam_len = sldns_read_uint16(svcparams[i] + 2) + 4; + fprintf(stderr, "svcparam_len: %d\n", svcparam_len); + memcpy(new_rdata_ptr, svcparams[i], svcparam_len); + new_rdata_ptr += svcparam_len; + } + memcpy(rdata, new_rdata, new_rdata_ptr - new_rdata); + fprintf(stderr, "new_rdata_ptr - new_rdata: %d\n", new_rdata_ptr - new_rdata); + return LDNS_WIREPARSE_ERR_OK; } @@ -1107,14 +1122,7 @@ sldns_str2wire_svcparam_key_lookup(const char *key, size_t key_len) default: break; } - - if (key_len > sizeof(buf) - 1) {} - // ERROR: Unknown SvcParamKey - else { - memcpy(buf, key, key_len); - buf[key_len] = 0; - // Error: "Unknown SvcParamKey: %s" - } + /* Although the returned value might be used by the caller, * the parser has erred, so the zone will not be loaded. */ @@ -1144,8 +1152,7 @@ sldns_str2wire_svcparam_port(const char* val, uint8_t* rd, size_t* rd_len) return LDNS_WIREPARSE_ERR_OK; } - // ERROR: "Could not parse port SvcParamValue" - return -1; + return LDNS_WIREPARSE_ERR_SVCB_PORT_UNKNOWN_KEY; } static int @@ -1162,8 +1169,7 @@ sldns_str2wire_svcbparam_ipv4hint(const char* val, uint8_t* rd, size_t* rd_len) if (val[i] == ',') count += 1; if (count > SVCB_MAX_COMMA_SEPARATED_VALUES) { - // ERROR "Too many IPV4 addresses in ipv4hint" - return -1; + return LDNS_WIREPARSE_ERR_SVCB_IPV4_TOO_MANY_KEYS; } } @@ -1192,7 +1198,6 @@ sldns_str2wire_svcbparam_ipv4hint(const char* val, uint8_t* rd, size_t* rd_len) memcpy(ip_str, val, next_ip_str - val); ip_str[next_ip_str - val] = 0; if (inet_pton(AF_INET, ip_str, rd + *rd_len) != 1) { - val = ip_str; /* to use in error reporting below */ break; } *rd_len += LDNS_IP4ADDRLEN; @@ -1221,8 +1226,7 @@ sldns_str2wire_svcbparam_ipv6hint(const char* val, uint8_t* rd, size_t* rd_len) if (val[i] == ',') count += 1; if (count > SVCB_MAX_COMMA_SEPARATED_VALUES) { - // ERROR "Too many IPV4 addresses in ipv4hint" - return -1; + return LDNS_WIREPARSE_ERR_SVCB_IPV6_TOO_MANY_KEYS; } } @@ -1261,8 +1265,8 @@ sldns_str2wire_svcbparam_ipv6hint(const char* val, uint8_t* rd, size_t* rd_len) ip_wire_dst++; count--; } - // if (count) /* verify that we parsed all values */ - // ERROR "Could not parse ipv6hint SvcParamValue: " + if (count) /* verify that we parsed all values */ + return LDNS_WIREPARSE_ERR_SYNTAX_IP6; return LDNS_WIREPARSE_ERR_OK; } @@ -1287,8 +1291,7 @@ sldns_str2wire_svcbparam_mandatory(const char* val, uint8_t* rd, size_t* rd_len) if (val[i] == ',') count += 1; if (count > SVCB_MAX_COMMA_SEPARATED_VALUES) { - // ERROR "Too many keys in mandatory" - return -1; + return LDNS_WIREPARSE_ERR_SVCB_MANDATORY_TOO_MANY_KEYS; } } if (sizeof(uint16_t) * (count + 2) > *rd_len) @@ -1443,8 +1446,7 @@ int sldns_str2wire_svcbparam_alpn_value(const char* val, ? (size_t)(next_str - val) : val_len; if (str_len > 255) { - // ERROR "alpn strings need to be smaller than 255 chars" - return LDNS_WIREPARSE_ERR_SYNTAX_INTEGER_OVERFLOW; + return LDNS_WIREPARSE_ERR_SVCB_ALPN_KEY_TOO_LARGE; } dst_len = sldns_str2wire_svcbparam_parse_alpn_copy_unescaped(dst + 1, val, str_len); *dst++ = dst_len; @@ -1474,18 +1476,26 @@ sldns_str2wire_svcparam_key_value(const char *key, size_t key_len, size_t str_len; uint16_t svcparamkey = sldns_str2wire_svcparam_key_lookup(key, key_len); - - // @TODO add case where svcparamkey == -1 - - // @TODO add cases where keys cannot be vallueless -> LDNS_WIREPARSE_ERR_SVCB_MISSING_PARAM + if (svcparamkey < 0) { + return LDNS_WIREPARSE_ERR_SVCB_UNKNOWN_KEY; + } /* key and no value case*/ if (val == NULL) { + switch (svcparamkey) { + case SVCB_KEY_MANDATORY: + case SVCB_KEY_ALPN: + case SVCB_KEY_PORT: + case SVCB_KEY_IPV4HINT: + case SVCB_KEY_IPV6HINT: + return LDNS_WIREPARSE_ERR_SVCB_MISSING_PARAM; + default: sldns_write_uint16(rd, svcparamkey); sldns_write_uint16(rd + 2, 0); *rd_len = 4; return LDNS_WIREPARSE_ERR_OK; + } } // @TODO unescape characters in the value list diff --git a/sldns/str2wire.h b/sldns/str2wire.h index fbdda66e2..62efe9229 100644 --- a/sldns/str2wire.h +++ b/sldns/str2wire.h @@ -219,11 +219,17 @@ uint8_t* sldns_wirerr_get_rdatawl(uint8_t* rr, size_t len, size_t dname_len); #define LDNS_WIREPARSE_ERR_SYNTAX_INTEGER_OVERFLOW 370 #define LDNS_WIREPARSE_ERR_INCLUDE 371 #define LDNS_WIREPARSE_ERR_PARENTHESIS 372 -#define LDNS_WIREPARSE_ERR_SVCB_MISSING_PARAM 373 -#define LDNS_WIREPARSE_ERR_SVCB_MISSING_MANDATORY 374 -#define LDNS_WIREPARSE_ERR_SVCB_MANDATORY_DUPLICATE_KEY 375 -#define LDNS_WIREPARSE_ERR_SVCB_MANDATORY_IN_MANDATORY 376 -#define LDNS_WIREPARSE_ERR_SVCB_DUPLICATE_KEYS 377 +#define LDNS_WIREPARSE_ERR_SVCB_UNKNOWN_KEY 373 +#define LDNS_WIREPARSE_ERR_SVCB_MISSING_PARAM 374 +#define LDNS_WIREPARSE_ERR_SVCB_DUPLICATE_KEYS 375 +#define LDNS_WIREPARSE_ERR_SVCB_MANDATORY_TOO_MANY_KEYS 376 +#define LDNS_WIREPARSE_ERR_SVCB_MANDATORY_MISSING_PARAM 377 +#define LDNS_WIREPARSE_ERR_SVCB_MANDATORY_DUPLICATE_KEY 378 +#define LDNS_WIREPARSE_ERR_SVCB_MANDATORY_IN_MANDATORY 379 +#define LDNS_WIREPARSE_ERR_SVCB_PORT_UNKNOWN_KEY 380 +#define LDNS_WIREPARSE_ERR_SVCB_IPV4_TOO_MANY_KEYS 381 +#define LDNS_WIREPARSE_ERR_SVCB_IPV6_TOO_MANY_KEYS 382 +#define LDNS_WIREPARSE_ERR_SVCB_ALPN_KEY_TOO_LARGE 383 /** * Get reference to a constant string for the (parse) error. diff --git a/sldns/wire2str.c b/sldns/wire2str.c index 9426bdb2c..48dc55a98 100644 --- a/sldns/wire2str.c +++ b/sldns/wire2str.c @@ -149,13 +149,24 @@ static sldns_lookup_table sldns_wireparse_errors_data[] = { { LDNS_WIREPARSE_ERR_SYNTAX_INTEGER_OVERFLOW, "Syntax error, integer overflow" }, { LDNS_WIREPARSE_ERR_INCLUDE, "$INCLUDE directive was seen in the zone" }, { LDNS_WIREPARSE_ERR_PARENTHESIS, "Parse error, parenthesis mismatch" }, + { LDNS_WIREPARSE_ERR_SVCB_UNKNOWN_KEY, "Unknown SvcParamKey"}, { LDNS_WIREPARSE_ERR_SVCB_MISSING_PARAM, "Value expected for SvcParam"}, - { LDNS_WIREPARSE_ERR_SVCB_MISSING_MANDATORY, "Mandatory SvcParamKey is missing"}, + { LDNS_WIREPARSE_ERR_SVCB_DUPLICATE_KEYS, "Duplicate SVCB key found"}, + { LDNS_WIREPARSE_ERR_SVCB_MANDATORY_TOO_MANY_KEYS, "Too many keys in mandatory" }, + { LDNS_WIREPARSE_ERR_SVCB_MANDATORY_MISSING_PARAM, + "Mandatory SvcParamKey is missing"}, { LDNS_WIREPARSE_ERR_SVCB_MANDATORY_DUPLICATE_KEY, "Keys in SvcParam mandatory MUST be unique" }, { LDNS_WIREPARSE_ERR_SVCB_MANDATORY_IN_MANDATORY, "mandatory MUST not be included as mandatory parameter" }, - { LDNS_WIREPARSE_ERR_SVCB_DUPLICATE_KEYS, "Duplicate SVCB key found"}, + { LDNS_WIREPARSE_ERR_SVCB_PORT_UNKNOWN_KEY, + "Could not parse port SvcParamValue" }, + { LDNS_WIREPARSE_ERR_SVCB_IPV4_TOO_MANY_KEYS, + "Too many IPv4 addresses in ipv4hint" }, + { LDNS_WIREPARSE_ERR_SVCB_IPV6_TOO_MANY_KEYS, + "Too many IPv6 addresses in ipv6hint" }, + { LDNS_WIREPARSE_ERR_SVCB_ALPN_KEY_TOO_LARGE, + "alpn strings need to be smaller than 255 chars"}, { 0, NULL } }; sldns_lookup_table* sldns_wireparse_errors = sldns_wireparse_errors_data; From e5acb8f638c2d1bb224b26fbd44b35898d935b9e Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Wed, 2 Jun 2021 12:50:04 +0200 Subject: [PATCH 146/553] Correct sorting of rdata --- sldns/str2wire.c | 38 ++++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/sldns/str2wire.c b/sldns/str2wire.c index 0053a757a..5d3950fa7 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -625,31 +625,37 @@ static int sldns_str2wire_svcparam_key_cmp(const void *a, const void *b) */ static int sldns_str2wire_check_svcbparams(uint8_t* rdata, uint16_t rdata_len) { - size_t nparams = 0, i, j; - uint8_t new_rdata[65536]; + size_t nparams = 0, i, j; + uint8_t new_rdata[65536]; uint8_t* new_rdata_ptr = new_rdata; uint8_t* svcparams[64]; uint8_t* mandatory = NULL; + uint8_t* rdata_ptr = rdata; + uint16_t rdata_remaining = rdata_len; /* find the SvcParams */ - while (rdata_len) { + while (rdata_remaining) { uint16_t svcbparam_len; - svcparams[nparams] = rdata; - if (rdata_len < 4) + svcparams[nparams] = rdata_ptr; + if (rdata_remaining < 4) // @TODO verify that these are correct return LDNS_WIREPARSE_ERR_OK; - svcbparam_len = sldns_read_uint16(rdata + 2); - rdata_len -= 4; - rdata += 4; + svcbparam_len = sldns_read_uint16(rdata_ptr + 2); + rdata_remaining -= 4; + rdata_ptr += 4; - if (rdata_len < svcbparam_len) + if (rdata_remaining < svcbparam_len) // @TODO verify that these are correct return LDNS_WIREPARSE_ERR_OK; - rdata_len -= svcbparam_len; - rdata += svcbparam_len; + rdata_remaining -= svcbparam_len; + rdata_ptr += svcbparam_len; nparams += 1; + if (nparams > sizeof(svcparams)) + // @TODO Too many svcparams. Unbound allows only + // sizeof(svcparams) svcparams. + return LDNS_WIREPARSE_ERR_OK; } /* In draft-ietf-dnsop-svcb-https-05 Section 7: @@ -703,15 +709,15 @@ static int sldns_str2wire_check_svcbparams(uint8_t* rdata, uint16_t rdata_len) } - // Write rdata + // Write rdata in correct order for (i = 0; i < nparams; i++) { - uint16_t svcparam_len = sldns_read_uint16(svcparams[i] + 2) + 4; - fprintf(stderr, "svcparam_len: %d\n", svcparam_len); + uint16_t svcparam_len = sldns_read_uint16(svcparams[i] + 2) + + 2 * sizeof(uint16_t); + memcpy(new_rdata_ptr, svcparams[i], svcparam_len); new_rdata_ptr += svcparam_len; } - memcpy(rdata, new_rdata, new_rdata_ptr - new_rdata); - fprintf(stderr, "new_rdata_ptr - new_rdata: %d\n", new_rdata_ptr - new_rdata); + memcpy(rdata, new_rdata, rdata_len); return LDNS_WIREPARSE_ERR_OK; } From cf8418c3194d351f08c02fc7fd9b1a0cc388b5a2 Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Wed, 2 Jun 2021 12:56:54 +0200 Subject: [PATCH 147/553] Rewrite SVCB rdata in correct order --- sldns/str2wire.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/sldns/str2wire.c b/sldns/str2wire.c index 5d3950fa7..e72037017 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -640,14 +640,14 @@ static int sldns_str2wire_check_svcbparams(uint8_t* rdata, uint16_t rdata_len) svcparams[nparams] = rdata_ptr; if (rdata_remaining < 4) // @TODO verify that these are correct - return LDNS_WIREPARSE_ERR_OK; + return LDNS_WIREPARSE_ERR_GENERAL; svcbparam_len = sldns_read_uint16(rdata_ptr + 2); rdata_remaining -= 4; rdata_ptr += 4; if (rdata_remaining < svcbparam_len) // @TODO verify that these are correct - return LDNS_WIREPARSE_ERR_OK; + return LDNS_WIREPARSE_ERR_GENERAL; rdata_remaining -= svcbparam_len; rdata_ptr += svcbparam_len; @@ -655,7 +655,7 @@ static int sldns_str2wire_check_svcbparams(uint8_t* rdata, uint16_t rdata_len) if (nparams > sizeof(svcparams)) // @TODO Too many svcparams. Unbound allows only // sizeof(svcparams) svcparams. - return LDNS_WIREPARSE_ERR_OK; + return LDNS_WIREPARSE_ERR_GENERAL; } /* In draft-ietf-dnsop-svcb-https-05 Section 7: @@ -714,11 +714,13 @@ static int sldns_str2wire_check_svcbparams(uint8_t* rdata, uint16_t rdata_len) uint16_t svcparam_len = sldns_read_uint16(svcparams[i] + 2) + 2 * sizeof(uint16_t); + if (new_rdata_ptr + svcparam_len - new_rdata > sizeof(new_rdata)) + return LDNS_WIREPARSE_ERR_BUFFER_TOO_SMALL; + memcpy(new_rdata_ptr, svcparams[i], svcparam_len); new_rdata_ptr += svcparam_len; } memcpy(rdata, new_rdata, rdata_len); - return LDNS_WIREPARSE_ERR_OK; } From 24faac236d4e0d4ab3d57e1340429c271a28aca4 Mon Sep 17 00:00:00 2001 From: Tom Carpay Date: Wed, 2 Jun 2021 16:26:30 +0200 Subject: [PATCH 148/553] implement todos --- sldns/str2wire.c | 62 ++++++++++++++++++------------------------------ sldns/str2wire.h | 20 +++++++++------- sldns/wire2str.c | 8 +++++-- 3 files changed, 40 insertions(+), 50 deletions(-) diff --git a/sldns/str2wire.c b/sldns/str2wire.c index e72037017..8e27d52aa 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -639,23 +639,19 @@ static int sldns_str2wire_check_svcbparams(uint8_t* rdata, uint16_t rdata_len) svcparams[nparams] = rdata_ptr; if (rdata_remaining < 4) - // @TODO verify that these are correct return LDNS_WIREPARSE_ERR_GENERAL; svcbparam_len = sldns_read_uint16(rdata_ptr + 2); rdata_remaining -= 4; rdata_ptr += 4; if (rdata_remaining < svcbparam_len) - // @TODO verify that these are correct return LDNS_WIREPARSE_ERR_GENERAL; rdata_remaining -= svcbparam_len; rdata_ptr += svcbparam_len; nparams += 1; if (nparams > sizeof(svcparams)) - // @TODO Too many svcparams. Unbound allows only - // sizeof(svcparams) svcparams. - return LDNS_WIREPARSE_ERR_GENERAL; + return LDNS_WIREPARSE_ERR_SVCB_TOO_MANY_PARAMS; } /* In draft-ietf-dnsop-svcb-https-05 Section 7: @@ -674,7 +670,7 @@ static int sldns_str2wire_check_svcbparams(uint8_t* rdata, uint16_t rdata_len) * * If they key has already been seen, we have a duplicate */ - for (i = 0; i < nparams - 1; i++) { + for (i = 0; i < nparams; i++) { uint16_t key = sldns_read_uint16(svcparams[i]); if (i + 1 < nparams && key == sldns_read_uint16(svcparams[i+1])) @@ -686,16 +682,17 @@ static int sldns_str2wire_check_svcbparams(uint8_t* rdata, uint16_t rdata_len) /* 4. verify that all the SvcParamKeys in mandatory are present */ if (mandatory) { - /* divide by sizeof(uint16_t)*/ + + /* Divide by sizeof(uint16_t)*/ uint16_t mandatory_len = sldns_read_uint16(mandatory + 2) >> 1; - // @TODO do we need this? - if (mandatory_len < 1) - return LDNS_WIREPARSE_ERR_SVCB_MISSING_PARAM; + /* Guaranteed by sldns_str2wire_svcparam_key_value */ + assert(mandatory_len > 0); for (i = 0; i < mandatory_len; i++) { - // @TODO fix ugly math - uint16_t mandatory_key = sldns_read_uint16(mandatory + 4 + i * 2); + uint16_t mandatory_key = sldns_read_uint16(mandatory + + 2 * sizeof(uint16_t) + + i * sizeof(uint16_t)); uint8_t found = 0; for (j = 0; j < nparams; j++) { @@ -1333,6 +1330,12 @@ sldns_str2wire_svcbparam_mandatory(const char* val, uint8_t* rd, size_t* rd_len) */ qsort((void *)(rd + 4), count, sizeof(uint16_t), sldns_network_uint16_cmp); + /* In draft-ietf-dnsop-svcb-https-05 Section 8 + * automatically mandatory MUST NOT appear in its own value-list + */ + if (sldns_read_uint16(rd + 4) == SVCB_KEY_MANDATORY) + return LDNS_WIREPARSE_ERR_SVCB_MANDATORY_IN_MANDATORY; + /* Guarantee key uniqueness. After the sort we only need to * compare neighbours */ if (count > 1) { @@ -1340,12 +1343,6 @@ sldns_str2wire_svcbparam_mandatory(const char* val, uint8_t* rd, size_t* rd_len) uint8_t* current_pos = (rd + 4 + (sizeof(uint16_t) * i)); uint16_t key = sldns_read_uint16(current_pos); - /* In draft-ietf-dnsop-svcb-https-05 Section 8 - * automatically mandatory MUST NOT appear in its own value-list - */ - if (key == SVCB_KEY_MANDATORY) - return LDNS_WIREPARSE_ERR_SVCB_MANDATORY_IN_MANDATORY; - if (key == sldns_read_uint16(current_pos + 2)) { return LDNS_WIREPARSE_ERR_SVCB_MANDATORY_DUPLICATE_KEY; } @@ -1355,29 +1352,19 @@ sldns_str2wire_svcbparam_mandatory(const char* val, uint8_t* rd, size_t* rd_len) return LDNS_WIREPARSE_ERR_OK; } -static int -sldns_str2wire_svcbparam_no_default_alpn(const char* val, uint8_t* rd, size_t* rd_len) -{ - if (*rd_len < 4) - return LDNS_WIREPARSE_ERR_BUFFER_TOO_SMALL; - - sldns_write_uint16(rd, SVCB_KEY_NO_DEFAULT_ALPN); - sldns_write_uint16(rd + 2, 0); - *rd_len = 4; - - return LDNS_WIREPARSE_ERR_OK; -} - static int sldns_str2wire_svcbparam_ech_value(const char* val, uint8_t* rd, size_t* rd_len) { uint8_t buffer[LDNS_MAX_RDFLEN]; int wire_len; - // @TODO fix this - // if(strcmp(b64, "0") == 0) { - /* single 0 represents empty buffer */ - // } + /* single 0 represents empty buffer */ + if(strcmp(val, "0") == 0) { + sldns_write_uint16(rd, SVCB_KEY_ECH); + sldns_write_uint16(rd + 2, 0); + + return LDNS_WIREPARSE_ERR_OK; + } wire_len = sldns_b64_pton(val, buffer, LDNS_MAX_RDFLEN); @@ -1523,10 +1510,7 @@ sldns_str2wire_svcparam_key_value(const char *key, size_t key_len, case SVCB_KEY_MANDATORY: return sldns_str2wire_svcbparam_mandatory(val, rd, rd_len); case SVCB_KEY_NO_DEFAULT_ALPN: - - // @TODO is this superfluous now? - - return sldns_str2wire_svcbparam_no_default_alpn(val, rd, rd_len); + return LDNS_WIREPARSE_ERR_SVCB_NO_DEFAULT_ALPN_VALUE; case SVCB_KEY_ECH: return sldns_str2wire_svcbparam_ech_value(val, rd, rd_len); case SVCB_KEY_ALPN: diff --git a/sldns/str2wire.h b/sldns/str2wire.h index 62efe9229..5fc096b3e 100644 --- a/sldns/str2wire.h +++ b/sldns/str2wire.h @@ -221,15 +221,17 @@ uint8_t* sldns_wirerr_get_rdatawl(uint8_t* rr, size_t len, size_t dname_len); #define LDNS_WIREPARSE_ERR_PARENTHESIS 372 #define LDNS_WIREPARSE_ERR_SVCB_UNKNOWN_KEY 373 #define LDNS_WIREPARSE_ERR_SVCB_MISSING_PARAM 374 -#define LDNS_WIREPARSE_ERR_SVCB_DUPLICATE_KEYS 375 -#define LDNS_WIREPARSE_ERR_SVCB_MANDATORY_TOO_MANY_KEYS 376 -#define LDNS_WIREPARSE_ERR_SVCB_MANDATORY_MISSING_PARAM 377 -#define LDNS_WIREPARSE_ERR_SVCB_MANDATORY_DUPLICATE_KEY 378 -#define LDNS_WIREPARSE_ERR_SVCB_MANDATORY_IN_MANDATORY 379 -#define LDNS_WIREPARSE_ERR_SVCB_PORT_UNKNOWN_KEY 380 -#define LDNS_WIREPARSE_ERR_SVCB_IPV4_TOO_MANY_KEYS 381 -#define LDNS_WIREPARSE_ERR_SVCB_IPV6_TOO_MANY_KEYS 382 -#define LDNS_WIREPARSE_ERR_SVCB_ALPN_KEY_TOO_LARGE 383 +#define LDNS_WIREPARSE_ERR_SVCB_TOO_MANY_PARAMS 375 +#define LDNS_WIREPARSE_ERR_SVCB_DUPLICATE_KEYS 376 +#define LDNS_WIREPARSE_ERR_SVCB_MANDATORY_TOO_MANY_KEYS 377 +#define LDNS_WIREPARSE_ERR_SVCB_MANDATORY_MISSING_PARAM 378 +#define LDNS_WIREPARSE_ERR_SVCB_MANDATORY_DUPLICATE_KEY 379 +#define LDNS_WIREPARSE_ERR_SVCB_MANDATORY_IN_MANDATORY 380 +#define LDNS_WIREPARSE_ERR_SVCB_PORT_UNKNOWN_KEY 381 +#define LDNS_WIREPARSE_ERR_SVCB_IPV4_TOO_MANY_KEYS 382 +#define LDNS_WIREPARSE_ERR_SVCB_IPV6_TOO_MANY_KEYS 383 +#define LDNS_WIREPARSE_ERR_SVCB_ALPN_KEY_TOO_LARGE 384 +#define LDNS_WIREPARSE_ERR_SVCB_NO_DEFAULT_ALPN_VALUE 385 /** * Get reference to a constant string for the (parse) error. diff --git a/sldns/wire2str.c b/sldns/wire2str.c index 48dc55a98..a7e6ebc90 100644 --- a/sldns/wire2str.c +++ b/sldns/wire2str.c @@ -150,9 +150,11 @@ static sldns_lookup_table sldns_wireparse_errors_data[] = { { LDNS_WIREPARSE_ERR_INCLUDE, "$INCLUDE directive was seen in the zone" }, { LDNS_WIREPARSE_ERR_PARENTHESIS, "Parse error, parenthesis mismatch" }, { LDNS_WIREPARSE_ERR_SVCB_UNKNOWN_KEY, "Unknown SvcParamKey"}, - { LDNS_WIREPARSE_ERR_SVCB_MISSING_PARAM, "Value expected for SvcParam"}, + { LDNS_WIREPARSE_ERR_SVCB_MISSING_PARAM, "SvcParam is missing a SvcParamValue"}, { LDNS_WIREPARSE_ERR_SVCB_DUPLICATE_KEYS, "Duplicate SVCB key found"}, { LDNS_WIREPARSE_ERR_SVCB_MANDATORY_TOO_MANY_KEYS, "Too many keys in mandatory" }, + { LDNS_WIREPARSE_ERR_SVCB_TOO_MANY_PARAMS, + "Too many SvcParams. Unbound only allows 64 entries" }, { LDNS_WIREPARSE_ERR_SVCB_MANDATORY_MISSING_PARAM, "Mandatory SvcParamKey is missing"}, { LDNS_WIREPARSE_ERR_SVCB_MANDATORY_DUPLICATE_KEY, @@ -166,7 +168,9 @@ static sldns_lookup_table sldns_wireparse_errors_data[] = { { LDNS_WIREPARSE_ERR_SVCB_IPV6_TOO_MANY_KEYS, "Too many IPv6 addresses in ipv6hint" }, { LDNS_WIREPARSE_ERR_SVCB_ALPN_KEY_TOO_LARGE, - "alpn strings need to be smaller than 255 chars"}, + "Alpn strings need to be smaller than 255 chars"}, + { LDNS_WIREPARSE_ERR_SVCB_NO_DEFAULT_ALPN_VALUE, + "No-default-alpn should not have a value" }, { 0, NULL } }; sldns_lookup_table* sldns_wireparse_errors = sldns_wireparse_errors_data; From 19c63fdaf62f67e4834482ce6db1e30e0634300f Mon Sep 17 00:00:00 2001 From: Tom Carpay Date: Mon, 7 Jun 2021 09:54:02 +0200 Subject: [PATCH 149/553] add key parsing and edge case tests --- sldns/str2wire.c | 91 +++++++++++++++------- testdata/svcb.tdir/svcb.failure-cases-22 | 2 +- testdata/svcb.tdir/svcb.failure-cases-23 | 8 ++ testdata/svcb.tdir/svcb.failure-cases-24 | 8 ++ testdata/svcb.tdir/svcb.success-cases.zone | 7 ++ 5 files changed, 86 insertions(+), 30 deletions(-) create mode 100644 testdata/svcb.tdir/svcb.failure-cases-23 create mode 100644 testdata/svcb.tdir/svcb.failure-cases-24 diff --git a/sldns/str2wire.c b/sldns/str2wire.c index 8e27d52aa..e4a537093 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -650,7 +650,7 @@ static int sldns_str2wire_check_svcbparams(uint8_t* rdata, uint16_t rdata_len) rdata_ptr += svcbparam_len; nparams += 1; - if (nparams > sizeof(svcparams)) + if (nparams > sizeof(svcparams)/8) return LDNS_WIREPARSE_ERR_SVCB_TOO_MANY_PARAMS; } @@ -1086,6 +1086,7 @@ sldns_str2wire_svcparam_key_lookup(const char *key, size_t key_len) memcpy(buf, key + 3, key_len - 3); buf[key_len - 3] = 0; key_value = strtoul(buf, &endptr, 10); + if (endptr > buf /* digits seen */ && *endptr == 0 /* no non-digit chars after digits */ && key_value <= 65535) /* no overflow */ @@ -1384,7 +1385,7 @@ sldns_str2wire_svcbparam_ech_value(const char* val, uint8_t* rd, size_t* rd_len) } static const char* -sldns_str2wire_svcbparam_parse_alpn_next_unescaped_comma(const char *val) +sldns_str2wire_svcbparam_parse_next_unescaped_comma(const char *val) { while (*val) { /* Only return when the comma is not escaped*/ @@ -1401,7 +1402,7 @@ sldns_str2wire_svcbparam_parse_alpn_next_unescaped_comma(const char *val) } static size_t -sldns_str2wire_svcbparam_parse_alpn_copy_unescaped(uint8_t *dst, +sldns_str2wire_svcbparam_parse_copy_unescaped(uint8_t *dst, const char *src, size_t len) { uint8_t *orig_dst = dst; @@ -1419,7 +1420,8 @@ sldns_str2wire_svcbparam_parse_alpn_copy_unescaped(uint8_t *dst, return (size_t)(dst - orig_dst); } -int sldns_str2wire_svcbparam_alpn_value(const char* val, +static int +sldns_str2wire_svcbparam_alpn_value(const char* val, uint8_t* rd, size_t* rd_len) { uint8_t unescaped_dst[65536]; @@ -1437,13 +1439,14 @@ int sldns_str2wire_svcbparam_alpn_value(const char* val, while (val_len) { size_t dst_len; - str_len = (next_str = sldns_str2wire_svcbparam_parse_alpn_next_unescaped_comma(val)) + str_len = (next_str = sldns_str2wire_svcbparam_parse_next_unescaped_comma(val)) ? (size_t)(next_str - val) : val_len; if (str_len > 255) { return LDNS_WIREPARSE_ERR_SVCB_ALPN_KEY_TOO_LARGE; } - dst_len = sldns_str2wire_svcbparam_parse_alpn_copy_unescaped(dst + 1, val, str_len); + + dst_len = sldns_str2wire_svcbparam_parse_copy_unescaped(dst + 1, val, str_len); *dst++ = dst_len; dst += dst_len; @@ -1465,7 +1468,51 @@ int sldns_str2wire_svcbparam_alpn_value(const char* val, } static int -sldns_str2wire_svcparam_key_value(const char *key, size_t key_len, +sldns_str2wire_svcbparam_key_value(uint16_t svcparamkey, const char* val, + uint8_t* rd, size_t* rd_len) +{ + uint8_t unescaped_dst[65536]; + uint8_t *dst = unescaped_dst; + const char *next_str; + size_t str_len; + size_t dst_len; + size_t val_len; + + val_len = strlen(val); + + if (val_len > sizeof(unescaped_dst)) { + return LDNS_WIREPARSE_ERR_SYNTAX_INTEGER_OVERFLOW; + } + while (val_len) { + str_len = (next_str = sldns_str2wire_svcbparam_parse_next_unescaped_comma(val)) + ? (size_t)(next_str - val) : val_len; + + if (str_len > 255) { + return LDNS_WIREPARSE_ERR_SVCB_ALPN_KEY_TOO_LARGE; + } + dst_len = sldns_str2wire_svcbparam_parse_copy_unescaped(dst + 1, val, str_len); + *dst++ = dst_len; + dst += dst_len; + + if (!next_str) + break; + + /* skip the comma for the next iteration */ + val_len -= next_str - val + 1; + val = next_str + 1; + } + dst_len = dst - unescaped_dst; + + sldns_write_uint16(rd, svcparamkey); + sldns_write_uint16(rd + 2, dst_len); + memcpy(rd + 4, unescaped_dst, dst_len); + *rd_len = 4 + dst_len; + + return LDNS_WIREPARSE_ERR_OK; +} + +static int +sldns_str2wire_svcparam_value(const char *key, size_t key_len, const char *val, uint8_t* rd, size_t* rd_len) { size_t str_len; @@ -1485,20 +1532,14 @@ sldns_str2wire_svcparam_key_value(const char *key, size_t key_len, case SVCB_KEY_IPV6HINT: return LDNS_WIREPARSE_ERR_SVCB_MISSING_PARAM; default: - sldns_write_uint16(rd, svcparamkey); - sldns_write_uint16(rd + 2, 0); - *rd_len = 4; + sldns_write_uint16(rd, svcparamkey); + sldns_write_uint16(rd + 2, 0); + *rd_len = 4; - return LDNS_WIREPARSE_ERR_OK; + return LDNS_WIREPARSE_ERR_OK; } } - // @TODO unescape characters in the value list - - // if (val[0] == '"' && val[str_len - 1]) { - - // } - /* value is non-empty */ switch (svcparamkey) { case SVCB_KEY_PORT: @@ -1516,15 +1557,7 @@ sldns_str2wire_svcparam_key_value(const char *key, size_t key_len, case SVCB_KEY_ALPN: return sldns_str2wire_svcbparam_alpn_value(val, rd, rd_len); default: - // @TODO escaping here -> copy from alpn? - - str_len = strlen(val); - sldns_write_uint16(rd, svcparamkey); - sldns_write_uint16(rd + 2, str_len); - memcpy(rd + 4, val, str_len); - *rd_len = 4 + str_len; - - return LDNS_WIREPARSE_ERR_OK; + return sldns_str2wire_svcbparam_key_value(svcparamkey, val, rd, rd_len); } // @TODO change to error? @@ -1557,12 +1590,12 @@ int sldns_str2wire_svcparam_buf(const char* str, uint8_t* rd, size_t* rd_len) } *val_out = 0; - return sldns_str2wire_svcparam_key_value(str, eq_pos - str, + return sldns_str2wire_svcparam_value(str, eq_pos - str, unescaped_val[0] ? unescaped_val : NULL, rd, rd_len); } else if (eq_pos != NULL && !(eq_pos[1])) { /* case: key= */ - return sldns_str2wire_svcparam_key_value(str, eq_pos - str, NULL, rd, rd_len); + return sldns_str2wire_svcparam_value(str, eq_pos - str, NULL, rd, rd_len); } else { /* case: key */ - return sldns_str2wire_svcparam_key_value(str, strlen(str), NULL, rd, rd_len); + return sldns_str2wire_svcparam_value(str, strlen(str), NULL, rd, rd_len); } return LDNS_WIREPARSE_ERR_OK; diff --git a/testdata/svcb.tdir/svcb.failure-cases-22 b/testdata/svcb.tdir/svcb.failure-cases-22 index d01b69700..9d6f0186d 100644 --- a/testdata/svcb.tdir/svcb.failure-cases-22 +++ b/testdata/svcb.tdir/svcb.failure-cases-22 @@ -3,6 +3,6 @@ $TTL 3600 @ SOA primary admin 0 0 0 0 0 -; Port mus be a positive number < 65536 +; Port must be a positive number < 65536 f22 HTTPS 1 foo.example.com. port=65536 diff --git a/testdata/svcb.tdir/svcb.failure-cases-23 b/testdata/svcb.tdir/svcb.failure-cases-23 new file mode 100644 index 000000000..bb819daae --- /dev/null +++ b/testdata/svcb.tdir/svcb.failure-cases-23 @@ -0,0 +1,8 @@ +$ORIGIN failure-cases. +$TTL 3600 + +@ SOA primary admin 0 0 0 0 0 + +; 65 SvcParams is too many SvcParams; the limit is 64 + +f23 HTTPS 1 foo.example.com. ( key11=a key12=a key13=a key14=a key15=a key16=a key17=a key18=a key19=a key110=a key111=a key112=a key113=a key114=a key115=a key116=a key117=a key118=a key119=a key120=a key121=a key122=a key123=a key124=a key125=a key126=a key127=a key128=a key129=a key130=a key131=a key132=a key133=a key134=a key135=a key136=a key137=a key138=a key139=a key140=a key141=a key142=a key143=a key144=a key145=a key146=a key147=a key148=a key149=a key150=a key151=a key152=a key153=a key154=a key155=a key156=a key157=a key158=a key159=a key160=a key161=a key162=a key163=a key164=a key165=a ) \ No newline at end of file diff --git a/testdata/svcb.tdir/svcb.failure-cases-24 b/testdata/svcb.tdir/svcb.failure-cases-24 new file mode 100644 index 000000000..ae02ac417 --- /dev/null +++ b/testdata/svcb.tdir/svcb.failure-cases-24 @@ -0,0 +1,8 @@ +$ORIGIN failure-cases. +$TTL 3600 + +@ SOA primary admin 0 0 0 0 0 + +; 256 is too many characters for an alpn; maximum is 255 + +f23 HTTPS 1 foo.example.com. ( alpn="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" ) \ No newline at end of file diff --git a/testdata/svcb.tdir/svcb.success-cases.zone b/testdata/svcb.tdir/svcb.success-cases.zone index 0a96659d8..1852fb207 100644 --- a/testdata/svcb.tdir/svcb.success-cases.zone +++ b/testdata/svcb.tdir/svcb.success-cases.zone @@ -38,3 +38,10 @@ s06 HTTPS 0 . ech="aGVsbG93b3JsZCE=" ; echconfig is an alias for ech s07 HTTPS 0 . echconfig="aGVsbG93b3JsZCE=" +; maximum size allowed in a svcb rdata set (64 SvcParams) + +s07 HTTPS 0 . ( key11=a key12=a key13=a key14=a key15=a key16=a key17=a key18=a key19=a key110=a key111=a key112=a key113=a key114=a key115=a key116=a key117=a key118=a key119=a key120=a key121=a key122=a key123=a key124=a key125=a key126=a key127=a key128=a key129=a key130=a key131=a key132=a key133=a key134=a key135=a key136=a key137=a key138=a key139=a key140=a key141=a key142=a key143=a key144=a key145=a key146=a key147=a key148=a key149=a key150=a key151=a key152=a key153=a key154=a key155=a key156=a key157=a key158=a key159=a key160=a key161=a key162=a key163=a key164=a) + +; maximum alpn size allowed (255 characters) + +s07 HTTPS 0 . ( alpn="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" ) From 7562edbb8ca85fd74a676a5c4b060812e3110ca8 Mon Sep 17 00:00:00 2001 From: Tom Carpay Date: Mon, 7 Jun 2021 08:39:05 +0000 Subject: [PATCH 150/553] remove superfluous double escaping --- sldns/str2wire.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/sldns/str2wire.c b/sldns/str2wire.c index e4a537093..978839ba5 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -1557,7 +1557,12 @@ sldns_str2wire_svcparam_value(const char *key, size_t key_len, case SVCB_KEY_ALPN: return sldns_str2wire_svcbparam_alpn_value(val, rd, rd_len); default: - return sldns_str2wire_svcbparam_key_value(svcparamkey, val, rd, rd_len); + sldns_write_uint16(rd, svcparamkey); + sldns_write_uint16(rd + 2, strlen(val)); + memcpy(rd + 4, val, strlen(val)); + *rd_len = 4 + strlen(val); + break; + //return sldns_str2wire_svcbparam_key_value(svcparamkey, val, rd, rd_len); } // @TODO change to error? From 9beea6a00ccfa47f045e32ecb2d6a5a53ab52ed1 Mon Sep 17 00:00:00 2001 From: Tom Carpay Date: Mon, 7 Jun 2021 14:05:14 +0200 Subject: [PATCH 151/553] fix key parsing and incorporate testcases --- sldns/str2wire.c | 69 ++++--------------- sldns/wire2str.c | 13 +--- testdata/svcb.tdir/svcb.success-cases.zone | 4 +- .../svcb.tdir/svcb.success-cases.zone.cmp | 22 +++--- testdata/svcb.tdir/svcb.test | 51 +++++--------- 5 files changed, 44 insertions(+), 115 deletions(-) diff --git a/sldns/str2wire.c b/sldns/str2wire.c index 978839ba5..25d2f1337 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -1168,7 +1168,7 @@ sldns_str2wire_svcbparam_ipv4hint(const char* val, uint8_t* rd, size_t* rd_len) int count; char ip_str[INET_ADDRSTRLEN+1]; char *next_ip_str; - uint32_t *ip_wire_dst; + uint32_t *ip_wire_dst = NULL; size_t i; for (i = 0, count = 1; val[i]; i++) { @@ -1225,7 +1225,7 @@ sldns_str2wire_svcbparam_ipv6hint(const char* val, uint8_t* rd, size_t* rd_len) int count; char ip_str[INET6_ADDRSTRLEN+1]; char *next_ip_str; - uint32_t *ip_wire_dst; + uint32_t *ip_wire_dst = NULL; size_t i; for (i = 0, count = 1; val[i]; i++) { @@ -1289,7 +1289,7 @@ sldns_str2wire_svcbparam_mandatory(const char* val, uint8_t* rd, size_t* rd_len) { size_t i, count, val_len; char* next_key; - uint16_t* key_dst; + uint16_t* key_dst = NULL; val_len = strlen(val); @@ -1369,8 +1369,7 @@ sldns_str2wire_svcbparam_ech_value(const char* val, uint8_t* rd, size_t* rd_len) wire_len = sldns_b64_pton(val, buffer, LDNS_MAX_RDFLEN); - if (wire_len == -1) { - // zc_error_prev_line("invalid base64 data in ech"); + if (wire_len == 0) { return LDNS_WIREPARSE_ERR_SYNTAX_B64; } else if (wire_len + 4 > *rd_len) { return LDNS_WIREPARSE_ERR_BUFFER_TOO_SMALL; @@ -1467,50 +1466,6 @@ sldns_str2wire_svcbparam_alpn_value(const char* val, return LDNS_WIREPARSE_ERR_OK; } -static int -sldns_str2wire_svcbparam_key_value(uint16_t svcparamkey, const char* val, - uint8_t* rd, size_t* rd_len) -{ - uint8_t unescaped_dst[65536]; - uint8_t *dst = unescaped_dst; - const char *next_str; - size_t str_len; - size_t dst_len; - size_t val_len; - - val_len = strlen(val); - - if (val_len > sizeof(unescaped_dst)) { - return LDNS_WIREPARSE_ERR_SYNTAX_INTEGER_OVERFLOW; - } - while (val_len) { - str_len = (next_str = sldns_str2wire_svcbparam_parse_next_unescaped_comma(val)) - ? (size_t)(next_str - val) : val_len; - - if (str_len > 255) { - return LDNS_WIREPARSE_ERR_SVCB_ALPN_KEY_TOO_LARGE; - } - dst_len = sldns_str2wire_svcbparam_parse_copy_unescaped(dst + 1, val, str_len); - *dst++ = dst_len; - dst += dst_len; - - if (!next_str) - break; - - /* skip the comma for the next iteration */ - val_len -= next_str - val + 1; - val = next_str + 1; - } - dst_len = dst - unescaped_dst; - - sldns_write_uint16(rd, svcparamkey); - sldns_write_uint16(rd + 2, dst_len); - memcpy(rd + 4, unescaped_dst, dst_len); - *rd_len = 4 + dst_len; - - return LDNS_WIREPARSE_ERR_OK; -} - static int sldns_str2wire_svcparam_value(const char *key, size_t key_len, const char *val, uint8_t* rd, size_t* rd_len) @@ -1557,21 +1512,21 @@ sldns_str2wire_svcparam_value(const char *key, size_t key_len, case SVCB_KEY_ALPN: return sldns_str2wire_svcbparam_alpn_value(val, rd, rd_len); default: + str_len = strlen(val); sldns_write_uint16(rd, svcparamkey); - sldns_write_uint16(rd + 2, strlen(val)); - memcpy(rd + 4, val, strlen(val)); - *rd_len = 4 + strlen(val); - break; - //return sldns_str2wire_svcbparam_key_value(svcparamkey, val, rd, rd_len); + sldns_write_uint16(rd + 2, str_len); + memcpy(rd + 4, val, str_len); + *rd_len = 4 + str_len; + + return LDNS_WIREPARSE_ERR_OK; } - // @TODO change to error? - return LDNS_WIREPARSE_ERR_OK; + // @TODO is this supposed to be an error? + return LDNS_WIREPARSE_ERR_GENERAL; } int sldns_str2wire_svcparam_buf(const char* str, uint8_t* rd, size_t* rd_len) { - size_t str_len; const char* eq_pos; char unescaped_val[65536]; char* val_out = unescaped_val; diff --git a/sldns/wire2str.c b/sldns/wire2str.c index a7e6ebc90..99ce5574e 100644 --- a/sldns/wire2str.c +++ b/sldns/wire2str.c @@ -997,7 +997,6 @@ static int sldns_wire2str_svcparam_ipv4hint2str(char** s, { char ip_str[INET_ADDRSTRLEN + 1]; - // @TODO actually incorporate this int w = 0; assert(data_len > 0); @@ -1026,13 +1025,10 @@ static int sldns_wire2str_svcparam_ipv6hint2str(char** s, { char ip_str[INET6_ADDRSTRLEN + 1]; - // @TODO actually incorporate this -> is this correct now? int w = 0; assert(data_len > 0); - // @TODO fix ntohs -> see output - if ((data_len % LDNS_IP6ADDRLEN) == 0) { if (inet_ntop(AF_INET6, data, ip_str, sizeof(ip_str)) == NULL) return 0; /* wireformat error, incorrect size or inet family */ @@ -1121,11 +1117,8 @@ static int sldns_wire2str_svcparam_ech2str(char** s, w += sldns_str_print(s, slen, "=\""); - /* b64_ntop_calculate size includes null at the end */ - size = sldns_b64_ntop_calculate_size(data_len) - 1; + size = sldns_b64_ntop(data, data_len, *s, *slen); - // @TODO store return value? - sldns_b64_ntop(data, data_len, *s, *slen); (*s) += size; (*slen) -= size; @@ -1141,7 +1134,7 @@ static int sldns_wire2str_svcparam_ech2str(char** s, int sldns_wire2str_svcparam_scan(uint8_t** d, size_t* dlen, char** s, size_t* slen) { - char ch; + uint8_t ch; uint16_t svcparamkey, data_len; int written_chars = 0; int r, i; @@ -1197,7 +1190,7 @@ int sldns_wire2str_svcparam_scan(uint8_t** d, size_t* dlen, char** s, size_t* sl r = sldns_wire2str_svcparam_ech2str(s, slen, data_len, *d); break; default: - r += sldns_str_print(s, slen, "=\""); + r = sldns_str_print(s, slen, "=\""); for (i = 0; i < data_len; i++) { ch = (*d)[i]; diff --git a/testdata/svcb.tdir/svcb.success-cases.zone b/testdata/svcb.tdir/svcb.success-cases.zone index 1852fb207..896304757 100644 --- a/testdata/svcb.tdir/svcb.success-cases.zone +++ b/testdata/svcb.tdir/svcb.success-cases.zone @@ -40,8 +40,8 @@ s07 HTTPS 0 . echconfig="aGVsbG93b3JsZCE=" ; maximum size allowed in a svcb rdata set (64 SvcParams) -s07 HTTPS 0 . ( key11=a key12=a key13=a key14=a key15=a key16=a key17=a key18=a key19=a key110=a key111=a key112=a key113=a key114=a key115=a key116=a key117=a key118=a key119=a key120=a key121=a key122=a key123=a key124=a key125=a key126=a key127=a key128=a key129=a key130=a key131=a key132=a key133=a key134=a key135=a key136=a key137=a key138=a key139=a key140=a key141=a key142=a key143=a key144=a key145=a key146=a key147=a key148=a key149=a key150=a key151=a key152=a key153=a key154=a key155=a key156=a key157=a key158=a key159=a key160=a key161=a key162=a key163=a key164=a) +s08 HTTPS 0 . ( key11=a key12=a key13=a key14=a key15=a key16=a key17=a key18=a key19=a key110=a key111=a key112=a key113=a key114=a key115=a key116=a key117=a key118=a key119=a key120=a key121=a key122=a key123=a key124=a key125=a key126=a key127=a key128=a key129=a key130=a key131=a key132=a key133=a key134=a key135=a key136=a key137=a key138=a key139=a key140=a key141=a key142=a key143=a key144=a key145=a key146=a key147=a key148=a key149=a key150=a key151=a key152=a key153=a key154=a key155=a key156=a key157=a key158=a key159=a key160=a key161=a key162=a key163=a key164=a) ; maximum alpn size allowed (255 characters) -s07 HTTPS 0 . ( alpn="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" ) +s09 HTTPS 0 . ( alpn="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" ) diff --git a/testdata/svcb.tdir/svcb.success-cases.zone.cmp b/testdata/svcb.tdir/svcb.success-cases.zone.cmp index 540b541c4..f28bd2ce5 100644 --- a/testdata/svcb.tdir/svcb.success-cases.zone.cmp +++ b/testdata/svcb.tdir/svcb.success-cases.zone.cmp @@ -1,12 +1,10 @@ -$ORIGIN . -success-cases 3600 IN SOA primary.success-cases. admin.success-cases. ( - 0 0 0 0 0 ) -$ORIGIN success-cases. -s01 3600 IN SVCB 0 . key123 -s02 3600 IN SVCB 0 . ech -s03 3600 IN HTTPS 0 . alpn="h2,h3" no-default-alpn -s04 3600 IN HTTPS 0 . no-default-alpn -s05 3600 IN HTTPS 0 . mandatory=port alpn="dot" no-default-alpn port=853 -s06 3600 IN HTTPS 0 . ech=aGVsbG93b3JsZCE= -s07 3600 IN HTTPS 0 . ech=aGVsbG93b3JsZCE= -; zone success-cases is ok +success-cases. 3600 IN SOA primary.success-cases. admin.success-cases. 0 0 0 0 0 +s01.success-cases. 3600 IN SVCB 0 . key123 +s02.success-cases. 3600 IN SVCB 0 . ech +s03.success-cases. 3600 IN HTTPS 0 . alpn="h2,h3" no-default-alpn +s04.success-cases. 3600 IN HTTPS 0 . no-default-alpn +s05.success-cases. 3600 IN HTTPS 0 . mandatory=port alpn="dot" no-default-alpn port=853 +s06.success-cases. 3600 IN HTTPS 0 . ech="aGVsbG93b3JsZCE=" +s07.success-cases. 3600 IN HTTPS 0 . ech="aGVsbG93b3JsZCE=" +s08.success-cases. 3600 IN HTTPS 0 . key11="a" key12="a" key13="a" key14="a" key15="a" key16="a" key17="a" key18="a" key19="a" key110="a" key111="a" key112="a" key113="a" key114="a" key115="a" key116="a" key117="a" key118="a" key119="a" key120="a" key121="a" key122="a" key123="a" key124="a" key125="a" key126="a" key127="a" key128="a" key129="a" key130="a" key131="a" key132="a" key133="a" key134="a" key135="a" key136="a" key137="a" key138="a" key139="a" key140="a" key141="a" key142="a" key143="a" key144="a" key145="a" key146="a" key147="a" key148="a" key149="a" key150="a" key151="a" key152="a" key153="a" key154="a" key155="a" key156="a" key157="a" key158="a" key159="a" key160="a" key161="a" key162="a" key163="a" key164="a" +s09.success-cases. 3600 IN HTTPS 0 . alpn="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" diff --git a/testdata/svcb.tdir/svcb.test b/testdata/svcb.tdir/svcb.test index 48a754512..47968be5f 100644 --- a/testdata/svcb.tdir/svcb.test +++ b/testdata/svcb.tdir/svcb.test @@ -183,52 +183,35 @@ then echo "Failure case 22: port value needs to be a positive integer < 65536" echo "Incorrectly succeeded" exit 1 + +elif $PRE/readzone svcb.failure-cases-23 +then + echo "Failure case 23: 65 SvcParams is too many SvcParams; the limit is 64" + echo "Incorrectly succeeded" + exit 1 + +elif $PRE/readzone svcb.failure-cases-23 +then + echo "Failure case 24: 256 is too many characters for an alpn; maximum is 255" + echo "Incorrectly succeeded" + exit 1 else echo "All failure cases test successfully" fi # check all the succes and write them -if ! $PRE/nsd-checkzone -p success-cases svcb.success-cases.zone > svcb.success-cases.zone.out +if ! $PRE/readzone svcb.success-cases.zone > svcb.success-cases.zone.out then - echo "Some particular success cases did not succeed to parse" - exit 1 + echo "Some particular success cases did not succeed to parse" + exit 1 elif ! diff svcb.success-cases.zone.out svcb.success-cases.zone.cmp then echo "Some success cases could not be printed" - exit 1 + exit 1 else - echo "All particular success cases parsed and printed successfully" + echo "All particular success cases parsed and printed successfully" fi -rem $PRE/nsd-control -c svcb.secondary.conf write -rem while [ ! -f test-vectors-secondary.zone ] -rem do -rem sleep 1 -rem done -rem while ! grep '^v20' test-vectors-secondary.zone -rem do -rem sleep 1 -rem done -rem grep -v '^;' svcb.test-vectors-pf.zone.out > svcb.test-vectors-pf.zone.out2 -rem grep -v '^;' test-vectors-secondary.zone > test-vectors-secondary.zone.out -rem if ! diff svcb.test-vectors-pf.zone.out2 test-vectors-secondary.zone.out -rem then -rem echo "Output from secondary did not match output from primary" -rem exit 1 -rem else -rem echo "Output from secondary did match output from primary" -rem fi - -rem dig @127.0.0.1 -p $TPKG_SEC_PORT f01.failure-cases. TYPE64 > f01.failure-cases.out -rem if grep 'status: NOERROR' f01.failure-cases.out -rem then -rem echo "Failure case 1: Multiple instances of the same SvcParamKey" -rem echo "allowed for secondary" -rem else -rem echo "Could not load failure-cases zone in secondary" -rem exit 1 -rem fi - From 553d1c78ef83bc7df0ef25d340ec69bc2a765df5 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Mon, 7 Jun 2021 14:51:21 +0200 Subject: [PATCH 152/553] - Merge #448 from shoeper: Update unbound-control.8.in, fix rpz_disable typo. --- doc/Changelog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 1751095a8..2211086a7 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +7 June 2021: George + - Merge #448 from shoeper: Update unbound-control.8.in, fix + rpz_disable typo. + 1 June 2021: George - Fix test for zonemd-check option. From 307613ea838ca43c8aa733acae553740ff5b52c7 Mon Sep 17 00:00:00 2001 From: Tom Carpay Date: Mon, 7 Jun 2021 15:29:06 +0200 Subject: [PATCH 153/553] comment changes --- sldns/str2wire.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/sldns/str2wire.c b/sldns/str2wire.c index 25d2f1337..275cc7e8c 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -1164,7 +1164,6 @@ sldns_str2wire_svcparam_port(const char* val, uint8_t* rd, size_t* rd_len) static int sldns_str2wire_svcbparam_ipv4hint(const char* val, uint8_t* rd, size_t* rd_len) { - int count; char ip_str[INET_ADDRSTRLEN+1]; char *next_ip_str; @@ -1338,7 +1337,7 @@ sldns_str2wire_svcbparam_mandatory(const char* val, uint8_t* rd, size_t* rd_len) return LDNS_WIREPARSE_ERR_SVCB_MANDATORY_IN_MANDATORY; /* Guarantee key uniqueness. After the sort we only need to - * compare neighbours */ + * compare neighbouring keys */ if (count > 1) { for (i = 0; i < count - 1; i++) { uint8_t* current_pos = (rd + 4 + (sizeof(uint16_t) * i)); @@ -1452,7 +1451,7 @@ sldns_str2wire_svcbparam_alpn_value(const char* val, if (!next_str) break; - /* skip the comma for the next iteration */ + /* skip the comma in the next iteration */ val_len -= next_str - val + 1; val = next_str + 1; } @@ -1477,7 +1476,7 @@ sldns_str2wire_svcparam_value(const char *key, size_t key_len, return LDNS_WIREPARSE_ERR_SVCB_UNKNOWN_KEY; } - /* key and no value case*/ + /* key without value */ if (val == NULL) { switch (svcparamkey) { case SVCB_KEY_MANDATORY: @@ -1517,11 +1516,11 @@ sldns_str2wire_svcparam_value(const char *key, size_t key_len, sldns_write_uint16(rd + 2, str_len); memcpy(rd + 4, val, str_len); *rd_len = 4 + str_len; - + return LDNS_WIREPARSE_ERR_OK; } - // @TODO is this supposed to be an error? + // @TODO think about if this is supposed to be an error? return LDNS_WIREPARSE_ERR_GENERAL; } @@ -1534,7 +1533,8 @@ int sldns_str2wire_svcparam_buf(const char* str, uint8_t* rd, size_t* rd_len) eq_pos = strchr(str, '='); - if (eq_pos != NULL && eq_pos[1]) { /* case: key=value */ + /* case: key=value */ + if (eq_pos != NULL && eq_pos[1]) { val_in = eq_pos + 1; /* unescape characters and "" blocks */ @@ -1552,9 +1552,13 @@ int sldns_str2wire_svcparam_buf(const char* str, uint8_t* rd, size_t* rd_len) return sldns_str2wire_svcparam_value(str, eq_pos - str, unescaped_val[0] ? unescaped_val : NULL, rd, rd_len); - } else if (eq_pos != NULL && !(eq_pos[1])) { /* case: key= */ + } + /* case: key= */ + else if (eq_pos != NULL && !(eq_pos[1])) { return sldns_str2wire_svcparam_value(str, eq_pos - str, NULL, rd, rd_len); - } else { /* case: key */ + } + /* case: key */ + else { return sldns_str2wire_svcparam_value(str, strlen(str), NULL, rd, rd_len); } From df53badfa2fb4be5b61f40e45a7c6b31d70672bf Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Mon, 7 Jun 2021 16:02:41 +0200 Subject: [PATCH 154/553] - Fix #425: Document auth-zone supports communication with DNS primary on nondefault port. --- doc/Changelog | 2 ++ doc/unbound.conf.5.in | 13 ++++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 2211086a7..ab75add77 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,8 @@ 7 June 2021: George - Merge #448 from shoeper: Update unbound-control.8.in, fix rpz_disable typo. + - Fix #425: Document auth-zone supports communication with DNS + primary on nondefault port. 1 June 2021: George - Fix test for zonemd-check option. diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index b0ed3aa26..f3cca17a9 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -1923,7 +1923,9 @@ Name of the authority zone. .B primary: \fI Where to download a copy of the zone from, with AXFR and IXFR. Multiple primaries can be specified. They are all tried if one fails. -With the "ip#name" notation a AXFR over TLS can be used. +To use a nondefault port for DNS communication append '@' with the port number. +You can append a '#' and a name, then AXFR over TLS can be used and the tls authentication certificates will be checked with that name. If you combine +the '@' and '#', the '@' comes first. If you point it at another Unbound instance, it would not work because that does not support AXFR/IXFR for the zone, but if you used \fBurl:\fR to download the zonefile as a text file from a webserver that would work. @@ -2500,6 +2502,15 @@ Name of the authority zone. .B primary: \fI Where to download a copy of the zone from, with AXFR and IXFR. Multiple primaries can be specified. They are all tried if one fails. +To use a nondefault port for DNS communication append '@' with the port number. +You can append a '#' and a name, then AXFR over TLS can be used and the tls authentication certificates will be checked with that name. If you combine +the '@' and '#', the '@' comes first. +If you point it at another Unbound instance, it would not work because +that does not support AXFR/IXFR for the zone, but if you used \fBurl:\fR to download +the zonefile as a text file from a webserver that would work. +If you specify the hostname, you cannot use the domain from the zonefile, +because it may not have that when retrieving that data, instead use a plain +IP address to avoid a circular dependency on retrieving that IP address. .TP .B master: \fI Alternate syntax for \fBprimary\fR. From 64546fcfb41a3de3322945baad5a3b115afbdc7b Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Tue, 8 Jun 2021 22:15:17 +0200 Subject: [PATCH 155/553] - Fix unused variable warning when compiling with --enable-dnstap. --- dnstap/dnstap.c | 18 +++++++++--------- doc/Changelog | 3 +++ 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/dnstap/dnstap.c b/dnstap/dnstap.c index 6577a019a..5c0cde1d5 100644 --- a/dnstap/dnstap.c +++ b/dnstap/dnstap.c @@ -507,19 +507,19 @@ dt_msg_send_outside_query(struct dt_env *env, void dt_msg_send_outside_response(struct dt_env *env, - struct sockaddr_storage *rsock, - struct sockaddr_storage *qsock, - enum comm_point_type cptype, - uint8_t *zone, size_t zone_len, - uint8_t *qbuf, size_t qbuf_len, - const struct timeval *qtime, - const struct timeval *rtime, - sldns_buffer *rmsg) + struct sockaddr_storage *rsock, + struct sockaddr_storage *qsock, + enum comm_point_type cptype, + uint8_t *zone, size_t zone_len, + uint8_t *qbuf, size_t qbuf_len, + const struct timeval *qtime, + const struct timeval *rtime, + sldns_buffer *rmsg) { struct dt_msg dm; uint16_t qflags; - log_assert(qbuf_len >= sizeof(qflags)); + (void)qbuf_len; log_assert(qbuf_len >= sizeof(qflags)); memcpy(&qflags, qbuf, sizeof(qflags)); qflags = ntohs(qflags); diff --git a/doc/Changelog b/doc/Changelog index ab75add77..401074b8a 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +8 June 2021: George + - Fix unused variable warning when compiling with --enable-dnstap. + 7 June 2021: George - Merge #448 from shoeper: Update unbound-control.8.in, fix rpz_disable typo. From d02e956da0ff64d1ec49c1aaa815394099ed48eb Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Wed, 9 Jun 2021 12:32:58 +0200 Subject: [PATCH 156/553] - Changelog entry for #486: Make VAL_MAX_RESTART_COUNT configurable. - Generetated lexer and parser for #486; updated example.conf. --- doc/Changelog | 4 + doc/example.conf.in | 4 + util/configlexer.c | 4880 ++++++++++++++++++++++--------------------- util/configparser.c | 4779 ++++++++++++++++++------------------------ util/configparser.h | 795 +++---- 5 files changed, 4910 insertions(+), 5552 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 401074b8a..2f52a6b9f 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +9 June 2021: George + - Merge #486 by fobster: Make VAL_MAX_RESTART_COUNT configurable. + - Generated lexer and parser for #486; updated example.conf. + 8 June 2021: George - Fix unused variable warning when compiling with --enable-dnstap. diff --git a/doc/example.conf.in b/doc/example.conf.in index e93c40be9..4b135f5db 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -557,6 +557,10 @@ server: # val-sig-skew-min: 3600 # val-sig-skew-max: 86400 + # The maximum number the validator should restart validation with + # another authority in case of failed validation. + # val-max-restart: 5 + # Should additional section of secure message also be kept clean of # unsecure data. Useful to shield the users of this validator from # potential bogus data in the additional section. All unsigned data diff --git a/util/configlexer.c b/util/configlexer.c index e31e36739..5fae5b41e 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -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 349 -#define YY_END_OF_BUFFER 350 +#define YY_NUM_RULES 350 +#define YY_END_OF_BUFFER 351 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -363,387 +363,388 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[3445] = +static const flex_int16_t yy_accept[3457] = { 0, - 1, 1, 323, 323, 327, 327, 331, 331, 335, 335, - 1, 1, 339, 339, 343, 343, 350, 347, 1, 321, - 321, 348, 2, 348, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 323, 324, 324, 325, - 348, 327, 328, 328, 329, 348, 334, 331, 332, 332, - 333, 348, 335, 336, 336, 337, 348, 346, 322, 2, - 326, 348, 346, 342, 339, 340, 340, 341, 348, 343, - 344, 344, 345, 348, 347, 0, 1, 2, 2, 2, - 2, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 1, 1, 324, 324, 328, 328, 332, 332, 336, 336, + 1, 1, 340, 340, 344, 344, 351, 348, 1, 322, + 322, 349, 2, 349, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 324, 325, 325, 326, + 349, 328, 329, 329, 330, 349, 335, 332, 333, 333, + 334, 349, 336, 337, 337, 338, 349, 347, 323, 2, + 327, 349, 347, 343, 340, 341, 341, 342, 349, 344, + 345, 345, 346, 349, 348, 0, 1, 2, 2, 2, + 2, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 323, - 0, 327, 0, 334, 0, 331, 335, 0, 346, 0, - 2, 2, 346, 342, 0, 339, 343, 0, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 324, + 0, 328, 0, 335, 0, 332, 336, 0, 347, 0, + 2, 2, 347, 343, 0, 340, 344, 0, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 346, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 347, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 128, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 137, - 347, 347, 347, 347, 347, 347, 347, 346, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 128, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 137, + 348, 348, 348, 348, 348, 348, 348, 347, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 112, 347, 320, - 347, 347, 347, 347, 347, 347, 347, 8, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 112, 348, 321, + 348, 348, 348, 348, 348, 348, 348, 8, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 347, 347, 347, 347, 347, 347, 347, 129, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 142, 347, 347, 346, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 348, 348, 348, 348, 348, 348, 348, 129, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 142, 348, 348, 347, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 313, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 314, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 346, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 67, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 245, 347, - 14, 15, 347, 19, 18, 347, 347, 229, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 347, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 67, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 246, 348, 14, 15, 348, 19, 18, 348, 348, 230, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 135, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 227, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 3, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 135, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 228, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 3, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 346, 347, 347, 347, 347, 347, 347, 347, - 307, 347, 347, 306, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 330, 347, 347, 347, 347, 347, 347, 347, 347, - 66, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 347, 348, 348, 348, 348, + 348, 348, 348, 308, 348, 348, 307, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 331, 348, 348, 348, 348, 348, + 348, 348, 348, 66, 348, 348, 348, 348, 348, 348, - 347, 347, 347, 347, 347, 347, 347, 70, 347, 276, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 314, - 315, 347, 347, 347, 347, 347, 347, 347, 71, 347, - 347, 136, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 132, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 216, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 21, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 70, 348, 277, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 315, 316, 348, 348, 348, 348, 348, 348, + 348, 71, 348, 348, 136, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 132, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 217, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 21, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 161, - 347, 347, 347, 347, 347, 346, 330, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 110, 347, - 347, 347, 347, 347, 347, 347, 284, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 185, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 160, 347, 347, 347, 347, 347, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 161, 348, 348, 348, 348, 348, 347, + 331, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 110, 348, 348, 348, 348, 348, 348, 348, + 285, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 186, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 160, 348, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 109, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 35, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 36, 347, 347, 347, 347, 347, 347, 347, 347, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 109, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 35, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 36, 348, 348, 348, 348, - 347, 347, 347, 347, 347, 347, 347, 68, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 134, 347, 347, - 347, 346, 347, 347, 347, 347, 347, 127, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 69, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 249, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 186, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 68, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 134, 348, 348, 348, 347, 348, 348, 348, + 348, 348, 127, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 69, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 250, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 187, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 347, 347, 347, 347, 347, 347, 347, 347, 57, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 267, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 61, 347, 62, 347, 347, 347, 347, 347, - 113, 347, 114, 347, 347, 347, 347, 111, 347, 347, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 57, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 268, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 61, 348, 62, + 348, 348, 348, 348, 348, 113, 348, 114, 348, 348, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 7, - 347, 347, 347, 347, 346, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 238, 347, 347, 347, 347, 163, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 250, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 348, 348, 111, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 7, 348, 348, 348, 348, + 347, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 239, + 348, 348, 348, 348, 163, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 251, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 48, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 58, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 208, 347, 207, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 16, - 17, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 72, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 215, 347, 347, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 48, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 58, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 209, 348, 208, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 16, 17, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 72, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 347, 347, 347, 347, 116, 347, 115, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 199, 347, 347, 347, 347, 347, 347, 347, 347, - 143, 347, 347, 347, 346, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 104, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 92, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 228, 347, 347, 347, 347, 347, 347, 347, 347, + 348, 348, 348, 216, 348, 348, 348, 348, 348, 348, + 116, 348, 115, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 200, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 143, 348, 348, + 348, 347, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 104, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 92, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 229, 348, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 97, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 65, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 202, 203, 347, 347, 347, 278, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 6, 347, 347, 347, 347, 347, 347, 297, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 282, 347, 347, 347, 347, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 97, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 65, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 203, 204, + 348, 348, 348, 279, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 6, 348, 348, + 348, 348, 348, 348, 298, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 347, 347, 308, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 45, 347, 347, 347, - 347, 47, 347, 347, 347, 93, 347, 347, 347, 347, - 347, 55, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 346, 347, 195, 347, 347, 347, 138, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 220, - 347, 196, 347, 347, 347, 235, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 56, 347, 347, 347, + 348, 348, 283, 348, 348, 348, 348, 348, 348, 309, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 45, 348, 348, 348, 348, 47, 348, + 348, 348, 93, 348, 348, 348, 348, 348, 55, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 347, 348, 196, 348, 348, 348, 138, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 221, 348, 197, + 348, 348, 348, 236, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 347, 347, 347, 347, 347, 347, 347, 140, 121, 347, - 122, 347, 347, 347, 120, 347, 347, 347, 347, 347, - 347, 347, 347, 158, 347, 347, 53, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 266, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 197, 347, 347, 347, 347, 347, 200, - 347, 206, 347, 347, 347, 347, 347, 347, 234, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 108, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 348, 348, 348, 348, 56, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 140, 121, 348, 122, 348, + 348, 348, 120, 348, 348, 348, 348, 348, 348, 348, + 348, 158, 348, 348, 53, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 267, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 198, 348, 348, 348, 348, 348, 201, 348, 207, + 348, 348, 348, 348, 348, 348, 235, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 108, 348, 348, 348, 348, 348, 348, - 347, 347, 347, 347, 133, 347, 347, 347, 347, 347, - 347, 347, 63, 347, 347, 347, 29, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 20, 347, - 347, 347, 347, 347, 347, 30, 39, 347, 168, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 193, 347, 347, 346, 347, 347, 347, 347, - 347, 347, 80, 82, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 286, 347, 347, - 347, 347, 246, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 133, 348, 348, 348, 348, 348, 348, 348, + 63, 348, 348, 348, 29, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 20, 348, 348, 348, + 348, 348, 348, 30, 39, 348, 168, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 194, 348, 348, 347, 348, 348, 348, 348, 348, + 348, 80, 82, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 287, 348, 348, 348, + 348, 247, 348, 348, 348, 348, 348, 348, 348, 348, - 347, 347, 347, 347, 347, 123, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 157, 347, 49, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 301, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 162, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 295, 347, 347, 347, 226, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 311, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 179, 347, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 123, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 157, 348, 49, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 302, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 162, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 296, 348, 348, 348, 227, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 312, 348, 348, 348, 348, - 347, 347, 347, 347, 347, 347, 347, 347, 117, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 174, 347, 187, 347, 347, 347, 347, 347, 347, 346, - 347, 146, 347, 347, 347, 347, 347, 103, 347, 347, - 347, 347, 218, 347, 347, 347, 347, 347, 347, 236, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 258, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 139, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 348, 348, 348, 348, 348, 348, 348, 180, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 117, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 175, + 348, 188, 348, 348, 348, 348, 348, 348, 348, 347, + 348, 146, 348, 348, 348, 348, 348, 103, 348, 348, + 348, 348, 219, 348, 348, 348, 348, 348, 348, 237, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 259, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 139, 348, 348, - 347, 347, 178, 347, 347, 347, 347, 347, 347, 83, - 347, 84, 347, 347, 347, 347, 347, 64, 304, 347, - 347, 347, 347, 347, 91, 188, 347, 209, 347, 239, - 347, 347, 201, 279, 347, 347, 347, 347, 347, 347, - 76, 347, 190, 347, 347, 347, 347, 347, 9, 347, - 347, 347, 347, 347, 107, 347, 347, 347, 347, 271, - 347, 347, 347, 347, 217, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 179, 348, 348, 348, 348, 348, 348, 83, + 348, 84, 348, 348, 348, 348, 348, 64, 305, 348, + 348, 348, 348, 348, 91, 189, 348, 210, 348, 240, + 348, 348, 202, 280, 348, 348, 348, 348, 348, 348, + 76, 348, 191, 348, 348, 348, 348, 348, 9, 348, + 348, 348, 348, 348, 107, 348, 348, 348, 348, 272, + 348, 348, 348, 348, 218, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 346, 347, 347, 347, 347, - 177, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 164, 347, 285, 347, 347, 347, 347, 347, 257, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 230, 347, 347, 347, 347, 347, 277, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 305, 347, - 189, 347, 347, 347, 347, 347, 347, 347, 347, 75, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 347, 348, 348, 348, + 348, 178, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 164, 348, 286, 348, 348, 348, 348, 348, + 258, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 231, 348, 348, 348, 348, 348, 278, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 306, - 77, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 106, 347, 347, 347, 347, 269, 347, 347, 347, 347, - 281, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 222, 37, 31, 33, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 38, 347, - 32, 34, 347, 347, 347, 347, 347, 347, 347, 347, - 102, 347, 347, 347, 347, 347, 347, 347, 347, 346, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 224, 221, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, + 348, 190, 348, 348, 348, 348, 348, 348, 348, 348, + 75, 77, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 106, 348, 348, 348, 348, 270, 348, 348, 348, + 348, 282, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 223, 37, 31, 33, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 38, + 348, 32, 34, 348, 348, 348, 348, 348, 348, 348, + 348, 102, 348, 174, 348, 348, 348, 348, 348, 348, + 348, 347, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 225, 222, 348, 348, 348, 348, 348, - 347, 74, 347, 347, 347, 141, 347, 124, 347, 347, - 347, 347, 347, 347, 347, 347, 159, 50, 347, 347, - 347, 338, 13, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 299, 347, 302, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 12, 347, 347, - 22, 347, 347, 347, 347, 347, 275, 347, 347, 347, - 347, 283, 347, 347, 347, 78, 347, 232, 347, 347, - 347, 347, 347, 223, 347, 347, 73, 347, 347, 347, - 347, 347, 23, 347, 347, 46, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 173, 172, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 74, 348, 348, 348, 141, 348, 124, + 348, 348, 348, 348, 348, 348, 348, 348, 159, 50, + 348, 348, 348, 339, 13, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 300, 348, 303, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 12, + 348, 348, 22, 348, 348, 348, 348, 348, 276, 348, + 348, 348, 348, 284, 348, 348, 348, 78, 348, 233, + 348, 348, 348, 348, 348, 224, 348, 348, 73, 348, + 348, 348, 348, 348, 23, 348, 348, 46, 348, 348, - 347, 347, 338, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 225, 219, 347, 237, 347, 347, 287, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 85, 347, 347, 347, 347, 270, 347, 347, 347, - 347, 205, 347, 347, 347, 347, 347, 231, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 309, - 310, 170, 347, 347, 79, 347, 347, 347, 347, 180, - 347, 347, 347, 118, 119, 347, 347, 347, 25, 347, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 173, 172, 348, 348, 339, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 226, 220, 348, 238, 348, 348, + 288, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 85, 348, 348, 348, 348, 271, 348, + 348, 348, 348, 206, 348, 348, 348, 348, 348, 232, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 310, 311, 170, 348, 348, 79, 348, 348, 348, - 347, 165, 347, 167, 347, 210, 347, 347, 347, 347, - 171, 347, 347, 347, 347, 240, 347, 347, 347, 347, - 347, 347, 347, 148, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 248, 347, 347, 347, - 347, 347, 347, 347, 318, 347, 27, 347, 280, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 89, 211, 347, 347, 268, 347, 303, - 347, 204, 347, 347, 347, 347, 347, 59, 347, 347, - 347, 347, 347, 347, 4, 347, 347, 347, 347, 131, - 147, 347, 347, 347, 184, 347, 347, 347, 347, 347, + 348, 181, 348, 348, 348, 118, 119, 348, 348, 348, + 25, 348, 348, 165, 348, 167, 348, 211, 348, 348, + 348, 348, 171, 348, 348, 348, 348, 241, 348, 348, + 348, 348, 348, 348, 348, 148, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 249, 348, + 348, 348, 348, 348, 348, 348, 319, 348, 27, 348, + 281, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 89, 212, 348, 348, 269, + 348, 304, 348, 205, 348, 348, 348, 348, 348, 59, + 348, 348, 348, 348, 348, 348, 4, 348, 348, 348, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 243, 40, 41, 347, 347, 347, 347, - 347, 347, 347, 288, 347, 347, 347, 347, 347, 347, - 347, 256, 347, 347, 347, 347, 347, 347, 347, 347, - 214, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 88, 347, 60, 274, 347, 244, 347, - 347, 347, 347, 347, 11, 347, 347, 347, 347, 347, - 347, 347, 347, 130, 347, 347, 347, 347, 212, 94, - 347, 347, 43, 347, 347, 347, 347, 347, 347, 347, - 347, 176, 347, 347, 347, 347, 347, 347, 347, 150, + 348, 131, 147, 348, 348, 348, 185, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 244, 40, 41, 348, 348, + 348, 348, 348, 348, 348, 289, 348, 348, 348, 348, + 348, 348, 348, 257, 348, 348, 348, 348, 348, 348, + 348, 348, 215, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 88, 348, 60, 275, 348, + 245, 348, 348, 348, 348, 348, 11, 348, 348, 348, + 348, 348, 348, 348, 348, 130, 348, 348, 348, 348, + 213, 94, 348, 348, 43, 348, 348, 348, 348, 348, - 347, 347, 347, 347, 247, 347, 347, 347, 347, 347, - 255, 347, 347, 347, 347, 144, 347, 347, 347, 125, - 126, 347, 347, 347, 96, 100, 95, 347, 347, 347, - 347, 86, 347, 347, 347, 347, 347, 347, 10, 347, - 347, 347, 347, 347, 272, 312, 347, 347, 347, 347, - 347, 317, 42, 347, 347, 347, 347, 347, 175, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 101, 99, 347, 54, 347, 347, - 87, 300, 347, 347, 347, 347, 24, 347, 347, 347, + 348, 348, 348, 177, 348, 348, 348, 348, 348, 348, + 348, 150, 348, 348, 348, 348, 248, 348, 348, 348, + 348, 348, 256, 348, 348, 348, 348, 144, 348, 348, + 348, 125, 126, 348, 348, 348, 96, 100, 95, 348, + 348, 348, 348, 86, 348, 348, 348, 348, 348, 348, + 10, 348, 348, 348, 348, 348, 273, 313, 348, 348, + 348, 348, 348, 318, 42, 348, 348, 348, 348, 348, + 176, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 101, 99, 348, 54, - 347, 347, 198, 347, 347, 347, 347, 347, 213, 347, - 347, 347, 347, 347, 347, 347, 347, 194, 347, 347, - 166, 81, 347, 347, 347, 347, 347, 289, 347, 347, - 347, 347, 347, 347, 347, 252, 347, 347, 251, 145, - 347, 347, 98, 51, 347, 151, 152, 155, 156, 153, - 154, 90, 298, 347, 347, 273, 347, 347, 347, 26, - 347, 169, 347, 347, 347, 347, 192, 347, 242, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 182, - 181, 44, 347, 347, 347, 347, 347, 347, 347, 347, + 348, 348, 87, 301, 348, 348, 348, 348, 24, 348, + 348, 348, 348, 348, 199, 348, 348, 348, 348, 348, + 214, 348, 348, 348, 348, 348, 348, 348, 348, 195, + 348, 348, 166, 81, 348, 348, 348, 348, 348, 290, + 348, 348, 348, 348, 348, 348, 348, 253, 348, 348, + 252, 145, 348, 348, 98, 51, 348, 151, 152, 155, + 156, 153, 154, 90, 299, 348, 348, 274, 348, 348, + 348, 26, 348, 169, 348, 348, 348, 348, 193, 348, + 243, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 296, 347, 347, 347, 347, 105, - 347, 241, 347, 265, 293, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 319, 347, 52, 5, - 347, 347, 233, 347, 347, 294, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 253, 28, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 254, - 347, 347, 347, 149, 347, 347, 347, 347, 347, 347, - 347, 347, 183, 347, 191, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 290, 347, 347, 347, 347, 347, + 348, 183, 182, 44, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 297, 348, 348, 348, + 348, 105, 348, 242, 348, 266, 294, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 320, 348, + 52, 5, 348, 348, 234, 348, 348, 295, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 254, 28, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 255, 348, 348, 348, 149, 348, 348, 348, 348, + 348, 348, 348, 348, 184, 348, 192, 348, 348, 348, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 316, 347, 347, 261, 347, 347, 347, 347, - 347, 291, 347, 347, 347, 347, 347, 347, 292, 347, - 347, 347, 259, 347, 262, 263, 347, 347, 347, 347, - 347, 260, 264, 0 + 348, 348, 348, 348, 348, 348, 291, 348, 348, 348, + 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 348, 348, 348, 348, 317, 348, 348, 262, 348, 348, + 348, 348, 348, 292, 348, 348, 348, 348, 348, 348, + 293, 348, 348, 348, 260, 348, 263, 264, 348, 348, + 348, 348, 348, 261, 265, 0 } ; static const YY_CHAR yy_ec[256] = @@ -786,17 +787,17 @@ static const YY_CHAR yy_meta[41] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[3463] = +static const flex_int16_t yy_base[3475] = { 0, 0, 0, 38, 41, 44, 46, 59, 65, 71, 77, - 90, 112, 96, 118, 124, 136, 4039, 3298, 81, 6721, - 6721, 6721, 129, 52, 130, 63, 131, 152, 70, 140, + 90, 112, 96, 118, 124, 136, 4558, 4515, 81, 6741, + 6741, 6741, 129, 52, 130, 63, 131, 152, 70, 140, 149, 156, 57, 88, 76, 173, 175, 95, 197, 145, - 185, 199, 208, 213, 178, 123, 3236, 6721, 6721, 6721, - 107, 2864, 6721, 6721, 6721, 154, 2451, 2010, 6721, 6721, - 6721, 245, 1786, 6721, 6721, 6721, 163, 1733, 6721, 249, - 6721, 253, 148, 1670, 1574, 6721, 6721, 6721, 257, 1426, - 6721, 6721, 6721, 233, 1294, 263, 201, 0, 267, 0, + 185, 199, 208, 213, 178, 123, 4396, 6741, 6741, 6741, + 107, 3671, 6741, 6741, 6741, 154, 3247, 3086, 6741, 6741, + 6741, 245, 2975, 6741, 6741, 6741, 163, 2912, 6741, 249, + 6741, 253, 148, 2860, 2006, 6741, 6741, 6741, 257, 1786, + 6741, 6741, 6741, 233, 1674, 263, 201, 0, 267, 0, 0, 165, 191, 221, 252, 205, 181, 265, 92, 261, 216, 263, 271, 272, 210, 279, 274, 282, 278, 291, @@ -804,8 +805,8 @@ static const flex_int16_t yy_base[3463] = 317, 311, 315, 319, 321, 331, 327, 332, 336, 322, 339, 337, 346, 345, 347, 348, 353, 351, 357, 284, 358, 359, 369, 360, 380, 365, 381, 379, 375, 366, - 367, 389, 390, 394, 393, 395, 396, 403, 404, 1266, - 419, 1115, 422, 1023, 429, 930, 888, 433, 775, 437, + 367, 389, 390, 394, 393, 395, 396, 403, 404, 1564, + 419, 1169, 422, 1003, 429, 930, 888, 433, 775, 437, 441, 0, 433, 705, 447, 479, 287, 452, 411, 445, 426, 446, 447, 448, 449, 450, 451, 453, 452, 456, 470, 234, 463, 473, 481, 479, 476, 483, 486, 487, @@ -826,737 +827,739 @@ static const flex_int16_t yy_base[3463] = 738, 741, 745, 743, 750, 752, 760, 755, 756, 771, 763, 766, 762, 774, 773, 765, 769, 794, 799, 782, 787, 800, 801, 804, 802, 803, 806, 808, 809, 814, - 818, 819, 823, 807, 825, 827, 834, 829, 6721, 831, + 818, 819, 823, 807, 825, 827, 834, 829, 6741, 831, 838, 846, 839, 847, 850, 848, 854, 856, 836, 866, - 864, 867, 876, 898, 849, 871, 868, 878, 881, 6721, + 864, 867, 876, 898, 849, 871, 868, 878, 881, 6741, 884, 882, 922, 890, 891, 908, 910, 859, 909, 911, - 904, 912, 933, 906, 915, 929, 945, 942, 920, 930, + 904, 912, 933, 906, 920, 915, 945, 942, 930, 943, - 944, 946, 948, 958, 953, 955, 956, 957, 966, 861, - 961, 962, 972, 964, 973, 974, 978, 979, 980, 987, - 993, 985, 976, 988, 994, 996, 999, 998, 1011, 1008, - 1006, 1004, 1001, 1017, 1027, 1019, 1030, 1031, 1034, 1033, - 1022, 1043, 1032, 1047, 1048, 1039, 1049, 1057, 1054, 1041, - 1055, 1059, 1060, 1061, 1063, 1066, 1067, 1068, 1069, 1073, - 1077, 1071, 1087, 1074, 1082, 1089, 1084, 6721, 1091, 6721, - 1093, 1094, 1095, 1096, 1100, 1098, 1097, 6721, 1101, 1107, - 1108, 1099, 1116, 1111, 1129, 1122, 1112, 1124, 1130, 1131, - 1134, 1142, 1137, 1138, 1146, 1139, 1143, 1144, 1147, 1150, + 944, 946, 952, 954, 955, 953, 957, 958, 966, 861, + 961, 970, 981, 962, 964, 968, 971, 974, 986, 983, + 990, 991, 993, 995, 997, 996, 1001, 998, 1011, 1005, + 1008, 1021, 1000, 1022, 1033, 1002, 1030, 1034, 1032, 1037, + 1019, 1040, 1043, 1045, 1046, 1047, 1048, 1058, 1050, 1053, + 1055, 1057, 1059, 1065, 1061, 1063, 1067, 1069, 1072, 1077, + 1080, 1078, 1070, 1086, 1079, 1087, 1089, 6741, 1092, 6741, + 1094, 1095, 1096, 1097, 1099, 1101, 1098, 6741, 1102, 1106, + 1107, 1109, 1114, 1116, 1119, 1112, 1126, 1128, 1129, 1130, + 1131, 1141, 1133, 1134, 1148, 1138, 1145, 1143, 1147, 1151, - 1151, 1152, 1155, 1158, 1159, 1162, 1179, 6721, 1161, 1163, - 1171, 1165, 1170, 1172, 1176, 1190, 1191, 1173, 1197, 1201, - 1203, 1210, 1206, 1207, 1208, 1209, 1213, 1182, 1214, 1218, - 1216, 1222, 1225, 1224, 1226, 1230, 1227, 1228, 1229, 1245, - 6721, 1237, 1238, 1249, 1256, 1252, 1254, 1241, 1257, 1255, - 1258, 1259, 1261, 1265, 517, 1272, 1278, 1268, 1273, 1281, - 1279, 1283, 1282, 1284, 1287, 1290, 1288, 1289, 1301, 1298, - 1303, 1309, 1312, 1314, 1316, 1323, 1325, 1310, 1318, 1326, - 1322, 1320, 1328, 1332, 1333, 1321, 1334, 1337, 1346, 1343, - 1342, 1345, 1348, 1351, 1349, 1354, 1356, 1355, 1357, 1365, + 1149, 1156, 1157, 1158, 1159, 1160, 1179, 6741, 1161, 1163, + 1167, 1172, 1164, 1170, 1186, 1188, 1191, 1189, 1201, 1194, + 1203, 1214, 1207, 1209, 1215, 1197, 1211, 1216, 1221, 1223, + 1226, 1227, 1228, 1229, 1232, 1233, 1235, 1236, 1234, 1237, + 1238, 6741, 1247, 1250, 1257, 1248, 1258, 1249, 1259, 1260, + 1262, 1263, 1265, 1177, 1266, 517, 1267, 1272, 1279, 1276, + 1286, 1282, 1284, 1283, 1285, 1290, 1289, 1293, 1291, 1304, + 1301, 1306, 1311, 1319, 1316, 1318, 1326, 1328, 1308, 1321, + 1296, 1325, 1323, 1324, 1331, 1335, 1336, 1337, 1339, 1344, + 1341, 1346, 1347, 1348, 1349, 1351, 1353, 1355, 1354, 1357, - 1358, 1366, 1370, 1367, 1368, 1372, 1376, 1374, 1383, 1384, - 1386, 6721, 1393, 1391, 1394, 1395, 1402, 1403, 1404, 1389, - 1396, 1408, 1410, 1411, 1412, 1418, 1413, 1419, 1420, 1424, - 1425, 1427, 1435, 1430, 1428, 1445, 1444, 1446, 1437, 1448, - 1449, 1433, 1456, 1453, 1463, 1461, 1459, 1460, 1472, 1467, - 1468, 1469, 1476, 1473, 1477, 1478, 1475, 1490, 1487, 1479, - 1499, 1496, 1498, 1506, 1501, 1485, 1507, 1504, 1512, 1511, - 1515, 1516, 1517, 1518, 1525, 1520, 1521, 1522, 1526, 1527, - 1528, 1531, 1535, 1546, 1532, 1539, 1542, 1544, 1548, 1549, - 1551, 1556, 1557, 1558, 1559, 1560, 1561, 1567, 1564, 1571, + 1367, 1358, 1365, 1372, 1368, 1381, 1369, 1373, 1371, 1385, + 1378, 1388, 6741, 1397, 1393, 1395, 1396, 1394, 1401, 1405, + 1407, 1406, 1408, 1412, 1409, 1411, 1417, 1418, 1413, 1419, + 1420, 1421, 1426, 1434, 1429, 1439, 1446, 1445, 1447, 1433, + 1441, 1449, 1437, 1459, 1457, 1464, 1460, 1450, 1461, 1471, + 1467, 1468, 1469, 1478, 1473, 1476, 1477, 1479, 1483, 1486, + 1487, 1497, 1494, 1495, 1502, 1503, 1498, 1507, 1508, 1511, + 1512, 1514, 1515, 1516, 1517, 1524, 1521, 1519, 1526, 1529, + 1520, 1531, 1522, 1536, 1545, 1540, 1542, 1543, 1546, 1547, + 1548, 1549, 1552, 1557, 1554, 1558, 1559, 1561, 1569, 1562, - 1570, 1572, 1582, 1580, 1583, 1585, 1586, 1587, 1589, 1590, - 1592, 1597, 1598, 1604, 1606, 1607, 1609, 1608, 1612, 1620, - 1610, 1618, 1625, 1619, 1626, 1627, 1630, 1611, 1637, 1638, - 1641, 1643, 1645, 6721, 1631, 1634, 1646, 1649, 1651, 1652, - 1655, 1662, 1657, 1660, 1658, 1659, 1661, 1685, 6721, 1664, - 6721, 6721, 1669, 6721, 6721, 1671, 1668, 6721, 1672, 1682, - 1683, 1688, 1695, 1700, 1698, 1675, 1689, 1702, 1712, 1723, - 1708, 1710, 1711, 1714, 1715, 1716, 1721, 1719, 1717, 1728, - 1734, 1746, 1743, 1747, 1744, 1749, 1751, 1755, 1758, 1757, - 1764, 1765, 1756, 1766, 1769, 1770, 1772, 1771, 1774, 1777, + 1571, 1574, 1579, 1580, 1581, 1582, 1584, 1585, 1586, 1589, + 1592, 1594, 1590, 1602, 1603, 1593, 1605, 1606, 1609, 1610, + 1613, 1622, 1621, 1617, 1624, 1618, 1627, 1629, 1631, 1630, + 1634, 1637, 1640, 1642, 1641, 6741, 1635, 1649, 1648, 1652, + 1653, 1655, 1657, 1664, 1659, 1662, 1660, 1661, 1663, 1687, + 6741, 1666, 6741, 6741, 1671, 6741, 6741, 1670, 1676, 6741, + 1684, 1685, 1677, 1691, 1672, 1697, 1700, 1701, 1702, 1703, + 1710, 1724, 1708, 1712, 1714, 1717, 1705, 1718, 1715, 1727, + 1730, 1734, 1737, 1750, 1741, 1751, 1739, 1753, 1755, 1757, + 1760, 1761, 1765, 1767, 1735, 1768, 1770, 1771, 1773, 1772, - 1780, 1781, 1778, 1776, 1783, 1793, 1784, 1798, 1801, 6721, - 1799, 1808, 1803, 1812, 1809, 1813, 1815, 1810, 1811, 1821, - 1824, 1817, 1826, 1827, 1828, 1829, 1830, 1831, 1834, 1836, - 1840, 1838, 1849, 1839, 6721, 1842, 1852, 1841, 1854, 1853, - 1857, 1863, 1855, 1856, 1864, 1866, 1876, 1871, 1867, 1874, - 1877, 1878, 1880, 1884, 6721, 1883, 1889, 1890, 1891, 1892, - 1894, 1897, 1899, 1900, 1901, 1903, 1904, 1905, 1906, 1915, - 1907, 1912, 1918, 1919, 1922, 1927, 1929, 1931, 1939, 1930, - 1932, 1941, 1934, 1940, 1942, 1944, 1945, 1947, 1957, 1959, - 1946, 1961, 1956, 1958, 1969, 1971, 1968, 1973, 1974, 1975, + 1775, 1778, 1781, 1782, 1779, 1777, 1784, 1794, 1785, 1799, + 1802, 6741, 1800, 1809, 1804, 1813, 1810, 1814, 1816, 1811, + 1812, 1822, 1825, 1818, 1827, 1828, 1829, 1830, 1831, 1832, + 1835, 1837, 1841, 1839, 1850, 1840, 6741, 1843, 1853, 1842, + 1855, 1854, 1858, 1864, 1856, 1857, 1865, 1867, 1877, 1872, + 1868, 1875, 1878, 1879, 1881, 1885, 6741, 1884, 1890, 1891, + 1892, 1893, 1895, 1898, 1900, 1901, 1902, 1904, 1905, 1906, + 1907, 1916, 1908, 1913, 1919, 1920, 1923, 1928, 1930, 1932, + 1940, 1931, 1933, 1942, 1935, 1941, 1943, 1945, 1946, 1948, + 1958, 1960, 1947, 1962, 1957, 1959, 1970, 1972, 1969, 1974, - 1976, 1981, 1983, 1984, 1985, 1988, 1995, 1979, 1991, 1993, - 2000, 2004, 2014, 2002, 2006, 2015, 1996, 2009, 2019, 2012, - 6721, 2021, 2023, 6721, 2025, 2026, 2027, 2049, 2032, 2030, - 2028, 2036, 2039, 2040, 2041, 2047, 2050, 2053, 2063, 2042, - 2059, 2068, 2066, 2071, 2075, 2069, 2077, 2078, 2079, 2080, - 2082, 2085, 2098, 2100, 2096, 2102, 2107, 2083, 2103, 2106, - 2125, 2104, 2108, 2109, 2115, 2110, 2112, 2120, 2118, 2119, - 2121, 2114, 2135, 2136, 2134, 2137, 2142, 2143, 2148, 2149, - 2150, 6721, 2160, 2156, 2152, 2157, 2163, 2172, 2164, 2165, - 6721, 2168, 2173, 2167, 2180, 2178, 2175, 2181, 2179, 2188, + 1975, 1976, 1977, 1982, 1984, 1986, 1985, 1989, 1990, 1997, + 1992, 2000, 1996, 2001, 2002, 2010, 2008, 2011, 2016, 2013, + 2019, 2021, 2022, 6741, 2024, 2028, 6741, 2025, 2027, 2029, + 2051, 2030, 2032, 2034, 2044, 2033, 2053, 2037, 2045, 2061, + 2055, 2071, 2064, 2063, 2074, 2068, 2076, 2075, 2079, 2080, + 2082, 2085, 2086, 2040, 2088, 2098, 2102, 2101, 2109, 2111, + 2097, 2089, 2106, 2125, 2110, 2107, 2113, 2116, 2114, 2118, + 2121, 2120, 2117, 2130, 2132, 2141, 2137, 2138, 2140, 2143, + 2146, 2153, 2156, 2147, 6741, 2161, 2154, 2162, 2163, 2165, + 2172, 2169, 2170, 6741, 2171, 2173, 2175, 2183, 2176, 2179, - 2185, 2189, 2191, 2195, 2190, 2192, 2203, 6721, 2198, 6721, - 2193, 2206, 2208, 2210, 2211, 2212, 2216, 2215, 2217, 6721, - 6721, 2218, 2219, 2232, 2227, 2234, 2224, 2235, 6721, 2236, - 2246, 6721, 2237, 2244, 2242, 2249, 2250, 2253, 2251, 2255, - 2260, 2257, 2265, 2258, 2262, 2261, 6721, 2276, 2263, 2278, - 2280, 2272, 2281, 2282, 2286, 2289, 6721, 2268, 2292, 2293, - 2300, 2296, 2297, 2298, 2302, 2303, 2307, 2309, 2310, 2311, - 2313, 2318, 2321, 2317, 2319, 2329, 2327, 2337, 6721, 2333, - 2334, 2320, 2341, 2339, 2343, 2336, 2346, 2347, 2348, 2350, - 2351, 2349, 2356, 2357, 2358, 2359, 2368, 2369, 2364, 2366, + 2187, 2184, 2186, 2188, 2190, 2194, 2196, 2193, 2195, 2207, + 6741, 2197, 6741, 2206, 2209, 2210, 2211, 2214, 2216, 2217, + 2218, 2219, 6741, 6741, 2221, 2222, 2235, 2233, 2237, 2225, + 2238, 6741, 2239, 2248, 6741, 2249, 2241, 2243, 2245, 2252, + 2254, 2256, 2258, 2266, 2259, 2267, 2262, 2270, 2264, 6741, + 2271, 2263, 2276, 2280, 2282, 2283, 2286, 2288, 2287, 6741, + 2289, 2290, 2294, 2302, 2304, 2301, 2297, 2305, 2311, 2307, + 2309, 2313, 2314, 2316, 2324, 2326, 2322, 2330, 2337, 2334, + 2338, 6741, 2336, 2340, 2323, 2348, 2344, 2346, 2347, 2350, + 2351, 2352, 2354, 2360, 2353, 2361, 2355, 2362, 2365, 2376, - 2373, 2374, 2376, 2377, 2384, 2381, 2382, 2383, 2385, 6721, - 2386, 2388, 2392, 2396, 2398, 2394, 171, 2395, 2397, 2404, - 2406, 2408, 2419, 2407, 2421, 2426, 2413, 2423, 2422, 2425, - 2431, 2432, 2433, 2434, 2435, 2436, 2437, 2439, 6721, 2441, - 2442, 2444, 2448, 2447, 2450, 2455, 6721, 2457, 2464, 2467, - 2476, 2459, 2468, 2477, 2473, 2478, 2479, 2481, 2483, 2485, - 2484, 2487, 2493, 2490, 6721, 2495, 2498, 2500, 2491, 2507, - 2506, 2499, 2513, 2514, 2515, 2518, 2516, 2517, 2520, 2519, - 2521, 2522, 2527, 2526, 2523, 2525, 2535, 2536, 2537, 2546, - 2547, 2539, 2548, 2549, 6721, 2559, 2550, 2554, 2552, 2555, + 2378, 2367, 2375, 2386, 2368, 2377, 2381, 2379, 2392, 2383, + 2389, 2390, 2394, 6741, 2395, 2400, 2396, 2402, 2403, 2405, + 171, 2406, 2411, 2410, 2412, 2415, 2428, 2413, 2429, 2436, + 2416, 2434, 2319, 2435, 2431, 2437, 2438, 2441, 2442, 2446, + 2444, 2447, 6741, 2449, 2450, 2452, 2454, 2457, 2455, 2460, + 6741, 2458, 2467, 2472, 2481, 2471, 2473, 2418, 2482, 2484, + 2483, 2485, 2486, 2488, 2489, 2493, 2495, 2491, 6741, 2497, + 2498, 2499, 2508, 2509, 2511, 2512, 2516, 2517, 2518, 2513, + 2519, 2520, 2523, 2522, 2524, 2526, 2530, 2533, 2529, 2538, + 2542, 2539, 2540, 2543, 2546, 2547, 2552, 2550, 6741, 2562, - 2557, 2562, 2570, 2577, 2561, 2572, 2574, 2578, 2588, 2581, - 2583, 2590, 2598, 2595, 2603, 2591, 2604, 2605, 2613, 2602, - 2615, 2617, 2606, 2618, 2625, 2621, 2608, 2624, 2627, 2631, - 2638, 2639, 2635, 2642, 2634, 2651, 2644, 2659, 2664, 2655, - 6721, 2653, 2663, 2647, 2667, 2674, 2670, 2669, 2672, 2671, - 2675, 2680, 2681, 2682, 2689, 2686, 2637, 2688, 2690, 2692, - 2694, 2697, 2693, 2698, 2705, 2708, 2701, 2713, 2715, 6721, - 2718, 2709, 2719, 2720, 2725, 2722, 2727, 2730, 2728, 2732, - 2734, 2736, 2737, 2739, 2740, 2741, 2750, 2746, 2745, 2747, - 2748, 6721, 2759, 2752, 2758, 2760, 2764, 2765, 2770, 2768, + 2553, 2557, 2561, 2560, 2563, 2573, 2564, 2583, 2566, 2574, + 2581, 2586, 2595, 2584, 2589, 2599, 2590, 2601, 2602, 2613, + 2605, 2612, 2615, 2609, 2619, 2621, 2622, 2623, 2631, 2627, + 2628, 2629, 2632, 2633, 2643, 2644, 2635, 2645, 2647, 2650, + 2639, 2657, 2662, 2664, 6741, 2666, 2654, 2668, 2671, 2678, + 2673, 2652, 2676, 2679, 2683, 2684, 2685, 2687, 2694, 2689, + 2691, 2695, 2697, 2696, 2698, 2705, 2700, 2706, 2708, 2715, + 2711, 2717, 2719, 6741, 2720, 2722, 2724, 2725, 2729, 2730, + 2733, 2735, 2737, 2738, 2739, 2741, 2744, 2575, 2745, 2746, + 2753, 2749, 2752, 2755, 2751, 6741, 2762, 2756, 2758, 2767, - 2772, 2778, 2776, 2780, 2782, 2783, 2784, 6721, 2791, 2792, - 2789, 2793, 2795, 2796, 2799, 2801, 2802, 6721, 2803, 2805, - 2806, 2809, 2807, 2811, 2818, 2819, 2814, 6721, 2831, 2821, - 2817, 2826, 2828, 2829, 2830, 2832, 2836, 2838, 2839, 2842, - 2845, 2849, 2850, 6721, 2851, 2859, 2860, 2852, 2854, 2865, - 2866, 2867, 2868, 2871, 2875, 2869, 6721, 2890, 2887, 2886, - 2894, 2889, 2874, 2892, 2896, 2898, 2895, 2899, 2902, 2904, - 6721, 2906, 2905, 2909, 2911, 2914, 2915, 2916, 2928, 2917, - 2921, 2925, 2926, 2930, 2931, 2932, 2936, 2942, 2934, 2944, - 2948, 2946, 2951, 2938, 2954, 2962, 2963, 2959, 2965, 2966, + 2768, 2770, 2772, 2776, 2775, 2782, 2784, 2774, 2785, 2786, + 2787, 6741, 2794, 2796, 2797, 2798, 2801, 2799, 2804, 2805, + 2807, 2809, 6741, 2810, 2812, 2811, 2813, 2814, 2817, 2824, + 2825, 2820, 6741, 2833, 2822, 2831, 2832, 2835, 2839, 2837, + 2843, 2838, 2841, 2845, 2849, 2857, 2846, 2859, 6741, 2848, + 2871, 2850, 2872, 2874, 2861, 2862, 2873, 2878, 2876, 2887, + 2879, 6741, 2890, 2892, 2894, 2901, 2880, 2897, 2898, 2902, + 2903, 2904, 2906, 2909, 2910, 6741, 2911, 2913, 2915, 2917, + 2920, 2919, 2921, 2934, 2927, 2929, 2932, 2935, 2936, 2938, + 2942, 2945, 2944, 2941, 2953, 2954, 2943, 2956, 2960, 2963, - 2967, 2968, 2969, 2976, 2977, 2981, 2978, 2984, 6721, 2987, - 2988, 2982, 2980, 2990, 2993, 2994, 2996, 2999, 2995, 2997, - 3001, 3004, 3008, 3017, 3020, 3010, 3012, 3021, 3022, 3023, - 3024, 3025, 3026, 3031, 3034, 3033, 3035, 3036, 3043, 3039, - 3042, 3051, 3047, 3050, 3052, 3053, 3054, 3056, 3059, 3060, - 3064, 3057, 3063, 3073, 3079, 3081, 3065, 3083, 3075, 3084, - 3086, 3089, 6721, 3092, 3096, 3090, 3094, 3097, 3103, 3104, - 3106, 3107, 3098, 3112, 3115, 3116, 3118, 3121, 3123, 3124, - 3131, 3127, 6721, 3128, 6721, 3129, 3130, 3133, 3142, 3137, - 6721, 3141, 6721, 3145, 3152, 3143, 3147, 6721, 3153, 3149, + 2967, 2972, 2968, 2970, 2971, 2973, 2974, 2976, 2984, 2985, + 2992, 2987, 2990, 6741, 2994, 2996, 2997, 2983, 2998, 2999, + 3002, 3004, 3007, 3003, 3012, 3009, 3005, 3015, 3022, 3030, + 3018, 3025, 3027, 3028, 3031, 3032, 3033, 3035, 3036, 3045, + 3043, 3041, 3042, 3050, 3051, 3053, 3062, 3057, 3058, 3060, + 3063, 3064, 3065, 3066, 3071, 3080, 3069, 3073, 3075, 3085, + 3090, 3091, 3093, 3094, 3095, 3098, 3099, 6741, 3049, 3103, + 3100, 3102, 3109, 3113, 3114, 3116, 3106, 3117, 3123, 3120, + 3127, 3126, 3129, 3132, 3133, 3140, 3136, 6741, 3137, 6741, + 3138, 3139, 3142, 3151, 3148, 6741, 3150, 6741, 3154, 3161, - 3154, 3155, 3158, 3160, 3162, 3165, 3166, 3167, 3168, 3175, - 3171, 3169, 3173, 3179, 3181, 3183, 3189, 3190, 3191, 3192, - 3194, 3195, 3197, 3205, 3198, 3200, 3209, 3202, 3210, 6721, - 3219, 3222, 3214, 3223, 3216, 3212, 3224, 3226, 3229, 3231, - 3233, 3235, 3237, 3239, 3242, 3244, 3247, 3248, 3249, 3250, - 3260, 3258, 3267, 6721, 3262, 3264, 3265, 3266, 6721, 3269, - 3270, 3279, 3281, 3271, 3273, 3275, 3283, 3287, 3277, 3289, - 3292, 3293, 3303, 3300, 3304, 6721, 3306, 3308, 3302, 3314, - 3310, 3322, 3324, 3320, 3328, 3330, 3332, 3333, 3321, 3319, - 3335, 3336, 3339, 3346, 3347, 3343, 3350, 3345, 3352, 3359, + 3156, 3158, 6741, 3162, 3152, 3163, 3166, 3164, 3169, 3167, + 3171, 3176, 3180, 3177, 3178, 3181, 3186, 3187, 3188, 3189, + 3193, 3196, 3197, 3198, 3199, 3201, 3207, 3205, 3216, 3206, + 3208, 3212, 3218, 3219, 3221, 6741, 3230, 3231, 3220, 3232, + 3224, 3235, 3236, 3239, 3241, 3242, 3243, 3246, 3245, 3248, + 3257, 3252, 3249, 3260, 3262, 3266, 3269, 3270, 3278, 6741, + 3273, 3275, 3276, 3277, 6741, 3279, 3281, 3285, 3288, 3282, + 3291, 3292, 3294, 3298, 3293, 3300, 3301, 3310, 3308, 3314, + 3303, 6741, 3315, 3318, 3304, 3317, 3326, 3333, 3336, 3332, + 3334, 3338, 3346, 3342, 3331, 3341, 3343, 3345, 3348, 3355, - 3355, 3349, 3351, 3353, 3361, 3362, 3363, 3364, 3365, 3366, - 3372, 3369, 6721, 3379, 3380, 3381, 3384, 3383, 3385, 3386, - 3393, 3387, 6721, 3396, 3389, 3397, 3398, 3399, 3404, 3411, - 3405, 3412, 3413, 3416, 3414, 3415, 3417, 6721, 3420, 6721, - 3418, 3423, 3437, 3439, 3432, 3428, 3442, 3448, 3441, 3434, - 3450, 3449, 3451, 3457, 3458, 3459, 3460, 3461, 3462, 3469, - 3465, 3466, 3467, 3472, 3475, 3477, 3484, 3482, 3485, 6721, - 6721, 3481, 3491, 3494, 3488, 3492, 3498, 3499, 3496, 3502, - 3510, 3511, 3512, 3519, 6721, 3515, 3516, 3517, 3520, 3527, - 3522, 3524, 3541, 3533, 3534, 3542, 3537, 6721, 3526, 3544, + 3356, 3352, 3360, 3353, 3358, 3367, 3364, 3361, 3368, 3370, + 3371, 3372, 3373, 3374, 3375, 3377, 3378, 3382, 6741, 3383, + 3384, 3389, 3397, 3393, 3394, 3398, 3403, 3399, 6741, 3405, + 3406, 3407, 3409, 3414, 3408, 3411, 3416, 3419, 3422, 3424, + 3427, 3429, 3428, 6741, 3430, 6741, 3432, 3433, 3443, 3447, + 3448, 3435, 3449, 3455, 3451, 3456, 3458, 3459, 3461, 3465, + 3467, 3468, 3469, 3470, 3471, 3478, 3474, 3476, 3481, 3485, + 3486, 3489, 3493, 3490, 3497, 6741, 6741, 3491, 3499, 3501, + 3498, 3504, 3506, 3507, 3512, 3510, 3518, 3519, 3520, 3529, + 6741, 3525, 3526, 3527, 3530, 3537, 3532, 3534, 3548, 3546, - 3551, 3547, 3550, 3555, 6721, 3554, 6721, 3552, 3556, 3557, - 3561, 3563, 3564, 3567, 3568, 3569, 3570, 3574, 3585, 3586, - 3578, 3588, 3582, 3589, 3590, 3593, 3597, 3600, 3596, 3598, - 3599, 6721, 3604, 3601, 3608, 3606, 3615, 3619, 3613, 3605, - 6721, 3616, 3623, 3626, 3625, 3630, 3634, 3631, 3635, 3636, - 3639, 3640, 3641, 3644, 3646, 6721, 3642, 3643, 3657, 3652, - 3649, 3653, 3666, 3668, 3670, 6721, 3672, 3673, 3680, 3676, - 3678, 3660, 3681, 3679, 3683, 3685, 3686, 3687, 3688, 3689, - 3694, 3695, 3691, 3700, 3697, 3702, 3708, 3701, 3712, 3721, - 3718, 6721, 3719, 3723, 3720, 3724, 3725, 3729, 3730, 3733, + 3543, 3553, 3552, 6741, 3544, 3545, 3560, 3555, 3562, 3567, + 6741, 3566, 6741, 3556, 3563, 3569, 3573, 3570, 3572, 3580, + 3581, 3576, 3583, 3587, 3598, 3599, 3588, 3596, 3584, 3591, + 3600, 3603, 3605, 3612, 3607, 3610, 3613, 6741, 3615, 3616, + 3617, 3620, 3622, 3623, 3627, 3624, 3611, 6741, 3630, 3635, + 3637, 3638, 3639, 3646, 3643, 3647, 3648, 3652, 3649, 3653, + 3656, 3657, 6741, 3655, 3658, 3670, 3661, 3665, 3666, 3676, + 3677, 3682, 6741, 3679, 3685, 3692, 3688, 3689, 3691, 3695, + 3690, 3696, 3697, 3699, 3700, 3702, 3703, 3704, 3706, 3708, + 3711, 3709, 3714, 3722, 3723, 3725, 3734, 3730, 6741, 3731, - 3735, 3726, 3741, 3747, 3728, 3737, 3751, 3752, 3759, 3754, - 6721, 3761, 3760, 3768, 3763, 3764, 3766, 3769, 3770, 3772, - 3776, 3773, 3774, 3780, 3777, 3790, 3783, 3785, 3786, 3787, - 3798, 3793, 6721, 3809, 3800, 3801, 3810, 3806, 3811, 3821, - 3818, 3799, 3820, 3823, 3824, 3828, 3825, 3830, 3831, 3834, - 3835, 6721, 6721, 3837, 3838, 3839, 6721, 3840, 3843, 3853, - 3842, 3857, 3844, 3846, 3859, 3851, 3854, 3867, 3862, 3869, - 6721, 3870, 3877, 3872, 3874, 3879, 3876, 6721, 3882, 3889, - 3887, 3890, 3884, 3891, 3894, 3896, 3897, 3898, 3899, 3902, - 3910, 3912, 3907, 3905, 3914, 6721, 3909, 3915, 3917, 3924, + 3735, 3732, 3736, 3737, 3741, 3742, 3745, 3747, 3740, 3753, + 3758, 3749, 3761, 3763, 3764, 3771, 3766, 6741, 3773, 3772, + 3780, 3775, 3776, 3778, 3781, 3783, 3785, 3787, 3786, 3789, + 3791, 3793, 3803, 3796, 3799, 3795, 3804, 3811, 3806, 6741, + 3818, 3814, 3816, 3820, 3821, 3823, 3833, 3825, 3829, 3830, + 3836, 3837, 3839, 3841, 3842, 3843, 3846, 3847, 6741, 6741, + 3853, 3848, 3850, 6741, 3856, 3854, 3866, 3855, 3858, 3862, + 3869, 3870, 3872, 3868, 3878, 3874, 3876, 6741, 3880, 3888, + 3886, 3889, 3893, 3895, 6741, 3890, 3904, 3902, 3903, 3905, + 3891, 3899, 3907, 3910, 3912, 3915, 3916, 3926, 3927, 3922, - 3919, 3921, 6721, 3926, 3928, 3930, 3933, 3935, 3941, 3942, - 3943, 3948, 3949, 3950, 3952, 3951, 3953, 3955, 3963, 3958, - 3962, 3960, 3961, 3967, 3968, 3978, 6721, 3972, 3979, 3980, - 3984, 6721, 3986, 3993, 3994, 6721, 3997, 3989, 3996, 3998, - 4005, 6721, 4002, 4003, 4004, 4006, 4017, 4008, 4018, 4020, - 4009, 4013, 4021, 4022, 6721, 4023, 4024, 4027, 6721, 4036, - 4037, 4041, 4045, 4029, 4048, 4046, 4050, 4047, 4051, 6721, - 4054, 6721, 4058, 4056, 4062, 6721, 4057, 4064, 4065, 4067, - 4071, 4072, 4073, 4079, 4075, 4081, 4083, 4084, 4085, 4086, - 4088, 4095, 4087, 4091, 4094, 4096, 6721, 4097, 4099, 4106, + 3923, 3924, 6741, 3925, 3929, 3931, 3933, 3934, 3935, 6741, + 3937, 3939, 3946, 3948, 3940, 3958, 3955, 3952, 3961, 3962, + 3964, 3965, 3966, 3967, 3969, 3976, 3972, 3973, 3974, 3980, + 3982, 3985, 3991, 6741, 3992, 3994, 3977, 3999, 6741, 4003, + 4012, 4013, 6741, 4014, 3996, 4004, 4015, 4023, 6741, 4016, + 4020, 4018, 4025, 3975, 4035, 4019, 4037, 4033, 4021, 4034, + 4038, 4036, 6741, 4039, 4042, 4044, 6741, 4047, 4045, 4053, + 4056, 4057, 4064, 4059, 4062, 4060, 4063, 6741, 4068, 6741, + 4071, 4069, 4075, 6741, 4070, 4078, 4079, 4086, 4080, 4083, + 4087, 4091, 4096, 4093, 4097, 4098, 4099, 4100, 4102, 4109, - 4103, 4107, 4111, 4113, 4114, 4116, 4118, 6721, 6721, 4127, - 6721, 4119, 4124, 4128, 6721, 4130, 4129, 4138, 4133, 4136, - 4139, 4147, 4134, 6721, 4149, 4151, 6721, 4153, 4154, 4161, - 4156, 4157, 4158, 4164, 4159, 4162, 4169, 4170, 4171, 4172, - 4166, 4173, 4174, 6721, 4167, 4175, 4177, 4191, 4185, 4194, - 4196, 4195, 4197, 6721, 4201, 4202, 4205, 4207, 4208, 6721, - 4209, 6721, 4210, 4211, 4213, 4219, 4216, 4230, 6721, 4227, - 4222, 4232, 4226, 4233, 4237, 4240, 4241, 4242, 4234, 4249, - 4248, 4244, 4247, 4256, 4258, 6721, 4251, 4261, 4263, 4264, - 4267, 4268, 4277, 4269, 4276, 4272, 4273, 4280, 4283, 4284, + 4101, 4105, 4108, 4110, 6741, 4111, 4115, 4120, 4117, 4121, + 4125, 4127, 4128, 4130, 4131, 6741, 6741, 4141, 6741, 4142, + 4132, 4136, 6741, 4138, 4143, 4156, 4146, 4154, 4158, 4162, + 4151, 6741, 4165, 4166, 6741, 4147, 4168, 4175, 4171, 4172, + 4173, 4176, 4179, 4180, 4183, 4184, 4182, 4186, 4181, 4185, + 4199, 6741, 4189, 4187, 4190, 4192, 4203, 4204, 4208, 4212, + 4206, 6741, 4214, 4213, 4216, 4220, 4222, 6741, 4223, 6741, + 4227, 4228, 4230, 4231, 4235, 4244, 6741, 4239, 4236, 4247, + 4240, 4243, 4249, 4252, 4253, 4255, 4256, 4265, 4262, 4261, + 4260, 4269, 4270, 6741, 4264, 4271, 4280, 4281, 4275, 4277, - 4286, 4291, 4292, 4293, 6721, 4294, 4296, 4299, 4308, 4301, - 4305, 4304, 6721, 4309, 4310, 4312, 6721, 4318, 4319, 4323, - 4325, 4322, 4326, 4327, 4328, 4333, 4330, 4329, 6721, 4336, - 4337, 4335, 4341, 4351, 4350, 6721, 6721, 4352, 6721, 4354, - 4338, 4342, 4362, 4363, 4364, 4366, 4367, 4369, 4370, 4374, - 4372, 4379, 6721, 4375, 4387, 4382, 4391, 4399, 4401, 4383, - 4397, 4396, 6721, 6721, 4403, 4406, 4400, 4411, 4412, 4408, - 4415, 4423, 4414, 4424, 4427, 4429, 4428, 6721, 4431, 4398, - 4436, 4430, 6721, 4437, 4438, 4441, 4439, 4442, 4445, 4444, - 4446, 4448, 4449, 4452, 4455, 4457, 4456, 4458, 4465, 4467, + 4292, 4284, 4291, 4287, 4288, 4295, 4298, 4299, 4301, 4303, + 4306, 4307, 6741, 4308, 4313, 4309, 4322, 4314, 4318, 4319, + 6741, 4323, 4324, 4328, 6741, 4332, 4334, 4337, 4339, 4340, + 4341, 4336, 4342, 4343, 4347, 4344, 6741, 4348, 4351, 4350, + 4356, 4364, 4365, 6741, 6741, 4366, 6741, 4371, 4353, 4368, + 4355, 4375, 4378, 4380, 4381, 4389, 4384, 4382, 4391, 4392, + 4386, 6741, 4393, 4404, 4394, 4409, 4411, 4413, 4414, 4410, + 4406, 6741, 6741, 4420, 4421, 4415, 4428, 4429, 4423, 4425, + 4437, 4433, 4439, 4442, 4444, 4451, 6741, 4446, 4432, 4453, + 4434, 6741, 4448, 4455, 4456, 4459, 4458, 4462, 4461, 4464, - 4468, 4469, 4473, 4470, 4476, 6721, 4477, 4478, 4480, 4481, - 4482, 4489, 4490, 4491, 4492, 6721, 4494, 6721, 4501, 4493, - 4496, 4498, 4516, 4505, 4517, 4512, 4518, 4521, 4522, 4527, - 4528, 4536, 4524, 4529, 4537, 4531, 4545, 4547, 4548, 6721, - 4549, 4541, 4550, 4551, 4556, 4558, 4533, 4560, 4562, 4565, - 4566, 4567, 4569, 4574, 4571, 4575, 4576, 4577, 4578, 6721, - 4582, 4589, 4579, 4595, 4583, 4586, 4596, 4602, 4605, 4590, - 4600, 4606, 6721, 4607, 4610, 4612, 6721, 4613, 4614, 4616, - 4617, 4620, 4623, 4625, 4624, 4626, 6721, 4628, 4632, 4636, - 4634, 4635, 4638, 4640, 4644, 4646, 4647, 4651, 6721, 4663, + 4465, 4466, 4468, 4471, 4472, 4476, 4469, 4478, 4482, 4483, + 4485, 4486, 4489, 4492, 6741, 4493, 4497, 4498, 4500, 4503, + 4505, 4504, 4506, 4508, 6741, 4511, 6741, 4509, 4514, 4513, + 4510, 4521, 4530, 4531, 4532, 4533, 4536, 4537, 4540, 4541, + 4551, 4542, 4546, 4552, 4554, 4556, 4561, 4562, 6741, 4564, + 4548, 4558, 4565, 4571, 4573, 4574, 4576, 4579, 4581, 4583, + 4582, 4585, 4589, 4586, 4590, 4591, 4592, 4594, 6741, 4596, + 4603, 4595, 4605, 4607, 4609, 4616, 4610, 4618, 4612, 4620, + 4621, 6741, 4622, 4624, 4628, 6741, 4629, 4630, 4632, 4634, + 4640, 4633, 4636, 4642, 4644, 6741, 4646, 4648, 4651, 4650, - 4650, 4659, 4660, 4658, 4661, 4667, 4668, 4670, 6721, 4672, - 4675, 4676, 4684, 4685, 4681, 4682, 4692, 4689, 4690, 4687, - 4693, 4698, 4699, 4700, 4704, 4705, 4703, 4716, 4721, 4707, - 6721, 4718, 6721, 4719, 4722, 4726, 4724, 4727, 4729, 4732, - 4731, 6721, 4734, 4739, 4741, 4742, 4735, 6721, 4746, 4743, - 4745, 4749, 6721, 4762, 4747, 4748, 4754, 4764, 4769, 6721, - 4772, 4773, 4774, 4781, 4783, 4778, 4785, 4780, 4788, 4786, - 4782, 4790, 4791, 4799, 4797, 4795, 6721, 4801, 4803, 4808, - 4810, 4804, 4812, 4802, 4814, 4817, 4819, 6721, 4820, 4823, - 4824, 4826, 4827, 4828, 4829, 4836, 4833, 4835, 4837, 4838, + 4654, 4655, 4656, 4660, 4662, 4663, 4666, 6741, 4676, 4667, + 4675, 4678, 4674, 4677, 4681, 4687, 4685, 6741, 4688, 4689, + 4691, 4701, 4703, 4696, 4698, 4710, 4700, 4707, 4708, 4709, + 4715, 4714, 4716, 4719, 4720, 4721, 4730, 4732, 4727, 6741, + 4734, 6741, 4736, 4737, 4738, 4747, 4742, 4740, 4744, 4748, + 4750, 6741, 4752, 4755, 4758, 4759, 4760, 6741, 4761, 4762, + 4764, 4763, 6741, 4777, 4776, 4765, 4782, 4767, 4783, 6741, + 4787, 4788, 4790, 4798, 4799, 4796, 4801, 4789, 4806, 4797, + 4802, 4804, 4810, 4814, 4812, 4813, 6741, 4815, 4817, 4822, + 4824, 4825, 4827, 4828, 4831, 4833, 4830, 6741, 4837, 4838, - 4841, 4842, 6721, 4847, 4845, 4849, 4858, 4860, 4862, 6721, - 4865, 6721, 4855, 4850, 4867, 4866, 4871, 6721, 6721, 4873, - 4881, 4876, 4879, 4880, 6721, 6721, 4883, 6721, 4884, 6721, - 4885, 4887, 6721, 6721, 4886, 4890, 4893, 4895, 4896, 4898, - 6721, 4905, 6721, 4912, 4907, 4894, 4909, 4913, 6721, 4911, - 4917, 4915, 4921, 4923, 6721, 4919, 4932, 4924, 4925, 6721, - 4935, 4936, 4929, 4937, 6721, 4943, 4946, 4947, 4938, 4941, - 4949, 4951, 4957, 4958, 4961, 4959, 4960, 4962, 4963, 4966, - 4970, 4975, 4977, 4967, 4978, 4981, 4983, 4987, 4985, 4989, - 4990, 4991, 4992, 4994, 4999, 4993, 5001, 5004, 4756, 4995, + 4839, 4840, 4841, 4844, 4846, 4853, 4849, 4850, 4852, 4856, + 4857, 4860, 6741, 4861, 4863, 4865, 4872, 4869, 4874, 6741, + 4878, 6741, 4880, 4882, 4885, 4867, 4889, 6741, 6741, 4891, + 4892, 4884, 4898, 4899, 6741, 6741, 4901, 6741, 4902, 6741, + 4903, 4905, 6741, 6741, 4904, 4906, 4907, 4910, 4911, 4913, + 6741, 4919, 6741, 4929, 4924, 4914, 4922, 4926, 6741, 4927, + 4933, 4935, 4937, 4939, 6741, 4934, 4948, 4940, 4941, 6741, + 4951, 4952, 4945, 4953, 6741, 4959, 4962, 4963, 4954, 4957, + 4965, 4967, 4973, 4974, 4977, 4975, 4976, 4978, 4979, 4982, + 4986, 4991, 4993, 4983, 4994, 4997, 4999, 5003, 5001, 5005, - 5008, 5005, 5006, 5014, 5016, 5018, 5021, 5022, 5023, 5024, - 5027, 4495, 5025, 5028, 5030, 5029, 5033, 5037, 5042, 5043, - 6721, 5035, 5045, 5047, 5048, 5052, 5054, 5055, 5062, 5064, - 5068, 6721, 5071, 6721, 5073, 5065, 5075, 5076, 5077, 6721, - 5078, 5079, 5080, 5081, 5082, 5084, 5085, 5088, 5089, 5093, - 5099, 6721, 5106, 5096, 5090, 5094, 5114, 6721, 5109, 5116, - 5117, 5119, 5120, 5121, 5122, 5123, 5126, 5124, 5129, 5131, - 5125, 5132, 5133, 5147, 5149, 5144, 5134, 5151, 5153, 5154, - 5155, 5156, 5157, 5158, 5159, 5165, 5167, 5171, 6721, 5162, - 6721, 5173, 5174, 5175, 5178, 5179, 5180, 5183, 5186, 6721, + 5006, 5007, 5008, 5010, 5015, 5009, 5017, 5020, 5011, 5021, + 5023, 5024, 5031, 5032, 5034, 5035, 5039, 5040, 5042, 5043, + 5044, 5045, 5046, 5047, 5050, 5057, 5048, 5052, 5056, 5062, + 5063, 6741, 5066, 5067, 5068, 5071, 5073, 5075, 5076, 5083, + 5086, 5092, 6741, 5094, 6741, 5096, 5088, 5079, 5098, 5099, + 6741, 5100, 5101, 5102, 5103, 5104, 5105, 5107, 5108, 5111, + 5112, 5115, 6741, 5122, 5118, 5126, 5127, 5134, 6741, 5131, + 5138, 5135, 5139, 5142, 5141, 5143, 5144, 5147, 5145, 5151, + 5155, 5146, 5152, 5159, 5168, 5172, 5175, 5158, 5173, 5160, + 5177, 5178, 5174, 5180, 5181, 5182, 5190, 5185, 5193, 6741, - 6721, 5188, 5189, 5191, 5194, 5195, 5197, 5199, 5200, 5202, - 6721, 5201, 5207, 5218, 5212, 6721, 5204, 5214, 5220, 5222, - 6721, 5223, 5224, 5226, 5228, 5229, 5232, 5236, 5237, 5238, - 5239, 5242, 5244, 6721, 6721, 6721, 6721, 5249, 5245, 5253, - 5247, 5255, 5256, 5257, 5261, 5259, 5263, 5264, 6721, 5272, - 6721, 6721, 5269, 5273, 5275, 5276, 5277, 5280, 5282, 5284, - 6721, 5286, 5288, 5290, 5287, 5297, 5304, 5300, 5294, 5307, - 5308, 5309, 5298, 5310, 5317, 5318, 5319, 5312, 5321, 5325, - 5330, 6721, 6721, 5322, 5332, 5333, 5340, 5337, 5338, 5341, - 5350, 5345, 5346, 5347, 5348, 5352, 5353, 5364, 5365, 5357, + 5195, 6741, 5196, 5197, 5198, 5199, 5201, 5202, 5203, 5208, + 6741, 6741, 5204, 5209, 5218, 5211, 5213, 5221, 5222, 5215, + 5225, 6741, 5228, 5232, 5235, 5237, 6741, 5238, 5239, 5240, + 5242, 6741, 5244, 5245, 5247, 5249, 5246, 5258, 5261, 5255, + 5252, 5262, 5263, 5270, 6741, 6741, 6741, 6741, 5271, 5267, + 5276, 5273, 5277, 5278, 5279, 5282, 5281, 5284, 5285, 6741, + 5293, 6741, 6741, 5294, 5296, 5295, 5297, 5298, 5303, 5305, + 5307, 6741, 5308, 6741, 5311, 5312, 5310, 5319, 5321, 5324, + 5313, 5327, 5328, 5331, 5330, 5333, 5340, 5337, 5338, 5341, + 5344, 5346, 5353, 6741, 6741, 5347, 5355, 5358, 5363, 5359, - 5354, 6721, 5361, 5367, 5370, 6721, 5369, 6721, 5371, 5375, - 5377, 5378, 5379, 5383, 5384, 5387, 6721, 6721, 5382, 5399, - 5397, 6721, 6721, 5386, 5389, 5394, 5402, 5404, 5398, 5406, - 5407, 5419, 5408, 6721, 5410, 6721, 5412, 5416, 5424, 5414, - 5434, 5435, 5426, 5436, 5438, 5433, 5440, 6721, 5442, 5443, - 6721, 5452, 5447, 5449, 5448, 5454, 6721, 5457, 5455, 5460, - 5464, 6721, 5466, 5467, 5470, 6721, 5477, 6721, 5461, 5474, - 5468, 5484, 5482, 6721, 5472, 5485, 6721, 5488, 5490, 5493, - 5491, 5495, 6721, 5498, 5499, 6721, 5500, 5502, 5505, 5510, - 5503, 5512, 5513, 5507, 5514, 5521, 5523, 5527, 6721, 6721, + 5365, 5366, 5373, 5368, 5369, 5375, 5371, 5377, 5376, 5387, + 5388, 5378, 5379, 6741, 5343, 5389, 5390, 6741, 5392, 6741, + 5395, 5396, 5398, 5399, 5402, 5405, 5406, 5408, 6741, 6741, + 5403, 5415, 5413, 6741, 6741, 5410, 5418, 5420, 5423, 5424, + 5425, 5426, 5427, 5433, 5428, 6741, 5430, 6741, 5434, 5436, + 5449, 5437, 5452, 5456, 5441, 5457, 5461, 5455, 5453, 6741, + 5464, 5465, 6741, 5472, 5467, 5471, 5468, 5469, 6741, 5476, + 5474, 5480, 5486, 6741, 5488, 5489, 5490, 6741, 5497, 6741, + 5481, 5494, 5491, 5506, 5498, 6741, 5502, 5507, 6741, 5512, + 5514, 5515, 5504, 5516, 6741, 5520, 5509, 6741, 5521, 5524, - 5530, 5529, 135, 5538, 5516, 5533, 5535, 5536, 5546, 5519, - 5541, 5548, 6721, 6721, 5549, 6721, 5543, 5556, 6721, 5550, - 5557, 5561, 5552, 5558, 5564, 5565, 5566, 5568, 5572, 5573, - 5574, 5571, 5579, 5595, 5597, 5581, 5578, 5592, 5598, 5601, - 5603, 5605, 5606, 5607, 5583, 5608, 5610, 5612, 5614, 5615, - 5616, 6721, 5619, 5625, 5628, 5620, 6721, 5633, 5630, 5640, - 5641, 6721, 5643, 5644, 5645, 5647, 5648, 6721, 5634, 5650, - 5622, 5651, 5655, 5658, 5661, 5665, 5662, 5663, 5666, 6721, - 6721, 6721, 5668, 5678, 6721, 5680, 5667, 5671, 5682, 6721, - 5684, 5685, 5686, 6721, 6721, 5687, 5688, 5690, 6721, 5689, + 5525, 5531, 5528, 5533, 5534, 5535, 5536, 5544, 5540, 5542, + 6741, 6741, 5551, 5549, 135, 5558, 5537, 5548, 5555, 5556, + 5565, 5561, 5563, 5570, 6741, 6741, 5566, 6741, 5564, 5573, + 6741, 5574, 5577, 5578, 5583, 5582, 5584, 5585, 5581, 5589, + 5590, 5603, 5593, 5591, 5608, 5598, 5618, 5594, 5620, 5621, + 5623, 5625, 5627, 5615, 5629, 5630, 5609, 5632, 5633, 5636, + 5638, 5639, 5640, 6741, 5643, 5645, 5646, 5648, 6741, 5654, + 5651, 5656, 5657, 6741, 5664, 5661, 5665, 5667, 5668, 6741, + 5669, 5672, 5675, 5673, 5678, 5680, 5596, 5689, 5681, 5684, + 5686, 6741, 6741, 6741, 5695, 5699, 6741, 5702, 5692, 5685, - 5697, 6721, 5692, 6721, 5695, 6721, 5701, 5702, 5710, 5705, - 6721, 5703, 5713, 5715, 5717, 6721, 5720, 5723, 5725, 5727, - 5728, 5730, 5732, 6721, 5739, 5735, 5738, 5742, 5734, 5744, - 5745, 5746, 5747, 5759, 5750, 5755, 6721, 5757, 5758, 5762, - 5768, 5760, 5770, 5771, 6721, 5764, 6721, 5773, 6721, 5774, - 5776, 5777, 5782, 5778, 5780, 5788, 5790, 5792, 5797, 5783, - 5798, 5803, 5800, 6721, 6721, 5805, 5808, 6721, 5809, 6721, - 5811, 6721, 5812, 5813, 5815, 5816, 5817, 6721, 5826, 5814, - 5818, 5837, 5821, 5823, 6721, 5835, 5833, 5838, 5840, 6721, - 6721, 5841, 5849, 5845, 6721, 5846, 5852, 5854, 5848, 5855, + 5696, 6741, 5704, 5707, 5705, 6741, 6741, 5708, 5713, 5711, + 6741, 5709, 5721, 6741, 5712, 6741, 5719, 6741, 5722, 5723, + 5725, 5730, 6741, 5731, 5732, 5734, 5737, 6741, 5743, 5747, + 5750, 5735, 5751, 5753, 5752, 6741, 5760, 5756, 5758, 5765, + 5755, 5762, 5759, 5770, 5766, 5782, 5767, 5769, 6741, 5777, + 5778, 5785, 5786, 5779, 5788, 5789, 6741, 5791, 6741, 5794, + 6741, 5795, 5796, 5797, 5805, 5799, 5800, 5802, 5807, 5816, + 5813, 5806, 5818, 5821, 5823, 6741, 6741, 5826, 5828, 6741, + 5829, 6741, 5831, 6741, 5832, 5833, 5834, 5835, 5836, 6741, + 5838, 5840, 5843, 5853, 5845, 5846, 6741, 5854, 5856, 5857, - 5859, 5856, 5860, 5862, 5870, 5865, 5871, 5866, 5873, 5874, - 5876, 5877, 5887, 6721, 6721, 6721, 5881, 5885, 5896, 5892, - 5894, 5901, 5898, 6721, 5899, 5903, 5906, 5900, 5913, 5908, - 5910, 6721, 5912, 5914, 5915, 5917, 5921, 5918, 5922, 5927, - 6721, 5929, 5934, 5939, 5931, 5941, 5943, 5948, 5950, 5951, - 5935, 5958, 5954, 6721, 5956, 6721, 6721, 5953, 6721, 5957, - 5960, 5962, 5963, 5965, 6721, 5968, 5969, 5970, 5973, 5971, - 5974, 5976, 5978, 6721, 5986, 5984, 5988, 5992, 6721, 6721, - 5990, 5994, 6721, 5999, 5996, 6000, 6008, 6003, 6005, 6010, - 6012, 6721, 6016, 6018, 6006, 6019, 6022, 6021, 6024, 6721, + 5859, 6741, 6741, 5861, 5869, 5862, 6741, 5864, 5872, 5874, + 5875, 5877, 5879, 5880, 5883, 5882, 5893, 5866, 5884, 5888, + 5895, 5889, 5900, 5906, 5910, 6741, 6741, 6741, 5901, 5899, + 5918, 5915, 5917, 5922, 5905, 6741, 5921, 5925, 5927, 5928, + 5935, 5931, 5934, 6741, 5930, 5936, 5937, 5938, 5940, 5941, + 5943, 5944, 6741, 5946, 5956, 5952, 5950, 5958, 5966, 5968, + 5970, 5961, 5971, 5978, 5975, 6741, 5977, 6741, 6741, 5973, + 6741, 5979, 5981, 5983, 5982, 5984, 6741, 5987, 5988, 5989, + 5991, 5990, 5998, 5994, 5996, 6741, 6006, 5999, 6009, 6011, + 6741, 6741, 6012, 6018, 6741, 6021, 6022, 6015, 6030, 6013, - 6028, 6025, 6029, 6031, 6721, 6032, 6037, 6038, 6040, 6041, - 6721, 6042, 6034, 6058, 6043, 6721, 6045, 6057, 6059, 6721, - 6721, 6063, 6067, 6064, 6721, 6721, 6721, 6070, 6071, 6073, - 6075, 6721, 6078, 6082, 6086, 6088, 6093, 6081, 6721, 6089, - 6095, 6097, 6098, 6099, 6721, 6721, 6100, 6101, 6102, 6106, - 6103, 6721, 6721, 6108, 6110, 6111, 6109, 6112, 6721, 6114, - 6119, 6126, 6122, 6128, 6135, 6137, 6130, 6138, 6139, 6147, - 6150, 6140, 6142, 6149, 6153, 6154, 6152, 6156, 6166, 6161, - 6163, 6169, 6164, 6172, 6721, 6721, 6174, 6721, 6176, 6178, - 6721, 6721, 6181, 6183, 6185, 6189, 6721, 6191, 6193, 6195, + 6023, 6035, 6032, 6741, 6036, 6038, 6026, 6039, 6042, 6041, + 6044, 6741, 6048, 6045, 6049, 6051, 6741, 6052, 6057, 6058, + 6060, 6061, 6741, 6062, 6054, 6078, 6063, 6741, 6065, 6077, + 6079, 6741, 6741, 6083, 6087, 6084, 6741, 6741, 6741, 6090, + 6091, 6093, 6095, 6741, 6098, 6102, 6106, 6108, 6113, 6101, + 6741, 6109, 6115, 6117, 6118, 6119, 6741, 6741, 6120, 6121, + 6122, 6126, 6123, 6741, 6741, 6128, 6130, 6131, 6129, 6132, + 6741, 6134, 6139, 6146, 6142, 6148, 6155, 6157, 6150, 6158, + 6159, 6167, 6170, 6160, 6162, 6169, 6173, 6174, 6172, 6176, + 6186, 6181, 6183, 6189, 6184, 6192, 6741, 6741, 6194, 6741, - 6197, 6186, 6721, 6198, 6200, 6201, 6202, 6203, 6721, 6205, - 6206, 6209, 6211, 6215, 6217, 6218, 6221, 6721, 6216, 6233, - 6721, 6721, 6222, 6224, 6213, 6234, 6230, 6721, 6238, 6242, - 6237, 6244, 6243, 6245, 6250, 6721, 6246, 6247, 6721, 6721, - 6253, 6254, 6721, 6721, 6255, 6721, 6721, 6721, 6721, 6721, - 6721, 6721, 6721, 6259, 6258, 6721, 6260, 6268, 6271, 6721, - 6275, 6721, 6265, 6276, 6278, 6272, 6721, 6277, 6721, 6279, - 6283, 6284, 6293, 6286, 6296, 6287, 6280, 6290, 6298, 6303, - 6304, 6306, 6305, 6307, 6309, 6311, 6321, 6313, 6318, 6721, - 6721, 6721, 6310, 6322, 6326, 6327, 6332, 6334, 6338, 6340, + 6196, 6198, 6741, 6741, 6201, 6203, 6205, 6209, 6741, 6211, + 6213, 6215, 6217, 6206, 6741, 6218, 6220, 6221, 6222, 6223, + 6741, 6225, 6226, 6229, 6231, 6235, 6237, 6238, 6241, 6741, + 6236, 6253, 6741, 6741, 6242, 6244, 6233, 6254, 6250, 6741, + 6258, 6262, 6257, 6264, 6263, 6265, 6270, 6741, 6266, 6267, + 6741, 6741, 6273, 6274, 6741, 6741, 6275, 6741, 6741, 6741, + 6741, 6741, 6741, 6741, 6741, 6279, 6278, 6741, 6280, 6288, + 6291, 6741, 6295, 6741, 6285, 6296, 6298, 6292, 6741, 6297, + 6741, 6299, 6303, 6304, 6313, 6306, 6316, 6307, 6300, 6310, + 6318, 6323, 6324, 6326, 6325, 6327, 6329, 6331, 6341, 6333, - 6329, 6341, 6343, 6344, 6345, 6347, 6351, 6358, 6353, 6356, - 6354, 6363, 6355, 6365, 6721, 6370, 6371, 6357, 6374, 6721, - 6377, 6721, 6360, 6721, 6721, 6380, 6381, 6383, 6384, 6393, - 6394, 6385, 6389, 6390, 6395, 6397, 6721, 6405, 6721, 6721, - 6398, 6401, 6721, 6406, 6407, 6721, 6408, 6410, 6412, 6413, - 6414, 6416, 6417, 6418, 6425, 6721, 6721, 6429, 6430, 6432, - 6434, 6436, 6443, 6438, 6440, 6442, 6450, 6444, 6452, 6721, - 6454, 6456, 6458, 6721, 6460, 6459, 6462, 6465, 6466, 6473, - 6468, 6470, 6721, 6471, 6721, 6475, 6477, 6476, 6479, 6480, - 6482, 6490, 6488, 6492, 6721, 6494, 6496, 6500, 6501, 6503, + 6338, 6741, 6741, 6741, 6330, 6342, 6346, 6347, 6352, 6354, + 6358, 6360, 6349, 6361, 6363, 6364, 6365, 6367, 6371, 6378, + 6373, 6376, 6374, 6383, 6375, 6385, 6741, 6390, 6391, 6377, + 6394, 6741, 6397, 6741, 6380, 6741, 6741, 6400, 6401, 6403, + 6404, 6413, 6414, 6405, 6409, 6410, 6415, 6417, 6741, 6425, + 6741, 6741, 6418, 6421, 6741, 6426, 6427, 6741, 6428, 6430, + 6432, 6433, 6434, 6436, 6437, 6438, 6445, 6741, 6741, 6449, + 6450, 6452, 6454, 6456, 6463, 6458, 6460, 6462, 6470, 6464, + 6472, 6741, 6474, 6476, 6478, 6741, 6480, 6479, 6482, 6485, + 6486, 6493, 6488, 6490, 6741, 6491, 6741, 6495, 6497, 6496, - 6506, 6507, 6508, 6510, 6512, 6513, 6522, 6516, 6518, 6524, - 6526, 6528, 6721, 6530, 6532, 6721, 6533, 6534, 6535, 6536, - 6540, 6721, 6545, 6537, 6542, 6548, 6553, 6550, 6721, 6559, - 6563, 6560, 6721, 6564, 6721, 6721, 6565, 6566, 6568, 6572, - 6574, 6721, 6721, 6721, 6601, 6608, 6615, 6622, 6629, 6636, - 6643, 88, 6650, 6657, 6664, 6671, 6678, 6685, 6692, 6699, - 6706, 6713 + 6499, 6500, 6502, 6510, 6508, 6512, 6741, 6514, 6516, 6520, + 6521, 6523, 6526, 6527, 6528, 6530, 6532, 6533, 6542, 6536, + 6538, 6544, 6546, 6548, 6741, 6550, 6552, 6741, 6553, 6554, + 6555, 6556, 6560, 6741, 6565, 6557, 6562, 6568, 6573, 6570, + 6741, 6579, 6583, 6580, 6741, 6584, 6741, 6741, 6585, 6586, + 6588, 6592, 6594, 6741, 6741, 6741, 6621, 6628, 6635, 6642, + 6649, 6656, 6663, 88, 6670, 6677, 6684, 6691, 6698, 6705, + 6712, 6719, 6726, 6733 } ; -static const flex_int16_t yy_def[3463] = +static const flex_int16_t yy_def[3475] = { 0, - 3444, 1, 3445, 3445, 3446, 3446, 3447, 3447, 3448, 3448, - 3449, 3449, 3450, 3450, 3451, 3451, 3444, 3452, 3444, 3444, - 3444, 3444, 3453, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3454, 3444, 3444, 3444, - 3454, 3455, 3444, 3444, 3444, 3455, 3456, 3444, 3444, 3444, - 3444, 3456, 3457, 3444, 3444, 3444, 3457, 3458, 3444, 3459, - 3444, 3458, 3458, 3460, 3444, 3444, 3444, 3444, 3460, 3461, - 3444, 3444, 3444, 3461, 3452, 3452, 3444, 3462, 3453, 3462, - 3453, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3456, 1, 3457, 3457, 3458, 3458, 3459, 3459, 3460, 3460, + 3461, 3461, 3462, 3462, 3463, 3463, 3456, 3464, 3456, 3456, + 3456, 3456, 3465, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3466, 3456, 3456, 3456, + 3466, 3467, 3456, 3456, 3456, 3467, 3468, 3456, 3456, 3456, + 3456, 3468, 3469, 3456, 3456, 3456, 3469, 3470, 3456, 3471, + 3456, 3470, 3470, 3472, 3456, 3456, 3456, 3456, 3472, 3473, + 3456, 3456, 3456, 3473, 3464, 3464, 3456, 3474, 3465, 3474, + 3465, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3454, - 3454, 3455, 3455, 3456, 3456, 3444, 3457, 3457, 3458, 3458, - 3459, 3459, 3458, 3460, 3460, 3444, 3461, 3461, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3466, + 3466, 3467, 3467, 3468, 3468, 3456, 3469, 3469, 3470, 3470, + 3471, 3471, 3470, 3472, 3472, 3456, 3473, 3473, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3458, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3470, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3458, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3470, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3444, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3456, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3444, 3452, 3452, 3458, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3456, 3464, 3464, 3470, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3458, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, - 3444, 3444, 3452, 3444, 3444, 3452, 3452, 3444, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3470, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3456, 3464, 3456, 3456, 3464, 3456, 3456, 3464, 3464, 3456, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3458, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3444, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3470, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3456, 3464, 3464, 3456, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3444, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, - 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, - 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3456, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3456, 3456, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3456, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, - 3452, 3452, 3452, 3452, 3452, 3458, 3458, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3470, + 3470, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, - 3452, 3458, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3456, 3464, 3464, 3464, 3470, 3464, 3464, 3464, + 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3444, 3452, 3444, 3452, 3452, 3452, 3452, 3452, - 3444, 3452, 3444, 3452, 3452, 3452, 3452, 3444, 3452, 3452, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3456, + 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3456, 3464, 3464, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, - 3452, 3452, 3452, 3452, 3458, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3444, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, + 3470, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, + 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3444, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, - 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3456, 3464, 3456, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3456, 3456, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3452, 3452, 3452, 3452, 3444, 3452, 3444, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3444, 3452, 3452, 3452, 3458, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, + 3456, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, + 3464, 3470, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3444, 3444, 3452, 3452, 3452, 3444, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3456, + 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, + 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, - 3452, 3444, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, - 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3458, 3452, 3444, 3452, 3452, 3452, 3444, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, - 3452, 3444, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, + 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3456, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3456, 3464, + 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3456, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3470, 3464, 3456, 3464, 3464, 3464, 3456, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3456, + 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3444, 3452, - 3444, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3444, 3452, 3452, 3444, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3444, - 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3456, 3456, 3464, 3456, 3464, + 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3456, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3456, + 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, - 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3444, 3452, 3452, 3452, 3444, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, - 3452, 3452, 3452, 3452, 3452, 3444, 3444, 3452, 3444, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3444, 3452, 3452, 3458, 3452, 3452, 3452, 3452, - 3452, 3452, 3444, 3444, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, - 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3456, 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, + 3464, 3464, 3464, 3456, 3456, 3464, 3456, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3456, 3464, 3464, 3470, 3464, 3464, 3464, 3464, 3464, + 3464, 3456, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, + 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3444, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3444, 3452, 3452, 3452, 3444, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3456, 3464, 3456, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3456, 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3444, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3458, - 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, - 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3444, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, + 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3470, + 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, + 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3456, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, - 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3444, - 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3444, 3444, 3452, - 3452, 3452, 3452, 3452, 3444, 3444, 3452, 3444, 3452, 3444, - 3452, 3452, 3444, 3444, 3452, 3452, 3452, 3452, 3452, 3452, - 3444, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3444, 3452, - 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3444, - 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3456, + 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3456, 3456, 3464, + 3464, 3464, 3464, 3464, 3456, 3456, 3464, 3456, 3464, 3456, + 3464, 3464, 3456, 3456, 3464, 3464, 3464, 3464, 3464, 3464, + 3456, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3456, 3464, + 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3456, + 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3458, 3452, 3452, 3452, 3452, - 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3444, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3444, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, - 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3470, 3464, 3464, 3464, + 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3456, 3464, 3456, 3464, 3464, 3464, 3464, 3464, + 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3456, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, - 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3444, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, - 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3444, 3444, 3444, 3444, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, - 3444, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3458, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3444, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3456, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3456, 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, + 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3456, 3456, 3456, 3456, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, + 3464, 3456, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3456, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3470, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3456, 3456, 3464, 3464, 3464, 3464, 3464, - 3452, 3444, 3452, 3452, 3452, 3444, 3452, 3444, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3444, 3452, 3452, - 3452, 3444, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3444, 3452, 3444, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, - 3444, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, - 3452, 3444, 3452, 3452, 3452, 3444, 3452, 3444, 3452, 3452, - 3452, 3452, 3452, 3444, 3452, 3452, 3444, 3452, 3452, 3452, - 3452, 3452, 3444, 3452, 3452, 3444, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3444, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3456, 3464, 3456, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3456, + 3464, 3464, 3464, 3456, 3456, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3456, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, + 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3456, 3464, + 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3456, 3464, 3456, + 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3456, 3464, + 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3456, 3464, 3464, - 3452, 3452, 3458, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3444, 3444, 3452, 3444, 3452, 3452, 3444, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3444, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, - 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, - 3444, 3444, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3444, - 3452, 3452, 3452, 3444, 3444, 3452, 3452, 3452, 3444, 3452, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3456, 3456, 3464, 3464, 3470, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3456, 3456, 3464, 3456, 3464, 3464, + 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3456, 3464, + 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3456, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3456, 3456, 3456, 3464, 3464, 3456, 3464, 3464, 3464, - 3452, 3444, 3452, 3444, 3452, 3444, 3452, 3452, 3452, 3452, - 3444, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3444, 3452, 3444, 3452, 3444, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3444, 3444, 3452, 3452, 3444, 3452, 3444, - 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, - 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3444, - 3444, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, + 3464, 3456, 3464, 3464, 3464, 3456, 3456, 3464, 3464, 3464, + 3456, 3464, 3464, 3456, 3464, 3456, 3464, 3456, 3464, 3464, + 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3456, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3456, 3464, + 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3456, 3456, 3464, 3464, 3456, + 3464, 3456, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3456, + 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3444, 3444, 3444, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3444, 3452, 3444, 3444, 3452, 3444, 3452, - 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3444, 3444, - 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, + 3464, 3456, 3456, 3464, 3464, 3464, 3456, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3456, 3456, 3456, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3456, 3456, 3464, + 3456, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, + 3456, 3456, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, - 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, - 3444, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3444, - 3444, 3452, 3452, 3452, 3444, 3444, 3444, 3452, 3452, 3452, - 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, - 3452, 3452, 3452, 3452, 3444, 3444, 3452, 3452, 3452, 3452, - 3452, 3444, 3444, 3452, 3452, 3452, 3452, 3452, 3444, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3444, 3444, 3452, 3444, 3452, 3452, - 3444, 3444, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, + 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3456, 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, + 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3456, 3464, 3464, + 3464, 3456, 3456, 3464, 3464, 3464, 3456, 3456, 3456, 3464, + 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, + 3456, 3464, 3464, 3464, 3464, 3464, 3456, 3456, 3464, 3464, + 3464, 3464, 3464, 3456, 3456, 3464, 3464, 3464, 3464, 3464, + 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3456, 3464, 3456, - 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3444, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, - 3444, 3444, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3444, 3444, - 3452, 3452, 3444, 3444, 3452, 3444, 3444, 3444, 3444, 3444, - 3444, 3444, 3444, 3452, 3452, 3444, 3452, 3452, 3452, 3444, - 3452, 3444, 3452, 3452, 3452, 3452, 3444, 3452, 3444, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, - 3444, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, + 3464, 3464, 3456, 3456, 3464, 3464, 3464, 3464, 3456, 3464, + 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, + 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, + 3464, 3464, 3456, 3456, 3464, 3464, 3464, 3464, 3464, 3456, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, + 3456, 3456, 3464, 3464, 3456, 3456, 3464, 3456, 3456, 3456, + 3456, 3456, 3456, 3456, 3456, 3464, 3464, 3456, 3464, 3464, + 3464, 3456, 3464, 3456, 3464, 3464, 3464, 3464, 3456, 3464, + 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3444, - 3452, 3444, 3452, 3444, 3444, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, 3444, 3444, - 3452, 3452, 3444, 3452, 3452, 3444, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3444, 3444, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3444, - 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3444, 3452, 3444, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3452, 3452, 3444, 3452, 3452, 3452, 3452, 3452, + 3464, 3456, 3456, 3456, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, + 3464, 3456, 3464, 3456, 3464, 3456, 3456, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, + 3456, 3456, 3464, 3464, 3456, 3464, 3464, 3456, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3456, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3456, 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3456, 3464, 3456, 3464, 3464, 3464, - 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, 3452, - 3452, 3452, 3444, 3452, 3452, 3444, 3452, 3452, 3452, 3452, - 3452, 3444, 3452, 3452, 3452, 3452, 3452, 3452, 3444, 3452, - 3452, 3452, 3444, 3452, 3444, 3444, 3452, 3452, 3452, 3452, - 3452, 3444, 3444, 0, 3444, 3444, 3444, 3444, 3444, 3444, - 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, - 3444, 3444 + 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3456, 3464, 3464, + 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, + 3456, 3464, 3464, 3464, 3456, 3464, 3456, 3456, 3464, 3464, + 3464, 3464, 3464, 3456, 3456, 0, 3456, 3456, 3456, 3456, + 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, + 3456, 3456, 3456, 3456 } ; -static const flex_int16_t yy_nxt[6762] = +static const flex_int16_t yy_nxt[6782] = { 0, 18, 19, 20, 21, 22, 23, 22, 18, 18, 18, 18, 18, 22, 24, 25, 26, 27, 28, 29, 30, @@ -1618,7 +1621,7 @@ static const flex_int16_t yy_nxt[6762] = 311, 86, 86, 86, 86, 307, 86, 318, 86, 86, 86, 319, 86, 325, 312, 313, 315, 309, 314, 316, 86, 320, 86, 329, 321, 328, 322, 330, 327, 326, - 332, 86, 86, 86, 732, 334, 86, 338, 323, 331, + 332, 86, 86, 86, 734, 334, 86, 338, 323, 331, 324, 86, 335, 86, 86, 340, 86, 342, 86, 339, 341, 86, 333, 86, 86, 86, 344, 336, 86, 86, 86, 343, 86, 86, 346, 86, 348, 86, 345, 86, @@ -1655,656 +1658,658 @@ static const flex_int16_t yy_nxt[6762] = 86, 86, 86, 86, 492, 496, 498, 86, 499, 86, 501, 497, 170, 507, 86, 500, 508, 86, 505, 86, 86, 86, 522, 502, 86, 509, 503, 523, 504, 86, - 510, 86, 511, 544, 86, 86, 525, 86, 512, 568, + 510, 86, 511, 545, 86, 86, 525, 86, 512, 569, 528, 168, 513, 86, 86, 524, 526, 514, 527, 530, - 515, 86, 516, 539, 517, 540, 529, 86, 538, 86, - 541, 86, 86, 86, 86, 86, 547, 518, 86, 542, - 519, 166, 520, 86, 521, 86, 543, 531, 532, 546, - 549, 545, 86, 86, 548, 550, 86, 533, 551, 534, - 535, 536, 553, 557, 537, 86, 552, 86, 86, 86, - 555, 86, 554, 558, 560, 562, 86, 563, 86, 86, - 86, 86, 559, 567, 86, 86, 561, 86, 556, 86, - 570, 565, 571, 572, 566, 86, 86, 86, 564, 86, - 569, 86, 86, 86, 577, 578, 579, 573, 86, 584, + 515, 86, 516, 540, 517, 541, 529, 86, 539, 86, + 542, 86, 86, 86, 86, 86, 548, 518, 86, 543, + 519, 166, 520, 86, 521, 86, 544, 531, 532, 547, + 550, 546, 553, 86, 549, 551, 86, 533, 534, 535, + 536, 537, 554, 552, 538, 86, 86, 86, 86, 86, + 556, 563, 555, 558, 561, 86, 86, 86, 86, 564, + 86, 86, 560, 568, 86, 86, 559, 86, 557, 86, + 562, 86, 566, 86, 86, 567, 565, 86, 571, 578, + 570, 572, 573, 575, 86, 574, 86, 576, 577, 86, - 86, 86, 574, 575, 581, 576, 86, 86, 585, 86, - 582, 86, 86, 580, 86, 598, 586, 86, 601, 86, - 590, 86, 600, 587, 86, 583, 589, 588, 599, 593, - 86, 591, 86, 592, 603, 86, 165, 594, 595, 602, - 86, 596, 597, 86, 86, 86, 86, 86, 606, 605, - 607, 608, 86, 604, 86, 609, 86, 610, 611, 612, - 86, 86, 86, 615, 616, 614, 613, 86, 86, 618, - 86, 617, 86, 86, 86, 622, 86, 620, 621, 86, - 86, 86, 86, 623, 86, 628, 86, 86, 624, 619, - 86, 629, 633, 627, 630, 86, 631, 86, 626, 625, + 582, 579, 580, 86, 86, 585, 86, 583, 86, 86, + 86, 86, 599, 86, 86, 86, 165, 602, 86, 581, + 591, 86, 584, 587, 86, 586, 588, 589, 590, 594, + 600, 592, 86, 593, 86, 86, 605, 595, 596, 601, + 604, 597, 598, 86, 603, 86, 86, 86, 608, 606, + 86, 607, 610, 86, 611, 609, 86, 613, 86, 86, + 86, 86, 616, 86, 614, 617, 86, 618, 86, 612, + 86, 86, 86, 615, 86, 621, 86, 622, 86, 623, + 86, 619, 86, 86, 633, 86, 625, 624, 629, 620, + 86, 86, 86, 86, 628, 630, 626, 631, 627, 86, - 86, 632, 86, 635, 86, 637, 86, 86, 86, 86, - 86, 86, 86, 86, 86, 639, 634, 640, 642, 636, - 86, 86, 644, 650, 86, 86, 649, 638, 163, 86, - 641, 643, 645, 651, 646, 86, 652, 86, 647, 654, - 653, 648, 86, 86, 86, 655, 657, 86, 656, 660, - 86, 86, 86, 663, 662, 86, 86, 86, 658, 86, - 86, 666, 659, 86, 86, 86, 665, 669, 86, 670, - 661, 86, 86, 672, 86, 86, 86, 664, 86, 667, - 671, 668, 687, 86, 86, 86, 86, 673, 675, 86, - 689, 674, 86, 676, 684, 86, 706, 685, 677, 686, + 86, 636, 86, 632, 634, 86, 638, 86, 86, 86, + 86, 86, 86, 635, 86, 86, 640, 643, 641, 86, + 86, 651, 86, 645, 637, 86, 653, 86, 639, 86, + 654, 642, 86, 646, 644, 647, 650, 648, 652, 86, + 649, 86, 86, 86, 86, 658, 86, 86, 661, 656, + 663, 86, 657, 655, 86, 664, 86, 659, 86, 660, + 86, 86, 86, 667, 86, 666, 662, 671, 670, 86, + 86, 86, 86, 86, 86, 673, 86, 86, 668, 665, + 86, 669, 163, 86, 672, 86, 676, 674, 690, 688, + 86, 675, 86, 677, 685, 687, 689, 686, 678, 86, - 678, 694, 688, 86, 86, 690, 679, 691, 680, 692, - 86, 681, 682, 693, 86, 695, 86, 699, 683, 86, - 86, 86, 86, 86, 703, 698, 86, 86, 700, 86, - 696, 86, 708, 697, 701, 86, 702, 86, 86, 86, - 86, 86, 86, 86, 709, 704, 705, 710, 714, 715, - 86, 86, 707, 711, 86, 720, 712, 717, 86, 719, - 716, 713, 170, 722, 718, 86, 721, 86, 86, 86, - 86, 86, 86, 725, 86, 735, 729, 723, 86, 161, - 731, 86, 724, 727, 726, 86, 86, 730, 737, 728, - 734, 86, 86, 733, 86, 86, 86, 86, 736, 739, + 679, 86, 86, 732, 86, 692, 680, 86, 681, 693, + 86, 682, 683, 694, 86, 691, 86, 695, 684, 696, + 86, 700, 86, 697, 86, 699, 698, 86, 86, 86, + 707, 704, 701, 705, 86, 702, 86, 709, 703, 86, + 86, 86, 86, 713, 706, 86, 86, 86, 86, 86, + 86, 86, 711, 716, 710, 724, 712, 720, 717, 708, + 86, 86, 86, 86, 714, 719, 718, 722, 715, 721, + 170, 86, 86, 86, 723, 86, 86, 726, 86, 86, + 86, 733, 731, 725, 736, 86, 737, 728, 735, 86, + 729, 727, 86, 739, 730, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 738, 742, 743, 86, 748, 740, - 744, 86, 741, 749, 86, 751, 86, 745, 747, 753, - 746, 752, 86, 86, 750, 86, 754, 86, 755, 86, - 756, 86, 757, 86, 86, 86, 86, 758, 86, 86, - 762, 86, 761, 760, 759, 86, 86, 86, 765, 764, - 86, 766, 763, 770, 769, 86, 86, 767, 86, 86, - 771, 86, 86, 773, 86, 775, 768, 86, 86, 86, - 86, 86, 781, 772, 778, 774, 782, 776, 86, 86, - 86, 86, 789, 86, 779, 86, 784, 86, 777, 86, - 780, 785, 792, 783, 786, 787, 86, 86, 788, 86, + 741, 738, 86, 86, 86, 745, 86, 740, 744, 86, + 742, 750, 763, 743, 86, 746, 751, 86, 753, 86, + 749, 86, 747, 754, 86, 748, 755, 752, 756, 86, + 757, 86, 86, 758, 86, 759, 86, 86, 86, 86, + 760, 86, 761, 764, 86, 766, 762, 767, 86, 86, + 86, 772, 86, 768, 86, 765, 771, 86, 773, 86, + 86, 86, 86, 777, 86, 775, 86, 86, 86, 770, + 86, 86, 769, 780, 783, 776, 784, 774, 86, 778, + 86, 86, 86, 781, 86, 86, 86, 779, 786, 794, + 782, 86, 785, 787, 86, 791, 788, 789, 86, 790, - 796, 793, 86, 790, 86, 791, 86, 86, 86, 86, - 798, 794, 799, 797, 795, 86, 86, 86, 804, 802, - 801, 86, 803, 86, 86, 86, 86, 805, 806, 808, - 810, 86, 86, 86, 800, 811, 807, 86, 86, 178, - 86, 86, 817, 86, 819, 809, 86, 815, 86, 818, - 86, 812, 816, 814, 813, 820, 821, 86, 86, 86, - 822, 86, 86, 828, 823, 827, 86, 826, 824, 86, - 830, 829, 86, 86, 86, 825, 86, 831, 833, 834, - 86, 86, 86, 841, 835, 86, 86, 838, 86, 86, - 86, 86, 86, 836, 837, 848, 844, 832, 86, 843, + 792, 86, 793, 795, 798, 796, 86, 86, 86, 86, + 86, 800, 803, 801, 86, 799, 797, 804, 86, 86, + 86, 86, 86, 805, 86, 86, 86, 810, 808, 812, + 86, 86, 86, 86, 86, 802, 806, 807, 809, 86, + 813, 819, 86, 817, 811, 814, 86, 86, 820, 816, + 86, 818, 86, 815, 86, 821, 822, 823, 86, 86, + 86, 824, 86, 86, 826, 825, 830, 828, 827, 829, + 86, 832, 86, 86, 86, 831, 833, 86, 836, 835, + 86, 86, 86, 837, 86, 843, 86, 840, 834, 86, + 86, 86, 86, 838, 839, 846, 86, 848, 845, 86, - 86, 839, 840, 86, 846, 842, 850, 847, 845, 86, - 849, 86, 86, 854, 86, 856, 852, 86, 855, 86, - 86, 851, 858, 857, 86, 86, 853, 860, 86, 86, - 86, 86, 866, 86, 86, 86, 859, 867, 86, 86, - 86, 86, 861, 868, 86, 86, 862, 863, 86, 864, - 869, 865, 86, 875, 870, 86, 873, 86, 871, 86, - 872, 86, 86, 874, 86, 876, 877, 878, 882, 86, - 86, 86, 86, 86, 86, 176, 879, 86, 891, 889, - 86, 881, 880, 86, 86, 86, 884, 883, 892, 885, - 886, 887, 888, 86, 890, 86, 86, 893, 86, 86, + 86, 841, 842, 850, 852, 844, 849, 86, 86, 856, + 86, 86, 847, 854, 857, 86, 86, 858, 851, 853, + 86, 86, 860, 855, 86, 86, 862, 86, 86, 86, + 86, 868, 86, 86, 86, 86, 859, 86, 869, 86, + 861, 870, 86, 863, 86, 864, 865, 875, 866, 86, + 867, 873, 877, 86, 871, 86, 86, 872, 86, 86, + 86, 86, 86, 874, 876, 86, 884, 86, 880, 879, + 86, 86, 86, 878, 86, 86, 893, 161, 881, 891, + 883, 882, 86, 885, 86, 887, 886, 86, 894, 888, + 889, 890, 86, 86, 86, 86, 892, 86, 86, 86, - 86, 897, 86, 86, 894, 86, 895, 896, 902, 901, - 86, 86, 903, 900, 898, 904, 905, 86, 899, 86, - 86, 86, 86, 170, 86, 86, 907, 912, 913, 908, - 910, 86, 86, 86, 914, 906, 909, 911, 86, 86, - 86, 928, 915, 86, 86, 920, 916, 86, 917, 921, - 86, 86, 922, 924, 86, 918, 86, 919, 86, 86, - 923, 925, 86, 927, 86, 86, 930, 926, 86, 934, - 86, 86, 86, 86, 86, 86, 931, 86, 935, 929, - 936, 86, 86, 175, 86, 86, 933, 950, 86, 937, - 932, 951, 947, 949, 939, 86, 86, 938, 86, 948, + 899, 895, 86, 86, 897, 86, 86, 86, 898, 903, + 904, 896, 902, 900, 905, 86, 86, 901, 86, 86, + 907, 908, 86, 86, 909, 910, 86, 906, 911, 915, + 86, 86, 913, 917, 170, 86, 912, 86, 914, 916, + 86, 918, 86, 86, 86, 919, 924, 86, 86, 920, + 86, 925, 927, 86, 86, 86, 931, 921, 922, 926, + 928, 86, 86, 929, 923, 86, 86, 930, 86, 933, + 86, 937, 86, 86, 86, 86, 86, 86, 934, 86, + 938, 932, 939, 86, 86, 86, 958, 86, 936, 86, + 86, 940, 952, 935, 950, 953, 942, 86, 86, 941, - 940, 86, 86, 941, 952, 954, 958, 942, 86, 955, - 943, 86, 953, 86, 956, 86, 959, 944, 945, 961, - 946, 86, 957, 86, 86, 86, 969, 86, 86, 86, - 86, 972, 86, 974, 86, 960, 86, 962, 963, 976, - 964, 86, 971, 965, 970, 978, 170, 86, 966, 975, - 980, 977, 973, 981, 967, 968, 86, 86, 982, 86, - 86, 984, 86, 983, 86, 987, 979, 986, 86, 86, - 86, 86, 985, 988, 989, 990, 991, 86, 86, 86, - 992, 993, 86, 86, 86, 86, 995, 86, 999, 86, - 86, 86, 998, 86, 86, 1002, 86, 86, 994, 168, + 86, 951, 943, 954, 86, 944, 956, 955, 957, 945, + 86, 959, 946, 86, 86, 86, 86, 964, 86, 947, + 948, 86, 949, 86, 960, 86, 972, 86, 86, 962, + 86, 86, 961, 979, 975, 977, 963, 86, 965, 966, + 86, 967, 976, 86, 968, 974, 973, 86, 86, 969, + 86, 978, 86, 983, 86, 970, 971, 984, 981, 980, + 996, 986, 985, 86, 86, 987, 86, 988, 86, 990, + 86, 989, 982, 86, 86, 991, 992, 994, 86, 993, + 86, 86, 995, 86, 86, 86, 86, 998, 86, 1002, + 86, 86, 86, 1001, 86, 86, 1005, 86, 86, 178, - 1006, 1004, 1007, 996, 997, 1000, 86, 1001, 1009, 1003, - 1008, 86, 86, 1010, 86, 1012, 86, 1011, 1005, 1014, - 1016, 86, 86, 86, 86, 86, 86, 1015, 86, 1018, - 86, 1017, 1019, 1020, 86, 1013, 1021, 86, 1022, 86, - 86, 86, 86, 86, 86, 1024, 1029, 86, 1025, 86, - 1032, 86, 86, 86, 86, 86, 1033, 1023, 1030, 1027, - 1026, 1031, 86, 1028, 1035, 86, 86, 86, 86, 86, - 86, 1034, 1038, 1040, 1036, 1039, 86, 86, 1037, 86, - 86, 1041, 1042, 1046, 86, 1048, 1044, 86, 1047, 86, - 86, 86, 1045, 86, 1043, 1049, 86, 86, 1056, 1051, + 997, 1009, 1007, 1010, 999, 1000, 1003, 86, 1004, 1012, + 1006, 1011, 86, 86, 1013, 86, 1015, 86, 1014, 1008, + 1017, 1019, 86, 86, 86, 86, 86, 86, 1018, 86, + 1021, 86, 1020, 1022, 1023, 86, 1016, 1024, 86, 1025, + 86, 86, 86, 86, 86, 86, 1027, 1032, 86, 1028, + 86, 1035, 86, 86, 86, 86, 86, 1036, 1026, 1033, + 1030, 1029, 1034, 86, 1031, 1038, 86, 86, 86, 86, + 86, 86, 1037, 1041, 1043, 1039, 1042, 86, 86, 1040, + 86, 86, 1044, 1045, 1049, 86, 1051, 1047, 86, 1050, + 86, 86, 86, 1048, 86, 1046, 1052, 86, 86, 1059, - 1054, 1057, 86, 86, 86, 86, 1050, 86, 1055, 1059, - 86, 1053, 86, 86, 86, 1052, 86, 86, 86, 86, - 86, 1067, 1070, 1065, 1058, 86, 1060, 1061, 86, 1071, - 1062, 86, 86, 1064, 1063, 86, 1068, 1072, 1069, 1066, - 86, 1075, 86, 86, 86, 86, 1074, 86, 1076, 1078, - 1073, 1079, 86, 86, 86, 86, 1077, 86, 86, 86, - 86, 1084, 1080, 1082, 1089, 1081, 1090, 1083, 1092, 86, - 86, 86, 86, 1091, 86, 1085, 1095, 1087, 1096, 1086, - 1088, 86, 86, 1093, 86, 1097, 86, 86, 86, 86, - 1104, 1094, 86, 1101, 86, 1103, 86, 86, 86, 1099, + 1054, 1057, 1060, 86, 86, 86, 86, 1053, 86, 1058, + 1062, 86, 1056, 86, 86, 86, 1055, 86, 86, 86, + 86, 86, 1070, 1073, 1068, 1061, 86, 1063, 1064, 86, + 1074, 1065, 86, 86, 1067, 1066, 86, 1071, 1075, 1072, + 1069, 86, 1078, 86, 86, 86, 86, 1077, 86, 1079, + 1081, 1076, 1082, 86, 86, 86, 86, 1080, 86, 86, + 86, 86, 1087, 1083, 1085, 1092, 1084, 1093, 1086, 1095, + 86, 86, 86, 86, 1094, 86, 1088, 1098, 1090, 1099, + 1089, 1091, 86, 86, 1096, 86, 1100, 86, 86, 86, + 86, 1107, 1097, 1108, 1104, 86, 1106, 86, 86, 86, - 1105, 86, 1108, 1110, 86, 1098, 86, 1100, 86, 86, - 1102, 166, 1109, 86, 1107, 86, 1106, 86, 1112, 86, - 1113, 1116, 86, 1119, 1111, 86, 1117, 170, 86, 1120, - 1118, 1121, 86, 1114, 86, 1115, 86, 1123, 86, 86, - 86, 86, 1122, 86, 1124, 86, 1136, 1137, 1139, 86, - 1126, 1127, 86, 86, 86, 86, 1138, 1141, 1125, 1128, - 86, 1129, 86, 86, 1148, 1130, 86, 1131, 1144, 1142, - 1146, 1132, 86, 1133, 1143, 1147, 86, 1140, 1134, 86, - 1145, 86, 86, 1135, 86, 1150, 1149, 1156, 86, 1153, - 86, 86, 86, 86, 1152, 86, 86, 1151, 86, 1154, + 1102, 1109, 86, 86, 1112, 86, 1101, 176, 1103, 86, + 86, 1105, 1114, 86, 86, 86, 1111, 1120, 1117, 1116, + 1110, 86, 1121, 170, 86, 1113, 86, 1115, 1123, 86, + 1124, 1118, 86, 1119, 86, 86, 1122, 86, 86, 1127, + 86, 86, 86, 86, 1140, 86, 86, 86, 1125, 1141, + 86, 1131, 1126, 86, 1128, 1130, 1143, 86, 86, 1165, + 1132, 1129, 1142, 1133, 86, 1146, 86, 1134, 86, 1135, + 1145, 1144, 1147, 1136, 86, 1137, 86, 86, 1150, 1148, + 1138, 86, 1149, 1151, 86, 1139, 1152, 86, 86, 86, + 1153, 1154, 86, 86, 1157, 86, 1156, 1160, 86, 86, - 1155, 1161, 1160, 1162, 1157, 1163, 1159, 1164, 1165, 86, - 1166, 86, 1158, 86, 1167, 86, 86, 86, 1168, 86, - 86, 86, 86, 86, 1182, 86, 1179, 86, 86, 1178, - 1183, 86, 86, 86, 86, 1169, 1180, 1170, 86, 1171, - 1181, 1184, 1189, 1188, 1172, 1185, 1173, 86, 86, 86, - 86, 1186, 1174, 1187, 1190, 86, 86, 1175, 1176, 1191, - 1195, 86, 86, 86, 1177, 86, 1196, 1198, 1192, 86, - 86, 1193, 1199, 86, 1194, 1201, 86, 86, 86, 1203, - 86, 86, 1204, 1197, 1200, 86, 86, 1209, 86, 1202, - 1206, 86, 86, 86, 86, 1207, 1208, 1205, 86, 1212, + 1159, 86, 86, 1155, 1158, 1167, 1166, 1161, 1164, 1168, + 86, 86, 1163, 1169, 86, 86, 1162, 1170, 1171, 86, + 86, 1173, 86, 86, 86, 1183, 86, 86, 1186, 86, + 86, 86, 1172, 86, 86, 1182, 1187, 1174, 86, 1175, + 1184, 1185, 1188, 86, 1176, 86, 1177, 1189, 1193, 1190, + 86, 86, 1178, 86, 86, 1194, 86, 1179, 1180, 86, + 86, 1192, 1191, 1195, 1181, 1199, 86, 86, 1202, 86, + 1203, 1196, 1197, 1200, 86, 86, 86, 1198, 86, 1207, + 1201, 1205, 86, 86, 86, 86, 86, 1208, 86, 86, + 1213, 1206, 86, 1210, 1204, 1211, 86, 86, 1214, 86, - 1210, 86, 86, 86, 86, 86, 86, 1211, 86, 1219, - 1221, 86, 1213, 1217, 1216, 1214, 86, 1218, 1215, 86, - 1223, 86, 1220, 86, 86, 86, 1225, 1222, 86, 86, - 86, 86, 86, 1230, 1235, 1231, 1232, 86, 1227, 1224, - 86, 1233, 1226, 1228, 1229, 86, 1234, 86, 86, 86, - 86, 1242, 1237, 1240, 1243, 86, 1236, 86, 1241, 86, - 1244, 1238, 86, 86, 86, 1239, 86, 1251, 86, 1245, - 86, 86, 1253, 86, 86, 86, 86, 1249, 86, 1247, - 1255, 86, 1246, 1250, 1248, 86, 1254, 1266, 1256, 86, - 1252, 86, 1257, 86, 86, 86, 1259, 1258, 1260, 86, + 86, 86, 1209, 86, 1212, 1216, 86, 86, 86, 86, + 86, 1215, 1223, 1218, 1225, 1220, 1221, 1217, 1222, 86, + 86, 1219, 86, 86, 86, 1224, 1226, 86, 1229, 86, + 86, 86, 86, 1227, 86, 86, 1234, 1235, 86, 1236, + 1239, 1231, 1228, 1230, 1237, 1233, 86, 1232, 86, 1238, + 86, 86, 86, 1241, 86, 1244, 86, 1248, 86, 1240, + 1245, 86, 86, 1246, 1242, 86, 1247, 86, 1243, 86, + 1249, 86, 86, 1255, 1257, 86, 86, 86, 1250, 86, + 86, 1251, 1253, 86, 86, 1252, 1254, 1261, 1259, 86, + 1258, 1260, 1256, 86, 1263, 86, 86, 1262, 1264, 86, - 1263, 1261, 86, 1262, 1264, 86, 86, 1269, 1270, 86, - 86, 86, 1268, 86, 1265, 86, 86, 1274, 1273, 1271, - 86, 1267, 86, 86, 86, 1280, 86, 1278, 1281, 1272, - 86, 86, 86, 86, 86, 1282, 1284, 1283, 1275, 1279, - 86, 1276, 86, 1277, 1286, 1285, 86, 86, 1290, 86, - 86, 1287, 86, 1289, 86, 1292, 86, 1291, 1293, 86, - 86, 86, 86, 86, 86, 1288, 1297, 1298, 1294, 86, - 86, 86, 86, 1299, 1300, 1304, 1305, 86, 1295, 86, - 1296, 86, 86, 1302, 1307, 1308, 86, 86, 1301, 86, - 86, 1303, 1306, 1312, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 1267, 1266, 1268, 86, 1270, 1273, + 86, 1265, 1269, 1272, 86, 86, 1274, 86, 86, 1271, + 86, 1277, 86, 1275, 86, 1278, 86, 86, 1276, 86, + 1282, 1284, 86, 1285, 1339, 86, 86, 86, 1279, 86, + 1286, 1280, 1283, 86, 1288, 1290, 1281, 86, 1287, 86, + 86, 86, 1289, 86, 1291, 1294, 1293, 86, 1296, 86, + 86, 86, 1295, 86, 86, 86, 86, 86, 86, 1297, + 1301, 1292, 1298, 86, 86, 86, 1302, 1303, 86, 1304, + 86, 86, 1299, 1308, 1300, 1309, 1305, 1306, 86, 86, + 86, 86, 86, 1311, 86, 1310, 86, 1307, 1312, 86, - 1318, 86, 1311, 1310, 1314, 86, 1309, 170, 86, 86, - 86, 86, 1313, 1319, 1320, 1315, 1321, 86, 1317, 86, - 86, 86, 1323, 1316, 1326, 1324, 86, 1322, 1330, 1325, - 1327, 1328, 86, 1331, 86, 86, 86, 1334, 86, 86, - 1329, 1333, 1332, 1335, 86, 86, 86, 86, 86, 86, - 86, 1338, 86, 1344, 86, 86, 1341, 86, 1336, 1337, - 86, 86, 1339, 86, 165, 1342, 1348, 1340, 86, 1345, - 86, 1343, 86, 1350, 1354, 1346, 1347, 86, 1355, 1358, - 86, 86, 1351, 1349, 1352, 1356, 86, 1353, 1357, 86, - 86, 86, 86, 1360, 86, 1359, 86, 86, 86, 1364, + 1313, 1317, 86, 86, 1314, 86, 1315, 86, 86, 86, + 1316, 1319, 1323, 86, 1318, 86, 86, 1324, 170, 86, + 1325, 1326, 1320, 86, 86, 86, 86, 1322, 86, 86, + 1331, 86, 1321, 1328, 1365, 1330, 1335, 1332, 1327, 1329, + 1333, 86, 86, 1336, 86, 1337, 1334, 86, 86, 86, + 86, 86, 1338, 1340, 86, 86, 1343, 86, 1341, 86, + 86, 1349, 86, 86, 1342, 86, 1346, 86, 86, 1344, + 86, 86, 1347, 86, 1345, 1359, 1353, 1350, 1355, 1348, + 86, 1360, 1352, 1351, 86, 86, 86, 1356, 1354, 1357, + 1361, 1363, 1358, 1362, 86, 86, 86, 86, 86, 86, - 86, 1363, 1367, 86, 86, 1361, 86, 1371, 86, 1362, - 1366, 86, 86, 86, 1368, 1365, 1372, 1369, 1373, 86, - 86, 1377, 1370, 1376, 1374, 1375, 86, 86, 86, 86, - 86, 86, 86, 86, 86, 86, 86, 1383, 86, 86, - 86, 1378, 1379, 1381, 1382, 1384, 1388, 1380, 86, 86, - 86, 1385, 86, 1387, 1389, 1386, 1390, 1392, 1391, 86, - 86, 86, 86, 86, 1393, 86, 1400, 86, 86, 1394, - 86, 1395, 86, 1403, 86, 86, 1398, 1397, 1401, 1396, - 1406, 1402, 1399, 86, 1408, 86, 1405, 86, 1404, 1409, - 86, 86, 1413, 1410, 86, 1407, 86, 1423, 1427, 1411, + 1364, 86, 86, 1369, 86, 1368, 86, 1372, 86, 1376, + 86, 86, 86, 1371, 1366, 1367, 1377, 1378, 1370, 1374, + 1373, 86, 86, 1375, 86, 86, 86, 1380, 1381, 86, + 86, 86, 86, 86, 1382, 86, 86, 86, 1386, 86, + 1388, 1379, 86, 86, 1383, 1384, 86, 1387, 1389, 1393, + 1385, 86, 86, 86, 1390, 86, 86, 1392, 1391, 86, + 86, 1394, 1395, 86, 1397, 86, 86, 1398, 1400, 1405, + 86, 1396, 1399, 86, 86, 86, 86, 86, 1401, 86, + 1403, 1406, 1408, 1404, 1407, 1402, 86, 86, 86, 1412, + 1413, 1411, 1410, 1409, 86, 1414, 86, 86, 1415, 86, - 1412, 86, 1414, 86, 86, 1422, 1415, 1421, 86, 1416, - 1417, 86, 1424, 1425, 1418, 86, 86, 86, 86, 86, - 1419, 86, 1428, 1429, 1420, 1426, 86, 1430, 86, 1432, - 86, 86, 1437, 1433, 86, 1434, 1431, 86, 86, 1435, - 86, 1439, 1440, 1438, 86, 1443, 1444, 86, 86, 1436, - 86, 86, 86, 1445, 1441, 86, 1447, 86, 1474, 1446, - 86, 1448, 1442, 1449, 86, 1450, 86, 1451, 86, 1452, - 1458, 1453, 86, 1454, 1455, 1456, 86, 86, 1460, 1457, - 86, 1462, 86, 86, 86, 86, 1463, 86, 86, 1461, - 1466, 1459, 1464, 86, 86, 86, 1472, 1468, 1467, 86, + 1418, 1416, 86, 86, 1429, 1505, 1428, 1417, 86, 1419, + 1426, 1427, 86, 1420, 86, 86, 1421, 1422, 86, 1430, + 1432, 1423, 86, 1433, 1431, 86, 86, 1424, 86, 1435, + 1434, 1425, 86, 1437, 86, 86, 86, 1438, 1442, 1439, + 86, 86, 86, 1436, 86, 86, 86, 1445, 86, 1443, + 1448, 1449, 86, 1450, 1441, 1440, 86, 86, 86, 1446, + 86, 1444, 1451, 86, 1447, 86, 1458, 86, 1457, 1452, + 86, 1459, 1460, 1461, 1453, 86, 1454, 86, 1455, 86, + 1456, 86, 1464, 1463, 86, 1467, 86, 1470, 1462, 86, + 1468, 86, 86, 1466, 1471, 1469, 86, 86, 86, 1465, - 1473, 86, 86, 86, 1465, 86, 86, 86, 1476, 1471, - 86, 86, 1469, 1470, 86, 1475, 1478, 1479, 86, 1477, - 1483, 86, 86, 1482, 1480, 1485, 86, 1488, 86, 1484, - 1486, 86, 86, 86, 1487, 86, 1481, 1491, 86, 1493, - 86, 86, 1490, 86, 1494, 86, 1495, 86, 1498, 86, - 86, 1489, 86, 86, 86, 1492, 1501, 1503, 86, 86, - 86, 86, 1506, 86, 1504, 86, 1496, 1505, 1497, 1500, - 1499, 86, 86, 86, 1502, 1508, 1510, 86, 86, 1507, - 1509, 86, 1512, 86, 1515, 86, 1513, 1511, 1514, 86, - 1516, 86, 1517, 86, 1518, 86, 86, 86, 1523, 1524, + 86, 1477, 86, 1478, 86, 1473, 1472, 86, 86, 86, + 86, 86, 1479, 86, 1476, 1481, 1474, 1475, 86, 86, + 1483, 86, 1480, 1482, 86, 1484, 1487, 1488, 86, 1490, + 86, 1485, 86, 86, 1491, 86, 1492, 86, 86, 1489, + 1493, 1496, 86, 86, 1486, 1498, 86, 1495, 86, 1499, + 86, 86, 86, 1503, 86, 1500, 1494, 86, 86, 86, + 1508, 1506, 86, 1497, 86, 86, 86, 1509, 86, 86, + 1511, 86, 1501, 1502, 1510, 86, 1515, 1504, 1513, 1507, + 86, 86, 1512, 86, 1514, 86, 1517, 86, 86, 86, + 1519, 1518, 1520, 1521, 1516, 86, 1522, 86, 86, 86, - 1526, 1520, 86, 1521, 86, 86, 86, 1525, 86, 86, - 1522, 1519, 86, 1530, 86, 86, 86, 1527, 86, 86, - 86, 1532, 170, 1529, 86, 1538, 1539, 86, 1528, 1534, - 86, 86, 86, 1540, 86, 1531, 1533, 1535, 1541, 86, - 1536, 86, 86, 86, 86, 86, 1549, 1537, 1542, 86, - 1544, 86, 86, 1546, 1543, 86, 1547, 1554, 86, 1545, - 1553, 1548, 86, 86, 86, 86, 1558, 86, 1556, 1550, - 1552, 1559, 86, 86, 1561, 1562, 1551, 163, 86, 86, - 86, 86, 86, 1557, 86, 1555, 1567, 86, 86, 1568, - 1570, 1560, 1563, 1569, 1564, 1565, 1571, 1572, 1566, 86, + 86, 1528, 1523, 1529, 1525, 1524, 1526, 86, 1532, 86, + 86, 86, 86, 1527, 86, 1530, 1531, 86, 86, 1536, + 86, 1533, 86, 86, 86, 86, 170, 86, 1538, 1535, + 86, 1544, 1545, 86, 1540, 86, 1534, 86, 86, 1546, + 1547, 1541, 1537, 1539, 86, 86, 86, 1542, 86, 1548, + 86, 86, 86, 1543, 86, 1549, 86, 1555, 86, 86, + 1552, 86, 86, 86, 1550, 1551, 1553, 1559, 1554, 1560, + 86, 1556, 86, 175, 86, 86, 1558, 1562, 1564, 1557, + 1563, 1566, 1561, 1565, 86, 86, 86, 86, 1569, 86, + 1570, 86, 86, 86, 1567, 1568, 1573, 1578, 1575, 1574, - 86, 1575, 86, 86, 1573, 86, 1576, 86, 86, 86, - 1574, 86, 86, 1578, 1580, 86, 1581, 86, 86, 86, - 1584, 1577, 86, 1579, 86, 1589, 1582, 86, 86, 86, - 86, 1590, 1583, 1586, 86, 1593, 1587, 1585, 86, 86, - 1588, 86, 1594, 86, 86, 86, 1591, 86, 1592, 86, - 1600, 86, 1596, 1595, 1597, 86, 1601, 86, 1598, 86, - 1602, 86, 1605, 1599, 86, 1603, 1604, 86, 1609, 1610, - 1611, 1608, 86, 1607, 1606, 86, 86, 1613, 86, 86, - 86, 86, 86, 1618, 1619, 1614, 1612, 1617, 1620, 86, - 86, 86, 1621, 86, 86, 86, 1615, 86, 1622, 1623, + 86, 1571, 1576, 86, 1572, 86, 1577, 86, 1581, 1579, + 86, 86, 1583, 1582, 86, 86, 86, 86, 1580, 86, + 1586, 1587, 86, 86, 86, 170, 86, 1590, 86, 1585, + 86, 1595, 86, 86, 86, 1588, 1584, 1596, 1592, 1589, + 86, 1599, 86, 1591, 1593, 86, 1594, 86, 86, 86, + 1597, 86, 1600, 1598, 86, 86, 86, 86, 86, 1602, + 1606, 1601, 1608, 1603, 1604, 1607, 86, 86, 1611, 86, + 1605, 1612, 1609, 86, 1616, 1610, 86, 1615, 1613, 1617, + 86, 86, 1619, 86, 86, 86, 86, 86, 168, 86, + 1620, 1624, 1625, 1614, 1623, 1618, 86, 86, 86, 1626, - 86, 86, 1616, 86, 1625, 1624, 86, 86, 86, 86, - 86, 1626, 86, 1631, 86, 1627, 1630, 86, 1633, 1634, - 1628, 86, 1629, 86, 1637, 86, 1642, 1639, 1632, 1638, - 86, 1635, 1640, 86, 86, 86, 86, 86, 86, 86, - 1636, 1650, 1646, 1641, 86, 1645, 86, 86, 86, 86, - 1654, 1651, 86, 1643, 1644, 86, 86, 1647, 1657, 1648, - 86, 1656, 1649, 86, 86, 86, 86, 86, 1652, 86, - 86, 1655, 86, 86, 1665, 1653, 86, 86, 86, 1658, - 1666, 1662, 1659, 1672, 1660, 1661, 86, 1664, 86, 1667, - 1663, 1670, 86, 1671, 86, 1668, 86, 86, 1669, 86, + 86, 1627, 1621, 86, 1628, 86, 1629, 86, 1622, 86, + 86, 86, 86, 1630, 1632, 86, 86, 86, 86, 1631, + 86, 1637, 86, 1633, 1636, 86, 1634, 1640, 86, 1643, + 1635, 86, 1641, 1639, 1644, 86, 1638, 1645, 86, 1648, + 86, 86, 1646, 86, 86, 86, 86, 1642, 86, 86, + 1652, 1647, 1656, 1651, 86, 86, 86, 1660, 86, 1649, + 1650, 1657, 86, 86, 86, 1653, 86, 1655, 1654, 1663, + 86, 86, 1662, 86, 1658, 86, 86, 86, 86, 86, + 1686, 1659, 86, 1661, 86, 1671, 86, 166, 86, 1664, + 1665, 1668, 1666, 86, 1670, 1667, 1672, 1676, 86, 1669, - 1673, 1674, 86, 86, 1677, 86, 1675, 86, 1678, 86, - 86, 86, 1676, 1687, 1681, 1685, 86, 86, 1682, 86, - 86, 1679, 1686, 1680, 1689, 86, 1684, 1683, 86, 86, - 1690, 86, 1691, 1692, 86, 1688, 86, 86, 1697, 1698, - 86, 86, 86, 86, 86, 1695, 86, 1702, 1701, 1703, - 86, 1693, 1694, 1705, 86, 86, 86, 1696, 86, 1699, - 86, 1706, 86, 1700, 1707, 86, 86, 86, 86, 1710, - 1704, 86, 1708, 86, 1715, 86, 1709, 1713, 86, 86, - 86, 86, 86, 1711, 86, 1719, 86, 1712, 86, 1721, - 1716, 1714, 86, 1722, 86, 1720, 86, 1727, 1718, 1717, + 1675, 1673, 1677, 86, 86, 1674, 86, 86, 86, 1678, + 1679, 86, 86, 86, 1683, 86, 86, 1681, 1684, 86, + 1680, 1687, 86, 1693, 1682, 1691, 86, 86, 1688, 86, + 86, 1685, 1692, 86, 1694, 1689, 86, 1697, 1690, 86, + 86, 1696, 86, 1695, 1698, 86, 86, 1703, 1704, 86, + 86, 86, 86, 86, 1701, 86, 1708, 1707, 1709, 1699, + 1700, 86, 1711, 86, 86, 86, 1702, 86, 1705, 86, + 1712, 86, 1706, 1713, 86, 86, 86, 86, 1716, 86, + 86, 1710, 86, 1721, 86, 1714, 1717, 1715, 1719, 86, + 86, 86, 1727, 86, 86, 1722, 1718, 1720, 1725, 86, - 1723, 1724, 86, 86, 86, 86, 1732, 86, 86, 1730, - 86, 86, 1733, 86, 1726, 86, 1728, 1725, 86, 1735, - 1731, 1729, 86, 86, 1737, 86, 1738, 86, 1740, 170, - 1734, 1741, 86, 1736, 1739, 86, 86, 86, 1742, 86, - 1743, 1744, 86, 1746, 86, 1745, 86, 1752, 86, 161, - 86, 1747, 86, 1753, 1756, 86, 1750, 86, 1748, 1749, - 86, 86, 86, 86, 1760, 1758, 1757, 1762, 1761, 1751, - 1754, 86, 1755, 86, 1764, 86, 1766, 86, 86, 86, - 86, 1759, 86, 86, 86, 1768, 86, 1769, 86, 1765, - 86, 1763, 86, 1771, 86, 1772, 86, 1767, 1773, 1776, + 86, 86, 86, 1728, 1726, 1723, 86, 1733, 1724, 86, + 86, 86, 86, 1738, 86, 1730, 1736, 1729, 86, 86, + 86, 86, 1732, 1734, 1739, 86, 1731, 1737, 1735, 86, + 1741, 86, 86, 86, 86, 1745, 1744, 170, 1740, 1747, + 1743, 1742, 1748, 86, 86, 86, 1750, 1749, 86, 86, + 1751, 1746, 86, 1752, 86, 86, 86, 1759, 86, 86, + 165, 86, 86, 1754, 1760, 86, 1753, 1765, 1757, 1763, + 86, 1755, 1756, 86, 1764, 86, 1769, 1767, 1761, 86, + 1758, 1762, 86, 86, 1768, 1771, 86, 1773, 86, 86, + 86, 86, 86, 1766, 86, 86, 1775, 1776, 86, 1778, - 86, 1777, 86, 1775, 1774, 86, 86, 1770, 1778, 1781, - 1784, 86, 1782, 86, 1779, 86, 86, 86, 1785, 86, - 1786, 86, 1792, 86, 1783, 1780, 1789, 86, 1788, 1793, - 1791, 1794, 86, 86, 86, 86, 1787, 86, 1795, 1798, - 1790, 86, 1796, 86, 1797, 86, 86, 1800, 86, 86, - 1801, 1799, 86, 1805, 1806, 1804, 86, 1808, 86, 86, - 86, 1807, 86, 86, 86, 86, 86, 1802, 86, 1803, - 1810, 1811, 86, 1812, 86, 86, 86, 86, 86, 86, - 1813, 1809, 86, 1821, 1814, 86, 1815, 1822, 1816, 1817, - 1818, 1827, 86, 86, 86, 1819, 86, 86, 86, 86, + 1772, 86, 1779, 1770, 86, 86, 86, 86, 1774, 1780, + 1783, 86, 1784, 86, 86, 1791, 86, 86, 1777, 1793, + 1782, 86, 1781, 86, 1785, 1786, 1788, 86, 86, 1789, + 86, 86, 1792, 1798, 1787, 1794, 1796, 1795, 1799, 86, + 1800, 1790, 1797, 1801, 86, 86, 86, 86, 1803, 86, + 1802, 86, 1804, 1805, 86, 86, 86, 1807, 86, 86, + 1806, 86, 1812, 1813, 1811, 86, 86, 1815, 86, 86, + 1814, 86, 1808, 86, 86, 1809, 1817, 86, 1810, 1818, + 86, 86, 1819, 86, 86, 86, 86, 86, 86, 1816, + 86, 86, 1820, 1829, 1828, 86, 86, 86, 1823, 1824, - 86, 1823, 86, 1820, 1824, 1825, 86, 1826, 1833, 86, - 86, 86, 86, 1837, 1829, 1835, 1828, 86, 86, 1830, - 1831, 1832, 1834, 1836, 86, 86, 86, 86, 86, 86, - 86, 86, 1838, 86, 1844, 1842, 86, 1845, 1839, 1851, - 1846, 86, 1840, 1841, 1843, 86, 1847, 86, 1848, 1852, - 86, 1853, 86, 1849, 86, 86, 1850, 1854, 1856, 1855, - 1857, 86, 86, 86, 86, 1861, 1859, 1858, 1860, 1862, - 86, 86, 86, 86, 86, 86, 1870, 1871, 86, 86, - 86, 1865, 86, 1867, 1869, 86, 1868, 1864, 86, 1863, - 86, 1877, 1866, 1873, 86, 86, 1878, 86, 86, 1872, + 1825, 1821, 86, 1822, 1834, 1826, 86, 86, 1831, 1832, + 86, 86, 86, 1827, 1830, 1833, 86, 1840, 86, 86, + 86, 86, 86, 1836, 86, 1842, 1835, 86, 1844, 86, + 1838, 1837, 86, 1839, 1843, 86, 1845, 86, 1846, 1841, + 86, 86, 86, 86, 1849, 86, 86, 1851, 86, 1858, + 1848, 1852, 1850, 1847, 1853, 1859, 86, 1854, 1855, 1860, + 86, 86, 86, 1856, 86, 1863, 1862, 1864, 86, 86, + 1857, 86, 86, 1861, 86, 1868, 1867, 1865, 86, 1869, + 86, 86, 86, 86, 86, 1877, 1878, 86, 1866, 86, + 1872, 86, 1874, 1876, 86, 1875, 1871, 1870, 86, 86, - 1879, 86, 1875, 1874, 86, 86, 1876, 86, 1883, 86, - 1880, 86, 86, 1887, 1885, 86, 1886, 1884, 1889, 1881, - 1891, 1890, 1882, 86, 86, 86, 1895, 1888, 86, 86, - 86, 1896, 86, 86, 1901, 86, 1903, 86, 1900, 86, - 86, 1892, 1897, 1894, 1898, 1893, 86, 86, 1904, 1907, - 86, 1905, 1899, 1902, 86, 86, 1908, 86, 1911, 1909, - 86, 1906, 1915, 86, 86, 86, 1913, 86, 86, 86, - 86, 1910, 1914, 1912, 86, 1916, 86, 86, 1919, 1920, - 86, 86, 86, 86, 1917, 1921, 1927, 86, 1918, 1923, - 1922, 86, 1929, 1930, 1924, 86, 1925, 1926, 86, 86, + 1884, 1873, 86, 86, 86, 1885, 86, 1880, 1886, 1879, + 86, 86, 86, 1882, 86, 1890, 1881, 86, 1883, 86, + 86, 1894, 1887, 86, 1893, 86, 1892, 1891, 1898, 1888, + 1889, 86, 86, 86, 1896, 1895, 1902, 1897, 86, 86, + 86, 1903, 86, 86, 1908, 86, 1910, 86, 1907, 1899, + 86, 1901, 1904, 1900, 1905, 1911, 86, 86, 86, 86, + 1914, 86, 1906, 1909, 1912, 86, 86, 1918, 86, 86, + 1913, 1915, 1917, 86, 1922, 86, 86, 1916, 1920, 86, + 86, 1919, 86, 86, 1921, 86, 86, 1923, 1924, 86, + 1926, 1927, 1928, 86, 86, 1925, 86, 86, 1929, 1934, - 1932, 86, 86, 86, 1931, 1936, 86, 1938, 1928, 86, - 86, 86, 86, 86, 86, 1933, 1942, 86, 86, 86, - 1934, 86, 1935, 1937, 1945, 1944, 86, 1940, 86, 86, - 1941, 1939, 86, 1946, 1943, 1948, 86, 1947, 170, 86, - 1950, 1949, 1952, 86, 86, 1951, 1955, 86, 86, 86, - 1953, 1959, 86, 86, 86, 86, 86, 86, 1954, 86, - 1957, 1961, 86, 1956, 1966, 86, 86, 1960, 1958, 1962, - 86, 1963, 1969, 86, 1964, 1978, 1965, 1967, 1970, 86, - 1968, 86, 1972, 86, 1971, 86, 86, 1975, 1976, 86, - 1973, 86, 86, 86, 86, 1974, 86, 1979, 86, 86, + 86, 86, 1930, 1932, 86, 1936, 1937, 1931, 1939, 86, + 1933, 86, 86, 86, 1938, 1943, 86, 1940, 86, 1945, + 86, 1935, 1941, 86, 86, 86, 86, 1949, 86, 86, + 86, 1944, 1942, 86, 1951, 86, 86, 86, 1952, 1947, + 86, 1954, 1946, 86, 1948, 1955, 1956, 1957, 86, 1950, + 86, 170, 86, 1960, 1958, 1953, 86, 1959, 1963, 86, + 86, 86, 86, 1961, 1967, 86, 86, 1962, 86, 86, + 86, 86, 1965, 1969, 86, 1964, 1968, 1974, 86, 86, + 1966, 1970, 1971, 86, 163, 1977, 1975, 1972, 1978, 86, + 86, 1973, 86, 1979, 1980, 86, 1976, 1981, 86, 1983, - 86, 86, 86, 1977, 86, 1984, 1985, 86, 86, 1989, - 86, 1986, 1980, 86, 86, 86, 1982, 1983, 1981, 1987, - 1993, 86, 1990, 1988, 1997, 86, 1995, 1994, 1998, 1996, - 1992, 86, 86, 86, 86, 1991, 86, 86, 86, 86, - 2004, 86, 86, 86, 2007, 2008, 86, 2009, 86, 2002, - 86, 2000, 1999, 2011, 86, 2001, 2005, 2003, 2006, 2010, - 86, 2012, 2013, 2015, 86, 86, 2017, 86, 2019, 2016, - 2018, 2014, 86, 86, 86, 2021, 86, 86, 2024, 86, - 2023, 86, 86, 86, 2027, 86, 86, 86, 2026, 86, - 86, 2020, 2030, 86, 2031, 2032, 86, 2033, 86, 86, + 1984, 86, 86, 86, 86, 86, 1986, 1982, 86, 86, + 86, 1987, 86, 86, 1985, 86, 86, 86, 1992, 86, + 1993, 86, 86, 1988, 86, 1994, 1997, 86, 1990, 1995, + 1991, 1989, 2001, 1998, 1996, 86, 86, 2005, 86, 2002, + 2003, 2006, 2000, 86, 86, 86, 1999, 86, 86, 86, + 86, 2004, 2012, 86, 86, 86, 2015, 2016, 86, 2017, + 86, 2010, 86, 2008, 2007, 2019, 86, 2009, 2013, 2011, + 2014, 86, 2020, 2018, 86, 2023, 86, 86, 2025, 86, + 2027, 2024, 2026, 2021, 86, 86, 86, 2029, 86, 86, + 2032, 86, 2031, 86, 86, 2022, 86, 2035, 86, 86, - 86, 2022, 2025, 86, 2028, 2041, 86, 2029, 2034, 2035, - 2036, 86, 86, 86, 86, 2037, 2043, 2039, 2038, 86, - 2040, 2044, 86, 86, 86, 2047, 2042, 2045, 2050, 2046, - 2048, 86, 2052, 86, 86, 2054, 86, 86, 86, 2049, - 2051, 86, 2056, 86, 86, 2059, 2060, 86, 86, 2062, - 86, 86, 86, 86, 2053, 86, 86, 86, 2057, 86, - 2067, 2064, 2065, 2055, 86, 2058, 86, 86, 2061, 2069, - 86, 2068, 86, 2073, 2071, 86, 2063, 2066, 2070, 2072, - 86, 2075, 86, 86, 2079, 86, 2082, 86, 2078, 86, - 86, 2083, 86, 2074, 2081, 86, 2085, 86, 2077, 2086, + 86, 2034, 86, 2028, 86, 2039, 86, 2038, 86, 86, + 2041, 2040, 86, 2030, 2033, 2036, 86, 86, 2049, 86, + 2037, 2042, 2043, 2044, 86, 2051, 2047, 86, 2045, 86, + 2052, 86, 2046, 86, 86, 2055, 86, 2048, 86, 2050, + 2058, 2053, 86, 86, 2054, 2056, 86, 2059, 2062, 86, + 86, 2057, 86, 2064, 86, 86, 86, 2067, 2068, 86, + 86, 86, 2060, 86, 2061, 2070, 86, 86, 86, 86, + 2077, 86, 2072, 2075, 2065, 86, 2063, 2066, 2073, 86, + 2069, 86, 86, 86, 2076, 86, 2071, 86, 2074, 86, + 2080, 86, 2083, 86, 2081, 2087, 2078, 2079, 2086, 86, - 86, 2076, 86, 86, 86, 2080, 2088, 86, 2087, 86, - 86, 86, 86, 2092, 2084, 86, 2095, 2096, 86, 2097, - 86, 2091, 86, 86, 2089, 86, 2090, 86, 86, 2093, - 86, 2100, 86, 2099, 86, 2104, 2105, 86, 2094, 86, - 2098, 86, 2102, 86, 2110, 2109, 86, 2101, 86, 2107, - 2103, 2106, 2111, 2113, 86, 86, 86, 2112, 2108, 2114, - 2117, 86, 86, 86, 86, 86, 86, 2115, 86, 2121, - 2124, 86, 2116, 86, 86, 86, 86, 2119, 2127, 2129, - 86, 86, 2130, 2118, 2120, 86, 2122, 2128, 2123, 2125, - 2126, 86, 86, 86, 2132, 2131, 2136, 86, 2137, 86, + 2090, 86, 86, 86, 86, 2085, 86, 2082, 86, 2089, + 2091, 2093, 86, 2084, 2094, 86, 86, 86, 86, 2088, + 86, 2095, 2092, 86, 2097, 86, 2100, 2096, 86, 86, + 2103, 2098, 2099, 2104, 2105, 86, 86, 86, 86, 86, + 86, 2108, 86, 2101, 86, 2113, 86, 86, 86, 2112, + 86, 2107, 86, 86, 2102, 2106, 2117, 2109, 2110, 86, + 2118, 86, 2120, 2115, 2111, 86, 2114, 2119, 86, 2116, + 2121, 86, 2122, 2125, 86, 86, 2123, 86, 86, 86, + 86, 2124, 86, 2132, 2129, 86, 86, 86, 86, 86, + 86, 2127, 2135, 86, 2137, 86, 2126, 2128, 86, 2138, - 2138, 2140, 86, 2133, 2141, 2139, 86, 86, 2134, 86, - 86, 86, 2145, 2135, 2143, 86, 86, 86, 86, 86, - 2147, 86, 86, 2144, 2150, 2152, 86, 2146, 2142, 2148, - 86, 86, 2153, 86, 170, 86, 86, 86, 3444, 2156, - 86, 2154, 86, 2151, 2149, 2160, 2155, 2157, 2158, 86, - 86, 2162, 2161, 2163, 86, 2166, 2159, 2164, 86, 86, - 86, 86, 2165, 86, 86, 2167, 2169, 86, 2168, 86, - 86, 86, 2171, 2170, 2172, 86, 2174, 86, 86, 2178, - 86, 2173, 2175, 2177, 86, 86, 86, 2183, 86, 2176, - 2180, 2181, 86, 2179, 86, 2182, 86, 86, 86, 86, + 2130, 2134, 2131, 2133, 86, 86, 2136, 86, 2139, 86, + 2143, 2144, 86, 2158, 2140, 2145, 86, 86, 2141, 2146, + 2148, 2149, 2151, 2142, 2147, 86, 86, 86, 86, 86, + 2153, 86, 86, 86, 86, 2150, 86, 2155, 86, 2157, + 2152, 2154, 2159, 2156, 2161, 2162, 86, 86, 86, 86, + 86, 170, 86, 2163, 2160, 86, 2165, 86, 86, 2171, + 86, 2166, 2169, 2170, 2167, 2172, 86, 2164, 2173, 86, + 86, 2175, 86, 86, 2168, 86, 86, 86, 2176, 2178, + 2177, 86, 86, 86, 86, 2179, 2180, 2181, 86, 2183, + 2174, 86, 86, 86, 2182, 2184, 86, 2186, 2187, 86, - 86, 86, 2190, 2188, 86, 2185, 2189, 86, 86, 86, - 86, 2195, 86, 2192, 2184, 2186, 86, 2187, 2191, 86, - 86, 2200, 2196, 2194, 86, 2193, 86, 86, 2198, 86, - 2197, 86, 86, 2201, 2204, 2207, 2199, 86, 2202, 2206, - 86, 86, 86, 86, 2205, 2212, 86, 86, 2203, 86, - 2214, 86, 86, 2208, 2215, 2217, 2211, 2209, 2210, 2216, - 86, 2218, 86, 2213, 86, 2219, 86, 86, 2222, 86, - 86, 86, 86, 2221, 86, 86, 2223, 86, 2226, 86, - 86, 2227, 86, 86, 86, 86, 86, 86, 86, 2220, - 86, 2225, 2224, 2235, 2229, 2230, 2228, 2232, 86, 2231, + 86, 2189, 2188, 2185, 86, 2190, 86, 2191, 2192, 86, + 86, 86, 86, 86, 86, 86, 2199, 2197, 86, 2194, + 2198, 86, 86, 86, 86, 2204, 2193, 2201, 86, 2195, + 86, 2196, 2200, 86, 86, 2209, 2205, 2203, 86, 2202, + 86, 86, 2207, 86, 86, 86, 2206, 2210, 2213, 86, + 2208, 86, 2211, 2215, 86, 86, 86, 2214, 2216, 86, + 86, 2217, 2212, 2221, 86, 2218, 2219, 86, 2223, 86, + 2220, 86, 2226, 2224, 2225, 86, 2222, 2227, 86, 86, + 2228, 86, 2231, 2229, 86, 86, 86, 2230, 86, 86, + 2235, 2232, 86, 86, 86, 86, 86, 86, 86, 86, - 2237, 2234, 2239, 2240, 86, 2233, 2236, 86, 86, 86, - 86, 2238, 2243, 2244, 86, 86, 2241, 2247, 86, 2246, - 86, 86, 86, 86, 86, 2249, 86, 2242, 2250, 86, - 2245, 2251, 86, 2253, 2255, 86, 2248, 2257, 2254, 86, - 86, 2252, 2258, 86, 2260, 86, 86, 86, 2256, 2259, - 86, 2262, 2263, 86, 86, 86, 2268, 86, 2264, 2265, - 86, 86, 86, 2272, 86, 2261, 2269, 2267, 2273, 86, - 2270, 86, 2271, 2266, 86, 2277, 86, 86, 2278, 2274, - 86, 86, 86, 2275, 2281, 86, 86, 2282, 2276, 86, - 86, 2283, 2287, 86, 2285, 2279, 86, 86, 2289, 86, + 86, 2236, 86, 86, 2249, 86, 2234, 2233, 2238, 2239, + 2240, 2241, 86, 2243, 2237, 2248, 86, 86, 2244, 86, + 2242, 86, 2246, 2247, 2252, 86, 86, 86, 2256, 86, + 2253, 2245, 2255, 86, 2250, 86, 86, 2251, 2258, 2254, + 86, 86, 2259, 86, 86, 2260, 2264, 2257, 86, 86, + 2262, 2266, 86, 86, 2267, 2263, 86, 86, 2261, 2269, + 86, 2271, 86, 2268, 2272, 86, 86, 2265, 86, 86, + 2273, 2274, 2277, 86, 86, 86, 2281, 86, 86, 2270, + 2278, 2282, 86, 86, 86, 2280, 2275, 2279, 86, 2276, + 86, 2283, 2286, 86, 86, 2287, 2284, 86, 2285, 2290, - 2290, 2280, 2286, 2284, 86, 86, 86, 86, 2288, 86, - 2292, 2296, 86, 2291, 86, 2298, 2294, 86, 86, 2295, - 2299, 86, 86, 86, 2293, 86, 2300, 2301, 2304, 2302, - 2305, 86, 86, 2297, 2303, 86, 86, 2309, 86, 86, - 86, 86, 86, 86, 2306, 2308, 86, 2316, 86, 86, - 86, 86, 2307, 2310, 86, 86, 2312, 2311, 2315, 2320, - 2314, 2317, 2318, 86, 86, 86, 2313, 86, 2319, 2321, - 2327, 2323, 2322, 2325, 2326, 86, 86, 86, 2331, 86, - 86, 2333, 86, 86, 2324, 86, 2330, 86, 86, 2332, - 2336, 2335, 86, 2328, 2339, 170, 86, 3444, 2341, 2345, + 86, 86, 2291, 2288, 86, 86, 2292, 2296, 86, 2294, + 2289, 86, 86, 2298, 86, 2299, 86, 2295, 2293, 86, + 86, 86, 86, 2297, 2301, 2300, 86, 86, 2305, 2307, + 2303, 86, 86, 2304, 2308, 86, 86, 86, 2302, 2309, + 2310, 86, 2313, 2306, 2311, 86, 2314, 86, 2312, 86, + 86, 2318, 86, 86, 86, 86, 86, 86, 2315, 2317, + 86, 86, 2325, 86, 86, 2321, 86, 2316, 86, 86, + 2323, 2319, 2320, 2326, 2329, 2324, 2327, 86, 86, 86, + 2322, 86, 2330, 2328, 86, 2332, 2337, 2331, 86, 2335, + 2334, 86, 2340, 86, 86, 86, 2336, 86, 2333, 86, - 86, 2329, 2334, 2342, 86, 2337, 2343, 2338, 2344, 86, - 86, 86, 86, 86, 86, 2348, 86, 2340, 2346, 86, - 2349, 86, 2352, 2353, 86, 86, 2354, 86, 86, 2347, - 2357, 2364, 2358, 2355, 2350, 2362, 86, 86, 2359, 2360, - 86, 86, 86, 86, 86, 2351, 2356, 2361, 2363, 86, - 86, 86, 86, 2365, 86, 86, 2368, 86, 86, 86, - 2371, 86, 86, 2366, 2377, 86, 2375, 2370, 86, 86, - 86, 86, 2378, 2373, 2380, 2367, 2372, 2369, 86, 2374, - 86, 86, 86, 86, 2376, 2379, 86, 2385, 2388, 86, - 86, 86, 2383, 86, 86, 86, 2382, 2381, 2389, 2386, + 2339, 2342, 86, 2341, 86, 86, 86, 170, 2345, 161, + 2346, 2349, 2347, 2338, 2344, 2343, 2351, 86, 2353, 86, + 2354, 2352, 86, 86, 86, 2348, 86, 86, 86, 2350, + 2355, 2356, 2358, 86, 86, 2359, 86, 2362, 86, 2357, + 2363, 86, 86, 2364, 2367, 86, 86, 86, 2365, 2360, + 86, 2368, 86, 2369, 2370, 86, 2366, 86, 2372, 86, + 2361, 86, 2371, 2373, 86, 2374, 86, 2376, 86, 86, + 2375, 86, 86, 2378, 86, 86, 2381, 86, 86, 86, + 2387, 86, 86, 2385, 86, 86, 2377, 2380, 2388, 86, + 2383, 86, 2379, 2382, 2390, 86, 86, 2384, 86, 86, - 2384, 2387, 86, 86, 86, 86, 86, 86, 86, 86, - 2390, 86, 2391, 2402, 86, 2401, 2396, 2392, 86, 2393, - 2400, 2394, 2398, 2404, 2395, 86, 2397, 2399, 2403, 86, - 86, 86, 2666, 2405, 86, 86, 2409, 86, 2406, 2410, - 86, 86, 86, 2411, 86, 2407, 86, 2408, 2412, 86, - 86, 2415, 2413, 2416, 86, 2414, 2417, 2418, 86, 2419, - 86, 86, 86, 86, 86, 2427, 2420, 2421, 2425, 86, - 2426, 86, 2428, 86, 2422, 86, 2424, 2430, 86, 86, - 86, 2433, 86, 2423, 86, 2432, 2434, 86, 86, 86, - 86, 86, 86, 2429, 2431, 86, 86, 2436, 2435, 86, + 2389, 2386, 86, 2395, 2398, 86, 86, 2393, 2391, 2392, + 86, 86, 2396, 86, 2399, 2394, 86, 86, 86, 86, + 2397, 86, 86, 86, 86, 2412, 86, 86, 86, 2400, + 2401, 2406, 2411, 2413, 86, 2409, 2402, 2404, 2405, 2408, + 2403, 2410, 2407, 86, 86, 86, 86, 2415, 2414, 86, + 86, 2419, 2420, 86, 86, 86, 2421, 3456, 2416, 86, + 2417, 86, 2418, 2422, 86, 86, 2425, 86, 2428, 86, + 2423, 86, 2424, 2429, 86, 86, 2426, 86, 86, 2427, + 2430, 2432, 2431, 2435, 86, 2436, 86, 86, 2438, 86, + 2434, 2433, 86, 2440, 86, 86, 86, 2443, 86, 86, - 2440, 2441, 86, 86, 2438, 2445, 2437, 2443, 86, 86, - 2439, 2442, 2446, 86, 2444, 86, 2447, 2449, 86, 86, - 86, 2452, 2450, 86, 2455, 86, 86, 86, 2451, 86, - 86, 2448, 2460, 86, 2459, 2453, 86, 86, 86, 86, - 2465, 86, 2454, 2462, 2458, 86, 2456, 86, 86, 86, - 2457, 86, 2463, 86, 2464, 2461, 2467, 86, 2472, 86, - 86, 2468, 2474, 86, 86, 2466, 2469, 2475, 2473, 2470, - 2478, 86, 86, 86, 86, 2479, 86, 2480, 2481, 2471, - 86, 86, 2476, 86, 2477, 86, 2485, 2483, 86, 86, - 2487, 2490, 2491, 2488, 86, 86, 2482, 86, 86, 2494, + 2442, 2444, 86, 86, 86, 86, 2437, 86, 86, 86, + 2439, 2441, 2446, 2445, 2450, 2451, 86, 2453, 86, 2448, + 86, 2447, 86, 86, 2457, 86, 2449, 2452, 2455, 86, + 2459, 86, 2456, 86, 86, 86, 2462, 86, 2454, 2458, + 2465, 86, 86, 86, 2460, 86, 86, 86, 2461, 86, + 2463, 2469, 2470, 86, 2472, 86, 2464, 86, 2475, 86, + 2468, 86, 2466, 86, 86, 2471, 2467, 86, 86, 86, + 2473, 2477, 2474, 86, 2482, 86, 86, 2478, 2484, 86, + 86, 2476, 2485, 2488, 2483, 2479, 2480, 86, 86, 86, + 86, 86, 2489, 2490, 86, 2481, 2491, 2486, 86, 2487, - 86, 2484, 86, 86, 2489, 86, 86, 2495, 2496, 2486, - 2493, 86, 86, 86, 2499, 2492, 86, 86, 86, 2498, - 86, 2500, 2501, 2505, 2507, 2497, 2502, 2503, 2506, 86, - 2504, 86, 86, 2511, 86, 86, 2510, 86, 2512, 86, - 86, 2509, 86, 2515, 86, 170, 2513, 86, 86, 2514, - 2516, 2508, 86, 2521, 86, 86, 86, 2523, 86, 86, - 86, 86, 86, 2519, 2517, 2529, 2518, 86, 2520, 86, - 2522, 2524, 2525, 2526, 2527, 86, 2532, 86, 2528, 2531, - 2653, 2530, 86, 2533, 2534, 86, 86, 86, 2537, 2535, - 2538, 86, 2536, 86, 86, 86, 86, 2540, 86, 86, + 86, 86, 86, 2493, 86, 2495, 2497, 2498, 2500, 86, + 2501, 86, 2492, 86, 86, 2494, 86, 2504, 2505, 2499, + 86, 86, 86, 86, 2496, 2506, 2503, 86, 86, 86, + 2502, 2509, 86, 86, 86, 2508, 2510, 2515, 2511, 2516, + 86, 2512, 2513, 86, 2517, 86, 2507, 86, 2514, 86, + 86, 86, 2521, 86, 2522, 86, 2523, 86, 2526, 2520, + 86, 170, 2525, 86, 2524, 86, 2527, 2518, 86, 2519, + 2532, 86, 86, 86, 86, 86, 86, 86, 86, 2543, + 86, 2530, 2534, 2528, 2531, 2529, 2535, 2533, 2538, 86, + 86, 2536, 2537, 2539, 2540, 86, 86, 2544, 2541, 2545, - 2539, 86, 2542, 86, 86, 2546, 2547, 2541, 86, 2544, - 86, 2543, 86, 2549, 86, 86, 86, 86, 2550, 2551, - 2552, 86, 2545, 86, 2548, 86, 2554, 86, 2553, 2558, - 86, 2557, 86, 86, 2555, 2556, 86, 86, 2560, 86, - 86, 86, 86, 2567, 2564, 2559, 86, 2566, 86, 86, - 86, 86, 2568, 2563, 86, 86, 2561, 2562, 86, 2572, - 86, 2565, 86, 86, 2582, 2577, 2569, 2576, 86, 2570, - 2571, 86, 2574, 86, 2575, 86, 2573, 2579, 86, 86, - 86, 2578, 2581, 2583, 86, 2585, 86, 2580, 2587, 86, - 2586, 2589, 86, 86, 86, 2591, 86, 86, 86, 86, + 86, 86, 86, 86, 2546, 2548, 2549, 2542, 2547, 86, + 86, 86, 86, 2551, 86, 86, 2552, 86, 2550, 86, + 2553, 2558, 2554, 86, 2557, 86, 86, 86, 86, 2555, + 86, 2560, 2561, 2562, 2563, 86, 2556, 86, 86, 2559, + 86, 86, 2564, 86, 86, 2569, 86, 2565, 2568, 2566, + 86, 86, 86, 86, 86, 2571, 2570, 86, 2575, 86, + 2578, 2567, 86, 86, 2577, 86, 86, 2574, 2579, 86, + 86, 2572, 2573, 86, 86, 2583, 86, 2576, 86, 2588, + 86, 2580, 86, 2587, 2581, 86, 2585, 86, 2582, 2590, + 2589, 86, 2586, 86, 2584, 86, 2593, 86, 86, 2598, - 86, 2588, 2590, 86, 2595, 2584, 86, 86, 86, 86, - 2600, 86, 2593, 2598, 2599, 2592, 2594, 2601, 86, 2602, - 86, 2603, 86, 2604, 86, 86, 86, 2597, 86, 2596, - 86, 2606, 86, 2608, 86, 2611, 86, 86, 86, 2613, - 2609, 2612, 86, 2607, 2605, 86, 2610, 2616, 86, 86, - 86, 86, 2617, 2615, 86, 2614, 86, 2620, 2621, 86, - 86, 2618, 86, 2624, 86, 2622, 2626, 2625, 2619, 2623, - 86, 86, 86, 86, 86, 86, 86, 2630, 2634, 86, - 86, 2633, 2635, 86, 2627, 2628, 2629, 2636, 86, 2637, - 86, 86, 2638, 2631, 86, 2632, 86, 2641, 86, 2640, + 2591, 2594, 86, 2596, 86, 86, 2595, 2592, 2597, 2599, + 2600, 86, 86, 2602, 86, 86, 86, 86, 86, 86, + 86, 2601, 2606, 86, 86, 2611, 86, 86, 2609, 2610, + 2604, 2612, 86, 2603, 2605, 86, 2613, 86, 2614, 86, + 86, 2608, 86, 2615, 2617, 2607, 86, 86, 86, 2619, + 86, 2622, 86, 86, 86, 2624, 2623, 2616, 86, 2618, + 2620, 86, 2621, 2627, 86, 86, 86, 86, 2628, 2626, + 86, 2625, 86, 2631, 2632, 86, 86, 2629, 86, 2635, + 86, 2633, 2637, 2636, 2630, 2634, 86, 86, 86, 86, + 86, 86, 86, 2641, 2645, 86, 86, 2644, 2646, 86, - 86, 2642, 86, 86, 86, 86, 86, 86, 86, 2639, - 2643, 2649, 86, 2651, 86, 2645, 2652, 86, 86, 86, - 2654, 86, 2644, 2648, 2646, 2650, 2647, 86, 2655, 86, - 2656, 86, 2658, 2661, 86, 86, 86, 86, 86, 2657, - 86, 86, 170, 86, 2662, 2669, 86, 2671, 86, 2659, - 86, 2660, 2667, 2665, 2670, 86, 86, 2664, 86, 2672, - 86, 86, 2663, 2668, 2678, 86, 2675, 86, 86, 3444, - 2673, 2674, 2680, 2681, 2682, 86, 2683, 86, 86, 2679, - 2676, 86, 2684, 2677, 86, 2685, 86, 2686, 86, 86, - 86, 86, 86, 86, 86, 86, 2687, 86, 86, 2688, + 2638, 2639, 2640, 2647, 86, 2648, 86, 86, 2649, 2642, + 86, 2643, 86, 2652, 86, 2651, 86, 2653, 86, 86, + 86, 86, 86, 86, 86, 2650, 2654, 2660, 86, 2662, + 86, 2656, 2663, 86, 86, 2664, 86, 86, 2655, 2659, + 2657, 2661, 2658, 2666, 86, 86, 2665, 86, 86, 2667, + 2669, 2672, 86, 86, 2674, 86, 86, 86, 86, 86, + 86, 170, 2673, 86, 2668, 86, 2683, 2670, 2671, 86, + 86, 2677, 2681, 2682, 2679, 86, 86, 2676, 2684, 86, + 86, 86, 2675, 2678, 86, 2680, 86, 2690, 86, 86, + 2685, 2686, 86, 2692, 2693, 2694, 86, 2687, 2695, 86, - 2697, 86, 86, 86, 2695, 2690, 86, 86, 2689, 86, - 2692, 2691, 86, 2701, 2694, 2693, 2705, 2696, 2702, 86, - 2699, 2698, 86, 2703, 2700, 2704, 2706, 86, 2708, 86, - 86, 2707, 86, 86, 86, 86, 86, 86, 86, 86, - 2711, 2717, 86, 2718, 86, 86, 86, 86, 2709, 2712, - 2710, 2724, 2721, 2713, 2714, 2715, 2716, 86, 2719, 2722, - 86, 2723, 86, 2720, 86, 2725, 86, 86, 86, 86, - 86, 86, 86, 2729, 2733, 86, 2732, 2734, 86, 2726, - 86, 2728, 2735, 2736, 86, 2727, 86, 86, 86, 2730, - 2731, 86, 86, 86, 2737, 2738, 86, 2742, 2743, 86, + 2691, 86, 2688, 2700, 2689, 86, 2696, 86, 2697, 86, + 2698, 86, 86, 86, 86, 86, 86, 86, 86, 2699, + 86, 86, 2709, 3456, 86, 86, 2707, 2702, 86, 2713, + 2701, 86, 2704, 2703, 2714, 86, 2706, 2705, 2708, 86, + 86, 2710, 2711, 2712, 86, 2715, 2718, 86, 86, 2717, + 2720, 86, 86, 2719, 86, 86, 86, 86, 86, 86, + 86, 2716, 2723, 2729, 86, 86, 2721, 2730, 86, 2724, + 2722, 86, 86, 86, 2725, 2726, 2727, 2728, 2733, 2731, + 2734, 86, 2736, 2732, 2735, 86, 86, 86, 86, 2737, + 86, 86, 2739, 86, 86, 86, 2741, 2745, 86, 2744, - 2740, 86, 86, 2748, 86, 2747, 2739, 86, 86, 2751, - 86, 2741, 86, 86, 86, 86, 2744, 86, 2745, 2754, - 86, 2746, 2749, 2752, 2756, 86, 2750, 86, 2753, 2755, - 2757, 86, 2759, 86, 2762, 86, 86, 86, 2758, 86, - 2766, 86, 86, 2765, 2768, 86, 2764, 2760, 2763, 86, - 86, 86, 86, 2761, 2769, 86, 2774, 86, 86, 2770, - 86, 2767, 86, 2775, 2772, 2777, 86, 2771, 86, 86, - 86, 2783, 86, 2778, 86, 2773, 86, 86, 2780, 2781, - 2776, 2779, 86, 2782, 2786, 86, 86, 2787, 86, 86, - 86, 2788, 2785, 86, 2790, 86, 2784, 86, 2791, 86, + 2747, 2738, 2746, 86, 2740, 2748, 86, 2742, 86, 86, + 86, 86, 86, 2743, 86, 86, 86, 86, 2750, 2754, + 2755, 86, 86, 2752, 86, 2759, 86, 2749, 86, 2751, + 2760, 86, 2753, 2763, 86, 86, 2756, 2758, 86, 2761, + 2757, 86, 2766, 2765, 2762, 86, 2764, 2769, 86, 2768, + 86, 86, 86, 86, 2774, 86, 2767, 86, 86, 86, + 86, 2778, 86, 2770, 2777, 86, 2771, 2776, 86, 2775, + 2780, 86, 2772, 2773, 86, 86, 86, 2782, 2779, 2781, + 86, 2783, 2786, 86, 86, 2787, 86, 2784, 2789, 86, + 86, 86, 86, 2795, 86, 86, 2785, 86, 86, 2790, - 86, 86, 2789, 86, 2793, 2794, 2796, 86, 2797, 2799, - 86, 86, 2792, 86, 2795, 2798, 2800, 86, 2801, 2803, - 170, 86, 86, 86, 2808, 86, 2802, 2805, 2804, 2806, - 86, 86, 86, 2810, 86, 86, 2809, 2813, 86, 2812, - 2811, 2807, 2814, 86, 2816, 86, 86, 2818, 2815, 2817, - 86, 86, 2819, 86, 86, 2820, 2821, 2823, 86, 86, - 86, 86, 2824, 86, 2825, 86, 86, 86, 2822, 2826, - 86, 2830, 2831, 2828, 86, 2832, 2827, 86, 86, 2833, - 86, 2834, 86, 86, 86, 2835, 2836, 2829, 86, 2838, - 86, 86, 86, 2839, 2837, 86, 86, 86, 2844, 86, + 2792, 2793, 2788, 2791, 2794, 2798, 86, 86, 86, 86, + 86, 86, 2799, 2797, 2800, 2802, 86, 2796, 86, 2803, + 86, 86, 2801, 86, 86, 86, 86, 2805, 2806, 2808, + 2809, 2811, 86, 2812, 86, 2804, 2807, 86, 2810, 2815, + 170, 86, 2813, 86, 86, 2814, 86, 2820, 2816, 2817, + 86, 86, 2822, 86, 86, 2821, 86, 86, 2825, 86, + 86, 2818, 2824, 2846, 2819, 2826, 86, 2828, 86, 2823, + 2830, 86, 86, 2827, 2829, 2831, 86, 2832, 86, 86, + 2835, 86, 86, 2833, 86, 2836, 86, 2837, 86, 86, + 86, 86, 86, 2834, 2842, 2843, 2844, 2838, 2840, 2839, - 86, 2842, 86, 3444, 2841, 2843, 2847, 86, 2840, 2845, - 86, 86, 86, 2846, 2852, 86, 2848, 86, 2849, 86, - 86, 86, 2850, 86, 2853, 86, 2851, 86, 2855, 86, - 2854, 2857, 86, 2861, 3444, 2856, 2862, 86, 2859, 86, - 2858, 2864, 2865, 2867, 3444, 2860, 86, 86, 86, 86, - 2868, 86, 2863, 86, 2869, 86, 86, 2866, 2870, 2873, - 86, 86, 86, 2874, 2871, 86, 2875, 86, 86, 2872, - 86, 2878, 2880, 86, 86, 2876, 2881, 86, 2882, 86, - 86, 86, 2877, 86, 2883, 86, 2879, 86, 2884, 2885, - 86, 2889, 2887, 2888, 2886, 86, 2890, 86, 86, 2893, + 86, 86, 86, 86, 2845, 86, 2848, 2847, 86, 86, + 2841, 86, 86, 2850, 2851, 86, 86, 2849, 86, 86, + 2856, 86, 2859, 86, 2854, 2853, 86, 2855, 86, 2852, + 2857, 86, 2860, 86, 2858, 2864, 86, 86, 86, 86, + 86, 86, 2861, 86, 2865, 2869, 86, 86, 2867, 86, + 86, 2862, 2863, 2873, 86, 2868, 3456, 2866, 2871, 2876, + 2870, 2874, 86, 2877, 2879, 86, 86, 2872, 86, 86, + 86, 2882, 2878, 2880, 86, 2875, 2881, 86, 86, 2885, + 86, 86, 86, 2886, 86, 86, 2883, 86, 2887, 86, + 2890, 2884, 2892, 86, 86, 2888, 3456, 2889, 2893, 86, - 2894, 86, 2895, 86, 86, 2892, 86, 2891, 86, 2896, - 2899, 86, 86, 86, 2902, 86, 86, 2897, 86, 2903, - 86, 2898, 2904, 86, 2906, 86, 86, 86, 2910, 86, - 2900, 2905, 86, 2901, 86, 2911, 86, 2913, 2908, 2907, - 86, 2909, 86, 86, 2912, 2915, 86, 2914, 86, 86, - 2916, 86, 2917, 2921, 86, 2920, 86, 2922, 2923, 86, - 2924, 86, 86, 86, 2926, 86, 2918, 2925, 2919, 86, - 86, 86, 2927, 2929, 86, 2930, 2933, 86, 86, 86, - 2937, 86, 2931, 2932, 86, 86, 86, 86, 2928, 2939, - 2949, 86, 86, 2936, 86, 2934, 86, 2940, 2935, 2938, + 2894, 86, 86, 86, 86, 2891, 2895, 86, 2896, 2897, + 86, 86, 2899, 2901, 2898, 86, 2900, 86, 2902, 86, + 86, 2905, 86, 2903, 2906, 86, 2907, 86, 86, 86, + 2909, 2908, 2911, 86, 86, 2904, 2914, 86, 86, 2915, + 2912, 86, 2910, 2916, 86, 2918, 86, 86, 86, 86, + 86, 2922, 2923, 86, 2913, 86, 2917, 86, 2925, 2924, + 2919, 86, 86, 2921, 86, 2927, 2920, 2926, 86, 86, + 2928, 86, 2933, 2929, 86, 2932, 86, 86, 86, 86, + 2935, 2930, 2936, 86, 2937, 2938, 86, 86, 2931, 2939, + 86, 86, 2942, 2941, 86, 86, 86, 86, 86, 2934, - 2943, 2941, 2944, 2942, 2946, 86, 2950, 2945, 86, 2947, - 86, 86, 2951, 2948, 86, 2952, 86, 2953, 86, 86, - 86, 86, 2957, 86, 2955, 86, 2958, 86, 86, 86, - 2960, 2964, 86, 86, 2954, 86, 2961, 2965, 86, 2979, - 2956, 86, 2959, 86, 2966, 2968, 86, 86, 2962, 2963, - 2969, 2967, 2970, 86, 86, 2972, 86, 86, 86, 2971, - 86, 86, 2978, 86, 86, 2977, 2973, 2974, 86, 2975, - 2976, 86, 2984, 2980, 86, 86, 86, 2985, 86, 86, - 86, 86, 2982, 2988, 86, 2987, 2989, 2981, 2986, 2983, - 2990, 86, 2991, 86, 2992, 86, 2995, 86, 86, 86, + 2945, 2949, 86, 86, 86, 2956, 86, 86, 2948, 86, + 2957, 86, 2940, 2943, 2944, 2946, 86, 2950, 2947, 2951, + 2953, 86, 86, 2954, 2995, 2958, 2960, 2952, 86, 2955, + 2959, 86, 2961, 86, 86, 2962, 86, 2963, 86, 2964, + 86, 2965, 86, 86, 2966, 86, 86, 2967, 2969, 86, + 2970, 86, 86, 86, 2972, 2976, 86, 2977, 86, 86, + 2973, 86, 2978, 2968, 86, 2971, 2980, 86, 2982, 86, + 86, 2981, 2974, 2975, 86, 2983, 2984, 86, 86, 2979, + 86, 86, 86, 2985, 2990, 86, 86, 2986, 86, 2987, + 2988, 86, 2991, 86, 86, 2992, 2996, 86, 86, 86, - 86, 86, 86, 86, 3002, 86, 2999, 2996, 86, 2993, - 86, 2997, 3000, 2994, 86, 86, 86, 3003, 86, 3005, - 3006, 3009, 3001, 86, 3007, 2998, 86, 3008, 86, 3004, - 86, 3012, 3014, 86, 3013, 3015, 86, 3016, 86, 3010, - 86, 86, 3011, 86, 3444, 86, 3021, 86, 86, 3017, - 3020, 86, 86, 3022, 3024, 86, 3023, 86, 86, 86, - 86, 3018, 3019, 86, 3028, 3025, 3030, 3032, 86, 3026, - 86, 86, 86, 86, 3033, 86, 3034, 86, 3029, 3027, - 3035, 86, 3036, 86, 86, 3041, 86, 86, 3031, 86, - 86, 86, 3037, 86, 3044, 86, 86, 3040, 3038, 3039, + 2989, 2997, 86, 3000, 2994, 86, 2999, 2998, 86, 86, + 2993, 3002, 86, 3001, 3003, 86, 3007, 86, 86, 3004, + 86, 86, 86, 3005, 86, 86, 86, 3006, 3014, 3008, + 3009, 3011, 86, 3012, 86, 86, 86, 3015, 86, 3019, + 3017, 3018, 3013, 86, 86, 86, 3010, 86, 86, 3021, + 86, 3024, 3020, 3016, 3025, 3026, 86, 3029, 3022, 3027, + 86, 3023, 3028, 86, 86, 86, 86, 3033, 86, 86, + 3032, 86, 86, 86, 3034, 86, 3035, 3036, 86, 86, + 86, 3044, 86, 86, 3030, 3031, 3037, 3038, 3040, 3042, + 86, 86, 86, 3039, 3045, 86, 3046, 3041, 86, 86, - 3042, 86, 3043, 86, 3045, 86, 3050, 3046, 3049, 3048, - 86, 86, 3047, 86, 3052, 3054, 86, 3056, 86, 3051, - 3057, 86, 86, 3059, 86, 86, 86, 86, 86, 86, - 86, 86, 3055, 3062, 86, 3064, 86, 3053, 3065, 86, - 3067, 3060, 3061, 3058, 3068, 3063, 86, 3066, 86, 3071, - 86, 86, 3074, 86, 86, 3070, 3076, 3069, 86, 86, - 3072, 86, 86, 3077, 3079, 86, 3080, 86, 86, 86, - 3073, 3083, 86, 86, 3075, 86, 3081, 3088, 86, 86, - 3085, 3078, 3086, 86, 86, 3092, 86, 86, 3082, 86, - 86, 3084, 3094, 3095, 86, 3087, 3090, 3089, 86, 3091, + 3048, 86, 86, 3047, 86, 3043, 3053, 86, 86, 86, + 86, 3049, 86, 86, 3056, 86, 3050, 3051, 86, 86, + 86, 3054, 3055, 3060, 3052, 3061, 86, 3057, 3058, 86, + 3062, 86, 3059, 3066, 86, 3063, 86, 3064, 3068, 86, + 3069, 86, 86, 3071, 86, 86, 86, 86, 86, 86, + 3077, 86, 3074, 86, 3076, 3067, 86, 3065, 86, 86, + 3080, 3072, 3073, 3070, 3075, 3079, 86, 86, 3083, 86, + 86, 3086, 86, 3078, 86, 86, 3088, 86, 3082, 86, + 3089, 3081, 86, 3084, 3091, 86, 3092, 86, 86, 3085, + 86, 3095, 86, 86, 3087, 86, 86, 86, 3101, 3090, - 86, 3096, 3093, 3099, 3100, 86, 3097, 86, 3102, 86, - 3101, 86, 86, 86, 86, 3105, 86, 3104, 3098, 86, - 3108, 86, 3111, 86, 3106, 86, 86, 86, 86, 3103, - 86, 86, 3107, 3116, 86, 86, 3444, 3112, 3109, 3110, - 86, 3120, 86, 3115, 86, 3113, 3121, 86, 86, 3119, - 3117, 3118, 86, 3114, 86, 3125, 86, 3122, 3123, 3124, - 3126, 86, 3127, 86, 86, 3130, 86, 86, 3132, 86, - 86, 86, 3131, 86, 3129, 86, 86, 3128, 86, 3138, - 3139, 86, 86, 86, 86, 3133, 86, 86, 3145, 86, - 3146, 86, 3134, 3147, 3136, 3135, 3144, 86, 3137, 86, + 3100, 86, 86, 3093, 3097, 3098, 86, 3104, 86, 3102, + 3094, 3096, 86, 86, 86, 3099, 3106, 3105, 86, 86, + 3456, 3103, 3107, 86, 3108, 3111, 3109, 3112, 86, 3114, + 86, 86, 3110, 3113, 86, 86, 3115, 3117, 86, 3116, + 86, 86, 3120, 86, 86, 3118, 3123, 86, 86, 86, + 86, 86, 3128, 86, 86, 3124, 86, 86, 3132, 86, + 3119, 3121, 3122, 86, 3127, 86, 3131, 3125, 3133, 86, + 3134, 86, 3130, 3129, 86, 3126, 3136, 3135, 3137, 86, + 3138, 86, 3139, 86, 86, 3142, 86, 3140, 86, 3144, + 86, 86, 86, 3143, 86, 86, 86, 86, 3150, 3151, - 3142, 86, 3141, 86, 3143, 86, 3152, 86, 3140, 86, - 3150, 3153, 86, 86, 3154, 3156, 86, 3148, 86, 86, - 3149, 86, 3159, 86, 3151, 86, 3158, 3155, 3157, 86, - 3160, 86, 86, 3161, 86, 86, 3162, 86, 86, 3163, - 3165, 86, 86, 3167, 86, 86, 3166, 86, 3444, 3168, - 86, 86, 3164, 86, 86, 86, 86, 3169, 86, 3177, - 3178, 3181, 3170, 3172, 3171, 3180, 3173, 3179, 3174, 3175, - 86, 86, 86, 3183, 3176, 3185, 86, 86, 3182, 3186, - 86, 3187, 3188, 86, 86, 3184, 86, 3191, 86, 3189, - 3192, 86, 3193, 3194, 86, 86, 3195, 3196, 3200, 86, + 86, 86, 86, 86, 86, 3145, 3157, 86, 3158, 86, + 3141, 86, 86, 3159, 3146, 3148, 3147, 3149, 3154, 86, + 3156, 3153, 86, 3155, 86, 86, 86, 3152, 86, 3162, + 3164, 86, 3160, 3165, 86, 86, 86, 3168, 3169, 86, + 3166, 3161, 3167, 86, 3170, 86, 3163, 3171, 86, 86, + 3172, 86, 86, 3173, 86, 86, 3174, 86, 86, 3175, + 3177, 86, 86, 3179, 86, 86, 3178, 86, 3456, 3180, + 86, 86, 3176, 86, 86, 86, 86, 3181, 86, 3189, + 3190, 3193, 3182, 3184, 3183, 3192, 3185, 3191, 3186, 3187, + 86, 86, 86, 3195, 3188, 3197, 86, 86, 3194, 3198, - 3197, 86, 86, 3198, 3199, 3190, 86, 3201, 86, 3203, - 86, 86, 86, 86, 86, 86, 86, 3202, 3209, 86, - 3208, 86, 86, 86, 86, 86, 3205, 86, 3213, 3204, - 3212, 3214, 86, 3206, 3207, 86, 3210, 3217, 3218, 86, - 3215, 86, 3220, 86, 3219, 3216, 3211, 3221, 86, 3222, - 86, 86, 86, 86, 3227, 86, 3224, 3229, 3223, 3228, - 86, 3225, 86, 86, 3226, 86, 86, 86, 3236, 86, - 3231, 3233, 3234, 3237, 86, 3239, 86, 86, 3230, 86, - 3238, 3240, 86, 3232, 3235, 86, 3243, 86, 3244, 86, - 3242, 86, 3241, 3246, 86, 3247, 86, 3248, 86, 86, + 86, 3199, 3200, 86, 86, 3196, 86, 3203, 86, 3201, + 3204, 86, 3205, 3206, 86, 86, 3207, 3208, 3212, 86, + 3209, 86, 86, 3210, 3211, 3202, 86, 3213, 86, 3215, + 86, 86, 86, 86, 86, 86, 86, 3214, 3221, 86, + 3220, 86, 86, 86, 86, 86, 3217, 86, 3225, 3216, + 3224, 3226, 86, 3218, 3219, 86, 3222, 3229, 3230, 86, + 3227, 86, 3232, 86, 3231, 3228, 3223, 3233, 86, 3234, + 86, 86, 86, 86, 3239, 86, 3236, 3241, 3235, 3240, + 86, 3237, 86, 86, 3238, 86, 86, 86, 3248, 86, + 3243, 3245, 3246, 3249, 86, 3251, 86, 86, 3242, 86, - 3245, 3249, 86, 3250, 86, 3251, 86, 3252, 86, 3253, - 86, 86, 3256, 86, 86, 86, 86, 3260, 86, 86, - 3255, 3262, 86, 3257, 86, 3254, 86, 3258, 86, 86, - 86, 86, 3266, 3267, 86, 86, 3259, 86, 3261, 3263, - 3271, 3264, 3265, 86, 3268, 3269, 86, 86, 3273, 3276, - 86, 86, 3272, 3270, 3275, 86, 86, 86, 86, 86, - 86, 3274, 3278, 86, 3277, 3282, 86, 86, 86, 3283, - 3284, 86, 86, 86, 3288, 3279, 3280, 3287, 86, 3281, - 3290, 86, 3285, 3291, 86, 86, 3289, 3292, 86, 86, - 86, 86, 86, 86, 3286, 3295, 86, 86, 3294, 86, + 3250, 3252, 86, 3244, 3247, 86, 3255, 86, 3256, 86, + 3254, 86, 3253, 3258, 86, 3259, 86, 3260, 86, 86, + 3257, 3261, 86, 3262, 86, 3263, 86, 3264, 86, 3265, + 86, 86, 3268, 86, 86, 86, 86, 3272, 86, 86, + 3267, 3274, 86, 3269, 86, 3266, 86, 3270, 86, 86, + 86, 86, 3278, 3279, 86, 86, 3271, 86, 3273, 3275, + 3283, 3276, 3277, 86, 3280, 3281, 86, 86, 3285, 3288, + 86, 86, 3284, 3282, 3287, 86, 86, 86, 86, 86, + 86, 3286, 3290, 86, 3289, 3294, 86, 86, 86, 3295, + 3296, 86, 86, 86, 3300, 3291, 3292, 3299, 86, 3293, - 86, 3293, 3300, 86, 3297, 3296, 86, 3299, 3301, 86, - 3303, 86, 3305, 3304, 3302, 3298, 86, 86, 86, 86, - 86, 3306, 86, 86, 86, 3312, 86, 3307, 3310, 3314, - 3311, 86, 3309, 3315, 86, 86, 3317, 3318, 3320, 86, - 86, 3308, 86, 3313, 3322, 86, 3316, 86, 3323, 3321, - 3324, 86, 3325, 86, 86, 3319, 86, 86, 86, 3328, - 86, 3326, 3329, 3330, 86, 3333, 86, 86, 86, 86, - 86, 86, 3336, 86, 3327, 3337, 86, 3339, 86, 3332, - 3334, 3335, 3340, 86, 86, 3331, 3343, 86, 3338, 3342, - 86, 3345, 3346, 86, 86, 3347, 86, 86, 86, 3341, + 3302, 86, 3297, 3303, 86, 86, 3301, 3304, 86, 86, + 86, 86, 86, 86, 3298, 3307, 86, 86, 3306, 86, + 86, 3305, 3312, 86, 3309, 3308, 86, 3311, 3313, 86, + 3315, 86, 3317, 3316, 3314, 3310, 86, 86, 86, 86, + 86, 3318, 86, 86, 86, 3324, 86, 3319, 3322, 3326, + 3323, 86, 3321, 3327, 86, 86, 3329, 3330, 3332, 86, + 86, 3320, 86, 3325, 3334, 86, 3328, 86, 3335, 3333, + 3336, 86, 3337, 86, 86, 3331, 86, 86, 86, 3340, + 86, 3338, 3341, 3342, 86, 3345, 86, 86, 86, 86, + 86, 86, 3348, 86, 3339, 3349, 86, 3351, 86, 3344, - 3350, 3351, 86, 86, 3348, 3344, 86, 86, 86, 3356, - 86, 86, 3352, 3355, 86, 3353, 3349, 3357, 86, 86, - 86, 86, 3354, 86, 3361, 86, 86, 86, 3363, 86, - 86, 86, 3358, 3360, 3359, 3368, 3369, 3370, 86, 3365, - 3366, 3362, 86, 86, 3364, 86, 3374, 86, 3367, 86, - 3376, 86, 3377, 86, 3375, 86, 86, 86, 3378, 3382, - 3379, 3372, 3371, 86, 3373, 86, 3383, 86, 3380, 86, - 3385, 86, 86, 86, 3384, 86, 3381, 3386, 86, 86, - 3391, 86, 3388, 86, 86, 3394, 86, 3395, 86, 86, - 86, 3387, 86, 86, 3398, 86, 3393, 3389, 3390, 3396, + 3346, 3347, 3352, 86, 86, 3343, 3355, 86, 3350, 3354, + 86, 3357, 3358, 86, 86, 3359, 86, 86, 86, 3353, + 3362, 3363, 86, 86, 3360, 3356, 86, 86, 86, 3368, + 86, 86, 3364, 3367, 86, 3365, 3361, 3369, 86, 86, + 86, 86, 3366, 86, 3373, 86, 86, 86, 3375, 86, + 86, 86, 3370, 3372, 3371, 3380, 3381, 3382, 86, 3377, + 3378, 3374, 86, 86, 3376, 86, 3386, 86, 3379, 86, + 3388, 86, 3389, 86, 3387, 86, 86, 86, 3390, 3394, + 3391, 3384, 3383, 86, 3385, 86, 3395, 86, 3392, 86, + 3397, 86, 86, 86, 3396, 86, 3393, 3398, 86, 86, - 3392, 86, 3397, 86, 3402, 86, 3403, 86, 3401, 86, - 3406, 3399, 3400, 86, 86, 3408, 86, 3409, 3404, 86, - 86, 86, 3413, 86, 3410, 86, 86, 3411, 3415, 86, - 3414, 86, 3407, 3405, 3416, 86, 3417, 86, 3418, 86, - 3412, 86, 3422, 86, 3420, 86, 86, 86, 86, 86, - 86, 3424, 3425, 86, 3428, 86, 3419, 3429, 86, 3444, - 3421, 86, 3432, 86, 3423, 3433, 86, 3426, 3427, 3430, - 3434, 3435, 86, 86, 3431, 3436, 86, 86, 86, 86, - 3437, 86, 3438, 3439, 3442, 86, 3443, 86, 3444, 3444, - 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3440, 3444, + 3403, 86, 3400, 86, 86, 3406, 86, 3407, 86, 86, + 86, 3399, 86, 86, 3410, 86, 3405, 3401, 3402, 3408, + 3404, 86, 3409, 86, 3414, 86, 3415, 86, 3413, 86, + 3418, 3411, 3412, 86, 86, 3420, 86, 3421, 3416, 86, + 86, 86, 3425, 86, 3422, 86, 86, 3423, 3427, 86, + 3426, 86, 3419, 3417, 3428, 86, 3429, 86, 3430, 86, + 3424, 86, 3434, 86, 3432, 86, 86, 86, 86, 86, + 86, 3436, 3437, 86, 3440, 86, 3431, 3441, 86, 3456, + 3433, 86, 3444, 86, 3435, 3445, 86, 3438, 3439, 3442, + 3446, 3447, 86, 86, 3443, 3448, 86, 86, 86, 86, - 3441, 47, 47, 47, 47, 47, 47, 47, 52, 52, + 3449, 86, 3450, 3451, 3454, 86, 3455, 86, 3456, 3456, + 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3452, 3456, + 3453, 47, 47, 47, 47, 47, 47, 47, 52, 52, 52, 52, 52, 52, 52, 57, 57, 57, 57, 57, 57, 57, 63, 63, 63, 63, 63, 63, 63, 68, 68, 68, 68, 68, 68, 68, 74, 74, 74, 74, 74, 74, 74, 80, 80, 80, 80, 80, 80, 80, - 89, 89, 3444, 89, 89, 89, 89, 160, 160, 3444, - 3444, 3444, 160, 160, 162, 162, 3444, 3444, 162, 3444, - 162, 164, 3444, 3444, 3444, 3444, 3444, 164, 167, 167, - 3444, 3444, 3444, 167, 167, 169, 3444, 3444, 3444, 3444, - 3444, 169, 171, 171, 3444, 171, 171, 171, 171, 174, + 89, 89, 3456, 89, 89, 89, 89, 160, 160, 3456, + 3456, 3456, 160, 160, 162, 162, 3456, 3456, 162, 3456, + 162, 164, 3456, 3456, 3456, 3456, 3456, 164, 167, 167, - 3444, 3444, 3444, 3444, 3444, 174, 177, 177, 3444, 3444, - 3444, 177, 177, 90, 90, 3444, 90, 90, 90, 90, - 17, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, - 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, - 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, - 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, - 3444 + 3456, 3456, 3456, 167, 167, 169, 3456, 3456, 3456, 3456, + 3456, 169, 171, 171, 3456, 171, 171, 171, 171, 174, + 3456, 3456, 3456, 3456, 3456, 174, 177, 177, 3456, 3456, + 3456, 177, 177, 90, 90, 3456, 90, 90, 90, 90, + 17, 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, + 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, + 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, + 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, + 3456 } ; -static const flex_int16_t yy_chk[6762] = +static const flex_int16_t yy_chk[6782] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2314,18 +2319,18 @@ static const flex_int16_t yy_chk[6762] = 5, 3, 6, 24, 4, 24, 24, 5, 24, 6, 7, 7, 7, 7, 24, 7, 8, 8, 8, 8, 33, 8, 7, 9, 9, 9, 26, 26, 8, 10, - 10, 10, 19, 29, 9, 33, 19, 29, 3452, 35, + 10, 10, 19, 29, 9, 33, 19, 29, 3464, 35, 10, 11, 11, 11, 11, 11, 11, 13, 13, 13, 13, 34, 13, 11, 35, 99, 34, 29, 38, 13, 51, 51, 11, 12, 12, 12, 12, 12, 12, 14, 14, 14, 14, 99, 14, 12, 15, 15, 15, 38, 23, 14, 23, 23, 12, 23, 46, 15, 16, 16, - 16, 23, 23, 25, 27, 27, 25, 25, 2803, 16, + 16, 23, 23, 25, 27, 27, 25, 25, 2815, 16, 25, 46, 27, 30, 30, 25, 27, 56, 40, 27, 56, 73, 31, 31, 25, 28, 67, 67, 30, 32, 28, 31, 40, 32, 28, 73, 32, 28, 92, 28, - 28, 92, 31, 32, 1117, 32, 36, 36, 37, 37, + 28, 92, 31, 32, 1121, 32, 36, 36, 37, 37, 28, 45, 45, 37, 97, 36, 45, 97, 41, 41, 45, 36, 87, 41, 93, 36, 87, 37, 93, 37, @@ -2364,9 +2369,9 @@ static const flex_int16_t yy_chk[6762] = 200, 201, 202, 197, 203, 204, 201, 202, 205, 197, 197, 199, 196, 206, 205, 207, 203, 206, 208, 200, 207, 209, 213, 210, 211, 204, 214, 213, 216, 217, - 555, 214, 218, 216, 208, 209, 211, 205, 210, 211, + 556, 214, 218, 216, 208, 209, 211, 205, 210, 211, 215, 215, 220, 220, 215, 219, 215, 221, 218, 217, - 222, 219, 223, 221, 555, 224, 222, 227, 215, 221, + 222, 219, 223, 221, 556, 224, 222, 227, 215, 221, 215, 224, 225, 227, 228, 229, 230, 231, 225, 228, 230, 229, 223, 231, 232, 234, 233, 225, 235, 236, 237, 232, 233, 238, 235, 239, 237, 240, 234, 241, @@ -2407,649 +2412,651 @@ static const flex_int16_t yy_chk[6762] = 381, 167, 373, 384, 385, 376, 378, 373, 379, 382, 373, 374, 374, 385, 374, 386, 381, 391, 384, 394, - 386, 386, 389, 387, 390, 392, 391, 374, 395, 387, - 374, 166, 374, 399, 374, 383, 387, 383, 383, 390, - 393, 389, 396, 400, 392, 394, 393, 383, 395, 383, - 383, 383, 397, 399, 383, 398, 396, 401, 397, 402, - 398, 403, 397, 400, 402, 404, 405, 405, 406, 407, - 408, 404, 401, 409, 411, 412, 403, 414, 398, 409, - 412, 407, 413, 413, 408, 413, 415, 416, 406, 423, - 411, 417, 418, 419, 418, 419, 419, 414, 422, 422, + 386, 386, 389, 387, 390, 392, 391, 374, 396, 387, + 374, 166, 374, 395, 374, 383, 387, 383, 383, 390, + 393, 389, 396, 399, 392, 394, 393, 383, 383, 383, + 383, 383, 397, 395, 383, 398, 400, 401, 397, 402, + 398, 404, 397, 399, 402, 403, 406, 404, 405, 405, + 407, 408, 401, 409, 411, 414, 400, 415, 398, 409, + 403, 416, 407, 412, 417, 408, 406, 418, 412, 418, + 411, 413, 413, 415, 413, 414, 420, 416, 417, 419, - 420, 424, 415, 416, 420, 417, 421, 425, 423, 426, - 421, 428, 427, 419, 433, 430, 424, 432, 433, 431, - 428, 430, 432, 425, 429, 421, 427, 426, 431, 429, - 434, 428, 436, 428, 435, 441, 164, 429, 429, 434, - 435, 429, 429, 437, 438, 443, 440, 439, 438, 437, - 439, 440, 446, 436, 450, 441, 442, 442, 443, 444, - 444, 445, 447, 447, 448, 446, 445, 449, 451, 450, - 448, 449, 452, 453, 454, 454, 455, 452, 453, 456, - 457, 458, 459, 454, 462, 459, 460, 464, 455, 451, - 461, 460, 464, 458, 461, 465, 462, 467, 457, 456, + 420, 419, 419, 421, 422, 422, 423, 421, 424, 426, + 425, 428, 430, 433, 427, 436, 164, 433, 430, 419, + 428, 431, 421, 424, 429, 423, 425, 426, 427, 429, + 431, 428, 441, 428, 432, 434, 436, 429, 429, 432, + 435, 429, 429, 437, 434, 439, 435, 438, 439, 437, + 440, 438, 441, 442, 442, 440, 443, 444, 444, 445, + 446, 447, 447, 449, 445, 448, 450, 449, 451, 443, + 452, 448, 453, 446, 455, 452, 456, 453, 454, 454, + 457, 450, 458, 463, 463, 459, 455, 454, 459, 451, + 460, 462, 465, 461, 458, 460, 456, 461, 457, 464, - 463, 463, 466, 466, 469, 469, 471, 472, 473, 474, - 477, 476, 482, 475, 479, 472, 465, 473, 475, 467, - 480, 481, 477, 483, 484, 487, 482, 471, 162, 483, - 474, 476, 479, 484, 479, 486, 485, 488, 480, 487, - 486, 481, 485, 489, 490, 488, 489, 491, 488, 492, - 493, 494, 496, 495, 494, 492, 497, 498, 490, 495, - 499, 497, 491, 500, 501, 502, 496, 500, 503, 501, - 493, 504, 505, 503, 509, 506, 510, 495, 512, 498, - 502, 499, 512, 513, 511, 514, 518, 504, 506, 515, - 514, 505, 507, 507, 509, 528, 528, 510, 507, 511, + 466, 466, 467, 462, 464, 469, 469, 471, 472, 473, + 474, 477, 475, 465, 476, 479, 472, 475, 473, 480, + 481, 483, 482, 477, 467, 486, 485, 483, 471, 484, + 486, 474, 485, 479, 476, 479, 482, 480, 484, 487, + 481, 488, 489, 490, 491, 489, 493, 494, 492, 488, + 494, 496, 488, 487, 492, 495, 498, 490, 497, 491, + 499, 495, 501, 497, 500, 496, 493, 501, 500, 502, + 503, 504, 505, 506, 509, 503, 510, 513, 498, 495, + 511, 499, 162, 514, 502, 512, 506, 504, 514, 512, + 554, 505, 507, 507, 509, 511, 513, 510, 507, 515, - 507, 518, 513, 516, 517, 515, 507, 516, 507, 517, - 519, 507, 507, 517, 520, 519, 521, 522, 507, 523, - 524, 525, 526, 522, 525, 521, 527, 529, 522, 531, - 520, 530, 530, 520, 523, 532, 524, 534, 533, 535, - 537, 538, 539, 536, 531, 526, 527, 532, 536, 537, - 542, 543, 529, 533, 548, 543, 534, 539, 540, 542, - 538, 535, 544, 545, 540, 546, 544, 547, 550, 545, - 549, 551, 552, 548, 553, 558, 552, 546, 554, 160, - 554, 558, 547, 550, 549, 556, 559, 553, 560, 551, - 557, 557, 561, 556, 560, 563, 562, 564, 559, 562, + 507, 516, 518, 554, 517, 516, 507, 520, 507, 517, + 526, 507, 507, 517, 519, 515, 521, 518, 507, 519, + 523, 522, 524, 520, 527, 521, 520, 522, 525, 528, + 528, 525, 522, 526, 529, 523, 530, 530, 524, 531, + 532, 533, 534, 534, 527, 535, 536, 539, 537, 538, + 540, 541, 532, 537, 531, 546, 533, 541, 538, 529, + 543, 546, 548, 544, 535, 540, 539, 544, 536, 543, + 545, 547, 549, 550, 545, 551, 552, 548, 553, 555, + 557, 555, 553, 547, 558, 558, 559, 550, 557, 560, + 551, 549, 559, 561, 552, 562, 564, 563, 565, 561, - 565, 567, 568, 566, 561, 565, 566, 85, 569, 563, - 567, 570, 564, 569, 569, 571, 571, 567, 568, 573, - 567, 572, 572, 578, 570, 573, 574, 574, 575, 575, - 576, 579, 577, 582, 586, 581, 576, 577, 577, 580, - 581, 583, 580, 579, 578, 584, 585, 587, 584, 583, - 588, 585, 582, 589, 588, 591, 590, 586, 592, 589, - 590, 593, 595, 592, 594, 594, 587, 596, 598, 597, - 599, 601, 600, 591, 597, 593, 601, 595, 600, 602, - 604, 605, 605, 603, 598, 606, 603, 608, 596, 607, - 599, 603, 608, 602, 603, 603, 609, 610, 604, 611, + 563, 560, 567, 566, 569, 567, 568, 562, 566, 581, + 564, 570, 581, 565, 571, 568, 570, 570, 572, 572, + 569, 579, 568, 573, 573, 568, 574, 571, 575, 575, + 576, 576, 574, 577, 580, 578, 583, 584, 582, 577, + 578, 578, 579, 582, 585, 584, 580, 585, 586, 587, + 588, 590, 589, 586, 591, 583, 589, 590, 591, 592, + 593, 594, 595, 595, 596, 593, 597, 599, 598, 588, + 600, 602, 587, 598, 601, 594, 602, 592, 603, 596, + 601, 605, 607, 599, 609, 604, 608, 597, 604, 609, + 600, 611, 603, 604, 606, 606, 604, 604, 610, 605, - 613, 609, 620, 606, 614, 607, 613, 615, 616, 621, - 615, 610, 616, 614, 611, 617, 618, 619, 620, 618, - 617, 622, 619, 623, 624, 625, 627, 621, 622, 624, - 626, 626, 628, 629, 616, 627, 623, 630, 631, 80, - 632, 635, 633, 634, 635, 625, 642, 631, 633, 634, - 639, 628, 632, 630, 629, 636, 636, 637, 636, 638, - 637, 640, 641, 643, 638, 642, 644, 641, 639, 643, - 645, 644, 647, 648, 646, 640, 645, 646, 648, 649, - 650, 651, 652, 653, 649, 649, 654, 652, 657, 653, - 655, 656, 660, 650, 651, 660, 656, 647, 666, 655, + 607, 612, 608, 610, 614, 611, 615, 618, 616, 617, + 614, 616, 618, 617, 619, 615, 612, 619, 620, 622, + 621, 623, 625, 620, 626, 624, 629, 625, 623, 627, + 627, 628, 630, 631, 632, 617, 621, 622, 624, 633, + 628, 634, 635, 632, 626, 629, 640, 634, 635, 631, + 643, 633, 636, 630, 641, 636, 637, 637, 638, 637, + 639, 638, 642, 648, 640, 639, 644, 642, 641, 643, + 645, 646, 644, 647, 649, 645, 647, 646, 650, 649, + 651, 652, 653, 650, 650, 654, 655, 653, 648, 656, + 657, 654, 658, 651, 652, 657, 659, 659, 656, 660, - 659, 652, 652, 658, 658, 654, 661, 659, 657, 662, - 660, 663, 661, 664, 665, 665, 663, 668, 664, 664, - 667, 662, 667, 666, 670, 669, 663, 669, 671, 672, - 673, 674, 675, 676, 677, 678, 668, 676, 675, 679, - 680, 681, 670, 677, 682, 685, 671, 672, 683, 673, - 678, 674, 686, 684, 679, 687, 682, 688, 680, 684, - 681, 689, 690, 683, 691, 685, 686, 687, 691, 692, - 693, 694, 695, 696, 697, 75, 688, 699, 699, 697, - 698, 690, 689, 701, 700, 702, 693, 692, 700, 694, - 695, 695, 696, 704, 698, 703, 705, 701, 706, 707, + 661, 653, 653, 661, 662, 655, 660, 663, 664, 665, + 662, 667, 658, 664, 665, 665, 666, 666, 661, 663, + 668, 669, 668, 664, 670, 671, 670, 672, 673, 674, + 675, 676, 678, 681, 677, 683, 667, 676, 677, 679, + 669, 678, 680, 671, 682, 672, 673, 683, 674, 684, + 675, 681, 685, 686, 679, 687, 688, 680, 685, 689, + 690, 691, 692, 682, 684, 693, 692, 695, 688, 687, + 694, 696, 697, 686, 698, 700, 700, 160, 689, 698, + 691, 690, 699, 693, 701, 695, 694, 702, 701, 696, + 696, 697, 703, 704, 705, 706, 699, 707, 708, 709, - 708, 705, 709, 710, 702, 711, 703, 704, 710, 709, - 712, 713, 711, 708, 706, 712, 713, 714, 707, 715, - 716, 718, 717, 721, 728, 719, 715, 720, 721, 716, - 718, 722, 724, 720, 722, 714, 717, 719, 723, 725, - 726, 736, 723, 727, 735, 728, 724, 736, 725, 729, - 729, 730, 730, 731, 731, 726, 732, 727, 733, 737, - 730, 732, 738, 735, 739, 740, 738, 733, 741, 742, - 743, 745, 746, 744, 747, 742, 739, 750, 743, 737, - 744, 757, 753, 74, 756, 759, 741, 757, 766, 745, - 740, 759, 750, 756, 747, 760, 761, 746, 748, 753, + 706, 702, 710, 713, 704, 711, 716, 712, 705, 710, + 711, 703, 709, 707, 712, 714, 715, 708, 717, 718, + 714, 715, 719, 720, 716, 717, 721, 713, 718, 722, + 724, 726, 720, 724, 723, 722, 719, 725, 721, 723, + 727, 725, 728, 730, 729, 726, 731, 731, 737, 727, + 732, 732, 733, 733, 735, 734, 738, 728, 729, 732, + 734, 739, 738, 735, 730, 740, 741, 737, 742, 740, + 743, 744, 745, 747, 748, 746, 749, 744, 741, 752, + 745, 739, 746, 758, 755, 765, 765, 85, 743, 759, + 763, 747, 758, 742, 752, 759, 749, 761, 762, 748, - 748, 762, 767, 748, 760, 762, 766, 748, 763, 763, - 748, 765, 761, 764, 764, 768, 767, 748, 748, 769, - 748, 771, 765, 772, 773, 769, 771, 774, 775, 776, - 779, 774, 778, 776, 777, 768, 770, 770, 770, 777, - 770, 780, 773, 770, 772, 779, 68, 781, 770, 776, - 781, 778, 775, 782, 770, 770, 783, 785, 782, 782, - 784, 784, 786, 783, 787, 787, 780, 786, 788, 793, - 790, 789, 785, 788, 789, 790, 791, 791, 792, 794, - 792, 793, 795, 796, 798, 797, 795, 799, 799, 804, - 800, 803, 798, 801, 802, 802, 805, 807, 794, 63, + 750, 755, 750, 761, 764, 750, 763, 762, 764, 750, + 766, 766, 750, 767, 768, 769, 770, 771, 777, 750, + 750, 773, 750, 771, 767, 774, 773, 775, 779, 769, + 776, 778, 768, 779, 776, 778, 770, 772, 772, 772, + 780, 772, 777, 781, 772, 775, 774, 782, 795, 772, + 783, 778, 787, 783, 785, 772, 772, 784, 781, 780, + 795, 785, 784, 784, 786, 786, 788, 787, 789, 789, + 790, 788, 782, 791, 792, 790, 791, 793, 793, 792, + 794, 796, 794, 797, 798, 800, 799, 797, 801, 801, + 806, 802, 805, 800, 803, 804, 804, 807, 809, 80, - 806, 804, 807, 796, 797, 800, 806, 801, 809, 803, - 808, 808, 811, 809, 809, 812, 813, 811, 805, 814, - 816, 812, 815, 818, 819, 814, 816, 815, 817, 818, - 822, 817, 819, 820, 820, 813, 821, 821, 822, 823, - 824, 825, 826, 827, 828, 824, 829, 829, 825, 830, - 832, 832, 834, 831, 838, 836, 833, 823, 830, 827, - 826, 831, 833, 828, 836, 837, 840, 839, 843, 844, - 841, 834, 839, 841, 837, 840, 842, 845, 838, 846, - 849, 842, 843, 847, 848, 848, 845, 850, 847, 847, - 851, 852, 846, 853, 844, 849, 856, 854, 856, 851, + 796, 808, 806, 809, 798, 799, 802, 808, 803, 811, + 805, 810, 810, 813, 811, 811, 814, 815, 813, 807, + 816, 818, 814, 817, 820, 821, 816, 818, 817, 819, + 820, 824, 819, 821, 822, 822, 815, 823, 823, 824, + 825, 826, 827, 828, 829, 830, 826, 831, 831, 827, + 832, 834, 834, 836, 833, 840, 838, 835, 825, 832, + 829, 828, 833, 835, 830, 838, 839, 842, 841, 845, + 846, 843, 836, 841, 843, 839, 842, 844, 847, 840, + 848, 851, 844, 845, 849, 850, 850, 847, 852, 849, + 849, 853, 854, 848, 855, 846, 851, 858, 856, 858, - 854, 857, 857, 858, 859, 860, 850, 861, 854, 859, - 862, 853, 863, 864, 865, 852, 866, 867, 868, 869, - 871, 867, 870, 865, 858, 872, 860, 861, 870, 871, - 862, 873, 874, 864, 863, 875, 868, 872, 869, 866, - 876, 875, 877, 880, 878, 881, 874, 883, 876, 878, - 873, 879, 879, 884, 882, 885, 877, 886, 887, 891, - 888, 884, 880, 882, 889, 881, 890, 883, 892, 893, - 889, 894, 890, 891, 892, 885, 895, 887, 896, 886, - 888, 897, 895, 893, 896, 897, 898, 899, 900, 901, - 903, 894, 908, 900, 902, 902, 903, 904, 905, 899, + 853, 856, 859, 859, 860, 861, 862, 852, 863, 856, + 861, 864, 855, 865, 866, 867, 854, 868, 869, 870, + 871, 873, 869, 872, 867, 860, 874, 862, 863, 872, + 873, 864, 875, 876, 866, 865, 877, 870, 874, 871, + 868, 878, 877, 879, 882, 880, 883, 876, 885, 878, + 880, 875, 881, 881, 886, 884, 887, 879, 888, 889, + 893, 890, 886, 882, 884, 891, 883, 892, 885, 894, + 895, 891, 896, 892, 893, 894, 887, 897, 889, 898, + 888, 890, 899, 897, 895, 898, 899, 900, 901, 902, + 903, 905, 896, 906, 902, 904, 904, 905, 907, 906, - 904, 906, 907, 909, 909, 898, 910, 899, 907, 917, - 901, 58, 908, 911, 906, 914, 905, 912, 911, 915, - 912, 913, 918, 915, 910, 920, 913, 913, 916, 916, - 914, 917, 919, 912, 922, 912, 923, 919, 925, 926, - 927, 931, 918, 930, 920, 929, 929, 930, 932, 932, - 923, 925, 933, 934, 935, 940, 931, 934, 922, 926, - 936, 927, 928, 937, 940, 928, 938, 928, 937, 935, - 939, 928, 941, 928, 936, 939, 939, 933, 928, 943, - 938, 942, 946, 928, 944, 942, 941, 946, 945, 944, - 947, 948, 949, 950, 943, 951, 958, 942, 952, 944, + 901, 907, 908, 909, 910, 911, 900, 75, 901, 913, + 910, 903, 912, 912, 914, 915, 909, 916, 915, 914, + 908, 917, 916, 916, 918, 911, 920, 913, 918, 919, + 919, 915, 921, 915, 922, 923, 917, 925, 928, 922, + 929, 926, 930, 932, 932, 933, 936, 934, 920, 933, + 938, 928, 921, 954, 923, 926, 935, 935, 939, 954, + 929, 925, 934, 930, 931, 938, 937, 931, 941, 931, + 937, 936, 939, 931, 940, 931, 944, 943, 942, 940, + 931, 946, 941, 942, 942, 931, 943, 945, 948, 947, + 944, 945, 949, 950, 947, 951, 946, 949, 952, 953, - 945, 951, 950, 952, 947, 953, 949, 954, 955, 955, - 956, 953, 948, 954, 957, 956, 959, 962, 958, 960, - 957, 963, 964, 966, 966, 967, 963, 972, 965, 962, - 967, 969, 970, 968, 971, 959, 964, 960, 961, 961, - 965, 968, 973, 972, 961, 969, 961, 975, 973, 974, - 976, 970, 961, 971, 974, 977, 978, 961, 961, 975, - 979, 979, 980, 981, 961, 985, 980, 983, 976, 984, - 986, 977, 984, 983, 978, 986, 987, 989, 990, 988, - 994, 992, 989, 981, 985, 988, 993, 995, 997, 987, - 992, 996, 999, 995, 998, 993, 994, 990, 1001, 998, + 948, 955, 962, 945, 947, 956, 955, 950, 953, 957, + 961, 956, 952, 958, 958, 957, 951, 959, 960, 963, + 966, 962, 959, 965, 960, 966, 967, 969, 969, 968, + 973, 970, 961, 972, 971, 965, 970, 963, 964, 964, + 967, 968, 971, 974, 964, 975, 964, 972, 976, 973, + 977, 978, 964, 979, 976, 977, 980, 964, 964, 981, + 984, 975, 974, 978, 964, 982, 982, 987, 986, 983, + 987, 979, 980, 983, 986, 988, 989, 981, 990, 991, + 984, 989, 992, 993, 995, 991, 996, 992, 997, 999, + 998, 990, 1000, 995, 988, 996, 998, 1002, 999, 1003, - 996, 1000, 1002, 1005, 1003, 1006, 1011, 997, 1004, 1005, - 1007, 1009, 999, 1003, 1002, 1000, 1007, 1004, 1001, 1012, - 1011, 1013, 1006, 1014, 1015, 1016, 1013, 1009, 1018, 1017, - 1019, 1022, 1023, 1018, 1025, 1019, 1022, 1027, 1015, 1012, - 1025, 1023, 1014, 1016, 1017, 1024, 1024, 1026, 1028, 1030, - 1033, 1033, 1027, 1031, 1033, 1035, 1026, 1034, 1031, 1031, - 1034, 1028, 1036, 1037, 1039, 1030, 1038, 1041, 1040, 1035, - 1042, 1044, 1043, 1041, 1046, 1045, 1049, 1039, 1043, 1037, - 1045, 1058, 1036, 1040, 1038, 1052, 1044, 1058, 1046, 1048, - 1042, 1050, 1048, 1051, 1053, 1054, 1050, 1049, 1051, 1055, + 1001, 1004, 993, 1005, 997, 1001, 1008, 1006, 1009, 1007, + 1012, 1000, 1008, 1003, 1010, 1005, 1006, 1002, 1007, 1014, + 1010, 1004, 1015, 1016, 1017, 1009, 1012, 1018, 1016, 1019, + 1020, 1021, 1022, 1014, 1025, 1026, 1021, 1022, 1030, 1025, + 1028, 1018, 1015, 1017, 1026, 1020, 1028, 1019, 1027, 1027, + 1029, 1031, 1033, 1030, 1037, 1034, 1038, 1037, 1039, 1029, + 1034, 1034, 1036, 1036, 1031, 1040, 1036, 1041, 1033, 1042, + 1038, 1043, 1045, 1044, 1046, 1047, 1052, 1049, 1039, 1044, + 1046, 1040, 1042, 1048, 1051, 1041, 1043, 1051, 1048, 1053, + 1047, 1049, 1045, 1054, 1053, 1055, 1056, 1052, 1054, 1057, - 1054, 1052, 1056, 1053, 1055, 1059, 1060, 1061, 1062, 1062, - 1063, 1064, 1060, 1061, 1056, 1065, 1066, 1066, 1065, 1063, - 1067, 1059, 1068, 1069, 1070, 1072, 1071, 1070, 1073, 1064, - 1074, 1072, 1075, 1082, 1073, 1074, 1076, 1075, 1067, 1071, - 1077, 1068, 1076, 1069, 1078, 1077, 1080, 1081, 1083, 1086, - 1078, 1080, 1084, 1082, 1083, 1085, 1085, 1084, 1086, 1087, - 1088, 1089, 1092, 1090, 1091, 1081, 1090, 1091, 1087, 1093, - 1094, 1095, 1096, 1092, 1093, 1097, 1098, 1099, 1088, 1100, - 1089, 1097, 1098, 1095, 1100, 1101, 1101, 1102, 1094, 1103, - 1104, 1096, 1099, 1105, 1106, 1107, 1108, 1105, 1109, 1111, + 1059, 1058, 1061, 1062, 1057, 1056, 1058, 1063, 1061, 1064, + 1067, 1055, 1059, 1063, 1066, 1064, 1065, 1065, 1068, 1062, + 1070, 1068, 1071, 1066, 1069, 1069, 1072, 1073, 1067, 1074, + 1073, 1075, 1133, 1076, 1133, 1077, 1085, 1075, 1070, 1076, + 1077, 1071, 1074, 1078, 1079, 1081, 1072, 1080, 1078, 1083, + 1079, 1081, 1080, 1084, 1083, 1086, 1085, 1087, 1088, 1088, + 1089, 1086, 1087, 1090, 1091, 1092, 1095, 1093, 1097, 1089, + 1093, 1084, 1090, 1094, 1096, 1098, 1094, 1095, 1099, 1096, + 1102, 1105, 1091, 1100, 1092, 1101, 1097, 1098, 1103, 1100, + 1106, 1101, 1108, 1103, 1107, 1102, 1110, 1099, 1104, 1104, - 1112, 1112, 1104, 1103, 1107, 1113, 1102, 1116, 1118, 1114, - 1119, 1115, 1106, 1113, 1114, 1108, 1115, 1120, 1111, 1121, - 1124, 1122, 1118, 1109, 1121, 1119, 1127, 1116, 1125, 1120, - 1122, 1123, 1123, 1126, 1125, 1129, 1128, 1129, 1130, 1126, - 1124, 1128, 1127, 1130, 1131, 1132, 1133, 1134, 1135, 1136, - 1137, 1133, 1138, 1140, 1140, 1141, 1136, 1142, 1131, 1132, - 1144, 1143, 1134, 1145, 57, 1137, 1144, 1135, 1146, 1141, - 1148, 1138, 1152, 1146, 1148, 1142, 1143, 1149, 1149, 1152, - 1150, 1153, 1146, 1145, 1146, 1150, 1155, 1146, 1151, 1151, - 1154, 1156, 1157, 1154, 1158, 1153, 1159, 1161, 1160, 1158, + 1105, 1109, 1111, 1112, 1106, 1109, 1107, 1113, 1115, 1117, + 1108, 1111, 1116, 1116, 1110, 1118, 1119, 1117, 1120, 1122, + 1118, 1119, 1112, 1124, 1123, 1125, 1128, 1115, 1126, 1131, + 1125, 1158, 1113, 1122, 1158, 1124, 1129, 1126, 1120, 1123, + 1127, 1127, 1129, 1130, 1135, 1131, 1128, 1132, 1134, 1130, + 1136, 1137, 1132, 1134, 1138, 1139, 1137, 1141, 1135, 1140, + 1142, 1144, 1144, 1145, 1136, 1146, 1140, 1147, 1149, 1138, + 1148, 1152, 1141, 1150, 1139, 1152, 1148, 1145, 1150, 1142, + 1153, 1153, 1147, 1146, 1156, 1154, 1157, 1150, 1149, 1150, + 1154, 1156, 1150, 1155, 1155, 1159, 1161, 1160, 1162, 1163, - 1162, 1157, 1161, 1164, 1169, 1155, 1163, 1166, 1166, 1156, - 1160, 1167, 1172, 1168, 1162, 1159, 1167, 1163, 1168, 1171, - 1170, 1172, 1164, 1171, 1169, 1170, 1173, 1174, 1175, 1177, - 1178, 1176, 1180, 1179, 1181, 1182, 1185, 1178, 1186, 1184, - 1183, 1173, 1174, 1176, 1177, 1179, 1183, 1175, 1187, 1188, - 1189, 1180, 1192, 1182, 1184, 1181, 1185, 1187, 1186, 1190, - 1191, 1193, 1194, 1197, 1188, 1199, 1196, 1198, 1200, 1189, - 1201, 1190, 1196, 1199, 1205, 1202, 1193, 1192, 1197, 1191, - 1202, 1198, 1194, 1203, 1204, 1206, 1201, 1207, 1200, 1204, - 1204, 1208, 1208, 1205, 1210, 1203, 1211, 1212, 1216, 1206, + 1157, 1164, 1165, 1162, 1168, 1161, 1166, 1165, 1167, 1170, + 1170, 1171, 1172, 1164, 1159, 1160, 1171, 1172, 1163, 1167, + 1166, 1173, 1174, 1168, 1175, 1176, 1180, 1174, 1175, 1177, + 1178, 1179, 1181, 1182, 1176, 1184, 1183, 1185, 1180, 1186, + 1182, 1173, 1189, 1187, 1177, 1178, 1188, 1181, 1183, 1187, + 1179, 1190, 1192, 1193, 1184, 1191, 1194, 1186, 1185, 1195, + 1196, 1188, 1189, 1198, 1191, 1197, 1201, 1192, 1194, 1200, + 1202, 1190, 1193, 1204, 1203, 1200, 1205, 1207, 1195, 1209, + 1197, 1201, 1203, 1198, 1202, 1196, 1206, 1210, 1288, 1207, + 1208, 1206, 1205, 1204, 1211, 1208, 1208, 1214, 1209, 1212, - 1207, 1209, 1209, 1212, 1216, 1211, 1209, 1210, 1214, 1209, - 1209, 1213, 1213, 1214, 1209, 1220, 1215, 1217, 1218, 1223, - 1209, 1227, 1217, 1218, 1209, 1215, 1219, 1219, 1221, 1221, - 1222, 1224, 1225, 1222, 1226, 1222, 1220, 1228, 1225, 1223, - 1229, 1227, 1228, 1226, 1230, 1231, 1232, 1235, 1233, 1224, - 1257, 1231, 1232, 1233, 1229, 1234, 1235, 1237, 1257, 1234, - 1244, 1235, 1230, 1235, 1236, 1235, 1242, 1235, 1240, 1236, - 1242, 1237, 1238, 1238, 1239, 1239, 1243, 1239, 1244, 1240, - 1245, 1246, 1248, 1247, 1250, 1249, 1246, 1246, 1251, 1245, - 1249, 1243, 1247, 1252, 1253, 1254, 1255, 1251, 1250, 1256, + 1212, 1210, 1215, 1217, 1217, 1288, 1216, 1211, 1213, 1213, + 1214, 1215, 1216, 1213, 1218, 1219, 1213, 1213, 1221, 1218, + 1220, 1213, 1224, 1221, 1219, 1222, 1220, 1213, 1223, 1223, + 1222, 1213, 1225, 1225, 1226, 1227, 1228, 1226, 1229, 1226, + 1230, 1231, 1232, 1224, 1229, 1233, 1234, 1232, 1237, 1230, + 1235, 1236, 1241, 1237, 1228, 1227, 1235, 1236, 1238, 1233, + 1239, 1231, 1238, 1240, 1234, 1252, 1241, 1247, 1240, 1239, + 1242, 1242, 1243, 1243, 1239, 1243, 1239, 1244, 1239, 1246, + 1239, 1248, 1247, 1246, 1249, 1250, 1251, 1252, 1244, 1253, + 1250, 1250, 1254, 1249, 1253, 1251, 1255, 1256, 1257, 1248, - 1256, 1258, 1255, 1259, 1248, 1260, 1263, 1261, 1259, 1254, - 1262, 1264, 1252, 1253, 1267, 1258, 1261, 1262, 1265, 1260, - 1266, 1266, 1272, 1265, 1263, 1268, 1268, 1272, 1269, 1267, - 1269, 1271, 1273, 1274, 1271, 1276, 1264, 1275, 1275, 1277, - 1277, 1279, 1274, 1278, 1278, 1280, 1279, 1281, 1282, 1282, - 1283, 1273, 1284, 1285, 1286, 1276, 1285, 1287, 1289, 1288, - 1290, 1291, 1290, 1287, 1288, 1294, 1280, 1289, 1281, 1284, - 1283, 1295, 1293, 1296, 1286, 1293, 1295, 1297, 1298, 1291, - 1294, 1300, 1297, 1299, 1300, 1301, 1298, 1296, 1299, 1303, - 1301, 1302, 1302, 1304, 1303, 1305, 1306, 1307, 1309, 1310, + 1258, 1259, 1260, 1260, 1261, 1255, 1254, 1259, 1262, 1264, + 1263, 1265, 1261, 1267, 1258, 1263, 1256, 1257, 1266, 1268, + 1265, 1269, 1262, 1264, 1271, 1266, 1269, 1270, 1270, 1272, + 1272, 1267, 1273, 1275, 1273, 1276, 1275, 1277, 1278, 1271, + 1276, 1279, 1279, 1280, 1268, 1281, 1281, 1278, 1282, 1282, + 1283, 1284, 1285, 1286, 1286, 1283, 1277, 1287, 1289, 1290, + 1291, 1289, 1292, 1280, 1295, 1293, 1291, 1292, 1294, 1298, + 1294, 1299, 1284, 1285, 1293, 1297, 1299, 1287, 1297, 1290, + 1300, 1301, 1295, 1302, 1298, 1303, 1301, 1308, 1305, 1304, + 1303, 1302, 1304, 1305, 1300, 1306, 1306, 1307, 1309, 1310, - 1312, 1305, 1311, 1306, 1309, 1310, 1312, 1311, 1313, 1314, - 1307, 1304, 1315, 1316, 1316, 1317, 1319, 1313, 1320, 1321, - 1323, 1319, 1322, 1315, 1324, 1325, 1326, 1327, 1314, 1321, - 1331, 1325, 1326, 1327, 1330, 1317, 1320, 1322, 1329, 1332, - 1323, 1333, 1334, 1335, 1329, 1336, 1336, 1324, 1330, 1337, - 1331, 1338, 1339, 1333, 1330, 1340, 1334, 1341, 1341, 1332, - 1340, 1335, 1342, 1343, 1345, 1348, 1346, 1349, 1343, 1337, - 1339, 1346, 1346, 1347, 1348, 1349, 1338, 52, 1350, 1351, - 1352, 1353, 1356, 1345, 1354, 1342, 1353, 1363, 1355, 1353, - 1355, 1347, 1350, 1354, 1351, 1352, 1356, 1358, 1352, 1360, + 1311, 1313, 1307, 1314, 1309, 1308, 1310, 1313, 1317, 1314, + 1315, 1316, 1318, 1311, 1317, 1315, 1316, 1319, 1320, 1321, + 1321, 1318, 1322, 1324, 1326, 1325, 1327, 1328, 1324, 1320, + 1329, 1330, 1331, 1332, 1326, 1335, 1319, 1330, 1331, 1332, + 1334, 1327, 1322, 1325, 1336, 1337, 1334, 1328, 1338, 1335, + 1340, 1342, 1339, 1329, 1343, 1335, 1341, 1341, 1344, 1347, + 1338, 1350, 1345, 1352, 1336, 1337, 1339, 1345, 1340, 1346, + 1346, 1342, 1348, 74, 1355, 1356, 1344, 1348, 1351, 1343, + 1350, 1352, 1347, 1351, 1351, 1353, 1357, 1354, 1355, 1359, + 1356, 1358, 1361, 1367, 1353, 1354, 1358, 1363, 1359, 1358, - 1359, 1361, 1362, 1358, 1359, 1364, 1361, 1361, 1367, 1365, - 1360, 1366, 1368, 1363, 1365, 1369, 1366, 1370, 1373, 1372, - 1369, 1362, 1374, 1364, 1375, 1375, 1367, 1376, 1377, 1378, - 1380, 1376, 1368, 1372, 1381, 1379, 1373, 1370, 1382, 1383, - 1374, 1379, 1380, 1384, 1385, 1386, 1377, 1389, 1378, 1387, - 1386, 1394, 1382, 1381, 1383, 1388, 1387, 1390, 1384, 1392, - 1388, 1391, 1391, 1385, 1393, 1389, 1390, 1395, 1395, 1396, - 1397, 1394, 1398, 1393, 1392, 1396, 1397, 1399, 1399, 1400, - 1401, 1402, 1403, 1404, 1405, 1400, 1398, 1403, 1406, 1404, - 1405, 1407, 1407, 1413, 1406, 1412, 1401, 1408, 1408, 1410, + 1360, 1357, 1360, 1363, 1357, 1364, 1361, 1365, 1366, 1364, + 1368, 1369, 1367, 1366, 1366, 1370, 1371, 1372, 1365, 1373, + 1370, 1371, 1374, 1375, 1377, 68, 1378, 1374, 1379, 1369, + 1380, 1380, 1382, 1381, 1383, 1372, 1368, 1381, 1377, 1373, + 1385, 1384, 1386, 1375, 1378, 1387, 1379, 1384, 1388, 1389, + 1382, 1390, 1385, 1383, 1394, 1391, 1397, 1393, 1392, 1387, + 1391, 1386, 1393, 1388, 1389, 1392, 1395, 1396, 1396, 1398, + 1390, 1397, 1394, 1399, 1401, 1395, 1400, 1400, 1398, 1402, + 1401, 1403, 1404, 1404, 1405, 1402, 1406, 1407, 63, 1408, + 1405, 1409, 1410, 1399, 1408, 1403, 1418, 1409, 1410, 1411, - 1410, 1411, 1402, 1414, 1412, 1411, 1415, 1416, 1419, 1417, - 1420, 1413, 1418, 1418, 1421, 1414, 1417, 1422, 1420, 1421, - 1415, 1423, 1416, 1426, 1424, 1427, 1427, 1425, 1419, 1424, - 1424, 1422, 1425, 1425, 1428, 1429, 1430, 1431, 1432, 1433, - 1423, 1435, 1431, 1426, 1434, 1430, 1436, 1435, 1437, 1438, - 1439, 1436, 1440, 1428, 1429, 1441, 1439, 1432, 1442, 1433, - 1443, 1441, 1434, 1444, 1442, 1445, 1446, 1447, 1437, 1448, - 1452, 1440, 1449, 1450, 1450, 1438, 1453, 1451, 1457, 1443, - 1451, 1447, 1444, 1457, 1445, 1446, 1454, 1449, 1459, 1452, - 1448, 1455, 1455, 1456, 1456, 1453, 1458, 1460, 1454, 1461, + 1412, 1412, 1406, 1413, 1413, 1411, 1415, 1415, 1407, 1416, + 1417, 1419, 1420, 1416, 1418, 1421, 1424, 1422, 1427, 1417, + 1423, 1423, 1426, 1419, 1422, 1425, 1420, 1426, 1428, 1429, + 1421, 1431, 1427, 1425, 1429, 1429, 1424, 1430, 1432, 1432, + 1433, 1434, 1430, 1430, 1435, 1436, 1437, 1428, 1438, 1439, + 1436, 1431, 1440, 1435, 1442, 1443, 1441, 1444, 1440, 1433, + 1434, 1441, 1469, 1444, 1445, 1437, 1446, 1439, 1438, 1447, + 1448, 1449, 1446, 1450, 1442, 1447, 1451, 1452, 1453, 1454, + 1469, 1443, 1457, 1445, 1455, 1455, 1458, 58, 1459, 1448, + 1449, 1452, 1450, 1456, 1454, 1451, 1456, 1460, 1460, 1453, - 1458, 1459, 1462, 1466, 1462, 1464, 1460, 1467, 1462, 1465, - 1468, 1473, 1461, 1471, 1465, 1469, 1469, 1470, 1466, 1471, - 1472, 1462, 1470, 1464, 1473, 1474, 1468, 1467, 1475, 1476, - 1474, 1477, 1475, 1476, 1478, 1472, 1479, 1480, 1481, 1482, - 1482, 1484, 1486, 1487, 1481, 1479, 1488, 1488, 1487, 1489, - 1490, 1477, 1478, 1492, 1492, 1489, 1496, 1480, 1494, 1484, - 1497, 1494, 1500, 1486, 1495, 1495, 1499, 1501, 1502, 1499, - 1490, 1503, 1496, 1504, 1504, 1505, 1497, 1502, 1506, 1507, - 1508, 1509, 1512, 1500, 1511, 1508, 1513, 1501, 1510, 1510, - 1505, 1503, 1514, 1511, 1515, 1509, 1516, 1516, 1507, 1506, + 1459, 1457, 1461, 1461, 1462, 1458, 1463, 1464, 1465, 1462, + 1463, 1466, 1467, 1471, 1467, 1472, 1470, 1465, 1467, 1477, + 1464, 1470, 1473, 1476, 1466, 1474, 1474, 1475, 1471, 1476, + 1478, 1467, 1475, 1480, 1477, 1472, 1479, 1480, 1473, 1482, + 1481, 1479, 1483, 1478, 1481, 1484, 1485, 1486, 1487, 1487, + 1489, 1491, 1492, 1486, 1484, 1493, 1493, 1492, 1494, 1482, + 1483, 1495, 1497, 1497, 1494, 1505, 1485, 1499, 1489, 1501, + 1499, 1502, 1491, 1500, 1500, 1504, 1506, 1508, 1504, 1507, + 1510, 1495, 1509, 1509, 1511, 1501, 1505, 1502, 1507, 1512, + 1514, 1515, 1515, 1513, 1516, 1510, 1506, 1508, 1513, 1517, - 1512, 1513, 1517, 1518, 1519, 1520, 1521, 1521, 1522, 1519, - 1523, 1525, 1522, 1526, 1515, 1528, 1517, 1514, 1524, 1524, - 1520, 1518, 1527, 1529, 1526, 1536, 1527, 1533, 1529, 1535, - 1523, 1531, 1531, 1525, 1528, 1532, 1534, 1537, 1532, 1538, - 1533, 1534, 1539, 1536, 1540, 1535, 1541, 1541, 1542, 47, - 1543, 1537, 1544, 1542, 1545, 1545, 1539, 1546, 1538, 1538, - 1547, 1548, 1549, 1550, 1549, 1547, 1546, 1551, 1550, 1540, - 1543, 1552, 1544, 1551, 1553, 1555, 1556, 1556, 1557, 1558, - 1553, 1548, 1560, 1561, 1564, 1558, 1565, 1560, 1566, 1555, - 1569, 1552, 1562, 1562, 1563, 1563, 1567, 1557, 1564, 1567, + 1518, 1519, 1520, 1516, 1514, 1511, 1521, 1521, 1512, 1522, + 1523, 1524, 1525, 1526, 1526, 1518, 1524, 1517, 1528, 1530, + 1527, 1531, 1520, 1522, 1527, 1532, 1519, 1525, 1523, 1529, + 1529, 1533, 1534, 1539, 1535, 1533, 1532, 1541, 1528, 1535, + 1531, 1530, 1537, 1537, 1538, 1540, 1539, 1538, 1542, 1543, + 1540, 1534, 1544, 1541, 1545, 1546, 1547, 1547, 1549, 1548, + 57, 1550, 1553, 1543, 1548, 1552, 1542, 1553, 1545, 1551, + 1551, 1544, 1544, 1554, 1552, 1555, 1557, 1555, 1549, 1556, + 1546, 1550, 1557, 1558, 1556, 1559, 1561, 1562, 1562, 1563, + 1564, 1559, 1566, 1554, 1567, 1570, 1564, 1566, 1568, 1568, - 1568, 1568, 1570, 1566, 1565, 1571, 1572, 1561, 1569, 1572, - 1573, 18, 1572, 1574, 1570, 1579, 1573, 1575, 1574, 1577, - 1575, 1578, 1581, 1581, 1572, 1571, 1578, 1580, 1577, 1582, - 1580, 1583, 1590, 1584, 1589, 1582, 1575, 1583, 1584, 1587, - 1579, 1585, 1585, 1586, 1586, 1587, 1588, 1589, 1591, 1592, - 1590, 1588, 1593, 1594, 1595, 1593, 1596, 1597, 1598, 1594, - 1595, 1596, 1602, 1597, 1603, 1599, 1604, 1591, 1601, 1592, - 1599, 1600, 1600, 1601, 1605, 1606, 1607, 1608, 1609, 1610, - 1602, 1598, 1612, 1610, 1603, 1611, 1604, 1611, 1605, 1606, - 1607, 1617, 1614, 1615, 1616, 1608, 1618, 1617, 1619, 1620, + 1561, 1569, 1569, 1558, 1571, 1572, 1575, 1573, 1563, 1570, + 1573, 1574, 1574, 1576, 1577, 1579, 1581, 1585, 1567, 1581, + 1572, 1579, 1571, 1578, 1575, 1576, 1578, 1580, 1583, 1578, + 1586, 1584, 1580, 1586, 1577, 1581, 1584, 1583, 1587, 1587, + 1588, 1578, 1585, 1589, 1595, 1590, 1588, 1591, 1591, 1589, + 1590, 1592, 1592, 1593, 1596, 1594, 1597, 1595, 1598, 1593, + 1594, 1599, 1600, 1601, 1599, 1602, 1604, 1603, 1600, 1601, + 1602, 1605, 1596, 1603, 1608, 1597, 1605, 1607, 1598, 1606, + 1606, 1609, 1607, 1610, 1611, 1612, 1613, 1614, 1615, 1604, + 1616, 1617, 1608, 1617, 1616, 1618, 1620, 1621, 1611, 1612, - 1622, 1612, 1625, 1609, 1614, 1615, 1621, 1616, 1624, 1624, - 1626, 1627, 1628, 1628, 1619, 1626, 1618, 1629, 1631, 1620, - 1621, 1622, 1625, 1627, 1630, 1632, 1633, 1635, 1636, 1634, - 1637, 1641, 1629, 1639, 1635, 1633, 1642, 1636, 1630, 1642, - 1636, 1646, 1631, 1632, 1634, 1645, 1637, 1650, 1639, 1643, - 1643, 1644, 1644, 1639, 1649, 1647, 1641, 1645, 1647, 1646, - 1648, 1648, 1652, 1651, 1653, 1652, 1650, 1649, 1651, 1653, - 1654, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1661, 1662, - 1663, 1656, 1660, 1658, 1659, 1664, 1658, 1655, 1665, 1654, - 1666, 1667, 1657, 1663, 1672, 1668, 1667, 1667, 1669, 1662, + 1613, 1609, 1622, 1610, 1623, 1614, 1624, 1625, 1620, 1621, + 1623, 1626, 1628, 1615, 1618, 1622, 1627, 1630, 1630, 1631, + 1632, 1635, 1633, 1625, 1636, 1632, 1624, 1634, 1634, 1637, + 1627, 1626, 1638, 1628, 1633, 1639, 1635, 1640, 1636, 1631, + 1641, 1643, 1642, 1645, 1639, 1647, 1648, 1641, 1652, 1648, + 1638, 1642, 1640, 1637, 1642, 1649, 1649, 1643, 1645, 1650, + 1650, 1651, 1653, 1645, 1655, 1653, 1652, 1654, 1654, 1656, + 1647, 1657, 1658, 1651, 1659, 1658, 1657, 1655, 1660, 1659, + 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1667, 1656, 1668, + 1662, 1666, 1664, 1665, 1669, 1664, 1661, 1660, 1670, 1671, - 1668, 1675, 1665, 1664, 1673, 1676, 1666, 1674, 1674, 1679, - 1669, 1677, 1678, 1678, 1676, 1680, 1677, 1675, 1679, 1672, - 1680, 1679, 1673, 1681, 1682, 1683, 1684, 1678, 1686, 1687, - 1688, 1684, 1684, 1689, 1690, 1691, 1692, 1692, 1689, 1699, - 1690, 1681, 1686, 1683, 1687, 1682, 1694, 1695, 1693, 1696, - 1697, 1694, 1688, 1691, 1693, 1696, 1697, 1700, 1701, 1699, - 1702, 1695, 1704, 1703, 1701, 1708, 1703, 1706, 1704, 1709, - 1710, 1700, 1703, 1702, 1711, 1706, 1712, 1713, 1710, 1711, - 1714, 1715, 1716, 1717, 1708, 1712, 1718, 1718, 1709, 1714, - 1713, 1721, 1719, 1720, 1715, 1723, 1716, 1717, 1719, 1720, + 1673, 1663, 1672, 1674, 1678, 1673, 1673, 1669, 1674, 1668, + 1675, 1681, 1679, 1671, 1680, 1680, 1670, 1682, 1672, 1683, + 1684, 1684, 1675, 1686, 1683, 1685, 1682, 1681, 1686, 1678, + 1679, 1687, 1688, 1689, 1685, 1684, 1690, 1685, 1692, 1693, + 1694, 1690, 1690, 1695, 1696, 1697, 1698, 1698, 1695, 1687, + 1696, 1689, 1692, 1688, 1693, 1699, 1701, 1705, 1706, 1700, + 1702, 1699, 1694, 1697, 1700, 1703, 1702, 1707, 1708, 1714, + 1701, 1703, 1706, 1707, 1710, 1709, 1715, 1705, 1709, 1712, + 1710, 1708, 1716, 1718, 1709, 1719, 1717, 1712, 1714, 1722, + 1716, 1717, 1718, 1720, 1721, 1715, 1723, 1729, 1719, 1724, - 1722, 1722, 1724, 1725, 1721, 1726, 1726, 1728, 1718, 1729, - 1727, 1730, 1731, 1728, 1734, 1723, 1733, 1733, 1740, 1736, - 1724, 1735, 1725, 1727, 1736, 1735, 1739, 1730, 1737, 1742, - 1731, 1729, 1738, 1737, 1734, 1739, 1743, 1738, 1745, 1744, - 1742, 1740, 1744, 1746, 1748, 1743, 1747, 1747, 1749, 1750, - 1745, 1751, 1751, 1752, 1753, 1757, 1758, 1754, 1746, 1755, - 1749, 1753, 1761, 1748, 1759, 1760, 1762, 1752, 1750, 1754, - 1759, 1755, 1762, 1772, 1757, 1772, 1758, 1760, 1763, 1763, - 1761, 1764, 1765, 1765, 1764, 1767, 1768, 1769, 1770, 1770, - 1767, 1771, 1774, 1769, 1773, 1768, 1775, 1773, 1776, 1777, + 1724, 1727, 1720, 1722, 1730, 1725, 1726, 1721, 1728, 1728, + 1723, 1725, 1726, 1731, 1727, 1732, 1732, 1729, 1733, 1734, + 1735, 1724, 1730, 1736, 1747, 1734, 1737, 1739, 1739, 1740, + 1741, 1733, 1731, 1742, 1741, 1743, 1744, 1746, 1742, 1736, + 1745, 1744, 1735, 1749, 1737, 1745, 1746, 1747, 1750, 1740, + 1751, 1752, 1753, 1751, 1749, 1743, 1755, 1750, 1754, 1754, + 1756, 1757, 1759, 1752, 1758, 1758, 1760, 1753, 1764, 1761, + 1762, 1765, 1756, 1760, 1767, 1755, 1759, 1766, 1768, 1769, + 1757, 1761, 1762, 1766, 52, 1769, 1767, 1764, 1770, 1770, + 1771, 1765, 1774, 1771, 1772, 1772, 1768, 1774, 1775, 1776, - 1778, 1779, 1780, 1771, 1783, 1778, 1779, 1781, 1782, 1783, - 1785, 1780, 1774, 1784, 1788, 1786, 1776, 1777, 1775, 1781, - 1786, 1787, 1784, 1782, 1789, 1789, 1787, 1786, 1790, 1788, - 1785, 1791, 1793, 1795, 1790, 1784, 1794, 1796, 1797, 1802, - 1797, 1805, 1798, 1799, 1799, 1800, 1800, 1801, 1801, 1795, - 1806, 1793, 1791, 1803, 1803, 1794, 1798, 1796, 1798, 1802, - 1804, 1804, 1805, 1807, 1807, 1808, 1809, 1810, 1812, 1808, - 1810, 1806, 1809, 1813, 1812, 1814, 1815, 1816, 1817, 1817, - 1816, 1814, 1818, 1819, 1820, 1820, 1822, 1823, 1819, 1821, - 1825, 1813, 1823, 1824, 1824, 1825, 1827, 1826, 1828, 1829, + 1777, 1777, 1778, 1781, 1779, 1776, 1779, 1775, 1780, 1782, + 1783, 1780, 1784, 1785, 1778, 1786, 1787, 1788, 1785, 1789, + 1786, 1790, 1792, 1781, 1791, 1787, 1790, 1793, 1783, 1788, + 1784, 1782, 1793, 1791, 1789, 1794, 1795, 1796, 1796, 1793, + 1794, 1797, 1792, 1798, 1800, 1802, 1791, 1797, 1801, 1803, + 1804, 1795, 1804, 1809, 1805, 1806, 1806, 1807, 1807, 1808, + 1808, 1802, 1812, 1800, 1798, 1810, 1810, 1801, 1805, 1803, + 1805, 1811, 1811, 1809, 1813, 1814, 1814, 1815, 1816, 1817, + 1819, 1815, 1817, 1812, 1816, 1820, 1819, 1821, 1822, 1823, + 1824, 1824, 1823, 1821, 1825, 1813, 1826, 1827, 1827, 1829, - 1830, 1815, 1818, 1826, 1821, 1831, 1832, 1822, 1827, 1827, - 1827, 1831, 1842, 1835, 1836, 1827, 1834, 1829, 1828, 1838, - 1830, 1834, 1834, 1837, 1839, 1837, 1832, 1835, 1840, 1836, - 1838, 1841, 1842, 1843, 1840, 1844, 1844, 1845, 1847, 1839, - 1841, 1846, 1846, 1848, 1849, 1849, 1850, 1850, 1851, 1854, - 1854, 1855, 1856, 1858, 1843, 1861, 1859, 1863, 1847, 1864, - 1860, 1856, 1858, 1845, 1866, 1848, 1860, 1867, 1851, 1862, - 1862, 1861, 1865, 1866, 1864, 1869, 1855, 1859, 1863, 1865, - 1868, 1868, 1870, 1872, 1873, 1874, 1876, 1875, 1872, 1877, - 1873, 1877, 1876, 1867, 1875, 1879, 1880, 1883, 1870, 1881, + 1828, 1826, 1830, 1820, 1831, 1831, 1832, 1830, 1836, 1834, + 1833, 1832, 1835, 1822, 1825, 1828, 1833, 1837, 1838, 1839, + 1829, 1834, 1834, 1834, 1838, 1841, 1836, 1842, 1834, 1843, + 1841, 1841, 1835, 1844, 1845, 1844, 1846, 1837, 1848, 1839, + 1847, 1842, 1849, 1850, 1843, 1845, 1847, 1848, 1851, 1851, + 1852, 1846, 1853, 1853, 1854, 1855, 1856, 1856, 1857, 1857, + 1858, 1862, 1849, 1863, 1850, 1861, 1861, 1866, 1868, 1865, + 1869, 1869, 1863, 1867, 1854, 1870, 1852, 1855, 1865, 1867, + 1858, 1874, 1871, 1872, 1868, 1873, 1862, 1876, 1866, 1877, + 1872, 1875, 1875, 1879, 1873, 1880, 1870, 1871, 1879, 1881, - 1881, 1869, 1880, 1882, 1884, 1874, 1883, 1885, 1882, 1886, - 1887, 1888, 1889, 1887, 1879, 1890, 1890, 1891, 1894, 1892, - 1893, 1886, 1897, 1891, 1884, 1892, 1885, 1895, 1898, 1888, - 1899, 1895, 1901, 1894, 1902, 1899, 1900, 1900, 1889, 1904, - 1893, 1905, 1897, 1906, 1906, 1905, 1907, 1895, 1908, 1902, - 1898, 1901, 1907, 1909, 1909, 1910, 1911, 1908, 1904, 1910, - 1912, 1912, 1913, 1914, 1916, 1915, 1917, 1911, 1918, 1916, - 1919, 1920, 1911, 1922, 1923, 1921, 1919, 1914, 1922, 1924, - 1924, 1925, 1925, 1913, 1915, 1928, 1917, 1923, 1918, 1920, - 1921, 1926, 1929, 1930, 1928, 1926, 1931, 1931, 1933, 1933, + 1883, 1880, 1882, 1886, 1891, 1877, 1883, 1874, 1884, 1882, + 1884, 1887, 1892, 1876, 1888, 1888, 1889, 1887, 1890, 1881, + 1893, 1889, 1886, 1894, 1891, 1895, 1894, 1890, 1896, 1897, + 1897, 1892, 1893, 1898, 1899, 1900, 1901, 1902, 1904, 1898, + 1899, 1902, 1905, 1895, 1906, 1907, 1907, 1908, 1909, 1906, + 1911, 1901, 1912, 1915, 1896, 1900, 1912, 1902, 1904, 1913, + 1913, 1914, 1915, 1909, 1905, 1918, 1908, 1914, 1917, 1911, + 1916, 1916, 1917, 1919, 1919, 1920, 1918, 1921, 1922, 1923, + 1924, 1918, 1925, 1926, 1923, 1927, 1928, 1929, 1954, 1926, + 1937, 1921, 1929, 1930, 1931, 1931, 1920, 1922, 1932, 1932, - 1934, 1935, 1938, 1929, 1937, 1934, 1934, 1935, 1929, 1939, - 1937, 1940, 1941, 1930, 1939, 1943, 1944, 1945, 1941, 1946, - 1944, 1948, 1951, 1940, 1947, 1949, 1952, 1943, 1938, 1945, - 1947, 1949, 1950, 1950, 1953, 1954, 1956, 1957, 17, 1953, - 1958, 1951, 1964, 1948, 1946, 1958, 1952, 1954, 1956, 1960, - 1961, 1961, 1960, 1962, 1962, 1965, 1957, 1963, 1963, 1966, - 1968, 1965, 1964, 1967, 1969, 1966, 1968, 1971, 1967, 1974, - 1977, 1973, 1971, 1969, 1973, 1975, 1975, 1978, 1979, 1980, - 1980, 1974, 1977, 1979, 1981, 1982, 1983, 1985, 1985, 1978, - 1982, 1983, 1984, 1981, 1986, 1984, 1987, 1988, 1989, 1990, + 1924, 1928, 1925, 1927, 1933, 1935, 1930, 1936, 1933, 1945, + 1937, 1938, 1938, 1954, 1935, 1940, 1940, 1946, 1936, 1941, + 1942, 1944, 1946, 1936, 1941, 1941, 1942, 1944, 1947, 1950, + 1948, 1952, 1956, 1951, 1959, 1945, 1948, 1951, 1953, 1953, + 1947, 1950, 1955, 1952, 1957, 1958, 1958, 1960, 1955, 1962, + 1957, 1961, 1964, 1959, 1956, 1965, 1961, 1966, 1969, 1969, + 1968, 1962, 1966, 1968, 1964, 1970, 1970, 1960, 1971, 1971, + 1972, 1973, 1974, 1976, 1965, 1975, 1977, 1973, 1974, 1976, + 1975, 1979, 1982, 1985, 1981, 1977, 1979, 1981, 1983, 1983, + 1972, 1986, 1987, 1989, 1982, 1985, 1990, 1987, 1988, 1988, - 1993, 1991, 1992, 1990, 1994, 1987, 1991, 1995, 1992, 1996, - 1998, 1998, 1999, 1994, 1986, 1988, 2001, 1989, 1993, 2000, - 2002, 2002, 1998, 1996, 2003, 1995, 2004, 2005, 2000, 2006, - 1999, 2007, 2012, 2003, 2006, 2012, 2001, 2013, 2004, 2010, - 2010, 2014, 2017, 2016, 2007, 2018, 2019, 2023, 2005, 2020, - 2020, 2018, 2021, 2013, 2021, 2023, 2017, 2014, 2016, 2022, - 2022, 2025, 2025, 2019, 2026, 2026, 2028, 2029, 2030, 2031, - 2032, 2033, 2035, 2029, 2030, 2036, 2031, 2034, 2034, 2041, - 2045, 2035, 2037, 2038, 2039, 2040, 2042, 2043, 2046, 2028, - 2047, 2033, 2032, 2043, 2037, 2038, 2036, 2040, 2049, 2039, + 1991, 1990, 1989, 1986, 1992, 1991, 1994, 1992, 1993, 1993, + 1995, 1996, 1997, 1998, 2001, 1999, 2000, 1998, 2002, 1995, + 1999, 2003, 2000, 2004, 2006, 2006, 1994, 2002, 2007, 1996, + 2009, 1997, 2001, 2008, 2010, 2010, 2006, 2004, 2011, 2003, + 2012, 2013, 2008, 2014, 2015, 2021, 2007, 2011, 2014, 2022, + 2009, 2024, 2012, 2018, 2018, 2020, 2025, 2015, 2020, 2027, + 2036, 2021, 2013, 2026, 2031, 2022, 2024, 2028, 2028, 2026, + 2025, 2029, 2031, 2029, 2030, 2030, 2027, 2033, 2033, 2034, + 2034, 2037, 2038, 2036, 2039, 2040, 2041, 2037, 2038, 2042, + 2042, 2039, 2043, 2044, 2049, 2047, 2045, 2046, 2050, 2048, - 2045, 2042, 2047, 2048, 2048, 2041, 2043, 2050, 2052, 2051, - 2053, 2046, 2051, 2052, 2055, 2056, 2049, 2056, 2057, 2055, - 2058, 2059, 2061, 2063, 2064, 2058, 2065, 2050, 2059, 2067, - 2053, 2061, 2066, 2064, 2066, 2071, 2057, 2068, 2065, 2073, - 2070, 2063, 2070, 2068, 2072, 2072, 2074, 2079, 2067, 2071, - 2075, 2074, 2075, 2076, 2077, 2078, 2080, 2082, 2076, 2077, - 2083, 2081, 2080, 2084, 2087, 2073, 2081, 2079, 2084, 2084, - 2082, 2085, 2083, 2078, 2088, 2089, 2089, 2090, 2090, 2085, - 2091, 2092, 2094, 2087, 2093, 2096, 2097, 2094, 2088, 2095, - 2093, 2095, 2098, 2098, 2097, 2091, 2099, 2100, 2100, 2101, + 2054, 2043, 2053, 2055, 2056, 2056, 2041, 2040, 2045, 2046, + 2047, 2048, 2051, 2050, 2044, 2055, 2057, 2058, 2051, 2061, + 2049, 2059, 2053, 2054, 2059, 2060, 2064, 2063, 2064, 2065, + 2060, 2051, 2063, 2066, 2057, 2067, 2069, 2058, 2066, 2061, + 2071, 2072, 2067, 2073, 2074, 2069, 2074, 2065, 2075, 2079, + 2072, 2076, 2078, 2081, 2078, 2073, 2082, 2076, 2071, 2080, + 2080, 2082, 2083, 2079, 2083, 2084, 2085, 2075, 2086, 2087, + 2084, 2085, 2088, 2091, 2090, 2089, 2092, 2095, 2088, 2081, + 2089, 2092, 2092, 2093, 2096, 2091, 2086, 2090, 2099, 2087, + 2100, 2093, 2097, 2097, 2098, 2098, 2095, 2102, 2096, 2101, - 2101, 2092, 2097, 2096, 2102, 2103, 2104, 2106, 2099, 2107, - 2103, 2107, 2108, 2102, 2110, 2109, 2106, 2112, 2111, 2106, - 2109, 2109, 2114, 2115, 2104, 2116, 2110, 2111, 2115, 2112, - 2116, 2118, 2119, 2108, 2114, 2122, 2120, 2121, 2121, 2123, - 2124, 2125, 2128, 2127, 2118, 2120, 2126, 2128, 2132, 2130, - 2131, 2141, 2119, 2122, 2133, 2142, 2124, 2123, 2127, 2133, - 2126, 2130, 2131, 2135, 2134, 2138, 2125, 2140, 2132, 2134, - 2142, 2138, 2135, 2140, 2141, 2143, 2144, 2145, 2146, 2146, - 2147, 2148, 2148, 2149, 2138, 2151, 2145, 2150, 2154, 2147, - 2151, 2150, 2152, 2143, 2155, 2156, 2160, 0, 2157, 2160, + 2104, 2105, 2102, 2099, 2103, 2101, 2103, 2106, 2106, 2105, + 2100, 2107, 2108, 2108, 2109, 2109, 2110, 2105, 2104, 2111, + 2112, 2114, 2116, 2107, 2111, 2110, 2115, 2118, 2115, 2117, + 2114, 2119, 2120, 2114, 2117, 2117, 2122, 2123, 2112, 2118, + 2119, 2124, 2123, 2116, 2120, 2126, 2124, 2127, 2122, 2132, + 2128, 2129, 2129, 2130, 2131, 2133, 2134, 2136, 2126, 2128, + 2135, 2138, 2136, 2140, 2139, 2132, 2149, 2127, 2151, 2141, + 2134, 2130, 2131, 2138, 2141, 2135, 2139, 2142, 2143, 2146, + 2133, 2150, 2142, 2140, 2148, 2146, 2151, 2143, 2152, 2149, + 2148, 2153, 2154, 2154, 2155, 2158, 2150, 2157, 2146, 2161, - 2155, 2144, 2149, 2157, 2157, 2152, 2158, 2154, 2159, 2162, - 2161, 2180, 2158, 2167, 2159, 2165, 2165, 2156, 2161, 2166, - 2166, 2170, 2167, 2168, 2168, 2169, 2169, 2173, 2171, 2162, - 2172, 2180, 2173, 2170, 2166, 2177, 2172, 2174, 2174, 2175, - 2175, 2177, 2176, 2182, 2179, 2166, 2171, 2176, 2179, 2181, - 2184, 2185, 2187, 2181, 2186, 2188, 2185, 2190, 2189, 2191, - 2188, 2192, 2193, 2182, 2194, 2194, 2192, 2187, 2195, 2197, - 2196, 2198, 2195, 2190, 2197, 2184, 2189, 2186, 2199, 2191, - 2200, 2201, 2202, 2204, 2193, 2196, 2203, 2202, 2205, 2205, - 2207, 2208, 2200, 2209, 2210, 2211, 2199, 2198, 2207, 2203, + 2153, 2156, 2156, 2155, 2159, 2160, 2163, 2165, 2159, 47, + 2160, 2164, 2161, 2152, 2158, 2157, 2166, 2164, 2167, 2171, + 2168, 2166, 2166, 2170, 2167, 2163, 2168, 2169, 2176, 2165, + 2169, 2170, 2174, 2174, 2175, 2175, 2179, 2176, 2180, 2171, + 2177, 2177, 2178, 2178, 2181, 2189, 2182, 2191, 2179, 2175, + 2181, 2182, 2183, 2183, 2184, 2184, 2180, 2185, 2186, 2188, + 2175, 2193, 2185, 2188, 2186, 2189, 2190, 2191, 2194, 2195, + 2190, 2197, 2196, 2194, 2199, 2198, 2197, 2200, 2201, 2202, + 2203, 2203, 2207, 2201, 2204, 2205, 2193, 2196, 2204, 2206, + 2199, 2208, 2195, 2198, 2206, 2209, 2210, 2200, 2211, 2212, - 2201, 2204, 2212, 2213, 2214, 2215, 2220, 2217, 2512, 2221, - 2208, 2222, 2209, 2222, 2219, 2221, 2214, 2210, 2224, 2211, - 2220, 2212, 2217, 2224, 2213, 2226, 2215, 2219, 2223, 2223, - 2225, 2227, 2512, 2225, 2228, 2229, 2229, 2233, 2226, 2230, - 2230, 2231, 2234, 2231, 2236, 2227, 2247, 2228, 2232, 2232, - 2235, 2235, 2233, 2236, 2242, 2234, 2236, 2237, 2237, 2238, - 2238, 2239, 2241, 2243, 2244, 2247, 2239, 2241, 2245, 2245, - 2246, 2246, 2248, 2248, 2242, 2249, 2244, 2250, 2250, 2251, - 2252, 2253, 2253, 2243, 2255, 2252, 2254, 2254, 2256, 2257, - 2258, 2259, 2263, 2249, 2251, 2261, 2265, 2256, 2255, 2266, + 2205, 2202, 2213, 2211, 2214, 2214, 2216, 2209, 2207, 2208, + 2217, 2218, 2212, 2219, 2216, 2210, 2220, 2222, 2221, 2223, + 2213, 2224, 2228, 2231, 2226, 2231, 2230, 2229, 18, 2217, + 2218, 2223, 2230, 2232, 2232, 2228, 2219, 2221, 2222, 2226, + 2220, 2229, 2224, 2233, 2234, 2235, 2236, 2234, 2233, 2237, + 2238, 2238, 2239, 2239, 2240, 2242, 2240, 17, 2235, 2243, + 2236, 2251, 2237, 2241, 2241, 2244, 2244, 2245, 2246, 2246, + 2242, 2252, 2243, 2247, 2247, 2248, 2245, 2250, 2253, 2245, + 2248, 2251, 2250, 2254, 2254, 2255, 2255, 2256, 2257, 2257, + 2253, 2252, 2258, 2259, 2259, 2261, 2260, 2262, 2262, 2264, - 2261, 2262, 2262, 2270, 2258, 2266, 2257, 2264, 2264, 2267, - 2259, 2263, 2267, 2271, 2265, 2268, 2268, 2269, 2269, 2272, - 2274, 2272, 2270, 2275, 2276, 2276, 2278, 2279, 2271, 2280, - 2281, 2268, 2282, 2282, 2281, 2274, 2283, 2285, 2284, 2286, - 2288, 2288, 2275, 2284, 2280, 2289, 2278, 2291, 2292, 2290, - 2279, 2293, 2285, 2294, 2286, 2283, 2290, 2295, 2295, 2296, - 2297, 2291, 2297, 2301, 2298, 2289, 2292, 2298, 2296, 2293, - 2300, 2304, 2302, 2303, 2305, 2301, 2300, 2302, 2303, 2294, - 2306, 2307, 2298, 2308, 2298, 2310, 2307, 2305, 2311, 2312, - 2310, 2313, 2314, 2311, 2315, 2316, 2304, 2313, 2314, 2317, + 2261, 2263, 2263, 2265, 2266, 2267, 2256, 2268, 2272, 2270, + 2258, 2260, 2265, 2264, 2270, 2271, 2271, 2273, 2273, 2267, + 2274, 2266, 2275, 2277, 2277, 2279, 2268, 2272, 2275, 2276, + 2278, 2278, 2276, 2280, 2281, 2283, 2281, 2284, 2274, 2277, + 2285, 2285, 2287, 2288, 2279, 2289, 2292, 2290, 2280, 2293, + 2283, 2290, 2291, 2291, 2293, 2294, 2284, 2295, 2297, 2297, + 2289, 2298, 2287, 2300, 2299, 2292, 2288, 2301, 2302, 2303, + 2294, 2299, 2295, 2304, 2304, 2305, 2306, 2300, 2306, 2307, + 2310, 2298, 2307, 2309, 2305, 2301, 2302, 2313, 2311, 2309, + 2314, 2312, 2310, 2311, 2315, 2303, 2312, 2307, 2317, 2307, - 2320, 2306, 2318, 2319, 2312, 2317, 2321, 2318, 2319, 2308, - 2316, 2322, 2323, 2324, 2322, 2315, 2327, 2325, 2326, 2321, - 2330, 2323, 2324, 2328, 2330, 2320, 2325, 2326, 2329, 2328, - 2327, 2332, 2334, 2336, 2329, 2335, 2335, 2337, 2337, 2336, - 2338, 2334, 2339, 2339, 2341, 2340, 2337, 2343, 2347, 2338, - 2340, 2332, 2344, 2345, 2345, 2346, 2350, 2347, 2351, 2349, - 2355, 2356, 2352, 2343, 2341, 2355, 2341, 2357, 2344, 2499, - 2346, 2349, 2350, 2351, 2352, 2354, 2358, 2358, 2354, 2357, - 2499, 2356, 2359, 2359, 2361, 2361, 2362, 2363, 2364, 2362, - 2365, 2366, 2363, 2368, 2364, 2371, 2365, 2367, 2367, 2370, + 2316, 2319, 2320, 2314, 2321, 2316, 2319, 2320, 2322, 2324, + 2323, 2325, 2313, 2327, 2322, 2315, 2323, 2326, 2327, 2321, + 2328, 2329, 2330, 2326, 2317, 2328, 2325, 2332, 2331, 2333, + 2324, 2331, 2334, 2335, 2336, 2330, 2332, 2337, 2333, 2338, + 2339, 2334, 2335, 2337, 2339, 2338, 2329, 2341, 2336, 2343, + 2344, 2345, 2345, 2348, 2346, 2347, 2347, 2349, 2349, 2344, + 2346, 2350, 2348, 2351, 2347, 2353, 2350, 2341, 2354, 2343, + 2355, 2355, 2356, 2357, 2359, 2360, 2362, 2361, 2366, 2368, + 2368, 2353, 2357, 2351, 2354, 2351, 2359, 2356, 2362, 2365, + 2364, 2360, 2361, 2364, 2365, 2367, 2369, 2369, 2366, 2371, - 2366, 2369, 2369, 2372, 2373, 2373, 2374, 2368, 2376, 2371, - 2375, 2370, 2374, 2376, 2378, 2384, 2379, 2382, 2378, 2379, - 2380, 2380, 2372, 2381, 2375, 2383, 2382, 2385, 2381, 2386, - 2386, 2385, 2387, 2389, 2383, 2384, 2390, 2391, 2389, 2392, - 2393, 2394, 2395, 2396, 2393, 2387, 2397, 2395, 2398, 2396, - 2399, 2400, 2397, 2392, 2401, 2402, 2390, 2391, 2405, 2401, - 2404, 2394, 2406, 2414, 2414, 2407, 2398, 2406, 2413, 2399, - 2400, 2407, 2404, 2408, 2405, 2409, 2402, 2409, 2411, 2416, - 2415, 2408, 2413, 2415, 2417, 2417, 2420, 2411, 2421, 2422, - 2420, 2423, 2423, 2424, 2421, 2427, 2427, 2429, 2431, 2435, + 2371, 2372, 2378, 2373, 2372, 2374, 2375, 2367, 2373, 2376, + 2380, 2374, 2375, 2377, 2377, 2381, 2378, 2382, 2376, 2379, + 2379, 2384, 2380, 2383, 2383, 2385, 2386, 2384, 2388, 2381, + 2389, 2386, 2388, 2389, 2390, 2390, 2382, 2391, 2392, 2385, + 2393, 2394, 2391, 2397, 2395, 2396, 2396, 2392, 2395, 2393, + 2399, 2400, 2401, 2402, 2403, 2399, 2397, 2404, 2403, 2405, + 2406, 2394, 2407, 2408, 2405, 2409, 2406, 2402, 2407, 2410, + 2411, 2400, 2401, 2412, 2414, 2411, 2415, 2404, 2416, 2417, + 2426, 2408, 2418, 2416, 2409, 2417, 2414, 2419, 2410, 2419, + 2418, 2421, 2415, 2423, 2412, 2424, 2424, 2432, 2425, 2431, - 2432, 2422, 2424, 2436, 2435, 2416, 2437, 2446, 2438, 2439, - 2440, 2440, 2431, 2438, 2439, 2429, 2432, 2442, 2442, 2444, - 2445, 2445, 2447, 2446, 2450, 2444, 2448, 2437, 2452, 2436, - 2451, 2448, 2456, 2451, 2453, 2454, 2454, 2458, 2459, 2457, - 2452, 2456, 2463, 2450, 2447, 2457, 2453, 2461, 2461, 2462, - 2464, 2469, 2462, 2459, 2470, 2458, 2466, 2466, 2467, 2467, - 2468, 2463, 2471, 2470, 2472, 2468, 2472, 2471, 2464, 2469, - 2473, 2474, 2476, 2477, 2475, 2478, 2479, 2476, 2480, 2480, - 2484, 2479, 2481, 2481, 2473, 2474, 2475, 2482, 2482, 2483, - 2483, 2485, 2484, 2477, 2486, 2478, 2487, 2487, 2489, 2486, + 2421, 2425, 2427, 2427, 2430, 2431, 2426, 2423, 2430, 2432, + 2433, 2433, 2434, 2437, 2437, 2439, 2441, 2445, 2442, 2446, + 2447, 2434, 2445, 2448, 2449, 2450, 2450, 2456, 2448, 2449, + 2441, 2452, 2452, 2439, 2442, 2457, 2454, 2455, 2455, 2458, + 2460, 2447, 2454, 2456, 2458, 2446, 2461, 2466, 2462, 2461, + 2463, 2464, 2464, 2468, 2469, 2467, 2466, 2457, 2473, 2460, + 2462, 2467, 2463, 2471, 2471, 2472, 2474, 2479, 2472, 2469, + 2480, 2468, 2476, 2476, 2477, 2477, 2478, 2473, 2481, 2480, + 2482, 2478, 2482, 2481, 2474, 2479, 2483, 2484, 2486, 2487, + 2485, 2488, 2489, 2486, 2490, 2490, 2494, 2489, 2491, 2491, - 2488, 2488, 2490, 2491, 2492, 2493, 2496, 2494, 2500, 2485, - 2489, 2495, 2495, 2497, 2497, 2491, 2498, 2498, 2502, 2503, - 2500, 2501, 2490, 2494, 2492, 2496, 2493, 2504, 2501, 2505, - 2502, 2506, 2504, 2507, 2507, 2508, 2509, 2510, 2513, 2503, - 2511, 2514, 2516, 2515, 2508, 2515, 2517, 2517, 2522, 2505, - 2518, 2506, 2513, 2511, 2516, 2519, 2520, 2510, 2523, 2518, - 2524, 2525, 2509, 2514, 2525, 2526, 2522, 2527, 2528, 0, - 2519, 2520, 2527, 2528, 2529, 2529, 2530, 2530, 2536, 2526, - 2523, 2531, 2531, 2524, 2533, 2533, 2535, 2535, 2537, 2538, - 2539, 2541, 2542, 2543, 2544, 2545, 2536, 2546, 2547, 2537, + 2483, 2484, 2485, 2492, 2492, 2493, 2493, 2495, 2494, 2487, + 2496, 2488, 2497, 2497, 2499, 2496, 2498, 2498, 2500, 2501, + 2502, 2503, 2506, 2504, 2509, 2495, 2499, 2505, 2505, 2507, + 2507, 2501, 2508, 2508, 2510, 2509, 2511, 2512, 2500, 2504, + 2502, 2506, 2503, 2511, 2513, 2514, 2510, 2515, 2516, 2512, + 2514, 2517, 2517, 2518, 2519, 2519, 2520, 2521, 2522, 2523, + 2524, 2527, 2518, 2525, 2513, 2528, 2528, 2515, 2516, 2529, + 2526, 2522, 2526, 2527, 2524, 2530, 2531, 2521, 2529, 2533, + 2534, 2535, 2520, 2523, 2536, 2525, 2537, 2536, 2538, 2539, + 2530, 2531, 2548, 2538, 2539, 2540, 2540, 2533, 2541, 2541, - 2547, 2548, 2549, 2555, 2545, 2539, 2550, 2556, 2538, 2554, - 2542, 2541, 2551, 2551, 2544, 2543, 2556, 2546, 2553, 2553, - 2549, 2548, 2559, 2554, 2550, 2555, 2557, 2557, 2560, 2560, - 2561, 2559, 2562, 2563, 2564, 2565, 2566, 2568, 2571, 2567, - 2563, 2569, 2569, 2570, 2570, 2572, 2573, 2577, 2561, 2564, - 2562, 2576, 2573, 2565, 2566, 2567, 2568, 2576, 2571, 2574, - 2574, 2575, 2575, 2572, 2578, 2577, 2579, 2580, 2581, 2582, - 2583, 2584, 2585, 2581, 2585, 2590, 2584, 2586, 2586, 2578, - 2587, 2580, 2587, 2588, 2588, 2579, 2592, 2593, 2594, 2582, - 2583, 2595, 2596, 2597, 2590, 2592, 2598, 2596, 2597, 2599, + 2537, 2547, 2534, 2548, 2535, 2542, 2542, 2544, 2544, 2546, + 2546, 2549, 2550, 2552, 2553, 2554, 2555, 2556, 2557, 2547, + 2558, 2559, 2558, 0, 2560, 2561, 2556, 2550, 2562, 2562, + 2549, 2565, 2553, 2552, 2564, 2564, 2555, 2554, 2557, 2566, + 2567, 2559, 2560, 2561, 2570, 2565, 2568, 2568, 2572, 2567, + 2571, 2571, 2573, 2570, 2575, 2574, 2576, 2577, 2579, 2582, + 2578, 2566, 2574, 2580, 2580, 2583, 2572, 2581, 2581, 2575, + 2573, 2588, 2584, 2590, 2576, 2577, 2578, 2579, 2584, 2582, + 2585, 2585, 2587, 2583, 2586, 2586, 2589, 2593, 2587, 2588, + 2591, 2592, 2590, 2594, 2595, 2596, 2592, 2596, 2598, 2595, - 2594, 2602, 2603, 2604, 2604, 2603, 2593, 2605, 2606, 2607, - 2607, 2595, 2608, 2609, 2612, 2610, 2598, 2617, 2599, 2610, - 2613, 2602, 2605, 2608, 2613, 2615, 2606, 2618, 2609, 2612, - 2614, 2614, 2617, 2619, 2620, 2620, 2622, 2623, 2615, 2624, - 2625, 2625, 2626, 2624, 2627, 2627, 2623, 2618, 2622, 2628, - 2629, 2630, 2631, 2619, 2628, 2632, 2633, 2633, 2639, 2629, - 2641, 2626, 2638, 2638, 2631, 2640, 2640, 2630, 2642, 2643, - 2644, 2646, 2646, 2641, 2645, 2632, 2647, 2648, 2643, 2644, - 2639, 2642, 2653, 2645, 2650, 2650, 2654, 2653, 2655, 2656, - 2657, 2654, 2648, 2658, 2656, 2659, 2647, 2660, 2657, 2662, + 2598, 2589, 2597, 2597, 2591, 2599, 2599, 2593, 2601, 2603, + 2604, 2605, 2606, 2594, 2607, 2608, 2609, 2613, 2603, 2607, + 2608, 2610, 2614, 2605, 2616, 2614, 2617, 2601, 2620, 2604, + 2615, 2615, 2606, 2618, 2618, 2619, 2609, 2613, 2621, 2616, + 2610, 2623, 2621, 2620, 2617, 2624, 2619, 2625, 2625, 2624, + 2626, 2628, 2629, 2630, 2631, 2631, 2623, 2633, 2634, 2637, + 2635, 2636, 2636, 2626, 2635, 2641, 2628, 2634, 2640, 2633, + 2638, 2638, 2629, 2630, 2639, 2642, 2643, 2640, 2637, 2639, + 2650, 2641, 2644, 2644, 2649, 2649, 2652, 2642, 2651, 2651, + 2653, 2654, 2655, 2657, 2657, 2656, 2643, 2658, 2659, 2652, - 2665, 2663, 2655, 2664, 2659, 2660, 2663, 2669, 2664, 2666, - 2666, 2673, 2658, 2668, 2662, 2665, 2667, 2667, 2668, 2670, - 2670, 2671, 2672, 2674, 2675, 2678, 2669, 2672, 2671, 2673, - 2675, 2676, 2677, 2677, 2679, 2684, 2676, 2680, 2680, 2679, - 2678, 2674, 2681, 2681, 2685, 2685, 2686, 2687, 2684, 2686, - 2688, 2689, 2687, 2687, 2690, 2688, 2689, 2691, 2692, 2693, - 2694, 2695, 2692, 2691, 2693, 2696, 2697, 2701, 2690, 2694, - 2700, 2698, 2699, 2696, 2703, 2700, 2695, 2698, 2699, 2701, - 2704, 2703, 2707, 2705, 2709, 2704, 2705, 2697, 2710, 2709, - 2711, 2712, 2713, 2710, 2707, 2719, 2714, 2715, 2715, 2724, + 2654, 2655, 2650, 2653, 2656, 2661, 2661, 2664, 2666, 2665, + 2667, 2668, 2664, 2659, 2665, 2667, 2669, 2658, 2670, 2668, + 2671, 2673, 2666, 2677, 2675, 2676, 2681, 2670, 2671, 2675, + 2676, 2678, 2678, 2679, 2679, 2669, 2673, 2680, 2677, 2682, + 2682, 2683, 2680, 2685, 2684, 2681, 2686, 2687, 2683, 2684, + 2688, 2689, 2689, 2687, 2690, 2688, 2715, 2691, 2692, 2692, + 2696, 2685, 2691, 2715, 2686, 2693, 2693, 2697, 2697, 2690, + 2699, 2698, 2700, 2696, 2698, 2699, 2699, 2700, 2701, 2702, + 2703, 2704, 2705, 2701, 2707, 2704, 2703, 2705, 2706, 2709, + 2708, 2712, 2713, 2702, 2710, 2711, 2712, 2706, 2708, 2707, - 2716, 2713, 2725, 0, 2712, 2714, 2720, 2726, 2711, 2716, - 2721, 2729, 2720, 2719, 2727, 2727, 2721, 2728, 2724, 2730, - 2731, 2733, 2725, 2735, 2728, 2737, 2726, 2740, 2730, 2738, - 2729, 2732, 2732, 2738, 0, 2731, 2739, 2739, 2735, 2743, - 2733, 2741, 2742, 2744, 0, 2737, 2746, 2741, 2742, 2744, - 2745, 2745, 2740, 2747, 2746, 2749, 2750, 2743, 2747, 2752, - 2753, 2755, 2754, 2753, 2749, 2752, 2754, 2756, 2759, 2750, - 2758, 2758, 2760, 2760, 2769, 2755, 2761, 2761, 2763, 2763, - 2764, 2771, 2756, 2765, 2764, 2775, 2759, 2770, 2765, 2767, - 2767, 2772, 2770, 2771, 2769, 2773, 2772, 2772, 2776, 2776, + 2710, 2711, 2716, 2717, 2713, 2719, 2717, 2716, 2721, 2722, + 2709, 2723, 2724, 2721, 2722, 2725, 2731, 2719, 2726, 2727, + 2727, 2728, 2732, 2736, 2725, 2724, 2733, 2726, 2732, 2723, + 2728, 2737, 2733, 2738, 2731, 2739, 2739, 2740, 2741, 2742, + 2743, 2745, 2736, 2747, 2740, 2744, 2744, 2749, 2742, 2750, + 2752, 2737, 2738, 2750, 2755, 2743, 0, 2741, 2747, 2753, + 2745, 2751, 2751, 2754, 2756, 2753, 2759, 2749, 2758, 2754, + 2756, 2759, 2755, 2757, 2757, 2752, 2758, 2761, 2762, 2764, + 2765, 2767, 2768, 2765, 2766, 2764, 2761, 2771, 2766, 2770, + 2770, 2762, 2772, 2772, 2781, 2767, 0, 2768, 2773, 2773, - 2778, 2778, 2779, 2779, 2781, 2775, 2780, 2773, 2782, 2780, - 2784, 2784, 2785, 2787, 2788, 2788, 2791, 2781, 2789, 2789, - 2794, 2782, 2790, 2790, 2792, 2792, 2793, 2795, 2796, 2805, - 2785, 2791, 2810, 2787, 2796, 2797, 2797, 2801, 2794, 2793, - 2798, 2795, 2802, 2801, 2798, 2804, 2806, 2802, 2807, 2808, - 2804, 2804, 2805, 2809, 2811, 2808, 2817, 2810, 2811, 2809, - 2812, 2812, 2815, 2820, 2817, 2823, 2806, 2815, 2807, 2818, - 2821, 2824, 2818, 2821, 2822, 2822, 2824, 2825, 2826, 2827, - 2828, 2828, 2823, 2823, 2832, 2829, 2830, 2831, 2820, 2830, - 2837, 2837, 2833, 2827, 2836, 2825, 2845, 2830, 2826, 2829, + 2775, 2775, 2776, 2777, 2783, 2771, 2776, 2782, 2777, 2779, + 2779, 2785, 2782, 2784, 2781, 2787, 2783, 2793, 2784, 2784, + 2788, 2788, 2797, 2785, 2790, 2790, 2791, 2791, 2792, 2794, + 2793, 2792, 2796, 2796, 2799, 2787, 2800, 2800, 2801, 2801, + 2797, 2803, 2794, 2802, 2802, 2804, 2804, 2805, 2806, 2807, + 2817, 2808, 2809, 2809, 2799, 2810, 2803, 2808, 2813, 2810, + 2805, 2818, 2814, 2807, 2813, 2816, 2806, 2814, 2819, 2820, + 2816, 2816, 2821, 2817, 2822, 2820, 2823, 2829, 2821, 2827, + 2823, 2818, 2824, 2824, 2827, 2829, 2830, 2832, 2819, 2830, + 2833, 2834, 2834, 2833, 2839, 2836, 2835, 2837, 2838, 2822, - 2833, 2831, 2834, 2832, 2835, 2838, 2838, 2834, 2834, 2835, - 2835, 2839, 2839, 2836, 2840, 2840, 2841, 2841, 2842, 2843, - 2844, 2846, 2845, 2847, 2843, 2848, 2846, 2849, 2850, 2851, - 2848, 2853, 2853, 2856, 2842, 2871, 2849, 2854, 2854, 2871, - 2844, 2855, 2847, 2859, 2855, 2858, 2858, 2869, 2850, 2851, - 2859, 2856, 2860, 2860, 2861, 2863, 2863, 2864, 2865, 2861, - 2866, 2867, 2870, 2870, 2872, 2869, 2864, 2865, 2873, 2866, - 2867, 2874, 2876, 2872, 2875, 2877, 2878, 2876, 2876, 2879, - 2887, 2883, 2874, 2879, 2888, 2878, 2883, 2873, 2877, 2875, - 2884, 2884, 2886, 2886, 2887, 2889, 2891, 2891, 2892, 2893, + 2836, 2840, 2840, 2841, 2844, 2846, 2843, 2848, 2839, 2887, + 2846, 2846, 2832, 2835, 2835, 2837, 2842, 2841, 2838, 2842, + 2843, 2845, 2857, 2844, 2887, 2847, 2848, 2842, 2854, 2845, + 2847, 2847, 2849, 2849, 2850, 2850, 2851, 2851, 2852, 2852, + 2853, 2853, 2855, 2856, 2854, 2858, 2859, 2855, 2857, 2860, + 2858, 2861, 2862, 2863, 2860, 2865, 2865, 2866, 2866, 2867, + 2861, 2868, 2867, 2856, 2871, 2859, 2870, 2870, 2872, 2872, + 2873, 2871, 2862, 2863, 2876, 2873, 2875, 2875, 2877, 2868, + 2878, 2879, 2881, 2876, 2882, 2882, 2884, 2877, 2883, 2878, + 2879, 2885, 2883, 2886, 2889, 2884, 2888, 2890, 2900, 2891, - 2896, 2897, 2900, 2898, 2901, 2903, 2897, 2892, 2905, 2888, - 2901, 2893, 2898, 2889, 2907, 2908, 2912, 2903, 2910, 2907, - 2908, 2912, 2900, 2909, 2909, 2896, 2913, 2910, 2914, 2905, - 2915, 2915, 2917, 2917, 2915, 2918, 2918, 2919, 2919, 2913, - 2920, 2921, 2914, 2922, 0, 2923, 2925, 2929, 2926, 2920, - 2923, 2927, 2925, 2926, 2928, 2928, 2927, 2930, 2931, 2932, - 2933, 2921, 2922, 2935, 2932, 2929, 2934, 2936, 2936, 2930, - 2938, 2939, 2934, 2942, 2938, 2940, 2939, 2946, 2933, 2931, - 2940, 2941, 2941, 2943, 2944, 2948, 2948, 2950, 2935, 2951, - 2952, 2954, 2942, 2955, 2952, 2953, 2960, 2946, 2943, 2944, + 2881, 2888, 2888, 2891, 2886, 2899, 2890, 2889, 2895, 2901, + 2885, 2896, 2896, 2895, 2898, 2898, 2903, 2903, 2905, 2899, + 2904, 2908, 2912, 2900, 2910, 2915, 2909, 2901, 2913, 2904, + 2905, 2909, 2917, 2910, 2913, 2919, 2920, 2915, 2921, 2921, + 2919, 2920, 2912, 2922, 2924, 2925, 2908, 2926, 2932, 2924, + 2927, 2927, 2922, 2917, 2927, 2929, 2929, 2932, 2925, 2930, + 2930, 2926, 2931, 2931, 2933, 2935, 2934, 2937, 2941, 2938, + 2935, 2939, 2943, 2937, 2938, 2942, 2939, 2940, 2940, 2945, + 2947, 2948, 2948, 2944, 2933, 2934, 2941, 2942, 2944, 2946, + 2950, 2951, 2954, 2943, 2950, 2946, 2951, 2945, 2952, 2953, - 2950, 2956, 2951, 2957, 2953, 2958, 2958, 2954, 2957, 2956, - 2959, 2961, 2955, 2963, 2960, 2962, 2962, 2966, 2966, 2959, - 2967, 2967, 2969, 2971, 2971, 2973, 2974, 2980, 2975, 2976, - 2977, 2981, 2963, 2975, 2983, 2977, 2984, 2961, 2979, 2979, - 2981, 2973, 2974, 2969, 2982, 2976, 2987, 2980, 2986, 2986, - 2982, 2988, 2989, 2989, 2992, 2984, 2993, 2983, 2994, 2996, - 2987, 2999, 2993, 2994, 2997, 2997, 2998, 2998, 3000, 3002, - 2988, 3001, 3001, 3003, 2992, 3004, 2999, 3005, 3006, 3008, - 3002, 2996, 3003, 3005, 3007, 3009, 3009, 3010, 3000, 3011, - 3012, 3001, 3011, 3012, 3017, 3004, 3007, 3006, 3018, 3008, + 2953, 2955, 2956, 2952, 2958, 2947, 2960, 2960, 2962, 2963, + 2964, 2954, 2966, 2967, 2964, 2968, 2955, 2956, 2965, 2972, + 2969, 2962, 2963, 2968, 2958, 2969, 2971, 2965, 2966, 2970, + 2970, 2973, 2967, 2974, 2974, 2971, 2975, 2972, 2978, 2978, + 2979, 2979, 2981, 2983, 2983, 2985, 2986, 2987, 2988, 2989, + 2991, 2991, 2987, 2992, 2989, 2975, 2993, 2973, 2995, 2996, + 2994, 2985, 2986, 2981, 2988, 2993, 2994, 2998, 2998, 2999, + 3000, 3001, 3001, 2992, 3004, 3006, 3005, 3008, 2996, 3018, + 3006, 2995, 3005, 2999, 3009, 3009, 3010, 3010, 3011, 3000, + 3012, 3013, 3013, 3014, 3004, 3016, 3015, 3019, 3018, 3008, - 3013, 3013, 3010, 3019, 3020, 3020, 3017, 3021, 3022, 3019, - 3021, 3023, 3025, 3028, 3022, 3026, 3026, 3025, 3018, 3027, - 3029, 3030, 3031, 3031, 3027, 3033, 3029, 3034, 3035, 3023, - 3036, 3038, 3028, 3037, 3037, 3039, 0, 3033, 3030, 3030, - 3040, 3042, 3042, 3036, 3045, 3034, 3043, 3043, 3051, 3040, - 3038, 3039, 3044, 3035, 3046, 3047, 3047, 3044, 3045, 3046, - 3048, 3048, 3049, 3049, 3050, 3052, 3058, 3053, 3055, 3055, - 3060, 3052, 3053, 3061, 3051, 3062, 3063, 3050, 3064, 3064, - 3066, 3066, 3067, 3068, 3070, 3058, 3069, 3071, 3072, 3072, - 3073, 3073, 3060, 3075, 3062, 3061, 3071, 3076, 3063, 3075, + 3017, 3020, 3022, 3011, 3014, 3015, 3017, 3021, 3021, 3019, + 3012, 3013, 3030, 3023, 3029, 3016, 3023, 3022, 3035, 3024, + 0, 3020, 3024, 3025, 3025, 3031, 3029, 3032, 3032, 3034, + 3033, 3031, 3030, 3033, 3037, 3034, 3035, 3038, 3038, 3037, + 3039, 3040, 3041, 3045, 3042, 3039, 3043, 3043, 3041, 3046, + 3047, 3048, 3049, 3049, 3050, 3045, 3051, 3052, 3054, 3054, + 3040, 3042, 3042, 3057, 3048, 3056, 3052, 3046, 3055, 3055, + 3056, 3058, 3051, 3050, 3062, 3047, 3058, 3057, 3059, 3059, + 3060, 3060, 3061, 3061, 3063, 3064, 3070, 3062, 3065, 3067, + 3067, 3064, 3072, 3065, 3073, 3075, 3074, 3076, 3076, 3078, - 3069, 3077, 3068, 3081, 3070, 3078, 3082, 3082, 3067, 3085, - 3078, 3084, 3084, 3086, 3085, 3087, 3088, 3076, 3089, 3095, - 3077, 3087, 3090, 3090, 3081, 3091, 3089, 3086, 3088, 3093, - 3091, 3094, 3096, 3093, 3098, 3097, 3094, 3099, 3102, 3095, - 3097, 3101, 3103, 3099, 3104, 3106, 3098, 3113, 0, 3101, - 3107, 3108, 3096, 3109, 3110, 3112, 3115, 3102, 3117, 3110, - 3112, 3115, 3103, 3106, 3104, 3114, 3107, 3113, 3108, 3108, - 3118, 3114, 3119, 3118, 3109, 3122, 3122, 3124, 3117, 3123, - 3123, 3124, 3128, 3128, 3129, 3119, 3130, 3131, 3131, 3129, - 3133, 3133, 3134, 3134, 3138, 3134, 3135, 3135, 3138, 3135, + 3078, 3079, 3080, 3082, 3081, 3070, 3084, 3084, 3085, 3085, + 3063, 3083, 3088, 3087, 3072, 3074, 3073, 3075, 3081, 3087, + 3083, 3080, 3089, 3082, 3090, 3093, 3100, 3079, 3098, 3090, + 3094, 3094, 3088, 3096, 3096, 3097, 3101, 3099, 3100, 3107, + 3097, 3089, 3098, 3099, 3101, 3103, 3093, 3102, 3102, 3105, + 3103, 3106, 3108, 3105, 3110, 3109, 3106, 3111, 3114, 3107, + 3109, 3113, 3115, 3111, 3116, 3118, 3110, 3125, 0, 3113, + 3119, 3120, 3108, 3121, 3122, 3124, 3127, 3114, 3129, 3122, + 3124, 3127, 3115, 3118, 3116, 3126, 3119, 3125, 3120, 3120, + 3130, 3126, 3131, 3130, 3121, 3134, 3134, 3136, 3129, 3135, - 3136, 3136, 3140, 3137, 3137, 3130, 3137, 3140, 3141, 3142, - 3142, 3143, 3144, 3147, 3148, 3149, 3151, 3141, 3150, 3150, - 3149, 3154, 3157, 3155, 3156, 3158, 3144, 3160, 3156, 3143, - 3155, 3157, 3161, 3147, 3148, 3163, 3151, 3161, 3162, 3162, - 3158, 3164, 3164, 3167, 3163, 3160, 3154, 3165, 3165, 3166, - 3166, 3168, 3169, 3172, 3170, 3173, 3168, 3171, 3167, 3170, - 3170, 3169, 3174, 3171, 3169, 3177, 3175, 3176, 3178, 3178, - 3173, 3175, 3176, 3179, 3180, 3181, 3181, 3183, 3172, 3179, - 3180, 3182, 3182, 3174, 3177, 3184, 3187, 3187, 3189, 3189, - 3184, 3190, 3183, 3193, 3193, 3194, 3194, 3195, 3195, 3202, + 3135, 3136, 3140, 3140, 3141, 3131, 3142, 3143, 3143, 3141, + 3145, 3145, 3146, 3146, 3150, 3146, 3147, 3147, 3150, 3147, + 3148, 3148, 3152, 3149, 3149, 3142, 3149, 3152, 3153, 3154, + 3154, 3155, 3156, 3159, 3160, 3161, 3163, 3153, 3162, 3162, + 3161, 3166, 3169, 3167, 3168, 3170, 3156, 3172, 3168, 3155, + 3167, 3169, 3173, 3159, 3160, 3175, 3163, 3173, 3174, 3174, + 3170, 3176, 3176, 3179, 3175, 3172, 3166, 3177, 3177, 3178, + 3178, 3180, 3181, 3184, 3182, 3185, 3180, 3183, 3179, 3182, + 3182, 3181, 3186, 3183, 3181, 3189, 3187, 3188, 3190, 3190, + 3185, 3187, 3188, 3191, 3192, 3193, 3193, 3195, 3184, 3191, - 3190, 3196, 3196, 3198, 3198, 3199, 3199, 3200, 3200, 3201, - 3201, 3204, 3205, 3205, 3206, 3207, 3208, 3210, 3210, 3211, - 3204, 3212, 3212, 3206, 3213, 3202, 3225, 3207, 3214, 3219, - 3215, 3216, 3216, 3217, 3217, 3223, 3208, 3224, 3211, 3213, - 3224, 3214, 3215, 3227, 3219, 3220, 3220, 3226, 3226, 3230, - 3231, 3229, 3225, 3223, 3229, 3230, 3233, 3232, 3234, 3237, - 3238, 3227, 3232, 3235, 3231, 3237, 3241, 3242, 3245, 3238, - 3241, 3255, 3254, 3257, 3255, 3233, 3234, 3254, 3263, 3235, - 3258, 3258, 3242, 3259, 3259, 3266, 3257, 3261, 3261, 3264, - 3268, 3265, 3270, 3277, 3245, 3265, 3271, 3272, 3264, 3274, + 3192, 3194, 3194, 3186, 3189, 3196, 3199, 3199, 3201, 3201, + 3196, 3202, 3195, 3205, 3205, 3206, 3206, 3207, 3207, 3214, + 3202, 3208, 3208, 3210, 3210, 3211, 3211, 3212, 3212, 3213, + 3213, 3216, 3217, 3217, 3218, 3219, 3220, 3222, 3222, 3223, + 3216, 3224, 3224, 3218, 3225, 3214, 3237, 3219, 3226, 3231, + 3227, 3228, 3228, 3229, 3229, 3235, 3220, 3236, 3223, 3225, + 3236, 3226, 3227, 3239, 3231, 3232, 3232, 3238, 3238, 3242, + 3243, 3241, 3237, 3235, 3241, 3242, 3245, 3244, 3246, 3249, + 3250, 3239, 3244, 3247, 3243, 3249, 3253, 3254, 3257, 3250, + 3253, 3267, 3266, 3269, 3267, 3245, 3246, 3266, 3275, 3247, - 3276, 3263, 3272, 3278, 3268, 3266, 3273, 3271, 3273, 3275, - 3275, 3279, 3277, 3276, 3274, 3270, 3280, 3281, 3283, 3282, - 3284, 3278, 3285, 3293, 3286, 3284, 3288, 3279, 3282, 3286, - 3283, 3289, 3281, 3287, 3287, 3294, 3289, 3293, 3295, 3295, - 3296, 3280, 3301, 3285, 3297, 3297, 3288, 3298, 3298, 3296, - 3299, 3299, 3300, 3300, 3302, 3294, 3303, 3304, 3305, 3303, - 3306, 3301, 3304, 3305, 3307, 3308, 3309, 3311, 3313, 3310, - 3318, 3308, 3311, 3323, 3302, 3312, 3312, 3314, 3314, 3307, - 3309, 3310, 3316, 3316, 3317, 3306, 3319, 3319, 3313, 3318, - 3321, 3323, 3326, 3326, 3327, 3327, 3328, 3329, 3332, 3317, + 3270, 3270, 3254, 3271, 3271, 3278, 3269, 3273, 3273, 3276, + 3280, 3277, 3282, 3289, 3257, 3277, 3283, 3284, 3276, 3286, + 3288, 3275, 3284, 3290, 3280, 3278, 3285, 3283, 3285, 3287, + 3287, 3291, 3289, 3288, 3286, 3282, 3292, 3293, 3295, 3294, + 3296, 3290, 3297, 3305, 3298, 3296, 3300, 3291, 3294, 3298, + 3295, 3301, 3293, 3299, 3299, 3306, 3301, 3305, 3307, 3307, + 3308, 3292, 3313, 3297, 3309, 3309, 3300, 3310, 3310, 3308, + 3311, 3311, 3312, 3312, 3314, 3306, 3315, 3316, 3317, 3315, + 3318, 3313, 3316, 3317, 3319, 3320, 3321, 3323, 3325, 3322, + 3330, 3320, 3323, 3335, 3314, 3324, 3324, 3326, 3326, 3319, - 3330, 3331, 3333, 3334, 3328, 3321, 3330, 3331, 3335, 3336, - 3336, 3341, 3332, 3335, 3342, 3333, 3329, 3338, 3338, 3344, - 3345, 3347, 3334, 3348, 3345, 3349, 3350, 3351, 3348, 3352, - 3353, 3354, 3341, 3344, 3342, 3353, 3354, 3355, 3355, 3350, - 3351, 3347, 3358, 3359, 3349, 3360, 3361, 3361, 3352, 3362, - 3363, 3364, 3364, 3365, 3362, 3366, 3363, 3368, 3365, 3369, - 3366, 3359, 3358, 3367, 3360, 3369, 3371, 3371, 3367, 3372, - 3373, 3373, 3376, 3375, 3372, 3377, 3368, 3375, 3378, 3379, - 3380, 3381, 3377, 3382, 3384, 3384, 3380, 3386, 3386, 3388, - 3387, 3376, 3389, 3390, 3388, 3391, 3382, 3378, 3379, 3387, + 3321, 3322, 3328, 3328, 3329, 3318, 3331, 3331, 3325, 3330, + 3333, 3335, 3338, 3338, 3339, 3339, 3340, 3341, 3344, 3329, + 3342, 3343, 3345, 3346, 3340, 3333, 3342, 3343, 3347, 3348, + 3348, 3353, 3344, 3347, 3354, 3345, 3341, 3350, 3350, 3356, + 3357, 3359, 3346, 3360, 3357, 3361, 3362, 3363, 3360, 3364, + 3365, 3366, 3353, 3356, 3354, 3365, 3366, 3367, 3367, 3362, + 3363, 3359, 3370, 3371, 3361, 3372, 3373, 3373, 3364, 3374, + 3375, 3376, 3376, 3377, 3374, 3378, 3375, 3380, 3377, 3381, + 3378, 3371, 3370, 3379, 3372, 3381, 3383, 3383, 3379, 3384, + 3385, 3385, 3388, 3387, 3384, 3389, 3380, 3387, 3390, 3391, - 3381, 3393, 3387, 3392, 3392, 3394, 3393, 3396, 3391, 3397, - 3397, 3389, 3390, 3398, 3399, 3399, 3400, 3400, 3394, 3401, - 3402, 3403, 3404, 3404, 3401, 3405, 3406, 3402, 3406, 3408, - 3405, 3409, 3398, 3396, 3407, 3407, 3408, 3410, 3409, 3411, - 3403, 3412, 3414, 3414, 3411, 3415, 3417, 3418, 3419, 3420, - 3424, 3417, 3418, 3421, 3421, 3425, 3410, 3423, 3423, 0, - 3412, 3426, 3426, 3428, 3415, 3427, 3427, 3419, 3420, 3424, - 3428, 3430, 3430, 3432, 3425, 3431, 3431, 3434, 3437, 3438, - 3432, 3439, 3434, 3437, 3440, 3440, 3441, 3441, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3438, 0, + 3392, 3393, 3389, 3394, 3396, 3396, 3392, 3398, 3398, 3400, + 3399, 3388, 3401, 3402, 3400, 3403, 3394, 3390, 3391, 3399, + 3393, 3405, 3399, 3404, 3404, 3406, 3405, 3408, 3403, 3409, + 3409, 3401, 3402, 3410, 3411, 3411, 3412, 3412, 3406, 3413, + 3414, 3415, 3416, 3416, 3413, 3417, 3418, 3414, 3418, 3420, + 3417, 3421, 3410, 3408, 3419, 3419, 3420, 3422, 3421, 3423, + 3415, 3424, 3426, 3426, 3423, 3427, 3429, 3430, 3431, 3432, + 3436, 3429, 3430, 3433, 3433, 3437, 3422, 3435, 3435, 0, + 3424, 3438, 3438, 3440, 3427, 3439, 3439, 3431, 3432, 3436, + 3440, 3442, 3442, 3444, 3437, 3443, 3443, 3446, 3449, 3450, - 3439, 3445, 3445, 3445, 3445, 3445, 3445, 3445, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3447, 3447, 3447, 3447, 3447, - 3447, 3447, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3449, - 3449, 3449, 3449, 3449, 3449, 3449, 3450, 3450, 3450, 3450, - 3450, 3450, 3450, 3451, 3451, 3451, 3451, 3451, 3451, 3451, - 3453, 3453, 0, 3453, 3453, 3453, 3453, 3454, 3454, 0, - 0, 0, 3454, 3454, 3455, 3455, 0, 0, 3455, 0, - 3455, 3456, 0, 0, 0, 0, 0, 3456, 3457, 3457, - 0, 0, 0, 3457, 3457, 3458, 0, 0, 0, 0, - 0, 3458, 3459, 3459, 0, 3459, 3459, 3459, 3459, 3460, + 3444, 3451, 3446, 3449, 3452, 3452, 3453, 3453, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3450, 0, + 3451, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3458, 3458, + 3458, 3458, 3458, 3458, 3458, 3459, 3459, 3459, 3459, 3459, + 3459, 3459, 3460, 3460, 3460, 3460, 3460, 3460, 3460, 3461, + 3461, 3461, 3461, 3461, 3461, 3461, 3462, 3462, 3462, 3462, + 3462, 3462, 3462, 3463, 3463, 3463, 3463, 3463, 3463, 3463, + 3465, 3465, 0, 3465, 3465, 3465, 3465, 3466, 3466, 0, + 0, 0, 3466, 3466, 3467, 3467, 0, 0, 3467, 0, + 3467, 3468, 0, 0, 0, 0, 0, 3468, 3469, 3469, - 0, 0, 0, 0, 0, 3460, 3461, 3461, 0, 0, - 0, 3461, 3461, 3462, 3462, 0, 3462, 3462, 3462, 3462, - 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, - 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, - 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, - 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, 3444, - 3444 + 0, 0, 0, 3469, 3469, 3470, 0, 0, 0, 0, + 0, 3470, 3471, 3471, 0, 3471, 3471, 3471, 3471, 3472, + 0, 0, 0, 0, 0, 3472, 3473, 3473, 0, 0, + 0, 3473, 3473, 3474, 3474, 0, 3474, 3474, 3474, 3474, + 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, + 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, + 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, + 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, + 3456 } ; static yy_state_type yy_last_accepting_state; @@ -3255,7 +3262,7 @@ static void config_end_include(void) } #endif -#line 3256 "" +#line 3263 "" #define YY_NO_INPUT 1 #line 191 "./util/configlexer.lex" #ifndef YY_NO_UNPUT @@ -3264,9 +3271,9 @@ static void config_end_include(void) #ifndef YY_NO_INPUT #define YY_NO_INPUT 1 #endif -#line 3265 "" +#line 3272 "" -#line 3267 "" +#line 3274 "" #define INITIAL 0 #define quotedstring 1 @@ -3490,7 +3497,7 @@ YY_DECL { #line 211 "./util/configlexer.lex" -#line 3491 "" +#line 3498 "" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -3523,13 +3530,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 >= 3445 ) + if ( yy_current_state >= 3457 ) 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] != 6721 ); + while ( yy_base[yy_current_state] != 6741 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -4424,536 +4431,536 @@ YY_RULE_SETUP case 174: YY_RULE_SETUP #line 388 "./util/configlexer.lex" -{ YDVAR(1, VAR_BOGUS_TTL) } +{ YDVAR(1, VAR_VAL_MAX_RESTART) } YY_BREAK case 175: YY_RULE_SETUP #line 389 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } +{ YDVAR(1, VAR_BOGUS_TTL) } YY_BREAK case 176: YY_RULE_SETUP #line 390 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } +{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } YY_BREAK case 177: YY_RULE_SETUP #line 391 "./util/configlexer.lex" -{ YDVAR(1, VAR_AGGRESSIVE_NSEC) } +{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } YY_BREAK case 178: YY_RULE_SETUP #line 392 "./util/configlexer.lex" -{ YDVAR(1, VAR_IGNORE_CD_FLAG) } +{ YDVAR(1, VAR_AGGRESSIVE_NSEC) } YY_BREAK case 179: YY_RULE_SETUP #line 393 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED) } +{ YDVAR(1, VAR_IGNORE_CD_FLAG) } YY_BREAK case 180: YY_RULE_SETUP #line 394 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_TTL) } +{ YDVAR(1, VAR_SERVE_EXPIRED) } YY_BREAK case 181: YY_RULE_SETUP #line 395 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) } +{ YDVAR(1, VAR_SERVE_EXPIRED_TTL) } YY_BREAK case 182: YY_RULE_SETUP #line 396 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) } +{ YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) } YY_BREAK case 183: YY_RULE_SETUP #line 397 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) } +{ YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) } YY_BREAK case 184: YY_RULE_SETUP #line 398 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_ORIGINAL_TTL) } +{ YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) } YY_BREAK case 185: YY_RULE_SETUP #line 399 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAKE_DSA) } +{ YDVAR(1, VAR_SERVE_ORIGINAL_TTL) } YY_BREAK case 186: YY_RULE_SETUP #line 400 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAKE_SHA1) } +{ YDVAR(1, VAR_FAKE_DSA) } YY_BREAK case 187: YY_RULE_SETUP #line 401 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_LOG_LEVEL) } +{ YDVAR(1, VAR_FAKE_SHA1) } YY_BREAK case 188: YY_RULE_SETUP #line 402 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SIZE) } +{ YDVAR(1, VAR_VAL_LOG_LEVEL) } YY_BREAK case 189: YY_RULE_SETUP #line 403 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SLABS) } +{ YDVAR(1, VAR_KEY_CACHE_SIZE) } YY_BREAK case 190: YY_RULE_SETUP #line 404 "./util/configlexer.lex" -{ YDVAR(1, VAR_NEG_CACHE_SIZE) } +{ YDVAR(1, VAR_KEY_CACHE_SLABS) } YY_BREAK case 191: YY_RULE_SETUP #line 405 "./util/configlexer.lex" -{ - YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } +{ YDVAR(1, VAR_NEG_CACHE_SIZE) } YY_BREAK case 192: YY_RULE_SETUP -#line 407 "./util/configlexer.lex" -{ YDVAR(1, VAR_ZONEMD_PERMISSIVE_MODE) } +#line 406 "./util/configlexer.lex" +{ + YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } YY_BREAK case 193: YY_RULE_SETUP #line 408 "./util/configlexer.lex" -{ YDVAR(1, VAR_ZONEMD_CHECK) } +{ YDVAR(1, VAR_ZONEMD_PERMISSIVE_MODE) } YY_BREAK case 194: YY_RULE_SETUP #line 409 "./util/configlexer.lex" -{ YDVAR(1, VAR_ZONEMD_REJECT_ABSENCE) } +{ YDVAR(1, VAR_ZONEMD_CHECK) } YY_BREAK case 195: YY_RULE_SETUP #line 410 "./util/configlexer.lex" -{ YDVAR(1, VAR_ADD_HOLDDOWN) } +{ YDVAR(1, VAR_ZONEMD_REJECT_ABSENCE) } YY_BREAK case 196: YY_RULE_SETUP #line 411 "./util/configlexer.lex" -{ YDVAR(1, VAR_DEL_HOLDDOWN) } +{ YDVAR(1, VAR_ADD_HOLDDOWN) } YY_BREAK case 197: YY_RULE_SETUP #line 412 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEEP_MISSING) } +{ YDVAR(1, VAR_DEL_HOLDDOWN) } YY_BREAK case 198: YY_RULE_SETUP #line 413 "./util/configlexer.lex" -{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } +{ YDVAR(1, VAR_KEEP_MISSING) } YY_BREAK case 199: YY_RULE_SETUP #line 414 "./util/configlexer.lex" -{ YDVAR(1, VAR_USE_SYSLOG) } +{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } YY_BREAK case 200: YY_RULE_SETUP #line 415 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_IDENTITY) } +{ YDVAR(1, VAR_USE_SYSLOG) } YY_BREAK case 201: YY_RULE_SETUP #line 416 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TIME_ASCII) } +{ YDVAR(1, VAR_LOG_IDENTITY) } YY_BREAK case 202: YY_RULE_SETUP #line 417 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_QUERIES) } +{ YDVAR(1, VAR_LOG_TIME_ASCII) } YY_BREAK case 203: YY_RULE_SETUP #line 418 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_REPLIES) } +{ YDVAR(1, VAR_LOG_QUERIES) } YY_BREAK case 204: YY_RULE_SETUP #line 419 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) } +{ YDVAR(1, VAR_LOG_REPLIES) } YY_BREAK case 205: YY_RULE_SETUP #line 420 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) } +{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) } YY_BREAK case 206: YY_RULE_SETUP #line 421 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_SERVFAIL) } +{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) } YY_BREAK case 207: YY_RULE_SETUP #line 422 "./util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE) } +{ YDVAR(1, VAR_LOG_SERVFAIL) } YY_BREAK case 208: YY_RULE_SETUP #line 423 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA) } +{ YDVAR(2, VAR_LOCAL_ZONE) } YY_BREAK case 209: YY_RULE_SETUP #line 424 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA_PTR) } +{ YDVAR(1, VAR_LOCAL_DATA) } YY_BREAK case 210: YY_RULE_SETUP #line 425 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } +{ YDVAR(1, VAR_LOCAL_DATA_PTR) } YY_BREAK case 211: YY_RULE_SETUP #line 426 "./util/configlexer.lex" -{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } +{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } YY_BREAK case 212: YY_RULE_SETUP #line 427 "./util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_INTERVAL) } +{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } YY_BREAK case 213: YY_RULE_SETUP #line 428 "./util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } +{ YDVAR(1, VAR_STATISTICS_INTERVAL) } YY_BREAK case 214: YY_RULE_SETUP #line 429 "./util/configlexer.lex" -{ YDVAR(1, VAR_EXTENDED_STATISTICS) } +{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } YY_BREAK case 215: YY_RULE_SETUP #line 430 "./util/configlexer.lex" -{ YDVAR(1, VAR_SHM_ENABLE) } +{ YDVAR(1, VAR_EXTENDED_STATISTICS) } YY_BREAK case 216: YY_RULE_SETUP #line 431 "./util/configlexer.lex" -{ YDVAR(1, VAR_SHM_KEY) } +{ YDVAR(1, VAR_SHM_ENABLE) } YY_BREAK case 217: YY_RULE_SETUP #line 432 "./util/configlexer.lex" -{ YDVAR(0, VAR_REMOTE_CONTROL) } +{ YDVAR(1, VAR_SHM_KEY) } YY_BREAK case 218: YY_RULE_SETUP #line 433 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_ENABLE) } +{ YDVAR(0, VAR_REMOTE_CONTROL) } YY_BREAK case 219: YY_RULE_SETUP #line 434 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_INTERFACE) } +{ YDVAR(1, VAR_CONTROL_ENABLE) } YY_BREAK case 220: YY_RULE_SETUP #line 435 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_PORT) } +{ YDVAR(1, VAR_CONTROL_INTERFACE) } YY_BREAK case 221: YY_RULE_SETUP #line 436 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_USE_CERT) } +{ YDVAR(1, VAR_CONTROL_PORT) } YY_BREAK case 222: YY_RULE_SETUP #line 437 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_KEY_FILE) } +{ YDVAR(1, VAR_CONTROL_USE_CERT) } YY_BREAK case 223: YY_RULE_SETUP #line 438 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_CERT_FILE) } +{ YDVAR(1, VAR_SERVER_KEY_FILE) } YY_BREAK case 224: YY_RULE_SETUP #line 439 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_KEY_FILE) } +{ YDVAR(1, VAR_SERVER_CERT_FILE) } YY_BREAK case 225: YY_RULE_SETUP #line 440 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_CERT_FILE) } +{ YDVAR(1, VAR_CONTROL_KEY_FILE) } YY_BREAK case 226: YY_RULE_SETUP #line 441 "./util/configlexer.lex" -{ YDVAR(1, VAR_PYTHON_SCRIPT) } +{ YDVAR(1, VAR_CONTROL_CERT_FILE) } YY_BREAK case 227: YY_RULE_SETUP #line 442 "./util/configlexer.lex" -{ YDVAR(0, VAR_PYTHON) } +{ YDVAR(1, VAR_PYTHON_SCRIPT) } YY_BREAK case 228: YY_RULE_SETUP #line 443 "./util/configlexer.lex" -{ YDVAR(1, VAR_DYNLIB_FILE) } +{ YDVAR(0, VAR_PYTHON) } YY_BREAK case 229: YY_RULE_SETUP #line 444 "./util/configlexer.lex" -{ YDVAR(0, VAR_DYNLIB) } +{ YDVAR(1, VAR_DYNLIB_FILE) } YY_BREAK case 230: YY_RULE_SETUP #line 445 "./util/configlexer.lex" -{ YDVAR(1, VAR_DOMAIN_INSECURE) } +{ YDVAR(0, VAR_DYNLIB) } YY_BREAK case 231: YY_RULE_SETUP #line 446 "./util/configlexer.lex" -{ YDVAR(1, VAR_MINIMAL_RESPONSES) } +{ YDVAR(1, VAR_DOMAIN_INSECURE) } YY_BREAK case 232: YY_RULE_SETUP #line 447 "./util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } +{ YDVAR(1, VAR_MINIMAL_RESPONSES) } YY_BREAK case 233: YY_RULE_SETUP #line 448 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } +{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } YY_BREAK case 234: YY_RULE_SETUP #line 449 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_UDP_SIZE) } +{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } YY_BREAK case 235: YY_RULE_SETUP #line 450 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_PREFIX) } +{ YDVAR(1, VAR_MAX_UDP_SIZE) } YY_BREAK case 236: YY_RULE_SETUP #line 451 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_SYNTHALL) } +{ YDVAR(1, VAR_DNS64_PREFIX) } YY_BREAK case 237: YY_RULE_SETUP #line 452 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } +{ YDVAR(1, VAR_DNS64_SYNTHALL) } YY_BREAK case 238: YY_RULE_SETUP #line 453 "./util/configlexer.lex" -{ YDVAR(1, VAR_DEFINE_TAG) } +{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } YY_BREAK case 239: YY_RULE_SETUP #line 454 "./util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } +{ YDVAR(1, VAR_DEFINE_TAG) } YY_BREAK case 240: YY_RULE_SETUP #line 455 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } +{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } YY_BREAK case 241: YY_RULE_SETUP #line 456 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } +{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } YY_BREAK case 242: YY_RULE_SETUP #line 457 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } YY_BREAK case 243: YY_RULE_SETUP #line 458 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } YY_BREAK case 244: YY_RULE_SETUP #line 459 "./util/configlexer.lex" -{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } +{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } YY_BREAK case 245: YY_RULE_SETUP #line 460 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSTAP) } +{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } YY_BREAK case 246: YY_RULE_SETUP #line 461 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_ENABLE) } +{ YDVAR(0, VAR_DNSTAP) } YY_BREAK case 247: YY_RULE_SETUP #line 462 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_BIDIRECTIONAL) } +{ YDVAR(1, VAR_DNSTAP_ENABLE) } YY_BREAK case 248: YY_RULE_SETUP #line 463 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } +{ YDVAR(1, VAR_DNSTAP_BIDIRECTIONAL) } YY_BREAK case 249: YY_RULE_SETUP #line 464 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IP) } +{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } YY_BREAK case 250: YY_RULE_SETUP #line 465 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS) } +{ YDVAR(1, VAR_DNSTAP_IP) } YY_BREAK case 251: YY_RULE_SETUP #line 466 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } +{ YDVAR(1, VAR_DNSTAP_TLS) } YY_BREAK case 252: YY_RULE_SETUP #line 467 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } +{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } YY_BREAK case 253: YY_RULE_SETUP #line 468 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } +{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } YY_BREAK case 254: YY_RULE_SETUP -#line 470 "./util/configlexer.lex" +#line 469 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } YY_BREAK case 255: YY_RULE_SETUP -#line 472 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } +#line 471 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } YY_BREAK case 256: YY_RULE_SETUP #line 473 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } +{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } YY_BREAK case 257: YY_RULE_SETUP #line 474 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IDENTITY) } +{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } YY_BREAK case 258: YY_RULE_SETUP #line 475 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_VERSION) } +{ YDVAR(1, VAR_DNSTAP_IDENTITY) } YY_BREAK case 259: YY_RULE_SETUP #line 476 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } +{ YDVAR(1, VAR_DNSTAP_VERSION) } YY_BREAK case 260: YY_RULE_SETUP -#line 478 "./util/configlexer.lex" +#line 477 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } YY_BREAK case 261: YY_RULE_SETUP -#line 480 "./util/configlexer.lex" +#line 479 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } YY_BREAK case 262: YY_RULE_SETUP -#line 482 "./util/configlexer.lex" +#line 481 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } YY_BREAK case 263: YY_RULE_SETUP -#line 484 "./util/configlexer.lex" +#line 483 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } YY_BREAK case 264: YY_RULE_SETUP -#line 486 "./util/configlexer.lex" +#line 485 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } YY_BREAK case 265: YY_RULE_SETUP -#line 488 "./util/configlexer.lex" -{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } +#line 487 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } YY_BREAK case 266: YY_RULE_SETUP #line 489 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT) } +{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } YY_BREAK case 267: YY_RULE_SETUP #line 490 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT) } +{ YDVAR(1, VAR_IP_RATELIMIT) } YY_BREAK case 268: YY_RULE_SETUP #line 491 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_RATELIMIT) } YY_BREAK case 269: YY_RULE_SETUP #line 492 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } YY_BREAK case 270: YY_RULE_SETUP #line 493 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_RATELIMIT_SLABS) } YY_BREAK case 271: YY_RULE_SETUP #line 494 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } YY_BREAK case 272: YY_RULE_SETUP #line 495 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } +{ YDVAR(1, VAR_RATELIMIT_SIZE) } YY_BREAK case 273: YY_RULE_SETUP #line 496 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } +{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } YY_BREAK case 274: YY_RULE_SETUP #line 497 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } +{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } YY_BREAK case 275: YY_RULE_SETUP #line 498 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_FACTOR) } +{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } YY_BREAK case 276: YY_RULE_SETUP #line 499 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOW_RTT) } +{ YDVAR(1, VAR_RATELIMIT_FACTOR) } YY_BREAK case 277: YY_RULE_SETUP #line 500 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_NUM) } +{ YDVAR(1, VAR_LOW_RTT) } YY_BREAK case 278: YY_RULE_SETUP #line 501 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } +{ YDVAR(1, VAR_FAST_SERVER_NUM) } YY_BREAK case 279: YY_RULE_SETUP @@ -4968,119 +4975,119 @@ YY_RULE_SETUP case 281: YY_RULE_SETUP #line 504 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_TAG) } +{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 282: YY_RULE_SETUP #line 505 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP) } +{ YDVAR(2, VAR_RESPONSE_IP_TAG) } YY_BREAK case 283: YY_RULE_SETUP #line 506 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_DATA) } +{ YDVAR(2, VAR_RESPONSE_IP) } YY_BREAK case 284: YY_RULE_SETUP #line 507 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSCRYPT) } +{ YDVAR(2, VAR_RESPONSE_IP_DATA) } YY_BREAK case 285: YY_RULE_SETUP #line 508 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } +{ YDVAR(0, VAR_DNSCRYPT) } YY_BREAK case 286: YY_RULE_SETUP #line 509 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PORT) } +{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } YY_BREAK case 287: YY_RULE_SETUP #line 510 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } +{ YDVAR(1, VAR_DNSCRYPT_PORT) } YY_BREAK case 288: YY_RULE_SETUP #line 511 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } YY_BREAK case 289: YY_RULE_SETUP #line 512 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } +{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } YY_BREAK case 290: YY_RULE_SETUP #line 513 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } YY_BREAK case 291: YY_RULE_SETUP #line 514 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } YY_BREAK case 292: YY_RULE_SETUP -#line 516 "./util/configlexer.lex" +#line 515 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } YY_BREAK case 293: YY_RULE_SETUP -#line 518 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } +#line 517 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } YY_BREAK case 294: YY_RULE_SETUP #line 519 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } YY_BREAK case 295: YY_RULE_SETUP #line 520 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_RESPONSES) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } YY_BREAK case 296: YY_RULE_SETUP #line 521 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) } +{ YDVAR(1, VAR_PAD_RESPONSES) } YY_BREAK case 297: YY_RULE_SETUP #line 522 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_QUERIES) } +{ YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) } YY_BREAK case 298: YY_RULE_SETUP #line 523 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) } +{ YDVAR(1, VAR_PAD_QUERIES) } YY_BREAK case 299: YY_RULE_SETUP #line 524 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_ENABLED) } +{ YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) } YY_BREAK case 300: YY_RULE_SETUP #line 525 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } +{ YDVAR(1, VAR_IPSECMOD_ENABLED) } YY_BREAK case 301: YY_RULE_SETUP #line 526 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_HOOK) } +{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } YY_BREAK case 302: YY_RULE_SETUP #line 527 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } +{ YDVAR(1, VAR_IPSECMOD_HOOK) } YY_BREAK case 303: YY_RULE_SETUP #line 528 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } +{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } YY_BREAK case 304: YY_RULE_SETUP @@ -5090,118 +5097,123 @@ YY_RULE_SETUP case 305: YY_RULE_SETUP #line 530 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_STRICT) } +{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } YY_BREAK case 306: YY_RULE_SETUP #line 531 "./util/configlexer.lex" -{ YDVAR(0, VAR_CACHEDB) } +{ YDVAR(1, VAR_IPSECMOD_STRICT) } YY_BREAK case 307: YY_RULE_SETUP #line 532 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_BACKEND) } +{ YDVAR(0, VAR_CACHEDB) } YY_BREAK case 308: YY_RULE_SETUP #line 533 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } +{ YDVAR(1, VAR_CACHEDB_BACKEND) } YY_BREAK case 309: YY_RULE_SETUP #line 534 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISHOST) } +{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } YY_BREAK case 310: YY_RULE_SETUP #line 535 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISPORT) } +{ YDVAR(1, VAR_CACHEDB_REDISHOST) } YY_BREAK case 311: YY_RULE_SETUP #line 536 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } +{ YDVAR(1, VAR_CACHEDB_REDISPORT) } YY_BREAK case 312: YY_RULE_SETUP #line 537 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } +{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } YY_BREAK case 313: YY_RULE_SETUP #line 538 "./util/configlexer.lex" -{ YDVAR(0, VAR_IPSET) } +{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } YY_BREAK case 314: YY_RULE_SETUP #line 539 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V4) } +{ YDVAR(0, VAR_IPSET) } YY_BREAK case 315: YY_RULE_SETUP #line 540 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V6) } +{ YDVAR(1, VAR_IPSET_NAME_V4) } YY_BREAK case 316: YY_RULE_SETUP #line 541 "./util/configlexer.lex" -{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } +{ YDVAR(1, VAR_IPSET_NAME_V6) } YY_BREAK case 317: YY_RULE_SETUP #line 542 "./util/configlexer.lex" -{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } +{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } YY_BREAK case 318: YY_RULE_SETUP #line 543 "./util/configlexer.lex" -{ YDVAR(2, VAR_EDNS_CLIENT_STRING) } +{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } YY_BREAK case 319: YY_RULE_SETUP #line 544 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) } +{ YDVAR(2, VAR_EDNS_CLIENT_STRING) } YY_BREAK case 320: YY_RULE_SETUP #line 545 "./util/configlexer.lex" -{ YDVAR(1, VAR_NSID ) } +{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) } YY_BREAK case 321: -/* rule 321 can match eol */ YY_RULE_SETUP #line 546 "./util/configlexer.lex" +{ YDVAR(1, VAR_NSID ) } + YY_BREAK +case 322: +/* rule 322 can match eol */ +YY_RULE_SETUP +#line 547 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK /* Quoted strings. Strip leading and ending quotes */ -case 322: +case 323: YY_RULE_SETUP -#line 549 "./util/configlexer.lex" +#line 550 "./util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 550 "./util/configlexer.lex" +#line 551 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 323: -YY_RULE_SETUP -#line 555 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 324: -/* rule 324 can match eol */ YY_RULE_SETUP #line 556 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 325: +/* rule 325 can match eol */ +YY_RULE_SETUP +#line 557 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 325: +case 326: YY_RULE_SETUP -#line 558 "./util/configlexer.lex" +#line 559 "./util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -5214,34 +5226,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 326: +case 327: YY_RULE_SETUP -#line 570 "./util/configlexer.lex" +#line 571 "./util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 571 "./util/configlexer.lex" +#line 572 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 327: -YY_RULE_SETUP -#line 576 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 328: -/* rule 328 can match eol */ YY_RULE_SETUP #line 577 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 329: +/* rule 329 can match eol */ +YY_RULE_SETUP +#line 578 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 329: +case 330: YY_RULE_SETUP -#line 579 "./util/configlexer.lex" +#line 580 "./util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -5254,38 +5266,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 330: +case 331: YY_RULE_SETUP -#line 591 "./util/configlexer.lex" +#line 592 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 593 "./util/configlexer.lex" +#line 594 "./util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); } YY_BREAK -case 331: -YY_RULE_SETUP -#line 597 "./util/configlexer.lex" -{ LEXOUT(("ISP ")); /* ignore */ } - YY_BREAK case 332: -/* rule 332 can match eol */ YY_RULE_SETUP #line 598 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++;} +{ LEXOUT(("ISP ")); /* ignore */ } YY_BREAK case 333: +/* rule 333 can match eol */ YY_RULE_SETUP #line 599 "./util/configlexer.lex" -{ LEXOUT(("IQS ")); BEGIN(include_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK case 334: YY_RULE_SETUP #line 600 "./util/configlexer.lex" +{ LEXOUT(("IQS ")); BEGIN(include_quoted); } + YY_BREAK +case 335: +YY_RULE_SETUP +#line 601 "./util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 0); @@ -5293,27 +5305,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 605 "./util/configlexer.lex" +#line 606 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 335: -YY_RULE_SETUP -#line 609 "./util/configlexer.lex" -{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } - YY_BREAK case 336: -/* rule 336 can match eol */ YY_RULE_SETUP #line 610 "./util/configlexer.lex" +{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } + YY_BREAK +case 337: +/* rule 337 can match eol */ +YY_RULE_SETUP +#line 611 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 337: +case 338: YY_RULE_SETUP -#line 612 "./util/configlexer.lex" +#line 613 "./util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -5323,7 +5335,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 618 "./util/configlexer.lex" +#line 619 "./util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ @@ -5338,39 +5350,39 @@ case YY_STATE_EOF(val): } YY_BREAK /* include-toplevel: directive */ -case 338: +case 339: YY_RULE_SETUP -#line 632 "./util/configlexer.lex" +#line 633 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include_toplevel); } YY_BREAK case YY_STATE_EOF(include_toplevel): -#line 635 "./util/configlexer.lex" +#line 636 "./util/configlexer.lex" { yyerror("EOF inside include_toplevel directive"); BEGIN(inc_prev); } YY_BREAK -case 339: -YY_RULE_SETUP -#line 639 "./util/configlexer.lex" -{ LEXOUT(("ITSP ")); /* ignore */ } - YY_BREAK case 340: -/* rule 340 can match eol */ YY_RULE_SETUP #line 640 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++; } +{ LEXOUT(("ITSP ")); /* ignore */ } YY_BREAK case 341: +/* rule 341 can match eol */ YY_RULE_SETUP #line 641 "./util/configlexer.lex" -{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK case 342: YY_RULE_SETUP #line 642 "./util/configlexer.lex" +{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } + YY_BREAK +case 343: +YY_RULE_SETUP +#line 643 "./util/configlexer.lex" { LEXOUT(("ITunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 1); @@ -5379,29 +5391,29 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_toplevel_quoted): -#line 648 "./util/configlexer.lex" +#line 649 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 343: -YY_RULE_SETUP -#line 652 "./util/configlexer.lex" -{ LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } - YY_BREAK case 344: -/* rule 344 can match eol */ YY_RULE_SETUP #line 653 "./util/configlexer.lex" +{ LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } + YY_BREAK +case 345: +/* rule 345 can match eol */ +YY_RULE_SETUP +#line 654 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 345: +case 346: YY_RULE_SETUP -#line 657 "./util/configlexer.lex" +#line 658 "./util/configlexer.lex" { LEXOUT(("ITQE ")); yytext[yyleng - 1] = '\0'; @@ -5410,33 +5422,33 @@ YY_RULE_SETUP return (VAR_FORCE_TOPLEVEL); } YY_BREAK -case 346: +case 347: YY_RULE_SETUP -#line 665 "./util/configlexer.lex" +#line 666 "./util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 347: +case 348: YY_RULE_SETUP -#line 669 "./util/configlexer.lex" +#line 670 "./util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 348: +case 349: YY_RULE_SETUP -#line 673 "./util/configlexer.lex" +#line 674 "./util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 349: +case 350: YY_RULE_SETUP -#line 677 "./util/configlexer.lex" +#line 678 "./util/configlexer.lex" ECHO; YY_BREAK -#line 5437 "" +#line 5449 "" case YY_END_OF_BUFFER: { @@ -5731,7 +5743,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 >= 3445 ) + if ( yy_current_state >= 3457 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -5759,11 +5771,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 >= 3445 ) + if ( yy_current_state >= 3457 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 3444); + yy_is_jam = (yy_current_state == 3456); return yy_is_jam ? 0 : yy_current_state; } @@ -6402,6 +6414,6 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 677 "./util/configlexer.lex" +#line 678 "./util/configlexer.lex" diff --git a/util/configparser.c b/util/configparser.c index 3f519e9c7..31de34c72 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -1,4 +1,4 @@ -/* A Bison parser, made by GNU Bison 3.6.4. */ +/* A Bison parser, made by GNU Bison 3.7.4. */ /* Bison implementation for Yacc-like parsers in C @@ -45,11 +45,11 @@ define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ -/* Identify Bison output. */ -#define YYBISON 1 +/* Identify Bison output, and Bison version. */ +#define YYBISON 30704 -/* Bison version. */ -#define YYBISON_VERSION "3.6.4" +/* Bison version string. */ +#define YYBISON_VERSION "3.7.4" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -119,681 +119,7 @@ extern struct config_parser_state* cfg_parser; # endif # 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 kinds. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - enum yytokentype - { - YYEMPTY = -2, - YYEOF = 0, /* "end of file" */ - YYerror = 256, /* error */ - YYUNDEF = 257, /* "invalid token" */ - SPACE = 258, /* SPACE */ - LETTER = 259, /* LETTER */ - NEWLINE = 260, /* NEWLINE */ - COMMENT = 261, /* COMMENT */ - COLON = 262, /* COLON */ - ANY = 263, /* ANY */ - ZONESTR = 264, /* ZONESTR */ - STRING_ARG = 265, /* STRING_ARG */ - VAR_FORCE_TOPLEVEL = 266, /* VAR_FORCE_TOPLEVEL */ - VAR_SERVER = 267, /* VAR_SERVER */ - VAR_VERBOSITY = 268, /* VAR_VERBOSITY */ - VAR_NUM_THREADS = 269, /* VAR_NUM_THREADS */ - VAR_PORT = 270, /* VAR_PORT */ - VAR_OUTGOING_RANGE = 271, /* VAR_OUTGOING_RANGE */ - VAR_INTERFACE = 272, /* VAR_INTERFACE */ - VAR_PREFER_IP4 = 273, /* VAR_PREFER_IP4 */ - VAR_DO_IP4 = 274, /* VAR_DO_IP4 */ - VAR_DO_IP6 = 275, /* VAR_DO_IP6 */ - VAR_PREFER_IP6 = 276, /* VAR_PREFER_IP6 */ - VAR_DO_UDP = 277, /* VAR_DO_UDP */ - VAR_DO_TCP = 278, /* VAR_DO_TCP */ - VAR_TCP_MSS = 279, /* VAR_TCP_MSS */ - VAR_OUTGOING_TCP_MSS = 280, /* VAR_OUTGOING_TCP_MSS */ - VAR_TCP_IDLE_TIMEOUT = 281, /* VAR_TCP_IDLE_TIMEOUT */ - VAR_EDNS_TCP_KEEPALIVE = 282, /* VAR_EDNS_TCP_KEEPALIVE */ - VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 283, /* VAR_EDNS_TCP_KEEPALIVE_TIMEOUT */ - VAR_CHROOT = 284, /* VAR_CHROOT */ - VAR_USERNAME = 285, /* VAR_USERNAME */ - VAR_DIRECTORY = 286, /* VAR_DIRECTORY */ - VAR_LOGFILE = 287, /* VAR_LOGFILE */ - VAR_PIDFILE = 288, /* VAR_PIDFILE */ - VAR_MSG_CACHE_SIZE = 289, /* VAR_MSG_CACHE_SIZE */ - VAR_MSG_CACHE_SLABS = 290, /* VAR_MSG_CACHE_SLABS */ - VAR_NUM_QUERIES_PER_THREAD = 291, /* VAR_NUM_QUERIES_PER_THREAD */ - VAR_RRSET_CACHE_SIZE = 292, /* VAR_RRSET_CACHE_SIZE */ - VAR_RRSET_CACHE_SLABS = 293, /* VAR_RRSET_CACHE_SLABS */ - VAR_OUTGOING_NUM_TCP = 294, /* VAR_OUTGOING_NUM_TCP */ - VAR_INFRA_HOST_TTL = 295, /* VAR_INFRA_HOST_TTL */ - VAR_INFRA_LAME_TTL = 296, /* VAR_INFRA_LAME_TTL */ - VAR_INFRA_CACHE_SLABS = 297, /* VAR_INFRA_CACHE_SLABS */ - VAR_INFRA_CACHE_NUMHOSTS = 298, /* VAR_INFRA_CACHE_NUMHOSTS */ - VAR_INFRA_CACHE_LAME_SIZE = 299, /* VAR_INFRA_CACHE_LAME_SIZE */ - VAR_NAME = 300, /* VAR_NAME */ - VAR_STUB_ZONE = 301, /* VAR_STUB_ZONE */ - VAR_STUB_HOST = 302, /* VAR_STUB_HOST */ - VAR_STUB_ADDR = 303, /* VAR_STUB_ADDR */ - VAR_TARGET_FETCH_POLICY = 304, /* VAR_TARGET_FETCH_POLICY */ - VAR_HARDEN_SHORT_BUFSIZE = 305, /* VAR_HARDEN_SHORT_BUFSIZE */ - VAR_HARDEN_LARGE_QUERIES = 306, /* VAR_HARDEN_LARGE_QUERIES */ - VAR_FORWARD_ZONE = 307, /* VAR_FORWARD_ZONE */ - VAR_FORWARD_HOST = 308, /* VAR_FORWARD_HOST */ - VAR_FORWARD_ADDR = 309, /* VAR_FORWARD_ADDR */ - VAR_DO_NOT_QUERY_ADDRESS = 310, /* VAR_DO_NOT_QUERY_ADDRESS */ - VAR_HIDE_IDENTITY = 311, /* VAR_HIDE_IDENTITY */ - VAR_HIDE_VERSION = 312, /* VAR_HIDE_VERSION */ - VAR_IDENTITY = 313, /* VAR_IDENTITY */ - VAR_VERSION = 314, /* VAR_VERSION */ - VAR_HARDEN_GLUE = 315, /* VAR_HARDEN_GLUE */ - VAR_MODULE_CONF = 316, /* VAR_MODULE_CONF */ - VAR_TRUST_ANCHOR_FILE = 317, /* VAR_TRUST_ANCHOR_FILE */ - VAR_TRUST_ANCHOR = 318, /* VAR_TRUST_ANCHOR */ - VAR_VAL_OVERRIDE_DATE = 319, /* VAR_VAL_OVERRIDE_DATE */ - VAR_BOGUS_TTL = 320, /* VAR_BOGUS_TTL */ - VAR_VAL_CLEAN_ADDITIONAL = 321, /* VAR_VAL_CLEAN_ADDITIONAL */ - VAR_VAL_PERMISSIVE_MODE = 322, /* VAR_VAL_PERMISSIVE_MODE */ - VAR_INCOMING_NUM_TCP = 323, /* VAR_INCOMING_NUM_TCP */ - VAR_MSG_BUFFER_SIZE = 324, /* VAR_MSG_BUFFER_SIZE */ - VAR_KEY_CACHE_SIZE = 325, /* VAR_KEY_CACHE_SIZE */ - VAR_KEY_CACHE_SLABS = 326, /* VAR_KEY_CACHE_SLABS */ - VAR_TRUSTED_KEYS_FILE = 327, /* VAR_TRUSTED_KEYS_FILE */ - VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 328, /* VAR_VAL_NSEC3_KEYSIZE_ITERATIONS */ - VAR_USE_SYSLOG = 329, /* VAR_USE_SYSLOG */ - VAR_OUTGOING_INTERFACE = 330, /* VAR_OUTGOING_INTERFACE */ - VAR_ROOT_HINTS = 331, /* VAR_ROOT_HINTS */ - VAR_DO_NOT_QUERY_LOCALHOST = 332, /* VAR_DO_NOT_QUERY_LOCALHOST */ - VAR_CACHE_MAX_TTL = 333, /* VAR_CACHE_MAX_TTL */ - VAR_HARDEN_DNSSEC_STRIPPED = 334, /* VAR_HARDEN_DNSSEC_STRIPPED */ - VAR_ACCESS_CONTROL = 335, /* VAR_ACCESS_CONTROL */ - VAR_LOCAL_ZONE = 336, /* VAR_LOCAL_ZONE */ - VAR_LOCAL_DATA = 337, /* VAR_LOCAL_DATA */ - VAR_INTERFACE_AUTOMATIC = 338, /* VAR_INTERFACE_AUTOMATIC */ - VAR_STATISTICS_INTERVAL = 339, /* VAR_STATISTICS_INTERVAL */ - VAR_DO_DAEMONIZE = 340, /* VAR_DO_DAEMONIZE */ - VAR_USE_CAPS_FOR_ID = 341, /* VAR_USE_CAPS_FOR_ID */ - VAR_STATISTICS_CUMULATIVE = 342, /* VAR_STATISTICS_CUMULATIVE */ - VAR_OUTGOING_PORT_PERMIT = 343, /* VAR_OUTGOING_PORT_PERMIT */ - VAR_OUTGOING_PORT_AVOID = 344, /* VAR_OUTGOING_PORT_AVOID */ - VAR_DLV_ANCHOR_FILE = 345, /* VAR_DLV_ANCHOR_FILE */ - VAR_DLV_ANCHOR = 346, /* VAR_DLV_ANCHOR */ - VAR_NEG_CACHE_SIZE = 347, /* VAR_NEG_CACHE_SIZE */ - VAR_HARDEN_REFERRAL_PATH = 348, /* VAR_HARDEN_REFERRAL_PATH */ - VAR_PRIVATE_ADDRESS = 349, /* VAR_PRIVATE_ADDRESS */ - VAR_PRIVATE_DOMAIN = 350, /* VAR_PRIVATE_DOMAIN */ - VAR_REMOTE_CONTROL = 351, /* VAR_REMOTE_CONTROL */ - VAR_CONTROL_ENABLE = 352, /* VAR_CONTROL_ENABLE */ - VAR_CONTROL_INTERFACE = 353, /* VAR_CONTROL_INTERFACE */ - VAR_CONTROL_PORT = 354, /* VAR_CONTROL_PORT */ - VAR_SERVER_KEY_FILE = 355, /* VAR_SERVER_KEY_FILE */ - VAR_SERVER_CERT_FILE = 356, /* VAR_SERVER_CERT_FILE */ - VAR_CONTROL_KEY_FILE = 357, /* VAR_CONTROL_KEY_FILE */ - VAR_CONTROL_CERT_FILE = 358, /* VAR_CONTROL_CERT_FILE */ - VAR_CONTROL_USE_CERT = 359, /* VAR_CONTROL_USE_CERT */ - VAR_TCP_REUSE_TIMEOUT = 360, /* VAR_TCP_REUSE_TIMEOUT */ - VAR_MAX_REUSE_TCP_QUERIES = 361, /* VAR_MAX_REUSE_TCP_QUERIES */ - VAR_EXTENDED_STATISTICS = 362, /* VAR_EXTENDED_STATISTICS */ - VAR_LOCAL_DATA_PTR = 363, /* VAR_LOCAL_DATA_PTR */ - VAR_JOSTLE_TIMEOUT = 364, /* VAR_JOSTLE_TIMEOUT */ - VAR_STUB_PRIME = 365, /* VAR_STUB_PRIME */ - VAR_UNWANTED_REPLY_THRESHOLD = 366, /* VAR_UNWANTED_REPLY_THRESHOLD */ - VAR_LOG_TIME_ASCII = 367, /* VAR_LOG_TIME_ASCII */ - VAR_DOMAIN_INSECURE = 368, /* VAR_DOMAIN_INSECURE */ - VAR_PYTHON = 369, /* VAR_PYTHON */ - VAR_PYTHON_SCRIPT = 370, /* VAR_PYTHON_SCRIPT */ - VAR_VAL_SIG_SKEW_MIN = 371, /* VAR_VAL_SIG_SKEW_MIN */ - VAR_VAL_SIG_SKEW_MAX = 372, /* VAR_VAL_SIG_SKEW_MAX */ - VAR_CACHE_MIN_TTL = 373, /* VAR_CACHE_MIN_TTL */ - VAR_VAL_LOG_LEVEL = 374, /* VAR_VAL_LOG_LEVEL */ - VAR_AUTO_TRUST_ANCHOR_FILE = 375, /* VAR_AUTO_TRUST_ANCHOR_FILE */ - VAR_KEEP_MISSING = 376, /* VAR_KEEP_MISSING */ - VAR_ADD_HOLDDOWN = 377, /* VAR_ADD_HOLDDOWN */ - VAR_DEL_HOLDDOWN = 378, /* VAR_DEL_HOLDDOWN */ - VAR_SO_RCVBUF = 379, /* VAR_SO_RCVBUF */ - VAR_EDNS_BUFFER_SIZE = 380, /* VAR_EDNS_BUFFER_SIZE */ - VAR_PREFETCH = 381, /* VAR_PREFETCH */ - VAR_PREFETCH_KEY = 382, /* VAR_PREFETCH_KEY */ - VAR_SO_SNDBUF = 383, /* VAR_SO_SNDBUF */ - VAR_SO_REUSEPORT = 384, /* VAR_SO_REUSEPORT */ - VAR_HARDEN_BELOW_NXDOMAIN = 385, /* VAR_HARDEN_BELOW_NXDOMAIN */ - VAR_IGNORE_CD_FLAG = 386, /* VAR_IGNORE_CD_FLAG */ - VAR_LOG_QUERIES = 387, /* VAR_LOG_QUERIES */ - VAR_LOG_REPLIES = 388, /* VAR_LOG_REPLIES */ - VAR_LOG_LOCAL_ACTIONS = 389, /* VAR_LOG_LOCAL_ACTIONS */ - VAR_TCP_UPSTREAM = 390, /* VAR_TCP_UPSTREAM */ - VAR_SSL_UPSTREAM = 391, /* VAR_SSL_UPSTREAM */ - VAR_TCP_AUTH_QUERY_TIMEOUT = 392, /* VAR_TCP_AUTH_QUERY_TIMEOUT */ - VAR_SSL_SERVICE_KEY = 393, /* VAR_SSL_SERVICE_KEY */ - VAR_SSL_SERVICE_PEM = 394, /* VAR_SSL_SERVICE_PEM */ - VAR_SSL_PORT = 395, /* VAR_SSL_PORT */ - VAR_FORWARD_FIRST = 396, /* VAR_FORWARD_FIRST */ - VAR_STUB_SSL_UPSTREAM = 397, /* VAR_STUB_SSL_UPSTREAM */ - VAR_FORWARD_SSL_UPSTREAM = 398, /* VAR_FORWARD_SSL_UPSTREAM */ - VAR_TLS_CERT_BUNDLE = 399, /* VAR_TLS_CERT_BUNDLE */ - VAR_HTTPS_PORT = 400, /* VAR_HTTPS_PORT */ - VAR_HTTP_ENDPOINT = 401, /* VAR_HTTP_ENDPOINT */ - VAR_HTTP_MAX_STREAMS = 402, /* VAR_HTTP_MAX_STREAMS */ - VAR_HTTP_QUERY_BUFFER_SIZE = 403, /* VAR_HTTP_QUERY_BUFFER_SIZE */ - VAR_HTTP_RESPONSE_BUFFER_SIZE = 404, /* VAR_HTTP_RESPONSE_BUFFER_SIZE */ - VAR_HTTP_NODELAY = 405, /* VAR_HTTP_NODELAY */ - VAR_HTTP_NOTLS_DOWNSTREAM = 406, /* VAR_HTTP_NOTLS_DOWNSTREAM */ - VAR_STUB_FIRST = 407, /* VAR_STUB_FIRST */ - VAR_MINIMAL_RESPONSES = 408, /* VAR_MINIMAL_RESPONSES */ - VAR_RRSET_ROUNDROBIN = 409, /* VAR_RRSET_ROUNDROBIN */ - VAR_MAX_UDP_SIZE = 410, /* VAR_MAX_UDP_SIZE */ - VAR_DELAY_CLOSE = 411, /* VAR_DELAY_CLOSE */ - VAR_UDP_CONNECT = 412, /* VAR_UDP_CONNECT */ - VAR_UNBLOCK_LAN_ZONES = 413, /* VAR_UNBLOCK_LAN_ZONES */ - VAR_INSECURE_LAN_ZONES = 414, /* VAR_INSECURE_LAN_ZONES */ - VAR_INFRA_CACHE_MIN_RTT = 415, /* VAR_INFRA_CACHE_MIN_RTT */ - VAR_INFRA_KEEP_PROBING = 416, /* VAR_INFRA_KEEP_PROBING */ - VAR_DNS64_PREFIX = 417, /* VAR_DNS64_PREFIX */ - VAR_DNS64_SYNTHALL = 418, /* VAR_DNS64_SYNTHALL */ - VAR_DNS64_IGNORE_AAAA = 419, /* VAR_DNS64_IGNORE_AAAA */ - VAR_DNSTAP = 420, /* VAR_DNSTAP */ - VAR_DNSTAP_ENABLE = 421, /* VAR_DNSTAP_ENABLE */ - VAR_DNSTAP_SOCKET_PATH = 422, /* VAR_DNSTAP_SOCKET_PATH */ - VAR_DNSTAP_IP = 423, /* VAR_DNSTAP_IP */ - VAR_DNSTAP_TLS = 424, /* VAR_DNSTAP_TLS */ - VAR_DNSTAP_TLS_SERVER_NAME = 425, /* VAR_DNSTAP_TLS_SERVER_NAME */ - VAR_DNSTAP_TLS_CERT_BUNDLE = 426, /* VAR_DNSTAP_TLS_CERT_BUNDLE */ - VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 427, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE */ - VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 428, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE */ - VAR_DNSTAP_SEND_IDENTITY = 429, /* VAR_DNSTAP_SEND_IDENTITY */ - VAR_DNSTAP_SEND_VERSION = 430, /* VAR_DNSTAP_SEND_VERSION */ - VAR_DNSTAP_BIDIRECTIONAL = 431, /* VAR_DNSTAP_BIDIRECTIONAL */ - VAR_DNSTAP_IDENTITY = 432, /* VAR_DNSTAP_IDENTITY */ - VAR_DNSTAP_VERSION = 433, /* VAR_DNSTAP_VERSION */ - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 434, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES */ - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 435, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES */ - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 436, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES */ - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 437, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES */ - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 438, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES */ - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 439, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES */ - VAR_RESPONSE_IP_TAG = 440, /* VAR_RESPONSE_IP_TAG */ - VAR_RESPONSE_IP = 441, /* VAR_RESPONSE_IP */ - VAR_RESPONSE_IP_DATA = 442, /* VAR_RESPONSE_IP_DATA */ - VAR_HARDEN_ALGO_DOWNGRADE = 443, /* VAR_HARDEN_ALGO_DOWNGRADE */ - VAR_IP_TRANSPARENT = 444, /* VAR_IP_TRANSPARENT */ - VAR_IP_DSCP = 445, /* VAR_IP_DSCP */ - VAR_DISABLE_DNSSEC_LAME_CHECK = 446, /* VAR_DISABLE_DNSSEC_LAME_CHECK */ - VAR_IP_RATELIMIT = 447, /* VAR_IP_RATELIMIT */ - VAR_IP_RATELIMIT_SLABS = 448, /* VAR_IP_RATELIMIT_SLABS */ - VAR_IP_RATELIMIT_SIZE = 449, /* VAR_IP_RATELIMIT_SIZE */ - VAR_RATELIMIT = 450, /* VAR_RATELIMIT */ - VAR_RATELIMIT_SLABS = 451, /* VAR_RATELIMIT_SLABS */ - VAR_RATELIMIT_SIZE = 452, /* VAR_RATELIMIT_SIZE */ - VAR_RATELIMIT_FOR_DOMAIN = 453, /* VAR_RATELIMIT_FOR_DOMAIN */ - VAR_RATELIMIT_BELOW_DOMAIN = 454, /* VAR_RATELIMIT_BELOW_DOMAIN */ - VAR_IP_RATELIMIT_FACTOR = 455, /* VAR_IP_RATELIMIT_FACTOR */ - VAR_RATELIMIT_FACTOR = 456, /* VAR_RATELIMIT_FACTOR */ - VAR_SEND_CLIENT_SUBNET = 457, /* VAR_SEND_CLIENT_SUBNET */ - VAR_CLIENT_SUBNET_ZONE = 458, /* VAR_CLIENT_SUBNET_ZONE */ - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 459, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ - VAR_CLIENT_SUBNET_OPCODE = 460, /* VAR_CLIENT_SUBNET_OPCODE */ - VAR_MAX_CLIENT_SUBNET_IPV4 = 461, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ - VAR_MAX_CLIENT_SUBNET_IPV6 = 462, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ - VAR_MIN_CLIENT_SUBNET_IPV4 = 463, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ - VAR_MIN_CLIENT_SUBNET_IPV6 = 464, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ - VAR_MAX_ECS_TREE_SIZE_IPV4 = 465, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ - VAR_MAX_ECS_TREE_SIZE_IPV6 = 466, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ - VAR_CAPS_WHITELIST = 467, /* VAR_CAPS_WHITELIST */ - VAR_CACHE_MAX_NEGATIVE_TTL = 468, /* VAR_CACHE_MAX_NEGATIVE_TTL */ - VAR_PERMIT_SMALL_HOLDDOWN = 469, /* VAR_PERMIT_SMALL_HOLDDOWN */ - VAR_QNAME_MINIMISATION = 470, /* VAR_QNAME_MINIMISATION */ - VAR_QNAME_MINIMISATION_STRICT = 471, /* VAR_QNAME_MINIMISATION_STRICT */ - VAR_IP_FREEBIND = 472, /* VAR_IP_FREEBIND */ - VAR_DEFINE_TAG = 473, /* VAR_DEFINE_TAG */ - VAR_LOCAL_ZONE_TAG = 474, /* VAR_LOCAL_ZONE_TAG */ - VAR_ACCESS_CONTROL_TAG = 475, /* VAR_ACCESS_CONTROL_TAG */ - VAR_LOCAL_ZONE_OVERRIDE = 476, /* VAR_LOCAL_ZONE_OVERRIDE */ - VAR_ACCESS_CONTROL_TAG_ACTION = 477, /* VAR_ACCESS_CONTROL_TAG_ACTION */ - VAR_ACCESS_CONTROL_TAG_DATA = 478, /* VAR_ACCESS_CONTROL_TAG_DATA */ - VAR_VIEW = 479, /* VAR_VIEW */ - VAR_ACCESS_CONTROL_VIEW = 480, /* VAR_ACCESS_CONTROL_VIEW */ - VAR_VIEW_FIRST = 481, /* VAR_VIEW_FIRST */ - VAR_SERVE_EXPIRED = 482, /* VAR_SERVE_EXPIRED */ - VAR_SERVE_EXPIRED_TTL = 483, /* VAR_SERVE_EXPIRED_TTL */ - VAR_SERVE_EXPIRED_TTL_RESET = 484, /* VAR_SERVE_EXPIRED_TTL_RESET */ - VAR_SERVE_EXPIRED_REPLY_TTL = 485, /* VAR_SERVE_EXPIRED_REPLY_TTL */ - VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 486, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ - VAR_SERVE_ORIGINAL_TTL = 487, /* VAR_SERVE_ORIGINAL_TTL */ - VAR_FAKE_DSA = 488, /* VAR_FAKE_DSA */ - VAR_FAKE_SHA1 = 489, /* VAR_FAKE_SHA1 */ - VAR_LOG_IDENTITY = 490, /* VAR_LOG_IDENTITY */ - VAR_HIDE_TRUSTANCHOR = 491, /* VAR_HIDE_TRUSTANCHOR */ - VAR_TRUST_ANCHOR_SIGNALING = 492, /* VAR_TRUST_ANCHOR_SIGNALING */ - VAR_AGGRESSIVE_NSEC = 493, /* VAR_AGGRESSIVE_NSEC */ - VAR_USE_SYSTEMD = 494, /* VAR_USE_SYSTEMD */ - VAR_SHM_ENABLE = 495, /* VAR_SHM_ENABLE */ - VAR_SHM_KEY = 496, /* VAR_SHM_KEY */ - VAR_ROOT_KEY_SENTINEL = 497, /* VAR_ROOT_KEY_SENTINEL */ - VAR_DNSCRYPT = 498, /* VAR_DNSCRYPT */ - VAR_DNSCRYPT_ENABLE = 499, /* VAR_DNSCRYPT_ENABLE */ - VAR_DNSCRYPT_PORT = 500, /* VAR_DNSCRYPT_PORT */ - VAR_DNSCRYPT_PROVIDER = 501, /* VAR_DNSCRYPT_PROVIDER */ - VAR_DNSCRYPT_SECRET_KEY = 502, /* VAR_DNSCRYPT_SECRET_KEY */ - VAR_DNSCRYPT_PROVIDER_CERT = 503, /* VAR_DNSCRYPT_PROVIDER_CERT */ - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 504, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 505, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 506, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 507, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 508, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ - VAR_PAD_RESPONSES = 509, /* VAR_PAD_RESPONSES */ - VAR_PAD_RESPONSES_BLOCK_SIZE = 510, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ - VAR_PAD_QUERIES = 511, /* VAR_PAD_QUERIES */ - VAR_PAD_QUERIES_BLOCK_SIZE = 512, /* VAR_PAD_QUERIES_BLOCK_SIZE */ - VAR_IPSECMOD_ENABLED = 513, /* VAR_IPSECMOD_ENABLED */ - VAR_IPSECMOD_HOOK = 514, /* VAR_IPSECMOD_HOOK */ - VAR_IPSECMOD_IGNORE_BOGUS = 515, /* VAR_IPSECMOD_IGNORE_BOGUS */ - VAR_IPSECMOD_MAX_TTL = 516, /* VAR_IPSECMOD_MAX_TTL */ - VAR_IPSECMOD_WHITELIST = 517, /* VAR_IPSECMOD_WHITELIST */ - VAR_IPSECMOD_STRICT = 518, /* VAR_IPSECMOD_STRICT */ - VAR_CACHEDB = 519, /* VAR_CACHEDB */ - VAR_CACHEDB_BACKEND = 520, /* VAR_CACHEDB_BACKEND */ - VAR_CACHEDB_SECRETSEED = 521, /* VAR_CACHEDB_SECRETSEED */ - VAR_CACHEDB_REDISHOST = 522, /* VAR_CACHEDB_REDISHOST */ - VAR_CACHEDB_REDISPORT = 523, /* VAR_CACHEDB_REDISPORT */ - VAR_CACHEDB_REDISTIMEOUT = 524, /* VAR_CACHEDB_REDISTIMEOUT */ - VAR_CACHEDB_REDISEXPIRERECORDS = 525, /* VAR_CACHEDB_REDISEXPIRERECORDS */ - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 526, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ - VAR_FOR_UPSTREAM = 527, /* VAR_FOR_UPSTREAM */ - VAR_AUTH_ZONE = 528, /* VAR_AUTH_ZONE */ - VAR_ZONEFILE = 529, /* VAR_ZONEFILE */ - VAR_MASTER = 530, /* VAR_MASTER */ - VAR_URL = 531, /* VAR_URL */ - VAR_FOR_DOWNSTREAM = 532, /* VAR_FOR_DOWNSTREAM */ - VAR_FALLBACK_ENABLED = 533, /* VAR_FALLBACK_ENABLED */ - VAR_TLS_ADDITIONAL_PORT = 534, /* VAR_TLS_ADDITIONAL_PORT */ - VAR_LOW_RTT = 535, /* VAR_LOW_RTT */ - VAR_LOW_RTT_PERMIL = 536, /* VAR_LOW_RTT_PERMIL */ - VAR_FAST_SERVER_PERMIL = 537, /* VAR_FAST_SERVER_PERMIL */ - VAR_FAST_SERVER_NUM = 538, /* VAR_FAST_SERVER_NUM */ - VAR_ALLOW_NOTIFY = 539, /* VAR_ALLOW_NOTIFY */ - VAR_TLS_WIN_CERT = 540, /* VAR_TLS_WIN_CERT */ - VAR_TCP_CONNECTION_LIMIT = 541, /* VAR_TCP_CONNECTION_LIMIT */ - VAR_FORWARD_NO_CACHE = 542, /* VAR_FORWARD_NO_CACHE */ - VAR_STUB_NO_CACHE = 543, /* VAR_STUB_NO_CACHE */ - VAR_LOG_SERVFAIL = 544, /* VAR_LOG_SERVFAIL */ - VAR_DENY_ANY = 545, /* VAR_DENY_ANY */ - VAR_UNKNOWN_SERVER_TIME_LIMIT = 546, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ - VAR_LOG_TAG_QUERYREPLY = 547, /* VAR_LOG_TAG_QUERYREPLY */ - VAR_STREAM_WAIT_SIZE = 548, /* VAR_STREAM_WAIT_SIZE */ - VAR_TLS_CIPHERS = 549, /* VAR_TLS_CIPHERS */ - VAR_TLS_CIPHERSUITES = 550, /* VAR_TLS_CIPHERSUITES */ - VAR_TLS_USE_SNI = 551, /* VAR_TLS_USE_SNI */ - VAR_IPSET = 552, /* VAR_IPSET */ - VAR_IPSET_NAME_V4 = 553, /* VAR_IPSET_NAME_V4 */ - VAR_IPSET_NAME_V6 = 554, /* VAR_IPSET_NAME_V6 */ - VAR_TLS_SESSION_TICKET_KEYS = 555, /* VAR_TLS_SESSION_TICKET_KEYS */ - VAR_RPZ = 556, /* VAR_RPZ */ - VAR_TAGS = 557, /* VAR_TAGS */ - VAR_RPZ_ACTION_OVERRIDE = 558, /* VAR_RPZ_ACTION_OVERRIDE */ - VAR_RPZ_CNAME_OVERRIDE = 559, /* VAR_RPZ_CNAME_OVERRIDE */ - VAR_RPZ_LOG = 560, /* VAR_RPZ_LOG */ - VAR_RPZ_LOG_NAME = 561, /* VAR_RPZ_LOG_NAME */ - VAR_DYNLIB = 562, /* VAR_DYNLIB */ - VAR_DYNLIB_FILE = 563, /* VAR_DYNLIB_FILE */ - VAR_EDNS_CLIENT_STRING = 564, /* VAR_EDNS_CLIENT_STRING */ - VAR_EDNS_CLIENT_STRING_OPCODE = 565, /* VAR_EDNS_CLIENT_STRING_OPCODE */ - VAR_NSID = 566, /* VAR_NSID */ - VAR_ZONEMD_PERMISSIVE_MODE = 567, /* VAR_ZONEMD_PERMISSIVE_MODE */ - VAR_ZONEMD_CHECK = 568, /* VAR_ZONEMD_CHECK */ - VAR_ZONEMD_REJECT_ABSENCE = 569 /* VAR_ZONEMD_REJECT_ABSENCE */ - }; - typedef enum yytokentype yytoken_kind_t; -#endif -/* Token kinds. */ -#define YYEOF 0 -#define YYerror 256 -#define YYUNDEF 257 -#define SPACE 258 -#define LETTER 259 -#define NEWLINE 260 -#define COMMENT 261 -#define COLON 262 -#define ANY 263 -#define ZONESTR 264 -#define STRING_ARG 265 -#define VAR_FORCE_TOPLEVEL 266 -#define VAR_SERVER 267 -#define VAR_VERBOSITY 268 -#define VAR_NUM_THREADS 269 -#define VAR_PORT 270 -#define VAR_OUTGOING_RANGE 271 -#define VAR_INTERFACE 272 -#define VAR_PREFER_IP4 273 -#define VAR_DO_IP4 274 -#define VAR_DO_IP6 275 -#define VAR_PREFER_IP6 276 -#define VAR_DO_UDP 277 -#define VAR_DO_TCP 278 -#define VAR_TCP_MSS 279 -#define VAR_OUTGOING_TCP_MSS 280 -#define VAR_TCP_IDLE_TIMEOUT 281 -#define VAR_EDNS_TCP_KEEPALIVE 282 -#define VAR_EDNS_TCP_KEEPALIVE_TIMEOUT 283 -#define VAR_CHROOT 284 -#define VAR_USERNAME 285 -#define VAR_DIRECTORY 286 -#define VAR_LOGFILE 287 -#define VAR_PIDFILE 288 -#define VAR_MSG_CACHE_SIZE 289 -#define VAR_MSG_CACHE_SLABS 290 -#define VAR_NUM_QUERIES_PER_THREAD 291 -#define VAR_RRSET_CACHE_SIZE 292 -#define VAR_RRSET_CACHE_SLABS 293 -#define VAR_OUTGOING_NUM_TCP 294 -#define VAR_INFRA_HOST_TTL 295 -#define VAR_INFRA_LAME_TTL 296 -#define VAR_INFRA_CACHE_SLABS 297 -#define VAR_INFRA_CACHE_NUMHOSTS 298 -#define VAR_INFRA_CACHE_LAME_SIZE 299 -#define VAR_NAME 300 -#define VAR_STUB_ZONE 301 -#define VAR_STUB_HOST 302 -#define VAR_STUB_ADDR 303 -#define VAR_TARGET_FETCH_POLICY 304 -#define VAR_HARDEN_SHORT_BUFSIZE 305 -#define VAR_HARDEN_LARGE_QUERIES 306 -#define VAR_FORWARD_ZONE 307 -#define VAR_FORWARD_HOST 308 -#define VAR_FORWARD_ADDR 309 -#define VAR_DO_NOT_QUERY_ADDRESS 310 -#define VAR_HIDE_IDENTITY 311 -#define VAR_HIDE_VERSION 312 -#define VAR_IDENTITY 313 -#define VAR_VERSION 314 -#define VAR_HARDEN_GLUE 315 -#define VAR_MODULE_CONF 316 -#define VAR_TRUST_ANCHOR_FILE 317 -#define VAR_TRUST_ANCHOR 318 -#define VAR_VAL_OVERRIDE_DATE 319 -#define VAR_BOGUS_TTL 320 -#define VAR_VAL_CLEAN_ADDITIONAL 321 -#define VAR_VAL_PERMISSIVE_MODE 322 -#define VAR_INCOMING_NUM_TCP 323 -#define VAR_MSG_BUFFER_SIZE 324 -#define VAR_KEY_CACHE_SIZE 325 -#define VAR_KEY_CACHE_SLABS 326 -#define VAR_TRUSTED_KEYS_FILE 327 -#define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 328 -#define VAR_USE_SYSLOG 329 -#define VAR_OUTGOING_INTERFACE 330 -#define VAR_ROOT_HINTS 331 -#define VAR_DO_NOT_QUERY_LOCALHOST 332 -#define VAR_CACHE_MAX_TTL 333 -#define VAR_HARDEN_DNSSEC_STRIPPED 334 -#define VAR_ACCESS_CONTROL 335 -#define VAR_LOCAL_ZONE 336 -#define VAR_LOCAL_DATA 337 -#define VAR_INTERFACE_AUTOMATIC 338 -#define VAR_STATISTICS_INTERVAL 339 -#define VAR_DO_DAEMONIZE 340 -#define VAR_USE_CAPS_FOR_ID 341 -#define VAR_STATISTICS_CUMULATIVE 342 -#define VAR_OUTGOING_PORT_PERMIT 343 -#define VAR_OUTGOING_PORT_AVOID 344 -#define VAR_DLV_ANCHOR_FILE 345 -#define VAR_DLV_ANCHOR 346 -#define VAR_NEG_CACHE_SIZE 347 -#define VAR_HARDEN_REFERRAL_PATH 348 -#define VAR_PRIVATE_ADDRESS 349 -#define VAR_PRIVATE_DOMAIN 350 -#define VAR_REMOTE_CONTROL 351 -#define VAR_CONTROL_ENABLE 352 -#define VAR_CONTROL_INTERFACE 353 -#define VAR_CONTROL_PORT 354 -#define VAR_SERVER_KEY_FILE 355 -#define VAR_SERVER_CERT_FILE 356 -#define VAR_CONTROL_KEY_FILE 357 -#define VAR_CONTROL_CERT_FILE 358 -#define VAR_CONTROL_USE_CERT 359 -#define VAR_TCP_REUSE_TIMEOUT 360 -#define VAR_MAX_REUSE_TCP_QUERIES 361 -#define VAR_EXTENDED_STATISTICS 362 -#define VAR_LOCAL_DATA_PTR 363 -#define VAR_JOSTLE_TIMEOUT 364 -#define VAR_STUB_PRIME 365 -#define VAR_UNWANTED_REPLY_THRESHOLD 366 -#define VAR_LOG_TIME_ASCII 367 -#define VAR_DOMAIN_INSECURE 368 -#define VAR_PYTHON 369 -#define VAR_PYTHON_SCRIPT 370 -#define VAR_VAL_SIG_SKEW_MIN 371 -#define VAR_VAL_SIG_SKEW_MAX 372 -#define VAR_CACHE_MIN_TTL 373 -#define VAR_VAL_LOG_LEVEL 374 -#define VAR_AUTO_TRUST_ANCHOR_FILE 375 -#define VAR_KEEP_MISSING 376 -#define VAR_ADD_HOLDDOWN 377 -#define VAR_DEL_HOLDDOWN 378 -#define VAR_SO_RCVBUF 379 -#define VAR_EDNS_BUFFER_SIZE 380 -#define VAR_PREFETCH 381 -#define VAR_PREFETCH_KEY 382 -#define VAR_SO_SNDBUF 383 -#define VAR_SO_REUSEPORT 384 -#define VAR_HARDEN_BELOW_NXDOMAIN 385 -#define VAR_IGNORE_CD_FLAG 386 -#define VAR_LOG_QUERIES 387 -#define VAR_LOG_REPLIES 388 -#define VAR_LOG_LOCAL_ACTIONS 389 -#define VAR_TCP_UPSTREAM 390 -#define VAR_SSL_UPSTREAM 391 -#define VAR_TCP_AUTH_QUERY_TIMEOUT 392 -#define VAR_SSL_SERVICE_KEY 393 -#define VAR_SSL_SERVICE_PEM 394 -#define VAR_SSL_PORT 395 -#define VAR_FORWARD_FIRST 396 -#define VAR_STUB_SSL_UPSTREAM 397 -#define VAR_FORWARD_SSL_UPSTREAM 398 -#define VAR_TLS_CERT_BUNDLE 399 -#define VAR_HTTPS_PORT 400 -#define VAR_HTTP_ENDPOINT 401 -#define VAR_HTTP_MAX_STREAMS 402 -#define VAR_HTTP_QUERY_BUFFER_SIZE 403 -#define VAR_HTTP_RESPONSE_BUFFER_SIZE 404 -#define VAR_HTTP_NODELAY 405 -#define VAR_HTTP_NOTLS_DOWNSTREAM 406 -#define VAR_STUB_FIRST 407 -#define VAR_MINIMAL_RESPONSES 408 -#define VAR_RRSET_ROUNDROBIN 409 -#define VAR_MAX_UDP_SIZE 410 -#define VAR_DELAY_CLOSE 411 -#define VAR_UDP_CONNECT 412 -#define VAR_UNBLOCK_LAN_ZONES 413 -#define VAR_INSECURE_LAN_ZONES 414 -#define VAR_INFRA_CACHE_MIN_RTT 415 -#define VAR_INFRA_KEEP_PROBING 416 -#define VAR_DNS64_PREFIX 417 -#define VAR_DNS64_SYNTHALL 418 -#define VAR_DNS64_IGNORE_AAAA 419 -#define VAR_DNSTAP 420 -#define VAR_DNSTAP_ENABLE 421 -#define VAR_DNSTAP_SOCKET_PATH 422 -#define VAR_DNSTAP_IP 423 -#define VAR_DNSTAP_TLS 424 -#define VAR_DNSTAP_TLS_SERVER_NAME 425 -#define VAR_DNSTAP_TLS_CERT_BUNDLE 426 -#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 427 -#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 428 -#define VAR_DNSTAP_SEND_IDENTITY 429 -#define VAR_DNSTAP_SEND_VERSION 430 -#define VAR_DNSTAP_BIDIRECTIONAL 431 -#define VAR_DNSTAP_IDENTITY 432 -#define VAR_DNSTAP_VERSION 433 -#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 434 -#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 435 -#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 436 -#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 437 -#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 438 -#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 439 -#define VAR_RESPONSE_IP_TAG 440 -#define VAR_RESPONSE_IP 441 -#define VAR_RESPONSE_IP_DATA 442 -#define VAR_HARDEN_ALGO_DOWNGRADE 443 -#define VAR_IP_TRANSPARENT 444 -#define VAR_IP_DSCP 445 -#define VAR_DISABLE_DNSSEC_LAME_CHECK 446 -#define VAR_IP_RATELIMIT 447 -#define VAR_IP_RATELIMIT_SLABS 448 -#define VAR_IP_RATELIMIT_SIZE 449 -#define VAR_RATELIMIT 450 -#define VAR_RATELIMIT_SLABS 451 -#define VAR_RATELIMIT_SIZE 452 -#define VAR_RATELIMIT_FOR_DOMAIN 453 -#define VAR_RATELIMIT_BELOW_DOMAIN 454 -#define VAR_IP_RATELIMIT_FACTOR 455 -#define VAR_RATELIMIT_FACTOR 456 -#define VAR_SEND_CLIENT_SUBNET 457 -#define VAR_CLIENT_SUBNET_ZONE 458 -#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 459 -#define VAR_CLIENT_SUBNET_OPCODE 460 -#define VAR_MAX_CLIENT_SUBNET_IPV4 461 -#define VAR_MAX_CLIENT_SUBNET_IPV6 462 -#define VAR_MIN_CLIENT_SUBNET_IPV4 463 -#define VAR_MIN_CLIENT_SUBNET_IPV6 464 -#define VAR_MAX_ECS_TREE_SIZE_IPV4 465 -#define VAR_MAX_ECS_TREE_SIZE_IPV6 466 -#define VAR_CAPS_WHITELIST 467 -#define VAR_CACHE_MAX_NEGATIVE_TTL 468 -#define VAR_PERMIT_SMALL_HOLDDOWN 469 -#define VAR_QNAME_MINIMISATION 470 -#define VAR_QNAME_MINIMISATION_STRICT 471 -#define VAR_IP_FREEBIND 472 -#define VAR_DEFINE_TAG 473 -#define VAR_LOCAL_ZONE_TAG 474 -#define VAR_ACCESS_CONTROL_TAG 475 -#define VAR_LOCAL_ZONE_OVERRIDE 476 -#define VAR_ACCESS_CONTROL_TAG_ACTION 477 -#define VAR_ACCESS_CONTROL_TAG_DATA 478 -#define VAR_VIEW 479 -#define VAR_ACCESS_CONTROL_VIEW 480 -#define VAR_VIEW_FIRST 481 -#define VAR_SERVE_EXPIRED 482 -#define VAR_SERVE_EXPIRED_TTL 483 -#define VAR_SERVE_EXPIRED_TTL_RESET 484 -#define VAR_SERVE_EXPIRED_REPLY_TTL 485 -#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 486 -#define VAR_SERVE_ORIGINAL_TTL 487 -#define VAR_FAKE_DSA 488 -#define VAR_FAKE_SHA1 489 -#define VAR_LOG_IDENTITY 490 -#define VAR_HIDE_TRUSTANCHOR 491 -#define VAR_TRUST_ANCHOR_SIGNALING 492 -#define VAR_AGGRESSIVE_NSEC 493 -#define VAR_USE_SYSTEMD 494 -#define VAR_SHM_ENABLE 495 -#define VAR_SHM_KEY 496 -#define VAR_ROOT_KEY_SENTINEL 497 -#define VAR_DNSCRYPT 498 -#define VAR_DNSCRYPT_ENABLE 499 -#define VAR_DNSCRYPT_PORT 500 -#define VAR_DNSCRYPT_PROVIDER 501 -#define VAR_DNSCRYPT_SECRET_KEY 502 -#define VAR_DNSCRYPT_PROVIDER_CERT 503 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 504 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 505 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 506 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 507 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 508 -#define VAR_PAD_RESPONSES 509 -#define VAR_PAD_RESPONSES_BLOCK_SIZE 510 -#define VAR_PAD_QUERIES 511 -#define VAR_PAD_QUERIES_BLOCK_SIZE 512 -#define VAR_IPSECMOD_ENABLED 513 -#define VAR_IPSECMOD_HOOK 514 -#define VAR_IPSECMOD_IGNORE_BOGUS 515 -#define VAR_IPSECMOD_MAX_TTL 516 -#define VAR_IPSECMOD_WHITELIST 517 -#define VAR_IPSECMOD_STRICT 518 -#define VAR_CACHEDB 519 -#define VAR_CACHEDB_BACKEND 520 -#define VAR_CACHEDB_SECRETSEED 521 -#define VAR_CACHEDB_REDISHOST 522 -#define VAR_CACHEDB_REDISPORT 523 -#define VAR_CACHEDB_REDISTIMEOUT 524 -#define VAR_CACHEDB_REDISEXPIRERECORDS 525 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 526 -#define VAR_FOR_UPSTREAM 527 -#define VAR_AUTH_ZONE 528 -#define VAR_ZONEFILE 529 -#define VAR_MASTER 530 -#define VAR_URL 531 -#define VAR_FOR_DOWNSTREAM 532 -#define VAR_FALLBACK_ENABLED 533 -#define VAR_TLS_ADDITIONAL_PORT 534 -#define VAR_LOW_RTT 535 -#define VAR_LOW_RTT_PERMIL 536 -#define VAR_FAST_SERVER_PERMIL 537 -#define VAR_FAST_SERVER_NUM 538 -#define VAR_ALLOW_NOTIFY 539 -#define VAR_TLS_WIN_CERT 540 -#define VAR_TCP_CONNECTION_LIMIT 541 -#define VAR_FORWARD_NO_CACHE 542 -#define VAR_STUB_NO_CACHE 543 -#define VAR_LOG_SERVFAIL 544 -#define VAR_DENY_ANY 545 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 546 -#define VAR_LOG_TAG_QUERYREPLY 547 -#define VAR_STREAM_WAIT_SIZE 548 -#define VAR_TLS_CIPHERS 549 -#define VAR_TLS_CIPHERSUITES 550 -#define VAR_TLS_USE_SNI 551 -#define VAR_IPSET 552 -#define VAR_IPSET_NAME_V4 553 -#define VAR_IPSET_NAME_V6 554 -#define VAR_TLS_SESSION_TICKET_KEYS 555 -#define VAR_RPZ 556 -#define VAR_TAGS 557 -#define VAR_RPZ_ACTION_OVERRIDE 558 -#define VAR_RPZ_CNAME_OVERRIDE 559 -#define VAR_RPZ_LOG 560 -#define VAR_RPZ_LOG_NAME 561 -#define VAR_DYNLIB 562 -#define VAR_DYNLIB_FILE 563 -#define VAR_EDNS_CLIENT_STRING 564 -#define VAR_EDNS_CLIENT_STRING_OPCODE 565 -#define VAR_NSID 566 -#define VAR_ZONEMD_PERMISSIVE_MODE 567 -#define VAR_ZONEMD_CHECK 568 -#define VAR_ZONEMD_REJECT_ABSENCE 569 - -/* Value type. */ -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -union YYSTYPE -{ -#line 66 "./util/configparser.y" - - char* str; - -#line 784 "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 */ +#include "configparser.h" /* Symbol kind. */ enum yysymbol_kind_t { @@ -916,543 +242,545 @@ enum yysymbol_kind_t YYSYMBOL_VAR_PYTHON_SCRIPT = 115, /* VAR_PYTHON_SCRIPT */ YYSYMBOL_VAR_VAL_SIG_SKEW_MIN = 116, /* VAR_VAL_SIG_SKEW_MIN */ YYSYMBOL_VAR_VAL_SIG_SKEW_MAX = 117, /* VAR_VAL_SIG_SKEW_MAX */ - YYSYMBOL_VAR_CACHE_MIN_TTL = 118, /* VAR_CACHE_MIN_TTL */ - YYSYMBOL_VAR_VAL_LOG_LEVEL = 119, /* VAR_VAL_LOG_LEVEL */ - YYSYMBOL_VAR_AUTO_TRUST_ANCHOR_FILE = 120, /* VAR_AUTO_TRUST_ANCHOR_FILE */ - YYSYMBOL_VAR_KEEP_MISSING = 121, /* VAR_KEEP_MISSING */ - YYSYMBOL_VAR_ADD_HOLDDOWN = 122, /* VAR_ADD_HOLDDOWN */ - YYSYMBOL_VAR_DEL_HOLDDOWN = 123, /* VAR_DEL_HOLDDOWN */ - YYSYMBOL_VAR_SO_RCVBUF = 124, /* VAR_SO_RCVBUF */ - YYSYMBOL_VAR_EDNS_BUFFER_SIZE = 125, /* VAR_EDNS_BUFFER_SIZE */ - YYSYMBOL_VAR_PREFETCH = 126, /* VAR_PREFETCH */ - YYSYMBOL_VAR_PREFETCH_KEY = 127, /* VAR_PREFETCH_KEY */ - YYSYMBOL_VAR_SO_SNDBUF = 128, /* VAR_SO_SNDBUF */ - YYSYMBOL_VAR_SO_REUSEPORT = 129, /* VAR_SO_REUSEPORT */ - YYSYMBOL_VAR_HARDEN_BELOW_NXDOMAIN = 130, /* VAR_HARDEN_BELOW_NXDOMAIN */ - YYSYMBOL_VAR_IGNORE_CD_FLAG = 131, /* VAR_IGNORE_CD_FLAG */ - YYSYMBOL_VAR_LOG_QUERIES = 132, /* VAR_LOG_QUERIES */ - YYSYMBOL_VAR_LOG_REPLIES = 133, /* VAR_LOG_REPLIES */ - YYSYMBOL_VAR_LOG_LOCAL_ACTIONS = 134, /* VAR_LOG_LOCAL_ACTIONS */ - YYSYMBOL_VAR_TCP_UPSTREAM = 135, /* VAR_TCP_UPSTREAM */ - YYSYMBOL_VAR_SSL_UPSTREAM = 136, /* VAR_SSL_UPSTREAM */ - YYSYMBOL_VAR_TCP_AUTH_QUERY_TIMEOUT = 137, /* VAR_TCP_AUTH_QUERY_TIMEOUT */ - YYSYMBOL_VAR_SSL_SERVICE_KEY = 138, /* VAR_SSL_SERVICE_KEY */ - YYSYMBOL_VAR_SSL_SERVICE_PEM = 139, /* VAR_SSL_SERVICE_PEM */ - YYSYMBOL_VAR_SSL_PORT = 140, /* VAR_SSL_PORT */ - YYSYMBOL_VAR_FORWARD_FIRST = 141, /* VAR_FORWARD_FIRST */ - YYSYMBOL_VAR_STUB_SSL_UPSTREAM = 142, /* VAR_STUB_SSL_UPSTREAM */ - YYSYMBOL_VAR_FORWARD_SSL_UPSTREAM = 143, /* VAR_FORWARD_SSL_UPSTREAM */ - YYSYMBOL_VAR_TLS_CERT_BUNDLE = 144, /* VAR_TLS_CERT_BUNDLE */ - YYSYMBOL_VAR_HTTPS_PORT = 145, /* VAR_HTTPS_PORT */ - YYSYMBOL_VAR_HTTP_ENDPOINT = 146, /* VAR_HTTP_ENDPOINT */ - YYSYMBOL_VAR_HTTP_MAX_STREAMS = 147, /* VAR_HTTP_MAX_STREAMS */ - YYSYMBOL_VAR_HTTP_QUERY_BUFFER_SIZE = 148, /* VAR_HTTP_QUERY_BUFFER_SIZE */ - YYSYMBOL_VAR_HTTP_RESPONSE_BUFFER_SIZE = 149, /* VAR_HTTP_RESPONSE_BUFFER_SIZE */ - YYSYMBOL_VAR_HTTP_NODELAY = 150, /* VAR_HTTP_NODELAY */ - YYSYMBOL_VAR_HTTP_NOTLS_DOWNSTREAM = 151, /* VAR_HTTP_NOTLS_DOWNSTREAM */ - YYSYMBOL_VAR_STUB_FIRST = 152, /* VAR_STUB_FIRST */ - YYSYMBOL_VAR_MINIMAL_RESPONSES = 153, /* VAR_MINIMAL_RESPONSES */ - YYSYMBOL_VAR_RRSET_ROUNDROBIN = 154, /* VAR_RRSET_ROUNDROBIN */ - YYSYMBOL_VAR_MAX_UDP_SIZE = 155, /* VAR_MAX_UDP_SIZE */ - YYSYMBOL_VAR_DELAY_CLOSE = 156, /* VAR_DELAY_CLOSE */ - YYSYMBOL_VAR_UDP_CONNECT = 157, /* VAR_UDP_CONNECT */ - YYSYMBOL_VAR_UNBLOCK_LAN_ZONES = 158, /* VAR_UNBLOCK_LAN_ZONES */ - YYSYMBOL_VAR_INSECURE_LAN_ZONES = 159, /* VAR_INSECURE_LAN_ZONES */ - YYSYMBOL_VAR_INFRA_CACHE_MIN_RTT = 160, /* VAR_INFRA_CACHE_MIN_RTT */ - YYSYMBOL_VAR_INFRA_KEEP_PROBING = 161, /* VAR_INFRA_KEEP_PROBING */ - YYSYMBOL_VAR_DNS64_PREFIX = 162, /* VAR_DNS64_PREFIX */ - YYSYMBOL_VAR_DNS64_SYNTHALL = 163, /* VAR_DNS64_SYNTHALL */ - YYSYMBOL_VAR_DNS64_IGNORE_AAAA = 164, /* VAR_DNS64_IGNORE_AAAA */ - YYSYMBOL_VAR_DNSTAP = 165, /* VAR_DNSTAP */ - YYSYMBOL_VAR_DNSTAP_ENABLE = 166, /* VAR_DNSTAP_ENABLE */ - YYSYMBOL_VAR_DNSTAP_SOCKET_PATH = 167, /* VAR_DNSTAP_SOCKET_PATH */ - YYSYMBOL_VAR_DNSTAP_IP = 168, /* VAR_DNSTAP_IP */ - YYSYMBOL_VAR_DNSTAP_TLS = 169, /* VAR_DNSTAP_TLS */ - YYSYMBOL_VAR_DNSTAP_TLS_SERVER_NAME = 170, /* VAR_DNSTAP_TLS_SERVER_NAME */ - YYSYMBOL_VAR_DNSTAP_TLS_CERT_BUNDLE = 171, /* VAR_DNSTAP_TLS_CERT_BUNDLE */ - YYSYMBOL_VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 172, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE */ - YYSYMBOL_VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 173, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE */ - YYSYMBOL_VAR_DNSTAP_SEND_IDENTITY = 174, /* VAR_DNSTAP_SEND_IDENTITY */ - YYSYMBOL_VAR_DNSTAP_SEND_VERSION = 175, /* VAR_DNSTAP_SEND_VERSION */ - YYSYMBOL_VAR_DNSTAP_BIDIRECTIONAL = 176, /* VAR_DNSTAP_BIDIRECTIONAL */ - YYSYMBOL_VAR_DNSTAP_IDENTITY = 177, /* VAR_DNSTAP_IDENTITY */ - YYSYMBOL_VAR_DNSTAP_VERSION = 178, /* VAR_DNSTAP_VERSION */ - YYSYMBOL_VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 179, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES */ - YYSYMBOL_VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 180, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES */ - YYSYMBOL_VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 181, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES */ - YYSYMBOL_VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 182, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES */ - YYSYMBOL_VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 183, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES */ - YYSYMBOL_VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 184, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES */ - YYSYMBOL_VAR_RESPONSE_IP_TAG = 185, /* VAR_RESPONSE_IP_TAG */ - YYSYMBOL_VAR_RESPONSE_IP = 186, /* VAR_RESPONSE_IP */ - YYSYMBOL_VAR_RESPONSE_IP_DATA = 187, /* VAR_RESPONSE_IP_DATA */ - YYSYMBOL_VAR_HARDEN_ALGO_DOWNGRADE = 188, /* VAR_HARDEN_ALGO_DOWNGRADE */ - YYSYMBOL_VAR_IP_TRANSPARENT = 189, /* VAR_IP_TRANSPARENT */ - YYSYMBOL_VAR_IP_DSCP = 190, /* VAR_IP_DSCP */ - YYSYMBOL_VAR_DISABLE_DNSSEC_LAME_CHECK = 191, /* VAR_DISABLE_DNSSEC_LAME_CHECK */ - YYSYMBOL_VAR_IP_RATELIMIT = 192, /* VAR_IP_RATELIMIT */ - YYSYMBOL_VAR_IP_RATELIMIT_SLABS = 193, /* VAR_IP_RATELIMIT_SLABS */ - YYSYMBOL_VAR_IP_RATELIMIT_SIZE = 194, /* VAR_IP_RATELIMIT_SIZE */ - YYSYMBOL_VAR_RATELIMIT = 195, /* VAR_RATELIMIT */ - YYSYMBOL_VAR_RATELIMIT_SLABS = 196, /* VAR_RATELIMIT_SLABS */ - YYSYMBOL_VAR_RATELIMIT_SIZE = 197, /* VAR_RATELIMIT_SIZE */ - YYSYMBOL_VAR_RATELIMIT_FOR_DOMAIN = 198, /* VAR_RATELIMIT_FOR_DOMAIN */ - YYSYMBOL_VAR_RATELIMIT_BELOW_DOMAIN = 199, /* VAR_RATELIMIT_BELOW_DOMAIN */ - YYSYMBOL_VAR_IP_RATELIMIT_FACTOR = 200, /* VAR_IP_RATELIMIT_FACTOR */ - YYSYMBOL_VAR_RATELIMIT_FACTOR = 201, /* VAR_RATELIMIT_FACTOR */ - YYSYMBOL_VAR_SEND_CLIENT_SUBNET = 202, /* VAR_SEND_CLIENT_SUBNET */ - YYSYMBOL_VAR_CLIENT_SUBNET_ZONE = 203, /* VAR_CLIENT_SUBNET_ZONE */ - YYSYMBOL_VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 204, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ - YYSYMBOL_VAR_CLIENT_SUBNET_OPCODE = 205, /* VAR_CLIENT_SUBNET_OPCODE */ - YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV4 = 206, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ - YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV6 = 207, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ - YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV4 = 208, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ - YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV6 = 209, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ - YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV4 = 210, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ - YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV6 = 211, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ - YYSYMBOL_VAR_CAPS_WHITELIST = 212, /* VAR_CAPS_WHITELIST */ - YYSYMBOL_VAR_CACHE_MAX_NEGATIVE_TTL = 213, /* VAR_CACHE_MAX_NEGATIVE_TTL */ - YYSYMBOL_VAR_PERMIT_SMALL_HOLDDOWN = 214, /* VAR_PERMIT_SMALL_HOLDDOWN */ - YYSYMBOL_VAR_QNAME_MINIMISATION = 215, /* VAR_QNAME_MINIMISATION */ - YYSYMBOL_VAR_QNAME_MINIMISATION_STRICT = 216, /* VAR_QNAME_MINIMISATION_STRICT */ - YYSYMBOL_VAR_IP_FREEBIND = 217, /* VAR_IP_FREEBIND */ - YYSYMBOL_VAR_DEFINE_TAG = 218, /* VAR_DEFINE_TAG */ - YYSYMBOL_VAR_LOCAL_ZONE_TAG = 219, /* VAR_LOCAL_ZONE_TAG */ - YYSYMBOL_VAR_ACCESS_CONTROL_TAG = 220, /* VAR_ACCESS_CONTROL_TAG */ - YYSYMBOL_VAR_LOCAL_ZONE_OVERRIDE = 221, /* VAR_LOCAL_ZONE_OVERRIDE */ - YYSYMBOL_VAR_ACCESS_CONTROL_TAG_ACTION = 222, /* VAR_ACCESS_CONTROL_TAG_ACTION */ - YYSYMBOL_VAR_ACCESS_CONTROL_TAG_DATA = 223, /* VAR_ACCESS_CONTROL_TAG_DATA */ - YYSYMBOL_VAR_VIEW = 224, /* VAR_VIEW */ - YYSYMBOL_VAR_ACCESS_CONTROL_VIEW = 225, /* VAR_ACCESS_CONTROL_VIEW */ - YYSYMBOL_VAR_VIEW_FIRST = 226, /* VAR_VIEW_FIRST */ - YYSYMBOL_VAR_SERVE_EXPIRED = 227, /* VAR_SERVE_EXPIRED */ - YYSYMBOL_VAR_SERVE_EXPIRED_TTL = 228, /* VAR_SERVE_EXPIRED_TTL */ - YYSYMBOL_VAR_SERVE_EXPIRED_TTL_RESET = 229, /* VAR_SERVE_EXPIRED_TTL_RESET */ - YYSYMBOL_VAR_SERVE_EXPIRED_REPLY_TTL = 230, /* VAR_SERVE_EXPIRED_REPLY_TTL */ - YYSYMBOL_VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 231, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ - YYSYMBOL_VAR_SERVE_ORIGINAL_TTL = 232, /* VAR_SERVE_ORIGINAL_TTL */ - YYSYMBOL_VAR_FAKE_DSA = 233, /* VAR_FAKE_DSA */ - YYSYMBOL_VAR_FAKE_SHA1 = 234, /* VAR_FAKE_SHA1 */ - YYSYMBOL_VAR_LOG_IDENTITY = 235, /* VAR_LOG_IDENTITY */ - YYSYMBOL_VAR_HIDE_TRUSTANCHOR = 236, /* VAR_HIDE_TRUSTANCHOR */ - YYSYMBOL_VAR_TRUST_ANCHOR_SIGNALING = 237, /* VAR_TRUST_ANCHOR_SIGNALING */ - YYSYMBOL_VAR_AGGRESSIVE_NSEC = 238, /* VAR_AGGRESSIVE_NSEC */ - YYSYMBOL_VAR_USE_SYSTEMD = 239, /* VAR_USE_SYSTEMD */ - YYSYMBOL_VAR_SHM_ENABLE = 240, /* VAR_SHM_ENABLE */ - YYSYMBOL_VAR_SHM_KEY = 241, /* VAR_SHM_KEY */ - YYSYMBOL_VAR_ROOT_KEY_SENTINEL = 242, /* VAR_ROOT_KEY_SENTINEL */ - YYSYMBOL_VAR_DNSCRYPT = 243, /* VAR_DNSCRYPT */ - YYSYMBOL_VAR_DNSCRYPT_ENABLE = 244, /* VAR_DNSCRYPT_ENABLE */ - YYSYMBOL_VAR_DNSCRYPT_PORT = 245, /* VAR_DNSCRYPT_PORT */ - YYSYMBOL_VAR_DNSCRYPT_PROVIDER = 246, /* VAR_DNSCRYPT_PROVIDER */ - YYSYMBOL_VAR_DNSCRYPT_SECRET_KEY = 247, /* VAR_DNSCRYPT_SECRET_KEY */ - YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT = 248, /* VAR_DNSCRYPT_PROVIDER_CERT */ - YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 249, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ - YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 250, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ - YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 251, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ - YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SIZE = 252, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ - YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SLABS = 253, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ - YYSYMBOL_VAR_PAD_RESPONSES = 254, /* VAR_PAD_RESPONSES */ - YYSYMBOL_VAR_PAD_RESPONSES_BLOCK_SIZE = 255, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ - YYSYMBOL_VAR_PAD_QUERIES = 256, /* VAR_PAD_QUERIES */ - YYSYMBOL_VAR_PAD_QUERIES_BLOCK_SIZE = 257, /* VAR_PAD_QUERIES_BLOCK_SIZE */ - YYSYMBOL_VAR_IPSECMOD_ENABLED = 258, /* VAR_IPSECMOD_ENABLED */ - YYSYMBOL_VAR_IPSECMOD_HOOK = 259, /* VAR_IPSECMOD_HOOK */ - YYSYMBOL_VAR_IPSECMOD_IGNORE_BOGUS = 260, /* VAR_IPSECMOD_IGNORE_BOGUS */ - YYSYMBOL_VAR_IPSECMOD_MAX_TTL = 261, /* VAR_IPSECMOD_MAX_TTL */ - YYSYMBOL_VAR_IPSECMOD_WHITELIST = 262, /* VAR_IPSECMOD_WHITELIST */ - YYSYMBOL_VAR_IPSECMOD_STRICT = 263, /* VAR_IPSECMOD_STRICT */ - YYSYMBOL_VAR_CACHEDB = 264, /* VAR_CACHEDB */ - YYSYMBOL_VAR_CACHEDB_BACKEND = 265, /* VAR_CACHEDB_BACKEND */ - YYSYMBOL_VAR_CACHEDB_SECRETSEED = 266, /* VAR_CACHEDB_SECRETSEED */ - YYSYMBOL_VAR_CACHEDB_REDISHOST = 267, /* VAR_CACHEDB_REDISHOST */ - YYSYMBOL_VAR_CACHEDB_REDISPORT = 268, /* VAR_CACHEDB_REDISPORT */ - YYSYMBOL_VAR_CACHEDB_REDISTIMEOUT = 269, /* VAR_CACHEDB_REDISTIMEOUT */ - YYSYMBOL_VAR_CACHEDB_REDISEXPIRERECORDS = 270, /* VAR_CACHEDB_REDISEXPIRERECORDS */ - YYSYMBOL_VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 271, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ - YYSYMBOL_VAR_FOR_UPSTREAM = 272, /* VAR_FOR_UPSTREAM */ - YYSYMBOL_VAR_AUTH_ZONE = 273, /* VAR_AUTH_ZONE */ - YYSYMBOL_VAR_ZONEFILE = 274, /* VAR_ZONEFILE */ - YYSYMBOL_VAR_MASTER = 275, /* VAR_MASTER */ - YYSYMBOL_VAR_URL = 276, /* VAR_URL */ - YYSYMBOL_VAR_FOR_DOWNSTREAM = 277, /* VAR_FOR_DOWNSTREAM */ - YYSYMBOL_VAR_FALLBACK_ENABLED = 278, /* VAR_FALLBACK_ENABLED */ - YYSYMBOL_VAR_TLS_ADDITIONAL_PORT = 279, /* VAR_TLS_ADDITIONAL_PORT */ - YYSYMBOL_VAR_LOW_RTT = 280, /* VAR_LOW_RTT */ - YYSYMBOL_VAR_LOW_RTT_PERMIL = 281, /* VAR_LOW_RTT_PERMIL */ - YYSYMBOL_VAR_FAST_SERVER_PERMIL = 282, /* VAR_FAST_SERVER_PERMIL */ - YYSYMBOL_VAR_FAST_SERVER_NUM = 283, /* VAR_FAST_SERVER_NUM */ - YYSYMBOL_VAR_ALLOW_NOTIFY = 284, /* VAR_ALLOW_NOTIFY */ - YYSYMBOL_VAR_TLS_WIN_CERT = 285, /* VAR_TLS_WIN_CERT */ - YYSYMBOL_VAR_TCP_CONNECTION_LIMIT = 286, /* VAR_TCP_CONNECTION_LIMIT */ - YYSYMBOL_VAR_FORWARD_NO_CACHE = 287, /* VAR_FORWARD_NO_CACHE */ - YYSYMBOL_VAR_STUB_NO_CACHE = 288, /* VAR_STUB_NO_CACHE */ - YYSYMBOL_VAR_LOG_SERVFAIL = 289, /* VAR_LOG_SERVFAIL */ - YYSYMBOL_VAR_DENY_ANY = 290, /* VAR_DENY_ANY */ - YYSYMBOL_VAR_UNKNOWN_SERVER_TIME_LIMIT = 291, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ - YYSYMBOL_VAR_LOG_TAG_QUERYREPLY = 292, /* VAR_LOG_TAG_QUERYREPLY */ - YYSYMBOL_VAR_STREAM_WAIT_SIZE = 293, /* VAR_STREAM_WAIT_SIZE */ - YYSYMBOL_VAR_TLS_CIPHERS = 294, /* VAR_TLS_CIPHERS */ - YYSYMBOL_VAR_TLS_CIPHERSUITES = 295, /* VAR_TLS_CIPHERSUITES */ - YYSYMBOL_VAR_TLS_USE_SNI = 296, /* VAR_TLS_USE_SNI */ - YYSYMBOL_VAR_IPSET = 297, /* VAR_IPSET */ - YYSYMBOL_VAR_IPSET_NAME_V4 = 298, /* VAR_IPSET_NAME_V4 */ - YYSYMBOL_VAR_IPSET_NAME_V6 = 299, /* VAR_IPSET_NAME_V6 */ - YYSYMBOL_VAR_TLS_SESSION_TICKET_KEYS = 300, /* VAR_TLS_SESSION_TICKET_KEYS */ - YYSYMBOL_VAR_RPZ = 301, /* VAR_RPZ */ - YYSYMBOL_VAR_TAGS = 302, /* VAR_TAGS */ - YYSYMBOL_VAR_RPZ_ACTION_OVERRIDE = 303, /* VAR_RPZ_ACTION_OVERRIDE */ - YYSYMBOL_VAR_RPZ_CNAME_OVERRIDE = 304, /* VAR_RPZ_CNAME_OVERRIDE */ - YYSYMBOL_VAR_RPZ_LOG = 305, /* VAR_RPZ_LOG */ - YYSYMBOL_VAR_RPZ_LOG_NAME = 306, /* VAR_RPZ_LOG_NAME */ - YYSYMBOL_VAR_DYNLIB = 307, /* VAR_DYNLIB */ - YYSYMBOL_VAR_DYNLIB_FILE = 308, /* VAR_DYNLIB_FILE */ - YYSYMBOL_VAR_EDNS_CLIENT_STRING = 309, /* VAR_EDNS_CLIENT_STRING */ - YYSYMBOL_VAR_EDNS_CLIENT_STRING_OPCODE = 310, /* VAR_EDNS_CLIENT_STRING_OPCODE */ - YYSYMBOL_VAR_NSID = 311, /* VAR_NSID */ - YYSYMBOL_VAR_ZONEMD_PERMISSIVE_MODE = 312, /* VAR_ZONEMD_PERMISSIVE_MODE */ - YYSYMBOL_VAR_ZONEMD_CHECK = 313, /* VAR_ZONEMD_CHECK */ - YYSYMBOL_VAR_ZONEMD_REJECT_ABSENCE = 314, /* VAR_ZONEMD_REJECT_ABSENCE */ - YYSYMBOL_YYACCEPT = 315, /* $accept */ - YYSYMBOL_toplevelvars = 316, /* toplevelvars */ - YYSYMBOL_toplevelvar = 317, /* toplevelvar */ - YYSYMBOL_force_toplevel = 318, /* force_toplevel */ - YYSYMBOL_serverstart = 319, /* serverstart */ - YYSYMBOL_contents_server = 320, /* contents_server */ - YYSYMBOL_content_server = 321, /* content_server */ - YYSYMBOL_stubstart = 322, /* stubstart */ - YYSYMBOL_contents_stub = 323, /* contents_stub */ - YYSYMBOL_content_stub = 324, /* content_stub */ - YYSYMBOL_forwardstart = 325, /* forwardstart */ - YYSYMBOL_contents_forward = 326, /* contents_forward */ - YYSYMBOL_content_forward = 327, /* content_forward */ - YYSYMBOL_viewstart = 328, /* viewstart */ - YYSYMBOL_contents_view = 329, /* contents_view */ - YYSYMBOL_content_view = 330, /* content_view */ - YYSYMBOL_authstart = 331, /* authstart */ - YYSYMBOL_contents_auth = 332, /* contents_auth */ - YYSYMBOL_content_auth = 333, /* content_auth */ - YYSYMBOL_rpz_tag = 334, /* rpz_tag */ - YYSYMBOL_rpz_action_override = 335, /* rpz_action_override */ - YYSYMBOL_rpz_cname_override = 336, /* rpz_cname_override */ - YYSYMBOL_rpz_log = 337, /* rpz_log */ - YYSYMBOL_rpz_log_name = 338, /* rpz_log_name */ - YYSYMBOL_rpzstart = 339, /* rpzstart */ - YYSYMBOL_contents_rpz = 340, /* contents_rpz */ - YYSYMBOL_content_rpz = 341, /* content_rpz */ - YYSYMBOL_server_num_threads = 342, /* server_num_threads */ - YYSYMBOL_server_verbosity = 343, /* server_verbosity */ - YYSYMBOL_server_statistics_interval = 344, /* server_statistics_interval */ - YYSYMBOL_server_statistics_cumulative = 345, /* server_statistics_cumulative */ - YYSYMBOL_server_extended_statistics = 346, /* server_extended_statistics */ - YYSYMBOL_server_shm_enable = 347, /* server_shm_enable */ - YYSYMBOL_server_shm_key = 348, /* server_shm_key */ - YYSYMBOL_server_port = 349, /* server_port */ - YYSYMBOL_server_send_client_subnet = 350, /* server_send_client_subnet */ - YYSYMBOL_server_client_subnet_zone = 351, /* server_client_subnet_zone */ - YYSYMBOL_server_client_subnet_always_forward = 352, /* server_client_subnet_always_forward */ - YYSYMBOL_server_client_subnet_opcode = 353, /* server_client_subnet_opcode */ - YYSYMBOL_server_max_client_subnet_ipv4 = 354, /* server_max_client_subnet_ipv4 */ - YYSYMBOL_server_max_client_subnet_ipv6 = 355, /* server_max_client_subnet_ipv6 */ - YYSYMBOL_server_min_client_subnet_ipv4 = 356, /* server_min_client_subnet_ipv4 */ - YYSYMBOL_server_min_client_subnet_ipv6 = 357, /* server_min_client_subnet_ipv6 */ - YYSYMBOL_server_max_ecs_tree_size_ipv4 = 358, /* server_max_ecs_tree_size_ipv4 */ - YYSYMBOL_server_max_ecs_tree_size_ipv6 = 359, /* server_max_ecs_tree_size_ipv6 */ - YYSYMBOL_server_interface = 360, /* server_interface */ - YYSYMBOL_server_outgoing_interface = 361, /* server_outgoing_interface */ - YYSYMBOL_server_outgoing_range = 362, /* server_outgoing_range */ - YYSYMBOL_server_outgoing_port_permit = 363, /* server_outgoing_port_permit */ - YYSYMBOL_server_outgoing_port_avoid = 364, /* server_outgoing_port_avoid */ - YYSYMBOL_server_outgoing_num_tcp = 365, /* server_outgoing_num_tcp */ - YYSYMBOL_server_incoming_num_tcp = 366, /* server_incoming_num_tcp */ - YYSYMBOL_server_interface_automatic = 367, /* server_interface_automatic */ - YYSYMBOL_server_do_ip4 = 368, /* server_do_ip4 */ - YYSYMBOL_server_do_ip6 = 369, /* server_do_ip6 */ - YYSYMBOL_server_do_udp = 370, /* server_do_udp */ - YYSYMBOL_server_do_tcp = 371, /* server_do_tcp */ - YYSYMBOL_server_prefer_ip4 = 372, /* server_prefer_ip4 */ - YYSYMBOL_server_prefer_ip6 = 373, /* server_prefer_ip6 */ - YYSYMBOL_server_tcp_mss = 374, /* server_tcp_mss */ - YYSYMBOL_server_outgoing_tcp_mss = 375, /* server_outgoing_tcp_mss */ - YYSYMBOL_server_tcp_idle_timeout = 376, /* server_tcp_idle_timeout */ - YYSYMBOL_server_max_reuse_tcp_queries = 377, /* server_max_reuse_tcp_queries */ - YYSYMBOL_server_tcp_reuse_timeout = 378, /* server_tcp_reuse_timeout */ - YYSYMBOL_server_tcp_auth_query_timeout = 379, /* server_tcp_auth_query_timeout */ - YYSYMBOL_server_tcp_keepalive = 380, /* server_tcp_keepalive */ - YYSYMBOL_server_tcp_keepalive_timeout = 381, /* server_tcp_keepalive_timeout */ - YYSYMBOL_server_tcp_upstream = 382, /* server_tcp_upstream */ - YYSYMBOL_server_udp_upstream_without_downstream = 383, /* server_udp_upstream_without_downstream */ - YYSYMBOL_server_ssl_upstream = 384, /* server_ssl_upstream */ - YYSYMBOL_server_ssl_service_key = 385, /* server_ssl_service_key */ - YYSYMBOL_server_ssl_service_pem = 386, /* server_ssl_service_pem */ - YYSYMBOL_server_ssl_port = 387, /* server_ssl_port */ - YYSYMBOL_server_tls_cert_bundle = 388, /* server_tls_cert_bundle */ - YYSYMBOL_server_tls_win_cert = 389, /* server_tls_win_cert */ - YYSYMBOL_server_tls_additional_port = 390, /* server_tls_additional_port */ - YYSYMBOL_server_tls_ciphers = 391, /* server_tls_ciphers */ - YYSYMBOL_server_tls_ciphersuites = 392, /* server_tls_ciphersuites */ - YYSYMBOL_server_tls_session_ticket_keys = 393, /* server_tls_session_ticket_keys */ - YYSYMBOL_server_tls_use_sni = 394, /* server_tls_use_sni */ - YYSYMBOL_server_https_port = 395, /* server_https_port */ - YYSYMBOL_server_http_endpoint = 396, /* server_http_endpoint */ - YYSYMBOL_server_http_max_streams = 397, /* server_http_max_streams */ - YYSYMBOL_server_http_query_buffer_size = 398, /* server_http_query_buffer_size */ - YYSYMBOL_server_http_response_buffer_size = 399, /* server_http_response_buffer_size */ - YYSYMBOL_server_http_nodelay = 400, /* server_http_nodelay */ - YYSYMBOL_server_http_notls_downstream = 401, /* server_http_notls_downstream */ - YYSYMBOL_server_use_systemd = 402, /* server_use_systemd */ - YYSYMBOL_server_do_daemonize = 403, /* server_do_daemonize */ - YYSYMBOL_server_use_syslog = 404, /* server_use_syslog */ - YYSYMBOL_server_log_time_ascii = 405, /* server_log_time_ascii */ - YYSYMBOL_server_log_queries = 406, /* server_log_queries */ - YYSYMBOL_server_log_replies = 407, /* server_log_replies */ - YYSYMBOL_server_log_tag_queryreply = 408, /* server_log_tag_queryreply */ - YYSYMBOL_server_log_servfail = 409, /* server_log_servfail */ - YYSYMBOL_server_log_local_actions = 410, /* server_log_local_actions */ - YYSYMBOL_server_chroot = 411, /* server_chroot */ - YYSYMBOL_server_username = 412, /* server_username */ - YYSYMBOL_server_directory = 413, /* server_directory */ - YYSYMBOL_server_logfile = 414, /* server_logfile */ - YYSYMBOL_server_pidfile = 415, /* server_pidfile */ - YYSYMBOL_server_root_hints = 416, /* server_root_hints */ - YYSYMBOL_server_dlv_anchor_file = 417, /* server_dlv_anchor_file */ - YYSYMBOL_server_dlv_anchor = 418, /* server_dlv_anchor */ - YYSYMBOL_server_auto_trust_anchor_file = 419, /* server_auto_trust_anchor_file */ - YYSYMBOL_server_trust_anchor_file = 420, /* server_trust_anchor_file */ - YYSYMBOL_server_trusted_keys_file = 421, /* server_trusted_keys_file */ - YYSYMBOL_server_trust_anchor = 422, /* server_trust_anchor */ - YYSYMBOL_server_trust_anchor_signaling = 423, /* server_trust_anchor_signaling */ - YYSYMBOL_server_root_key_sentinel = 424, /* server_root_key_sentinel */ - YYSYMBOL_server_domain_insecure = 425, /* server_domain_insecure */ - YYSYMBOL_server_hide_identity = 426, /* server_hide_identity */ - YYSYMBOL_server_hide_version = 427, /* server_hide_version */ - YYSYMBOL_server_hide_trustanchor = 428, /* server_hide_trustanchor */ - YYSYMBOL_server_identity = 429, /* server_identity */ - YYSYMBOL_server_version = 430, /* server_version */ - YYSYMBOL_server_nsid = 431, /* server_nsid */ - YYSYMBOL_server_so_rcvbuf = 432, /* server_so_rcvbuf */ - YYSYMBOL_server_so_sndbuf = 433, /* server_so_sndbuf */ - YYSYMBOL_server_so_reuseport = 434, /* server_so_reuseport */ - YYSYMBOL_server_ip_transparent = 435, /* server_ip_transparent */ - YYSYMBOL_server_ip_freebind = 436, /* server_ip_freebind */ - YYSYMBOL_server_ip_dscp = 437, /* server_ip_dscp */ - YYSYMBOL_server_stream_wait_size = 438, /* server_stream_wait_size */ - YYSYMBOL_server_edns_buffer_size = 439, /* server_edns_buffer_size */ - YYSYMBOL_server_msg_buffer_size = 440, /* server_msg_buffer_size */ - YYSYMBOL_server_msg_cache_size = 441, /* server_msg_cache_size */ - YYSYMBOL_server_msg_cache_slabs = 442, /* server_msg_cache_slabs */ - YYSYMBOL_server_num_queries_per_thread = 443, /* server_num_queries_per_thread */ - YYSYMBOL_server_jostle_timeout = 444, /* server_jostle_timeout */ - YYSYMBOL_server_delay_close = 445, /* server_delay_close */ - YYSYMBOL_server_udp_connect = 446, /* server_udp_connect */ - YYSYMBOL_server_unblock_lan_zones = 447, /* server_unblock_lan_zones */ - YYSYMBOL_server_insecure_lan_zones = 448, /* server_insecure_lan_zones */ - YYSYMBOL_server_rrset_cache_size = 449, /* server_rrset_cache_size */ - YYSYMBOL_server_rrset_cache_slabs = 450, /* server_rrset_cache_slabs */ - YYSYMBOL_server_infra_host_ttl = 451, /* server_infra_host_ttl */ - YYSYMBOL_server_infra_lame_ttl = 452, /* server_infra_lame_ttl */ - YYSYMBOL_server_infra_cache_numhosts = 453, /* server_infra_cache_numhosts */ - YYSYMBOL_server_infra_cache_lame_size = 454, /* server_infra_cache_lame_size */ - YYSYMBOL_server_infra_cache_slabs = 455, /* server_infra_cache_slabs */ - YYSYMBOL_server_infra_cache_min_rtt = 456, /* server_infra_cache_min_rtt */ - YYSYMBOL_server_infra_keep_probing = 457, /* server_infra_keep_probing */ - YYSYMBOL_server_target_fetch_policy = 458, /* server_target_fetch_policy */ - YYSYMBOL_server_harden_short_bufsize = 459, /* server_harden_short_bufsize */ - YYSYMBOL_server_harden_large_queries = 460, /* server_harden_large_queries */ - YYSYMBOL_server_harden_glue = 461, /* server_harden_glue */ - YYSYMBOL_server_harden_dnssec_stripped = 462, /* server_harden_dnssec_stripped */ - YYSYMBOL_server_harden_below_nxdomain = 463, /* server_harden_below_nxdomain */ - YYSYMBOL_server_harden_referral_path = 464, /* server_harden_referral_path */ - YYSYMBOL_server_harden_algo_downgrade = 465, /* server_harden_algo_downgrade */ - YYSYMBOL_server_use_caps_for_id = 466, /* server_use_caps_for_id */ - YYSYMBOL_server_caps_whitelist = 467, /* server_caps_whitelist */ - YYSYMBOL_server_private_address = 468, /* server_private_address */ - YYSYMBOL_server_private_domain = 469, /* server_private_domain */ - YYSYMBOL_server_prefetch = 470, /* server_prefetch */ - YYSYMBOL_server_prefetch_key = 471, /* server_prefetch_key */ - YYSYMBOL_server_deny_any = 472, /* server_deny_any */ - YYSYMBOL_server_unwanted_reply_threshold = 473, /* server_unwanted_reply_threshold */ - YYSYMBOL_server_do_not_query_address = 474, /* server_do_not_query_address */ - YYSYMBOL_server_do_not_query_localhost = 475, /* server_do_not_query_localhost */ - YYSYMBOL_server_access_control = 476, /* server_access_control */ - YYSYMBOL_server_module_conf = 477, /* server_module_conf */ - YYSYMBOL_server_val_override_date = 478, /* server_val_override_date */ - YYSYMBOL_server_val_sig_skew_min = 479, /* server_val_sig_skew_min */ - YYSYMBOL_server_val_sig_skew_max = 480, /* server_val_sig_skew_max */ - YYSYMBOL_server_cache_max_ttl = 481, /* server_cache_max_ttl */ - YYSYMBOL_server_cache_max_negative_ttl = 482, /* server_cache_max_negative_ttl */ - YYSYMBOL_server_cache_min_ttl = 483, /* server_cache_min_ttl */ - YYSYMBOL_server_bogus_ttl = 484, /* server_bogus_ttl */ - YYSYMBOL_server_val_clean_additional = 485, /* server_val_clean_additional */ - YYSYMBOL_server_val_permissive_mode = 486, /* server_val_permissive_mode */ - YYSYMBOL_server_aggressive_nsec = 487, /* server_aggressive_nsec */ - YYSYMBOL_server_ignore_cd_flag = 488, /* server_ignore_cd_flag */ - YYSYMBOL_server_serve_expired = 489, /* server_serve_expired */ - YYSYMBOL_server_serve_expired_ttl = 490, /* server_serve_expired_ttl */ - YYSYMBOL_server_serve_expired_ttl_reset = 491, /* server_serve_expired_ttl_reset */ - YYSYMBOL_server_serve_expired_reply_ttl = 492, /* server_serve_expired_reply_ttl */ - YYSYMBOL_server_serve_expired_client_timeout = 493, /* server_serve_expired_client_timeout */ - YYSYMBOL_server_serve_original_ttl = 494, /* server_serve_original_ttl */ - YYSYMBOL_server_fake_dsa = 495, /* server_fake_dsa */ - YYSYMBOL_server_fake_sha1 = 496, /* server_fake_sha1 */ - YYSYMBOL_server_val_log_level = 497, /* server_val_log_level */ - YYSYMBOL_server_val_nsec3_keysize_iterations = 498, /* server_val_nsec3_keysize_iterations */ - YYSYMBOL_server_zonemd_permissive_mode = 499, /* server_zonemd_permissive_mode */ - YYSYMBOL_server_add_holddown = 500, /* server_add_holddown */ - YYSYMBOL_server_del_holddown = 501, /* server_del_holddown */ - YYSYMBOL_server_keep_missing = 502, /* server_keep_missing */ - YYSYMBOL_server_permit_small_holddown = 503, /* server_permit_small_holddown */ - YYSYMBOL_server_key_cache_size = 504, /* server_key_cache_size */ - YYSYMBOL_server_key_cache_slabs = 505, /* server_key_cache_slabs */ - YYSYMBOL_server_neg_cache_size = 506, /* server_neg_cache_size */ - YYSYMBOL_server_local_zone = 507, /* server_local_zone */ - YYSYMBOL_server_local_data = 508, /* server_local_data */ - YYSYMBOL_server_local_data_ptr = 509, /* server_local_data_ptr */ - YYSYMBOL_server_minimal_responses = 510, /* server_minimal_responses */ - YYSYMBOL_server_rrset_roundrobin = 511, /* server_rrset_roundrobin */ - YYSYMBOL_server_unknown_server_time_limit = 512, /* server_unknown_server_time_limit */ - YYSYMBOL_server_max_udp_size = 513, /* server_max_udp_size */ - YYSYMBOL_server_dns64_prefix = 514, /* server_dns64_prefix */ - YYSYMBOL_server_dns64_synthall = 515, /* server_dns64_synthall */ - YYSYMBOL_server_dns64_ignore_aaaa = 516, /* server_dns64_ignore_aaaa */ - YYSYMBOL_server_define_tag = 517, /* server_define_tag */ - YYSYMBOL_server_local_zone_tag = 518, /* server_local_zone_tag */ - YYSYMBOL_server_access_control_tag = 519, /* server_access_control_tag */ - YYSYMBOL_server_access_control_tag_action = 520, /* server_access_control_tag_action */ - YYSYMBOL_server_access_control_tag_data = 521, /* server_access_control_tag_data */ - YYSYMBOL_server_local_zone_override = 522, /* server_local_zone_override */ - YYSYMBOL_server_access_control_view = 523, /* server_access_control_view */ - YYSYMBOL_server_response_ip_tag = 524, /* server_response_ip_tag */ - YYSYMBOL_server_ip_ratelimit = 525, /* server_ip_ratelimit */ - YYSYMBOL_server_ratelimit = 526, /* server_ratelimit */ - YYSYMBOL_server_ip_ratelimit_size = 527, /* server_ip_ratelimit_size */ - YYSYMBOL_server_ratelimit_size = 528, /* server_ratelimit_size */ - YYSYMBOL_server_ip_ratelimit_slabs = 529, /* server_ip_ratelimit_slabs */ - YYSYMBOL_server_ratelimit_slabs = 530, /* server_ratelimit_slabs */ - YYSYMBOL_server_ratelimit_for_domain = 531, /* server_ratelimit_for_domain */ - YYSYMBOL_server_ratelimit_below_domain = 532, /* server_ratelimit_below_domain */ - YYSYMBOL_server_ip_ratelimit_factor = 533, /* server_ip_ratelimit_factor */ - YYSYMBOL_server_ratelimit_factor = 534, /* server_ratelimit_factor */ - YYSYMBOL_server_low_rtt = 535, /* server_low_rtt */ - YYSYMBOL_server_fast_server_num = 536, /* server_fast_server_num */ - YYSYMBOL_server_fast_server_permil = 537, /* server_fast_server_permil */ - YYSYMBOL_server_qname_minimisation = 538, /* server_qname_minimisation */ - YYSYMBOL_server_qname_minimisation_strict = 539, /* server_qname_minimisation_strict */ - YYSYMBOL_server_pad_responses = 540, /* server_pad_responses */ - YYSYMBOL_server_pad_responses_block_size = 541, /* server_pad_responses_block_size */ - YYSYMBOL_server_pad_queries = 542, /* server_pad_queries */ - YYSYMBOL_server_pad_queries_block_size = 543, /* server_pad_queries_block_size */ - YYSYMBOL_server_ipsecmod_enabled = 544, /* server_ipsecmod_enabled */ - YYSYMBOL_server_ipsecmod_ignore_bogus = 545, /* server_ipsecmod_ignore_bogus */ - YYSYMBOL_server_ipsecmod_hook = 546, /* server_ipsecmod_hook */ - YYSYMBOL_server_ipsecmod_max_ttl = 547, /* server_ipsecmod_max_ttl */ - YYSYMBOL_server_ipsecmod_whitelist = 548, /* server_ipsecmod_whitelist */ - YYSYMBOL_server_ipsecmod_strict = 549, /* server_ipsecmod_strict */ - YYSYMBOL_server_edns_client_string = 550, /* server_edns_client_string */ - YYSYMBOL_server_edns_client_string_opcode = 551, /* server_edns_client_string_opcode */ - YYSYMBOL_stub_name = 552, /* stub_name */ - YYSYMBOL_stub_host = 553, /* stub_host */ - YYSYMBOL_stub_addr = 554, /* stub_addr */ - YYSYMBOL_stub_first = 555, /* stub_first */ - YYSYMBOL_stub_no_cache = 556, /* stub_no_cache */ - YYSYMBOL_stub_ssl_upstream = 557, /* stub_ssl_upstream */ - YYSYMBOL_stub_prime = 558, /* stub_prime */ - YYSYMBOL_forward_name = 559, /* forward_name */ - YYSYMBOL_forward_host = 560, /* forward_host */ - YYSYMBOL_forward_addr = 561, /* forward_addr */ - YYSYMBOL_forward_first = 562, /* forward_first */ - YYSYMBOL_forward_no_cache = 563, /* forward_no_cache */ - YYSYMBOL_forward_ssl_upstream = 564, /* forward_ssl_upstream */ - YYSYMBOL_auth_name = 565, /* auth_name */ - YYSYMBOL_auth_zonefile = 566, /* auth_zonefile */ - YYSYMBOL_auth_master = 567, /* auth_master */ - YYSYMBOL_auth_url = 568, /* auth_url */ - YYSYMBOL_auth_allow_notify = 569, /* auth_allow_notify */ - YYSYMBOL_auth_zonemd_check = 570, /* auth_zonemd_check */ - YYSYMBOL_auth_zonemd_reject_absence = 571, /* auth_zonemd_reject_absence */ - YYSYMBOL_auth_for_downstream = 572, /* auth_for_downstream */ - YYSYMBOL_auth_for_upstream = 573, /* auth_for_upstream */ - YYSYMBOL_auth_fallback_enabled = 574, /* auth_fallback_enabled */ - YYSYMBOL_view_name = 575, /* view_name */ - YYSYMBOL_view_local_zone = 576, /* view_local_zone */ - YYSYMBOL_view_response_ip = 577, /* view_response_ip */ - YYSYMBOL_view_response_ip_data = 578, /* view_response_ip_data */ - YYSYMBOL_view_local_data = 579, /* view_local_data */ - YYSYMBOL_view_local_data_ptr = 580, /* view_local_data_ptr */ - YYSYMBOL_view_first = 581, /* view_first */ - YYSYMBOL_rcstart = 582, /* rcstart */ - YYSYMBOL_contents_rc = 583, /* contents_rc */ - YYSYMBOL_content_rc = 584, /* content_rc */ - YYSYMBOL_rc_control_enable = 585, /* rc_control_enable */ - YYSYMBOL_rc_control_port = 586, /* rc_control_port */ - YYSYMBOL_rc_control_interface = 587, /* rc_control_interface */ - YYSYMBOL_rc_control_use_cert = 588, /* rc_control_use_cert */ - YYSYMBOL_rc_server_key_file = 589, /* rc_server_key_file */ - YYSYMBOL_rc_server_cert_file = 590, /* rc_server_cert_file */ - YYSYMBOL_rc_control_key_file = 591, /* rc_control_key_file */ - YYSYMBOL_rc_control_cert_file = 592, /* rc_control_cert_file */ - YYSYMBOL_dtstart = 593, /* dtstart */ - YYSYMBOL_contents_dt = 594, /* contents_dt */ - YYSYMBOL_content_dt = 595, /* content_dt */ - YYSYMBOL_dt_dnstap_enable = 596, /* dt_dnstap_enable */ - YYSYMBOL_dt_dnstap_bidirectional = 597, /* dt_dnstap_bidirectional */ - YYSYMBOL_dt_dnstap_socket_path = 598, /* dt_dnstap_socket_path */ - YYSYMBOL_dt_dnstap_ip = 599, /* dt_dnstap_ip */ - YYSYMBOL_dt_dnstap_tls = 600, /* dt_dnstap_tls */ - YYSYMBOL_dt_dnstap_tls_server_name = 601, /* dt_dnstap_tls_server_name */ - YYSYMBOL_dt_dnstap_tls_cert_bundle = 602, /* dt_dnstap_tls_cert_bundle */ - YYSYMBOL_dt_dnstap_tls_client_key_file = 603, /* dt_dnstap_tls_client_key_file */ - YYSYMBOL_dt_dnstap_tls_client_cert_file = 604, /* dt_dnstap_tls_client_cert_file */ - YYSYMBOL_dt_dnstap_send_identity = 605, /* dt_dnstap_send_identity */ - YYSYMBOL_dt_dnstap_send_version = 606, /* dt_dnstap_send_version */ - YYSYMBOL_dt_dnstap_identity = 607, /* dt_dnstap_identity */ - YYSYMBOL_dt_dnstap_version = 608, /* dt_dnstap_version */ - YYSYMBOL_dt_dnstap_log_resolver_query_messages = 609, /* dt_dnstap_log_resolver_query_messages */ - YYSYMBOL_dt_dnstap_log_resolver_response_messages = 610, /* dt_dnstap_log_resolver_response_messages */ - YYSYMBOL_dt_dnstap_log_client_query_messages = 611, /* dt_dnstap_log_client_query_messages */ - YYSYMBOL_dt_dnstap_log_client_response_messages = 612, /* dt_dnstap_log_client_response_messages */ - YYSYMBOL_dt_dnstap_log_forwarder_query_messages = 613, /* dt_dnstap_log_forwarder_query_messages */ - YYSYMBOL_dt_dnstap_log_forwarder_response_messages = 614, /* dt_dnstap_log_forwarder_response_messages */ - YYSYMBOL_pythonstart = 615, /* pythonstart */ - YYSYMBOL_contents_py = 616, /* contents_py */ - YYSYMBOL_content_py = 617, /* content_py */ - YYSYMBOL_py_script = 618, /* py_script */ - YYSYMBOL_dynlibstart = 619, /* dynlibstart */ - YYSYMBOL_contents_dl = 620, /* contents_dl */ - YYSYMBOL_content_dl = 621, /* content_dl */ - YYSYMBOL_dl_file = 622, /* dl_file */ - YYSYMBOL_server_disable_dnssec_lame_check = 623, /* server_disable_dnssec_lame_check */ - YYSYMBOL_server_log_identity = 624, /* server_log_identity */ - YYSYMBOL_server_response_ip = 625, /* server_response_ip */ - YYSYMBOL_server_response_ip_data = 626, /* server_response_ip_data */ - YYSYMBOL_dnscstart = 627, /* dnscstart */ - YYSYMBOL_contents_dnsc = 628, /* contents_dnsc */ - YYSYMBOL_content_dnsc = 629, /* content_dnsc */ - YYSYMBOL_dnsc_dnscrypt_enable = 630, /* dnsc_dnscrypt_enable */ - YYSYMBOL_dnsc_dnscrypt_port = 631, /* dnsc_dnscrypt_port */ - YYSYMBOL_dnsc_dnscrypt_provider = 632, /* dnsc_dnscrypt_provider */ - YYSYMBOL_dnsc_dnscrypt_provider_cert = 633, /* dnsc_dnscrypt_provider_cert */ - YYSYMBOL_dnsc_dnscrypt_provider_cert_rotated = 634, /* dnsc_dnscrypt_provider_cert_rotated */ - YYSYMBOL_dnsc_dnscrypt_secret_key = 635, /* dnsc_dnscrypt_secret_key */ - YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_size = 636, /* dnsc_dnscrypt_shared_secret_cache_size */ - YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_slabs = 637, /* dnsc_dnscrypt_shared_secret_cache_slabs */ - YYSYMBOL_dnsc_dnscrypt_nonce_cache_size = 638, /* dnsc_dnscrypt_nonce_cache_size */ - YYSYMBOL_dnsc_dnscrypt_nonce_cache_slabs = 639, /* dnsc_dnscrypt_nonce_cache_slabs */ - YYSYMBOL_cachedbstart = 640, /* cachedbstart */ - YYSYMBOL_contents_cachedb = 641, /* contents_cachedb */ - YYSYMBOL_content_cachedb = 642, /* content_cachedb */ - YYSYMBOL_cachedb_backend_name = 643, /* cachedb_backend_name */ - YYSYMBOL_cachedb_secret_seed = 644, /* cachedb_secret_seed */ - YYSYMBOL_redis_server_host = 645, /* redis_server_host */ - YYSYMBOL_redis_server_port = 646, /* redis_server_port */ - YYSYMBOL_redis_timeout = 647, /* redis_timeout */ - YYSYMBOL_redis_expire_records = 648, /* redis_expire_records */ - YYSYMBOL_server_tcp_connection_limit = 649, /* server_tcp_connection_limit */ - YYSYMBOL_ipsetstart = 650, /* ipsetstart */ - YYSYMBOL_contents_ipset = 651, /* contents_ipset */ - YYSYMBOL_content_ipset = 652, /* content_ipset */ - YYSYMBOL_ipset_name_v4 = 653, /* ipset_name_v4 */ - YYSYMBOL_ipset_name_v6 = 654 /* ipset_name_v6 */ + YYSYMBOL_VAR_VAL_MAX_RESTART = 118, /* VAR_VAL_MAX_RESTART */ + YYSYMBOL_VAR_CACHE_MIN_TTL = 119, /* VAR_CACHE_MIN_TTL */ + YYSYMBOL_VAR_VAL_LOG_LEVEL = 120, /* VAR_VAL_LOG_LEVEL */ + YYSYMBOL_VAR_AUTO_TRUST_ANCHOR_FILE = 121, /* VAR_AUTO_TRUST_ANCHOR_FILE */ + YYSYMBOL_VAR_KEEP_MISSING = 122, /* VAR_KEEP_MISSING */ + YYSYMBOL_VAR_ADD_HOLDDOWN = 123, /* VAR_ADD_HOLDDOWN */ + YYSYMBOL_VAR_DEL_HOLDDOWN = 124, /* VAR_DEL_HOLDDOWN */ + YYSYMBOL_VAR_SO_RCVBUF = 125, /* VAR_SO_RCVBUF */ + YYSYMBOL_VAR_EDNS_BUFFER_SIZE = 126, /* VAR_EDNS_BUFFER_SIZE */ + YYSYMBOL_VAR_PREFETCH = 127, /* VAR_PREFETCH */ + YYSYMBOL_VAR_PREFETCH_KEY = 128, /* VAR_PREFETCH_KEY */ + YYSYMBOL_VAR_SO_SNDBUF = 129, /* VAR_SO_SNDBUF */ + YYSYMBOL_VAR_SO_REUSEPORT = 130, /* VAR_SO_REUSEPORT */ + YYSYMBOL_VAR_HARDEN_BELOW_NXDOMAIN = 131, /* VAR_HARDEN_BELOW_NXDOMAIN */ + YYSYMBOL_VAR_IGNORE_CD_FLAG = 132, /* VAR_IGNORE_CD_FLAG */ + YYSYMBOL_VAR_LOG_QUERIES = 133, /* VAR_LOG_QUERIES */ + YYSYMBOL_VAR_LOG_REPLIES = 134, /* VAR_LOG_REPLIES */ + YYSYMBOL_VAR_LOG_LOCAL_ACTIONS = 135, /* VAR_LOG_LOCAL_ACTIONS */ + YYSYMBOL_VAR_TCP_UPSTREAM = 136, /* VAR_TCP_UPSTREAM */ + YYSYMBOL_VAR_SSL_UPSTREAM = 137, /* VAR_SSL_UPSTREAM */ + YYSYMBOL_VAR_TCP_AUTH_QUERY_TIMEOUT = 138, /* VAR_TCP_AUTH_QUERY_TIMEOUT */ + YYSYMBOL_VAR_SSL_SERVICE_KEY = 139, /* VAR_SSL_SERVICE_KEY */ + YYSYMBOL_VAR_SSL_SERVICE_PEM = 140, /* VAR_SSL_SERVICE_PEM */ + YYSYMBOL_VAR_SSL_PORT = 141, /* VAR_SSL_PORT */ + YYSYMBOL_VAR_FORWARD_FIRST = 142, /* VAR_FORWARD_FIRST */ + YYSYMBOL_VAR_STUB_SSL_UPSTREAM = 143, /* VAR_STUB_SSL_UPSTREAM */ + YYSYMBOL_VAR_FORWARD_SSL_UPSTREAM = 144, /* VAR_FORWARD_SSL_UPSTREAM */ + YYSYMBOL_VAR_TLS_CERT_BUNDLE = 145, /* VAR_TLS_CERT_BUNDLE */ + YYSYMBOL_VAR_HTTPS_PORT = 146, /* VAR_HTTPS_PORT */ + YYSYMBOL_VAR_HTTP_ENDPOINT = 147, /* VAR_HTTP_ENDPOINT */ + YYSYMBOL_VAR_HTTP_MAX_STREAMS = 148, /* VAR_HTTP_MAX_STREAMS */ + YYSYMBOL_VAR_HTTP_QUERY_BUFFER_SIZE = 149, /* VAR_HTTP_QUERY_BUFFER_SIZE */ + YYSYMBOL_VAR_HTTP_RESPONSE_BUFFER_SIZE = 150, /* VAR_HTTP_RESPONSE_BUFFER_SIZE */ + YYSYMBOL_VAR_HTTP_NODELAY = 151, /* VAR_HTTP_NODELAY */ + YYSYMBOL_VAR_HTTP_NOTLS_DOWNSTREAM = 152, /* VAR_HTTP_NOTLS_DOWNSTREAM */ + YYSYMBOL_VAR_STUB_FIRST = 153, /* VAR_STUB_FIRST */ + YYSYMBOL_VAR_MINIMAL_RESPONSES = 154, /* VAR_MINIMAL_RESPONSES */ + YYSYMBOL_VAR_RRSET_ROUNDROBIN = 155, /* VAR_RRSET_ROUNDROBIN */ + YYSYMBOL_VAR_MAX_UDP_SIZE = 156, /* VAR_MAX_UDP_SIZE */ + YYSYMBOL_VAR_DELAY_CLOSE = 157, /* VAR_DELAY_CLOSE */ + YYSYMBOL_VAR_UDP_CONNECT = 158, /* VAR_UDP_CONNECT */ + YYSYMBOL_VAR_UNBLOCK_LAN_ZONES = 159, /* VAR_UNBLOCK_LAN_ZONES */ + YYSYMBOL_VAR_INSECURE_LAN_ZONES = 160, /* VAR_INSECURE_LAN_ZONES */ + YYSYMBOL_VAR_INFRA_CACHE_MIN_RTT = 161, /* VAR_INFRA_CACHE_MIN_RTT */ + YYSYMBOL_VAR_INFRA_KEEP_PROBING = 162, /* VAR_INFRA_KEEP_PROBING */ + YYSYMBOL_VAR_DNS64_PREFIX = 163, /* VAR_DNS64_PREFIX */ + YYSYMBOL_VAR_DNS64_SYNTHALL = 164, /* VAR_DNS64_SYNTHALL */ + YYSYMBOL_VAR_DNS64_IGNORE_AAAA = 165, /* VAR_DNS64_IGNORE_AAAA */ + YYSYMBOL_VAR_DNSTAP = 166, /* VAR_DNSTAP */ + YYSYMBOL_VAR_DNSTAP_ENABLE = 167, /* VAR_DNSTAP_ENABLE */ + YYSYMBOL_VAR_DNSTAP_SOCKET_PATH = 168, /* VAR_DNSTAP_SOCKET_PATH */ + YYSYMBOL_VAR_DNSTAP_IP = 169, /* VAR_DNSTAP_IP */ + YYSYMBOL_VAR_DNSTAP_TLS = 170, /* VAR_DNSTAP_TLS */ + YYSYMBOL_VAR_DNSTAP_TLS_SERVER_NAME = 171, /* VAR_DNSTAP_TLS_SERVER_NAME */ + YYSYMBOL_VAR_DNSTAP_TLS_CERT_BUNDLE = 172, /* VAR_DNSTAP_TLS_CERT_BUNDLE */ + YYSYMBOL_VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 173, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE */ + YYSYMBOL_VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 174, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE */ + YYSYMBOL_VAR_DNSTAP_SEND_IDENTITY = 175, /* VAR_DNSTAP_SEND_IDENTITY */ + YYSYMBOL_VAR_DNSTAP_SEND_VERSION = 176, /* VAR_DNSTAP_SEND_VERSION */ + YYSYMBOL_VAR_DNSTAP_BIDIRECTIONAL = 177, /* VAR_DNSTAP_BIDIRECTIONAL */ + YYSYMBOL_VAR_DNSTAP_IDENTITY = 178, /* VAR_DNSTAP_IDENTITY */ + YYSYMBOL_VAR_DNSTAP_VERSION = 179, /* VAR_DNSTAP_VERSION */ + YYSYMBOL_VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 180, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES */ + YYSYMBOL_VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 181, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES */ + YYSYMBOL_VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 182, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES */ + YYSYMBOL_VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 183, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES */ + YYSYMBOL_VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 184, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES */ + YYSYMBOL_VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 185, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES */ + YYSYMBOL_VAR_RESPONSE_IP_TAG = 186, /* VAR_RESPONSE_IP_TAG */ + YYSYMBOL_VAR_RESPONSE_IP = 187, /* VAR_RESPONSE_IP */ + YYSYMBOL_VAR_RESPONSE_IP_DATA = 188, /* VAR_RESPONSE_IP_DATA */ + YYSYMBOL_VAR_HARDEN_ALGO_DOWNGRADE = 189, /* VAR_HARDEN_ALGO_DOWNGRADE */ + YYSYMBOL_VAR_IP_TRANSPARENT = 190, /* VAR_IP_TRANSPARENT */ + YYSYMBOL_VAR_IP_DSCP = 191, /* VAR_IP_DSCP */ + YYSYMBOL_VAR_DISABLE_DNSSEC_LAME_CHECK = 192, /* VAR_DISABLE_DNSSEC_LAME_CHECK */ + YYSYMBOL_VAR_IP_RATELIMIT = 193, /* VAR_IP_RATELIMIT */ + YYSYMBOL_VAR_IP_RATELIMIT_SLABS = 194, /* VAR_IP_RATELIMIT_SLABS */ + YYSYMBOL_VAR_IP_RATELIMIT_SIZE = 195, /* VAR_IP_RATELIMIT_SIZE */ + YYSYMBOL_VAR_RATELIMIT = 196, /* VAR_RATELIMIT */ + YYSYMBOL_VAR_RATELIMIT_SLABS = 197, /* VAR_RATELIMIT_SLABS */ + YYSYMBOL_VAR_RATELIMIT_SIZE = 198, /* VAR_RATELIMIT_SIZE */ + YYSYMBOL_VAR_RATELIMIT_FOR_DOMAIN = 199, /* VAR_RATELIMIT_FOR_DOMAIN */ + YYSYMBOL_VAR_RATELIMIT_BELOW_DOMAIN = 200, /* VAR_RATELIMIT_BELOW_DOMAIN */ + YYSYMBOL_VAR_IP_RATELIMIT_FACTOR = 201, /* VAR_IP_RATELIMIT_FACTOR */ + YYSYMBOL_VAR_RATELIMIT_FACTOR = 202, /* VAR_RATELIMIT_FACTOR */ + YYSYMBOL_VAR_SEND_CLIENT_SUBNET = 203, /* VAR_SEND_CLIENT_SUBNET */ + YYSYMBOL_VAR_CLIENT_SUBNET_ZONE = 204, /* VAR_CLIENT_SUBNET_ZONE */ + YYSYMBOL_VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 205, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ + YYSYMBOL_VAR_CLIENT_SUBNET_OPCODE = 206, /* VAR_CLIENT_SUBNET_OPCODE */ + YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV4 = 207, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ + YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV6 = 208, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ + YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV4 = 209, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ + YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV6 = 210, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ + YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV4 = 211, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ + YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV6 = 212, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ + YYSYMBOL_VAR_CAPS_WHITELIST = 213, /* VAR_CAPS_WHITELIST */ + YYSYMBOL_VAR_CACHE_MAX_NEGATIVE_TTL = 214, /* VAR_CACHE_MAX_NEGATIVE_TTL */ + YYSYMBOL_VAR_PERMIT_SMALL_HOLDDOWN = 215, /* VAR_PERMIT_SMALL_HOLDDOWN */ + YYSYMBOL_VAR_QNAME_MINIMISATION = 216, /* VAR_QNAME_MINIMISATION */ + YYSYMBOL_VAR_QNAME_MINIMISATION_STRICT = 217, /* VAR_QNAME_MINIMISATION_STRICT */ + YYSYMBOL_VAR_IP_FREEBIND = 218, /* VAR_IP_FREEBIND */ + YYSYMBOL_VAR_DEFINE_TAG = 219, /* VAR_DEFINE_TAG */ + YYSYMBOL_VAR_LOCAL_ZONE_TAG = 220, /* VAR_LOCAL_ZONE_TAG */ + YYSYMBOL_VAR_ACCESS_CONTROL_TAG = 221, /* VAR_ACCESS_CONTROL_TAG */ + YYSYMBOL_VAR_LOCAL_ZONE_OVERRIDE = 222, /* VAR_LOCAL_ZONE_OVERRIDE */ + YYSYMBOL_VAR_ACCESS_CONTROL_TAG_ACTION = 223, /* VAR_ACCESS_CONTROL_TAG_ACTION */ + YYSYMBOL_VAR_ACCESS_CONTROL_TAG_DATA = 224, /* VAR_ACCESS_CONTROL_TAG_DATA */ + YYSYMBOL_VAR_VIEW = 225, /* VAR_VIEW */ + YYSYMBOL_VAR_ACCESS_CONTROL_VIEW = 226, /* VAR_ACCESS_CONTROL_VIEW */ + YYSYMBOL_VAR_VIEW_FIRST = 227, /* VAR_VIEW_FIRST */ + YYSYMBOL_VAR_SERVE_EXPIRED = 228, /* VAR_SERVE_EXPIRED */ + YYSYMBOL_VAR_SERVE_EXPIRED_TTL = 229, /* VAR_SERVE_EXPIRED_TTL */ + YYSYMBOL_VAR_SERVE_EXPIRED_TTL_RESET = 230, /* VAR_SERVE_EXPIRED_TTL_RESET */ + YYSYMBOL_VAR_SERVE_EXPIRED_REPLY_TTL = 231, /* VAR_SERVE_EXPIRED_REPLY_TTL */ + YYSYMBOL_VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 232, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ + YYSYMBOL_VAR_SERVE_ORIGINAL_TTL = 233, /* VAR_SERVE_ORIGINAL_TTL */ + YYSYMBOL_VAR_FAKE_DSA = 234, /* VAR_FAKE_DSA */ + YYSYMBOL_VAR_FAKE_SHA1 = 235, /* VAR_FAKE_SHA1 */ + YYSYMBOL_VAR_LOG_IDENTITY = 236, /* VAR_LOG_IDENTITY */ + YYSYMBOL_VAR_HIDE_TRUSTANCHOR = 237, /* VAR_HIDE_TRUSTANCHOR */ + YYSYMBOL_VAR_TRUST_ANCHOR_SIGNALING = 238, /* VAR_TRUST_ANCHOR_SIGNALING */ + YYSYMBOL_VAR_AGGRESSIVE_NSEC = 239, /* VAR_AGGRESSIVE_NSEC */ + YYSYMBOL_VAR_USE_SYSTEMD = 240, /* VAR_USE_SYSTEMD */ + YYSYMBOL_VAR_SHM_ENABLE = 241, /* VAR_SHM_ENABLE */ + YYSYMBOL_VAR_SHM_KEY = 242, /* VAR_SHM_KEY */ + YYSYMBOL_VAR_ROOT_KEY_SENTINEL = 243, /* VAR_ROOT_KEY_SENTINEL */ + YYSYMBOL_VAR_DNSCRYPT = 244, /* VAR_DNSCRYPT */ + YYSYMBOL_VAR_DNSCRYPT_ENABLE = 245, /* VAR_DNSCRYPT_ENABLE */ + YYSYMBOL_VAR_DNSCRYPT_PORT = 246, /* VAR_DNSCRYPT_PORT */ + YYSYMBOL_VAR_DNSCRYPT_PROVIDER = 247, /* VAR_DNSCRYPT_PROVIDER */ + YYSYMBOL_VAR_DNSCRYPT_SECRET_KEY = 248, /* VAR_DNSCRYPT_SECRET_KEY */ + YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT = 249, /* VAR_DNSCRYPT_PROVIDER_CERT */ + YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 250, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ + YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 251, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ + YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 252, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ + YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SIZE = 253, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ + YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SLABS = 254, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ + YYSYMBOL_VAR_PAD_RESPONSES = 255, /* VAR_PAD_RESPONSES */ + YYSYMBOL_VAR_PAD_RESPONSES_BLOCK_SIZE = 256, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ + YYSYMBOL_VAR_PAD_QUERIES = 257, /* VAR_PAD_QUERIES */ + YYSYMBOL_VAR_PAD_QUERIES_BLOCK_SIZE = 258, /* VAR_PAD_QUERIES_BLOCK_SIZE */ + YYSYMBOL_VAR_IPSECMOD_ENABLED = 259, /* VAR_IPSECMOD_ENABLED */ + YYSYMBOL_VAR_IPSECMOD_HOOK = 260, /* VAR_IPSECMOD_HOOK */ + YYSYMBOL_VAR_IPSECMOD_IGNORE_BOGUS = 261, /* VAR_IPSECMOD_IGNORE_BOGUS */ + YYSYMBOL_VAR_IPSECMOD_MAX_TTL = 262, /* VAR_IPSECMOD_MAX_TTL */ + YYSYMBOL_VAR_IPSECMOD_WHITELIST = 263, /* VAR_IPSECMOD_WHITELIST */ + YYSYMBOL_VAR_IPSECMOD_STRICT = 264, /* VAR_IPSECMOD_STRICT */ + YYSYMBOL_VAR_CACHEDB = 265, /* VAR_CACHEDB */ + YYSYMBOL_VAR_CACHEDB_BACKEND = 266, /* VAR_CACHEDB_BACKEND */ + YYSYMBOL_VAR_CACHEDB_SECRETSEED = 267, /* VAR_CACHEDB_SECRETSEED */ + YYSYMBOL_VAR_CACHEDB_REDISHOST = 268, /* VAR_CACHEDB_REDISHOST */ + YYSYMBOL_VAR_CACHEDB_REDISPORT = 269, /* VAR_CACHEDB_REDISPORT */ + YYSYMBOL_VAR_CACHEDB_REDISTIMEOUT = 270, /* VAR_CACHEDB_REDISTIMEOUT */ + YYSYMBOL_VAR_CACHEDB_REDISEXPIRERECORDS = 271, /* VAR_CACHEDB_REDISEXPIRERECORDS */ + YYSYMBOL_VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 272, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ + YYSYMBOL_VAR_FOR_UPSTREAM = 273, /* VAR_FOR_UPSTREAM */ + YYSYMBOL_VAR_AUTH_ZONE = 274, /* VAR_AUTH_ZONE */ + YYSYMBOL_VAR_ZONEFILE = 275, /* VAR_ZONEFILE */ + YYSYMBOL_VAR_MASTER = 276, /* VAR_MASTER */ + YYSYMBOL_VAR_URL = 277, /* VAR_URL */ + YYSYMBOL_VAR_FOR_DOWNSTREAM = 278, /* VAR_FOR_DOWNSTREAM */ + YYSYMBOL_VAR_FALLBACK_ENABLED = 279, /* VAR_FALLBACK_ENABLED */ + YYSYMBOL_VAR_TLS_ADDITIONAL_PORT = 280, /* VAR_TLS_ADDITIONAL_PORT */ + YYSYMBOL_VAR_LOW_RTT = 281, /* VAR_LOW_RTT */ + YYSYMBOL_VAR_LOW_RTT_PERMIL = 282, /* VAR_LOW_RTT_PERMIL */ + YYSYMBOL_VAR_FAST_SERVER_PERMIL = 283, /* VAR_FAST_SERVER_PERMIL */ + YYSYMBOL_VAR_FAST_SERVER_NUM = 284, /* VAR_FAST_SERVER_NUM */ + YYSYMBOL_VAR_ALLOW_NOTIFY = 285, /* VAR_ALLOW_NOTIFY */ + YYSYMBOL_VAR_TLS_WIN_CERT = 286, /* VAR_TLS_WIN_CERT */ + YYSYMBOL_VAR_TCP_CONNECTION_LIMIT = 287, /* VAR_TCP_CONNECTION_LIMIT */ + YYSYMBOL_VAR_FORWARD_NO_CACHE = 288, /* VAR_FORWARD_NO_CACHE */ + YYSYMBOL_VAR_STUB_NO_CACHE = 289, /* VAR_STUB_NO_CACHE */ + YYSYMBOL_VAR_LOG_SERVFAIL = 290, /* VAR_LOG_SERVFAIL */ + YYSYMBOL_VAR_DENY_ANY = 291, /* VAR_DENY_ANY */ + YYSYMBOL_VAR_UNKNOWN_SERVER_TIME_LIMIT = 292, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ + YYSYMBOL_VAR_LOG_TAG_QUERYREPLY = 293, /* VAR_LOG_TAG_QUERYREPLY */ + YYSYMBOL_VAR_STREAM_WAIT_SIZE = 294, /* VAR_STREAM_WAIT_SIZE */ + YYSYMBOL_VAR_TLS_CIPHERS = 295, /* VAR_TLS_CIPHERS */ + YYSYMBOL_VAR_TLS_CIPHERSUITES = 296, /* VAR_TLS_CIPHERSUITES */ + YYSYMBOL_VAR_TLS_USE_SNI = 297, /* VAR_TLS_USE_SNI */ + YYSYMBOL_VAR_IPSET = 298, /* VAR_IPSET */ + YYSYMBOL_VAR_IPSET_NAME_V4 = 299, /* VAR_IPSET_NAME_V4 */ + YYSYMBOL_VAR_IPSET_NAME_V6 = 300, /* VAR_IPSET_NAME_V6 */ + YYSYMBOL_VAR_TLS_SESSION_TICKET_KEYS = 301, /* VAR_TLS_SESSION_TICKET_KEYS */ + YYSYMBOL_VAR_RPZ = 302, /* VAR_RPZ */ + YYSYMBOL_VAR_TAGS = 303, /* VAR_TAGS */ + YYSYMBOL_VAR_RPZ_ACTION_OVERRIDE = 304, /* VAR_RPZ_ACTION_OVERRIDE */ + YYSYMBOL_VAR_RPZ_CNAME_OVERRIDE = 305, /* VAR_RPZ_CNAME_OVERRIDE */ + YYSYMBOL_VAR_RPZ_LOG = 306, /* VAR_RPZ_LOG */ + YYSYMBOL_VAR_RPZ_LOG_NAME = 307, /* VAR_RPZ_LOG_NAME */ + YYSYMBOL_VAR_DYNLIB = 308, /* VAR_DYNLIB */ + YYSYMBOL_VAR_DYNLIB_FILE = 309, /* VAR_DYNLIB_FILE */ + YYSYMBOL_VAR_EDNS_CLIENT_STRING = 310, /* VAR_EDNS_CLIENT_STRING */ + YYSYMBOL_VAR_EDNS_CLIENT_STRING_OPCODE = 311, /* VAR_EDNS_CLIENT_STRING_OPCODE */ + YYSYMBOL_VAR_NSID = 312, /* VAR_NSID */ + YYSYMBOL_VAR_ZONEMD_PERMISSIVE_MODE = 313, /* VAR_ZONEMD_PERMISSIVE_MODE */ + YYSYMBOL_VAR_ZONEMD_CHECK = 314, /* VAR_ZONEMD_CHECK */ + YYSYMBOL_VAR_ZONEMD_REJECT_ABSENCE = 315, /* VAR_ZONEMD_REJECT_ABSENCE */ + YYSYMBOL_YYACCEPT = 316, /* $accept */ + YYSYMBOL_toplevelvars = 317, /* toplevelvars */ + YYSYMBOL_toplevelvar = 318, /* toplevelvar */ + YYSYMBOL_force_toplevel = 319, /* force_toplevel */ + YYSYMBOL_serverstart = 320, /* serverstart */ + YYSYMBOL_contents_server = 321, /* contents_server */ + YYSYMBOL_content_server = 322, /* content_server */ + YYSYMBOL_stubstart = 323, /* stubstart */ + YYSYMBOL_contents_stub = 324, /* contents_stub */ + YYSYMBOL_content_stub = 325, /* content_stub */ + YYSYMBOL_forwardstart = 326, /* forwardstart */ + YYSYMBOL_contents_forward = 327, /* contents_forward */ + YYSYMBOL_content_forward = 328, /* content_forward */ + YYSYMBOL_viewstart = 329, /* viewstart */ + YYSYMBOL_contents_view = 330, /* contents_view */ + YYSYMBOL_content_view = 331, /* content_view */ + YYSYMBOL_authstart = 332, /* authstart */ + YYSYMBOL_contents_auth = 333, /* contents_auth */ + YYSYMBOL_content_auth = 334, /* content_auth */ + YYSYMBOL_rpz_tag = 335, /* rpz_tag */ + YYSYMBOL_rpz_action_override = 336, /* rpz_action_override */ + YYSYMBOL_rpz_cname_override = 337, /* rpz_cname_override */ + YYSYMBOL_rpz_log = 338, /* rpz_log */ + YYSYMBOL_rpz_log_name = 339, /* rpz_log_name */ + YYSYMBOL_rpzstart = 340, /* rpzstart */ + YYSYMBOL_contents_rpz = 341, /* contents_rpz */ + YYSYMBOL_content_rpz = 342, /* content_rpz */ + YYSYMBOL_server_num_threads = 343, /* server_num_threads */ + YYSYMBOL_server_verbosity = 344, /* server_verbosity */ + YYSYMBOL_server_statistics_interval = 345, /* server_statistics_interval */ + YYSYMBOL_server_statistics_cumulative = 346, /* server_statistics_cumulative */ + YYSYMBOL_server_extended_statistics = 347, /* server_extended_statistics */ + YYSYMBOL_server_shm_enable = 348, /* server_shm_enable */ + YYSYMBOL_server_shm_key = 349, /* server_shm_key */ + YYSYMBOL_server_port = 350, /* server_port */ + YYSYMBOL_server_send_client_subnet = 351, /* server_send_client_subnet */ + YYSYMBOL_server_client_subnet_zone = 352, /* server_client_subnet_zone */ + YYSYMBOL_server_client_subnet_always_forward = 353, /* server_client_subnet_always_forward */ + YYSYMBOL_server_client_subnet_opcode = 354, /* server_client_subnet_opcode */ + YYSYMBOL_server_max_client_subnet_ipv4 = 355, /* server_max_client_subnet_ipv4 */ + YYSYMBOL_server_max_client_subnet_ipv6 = 356, /* server_max_client_subnet_ipv6 */ + YYSYMBOL_server_min_client_subnet_ipv4 = 357, /* server_min_client_subnet_ipv4 */ + YYSYMBOL_server_min_client_subnet_ipv6 = 358, /* server_min_client_subnet_ipv6 */ + YYSYMBOL_server_max_ecs_tree_size_ipv4 = 359, /* server_max_ecs_tree_size_ipv4 */ + YYSYMBOL_server_max_ecs_tree_size_ipv6 = 360, /* server_max_ecs_tree_size_ipv6 */ + YYSYMBOL_server_interface = 361, /* server_interface */ + YYSYMBOL_server_outgoing_interface = 362, /* server_outgoing_interface */ + YYSYMBOL_server_outgoing_range = 363, /* server_outgoing_range */ + YYSYMBOL_server_outgoing_port_permit = 364, /* server_outgoing_port_permit */ + YYSYMBOL_server_outgoing_port_avoid = 365, /* server_outgoing_port_avoid */ + YYSYMBOL_server_outgoing_num_tcp = 366, /* server_outgoing_num_tcp */ + YYSYMBOL_server_incoming_num_tcp = 367, /* server_incoming_num_tcp */ + YYSYMBOL_server_interface_automatic = 368, /* server_interface_automatic */ + YYSYMBOL_server_do_ip4 = 369, /* server_do_ip4 */ + YYSYMBOL_server_do_ip6 = 370, /* server_do_ip6 */ + YYSYMBOL_server_do_udp = 371, /* server_do_udp */ + YYSYMBOL_server_do_tcp = 372, /* server_do_tcp */ + YYSYMBOL_server_prefer_ip4 = 373, /* server_prefer_ip4 */ + YYSYMBOL_server_prefer_ip6 = 374, /* server_prefer_ip6 */ + YYSYMBOL_server_tcp_mss = 375, /* server_tcp_mss */ + YYSYMBOL_server_outgoing_tcp_mss = 376, /* server_outgoing_tcp_mss */ + YYSYMBOL_server_tcp_idle_timeout = 377, /* server_tcp_idle_timeout */ + YYSYMBOL_server_max_reuse_tcp_queries = 378, /* server_max_reuse_tcp_queries */ + YYSYMBOL_server_tcp_reuse_timeout = 379, /* server_tcp_reuse_timeout */ + YYSYMBOL_server_tcp_auth_query_timeout = 380, /* server_tcp_auth_query_timeout */ + YYSYMBOL_server_tcp_keepalive = 381, /* server_tcp_keepalive */ + YYSYMBOL_server_tcp_keepalive_timeout = 382, /* server_tcp_keepalive_timeout */ + YYSYMBOL_server_tcp_upstream = 383, /* server_tcp_upstream */ + YYSYMBOL_server_udp_upstream_without_downstream = 384, /* server_udp_upstream_without_downstream */ + YYSYMBOL_server_ssl_upstream = 385, /* server_ssl_upstream */ + YYSYMBOL_server_ssl_service_key = 386, /* server_ssl_service_key */ + YYSYMBOL_server_ssl_service_pem = 387, /* server_ssl_service_pem */ + YYSYMBOL_server_ssl_port = 388, /* server_ssl_port */ + YYSYMBOL_server_tls_cert_bundle = 389, /* server_tls_cert_bundle */ + YYSYMBOL_server_tls_win_cert = 390, /* server_tls_win_cert */ + YYSYMBOL_server_tls_additional_port = 391, /* server_tls_additional_port */ + YYSYMBOL_server_tls_ciphers = 392, /* server_tls_ciphers */ + YYSYMBOL_server_tls_ciphersuites = 393, /* server_tls_ciphersuites */ + YYSYMBOL_server_tls_session_ticket_keys = 394, /* server_tls_session_ticket_keys */ + YYSYMBOL_server_tls_use_sni = 395, /* server_tls_use_sni */ + YYSYMBOL_server_https_port = 396, /* server_https_port */ + YYSYMBOL_server_http_endpoint = 397, /* server_http_endpoint */ + YYSYMBOL_server_http_max_streams = 398, /* server_http_max_streams */ + YYSYMBOL_server_http_query_buffer_size = 399, /* server_http_query_buffer_size */ + YYSYMBOL_server_http_response_buffer_size = 400, /* server_http_response_buffer_size */ + YYSYMBOL_server_http_nodelay = 401, /* server_http_nodelay */ + YYSYMBOL_server_http_notls_downstream = 402, /* server_http_notls_downstream */ + YYSYMBOL_server_use_systemd = 403, /* server_use_systemd */ + YYSYMBOL_server_do_daemonize = 404, /* server_do_daemonize */ + YYSYMBOL_server_use_syslog = 405, /* server_use_syslog */ + YYSYMBOL_server_log_time_ascii = 406, /* server_log_time_ascii */ + YYSYMBOL_server_log_queries = 407, /* server_log_queries */ + YYSYMBOL_server_log_replies = 408, /* server_log_replies */ + YYSYMBOL_server_log_tag_queryreply = 409, /* server_log_tag_queryreply */ + YYSYMBOL_server_log_servfail = 410, /* server_log_servfail */ + YYSYMBOL_server_log_local_actions = 411, /* server_log_local_actions */ + YYSYMBOL_server_chroot = 412, /* server_chroot */ + YYSYMBOL_server_username = 413, /* server_username */ + YYSYMBOL_server_directory = 414, /* server_directory */ + YYSYMBOL_server_logfile = 415, /* server_logfile */ + YYSYMBOL_server_pidfile = 416, /* server_pidfile */ + YYSYMBOL_server_root_hints = 417, /* server_root_hints */ + YYSYMBOL_server_dlv_anchor_file = 418, /* server_dlv_anchor_file */ + YYSYMBOL_server_dlv_anchor = 419, /* server_dlv_anchor */ + YYSYMBOL_server_auto_trust_anchor_file = 420, /* server_auto_trust_anchor_file */ + YYSYMBOL_server_trust_anchor_file = 421, /* server_trust_anchor_file */ + YYSYMBOL_server_trusted_keys_file = 422, /* server_trusted_keys_file */ + YYSYMBOL_server_trust_anchor = 423, /* server_trust_anchor */ + YYSYMBOL_server_trust_anchor_signaling = 424, /* server_trust_anchor_signaling */ + YYSYMBOL_server_root_key_sentinel = 425, /* server_root_key_sentinel */ + YYSYMBOL_server_domain_insecure = 426, /* server_domain_insecure */ + YYSYMBOL_server_hide_identity = 427, /* server_hide_identity */ + YYSYMBOL_server_hide_version = 428, /* server_hide_version */ + YYSYMBOL_server_hide_trustanchor = 429, /* server_hide_trustanchor */ + YYSYMBOL_server_identity = 430, /* server_identity */ + YYSYMBOL_server_version = 431, /* server_version */ + YYSYMBOL_server_nsid = 432, /* server_nsid */ + YYSYMBOL_server_so_rcvbuf = 433, /* server_so_rcvbuf */ + YYSYMBOL_server_so_sndbuf = 434, /* server_so_sndbuf */ + YYSYMBOL_server_so_reuseport = 435, /* server_so_reuseport */ + YYSYMBOL_server_ip_transparent = 436, /* server_ip_transparent */ + YYSYMBOL_server_ip_freebind = 437, /* server_ip_freebind */ + YYSYMBOL_server_ip_dscp = 438, /* server_ip_dscp */ + YYSYMBOL_server_stream_wait_size = 439, /* server_stream_wait_size */ + YYSYMBOL_server_edns_buffer_size = 440, /* server_edns_buffer_size */ + YYSYMBOL_server_msg_buffer_size = 441, /* server_msg_buffer_size */ + YYSYMBOL_server_msg_cache_size = 442, /* server_msg_cache_size */ + YYSYMBOL_server_msg_cache_slabs = 443, /* server_msg_cache_slabs */ + YYSYMBOL_server_num_queries_per_thread = 444, /* server_num_queries_per_thread */ + YYSYMBOL_server_jostle_timeout = 445, /* server_jostle_timeout */ + YYSYMBOL_server_delay_close = 446, /* server_delay_close */ + YYSYMBOL_server_udp_connect = 447, /* server_udp_connect */ + YYSYMBOL_server_unblock_lan_zones = 448, /* server_unblock_lan_zones */ + YYSYMBOL_server_insecure_lan_zones = 449, /* server_insecure_lan_zones */ + YYSYMBOL_server_rrset_cache_size = 450, /* server_rrset_cache_size */ + YYSYMBOL_server_rrset_cache_slabs = 451, /* server_rrset_cache_slabs */ + YYSYMBOL_server_infra_host_ttl = 452, /* server_infra_host_ttl */ + YYSYMBOL_server_infra_lame_ttl = 453, /* server_infra_lame_ttl */ + YYSYMBOL_server_infra_cache_numhosts = 454, /* server_infra_cache_numhosts */ + YYSYMBOL_server_infra_cache_lame_size = 455, /* server_infra_cache_lame_size */ + YYSYMBOL_server_infra_cache_slabs = 456, /* server_infra_cache_slabs */ + YYSYMBOL_server_infra_cache_min_rtt = 457, /* server_infra_cache_min_rtt */ + YYSYMBOL_server_infra_keep_probing = 458, /* server_infra_keep_probing */ + YYSYMBOL_server_target_fetch_policy = 459, /* server_target_fetch_policy */ + YYSYMBOL_server_harden_short_bufsize = 460, /* server_harden_short_bufsize */ + YYSYMBOL_server_harden_large_queries = 461, /* server_harden_large_queries */ + YYSYMBOL_server_harden_glue = 462, /* server_harden_glue */ + YYSYMBOL_server_harden_dnssec_stripped = 463, /* server_harden_dnssec_stripped */ + YYSYMBOL_server_harden_below_nxdomain = 464, /* server_harden_below_nxdomain */ + YYSYMBOL_server_harden_referral_path = 465, /* server_harden_referral_path */ + YYSYMBOL_server_harden_algo_downgrade = 466, /* server_harden_algo_downgrade */ + YYSYMBOL_server_use_caps_for_id = 467, /* server_use_caps_for_id */ + YYSYMBOL_server_caps_whitelist = 468, /* server_caps_whitelist */ + YYSYMBOL_server_private_address = 469, /* server_private_address */ + YYSYMBOL_server_private_domain = 470, /* server_private_domain */ + YYSYMBOL_server_prefetch = 471, /* server_prefetch */ + YYSYMBOL_server_prefetch_key = 472, /* server_prefetch_key */ + YYSYMBOL_server_deny_any = 473, /* server_deny_any */ + YYSYMBOL_server_unwanted_reply_threshold = 474, /* server_unwanted_reply_threshold */ + YYSYMBOL_server_do_not_query_address = 475, /* server_do_not_query_address */ + YYSYMBOL_server_do_not_query_localhost = 476, /* server_do_not_query_localhost */ + YYSYMBOL_server_access_control = 477, /* server_access_control */ + YYSYMBOL_server_module_conf = 478, /* server_module_conf */ + YYSYMBOL_server_val_override_date = 479, /* server_val_override_date */ + YYSYMBOL_server_val_sig_skew_min = 480, /* server_val_sig_skew_min */ + YYSYMBOL_server_val_sig_skew_max = 481, /* server_val_sig_skew_max */ + YYSYMBOL_server_val_max_restart = 482, /* server_val_max_restart */ + YYSYMBOL_server_cache_max_ttl = 483, /* server_cache_max_ttl */ + YYSYMBOL_server_cache_max_negative_ttl = 484, /* server_cache_max_negative_ttl */ + YYSYMBOL_server_cache_min_ttl = 485, /* server_cache_min_ttl */ + YYSYMBOL_server_bogus_ttl = 486, /* server_bogus_ttl */ + YYSYMBOL_server_val_clean_additional = 487, /* server_val_clean_additional */ + YYSYMBOL_server_val_permissive_mode = 488, /* server_val_permissive_mode */ + YYSYMBOL_server_aggressive_nsec = 489, /* server_aggressive_nsec */ + YYSYMBOL_server_ignore_cd_flag = 490, /* server_ignore_cd_flag */ + YYSYMBOL_server_serve_expired = 491, /* server_serve_expired */ + YYSYMBOL_server_serve_expired_ttl = 492, /* server_serve_expired_ttl */ + YYSYMBOL_server_serve_expired_ttl_reset = 493, /* server_serve_expired_ttl_reset */ + YYSYMBOL_server_serve_expired_reply_ttl = 494, /* server_serve_expired_reply_ttl */ + YYSYMBOL_server_serve_expired_client_timeout = 495, /* server_serve_expired_client_timeout */ + YYSYMBOL_server_serve_original_ttl = 496, /* server_serve_original_ttl */ + YYSYMBOL_server_fake_dsa = 497, /* server_fake_dsa */ + YYSYMBOL_server_fake_sha1 = 498, /* server_fake_sha1 */ + YYSYMBOL_server_val_log_level = 499, /* server_val_log_level */ + YYSYMBOL_server_val_nsec3_keysize_iterations = 500, /* server_val_nsec3_keysize_iterations */ + YYSYMBOL_server_zonemd_permissive_mode = 501, /* server_zonemd_permissive_mode */ + YYSYMBOL_server_add_holddown = 502, /* server_add_holddown */ + YYSYMBOL_server_del_holddown = 503, /* server_del_holddown */ + YYSYMBOL_server_keep_missing = 504, /* server_keep_missing */ + YYSYMBOL_server_permit_small_holddown = 505, /* server_permit_small_holddown */ + YYSYMBOL_server_key_cache_size = 506, /* server_key_cache_size */ + YYSYMBOL_server_key_cache_slabs = 507, /* server_key_cache_slabs */ + YYSYMBOL_server_neg_cache_size = 508, /* server_neg_cache_size */ + YYSYMBOL_server_local_zone = 509, /* server_local_zone */ + YYSYMBOL_server_local_data = 510, /* server_local_data */ + YYSYMBOL_server_local_data_ptr = 511, /* server_local_data_ptr */ + YYSYMBOL_server_minimal_responses = 512, /* server_minimal_responses */ + YYSYMBOL_server_rrset_roundrobin = 513, /* server_rrset_roundrobin */ + YYSYMBOL_server_unknown_server_time_limit = 514, /* server_unknown_server_time_limit */ + YYSYMBOL_server_max_udp_size = 515, /* server_max_udp_size */ + YYSYMBOL_server_dns64_prefix = 516, /* server_dns64_prefix */ + YYSYMBOL_server_dns64_synthall = 517, /* server_dns64_synthall */ + YYSYMBOL_server_dns64_ignore_aaaa = 518, /* server_dns64_ignore_aaaa */ + YYSYMBOL_server_define_tag = 519, /* server_define_tag */ + YYSYMBOL_server_local_zone_tag = 520, /* server_local_zone_tag */ + YYSYMBOL_server_access_control_tag = 521, /* server_access_control_tag */ + YYSYMBOL_server_access_control_tag_action = 522, /* server_access_control_tag_action */ + YYSYMBOL_server_access_control_tag_data = 523, /* server_access_control_tag_data */ + YYSYMBOL_server_local_zone_override = 524, /* server_local_zone_override */ + YYSYMBOL_server_access_control_view = 525, /* server_access_control_view */ + YYSYMBOL_server_response_ip_tag = 526, /* server_response_ip_tag */ + YYSYMBOL_server_ip_ratelimit = 527, /* server_ip_ratelimit */ + YYSYMBOL_server_ratelimit = 528, /* server_ratelimit */ + YYSYMBOL_server_ip_ratelimit_size = 529, /* server_ip_ratelimit_size */ + YYSYMBOL_server_ratelimit_size = 530, /* server_ratelimit_size */ + YYSYMBOL_server_ip_ratelimit_slabs = 531, /* server_ip_ratelimit_slabs */ + YYSYMBOL_server_ratelimit_slabs = 532, /* server_ratelimit_slabs */ + YYSYMBOL_server_ratelimit_for_domain = 533, /* server_ratelimit_for_domain */ + YYSYMBOL_server_ratelimit_below_domain = 534, /* server_ratelimit_below_domain */ + YYSYMBOL_server_ip_ratelimit_factor = 535, /* server_ip_ratelimit_factor */ + YYSYMBOL_server_ratelimit_factor = 536, /* server_ratelimit_factor */ + YYSYMBOL_server_low_rtt = 537, /* server_low_rtt */ + YYSYMBOL_server_fast_server_num = 538, /* server_fast_server_num */ + YYSYMBOL_server_fast_server_permil = 539, /* server_fast_server_permil */ + YYSYMBOL_server_qname_minimisation = 540, /* server_qname_minimisation */ + YYSYMBOL_server_qname_minimisation_strict = 541, /* server_qname_minimisation_strict */ + YYSYMBOL_server_pad_responses = 542, /* server_pad_responses */ + YYSYMBOL_server_pad_responses_block_size = 543, /* server_pad_responses_block_size */ + YYSYMBOL_server_pad_queries = 544, /* server_pad_queries */ + YYSYMBOL_server_pad_queries_block_size = 545, /* server_pad_queries_block_size */ + YYSYMBOL_server_ipsecmod_enabled = 546, /* server_ipsecmod_enabled */ + YYSYMBOL_server_ipsecmod_ignore_bogus = 547, /* server_ipsecmod_ignore_bogus */ + YYSYMBOL_server_ipsecmod_hook = 548, /* server_ipsecmod_hook */ + YYSYMBOL_server_ipsecmod_max_ttl = 549, /* server_ipsecmod_max_ttl */ + YYSYMBOL_server_ipsecmod_whitelist = 550, /* server_ipsecmod_whitelist */ + YYSYMBOL_server_ipsecmod_strict = 551, /* server_ipsecmod_strict */ + YYSYMBOL_server_edns_client_string = 552, /* server_edns_client_string */ + YYSYMBOL_server_edns_client_string_opcode = 553, /* server_edns_client_string_opcode */ + YYSYMBOL_stub_name = 554, /* stub_name */ + YYSYMBOL_stub_host = 555, /* stub_host */ + YYSYMBOL_stub_addr = 556, /* stub_addr */ + YYSYMBOL_stub_first = 557, /* stub_first */ + YYSYMBOL_stub_no_cache = 558, /* stub_no_cache */ + YYSYMBOL_stub_ssl_upstream = 559, /* stub_ssl_upstream */ + YYSYMBOL_stub_prime = 560, /* stub_prime */ + YYSYMBOL_forward_name = 561, /* forward_name */ + YYSYMBOL_forward_host = 562, /* forward_host */ + YYSYMBOL_forward_addr = 563, /* forward_addr */ + YYSYMBOL_forward_first = 564, /* forward_first */ + YYSYMBOL_forward_no_cache = 565, /* forward_no_cache */ + YYSYMBOL_forward_ssl_upstream = 566, /* forward_ssl_upstream */ + YYSYMBOL_auth_name = 567, /* auth_name */ + YYSYMBOL_auth_zonefile = 568, /* auth_zonefile */ + YYSYMBOL_auth_master = 569, /* auth_master */ + YYSYMBOL_auth_url = 570, /* auth_url */ + YYSYMBOL_auth_allow_notify = 571, /* auth_allow_notify */ + YYSYMBOL_auth_zonemd_check = 572, /* auth_zonemd_check */ + YYSYMBOL_auth_zonemd_reject_absence = 573, /* auth_zonemd_reject_absence */ + YYSYMBOL_auth_for_downstream = 574, /* auth_for_downstream */ + YYSYMBOL_auth_for_upstream = 575, /* auth_for_upstream */ + YYSYMBOL_auth_fallback_enabled = 576, /* auth_fallback_enabled */ + YYSYMBOL_view_name = 577, /* view_name */ + YYSYMBOL_view_local_zone = 578, /* view_local_zone */ + YYSYMBOL_view_response_ip = 579, /* view_response_ip */ + YYSYMBOL_view_response_ip_data = 580, /* view_response_ip_data */ + YYSYMBOL_view_local_data = 581, /* view_local_data */ + YYSYMBOL_view_local_data_ptr = 582, /* view_local_data_ptr */ + YYSYMBOL_view_first = 583, /* view_first */ + YYSYMBOL_rcstart = 584, /* rcstart */ + YYSYMBOL_contents_rc = 585, /* contents_rc */ + YYSYMBOL_content_rc = 586, /* content_rc */ + YYSYMBOL_rc_control_enable = 587, /* rc_control_enable */ + YYSYMBOL_rc_control_port = 588, /* rc_control_port */ + YYSYMBOL_rc_control_interface = 589, /* rc_control_interface */ + YYSYMBOL_rc_control_use_cert = 590, /* rc_control_use_cert */ + YYSYMBOL_rc_server_key_file = 591, /* rc_server_key_file */ + YYSYMBOL_rc_server_cert_file = 592, /* rc_server_cert_file */ + YYSYMBOL_rc_control_key_file = 593, /* rc_control_key_file */ + YYSYMBOL_rc_control_cert_file = 594, /* rc_control_cert_file */ + YYSYMBOL_dtstart = 595, /* dtstart */ + YYSYMBOL_contents_dt = 596, /* contents_dt */ + YYSYMBOL_content_dt = 597, /* content_dt */ + YYSYMBOL_dt_dnstap_enable = 598, /* dt_dnstap_enable */ + YYSYMBOL_dt_dnstap_bidirectional = 599, /* dt_dnstap_bidirectional */ + YYSYMBOL_dt_dnstap_socket_path = 600, /* dt_dnstap_socket_path */ + YYSYMBOL_dt_dnstap_ip = 601, /* dt_dnstap_ip */ + YYSYMBOL_dt_dnstap_tls = 602, /* dt_dnstap_tls */ + YYSYMBOL_dt_dnstap_tls_server_name = 603, /* dt_dnstap_tls_server_name */ + YYSYMBOL_dt_dnstap_tls_cert_bundle = 604, /* dt_dnstap_tls_cert_bundle */ + YYSYMBOL_dt_dnstap_tls_client_key_file = 605, /* dt_dnstap_tls_client_key_file */ + YYSYMBOL_dt_dnstap_tls_client_cert_file = 606, /* dt_dnstap_tls_client_cert_file */ + YYSYMBOL_dt_dnstap_send_identity = 607, /* dt_dnstap_send_identity */ + YYSYMBOL_dt_dnstap_send_version = 608, /* dt_dnstap_send_version */ + YYSYMBOL_dt_dnstap_identity = 609, /* dt_dnstap_identity */ + YYSYMBOL_dt_dnstap_version = 610, /* dt_dnstap_version */ + YYSYMBOL_dt_dnstap_log_resolver_query_messages = 611, /* dt_dnstap_log_resolver_query_messages */ + YYSYMBOL_dt_dnstap_log_resolver_response_messages = 612, /* dt_dnstap_log_resolver_response_messages */ + YYSYMBOL_dt_dnstap_log_client_query_messages = 613, /* dt_dnstap_log_client_query_messages */ + YYSYMBOL_dt_dnstap_log_client_response_messages = 614, /* dt_dnstap_log_client_response_messages */ + YYSYMBOL_dt_dnstap_log_forwarder_query_messages = 615, /* dt_dnstap_log_forwarder_query_messages */ + YYSYMBOL_dt_dnstap_log_forwarder_response_messages = 616, /* dt_dnstap_log_forwarder_response_messages */ + YYSYMBOL_pythonstart = 617, /* pythonstart */ + YYSYMBOL_contents_py = 618, /* contents_py */ + YYSYMBOL_content_py = 619, /* content_py */ + YYSYMBOL_py_script = 620, /* py_script */ + YYSYMBOL_dynlibstart = 621, /* dynlibstart */ + YYSYMBOL_contents_dl = 622, /* contents_dl */ + YYSYMBOL_content_dl = 623, /* content_dl */ + YYSYMBOL_dl_file = 624, /* dl_file */ + YYSYMBOL_server_disable_dnssec_lame_check = 625, /* server_disable_dnssec_lame_check */ + YYSYMBOL_server_log_identity = 626, /* server_log_identity */ + YYSYMBOL_server_response_ip = 627, /* server_response_ip */ + YYSYMBOL_server_response_ip_data = 628, /* server_response_ip_data */ + YYSYMBOL_dnscstart = 629, /* dnscstart */ + YYSYMBOL_contents_dnsc = 630, /* contents_dnsc */ + YYSYMBOL_content_dnsc = 631, /* content_dnsc */ + YYSYMBOL_dnsc_dnscrypt_enable = 632, /* dnsc_dnscrypt_enable */ + YYSYMBOL_dnsc_dnscrypt_port = 633, /* dnsc_dnscrypt_port */ + YYSYMBOL_dnsc_dnscrypt_provider = 634, /* dnsc_dnscrypt_provider */ + YYSYMBOL_dnsc_dnscrypt_provider_cert = 635, /* dnsc_dnscrypt_provider_cert */ + YYSYMBOL_dnsc_dnscrypt_provider_cert_rotated = 636, /* dnsc_dnscrypt_provider_cert_rotated */ + YYSYMBOL_dnsc_dnscrypt_secret_key = 637, /* dnsc_dnscrypt_secret_key */ + YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_size = 638, /* dnsc_dnscrypt_shared_secret_cache_size */ + YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_slabs = 639, /* dnsc_dnscrypt_shared_secret_cache_slabs */ + YYSYMBOL_dnsc_dnscrypt_nonce_cache_size = 640, /* dnsc_dnscrypt_nonce_cache_size */ + YYSYMBOL_dnsc_dnscrypt_nonce_cache_slabs = 641, /* dnsc_dnscrypt_nonce_cache_slabs */ + YYSYMBOL_cachedbstart = 642, /* cachedbstart */ + YYSYMBOL_contents_cachedb = 643, /* contents_cachedb */ + YYSYMBOL_content_cachedb = 644, /* content_cachedb */ + YYSYMBOL_cachedb_backend_name = 645, /* cachedb_backend_name */ + YYSYMBOL_cachedb_secret_seed = 646, /* cachedb_secret_seed */ + YYSYMBOL_redis_server_host = 647, /* redis_server_host */ + YYSYMBOL_redis_server_port = 648, /* redis_server_port */ + YYSYMBOL_redis_timeout = 649, /* redis_timeout */ + YYSYMBOL_redis_expire_records = 650, /* redis_expire_records */ + YYSYMBOL_server_tcp_connection_limit = 651, /* server_tcp_connection_limit */ + YYSYMBOL_ipsetstart = 652, /* ipsetstart */ + YYSYMBOL_contents_ipset = 653, /* contents_ipset */ + YYSYMBOL_content_ipset = 654, /* content_ipset */ + YYSYMBOL_ipset_name_v4 = 655, /* ipset_name_v4 */ + YYSYMBOL_ipset_name_v6 = 656 /* ipset_name_v6 */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; @@ -1762,18 +1090,19 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 666 +#define YYLAST 668 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 315 +#define YYNTOKENS 316 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 340 +#define YYNNTS 341 /* YYNRULES -- Number of rules. */ -#define YYNRULES 656 +#define YYNRULES 658 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 975 +#define YYNSTATES 978 -#define YYMAXUTOK 569 +/* YYMAXUTOK -- Last valid token kind. */ +#define YYMAXUTOK 570 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM @@ -1843,79 +1172,80 @@ static const yytype_int16 yytranslate[] = 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 + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { - 0, 188, 188, 188, 189, 189, 190, 190, 191, 191, - 191, 192, 192, 193, 193, 194, 194, 195, 197, 203, - 208, 209, 210, 210, 210, 211, 211, 212, 212, 212, - 213, 213, 214, 214, 214, 215, 215, 216, 216, 216, - 217, 217, 217, 218, 218, 219, 219, 220, 220, 221, - 221, 222, 222, 223, 223, 224, 224, 225, 225, 226, - 226, 226, 227, 227, 227, 228, 228, 228, 229, 229, - 230, 230, 231, 231, 232, 232, 233, 233, 233, 234, - 234, 235, 235, 236, 236, 236, 237, 237, 238, 238, - 239, 239, 240, 240, 240, 241, 241, 242, 242, 243, - 243, 244, 244, 245, 245, 246, 246, 246, 247, 247, - 248, 248, 248, 249, 249, 249, 250, 250, 250, 251, - 251, 251, 251, 252, 253, 253, 253, 254, 254, 254, - 255, 255, 256, 256, 257, 257, 257, 258, 258, 258, - 259, 259, 260, 260, 260, 261, 261, 262, 262, 262, - 263, 263, 264, 264, 265, 265, 266, 267, 267, 268, - 268, 269, 269, 270, 271, 271, 272, 272, 273, 273, - 274, 274, 275, 275, 276, 276, 276, 277, 277, 278, - 278, 279, 279, 280, 281, 281, 282, 282, 283, 284, - 284, 285, 285, 286, 286, 287, 287, 288, 288, 288, - 289, 289, 289, 290, 290, 291, 292, 292, 293, 293, - 294, 294, 295, 295, 296, 296, 296, 297, 297, 297, - 298, 298, 298, 299, 299, 300, 300, 301, 301, 302, - 302, 303, 303, 304, 304, 305, 305, 308, 320, 321, - 322, 322, 322, 322, 322, 323, 323, 325, 337, 338, - 339, 339, 339, 339, 340, 340, 342, 356, 357, 358, - 358, 358, 358, 359, 359, 359, 361, 380, 381, 382, - 382, 382, 382, 383, 383, 383, 384, 384, 384, 387, - 406, 423, 431, 441, 449, 466, 467, 468, 468, 468, - 468, 468, 469, 469, 469, 470, 470, 472, 481, 490, - 501, 510, 519, 528, 539, 548, 560, 574, 589, 600, - 617, 634, 651, 668, 683, 698, 711, 726, 735, 744, - 753, 762, 771, 780, 789, 798, 807, 816, 825, 834, - 843, 852, 865, 876, 887, 898, 907, 920, 929, 938, - 947, 954, 961, 970, 977, 986, 994, 1001, 1008, 1016, - 1025, 1033, 1049, 1057, 1065, 1073, 1081, 1089, 1098, 1107, - 1121, 1130, 1139, 1148, 1157, 1166, 1175, 1182, 1189, 1215, - 1223, 1230, 1237, 1244, 1251, 1259, 1267, 1275, 1282, 1293, - 1304, 1311, 1320, 1329, 1338, 1345, 1352, 1368, 1376, 1384, - 1394, 1404, 1414, 1428, 1436, 1449, 1460, 1468, 1481, 1490, - 1499, 1508, 1517, 1527, 1537, 1545, 1558, 1567, 1575, 1584, - 1592, 1605, 1614, 1624, 1631, 1641, 1651, 1661, 1671, 1681, - 1691, 1701, 1711, 1718, 1725, 1732, 1741, 1750, 1759, 1768, - 1775, 1785, 1805, 1812, 1830, 1843, 1856, 1865, 1874, 1883, - 1892, 1902, 1912, 1923, 1932, 1941, 1950, 1959, 1968, 1977, - 1986, 1999, 2012, 2021, 2028, 2037, 2046, 2055, 2064, 2073, - 2081, 2094, 2102, 2147, 2154, 2169, 2179, 2189, 2196, 2203, - 2210, 2219, 2227, 2241, 2262, 2283, 2295, 2307, 2319, 2328, - 2349, 2359, 2368, 2376, 2384, 2397, 2410, 2425, 2440, 2449, - 2458, 2464, 2473, 2482, 2492, 2502, 2512, 2521, 2531, 2540, - 2553, 2566, 2578, 2592, 2604, 2618, 2627, 2639, 2649, 2656, - 2663, 2672, 2681, 2691, 2701, 2711, 2718, 2725, 2734, 2743, - 2753, 2763, 2770, 2777, 2784, 2792, 2802, 2812, 2822, 2832, - 2842, 2852, 2898, 2908, 2916, 2924, 2939, 2948, 2953, 2954, - 2955, 2955, 2955, 2956, 2956, 2956, 2957, 2957, 2959, 2969, - 2978, 2985, 2992, 2999, 3006, 3013, 3020, 3025, 3026, 3027, - 3027, 3027, 3028, 3028, 3028, 3029, 3030, 3030, 3031, 3031, - 3032, 3032, 3033, 3034, 3035, 3036, 3037, 3038, 3040, 3049, - 3059, 3066, 3073, 3082, 3089, 3096, 3103, 3110, 3119, 3128, - 3135, 3142, 3152, 3162, 3172, 3182, 3192, 3202, 3207, 3208, - 3209, 3211, 3217, 3222, 3223, 3224, 3226, 3232, 3242, 3249, - 3258, 3266, 3271, 3272, 3274, 3274, 3274, 3275, 3275, 3276, - 3277, 3278, 3279, 3280, 3282, 3292, 3301, 3308, 3317, 3324, - 3333, 3341, 3354, 3362, 3375, 3380, 3381, 3382, 3382, 3383, - 3383, 3383, 3384, 3386, 3398, 3410, 3422, 3437, 3450, 3463, - 3474, 3479, 3480, 3481, 3481, 3483, 3498 + 0, 189, 189, 189, 190, 190, 191, 191, 192, 192, + 192, 193, 193, 194, 194, 195, 195, 196, 198, 204, + 209, 210, 211, 211, 211, 212, 212, 213, 213, 213, + 214, 214, 215, 215, 215, 216, 216, 217, 217, 217, + 218, 218, 218, 219, 219, 220, 220, 221, 221, 222, + 222, 223, 223, 224, 224, 225, 225, 226, 226, 227, + 227, 227, 228, 228, 228, 229, 229, 229, 230, 230, + 231, 231, 232, 232, 233, 233, 234, 234, 234, 235, + 235, 236, 236, 237, 237, 237, 238, 238, 239, 239, + 240, 240, 241, 241, 241, 242, 242, 243, 243, 244, + 244, 245, 245, 246, 246, 247, 247, 248, 248, 249, + 249, 250, 250, 250, 251, 251, 251, 252, 252, 252, + 253, 253, 253, 253, 254, 255, 255, 255, 256, 256, + 256, 257, 257, 258, 258, 259, 259, 259, 260, 260, + 260, 261, 261, 262, 262, 262, 263, 263, 264, 264, + 264, 265, 265, 266, 266, 267, 267, 268, 269, 269, + 270, 270, 271, 271, 272, 273, 273, 274, 274, 275, + 275, 276, 276, 277, 277, 278, 278, 278, 279, 279, + 280, 280, 281, 281, 282, 283, 283, 284, 284, 285, + 286, 286, 287, 287, 288, 288, 289, 289, 290, 290, + 290, 291, 291, 291, 292, 292, 293, 294, 294, 295, + 295, 296, 296, 297, 297, 298, 298, 298, 299, 299, + 299, 300, 300, 300, 301, 301, 302, 302, 303, 303, + 304, 304, 305, 305, 306, 306, 307, 307, 310, 322, + 323, 324, 324, 324, 324, 324, 325, 325, 327, 339, + 340, 341, 341, 341, 341, 342, 342, 344, 358, 359, + 360, 360, 360, 360, 361, 361, 361, 363, 382, 383, + 384, 384, 384, 384, 385, 385, 385, 386, 386, 386, + 389, 408, 425, 433, 443, 451, 468, 469, 470, 470, + 470, 470, 470, 471, 471, 471, 472, 472, 474, 483, + 492, 503, 512, 521, 530, 541, 550, 562, 576, 591, + 602, 619, 636, 653, 670, 685, 700, 713, 728, 737, + 746, 755, 764, 773, 782, 791, 800, 809, 818, 827, + 836, 845, 854, 867, 878, 889, 900, 909, 922, 931, + 940, 949, 956, 963, 972, 979, 988, 996, 1003, 1010, + 1018, 1027, 1035, 1051, 1059, 1067, 1075, 1083, 1091, 1100, + 1109, 1123, 1132, 1141, 1150, 1159, 1168, 1177, 1184, 1191, + 1217, 1225, 1232, 1239, 1246, 1253, 1261, 1269, 1277, 1284, + 1295, 1306, 1313, 1322, 1331, 1340, 1347, 1354, 1370, 1378, + 1386, 1396, 1406, 1416, 1430, 1438, 1451, 1462, 1470, 1483, + 1492, 1501, 1510, 1519, 1529, 1539, 1547, 1560, 1569, 1577, + 1586, 1594, 1607, 1616, 1626, 1633, 1643, 1653, 1663, 1673, + 1683, 1693, 1703, 1713, 1720, 1727, 1734, 1743, 1752, 1761, + 1770, 1777, 1787, 1807, 1814, 1832, 1845, 1858, 1871, 1880, + 1889, 1898, 1907, 1917, 1927, 1938, 1947, 1956, 1965, 1974, + 1983, 1992, 2001, 2014, 2027, 2036, 2043, 2052, 2061, 2070, + 2079, 2088, 2096, 2109, 2117, 2162, 2169, 2184, 2194, 2204, + 2211, 2218, 2225, 2234, 2242, 2256, 2277, 2298, 2310, 2322, + 2334, 2343, 2364, 2374, 2383, 2391, 2399, 2412, 2425, 2440, + 2455, 2464, 2473, 2479, 2488, 2497, 2507, 2517, 2527, 2536, + 2546, 2555, 2568, 2581, 2593, 2607, 2619, 2633, 2642, 2654, + 2664, 2671, 2678, 2687, 2696, 2706, 2716, 2726, 2733, 2740, + 2749, 2758, 2768, 2778, 2785, 2792, 2799, 2807, 2817, 2827, + 2837, 2847, 2857, 2867, 2913, 2923, 2931, 2939, 2954, 2963, + 2968, 2969, 2970, 2970, 2970, 2971, 2971, 2971, 2972, 2972, + 2974, 2984, 2993, 3000, 3007, 3014, 3021, 3028, 3035, 3040, + 3041, 3042, 3042, 3042, 3043, 3043, 3043, 3044, 3045, 3045, + 3046, 3046, 3047, 3047, 3048, 3049, 3050, 3051, 3052, 3053, + 3055, 3064, 3074, 3081, 3088, 3097, 3104, 3111, 3118, 3125, + 3134, 3143, 3150, 3157, 3167, 3177, 3187, 3197, 3207, 3217, + 3222, 3223, 3224, 3226, 3232, 3237, 3238, 3239, 3241, 3247, + 3257, 3264, 3273, 3281, 3286, 3287, 3289, 3289, 3289, 3290, + 3290, 3291, 3292, 3293, 3294, 3295, 3297, 3307, 3316, 3323, + 3332, 3339, 3348, 3356, 3369, 3377, 3390, 3395, 3396, 3397, + 3397, 3398, 3398, 3398, 3399, 3401, 3413, 3425, 3437, 3452, + 3465, 3478, 3489, 3494, 3495, 3496, 3496, 3498, 3513 }; #endif @@ -1969,14 +1299,14 @@ static const char *const yytname[] = "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_TCP_AUTH_QUERY_TIMEOUT", "VAR_SSL_SERVICE_KEY", + "VAR_VAL_SIG_SKEW_MIN", "VAR_VAL_SIG_SKEW_MAX", "VAR_VAL_MAX_RESTART", + "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_TCP_AUTH_QUERY_TIMEOUT", "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_HTTPS_PORT", "VAR_HTTP_ENDPOINT", @@ -2116,17 +1446,17 @@ static const char *const yytname[] = "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_serve_original_ttl", "server_fake_dsa", "server_fake_sha1", - "server_val_log_level", "server_val_nsec3_keysize_iterations", - "server_zonemd_permissive_mode", "server_add_holddown", - "server_del_holddown", "server_keep_missing", + "server_val_sig_skew_max", "server_val_max_restart", + "server_cache_max_ttl", "server_cache_max_negative_ttl", + "server_cache_min_ttl", "server_bogus_ttl", + "server_val_clean_additional", "server_val_permissive_mode", + "server_aggressive_nsec", "server_ignore_cd_flag", + "server_serve_expired", "server_serve_expired_ttl", + "server_serve_expired_ttl_reset", "server_serve_expired_reply_ttl", + "server_serve_expired_client_timeout", "server_serve_original_ttl", + "server_fake_dsa", "server_fake_sha1", "server_val_log_level", + "server_val_nsec3_keysize_iterations", "server_zonemd_permissive_mode", + "server_add_holddown", "server_del_holddown", "server_keep_missing", "server_permit_small_holddown", "server_key_cache_size", "server_key_cache_slabs", "server_neg_cache_size", "server_local_zone", "server_local_data", "server_local_data_ptr", "server_minimal_responses", @@ -2231,11 +1561,11 @@ static const yytype_int16 yytoknum[] = 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, - 565, 566, 567, 568, 569 + 565, 566, 567, 568, 569, 570 }; #endif -#define YYPACT_NINF (-299) +#define YYPACT_NINF (-300) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) @@ -2249,104 +1579,104 @@ static const yytype_int16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - -299, 0, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, 295, -43, -38, -42, -44, -28, -29, -148, - -109, -298, -191, -189, -290, 3, 4, 27, 28, 31, + -300, 0, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, 296, -43, -38, -42, -44, -28, -29, -149, + -109, -299, -192, -190, -291, 3, 4, 27, 28, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 53, 54, 55, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 87, 88, 90, 91, - 92, 94, 96, 97, 98, 100, 101, 102, 103, 105, + 80, 81, 82, 83, 84, 85, 87, 88, 89, 91, + 92, 93, 95, 97, 98, 99, 101, 102, 103, 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, 136, 137, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 156, 157, 158, + 148, 149, 150, 151, 152, 153, 154, 155, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, + 169, 170, 171, 172, 173, 174, 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, 215, 216, 217, 219, 225, 226, - 227, 228, 229, 231, 232, 234, 240, 241, 242, 243, - 244, 245, 247, 248, 249, 250, 251, 252, 253, 255, - 256, 257, 258, 261, 262, 269, 270, 271, 272, 273, + 210, 211, 212, 213, 214, 216, 217, 218, 220, 226, + 227, 228, 229, 230, 232, 233, 235, 241, 242, 243, + 244, 245, 246, 248, 249, 250, 251, 252, 253, 254, + 256, 257, 258, 259, 262, 263, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 288, 289, 290, 292, 293, 294, 296, - 330, 331, 332, 333, 337, 338, 339, 381, 382, 383, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, 384, 385, 386, 387, - 388, 389, 395, -299, -299, -299, -299, -299, -299, -299, - -299, 399, 400, 426, 427, 428, 437, -299, -299, -299, - -299, -299, -299, -299, 450, 451, 452, 453, 454, 455, - 456, -299, -299, -299, -299, -299, -299, -299, -299, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - 467, 468, 469, 509, 511, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, 528, 529, 530, 531, - 532, 533, 534, 535, -299, -299, -299, -299, -299, -299, - -299, -299, -299, 536, 537, 538, 549, 550, 551, 552, - 553, 554, 555, 557, 558, 559, 560, 561, 562, 563, - 566, 569, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, 572, -299, -299, 573, -299, -299, 582, 583, - 584, 586, 587, 588, 589, 590, 591, 592, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, 593, - 598, 599, 600, 601, 602, -299, -299, -299, -299, -299, - -299, -299, 603, 604, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, 605, 606, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, 607, 608, 609, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, 610, - 611, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - 612, 613, 614, 615, 616, 617, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, 618, -299, - -299, -299, -299, -299, -299, -299, -299, -299, 619, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, 620, -299, -299, 621, - 622, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, 623, 624, 625, -299, -299, -299, -299, - -299, -299, -299, -299, -299 + 284, 285, 286, 287, 289, 290, 291, 293, 294, 295, + 297, 331, 332, 333, 334, 338, 339, 340, 382, 383, + 384, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, 385, 386, + 387, 388, 389, 390, 396, -300, -300, -300, -300, -300, + -300, -300, -300, 400, 401, 428, 429, 430, 439, -300, + -300, -300, -300, -300, -300, -300, 452, 453, 454, 455, + 456, 457, 458, -300, -300, -300, -300, -300, -300, -300, + -300, 459, 460, 461, 462, 463, 464, 465, 466, 467, + 468, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, 469, 470, 471, 511, 513, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, 530, 531, + 532, 533, 534, 535, 536, 537, -300, -300, -300, -300, + -300, -300, -300, -300, -300, 538, 539, 540, 551, 552, + 553, 554, 555, 556, 557, 559, 560, 561, 562, 563, + 564, 565, 568, 571, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, 574, -300, -300, 575, -300, -300, + 584, 585, 586, 588, 589, 590, 591, 592, 593, 594, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, 595, 600, 601, 602, 603, 604, -300, -300, -300, + -300, -300, -300, -300, 605, 606, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, 607, + 608, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, 609, + 610, 611, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, 612, 613, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, 614, 615, 616, 617, 618, 619, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, 620, -300, -300, -300, -300, -300, -300, -300, -300, + -300, 621, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, 622, + -300, -300, 623, 624, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, 625, 626, 627, -300, + -300, -300, -300, -300, -300, -300, -300, -300 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -2354,10 +1684,10 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_int16 yydefact[] = { - 2, 0, 1, 18, 19, 237, 247, 537, 597, 556, - 256, 611, 634, 266, 650, 284, 602, 3, 17, 21, - 239, 249, 258, 268, 286, 539, 558, 599, 604, 613, - 636, 652, 4, 5, 6, 10, 14, 15, 8, 9, + 2, 0, 1, 18, 19, 238, 248, 539, 599, 558, + 257, 613, 636, 267, 652, 285, 604, 3, 17, 21, + 240, 250, 259, 269, 287, 541, 560, 601, 606, 615, + 638, 654, 4, 5, 6, 10, 14, 15, 8, 9, 7, 16, 11, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2380,156 +1710,158 @@ static const yytype_int16 yydefact[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 20, 22, 23, 86, 89, 98, 200, 201, 24, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 37, - 77, 25, 90, 91, 48, 70, 85, 26, 27, 30, - 31, 28, 29, 32, 33, 34, 234, 235, 236, 35, - 36, 121, 212, 122, 124, 125, 126, 214, 219, 215, - 226, 227, 228, 229, 127, 128, 129, 130, 131, 132, - 133, 196, 87, 76, 102, 119, 120, 224, 221, 123, - 38, 39, 40, 41, 42, 78, 92, 93, 108, 64, - 74, 65, 204, 205, 103, 58, 59, 203, 60, 61, - 232, 112, 116, 137, 147, 174, 150, 225, 113, 71, - 43, 44, 45, 100, 138, 139, 140, 141, 46, 47, - 49, 50, 52, 53, 51, 145, 151, 54, 55, 56, - 62, 81, 117, 95, 146, 88, 170, 96, 97, 114, - 115, 222, 101, 57, 79, 82, 63, 66, 104, 105, - 80, 171, 106, 67, 68, 69, 213, 118, 188, 189, - 190, 191, 192, 193, 194, 202, 107, 75, 233, 109, - 110, 111, 172, 72, 73, 94, 83, 84, 99, 134, - 135, 223, 136, 142, 143, 144, 175, 176, 178, 180, - 181, 179, 182, 197, 148, 149, 154, 155, 152, 153, - 156, 157, 159, 158, 216, 218, 217, 173, 183, 184, - 185, 186, 187, 206, 208, 207, 209, 210, 211, 230, - 231, 177, 195, 198, 199, 220, 0, 0, 0, 0, - 0, 0, 0, 238, 240, 241, 242, 244, 245, 246, - 243, 0, 0, 0, 0, 0, 0, 248, 250, 251, - 252, 253, 254, 255, 0, 0, 0, 0, 0, 0, - 0, 257, 259, 260, 263, 264, 261, 265, 262, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 267, - 269, 270, 271, 272, 276, 277, 278, 273, 274, 275, - 0, 0, 0, 0, 0, 289, 293, 294, 295, 296, - 285, 287, 288, 290, 291, 292, 0, 0, 0, 0, - 0, 0, 0, 0, 538, 540, 542, 541, 547, 543, - 544, 545, 546, 0, 0, 0, 0, 0, 0, 0, + 0, 20, 22, 23, 86, 89, 98, 201, 202, 24, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 37, 77, 25, 90, 91, 48, 70, 85, 26, 27, + 30, 31, 28, 29, 32, 33, 34, 235, 236, 237, + 35, 36, 122, 213, 123, 125, 126, 127, 215, 220, + 216, 227, 228, 229, 230, 128, 129, 130, 131, 132, + 133, 134, 197, 87, 76, 102, 120, 121, 225, 222, + 124, 38, 39, 40, 41, 42, 78, 92, 93, 109, + 64, 74, 65, 205, 206, 103, 58, 59, 204, 60, + 61, 233, 113, 117, 138, 148, 175, 151, 226, 114, + 71, 43, 44, 45, 100, 139, 140, 141, 142, 46, + 47, 49, 50, 52, 53, 51, 146, 152, 54, 55, + 56, 62, 81, 118, 95, 147, 88, 171, 96, 97, + 115, 116, 223, 101, 57, 79, 82, 63, 66, 104, + 105, 106, 80, 172, 107, 67, 68, 69, 214, 119, + 189, 190, 191, 192, 193, 194, 195, 203, 108, 75, + 234, 110, 111, 112, 173, 72, 73, 94, 83, 84, + 99, 135, 136, 224, 137, 143, 144, 145, 176, 177, + 179, 181, 182, 180, 183, 198, 149, 150, 155, 156, + 153, 154, 157, 158, 160, 159, 217, 219, 218, 174, + 184, 185, 186, 187, 188, 207, 209, 208, 210, 211, + 212, 231, 232, 178, 196, 199, 200, 221, 0, 0, + 0, 0, 0, 0, 0, 239, 241, 242, 243, 245, + 246, 247, 244, 0, 0, 0, 0, 0, 0, 249, + 251, 252, 253, 254, 255, 256, 0, 0, 0, 0, + 0, 0, 0, 258, 260, 261, 264, 265, 262, 266, + 263, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 268, 270, 271, 272, 273, 277, 278, 279, 274, + 275, 276, 0, 0, 0, 0, 0, 290, 294, 295, + 296, 297, 286, 288, 289, 291, 292, 293, 0, 0, + 0, 0, 0, 0, 0, 0, 540, 542, 544, 543, + 549, 545, 546, 547, 548, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 557, 559, 561, 560, 562, 563, 564, 565, + 0, 0, 0, 0, 559, 561, 563, 562, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, - 576, 577, 0, 598, 600, 0, 603, 605, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 612, 614, - 615, 616, 618, 619, 617, 620, 621, 622, 623, 0, - 0, 0, 0, 0, 0, 635, 637, 638, 639, 640, - 641, 642, 0, 0, 651, 653, 654, 298, 297, 304, - 317, 315, 327, 323, 324, 328, 325, 326, 329, 330, - 331, 335, 336, 366, 367, 368, 369, 370, 396, 397, - 398, 404, 405, 320, 406, 407, 410, 408, 409, 413, - 414, 415, 429, 381, 382, 384, 385, 416, 432, 375, - 377, 433, 439, 440, 441, 321, 395, 459, 460, 376, - 453, 359, 316, 371, 430, 436, 417, 0, 0, 463, - 322, 299, 358, 421, 300, 318, 319, 372, 373, 461, - 419, 423, 424, 333, 332, 301, 464, 399, 428, 360, - 380, 434, 435, 438, 452, 374, 457, 455, 456, 387, - 394, 425, 426, 388, 389, 418, 443, 361, 362, 365, - 337, 339, 334, 340, 341, 342, 343, 350, 351, 352, - 353, 354, 355, 356, 465, 466, 468, 400, 401, 402, - 403, 411, 412, 469, 470, 471, 0, 0, 0, 420, - 390, 392, 607, 480, 484, 482, 481, 485, 483, 0, - 0, 488, 489, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 422, 437, 458, 493, 494, 391, 472, - 0, 0, 0, 0, 0, 0, 444, 445, 446, 447, - 448, 449, 450, 451, 608, 383, 378, 442, 357, 302, - 303, 379, 495, 496, 497, 498, 499, 501, 500, 502, - 503, 504, 338, 345, 490, 492, 491, 344, 0, 364, - 427, 467, 363, 393, 346, 347, 349, 348, 0, 506, - 386, 454, 507, 508, 509, 513, 512, 510, 511, 514, - 515, 516, 517, 519, 518, 530, 0, 534, 535, 0, - 0, 536, 520, 528, 521, 522, 523, 527, 529, 524, - 525, 526, 279, 280, 281, 282, 283, 548, 550, 549, - 552, 553, 554, 555, 551, 578, 580, 581, 582, 583, - 584, 585, 586, 587, 588, 579, 589, 590, 591, 592, - 593, 594, 595, 596, 601, 606, 624, 625, 626, 629, - 627, 628, 630, 631, 632, 633, 643, 644, 645, 646, - 647, 648, 655, 656, 431, 462, 479, 609, 610, 486, - 487, 473, 474, 0, 0, 0, 478, 649, 505, 531, - 532, 533, 477, 475, 476 + 576, 577, 578, 579, 0, 600, 602, 0, 605, 607, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 614, 616, 617, 618, 620, 621, 619, 622, 623, 624, + 625, 0, 0, 0, 0, 0, 0, 637, 639, 640, + 641, 642, 643, 644, 0, 0, 653, 655, 656, 299, + 298, 305, 318, 316, 328, 324, 325, 329, 326, 327, + 330, 331, 332, 336, 337, 367, 368, 369, 370, 371, + 397, 398, 399, 405, 406, 321, 407, 408, 411, 409, + 410, 414, 415, 416, 430, 382, 383, 385, 386, 417, + 433, 376, 378, 434, 441, 442, 443, 322, 396, 461, + 462, 377, 455, 360, 317, 372, 431, 438, 418, 0, + 0, 465, 323, 300, 359, 422, 301, 319, 320, 373, + 374, 463, 420, 424, 425, 334, 333, 302, 466, 400, + 429, 361, 381, 435, 436, 437, 440, 454, 375, 459, + 457, 458, 388, 395, 426, 427, 389, 390, 419, 445, + 362, 363, 366, 338, 340, 335, 341, 342, 343, 344, + 351, 352, 353, 354, 355, 356, 357, 467, 468, 470, + 401, 402, 403, 404, 412, 413, 471, 472, 473, 0, + 0, 0, 421, 391, 393, 609, 482, 486, 484, 483, + 487, 485, 0, 0, 490, 491, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 423, 439, 460, 495, + 496, 392, 474, 0, 0, 0, 0, 0, 0, 446, + 447, 448, 449, 450, 451, 452, 453, 610, 384, 379, + 444, 358, 303, 304, 380, 497, 498, 499, 500, 501, + 503, 502, 504, 505, 506, 339, 346, 492, 494, 493, + 345, 0, 365, 428, 469, 364, 394, 347, 348, 350, + 349, 0, 508, 387, 456, 509, 510, 511, 515, 514, + 512, 513, 516, 517, 518, 519, 521, 520, 532, 0, + 536, 537, 0, 0, 538, 522, 530, 523, 524, 525, + 529, 531, 526, 527, 528, 280, 281, 282, 283, 284, + 550, 552, 551, 554, 555, 556, 557, 553, 580, 582, + 583, 584, 585, 586, 587, 588, 589, 590, 581, 591, + 592, 593, 594, 595, 596, 597, 598, 603, 608, 626, + 627, 628, 631, 629, 630, 632, 633, 634, 635, 645, + 646, 647, 648, 649, 650, 657, 658, 432, 464, 481, + 611, 612, 488, 489, 475, 476, 0, 0, 0, 480, + 651, 507, 533, 534, 535, 479, 477, 478 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - 268, 626, 627, 628, 629, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299, - -299, -299, -299, -299, -299, -299, -299, -299, -299, -299 + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, 269, 628, 629, 630, 631, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, + -300 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 17, 18, 19, 32, 260, 20, 33, 483, - 21, 34, 497, 22, 35, 511, 23, 36, 529, 545, - 546, 547, 548, 549, 24, 37, 550, 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, 484, 485, 486, - 487, 488, 489, 490, 498, 499, 500, 501, 502, 503, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, - 512, 513, 514, 515, 516, 517, 518, 25, 38, 564, - 565, 566, 567, 568, 569, 570, 571, 572, 26, 39, - 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, - 27, 40, 613, 614, 28, 41, 616, 617, 471, 472, - 473, 474, 29, 42, 628, 629, 630, 631, 632, 633, - 634, 635, 636, 637, 638, 30, 43, 645, 646, 647, - 648, 649, 650, 651, 475, 31, 44, 654, 655, 656 + -1, 1, 17, 18, 19, 32, 261, 20, 33, 485, + 21, 34, 499, 22, 35, 513, 23, 36, 531, 547, + 548, 549, 550, 551, 24, 37, 552, 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, 486, 487, + 488, 489, 490, 491, 492, 500, 501, 502, 503, 504, + 505, 532, 533, 534, 535, 536, 537, 538, 539, 540, + 541, 514, 515, 516, 517, 518, 519, 520, 25, 38, + 566, 567, 568, 569, 570, 571, 572, 573, 574, 26, + 39, 594, 595, 596, 597, 598, 599, 600, 601, 602, + 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, + 613, 27, 40, 615, 616, 28, 41, 618, 619, 473, + 474, 475, 476, 29, 42, 630, 631, 632, 633, 634, + 635, 636, 637, 638, 639, 640, 30, 43, 647, 648, + 649, 650, 651, 652, 653, 477, 31, 44, 656, 657, + 658 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -2537,155 +1869,155 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 2, 519, 476, 504, 477, 478, 612, 491, 652, 653, - 615, 3, 4, 657, 658, 492, 493, 519, 573, 574, - 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, - 585, 586, 587, 588, 589, 590, 591, 659, 660, 505, - 506, 661, 662, 663, 664, 665, 5, 666, 667, 668, - 669, 670, 6, 618, 619, 620, 621, 622, 623, 624, - 625, 626, 627, 671, 672, 673, 507, 479, 556, 557, - 558, 559, 560, 561, 562, 563, 639, 640, 641, 642, - 643, 644, 674, 675, 676, 677, 678, 679, 680, 681, - 682, 683, 684, 685, 686, 687, 7, 688, 689, 480, - 690, 691, 692, 494, 693, 495, 694, 695, 696, 481, - 697, 698, 699, 700, 8, 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, 508, 509, 730, 731, 732, 733, - 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, - 744, 745, 746, 747, 748, 9, 749, 750, 751, 752, - 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, - 763, 764, 765, 766, 510, 767, 768, 769, 770, 771, - 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, - 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, - 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, - 802, 803, 804, 805, 10, 806, 807, 808, 520, 809, - 521, 522, 523, 524, 525, 810, 811, 812, 813, 814, - 526, 815, 816, 11, 817, 482, 521, 522, 523, 496, - 818, 819, 820, 821, 822, 823, 526, 824, 825, 826, - 827, 828, 829, 830, 12, 831, 832, 833, 834, 527, - 528, 835, 836, 13, 540, 541, 542, 543, 544, 837, - 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, - 848, 849, 850, 851, 852, 853, 854, 14, 855, 856, - 857, 15, 858, 859, 860, 551, 861, 16, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 862, 863, 864, 865, 77, 78, 79, 866, 867, 868, - 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, 869, 870, 871, 872, 873, 874, 875, 876, 877, - 121, 122, 123, 124, 125, 878, 126, 127, 128, 879, - 880, 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, 881, 882, 883, 154, - 155, 156, 157, 158, 159, 160, 161, 884, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, - 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, - 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, 905, - 213, 906, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 907, 908, - 909, 910, 911, 912, 913, 914, 915, 916, 917, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 918, - 919, 920, 921, 922, 923, 924, 240, 925, 926, 927, - 928, 929, 930, 931, 241, 242, 932, 243, 244, 933, - 245, 246, 934, 935, 247, 248, 249, 250, 251, 252, - 253, 254, 936, 937, 938, 255, 939, 940, 941, 942, - 943, 944, 945, 946, 256, 257, 258, 259, 947, 948, - 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, - 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, - 969, 970, 971, 972, 973, 974, 0, 0, 0, 0, + 2, 521, 478, 506, 479, 480, 614, 493, 654, 655, + 617, 3, 4, 659, 660, 494, 495, 521, 575, 576, + 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, + 587, 588, 589, 590, 591, 592, 593, 661, 662, 507, + 508, 663, 664, 665, 666, 667, 5, 668, 669, 670, + 671, 672, 6, 620, 621, 622, 623, 624, 625, 626, + 627, 628, 629, 673, 674, 675, 509, 481, 558, 559, + 560, 561, 562, 563, 564, 565, 641, 642, 643, 644, + 645, 646, 676, 677, 678, 679, 680, 681, 682, 683, + 684, 685, 686, 687, 688, 689, 7, 690, 691, 692, + 482, 693, 694, 695, 496, 696, 497, 697, 698, 699, + 483, 700, 701, 702, 8, 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, 510, 511, 733, 734, 735, + 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, + 746, 747, 748, 749, 750, 751, 9, 752, 753, 754, + 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, + 765, 766, 767, 768, 769, 512, 770, 771, 772, 773, + 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, + 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, + 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, + 804, 805, 806, 807, 808, 10, 809, 810, 811, 522, + 812, 523, 524, 525, 526, 527, 813, 814, 815, 816, + 817, 528, 818, 819, 11, 820, 484, 523, 524, 525, + 498, 821, 822, 823, 824, 825, 826, 528, 827, 828, + 829, 830, 831, 832, 833, 12, 834, 835, 836, 837, + 529, 530, 838, 839, 13, 542, 543, 544, 545, 546, + 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, + 850, 851, 852, 853, 854, 855, 856, 857, 14, 858, + 859, 860, 15, 861, 862, 863, 553, 864, 16, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 865, 866, 867, 868, 77, 78, 79, 869, 870, + 871, 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, 872, 873, 874, 875, 876, 877, 878, 879, + 880, 121, 122, 123, 124, 125, 881, 126, 127, 128, + 882, 883, 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, 884, 885, + 886, 155, 156, 157, 158, 159, 160, 161, 162, 887, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 888, 889, 890, 891, 892, 893, 894, 895, + 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, + 906, 907, 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, 908, 214, 909, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, + 920, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 921, 922, 923, 924, 925, 926, 927, 241, 928, + 929, 930, 931, 932, 933, 934, 242, 243, 935, 244, + 245, 936, 246, 247, 937, 938, 248, 249, 250, 251, + 252, 253, 254, 255, 939, 940, 941, 256, 942, 943, + 944, 945, 946, 947, 948, 949, 257, 258, 259, 260, + 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, + 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, + 970, 971, 972, 973, 974, 975, 976, 977, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 552, 553, 554, 555 + 0, 0, 0, 0, 0, 554, 555, 556, 557 }; static const yytype_int16 yycheck[] = { - 0, 45, 45, 45, 47, 48, 115, 45, 298, 299, - 308, 11, 12, 10, 10, 53, 54, 45, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 10, 10, 81, + 0, 45, 45, 45, 47, 48, 115, 45, 299, 300, + 309, 11, 12, 10, 10, 53, 54, 45, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 10, 10, 81, 82, 10, 10, 10, 10, 10, 46, 10, 10, 10, - 10, 10, 52, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 10, 10, 10, 108, 110, 97, 98, - 99, 100, 101, 102, 103, 104, 265, 266, 267, 268, - 269, 270, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 96, 10, 10, 142, - 10, 10, 10, 141, 10, 143, 10, 10, 10, 152, - 10, 10, 10, 10, 114, 10, 10, 10, 10, 10, + 10, 10, 52, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 10, 10, 10, 108, 110, 97, 98, + 99, 100, 101, 102, 103, 104, 266, 267, 268, 269, + 270, 271, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 96, 10, 10, 10, + 143, 10, 10, 10, 142, 10, 144, 10, 10, 10, + 153, 10, 10, 10, 114, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 186, 187, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 187, 188, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 165, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 166, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 226, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 227, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 224, 10, 10, 10, 272, 10, - 274, 275, 276, 277, 278, 10, 10, 10, 10, 10, - 284, 10, 10, 243, 10, 288, 274, 275, 276, 287, - 10, 10, 10, 10, 10, 10, 284, 10, 10, 10, - 10, 10, 10, 10, 264, 10, 10, 10, 10, 313, - 314, 10, 10, 273, 302, 303, 304, 305, 306, 10, + 10, 10, 10, 10, 10, 225, 10, 10, 10, 273, + 10, 275, 276, 277, 278, 279, 10, 10, 10, 10, + 10, 285, 10, 10, 244, 10, 289, 275, 276, 277, + 288, 10, 10, 10, 10, 10, 10, 285, 10, 10, + 10, 10, 10, 10, 10, 265, 10, 10, 10, 10, + 314, 315, 10, 10, 274, 303, 304, 305, 306, 307, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 297, 10, 10, - 10, 301, 10, 10, 10, 37, 10, 307, 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, - 10, 10, 10, 10, 49, 50, 51, 10, 10, 10, - 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, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 105, 106, 107, 108, 109, 10, 111, 112, 113, 10, - 10, 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, 10, 10, 10, 144, - 145, 146, 147, 148, 149, 150, 151, 10, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 10, 10, 10, 10, 10, 10, 10, 10, 298, 10, + 10, 10, 302, 10, 10, 10, 37, 10, 308, 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, 10, 10, 10, 10, 49, 50, 51, 10, 10, + 10, 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, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 105, 106, 107, 108, 109, 10, 111, 112, 113, + 10, 10, 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, 10, 10, + 10, 145, 146, 147, 148, 149, 150, 151, 152, 10, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 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, 10, 226, 10, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 10, 10, 10, 10, 10, 10, 10, 272, 10, + 10, 10, 10, 10, 10, 10, 280, 281, 10, 283, + 284, 10, 286, 287, 10, 10, 290, 291, 292, 293, + 294, 295, 296, 297, 10, 10, 10, 301, 10, 10, + 10, 10, 10, 10, 10, 10, 310, 311, 312, 313, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 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, 10, - 225, 10, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 10, - 10, 10, 10, 10, 10, 10, 271, 10, 10, 10, - 10, 10, 10, 10, 279, 280, 10, 282, 283, 10, - 285, 286, 10, 10, 289, 290, 291, 292, 293, 294, - 295, 296, 10, 10, 10, 300, 10, 10, 10, 10, - 10, 10, 10, 10, 309, 310, 311, 312, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, -1, -1, -1, -1, + 10, 10, 10, 10, 10, 10, 10, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 37, 37, 37, 37 + -1, -1, -1, -1, -1, 37, 37, 37, 37 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_int16 yystos[] = { - 0, 316, 0, 11, 12, 46, 52, 96, 114, 165, - 224, 243, 264, 273, 297, 301, 307, 317, 318, 319, - 322, 325, 328, 331, 339, 582, 593, 615, 619, 627, - 640, 650, 320, 323, 326, 329, 332, 340, 583, 594, - 616, 620, 628, 641, 651, 13, 14, 15, 16, 17, + 0, 317, 0, 11, 12, 46, 52, 96, 114, 166, + 225, 244, 265, 274, 298, 302, 308, 318, 319, 320, + 323, 326, 329, 332, 340, 584, 595, 617, 621, 629, + 642, 652, 321, 324, 327, 330, 333, 341, 585, 596, + 618, 622, 630, 643, 653, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 49, 50, 51, @@ -2696,18 +2028,18 @@ static const yytype_int16 yystos[] = 95, 105, 106, 107, 108, 109, 111, 112, 113, 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, 144, 145, 146, 147, 148, 149, - 150, 151, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 185, 186, 187, 188, 189, 190, + 137, 138, 139, 140, 141, 145, 146, 147, 148, 149, + 150, 151, 152, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 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, 225, 227, 228, 229, 230, 231, 232, + 221, 222, 223, 224, 226, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 271, 279, 280, 282, 283, 285, 286, 289, 290, 291, - 292, 293, 294, 295, 296, 300, 309, 310, 311, 312, - 321, 342, 343, 344, 345, 346, 347, 348, 349, 350, + 243, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 272, 280, 281, 283, 284, 286, 287, 290, 291, + 292, 293, 294, 295, 296, 297, 301, 310, 311, 312, + 313, 322, 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, @@ -2728,25 +2060,25 @@ static const yytype_int16 yystos[] = 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, - 551, 623, 624, 625, 626, 649, 45, 47, 48, 110, - 142, 152, 288, 324, 552, 553, 554, 555, 556, 557, - 558, 45, 53, 54, 141, 143, 287, 327, 559, 560, - 561, 562, 563, 564, 45, 81, 82, 108, 186, 187, - 226, 330, 575, 576, 577, 578, 579, 580, 581, 45, - 272, 274, 275, 276, 277, 278, 284, 313, 314, 333, - 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, - 302, 303, 304, 305, 306, 334, 335, 336, 337, 338, - 341, 565, 566, 567, 568, 569, 97, 98, 99, 100, - 101, 102, 103, 104, 584, 585, 586, 587, 588, 589, - 590, 591, 592, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 595, 596, 597, 598, 599, 600, 601, 602, + 551, 552, 553, 625, 626, 627, 628, 651, 45, 47, + 48, 110, 143, 153, 289, 325, 554, 555, 556, 557, + 558, 559, 560, 45, 53, 54, 142, 144, 288, 328, + 561, 562, 563, 564, 565, 566, 45, 81, 82, 108, + 187, 188, 227, 331, 577, 578, 579, 580, 581, 582, + 583, 45, 273, 275, 276, 277, 278, 279, 285, 314, + 315, 334, 567, 568, 569, 570, 571, 572, 573, 574, + 575, 576, 303, 304, 305, 306, 307, 335, 336, 337, + 338, 339, 342, 567, 568, 569, 570, 571, 97, 98, + 99, 100, 101, 102, 103, 104, 586, 587, 588, 589, + 590, 591, 592, 593, 594, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, - 613, 614, 115, 617, 618, 308, 621, 622, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 629, 630, - 631, 632, 633, 634, 635, 636, 637, 638, 639, 265, - 266, 267, 268, 269, 270, 642, 643, 644, 645, 646, - 647, 648, 298, 299, 652, 653, 654, 10, 10, 10, + 613, 614, 615, 616, 115, 619, 620, 309, 623, 624, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, + 641, 266, 267, 268, 269, 270, 271, 644, 645, 646, + 647, 648, 649, 650, 299, 300, 654, 655, 656, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -2778,42 +2110,42 @@ static const yytype_int16 yystos[] = 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10 + 10, 10, 10, 10, 10, 10, 10, 10 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_int16 yyr1[] = { - 0, 315, 316, 316, 317, 317, 317, 317, 317, 317, - 317, 317, 317, 317, 317, 317, 317, 317, 318, 319, - 320, 320, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 322, 323, 323, - 324, 324, 324, 324, 324, 324, 324, 325, 326, 326, - 327, 327, 327, 327, 327, 327, 328, 329, 329, 330, - 330, 330, 330, 330, 330, 330, 331, 332, 332, 333, - 333, 333, 333, 333, 333, 333, 333, 333, 333, 334, - 335, 336, 337, 338, 339, 340, 340, 341, 341, 341, - 341, 341, 341, 341, 341, 341, 341, 342, 343, 344, + 0, 316, 317, 317, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 319, 320, + 321, 321, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 323, 324, + 324, 325, 325, 325, 325, 325, 325, 325, 326, 327, + 327, 328, 328, 328, 328, 328, 328, 329, 330, 330, + 331, 331, 331, 331, 331, 331, 331, 332, 333, 333, + 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, + 335, 336, 337, 338, 339, 340, 341, 341, 342, 342, + 342, 342, 342, 342, 342, 342, 342, 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, @@ -2837,19 +2169,19 @@ static const yytype_int16 yyr1[] = 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, - 575, 576, 577, 578, 579, 580, 581, 582, 583, 583, - 584, 584, 584, 584, 584, 584, 584, 584, 585, 586, - 587, 588, 589, 590, 591, 592, 593, 594, 594, 595, - 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, - 595, 595, 595, 595, 595, 595, 595, 595, 596, 597, + 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, + 585, 585, 586, 586, 586, 586, 586, 586, 586, 586, + 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, + 596, 597, 597, 597, 597, 597, 597, 597, 597, 597, + 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, - 608, 609, 610, 611, 612, 613, 614, 615, 616, 616, - 617, 618, 619, 620, 620, 621, 622, 623, 624, 625, - 626, 627, 628, 628, 629, 629, 629, 629, 629, 629, - 629, 629, 629, 629, 630, 631, 632, 633, 634, 635, - 636, 637, 638, 639, 640, 641, 641, 642, 642, 642, - 642, 642, 642, 643, 644, 645, 646, 647, 648, 649, - 650, 651, 651, 652, 652, 653, 654 + 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, + 618, 618, 619, 620, 621, 622, 622, 623, 624, 625, + 626, 627, 628, 629, 630, 630, 631, 631, 631, 631, + 631, 631, 631, 631, 631, 631, 632, 633, 634, 635, + 636, 637, 638, 639, 640, 641, 642, 643, 643, 644, + 644, 644, 644, 644, 644, 645, 646, 647, 648, 649, + 650, 651, 652, 653, 653, 654, 654, 655, 656 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -2878,13 +2210,13 @@ static const yytype_int8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 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, 1, 1, 2, - 2, 2, 2, 2, 1, 2, 0, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 2, 2, 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, 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, @@ -2898,29 +2230,29 @@ static const yytype_int8 yyr2[] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 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, 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, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 3, 3, 3, 2, 2, 2, 1, 2, 0, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, + 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, 3, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 3, 3, 3, 2, 2, 2, 1, + 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, + 0, 1, 1, 1, 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, 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 + 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 }; @@ -3132,7 +2464,7 @@ yydestruct (const char *yymsg, } -/* The lookahead symbol. */ +/* Lookahead token kind. */ int yychar; /* The semantic value of the lookahead symbol. */ @@ -3150,34 +2482,30 @@ int yynerrs; int yyparse (void) { - yy_state_fast_t yystate; + yy_state_fast_t yystate = 0; /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; + int yyerrstatus = 0; - /* The stacks and their tools: - 'yyss': related to states. - 'yyvs': related to semantic values. - - Refer to the stacks through separate pointers, to allow yyoverflow + /* Refer to the stacks through separate pointers, to allow yyoverflow to reallocate them elsewhere. */ /* Their size. */ - YYPTRDIFF_T yystacksize; + YYPTRDIFF_T yystacksize = YYINITDEPTH; - /* The state stack. */ + /* The state stack: array, bottom, top. */ yy_state_t yyssa[YYINITDEPTH]; - yy_state_t *yyss; - yy_state_t *yyssp; + yy_state_t *yyss = yyssa; + yy_state_t *yyssp = yyss; - /* The semantic value stack. */ + /* The semantic value stack: array, bottom, top. */ YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs; - YYSTYPE *yyvsp; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp = yyvs; int yyn; /* The return value of yyparse. */ int yyresult; - /* Lookahead token as an internal (translated) token number. */ + /* Lookahead symbol kind. */ yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY; /* The variables used to return semantic value and location from the action routines. */ @@ -3191,15 +2519,6 @@ yyparse (void) Keep to zero when no symbol should be popped. */ int yylen = 0; - yynerrs = 0; - yystate = 0; - yyerrstatus = 0; - - yystacksize = YYINITDEPTH; - yyssp = yyss = yyssa; - yyvsp = yyvs = yyvsa; - - YYDPRINTF ((stderr, "Starting parse\n")); yychar = YYEMPTY; /* Cause a token to be read. */ @@ -3400,24 +2719,24 @@ yyreduce: YY_REDUCE_PRINT (yyn); switch (yyn) { - case 18: -#line 198 "./util/configparser.y" + case 18: /* force_toplevel: VAR_FORCE_TOPLEVEL */ +#line 199 "./util/configparser.y" { OUTYY(("\nP(force-toplevel)\n")); } -#line 3409 "util/configparser.c" +#line 2728 "util/configparser.c" break; - case 19: -#line 204 "./util/configparser.y" + case 19: /* serverstart: VAR_SERVER */ +#line 205 "./util/configparser.y" { OUTYY(("\nP(server:)\n")); } -#line 3417 "util/configparser.c" +#line 2736 "util/configparser.c" break; - case 237: -#line 309 "./util/configparser.y" + case 238: /* stubstart: VAR_STUB_ZONE */ +#line 311 "./util/configparser.y" { struct config_stub* s; OUTYY(("\nP(stub_zone:)\n")); @@ -3428,11 +2747,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 3432 "util/configparser.c" +#line 2751 "util/configparser.c" break; - case 247: -#line 326 "./util/configparser.y" + case 248: /* forwardstart: VAR_FORWARD_ZONE */ +#line 328 "./util/configparser.y" { struct config_stub* s; OUTYY(("\nP(forward_zone:)\n")); @@ -3443,11 +2762,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 3447 "util/configparser.c" +#line 2766 "util/configparser.c" break; - case 256: -#line 343 "./util/configparser.y" + case 257: /* viewstart: VAR_VIEW */ +#line 345 "./util/configparser.y" { struct config_view* s; OUTYY(("\nP(view:)\n")); @@ -3460,11 +2779,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 3464 "util/configparser.c" +#line 2783 "util/configparser.c" break; - case 266: -#line 362 "./util/configparser.y" + case 267: /* authstart: VAR_AUTH_ZONE */ +#line 364 "./util/configparser.y" { struct config_auth* s; OUTYY(("\nP(auth_zone:)\n")); @@ -3482,11 +2801,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 3486 "util/configparser.c" +#line 2805 "util/configparser.c" break; - case 279: -#line 388 "./util/configparser.y" + case 280: /* rpz_tag: VAR_TAGS STRING_ARG */ +#line 390 "./util/configparser.y" { uint8_t* bitlist; size_t len = 0; @@ -3503,11 +2822,11 @@ yyreduce: } } -#line 3507 "util/configparser.c" +#line 2826 "util/configparser.c" break; - case 280: -#line 407 "./util/configparser.y" + case 281: /* rpz_action_override: VAR_RPZ_ACTION_OVERRIDE STRING_ARG */ +#line 409 "./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 && @@ -3522,21 +2841,21 @@ yyreduce: cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); } } -#line 3526 "util/configparser.c" +#line 2845 "util/configparser.c" break; - case 281: -#line 424 "./util/configparser.y" + case 282: /* rpz_cname_override: VAR_RPZ_CNAME_OVERRIDE STRING_ARG */ +#line 426 "./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 3536 "util/configparser.c" +#line 2855 "util/configparser.c" break; - case 282: -#line 432 "./util/configparser.y" + case 283: /* rpz_log: VAR_RPZ_LOG STRING_ARG */ +#line 434 "./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) @@ -3544,21 +2863,21 @@ yyreduce: else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3548 "util/configparser.c" +#line 2867 "util/configparser.c" break; - case 283: -#line 442 "./util/configparser.y" + case 284: /* rpz_log_name: VAR_RPZ_LOG_NAME STRING_ARG */ +#line 444 "./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 3558 "util/configparser.c" +#line 2877 "util/configparser.c" break; - case 284: -#line 450 "./util/configparser.y" + case 285: /* rpzstart: VAR_RPZ */ +#line 452 "./util/configparser.y" { struct config_auth* s; OUTYY(("\nP(rpz:)\n")); @@ -3574,11 +2893,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 3578 "util/configparser.c" +#line 2897 "util/configparser.c" break; - case 297: -#line 473 "./util/configparser.y" + case 298: /* server_num_threads: VAR_NUM_THREADS STRING_ARG */ +#line 475 "./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) @@ -3586,11 +2905,11 @@ yyreduce: else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3590 "util/configparser.c" +#line 2909 "util/configparser.c" break; - case 298: -#line 482 "./util/configparser.y" + case 299: /* server_verbosity: VAR_VERBOSITY STRING_ARG */ +#line 484 "./util/configparser.y" { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3598,11 +2917,11 @@ yyreduce: else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3602 "util/configparser.c" +#line 2921 "util/configparser.c" break; - case 299: -#line 491 "./util/configparser.y" + case 300: /* server_statistics_interval: VAR_STATISTICS_INTERVAL STRING_ARG */ +#line 493 "./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) @@ -3612,11 +2931,11 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3616 "util/configparser.c" +#line 2935 "util/configparser.c" break; - case 300: -#line 502 "./util/configparser.y" + case 301: /* server_statistics_cumulative: VAR_STATISTICS_CUMULATIVE STRING_ARG */ +#line 504 "./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) @@ -3624,11 +2943,11 @@ yyreduce: else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3628 "util/configparser.c" +#line 2947 "util/configparser.c" break; - case 301: -#line 511 "./util/configparser.y" + case 302: /* server_extended_statistics: VAR_EXTENDED_STATISTICS STRING_ARG */ +#line 513 "./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) @@ -3636,11 +2955,11 @@ yyreduce: else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3640 "util/configparser.c" +#line 2959 "util/configparser.c" break; - case 302: -#line 520 "./util/configparser.y" + case 303: /* server_shm_enable: VAR_SHM_ENABLE STRING_ARG */ +#line 522 "./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) @@ -3648,11 +2967,11 @@ yyreduce: else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3652 "util/configparser.c" +#line 2971 "util/configparser.c" break; - case 303: -#line 529 "./util/configparser.y" + case 304: /* server_shm_key: VAR_SHM_KEY STRING_ARG */ +#line 531 "./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) @@ -3662,11 +2981,11 @@ yyreduce: else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3666 "util/configparser.c" +#line 2985 "util/configparser.c" break; - case 304: -#line 540 "./util/configparser.y" + case 305: /* server_port: VAR_PORT STRING_ARG */ +#line 542 "./util/configparser.y" { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3674,11 +2993,11 @@ yyreduce: else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3678 "util/configparser.c" +#line 2997 "util/configparser.c" break; - case 305: -#line 549 "./util/configparser.y" + case 306: /* server_send_client_subnet: VAR_SEND_CLIENT_SUBNET STRING_ARG */ +#line 551 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str))); @@ -3689,11 +3008,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3693 "util/configparser.c" +#line 3012 "util/configparser.c" break; - case 306: -#line 561 "./util/configparser.y" + case 307: /* server_client_subnet_zone: VAR_CLIENT_SUBNET_ZONE STRING_ARG */ +#line 563 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str))); @@ -3705,11 +3024,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3709 "util/configparser.c" +#line 3028 "util/configparser.c" break; - case 307: -#line 575 "./util/configparser.y" + case 308: /* server_client_subnet_always_forward: VAR_CLIENT_SUBNET_ALWAYS_FORWARD STRING_ARG */ +#line 577 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str))); @@ -3723,11 +3042,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3727 "util/configparser.c" +#line 3046 "util/configparser.c" break; - case 308: -#line 590 "./util/configparser.y" + case 309: /* server_client_subnet_opcode: VAR_CLIENT_SUBNET_OPCODE STRING_ARG */ +#line 592 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str))); @@ -3737,11 +3056,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3741 "util/configparser.c" +#line 3060 "util/configparser.c" break; - case 309: -#line 601 "./util/configparser.y" + case 310: /* server_max_client_subnet_ipv4: VAR_MAX_CLIENT_SUBNET_IPV4 STRING_ARG */ +#line 603 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -3757,11 +3076,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3761 "util/configparser.c" +#line 3080 "util/configparser.c" break; - case 310: -#line 618 "./util/configparser.y" + case 311: /* server_max_client_subnet_ipv6: VAR_MAX_CLIENT_SUBNET_IPV6 STRING_ARG */ +#line 620 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3777,11 +3096,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3781 "util/configparser.c" +#line 3100 "util/configparser.c" break; - case 311: -#line 635 "./util/configparser.y" + case 312: /* server_min_client_subnet_ipv4: VAR_MIN_CLIENT_SUBNET_IPV4 STRING_ARG */ +#line 637 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -3797,11 +3116,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3801 "util/configparser.c" +#line 3120 "util/configparser.c" break; - case 312: -#line 652 "./util/configparser.y" + case 313: /* server_min_client_subnet_ipv6: VAR_MIN_CLIENT_SUBNET_IPV6 STRING_ARG */ +#line 654 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3817,11 +3136,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3821 "util/configparser.c" +#line 3140 "util/configparser.c" break; - case 313: -#line 669 "./util/configparser.y" + case 314: /* server_max_ecs_tree_size_ipv4: VAR_MAX_ECS_TREE_SIZE_IPV4 STRING_ARG */ +#line 671 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str))); @@ -3835,11 +3154,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3839 "util/configparser.c" +#line 3158 "util/configparser.c" break; - case 314: -#line 684 "./util/configparser.y" + case 315: /* server_max_ecs_tree_size_ipv6: VAR_MAX_ECS_TREE_SIZE_IPV6 STRING_ARG */ +#line 686 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str))); @@ -3853,11 +3172,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3857 "util/configparser.c" +#line 3176 "util/configparser.c" break; - case 315: -#line 699 "./util/configparser.y" + case 316: /* server_interface: VAR_INTERFACE STRING_ARG */ +#line 701 "./util/configparser.y" { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_ifs == 0) @@ -3869,11 +3188,11 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 3873 "util/configparser.c" +#line 3192 "util/configparser.c" break; - case 316: -#line 712 "./util/configparser.y" + case 317: /* server_outgoing_interface: VAR_OUTGOING_INTERFACE STRING_ARG */ +#line 714 "./util/configparser.y" { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_out_ifs == 0) @@ -3887,11 +3206,11 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 3891 "util/configparser.c" +#line 3210 "util/configparser.c" break; - case 317: -#line 727 "./util/configparser.y" + case 318: /* server_outgoing_range: VAR_OUTGOING_RANGE STRING_ARG */ +#line 729 "./util/configparser.y" { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3899,11 +3218,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3903 "util/configparser.c" +#line 3222 "util/configparser.c" break; - case 318: -#line 736 "./util/configparser.y" + case 319: /* server_outgoing_port_permit: VAR_OUTGOING_PORT_PERMIT STRING_ARG */ +#line 738 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 1, @@ -3911,11 +3230,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3915 "util/configparser.c" +#line 3234 "util/configparser.c" break; - case 319: -#line 745 "./util/configparser.y" + case 320: /* server_outgoing_port_avoid: VAR_OUTGOING_PORT_AVOID STRING_ARG */ +#line 747 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 0, @@ -3923,11 +3242,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3927 "util/configparser.c" +#line 3246 "util/configparser.c" break; - case 320: -#line 754 "./util/configparser.y" + case 321: /* server_outgoing_num_tcp: VAR_OUTGOING_NUM_TCP STRING_ARG */ +#line 756 "./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) @@ -3935,11 +3254,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3939 "util/configparser.c" +#line 3258 "util/configparser.c" break; - case 321: -#line 763 "./util/configparser.y" + case 322: /* server_incoming_num_tcp: VAR_INCOMING_NUM_TCP STRING_ARG */ +#line 765 "./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) @@ -3947,11 +3266,11 @@ yyreduce: else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3951 "util/configparser.c" +#line 3270 "util/configparser.c" break; - case 322: -#line 772 "./util/configparser.y" + case 323: /* server_interface_automatic: VAR_INTERFACE_AUTOMATIC STRING_ARG */ +#line 774 "./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) @@ -3959,11 +3278,11 @@ yyreduce: else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3963 "util/configparser.c" +#line 3282 "util/configparser.c" break; - case 323: -#line 781 "./util/configparser.y" + case 324: /* server_do_ip4: VAR_DO_IP4 STRING_ARG */ +#line 783 "./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) @@ -3971,11 +3290,11 @@ yyreduce: else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3975 "util/configparser.c" +#line 3294 "util/configparser.c" break; - case 324: -#line 790 "./util/configparser.y" + case 325: /* server_do_ip6: VAR_DO_IP6 STRING_ARG */ +#line 792 "./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) @@ -3983,11 +3302,11 @@ yyreduce: else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3987 "util/configparser.c" +#line 3306 "util/configparser.c" break; - case 325: -#line 799 "./util/configparser.y" + case 326: /* server_do_udp: VAR_DO_UDP STRING_ARG */ +#line 801 "./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) @@ -3995,11 +3314,11 @@ yyreduce: else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3999 "util/configparser.c" +#line 3318 "util/configparser.c" break; - case 326: -#line 808 "./util/configparser.y" + case 327: /* server_do_tcp: VAR_DO_TCP STRING_ARG */ +#line 810 "./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) @@ -4007,11 +3326,11 @@ yyreduce: else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4011 "util/configparser.c" +#line 3330 "util/configparser.c" break; - case 327: -#line 817 "./util/configparser.y" + case 328: /* server_prefer_ip4: VAR_PREFER_IP4 STRING_ARG */ +#line 819 "./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) @@ -4019,11 +3338,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4023 "util/configparser.c" +#line 3342 "util/configparser.c" break; - case 328: -#line 826 "./util/configparser.y" + case 329: /* server_prefer_ip6: VAR_PREFER_IP6 STRING_ARG */ +#line 828 "./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) @@ -4031,11 +3350,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4035 "util/configparser.c" +#line 3354 "util/configparser.c" break; - case 329: -#line 835 "./util/configparser.y" + case 330: /* server_tcp_mss: VAR_TCP_MSS STRING_ARG */ +#line 837 "./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) @@ -4043,11 +3362,11 @@ yyreduce: else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4047 "util/configparser.c" +#line 3366 "util/configparser.c" break; - case 330: -#line 844 "./util/configparser.y" + case 331: /* server_outgoing_tcp_mss: VAR_OUTGOING_TCP_MSS STRING_ARG */ +#line 846 "./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) @@ -4055,11 +3374,11 @@ yyreduce: else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4059 "util/configparser.c" +#line 3378 "util/configparser.c" break; - case 331: -#line 853 "./util/configparser.y" + case 332: /* server_tcp_idle_timeout: VAR_TCP_IDLE_TIMEOUT STRING_ARG */ +#line 855 "./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) @@ -4071,11 +3390,11 @@ yyreduce: else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4075 "util/configparser.c" +#line 3394 "util/configparser.c" break; - case 332: -#line 866 "./util/configparser.y" + case 333: /* server_max_reuse_tcp_queries: VAR_MAX_REUSE_TCP_QUERIES STRING_ARG */ +#line 868 "./util/configparser.y" { OUTYY(("P(server_max_reuse_tcp_queries:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4085,11 +3404,11 @@ yyreduce: else cfg_parser->cfg->max_reuse_tcp_queries = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4089 "util/configparser.c" +#line 3408 "util/configparser.c" break; - case 333: -#line 877 "./util/configparser.y" + case 334: /* server_tcp_reuse_timeout: VAR_TCP_REUSE_TIMEOUT STRING_ARG */ +#line 879 "./util/configparser.y" { OUTYY(("P(server_tcp_reuse_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4099,11 +3418,11 @@ yyreduce: else cfg_parser->cfg->tcp_reuse_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4103 "util/configparser.c" +#line 3422 "util/configparser.c" break; - case 334: -#line 888 "./util/configparser.y" + case 335: /* server_tcp_auth_query_timeout: VAR_TCP_AUTH_QUERY_TIMEOUT STRING_ARG */ +#line 890 "./util/configparser.y" { OUTYY(("P(server_tcp_auth_query_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4113,11 +3432,11 @@ yyreduce: else cfg_parser->cfg->tcp_auth_query_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4117 "util/configparser.c" +#line 3436 "util/configparser.c" break; - case 335: -#line 899 "./util/configparser.y" + case 336: /* server_tcp_keepalive: VAR_EDNS_TCP_KEEPALIVE STRING_ARG */ +#line 901 "./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) @@ -4125,11 +3444,11 @@ yyreduce: else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4129 "util/configparser.c" +#line 3448 "util/configparser.c" break; - case 336: -#line 908 "./util/configparser.y" + case 337: /* server_tcp_keepalive_timeout: VAR_EDNS_TCP_KEEPALIVE_TIMEOUT STRING_ARG */ +#line 910 "./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) @@ -4141,11 +3460,11 @@ yyreduce: else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4145 "util/configparser.c" +#line 3464 "util/configparser.c" break; - case 337: -#line 921 "./util/configparser.y" + case 338: /* server_tcp_upstream: VAR_TCP_UPSTREAM STRING_ARG */ +#line 923 "./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) @@ -4153,11 +3472,11 @@ yyreduce: else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4157 "util/configparser.c" +#line 3476 "util/configparser.c" break; - case 338: -#line 930 "./util/configparser.y" + case 339: /* server_udp_upstream_without_downstream: VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM STRING_ARG */ +#line 932 "./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) @@ -4165,11 +3484,11 @@ yyreduce: else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4169 "util/configparser.c" +#line 3488 "util/configparser.c" break; - case 339: -#line 939 "./util/configparser.y" + case 340: /* server_ssl_upstream: VAR_SSL_UPSTREAM STRING_ARG */ +#line 941 "./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) @@ -4177,31 +3496,31 @@ yyreduce: else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4181 "util/configparser.c" +#line 3500 "util/configparser.c" break; - case 340: -#line 948 "./util/configparser.y" + case 341: /* server_ssl_service_key: VAR_SSL_SERVICE_KEY STRING_ARG */ +#line 950 "./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 4191 "util/configparser.c" +#line 3510 "util/configparser.c" break; - case 341: -#line 955 "./util/configparser.y" + case 342: /* server_ssl_service_pem: VAR_SSL_SERVICE_PEM STRING_ARG */ +#line 957 "./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 4201 "util/configparser.c" +#line 3520 "util/configparser.c" break; - case 342: -#line 962 "./util/configparser.y" + case 343: /* server_ssl_port: VAR_SSL_PORT STRING_ARG */ +#line 964 "./util/configparser.y" { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4209,21 +3528,21 @@ yyreduce: else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4213 "util/configparser.c" +#line 3532 "util/configparser.c" break; - case 343: -#line 971 "./util/configparser.y" + case 344: /* server_tls_cert_bundle: VAR_TLS_CERT_BUNDLE STRING_ARG */ +#line 973 "./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 4223 "util/configparser.c" +#line 3542 "util/configparser.c" break; - case 344: -#line 978 "./util/configparser.y" + case 345: /* server_tls_win_cert: VAR_TLS_WIN_CERT STRING_ARG */ +#line 980 "./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) @@ -4231,53 +3550,53 @@ yyreduce: else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4235 "util/configparser.c" +#line 3554 "util/configparser.c" break; - case 345: -#line 987 "./util/configparser.y" + case 346: /* server_tls_additional_port: VAR_TLS_ADDITIONAL_PORT STRING_ARG */ +#line 989 "./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 4246 "util/configparser.c" +#line 3565 "util/configparser.c" break; - case 346: -#line 995 "./util/configparser.y" + case 347: /* server_tls_ciphers: VAR_TLS_CIPHERS STRING_ARG */ +#line 997 "./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 4256 "util/configparser.c" +#line 3575 "util/configparser.c" break; - case 347: -#line 1002 "./util/configparser.y" + case 348: /* server_tls_ciphersuites: VAR_TLS_CIPHERSUITES STRING_ARG */ +#line 1004 "./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 4266 "util/configparser.c" +#line 3585 "util/configparser.c" break; - case 348: -#line 1009 "./util/configparser.y" + case 349: /* server_tls_session_ticket_keys: VAR_TLS_SESSION_TICKET_KEYS STRING_ARG */ +#line 1011 "./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 4277 "util/configparser.c" +#line 3596 "util/configparser.c" break; - case 349: -#line 1017 "./util/configparser.y" + case 350: /* server_tls_use_sni: VAR_TLS_USE_SNI STRING_ARG */ +#line 1019 "./util/configparser.y" { OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4285,11 +3604,11 @@ yyreduce: else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4289 "util/configparser.c" +#line 3608 "util/configparser.c" break; - case 350: -#line 1026 "./util/configparser.y" + case 351: /* server_https_port: VAR_HTTPS_PORT STRING_ARG */ +#line 1028 "./util/configparser.y" { OUTYY(("P(server_https_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4297,11 +3616,11 @@ yyreduce: else cfg_parser->cfg->https_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4301 "util/configparser.c" +#line 3620 "util/configparser.c" break; - case 351: -#line 1034 "./util/configparser.y" + case 352: /* server_http_endpoint: VAR_HTTP_ENDPOINT STRING_ARG */ +#line 1036 "./util/configparser.y" { OUTYY(("P(server_http_endpoint:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->http_endpoint); @@ -4317,11 +3636,11 @@ yyreduce: cfg_parser->cfg->http_endpoint = (yyvsp[0].str); } } -#line 4321 "util/configparser.c" +#line 3640 "util/configparser.c" break; - case 352: -#line 1050 "./util/configparser.y" + case 353: /* server_http_max_streams: VAR_HTTP_MAX_STREAMS STRING_ARG */ +#line 1052 "./util/configparser.y" { OUTYY(("P(server_http_max_streams:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4329,11 +3648,11 @@ yyreduce: else cfg_parser->cfg->http_max_streams = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4333 "util/configparser.c" +#line 3652 "util/configparser.c" break; - case 353: -#line 1058 "./util/configparser.y" + case 354: /* server_http_query_buffer_size: VAR_HTTP_QUERY_BUFFER_SIZE STRING_ARG */ +#line 1060 "./util/configparser.y" { OUTYY(("P(server_http_query_buffer_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), @@ -4341,11 +3660,11 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4345 "util/configparser.c" +#line 3664 "util/configparser.c" break; - case 354: -#line 1066 "./util/configparser.y" + case 355: /* server_http_response_buffer_size: VAR_HTTP_RESPONSE_BUFFER_SIZE STRING_ARG */ +#line 1068 "./util/configparser.y" { OUTYY(("P(server_http_response_buffer_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), @@ -4353,11 +3672,11 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4357 "util/configparser.c" +#line 3676 "util/configparser.c" break; - case 355: -#line 1074 "./util/configparser.y" + case 356: /* server_http_nodelay: VAR_HTTP_NODELAY STRING_ARG */ +#line 1076 "./util/configparser.y" { OUTYY(("P(server_http_nodelay:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4365,11 +3684,11 @@ yyreduce: else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4369 "util/configparser.c" +#line 3688 "util/configparser.c" break; - case 356: -#line 1082 "./util/configparser.y" + case 357: /* server_http_notls_downstream: VAR_HTTP_NOTLS_DOWNSTREAM STRING_ARG */ +#line 1084 "./util/configparser.y" { OUTYY(("P(server_http_notls_downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4377,11 +3696,11 @@ yyreduce: else cfg_parser->cfg->http_notls_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4381 "util/configparser.c" +#line 3700 "util/configparser.c" break; - case 357: -#line 1090 "./util/configparser.y" + case 358: /* server_use_systemd: VAR_USE_SYSTEMD STRING_ARG */ +#line 1092 "./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) @@ -4389,11 +3708,11 @@ yyreduce: else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4393 "util/configparser.c" +#line 3712 "util/configparser.c" break; - case 358: -#line 1099 "./util/configparser.y" + case 359: /* server_do_daemonize: VAR_DO_DAEMONIZE STRING_ARG */ +#line 1101 "./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) @@ -4401,11 +3720,11 @@ yyreduce: else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4405 "util/configparser.c" +#line 3724 "util/configparser.c" break; - case 359: -#line 1108 "./util/configparser.y" + case 360: /* server_use_syslog: VAR_USE_SYSLOG STRING_ARG */ +#line 1110 "./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) @@ -4418,11 +3737,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4422 "util/configparser.c" +#line 3741 "util/configparser.c" break; - case 360: -#line 1122 "./util/configparser.y" + case 361: /* server_log_time_ascii: VAR_LOG_TIME_ASCII STRING_ARG */ +#line 1124 "./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) @@ -4430,11 +3749,11 @@ yyreduce: else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4434 "util/configparser.c" +#line 3753 "util/configparser.c" break; - case 361: -#line 1131 "./util/configparser.y" + case 362: /* server_log_queries: VAR_LOG_QUERIES STRING_ARG */ +#line 1133 "./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) @@ -4442,11 +3761,11 @@ yyreduce: else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4446 "util/configparser.c" +#line 3765 "util/configparser.c" break; - case 362: -#line 1140 "./util/configparser.y" + case 363: /* server_log_replies: VAR_LOG_REPLIES STRING_ARG */ +#line 1142 "./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) @@ -4454,11 +3773,11 @@ yyreduce: else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4458 "util/configparser.c" +#line 3777 "util/configparser.c" break; - case 363: -#line 1149 "./util/configparser.y" + case 364: /* server_log_tag_queryreply: VAR_LOG_TAG_QUERYREPLY STRING_ARG */ +#line 1151 "./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) @@ -4466,11 +3785,11 @@ yyreduce: else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4470 "util/configparser.c" +#line 3789 "util/configparser.c" break; - case 364: -#line 1158 "./util/configparser.y" + case 365: /* server_log_servfail: VAR_LOG_SERVFAIL STRING_ARG */ +#line 1160 "./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) @@ -4478,11 +3797,11 @@ yyreduce: else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4482 "util/configparser.c" +#line 3801 "util/configparser.c" break; - case 365: -#line 1167 "./util/configparser.y" + case 366: /* server_log_local_actions: VAR_LOG_LOCAL_ACTIONS STRING_ARG */ +#line 1169 "./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) @@ -4490,31 +3809,31 @@ yyreduce: else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4494 "util/configparser.c" +#line 3813 "util/configparser.c" break; - case 366: -#line 1176 "./util/configparser.y" + case 367: /* server_chroot: VAR_CHROOT STRING_ARG */ +#line 1178 "./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 4504 "util/configparser.c" +#line 3823 "util/configparser.c" break; - case 367: -#line 1183 "./util/configparser.y" + case 368: /* server_username: VAR_USERNAME STRING_ARG */ +#line 1185 "./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 4514 "util/configparser.c" +#line 3833 "util/configparser.c" break; - case 368: -#line 1190 "./util/configparser.y" + case 369: /* server_directory: VAR_DIRECTORY STRING_ARG */ +#line 1192 "./util/configparser.y" { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->directory); @@ -4539,105 +3858,105 @@ yyreduce: } } } -#line 4543 "util/configparser.c" +#line 3862 "util/configparser.c" break; - case 369: -#line 1216 "./util/configparser.y" + case 370: /* server_logfile: VAR_LOGFILE STRING_ARG */ +#line 1218 "./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 4554 "util/configparser.c" +#line 3873 "util/configparser.c" break; - case 370: -#line 1224 "./util/configparser.y" + case 371: /* server_pidfile: VAR_PIDFILE STRING_ARG */ +#line 1226 "./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 4564 "util/configparser.c" +#line 3883 "util/configparser.c" break; - case 371: -#line 1231 "./util/configparser.y" + case 372: /* server_root_hints: VAR_ROOT_HINTS STRING_ARG */ +#line 1233 "./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 4574 "util/configparser.c" +#line 3893 "util/configparser.c" break; - case 372: -#line 1238 "./util/configparser.y" + case 373: /* server_dlv_anchor_file: VAR_DLV_ANCHOR_FILE STRING_ARG */ +#line 1240 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str))); log_warn("option dlv-anchor-file ignored: DLV is decommissioned"); free((yyvsp[0].str)); } -#line 4584 "util/configparser.c" +#line 3903 "util/configparser.c" break; - case 373: -#line 1245 "./util/configparser.y" + case 374: /* server_dlv_anchor: VAR_DLV_ANCHOR STRING_ARG */ +#line 1247 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str))); log_warn("option dlv-anchor ignored: DLV is decommissioned"); free((yyvsp[0].str)); } -#line 4594 "util/configparser.c" +#line 3913 "util/configparser.c" break; - case 374: -#line 1252 "./util/configparser.y" + case 375: /* server_auto_trust_anchor_file: VAR_AUTO_TRUST_ANCHOR_FILE STRING_ARG */ +#line 1254 "./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 4605 "util/configparser.c" +#line 3924 "util/configparser.c" break; - case 375: -#line 1260 "./util/configparser.y" + case 376: /* server_trust_anchor_file: VAR_TRUST_ANCHOR_FILE STRING_ARG */ +#line 1262 "./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 4616 "util/configparser.c" +#line 3935 "util/configparser.c" break; - case 376: -#line 1268 "./util/configparser.y" + case 377: /* server_trusted_keys_file: VAR_TRUSTED_KEYS_FILE STRING_ARG */ +#line 1270 "./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 4627 "util/configparser.c" +#line 3946 "util/configparser.c" break; - case 377: -#line 1276 "./util/configparser.y" + case 378: /* server_trust_anchor: VAR_TRUST_ANCHOR STRING_ARG */ +#line 1278 "./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 4637 "util/configparser.c" +#line 3956 "util/configparser.c" break; - case 378: -#line 1283 "./util/configparser.y" + case 379: /* server_trust_anchor_signaling: VAR_TRUST_ANCHOR_SIGNALING STRING_ARG */ +#line 1285 "./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) @@ -4647,11 +3966,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4651 "util/configparser.c" +#line 3970 "util/configparser.c" break; - case 379: -#line 1294 "./util/configparser.y" + case 380: /* server_root_key_sentinel: VAR_ROOT_KEY_SENTINEL STRING_ARG */ +#line 1296 "./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) @@ -4661,21 +3980,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4665 "util/configparser.c" +#line 3984 "util/configparser.c" break; - case 380: -#line 1305 "./util/configparser.y" + case 381: /* server_domain_insecure: VAR_DOMAIN_INSECURE STRING_ARG */ +#line 1307 "./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 4675 "util/configparser.c" +#line 3994 "util/configparser.c" break; - case 381: -#line 1312 "./util/configparser.y" + case 382: /* server_hide_identity: VAR_HIDE_IDENTITY STRING_ARG */ +#line 1314 "./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) @@ -4683,11 +4002,11 @@ yyreduce: else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4687 "util/configparser.c" +#line 4006 "util/configparser.c" break; - case 382: -#line 1321 "./util/configparser.y" + case 383: /* server_hide_version: VAR_HIDE_VERSION STRING_ARG */ +#line 1323 "./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) @@ -4695,11 +4014,11 @@ yyreduce: else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4699 "util/configparser.c" +#line 4018 "util/configparser.c" break; - case 383: -#line 1330 "./util/configparser.y" + case 384: /* server_hide_trustanchor: VAR_HIDE_TRUSTANCHOR STRING_ARG */ +#line 1332 "./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) @@ -4707,31 +4026,31 @@ yyreduce: else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4711 "util/configparser.c" +#line 4030 "util/configparser.c" break; - case 384: -#line 1339 "./util/configparser.y" + case 385: /* server_identity: VAR_IDENTITY STRING_ARG */ +#line 1341 "./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 4721 "util/configparser.c" +#line 4040 "util/configparser.c" break; - case 385: -#line 1346 "./util/configparser.y" + case 386: /* server_version: VAR_VERSION STRING_ARG */ +#line 1348 "./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 4731 "util/configparser.c" +#line 4050 "util/configparser.c" break; - case 386: -#line 1353 "./util/configparser.y" + case 387: /* server_nsid: VAR_NSID STRING_ARG */ +#line 1355 "./util/configparser.y" { OUTYY(("P(server_nsid:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->nsid_cfg_str); @@ -4746,33 +4065,33 @@ yyreduce: yyerror("the NSID must be either a hex string or an " "ascii character string prepended with ascii_."); } -#line 4750 "util/configparser.c" +#line 4069 "util/configparser.c" break; - case 387: -#line 1369 "./util/configparser.y" + case 388: /* server_so_rcvbuf: VAR_SO_RCVBUF STRING_ARG */ +#line 1371 "./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 4761 "util/configparser.c" +#line 4080 "util/configparser.c" break; - case 388: -#line 1377 "./util/configparser.y" + case 389: /* server_so_sndbuf: VAR_SO_SNDBUF STRING_ARG */ +#line 1379 "./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 4772 "util/configparser.c" +#line 4091 "util/configparser.c" break; - case 389: -#line 1385 "./util/configparser.y" + case 390: /* server_so_reuseport: VAR_SO_REUSEPORT STRING_ARG */ +#line 1387 "./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) @@ -4781,11 +4100,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4785 "util/configparser.c" +#line 4104 "util/configparser.c" break; - case 390: -#line 1395 "./util/configparser.y" + case 391: /* server_ip_transparent: VAR_IP_TRANSPARENT STRING_ARG */ +#line 1397 "./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) @@ -4794,11 +4113,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4798 "util/configparser.c" +#line 4117 "util/configparser.c" break; - case 391: -#line 1405 "./util/configparser.y" + case 392: /* server_ip_freebind: VAR_IP_FREEBIND STRING_ARG */ +#line 1407 "./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) @@ -4807,11 +4126,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4811 "util/configparser.c" +#line 4130 "util/configparser.c" break; - case 392: -#line 1415 "./util/configparser.y" + case 393: /* server_ip_dscp: VAR_IP_DSCP STRING_ARG */ +#line 1417 "./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) @@ -4824,22 +4143,22 @@ yyreduce: cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4828 "util/configparser.c" +#line 4147 "util/configparser.c" break; - case 393: -#line 1429 "./util/configparser.y" + case 394: /* server_stream_wait_size: VAR_STREAM_WAIT_SIZE STRING_ARG */ +#line 1431 "./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 4839 "util/configparser.c" +#line 4158 "util/configparser.c" break; - case 394: -#line 1437 "./util/configparser.y" + case 395: /* server_edns_buffer_size: VAR_EDNS_BUFFER_SIZE STRING_ARG */ +#line 1439 "./util/configparser.y" { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4851,11 +4170,11 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4855 "util/configparser.c" +#line 4174 "util/configparser.c" break; - case 395: -#line 1450 "./util/configparser.y" + case 396: /* server_msg_buffer_size: VAR_MSG_BUFFER_SIZE STRING_ARG */ +#line 1452 "./util/configparser.y" { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4865,22 +4184,22 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4869 "util/configparser.c" +#line 4188 "util/configparser.c" break; - case 396: -#line 1461 "./util/configparser.y" + case 397: /* server_msg_cache_size: VAR_MSG_CACHE_SIZE STRING_ARG */ +#line 1463 "./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 4880 "util/configparser.c" +#line 4199 "util/configparser.c" break; - case 397: -#line 1469 "./util/configparser.y" + case 398: /* server_msg_cache_slabs: VAR_MSG_CACHE_SLABS STRING_ARG */ +#line 1471 "./util/configparser.y" { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4892,11 +4211,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4896 "util/configparser.c" +#line 4215 "util/configparser.c" break; - case 398: -#line 1482 "./util/configparser.y" + case 399: /* server_num_queries_per_thread: VAR_NUM_QUERIES_PER_THREAD STRING_ARG */ +#line 1484 "./util/configparser.y" { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4904,11 +4223,11 @@ yyreduce: else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4908 "util/configparser.c" +#line 4227 "util/configparser.c" break; - case 399: -#line 1491 "./util/configparser.y" + case 400: /* server_jostle_timeout: VAR_JOSTLE_TIMEOUT STRING_ARG */ +#line 1493 "./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) @@ -4916,11 +4235,11 @@ yyreduce: else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4920 "util/configparser.c" +#line 4239 "util/configparser.c" break; - case 400: -#line 1500 "./util/configparser.y" + case 401: /* server_delay_close: VAR_DELAY_CLOSE STRING_ARG */ +#line 1502 "./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) @@ -4928,11 +4247,11 @@ yyreduce: else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4932 "util/configparser.c" +#line 4251 "util/configparser.c" break; - case 401: -#line 1509 "./util/configparser.y" + case 402: /* server_udp_connect: VAR_UDP_CONNECT STRING_ARG */ +#line 1511 "./util/configparser.y" { OUTYY(("P(server_udp_connect:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4940,11 +4259,11 @@ yyreduce: else cfg_parser->cfg->udp_connect = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4944 "util/configparser.c" +#line 4263 "util/configparser.c" break; - case 402: -#line 1518 "./util/configparser.y" + case 403: /* server_unblock_lan_zones: VAR_UNBLOCK_LAN_ZONES STRING_ARG */ +#line 1520 "./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) @@ -4953,11 +4272,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4957 "util/configparser.c" +#line 4276 "util/configparser.c" break; - case 403: -#line 1528 "./util/configparser.y" + case 404: /* server_insecure_lan_zones: VAR_INSECURE_LAN_ZONES STRING_ARG */ +#line 1530 "./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) @@ -4966,22 +4285,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4970 "util/configparser.c" +#line 4289 "util/configparser.c" break; - case 404: -#line 1538 "./util/configparser.y" + case 405: /* server_rrset_cache_size: VAR_RRSET_CACHE_SIZE STRING_ARG */ +#line 1540 "./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 4981 "util/configparser.c" +#line 4300 "util/configparser.c" break; - case 405: -#line 1546 "./util/configparser.y" + case 406: /* server_rrset_cache_slabs: VAR_RRSET_CACHE_SLABS STRING_ARG */ +#line 1548 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4993,11 +4312,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4997 "util/configparser.c" +#line 4316 "util/configparser.c" break; - case 406: -#line 1559 "./util/configparser.y" + case 407: /* server_infra_host_ttl: VAR_INFRA_HOST_TTL STRING_ARG */ +#line 1561 "./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) @@ -5005,22 +4324,22 @@ yyreduce: else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5009 "util/configparser.c" +#line 4328 "util/configparser.c" break; - case 407: -#line 1568 "./util/configparser.y" + case 408: /* server_infra_lame_ttl: VAR_INFRA_LAME_TTL STRING_ARG */ +#line 1570 "./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 5020 "util/configparser.c" +#line 4339 "util/configparser.c" break; - case 408: -#line 1576 "./util/configparser.y" + case 409: /* server_infra_cache_numhosts: VAR_INFRA_CACHE_NUMHOSTS STRING_ARG */ +#line 1578 "./util/configparser.y" { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5028,22 +4347,22 @@ yyreduce: else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5032 "util/configparser.c" +#line 4351 "util/configparser.c" break; - case 409: -#line 1585 "./util/configparser.y" + case 410: /* server_infra_cache_lame_size: VAR_INFRA_CACHE_LAME_SIZE STRING_ARG */ +#line 1587 "./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 5043 "util/configparser.c" +#line 4362 "util/configparser.c" break; - case 410: -#line 1593 "./util/configparser.y" + case 411: /* server_infra_cache_slabs: VAR_INFRA_CACHE_SLABS STRING_ARG */ +#line 1595 "./util/configparser.y" { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5055,11 +4374,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5059 "util/configparser.c" +#line 4378 "util/configparser.c" break; - case 411: -#line 1606 "./util/configparser.y" + case 412: /* server_infra_cache_min_rtt: VAR_INFRA_CACHE_MIN_RTT STRING_ARG */ +#line 1608 "./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) @@ -5067,11 +4386,11 @@ yyreduce: else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5071 "util/configparser.c" +#line 4390 "util/configparser.c" break; - case 412: -#line 1615 "./util/configparser.y" + case 413: /* server_infra_keep_probing: VAR_INFRA_KEEP_PROBING STRING_ARG */ +#line 1617 "./util/configparser.y" { OUTYY(("P(server_infra_keep_probing:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5080,21 +4399,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5084 "util/configparser.c" +#line 4403 "util/configparser.c" break; - case 413: -#line 1625 "./util/configparser.y" + case 414: /* server_target_fetch_policy: VAR_TARGET_FETCH_POLICY STRING_ARG */ +#line 1627 "./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 5094 "util/configparser.c" +#line 4413 "util/configparser.c" break; - case 414: -#line 1632 "./util/configparser.y" + case 415: /* server_harden_short_bufsize: VAR_HARDEN_SHORT_BUFSIZE STRING_ARG */ +#line 1634 "./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) @@ -5103,11 +4422,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5107 "util/configparser.c" +#line 4426 "util/configparser.c" break; - case 415: -#line 1642 "./util/configparser.y" + case 416: /* server_harden_large_queries: VAR_HARDEN_LARGE_QUERIES STRING_ARG */ +#line 1644 "./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) @@ -5116,11 +4435,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5120 "util/configparser.c" +#line 4439 "util/configparser.c" break; - case 416: -#line 1652 "./util/configparser.y" + case 417: /* server_harden_glue: VAR_HARDEN_GLUE STRING_ARG */ +#line 1654 "./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) @@ -5129,11 +4448,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5133 "util/configparser.c" +#line 4452 "util/configparser.c" break; - case 417: -#line 1662 "./util/configparser.y" + case 418: /* server_harden_dnssec_stripped: VAR_HARDEN_DNSSEC_STRIPPED STRING_ARG */ +#line 1664 "./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) @@ -5142,11 +4461,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5146 "util/configparser.c" +#line 4465 "util/configparser.c" break; - case 418: -#line 1672 "./util/configparser.y" + case 419: /* server_harden_below_nxdomain: VAR_HARDEN_BELOW_NXDOMAIN STRING_ARG */ +#line 1674 "./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) @@ -5155,11 +4474,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5159 "util/configparser.c" +#line 4478 "util/configparser.c" break; - case 419: -#line 1682 "./util/configparser.y" + case 420: /* server_harden_referral_path: VAR_HARDEN_REFERRAL_PATH STRING_ARG */ +#line 1684 "./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) @@ -5168,11 +4487,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5172 "util/configparser.c" +#line 4491 "util/configparser.c" break; - case 420: -#line 1692 "./util/configparser.y" + case 421: /* server_harden_algo_downgrade: VAR_HARDEN_ALGO_DOWNGRADE STRING_ARG */ +#line 1694 "./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) @@ -5181,11 +4500,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5185 "util/configparser.c" +#line 4504 "util/configparser.c" break; - case 421: -#line 1702 "./util/configparser.y" + case 422: /* server_use_caps_for_id: VAR_USE_CAPS_FOR_ID STRING_ARG */ +#line 1704 "./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) @@ -5194,41 +4513,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5198 "util/configparser.c" +#line 4517 "util/configparser.c" break; - case 422: -#line 1712 "./util/configparser.y" + case 423: /* server_caps_whitelist: VAR_CAPS_WHITELIST STRING_ARG */ +#line 1714 "./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 5208 "util/configparser.c" +#line 4527 "util/configparser.c" break; - case 423: -#line 1719 "./util/configparser.y" + case 424: /* server_private_address: VAR_PRIVATE_ADDRESS STRING_ARG */ +#line 1721 "./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 5218 "util/configparser.c" +#line 4537 "util/configparser.c" break; - case 424: -#line 1726 "./util/configparser.y" + case 425: /* server_private_domain: VAR_PRIVATE_DOMAIN STRING_ARG */ +#line 1728 "./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 5228 "util/configparser.c" +#line 4547 "util/configparser.c" break; - case 425: -#line 1733 "./util/configparser.y" + case 426: /* server_prefetch: VAR_PREFETCH STRING_ARG */ +#line 1735 "./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) @@ -5236,11 +4555,11 @@ yyreduce: else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5240 "util/configparser.c" +#line 4559 "util/configparser.c" break; - case 426: -#line 1742 "./util/configparser.y" + case 427: /* server_prefetch_key: VAR_PREFETCH_KEY STRING_ARG */ +#line 1744 "./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) @@ -5248,11 +4567,11 @@ yyreduce: else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5252 "util/configparser.c" +#line 4571 "util/configparser.c" break; - case 427: -#line 1751 "./util/configparser.y" + case 428: /* server_deny_any: VAR_DENY_ANY STRING_ARG */ +#line 1753 "./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) @@ -5260,11 +4579,11 @@ yyreduce: else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5264 "util/configparser.c" +#line 4583 "util/configparser.c" break; - case 428: -#line 1760 "./util/configparser.y" + case 429: /* server_unwanted_reply_threshold: VAR_UNWANTED_REPLY_THRESHOLD STRING_ARG */ +#line 1762 "./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) @@ -5272,21 +4591,21 @@ yyreduce: else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5276 "util/configparser.c" +#line 4595 "util/configparser.c" break; - case 429: -#line 1769 "./util/configparser.y" + case 430: /* server_do_not_query_address: VAR_DO_NOT_QUERY_ADDRESS STRING_ARG */ +#line 1771 "./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 5286 "util/configparser.c" +#line 4605 "util/configparser.c" break; - case 430: -#line 1776 "./util/configparser.y" + case 431: /* server_do_not_query_localhost: VAR_DO_NOT_QUERY_LOCALHOST STRING_ARG */ +#line 1778 "./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) @@ -5295,11 +4614,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5299 "util/configparser.c" +#line 4618 "util/configparser.c" break; - case 431: -#line 1786 "./util/configparser.y" + case 432: /* server_access_control: VAR_ACCESS_CONTROL STRING_ARG STRING_ARG */ +#line 1788 "./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 && @@ -5318,21 +4637,21 @@ yyreduce: fatal_exit("out of memory adding acl"); } } -#line 5322 "util/configparser.c" +#line 4641 "util/configparser.c" break; - case 432: -#line 1806 "./util/configparser.y" + case 433: /* server_module_conf: VAR_MODULE_CONF STRING_ARG */ +#line 1808 "./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 5332 "util/configparser.c" +#line 4651 "util/configparser.c" break; - case 433: -#line 1813 "./util/configparser.y" + case 434: /* server_val_override_date: VAR_VAL_OVERRIDE_DATE STRING_ARG */ +#line 1815 "./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) { @@ -5349,11 +4668,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5353 "util/configparser.c" +#line 4672 "util/configparser.c" break; - case 434: -#line 1831 "./util/configparser.y" + case 435: /* server_val_sig_skew_min: VAR_VAL_SIG_SKEW_MIN STRING_ARG */ +#line 1833 "./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) { @@ -5365,11 +4684,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5369 "util/configparser.c" +#line 4688 "util/configparser.c" break; - case 435: -#line 1844 "./util/configparser.y" + case 436: /* server_val_sig_skew_max: VAR_VAL_SIG_SKEW_MAX STRING_ARG */ +#line 1846 "./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) { @@ -5381,11 +4700,27 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5385 "util/configparser.c" +#line 4704 "util/configparser.c" break; - case 436: -#line 1857 "./util/configparser.y" + case 437: /* server_val_max_restart: VAR_VAL_MAX_RESTART STRING_ARG */ +#line 1859 "./util/configparser.y" + { + OUTYY(("P(server_val_max_restart:%s)\n", (yyvsp[0].str))); + if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { + cfg_parser->cfg->val_max_restart = 0; + } else { + cfg_parser->cfg->val_max_restart = atoi((yyvsp[0].str)); + if(!cfg_parser->cfg->val_max_restart) + yyerror("number expected"); + } + free((yyvsp[0].str)); + } +#line 4720 "util/configparser.c" + break; + + case 438: /* server_cache_max_ttl: VAR_CACHE_MAX_TTL STRING_ARG */ +#line 1872 "./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) @@ -5393,11 +4728,11 @@ yyreduce: else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5397 "util/configparser.c" +#line 4732 "util/configparser.c" break; - case 437: -#line 1866 "./util/configparser.y" + case 439: /* server_cache_max_negative_ttl: VAR_CACHE_MAX_NEGATIVE_TTL STRING_ARG */ +#line 1881 "./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) @@ -5405,11 +4740,11 @@ yyreduce: else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5409 "util/configparser.c" +#line 4744 "util/configparser.c" break; - case 438: -#line 1875 "./util/configparser.y" + case 440: /* server_cache_min_ttl: VAR_CACHE_MIN_TTL STRING_ARG */ +#line 1890 "./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) @@ -5417,11 +4752,11 @@ yyreduce: else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5421 "util/configparser.c" +#line 4756 "util/configparser.c" break; - case 439: -#line 1884 "./util/configparser.y" + case 441: /* server_bogus_ttl: VAR_BOGUS_TTL STRING_ARG */ +#line 1899 "./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) @@ -5429,11 +4764,11 @@ yyreduce: else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5433 "util/configparser.c" +#line 4768 "util/configparser.c" break; - case 440: -#line 1893 "./util/configparser.y" + case 442: /* server_val_clean_additional: VAR_VAL_CLEAN_ADDITIONAL STRING_ARG */ +#line 1908 "./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) @@ -5442,11 +4777,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5446 "util/configparser.c" +#line 4781 "util/configparser.c" break; - case 441: -#line 1903 "./util/configparser.y" + case 443: /* server_val_permissive_mode: VAR_VAL_PERMISSIVE_MODE STRING_ARG */ +#line 1918 "./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) @@ -5455,11 +4790,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5459 "util/configparser.c" +#line 4794 "util/configparser.c" break; - case 442: -#line 1913 "./util/configparser.y" + case 444: /* server_aggressive_nsec: VAR_AGGRESSIVE_NSEC STRING_ARG */ +#line 1928 "./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) @@ -5469,11 +4804,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5473 "util/configparser.c" +#line 4808 "util/configparser.c" break; - case 443: -#line 1924 "./util/configparser.y" + case 445: /* server_ignore_cd_flag: VAR_IGNORE_CD_FLAG STRING_ARG */ +#line 1939 "./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) @@ -5481,11 +4816,11 @@ yyreduce: else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5485 "util/configparser.c" +#line 4820 "util/configparser.c" break; - case 444: -#line 1933 "./util/configparser.y" + case 446: /* server_serve_expired: VAR_SERVE_EXPIRED STRING_ARG */ +#line 1948 "./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) @@ -5493,11 +4828,11 @@ yyreduce: else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5497 "util/configparser.c" +#line 4832 "util/configparser.c" break; - case 445: -#line 1942 "./util/configparser.y" + case 447: /* server_serve_expired_ttl: VAR_SERVE_EXPIRED_TTL STRING_ARG */ +#line 1957 "./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) @@ -5505,11 +4840,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5509 "util/configparser.c" +#line 4844 "util/configparser.c" break; - case 446: -#line 1951 "./util/configparser.y" + case 448: /* server_serve_expired_ttl_reset: VAR_SERVE_EXPIRED_TTL_RESET STRING_ARG */ +#line 1966 "./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) @@ -5517,11 +4852,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5521 "util/configparser.c" +#line 4856 "util/configparser.c" break; - case 447: -#line 1960 "./util/configparser.y" + case 449: /* server_serve_expired_reply_ttl: VAR_SERVE_EXPIRED_REPLY_TTL STRING_ARG */ +#line 1975 "./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) @@ -5529,11 +4864,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5533 "util/configparser.c" +#line 4868 "util/configparser.c" break; - case 448: -#line 1969 "./util/configparser.y" + case 450: /* server_serve_expired_client_timeout: VAR_SERVE_EXPIRED_CLIENT_TIMEOUT STRING_ARG */ +#line 1984 "./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) @@ -5541,11 +4876,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5545 "util/configparser.c" +#line 4880 "util/configparser.c" break; - case 449: -#line 1978 "./util/configparser.y" + case 451: /* server_serve_original_ttl: VAR_SERVE_ORIGINAL_TTL STRING_ARG */ +#line 1993 "./util/configparser.y" { OUTYY(("P(server_serve_original_ttl:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5553,11 +4888,11 @@ yyreduce: else cfg_parser->cfg->serve_original_ttl = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5557 "util/configparser.c" +#line 4892 "util/configparser.c" break; - case 450: -#line 1987 "./util/configparser.y" + case 452: /* server_fake_dsa: VAR_FAKE_DSA STRING_ARG */ +#line 2002 "./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) @@ -5569,11 +4904,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5573 "util/configparser.c" +#line 4908 "util/configparser.c" break; - case 451: -#line 2000 "./util/configparser.y" + case 453: /* server_fake_sha1: VAR_FAKE_SHA1 STRING_ARG */ +#line 2015 "./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) @@ -5585,11 +4920,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5589 "util/configparser.c" +#line 4924 "util/configparser.c" break; - case 452: -#line 2013 "./util/configparser.y" + case 454: /* server_val_log_level: VAR_VAL_LOG_LEVEL STRING_ARG */ +#line 2028 "./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) @@ -5597,21 +4932,21 @@ yyreduce: else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5601 "util/configparser.c" +#line 4936 "util/configparser.c" break; - case 453: -#line 2022 "./util/configparser.y" + case 455: /* server_val_nsec3_keysize_iterations: VAR_VAL_NSEC3_KEYSIZE_ITERATIONS STRING_ARG */ +#line 2037 "./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 5611 "util/configparser.c" +#line 4946 "util/configparser.c" break; - case 454: -#line 2029 "./util/configparser.y" + case 456: /* server_zonemd_permissive_mode: VAR_ZONEMD_PERMISSIVE_MODE STRING_ARG */ +#line 2044 "./util/configparser.y" { OUTYY(("P(server_zonemd_permissive_mode:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5619,11 +4954,11 @@ yyreduce: else cfg_parser->cfg->zonemd_permissive_mode = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5623 "util/configparser.c" +#line 4958 "util/configparser.c" break; - case 455: -#line 2038 "./util/configparser.y" + case 457: /* server_add_holddown: VAR_ADD_HOLDDOWN STRING_ARG */ +#line 2053 "./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) @@ -5631,11 +4966,11 @@ yyreduce: else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5635 "util/configparser.c" +#line 4970 "util/configparser.c" break; - case 456: -#line 2047 "./util/configparser.y" + case 458: /* server_del_holddown: VAR_DEL_HOLDDOWN STRING_ARG */ +#line 2062 "./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) @@ -5643,11 +4978,11 @@ yyreduce: else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5647 "util/configparser.c" +#line 4982 "util/configparser.c" break; - case 457: -#line 2056 "./util/configparser.y" + case 459: /* server_keep_missing: VAR_KEEP_MISSING STRING_ARG */ +#line 2071 "./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) @@ -5655,11 +4990,11 @@ yyreduce: else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5659 "util/configparser.c" +#line 4994 "util/configparser.c" break; - case 458: -#line 2065 "./util/configparser.y" + case 460: /* server_permit_small_holddown: VAR_PERMIT_SMALL_HOLDDOWN STRING_ARG */ +#line 2080 "./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) @@ -5668,22 +5003,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5672 "util/configparser.c" +#line 5007 "util/configparser.c" break; - case 459: -#line 2074 "./util/configparser.y" + case 461: /* server_key_cache_size: VAR_KEY_CACHE_SIZE STRING_ARG */ +#line 2089 "./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 5683 "util/configparser.c" +#line 5018 "util/configparser.c" break; - case 460: -#line 2082 "./util/configparser.y" + case 462: /* server_key_cache_slabs: VAR_KEY_CACHE_SLABS STRING_ARG */ +#line 2097 "./util/configparser.y" { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5695,22 +5030,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5699 "util/configparser.c" +#line 5034 "util/configparser.c" break; - case 461: -#line 2095 "./util/configparser.y" + case 463: /* server_neg_cache_size: VAR_NEG_CACHE_SIZE STRING_ARG */ +#line 2110 "./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 5710 "util/configparser.c" +#line 5045 "util/configparser.c" break; - case 462: -#line 2103 "./util/configparser.y" + case 464: /* server_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */ +#line 2118 "./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 && @@ -5754,21 +5089,21 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5758 "util/configparser.c" +#line 5093 "util/configparser.c" break; - case 463: -#line 2148 "./util/configparser.y" + case 465: /* server_local_data: VAR_LOCAL_DATA STRING_ARG */ +#line 2163 "./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 5768 "util/configparser.c" +#line 5103 "util/configparser.c" break; - case 464: -#line 2155 "./util/configparser.y" + case 466: /* server_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ +#line 2170 "./util/configparser.y" { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -5782,11 +5117,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5786 "util/configparser.c" +#line 5121 "util/configparser.c" break; - case 465: -#line 2170 "./util/configparser.y" + case 467: /* server_minimal_responses: VAR_MINIMAL_RESPONSES STRING_ARG */ +#line 2185 "./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) @@ -5795,11 +5130,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5799 "util/configparser.c" +#line 5134 "util/configparser.c" break; - case 466: -#line 2180 "./util/configparser.y" + case 468: /* server_rrset_roundrobin: VAR_RRSET_ROUNDROBIN STRING_ARG */ +#line 2195 "./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) @@ -5808,41 +5143,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5812 "util/configparser.c" +#line 5147 "util/configparser.c" break; - case 467: -#line 2190 "./util/configparser.y" + case 469: /* server_unknown_server_time_limit: VAR_UNKNOWN_SERVER_TIME_LIMIT STRING_ARG */ +#line 2205 "./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 5822 "util/configparser.c" +#line 5157 "util/configparser.c" break; - case 468: -#line 2197 "./util/configparser.y" + case 470: /* server_max_udp_size: VAR_MAX_UDP_SIZE STRING_ARG */ +#line 2212 "./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 5832 "util/configparser.c" +#line 5167 "util/configparser.c" break; - case 469: -#line 2204 "./util/configparser.y" + case 471: /* server_dns64_prefix: VAR_DNS64_PREFIX STRING_ARG */ +#line 2219 "./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 5842 "util/configparser.c" +#line 5177 "util/configparser.c" break; - case 470: -#line 2211 "./util/configparser.y" + case 472: /* server_dns64_synthall: VAR_DNS64_SYNTHALL STRING_ARG */ +#line 2226 "./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) @@ -5850,22 +5185,22 @@ yyreduce: else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5854 "util/configparser.c" +#line 5189 "util/configparser.c" break; - case 471: -#line 2220 "./util/configparser.y" + case 473: /* server_dns64_ignore_aaaa: VAR_DNS64_IGNORE_AAAA STRING_ARG */ +#line 2235 "./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 5865 "util/configparser.c" +#line 5200 "util/configparser.c" break; - case 472: -#line 2228 "./util/configparser.y" + case 474: /* server_define_tag: VAR_DEFINE_TAG STRING_ARG */ +#line 2243 "./util/configparser.y" { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); @@ -5878,11 +5213,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5882 "util/configparser.c" +#line 5217 "util/configparser.c" break; - case 473: -#line 2242 "./util/configparser.y" + case 475: /* server_local_zone_tag: VAR_LOCAL_ZONE_TAG STRING_ARG STRING_ARG */ +#line 2257 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5902,11 +5237,11 @@ yyreduce: } } } -#line 5906 "util/configparser.c" +#line 5241 "util/configparser.c" break; - case 474: -#line 2263 "./util/configparser.y" + case 476: /* server_access_control_tag: VAR_ACCESS_CONTROL_TAG STRING_ARG STRING_ARG */ +#line 2278 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5926,11 +5261,11 @@ yyreduce: } } } -#line 5930 "util/configparser.c" +#line 5265 "util/configparser.c" break; - case 475: -#line 2284 "./util/configparser.y" + case 477: /* server_access_control_tag_action: VAR_ACCESS_CONTROL_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG */ +#line 2299 "./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, @@ -5941,11 +5276,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5945 "util/configparser.c" +#line 5280 "util/configparser.c" break; - case 476: -#line 2296 "./util/configparser.y" + case 478: /* server_access_control_tag_data: VAR_ACCESS_CONTROL_TAG_DATA STRING_ARG STRING_ARG STRING_ARG */ +#line 2311 "./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, @@ -5956,11 +5291,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5960 "util/configparser.c" +#line 5295 "util/configparser.c" break; - case 477: -#line 2308 "./util/configparser.y" + case 479: /* server_local_zone_override: VAR_LOCAL_ZONE_OVERRIDE STRING_ARG STRING_ARG STRING_ARG */ +#line 2323 "./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, @@ -5971,11 +5306,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5975 "util/configparser.c" +#line 5310 "util/configparser.c" break; - case 478: -#line 2320 "./util/configparser.y" + case 480: /* server_access_control_view: VAR_ACCESS_CONTROL_VIEW STRING_ARG STRING_ARG */ +#line 2335 "./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, @@ -5983,11 +5318,11 @@ yyreduce: yyerror("out of memory"); } } -#line 5987 "util/configparser.c" +#line 5322 "util/configparser.c" break; - case 479: -#line 2329 "./util/configparser.y" + case 481: /* server_response_ip_tag: VAR_RESPONSE_IP_TAG STRING_ARG STRING_ARG */ +#line 2344 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -6007,11 +5342,11 @@ yyreduce: } } } -#line 6011 "util/configparser.c" +#line 5346 "util/configparser.c" break; - case 480: -#line 2350 "./util/configparser.y" + case 482: /* server_ip_ratelimit: VAR_IP_RATELIMIT STRING_ARG */ +#line 2365 "./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) @@ -6019,11 +5354,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6023 "util/configparser.c" +#line 5358 "util/configparser.c" break; - case 481: -#line 2360 "./util/configparser.y" + case 483: /* server_ratelimit: VAR_RATELIMIT STRING_ARG */ +#line 2375 "./util/configparser.y" { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -6031,33 +5366,33 @@ yyreduce: else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6035 "util/configparser.c" +#line 5370 "util/configparser.c" break; - case 482: -#line 2369 "./util/configparser.y" + case 484: /* server_ip_ratelimit_size: VAR_IP_RATELIMIT_SIZE STRING_ARG */ +#line 2384 "./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 6046 "util/configparser.c" +#line 5381 "util/configparser.c" break; - case 483: -#line 2377 "./util/configparser.y" + case 485: /* server_ratelimit_size: VAR_RATELIMIT_SIZE STRING_ARG */ +#line 2392 "./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 6057 "util/configparser.c" +#line 5392 "util/configparser.c" break; - case 484: -#line 2385 "./util/configparser.y" + case 486: /* server_ip_ratelimit_slabs: VAR_IP_RATELIMIT_SLABS STRING_ARG */ +#line 2400 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6069,11 +5404,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6073 "util/configparser.c" +#line 5408 "util/configparser.c" break; - case 485: -#line 2398 "./util/configparser.y" + case 487: /* server_ratelimit_slabs: VAR_RATELIMIT_SLABS STRING_ARG */ +#line 2413 "./util/configparser.y" { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6085,11 +5420,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6089 "util/configparser.c" +#line 5424 "util/configparser.c" break; - case 486: -#line 2411 "./util/configparser.y" + case 488: /* server_ratelimit_for_domain: VAR_RATELIMIT_FOR_DOMAIN STRING_ARG STRING_ARG */ +#line 2426 "./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) { @@ -6103,11 +5438,11 @@ yyreduce: "ratelimit-for-domain"); } } -#line 6107 "util/configparser.c" +#line 5442 "util/configparser.c" break; - case 487: -#line 2426 "./util/configparser.y" + case 489: /* server_ratelimit_below_domain: VAR_RATELIMIT_BELOW_DOMAIN STRING_ARG STRING_ARG */ +#line 2441 "./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) { @@ -6121,11 +5456,11 @@ yyreduce: "ratelimit-below-domain"); } } -#line 6125 "util/configparser.c" +#line 5460 "util/configparser.c" break; - case 488: -#line 2441 "./util/configparser.y" + case 490: /* server_ip_ratelimit_factor: VAR_IP_RATELIMIT_FACTOR STRING_ARG */ +#line 2456 "./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) @@ -6133,11 +5468,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6137 "util/configparser.c" +#line 5472 "util/configparser.c" break; - case 489: -#line 2450 "./util/configparser.y" + case 491: /* server_ratelimit_factor: VAR_RATELIMIT_FACTOR STRING_ARG */ +#line 2465 "./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) @@ -6145,20 +5480,20 @@ yyreduce: else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6149 "util/configparser.c" +#line 5484 "util/configparser.c" break; - case 490: -#line 2459 "./util/configparser.y" + case 492: /* server_low_rtt: VAR_LOW_RTT STRING_ARG */ +#line 2474 "./util/configparser.y" { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 6158 "util/configparser.c" +#line 5493 "util/configparser.c" break; - case 491: -#line 2465 "./util/configparser.y" + case 493: /* server_fast_server_num: VAR_FAST_SERVER_NUM STRING_ARG */ +#line 2480 "./util/configparser.y" { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) <= 0) @@ -6166,11 +5501,11 @@ yyreduce: else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6170 "util/configparser.c" +#line 5505 "util/configparser.c" break; - case 492: -#line 2474 "./util/configparser.y" + case 494: /* server_fast_server_permil: VAR_FAST_SERVER_PERMIL STRING_ARG */ +#line 2489 "./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) @@ -6178,11 +5513,11 @@ yyreduce: else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6182 "util/configparser.c" +#line 5517 "util/configparser.c" break; - case 493: -#line 2483 "./util/configparser.y" + case 495: /* server_qname_minimisation: VAR_QNAME_MINIMISATION STRING_ARG */ +#line 2498 "./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) @@ -6191,11 +5526,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6195 "util/configparser.c" +#line 5530 "util/configparser.c" break; - case 494: -#line 2493 "./util/configparser.y" + case 496: /* server_qname_minimisation_strict: VAR_QNAME_MINIMISATION_STRICT STRING_ARG */ +#line 2508 "./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) @@ -6204,11 +5539,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6208 "util/configparser.c" +#line 5543 "util/configparser.c" break; - case 495: -#line 2503 "./util/configparser.y" + case 497: /* server_pad_responses: VAR_PAD_RESPONSES STRING_ARG */ +#line 2518 "./util/configparser.y" { OUTYY(("P(server_pad_responses:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6217,11 +5552,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6221 "util/configparser.c" +#line 5556 "util/configparser.c" break; - case 496: -#line 2513 "./util/configparser.y" + case 498: /* server_pad_responses_block_size: VAR_PAD_RESPONSES_BLOCK_SIZE STRING_ARG */ +#line 2528 "./util/configparser.y" { OUTYY(("P(server_pad_responses_block_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6229,11 +5564,11 @@ yyreduce: else cfg_parser->cfg->pad_responses_block_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6233 "util/configparser.c" +#line 5568 "util/configparser.c" break; - case 497: -#line 2522 "./util/configparser.y" + case 499: /* server_pad_queries: VAR_PAD_QUERIES STRING_ARG */ +#line 2537 "./util/configparser.y" { OUTYY(("P(server_pad_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6242,11 +5577,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6246 "util/configparser.c" +#line 5581 "util/configparser.c" break; - case 498: -#line 2532 "./util/configparser.y" + case 500: /* server_pad_queries_block_size: VAR_PAD_QUERIES_BLOCK_SIZE STRING_ARG */ +#line 2547 "./util/configparser.y" { OUTYY(("P(server_pad_queries_block_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6254,11 +5589,11 @@ yyreduce: else cfg_parser->cfg->pad_queries_block_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6258 "util/configparser.c" +#line 5593 "util/configparser.c" break; - case 499: -#line 2541 "./util/configparser.y" + case 501: /* server_ipsecmod_enabled: VAR_IPSECMOD_ENABLED STRING_ARG */ +#line 2556 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); @@ -6270,11 +5605,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6274 "util/configparser.c" +#line 5609 "util/configparser.c" break; - case 500: -#line 2554 "./util/configparser.y" + case 502: /* server_ipsecmod_ignore_bogus: VAR_IPSECMOD_IGNORE_BOGUS STRING_ARG */ +#line 2569 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); @@ -6286,11 +5621,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6290 "util/configparser.c" +#line 5625 "util/configparser.c" break; - case 501: -#line 2567 "./util/configparser.y" + case 503: /* server_ipsecmod_hook: VAR_IPSECMOD_HOOK STRING_ARG */ +#line 2582 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); @@ -6301,11 +5636,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6305 "util/configparser.c" +#line 5640 "util/configparser.c" break; - case 502: -#line 2579 "./util/configparser.y" + case 504: /* server_ipsecmod_max_ttl: VAR_IPSECMOD_MAX_TTL STRING_ARG */ +#line 2594 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); @@ -6318,11 +5653,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6322 "util/configparser.c" +#line 5657 "util/configparser.c" break; - case 503: -#line 2593 "./util/configparser.y" + case 505: /* server_ipsecmod_whitelist: VAR_IPSECMOD_WHITELIST STRING_ARG */ +#line 2608 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); @@ -6333,11 +5668,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6337 "util/configparser.c" +#line 5672 "util/configparser.c" break; - case 504: -#line 2605 "./util/configparser.y" + case 506: /* server_ipsecmod_strict: VAR_IPSECMOD_STRICT STRING_ARG */ +#line 2620 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); @@ -6350,11 +5685,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6354 "util/configparser.c" +#line 5689 "util/configparser.c" break; - case 505: -#line 2619 "./util/configparser.y" + case 507: /* server_edns_client_string: VAR_EDNS_CLIENT_STRING STRING_ARG STRING_ARG */ +#line 2634 "./util/configparser.y" { OUTYY(("P(server_edns_client_string:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert( @@ -6362,11 +5697,11 @@ yyreduce: fatal_exit("out of memory adding " "edns-client-string"); } -#line 6366 "util/configparser.c" +#line 5701 "util/configparser.c" break; - case 506: -#line 2628 "./util/configparser.y" + case 508: /* server_edns_client_string_opcode: VAR_EDNS_CLIENT_STRING_OPCODE STRING_ARG */ +#line 2643 "./util/configparser.y" { OUTYY(("P(edns_client_string_opcode:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -6377,11 +5712,11 @@ yyreduce: free((yyvsp[0].str)); } -#line 6381 "util/configparser.c" +#line 5716 "util/configparser.c" break; - case 507: -#line 2640 "./util/configparser.y" + case 509: /* stub_name: VAR_NAME STRING_ARG */ +#line 2655 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) @@ -6390,31 +5725,31 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 6394 "util/configparser.c" +#line 5729 "util/configparser.c" break; - case 508: -#line 2650 "./util/configparser.y" + case 510: /* stub_host: VAR_STUB_HOST STRING_ARG */ +#line 2665 "./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 6404 "util/configparser.c" +#line 5739 "util/configparser.c" break; - case 509: -#line 2657 "./util/configparser.y" + case 511: /* stub_addr: VAR_STUB_ADDR STRING_ARG */ +#line 2672 "./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 6414 "util/configparser.c" +#line 5749 "util/configparser.c" break; - case 510: -#line 2664 "./util/configparser.y" + case 512: /* stub_first: VAR_STUB_FIRST STRING_ARG */ +#line 2679 "./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) @@ -6422,11 +5757,11 @@ yyreduce: else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6426 "util/configparser.c" +#line 5761 "util/configparser.c" break; - case 511: -#line 2673 "./util/configparser.y" + case 513: /* stub_no_cache: VAR_STUB_NO_CACHE STRING_ARG */ +#line 2688 "./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) @@ -6434,11 +5769,11 @@ yyreduce: else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6438 "util/configparser.c" +#line 5773 "util/configparser.c" break; - case 512: -#line 2682 "./util/configparser.y" + case 514: /* stub_ssl_upstream: VAR_STUB_SSL_UPSTREAM STRING_ARG */ +#line 2697 "./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) @@ -6447,11 +5782,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6451 "util/configparser.c" +#line 5786 "util/configparser.c" break; - case 513: -#line 2692 "./util/configparser.y" + case 515: /* stub_prime: VAR_STUB_PRIME STRING_ARG */ +#line 2707 "./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) @@ -6460,11 +5795,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6464 "util/configparser.c" +#line 5799 "util/configparser.c" break; - case 514: -#line 2702 "./util/configparser.y" + case 516: /* forward_name: VAR_NAME STRING_ARG */ +#line 2717 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) @@ -6473,31 +5808,31 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 6477 "util/configparser.c" +#line 5812 "util/configparser.c" break; - case 515: -#line 2712 "./util/configparser.y" + case 517: /* forward_host: VAR_FORWARD_HOST STRING_ARG */ +#line 2727 "./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 6487 "util/configparser.c" +#line 5822 "util/configparser.c" break; - case 516: -#line 2719 "./util/configparser.y" + case 518: /* forward_addr: VAR_FORWARD_ADDR STRING_ARG */ +#line 2734 "./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 6497 "util/configparser.c" +#line 5832 "util/configparser.c" break; - case 517: -#line 2726 "./util/configparser.y" + case 519: /* forward_first: VAR_FORWARD_FIRST STRING_ARG */ +#line 2741 "./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) @@ -6505,11 +5840,11 @@ yyreduce: else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6509 "util/configparser.c" +#line 5844 "util/configparser.c" break; - case 518: -#line 2735 "./util/configparser.y" + case 520: /* forward_no_cache: VAR_FORWARD_NO_CACHE STRING_ARG */ +#line 2750 "./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) @@ -6517,11 +5852,11 @@ yyreduce: else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6521 "util/configparser.c" +#line 5856 "util/configparser.c" break; - case 519: -#line 2744 "./util/configparser.y" + case 521: /* forward_ssl_upstream: VAR_FORWARD_SSL_UPSTREAM STRING_ARG */ +#line 2759 "./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) @@ -6530,11 +5865,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6534 "util/configparser.c" +#line 5869 "util/configparser.c" break; - case 520: -#line 2754 "./util/configparser.y" + case 522: /* auth_name: VAR_NAME STRING_ARG */ +#line 2769 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) @@ -6543,52 +5878,52 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 6547 "util/configparser.c" +#line 5882 "util/configparser.c" break; - case 521: -#line 2764 "./util/configparser.y" + case 523: /* auth_zonefile: VAR_ZONEFILE STRING_ARG */ +#line 2779 "./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 6557 "util/configparser.c" +#line 5892 "util/configparser.c" break; - case 522: -#line 2771 "./util/configparser.y" + case 524: /* auth_master: VAR_MASTER STRING_ARG */ +#line 2786 "./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 6567 "util/configparser.c" +#line 5902 "util/configparser.c" break; - case 523: -#line 2778 "./util/configparser.y" + case 525: /* auth_url: VAR_URL STRING_ARG */ +#line 2793 "./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 6577 "util/configparser.c" +#line 5912 "util/configparser.c" break; - case 524: -#line 2785 "./util/configparser.y" + case 526: /* auth_allow_notify: VAR_ALLOW_NOTIFY STRING_ARG */ +#line 2800 "./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 6588 "util/configparser.c" +#line 5923 "util/configparser.c" break; - case 525: -#line 2793 "./util/configparser.y" + case 527: /* auth_zonemd_check: VAR_ZONEMD_CHECK STRING_ARG */ +#line 2808 "./util/configparser.y" { OUTYY(("P(zonemd-check:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6597,11 +5932,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6601 "util/configparser.c" +#line 5936 "util/configparser.c" break; - case 526: -#line 2803 "./util/configparser.y" + case 528: /* auth_zonemd_reject_absence: VAR_ZONEMD_REJECT_ABSENCE STRING_ARG */ +#line 2818 "./util/configparser.y" { OUTYY(("P(zonemd-reject-absence:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6610,11 +5945,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6614 "util/configparser.c" +#line 5949 "util/configparser.c" break; - case 527: -#line 2813 "./util/configparser.y" + case 529: /* auth_for_downstream: VAR_FOR_DOWNSTREAM STRING_ARG */ +#line 2828 "./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) @@ -6623,11 +5958,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6627 "util/configparser.c" +#line 5962 "util/configparser.c" break; - case 528: -#line 2823 "./util/configparser.y" + case 530: /* auth_for_upstream: VAR_FOR_UPSTREAM STRING_ARG */ +#line 2838 "./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) @@ -6636,11 +5971,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6640 "util/configparser.c" +#line 5975 "util/configparser.c" break; - case 529: -#line 2833 "./util/configparser.y" + case 531: /* auth_fallback_enabled: VAR_FALLBACK_ENABLED STRING_ARG */ +#line 2848 "./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) @@ -6649,11 +5984,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6653 "util/configparser.c" +#line 5988 "util/configparser.c" break; - case 530: -#line 2843 "./util/configparser.y" + case 532: /* view_name: VAR_NAME STRING_ARG */ +#line 2858 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) @@ -6662,11 +5997,11 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 6666 "util/configparser.c" +#line 6001 "util/configparser.c" break; - case 531: -#line 2853 "./util/configparser.y" + case 533: /* view_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */ +#line 2868 "./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 && @@ -6711,11 +6046,11 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 6715 "util/configparser.c" +#line 6050 "util/configparser.c" break; - case 532: -#line 2899 "./util/configparser.y" + case 534: /* view_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ +#line 2914 "./util/configparser.y" { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -6724,33 +6059,33 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 6728 "util/configparser.c" +#line 6063 "util/configparser.c" break; - case 533: -#line 2909 "./util/configparser.y" + case 535: /* view_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ +#line 2924 "./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 6739 "util/configparser.c" +#line 6074 "util/configparser.c" break; - case 534: -#line 2917 "./util/configparser.y" + case 536: /* view_local_data: VAR_LOCAL_DATA STRING_ARG */ +#line 2932 "./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 6750 "util/configparser.c" +#line 6085 "util/configparser.c" break; - case 535: -#line 2925 "./util/configparser.y" + case 537: /* view_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ +#line 2940 "./util/configparser.y" { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -6764,11 +6099,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 6768 "util/configparser.c" +#line 6103 "util/configparser.c" break; - case 536: -#line 2940 "./util/configparser.y" + case 538: /* view_first: VAR_VIEW_FIRST STRING_ARG */ +#line 2955 "./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) @@ -6776,19 +6111,19 @@ yyreduce: else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6780 "util/configparser.c" +#line 6115 "util/configparser.c" break; - case 537: -#line 2949 "./util/configparser.y" + case 539: /* rcstart: VAR_REMOTE_CONTROL */ +#line 2964 "./util/configparser.y" { OUTYY(("\nP(remote-control:)\n")); } -#line 6788 "util/configparser.c" +#line 6123 "util/configparser.c" break; - case 548: -#line 2960 "./util/configparser.y" + case 550: /* rc_control_enable: VAR_CONTROL_ENABLE STRING_ARG */ +#line 2975 "./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) @@ -6797,11 +6132,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6801 "util/configparser.c" +#line 6136 "util/configparser.c" break; - case 549: -#line 2970 "./util/configparser.y" + case 551: /* rc_control_port: VAR_CONTROL_PORT STRING_ARG */ +#line 2985 "./util/configparser.y" { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6809,79 +6144,79 @@ yyreduce: else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6813 "util/configparser.c" +#line 6148 "util/configparser.c" break; - case 550: -#line 2979 "./util/configparser.y" + case 552: /* rc_control_interface: VAR_CONTROL_INTERFACE STRING_ARG */ +#line 2994 "./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 6823 "util/configparser.c" +#line 6158 "util/configparser.c" break; - case 551: -#line 2986 "./util/configparser.y" + case 553: /* rc_control_use_cert: VAR_CONTROL_USE_CERT STRING_ARG */ +#line 3001 "./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 6833 "util/configparser.c" +#line 6168 "util/configparser.c" break; - case 552: -#line 2993 "./util/configparser.y" + case 554: /* rc_server_key_file: VAR_SERVER_KEY_FILE STRING_ARG */ +#line 3008 "./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 6843 "util/configparser.c" +#line 6178 "util/configparser.c" break; - case 553: -#line 3000 "./util/configparser.y" + case 555: /* rc_server_cert_file: VAR_SERVER_CERT_FILE STRING_ARG */ +#line 3015 "./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 6853 "util/configparser.c" +#line 6188 "util/configparser.c" break; - case 554: -#line 3007 "./util/configparser.y" + case 556: /* rc_control_key_file: VAR_CONTROL_KEY_FILE STRING_ARG */ +#line 3022 "./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 6863 "util/configparser.c" +#line 6198 "util/configparser.c" break; - case 555: -#line 3014 "./util/configparser.y" + case 557: /* rc_control_cert_file: VAR_CONTROL_CERT_FILE STRING_ARG */ +#line 3029 "./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 6873 "util/configparser.c" +#line 6208 "util/configparser.c" break; - case 556: -#line 3021 "./util/configparser.y" + case 558: /* dtstart: VAR_DNSTAP */ +#line 3036 "./util/configparser.y" { OUTYY(("\nP(dnstap:)\n")); } -#line 6881 "util/configparser.c" +#line 6216 "util/configparser.c" break; - case 578: -#line 3041 "./util/configparser.y" + case 580: /* dt_dnstap_enable: VAR_DNSTAP_ENABLE STRING_ARG */ +#line 3056 "./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) @@ -6889,11 +6224,11 @@ yyreduce: else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6893 "util/configparser.c" +#line 6228 "util/configparser.c" break; - case 579: -#line 3050 "./util/configparser.y" + case 581: /* dt_dnstap_bidirectional: VAR_DNSTAP_BIDIRECTIONAL STRING_ARG */ +#line 3065 "./util/configparser.y" { OUTYY(("P(dt_dnstap_bidirectional:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6902,31 +6237,31 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6906 "util/configparser.c" +#line 6241 "util/configparser.c" break; - case 580: -#line 3060 "./util/configparser.y" + case 582: /* dt_dnstap_socket_path: VAR_DNSTAP_SOCKET_PATH STRING_ARG */ +#line 3075 "./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 6916 "util/configparser.c" +#line 6251 "util/configparser.c" break; - case 581: -#line 3067 "./util/configparser.y" + case 583: /* dt_dnstap_ip: VAR_DNSTAP_IP STRING_ARG */ +#line 3082 "./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 6926 "util/configparser.c" +#line 6261 "util/configparser.c" break; - case 582: -#line 3074 "./util/configparser.y" + case 584: /* dt_dnstap_tls: VAR_DNSTAP_TLS STRING_ARG */ +#line 3089 "./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) @@ -6934,51 +6269,51 @@ yyreduce: else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6938 "util/configparser.c" +#line 6273 "util/configparser.c" break; - case 583: -#line 3083 "./util/configparser.y" + case 585: /* dt_dnstap_tls_server_name: VAR_DNSTAP_TLS_SERVER_NAME STRING_ARG */ +#line 3098 "./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 6948 "util/configparser.c" +#line 6283 "util/configparser.c" break; - case 584: -#line 3090 "./util/configparser.y" + case 586: /* dt_dnstap_tls_cert_bundle: VAR_DNSTAP_TLS_CERT_BUNDLE STRING_ARG */ +#line 3105 "./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 6958 "util/configparser.c" +#line 6293 "util/configparser.c" break; - case 585: -#line 3097 "./util/configparser.y" + case 587: /* dt_dnstap_tls_client_key_file: VAR_DNSTAP_TLS_CLIENT_KEY_FILE STRING_ARG */ +#line 3112 "./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 6968 "util/configparser.c" +#line 6303 "util/configparser.c" break; - case 586: -#line 3104 "./util/configparser.y" + case 588: /* dt_dnstap_tls_client_cert_file: VAR_DNSTAP_TLS_CLIENT_CERT_FILE STRING_ARG */ +#line 3119 "./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 6978 "util/configparser.c" +#line 6313 "util/configparser.c" break; - case 587: -#line 3111 "./util/configparser.y" + case 589: /* dt_dnstap_send_identity: VAR_DNSTAP_SEND_IDENTITY STRING_ARG */ +#line 3126 "./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) @@ -6986,11 +6321,11 @@ yyreduce: else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6990 "util/configparser.c" +#line 6325 "util/configparser.c" break; - case 588: -#line 3120 "./util/configparser.y" + case 590: /* dt_dnstap_send_version: VAR_DNSTAP_SEND_VERSION STRING_ARG */ +#line 3135 "./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) @@ -6998,31 +6333,31 @@ yyreduce: else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7002 "util/configparser.c" +#line 6337 "util/configparser.c" break; - case 589: -#line 3129 "./util/configparser.y" + case 591: /* dt_dnstap_identity: VAR_DNSTAP_IDENTITY STRING_ARG */ +#line 3144 "./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 7012 "util/configparser.c" +#line 6347 "util/configparser.c" break; - case 590: -#line 3136 "./util/configparser.y" + case 592: /* dt_dnstap_version: VAR_DNSTAP_VERSION STRING_ARG */ +#line 3151 "./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 7022 "util/configparser.c" +#line 6357 "util/configparser.c" break; - case 591: -#line 3143 "./util/configparser.y" + case 593: /* dt_dnstap_log_resolver_query_messages: VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES STRING_ARG */ +#line 3158 "./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) @@ -7031,11 +6366,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7035 "util/configparser.c" +#line 6370 "util/configparser.c" break; - case 592: -#line 3153 "./util/configparser.y" + case 594: /* dt_dnstap_log_resolver_response_messages: VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES STRING_ARG */ +#line 3168 "./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) @@ -7044,11 +6379,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7048 "util/configparser.c" +#line 6383 "util/configparser.c" break; - case 593: -#line 3163 "./util/configparser.y" + case 595: /* dt_dnstap_log_client_query_messages: VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES STRING_ARG */ +#line 3178 "./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) @@ -7057,11 +6392,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7061 "util/configparser.c" +#line 6396 "util/configparser.c" break; - case 594: -#line 3173 "./util/configparser.y" + case 596: /* dt_dnstap_log_client_response_messages: VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES STRING_ARG */ +#line 3188 "./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) @@ -7070,11 +6405,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7074 "util/configparser.c" +#line 6409 "util/configparser.c" break; - case 595: -#line 3183 "./util/configparser.y" + case 597: /* dt_dnstap_log_forwarder_query_messages: VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES STRING_ARG */ +#line 3198 "./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) @@ -7083,11 +6418,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7087 "util/configparser.c" +#line 6422 "util/configparser.c" break; - case 596: -#line 3193 "./util/configparser.y" + case 598: /* dt_dnstap_log_forwarder_response_messages: VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES STRING_ARG */ +#line 3208 "./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) @@ -7096,47 +6431,47 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7100 "util/configparser.c" +#line 6435 "util/configparser.c" break; - case 597: -#line 3203 "./util/configparser.y" + case 599: /* pythonstart: VAR_PYTHON */ +#line 3218 "./util/configparser.y" { OUTYY(("\nP(python:)\n")); } -#line 7108 "util/configparser.c" +#line 6443 "util/configparser.c" break; - case 601: -#line 3212 "./util/configparser.y" + case 603: /* py_script: VAR_PYTHON_SCRIPT STRING_ARG */ +#line 3227 "./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 7118 "util/configparser.c" +#line 6453 "util/configparser.c" break; - case 602: -#line 3218 "./util/configparser.y" + case 604: /* dynlibstart: VAR_DYNLIB */ +#line 3233 "./util/configparser.y" { OUTYY(("\nP(dynlib:)\n")); } -#line 7126 "util/configparser.c" +#line 6461 "util/configparser.c" break; - case 606: -#line 3227 "./util/configparser.y" + case 608: /* dl_file: VAR_DYNLIB_FILE STRING_ARG */ +#line 3242 "./util/configparser.y" { OUTYY(("P(dynlib-file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, (yyvsp[0].str))) yyerror("out of memory"); } -#line 7136 "util/configparser.c" +#line 6471 "util/configparser.c" break; - case 607: -#line 3233 "./util/configparser.y" + case 609: /* server_disable_dnssec_lame_check: VAR_DISABLE_DNSSEC_LAME_CHECK STRING_ARG */ +#line 3248 "./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) @@ -7145,21 +6480,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7149 "util/configparser.c" +#line 6484 "util/configparser.c" break; - case 608: -#line 3243 "./util/configparser.y" + case 610: /* server_log_identity: VAR_LOG_IDENTITY STRING_ARG */ +#line 3258 "./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 7159 "util/configparser.c" +#line 6494 "util/configparser.c" break; - case 609: -#line 3250 "./util/configparser.y" + case 611: /* server_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ +#line 3265 "./util/configparser.y" { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -7167,30 +6502,30 @@ yyreduce: (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 7171 "util/configparser.c" +#line 6506 "util/configparser.c" break; - case 610: -#line 3259 "./util/configparser.y" + case 612: /* server_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ +#line 3274 "./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 7182 "util/configparser.c" +#line 6517 "util/configparser.c" break; - case 611: -#line 3267 "./util/configparser.y" + case 613: /* dnscstart: VAR_DNSCRYPT */ +#line 3282 "./util/configparser.y" { OUTYY(("\nP(dnscrypt:)\n")); } -#line 7190 "util/configparser.c" +#line 6525 "util/configparser.c" break; - case 624: -#line 3283 "./util/configparser.y" + case 626: /* dnsc_dnscrypt_enable: VAR_DNSCRYPT_ENABLE STRING_ARG */ +#line 3298 "./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) @@ -7198,11 +6533,11 @@ yyreduce: else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7202 "util/configparser.c" +#line 6537 "util/configparser.c" break; - case 625: -#line 3293 "./util/configparser.y" + case 627: /* dnsc_dnscrypt_port: VAR_DNSCRYPT_PORT STRING_ARG */ +#line 3308 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -7210,21 +6545,21 @@ yyreduce: else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 7214 "util/configparser.c" +#line 6549 "util/configparser.c" break; - case 626: -#line 3302 "./util/configparser.y" + case 628: /* dnsc_dnscrypt_provider: VAR_DNSCRYPT_PROVIDER STRING_ARG */ +#line 3317 "./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 7224 "util/configparser.c" +#line 6559 "util/configparser.c" break; - case 627: -#line 3309 "./util/configparser.y" + case 629: /* dnsc_dnscrypt_provider_cert: VAR_DNSCRYPT_PROVIDER_CERT STRING_ARG */ +#line 3324 "./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))) @@ -7232,21 +6567,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 7236 "util/configparser.c" +#line 6571 "util/configparser.c" break; - case 628: -#line 3318 "./util/configparser.y" + case 630: /* dnsc_dnscrypt_provider_cert_rotated: VAR_DNSCRYPT_PROVIDER_CERT_ROTATED STRING_ARG */ +#line 3333 "./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 7246 "util/configparser.c" +#line 6581 "util/configparser.c" break; - case 629: -#line 3325 "./util/configparser.y" + case 631: /* dnsc_dnscrypt_secret_key: VAR_DNSCRYPT_SECRET_KEY STRING_ARG */ +#line 3340 "./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))) @@ -7254,22 +6589,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 7258 "util/configparser.c" +#line 6593 "util/configparser.c" break; - case 630: -#line 3334 "./util/configparser.y" + case 632: /* dnsc_dnscrypt_shared_secret_cache_size: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE STRING_ARG */ +#line 3349 "./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 7269 "util/configparser.c" +#line 6604 "util/configparser.c" break; - case 631: -#line 3342 "./util/configparser.y" + case 633: /* dnsc_dnscrypt_shared_secret_cache_slabs: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS STRING_ARG */ +#line 3357 "./util/configparser.y" { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -7281,22 +6616,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 7285 "util/configparser.c" +#line 6620 "util/configparser.c" break; - case 632: -#line 3355 "./util/configparser.y" + case 634: /* dnsc_dnscrypt_nonce_cache_size: VAR_DNSCRYPT_NONCE_CACHE_SIZE STRING_ARG */ +#line 3370 "./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 7296 "util/configparser.c" +#line 6631 "util/configparser.c" break; - case 633: -#line 3363 "./util/configparser.y" + case 635: /* dnsc_dnscrypt_nonce_cache_slabs: VAR_DNSCRYPT_NONCE_CACHE_SLABS STRING_ARG */ +#line 3378 "./util/configparser.y" { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -7308,19 +6643,19 @@ yyreduce: } free((yyvsp[0].str)); } -#line 7312 "util/configparser.c" +#line 6647 "util/configparser.c" break; - case 634: -#line 3376 "./util/configparser.y" + case 636: /* cachedbstart: VAR_CACHEDB */ +#line 3391 "./util/configparser.y" { OUTYY(("\nP(cachedb:)\n")); } -#line 7320 "util/configparser.c" +#line 6655 "util/configparser.c" break; - case 643: -#line 3387 "./util/configparser.y" + case 645: /* cachedb_backend_name: VAR_CACHEDB_BACKEND STRING_ARG */ +#line 3402 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); @@ -7331,11 +6666,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7335 "util/configparser.c" +#line 6670 "util/configparser.c" break; - case 644: -#line 3399 "./util/configparser.y" + case 646: /* cachedb_secret_seed: VAR_CACHEDB_SECRETSEED STRING_ARG */ +#line 3414 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); @@ -7346,11 +6681,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7350 "util/configparser.c" +#line 6685 "util/configparser.c" break; - case 645: -#line 3411 "./util/configparser.y" + case 647: /* redis_server_host: VAR_CACHEDB_REDISHOST STRING_ARG */ +#line 3426 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); @@ -7361,11 +6696,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7365 "util/configparser.c" +#line 6700 "util/configparser.c" break; - case 646: -#line 3423 "./util/configparser.y" + case 648: /* redis_server_port: VAR_CACHEDB_REDISPORT STRING_ARG */ +#line 3438 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; @@ -7379,11 +6714,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 7383 "util/configparser.c" +#line 6718 "util/configparser.c" break; - case 647: -#line 3438 "./util/configparser.y" + case 649: /* redis_timeout: VAR_CACHEDB_REDISTIMEOUT STRING_ARG */ +#line 3453 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); @@ -7395,11 +6730,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 7399 "util/configparser.c" +#line 6734 "util/configparser.c" break; - case 648: -#line 3451 "./util/configparser.y" + case 650: /* redis_expire_records: VAR_CACHEDB_REDISEXPIRERECORDS STRING_ARG */ +#line 3466 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str))); @@ -7411,11 +6746,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 7415 "util/configparser.c" +#line 6750 "util/configparser.c" break; - case 649: -#line 3464 "./util/configparser.y" + case 651: /* server_tcp_connection_limit: VAR_TCP_CONNECTION_LIMIT STRING_ARG STRING_ARG */ +#line 3479 "./util/configparser.y" { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) @@ -7425,19 +6760,19 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 7429 "util/configparser.c" +#line 6764 "util/configparser.c" break; - case 650: -#line 3475 "./util/configparser.y" + case 652: /* ipsetstart: VAR_IPSET */ +#line 3490 "./util/configparser.y" { OUTYY(("\nP(ipset:)\n")); } -#line 7437 "util/configparser.c" +#line 6772 "util/configparser.c" break; - case 655: -#line 3484 "./util/configparser.y" + case 657: /* ipset_name_v4: VAR_IPSET_NAME_V4 STRING_ARG */ +#line 3499 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); @@ -7451,11 +6786,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7455 "util/configparser.c" +#line 6790 "util/configparser.c" break; - case 656: -#line 3499 "./util/configparser.y" + case 658: /* ipset_name_v6: VAR_IPSET_NAME_V6 STRING_ARG */ +#line 3514 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); @@ -7469,11 +6804,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7473 "util/configparser.c" +#line 6808 "util/configparser.c" break; -#line 7477 "util/configparser.c" +#line 6812 "util/configparser.c" default: break; } @@ -7633,13 +6968,13 @@ yyabortlab: yyexhaustedlab: yyerror (YY_("memory exhausted")); yyresult = 2; - /* Fall through. */ + goto yyreturn; #endif -/*-----------------------------------------------------. -| yyreturn -- parsing is finished, return the result. | -`-----------------------------------------------------*/ +/*-------------------------------------------------------. +| yyreturn -- parsing is finished, clean up and return. | +`-------------------------------------------------------*/ yyreturn: if (yychar != YYEMPTY) { @@ -7667,7 +7002,7 @@ yyreturn: return yyresult; } -#line 3513 "./util/configparser.y" +#line 3528 "./util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index aa54b9a17..81766639a 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -1,4 +1,4 @@ -/* A Bison parser, made by GNU Bison 3.6.4. */ +/* A Bison parser, made by GNU Bison 3.7.4. */ /* Bison interface for Yacc-like parsers in C @@ -169,207 +169,209 @@ extern int yydebug; VAR_PYTHON_SCRIPT = 370, /* VAR_PYTHON_SCRIPT */ VAR_VAL_SIG_SKEW_MIN = 371, /* VAR_VAL_SIG_SKEW_MIN */ VAR_VAL_SIG_SKEW_MAX = 372, /* VAR_VAL_SIG_SKEW_MAX */ - VAR_CACHE_MIN_TTL = 373, /* VAR_CACHE_MIN_TTL */ - VAR_VAL_LOG_LEVEL = 374, /* VAR_VAL_LOG_LEVEL */ - VAR_AUTO_TRUST_ANCHOR_FILE = 375, /* VAR_AUTO_TRUST_ANCHOR_FILE */ - VAR_KEEP_MISSING = 376, /* VAR_KEEP_MISSING */ - VAR_ADD_HOLDDOWN = 377, /* VAR_ADD_HOLDDOWN */ - VAR_DEL_HOLDDOWN = 378, /* VAR_DEL_HOLDDOWN */ - VAR_SO_RCVBUF = 379, /* VAR_SO_RCVBUF */ - VAR_EDNS_BUFFER_SIZE = 380, /* VAR_EDNS_BUFFER_SIZE */ - VAR_PREFETCH = 381, /* VAR_PREFETCH */ - VAR_PREFETCH_KEY = 382, /* VAR_PREFETCH_KEY */ - VAR_SO_SNDBUF = 383, /* VAR_SO_SNDBUF */ - VAR_SO_REUSEPORT = 384, /* VAR_SO_REUSEPORT */ - VAR_HARDEN_BELOW_NXDOMAIN = 385, /* VAR_HARDEN_BELOW_NXDOMAIN */ - VAR_IGNORE_CD_FLAG = 386, /* VAR_IGNORE_CD_FLAG */ - VAR_LOG_QUERIES = 387, /* VAR_LOG_QUERIES */ - VAR_LOG_REPLIES = 388, /* VAR_LOG_REPLIES */ - VAR_LOG_LOCAL_ACTIONS = 389, /* VAR_LOG_LOCAL_ACTIONS */ - VAR_TCP_UPSTREAM = 390, /* VAR_TCP_UPSTREAM */ - VAR_SSL_UPSTREAM = 391, /* VAR_SSL_UPSTREAM */ - VAR_TCP_AUTH_QUERY_TIMEOUT = 392, /* VAR_TCP_AUTH_QUERY_TIMEOUT */ - VAR_SSL_SERVICE_KEY = 393, /* VAR_SSL_SERVICE_KEY */ - VAR_SSL_SERVICE_PEM = 394, /* VAR_SSL_SERVICE_PEM */ - VAR_SSL_PORT = 395, /* VAR_SSL_PORT */ - VAR_FORWARD_FIRST = 396, /* VAR_FORWARD_FIRST */ - VAR_STUB_SSL_UPSTREAM = 397, /* VAR_STUB_SSL_UPSTREAM */ - VAR_FORWARD_SSL_UPSTREAM = 398, /* VAR_FORWARD_SSL_UPSTREAM */ - VAR_TLS_CERT_BUNDLE = 399, /* VAR_TLS_CERT_BUNDLE */ - VAR_HTTPS_PORT = 400, /* VAR_HTTPS_PORT */ - VAR_HTTP_ENDPOINT = 401, /* VAR_HTTP_ENDPOINT */ - VAR_HTTP_MAX_STREAMS = 402, /* VAR_HTTP_MAX_STREAMS */ - VAR_HTTP_QUERY_BUFFER_SIZE = 403, /* VAR_HTTP_QUERY_BUFFER_SIZE */ - VAR_HTTP_RESPONSE_BUFFER_SIZE = 404, /* VAR_HTTP_RESPONSE_BUFFER_SIZE */ - VAR_HTTP_NODELAY = 405, /* VAR_HTTP_NODELAY */ - VAR_HTTP_NOTLS_DOWNSTREAM = 406, /* VAR_HTTP_NOTLS_DOWNSTREAM */ - VAR_STUB_FIRST = 407, /* VAR_STUB_FIRST */ - VAR_MINIMAL_RESPONSES = 408, /* VAR_MINIMAL_RESPONSES */ - VAR_RRSET_ROUNDROBIN = 409, /* VAR_RRSET_ROUNDROBIN */ - VAR_MAX_UDP_SIZE = 410, /* VAR_MAX_UDP_SIZE */ - VAR_DELAY_CLOSE = 411, /* VAR_DELAY_CLOSE */ - VAR_UDP_CONNECT = 412, /* VAR_UDP_CONNECT */ - VAR_UNBLOCK_LAN_ZONES = 413, /* VAR_UNBLOCK_LAN_ZONES */ - VAR_INSECURE_LAN_ZONES = 414, /* VAR_INSECURE_LAN_ZONES */ - VAR_INFRA_CACHE_MIN_RTT = 415, /* VAR_INFRA_CACHE_MIN_RTT */ - VAR_INFRA_KEEP_PROBING = 416, /* VAR_INFRA_KEEP_PROBING */ - VAR_DNS64_PREFIX = 417, /* VAR_DNS64_PREFIX */ - VAR_DNS64_SYNTHALL = 418, /* VAR_DNS64_SYNTHALL */ - VAR_DNS64_IGNORE_AAAA = 419, /* VAR_DNS64_IGNORE_AAAA */ - VAR_DNSTAP = 420, /* VAR_DNSTAP */ - VAR_DNSTAP_ENABLE = 421, /* VAR_DNSTAP_ENABLE */ - VAR_DNSTAP_SOCKET_PATH = 422, /* VAR_DNSTAP_SOCKET_PATH */ - VAR_DNSTAP_IP = 423, /* VAR_DNSTAP_IP */ - VAR_DNSTAP_TLS = 424, /* VAR_DNSTAP_TLS */ - VAR_DNSTAP_TLS_SERVER_NAME = 425, /* VAR_DNSTAP_TLS_SERVER_NAME */ - VAR_DNSTAP_TLS_CERT_BUNDLE = 426, /* VAR_DNSTAP_TLS_CERT_BUNDLE */ - VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 427, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE */ - VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 428, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE */ - VAR_DNSTAP_SEND_IDENTITY = 429, /* VAR_DNSTAP_SEND_IDENTITY */ - VAR_DNSTAP_SEND_VERSION = 430, /* VAR_DNSTAP_SEND_VERSION */ - VAR_DNSTAP_BIDIRECTIONAL = 431, /* VAR_DNSTAP_BIDIRECTIONAL */ - VAR_DNSTAP_IDENTITY = 432, /* VAR_DNSTAP_IDENTITY */ - VAR_DNSTAP_VERSION = 433, /* VAR_DNSTAP_VERSION */ - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 434, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES */ - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 435, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES */ - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 436, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES */ - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 437, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES */ - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 438, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES */ - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 439, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES */ - VAR_RESPONSE_IP_TAG = 440, /* VAR_RESPONSE_IP_TAG */ - VAR_RESPONSE_IP = 441, /* VAR_RESPONSE_IP */ - VAR_RESPONSE_IP_DATA = 442, /* VAR_RESPONSE_IP_DATA */ - VAR_HARDEN_ALGO_DOWNGRADE = 443, /* VAR_HARDEN_ALGO_DOWNGRADE */ - VAR_IP_TRANSPARENT = 444, /* VAR_IP_TRANSPARENT */ - VAR_IP_DSCP = 445, /* VAR_IP_DSCP */ - VAR_DISABLE_DNSSEC_LAME_CHECK = 446, /* VAR_DISABLE_DNSSEC_LAME_CHECK */ - VAR_IP_RATELIMIT = 447, /* VAR_IP_RATELIMIT */ - VAR_IP_RATELIMIT_SLABS = 448, /* VAR_IP_RATELIMIT_SLABS */ - VAR_IP_RATELIMIT_SIZE = 449, /* VAR_IP_RATELIMIT_SIZE */ - VAR_RATELIMIT = 450, /* VAR_RATELIMIT */ - VAR_RATELIMIT_SLABS = 451, /* VAR_RATELIMIT_SLABS */ - VAR_RATELIMIT_SIZE = 452, /* VAR_RATELIMIT_SIZE */ - VAR_RATELIMIT_FOR_DOMAIN = 453, /* VAR_RATELIMIT_FOR_DOMAIN */ - VAR_RATELIMIT_BELOW_DOMAIN = 454, /* VAR_RATELIMIT_BELOW_DOMAIN */ - VAR_IP_RATELIMIT_FACTOR = 455, /* VAR_IP_RATELIMIT_FACTOR */ - VAR_RATELIMIT_FACTOR = 456, /* VAR_RATELIMIT_FACTOR */ - VAR_SEND_CLIENT_SUBNET = 457, /* VAR_SEND_CLIENT_SUBNET */ - VAR_CLIENT_SUBNET_ZONE = 458, /* VAR_CLIENT_SUBNET_ZONE */ - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 459, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ - VAR_CLIENT_SUBNET_OPCODE = 460, /* VAR_CLIENT_SUBNET_OPCODE */ - VAR_MAX_CLIENT_SUBNET_IPV4 = 461, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ - VAR_MAX_CLIENT_SUBNET_IPV6 = 462, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ - VAR_MIN_CLIENT_SUBNET_IPV4 = 463, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ - VAR_MIN_CLIENT_SUBNET_IPV6 = 464, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ - VAR_MAX_ECS_TREE_SIZE_IPV4 = 465, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ - VAR_MAX_ECS_TREE_SIZE_IPV6 = 466, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ - VAR_CAPS_WHITELIST = 467, /* VAR_CAPS_WHITELIST */ - VAR_CACHE_MAX_NEGATIVE_TTL = 468, /* VAR_CACHE_MAX_NEGATIVE_TTL */ - VAR_PERMIT_SMALL_HOLDDOWN = 469, /* VAR_PERMIT_SMALL_HOLDDOWN */ - VAR_QNAME_MINIMISATION = 470, /* VAR_QNAME_MINIMISATION */ - VAR_QNAME_MINIMISATION_STRICT = 471, /* VAR_QNAME_MINIMISATION_STRICT */ - VAR_IP_FREEBIND = 472, /* VAR_IP_FREEBIND */ - VAR_DEFINE_TAG = 473, /* VAR_DEFINE_TAG */ - VAR_LOCAL_ZONE_TAG = 474, /* VAR_LOCAL_ZONE_TAG */ - VAR_ACCESS_CONTROL_TAG = 475, /* VAR_ACCESS_CONTROL_TAG */ - VAR_LOCAL_ZONE_OVERRIDE = 476, /* VAR_LOCAL_ZONE_OVERRIDE */ - VAR_ACCESS_CONTROL_TAG_ACTION = 477, /* VAR_ACCESS_CONTROL_TAG_ACTION */ - VAR_ACCESS_CONTROL_TAG_DATA = 478, /* VAR_ACCESS_CONTROL_TAG_DATA */ - VAR_VIEW = 479, /* VAR_VIEW */ - VAR_ACCESS_CONTROL_VIEW = 480, /* VAR_ACCESS_CONTROL_VIEW */ - VAR_VIEW_FIRST = 481, /* VAR_VIEW_FIRST */ - VAR_SERVE_EXPIRED = 482, /* VAR_SERVE_EXPIRED */ - VAR_SERVE_EXPIRED_TTL = 483, /* VAR_SERVE_EXPIRED_TTL */ - VAR_SERVE_EXPIRED_TTL_RESET = 484, /* VAR_SERVE_EXPIRED_TTL_RESET */ - VAR_SERVE_EXPIRED_REPLY_TTL = 485, /* VAR_SERVE_EXPIRED_REPLY_TTL */ - VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 486, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ - VAR_SERVE_ORIGINAL_TTL = 487, /* VAR_SERVE_ORIGINAL_TTL */ - VAR_FAKE_DSA = 488, /* VAR_FAKE_DSA */ - VAR_FAKE_SHA1 = 489, /* VAR_FAKE_SHA1 */ - VAR_LOG_IDENTITY = 490, /* VAR_LOG_IDENTITY */ - VAR_HIDE_TRUSTANCHOR = 491, /* VAR_HIDE_TRUSTANCHOR */ - VAR_TRUST_ANCHOR_SIGNALING = 492, /* VAR_TRUST_ANCHOR_SIGNALING */ - VAR_AGGRESSIVE_NSEC = 493, /* VAR_AGGRESSIVE_NSEC */ - VAR_USE_SYSTEMD = 494, /* VAR_USE_SYSTEMD */ - VAR_SHM_ENABLE = 495, /* VAR_SHM_ENABLE */ - VAR_SHM_KEY = 496, /* VAR_SHM_KEY */ - VAR_ROOT_KEY_SENTINEL = 497, /* VAR_ROOT_KEY_SENTINEL */ - VAR_DNSCRYPT = 498, /* VAR_DNSCRYPT */ - VAR_DNSCRYPT_ENABLE = 499, /* VAR_DNSCRYPT_ENABLE */ - VAR_DNSCRYPT_PORT = 500, /* VAR_DNSCRYPT_PORT */ - VAR_DNSCRYPT_PROVIDER = 501, /* VAR_DNSCRYPT_PROVIDER */ - VAR_DNSCRYPT_SECRET_KEY = 502, /* VAR_DNSCRYPT_SECRET_KEY */ - VAR_DNSCRYPT_PROVIDER_CERT = 503, /* VAR_DNSCRYPT_PROVIDER_CERT */ - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 504, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 505, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 506, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 507, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 508, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ - VAR_PAD_RESPONSES = 509, /* VAR_PAD_RESPONSES */ - VAR_PAD_RESPONSES_BLOCK_SIZE = 510, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ - VAR_PAD_QUERIES = 511, /* VAR_PAD_QUERIES */ - VAR_PAD_QUERIES_BLOCK_SIZE = 512, /* VAR_PAD_QUERIES_BLOCK_SIZE */ - VAR_IPSECMOD_ENABLED = 513, /* VAR_IPSECMOD_ENABLED */ - VAR_IPSECMOD_HOOK = 514, /* VAR_IPSECMOD_HOOK */ - VAR_IPSECMOD_IGNORE_BOGUS = 515, /* VAR_IPSECMOD_IGNORE_BOGUS */ - VAR_IPSECMOD_MAX_TTL = 516, /* VAR_IPSECMOD_MAX_TTL */ - VAR_IPSECMOD_WHITELIST = 517, /* VAR_IPSECMOD_WHITELIST */ - VAR_IPSECMOD_STRICT = 518, /* VAR_IPSECMOD_STRICT */ - VAR_CACHEDB = 519, /* VAR_CACHEDB */ - VAR_CACHEDB_BACKEND = 520, /* VAR_CACHEDB_BACKEND */ - VAR_CACHEDB_SECRETSEED = 521, /* VAR_CACHEDB_SECRETSEED */ - VAR_CACHEDB_REDISHOST = 522, /* VAR_CACHEDB_REDISHOST */ - VAR_CACHEDB_REDISPORT = 523, /* VAR_CACHEDB_REDISPORT */ - VAR_CACHEDB_REDISTIMEOUT = 524, /* VAR_CACHEDB_REDISTIMEOUT */ - VAR_CACHEDB_REDISEXPIRERECORDS = 525, /* VAR_CACHEDB_REDISEXPIRERECORDS */ - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 526, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ - VAR_FOR_UPSTREAM = 527, /* VAR_FOR_UPSTREAM */ - VAR_AUTH_ZONE = 528, /* VAR_AUTH_ZONE */ - VAR_ZONEFILE = 529, /* VAR_ZONEFILE */ - VAR_MASTER = 530, /* VAR_MASTER */ - VAR_URL = 531, /* VAR_URL */ - VAR_FOR_DOWNSTREAM = 532, /* VAR_FOR_DOWNSTREAM */ - VAR_FALLBACK_ENABLED = 533, /* VAR_FALLBACK_ENABLED */ - VAR_TLS_ADDITIONAL_PORT = 534, /* VAR_TLS_ADDITIONAL_PORT */ - VAR_LOW_RTT = 535, /* VAR_LOW_RTT */ - VAR_LOW_RTT_PERMIL = 536, /* VAR_LOW_RTT_PERMIL */ - VAR_FAST_SERVER_PERMIL = 537, /* VAR_FAST_SERVER_PERMIL */ - VAR_FAST_SERVER_NUM = 538, /* VAR_FAST_SERVER_NUM */ - VAR_ALLOW_NOTIFY = 539, /* VAR_ALLOW_NOTIFY */ - VAR_TLS_WIN_CERT = 540, /* VAR_TLS_WIN_CERT */ - VAR_TCP_CONNECTION_LIMIT = 541, /* VAR_TCP_CONNECTION_LIMIT */ - VAR_FORWARD_NO_CACHE = 542, /* VAR_FORWARD_NO_CACHE */ - VAR_STUB_NO_CACHE = 543, /* VAR_STUB_NO_CACHE */ - VAR_LOG_SERVFAIL = 544, /* VAR_LOG_SERVFAIL */ - VAR_DENY_ANY = 545, /* VAR_DENY_ANY */ - VAR_UNKNOWN_SERVER_TIME_LIMIT = 546, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ - VAR_LOG_TAG_QUERYREPLY = 547, /* VAR_LOG_TAG_QUERYREPLY */ - VAR_STREAM_WAIT_SIZE = 548, /* VAR_STREAM_WAIT_SIZE */ - VAR_TLS_CIPHERS = 549, /* VAR_TLS_CIPHERS */ - VAR_TLS_CIPHERSUITES = 550, /* VAR_TLS_CIPHERSUITES */ - VAR_TLS_USE_SNI = 551, /* VAR_TLS_USE_SNI */ - VAR_IPSET = 552, /* VAR_IPSET */ - VAR_IPSET_NAME_V4 = 553, /* VAR_IPSET_NAME_V4 */ - VAR_IPSET_NAME_V6 = 554, /* VAR_IPSET_NAME_V6 */ - VAR_TLS_SESSION_TICKET_KEYS = 555, /* VAR_TLS_SESSION_TICKET_KEYS */ - VAR_RPZ = 556, /* VAR_RPZ */ - VAR_TAGS = 557, /* VAR_TAGS */ - VAR_RPZ_ACTION_OVERRIDE = 558, /* VAR_RPZ_ACTION_OVERRIDE */ - VAR_RPZ_CNAME_OVERRIDE = 559, /* VAR_RPZ_CNAME_OVERRIDE */ - VAR_RPZ_LOG = 560, /* VAR_RPZ_LOG */ - VAR_RPZ_LOG_NAME = 561, /* VAR_RPZ_LOG_NAME */ - VAR_DYNLIB = 562, /* VAR_DYNLIB */ - VAR_DYNLIB_FILE = 563, /* VAR_DYNLIB_FILE */ - VAR_EDNS_CLIENT_STRING = 564, /* VAR_EDNS_CLIENT_STRING */ - VAR_EDNS_CLIENT_STRING_OPCODE = 565, /* VAR_EDNS_CLIENT_STRING_OPCODE */ - VAR_NSID = 566, /* VAR_NSID */ - VAR_ZONEMD_PERMISSIVE_MODE = 567, /* VAR_ZONEMD_PERMISSIVE_MODE */ - VAR_ZONEMD_CHECK = 568, /* VAR_ZONEMD_CHECK */ - VAR_ZONEMD_REJECT_ABSENCE = 569 /* VAR_ZONEMD_REJECT_ABSENCE */ + VAR_VAL_MAX_RESTART = 373, /* VAR_VAL_MAX_RESTART */ + VAR_CACHE_MIN_TTL = 374, /* VAR_CACHE_MIN_TTL */ + VAR_VAL_LOG_LEVEL = 375, /* VAR_VAL_LOG_LEVEL */ + VAR_AUTO_TRUST_ANCHOR_FILE = 376, /* VAR_AUTO_TRUST_ANCHOR_FILE */ + VAR_KEEP_MISSING = 377, /* VAR_KEEP_MISSING */ + VAR_ADD_HOLDDOWN = 378, /* VAR_ADD_HOLDDOWN */ + VAR_DEL_HOLDDOWN = 379, /* VAR_DEL_HOLDDOWN */ + VAR_SO_RCVBUF = 380, /* VAR_SO_RCVBUF */ + VAR_EDNS_BUFFER_SIZE = 381, /* VAR_EDNS_BUFFER_SIZE */ + VAR_PREFETCH = 382, /* VAR_PREFETCH */ + VAR_PREFETCH_KEY = 383, /* VAR_PREFETCH_KEY */ + VAR_SO_SNDBUF = 384, /* VAR_SO_SNDBUF */ + VAR_SO_REUSEPORT = 385, /* VAR_SO_REUSEPORT */ + VAR_HARDEN_BELOW_NXDOMAIN = 386, /* VAR_HARDEN_BELOW_NXDOMAIN */ + VAR_IGNORE_CD_FLAG = 387, /* VAR_IGNORE_CD_FLAG */ + VAR_LOG_QUERIES = 388, /* VAR_LOG_QUERIES */ + VAR_LOG_REPLIES = 389, /* VAR_LOG_REPLIES */ + VAR_LOG_LOCAL_ACTIONS = 390, /* VAR_LOG_LOCAL_ACTIONS */ + VAR_TCP_UPSTREAM = 391, /* VAR_TCP_UPSTREAM */ + VAR_SSL_UPSTREAM = 392, /* VAR_SSL_UPSTREAM */ + VAR_TCP_AUTH_QUERY_TIMEOUT = 393, /* VAR_TCP_AUTH_QUERY_TIMEOUT */ + VAR_SSL_SERVICE_KEY = 394, /* VAR_SSL_SERVICE_KEY */ + VAR_SSL_SERVICE_PEM = 395, /* VAR_SSL_SERVICE_PEM */ + VAR_SSL_PORT = 396, /* VAR_SSL_PORT */ + VAR_FORWARD_FIRST = 397, /* VAR_FORWARD_FIRST */ + VAR_STUB_SSL_UPSTREAM = 398, /* VAR_STUB_SSL_UPSTREAM */ + VAR_FORWARD_SSL_UPSTREAM = 399, /* VAR_FORWARD_SSL_UPSTREAM */ + VAR_TLS_CERT_BUNDLE = 400, /* VAR_TLS_CERT_BUNDLE */ + VAR_HTTPS_PORT = 401, /* VAR_HTTPS_PORT */ + VAR_HTTP_ENDPOINT = 402, /* VAR_HTTP_ENDPOINT */ + VAR_HTTP_MAX_STREAMS = 403, /* VAR_HTTP_MAX_STREAMS */ + VAR_HTTP_QUERY_BUFFER_SIZE = 404, /* VAR_HTTP_QUERY_BUFFER_SIZE */ + VAR_HTTP_RESPONSE_BUFFER_SIZE = 405, /* VAR_HTTP_RESPONSE_BUFFER_SIZE */ + VAR_HTTP_NODELAY = 406, /* VAR_HTTP_NODELAY */ + VAR_HTTP_NOTLS_DOWNSTREAM = 407, /* VAR_HTTP_NOTLS_DOWNSTREAM */ + VAR_STUB_FIRST = 408, /* VAR_STUB_FIRST */ + VAR_MINIMAL_RESPONSES = 409, /* VAR_MINIMAL_RESPONSES */ + VAR_RRSET_ROUNDROBIN = 410, /* VAR_RRSET_ROUNDROBIN */ + VAR_MAX_UDP_SIZE = 411, /* VAR_MAX_UDP_SIZE */ + VAR_DELAY_CLOSE = 412, /* VAR_DELAY_CLOSE */ + VAR_UDP_CONNECT = 413, /* VAR_UDP_CONNECT */ + VAR_UNBLOCK_LAN_ZONES = 414, /* VAR_UNBLOCK_LAN_ZONES */ + VAR_INSECURE_LAN_ZONES = 415, /* VAR_INSECURE_LAN_ZONES */ + VAR_INFRA_CACHE_MIN_RTT = 416, /* VAR_INFRA_CACHE_MIN_RTT */ + VAR_INFRA_KEEP_PROBING = 417, /* VAR_INFRA_KEEP_PROBING */ + VAR_DNS64_PREFIX = 418, /* VAR_DNS64_PREFIX */ + VAR_DNS64_SYNTHALL = 419, /* VAR_DNS64_SYNTHALL */ + VAR_DNS64_IGNORE_AAAA = 420, /* VAR_DNS64_IGNORE_AAAA */ + VAR_DNSTAP = 421, /* VAR_DNSTAP */ + VAR_DNSTAP_ENABLE = 422, /* VAR_DNSTAP_ENABLE */ + VAR_DNSTAP_SOCKET_PATH = 423, /* VAR_DNSTAP_SOCKET_PATH */ + VAR_DNSTAP_IP = 424, /* VAR_DNSTAP_IP */ + VAR_DNSTAP_TLS = 425, /* VAR_DNSTAP_TLS */ + VAR_DNSTAP_TLS_SERVER_NAME = 426, /* VAR_DNSTAP_TLS_SERVER_NAME */ + VAR_DNSTAP_TLS_CERT_BUNDLE = 427, /* VAR_DNSTAP_TLS_CERT_BUNDLE */ + VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 428, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE */ + VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 429, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE */ + VAR_DNSTAP_SEND_IDENTITY = 430, /* VAR_DNSTAP_SEND_IDENTITY */ + VAR_DNSTAP_SEND_VERSION = 431, /* VAR_DNSTAP_SEND_VERSION */ + VAR_DNSTAP_BIDIRECTIONAL = 432, /* VAR_DNSTAP_BIDIRECTIONAL */ + VAR_DNSTAP_IDENTITY = 433, /* VAR_DNSTAP_IDENTITY */ + VAR_DNSTAP_VERSION = 434, /* VAR_DNSTAP_VERSION */ + VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 435, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES */ + VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 436, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES */ + VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 437, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES */ + VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 438, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES */ + VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 439, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES */ + VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 440, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES */ + VAR_RESPONSE_IP_TAG = 441, /* VAR_RESPONSE_IP_TAG */ + VAR_RESPONSE_IP = 442, /* VAR_RESPONSE_IP */ + VAR_RESPONSE_IP_DATA = 443, /* VAR_RESPONSE_IP_DATA */ + VAR_HARDEN_ALGO_DOWNGRADE = 444, /* VAR_HARDEN_ALGO_DOWNGRADE */ + VAR_IP_TRANSPARENT = 445, /* VAR_IP_TRANSPARENT */ + VAR_IP_DSCP = 446, /* VAR_IP_DSCP */ + VAR_DISABLE_DNSSEC_LAME_CHECK = 447, /* VAR_DISABLE_DNSSEC_LAME_CHECK */ + VAR_IP_RATELIMIT = 448, /* VAR_IP_RATELIMIT */ + VAR_IP_RATELIMIT_SLABS = 449, /* VAR_IP_RATELIMIT_SLABS */ + VAR_IP_RATELIMIT_SIZE = 450, /* VAR_IP_RATELIMIT_SIZE */ + VAR_RATELIMIT = 451, /* VAR_RATELIMIT */ + VAR_RATELIMIT_SLABS = 452, /* VAR_RATELIMIT_SLABS */ + VAR_RATELIMIT_SIZE = 453, /* VAR_RATELIMIT_SIZE */ + VAR_RATELIMIT_FOR_DOMAIN = 454, /* VAR_RATELIMIT_FOR_DOMAIN */ + VAR_RATELIMIT_BELOW_DOMAIN = 455, /* VAR_RATELIMIT_BELOW_DOMAIN */ + VAR_IP_RATELIMIT_FACTOR = 456, /* VAR_IP_RATELIMIT_FACTOR */ + VAR_RATELIMIT_FACTOR = 457, /* VAR_RATELIMIT_FACTOR */ + VAR_SEND_CLIENT_SUBNET = 458, /* VAR_SEND_CLIENT_SUBNET */ + VAR_CLIENT_SUBNET_ZONE = 459, /* VAR_CLIENT_SUBNET_ZONE */ + VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 460, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ + VAR_CLIENT_SUBNET_OPCODE = 461, /* VAR_CLIENT_SUBNET_OPCODE */ + VAR_MAX_CLIENT_SUBNET_IPV4 = 462, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ + VAR_MAX_CLIENT_SUBNET_IPV6 = 463, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ + VAR_MIN_CLIENT_SUBNET_IPV4 = 464, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ + VAR_MIN_CLIENT_SUBNET_IPV6 = 465, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ + VAR_MAX_ECS_TREE_SIZE_IPV4 = 466, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ + VAR_MAX_ECS_TREE_SIZE_IPV6 = 467, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ + VAR_CAPS_WHITELIST = 468, /* VAR_CAPS_WHITELIST */ + VAR_CACHE_MAX_NEGATIVE_TTL = 469, /* VAR_CACHE_MAX_NEGATIVE_TTL */ + VAR_PERMIT_SMALL_HOLDDOWN = 470, /* VAR_PERMIT_SMALL_HOLDDOWN */ + VAR_QNAME_MINIMISATION = 471, /* VAR_QNAME_MINIMISATION */ + VAR_QNAME_MINIMISATION_STRICT = 472, /* VAR_QNAME_MINIMISATION_STRICT */ + VAR_IP_FREEBIND = 473, /* VAR_IP_FREEBIND */ + VAR_DEFINE_TAG = 474, /* VAR_DEFINE_TAG */ + VAR_LOCAL_ZONE_TAG = 475, /* VAR_LOCAL_ZONE_TAG */ + VAR_ACCESS_CONTROL_TAG = 476, /* VAR_ACCESS_CONTROL_TAG */ + VAR_LOCAL_ZONE_OVERRIDE = 477, /* VAR_LOCAL_ZONE_OVERRIDE */ + VAR_ACCESS_CONTROL_TAG_ACTION = 478, /* VAR_ACCESS_CONTROL_TAG_ACTION */ + VAR_ACCESS_CONTROL_TAG_DATA = 479, /* VAR_ACCESS_CONTROL_TAG_DATA */ + VAR_VIEW = 480, /* VAR_VIEW */ + VAR_ACCESS_CONTROL_VIEW = 481, /* VAR_ACCESS_CONTROL_VIEW */ + VAR_VIEW_FIRST = 482, /* VAR_VIEW_FIRST */ + VAR_SERVE_EXPIRED = 483, /* VAR_SERVE_EXPIRED */ + VAR_SERVE_EXPIRED_TTL = 484, /* VAR_SERVE_EXPIRED_TTL */ + VAR_SERVE_EXPIRED_TTL_RESET = 485, /* VAR_SERVE_EXPIRED_TTL_RESET */ + VAR_SERVE_EXPIRED_REPLY_TTL = 486, /* VAR_SERVE_EXPIRED_REPLY_TTL */ + VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 487, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ + VAR_SERVE_ORIGINAL_TTL = 488, /* VAR_SERVE_ORIGINAL_TTL */ + VAR_FAKE_DSA = 489, /* VAR_FAKE_DSA */ + VAR_FAKE_SHA1 = 490, /* VAR_FAKE_SHA1 */ + VAR_LOG_IDENTITY = 491, /* VAR_LOG_IDENTITY */ + VAR_HIDE_TRUSTANCHOR = 492, /* VAR_HIDE_TRUSTANCHOR */ + VAR_TRUST_ANCHOR_SIGNALING = 493, /* VAR_TRUST_ANCHOR_SIGNALING */ + VAR_AGGRESSIVE_NSEC = 494, /* VAR_AGGRESSIVE_NSEC */ + VAR_USE_SYSTEMD = 495, /* VAR_USE_SYSTEMD */ + VAR_SHM_ENABLE = 496, /* VAR_SHM_ENABLE */ + VAR_SHM_KEY = 497, /* VAR_SHM_KEY */ + VAR_ROOT_KEY_SENTINEL = 498, /* VAR_ROOT_KEY_SENTINEL */ + VAR_DNSCRYPT = 499, /* VAR_DNSCRYPT */ + VAR_DNSCRYPT_ENABLE = 500, /* VAR_DNSCRYPT_ENABLE */ + VAR_DNSCRYPT_PORT = 501, /* VAR_DNSCRYPT_PORT */ + VAR_DNSCRYPT_PROVIDER = 502, /* VAR_DNSCRYPT_PROVIDER */ + VAR_DNSCRYPT_SECRET_KEY = 503, /* VAR_DNSCRYPT_SECRET_KEY */ + VAR_DNSCRYPT_PROVIDER_CERT = 504, /* VAR_DNSCRYPT_PROVIDER_CERT */ + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 505, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 506, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 507, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 508, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 509, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ + VAR_PAD_RESPONSES = 510, /* VAR_PAD_RESPONSES */ + VAR_PAD_RESPONSES_BLOCK_SIZE = 511, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ + VAR_PAD_QUERIES = 512, /* VAR_PAD_QUERIES */ + VAR_PAD_QUERIES_BLOCK_SIZE = 513, /* VAR_PAD_QUERIES_BLOCK_SIZE */ + VAR_IPSECMOD_ENABLED = 514, /* VAR_IPSECMOD_ENABLED */ + VAR_IPSECMOD_HOOK = 515, /* VAR_IPSECMOD_HOOK */ + VAR_IPSECMOD_IGNORE_BOGUS = 516, /* VAR_IPSECMOD_IGNORE_BOGUS */ + VAR_IPSECMOD_MAX_TTL = 517, /* VAR_IPSECMOD_MAX_TTL */ + VAR_IPSECMOD_WHITELIST = 518, /* VAR_IPSECMOD_WHITELIST */ + VAR_IPSECMOD_STRICT = 519, /* VAR_IPSECMOD_STRICT */ + VAR_CACHEDB = 520, /* VAR_CACHEDB */ + VAR_CACHEDB_BACKEND = 521, /* VAR_CACHEDB_BACKEND */ + VAR_CACHEDB_SECRETSEED = 522, /* VAR_CACHEDB_SECRETSEED */ + VAR_CACHEDB_REDISHOST = 523, /* VAR_CACHEDB_REDISHOST */ + VAR_CACHEDB_REDISPORT = 524, /* VAR_CACHEDB_REDISPORT */ + VAR_CACHEDB_REDISTIMEOUT = 525, /* VAR_CACHEDB_REDISTIMEOUT */ + VAR_CACHEDB_REDISEXPIRERECORDS = 526, /* VAR_CACHEDB_REDISEXPIRERECORDS */ + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 527, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ + VAR_FOR_UPSTREAM = 528, /* VAR_FOR_UPSTREAM */ + VAR_AUTH_ZONE = 529, /* VAR_AUTH_ZONE */ + VAR_ZONEFILE = 530, /* VAR_ZONEFILE */ + VAR_MASTER = 531, /* VAR_MASTER */ + VAR_URL = 532, /* VAR_URL */ + VAR_FOR_DOWNSTREAM = 533, /* VAR_FOR_DOWNSTREAM */ + VAR_FALLBACK_ENABLED = 534, /* VAR_FALLBACK_ENABLED */ + VAR_TLS_ADDITIONAL_PORT = 535, /* VAR_TLS_ADDITIONAL_PORT */ + VAR_LOW_RTT = 536, /* VAR_LOW_RTT */ + VAR_LOW_RTT_PERMIL = 537, /* VAR_LOW_RTT_PERMIL */ + VAR_FAST_SERVER_PERMIL = 538, /* VAR_FAST_SERVER_PERMIL */ + VAR_FAST_SERVER_NUM = 539, /* VAR_FAST_SERVER_NUM */ + VAR_ALLOW_NOTIFY = 540, /* VAR_ALLOW_NOTIFY */ + VAR_TLS_WIN_CERT = 541, /* VAR_TLS_WIN_CERT */ + VAR_TCP_CONNECTION_LIMIT = 542, /* VAR_TCP_CONNECTION_LIMIT */ + VAR_FORWARD_NO_CACHE = 543, /* VAR_FORWARD_NO_CACHE */ + VAR_STUB_NO_CACHE = 544, /* VAR_STUB_NO_CACHE */ + VAR_LOG_SERVFAIL = 545, /* VAR_LOG_SERVFAIL */ + VAR_DENY_ANY = 546, /* VAR_DENY_ANY */ + VAR_UNKNOWN_SERVER_TIME_LIMIT = 547, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ + VAR_LOG_TAG_QUERYREPLY = 548, /* VAR_LOG_TAG_QUERYREPLY */ + VAR_STREAM_WAIT_SIZE = 549, /* VAR_STREAM_WAIT_SIZE */ + VAR_TLS_CIPHERS = 550, /* VAR_TLS_CIPHERS */ + VAR_TLS_CIPHERSUITES = 551, /* VAR_TLS_CIPHERSUITES */ + VAR_TLS_USE_SNI = 552, /* VAR_TLS_USE_SNI */ + VAR_IPSET = 553, /* VAR_IPSET */ + VAR_IPSET_NAME_V4 = 554, /* VAR_IPSET_NAME_V4 */ + VAR_IPSET_NAME_V6 = 555, /* VAR_IPSET_NAME_V6 */ + VAR_TLS_SESSION_TICKET_KEYS = 556, /* VAR_TLS_SESSION_TICKET_KEYS */ + VAR_RPZ = 557, /* VAR_RPZ */ + VAR_TAGS = 558, /* VAR_TAGS */ + VAR_RPZ_ACTION_OVERRIDE = 559, /* VAR_RPZ_ACTION_OVERRIDE */ + VAR_RPZ_CNAME_OVERRIDE = 560, /* VAR_RPZ_CNAME_OVERRIDE */ + VAR_RPZ_LOG = 561, /* VAR_RPZ_LOG */ + VAR_RPZ_LOG_NAME = 562, /* VAR_RPZ_LOG_NAME */ + VAR_DYNLIB = 563, /* VAR_DYNLIB */ + VAR_DYNLIB_FILE = 564, /* VAR_DYNLIB_FILE */ + VAR_EDNS_CLIENT_STRING = 565, /* VAR_EDNS_CLIENT_STRING */ + VAR_EDNS_CLIENT_STRING_OPCODE = 566, /* VAR_EDNS_CLIENT_STRING_OPCODE */ + VAR_NSID = 567, /* VAR_NSID */ + VAR_ZONEMD_PERMISSIVE_MODE = 568, /* VAR_ZONEMD_PERMISSIVE_MODE */ + VAR_ZONEMD_CHECK = 569, /* VAR_ZONEMD_CHECK */ + VAR_ZONEMD_REJECT_ABSENCE = 570 /* VAR_ZONEMD_REJECT_ABSENCE */ }; typedef enum yytokentype yytoken_kind_t; #endif /* Token kinds. */ +#define YYEMPTY -2 #define YYEOF 0 #define YYerror 256 #define YYUNDEF 257 @@ -488,203 +490,204 @@ extern int yydebug; #define VAR_PYTHON_SCRIPT 370 #define VAR_VAL_SIG_SKEW_MIN 371 #define VAR_VAL_SIG_SKEW_MAX 372 -#define VAR_CACHE_MIN_TTL 373 -#define VAR_VAL_LOG_LEVEL 374 -#define VAR_AUTO_TRUST_ANCHOR_FILE 375 -#define VAR_KEEP_MISSING 376 -#define VAR_ADD_HOLDDOWN 377 -#define VAR_DEL_HOLDDOWN 378 -#define VAR_SO_RCVBUF 379 -#define VAR_EDNS_BUFFER_SIZE 380 -#define VAR_PREFETCH 381 -#define VAR_PREFETCH_KEY 382 -#define VAR_SO_SNDBUF 383 -#define VAR_SO_REUSEPORT 384 -#define VAR_HARDEN_BELOW_NXDOMAIN 385 -#define VAR_IGNORE_CD_FLAG 386 -#define VAR_LOG_QUERIES 387 -#define VAR_LOG_REPLIES 388 -#define VAR_LOG_LOCAL_ACTIONS 389 -#define VAR_TCP_UPSTREAM 390 -#define VAR_SSL_UPSTREAM 391 -#define VAR_TCP_AUTH_QUERY_TIMEOUT 392 -#define VAR_SSL_SERVICE_KEY 393 -#define VAR_SSL_SERVICE_PEM 394 -#define VAR_SSL_PORT 395 -#define VAR_FORWARD_FIRST 396 -#define VAR_STUB_SSL_UPSTREAM 397 -#define VAR_FORWARD_SSL_UPSTREAM 398 -#define VAR_TLS_CERT_BUNDLE 399 -#define VAR_HTTPS_PORT 400 -#define VAR_HTTP_ENDPOINT 401 -#define VAR_HTTP_MAX_STREAMS 402 -#define VAR_HTTP_QUERY_BUFFER_SIZE 403 -#define VAR_HTTP_RESPONSE_BUFFER_SIZE 404 -#define VAR_HTTP_NODELAY 405 -#define VAR_HTTP_NOTLS_DOWNSTREAM 406 -#define VAR_STUB_FIRST 407 -#define VAR_MINIMAL_RESPONSES 408 -#define VAR_RRSET_ROUNDROBIN 409 -#define VAR_MAX_UDP_SIZE 410 -#define VAR_DELAY_CLOSE 411 -#define VAR_UDP_CONNECT 412 -#define VAR_UNBLOCK_LAN_ZONES 413 -#define VAR_INSECURE_LAN_ZONES 414 -#define VAR_INFRA_CACHE_MIN_RTT 415 -#define VAR_INFRA_KEEP_PROBING 416 -#define VAR_DNS64_PREFIX 417 -#define VAR_DNS64_SYNTHALL 418 -#define VAR_DNS64_IGNORE_AAAA 419 -#define VAR_DNSTAP 420 -#define VAR_DNSTAP_ENABLE 421 -#define VAR_DNSTAP_SOCKET_PATH 422 -#define VAR_DNSTAP_IP 423 -#define VAR_DNSTAP_TLS 424 -#define VAR_DNSTAP_TLS_SERVER_NAME 425 -#define VAR_DNSTAP_TLS_CERT_BUNDLE 426 -#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 427 -#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 428 -#define VAR_DNSTAP_SEND_IDENTITY 429 -#define VAR_DNSTAP_SEND_VERSION 430 -#define VAR_DNSTAP_BIDIRECTIONAL 431 -#define VAR_DNSTAP_IDENTITY 432 -#define VAR_DNSTAP_VERSION 433 -#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 434 -#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 435 -#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 436 -#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 437 -#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 438 -#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 439 -#define VAR_RESPONSE_IP_TAG 440 -#define VAR_RESPONSE_IP 441 -#define VAR_RESPONSE_IP_DATA 442 -#define VAR_HARDEN_ALGO_DOWNGRADE 443 -#define VAR_IP_TRANSPARENT 444 -#define VAR_IP_DSCP 445 -#define VAR_DISABLE_DNSSEC_LAME_CHECK 446 -#define VAR_IP_RATELIMIT 447 -#define VAR_IP_RATELIMIT_SLABS 448 -#define VAR_IP_RATELIMIT_SIZE 449 -#define VAR_RATELIMIT 450 -#define VAR_RATELIMIT_SLABS 451 -#define VAR_RATELIMIT_SIZE 452 -#define VAR_RATELIMIT_FOR_DOMAIN 453 -#define VAR_RATELIMIT_BELOW_DOMAIN 454 -#define VAR_IP_RATELIMIT_FACTOR 455 -#define VAR_RATELIMIT_FACTOR 456 -#define VAR_SEND_CLIENT_SUBNET 457 -#define VAR_CLIENT_SUBNET_ZONE 458 -#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 459 -#define VAR_CLIENT_SUBNET_OPCODE 460 -#define VAR_MAX_CLIENT_SUBNET_IPV4 461 -#define VAR_MAX_CLIENT_SUBNET_IPV6 462 -#define VAR_MIN_CLIENT_SUBNET_IPV4 463 -#define VAR_MIN_CLIENT_SUBNET_IPV6 464 -#define VAR_MAX_ECS_TREE_SIZE_IPV4 465 -#define VAR_MAX_ECS_TREE_SIZE_IPV6 466 -#define VAR_CAPS_WHITELIST 467 -#define VAR_CACHE_MAX_NEGATIVE_TTL 468 -#define VAR_PERMIT_SMALL_HOLDDOWN 469 -#define VAR_QNAME_MINIMISATION 470 -#define VAR_QNAME_MINIMISATION_STRICT 471 -#define VAR_IP_FREEBIND 472 -#define VAR_DEFINE_TAG 473 -#define VAR_LOCAL_ZONE_TAG 474 -#define VAR_ACCESS_CONTROL_TAG 475 -#define VAR_LOCAL_ZONE_OVERRIDE 476 -#define VAR_ACCESS_CONTROL_TAG_ACTION 477 -#define VAR_ACCESS_CONTROL_TAG_DATA 478 -#define VAR_VIEW 479 -#define VAR_ACCESS_CONTROL_VIEW 480 -#define VAR_VIEW_FIRST 481 -#define VAR_SERVE_EXPIRED 482 -#define VAR_SERVE_EXPIRED_TTL 483 -#define VAR_SERVE_EXPIRED_TTL_RESET 484 -#define VAR_SERVE_EXPIRED_REPLY_TTL 485 -#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 486 -#define VAR_SERVE_ORIGINAL_TTL 487 -#define VAR_FAKE_DSA 488 -#define VAR_FAKE_SHA1 489 -#define VAR_LOG_IDENTITY 490 -#define VAR_HIDE_TRUSTANCHOR 491 -#define VAR_TRUST_ANCHOR_SIGNALING 492 -#define VAR_AGGRESSIVE_NSEC 493 -#define VAR_USE_SYSTEMD 494 -#define VAR_SHM_ENABLE 495 -#define VAR_SHM_KEY 496 -#define VAR_ROOT_KEY_SENTINEL 497 -#define VAR_DNSCRYPT 498 -#define VAR_DNSCRYPT_ENABLE 499 -#define VAR_DNSCRYPT_PORT 500 -#define VAR_DNSCRYPT_PROVIDER 501 -#define VAR_DNSCRYPT_SECRET_KEY 502 -#define VAR_DNSCRYPT_PROVIDER_CERT 503 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 504 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 505 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 506 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 507 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 508 -#define VAR_PAD_RESPONSES 509 -#define VAR_PAD_RESPONSES_BLOCK_SIZE 510 -#define VAR_PAD_QUERIES 511 -#define VAR_PAD_QUERIES_BLOCK_SIZE 512 -#define VAR_IPSECMOD_ENABLED 513 -#define VAR_IPSECMOD_HOOK 514 -#define VAR_IPSECMOD_IGNORE_BOGUS 515 -#define VAR_IPSECMOD_MAX_TTL 516 -#define VAR_IPSECMOD_WHITELIST 517 -#define VAR_IPSECMOD_STRICT 518 -#define VAR_CACHEDB 519 -#define VAR_CACHEDB_BACKEND 520 -#define VAR_CACHEDB_SECRETSEED 521 -#define VAR_CACHEDB_REDISHOST 522 -#define VAR_CACHEDB_REDISPORT 523 -#define VAR_CACHEDB_REDISTIMEOUT 524 -#define VAR_CACHEDB_REDISEXPIRERECORDS 525 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 526 -#define VAR_FOR_UPSTREAM 527 -#define VAR_AUTH_ZONE 528 -#define VAR_ZONEFILE 529 -#define VAR_MASTER 530 -#define VAR_URL 531 -#define VAR_FOR_DOWNSTREAM 532 -#define VAR_FALLBACK_ENABLED 533 -#define VAR_TLS_ADDITIONAL_PORT 534 -#define VAR_LOW_RTT 535 -#define VAR_LOW_RTT_PERMIL 536 -#define VAR_FAST_SERVER_PERMIL 537 -#define VAR_FAST_SERVER_NUM 538 -#define VAR_ALLOW_NOTIFY 539 -#define VAR_TLS_WIN_CERT 540 -#define VAR_TCP_CONNECTION_LIMIT 541 -#define VAR_FORWARD_NO_CACHE 542 -#define VAR_STUB_NO_CACHE 543 -#define VAR_LOG_SERVFAIL 544 -#define VAR_DENY_ANY 545 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 546 -#define VAR_LOG_TAG_QUERYREPLY 547 -#define VAR_STREAM_WAIT_SIZE 548 -#define VAR_TLS_CIPHERS 549 -#define VAR_TLS_CIPHERSUITES 550 -#define VAR_TLS_USE_SNI 551 -#define VAR_IPSET 552 -#define VAR_IPSET_NAME_V4 553 -#define VAR_IPSET_NAME_V6 554 -#define VAR_TLS_SESSION_TICKET_KEYS 555 -#define VAR_RPZ 556 -#define VAR_TAGS 557 -#define VAR_RPZ_ACTION_OVERRIDE 558 -#define VAR_RPZ_CNAME_OVERRIDE 559 -#define VAR_RPZ_LOG 560 -#define VAR_RPZ_LOG_NAME 561 -#define VAR_DYNLIB 562 -#define VAR_DYNLIB_FILE 563 -#define VAR_EDNS_CLIENT_STRING 564 -#define VAR_EDNS_CLIENT_STRING_OPCODE 565 -#define VAR_NSID 566 -#define VAR_ZONEMD_PERMISSIVE_MODE 567 -#define VAR_ZONEMD_CHECK 568 -#define VAR_ZONEMD_REJECT_ABSENCE 569 +#define VAR_VAL_MAX_RESTART 373 +#define VAR_CACHE_MIN_TTL 374 +#define VAR_VAL_LOG_LEVEL 375 +#define VAR_AUTO_TRUST_ANCHOR_FILE 376 +#define VAR_KEEP_MISSING 377 +#define VAR_ADD_HOLDDOWN 378 +#define VAR_DEL_HOLDDOWN 379 +#define VAR_SO_RCVBUF 380 +#define VAR_EDNS_BUFFER_SIZE 381 +#define VAR_PREFETCH 382 +#define VAR_PREFETCH_KEY 383 +#define VAR_SO_SNDBUF 384 +#define VAR_SO_REUSEPORT 385 +#define VAR_HARDEN_BELOW_NXDOMAIN 386 +#define VAR_IGNORE_CD_FLAG 387 +#define VAR_LOG_QUERIES 388 +#define VAR_LOG_REPLIES 389 +#define VAR_LOG_LOCAL_ACTIONS 390 +#define VAR_TCP_UPSTREAM 391 +#define VAR_SSL_UPSTREAM 392 +#define VAR_TCP_AUTH_QUERY_TIMEOUT 393 +#define VAR_SSL_SERVICE_KEY 394 +#define VAR_SSL_SERVICE_PEM 395 +#define VAR_SSL_PORT 396 +#define VAR_FORWARD_FIRST 397 +#define VAR_STUB_SSL_UPSTREAM 398 +#define VAR_FORWARD_SSL_UPSTREAM 399 +#define VAR_TLS_CERT_BUNDLE 400 +#define VAR_HTTPS_PORT 401 +#define VAR_HTTP_ENDPOINT 402 +#define VAR_HTTP_MAX_STREAMS 403 +#define VAR_HTTP_QUERY_BUFFER_SIZE 404 +#define VAR_HTTP_RESPONSE_BUFFER_SIZE 405 +#define VAR_HTTP_NODELAY 406 +#define VAR_HTTP_NOTLS_DOWNSTREAM 407 +#define VAR_STUB_FIRST 408 +#define VAR_MINIMAL_RESPONSES 409 +#define VAR_RRSET_ROUNDROBIN 410 +#define VAR_MAX_UDP_SIZE 411 +#define VAR_DELAY_CLOSE 412 +#define VAR_UDP_CONNECT 413 +#define VAR_UNBLOCK_LAN_ZONES 414 +#define VAR_INSECURE_LAN_ZONES 415 +#define VAR_INFRA_CACHE_MIN_RTT 416 +#define VAR_INFRA_KEEP_PROBING 417 +#define VAR_DNS64_PREFIX 418 +#define VAR_DNS64_SYNTHALL 419 +#define VAR_DNS64_IGNORE_AAAA 420 +#define VAR_DNSTAP 421 +#define VAR_DNSTAP_ENABLE 422 +#define VAR_DNSTAP_SOCKET_PATH 423 +#define VAR_DNSTAP_IP 424 +#define VAR_DNSTAP_TLS 425 +#define VAR_DNSTAP_TLS_SERVER_NAME 426 +#define VAR_DNSTAP_TLS_CERT_BUNDLE 427 +#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 428 +#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 429 +#define VAR_DNSTAP_SEND_IDENTITY 430 +#define VAR_DNSTAP_SEND_VERSION 431 +#define VAR_DNSTAP_BIDIRECTIONAL 432 +#define VAR_DNSTAP_IDENTITY 433 +#define VAR_DNSTAP_VERSION 434 +#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 435 +#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 436 +#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 437 +#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 438 +#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 439 +#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 440 +#define VAR_RESPONSE_IP_TAG 441 +#define VAR_RESPONSE_IP 442 +#define VAR_RESPONSE_IP_DATA 443 +#define VAR_HARDEN_ALGO_DOWNGRADE 444 +#define VAR_IP_TRANSPARENT 445 +#define VAR_IP_DSCP 446 +#define VAR_DISABLE_DNSSEC_LAME_CHECK 447 +#define VAR_IP_RATELIMIT 448 +#define VAR_IP_RATELIMIT_SLABS 449 +#define VAR_IP_RATELIMIT_SIZE 450 +#define VAR_RATELIMIT 451 +#define VAR_RATELIMIT_SLABS 452 +#define VAR_RATELIMIT_SIZE 453 +#define VAR_RATELIMIT_FOR_DOMAIN 454 +#define VAR_RATELIMIT_BELOW_DOMAIN 455 +#define VAR_IP_RATELIMIT_FACTOR 456 +#define VAR_RATELIMIT_FACTOR 457 +#define VAR_SEND_CLIENT_SUBNET 458 +#define VAR_CLIENT_SUBNET_ZONE 459 +#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 460 +#define VAR_CLIENT_SUBNET_OPCODE 461 +#define VAR_MAX_CLIENT_SUBNET_IPV4 462 +#define VAR_MAX_CLIENT_SUBNET_IPV6 463 +#define VAR_MIN_CLIENT_SUBNET_IPV4 464 +#define VAR_MIN_CLIENT_SUBNET_IPV6 465 +#define VAR_MAX_ECS_TREE_SIZE_IPV4 466 +#define VAR_MAX_ECS_TREE_SIZE_IPV6 467 +#define VAR_CAPS_WHITELIST 468 +#define VAR_CACHE_MAX_NEGATIVE_TTL 469 +#define VAR_PERMIT_SMALL_HOLDDOWN 470 +#define VAR_QNAME_MINIMISATION 471 +#define VAR_QNAME_MINIMISATION_STRICT 472 +#define VAR_IP_FREEBIND 473 +#define VAR_DEFINE_TAG 474 +#define VAR_LOCAL_ZONE_TAG 475 +#define VAR_ACCESS_CONTROL_TAG 476 +#define VAR_LOCAL_ZONE_OVERRIDE 477 +#define VAR_ACCESS_CONTROL_TAG_ACTION 478 +#define VAR_ACCESS_CONTROL_TAG_DATA 479 +#define VAR_VIEW 480 +#define VAR_ACCESS_CONTROL_VIEW 481 +#define VAR_VIEW_FIRST 482 +#define VAR_SERVE_EXPIRED 483 +#define VAR_SERVE_EXPIRED_TTL 484 +#define VAR_SERVE_EXPIRED_TTL_RESET 485 +#define VAR_SERVE_EXPIRED_REPLY_TTL 486 +#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 487 +#define VAR_SERVE_ORIGINAL_TTL 488 +#define VAR_FAKE_DSA 489 +#define VAR_FAKE_SHA1 490 +#define VAR_LOG_IDENTITY 491 +#define VAR_HIDE_TRUSTANCHOR 492 +#define VAR_TRUST_ANCHOR_SIGNALING 493 +#define VAR_AGGRESSIVE_NSEC 494 +#define VAR_USE_SYSTEMD 495 +#define VAR_SHM_ENABLE 496 +#define VAR_SHM_KEY 497 +#define VAR_ROOT_KEY_SENTINEL 498 +#define VAR_DNSCRYPT 499 +#define VAR_DNSCRYPT_ENABLE 500 +#define VAR_DNSCRYPT_PORT 501 +#define VAR_DNSCRYPT_PROVIDER 502 +#define VAR_DNSCRYPT_SECRET_KEY 503 +#define VAR_DNSCRYPT_PROVIDER_CERT 504 +#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 505 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 506 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 507 +#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 508 +#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 509 +#define VAR_PAD_RESPONSES 510 +#define VAR_PAD_RESPONSES_BLOCK_SIZE 511 +#define VAR_PAD_QUERIES 512 +#define VAR_PAD_QUERIES_BLOCK_SIZE 513 +#define VAR_IPSECMOD_ENABLED 514 +#define VAR_IPSECMOD_HOOK 515 +#define VAR_IPSECMOD_IGNORE_BOGUS 516 +#define VAR_IPSECMOD_MAX_TTL 517 +#define VAR_IPSECMOD_WHITELIST 518 +#define VAR_IPSECMOD_STRICT 519 +#define VAR_CACHEDB 520 +#define VAR_CACHEDB_BACKEND 521 +#define VAR_CACHEDB_SECRETSEED 522 +#define VAR_CACHEDB_REDISHOST 523 +#define VAR_CACHEDB_REDISPORT 524 +#define VAR_CACHEDB_REDISTIMEOUT 525 +#define VAR_CACHEDB_REDISEXPIRERECORDS 526 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 527 +#define VAR_FOR_UPSTREAM 528 +#define VAR_AUTH_ZONE 529 +#define VAR_ZONEFILE 530 +#define VAR_MASTER 531 +#define VAR_URL 532 +#define VAR_FOR_DOWNSTREAM 533 +#define VAR_FALLBACK_ENABLED 534 +#define VAR_TLS_ADDITIONAL_PORT 535 +#define VAR_LOW_RTT 536 +#define VAR_LOW_RTT_PERMIL 537 +#define VAR_FAST_SERVER_PERMIL 538 +#define VAR_FAST_SERVER_NUM 539 +#define VAR_ALLOW_NOTIFY 540 +#define VAR_TLS_WIN_CERT 541 +#define VAR_TCP_CONNECTION_LIMIT 542 +#define VAR_FORWARD_NO_CACHE 543 +#define VAR_STUB_NO_CACHE 544 +#define VAR_LOG_SERVFAIL 545 +#define VAR_DENY_ANY 546 +#define VAR_UNKNOWN_SERVER_TIME_LIMIT 547 +#define VAR_LOG_TAG_QUERYREPLY 548 +#define VAR_STREAM_WAIT_SIZE 549 +#define VAR_TLS_CIPHERS 550 +#define VAR_TLS_CIPHERSUITES 551 +#define VAR_TLS_USE_SNI 552 +#define VAR_IPSET 553 +#define VAR_IPSET_NAME_V4 554 +#define VAR_IPSET_NAME_V6 555 +#define VAR_TLS_SESSION_TICKET_KEYS 556 +#define VAR_RPZ 557 +#define VAR_TAGS 558 +#define VAR_RPZ_ACTION_OVERRIDE 559 +#define VAR_RPZ_CNAME_OVERRIDE 560 +#define VAR_RPZ_LOG 561 +#define VAR_RPZ_LOG_NAME 562 +#define VAR_DYNLIB 563 +#define VAR_DYNLIB_FILE 564 +#define VAR_EDNS_CLIENT_STRING 565 +#define VAR_EDNS_CLIENT_STRING_OPCODE 566 +#define VAR_NSID 567 +#define VAR_ZONEMD_PERMISSIVE_MODE 568 +#define VAR_ZONEMD_CHECK 569 +#define VAR_ZONEMD_REJECT_ABSENCE 570 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -694,7 +697,7 @@ union YYSTYPE char* str; -#line 698 "util/configparser.h" +#line 701 "util/configparser.h" }; typedef union YYSTYPE YYSTYPE; From ad939e54d0cc00c32fe88f4c6c5859536874ff43 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Wed, 9 Jun 2021 15:52:56 +0200 Subject: [PATCH 157/553] - Fix #413 (based on patch by k-ronny): unbound: does not compile on macOS 11.1-x86_64 host. --- configure | 26 +++++++++++++++++++------- configure.ac | 24 ++++++++++++------------ doc/Changelog | 2 ++ 3 files changed, 33 insertions(+), 19 deletions(-) diff --git a/configure b/configure index d0050b1e6..274889824 100755 --- a/configure +++ b/configure @@ -811,6 +811,7 @@ infodir docdir oldincludedir includedir +runstatedir localstatedir sharedstatedir sysconfdir @@ -961,6 +962,7 @@ datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -1213,6 +1215,15 @@ do | -silent | --silent | --silen | --sile | --sil) silent=yes ;; + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1350,7 +1361,7 @@ fi for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir + libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1503,6 +1514,7 @@ Fine tuning of the installation directories: --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -19178,8 +19190,8 @@ fi case "$enable_tfo_client" in yes) - case `uname` in - Linux) ac_fn_c_check_decl "$LINENO" "MSG_FASTOPEN" "ac_cv_have_decl_MSG_FASTOPEN" "$ac_includes_default + case "$host_os" in + linux*) ac_fn_c_check_decl "$LINENO" "MSG_FASTOPEN" "ac_cv_have_decl_MSG_FASTOPEN" "$ac_includes_default #include " @@ -19195,8 +19207,8 @@ cat >>confdefs.h <<_ACEOF #define USE_MSG_FASTOPEN 1 _ACEOF - ;; - Darwin) ac_fn_c_check_decl "$LINENO" "CONNECT_RESUME_ON_READ_WRITE" "ac_cv_have_decl_CONNECT_RESUME_ON_READ_WRITE" "$ac_includes_default + ;; + darwin*) ac_fn_c_check_decl "$LINENO" "CONNECT_RESUME_ON_READ_WRITE" "ac_cv_have_decl_CONNECT_RESUME_ON_READ_WRITE" "$ac_includes_default #include " @@ -19212,9 +19224,9 @@ cat >>confdefs.h <<_ACEOF #define USE_OSX_MSG_FASTOPEN 1 _ACEOF - ;; + ;; esac - ;; + ;; no|*) ;; esac diff --git a/configure.ac b/configure.ac index 9abf2299f..f5e9d8168 100644 --- a/configure.ac +++ b/configure.ac @@ -1216,23 +1216,23 @@ esac AC_ARG_ENABLE(tfo-client, AS_HELP_STRING([--enable-tfo-client],[Enable TCP Fast Open for client mode])) case "$enable_tfo_client" in yes) - case `uname` in - Linux) AC_CHECK_DECL([MSG_FASTOPEN], [AC_MSG_WARN([Check the platform specific TFO kernel parameters are correctly configured to support client mode TFO])], - [AC_MSG_ERROR([TCP Fast Open is not available for client mode: please rerun without --enable-tfo-client])], - [AC_INCLUDES_DEFAULT + case "$host_os" in + linux*) AC_CHECK_DECL([MSG_FASTOPEN], [AC_MSG_WARN([Check the platform specific TFO kernel parameters are correctly configured to support client mode TFO])], + [AC_MSG_ERROR([TCP Fast Open is not available for client mode: please rerun without --enable-tfo-client])], + [AC_INCLUDES_DEFAULT #include ]) - AC_DEFINE_UNQUOTED([USE_MSG_FASTOPEN], [1], [Define this to enable client TCP Fast Open.]) - ;; - Darwin) AC_CHECK_DECL([CONNECT_RESUME_ON_READ_WRITE], [AC_MSG_WARN([Check the platform specific TFO kernel parameters are correctly configured to support client mode TFO])], - [AC_MSG_ERROR([TCP Fast Open is not available for client mode: please rerun without --enable-tfo-client])], - [AC_INCLUDES_DEFAULT + AC_DEFINE_UNQUOTED([USE_MSG_FASTOPEN], [1], [Define this to enable client TCP Fast Open.]) + ;; + darwin*) AC_CHECK_DECL([CONNECT_RESUME_ON_READ_WRITE], [AC_MSG_WARN([Check the platform specific TFO kernel parameters are correctly configured to support client mode TFO])], + [AC_MSG_ERROR([TCP Fast Open is not available for client mode: please rerun without --enable-tfo-client])], + [AC_INCLUDES_DEFAULT #include ]) - AC_DEFINE_UNQUOTED([USE_OSX_MSG_FASTOPEN], [1], [Define this to enable client TCP Fast Open.]) - ;; + AC_DEFINE_UNQUOTED([USE_OSX_MSG_FASTOPEN], [1], [Define this to enable client TCP Fast Open.]) + ;; esac - ;; + ;; no|*) ;; esac diff --git a/doc/Changelog b/doc/Changelog index 2f52a6b9f..91d8156f1 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,8 @@ 9 June 2021: George - Merge #486 by fobster: Make VAL_MAX_RESTART_COUNT configurable. - Generated lexer and parser for #486; updated example.conf. + - Fix #413 (based on patch by k-ronny): unbound: does not compile + on macOS 11.1-x86_64 host. 8 June 2021: George - Fix unused variable warning when compiling with --enable-dnstap. From fcde5c8d548a75818245c6ef1cf1c38f96890c16 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Wed, 9 Jun 2021 16:36:19 +0200 Subject: [PATCH 158/553] - Use host_os instead of target_os in configure for Darwin8 build. --- configure | 2 +- configure.ac | 2 +- doc/Changelog | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/configure b/configure index 274889824..0a03ab5de 100755 --- a/configure +++ b/configure @@ -20441,7 +20441,7 @@ done # check if setreuid en setregid fail, on MacOSX10.4(darwin8). -if echo $target_os | grep darwin8 > /dev/null; then +if echo $host_os | grep darwin8 > /dev/null; then $as_echo "#define DARWIN_BROKEN_SETREUID 1" >>confdefs.h diff --git a/configure.ac b/configure.ac index f5e9d8168..746966f06 100644 --- a/configure.ac +++ b/configure.ac @@ -1593,7 +1593,7 @@ AC_CHECK_FUNCS([setresuid],,[AC_CHECK_FUNCS([setreuid])]) AC_CHECK_FUNCS([setresgid],,[AC_CHECK_FUNCS([setregid])]) # check if setreuid en setregid fail, on MacOSX10.4(darwin8). -if echo $target_os | grep darwin8 > /dev/null; then +if echo $host_os | grep darwin8 > /dev/null; then AC_DEFINE(DARWIN_BROKEN_SETREUID, 1, [Define this if on macOSX10.4-darwin8 and setreuid and setregid do not work]) fi AC_CHECK_DECLS([inet_pton,inet_ntop], [], [], [ diff --git a/doc/Changelog b/doc/Changelog index 91d8156f1..c52c84103 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -3,6 +3,7 @@ - Generated lexer and parser for #486; updated example.conf. - Fix #413 (based on patch by k-ronny): unbound: does not compile on macOS 11.1-x86_64 host. + - Use host_os instead of target_os in configure for Darwin8 build. 8 June 2021: George - Fix unused variable warning when compiling with --enable-dnstap. From fd7caaf579a78f4f08ce2223ad6a8c79414c8478 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 10 Jun 2021 09:24:48 +0200 Subject: [PATCH 159/553] - Fix #500: SPEC file in version 1.13.1 references version 1.4; unable to build RPM from source. --- contrib/unbound.spec | 17 +++++++++++------ doc/Changelog | 4 ++++ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/contrib/unbound.spec b/contrib/unbound.spec index 6ddc5f18d..0441b6b32 100644 --- a/contrib/unbound.spec +++ b/contrib/unbound.spec @@ -1,15 +1,14 @@ Summary: Validating, recursive, and caching DNS resolver Name: unbound -Version: 1.4.18 +Version: 1.13.1 Release: 1%{?dist} License: BSD Url: http://www.nlnetlabs.nl/unbound/ Source: http://www.unbound.net/downloads/%{name}-%{version}.tar.gz #Source1: unbound.init Group: System Environment/Daemons -Requires: ldns BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) -BuildRequires: flex, openssl-devel, expat-devel, ldns-devel +BuildRequires: flex, openssl-devel, expat-devel %description Unbound is a validating, recursive, and caching DNS resolver. @@ -42,7 +41,7 @@ install -d 0700 %{buildroot}%{_localstatedir}/%{name} install -d 0755 %{buildroot}%{_initrddir} install -m 0755 contrib/unbound.init %{buildroot}%{_initrddir}/unbound # add symbolic link from /etc/unbound.conf -> /var/unbound/unbound.conf -ln -s %{_localstatedir}/unbound/unbound.conf %{buildroot}%{_sysconfdir}/unbound.conf +ln -s ../%{_localstatedir}/unbound/unbound.conf %{buildroot}%{_sysconfdir}/unbound.conf # remove static library from install (fedora packaging guidelines) rm -f %{buildroot}%{_libdir}/libunbound.a %{buildroot}%{_libdir}/libunbound.la @@ -55,11 +54,12 @@ rm -rf ${RPM_BUILD_ROOT} %attr(0755,root,root) %{_initrddir}/%{name} %attr(0700,%{name},%{name}) %dir %{_localstatedir}/%{name} %attr(0644,%{name},%{name}) %config(noreplace) %{_localstatedir}/%{name}/unbound.conf -%attr(0644,%{name},%{name}) %config(noreplace) %{_sysconfdir}/unbound.conf +%config(noreplace) %{_sysconfdir}/unbound.conf %{_sbindir}/* %{_mandir}/*/* %{_includedir}/* %{_libdir}/libunbound* +%{_libdir}/pkgconfig/libunbound* %pre getent group unbound >/dev/null || groupadd -r unbound @@ -89,7 +89,12 @@ if [ "$1" -ge "1" ]; then fi %changelog -* Thu Jul 13 2011 Wouter Wijngaards - 1.4.8 +* Thu Jun 10 2021 Wouter Wijngaards - 1.13.1 +- ldns and ldns-devel no longer required. Fixed date. Version to 1.13.1. +- Removed symlink %attr mode, made unbound.conf symlink relative. +- Added pkgconfig/libunbound.pc to the packaged files. + +* Wed Jul 13 2011 Wouter Wijngaards - 1.4.8 - ldns required and ldns-devel required for build, no more ldns-builtin. * Thu Mar 17 2011 Wouter Wijngaards - 1.4.8 diff --git a/doc/Changelog b/doc/Changelog index c52c84103..b75c8cf75 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +10 June 2021: Wouter + - Fix #500: SPEC file in version 1.13.1 references version 1.4; + unable to build RPM from source. + 9 June 2021: George - Merge #486 by fobster: Make VAL_MAX_RESTART_COUNT configurable. - Generated lexer and parser for #486; updated example.conf. From 960d199b6fb0e981bdcc70490fa77a88d1e3db3f Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 10 Jun 2021 13:35:27 +0200 Subject: [PATCH 160/553] - Fix contrib/unbound.spec, fixed url and comment. --- contrib/unbound.spec | 5 +++-- doc/Changelog | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/contrib/unbound.spec b/contrib/unbound.spec index 0441b6b32..17be4ccd0 100644 --- a/contrib/unbound.spec +++ b/contrib/unbound.spec @@ -4,7 +4,7 @@ Version: 1.13.1 Release: 1%{?dist} License: BSD Url: http://www.nlnetlabs.nl/unbound/ -Source: http://www.unbound.net/downloads/%{name}-%{version}.tar.gz +Source: http://www.nlnetlabs.nl/downloads/unbound/%{name}-%{version}.tar.gz #Source1: unbound.init Group: System Environment/Daemons BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) @@ -91,8 +91,9 @@ fi %changelog * Thu Jun 10 2021 Wouter Wijngaards - 1.13.1 - ldns and ldns-devel no longer required. Fixed date. Version to 1.13.1. -- Removed symlink %attr mode, made unbound.conf symlink relative. +- Removed symlink attr mode, made unbound.conf symlink relative. - Added pkgconfig/libunbound.pc to the packaged files. +- fixed download url to nlnetlabs.nl download. * Wed Jul 13 2011 Wouter Wijngaards - 1.4.8 - ldns required and ldns-devel required for build, no more ldns-builtin. diff --git a/doc/Changelog b/doc/Changelog index b75c8cf75..9081f2cd1 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,7 @@ 10 June 2021: Wouter - Fix #500: SPEC file in version 1.13.1 references version 1.4; unable to build RPM from source. + - Fix contrib/unbound.spec, fixed url and comment. 9 June 2021: George - Merge #486 by fobster: Make VAL_MAX_RESTART_COUNT configurable. From 70a9bfda84b6b5bcc2e24806aa0d57affa588435 Mon Sep 17 00:00:00 2001 From: "Kim B. Heino" Date: Sat, 12 Jun 2021 22:37:33 +0300 Subject: [PATCH 161/553] contrib/unbound_munin_: minor cleanup to remove two leftovers --- contrib/unbound_munin_ | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/contrib/unbound_munin_ b/contrib/unbound_munin_ index 82e6d1522..503752758 100755 --- a/contrib/unbound_munin_ +++ b/contrib/unbound_munin_ @@ -95,7 +95,6 @@ BSD =cut -. ${MUNIN_LIBDIR}/plugins/plugin.sh state="${MUNIN_PLUGSTATE}/unbound.state" seentags="${MUNIN_PLUGSTATE}/unbound-seentags.state" conf=${unbound_conf:-/usr/local/etc/unbound/unbound.conf} @@ -491,7 +490,7 @@ by_opcode) ;; by_rcode) for nm in `grep "^num.answer.rcode" $seentags`; do - print_value $nm $x + print_value $nm done print_value "num.answer.secure" print_value "num.answer.bogus" From a887194d6b2aadcef6b3b4aaca808cac1b6fc005 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 14 Jun 2021 16:15:21 +0200 Subject: [PATCH 162/553] - Fix configure nonblocking test and onmingw test to use host. --- acx_nlnetlabs.m4 | 5 +++-- configure | 16 ++-------------- configure.ac | 2 +- doc/Changelog | 3 +++ 4 files changed, 9 insertions(+), 17 deletions(-) diff --git a/acx_nlnetlabs.m4 b/acx_nlnetlabs.m4 index ad8fb5007..7ce790708 100644 --- a/acx_nlnetlabs.m4 +++ b/acx_nlnetlabs.m4 @@ -2,7 +2,8 @@ # Copyright 2009, Wouter Wijngaards, NLnet Labs. # BSD licensed. # -# Version 39 +# Version 40 +# 2021-06-14 fix nonblocking test to use host instead of target for mingw test. # 2021-05-17 fix nonblocking socket test from grep on mingw32 to mingw for # 64bit compatibility. # 2021-03-24 fix ACX_FUNC_DEPRECATED to use CPPFLAGS and CFLAGS. @@ -917,7 +918,7 @@ dnl a nonblocking socket do not work, a new call to select is necessary. AC_DEFUN([ACX_CHECK_NONBLOCKING_BROKEN], [ AC_MSG_CHECKING([if nonblocking sockets work]) -if echo $target | grep mingw >/dev/null; then +if echo $host | grep mingw >/dev/null; then AC_MSG_RESULT([no (windows)]) AC_DEFINE([NONBLOCKING_IS_BROKEN], 1, [Define if the network stack does not fully support nonblocking io (causes lower performance).]) else diff --git a/configure b/configure index 0a03ab5de..170386901 100755 --- a/configure +++ b/configure @@ -811,7 +811,6 @@ infodir docdir oldincludedir includedir -runstatedir localstatedir sharedstatedir sysconfdir @@ -962,7 +961,6 @@ datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' -runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -1215,15 +1213,6 @@ do | -silent | --silent | --silen | --sile | --sil) silent=yes ;; - -runstatedir | --runstatedir | --runstatedi | --runstated \ - | --runstate | --runstat | --runsta | --runst | --runs \ - | --run | --ru | --r) - ac_prev=runstatedir ;; - -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ - | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ - | --run=* | --ru=* | --r=*) - runstatedir=$ac_optarg ;; - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1361,7 +1350,7 @@ fi for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir runstatedir + libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1514,7 +1503,6 @@ Fine tuning of the installation directories: --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -15939,7 +15927,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if nonblocking sockets work" >&5 $as_echo_n "checking if nonblocking sockets work... " >&6; } -if echo $target | grep mingw >/dev/null; then +if echo $host | grep mingw >/dev/null; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no (windows)" >&5 $as_echo "no (windows)" >&6; } diff --git a/configure.ac b/configure.ac index 746966f06..d0e55194b 100644 --- a/configure.ac +++ b/configure.ac @@ -149,7 +149,7 @@ esac # are we on MinGW? if uname -s 2>&1 | grep MINGW >/dev/null; then on_mingw="yes" else - if echo $host $target | grep mingw >/dev/null; then on_mingw="yes" + if echo $host | grep mingw >/dev/null; then on_mingw="yes" else on_mingw="no"; fi fi diff --git a/doc/Changelog b/doc/Changelog index 9081f2cd1..25f91cb76 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +14 June 2021: Wouter + - Fix configure nonblocking test and onmingw test to use host. + 10 June 2021: Wouter - Fix #500: SPEC file in version 1.13.1 references version 1.4; unable to build RPM from source. From 02b1a6ae0a07845be4d934e094cfd78457b70546 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Tue, 15 Jun 2021 17:50:25 +0200 Subject: [PATCH 163/553] - Changelog entry for #440: Various fixes to contrib/unbound_munin_ file. --- doc/Changelog | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 25f91cb76..3e12c6433 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +15 June 2021: George + - Merge #440 by kimheino: Various fixes to contrib/unbound_munin_ file. + 14 June 2021: Wouter - Fix configure nonblocking test and onmingw test to use host. From 79209823ac7431dcbebecb0ba564f0f54461269d Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 18 Jun 2021 18:12:26 +0200 Subject: [PATCH 164/553] - Fix a number of warnings reported by the gcc analyzer. --- doc/Changelog | 3 +++ iterator/iter_utils.c | 2 ++ pythonmod/interface.i | 41 ++++++++++++++++++++++++++++------------ pythonmod/pythonmod.c | 10 ++++++++++ services/authzone.c | 3 +++ services/cache/infra.c | 3 +++ util/data/msgreply.c | 12 ++++++++++-- util/shm_side/shm_main.c | 6 ++++++ validator/val_nsec.c | 1 + 9 files changed, 67 insertions(+), 14 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 3e12c6433..e350b8b3f 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +18 June 2021: Wouter + - Fix a number of warnings reported by the gcc analyzer. + 15 June 2021: George - Merge #440 by kimheino: Various fixes to contrib/unbound_munin_ file. diff --git a/iterator/iter_utils.c b/iterator/iter_utils.c index adc611f73..668f898eb 100644 --- a/iterator/iter_utils.c +++ b/iterator/iter_utils.c @@ -440,6 +440,7 @@ iter_filter_order(struct iter_env* iter_env, struct module_env* env, prev = NULL; a = dp->result_list; for(i = 0; i < got_num; i++) { + if(!a) break; /* robustness */ swap_to_front = 0; if(a->addr.ss_family != AF_INET6 && attempt == -1) { /* if we only have ip4 at low attempt count, @@ -497,6 +498,7 @@ iter_filter_order(struct iter_env* iter_env, struct module_env* env, prev = NULL; a = dp->result_list; for(i = 0; i < got_num; i++) { + if(!a) break; /* robustness */ swap_to_front = 0; if(a->addr.ss_family != AF_INET && attempt == -1) { /* if we only have ip6 at low attempt count, diff --git a/pythonmod/interface.i b/pythonmod/interface.i index 5dae04aa4..ce7dcde71 100644 --- a/pythonmod/interface.i +++ b/pythonmod/interface.i @@ -1546,7 +1546,7 @@ int edns_opt_list_append(struct edns_option** list, uint16_t code, size_t len, { PyObject *func, *py_edns, *py_qstate, *py_opt_list_out, *py_qinfo; PyObject *py_rep, *py_repinfo, *py_region; - PyObject *py_args, *py_kwargs, *result; + PyObject *py_args = NULL, *py_kwargs = NULL, *result = NULL; int res = 0; double py_start_time = ((double)start_time->tv_sec) + ((double)start_time->tv_usec) / 1.0e6; @@ -1561,11 +1561,20 @@ int edns_opt_list_append(struct edns_option** list, uint16_t code, size_t len, py_rep = SWIG_NewPointerObj((void*) rep, SWIGTYPE_p_reply_info, 0); py_repinfo = SWIG_NewPointerObj((void*) repinfo, SWIGTYPE_p_comm_reply, 0); py_region = SWIG_NewPointerObj((void*) region, SWIGTYPE_p_regional, 0); - py_args = Py_BuildValue("(OOOiOOO)", py_qinfo, py_qstate, py_rep, - rcode, py_edns, py_opt_list_out, py_region); - py_kwargs = Py_BuildValue("{s:O,s:d}", "repinfo", py_repinfo, "start_time", - py_start_time); - result = PyObject_Call(func, py_args, py_kwargs); + if(py_qinfo && py_qstate && py_rep && py_edns && py_opt_list_out + && py_region && py_repinfo) { + py_args = Py_BuildValue("(OOOiOOO)", py_qinfo, py_qstate, py_rep, + rcode, py_edns, py_opt_list_out, py_region); + py_kwargs = Py_BuildValue("{s:O,s:d}", "repinfo", py_repinfo, "start_time", + py_start_time); + if(py_args && py_kwargs) { + result = PyObject_Call(func, py_args, py_kwargs); + } else { + log_err("pythonmod: malloc failure in python_inplace_cb_reply_generic"); + } + } else { + log_err("pythonmod: malloc failure in python_inplace_cb_reply_generic"); + } Py_XDECREF(py_edns); Py_XDECREF(py_qstate); Py_XDECREF(py_opt_list_out); @@ -1624,6 +1633,7 @@ int edns_opt_list_append(struct edns_option** list, uint16_t code, size_t len, { int res = 0; PyObject *func = python_callback; + PyObject *py_args = NULL, *py_kwargs = NULL, *result = NULL; PyGILState_STATE gstate = PyGILState_Ensure(); @@ -1632,12 +1642,19 @@ int edns_opt_list_append(struct edns_option** list, uint16_t code, size_t len, PyObject *py_addr = SWIG_NewPointerObj((void *) addr, SWIGTYPE_p_sockaddr_storage, 0); PyObject *py_zone = PyBytes_FromStringAndSize((const char *)zone, zonelen); PyObject *py_region = SWIG_NewPointerObj((void*) region, SWIGTYPE_p_regional, 0); - - PyObject *py_args = Py_BuildValue("(OiOOOO)", py_qinfo, flags, py_qstate, py_addr, py_zone, py_region); - PyObject *py_kwargs = Py_BuildValue("{}"); - PyObject *result = PyObject_Call(func, py_args, py_kwargs); - if (result) { - res = PyInt_AsLong(result); + if(py_qinfo && py_qstate && py_addr && py_zone && py_region) { + py_args = Py_BuildValue("(OiOOOO)", py_qinfo, flags, py_qstate, py_addr, py_zone, py_region); + py_kwargs = Py_BuildValue("{}"); + if(py_args && py_kwargs) { + result = PyObject_Call(func, py_args, py_kwargs); + if (result) { + res = PyInt_AsLong(result); + } + } else { + log_err("pythonmod: malloc failure in python_inplace_cb_query_generic"); + } + } else { + log_err("pythonmod: malloc failure in python_inplace_cb_query_generic"); } Py_XDECREF(py_qinfo); diff --git a/pythonmod/pythonmod.c b/pythonmod/pythonmod.c index 6e60d02fe..0bbdeeb6b 100644 --- a/pythonmod/pythonmod.c +++ b/pythonmod/pythonmod.c @@ -561,9 +561,19 @@ void pythonmod_operate(struct module_qstate* qstate, enum module_ev event, { /* create qstate */ pq = qstate->minfo[id] = malloc(sizeof(struct pythonmod_qstate)); + if(!pq) { + log_err("pythonmod_operate: malloc failure for qstate"); + PyGILState_Release(gil); + return; + } /* Initialize per query data */ pq->data = PyDict_New(); + if(!pq->data) { + log_err("pythonmod_operate: malloc failure for query data dict"); + PyGILState_Release(gil); + return; + } } /* Call operate */ diff --git a/services/authzone.c b/services/authzone.c index 9ebd79ed3..0f9879ce7 100644 --- a/services/authzone.c +++ b/services/authzone.c @@ -7168,12 +7168,14 @@ xfer_set_masters(struct auth_master** list, struct config_auth* c, if(with_http) for(p = c->urls; p; p = p->next) { m = auth_master_new(&list); + if(!m) return 0; m->http = 1; if(!parse_url(p->str, &m->host, &m->file, &m->port, &m->ssl)) return 0; } for(p = c->masters; p; p = p->next) { m = auth_master_new(&list); + if(!m) return 0; m->ixfr = 1; /* this flag is not configurable */ m->host = strdup(p->str); if(!m->host) { @@ -7183,6 +7185,7 @@ xfer_set_masters(struct auth_master** list, struct config_auth* c, } for(p = c->allow_notify; p; p = p->next) { m = auth_master_new(&list); + if(!m) return 0; m->allow_notify = 1; m->host = strdup(p->str); if(!m->host) { diff --git a/services/cache/infra.c b/services/cache/infra.c index 2d16bcd6e..518e69622 100644 --- a/services/cache/infra.c +++ b/services/cache/infra.c @@ -236,6 +236,9 @@ infra_create(struct config_file* cfg) sizeof(struct infra_cache)); size_t maxmem = cfg->infra_cache_numhosts * (sizeof(struct infra_key)+ sizeof(struct infra_data)+INFRA_BYTES_NAME); + if(!infra) { + return NULL; + } infra->hosts = slabhash_create(cfg->infra_cache_slabs, INFRA_HOST_STARTSIZE, maxmem, &infra_sizefunc, &infra_compfunc, &infra_delkeyfunc, &infra_deldatafunc, NULL); diff --git a/util/data/msgreply.c b/util/data/msgreply.c index 48550cbe4..00272fd1c 100644 --- a/util/data/msgreply.c +++ b/util/data/msgreply.c @@ -329,7 +329,10 @@ parse_create_rrset(sldns_buffer* pkt, struct rrset_parse* pset, return 0; /* copy & decompress */ if(!parse_rr_copy(pkt, pset, *data)) { - if(!region) free(*data); + if(!region) { + free(*data); + *data = NULL; + } return 0; } return 1; @@ -394,8 +397,13 @@ parse_copy_decompress_rrset(sldns_buffer* pkt, struct msg_parse* msg, pk->rk.type = htons(pset->type); pk->rk.rrset_class = pset->rrset_class; /** read data part. */ - if(!parse_create_rrset(pkt, pset, &data, region)) + if(!parse_create_rrset(pkt, pset, &data, region)) { + if(!region) { + free(pk->rk.dname); + pk->rk.dname = NULL; + } return 0; + } pk->entry.data = (void*)data; pk->entry.key = (void*)pk; pk->entry.hash = pset->hash; diff --git a/util/shm_side/shm_main.c b/util/shm_side/shm_main.c index af8c5bcf3..51039abf3 100644 --- a/util/shm_side/shm_main.c +++ b/util/shm_side/shm_main.c @@ -130,6 +130,7 @@ int shm_main_init(struct daemon* daemon) /* Just release memory unused */ free(daemon->shm_info); + daemon->shm_info = NULL; return 0; } @@ -143,6 +144,7 @@ int shm_main_init(struct daemon* daemon) /* Just release memory unused */ free(daemon->shm_info); + daemon->shm_info = NULL; return 0; } @@ -156,6 +158,7 @@ int shm_main_init(struct daemon* daemon) /* Just release memory unused */ free(daemon->shm_info); + daemon->shm_info = NULL; return 0; } @@ -170,6 +173,7 @@ int shm_main_init(struct daemon* daemon) /* Just release memory unused */ free(daemon->shm_info); + daemon->shm_info = NULL; return 0; } @@ -210,6 +214,8 @@ void shm_main_shutdown(struct daemon* daemon) if (daemon->shm_info->ptr_arr) shmdt(daemon->shm_info->ptr_arr); + free(daemon->shm_info); + daemon->shm_info = NULL; #else (void)daemon; #endif /* HAVE_SHMGET */ diff --git a/validator/val_nsec.c b/validator/val_nsec.c index 032d2ae03..a4e5b3137 100644 --- a/validator/val_nsec.c +++ b/validator/val_nsec.c @@ -180,6 +180,7 @@ nsec_verify_rrset(struct module_env* env, struct val_env* ve, { struct packed_rrset_data* d = (struct packed_rrset_data*) nsec->entry.data; + if(!d) return 0; if(d->security == sec_status_secure) return 1; rrset_check_sec_status(env->rrset_cache, nsec, *env->now); From 896357a5b3802e67e665343aa760a423a3b2ebca Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Mon, 21 Jun 2021 12:54:23 +0200 Subject: [PATCH 165/553] - Fix #495: Documentation or implementation of "verbosity" option. --- doc/Changelog | 3 +++ doc/unbound.conf.5.in | 10 +++++----- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index e350b8b3f..645667296 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +21 June 2021: George + - Fix #495: Documentation or implementation of "verbosity" option. + 18 June 2021: Wouter - Fix a number of warnings reported by the gcc analyzer. diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 8d13a0a0f..7fe0994e4 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -89,11 +89,11 @@ These options are part of the clause. .TP .B verbosity: \fI -The verbosity number, level 0 means no verbosity, only errors. Level 1 -gives operational information. Level 2 gives detailed operational -information. Level 3 gives query level information, output per query. -Level 4 gives algorithm level information. Level 5 logs client -identification for cache misses. Default is level 1. +The verbosity number, level 0 means no verbosity, only errors. Level 1 +gives operational information. Level 2 gives detailed operational +information including short information per query. Level 3 gives query level +information, output per query. Level 4 gives algorithm level information. +Level 5 logs client identification for cache misses. Default is level 1. The verbosity can also be increased from the commandline, see \fIunbound\fR(8). .TP .B statistics\-interval: \fI From 4de4a0ffb677a0ef873b47af0ac3407bf7f83594 Mon Sep 17 00:00:00 2001 From: Wouter Wijngaards Date: Wed, 23 Jun 2021 10:23:23 +0200 Subject: [PATCH 166/553] Create ci.yml --- .github/workflows/ci.yml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 000000000..73d68fbf3 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,21 @@ +name: ci + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: configure + run: ./configure --enable-debug + - name: make + run: make + - name: make test + run: make test From eb9891f4ed522e7fa519189aa2783cb0da3e592c Mon Sep 17 00:00:00 2001 From: tcarpay <8014108+TCY16@users.noreply.github.com> Date: Wed, 23 Jun 2021 10:53:11 +0200 Subject: [PATCH 167/553] Apply suggestions from code review Co-authored-by: Willem Toorop --- sldns/str2wire.c | 33 ++++++++++++++++++++++----------- sldns/str2wire.h | 2 +- sldns/wire2str.c | 39 +++++++++++++++++++-------------------- sldns/wire2str.h | 3 --- testcode/readzone.c | 3 ++- 5 files changed, 44 insertions(+), 36 deletions(-) diff --git a/sldns/str2wire.c b/sldns/str2wire.c index 275cc7e8c..abc55a7c1 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -626,7 +626,7 @@ static int sldns_str2wire_svcparam_key_cmp(const void *a, const void *b) static int sldns_str2wire_check_svcbparams(uint8_t* rdata, uint16_t rdata_len) { size_t nparams = 0, i, j; - uint8_t new_rdata[65536]; + uint8_t new_rdata[LDNS_MAX_RDFLEN]; uint8_t* new_rdata_ptr = new_rdata; uint8_t* svcparams[64]; uint8_t* mandatory = NULL; @@ -650,7 +650,7 @@ static int sldns_str2wire_check_svcbparams(uint8_t* rdata, uint16_t rdata_len) rdata_ptr += svcbparam_len; nparams += 1; - if (nparams > sizeof(svcparams)/8) + if (nparams > MAX_NUMBER_OF_SVCPARAMS) return LDNS_WIREPARSE_ERR_SVCB_TOO_MANY_PARAMS; } @@ -684,7 +684,7 @@ static int sldns_str2wire_check_svcbparams(uint8_t* rdata, uint16_t rdata_len) if (mandatory) { /* Divide by sizeof(uint16_t)*/ - uint16_t mandatory_len = sldns_read_uint16(mandatory + 2) >> 1; + uint16_t mandatory_len = sldns_read_uint16(mandatory + 2) / sizeof(uint16_t); /* Guaranteed by sldns_str2wire_svcparam_key_value */ assert(mandatory_len > 0); @@ -1360,6 +1360,8 @@ sldns_str2wire_svcbparam_ech_value(const char* val, uint8_t* rd, size_t* rd_len) /* single 0 represents empty buffer */ if(strcmp(val, "0") == 0) { + if (*rd_len < 4) + return LDNS_WIREPARSE_ERR_BUFFER_TOO_SMALL sldns_write_uint16(rd, SVCB_KEY_ECH); sldns_write_uint16(rd + 2, 0); @@ -1399,6 +1401,9 @@ sldns_str2wire_svcbparam_parse_next_unescaped_comma(const char *val) return NULL; } +/* The source is already properly unescaped, this double unescaping is purely to allow for + * comma's in comma seperated alpn lists. + */ static size_t sldns_str2wire_svcbparam_parse_copy_unescaped(uint8_t *dst, const char *src, size_t len) @@ -1422,12 +1427,12 @@ static int sldns_str2wire_svcbparam_alpn_value(const char* val, uint8_t* rd, size_t* rd_len) { - uint8_t unescaped_dst[65536]; + uint8_t unescaped_dst[LDNS_MAX_RDFLEN]; uint8_t *dst = unescaped_dst; const char *next_str; size_t str_len; size_t dst_len; - size_t val_len; + size_t val_len; val_len = strlen(val); @@ -1456,7 +1461,8 @@ sldns_str2wire_svcbparam_alpn_value(const char* val, val = next_str + 1; } dst_len = dst - unescaped_dst; - + if (*rd_len < 4 + dst_len) + return LDNS_WIREPARSE_ERR_BUFFER_TOO_SMALL; sldns_write_uint16(rd, SVCB_KEY_ALPN); sldns_write_uint16(rd + 2, dst_len); memcpy(rd + 4, unescaped_dst, dst_len); @@ -1486,6 +1492,8 @@ sldns_str2wire_svcparam_value(const char *key, size_t key_len, case SVCB_KEY_IPV6HINT: return LDNS_WIREPARSE_ERR_SVCB_MISSING_PARAM; default: + if (*rd_len < 4) + return LDNS_WIREPARSE_ERR_BUFFER_TOO_SMALL; sldns_write_uint16(rd, svcparamkey); sldns_write_uint16(rd + 2, 0); *rd_len = 4; @@ -1512,6 +1520,8 @@ sldns_str2wire_svcparam_value(const char *key, size_t key_len, return sldns_str2wire_svcbparam_alpn_value(val, rd, rd_len); default: str_len = strlen(val); + if (*rd_len < 4 + str_len) + return LDNS_WIREPARSE_ERR_BUFFER_TOO_SMALL; sldns_write_uint16(rd, svcparamkey); sldns_write_uint16(rd + 2, str_len); memcpy(rd + 4, val, str_len); @@ -1527,7 +1537,7 @@ sldns_str2wire_svcparam_value(const char *key, size_t key_len, int sldns_str2wire_svcparam_buf(const char* str, uint8_t* rd, size_t* rd_len) { const char* eq_pos; - char unescaped_val[65536]; + char unescaped_val[LDNS_MAX_RDFLEN]; char* val_out = unescaped_val; const char* val_in; @@ -1540,11 +1550,14 @@ int sldns_str2wire_svcparam_buf(const char* str, uint8_t* rd, size_t* rd_len) /* unescape characters and "" blocks */ if (*val_in == '"') { val_in++; - while (*val_in != '"' && sldns_parse_char( (uint8_t*) val_out, &val_in)) { + while (*val_in != '"' + && val_out - unescaped_val < sizeof(unescaped_val) - 1 + && sldns_parse_char( (uint8_t*) val_out, &val_in)) { val_out++; } } else { - while ( sldns_parse_char( (uint8_t*) val_out, &val_in)) { + while (val_out - unescaped_val < sizeof(unescaped_val) - 1 + && sldns_parse_char( (uint8_t*) val_out, &val_in)) { val_out++; } } @@ -1561,8 +1574,6 @@ int sldns_str2wire_svcparam_buf(const char* str, uint8_t* rd, size_t* rd_len) else { return sldns_str2wire_svcparam_value(str, strlen(str), NULL, rd, rd_len); } - - return LDNS_WIREPARSE_ERR_OK; } int sldns_str2wire_rdf_buf(const char* str, uint8_t* rd, size_t* len, diff --git a/sldns/str2wire.h b/sldns/str2wire.h index 5fc096b3e..60dab77ae 100644 --- a/sldns/str2wire.h +++ b/sldns/str2wire.h @@ -36,7 +36,7 @@ struct sldns_struct_lookup_table; #define SVCB_KEY_NO_DEFAULT_ALPN 2 #define SVCB_KEY_PORT 3 #define SVCB_KEY_IPV4HINT 4 -#define SVCB_KEY_ECH 5 +#define SVCB_KEY_ECH 5 #define SVCB_KEY_IPV6HINT 6 #define SVCPARAMKEY_COUNT 7 diff --git a/sldns/wire2str.c b/sldns/wire2str.c index 99ce5574e..6ed94760a 100644 --- a/sldns/wire2str.c +++ b/sldns/wire2str.c @@ -1003,19 +1003,20 @@ static int sldns_wire2str_svcparam_ipv4hint2str(char** s, if ((data_len % LDNS_IP4ADDRLEN) == 0) { if (inet_ntop(AF_INET, data, ip_str, sizeof(ip_str)) == NULL) - return 0; /* wireformat error, incorrect size or inet family */ + return -1; /* wireformat error, incorrect size or inet family */ w += sldns_str_print(s, slen, "=%s", ip_str); data += LDNS_IP4ADDRLEN; while ((data_len -= LDNS_IP4ADDRLEN) > 0) { if (inet_ntop(AF_INET, data, ip_str, sizeof(ip_str)) == NULL) - return 0; /* wireformat error, incorrect size or inet family */ + return -1; /* wireformat error, incorrect size or inet family */ w += sldns_str_print(s, slen, ",%s", ip_str); data += LDNS_IP4ADDRLEN; } - } + } else + return -1; return w; } @@ -1031,19 +1032,20 @@ static int sldns_wire2str_svcparam_ipv6hint2str(char** s, if ((data_len % LDNS_IP6ADDRLEN) == 0) { if (inet_ntop(AF_INET6, data, ip_str, sizeof(ip_str)) == NULL) - return 0; /* wireformat error, incorrect size or inet family */ + return -1; /* wireformat error, incorrect size or inet family */ w += sldns_str_print(s, slen, "=%s", ip_str); data += LDNS_IP6ADDRLEN; while ((data_len -= LDNS_IP6ADDRLEN) > 0) { if (inet_ntop(AF_INET6, data, ip_str, sizeof(ip_str)) == NULL) - return 0; /* wireformat error, incorrect size or inet family */ + return -1; /* wireformat error, incorrect size or inet family */ w += sldns_str_print(s, slen, ",%s", ip_str); data += LDNS_IP6ADDRLEN; } - } + } else + return -1; return w; } @@ -1055,8 +1057,8 @@ static int sldns_wire2str_svcparam_mandatory2str(char** s, assert(data_len > 0); - // if (data_len % sizeof(uint16_t)) - // return 0; // wireformat error, data_len must be multiple of shorts + if (data_len % sizeof(uint16_t)) + return -1; // wireformat error, data_len must be multiple of shorts w += sldns_str_print(s, slen, "="); w += sldns_print_svcparamkey(s, slen, sldns_read_uint16(data)); data += 2; @@ -1076,14 +1078,15 @@ static int sldns_wire2str_svcparam_alpn2str(char** s, uint8_t *dp = (void *)data; int w = 0; - assert(data_len > 0); /* Guaranteed by rdata_svcparam_to_string */ + assert(data_len > 0); /* Guaranteed by sldns_wire2str_svcparam_scan */ w += sldns_str_print(s, slen, "=\""); while (data_len) { + /* alpn is list of length byte (str_len) followed by a string of that size */ uint8_t i, str_len = *dp++; if (str_len > --data_len) - return 0; + return -1; for (i = 0; i < str_len; i++) { if (dp[i] == '"' || dp[i] == '\\') @@ -1113,22 +1116,18 @@ static int sldns_wire2str_svcparam_ech2str(char** s, int size; int w = 0; - assert(data_len > 0); /* Guaranteed by rdata_svcparam_to_string */ + assert(data_len > 0); /* Guaranteed by sldns_wire2str_svcparam_scan */ w += sldns_str_print(s, slen, "=\""); - size = sldns_b64_ntop(data, data_len, *s, *slen); + if ((size = sldns_b64_ntop(data, data_len, *s, *slen)) < 0) + return -1; (*s) += size; (*slen) -= size; w += sldns_str_print(s, slen, "\""); - // @TODO fix check - // if(size > *slen) { - // buffer_skip(output, size); - // } - return w + size; } @@ -1162,9 +1161,9 @@ int sldns_wire2str_svcparam_scan(uint8_t** d, size_t* dlen, char** s, size_t* sl case SVCB_KEY_IPV4HINT: case SVCB_KEY_IPV6HINT: case SVCB_KEY_MANDATORY: - return LDNS_WIREPARSE_ERR_SYNTAX_MISSING_VALUE; + return -1; default: - return LDNS_WIREPARSE_ERR_OK; + return written_chars; } } @@ -1205,7 +1204,7 @@ int sldns_wire2str_svcparam_scan(uint8_t** d, size_t* dlen, char** s, size_t* sl r += sldns_str_print(s, slen, "%c", ch); } - r += sldns_str_print(s, slen, "%c", '"'); + r += sldns_str_print(s, slen, "\""); break; } if (r <= 0) diff --git a/sldns/wire2str.h b/sldns/wire2str.h index 3c777367c..0167fe7c1 100644 --- a/sldns/wire2str.h +++ b/sldns/wire2str.h @@ -41,9 +41,6 @@ extern struct sldns_struct_lookup_table* sldns_wireparse_errors; /** tsig errors are the rcodes with extra (higher) values */ extern struct sldns_struct_lookup_table* sldns_tsig_errors; -/* draft-ietf-dnsop-svcb-https-04: 6. Initial SvcParamKeys */ -extern const char *svcparamkey_strs[]; - /** * Convert wireformat packet to a string representation * @param data: wireformat packet data (starting at ID bytes). diff --git a/testcode/readzone.c b/testcode/readzone.c index 927d55f53..3854465eb 100644 --- a/testcode/readzone.c +++ b/testcode/readzone.c @@ -72,7 +72,7 @@ int main(int argc, char *const *argv) s = sldns_fp2wire_rr_buf(in, rr, &rr_len, &dname_len, &state); if (s) { - fprintf( stderr, "parse error %d:%d: %s" + fprintf( stderr, "parse error %d:%d: %s\n" , state.lineno, LDNS_WIREPARSE_OFFSET(s) , sldns_get_errorstr_parse(s)); break; @@ -103,5 +103,6 @@ int main(int argc, char *const *argv) } if (in) fclose(in); + free(str); return !in || s ? EXIT_FAILURE : EXIT_SUCCESS; } From f02d9b596369dd021c98dbf83466cda42809cd54 Mon Sep 17 00:00:00 2001 From: Tom Carpay Date: Wed, 23 Jun 2021 11:04:19 +0200 Subject: [PATCH 168/553] fix broken ci-build --- sldns/str2wire.c | 2 +- sldns/str2wire.h | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/sldns/str2wire.c b/sldns/str2wire.c index abc55a7c1..bb05abc1c 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -1361,7 +1361,7 @@ sldns_str2wire_svcbparam_ech_value(const char* val, uint8_t* rd, size_t* rd_len) /* single 0 represents empty buffer */ if(strcmp(val, "0") == 0) { if (*rd_len < 4) - return LDNS_WIREPARSE_ERR_BUFFER_TOO_SMALL + return LDNS_WIREPARSE_ERR_BUFFER_TOO_SMALL; sldns_write_uint16(rd, SVCB_KEY_ECH); sldns_write_uint16(rd + 2, 0); diff --git a/sldns/str2wire.h b/sldns/str2wire.h index 60dab77ae..cc1fd2078 100644 --- a/sldns/str2wire.h +++ b/sldns/str2wire.h @@ -38,9 +38,11 @@ struct sldns_struct_lookup_table; #define SVCB_KEY_IPV4HINT 4 #define SVCB_KEY_ECH 5 #define SVCB_KEY_IPV6HINT 6 -#define SVCPARAMKEY_COUNT 7 +#define SVCPARAMKEY_COUNT 7 -#define SVCB_MAX_COMMA_SEPARATED_VALUES 1000 +#define MAX_NUMBER_OF_SVCPARAMS 64 + +#define SVCB_MAX_COMMA_SEPARATED_VALUES 1000 /* * To convert class and type to string see From 9d681b627fd874588afe60335b46c53ad3aebf67 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 23 Jun 2021 14:05:59 +0200 Subject: [PATCH 169/553] - Fix #503: DNS over HTTPS response truncated. --- doc/Changelog | 3 +++ services/listen_dnsport.c | 51 ++++++++++++++++++++++++++++++--------- sldns/parseutil.c | 15 ++++++++++++ sldns/parseutil.h | 1 + 4 files changed, 58 insertions(+), 12 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 645667296..9ac461e5a 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +23 June 2021: Wouter + - Fix #503: DNS over HTTPS response truncated. + 21 June 2021: George - Fix #495: Documentation or implementation of "verbosity" option. diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index ca40fac5c..52b0a2ee9 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -2678,18 +2678,45 @@ static int http2_buffer_uri_query(struct http2_session* h2_session, return 0; } - if(!(b64len = sldns_b64url_pton( - (char const *)start, length, - sldns_buffer_current(h2_stream->qbuffer), - expectb64len)) || b64len < 0) { - lock_basic_lock(&http2_query_buffer_count_lock); - http2_query_buffer_count -= expectb64len; - lock_basic_unlock(&http2_query_buffer_count_lock); - sldns_buffer_free(h2_stream->qbuffer); - h2_stream->qbuffer = NULL; - /* return without error, method can be an - * unknown POST */ - return 1; + if(sldns_b64_contains_nonurl((char const*)start, length)) { + char buf[65536+4]; + verbose(VERB_ALGO, "HTTP2 stream contains wrong b64 encoding"); + /* copy to the scratch buffer temporarily to terminate the + * string with a zero */ + if(length+1 > sizeof(buf)) { + /* too long */ + lock_basic_lock(&http2_query_buffer_count_lock); + http2_query_buffer_count -= expectb64len; + lock_basic_unlock(&http2_query_buffer_count_lock); + sldns_buffer_free(h2_stream->qbuffer); + h2_stream->qbuffer = NULL; + return 1; + } + memmove(buf, start, length); + buf[length] = 0; + if(!(b64len = sldns_b64_pton(buf, sldns_buffer_current( + h2_stream->qbuffer), expectb64len)) || b64len < 0) { + lock_basic_lock(&http2_query_buffer_count_lock); + http2_query_buffer_count -= expectb64len; + lock_basic_unlock(&http2_query_buffer_count_lock); + sldns_buffer_free(h2_stream->qbuffer); + h2_stream->qbuffer = NULL; + return 1; + } + } else { + if(!(b64len = sldns_b64url_pton( + (char const *)start, length, + sldns_buffer_current(h2_stream->qbuffer), + expectb64len)) || b64len < 0) { + lock_basic_lock(&http2_query_buffer_count_lock); + http2_query_buffer_count -= expectb64len; + lock_basic_unlock(&http2_query_buffer_count_lock); + sldns_buffer_free(h2_stream->qbuffer); + h2_stream->qbuffer = NULL; + /* return without error, method can be an + * unknown POST */ + return 1; + } } sldns_buffer_skip(h2_stream->qbuffer, (size_t)b64len); return 1; diff --git a/sldns/parseutil.c b/sldns/parseutil.c index 9f289d359..ba71df55d 100644 --- a/sldns/parseutil.c +++ b/sldns/parseutil.c @@ -790,3 +790,18 @@ int sldns_b64url_pton(char const *src, size_t srcsize, uint8_t *target, } return sldns_b64_pton_base(src, srcsize, target, targsize, 1); } + +int sldns_b64_contains_nonurl(char const *src, size_t srcsize) +{ + const char* s = src; + while(*s && srcsize) { + char d = *s++; + srcsize--; + /* the '+' and the '/' and padding '=' is not allowed in b64 + * url encoding */ + if(d == '+' || d == '/' || d == '=') { + return 1; + } + } + return 0; +} diff --git a/sldns/parseutil.h b/sldns/parseutil.h index 7eb23317f..74d7c7275 100644 --- a/sldns/parseutil.h +++ b/sldns/parseutil.h @@ -102,6 +102,7 @@ size_t sldns_b64_pton_calculate_size(size_t srcsize); int sldns_b64_pton(char const *src, uint8_t *target, size_t targsize); int sldns_b64url_pton(char const *src, size_t srcsize, uint8_t *target, size_t targsize); +int sldns_b64_contains_nonurl(char const *src, size_t srcsize); /** * calculates the size needed to store the result of b32_ntop From ff41de4ec37c45d36108b2c03aeb1f26ba1dddaf Mon Sep 17 00:00:00 2001 From: Tom Carpay Date: Wed, 23 Jun 2021 14:44:03 +0200 Subject: [PATCH 170/553] resolve comments --- sldns/str2wire.c | 52 ++++++++++++++++++++++++++++++++---------------- sldns/str2wire.h | 7 ++++--- sldns/wire2str.c | 10 ++++++---- sldns/wire2str.h | 12 +++++++++++ 4 files changed, 57 insertions(+), 24 deletions(-) diff --git a/sldns/str2wire.c b/sldns/str2wire.c index bb05abc1c..b7eae2024 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -639,13 +639,13 @@ static int sldns_str2wire_check_svcbparams(uint8_t* rdata, uint16_t rdata_len) svcparams[nparams] = rdata_ptr; if (rdata_remaining < 4) - return LDNS_WIREPARSE_ERR_GENERAL; + return LDNS_WIREPARSE_ERR_SVCPARAM_BROKEN_RDATA; svcbparam_len = sldns_read_uint16(rdata_ptr + 2); rdata_remaining -= 4; rdata_ptr += 4; if (rdata_remaining < svcbparam_len) - return LDNS_WIREPARSE_ERR_GENERAL; + return LDNS_WIREPARSE_ERR_SVCPARAM_BROKEN_RDATA; rdata_remaining -= svcbparam_len; rdata_ptr += svcbparam_len; @@ -654,7 +654,7 @@ static int sldns_str2wire_check_svcbparams(uint8_t* rdata, uint16_t rdata_len) return LDNS_WIREPARSE_ERR_SVCB_TOO_MANY_PARAMS; } - /* In draft-ietf-dnsop-svcb-https-05 Section 7: + /* In draft-ietf-dnsop-svcb-https-06 Section 7: * * In wire format, the keys are represented by their numeric * values in network byte order, concatenated in ascending order. @@ -664,7 +664,7 @@ static int sldns_str2wire_check_svcbparams(uint8_t* rdata, uint16_t rdata_len) ,sizeof(uint8_t*) ,sldns_str2wire_svcparam_key_cmp); - /* In draft-ietf-dnsop-svcb-https-05 Section 7: + /* In draft-ietf-dnsop-svcb-https-06 Section 7: * * Keys (...) MUST NOT appear more than once. * @@ -684,12 +684,12 @@ static int sldns_str2wire_check_svcbparams(uint8_t* rdata, uint16_t rdata_len) if (mandatory) { /* Divide by sizeof(uint16_t)*/ - uint16_t mandatory_len = sldns_read_uint16(mandatory + 2) / sizeof(uint16_t); + uint16_t mandatory_nkeys = sldns_read_uint16(mandatory + 2) / sizeof(uint16_t); /* Guaranteed by sldns_str2wire_svcparam_key_value */ - assert(mandatory_len > 0); + assert(mandatory_nkeys > 0); - for (i = 0; i < mandatory_len; i++) { + for (i = 0; i < mandatory_nkeys; i++) { uint16_t mandatory_key = sldns_read_uint16(mandatory + 2 * sizeof(uint16_t) + i * sizeof(uint16_t)); @@ -844,6 +844,8 @@ rrinternal_parse_rdata(sldns_buffer* strbuf, char* token, size_t token_len, rdata_len -= label_len; rdata += label_len; } + /* The root label is one more character, so smaller + * than 1 + 1 means no Svcparam Keys */ assert(*rdata == 0); if (rdata_len < 2) return LDNS_WIREPARSE_ERR_OK; @@ -1075,7 +1077,7 @@ int sldns_fp2wire_rr_buf(FILE* in, uint8_t* rr, size_t* len, size_t* dname_len, return LDNS_WIREPARSE_ERR_OK; } -static uint16_t +static int sldns_str2wire_svcparam_key_lookup(const char *key, size_t key_len) { char buf[64]; @@ -1158,7 +1160,7 @@ sldns_str2wire_svcparam_port(const char* val, uint8_t* rd, size_t* rd_len) return LDNS_WIREPARSE_ERR_OK; } - return LDNS_WIREPARSE_ERR_SVCB_PORT_UNKNOWN_KEY; + return LDNS_WIREPARSE_ERR_SVCB_PORT_VALUE_SYNTAX; } static int @@ -1174,7 +1176,7 @@ sldns_str2wire_svcbparam_ipv4hint(const char* val, uint8_t* rd, size_t* rd_len) if (val[i] == ',') count += 1; if (count > SVCB_MAX_COMMA_SEPARATED_VALUES) { - return LDNS_WIREPARSE_ERR_SVCB_IPV4_TOO_MANY_KEYS; + return LDNS_WIREPARSE_ERR_SVCB_IPV4_TOO_MANY_ADDRESSES; } } @@ -1231,7 +1233,7 @@ sldns_str2wire_svcbparam_ipv6hint(const char* val, uint8_t* rd, size_t* rd_len) if (val[i] == ',') count += 1; if (count > SVCB_MAX_COMMA_SEPARATED_VALUES) { - return LDNS_WIREPARSE_ERR_SVCB_IPV6_TOO_MANY_KEYS; + return LDNS_WIREPARSE_ERR_SVCB_IPV6_TOO_MANY_ADDRESSES; } } @@ -1307,14 +1309,27 @@ sldns_str2wire_svcbparam_mandatory(const char* val, uint8_t* rd, size_t* rd_len) *rd_len = 4; while (1) { + int svcparamkey; + if (!(next_key = strchr(val, ','))) { - sldns_write_uint16(rd + *rd_len, - sldns_str2wire_svcparam_key_lookup(val, val_len)); + svcparamkey = sldns_str2wire_svcparam_key_lookup(val, val_len); + + if (svcparamkey < 0) { + return LDNS_WIREPARSE_ERR_SVCB_UNKNOWN_KEY; + } + + sldns_write_uint16(rd + *rd_len, svcparamkey); *rd_len += 2; break; } else { + svcparamkey = sldns_str2wire_svcparam_key_lookup(val, next_key - val); + + if (svcparamkey < 0) { + return LDNS_WIREPARSE_ERR_SVCB_UNKNOWN_KEY; + } + sldns_write_uint16(rd + *rd_len, - sldns_str2wire_svcparam_key_lookup(val, next_key - val)); + svcparamkey); *rd_len += 2; } @@ -1323,14 +1338,14 @@ sldns_str2wire_svcbparam_mandatory(const char* val, uint8_t* rd, size_t* rd_len) key_dst += 1; } - /* In draft-ietf-dnsop-svcb-https-05 Section 7: + /* In draft-ietf-dnsop-svcb-https-06 Section 7: * * "In wire format, the keys are represented by their numeric * values in network byte order, concatenated in ascending order." */ qsort((void *)(rd + 4), count, sizeof(uint16_t), sldns_network_uint16_cmp); - /* In draft-ietf-dnsop-svcb-https-05 Section 8 + /* In draft-ietf-dnsop-svcb-https-06 Section 8 * automatically mandatory MUST NOT appear in its own value-list */ if (sldns_read_uint16(rd + 4) == SVCB_KEY_MANDATORY) @@ -1403,6 +1418,9 @@ sldns_str2wire_svcbparam_parse_next_unescaped_comma(const char *val) /* The source is already properly unescaped, this double unescaping is purely to allow for * comma's in comma seperated alpn lists. + * + * In draft-ietf-dnsop-svcb-https-06 Section 7: + * To enable simpler parsing, this SvcParamValue MUST NOT contain escape sequences. */ static size_t sldns_str2wire_svcbparam_parse_copy_unescaped(uint8_t *dst, @@ -1476,7 +1494,7 @@ sldns_str2wire_svcparam_value(const char *key, size_t key_len, const char *val, uint8_t* rd, size_t* rd_len) { size_t str_len; - uint16_t svcparamkey = sldns_str2wire_svcparam_key_lookup(key, key_len); + int svcparamkey = sldns_str2wire_svcparam_key_lookup(key, key_len); if (svcparamkey < 0) { return LDNS_WIREPARSE_ERR_SVCB_UNKNOWN_KEY; diff --git a/sldns/str2wire.h b/sldns/str2wire.h index cc1fd2078..0c3164989 100644 --- a/sldns/str2wire.h +++ b/sldns/str2wire.h @@ -229,11 +229,12 @@ uint8_t* sldns_wirerr_get_rdatawl(uint8_t* rr, size_t len, size_t dname_len); #define LDNS_WIREPARSE_ERR_SVCB_MANDATORY_MISSING_PARAM 378 #define LDNS_WIREPARSE_ERR_SVCB_MANDATORY_DUPLICATE_KEY 379 #define LDNS_WIREPARSE_ERR_SVCB_MANDATORY_IN_MANDATORY 380 -#define LDNS_WIREPARSE_ERR_SVCB_PORT_UNKNOWN_KEY 381 -#define LDNS_WIREPARSE_ERR_SVCB_IPV4_TOO_MANY_KEYS 382 -#define LDNS_WIREPARSE_ERR_SVCB_IPV6_TOO_MANY_KEYS 383 +#define LDNS_WIREPARSE_ERR_SVCB_PORT_VALUE_SYNTAX 381 +#define LDNS_WIREPARSE_ERR_SVCB_IPV4_TOO_MANY_ADDRESSES 382 +#define LDNS_WIREPARSE_ERR_SVCB_IPV6_TOO_MANY_ADDRESSES 383 #define LDNS_WIREPARSE_ERR_SVCB_ALPN_KEY_TOO_LARGE 384 #define LDNS_WIREPARSE_ERR_SVCB_NO_DEFAULT_ALPN_VALUE 385 +#define LDNS_WIREPARSE_ERR_SVCPARAM_BROKEN_RDATA 386 /** * Get reference to a constant string for the (parse) error. diff --git a/sldns/wire2str.c b/sldns/wire2str.c index 6ed94760a..0437477d9 100644 --- a/sldns/wire2str.c +++ b/sldns/wire2str.c @@ -161,16 +161,18 @@ static sldns_lookup_table sldns_wireparse_errors_data[] = { "Keys in SvcParam mandatory MUST be unique" }, { LDNS_WIREPARSE_ERR_SVCB_MANDATORY_IN_MANDATORY, "mandatory MUST not be included as mandatory parameter" }, - { LDNS_WIREPARSE_ERR_SVCB_PORT_UNKNOWN_KEY, + { LDNS_WIREPARSE_ERR_SVCB_PORT_VALUE_SYNTAX, "Could not parse port SvcParamValue" }, - { LDNS_WIREPARSE_ERR_SVCB_IPV4_TOO_MANY_KEYS, + { LDNS_WIREPARSE_ERR_SVCB_IPV4_TOO_MANY_ADDRESSES, "Too many IPv4 addresses in ipv4hint" }, - { LDNS_WIREPARSE_ERR_SVCB_IPV6_TOO_MANY_KEYS, + { LDNS_WIREPARSE_ERR_SVCB_IPV6_TOO_MANY_ADDRESSES, "Too many IPv6 addresses in ipv6hint" }, { LDNS_WIREPARSE_ERR_SVCB_ALPN_KEY_TOO_LARGE, "Alpn strings need to be smaller than 255 chars"}, { LDNS_WIREPARSE_ERR_SVCB_NO_DEFAULT_ALPN_VALUE, "No-default-alpn should not have a value" }, + { LDNS_WIREPARSE_ERR_SVCPARAM_BROKEN_RDATA, + "General SVCParam error" }, { 0, NULL } }; sldns_lookup_table* sldns_wireparse_errors = sldns_wireparse_errors_data; @@ -218,7 +220,7 @@ static sldns_lookup_table sldns_tsig_errors_data[] = { }; sldns_lookup_table* sldns_tsig_errors = sldns_tsig_errors_data; -/* draft-ietf-dnsop-svcb-https-04: 6. Initial SvcParamKeys */ +/* draft-ietf-dnsop-svcb-https-06: 6. Initial SvcParamKeys */ const char *svcparamkey_strs[] = { "mandatory", "alpn", "no-default-alpn", "port", "ipv4hint", "ech", "ipv6hint" diff --git a/sldns/wire2str.h b/sldns/wire2str.h index 0167fe7c1..b1ad459e3 100644 --- a/sldns/wire2str.h +++ b/sldns/wire2str.h @@ -494,6 +494,18 @@ int sldns_wire2str_opcode_buf(int opcode, char* str, size_t len); int sldns_wire2str_dname_buf(uint8_t* dname, size_t dname_len, char* str, size_t len); +/** + * Convert wire SVCB to a string with user buffer. + * @param d: the SVCB data in uncompressed wireformat. + * @param dlen: length of the SVCB data. + * @param s: the string to write to. + * @param slen: length of string. + * @return the number of characters for this element, excluding zerobyte. + * Is larger or equal than str_len if output was truncated. + */ +int sldns_wire2str_svcparam_scan(uint8_t** d, size_t* dlen, char** s, + size_t* slen); + /** * Scan wireformat rdf field to string, with user buffers. * It shifts the arguments to move along (see sldns_wire2str_pkt_scan). From cf02b3167596a732fb1d24a4d7157ec42ed7d08a Mon Sep 17 00:00:00 2001 From: Tom Carpay Date: Wed, 23 Jun 2021 15:03:35 +0200 Subject: [PATCH 171/553] comment out sematic errors to default to secondary resolver behaviour --- sldns/str2wire.c | 104 ++++++++++++++++++++++++++--------------------- 1 file changed, 57 insertions(+), 47 deletions(-) diff --git a/sldns/str2wire.c b/sldns/str2wire.c index b7eae2024..e7eab4354 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -664,60 +664,66 @@ static int sldns_str2wire_check_svcbparams(uint8_t* rdata, uint16_t rdata_len) ,sizeof(uint8_t*) ,sldns_str2wire_svcparam_key_cmp); + + /* The code below revolves around sematic errors in the SVCParam set. + * So long as we do not distinguish between running Unbound as a primary + * or as a secondary, we default to secondary behavior and we ignore the + * sematic errors. */ + /* In draft-ietf-dnsop-svcb-https-06 Section 7: * * Keys (...) MUST NOT appear more than once. * * If they key has already been seen, we have a duplicate */ - for (i = 0; i < nparams; i++) { - uint16_t key = sldns_read_uint16(svcparams[i]); + // for (i = 0; i < nparams; i++) { + // uint16_t key = sldns_read_uint16(svcparams[i]); - if (i + 1 < nparams && key == sldns_read_uint16(svcparams[i+1])) - return LDNS_WIREPARSE_ERR_SVCB_DUPLICATE_KEYS; + // if (i + 1 < nparams && key == sldns_read_uint16(svcparams[i+1])) + // return LDNS_WIREPARSE_ERR_SVCB_DUPLICATE_KEYS; - if (key == SVCB_KEY_MANDATORY) - mandatory = svcparams[i]; - } + // if (key == SVCB_KEY_MANDATORY) + // mandatory = svcparams[i]; + // } /* 4. verify that all the SvcParamKeys in mandatory are present */ - if (mandatory) { + // if (mandatory) { - /* Divide by sizeof(uint16_t)*/ - uint16_t mandatory_nkeys = sldns_read_uint16(mandatory + 2) / sizeof(uint16_t); + // /* Divide by sizeof(uint16_t)*/ + // uint16_t mandatory_nkeys = sldns_read_uint16(mandatory + 2) / sizeof(uint16_t); - /* Guaranteed by sldns_str2wire_svcparam_key_value */ - assert(mandatory_nkeys > 0); + // /* Guaranteed by sldns_str2wire_svcparam_key_value */ + // assert(mandatory_nkeys > 0); - for (i = 0; i < mandatory_nkeys; i++) { - uint16_t mandatory_key = sldns_read_uint16(mandatory - + 2 * sizeof(uint16_t) - + i * sizeof(uint16_t)); - uint8_t found = 0; + // for (i = 0; i < mandatory_nkeys; i++) { + // uint16_t mandatory_key = sldns_read_uint16(mandatory + // + 2 * sizeof(uint16_t) + // + i * sizeof(uint16_t)); + // uint8_t found = 0; - for (j = 0; j < nparams; j++) { - if (mandatory_key == sldns_read_uint16(svcparams[j])) - found = 1; - } + // for (j = 0; j < nparams; j++) { + // if (mandatory_key == sldns_read_uint16(svcparams[j])) + // found = 1; + // } - if (!found) - return LDNS_WIREPARSE_ERR_SVCB_MANDATORY_MISSING_PARAM; - } + // if (!found) + // return LDNS_WIREPARSE_ERR_SVCB_MANDATORY_MISSING_PARAM; + // } - } + // } - // Write rdata in correct order - for (i = 0; i < nparams; i++) { - uint16_t svcparam_len = sldns_read_uint16(svcparams[i] + 2) - + 2 * sizeof(uint16_t); + /* Write rdata in correct order */ + // for (i = 0; i < nparams; i++) { + // uint16_t svcparam_len = sldns_read_uint16(svcparams[i] + 2) + // + 2 * sizeof(uint16_t); - if (new_rdata_ptr + svcparam_len - new_rdata > sizeof(new_rdata)) - return LDNS_WIREPARSE_ERR_BUFFER_TOO_SMALL; + // if (new_rdata_ptr + svcparam_len - new_rdata > sizeof(new_rdata)) + // return LDNS_WIREPARSE_ERR_BUFFER_TOO_SMALL; - memcpy(new_rdata_ptr, svcparams[i], svcparam_len); - new_rdata_ptr += svcparam_len; - } - memcpy(rdata, new_rdata, rdata_len); + // memcpy(new_rdata_ptr, svcparams[i], svcparam_len); + // new_rdata_ptr += svcparam_len; + // } + // memcpy(rdata, new_rdata, rdata_len); return LDNS_WIREPARSE_ERR_OK; } @@ -1345,24 +1351,29 @@ sldns_str2wire_svcbparam_mandatory(const char* val, uint8_t* rd, size_t* rd_len) */ qsort((void *)(rd + 4), count, sizeof(uint16_t), sldns_network_uint16_cmp); + /* The code below revolves around sematic errors in the SVCParam set. + * So long as we do not distinguish between running Unbound as a primary + * or as a secondary, we default to secondary behavior and we ignore the + * sematic errors. */ + /* In draft-ietf-dnsop-svcb-https-06 Section 8 * automatically mandatory MUST NOT appear in its own value-list */ - if (sldns_read_uint16(rd + 4) == SVCB_KEY_MANDATORY) - return LDNS_WIREPARSE_ERR_SVCB_MANDATORY_IN_MANDATORY; + // if (sldns_read_uint16(rd + 4) == SVCB_KEY_MANDATORY) + // return LDNS_WIREPARSE_ERR_SVCB_MANDATORY_IN_MANDATORY; /* Guarantee key uniqueness. After the sort we only need to * compare neighbouring keys */ - if (count > 1) { - for (i = 0; i < count - 1; i++) { - uint8_t* current_pos = (rd + 4 + (sizeof(uint16_t) * i)); - uint16_t key = sldns_read_uint16(current_pos); + // if (count > 1) { + // for (i = 0; i < count - 1; i++) { + // uint8_t* current_pos = (rd + 4 + (sizeof(uint16_t) * i)); + // uint16_t key = sldns_read_uint16(current_pos); - if (key == sldns_read_uint16(current_pos + 2)) { - return LDNS_WIREPARSE_ERR_SVCB_MANDATORY_DUPLICATE_KEY; - } - } - } + // if (key == sldns_read_uint16(current_pos + 2)) { + // return LDNS_WIREPARSE_ERR_SVCB_MANDATORY_DUPLICATE_KEY; + // } + // } + // } return LDNS_WIREPARSE_ERR_OK; } @@ -1548,7 +1559,6 @@ sldns_str2wire_svcparam_value(const char *key, size_t key_len, return LDNS_WIREPARSE_ERR_OK; } - // @TODO think about if this is supposed to be an error? return LDNS_WIREPARSE_ERR_GENERAL; } From d3b2bc501dae558d186e7cd6aebb9bc4a7d1f75d Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 23 Jun 2021 18:02:02 +0200 Subject: [PATCH 172/553] - Fix warnings reported by the gcc analyzer. --- dnstap/unbound-dnstap-socket.c | 9 +++++++-- doc/Changelog | 1 + libunbound/libworker.c | 30 ++++++++++++++++++++++++++---- libunbound/python/libunbound.i | 2 ++ testcode/delayer.c | 5 ++++- testcode/dohclient.c | 1 + testcode/fake_event.c | 6 ++++++ testcode/streamtcp.c | 8 ++++++-- 8 files changed, 53 insertions(+), 9 deletions(-) diff --git a/dnstap/unbound-dnstap-socket.c b/dnstap/unbound-dnstap-socket.c index 9eaf01243..17c29e971 100644 --- a/dnstap/unbound-dnstap-socket.c +++ b/dnstap/unbound-dnstap-socket.c @@ -1012,6 +1012,7 @@ void dtio_tap_callback(int fd, short ATTR_UNUSED(bits), void* arg) if(verbosity) log_info("bidirectional stream"); if(!reply_with_accept(data)) { tap_data_free(data); + return; } } else if(data->len >= 4 && sldns_read_uint32(data->frame) == FSTRM_CONTROL_FRAME_STOP && data->is_bidirectional) { @@ -1166,8 +1167,12 @@ int sig_quit = 0; /** signal handler for user quit */ static RETSIGTYPE main_sigh(int sig) { - if(!sig_quit) - fprintf(stderr, "exit on signal %d\n", sig); + if(!sig_quit) { + char str[] = "exit on signal \n"; + str[15] = '0' + (sig/10)%10; + str[16] = '0' + sig%10; + write(STDERR_FILENO, str, strlen(str)); + } if(sig_base) { ub_event_base_loopexit(sig_base); sig_base = NULL; diff --git a/doc/Changelog b/doc/Changelog index 9ac461e5a..84b85a4e9 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,6 @@ 23 June 2021: Wouter - Fix #503: DNS over HTTPS response truncated. + - Fix warnings reported by the gcc analyzer. 21 June 2021: George - Fix #495: Documentation or implementation of "verbosity" option. diff --git a/libunbound/libworker.c b/libunbound/libworker.c index 4733eb464..8a9ca9419 100644 --- a/libunbound/libworker.c +++ b/libunbound/libworker.c @@ -456,8 +456,15 @@ fill_res(struct ub_result* res, struct ub_packed_rrset_key* answer, if(rep->rrset_count != 0) res->ttl = (int)rep->ttl; res->data = (char**)calloc(1, sizeof(char*)); + if(!res->data) + return 0; /* out of memory */ res->len = (int*)calloc(1, sizeof(int)); - return (res->data && res->len); + if(!res->len) { + free(res->data); + res->data = NULL; + return 0; /* out of memory */ + } + return 1; } data = (struct packed_rrset_data*)answer->entry.data; if(query_dname_compare(rq->qname, answer->rk.dname) != 0) { @@ -465,15 +472,30 @@ fill_res(struct ub_result* res, struct ub_packed_rrset_key* answer, return 0; /* out of memory */ } else res->canonname = NULL; res->data = (char**)calloc(data->count+1, sizeof(char*)); - res->len = (int*)calloc(data->count+1, sizeof(int)); - if(!res->data || !res->len) + if(!res->data) return 0; /* out of memory */ + res->len = (int*)calloc(data->count+1, sizeof(int)); + if(!res->len) { + free(res->data); + res->data = NULL; + return 0; /* out of memory */ + } for(i=0; icount; i++) { /* remove rdlength from rdata */ res->len[i] = (int)(data->rr_len[i] - 2); res->data[i] = memdup(data->rr_data[i]+2, (size_t)res->len[i]); - if(!res->data[i]) + if(!res->data[i]) { + size_t j; + for(j=0; jdata[j]); + res->data[j] = NULL; + } + free(res->data); + res->data = NULL; + free(res->len); + res->len = NULL; return 0; /* out of memory */ + } } /* ttl for positive answers, from CNAME and answer RRs */ if(data->count != 0) { diff --git a/libunbound/python/libunbound.i b/libunbound/python/libunbound.i index ab244a6fb..763879e80 100644 --- a/libunbound/python/libunbound.i +++ b/libunbound/python/libunbound.i @@ -936,6 +936,8 @@ int _ub_resolve_async(struct ub_ctx* ctx, char* name, int rrtype, int rrclass, v int r; struct cb_data* id; id = (struct cb_data*) malloc(sizeof(struct cb_data)); + if(!id) + return -2; /* UB_NOMEM */ id->data = mydata; id->func = pyfunc; diff --git a/testcode/delayer.c b/testcode/delayer.c index 54175dbe3..0c8f2a45d 100644 --- a/testcode/delayer.c +++ b/testcode/delayer.c @@ -347,7 +347,10 @@ static volatile int do_quit = 0; /** signal handler for user quit */ static RETSIGTYPE delayer_sigh(int sig) { - printf("exit on signal %d\n", sig); + char str[] = "exit on signal \n"; + str[15] = '0' + (sig/10)%10; + str[16] = '0' + sig%10; + write(STDOUT_FILENO, str, strlen(str)); do_quit = 1; } diff --git a/testcode/dohclient.c b/testcode/dohclient.c index 0dc039f26..93d84a835 100644 --- a/testcode/dohclient.c +++ b/testcode/dohclient.c @@ -423,6 +423,7 @@ http2_session_create() if(nghttp2_session_callbacks_new(&callbacks) == NGHTTP2_ERR_NOMEM) { log_err("failed to initialize nghttp2 callback"); + free(h2_session); return NULL; } nghttp2_session_callbacks_set_recv_callback(callbacks, http2_recv_cb); diff --git a/testcode/fake_event.c b/testcode/fake_event.c index 125355f05..901880ce6 100644 --- a/testcode/fake_event.c +++ b/testcode/fake_event.c @@ -451,6 +451,8 @@ fake_front_query(struct replay_runtime* runtime, struct replay_moment *todo) struct comm_reply repinfo; memset(&repinfo, 0, sizeof(repinfo)); repinfo.c = (struct comm_point*)calloc(1, sizeof(struct comm_point)); + if(!repinfo.c) + fatal_exit("out of memory in fake_front_query"); repinfo.addrlen = (socklen_t)sizeof(struct sockaddr_in); if(todo->addrlen != 0) { repinfo.addrlen = todo->addrlen; @@ -909,6 +911,8 @@ comm_base_create(int ATTR_UNUSED(sigs)) /* we return the runtime structure instead. */ struct replay_runtime* runtime = (struct replay_runtime*) calloc(1, sizeof(struct replay_runtime)); + if(!runtime) + fatal_exit("out of memory in fake_event.c:comm_base_create"); runtime->scenario = saved_scenario; runtime->vars = macro_store_create(); if(!runtime->vars) fatal_exit("out of memory"); @@ -1534,6 +1538,8 @@ struct comm_timer* comm_timer_create(struct comm_base* base, { struct replay_runtime* runtime = (struct replay_runtime*)base; struct fake_timer* t = (struct fake_timer*)calloc(1, sizeof(*t)); + if(!t) + fatal_exit("out of memory in fake_event.c:comm_timer_create"); t->cb = cb; t->cb_arg = cb_arg; fptr_ok(fptr_whitelist_comm_timer(t->cb)); /* check in advance */ diff --git a/testcode/streamtcp.c b/testcode/streamtcp.c index ffdddbe9d..3fbb792e5 100644 --- a/testcode/streamtcp.c +++ b/testcode/streamtcp.c @@ -397,11 +397,15 @@ send_em(const char* svr, int udp, int usessl, int noanswer, int onarrival, /** SIGPIPE handler */ static RETSIGTYPE sigh(int sig) { + char str[] = "Got unhandled signal \n"; if(sig == SIGPIPE) { - printf("got SIGPIPE, remote connection gone\n"); + char* strpipe = "got SIGPIPE, remote connection gone\n"; + write(STDOUT_FILENO, strpipe, strlen(strpipe)); exit(1); } - printf("Got unhandled signal %d\n", sig); + str[21] = '0' + (sig/10)%10; + str[22] = '0' + sig%10; + write(STDOUT_FILENO, str, strlen(str)); exit(1); } #endif /* SIGPIPE */ From 999eddd27fc5ae21232ebbc46e8eaba56ee4465d Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 09:27:46 +0200 Subject: [PATCH 173/553] Add analyzer and port compile github workflow. --- .github/workflows/analysis_ports.yml | 44 ++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 .github/workflows/analysis_ports.yml diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml new file mode 100644 index 000000000..7a24e2b6f --- /dev/null +++ b/.github/workflows/analysis_ports.yml @@ -0,0 +1,44 @@ +name: Analysis and Ports + +on: + workflow_dispatch: + inputs: + start: + description: 'Start analysis and port workflow' + default: 'yes' + required: true + +jobs: + build: + strategy: + matrix: + include: + - runs-on: ubuntu-latest + name: GCC on Linux + env: + - CONFIG_OPTS: "--enable-debug --disable-flto" + - MAKE_TEST: "yes" + - runs-on: ubuntu-latest + name: Clang on Linux, clang-analysis + - CONFIG_OPTS: "CC=clang --enable-debug --disable-flto" + - MAKE_TEST: "yes" + - TEST_ANALYZER: "yes" + + steps: + - uses: actions/checkout@v2 + with: + submodules: false + - name: configure + run: ./configure $CONFIG_OPTS + - name: make + run: make + - name: make test + run: | + if [ "$MAKE_TEST" = "yes" ]; then + make test + fi + - name: analyzer + run: | + if [ "$TEST_ANALYZER" = "yes" ]; then + (cd testdata/clang-analysis.tdir; bash clang-analysis.test) + fi From 15bf9fe5815cfc35dd9d9507b5c19b56ab03b4b1 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 09:29:29 +0200 Subject: [PATCH 174/553] Fix syntax of analysis workflow. --- .github/workflows/analysis_ports.yml | 1 + doc/Changelog | 3 +++ 2 files changed, 4 insertions(+) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 7a24e2b6f..4a44809ed 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -20,6 +20,7 @@ jobs: - MAKE_TEST: "yes" - runs-on: ubuntu-latest name: Clang on Linux, clang-analysis + env: - CONFIG_OPTS: "CC=clang --enable-debug --disable-flto" - MAKE_TEST: "yes" - TEST_ANALYZER: "yes" diff --git a/doc/Changelog b/doc/Changelog index 84b85a4e9..bbb2c0ed4 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +24 June 2021: Wouter + - Add analyzer and port compile github workflow. + 23 June 2021: Wouter - Fix #503: DNS over HTTPS response truncated. - Fix warnings reported by the gcc analyzer. From 521ca6a783cd8264ebcb4747ac454f5e78db8bdc Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 09:42:32 +0200 Subject: [PATCH 175/553] workflow sets runs-on. --- .github/workflows/analysis_ports.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 4a44809ed..fd14a91a2 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -10,15 +10,16 @@ on: jobs: build: + runs-on: ${{ matrix.os }} strategy: matrix: include: - - runs-on: ubuntu-latest + - os: ubuntu-latest name: GCC on Linux env: - CONFIG_OPTS: "--enable-debug --disable-flto" - MAKE_TEST: "yes" - - runs-on: ubuntu-latest + - os: ubuntu-latest name: Clang on Linux, clang-analysis env: - CONFIG_OPTS: "CC=clang --enable-debug --disable-flto" From 8f27a67d017b6f70465e97fc02fdd6d488700fab Mon Sep 17 00:00:00 2001 From: tcarpay <8014108+TCY16@users.noreply.github.com> Date: Thu, 24 Jun 2021 09:45:08 +0200 Subject: [PATCH 176/553] Add code point comment to HTTPS Co-authored-by: Willem Toorop --- sldns/rrdef.c | 1 + 1 file changed, 1 insertion(+) diff --git a/sldns/rrdef.c b/sldns/rrdef.c index 803a0fa7d..fe5c8e104 100644 --- a/sldns/rrdef.c +++ b/sldns/rrdef.c @@ -382,6 +382,7 @@ static sldns_rr_descriptor rdata_field_descriptors[] = { {LDNS_RR_TYPE_ZONEMD, "ZONEMD", 4, 4, type_zonemd_wireformat, LDNS_RDF_TYPE_NONE, LDNS_RR_NO_COMPRESS, 0 }, /* 64 */ {LDNS_RR_TYPE_SVCB, "SVCB", 2, 2, type_svcb_wireformat, LDNS_RDF_TYPE_SVCPARAM, LDNS_RR_NO_COMPRESS, 0 }, + /* 65 */ {LDNS_RR_TYPE_HTTPS, "HTTPS", 2, 2, type_svcb_wireformat, LDNS_RDF_TYPE_SVCPARAM, LDNS_RR_NO_COMPRESS, 0 }, {(enum sldns_enum_rr_type)0, "TYPE66", 1, 1, type_0_wireformat, LDNS_RDF_TYPE_NONE, LDNS_RR_NO_COMPRESS, 0 }, {(enum sldns_enum_rr_type)0, "TYPE67", 1, 1, type_0_wireformat, LDNS_RDF_TYPE_NONE, LDNS_RR_NO_COMPRESS, 0 }, From b99b17f3d7f5b7d9015780690c9476f41962796f Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 09:49:20 +0200 Subject: [PATCH 177/553] Check env contents. --- .github/workflows/analysis_ports.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index fd14a91a2..0b880d6e3 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -30,6 +30,11 @@ jobs: - uses: actions/checkout@v2 with: submodules: false + - name: checks + run: | + echo $CONFIG_OPTS + echo $MAKE_TEST + echo $TEST_ANALYZER - name: configure run: ./configure $CONFIG_OPTS - name: make From db7a7c0239798f3a363cbfb87f1ca685ccf2f02c Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 09:58:43 +0200 Subject: [PATCH 178/553] workflow yml uses single quoted strings. --- .github/workflows/analysis_ports.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 0b880d6e3..1c4f46abc 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -17,14 +17,14 @@ jobs: - os: ubuntu-latest name: GCC on Linux env: - - CONFIG_OPTS: "--enable-debug --disable-flto" - - MAKE_TEST: "yes" + - CONFIG_OPTS: '--enable-debug --disable-flto' + - MAKE_TEST: 'yes' - os: ubuntu-latest name: Clang on Linux, clang-analysis env: - - CONFIG_OPTS: "CC=clang --enable-debug --disable-flto" - - MAKE_TEST: "yes" - - TEST_ANALYZER: "yes" + - CONFIG_OPTS: 'CC=clang --enable-debug --disable-flto' + - MAKE_TEST: 'yes' + - TEST_ANALYZER: 'yes' steps: - uses: actions/checkout@v2 From cebdf52c4ee419524ab781cca729c7c265e15255 Mon Sep 17 00:00:00 2001 From: Tom Carpay Date: Thu, 24 Jun 2021 10:00:12 +0200 Subject: [PATCH 179/553] fix erroneous test --- testdata/svcb.tdir/svcb.test | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testdata/svcb.tdir/svcb.test b/testdata/svcb.tdir/svcb.test index 47968be5f..ac6e90d3f 100644 --- a/testdata/svcb.tdir/svcb.test +++ b/testdata/svcb.tdir/svcb.test @@ -52,7 +52,7 @@ fi # check all the failure cases -if svcb.failure-cases-01 +if $PRE/readzone svcb.failure-cases-01 then echo "Failure case 1: Multiple instances of the same SvcParamKey" echo "Incorrectly succeeded" From 173efaf74340915aa3425ebf5ee72fd3de57b5ce Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 10:05:27 +0200 Subject: [PATCH 180/553] Analysis workflow, use matrix parameters. --- .github/workflows/analysis_ports.yml | 42 ++++++++++++---------------- 1 file changed, 18 insertions(+), 24 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 1c4f46abc..a30b5febb 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -14,17 +14,15 @@ jobs: strategy: matrix: include: - - os: ubuntu-latest - name: GCC on Linux - env: - - CONFIG_OPTS: '--enable-debug --disable-flto' - - MAKE_TEST: 'yes' - - os: ubuntu-latest - name: Clang on Linux, clang-analysis - env: - - CONFIG_OPTS: 'CC=clang --enable-debug --disable-flto' - - MAKE_TEST: 'yes' - - TEST_ANALYZER: 'yes' + - name: GCC on Linux + os: ubuntu-latest + config: --enable-debug --disable-flto + make_test: yes + - name: Clang on Linux, clang-analysis + os: ubuntu-latest + config: "CC=clang --enable-debug --disable-flto" + make_test: "yes" + clang_analysis: "yes" steps: - uses: actions/checkout@v2 @@ -32,20 +30,16 @@ jobs: submodules: false - name: checks run: | - echo $CONFIG_OPTS - echo $MAKE_TEST - echo $TEST_ANALYZER + echo ${{ matrix.config }} + echo ${{ matrix.make_test }} + echo ${{ matrix.clang_analysis }} - name: configure - run: ./configure $CONFIG_OPTS + run: ./configure ${{ matrix.config }} - name: make run: make - name: make test - run: | - if [ "$MAKE_TEST" = "yes" ]; then - make test - fi - - name: analyzer - run: | - if [ "$TEST_ANALYZER" = "yes" ]; then - (cd testdata/clang-analysis.tdir; bash clang-analysis.test) - fi + if: ${{ matrix.make_test == 'yes' }} + run: make test + - name: clang-analysis + if: ${{ matrix.clang_analysis == 'yes' }} + run: (cd testdata/clang-analysis.tdir; bash clang-analysis.test) From 4650207afda0b3ecc459c11f653d57a6cb45a6de Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 10:18:29 +0200 Subject: [PATCH 181/553] analysis workflow, add macos. --- .github/workflows/analysis_ports.yml | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index a30b5febb..757d2c258 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -14,15 +14,20 @@ jobs: strategy: matrix: include: - - name: GCC on Linux - os: ubuntu-latest - config: --enable-debug --disable-flto - make_test: yes - - name: Clang on Linux, clang-analysis - os: ubuntu-latest - config: "CC=clang --enable-debug --disable-flto" +# temporarily commented out to speed up build. +# - name: GCC on Linux +# os: ubuntu-latest +# config: "--enable-debug --disable-flto" +# make_test: "yes" +# - name: Clang on Linux, clang-analysis +# os: ubuntu-latest +# config: "CC=clang --enable-debug --disable-flto" +# make_test: "yes" +# clang_analysis: "yes" + - name: macos + os: macos-latest + config: "--enable-debug --disable-flto" make_test: "yes" - clang_analysis: "yes" steps: - uses: actions/checkout@v2 From 61f8b687ef73ceb43bdf8b0ace2e1df872965d48 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 10:25:17 +0200 Subject: [PATCH 182/553] analysis workflow, macos openssl install location. --- .github/workflows/analysis_ports.yml | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 757d2c258..a14c22d31 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -26,18 +26,13 @@ jobs: # clang_analysis: "yes" - name: macos os: macos-latest - config: "--enable-debug --disable-flto" + config: "--enable-debug --disable-flto --with-ssl=/usr/local/opt/openssl" make_test: "yes" steps: - uses: actions/checkout@v2 with: submodules: false - - name: checks - run: | - echo ${{ matrix.config }} - echo ${{ matrix.make_test }} - echo ${{ matrix.clang_analysis }} - name: configure run: ./configure ${{ matrix.config }} - name: make From 48a22bfb26b1e064ad2ed9a1fb21714ac4c3269e Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 10:32:31 +0200 Subject: [PATCH 183/553] analysis workflow, install expat. --- .github/workflows/analysis_ports.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index a14c22d31..3ca71219c 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -24,15 +24,19 @@ jobs: # config: "CC=clang --enable-debug --disable-flto" # make_test: "yes" # clang_analysis: "yes" - - name: macos + - name: GCC on OS X os: macos-latest - config: "--enable-debug --disable-flto --with-ssl=/usr/local/opt/openssl" + install_expat: "yes" + config: "--enable-debug --disable-flto --with-ssl=/usr/local/opt/openssl --with-libexpat=/usr/local/opt/expat" make_test: "yes" steps: - uses: actions/checkout@v2 with: submodules: false + - name: install expat + if: ${{ matrix.install_expat == 'yes' }} + run: brew install expat - name: configure run: ./configure ${{ matrix.config }} - name: make From bb0a1821251adaf88ea15a0defe2332d1b89ca6f Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 10:44:38 +0200 Subject: [PATCH 184/553] analysis workflow, add libevent test, clang macos test. --- .github/workflows/analysis_ports.yml | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 3ca71219c..65c872aa7 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -24,11 +24,22 @@ jobs: # config: "CC=clang --enable-debug --disable-flto" # make_test: "yes" # clang_analysis: "yes" - - name: GCC on OS X + - name: Clang on Linux, libevent, clang-analysis + os: ubuntu-latest + config: "CC=clang --enable-debug --disable-flto --with-libevent" + make_test: "yes" + clang_analysis: "yes" +# - name: GCC on OS X +# os: macos-latest +# install_expat: "yes" +# config: "--enable-debug --disable-flto --with-ssl=/usr/local/opt/openssl --with-libexpat=/usr/local/opt/expat" +# make_test: "yes" + - name: Clang on OS X os: macos-latest install_expat: "yes" - config: "--enable-debug --disable-flto --with-ssl=/usr/local/opt/openssl --with-libexpat=/usr/local/opt/expat" + config: "CC=clang --enable-debug --disable-flto --with-ssl=/usr/local/opt/openssl --with-libexpat=/usr/local/opt/expat" make_test: "yes" + clang_analysis: "yes" steps: - uses: actions/checkout@v2 From 8ce44a4006802e172c9d8cf2d470f05fa794ab5e Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 10:51:06 +0200 Subject: [PATCH 185/553] analysis workflow, install libevent for test. --- .github/workflows/analysis_ports.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 65c872aa7..21582d8c6 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -26,6 +26,7 @@ jobs: # clang_analysis: "yes" - name: Clang on Linux, libevent, clang-analysis os: ubuntu-latest + install_libevent: "yes" config: "CC=clang --enable-debug --disable-flto --with-libevent" make_test: "yes" clang_analysis: "yes" @@ -45,6 +46,9 @@ jobs: - uses: actions/checkout@v2 with: submodules: false + - name: install libevent + if: ${{ matrix.install_libevent == 'yes' }} + run: apt-get install libevent-dev - name: install expat if: ${{ matrix.install_expat == 'yes' }} run: brew install expat From a807135373b74724e8334971ee3148f93438b365 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 10:53:25 +0200 Subject: [PATCH 186/553] analysis workflow, fix. --- .github/workflows/analysis_ports.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 21582d8c6..22f441756 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -48,7 +48,7 @@ jobs: submodules: false - name: install libevent if: ${{ matrix.install_libevent == 'yes' }} - run: apt-get install libevent-dev + run: sudo apt-get install libevent-dev - name: install expat if: ${{ matrix.install_expat == 'yes' }} run: brew install expat From a40bc40d0c80206a22100f2c6d14fc89f63d0ab0 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 11:11:16 +0200 Subject: [PATCH 187/553] analysis workflow, add undefined behaviour sanitizer test. --- .github/workflows/analysis_ports.yml | 30 ++++++++++++++++------------ 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 22f441756..414bae656 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -19,28 +19,32 @@ jobs: # os: ubuntu-latest # config: "--enable-debug --disable-flto" # make_test: "yes" -# - name: Clang on Linux, clang-analysis +# - name: Clang-analyzer # os: ubuntu-latest # config: "CC=clang --enable-debug --disable-flto" # make_test: "yes" # clang_analysis: "yes" - - name: Clang on Linux, libevent, clang-analysis - os: ubuntu-latest - install_libevent: "yes" - config: "CC=clang --enable-debug --disable-flto --with-libevent" - make_test: "yes" - clang_analysis: "yes" -# - name: GCC on OS X +# - name: libevent +# os: ubuntu-latest +# install_libevent: "yes" +# config: "CC=clang --enable-debug --disable-flto --with-libevent" +# make_test: "yes" +# clang_analysis: "yes" +# - name: OS X # os: macos-latest # install_expat: "yes" # config: "--enable-debug --disable-flto --with-ssl=/usr/local/opt/openssl --with-libexpat=/usr/local/opt/expat" # make_test: "yes" - - name: Clang on OS X - os: macos-latest - install_expat: "yes" - config: "CC=clang --enable-debug --disable-flto --with-ssl=/usr/local/opt/openssl --with-libexpat=/usr/local/opt/expat" +# - name: Clang on OS X +# os: macos-latest +# install_expat: "yes" +# config: "CC=clang --enable-debug --disable-flto --with-ssl=/usr/local/opt/openssl --with-libexpat=/usr/local/opt/expat" +# make_test: "yes" +# clang_analysis: "yes" + - name: ubsan (gcc undefined behaviour sanitizer) + os: ubuntu-latest + config: 'CFLAGS="-DNDEBUG -g2 -O3 -fsanitize=undefined -fno-sanitize-recover=all" --disable-flto' make_test: "yes" - clang_analysis: "yes" steps: - uses: actions/checkout@v2 From 8990fcbd6a9464ead636f2efecca92c353eaf794 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 11:17:57 +0200 Subject: [PATCH 188/553] analysis workflow, Add address sanitizer test, disable static for build speedup. --- .github/workflows/analysis_ports.yml | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 414bae656..51e04815c 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -21,13 +21,13 @@ jobs: # make_test: "yes" # - name: Clang-analyzer # os: ubuntu-latest -# config: "CC=clang --enable-debug --disable-flto" +# config: "CC=clang --enable-debug --disable-flto --disable-static" # make_test: "yes" # clang_analysis: "yes" # - name: libevent # os: ubuntu-latest # install_libevent: "yes" -# config: "CC=clang --enable-debug --disable-flto --with-libevent" +# config: "CC=clang --enable-debug --disable-flto --with-libevent --disable-static" # make_test: "yes" # clang_analysis: "yes" # - name: OS X @@ -38,12 +38,16 @@ jobs: # - name: Clang on OS X # os: macos-latest # install_expat: "yes" -# config: "CC=clang --enable-debug --disable-flto --with-ssl=/usr/local/opt/openssl --with-libexpat=/usr/local/opt/expat" +# config: "CC=clang --enable-debug --disable-flto --with-ssl=/usr/local/opt/openssl --with-libexpat=/usr/local/opt/expat --disable-static" # make_test: "yes" # clang_analysis: "yes" - - name: ubsan (gcc undefined behaviour sanitizer) +# - name: ubsan (gcc undefined behaviour sanitizer) +# os: ubuntu-latest +# config: 'CFLAGS="-DNDEBUG -g2 -O3 -fsanitize=undefined -fno-sanitize-recover=all" --disable-flto --disable-static' +# make_test: "yes" + - name: asan (gcc address sanitizer) os: ubuntu-latest - config: 'CFLAGS="-DNDEBUG -g2 -O3 -fsanitize=undefined -fno-sanitize-recover=all" --disable-flto' + config: 'CFLAGS="-DNDEBUG -g2 -O3 -fsanitize=address" --disable-flto --disable-static' make_test: "yes" steps: From 98800771908dfcb8f85682fa7602803ec91b304d Mon Sep 17 00:00:00 2001 From: tcarpay <8014108+TCY16@users.noreply.github.com> Date: Thu, 24 Jun 2021 11:20:41 +0200 Subject: [PATCH 189/553] Apply suggestions from code review Co-authored-by: Willem Toorop --- sldns/str2wire.c | 77 ++++++++++++++++++++++++++---------------------- 1 file changed, 41 insertions(+), 36 deletions(-) diff --git a/sldns/str2wire.c b/sldns/str2wire.c index e7eab4354..db572e4e1 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -628,7 +628,7 @@ static int sldns_str2wire_check_svcbparams(uint8_t* rdata, uint16_t rdata_len) size_t nparams = 0, i, j; uint8_t new_rdata[LDNS_MAX_RDFLEN]; uint8_t* new_rdata_ptr = new_rdata; - uint8_t* svcparams[64]; + uint8_t* svcparams[MAX_NUMBER_OF_SVCPARAMS]; uint8_t* mandatory = NULL; uint8_t* rdata_ptr = rdata; uint16_t rdata_remaining = rdata_len; @@ -670,60 +670,61 @@ static int sldns_str2wire_check_svcbparams(uint8_t* rdata, uint16_t rdata_len) * or as a secondary, we default to secondary behavior and we ignore the * sematic errors. */ +#ifdef SVCB_SEMANTIC_ERRORS /* In draft-ietf-dnsop-svcb-https-06 Section 7: * * Keys (...) MUST NOT appear more than once. * * If they key has already been seen, we have a duplicate */ - // for (i = 0; i < nparams; i++) { - // uint16_t key = sldns_read_uint16(svcparams[i]); + for (i = 0; i < nparams; i++) { + uint16_t key = sldns_read_uint16(svcparams[i]); - // if (i + 1 < nparams && key == sldns_read_uint16(svcparams[i+1])) - // return LDNS_WIREPARSE_ERR_SVCB_DUPLICATE_KEYS; + if (i + 1 < nparams && key == sldns_read_uint16(svcparams[i+1])) + return LDNS_WIREPARSE_ERR_SVCB_DUPLICATE_KEYS; - // if (key == SVCB_KEY_MANDATORY) - // mandatory = svcparams[i]; - // } + if (key == SVCB_KEY_MANDATORY) + mandatory = svcparams[i]; + } /* 4. verify that all the SvcParamKeys in mandatory are present */ - // if (mandatory) { + if (mandatory) { - // /* Divide by sizeof(uint16_t)*/ - // uint16_t mandatory_nkeys = sldns_read_uint16(mandatory + 2) / sizeof(uint16_t); + /* Divide by sizeof(uint16_t)*/ + uint16_t mandatory_nkeys = sldns_read_uint16(mandatory + 2) / sizeof(uint16_t); - // /* Guaranteed by sldns_str2wire_svcparam_key_value */ - // assert(mandatory_nkeys > 0); + /* Guaranteed by sldns_str2wire_svcparam_key_value */ + assert(mandatory_nkeys > 0); - // for (i = 0; i < mandatory_nkeys; i++) { - // uint16_t mandatory_key = sldns_read_uint16(mandatory - // + 2 * sizeof(uint16_t) - // + i * sizeof(uint16_t)); - // uint8_t found = 0; + for (i = 0; i < mandatory_nkeys; i++) { + uint16_t mandatory_key = sldns_read_uint16(mandatory + + 2 * sizeof(uint16_t) + + i * sizeof(uint16_t)); + uint8_t found = 0; - // for (j = 0; j < nparams; j++) { - // if (mandatory_key == sldns_read_uint16(svcparams[j])) - // found = 1; - // } + for (j = 0; j < nparams; j++) { + if (mandatory_key == sldns_read_uint16(svcparams[j])) + found = 1; + } - // if (!found) - // return LDNS_WIREPARSE_ERR_SVCB_MANDATORY_MISSING_PARAM; - // } - - // } + if (!found) + return LDNS_WIREPARSE_ERR_SVCB_MANDATORY_MISSING_PARAM; + } + } +#endif /* Write rdata in correct order */ - // for (i = 0; i < nparams; i++) { - // uint16_t svcparam_len = sldns_read_uint16(svcparams[i] + 2) - // + 2 * sizeof(uint16_t); + for (i = 0; i < nparams; i++) { + uint16_t svcparam_len = sldns_read_uint16(svcparams[i] + 2) + + 2 * sizeof(uint16_t); - // if (new_rdata_ptr + svcparam_len - new_rdata > sizeof(new_rdata)) - // return LDNS_WIREPARSE_ERR_BUFFER_TOO_SMALL; + if (new_rdata_ptr + svcparam_len - new_rdata > sizeof(new_rdata)) + return LDNS_WIREPARSE_ERR_BUFFER_TOO_SMALL; - // memcpy(new_rdata_ptr, svcparams[i], svcparam_len); - // new_rdata_ptr += svcparam_len; - // } - // memcpy(rdata, new_rdata, rdata_len); + memcpy(new_rdata_ptr, svcparams[i], svcparam_len); + new_rdata_ptr += svcparam_len; + } + memcpy(rdata, new_rdata, rdata_len); return LDNS_WIREPARSE_ERR_OK; } @@ -1514,12 +1515,14 @@ sldns_str2wire_svcparam_value(const char *key, size_t key_len, /* key without value */ if (val == NULL) { switch (svcparamkey) { +#ifdef SVCB_SEMANTIC_ERRORS case SVCB_KEY_MANDATORY: case SVCB_KEY_ALPN: case SVCB_KEY_PORT: case SVCB_KEY_IPV4HINT: case SVCB_KEY_IPV6HINT: return LDNS_WIREPARSE_ERR_SVCB_MISSING_PARAM; +#endif default: if (*rd_len < 4) return LDNS_WIREPARSE_ERR_BUFFER_TOO_SMALL; @@ -1541,8 +1544,10 @@ sldns_str2wire_svcparam_value(const char *key, size_t key_len, return sldns_str2wire_svcbparam_ipv6hint(val, rd, rd_len); case SVCB_KEY_MANDATORY: return sldns_str2wire_svcbparam_mandatory(val, rd, rd_len); +#ifdef SVCB_SEMANTIC_ERRORS case SVCB_KEY_NO_DEFAULT_ALPN: return LDNS_WIREPARSE_ERR_SVCB_NO_DEFAULT_ALPN_VALUE; +#endif case SVCB_KEY_ECH: return sldns_str2wire_svcbparam_ech_value(val, rd, rd_len); case SVCB_KEY_ALPN: From 6e025e303f5249edf8fe42aa19639b0aa5da26cf Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 11:43:02 +0200 Subject: [PATCH 190/553] analysis workflow, add iphone on armv7 test. --- .github/workflows/analysis_ports.yml | 39 +++++++++++++++++++++++++--- 1 file changed, 35 insertions(+), 4 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 51e04815c..e800f3e46 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -45,15 +45,42 @@ jobs: # os: ubuntu-latest # config: 'CFLAGS="-DNDEBUG -g2 -O3 -fsanitize=undefined -fno-sanitize-recover=all" --disable-flto --disable-static' # make_test: "yes" - - name: asan (gcc address sanitizer) - os: ubuntu-latest - config: 'CFLAGS="-DNDEBUG -g2 -O3 -fsanitize=address" --disable-flto --disable-static' - make_test: "yes" +# - name: asan (gcc address sanitizer) +# os: ubuntu-latest +# config: 'CFLAGS="-DNDEBUG -g2 -O3 -fsanitize=address" --disable-flto --disable-static' +# make_test: "yes" + - name: Apple iPhone on iOS, armv7 + os: macos-latest + AUTOTOOLS_HOST: armv7-apple-ios + OPENSSL_HOST: ios-cross + IOS_SDK: iPhoneOS + IOS_CPU: armv7s + test_ios: "yes" + config: 'no' + make_install: "yes" steps: - uses: actions/checkout@v2 with: submodules: false + - name: install ios tools + if: ${{ matrix.test_ios == 'yes' }} + env: + AUTOTOOLS_HOST: ${{ matrix.AUTOTOOLS_HOST }} + OPENSSL_HOST: ${{ matrix.OPENSSL_HOST }} + IOS_SDK: ${{ matrix.IOS_SDK }} + IOS_CPU: ${{ matrix.IOS_CPU }} + run: | + #(already installed) ./contrib/ios/install_tools.sh + export AUTOTOOLS_BUILD="$(./config.guess)" + export IOS_PREFIX="$HOME/$IOS_SDK-$IOS_CPU" + export PKG_CONFIG_PATH="$IOS_PREFIX/lib/pkgconfig" + source ./contrib/ios/setenv_ios.sh + ./contrib/ios/install_openssl.sh + ./contrib/ios/install_expat.sh + export CONFIG_OPTS="--build=$AUTOTOOLS_BUILD --host=$AUTOTOOLS_HOST --prefix=$IOS_PREFIX --with-ssl=$IOS_PREFIX --disable-gost --with-libexpat=$IOS_PREFIX" + echo CONFIG_OPTS ${CONFIG_OPTS} + ./configure ${CONFIG_OPTS} - name: install libevent if: ${{ matrix.install_libevent == 'yes' }} run: sudo apt-get install libevent-dev @@ -61,12 +88,16 @@ jobs: if: ${{ matrix.install_expat == 'yes' }} run: brew install expat - name: configure + if: ${{ matrix.config != 'no' }} run: ./configure ${{ matrix.config }} - name: make run: make - name: make test if: ${{ matrix.make_test == 'yes' }} run: make test + - name: make install + if: ${{ matrix.make_install == 'yes' }} + run: make install - name: clang-analysis if: ${{ matrix.clang_analysis == 'yes' }} run: (cd testdata/clang-analysis.tdir; bash clang-analysis.test) From 06af83c2cfc9bc0e3c9073356b25af3695dc5ebb Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 11:53:44 +0200 Subject: [PATCH 191/553] analysis workflow, fixup ios test. --- .github/workflows/analysis_ports.yml | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index e800f3e46..4ee010c0d 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -56,14 +56,14 @@ jobs: IOS_SDK: iPhoneOS IOS_CPU: armv7s test_ios: "yes" - config: 'no' - make_install: "yes" + config: "no" + make: "no" steps: - uses: actions/checkout@v2 with: submodules: false - - name: install ios tools + - name: test ios if: ${{ matrix.test_ios == 'yes' }} env: AUTOTOOLS_HOST: ${{ matrix.AUTOTOOLS_HOST }} @@ -73,14 +73,20 @@ jobs: run: | #(already installed) ./contrib/ios/install_tools.sh export AUTOTOOLS_BUILD="$(./config.guess)" + echo AUTOTOOLS_BUILD=${AUTOTOOLS_BUILD} export IOS_PREFIX="$HOME/$IOS_SDK-$IOS_CPU" + echo IOS_PREFIX=${IOS_PREFIX} export PKG_CONFIG_PATH="$IOS_PREFIX/lib/pkgconfig" + echo PKG_CONFIG_PATH=${PKG_CONFIG_PATH} + export CONFIG_OPTS="--build=$AUTOTOOLS_BUILD --host=$AUTOTOOLS_HOST --prefix=$IOS_PREFIX --with-ssl=$IOS_PREFIX --disable-gost --with-libexpat=$IOS_PREFIX" + echo CONFIG_OPTS=${CONFIG_OPTS} source ./contrib/ios/setenv_ios.sh ./contrib/ios/install_openssl.sh ./contrib/ios/install_expat.sh - export CONFIG_OPTS="--build=$AUTOTOOLS_BUILD --host=$AUTOTOOLS_HOST --prefix=$IOS_PREFIX --with-ssl=$IOS_PREFIX --disable-gost --with-libexpat=$IOS_PREFIX" - echo CONFIG_OPTS ${CONFIG_OPTS} ./configure ${CONFIG_OPTS} + # make is here to preserve environment variables + make + make install - name: install libevent if: ${{ matrix.install_libevent == 'yes' }} run: sudo apt-get install libevent-dev @@ -91,13 +97,11 @@ jobs: if: ${{ matrix.config != 'no' }} run: ./configure ${{ matrix.config }} - name: make + if: ${{ matrix.make != 'no' }} run: make - name: make test if: ${{ matrix.make_test == 'yes' }} run: make test - - name: make install - if: ${{ matrix.make_install == 'yes' }} - run: make install - name: clang-analysis if: ${{ matrix.clang_analysis == 'yes' }} run: (cd testdata/clang-analysis.tdir; bash clang-analysis.test) From bb208d48fbae87306263c270f5d523282a15ed46 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 12:07:22 +0200 Subject: [PATCH 192/553] analysis workflow, use log line groups. --- .github/workflows/analysis_ports.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 4ee010c0d..9ce48186e 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -80,13 +80,29 @@ jobs: echo PKG_CONFIG_PATH=${PKG_CONFIG_PATH} export CONFIG_OPTS="--build=$AUTOTOOLS_BUILD --host=$AUTOTOOLS_HOST --prefix=$IOS_PREFIX --with-ssl=$IOS_PREFIX --disable-gost --with-libexpat=$IOS_PREFIX" echo CONFIG_OPTS=${CONFIG_OPTS} + echo "::group::setenv_ios.sh" + echo "./contrib/ios/setenv_ios.sh" source ./contrib/ios/setenv_ios.sh + echo "::endgroup::" + echo "::group::install_openssl" + echo "./contrib/ios/install_openssl.sh" ./contrib/ios/install_openssl.sh + echo "::endgroup::" + echo "::group::install_expat" + echo "./contrib/ios/install_expat.sh" ./contrib/ios/install_expat.sh + echo "::endgroup::" + echo "::group::configure" + echo "./configure ${CONFIG_OPTS}" ./configure ${CONFIG_OPTS} + echo "::endgroup::" + echo "::group::make" # make is here to preserve environment variables make + echo "::endgroup::" + echo "::group::make install" make install + echo "::endgroup::" - name: install libevent if: ${{ matrix.install_libevent == 'yes' }} run: sudo apt-get install libevent-dev From c744db29356a90510a9bc4a3c3b3a50fb5ad4e7c Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 13:28:52 +0200 Subject: [PATCH 193/553] analysis workflow, add arm64 iOS test. --- .github/workflows/analysis_ports.yml | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 9ce48186e..5d4f36d47 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -49,12 +49,21 @@ jobs: # os: ubuntu-latest # config: 'CFLAGS="-DNDEBUG -g2 -O3 -fsanitize=address" --disable-flto --disable-static' # make_test: "yes" - - name: Apple iPhone on iOS, armv7 +# - name: Apple iPhone on iOS, armv7 +# os: macos-latest +# AUTOTOOLS_HOST: armv7-apple-ios +# OPENSSL_HOST: ios-cross +# IOS_SDK: iPhoneOS +# IOS_CPU: armv7s +# test_ios: "yes" +# config: "no" +# make: "no" + - name: Apple iPhone on iOS, arm64 os: macos-latest - AUTOTOOLS_HOST: armv7-apple-ios - OPENSSL_HOST: ios-cross + AUTOTOOLS_HOST: aarch64-apple-ios + OPENSSL_HOST: ios64-cross IOS_SDK: iPhoneOS - IOS_CPU: armv7s + IOS_CPU: arm64 test_ios: "yes" config: "no" make: "no" From 46032bb67051f99e13373d379984629b94c1b5ef Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 13:38:45 +0200 Subject: [PATCH 194/553] analysis workflow, add iPhoneOS, AppleTVOS and WatchOS tests. --- .github/workflows/analysis_ports.yml | 58 +++++++++++++++++++++++++++- 1 file changed, 56 insertions(+), 2 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 5d4f36d47..613b10212 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -58,15 +58,69 @@ jobs: # test_ios: "yes" # config: "no" # make: "no" - - name: Apple iPhone on iOS, arm64 +# - name: Apple iPhone on iOS, arm64 +# os: macos-latest +# AUTOTOOLS_HOST: aarch64-apple-ios +# OPENSSL_HOST: ios64-cross +# IOS_SDK: iPhoneOS +# IOS_CPU: arm64 +# test_ios: "yes" +# config: "no" +# make: "no" + - name: Apple TV on iOS, arm64 os: macos-latest AUTOTOOLS_HOST: aarch64-apple-ios OPENSSL_HOST: ios64-cross - IOS_SDK: iPhoneOS + IOS_SDK: AppleTVOS IOS_CPU: arm64 test_ios: "yes" config: "no" make: "no" + - name: Apple Watch on iOS, armv7 + os: macos-latest + AUTOTOOLS_HOST: armv7-apple-ios + OPENSSL_HOST: ios-cross + IOS_SDK: WatchOS + IOS_CPU: armv7k + test_ios: "yes" + config: "no" + make: "no" + - name: iPhoneSimulator on OS X, i386 + os: macos-latest + AUTOTOOLS_HOST: i386-apple-ios + OPENSSL_HOST: iphoneos-cross + IOS_SDK: i386 + IOS_CPU: iPhoneSimulator + test_ios: "yes" + config: "no" + make: "no" + - name: iPhoneSimulator on OS X, x86_64 + os: macos-latest + AUTOTOOLS_HOST: x86_64-apple-ios + OPENSSL_HOST: iphoneos-cross + IOS_SDK: x86_64 + IOS_CPU: iPhoneSimulator + test_ios: "yes" + config: "no" + make: "no" + - name: AppleTVSimulator on OS X, x86_64 + os: macos-latest + AUTOTOOLS_HOST: x86_64-apple-ios + OPENSSL_HOST: iphoneos-cross + IOS_SDK: x86_64 + IOS_CPU: AppleTVSimulator + test_ios: "yes" + config: "no" + make: "no" + - name: WatchSimulator on OS X, i386 + os: macos-latest + AUTOTOOLS_HOST: i386-apple-ios + OPENSSL_HOST: iphoneos-cross + IOS_SDK: i386 + IOS_CPU: WatchSimulator + test_ios: "yes" + config: "no" + make: "no" steps: - uses: actions/checkout@v2 From 5198523a92e7b1f27be25a9baae60529710b3fd1 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 13:47:33 +0200 Subject: [PATCH 195/553] analysis workflow, fixup SDK and CPU definitions. --- .github/workflows/analysis_ports.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 613b10212..ac1d430e9 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -89,8 +89,8 @@ jobs: os: macos-latest AUTOTOOLS_HOST: i386-apple-ios OPENSSL_HOST: iphoneos-cross - IOS_SDK: i386 - IOS_CPU: iPhoneSimulator + IOS_SDK: iPhoneSimulator + IOS_CPU: i386 test_ios: "yes" config: "no" make: "no" @@ -98,8 +98,8 @@ jobs: os: macos-latest AUTOTOOLS_HOST: x86_64-apple-ios OPENSSL_HOST: iphoneos-cross - IOS_SDK: x86_64 - IOS_CPU: iPhoneSimulator + IOS_SDK: iPhoneSimulator + IOS_CPU: x86_64 test_ios: "yes" config: "no" make: "no" @@ -107,8 +107,8 @@ jobs: os: macos-latest AUTOTOOLS_HOST: x86_64-apple-ios OPENSSL_HOST: iphoneos-cross - IOS_SDK: x86_64 - IOS_CPU: AppleTVSimulator + IOS_SDK: AppleTVSimulator + IOS_CPU: x86_64 test_ios: "yes" config: "no" make: "no" @@ -116,8 +116,8 @@ jobs: os: macos-latest AUTOTOOLS_HOST: i386-apple-ios OPENSSL_HOST: iphoneos-cross - IOS_SDK: i386 - IOS_CPU: WatchSimulator + IOS_SDK: WatchSimulator + IOS_CPU: i386 test_ios: "yes" config: "no" make: "no" From 709ca6ff7e1afbcec15069541c4139290a9da181 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 14:15:56 +0200 Subject: [PATCH 196/553] Analysis workflow, add android armv7a test. --- .github/workflows/analysis_ports.yml | 161 ++++++++++++++++++--------- 1 file changed, 109 insertions(+), 52 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index ac1d430e9..432ae3470 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -67,58 +67,67 @@ jobs: # test_ios: "yes" # config: "no" # make: "no" - - name: Apple TV on iOS, arm64 - os: macos-latest - AUTOTOOLS_HOST: aarch64-apple-ios - OPENSSL_HOST: ios64-cross - IOS_SDK: AppleTVOS - IOS_CPU: arm64 - test_ios: "yes" - config: "no" - make: "no" - - name: Apple Watch on iOS, armv7 - os: macos-latest - AUTOTOOLS_HOST: armv7-apple-ios - OPENSSL_HOST: ios-cross - IOS_SDK: WatchOS - IOS_CPU: armv7k - test_ios: "yes" - config: "no" - make: "no" - - name: iPhoneSimulator on OS X, i386 - os: macos-latest - AUTOTOOLS_HOST: i386-apple-ios - OPENSSL_HOST: iphoneos-cross - IOS_SDK: iPhoneSimulator - IOS_CPU: i386 - test_ios: "yes" - config: "no" - make: "no" - - name: iPhoneSimulator on OS X, x86_64 - os: macos-latest - AUTOTOOLS_HOST: x86_64-apple-ios - OPENSSL_HOST: iphoneos-cross - IOS_SDK: iPhoneSimulator - IOS_CPU: x86_64 - test_ios: "yes" - config: "no" - make: "no" - - name: AppleTVSimulator on OS X, x86_64 - os: macos-latest - AUTOTOOLS_HOST: x86_64-apple-ios - OPENSSL_HOST: iphoneos-cross - IOS_SDK: AppleTVSimulator - IOS_CPU: x86_64 - test_ios: "yes" - config: "no" - make: "no" - - name: WatchSimulator on OS X, i386 - os: macos-latest - AUTOTOOLS_HOST: i386-apple-ios - OPENSSL_HOST: iphoneos-cross - IOS_SDK: WatchSimulator - IOS_CPU: i386 - test_ios: "yes" +# - name: Apple TV on iOS, arm64 +# os: macos-latest +# AUTOTOOLS_HOST: aarch64-apple-ios +# OPENSSL_HOST: ios64-cross +# IOS_SDK: AppleTVOS +# IOS_CPU: arm64 +# test_ios: "yes" +# config: "no" +# make: "no" +# - name: Apple Watch on iOS, armv7 +# os: macos-latest +# AUTOTOOLS_HOST: armv7-apple-ios +# OPENSSL_HOST: ios-cross +# IOS_SDK: WatchOS +# IOS_CPU: armv7k +# test_ios: "yes" +# config: "no" +# make: "no" +# - name: iPhoneSimulator on OS X, i386 +# os: macos-latest +# AUTOTOOLS_HOST: i386-apple-ios +# OPENSSL_HOST: iphoneos-cross +# IOS_SDK: iPhoneSimulator +# IOS_CPU: i386 +# test_ios: "yes" +# config: "no" +# make: "no" +# - name: iPhoneSimulator on OS X, x86_64 +# os: macos-latest +# AUTOTOOLS_HOST: x86_64-apple-ios +# OPENSSL_HOST: iphoneos-cross +# IOS_SDK: iPhoneSimulator +# IOS_CPU: x86_64 +# test_ios: "yes" +# config: "no" +# make: "no" +# - name: AppleTVSimulator on OS X, x86_64 +# os: macos-latest +# AUTOTOOLS_HOST: x86_64-apple-ios +# OPENSSL_HOST: iphoneos-cross +# IOS_SDK: AppleTVSimulator +# IOS_CPU: x86_64 +# test_ios: "yes" +# config: "no" +# make: "no" +# - name: WatchSimulator on OS X, i386 +# os: macos-latest +# AUTOTOOLS_HOST: i386-apple-ios +# OPENSSL_HOST: iphoneos-cross +# IOS_SDK: WatchSimulator +# IOS_CPU: i386 +# test_ios: "yes" +# config: "no" +# make: "no" + - name: Android armv7a + os: ubuntu-latest + AUTOTOOLS_HOST: armv7a-linux-androidabi + OPENSSL_HOST: android-arm + ANDROID_CPU: armv7a + ANDROID_API: 23 + test_android: "yes" config: "no" make: "no" @@ -126,6 +135,54 @@ jobs: - uses: actions/checkout@v2 with: submodules: false + - name: test_android + if: ${{ matrix.test_android == 'yes' }} + env: + AUTOTOOLS_HOST: ${{ matrix.AUTOTOOLS_HOST }} + OPENSSL_HOST: ${{ matrix.OPENSSL_HOST }} + ANDROID_API: ${{ matrix.ANDROID_API }} + ANDROID_CPU: ${{ matrix.ANDROID_CPU }} + run: | + #(already installed) ./contrib/android/install_tools.sh + export ANDROID_PREFIX="$HOME/android$ANDROID_API-$ANDROID_CPU" + echo ANDROID_PREFIX=${ANDROID_PREFIX} + export ANDROID_SDK_ROOT="$HOME/android-sdk" + echo ANDROID_SDK_ROOT=${ANDROID_SDK_ROOT} + export ANDROID_NDK_ROOT="$HOME/android-ndk" + echo ANDROID_NDK_ROOT=${ANDROID_NDK_ROOT} + export AUTOTOOLS_BUILD="$(./config.guess)" + echo AUTOTOOLS_BUILD=${AUTOTOOLS_BUILD} + export PKG_CONFIG_PATH="$ANDROID_PREFIX/lib/pkgconfig" + echo PKG_CONFIG_PATH=${PKG_CONFIG_PATH} + export CONFIG_OPTS="--build=$AUTOTOOLS_BUILD --host=$AUTOTOOLS_HOST --prefix=$ANDROID_PREFIX --with-ssl=$ANDROID_PREFIX --disable-gost --with-libexpat=$ANDROID_PREFIX" + echo CONFIG_OPTS=${CONFIG_OPTS} + echo "::group::install_ndk" + echo "./contrib/android/install_ndk.sh" + ./contrib/android/install_ndk.sh + echo "::endgroup::" + echo "::group::setenv_android.sh" + echo "./contrib/android/setenv_android.sh" + source ./contrib/android/setenv_android.sh + echo "::endgroup::" + echo "::group::install_openssl" + echo "./contrib/android/install_openssl.sh" + ./contrib/android/install_openssl.sh + echo "::endgroup::" + echo "::group::install_expat" + echo "./contrib/android/install_expat.sh" + ./contrib/android/install_expat.sh + echo "::endgroup::" + echo "::group::configure" + echo "./configure ${CONFIG_OPTS}" + ./configure ${CONFIG_OPTS} + echo "::endgroup::" + echo "::group::make" + # make is here to preserve environment variables + make + echo "::endgroup::" + echo "::group::make install" + make install + echo "::endgroup::" - name: test ios if: ${{ matrix.test_ios == 'yes' }} env: From aba8623c44cdf899b49dfa09ab2d2f9cd8b48244 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 14:24:39 +0200 Subject: [PATCH 197/553] Analysis workflow, add Android x86, arm64 and x86_64 tests. --- .github/workflows/analysis_ports.yml | 35 ++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 432ae3470..ba28f3cdf 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -121,11 +121,38 @@ jobs: # test_ios: "yes" # config: "no" # make: "no" - - name: Android armv7a +# - name: Android armv7a +# os: ubuntu-latest +# AUTOTOOLS_HOST: armv7a-linux-androidabi +# OPENSSL_HOST: android-arm +# ANDROID_CPU: armv7a +# ANDROID_API: 23 +# test_android: "yes" +# config: "no" +# make: "no" + - name: Android aarch64 os: ubuntu-latest - AUTOTOOLS_HOST: armv7a-linux-androidabi - OPENSSL_HOST: android-arm - ANDROID_CPU: armv7a + AUTOTOOLS_HOST: aarch64-linux-android + OPENSSL_HOST: android-arm64 + ANDROID_CPU: aarch64 + ANDROID_API: 23 + test_android: "yes" + config: "no" + make: "no" + - name: Android x86 + os: ubuntu-latest + AUTOTOOLS_HOST: i686-linux-android + OPENSSL_HOST: android-x86 + ANDROID_CPU: x86 + ANDROID_API: 23 + test_android: "yes" + config: "no" + make: "no" + - name: Android x86_64 + os: ubuntu-latest + AUTOTOOLS_HOST: x86_64-linux-android + OPENSSL_HOST: android-x86_64 + ANDROID_CPU: x86_64 ANDROID_API: 23 test_android: "yes" config: "no" From c017e00279974025b9b5678d84c8c7e4f1ad1319 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 14:51:11 +0200 Subject: [PATCH 198/553] Analysis workflow, enable all the tests. --- .github/workflows/analysis_ports.yml | 231 +++++++++++++-------------- 1 file changed, 115 insertions(+), 116 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index ba28f3cdf..3df38a571 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -14,122 +14,121 @@ jobs: strategy: matrix: include: -# temporarily commented out to speed up build. -# - name: GCC on Linux -# os: ubuntu-latest -# config: "--enable-debug --disable-flto" -# make_test: "yes" -# - name: Clang-analyzer -# os: ubuntu-latest -# config: "CC=clang --enable-debug --disable-flto --disable-static" -# make_test: "yes" -# clang_analysis: "yes" -# - name: libevent -# os: ubuntu-latest -# install_libevent: "yes" -# config: "CC=clang --enable-debug --disable-flto --with-libevent --disable-static" -# make_test: "yes" -# clang_analysis: "yes" -# - name: OS X -# os: macos-latest -# install_expat: "yes" -# config: "--enable-debug --disable-flto --with-ssl=/usr/local/opt/openssl --with-libexpat=/usr/local/opt/expat" -# make_test: "yes" -# - name: Clang on OS X -# os: macos-latest -# install_expat: "yes" -# config: "CC=clang --enable-debug --disable-flto --with-ssl=/usr/local/opt/openssl --with-libexpat=/usr/local/opt/expat --disable-static" -# make_test: "yes" -# clang_analysis: "yes" -# - name: ubsan (gcc undefined behaviour sanitizer) -# os: ubuntu-latest -# config: 'CFLAGS="-DNDEBUG -g2 -O3 -fsanitize=undefined -fno-sanitize-recover=all" --disable-flto --disable-static' -# make_test: "yes" -# - name: asan (gcc address sanitizer) -# os: ubuntu-latest -# config: 'CFLAGS="-DNDEBUG -g2 -O3 -fsanitize=address" --disable-flto --disable-static' -# make_test: "yes" -# - name: Apple iPhone on iOS, armv7 -# os: macos-latest -# AUTOTOOLS_HOST: armv7-apple-ios -# OPENSSL_HOST: ios-cross -# IOS_SDK: iPhoneOS -# IOS_CPU: armv7s -# test_ios: "yes" -# config: "no" -# make: "no" -# - name: Apple iPhone on iOS, arm64 -# os: macos-latest -# AUTOTOOLS_HOST: aarch64-apple-ios -# OPENSSL_HOST: ios64-cross -# IOS_SDK: iPhoneOS -# IOS_CPU: arm64 -# test_ios: "yes" -# config: "no" -# make: "no" -# - name: Apple TV on iOS, arm64 -# os: macos-latest -# AUTOTOOLS_HOST: aarch64-apple-ios -# OPENSSL_HOST: ios64-cross -# IOS_SDK: AppleTVOS -# IOS_CPU: arm64 -# test_ios: "yes" -# config: "no" -# make: "no" -# - name: Apple Watch on iOS, armv7 -# os: macos-latest -# AUTOTOOLS_HOST: armv7-apple-ios -# OPENSSL_HOST: ios-cross -# IOS_SDK: WatchOS -# IOS_CPU: armv7k -# test_ios: "yes" -# config: "no" -# make: "no" -# - name: iPhoneSimulator on OS X, i386 -# os: macos-latest -# AUTOTOOLS_HOST: i386-apple-ios -# OPENSSL_HOST: iphoneos-cross -# IOS_SDK: iPhoneSimulator -# IOS_CPU: i386 -# test_ios: "yes" -# config: "no" -# make: "no" -# - name: iPhoneSimulator on OS X, x86_64 -# os: macos-latest -# AUTOTOOLS_HOST: x86_64-apple-ios -# OPENSSL_HOST: iphoneos-cross -# IOS_SDK: iPhoneSimulator -# IOS_CPU: x86_64 -# test_ios: "yes" -# config: "no" -# make: "no" -# - name: AppleTVSimulator on OS X, x86_64 -# os: macos-latest -# AUTOTOOLS_HOST: x86_64-apple-ios -# OPENSSL_HOST: iphoneos-cross -# IOS_SDK: AppleTVSimulator -# IOS_CPU: x86_64 -# test_ios: "yes" -# config: "no" -# make: "no" -# - name: WatchSimulator on OS X, i386 -# os: macos-latest -# AUTOTOOLS_HOST: i386-apple-ios -# OPENSSL_HOST: iphoneos-cross -# IOS_SDK: WatchSimulator -# IOS_CPU: i386 -# test_ios: "yes" -# config: "no" -# make: "no" -# - name: Android armv7a -# os: ubuntu-latest -# AUTOTOOLS_HOST: armv7a-linux-androidabi -# OPENSSL_HOST: android-arm -# ANDROID_CPU: armv7a -# ANDROID_API: 23 -# test_android: "yes" -# config: "no" -# make: "no" + - name: GCC on Linux + os: ubuntu-latest + config: "--enable-debug --disable-flto" + make_test: "yes" + - name: Clang-analyzer + os: ubuntu-latest + config: "CC=clang --enable-debug --disable-flto --disable-static" + make_test: "yes" + clang_analysis: "yes" + - name: libevent + os: ubuntu-latest + install_libevent: "yes" + config: "CC=clang --enable-debug --disable-flto --with-libevent --disable-static" + make_test: "yes" + clang_analysis: "yes" + - name: OS X + os: macos-latest + install_expat: "yes" + config: "--enable-debug --disable-flto --with-ssl=/usr/local/opt/openssl --with-libexpat=/usr/local/opt/expat" + make_test: "yes" + - name: Clang on OS X + os: macos-latest + install_expat: "yes" + config: "CC=clang --enable-debug --disable-flto --with-ssl=/usr/local/opt/openssl --with-libexpat=/usr/local/opt/expat --disable-static" + make_test: "yes" + clang_analysis: "yes" + - name: ubsan (gcc undefined behaviour sanitizer) + os: ubuntu-latest + config: 'CFLAGS="-DNDEBUG -g2 -O3 -fsanitize=undefined -fno-sanitize-recover=all" --disable-flto --disable-static' + make_test: "yes" + - name: asan (gcc address sanitizer) + os: ubuntu-latest + config: 'CFLAGS="-DNDEBUG -g2 -O3 -fsanitize=address" --disable-flto --disable-static' + make_test: "yes" + - name: Apple iPhone on iOS, armv7 + os: macos-latest + AUTOTOOLS_HOST: armv7-apple-ios + OPENSSL_HOST: ios-cross + IOS_SDK: iPhoneOS + IOS_CPU: armv7s + test_ios: "yes" + config: "no" + make: "no" + - name: Apple iPhone on iOS, arm64 + os: macos-latest + AUTOTOOLS_HOST: aarch64-apple-ios + OPENSSL_HOST: ios64-cross + IOS_SDK: iPhoneOS + IOS_CPU: arm64 + test_ios: "yes" + config: "no" + make: "no" + - name: Apple TV on iOS, arm64 + os: macos-latest + AUTOTOOLS_HOST: aarch64-apple-ios + OPENSSL_HOST: ios64-cross + IOS_SDK: AppleTVOS + IOS_CPU: arm64 + test_ios: "yes" + config: "no" + make: "no" + - name: Apple Watch on iOS, armv7 + os: macos-latest + AUTOTOOLS_HOST: armv7-apple-ios + OPENSSL_HOST: ios-cross + IOS_SDK: WatchOS + IOS_CPU: armv7k + test_ios: "yes" + config: "no" + make: "no" + - name: iPhoneSimulator on OS X, i386 + os: macos-latest + AUTOTOOLS_HOST: i386-apple-ios + OPENSSL_HOST: iphoneos-cross + IOS_SDK: iPhoneSimulator + IOS_CPU: i386 + test_ios: "yes" + config: "no" + make: "no" + - name: iPhoneSimulator on OS X, x86_64 + os: macos-latest + AUTOTOOLS_HOST: x86_64-apple-ios + OPENSSL_HOST: iphoneos-cross + IOS_SDK: iPhoneSimulator + IOS_CPU: x86_64 + test_ios: "yes" + config: "no" + make: "no" + - name: AppleTVSimulator on OS X, x86_64 + os: macos-latest + AUTOTOOLS_HOST: x86_64-apple-ios + OPENSSL_HOST: iphoneos-cross + IOS_SDK: AppleTVSimulator + IOS_CPU: x86_64 + test_ios: "yes" + config: "no" + make: "no" + - name: WatchSimulator on OS X, i386 + os: macos-latest + AUTOTOOLS_HOST: i386-apple-ios + OPENSSL_HOST: iphoneos-cross + IOS_SDK: WatchSimulator + IOS_CPU: i386 + test_ios: "yes" + config: "no" + make: "no" + - name: Android armv7a + os: ubuntu-latest + AUTOTOOLS_HOST: armv7a-linux-androidabi + OPENSSL_HOST: android-arm + ANDROID_CPU: armv7a + ANDROID_API: 23 + test_android: "yes" + config: "no" + make: "no" - name: Android aarch64 os: ubuntu-latest AUTOTOOLS_HOST: aarch64-linux-android From ad9a287f82eab8c9177125a3cbdba7c5fa60597f Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 15:18:54 +0200 Subject: [PATCH 199/553] Analysis workflow, add win test. --- .github/workflows/analysis_ports.yml | 292 ++++++++++++++------------- 1 file changed, 152 insertions(+), 140 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 3df38a571..a6fd25f9b 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -14,146 +14,151 @@ jobs: strategy: matrix: include: - - name: GCC on Linux - os: ubuntu-latest - config: "--enable-debug --disable-flto" - make_test: "yes" - - name: Clang-analyzer - os: ubuntu-latest - config: "CC=clang --enable-debug --disable-flto --disable-static" - make_test: "yes" - clang_analysis: "yes" - - name: libevent - os: ubuntu-latest - install_libevent: "yes" - config: "CC=clang --enable-debug --disable-flto --with-libevent --disable-static" - make_test: "yes" - clang_analysis: "yes" - - name: OS X - os: macos-latest - install_expat: "yes" - config: "--enable-debug --disable-flto --with-ssl=/usr/local/opt/openssl --with-libexpat=/usr/local/opt/expat" - make_test: "yes" - - name: Clang on OS X - os: macos-latest - install_expat: "yes" - config: "CC=clang --enable-debug --disable-flto --with-ssl=/usr/local/opt/openssl --with-libexpat=/usr/local/opt/expat --disable-static" - make_test: "yes" - clang_analysis: "yes" - - name: ubsan (gcc undefined behaviour sanitizer) - os: ubuntu-latest - config: 'CFLAGS="-DNDEBUG -g2 -O3 -fsanitize=undefined -fno-sanitize-recover=all" --disable-flto --disable-static' - make_test: "yes" - - name: asan (gcc address sanitizer) - os: ubuntu-latest - config: 'CFLAGS="-DNDEBUG -g2 -O3 -fsanitize=address" --disable-flto --disable-static' - make_test: "yes" - - name: Apple iPhone on iOS, armv7 - os: macos-latest - AUTOTOOLS_HOST: armv7-apple-ios - OPENSSL_HOST: ios-cross - IOS_SDK: iPhoneOS - IOS_CPU: armv7s - test_ios: "yes" - config: "no" - make: "no" - - name: Apple iPhone on iOS, arm64 - os: macos-latest - AUTOTOOLS_HOST: aarch64-apple-ios - OPENSSL_HOST: ios64-cross - IOS_SDK: iPhoneOS - IOS_CPU: arm64 - test_ios: "yes" - config: "no" - make: "no" - - name: Apple TV on iOS, arm64 - os: macos-latest - AUTOTOOLS_HOST: aarch64-apple-ios - OPENSSL_HOST: ios64-cross - IOS_SDK: AppleTVOS - IOS_CPU: arm64 - test_ios: "yes" - config: "no" - make: "no" - - name: Apple Watch on iOS, armv7 - os: macos-latest - AUTOTOOLS_HOST: armv7-apple-ios - OPENSSL_HOST: ios-cross - IOS_SDK: WatchOS - IOS_CPU: armv7k - test_ios: "yes" - config: "no" - make: "no" - - name: iPhoneSimulator on OS X, i386 - os: macos-latest - AUTOTOOLS_HOST: i386-apple-ios - OPENSSL_HOST: iphoneos-cross - IOS_SDK: iPhoneSimulator - IOS_CPU: i386 - test_ios: "yes" - config: "no" - make: "no" - - name: iPhoneSimulator on OS X, x86_64 - os: macos-latest - AUTOTOOLS_HOST: x86_64-apple-ios - OPENSSL_HOST: iphoneos-cross - IOS_SDK: iPhoneSimulator - IOS_CPU: x86_64 - test_ios: "yes" - config: "no" - make: "no" - - name: AppleTVSimulator on OS X, x86_64 - os: macos-latest - AUTOTOOLS_HOST: x86_64-apple-ios - OPENSSL_HOST: iphoneos-cross - IOS_SDK: AppleTVSimulator - IOS_CPU: x86_64 - test_ios: "yes" - config: "no" - make: "no" - - name: WatchSimulator on OS X, i386 - os: macos-latest - AUTOTOOLS_HOST: i386-apple-ios - OPENSSL_HOST: iphoneos-cross - IOS_SDK: WatchSimulator - IOS_CPU: i386 - test_ios: "yes" - config: "no" - make: "no" - - name: Android armv7a - os: ubuntu-latest - AUTOTOOLS_HOST: armv7a-linux-androidabi - OPENSSL_HOST: android-arm - ANDROID_CPU: armv7a - ANDROID_API: 23 - test_android: "yes" - config: "no" - make: "no" - - name: Android aarch64 - os: ubuntu-latest - AUTOTOOLS_HOST: aarch64-linux-android - OPENSSL_HOST: android-arm64 - ANDROID_CPU: aarch64 - ANDROID_API: 23 - test_android: "yes" - config: "no" - make: "no" - - name: Android x86 - os: ubuntu-latest - AUTOTOOLS_HOST: i686-linux-android - OPENSSL_HOST: android-x86 - ANDROID_CPU: x86 - ANDROID_API: 23 - test_android: "yes" - config: "no" - make: "no" - - name: Android x86_64 - os: ubuntu-latest - AUTOTOOLS_HOST: x86_64-linux-android - OPENSSL_HOST: android-x86_64 - ANDROID_CPU: x86_64 - ANDROID_API: 23 - test_android: "yes" +# - name: GCC on Linux +# os: ubuntu-latest +# config: "--enable-debug --disable-flto" +# make_test: "yes" +# - name: Clang-analyzer +# os: ubuntu-latest +# config: "CC=clang --enable-debug --disable-flto --disable-static" +# make_test: "yes" +# clang_analysis: "yes" +# - name: libevent +# os: ubuntu-latest +# install_libevent: "yes" +# config: "CC=clang --enable-debug --disable-flto --with-libevent --disable-static" +# make_test: "yes" +# clang_analysis: "yes" +# - name: OS X +# os: macos-latest +# install_expat: "yes" +# config: "--enable-debug --disable-flto --with-ssl=/usr/local/opt/openssl --with-libexpat=/usr/local/opt/expat" +# make_test: "yes" +# - name: Clang on OS X +# os: macos-latest +# install_expat: "yes" +# config: "CC=clang --enable-debug --disable-flto --with-ssl=/usr/local/opt/openssl --with-libexpat=/usr/local/opt/expat --disable-static" +# make_test: "yes" +# clang_analysis: "yes" +# - name: ubsan (gcc undefined behaviour sanitizer) +# os: ubuntu-latest +# config: 'CFLAGS="-DNDEBUG -g2 -O3 -fsanitize=undefined -fno-sanitize-recover=all" --disable-flto --disable-static' +# make_test: "yes" +# - name: asan (gcc address sanitizer) +# os: ubuntu-latest +# config: 'CFLAGS="-DNDEBUG -g2 -O3 -fsanitize=address" --disable-flto --disable-static' +# make_test: "yes" +# - name: Apple iPhone on iOS, armv7 +# os: macos-latest +# AUTOTOOLS_HOST: armv7-apple-ios +# OPENSSL_HOST: ios-cross +# IOS_SDK: iPhoneOS +# IOS_CPU: armv7s +# test_ios: "yes" +# config: "no" +# make: "no" +# - name: Apple iPhone on iOS, arm64 +# os: macos-latest +# AUTOTOOLS_HOST: aarch64-apple-ios +# OPENSSL_HOST: ios64-cross +# IOS_SDK: iPhoneOS +# IOS_CPU: arm64 +# test_ios: "yes" +# config: "no" +# make: "no" +# - name: Apple TV on iOS, arm64 +# os: macos-latest +# AUTOTOOLS_HOST: aarch64-apple-ios +# OPENSSL_HOST: ios64-cross +# IOS_SDK: AppleTVOS +# IOS_CPU: arm64 +# test_ios: "yes" +# config: "no" +# make: "no" +# - name: Apple Watch on iOS, armv7 +# os: macos-latest +# AUTOTOOLS_HOST: armv7-apple-ios +# OPENSSL_HOST: ios-cross +# IOS_SDK: WatchOS +# IOS_CPU: armv7k +# test_ios: "yes" +# config: "no" +# make: "no" +# - name: iPhoneSimulator on OS X, i386 +# os: macos-latest +# AUTOTOOLS_HOST: i386-apple-ios +# OPENSSL_HOST: iphoneos-cross +# IOS_SDK: iPhoneSimulator +# IOS_CPU: i386 +# test_ios: "yes" +# config: "no" +# make: "no" +# - name: iPhoneSimulator on OS X, x86_64 +# os: macos-latest +# AUTOTOOLS_HOST: x86_64-apple-ios +# OPENSSL_HOST: iphoneos-cross +# IOS_SDK: iPhoneSimulator +# IOS_CPU: x86_64 +# test_ios: "yes" +# config: "no" +# make: "no" +# - name: AppleTVSimulator on OS X, x86_64 +# os: macos-latest +# AUTOTOOLS_HOST: x86_64-apple-ios +# OPENSSL_HOST: iphoneos-cross +# IOS_SDK: AppleTVSimulator +# IOS_CPU: x86_64 +# test_ios: "yes" +# config: "no" +# make: "no" +# - name: WatchSimulator on OS X, i386 +# os: macos-latest +# AUTOTOOLS_HOST: i386-apple-ios +# OPENSSL_HOST: iphoneos-cross +# IOS_SDK: WatchSimulator +# IOS_CPU: i386 +# test_ios: "yes" +# config: "no" +# make: "no" +# - name: Android armv7a +# os: ubuntu-latest +# AUTOTOOLS_HOST: armv7a-linux-androidabi +# OPENSSL_HOST: android-arm +# ANDROID_CPU: armv7a +# ANDROID_API: 23 +# test_android: "yes" +# config: "no" +# make: "no" +# - name: Android aarch64 +# os: ubuntu-latest +# AUTOTOOLS_HOST: aarch64-linux-android +# OPENSSL_HOST: android-arm64 +# ANDROID_CPU: aarch64 +# ANDROID_API: 23 +# test_android: "yes" +# config: "no" +# make: "no" +# - name: Android x86 +# os: ubuntu-latest +# AUTOTOOLS_HOST: i686-linux-android +# OPENSSL_HOST: android-x86 +# ANDROID_CPU: x86 +# ANDROID_API: 23 +# test_android: "yes" +# config: "no" +# make: "no" +# - name: Android x86_64 +# os: ubuntu-latest +# AUTOTOOLS_HOST: x86_64-linux-android +# OPENSSL_HOST: android-x86_64 +# ANDROID_CPU: x86_64 +# ANDROID_API: 23 +# test_android: "yes" +# config: "no" +# make: "no" + - name: Windows + os: windows-latest + test_windows: "yes" config: "no" make: "no" @@ -161,6 +166,13 @@ jobs: - uses: actions/checkout@v2 with: submodules: false + - name: test_windows + if: ${{ matrix.test_windows == 'yes' }} + run: | + mingw64-configure --enable-debug --enable-static-exe --disable-flto + make + make test + shell: bash - name: test_android if: ${{ matrix.test_android == 'yes' }} env: From 9cd15f7ebf62237316e8477526cb134e9af3a36b Mon Sep 17 00:00:00 2001 From: Tom Carpay Date: Thu, 24 Jun 2021 15:20:32 +0200 Subject: [PATCH 200/553] remove tests for svcparam semantics --- testdata/svcb.tdir/failure-cases.zone | 95 ----------------- testdata/svcb.tdir/svcb.failure-cases-01 | 7 +- testdata/svcb.tdir/svcb.failure-cases-02 | 4 +- testdata/svcb.tdir/svcb.failure-cases-03 | 4 +- testdata/svcb.tdir/svcb.failure-cases-04 | 4 +- testdata/svcb.tdir/svcb.failure-cases-05 | 8 -- testdata/svcb.tdir/svcb.failure-cases-06 | 8 -- testdata/svcb.tdir/svcb.failure-cases-07 | 8 -- testdata/svcb.tdir/svcb.failure-cases-08 | 8 -- testdata/svcb.tdir/svcb.failure-cases-09 | 9 -- testdata/svcb.tdir/svcb.failure-cases-10 | 10 -- testdata/svcb.tdir/svcb.failure-cases-11 | 10 -- testdata/svcb.tdir/svcb.failure-cases-12 | 8 -- testdata/svcb.tdir/svcb.failure-cases-13 | 8 -- testdata/svcb.tdir/svcb.failure-cases-14 | 8 -- testdata/svcb.tdir/svcb.failure-cases-15 | 8 -- testdata/svcb.tdir/svcb.failure-cases-16 | 8 -- testdata/svcb.tdir/svcb.failure-cases-17 | 8 -- testdata/svcb.tdir/svcb.failure-cases-18 | 8 -- testdata/svcb.tdir/svcb.failure-cases-19 | 9 -- testdata/svcb.tdir/svcb.failure-cases-20 | 10 -- testdata/svcb.tdir/svcb.failure-cases-21 | 9 -- testdata/svcb.tdir/svcb.failure-cases-22 | 8 -- testdata/svcb.tdir/svcb.failure-cases-23 | 8 -- testdata/svcb.tdir/svcb.failure-cases-24 | 8 -- testdata/svcb.tdir/svcb.test | 126 +---------------------- 26 files changed, 12 insertions(+), 397 deletions(-) delete mode 100644 testdata/svcb.tdir/failure-cases.zone delete mode 100644 testdata/svcb.tdir/svcb.failure-cases-05 delete mode 100644 testdata/svcb.tdir/svcb.failure-cases-06 delete mode 100644 testdata/svcb.tdir/svcb.failure-cases-07 delete mode 100644 testdata/svcb.tdir/svcb.failure-cases-08 delete mode 100644 testdata/svcb.tdir/svcb.failure-cases-09 delete mode 100644 testdata/svcb.tdir/svcb.failure-cases-10 delete mode 100644 testdata/svcb.tdir/svcb.failure-cases-11 delete mode 100644 testdata/svcb.tdir/svcb.failure-cases-12 delete mode 100644 testdata/svcb.tdir/svcb.failure-cases-13 delete mode 100644 testdata/svcb.tdir/svcb.failure-cases-14 delete mode 100644 testdata/svcb.tdir/svcb.failure-cases-15 delete mode 100644 testdata/svcb.tdir/svcb.failure-cases-16 delete mode 100644 testdata/svcb.tdir/svcb.failure-cases-17 delete mode 100644 testdata/svcb.tdir/svcb.failure-cases-18 delete mode 100644 testdata/svcb.tdir/svcb.failure-cases-19 delete mode 100644 testdata/svcb.tdir/svcb.failure-cases-20 delete mode 100644 testdata/svcb.tdir/svcb.failure-cases-21 delete mode 100644 testdata/svcb.tdir/svcb.failure-cases-22 delete mode 100644 testdata/svcb.tdir/svcb.failure-cases-23 delete mode 100644 testdata/svcb.tdir/svcb.failure-cases-24 diff --git a/testdata/svcb.tdir/failure-cases.zone b/testdata/svcb.tdir/failure-cases.zone deleted file mode 100644 index 9ca222ea9..000000000 --- a/testdata/svcb.tdir/failure-cases.zone +++ /dev/null @@ -1,95 +0,0 @@ -$ORIGIN failure-cases. -$TTL 3600 - - -@ SOA primary admin 1 3600 1800 7200 3600 - NS primary -primary A 127.0.0.1 - -; This example has multiple instances of the same SvcParamKey - -f01 SVCB 1 foo.example.com. ( - key123=abc key123=def - ) -; In the next examples the SvcParamKeys are missing their values. - -f02 SVCB 1 foo.example.com. mandatory - -; In the next examples the SvcParamKeys are missing their values. - -f03 SVCB 1 foo.example.com. alpn - -; In the next examples the SvcParamKeys are missing their values. - -f04 SVCB 1 foo.example.com. port - -; In the next examples the SvcParamKeys are missing their values. - -f05 SVCB 1 foo.example.com. ipv4hint - -; In the next examples the SvcParamKeys are missing their values. - -f06 SVCB 1 foo.example.com. ipv6hint - -; The "no-default-alpn" SvcParamKey value MUST be empty - -f07 SVCB 1 foo.example.com. no-default-alpn=abc - -; In this record a mandatory SvcParam is missing - -f08 SVCB 1 foo.example.com. mandatory=key123 - -; The "mandatory" SvcParamKey MUST not be included in mandatory list - -f09 SVCB 1 foo.example.com. mandatory=mandatory - -; Here there are multiple instances of the same SvcParamKey in the mandatory list - -f10 SVCB 1 foo.example.com. ( - mandatory=key123,key123 key123=abc - ) - -; This example has multiple instances of the same SvcParamKey - -f11 HTTPS 1 foo.example.com. ( - key123=abc key123=def - ) - -; In the next examples the SvcParamKeys are missing their values. - -f12 HTTPS 1 foo.example.com. mandatory - -; In the next examples the SvcParamKeys are missing their values. - -f13 HTTPS 1 foo.example.com. alpn - -; In the next examples the SvcParamKeys are missing their values. - -f14 HTTPS 1 foo.example.com. port - -; In the next examples the SvcParamKeys are missing their values. - -f15 HTTPS 1 foo.example.com. ipv4hint - -; In the next examples the SvcParamKeys are missing their values. - -f16 HTTPS 1 foo.example.com. ipv6hint - -; The "no-default-alpn" SvcParamKey value MUST be empty - -f17 HTTPS 1 foo.example.com. no-default-alpn=abc - -; In this record a mandatory SvcParam is missing - -f18 HTTPS 1 foo.example.com. mandatory=key123 - -; The "mandatory" SvcParamKey MUST not be included in mandatory list - -f19 HTTPS 1 foo.example.com. mandatory=mandatory - -; Here there are multiple instances of the same SvcParamKey in the mandatory list - -f20 HTTPS 1 foo.example.com. ( - mandatory=key123,key123 key123=abc - ) - diff --git a/testdata/svcb.tdir/svcb.failure-cases-01 b/testdata/svcb.tdir/svcb.failure-cases-01 index 497098b1f..c60151692 100644 --- a/testdata/svcb.tdir/svcb.failure-cases-01 +++ b/testdata/svcb.tdir/svcb.failure-cases-01 @@ -3,8 +3,7 @@ $TTL 3600 @ SOA primary admin 0 0 0 0 0 -; This example has multiple instances of the same SvcParamKey +; Here there are multiple instances of the same SvcParamKey in the mandatory list -f01 SVCB 1 foo.example.com. ( - key123=abc key123=def - ) +f21 HTTPS 1 foo.example.com. ech="123" +f21 HTTPS 1 foo.example.com. echconfig="123" diff --git a/testdata/svcb.tdir/svcb.failure-cases-02 b/testdata/svcb.tdir/svcb.failure-cases-02 index 73656171f..9d6f0186d 100644 --- a/testdata/svcb.tdir/svcb.failure-cases-02 +++ b/testdata/svcb.tdir/svcb.failure-cases-02 @@ -3,6 +3,6 @@ $TTL 3600 @ SOA primary admin 0 0 0 0 0 -; In the next examples the SvcParamKeys are missing their values. +; Port must be a positive number < 65536 -f02 SVCB 1 foo.example.com. mandatory +f22 HTTPS 1 foo.example.com. port=65536 diff --git a/testdata/svcb.tdir/svcb.failure-cases-03 b/testdata/svcb.tdir/svcb.failure-cases-03 index 8ae6c4ab2..bb819daae 100644 --- a/testdata/svcb.tdir/svcb.failure-cases-03 +++ b/testdata/svcb.tdir/svcb.failure-cases-03 @@ -3,6 +3,6 @@ $TTL 3600 @ SOA primary admin 0 0 0 0 0 -; In the next examples the SvcParamKeys are missing their values. +; 65 SvcParams is too many SvcParams; the limit is 64 -f03 SVCB 1 foo.example.com. alpn +f23 HTTPS 1 foo.example.com. ( key11=a key12=a key13=a key14=a key15=a key16=a key17=a key18=a key19=a key110=a key111=a key112=a key113=a key114=a key115=a key116=a key117=a key118=a key119=a key120=a key121=a key122=a key123=a key124=a key125=a key126=a key127=a key128=a key129=a key130=a key131=a key132=a key133=a key134=a key135=a key136=a key137=a key138=a key139=a key140=a key141=a key142=a key143=a key144=a key145=a key146=a key147=a key148=a key149=a key150=a key151=a key152=a key153=a key154=a key155=a key156=a key157=a key158=a key159=a key160=a key161=a key162=a key163=a key164=a key165=a ) \ No newline at end of file diff --git a/testdata/svcb.tdir/svcb.failure-cases-04 b/testdata/svcb.tdir/svcb.failure-cases-04 index 5aa32a83e..ae02ac417 100644 --- a/testdata/svcb.tdir/svcb.failure-cases-04 +++ b/testdata/svcb.tdir/svcb.failure-cases-04 @@ -3,6 +3,6 @@ $TTL 3600 @ SOA primary admin 0 0 0 0 0 -; In the next examples the SvcParamKeys are missing their values. +; 256 is too many characters for an alpn; maximum is 255 -f04 SVCB 1 foo.example.com. port +f23 HTTPS 1 foo.example.com. ( alpn="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" ) \ No newline at end of file diff --git a/testdata/svcb.tdir/svcb.failure-cases-05 b/testdata/svcb.tdir/svcb.failure-cases-05 deleted file mode 100644 index 4b2f95cc0..000000000 --- a/testdata/svcb.tdir/svcb.failure-cases-05 +++ /dev/null @@ -1,8 +0,0 @@ -$ORIGIN failure-cases. -$TTL 3600 - -@ SOA primary admin 0 0 0 0 0 - -; In the next examples the SvcParamKeys are missing their values. - -f05 SVCB 1 foo.example.com. ipv4hint diff --git a/testdata/svcb.tdir/svcb.failure-cases-06 b/testdata/svcb.tdir/svcb.failure-cases-06 deleted file mode 100644 index a111846f1..000000000 --- a/testdata/svcb.tdir/svcb.failure-cases-06 +++ /dev/null @@ -1,8 +0,0 @@ -$ORIGIN failure-cases. -$TTL 3600 - -@ SOA primary admin 0 0 0 0 0 - -; In the next examples the SvcParamKeys are missing their values. - -f06 SVCB 1 foo.example.com. ipv6hint diff --git a/testdata/svcb.tdir/svcb.failure-cases-07 b/testdata/svcb.tdir/svcb.failure-cases-07 deleted file mode 100644 index a8512ad4c..000000000 --- a/testdata/svcb.tdir/svcb.failure-cases-07 +++ /dev/null @@ -1,8 +0,0 @@ -$ORIGIN failure-cases. -$TTL 3600 - -@ SOA primary admin 0 0 0 0 0 - -; The "no-default-alpn" SvcParamKey value MUST be empty - -f07 SVCB 1 foo.example.com. no-default-alpn=abc diff --git a/testdata/svcb.tdir/svcb.failure-cases-08 b/testdata/svcb.tdir/svcb.failure-cases-08 deleted file mode 100644 index 4bbf618cd..000000000 --- a/testdata/svcb.tdir/svcb.failure-cases-08 +++ /dev/null @@ -1,8 +0,0 @@ -$ORIGIN failure-cases. -$TTL 3600 - -@ SOA primary admin 0 0 0 0 0 - -; In this record a mandatory SvcParam is missing - -f08 SVCB 1 foo.example.com. mandatory=key123 diff --git a/testdata/svcb.tdir/svcb.failure-cases-09 b/testdata/svcb.tdir/svcb.failure-cases-09 deleted file mode 100644 index 408e937d4..000000000 --- a/testdata/svcb.tdir/svcb.failure-cases-09 +++ /dev/null @@ -1,9 +0,0 @@ -$ORIGIN failure-cases. -$TTL 3600 - -@ SOA primary admin 0 0 0 0 0 - -; The "mandatory" SvcParamKey MUST not be included in mandatory list - -f09 SVCB 1 foo.example.com. mandatory=mandatory - diff --git a/testdata/svcb.tdir/svcb.failure-cases-10 b/testdata/svcb.tdir/svcb.failure-cases-10 deleted file mode 100644 index b1e6ccf5f..000000000 --- a/testdata/svcb.tdir/svcb.failure-cases-10 +++ /dev/null @@ -1,10 +0,0 @@ -$ORIGIN failure-cases. -$TTL 3600 - -@ SOA primary admin 0 0 0 0 0 - -; Here there are multiple instances of the same SvcParamKey in the mandatory list - -f10 SVCB 1 foo.example.com. ( - mandatory=key123,key123 key123=abc - ) diff --git a/testdata/svcb.tdir/svcb.failure-cases-11 b/testdata/svcb.tdir/svcb.failure-cases-11 deleted file mode 100644 index ee4d5a431..000000000 --- a/testdata/svcb.tdir/svcb.failure-cases-11 +++ /dev/null @@ -1,10 +0,0 @@ -$ORIGIN failure-cases. -$TTL 3600 - -@ SOA primary admin 0 0 0 0 0 - -; This example has multiple instances of the same SvcParamKey - -f01 HTTPS 1 foo.example.com. ( - key123=abc key123=def - ) diff --git a/testdata/svcb.tdir/svcb.failure-cases-12 b/testdata/svcb.tdir/svcb.failure-cases-12 deleted file mode 100644 index e57fa8819..000000000 --- a/testdata/svcb.tdir/svcb.failure-cases-12 +++ /dev/null @@ -1,8 +0,0 @@ -$ORIGIN failure-cases. -$TTL 3600 - -@ SOA primary admin 0 0 0 0 0 - -; In the next examples the SvcParamKeys are missing their values. - -f02 HTTPS 1 foo.example.com. mandatory diff --git a/testdata/svcb.tdir/svcb.failure-cases-13 b/testdata/svcb.tdir/svcb.failure-cases-13 deleted file mode 100644 index 52f3e6242..000000000 --- a/testdata/svcb.tdir/svcb.failure-cases-13 +++ /dev/null @@ -1,8 +0,0 @@ -$ORIGIN failure-cases. -$TTL 3600 - -@ SOA primary admin 0 0 0 0 0 - -; In the next examples the SvcParamKeys are missing their values. - -f03 HTTPS 1 foo.example.com. alpn diff --git a/testdata/svcb.tdir/svcb.failure-cases-14 b/testdata/svcb.tdir/svcb.failure-cases-14 deleted file mode 100644 index 3525d26d3..000000000 --- a/testdata/svcb.tdir/svcb.failure-cases-14 +++ /dev/null @@ -1,8 +0,0 @@ -$ORIGIN failure-cases. -$TTL 3600 - -@ SOA primary admin 0 0 0 0 0 - -; In the next examples the SvcParamKeys are missing their values. - -f04 HTTPS 1 foo.example.com. port diff --git a/testdata/svcb.tdir/svcb.failure-cases-15 b/testdata/svcb.tdir/svcb.failure-cases-15 deleted file mode 100644 index 1ab513725..000000000 --- a/testdata/svcb.tdir/svcb.failure-cases-15 +++ /dev/null @@ -1,8 +0,0 @@ -$ORIGIN failure-cases. -$TTL 3600 - -@ SOA primary admin 0 0 0 0 0 - -; In the next examples the SvcParamKeys are missing their values. - -f05 HTTPS 1 foo.example.com. ipv4hint diff --git a/testdata/svcb.tdir/svcb.failure-cases-16 b/testdata/svcb.tdir/svcb.failure-cases-16 deleted file mode 100644 index 78bed5c24..000000000 --- a/testdata/svcb.tdir/svcb.failure-cases-16 +++ /dev/null @@ -1,8 +0,0 @@ -$ORIGIN failure-cases. -$TTL 3600 - -@ SOA primary admin 0 0 0 0 0 - -; In the next examples the SvcParamKeys are missing their values. - -f06 HTTPS 1 foo.example.com. ipv6hint diff --git a/testdata/svcb.tdir/svcb.failure-cases-17 b/testdata/svcb.tdir/svcb.failure-cases-17 deleted file mode 100644 index 84aede049..000000000 --- a/testdata/svcb.tdir/svcb.failure-cases-17 +++ /dev/null @@ -1,8 +0,0 @@ -$ORIGIN failure-cases. -$TTL 3600 - -@ SOA primary admin 0 0 0 0 0 - -; The "no-default-alpn" SvcParamKey value MUST be empty - -f07 HTTPS 1 foo.example.com. no-default-alpn=abc diff --git a/testdata/svcb.tdir/svcb.failure-cases-18 b/testdata/svcb.tdir/svcb.failure-cases-18 deleted file mode 100644 index 0ecbc545f..000000000 --- a/testdata/svcb.tdir/svcb.failure-cases-18 +++ /dev/null @@ -1,8 +0,0 @@ -$ORIGIN failure-cases. -$TTL 3600 - -@ SOA primary admin 0 0 0 0 0 - -; In this record a mandatory SvcParam is missing - -f08 HTTPS 1 foo.example.com. mandatory=key123 diff --git a/testdata/svcb.tdir/svcb.failure-cases-19 b/testdata/svcb.tdir/svcb.failure-cases-19 deleted file mode 100644 index 576556490..000000000 --- a/testdata/svcb.tdir/svcb.failure-cases-19 +++ /dev/null @@ -1,9 +0,0 @@ -$ORIGIN failure-cases. -$TTL 3600 - -@ SOA primary admin 0 0 0 0 0 - -; The "mandatory" SvcParamKey MUST not be included in mandatory list - -f09 HTTPS 1 foo.example.com. mandatory=mandatory - diff --git a/testdata/svcb.tdir/svcb.failure-cases-20 b/testdata/svcb.tdir/svcb.failure-cases-20 deleted file mode 100644 index fc4781eaa..000000000 --- a/testdata/svcb.tdir/svcb.failure-cases-20 +++ /dev/null @@ -1,10 +0,0 @@ -$ORIGIN failure-cases. -$TTL 3600 - -@ SOA primary admin 0 0 0 0 0 - -; Here there are multiple instances of the same SvcParamKey in the mandatory list - -f10 HTTPS 1 foo.example.com. ( - mandatory=key123,key123 key123=abc - ) diff --git a/testdata/svcb.tdir/svcb.failure-cases-21 b/testdata/svcb.tdir/svcb.failure-cases-21 deleted file mode 100644 index c60151692..000000000 --- a/testdata/svcb.tdir/svcb.failure-cases-21 +++ /dev/null @@ -1,9 +0,0 @@ -$ORIGIN failure-cases. -$TTL 3600 - -@ SOA primary admin 0 0 0 0 0 - -; Here there are multiple instances of the same SvcParamKey in the mandatory list - -f21 HTTPS 1 foo.example.com. ech="123" -f21 HTTPS 1 foo.example.com. echconfig="123" diff --git a/testdata/svcb.tdir/svcb.failure-cases-22 b/testdata/svcb.tdir/svcb.failure-cases-22 deleted file mode 100644 index 9d6f0186d..000000000 --- a/testdata/svcb.tdir/svcb.failure-cases-22 +++ /dev/null @@ -1,8 +0,0 @@ -$ORIGIN failure-cases. -$TTL 3600 - -@ SOA primary admin 0 0 0 0 0 - -; Port must be a positive number < 65536 - -f22 HTTPS 1 foo.example.com. port=65536 diff --git a/testdata/svcb.tdir/svcb.failure-cases-23 b/testdata/svcb.tdir/svcb.failure-cases-23 deleted file mode 100644 index bb819daae..000000000 --- a/testdata/svcb.tdir/svcb.failure-cases-23 +++ /dev/null @@ -1,8 +0,0 @@ -$ORIGIN failure-cases. -$TTL 3600 - -@ SOA primary admin 0 0 0 0 0 - -; 65 SvcParams is too many SvcParams; the limit is 64 - -f23 HTTPS 1 foo.example.com. ( key11=a key12=a key13=a key14=a key15=a key16=a key17=a key18=a key19=a key110=a key111=a key112=a key113=a key114=a key115=a key116=a key117=a key118=a key119=a key120=a key121=a key122=a key123=a key124=a key125=a key126=a key127=a key128=a key129=a key130=a key131=a key132=a key133=a key134=a key135=a key136=a key137=a key138=a key139=a key140=a key141=a key142=a key143=a key144=a key145=a key146=a key147=a key148=a key149=a key150=a key151=a key152=a key153=a key154=a key155=a key156=a key157=a key158=a key159=a key160=a key161=a key162=a key163=a key164=a key165=a ) \ No newline at end of file diff --git a/testdata/svcb.tdir/svcb.failure-cases-24 b/testdata/svcb.tdir/svcb.failure-cases-24 deleted file mode 100644 index ae02ac417..000000000 --- a/testdata/svcb.tdir/svcb.failure-cases-24 +++ /dev/null @@ -1,8 +0,0 @@ -$ORIGIN failure-cases. -$TTL 3600 - -@ SOA primary admin 0 0 0 0 0 - -; 256 is too many characters for an alpn; maximum is 255 - -f23 HTTPS 1 foo.example.com. ( alpn="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" ) \ No newline at end of file diff --git a/testdata/svcb.tdir/svcb.test b/testdata/svcb.tdir/svcb.test index ac6e90d3f..c997fbb07 100644 --- a/testdata/svcb.tdir/svcb.test +++ b/testdata/svcb.tdir/svcb.test @@ -54,143 +54,23 @@ fi # check all the failure cases if $PRE/readzone svcb.failure-cases-01 then - echo "Failure case 1: Multiple instances of the same SvcParamKey" + echo "Failure case 21: ech value is not base64 encoded" echo "Incorrectly succeeded" exit 1 elif $PRE/readzone svcb.failure-cases-02 then - echo "Failure case 2: a SvcParamKey is missing a value" + echo "Failure case 22: port value needs to be a positive integer < 65536" echo "Incorrectly succeeded" exit 1 elif $PRE/readzone svcb.failure-cases-03 -then - echo "Failure case 3: a SvcParamKey is missing a value" - echo "Incorrectly succeeded" - exit 1 - -elif $PRE/readzone svcb.failure-cases-04 -then - echo "Failure case 4: a SvcParamKey is missing a value" - echo "Incorrectly succeeded" - exit 1 - -elif $PRE/readzone svcb.failure-cases-05 -then - echo "Failure case 5: a SvcParamKey is missing a value" - echo "Incorrectly succeeded" - exit 1 - -elif $PRE/readzone svcb.failure-cases-06 -then - echo "Failure case 6: a SvcParamKey is missing a value" - echo "Incorrectly succeeded" - exit 1 - -elif $PRE/readzone svcb.failure-cases-07 -then - echo "Failure case 7: The \no-default-alpn\" SvcParamKey value MUST be empty - echo "Incorrectly succeeded" - exit 1 - -elif $PRE/readzone svcb.failure-cases-08 -then - echo "Failure case 8: a mandatory SvcParam is missing" - echo "Incorrectly succeeded" - exit 1 - -elif $PRE/readzone svcb.failure-cases-09 -then - echo "Failure case 9: The \"mandatory\" SvcParamKey MUST not be included in mandatory list" - echo "Incorrectly succeeded" - exit 1 - -elif $PRE/readzone svcb.failure-cases-10 -then - echo "Failure case 10: multiple instances of the same SvcParamKey in the mandatory list" - echo "Incorrectly succeeded" - exit 1 - -elif $PRE/readzone svcb.failure-cases-11 -then - echo "Failure case 11: Multiple instances of the same SvcParamKey" - echo "Incorrectly succeeded" - exit 1 - -elif $PRE/readzone svcb.failure-cases-12 -then - echo "Failure case 12: a SvcParamKey is missing a value" - echo "Incorrectly succeeded" - exit 1 - -elif $PRE/readzone svcb.failure-cases-13 -then - echo "Failure case 13: a SvcParamKey is missing a value" - echo "Incorrectly succeeded" - exit 1 - -elif $PRE/readzone svcb.failure-cases-14 -then - echo "Failure case 14: a SvcParamKey is missing a value" - echo "Incorrectly succeeded" - exit 1 - -elif $PRE/readzone svcb.failure-cases-15 -then - echo "Failure case 15: a SvcParamKey is missing a value" - echo "Incorrectly succeeded" - exit 1 - -elif $PRE/readzone svcb.failure-cases-16 -then - echo "Failure case 16: a SvcParamKey is missing a value" - echo "Incorrectly succeeded" - exit 1 - -elif $PRE/readzone svcb.failure-cases-17 -then - echo "Failure case 17: The \no-default-alpn\" SvcParamKey value MUST be empty - echo "Incorrectly succeeded" - exit 1 - -elif $PRE/readzone svcb.failure-cases-18 -then - echo "Failure case 18: a mandatory SvcParam is missing" - echo "Incorrectly succeeded" - exit 1 - -elif $PRE/readzone svcb.failure-cases-19 -then - echo "Failure case 19: The \"mandatory\" SvcParamKey MUST not be included in mandatory list" - echo "Incorrectly succeeded" - exit 1 - -elif $PRE/readzone svcb.failure-cases-20 -then - echo "Failure case 20: multiple instances of the same SvcParamKey in the mandatory list" - echo "Incorrectly succeeded" - exit 1 - -elif $PRE/readzone svcb.failure-cases-21 -then - echo "Failure case 21: ech value is not base64 encoded" - echo "Incorrectly succeeded" - exit 1 - -elif $PRE/readzone svcb.failure-cases-22 -then - echo "Failure case 22: port value needs to be a positive integer < 65536" - echo "Incorrectly succeeded" - exit 1 - -elif $PRE/readzone svcb.failure-cases-23 then echo "Failure case 23: 65 SvcParams is too many SvcParams; the limit is 64" echo "Incorrectly succeeded" exit 1 -elif $PRE/readzone svcb.failure-cases-23 +elif $PRE/readzone svcb.failure-cases-04 then echo "Failure case 24: 256 is too many characters for an alpn; maximum is 255" echo "Incorrectly succeeded" From 137ff8b856153a1847b39ef23bb25f6753c20852 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 15:21:26 +0200 Subject: [PATCH 201/553] Analysis workflow, fix indentation of shell keyword. --- .github/workflows/analysis_ports.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index a6fd25f9b..76bcdb803 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -168,11 +168,11 @@ jobs: submodules: false - name: test_windows if: ${{ matrix.test_windows == 'yes' }} + shell: bash run: | mingw64-configure --enable-debug --enable-static-exe --disable-flto make make test - shell: bash - name: test_android if: ${{ matrix.test_android == 'yes' }} env: From 5d70fbc6fa52a1d325c83ecfe931a7bc8b9b0255 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 15:25:37 +0200 Subject: [PATCH 202/553] Analysis workflow, find mingw. --- .github/workflows/analysis_ports.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 76bcdb803..b6eed4eac 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -170,7 +170,10 @@ jobs: if: ${{ matrix.test_windows == 'yes' }} shell: bash run: | - mingw64-configure --enable-debug --enable-static-exe --disable-flto + ls -l c:\ + ls -l c:\tools + ls -l c:\tools\mingw + mingw32-configure --enable-debug --enable-static-exe --disable-flto make make test - name: test_android From 0f5847f2762f6a4669d204e0789eb5792d97f58f Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 15:28:09 +0200 Subject: [PATCH 203/553] Analysis workflow, find mingw. --- .github/workflows/analysis_ports.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index b6eed4eac..6f7adff5d 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -170,9 +170,9 @@ jobs: if: ${{ matrix.test_windows == 'yes' }} shell: bash run: | - ls -l c:\ - ls -l c:\tools - ls -l c:\tools\mingw + ls -l 'c:\' || echo nevermind + ls -l 'c:\tools' || echo nevermind + ls -l 'c:\tools\mingw' || echo nevermind mingw32-configure --enable-debug --enable-static-exe --disable-flto make make test From 3db0c7717cbc7388070628d457001f9914731ad3 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 16:05:02 +0200 Subject: [PATCH 204/553] Analysis workflow, find mingw. --- .github/workflows/analysis_ports.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 6f7adff5d..d8a0c4908 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -170,9 +170,14 @@ jobs: if: ${{ matrix.test_windows == 'yes' }} shell: bash run: | + echo 'c:' ls -l 'c:\' || echo nevermind - ls -l 'c:\tools' || echo nevermind - ls -l 'c:\tools\mingw' || echo nevermind + echo 'Program Files' + ls -l 'c:\Program Files' || echo nevermind + echo 'Program Files (x86)' + ls -l 'c:\Program Files (x86)' || echo nevermind + echo PATH="$PATH" + find / -name mingw32-make.exe mingw32-configure --enable-debug --enable-static-exe --disable-flto make make test From 085ac3c0da1e22a6cab7409bf86de0ec54d992d1 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 16:13:21 +0200 Subject: [PATCH 205/553] Analysis workflow, find mingw. --- .github/workflows/analysis_ports.yml | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index d8a0c4908..0b5612539 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -176,9 +176,18 @@ jobs: ls -l 'c:\Program Files' || echo nevermind echo 'Program Files (x86)' ls -l 'c:\Program Files (x86)' || echo nevermind + echo '/c/Program Files/OpenSSL' + ls -l '/c/Program Files/OpenSSL' || echo nevermind + echo '/' + ls -l '/' || echo nevermind + echo '/mingw64' + ls -l '/mingw64' || echo nevermind + echo '/mingw64/bin' + ls -l '/mingw64/bin' || echo nevermind + echo '/Users' + ls -l '/Users' || echo nevermind echo PATH="$PATH" - find / -name mingw32-make.exe - mingw32-configure --enable-debug --enable-static-exe --disable-flto + ./configure --enable-debug --enable-static-exe --disable-flto make make test - name: test_android From b9b46367975b46135e81757d49ec969ee90a870f Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 16:20:55 +0200 Subject: [PATCH 206/553] Analysis workflow, find openssl. --- .github/workflows/analysis_ports.yml | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 0b5612539..7f1492e03 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -184,8 +184,18 @@ jobs: ls -l '/mingw64' || echo nevermind echo '/mingw64/bin' ls -l '/mingw64/bin' || echo nevermind - echo '/Users' - ls -l '/Users' || echo nevermind + echo '/c/Users' + ls -l '/c/Users' || echo nevermind + echo '/mingw64/ssl' + ls -l '/mingw64/ssl' || echo nevermind + echo '/c/ProgramData/Chocolatey' + ls -l '/c/ProgramData/Chocolatey' || echo nevermind + echo '/c/ProgramData/Chocolatey/include' + ls -l '/c/ProgramData/Chocolatey/include' || echo nevermind + echo '/c/ProgramData/Chocolatey/lib' + ls -l '/c/ProgramData/Chocolatey/lib' || echo nevermind + echo '/c/ProgramData/Chocolatey/lib/mingw' + ls -l '/c/ProgramData/Chocolatey/lib/mingw' || echo nevermind echo PATH="$PATH" ./configure --enable-debug --enable-static-exe --disable-flto make From bc51922888d186d99daee562a1fdd7eee1525d80 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 16:27:02 +0200 Subject: [PATCH 207/553] Analysis workflow, find openssl. --- .github/workflows/analysis_ports.yml | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 7f1492e03..f034be22c 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -190,12 +190,20 @@ jobs: ls -l '/mingw64/ssl' || echo nevermind echo '/c/ProgramData/Chocolatey' ls -l '/c/ProgramData/Chocolatey' || echo nevermind - echo '/c/ProgramData/Chocolatey/include' - ls -l '/c/ProgramData/Chocolatey/include' || echo nevermind + echo '/c/ProgramData/Chocolatey/tools' + ls -l '/c/ProgramData/Chocolatey/tools' || echo nevermind echo '/c/ProgramData/Chocolatey/lib' ls -l '/c/ProgramData/Chocolatey/lib' || echo nevermind + echo '/c/ProgramData/Chocolatey/lib/OpenSSL.Light' + ls -l '/c/ProgramData/Chocolatey/lib/OpenSSL.Light' || echo nevermind echo '/c/ProgramData/Chocolatey/lib/mingw' ls -l '/c/ProgramData/Chocolatey/lib/mingw' || echo nevermind + echo '/c/ProgramData/Chocolatey/lib/mingw/tools' + ls -l '/c/ProgramData/Chocolatey/lib/mingw/tools' || echo nevermind + echo '/c/ProgramData/Chocolatey/lib/mingw/tools/install' + ls -l '/c/ProgramData/Chocolatey/lib/mingw/tools/install' || echo nevermind + echo '/c/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64' + ls -l '/c/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64' || echo nevermind echo PATH="$PATH" ./configure --enable-debug --enable-static-exe --disable-flto make From 36a9b5da0d9d15ef489f264c594a38c17d3ccb93 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 16:31:51 +0200 Subject: [PATCH 208/553] Analysis workflow, find openssl. --- .github/workflows/analysis_ports.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index f034be22c..060623f96 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -196,6 +196,8 @@ jobs: ls -l '/c/ProgramData/Chocolatey/lib' || echo nevermind echo '/c/ProgramData/Chocolatey/lib/OpenSSL.Light' ls -l '/c/ProgramData/Chocolatey/lib/OpenSSL.Light' || echo nevermind + echo '/c/ProgramData/Chocolatey/lib/OpenSSL.Light/tools' + ls -l '/c/ProgramData/Chocolatey/lib/OpenSSL.Light/tools' || echo nevermind echo '/c/ProgramData/Chocolatey/lib/mingw' ls -l '/c/ProgramData/Chocolatey/lib/mingw' || echo nevermind echo '/c/ProgramData/Chocolatey/lib/mingw/tools' @@ -204,6 +206,14 @@ jobs: ls -l '/c/ProgramData/Chocolatey/lib/mingw/tools/install' || echo nevermind echo '/c/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64' ls -l '/c/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64' || echo nevermind + echo '/c/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin' + ls -l '/c/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin' || echo nevermind + echo '/c/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/include' + ls -l '/c/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/include' || echo nevermind + echo '/c/ProgramData/Chocolatey/lib/rtools' + ls -l '/c/ProgramData/Chocolatey/lib/rtools' || echo nevermind + echo '/c/ProgramData/Chocolatey/lib/rtools/tools' + ls -l '/c/ProgramData/Chocolatey/lib/rtools/tools' || echo nevermind echo PATH="$PATH" ./configure --enable-debug --enable-static-exe --disable-flto make From d994a246bb1a539ae6400cd92cb67980bd0657d0 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 16:41:40 +0200 Subject: [PATCH 209/553] Analysis workflow, build openssl. --- .github/workflows/analysis_ports.yml | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 060623f96..82c26a26b 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -214,8 +214,24 @@ jobs: ls -l '/c/ProgramData/Chocolatey/lib/rtools' || echo nevermind echo '/c/ProgramData/Chocolatey/lib/rtools/tools' ls -l '/c/ProgramData/Chocolatey/lib/rtools/tools' || echo nevermind + echo '/c/Users/Default' + ls -l '/c/Users/Default' || echo nevermind echo PATH="$PATH" - ./configure --enable-debug --enable-static-exe --disable-flto + echo pwd + pwd + cd .. + echo 'ls ..' + ls + mkdir openssl + curl -L -k -s -S -o openssl-1.1.1j.tar.gz https://www.openssl.org/source/openssl-1.1.1j.tar.gz + tar xzf openssl-1.1.1j.tar.gz + cd openssl-1.1.1j + ./Configure no-shared no-asm -DOPENSSL_NO_CAPIENG mingw64 --prefix="/c/Users/Default/openssl" + make + make install_sw + cd .. + cd unbound + ./configure --enable-debug --enable-static-exe --disable-flto --with-ssl=/c/Users/Default/openssl make make test - name: test_android From 563b047273c690c54fbb001205bb6efe55344414 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 16:49:33 +0200 Subject: [PATCH 210/553] Analysis workflow, build openssl. --- .github/workflows/analysis_ports.yml | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 82c26a26b..fb7faa5ae 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -216,22 +216,36 @@ jobs: ls -l '/c/ProgramData/Chocolatey/lib/rtools/tools' || echo nevermind echo '/c/Users/Default' ls -l '/c/Users/Default' || echo nevermind + echo '/usr' + ls -l '/usr' || echo nevermind + echo '/usr/lib' + ls -l '/usr/lib' || echo nevermind + echo '/usr/share' + ls -l '/usr/share' || echo nevermind + echo '/c/Strawberry/perl' + ls -l '/c/Strawberry/perl' || echo nevermind + echo '/c/Strawberry/perl/lib' + ls -l '/c/Strawberry/perl/lib' || echo nevermind + echo '/c/Strawberry/perl/site' + ls -l '/c/Strawberry/perl/site' || echo nevermind + echo '/c/Strawberry/perl/share' + ls -l '/c/Strawberry/perl/share' || echo nevermind echo PATH="$PATH" - echo pwd - pwd + export unboundpath=`pwd` + echo unboundpath=${unboundpath} cd .. - echo 'ls ..' - ls + export prepath=`pwd` + echo prepath=${prepath} mkdir openssl curl -L -k -s -S -o openssl-1.1.1j.tar.gz https://www.openssl.org/source/openssl-1.1.1j.tar.gz tar xzf openssl-1.1.1j.tar.gz cd openssl-1.1.1j - ./Configure no-shared no-asm -DOPENSSL_NO_CAPIENG mingw64 --prefix="/c/Users/Default/openssl" + ./Configure no-shared no-asm -DOPENSSL_NO_CAPIENG mingw64 --prefix="/$prepath/openssl" make make install_sw cd .. cd unbound - ./configure --enable-debug --enable-static-exe --disable-flto --with-ssl=/c/Users/Default/openssl + ./configure --enable-debug --enable-static-exe --disable-flto --with-ssl=/$prepath/openssl make make test - name: test_android From bc271a2b14e229de0e4c86b2a76f0150558dfe55 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 16:55:52 +0200 Subject: [PATCH 211/553] Analysis workflow, fixup perl for openssl. --- .github/workflows/analysis_ports.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index fb7faa5ae..5de0178cc 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -228,8 +228,12 @@ jobs: ls -l '/c/Strawberry/perl/lib' || echo nevermind echo '/c/Strawberry/perl/site' ls -l '/c/Strawberry/perl/site' || echo nevermind - echo '/c/Strawberry/perl/share' - ls -l '/c/Strawberry/perl/share' || echo nevermind + echo '/c/Strawberry/perl/site/lib' + ls -l '/c/Strawberry/perl/site/lib' || echo nevermind + echo '/c/Strawberry/perl/vendor' + ls -l '/c/Strawberry/perl/vendor' || echo nevermind + echo PERLLIB="$PERLLIB" + echo PERL5LIB="$PERL5LIB" echo PATH="$PATH" export unboundpath=`pwd` echo unboundpath=${unboundpath} From 1c05aa22432af0bcac94d3d838584ff3ab38b433 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 16:59:24 +0200 Subject: [PATCH 212/553] Analysis workflow, fixup perl for openssl Configure. --- .github/workflows/analysis_ports.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 5de0178cc..e2402e103 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -232,8 +232,6 @@ jobs: ls -l '/c/Strawberry/perl/site/lib' || echo nevermind echo '/c/Strawberry/perl/vendor' ls -l '/c/Strawberry/perl/vendor' || echo nevermind - echo PERLLIB="$PERLLIB" - echo PERL5LIB="$PERL5LIB" echo PATH="$PATH" export unboundpath=`pwd` echo unboundpath=${unboundpath} @@ -244,6 +242,8 @@ jobs: curl -L -k -s -S -o openssl-1.1.1j.tar.gz https://www.openssl.org/source/openssl-1.1.1j.tar.gz tar xzf openssl-1.1.1j.tar.gz cd openssl-1.1.1j + export PERL5LIB="/c/Strawberry/perl/lib" + echo PERL5LIB="$PERL5LIB" ./Configure no-shared no-asm -DOPENSSL_NO_CAPIENG mingw64 --prefix="/$prepath/openssl" make make install_sw From 0b2dc96d317ceb8f877b1153759aa19c78af5b64 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 17:04:07 +0200 Subject: [PATCH 213/553] Analysis workflow, find perl. --- .github/workflows/analysis_ports.yml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index e2402e103..ec3ce781a 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -231,7 +231,12 @@ jobs: echo '/c/Strawberry/perl/site/lib' ls -l '/c/Strawberry/perl/site/lib' || echo nevermind echo '/c/Strawberry/perl/vendor' - ls -l '/c/Strawberry/perl/vendor' || echo nevermind + ls -l '/usr/lib/perl5' || echo nevermind + ls -l '/usr/lib/perl5' || echo nevermind + ls -l '/usr/share/perl5' || echo nevermind + ls -l '/usr/share/perl5' || echo nevermind + echo which perl + which perl echo PATH="$PATH" export unboundpath=`pwd` echo unboundpath=${unboundpath} @@ -242,7 +247,8 @@ jobs: curl -L -k -s -S -o openssl-1.1.1j.tar.gz https://www.openssl.org/source/openssl-1.1.1j.tar.gz tar xzf openssl-1.1.1j.tar.gz cd openssl-1.1.1j - export PERL5LIB="/c/Strawberry/perl/lib" + #export PERL5LIB="/c/Strawberry/perl/lib" + export PERL5LIB="/usr/share/perl5/lib:/usr/share/perl5/vendor:/usr/share/perl5/site" echo PERL5LIB="$PERL5LIB" ./Configure no-shared no-asm -DOPENSSL_NO_CAPIENG mingw64 --prefix="/$prepath/openssl" make From 4a099bb25ad27b90482019c21b06ffd80cb7dc42 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 17:08:13 +0200 Subject: [PATCH 214/553] Analysis workflow, use different perl --- .github/workflows/analysis_ports.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index ec3ce781a..07c2f9e70 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -224,6 +224,8 @@ jobs: ls -l '/usr/share' || echo nevermind echo '/c/Strawberry/perl' ls -l '/c/Strawberry/perl' || echo nevermind + echo '/c/Strawberry/perl/bin' + ls -l '/c/Strawberry/perl/bin' || echo nevermind echo '/c/Strawberry/perl/lib' ls -l '/c/Strawberry/perl/lib' || echo nevermind echo '/c/Strawberry/perl/site' @@ -248,8 +250,10 @@ jobs: tar xzf openssl-1.1.1j.tar.gz cd openssl-1.1.1j #export PERL5LIB="/c/Strawberry/perl/lib" - export PERL5LIB="/usr/share/perl5/lib:/usr/share/perl5/vendor:/usr/share/perl5/site" - echo PERL5LIB="$PERL5LIB" + #export PERL5LIB="/usr/share/perl5/lib:/usr/share/perl5/vendor:/usr/share/perl5/site" + #echo PERL5LIB="$PERL5LIB" + export PATH="/c/Strawberry/perl/bin:$PATH" + which perl ./Configure no-shared no-asm -DOPENSSL_NO_CAPIENG mingw64 --prefix="/$prepath/openssl" make make install_sw From 6822a48308b455d4a1dde5090c1989099033de71 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 17:12:34 +0200 Subject: [PATCH 215/553] Analysis workflow, find perl module. --- .github/workflows/analysis_ports.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 07c2f9e70..ebac658c5 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -232,11 +232,14 @@ jobs: ls -l '/c/Strawberry/perl/site' || echo nevermind echo '/c/Strawberry/perl/site/lib' ls -l '/c/Strawberry/perl/site/lib' || echo nevermind - echo '/c/Strawberry/perl/vendor' - ls -l '/usr/lib/perl5' || echo nevermind + echo '/usr/lib/perl5' ls -l '/usr/lib/perl5' || echo nevermind + echo '/usr/share/perl5' ls -l '/usr/share/perl5' || echo nevermind - ls -l '/usr/share/perl5' || echo nevermind + echo '/usr/share/perl5/vendor_perl' + ls -l '/usr/share/perl5/vendor_perl' || echo nevermind + echo '/usr/share/perl5/vendor_perl/Pod' + ls -l '/usr/share/perl5/vendor_perl/Pod' || echo nevermind echo which perl which perl echo PATH="$PATH" @@ -252,8 +255,6 @@ jobs: #export PERL5LIB="/c/Strawberry/perl/lib" #export PERL5LIB="/usr/share/perl5/lib:/usr/share/perl5/vendor:/usr/share/perl5/site" #echo PERL5LIB="$PERL5LIB" - export PATH="/c/Strawberry/perl/bin:$PATH" - which perl ./Configure no-shared no-asm -DOPENSSL_NO_CAPIENG mingw64 --prefix="/$prepath/openssl" make make install_sw From 385d87b543f2de8e0505ca5c4df497cf97195a11 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 17:23:51 +0200 Subject: [PATCH 216/553] Analysis workflow, install missing module. --- .github/workflows/analysis_ports.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index ebac658c5..352163b24 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -255,6 +255,10 @@ jobs: #export PERL5LIB="/c/Strawberry/perl/lib" #export PERL5LIB="/usr/share/perl5/lib:/usr/share/perl5/vendor:/usr/share/perl5/site" #echo PERL5LIB="$PERL5LIB" + echo "cpan" + cpan POD::Usage + echo "perl MCPAN" + perl -MCPAN -e "CPAN::Shell->force(qw(install POD::Usage));" ./Configure no-shared no-asm -DOPENSSL_NO_CAPIENG mingw64 --prefix="/$prepath/openssl" make make install_sw From 5d862e4b3aee2c737e7abae1838e52420a565389 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 17:26:10 +0200 Subject: [PATCH 217/553] Analysis workflow, perl to call cpan for it. --- .github/workflows/analysis_ports.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 352163b24..fa7369604 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -255,8 +255,8 @@ jobs: #export PERL5LIB="/c/Strawberry/perl/lib" #export PERL5LIB="/usr/share/perl5/lib:/usr/share/perl5/vendor:/usr/share/perl5/site" #echo PERL5LIB="$PERL5LIB" - echo "cpan" - cpan POD::Usage + #echo "cpan" + #cpan POD::Usage echo "perl MCPAN" perl -MCPAN -e "CPAN::Shell->force(qw(install POD::Usage));" ./Configure no-shared no-asm -DOPENSSL_NO_CAPIENG mingw64 --prefix="/$prepath/openssl" From 320e6ad462beda928ea25b24ec375d893d282bfd Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 17:36:48 +0200 Subject: [PATCH 218/553] Analysis workflow, use cpan to install perl module. --- .github/workflows/analysis_ports.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index fa7369604..26dc0d6d7 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -248,7 +248,11 @@ jobs: cd .. export prepath=`pwd` echo prepath=${prepath} + echo "curl cpanm" + curl -L https://cpanmin.us/ -o cpanm + perl cpanm POD::Usage mkdir openssl + echo "curl openssl" curl -L -k -s -S -o openssl-1.1.1j.tar.gz https://www.openssl.org/source/openssl-1.1.1j.tar.gz tar xzf openssl-1.1.1j.tar.gz cd openssl-1.1.1j @@ -257,8 +261,8 @@ jobs: #echo PERL5LIB="$PERL5LIB" #echo "cpan" #cpan POD::Usage - echo "perl MCPAN" - perl -MCPAN -e "CPAN::Shell->force(qw(install POD::Usage));" + #echo "perl MCPAN" + #perl -MCPAN -e "CPAN::Shell->force(qw(install POD::Usage));" ./Configure no-shared no-asm -DOPENSSL_NO_CAPIENG mingw64 --prefix="/$prepath/openssl" make make install_sw From db917945a3fb2624bded0b994e49df68dd60b815 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 17:39:53 +0200 Subject: [PATCH 219/553] Analysis workflow, fix spelling for Pod. --- .github/workflows/analysis_ports.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 26dc0d6d7..524b983d7 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -249,8 +249,9 @@ jobs: export prepath=`pwd` echo prepath=${prepath} echo "curl cpanm" - curl -L https://cpanmin.us/ -o cpanm - perl cpanm POD::Usage + curl -L -k -s -S -o cpanm https://cpanmin.us/ + echo "perl cpanm Pod::Usage" + perl cpanm Pod::Usage mkdir openssl echo "curl openssl" curl -L -k -s -S -o openssl-1.1.1j.tar.gz https://www.openssl.org/source/openssl-1.1.1j.tar.gz From 98e36cd158da9e10e5a2e460dc9c968fbcbcc749 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 17:42:25 +0200 Subject: [PATCH 220/553] Analysis workflow, install perl module. --- .github/workflows/analysis_ports.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 524b983d7..d34e8c26a 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -250,6 +250,8 @@ jobs: echo prepath=${prepath} echo "curl cpanm" curl -L -k -s -S -o cpanm https://cpanmin.us/ + echo "perl cpanm ExtUtils::Manifest" + perl cpanm ExtUtils::Manifest echo "perl cpanm Pod::Usage" perl cpanm Pod::Usage mkdir openssl From 877db8ca36f823475bdde3e8ef52eb93d17f2102 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 17:50:58 +0200 Subject: [PATCH 221/553] Analysis workflow, run from other shell. --- .github/workflows/analysis_ports.yml | 46 ++++++++++++++++++---------- 1 file changed, 29 insertions(+), 17 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index d34e8c26a..75aaa57e5 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -166,6 +166,20 @@ jobs: - uses: actions/checkout@v2 with: submodules: false + - name: pwsh_windows + if: ${{ matrix.test_windows == 'yes' }} + run: | + pwd + cd .. + mkdir openssl + echo "curl openssl" + curl -L -k -s -S -o openssl-1.1.1j.tar.gz https://www.openssl.org/source/openssl-1.1.1j.tar.gz + tar xzf openssl-1.1.1j.tar.gz + cd openssl-1.1.1j + ./Configure no-shared no-asm -DOPENSSL_NO_CAPIENG mingw64 --prefix="/d/a/unbound/openssl" + make + make install_sw + cd .. - name: test_windows if: ${{ matrix.test_windows == 'yes' }} shell: bash @@ -240,25 +254,23 @@ jobs: ls -l '/usr/share/perl5/vendor_perl' || echo nevermind echo '/usr/share/perl5/vendor_perl/Pod' ls -l '/usr/share/perl5/vendor_perl/Pod' || echo nevermind - echo which perl - which perl echo PATH="$PATH" export unboundpath=`pwd` echo unboundpath=${unboundpath} cd .. export prepath=`pwd` echo prepath=${prepath} - echo "curl cpanm" - curl -L -k -s -S -o cpanm https://cpanmin.us/ - echo "perl cpanm ExtUtils::Manifest" - perl cpanm ExtUtils::Manifest - echo "perl cpanm Pod::Usage" - perl cpanm Pod::Usage - mkdir openssl - echo "curl openssl" - curl -L -k -s -S -o openssl-1.1.1j.tar.gz https://www.openssl.org/source/openssl-1.1.1j.tar.gz - tar xzf openssl-1.1.1j.tar.gz - cd openssl-1.1.1j + #echo "curl cpanm" + #curl -L -k -s -S -o cpanm https://cpanmin.us/ + #echo "perl cpanm ExtUtils::Manifest" + #perl cpanm ExtUtils::Manifest + #echo "perl cpanm Pod::Usage" + #perl cpanm Pod::Usage + #mkdir openssl + #echo "curl openssl" + #curl -L -k -s -S -o openssl-1.1.1j.tar.gz https://www.openssl.org/source/openssl-1.1.1j.tar.gz + #tar xzf openssl-1.1.1j.tar.gz + #cd openssl-1.1.1j #export PERL5LIB="/c/Strawberry/perl/lib" #export PERL5LIB="/usr/share/perl5/lib:/usr/share/perl5/vendor:/usr/share/perl5/site" #echo PERL5LIB="$PERL5LIB" @@ -266,10 +278,10 @@ jobs: #cpan POD::Usage #echo "perl MCPAN" #perl -MCPAN -e "CPAN::Shell->force(qw(install POD::Usage));" - ./Configure no-shared no-asm -DOPENSSL_NO_CAPIENG mingw64 --prefix="/$prepath/openssl" - make - make install_sw - cd .. + #./Configure no-shared no-asm -DOPENSSL_NO_CAPIENG mingw64 --prefix="/$prepath/openssl" + #make + #make install_sw + #cd .. cd unbound ./configure --enable-debug --enable-static-exe --disable-flto --with-ssl=/$prepath/openssl make From 02516845d833bce79df8431f223769ee8a2136e7 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 17:53:51 +0200 Subject: [PATCH 222/553] Analysis workflow, use perl for Configure. --- .github/workflows/analysis_ports.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 75aaa57e5..b760e38b1 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -176,7 +176,7 @@ jobs: curl -L -k -s -S -o openssl-1.1.1j.tar.gz https://www.openssl.org/source/openssl-1.1.1j.tar.gz tar xzf openssl-1.1.1j.tar.gz cd openssl-1.1.1j - ./Configure no-shared no-asm -DOPENSSL_NO_CAPIENG mingw64 --prefix="/d/a/unbound/openssl" + perl Configure no-shared no-asm -DOPENSSL_NO_CAPIENG mingw64 --prefix="/d/a/unbound/openssl" make make install_sw cd .. From 533e1db30a72956803317fc9b90c612783d4471e Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 18:02:22 +0200 Subject: [PATCH 223/553] Analysis workflow, use installed openssl --- .github/workflows/analysis_ports.yml | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index b760e38b1..7858897a8 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -166,20 +166,6 @@ jobs: - uses: actions/checkout@v2 with: submodules: false - - name: pwsh_windows - if: ${{ matrix.test_windows == 'yes' }} - run: | - pwd - cd .. - mkdir openssl - echo "curl openssl" - curl -L -k -s -S -o openssl-1.1.1j.tar.gz https://www.openssl.org/source/openssl-1.1.1j.tar.gz - tar xzf openssl-1.1.1j.tar.gz - cd openssl-1.1.1j - perl Configure no-shared no-asm -DOPENSSL_NO_CAPIENG mingw64 --prefix="/d/a/unbound/openssl" - make - make install_sw - cd .. - name: test_windows if: ${{ matrix.test_windows == 'yes' }} shell: bash @@ -254,6 +240,10 @@ jobs: ls -l '/usr/share/perl5/vendor_perl' || echo nevermind echo '/usr/share/perl5/vendor_perl/Pod' ls -l '/usr/share/perl5/vendor_perl/Pod' || echo nevermind + echo '/c/Program Files/Common Files' + ls -l '/c/Program Files/Common Files' || echo nevermind + echo '/c/Program Files/Common Files/SSL' + ls -l '/c/Program Files/Common Files/SSL' || echo nevermind echo PATH="$PATH" export unboundpath=`pwd` echo unboundpath=${unboundpath} @@ -283,7 +273,7 @@ jobs: #make install_sw #cd .. cd unbound - ./configure --enable-debug --enable-static-exe --disable-flto --with-ssl=/$prepath/openssl + ./configure --enable-debug --enable-static-exe --disable-flto "--with-ssl=/c/Program Files/Common Files/SSL" make make test - name: test_android From 0b1221ef3c258cd7423f72a096668489d73577d4 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 18:14:35 +0200 Subject: [PATCH 224/553] Analysis workflow, use yum install. --- .github/workflows/analysis_ports.yml | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 7858897a8..e437f996a 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -250,6 +250,12 @@ jobs: cd .. export prepath=`pwd` echo prepath=${prepath} + echo "yum -y install perl-CPAN" + yum -y install perl-CPAN + echo "yum -y install Pod::Usage" + yum -y install Pod::Usage + echo "cpan Pod::Usage" + cpan Pod::Usage #echo "curl cpanm" #curl -L -k -s -S -o cpanm https://cpanmin.us/ #echo "perl cpanm ExtUtils::Manifest" @@ -257,10 +263,10 @@ jobs: #echo "perl cpanm Pod::Usage" #perl cpanm Pod::Usage #mkdir openssl - #echo "curl openssl" - #curl -L -k -s -S -o openssl-1.1.1j.tar.gz https://www.openssl.org/source/openssl-1.1.1j.tar.gz - #tar xzf openssl-1.1.1j.tar.gz - #cd openssl-1.1.1j + echo "curl openssl" + curl -L -k -s -S -o openssl-1.1.1j.tar.gz https://www.openssl.org/source/openssl-1.1.1j.tar.gz + tar xzf openssl-1.1.1j.tar.gz + cd openssl-1.1.1j #export PERL5LIB="/c/Strawberry/perl/lib" #export PERL5LIB="/usr/share/perl5/lib:/usr/share/perl5/vendor:/usr/share/perl5/site" #echo PERL5LIB="$PERL5LIB" @@ -268,10 +274,10 @@ jobs: #cpan POD::Usage #echo "perl MCPAN" #perl -MCPAN -e "CPAN::Shell->force(qw(install POD::Usage));" - #./Configure no-shared no-asm -DOPENSSL_NO_CAPIENG mingw64 --prefix="/$prepath/openssl" - #make - #make install_sw - #cd .. + ./Configure no-shared no-asm -DOPENSSL_NO_CAPIENG mingw64 --prefix="/$prepath/openssl" + make + make install_sw + cd .. cd unbound ./configure --enable-debug --enable-static-exe --disable-flto "--with-ssl=/c/Program Files/Common Files/SSL" make From 341198b5d70c242b26efebd60da6d3971dcea418 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 18:17:51 +0200 Subject: [PATCH 225/553] Analysis workflow, set up Configure. --- .github/workflows/analysis_ports.yml | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index e437f996a..98e1af7a3 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -250,19 +250,11 @@ jobs: cd .. export prepath=`pwd` echo prepath=${prepath} - echo "yum -y install perl-CPAN" - yum -y install perl-CPAN - echo "yum -y install Pod::Usage" - yum -y install Pod::Usage - echo "cpan Pod::Usage" - cpan Pod::Usage - #echo "curl cpanm" - #curl -L -k -s -S -o cpanm https://cpanmin.us/ - #echo "perl cpanm ExtUtils::Manifest" - #perl cpanm ExtUtils::Manifest - #echo "perl cpanm Pod::Usage" - #perl cpanm Pod::Usage - #mkdir openssl + echo "curl cpanm" + curl -L -k -s -S -o cpanm https://cpanmin.us/ + echo "perl cpanm Pod::Usage" + perl cpanm Pod::Usage || echo whatever + mkdir openssl echo "curl openssl" curl -L -k -s -S -o openssl-1.1.1j.tar.gz https://www.openssl.org/source/openssl-1.1.1j.tar.gz tar xzf openssl-1.1.1j.tar.gz From 086e86b7aa17066a9aea118fd710cfd14afab428 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 18:25:45 +0200 Subject: [PATCH 226/553] Analysis workflow, remove usage from Configure. --- .github/workflows/analysis_ports.yml | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 98e1af7a3..46f4bc506 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -250,10 +250,10 @@ jobs: cd .. export prepath=`pwd` echo prepath=${prepath} - echo "curl cpanm" - curl -L -k -s -S -o cpanm https://cpanmin.us/ - echo "perl cpanm Pod::Usage" - perl cpanm Pod::Usage || echo whatever + #echo "curl cpanm" + #curl -L -k -s -S -o cpanm https://cpanmin.us/ + #echo "perl cpanm Pod::Usage" + #perl cpanm Pod::Usage || echo whatever mkdir openssl echo "curl openssl" curl -L -k -s -S -o openssl-1.1.1j.tar.gz https://www.openssl.org/source/openssl-1.1.1j.tar.gz @@ -266,7 +266,10 @@ jobs: #cpan POD::Usage #echo "perl MCPAN" #perl -MCPAN -e "CPAN::Shell->force(qw(install POD::Usage));" - ./Configure no-shared no-asm -DOPENSSL_NO_CAPIENG mingw64 --prefix="/$prepath/openssl" + # remove pod::Usage because we do not need -help or -man output + # from the Configure script + sed -e 's/use Pod::Usage//' < Configure > Configure.fix + ./Configure.fix no-shared no-asm -DOPENSSL_NO_CAPIENG mingw64 --prefix="/$prepath/openssl" make make install_sw cd .. From a409f82f58876ac621fe13308529b7048a0d7c3d Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 18:40:14 +0200 Subject: [PATCH 227/553] Analysis workflow, show topdir from Makefile. --- .github/workflows/analysis_ports.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 46f4bc506..9f4f814a7 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -271,10 +271,13 @@ jobs: sed -e 's/use Pod::Usage//' < Configure > Configure.fix ./Configure.fix no-shared no-asm -DOPENSSL_NO_CAPIENG mingw64 --prefix="/$prepath/openssl" make + grep INSTALLTOP= Makefile + grep DESTDIR= Makefile + grep '\d\a' Makefile make install_sw cd .. cd unbound - ./configure --enable-debug --enable-static-exe --disable-flto "--with-ssl=/c/Program Files/Common Files/SSL" + ./configure --enable-debug --enable-static-exe --disable-flto "--with-ssl=/$prepath/openssl" make make test - name: test_android From 57055d2d89338311e56bf2eb23b162e5456fa2b8 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 18:45:42 +0200 Subject: [PATCH 228/553] Analysis workflow, build libs only. --- .github/workflows/analysis_ports.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 9f4f814a7..c409245a4 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -270,11 +270,15 @@ jobs: # from the Configure script sed -e 's/use Pod::Usage//' < Configure > Configure.fix ./Configure.fix no-shared no-asm -DOPENSSL_NO_CAPIENG mingw64 --prefix="/$prepath/openssl" - make + # make the libs only, build faster + #make + make build_libs grep INSTALLTOP= Makefile grep DESTDIR= Makefile grep '\d\a' Makefile - make install_sw + # install the includes and libs only, build faster + #make install_sw + make install_dev cd .. cd unbound ./configure --enable-debug --enable-static-exe --disable-flto "--with-ssl=/$prepath/openssl" From 3bc29af6492a905ead4f313cc3d9dd229ae6ab1b Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 18:59:14 +0200 Subject: [PATCH 229/553] Analysis workflow, fixup installtop. --- .github/workflows/analysis_ports.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index c409245a4..6a75959fe 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -269,13 +269,13 @@ jobs: # remove pod::Usage because we do not need -help or -man output # from the Configure script sed -e 's/use Pod::Usage//' < Configure > Configure.fix - ./Configure.fix no-shared no-asm -DOPENSSL_NO_CAPIENG mingw64 --prefix="/$prepath/openssl" + ./Configure.fix no-shared no-asm -DOPENSSL_NO_CAPIENG mingw64 --prefix="$prepath/openssl" # make the libs only, build faster #make make build_libs - grep INSTALLTOP= Makefile - grep DESTDIR= Makefile - grep '\d\a' Makefile + mv Makefile Makefile.orig + # fixup \\ in the installtop to /. + sed -e 's?^INSTALLTOP=.*$?INSTALLTOP='"$prepath"'/openssl?' < Makefile.orig > Makefile # install the includes and libs only, build faster #make install_sw make install_dev From 82e7f6f056ac5bc60abdf56438ab16309b83c8b3 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 19:35:12 +0200 Subject: [PATCH 230/553] Analysis workflow, Fixup spelling --- .github/workflows/analysis_ports.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 6a75959fe..e5ea5d875 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -269,19 +269,25 @@ jobs: # remove pod::Usage because we do not need -help or -man output # from the Configure script sed -e 's/use Pod::Usage//' < Configure > Configure.fix + echo "./Configure.fix no-shared no-asm -DOPENSSL_NO_CAPIENG mingw64 --prefix=\""$prepath/openssl\""" ./Configure.fix no-shared no-asm -DOPENSSL_NO_CAPIENG mingw64 --prefix="$prepath/openssl" # make the libs only, build faster + echo "make build_libs" #make make build_libs mv Makefile Makefile.orig # fixup \\ in the installtop to /. + echo "fixup INSTALLTOP" sed -e 's?^INSTALLTOP=.*$?INSTALLTOP='"$prepath"'/openssl?' < Makefile.orig > Makefile # install the includes and libs only, build faster + echo "make install_dev" #make install_sw make install_dev cd .. + echo "unbound" cd unbound - ./configure --enable-debug --enable-static-exe --disable-flto "--with-ssl=/$prepath/openssl" + echo "./configure --enable-debug --enable-static-exe --disable-flto \"--with-ssl=$prepath/openssl\"" + ./configure --enable-debug --enable-static-exe --disable-flto "--with-ssl=$prepath/openssl" || (cat config.log; exit 0) make make test - name: test_android From 994c095ed2746bb241e9a46b236b919f4c677de5 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 19:50:17 +0200 Subject: [PATCH 231/553] Analysis workflow, build libexpat. --- .github/workflows/analysis_ports.yml | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index e5ea5d875..30cb2dc5f 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -284,10 +284,22 @@ jobs: #make install_sw make install_dev cd .. + make expat + echo "curl expat" + curl -L -k -s -S -o expat-2.2.10.tar.gz https://github.com/libexpat/libexpat/releases/download/R_2_2_10/expat-2.2.10.tar.gz + tar xzf expat-2.2.10.tar.gz + cd expat-2.2.10 + echo "./configure --prefix=\"$prepath/expat\" --exec-prefix=\"$prepath/expat\" --bindir=\"$prepath/expat/bin\" --includedir=\"$prepath/expat/include\" --mandir=\"$prepath/expat/man\" --libdir=\"$prepath/expat/lib\"" + ./configure --prefix="$prepath/expat" --exec-prefix="$prepath/expat" --bindir="$prepath/expat/bin" --includedir="$prepath/expat/include" --mandir="$prepath/expat/man" --libdir="$prepath/expat/lib" + echo "make" + make + echo "make install" + make install + cd .. echo "unbound" cd unbound - echo "./configure --enable-debug --enable-static-exe --disable-flto \"--with-ssl=$prepath/openssl\"" - ./configure --enable-debug --enable-static-exe --disable-flto "--with-ssl=$prepath/openssl" || (cat config.log; exit 0) + echo "./configure --enable-debug --enable-static-exe --disable-flto \"--with-ssl=$prepath/openssl\" --with-libexpat=\"$prepath/expat\"" + ./configure --enable-debug --enable-static-exe --disable-flto "--with-ssl=$prepath/openssl" --with-libexpat="$prepath/expat" make make test - name: test_android From d94b3f9b78e4d33aaa375257031faf5366066473 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 19:57:29 +0200 Subject: [PATCH 232/553] Analysis workflow, fix mkdir. --- .github/workflows/analysis_ports.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 30cb2dc5f..5f9191b3b 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -284,7 +284,7 @@ jobs: #make install_sw make install_dev cd .. - make expat + mkdir expat echo "curl expat" curl -L -k -s -S -o expat-2.2.10.tar.gz https://github.com/libexpat/libexpat/releases/download/R_2_2_10/expat-2.2.10.tar.gz tar xzf expat-2.2.10.tar.gz From 201011057fd174e1caced62d596b67e1d7a4c637 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 20:13:33 +0200 Subject: [PATCH 233/553] Analysis workflow, provide SHELL. --- .github/workflows/analysis_ports.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 5f9191b3b..990d8594b 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -289,8 +289,8 @@ jobs: curl -L -k -s -S -o expat-2.2.10.tar.gz https://github.com/libexpat/libexpat/releases/download/R_2_2_10/expat-2.2.10.tar.gz tar xzf expat-2.2.10.tar.gz cd expat-2.2.10 - echo "./configure --prefix=\"$prepath/expat\" --exec-prefix=\"$prepath/expat\" --bindir=\"$prepath/expat/bin\" --includedir=\"$prepath/expat/include\" --mandir=\"$prepath/expat/man\" --libdir=\"$prepath/expat/lib\"" - ./configure --prefix="$prepath/expat" --exec-prefix="$prepath/expat" --bindir="$prepath/expat/bin" --includedir="$prepath/expat/include" --mandir="$prepath/expat/man" --libdir="$prepath/expat/lib" + echo "./configure SHELL=/usr/bin/sh --prefix=\"$prepath/expat\" --exec-prefix=\"$prepath/expat\" --bindir=\"$prepath/expat/bin\" --includedir=\"$prepath/expat/include\" --mandir=\"$prepath/expat/man\" --libdir=\"$prepath/expat/lib\"" + ./configure SHELL=/usr/bin/sh --prefix="$prepath/expat" --exec-prefix="$prepath/expat" --bindir="$prepath/expat/bin" --includedir="$prepath/expat/include" --mandir="$prepath/expat/man" --libdir="$prepath/expat/lib" echo "make" make echo "make install" From 6b84e303babe739e06382db1ead83960bf0b9360 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 20:25:12 +0200 Subject: [PATCH 234/553] Analysis workflow, fixup shell. --- .github/workflows/analysis_ports.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 990d8594b..feb017ed6 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -274,7 +274,7 @@ jobs: # make the libs only, build faster echo "make build_libs" #make - make build_libs + ###make build_libs mv Makefile Makefile.orig # fixup \\ in the installtop to /. echo "fixup INSTALLTOP" @@ -282,15 +282,15 @@ jobs: # install the includes and libs only, build faster echo "make install_dev" #make install_sw - make install_dev + ###make install_dev cd .. mkdir expat echo "curl expat" curl -L -k -s -S -o expat-2.2.10.tar.gz https://github.com/libexpat/libexpat/releases/download/R_2_2_10/expat-2.2.10.tar.gz tar xzf expat-2.2.10.tar.gz cd expat-2.2.10 - echo "./configure SHELL=/usr/bin/sh --prefix=\"$prepath/expat\" --exec-prefix=\"$prepath/expat\" --bindir=\"$prepath/expat/bin\" --includedir=\"$prepath/expat/include\" --mandir=\"$prepath/expat/man\" --libdir=\"$prepath/expat/lib\"" - ./configure SHELL=/usr/bin/sh --prefix="$prepath/expat" --exec-prefix="$prepath/expat" --bindir="$prepath/expat/bin" --includedir="$prepath/expat/include" --mandir="$prepath/expat/man" --libdir="$prepath/expat/lib" + echo "./configure SHELL=/usr/bin/sh.exe --prefix=\"$prepath/expat\" --exec-prefix=\"$prepath/expat\" --bindir=\"$prepath/expat/bin\" --includedir=\"$prepath/expat/include\" --mandir=\"$prepath/expat/man\" --libdir=\"$prepath/expat/lib\"" + ./configure SHELL=/usr/bin/sh.exe --prefix="$prepath/expat" --exec-prefix="$prepath/expat" --bindir="$prepath/expat/bin" --includedir="$prepath/expat/include" --mandir="$prepath/expat/man" --libdir="$prepath/expat/lib" echo "make" make echo "make install" From 547083ddbdd93831f8dbc9b208895551e5cba6cc Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 20:31:02 +0200 Subject: [PATCH 235/553] Analysis workflow, add shell. --- .github/workflows/analysis_ports.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index feb017ed6..1d81a7dfc 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -289,8 +289,8 @@ jobs: curl -L -k -s -S -o expat-2.2.10.tar.gz https://github.com/libexpat/libexpat/releases/download/R_2_2_10/expat-2.2.10.tar.gz tar xzf expat-2.2.10.tar.gz cd expat-2.2.10 - echo "./configure SHELL=/usr/bin/sh.exe --prefix=\"$prepath/expat\" --exec-prefix=\"$prepath/expat\" --bindir=\"$prepath/expat/bin\" --includedir=\"$prepath/expat/include\" --mandir=\"$prepath/expat/man\" --libdir=\"$prepath/expat/lib\"" - ./configure SHELL=/usr/bin/sh.exe --prefix="$prepath/expat" --exec-prefix="$prepath/expat" --bindir="$prepath/expat/bin" --includedir="$prepath/expat/include" --mandir="$prepath/expat/man" --libdir="$prepath/expat/lib" + echo "./configure SHELL=sh --prefix=\"$prepath/expat\" --exec-prefix=\"$prepath/expat\" --bindir=\"$prepath/expat/bin\" --includedir=\"$prepath/expat/include\" --mandir=\"$prepath/expat/man\" --libdir=\"$prepath/expat/lib\"" + ./configure SHELL=sh --prefix="$prepath/expat" --exec-prefix="$prepath/expat" --bindir="$prepath/expat/bin" --includedir="$prepath/expat/include" --mandir="$prepath/expat/man" --libdir="$prepath/expat/lib" echo "make" make echo "make install" From 80a3f416de4f6f0d29e20335eef9354fdb98056c Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 20:38:12 +0200 Subject: [PATCH 236/553] Analysis workflow, provide CONFIG_SHELL variable. --- .github/workflows/analysis_ports.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 1d81a7dfc..843c80538 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -289,8 +289,8 @@ jobs: curl -L -k -s -S -o expat-2.2.10.tar.gz https://github.com/libexpat/libexpat/releases/download/R_2_2_10/expat-2.2.10.tar.gz tar xzf expat-2.2.10.tar.gz cd expat-2.2.10 - echo "./configure SHELL=sh --prefix=\"$prepath/expat\" --exec-prefix=\"$prepath/expat\" --bindir=\"$prepath/expat/bin\" --includedir=\"$prepath/expat/include\" --mandir=\"$prepath/expat/man\" --libdir=\"$prepath/expat/lib\"" - ./configure SHELL=sh --prefix="$prepath/expat" --exec-prefix="$prepath/expat" --bindir="$prepath/expat/bin" --includedir="$prepath/expat/include" --mandir="$prepath/expat/man" --libdir="$prepath/expat/lib" + echo "./configure CONFIG_SHELL=/usr/bin/sh --prefix=\"$prepath/expat\" --exec-prefix=\"$prepath/expat\" --bindir=\"$prepath/expat/bin\" --includedir=\"$prepath/expat/include\" --mandir=\"$prepath/expat/man\" --libdir=\"$prepath/expat/lib\"" + ./configure CONFIG_SHELL=/usr/bin/sh --prefix="$prepath/expat" --exec-prefix="$prepath/expat" --bindir="$prepath/expat/bin" --includedir="$prepath/expat/include" --mandir="$prepath/expat/man" --libdir="$prepath/expat/lib" echo "make" make echo "make install" From e249ca39eddfe7187adb537a8dc9b4be17497531 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 20:42:32 +0200 Subject: [PATCH 237/553] Analysis workflow, fix env variable. --- .github/workflows/analysis_ports.yml | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 843c80538..4e109d58c 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -289,8 +289,15 @@ jobs: curl -L -k -s -S -o expat-2.2.10.tar.gz https://github.com/libexpat/libexpat/releases/download/R_2_2_10/expat-2.2.10.tar.gz tar xzf expat-2.2.10.tar.gz cd expat-2.2.10 - echo "./configure CONFIG_SHELL=/usr/bin/sh --prefix=\"$prepath/expat\" --exec-prefix=\"$prepath/expat\" --bindir=\"$prepath/expat/bin\" --includedir=\"$prepath/expat/include\" --mandir=\"$prepath/expat/man\" --libdir=\"$prepath/expat/lib\"" - ./configure CONFIG_SHELL=/usr/bin/sh --prefix="$prepath/expat" --exec-prefix="$prepath/expat" --bindir="$prepath/expat/bin" --includedir="$prepath/expat/include" --mandir="$prepath/expat/man" --libdir="$prepath/expat/lib" + echo "SHELL=${SHELL}" + ls /bin/sh || echo whatever + ls /usr/bin/sh || echo whatever + export CONFIG_SHELL=/usr/bin/sh + echo "CONFIG_SHELL=${CONFIG_SHELL}" + export SHELL=/usr/bin/sh + echo "SHELL=${SHELL}" + echo "./configure --prefix=\"$prepath/expat\" --exec-prefix=\"$prepath/expat\" --bindir=\"$prepath/expat/bin\" --includedir=\"$prepath/expat/include\" --mandir=\"$prepath/expat/man\" --libdir=\"$prepath/expat/lib\"" + ./configure --prefix="$prepath/expat" --exec-prefix="$prepath/expat" --bindir="$prepath/expat/bin" --includedir="$prepath/expat/include" --mandir="$prepath/expat/man" --libdir="$prepath/expat/lib" echo "make" make echo "make install" From 57f4047bb5ae98e0ba32c281bfcd61ff98327ab3 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 20:51:45 +0200 Subject: [PATCH 238/553] Analysis workflow, fixup shell. --- .github/workflows/analysis_ports.yml | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 4e109d58c..9dc4cc47d 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -289,15 +289,11 @@ jobs: curl -L -k -s -S -o expat-2.2.10.tar.gz https://github.com/libexpat/libexpat/releases/download/R_2_2_10/expat-2.2.10.tar.gz tar xzf expat-2.2.10.tar.gz cd expat-2.2.10 - echo "SHELL=${SHELL}" - ls /bin/sh || echo whatever - ls /usr/bin/sh || echo whatever - export CONFIG_SHELL=/usr/bin/sh - echo "CONFIG_SHELL=${CONFIG_SHELL}" - export SHELL=/usr/bin/sh - echo "SHELL=${SHELL}" - echo "./configure --prefix=\"$prepath/expat\" --exec-prefix=\"$prepath/expat\" --bindir=\"$prepath/expat/bin\" --includedir=\"$prepath/expat/include\" --mandir=\"$prepath/expat/man\" --libdir=\"$prepath/expat/lib\"" - ./configure --prefix="$prepath/expat" --exec-prefix="$prepath/expat" --bindir="$prepath/expat/bin" --includedir="$prepath/expat/include" --mandir="$prepath/expat/man" --libdir="$prepath/expat/lib" + echo "./configure SHELL=/usr/bin/bash CONFIG_SHELL=/usr/bin/bash --prefix=\"$prepath/expat\" --exec-prefix=\"$prepath/expat\" --bindir=\"$prepath/expat/bin\" --includedir=\"$prepath/expat/include\" --mandir=\"$prepath/expat/man\" --libdir=\"$prepath/expat/lib\"" + ./configure SHELL=/usr/bin/bash CONFIG_SHELL=/usr/bin/bash --prefix="$prepath/expat" --exec-prefix="$prepath/expat" --bindir="$prepath/expat/bin" --includedir="$prepath/expat/include" --mandir="$prepath/expat/man" --libdir="$prepath/expat/lib" + mv Makefile Makefile.orig + # fixup shell from space in pathname + sed -e 's?^SHELL=.*$?SHELL=/usr/bin/sh?' < Makefile.orig > Makefile echo "make" make echo "make install" From 536e0e2125f5eef3f09037c9989831fd13689229 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 20:55:50 +0200 Subject: [PATCH 239/553] Analysis workflow, also fix other makefiles. --- .github/workflows/analysis_ports.yml | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 9dc4cc47d..f5f3d8baf 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -291,9 +291,19 @@ jobs: cd expat-2.2.10 echo "./configure SHELL=/usr/bin/bash CONFIG_SHELL=/usr/bin/bash --prefix=\"$prepath/expat\" --exec-prefix=\"$prepath/expat\" --bindir=\"$prepath/expat/bin\" --includedir=\"$prepath/expat/include\" --mandir=\"$prepath/expat/man\" --libdir=\"$prepath/expat/lib\"" ./configure SHELL=/usr/bin/bash CONFIG_SHELL=/usr/bin/bash --prefix="$prepath/expat" --exec-prefix="$prepath/expat" --bindir="$prepath/expat/bin" --includedir="$prepath/expat/include" --mandir="$prepath/expat/man" --libdir="$prepath/expat/lib" - mv Makefile Makefile.orig # fixup shell from space in pathname + mv Makefile Makefile.orig sed -e 's?^SHELL=.*$?SHELL=/usr/bin/sh?' < Makefile.orig > Makefile + mv lib/Makefile lib/Makefile.orig + sed -e 's?^SHELL=.*$?SHELL=/usr/bin/sh?' < lib/Makefile.orig > lib/Makefile + mv doc/Makefile doc/Makefile.orig + sed -e 's?^SHELL=.*$?SHELL=/usr/bin/sh?' < doc/Makefile.orig > doc/Makefile + mv examples/Makefile examples/Makefile.orig + sed -e 's?^SHELL=.*$?SHELL=/usr/bin/sh?' < examples/Makefile.orig > examples/Makefile + mv tests/Makefile tests/Makefile.orig + sed -e 's?^SHELL=.*$?SHELL=/usr/bin/sh?' < tests/Makefile.orig > tests/Makefile + mv xmlwf/Makefile xmlwf/Makefile.orig + sed -e 's?^SHELL=.*$?SHELL=/usr/bin/sh?' < xmlwf/Makefile.orig > xmlwf/Makefile echo "make" make echo "make install" From 4fdb6d85ebd14c55ab21230c4ae804553eace9bf Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 21:00:52 +0200 Subject: [PATCH 240/553] Analysis workflow, fix shell substitution. --- .github/workflows/analysis_ports.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index f5f3d8baf..f89dc13cb 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -293,17 +293,17 @@ jobs: ./configure SHELL=/usr/bin/bash CONFIG_SHELL=/usr/bin/bash --prefix="$prepath/expat" --exec-prefix="$prepath/expat" --bindir="$prepath/expat/bin" --includedir="$prepath/expat/include" --mandir="$prepath/expat/man" --libdir="$prepath/expat/lib" # fixup shell from space in pathname mv Makefile Makefile.orig - sed -e 's?^SHELL=.*$?SHELL=/usr/bin/sh?' < Makefile.orig > Makefile + sed -e 's?^SHELL =.*$?SHELL=/usr/bin/sh?' < Makefile.orig > Makefile mv lib/Makefile lib/Makefile.orig - sed -e 's?^SHELL=.*$?SHELL=/usr/bin/sh?' < lib/Makefile.orig > lib/Makefile + sed -e 's?^SHELL =.*$?SHELL=/usr/bin/sh?' < lib/Makefile.orig > lib/Makefile mv doc/Makefile doc/Makefile.orig - sed -e 's?^SHELL=.*$?SHELL=/usr/bin/sh?' < doc/Makefile.orig > doc/Makefile + sed -e 's?^SHELL =.*$?SHELL=/usr/bin/sh?' < doc/Makefile.orig > doc/Makefile mv examples/Makefile examples/Makefile.orig - sed -e 's?^SHELL=.*$?SHELL=/usr/bin/sh?' < examples/Makefile.orig > examples/Makefile + sed -e 's?^SHELL =.*$?SHELL=/usr/bin/sh?' < examples/Makefile.orig > examples/Makefile mv tests/Makefile tests/Makefile.orig - sed -e 's?^SHELL=.*$?SHELL=/usr/bin/sh?' < tests/Makefile.orig > tests/Makefile + sed -e 's?^SHELL =.*$?SHELL=/usr/bin/sh?' < tests/Makefile.orig > tests/Makefile mv xmlwf/Makefile xmlwf/Makefile.orig - sed -e 's?^SHELL=.*$?SHELL=/usr/bin/sh?' < xmlwf/Makefile.orig > xmlwf/Makefile + sed -e 's?^SHELL =.*$?SHELL=/usr/bin/sh?' < xmlwf/Makefile.orig > xmlwf/Makefile echo "make" make echo "make install" From 43f542945856051855d34f2f15fca1d36734931f Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 21:09:25 +0200 Subject: [PATCH 241/553] Analysis workflow, remove program files dir. --- .github/workflows/analysis_ports.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index f89dc13cb..39c187cd2 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -293,17 +293,17 @@ jobs: ./configure SHELL=/usr/bin/bash CONFIG_SHELL=/usr/bin/bash --prefix="$prepath/expat" --exec-prefix="$prepath/expat" --bindir="$prepath/expat/bin" --includedir="$prepath/expat/include" --mandir="$prepath/expat/man" --libdir="$prepath/expat/lib" # fixup shell from space in pathname mv Makefile Makefile.orig - sed -e 's?^SHELL =.*$?SHELL=/usr/bin/sh?' < Makefile.orig > Makefile + sed -e 's?C:/Program Files/Git/usr/bin/sh.exe?/usr/bin/sh?g' < Makefile.orig > Makefile mv lib/Makefile lib/Makefile.orig - sed -e 's?^SHELL =.*$?SHELL=/usr/bin/sh?' < lib/Makefile.orig > lib/Makefile + sed -e 's?C:/Program Files/Git/usr/bin/sh.exe?/usr/bin/sh?g' < lib/Makefile.orig > lib/Makefile mv doc/Makefile doc/Makefile.orig - sed -e 's?^SHELL =.*$?SHELL=/usr/bin/sh?' < doc/Makefile.orig > doc/Makefile + sed -e 's?C:/Program Files/Git/usr/bin/sh.exe?/usr/bin/sh?g' < doc/Makefile.orig > doc/Makefile mv examples/Makefile examples/Makefile.orig - sed -e 's?^SHELL =.*$?SHELL=/usr/bin/sh?' < examples/Makefile.orig > examples/Makefile + sed -e 's?C:/Program Files/Git/usr/bin/sh.exe?/usr/bin/sh?g' < examples/Makefile.orig > examples/Makefile mv tests/Makefile tests/Makefile.orig - sed -e 's?^SHELL =.*$?SHELL=/usr/bin/sh?' < tests/Makefile.orig > tests/Makefile + sed -e 's?C:/Program Files/Git/usr/bin/sh.exe?/usr/bin/sh?g' < tests/Makefile.orig > tests/Makefile mv xmlwf/Makefile xmlwf/Makefile.orig - sed -e 's?^SHELL =.*$?SHELL=/usr/bin/sh?' < xmlwf/Makefile.orig > xmlwf/Makefile + sed -e 's?C:/Program Files/Git/usr/bin/sh.exe?/usr/bin/sh?g' < xmlwf/Makefile.orig > xmlwf/Makefile echo "make" make echo "make install" From f963fc51d44d886e31c3a2763aea6d351160770f Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 21:16:20 +0200 Subject: [PATCH 242/553] Analysis workflow, remove SHELL setting because make mangles it. --- .github/workflows/analysis_ports.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 39c187cd2..a32344089 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -293,17 +293,17 @@ jobs: ./configure SHELL=/usr/bin/bash CONFIG_SHELL=/usr/bin/bash --prefix="$prepath/expat" --exec-prefix="$prepath/expat" --bindir="$prepath/expat/bin" --includedir="$prepath/expat/include" --mandir="$prepath/expat/man" --libdir="$prepath/expat/lib" # fixup shell from space in pathname mv Makefile Makefile.orig - sed -e 's?C:/Program Files/Git/usr/bin/sh.exe?/usr/bin/sh?g' < Makefile.orig > Makefile + sed -e 's?^SHELL =.*$??' < Makefile.orig > Makefile mv lib/Makefile lib/Makefile.orig - sed -e 's?C:/Program Files/Git/usr/bin/sh.exe?/usr/bin/sh?g' < lib/Makefile.orig > lib/Makefile + sed -e 's?^SHELL =.*$??' < lib/Makefile.orig > lib/Makefile mv doc/Makefile doc/Makefile.orig - sed -e 's?C:/Program Files/Git/usr/bin/sh.exe?/usr/bin/sh?g' < doc/Makefile.orig > doc/Makefile + sed -e 's?^SHELL =.*$??' < doc/Makefile.orig > doc/Makefile mv examples/Makefile examples/Makefile.orig - sed -e 's?C:/Program Files/Git/usr/bin/sh.exe?/usr/bin/sh?g' < examples/Makefile.orig > examples/Makefile + sed -e 's?^SHELL =.*$??' < examples/Makefile.orig > examples/Makefile mv tests/Makefile tests/Makefile.orig - sed -e 's?C:/Program Files/Git/usr/bin/sh.exe?/usr/bin/sh?g' < tests/Makefile.orig > tests/Makefile + sed -e 's?^SHELL =.*$??' < tests/Makefile.orig > tests/Makefile mv xmlwf/Makefile xmlwf/Makefile.orig - sed -e 's?C:/Program Files/Git/usr/bin/sh.exe?/usr/bin/sh?g' < xmlwf/Makefile.orig > xmlwf/Makefile + sed -e 's?^SHELL =.*$??' < xmlwf/Makefile.orig > xmlwf/Makefile echo "make" make echo "make install" From b4c0988cb9a7bb3056c9ce87a6f7fd3b63e09e5b Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 21:23:12 +0200 Subject: [PATCH 243/553] Analysis workflow, set MAKESHELL. --- .github/workflows/analysis_ports.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index a32344089..68e09ffef 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -304,6 +304,7 @@ jobs: sed -e 's?^SHELL =.*$??' < tests/Makefile.orig > tests/Makefile mv xmlwf/Makefile xmlwf/Makefile.orig sed -e 's?^SHELL =.*$??' < xmlwf/Makefile.orig > xmlwf/Makefile + export MAKESHELL="/bin/sh" echo "make" make echo "make install" From abc82f5d876b8f5eec803a2a0cfb88336d4f9b51 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 21:26:16 +0200 Subject: [PATCH 244/553] Analysis workflow, echo wrong directories. --- .github/workflows/analysis_ports.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 68e09ffef..4e2c6c4d1 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -292,6 +292,10 @@ jobs: echo "./configure SHELL=/usr/bin/bash CONFIG_SHELL=/usr/bin/bash --prefix=\"$prepath/expat\" --exec-prefix=\"$prepath/expat\" --bindir=\"$prepath/expat/bin\" --includedir=\"$prepath/expat/include\" --mandir=\"$prepath/expat/man\" --libdir=\"$prepath/expat/lib\"" ./configure SHELL=/usr/bin/bash CONFIG_SHELL=/usr/bin/bash --prefix="$prepath/expat" --exec-prefix="$prepath/expat" --bindir="$prepath/expat/bin" --includedir="$prepath/expat/include" --mandir="$prepath/expat/man" --libdir="$prepath/expat/lib" # fixup shell from space in pathname + grep 'SHELL =' Makefile | cat + grep 'Files' Makefile | cat + grep 'SHELL =' lib/Makefile | cat + grep 'Files' lib/Makefile | cat mv Makefile Makefile.orig sed -e 's?^SHELL =.*$??' < Makefile.orig > Makefile mv lib/Makefile lib/Makefile.orig From a383416f80a91f87adcfba4f01d112dc078b05e5 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 21:29:41 +0200 Subject: [PATCH 245/553] Analysis workflow, fixup with type. --- .github/workflows/analysis_ports.yml | 31 +++++++++++++--------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 4e2c6c4d1..5ef512c0d 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -289,26 +289,23 @@ jobs: curl -L -k -s -S -o expat-2.2.10.tar.gz https://github.com/libexpat/libexpat/releases/download/R_2_2_10/expat-2.2.10.tar.gz tar xzf expat-2.2.10.tar.gz cd expat-2.2.10 - echo "./configure SHELL=/usr/bin/bash CONFIG_SHELL=/usr/bin/bash --prefix=\"$prepath/expat\" --exec-prefix=\"$prepath/expat\" --bindir=\"$prepath/expat/bin\" --includedir=\"$prepath/expat/include\" --mandir=\"$prepath/expat/man\" --libdir=\"$prepath/expat/lib\"" + echo "./configure SHELL=/usr/bin/bash.exe CONFIG_SHELL=/usr/bin/bash.exe --prefix=\"$prepath/expat\" --exec-prefix=\"$prepath/expat\" --bindir=\"$prepath/expat/bin\" --includedir=\"$prepath/expat/include\" --mandir=\"$prepath/expat/man\" --libdir=\"$prepath/expat/lib\"" ./configure SHELL=/usr/bin/bash CONFIG_SHELL=/usr/bin/bash --prefix="$prepath/expat" --exec-prefix="$prepath/expat" --bindir="$prepath/expat/bin" --includedir="$prepath/expat/include" --mandir="$prepath/expat/man" --libdir="$prepath/expat/lib" # fixup shell from space in pathname grep 'SHELL =' Makefile | cat - grep 'Files' Makefile | cat - grep 'SHELL =' lib/Makefile | cat - grep 'Files' lib/Makefile | cat - mv Makefile Makefile.orig - sed -e 's?^SHELL =.*$??' < Makefile.orig > Makefile - mv lib/Makefile lib/Makefile.orig - sed -e 's?^SHELL =.*$??' < lib/Makefile.orig > lib/Makefile - mv doc/Makefile doc/Makefile.orig - sed -e 's?^SHELL =.*$??' < doc/Makefile.orig > doc/Makefile - mv examples/Makefile examples/Makefile.orig - sed -e 's?^SHELL =.*$??' < examples/Makefile.orig > examples/Makefile - mv tests/Makefile tests/Makefile.orig - sed -e 's?^SHELL =.*$??' < tests/Makefile.orig > tests/Makefile - mv xmlwf/Makefile xmlwf/Makefile.orig - sed -e 's?^SHELL =.*$??' < xmlwf/Makefile.orig > xmlwf/Makefile - export MAKESHELL="/bin/sh" + #mv Makefile Makefile.orig + #sed -e 's?^SHELL =.*$??' < Makefile.orig > Makefile + #mv lib/Makefile lib/Makefile.orig + #sed -e 's?^SHELL =.*$??' < lib/Makefile.orig > lib/Makefile + #mv doc/Makefile doc/Makefile.orig + #sed -e 's?^SHELL =.*$??' < doc/Makefile.orig > doc/Makefile + #mv examples/Makefile examples/Makefile.orig + #sed -e 's?^SHELL =.*$??' < examples/Makefile.orig > examples/Makefile + #mv tests/Makefile tests/Makefile.orig + #sed -e 's?^SHELL =.*$??' < tests/Makefile.orig > tests/Makefile + #mv xmlwf/Makefile xmlwf/Makefile.orig + #sed -e 's?^SHELL =.*$??' < xmlwf/Makefile.orig > xmlwf/Makefile + #export MAKESHELL="/bin/sh" echo "make" make echo "make install" From b468f708cf6363ec3327a92c7aab583c45f48298 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 21:33:39 +0200 Subject: [PATCH 246/553] Analysis workflow, fixup shell. --- .github/workflows/analysis_ports.yml | 29 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 5ef512c0d..307187b16 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -289,23 +289,22 @@ jobs: curl -L -k -s -S -o expat-2.2.10.tar.gz https://github.com/libexpat/libexpat/releases/download/R_2_2_10/expat-2.2.10.tar.gz tar xzf expat-2.2.10.tar.gz cd expat-2.2.10 - echo "./configure SHELL=/usr/bin/bash.exe CONFIG_SHELL=/usr/bin/bash.exe --prefix=\"$prepath/expat\" --exec-prefix=\"$prepath/expat\" --bindir=\"$prepath/expat/bin\" --includedir=\"$prepath/expat/include\" --mandir=\"$prepath/expat/man\" --libdir=\"$prepath/expat/lib\"" + echo "./configure SHELL=/usr/bin/bash CONFIG_SHELL=/usr/bin/bash --prefix=\"$prepath/expat\" --exec-prefix=\"$prepath/expat\" --bindir=\"$prepath/expat/bin\" --includedir=\"$prepath/expat/include\" --mandir=\"$prepath/expat/man\" --libdir=\"$prepath/expat/lib\"" ./configure SHELL=/usr/bin/bash CONFIG_SHELL=/usr/bin/bash --prefix="$prepath/expat" --exec-prefix="$prepath/expat" --bindir="$prepath/expat/bin" --includedir="$prepath/expat/include" --mandir="$prepath/expat/man" --libdir="$prepath/expat/lib" - # fixup shell from space in pathname + # fixup SHELL is treated specially, but SHELZZ is not by make. grep 'SHELL =' Makefile | cat - #mv Makefile Makefile.orig - #sed -e 's?^SHELL =.*$??' < Makefile.orig > Makefile - #mv lib/Makefile lib/Makefile.orig - #sed -e 's?^SHELL =.*$??' < lib/Makefile.orig > lib/Makefile - #mv doc/Makefile doc/Makefile.orig - #sed -e 's?^SHELL =.*$??' < doc/Makefile.orig > doc/Makefile - #mv examples/Makefile examples/Makefile.orig - #sed -e 's?^SHELL =.*$??' < examples/Makefile.orig > examples/Makefile - #mv tests/Makefile tests/Makefile.orig - #sed -e 's?^SHELL =.*$??' < tests/Makefile.orig > tests/Makefile - #mv xmlwf/Makefile xmlwf/Makefile.orig - #sed -e 's?^SHELL =.*$??' < xmlwf/Makefile.orig > xmlwf/Makefile - #export MAKESHELL="/bin/sh" + mv Makefile Makefile.orig + sed -e 's/SHELL/SHELLZZ/g' < Makefile.orig > Makefile + mv lib/Makefile lib/Makefile.orig + sed -e 's/SHELL/SHELLZZ/g' < lib/Makefile.orig > lib/Makefile + mv doc/Makefile doc/Makefile.orig + sed -e 's/SHELL/SHELLZZ/g' < doc/Makefile.orig > doc/Makefile + mv examples/Makefile examples/Makefile.orig + sed -e 's/SHELL/SHELLZZ/g' < examples/Makefile.orig > examples/Makefile + mv tests/Makefile tests/Makefile.orig + sed -e 's/SHELL/SHELLZZ/g' < tests/Makefile.orig > tests/Makefile + mv xmlwf/Makefile xmlwf/Makefile.orig + sed -e 's/SHELL/SHELLZZ/g' < xmlwf/Makefile.orig > xmlwf/Makefile echo "make" make echo "make install" From 26cdcc899a597b168388087c9767d9fbaeb81a5f Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 21:37:33 +0200 Subject: [PATCH 247/553] Analysis workflow, enable ssl compile. --- .github/workflows/analysis_ports.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 307187b16..caf6cf63f 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -274,7 +274,7 @@ jobs: # make the libs only, build faster echo "make build_libs" #make - ###make build_libs + make build_libs mv Makefile Makefile.orig # fixup \\ in the installtop to /. echo "fixup INSTALLTOP" @@ -282,7 +282,7 @@ jobs: # install the includes and libs only, build faster echo "make install_dev" #make install_sw - ###make install_dev + make install_dev cd .. mkdir expat echo "curl expat" @@ -292,7 +292,6 @@ jobs: echo "./configure SHELL=/usr/bin/bash CONFIG_SHELL=/usr/bin/bash --prefix=\"$prepath/expat\" --exec-prefix=\"$prepath/expat\" --bindir=\"$prepath/expat/bin\" --includedir=\"$prepath/expat/include\" --mandir=\"$prepath/expat/man\" --libdir=\"$prepath/expat/lib\"" ./configure SHELL=/usr/bin/bash CONFIG_SHELL=/usr/bin/bash --prefix="$prepath/expat" --exec-prefix="$prepath/expat" --bindir="$prepath/expat/bin" --includedir="$prepath/expat/include" --mandir="$prepath/expat/man" --libdir="$prepath/expat/lib" # fixup SHELL is treated specially, but SHELZZ is not by make. - grep 'SHELL =' Makefile | cat mv Makefile Makefile.orig sed -e 's/SHELL/SHELLZZ/g' < Makefile.orig > Makefile mv lib/Makefile lib/Makefile.orig From db5bb6270b3a49605c79210c2295193b945af347 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 21:55:46 +0200 Subject: [PATCH 248/553] Fixup unit auth test for windows port. --- testcode/unitauth.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/testcode/unitauth.c b/testcode/unitauth.c index 184573ab6..d193526b8 100644 --- a/testcode/unitauth.c +++ b/testcode/unitauth.c @@ -468,8 +468,13 @@ tmpfilecleanup(void) int i; char buf[256]; for(i=0; i Date: Thu, 24 Jun 2021 22:11:42 +0200 Subject: [PATCH 249/553] Fixup ctime test. --- testcode/replay.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/testcode/replay.c b/testcode/replay.c index 84ce50441..cbd22f9c7 100644 --- a/testcode/replay.c +++ b/testcode/replay.c @@ -1000,6 +1000,7 @@ void testbound_selftest(void) tb_assert( v && strcmp(v, "1ww2ww3") == 0); free(v); +#ifndef USE_WINSOCK v = macro_process(store, NULL, "it is ${ctime 123456}"); tb_assert( v && strcmp(v, "it is Fri Jan 2 10:17:36 1970") == 0); free(v); @@ -1013,6 +1014,7 @@ void testbound_selftest(void) v = macro_process(store, NULL, "it is ${ctime $t1}"); tb_assert( v && strcmp(v, "it is Fri Jan 2 10:17:36 1970") == 0); free(v); +#endif /* WINSOCK */ r = macro_assign(store, "x", "1"); tb_assert(r); From 56733f1ba0c21dc451a4047bfe75927ee4ff8d69 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 22:28:07 +0200 Subject: [PATCH 250/553] Analysis workflow, output testbound results. --- .github/workflows/analysis_ports.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index caf6cf63f..5dafcfb7d 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -314,7 +314,7 @@ jobs: echo "./configure --enable-debug --enable-static-exe --disable-flto \"--with-ssl=$prepath/openssl\" --with-libexpat=\"$prepath/expat\"" ./configure --enable-debug --enable-static-exe --disable-flto "--with-ssl=$prepath/openssl" --with-libexpat="$prepath/expat" make - make test + make test || ./testbound.exe -p testdata/acl.rpl -o -vvvv - name: test_android if: ${{ matrix.test_android == 'yes' }} env: From e24c78efd64fbcbbd362756a0d54b0d610327c02 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 24 Jun 2021 22:57:12 +0200 Subject: [PATCH 251/553] Analysis workflow, remove debug output, strip more whitespace off ADDRESS lines in testbound range. --- .github/workflows/analysis_ports.yml | 84 +--------------------------- testcode/replay.c | 3 +- 2 files changed, 2 insertions(+), 85 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 5dafcfb7d..01169c90a 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -170,81 +170,6 @@ jobs: if: ${{ matrix.test_windows == 'yes' }} shell: bash run: | - echo 'c:' - ls -l 'c:\' || echo nevermind - echo 'Program Files' - ls -l 'c:\Program Files' || echo nevermind - echo 'Program Files (x86)' - ls -l 'c:\Program Files (x86)' || echo nevermind - echo '/c/Program Files/OpenSSL' - ls -l '/c/Program Files/OpenSSL' || echo nevermind - echo '/' - ls -l '/' || echo nevermind - echo '/mingw64' - ls -l '/mingw64' || echo nevermind - echo '/mingw64/bin' - ls -l '/mingw64/bin' || echo nevermind - echo '/c/Users' - ls -l '/c/Users' || echo nevermind - echo '/mingw64/ssl' - ls -l '/mingw64/ssl' || echo nevermind - echo '/c/ProgramData/Chocolatey' - ls -l '/c/ProgramData/Chocolatey' || echo nevermind - echo '/c/ProgramData/Chocolatey/tools' - ls -l '/c/ProgramData/Chocolatey/tools' || echo nevermind - echo '/c/ProgramData/Chocolatey/lib' - ls -l '/c/ProgramData/Chocolatey/lib' || echo nevermind - echo '/c/ProgramData/Chocolatey/lib/OpenSSL.Light' - ls -l '/c/ProgramData/Chocolatey/lib/OpenSSL.Light' || echo nevermind - echo '/c/ProgramData/Chocolatey/lib/OpenSSL.Light/tools' - ls -l '/c/ProgramData/Chocolatey/lib/OpenSSL.Light/tools' || echo nevermind - echo '/c/ProgramData/Chocolatey/lib/mingw' - ls -l '/c/ProgramData/Chocolatey/lib/mingw' || echo nevermind - echo '/c/ProgramData/Chocolatey/lib/mingw/tools' - ls -l '/c/ProgramData/Chocolatey/lib/mingw/tools' || echo nevermind - echo '/c/ProgramData/Chocolatey/lib/mingw/tools/install' - ls -l '/c/ProgramData/Chocolatey/lib/mingw/tools/install' || echo nevermind - echo '/c/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64' - ls -l '/c/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64' || echo nevermind - echo '/c/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin' - ls -l '/c/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin' || echo nevermind - echo '/c/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/include' - ls -l '/c/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/include' || echo nevermind - echo '/c/ProgramData/Chocolatey/lib/rtools' - ls -l '/c/ProgramData/Chocolatey/lib/rtools' || echo nevermind - echo '/c/ProgramData/Chocolatey/lib/rtools/tools' - ls -l '/c/ProgramData/Chocolatey/lib/rtools/tools' || echo nevermind - echo '/c/Users/Default' - ls -l '/c/Users/Default' || echo nevermind - echo '/usr' - ls -l '/usr' || echo nevermind - echo '/usr/lib' - ls -l '/usr/lib' || echo nevermind - echo '/usr/share' - ls -l '/usr/share' || echo nevermind - echo '/c/Strawberry/perl' - ls -l '/c/Strawberry/perl' || echo nevermind - echo '/c/Strawberry/perl/bin' - ls -l '/c/Strawberry/perl/bin' || echo nevermind - echo '/c/Strawberry/perl/lib' - ls -l '/c/Strawberry/perl/lib' || echo nevermind - echo '/c/Strawberry/perl/site' - ls -l '/c/Strawberry/perl/site' || echo nevermind - echo '/c/Strawberry/perl/site/lib' - ls -l '/c/Strawberry/perl/site/lib' || echo nevermind - echo '/usr/lib/perl5' - ls -l '/usr/lib/perl5' || echo nevermind - echo '/usr/share/perl5' - ls -l '/usr/share/perl5' || echo nevermind - echo '/usr/share/perl5/vendor_perl' - ls -l '/usr/share/perl5/vendor_perl' || echo nevermind - echo '/usr/share/perl5/vendor_perl/Pod' - ls -l '/usr/share/perl5/vendor_perl/Pod' || echo nevermind - echo '/c/Program Files/Common Files' - ls -l '/c/Program Files/Common Files' || echo nevermind - echo '/c/Program Files/Common Files/SSL' - ls -l '/c/Program Files/Common Files/SSL' || echo nevermind - echo PATH="$PATH" export unboundpath=`pwd` echo unboundpath=${unboundpath} cd .. @@ -253,19 +178,12 @@ jobs: #echo "curl cpanm" #curl -L -k -s -S -o cpanm https://cpanmin.us/ #echo "perl cpanm Pod::Usage" - #perl cpanm Pod::Usage || echo whatever + #perl cpanm Pod::Usage mkdir openssl echo "curl openssl" curl -L -k -s -S -o openssl-1.1.1j.tar.gz https://www.openssl.org/source/openssl-1.1.1j.tar.gz tar xzf openssl-1.1.1j.tar.gz cd openssl-1.1.1j - #export PERL5LIB="/c/Strawberry/perl/lib" - #export PERL5LIB="/usr/share/perl5/lib:/usr/share/perl5/vendor:/usr/share/perl5/site" - #echo PERL5LIB="$PERL5LIB" - #echo "cpan" - #cpan POD::Usage - #echo "perl MCPAN" - #perl -MCPAN -e "CPAN::Shell->force(qw(install POD::Usage));" # remove pod::Usage because we do not need -help or -man output # from the Configure script sed -e 's/use Pod::Usage//' < Configure > Configure.fix diff --git a/testcode/replay.c b/testcode/replay.c index cbd22f9c7..18df4b7e7 100644 --- a/testcode/replay.c +++ b/testcode/replay.c @@ -375,8 +375,7 @@ replay_moment_read(char* remain, FILE* in, const char* name, if(parse_keyword(&remain, "ADDRESS")) { while(isspace((unsigned char)*remain)) remain++; - if(strlen(remain) > 0) /* remove \n */ - remain[strlen(remain)-1] = 0; + strip_end_white(remain); if(!extstrtoaddr(remain, &mom->addr, &mom->addrlen)) { log_err("line %d: could not parse ADDRESS: %s", pstate->lineno, remain); From 658db66c3f9d3384298285c49878e021511d0762 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 25 Jun 2021 08:45:03 +0200 Subject: [PATCH 252/553] - Fix up permissions on rpl data file in tests. --- doc/Changelog | 3 +++ testdata/root_key_sentinel.rpl | 0 2 files changed, 3 insertions(+) mode change 100755 => 100644 testdata/root_key_sentinel.rpl diff --git a/doc/Changelog b/doc/Changelog index bbb2c0ed4..ba8402b2e 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +25 June 2021: Wouter + - Fix up permissions on rpl data file in tests. + 24 June 2021: Wouter - Add analyzer and port compile github workflow. diff --git a/testdata/root_key_sentinel.rpl b/testdata/root_key_sentinel.rpl old mode 100755 new mode 100644 From 7d16b2c26899467cc3a832cd8031d93314379254 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 25 Jun 2021 08:49:30 +0200 Subject: [PATCH 253/553] Analysis workflow, output failure cases. --- .github/workflows/analysis_ports.yml | 6 +++++- testcode/replay.c | 22 +++++++++++++++++----- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 01169c90a..9cb8c9284 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -232,7 +232,11 @@ jobs: echo "./configure --enable-debug --enable-static-exe --disable-flto \"--with-ssl=$prepath/openssl\" --with-libexpat=\"$prepath/expat\"" ./configure --enable-debug --enable-static-exe --disable-flto "--with-ssl=$prepath/openssl" --with-libexpat="$prepath/expat" make - make test || ./testbound.exe -p testdata/acl.rpl -o -vvvv + # specific test output + make testbound; ./testbound -s + # make testbound; ./testbound.exe -p testdata/acl.rpl -o -vvvv + make testbound; ./testbound.exe -p testdata/auth_nsec3_ent.rpl -o -vvvv + make test - name: test_android if: ${{ matrix.test_android == 'yes' }} env: diff --git a/testcode/replay.c b/testcode/replay.c index 18df4b7e7..1cdb9d3f6 100644 --- a/testcode/replay.c +++ b/testcode/replay.c @@ -999,21 +999,33 @@ void testbound_selftest(void) tb_assert( v && strcmp(v, "1ww2ww3") == 0); free(v); -#ifndef USE_WINSOCK +//#ifndef USE_WINSOCK + printf("start of ctime tests\n"); v = macro_process(store, NULL, "it is ${ctime 123456}"); - tb_assert( v && strcmp(v, "it is Fri Jan 2 10:17:36 1970") == 0); + printf("test for ctime 123456\n"); + printf("should be 'it is Fri Jan 2 10:17:36 1970'\n"); + printf("got '%s'\n", v); + //tb_assert( v && strcmp(v, "it is Fri Jan 2 10:17:36 1970") == 0); free(v); r = macro_assign(store, "t1", "123456"); tb_assert(r); v = macro_process(store, NULL, "it is ${ctime ${$t1}}"); - tb_assert( v && strcmp(v, "it is Fri Jan 2 10:17:36 1970") == 0); + printf("test2 for ctime 123456\n"); + printf("should be 'it is Fri Jan 2 10:17:36 1970'\n"); + printf("got '%s'\n", v); + //tb_assert( v && strcmp(v, "it is Fri Jan 2 10:17:36 1970") == 0); free(v); v = macro_process(store, NULL, "it is ${ctime $t1}"); - tb_assert( v && strcmp(v, "it is Fri Jan 2 10:17:36 1970") == 0); + printf("test3 for ctime 123456\n"); + printf("should be 'it is Fri Jan 2 10:17:36 1970'\n"); + printf("got '%s'\n", v); + //tb_assert( v && strcmp(v, "it is Fri Jan 2 10:17:36 1970") == 0); free(v); -#endif /* WINSOCK */ + printf("end of ctime tests\n"); +//#endif +/* WINSOCK */ r = macro_assign(store, "x", "1"); tb_assert(r); From 1b66c5f6e43f7c679b5f82f77f9ed4ffde09cf07 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 25 Jun 2021 09:16:13 +0200 Subject: [PATCH 254/553] Analysis workflow, fix make target. --- .github/workflows/analysis_ports.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 9cb8c9284..1a66b200f 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -233,9 +233,9 @@ jobs: ./configure --enable-debug --enable-static-exe --disable-flto "--with-ssl=$prepath/openssl" --with-libexpat="$prepath/expat" make # specific test output - make testbound; ./testbound -s + make testbound.exe; ./testbound.exe -s # make testbound; ./testbound.exe -p testdata/acl.rpl -o -vvvv - make testbound; ./testbound.exe -p testdata/auth_nsec3_ent.rpl -o -vvvv + make testbound.exe; ./testbound.exe -p testdata/auth_nsec3_ent.rpl -o -vvvv make test - name: test_android if: ${{ matrix.test_android == 'yes' }} From 358bc0d8bd8a417b74b6bb52815a2391b98e232e Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 25 Jun 2021 09:43:02 +0200 Subject: [PATCH 255/553] Analysis workflow, make debug output. --- .github/workflows/analysis_ports.yml | 1 + compat/ctime_r.c | 4 +++- testcode/replay.c | 9 +++------ 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 1a66b200f..5b39c7c28 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -233,6 +233,7 @@ jobs: ./configure --enable-debug --enable-static-exe --disable-flto "--with-ssl=$prepath/openssl" --with-libexpat="$prepath/expat" make # specific test output + if echo "i686-mingw64" | grep -i -e linux -e dragonfly >/dev/null; then echo yes; else echo no; fi make testbound.exe; ./testbound.exe -s # make testbound; ./testbound.exe -p testdata/acl.rpl -o -vvvv make testbound.exe; ./testbound.exe -p testdata/auth_nsec3_ent.rpl -o -vvvv diff --git a/compat/ctime_r.c b/compat/ctime_r.c index 87c2609a8..b6bc12208 100644 --- a/compat/ctime_r.c +++ b/compat/ctime_r.c @@ -33,10 +33,12 @@ char *ctime_r(const time_t *timep, char *buf) lock_basic_lock(&ctime_lock); result = ctime(timep); if(buf && result) { + printf("ctime_r called result '%s'\n", result); if(strlen(result) > 10 && result[7]==' ' && result[8]=='0') result[8]=' '; /* fix error in windows ctime */ strcpy(buf, result); + printf("ctime_r called fixresult '%s'\n", buf); } lock_basic_unlock(&ctime_lock); - return result; + return buf; } diff --git a/testcode/replay.c b/testcode/replay.c index 1cdb9d3f6..1077a6d08 100644 --- a/testcode/replay.c +++ b/testcode/replay.c @@ -318,8 +318,7 @@ replay_moment_read(char* remain, FILE* in, const char* name, mom->evt_type = repevt_autotrust_check; while(isspace((unsigned char)*remain)) remain++; - if(strlen(remain)>0 && remain[strlen(remain)-1]=='\n') - remain[strlen(remain)-1] = 0; + strip_end_white(remain); mom->autotrust_id = strdup(remain); if(!mom->autotrust_id) fatal_exit("out of memory"); read_file_content(in, &pstate->lineno, mom); @@ -327,8 +326,7 @@ replay_moment_read(char* remain, FILE* in, const char* name, mom->evt_type = repevt_tempfile_check; while(isspace((unsigned char)*remain)) remain++; - if(strlen(remain)>0 && remain[strlen(remain)-1]=='\n') - remain[strlen(remain)-1] = 0; + strip_end_white(remain); mom->autotrust_id = strdup(remain); if(!mom->autotrust_id) fatal_exit("out of memory"); read_file_content(in, &pstate->lineno, mom); @@ -359,8 +357,7 @@ replay_moment_read(char* remain, FILE* in, const char* name, m++; if(!extstrtoaddr(s, &mom->addr, &mom->addrlen)) fatal_exit("bad infra_rtt address %s", s); - if(strlen(m)>0 && m[strlen(m)-1]=='\n') - m[strlen(m)-1] = 0; + strip_end_white(m); mom->variable = strdup(remain); mom->string = strdup(m); if(!mom->string) fatal_exit("out of memory"); From 6ed49bf45f5f16b0baeb9a3005d9cb8af9e51497 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 25 Jun 2021 10:12:40 +0200 Subject: [PATCH 256/553] Analysis workflow, debug output. --- .github/workflows/analysis_ports.yml | 2 ++ compat/ctime_r.c | 1 + testcode/fake_event.c | 8 ++++---- testcode/replay.c | 9 ++++----- testcode/replay.h | 3 +++ testcode/testbound.c | 8 ++++---- 6 files changed, 18 insertions(+), 13 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 5b39c7c28..0cd8bd412 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -234,6 +234,8 @@ jobs: make # specific test output if echo "i686-mingw64" | grep -i -e linux -e dragonfly >/dev/null; then echo yes; else echo no; fi + if echo "i686-mingw64" | grep -i -e linux >/dev/null; then echo yeslinux; else echo nolinux; fi + if echo "i686-mingw64" | grep -i -e dragonfly >/dev/null; then echo yesdragonfly; else echo nodragonfly; fi make testbound.exe; ./testbound.exe -s # make testbound; ./testbound.exe -p testdata/acl.rpl -o -vvvv make testbound.exe; ./testbound.exe -p testdata/auth_nsec3_ent.rpl -o -vvvv diff --git a/compat/ctime_r.c b/compat/ctime_r.c index b6bc12208..d6133cb02 100644 --- a/compat/ctime_r.c +++ b/compat/ctime_r.c @@ -23,6 +23,7 @@ ctime_r_cleanup(void) char *ctime_r(const time_t *timep, char *buf) { char* result; + printf("unbound_ctime_r called\n"); if(!ctime_r_init) { /* still small race where this init can be done twice, * which is mostly harmless */ diff --git a/testcode/fake_event.c b/testcode/fake_event.c index 901880ce6..a19a1ec0d 100644 --- a/testcode/fake_event.c +++ b/testcode/fake_event.c @@ -599,7 +599,7 @@ autotrust_check(struct replay_runtime* runtime, struct replay_moment* mom) log_err("should be: %s", p->str); fatal_exit("autotrust_check failed"); } - if(line[0]) line[strlen(line)-1] = 0; /* remove newline */ + strip_end_white(line); expanded = macro_process(runtime->vars, runtime, p->str); if(!expanded) fatal_exit("could not expand macro line %d", lineno); @@ -652,7 +652,7 @@ tempfile_check(struct replay_runtime* runtime, struct replay_moment* mom) log_err("should be: %s", p->str); fatal_exit("tempfile_check failed"); } - if(line[0]) line[strlen(line)-1] = 0; /* remove newline */ + strip_end_white(line); expanded = macro_process(runtime->vars, runtime, p->str); if(!expanded) fatal_exit("could not expand macro line %d", lineno); @@ -1717,7 +1717,7 @@ struct comm_point* outnet_comm_point_for_tcp(struct outside_network* outnet, addr_to_str((struct sockaddr_storage*)to_addr, to_addrlen, addrbuf, sizeof(addrbuf)); if(verbosity >= VERB_ALGO) { - if(buf[0] != 0) buf[strlen(buf)-1] = 0; /* del newline*/ + strip_end_white(buf); log_info("tcp to %s: %s", addrbuf, buf); } log_assert(sldns_buffer_limit(query)-LDNS_HEADER_SIZE >= 2); @@ -1807,7 +1807,7 @@ int comm_point_send_udp_msg(struct comm_point *c, sldns_buffer* packet, addr_to_str((struct sockaddr_storage*)addr, addrlen, addrbuf, sizeof(addrbuf)); if(verbosity >= VERB_ALGO) { - if(buf[0] != 0) buf[strlen(buf)-1] = 0; /* del newline*/ + strip_end_white(buf); log_info("udp to %s: %s", addrbuf, buf); } log_assert(sldns_buffer_limit(packet)-LDNS_HEADER_SIZE >= 2); diff --git a/testcode/replay.c b/testcode/replay.c index 1077a6d08..69f1544db 100644 --- a/testcode/replay.c +++ b/testcode/replay.c @@ -124,8 +124,7 @@ replay_range_delete(struct replay_range* rng) free(rng); } -/** strip whitespace from end of string */ -static void +void strip_end_white(char* p) { size_t i; @@ -227,7 +226,7 @@ read_file_content(FILE* in, int* lineno, struct replay_moment* mom) if(strncmp(line, "FILE_END", 8) == 0) { return; } - if(line[0]) line[strlen(line)-1] = 0; /* remove newline */ + strip_end_white(line); if(!cfg_strlist_insert(last, strdup(line))) fatal_exit("malloc failure"); last = &( (*last)->next ); @@ -249,7 +248,7 @@ read_assign_step(char* remain, struct replay_moment* mom) if(eq != '=') fatal_exit("no '=' in assign: %s", remain); remain += skip; - if(remain[0]) remain[strlen(remain)-1]=0; /* remove newline */ + strip_end_white(remain); mom->string = strdup(remain); if(!mom->variable || !mom->string) fatal_exit("out of memory"); @@ -689,7 +688,7 @@ do_macro_ctime(char* arg) return NULL; } ctime_r(&tt, buf); - if(buf[0]) buf[strlen(buf)-1]=0; /* remove trailing newline */ + strip_end_white(buf); return strdup(buf); } diff --git a/testcode/replay.h b/testcode/replay.h index 5132cdacb..0271dff03 100644 --- a/testcode/replay.h +++ b/testcode/replay.h @@ -425,6 +425,9 @@ int replay_var_compare(const void* a, const void* b); /** get oldest enabled fake timer */ struct fake_timer* replay_get_oldest_timer(struct replay_runtime* runtime); +/** strip whitespace from end of string */ +void strip_end_white(char* p); + /** * Create variable storage * @return new or NULL on failure. diff --git a/testcode/testbound.c b/testcode/testbound.c index a7cf27a73..c92900142 100644 --- a/testcode/testbound.c +++ b/testcode/testbound.c @@ -168,7 +168,7 @@ spool_temp_file_name(int* lineno, FILE* cfg, char* id) id++; if(*id == '\0') fatal_exit("TEMPFILE_NAME must have id, line %d", *lineno); - id[strlen(id)-1]=0; /* remove newline */ + strip_end_white(id); fake_temp_file("_temp_", id, line, sizeof(line)); fprintf(cfg, "\"%s\"\n", line); } @@ -185,7 +185,7 @@ spool_temp_file(FILE* in, int* lineno, char* id) id++; if(*id == '\0') fatal_exit("TEMPFILE_CONTENTS must have id, line %d", *lineno); - id[strlen(id)-1]=0; /* remove newline */ + strip_end_white(id); fake_temp_file("_temp_", id, line, sizeof(line)); /* open file and spool to it */ spool = fopen(line, "w"); @@ -205,7 +205,7 @@ spool_temp_file(FILE* in, int* lineno, char* id) char* tid = parse+17; while(isspace((unsigned char)*tid)) tid++; - tid[strlen(tid)-1]=0; /* remove newline */ + strip_end_white(tid); fake_temp_file("_temp_", tid, l2, sizeof(l2)); snprintf(line, sizeof(line), "$INCLUDE %s\n", l2); } @@ -230,7 +230,7 @@ spool_auto_file(FILE* in, int* lineno, FILE* cfg, char* id) id++; if(*id == '\0') fatal_exit("AUTROTRUST_FILE must have id, line %d", *lineno); - id[strlen(id)-1]=0; /* remove newline */ + strip_end_white(id); fake_temp_file("_auto_", id, line, sizeof(line)); /* add option for the file */ fprintf(cfg, "server: auto-trust-anchor-file: \"%s\"\n", line); From 57e3d5da611ab99bcb9736226ed4aa8233b04936 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 25 Jun 2021 10:37:47 +0200 Subject: [PATCH 257/553] - Fix configure grep for reuseport default for failure. --- configure | 7 +++++-- configure.ac | 5 ++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/configure b/configure index 170386901..2f75ef782 100755 --- a/configure +++ b/configure @@ -4206,7 +4206,7 @@ esac # are we on MinGW? if uname -s 2>&1 | grep MINGW >/dev/null; then on_mingw="yes" else - if echo $host $target | grep mingw >/dev/null; then on_mingw="yes" + if echo $host | grep mingw >/dev/null; then on_mingw="yes" else on_mingw="no"; fi fi @@ -16195,7 +16195,10 @@ done # check if we can use SO_REUSEPORT -if echo "$host" | $GREP -i -e linux -e dragonfly >/dev/null; then +reuseport_default=0 +if echo "$host" | $GREP -i -e linux >/dev/null; then reuseport_default=1; fi +if echo "$host" | $GREP -i -e dragonfly >/dev/null; then reuseport_default=1; fi +if test "$reuseport_default" = 1; then $as_echo "#define REUSEPORT_DEFAULT 1" >>confdefs.h diff --git a/configure.ac b/configure.ac index d0e55194b..8bf9b6b15 100644 --- a/configure.ac +++ b/configure.ac @@ -490,7 +490,10 @@ ACX_MKDIR_ONE_ARG AC_CHECK_FUNCS([strptime],[AC_CHECK_STRPTIME_WORKS],[AC_LIBOBJ([strptime])]) # check if we can use SO_REUSEPORT -if echo "$host" | $GREP -i -e linux -e dragonfly >/dev/null; then +reuseport_default=0 +if echo "$host" | $GREP -i -e linux >/dev/null; then reuseport_default=1; fi +if echo "$host" | $GREP -i -e dragonfly >/dev/null; then reuseport_default=1; fi +if test "$reuseport_default" = 1; then AC_DEFINE(REUSEPORT_DEFAULT, 1, [if REUSEPORT is enabled by default]) else AC_DEFINE(REUSEPORT_DEFAULT, 0, [if REUSEPORT is enabled by default]) From 62ba44102421df82df392bd7c9e21995b1423493 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 25 Jun 2021 10:38:09 +0200 Subject: [PATCH 258/553] Analysis workflow, output debug. --- .github/workflows/analysis_ports.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 0cd8bd412..039a387f2 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -238,7 +238,7 @@ jobs: if echo "i686-mingw64" | grep -i -e dragonfly >/dev/null; then echo yesdragonfly; else echo nodragonfly; fi make testbound.exe; ./testbound.exe -s # make testbound; ./testbound.exe -p testdata/acl.rpl -o -vvvv - make testbound.exe; ./testbound.exe -p testdata/auth_nsec3_ent.rpl -o -vvvv + make testbound.exe; ./testbound.exe -p testdata/auth_xfr.rpl -o -vvvv make test - name: test_android if: ${{ matrix.test_android == 'yes' }} From ba846a925a9c268a5eb32828d08611a3261dd3d4 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 25 Jun 2021 11:05:57 +0200 Subject: [PATCH 259/553] - Fix configure does not require pkg-config if not needed. --- configure | 3 +++ configure.ac | 3 +++ doc/Changelog | 4 ++++ 3 files changed, 10 insertions(+) diff --git a/configure b/configure index 2f75ef782..3ed5dadda 100755 --- a/configure +++ b/configure @@ -14616,6 +14616,8 @@ CC=$lt_save_CC +# pkg-config is only needed for these options, do not require it otherwise +if test "$enable_systemd" = "yes" -o "$with_pyunbound" = "yes" -o "$with_pythonmod" = "yes"; then @@ -14736,6 +14738,7 @@ $as_echo "no" >&6; } PKG_CONFIG="" fi fi +fi # Checks for header files. for ac_header in stdarg.h stdbool.h netinet/in.h netinet/tcp.h sys/param.h sys/select.h sys/socket.h sys/un.h sys/uio.h sys/resource.h arpa/inet.h syslog.h netdb.h sys/wait.h pwd.h glob.h grp.h login_cap.h winsock2.h ws2tcpip.h endian.h sys/endian.h libkern/OSByteOrder.h sys/ipc.h sys/shm.h ifaddrs.h diff --git a/configure.ac b/configure.ac index 8bf9b6b15..5ffbe6834 100644 --- a/configure.ac +++ b/configure.ac @@ -385,7 +385,10 @@ AC_CHECK_PROG(doxygen, doxygen, doxygen) AC_CHECK_TOOL(STRIP, strip) ACX_LIBTOOL_C_ONLY +# pkg-config is only needed for these options, do not require it otherwise +if test "$enable_systemd" = "yes" -o "$with_pyunbound" = "yes" -o "$with_pythonmod" = "yes"; then PKG_PROG_PKG_CONFIG +fi # Checks for header files. AC_CHECK_HEADERS([stdarg.h stdbool.h netinet/in.h netinet/tcp.h sys/param.h sys/select.h sys/socket.h sys/un.h sys/uio.h sys/resource.h arpa/inet.h syslog.h netdb.h sys/wait.h pwd.h glob.h grp.h login_cap.h winsock2.h ws2tcpip.h endian.h sys/endian.h libkern/OSByteOrder.h sys/ipc.h sys/shm.h ifaddrs.h],,, [AC_INCLUDES_DEFAULT]) diff --git a/doc/Changelog b/doc/Changelog index ba8402b2e..5f14d9683 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,9 @@ 25 June 2021: Wouter - Fix up permissions on rpl data file in tests. + - Fix testbound newline treatment in moment_read and tempfile write. + - Fix configure grep for reuseport default for failure. + - Fix compat ctime_r return value + - Fix configure does not require pkg-config if not needed. 24 June 2021: Wouter - Add analyzer and port compile github workflow. From 7a5e869548219e184cb77d6e63c5501fb16b8f54 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 25 Jun 2021 11:18:12 +0200 Subject: [PATCH 260/553] Analysis workflow, remove debug output. --- .github/workflows/analysis_ports.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 039a387f2..0fa84cf01 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -233,9 +233,6 @@ jobs: ./configure --enable-debug --enable-static-exe --disable-flto "--with-ssl=$prepath/openssl" --with-libexpat="$prepath/expat" make # specific test output - if echo "i686-mingw64" | grep -i -e linux -e dragonfly >/dev/null; then echo yes; else echo no; fi - if echo "i686-mingw64" | grep -i -e linux >/dev/null; then echo yeslinux; else echo nolinux; fi - if echo "i686-mingw64" | grep -i -e dragonfly >/dev/null; then echo yesdragonfly; else echo nodragonfly; fi make testbound.exe; ./testbound.exe -s # make testbound; ./testbound.exe -p testdata/acl.rpl -o -vvvv make testbound.exe; ./testbound.exe -p testdata/auth_xfr.rpl -o -vvvv From cef1c56e883ac44442ad2a7fb6000450de641b8b Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 25 Jun 2021 13:12:22 +0200 Subject: [PATCH 261/553] Analysis workflow, debug output for ctime. --- .github/workflows/analysis_ports.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 0fa84cf01..f4400a9ee 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -231,6 +231,9 @@ jobs: cd unbound echo "./configure --enable-debug --enable-static-exe --disable-flto \"--with-ssl=$prepath/openssl\" --with-libexpat=\"$prepath/expat\"" ./configure --enable-debug --enable-static-exe --disable-flto "--with-ssl=$prepath/openssl" --with-libexpat="$prepath/expat" + grep -A 60 "checking for ctime_r" config.log | cat + grep CTIME config.h | cat + grep LIBOBJS Makefile | cat make # specific test output make testbound.exe; ./testbound.exe -s From 66e9317edc01d38a77701a5e4852c50d43a1cf14 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 25 Jun 2021 13:37:26 +0200 Subject: [PATCH 262/553] Analysis workflow, test ctime replacement. --- testcode/replay.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/testcode/replay.c b/testcode/replay.c index 69f1544db..1dda3d81a 100644 --- a/testcode/replay.c +++ b/testcode/replay.c @@ -687,7 +687,11 @@ do_macro_ctime(char* arg) log_err("macro ctime: expected number, not: %s", arg); return NULL; } +#ifndef HAVE_CTIME_R + unbound_ctime_r(&tt, buf); +#else ctime_r(&tt, buf); +#endif strip_end_white(buf); return strdup(buf); } From e45e73768f3e8b8bb5a0e17ebd39fc988318ccda Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 25 Jun 2021 14:07:11 +0200 Subject: [PATCH 263/553] Analysis workflow, see if defines are causing ctime changes. --- testcode/replay.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/testcode/replay.c b/testcode/replay.c index 1dda3d81a..b5235d7a6 100644 --- a/testcode/replay.c +++ b/testcode/replay.c @@ -51,6 +51,9 @@ #include "testcode/testpkts.h" #include "testcode/fake_event.h" #include "sldns/str2wire.h" +#ifdef ctime_r +#undef ctime_r +#endif /** max length of lines in file */ #define MAX_LINE_LEN 10240 From 770a54600cd6e683abb23c0aaef8f6e5dd13e336 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 25 Jun 2021 14:37:53 +0200 Subject: [PATCH 264/553] Analysis workflow, check for ctime define. --- config.h.in | 3 +++ configure | 1 + configure.ac | 4 ++++ testcode/replay.c | 7 ------- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/config.h.in b/config.h.in index cb27afa4f..385ea3cde 100644 --- a/config.h.in +++ b/config.h.in @@ -1263,6 +1263,9 @@ int memcmp(const void *x, const void *y, size_t n); #ifndef HAVE_CTIME_R +#ifdef ctime_r +#undef ctime_r +#endif #define ctime_r unbound_ctime_r char *ctime_r(const time_t *timep, char *buf); #endif diff --git a/configure b/configure index 3ed5dadda..c86635be4 100755 --- a/configure +++ b/configure @@ -21048,6 +21048,7 @@ esac fi +#LIBOBJS="$LIBOBJS ctime_r.$ac_objext" ac_fn_c_check_func "$LINENO" "strsep" "ac_cv_func_strsep" if test "x$ac_cv_func_strsep" = xyes; then : $as_echo "#define HAVE_STRSEP 1" >>confdefs.h diff --git a/configure.ac b/configure.ac index 5ffbe6834..1d22e3633 100644 --- a/configure.ac +++ b/configure.ac @@ -1717,6 +1717,7 @@ fi LIBOBJ_WITHOUT_CTIME="$LIBOBJS" AC_SUBST(LIBOBJ_WITHOUT_CTIME) AC_REPLACE_FUNCS(ctime_r) +#LIBOBJS="$LIBOBJS ctime_r.$ac_objext" AC_REPLACE_FUNCS(strsep) AC_ARG_ENABLE(allsymbols, AS_HELP_STRING([--enable-allsymbols],[export all symbols from libunbound and link binaries to it, smaller install size but libunbound export table is polluted by internal symbols])) @@ -2044,6 +2045,9 @@ AHX_MEMCMP_BROKEN(unbound) [ #ifndef HAVE_CTIME_R +#ifdef ctime_r +#undef ctime_r +#endif #define ctime_r unbound_ctime_r char *ctime_r(const time_t *timep, char *buf); #endif diff --git a/testcode/replay.c b/testcode/replay.c index b5235d7a6..69f1544db 100644 --- a/testcode/replay.c +++ b/testcode/replay.c @@ -51,9 +51,6 @@ #include "testcode/testpkts.h" #include "testcode/fake_event.h" #include "sldns/str2wire.h" -#ifdef ctime_r -#undef ctime_r -#endif /** max length of lines in file */ #define MAX_LINE_LEN 10240 @@ -690,11 +687,7 @@ do_macro_ctime(char* arg) log_err("macro ctime: expected number, not: %s", arg); return NULL; } -#ifndef HAVE_CTIME_R - unbound_ctime_r(&tt, buf); -#else ctime_r(&tt, buf); -#endif strip_end_white(buf); return strdup(buf); } From e4e0eaa63ee44446f060935d5e4b915f4dc43ea6 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 25 Jun 2021 15:11:10 +0200 Subject: [PATCH 265/553] Analysis workflow, fix ctime formatting for autotrust and testbound. --- compat/ctime_r.c | 3 --- config.h.in | 3 --- configure | 1 - configure.ac | 4 ---- testcode/replay.c | 4 ++++ validator/autotrust.c | 27 +++++++++++++++++++-------- 6 files changed, 23 insertions(+), 19 deletions(-) diff --git a/compat/ctime_r.c b/compat/ctime_r.c index d6133cb02..9f2bf15bc 100644 --- a/compat/ctime_r.c +++ b/compat/ctime_r.c @@ -23,7 +23,6 @@ ctime_r_cleanup(void) char *ctime_r(const time_t *timep, char *buf) { char* result; - printf("unbound_ctime_r called\n"); if(!ctime_r_init) { /* still small race where this init can be done twice, * which is mostly harmless */ @@ -34,11 +33,9 @@ char *ctime_r(const time_t *timep, char *buf) lock_basic_lock(&ctime_lock); result = ctime(timep); if(buf && result) { - printf("ctime_r called result '%s'\n", result); if(strlen(result) > 10 && result[7]==' ' && result[8]=='0') result[8]=' '; /* fix error in windows ctime */ strcpy(buf, result); - printf("ctime_r called fixresult '%s'\n", buf); } lock_basic_unlock(&ctime_lock); return buf; diff --git a/config.h.in b/config.h.in index 385ea3cde..cb27afa4f 100644 --- a/config.h.in +++ b/config.h.in @@ -1263,9 +1263,6 @@ int memcmp(const void *x, const void *y, size_t n); #ifndef HAVE_CTIME_R -#ifdef ctime_r -#undef ctime_r -#endif #define ctime_r unbound_ctime_r char *ctime_r(const time_t *timep, char *buf); #endif diff --git a/configure b/configure index c86635be4..3ed5dadda 100755 --- a/configure +++ b/configure @@ -21048,7 +21048,6 @@ esac fi -#LIBOBJS="$LIBOBJS ctime_r.$ac_objext" ac_fn_c_check_func "$LINENO" "strsep" "ac_cv_func_strsep" if test "x$ac_cv_func_strsep" = xyes; then : $as_echo "#define HAVE_STRSEP 1" >>confdefs.h diff --git a/configure.ac b/configure.ac index 1d22e3633..5ffbe6834 100644 --- a/configure.ac +++ b/configure.ac @@ -1717,7 +1717,6 @@ fi LIBOBJ_WITHOUT_CTIME="$LIBOBJS" AC_SUBST(LIBOBJ_WITHOUT_CTIME) AC_REPLACE_FUNCS(ctime_r) -#LIBOBJS="$LIBOBJS ctime_r.$ac_objext" AC_REPLACE_FUNCS(strsep) AC_ARG_ENABLE(allsymbols, AS_HELP_STRING([--enable-allsymbols],[export all symbols from libunbound and link binaries to it, smaller install size but libunbound export table is polluted by internal symbols])) @@ -2045,9 +2044,6 @@ AHX_MEMCMP_BROKEN(unbound) [ #ifndef HAVE_CTIME_R -#ifdef ctime_r -#undef ctime_r -#endif #define ctime_r unbound_ctime_r char *ctime_r(const time_t *timep, char *buf); #endif diff --git a/testcode/replay.c b/testcode/replay.c index 69f1544db..37221eda3 100644 --- a/testcode/replay.c +++ b/testcode/replay.c @@ -688,6 +688,10 @@ do_macro_ctime(char* arg) return NULL; } ctime_r(&tt, buf); +#ifdef USE_WINSOCK + if(strlen(buf) > 10 && buf[7]==' ' && buf[8]=='0') + buf[8]=' '; /* fix error in windows ctime */ +#endif strip_end_white(buf); return strdup(buf); } diff --git a/validator/autotrust.c b/validator/autotrust.c index adf836754..fe17df2d5 100644 --- a/validator/autotrust.c +++ b/validator/autotrust.c @@ -1077,6 +1077,17 @@ trustanchor_state2str(autr_state_type s) return " UNKNOWN "; } +/** ctime r for autotrust */ +static char* autr_ctime_r(time_t* t, char* s) +{ + ctime_r(t, s); +#ifdef USE_WINSOCK + if(strlen(s) > 10 && s[7]==' ' && s[8]=='0') + s[8]=' '; /* fix error in windows ctime */ +#endif + return s; +} + /** print ID to file */ static int print_id(FILE* out, char* fname, uint8_t* nm, size_t nmlen, uint16_t dclass) @@ -1123,13 +1134,13 @@ autr_write_contents(FILE* out, char* fn, struct trust_anchor* tp) } if(fprintf(out, ";;last_queried: %u ;;%s", (unsigned int)tp->autr->last_queried, - ctime_r(&(tp->autr->last_queried), tmi)) < 0 || + autr_ctime_r(&(tp->autr->last_queried), tmi)) < 0 || fprintf(out, ";;last_success: %u ;;%s", (unsigned int)tp->autr->last_success, - ctime_r(&(tp->autr->last_success), tmi)) < 0 || + autr_ctime_r(&(tp->autr->last_success), tmi)) < 0 || fprintf(out, ";;next_probe_time: %u ;;%s", (unsigned int)tp->autr->next_probe_time, - ctime_r(&(tp->autr->next_probe_time), tmi)) < 0 || + autr_ctime_r(&(tp->autr->next_probe_time), tmi)) < 0 || fprintf(out, ";;query_failed: %d\n", (int)tp->autr->query_failed)<0 || fprintf(out, ";;query_interval: %d\n", (int)tp->autr->query_interval) < 0 || @@ -1160,7 +1171,7 @@ autr_write_contents(FILE* out, char* fn, struct trust_anchor* tp) ";;lastchange=%u ;;%s", str, (int)ta->s, trustanchor_state2str(ta->s), (int)ta->pending_count, (unsigned int)ta->last_change, - ctime_r(&(ta->last_change), tmi)) < 0) { + autr_ctime_r(&(ta->last_change), tmi)) < 0) { log_err("could not write to %s: %s", fn, strerror(errno)); free(str); return 0; @@ -2264,7 +2275,7 @@ autr_debug_print_ta(struct autr_ta* ta) return; } if(str[0]) str[strlen(str)-1]=0; /* remove newline */ - ctime_r(&ta->last_change, buf); + autr_ctime_r(&ta->last_change, buf); if(buf[0]) buf[strlen(buf)-1]=0; /* remove newline */ log_info("[%s] %s ;;state:%d ;;pending_count:%d%s%s last:%s", trustanchor_state2str(ta->s), str, ta->s, ta->pending_count, @@ -2291,13 +2302,13 @@ autr_debug_print_tp(struct trust_anchor* tp) log_packed_rrset(NO_VERBOSE, "DNSKEY:", tp->dnskey_rrset); } log_info("file %s", tp->autr->file); - ctime_r(&tp->autr->last_queried, buf); + autr_ctime_r(&tp->autr->last_queried, buf); if(buf[0]) buf[strlen(buf)-1]=0; /* remove newline */ log_info("last_queried: %u %s", (unsigned)tp->autr->last_queried, buf); - ctime_r(&tp->autr->last_success, buf); + autr_ctime_r(&tp->autr->last_success, buf); if(buf[0]) buf[strlen(buf)-1]=0; /* remove newline */ log_info("last_success: %u %s", (unsigned)tp->autr->last_success, buf); - ctime_r(&tp->autr->next_probe_time, buf); + autr_ctime_r(&tp->autr->next_probe_time, buf); if(buf[0]) buf[strlen(buf)-1]=0; /* remove newline */ log_info("next_probe_time: %u %s", (unsigned)tp->autr->next_probe_time, buf); From 5e81763e530bf42f9c24499ca39670a13e7cb71c Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 25 Jun 2021 15:27:51 +0200 Subject: [PATCH 266/553] Analysis workflow, fixup ctime tests. --- testcode/replay.c | 20 +++----------------- 1 file changed, 3 insertions(+), 17 deletions(-) diff --git a/testcode/replay.c b/testcode/replay.c index 37221eda3..2487c146f 100644 --- a/testcode/replay.c +++ b/testcode/replay.c @@ -999,33 +999,19 @@ void testbound_selftest(void) tb_assert( v && strcmp(v, "1ww2ww3") == 0); free(v); -//#ifndef USE_WINSOCK - printf("start of ctime tests\n"); v = macro_process(store, NULL, "it is ${ctime 123456}"); - printf("test for ctime 123456\n"); - printf("should be 'it is Fri Jan 2 10:17:36 1970'\n"); - printf("got '%s'\n", v); - //tb_assert( v && strcmp(v, "it is Fri Jan 2 10:17:36 1970") == 0); + tb_assert( v && strcmp(v, "it is Fri Jan 2 10:17:36 1970") == 0); free(v); r = macro_assign(store, "t1", "123456"); tb_assert(r); v = macro_process(store, NULL, "it is ${ctime ${$t1}}"); - printf("test2 for ctime 123456\n"); - printf("should be 'it is Fri Jan 2 10:17:36 1970'\n"); - printf("got '%s'\n", v); - //tb_assert( v && strcmp(v, "it is Fri Jan 2 10:17:36 1970") == 0); + tb_assert( v && strcmp(v, "it is Fri Jan 2 10:17:36 1970") == 0); free(v); v = macro_process(store, NULL, "it is ${ctime $t1}"); - printf("test3 for ctime 123456\n"); - printf("should be 'it is Fri Jan 2 10:17:36 1970'\n"); - printf("got '%s'\n", v); - //tb_assert( v && strcmp(v, "it is Fri Jan 2 10:17:36 1970") == 0); + tb_assert( v && strcmp(v, "it is Fri Jan 2 10:17:36 1970") == 0); free(v); - printf("end of ctime tests\n"); -//#endif -/* WINSOCK */ r = macro_assign(store, "x", "1"); tb_assert(r); From 8e5c3f51a2880b8a93219f4a5d605bf9ecc56622 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 25 Jun 2021 15:31:33 +0200 Subject: [PATCH 267/553] - Fix auth zone download on windows to unlink before rename. --- doc/Changelog | 2 ++ services/authzone.c | 3 +++ 2 files changed, 5 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 5f14d9683..f4b1295b2 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -4,6 +4,8 @@ - Fix configure grep for reuseport default for failure. - Fix compat ctime_r return value - Fix configure does not require pkg-config if not needed. + - Fix unit test in the ctime_r calls for autotrust and in testbound. + - Fix auth zone download on windows to unlink before rename. 24 June 2021: Wouter - Add analyzer and port compile github workflow. diff --git a/services/authzone.c b/services/authzone.c index 0f9879ce7..c1567aecb 100644 --- a/services/authzone.c +++ b/services/authzone.c @@ -5152,6 +5152,9 @@ xfr_write_after_update(struct auth_xfer* xfr, struct module_env* env) lock_rw_unlock(&z->lock); return; } +#ifdef UB_ON_WINDOWS + (void)unlink(zfilename); /* windows does not replace file with rename() */ +#endif if(rename(tmpfile, zfilename) < 0) { log_err("could not rename(%s, %s): %s", tmpfile, zfilename, strerror(errno)); From 9a90254d2f15528a46dc7f4fa833221d2bf53e28 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 25 Jun 2021 16:06:05 +0200 Subject: [PATCH 268/553] Analysis workflow, remove debug output. --- .github/workflows/analysis_ports.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index f4400a9ee..0fa84cf01 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -231,9 +231,6 @@ jobs: cd unbound echo "./configure --enable-debug --enable-static-exe --disable-flto \"--with-ssl=$prepath/openssl\" --with-libexpat=\"$prepath/expat\"" ./configure --enable-debug --enable-static-exe --disable-flto "--with-ssl=$prepath/openssl" --with-libexpat="$prepath/expat" - grep -A 60 "checking for ctime_r" config.log | cat - grep CTIME config.h | cat - grep LIBOBJS Makefile | cat make # specific test output make testbound.exe; ./testbound.exe -s From 6ac9253c2a45febc2a39034122e20f1923abe578 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 25 Jun 2021 16:34:43 +0200 Subject: [PATCH 269/553] Analysis workflow, remove debug, add desciption echo, remove dll. --- .github/workflows/analysis_ports.yml | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 0fa84cf01..d97bdf70a 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -170,6 +170,8 @@ jobs: if: ${{ matrix.test_windows == 'yes' }} shell: bash run: | + #echo commands as we make them. + set -x export unboundpath=`pwd` echo unboundpath=${unboundpath} cd .. @@ -186,6 +188,7 @@ jobs: cd openssl-1.1.1j # remove pod::Usage because we do not need -help or -man output # from the Configure script + echo "Fixup ./Configure by removing use Pod::Usage require" sed -e 's/use Pod::Usage//' < Configure > Configure.fix echo "./Configure.fix no-shared no-asm -DOPENSSL_NO_CAPIENG mingw64 --prefix=\""$prepath/openssl\""" ./Configure.fix no-shared no-asm -DOPENSSL_NO_CAPIENG mingw64 --prefix="$prepath/openssl" @@ -210,6 +213,7 @@ jobs: echo "./configure SHELL=/usr/bin/bash CONFIG_SHELL=/usr/bin/bash --prefix=\"$prepath/expat\" --exec-prefix=\"$prepath/expat\" --bindir=\"$prepath/expat/bin\" --includedir=\"$prepath/expat/include\" --mandir=\"$prepath/expat/man\" --libdir=\"$prepath/expat/lib\"" ./configure SHELL=/usr/bin/bash CONFIG_SHELL=/usr/bin/bash --prefix="$prepath/expat" --exec-prefix="$prepath/expat" --bindir="$prepath/expat/bin" --includedir="$prepath/expat/include" --mandir="$prepath/expat/man" --libdir="$prepath/expat/lib" # fixup SHELL is treated specially, but SHELZZ is not by make. + echo "Fixup Makefiles by renaming SHELL to SHELLZZ" mv Makefile Makefile.orig sed -e 's/SHELL/SHELLZZ/g' < Makefile.orig > Makefile mv lib/Makefile lib/Makefile.orig @@ -229,13 +233,12 @@ jobs: cd .. echo "unbound" cd unbound - echo "./configure --enable-debug --enable-static-exe --disable-flto \"--with-ssl=$prepath/openssl\" --with-libexpat=\"$prepath/expat\"" - ./configure --enable-debug --enable-static-exe --disable-flto "--with-ssl=$prepath/openssl" --with-libexpat="$prepath/expat" + echo "./configure --enable-debug --enable-static-exe --disable-flto \"--with-ssl=$prepath/openssl\" --with-libexpat=\"$prepath/expat\" --disable-shared" + ./configure --enable-debug --enable-static-exe --disable-flto "--with-ssl=$prepath/openssl" --with-libexpat="$prepath/expat" --disable-shared make # specific test output - make testbound.exe; ./testbound.exe -s - # make testbound; ./testbound.exe -p testdata/acl.rpl -o -vvvv - make testbound.exe; ./testbound.exe -p testdata/auth_xfr.rpl -o -vvvv + #make testbound.exe; ./testbound.exe -s + #make testbound; ./testbound.exe -p testdata/acl.rpl -o -vvvv make test - name: test_android if: ${{ matrix.test_android == 'yes' }} From 57022af9a41dc15a46fa4b545dcbd5fa40193bb1 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 25 Jun 2021 16:50:21 +0200 Subject: [PATCH 270/553] Analysis workflow, disable -x for bash the output is reordered with respect to the command output. --- .github/workflows/analysis_ports.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index d97bdf70a..15ca5d1de 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -170,8 +170,6 @@ jobs: if: ${{ matrix.test_windows == 'yes' }} shell: bash run: | - #echo commands as we make them. - set -x export unboundpath=`pwd` echo unboundpath=${unboundpath} cd .. From 04e9adc6109a62f527974c7d95310e713db5adac Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 25 Jun 2021 16:54:23 +0200 Subject: [PATCH 271/553] Analysis workflow, enable the matrix of tests, on demand. --- .github/workflows/analysis_ports.yml | 284 +++++++++++++-------------- 1 file changed, 142 insertions(+), 142 deletions(-) diff --git a/.github/workflows/analysis_ports.yml b/.github/workflows/analysis_ports.yml index 15ca5d1de..fbbdd8018 100644 --- a/.github/workflows/analysis_ports.yml +++ b/.github/workflows/analysis_ports.yml @@ -14,148 +14,148 @@ jobs: strategy: matrix: include: -# - name: GCC on Linux -# os: ubuntu-latest -# config: "--enable-debug --disable-flto" -# make_test: "yes" -# - name: Clang-analyzer -# os: ubuntu-latest -# config: "CC=clang --enable-debug --disable-flto --disable-static" -# make_test: "yes" -# clang_analysis: "yes" -# - name: libevent -# os: ubuntu-latest -# install_libevent: "yes" -# config: "CC=clang --enable-debug --disable-flto --with-libevent --disable-static" -# make_test: "yes" -# clang_analysis: "yes" -# - name: OS X -# os: macos-latest -# install_expat: "yes" -# config: "--enable-debug --disable-flto --with-ssl=/usr/local/opt/openssl --with-libexpat=/usr/local/opt/expat" -# make_test: "yes" -# - name: Clang on OS X -# os: macos-latest -# install_expat: "yes" -# config: "CC=clang --enable-debug --disable-flto --with-ssl=/usr/local/opt/openssl --with-libexpat=/usr/local/opt/expat --disable-static" -# make_test: "yes" -# clang_analysis: "yes" -# - name: ubsan (gcc undefined behaviour sanitizer) -# os: ubuntu-latest -# config: 'CFLAGS="-DNDEBUG -g2 -O3 -fsanitize=undefined -fno-sanitize-recover=all" --disable-flto --disable-static' -# make_test: "yes" -# - name: asan (gcc address sanitizer) -# os: ubuntu-latest -# config: 'CFLAGS="-DNDEBUG -g2 -O3 -fsanitize=address" --disable-flto --disable-static' -# make_test: "yes" -# - name: Apple iPhone on iOS, armv7 -# os: macos-latest -# AUTOTOOLS_HOST: armv7-apple-ios -# OPENSSL_HOST: ios-cross -# IOS_SDK: iPhoneOS -# IOS_CPU: armv7s -# test_ios: "yes" -# config: "no" -# make: "no" -# - name: Apple iPhone on iOS, arm64 -# os: macos-latest -# AUTOTOOLS_HOST: aarch64-apple-ios -# OPENSSL_HOST: ios64-cross -# IOS_SDK: iPhoneOS -# IOS_CPU: arm64 -# test_ios: "yes" -# config: "no" -# make: "no" -# - name: Apple TV on iOS, arm64 -# os: macos-latest -# AUTOTOOLS_HOST: aarch64-apple-ios -# OPENSSL_HOST: ios64-cross -# IOS_SDK: AppleTVOS -# IOS_CPU: arm64 -# test_ios: "yes" -# config: "no" -# make: "no" -# - name: Apple Watch on iOS, armv7 -# os: macos-latest -# AUTOTOOLS_HOST: armv7-apple-ios -# OPENSSL_HOST: ios-cross -# IOS_SDK: WatchOS -# IOS_CPU: armv7k -# test_ios: "yes" -# config: "no" -# make: "no" -# - name: iPhoneSimulator on OS X, i386 -# os: macos-latest -# AUTOTOOLS_HOST: i386-apple-ios -# OPENSSL_HOST: iphoneos-cross -# IOS_SDK: iPhoneSimulator -# IOS_CPU: i386 -# test_ios: "yes" -# config: "no" -# make: "no" -# - name: iPhoneSimulator on OS X, x86_64 -# os: macos-latest -# AUTOTOOLS_HOST: x86_64-apple-ios -# OPENSSL_HOST: iphoneos-cross -# IOS_SDK: iPhoneSimulator -# IOS_CPU: x86_64 -# test_ios: "yes" -# config: "no" -# make: "no" -# - name: AppleTVSimulator on OS X, x86_64 -# os: macos-latest -# AUTOTOOLS_HOST: x86_64-apple-ios -# OPENSSL_HOST: iphoneos-cross -# IOS_SDK: AppleTVSimulator -# IOS_CPU: x86_64 -# test_ios: "yes" -# config: "no" -# make: "no" -# - name: WatchSimulator on OS X, i386 -# os: macos-latest -# AUTOTOOLS_HOST: i386-apple-ios -# OPENSSL_HOST: iphoneos-cross -# IOS_SDK: WatchSimulator -# IOS_CPU: i386 -# test_ios: "yes" -# config: "no" -# make: "no" -# - name: Android armv7a -# os: ubuntu-latest -# AUTOTOOLS_HOST: armv7a-linux-androidabi -# OPENSSL_HOST: android-arm -# ANDROID_CPU: armv7a -# ANDROID_API: 23 -# test_android: "yes" -# config: "no" -# make: "no" -# - name: Android aarch64 -# os: ubuntu-latest -# AUTOTOOLS_HOST: aarch64-linux-android -# OPENSSL_HOST: android-arm64 -# ANDROID_CPU: aarch64 -# ANDROID_API: 23 -# test_android: "yes" -# config: "no" -# make: "no" -# - name: Android x86 -# os: ubuntu-latest -# AUTOTOOLS_HOST: i686-linux-android -# OPENSSL_HOST: android-x86 -# ANDROID_CPU: x86 -# ANDROID_API: 23 -# test_android: "yes" -# config: "no" -# make: "no" -# - name: Android x86_64 -# os: ubuntu-latest -# AUTOTOOLS_HOST: x86_64-linux-android -# OPENSSL_HOST: android-x86_64 -# ANDROID_CPU: x86_64 -# ANDROID_API: 23 -# test_android: "yes" -# config: "no" -# make: "no" + - name: GCC on Linux + os: ubuntu-latest + config: "--enable-debug --disable-flto" + make_test: "yes" + - name: Clang-analyzer + os: ubuntu-latest + config: "CC=clang --enable-debug --disable-flto --disable-static" + make_test: "yes" + clang_analysis: "yes" + - name: libevent + os: ubuntu-latest + install_libevent: "yes" + config: "CC=clang --enable-debug --disable-flto --with-libevent --disable-static" + make_test: "yes" + clang_analysis: "yes" + - name: OS X + os: macos-latest + install_expat: "yes" + config: "--enable-debug --disable-flto --with-ssl=/usr/local/opt/openssl --with-libexpat=/usr/local/opt/expat" + make_test: "yes" + - name: Clang on OS X + os: macos-latest + install_expat: "yes" + config: "CC=clang --enable-debug --disable-flto --with-ssl=/usr/local/opt/openssl --with-libexpat=/usr/local/opt/expat --disable-static" + make_test: "yes" + clang_analysis: "yes" + - name: ubsan (gcc undefined behaviour sanitizer) + os: ubuntu-latest + config: 'CFLAGS="-DNDEBUG -g2 -O3 -fsanitize=undefined -fno-sanitize-recover=all" --disable-flto --disable-static' + make_test: "yes" + - name: asan (gcc address sanitizer) + os: ubuntu-latest + config: 'CFLAGS="-DNDEBUG -g2 -O3 -fsanitize=address" --disable-flto --disable-static' + make_test: "yes" + - name: Apple iPhone on iOS, armv7 + os: macos-latest + AUTOTOOLS_HOST: armv7-apple-ios + OPENSSL_HOST: ios-cross + IOS_SDK: iPhoneOS + IOS_CPU: armv7s + test_ios: "yes" + config: "no" + make: "no" + - name: Apple iPhone on iOS, arm64 + os: macos-latest + AUTOTOOLS_HOST: aarch64-apple-ios + OPENSSL_HOST: ios64-cross + IOS_SDK: iPhoneOS + IOS_CPU: arm64 + test_ios: "yes" + config: "no" + make: "no" + - name: Apple TV on iOS, arm64 + os: macos-latest + AUTOTOOLS_HOST: aarch64-apple-ios + OPENSSL_HOST: ios64-cross + IOS_SDK: AppleTVOS + IOS_CPU: arm64 + test_ios: "yes" + config: "no" + make: "no" + - name: Apple Watch on iOS, armv7 + os: macos-latest + AUTOTOOLS_HOST: armv7-apple-ios + OPENSSL_HOST: ios-cross + IOS_SDK: WatchOS + IOS_CPU: armv7k + test_ios: "yes" + config: "no" + make: "no" + - name: iPhoneSimulator on OS X, i386 + os: macos-latest + AUTOTOOLS_HOST: i386-apple-ios + OPENSSL_HOST: iphoneos-cross + IOS_SDK: iPhoneSimulator + IOS_CPU: i386 + test_ios: "yes" + config: "no" + make: "no" + - name: iPhoneSimulator on OS X, x86_64 + os: macos-latest + AUTOTOOLS_HOST: x86_64-apple-ios + OPENSSL_HOST: iphoneos-cross + IOS_SDK: iPhoneSimulator + IOS_CPU: x86_64 + test_ios: "yes" + config: "no" + make: "no" + - name: AppleTVSimulator on OS X, x86_64 + os: macos-latest + AUTOTOOLS_HOST: x86_64-apple-ios + OPENSSL_HOST: iphoneos-cross + IOS_SDK: AppleTVSimulator + IOS_CPU: x86_64 + test_ios: "yes" + config: "no" + make: "no" + - name: WatchSimulator on OS X, i386 + os: macos-latest + AUTOTOOLS_HOST: i386-apple-ios + OPENSSL_HOST: iphoneos-cross + IOS_SDK: WatchSimulator + IOS_CPU: i386 + test_ios: "yes" + config: "no" + make: "no" + - name: Android armv7a + os: ubuntu-latest + AUTOTOOLS_HOST: armv7a-linux-androidabi + OPENSSL_HOST: android-arm + ANDROID_CPU: armv7a + ANDROID_API: 23 + test_android: "yes" + config: "no" + make: "no" + - name: Android aarch64 + os: ubuntu-latest + AUTOTOOLS_HOST: aarch64-linux-android + OPENSSL_HOST: android-arm64 + ANDROID_CPU: aarch64 + ANDROID_API: 23 + test_android: "yes" + config: "no" + make: "no" + - name: Android x86 + os: ubuntu-latest + AUTOTOOLS_HOST: i686-linux-android + OPENSSL_HOST: android-x86 + ANDROID_CPU: x86 + ANDROID_API: 23 + test_android: "yes" + config: "no" + make: "no" + - name: Android x86_64 + os: ubuntu-latest + AUTOTOOLS_HOST: x86_64-linux-android + OPENSSL_HOST: android-x86_64 + ANDROID_CPU: x86_64 + ANDROID_API: 23 + test_android: "yes" + config: "no" + make: "no" - name: Windows os: windows-latest test_windows: "yes" From e41125495df6033811989d471621d0d16ba20aa3 Mon Sep 17 00:00:00 2001 From: tcarpay <8014108+TCY16@users.noreply.github.com> Date: Thu, 1 Jul 2021 12:45:14 +0200 Subject: [PATCH 272/553] Apply suggestions from code review Co-authored-by: Wouter Wijngaards --- sldns/str2wire.c | 6 +++--- testcode/readzone.c | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/sldns/str2wire.c b/sldns/str2wire.c index db572e4e1..642134ecc 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -650,7 +650,7 @@ static int sldns_str2wire_check_svcbparams(uint8_t* rdata, uint16_t rdata_len) rdata_ptr += svcbparam_len; nparams += 1; - if (nparams > MAX_NUMBER_OF_SVCPARAMS) + if (nparams >= MAX_NUMBER_OF_SVCPARAMS) return LDNS_WIREPARSE_ERR_SVCB_TOO_MANY_PARAMS; } @@ -1355,7 +1355,7 @@ sldns_str2wire_svcbparam_mandatory(const char* val, uint8_t* rd, size_t* rd_len) /* The code below revolves around sematic errors in the SVCParam set. * So long as we do not distinguish between running Unbound as a primary * or as a secondary, we default to secondary behavior and we ignore the - * sematic errors. */ + * semantic errors. */ /* In draft-ietf-dnsop-svcb-https-06 Section 8 * automatically mandatory MUST NOT appear in its own value-list @@ -1467,7 +1467,7 @@ sldns_str2wire_svcbparam_alpn_value(const char* val, val_len = strlen(val); if (val_len > sizeof(unescaped_dst)) { - return LDNS_WIREPARSE_ERR_SYNTAX_INTEGER_OVERFLOW; + return LDNS_WIREPARSE_ERR_SVCB_ALPN_KEY_TOO_LARGE; } while (val_len) { size_t dst_len; diff --git a/testcode/readzone.c b/testcode/readzone.c index 3854465eb..eeab6155d 100644 --- a/testcode/readzone.c +++ b/testcode/readzone.c @@ -1,3 +1,4 @@ +#include "config.h" #include #include #include @@ -5,7 +6,6 @@ #include #include -#include "config.h" #include "sldns/str2wire.h" #include "sldns/wire2str.h" From 3d50c25f5b4d709f3fc1c7229b232289af48ed24 Mon Sep 17 00:00:00 2001 From: Tom Carpay Date: Thu, 1 Jul 2021 16:59:48 +0200 Subject: [PATCH 273/553] fix comments - 1 --- Makefile.in | 2 +- sldns/str2wire.c | 9 --------- sldns/wire2str.c | 2 +- 3 files changed, 2 insertions(+), 11 deletions(-) diff --git a/Makefile.in b/Makefile.in index 81b188bde..9fbb8f8e0 100644 --- a/Makefile.in +++ b/Makefile.in @@ -330,7 +330,7 @@ TEST_BIN=asynclook$(EXEEXT) delayer$(EXEEXT) \ lock-verify$(EXEEXT) memstats$(EXEEXT) perf$(EXEEXT) \ petal$(EXEEXT) pktview$(EXEEXT) streamtcp$(EXEEXT) \ $(DNSTAP_SOCKET_TESTBIN) dohclient$(EXEEXT) \ - testbound$(EXEEXT) unittest$(EXEEXT) + testbound$(EXEEXT) unittest$(EXEEXT) readzone$(EXEEXT) tests: all $(TEST_BIN) check: test diff --git a/sldns/str2wire.c b/sldns/str2wire.c index 642134ecc..983074e1e 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -1176,7 +1176,6 @@ sldns_str2wire_svcbparam_ipv4hint(const char* val, uint8_t* rd, size_t* rd_len) int count; char ip_str[INET_ADDRSTRLEN+1]; char *next_ip_str; - uint32_t *ip_wire_dst = NULL; size_t i; for (i = 0, count = 1; val[i]; i++) { @@ -1218,7 +1217,6 @@ sldns_str2wire_svcbparam_ipv4hint(const char* val, uint8_t* rd, size_t* rd_len) val = next_ip_str + 1; } - ip_wire_dst++; count--; } if (count) /* verify that we parsed all values */ @@ -1233,7 +1231,6 @@ sldns_str2wire_svcbparam_ipv6hint(const char* val, uint8_t* rd, size_t* rd_len) int count; char ip_str[INET6_ADDRSTRLEN+1]; char *next_ip_str; - uint32_t *ip_wire_dst = NULL; size_t i; for (i = 0, count = 1; val[i]; i++) { @@ -1269,14 +1266,12 @@ sldns_str2wire_svcbparam_ipv6hint(const char* val, uint8_t* rd, size_t* rd_len) memcpy(ip_str, val, next_ip_str - val); ip_str[next_ip_str - val] = 0; if (inet_pton(AF_INET6, ip_str, rd + *rd_len) != 1) { - val = ip_str; /* to use in error reporting below */ break; } *rd_len += LDNS_IP6ADDRLEN; val = next_ip_str + 1; } - ip_wire_dst++; count--; } if (count) /* verify that we parsed all values */ @@ -1297,7 +1292,6 @@ sldns_str2wire_svcbparam_mandatory(const char* val, uint8_t* rd, size_t* rd_len) { size_t i, count, val_len; char* next_key; - uint16_t* key_dst = NULL; val_len = strlen(val); @@ -1342,7 +1336,6 @@ sldns_str2wire_svcbparam_mandatory(const char* val, uint8_t* rd, size_t* rd_len) val_len -= next_key - val + 1; val = next_key + 1; /* skip the comma */ - key_dst += 1; } /* In draft-ietf-dnsop-svcb-https-06 Section 7: @@ -1470,8 +1463,6 @@ sldns_str2wire_svcbparam_alpn_value(const char* val, return LDNS_WIREPARSE_ERR_SVCB_ALPN_KEY_TOO_LARGE; } while (val_len) { - size_t dst_len; - str_len = (next_str = sldns_str2wire_svcbparam_parse_next_unescaped_comma(val)) ? (size_t)(next_str - val) : val_len; diff --git a/sldns/wire2str.c b/sldns/wire2str.c index 0437477d9..83f0abceb 100644 --- a/sldns/wire2str.c +++ b/sldns/wire2str.c @@ -989,7 +989,7 @@ static int sldns_wire2str_svcparam_port2str(char** s, if (data_len != 2) return -1; /* wireformat error, a short is 2 bytes */ w = sldns_str_print(s, slen, "=%d", (int)sldns_read_uint16(data)); - *data += 2; + data += 2; return w; } From f62994f6ea59ba9ba41dfaefaabf62fe42e53d8b Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 2 Jul 2021 09:42:31 +0200 Subject: [PATCH 274/553] - Fix #506: Python Module Seems to Leak Memory if it Experiences an Unhandled Exception. --- doc/Changelog | 4 ++++ pythonmod/pythonmod.c | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index f4b1295b2..221b6c69b 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +2 July 2021: Wouter + - Fix #506: Python Module Seems to Leak Memory if it Experiences an + Unhandled Exception. + 25 June 2021: Wouter - Fix up permissions on rpl data file in tests. - Fix testbound newline treatment in moment_read and tempfile write. diff --git a/pythonmod/pythonmod.c b/pythonmod/pythonmod.c index 0bbdeeb6b..4bea54e6a 100644 --- a/pythonmod/pythonmod.c +++ b/pythonmod/pythonmod.c @@ -245,6 +245,11 @@ cleanup: /* clear the exception, by not restoring it */ /* Restore the exception state */ /* PyErr_Restore(exc_typ, exc_val, exc_tb); */ + /* when using PyErr_Restore there is no need to Py_XDECREF for + * these 3 pointers. */ + Py_XDECREF(exc_typ); + Py_XDECREF(exc_val); + Py_XDECREF(exc_tb); } int pythonmod_init(struct module_env* env, int id) From 543d6d5c139e192a24f2e0fc6bf9f61109c9bc41 Mon Sep 17 00:00:00 2001 From: Tom Carpay Date: Fri, 2 Jul 2021 10:53:50 +0200 Subject: [PATCH 275/553] fix final comment: remove superfluous assert --- sldns/str2wire.c | 1 - 1 file changed, 1 deletion(-) diff --git a/sldns/str2wire.c b/sldns/str2wire.c index 983074e1e..9f94f69cd 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -853,7 +853,6 @@ rrinternal_parse_rdata(sldns_buffer* strbuf, char* token, size_t token_len, } /* The root label is one more character, so smaller * than 1 + 1 means no Svcparam Keys */ - assert(*rdata == 0); if (rdata_len < 2) return LDNS_WIREPARSE_ERR_OK; From a6020e41860bd82032d57cf41996592ebb994f01 Mon Sep 17 00:00:00 2001 From: Tom Carpay Date: Fri, 2 Jul 2021 11:21:19 +0200 Subject: [PATCH 276/553] change test and error to be in line with new maximum svcb params (nparams >= MAX_NUMBER_OF_SVCPARAMS) --- sldns/wire2str.c | 2 +- testdata/svcb.tdir/svcb.success-cases.zone | 4 ++-- testdata/svcb.tdir/svcb.success-cases.zone.cmp | 2 +- testdata/svcb.tdir/svcb.test | 8 ++++---- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/sldns/wire2str.c b/sldns/wire2str.c index 83f0abceb..5bfa9f43d 100644 --- a/sldns/wire2str.c +++ b/sldns/wire2str.c @@ -154,7 +154,7 @@ static sldns_lookup_table sldns_wireparse_errors_data[] = { { LDNS_WIREPARSE_ERR_SVCB_DUPLICATE_KEYS, "Duplicate SVCB key found"}, { LDNS_WIREPARSE_ERR_SVCB_MANDATORY_TOO_MANY_KEYS, "Too many keys in mandatory" }, { LDNS_WIREPARSE_ERR_SVCB_TOO_MANY_PARAMS, - "Too many SvcParams. Unbound only allows 64 entries" }, + "Too many SvcParams. Unbound only allows 63 entries" }, { LDNS_WIREPARSE_ERR_SVCB_MANDATORY_MISSING_PARAM, "Mandatory SvcParamKey is missing"}, { LDNS_WIREPARSE_ERR_SVCB_MANDATORY_DUPLICATE_KEY, diff --git a/testdata/svcb.tdir/svcb.success-cases.zone b/testdata/svcb.tdir/svcb.success-cases.zone index 896304757..5d6339542 100644 --- a/testdata/svcb.tdir/svcb.success-cases.zone +++ b/testdata/svcb.tdir/svcb.success-cases.zone @@ -38,9 +38,9 @@ s06 HTTPS 0 . ech="aGVsbG93b3JsZCE=" ; echconfig is an alias for ech s07 HTTPS 0 . echconfig="aGVsbG93b3JsZCE=" -; maximum size allowed in a svcb rdata set (64 SvcParams) +; maximum size allowed in a svcb rdata set (63 SvcParams) -s08 HTTPS 0 . ( key11=a key12=a key13=a key14=a key15=a key16=a key17=a key18=a key19=a key110=a key111=a key112=a key113=a key114=a key115=a key116=a key117=a key118=a key119=a key120=a key121=a key122=a key123=a key124=a key125=a key126=a key127=a key128=a key129=a key130=a key131=a key132=a key133=a key134=a key135=a key136=a key137=a key138=a key139=a key140=a key141=a key142=a key143=a key144=a key145=a key146=a key147=a key148=a key149=a key150=a key151=a key152=a key153=a key154=a key155=a key156=a key157=a key158=a key159=a key160=a key161=a key162=a key163=a key164=a) +s08 HTTPS 0 . ( key11=a key12=a key13=a key14=a key15=a key16=a key17=a key18=a key19=a key110=a key111=a key112=a key113=a key114=a key115=a key116=a key117=a key118=a key119=a key120=a key121=a key122=a key123=a key124=a key125=a key126=a key127=a key128=a key129=a key130=a key131=a key132=a key133=a key134=a key135=a key136=a key137=a key138=a key139=a key140=a key141=a key142=a key143=a key144=a key145=a key146=a key147=a key148=a key149=a key150=a key151=a key152=a key153=a key154=a key155=a key156=a key157=a key158=a key159=a key160=a key161=a key162=a key163=a) ; maximum alpn size allowed (255 characters) diff --git a/testdata/svcb.tdir/svcb.success-cases.zone.cmp b/testdata/svcb.tdir/svcb.success-cases.zone.cmp index f28bd2ce5..e504e7b18 100644 --- a/testdata/svcb.tdir/svcb.success-cases.zone.cmp +++ b/testdata/svcb.tdir/svcb.success-cases.zone.cmp @@ -6,5 +6,5 @@ s04.success-cases. 3600 IN HTTPS 0 . no-default-alpn s05.success-cases. 3600 IN HTTPS 0 . mandatory=port alpn="dot" no-default-alpn port=853 s06.success-cases. 3600 IN HTTPS 0 . ech="aGVsbG93b3JsZCE=" s07.success-cases. 3600 IN HTTPS 0 . ech="aGVsbG93b3JsZCE=" -s08.success-cases. 3600 IN HTTPS 0 . key11="a" key12="a" key13="a" key14="a" key15="a" key16="a" key17="a" key18="a" key19="a" key110="a" key111="a" key112="a" key113="a" key114="a" key115="a" key116="a" key117="a" key118="a" key119="a" key120="a" key121="a" key122="a" key123="a" key124="a" key125="a" key126="a" key127="a" key128="a" key129="a" key130="a" key131="a" key132="a" key133="a" key134="a" key135="a" key136="a" key137="a" key138="a" key139="a" key140="a" key141="a" key142="a" key143="a" key144="a" key145="a" key146="a" key147="a" key148="a" key149="a" key150="a" key151="a" key152="a" key153="a" key154="a" key155="a" key156="a" key157="a" key158="a" key159="a" key160="a" key161="a" key162="a" key163="a" key164="a" +s08.success-cases. 3600 IN HTTPS 0 . key11="a" key12="a" key13="a" key14="a" key15="a" key16="a" key17="a" key18="a" key19="a" key110="a" key111="a" key112="a" key113="a" key114="a" key115="a" key116="a" key117="a" key118="a" key119="a" key120="a" key121="a" key122="a" key123="a" key124="a" key125="a" key126="a" key127="a" key128="a" key129="a" key130="a" key131="a" key132="a" key133="a" key134="a" key135="a" key136="a" key137="a" key138="a" key139="a" key140="a" key141="a" key142="a" key143="a" key144="a" key145="a" key146="a" key147="a" key148="a" key149="a" key150="a" key151="a" key152="a" key153="a" key154="a" key155="a" key156="a" key157="a" key158="a" key159="a" key160="a" key161="a" key162="a" key163="a" s09.success-cases. 3600 IN HTTPS 0 . alpn="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" diff --git a/testdata/svcb.tdir/svcb.test b/testdata/svcb.tdir/svcb.test index c997fbb07..707287d5c 100644 --- a/testdata/svcb.tdir/svcb.test +++ b/testdata/svcb.tdir/svcb.test @@ -54,25 +54,25 @@ fi # check all the failure cases if $PRE/readzone svcb.failure-cases-01 then - echo "Failure case 21: ech value is not base64 encoded" + echo "Failure case 01: ech value is not base64 encoded" echo "Incorrectly succeeded" exit 1 elif $PRE/readzone svcb.failure-cases-02 then - echo "Failure case 22: port value needs to be a positive integer < 65536" + echo "Failure case 02: port value needs to be a positive integer < 65536" echo "Incorrectly succeeded" exit 1 elif $PRE/readzone svcb.failure-cases-03 then - echo "Failure case 23: 65 SvcParams is too many SvcParams; the limit is 64" + echo "Failure case 02: 65 SvcParams is too many SvcParams; the limit is 64" echo "Incorrectly succeeded" exit 1 elif $PRE/readzone svcb.failure-cases-04 then - echo "Failure case 24: 256 is too many characters for an alpn; maximum is 255" + echo "Failure case 04: 256 is too many characters for an alpn; maximum is 255" echo "Incorrectly succeeded" exit 1 else From 877aa8df55bea67dac6b66cbe2435bfbe93a09a3 Mon Sep 17 00:00:00 2001 From: tcarpay <8014108+TCY16@users.noreply.github.com> Date: Fri, 2 Jul 2021 13:14:47 +0200 Subject: [PATCH 277/553] Apply suggestions from code review Co-authored-by: Willem Toorop --- sldns/str2wire.c | 28 ++++++++++++++-------------- sldns/wire2str.c | 1 - 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/sldns/str2wire.c b/sldns/str2wire.c index 9f94f69cd..55c38e12d 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -853,7 +853,7 @@ rrinternal_parse_rdata(sldns_buffer* strbuf, char* token, size_t token_len, } /* The root label is one more character, so smaller * than 1 + 1 means no Svcparam Keys */ - if (rdata_len < 2) + if (rdata_len < 2 || *rdata != 0) return LDNS_WIREPARSE_ERR_OK; rdata_len -= 1; @@ -1348,26 +1348,26 @@ sldns_str2wire_svcbparam_mandatory(const char* val, uint8_t* rd, size_t* rd_len) * So long as we do not distinguish between running Unbound as a primary * or as a secondary, we default to secondary behavior and we ignore the * semantic errors. */ - +#ifdef SVCB_SEMANTIC_ERRORS /* In draft-ietf-dnsop-svcb-https-06 Section 8 * automatically mandatory MUST NOT appear in its own value-list */ - // if (sldns_read_uint16(rd + 4) == SVCB_KEY_MANDATORY) - // return LDNS_WIREPARSE_ERR_SVCB_MANDATORY_IN_MANDATORY; + if (sldns_read_uint16(rd + 4) == SVCB_KEY_MANDATORY) + return LDNS_WIREPARSE_ERR_SVCB_MANDATORY_IN_MANDATORY; /* Guarantee key uniqueness. After the sort we only need to * compare neighbouring keys */ - // if (count > 1) { - // for (i = 0; i < count - 1; i++) { - // uint8_t* current_pos = (rd + 4 + (sizeof(uint16_t) * i)); - // uint16_t key = sldns_read_uint16(current_pos); - - // if (key == sldns_read_uint16(current_pos + 2)) { - // return LDNS_WIREPARSE_ERR_SVCB_MANDATORY_DUPLICATE_KEY; - // } - // } - // } + if (count > 1) { + for (i = 0; i < count - 1; i++) { + uint8_t* current_pos = (rd + 4 + (sizeof(uint16_t) * i)); + uint16_t key = sldns_read_uint16(current_pos); + if (key == sldns_read_uint16(current_pos + 2)) { + return LDNS_WIREPARSE_ERR_SVCB_MANDATORY_DUPLICATE_KEY; + } + } + } +#endif return LDNS_WIREPARSE_ERR_OK; } diff --git a/sldns/wire2str.c b/sldns/wire2str.c index 5bfa9f43d..6a177ec0b 100644 --- a/sldns/wire2str.c +++ b/sldns/wire2str.c @@ -989,7 +989,6 @@ static int sldns_wire2str_svcparam_port2str(char** s, if (data_len != 2) return -1; /* wireformat error, a short is 2 bytes */ w = sldns_str_print(s, slen, "=%d", (int)sldns_read_uint16(data)); - data += 2; return w; } From 711087bb13b44699b2d1fcb25aff04a1fe4e6ce5 Mon Sep 17 00:00:00 2001 From: Tom Carpay Date: Fri, 2 Jul 2021 14:15:33 +0200 Subject: [PATCH 278/553] rename var to remove shadow variable --- sldns/str2wire.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/sldns/str2wire.c b/sldns/str2wire.c index 150b4513c..8e2b0dbd8 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -1466,6 +1466,8 @@ sldns_str2wire_svcbparam_alpn_value(const char* val, return LDNS_WIREPARSE_ERR_SVCB_ALPN_KEY_TOO_LARGE; } while (val_len) { + size_t key_len; + str_len = (next_str = sldns_str2wire_svcbparam_parse_next_unescaped_comma(val)) ? (size_t)(next_str - val) : val_len; @@ -1473,9 +1475,9 @@ sldns_str2wire_svcbparam_alpn_value(const char* val, return LDNS_WIREPARSE_ERR_SVCB_ALPN_KEY_TOO_LARGE; } - dst_len = sldns_str2wire_svcbparam_parse_copy_unescaped(dst + 1, val, str_len); - *dst++ = dst_len; - dst += dst_len; + key_len = sldns_str2wire_svcbparam_parse_copy_unescaped(dst + 1, val, str_len); + *dst++ = key_len; + dst += key_len; if (!next_str) break; From a701ef75edea60daf21dd61b52efa27754cbce82 Mon Sep 17 00:00:00 2001 From: Tom Carpay Date: Fri, 2 Jul 2021 15:15:13 +0200 Subject: [PATCH 279/553] changelog PR #491 --- doc/Changelog | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 221b6c69b..384491920 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +2 July 2021: Tom + - Merge PR #491: Add SVCB and HTTPS types and handling according to draft-ietf-dnsop-svcb-https + 2 July 2021: Wouter - Fix #506: Python Module Seems to Leak Memory if it Experiences an Unhandled Exception. From c6fc7adeb181ba134034f6fe4558a544e253a209 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Sun, 4 Jul 2021 15:19:24 +0200 Subject: [PATCH 280/553] - Fix Wunused-result compile warnings. --- dnstap/unbound-dnstap-socket.c | 3 ++- doc/Changelog | 3 +++ testcode/delayer.c | 3 ++- testcode/streamtcp.c | 6 ++++-- 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/dnstap/unbound-dnstap-socket.c b/dnstap/unbound-dnstap-socket.c index 17c29e971..3de8ab3f0 100644 --- a/dnstap/unbound-dnstap-socket.c +++ b/dnstap/unbound-dnstap-socket.c @@ -1171,7 +1171,8 @@ static RETSIGTYPE main_sigh(int sig) char str[] = "exit on signal \n"; str[15] = '0' + (sig/10)%10; str[16] = '0' + sig%10; - write(STDERR_FILENO, str, strlen(str)); + /* simple cast to void will not silence Wunused-result */ + (void)!write(STDERR_FILENO, str, strlen(str)); } if(sig_base) { ub_event_base_loopexit(sig_base); diff --git a/doc/Changelog b/doc/Changelog index 384491920..b8f65cf7a 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +4 July 2021: George + - Fix Wunused-result compile warnings. + 2 July 2021: Tom - Merge PR #491: Add SVCB and HTTPS types and handling according to draft-ietf-dnsop-svcb-https diff --git a/testcode/delayer.c b/testcode/delayer.c index 0c8f2a45d..e915961f5 100644 --- a/testcode/delayer.c +++ b/testcode/delayer.c @@ -350,7 +350,8 @@ static RETSIGTYPE delayer_sigh(int sig) char str[] = "exit on signal \n"; str[15] = '0' + (sig/10)%10; str[16] = '0' + sig%10; - write(STDOUT_FILENO, str, strlen(str)); + /* simple cast to void will not silence Wunused-result */ + (void)!write(STDOUT_FILENO, str, strlen(str)); do_quit = 1; } diff --git a/testcode/streamtcp.c b/testcode/streamtcp.c index 3fbb792e5..2bd076ee5 100644 --- a/testcode/streamtcp.c +++ b/testcode/streamtcp.c @@ -400,12 +400,14 @@ static RETSIGTYPE sigh(int sig) char str[] = "Got unhandled signal \n"; if(sig == SIGPIPE) { char* strpipe = "got SIGPIPE, remote connection gone\n"; - write(STDOUT_FILENO, strpipe, strlen(strpipe)); + /* simple cast to void will not silence Wunused-result */ + (void)!write(STDOUT_FILENO, strpipe, strlen(strpipe)); exit(1); } str[21] = '0' + (sig/10)%10; str[22] = '0' + sig%10; - write(STDOUT_FILENO, str, strlen(str)); + /* simple cast to void will not silence Wunused-result */ + (void)!write(STDOUT_FILENO, str, strlen(str)); exit(1); } #endif /* SIGPIPE */ From 11d3cea823bb6b5ff2e599bd59f032f20789b08a Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Mon, 5 Jul 2021 15:36:27 +0200 Subject: [PATCH 281/553] - Fix compiler warnings for #491. --- doc/Changelog | 3 ++ sldns/str2wire.c | 98 ++++++++++++++++++++++++------------------------ 2 files changed, 53 insertions(+), 48 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index b8f65cf7a..ffbb0b20a 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +5 July 2021: George + - Fix compiler warnings for #491. + 4 July 2021: George - Fix Wunused-result compile warnings. diff --git a/sldns/str2wire.c b/sldns/str2wire.c index 8e2b0dbd8..fbd615cbf 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -625,11 +625,10 @@ static int sldns_str2wire_svcparam_key_cmp(const void *a, const void *b) */ static int sldns_str2wire_check_svcbparams(uint8_t* rdata, uint16_t rdata_len) { - size_t nparams = 0, i, j; + size_t nparams = 0, i; uint8_t new_rdata[LDNS_MAX_RDFLEN]; uint8_t* new_rdata_ptr = new_rdata; uint8_t* svcparams[MAX_NUMBER_OF_SVCPARAMS]; - uint8_t* mandatory = NULL; uint8_t* rdata_ptr = rdata; uint16_t rdata_remaining = rdata_len; @@ -671,46 +670,49 @@ static int sldns_str2wire_check_svcbparams(uint8_t* rdata, uint16_t rdata_len) * sematic errors. */ #ifdef SVCB_SEMANTIC_ERRORS - /* In draft-ietf-dnsop-svcb-https-06 Section 7: - * - * Keys (...) MUST NOT appear more than once. - * - * If they key has already been seen, we have a duplicate - */ - for (i = 0; i < nparams; i++) { - uint16_t key = sldns_read_uint16(svcparams[i]); - - if (i + 1 < nparams && key == sldns_read_uint16(svcparams[i+1])) - return LDNS_WIREPARSE_ERR_SVCB_DUPLICATE_KEYS; - - if (key == SVCB_KEY_MANDATORY) - mandatory = svcparams[i]; - } - - /* 4. verify that all the SvcParamKeys in mandatory are present */ - if (mandatory) { - - /* Divide by sizeof(uint16_t)*/ - uint16_t mandatory_nkeys = sldns_read_uint16(mandatory + 2) / sizeof(uint16_t); - - /* Guaranteed by sldns_str2wire_svcparam_key_value */ - assert(mandatory_nkeys > 0); - - for (i = 0; i < mandatory_nkeys; i++) { - uint16_t mandatory_key = sldns_read_uint16(mandatory - + 2 * sizeof(uint16_t) - + i * sizeof(uint16_t)); - uint8_t found = 0; - - for (j = 0; j < nparams; j++) { - if (mandatory_key == sldns_read_uint16(svcparams[j])) - found = 1; - } - - if (!found) - return LDNS_WIREPARSE_ERR_SVCB_MANDATORY_MISSING_PARAM; + { + uint8_t* mandatory = NULL; + /* In draft-ietf-dnsop-svcb-https-06 Section 7: + * + * Keys (...) MUST NOT appear more than once. + * + * If they key has already been seen, we have a duplicate + */ + for(i=0; i < nparams; i++) { + uint16_t key = sldns_read_uint16(svcparams[i]); + if(i + 1 < nparams && key == sldns_read_uint16(svcparams[i+1])) + return LDNS_WIREPARSE_ERR_SVCB_DUPLICATE_KEYS; + if(key == SVCB_KEY_MANDATORY) + mandatory = svcparams[i]; } + /* 4. verify that all the SvcParamKeys in mandatory are present */ + if(mandatory) { + /* Divide by sizeof(uint16_t)*/ + uint16_t mandatory_nkeys = sldns_read_uint16(mandatory + 2) / sizeof(uint16_t); + + /* Guaranteed by sldns_str2wire_svcparam_key_value */ + assert(mandatory_nkeys > 0); + + for(i=0; i < mandatory_nkeys; i++) { + uint16_t mandatory_key = sldns_read_uint16( + mandatory + + 2 * sizeof(uint16_t) + + i * sizeof(uint16_t)); + uint8_t found = 0; + size_t j; + + for(j=0; j < nparams; j++) { + if(mandatory_key == sldns_read_uint16(svcparams[j])) { + found = 1; + break; + } + } + + if(!found) + return LDNS_WIREPARSE_ERR_SVCB_MANDATORY_MISSING_PARAM; + } + } } #endif /* Write rdata in correct order */ @@ -718,7 +720,7 @@ static int sldns_str2wire_check_svcbparams(uint8_t* rdata, uint16_t rdata_len) uint16_t svcparam_len = sldns_read_uint16(svcparams[i] + 2) + 2 * sizeof(uint16_t); - if (new_rdata_ptr + svcparam_len - new_rdata > sizeof(new_rdata)) + if ((unsigned)(new_rdata_ptr - new_rdata) + svcparam_len > sizeof(new_rdata)) return LDNS_WIREPARSE_ERR_BUFFER_TOO_SMALL; memcpy(new_rdata_ptr, svcparams[i], svcparam_len); @@ -1176,7 +1178,7 @@ sldns_str2wire_svcparam_port(const char* val, uint8_t* rd, size_t* rd_len) static int sldns_str2wire_svcbparam_ipv4hint(const char* val, uint8_t* rd, size_t* rd_len) { - int count; + size_t count; char ip_str[INET_ADDRSTRLEN+1]; char *next_ip_str; size_t i; @@ -1231,7 +1233,7 @@ sldns_str2wire_svcbparam_ipv4hint(const char* val, uint8_t* rd, size_t* rd_len) static int sldns_str2wire_svcbparam_ipv6hint(const char* val, uint8_t* rd, size_t* rd_len) { - int count; + size_t count; char ip_str[INET6_ADDRSTRLEN+1]; char *next_ip_str; size_t i; @@ -1278,7 +1280,7 @@ sldns_str2wire_svcbparam_ipv6hint(const char* val, uint8_t* rd, size_t* rd_len) count--; } if (count) /* verify that we parsed all values */ - return LDNS_WIREPARSE_ERR_SYNTAX_IP6; + return LDNS_WIREPARSE_ERR_SYNTAX_IP6; return LDNS_WIREPARSE_ERR_OK; } @@ -1393,9 +1395,9 @@ sldns_str2wire_svcbparam_ech_value(const char* val, uint8_t* rd, size_t* rd_len) wire_len = sldns_b64_pton(val, buffer, LDNS_MAX_RDFLEN); - if (wire_len == 0) { + if (wire_len <= 0) { return LDNS_WIREPARSE_ERR_SYNTAX_B64; - } else if (wire_len + 4 > *rd_len) { + } else if ((unsigned)wire_len + 4 > *rd_len) { return LDNS_WIREPARSE_ERR_BUFFER_TOO_SMALL; } else { sldns_write_uint16(rd, SVCB_KEY_ECH); @@ -1580,12 +1582,12 @@ int sldns_str2wire_svcparam_buf(const char* str, uint8_t* rd, size_t* rd_len) if (*val_in == '"') { val_in++; while (*val_in != '"' - && val_out - unescaped_val < sizeof(unescaped_val) - 1 + && (unsigned)(val_out - unescaped_val + 1) < sizeof(unescaped_val) && sldns_parse_char( (uint8_t*) val_out, &val_in)) { val_out++; } } else { - while (val_out - unescaped_val < sizeof(unescaped_val) - 1 + while ((unsigned)(val_out - unescaped_val + 1) < sizeof(unescaped_val) && sldns_parse_char( (uint8_t*) val_out, &val_in)) { val_out++; } From e521b10f3216ec0c3d0e373ea5b2f814052a8f2a Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Mon, 5 Jul 2021 16:49:17 +0200 Subject: [PATCH 282/553] - Fix clang-analysis warnings for testcode/readzone.c. --- doc/Changelog | 1 + testcode/readzone.c | 17 +++++++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index ffbb0b20a..332a574ee 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,6 @@ 5 July 2021: George - Fix compiler warnings for #491. + - Fix clang-analysis warnings for testcode/readzone.c. 4 July 2021: George - Fix Wunused-result compile warnings. diff --git a/testcode/readzone.c b/testcode/readzone.c index eeab6155d..8edc683ee 100644 --- a/testcode/readzone.c +++ b/testcode/readzone.c @@ -31,11 +31,13 @@ int main(int argc, char *const *argv) while ((opt = getopt(argc, argv, "hu")) != -1) { switch (opt) { case 'h': + free(str); return print_usage(stdout, progname); case 'u': print_in_unknown_type_format = 1; break; default: + free(str); return print_usage(stderr, progname); } } @@ -52,6 +54,7 @@ int main(int argc, char *const *argv) if (s) { fprintf(stderr, "Error parsing origin: %s\n" , sldns_get_errorstr_parse(s)); + free(str); return EXIT_FAILURE; } s = -1; @@ -60,8 +63,10 @@ int main(int argc, char *const *argv) fprintf(stderr, "Memory allocation error: %s\n" , strerror(errno)); - else if (argc != 1 && argc != 2) + else if (argc != 1 && argc != 2) { + free(str); return print_usage(stderr, progname); + } else if (!(in = fopen(argv[0], "r"))) fprintf(stderr, "Error opening \"%s\": %s\n" @@ -73,8 +78,8 @@ int main(int argc, char *const *argv) s = sldns_fp2wire_rr_buf(in, rr, &rr_len, &dname_len, &state); if (s) { fprintf( stderr, "parse error %d:%d: %s\n" - , state.lineno, LDNS_WIREPARSE_OFFSET(s) - , sldns_get_errorstr_parse(s)); + , state.lineno, LDNS_WIREPARSE_OFFSET(s) + , sldns_get_errorstr_parse(s)); break; } if (rr_len == 0) @@ -82,10 +87,10 @@ int main(int argc, char *const *argv) if (print_in_unknown_type_format) written = sldns_wire2str_rr_unknown_buf( - rr, rr_len, str, str_len); + rr, rr_len, str, str_len); else written = sldns_wire2str_rr_buf( - rr, rr_len, str, str_len); + rr, rr_len, str, str_len); if (written > str_len) { while (written > str_len) @@ -93,7 +98,7 @@ int main(int argc, char *const *argv) free(str); if (!(str = malloc(str_len))) { fprintf(stderr, "Memory allocation error: %s\n" - , strerror(errno)); + , strerror(errno)); s = -1; break; } From 3f7e164751b0f52435ac4d0368ccf8252b3b747b Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 6 Jul 2021 15:15:43 +0200 Subject: [PATCH 283/553] - iana portlist update. --- doc/Changelog | 3 +++ util/iana_ports.inc | 1 + 2 files changed, 4 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 332a574ee..7f12eec94 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +6 July 2021: Wouter + - iana portlist update. + 5 July 2021: George - Fix compiler warnings for #491. - Fix clang-analysis warnings for testcode/readzone.c. diff --git a/util/iana_ports.inc b/util/iana_ports.inc index 60bf59115..f928d0669 100644 --- a/util/iana_ports.inc +++ b/util/iana_ports.inc @@ -5377,6 +5377,7 @@ 30999, 31016, 31029, +31337, 31416, 31457, 31620, From 2c3f764d61e510086f1f62bf4bd6064e4416b82b Mon Sep 17 00:00:00 2001 From: Nick Porter Date: Thu, 15 Jul 2021 17:55:33 +0100 Subject: [PATCH 284/553] Don't call a function which hasn't been defined --- util/ub_event_pluggable.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/util/ub_event_pluggable.c b/util/ub_event_pluggable.c index 235bba6ba..4280d4db1 100644 --- a/util/ub_event_pluggable.c +++ b/util/ub_event_pluggable.c @@ -666,7 +666,8 @@ ub_winsock_tcp_wouldblock(struct ub_event* ev, int eventbits) fptr_ok(ev->vmt != &default_event_vmt || ev->vmt->winsock_tcp_wouldblock == my_winsock_tcp_wouldblock); - (*ev->vmt->winsock_tcp_wouldblock)(ev, eventbits); + if (ev->vmt->winsock_tcp_wouldblock) + (*ev->vmt->winsock_tcp_wouldblock)(ev, eventbits); } } From 8180ca192fc9b06fb65df25aff2661b851aa9e10 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 16 Jul 2021 09:12:06 +0200 Subject: [PATCH 285/553] - Fix for #510: in depth, use ifdefs for windows api event calls. --- doc/Changelog | 5 +++++ util/netevent.c | 10 ++++++++++ 2 files changed, 15 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 7f12eec94..e0ee3a83b 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,8 @@ +16 July 2021: Wouter + - Merge #510 from ndptech: Don't call a function which hasn't been + defined. + - Fix for #510: in depth, use ifdefs for windows api event calls. + 6 July 2021: Wouter - iana portlist update. diff --git a/util/netevent.c b/util/netevent.c index ede19726a..01e44c9b6 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -1364,7 +1364,9 @@ ssl_handle_read(struct comm_point* c) return tcp_req_info_handle_read_close(c->tcp_req_info); return 0; /* shutdown, closed */ } else if(want == SSL_ERROR_WANT_READ) { +#ifdef USE_WINSOCK ub_winsock_tcp_wouldblock(c->ev->ev, UB_EV_READ); +#endif return 1; /* read more later */ } else if(want == SSL_ERROR_WANT_WRITE) { c->ssl_shake_state = comm_ssl_shake_hs_write; @@ -1412,7 +1414,9 @@ ssl_handle_read(struct comm_point* c) return tcp_req_info_handle_read_close(c->tcp_req_info); return 0; /* shutdown, closed */ } else if(want == SSL_ERROR_WANT_READ) { +#ifdef USE_WINSOCK ub_winsock_tcp_wouldblock(c->ev->ev, UB_EV_READ); +#endif return 1; /* read more later */ } else if(want == SSL_ERROR_WANT_WRITE) { c->ssl_shake_state = comm_ssl_shake_hs_write; @@ -1505,7 +1509,9 @@ ssl_handle_write(struct comm_point* c) comm_point_listen_for_rw(c, 1, 0); return 1; /* wait for read condition */ } else if(want == SSL_ERROR_WANT_WRITE) { +#ifdef USE_WINSOCK ub_winsock_tcp_wouldblock(c->ev->ev, UB_EV_WRITE); +#endif return 1; /* write more later */ } else if(want == SSL_ERROR_SYSCALL) { #ifdef EPIPE @@ -1555,7 +1561,9 @@ ssl_handle_write(struct comm_point* c) comm_point_listen_for_rw(c, 1, 0); return 1; /* wait for read condition */ } else if(want == SSL_ERROR_WANT_WRITE) { +#ifdef USE_WINSOCK ub_winsock_tcp_wouldblock(c->ev->ev, UB_EV_WRITE); +#endif return 1; /* write more later */ } else if(want == SSL_ERROR_SYSCALL) { #ifdef EPIPE @@ -3940,11 +3948,13 @@ comm_point_close(struct comm_point* c) /* close fd after removing from event lists, or epoll.. is messed up */ if(c->fd != -1 && !c->do_not_close) { +#ifdef USE_WINSOCK if(c->type == comm_tcp || c->type == comm_http) { /* delete sticky events for the fd, it gets closed */ ub_winsock_tcp_wouldblock(c->ev->ev, UB_EV_READ); ub_winsock_tcp_wouldblock(c->ev->ev, UB_EV_WRITE); } +#endif verbose(VERB_ALGO, "close fd %d", c->fd); sock_close(c->fd); } From 3aa53e45c88d54f23dd2e3adcd481c60efdd44e5 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 16 Jul 2021 10:26:45 +0200 Subject: [PATCH 286/553] - Fix spelling in doc/unbound.doxygen comment. --- doc/Changelog | 1 + doc/unbound.doxygen | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index e0ee3a83b..4a6231df1 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -2,6 +2,7 @@ - Merge #510 from ndptech: Don't call a function which hasn't been defined. - Fix for #510: in depth, use ifdefs for windows api event calls. + - Fix spelling in doc/unbound.doxygen comment. 6 July 2021: Wouter - iana portlist update. diff --git a/doc/unbound.doxygen b/doc/unbound.doxygen index 4c32d8943..823e09253 100644 --- a/doc/unbound.doxygen +++ b/doc/unbound.doxygen @@ -1076,7 +1076,7 @@ TREEVIEW_WIDTH = 250 FORMULA_FONTSIZE = 10 -# Use the FORMULA_TRANPARENT tag to determine whether or not the images +# Use the FORMULA_TRANSPARENT tag to determine whether or not the images # generated for formulas are transparent PNGs. Transparent PNGs are # not supported properly for IE 6.0, but are supported on all modern browsers. # Note that when changing this option you need to delete any form_*.png files From e388ba29671d7cc9eb5445c4cefbf6008f6d0488 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 16 Jul 2021 10:28:09 +0200 Subject: [PATCH 287/553] - Fix spelling in localzone.h comment. --- doc/Changelog | 1 + services/localzone.h | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 4a6231df1..6863c23c9 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -3,6 +3,7 @@ defined. - Fix for #510: in depth, use ifdefs for windows api event calls. - Fix spelling in doc/unbound.doxygen comment. + - Fix spelling in localzone.h comment. 6 July 2021: Wouter - iana portlist update. diff --git a/services/localzone.h b/services/localzone.h index 3da5c8754..b52d81dc7 100644 --- a/services/localzone.h +++ b/services/localzone.h @@ -158,7 +158,7 @@ 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 + /** if data contains zone apex SOA data, this is a ptr to an * artificial negative SOA rrset (TTL is the minimum of the TTL and the * SOA.MINIMUM). */ struct ub_packed_rrset_key* soa_negative; From 9e712e8a0b720574e655f133e5005dacd6bdcb4a Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 16 Jul 2021 10:51:27 +0200 Subject: [PATCH 288/553] - Fix unbound-control local_data and local_datas to print detailed syntax errors. --- daemon/remote.c | 34 ++++++++++++++++++++++++++++++---- doc/Changelog | 2 ++ doc/unbound-control.8.in | 3 +-- 3 files changed, 33 insertions(+), 6 deletions(-) diff --git a/daemon/remote.c b/daemon/remote.c index 5836c0c79..4cba37895 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -1304,10 +1304,35 @@ do_zones_remove(RES* ssl, struct local_zones* zones) (void)ssl_printf(ssl, "removed %d zones\n", num); } +/** check syntax of newly added RR */ +static int +check_RR_syntax(RES* ssl, char* str, int line) +{ + uint8_t rr[LDNS_RR_BUF_SIZE]; + size_t len = sizeof(rr), dname_len = 0; + int s = sldns_str2wire_rr_buf(str, rr, &len, &dname_len, 3600, + NULL, 0, NULL, 0); + if(s != 0) { + char linestr[32]; + if(line == 0) + linestr[0]=0; + else snprintf(linestr, sizeof(linestr), "line %d ", line); + if(!ssl_printf(ssl, "error parsing local-data at %sposition %d '%s': %s\n", + linestr, LDNS_WIREPARSE_OFFSET(s), str, + sldns_get_errorstr_parse(s))) + return 0; + return 0; + } + return 1; +} + /** Add new RR data */ static int -perform_data_add(RES* ssl, struct local_zones* zones, char* arg) +perform_data_add(RES* ssl, struct local_zones* zones, char* arg, int line) { + if(!check_RR_syntax(ssl, arg, line)) { + return 0; + } if(!local_zones_add_RR(zones, arg)) { ssl_printf(ssl,"error in syntax or out of memory, %s\n", arg); return 0; @@ -1319,7 +1344,7 @@ perform_data_add(RES* ssl, struct local_zones* zones, char* arg) static void do_data_add(RES* ssl, struct local_zones* zones, char* arg) { - if(!perform_data_add(ssl, zones, arg)) + if(!perform_data_add(ssl, zones, arg, 0)) return; send_ok(ssl); } @@ -1329,11 +1354,12 @@ static void do_datas_add(RES* ssl, struct local_zones* zones) { char buf[2048]; - int num = 0; + int num = 0, line = 0; while(ssl_read_line(ssl, buf, sizeof(buf))) { if(buf[0] == 0x04 && buf[1] == 0) break; /* end of transmission */ - if(!perform_data_add(ssl, zones, buf)) { + line++; + if(!perform_data_add(ssl, zones, buf, line)) { if(!ssl_printf(ssl, "error for input line: %s\n", buf)) return; } diff --git a/doc/Changelog b/doc/Changelog index 6863c23c9..f97944e3e 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -4,6 +4,8 @@ - Fix for #510: in depth, use ifdefs for windows api event calls. - Fix spelling in doc/unbound.doxygen comment. - Fix spelling in localzone.h comment. + - Fix unbound-control local_data and local_datas to print detailed + syntax errors. 6 July 2021: Wouter - iana portlist update. diff --git a/doc/unbound-control.8.in b/doc/unbound-control.8.in index dad840cf5..1b5ef393c 100644 --- a/doc/unbound-control.8.in +++ b/doc/unbound-control.8.in @@ -89,8 +89,7 @@ it. If the zone does not exist, the command succeeds. Add new local data, the given resource record. Like \fBlocal\-data\fR config statement, except for when no covering zone exists. In that case this remote control command creates a transparent zone with the same -name as this record. This command is not good at returning detailed syntax -errors. +name as this record. .TP .B local_data_remove \fIname Remove all RR data from local name. If the name already has no items, From 2a8d1a6d10ab4ad1c16d6e820ecd7fc2046f25f6 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 16 Jul 2021 10:53:53 +0200 Subject: [PATCH 289/553] - review fix to remove duplicate error printout. --- daemon/remote.c | 6 +----- doc/Changelog | 1 + 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/daemon/remote.c b/daemon/remote.c index 4cba37895..dd17bff91 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -1359,11 +1359,7 @@ do_datas_add(RES* ssl, struct local_zones* zones) if(buf[0] == 0x04 && buf[1] == 0) break; /* end of transmission */ line++; - if(!perform_data_add(ssl, zones, buf, line)) { - if(!ssl_printf(ssl, "error for input line: %s\n", buf)) - return; - } - else + if(perform_data_add(ssl, zones, buf, line)) num++; } (void)ssl_printf(ssl, "added %d datas\n", num); diff --git a/doc/Changelog b/doc/Changelog index f97944e3e..0d77c5452 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -6,6 +6,7 @@ - Fix spelling in localzone.h comment. - Fix unbound-control local_data and local_datas to print detailed syntax errors. + - review fix to remove duplicate error printout. 6 July 2021: Wouter - iana portlist update. From 9d4644b12583911be2a0c4be9a3bc47dfd95a039 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 16 Jul 2021 13:45:41 +0200 Subject: [PATCH 290/553] - With hide-version unbound also omits the version from http headers. --- daemon/worker.c | 2 +- doc/Changelog | 1 + libunbound/libworker.c | 2 +- services/outside_network.c | 12 +++++++----- services/outside_network.h | 5 ++++- testcode/fake_event.c | 2 +- 6 files changed, 15 insertions(+), 9 deletions(-) diff --git a/daemon/worker.c b/daemon/worker.c index e9e163a04..3fdacef9e 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -1796,7 +1796,7 @@ worker_init(struct worker* worker, struct config_file *cfg, worker->daemon->connect_sslctx, cfg->delay_close, cfg->tls_use_sni, dtenv, cfg->udp_connect, cfg->max_reuse_tcp_queries, cfg->tcp_reuse_timeout, - cfg->tcp_auth_query_timeout); + cfg->tcp_auth_query_timeout, cfg->hide_version); if(!worker->back) { log_err("could not create outgoing sockets"); worker_delete(worker); diff --git a/doc/Changelog b/doc/Changelog index 0d77c5452..472762a59 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -7,6 +7,7 @@ - Fix unbound-control local_data and local_datas to print detailed syntax errors. - review fix to remove duplicate error printout. + - With hide-version unbound also omits the version from http headers. 6 July 2021: Wouter - iana portlist update. diff --git a/libunbound/libworker.c b/libunbound/libworker.c index 8a9ca9419..9c4485cb1 100644 --- a/libunbound/libworker.c +++ b/libunbound/libworker.c @@ -243,7 +243,7 @@ libworker_setup(struct ub_ctx* ctx, int is_bg, struct ub_event_base* eb) cfg->do_udp || cfg->udp_upstream_without_downstream, w->sslctx, cfg->delay_close, cfg->tls_use_sni, NULL, cfg->udp_connect, cfg->max_reuse_tcp_queries, cfg->tcp_reuse_timeout, - cfg->tcp_auth_query_timeout); + cfg->tcp_auth_query_timeout, cfg->hide_version); w->env->outnet = w->back; if(!w->is_bg || w->is_bg_thread) { lock_basic_unlock(&ctx->cfglock); diff --git a/services/outside_network.c b/services/outside_network.c index af14f8622..60dde2bcf 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -1437,7 +1437,7 @@ outside_network_create(struct comm_base *base, size_t bufsize, void (*unwanted_action)(void*), void* unwanted_param, int do_udp, void* sslctx, int delayclose, int tls_use_sni, struct dt_env* dtenv, int udp_connect, int max_reuse_tcp_queries, int tcp_reuse_timeout, - int tcp_auth_query_timeout) + int tcp_auth_query_timeout, int hide_version) { struct outside_network* outnet = (struct outside_network*) calloc(1, sizeof(struct outside_network)); @@ -1471,6 +1471,7 @@ outside_network_create(struct comm_base *base, size_t bufsize, outnet->do_udp = do_udp; outnet->tcp_mss = tcp_mss; outnet->ip_dscp = dscp; + outnet->hide_version = hide_version; #ifndef S_SPLINT_S if(delayclose) { outnet->delayclose = 1; @@ -3436,13 +3437,14 @@ outnet_comm_point_for_tcp(struct outside_network* outnet, /** setup http request headers in buffer for sending query to destination */ static int -setup_http_request(sldns_buffer* buf, char* host, char* path) +setup_http_request(sldns_buffer* buf, char* host, char* path, int hide_version) { sldns_buffer_clear(buf); sldns_buffer_printf(buf, "GET /%s HTTP/1.1\r\n", path); sldns_buffer_printf(buf, "Host: %s\r\n", host); - sldns_buffer_printf(buf, "User-Agent: unbound/%s\r\n", - PACKAGE_VERSION); + if(!hide_version) + sldns_buffer_printf(buf, "User-Agent: unbound/%s\r\n", + PACKAGE_VERSION); /* We do not really do multiple queries per connection, * but this header setting is also not needed. * sldns_buffer_printf(buf, "Connection: close\r\n") */ @@ -3494,7 +3496,7 @@ outnet_comm_point_for_http(struct outside_network* outnet, comm_point_start_listening(cp, fd, timeout); /* setup http request in cp->buffer */ - if(!setup_http_request(cp->buffer, host, path)) { + if(!setup_http_request(cp->buffer, host, path, outnet->hide_version)) { log_err("error setting up http request"); comm_point_delete(cp); return NULL; diff --git a/services/outside_network.h b/services/outside_network.h index 071f37dde..97ed048af 100644 --- a/services/outside_network.h +++ b/services/outside_network.h @@ -146,6 +146,8 @@ struct outside_network { int tcp_mss; /** IP_TOS socket option requested on the sockets */ int ip_dscp; + /** hide version option */ + int hide_version; /** * Array of tcp pending used for outgoing TCP connections. @@ -544,6 +546,7 @@ struct serviced_query { * @param max_reuse_tcp_queries: max number of queries on a reuse connection. * @param tcp_reuse_timeout: timeout for REUSE entries in milliseconds. * @param tcp_auth_query_timeout: timeout in milliseconds for TCP queries to auth servers. + * @param hide_version: if the version is hidden. * @return: the new structure (with no pending answers) or NULL on error. */ struct outside_network* outside_network_create(struct comm_base* base, @@ -554,7 +557,7 @@ struct outside_network* outside_network_create(struct comm_base* base, void (*unwanted_action)(void*), void* unwanted_param, int do_udp, void* sslctx, int delayclose, int tls_use_sni, struct dt_env *dtenv, int udp_connect, int max_reuse_tcp_queries, int tcp_reuse_timeout, - int tcp_auth_query_timeout); + int tcp_auth_query_timeout, int hide_version); /** * Delete outside_network structure. diff --git a/testcode/fake_event.c b/testcode/fake_event.c index a19a1ec0d..feb581d08 100644 --- a/testcode/fake_event.c +++ b/testcode/fake_event.c @@ -1052,7 +1052,7 @@ outside_network_create(struct comm_base* base, size_t bufsize, int ATTR_UNUSED(delayclose), int ATTR_UNUSED(tls_use_sni), struct dt_env* ATTR_UNUSED(dtenv), int ATTR_UNUSED(udp_connect), int ATTR_UNUSED(max_reuse_tcp_queries), int ATTR_UNUSED(tcp_reuse_timeout), - int ATTR_UNUSED(tcp_auth_query_timeout)) + int ATTR_UNUSED(tcp_auth_query_timeout), int ATTR_UNUSED(hide_version)) { struct replay_runtime* runtime = (struct replay_runtime*)base; struct outside_network* outnet = calloc(1, From f693cbc90bfce548383039856b474d79676f0b88 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 16 Jul 2021 14:02:55 +0200 Subject: [PATCH 291/553] Revert "- With hide-version unbound also omits the version from http headers." This reverts commit 9d4644b12583911be2a0c4be9a3bc47dfd95a039. --- daemon/worker.c | 2 +- doc/Changelog | 1 - libunbound/libworker.c | 2 +- services/outside_network.c | 12 +++++------- services/outside_network.h | 5 +---- testcode/fake_event.c | 2 +- 6 files changed, 9 insertions(+), 15 deletions(-) diff --git a/daemon/worker.c b/daemon/worker.c index 3fdacef9e..e9e163a04 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -1796,7 +1796,7 @@ worker_init(struct worker* worker, struct config_file *cfg, worker->daemon->connect_sslctx, cfg->delay_close, cfg->tls_use_sni, dtenv, cfg->udp_connect, cfg->max_reuse_tcp_queries, cfg->tcp_reuse_timeout, - cfg->tcp_auth_query_timeout, cfg->hide_version); + cfg->tcp_auth_query_timeout); if(!worker->back) { log_err("could not create outgoing sockets"); worker_delete(worker); diff --git a/doc/Changelog b/doc/Changelog index 472762a59..0d77c5452 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -7,7 +7,6 @@ - Fix unbound-control local_data and local_datas to print detailed syntax errors. - review fix to remove duplicate error printout. - - With hide-version unbound also omits the version from http headers. 6 July 2021: Wouter - iana portlist update. diff --git a/libunbound/libworker.c b/libunbound/libworker.c index 9c4485cb1..8a9ca9419 100644 --- a/libunbound/libworker.c +++ b/libunbound/libworker.c @@ -243,7 +243,7 @@ libworker_setup(struct ub_ctx* ctx, int is_bg, struct ub_event_base* eb) cfg->do_udp || cfg->udp_upstream_without_downstream, w->sslctx, cfg->delay_close, cfg->tls_use_sni, NULL, cfg->udp_connect, cfg->max_reuse_tcp_queries, cfg->tcp_reuse_timeout, - cfg->tcp_auth_query_timeout, cfg->hide_version); + cfg->tcp_auth_query_timeout); w->env->outnet = w->back; if(!w->is_bg || w->is_bg_thread) { lock_basic_unlock(&ctx->cfglock); diff --git a/services/outside_network.c b/services/outside_network.c index 60dde2bcf..af14f8622 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -1437,7 +1437,7 @@ outside_network_create(struct comm_base *base, size_t bufsize, void (*unwanted_action)(void*), void* unwanted_param, int do_udp, void* sslctx, int delayclose, int tls_use_sni, struct dt_env* dtenv, int udp_connect, int max_reuse_tcp_queries, int tcp_reuse_timeout, - int tcp_auth_query_timeout, int hide_version) + int tcp_auth_query_timeout) { struct outside_network* outnet = (struct outside_network*) calloc(1, sizeof(struct outside_network)); @@ -1471,7 +1471,6 @@ outside_network_create(struct comm_base *base, size_t bufsize, outnet->do_udp = do_udp; outnet->tcp_mss = tcp_mss; outnet->ip_dscp = dscp; - outnet->hide_version = hide_version; #ifndef S_SPLINT_S if(delayclose) { outnet->delayclose = 1; @@ -3437,14 +3436,13 @@ outnet_comm_point_for_tcp(struct outside_network* outnet, /** setup http request headers in buffer for sending query to destination */ static int -setup_http_request(sldns_buffer* buf, char* host, char* path, int hide_version) +setup_http_request(sldns_buffer* buf, char* host, char* path) { sldns_buffer_clear(buf); sldns_buffer_printf(buf, "GET /%s HTTP/1.1\r\n", path); sldns_buffer_printf(buf, "Host: %s\r\n", host); - if(!hide_version) - sldns_buffer_printf(buf, "User-Agent: unbound/%s\r\n", - PACKAGE_VERSION); + sldns_buffer_printf(buf, "User-Agent: unbound/%s\r\n", + PACKAGE_VERSION); /* We do not really do multiple queries per connection, * but this header setting is also not needed. * sldns_buffer_printf(buf, "Connection: close\r\n") */ @@ -3496,7 +3494,7 @@ outnet_comm_point_for_http(struct outside_network* outnet, comm_point_start_listening(cp, fd, timeout); /* setup http request in cp->buffer */ - if(!setup_http_request(cp->buffer, host, path, outnet->hide_version)) { + if(!setup_http_request(cp->buffer, host, path)) { log_err("error setting up http request"); comm_point_delete(cp); return NULL; diff --git a/services/outside_network.h b/services/outside_network.h index 97ed048af..071f37dde 100644 --- a/services/outside_network.h +++ b/services/outside_network.h @@ -146,8 +146,6 @@ struct outside_network { int tcp_mss; /** IP_TOS socket option requested on the sockets */ int ip_dscp; - /** hide version option */ - int hide_version; /** * Array of tcp pending used for outgoing TCP connections. @@ -546,7 +544,6 @@ struct serviced_query { * @param max_reuse_tcp_queries: max number of queries on a reuse connection. * @param tcp_reuse_timeout: timeout for REUSE entries in milliseconds. * @param tcp_auth_query_timeout: timeout in milliseconds for TCP queries to auth servers. - * @param hide_version: if the version is hidden. * @return: the new structure (with no pending answers) or NULL on error. */ struct outside_network* outside_network_create(struct comm_base* base, @@ -557,7 +554,7 @@ struct outside_network* outside_network_create(struct comm_base* base, void (*unwanted_action)(void*), void* unwanted_param, int do_udp, void* sslctx, int delayclose, int tls_use_sni, struct dt_env *dtenv, int udp_connect, int max_reuse_tcp_queries, int tcp_reuse_timeout, - int tcp_auth_query_timeout, int hide_version); + int tcp_auth_query_timeout); /** * Delete outside_network structure. diff --git a/testcode/fake_event.c b/testcode/fake_event.c index feb581d08..a19a1ec0d 100644 --- a/testcode/fake_event.c +++ b/testcode/fake_event.c @@ -1052,7 +1052,7 @@ outside_network_create(struct comm_base* base, size_t bufsize, int ATTR_UNUSED(delayclose), int ATTR_UNUSED(tls_use_sni), struct dt_env* ATTR_UNUSED(dtenv), int ATTR_UNUSED(udp_connect), int ATTR_UNUSED(max_reuse_tcp_queries), int ATTR_UNUSED(tcp_reuse_timeout), - int ATTR_UNUSED(tcp_auth_query_timeout), int ATTR_UNUSED(hide_version)) + int ATTR_UNUSED(tcp_auth_query_timeout)) { struct replay_runtime* runtime = (struct replay_runtime*)base; struct outside_network* outnet = calloc(1, From ca4d68c64c540742d27af2003018db5eb1c6cf43 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Fri, 16 Jul 2021 14:09:15 +0200 Subject: [PATCH 292/553] - Introduce 'http-user-agent:' and 'hide-http-user-agent:' options. --- configure | 14 +- doc/Changelog | 6 +- doc/example.conf.in | 7 + doc/unbound.conf.5.in | 11 + services/authzone.c | 2 +- services/outside_network.c | 23 +- services/outside_network.h | 4 +- testcode/fake_event.c | 3 +- .../127.0.0.1/example.com.zone | 3 + .../http_user_agent.tdir/http_user_agent.conf | 24 + .../http_user_agent.tdir/http_user_agent.dsc | 16 + .../http_user_agent.tdir/http_user_agent.post | 11 + .../http_user_agent.tdir/http_user_agent.pre | 37 + .../http_user_agent.tdir/http_user_agent.test | 103 + testdata/http_user_agent.tdir/petal.key | 21 + testdata/http_user_agent.tdir/petal.pem | 14 + .../http_user_agent.tdir/unbound_control.key | 39 + .../http_user_agent.tdir/unbound_control.pem | 22 + .../http_user_agent.tdir/unbound_server.key | 39 + .../http_user_agent.tdir/unbound_server.pem | 22 + util/config_file.c | 7 + util/config_file.h | 4 + util/configlexer.c | 4929 +++++++++-------- util/configlexer.lex | 2 + util/configparser.c | 3796 ++++++------- util/configparser.h | 318 +- util/configparser.y | 18 + 27 files changed, 5000 insertions(+), 4495 deletions(-) create mode 100644 testdata/http_user_agent.tdir/127.0.0.1/example.com.zone create mode 100644 testdata/http_user_agent.tdir/http_user_agent.conf create mode 100644 testdata/http_user_agent.tdir/http_user_agent.dsc create mode 100644 testdata/http_user_agent.tdir/http_user_agent.post create mode 100644 testdata/http_user_agent.tdir/http_user_agent.pre create mode 100644 testdata/http_user_agent.tdir/http_user_agent.test create mode 100644 testdata/http_user_agent.tdir/petal.key create mode 100644 testdata/http_user_agent.tdir/petal.pem create mode 100644 testdata/http_user_agent.tdir/unbound_control.key create mode 100644 testdata/http_user_agent.tdir/unbound_control.pem create mode 100644 testdata/http_user_agent.tdir/unbound_server.key create mode 100644 testdata/http_user_agent.tdir/unbound_server.pem diff --git a/configure b/configure index 3ed5dadda..7e722b59e 100755 --- a/configure +++ b/configure @@ -811,6 +811,7 @@ infodir docdir oldincludedir includedir +runstatedir localstatedir sharedstatedir sysconfdir @@ -961,6 +962,7 @@ datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -1213,6 +1215,15 @@ do | -silent | --silent | --silen | --sile | --sil) silent=yes ;; + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1350,7 +1361,7 @@ fi for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir + libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1503,6 +1514,7 @@ Fine tuning of the installation directories: --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] diff --git a/doc/Changelog b/doc/Changelog index 0d77c5452..68926abfa 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +16 July 2021: George + - Introduce 'http-user-agent:' and 'hide-http-user-agent:' options. + 16 July 2021: Wouter - Merge #510 from ndptech: Don't call a function which hasn't been defined. @@ -19,7 +22,8 @@ - Fix Wunused-result compile warnings. 2 July 2021: Tom - - Merge PR #491: Add SVCB and HTTPS types and handling according to draft-ietf-dnsop-svcb-https + - Merge PR #491: Add SVCB and HTTPS types and handling according to + draft-ietf-dnsop-svcb-https. 2 July 2021: Wouter - Fix #506: Python Module Seems to Leak Memory if it Experiences an diff --git a/doc/example.conf.in b/doc/example.conf.in index 4b135f5db..e13c3ad24 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -371,6 +371,9 @@ server: # enable to not answer trustanchor.unbound queries. # hide-trustanchor: no + # enable to not set the User-Agent HTTP header. + # hide-http-user-agent: no + # the identity to report. Leave "" or default to return hostname. # identity: "" @@ -380,6 +383,10 @@ server: # NSID identity (hex string, or "ascii_somestring"). default disabled. # nsid: "aabbccdd" + # User-Agent HTTP header to use. Leave "" or default to use package name + # and version. + # http-user-agent: "" + # the target fetch policy. # series of integers describing the policy per dependency depth. # The number of values in the list determines the maximum dependency diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 7fe0994e4..d5315d53b 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -852,6 +852,17 @@ If enabled version.server and version.bind queries are refused. Set the version to report. If set to "", the default, then the package version is returned. .TP +.B hide\-http\-user\-agent: \fI +If enabled the HTTP header User-Agent is not set. Use with caution as some +webserver configurations may reject HTTP requests lacking this header. +If needed, it is better to explicitly set the +.B http\-user\-agent +below. +.TP +.B http\-user\-agent: \fI +Set the HTTP User-Agent header for outgoing HTTP requests. If set to "", +the default, then the package name and version are used. +.TP .B nsid:\fR Add the specified nsid to the EDNS section of the answer when queried with an NSID EDNS enabled packet. As a sequence of hex characters or diff --git a/services/authzone.c b/services/authzone.c index c1567aecb..e6e3a8cff 100644 --- a/services/authzone.c +++ b/services/authzone.c @@ -5426,7 +5426,7 @@ xfr_transfer_init_fetch(struct auth_xfer* xfr, struct module_env* env) xfr->task_transfer->cp = outnet_comm_point_for_http( env->outnet, auth_xfer_transfer_http_callback, xfr, &addr, addrlen, -1, master->ssl, master->host, - master->file); + master->file, env->cfg); if(!xfr->task_transfer->cp) { char zname[255+1], as[256]; dname_str(xfr->name, zname); diff --git a/services/outside_network.c b/services/outside_network.c index af14f8622..03526d568 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -3434,15 +3434,28 @@ outnet_comm_point_for_tcp(struct outside_network* outnet, return cp; } +/** setup the User-Agent HTTP header based on http-user-agent configuration */ +static void +setup_http_user_agent(sldns_buffer* buf, struct config_file* cfg) +{ + if(cfg->hide_http_user_agent) return; + if(cfg->http_user_agent==NULL || cfg->http_user_agent[0] == 0) { + sldns_buffer_printf(buf, "User-Agent: %s/%s\r\n", PACKAGE_NAME, + PACKAGE_VERSION); + } else { + sldns_buffer_printf(buf, "User-Agent: %s\r\n", cfg->http_user_agent); + } +} + /** setup http request headers in buffer for sending query to destination */ static int -setup_http_request(sldns_buffer* buf, char* host, char* path) +setup_http_request(sldns_buffer* buf, char* host, char* path, + struct config_file* cfg) { sldns_buffer_clear(buf); sldns_buffer_printf(buf, "GET /%s HTTP/1.1\r\n", path); sldns_buffer_printf(buf, "Host: %s\r\n", host); - sldns_buffer_printf(buf, "User-Agent: unbound/%s\r\n", - PACKAGE_VERSION); + setup_http_user_agent(buf, cfg); /* We do not really do multiple queries per connection, * but this header setting is also not needed. * sldns_buffer_printf(buf, "Connection: close\r\n") */ @@ -3458,7 +3471,7 @@ struct comm_point* outnet_comm_point_for_http(struct outside_network* outnet, comm_point_callback_type* cb, void* cb_arg, struct sockaddr_storage* to_addr, socklen_t to_addrlen, int timeout, - int ssl, char* host, char* path) + int ssl, char* host, char* path, struct config_file* cfg) { /* cp calls cb with err=NETEVENT_DONE when transfer is done */ struct comm_point* cp; @@ -3494,7 +3507,7 @@ outnet_comm_point_for_http(struct outside_network* outnet, comm_point_start_listening(cp, fd, timeout); /* setup http request in cp->buffer */ - if(!setup_http_request(cp->buffer, host, path)) { + if(!setup_http_request(cp->buffer, host, path, cfg)) { log_err("error setting up http request"); comm_point_delete(cp); return NULL; diff --git a/services/outside_network.h b/services/outside_network.h index 071f37dde..67403f736 100644 --- a/services/outside_network.h +++ b/services/outside_network.h @@ -63,6 +63,7 @@ struct edns_option; struct module_env; struct module_qstate; struct query_info; +struct config_file; /** * Send queries to outside servers and wait for answers from servers. @@ -740,12 +741,13 @@ struct comm_point* outnet_comm_point_for_tcp(struct outside_network* outnet, * @param ssl: set to true for https. * @param host: hostname to use for the destination. part of http request. * @param path: pathname to lookup, eg. name of the file on the destination. + * @param cfg: running configuration for User-Agent setup. * @return http_out commpoint, or NULL. */ struct comm_point* outnet_comm_point_for_http(struct outside_network* outnet, comm_point_callback_type* cb, void* cb_arg, struct sockaddr_storage* to_addr, socklen_t to_addrlen, int timeout, - int ssl, char* host, char* path); + int ssl, char* host, char* path, struct config_file* cfg); /** connect tcp connection to addr, 0 on failure */ int outnet_tcp_connect(int s, struct sockaddr_storage* addr, socklen_t addrlen); diff --git a/testcode/fake_event.c b/testcode/fake_event.c index a19a1ec0d..5f81b9eb8 100644 --- a/testcode/fake_event.c +++ b/testcode/fake_event.c @@ -1749,7 +1749,7 @@ struct comm_point* outnet_comm_point_for_tcp(struct outside_network* outnet, struct comm_point* outnet_comm_point_for_http(struct outside_network* outnet, comm_point_callback_type* cb, void* cb_arg, struct sockaddr_storage* to_addr, socklen_t to_addrlen, int timeout, - int ssl, char* host, char* path) + int ssl, char* host, char* path, struct config_file* cfg) { struct replay_runtime* runtime = (struct replay_runtime*) outnet->base; @@ -1771,6 +1771,7 @@ struct comm_point* outnet_comm_point_for_http(struct outside_network* outnet, (void)ssl; (void)host; (void)path; + (void)cfg; /* handle http comm point and return contents from test script */ return (struct comm_point*)fc; diff --git a/testdata/http_user_agent.tdir/127.0.0.1/example.com.zone b/testdata/http_user_agent.tdir/127.0.0.1/example.com.zone new file mode 100644 index 000000000..695eb1c32 --- /dev/null +++ b/testdata/http_user_agent.tdir/127.0.0.1/example.com.zone @@ -0,0 +1,3 @@ +example.com. IN SOA ns.example.com. hostmaster.example.com. 1 3600 900 86400 3600 +example.com. IN NS ns.example.net. +www.example.com. IN A 1.2.3.4 diff --git a/testdata/http_user_agent.tdir/http_user_agent.conf b/testdata/http_user_agent.tdir/http_user_agent.conf new file mode 100644 index 000000000..c563416ae --- /dev/null +++ b/testdata/http_user_agent.tdir/http_user_agent.conf @@ -0,0 +1,24 @@ +auth-zone: + name: "example.com" + for-upstream: yes + for-downstream: yes + url: "https://127.0.0.1:@TOPORT@/example.com.zone" +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" +server: + verbosity: 7 + interface: 127.0.0.1 + port: @PORT@ + use-syslog: no + directory: "" + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no + use-caps-for-id: yes diff --git a/testdata/http_user_agent.tdir/http_user_agent.dsc b/testdata/http_user_agent.tdir/http_user_agent.dsc new file mode 100644 index 000000000..6b24c43fc --- /dev/null +++ b/testdata/http_user_agent.tdir/http_user_agent.dsc @@ -0,0 +1,16 @@ +BaseName: http_user_agent +Version: 1.0 +Description: Check the http-user-agent configuration +CreationDate: Wed 2 Jun 13:59:26 CEST 2021 +Maintainer: +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: http_user_agent.pre +Post: http_user_agent.post +Test: http_user_agent.test +AuxFiles: +Passed: +Failure: diff --git a/testdata/http_user_agent.tdir/http_user_agent.post b/testdata/http_user_agent.tdir/http_user_agent.post new file mode 100644 index 000000000..797ff57c8 --- /dev/null +++ b/testdata/http_user_agent.tdir/http_user_agent.post @@ -0,0 +1,11 @@ +# #-- http_user_agent.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 +PRE="../.." +. ../common.sh +kill_pid $UNBOUND_PID +kill_pid $PETAL_PID diff --git a/testdata/http_user_agent.tdir/http_user_agent.pre b/testdata/http_user_agent.tdir/http_user_agent.pre new file mode 100644 index 000000000..e94bd536e --- /dev/null +++ b/testdata/http_user_agent.tdir/http_user_agent.pre @@ -0,0 +1,37 @@ +# #-- http_user_agent.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 +get_random_port 3 +UNBOUND_PORT=$RND_PORT +PETAL_PORT=$(($RND_PORT + 1)) +CONTROL_PORT=$(($RND_PORT + 3)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "PETAL_PORT=$PETAL_PORT" >> .tpkg.var.test +echo "CONTROL_PORT=$CONTROL_PORT" >> .tpkg.var.test + +get_make +(cd $PRE; $MAKE petal) + +# start https daemon +# More verbosity because we need to see the HTTP headers +$PRE/petal -vv -a "127.0.0.1" -p $PETAL_PORT >petal.log 2>&1 & +PETAL_PID=$! +echo "PETAL_PID=$PETAL_PID" >> .tpkg.var.test +cat .tpkg.var.test +wait_petal_up petal.log + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$PETAL_PORT'/' -e 's/@CONTROL_PORT\@/'$CONTROL_PORT'/'< http_user_agent.conf > ub.conf +# start unbound in the background +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_unbound_up unbound.log + diff --git a/testdata/http_user_agent.tdir/http_user_agent.test b/testdata/http_user_agent.tdir/http_user_agent.test new file mode 100644 index 000000000..afc0fbbe6 --- /dev/null +++ b/testdata/http_user_agent.tdir/http_user_agent.test @@ -0,0 +1,103 @@ +# #-- http_user_agent.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="../.." + +# Query and check check that we get the correct answer from the auth_zone +query () { + echo "> dig www.example.com." + dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile + if grep SERVFAIL outfile; then + echo "> try again" + dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile + fi + if grep SERVFAIL outfile; then + echo "> try again" + sleep 1 + dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile + fi + if grep SERVFAIL outfile; then + echo "> try again" + sleep 1 + dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile + fi + if grep SERVFAIL outfile; then + echo "> try again" + sleep 1 + dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile + fi + if grep SERVFAIL outfile; then + echo "> try again" + sleep 10 + dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile + fi + if grep SERVFAIL outfile; then + echo "> try again" + sleep 10 + dig @localhost -p $UNBOUND_PORT www.example.com. | tee outfile + fi + echo "> check answer" + if grep "1.2.3.4" outfile; then + echo "OK" + else + echo "Not OK" + exit 1 + fi +} + +# Reload the configuration and retransfer the zone +reload_and_retransfer () { + echo "> Reloading Unbound" + echo "$PRE/unbound-control -c ub.conf reload" + $PRE/unbound-control -c ub.conf reload + if test $? -ne 0; then + echo "wrong exit value from unbound-control" + exit 1 + fi + echo "> Refetching example.com" + echo "$PRE/unbound-control -c ub.conf auth_zone_transfer example.com" + $PRE/unbound-control -c ub.conf auth_zone_transfer example.com + if test $? -ne 0; then + echo "wrong exit value from unbound-control" + exit 1 + fi +} + +# do the test +query +# add custom http-user-agent +echo "server: http-user-agent: customUA" >> ub.conf +reload_and_retransfer +query +# hide http-user-agent +echo "server: hide-http-user-agent: yes" >> ub.conf +reload_and_retransfer +query + +echo "> cat logfiles" +cat petal.log +cat unbound.log + +# check petal.log for the correct number of occurences. +# It should be 2 User-Agents, one being the custom. +echo "> check User-Agent occurences" +occurences=`grep "User-Agent:" petal.log | wc -l` +echo $occurences +if test $occurences -eq 2; then + echo "OK" +else + echo "Not OK" + exit 1 +fi +echo "> check custom User-Agent" +if grep "User-Agent: customUA" petal.log; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + +exit 0 diff --git a/testdata/http_user_agent.tdir/petal.key b/testdata/http_user_agent.tdir/petal.key new file mode 100644 index 000000000..6614e498f --- /dev/null +++ b/testdata/http_user_agent.tdir/petal.key @@ -0,0 +1,21 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIDfQIBAAKBwQC1xQ/Kca6zszZbcCtdOTIH2Uy2gOy/DfabMUU7TmNPm0dVE0NJ +RuN+Rm304SonpwghfP2/ULZNnuDgpG03/32yI7k/VzG6iA4hiF7tT/KAAWC/+2l1 +QCsawCV2bSrFK0VhcZr7ALqXd8vkDaQ867K029ypjOQtAJ85qdO3mERy7TGtdUcu +O6hLeVet419YeQ2F8cfNxn63d7bOzNGLPW5xwaCd3UcgD+Ib0k4xfFvbinvPQUeU +J/i4YDWexFYSL+ECAwEAAQKBwCLXXQl+9O+5AEhSnd1Go1Jh0pSA7eBJOuXQcebG +Rb7ykp+6C4G2NtDziwwPRNdI6wQQQ0sym18RfyVQHydGr78/nbiIbB3HCn5e92Mh +mefzW6ow9Kvm2txLzGKA1lvoyRbNm81jnG/eygi3u7Nqd5PNv+4dHj2RkTlmxOeh +qnDMVP5md8uZPv6lYNnrnIzvLCR5vnPNdVwn89AqzI85IcDZdy0R9ZX4NBbsDgAU +6ig6uXuRXvSGiyJ/OUXSrnogaQJhAOjvkHUhVZQkPOxO90TNH4j0GdKKtbSWxIdz +lKfuJeBAEqs0TL+C6vbS81Xw3W1alyDdUBk3rJMOBqW6Ryq5HNL+j5H+Jfsh7fvc +Yle+5wHGci0P9zCFZCrY8It7n9XFIwJhAMfEi6oJa2G8waPJ1bQhxka82Tf9pnKM +XCn/1BBOFjVIx5F842cpA+zp5a62GENTGYPQTTRBB/2/ZwnW5aIkrlg54AtmbqBZ +Oh+2kJdJQD/tfoVmc5soUE2ScTHadK5RKwJhAN4w9kjkXS+MSZjX0kIMsBIBVkhh +C+aREjJqa9ir7/Ey7RvmLXdYuCxtGLRXp7/R8+rjcK49Tx6O+IRJZe042mfhbq3C +EhS1Tr86f4xXix9EXlDhs9bSxrOgcAN9Dv/opQJhAK7eBcPaav0rVfYh/8emqQHS +3fJ9Pu6WnzbEksWTFS2ff9KDGCx9YspIFJ5TF/oXDAaumGZdZrlgirm6O1kr8tGY +F97i04PZl1+bWAaWQH+1TUNI43m2WFUPE7coG2tb8QJgcddDg9VlXliZqgcETZfJ +kJmYETxrcSn3ao6v116N8yxhEgUgjkmsCTiFgx36iDVnXwK6PIt+sIu8MC7eYNa3 +berrv/M21K0LRn20IWRxvUobG070weHCAgkko7fTWgr2 +-----END RSA PRIVATE KEY----- diff --git a/testdata/http_user_agent.tdir/petal.pem b/testdata/http_user_agent.tdir/petal.pem new file mode 100644 index 000000000..19c8b895b --- /dev/null +++ b/testdata/http_user_agent.tdir/petal.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICFzCCAUACCQDO660L5y5LGDANBgkqhkiG9w0BAQUFADAQMQ4wDAYDVQQDEwVw +ZXRhbDAeFw0xMDA5MzAxMzQzMDFaFw0zMDA2MTcxMzQzMDFaMBAxDjAMBgNVBAMT +BXBldGFsMIHfMA0GCSqGSIb3DQEBAQUAA4HNADCByQKBwQC1xQ/Kca6zszZbcCtd +OTIH2Uy2gOy/DfabMUU7TmNPm0dVE0NJRuN+Rm304SonpwghfP2/ULZNnuDgpG03 +/32yI7k/VzG6iA4hiF7tT/KAAWC/+2l1QCsawCV2bSrFK0VhcZr7ALqXd8vkDaQ8 +67K029ypjOQtAJ85qdO3mERy7TGtdUcuO6hLeVet419YeQ2F8cfNxn63d7bOzNGL +PW5xwaCd3UcgD+Ib0k4xfFvbinvPQUeUJ/i4YDWexFYSL+ECAwEAATANBgkqhkiG +9w0BAQUFAAOBwQBBkX9KDP2RXbg+xPmdJ4P6CwvA5x1LZwC++ydVx4NlvT0pWicD +ZUnXjcWAJlkeOuUBAqFG7WHTrXpUUAjmdqFVq2yFjteUYBdrFz0RDB2jM9feeKYO +mTgxdZyT9a6humxCxt5VfgT02axLjm/2AqCyFPMbf4PASoJDln01AEuZLZ8Xl2gV +bYHMnHTGoD1Hu6FNEzRgkMC6XT8X3YjHvzQhpc/qL5wEfEsinQGdX4twsuWbf8xd +q7miNnkO8vd0maw= +-----END CERTIFICATE----- diff --git a/testdata/http_user_agent.tdir/unbound_control.key b/testdata/http_user_agent.tdir/unbound_control.key new file mode 100644 index 000000000..753a4ef61 --- /dev/null +++ b/testdata/http_user_agent.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/http_user_agent.tdir/unbound_control.pem b/testdata/http_user_agent.tdir/unbound_control.pem new file mode 100644 index 000000000..a1edf7017 --- /dev/null +++ b/testdata/http_user_agent.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/http_user_agent.tdir/unbound_server.key b/testdata/http_user_agent.tdir/unbound_server.key new file mode 100644 index 000000000..370a7bbb2 --- /dev/null +++ b/testdata/http_user_agent.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/http_user_agent.tdir/unbound_server.pem b/testdata/http_user_agent.tdir/unbound_server.pem new file mode 100644 index 000000000..986807310 --- /dev/null +++ b/testdata/http_user_agent.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----- diff --git a/util/config_file.c b/util/config_file.c index 96fade541..bbbfe24f5 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -238,8 +238,10 @@ config_create(void) cfg->hide_identity = 0; cfg->hide_version = 0; cfg->hide_trustanchor = 0; + cfg->hide_http_user_agent = 0; cfg->identity = NULL; cfg->version = NULL; + cfg->http_user_agent = NULL; cfg->nsid_cfg_str = NULL; cfg->nsid = NULL; cfg->nsid_len = 0; @@ -595,8 +597,10 @@ int config_set_option(struct config_file* cfg, const char* opt, else S_YNO("hide-identity:", hide_identity) else S_YNO("hide-version:", hide_version) else S_YNO("hide-trustanchor:", hide_trustanchor) + else S_YNO("hide-http-user-agent:", hide_http_user_agent) else S_STR("identity:", identity) else S_STR("version:", version) + else S_STR("http-user-agent:", http_user_agent) else if(strcmp(opt, "nsid:") == 0) { free(cfg->nsid_cfg_str); if (!(cfg->nsid_cfg_str = strdup(val))) @@ -1055,8 +1059,10 @@ config_get_option(struct config_file* cfg, const char* opt, else O_YNO(opt, "hide-identity", hide_identity) else O_YNO(opt, "hide-version", hide_version) else O_YNO(opt, "hide-trustanchor", hide_trustanchor) + else O_YNO(opt, "hide-http-user-agent", hide_http_user_agent) else O_STR(opt, "identity", identity) else O_STR(opt, "version", version) + else O_STR(opt, "http-user-agent", http_user_agent) else O_STR(opt, "nsid", nsid_cfg_str) else O_STR(opt, "target-fetch-policy", target_fetch_policy) else O_YNO(opt, "harden-short-bufsize", harden_short_bufsize) @@ -1532,6 +1538,7 @@ config_delete(struct config_file* cfg) #endif free(cfg->identity); free(cfg->version); + free(cfg->http_user_agent); free(cfg->nsid_cfg_str); free(cfg->nsid); free(cfg->module_conf); diff --git a/util/config_file.h b/util/config_file.h index 9441a5540..d61f7ce8c 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -340,10 +340,14 @@ struct config_file { int hide_version; /** do not report trustanchor (trustanchor.unbound) */ int hide_trustanchor; + /** do not report the User-Agent HTTP header */ + int hide_http_user_agent; /** identity, hostname is returned if "". */ char* identity; /** version, package version returned if "". */ char* version; + /** User-Agent for HTTP header */ + char* http_user_agent; /** nsid */ char *nsid_cfg_str; uint8_t *nsid; diff --git a/util/configlexer.c b/util/configlexer.c index 5fae5b41e..af30f0643 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -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 350 -#define YY_END_OF_BUFFER 351 +#define YY_NUM_RULES 352 +#define YY_END_OF_BUFFER 353 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -363,388 +363,391 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[3457] = +static const flex_int16_t yy_accept[3484] = { 0, - 1, 1, 324, 324, 328, 328, 332, 332, 336, 336, - 1, 1, 340, 340, 344, 344, 351, 348, 1, 322, - 322, 349, 2, 349, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 324, 325, 325, 326, - 349, 328, 329, 329, 330, 349, 335, 332, 333, 333, - 334, 349, 336, 337, 337, 338, 349, 347, 323, 2, - 327, 349, 347, 343, 340, 341, 341, 342, 349, 344, - 345, 345, 346, 349, 348, 0, 1, 2, 2, 2, - 2, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 1, 1, 326, 326, 330, 330, 334, 334, 338, 338, + 1, 1, 342, 342, 346, 346, 353, 350, 1, 324, + 324, 351, 2, 351, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 326, 327, 327, 328, + 351, 330, 331, 331, 332, 351, 337, 334, 335, 335, + 336, 351, 338, 339, 339, 340, 351, 349, 325, 2, + 329, 351, 349, 345, 342, 343, 343, 344, 351, 346, + 347, 347, 348, 351, 350, 0, 1, 2, 2, 2, + 2, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 324, - 0, 328, 0, 335, 0, 332, 336, 0, 347, 0, - 2, 2, 347, 343, 0, 340, 344, 0, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 326, + 0, 330, 0, 337, 0, 334, 338, 0, 349, 0, + 2, 2, 349, 345, 0, 342, 346, 0, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 347, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 349, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 128, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 137, - 348, 348, 348, 348, 348, 348, 348, 347, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 128, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 137, + 350, 350, 350, 350, 350, 350, 350, 349, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 112, 348, 321, - 348, 348, 348, 348, 348, 348, 348, 8, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 112, 350, 323, + 350, 350, 350, 350, 350, 350, 350, 8, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 348, 348, 348, 348, 348, 348, 348, 129, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 142, 348, 348, 347, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 350, 350, 350, 350, 350, 350, 350, 129, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 142, 350, 350, 349, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 314, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 316, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 347, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 67, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 246, 348, 14, 15, 348, 19, 18, 348, 348, 230, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 349, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 67, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 248, 350, 14, 15, 350, 19, 18, 350, + 350, 232, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 135, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 228, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 3, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 135, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 230, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 3, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 347, 348, 348, 348, 348, - 348, 348, 348, 308, 348, 348, 307, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 331, 348, 348, 348, 348, 348, - 348, 348, 348, 66, 348, 348, 348, 348, 348, 348, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 349, + 350, 350, 350, 350, 350, 350, 350, 310, 350, 350, + 309, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 333, 350, 350, 350, 350, 350, 350, 350, 350, 66, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 70, 348, 277, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 315, 316, 348, 348, 348, 348, 348, 348, - 348, 71, 348, 348, 136, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 132, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 217, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 21, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 70, 350, 279, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 317, 318, + 350, 350, 350, 350, 350, 350, 350, 71, 350, 350, + 136, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 132, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 219, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 21, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 161, 348, 348, 348, 348, 348, 347, - 331, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 110, 348, 348, 348, 348, 348, 348, 348, - 285, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 186, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 160, 348, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 162, + 350, 350, 350, 350, 350, 349, 333, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 110, 350, + 350, 350, 350, 350, 350, 350, 287, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 188, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 109, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 35, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 36, 348, 348, 348, 348, + 350, 350, 350, 350, 350, 350, 161, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 109, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 35, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 68, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 134, 348, 348, 348, 347, 348, 348, 348, - 348, 348, 127, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 69, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 250, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 187, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 350, 350, 350, 36, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 68, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 134, 350, 350, 350, 349, 350, 350, 350, 350, 350, + 127, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 69, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 252, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 189, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 57, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 268, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 61, 348, 62, - 348, 348, 348, 348, 348, 113, 348, 114, 348, 348, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 57, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 270, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 61, 350, 62, - 348, 348, 111, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 7, 348, 348, 348, 348, - 347, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 239, - 348, 348, 348, 348, 163, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 251, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 350, 350, 350, 350, 350, 113, 350, 114, 350, 350, + 350, 350, 111, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 7, 350, 350, 350, 350, + 349, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 241, + 350, 350, 350, 350, 165, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 253, 350, 350, 350, 350, 350, 350, 350, 350, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 48, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 58, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 209, 348, 208, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 16, 17, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 72, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 48, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 58, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 211, 350, 210, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 16, 17, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 348, 348, 348, 216, 348, 348, 348, 348, 348, 348, - 116, 348, 115, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 200, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 143, 348, 348, - 348, 347, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 104, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 92, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 229, 348, + 350, 350, 72, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 218, 350, 350, 350, 350, + 350, 350, 116, 350, 115, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 202, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 143, + 350, 350, 350, 349, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 104, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 92, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 97, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 65, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 203, 204, - 348, 348, 348, 279, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 6, 348, 348, - 348, 348, 348, 348, 298, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 231, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 97, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 65, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 205, 206, 350, 350, 350, 281, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 6, 350, 350, 350, 350, 350, 350, 300, 350, - 348, 348, 283, 348, 348, 348, 348, 348, 348, 309, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 45, 348, 348, 348, 348, 47, 348, - 348, 348, 93, 348, 348, 348, 348, 348, 55, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 347, 348, 196, 348, 348, 348, 138, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 221, 348, 197, - 348, 348, 348, 236, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 285, 350, 350, 350, + 350, 350, 350, 311, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 45, 350, 350, + 350, 350, 47, 350, 350, 350, 93, 350, 350, 350, + 350, 350, 55, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 349, 350, 198, 350, 350, 350, + 138, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 223, 350, 199, 350, 350, 350, 238, 350, 350, - 348, 348, 348, 348, 56, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 140, 121, 348, 122, 348, - 348, 348, 120, 348, 348, 348, 348, 348, 348, 348, - 348, 158, 348, 348, 53, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 267, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 198, 348, 348, 348, 348, 348, 201, 348, 207, - 348, 348, 348, 348, 348, 348, 235, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 108, 348, 348, 348, 348, 348, 348, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 56, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 140, + 121, 350, 122, 350, 350, 350, 120, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 158, 350, 350, 53, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 269, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 200, 350, 350, + 350, 350, 350, 203, 350, 209, 350, 350, 350, 350, + 350, 350, 237, 350, 350, 350, 350, 350, 350, 350, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 133, 348, 348, 348, 348, 348, 348, 348, - 63, 348, 348, 348, 29, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 20, 348, 348, 348, - 348, 348, 348, 30, 39, 348, 168, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 194, 348, 348, 347, 348, 348, 348, 348, 348, - 348, 80, 82, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 287, 348, 348, 348, - 348, 247, 348, 348, 348, 348, 348, 348, 348, 348, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 108, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 133, 350, + 350, 350, 350, 350, 350, 350, 63, 350, 350, 350, + 29, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 20, 350, 350, 350, 350, 350, 350, 30, + 39, 350, 170, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 196, 350, 350, + 349, 350, 350, 350, 350, 350, 350, 80, 82, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 123, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 157, 348, 49, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 302, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 162, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 296, 348, 348, 348, 227, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 312, 348, 348, 348, 348, + 350, 350, 289, 350, 350, 350, 350, 249, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 123, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 157, 350, 49, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 304, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 164, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 298, - 348, 348, 348, 348, 348, 348, 348, 180, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 117, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 175, - 348, 188, 348, 348, 348, 348, 348, 348, 348, 347, - 348, 146, 348, 348, 348, 348, 348, 103, 348, 348, - 348, 348, 219, 348, 348, 348, 348, 348, 348, 237, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 259, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 139, 348, 348, + 350, 350, 350, 229, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 314, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 182, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 117, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 177, 350, 190, + 350, 350, 350, 350, 350, 350, 350, 349, 350, 146, + 350, 350, 350, 350, 350, 103, 350, 350, 350, 350, + 221, 350, 350, 350, 350, 350, 350, 239, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 179, 348, 348, 348, 348, 348, 348, 83, - 348, 84, 348, 348, 348, 348, 348, 64, 305, 348, - 348, 348, 348, 348, 91, 189, 348, 210, 348, 240, - 348, 348, 202, 280, 348, 348, 348, 348, 348, 348, - 76, 348, 191, 348, 348, 348, 348, 348, 9, 348, - 348, 348, 348, 348, 107, 348, 348, 348, 348, 272, - 348, 348, 348, 348, 218, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 350, 350, 350, 350, 261, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 139, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 181, 350, 350, 350, 350, 350, 350, 83, + 350, 84, 350, 350, 350, 350, 350, 64, 307, 350, + 350, 350, 350, 350, 91, 191, 350, 212, 350, 242, + 350, 350, 204, 282, 350, 350, 350, 350, 350, 350, + 76, 350, 193, 350, 350, 350, 350, 350, 9, 350, + 350, 350, 350, 350, 107, 350, 350, 350, 350, 274, + 350, 350, 350, 350, 220, 350, 350, 350, 350, 350, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 347, 348, 348, 348, - 348, 178, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 164, 348, 286, 348, 348, 348, 348, 348, - 258, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 231, 348, 348, 348, 348, 348, 278, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 306, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 349, 350, 350, 350, + 350, 180, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 166, 350, 288, 350, 350, 350, 350, 350, + 260, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 233, 350, 350, 350, 350, 350, 280, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 348, 190, 348, 348, 348, 348, 348, 348, 348, 348, - 75, 77, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 106, 348, 348, 348, 348, 270, 348, 348, 348, - 348, 282, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 223, 37, 31, 33, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 38, - 348, 32, 34, 348, 348, 348, 348, 348, 348, 348, - 348, 102, 348, 174, 348, 348, 348, 348, 348, 348, - 348, 347, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 225, 222, 348, 348, 348, 348, 348, + 350, 350, 350, 350, 350, 163, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 308, 350, 192, 350, 350, 350, 350, 350, 350, + 350, 350, 75, 77, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 106, 350, 350, 350, 350, 272, 350, + 350, 350, 350, 284, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 225, 37, 31, 33, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 38, 350, 32, 34, 350, 350, 350, 350, 350, + 350, 350, 350, 102, 350, 176, 350, 350, 350, 350, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 74, 348, 348, 348, 141, 348, 124, - 348, 348, 348, 348, 348, 348, 348, 348, 159, 50, - 348, 348, 348, 339, 13, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 300, 348, 303, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 12, - 348, 348, 22, 348, 348, 348, 348, 348, 276, 348, - 348, 348, 348, 284, 348, 348, 348, 78, 348, 233, - 348, 348, 348, 348, 348, 224, 348, 348, 73, 348, - 348, 348, 348, 348, 23, 348, 348, 46, 348, 348, + 350, 350, 350, 349, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 227, 224, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 74, 350, 350, 350, 141, + 350, 124, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 159, 50, 350, 350, 350, 341, 13, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 302, 350, + 305, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 12, 350, 350, 22, 350, 350, 350, 350, + 350, 278, 350, 350, 350, 350, 286, 350, 350, 350, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 173, 172, 348, 348, 339, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 226, 220, 348, 238, 348, 348, - 288, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 85, 348, 348, 348, 348, 271, 348, - 348, 348, 348, 206, 348, 348, 348, 348, 348, 232, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 310, 311, 170, 348, 348, 79, 348, 348, 348, + 78, 350, 235, 350, 350, 350, 350, 350, 226, 350, + 350, 73, 350, 350, 350, 350, 350, 23, 350, 350, + 46, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 175, 174, 350, 350, 341, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 228, 222, 350, + 240, 350, 350, 290, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 85, 350, 350, + 350, 350, 273, 350, 350, 350, 350, 208, 350, 350, - 348, 181, 348, 348, 348, 118, 119, 348, 348, 348, - 25, 348, 348, 165, 348, 167, 348, 211, 348, 348, - 348, 348, 171, 348, 348, 348, 348, 241, 348, 348, - 348, 348, 348, 348, 348, 148, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 249, 348, - 348, 348, 348, 348, 348, 348, 319, 348, 27, 348, - 281, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 89, 212, 348, 348, 269, - 348, 304, 348, 205, 348, 348, 348, 348, 348, 59, - 348, 348, 348, 348, 348, 348, 4, 348, 348, 348, + 350, 350, 350, 234, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 312, 313, 172, 350, 350, + 79, 350, 350, 350, 350, 183, 350, 350, 350, 118, + 119, 350, 350, 350, 25, 350, 350, 167, 350, 169, + 350, 213, 350, 350, 350, 350, 173, 350, 350, 350, + 350, 243, 350, 350, 350, 350, 350, 350, 350, 148, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 251, 350, 350, 350, 350, 350, 350, 350, + 321, 350, 27, 350, 283, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 348, 131, 147, 348, 348, 348, 185, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 244, 40, 41, 348, 348, - 348, 348, 348, 348, 348, 289, 348, 348, 348, 348, - 348, 348, 348, 257, 348, 348, 348, 348, 348, 348, - 348, 348, 215, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 88, 348, 60, 275, 348, - 245, 348, 348, 348, 348, 348, 11, 348, 348, 348, - 348, 348, 348, 348, 348, 130, 348, 348, 348, 348, - 213, 94, 348, 348, 43, 348, 348, 348, 348, 348, + 89, 214, 350, 350, 271, 350, 306, 350, 207, 350, + 350, 350, 350, 350, 59, 350, 350, 350, 350, 350, + 350, 4, 350, 350, 350, 350, 131, 147, 350, 350, + 350, 187, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 246, 40, 41, 350, 350, 350, 350, 350, 350, 350, + 291, 350, 350, 350, 350, 350, 350, 350, 259, 350, + 350, 350, 350, 350, 350, 350, 350, 217, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 88, 350, 60, 277, 350, 247, 350, 350, 350, - 348, 348, 348, 177, 348, 348, 348, 348, 348, 348, - 348, 150, 348, 348, 348, 348, 248, 348, 348, 348, - 348, 348, 256, 348, 348, 348, 348, 144, 348, 348, - 348, 125, 126, 348, 348, 348, 96, 100, 95, 348, - 348, 348, 348, 86, 348, 348, 348, 348, 348, 348, - 10, 348, 348, 348, 348, 348, 273, 313, 348, 348, - 348, 348, 348, 318, 42, 348, 348, 348, 348, 348, - 176, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 101, 99, 348, 54, + 350, 350, 11, 350, 350, 350, 350, 350, 350, 350, + 350, 130, 350, 350, 350, 350, 215, 94, 350, 350, + 43, 350, 350, 350, 350, 350, 350, 350, 350, 179, + 350, 350, 350, 350, 350, 350, 350, 150, 350, 350, + 350, 350, 250, 350, 350, 350, 350, 350, 258, 350, + 350, 350, 350, 144, 350, 350, 350, 125, 126, 350, + 350, 350, 96, 100, 95, 160, 350, 350, 350, 350, + 86, 350, 350, 350, 350, 350, 350, 10, 350, 350, + 350, 350, 350, 275, 315, 350, 350, 350, 350, 350, + 320, 42, 350, 350, 350, 350, 350, 178, 350, 350, - 348, 348, 87, 301, 348, 348, 348, 348, 24, 348, - 348, 348, 348, 348, 199, 348, 348, 348, 348, 348, - 214, 348, 348, 348, 348, 348, 348, 348, 348, 195, - 348, 348, 166, 81, 348, 348, 348, 348, 348, 290, - 348, 348, 348, 348, 348, 348, 348, 253, 348, 348, - 252, 145, 348, 348, 98, 51, 348, 151, 152, 155, - 156, 153, 154, 90, 299, 348, 348, 274, 348, 348, - 348, 26, 348, 169, 348, 348, 348, 348, 193, 348, - 243, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 101, 99, 350, 54, 350, 350, 87, + 303, 350, 350, 350, 350, 24, 350, 350, 350, 350, + 350, 201, 350, 350, 350, 350, 350, 216, 350, 350, + 350, 350, 350, 350, 350, 350, 197, 350, 350, 168, + 81, 350, 350, 350, 350, 350, 292, 350, 350, 350, + 350, 350, 350, 350, 255, 350, 350, 254, 145, 350, + 350, 98, 51, 350, 151, 152, 155, 156, 153, 154, + 90, 301, 350, 350, 276, 350, 350, 350, 26, 350, - 348, 183, 182, 44, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 297, 348, 348, 348, - 348, 105, 348, 242, 348, 266, 294, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 320, 348, - 52, 5, 348, 348, 234, 348, 348, 295, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 254, 28, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 255, 348, 348, 348, 149, 348, 348, 348, 348, - 348, 348, 348, 348, 184, 348, 192, 348, 348, 348, + 171, 350, 350, 350, 350, 195, 350, 245, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 185, 184, + 44, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 299, 350, 350, 350, 350, 105, 350, + 244, 350, 268, 296, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 322, 350, 52, 5, 350, + 350, 236, 350, 350, 297, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 256, 28, 350, 350, 350, 350, - 348, 348, 348, 348, 348, 348, 291, 348, 348, 348, - 348, 348, 348, 348, 348, 348, 348, 348, 348, 348, - 348, 348, 348, 348, 317, 348, 348, 262, 348, 348, - 348, 348, 348, 292, 348, 348, 348, 348, 348, 348, - 293, 348, 348, 348, 260, 348, 263, 264, 348, 348, - 348, 348, 348, 261, 265, 0 + 350, 350, 350, 350, 350, 350, 350, 350, 257, 350, + 350, 350, 149, 350, 350, 350, 350, 350, 350, 350, + 350, 186, 350, 194, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 293, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 319, 350, 350, 264, 350, 350, 350, 350, 350, + 294, 350, 350, 350, 350, 350, 350, 295, 350, 350, + 350, 262, 350, 265, 266, 350, 350, 350, 350, 350, + 263, 267, 0 } ; static const YY_CHAR yy_ec[256] = @@ -787,17 +790,17 @@ static const YY_CHAR yy_meta[41] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[3475] = +static const flex_int16_t yy_base[3502] = { 0, 0, 0, 38, 41, 44, 46, 59, 65, 71, 77, - 90, 112, 96, 118, 124, 136, 4558, 4515, 81, 6741, - 6741, 6741, 129, 52, 130, 63, 131, 152, 70, 140, + 90, 112, 96, 118, 124, 136, 5204, 5022, 81, 6793, + 6793, 6793, 129, 52, 130, 63, 131, 152, 70, 140, 149, 156, 57, 88, 76, 173, 175, 95, 197, 145, - 185, 199, 208, 213, 178, 123, 4396, 6741, 6741, 6741, - 107, 3671, 6741, 6741, 6741, 154, 3247, 3086, 6741, 6741, - 6741, 245, 2975, 6741, 6741, 6741, 163, 2912, 6741, 249, - 6741, 253, 148, 2860, 2006, 6741, 6741, 6741, 257, 1786, - 6741, 6741, 6741, 233, 1674, 263, 201, 0, 267, 0, + 185, 199, 208, 213, 178, 123, 4580, 6793, 6793, 6793, + 107, 3835, 6793, 6793, 6793, 154, 3459, 3338, 6793, 6793, + 6793, 245, 3159, 6793, 6793, 6793, 163, 2930, 6793, 249, + 6793, 253, 148, 2502, 2483, 6793, 6793, 6793, 257, 2236, + 6793, 6793, 6793, 233, 1695, 263, 201, 0, 267, 0, 0, 165, 191, 221, 252, 205, 181, 265, 92, 261, 216, 263, 271, 272, 210, 279, 274, 282, 278, 291, @@ -805,8 +808,8 @@ static const flex_int16_t yy_base[3475] = 317, 311, 315, 319, 321, 331, 327, 332, 336, 322, 339, 337, 346, 345, 347, 348, 353, 351, 357, 284, 358, 359, 369, 360, 380, 365, 381, 379, 375, 366, - 367, 389, 390, 394, 393, 395, 396, 403, 404, 1564, - 419, 1169, 422, 1003, 429, 930, 888, 433, 775, 437, + 367, 389, 390, 394, 393, 395, 396, 403, 404, 1436, + 419, 1297, 422, 1003, 429, 930, 888, 433, 775, 437, 441, 0, 433, 705, 447, 479, 287, 452, 411, 445, 426, 446, 447, 448, 449, 450, 451, 453, 452, 456, 470, 234, 463, 473, 481, 479, 476, 483, 486, 487, @@ -827,739 +830,747 @@ static const flex_int16_t yy_base[3475] = 738, 741, 745, 743, 750, 752, 760, 755, 756, 771, 763, 766, 762, 774, 773, 765, 769, 794, 799, 782, 787, 800, 801, 804, 802, 803, 806, 808, 809, 814, - 818, 819, 823, 807, 825, 827, 834, 829, 6741, 831, + 818, 819, 823, 807, 825, 827, 834, 829, 6793, 831, 838, 846, 839, 847, 850, 848, 854, 856, 836, 866, - 864, 867, 876, 898, 849, 871, 868, 878, 881, 6741, + 864, 867, 876, 898, 849, 871, 868, 878, 881, 6793, 884, 882, 922, 890, 891, 908, 910, 859, 909, 911, 904, 912, 933, 906, 920, 915, 945, 942, 930, 943, 944, 946, 952, 954, 955, 953, 957, 958, 966, 861, 961, 970, 981, 962, 964, 968, 971, 974, 986, 983, - 990, 991, 993, 995, 997, 996, 1001, 998, 1011, 1005, - 1008, 1021, 1000, 1022, 1033, 1002, 1030, 1034, 1032, 1037, - 1019, 1040, 1043, 1045, 1046, 1047, 1048, 1058, 1050, 1053, - 1055, 1057, 1059, 1065, 1061, 1063, 1067, 1069, 1072, 1077, - 1080, 1078, 1070, 1086, 1079, 1087, 1089, 6741, 1092, 6741, - 1094, 1095, 1096, 1097, 1099, 1101, 1098, 6741, 1102, 1106, - 1107, 1109, 1114, 1116, 1119, 1112, 1126, 1128, 1129, 1130, - 1131, 1141, 1133, 1134, 1148, 1138, 1145, 1143, 1147, 1151, + 990, 991, 993, 995, 997, 996, 1001, 999, 1022, 1004, + 1002, 1000, 1016, 1017, 1024, 1023, 1025, 1028, 1030, 1029, + 1037, 1041, 1038, 1046, 1047, 1048, 1049, 1059, 1054, 1055, + 1056, 1060, 1062, 1063, 1066, 1068, 1069, 1071, 1073, 1074, + 1080, 1081, 1085, 1089, 1075, 1090, 1082, 6793, 1097, 6793, + 1092, 1095, 1099, 1100, 1101, 1102, 1105, 6793, 1107, 1110, + 1109, 1112, 1120, 1115, 1136, 1111, 1118, 1123, 1135, 1119, + 1137, 1145, 1140, 1141, 1148, 1143, 1146, 1147, 1149, 1150, - 1149, 1156, 1157, 1158, 1159, 1160, 1179, 6741, 1161, 1163, - 1167, 1172, 1164, 1170, 1186, 1188, 1191, 1189, 1201, 1194, - 1203, 1214, 1207, 1209, 1215, 1197, 1211, 1216, 1221, 1223, - 1226, 1227, 1228, 1229, 1232, 1233, 1235, 1236, 1234, 1237, - 1238, 6741, 1247, 1250, 1257, 1248, 1258, 1249, 1259, 1260, - 1262, 1263, 1265, 1177, 1266, 517, 1267, 1272, 1279, 1276, - 1286, 1282, 1284, 1283, 1285, 1290, 1289, 1293, 1291, 1304, - 1301, 1306, 1311, 1319, 1316, 1318, 1326, 1328, 1308, 1321, - 1296, 1325, 1323, 1324, 1331, 1335, 1336, 1337, 1339, 1344, - 1341, 1346, 1347, 1348, 1349, 1351, 1353, 1355, 1354, 1357, + 1153, 1156, 1159, 1161, 1155, 1162, 1178, 6793, 1163, 1167, + 1165, 1168, 1176, 1182, 1173, 1181, 1191, 1190, 1201, 1193, + 1199, 1213, 1202, 1203, 1211, 1210, 1215, 1220, 1216, 1222, + 1224, 1225, 1227, 1228, 1226, 1230, 1231, 1234, 1232, 1238, + 1240, 6793, 1247, 1244, 1250, 1255, 1257, 1258, 1259, 1260, + 1261, 1262, 1263, 1264, 1266, 517, 1271, 1282, 1289, 1272, + 1291, 1275, 1290, 1286, 1288, 1265, 1292, 1296, 1294, 1307, + 1298, 1309, 1314, 1322, 1318, 1320, 1327, 1329, 1304, 1324, + 1299, 1326, 1330, 1332, 1334, 1333, 1335, 1341, 1339, 1348, + 1344, 1346, 1345, 1347, 1351, 1353, 1355, 1356, 1357, 1359, - 1367, 1358, 1365, 1372, 1368, 1381, 1369, 1373, 1371, 1385, - 1378, 1388, 6741, 1397, 1393, 1395, 1396, 1394, 1401, 1405, - 1407, 1406, 1408, 1412, 1409, 1411, 1417, 1418, 1413, 1419, - 1420, 1421, 1426, 1434, 1429, 1439, 1446, 1445, 1447, 1433, - 1441, 1449, 1437, 1459, 1457, 1464, 1460, 1450, 1461, 1471, - 1467, 1468, 1469, 1478, 1473, 1476, 1477, 1479, 1483, 1486, - 1487, 1497, 1494, 1495, 1502, 1503, 1498, 1507, 1508, 1511, - 1512, 1514, 1515, 1516, 1517, 1524, 1521, 1519, 1526, 1529, - 1520, 1531, 1522, 1536, 1545, 1540, 1542, 1543, 1546, 1547, - 1548, 1549, 1552, 1557, 1554, 1558, 1559, 1561, 1569, 1562, + 1366, 1361, 1373, 1369, 1371, 1372, 1368, 1387, 1376, 1379, + 1391, 1392, 1389, 1390, 6793, 1399, 1398, 1401, 1402, 1408, + 1409, 1410, 1400, 1411, 1414, 1417, 1418, 1419, 1425, 1422, + 1426, 1420, 1427, 1433, 1432, 1440, 1446, 1435, 1450, 1451, + 1453, 1437, 1449, 1456, 1457, 1465, 1462, 1466, 1468, 1464, + 1469, 1478, 1470, 1473, 1475, 1485, 1481, 1482, 1487, 1484, + 1496, 1498, 1490, 1507, 1499, 1509, 1516, 1502, 1488, 1517, + 1506, 1518, 1512, 1521, 1522, 1523, 1526, 1533, 1528, 1529, + 1534, 1535, 1536, 1537, 1531, 1544, 1547, 1545, 1548, 1551, + 1552, 1553, 1557, 1560, 1555, 1561, 1566, 1567, 1568, 1570, - 1571, 1574, 1579, 1580, 1581, 1582, 1584, 1585, 1586, 1589, - 1592, 1594, 1590, 1602, 1603, 1593, 1605, 1606, 1609, 1610, - 1613, 1622, 1621, 1617, 1624, 1618, 1627, 1629, 1631, 1630, - 1634, 1637, 1640, 1642, 1641, 6741, 1635, 1649, 1648, 1652, - 1653, 1655, 1657, 1664, 1659, 1662, 1660, 1661, 1663, 1687, - 6741, 1666, 6741, 6741, 1671, 6741, 6741, 1670, 1676, 6741, - 1684, 1685, 1677, 1691, 1672, 1697, 1700, 1701, 1702, 1703, - 1710, 1724, 1708, 1712, 1714, 1717, 1705, 1718, 1715, 1727, - 1730, 1734, 1737, 1750, 1741, 1751, 1739, 1753, 1755, 1757, - 1760, 1761, 1765, 1767, 1735, 1768, 1770, 1771, 1773, 1772, + 1558, 1578, 1588, 1569, 1580, 1582, 1581, 1589, 1590, 1591, + 1596, 1597, 1598, 1600, 1601, 1608, 1611, 1602, 1605, 1614, + 1615, 1617, 1618, 1627, 1619, 1628, 1632, 1633, 1634, 1622, + 1635, 1638, 1640, 1641, 1645, 1646, 1648, 6793, 1652, 1660, + 1653, 1658, 1655, 1656, 1661, 1669, 1664, 1668, 1665, 1666, + 1670, 1692, 6793, 1674, 6793, 6793, 1676, 6793, 6793, 1677, + 1678, 6793, 1682, 1687, 1699, 1698, 1705, 1707, 1709, 1685, + 1710, 1680, 1719, 1725, 1716, 1717, 1718, 1723, 1730, 1721, + 1731, 1728, 1738, 1742, 1740, 1746, 1749, 1754, 1756, 1758, + 1750, 1761, 1767, 1764, 1770, 1772, 1775, 1760, 1776, 1778, - 1775, 1778, 1781, 1782, 1779, 1777, 1784, 1794, 1785, 1799, - 1802, 6741, 1800, 1809, 1804, 1813, 1810, 1814, 1816, 1811, - 1812, 1822, 1825, 1818, 1827, 1828, 1829, 1830, 1831, 1832, - 1835, 1837, 1841, 1839, 1850, 1840, 6741, 1843, 1853, 1842, - 1855, 1854, 1858, 1864, 1856, 1857, 1865, 1867, 1877, 1872, - 1868, 1875, 1878, 1879, 1881, 1885, 6741, 1884, 1890, 1891, - 1892, 1893, 1895, 1898, 1900, 1901, 1902, 1904, 1905, 1906, - 1907, 1916, 1908, 1913, 1919, 1920, 1923, 1928, 1930, 1932, - 1940, 1931, 1933, 1942, 1935, 1941, 1943, 1945, 1946, 1948, - 1958, 1960, 1947, 1962, 1957, 1959, 1970, 1972, 1969, 1974, + 1779, 1780, 1782, 1781, 1784, 1787, 1790, 1791, 1793, 1786, + 1794, 1805, 1803, 1796, 1813, 6793, 1809, 1821, 1806, 1823, + 1819, 1826, 1827, 1822, 1810, 1832, 1834, 1829, 1835, 1836, + 1838, 1839, 1840, 1842, 1844, 1846, 1850, 1848, 1860, 1849, + 6793, 1862, 1863, 1851, 1859, 1865, 1866, 1873, 1867, 1852, + 1870, 1876, 1886, 1882, 1884, 1887, 1888, 1890, 1891, 1892, + 6793, 1894, 1901, 1898, 1902, 1904, 1893, 1908, 1905, 1910, + 1911, 1912, 1917, 1915, 1918, 1922, 1923, 1924, 1926, 1929, + 1934, 1931, 1938, 1941, 1948, 1942, 1944, 1949, 1950, 1951, + 1953, 1954, 1955, 1957, 1962, 1966, 1965, 1969, 1967, 1968, - 1975, 1976, 1977, 1982, 1984, 1986, 1985, 1989, 1990, 1997, - 1992, 2000, 1996, 2001, 2002, 2010, 2008, 2011, 2016, 2013, - 2019, 2021, 2022, 6741, 2024, 2028, 6741, 2025, 2027, 2029, - 2051, 2030, 2032, 2034, 2044, 2033, 2053, 2037, 2045, 2061, - 2055, 2071, 2064, 2063, 2074, 2068, 2076, 2075, 2079, 2080, - 2082, 2085, 2086, 2040, 2088, 2098, 2102, 2101, 2109, 2111, - 2097, 2089, 2106, 2125, 2110, 2107, 2113, 2116, 2114, 2118, - 2121, 2120, 2117, 2130, 2132, 2141, 2137, 2138, 2140, 2143, - 2146, 2153, 2156, 2147, 6741, 2161, 2154, 2162, 2163, 2165, - 2172, 2169, 2170, 6741, 2171, 2173, 2175, 2183, 2176, 2179, + 1978, 1986, 1971, 1982, 1983, 1984, 1985, 1990, 1993, 1998, + 1994, 1996, 1999, 2008, 2000, 2005, 2007, 2010, 2013, 2023, + 2009, 2026, 2018, 2011, 2021, 2027, 2028, 6793, 2034, 2035, + 6793, 2037, 2036, 2038, 2060, 2039, 2042, 2051, 2044, 2045, + 2048, 2053, 2061, 2057, 2064, 2073, 2074, 2077, 2080, 2079, + 2082, 2086, 2085, 2088, 2089, 2092, 2095, 2093, 2100, 2107, + 2109, 2055, 2113, 2117, 2112, 2114, 2118, 2137, 2115, 2116, + 2125, 2119, 2122, 2124, 2120, 2126, 2130, 2135, 2140, 2132, + 2147, 2150, 2146, 2149, 2152, 2153, 2160, 2162, 2165, 2164, + 6793, 2172, 2170, 2174, 2175, 2176, 2183, 2181, 2179, 6793, - 2187, 2184, 2186, 2188, 2190, 2194, 2196, 2193, 2195, 2207, - 6741, 2197, 6741, 2206, 2209, 2210, 2211, 2214, 2216, 2217, - 2218, 2219, 6741, 6741, 2221, 2222, 2235, 2233, 2237, 2225, - 2238, 6741, 2239, 2248, 6741, 2249, 2241, 2243, 2245, 2252, - 2254, 2256, 2258, 2266, 2259, 2267, 2262, 2270, 2264, 6741, - 2271, 2263, 2276, 2280, 2282, 2283, 2286, 2288, 2287, 6741, - 2289, 2290, 2294, 2302, 2304, 2301, 2297, 2305, 2311, 2307, - 2309, 2313, 2314, 2316, 2324, 2326, 2322, 2330, 2337, 2334, - 2338, 6741, 2336, 2340, 2323, 2348, 2344, 2346, 2347, 2350, - 2351, 2352, 2354, 2360, 2353, 2361, 2355, 2362, 2365, 2376, + 2182, 2185, 2187, 2196, 2188, 2192, 2195, 2199, 2201, 2202, + 2204, 2205, 2208, 2206, 2207, 2226, 6793, 2209, 6793, 2213, + 2210, 2218, 2221, 2228, 2229, 2231, 2232, 2233, 6793, 6793, + 2234, 2235, 2248, 2251, 2241, 2243, 2252, 6793, 2253, 2260, + 6793, 2262, 2261, 2256, 2255, 2257, 2267, 2268, 2271, 2278, + 2274, 2282, 2277, 2279, 2283, 6793, 2287, 2280, 2288, 2291, + 2289, 2295, 2298, 2302, 2299, 6793, 2300, 2308, 2309, 2316, + 2313, 2314, 2317, 2318, 2319, 2322, 2325, 2326, 2327, 2328, + 2337, 2338, 2329, 2342, 2339, 2343, 2351, 6793, 2349, 2350, + 2336, 2358, 2355, 2362, 2357, 2363, 2353, 2359, 2364, 2370, - 2378, 2367, 2375, 2386, 2368, 2377, 2381, 2379, 2392, 2383, - 2389, 2390, 2394, 6741, 2395, 2400, 2396, 2402, 2403, 2405, - 171, 2406, 2411, 2410, 2412, 2415, 2428, 2413, 2429, 2436, - 2416, 2434, 2319, 2435, 2431, 2437, 2438, 2441, 2442, 2446, - 2444, 2447, 6741, 2449, 2450, 2452, 2454, 2457, 2455, 2460, - 6741, 2458, 2467, 2472, 2481, 2471, 2473, 2418, 2482, 2484, - 2483, 2485, 2486, 2488, 2489, 2493, 2495, 2491, 6741, 2497, - 2498, 2499, 2508, 2509, 2511, 2512, 2516, 2517, 2518, 2513, - 2519, 2520, 2523, 2522, 2524, 2526, 2530, 2533, 2529, 2538, - 2542, 2539, 2540, 2543, 2546, 2547, 2552, 2550, 6741, 2562, + 2365, 2369, 2375, 2377, 2379, 2386, 2387, 2382, 2383, 2385, + 2390, 2391, 2392, 2394, 2399, 2396, 2401, 2400, 2402, 6793, + 2403, 2407, 2408, 2413, 2415, 2411, 171, 2421, 2417, 2424, + 2423, 2425, 2430, 2426, 2439, 2443, 2438, 2440, 2442, 2447, + 2441, 2448, 2451, 2449, 2450, 2453, 2457, 2458, 6793, 2466, + 2459, 2461, 2463, 2468, 2467, 2470, 6793, 2476, 2481, 2483, + 2491, 2485, 2493, 2494, 2495, 2498, 2496, 2499, 2500, 2501, + 2503, 2506, 2510, 2509, 6793, 2512, 2517, 2518, 2515, 2524, + 2526, 2525, 2527, 2531, 2532, 2533, 2537, 2536, 2538, 2539, + 2540, 2541, 2547, 2548, 2555, 2544, 2554, 2556, 2557, 2560, - 2553, 2557, 2561, 2560, 2563, 2573, 2564, 2583, 2566, 2574, - 2581, 2586, 2595, 2584, 2589, 2599, 2590, 2601, 2602, 2613, - 2605, 2612, 2615, 2609, 2619, 2621, 2622, 2623, 2631, 2627, - 2628, 2629, 2632, 2633, 2643, 2644, 2635, 2645, 2647, 2650, - 2639, 2657, 2662, 2664, 6741, 2666, 2654, 2668, 2671, 2678, - 2673, 2652, 2676, 2679, 2683, 2684, 2685, 2687, 2694, 2689, - 2691, 2695, 2697, 2696, 2698, 2705, 2700, 2706, 2708, 2715, - 2711, 2717, 2719, 6741, 2720, 2722, 2724, 2725, 2729, 2730, - 2733, 2735, 2737, 2738, 2739, 2741, 2744, 2575, 2745, 2746, - 2753, 2749, 2752, 2755, 2751, 6741, 2762, 2756, 2758, 2767, + 2566, 2562, 2567, 2568, 2575, 2570, 6793, 2577, 2573, 2580, + 2576, 2582, 2585, 2586, 2587, 2604, 2589, 2593, 2596, 2605, + 2610, 2600, 2612, 2620, 2616, 2622, 2625, 2630, 2626, 2632, + 2635, 2628, 2638, 2640, 2641, 2642, 2650, 2646, 2647, 2648, + 2651, 2652, 2662, 2663, 2654, 2664, 2666, 2669, 2658, 2676, + 2681, 2683, 6793, 2685, 2673, 2687, 2690, 2697, 2692, 2671, + 2695, 2698, 2702, 2703, 2704, 2706, 2713, 2708, 2710, 2714, + 2716, 2715, 2717, 2724, 2719, 2725, 2727, 2734, 2730, 2736, + 2595, 6793, 2738, 2739, 2740, 2742, 2747, 2743, 2749, 2752, + 2755, 2754, 2756, 2758, 2761, 2762, 2764, 2765, 2772, 2768, - 2768, 2770, 2772, 2776, 2775, 2782, 2784, 2774, 2785, 2786, - 2787, 6741, 2794, 2796, 2797, 2798, 2801, 2799, 2804, 2805, - 2807, 2809, 6741, 2810, 2812, 2811, 2813, 2814, 2817, 2824, - 2825, 2820, 6741, 2833, 2822, 2831, 2832, 2835, 2839, 2837, - 2843, 2838, 2841, 2845, 2849, 2857, 2846, 2859, 6741, 2848, - 2871, 2850, 2872, 2874, 2861, 2862, 2873, 2878, 2876, 2887, - 2879, 6741, 2890, 2892, 2894, 2901, 2880, 2897, 2898, 2902, - 2903, 2904, 2906, 2909, 2910, 6741, 2911, 2913, 2915, 2917, - 2920, 2919, 2921, 2934, 2927, 2929, 2932, 2935, 2936, 2938, - 2942, 2945, 2944, 2941, 2953, 2954, 2943, 2956, 2960, 2963, + 2769, 2774, 2770, 6793, 2780, 2771, 2782, 2784, 2789, 2791, + 2790, 2793, 2792, 2800, 2802, 2803, 2804, 2805, 2806, 6793, + 2814, 2815, 2811, 2813, 2823, 2820, 2822, 2824, 2826, 2827, + 6793, 2828, 2830, 2832, 2831, 2834, 2836, 2843, 2844, 2839, + 6793, 2855, 2850, 2840, 2851, 2853, 2852, 2856, 2857, 2861, + 2862, 2867, 2863, 2873, 2869, 2875, 6793, 2876, 2883, 2878, + 2879, 2886, 2884, 2889, 2890, 2901, 2891, 2897, 2893, 6793, + 2916, 2911, 2902, 2918, 2903, 2914, 2919, 2920, 2921, 2923, + 2924, 2927, 2928, 6793, 2929, 2931, 2933, 2934, 2938, 2936, + 2939, 2952, 2945, 2947, 2950, 2953, 2955, 2956, 2960, 2962, - 2967, 2972, 2968, 2970, 2971, 2973, 2974, 2976, 2984, 2985, - 2992, 2987, 2990, 6741, 2994, 2996, 2997, 2983, 2998, 2999, - 3002, 3004, 3007, 3003, 3012, 3009, 3005, 3015, 3022, 3030, - 3018, 3025, 3027, 3028, 3031, 3032, 3033, 3035, 3036, 3045, - 3043, 3041, 3042, 3050, 3051, 3053, 3062, 3057, 3058, 3060, - 3063, 3064, 3065, 3066, 3071, 3080, 3069, 3073, 3075, 3085, - 3090, 3091, 3093, 3094, 3095, 3098, 3099, 6741, 3049, 3103, - 3100, 3102, 3109, 3113, 3114, 3116, 3106, 3117, 3123, 3120, - 3127, 3126, 3129, 3132, 3133, 3140, 3136, 6741, 3137, 6741, - 3138, 3139, 3142, 3151, 3148, 6741, 3150, 6741, 3154, 3161, + 2967, 2959, 2961, 2971, 2973, 2963, 2976, 2979, 2983, 2987, + 2992, 2988, 2989, 2994, 2991, 2995, 2996, 2998, 3006, 3007, + 3010, 3008, 3012, 6793, 3015, 3016, 3018, 3005, 3019, 3021, + 3022, 3025, 3028, 3024, 3026, 3033, 3036, 3030, 3046, 3048, + 3039, 3051, 3041, 3043, 3054, 3053, 3055, 3056, 3057, 3067, + 3064, 3065, 3066, 3077, 3068, 3072, 3079, 3070, 3080, 3081, + 3082, 3083, 3084, 3088, 3090, 3093, 3094, 3095, 3086, 3107, + 3109, 3110, 3112, 3104, 3102, 3118, 3119, 6793, 3122, 3123, + 3120, 3124, 3126, 3130, 3127, 3139, 3134, 3137, 3136, 3143, + 3148, 3145, 3146, 3151, 3153, 3161, 3157, 6793, 3154, 6793, - 3156, 3158, 6741, 3162, 3152, 3163, 3166, 3164, 3169, 3167, - 3171, 3176, 3180, 3177, 3178, 3181, 3186, 3187, 3188, 3189, - 3193, 3196, 3197, 3198, 3199, 3201, 3207, 3205, 3216, 3206, - 3208, 3212, 3218, 3219, 3221, 6741, 3230, 3231, 3220, 3232, - 3224, 3235, 3236, 3239, 3241, 3242, 3243, 3246, 3245, 3248, - 3257, 3252, 3249, 3260, 3262, 3266, 3269, 3270, 3278, 6741, - 3273, 3275, 3276, 3277, 6741, 3279, 3281, 3285, 3288, 3282, - 3291, 3292, 3294, 3298, 3293, 3300, 3301, 3310, 3308, 3314, - 3303, 6741, 3315, 3318, 3304, 3317, 3326, 3333, 3336, 3332, - 3334, 3338, 3346, 3342, 3331, 3341, 3343, 3345, 3348, 3355, + 3158, 3162, 3168, 3176, 3163, 6793, 3175, 6793, 3177, 3182, + 3171, 3178, 6793, 3185, 3184, 3166, 3189, 3190, 3191, 3193, + 3195, 3196, 3197, 3199, 3200, 3203, 3204, 3206, 3207, 3209, + 3217, 3211, 3219, 3223, 3220, 3227, 3230, 3224, 3238, 3214, + 3231, 3240, 3241, 3233, 3242, 6793, 3249, 3243, 3253, 3254, + 3255, 3256, 3258, 3257, 3261, 3260, 3262, 3264, 3267, 3268, + 3279, 3273, 3265, 3280, 3281, 3284, 3292, 3290, 3297, 6793, + 3293, 3295, 3296, 3298, 6793, 3301, 3299, 3302, 3308, 3305, + 3311, 3312, 3313, 3317, 3314, 3321, 3320, 3325, 3330, 3334, + 3335, 6793, 3336, 3337, 3322, 3341, 3349, 3352, 3356, 3353, - 3356, 3352, 3360, 3353, 3358, 3367, 3364, 3361, 3368, 3370, - 3371, 3372, 3373, 3374, 3375, 3377, 3378, 3382, 6741, 3383, - 3384, 3389, 3397, 3393, 3394, 3398, 3403, 3399, 6741, 3405, - 3406, 3407, 3409, 3414, 3408, 3411, 3416, 3419, 3422, 3424, - 3427, 3429, 3428, 6741, 3430, 6741, 3432, 3433, 3443, 3447, - 3448, 3435, 3449, 3455, 3451, 3456, 3458, 3459, 3461, 3465, - 3467, 3468, 3469, 3470, 3471, 3478, 3474, 3476, 3481, 3485, - 3486, 3489, 3493, 3490, 3497, 6741, 6741, 3491, 3499, 3501, - 3498, 3504, 3506, 3507, 3512, 3510, 3518, 3519, 3520, 3529, - 6741, 3525, 3526, 3527, 3530, 3537, 3532, 3534, 3548, 3546, + 3359, 3361, 3357, 3363, 3364, 3355, 3365, 3366, 3367, 3375, + 3378, 3371, 3380, 3379, 3382, 3389, 3385, 3381, 3383, 3391, + 3392, 3393, 3394, 3395, 3396, 3397, 3400, 3411, 3398, 3416, + 6793, 3406, 3415, 3419, 3426, 3401, 3424, 3405, 3428, 3429, + 6793, 3431, 3433, 3434, 3435, 3436, 3441, 3438, 3443, 3444, + 3445, 3446, 3448, 3451, 3449, 6793, 3457, 6793, 3458, 3466, + 3471, 3474, 3464, 3468, 3475, 3480, 3481, 3482, 3484, 3485, + 3487, 3490, 3491, 3493, 3495, 3496, 3497, 3504, 3500, 3503, + 3511, 3510, 3512, 3513, 3521, 3517, 3518, 6793, 6793, 3516, + 3519, 3531, 3527, 3525, 3533, 3535, 3539, 3540, 3542, 3544, - 3543, 3553, 3552, 6741, 3544, 3545, 3560, 3555, 3562, 3567, - 6741, 3566, 6741, 3556, 3563, 3569, 3573, 3570, 3572, 3580, - 3581, 3576, 3583, 3587, 3598, 3599, 3588, 3596, 3584, 3591, - 3600, 3603, 3605, 3612, 3607, 3610, 3613, 6741, 3615, 3616, - 3617, 3620, 3622, 3623, 3627, 3624, 3611, 6741, 3630, 3635, - 3637, 3638, 3639, 3646, 3643, 3647, 3648, 3652, 3649, 3653, - 3656, 3657, 6741, 3655, 3658, 3670, 3661, 3665, 3666, 3676, - 3677, 3682, 6741, 3679, 3685, 3692, 3688, 3689, 3691, 3695, - 3690, 3696, 3697, 3699, 3700, 3702, 3703, 3704, 3706, 3708, - 3711, 3709, 3714, 3722, 3723, 3725, 3734, 3730, 6741, 3731, + 3546, 3553, 6793, 3549, 3554, 3555, 3556, 3568, 3557, 3559, + 3572, 3571, 3567, 3579, 3574, 6793, 3570, 3578, 3588, 3583, + 3584, 3591, 6793, 3586, 6793, 3589, 3595, 3597, 3598, 3600, + 3599, 3601, 3602, 3604, 3606, 3617, 3613, 3625, 3611, 3622, + 3623, 3626, 3627, 3629, 3632, 3636, 3631, 3633, 3634, 6793, + 3640, 3635, 3637, 3642, 3648, 3651, 3654, 3657, 3650, 6793, + 3658, 3661, 3660, 3662, 3664, 3672, 3665, 3675, 3667, 3677, + 3678, 3681, 3682, 3683, 6793, 3680, 3685, 3696, 3689, 3691, + 3697, 3707, 3708, 3713, 6793, 3693, 3710, 3720, 3716, 3717, + 3700, 3718, 3704, 3722, 3723, 3725, 3726, 3727, 3728, 3730, - 3735, 3732, 3736, 3737, 3741, 3742, 3745, 3747, 3740, 3753, - 3758, 3749, 3761, 3763, 3764, 3771, 3766, 6741, 3773, 3772, - 3780, 3775, 3776, 3778, 3781, 3783, 3785, 3787, 3786, 3789, - 3791, 3793, 3803, 3796, 3799, 3795, 3804, 3811, 3806, 6741, - 3818, 3814, 3816, 3820, 3821, 3823, 3833, 3825, 3829, 3830, - 3836, 3837, 3839, 3841, 3842, 3843, 3846, 3847, 6741, 6741, - 3853, 3848, 3850, 6741, 3856, 3854, 3866, 3855, 3858, 3862, - 3869, 3870, 3872, 3868, 3878, 3874, 3876, 6741, 3880, 3888, - 3886, 3889, 3893, 3895, 6741, 3890, 3904, 3902, 3903, 3905, - 3891, 3899, 3907, 3910, 3912, 3915, 3916, 3926, 3927, 3922, + 3733, 3734, 3736, 3735, 3747, 3746, 3738, 3750, 3760, 3740, + 6793, 3756, 3757, 3762, 3763, 3764, 3765, 3767, 3770, 3772, + 3773, 3785, 3786, 3774, 3777, 3789, 3790, 3797, 3796, 6793, + 3806, 3792, 3807, 3803, 3780, 3809, 3814, 3782, 3811, 3818, + 3804, 3815, 3820, 3821, 3822, 3824, 3833, 3828, 3830, 3831, + 3832, 3843, 3834, 6793, 3845, 3846, 3838, 3855, 3848, 3851, + 3862, 3858, 3861, 3863, 3865, 3868, 3869, 3871, 3873, 3874, + 3877, 3872, 6793, 6793, 3879, 3880, 3887, 6793, 3888, 3882, + 3889, 3885, 3899, 3886, 3893, 3902, 3904, 3890, 3910, 3900, + 3906, 6793, 3912, 3920, 3915, 3918, 3927, 3928, 6793, 3919, - 3923, 3924, 6741, 3925, 3929, 3931, 3933, 3934, 3935, 6741, - 3937, 3939, 3946, 3948, 3940, 3958, 3955, 3952, 3961, 3962, - 3964, 3965, 3966, 3967, 3969, 3976, 3972, 3973, 3974, 3980, - 3982, 3985, 3991, 6741, 3992, 3994, 3977, 3999, 6741, 4003, - 4012, 4013, 6741, 4014, 3996, 4004, 4015, 4023, 6741, 4016, - 4020, 4018, 4025, 3975, 4035, 4019, 4037, 4033, 4021, 4034, - 4038, 4036, 6741, 4039, 4042, 4044, 6741, 4047, 4045, 4053, - 4056, 4057, 4064, 4059, 4062, 4060, 4063, 6741, 4068, 6741, - 4071, 4069, 4075, 6741, 4070, 4078, 4079, 4086, 4080, 4083, - 4087, 4091, 4096, 4093, 4097, 4098, 4099, 4100, 4102, 4109, + 3929, 3932, 3934, 3924, 3936, 3940, 3937, 3941, 3942, 3943, + 3945, 3953, 3954, 3950, 3951, 3957, 6793, 3952, 3958, 3962, + 3964, 3955, 3968, 6793, 3965, 3971, 3978, 3976, 3981, 3986, + 3987, 3988, 3993, 3973, 3989, 3995, 3996, 3997, 3998, 4006, + 4002, 4007, 4005, 4008, 4012, 4015, 4009, 6793, 4019, 4023, + 4024, 4026, 6793, 4030, 4033, 4037, 6793, 4041, 4036, 4038, + 4040, 4048, 6793, 4045, 4046, 4047, 4053, 4049, 4061, 4051, + 4064, 4066, 4056, 4060, 4063, 4067, 6793, 4069, 4070, 4071, + 6793, 4082, 4077, 4084, 4087, 4072, 4094, 4090, 4093, 4091, + 4095, 6793, 4100, 6793, 4099, 4101, 4106, 6793, 4103, 4108, - 4101, 4105, 4108, 4110, 6741, 4111, 4115, 4120, 4117, 4121, - 4125, 4127, 4128, 4130, 4131, 6741, 6741, 4141, 6741, 4142, - 4132, 4136, 6741, 4138, 4143, 4156, 4146, 4154, 4158, 4162, - 4151, 6741, 4165, 4166, 6741, 4147, 4168, 4175, 4171, 4172, - 4173, 4176, 4179, 4180, 4183, 4184, 4182, 4186, 4181, 4185, - 4199, 6741, 4189, 4187, 4190, 4192, 4203, 4204, 4208, 4212, - 4206, 6741, 4214, 4213, 4216, 4220, 4222, 6741, 4223, 6741, - 4227, 4228, 4230, 4231, 4235, 4244, 6741, 4239, 4236, 4247, - 4240, 4243, 4249, 4252, 4253, 4255, 4256, 4265, 4262, 4261, - 4260, 4269, 4270, 6741, 4264, 4271, 4280, 4281, 4275, 4277, + 4109, 4111, 4112, 4117, 4118, 4116, 4125, 4126, 4127, 4129, + 4130, 4128, 4133, 4137, 4134, 4135, 4139, 4140, 6793, 4141, + 4143, 4150, 4145, 4155, 4151, 4158, 4148, 4162, 4163, 6793, + 6793, 4172, 6793, 4174, 4164, 4166, 6793, 4168, 4173, 4181, + 4178, 4184, 4186, 4179, 4190, 4191, 6793, 4193, 4200, 6793, + 4194, 4196, 4204, 4205, 4203, 4206, 4207, 4208, 4211, 4212, + 4213, 4214, 4215, 4222, 4216, 4221, 4218, 6793, 4223, 4229, + 4232, 4239, 4231, 4235, 4245, 4241, 4240, 6793, 4251, 4257, + 4247, 4253, 4254, 6793, 4262, 6793, 4250, 4263, 4264, 4267, + 4266, 4279, 6793, 4275, 4270, 4281, 4274, 4278, 4286, 4282, - 4292, 4284, 4291, 4287, 4288, 4295, 4298, 4299, 4301, 4303, - 4306, 4307, 6741, 4308, 4313, 4309, 4322, 4314, 4318, 4319, - 6741, 4323, 4324, 4328, 6741, 4332, 4334, 4337, 4339, 4340, - 4341, 4336, 4342, 4343, 4347, 4344, 6741, 4348, 4351, 4350, - 4356, 4364, 4365, 6741, 6741, 4366, 6741, 4371, 4353, 4368, - 4355, 4375, 4378, 4380, 4381, 4389, 4384, 4382, 4391, 4392, - 4386, 6741, 4393, 4404, 4394, 4409, 4411, 4413, 4414, 4410, - 4406, 6741, 6741, 4420, 4421, 4415, 4428, 4429, 4423, 4425, - 4437, 4433, 4439, 4442, 4444, 4451, 6741, 4446, 4432, 4453, - 4434, 6741, 4448, 4455, 4456, 4459, 4458, 4462, 4461, 4464, + 4289, 4290, 4291, 4298, 4296, 4293, 4295, 4303, 4304, 6793, + 4299, 4305, 4310, 4313, 4315, 4316, 4323, 4320, 4322, 4321, + 4326, 4328, 4329, 4331, 4337, 4335, 4340, 4333, 6793, 4343, + 4346, 4347, 4359, 4349, 4354, 4350, 6793, 4357, 4360, 4366, + 6793, 4364, 4356, 4370, 4373, 4367, 4374, 4375, 4378, 4380, + 4381, 4382, 6793, 4383, 4386, 4384, 4388, 4397, 4390, 6793, + 6793, 4400, 6793, 4401, 4389, 4405, 4408, 4409, 4413, 4411, + 4414, 4416, 4417, 4418, 4421, 4424, 4427, 6793, 4428, 4436, + 4431, 4439, 4448, 4449, 4441, 4446, 4432, 6793, 6793, 4451, + 4455, 4457, 4459, 4460, 4462, 4445, 4471, 4464, 4467, 4473, - 4465, 4466, 4468, 4471, 4472, 4476, 4469, 4478, 4482, 4483, - 4485, 4486, 4489, 4492, 6741, 4493, 4497, 4498, 4500, 4503, - 4505, 4504, 4506, 4508, 6741, 4511, 6741, 4509, 4514, 4513, - 4510, 4521, 4530, 4531, 4532, 4533, 4536, 4537, 4540, 4541, - 4551, 4542, 4546, 4552, 4554, 4556, 4561, 4562, 6741, 4564, - 4548, 4558, 4565, 4571, 4573, 4574, 4576, 4579, 4581, 4583, - 4582, 4585, 4589, 4586, 4590, 4591, 4592, 4594, 6741, 4596, - 4603, 4595, 4605, 4607, 4609, 4616, 4610, 4618, 4612, 4620, - 4621, 6741, 4622, 4624, 4628, 6741, 4629, 4630, 4632, 4634, - 4640, 4633, 4636, 4642, 4644, 6741, 4646, 4648, 4651, 4650, + 4475, 4482, 6793, 4479, 4477, 4484, 4478, 6793, 4485, 4486, + 4489, 4487, 4490, 4493, 4492, 4494, 4496, 4499, 4504, 4505, + 4500, 4513, 4506, 4507, 4516, 4517, 4519, 4520, 4522, 4527, + 6793, 4523, 4529, 4530, 4534, 4535, 4537, 4539, 4538, 4541, + 4551, 6793, 4543, 6793, 4542, 4547, 4546, 4563, 4544, 4554, + 4566, 4567, 4568, 4569, 4572, 4573, 4576, 4577, 4587, 4578, + 4582, 4588, 4590, 4592, 4597, 4598, 6793, 4600, 4584, 4594, + 4601, 4607, 4609, 4610, 4612, 4615, 4617, 4619, 4618, 4621, + 4625, 4622, 4626, 4627, 4628, 4630, 6793, 4632, 4639, 4631, + 4641, 4643, 4645, 4652, 4646, 4654, 4648, 4656, 4657, 6793, - 4654, 4655, 4656, 4660, 4662, 4663, 4666, 6741, 4676, 4667, - 4675, 4678, 4674, 4677, 4681, 4687, 4685, 6741, 4688, 4689, - 4691, 4701, 4703, 4696, 4698, 4710, 4700, 4707, 4708, 4709, - 4715, 4714, 4716, 4719, 4720, 4721, 4730, 4732, 4727, 6741, - 4734, 6741, 4736, 4737, 4738, 4747, 4742, 4740, 4744, 4748, - 4750, 6741, 4752, 4755, 4758, 4759, 4760, 6741, 4761, 4762, - 4764, 4763, 6741, 4777, 4776, 4765, 4782, 4767, 4783, 6741, - 4787, 4788, 4790, 4798, 4799, 4796, 4801, 4789, 4806, 4797, - 4802, 4804, 4810, 4814, 4812, 4813, 6741, 4815, 4817, 4822, - 4824, 4825, 4827, 4828, 4831, 4833, 4830, 6741, 4837, 4838, + 4658, 4660, 4664, 6793, 4665, 4666, 4668, 4670, 4676, 4669, + 4672, 4678, 4680, 6793, 4682, 4684, 4687, 4686, 4690, 4691, + 4692, 4696, 4698, 4699, 4702, 6793, 4712, 4703, 4711, 4714, + 4710, 4713, 4717, 4723, 4721, 6793, 4724, 4725, 4727, 4737, + 4739, 4732, 4734, 4746, 4736, 4743, 4744, 4745, 4751, 4750, + 4752, 4755, 4756, 4757, 4766, 4768, 4763, 6793, 4770, 6793, + 4772, 4773, 4774, 4783, 4778, 4776, 4780, 4784, 4786, 6793, + 4788, 4791, 4794, 4795, 4796, 6793, 4797, 4798, 4800, 4799, + 6793, 4813, 4812, 4801, 4818, 4803, 4819, 6793, 4823, 4824, + 4826, 4834, 4835, 4832, 4837, 4825, 4842, 4833, 4838, 4840, - 4839, 4840, 4841, 4844, 4846, 4853, 4849, 4850, 4852, 4856, - 4857, 4860, 6741, 4861, 4863, 4865, 4872, 4869, 4874, 6741, - 4878, 6741, 4880, 4882, 4885, 4867, 4889, 6741, 6741, 4891, - 4892, 4884, 4898, 4899, 6741, 6741, 4901, 6741, 4902, 6741, - 4903, 4905, 6741, 6741, 4904, 4906, 4907, 4910, 4911, 4913, - 6741, 4919, 6741, 4929, 4924, 4914, 4922, 4926, 6741, 4927, - 4933, 4935, 4937, 4939, 6741, 4934, 4948, 4940, 4941, 6741, - 4951, 4952, 4945, 4953, 6741, 4959, 4962, 4963, 4954, 4957, - 4965, 4967, 4973, 4974, 4977, 4975, 4976, 4978, 4979, 4982, - 4986, 4991, 4993, 4983, 4994, 4997, 4999, 5003, 5001, 5005, + 4846, 4850, 4848, 4849, 6793, 4851, 4853, 4858, 4860, 4861, + 4863, 4864, 4867, 4869, 4866, 6793, 4873, 4874, 4875, 4876, + 4877, 4880, 4882, 4889, 4885, 4892, 4886, 4888, 4896, 4897, + 4898, 4906, 6793, 4899, 4901, 4903, 4916, 4912, 4921, 6793, + 4909, 6793, 4913, 4924, 4926, 4914, 4930, 6793, 6793, 4928, + 4939, 4922, 4936, 4937, 6793, 6793, 4942, 6793, 4938, 6793, + 4943, 4944, 6793, 6793, 4945, 4947, 4948, 4949, 4953, 4952, + 6793, 4962, 6793, 4965, 4963, 4955, 4966, 4967, 6793, 4968, + 4974, 4970, 4978, 4976, 6793, 4980, 4985, 4981, 4983, 6793, + 4992, 4993, 4984, 4986, 6793, 4994, 5001, 4997, 5005, 5006, - 5006, 5007, 5008, 5010, 5015, 5009, 5017, 5020, 5011, 5021, - 5023, 5024, 5031, 5032, 5034, 5035, 5039, 5040, 5042, 5043, - 5044, 5045, 5046, 5047, 5050, 5057, 5048, 5052, 5056, 5062, - 5063, 6741, 5066, 5067, 5068, 5071, 5073, 5075, 5076, 5083, - 5086, 5092, 6741, 5094, 6741, 5096, 5088, 5079, 5098, 5099, - 6741, 5100, 5101, 5102, 5103, 5104, 5105, 5107, 5108, 5111, - 5112, 5115, 6741, 5122, 5118, 5126, 5127, 5134, 6741, 5131, - 5138, 5135, 5139, 5142, 5141, 5143, 5144, 5147, 5145, 5151, - 5155, 5146, 5152, 5159, 5168, 5172, 5175, 5158, 5173, 5160, - 5177, 5178, 5174, 5180, 5181, 5182, 5190, 5185, 5193, 6741, + 5007, 5008, 5011, 5013, 5009, 5014, 5016, 5017, 5024, 5031, + 5033, 5035, 5039, 5028, 5026, 5041, 5042, 5047, 5045, 5049, + 5050, 5051, 5052, 5054, 5056, 5053, 5059, 5061, 5063, 5064, + 5068, 5065, 5066, 5078, 5067, 5079, 5081, 5082, 5085, 5088, + 5089, 5090, 5092, 5093, 5095, 5018, 5094, 5096, 5101, 5098, + 5100, 6793, 5102, 5104, 5105, 5108, 5118, 5119, 5122, 5130, + 5134, 5135, 6793, 5137, 6793, 5139, 5123, 5131, 5125, 5143, + 6793, 5145, 5146, 5147, 5148, 5112, 5150, 5149, 5152, 5153, + 5155, 5156, 6793, 5160, 5161, 5154, 5174, 5163, 6793, 5177, + 5167, 5178, 5179, 5180, 5184, 5182, 5185, 5188, 5189, 5191, - 5195, 6741, 5196, 5197, 5198, 5199, 5201, 5202, 5203, 5208, - 6741, 6741, 5204, 5209, 5218, 5211, 5213, 5221, 5222, 5215, - 5225, 6741, 5228, 5232, 5235, 5237, 6741, 5238, 5239, 5240, - 5242, 6741, 5244, 5245, 5247, 5249, 5246, 5258, 5261, 5255, - 5252, 5262, 5263, 5270, 6741, 6741, 6741, 6741, 5271, 5267, - 5276, 5273, 5277, 5278, 5279, 5282, 5281, 5284, 5285, 6741, - 5293, 6741, 6741, 5294, 5296, 5295, 5297, 5298, 5303, 5305, - 5307, 6741, 5308, 6741, 5311, 5312, 5310, 5319, 5321, 5324, - 5313, 5327, 5328, 5331, 5330, 5333, 5340, 5337, 5338, 5341, - 5344, 5346, 5353, 6741, 6741, 5347, 5355, 5358, 5363, 5359, + 5193, 5195, 5181, 5202, 5205, 6793, 5207, 5210, 5218, 5213, + 5214, 5215, 5216, 5217, 5219, 5221, 5223, 5224, 5233, 5225, + 5236, 6793, 5237, 6793, 5238, 5240, 5242, 5243, 5244, 5245, + 5246, 5248, 6793, 6793, 5251, 5252, 5258, 5253, 5260, 5262, + 5264, 5265, 5269, 6793, 5270, 5272, 5282, 5274, 6793, 5277, + 5279, 5283, 5289, 6793, 5284, 5286, 5290, 5298, 5291, 5301, + 5302, 5304, 5293, 5305, 5306, 5312, 6793, 6793, 6793, 6793, + 5314, 5308, 5319, 5316, 5320, 5322, 5323, 5325, 5328, 5321, + 5324, 6793, 5336, 6793, 6793, 5337, 5338, 5340, 5344, 5345, + 5346, 5347, 5350, 6793, 5348, 6793, 5352, 5355, 5351, 5362, - 5365, 5366, 5373, 5368, 5369, 5375, 5371, 5377, 5376, 5387, - 5388, 5378, 5379, 6741, 5343, 5389, 5390, 6741, 5392, 6741, - 5395, 5396, 5398, 5399, 5402, 5405, 5406, 5408, 6741, 6741, - 5403, 5415, 5413, 6741, 6741, 5410, 5418, 5420, 5423, 5424, - 5425, 5426, 5427, 5433, 5428, 6741, 5430, 6741, 5434, 5436, - 5449, 5437, 5452, 5456, 5441, 5457, 5461, 5455, 5453, 6741, - 5464, 5465, 6741, 5472, 5467, 5471, 5468, 5469, 6741, 5476, - 5474, 5480, 5486, 6741, 5488, 5489, 5490, 6741, 5497, 6741, - 5481, 5494, 5491, 5506, 5498, 6741, 5502, 5507, 6741, 5512, - 5514, 5515, 5504, 5516, 6741, 5520, 5509, 6741, 5521, 5524, + 5368, 5359, 5369, 5371, 5372, 5373, 5374, 5375, 5382, 5380, + 5383, 5381, 5386, 5390, 5395, 6793, 6793, 5387, 5398, 5399, + 5407, 5403, 5404, 5405, 5416, 5411, 5412, 5413, 5414, 5418, + 5420, 5427, 5430, 5423, 5425, 6793, 5431, 5434, 5432, 6793, + 5433, 6793, 5442, 5443, 5436, 5440, 5446, 5449, 5450, 5452, + 5457, 6793, 6793, 5456, 5465, 5460, 6793, 6793, 5444, 5464, + 5467, 5469, 5470, 5471, 5472, 5473, 5476, 5478, 6793, 5479, + 6793, 5480, 5483, 5492, 5482, 5495, 5499, 5485, 5502, 5505, + 5498, 5508, 6793, 5501, 5509, 6793, 5517, 5512, 5514, 5516, + 5519, 6793, 5520, 5523, 5525, 5527, 6793, 5529, 5531, 5532, - 5525, 5531, 5528, 5533, 5534, 5535, 5536, 5544, 5540, 5542, - 6741, 6741, 5551, 5549, 135, 5558, 5537, 5548, 5555, 5556, - 5565, 5561, 5563, 5570, 6741, 6741, 5566, 6741, 5564, 5573, - 6741, 5574, 5577, 5578, 5583, 5582, 5584, 5585, 5581, 5589, - 5590, 5603, 5593, 5591, 5608, 5598, 5618, 5594, 5620, 5621, - 5623, 5625, 5627, 5615, 5629, 5630, 5609, 5632, 5633, 5636, - 5638, 5639, 5640, 6741, 5643, 5645, 5646, 5648, 6741, 5654, - 5651, 5656, 5657, 6741, 5664, 5661, 5665, 5667, 5668, 6741, - 5669, 5672, 5675, 5673, 5678, 5680, 5596, 5689, 5681, 5684, - 5686, 6741, 6741, 6741, 5695, 5699, 6741, 5702, 5692, 5685, + 6793, 5539, 6793, 5533, 5540, 5536, 5550, 5542, 6793, 5543, + 5546, 6793, 5552, 5556, 5557, 5558, 5559, 6793, 5562, 5564, + 6793, 5565, 5567, 5568, 5574, 5575, 5577, 5570, 5578, 5579, + 5586, 5588, 5591, 6793, 6793, 5598, 5584, 135, 5600, 5581, + 5597, 5601, 5602, 5609, 5605, 5606, 5612, 6793, 6793, 5613, + 6793, 5607, 5616, 6793, 5614, 5620, 5624, 5626, 5622, 5628, + 5629, 5631, 5633, 5634, 5647, 5637, 5635, 5652, 5642, 5662, + 5638, 5664, 5665, 5667, 5669, 5671, 5659, 5673, 5674, 5653, + 5676, 5677, 5680, 5681, 5683, 5684, 5685, 6793, 5688, 5696, + 5697, 5689, 6793, 5702, 5691, 5709, 5706, 6793, 5713, 5710, - 5696, 6741, 5704, 5707, 5705, 6741, 6741, 5708, 5713, 5711, - 6741, 5709, 5721, 6741, 5712, 6741, 5719, 6741, 5722, 5723, - 5725, 5730, 6741, 5731, 5732, 5734, 5737, 6741, 5743, 5747, - 5750, 5735, 5751, 5753, 5752, 6741, 5760, 5756, 5758, 5765, - 5755, 5762, 5759, 5770, 5766, 5782, 5767, 5769, 6741, 5777, - 5778, 5785, 5786, 5779, 5788, 5789, 6741, 5791, 6741, 5794, - 6741, 5795, 5796, 5797, 5805, 5799, 5800, 5802, 5807, 5816, - 5813, 5806, 5818, 5821, 5823, 6741, 6741, 5826, 5828, 6741, - 5829, 6741, 5831, 6741, 5832, 5833, 5834, 5835, 5836, 6741, - 5838, 5840, 5843, 5853, 5845, 5846, 6741, 5854, 5856, 5857, + 5714, 5715, 5716, 6793, 5703, 5718, 5722, 5720, 5727, 5728, + 5640, 5736, 5731, 5732, 5733, 6793, 6793, 6793, 5738, 5748, + 6793, 5750, 5740, 5734, 5742, 6793, 5752, 5753, 5745, 6793, + 6793, 5755, 5756, 5758, 6793, 5763, 5770, 6793, 5765, 6793, + 5766, 6793, 5768, 5769, 5771, 5775, 6793, 5776, 5778, 5779, + 5785, 6793, 5795, 5797, 5799, 5792, 5782, 5788, 5800, 6793, + 5809, 5806, 5808, 5815, 5804, 5812, 5810, 5816, 5817, 5825, + 5818, 5827, 6793, 5828, 5829, 5833, 5836, 5820, 5830, 5840, + 6793, 5841, 6793, 5847, 6793, 5844, 5849, 5848, 5842, 5850, + 5853, 5856, 5854, 5858, 5867, 5860, 5863, 5865, 5871, 5873, - 5859, 6741, 6741, 5861, 5869, 5862, 6741, 5864, 5872, 5874, - 5875, 5877, 5879, 5880, 5883, 5882, 5893, 5866, 5884, 5888, - 5895, 5889, 5900, 5906, 5910, 6741, 6741, 6741, 5901, 5899, - 5918, 5915, 5917, 5922, 5905, 6741, 5921, 5925, 5927, 5928, - 5935, 5931, 5934, 6741, 5930, 5936, 5937, 5938, 5940, 5941, - 5943, 5944, 6741, 5946, 5956, 5952, 5950, 5958, 5966, 5968, - 5970, 5961, 5971, 5978, 5975, 6741, 5977, 6741, 6741, 5973, - 6741, 5979, 5981, 5983, 5982, 5984, 6741, 5987, 5988, 5989, - 5991, 5990, 5998, 5994, 5996, 6741, 6006, 5999, 6009, 6011, - 6741, 6741, 6012, 6018, 6741, 6021, 6022, 6015, 6030, 6013, + 6793, 6793, 5875, 5877, 6793, 5879, 6793, 5883, 6793, 5880, + 5885, 5884, 5886, 5888, 6793, 5895, 5887, 5890, 5903, 5898, + 5904, 6793, 5905, 5908, 5909, 5911, 6793, 6793, 5912, 5919, + 5915, 6793, 5914, 5917, 5925, 5918, 5926, 5930, 5927, 5931, + 5934, 5941, 5937, 5939, 5942, 5944, 5945, 5947, 5952, 5957, + 6793, 6793, 6793, 5953, 5948, 5967, 5964, 5966, 5976, 5959, + 6793, 5973, 5972, 5974, 5975, 5986, 5981, 5983, 6793, 5984, + 5985, 5987, 5988, 5990, 5991, 5992, 5993, 6793, 6005, 6007, + 5995, 5997, 6009, 6016, 6018, 6020, 6022, 6013, 6023, 6030, + 6027, 6793, 6029, 6793, 6793, 6025, 6793, 6031, 6033, 6035, - 6023, 6035, 6032, 6741, 6036, 6038, 6026, 6039, 6042, 6041, - 6044, 6741, 6048, 6045, 6049, 6051, 6741, 6052, 6057, 6058, - 6060, 6061, 6741, 6062, 6054, 6078, 6063, 6741, 6065, 6077, - 6079, 6741, 6741, 6083, 6087, 6084, 6741, 6741, 6741, 6090, - 6091, 6093, 6095, 6741, 6098, 6102, 6106, 6108, 6113, 6101, - 6741, 6109, 6115, 6117, 6118, 6119, 6741, 6741, 6120, 6121, - 6122, 6126, 6123, 6741, 6741, 6128, 6130, 6131, 6129, 6132, - 6741, 6134, 6139, 6146, 6142, 6148, 6155, 6157, 6150, 6158, - 6159, 6167, 6170, 6160, 6162, 6169, 6173, 6174, 6172, 6176, - 6186, 6181, 6183, 6189, 6184, 6192, 6741, 6741, 6194, 6741, + 6034, 6036, 6793, 6039, 6040, 6041, 6043, 6042, 6050, 6046, + 6048, 6793, 6058, 6051, 6061, 6063, 6793, 6793, 6064, 6070, + 6793, 6073, 6074, 6067, 6082, 6065, 6075, 6087, 6084, 6793, + 6088, 6090, 6078, 6091, 6094, 6093, 6096, 6793, 6100, 6097, + 6101, 6103, 6793, 6104, 6109, 6110, 6112, 6113, 6793, 6114, + 6106, 6130, 6115, 6793, 6117, 6129, 6131, 6793, 6793, 6135, + 6139, 6136, 6793, 6793, 6793, 6793, 6142, 6143, 6145, 6147, + 6793, 6150, 6154, 6158, 6160, 6165, 6153, 6793, 6161, 6167, + 6169, 6170, 6171, 6793, 6793, 6172, 6173, 6174, 6178, 6175, + 6793, 6793, 6180, 6182, 6183, 6181, 6184, 6793, 6186, 6191, - 6196, 6198, 6741, 6741, 6201, 6203, 6205, 6209, 6741, 6211, - 6213, 6215, 6217, 6206, 6741, 6218, 6220, 6221, 6222, 6223, - 6741, 6225, 6226, 6229, 6231, 6235, 6237, 6238, 6241, 6741, - 6236, 6253, 6741, 6741, 6242, 6244, 6233, 6254, 6250, 6741, - 6258, 6262, 6257, 6264, 6263, 6265, 6270, 6741, 6266, 6267, - 6741, 6741, 6273, 6274, 6741, 6741, 6275, 6741, 6741, 6741, - 6741, 6741, 6741, 6741, 6741, 6279, 6278, 6741, 6280, 6288, - 6291, 6741, 6295, 6741, 6285, 6296, 6298, 6292, 6741, 6297, - 6741, 6299, 6303, 6304, 6313, 6306, 6316, 6307, 6300, 6310, - 6318, 6323, 6324, 6326, 6325, 6327, 6329, 6331, 6341, 6333, + 6198, 6194, 6200, 6207, 6209, 6202, 6210, 6211, 6219, 6222, + 6212, 6214, 6221, 6225, 6226, 6224, 6228, 6238, 6233, 6235, + 6241, 6236, 6244, 6793, 6793, 6246, 6793, 6248, 6250, 6793, + 6793, 6253, 6255, 6257, 6261, 6793, 6263, 6265, 6267, 6269, + 6258, 6793, 6270, 6272, 6273, 6274, 6275, 6793, 6277, 6278, + 6281, 6283, 6287, 6289, 6290, 6293, 6793, 6288, 6305, 6793, + 6793, 6294, 6296, 6285, 6306, 6302, 6793, 6310, 6314, 6309, + 6316, 6315, 6317, 6322, 6793, 6318, 6319, 6793, 6793, 6325, + 6326, 6793, 6793, 6327, 6793, 6793, 6793, 6793, 6793, 6793, + 6793, 6793, 6331, 6330, 6793, 6332, 6340, 6343, 6793, 6347, - 6338, 6741, 6741, 6741, 6330, 6342, 6346, 6347, 6352, 6354, - 6358, 6360, 6349, 6361, 6363, 6364, 6365, 6367, 6371, 6378, - 6373, 6376, 6374, 6383, 6375, 6385, 6741, 6390, 6391, 6377, - 6394, 6741, 6397, 6741, 6380, 6741, 6741, 6400, 6401, 6403, - 6404, 6413, 6414, 6405, 6409, 6410, 6415, 6417, 6741, 6425, - 6741, 6741, 6418, 6421, 6741, 6426, 6427, 6741, 6428, 6430, - 6432, 6433, 6434, 6436, 6437, 6438, 6445, 6741, 6741, 6449, - 6450, 6452, 6454, 6456, 6463, 6458, 6460, 6462, 6470, 6464, - 6472, 6741, 6474, 6476, 6478, 6741, 6480, 6479, 6482, 6485, - 6486, 6493, 6488, 6490, 6741, 6491, 6741, 6495, 6497, 6496, + 6793, 6337, 6348, 6350, 6344, 6793, 6349, 6793, 6351, 6355, + 6356, 6365, 6358, 6368, 6359, 6352, 6362, 6370, 6375, 6376, + 6378, 6377, 6379, 6381, 6383, 6393, 6385, 6390, 6793, 6793, + 6793, 6382, 6394, 6398, 6399, 6404, 6406, 6410, 6412, 6401, + 6413, 6415, 6416, 6417, 6419, 6423, 6430, 6425, 6428, 6426, + 6435, 6427, 6437, 6793, 6442, 6443, 6429, 6446, 6793, 6449, + 6793, 6432, 6793, 6793, 6452, 6453, 6455, 6456, 6465, 6466, + 6457, 6461, 6462, 6467, 6469, 6793, 6477, 6793, 6793, 6470, + 6473, 6793, 6478, 6479, 6793, 6480, 6482, 6484, 6485, 6486, + 6488, 6489, 6490, 6497, 6793, 6793, 6501, 6502, 6504, 6506, - 6499, 6500, 6502, 6510, 6508, 6512, 6741, 6514, 6516, 6520, - 6521, 6523, 6526, 6527, 6528, 6530, 6532, 6533, 6542, 6536, - 6538, 6544, 6546, 6548, 6741, 6550, 6552, 6741, 6553, 6554, - 6555, 6556, 6560, 6741, 6565, 6557, 6562, 6568, 6573, 6570, - 6741, 6579, 6583, 6580, 6741, 6584, 6741, 6741, 6585, 6586, - 6588, 6592, 6594, 6741, 6741, 6741, 6621, 6628, 6635, 6642, - 6649, 6656, 6663, 88, 6670, 6677, 6684, 6691, 6698, 6705, - 6712, 6719, 6726, 6733 + 6508, 6515, 6510, 6512, 6514, 6522, 6516, 6524, 6793, 6526, + 6528, 6530, 6793, 6532, 6531, 6534, 6537, 6538, 6545, 6540, + 6542, 6793, 6543, 6793, 6547, 6549, 6548, 6551, 6552, 6554, + 6562, 6560, 6564, 6793, 6566, 6568, 6572, 6573, 6575, 6578, + 6579, 6580, 6582, 6584, 6585, 6594, 6588, 6590, 6596, 6598, + 6600, 6793, 6602, 6604, 6793, 6605, 6606, 6607, 6608, 6612, + 6793, 6617, 6609, 6614, 6620, 6625, 6622, 6793, 6631, 6635, + 6632, 6793, 6636, 6793, 6793, 6637, 6638, 6640, 6644, 6646, + 6793, 6793, 6793, 6673, 6680, 6687, 6694, 6701, 6708, 6715, + 88, 6722, 6729, 6736, 6743, 6750, 6757, 6764, 6771, 6778, + + 6785 } ; -static const flex_int16_t yy_def[3475] = +static const flex_int16_t yy_def[3502] = { 0, - 3456, 1, 3457, 3457, 3458, 3458, 3459, 3459, 3460, 3460, - 3461, 3461, 3462, 3462, 3463, 3463, 3456, 3464, 3456, 3456, - 3456, 3456, 3465, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3466, 3456, 3456, 3456, - 3466, 3467, 3456, 3456, 3456, 3467, 3468, 3456, 3456, 3456, - 3456, 3468, 3469, 3456, 3456, 3456, 3469, 3470, 3456, 3471, - 3456, 3470, 3470, 3472, 3456, 3456, 3456, 3456, 3472, 3473, - 3456, 3456, 3456, 3473, 3464, 3464, 3456, 3474, 3465, 3474, - 3465, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3483, 1, 3484, 3484, 3485, 3485, 3486, 3486, 3487, 3487, + 3488, 3488, 3489, 3489, 3490, 3490, 3483, 3491, 3483, 3483, + 3483, 3483, 3492, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3493, 3483, 3483, 3483, + 3493, 3494, 3483, 3483, 3483, 3494, 3495, 3483, 3483, 3483, + 3483, 3495, 3496, 3483, 3483, 3483, 3496, 3497, 3483, 3498, + 3483, 3497, 3497, 3499, 3483, 3483, 3483, 3483, 3499, 3500, + 3483, 3483, 3483, 3500, 3491, 3491, 3483, 3501, 3492, 3501, + 3492, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3466, - 3466, 3467, 3467, 3468, 3468, 3456, 3469, 3469, 3470, 3470, - 3471, 3471, 3470, 3472, 3472, 3456, 3473, 3473, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3493, + 3493, 3494, 3494, 3495, 3495, 3483, 3496, 3496, 3497, 3497, + 3498, 3498, 3497, 3499, 3499, 3483, 3500, 3500, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3470, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3497, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3470, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3497, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3456, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3483, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3456, 3464, 3464, 3470, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3483, 3491, 3491, 3497, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3470, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3456, 3464, 3456, 3456, 3464, 3456, 3456, 3464, 3464, 3456, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3497, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3483, 3491, 3483, 3483, 3491, 3483, 3483, 3491, + 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3470, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3456, 3464, 3464, 3456, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3497, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, + 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3456, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3456, 3456, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3456, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3483, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3483, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, + 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3470, - 3470, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, + 3491, 3491, 3491, 3491, 3491, 3497, 3497, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, + 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3456, 3464, 3464, 3464, 3470, 3464, 3464, 3464, - 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3483, 3491, 3491, 3491, 3497, 3491, 3491, 3491, 3491, 3491, + 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3456, - 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3456, 3464, 3464, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3483, - 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, - 3470, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, - 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3483, 3491, 3491, + 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, + 3497, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, + 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3456, 3464, 3456, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3456, 3456, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3483, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3483, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, - 3456, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, - 3464, 3470, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, + 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, + 3491, 3491, 3483, 3491, 3483, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, + 3491, 3491, 3491, 3497, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3456, - 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, - 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3483, 3483, 3491, 3491, 3491, 3483, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, - 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3456, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3456, 3464, - 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3456, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3470, 3464, 3456, 3464, 3464, 3464, 3456, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3456, - 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, + 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, + 3491, 3491, 3483, 3491, 3491, 3491, 3483, 3491, 3491, 3491, + 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3497, 3491, 3483, 3491, 3491, 3491, + 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3483, 3491, 3483, 3491, 3491, 3491, 3483, 3491, 3491, - 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3456, 3456, 3464, 3456, 3464, - 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3456, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3456, - 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, + 3483, 3491, 3483, 3491, 3491, 3491, 3483, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3483, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, + 3491, 3491, 3491, 3483, 3491, 3483, 3491, 3491, 3491, 3491, + 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3456, 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, - 3464, 3464, 3464, 3456, 3456, 3464, 3456, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3456, 3464, 3464, 3470, 3464, 3464, 3464, 3464, 3464, - 3464, 3456, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, - 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, + 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3483, + 3483, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, + 3497, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3483, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3456, 3464, 3456, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3456, 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, + 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3483, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3483, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, - 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3470, - 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, - 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3456, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, + 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3483, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3497, 3491, 3483, + 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, + 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3456, - 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3456, 3456, 3464, - 3464, 3464, 3464, 3464, 3456, 3456, 3464, 3456, 3464, 3456, - 3464, 3464, 3456, 3456, 3464, 3464, 3464, 3464, 3464, 3464, - 3456, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3456, 3464, - 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3456, - 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3483, + 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3483, 3483, 3491, + 3491, 3491, 3491, 3491, 3483, 3483, 3491, 3483, 3491, 3483, + 3491, 3491, 3483, 3483, 3491, 3491, 3491, 3491, 3491, 3491, + 3483, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3483, 3491, + 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3483, + 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3470, 3464, 3464, 3464, - 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3456, 3464, 3456, 3464, 3464, 3464, 3464, 3464, - 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3456, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3497, 3491, 3491, 3491, + 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3483, 3491, 3483, 3491, 3491, 3491, 3491, 3491, + 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3483, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3456, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3456, 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, - 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3456, 3456, 3456, 3456, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, - 3464, 3456, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3456, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3470, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3456, 3456, 3464, 3464, 3464, 3464, 3464, + 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3483, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3483, 3483, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3483, 3491, + 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3483, 3483, 3483, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3483, 3491, 3483, 3483, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3483, 3491, 3483, 3491, 3491, 3491, 3491, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3456, 3464, 3456, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3456, - 3464, 3464, 3464, 3456, 3456, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3456, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, - 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3456, 3464, - 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3456, 3464, 3456, - 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3456, 3464, - 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3456, 3464, 3464, + 3491, 3491, 3491, 3497, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3483, 3483, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3483, + 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3483, 3483, 3491, 3491, 3491, 3483, 3483, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, + 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3483, 3491, 3491, 3483, 3491, 3491, 3491, 3491, + 3491, 3483, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3456, 3456, 3464, 3464, 3470, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3456, 3456, 3464, 3456, 3464, 3464, - 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3456, 3464, - 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3456, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3456, 3456, 3456, 3464, 3464, 3456, 3464, 3464, 3464, + 3483, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3483, 3491, + 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, + 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3483, 3483, 3491, 3491, 3497, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3483, 3491, + 3483, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, + 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3483, 3491, 3491, - 3464, 3456, 3464, 3464, 3464, 3456, 3456, 3464, 3464, 3464, - 3456, 3464, 3464, 3456, 3464, 3456, 3464, 3456, 3464, 3464, - 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3456, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3456, 3464, - 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3456, 3456, 3464, 3464, 3456, - 3464, 3456, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3456, - 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, + 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3483, 3483, 3483, 3491, 3491, + 3483, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3483, + 3483, 3491, 3491, 3491, 3483, 3491, 3491, 3483, 3491, 3483, + 3491, 3483, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, + 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3483, 3491, 3483, 3491, 3483, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3464, 3456, 3456, 3464, 3464, 3464, 3456, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3456, 3456, 3456, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3456, 3456, 3464, - 3456, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, - 3456, 3456, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, + 3483, 3483, 3491, 3491, 3483, 3491, 3483, 3491, 3483, 3491, + 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, + 3491, 3483, 3491, 3491, 3491, 3491, 3483, 3483, 3491, 3491, + 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3483, 3483, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3483, 3491, 3483, 3483, 3491, 3483, 3491, 3491, 3491, - 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3456, 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, - 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3456, 3464, 3464, - 3464, 3456, 3456, 3464, 3464, 3464, 3456, 3456, 3456, 3464, - 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, - 3456, 3464, 3464, 3464, 3464, 3464, 3456, 3456, 3464, 3464, - 3464, 3464, 3464, 3456, 3456, 3464, 3464, 3464, 3464, 3464, - 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3456, 3464, 3456, + 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3483, 3491, 3491, 3491, 3491, 3483, 3483, 3491, 3491, + 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, + 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3483, 3491, + 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3483, 3483, 3491, + 3491, 3491, 3483, 3483, 3483, 3483, 3491, 3491, 3491, 3491, + 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, + 3491, 3491, 3491, 3483, 3483, 3491, 3491, 3491, 3491, 3491, + 3483, 3483, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, - 3464, 3464, 3456, 3456, 3464, 3464, 3464, 3464, 3456, 3464, - 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, - 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, - 3464, 3464, 3456, 3456, 3464, 3464, 3464, 3464, 3464, 3456, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, - 3456, 3456, 3464, 3464, 3456, 3456, 3464, 3456, 3456, 3456, - 3456, 3456, 3456, 3456, 3456, 3464, 3464, 3456, 3464, 3464, - 3464, 3456, 3464, 3456, 3464, 3464, 3464, 3464, 3456, 3464, - 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3483, 3483, 3491, 3483, 3491, 3491, 3483, + 3483, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, + 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3483, + 3483, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3483, 3483, 3491, + 3491, 3483, 3483, 3491, 3483, 3483, 3483, 3483, 3483, 3483, + 3483, 3483, 3491, 3491, 3483, 3491, 3491, 3491, 3483, 3491, - 3464, 3456, 3456, 3456, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, - 3464, 3456, 3464, 3456, 3464, 3456, 3456, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, - 3456, 3456, 3464, 3464, 3456, 3464, 3464, 3456, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3456, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3456, 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3456, 3464, 3456, 3464, 3464, 3464, + 3483, 3491, 3491, 3491, 3491, 3483, 3491, 3483, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3483, + 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3483, 3491, + 3483, 3491, 3483, 3483, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3483, 3483, 3491, + 3491, 3483, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3483, 3483, 3491, 3491, 3491, 3491, - 3464, 3464, 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, - 3464, 3464, 3464, 3464, 3456, 3464, 3464, 3456, 3464, 3464, - 3464, 3464, 3464, 3456, 3464, 3464, 3464, 3464, 3464, 3464, - 3456, 3464, 3464, 3464, 3456, 3464, 3456, 3456, 3464, 3464, - 3464, 3464, 3464, 3456, 3456, 0, 3456, 3456, 3456, 3456, - 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, - 3456, 3456, 3456, 3456 + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, + 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3483, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3491, 3483, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, + 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, + 3491, 3483, 3491, 3483, 3483, 3491, 3491, 3491, 3491, 3491, + 3483, 3483, 0, 3483, 3483, 3483, 3483, 3483, 3483, 3483, + 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, + + 3483 } ; -static const flex_int16_t yy_nxt[6782] = +static const flex_int16_t yy_nxt[6834] = { 0, 18, 19, 20, 21, 22, 23, 22, 18, 18, 18, 18, 18, 22, 24, 25, 26, 27, 28, 29, 30, @@ -1621,7 +1632,7 @@ static const flex_int16_t yy_nxt[6782] = 311, 86, 86, 86, 86, 307, 86, 318, 86, 86, 86, 319, 86, 325, 312, 313, 315, 309, 314, 316, 86, 320, 86, 329, 321, 328, 322, 330, 327, 326, - 332, 86, 86, 86, 734, 334, 86, 338, 323, 331, + 332, 86, 86, 86, 736, 334, 86, 338, 323, 331, 324, 86, 335, 86, 86, 340, 86, 342, 86, 339, 341, 86, 333, 86, 86, 86, 344, 336, 86, 86, 86, 343, 86, 86, 346, 86, 348, 86, 345, 86, @@ -1672,644 +1683,650 @@ static const flex_int16_t yy_nxt[6782] = 570, 572, 573, 575, 86, 574, 86, 576, 577, 86, 582, 579, 580, 86, 86, 585, 86, 583, 86, 86, - 86, 86, 599, 86, 86, 86, 165, 602, 86, 581, - 591, 86, 584, 587, 86, 586, 588, 589, 590, 594, - 600, 592, 86, 593, 86, 86, 605, 595, 596, 601, - 604, 597, 598, 86, 603, 86, 86, 86, 608, 606, - 86, 607, 610, 86, 611, 609, 86, 613, 86, 86, - 86, 86, 616, 86, 614, 617, 86, 618, 86, 612, - 86, 86, 86, 615, 86, 621, 86, 622, 86, 623, - 86, 619, 86, 86, 633, 86, 625, 624, 629, 620, - 86, 86, 86, 86, 628, 630, 626, 631, 627, 86, + 86, 601, 86, 86, 86, 86, 165, 86, 603, 581, + 591, 592, 584, 587, 602, 586, 588, 589, 590, 86, + 86, 606, 593, 604, 594, 86, 86, 86, 86, 605, + 595, 86, 86, 86, 608, 609, 610, 611, 596, 597, + 86, 86, 598, 599, 86, 613, 600, 607, 615, 86, + 86, 86, 86, 618, 614, 616, 619, 86, 86, 86, + 612, 620, 86, 86, 617, 86, 86, 625, 623, 86, + 624, 86, 86, 621, 86, 626, 86, 86, 86, 631, + 622, 627, 632, 86, 86, 86, 630, 633, 86, 635, - 86, 636, 86, 632, 634, 86, 638, 86, 86, 86, - 86, 86, 86, 635, 86, 86, 640, 643, 641, 86, - 86, 651, 86, 645, 637, 86, 653, 86, 639, 86, - 654, 642, 86, 646, 644, 647, 650, 648, 652, 86, - 649, 86, 86, 86, 86, 658, 86, 86, 661, 656, - 663, 86, 657, 655, 86, 664, 86, 659, 86, 660, - 86, 86, 86, 667, 86, 666, 662, 671, 670, 86, - 86, 86, 86, 86, 86, 673, 86, 86, 668, 665, - 86, 669, 163, 86, 672, 86, 676, 674, 690, 688, - 86, 675, 86, 677, 685, 687, 689, 686, 678, 86, + 629, 628, 86, 86, 638, 86, 634, 636, 86, 637, + 86, 640, 86, 86, 86, 86, 642, 639, 86, 645, + 86, 643, 86, 86, 86, 86, 641, 653, 86, 656, + 647, 86, 86, 86, 644, 646, 86, 654, 648, 652, + 649, 650, 651, 655, 658, 657, 661, 659, 86, 86, + 86, 660, 663, 86, 86, 666, 86, 665, 86, 86, + 86, 86, 86, 86, 669, 662, 86, 672, 86, 86, + 668, 673, 86, 664, 86, 86, 86, 675, 86, 667, + 86, 86, 670, 671, 674, 690, 86, 677, 678, 86, + 676, 86, 679, 689, 86, 86, 687, 680, 694, 681, - 679, 86, 86, 732, 86, 692, 680, 86, 681, 693, - 86, 682, 683, 694, 86, 691, 86, 695, 684, 696, - 86, 700, 86, 697, 86, 699, 698, 86, 86, 86, - 707, 704, 701, 705, 86, 702, 86, 709, 703, 86, - 86, 86, 86, 713, 706, 86, 86, 86, 86, 86, - 86, 86, 711, 716, 710, 724, 712, 720, 717, 708, - 86, 86, 86, 86, 714, 719, 718, 722, 715, 721, - 170, 86, 86, 86, 723, 86, 86, 726, 86, 86, - 86, 733, 731, 725, 736, 86, 737, 728, 735, 86, - 729, 727, 86, 739, 730, 86, 86, 86, 86, 86, + 692, 688, 693, 86, 86, 682, 86, 683, 691, 695, + 684, 685, 86, 696, 86, 86, 86, 686, 697, 698, + 702, 701, 699, 86, 86, 700, 86, 706, 86, 86, + 704, 703, 705, 86, 709, 86, 711, 86, 86, 86, + 86, 86, 715, 86, 86, 86, 707, 86, 708, 718, + 713, 86, 712, 86, 710, 714, 719, 86, 716, 722, + 86, 724, 726, 170, 720, 717, 721, 725, 86, 723, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 733, 735, 727, 746, 86, 86, 728, 730, 86, 731, + 734, 729, 737, 732, 738, 86, 739, 740, 741, 86, - 741, 738, 86, 86, 86, 745, 86, 740, 744, 86, - 742, 750, 763, 743, 86, 746, 751, 86, 753, 86, - 749, 86, 747, 754, 86, 748, 755, 752, 756, 86, - 757, 86, 86, 758, 86, 759, 86, 86, 86, 86, - 760, 86, 761, 764, 86, 766, 762, 767, 86, 86, - 86, 772, 86, 768, 86, 765, 771, 86, 773, 86, - 86, 86, 86, 777, 86, 775, 86, 86, 86, 770, - 86, 86, 769, 780, 783, 776, 784, 774, 86, 778, - 86, 86, 86, 781, 86, 86, 86, 779, 786, 794, - 782, 86, 785, 787, 86, 791, 788, 789, 86, 790, + 742, 86, 86, 86, 86, 86, 743, 86, 747, 86, + 163, 86, 86, 744, 752, 765, 745, 86, 748, 753, + 86, 755, 86, 751, 754, 749, 756, 86, 750, 757, + 758, 86, 759, 86, 760, 86, 761, 86, 763, 86, + 86, 762, 86, 86, 766, 86, 86, 86, 86, 764, + 769, 770, 86, 768, 86, 774, 773, 86, 86, 86, + 86, 86, 767, 776, 86, 778, 86, 780, 86, 86, + 86, 771, 86, 772, 86, 783, 777, 775, 779, 86, + 787, 86, 86, 781, 86, 86, 86, 788, 790, 86, + 782, 784, 86, 791, 786, 785, 792, 793, 789, 794, - 792, 86, 793, 795, 798, 796, 86, 86, 86, 86, - 86, 800, 803, 801, 86, 799, 797, 804, 86, 86, - 86, 86, 86, 805, 86, 86, 86, 810, 808, 812, - 86, 86, 86, 86, 86, 802, 806, 807, 809, 86, - 813, 819, 86, 817, 811, 814, 86, 86, 820, 816, - 86, 818, 86, 815, 86, 821, 822, 823, 86, 86, - 86, 824, 86, 86, 826, 825, 830, 828, 827, 829, - 86, 832, 86, 86, 86, 831, 833, 86, 836, 835, - 86, 86, 86, 837, 86, 843, 86, 840, 834, 86, - 86, 86, 86, 838, 839, 846, 86, 848, 845, 86, + 86, 795, 86, 86, 86, 86, 802, 796, 797, 798, + 799, 86, 86, 86, 86, 86, 800, 804, 801, 805, + 803, 86, 86, 86, 86, 808, 807, 86, 809, 810, + 86, 86, 86, 86, 812, 86, 814, 816, 86, 86, + 86, 806, 811, 813, 817, 86, 86, 823, 86, 161, + 86, 825, 815, 86, 819, 821, 820, 822, 818, 86, + 826, 827, 86, 86, 86, 824, 86, 828, 830, 86, + 86, 829, 834, 836, 832, 86, 831, 86, 86, 86, + 835, 86, 86, 86, 837, 840, 86, 839, 86, 833, + 841, 86, 847, 844, 86, 86, 842, 86, 86, 843, - 86, 841, 842, 850, 852, 844, 849, 86, 86, 856, - 86, 86, 847, 854, 857, 86, 86, 858, 851, 853, - 86, 86, 860, 855, 86, 86, 862, 86, 86, 86, - 86, 868, 86, 86, 86, 86, 859, 86, 869, 86, - 861, 870, 86, 863, 86, 864, 865, 875, 866, 86, - 867, 873, 877, 86, 871, 86, 86, 872, 86, 86, - 86, 86, 86, 874, 876, 86, 884, 86, 880, 879, - 86, 86, 86, 878, 86, 86, 893, 161, 881, 891, - 883, 882, 86, 885, 86, 887, 886, 86, 894, 888, - 889, 890, 86, 86, 86, 86, 892, 86, 86, 86, + 86, 86, 838, 86, 849, 850, 854, 845, 846, 86, + 852, 86, 86, 848, 856, 86, 862, 851, 853, 86, + 86, 855, 86, 860, 857, 86, 863, 858, 861, 86, + 86, 86, 864, 866, 86, 86, 86, 859, 865, 86, + 872, 86, 86, 867, 86, 873, 86, 86, 86, 86, + 86, 874, 868, 869, 881, 870, 879, 86, 86, 871, + 86, 86, 875, 876, 86, 86, 86, 877, 86, 878, + 86, 86, 880, 86, 86, 883, 884, 888, 882, 86, + 86, 86, 86, 86, 885, 896, 889, 886, 895, 887, + 890, 86, 897, 86, 86, 86, 899, 891, 892, 893, - 899, 895, 86, 86, 897, 86, 86, 86, 898, 903, - 904, 896, 902, 900, 905, 86, 86, 901, 86, 86, - 907, 908, 86, 86, 909, 910, 86, 906, 911, 915, - 86, 86, 913, 917, 170, 86, 912, 86, 914, 916, - 86, 918, 86, 86, 86, 919, 924, 86, 86, 920, - 86, 925, 927, 86, 86, 86, 931, 921, 922, 926, - 928, 86, 86, 929, 923, 86, 86, 930, 86, 933, - 86, 937, 86, 86, 86, 86, 86, 86, 934, 86, - 938, 932, 939, 86, 86, 86, 958, 86, 936, 86, - 86, 940, 952, 935, 950, 953, 942, 86, 86, 941, + 894, 86, 86, 86, 86, 898, 901, 903, 902, 86, + 86, 86, 900, 86, 86, 86, 908, 907, 86, 904, + 909, 86, 906, 905, 86, 914, 911, 86, 86, 912, + 86, 86, 170, 913, 919, 86, 915, 920, 910, 917, + 86, 86, 916, 918, 921, 86, 86, 86, 86, 922, + 925, 86, 928, 86, 86, 929, 924, 931, 86, 86, + 923, 86, 926, 930, 932, 86, 86, 935, 86, 86, + 933, 86, 927, 86, 86, 937, 941, 86, 86, 86, + 938, 86, 86, 86, 934, 942, 936, 86, 943, 86, + 86, 86, 940, 86, 939, 86, 944, 957, 86, 956, - 86, 951, 943, 954, 86, 944, 956, 955, 957, 945, - 86, 959, 946, 86, 86, 86, 86, 964, 86, 947, - 948, 86, 949, 86, 960, 86, 972, 86, 86, 962, - 86, 86, 961, 979, 975, 977, 963, 86, 965, 966, - 86, 967, 976, 86, 968, 974, 973, 86, 86, 969, - 86, 978, 86, 983, 86, 970, 971, 984, 981, 980, - 996, 986, 985, 86, 86, 987, 86, 988, 86, 990, - 86, 989, 982, 86, 86, 991, 992, 994, 86, 993, - 86, 86, 995, 86, 86, 86, 86, 998, 86, 1002, - 86, 86, 86, 1001, 86, 86, 1005, 86, 86, 178, + 86, 958, 954, 946, 945, 86, 955, 947, 86, 959, + 948, 86, 86, 967, 949, 961, 965, 950, 86, 962, + 86, 963, 86, 86, 951, 952, 968, 953, 960, 86, + 86, 86, 86, 964, 86, 977, 86, 966, 86, 969, + 970, 86, 971, 86, 86, 972, 984, 980, 982, 976, + 973, 86, 978, 86, 979, 86, 974, 975, 981, 86, + 986, 990, 86, 86, 983, 989, 991, 86, 987, 86, + 985, 86, 993, 86, 86, 1001, 992, 86, 994, 995, + 86, 996, 997, 86, 988, 86, 998, 1000, 86, 86, + 999, 86, 86, 86, 86, 86, 1004, 86, 1008, 86, - 997, 1009, 1007, 1010, 999, 1000, 1003, 86, 1004, 1012, - 1006, 1011, 86, 86, 1013, 86, 1015, 86, 1014, 1008, - 1017, 1019, 86, 86, 86, 86, 86, 86, 1018, 86, - 1021, 86, 1020, 1022, 1023, 86, 1016, 1024, 86, 1025, - 86, 86, 86, 86, 86, 86, 1027, 1032, 86, 1028, - 86, 1035, 86, 86, 86, 86, 86, 1036, 1026, 1033, - 1030, 1029, 1034, 86, 1031, 1038, 86, 86, 86, 86, - 86, 86, 1037, 1041, 1043, 1039, 1042, 86, 86, 1040, - 86, 86, 1044, 1045, 1049, 86, 1051, 1047, 86, 1050, - 86, 86, 86, 1048, 86, 1046, 1052, 86, 86, 1059, + 86, 1002, 1007, 86, 86, 1011, 86, 86, 1017, 86, + 1003, 1013, 1015, 1005, 1006, 1009, 86, 1010, 86, 86, + 1018, 1016, 86, 86, 1012, 1019, 86, 1020, 1021, 1014, + 1023, 1028, 86, 1025, 86, 86, 86, 1024, 1022, 86, + 86, 1027, 86, 1026, 1029, 86, 1030, 86, 86, 86, + 1031, 86, 86, 86, 1033, 86, 1038, 86, 1034, 86, + 1041, 86, 86, 86, 86, 86, 1032, 1042, 1039, 1036, + 1035, 1040, 86, 86, 1037, 86, 86, 1047, 86, 86, + 86, 1043, 1049, 86, 1044, 1045, 86, 1048, 1046, 86, + 1052, 1050, 1053, 1055, 1051, 86, 1057, 86, 1056, 86, - 1054, 1057, 1060, 86, 86, 86, 86, 1053, 86, 1058, - 1062, 86, 1056, 86, 86, 86, 1055, 86, 86, 86, - 86, 86, 1070, 1073, 1068, 1061, 86, 1063, 1064, 86, - 1074, 1065, 86, 86, 1067, 1066, 86, 1071, 1075, 1072, - 1069, 86, 1078, 86, 86, 86, 86, 1077, 86, 1079, - 1081, 1076, 1082, 86, 86, 86, 86, 1080, 86, 86, - 86, 86, 1087, 1083, 1085, 1092, 1084, 1093, 1086, 1095, - 86, 86, 86, 86, 1094, 86, 1088, 1098, 1090, 1099, - 1089, 1091, 86, 86, 1096, 86, 1100, 86, 86, 86, - 86, 1107, 1097, 1108, 1104, 86, 1106, 86, 86, 86, + 86, 86, 1054, 86, 86, 86, 86, 86, 1063, 1065, + 1060, 86, 1058, 1066, 86, 86, 1064, 86, 86, 1059, + 1068, 86, 1062, 86, 86, 86, 1070, 1061, 86, 1079, + 86, 86, 1067, 1074, 1076, 86, 86, 86, 1069, 86, + 1072, 1071, 86, 1073, 86, 1080, 1077, 86, 1075, 1081, + 1078, 86, 1085, 1084, 86, 86, 1083, 86, 1082, 1087, + 1088, 86, 86, 86, 86, 1086, 86, 86, 86, 1098, + 86, 1091, 1093, 1099, 1089, 86, 1101, 1090, 86, 86, + 86, 86, 86, 1092, 86, 1104, 1094, 1096, 1106, 1095, + 1097, 86, 1100, 1105, 1102, 86, 86, 86, 86, 86, - 1102, 1109, 86, 86, 1112, 86, 1101, 176, 1103, 86, - 86, 1105, 1114, 86, 86, 86, 1111, 1120, 1117, 1116, - 1110, 86, 1121, 170, 86, 1113, 86, 1115, 1123, 86, - 1124, 1118, 86, 1119, 86, 86, 1122, 86, 86, 1127, - 86, 86, 86, 86, 1140, 86, 86, 86, 1125, 1141, - 86, 1131, 1126, 86, 1128, 1130, 1143, 86, 86, 1165, - 1132, 1129, 1142, 1133, 86, 1146, 86, 1134, 86, 1135, - 1145, 1144, 1147, 1136, 86, 1137, 86, 86, 1150, 1148, - 1138, 86, 1149, 1151, 86, 1139, 1152, 86, 86, 86, - 1153, 1154, 86, 86, 1157, 86, 1156, 1160, 86, 86, + 1113, 1103, 1110, 86, 1112, 1114, 86, 86, 1108, 86, + 1115, 86, 86, 86, 1107, 1118, 1109, 1120, 86, 1111, + 86, 86, 86, 86, 86, 1117, 86, 1116, 1122, 1123, + 1126, 86, 1130, 1119, 86, 1127, 170, 1128, 1121, 86, + 86, 86, 1124, 1129, 1125, 1133, 1131, 86, 86, 86, + 86, 86, 86, 1146, 1132, 86, 1149, 86, 86, 1147, + 1134, 86, 1136, 1137, 86, 1151, 86, 1175, 86, 1138, + 86, 1135, 1139, 86, 86, 1154, 1140, 86, 1141, 1148, + 1156, 1152, 1142, 1150, 1143, 1157, 86, 86, 1153, 1144, + 86, 1155, 86, 86, 1145, 86, 1158, 1160, 86, 86, - 1159, 86, 86, 1155, 1158, 1167, 1166, 1161, 1164, 1168, - 86, 86, 1163, 1169, 86, 86, 1162, 1170, 1171, 86, - 86, 1173, 86, 86, 86, 1183, 86, 86, 1186, 86, - 86, 86, 1172, 86, 86, 1182, 1187, 1174, 86, 1175, - 1184, 1185, 1188, 86, 1176, 86, 1177, 1189, 1193, 1190, - 86, 86, 1178, 86, 86, 1194, 86, 1179, 1180, 86, - 86, 1192, 1191, 1195, 1181, 1199, 86, 86, 1202, 86, - 1203, 1196, 1197, 1200, 86, 86, 86, 1198, 86, 1207, - 1201, 1205, 86, 86, 86, 86, 86, 1208, 86, 86, - 1213, 1206, 86, 1210, 1204, 1211, 86, 86, 1214, 86, + 1163, 86, 86, 1166, 1159, 86, 86, 1162, 86, 1161, + 1164, 1165, 1171, 86, 1173, 1167, 1174, 1170, 1172, 1169, + 86, 1176, 86, 1168, 1177, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 1189, 86, 1192, 86, 86, 86, + 1188, 1194, 1193, 86, 1191, 86, 1179, 1178, 86, 1180, + 86, 1181, 1190, 86, 1200, 1195, 1182, 1196, 1183, 86, + 86, 1199, 86, 86, 1184, 86, 86, 1197, 1201, 1185, + 1186, 1202, 1198, 86, 1207, 86, 1187, 86, 86, 1210, + 1203, 1204, 1208, 86, 1205, 86, 1211, 86, 86, 86, + 1215, 1206, 86, 1213, 86, 86, 86, 1209, 86, 1216, - 86, 86, 1209, 86, 1212, 1216, 86, 86, 86, 86, - 86, 1215, 1223, 1218, 1225, 1220, 1221, 1217, 1222, 86, - 86, 1219, 86, 86, 86, 1224, 1226, 86, 1229, 86, - 86, 86, 86, 1227, 86, 86, 1234, 1235, 86, 1236, - 1239, 1231, 1228, 1230, 1237, 1233, 86, 1232, 86, 1238, - 86, 86, 86, 1241, 86, 1244, 86, 1248, 86, 1240, - 1245, 86, 86, 1246, 1242, 86, 1247, 86, 1243, 86, - 1249, 86, 86, 1255, 1257, 86, 86, 86, 1250, 86, - 86, 1251, 1253, 86, 86, 1252, 1254, 1261, 1259, 86, - 1258, 1260, 1256, 86, 1263, 86, 86, 1262, 1264, 86, + 86, 86, 1214, 1221, 1218, 86, 1212, 1219, 86, 86, + 1222, 1217, 86, 1224, 86, 86, 1220, 86, 86, 86, + 86, 86, 86, 86, 1223, 1231, 86, 1229, 1226, 1228, + 1230, 86, 1225, 1233, 86, 1227, 1237, 1232, 1234, 86, + 1235, 86, 86, 1236, 86, 86, 86, 86, 86, 178, + 1242, 1243, 1244, 1238, 86, 1239, 86, 1245, 1247, 1241, + 1240, 86, 1246, 1248, 86, 86, 86, 1252, 86, 86, + 86, 1249, 1253, 86, 86, 86, 1254, 1256, 1250, 1255, + 86, 86, 1251, 1257, 86, 1263, 1259, 86, 1258, 1265, + 86, 86, 86, 86, 1261, 86, 86, 1267, 1260, 1262, - 86, 86, 86, 86, 1267, 1266, 1268, 86, 1270, 1273, - 86, 1265, 1269, 1272, 86, 86, 1274, 86, 86, 1271, - 86, 1277, 86, 1275, 86, 1278, 86, 86, 1276, 86, - 1282, 1284, 86, 1285, 1339, 86, 86, 86, 1279, 86, - 1286, 1280, 1283, 86, 1288, 1290, 1281, 86, 1287, 86, - 86, 86, 1289, 86, 1291, 1294, 1293, 86, 1296, 86, - 86, 86, 1295, 86, 86, 86, 86, 86, 86, 1297, - 1301, 1292, 1298, 86, 86, 86, 1302, 1303, 86, 1304, - 86, 86, 1299, 1308, 1300, 1309, 1305, 1306, 86, 86, - 86, 86, 86, 1311, 86, 1310, 86, 1307, 1312, 86, + 86, 86, 86, 1269, 86, 1266, 1271, 1264, 86, 1272, + 1268, 86, 86, 86, 1270, 86, 1275, 1274, 1273, 1278, + 1276, 86, 86, 1281, 1277, 1282, 86, 86, 1280, 86, + 86, 86, 86, 1286, 1285, 86, 1283, 1279, 86, 86, + 86, 86, 86, 1290, 1292, 1293, 1296, 1294, 1284, 86, + 86, 86, 86, 1287, 1291, 86, 86, 1288, 1298, 1289, + 1295, 1297, 86, 86, 86, 1302, 86, 1299, 86, 1301, + 86, 86, 86, 1303, 1304, 86, 86, 86, 86, 1305, + 1309, 1300, 86, 86, 1307, 1306, 1310, 1312, 86, 1311, + 86, 1308, 86, 1316, 1317, 86, 86, 1320, 86, 86, - 1313, 1317, 86, 86, 1314, 86, 1315, 86, 86, 86, - 1316, 1319, 1323, 86, 1318, 86, 86, 1324, 170, 86, - 1325, 1326, 1320, 86, 86, 86, 86, 1322, 86, 86, - 1331, 86, 1321, 1328, 1365, 1330, 1335, 1332, 1327, 1329, - 1333, 86, 86, 1336, 86, 1337, 1334, 86, 86, 86, - 86, 86, 1338, 1340, 86, 86, 1343, 86, 1341, 86, - 86, 1349, 86, 86, 1342, 86, 1346, 86, 86, 1344, - 86, 86, 1347, 86, 1345, 1359, 1353, 1350, 1355, 1348, - 86, 1360, 1352, 1351, 86, 86, 86, 1356, 1354, 1357, - 1361, 1363, 1358, 1362, 86, 86, 86, 86, 86, 86, + 86, 1319, 1314, 86, 86, 86, 1313, 86, 1325, 86, + 1318, 1315, 86, 86, 86, 86, 86, 1323, 1322, 1331, + 86, 86, 1321, 1327, 170, 1324, 86, 1326, 86, 1332, + 86, 1333, 1328, 1334, 86, 1330, 86, 86, 86, 86, + 1329, 1339, 1341, 86, 1335, 1337, 1343, 1340, 1336, 1338, + 1344, 86, 86, 86, 86, 86, 86, 1347, 1346, 1342, + 86, 86, 86, 86, 86, 1348, 86, 1345, 1349, 1351, + 86, 86, 86, 1354, 86, 1350, 86, 1352, 1357, 86, + 86, 86, 1353, 86, 176, 1355, 1358, 1361, 1363, 86, + 1356, 1360, 1359, 1367, 86, 1368, 86, 1364, 86, 1365, - 1364, 86, 86, 1369, 86, 1368, 86, 1372, 86, 1376, - 86, 86, 86, 1371, 1366, 1367, 1377, 1378, 1370, 1374, - 1373, 86, 86, 1375, 86, 86, 86, 1380, 1381, 86, - 86, 86, 86, 86, 1382, 86, 86, 86, 1386, 86, - 1388, 1379, 86, 86, 1383, 1384, 86, 1387, 1389, 1393, - 1385, 86, 86, 86, 1390, 86, 86, 1392, 1391, 86, - 86, 1394, 1395, 86, 1397, 86, 86, 1398, 1400, 1405, - 86, 1396, 1399, 86, 86, 86, 86, 86, 1401, 86, - 1403, 1406, 1408, 1404, 1407, 1402, 86, 86, 86, 1412, - 1413, 1411, 1410, 1409, 86, 1414, 86, 86, 1415, 86, + 1362, 1369, 1366, 1370, 86, 1371, 86, 86, 86, 86, + 1373, 86, 86, 86, 86, 175, 86, 1377, 1376, 86, + 1372, 1380, 86, 86, 1384, 86, 1379, 1374, 86, 1375, + 86, 86, 1378, 1381, 1382, 1385, 1386, 86, 86, 86, + 86, 1383, 1388, 1389, 86, 86, 86, 1390, 1387, 86, + 86, 86, 86, 86, 86, 1391, 1396, 86, 1394, 1392, + 86, 86, 1403, 1397, 1393, 1395, 1401, 86, 86, 86, + 86, 1398, 1400, 86, 1399, 86, 1402, 1404, 1406, 86, + 86, 86, 1413, 86, 1415, 1407, 86, 1405, 86, 86, + 86, 1409, 1408, 86, 1410, 86, 1412, 1418, 86, 86, - 1418, 1416, 86, 86, 1429, 1505, 1428, 1417, 86, 1419, - 1426, 1427, 86, 1420, 86, 86, 1421, 1422, 86, 1430, - 1432, 1423, 86, 1433, 1431, 86, 86, 1424, 86, 1435, - 1434, 1425, 86, 1437, 86, 86, 86, 1438, 1442, 1439, - 86, 86, 86, 1436, 86, 86, 86, 1445, 86, 1443, - 1448, 1449, 86, 1450, 1441, 1440, 86, 86, 86, 1446, - 86, 1444, 1451, 86, 1447, 86, 1458, 86, 1457, 1452, - 86, 1459, 1460, 1461, 1453, 86, 1454, 86, 1455, 86, - 1456, 86, 1464, 1463, 86, 1467, 86, 1470, 1462, 86, - 1468, 86, 86, 1466, 1471, 1469, 86, 86, 86, 1465, + 86, 1416, 86, 1414, 1421, 1411, 86, 1417, 86, 86, + 1501, 1423, 1422, 86, 1420, 1419, 1424, 86, 86, 1428, + 1426, 1425, 1427, 86, 1429, 86, 1436, 1438, 1430, 86, + 1439, 1431, 1432, 86, 1437, 86, 1433, 1442, 86, 86, + 1440, 86, 1434, 86, 1443, 86, 1435, 1441, 86, 1445, + 1444, 86, 1447, 86, 86, 86, 1448, 1452, 1449, 86, + 86, 86, 1446, 86, 86, 86, 1455, 86, 1453, 1458, + 1459, 86, 1460, 1451, 1450, 86, 86, 86, 1456, 86, + 1454, 1461, 86, 1457, 86, 1468, 86, 1467, 1462, 86, + 1469, 1470, 1471, 1463, 86, 1464, 86, 1465, 86, 1466, - 86, 1477, 86, 1478, 86, 1473, 1472, 86, 86, 86, - 86, 86, 1479, 86, 1476, 1481, 1474, 1475, 86, 86, - 1483, 86, 1480, 1482, 86, 1484, 1487, 1488, 86, 1490, - 86, 1485, 86, 86, 1491, 86, 1492, 86, 86, 1489, - 1493, 1496, 86, 86, 1486, 1498, 86, 1495, 86, 1499, - 86, 86, 86, 1503, 86, 1500, 1494, 86, 86, 86, - 1508, 1506, 86, 1497, 86, 86, 86, 1509, 86, 86, - 1511, 86, 1501, 1502, 1510, 86, 1515, 1504, 1513, 1507, - 86, 86, 1512, 86, 1514, 86, 1517, 86, 86, 86, - 1519, 1518, 1520, 1521, 1516, 86, 1522, 86, 86, 86, + 86, 1474, 1473, 86, 1477, 86, 1480, 1472, 86, 1478, + 86, 86, 1476, 1481, 1479, 86, 86, 86, 1475, 86, + 1487, 86, 1488, 86, 1483, 1482, 86, 86, 86, 86, + 86, 1489, 86, 1486, 1491, 1484, 1485, 86, 86, 1493, + 86, 1490, 1492, 86, 1494, 1497, 1498, 86, 1500, 86, + 1495, 86, 86, 86, 1502, 86, 86, 1503, 1499, 1506, + 86, 1508, 86, 1496, 1505, 86, 1509, 86, 86, 86, + 1513, 86, 1504, 1510, 86, 86, 1507, 86, 86, 1518, + 1516, 86, 86, 86, 86, 86, 1519, 86, 1511, 1521, + 1512, 1520, 1515, 86, 1514, 86, 1523, 86, 1517, 1524, - 86, 1528, 1523, 1529, 1525, 1524, 1526, 86, 1532, 86, - 86, 86, 86, 1527, 86, 1530, 1531, 86, 86, 1536, - 86, 1533, 86, 86, 86, 86, 170, 86, 1538, 1535, - 86, 1544, 1545, 86, 1540, 86, 1534, 86, 86, 1546, - 1547, 1541, 1537, 1539, 86, 86, 86, 1542, 86, 1548, - 86, 86, 86, 1543, 86, 1549, 86, 1555, 86, 86, - 1552, 86, 86, 86, 1550, 1551, 1553, 1559, 1554, 1560, - 86, 1556, 86, 175, 86, 86, 1558, 1562, 1564, 1557, - 1563, 1566, 1561, 1565, 86, 86, 86, 86, 1569, 86, - 1570, 86, 86, 86, 1567, 1568, 1573, 1578, 1575, 1574, + 1525, 1522, 86, 86, 86, 86, 86, 1527, 1529, 1530, + 1531, 1526, 1528, 86, 1532, 86, 86, 86, 86, 86, + 1533, 1538, 1539, 1535, 86, 1536, 86, 86, 86, 1540, + 1542, 1541, 1537, 86, 1534, 86, 86, 86, 1546, 86, + 86, 86, 1543, 86, 170, 86, 1548, 86, 1545, 86, + 1554, 1555, 86, 86, 1544, 1550, 86, 86, 1556, 1551, + 1547, 1549, 1557, 86, 86, 86, 86, 1552, 86, 86, + 86, 1565, 1553, 1560, 86, 86, 86, 1558, 1562, 1563, + 86, 1569, 86, 1559, 1561, 1570, 86, 1564, 86, 86, + 1574, 86, 86, 1572, 1566, 1575, 86, 86, 1568, 86, - 86, 1571, 1576, 86, 1572, 86, 1577, 86, 1581, 1579, - 86, 86, 1583, 1582, 86, 86, 86, 86, 1580, 86, - 1586, 1587, 86, 86, 86, 170, 86, 1590, 86, 1585, - 86, 1595, 86, 86, 86, 1588, 1584, 1596, 1592, 1589, - 86, 1599, 86, 1591, 1593, 86, 1594, 86, 86, 86, - 1597, 86, 1600, 1598, 86, 86, 86, 86, 86, 1602, - 1606, 1601, 1608, 1603, 1604, 1607, 86, 86, 1611, 86, - 1605, 1612, 1609, 86, 1616, 1610, 86, 1615, 1613, 1617, - 86, 86, 1619, 86, 86, 86, 86, 86, 168, 86, - 1620, 1624, 1625, 1614, 1623, 1618, 86, 86, 86, 1626, + 1567, 1577, 86, 86, 86, 1571, 86, 1578, 1573, 1576, + 86, 1579, 1586, 1585, 86, 86, 86, 1580, 1581, 1583, + 1587, 1582, 1584, 1588, 86, 1591, 1590, 86, 1589, 86, + 1592, 86, 86, 86, 86, 1593, 86, 86, 1596, 1597, + 86, 86, 86, 170, 86, 1600, 86, 86, 1605, 86, + 1595, 86, 86, 1594, 1598, 1606, 1602, 1599, 86, 1609, + 86, 1601, 1603, 86, 1604, 86, 86, 1607, 86, 86, + 1610, 1608, 86, 86, 86, 86, 86, 1612, 1616, 1611, + 86, 1613, 1617, 1614, 86, 1618, 86, 1622, 1615, 86, + 1619, 1623, 86, 1621, 1627, 1620, 86, 1626, 1624, 1628, - 86, 1627, 1621, 86, 1628, 86, 1629, 86, 1622, 86, - 86, 86, 86, 1630, 1632, 86, 86, 86, 86, 1631, - 86, 1637, 86, 1633, 1636, 86, 1634, 1640, 86, 1643, - 1635, 86, 1641, 1639, 1644, 86, 1638, 1645, 86, 1648, - 86, 86, 1646, 86, 86, 86, 86, 1642, 86, 86, - 1652, 1647, 1656, 1651, 86, 86, 86, 1660, 86, 1649, - 1650, 1657, 86, 86, 86, 1653, 86, 1655, 1654, 1663, - 86, 86, 1662, 86, 1658, 86, 86, 86, 86, 86, - 1686, 1659, 86, 1661, 86, 1671, 86, 166, 86, 1664, - 1665, 1668, 1666, 86, 1670, 1667, 1672, 1676, 86, 1669, + 86, 86, 86, 1630, 86, 86, 1631, 86, 86, 86, + 1632, 86, 1625, 1636, 1637, 1629, 1635, 1638, 86, 86, + 86, 86, 1639, 86, 1633, 86, 1640, 1641, 86, 86, + 1634, 86, 86, 1642, 86, 86, 1644, 86, 86, 86, + 1643, 86, 1649, 86, 1645, 1648, 86, 1651, 1646, 86, + 1647, 1652, 86, 1655, 86, 1657, 86, 1650, 1656, 86, + 1658, 86, 1654, 1653, 86, 1660, 86, 86, 86, 86, + 86, 1664, 1659, 1661, 1668, 1662, 1663, 86, 86, 86, + 86, 86, 1669, 86, 1672, 86, 1675, 1665, 1667, 1666, + 86, 1674, 86, 86, 86, 86, 86, 86, 1670, 86, - 1675, 1673, 1677, 86, 86, 1674, 86, 86, 86, 1678, - 1679, 86, 86, 86, 1683, 86, 86, 1681, 1684, 86, - 1680, 1687, 86, 1693, 1682, 1691, 86, 86, 1688, 86, - 86, 1685, 1692, 86, 1694, 1689, 86, 1697, 1690, 86, - 86, 1696, 86, 1695, 1698, 86, 86, 1703, 1704, 86, - 86, 86, 86, 86, 1701, 86, 1708, 1707, 1709, 1699, - 1700, 86, 1711, 86, 86, 86, 1702, 86, 1705, 86, - 1712, 86, 1706, 1713, 86, 86, 86, 86, 1716, 86, - 86, 1710, 86, 1721, 86, 1714, 1717, 1715, 1719, 86, - 86, 86, 1727, 86, 86, 1722, 1718, 1720, 1725, 86, + 1673, 86, 1676, 86, 1683, 1671, 86, 86, 86, 1684, + 1680, 1687, 1677, 1678, 1679, 86, 1682, 86, 1681, 1688, + 86, 1689, 86, 86, 1693, 86, 1685, 1686, 1690, 1691, + 1692, 86, 86, 86, 1695, 86, 86, 86, 1696, 86, + 86, 1699, 1703, 86, 1694, 1704, 1705, 86, 1700, 86, + 86, 1697, 86, 1698, 1708, 1702, 86, 1701, 86, 86, + 1709, 86, 1706, 1707, 86, 1710, 86, 86, 1715, 1716, + 86, 86, 168, 1713, 86, 86, 86, 1712, 1711, 86, + 1719, 86, 1720, 1721, 86, 1717, 1714, 1723, 86, 86, + 86, 86, 1718, 1724, 1725, 86, 1722, 86, 86, 1730, - 86, 86, 86, 1728, 1726, 1723, 86, 1733, 1724, 86, - 86, 86, 86, 1738, 86, 1730, 1736, 1729, 86, 86, - 86, 86, 1732, 1734, 1739, 86, 1731, 1737, 1735, 86, - 1741, 86, 86, 86, 86, 1745, 1744, 170, 1740, 1747, - 1743, 1742, 1748, 86, 86, 86, 1750, 1749, 86, 86, - 1751, 1746, 86, 1752, 86, 86, 86, 1759, 86, 86, - 165, 86, 86, 1754, 1760, 86, 1753, 1765, 1757, 1763, - 86, 1755, 1756, 86, 1764, 86, 1769, 1767, 1761, 86, - 1758, 1762, 86, 86, 1768, 1771, 86, 1773, 86, 86, - 86, 86, 86, 1766, 86, 86, 1775, 1776, 86, 1778, + 1726, 1728, 86, 86, 86, 1733, 86, 1727, 86, 86, + 86, 1731, 86, 86, 1739, 1737, 86, 86, 1729, 86, + 86, 1734, 86, 1732, 86, 1740, 1738, 86, 1736, 1735, + 86, 1745, 86, 86, 1742, 1741, 86, 86, 1746, 1750, + 86, 1748, 1744, 86, 86, 1743, 86, 1751, 1749, 1754, + 1747, 86, 1753, 86, 86, 86, 86, 1752, 1757, 1761, + 1759, 1760, 86, 1755, 1756, 1758, 86, 86, 170, 86, + 86, 86, 1763, 86, 86, 86, 1771, 86, 86, 1762, + 86, 86, 1772, 1777, 1764, 1766, 86, 1765, 1769, 1767, + 1768, 1775, 86, 86, 86, 1776, 1779, 86, 1770, 1781, - 1772, 86, 1779, 1770, 86, 86, 86, 86, 1774, 1780, - 1783, 86, 1784, 86, 86, 1791, 86, 86, 1777, 1793, - 1782, 86, 1781, 86, 1785, 1786, 1788, 86, 86, 1789, - 86, 86, 1792, 1798, 1787, 1794, 1796, 1795, 1799, 86, - 1800, 1790, 1797, 1801, 86, 86, 86, 86, 1803, 86, - 1802, 86, 1804, 1805, 86, 86, 86, 1807, 86, 86, - 1806, 86, 1812, 1813, 1811, 86, 86, 1815, 86, 86, - 1814, 86, 1808, 86, 86, 1809, 1817, 86, 1810, 1818, - 86, 86, 1819, 86, 86, 86, 86, 86, 86, 1816, - 86, 86, 1820, 1829, 1828, 86, 86, 86, 1823, 1824, + 1773, 1774, 1780, 86, 1783, 86, 86, 1785, 86, 86, + 86, 86, 86, 1778, 86, 86, 1790, 1787, 86, 1788, + 1784, 86, 1791, 1782, 86, 86, 86, 86, 1786, 1795, + 86, 1796, 1792, 86, 86, 86, 1789, 1803, 86, 166, + 1794, 1800, 1793, 86, 1801, 1797, 1798, 86, 86, 86, + 86, 1805, 1804, 1799, 86, 1808, 1802, 1810, 1807, 1812, + 1809, 1811, 86, 1813, 1817, 86, 86, 1806, 86, 86, + 86, 1814, 86, 1815, 86, 1816, 86, 86, 86, 86, + 86, 1818, 1824, 1823, 86, 1825, 1820, 1827, 86, 1826, + 1819, 86, 86, 86, 86, 86, 86, 1821, 86, 1822, - 1825, 1821, 86, 1822, 1834, 1826, 86, 86, 1831, 1832, - 86, 86, 86, 1827, 1830, 1833, 86, 1840, 86, 86, - 86, 86, 86, 1836, 86, 1842, 1835, 86, 1844, 86, - 1838, 1837, 86, 1839, 1843, 86, 1845, 86, 1846, 1841, - 86, 86, 86, 86, 1849, 86, 86, 1851, 86, 1858, - 1848, 1852, 1850, 1847, 1853, 1859, 86, 1854, 1855, 1860, - 86, 86, 86, 1856, 86, 1863, 1862, 1864, 86, 86, - 1857, 86, 86, 1861, 86, 1868, 1867, 1865, 86, 1869, - 86, 86, 86, 86, 86, 1877, 1878, 86, 1866, 86, - 1872, 86, 1874, 1876, 86, 1875, 1871, 1870, 86, 86, + 1829, 1830, 86, 1831, 86, 86, 86, 86, 86, 86, + 86, 86, 1832, 86, 86, 1828, 1833, 1841, 86, 86, + 1836, 1837, 1838, 1834, 86, 1835, 1842, 1839, 86, 86, + 1843, 1845, 86, 1848, 1849, 1840, 1844, 86, 1851, 86, + 1846, 86, 86, 1854, 86, 1847, 86, 86, 86, 86, + 1858, 86, 1856, 1850, 86, 1852, 86, 86, 86, 86, + 1857, 86, 86, 1853, 86, 1860, 1855, 1863, 1865, 1859, + 86, 86, 165, 1866, 1864, 1862, 1867, 86, 1868, 86, + 1861, 86, 1872, 1873, 86, 1869, 1874, 86, 86, 1875, + 1870, 1877, 1878, 86, 86, 86, 1871, 86, 86, 1876, - 1884, 1873, 86, 86, 86, 1885, 86, 1880, 1886, 1879, - 86, 86, 86, 1882, 86, 1890, 1881, 86, 1883, 86, - 86, 1894, 1887, 86, 1893, 86, 1892, 1891, 1898, 1888, - 1889, 86, 86, 86, 1896, 1895, 1902, 1897, 86, 86, - 86, 1903, 86, 86, 1908, 86, 1910, 86, 1907, 1899, - 86, 1901, 1904, 1900, 1905, 1911, 86, 86, 86, 86, - 1914, 86, 1906, 1909, 1912, 86, 86, 1918, 86, 86, - 1913, 1915, 1917, 86, 1922, 86, 86, 1916, 1920, 86, - 86, 1919, 86, 86, 1921, 86, 86, 1923, 1924, 86, - 1926, 1927, 1928, 86, 86, 1925, 86, 86, 1929, 1934, + 86, 1882, 1881, 86, 86, 1883, 86, 1879, 86, 86, + 86, 1891, 1892, 86, 1880, 1886, 86, 86, 1888, 1890, + 1885, 1889, 1884, 86, 86, 86, 86, 1887, 1898, 86, + 86, 86, 86, 1899, 86, 1900, 1893, 1894, 86, 1896, + 86, 1895, 1897, 1901, 86, 1904, 86, 1906, 86, 1908, + 1903, 1907, 86, 86, 1902, 86, 1905, 86, 1912, 86, + 1916, 1910, 86, 1909, 1911, 1917, 86, 86, 86, 86, + 86, 1924, 86, 1913, 1921, 1922, 1918, 1915, 1914, 1925, + 86, 86, 1919, 86, 86, 86, 1928, 86, 1923, 1926, + 1920, 86, 86, 1929, 1927, 1932, 86, 86, 1936, 86, - 86, 86, 1930, 1932, 86, 1936, 1937, 1931, 1939, 86, - 1933, 86, 86, 86, 1938, 1943, 86, 1940, 86, 1945, - 86, 1935, 1941, 86, 86, 86, 86, 1949, 86, 86, - 86, 1944, 1942, 86, 1951, 86, 86, 86, 1952, 1947, - 86, 1954, 1946, 86, 1948, 1955, 1956, 1957, 86, 1950, - 86, 170, 86, 1960, 1958, 1953, 86, 1959, 1963, 86, - 86, 86, 86, 1961, 1967, 86, 86, 1962, 86, 86, - 86, 86, 1965, 1969, 86, 1964, 1968, 1974, 86, 86, - 1966, 1970, 1971, 86, 163, 1977, 1975, 1972, 1978, 86, - 86, 1973, 86, 1979, 1980, 86, 1976, 1981, 86, 1983, + 1934, 86, 86, 1930, 86, 1931, 1935, 1937, 86, 1933, + 86, 86, 86, 86, 86, 86, 1941, 86, 1940, 86, + 1950, 1938, 1942, 1944, 86, 1943, 86, 1939, 1945, 1948, + 86, 1946, 1951, 1947, 1953, 86, 86, 1952, 86, 86, + 86, 1957, 86, 1959, 86, 86, 86, 86, 86, 86, + 86, 1949, 1963, 86, 1965, 86, 1954, 1955, 1958, 1956, + 1966, 86, 1961, 86, 86, 1962, 1960, 86, 1964, 1968, + 86, 86, 1969, 86, 86, 170, 1974, 86, 86, 1970, + 86, 1967, 1972, 1973, 1977, 86, 1971, 1975, 86, 1981, + 86, 86, 1976, 86, 86, 86, 86, 1978, 86, 1980, - 1984, 86, 86, 86, 86, 86, 1986, 1982, 86, 86, - 86, 1987, 86, 86, 1985, 86, 86, 86, 1992, 86, - 1993, 86, 86, 1988, 86, 1994, 1997, 86, 1990, 1995, - 1991, 1989, 2001, 1998, 1996, 86, 86, 2005, 86, 2002, - 2003, 2006, 2000, 86, 86, 86, 1999, 86, 86, 86, - 86, 2004, 2012, 86, 86, 86, 2015, 2016, 86, 2017, - 86, 2010, 86, 2008, 2007, 2019, 86, 2009, 2013, 2011, - 2014, 86, 2020, 2018, 86, 2023, 86, 86, 2025, 86, - 2027, 2024, 2026, 2021, 86, 86, 86, 2029, 86, 86, - 2032, 86, 2031, 86, 86, 2022, 86, 2035, 86, 86, + 1979, 1983, 86, 1988, 86, 1982, 86, 1984, 1985, 86, + 86, 1995, 1986, 86, 1989, 2000, 1991, 86, 1987, 1992, + 86, 86, 1990, 86, 1993, 1994, 86, 1997, 1998, 86, + 86, 86, 1996, 86, 2001, 86, 86, 2002, 86, 86, + 86, 86, 1999, 86, 2006, 2007, 86, 86, 86, 86, + 2008, 86, 2011, 86, 2004, 2009, 2005, 2003, 2012, 86, + 86, 2010, 2019, 86, 2017, 2015, 2018, 2020, 2014, 86, + 86, 2013, 2016, 86, 2021, 86, 86, 86, 86, 2026, + 86, 2029, 2030, 86, 2031, 86, 86, 86, 2022, 2023, + 86, 2024, 2027, 86, 2028, 86, 2025, 2033, 86, 86, - 86, 2034, 86, 2028, 86, 2039, 86, 2038, 86, 86, - 2041, 2040, 86, 2030, 2033, 2036, 86, 86, 2049, 86, - 2037, 2042, 2043, 2044, 86, 2051, 2047, 86, 2045, 86, - 2052, 86, 2046, 86, 86, 2055, 86, 2048, 86, 2050, - 2058, 2053, 86, 86, 2054, 2056, 86, 2059, 2062, 86, - 86, 2057, 86, 2064, 86, 86, 86, 2067, 2068, 86, - 86, 86, 2060, 86, 2061, 2070, 86, 86, 86, 86, - 2077, 86, 2072, 2075, 2065, 86, 2063, 2066, 2073, 86, - 2069, 86, 86, 86, 2076, 86, 2071, 86, 2074, 86, - 2080, 86, 2083, 86, 2081, 2087, 2078, 2079, 2086, 86, + 2034, 2037, 86, 86, 2039, 86, 2032, 2038, 2035, 86, + 86, 2036, 2040, 2041, 2043, 2048, 86, 86, 2045, 86, + 86, 2044, 86, 2042, 86, 2046, 2047, 86, 86, 2049, + 2050, 86, 2051, 86, 86, 86, 2055, 86, 2053, 2054, + 2057, 86, 2056, 86, 86, 86, 86, 86, 163, 2052, + 2065, 86, 2067, 2058, 2059, 2060, 86, 2068, 86, 86, + 2061, 86, 2063, 2062, 86, 2064, 2070, 2066, 86, 2074, + 2071, 86, 2072, 2069, 86, 86, 86, 2078, 86, 2073, + 2075, 86, 86, 2080, 86, 86, 86, 86, 2083, 2084, + 86, 2086, 86, 86, 2076, 86, 2091, 2077, 86, 86, - 2090, 86, 86, 86, 86, 2085, 86, 2082, 86, 2089, - 2091, 2093, 86, 2084, 2094, 86, 86, 86, 86, 2088, - 86, 2095, 2092, 86, 2097, 86, 2100, 2096, 86, 86, - 2103, 2098, 2099, 2104, 2105, 86, 86, 86, 86, 86, - 86, 2108, 86, 2101, 86, 2113, 86, 86, 86, 2112, - 86, 2107, 86, 86, 2102, 2106, 2117, 2109, 2110, 86, - 2118, 86, 2120, 2115, 2111, 86, 2114, 2119, 86, 2116, - 2121, 86, 2122, 2125, 86, 86, 2123, 86, 86, 86, - 86, 2124, 86, 2132, 2129, 86, 86, 86, 86, 86, - 86, 2127, 2135, 86, 2137, 86, 2126, 2128, 86, 2138, + 86, 86, 86, 86, 2081, 2085, 86, 2079, 2082, 2088, + 2089, 2093, 86, 86, 2092, 86, 2090, 86, 2087, 86, + 2094, 2095, 2096, 86, 2099, 86, 2097, 2103, 86, 2098, + 2102, 86, 86, 86, 2106, 2101, 2109, 86, 2105, 2100, + 86, 86, 86, 2107, 2110, 86, 2112, 86, 2104, 86, + 86, 2108, 2111, 86, 86, 86, 86, 2116, 86, 2119, + 2120, 2121, 2115, 86, 86, 86, 86, 86, 86, 2113, + 86, 86, 2114, 2117, 2124, 86, 2129, 86, 86, 2123, + 2128, 86, 2118, 2122, 86, 2126, 86, 2130, 2133, 86, + 2125, 86, 2134, 2127, 86, 2135, 2131, 2132, 2137, 86, - 2130, 2134, 2131, 2133, 86, 86, 2136, 86, 2139, 86, - 2143, 2144, 86, 2158, 2140, 2145, 86, 86, 2141, 2146, - 2148, 2149, 2151, 2142, 2147, 86, 86, 86, 86, 86, - 2153, 86, 86, 86, 86, 2150, 86, 2155, 86, 2157, - 2152, 2154, 2159, 2156, 2161, 2162, 86, 86, 86, 86, - 86, 170, 86, 2163, 2160, 86, 2165, 86, 86, 2171, - 86, 2166, 2169, 2170, 2167, 2172, 86, 2164, 2173, 86, - 86, 2175, 86, 86, 2168, 86, 86, 86, 2176, 2178, - 2177, 86, 86, 86, 86, 2179, 2180, 2181, 86, 2183, - 2174, 86, 86, 86, 2182, 2184, 86, 2186, 2187, 86, + 86, 86, 86, 2136, 2138, 2141, 86, 2142, 86, 86, + 86, 86, 2139, 2148, 2145, 86, 2143, 2140, 86, 86, + 86, 86, 86, 2151, 2153, 86, 2155, 2144, 86, 2154, + 2146, 2147, 86, 2149, 2152, 2150, 86, 86, 2160, 86, + 2162, 2156, 2161, 86, 2164, 2163, 86, 2157, 2165, 86, + 86, 86, 2158, 86, 86, 2169, 2167, 2159, 86, 86, + 86, 86, 86, 2171, 86, 2168, 86, 2173, 2175, 86, + 2170, 2177, 2172, 86, 86, 2166, 170, 86, 2178, 86, + 86, 2181, 86, 86, 86, 86, 2176, 2174, 2179, 2185, + 86, 2187, 2182, 2180, 2183, 86, 2188, 86, 2186, 2189, - 86, 2189, 2188, 2185, 86, 2190, 86, 2191, 2192, 86, - 86, 86, 86, 86, 86, 86, 2199, 2197, 86, 2194, - 2198, 86, 86, 86, 86, 2204, 2193, 2201, 86, 2195, - 86, 2196, 2200, 86, 86, 2209, 2205, 2203, 86, 2202, - 86, 86, 2207, 86, 86, 86, 2206, 2210, 2213, 86, - 2208, 86, 2211, 2215, 86, 86, 86, 2214, 2216, 86, - 86, 2217, 2212, 2221, 86, 2218, 2219, 86, 2223, 86, - 2220, 86, 2226, 2224, 2225, 86, 2222, 2227, 86, 86, - 2228, 86, 2231, 2229, 86, 86, 86, 2230, 86, 86, - 2235, 2232, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 2191, 2184, 86, 86, 2190, 86, 86, 86, 2192, + 2194, 2193, 86, 86, 86, 2197, 86, 2195, 2196, 86, + 2199, 86, 86, 2203, 86, 86, 2198, 2202, 2200, 86, + 86, 86, 2207, 2201, 2204, 2205, 2206, 2208, 86, 86, + 86, 86, 86, 86, 2215, 2213, 86, 86, 86, 2210, + 86, 2214, 86, 86, 86, 2220, 86, 2217, 86, 2209, + 2211, 86, 2212, 86, 86, 2216, 2221, 2219, 86, 2225, + 2218, 86, 2223, 2226, 2222, 86, 86, 86, 2224, 86, + 2229, 86, 2228, 2227, 2231, 86, 86, 86, 2237, 2230, + 2232, 86, 86, 2233, 86, 2234, 2235, 86, 2239, 86, - 86, 2236, 86, 86, 2249, 86, 2234, 2233, 2238, 2239, - 2240, 2241, 86, 2243, 2237, 2248, 86, 86, 2244, 86, - 2242, 86, 2246, 2247, 2252, 86, 86, 86, 2256, 86, - 2253, 2245, 2255, 86, 2250, 86, 86, 2251, 2258, 2254, - 86, 86, 2259, 86, 86, 2260, 2264, 2257, 86, 86, - 2262, 2266, 86, 86, 2267, 2263, 86, 86, 2261, 2269, - 86, 2271, 86, 2268, 2272, 86, 86, 2265, 86, 86, - 2273, 2274, 2277, 86, 86, 86, 2281, 86, 86, 2270, - 2278, 2282, 86, 86, 86, 2280, 2275, 2279, 86, 2276, - 86, 2283, 2286, 86, 86, 2287, 2284, 86, 2285, 2290, + 2236, 2240, 2242, 86, 86, 2244, 86, 86, 2238, 86, + 2241, 2248, 2243, 86, 2245, 2247, 86, 86, 86, 86, + 86, 86, 2253, 2250, 86, 86, 86, 86, 86, 86, + 2246, 86, 2249, 2254, 86, 86, 86, 2262, 2256, 2257, + 2252, 2251, 86, 2258, 86, 86, 2255, 2259, 86, 2261, + 2263, 2267, 86, 86, 86, 2260, 2264, 2266, 86, 2271, + 86, 2270, 2268, 86, 86, 2265, 86, 86, 2269, 2273, + 86, 2276, 2274, 2272, 2277, 86, 86, 86, 2275, 86, + 86, 2279, 2282, 86, 2278, 2280, 2284, 86, 86, 2281, + 2285, 86, 86, 2287, 86, 86, 2289, 2286, 2283, 86, - 86, 86, 2291, 2288, 86, 86, 2292, 2296, 86, 2294, - 2289, 86, 86, 2298, 86, 2299, 86, 2295, 2293, 86, - 86, 86, 86, 2297, 2301, 2300, 86, 86, 2305, 2307, - 2303, 86, 86, 2304, 2308, 86, 86, 86, 2302, 2309, - 2310, 86, 2313, 2306, 2311, 86, 2314, 86, 2312, 86, - 86, 2318, 86, 86, 86, 86, 86, 86, 2315, 2317, - 86, 86, 2325, 86, 86, 2321, 86, 2316, 86, 86, - 2323, 2319, 2320, 2326, 2329, 2324, 2327, 86, 86, 86, - 2322, 86, 2330, 2328, 86, 2332, 2337, 2331, 86, 2335, - 2334, 86, 2340, 86, 86, 86, 2336, 86, 2333, 86, + 2291, 2290, 86, 86, 86, 2295, 86, 2292, 86, 86, + 2299, 86, 86, 2288, 2296, 2300, 86, 86, 86, 2297, + 2298, 2293, 2304, 86, 2294, 2301, 86, 2305, 86, 86, + 2308, 2302, 2303, 86, 86, 86, 86, 2310, 2309, 86, + 2314, 86, 86, 2306, 86, 2316, 86, 2312, 86, 2307, + 86, 2317, 2311, 86, 2315, 2313, 86, 2318, 2319, 86, + 86, 2323, 86, 86, 2320, 2321, 2325, 86, 2322, 86, + 86, 2326, 86, 86, 2327, 2329, 2328, 86, 2331, 86, + 86, 2324, 2330, 86, 2332, 2336, 86, 86, 86, 2334, + 2333, 86, 2335, 86, 86, 86, 86, 86, 2337, 86, - 2339, 2342, 86, 2341, 86, 86, 86, 170, 2345, 161, - 2346, 2349, 2347, 2338, 2344, 2343, 2351, 86, 2353, 86, - 2354, 2352, 86, 86, 86, 2348, 86, 86, 86, 2350, - 2355, 2356, 2358, 86, 86, 2359, 86, 2362, 86, 2357, - 2363, 86, 86, 2364, 2367, 86, 86, 86, 2365, 2360, - 86, 2368, 86, 2369, 2370, 86, 2366, 86, 2372, 86, - 2361, 86, 2371, 2373, 86, 2374, 86, 2376, 86, 86, - 2375, 86, 86, 2378, 86, 86, 2381, 86, 86, 86, - 2387, 86, 86, 2385, 86, 86, 2377, 2380, 2388, 86, - 2383, 86, 2379, 2382, 2390, 86, 86, 2384, 86, 86, + 2343, 86, 86, 86, 2339, 2338, 2347, 2341, 2344, 2342, + 86, 2345, 2349, 86, 86, 2348, 2340, 2346, 86, 2350, + 2352, 86, 86, 2358, 86, 2353, 86, 86, 2360, 86, + 86, 86, 2351, 2354, 86, 2357, 2359, 86, 2363, 2355, + 86, 86, 2364, 2367, 170, 86, 2369, 2356, 2361, 86, + 2362, 2370, 86, 2365, 86, 2371, 2372, 2373, 86, 86, + 2366, 86, 86, 2376, 86, 2375, 2368, 2374, 86, 2377, + 86, 2381, 86, 86, 2382, 86, 2384, 86, 2385, 2380, + 86, 2387, 2386, 2378, 86, 2388, 86, 2383, 86, 2390, + 86, 86, 86, 2389, 2379, 86, 2391, 86, 86, 86, - 2389, 2386, 86, 2395, 2398, 86, 86, 2393, 2391, 2392, - 86, 86, 2396, 86, 2399, 2394, 86, 86, 86, 86, - 2397, 86, 86, 86, 86, 2412, 86, 86, 86, 2400, - 2401, 2406, 2411, 2413, 86, 2409, 2402, 2404, 2405, 2408, - 2403, 2410, 2407, 86, 86, 86, 86, 2415, 2414, 86, - 86, 2419, 2420, 86, 86, 86, 2421, 3456, 2416, 86, - 2417, 86, 2418, 2422, 86, 86, 2425, 86, 2428, 86, - 2423, 86, 2424, 2429, 86, 86, 2426, 86, 86, 2427, - 2430, 2432, 2431, 2435, 86, 2436, 86, 86, 2438, 86, - 2434, 2433, 86, 2440, 86, 86, 86, 2443, 86, 86, + 86, 2393, 86, 86, 2396, 86, 86, 86, 2399, 86, + 2392, 2394, 86, 86, 2403, 2398, 2405, 86, 86, 86, + 86, 2401, 2406, 2395, 2400, 2397, 86, 2402, 2407, 86, + 86, 2408, 86, 86, 2404, 86, 86, 2413, 2410, 2416, + 86, 2411, 86, 86, 2417, 2409, 2414, 86, 86, 2412, + 86, 86, 86, 2415, 86, 86, 86, 86, 2426, 86, + 86, 2418, 2419, 2424, 86, 2430, 2433, 86, 2428, 2422, + 2420, 2427, 2421, 2423, 2429, 2425, 86, 2432, 2431, 86, + 86, 86, 86, 2435, 2434, 86, 86, 2439, 2440, 86, + 86, 86, 2441, 161, 2436, 86, 2437, 86, 2438, 2442, - 2442, 2444, 86, 86, 86, 86, 2437, 86, 86, 86, - 2439, 2441, 2446, 2445, 2450, 2451, 86, 2453, 86, 2448, - 86, 2447, 86, 86, 2457, 86, 2449, 2452, 2455, 86, - 2459, 86, 2456, 86, 86, 86, 2462, 86, 2454, 2458, - 2465, 86, 86, 86, 2460, 86, 86, 86, 2461, 86, - 2463, 2469, 2470, 86, 2472, 86, 2464, 86, 2475, 86, - 2468, 86, 2466, 86, 86, 2471, 2467, 86, 86, 86, - 2473, 2477, 2474, 86, 2482, 86, 86, 2478, 2484, 86, - 86, 2476, 2485, 2488, 2483, 2479, 2480, 86, 86, 86, - 86, 86, 2489, 2490, 86, 2481, 2491, 2486, 86, 2487, + 86, 86, 2445, 86, 2448, 86, 2443, 86, 2444, 2449, + 86, 86, 2446, 86, 86, 2447, 2450, 2452, 2451, 2455, + 86, 2456, 86, 86, 2458, 86, 2454, 2453, 86, 2460, + 86, 86, 86, 2463, 86, 86, 2462, 2464, 86, 86, + 86, 86, 2457, 86, 86, 86, 2459, 2461, 2466, 2465, + 2470, 2471, 86, 2473, 86, 2468, 86, 2467, 86, 86, + 2477, 86, 2469, 2472, 2475, 86, 2479, 86, 2476, 86, + 86, 86, 2482, 86, 2474, 2478, 2485, 86, 86, 86, + 2480, 86, 86, 86, 2481, 86, 2483, 2489, 2490, 86, + 2492, 86, 2484, 86, 2495, 86, 2488, 86, 2486, 86, - 86, 86, 86, 2493, 86, 2495, 2497, 2498, 2500, 86, - 2501, 86, 2492, 86, 86, 2494, 86, 2504, 2505, 2499, - 86, 86, 86, 86, 2496, 2506, 2503, 86, 86, 86, - 2502, 2509, 86, 86, 86, 2508, 2510, 2515, 2511, 2516, - 86, 2512, 2513, 86, 2517, 86, 2507, 86, 2514, 86, - 86, 86, 2521, 86, 2522, 86, 2523, 86, 2526, 2520, - 86, 170, 2525, 86, 2524, 86, 2527, 2518, 86, 2519, - 2532, 86, 86, 86, 86, 86, 86, 86, 86, 2543, - 86, 2530, 2534, 2528, 2531, 2529, 2535, 2533, 2538, 86, - 86, 2536, 2537, 2539, 2540, 86, 86, 2544, 2541, 2545, + 86, 2491, 2487, 86, 86, 86, 2493, 2497, 2494, 86, + 2502, 86, 86, 2498, 2504, 86, 86, 2496, 2505, 2508, + 2503, 2499, 2500, 86, 86, 86, 86, 86, 2509, 2510, + 86, 2501, 2511, 2506, 86, 2507, 86, 86, 86, 2513, + 86, 2515, 2517, 2518, 2520, 86, 2521, 86, 2512, 86, + 86, 2514, 86, 2524, 2525, 2519, 86, 86, 86, 86, + 2516, 2526, 2523, 86, 86, 86, 2522, 2529, 86, 86, + 86, 2528, 2530, 2535, 2531, 2536, 86, 2532, 2533, 86, + 2537, 86, 2527, 86, 2534, 86, 86, 86, 2541, 86, + 2542, 86, 2543, 86, 2546, 2540, 86, 170, 2545, 86, - 86, 86, 86, 86, 2546, 2548, 2549, 2542, 2547, 86, - 86, 86, 86, 2551, 86, 86, 2552, 86, 2550, 86, - 2553, 2558, 2554, 86, 2557, 86, 86, 86, 86, 2555, - 86, 2560, 2561, 2562, 2563, 86, 2556, 86, 86, 2559, - 86, 86, 2564, 86, 86, 2569, 86, 2565, 2568, 2566, - 86, 86, 86, 86, 86, 2571, 2570, 86, 2575, 86, - 2578, 2567, 86, 86, 2577, 86, 86, 2574, 2579, 86, - 86, 2572, 2573, 86, 86, 2583, 86, 2576, 86, 2588, - 86, 2580, 86, 2587, 2581, 86, 2585, 86, 2582, 2590, - 2589, 86, 2586, 86, 2584, 86, 2593, 86, 86, 2598, + 2544, 86, 2547, 2538, 86, 2539, 2552, 86, 86, 86, + 86, 86, 86, 86, 86, 2563, 86, 2550, 2554, 2548, + 2551, 2549, 2555, 2553, 2558, 86, 86, 2556, 2557, 2559, + 2560, 86, 86, 2564, 2561, 2565, 86, 86, 86, 86, + 2566, 2568, 2569, 2562, 2567, 86, 86, 86, 86, 2571, + 86, 86, 2572, 86, 2570, 86, 2573, 2578, 2574, 86, + 2577, 86, 86, 86, 86, 2575, 86, 2580, 2581, 2582, + 2583, 86, 2576, 86, 86, 2579, 86, 86, 2584, 86, + 86, 2589, 86, 2585, 2588, 2586, 86, 86, 86, 86, + 86, 2591, 2590, 86, 2595, 86, 2598, 2587, 86, 86, - 2591, 2594, 86, 2596, 86, 86, 2595, 2592, 2597, 2599, - 2600, 86, 86, 2602, 86, 86, 86, 86, 86, 86, - 86, 2601, 2606, 86, 86, 2611, 86, 86, 2609, 2610, - 2604, 2612, 86, 2603, 2605, 86, 2613, 86, 2614, 86, - 86, 2608, 86, 2615, 2617, 2607, 86, 86, 86, 2619, - 86, 2622, 86, 86, 86, 2624, 2623, 2616, 86, 2618, - 2620, 86, 2621, 2627, 86, 86, 86, 86, 2628, 2626, - 86, 2625, 86, 2631, 2632, 86, 86, 2629, 86, 2635, - 86, 2633, 2637, 2636, 2630, 2634, 86, 86, 86, 86, - 86, 86, 86, 2641, 2645, 86, 86, 2644, 2646, 86, + 2597, 86, 86, 2594, 2599, 86, 2600, 2592, 2593, 86, + 86, 86, 86, 2596, 86, 2604, 86, 2601, 2606, 86, + 2602, 2609, 86, 2610, 2607, 86, 86, 86, 2603, 86, + 2608, 2613, 2605, 2611, 86, 86, 2612, 86, 2615, 86, + 2614, 86, 2616, 86, 2618, 2619, 2620, 2621, 2622, 86, + 86, 86, 86, 2617, 2624, 86, 86, 86, 86, 2623, + 86, 86, 86, 2628, 2633, 86, 86, 2631, 86, 2625, + 2626, 2632, 2635, 2627, 2634, 86, 86, 2636, 86, 86, + 86, 86, 2630, 86, 2637, 2639, 2629, 86, 2644, 86, + 2641, 86, 2646, 86, 86, 2642, 86, 86, 86, 86, - 2638, 2639, 2640, 2647, 86, 2648, 86, 86, 2649, 2642, - 86, 2643, 86, 2652, 86, 2651, 86, 2653, 86, 86, - 86, 86, 86, 86, 86, 2650, 2654, 2660, 86, 2662, - 86, 2656, 2663, 86, 86, 2664, 86, 86, 2655, 2659, - 2657, 2661, 2658, 2666, 86, 86, 2665, 86, 86, 2667, - 2669, 2672, 86, 86, 2674, 86, 86, 86, 86, 86, - 86, 170, 2673, 86, 2668, 86, 2683, 2670, 2671, 86, - 86, 2677, 2681, 2682, 2679, 86, 86, 2676, 2684, 86, - 86, 86, 2675, 2678, 86, 2680, 86, 2690, 86, 86, - 2685, 2686, 86, 2692, 2693, 2694, 86, 2687, 2695, 86, + 2640, 2638, 2645, 2643, 2649, 86, 86, 86, 2653, 2650, + 86, 2648, 2647, 2654, 86, 2655, 2651, 2652, 86, 86, + 86, 86, 86, 2659, 86, 2658, 86, 86, 2657, 86, + 86, 86, 2663, 2703, 2662, 86, 2656, 86, 2660, 86, + 2661, 86, 2666, 2667, 86, 2668, 86, 2669, 86, 2664, + 2665, 2670, 86, 2671, 86, 86, 2674, 2672, 86, 2673, + 86, 2675, 86, 86, 86, 86, 86, 86, 2682, 86, + 2676, 2684, 86, 2685, 86, 2678, 86, 86, 86, 86, + 86, 86, 2677, 2681, 2679, 2683, 2680, 2686, 2688, 2687, + 2689, 86, 86, 2694, 86, 86, 2691, 2696, 86, 2690, - 2691, 86, 2688, 2700, 2689, 86, 2696, 86, 2697, 86, - 2698, 86, 86, 86, 86, 86, 86, 86, 86, 2699, - 86, 86, 2709, 3456, 86, 86, 2707, 2702, 86, 2713, - 2701, 86, 2704, 2703, 2714, 86, 2706, 2705, 2708, 86, - 86, 2710, 2711, 2712, 86, 2715, 2718, 86, 86, 2717, - 2720, 86, 86, 2719, 86, 86, 86, 86, 86, 86, - 86, 2716, 2723, 2729, 86, 86, 2721, 2730, 86, 2724, - 2722, 86, 86, 86, 2725, 2726, 2727, 2728, 2733, 2731, - 2734, 86, 2736, 2732, 2735, 86, 86, 86, 86, 2737, - 86, 86, 2739, 86, 86, 86, 2741, 2745, 86, 2744, + 2692, 86, 86, 86, 2695, 86, 86, 170, 86, 86, + 2705, 86, 2693, 86, 86, 86, 2699, 86, 86, 2704, + 2701, 86, 2698, 2706, 2712, 86, 2707, 2697, 2708, 2700, + 2702, 86, 86, 2709, 2729, 86, 86, 2714, 86, 2710, + 2715, 2711, 2716, 86, 86, 2713, 2717, 86, 86, 2718, + 86, 2719, 86, 2720, 2721, 2722, 86, 2723, 86, 86, + 86, 86, 86, 86, 2731, 86, 86, 86, 86, 86, + 2735, 2724, 2736, 86, 86, 2740, 86, 2726, 2725, 2742, + 86, 2728, 2727, 2730, 2733, 2732, 2734, 86, 2737, 2738, + 86, 86, 86, 86, 86, 86, 2739, 86, 86, 2741, - 2747, 2738, 2746, 86, 2740, 2748, 86, 2742, 86, 86, - 86, 86, 86, 2743, 86, 86, 86, 86, 2750, 2754, - 2755, 86, 86, 2752, 86, 2759, 86, 2749, 86, 2751, - 2760, 86, 2753, 2763, 86, 86, 2756, 2758, 86, 2761, - 2757, 86, 2766, 2765, 2762, 86, 2764, 2769, 86, 2768, - 86, 86, 86, 86, 2774, 86, 2767, 86, 86, 86, - 86, 2778, 86, 2770, 2777, 86, 2771, 2776, 86, 2775, - 2780, 86, 2772, 2773, 86, 86, 86, 2782, 2779, 2781, - 86, 2783, 2786, 86, 86, 2787, 86, 2784, 2789, 86, - 86, 86, 86, 2795, 86, 86, 2785, 86, 86, 2790, + 2745, 86, 86, 3483, 86, 2752, 86, 2753, 86, 2743, + 2744, 2751, 2746, 2747, 2754, 86, 2748, 2749, 86, 2757, + 86, 2750, 2758, 86, 2756, 2759, 86, 86, 86, 86, + 86, 86, 86, 2755, 86, 2764, 86, 86, 86, 2768, + 2770, 2767, 2761, 2763, 2760, 2769, 86, 2762, 2771, 86, + 86, 86, 2765, 86, 2766, 86, 86, 86, 86, 86, + 2773, 86, 2777, 2778, 86, 86, 86, 2775, 2782, 2772, + 2783, 86, 2774, 86, 2786, 86, 2776, 86, 86, 2779, + 2780, 2784, 86, 86, 2781, 86, 2789, 86, 2787, 2791, + 86, 2785, 86, 2788, 2792, 86, 86, 86, 2790, 86, - 2792, 2793, 2788, 2791, 2794, 2798, 86, 86, 86, 86, - 86, 86, 2799, 2797, 2800, 2802, 86, 2796, 86, 2803, - 86, 86, 2801, 86, 86, 86, 86, 2805, 2806, 2808, - 2809, 2811, 86, 2812, 86, 2804, 2807, 86, 2810, 2815, - 170, 86, 2813, 86, 86, 2814, 86, 2820, 2816, 2817, - 86, 86, 2822, 86, 86, 2821, 86, 86, 2825, 86, - 86, 2818, 2824, 2846, 2819, 2826, 86, 2828, 86, 2823, - 2830, 86, 86, 2827, 2829, 2831, 86, 2832, 86, 86, - 2835, 86, 86, 2833, 86, 2836, 86, 2837, 86, 86, - 86, 86, 86, 2834, 2842, 2843, 2844, 2838, 2840, 2839, + 2793, 2797, 86, 86, 86, 2794, 86, 2800, 2799, 2798, + 2801, 86, 2795, 2803, 86, 86, 2796, 86, 86, 86, + 2804, 86, 2806, 2802, 2809, 86, 2805, 86, 2810, 86, + 2807, 2812, 86, 86, 86, 86, 86, 86, 86, 2808, + 2818, 86, 2813, 2811, 2815, 2816, 2814, 2817, 2821, 86, + 86, 86, 2820, 86, 2819, 2822, 2823, 86, 86, 86, + 86, 86, 2825, 86, 86, 86, 2826, 2824, 86, 2828, + 2831, 2829, 86, 2832, 2834, 86, 2830, 2836, 2827, 2833, + 2835, 86, 86, 2838, 170, 86, 86, 86, 86, 2843, + 3483, 2840, 2839, 86, 86, 86, 86, 2845, 2844, 86, - 86, 86, 86, 86, 2845, 86, 2848, 2847, 86, 86, - 2841, 86, 86, 2850, 2851, 86, 86, 2849, 86, 86, - 2856, 86, 2859, 86, 2854, 2853, 86, 2855, 86, 2852, - 2857, 86, 2860, 86, 2858, 2864, 86, 86, 86, 86, - 86, 86, 2861, 86, 2865, 2869, 86, 86, 2867, 86, - 86, 2862, 2863, 2873, 86, 2868, 3456, 2866, 2871, 2876, - 2870, 2874, 86, 2877, 2879, 86, 86, 2872, 86, 86, - 86, 2882, 2878, 2880, 86, 2875, 2881, 86, 86, 2885, - 86, 86, 86, 2886, 86, 86, 2883, 86, 2887, 86, - 2890, 2884, 2892, 86, 86, 2888, 3456, 2889, 2893, 86, + 86, 2837, 2848, 86, 2847, 2841, 2842, 2849, 86, 2846, + 2851, 86, 86, 2850, 2853, 2852, 86, 86, 86, 2854, + 86, 2855, 2856, 2858, 86, 86, 86, 86, 2859, 86, + 2860, 86, 2857, 86, 2865, 2861, 86, 2866, 86, 2863, + 86, 2867, 2862, 86, 86, 86, 86, 86, 2871, 86, + 2868, 2869, 2870, 86, 2864, 86, 86, 86, 2872, 86, + 2873, 2874, 86, 86, 2879, 86, 2876, 2875, 2877, 86, + 86, 2878, 2883, 86, 2880, 2881, 2885, 86, 86, 2884, + 86, 2888, 86, 86, 86, 86, 86, 2882, 2893, 86, + 2889, 86, 86, 86, 2891, 86, 86, 2886, 86, 2887, - 2894, 86, 86, 86, 86, 2891, 2895, 86, 2896, 2897, - 86, 86, 2899, 2901, 2898, 86, 2900, 86, 2902, 86, - 86, 2905, 86, 2903, 2906, 86, 2907, 86, 86, 86, - 2909, 2908, 2911, 86, 86, 2904, 2914, 86, 86, 2915, - 2912, 86, 2910, 2916, 86, 2918, 86, 86, 86, 86, - 86, 2922, 2923, 86, 2913, 86, 2917, 86, 2925, 2924, - 2919, 86, 86, 2921, 86, 2927, 2920, 2926, 86, 86, - 2928, 86, 2933, 2929, 86, 2932, 86, 86, 86, 86, - 2935, 2930, 2936, 86, 2937, 2938, 86, 86, 2931, 2939, - 86, 86, 2942, 2941, 86, 86, 86, 86, 86, 2934, + 2897, 2892, 2900, 2890, 2898, 86, 2901, 2895, 86, 2903, + 2894, 86, 86, 2896, 86, 86, 2902, 2904, 86, 2905, + 2899, 86, 86, 2907, 2909, 86, 2906, 86, 2910, 86, + 86, 2911, 86, 86, 2914, 2908, 86, 2916, 86, 2917, + 86, 2918, 86, 2912, 86, 86, 86, 2913, 2919, 86, + 2920, 2921, 86, 86, 2915, 86, 86, 2925, 2923, 86, + 2929, 2924, 2926, 86, 2930, 86, 2922, 2927, 2931, 86, + 86, 86, 86, 2932, 2935, 86, 2928, 86, 86, 2938, + 86, 86, 2939, 86, 2933, 2934, 2940, 86, 86, 2942, + 86, 86, 86, 2946, 86, 2936, 2943, 86, 2937, 86, - 2945, 2949, 86, 86, 86, 2956, 86, 86, 2948, 86, - 2957, 86, 2940, 2943, 2944, 2946, 86, 2950, 2947, 2951, - 2953, 86, 86, 2954, 2995, 2958, 2960, 2952, 86, 2955, - 2959, 86, 2961, 86, 86, 2962, 86, 2963, 86, 2964, - 86, 2965, 86, 86, 2966, 86, 86, 2967, 2969, 86, - 2970, 86, 86, 86, 2972, 2976, 86, 2977, 86, 86, - 2973, 86, 2978, 2968, 86, 2971, 2980, 86, 2982, 86, - 86, 2981, 2974, 2975, 86, 2983, 2984, 86, 86, 2979, - 86, 86, 86, 2985, 2990, 86, 86, 2986, 86, 2987, - 2988, 86, 2991, 86, 86, 2992, 2996, 86, 86, 86, + 2947, 86, 2950, 2941, 86, 2949, 2945, 2951, 2948, 2944, + 86, 86, 2952, 86, 86, 86, 2957, 2953, 86, 86, + 86, 2956, 86, 2959, 2960, 86, 86, 86, 2962, 86, + 2954, 2961, 2963, 86, 2955, 86, 2965, 86, 2966, 86, + 2969, 86, 86, 2958, 86, 2973, 86, 86, 86, 2980, + 86, 86, 2964, 86, 2981, 86, 2967, 2968, 2972, 2970, + 86, 2974, 2971, 2975, 2977, 86, 86, 2978, 3020, 2982, + 2984, 2976, 86, 2979, 2983, 86, 2985, 86, 86, 2986, + 86, 2987, 86, 2988, 86, 2989, 86, 86, 2990, 86, + 86, 2991, 2993, 86, 86, 2995, 86, 86, 86, 2997, - 2989, 2997, 86, 3000, 2994, 86, 2999, 2998, 86, 86, - 2993, 3002, 86, 3001, 3003, 86, 3007, 86, 86, 3004, - 86, 86, 86, 3005, 86, 86, 86, 3006, 3014, 3008, - 3009, 3011, 86, 3012, 86, 86, 86, 3015, 86, 3019, - 3017, 3018, 3013, 86, 86, 86, 3010, 86, 86, 3021, - 86, 3024, 3020, 3016, 3025, 3026, 86, 3029, 3022, 3027, - 86, 3023, 3028, 86, 86, 86, 86, 3033, 86, 86, - 3032, 86, 86, 86, 3034, 86, 3035, 3036, 86, 86, - 86, 3044, 86, 86, 3030, 3031, 3037, 3038, 3040, 3042, - 86, 86, 86, 3039, 3045, 86, 3046, 3041, 86, 86, + 3001, 86, 86, 2994, 86, 2998, 3483, 2992, 3002, 86, + 86, 3006, 2996, 3003, 3005, 86, 86, 2999, 3000, 86, + 3004, 3007, 86, 86, 3008, 3009, 86, 86, 86, 86, + 3015, 86, 3010, 86, 3014, 86, 3011, 3012, 3013, 3016, + 86, 86, 3017, 3021, 86, 86, 86, 86, 3022, 86, + 3025, 86, 3019, 86, 3024, 86, 3026, 3023, 86, 3018, + 3027, 86, 3028, 86, 3032, 86, 86, 3029, 86, 86, + 3034, 86, 3030, 3031, 3036, 3033, 86, 3039, 86, 86, + 3037, 86, 86, 86, 86, 3044, 3042, 3043, 86, 86, + 3040, 86, 86, 3035, 3046, 86, 3038, 3045, 86, 3049, - 3048, 86, 86, 3047, 86, 3043, 3053, 86, 86, 86, - 86, 3049, 86, 86, 3056, 86, 3050, 3051, 86, 86, - 86, 3054, 3055, 3060, 3052, 3061, 86, 3057, 3058, 86, - 3062, 86, 3059, 3066, 86, 3063, 86, 3064, 3068, 86, - 3069, 86, 86, 3071, 86, 86, 86, 86, 86, 86, - 3077, 86, 3074, 86, 3076, 3067, 86, 3065, 86, 86, - 3080, 3072, 3073, 3070, 3075, 3079, 86, 86, 3083, 86, - 86, 3086, 86, 3078, 86, 86, 3088, 86, 3082, 86, - 3089, 3081, 86, 3084, 3091, 86, 3092, 86, 86, 3085, - 86, 3095, 86, 86, 3087, 86, 86, 86, 3101, 3090, + 3041, 86, 3050, 3483, 3047, 86, 3048, 3051, 86, 3052, + 86, 3053, 86, 86, 3054, 3055, 3058, 86, 3057, 86, + 3056, 86, 86, 86, 3059, 86, 3060, 3061, 86, 86, + 86, 86, 3067, 86, 3065, 3062, 3483, 3063, 86, 3069, + 86, 86, 86, 86, 3064, 3070, 86, 3071, 3066, 86, + 3073, 3072, 3074, 86, 86, 86, 3068, 86, 3075, 3078, + 86, 86, 86, 86, 3082, 3081, 86, 86, 3076, 86, + 3079, 86, 3086, 86, 3077, 3080, 86, 3085, 86, 3083, + 86, 3088, 3089, 3092, 86, 3084, 86, 3094, 86, 3095, + 86, 3087, 86, 86, 3090, 3097, 86, 86, 86, 86, - 3100, 86, 86, 3093, 3097, 3098, 86, 3104, 86, 3102, - 3094, 3096, 86, 86, 86, 3099, 3106, 3105, 86, 86, - 3456, 3103, 3107, 86, 3108, 3111, 3109, 3112, 86, 3114, - 86, 86, 3110, 3113, 86, 86, 3115, 3117, 86, 3116, - 86, 86, 3120, 86, 86, 3118, 3123, 86, 86, 86, - 86, 86, 3128, 86, 86, 3124, 86, 86, 3132, 86, - 3119, 3121, 3122, 86, 3127, 86, 3131, 3125, 3133, 86, - 3134, 86, 3130, 3129, 86, 3126, 3136, 3135, 3137, 86, - 3138, 86, 3139, 86, 86, 3142, 86, 3140, 86, 3144, - 86, 86, 86, 3143, 86, 86, 86, 86, 3150, 3151, + 86, 86, 3100, 86, 3091, 3093, 3102, 3103, 86, 3098, + 3106, 86, 3105, 3096, 3099, 3101, 86, 86, 86, 3109, + 3104, 86, 86, 3112, 86, 86, 3114, 86, 86, 3117, + 86, 86, 86, 3115, 3107, 3110, 3108, 3118, 86, 86, + 86, 3111, 3121, 86, 86, 3113, 3119, 86, 3126, 3116, + 86, 3123, 86, 3124, 86, 86, 3130, 86, 86, 3120, + 86, 86, 3122, 3132, 3128, 86, 86, 3125, 3133, 3127, + 86, 3134, 86, 3131, 3137, 3129, 3138, 86, 3135, 86, + 86, 3136, 3139, 3140, 3143, 86, 86, 86, 86, 86, + 3141, 3142, 3144, 3146, 86, 3149, 86, 86, 86, 86, - 86, 86, 86, 86, 86, 3145, 3157, 86, 3158, 86, - 3141, 86, 86, 3159, 3146, 3148, 3147, 3149, 3154, 86, - 3156, 3153, 86, 3155, 86, 86, 86, 3152, 86, 3162, - 3164, 86, 3160, 3165, 86, 86, 86, 3168, 3169, 86, - 3166, 3161, 3167, 86, 3170, 86, 3163, 3171, 86, 86, - 3172, 86, 86, 3173, 86, 86, 3174, 86, 86, 3175, - 3177, 86, 86, 3179, 86, 86, 3178, 86, 3456, 3180, - 86, 86, 3176, 86, 86, 86, 86, 3181, 86, 3189, - 3190, 3193, 3182, 3184, 3183, 3192, 3185, 3191, 3186, 3187, - 86, 86, 86, 3195, 3188, 3197, 86, 86, 3194, 3198, + 86, 86, 3154, 86, 86, 86, 86, 3145, 86, 3150, + 86, 3147, 3148, 3160, 3153, 3157, 3151, 3158, 86, 3159, + 86, 3156, 86, 3155, 3161, 3152, 86, 3162, 3163, 86, + 3164, 86, 3165, 86, 3166, 86, 86, 3169, 86, 3167, + 86, 3171, 86, 86, 86, 3170, 86, 86, 86, 86, + 3177, 3178, 86, 86, 86, 86, 86, 3172, 3184, 86, + 3185, 86, 3168, 86, 86, 3186, 3173, 3175, 3174, 3176, + 3181, 86, 3183, 3180, 86, 3182, 86, 86, 86, 3179, + 86, 3189, 3191, 86, 3187, 3192, 86, 86, 86, 3195, + 3196, 86, 3193, 3188, 3194, 86, 3197, 86, 3190, 3198, - 86, 3199, 3200, 86, 86, 3196, 86, 3203, 86, 3201, - 3204, 86, 3205, 3206, 86, 86, 3207, 3208, 3212, 86, - 3209, 86, 86, 3210, 3211, 3202, 86, 3213, 86, 3215, - 86, 86, 86, 86, 86, 86, 86, 3214, 3221, 86, - 3220, 86, 86, 86, 86, 86, 3217, 86, 3225, 3216, - 3224, 3226, 86, 3218, 3219, 86, 3222, 3229, 3230, 86, - 3227, 86, 3232, 86, 3231, 3228, 3223, 3233, 86, 3234, - 86, 86, 86, 86, 3239, 86, 3236, 3241, 3235, 3240, - 86, 3237, 86, 86, 3238, 86, 86, 86, 3248, 86, - 3243, 3245, 3246, 3249, 86, 3251, 86, 86, 3242, 86, + 86, 86, 3199, 86, 86, 3200, 86, 86, 3201, 86, + 86, 3202, 3204, 86, 86, 3206, 86, 86, 3205, 86, + 3483, 3207, 86, 86, 3203, 86, 86, 86, 86, 3208, + 86, 3216, 3217, 3220, 3209, 3211, 3210, 3219, 3212, 3218, + 3213, 3214, 86, 86, 86, 3222, 3215, 3224, 86, 86, + 3221, 3225, 86, 3226, 3227, 86, 86, 3223, 86, 3230, + 86, 3228, 3231, 86, 3232, 3233, 86, 86, 3234, 3235, + 3239, 86, 3236, 86, 86, 3237, 3238, 3229, 86, 3240, + 86, 3242, 86, 86, 86, 86, 86, 86, 86, 3241, + 3248, 86, 3247, 86, 86, 86, 86, 86, 3244, 86, - 3250, 3252, 86, 3244, 3247, 86, 3255, 86, 3256, 86, - 3254, 86, 3253, 3258, 86, 3259, 86, 3260, 86, 86, - 3257, 3261, 86, 3262, 86, 3263, 86, 3264, 86, 3265, - 86, 86, 3268, 86, 86, 86, 86, 3272, 86, 86, - 3267, 3274, 86, 3269, 86, 3266, 86, 3270, 86, 86, - 86, 86, 3278, 3279, 86, 86, 3271, 86, 3273, 3275, - 3283, 3276, 3277, 86, 3280, 3281, 86, 86, 3285, 3288, - 86, 86, 3284, 3282, 3287, 86, 86, 86, 86, 86, - 86, 3286, 3290, 86, 3289, 3294, 86, 86, 86, 3295, - 3296, 86, 86, 86, 3300, 3291, 3292, 3299, 86, 3293, + 3252, 3243, 3251, 3253, 86, 3245, 3246, 86, 3249, 3256, + 3257, 86, 3254, 86, 3259, 86, 3258, 3255, 3250, 3260, + 86, 3261, 86, 86, 86, 86, 3266, 86, 3263, 3268, + 3262, 3267, 86, 3264, 86, 86, 3265, 86, 86, 86, + 3275, 86, 3270, 3272, 3273, 3276, 86, 3278, 86, 86, + 3269, 86, 3277, 3279, 86, 3271, 3274, 86, 3282, 86, + 3283, 86, 3281, 86, 3280, 3285, 86, 3286, 86, 3287, + 86, 86, 3284, 3288, 86, 3289, 86, 3290, 86, 3291, + 86, 3292, 86, 86, 3295, 86, 86, 86, 86, 3299, + 86, 86, 3294, 3301, 86, 3296, 86, 3293, 86, 3297, - 3302, 86, 3297, 3303, 86, 86, 3301, 3304, 86, 86, - 86, 86, 86, 86, 3298, 3307, 86, 86, 3306, 86, - 86, 3305, 3312, 86, 3309, 3308, 86, 3311, 3313, 86, - 3315, 86, 3317, 3316, 3314, 3310, 86, 86, 86, 86, - 86, 3318, 86, 86, 86, 3324, 86, 3319, 3322, 3326, - 3323, 86, 3321, 3327, 86, 86, 3329, 3330, 3332, 86, - 86, 3320, 86, 3325, 3334, 86, 3328, 86, 3335, 3333, - 3336, 86, 3337, 86, 86, 3331, 86, 86, 86, 3340, - 86, 3338, 3341, 3342, 86, 3345, 86, 86, 86, 86, - 86, 86, 3348, 86, 3339, 3349, 86, 3351, 86, 3344, + 86, 86, 86, 86, 3305, 3306, 86, 86, 3298, 86, + 3300, 3302, 3310, 3303, 3304, 86, 3307, 3308, 86, 86, + 3312, 3315, 86, 86, 3311, 3309, 3314, 86, 86, 86, + 86, 86, 86, 3313, 3317, 86, 3316, 3321, 86, 86, + 86, 3322, 3323, 86, 86, 86, 3327, 3318, 3319, 3326, + 86, 3320, 3329, 86, 3324, 3330, 86, 86, 3328, 3331, + 86, 86, 86, 86, 86, 86, 3325, 3334, 86, 86, + 3333, 86, 86, 3332, 3339, 86, 3336, 3335, 86, 3338, + 3340, 86, 3342, 86, 3344, 3343, 3341, 3337, 86, 86, + 86, 86, 86, 3345, 86, 86, 86, 3351, 86, 3346, - 3346, 3347, 3352, 86, 86, 3343, 3355, 86, 3350, 3354, - 86, 3357, 3358, 86, 86, 3359, 86, 86, 86, 3353, - 3362, 3363, 86, 86, 3360, 3356, 86, 86, 86, 3368, - 86, 86, 3364, 3367, 86, 3365, 3361, 3369, 86, 86, - 86, 86, 3366, 86, 3373, 86, 86, 86, 3375, 86, - 86, 86, 3370, 3372, 3371, 3380, 3381, 3382, 86, 3377, - 3378, 3374, 86, 86, 3376, 86, 3386, 86, 3379, 86, - 3388, 86, 3389, 86, 3387, 86, 86, 86, 3390, 3394, - 3391, 3384, 3383, 86, 3385, 86, 3395, 86, 3392, 86, - 3397, 86, 86, 86, 3396, 86, 3393, 3398, 86, 86, + 3349, 3353, 3350, 86, 3348, 3354, 86, 86, 3356, 3357, + 3359, 86, 86, 3347, 86, 3352, 3361, 86, 3355, 86, + 3362, 3360, 3363, 86, 3364, 86, 86, 3358, 86, 86, + 86, 3367, 86, 3365, 3368, 3369, 86, 3372, 86, 86, + 86, 86, 86, 86, 3375, 86, 3366, 3376, 86, 3378, + 86, 3371, 3373, 3374, 3379, 86, 86, 3370, 3382, 86, + 3377, 3381, 86, 3384, 3385, 86, 86, 3386, 86, 86, + 86, 3380, 3389, 3390, 86, 86, 3387, 3383, 86, 86, + 86, 3395, 86, 86, 3391, 3394, 86, 3392, 3388, 3396, + 86, 86, 86, 86, 3393, 86, 3400, 86, 86, 86, - 3403, 86, 3400, 86, 86, 3406, 86, 3407, 86, 86, - 86, 3399, 86, 86, 3410, 86, 3405, 3401, 3402, 3408, - 3404, 86, 3409, 86, 3414, 86, 3415, 86, 3413, 86, - 3418, 3411, 3412, 86, 86, 3420, 86, 3421, 3416, 86, - 86, 86, 3425, 86, 3422, 86, 86, 3423, 3427, 86, - 3426, 86, 3419, 3417, 3428, 86, 3429, 86, 3430, 86, - 3424, 86, 3434, 86, 3432, 86, 86, 86, 86, 86, - 86, 3436, 3437, 86, 3440, 86, 3431, 3441, 86, 3456, - 3433, 86, 3444, 86, 3435, 3445, 86, 3438, 3439, 3442, - 3446, 3447, 86, 86, 3443, 3448, 86, 86, 86, 86, + 3402, 86, 86, 86, 3397, 3399, 3398, 3407, 3408, 3409, + 86, 3404, 3405, 3401, 86, 86, 3403, 86, 3413, 86, + 3406, 86, 3415, 86, 3416, 86, 3414, 86, 86, 86, + 3417, 3421, 3418, 3411, 3410, 86, 3412, 86, 3422, 86, + 3419, 86, 3424, 86, 86, 86, 3423, 86, 3420, 3425, + 86, 86, 3430, 86, 3427, 86, 86, 3433, 86, 3434, + 86, 86, 86, 3426, 86, 86, 3437, 86, 3432, 3428, + 3429, 3435, 3431, 86, 3436, 86, 3441, 86, 3442, 86, + 3440, 86, 3445, 3438, 3439, 86, 86, 3447, 86, 3448, + 3443, 86, 86, 86, 3452, 86, 3449, 86, 86, 3450, - 3449, 86, 3450, 3451, 3454, 86, 3455, 86, 3456, 3456, - 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3452, 3456, - 3453, 47, 47, 47, 47, 47, 47, 47, 52, 52, - 52, 52, 52, 52, 52, 57, 57, 57, 57, 57, - 57, 57, 63, 63, 63, 63, 63, 63, 63, 68, - 68, 68, 68, 68, 68, 68, 74, 74, 74, 74, - 74, 74, 74, 80, 80, 80, 80, 80, 80, 80, - 89, 89, 3456, 89, 89, 89, 89, 160, 160, 3456, - 3456, 3456, 160, 160, 162, 162, 3456, 3456, 162, 3456, - 162, 164, 3456, 3456, 3456, 3456, 3456, 164, 167, 167, + 3454, 86, 3453, 86, 3446, 3444, 3455, 86, 3456, 86, + 3457, 86, 3451, 86, 3461, 86, 3459, 86, 86, 86, + 86, 86, 86, 3463, 3464, 86, 3467, 86, 3458, 3468, + 86, 3483, 3460, 86, 3471, 86, 3462, 3472, 86, 3465, + 3466, 3469, 3473, 3474, 86, 86, 3470, 3475, 86, 86, + 86, 86, 3476, 86, 3477, 3478, 3481, 86, 3482, 86, + 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, + 3479, 3483, 3480, 47, 47, 47, 47, 47, 47, 47, + 52, 52, 52, 52, 52, 52, 52, 57, 57, 57, + 57, 57, 57, 57, 63, 63, 63, 63, 63, 63, - 3456, 3456, 3456, 167, 167, 169, 3456, 3456, 3456, 3456, - 3456, 169, 171, 171, 3456, 171, 171, 171, 171, 174, - 3456, 3456, 3456, 3456, 3456, 174, 177, 177, 3456, 3456, - 3456, 177, 177, 90, 90, 3456, 90, 90, 90, 90, - 17, 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, - 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, - 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, - 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, - 3456 + 63, 68, 68, 68, 68, 68, 68, 68, 74, 74, + 74, 74, 74, 74, 74, 80, 80, 80, 80, 80, + 80, 80, 89, 89, 3483, 89, 89, 89, 89, 160, + 160, 3483, 3483, 3483, 160, 160, 162, 162, 3483, 3483, + 162, 3483, 162, 164, 3483, 3483, 3483, 3483, 3483, 164, + 167, 167, 3483, 3483, 3483, 167, 167, 169, 3483, 3483, + 3483, 3483, 3483, 169, 171, 171, 3483, 171, 171, 171, + 171, 174, 3483, 3483, 3483, 3483, 3483, 174, 177, 177, + 3483, 3483, 3483, 177, 177, 90, 90, 3483, 90, 90, + 90, 90, 17, 3483, 3483, 3483, 3483, 3483, 3483, 3483, + + 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, + 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, + 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, + 3483, 3483, 3483 } ; -static const flex_int16_t yy_chk[6782] = +static const flex_int16_t yy_chk[6834] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2319,18 +2336,18 @@ static const flex_int16_t yy_chk[6782] = 5, 3, 6, 24, 4, 24, 24, 5, 24, 6, 7, 7, 7, 7, 24, 7, 8, 8, 8, 8, 33, 8, 7, 9, 9, 9, 26, 26, 8, 10, - 10, 10, 19, 29, 9, 33, 19, 29, 3464, 35, + 10, 10, 19, 29, 9, 33, 19, 29, 3491, 35, 10, 11, 11, 11, 11, 11, 11, 13, 13, 13, 13, 34, 13, 11, 35, 99, 34, 29, 38, 13, 51, 51, 11, 12, 12, 12, 12, 12, 12, 14, 14, 14, 14, 99, 14, 12, 15, 15, 15, 38, 23, 14, 23, 23, 12, 23, 46, 15, 16, 16, - 16, 23, 23, 25, 27, 27, 25, 25, 2815, 16, + 16, 23, 23, 25, 27, 27, 25, 25, 2838, 16, 25, 46, 27, 30, 30, 25, 27, 56, 40, 27, 56, 73, 31, 31, 25, 28, 67, 67, 30, 32, 28, 31, 40, 32, 28, 73, 32, 28, 92, 28, - 28, 92, 31, 32, 1121, 32, 36, 36, 37, 37, + 28, 92, 31, 32, 1127, 32, 36, 36, 37, 37, 28, 45, 45, 37, 97, 36, 45, 97, 41, 41, 45, 36, 87, 41, 93, 36, 87, 37, 93, 37, @@ -2422,641 +2439,647 @@ static const flex_int16_t yy_chk[6782] = 411, 413, 413, 415, 413, 414, 420, 416, 417, 419, 420, 419, 419, 421, 422, 422, 423, 421, 424, 426, - 425, 428, 430, 433, 427, 436, 164, 433, 430, 419, - 428, 431, 421, 424, 429, 423, 425, 426, 427, 429, - 431, 428, 441, 428, 432, 434, 436, 429, 429, 432, - 435, 429, 429, 437, 434, 439, 435, 438, 439, 437, - 440, 438, 441, 442, 442, 440, 443, 444, 444, 445, - 446, 447, 447, 449, 445, 448, 450, 449, 451, 443, - 452, 448, 453, 446, 455, 452, 456, 453, 454, 454, - 457, 450, 458, 463, 463, 459, 455, 454, 459, 451, - 460, 462, 465, 461, 458, 460, 456, 461, 457, 464, + 425, 430, 428, 432, 427, 431, 164, 430, 432, 419, + 428, 428, 421, 424, 431, 423, 425, 426, 427, 433, + 434, 435, 428, 433, 428, 429, 436, 435, 437, 434, + 429, 438, 440, 439, 437, 438, 439, 440, 429, 429, + 441, 443, 429, 429, 442, 442, 429, 436, 444, 444, + 445, 446, 447, 447, 443, 445, 448, 449, 450, 451, + 441, 449, 448, 452, 446, 453, 454, 454, 452, 455, + 453, 456, 457, 450, 458, 454, 459, 460, 465, 459, + 451, 455, 460, 461, 462, 467, 458, 461, 463, 463, - 466, 466, 467, 462, 464, 469, 469, 471, 472, 473, - 474, 477, 475, 465, 476, 479, 472, 475, 473, 480, - 481, 483, 482, 477, 467, 486, 485, 483, 471, 484, - 486, 474, 485, 479, 476, 479, 482, 480, 484, 487, - 481, 488, 489, 490, 491, 489, 493, 494, 492, 488, - 494, 496, 488, 487, 492, 495, 498, 490, 497, 491, - 499, 495, 501, 497, 500, 496, 493, 501, 500, 502, - 503, 504, 505, 506, 509, 503, 510, 513, 498, 495, - 511, 499, 162, 514, 502, 512, 506, 504, 514, 512, - 554, 505, 507, 507, 509, 511, 513, 510, 507, 515, + 457, 456, 464, 466, 466, 471, 462, 464, 472, 465, + 469, 469, 473, 474, 475, 476, 472, 467, 477, 475, + 479, 473, 481, 480, 486, 482, 471, 483, 484, 486, + 477, 487, 490, 483, 474, 476, 488, 484, 479, 482, + 479, 480, 481, 485, 488, 487, 490, 488, 489, 485, + 491, 489, 492, 493, 494, 495, 496, 494, 492, 497, + 498, 495, 499, 500, 497, 491, 501, 500, 505, 502, + 496, 501, 503, 493, 504, 506, 509, 503, 511, 495, + 510, 512, 498, 499, 502, 512, 515, 505, 506, 513, + 504, 507, 507, 511, 516, 514, 509, 507, 516, 507, - 507, 516, 518, 554, 517, 516, 507, 520, 507, 517, - 526, 507, 507, 517, 519, 515, 521, 518, 507, 519, - 523, 522, 524, 520, 527, 521, 520, 522, 525, 528, - 528, 525, 522, 526, 529, 523, 530, 530, 524, 531, - 532, 533, 534, 534, 527, 535, 536, 539, 537, 538, - 540, 541, 532, 537, 531, 546, 533, 541, 538, 529, - 543, 546, 548, 544, 535, 540, 539, 544, 536, 543, - 545, 547, 549, 550, 545, 551, 552, 548, 553, 555, - 557, 555, 553, 547, 558, 558, 559, 550, 557, 560, - 551, 549, 559, 561, 552, 562, 564, 563, 565, 561, + 514, 510, 515, 518, 517, 507, 520, 507, 513, 517, + 507, 507, 521, 517, 519, 523, 524, 507, 518, 519, + 522, 521, 520, 526, 525, 520, 522, 525, 527, 529, + 523, 522, 524, 528, 528, 530, 530, 531, 532, 535, + 533, 534, 534, 536, 537, 539, 526, 538, 527, 537, + 532, 540, 531, 541, 529, 533, 538, 544, 535, 541, + 543, 544, 546, 545, 539, 536, 540, 545, 546, 543, + 547, 548, 549, 550, 551, 552, 553, 554, 566, 555, + 553, 555, 547, 566, 557, 560, 548, 550, 562, 551, + 554, 549, 557, 552, 558, 558, 559, 560, 561, 564, - 563, 560, 567, 566, 569, 567, 568, 562, 566, 581, - 564, 570, 581, 565, 571, 568, 570, 570, 572, 572, - 569, 579, 568, 573, 573, 568, 574, 571, 575, 575, - 576, 576, 574, 577, 580, 578, 583, 584, 582, 577, - 578, 578, 579, 582, 585, 584, 580, 585, 586, 587, - 588, 590, 589, 586, 591, 583, 589, 590, 591, 592, - 593, 594, 595, 595, 596, 593, 597, 599, 598, 588, - 600, 602, 587, 598, 601, 594, 602, 592, 603, 596, - 601, 605, 607, 599, 609, 604, 608, 597, 604, 609, - 600, 611, 603, 604, 606, 606, 604, 604, 610, 605, + 562, 565, 559, 563, 561, 567, 563, 569, 567, 568, + 162, 571, 581, 564, 570, 581, 565, 579, 568, 570, + 570, 572, 572, 569, 571, 568, 573, 573, 568, 574, + 575, 575, 576, 576, 577, 574, 578, 580, 579, 582, + 577, 578, 578, 583, 582, 584, 586, 585, 587, 580, + 585, 586, 589, 584, 588, 590, 589, 591, 593, 592, + 594, 590, 583, 592, 595, 594, 596, 596, 597, 598, + 599, 587, 600, 588, 602, 599, 593, 591, 595, 601, + 603, 607, 604, 597, 605, 606, 603, 604, 606, 609, + 598, 600, 610, 606, 602, 601, 606, 606, 605, 607, - 607, 612, 608, 610, 614, 611, 615, 618, 616, 617, - 614, 616, 618, 617, 619, 615, 612, 619, 620, 622, - 621, 623, 625, 620, 626, 624, 629, 625, 623, 627, - 627, 628, 630, 631, 632, 617, 621, 622, 624, 633, - 628, 634, 635, 632, 626, 629, 640, 634, 635, 631, - 643, 633, 636, 630, 641, 636, 637, 637, 638, 637, - 639, 638, 642, 648, 640, 639, 644, 642, 641, 643, - 645, 646, 644, 647, 649, 645, 647, 646, 650, 649, - 651, 652, 653, 650, 650, 654, 655, 653, 648, 656, - 657, 654, 658, 651, 652, 657, 659, 659, 656, 660, + 608, 608, 613, 614, 611, 612, 616, 609, 610, 611, + 612, 617, 616, 623, 618, 619, 613, 618, 614, 619, + 617, 620, 621, 622, 624, 621, 620, 625, 622, 623, + 626, 627, 628, 632, 625, 630, 627, 629, 629, 631, + 633, 619, 624, 626, 630, 635, 634, 636, 638, 160, + 642, 638, 628, 636, 632, 634, 633, 635, 631, 637, + 639, 639, 643, 639, 640, 637, 641, 640, 642, 644, + 645, 641, 646, 648, 644, 647, 643, 650, 646, 648, + 647, 649, 651, 653, 649, 652, 654, 651, 655, 645, + 652, 652, 656, 655, 657, 658, 653, 660, 656, 654, - 661, 653, 653, 661, 662, 655, 660, 663, 664, 665, - 662, 667, 658, 664, 665, 665, 666, 666, 661, 663, - 668, 669, 668, 664, 670, 671, 670, 672, 673, 674, - 675, 676, 678, 681, 677, 683, 667, 676, 677, 679, - 669, 678, 680, 671, 682, 672, 673, 683, 674, 684, - 675, 681, 685, 686, 679, 687, 688, 680, 685, 689, - 690, 691, 692, 682, 684, 693, 692, 695, 688, 687, - 694, 696, 697, 686, 698, 700, 700, 160, 689, 698, - 691, 690, 699, 693, 701, 695, 694, 702, 701, 696, - 696, 697, 703, 704, 705, 706, 699, 707, 708, 709, + 659, 669, 650, 663, 658, 659, 663, 655, 655, 661, + 661, 662, 665, 657, 664, 668, 668, 660, 662, 671, + 664, 663, 666, 667, 665, 673, 669, 666, 667, 667, + 670, 672, 670, 672, 674, 675, 676, 666, 671, 677, + 678, 679, 680, 673, 685, 679, 678, 681, 682, 683, + 684, 680, 674, 675, 687, 676, 685, 686, 688, 677, + 687, 689, 681, 682, 690, 691, 692, 683, 695, 684, + 693, 701, 686, 694, 696, 689, 690, 694, 688, 697, + 698, 699, 704, 700, 691, 701, 695, 692, 700, 693, + 696, 702, 702, 705, 707, 706, 704, 697, 698, 698, - 706, 702, 710, 713, 704, 711, 716, 712, 705, 710, - 711, 703, 709, 707, 712, 714, 715, 708, 717, 718, - 714, 715, 719, 720, 716, 717, 721, 713, 718, 722, - 724, 726, 720, 724, 723, 722, 719, 725, 721, 723, - 727, 725, 728, 730, 729, 726, 731, 731, 737, 727, - 732, 732, 733, 733, 735, 734, 738, 728, 729, 732, - 734, 739, 738, 735, 730, 740, 741, 737, 742, 740, - 743, 744, 745, 747, 748, 746, 749, 744, 741, 752, - 745, 739, 746, 758, 755, 765, 765, 85, 743, 759, - 763, 747, 758, 742, 752, 759, 749, 761, 762, 748, + 699, 703, 708, 709, 710, 703, 706, 708, 707, 711, + 712, 713, 705, 714, 715, 718, 713, 712, 719, 709, + 714, 716, 711, 710, 717, 719, 716, 720, 721, 717, + 722, 723, 725, 718, 724, 730, 720, 725, 715, 722, + 724, 726, 721, 723, 726, 727, 728, 729, 731, 727, + 730, 732, 733, 733, 734, 734, 729, 735, 735, 736, + 728, 737, 731, 734, 736, 739, 741, 740, 743, 744, + 737, 742, 732, 740, 745, 742, 746, 747, 749, 750, + 743, 748, 746, 751, 739, 747, 741, 754, 748, 757, + 760, 761, 745, 772, 744, 763, 749, 761, 770, 760, - 750, 755, 750, 761, 764, 750, 763, 762, 764, 750, - 766, 766, 750, 767, 768, 769, 770, 771, 777, 750, - 750, 773, 750, 771, 767, 774, 773, 775, 779, 769, - 776, 778, 768, 779, 776, 778, 770, 772, 772, 772, - 780, 772, 777, 781, 772, 775, 774, 782, 795, 772, - 783, 778, 787, 783, 785, 772, 772, 784, 781, 780, - 795, 785, 784, 784, 786, 786, 788, 787, 789, 789, - 790, 788, 782, 791, 792, 790, 791, 793, 793, 792, - 794, 796, 794, 797, 798, 800, 799, 797, 801, 801, - 806, 802, 805, 800, 803, 804, 804, 807, 809, 80, + 764, 763, 754, 751, 750, 752, 757, 752, 85, 764, + 752, 766, 765, 772, 752, 766, 770, 752, 767, 767, + 768, 768, 769, 771, 752, 752, 773, 752, 765, 775, + 776, 777, 773, 769, 780, 776, 778, 771, 774, 774, + 774, 782, 774, 779, 781, 774, 782, 779, 781, 775, + 774, 783, 777, 785, 778, 784, 774, 774, 780, 786, + 784, 788, 787, 791, 781, 787, 788, 788, 785, 789, + 783, 790, 790, 798, 792, 798, 789, 794, 791, 792, + 793, 793, 794, 795, 786, 796, 795, 797, 797, 799, + 796, 800, 801, 802, 804, 803, 801, 805, 805, 810, - 796, 808, 806, 809, 798, 799, 802, 808, 803, 811, - 805, 810, 810, 813, 811, 811, 814, 815, 813, 807, - 816, 818, 814, 817, 820, 821, 816, 818, 817, 819, - 820, 824, 819, 821, 822, 822, 815, 823, 823, 824, - 825, 826, 827, 828, 829, 830, 826, 831, 831, 827, - 832, 834, 834, 836, 833, 840, 838, 835, 825, 832, - 829, 828, 833, 835, 830, 838, 839, 842, 841, 845, - 846, 843, 836, 841, 843, 839, 842, 844, 847, 840, - 848, 851, 844, 845, 849, 850, 850, 847, 852, 849, - 849, 853, 854, 848, 855, 846, 851, 858, 856, 858, + 806, 799, 804, 807, 808, 808, 809, 811, 814, 814, + 800, 810, 812, 802, 803, 806, 813, 807, 812, 819, + 815, 813, 817, 825, 809, 815, 815, 817, 818, 811, + 820, 825, 821, 822, 818, 824, 820, 821, 819, 822, + 823, 824, 828, 823, 826, 826, 827, 827, 829, 830, + 828, 831, 832, 833, 830, 834, 835, 835, 831, 836, + 838, 838, 840, 837, 844, 850, 829, 839, 836, 833, + 832, 837, 845, 839, 834, 842, 843, 845, 846, 847, + 849, 840, 847, 851, 842, 843, 848, 846, 844, 852, + 850, 848, 851, 853, 849, 854, 854, 855, 853, 853, - 853, 856, 859, 859, 860, 861, 862, 852, 863, 856, - 861, 864, 855, 865, 866, 867, 854, 868, 869, 870, - 871, 873, 869, 872, 867, 860, 874, 862, 863, 872, - 873, 864, 875, 876, 866, 865, 877, 870, 874, 871, - 868, 878, 877, 879, 882, 880, 883, 876, 885, 878, - 880, 875, 881, 881, 886, 884, 887, 879, 888, 889, - 893, 890, 886, 882, 884, 891, 883, 892, 885, 894, - 895, 891, 896, 892, 893, 894, 887, 897, 889, 898, - 888, 890, 899, 897, 895, 898, 899, 900, 901, 902, - 903, 905, 896, 906, 902, 904, 904, 905, 907, 906, + 856, 857, 852, 858, 859, 860, 867, 862, 860, 862, + 857, 864, 855, 863, 863, 865, 860, 866, 869, 856, + 865, 868, 859, 870, 871, 872, 867, 858, 874, 876, + 873, 875, 864, 871, 873, 876, 877, 878, 866, 879, + 869, 868, 880, 870, 882, 877, 874, 881, 872, 878, + 875, 883, 882, 881, 884, 886, 880, 887, 879, 884, + 885, 885, 888, 889, 890, 883, 891, 892, 893, 895, + 894, 888, 890, 896, 886, 895, 898, 887, 897, 896, + 899, 900, 898, 889, 903, 901, 891, 893, 903, 892, + 894, 901, 897, 902, 899, 904, 905, 906, 907, 902, - 901, 907, 908, 909, 910, 911, 900, 75, 901, 913, - 910, 903, 912, 912, 914, 915, 909, 916, 915, 914, - 908, 917, 916, 916, 918, 911, 920, 913, 918, 919, - 919, 915, 921, 915, 922, 923, 917, 925, 928, 922, - 929, 926, 930, 932, 932, 933, 936, 934, 920, 933, - 938, 928, 921, 954, 923, 926, 935, 935, 939, 954, - 929, 925, 934, 930, 931, 938, 937, 931, 941, 931, - 937, 936, 939, 931, 940, 931, 944, 943, 942, 940, - 931, 946, 941, 942, 942, 931, 943, 945, 948, 947, - 944, 945, 949, 950, 947, 951, 946, 949, 952, 953, + 909, 900, 906, 908, 908, 910, 909, 911, 905, 912, + 911, 910, 913, 915, 904, 914, 905, 916, 916, 907, + 917, 914, 921, 918, 924, 913, 919, 912, 918, 919, + 920, 923, 923, 915, 925, 920, 920, 921, 917, 922, + 926, 927, 919, 922, 919, 926, 924, 929, 930, 933, + 932, 934, 936, 936, 925, 937, 939, 939, 940, 937, + 927, 941, 930, 932, 938, 941, 942, 962, 962, 933, + 944, 929, 934, 935, 943, 944, 935, 945, 935, 938, + 946, 942, 935, 940, 935, 946, 946, 947, 943, 935, + 948, 945, 950, 949, 935, 951, 947, 949, 953, 952, - 948, 955, 962, 945, 947, 956, 955, 950, 953, 957, - 961, 956, 952, 958, 958, 957, 951, 959, 960, 963, - 966, 962, 959, 965, 960, 966, 967, 969, 969, 968, - 973, 970, 961, 972, 971, 965, 970, 963, 964, 964, - 967, 968, 971, 974, 964, 975, 964, 972, 976, 973, - 977, 978, 964, 979, 976, 977, 980, 964, 964, 981, - 984, 975, 974, 978, 964, 982, 982, 987, 986, 983, - 987, 979, 980, 983, 986, 988, 989, 981, 990, 991, - 984, 989, 992, 993, 995, 991, 996, 992, 997, 999, - 998, 990, 1000, 995, 988, 996, 998, 1002, 999, 1003, + 951, 954, 955, 953, 948, 956, 958, 950, 957, 949, + 951, 952, 958, 959, 960, 954, 961, 957, 959, 956, + 960, 963, 961, 955, 964, 965, 963, 966, 969, 970, + 964, 967, 972, 975, 970, 973, 973, 974, 971, 976, + 969, 975, 974, 977, 972, 980, 966, 965, 978, 967, + 968, 968, 971, 979, 981, 976, 968, 977, 968, 983, + 981, 980, 984, 982, 968, 985, 986, 978, 982, 968, + 968, 983, 979, 987, 988, 988, 968, 990, 989, 992, + 984, 985, 989, 993, 986, 992, 993, 994, 995, 996, + 997, 987, 999, 995, 998, 1001, 997, 990, 1002, 998, - 1001, 1004, 993, 1005, 997, 1001, 1008, 1006, 1009, 1007, - 1012, 1000, 1008, 1003, 1010, 1005, 1006, 1002, 1007, 1014, - 1010, 1004, 1015, 1016, 1017, 1009, 1012, 1018, 1016, 1019, - 1020, 1021, 1022, 1014, 1025, 1026, 1021, 1022, 1030, 1025, - 1028, 1018, 1015, 1017, 1026, 1020, 1028, 1019, 1027, 1027, - 1029, 1031, 1033, 1030, 1037, 1034, 1038, 1037, 1039, 1029, - 1034, 1034, 1036, 1036, 1031, 1040, 1036, 1041, 1033, 1042, - 1038, 1043, 1045, 1044, 1046, 1047, 1052, 1049, 1039, 1044, - 1046, 1040, 1042, 1048, 1051, 1041, 1043, 1051, 1048, 1053, - 1047, 1049, 1045, 1054, 1053, 1055, 1056, 1052, 1054, 1057, + 1003, 1005, 996, 1004, 1001, 1006, 994, 1002, 1007, 1004, + 1005, 999, 1008, 1007, 1009, 1010, 1003, 1011, 1012, 1014, + 1015, 1013, 1018, 1021, 1006, 1014, 1020, 1012, 1009, 1011, + 1013, 1022, 1008, 1016, 1023, 1010, 1022, 1015, 1018, 1016, + 1020, 1024, 1025, 1021, 1026, 1027, 1028, 1031, 1032, 80, + 1027, 1028, 1031, 1023, 1035, 1024, 1036, 1032, 1034, 1026, + 1025, 1033, 1033, 1035, 1034, 1037, 1039, 1040, 1045, 1044, + 1046, 1036, 1040, 1040, 1043, 1042, 1042, 1043, 1037, 1042, + 1047, 1048, 1039, 1044, 1049, 1050, 1046, 1051, 1045, 1052, + 1053, 1050, 1054, 1058, 1048, 1052, 1055, 1054, 1047, 1049, - 1059, 1058, 1061, 1062, 1057, 1056, 1058, 1063, 1061, 1064, - 1067, 1055, 1059, 1063, 1066, 1064, 1065, 1065, 1068, 1062, - 1070, 1068, 1071, 1066, 1069, 1069, 1072, 1073, 1067, 1074, - 1073, 1075, 1133, 1076, 1133, 1077, 1085, 1075, 1070, 1076, - 1077, 1071, 1074, 1078, 1079, 1081, 1072, 1080, 1078, 1083, - 1079, 1081, 1080, 1084, 1083, 1086, 1085, 1087, 1088, 1088, - 1089, 1086, 1087, 1090, 1091, 1092, 1095, 1093, 1097, 1089, - 1093, 1084, 1090, 1094, 1096, 1098, 1094, 1095, 1099, 1096, - 1102, 1105, 1091, 1100, 1092, 1101, 1097, 1098, 1103, 1100, - 1106, 1101, 1108, 1103, 1107, 1102, 1110, 1099, 1104, 1104, + 1057, 1059, 1061, 1057, 1060, 1053, 1059, 1051, 1062, 1060, + 1055, 1063, 1065, 1067, 1058, 1064, 1063, 1062, 1061, 1067, + 1064, 1068, 1069, 1070, 1065, 1071, 1071, 1072, 1069, 1070, + 1073, 1074, 1075, 1075, 1074, 1076, 1072, 1068, 1077, 1078, + 1079, 1080, 1083, 1079, 1081, 1082, 1085, 1083, 1073, 1091, + 1081, 1082, 1085, 1076, 1080, 1084, 1086, 1077, 1087, 1078, + 1084, 1086, 1089, 1090, 1087, 1092, 1097, 1089, 1093, 1091, + 1095, 1092, 1098, 1093, 1094, 1094, 1096, 1099, 1101, 1095, + 1099, 1090, 1102, 1100, 1097, 1096, 1100, 1102, 1103, 1101, + 1104, 1098, 1105, 1106, 1107, 1108, 1109, 1110, 1110, 1106, - 1105, 1109, 1111, 1112, 1106, 1109, 1107, 1113, 1115, 1117, - 1108, 1111, 1116, 1116, 1110, 1118, 1119, 1117, 1120, 1122, - 1118, 1119, 1112, 1124, 1123, 1125, 1128, 1115, 1126, 1131, - 1125, 1158, 1113, 1122, 1158, 1124, 1129, 1126, 1120, 1123, - 1127, 1127, 1129, 1130, 1135, 1131, 1128, 1132, 1134, 1130, - 1136, 1137, 1132, 1134, 1138, 1139, 1137, 1141, 1135, 1140, - 1142, 1144, 1144, 1145, 1136, 1146, 1140, 1147, 1149, 1138, - 1148, 1152, 1141, 1150, 1139, 1152, 1148, 1145, 1150, 1142, - 1153, 1153, 1147, 1146, 1156, 1154, 1157, 1150, 1149, 1150, - 1154, 1156, 1150, 1155, 1155, 1159, 1161, 1160, 1162, 1163, + 1107, 1109, 1104, 1111, 1112, 1113, 1103, 1114, 1115, 1116, + 1108, 1105, 1115, 1118, 1117, 1119, 1121, 1113, 1112, 1122, + 1122, 1123, 1111, 1117, 1126, 1114, 1124, 1116, 1125, 1123, + 1129, 1124, 1118, 1125, 1128, 1121, 1131, 1130, 1132, 1134, + 1119, 1131, 1133, 1133, 1126, 1129, 1135, 1132, 1128, 1130, + 1136, 1137, 1135, 1138, 1141, 1139, 1136, 1139, 1138, 1134, + 1140, 1142, 1144, 1145, 1143, 1140, 1146, 1137, 1141, 1143, + 1147, 1148, 1151, 1146, 1152, 1142, 1153, 1144, 1150, 1150, + 1155, 1154, 1145, 1156, 75, 1147, 1151, 1154, 1156, 1158, + 1148, 1153, 1152, 1158, 1159, 1159, 1160, 1156, 1162, 1156, - 1157, 1164, 1165, 1162, 1168, 1161, 1166, 1165, 1167, 1170, - 1170, 1171, 1172, 1164, 1159, 1160, 1171, 1172, 1163, 1167, - 1166, 1173, 1174, 1168, 1175, 1176, 1180, 1174, 1175, 1177, - 1178, 1179, 1181, 1182, 1176, 1184, 1183, 1185, 1180, 1186, - 1182, 1173, 1189, 1187, 1177, 1178, 1188, 1181, 1183, 1187, - 1179, 1190, 1192, 1193, 1184, 1191, 1194, 1186, 1185, 1195, - 1196, 1188, 1189, 1198, 1191, 1197, 1201, 1192, 1194, 1200, - 1202, 1190, 1193, 1204, 1203, 1200, 1205, 1207, 1195, 1209, - 1197, 1201, 1203, 1198, 1202, 1196, 1206, 1210, 1288, 1207, - 1208, 1206, 1205, 1204, 1211, 1208, 1208, 1214, 1209, 1212, + 1155, 1160, 1156, 1161, 1161, 1162, 1163, 1164, 1165, 1167, + 1164, 1166, 1168, 1169, 1170, 74, 1171, 1168, 1167, 1172, + 1163, 1171, 1174, 1173, 1176, 1176, 1170, 1165, 1179, 1166, + 1177, 1178, 1169, 1172, 1173, 1177, 1178, 1180, 1182, 1181, + 1183, 1174, 1180, 1181, 1184, 1185, 1186, 1182, 1179, 1188, + 1187, 1189, 1190, 1191, 1192, 1183, 1188, 1196, 1186, 1184, + 1193, 1194, 1195, 1189, 1185, 1187, 1193, 1197, 1195, 1198, + 1199, 1190, 1192, 1200, 1191, 1202, 1194, 1196, 1198, 1201, + 1203, 1204, 1205, 1206, 1208, 1199, 1209, 1197, 1205, 1211, + 1208, 1201, 1200, 1210, 1202, 1212, 1204, 1211, 1213, 1214, - 1212, 1210, 1215, 1217, 1217, 1288, 1216, 1211, 1213, 1213, - 1214, 1215, 1216, 1213, 1218, 1219, 1213, 1213, 1221, 1218, - 1220, 1213, 1224, 1221, 1219, 1222, 1220, 1213, 1223, 1223, - 1222, 1213, 1225, 1225, 1226, 1227, 1228, 1226, 1229, 1226, - 1230, 1231, 1232, 1224, 1229, 1233, 1234, 1232, 1237, 1230, - 1235, 1236, 1241, 1237, 1228, 1227, 1235, 1236, 1238, 1233, - 1239, 1231, 1238, 1240, 1234, 1252, 1241, 1247, 1240, 1239, - 1242, 1242, 1243, 1243, 1239, 1243, 1239, 1244, 1239, 1246, - 1239, 1248, 1247, 1246, 1249, 1250, 1251, 1252, 1244, 1253, - 1250, 1250, 1254, 1249, 1253, 1251, 1255, 1256, 1257, 1248, + 1215, 1209, 1217, 1206, 1214, 1203, 1218, 1210, 1281, 1219, + 1281, 1216, 1215, 1222, 1213, 1212, 1216, 1216, 1220, 1220, + 1218, 1217, 1219, 1221, 1221, 1223, 1222, 1224, 1221, 1225, + 1225, 1221, 1221, 1224, 1223, 1226, 1221, 1228, 1227, 1229, + 1226, 1232, 1221, 1228, 1229, 1230, 1221, 1227, 1231, 1231, + 1230, 1233, 1233, 1234, 1235, 1236, 1234, 1237, 1234, 1238, + 1239, 1240, 1232, 1237, 1241, 1242, 1240, 1245, 1238, 1243, + 1244, 1249, 1245, 1236, 1235, 1243, 1244, 1246, 1241, 1247, + 1239, 1246, 1248, 1242, 1260, 1249, 1255, 1248, 1247, 1250, + 1250, 1251, 1251, 1247, 1251, 1247, 1252, 1247, 1254, 1247, - 1258, 1259, 1260, 1260, 1261, 1255, 1254, 1259, 1262, 1264, - 1263, 1265, 1261, 1267, 1258, 1263, 1256, 1257, 1266, 1268, - 1265, 1269, 1262, 1264, 1271, 1266, 1269, 1270, 1270, 1272, - 1272, 1267, 1273, 1275, 1273, 1276, 1275, 1277, 1278, 1271, - 1276, 1279, 1279, 1280, 1268, 1281, 1281, 1278, 1282, 1282, - 1283, 1284, 1285, 1286, 1286, 1283, 1277, 1287, 1289, 1290, - 1291, 1289, 1292, 1280, 1295, 1293, 1291, 1292, 1294, 1298, - 1294, 1299, 1284, 1285, 1293, 1297, 1299, 1287, 1297, 1290, - 1300, 1301, 1295, 1302, 1298, 1303, 1301, 1308, 1305, 1304, - 1303, 1302, 1304, 1305, 1300, 1306, 1306, 1307, 1309, 1310, + 1256, 1255, 1254, 1257, 1258, 1259, 1260, 1252, 1261, 1258, + 1258, 1262, 1257, 1261, 1259, 1263, 1264, 1265, 1256, 1266, + 1267, 1268, 1268, 1269, 1263, 1262, 1267, 1270, 1272, 1271, + 1273, 1269, 1275, 1266, 1271, 1264, 1265, 1274, 1276, 1273, + 1277, 1270, 1272, 1279, 1274, 1277, 1278, 1278, 1280, 1280, + 1275, 1283, 1284, 1285, 1283, 1286, 1288, 1284, 1279, 1287, + 1287, 1289, 1289, 1276, 1286, 1290, 1290, 1292, 1291, 1293, + 1294, 1294, 1285, 1291, 1295, 1296, 1288, 1297, 1298, 1299, + 1297, 1300, 1301, 1303, 1306, 1299, 1300, 1302, 1292, 1302, + 1293, 1301, 1296, 1305, 1295, 1307, 1305, 1308, 1298, 1306, - 1311, 1313, 1307, 1314, 1309, 1308, 1310, 1313, 1317, 1314, - 1315, 1316, 1318, 1311, 1317, 1315, 1316, 1319, 1320, 1321, - 1321, 1318, 1322, 1324, 1326, 1325, 1327, 1328, 1324, 1320, - 1329, 1330, 1331, 1332, 1326, 1335, 1319, 1330, 1331, 1332, - 1334, 1327, 1322, 1325, 1336, 1337, 1334, 1328, 1338, 1335, - 1340, 1342, 1339, 1329, 1343, 1335, 1341, 1341, 1344, 1347, - 1338, 1350, 1345, 1352, 1336, 1337, 1339, 1345, 1340, 1346, - 1346, 1342, 1348, 74, 1355, 1356, 1344, 1348, 1351, 1343, - 1350, 1352, 1347, 1351, 1351, 1353, 1357, 1354, 1355, 1359, - 1356, 1358, 1361, 1367, 1353, 1354, 1358, 1363, 1359, 1358, + 1307, 1303, 1309, 1311, 1310, 1313, 1312, 1309, 1311, 1312, + 1313, 1308, 1310, 1314, 1314, 1315, 1316, 1317, 1318, 1319, + 1315, 1321, 1322, 1317, 1323, 1318, 1324, 1321, 1322, 1323, + 1325, 1324, 1319, 1326, 1316, 1327, 1325, 1328, 1329, 1329, + 1330, 1332, 1326, 1333, 1335, 1334, 1332, 1336, 1328, 1337, + 1338, 1339, 1340, 1344, 1327, 1334, 1338, 1339, 1340, 1335, + 1330, 1333, 1342, 1343, 1345, 1347, 1346, 1336, 1342, 1348, + 1349, 1349, 1337, 1344, 1350, 1351, 1353, 1343, 1346, 1347, + 1352, 1353, 1355, 1343, 1345, 1354, 1354, 1348, 1356, 1358, + 1359, 1360, 1361, 1356, 1350, 1359, 1359, 1363, 1352, 1362, - 1360, 1357, 1360, 1363, 1357, 1364, 1361, 1365, 1366, 1364, - 1368, 1369, 1367, 1366, 1366, 1370, 1371, 1372, 1365, 1373, - 1370, 1371, 1374, 1375, 1377, 68, 1378, 1374, 1379, 1369, - 1380, 1380, 1382, 1381, 1383, 1372, 1368, 1381, 1377, 1373, - 1385, 1384, 1386, 1375, 1378, 1387, 1379, 1384, 1388, 1389, - 1382, 1390, 1385, 1383, 1394, 1391, 1397, 1393, 1392, 1387, - 1391, 1386, 1393, 1388, 1389, 1392, 1395, 1396, 1396, 1398, - 1390, 1397, 1394, 1399, 1401, 1395, 1400, 1400, 1398, 1402, - 1401, 1403, 1404, 1404, 1405, 1402, 1406, 1407, 63, 1408, - 1405, 1409, 1410, 1399, 1408, 1403, 1418, 1409, 1410, 1411, + 1351, 1361, 1364, 1365, 1367, 1355, 1369, 1362, 1358, 1360, + 1368, 1363, 1368, 1367, 1366, 1373, 1375, 1364, 1365, 1366, + 1369, 1365, 1366, 1371, 1372, 1374, 1373, 1376, 1372, 1371, + 1374, 1374, 1377, 1378, 1379, 1375, 1380, 1381, 1378, 1379, + 1382, 1383, 1385, 68, 1386, 1382, 1387, 1388, 1388, 1390, + 1377, 1389, 1391, 1376, 1380, 1389, 1385, 1381, 1393, 1392, + 1394, 1383, 1386, 1395, 1387, 1392, 1396, 1390, 1397, 1398, + 1393, 1391, 1402, 1399, 1403, 1400, 1406, 1395, 1399, 1394, + 1401, 1396, 1400, 1397, 1404, 1401, 1405, 1405, 1398, 1407, + 1402, 1406, 1408, 1404, 1410, 1403, 1409, 1409, 1407, 1411, - 1412, 1412, 1406, 1413, 1413, 1411, 1415, 1415, 1407, 1416, - 1417, 1419, 1420, 1416, 1418, 1421, 1424, 1422, 1427, 1417, - 1423, 1423, 1426, 1419, 1422, 1425, 1420, 1426, 1428, 1429, - 1421, 1431, 1427, 1425, 1429, 1429, 1424, 1430, 1432, 1432, - 1433, 1434, 1430, 1430, 1435, 1436, 1437, 1428, 1438, 1439, - 1436, 1431, 1440, 1435, 1442, 1443, 1441, 1444, 1440, 1433, - 1434, 1441, 1469, 1444, 1445, 1437, 1446, 1439, 1438, 1447, - 1448, 1449, 1446, 1450, 1442, 1447, 1451, 1452, 1453, 1454, - 1469, 1443, 1457, 1445, 1455, 1455, 1458, 58, 1459, 1448, - 1449, 1452, 1450, 1456, 1454, 1451, 1456, 1460, 1460, 1453, + 1410, 1412, 1413, 1413, 1415, 1411, 1414, 1414, 1416, 1417, + 1415, 1418, 1408, 1419, 1420, 1412, 1418, 1421, 1428, 1419, + 1420, 1422, 1422, 1421, 1416, 1423, 1423, 1425, 1425, 1426, + 1417, 1427, 1429, 1426, 1430, 1431, 1428, 1434, 1432, 1435, + 1427, 1433, 1433, 1438, 1429, 1432, 1436, 1435, 1430, 1437, + 1431, 1436, 1441, 1439, 1443, 1440, 1444, 1434, 1439, 1439, + 1440, 1440, 1438, 1437, 1442, 1442, 1446, 1445, 1447, 1448, + 1449, 1446, 1441, 1443, 1450, 1444, 1445, 1451, 1452, 1453, + 1450, 1455, 1451, 1458, 1454, 1456, 1457, 1447, 1449, 1448, + 1454, 1456, 1457, 1459, 1460, 1461, 1462, 1463, 1452, 1469, - 1459, 1457, 1461, 1461, 1462, 1458, 1463, 1464, 1465, 1462, - 1463, 1466, 1467, 1471, 1467, 1472, 1470, 1465, 1467, 1477, - 1464, 1470, 1473, 1476, 1466, 1474, 1474, 1475, 1471, 1476, - 1478, 1467, 1475, 1480, 1477, 1472, 1479, 1480, 1473, 1482, - 1481, 1479, 1483, 1478, 1481, 1484, 1485, 1486, 1487, 1487, - 1489, 1491, 1492, 1486, 1484, 1493, 1493, 1492, 1494, 1482, - 1483, 1495, 1497, 1497, 1494, 1505, 1485, 1499, 1489, 1501, - 1499, 1502, 1491, 1500, 1500, 1504, 1506, 1508, 1504, 1507, - 1510, 1495, 1509, 1509, 1511, 1501, 1505, 1502, 1507, 1512, - 1514, 1515, 1515, 1513, 1516, 1510, 1506, 1508, 1513, 1517, + 1455, 1464, 1458, 1465, 1465, 1453, 1466, 1467, 1468, 1466, + 1462, 1469, 1459, 1460, 1461, 1475, 1464, 1474, 1463, 1470, + 1470, 1471, 1471, 1472, 1475, 1473, 1467, 1468, 1472, 1473, + 1474, 1476, 1477, 1481, 1477, 1479, 1480, 1482, 1477, 1483, + 1485, 1480, 1484, 1484, 1476, 1485, 1486, 1487, 1481, 1489, + 1488, 1477, 1486, 1479, 1489, 1483, 1490, 1482, 1492, 1493, + 1490, 1491, 1487, 1488, 1494, 1491, 1495, 1499, 1496, 1497, + 1497, 1501, 63, 1494, 1496, 1502, 1505, 1493, 1492, 1516, + 1502, 1503, 1503, 1504, 1511, 1499, 1495, 1507, 1507, 1504, + 1509, 1512, 1501, 1509, 1510, 1510, 1505, 1515, 1514, 1516, - 1518, 1519, 1520, 1516, 1514, 1511, 1521, 1521, 1512, 1522, - 1523, 1524, 1525, 1526, 1526, 1518, 1524, 1517, 1528, 1530, - 1527, 1531, 1520, 1522, 1527, 1532, 1519, 1525, 1523, 1529, - 1529, 1533, 1534, 1539, 1535, 1533, 1532, 1541, 1528, 1535, - 1531, 1530, 1537, 1537, 1538, 1540, 1539, 1538, 1542, 1543, - 1540, 1534, 1544, 1541, 1545, 1546, 1547, 1547, 1549, 1548, - 57, 1550, 1553, 1543, 1548, 1552, 1542, 1553, 1545, 1551, - 1551, 1544, 1544, 1554, 1552, 1555, 1557, 1555, 1549, 1556, - 1546, 1550, 1557, 1558, 1556, 1559, 1561, 1562, 1562, 1563, - 1564, 1559, 1566, 1554, 1567, 1570, 1564, 1566, 1568, 1568, + 1511, 1514, 1517, 1518, 1519, 1519, 1520, 1512, 1521, 1522, + 1523, 1517, 1524, 1525, 1525, 1523, 1526, 1527, 1515, 1528, + 1529, 1520, 1530, 1518, 1532, 1526, 1524, 1540, 1522, 1521, + 1531, 1531, 1533, 1535, 1528, 1527, 1534, 1538, 1532, 1536, + 1536, 1534, 1530, 1537, 1541, 1529, 1544, 1537, 1535, 1540, + 1533, 1539, 1539, 1542, 1543, 1545, 1548, 1538, 1543, 1548, + 1545, 1547, 1547, 1541, 1542, 1544, 1549, 1550, 1551, 1552, + 1554, 1553, 1550, 1556, 1555, 1557, 1557, 1558, 1563, 1549, + 1559, 1560, 1558, 1563, 1551, 1553, 1562, 1552, 1555, 1554, + 1554, 1561, 1561, 1564, 1565, 1562, 1565, 1566, 1556, 1567, - 1561, 1569, 1569, 1558, 1571, 1572, 1575, 1573, 1563, 1570, - 1573, 1574, 1574, 1576, 1577, 1579, 1581, 1585, 1567, 1581, - 1572, 1579, 1571, 1578, 1575, 1576, 1578, 1580, 1583, 1578, - 1586, 1584, 1580, 1586, 1577, 1581, 1584, 1583, 1587, 1587, - 1588, 1578, 1585, 1589, 1595, 1590, 1588, 1591, 1591, 1589, - 1590, 1592, 1592, 1593, 1596, 1594, 1597, 1595, 1598, 1593, - 1594, 1599, 1600, 1601, 1599, 1602, 1604, 1603, 1600, 1601, - 1602, 1605, 1596, 1603, 1608, 1597, 1605, 1607, 1598, 1606, - 1606, 1609, 1607, 1610, 1611, 1612, 1613, 1614, 1615, 1604, - 1616, 1617, 1608, 1617, 1616, 1618, 1620, 1621, 1611, 1612, + 1559, 1560, 1566, 1568, 1569, 1567, 1571, 1572, 1572, 1573, + 1569, 1574, 1577, 1564, 1576, 1578, 1578, 1574, 1580, 1576, + 1571, 1579, 1579, 1568, 1581, 1582, 1583, 1585, 1573, 1583, + 1584, 1584, 1580, 1587, 1586, 1595, 1577, 1589, 1588, 58, + 1582, 1588, 1581, 1589, 1588, 1585, 1586, 1590, 1591, 1593, + 1594, 1591, 1590, 1587, 1596, 1594, 1588, 1596, 1593, 1598, + 1595, 1597, 1597, 1599, 1603, 1598, 1600, 1591, 1606, 1599, + 1603, 1600, 1601, 1601, 1602, 1602, 1604, 1605, 1607, 1608, + 1609, 1604, 1610, 1609, 1612, 1611, 1606, 1613, 1610, 1612, + 1605, 1611, 1614, 1613, 1618, 1615, 1619, 1607, 1617, 1608, - 1613, 1609, 1622, 1610, 1623, 1614, 1624, 1625, 1620, 1621, - 1623, 1626, 1628, 1615, 1618, 1622, 1627, 1630, 1630, 1631, - 1632, 1635, 1633, 1625, 1636, 1632, 1624, 1634, 1634, 1637, - 1627, 1626, 1638, 1628, 1633, 1639, 1635, 1640, 1636, 1631, - 1641, 1643, 1642, 1645, 1639, 1647, 1648, 1641, 1652, 1648, - 1638, 1642, 1640, 1637, 1642, 1649, 1649, 1643, 1645, 1650, - 1650, 1651, 1653, 1645, 1655, 1653, 1652, 1654, 1654, 1656, - 1647, 1657, 1658, 1651, 1659, 1658, 1657, 1655, 1660, 1659, - 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1667, 1656, 1668, - 1662, 1666, 1664, 1665, 1669, 1664, 1661, 1660, 1670, 1671, + 1615, 1616, 1616, 1617, 1620, 1621, 1622, 1623, 1624, 1625, + 1626, 1629, 1618, 1627, 1636, 1614, 1619, 1627, 1638, 1632, + 1622, 1623, 1624, 1620, 1628, 1621, 1628, 1625, 1633, 1630, + 1629, 1632, 1634, 1635, 1636, 1626, 1630, 1637, 1638, 1635, + 1633, 1639, 1640, 1642, 1642, 1634, 1643, 1644, 1645, 1646, + 1646, 1648, 1644, 1637, 1647, 1639, 1649, 1650, 1651, 1652, + 1645, 1653, 1655, 1640, 1654, 1648, 1643, 1651, 1653, 1647, + 1657, 1659, 57, 1654, 1652, 1650, 1654, 1663, 1655, 1660, + 1649, 1664, 1660, 1661, 1661, 1657, 1662, 1662, 1665, 1663, + 1657, 1665, 1666, 1666, 1667, 1668, 1659, 1669, 1670, 1664, - 1673, 1663, 1672, 1674, 1678, 1673, 1673, 1669, 1674, 1668, - 1675, 1681, 1679, 1671, 1680, 1680, 1670, 1682, 1672, 1683, - 1684, 1684, 1675, 1686, 1683, 1685, 1682, 1681, 1686, 1678, - 1679, 1687, 1688, 1689, 1685, 1684, 1690, 1685, 1692, 1693, - 1694, 1690, 1690, 1695, 1696, 1697, 1698, 1698, 1695, 1687, - 1696, 1689, 1692, 1688, 1693, 1699, 1701, 1705, 1706, 1700, - 1702, 1699, 1694, 1697, 1700, 1703, 1702, 1707, 1708, 1714, - 1701, 1703, 1706, 1707, 1710, 1709, 1715, 1705, 1709, 1712, - 1710, 1708, 1716, 1718, 1709, 1719, 1717, 1712, 1714, 1722, - 1716, 1717, 1718, 1720, 1721, 1715, 1723, 1729, 1719, 1724, + 1671, 1670, 1669, 1672, 1673, 1671, 1674, 1667, 1675, 1676, + 1677, 1678, 1679, 1679, 1668, 1674, 1680, 1678, 1676, 1677, + 1673, 1676, 1672, 1682, 1681, 1683, 1684, 1675, 1685, 1690, + 1686, 1687, 1691, 1685, 1685, 1686, 1680, 1681, 1694, 1683, + 1693, 1682, 1684, 1687, 1692, 1692, 1695, 1694, 1696, 1696, + 1691, 1695, 1697, 1698, 1690, 1699, 1693, 1700, 1698, 1701, + 1702, 1697, 1704, 1696, 1697, 1702, 1702, 1705, 1706, 1707, + 1709, 1710, 1710, 1699, 1707, 1708, 1704, 1701, 1700, 1711, + 1713, 1708, 1705, 1717, 1712, 1711, 1714, 1715, 1709, 1712, + 1706, 1718, 1714, 1715, 1713, 1719, 1720, 1721, 1722, 1724, - 1724, 1727, 1720, 1722, 1730, 1725, 1726, 1721, 1728, 1728, - 1723, 1725, 1726, 1731, 1727, 1732, 1732, 1729, 1733, 1734, - 1735, 1724, 1730, 1736, 1747, 1734, 1737, 1739, 1739, 1740, - 1741, 1733, 1731, 1742, 1741, 1743, 1744, 1746, 1742, 1736, - 1745, 1744, 1735, 1749, 1737, 1745, 1746, 1747, 1750, 1740, - 1751, 1752, 1753, 1751, 1749, 1743, 1755, 1750, 1754, 1754, - 1756, 1757, 1759, 1752, 1758, 1758, 1760, 1753, 1764, 1761, - 1762, 1765, 1756, 1760, 1767, 1755, 1759, 1766, 1768, 1769, - 1757, 1761, 1762, 1766, 52, 1769, 1767, 1764, 1770, 1770, - 1771, 1765, 1774, 1771, 1772, 1772, 1768, 1774, 1775, 1776, + 1721, 1719, 1726, 1717, 1722, 1718, 1721, 1724, 1727, 1720, + 1728, 1729, 1731, 1730, 1732, 1733, 1729, 1734, 1728, 1735, + 1737, 1726, 1730, 1732, 1739, 1731, 1737, 1727, 1733, 1736, + 1736, 1734, 1738, 1735, 1740, 1740, 1741, 1739, 1738, 1742, + 1743, 1744, 1744, 1746, 1747, 1745, 1748, 1749, 1752, 1746, + 1753, 1736, 1751, 1751, 1753, 1754, 1741, 1742, 1745, 1743, + 1754, 1755, 1748, 1759, 1756, 1749, 1747, 1757, 1752, 1756, + 1758, 1761, 1757, 1763, 1762, 1764, 1763, 1765, 1767, 1758, + 1769, 1755, 1761, 1762, 1766, 1766, 1759, 1764, 1768, 1770, + 1770, 1771, 1765, 1776, 1772, 1773, 1774, 1767, 1777, 1769, - 1777, 1777, 1778, 1781, 1779, 1776, 1779, 1775, 1780, 1782, - 1783, 1780, 1784, 1785, 1778, 1786, 1787, 1788, 1785, 1789, - 1786, 1790, 1792, 1781, 1791, 1787, 1790, 1793, 1783, 1788, - 1784, 1782, 1793, 1791, 1789, 1794, 1795, 1796, 1796, 1793, - 1794, 1797, 1792, 1798, 1800, 1802, 1791, 1797, 1801, 1803, - 1804, 1795, 1804, 1809, 1805, 1806, 1806, 1807, 1807, 1808, - 1808, 1802, 1812, 1800, 1798, 1810, 1810, 1801, 1805, 1803, - 1805, 1811, 1811, 1809, 1813, 1814, 1814, 1815, 1816, 1817, - 1819, 1815, 1817, 1812, 1816, 1820, 1819, 1821, 1822, 1823, - 1824, 1824, 1823, 1821, 1825, 1813, 1826, 1827, 1827, 1829, + 1768, 1772, 1779, 1778, 1780, 1771, 1786, 1773, 1774, 1778, + 1781, 1786, 1776, 1791, 1779, 1791, 1781, 1793, 1777, 1782, + 1782, 1783, 1780, 1787, 1783, 1784, 1784, 1788, 1789, 1789, + 1790, 1792, 1787, 1788, 1792, 1794, 1795, 1793, 1796, 1797, + 1798, 1799, 1790, 1800, 1797, 1798, 1801, 1802, 1804, 1803, + 1799, 1807, 1802, 1810, 1795, 1800, 1796, 1794, 1803, 1806, + 1805, 1801, 1808, 1808, 1806, 1805, 1807, 1809, 1804, 1812, + 1813, 1803, 1805, 1809, 1810, 1814, 1815, 1816, 1817, 1816, + 1818, 1818, 1819, 1819, 1820, 1820, 1821, 1824, 1812, 1813, + 1825, 1814, 1817, 1835, 1817, 1838, 1815, 1822, 1822, 1823, - 1828, 1826, 1830, 1820, 1831, 1831, 1832, 1830, 1836, 1834, - 1833, 1832, 1835, 1822, 1825, 1828, 1833, 1837, 1838, 1839, - 1829, 1834, 1834, 1834, 1838, 1841, 1836, 1842, 1834, 1843, - 1841, 1841, 1835, 1844, 1845, 1844, 1846, 1837, 1848, 1839, - 1847, 1842, 1849, 1850, 1843, 1845, 1847, 1848, 1851, 1851, - 1852, 1846, 1853, 1853, 1854, 1855, 1856, 1856, 1857, 1857, - 1858, 1862, 1849, 1863, 1850, 1861, 1861, 1866, 1868, 1865, - 1869, 1869, 1863, 1867, 1854, 1870, 1852, 1855, 1865, 1867, - 1858, 1874, 1871, 1872, 1868, 1873, 1862, 1876, 1866, 1877, - 1872, 1875, 1875, 1879, 1873, 1880, 1870, 1871, 1879, 1881, + 1823, 1826, 1826, 1827, 1828, 1832, 1821, 1827, 1824, 1829, + 1828, 1825, 1829, 1831, 1833, 1838, 1834, 1841, 1835, 1831, + 1833, 1834, 1836, 1832, 1839, 1836, 1837, 1837, 1842, 1839, + 1840, 1840, 1841, 1843, 1844, 1845, 1845, 1846, 1843, 1844, + 1847, 1848, 1846, 1849, 1850, 1851, 1847, 1853, 52, 1842, + 1852, 1857, 1855, 1848, 1848, 1848, 1852, 1855, 1855, 1856, + 1848, 1859, 1850, 1849, 1860, 1851, 1857, 1853, 1858, 1861, + 1858, 1862, 1859, 1856, 1863, 1861, 1864, 1865, 1865, 1860, + 1862, 1866, 1867, 1867, 1868, 1872, 1869, 1870, 1870, 1871, + 1871, 1875, 1875, 1876, 1863, 1880, 1881, 1864, 1882, 1884, - 1883, 1880, 1882, 1886, 1891, 1877, 1883, 1874, 1884, 1882, - 1884, 1887, 1892, 1876, 1888, 1888, 1889, 1887, 1890, 1881, - 1893, 1889, 1886, 1894, 1891, 1895, 1894, 1890, 1896, 1897, - 1897, 1892, 1893, 1898, 1899, 1900, 1901, 1902, 1904, 1898, - 1899, 1902, 1905, 1895, 1906, 1907, 1907, 1908, 1909, 1906, - 1911, 1901, 1912, 1915, 1896, 1900, 1912, 1902, 1904, 1913, - 1913, 1914, 1915, 1909, 1905, 1918, 1908, 1914, 1917, 1911, - 1916, 1916, 1917, 1919, 1919, 1920, 1918, 1921, 1922, 1923, - 1924, 1918, 1925, 1926, 1923, 1927, 1928, 1929, 1954, 1926, - 1937, 1921, 1929, 1930, 1931, 1931, 1920, 1922, 1932, 1932, + 1877, 1879, 1881, 1888, 1868, 1872, 1885, 1866, 1869, 1877, + 1879, 1883, 1883, 1890, 1882, 1886, 1880, 1887, 1876, 1891, + 1884, 1885, 1886, 1889, 1889, 1893, 1887, 1894, 1895, 1888, + 1893, 1896, 1900, 1894, 1897, 1891, 1901, 1904, 1896, 1890, + 1897, 1898, 1901, 1898, 1902, 1902, 1904, 1903, 1895, 1905, + 1907, 1900, 1903, 1906, 1908, 1909, 1910, 1908, 1911, 1911, + 1912, 1913, 1907, 1914, 1915, 1918, 1912, 1913, 1922, 1905, + 1916, 1919, 1906, 1909, 1916, 1920, 1921, 1921, 1925, 1915, + 1920, 1923, 1910, 1914, 1926, 1918, 1934, 1922, 1926, 1928, + 1916, 1927, 1927, 1919, 1929, 1928, 1923, 1925, 1930, 1930, - 1924, 1928, 1925, 1927, 1933, 1935, 1930, 1936, 1933, 1945, - 1937, 1938, 1938, 1954, 1935, 1940, 1940, 1946, 1936, 1941, - 1942, 1944, 1946, 1936, 1941, 1941, 1942, 1944, 1947, 1950, - 1948, 1952, 1956, 1951, 1959, 1945, 1948, 1951, 1953, 1953, - 1947, 1950, 1955, 1952, 1957, 1958, 1958, 1960, 1955, 1962, - 1957, 1961, 1964, 1959, 1956, 1965, 1961, 1966, 1969, 1969, - 1968, 1962, 1966, 1968, 1964, 1970, 1970, 1960, 1971, 1971, - 1972, 1973, 1974, 1976, 1965, 1975, 1977, 1973, 1974, 1976, - 1975, 1979, 1982, 1985, 1981, 1977, 1979, 1981, 1983, 1983, - 1972, 1986, 1987, 1989, 1982, 1985, 1990, 1987, 1988, 1988, + 1931, 1932, 1935, 1929, 1931, 1933, 1933, 1934, 1936, 1937, + 1938, 1939, 1932, 1940, 1937, 1941, 1935, 1932, 1943, 1940, + 1942, 1944, 1947, 1943, 1945, 1945, 1947, 1936, 1946, 1946, + 1938, 1939, 1949, 1941, 1944, 1942, 1950, 1951, 1952, 1952, + 1955, 1949, 1954, 1954, 1956, 1955, 1955, 1950, 1958, 1959, + 1956, 1960, 1950, 1961, 1958, 1962, 1960, 1951, 1964, 1965, + 1966, 1962, 1968, 1965, 1970, 1961, 1967, 1967, 1969, 1973, + 1964, 1971, 1966, 1974, 1969, 1959, 1975, 1971, 1972, 1972, + 1976, 1975, 1978, 1979, 1980, 1986, 1970, 1968, 1973, 1980, + 1983, 1983, 1976, 1974, 1978, 1982, 1984, 1984, 1982, 1985, - 1991, 1990, 1989, 1986, 1992, 1991, 1994, 1992, 1993, 1993, - 1995, 1996, 1997, 1998, 2001, 1999, 2000, 1998, 2002, 1995, - 1999, 2003, 2000, 2004, 2006, 2006, 1994, 2002, 2007, 1996, - 2009, 1997, 2001, 2008, 2010, 2010, 2006, 2004, 2011, 2003, - 2012, 2013, 2008, 2014, 2015, 2021, 2007, 2011, 2014, 2022, - 2009, 2024, 2012, 2018, 2018, 2020, 2025, 2015, 2020, 2027, - 2036, 2021, 2013, 2026, 2031, 2022, 2024, 2028, 2028, 2026, - 2025, 2029, 2031, 2029, 2030, 2030, 2027, 2033, 2033, 2034, - 2034, 2037, 2038, 2036, 2039, 2040, 2041, 2037, 2038, 2042, - 2042, 2039, 2043, 2044, 2049, 2047, 2045, 2046, 2050, 2048, + 1985, 1987, 1979, 1988, 1990, 1986, 1989, 1987, 1991, 1988, + 1990, 1989, 1995, 1993, 1996, 1995, 1999, 1991, 1993, 1997, + 1997, 2000, 2001, 2002, 2002, 2003, 1996, 2001, 1999, 2006, + 2004, 2005, 2006, 2000, 2003, 2004, 2005, 2007, 2007, 2008, + 2009, 2012, 2010, 2011, 2014, 2012, 2013, 2015, 2016, 2009, + 2014, 2013, 2017, 2018, 2020, 2020, 2021, 2016, 2023, 2008, + 2010, 2027, 2011, 2022, 2025, 2015, 2020, 2018, 2024, 2024, + 2017, 2026, 2022, 2025, 2021, 2028, 2029, 2035, 2023, 2036, + 2028, 2038, 2027, 2026, 2032, 2032, 2039, 2034, 2040, 2029, + 2034, 2041, 2044, 2035, 2040, 2036, 2038, 2042, 2042, 2043, - 2054, 2043, 2053, 2055, 2056, 2056, 2041, 2040, 2045, 2046, - 2047, 2048, 2051, 2050, 2044, 2055, 2057, 2058, 2051, 2061, - 2049, 2059, 2053, 2054, 2059, 2060, 2064, 2063, 2064, 2065, - 2060, 2051, 2063, 2066, 2057, 2067, 2069, 2058, 2066, 2061, - 2071, 2072, 2067, 2073, 2074, 2069, 2074, 2065, 2075, 2079, - 2072, 2076, 2078, 2081, 2078, 2073, 2082, 2076, 2071, 2080, - 2080, 2082, 2083, 2079, 2083, 2084, 2085, 2075, 2086, 2087, - 2084, 2085, 2088, 2091, 2090, 2089, 2092, 2095, 2088, 2081, - 2089, 2092, 2092, 2093, 2096, 2091, 2086, 2090, 2099, 2087, - 2100, 2093, 2097, 2097, 2098, 2098, 2095, 2102, 2096, 2101, + 2039, 2043, 2045, 2045, 2046, 2048, 2048, 2051, 2041, 2052, + 2044, 2053, 2046, 2049, 2049, 2052, 2055, 2053, 2054, 2056, + 2057, 2058, 2058, 2055, 2059, 2060, 2061, 2062, 2063, 2065, + 2051, 2067, 2054, 2059, 2066, 2064, 2069, 2067, 2061, 2062, + 2057, 2056, 2070, 2063, 2073, 2071, 2060, 2064, 2074, 2066, + 2067, 2072, 2072, 2077, 2076, 2065, 2069, 2071, 2075, 2076, + 2081, 2075, 2073, 2087, 2079, 2070, 2082, 2083, 2074, 2079, + 2080, 2082, 2080, 2077, 2083, 2085, 2088, 2089, 2081, 2091, + 2090, 2087, 2090, 2095, 2085, 2088, 2092, 2097, 2094, 2089, + 2094, 2098, 2092, 2096, 2096, 2100, 2098, 2095, 2091, 2099, - 2104, 2105, 2102, 2099, 2103, 2101, 2103, 2106, 2106, 2105, - 2100, 2107, 2108, 2108, 2109, 2109, 2110, 2105, 2104, 2111, - 2112, 2114, 2116, 2107, 2111, 2110, 2115, 2118, 2115, 2117, - 2114, 2119, 2120, 2114, 2117, 2117, 2122, 2123, 2112, 2118, - 2119, 2124, 2123, 2116, 2120, 2126, 2124, 2127, 2122, 2132, - 2128, 2129, 2129, 2130, 2131, 2133, 2134, 2136, 2126, 2128, - 2135, 2138, 2136, 2140, 2139, 2132, 2149, 2127, 2151, 2141, - 2134, 2130, 2131, 2138, 2141, 2135, 2139, 2142, 2143, 2146, - 2133, 2150, 2142, 2140, 2148, 2146, 2151, 2143, 2152, 2149, - 2148, 2153, 2154, 2154, 2155, 2158, 2150, 2157, 2146, 2161, + 2100, 2099, 2101, 2102, 2103, 2104, 2106, 2101, 2107, 2105, + 2108, 2104, 2111, 2097, 2105, 2108, 2108, 2109, 2112, 2106, + 2107, 2102, 2113, 2113, 2103, 2109, 2114, 2114, 2115, 2116, + 2117, 2111, 2112, 2118, 2120, 2119, 2117, 2119, 2118, 2121, + 2122, 2122, 2123, 2115, 2124, 2124, 2128, 2121, 2126, 2116, + 2125, 2125, 2120, 2127, 2123, 2121, 2130, 2126, 2127, 2131, + 2132, 2131, 2134, 2136, 2128, 2130, 2133, 2135, 2130, 2143, + 2138, 2133, 2133, 2139, 2134, 2136, 2135, 2142, 2139, 2140, + 2146, 2132, 2138, 2144, 2140, 2145, 2145, 2147, 2148, 2143, + 2142, 2149, 2144, 2150, 2151, 2152, 2154, 2156, 2146, 2155, - 2153, 2156, 2156, 2155, 2159, 2160, 2163, 2165, 2159, 47, - 2160, 2164, 2161, 2152, 2158, 2157, 2166, 2164, 2167, 2171, - 2168, 2166, 2166, 2170, 2167, 2163, 2168, 2169, 2176, 2165, - 2169, 2170, 2174, 2174, 2175, 2175, 2179, 2176, 2180, 2171, - 2177, 2177, 2178, 2178, 2181, 2189, 2182, 2191, 2179, 2175, - 2181, 2182, 2183, 2183, 2184, 2184, 2180, 2185, 2186, 2188, - 2175, 2193, 2185, 2188, 2186, 2189, 2190, 2191, 2194, 2195, - 2190, 2197, 2196, 2194, 2199, 2198, 2197, 2200, 2201, 2202, - 2203, 2203, 2207, 2201, 2204, 2205, 2193, 2196, 2204, 2206, - 2199, 2208, 2195, 2198, 2206, 2209, 2210, 2200, 2211, 2212, + 2152, 2157, 2165, 2159, 2148, 2147, 2157, 2150, 2154, 2151, + 2158, 2155, 2159, 2162, 2164, 2158, 2149, 2156, 2166, 2162, + 2164, 2167, 2168, 2170, 2170, 2165, 2169, 2171, 2172, 2172, + 2173, 2174, 2162, 2166, 2175, 2169, 2171, 2176, 2175, 2167, + 2177, 2179, 2176, 2180, 2181, 2187, 2182, 2168, 2173, 2180, + 2174, 2182, 2182, 2177, 2185, 2183, 2184, 2185, 2196, 2186, + 2179, 2183, 2184, 2190, 2190, 2187, 2181, 2186, 2191, 2191, + 2192, 2193, 2193, 2194, 2194, 2195, 2196, 2198, 2197, 2192, + 2199, 2199, 2198, 2191, 2197, 2200, 2200, 2195, 2201, 2202, + 2205, 2207, 2204, 2201, 2191, 2202, 2204, 2206, 2209, 2210, - 2205, 2202, 2213, 2211, 2214, 2214, 2216, 2209, 2207, 2208, - 2217, 2218, 2212, 2219, 2216, 2210, 2220, 2222, 2221, 2223, - 2213, 2224, 2228, 2231, 2226, 2231, 2230, 2229, 18, 2217, - 2218, 2223, 2230, 2232, 2232, 2228, 2219, 2221, 2222, 2226, - 2220, 2229, 2224, 2233, 2234, 2235, 2236, 2234, 2233, 2237, - 2238, 2238, 2239, 2239, 2240, 2242, 2240, 17, 2235, 2243, - 2236, 2251, 2237, 2241, 2241, 2244, 2244, 2245, 2246, 2246, - 2242, 2252, 2243, 2247, 2247, 2248, 2245, 2250, 2253, 2245, - 2248, 2251, 2250, 2254, 2254, 2255, 2255, 2256, 2257, 2257, - 2253, 2252, 2258, 2259, 2259, 2261, 2260, 2262, 2262, 2264, + 2212, 2206, 2211, 2213, 2210, 2215, 2214, 2216, 2213, 2217, + 2205, 2207, 2218, 2221, 2217, 2212, 2219, 2219, 2220, 2223, + 2224, 2215, 2220, 2209, 2214, 2211, 2222, 2216, 2221, 2225, + 2226, 2222, 2227, 2228, 2218, 2229, 2232, 2227, 2224, 2230, + 2230, 2225, 2233, 2234, 2232, 2223, 2228, 2235, 2236, 2226, + 2237, 2239, 2238, 2229, 2240, 2245, 2243, 2249, 2241, 2247, + 2246, 2233, 2234, 2239, 2241, 2247, 2250, 2250, 2245, 2237, + 2235, 2243, 2236, 2238, 2246, 2240, 2248, 2249, 2248, 2251, + 2252, 2253, 2254, 2252, 2251, 2255, 2256, 2256, 2257, 2257, + 2258, 2260, 2258, 47, 2253, 2261, 2254, 2269, 2255, 2259, - 2261, 2263, 2263, 2265, 2266, 2267, 2256, 2268, 2272, 2270, - 2258, 2260, 2265, 2264, 2270, 2271, 2271, 2273, 2273, 2267, - 2274, 2266, 2275, 2277, 2277, 2279, 2268, 2272, 2275, 2276, - 2278, 2278, 2276, 2280, 2281, 2283, 2281, 2284, 2274, 2277, - 2285, 2285, 2287, 2288, 2279, 2289, 2292, 2290, 2280, 2293, - 2283, 2290, 2291, 2291, 2293, 2294, 2284, 2295, 2297, 2297, - 2289, 2298, 2287, 2300, 2299, 2292, 2288, 2301, 2302, 2303, - 2294, 2299, 2295, 2304, 2304, 2305, 2306, 2300, 2306, 2307, - 2310, 2298, 2307, 2309, 2305, 2301, 2302, 2313, 2311, 2309, - 2314, 2312, 2310, 2311, 2315, 2303, 2312, 2307, 2317, 2307, + 2259, 2262, 2262, 2263, 2264, 2264, 2260, 2270, 2261, 2265, + 2265, 2266, 2263, 2268, 2271, 2263, 2266, 2269, 2268, 2272, + 2272, 2273, 2273, 2274, 2275, 2275, 2271, 2270, 2276, 2277, + 2277, 2279, 2278, 2280, 2280, 2282, 2279, 2281, 2281, 2283, + 2284, 2285, 2274, 2286, 2290, 2288, 2276, 2278, 2283, 2282, + 2288, 2289, 2289, 2291, 2291, 2285, 2292, 2284, 2293, 2295, + 2295, 2297, 2286, 2290, 2293, 2294, 2296, 2296, 2294, 2298, + 2299, 2301, 2299, 2302, 2292, 2295, 2303, 2303, 2305, 2306, + 2297, 2307, 2310, 2308, 2298, 2311, 2301, 2308, 2309, 2309, + 2311, 2312, 2302, 2313, 2315, 2315, 2307, 2316, 2305, 2318, - 2316, 2319, 2320, 2314, 2321, 2316, 2319, 2320, 2322, 2324, - 2323, 2325, 2313, 2327, 2322, 2315, 2323, 2326, 2327, 2321, - 2328, 2329, 2330, 2326, 2317, 2328, 2325, 2332, 2331, 2333, - 2324, 2331, 2334, 2335, 2336, 2330, 2332, 2337, 2333, 2338, - 2339, 2334, 2335, 2337, 2339, 2338, 2329, 2341, 2336, 2343, - 2344, 2345, 2345, 2348, 2346, 2347, 2347, 2349, 2349, 2344, - 2346, 2350, 2348, 2351, 2347, 2353, 2350, 2341, 2354, 2343, - 2355, 2355, 2356, 2357, 2359, 2360, 2362, 2361, 2366, 2368, - 2368, 2353, 2357, 2351, 2354, 2351, 2359, 2356, 2362, 2365, - 2364, 2360, 2361, 2364, 2365, 2367, 2369, 2369, 2366, 2371, + 2317, 2310, 2306, 2319, 2320, 2321, 2312, 2317, 2313, 2322, + 2322, 2323, 2324, 2318, 2324, 2325, 2328, 2316, 2325, 2327, + 2323, 2319, 2320, 2331, 2329, 2327, 2332, 2330, 2328, 2329, + 2333, 2321, 2330, 2325, 2335, 2325, 2334, 2337, 2338, 2332, + 2339, 2334, 2337, 2338, 2340, 2342, 2341, 2343, 2331, 2345, + 2340, 2333, 2341, 2344, 2345, 2339, 2346, 2347, 2348, 2344, + 2335, 2346, 2343, 2350, 2349, 2351, 2342, 2349, 2352, 2353, + 2354, 2348, 2350, 2355, 2351, 2356, 2357, 2352, 2353, 2355, + 2357, 2356, 2347, 2359, 2354, 2361, 2362, 2363, 2363, 2366, + 2364, 2365, 2365, 2367, 2367, 2362, 2364, 2368, 2366, 2369, - 2371, 2372, 2378, 2373, 2372, 2374, 2375, 2367, 2373, 2376, - 2380, 2374, 2375, 2377, 2377, 2381, 2378, 2382, 2376, 2379, - 2379, 2384, 2380, 2383, 2383, 2385, 2386, 2384, 2388, 2381, - 2389, 2386, 2388, 2389, 2390, 2390, 2382, 2391, 2392, 2385, - 2393, 2394, 2391, 2397, 2395, 2396, 2396, 2392, 2395, 2393, - 2399, 2400, 2401, 2402, 2403, 2399, 2397, 2404, 2403, 2405, - 2406, 2394, 2407, 2408, 2405, 2409, 2406, 2402, 2407, 2410, - 2411, 2400, 2401, 2412, 2414, 2411, 2415, 2404, 2416, 2417, - 2426, 2408, 2418, 2416, 2409, 2417, 2414, 2419, 2410, 2419, - 2418, 2421, 2415, 2423, 2412, 2424, 2424, 2432, 2425, 2431, + 2365, 2371, 2368, 2359, 2372, 2361, 2373, 2373, 2374, 2375, + 2377, 2378, 2380, 2379, 2384, 2386, 2386, 2371, 2375, 2369, + 2372, 2369, 2377, 2374, 2380, 2383, 2382, 2378, 2379, 2382, + 2383, 2385, 2387, 2387, 2384, 2389, 2389, 2390, 2396, 2391, + 2390, 2392, 2393, 2385, 2391, 2394, 2398, 2392, 2393, 2395, + 2395, 2399, 2396, 2400, 2394, 2397, 2397, 2402, 2398, 2401, + 2401, 2403, 2404, 2402, 2406, 2399, 2407, 2404, 2406, 2407, + 2408, 2408, 2400, 2409, 2410, 2403, 2411, 2412, 2409, 2415, + 2413, 2414, 2414, 2410, 2413, 2411, 2417, 2418, 2419, 2420, + 2421, 2417, 2415, 2422, 2421, 2423, 2424, 2412, 2425, 2427, - 2421, 2425, 2427, 2427, 2430, 2431, 2426, 2423, 2430, 2432, - 2433, 2433, 2434, 2437, 2437, 2439, 2441, 2445, 2442, 2446, - 2447, 2434, 2445, 2448, 2449, 2450, 2450, 2456, 2448, 2449, - 2441, 2452, 2452, 2439, 2442, 2457, 2454, 2455, 2455, 2458, - 2460, 2447, 2454, 2456, 2458, 2446, 2461, 2466, 2462, 2461, - 2463, 2464, 2464, 2468, 2469, 2467, 2466, 2457, 2473, 2460, - 2462, 2467, 2463, 2471, 2471, 2472, 2474, 2479, 2472, 2469, - 2480, 2468, 2476, 2476, 2477, 2477, 2478, 2473, 2481, 2480, - 2482, 2478, 2482, 2481, 2474, 2479, 2483, 2484, 2486, 2487, - 2485, 2488, 2489, 2486, 2490, 2490, 2494, 2489, 2491, 2491, + 2423, 2428, 2424, 2420, 2425, 2426, 2426, 2418, 2419, 2429, + 2430, 2431, 2434, 2422, 2435, 2430, 2436, 2427, 2432, 2432, + 2428, 2436, 2441, 2437, 2434, 2438, 2443, 2446, 2429, 2437, + 2435, 2441, 2431, 2438, 2439, 2452, 2439, 2444, 2444, 2445, + 2443, 2450, 2445, 2447, 2447, 2450, 2451, 2452, 2453, 2453, + 2454, 2459, 2451, 2446, 2457, 2457, 2461, 2462, 2465, 2454, + 2466, 2467, 2468, 2465, 2470, 2470, 2469, 2468, 2476, 2459, + 2461, 2469, 2474, 2462, 2472, 2472, 2475, 2475, 2474, 2477, + 2478, 2480, 2467, 2482, 2476, 2478, 2466, 2481, 2484, 2484, + 2481, 2483, 2487, 2486, 2488, 2482, 2489, 2493, 2487, 2494, - 2483, 2484, 2485, 2492, 2492, 2493, 2493, 2495, 2494, 2487, - 2496, 2488, 2497, 2497, 2499, 2496, 2498, 2498, 2500, 2501, - 2502, 2503, 2506, 2504, 2509, 2495, 2499, 2505, 2505, 2507, - 2507, 2501, 2508, 2508, 2510, 2509, 2511, 2512, 2500, 2504, - 2502, 2506, 2503, 2511, 2513, 2514, 2510, 2515, 2516, 2512, - 2514, 2517, 2517, 2518, 2519, 2519, 2520, 2521, 2522, 2523, - 2524, 2527, 2518, 2525, 2513, 2528, 2528, 2515, 2516, 2529, - 2526, 2522, 2526, 2527, 2524, 2530, 2531, 2521, 2529, 2533, - 2534, 2535, 2520, 2523, 2536, 2525, 2537, 2536, 2538, 2539, - 2530, 2531, 2548, 2538, 2539, 2540, 2540, 2533, 2541, 2541, + 2480, 2477, 2486, 2483, 2491, 2491, 2492, 2496, 2496, 2492, + 2498, 2489, 2488, 2497, 2497, 2498, 2493, 2494, 2499, 2500, + 2501, 2502, 2505, 2502, 2503, 2501, 2504, 2506, 2500, 2507, + 2508, 2546, 2506, 2546, 2505, 18, 2499, 2509, 2503, 2515, + 2504, 2514, 2509, 2510, 2510, 2511, 2511, 2512, 2512, 2507, + 2508, 2513, 2513, 2514, 2516, 2517, 2517, 2515, 2519, 2516, + 2518, 2518, 2520, 2521, 2522, 2523, 2526, 2524, 2525, 2525, + 2519, 2527, 2527, 2528, 2528, 2521, 2529, 2530, 2532, 2533, + 2535, 2531, 2520, 2524, 2522, 2526, 2523, 2529, 2531, 2530, + 2532, 2534, 2536, 2537, 2537, 2538, 2534, 2539, 2539, 2533, - 2537, 2547, 2534, 2548, 2535, 2542, 2542, 2544, 2544, 2546, - 2546, 2549, 2550, 2552, 2553, 2554, 2555, 2556, 2557, 2547, - 2558, 2559, 2558, 0, 2560, 2561, 2556, 2550, 2562, 2562, - 2549, 2565, 2553, 2552, 2564, 2564, 2555, 2554, 2557, 2566, - 2567, 2559, 2560, 2561, 2570, 2565, 2568, 2568, 2572, 2567, - 2571, 2571, 2573, 2570, 2575, 2574, 2576, 2577, 2579, 2582, - 2578, 2566, 2574, 2580, 2580, 2583, 2572, 2581, 2581, 2575, - 2573, 2588, 2584, 2590, 2576, 2577, 2578, 2579, 2584, 2582, - 2585, 2585, 2587, 2583, 2586, 2586, 2589, 2593, 2587, 2588, - 2591, 2592, 2590, 2594, 2595, 2596, 2592, 2596, 2598, 2595, + 2535, 2540, 2541, 2542, 2538, 2543, 2544, 2547, 2545, 2548, + 2548, 2550, 2536, 2551, 2549, 2553, 2542, 2554, 2555, 2547, + 2544, 2556, 2541, 2549, 2556, 2576, 2550, 2540, 2551, 2543, + 2545, 2557, 2558, 2553, 2576, 2559, 2567, 2558, 2569, 2554, + 2559, 2555, 2560, 2560, 2568, 2557, 2561, 2561, 2562, 2562, + 2564, 2564, 2566, 2566, 2567, 2568, 2570, 2569, 2572, 2573, + 2574, 2575, 2578, 2577, 2578, 2579, 2580, 2586, 2581, 2582, + 2582, 2570, 2584, 2584, 2585, 2588, 2588, 2573, 2572, 2591, + 2591, 2575, 2574, 2577, 2580, 2579, 2581, 2587, 2585, 2586, + 2590, 2592, 2593, 2594, 2603, 2596, 2587, 2595, 2597, 2590, - 2598, 2589, 2597, 2597, 2591, 2599, 2599, 2593, 2601, 2603, - 2604, 2605, 2606, 2594, 2607, 2608, 2609, 2613, 2603, 2607, - 2608, 2610, 2614, 2605, 2616, 2614, 2617, 2601, 2620, 2604, - 2615, 2615, 2606, 2618, 2618, 2619, 2609, 2613, 2621, 2616, - 2610, 2623, 2621, 2620, 2617, 2624, 2619, 2625, 2625, 2624, - 2626, 2628, 2629, 2630, 2631, 2631, 2623, 2633, 2634, 2637, - 2635, 2636, 2636, 2626, 2635, 2641, 2628, 2634, 2640, 2633, - 2638, 2638, 2629, 2630, 2639, 2642, 2643, 2640, 2637, 2639, - 2650, 2641, 2644, 2644, 2649, 2649, 2652, 2642, 2651, 2651, - 2653, 2654, 2655, 2657, 2657, 2656, 2643, 2658, 2659, 2652, + 2594, 2598, 2599, 17, 2600, 2601, 2601, 2602, 2602, 2592, + 2593, 2600, 2595, 2596, 2603, 2604, 2597, 2598, 2605, 2607, + 2607, 2599, 2608, 2608, 2605, 2609, 2610, 2611, 2612, 2613, + 2614, 2609, 2615, 2604, 2616, 2614, 2617, 2618, 2620, 2618, + 2620, 2617, 2611, 2613, 2610, 2619, 2619, 2612, 2621, 2621, + 2623, 2625, 2615, 2626, 2616, 2627, 2628, 2629, 2630, 2631, + 2625, 2632, 2629, 2630, 2635, 2636, 2638, 2627, 2636, 2623, + 2637, 2637, 2626, 2639, 2640, 2640, 2628, 2641, 2642, 2631, + 2632, 2638, 2643, 2645, 2635, 2646, 2643, 2648, 2641, 2646, + 2650, 2639, 2651, 2642, 2647, 2647, 2652, 2655, 2645, 2656, - 2654, 2655, 2650, 2653, 2656, 2661, 2661, 2664, 2666, 2665, - 2667, 2668, 2664, 2659, 2665, 2667, 2669, 2658, 2670, 2668, - 2671, 2673, 2666, 2677, 2675, 2676, 2681, 2670, 2671, 2675, - 2676, 2678, 2678, 2679, 2679, 2669, 2673, 2680, 2677, 2682, - 2682, 2683, 2680, 2685, 2684, 2681, 2686, 2687, 2683, 2684, - 2688, 2689, 2689, 2687, 2690, 2688, 2715, 2691, 2692, 2692, - 2696, 2685, 2691, 2715, 2686, 2693, 2693, 2697, 2697, 2690, - 2699, 2698, 2700, 2696, 2698, 2699, 2699, 2700, 2701, 2702, - 2703, 2704, 2705, 2701, 2707, 2704, 2703, 2705, 2706, 2709, - 2708, 2712, 2713, 2702, 2710, 2711, 2712, 2706, 2708, 2707, + 2648, 2653, 2653, 2657, 2659, 2650, 2663, 2657, 2656, 2655, + 2658, 2658, 2651, 2660, 2660, 2661, 2652, 2662, 2664, 2665, + 2661, 2672, 2663, 2659, 2666, 2666, 2662, 2671, 2671, 2674, + 2664, 2673, 2673, 2675, 2680, 2676, 2677, 2681, 2678, 2665, + 2679, 2679, 2674, 2672, 2676, 2677, 2675, 2678, 2683, 2683, + 2686, 2687, 2681, 2688, 2680, 2686, 2687, 2689, 2690, 2691, + 2692, 2695, 2689, 2693, 2699, 2697, 2690, 2688, 2698, 2692, + 2697, 2693, 2702, 2698, 2700, 2700, 2695, 2702, 2691, 2699, + 2701, 2701, 2703, 2704, 2704, 2705, 2706, 2707, 2708, 2709, + 0, 2706, 2705, 2710, 2712, 2709, 2711, 2711, 2710, 2713, - 2710, 2711, 2716, 2717, 2713, 2719, 2717, 2716, 2721, 2722, - 2709, 2723, 2724, 2721, 2722, 2725, 2731, 2719, 2726, 2727, - 2727, 2728, 2732, 2736, 2725, 2724, 2733, 2726, 2732, 2723, - 2728, 2737, 2733, 2738, 2731, 2739, 2739, 2740, 2741, 2742, - 2743, 2745, 2736, 2747, 2740, 2744, 2744, 2749, 2742, 2750, - 2752, 2737, 2738, 2750, 2755, 2743, 0, 2741, 2747, 2753, - 2745, 2751, 2751, 2754, 2756, 2753, 2759, 2749, 2758, 2754, - 2756, 2759, 2755, 2757, 2757, 2752, 2758, 2761, 2762, 2764, - 2765, 2767, 2768, 2765, 2766, 2764, 2761, 2771, 2766, 2770, - 2770, 2762, 2772, 2772, 2781, 2767, 0, 2768, 2773, 2773, + 2718, 2703, 2714, 2714, 2713, 2707, 2708, 2715, 2715, 2712, + 2719, 2719, 2720, 2718, 2721, 2720, 2722, 2723, 2724, 2721, + 2721, 2722, 2723, 2725, 2726, 2727, 2728, 2729, 2726, 2725, + 2727, 2730, 2724, 2731, 2732, 2728, 2734, 2733, 2735, 2730, + 2732, 2734, 2729, 2733, 2737, 2739, 2741, 2738, 2739, 2745, + 2735, 2737, 2738, 2746, 2731, 2743, 2744, 2759, 2741, 2747, + 2743, 2744, 2748, 2749, 2749, 2750, 2746, 2745, 2747, 2754, + 2751, 2748, 2755, 2756, 2750, 2751, 2759, 2760, 2755, 2756, + 2761, 2762, 2762, 2763, 2764, 2765, 2766, 2754, 2767, 2767, + 2763, 2768, 2770, 2772, 2765, 2775, 2773, 2760, 2778, 2761, - 2775, 2775, 2776, 2777, 2783, 2771, 2776, 2782, 2777, 2779, - 2779, 2785, 2782, 2784, 2781, 2787, 2783, 2793, 2784, 2784, - 2788, 2788, 2797, 2785, 2790, 2790, 2791, 2791, 2792, 2794, - 2793, 2792, 2796, 2796, 2799, 2787, 2800, 2800, 2801, 2801, - 2797, 2803, 2794, 2802, 2802, 2804, 2804, 2805, 2806, 2807, - 2817, 2808, 2809, 2809, 2799, 2810, 2803, 2808, 2813, 2810, - 2805, 2818, 2814, 2807, 2813, 2816, 2806, 2814, 2819, 2820, - 2816, 2816, 2821, 2817, 2822, 2820, 2823, 2829, 2821, 2827, - 2823, 2818, 2824, 2824, 2827, 2829, 2830, 2832, 2819, 2830, - 2833, 2834, 2834, 2833, 2839, 2836, 2835, 2837, 2838, 2822, + 2773, 2766, 2776, 2764, 2774, 2774, 2777, 2770, 2776, 2779, + 2768, 2781, 2777, 2772, 2784, 2779, 2778, 2780, 2780, 2781, + 2775, 2782, 2785, 2784, 2787, 2788, 2782, 2789, 2788, 2790, + 2787, 2789, 2791, 2793, 2793, 2785, 2794, 2795, 2795, 2796, + 2796, 2798, 2798, 2790, 2799, 2800, 2804, 2791, 2799, 2806, + 2800, 2802, 2802, 2805, 2794, 2808, 2810, 2807, 2805, 2811, + 2811, 2806, 2807, 2807, 2813, 2813, 2804, 2808, 2814, 2814, + 2815, 2816, 2817, 2815, 2819, 2819, 2810, 2820, 2822, 2823, + 2823, 2824, 2824, 2828, 2816, 2817, 2825, 2825, 2826, 2827, + 2827, 2829, 2830, 2831, 2840, 2820, 2828, 2837, 2822, 2831, - 2836, 2840, 2840, 2841, 2844, 2846, 2843, 2848, 2839, 2887, - 2846, 2846, 2832, 2835, 2835, 2837, 2842, 2841, 2838, 2842, - 2843, 2845, 2857, 2844, 2887, 2847, 2848, 2842, 2854, 2845, - 2847, 2847, 2849, 2849, 2850, 2850, 2851, 2851, 2852, 2852, - 2853, 2853, 2855, 2856, 2854, 2858, 2859, 2855, 2857, 2860, - 2858, 2861, 2862, 2863, 2860, 2865, 2865, 2866, 2866, 2867, - 2861, 2868, 2867, 2856, 2871, 2859, 2870, 2870, 2872, 2872, - 2873, 2871, 2862, 2863, 2876, 2873, 2875, 2875, 2877, 2868, - 2878, 2879, 2881, 2876, 2882, 2882, 2884, 2877, 2883, 2878, - 2879, 2885, 2883, 2886, 2889, 2884, 2888, 2890, 2900, 2891, + 2832, 2832, 2837, 2826, 2833, 2836, 2830, 2839, 2833, 2829, + 2841, 2836, 2839, 2839, 2842, 2843, 2844, 2840, 2845, 2846, + 2852, 2843, 2844, 2846, 2847, 2847, 2850, 2855, 2852, 2853, + 2841, 2850, 2853, 2856, 2842, 2859, 2856, 2857, 2857, 2858, + 2859, 2860, 2861, 2845, 2862, 2863, 2863, 2864, 2867, 2869, + 2866, 2871, 2855, 2911, 2869, 2869, 2858, 2858, 2862, 2860, + 2865, 2864, 2861, 2865, 2866, 2868, 2880, 2867, 2911, 2870, + 2871, 2865, 2877, 2868, 2870, 2870, 2872, 2872, 2873, 2873, + 2874, 2874, 2875, 2875, 2876, 2876, 2878, 2879, 2877, 2881, + 2882, 2878, 2880, 2883, 2884, 2882, 2885, 2886, 2887, 2884, - 2881, 2888, 2888, 2891, 2886, 2899, 2890, 2889, 2895, 2901, - 2885, 2896, 2896, 2895, 2898, 2898, 2903, 2903, 2905, 2899, - 2904, 2908, 2912, 2900, 2910, 2915, 2909, 2901, 2913, 2904, - 2905, 2909, 2917, 2910, 2913, 2919, 2920, 2915, 2921, 2921, - 2919, 2920, 2912, 2922, 2924, 2925, 2908, 2926, 2932, 2924, - 2927, 2927, 2922, 2917, 2927, 2929, 2929, 2932, 2925, 2930, - 2930, 2926, 2931, 2931, 2933, 2935, 2934, 2937, 2941, 2938, - 2935, 2939, 2943, 2937, 2938, 2942, 2939, 2940, 2940, 2945, - 2947, 2948, 2948, 2944, 2933, 2934, 2941, 2942, 2944, 2946, - 2950, 2951, 2954, 2943, 2950, 2946, 2951, 2945, 2952, 2953, + 2889, 2889, 2892, 2881, 2895, 2885, 0, 2879, 2890, 2890, + 2891, 2895, 2883, 2891, 2894, 2894, 2905, 2886, 2887, 2897, + 2892, 2896, 2896, 2900, 2897, 2899, 2899, 2901, 2902, 2903, + 2906, 2906, 2900, 2908, 2905, 2907, 2901, 2902, 2903, 2907, + 2909, 2910, 2908, 2912, 2913, 2914, 2915, 2924, 2912, 2912, + 2915, 2919, 2910, 2923, 2914, 2925, 2919, 2913, 2929, 2909, + 2920, 2920, 2922, 2922, 2927, 2927, 2928, 2923, 2932, 2933, + 2929, 2934, 2924, 2925, 2933, 2928, 2936, 2937, 2939, 2941, + 2934, 2943, 2944, 2937, 2945, 2945, 2943, 2944, 2946, 2948, + 2939, 2949, 2950, 2932, 2948, 2957, 2936, 2946, 2951, 2951, - 2953, 2955, 2956, 2952, 2958, 2947, 2960, 2960, 2962, 2963, - 2964, 2954, 2966, 2967, 2964, 2968, 2955, 2956, 2965, 2972, - 2969, 2962, 2963, 2968, 2958, 2969, 2971, 2965, 2966, 2970, - 2970, 2973, 2967, 2974, 2974, 2971, 2975, 2972, 2978, 2978, - 2979, 2979, 2981, 2983, 2983, 2985, 2986, 2987, 2988, 2989, - 2991, 2991, 2987, 2992, 2989, 2975, 2993, 2973, 2995, 2996, - 2994, 2985, 2986, 2981, 2988, 2993, 2994, 2998, 2998, 2999, - 3000, 3001, 3001, 2992, 3004, 3006, 3005, 3008, 2996, 3018, - 3006, 2995, 3005, 2999, 3009, 3009, 3010, 3010, 3011, 3000, - 3012, 3013, 3013, 3014, 3004, 3016, 3015, 3019, 3018, 3008, + 2941, 2958, 2951, 0, 2949, 2956, 2950, 2953, 2953, 2954, + 2954, 2955, 2955, 2959, 2956, 2957, 2961, 2965, 2959, 2962, + 2958, 2963, 2961, 2967, 2962, 2966, 2963, 2964, 2964, 2968, + 2969, 2971, 2970, 2978, 2968, 2965, 0, 2966, 2970, 2972, + 2972, 2974, 2975, 2979, 2967, 2974, 2976, 2975, 2969, 2977, + 2977, 2976, 2978, 2980, 2982, 2989, 2971, 2986, 2979, 2984, + 2984, 2988, 2987, 2990, 2989, 2988, 2991, 2993, 2980, 2992, + 2986, 2994, 2993, 2996, 2982, 2987, 2997, 2992, 2998, 2990, + 2995, 2995, 2996, 2999, 2999, 2991, 3000, 3003, 3003, 3004, + 3004, 2994, 3006, 3010, 2997, 3008, 3008, 3012, 3011, 3013, - 3017, 3020, 3022, 3011, 3014, 3015, 3017, 3021, 3021, 3019, - 3012, 3013, 3030, 3023, 3029, 3016, 3023, 3022, 3035, 3024, - 0, 3020, 3024, 3025, 3025, 3031, 3029, 3032, 3032, 3034, - 3033, 3031, 3030, 3033, 3037, 3034, 3035, 3038, 3038, 3037, - 3039, 3040, 3041, 3045, 3042, 3039, 3043, 3043, 3041, 3046, - 3047, 3048, 3049, 3049, 3050, 3045, 3051, 3052, 3054, 3054, - 3040, 3042, 3042, 3057, 3048, 3056, 3052, 3046, 3055, 3055, - 3056, 3058, 3051, 3050, 3062, 3047, 3058, 3057, 3059, 3059, - 3060, 3060, 3061, 3061, 3063, 3064, 3070, 3062, 3065, 3067, - 3067, 3064, 3072, 3065, 3073, 3075, 3074, 3076, 3076, 3078, + 3017, 3014, 3012, 3018, 2998, 3000, 3014, 3016, 3016, 3010, + 3019, 3020, 3018, 3006, 3011, 3013, 3019, 3021, 3023, 3023, + 3017, 3024, 3025, 3026, 3026, 3029, 3030, 3033, 3031, 3034, + 3034, 3036, 3030, 3031, 3020, 3024, 3021, 3035, 3035, 3037, + 3039, 3025, 3038, 3038, 3040, 3029, 3036, 3041, 3042, 3033, + 3043, 3039, 3044, 3040, 3042, 3045, 3046, 3046, 3047, 3037, + 3048, 3055, 3038, 3048, 3044, 3049, 3054, 3041, 3049, 3043, + 3050, 3050, 3060, 3047, 3056, 3045, 3057, 3057, 3054, 3058, + 3056, 3055, 3058, 3059, 3063, 3063, 3062, 3064, 3065, 3059, + 3060, 3062, 3064, 3066, 3067, 3068, 3068, 3070, 3071, 3066, - 3078, 3079, 3080, 3082, 3081, 3070, 3084, 3084, 3085, 3085, - 3063, 3083, 3088, 3087, 3072, 3074, 3073, 3075, 3081, 3087, - 3083, 3080, 3089, 3082, 3090, 3093, 3100, 3079, 3098, 3090, - 3094, 3094, 3088, 3096, 3096, 3097, 3101, 3099, 3100, 3107, - 3097, 3089, 3098, 3099, 3101, 3103, 3093, 3102, 3102, 3105, - 3103, 3106, 3108, 3105, 3110, 3109, 3106, 3111, 3114, 3107, - 3109, 3113, 3115, 3111, 3116, 3118, 3110, 3125, 0, 3113, - 3119, 3120, 3108, 3121, 3122, 3124, 3127, 3114, 3129, 3122, - 3124, 3127, 3115, 3118, 3116, 3126, 3119, 3125, 3120, 3120, - 3130, 3126, 3131, 3130, 3121, 3134, 3134, 3136, 3129, 3135, + 3072, 3073, 3074, 3074, 3075, 3076, 3077, 3065, 3081, 3070, + 3082, 3067, 3067, 3081, 3073, 3077, 3071, 3079, 3079, 3080, + 3080, 3076, 3083, 3075, 3082, 3072, 3088, 3083, 3084, 3084, + 3085, 3085, 3086, 3086, 3087, 3087, 3089, 3090, 3096, 3088, + 3091, 3093, 3093, 3090, 3098, 3091, 3099, 3101, 3100, 3102, + 3102, 3104, 3104, 3105, 3106, 3108, 3107, 3096, 3110, 3110, + 3111, 3111, 3089, 3109, 3114, 3113, 3098, 3100, 3099, 3101, + 3107, 3113, 3109, 3106, 3115, 3108, 3116, 3119, 3126, 3105, + 3124, 3116, 3120, 3120, 3114, 3122, 3122, 3123, 3127, 3125, + 3126, 3133, 3123, 3115, 3124, 3125, 3127, 3129, 3119, 3128, - 3135, 3136, 3140, 3140, 3141, 3131, 3142, 3143, 3143, 3141, - 3145, 3145, 3146, 3146, 3150, 3146, 3147, 3147, 3150, 3147, - 3148, 3148, 3152, 3149, 3149, 3142, 3149, 3152, 3153, 3154, - 3154, 3155, 3156, 3159, 3160, 3161, 3163, 3153, 3162, 3162, - 3161, 3166, 3169, 3167, 3168, 3170, 3156, 3172, 3168, 3155, - 3167, 3169, 3173, 3159, 3160, 3175, 3163, 3173, 3174, 3174, - 3170, 3176, 3176, 3179, 3175, 3172, 3166, 3177, 3177, 3178, - 3178, 3180, 3181, 3184, 3182, 3185, 3180, 3183, 3179, 3182, - 3182, 3181, 3186, 3183, 3181, 3189, 3187, 3188, 3190, 3190, - 3185, 3187, 3188, 3191, 3192, 3193, 3193, 3195, 3184, 3191, + 3128, 3131, 3129, 3132, 3134, 3131, 3136, 3135, 3132, 3137, + 3140, 3133, 3135, 3139, 3141, 3137, 3142, 3144, 3136, 3151, + 0, 3139, 3145, 3146, 3134, 3147, 3148, 3150, 3153, 3140, + 3155, 3148, 3150, 3153, 3141, 3144, 3142, 3152, 3145, 3151, + 3146, 3146, 3156, 3152, 3157, 3156, 3147, 3160, 3160, 3162, + 3155, 3161, 3161, 3162, 3167, 3167, 3168, 3157, 3169, 3170, + 3170, 3168, 3172, 3172, 3173, 3173, 3177, 3173, 3174, 3174, + 3177, 3174, 3175, 3175, 3179, 3176, 3176, 3169, 3176, 3179, + 3180, 3181, 3181, 3182, 3183, 3186, 3187, 3188, 3190, 3180, + 3189, 3189, 3188, 3193, 3196, 3194, 3195, 3197, 3183, 3199, - 3192, 3194, 3194, 3186, 3189, 3196, 3199, 3199, 3201, 3201, - 3196, 3202, 3195, 3205, 3205, 3206, 3206, 3207, 3207, 3214, - 3202, 3208, 3208, 3210, 3210, 3211, 3211, 3212, 3212, 3213, - 3213, 3216, 3217, 3217, 3218, 3219, 3220, 3222, 3222, 3223, - 3216, 3224, 3224, 3218, 3225, 3214, 3237, 3219, 3226, 3231, - 3227, 3228, 3228, 3229, 3229, 3235, 3220, 3236, 3223, 3225, - 3236, 3226, 3227, 3239, 3231, 3232, 3232, 3238, 3238, 3242, - 3243, 3241, 3237, 3235, 3241, 3242, 3245, 3244, 3246, 3249, - 3250, 3239, 3244, 3247, 3243, 3249, 3253, 3254, 3257, 3250, - 3253, 3267, 3266, 3269, 3267, 3245, 3246, 3266, 3275, 3247, + 3195, 3182, 3194, 3196, 3200, 3186, 3187, 3202, 3190, 3200, + 3201, 3201, 3197, 3203, 3203, 3206, 3202, 3199, 3193, 3204, + 3204, 3205, 3205, 3207, 3208, 3211, 3209, 3212, 3207, 3210, + 3206, 3209, 3209, 3208, 3213, 3210, 3208, 3216, 3214, 3215, + 3217, 3217, 3212, 3214, 3215, 3218, 3219, 3220, 3220, 3222, + 3211, 3218, 3219, 3221, 3221, 3213, 3216, 3223, 3226, 3226, + 3228, 3228, 3223, 3229, 3222, 3232, 3232, 3233, 3233, 3234, + 3234, 3241, 3229, 3235, 3235, 3237, 3237, 3238, 3238, 3239, + 3239, 3240, 3240, 3243, 3244, 3244, 3245, 3246, 3247, 3249, + 3249, 3250, 3243, 3251, 3251, 3245, 3252, 3241, 3264, 3246, - 3270, 3270, 3254, 3271, 3271, 3278, 3269, 3273, 3273, 3276, - 3280, 3277, 3282, 3289, 3257, 3277, 3283, 3284, 3276, 3286, - 3288, 3275, 3284, 3290, 3280, 3278, 3285, 3283, 3285, 3287, - 3287, 3291, 3289, 3288, 3286, 3282, 3292, 3293, 3295, 3294, - 3296, 3290, 3297, 3305, 3298, 3296, 3300, 3291, 3294, 3298, - 3295, 3301, 3293, 3299, 3299, 3306, 3301, 3305, 3307, 3307, - 3308, 3292, 3313, 3297, 3309, 3309, 3300, 3310, 3310, 3308, - 3311, 3311, 3312, 3312, 3314, 3306, 3315, 3316, 3317, 3315, - 3318, 3313, 3316, 3317, 3319, 3320, 3321, 3323, 3325, 3322, - 3330, 3320, 3323, 3335, 3314, 3324, 3324, 3326, 3326, 3319, + 3253, 3258, 3254, 3255, 3255, 3256, 3256, 3262, 3247, 3263, + 3250, 3252, 3263, 3253, 3254, 3266, 3258, 3259, 3259, 3265, + 3265, 3269, 3270, 3268, 3264, 3262, 3268, 3269, 3272, 3271, + 3273, 3276, 3277, 3266, 3271, 3274, 3270, 3276, 3280, 3281, + 3284, 3277, 3280, 3294, 3293, 3296, 3294, 3272, 3273, 3293, + 3302, 3274, 3297, 3297, 3281, 3298, 3298, 3305, 3296, 3300, + 3300, 3303, 3307, 3304, 3309, 3316, 3284, 3304, 3310, 3311, + 3303, 3313, 3315, 3302, 3311, 3317, 3307, 3305, 3312, 3310, + 3312, 3314, 3314, 3318, 3316, 3315, 3313, 3309, 3319, 3320, + 3322, 3321, 3323, 3317, 3324, 3332, 3325, 3323, 3327, 3318, - 3321, 3322, 3328, 3328, 3329, 3318, 3331, 3331, 3325, 3330, - 3333, 3335, 3338, 3338, 3339, 3339, 3340, 3341, 3344, 3329, - 3342, 3343, 3345, 3346, 3340, 3333, 3342, 3343, 3347, 3348, - 3348, 3353, 3344, 3347, 3354, 3345, 3341, 3350, 3350, 3356, - 3357, 3359, 3346, 3360, 3357, 3361, 3362, 3363, 3360, 3364, - 3365, 3366, 3353, 3356, 3354, 3365, 3366, 3367, 3367, 3362, - 3363, 3359, 3370, 3371, 3361, 3372, 3373, 3373, 3364, 3374, - 3375, 3376, 3376, 3377, 3374, 3378, 3375, 3380, 3377, 3381, - 3378, 3371, 3370, 3379, 3372, 3381, 3383, 3383, 3379, 3384, - 3385, 3385, 3388, 3387, 3384, 3389, 3380, 3387, 3390, 3391, + 3321, 3325, 3322, 3328, 3320, 3326, 3326, 3333, 3328, 3332, + 3334, 3334, 3335, 3319, 3340, 3324, 3336, 3336, 3327, 3337, + 3337, 3335, 3338, 3338, 3339, 3339, 3341, 3333, 3342, 3343, + 3344, 3342, 3345, 3340, 3343, 3344, 3346, 3347, 3348, 3350, + 3352, 3349, 3357, 3347, 3350, 3362, 3341, 3351, 3351, 3353, + 3353, 3346, 3348, 3349, 3355, 3355, 3356, 3345, 3358, 3358, + 3352, 3357, 3360, 3362, 3365, 3365, 3366, 3366, 3367, 3368, + 3371, 3356, 3369, 3370, 3372, 3373, 3367, 3360, 3369, 3370, + 3374, 3375, 3375, 3380, 3371, 3374, 3381, 3372, 3368, 3377, + 3377, 3383, 3384, 3386, 3373, 3387, 3384, 3388, 3389, 3390, - 3392, 3393, 3389, 3394, 3396, 3396, 3392, 3398, 3398, 3400, - 3399, 3388, 3401, 3402, 3400, 3403, 3394, 3390, 3391, 3399, - 3393, 3405, 3399, 3404, 3404, 3406, 3405, 3408, 3403, 3409, - 3409, 3401, 3402, 3410, 3411, 3411, 3412, 3412, 3406, 3413, - 3414, 3415, 3416, 3416, 3413, 3417, 3418, 3414, 3418, 3420, - 3417, 3421, 3410, 3408, 3419, 3419, 3420, 3422, 3421, 3423, - 3415, 3424, 3426, 3426, 3423, 3427, 3429, 3430, 3431, 3432, - 3436, 3429, 3430, 3433, 3433, 3437, 3422, 3435, 3435, 0, - 3424, 3438, 3438, 3440, 3427, 3439, 3439, 3431, 3432, 3436, - 3440, 3442, 3442, 3444, 3437, 3443, 3443, 3446, 3449, 3450, + 3387, 3391, 3392, 3393, 3380, 3383, 3381, 3392, 3393, 3394, + 3394, 3389, 3390, 3386, 3397, 3398, 3388, 3399, 3400, 3400, + 3391, 3401, 3402, 3403, 3403, 3404, 3401, 3405, 3402, 3407, + 3404, 3408, 3405, 3398, 3397, 3406, 3399, 3408, 3410, 3410, + 3406, 3411, 3412, 3412, 3415, 3414, 3411, 3416, 3407, 3414, + 3417, 3418, 3419, 3420, 3416, 3421, 3423, 3423, 3419, 3425, + 3425, 3427, 3426, 3415, 3428, 3429, 3427, 3430, 3421, 3417, + 3418, 3426, 3420, 3432, 3426, 3431, 3431, 3433, 3432, 3435, + 3430, 3436, 3436, 3428, 3429, 3437, 3438, 3438, 3439, 3439, + 3433, 3440, 3441, 3442, 3443, 3443, 3440, 3444, 3445, 3441, - 3444, 3451, 3446, 3449, 3452, 3452, 3453, 3453, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3450, 0, - 3451, 3457, 3457, 3457, 3457, 3457, 3457, 3457, 3458, 3458, - 3458, 3458, 3458, 3458, 3458, 3459, 3459, 3459, 3459, 3459, - 3459, 3459, 3460, 3460, 3460, 3460, 3460, 3460, 3460, 3461, - 3461, 3461, 3461, 3461, 3461, 3461, 3462, 3462, 3462, 3462, - 3462, 3462, 3462, 3463, 3463, 3463, 3463, 3463, 3463, 3463, - 3465, 3465, 0, 3465, 3465, 3465, 3465, 3466, 3466, 0, - 0, 0, 3466, 3466, 3467, 3467, 0, 0, 3467, 0, - 3467, 3468, 0, 0, 0, 0, 0, 3468, 3469, 3469, + 3445, 3447, 3444, 3448, 3437, 3435, 3446, 3446, 3447, 3449, + 3448, 3450, 3442, 3451, 3453, 3453, 3450, 3454, 3456, 3457, + 3458, 3459, 3463, 3456, 3457, 3460, 3460, 3464, 3449, 3462, + 3462, 0, 3451, 3465, 3465, 3467, 3454, 3466, 3466, 3458, + 3459, 3463, 3467, 3469, 3469, 3471, 3464, 3470, 3470, 3473, + 3476, 3477, 3471, 3478, 3473, 3476, 3479, 3479, 3480, 3480, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3477, 0, 3478, 3484, 3484, 3484, 3484, 3484, 3484, 3484, + 3485, 3485, 3485, 3485, 3485, 3485, 3485, 3486, 3486, 3486, + 3486, 3486, 3486, 3486, 3487, 3487, 3487, 3487, 3487, 3487, - 0, 0, 0, 3469, 3469, 3470, 0, 0, 0, 0, - 0, 3470, 3471, 3471, 0, 3471, 3471, 3471, 3471, 3472, - 0, 0, 0, 0, 0, 3472, 3473, 3473, 0, 0, - 0, 3473, 3473, 3474, 3474, 0, 3474, 3474, 3474, 3474, - 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, - 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, - 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, - 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, 3456, - 3456 + 3487, 3488, 3488, 3488, 3488, 3488, 3488, 3488, 3489, 3489, + 3489, 3489, 3489, 3489, 3489, 3490, 3490, 3490, 3490, 3490, + 3490, 3490, 3492, 3492, 0, 3492, 3492, 3492, 3492, 3493, + 3493, 0, 0, 0, 3493, 3493, 3494, 3494, 0, 0, + 3494, 0, 3494, 3495, 0, 0, 0, 0, 0, 3495, + 3496, 3496, 0, 0, 0, 3496, 3496, 3497, 0, 0, + 0, 0, 0, 3497, 3498, 3498, 0, 3498, 3498, 3498, + 3498, 3499, 0, 0, 0, 0, 0, 3499, 3500, 3500, + 0, 0, 0, 3500, 3500, 3501, 3501, 0, 3501, 3501, + 3501, 3501, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, + + 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, + 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, + 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, + 3483, 3483, 3483 } ; static yy_state_type yy_last_accepting_state; @@ -3262,7 +3285,7 @@ static void config_end_include(void) } #endif -#line 3263 "" +#line 3286 "" #define YY_NO_INPUT 1 #line 191 "./util/configlexer.lex" #ifndef YY_NO_UNPUT @@ -3271,9 +3294,9 @@ static void config_end_include(void) #ifndef YY_NO_INPUT #define YY_NO_INPUT 1 #endif -#line 3272 "" +#line 3295 "" -#line 3274 "" +#line 3297 "" #define INITIAL 0 #define quotedstring 1 @@ -3497,7 +3520,7 @@ YY_DECL { #line 211 "./util/configlexer.lex" -#line 3498 "" +#line 3521 "" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -3530,13 +3553,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 >= 3457 ) + if ( yy_current_state >= 3484 ) 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] != 6741 ); + while ( yy_base[yy_current_state] != 6793 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -4361,616 +4384,616 @@ YY_RULE_SETUP case 160: YY_RULE_SETUP #line 374 "./util/configlexer.lex" -{ YDVAR(1, VAR_IDENTITY) } +{ YDVAR(1, VAR_HIDE_HTTP_USER_AGENT) } YY_BREAK case 161: YY_RULE_SETUP #line 375 "./util/configlexer.lex" -{ YDVAR(1, VAR_VERSION) } +{ YDVAR(1, VAR_IDENTITY) } YY_BREAK case 162: YY_RULE_SETUP #line 376 "./util/configlexer.lex" -{ YDVAR(1, VAR_MODULE_CONF) } +{ YDVAR(1, VAR_VERSION) } YY_BREAK case 163: YY_RULE_SETUP #line 377 "./util/configlexer.lex" -{ YDVAR(1, VAR_DLV_ANCHOR) } +{ YDVAR(1, VAR_HTTP_USER_AGENT) } YY_BREAK case 164: YY_RULE_SETUP #line 378 "./util/configlexer.lex" -{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } +{ YDVAR(1, VAR_MODULE_CONF) } YY_BREAK case 165: YY_RULE_SETUP #line 379 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } +{ YDVAR(1, VAR_DLV_ANCHOR) } YY_BREAK case 166: YY_RULE_SETUP #line 380 "./util/configlexer.lex" -{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } +{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } YY_BREAK case 167: YY_RULE_SETUP #line 381 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } +{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } YY_BREAK case 168: YY_RULE_SETUP #line 382 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR) } +{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } YY_BREAK case 169: YY_RULE_SETUP #line 383 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR_SIGNALING) } +{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } YY_BREAK case 170: YY_RULE_SETUP #line 384 "./util/configlexer.lex" -{ YDVAR(1, VAR_ROOT_KEY_SENTINEL) } +{ YDVAR(1, VAR_TRUST_ANCHOR) } YY_BREAK case 171: YY_RULE_SETUP #line 385 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } +{ YDVAR(1, VAR_TRUST_ANCHOR_SIGNALING) } YY_BREAK case 172: YY_RULE_SETUP #line 386 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } +{ YDVAR(1, VAR_ROOT_KEY_SENTINEL) } YY_BREAK case 173: YY_RULE_SETUP #line 387 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } +{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } YY_BREAK case 174: YY_RULE_SETUP #line 388 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_MAX_RESTART) } +{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } YY_BREAK case 175: YY_RULE_SETUP #line 389 "./util/configlexer.lex" -{ YDVAR(1, VAR_BOGUS_TTL) } +{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } YY_BREAK case 176: YY_RULE_SETUP #line 390 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } +{ YDVAR(1, VAR_VAL_MAX_RESTART) } YY_BREAK case 177: YY_RULE_SETUP #line 391 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } +{ YDVAR(1, VAR_BOGUS_TTL) } YY_BREAK case 178: YY_RULE_SETUP #line 392 "./util/configlexer.lex" -{ YDVAR(1, VAR_AGGRESSIVE_NSEC) } +{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } YY_BREAK case 179: YY_RULE_SETUP #line 393 "./util/configlexer.lex" -{ YDVAR(1, VAR_IGNORE_CD_FLAG) } +{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } YY_BREAK case 180: YY_RULE_SETUP #line 394 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED) } +{ YDVAR(1, VAR_AGGRESSIVE_NSEC) } YY_BREAK case 181: YY_RULE_SETUP #line 395 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_TTL) } +{ YDVAR(1, VAR_IGNORE_CD_FLAG) } YY_BREAK case 182: YY_RULE_SETUP #line 396 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) } +{ YDVAR(1, VAR_SERVE_EXPIRED) } YY_BREAK case 183: YY_RULE_SETUP #line 397 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) } +{ YDVAR(1, VAR_SERVE_EXPIRED_TTL) } YY_BREAK case 184: YY_RULE_SETUP #line 398 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) } +{ YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) } YY_BREAK case 185: YY_RULE_SETUP #line 399 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_ORIGINAL_TTL) } +{ YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) } YY_BREAK case 186: YY_RULE_SETUP #line 400 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAKE_DSA) } +{ YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) } YY_BREAK case 187: YY_RULE_SETUP #line 401 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAKE_SHA1) } +{ YDVAR(1, VAR_SERVE_ORIGINAL_TTL) } YY_BREAK case 188: YY_RULE_SETUP #line 402 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_LOG_LEVEL) } +{ YDVAR(1, VAR_FAKE_DSA) } YY_BREAK case 189: YY_RULE_SETUP #line 403 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SIZE) } +{ YDVAR(1, VAR_FAKE_SHA1) } YY_BREAK case 190: YY_RULE_SETUP #line 404 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SLABS) } +{ YDVAR(1, VAR_VAL_LOG_LEVEL) } YY_BREAK case 191: YY_RULE_SETUP #line 405 "./util/configlexer.lex" -{ YDVAR(1, VAR_NEG_CACHE_SIZE) } +{ YDVAR(1, VAR_KEY_CACHE_SIZE) } YY_BREAK case 192: YY_RULE_SETUP #line 406 "./util/configlexer.lex" -{ - YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } +{ YDVAR(1, VAR_KEY_CACHE_SLABS) } YY_BREAK case 193: YY_RULE_SETUP -#line 408 "./util/configlexer.lex" -{ YDVAR(1, VAR_ZONEMD_PERMISSIVE_MODE) } +#line 407 "./util/configlexer.lex" +{ YDVAR(1, VAR_NEG_CACHE_SIZE) } YY_BREAK case 194: YY_RULE_SETUP -#line 409 "./util/configlexer.lex" -{ YDVAR(1, VAR_ZONEMD_CHECK) } +#line 408 "./util/configlexer.lex" +{ + YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } YY_BREAK case 195: YY_RULE_SETUP #line 410 "./util/configlexer.lex" -{ YDVAR(1, VAR_ZONEMD_REJECT_ABSENCE) } +{ YDVAR(1, VAR_ZONEMD_PERMISSIVE_MODE) } YY_BREAK case 196: YY_RULE_SETUP #line 411 "./util/configlexer.lex" -{ YDVAR(1, VAR_ADD_HOLDDOWN) } +{ YDVAR(1, VAR_ZONEMD_CHECK) } YY_BREAK case 197: YY_RULE_SETUP #line 412 "./util/configlexer.lex" -{ YDVAR(1, VAR_DEL_HOLDDOWN) } +{ YDVAR(1, VAR_ZONEMD_REJECT_ABSENCE) } YY_BREAK case 198: YY_RULE_SETUP #line 413 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEEP_MISSING) } +{ YDVAR(1, VAR_ADD_HOLDDOWN) } YY_BREAK case 199: YY_RULE_SETUP #line 414 "./util/configlexer.lex" -{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } +{ YDVAR(1, VAR_DEL_HOLDDOWN) } YY_BREAK case 200: YY_RULE_SETUP #line 415 "./util/configlexer.lex" -{ YDVAR(1, VAR_USE_SYSLOG) } +{ YDVAR(1, VAR_KEEP_MISSING) } YY_BREAK case 201: YY_RULE_SETUP #line 416 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_IDENTITY) } +{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } YY_BREAK case 202: YY_RULE_SETUP #line 417 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TIME_ASCII) } +{ YDVAR(1, VAR_USE_SYSLOG) } YY_BREAK case 203: YY_RULE_SETUP #line 418 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_QUERIES) } +{ YDVAR(1, VAR_LOG_IDENTITY) } YY_BREAK case 204: YY_RULE_SETUP #line 419 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_REPLIES) } +{ YDVAR(1, VAR_LOG_TIME_ASCII) } YY_BREAK case 205: YY_RULE_SETUP #line 420 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) } +{ YDVAR(1, VAR_LOG_QUERIES) } YY_BREAK case 206: YY_RULE_SETUP #line 421 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) } +{ YDVAR(1, VAR_LOG_REPLIES) } YY_BREAK case 207: YY_RULE_SETUP #line 422 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_SERVFAIL) } +{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) } YY_BREAK case 208: YY_RULE_SETUP #line 423 "./util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE) } +{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) } YY_BREAK case 209: YY_RULE_SETUP #line 424 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA) } +{ YDVAR(1, VAR_LOG_SERVFAIL) } YY_BREAK case 210: YY_RULE_SETUP #line 425 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA_PTR) } +{ YDVAR(2, VAR_LOCAL_ZONE) } YY_BREAK case 211: YY_RULE_SETUP #line 426 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } +{ YDVAR(1, VAR_LOCAL_DATA) } YY_BREAK case 212: YY_RULE_SETUP #line 427 "./util/configlexer.lex" -{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } +{ YDVAR(1, VAR_LOCAL_DATA_PTR) } YY_BREAK case 213: YY_RULE_SETUP #line 428 "./util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_INTERVAL) } +{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } YY_BREAK case 214: YY_RULE_SETUP #line 429 "./util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } +{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } YY_BREAK case 215: YY_RULE_SETUP #line 430 "./util/configlexer.lex" -{ YDVAR(1, VAR_EXTENDED_STATISTICS) } +{ YDVAR(1, VAR_STATISTICS_INTERVAL) } YY_BREAK case 216: YY_RULE_SETUP #line 431 "./util/configlexer.lex" -{ YDVAR(1, VAR_SHM_ENABLE) } +{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } YY_BREAK case 217: YY_RULE_SETUP #line 432 "./util/configlexer.lex" -{ YDVAR(1, VAR_SHM_KEY) } +{ YDVAR(1, VAR_EXTENDED_STATISTICS) } YY_BREAK case 218: YY_RULE_SETUP #line 433 "./util/configlexer.lex" -{ YDVAR(0, VAR_REMOTE_CONTROL) } +{ YDVAR(1, VAR_SHM_ENABLE) } YY_BREAK case 219: YY_RULE_SETUP #line 434 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_ENABLE) } +{ YDVAR(1, VAR_SHM_KEY) } YY_BREAK case 220: YY_RULE_SETUP #line 435 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_INTERFACE) } +{ YDVAR(0, VAR_REMOTE_CONTROL) } YY_BREAK case 221: YY_RULE_SETUP #line 436 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_PORT) } +{ YDVAR(1, VAR_CONTROL_ENABLE) } YY_BREAK case 222: YY_RULE_SETUP #line 437 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_USE_CERT) } +{ YDVAR(1, VAR_CONTROL_INTERFACE) } YY_BREAK case 223: YY_RULE_SETUP #line 438 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_KEY_FILE) } +{ YDVAR(1, VAR_CONTROL_PORT) } YY_BREAK case 224: YY_RULE_SETUP #line 439 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_CERT_FILE) } +{ YDVAR(1, VAR_CONTROL_USE_CERT) } YY_BREAK case 225: YY_RULE_SETUP #line 440 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_KEY_FILE) } +{ YDVAR(1, VAR_SERVER_KEY_FILE) } YY_BREAK case 226: YY_RULE_SETUP #line 441 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_CERT_FILE) } +{ YDVAR(1, VAR_SERVER_CERT_FILE) } YY_BREAK case 227: YY_RULE_SETUP #line 442 "./util/configlexer.lex" -{ YDVAR(1, VAR_PYTHON_SCRIPT) } +{ YDVAR(1, VAR_CONTROL_KEY_FILE) } YY_BREAK case 228: YY_RULE_SETUP #line 443 "./util/configlexer.lex" -{ YDVAR(0, VAR_PYTHON) } +{ YDVAR(1, VAR_CONTROL_CERT_FILE) } YY_BREAK case 229: YY_RULE_SETUP #line 444 "./util/configlexer.lex" -{ YDVAR(1, VAR_DYNLIB_FILE) } +{ YDVAR(1, VAR_PYTHON_SCRIPT) } YY_BREAK case 230: YY_RULE_SETUP #line 445 "./util/configlexer.lex" -{ YDVAR(0, VAR_DYNLIB) } +{ YDVAR(0, VAR_PYTHON) } YY_BREAK case 231: YY_RULE_SETUP #line 446 "./util/configlexer.lex" -{ YDVAR(1, VAR_DOMAIN_INSECURE) } +{ YDVAR(1, VAR_DYNLIB_FILE) } YY_BREAK case 232: YY_RULE_SETUP #line 447 "./util/configlexer.lex" -{ YDVAR(1, VAR_MINIMAL_RESPONSES) } +{ YDVAR(0, VAR_DYNLIB) } YY_BREAK case 233: YY_RULE_SETUP #line 448 "./util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } +{ YDVAR(1, VAR_DOMAIN_INSECURE) } YY_BREAK case 234: YY_RULE_SETUP #line 449 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } +{ YDVAR(1, VAR_MINIMAL_RESPONSES) } YY_BREAK case 235: YY_RULE_SETUP #line 450 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_UDP_SIZE) } +{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } YY_BREAK case 236: YY_RULE_SETUP #line 451 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_PREFIX) } +{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } YY_BREAK case 237: YY_RULE_SETUP #line 452 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_SYNTHALL) } +{ YDVAR(1, VAR_MAX_UDP_SIZE) } YY_BREAK case 238: YY_RULE_SETUP #line 453 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } +{ YDVAR(1, VAR_DNS64_PREFIX) } YY_BREAK case 239: YY_RULE_SETUP #line 454 "./util/configlexer.lex" -{ YDVAR(1, VAR_DEFINE_TAG) } +{ YDVAR(1, VAR_DNS64_SYNTHALL) } YY_BREAK case 240: YY_RULE_SETUP #line 455 "./util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } +{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } YY_BREAK case 241: YY_RULE_SETUP #line 456 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } +{ YDVAR(1, VAR_DEFINE_TAG) } YY_BREAK case 242: YY_RULE_SETUP #line 457 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } +{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } YY_BREAK case 243: YY_RULE_SETUP #line 458 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } +{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } YY_BREAK case 244: YY_RULE_SETUP #line 459 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } YY_BREAK case 245: YY_RULE_SETUP #line 460 "./util/configlexer.lex" -{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } YY_BREAK case 246: YY_RULE_SETUP #line 461 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSTAP) } +{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } YY_BREAK case 247: YY_RULE_SETUP #line 462 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_ENABLE) } +{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } YY_BREAK case 248: YY_RULE_SETUP #line 463 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_BIDIRECTIONAL) } +{ YDVAR(0, VAR_DNSTAP) } YY_BREAK case 249: YY_RULE_SETUP #line 464 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } +{ YDVAR(1, VAR_DNSTAP_ENABLE) } YY_BREAK case 250: YY_RULE_SETUP #line 465 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IP) } +{ YDVAR(1, VAR_DNSTAP_BIDIRECTIONAL) } YY_BREAK case 251: YY_RULE_SETUP #line 466 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS) } +{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } YY_BREAK case 252: YY_RULE_SETUP #line 467 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } +{ YDVAR(1, VAR_DNSTAP_IP) } YY_BREAK case 253: YY_RULE_SETUP #line 468 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } +{ YDVAR(1, VAR_DNSTAP_TLS) } YY_BREAK case 254: YY_RULE_SETUP #line 469 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } +{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } YY_BREAK case 255: YY_RULE_SETUP -#line 471 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } +#line 470 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } YY_BREAK case 256: YY_RULE_SETUP -#line 473 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } +#line 471 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } YY_BREAK case 257: YY_RULE_SETUP -#line 474 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } +#line 473 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } YY_BREAK case 258: YY_RULE_SETUP #line 475 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IDENTITY) } +{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } YY_BREAK case 259: YY_RULE_SETUP #line 476 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_VERSION) } +{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } YY_BREAK case 260: YY_RULE_SETUP #line 477 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } +{ YDVAR(1, VAR_DNSTAP_IDENTITY) } YY_BREAK case 261: YY_RULE_SETUP -#line 479 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } +#line 478 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_VERSION) } YY_BREAK case 262: YY_RULE_SETUP -#line 481 "./util/configlexer.lex" +#line 479 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } YY_BREAK case 263: YY_RULE_SETUP -#line 483 "./util/configlexer.lex" +#line 481 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } YY_BREAK case 264: YY_RULE_SETUP -#line 485 "./util/configlexer.lex" +#line 483 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } YY_BREAK case 265: YY_RULE_SETUP -#line 487 "./util/configlexer.lex" +#line 485 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } YY_BREAK case 266: YY_RULE_SETUP -#line 489 "./util/configlexer.lex" -{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } +#line 487 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } YY_BREAK case 267: YY_RULE_SETUP -#line 490 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT) } +#line 489 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } YY_BREAK case 268: YY_RULE_SETUP #line 491 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT) } +{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } YY_BREAK case 269: YY_RULE_SETUP #line 492 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_IP_RATELIMIT) } YY_BREAK case 270: YY_RULE_SETUP #line 493 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_RATELIMIT) } YY_BREAK case 271: YY_RULE_SETUP #line 494 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } YY_BREAK case 272: YY_RULE_SETUP #line 495 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_RATELIMIT_SLABS) } YY_BREAK case 273: YY_RULE_SETUP #line 496 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } +{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } YY_BREAK case 274: YY_RULE_SETUP #line 497 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } +{ YDVAR(1, VAR_RATELIMIT_SIZE) } YY_BREAK case 275: YY_RULE_SETUP #line 498 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } +{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } YY_BREAK case 276: YY_RULE_SETUP #line 499 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_FACTOR) } +{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } YY_BREAK case 277: YY_RULE_SETUP #line 500 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOW_RTT) } +{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } YY_BREAK case 278: YY_RULE_SETUP #line 501 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_NUM) } +{ YDVAR(1, VAR_RATELIMIT_FACTOR) } YY_BREAK case 279: YY_RULE_SETUP #line 502 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } +{ YDVAR(1, VAR_LOW_RTT) } YY_BREAK case 280: YY_RULE_SETUP #line 503 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } +{ YDVAR(1, VAR_FAST_SERVER_NUM) } YY_BREAK case 281: YY_RULE_SETUP @@ -4980,240 +5003,250 @@ YY_RULE_SETUP case 282: YY_RULE_SETUP #line 505 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_TAG) } +{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 283: YY_RULE_SETUP #line 506 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP) } +{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 284: YY_RULE_SETUP #line 507 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_DATA) } +{ YDVAR(2, VAR_RESPONSE_IP_TAG) } YY_BREAK case 285: YY_RULE_SETUP #line 508 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSCRYPT) } +{ YDVAR(2, VAR_RESPONSE_IP) } YY_BREAK case 286: YY_RULE_SETUP #line 509 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } +{ YDVAR(2, VAR_RESPONSE_IP_DATA) } YY_BREAK case 287: YY_RULE_SETUP #line 510 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PORT) } +{ YDVAR(0, VAR_DNSCRYPT) } YY_BREAK case 288: YY_RULE_SETUP #line 511 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } +{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } YY_BREAK case 289: YY_RULE_SETUP #line 512 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } +{ YDVAR(1, VAR_DNSCRYPT_PORT) } YY_BREAK case 290: YY_RULE_SETUP #line 513 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } YY_BREAK case 291: YY_RULE_SETUP #line 514 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } +{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } YY_BREAK case 292: YY_RULE_SETUP #line 515 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } YY_BREAK case 293: YY_RULE_SETUP -#line 517 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } +#line 516 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } YY_BREAK case 294: YY_RULE_SETUP -#line 519 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } +#line 517 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } YY_BREAK case 295: YY_RULE_SETUP -#line 520 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } +#line 519 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } YY_BREAK case 296: YY_RULE_SETUP #line 521 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_RESPONSES) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } YY_BREAK case 297: YY_RULE_SETUP #line 522 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } YY_BREAK case 298: YY_RULE_SETUP #line 523 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_QUERIES) } +{ YDVAR(1, VAR_PAD_RESPONSES) } YY_BREAK case 299: YY_RULE_SETUP #line 524 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) } +{ YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) } YY_BREAK case 300: YY_RULE_SETUP #line 525 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_ENABLED) } +{ YDVAR(1, VAR_PAD_QUERIES) } YY_BREAK case 301: YY_RULE_SETUP #line 526 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } +{ YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) } YY_BREAK case 302: YY_RULE_SETUP #line 527 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_HOOK) } +{ YDVAR(1, VAR_IPSECMOD_ENABLED) } YY_BREAK case 303: YY_RULE_SETUP #line 528 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } +{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } YY_BREAK case 304: YY_RULE_SETUP #line 529 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } +{ YDVAR(1, VAR_IPSECMOD_HOOK) } YY_BREAK case 305: YY_RULE_SETUP #line 530 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } +{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } YY_BREAK case 306: YY_RULE_SETUP #line 531 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_STRICT) } +{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } YY_BREAK case 307: YY_RULE_SETUP #line 532 "./util/configlexer.lex" -{ YDVAR(0, VAR_CACHEDB) } +{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } YY_BREAK case 308: YY_RULE_SETUP #line 533 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_BACKEND) } +{ YDVAR(1, VAR_IPSECMOD_STRICT) } YY_BREAK case 309: YY_RULE_SETUP #line 534 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } +{ YDVAR(0, VAR_CACHEDB) } YY_BREAK case 310: YY_RULE_SETUP #line 535 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISHOST) } +{ YDVAR(1, VAR_CACHEDB_BACKEND) } YY_BREAK case 311: YY_RULE_SETUP #line 536 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISPORT) } +{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } YY_BREAK case 312: YY_RULE_SETUP #line 537 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } +{ YDVAR(1, VAR_CACHEDB_REDISHOST) } YY_BREAK case 313: YY_RULE_SETUP #line 538 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } +{ YDVAR(1, VAR_CACHEDB_REDISPORT) } YY_BREAK case 314: YY_RULE_SETUP #line 539 "./util/configlexer.lex" -{ YDVAR(0, VAR_IPSET) } +{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } YY_BREAK case 315: YY_RULE_SETUP #line 540 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V4) } +{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } YY_BREAK case 316: YY_RULE_SETUP #line 541 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V6) } +{ YDVAR(0, VAR_IPSET) } YY_BREAK case 317: YY_RULE_SETUP #line 542 "./util/configlexer.lex" -{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } +{ YDVAR(1, VAR_IPSET_NAME_V4) } YY_BREAK case 318: YY_RULE_SETUP #line 543 "./util/configlexer.lex" -{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } +{ YDVAR(1, VAR_IPSET_NAME_V6) } YY_BREAK case 319: YY_RULE_SETUP #line 544 "./util/configlexer.lex" -{ YDVAR(2, VAR_EDNS_CLIENT_STRING) } +{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } YY_BREAK case 320: YY_RULE_SETUP #line 545 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) } +{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } YY_BREAK case 321: YY_RULE_SETUP #line 546 "./util/configlexer.lex" -{ YDVAR(1, VAR_NSID ) } +{ YDVAR(2, VAR_EDNS_CLIENT_STRING) } YY_BREAK case 322: -/* rule 322 can match eol */ YY_RULE_SETUP #line 547 "./util/configlexer.lex" +{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) } + YY_BREAK +case 323: +YY_RULE_SETUP +#line 548 "./util/configlexer.lex" +{ YDVAR(1, VAR_NSID ) } + YY_BREAK +case 324: +/* rule 324 can match eol */ +YY_RULE_SETUP +#line 549 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK /* Quoted strings. Strip leading and ending quotes */ -case 323: +case 325: YY_RULE_SETUP -#line 550 "./util/configlexer.lex" +#line 552 "./util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 551 "./util/configlexer.lex" +#line 553 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 324: +case 326: YY_RULE_SETUP -#line 556 "./util/configlexer.lex" +#line 558 "./util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK -case 325: -/* rule 325 can match eol */ +case 327: +/* rule 327 can match eol */ YY_RULE_SETUP -#line 557 "./util/configlexer.lex" +#line 559 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 326: +case 328: YY_RULE_SETUP -#line 559 "./util/configlexer.lex" +#line 561 "./util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -5226,34 +5259,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 327: +case 329: YY_RULE_SETUP -#line 571 "./util/configlexer.lex" +#line 573 "./util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 572 "./util/configlexer.lex" +#line 574 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 328: +case 330: YY_RULE_SETUP -#line 577 "./util/configlexer.lex" +#line 579 "./util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK -case 329: -/* rule 329 can match eol */ +case 331: +/* rule 331 can match eol */ YY_RULE_SETUP -#line 578 "./util/configlexer.lex" +#line 580 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 330: +case 332: YY_RULE_SETUP -#line 580 "./util/configlexer.lex" +#line 582 "./util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -5266,38 +5299,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 331: +case 333: YY_RULE_SETUP -#line 592 "./util/configlexer.lex" +#line 594 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 594 "./util/configlexer.lex" +#line 596 "./util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); } YY_BREAK -case 332: -YY_RULE_SETUP -#line 598 "./util/configlexer.lex" -{ LEXOUT(("ISP ")); /* ignore */ } - YY_BREAK -case 333: -/* rule 333 can match eol */ -YY_RULE_SETUP -#line 599 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++;} - YY_BREAK case 334: YY_RULE_SETUP #line 600 "./util/configlexer.lex" -{ LEXOUT(("IQS ")); BEGIN(include_quoted); } +{ LEXOUT(("ISP ")); /* ignore */ } YY_BREAK case 335: +/* rule 335 can match eol */ YY_RULE_SETUP #line 601 "./util/configlexer.lex" +{ LEXOUT(("NL\n")); cfg_parser->line++;} + YY_BREAK +case 336: +YY_RULE_SETUP +#line 602 "./util/configlexer.lex" +{ LEXOUT(("IQS ")); BEGIN(include_quoted); } + YY_BREAK +case 337: +YY_RULE_SETUP +#line 603 "./util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 0); @@ -5305,27 +5338,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 606 "./util/configlexer.lex" +#line 608 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 336: +case 338: YY_RULE_SETUP -#line 610 "./util/configlexer.lex" +#line 612 "./util/configlexer.lex" { LEXOUT(("ISTR(%s) ", yytext)); yymore(); } YY_BREAK -case 337: -/* rule 337 can match eol */ +case 339: +/* rule 339 can match eol */ YY_RULE_SETUP -#line 611 "./util/configlexer.lex" +#line 613 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 338: +case 340: YY_RULE_SETUP -#line 613 "./util/configlexer.lex" +#line 615 "./util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -5335,7 +5368,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 619 "./util/configlexer.lex" +#line 621 "./util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ @@ -5350,39 +5383,39 @@ case YY_STATE_EOF(val): } YY_BREAK /* include-toplevel: directive */ -case 339: +case 341: YY_RULE_SETUP -#line 633 "./util/configlexer.lex" +#line 635 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include_toplevel); } YY_BREAK case YY_STATE_EOF(include_toplevel): -#line 636 "./util/configlexer.lex" +#line 638 "./util/configlexer.lex" { yyerror("EOF inside include_toplevel directive"); BEGIN(inc_prev); } YY_BREAK -case 340: -YY_RULE_SETUP -#line 640 "./util/configlexer.lex" -{ LEXOUT(("ITSP ")); /* ignore */ } - YY_BREAK -case 341: -/* rule 341 can match eol */ -YY_RULE_SETUP -#line 641 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++; } - YY_BREAK case 342: YY_RULE_SETUP #line 642 "./util/configlexer.lex" -{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } +{ LEXOUT(("ITSP ")); /* ignore */ } YY_BREAK case 343: +/* rule 343 can match eol */ YY_RULE_SETUP #line 643 "./util/configlexer.lex" +{ LEXOUT(("NL\n")); cfg_parser->line++; } + YY_BREAK +case 344: +YY_RULE_SETUP +#line 644 "./util/configlexer.lex" +{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } + YY_BREAK +case 345: +YY_RULE_SETUP +#line 645 "./util/configlexer.lex" { LEXOUT(("ITunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 1); @@ -5391,29 +5424,29 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_toplevel_quoted): -#line 649 "./util/configlexer.lex" +#line 651 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 344: +case 346: YY_RULE_SETUP -#line 653 "./util/configlexer.lex" +#line 655 "./util/configlexer.lex" { LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } YY_BREAK -case 345: -/* rule 345 can match eol */ +case 347: +/* rule 347 can match eol */ YY_RULE_SETUP -#line 654 "./util/configlexer.lex" +#line 656 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 346: +case 348: YY_RULE_SETUP -#line 658 "./util/configlexer.lex" +#line 660 "./util/configlexer.lex" { LEXOUT(("ITQE ")); yytext[yyleng - 1] = '\0'; @@ -5422,33 +5455,33 @@ YY_RULE_SETUP return (VAR_FORCE_TOPLEVEL); } YY_BREAK -case 347: +case 349: YY_RULE_SETUP -#line 666 "./util/configlexer.lex" +#line 668 "./util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 348: +case 350: YY_RULE_SETUP -#line 670 "./util/configlexer.lex" +#line 672 "./util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 349: +case 351: YY_RULE_SETUP -#line 674 "./util/configlexer.lex" +#line 676 "./util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 350: +case 352: YY_RULE_SETUP -#line 678 "./util/configlexer.lex" +#line 680 "./util/configlexer.lex" ECHO; YY_BREAK -#line 5449 "" +#line 5482 "" case YY_END_OF_BUFFER: { @@ -5743,7 +5776,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 >= 3457 ) + if ( yy_current_state >= 3484 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -5771,11 +5804,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 >= 3457 ) + if ( yy_current_state >= 3484 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 3456); + yy_is_jam = (yy_current_state == 3483); return yy_is_jam ? 0 : yy_current_state; } @@ -6414,6 +6447,6 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 678 "./util/configlexer.lex" +#line 680 "./util/configlexer.lex" diff --git a/util/configlexer.lex b/util/configlexer.lex index 79ff3fec0..dbfc17d49 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -371,8 +371,10 @@ max-ecs-tree-size-ipv6{COLON} { YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV6) } hide-identity{COLON} { YDVAR(1, VAR_HIDE_IDENTITY) } hide-version{COLON} { YDVAR(1, VAR_HIDE_VERSION) } hide-trustanchor{COLON} { YDVAR(1, VAR_HIDE_TRUSTANCHOR) } +hide-http-user-agent{COLON} { YDVAR(1, VAR_HIDE_HTTP_USER_AGENT) } identity{COLON} { YDVAR(1, VAR_IDENTITY) } version{COLON} { YDVAR(1, VAR_VERSION) } +http-user-agent{COLON} { YDVAR(1, VAR_HTTP_USER_AGENT) } module-config{COLON} { YDVAR(1, VAR_MODULE_CONF) } dlv-anchor{COLON} { YDVAR(1, VAR_DLV_ANCHOR) } dlv-anchor-file{COLON} { YDVAR(1, VAR_DLV_ANCHOR_FILE) } diff --git a/util/configparser.c b/util/configparser.c index 31de34c72..d2fceed4d 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -362,425 +362,429 @@ enum yysymbol_kind_t YYSYMBOL_VAR_FAKE_SHA1 = 235, /* VAR_FAKE_SHA1 */ YYSYMBOL_VAR_LOG_IDENTITY = 236, /* VAR_LOG_IDENTITY */ YYSYMBOL_VAR_HIDE_TRUSTANCHOR = 237, /* VAR_HIDE_TRUSTANCHOR */ - YYSYMBOL_VAR_TRUST_ANCHOR_SIGNALING = 238, /* VAR_TRUST_ANCHOR_SIGNALING */ - YYSYMBOL_VAR_AGGRESSIVE_NSEC = 239, /* VAR_AGGRESSIVE_NSEC */ - YYSYMBOL_VAR_USE_SYSTEMD = 240, /* VAR_USE_SYSTEMD */ - YYSYMBOL_VAR_SHM_ENABLE = 241, /* VAR_SHM_ENABLE */ - YYSYMBOL_VAR_SHM_KEY = 242, /* VAR_SHM_KEY */ - YYSYMBOL_VAR_ROOT_KEY_SENTINEL = 243, /* VAR_ROOT_KEY_SENTINEL */ - YYSYMBOL_VAR_DNSCRYPT = 244, /* VAR_DNSCRYPT */ - YYSYMBOL_VAR_DNSCRYPT_ENABLE = 245, /* VAR_DNSCRYPT_ENABLE */ - YYSYMBOL_VAR_DNSCRYPT_PORT = 246, /* VAR_DNSCRYPT_PORT */ - YYSYMBOL_VAR_DNSCRYPT_PROVIDER = 247, /* VAR_DNSCRYPT_PROVIDER */ - YYSYMBOL_VAR_DNSCRYPT_SECRET_KEY = 248, /* VAR_DNSCRYPT_SECRET_KEY */ - YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT = 249, /* VAR_DNSCRYPT_PROVIDER_CERT */ - YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 250, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ - YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 251, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ - YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 252, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ - YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SIZE = 253, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ - YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SLABS = 254, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ - YYSYMBOL_VAR_PAD_RESPONSES = 255, /* VAR_PAD_RESPONSES */ - YYSYMBOL_VAR_PAD_RESPONSES_BLOCK_SIZE = 256, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ - YYSYMBOL_VAR_PAD_QUERIES = 257, /* VAR_PAD_QUERIES */ - YYSYMBOL_VAR_PAD_QUERIES_BLOCK_SIZE = 258, /* VAR_PAD_QUERIES_BLOCK_SIZE */ - YYSYMBOL_VAR_IPSECMOD_ENABLED = 259, /* VAR_IPSECMOD_ENABLED */ - YYSYMBOL_VAR_IPSECMOD_HOOK = 260, /* VAR_IPSECMOD_HOOK */ - YYSYMBOL_VAR_IPSECMOD_IGNORE_BOGUS = 261, /* VAR_IPSECMOD_IGNORE_BOGUS */ - YYSYMBOL_VAR_IPSECMOD_MAX_TTL = 262, /* VAR_IPSECMOD_MAX_TTL */ - YYSYMBOL_VAR_IPSECMOD_WHITELIST = 263, /* VAR_IPSECMOD_WHITELIST */ - YYSYMBOL_VAR_IPSECMOD_STRICT = 264, /* VAR_IPSECMOD_STRICT */ - YYSYMBOL_VAR_CACHEDB = 265, /* VAR_CACHEDB */ - YYSYMBOL_VAR_CACHEDB_BACKEND = 266, /* VAR_CACHEDB_BACKEND */ - YYSYMBOL_VAR_CACHEDB_SECRETSEED = 267, /* VAR_CACHEDB_SECRETSEED */ - YYSYMBOL_VAR_CACHEDB_REDISHOST = 268, /* VAR_CACHEDB_REDISHOST */ - YYSYMBOL_VAR_CACHEDB_REDISPORT = 269, /* VAR_CACHEDB_REDISPORT */ - YYSYMBOL_VAR_CACHEDB_REDISTIMEOUT = 270, /* VAR_CACHEDB_REDISTIMEOUT */ - YYSYMBOL_VAR_CACHEDB_REDISEXPIRERECORDS = 271, /* VAR_CACHEDB_REDISEXPIRERECORDS */ - YYSYMBOL_VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 272, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ - YYSYMBOL_VAR_FOR_UPSTREAM = 273, /* VAR_FOR_UPSTREAM */ - YYSYMBOL_VAR_AUTH_ZONE = 274, /* VAR_AUTH_ZONE */ - YYSYMBOL_VAR_ZONEFILE = 275, /* VAR_ZONEFILE */ - YYSYMBOL_VAR_MASTER = 276, /* VAR_MASTER */ - YYSYMBOL_VAR_URL = 277, /* VAR_URL */ - YYSYMBOL_VAR_FOR_DOWNSTREAM = 278, /* VAR_FOR_DOWNSTREAM */ - YYSYMBOL_VAR_FALLBACK_ENABLED = 279, /* VAR_FALLBACK_ENABLED */ - YYSYMBOL_VAR_TLS_ADDITIONAL_PORT = 280, /* VAR_TLS_ADDITIONAL_PORT */ - YYSYMBOL_VAR_LOW_RTT = 281, /* VAR_LOW_RTT */ - YYSYMBOL_VAR_LOW_RTT_PERMIL = 282, /* VAR_LOW_RTT_PERMIL */ - YYSYMBOL_VAR_FAST_SERVER_PERMIL = 283, /* VAR_FAST_SERVER_PERMIL */ - YYSYMBOL_VAR_FAST_SERVER_NUM = 284, /* VAR_FAST_SERVER_NUM */ - YYSYMBOL_VAR_ALLOW_NOTIFY = 285, /* VAR_ALLOW_NOTIFY */ - YYSYMBOL_VAR_TLS_WIN_CERT = 286, /* VAR_TLS_WIN_CERT */ - YYSYMBOL_VAR_TCP_CONNECTION_LIMIT = 287, /* VAR_TCP_CONNECTION_LIMIT */ - YYSYMBOL_VAR_FORWARD_NO_CACHE = 288, /* VAR_FORWARD_NO_CACHE */ - YYSYMBOL_VAR_STUB_NO_CACHE = 289, /* VAR_STUB_NO_CACHE */ - YYSYMBOL_VAR_LOG_SERVFAIL = 290, /* VAR_LOG_SERVFAIL */ - YYSYMBOL_VAR_DENY_ANY = 291, /* VAR_DENY_ANY */ - YYSYMBOL_VAR_UNKNOWN_SERVER_TIME_LIMIT = 292, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ - YYSYMBOL_VAR_LOG_TAG_QUERYREPLY = 293, /* VAR_LOG_TAG_QUERYREPLY */ - YYSYMBOL_VAR_STREAM_WAIT_SIZE = 294, /* VAR_STREAM_WAIT_SIZE */ - YYSYMBOL_VAR_TLS_CIPHERS = 295, /* VAR_TLS_CIPHERS */ - YYSYMBOL_VAR_TLS_CIPHERSUITES = 296, /* VAR_TLS_CIPHERSUITES */ - YYSYMBOL_VAR_TLS_USE_SNI = 297, /* VAR_TLS_USE_SNI */ - YYSYMBOL_VAR_IPSET = 298, /* VAR_IPSET */ - YYSYMBOL_VAR_IPSET_NAME_V4 = 299, /* VAR_IPSET_NAME_V4 */ - YYSYMBOL_VAR_IPSET_NAME_V6 = 300, /* VAR_IPSET_NAME_V6 */ - YYSYMBOL_VAR_TLS_SESSION_TICKET_KEYS = 301, /* VAR_TLS_SESSION_TICKET_KEYS */ - YYSYMBOL_VAR_RPZ = 302, /* VAR_RPZ */ - YYSYMBOL_VAR_TAGS = 303, /* VAR_TAGS */ - YYSYMBOL_VAR_RPZ_ACTION_OVERRIDE = 304, /* VAR_RPZ_ACTION_OVERRIDE */ - YYSYMBOL_VAR_RPZ_CNAME_OVERRIDE = 305, /* VAR_RPZ_CNAME_OVERRIDE */ - YYSYMBOL_VAR_RPZ_LOG = 306, /* VAR_RPZ_LOG */ - YYSYMBOL_VAR_RPZ_LOG_NAME = 307, /* VAR_RPZ_LOG_NAME */ - YYSYMBOL_VAR_DYNLIB = 308, /* VAR_DYNLIB */ - YYSYMBOL_VAR_DYNLIB_FILE = 309, /* VAR_DYNLIB_FILE */ - YYSYMBOL_VAR_EDNS_CLIENT_STRING = 310, /* VAR_EDNS_CLIENT_STRING */ - YYSYMBOL_VAR_EDNS_CLIENT_STRING_OPCODE = 311, /* VAR_EDNS_CLIENT_STRING_OPCODE */ - YYSYMBOL_VAR_NSID = 312, /* VAR_NSID */ - YYSYMBOL_VAR_ZONEMD_PERMISSIVE_MODE = 313, /* VAR_ZONEMD_PERMISSIVE_MODE */ - YYSYMBOL_VAR_ZONEMD_CHECK = 314, /* VAR_ZONEMD_CHECK */ - YYSYMBOL_VAR_ZONEMD_REJECT_ABSENCE = 315, /* VAR_ZONEMD_REJECT_ABSENCE */ - YYSYMBOL_YYACCEPT = 316, /* $accept */ - YYSYMBOL_toplevelvars = 317, /* toplevelvars */ - YYSYMBOL_toplevelvar = 318, /* toplevelvar */ - YYSYMBOL_force_toplevel = 319, /* force_toplevel */ - YYSYMBOL_serverstart = 320, /* serverstart */ - YYSYMBOL_contents_server = 321, /* contents_server */ - YYSYMBOL_content_server = 322, /* content_server */ - YYSYMBOL_stubstart = 323, /* stubstart */ - YYSYMBOL_contents_stub = 324, /* contents_stub */ - YYSYMBOL_content_stub = 325, /* content_stub */ - YYSYMBOL_forwardstart = 326, /* forwardstart */ - YYSYMBOL_contents_forward = 327, /* contents_forward */ - YYSYMBOL_content_forward = 328, /* content_forward */ - YYSYMBOL_viewstart = 329, /* viewstart */ - YYSYMBOL_contents_view = 330, /* contents_view */ - YYSYMBOL_content_view = 331, /* content_view */ - YYSYMBOL_authstart = 332, /* authstart */ - YYSYMBOL_contents_auth = 333, /* contents_auth */ - YYSYMBOL_content_auth = 334, /* content_auth */ - YYSYMBOL_rpz_tag = 335, /* rpz_tag */ - YYSYMBOL_rpz_action_override = 336, /* rpz_action_override */ - YYSYMBOL_rpz_cname_override = 337, /* rpz_cname_override */ - YYSYMBOL_rpz_log = 338, /* rpz_log */ - YYSYMBOL_rpz_log_name = 339, /* rpz_log_name */ - YYSYMBOL_rpzstart = 340, /* rpzstart */ - YYSYMBOL_contents_rpz = 341, /* contents_rpz */ - YYSYMBOL_content_rpz = 342, /* content_rpz */ - YYSYMBOL_server_num_threads = 343, /* server_num_threads */ - YYSYMBOL_server_verbosity = 344, /* server_verbosity */ - YYSYMBOL_server_statistics_interval = 345, /* server_statistics_interval */ - YYSYMBOL_server_statistics_cumulative = 346, /* server_statistics_cumulative */ - YYSYMBOL_server_extended_statistics = 347, /* server_extended_statistics */ - YYSYMBOL_server_shm_enable = 348, /* server_shm_enable */ - YYSYMBOL_server_shm_key = 349, /* server_shm_key */ - YYSYMBOL_server_port = 350, /* server_port */ - YYSYMBOL_server_send_client_subnet = 351, /* server_send_client_subnet */ - YYSYMBOL_server_client_subnet_zone = 352, /* server_client_subnet_zone */ - YYSYMBOL_server_client_subnet_always_forward = 353, /* server_client_subnet_always_forward */ - YYSYMBOL_server_client_subnet_opcode = 354, /* server_client_subnet_opcode */ - YYSYMBOL_server_max_client_subnet_ipv4 = 355, /* server_max_client_subnet_ipv4 */ - YYSYMBOL_server_max_client_subnet_ipv6 = 356, /* server_max_client_subnet_ipv6 */ - YYSYMBOL_server_min_client_subnet_ipv4 = 357, /* server_min_client_subnet_ipv4 */ - YYSYMBOL_server_min_client_subnet_ipv6 = 358, /* server_min_client_subnet_ipv6 */ - YYSYMBOL_server_max_ecs_tree_size_ipv4 = 359, /* server_max_ecs_tree_size_ipv4 */ - YYSYMBOL_server_max_ecs_tree_size_ipv6 = 360, /* server_max_ecs_tree_size_ipv6 */ - YYSYMBOL_server_interface = 361, /* server_interface */ - YYSYMBOL_server_outgoing_interface = 362, /* server_outgoing_interface */ - YYSYMBOL_server_outgoing_range = 363, /* server_outgoing_range */ - YYSYMBOL_server_outgoing_port_permit = 364, /* server_outgoing_port_permit */ - YYSYMBOL_server_outgoing_port_avoid = 365, /* server_outgoing_port_avoid */ - YYSYMBOL_server_outgoing_num_tcp = 366, /* server_outgoing_num_tcp */ - YYSYMBOL_server_incoming_num_tcp = 367, /* server_incoming_num_tcp */ - YYSYMBOL_server_interface_automatic = 368, /* server_interface_automatic */ - YYSYMBOL_server_do_ip4 = 369, /* server_do_ip4 */ - YYSYMBOL_server_do_ip6 = 370, /* server_do_ip6 */ - YYSYMBOL_server_do_udp = 371, /* server_do_udp */ - YYSYMBOL_server_do_tcp = 372, /* server_do_tcp */ - YYSYMBOL_server_prefer_ip4 = 373, /* server_prefer_ip4 */ - YYSYMBOL_server_prefer_ip6 = 374, /* server_prefer_ip6 */ - YYSYMBOL_server_tcp_mss = 375, /* server_tcp_mss */ - YYSYMBOL_server_outgoing_tcp_mss = 376, /* server_outgoing_tcp_mss */ - YYSYMBOL_server_tcp_idle_timeout = 377, /* server_tcp_idle_timeout */ - YYSYMBOL_server_max_reuse_tcp_queries = 378, /* server_max_reuse_tcp_queries */ - YYSYMBOL_server_tcp_reuse_timeout = 379, /* server_tcp_reuse_timeout */ - YYSYMBOL_server_tcp_auth_query_timeout = 380, /* server_tcp_auth_query_timeout */ - YYSYMBOL_server_tcp_keepalive = 381, /* server_tcp_keepalive */ - YYSYMBOL_server_tcp_keepalive_timeout = 382, /* server_tcp_keepalive_timeout */ - YYSYMBOL_server_tcp_upstream = 383, /* server_tcp_upstream */ - YYSYMBOL_server_udp_upstream_without_downstream = 384, /* server_udp_upstream_without_downstream */ - YYSYMBOL_server_ssl_upstream = 385, /* server_ssl_upstream */ - YYSYMBOL_server_ssl_service_key = 386, /* server_ssl_service_key */ - YYSYMBOL_server_ssl_service_pem = 387, /* server_ssl_service_pem */ - YYSYMBOL_server_ssl_port = 388, /* server_ssl_port */ - YYSYMBOL_server_tls_cert_bundle = 389, /* server_tls_cert_bundle */ - YYSYMBOL_server_tls_win_cert = 390, /* server_tls_win_cert */ - YYSYMBOL_server_tls_additional_port = 391, /* server_tls_additional_port */ - YYSYMBOL_server_tls_ciphers = 392, /* server_tls_ciphers */ - YYSYMBOL_server_tls_ciphersuites = 393, /* server_tls_ciphersuites */ - YYSYMBOL_server_tls_session_ticket_keys = 394, /* server_tls_session_ticket_keys */ - YYSYMBOL_server_tls_use_sni = 395, /* server_tls_use_sni */ - YYSYMBOL_server_https_port = 396, /* server_https_port */ - YYSYMBOL_server_http_endpoint = 397, /* server_http_endpoint */ - YYSYMBOL_server_http_max_streams = 398, /* server_http_max_streams */ - YYSYMBOL_server_http_query_buffer_size = 399, /* server_http_query_buffer_size */ - YYSYMBOL_server_http_response_buffer_size = 400, /* server_http_response_buffer_size */ - YYSYMBOL_server_http_nodelay = 401, /* server_http_nodelay */ - YYSYMBOL_server_http_notls_downstream = 402, /* server_http_notls_downstream */ - YYSYMBOL_server_use_systemd = 403, /* server_use_systemd */ - YYSYMBOL_server_do_daemonize = 404, /* server_do_daemonize */ - YYSYMBOL_server_use_syslog = 405, /* server_use_syslog */ - YYSYMBOL_server_log_time_ascii = 406, /* server_log_time_ascii */ - YYSYMBOL_server_log_queries = 407, /* server_log_queries */ - YYSYMBOL_server_log_replies = 408, /* server_log_replies */ - YYSYMBOL_server_log_tag_queryreply = 409, /* server_log_tag_queryreply */ - YYSYMBOL_server_log_servfail = 410, /* server_log_servfail */ - YYSYMBOL_server_log_local_actions = 411, /* server_log_local_actions */ - YYSYMBOL_server_chroot = 412, /* server_chroot */ - YYSYMBOL_server_username = 413, /* server_username */ - YYSYMBOL_server_directory = 414, /* server_directory */ - YYSYMBOL_server_logfile = 415, /* server_logfile */ - YYSYMBOL_server_pidfile = 416, /* server_pidfile */ - YYSYMBOL_server_root_hints = 417, /* server_root_hints */ - YYSYMBOL_server_dlv_anchor_file = 418, /* server_dlv_anchor_file */ - YYSYMBOL_server_dlv_anchor = 419, /* server_dlv_anchor */ - YYSYMBOL_server_auto_trust_anchor_file = 420, /* server_auto_trust_anchor_file */ - YYSYMBOL_server_trust_anchor_file = 421, /* server_trust_anchor_file */ - YYSYMBOL_server_trusted_keys_file = 422, /* server_trusted_keys_file */ - YYSYMBOL_server_trust_anchor = 423, /* server_trust_anchor */ - YYSYMBOL_server_trust_anchor_signaling = 424, /* server_trust_anchor_signaling */ - YYSYMBOL_server_root_key_sentinel = 425, /* server_root_key_sentinel */ - YYSYMBOL_server_domain_insecure = 426, /* server_domain_insecure */ - YYSYMBOL_server_hide_identity = 427, /* server_hide_identity */ - YYSYMBOL_server_hide_version = 428, /* server_hide_version */ - YYSYMBOL_server_hide_trustanchor = 429, /* server_hide_trustanchor */ - YYSYMBOL_server_identity = 430, /* server_identity */ - YYSYMBOL_server_version = 431, /* server_version */ - YYSYMBOL_server_nsid = 432, /* server_nsid */ - YYSYMBOL_server_so_rcvbuf = 433, /* server_so_rcvbuf */ - YYSYMBOL_server_so_sndbuf = 434, /* server_so_sndbuf */ - YYSYMBOL_server_so_reuseport = 435, /* server_so_reuseport */ - YYSYMBOL_server_ip_transparent = 436, /* server_ip_transparent */ - YYSYMBOL_server_ip_freebind = 437, /* server_ip_freebind */ - YYSYMBOL_server_ip_dscp = 438, /* server_ip_dscp */ - YYSYMBOL_server_stream_wait_size = 439, /* server_stream_wait_size */ - YYSYMBOL_server_edns_buffer_size = 440, /* server_edns_buffer_size */ - YYSYMBOL_server_msg_buffer_size = 441, /* server_msg_buffer_size */ - YYSYMBOL_server_msg_cache_size = 442, /* server_msg_cache_size */ - YYSYMBOL_server_msg_cache_slabs = 443, /* server_msg_cache_slabs */ - YYSYMBOL_server_num_queries_per_thread = 444, /* server_num_queries_per_thread */ - YYSYMBOL_server_jostle_timeout = 445, /* server_jostle_timeout */ - YYSYMBOL_server_delay_close = 446, /* server_delay_close */ - YYSYMBOL_server_udp_connect = 447, /* server_udp_connect */ - YYSYMBOL_server_unblock_lan_zones = 448, /* server_unblock_lan_zones */ - YYSYMBOL_server_insecure_lan_zones = 449, /* server_insecure_lan_zones */ - YYSYMBOL_server_rrset_cache_size = 450, /* server_rrset_cache_size */ - YYSYMBOL_server_rrset_cache_slabs = 451, /* server_rrset_cache_slabs */ - YYSYMBOL_server_infra_host_ttl = 452, /* server_infra_host_ttl */ - YYSYMBOL_server_infra_lame_ttl = 453, /* server_infra_lame_ttl */ - YYSYMBOL_server_infra_cache_numhosts = 454, /* server_infra_cache_numhosts */ - YYSYMBOL_server_infra_cache_lame_size = 455, /* server_infra_cache_lame_size */ - YYSYMBOL_server_infra_cache_slabs = 456, /* server_infra_cache_slabs */ - YYSYMBOL_server_infra_cache_min_rtt = 457, /* server_infra_cache_min_rtt */ - YYSYMBOL_server_infra_keep_probing = 458, /* server_infra_keep_probing */ - YYSYMBOL_server_target_fetch_policy = 459, /* server_target_fetch_policy */ - YYSYMBOL_server_harden_short_bufsize = 460, /* server_harden_short_bufsize */ - YYSYMBOL_server_harden_large_queries = 461, /* server_harden_large_queries */ - YYSYMBOL_server_harden_glue = 462, /* server_harden_glue */ - YYSYMBOL_server_harden_dnssec_stripped = 463, /* server_harden_dnssec_stripped */ - YYSYMBOL_server_harden_below_nxdomain = 464, /* server_harden_below_nxdomain */ - YYSYMBOL_server_harden_referral_path = 465, /* server_harden_referral_path */ - YYSYMBOL_server_harden_algo_downgrade = 466, /* server_harden_algo_downgrade */ - YYSYMBOL_server_use_caps_for_id = 467, /* server_use_caps_for_id */ - YYSYMBOL_server_caps_whitelist = 468, /* server_caps_whitelist */ - YYSYMBOL_server_private_address = 469, /* server_private_address */ - YYSYMBOL_server_private_domain = 470, /* server_private_domain */ - YYSYMBOL_server_prefetch = 471, /* server_prefetch */ - YYSYMBOL_server_prefetch_key = 472, /* server_prefetch_key */ - YYSYMBOL_server_deny_any = 473, /* server_deny_any */ - YYSYMBOL_server_unwanted_reply_threshold = 474, /* server_unwanted_reply_threshold */ - YYSYMBOL_server_do_not_query_address = 475, /* server_do_not_query_address */ - YYSYMBOL_server_do_not_query_localhost = 476, /* server_do_not_query_localhost */ - YYSYMBOL_server_access_control = 477, /* server_access_control */ - YYSYMBOL_server_module_conf = 478, /* server_module_conf */ - YYSYMBOL_server_val_override_date = 479, /* server_val_override_date */ - YYSYMBOL_server_val_sig_skew_min = 480, /* server_val_sig_skew_min */ - YYSYMBOL_server_val_sig_skew_max = 481, /* server_val_sig_skew_max */ - YYSYMBOL_server_val_max_restart = 482, /* server_val_max_restart */ - YYSYMBOL_server_cache_max_ttl = 483, /* server_cache_max_ttl */ - YYSYMBOL_server_cache_max_negative_ttl = 484, /* server_cache_max_negative_ttl */ - YYSYMBOL_server_cache_min_ttl = 485, /* server_cache_min_ttl */ - YYSYMBOL_server_bogus_ttl = 486, /* server_bogus_ttl */ - YYSYMBOL_server_val_clean_additional = 487, /* server_val_clean_additional */ - YYSYMBOL_server_val_permissive_mode = 488, /* server_val_permissive_mode */ - YYSYMBOL_server_aggressive_nsec = 489, /* server_aggressive_nsec */ - YYSYMBOL_server_ignore_cd_flag = 490, /* server_ignore_cd_flag */ - YYSYMBOL_server_serve_expired = 491, /* server_serve_expired */ - YYSYMBOL_server_serve_expired_ttl = 492, /* server_serve_expired_ttl */ - YYSYMBOL_server_serve_expired_ttl_reset = 493, /* server_serve_expired_ttl_reset */ - YYSYMBOL_server_serve_expired_reply_ttl = 494, /* server_serve_expired_reply_ttl */ - YYSYMBOL_server_serve_expired_client_timeout = 495, /* server_serve_expired_client_timeout */ - YYSYMBOL_server_serve_original_ttl = 496, /* server_serve_original_ttl */ - YYSYMBOL_server_fake_dsa = 497, /* server_fake_dsa */ - YYSYMBOL_server_fake_sha1 = 498, /* server_fake_sha1 */ - YYSYMBOL_server_val_log_level = 499, /* server_val_log_level */ - YYSYMBOL_server_val_nsec3_keysize_iterations = 500, /* server_val_nsec3_keysize_iterations */ - YYSYMBOL_server_zonemd_permissive_mode = 501, /* server_zonemd_permissive_mode */ - YYSYMBOL_server_add_holddown = 502, /* server_add_holddown */ - YYSYMBOL_server_del_holddown = 503, /* server_del_holddown */ - YYSYMBOL_server_keep_missing = 504, /* server_keep_missing */ - YYSYMBOL_server_permit_small_holddown = 505, /* server_permit_small_holddown */ - YYSYMBOL_server_key_cache_size = 506, /* server_key_cache_size */ - YYSYMBOL_server_key_cache_slabs = 507, /* server_key_cache_slabs */ - YYSYMBOL_server_neg_cache_size = 508, /* server_neg_cache_size */ - YYSYMBOL_server_local_zone = 509, /* server_local_zone */ - YYSYMBOL_server_local_data = 510, /* server_local_data */ - YYSYMBOL_server_local_data_ptr = 511, /* server_local_data_ptr */ - YYSYMBOL_server_minimal_responses = 512, /* server_minimal_responses */ - YYSYMBOL_server_rrset_roundrobin = 513, /* server_rrset_roundrobin */ - YYSYMBOL_server_unknown_server_time_limit = 514, /* server_unknown_server_time_limit */ - YYSYMBOL_server_max_udp_size = 515, /* server_max_udp_size */ - YYSYMBOL_server_dns64_prefix = 516, /* server_dns64_prefix */ - YYSYMBOL_server_dns64_synthall = 517, /* server_dns64_synthall */ - YYSYMBOL_server_dns64_ignore_aaaa = 518, /* server_dns64_ignore_aaaa */ - YYSYMBOL_server_define_tag = 519, /* server_define_tag */ - YYSYMBOL_server_local_zone_tag = 520, /* server_local_zone_tag */ - YYSYMBOL_server_access_control_tag = 521, /* server_access_control_tag */ - YYSYMBOL_server_access_control_tag_action = 522, /* server_access_control_tag_action */ - YYSYMBOL_server_access_control_tag_data = 523, /* server_access_control_tag_data */ - YYSYMBOL_server_local_zone_override = 524, /* server_local_zone_override */ - YYSYMBOL_server_access_control_view = 525, /* server_access_control_view */ - YYSYMBOL_server_response_ip_tag = 526, /* server_response_ip_tag */ - YYSYMBOL_server_ip_ratelimit = 527, /* server_ip_ratelimit */ - YYSYMBOL_server_ratelimit = 528, /* server_ratelimit */ - YYSYMBOL_server_ip_ratelimit_size = 529, /* server_ip_ratelimit_size */ - YYSYMBOL_server_ratelimit_size = 530, /* server_ratelimit_size */ - YYSYMBOL_server_ip_ratelimit_slabs = 531, /* server_ip_ratelimit_slabs */ - YYSYMBOL_server_ratelimit_slabs = 532, /* server_ratelimit_slabs */ - YYSYMBOL_server_ratelimit_for_domain = 533, /* server_ratelimit_for_domain */ - YYSYMBOL_server_ratelimit_below_domain = 534, /* server_ratelimit_below_domain */ - YYSYMBOL_server_ip_ratelimit_factor = 535, /* server_ip_ratelimit_factor */ - YYSYMBOL_server_ratelimit_factor = 536, /* server_ratelimit_factor */ - YYSYMBOL_server_low_rtt = 537, /* server_low_rtt */ - YYSYMBOL_server_fast_server_num = 538, /* server_fast_server_num */ - YYSYMBOL_server_fast_server_permil = 539, /* server_fast_server_permil */ - YYSYMBOL_server_qname_minimisation = 540, /* server_qname_minimisation */ - YYSYMBOL_server_qname_minimisation_strict = 541, /* server_qname_minimisation_strict */ - YYSYMBOL_server_pad_responses = 542, /* server_pad_responses */ - YYSYMBOL_server_pad_responses_block_size = 543, /* server_pad_responses_block_size */ - YYSYMBOL_server_pad_queries = 544, /* server_pad_queries */ - YYSYMBOL_server_pad_queries_block_size = 545, /* server_pad_queries_block_size */ - YYSYMBOL_server_ipsecmod_enabled = 546, /* server_ipsecmod_enabled */ - YYSYMBOL_server_ipsecmod_ignore_bogus = 547, /* server_ipsecmod_ignore_bogus */ - YYSYMBOL_server_ipsecmod_hook = 548, /* server_ipsecmod_hook */ - YYSYMBOL_server_ipsecmod_max_ttl = 549, /* server_ipsecmod_max_ttl */ - YYSYMBOL_server_ipsecmod_whitelist = 550, /* server_ipsecmod_whitelist */ - YYSYMBOL_server_ipsecmod_strict = 551, /* server_ipsecmod_strict */ - YYSYMBOL_server_edns_client_string = 552, /* server_edns_client_string */ - YYSYMBOL_server_edns_client_string_opcode = 553, /* server_edns_client_string_opcode */ - YYSYMBOL_stub_name = 554, /* stub_name */ - YYSYMBOL_stub_host = 555, /* stub_host */ - YYSYMBOL_stub_addr = 556, /* stub_addr */ - YYSYMBOL_stub_first = 557, /* stub_first */ - YYSYMBOL_stub_no_cache = 558, /* stub_no_cache */ - YYSYMBOL_stub_ssl_upstream = 559, /* stub_ssl_upstream */ - YYSYMBOL_stub_prime = 560, /* stub_prime */ - YYSYMBOL_forward_name = 561, /* forward_name */ - YYSYMBOL_forward_host = 562, /* forward_host */ - YYSYMBOL_forward_addr = 563, /* forward_addr */ - YYSYMBOL_forward_first = 564, /* forward_first */ - YYSYMBOL_forward_no_cache = 565, /* forward_no_cache */ - YYSYMBOL_forward_ssl_upstream = 566, /* forward_ssl_upstream */ - YYSYMBOL_auth_name = 567, /* auth_name */ - YYSYMBOL_auth_zonefile = 568, /* auth_zonefile */ - YYSYMBOL_auth_master = 569, /* auth_master */ - YYSYMBOL_auth_url = 570, /* auth_url */ - YYSYMBOL_auth_allow_notify = 571, /* auth_allow_notify */ - YYSYMBOL_auth_zonemd_check = 572, /* auth_zonemd_check */ - YYSYMBOL_auth_zonemd_reject_absence = 573, /* auth_zonemd_reject_absence */ - YYSYMBOL_auth_for_downstream = 574, /* auth_for_downstream */ - YYSYMBOL_auth_for_upstream = 575, /* auth_for_upstream */ - YYSYMBOL_auth_fallback_enabled = 576, /* auth_fallback_enabled */ - YYSYMBOL_view_name = 577, /* view_name */ - YYSYMBOL_view_local_zone = 578, /* view_local_zone */ - YYSYMBOL_view_response_ip = 579, /* view_response_ip */ - YYSYMBOL_view_response_ip_data = 580, /* view_response_ip_data */ - YYSYMBOL_view_local_data = 581, /* view_local_data */ - YYSYMBOL_view_local_data_ptr = 582, /* view_local_data_ptr */ - YYSYMBOL_view_first = 583, /* view_first */ - YYSYMBOL_rcstart = 584, /* rcstart */ - YYSYMBOL_contents_rc = 585, /* contents_rc */ - YYSYMBOL_content_rc = 586, /* content_rc */ - YYSYMBOL_rc_control_enable = 587, /* rc_control_enable */ - YYSYMBOL_rc_control_port = 588, /* rc_control_port */ - YYSYMBOL_rc_control_interface = 589, /* rc_control_interface */ - YYSYMBOL_rc_control_use_cert = 590, /* rc_control_use_cert */ - YYSYMBOL_rc_server_key_file = 591, /* rc_server_key_file */ - YYSYMBOL_rc_server_cert_file = 592, /* rc_server_cert_file */ - YYSYMBOL_rc_control_key_file = 593, /* rc_control_key_file */ - YYSYMBOL_rc_control_cert_file = 594, /* rc_control_cert_file */ - YYSYMBOL_dtstart = 595, /* dtstart */ - YYSYMBOL_contents_dt = 596, /* contents_dt */ - YYSYMBOL_content_dt = 597, /* content_dt */ - YYSYMBOL_dt_dnstap_enable = 598, /* dt_dnstap_enable */ - YYSYMBOL_dt_dnstap_bidirectional = 599, /* dt_dnstap_bidirectional */ - YYSYMBOL_dt_dnstap_socket_path = 600, /* dt_dnstap_socket_path */ - YYSYMBOL_dt_dnstap_ip = 601, /* dt_dnstap_ip */ - YYSYMBOL_dt_dnstap_tls = 602, /* dt_dnstap_tls */ - YYSYMBOL_dt_dnstap_tls_server_name = 603, /* dt_dnstap_tls_server_name */ - YYSYMBOL_dt_dnstap_tls_cert_bundle = 604, /* dt_dnstap_tls_cert_bundle */ - YYSYMBOL_dt_dnstap_tls_client_key_file = 605, /* dt_dnstap_tls_client_key_file */ - YYSYMBOL_dt_dnstap_tls_client_cert_file = 606, /* dt_dnstap_tls_client_cert_file */ - YYSYMBOL_dt_dnstap_send_identity = 607, /* dt_dnstap_send_identity */ - YYSYMBOL_dt_dnstap_send_version = 608, /* dt_dnstap_send_version */ - YYSYMBOL_dt_dnstap_identity = 609, /* dt_dnstap_identity */ - YYSYMBOL_dt_dnstap_version = 610, /* dt_dnstap_version */ - YYSYMBOL_dt_dnstap_log_resolver_query_messages = 611, /* dt_dnstap_log_resolver_query_messages */ - YYSYMBOL_dt_dnstap_log_resolver_response_messages = 612, /* dt_dnstap_log_resolver_response_messages */ - YYSYMBOL_dt_dnstap_log_client_query_messages = 613, /* dt_dnstap_log_client_query_messages */ - YYSYMBOL_dt_dnstap_log_client_response_messages = 614, /* dt_dnstap_log_client_response_messages */ - YYSYMBOL_dt_dnstap_log_forwarder_query_messages = 615, /* dt_dnstap_log_forwarder_query_messages */ - YYSYMBOL_dt_dnstap_log_forwarder_response_messages = 616, /* dt_dnstap_log_forwarder_response_messages */ - YYSYMBOL_pythonstart = 617, /* pythonstart */ - YYSYMBOL_contents_py = 618, /* contents_py */ - YYSYMBOL_content_py = 619, /* content_py */ - YYSYMBOL_py_script = 620, /* py_script */ - YYSYMBOL_dynlibstart = 621, /* dynlibstart */ - YYSYMBOL_contents_dl = 622, /* contents_dl */ - YYSYMBOL_content_dl = 623, /* content_dl */ - YYSYMBOL_dl_file = 624, /* dl_file */ - YYSYMBOL_server_disable_dnssec_lame_check = 625, /* server_disable_dnssec_lame_check */ - YYSYMBOL_server_log_identity = 626, /* server_log_identity */ - YYSYMBOL_server_response_ip = 627, /* server_response_ip */ - YYSYMBOL_server_response_ip_data = 628, /* server_response_ip_data */ - YYSYMBOL_dnscstart = 629, /* dnscstart */ - YYSYMBOL_contents_dnsc = 630, /* contents_dnsc */ - YYSYMBOL_content_dnsc = 631, /* content_dnsc */ - YYSYMBOL_dnsc_dnscrypt_enable = 632, /* dnsc_dnscrypt_enable */ - YYSYMBOL_dnsc_dnscrypt_port = 633, /* dnsc_dnscrypt_port */ - YYSYMBOL_dnsc_dnscrypt_provider = 634, /* dnsc_dnscrypt_provider */ - YYSYMBOL_dnsc_dnscrypt_provider_cert = 635, /* dnsc_dnscrypt_provider_cert */ - YYSYMBOL_dnsc_dnscrypt_provider_cert_rotated = 636, /* dnsc_dnscrypt_provider_cert_rotated */ - YYSYMBOL_dnsc_dnscrypt_secret_key = 637, /* dnsc_dnscrypt_secret_key */ - YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_size = 638, /* dnsc_dnscrypt_shared_secret_cache_size */ - YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_slabs = 639, /* dnsc_dnscrypt_shared_secret_cache_slabs */ - YYSYMBOL_dnsc_dnscrypt_nonce_cache_size = 640, /* dnsc_dnscrypt_nonce_cache_size */ - YYSYMBOL_dnsc_dnscrypt_nonce_cache_slabs = 641, /* dnsc_dnscrypt_nonce_cache_slabs */ - YYSYMBOL_cachedbstart = 642, /* cachedbstart */ - YYSYMBOL_contents_cachedb = 643, /* contents_cachedb */ - YYSYMBOL_content_cachedb = 644, /* content_cachedb */ - YYSYMBOL_cachedb_backend_name = 645, /* cachedb_backend_name */ - YYSYMBOL_cachedb_secret_seed = 646, /* cachedb_secret_seed */ - YYSYMBOL_redis_server_host = 647, /* redis_server_host */ - YYSYMBOL_redis_server_port = 648, /* redis_server_port */ - YYSYMBOL_redis_timeout = 649, /* redis_timeout */ - YYSYMBOL_redis_expire_records = 650, /* redis_expire_records */ - YYSYMBOL_server_tcp_connection_limit = 651, /* server_tcp_connection_limit */ - YYSYMBOL_ipsetstart = 652, /* ipsetstart */ - YYSYMBOL_contents_ipset = 653, /* contents_ipset */ - YYSYMBOL_content_ipset = 654, /* content_ipset */ - YYSYMBOL_ipset_name_v4 = 655, /* ipset_name_v4 */ - YYSYMBOL_ipset_name_v6 = 656 /* ipset_name_v6 */ + YYSYMBOL_VAR_HIDE_HTTP_USER_AGENT = 238, /* VAR_HIDE_HTTP_USER_AGENT */ + YYSYMBOL_VAR_HTTP_USER_AGENT = 239, /* VAR_HTTP_USER_AGENT */ + YYSYMBOL_VAR_TRUST_ANCHOR_SIGNALING = 240, /* VAR_TRUST_ANCHOR_SIGNALING */ + YYSYMBOL_VAR_AGGRESSIVE_NSEC = 241, /* VAR_AGGRESSIVE_NSEC */ + YYSYMBOL_VAR_USE_SYSTEMD = 242, /* VAR_USE_SYSTEMD */ + YYSYMBOL_VAR_SHM_ENABLE = 243, /* VAR_SHM_ENABLE */ + YYSYMBOL_VAR_SHM_KEY = 244, /* VAR_SHM_KEY */ + YYSYMBOL_VAR_ROOT_KEY_SENTINEL = 245, /* VAR_ROOT_KEY_SENTINEL */ + YYSYMBOL_VAR_DNSCRYPT = 246, /* VAR_DNSCRYPT */ + YYSYMBOL_VAR_DNSCRYPT_ENABLE = 247, /* VAR_DNSCRYPT_ENABLE */ + YYSYMBOL_VAR_DNSCRYPT_PORT = 248, /* VAR_DNSCRYPT_PORT */ + YYSYMBOL_VAR_DNSCRYPT_PROVIDER = 249, /* VAR_DNSCRYPT_PROVIDER */ + YYSYMBOL_VAR_DNSCRYPT_SECRET_KEY = 250, /* VAR_DNSCRYPT_SECRET_KEY */ + YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT = 251, /* VAR_DNSCRYPT_PROVIDER_CERT */ + YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 252, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ + YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 253, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ + YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 254, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ + YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SIZE = 255, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ + YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SLABS = 256, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ + YYSYMBOL_VAR_PAD_RESPONSES = 257, /* VAR_PAD_RESPONSES */ + YYSYMBOL_VAR_PAD_RESPONSES_BLOCK_SIZE = 258, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ + YYSYMBOL_VAR_PAD_QUERIES = 259, /* VAR_PAD_QUERIES */ + YYSYMBOL_VAR_PAD_QUERIES_BLOCK_SIZE = 260, /* VAR_PAD_QUERIES_BLOCK_SIZE */ + YYSYMBOL_VAR_IPSECMOD_ENABLED = 261, /* VAR_IPSECMOD_ENABLED */ + YYSYMBOL_VAR_IPSECMOD_HOOK = 262, /* VAR_IPSECMOD_HOOK */ + YYSYMBOL_VAR_IPSECMOD_IGNORE_BOGUS = 263, /* VAR_IPSECMOD_IGNORE_BOGUS */ + YYSYMBOL_VAR_IPSECMOD_MAX_TTL = 264, /* VAR_IPSECMOD_MAX_TTL */ + YYSYMBOL_VAR_IPSECMOD_WHITELIST = 265, /* VAR_IPSECMOD_WHITELIST */ + YYSYMBOL_VAR_IPSECMOD_STRICT = 266, /* VAR_IPSECMOD_STRICT */ + YYSYMBOL_VAR_CACHEDB = 267, /* VAR_CACHEDB */ + YYSYMBOL_VAR_CACHEDB_BACKEND = 268, /* VAR_CACHEDB_BACKEND */ + YYSYMBOL_VAR_CACHEDB_SECRETSEED = 269, /* VAR_CACHEDB_SECRETSEED */ + YYSYMBOL_VAR_CACHEDB_REDISHOST = 270, /* VAR_CACHEDB_REDISHOST */ + YYSYMBOL_VAR_CACHEDB_REDISPORT = 271, /* VAR_CACHEDB_REDISPORT */ + YYSYMBOL_VAR_CACHEDB_REDISTIMEOUT = 272, /* VAR_CACHEDB_REDISTIMEOUT */ + YYSYMBOL_VAR_CACHEDB_REDISEXPIRERECORDS = 273, /* VAR_CACHEDB_REDISEXPIRERECORDS */ + YYSYMBOL_VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 274, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ + YYSYMBOL_VAR_FOR_UPSTREAM = 275, /* VAR_FOR_UPSTREAM */ + YYSYMBOL_VAR_AUTH_ZONE = 276, /* VAR_AUTH_ZONE */ + YYSYMBOL_VAR_ZONEFILE = 277, /* VAR_ZONEFILE */ + YYSYMBOL_VAR_MASTER = 278, /* VAR_MASTER */ + YYSYMBOL_VAR_URL = 279, /* VAR_URL */ + YYSYMBOL_VAR_FOR_DOWNSTREAM = 280, /* VAR_FOR_DOWNSTREAM */ + YYSYMBOL_VAR_FALLBACK_ENABLED = 281, /* VAR_FALLBACK_ENABLED */ + YYSYMBOL_VAR_TLS_ADDITIONAL_PORT = 282, /* VAR_TLS_ADDITIONAL_PORT */ + YYSYMBOL_VAR_LOW_RTT = 283, /* VAR_LOW_RTT */ + YYSYMBOL_VAR_LOW_RTT_PERMIL = 284, /* VAR_LOW_RTT_PERMIL */ + YYSYMBOL_VAR_FAST_SERVER_PERMIL = 285, /* VAR_FAST_SERVER_PERMIL */ + YYSYMBOL_VAR_FAST_SERVER_NUM = 286, /* VAR_FAST_SERVER_NUM */ + YYSYMBOL_VAR_ALLOW_NOTIFY = 287, /* VAR_ALLOW_NOTIFY */ + YYSYMBOL_VAR_TLS_WIN_CERT = 288, /* VAR_TLS_WIN_CERT */ + YYSYMBOL_VAR_TCP_CONNECTION_LIMIT = 289, /* VAR_TCP_CONNECTION_LIMIT */ + YYSYMBOL_VAR_FORWARD_NO_CACHE = 290, /* VAR_FORWARD_NO_CACHE */ + YYSYMBOL_VAR_STUB_NO_CACHE = 291, /* VAR_STUB_NO_CACHE */ + YYSYMBOL_VAR_LOG_SERVFAIL = 292, /* VAR_LOG_SERVFAIL */ + YYSYMBOL_VAR_DENY_ANY = 293, /* VAR_DENY_ANY */ + YYSYMBOL_VAR_UNKNOWN_SERVER_TIME_LIMIT = 294, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ + YYSYMBOL_VAR_LOG_TAG_QUERYREPLY = 295, /* VAR_LOG_TAG_QUERYREPLY */ + YYSYMBOL_VAR_STREAM_WAIT_SIZE = 296, /* VAR_STREAM_WAIT_SIZE */ + YYSYMBOL_VAR_TLS_CIPHERS = 297, /* VAR_TLS_CIPHERS */ + YYSYMBOL_VAR_TLS_CIPHERSUITES = 298, /* VAR_TLS_CIPHERSUITES */ + YYSYMBOL_VAR_TLS_USE_SNI = 299, /* VAR_TLS_USE_SNI */ + YYSYMBOL_VAR_IPSET = 300, /* VAR_IPSET */ + YYSYMBOL_VAR_IPSET_NAME_V4 = 301, /* VAR_IPSET_NAME_V4 */ + YYSYMBOL_VAR_IPSET_NAME_V6 = 302, /* VAR_IPSET_NAME_V6 */ + YYSYMBOL_VAR_TLS_SESSION_TICKET_KEYS = 303, /* VAR_TLS_SESSION_TICKET_KEYS */ + YYSYMBOL_VAR_RPZ = 304, /* VAR_RPZ */ + YYSYMBOL_VAR_TAGS = 305, /* VAR_TAGS */ + YYSYMBOL_VAR_RPZ_ACTION_OVERRIDE = 306, /* VAR_RPZ_ACTION_OVERRIDE */ + YYSYMBOL_VAR_RPZ_CNAME_OVERRIDE = 307, /* VAR_RPZ_CNAME_OVERRIDE */ + YYSYMBOL_VAR_RPZ_LOG = 308, /* VAR_RPZ_LOG */ + YYSYMBOL_VAR_RPZ_LOG_NAME = 309, /* VAR_RPZ_LOG_NAME */ + YYSYMBOL_VAR_DYNLIB = 310, /* VAR_DYNLIB */ + YYSYMBOL_VAR_DYNLIB_FILE = 311, /* VAR_DYNLIB_FILE */ + YYSYMBOL_VAR_EDNS_CLIENT_STRING = 312, /* VAR_EDNS_CLIENT_STRING */ + YYSYMBOL_VAR_EDNS_CLIENT_STRING_OPCODE = 313, /* VAR_EDNS_CLIENT_STRING_OPCODE */ + YYSYMBOL_VAR_NSID = 314, /* VAR_NSID */ + YYSYMBOL_VAR_ZONEMD_PERMISSIVE_MODE = 315, /* VAR_ZONEMD_PERMISSIVE_MODE */ + YYSYMBOL_VAR_ZONEMD_CHECK = 316, /* VAR_ZONEMD_CHECK */ + YYSYMBOL_VAR_ZONEMD_REJECT_ABSENCE = 317, /* VAR_ZONEMD_REJECT_ABSENCE */ + YYSYMBOL_YYACCEPT = 318, /* $accept */ + YYSYMBOL_toplevelvars = 319, /* toplevelvars */ + YYSYMBOL_toplevelvar = 320, /* toplevelvar */ + YYSYMBOL_force_toplevel = 321, /* force_toplevel */ + YYSYMBOL_serverstart = 322, /* serverstart */ + YYSYMBOL_contents_server = 323, /* contents_server */ + YYSYMBOL_content_server = 324, /* content_server */ + YYSYMBOL_stubstart = 325, /* stubstart */ + YYSYMBOL_contents_stub = 326, /* contents_stub */ + YYSYMBOL_content_stub = 327, /* content_stub */ + YYSYMBOL_forwardstart = 328, /* forwardstart */ + YYSYMBOL_contents_forward = 329, /* contents_forward */ + YYSYMBOL_content_forward = 330, /* content_forward */ + YYSYMBOL_viewstart = 331, /* viewstart */ + YYSYMBOL_contents_view = 332, /* contents_view */ + YYSYMBOL_content_view = 333, /* content_view */ + YYSYMBOL_authstart = 334, /* authstart */ + YYSYMBOL_contents_auth = 335, /* contents_auth */ + YYSYMBOL_content_auth = 336, /* content_auth */ + YYSYMBOL_rpz_tag = 337, /* rpz_tag */ + YYSYMBOL_rpz_action_override = 338, /* rpz_action_override */ + YYSYMBOL_rpz_cname_override = 339, /* rpz_cname_override */ + YYSYMBOL_rpz_log = 340, /* rpz_log */ + YYSYMBOL_rpz_log_name = 341, /* rpz_log_name */ + YYSYMBOL_rpzstart = 342, /* rpzstart */ + YYSYMBOL_contents_rpz = 343, /* contents_rpz */ + YYSYMBOL_content_rpz = 344, /* content_rpz */ + YYSYMBOL_server_num_threads = 345, /* server_num_threads */ + YYSYMBOL_server_verbosity = 346, /* server_verbosity */ + YYSYMBOL_server_statistics_interval = 347, /* server_statistics_interval */ + YYSYMBOL_server_statistics_cumulative = 348, /* server_statistics_cumulative */ + YYSYMBOL_server_extended_statistics = 349, /* server_extended_statistics */ + YYSYMBOL_server_shm_enable = 350, /* server_shm_enable */ + YYSYMBOL_server_shm_key = 351, /* server_shm_key */ + YYSYMBOL_server_port = 352, /* server_port */ + YYSYMBOL_server_send_client_subnet = 353, /* server_send_client_subnet */ + YYSYMBOL_server_client_subnet_zone = 354, /* server_client_subnet_zone */ + YYSYMBOL_server_client_subnet_always_forward = 355, /* server_client_subnet_always_forward */ + YYSYMBOL_server_client_subnet_opcode = 356, /* server_client_subnet_opcode */ + YYSYMBOL_server_max_client_subnet_ipv4 = 357, /* server_max_client_subnet_ipv4 */ + YYSYMBOL_server_max_client_subnet_ipv6 = 358, /* server_max_client_subnet_ipv6 */ + YYSYMBOL_server_min_client_subnet_ipv4 = 359, /* server_min_client_subnet_ipv4 */ + YYSYMBOL_server_min_client_subnet_ipv6 = 360, /* server_min_client_subnet_ipv6 */ + YYSYMBOL_server_max_ecs_tree_size_ipv4 = 361, /* server_max_ecs_tree_size_ipv4 */ + YYSYMBOL_server_max_ecs_tree_size_ipv6 = 362, /* server_max_ecs_tree_size_ipv6 */ + YYSYMBOL_server_interface = 363, /* server_interface */ + YYSYMBOL_server_outgoing_interface = 364, /* server_outgoing_interface */ + YYSYMBOL_server_outgoing_range = 365, /* server_outgoing_range */ + YYSYMBOL_server_outgoing_port_permit = 366, /* server_outgoing_port_permit */ + YYSYMBOL_server_outgoing_port_avoid = 367, /* server_outgoing_port_avoid */ + YYSYMBOL_server_outgoing_num_tcp = 368, /* server_outgoing_num_tcp */ + YYSYMBOL_server_incoming_num_tcp = 369, /* server_incoming_num_tcp */ + YYSYMBOL_server_interface_automatic = 370, /* server_interface_automatic */ + YYSYMBOL_server_do_ip4 = 371, /* server_do_ip4 */ + YYSYMBOL_server_do_ip6 = 372, /* server_do_ip6 */ + YYSYMBOL_server_do_udp = 373, /* server_do_udp */ + YYSYMBOL_server_do_tcp = 374, /* server_do_tcp */ + YYSYMBOL_server_prefer_ip4 = 375, /* server_prefer_ip4 */ + YYSYMBOL_server_prefer_ip6 = 376, /* server_prefer_ip6 */ + YYSYMBOL_server_tcp_mss = 377, /* server_tcp_mss */ + YYSYMBOL_server_outgoing_tcp_mss = 378, /* server_outgoing_tcp_mss */ + YYSYMBOL_server_tcp_idle_timeout = 379, /* server_tcp_idle_timeout */ + YYSYMBOL_server_max_reuse_tcp_queries = 380, /* server_max_reuse_tcp_queries */ + YYSYMBOL_server_tcp_reuse_timeout = 381, /* server_tcp_reuse_timeout */ + YYSYMBOL_server_tcp_auth_query_timeout = 382, /* server_tcp_auth_query_timeout */ + YYSYMBOL_server_tcp_keepalive = 383, /* server_tcp_keepalive */ + YYSYMBOL_server_tcp_keepalive_timeout = 384, /* server_tcp_keepalive_timeout */ + YYSYMBOL_server_tcp_upstream = 385, /* server_tcp_upstream */ + YYSYMBOL_server_udp_upstream_without_downstream = 386, /* server_udp_upstream_without_downstream */ + YYSYMBOL_server_ssl_upstream = 387, /* server_ssl_upstream */ + YYSYMBOL_server_ssl_service_key = 388, /* server_ssl_service_key */ + YYSYMBOL_server_ssl_service_pem = 389, /* server_ssl_service_pem */ + YYSYMBOL_server_ssl_port = 390, /* server_ssl_port */ + YYSYMBOL_server_tls_cert_bundle = 391, /* server_tls_cert_bundle */ + YYSYMBOL_server_tls_win_cert = 392, /* server_tls_win_cert */ + YYSYMBOL_server_tls_additional_port = 393, /* server_tls_additional_port */ + YYSYMBOL_server_tls_ciphers = 394, /* server_tls_ciphers */ + YYSYMBOL_server_tls_ciphersuites = 395, /* server_tls_ciphersuites */ + YYSYMBOL_server_tls_session_ticket_keys = 396, /* server_tls_session_ticket_keys */ + YYSYMBOL_server_tls_use_sni = 397, /* server_tls_use_sni */ + YYSYMBOL_server_https_port = 398, /* server_https_port */ + YYSYMBOL_server_http_endpoint = 399, /* server_http_endpoint */ + YYSYMBOL_server_http_max_streams = 400, /* server_http_max_streams */ + YYSYMBOL_server_http_query_buffer_size = 401, /* server_http_query_buffer_size */ + YYSYMBOL_server_http_response_buffer_size = 402, /* server_http_response_buffer_size */ + YYSYMBOL_server_http_nodelay = 403, /* server_http_nodelay */ + YYSYMBOL_server_http_notls_downstream = 404, /* server_http_notls_downstream */ + YYSYMBOL_server_use_systemd = 405, /* server_use_systemd */ + YYSYMBOL_server_do_daemonize = 406, /* server_do_daemonize */ + YYSYMBOL_server_use_syslog = 407, /* server_use_syslog */ + YYSYMBOL_server_log_time_ascii = 408, /* server_log_time_ascii */ + YYSYMBOL_server_log_queries = 409, /* server_log_queries */ + YYSYMBOL_server_log_replies = 410, /* server_log_replies */ + YYSYMBOL_server_log_tag_queryreply = 411, /* server_log_tag_queryreply */ + YYSYMBOL_server_log_servfail = 412, /* server_log_servfail */ + YYSYMBOL_server_log_local_actions = 413, /* server_log_local_actions */ + YYSYMBOL_server_chroot = 414, /* server_chroot */ + YYSYMBOL_server_username = 415, /* server_username */ + YYSYMBOL_server_directory = 416, /* server_directory */ + YYSYMBOL_server_logfile = 417, /* server_logfile */ + YYSYMBOL_server_pidfile = 418, /* server_pidfile */ + YYSYMBOL_server_root_hints = 419, /* server_root_hints */ + YYSYMBOL_server_dlv_anchor_file = 420, /* server_dlv_anchor_file */ + YYSYMBOL_server_dlv_anchor = 421, /* server_dlv_anchor */ + YYSYMBOL_server_auto_trust_anchor_file = 422, /* server_auto_trust_anchor_file */ + YYSYMBOL_server_trust_anchor_file = 423, /* server_trust_anchor_file */ + YYSYMBOL_server_trusted_keys_file = 424, /* server_trusted_keys_file */ + YYSYMBOL_server_trust_anchor = 425, /* server_trust_anchor */ + YYSYMBOL_server_trust_anchor_signaling = 426, /* server_trust_anchor_signaling */ + YYSYMBOL_server_root_key_sentinel = 427, /* server_root_key_sentinel */ + YYSYMBOL_server_domain_insecure = 428, /* server_domain_insecure */ + YYSYMBOL_server_hide_identity = 429, /* server_hide_identity */ + YYSYMBOL_server_hide_version = 430, /* server_hide_version */ + YYSYMBOL_server_hide_trustanchor = 431, /* server_hide_trustanchor */ + YYSYMBOL_server_hide_http_user_agent = 432, /* server_hide_http_user_agent */ + YYSYMBOL_server_identity = 433, /* server_identity */ + YYSYMBOL_server_version = 434, /* server_version */ + YYSYMBOL_server_http_user_agent = 435, /* server_http_user_agent */ + YYSYMBOL_server_nsid = 436, /* server_nsid */ + YYSYMBOL_server_so_rcvbuf = 437, /* server_so_rcvbuf */ + YYSYMBOL_server_so_sndbuf = 438, /* server_so_sndbuf */ + YYSYMBOL_server_so_reuseport = 439, /* server_so_reuseport */ + YYSYMBOL_server_ip_transparent = 440, /* server_ip_transparent */ + YYSYMBOL_server_ip_freebind = 441, /* server_ip_freebind */ + YYSYMBOL_server_ip_dscp = 442, /* server_ip_dscp */ + YYSYMBOL_server_stream_wait_size = 443, /* server_stream_wait_size */ + YYSYMBOL_server_edns_buffer_size = 444, /* server_edns_buffer_size */ + YYSYMBOL_server_msg_buffer_size = 445, /* server_msg_buffer_size */ + YYSYMBOL_server_msg_cache_size = 446, /* server_msg_cache_size */ + YYSYMBOL_server_msg_cache_slabs = 447, /* server_msg_cache_slabs */ + YYSYMBOL_server_num_queries_per_thread = 448, /* server_num_queries_per_thread */ + YYSYMBOL_server_jostle_timeout = 449, /* server_jostle_timeout */ + YYSYMBOL_server_delay_close = 450, /* server_delay_close */ + YYSYMBOL_server_udp_connect = 451, /* server_udp_connect */ + YYSYMBOL_server_unblock_lan_zones = 452, /* server_unblock_lan_zones */ + YYSYMBOL_server_insecure_lan_zones = 453, /* server_insecure_lan_zones */ + YYSYMBOL_server_rrset_cache_size = 454, /* server_rrset_cache_size */ + YYSYMBOL_server_rrset_cache_slabs = 455, /* server_rrset_cache_slabs */ + YYSYMBOL_server_infra_host_ttl = 456, /* server_infra_host_ttl */ + YYSYMBOL_server_infra_lame_ttl = 457, /* server_infra_lame_ttl */ + YYSYMBOL_server_infra_cache_numhosts = 458, /* server_infra_cache_numhosts */ + YYSYMBOL_server_infra_cache_lame_size = 459, /* server_infra_cache_lame_size */ + YYSYMBOL_server_infra_cache_slabs = 460, /* server_infra_cache_slabs */ + YYSYMBOL_server_infra_cache_min_rtt = 461, /* server_infra_cache_min_rtt */ + YYSYMBOL_server_infra_keep_probing = 462, /* server_infra_keep_probing */ + YYSYMBOL_server_target_fetch_policy = 463, /* server_target_fetch_policy */ + YYSYMBOL_server_harden_short_bufsize = 464, /* server_harden_short_bufsize */ + YYSYMBOL_server_harden_large_queries = 465, /* server_harden_large_queries */ + YYSYMBOL_server_harden_glue = 466, /* server_harden_glue */ + YYSYMBOL_server_harden_dnssec_stripped = 467, /* server_harden_dnssec_stripped */ + YYSYMBOL_server_harden_below_nxdomain = 468, /* server_harden_below_nxdomain */ + YYSYMBOL_server_harden_referral_path = 469, /* server_harden_referral_path */ + YYSYMBOL_server_harden_algo_downgrade = 470, /* server_harden_algo_downgrade */ + YYSYMBOL_server_use_caps_for_id = 471, /* server_use_caps_for_id */ + YYSYMBOL_server_caps_whitelist = 472, /* server_caps_whitelist */ + YYSYMBOL_server_private_address = 473, /* server_private_address */ + YYSYMBOL_server_private_domain = 474, /* server_private_domain */ + YYSYMBOL_server_prefetch = 475, /* server_prefetch */ + YYSYMBOL_server_prefetch_key = 476, /* server_prefetch_key */ + YYSYMBOL_server_deny_any = 477, /* server_deny_any */ + YYSYMBOL_server_unwanted_reply_threshold = 478, /* server_unwanted_reply_threshold */ + YYSYMBOL_server_do_not_query_address = 479, /* server_do_not_query_address */ + YYSYMBOL_server_do_not_query_localhost = 480, /* server_do_not_query_localhost */ + YYSYMBOL_server_access_control = 481, /* server_access_control */ + YYSYMBOL_server_module_conf = 482, /* server_module_conf */ + YYSYMBOL_server_val_override_date = 483, /* server_val_override_date */ + YYSYMBOL_server_val_sig_skew_min = 484, /* server_val_sig_skew_min */ + YYSYMBOL_server_val_sig_skew_max = 485, /* server_val_sig_skew_max */ + YYSYMBOL_server_val_max_restart = 486, /* server_val_max_restart */ + YYSYMBOL_server_cache_max_ttl = 487, /* server_cache_max_ttl */ + YYSYMBOL_server_cache_max_negative_ttl = 488, /* server_cache_max_negative_ttl */ + YYSYMBOL_server_cache_min_ttl = 489, /* server_cache_min_ttl */ + YYSYMBOL_server_bogus_ttl = 490, /* server_bogus_ttl */ + YYSYMBOL_server_val_clean_additional = 491, /* server_val_clean_additional */ + YYSYMBOL_server_val_permissive_mode = 492, /* server_val_permissive_mode */ + YYSYMBOL_server_aggressive_nsec = 493, /* server_aggressive_nsec */ + YYSYMBOL_server_ignore_cd_flag = 494, /* server_ignore_cd_flag */ + YYSYMBOL_server_serve_expired = 495, /* server_serve_expired */ + YYSYMBOL_server_serve_expired_ttl = 496, /* server_serve_expired_ttl */ + YYSYMBOL_server_serve_expired_ttl_reset = 497, /* server_serve_expired_ttl_reset */ + YYSYMBOL_server_serve_expired_reply_ttl = 498, /* server_serve_expired_reply_ttl */ + YYSYMBOL_server_serve_expired_client_timeout = 499, /* server_serve_expired_client_timeout */ + YYSYMBOL_server_serve_original_ttl = 500, /* server_serve_original_ttl */ + YYSYMBOL_server_fake_dsa = 501, /* server_fake_dsa */ + YYSYMBOL_server_fake_sha1 = 502, /* server_fake_sha1 */ + YYSYMBOL_server_val_log_level = 503, /* server_val_log_level */ + YYSYMBOL_server_val_nsec3_keysize_iterations = 504, /* server_val_nsec3_keysize_iterations */ + YYSYMBOL_server_zonemd_permissive_mode = 505, /* server_zonemd_permissive_mode */ + YYSYMBOL_server_add_holddown = 506, /* server_add_holddown */ + YYSYMBOL_server_del_holddown = 507, /* server_del_holddown */ + YYSYMBOL_server_keep_missing = 508, /* server_keep_missing */ + YYSYMBOL_server_permit_small_holddown = 509, /* server_permit_small_holddown */ + YYSYMBOL_server_key_cache_size = 510, /* server_key_cache_size */ + YYSYMBOL_server_key_cache_slabs = 511, /* server_key_cache_slabs */ + YYSYMBOL_server_neg_cache_size = 512, /* server_neg_cache_size */ + YYSYMBOL_server_local_zone = 513, /* server_local_zone */ + YYSYMBOL_server_local_data = 514, /* server_local_data */ + YYSYMBOL_server_local_data_ptr = 515, /* server_local_data_ptr */ + YYSYMBOL_server_minimal_responses = 516, /* server_minimal_responses */ + YYSYMBOL_server_rrset_roundrobin = 517, /* server_rrset_roundrobin */ + YYSYMBOL_server_unknown_server_time_limit = 518, /* server_unknown_server_time_limit */ + YYSYMBOL_server_max_udp_size = 519, /* server_max_udp_size */ + YYSYMBOL_server_dns64_prefix = 520, /* server_dns64_prefix */ + YYSYMBOL_server_dns64_synthall = 521, /* server_dns64_synthall */ + YYSYMBOL_server_dns64_ignore_aaaa = 522, /* server_dns64_ignore_aaaa */ + YYSYMBOL_server_define_tag = 523, /* server_define_tag */ + YYSYMBOL_server_local_zone_tag = 524, /* server_local_zone_tag */ + YYSYMBOL_server_access_control_tag = 525, /* server_access_control_tag */ + YYSYMBOL_server_access_control_tag_action = 526, /* server_access_control_tag_action */ + YYSYMBOL_server_access_control_tag_data = 527, /* server_access_control_tag_data */ + YYSYMBOL_server_local_zone_override = 528, /* server_local_zone_override */ + YYSYMBOL_server_access_control_view = 529, /* server_access_control_view */ + YYSYMBOL_server_response_ip_tag = 530, /* server_response_ip_tag */ + YYSYMBOL_server_ip_ratelimit = 531, /* server_ip_ratelimit */ + YYSYMBOL_server_ratelimit = 532, /* server_ratelimit */ + YYSYMBOL_server_ip_ratelimit_size = 533, /* server_ip_ratelimit_size */ + YYSYMBOL_server_ratelimit_size = 534, /* server_ratelimit_size */ + YYSYMBOL_server_ip_ratelimit_slabs = 535, /* server_ip_ratelimit_slabs */ + YYSYMBOL_server_ratelimit_slabs = 536, /* server_ratelimit_slabs */ + YYSYMBOL_server_ratelimit_for_domain = 537, /* server_ratelimit_for_domain */ + YYSYMBOL_server_ratelimit_below_domain = 538, /* server_ratelimit_below_domain */ + YYSYMBOL_server_ip_ratelimit_factor = 539, /* server_ip_ratelimit_factor */ + YYSYMBOL_server_ratelimit_factor = 540, /* server_ratelimit_factor */ + YYSYMBOL_server_low_rtt = 541, /* server_low_rtt */ + YYSYMBOL_server_fast_server_num = 542, /* server_fast_server_num */ + YYSYMBOL_server_fast_server_permil = 543, /* server_fast_server_permil */ + YYSYMBOL_server_qname_minimisation = 544, /* server_qname_minimisation */ + YYSYMBOL_server_qname_minimisation_strict = 545, /* server_qname_minimisation_strict */ + YYSYMBOL_server_pad_responses = 546, /* server_pad_responses */ + YYSYMBOL_server_pad_responses_block_size = 547, /* server_pad_responses_block_size */ + YYSYMBOL_server_pad_queries = 548, /* server_pad_queries */ + YYSYMBOL_server_pad_queries_block_size = 549, /* server_pad_queries_block_size */ + YYSYMBOL_server_ipsecmod_enabled = 550, /* server_ipsecmod_enabled */ + YYSYMBOL_server_ipsecmod_ignore_bogus = 551, /* server_ipsecmod_ignore_bogus */ + YYSYMBOL_server_ipsecmod_hook = 552, /* server_ipsecmod_hook */ + YYSYMBOL_server_ipsecmod_max_ttl = 553, /* server_ipsecmod_max_ttl */ + YYSYMBOL_server_ipsecmod_whitelist = 554, /* server_ipsecmod_whitelist */ + YYSYMBOL_server_ipsecmod_strict = 555, /* server_ipsecmod_strict */ + YYSYMBOL_server_edns_client_string = 556, /* server_edns_client_string */ + YYSYMBOL_server_edns_client_string_opcode = 557, /* server_edns_client_string_opcode */ + YYSYMBOL_stub_name = 558, /* stub_name */ + YYSYMBOL_stub_host = 559, /* stub_host */ + YYSYMBOL_stub_addr = 560, /* stub_addr */ + YYSYMBOL_stub_first = 561, /* stub_first */ + YYSYMBOL_stub_no_cache = 562, /* stub_no_cache */ + YYSYMBOL_stub_ssl_upstream = 563, /* stub_ssl_upstream */ + YYSYMBOL_stub_prime = 564, /* stub_prime */ + YYSYMBOL_forward_name = 565, /* forward_name */ + YYSYMBOL_forward_host = 566, /* forward_host */ + YYSYMBOL_forward_addr = 567, /* forward_addr */ + YYSYMBOL_forward_first = 568, /* forward_first */ + YYSYMBOL_forward_no_cache = 569, /* forward_no_cache */ + YYSYMBOL_forward_ssl_upstream = 570, /* forward_ssl_upstream */ + YYSYMBOL_auth_name = 571, /* auth_name */ + YYSYMBOL_auth_zonefile = 572, /* auth_zonefile */ + YYSYMBOL_auth_master = 573, /* auth_master */ + YYSYMBOL_auth_url = 574, /* auth_url */ + YYSYMBOL_auth_allow_notify = 575, /* auth_allow_notify */ + YYSYMBOL_auth_zonemd_check = 576, /* auth_zonemd_check */ + YYSYMBOL_auth_zonemd_reject_absence = 577, /* auth_zonemd_reject_absence */ + YYSYMBOL_auth_for_downstream = 578, /* auth_for_downstream */ + YYSYMBOL_auth_for_upstream = 579, /* auth_for_upstream */ + YYSYMBOL_auth_fallback_enabled = 580, /* auth_fallback_enabled */ + YYSYMBOL_view_name = 581, /* view_name */ + YYSYMBOL_view_local_zone = 582, /* view_local_zone */ + YYSYMBOL_view_response_ip = 583, /* view_response_ip */ + YYSYMBOL_view_response_ip_data = 584, /* view_response_ip_data */ + YYSYMBOL_view_local_data = 585, /* view_local_data */ + YYSYMBOL_view_local_data_ptr = 586, /* view_local_data_ptr */ + YYSYMBOL_view_first = 587, /* view_first */ + YYSYMBOL_rcstart = 588, /* rcstart */ + YYSYMBOL_contents_rc = 589, /* contents_rc */ + YYSYMBOL_content_rc = 590, /* content_rc */ + YYSYMBOL_rc_control_enable = 591, /* rc_control_enable */ + YYSYMBOL_rc_control_port = 592, /* rc_control_port */ + YYSYMBOL_rc_control_interface = 593, /* rc_control_interface */ + YYSYMBOL_rc_control_use_cert = 594, /* rc_control_use_cert */ + YYSYMBOL_rc_server_key_file = 595, /* rc_server_key_file */ + YYSYMBOL_rc_server_cert_file = 596, /* rc_server_cert_file */ + YYSYMBOL_rc_control_key_file = 597, /* rc_control_key_file */ + YYSYMBOL_rc_control_cert_file = 598, /* rc_control_cert_file */ + YYSYMBOL_dtstart = 599, /* dtstart */ + YYSYMBOL_contents_dt = 600, /* contents_dt */ + YYSYMBOL_content_dt = 601, /* content_dt */ + YYSYMBOL_dt_dnstap_enable = 602, /* dt_dnstap_enable */ + YYSYMBOL_dt_dnstap_bidirectional = 603, /* dt_dnstap_bidirectional */ + YYSYMBOL_dt_dnstap_socket_path = 604, /* dt_dnstap_socket_path */ + YYSYMBOL_dt_dnstap_ip = 605, /* dt_dnstap_ip */ + YYSYMBOL_dt_dnstap_tls = 606, /* dt_dnstap_tls */ + YYSYMBOL_dt_dnstap_tls_server_name = 607, /* dt_dnstap_tls_server_name */ + YYSYMBOL_dt_dnstap_tls_cert_bundle = 608, /* dt_dnstap_tls_cert_bundle */ + YYSYMBOL_dt_dnstap_tls_client_key_file = 609, /* dt_dnstap_tls_client_key_file */ + YYSYMBOL_dt_dnstap_tls_client_cert_file = 610, /* dt_dnstap_tls_client_cert_file */ + YYSYMBOL_dt_dnstap_send_identity = 611, /* dt_dnstap_send_identity */ + YYSYMBOL_dt_dnstap_send_version = 612, /* dt_dnstap_send_version */ + YYSYMBOL_dt_dnstap_identity = 613, /* dt_dnstap_identity */ + YYSYMBOL_dt_dnstap_version = 614, /* dt_dnstap_version */ + YYSYMBOL_dt_dnstap_log_resolver_query_messages = 615, /* dt_dnstap_log_resolver_query_messages */ + YYSYMBOL_dt_dnstap_log_resolver_response_messages = 616, /* dt_dnstap_log_resolver_response_messages */ + YYSYMBOL_dt_dnstap_log_client_query_messages = 617, /* dt_dnstap_log_client_query_messages */ + YYSYMBOL_dt_dnstap_log_client_response_messages = 618, /* dt_dnstap_log_client_response_messages */ + YYSYMBOL_dt_dnstap_log_forwarder_query_messages = 619, /* dt_dnstap_log_forwarder_query_messages */ + YYSYMBOL_dt_dnstap_log_forwarder_response_messages = 620, /* dt_dnstap_log_forwarder_response_messages */ + YYSYMBOL_pythonstart = 621, /* pythonstart */ + YYSYMBOL_contents_py = 622, /* contents_py */ + YYSYMBOL_content_py = 623, /* content_py */ + YYSYMBOL_py_script = 624, /* py_script */ + YYSYMBOL_dynlibstart = 625, /* dynlibstart */ + YYSYMBOL_contents_dl = 626, /* contents_dl */ + YYSYMBOL_content_dl = 627, /* content_dl */ + YYSYMBOL_dl_file = 628, /* dl_file */ + YYSYMBOL_server_disable_dnssec_lame_check = 629, /* server_disable_dnssec_lame_check */ + YYSYMBOL_server_log_identity = 630, /* server_log_identity */ + YYSYMBOL_server_response_ip = 631, /* server_response_ip */ + YYSYMBOL_server_response_ip_data = 632, /* server_response_ip_data */ + YYSYMBOL_dnscstart = 633, /* dnscstart */ + YYSYMBOL_contents_dnsc = 634, /* contents_dnsc */ + YYSYMBOL_content_dnsc = 635, /* content_dnsc */ + YYSYMBOL_dnsc_dnscrypt_enable = 636, /* dnsc_dnscrypt_enable */ + YYSYMBOL_dnsc_dnscrypt_port = 637, /* dnsc_dnscrypt_port */ + YYSYMBOL_dnsc_dnscrypt_provider = 638, /* dnsc_dnscrypt_provider */ + YYSYMBOL_dnsc_dnscrypt_provider_cert = 639, /* dnsc_dnscrypt_provider_cert */ + YYSYMBOL_dnsc_dnscrypt_provider_cert_rotated = 640, /* dnsc_dnscrypt_provider_cert_rotated */ + YYSYMBOL_dnsc_dnscrypt_secret_key = 641, /* dnsc_dnscrypt_secret_key */ + YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_size = 642, /* dnsc_dnscrypt_shared_secret_cache_size */ + YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_slabs = 643, /* dnsc_dnscrypt_shared_secret_cache_slabs */ + YYSYMBOL_dnsc_dnscrypt_nonce_cache_size = 644, /* dnsc_dnscrypt_nonce_cache_size */ + YYSYMBOL_dnsc_dnscrypt_nonce_cache_slabs = 645, /* dnsc_dnscrypt_nonce_cache_slabs */ + YYSYMBOL_cachedbstart = 646, /* cachedbstart */ + YYSYMBOL_contents_cachedb = 647, /* contents_cachedb */ + YYSYMBOL_content_cachedb = 648, /* content_cachedb */ + YYSYMBOL_cachedb_backend_name = 649, /* cachedb_backend_name */ + YYSYMBOL_cachedb_secret_seed = 650, /* cachedb_secret_seed */ + YYSYMBOL_redis_server_host = 651, /* redis_server_host */ + YYSYMBOL_redis_server_port = 652, /* redis_server_port */ + YYSYMBOL_redis_timeout = 653, /* redis_timeout */ + YYSYMBOL_redis_expire_records = 654, /* redis_expire_records */ + YYSYMBOL_server_tcp_connection_limit = 655, /* server_tcp_connection_limit */ + YYSYMBOL_ipsetstart = 656, /* ipsetstart */ + YYSYMBOL_contents_ipset = 657, /* contents_ipset */ + YYSYMBOL_content_ipset = 658, /* content_ipset */ + YYSYMBOL_ipset_name_v4 = 659, /* ipset_name_v4 */ + YYSYMBOL_ipset_name_v6 = 660 /* ipset_name_v6 */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; @@ -1090,19 +1094,19 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 668 +#define YYLAST 672 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 316 +#define YYNTOKENS 318 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 341 +#define YYNNTS 343 /* YYNRULES -- Number of rules. */ -#define YYNRULES 658 +#define YYNRULES 662 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 978 +#define YYNSTATES 984 /* YYMAXUTOK -- Last valid token kind. */ -#define YYMAXUTOK 570 +#define YYMAXUTOK 572 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM @@ -1173,79 +1177,80 @@ static const yytype_int16 yytranslate[] = 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315 + 315, 316, 317 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { - 0, 189, 189, 189, 190, 190, 191, 191, 192, 192, - 192, 193, 193, 194, 194, 195, 195, 196, 198, 204, - 209, 210, 211, 211, 211, 212, 212, 213, 213, 213, - 214, 214, 215, 215, 215, 216, 216, 217, 217, 217, - 218, 218, 218, 219, 219, 220, 220, 221, 221, 222, - 222, 223, 223, 224, 224, 225, 225, 226, 226, 227, - 227, 227, 228, 228, 228, 229, 229, 229, 230, 230, - 231, 231, 232, 232, 233, 233, 234, 234, 234, 235, - 235, 236, 236, 237, 237, 237, 238, 238, 239, 239, - 240, 240, 241, 241, 241, 242, 242, 243, 243, 244, - 244, 245, 245, 246, 246, 247, 247, 248, 248, 249, - 249, 250, 250, 250, 251, 251, 251, 252, 252, 252, - 253, 253, 253, 253, 254, 255, 255, 255, 256, 256, - 256, 257, 257, 258, 258, 259, 259, 259, 260, 260, - 260, 261, 261, 262, 262, 262, 263, 263, 264, 264, - 264, 265, 265, 266, 266, 267, 267, 268, 269, 269, - 270, 270, 271, 271, 272, 273, 273, 274, 274, 275, - 275, 276, 276, 277, 277, 278, 278, 278, 279, 279, - 280, 280, 281, 281, 282, 283, 283, 284, 284, 285, - 286, 286, 287, 287, 288, 288, 289, 289, 290, 290, - 290, 291, 291, 291, 292, 292, 293, 294, 294, 295, - 295, 296, 296, 297, 297, 298, 298, 298, 299, 299, - 299, 300, 300, 300, 301, 301, 302, 302, 303, 303, - 304, 304, 305, 305, 306, 306, 307, 307, 310, 322, - 323, 324, 324, 324, 324, 324, 325, 325, 327, 339, - 340, 341, 341, 341, 341, 342, 342, 344, 358, 359, - 360, 360, 360, 360, 361, 361, 361, 363, 382, 383, - 384, 384, 384, 384, 385, 385, 385, 386, 386, 386, - 389, 408, 425, 433, 443, 451, 468, 469, 470, 470, - 470, 470, 470, 471, 471, 471, 472, 472, 474, 483, - 492, 503, 512, 521, 530, 541, 550, 562, 576, 591, - 602, 619, 636, 653, 670, 685, 700, 713, 728, 737, - 746, 755, 764, 773, 782, 791, 800, 809, 818, 827, - 836, 845, 854, 867, 878, 889, 900, 909, 922, 931, - 940, 949, 956, 963, 972, 979, 988, 996, 1003, 1010, - 1018, 1027, 1035, 1051, 1059, 1067, 1075, 1083, 1091, 1100, - 1109, 1123, 1132, 1141, 1150, 1159, 1168, 1177, 1184, 1191, - 1217, 1225, 1232, 1239, 1246, 1253, 1261, 1269, 1277, 1284, - 1295, 1306, 1313, 1322, 1331, 1340, 1347, 1354, 1370, 1378, - 1386, 1396, 1406, 1416, 1430, 1438, 1451, 1462, 1470, 1483, - 1492, 1501, 1510, 1519, 1529, 1539, 1547, 1560, 1569, 1577, - 1586, 1594, 1607, 1616, 1626, 1633, 1643, 1653, 1663, 1673, - 1683, 1693, 1703, 1713, 1720, 1727, 1734, 1743, 1752, 1761, - 1770, 1777, 1787, 1807, 1814, 1832, 1845, 1858, 1871, 1880, - 1889, 1898, 1907, 1917, 1927, 1938, 1947, 1956, 1965, 1974, - 1983, 1992, 2001, 2014, 2027, 2036, 2043, 2052, 2061, 2070, - 2079, 2088, 2096, 2109, 2117, 2162, 2169, 2184, 2194, 2204, - 2211, 2218, 2225, 2234, 2242, 2256, 2277, 2298, 2310, 2322, - 2334, 2343, 2364, 2374, 2383, 2391, 2399, 2412, 2425, 2440, - 2455, 2464, 2473, 2479, 2488, 2497, 2507, 2517, 2527, 2536, - 2546, 2555, 2568, 2581, 2593, 2607, 2619, 2633, 2642, 2654, - 2664, 2671, 2678, 2687, 2696, 2706, 2716, 2726, 2733, 2740, - 2749, 2758, 2768, 2778, 2785, 2792, 2799, 2807, 2817, 2827, - 2837, 2847, 2857, 2867, 2913, 2923, 2931, 2939, 2954, 2963, - 2968, 2969, 2970, 2970, 2970, 2971, 2971, 2971, 2972, 2972, - 2974, 2984, 2993, 3000, 3007, 3014, 3021, 3028, 3035, 3040, - 3041, 3042, 3042, 3042, 3043, 3043, 3043, 3044, 3045, 3045, - 3046, 3046, 3047, 3047, 3048, 3049, 3050, 3051, 3052, 3053, - 3055, 3064, 3074, 3081, 3088, 3097, 3104, 3111, 3118, 3125, - 3134, 3143, 3150, 3157, 3167, 3177, 3187, 3197, 3207, 3217, - 3222, 3223, 3224, 3226, 3232, 3237, 3238, 3239, 3241, 3247, - 3257, 3264, 3273, 3281, 3286, 3287, 3289, 3289, 3289, 3290, - 3290, 3291, 3292, 3293, 3294, 3295, 3297, 3307, 3316, 3323, - 3332, 3339, 3348, 3356, 3369, 3377, 3390, 3395, 3396, 3397, - 3397, 3398, 3398, 3398, 3399, 3401, 3413, 3425, 3437, 3452, - 3465, 3478, 3489, 3494, 3495, 3496, 3496, 3498, 3513 + 0, 190, 190, 190, 191, 191, 192, 192, 193, 193, + 193, 194, 194, 195, 195, 196, 196, 197, 199, 205, + 210, 211, 212, 212, 212, 213, 213, 214, 214, 214, + 215, 215, 216, 216, 216, 217, 217, 218, 218, 218, + 219, 219, 219, 220, 220, 221, 221, 222, 222, 223, + 223, 224, 224, 225, 225, 226, 226, 227, 227, 228, + 228, 228, 229, 229, 230, 230, 230, 231, 231, 231, + 232, 232, 233, 233, 234, 234, 235, 235, 236, 236, + 236, 237, 237, 238, 238, 239, 239, 239, 240, 240, + 241, 241, 242, 242, 243, 243, 243, 244, 244, 245, + 245, 246, 246, 247, 247, 248, 248, 249, 249, 250, + 250, 251, 251, 252, 252, 252, 253, 253, 253, 254, + 254, 254, 255, 255, 255, 255, 256, 257, 257, 257, + 258, 258, 258, 259, 259, 260, 260, 261, 261, 261, + 262, 262, 262, 263, 263, 264, 264, 264, 265, 265, + 266, 266, 266, 267, 267, 268, 268, 269, 269, 270, + 271, 271, 272, 272, 273, 273, 274, 275, 275, 276, + 276, 277, 277, 278, 278, 279, 279, 280, 280, 280, + 281, 281, 282, 282, 283, 283, 284, 285, 285, 286, + 286, 287, 288, 288, 289, 289, 290, 290, 291, 291, + 292, 292, 292, 293, 293, 293, 294, 294, 295, 296, + 296, 297, 297, 298, 298, 299, 299, 300, 300, 300, + 301, 301, 301, 302, 302, 302, 303, 303, 304, 304, + 305, 305, 306, 306, 307, 307, 308, 308, 309, 309, + 312, 324, 325, 326, 326, 326, 326, 326, 327, 327, + 329, 341, 342, 343, 343, 343, 343, 344, 344, 346, + 360, 361, 362, 362, 362, 362, 363, 363, 363, 365, + 384, 385, 386, 386, 386, 386, 387, 387, 387, 388, + 388, 388, 391, 410, 427, 435, 445, 453, 470, 471, + 472, 472, 472, 472, 472, 473, 473, 473, 474, 474, + 476, 485, 494, 505, 514, 523, 532, 543, 552, 564, + 578, 593, 604, 621, 638, 655, 672, 687, 702, 715, + 730, 739, 748, 757, 766, 775, 784, 793, 802, 811, + 820, 829, 838, 847, 856, 869, 880, 891, 902, 911, + 924, 933, 942, 951, 958, 965, 974, 981, 990, 998, + 1005, 1012, 1020, 1029, 1037, 1053, 1061, 1069, 1077, 1085, + 1093, 1102, 1111, 1125, 1134, 1143, 1152, 1161, 1170, 1179, + 1186, 1193, 1219, 1227, 1234, 1241, 1248, 1255, 1263, 1271, + 1279, 1286, 1297, 1308, 1315, 1324, 1333, 1342, 1351, 1358, + 1365, 1372, 1388, 1396, 1404, 1414, 1424, 1434, 1448, 1456, + 1469, 1480, 1488, 1501, 1510, 1519, 1528, 1537, 1547, 1557, + 1565, 1578, 1587, 1595, 1604, 1612, 1625, 1634, 1644, 1651, + 1661, 1671, 1681, 1691, 1701, 1711, 1721, 1731, 1738, 1745, + 1752, 1761, 1770, 1779, 1788, 1795, 1805, 1825, 1832, 1850, + 1863, 1876, 1889, 1898, 1907, 1916, 1925, 1935, 1945, 1956, + 1965, 1974, 1983, 1992, 2001, 2010, 2019, 2032, 2045, 2054, + 2061, 2070, 2079, 2088, 2097, 2106, 2114, 2127, 2135, 2180, + 2187, 2202, 2212, 2222, 2229, 2236, 2243, 2252, 2260, 2274, + 2295, 2316, 2328, 2340, 2352, 2361, 2382, 2392, 2401, 2409, + 2417, 2430, 2443, 2458, 2473, 2482, 2491, 2497, 2506, 2515, + 2525, 2535, 2545, 2554, 2564, 2573, 2586, 2599, 2611, 2625, + 2637, 2651, 2660, 2672, 2682, 2689, 2696, 2705, 2714, 2724, + 2734, 2744, 2751, 2758, 2767, 2776, 2786, 2796, 2803, 2810, + 2817, 2825, 2835, 2845, 2855, 2865, 2875, 2885, 2931, 2941, + 2949, 2957, 2972, 2981, 2986, 2987, 2988, 2988, 2988, 2989, + 2989, 2989, 2990, 2990, 2992, 3002, 3011, 3018, 3025, 3032, + 3039, 3046, 3053, 3058, 3059, 3060, 3060, 3060, 3061, 3061, + 3061, 3062, 3063, 3063, 3064, 3064, 3065, 3065, 3066, 3067, + 3068, 3069, 3070, 3071, 3073, 3082, 3092, 3099, 3106, 3115, + 3122, 3129, 3136, 3143, 3152, 3161, 3168, 3175, 3185, 3195, + 3205, 3215, 3225, 3235, 3240, 3241, 3242, 3244, 3250, 3255, + 3256, 3257, 3259, 3265, 3275, 3282, 3291, 3299, 3304, 3305, + 3307, 3307, 3307, 3308, 3308, 3309, 3310, 3311, 3312, 3313, + 3315, 3325, 3334, 3341, 3350, 3357, 3366, 3374, 3387, 3395, + 3408, 3413, 3414, 3415, 3415, 3416, 3416, 3416, 3417, 3419, + 3431, 3443, 3455, 3470, 3483, 3496, 3507, 3512, 3513, 3514, + 3514, 3516, 3531 }; #endif @@ -1350,7 +1355,8 @@ static const char *const yytname[] = "VAR_SERVE_EXPIRED_TTL_RESET", "VAR_SERVE_EXPIRED_REPLY_TTL", "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_HIDE_TRUSTANCHOR", "VAR_HIDE_HTTP_USER_AGENT", + "VAR_HTTP_USER_AGENT", "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", @@ -1423,7 +1429,8 @@ static const char *const yytname[] = "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_hide_trustanchor", "server_hide_http_user_agent", + "server_identity", "server_version", "server_http_user_agent", "server_nsid", "server_so_rcvbuf", "server_so_sndbuf", "server_so_reuseport", "server_ip_transparent", "server_ip_freebind", "server_ip_dscp", "server_stream_wait_size", "server_edns_buffer_size", @@ -1561,11 +1568,11 @@ static const yytype_int16 yytoknum[] = 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, - 565, 566, 567, 568, 569, 570 + 565, 566, 567, 568, 569, 570, 571, 572 }; #endif -#define YYPACT_NINF (-300) +#define YYPACT_NINF (-302) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) @@ -1579,11 +1586,11 @@ static const yytype_int16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - -300, 0, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, 296, -43, -38, -42, -44, -28, -29, -149, - -109, -299, -192, -190, -291, 3, 4, 27, 28, 31, + -302, 0, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, 298, -43, -38, -42, -44, -28, -29, -149, + -109, -301, -194, -192, -293, 3, 4, 27, 28, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 53, 54, 55, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 87, 88, 89, 91, @@ -1598,85 +1605,86 @@ static const yytype_int16 yypact[] = 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, 216, 217, 218, 220, 226, - 227, 228, 229, 230, 232, 233, 235, 241, 242, 243, - 244, 245, 246, 248, 249, 250, 251, 252, 253, 254, - 256, 257, 258, 259, 262, 263, 270, 271, 272, 273, + 210, 211, 212, 213, 214, 216, 217, 218, 219, 220, + 222, 228, 229, 230, 231, 232, 234, 235, 237, 243, + 244, 245, 246, 247, 248, 250, 251, 252, 253, 254, + 255, 256, 258, 259, 260, 261, 264, 265, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 289, 290, 291, 293, 294, 295, - 297, 331, 332, 333, 334, 338, 339, 340, 382, 383, - 384, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, 385, 386, - 387, 388, 389, 390, 396, -300, -300, -300, -300, -300, - -300, -300, -300, 400, 401, 428, 429, 430, 439, -300, - -300, -300, -300, -300, -300, -300, 452, 453, 454, 455, - 456, 457, 458, -300, -300, -300, -300, -300, -300, -300, - -300, 459, 460, 461, 462, 463, 464, 465, 466, 467, - 468, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, 469, 470, 471, 511, 513, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, 530, 531, - 532, 533, 534, 535, 536, 537, -300, -300, -300, -300, - -300, -300, -300, -300, -300, 538, 539, 540, 551, 552, - 553, 554, 555, 556, 557, 559, 560, 561, 562, 563, - 564, 565, 568, 571, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, 574, -300, -300, 575, -300, -300, - 584, 585, 586, 588, 589, 590, 591, 592, 593, 594, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, 595, 600, 601, 602, 603, 604, -300, -300, -300, - -300, -300, -300, -300, 605, 606, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, 607, - 608, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, 609, - 610, 611, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, 612, 613, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, 614, 615, 616, 617, 618, 619, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, 620, -300, -300, -300, -300, -300, -300, -300, -300, - -300, 621, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, 622, - -300, -300, 623, 624, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, 625, 626, 627, -300, - -300, -300, -300, -300, -300, -300, -300, -300 + 284, 285, 286, 287, 288, 289, 291, 292, 293, 295, + 296, 297, 299, 333, 334, 335, 336, 340, 341, 342, + 384, 385, 386, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, 387, 388, 389, 390, 391, 392, 398, -302, + -302, -302, -302, -302, -302, -302, -302, 402, 403, 430, + 431, 432, 441, -302, -302, -302, -302, -302, -302, -302, + 454, 455, 456, 457, 458, 459, 460, -302, -302, -302, + -302, -302, -302, -302, -302, 461, 462, 463, 464, 465, + 466, 467, 468, 469, 470, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, 471, 472, 473, 513, + 515, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, 534, 535, 536, 537, 538, 539, 540, 541, + -302, -302, -302, -302, -302, -302, -302, -302, -302, 542, + 543, 544, 555, 556, 557, 558, 559, 560, 561, 563, + 564, 565, 566, 567, 568, 569, 572, 575, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, 578, -302, + -302, 579, -302, -302, 588, 589, 590, 592, 593, 594, + 595, 596, 597, 598, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, 599, 604, 605, 606, 607, + 608, -302, -302, -302, -302, -302, -302, -302, 609, 610, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, 611, 612, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, 613, 614, 615, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, 616, 617, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, 618, 619, 620, + 621, 622, 623, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, 624, -302, -302, + -302, -302, -302, -302, -302, -302, -302, 625, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, 626, -302, -302, 627, 628, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, 629, 630, 631, -302, -302, -302, -302, -302, + -302, -302, -302, -302 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1684,10 +1692,10 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_int16 yydefact[] = { - 2, 0, 1, 18, 19, 238, 248, 539, 599, 558, - 257, 613, 636, 267, 652, 285, 604, 3, 17, 21, - 240, 250, 259, 269, 287, 541, 560, 601, 606, 615, - 638, 654, 4, 5, 6, 10, 14, 15, 8, 9, + 2, 0, 1, 18, 19, 240, 250, 543, 603, 562, + 259, 617, 640, 269, 656, 287, 608, 3, 17, 21, + 242, 252, 261, 271, 289, 545, 564, 605, 610, 619, + 642, 658, 4, 5, 6, 10, 14, 15, 8, 9, 7, 16, 11, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1710,158 +1718,159 @@ static const yytype_int16 yydefact[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 20, 22, 23, 86, 89, 98, 201, 202, 24, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 37, 77, 25, 90, 91, 48, 70, 85, 26, 27, - 30, 31, 28, 29, 32, 33, 34, 235, 236, 237, - 35, 36, 122, 213, 123, 125, 126, 127, 215, 220, - 216, 227, 228, 229, 230, 128, 129, 130, 131, 132, - 133, 134, 197, 87, 76, 102, 120, 121, 225, 222, - 124, 38, 39, 40, 41, 42, 78, 92, 93, 109, - 64, 74, 65, 205, 206, 103, 58, 59, 204, 60, - 61, 233, 113, 117, 138, 148, 175, 151, 226, 114, - 71, 43, 44, 45, 100, 139, 140, 141, 142, 46, - 47, 49, 50, 52, 53, 51, 146, 152, 54, 55, - 56, 62, 81, 118, 95, 147, 88, 171, 96, 97, - 115, 116, 223, 101, 57, 79, 82, 63, 66, 104, - 105, 106, 80, 172, 107, 67, 68, 69, 214, 119, - 189, 190, 191, 192, 193, 194, 195, 203, 108, 75, - 234, 110, 111, 112, 173, 72, 73, 94, 83, 84, - 99, 135, 136, 224, 137, 143, 144, 145, 176, 177, - 179, 181, 182, 180, 183, 198, 149, 150, 155, 156, - 153, 154, 157, 158, 160, 159, 217, 219, 218, 174, - 184, 185, 186, 187, 188, 207, 209, 208, 210, 211, - 212, 231, 232, 178, 196, 199, 200, 221, 0, 0, - 0, 0, 0, 0, 0, 239, 241, 242, 243, 245, - 246, 247, 244, 0, 0, 0, 0, 0, 0, 249, - 251, 252, 253, 254, 255, 256, 0, 0, 0, 0, - 0, 0, 0, 258, 260, 261, 264, 265, 262, 266, - 263, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 268, 270, 271, 272, 273, 277, 278, 279, 274, - 275, 276, 0, 0, 0, 0, 0, 290, 294, 295, - 296, 297, 286, 288, 289, 291, 292, 293, 0, 0, - 0, 0, 0, 0, 0, 0, 540, 542, 544, 543, - 549, 545, 546, 547, 548, 0, 0, 0, 0, 0, + 0, 0, 0, 20, 22, 23, 88, 91, 100, 203, + 204, 24, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 37, 79, 25, 92, 93, 48, 72, 87, + 26, 27, 30, 31, 28, 29, 32, 33, 34, 237, + 238, 239, 35, 36, 124, 215, 125, 127, 128, 129, + 217, 222, 218, 229, 230, 231, 232, 130, 131, 132, + 133, 134, 135, 136, 199, 89, 78, 104, 122, 123, + 227, 224, 126, 38, 39, 40, 41, 42, 80, 94, + 95, 111, 66, 76, 67, 207, 208, 105, 58, 59, + 206, 62, 60, 61, 63, 235, 115, 119, 140, 150, + 177, 153, 228, 116, 73, 43, 44, 45, 102, 141, + 142, 143, 144, 46, 47, 49, 50, 52, 53, 51, + 148, 154, 54, 55, 56, 64, 83, 120, 97, 149, + 90, 173, 98, 99, 117, 118, 225, 103, 57, 81, + 84, 65, 68, 106, 107, 108, 82, 174, 109, 69, + 70, 71, 216, 121, 191, 192, 193, 194, 195, 196, + 197, 205, 110, 77, 236, 112, 113, 114, 175, 74, + 75, 96, 85, 86, 101, 137, 138, 226, 139, 145, + 146, 147, 178, 179, 181, 183, 184, 182, 185, 200, + 151, 152, 157, 158, 155, 156, 159, 160, 162, 161, + 219, 221, 220, 176, 186, 187, 188, 189, 190, 209, + 211, 210, 212, 213, 214, 233, 234, 180, 198, 201, + 202, 223, 0, 0, 0, 0, 0, 0, 0, 241, + 243, 244, 245, 247, 248, 249, 246, 0, 0, 0, + 0, 0, 0, 251, 253, 254, 255, 256, 257, 258, + 0, 0, 0, 0, 0, 0, 0, 260, 262, 263, + 266, 267, 264, 268, 265, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 270, 272, 273, 274, 275, + 279, 280, 281, 276, 277, 278, 0, 0, 0, 0, + 0, 292, 296, 297, 298, 299, 288, 290, 291, 293, + 294, 295, 0, 0, 0, 0, 0, 0, 0, 0, + 544, 546, 548, 547, 553, 549, 550, 551, 552, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 559, 561, 563, 562, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, - 576, 577, 578, 579, 0, 600, 602, 0, 605, 607, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 614, 616, 617, 618, 620, 621, 619, 622, 623, 624, - 625, 0, 0, 0, 0, 0, 0, 637, 639, 640, - 641, 642, 643, 644, 0, 0, 653, 655, 656, 299, - 298, 305, 318, 316, 328, 324, 325, 329, 326, 327, - 330, 331, 332, 336, 337, 367, 368, 369, 370, 371, - 397, 398, 399, 405, 406, 321, 407, 408, 411, 409, - 410, 414, 415, 416, 430, 382, 383, 385, 386, 417, - 433, 376, 378, 434, 441, 442, 443, 322, 396, 461, - 462, 377, 455, 360, 317, 372, 431, 438, 418, 0, - 0, 465, 323, 300, 359, 422, 301, 319, 320, 373, - 374, 463, 420, 424, 425, 334, 333, 302, 466, 400, - 429, 361, 381, 435, 436, 437, 440, 454, 375, 459, - 457, 458, 388, 395, 426, 427, 389, 390, 419, 445, - 362, 363, 366, 338, 340, 335, 341, 342, 343, 344, - 351, 352, 353, 354, 355, 356, 357, 467, 468, 470, - 401, 402, 403, 404, 412, 413, 471, 472, 473, 0, - 0, 0, 421, 391, 393, 609, 482, 486, 484, 483, - 487, 485, 0, 0, 490, 491, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 423, 439, 460, 495, - 496, 392, 474, 0, 0, 0, 0, 0, 0, 446, - 447, 448, 449, 450, 451, 452, 453, 610, 384, 379, - 444, 358, 303, 304, 380, 497, 498, 499, 500, 501, - 503, 502, 504, 505, 506, 339, 346, 492, 494, 493, - 345, 0, 365, 428, 469, 364, 394, 347, 348, 350, - 349, 0, 508, 387, 456, 509, 510, 511, 515, 514, - 512, 513, 516, 517, 518, 519, 521, 520, 532, 0, - 536, 537, 0, 0, 538, 522, 530, 523, 524, 525, - 529, 531, 526, 527, 528, 280, 281, 282, 283, 284, - 550, 552, 551, 554, 555, 556, 557, 553, 580, 582, - 583, 584, 585, 586, 587, 588, 589, 590, 581, 591, - 592, 593, 594, 595, 596, 597, 598, 603, 608, 626, - 627, 628, 631, 629, 630, 632, 633, 634, 635, 645, - 646, 647, 648, 649, 650, 657, 658, 432, 464, 481, - 611, 612, 488, 489, 475, 476, 0, 0, 0, 480, - 651, 507, 533, 534, 535, 479, 477, 478 + 0, 0, 0, 0, 0, 0, 0, 0, 563, 565, + 567, 566, 568, 569, 570, 571, 572, 573, 574, 575, + 576, 577, 578, 579, 580, 581, 582, 583, 0, 604, + 606, 0, 609, 611, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 618, 620, 621, 622, 624, 625, + 623, 626, 627, 628, 629, 0, 0, 0, 0, 0, + 0, 641, 643, 644, 645, 646, 647, 648, 0, 0, + 657, 659, 660, 301, 300, 307, 320, 318, 330, 326, + 327, 331, 328, 329, 332, 333, 334, 338, 339, 369, + 370, 371, 372, 373, 401, 402, 403, 409, 410, 323, + 411, 412, 415, 413, 414, 418, 419, 420, 434, 384, + 385, 388, 389, 421, 437, 378, 380, 438, 445, 446, + 447, 324, 400, 465, 466, 379, 459, 362, 319, 374, + 435, 442, 422, 0, 0, 469, 325, 302, 361, 426, + 303, 321, 322, 375, 376, 467, 424, 428, 429, 336, + 335, 304, 470, 404, 433, 363, 383, 439, 440, 441, + 444, 458, 377, 463, 461, 462, 392, 399, 430, 431, + 393, 394, 423, 449, 364, 365, 368, 340, 342, 337, + 343, 344, 345, 346, 353, 354, 355, 356, 357, 358, + 359, 471, 472, 474, 405, 406, 407, 408, 416, 417, + 475, 476, 477, 0, 0, 0, 425, 395, 397, 613, + 486, 490, 488, 487, 491, 489, 0, 0, 494, 495, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 427, 443, 464, 499, 500, 396, 478, 0, 0, 0, + 0, 0, 0, 450, 451, 452, 453, 454, 455, 456, + 457, 614, 386, 387, 390, 381, 448, 360, 305, 306, + 382, 501, 502, 503, 504, 505, 507, 506, 508, 509, + 510, 341, 348, 496, 498, 497, 347, 0, 367, 432, + 473, 366, 398, 349, 350, 352, 351, 0, 512, 391, + 460, 513, 514, 515, 519, 518, 516, 517, 520, 521, + 522, 523, 525, 524, 536, 0, 540, 541, 0, 0, + 542, 526, 534, 527, 528, 529, 533, 535, 530, 531, + 532, 282, 283, 284, 285, 286, 554, 556, 555, 558, + 559, 560, 561, 557, 584, 586, 587, 588, 589, 590, + 591, 592, 593, 594, 585, 595, 596, 597, 598, 599, + 600, 601, 602, 607, 612, 630, 631, 632, 635, 633, + 634, 636, 637, 638, 639, 649, 650, 651, 652, 653, + 654, 661, 662, 436, 468, 485, 615, 616, 492, 493, + 479, 480, 0, 0, 0, 484, 655, 511, 537, 538, + 539, 483, 481, 482 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, 269, 628, 629, 630, 631, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300, -300, -300, -300, -300, -300, -300, -300, -300, -300, - -300 + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, 271, 632, 633, 634, 635, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 17, 18, 19, 32, 261, 20, 33, 485, - 21, 34, 499, 22, 35, 513, 23, 36, 531, 547, - 548, 549, 550, 551, 24, 37, 552, 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, 486, 487, - 488, 489, 490, 491, 492, 500, 501, 502, 503, 504, - 505, 532, 533, 534, 535, 536, 537, 538, 539, 540, - 541, 514, 515, 516, 517, 518, 519, 520, 25, 38, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 26, - 39, 594, 595, 596, 597, 598, 599, 600, 601, 602, - 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, - 613, 27, 40, 615, 616, 28, 41, 618, 619, 473, - 474, 475, 476, 29, 42, 630, 631, 632, 633, 634, - 635, 636, 637, 638, 639, 640, 30, 43, 647, 648, - 649, 650, 651, 652, 653, 477, 31, 44, 656, 657, - 658 + -1, 1, 17, 18, 19, 32, 263, 20, 33, 489, + 21, 34, 503, 22, 35, 517, 23, 36, 535, 551, + 552, 553, 554, 555, 24, 37, 556, 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, + 490, 491, 492, 493, 494, 495, 496, 504, 505, 506, + 507, 508, 509, 536, 537, 538, 539, 540, 541, 542, + 543, 544, 545, 518, 519, 520, 521, 522, 523, 524, + 25, 38, 570, 571, 572, 573, 574, 575, 576, 577, + 578, 26, 39, 598, 599, 600, 601, 602, 603, 604, + 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, + 615, 616, 617, 27, 40, 619, 620, 28, 41, 622, + 623, 477, 478, 479, 480, 29, 42, 634, 635, 636, + 637, 638, 639, 640, 641, 642, 643, 644, 30, 43, + 651, 652, 653, 654, 655, 656, 657, 481, 31, 44, + 660, 661, 662 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1869,86 +1878,87 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 2, 521, 478, 506, 479, 480, 614, 493, 654, 655, - 617, 3, 4, 659, 660, 494, 495, 521, 575, 576, - 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, - 587, 588, 589, 590, 591, 592, 593, 661, 662, 507, - 508, 663, 664, 665, 666, 667, 5, 668, 669, 670, - 671, 672, 6, 620, 621, 622, 623, 624, 625, 626, - 627, 628, 629, 673, 674, 675, 509, 481, 558, 559, - 560, 561, 562, 563, 564, 565, 641, 642, 643, 644, - 645, 646, 676, 677, 678, 679, 680, 681, 682, 683, - 684, 685, 686, 687, 688, 689, 7, 690, 691, 692, - 482, 693, 694, 695, 496, 696, 497, 697, 698, 699, - 483, 700, 701, 702, 8, 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, 510, 511, 733, 734, 735, - 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, - 746, 747, 748, 749, 750, 751, 9, 752, 753, 754, - 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, - 765, 766, 767, 768, 769, 512, 770, 771, 772, 773, - 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, - 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, - 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, - 804, 805, 806, 807, 808, 10, 809, 810, 811, 522, - 812, 523, 524, 525, 526, 527, 813, 814, 815, 816, - 817, 528, 818, 819, 11, 820, 484, 523, 524, 525, - 498, 821, 822, 823, 824, 825, 826, 528, 827, 828, - 829, 830, 831, 832, 833, 12, 834, 835, 836, 837, - 529, 530, 838, 839, 13, 542, 543, 544, 545, 546, - 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, - 850, 851, 852, 853, 854, 855, 856, 857, 14, 858, - 859, 860, 15, 861, 862, 863, 553, 864, 16, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 865, 866, 867, 868, 77, 78, 79, 869, 870, - 871, 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, 872, 873, 874, 875, 876, 877, 878, 879, - 880, 121, 122, 123, 124, 125, 881, 126, 127, 128, - 882, 883, 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, 884, 885, - 886, 155, 156, 157, 158, 159, 160, 161, 162, 887, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 888, 889, 890, 891, 892, 893, 894, 895, - 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, - 906, 907, 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, 908, 214, 909, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, - 920, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 921, 922, 923, 924, 925, 926, 927, 241, 928, - 929, 930, 931, 932, 933, 934, 242, 243, 935, 244, - 245, 936, 246, 247, 937, 938, 248, 249, 250, 251, - 252, 253, 254, 255, 939, 940, 941, 256, 942, 943, - 944, 945, 946, 947, 948, 949, 257, 258, 259, 260, - 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, - 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, - 970, 971, 972, 973, 974, 975, 976, 977, 0, 0, + 2, 525, 482, 510, 483, 484, 618, 497, 658, 659, + 621, 3, 4, 663, 664, 498, 499, 525, 579, 580, + 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, + 591, 592, 593, 594, 595, 596, 597, 665, 666, 511, + 512, 667, 668, 669, 670, 671, 5, 672, 673, 674, + 675, 676, 6, 624, 625, 626, 627, 628, 629, 630, + 631, 632, 633, 677, 678, 679, 513, 485, 562, 563, + 564, 565, 566, 567, 568, 569, 645, 646, 647, 648, + 649, 650, 680, 681, 682, 683, 684, 685, 686, 687, + 688, 689, 690, 691, 692, 693, 7, 694, 695, 696, + 486, 697, 698, 699, 500, 700, 501, 701, 702, 703, + 487, 704, 705, 706, 8, 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, 514, 515, 737, 738, 739, + 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, + 750, 751, 752, 753, 754, 755, 9, 756, 757, 758, + 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, + 769, 770, 771, 772, 773, 516, 774, 775, 776, 777, + 778, 779, 780, 781, 782, 783, 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, 812, 10, 813, 814, 815, 816, + 817, 526, 818, 527, 528, 529, 530, 531, 819, 820, + 821, 822, 823, 532, 824, 825, 11, 826, 488, 527, + 528, 529, 502, 827, 828, 829, 830, 831, 832, 532, + 833, 834, 835, 836, 837, 838, 839, 12, 840, 841, + 842, 843, 533, 534, 844, 845, 13, 546, 547, 548, + 549, 550, 846, 847, 848, 849, 850, 851, 852, 853, + 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, + 14, 864, 865, 866, 15, 867, 868, 869, 557, 870, + 16, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 871, 872, 873, 874, 77, 78, 79, + 875, 876, 877, 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, 878, 879, 880, 881, 882, 883, + 884, 885, 886, 121, 122, 123, 124, 125, 887, 126, + 127, 128, 888, 889, 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, + 890, 891, 892, 155, 156, 157, 158, 159, 160, 161, + 162, 893, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 894, 895, 896, 897, 898, 899, + 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, + 910, 911, 912, 913, 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, 914, 214, 915, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 916, 917, 918, 919, 920, 921, + 922, 923, 924, 925, 926, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 927, 928, 929, 930, 931, + 932, 933, 243, 934, 935, 936, 937, 938, 939, 940, + 244, 245, 941, 246, 247, 942, 248, 249, 943, 944, + 250, 251, 252, 253, 254, 255, 256, 257, 945, 946, + 947, 258, 948, 949, 950, 951, 952, 953, 954, 955, + 259, 260, 261, 262, 956, 957, 958, 959, 960, 961, + 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, + 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, + 982, 983, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 554, 555, 556, 557 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 558, + 559, 560, 561 }; static const yytype_int16 yycheck[] = { - 0, 45, 45, 45, 47, 48, 115, 45, 299, 300, - 309, 11, 12, 10, 10, 53, 54, 45, 167, 168, + 0, 45, 45, 45, 47, 48, 115, 45, 301, 302, + 311, 11, 12, 10, 10, 53, 54, 45, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 10, 10, 81, 82, 10, 10, 10, 10, 10, 46, 10, 10, 10, - 10, 10, 52, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 10, 10, 10, 108, 110, 97, 98, - 99, 100, 101, 102, 103, 104, 266, 267, 268, 269, - 270, 271, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 52, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 10, 10, 10, 108, 110, 97, 98, + 99, 100, 101, 102, 103, 104, 268, 269, 270, 271, + 272, 273, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 96, 10, 10, 10, 143, 10, 10, 10, 142, 10, 144, 10, 10, 10, 153, 10, 10, 10, 114, 10, 10, 10, 10, 10, @@ -1962,62 +1972,63 @@ 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, - 10, 10, 10, 10, 10, 225, 10, 10, 10, 273, - 10, 275, 276, 277, 278, 279, 10, 10, 10, 10, - 10, 285, 10, 10, 244, 10, 289, 275, 276, 277, - 288, 10, 10, 10, 10, 10, 10, 285, 10, 10, - 10, 10, 10, 10, 10, 265, 10, 10, 10, 10, - 314, 315, 10, 10, 274, 303, 304, 305, 306, 307, + 10, 10, 10, 10, 10, 225, 10, 10, 10, 10, + 10, 275, 10, 277, 278, 279, 280, 281, 10, 10, + 10, 10, 10, 287, 10, 10, 246, 10, 291, 277, + 278, 279, 290, 10, 10, 10, 10, 10, 10, 287, + 10, 10, 10, 10, 10, 10, 10, 267, 10, 10, + 10, 10, 316, 317, 10, 10, 276, 305, 306, 307, + 308, 309, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 298, 10, - 10, 10, 302, 10, 10, 10, 37, 10, 308, 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, 10, 10, 10, 10, 49, 50, 51, 10, 10, - 10, 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, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 105, 106, 107, 108, 109, 10, 111, 112, 113, - 10, 10, 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, 10, 10, - 10, 145, 146, 147, 148, 149, 150, 151, 152, 10, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 10, 10, 10, 10, 10, 10, 10, 10, + 300, 10, 10, 10, 304, 10, 10, 10, 37, 10, + 310, 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, 10, 10, 10, 10, 49, 50, 51, + 10, 10, 10, 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, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 105, 106, 107, 108, 109, 10, 111, + 112, 113, 10, 10, 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, + 10, 10, 10, 145, 146, 147, 148, 149, 150, 151, + 152, 10, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 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, 10, 226, 10, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 10, 10, 10, 10, 10, 10, 10, 272, 10, - 10, 10, 10, 10, 10, 10, 280, 281, 10, 283, - 284, 10, 286, 287, 10, 10, 290, 291, 292, 293, - 294, 295, 296, 297, 10, 10, 10, 301, 10, 10, - 10, 10, 10, 10, 10, 10, 310, 311, 312, 313, + 10, 10, 10, 10, 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, 10, 226, 10, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 10, 10, 10, 10, 10, + 10, 10, 274, 10, 10, 10, 10, 10, 10, 10, + 282, 283, 10, 285, 286, 10, 288, 289, 10, 10, + 292, 293, 294, 295, 296, 297, 298, 299, 10, 10, + 10, 303, 10, 10, 10, 10, 10, 10, 10, 10, + 312, 313, 314, 315, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 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, + 10, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 37, 37, 37, 37 + -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, + 37, 37, 37 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_int16 yystos[] = { - 0, 317, 0, 11, 12, 46, 52, 96, 114, 166, - 225, 244, 265, 274, 298, 302, 308, 318, 319, 320, - 323, 326, 329, 332, 340, 584, 595, 617, 621, 629, - 642, 652, 321, 324, 327, 330, 333, 341, 585, 596, - 618, 622, 630, 643, 653, 13, 14, 15, 16, 17, + 0, 319, 0, 11, 12, 46, 52, 96, 114, 166, + 225, 246, 267, 276, 300, 304, 310, 320, 321, 322, + 325, 328, 331, 334, 342, 588, 599, 621, 625, 633, + 646, 656, 323, 326, 329, 332, 335, 343, 589, 600, + 622, 626, 634, 647, 657, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 49, 50, 51, @@ -2036,10 +2047,10 @@ static const yytype_int16 yystos[] = 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 226, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 272, 280, 281, 283, 284, 286, 287, 290, 291, - 292, 293, 294, 295, 296, 297, 301, 310, 311, 312, - 313, 322, 343, 344, 345, 346, 347, 348, 349, 350, + 243, 244, 245, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 274, 282, 283, 285, 286, 288, 289, + 292, 293, 294, 295, 296, 297, 298, 299, 303, 312, + 313, 314, 315, 324, 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, @@ -2060,25 +2071,26 @@ static const yytype_int16 yystos[] = 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, - 551, 552, 553, 625, 626, 627, 628, 651, 45, 47, - 48, 110, 143, 153, 289, 325, 554, 555, 556, 557, - 558, 559, 560, 45, 53, 54, 142, 144, 288, 328, - 561, 562, 563, 564, 565, 566, 45, 81, 82, 108, - 187, 188, 227, 331, 577, 578, 579, 580, 581, 582, - 583, 45, 273, 275, 276, 277, 278, 279, 285, 314, - 315, 334, 567, 568, 569, 570, 571, 572, 573, 574, - 575, 576, 303, 304, 305, 306, 307, 335, 336, 337, - 338, 339, 342, 567, 568, 569, 570, 571, 97, 98, - 99, 100, 101, 102, 103, 104, 586, 587, 588, 589, - 590, 591, 592, 593, 594, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 597, 598, 599, 600, 601, 602, + 551, 552, 553, 554, 555, 556, 557, 629, 630, 631, + 632, 655, 45, 47, 48, 110, 143, 153, 291, 327, + 558, 559, 560, 561, 562, 563, 564, 45, 53, 54, + 142, 144, 290, 330, 565, 566, 567, 568, 569, 570, + 45, 81, 82, 108, 187, 188, 227, 333, 581, 582, + 583, 584, 585, 586, 587, 45, 275, 277, 278, 279, + 280, 281, 287, 316, 317, 336, 571, 572, 573, 574, + 575, 576, 577, 578, 579, 580, 305, 306, 307, 308, + 309, 337, 338, 339, 340, 341, 344, 571, 572, 573, + 574, 575, 97, 98, 99, 100, 101, 102, 103, 104, + 590, 591, 592, 593, 594, 595, 596, 597, 598, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, - 613, 614, 615, 616, 115, 619, 620, 309, 623, 624, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, - 641, 266, 267, 268, 269, 270, 271, 644, 645, 646, - 647, 648, 649, 650, 299, 300, 654, 655, 656, 10, + 613, 614, 615, 616, 617, 618, 619, 620, 115, 623, + 624, 311, 627, 628, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 635, 636, 637, 638, 639, 640, + 641, 642, 643, 644, 645, 268, 269, 270, 271, 272, + 273, 648, 649, 650, 651, 652, 653, 654, 301, 302, + 658, 659, 660, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -2110,42 +2122,42 @@ static const yytype_int16 yystos[] = 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10 + 10, 10, 10, 10 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_int16 yyr1[] = { - 0, 316, 317, 317, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 318, 318, 318, 318, 319, 320, - 321, 321, 322, 322, 322, 322, 322, 322, 322, 322, - 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 322, 322, 322, 322, 322, 322, 322, 322, 323, 324, - 324, 325, 325, 325, 325, 325, 325, 325, 326, 327, - 327, 328, 328, 328, 328, 328, 328, 329, 330, 330, - 331, 331, 331, 331, 331, 331, 331, 332, 333, 333, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 335, 336, 337, 338, 339, 340, 341, 341, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, 343, 344, + 0, 318, 319, 319, 320, 320, 320, 320, 320, 320, + 320, 320, 320, 320, 320, 320, 320, 320, 321, 322, + 323, 323, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 325, 326, 326, 327, 327, 327, 327, 327, 327, 327, + 328, 329, 329, 330, 330, 330, 330, 330, 330, 331, + 332, 332, 333, 333, 333, 333, 333, 333, 333, 334, + 335, 335, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 337, 338, 339, 340, 341, 342, 343, 343, + 344, 344, 344, 344, 344, 344, 344, 344, 344, 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, @@ -2170,18 +2182,19 @@ static const yytype_int16 yyr1[] = 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, - 585, 585, 586, 586, 586, 586, 586, 586, 586, 586, - 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, - 596, 597, 597, 597, 597, 597, 597, 597, 597, 597, - 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, - 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, + 585, 586, 587, 588, 589, 589, 590, 590, 590, 590, + 590, 590, 590, 590, 591, 592, 593, 594, 595, 596, + 597, 598, 599, 600, 600, 601, 601, 601, 601, 601, + 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, + 601, 601, 601, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, - 618, 618, 619, 620, 621, 622, 622, 623, 624, 625, - 626, 627, 628, 629, 630, 630, 631, 631, 631, 631, - 631, 631, 631, 631, 631, 631, 632, 633, 634, 635, - 636, 637, 638, 639, 640, 641, 642, 643, 643, 644, - 644, 644, 644, 644, 644, 645, 646, 647, 648, 649, - 650, 651, 652, 653, 653, 654, 654, 655, 656 + 618, 619, 620, 621, 622, 622, 623, 624, 625, 626, + 626, 627, 628, 629, 630, 631, 632, 633, 634, 634, + 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, + 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, + 646, 647, 647, 648, 648, 648, 648, 648, 648, 649, + 650, 651, 652, 653, 654, 655, 656, 657, 657, 658, + 658, 659, 660 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -2210,49 +2223,50 @@ static const yytype_int8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 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, 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, 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, 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, 3, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 3, 3, 3, 2, 2, 2, 1, + 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, 2, 2, 2, 2, 2, 2, 2, 1, 2, - 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 2, 2, 2, 2, 2, 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, 1, - 2, 0, 1, 2, 1, 2, 0, 1, 2, 2, - 2, 3, 3, 1, 2, 0, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, - 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, - 2, 3, 1, 2, 0, 1, 1, 2, 2 + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 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, 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, 3, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, + 2, 2, 2, 1, 2, 0, 1, 1, 1, 1, + 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, + 2, 2, 1, 2, 0, 1, 1, 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, 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 }; @@ -2720,23 +2734,23 @@ yyreduce: switch (yyn) { case 18: /* force_toplevel: VAR_FORCE_TOPLEVEL */ -#line 199 "./util/configparser.y" +#line 200 "./util/configparser.y" { OUTYY(("\nP(force-toplevel)\n")); } -#line 2728 "util/configparser.c" +#line 2742 "util/configparser.c" break; case 19: /* serverstart: VAR_SERVER */ -#line 205 "./util/configparser.y" +#line 206 "./util/configparser.y" { OUTYY(("\nP(server:)\n")); } -#line 2736 "util/configparser.c" +#line 2750 "util/configparser.c" break; - case 238: /* stubstart: VAR_STUB_ZONE */ -#line 311 "./util/configparser.y" + case 240: /* stubstart: VAR_STUB_ZONE */ +#line 313 "./util/configparser.y" { struct config_stub* s; OUTYY(("\nP(stub_zone:)\n")); @@ -2747,11 +2761,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2751 "util/configparser.c" +#line 2765 "util/configparser.c" break; - case 248: /* forwardstart: VAR_FORWARD_ZONE */ -#line 328 "./util/configparser.y" + case 250: /* forwardstart: VAR_FORWARD_ZONE */ +#line 330 "./util/configparser.y" { struct config_stub* s; OUTYY(("\nP(forward_zone:)\n")); @@ -2762,11 +2776,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2766 "util/configparser.c" +#line 2780 "util/configparser.c" break; - case 257: /* viewstart: VAR_VIEW */ -#line 345 "./util/configparser.y" + case 259: /* viewstart: VAR_VIEW */ +#line 347 "./util/configparser.y" { struct config_view* s; OUTYY(("\nP(view:)\n")); @@ -2779,11 +2793,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2783 "util/configparser.c" +#line 2797 "util/configparser.c" break; - case 267: /* authstart: VAR_AUTH_ZONE */ -#line 364 "./util/configparser.y" + case 269: /* authstart: VAR_AUTH_ZONE */ +#line 366 "./util/configparser.y" { struct config_auth* s; OUTYY(("\nP(auth_zone:)\n")); @@ -2801,11 +2815,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2805 "util/configparser.c" +#line 2819 "util/configparser.c" break; - case 280: /* rpz_tag: VAR_TAGS STRING_ARG */ -#line 390 "./util/configparser.y" + case 282: /* rpz_tag: VAR_TAGS STRING_ARG */ +#line 392 "./util/configparser.y" { uint8_t* bitlist; size_t len = 0; @@ -2822,11 +2836,11 @@ yyreduce: } } -#line 2826 "util/configparser.c" +#line 2840 "util/configparser.c" break; - case 281: /* rpz_action_override: VAR_RPZ_ACTION_OVERRIDE STRING_ARG */ -#line 409 "./util/configparser.y" + case 283: /* rpz_action_override: VAR_RPZ_ACTION_OVERRIDE STRING_ARG */ +#line 411 "./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 && @@ -2841,21 +2855,21 @@ yyreduce: cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); } } -#line 2845 "util/configparser.c" +#line 2859 "util/configparser.c" break; - case 282: /* rpz_cname_override: VAR_RPZ_CNAME_OVERRIDE STRING_ARG */ -#line 426 "./util/configparser.y" + case 284: /* rpz_cname_override: VAR_RPZ_CNAME_OVERRIDE STRING_ARG */ +#line 428 "./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 2855 "util/configparser.c" +#line 2869 "util/configparser.c" break; - case 283: /* rpz_log: VAR_RPZ_LOG STRING_ARG */ -#line 434 "./util/configparser.y" + case 285: /* rpz_log: VAR_RPZ_LOG STRING_ARG */ +#line 436 "./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) @@ -2863,21 +2877,21 @@ yyreduce: else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2867 "util/configparser.c" +#line 2881 "util/configparser.c" break; - case 284: /* rpz_log_name: VAR_RPZ_LOG_NAME STRING_ARG */ -#line 444 "./util/configparser.y" + case 286: /* rpz_log_name: VAR_RPZ_LOG_NAME STRING_ARG */ +#line 446 "./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 2877 "util/configparser.c" +#line 2891 "util/configparser.c" break; - case 285: /* rpzstart: VAR_RPZ */ -#line 452 "./util/configparser.y" + case 287: /* rpzstart: VAR_RPZ */ +#line 454 "./util/configparser.y" { struct config_auth* s; OUTYY(("\nP(rpz:)\n")); @@ -2893,11 +2907,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2897 "util/configparser.c" +#line 2911 "util/configparser.c" break; - case 298: /* server_num_threads: VAR_NUM_THREADS STRING_ARG */ -#line 475 "./util/configparser.y" + case 300: /* server_num_threads: VAR_NUM_THREADS STRING_ARG */ +#line 477 "./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) @@ -2905,11 +2919,11 @@ yyreduce: else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2909 "util/configparser.c" +#line 2923 "util/configparser.c" break; - case 299: /* server_verbosity: VAR_VERBOSITY STRING_ARG */ -#line 484 "./util/configparser.y" + case 301: /* server_verbosity: VAR_VERBOSITY STRING_ARG */ +#line 486 "./util/configparser.y" { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -2917,11 +2931,11 @@ yyreduce: else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2921 "util/configparser.c" +#line 2935 "util/configparser.c" break; - case 300: /* server_statistics_interval: VAR_STATISTICS_INTERVAL STRING_ARG */ -#line 493 "./util/configparser.y" + case 302: /* server_statistics_interval: VAR_STATISTICS_INTERVAL STRING_ARG */ +#line 495 "./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) @@ -2931,11 +2945,11 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2935 "util/configparser.c" +#line 2949 "util/configparser.c" break; - case 301: /* server_statistics_cumulative: VAR_STATISTICS_CUMULATIVE STRING_ARG */ -#line 504 "./util/configparser.y" + case 303: /* server_statistics_cumulative: VAR_STATISTICS_CUMULATIVE STRING_ARG */ +#line 506 "./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) @@ -2943,11 +2957,11 @@ yyreduce: else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2947 "util/configparser.c" +#line 2961 "util/configparser.c" break; - case 302: /* server_extended_statistics: VAR_EXTENDED_STATISTICS STRING_ARG */ -#line 513 "./util/configparser.y" + case 304: /* server_extended_statistics: VAR_EXTENDED_STATISTICS STRING_ARG */ +#line 515 "./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) @@ -2955,11 +2969,11 @@ yyreduce: else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2959 "util/configparser.c" +#line 2973 "util/configparser.c" break; - case 303: /* server_shm_enable: VAR_SHM_ENABLE STRING_ARG */ -#line 522 "./util/configparser.y" + case 305: /* server_shm_enable: VAR_SHM_ENABLE STRING_ARG */ +#line 524 "./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) @@ -2967,11 +2981,11 @@ yyreduce: else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2971 "util/configparser.c" +#line 2985 "util/configparser.c" break; - case 304: /* server_shm_key: VAR_SHM_KEY STRING_ARG */ -#line 531 "./util/configparser.y" + case 306: /* server_shm_key: VAR_SHM_KEY STRING_ARG */ +#line 533 "./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) @@ -2981,11 +2995,11 @@ yyreduce: else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2985 "util/configparser.c" +#line 2999 "util/configparser.c" break; - case 305: /* server_port: VAR_PORT STRING_ARG */ -#line 542 "./util/configparser.y" + case 307: /* server_port: VAR_PORT STRING_ARG */ +#line 544 "./util/configparser.y" { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -2993,11 +3007,11 @@ yyreduce: else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2997 "util/configparser.c" +#line 3011 "util/configparser.c" break; - case 306: /* server_send_client_subnet: VAR_SEND_CLIENT_SUBNET STRING_ARG */ -#line 551 "./util/configparser.y" + case 308: /* server_send_client_subnet: VAR_SEND_CLIENT_SUBNET STRING_ARG */ +#line 553 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str))); @@ -3008,11 +3022,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3012 "util/configparser.c" +#line 3026 "util/configparser.c" break; - case 307: /* server_client_subnet_zone: VAR_CLIENT_SUBNET_ZONE STRING_ARG */ -#line 563 "./util/configparser.y" + case 309: /* server_client_subnet_zone: VAR_CLIENT_SUBNET_ZONE STRING_ARG */ +#line 565 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str))); @@ -3024,11 +3038,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3028 "util/configparser.c" +#line 3042 "util/configparser.c" break; - case 308: /* server_client_subnet_always_forward: VAR_CLIENT_SUBNET_ALWAYS_FORWARD STRING_ARG */ -#line 577 "./util/configparser.y" + case 310: /* server_client_subnet_always_forward: VAR_CLIENT_SUBNET_ALWAYS_FORWARD STRING_ARG */ +#line 579 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str))); @@ -3042,11 +3056,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3046 "util/configparser.c" +#line 3060 "util/configparser.c" break; - case 309: /* server_client_subnet_opcode: VAR_CLIENT_SUBNET_OPCODE STRING_ARG */ -#line 592 "./util/configparser.y" + case 311: /* server_client_subnet_opcode: VAR_CLIENT_SUBNET_OPCODE STRING_ARG */ +#line 594 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str))); @@ -3056,11 +3070,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3060 "util/configparser.c" +#line 3074 "util/configparser.c" break; - case 310: /* server_max_client_subnet_ipv4: VAR_MAX_CLIENT_SUBNET_IPV4 STRING_ARG */ -#line 603 "./util/configparser.y" + case 312: /* server_max_client_subnet_ipv4: VAR_MAX_CLIENT_SUBNET_IPV4 STRING_ARG */ +#line 605 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -3076,11 +3090,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3080 "util/configparser.c" +#line 3094 "util/configparser.c" break; - case 311: /* server_max_client_subnet_ipv6: VAR_MAX_CLIENT_SUBNET_IPV6 STRING_ARG */ -#line 620 "./util/configparser.y" + case 313: /* server_max_client_subnet_ipv6: VAR_MAX_CLIENT_SUBNET_IPV6 STRING_ARG */ +#line 622 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3096,11 +3110,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3100 "util/configparser.c" +#line 3114 "util/configparser.c" break; - case 312: /* server_min_client_subnet_ipv4: VAR_MIN_CLIENT_SUBNET_IPV4 STRING_ARG */ -#line 637 "./util/configparser.y" + case 314: /* server_min_client_subnet_ipv4: VAR_MIN_CLIENT_SUBNET_IPV4 STRING_ARG */ +#line 639 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -3116,11 +3130,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3120 "util/configparser.c" +#line 3134 "util/configparser.c" break; - case 313: /* server_min_client_subnet_ipv6: VAR_MIN_CLIENT_SUBNET_IPV6 STRING_ARG */ -#line 654 "./util/configparser.y" + case 315: /* server_min_client_subnet_ipv6: VAR_MIN_CLIENT_SUBNET_IPV6 STRING_ARG */ +#line 656 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3136,11 +3150,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3140 "util/configparser.c" +#line 3154 "util/configparser.c" break; - case 314: /* server_max_ecs_tree_size_ipv4: VAR_MAX_ECS_TREE_SIZE_IPV4 STRING_ARG */ -#line 671 "./util/configparser.y" + case 316: /* server_max_ecs_tree_size_ipv4: VAR_MAX_ECS_TREE_SIZE_IPV4 STRING_ARG */ +#line 673 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str))); @@ -3154,11 +3168,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3158 "util/configparser.c" +#line 3172 "util/configparser.c" break; - case 315: /* server_max_ecs_tree_size_ipv6: VAR_MAX_ECS_TREE_SIZE_IPV6 STRING_ARG */ -#line 686 "./util/configparser.y" + case 317: /* server_max_ecs_tree_size_ipv6: VAR_MAX_ECS_TREE_SIZE_IPV6 STRING_ARG */ +#line 688 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str))); @@ -3172,11 +3186,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3176 "util/configparser.c" +#line 3190 "util/configparser.c" break; - case 316: /* server_interface: VAR_INTERFACE STRING_ARG */ -#line 701 "./util/configparser.y" + case 318: /* server_interface: VAR_INTERFACE STRING_ARG */ +#line 703 "./util/configparser.y" { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_ifs == 0) @@ -3188,11 +3202,11 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 3192 "util/configparser.c" +#line 3206 "util/configparser.c" break; - case 317: /* server_outgoing_interface: VAR_OUTGOING_INTERFACE STRING_ARG */ -#line 714 "./util/configparser.y" + case 319: /* server_outgoing_interface: VAR_OUTGOING_INTERFACE STRING_ARG */ +#line 716 "./util/configparser.y" { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_out_ifs == 0) @@ -3206,11 +3220,11 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 3210 "util/configparser.c" +#line 3224 "util/configparser.c" break; - case 318: /* server_outgoing_range: VAR_OUTGOING_RANGE STRING_ARG */ -#line 729 "./util/configparser.y" + case 320: /* server_outgoing_range: VAR_OUTGOING_RANGE STRING_ARG */ +#line 731 "./util/configparser.y" { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3218,11 +3232,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3222 "util/configparser.c" +#line 3236 "util/configparser.c" break; - case 319: /* server_outgoing_port_permit: VAR_OUTGOING_PORT_PERMIT STRING_ARG */ -#line 738 "./util/configparser.y" + case 321: /* server_outgoing_port_permit: VAR_OUTGOING_PORT_PERMIT STRING_ARG */ +#line 740 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 1, @@ -3230,11 +3244,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3234 "util/configparser.c" +#line 3248 "util/configparser.c" break; - case 320: /* server_outgoing_port_avoid: VAR_OUTGOING_PORT_AVOID STRING_ARG */ -#line 747 "./util/configparser.y" + case 322: /* server_outgoing_port_avoid: VAR_OUTGOING_PORT_AVOID STRING_ARG */ +#line 749 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 0, @@ -3242,11 +3256,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3246 "util/configparser.c" +#line 3260 "util/configparser.c" break; - case 321: /* server_outgoing_num_tcp: VAR_OUTGOING_NUM_TCP STRING_ARG */ -#line 756 "./util/configparser.y" + case 323: /* server_outgoing_num_tcp: VAR_OUTGOING_NUM_TCP STRING_ARG */ +#line 758 "./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) @@ -3254,11 +3268,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3258 "util/configparser.c" +#line 3272 "util/configparser.c" break; - case 322: /* server_incoming_num_tcp: VAR_INCOMING_NUM_TCP STRING_ARG */ -#line 765 "./util/configparser.y" + case 324: /* server_incoming_num_tcp: VAR_INCOMING_NUM_TCP STRING_ARG */ +#line 767 "./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) @@ -3266,11 +3280,11 @@ yyreduce: else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3270 "util/configparser.c" +#line 3284 "util/configparser.c" break; - case 323: /* server_interface_automatic: VAR_INTERFACE_AUTOMATIC STRING_ARG */ -#line 774 "./util/configparser.y" + case 325: /* server_interface_automatic: VAR_INTERFACE_AUTOMATIC STRING_ARG */ +#line 776 "./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) @@ -3278,11 +3292,11 @@ yyreduce: else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3282 "util/configparser.c" +#line 3296 "util/configparser.c" break; - case 324: /* server_do_ip4: VAR_DO_IP4 STRING_ARG */ -#line 783 "./util/configparser.y" + case 326: /* server_do_ip4: VAR_DO_IP4 STRING_ARG */ +#line 785 "./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) @@ -3290,11 +3304,11 @@ yyreduce: else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3294 "util/configparser.c" +#line 3308 "util/configparser.c" break; - case 325: /* server_do_ip6: VAR_DO_IP6 STRING_ARG */ -#line 792 "./util/configparser.y" + case 327: /* server_do_ip6: VAR_DO_IP6 STRING_ARG */ +#line 794 "./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) @@ -3302,11 +3316,11 @@ yyreduce: else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3306 "util/configparser.c" +#line 3320 "util/configparser.c" break; - case 326: /* server_do_udp: VAR_DO_UDP STRING_ARG */ -#line 801 "./util/configparser.y" + case 328: /* server_do_udp: VAR_DO_UDP STRING_ARG */ +#line 803 "./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) @@ -3314,11 +3328,11 @@ yyreduce: else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3318 "util/configparser.c" +#line 3332 "util/configparser.c" break; - case 327: /* server_do_tcp: VAR_DO_TCP STRING_ARG */ -#line 810 "./util/configparser.y" + case 329: /* server_do_tcp: VAR_DO_TCP STRING_ARG */ +#line 812 "./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) @@ -3326,11 +3340,11 @@ yyreduce: else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3330 "util/configparser.c" +#line 3344 "util/configparser.c" break; - case 328: /* server_prefer_ip4: VAR_PREFER_IP4 STRING_ARG */ -#line 819 "./util/configparser.y" + case 330: /* server_prefer_ip4: VAR_PREFER_IP4 STRING_ARG */ +#line 821 "./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) @@ -3338,11 +3352,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3342 "util/configparser.c" +#line 3356 "util/configparser.c" break; - case 329: /* server_prefer_ip6: VAR_PREFER_IP6 STRING_ARG */ -#line 828 "./util/configparser.y" + case 331: /* server_prefer_ip6: VAR_PREFER_IP6 STRING_ARG */ +#line 830 "./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) @@ -3350,11 +3364,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3354 "util/configparser.c" +#line 3368 "util/configparser.c" break; - case 330: /* server_tcp_mss: VAR_TCP_MSS STRING_ARG */ -#line 837 "./util/configparser.y" + case 332: /* server_tcp_mss: VAR_TCP_MSS STRING_ARG */ +#line 839 "./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) @@ -3362,11 +3376,11 @@ yyreduce: else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3366 "util/configparser.c" +#line 3380 "util/configparser.c" break; - case 331: /* server_outgoing_tcp_mss: VAR_OUTGOING_TCP_MSS STRING_ARG */ -#line 846 "./util/configparser.y" + case 333: /* server_outgoing_tcp_mss: VAR_OUTGOING_TCP_MSS STRING_ARG */ +#line 848 "./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) @@ -3374,11 +3388,11 @@ yyreduce: else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3378 "util/configparser.c" +#line 3392 "util/configparser.c" break; - case 332: /* server_tcp_idle_timeout: VAR_TCP_IDLE_TIMEOUT STRING_ARG */ -#line 855 "./util/configparser.y" + case 334: /* server_tcp_idle_timeout: VAR_TCP_IDLE_TIMEOUT STRING_ARG */ +#line 857 "./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) @@ -3390,11 +3404,11 @@ yyreduce: else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3394 "util/configparser.c" +#line 3408 "util/configparser.c" break; - case 333: /* server_max_reuse_tcp_queries: VAR_MAX_REUSE_TCP_QUERIES STRING_ARG */ -#line 868 "./util/configparser.y" + case 335: /* server_max_reuse_tcp_queries: VAR_MAX_REUSE_TCP_QUERIES STRING_ARG */ +#line 870 "./util/configparser.y" { OUTYY(("P(server_max_reuse_tcp_queries:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3404,11 +3418,11 @@ yyreduce: else cfg_parser->cfg->max_reuse_tcp_queries = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3408 "util/configparser.c" +#line 3422 "util/configparser.c" break; - case 334: /* server_tcp_reuse_timeout: VAR_TCP_REUSE_TIMEOUT STRING_ARG */ -#line 879 "./util/configparser.y" + case 336: /* server_tcp_reuse_timeout: VAR_TCP_REUSE_TIMEOUT STRING_ARG */ +#line 881 "./util/configparser.y" { OUTYY(("P(server_tcp_reuse_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3418,11 +3432,11 @@ yyreduce: else cfg_parser->cfg->tcp_reuse_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3422 "util/configparser.c" +#line 3436 "util/configparser.c" break; - case 335: /* server_tcp_auth_query_timeout: VAR_TCP_AUTH_QUERY_TIMEOUT STRING_ARG */ -#line 890 "./util/configparser.y" + case 337: /* server_tcp_auth_query_timeout: VAR_TCP_AUTH_QUERY_TIMEOUT STRING_ARG */ +#line 892 "./util/configparser.y" { OUTYY(("P(server_tcp_auth_query_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3432,11 +3446,11 @@ yyreduce: else cfg_parser->cfg->tcp_auth_query_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3436 "util/configparser.c" +#line 3450 "util/configparser.c" break; - case 336: /* server_tcp_keepalive: VAR_EDNS_TCP_KEEPALIVE STRING_ARG */ -#line 901 "./util/configparser.y" + case 338: /* server_tcp_keepalive: VAR_EDNS_TCP_KEEPALIVE STRING_ARG */ +#line 903 "./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) @@ -3444,11 +3458,11 @@ yyreduce: else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3448 "util/configparser.c" +#line 3462 "util/configparser.c" break; - case 337: /* server_tcp_keepalive_timeout: VAR_EDNS_TCP_KEEPALIVE_TIMEOUT STRING_ARG */ -#line 910 "./util/configparser.y" + case 339: /* server_tcp_keepalive_timeout: VAR_EDNS_TCP_KEEPALIVE_TIMEOUT STRING_ARG */ +#line 912 "./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) @@ -3460,11 +3474,11 @@ yyreduce: else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3464 "util/configparser.c" +#line 3478 "util/configparser.c" break; - case 338: /* server_tcp_upstream: VAR_TCP_UPSTREAM STRING_ARG */ -#line 923 "./util/configparser.y" + case 340: /* server_tcp_upstream: VAR_TCP_UPSTREAM STRING_ARG */ +#line 925 "./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) @@ -3472,11 +3486,11 @@ yyreduce: else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3476 "util/configparser.c" +#line 3490 "util/configparser.c" break; - case 339: /* server_udp_upstream_without_downstream: VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM STRING_ARG */ -#line 932 "./util/configparser.y" + case 341: /* server_udp_upstream_without_downstream: VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM STRING_ARG */ +#line 934 "./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) @@ -3484,11 +3498,11 @@ yyreduce: else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3488 "util/configparser.c" +#line 3502 "util/configparser.c" break; - case 340: /* server_ssl_upstream: VAR_SSL_UPSTREAM STRING_ARG */ -#line 941 "./util/configparser.y" + case 342: /* server_ssl_upstream: VAR_SSL_UPSTREAM STRING_ARG */ +#line 943 "./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) @@ -3496,31 +3510,31 @@ yyreduce: else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3500 "util/configparser.c" +#line 3514 "util/configparser.c" break; - case 341: /* server_ssl_service_key: VAR_SSL_SERVICE_KEY STRING_ARG */ -#line 950 "./util/configparser.y" + case 343: /* server_ssl_service_key: VAR_SSL_SERVICE_KEY STRING_ARG */ +#line 952 "./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 3510 "util/configparser.c" +#line 3524 "util/configparser.c" break; - case 342: /* server_ssl_service_pem: VAR_SSL_SERVICE_PEM STRING_ARG */ -#line 957 "./util/configparser.y" + case 344: /* server_ssl_service_pem: VAR_SSL_SERVICE_PEM STRING_ARG */ +#line 959 "./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 3520 "util/configparser.c" +#line 3534 "util/configparser.c" break; - case 343: /* server_ssl_port: VAR_SSL_PORT STRING_ARG */ -#line 964 "./util/configparser.y" + case 345: /* server_ssl_port: VAR_SSL_PORT STRING_ARG */ +#line 966 "./util/configparser.y" { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3528,21 +3542,21 @@ yyreduce: else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3532 "util/configparser.c" +#line 3546 "util/configparser.c" break; - case 344: /* server_tls_cert_bundle: VAR_TLS_CERT_BUNDLE STRING_ARG */ -#line 973 "./util/configparser.y" + case 346: /* server_tls_cert_bundle: VAR_TLS_CERT_BUNDLE STRING_ARG */ +#line 975 "./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 3542 "util/configparser.c" +#line 3556 "util/configparser.c" break; - case 345: /* server_tls_win_cert: VAR_TLS_WIN_CERT STRING_ARG */ -#line 980 "./util/configparser.y" + case 347: /* server_tls_win_cert: VAR_TLS_WIN_CERT STRING_ARG */ +#line 982 "./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) @@ -3550,53 +3564,53 @@ yyreduce: else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3554 "util/configparser.c" +#line 3568 "util/configparser.c" break; - case 346: /* server_tls_additional_port: VAR_TLS_ADDITIONAL_PORT STRING_ARG */ -#line 989 "./util/configparser.y" + case 348: /* server_tls_additional_port: VAR_TLS_ADDITIONAL_PORT STRING_ARG */ +#line 991 "./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 3565 "util/configparser.c" +#line 3579 "util/configparser.c" break; - case 347: /* server_tls_ciphers: VAR_TLS_CIPHERS STRING_ARG */ -#line 997 "./util/configparser.y" + case 349: /* server_tls_ciphers: VAR_TLS_CIPHERS STRING_ARG */ +#line 999 "./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 3575 "util/configparser.c" +#line 3589 "util/configparser.c" break; - case 348: /* server_tls_ciphersuites: VAR_TLS_CIPHERSUITES STRING_ARG */ -#line 1004 "./util/configparser.y" + case 350: /* server_tls_ciphersuites: VAR_TLS_CIPHERSUITES STRING_ARG */ +#line 1006 "./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 3585 "util/configparser.c" +#line 3599 "util/configparser.c" break; - case 349: /* server_tls_session_ticket_keys: VAR_TLS_SESSION_TICKET_KEYS STRING_ARG */ -#line 1011 "./util/configparser.y" + case 351: /* server_tls_session_ticket_keys: VAR_TLS_SESSION_TICKET_KEYS STRING_ARG */ +#line 1013 "./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 3596 "util/configparser.c" +#line 3610 "util/configparser.c" break; - case 350: /* server_tls_use_sni: VAR_TLS_USE_SNI STRING_ARG */ -#line 1019 "./util/configparser.y" + case 352: /* server_tls_use_sni: VAR_TLS_USE_SNI STRING_ARG */ +#line 1021 "./util/configparser.y" { OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3604,11 +3618,11 @@ yyreduce: else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3608 "util/configparser.c" +#line 3622 "util/configparser.c" break; - case 351: /* server_https_port: VAR_HTTPS_PORT STRING_ARG */ -#line 1028 "./util/configparser.y" + case 353: /* server_https_port: VAR_HTTPS_PORT STRING_ARG */ +#line 1030 "./util/configparser.y" { OUTYY(("P(server_https_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3616,11 +3630,11 @@ yyreduce: else cfg_parser->cfg->https_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3620 "util/configparser.c" +#line 3634 "util/configparser.c" break; - case 352: /* server_http_endpoint: VAR_HTTP_ENDPOINT STRING_ARG */ -#line 1036 "./util/configparser.y" + case 354: /* server_http_endpoint: VAR_HTTP_ENDPOINT STRING_ARG */ +#line 1038 "./util/configparser.y" { OUTYY(("P(server_http_endpoint:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->http_endpoint); @@ -3636,11 +3650,11 @@ yyreduce: cfg_parser->cfg->http_endpoint = (yyvsp[0].str); } } -#line 3640 "util/configparser.c" +#line 3654 "util/configparser.c" break; - case 353: /* server_http_max_streams: VAR_HTTP_MAX_STREAMS STRING_ARG */ -#line 1052 "./util/configparser.y" + case 355: /* server_http_max_streams: VAR_HTTP_MAX_STREAMS STRING_ARG */ +#line 1054 "./util/configparser.y" { OUTYY(("P(server_http_max_streams:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3648,11 +3662,11 @@ yyreduce: else cfg_parser->cfg->http_max_streams = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3652 "util/configparser.c" +#line 3666 "util/configparser.c" break; - case 354: /* server_http_query_buffer_size: VAR_HTTP_QUERY_BUFFER_SIZE STRING_ARG */ -#line 1060 "./util/configparser.y" + case 356: /* server_http_query_buffer_size: VAR_HTTP_QUERY_BUFFER_SIZE STRING_ARG */ +#line 1062 "./util/configparser.y" { OUTYY(("P(server_http_query_buffer_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), @@ -3660,11 +3674,11 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3664 "util/configparser.c" +#line 3678 "util/configparser.c" break; - case 355: /* server_http_response_buffer_size: VAR_HTTP_RESPONSE_BUFFER_SIZE STRING_ARG */ -#line 1068 "./util/configparser.y" + case 357: /* server_http_response_buffer_size: VAR_HTTP_RESPONSE_BUFFER_SIZE STRING_ARG */ +#line 1070 "./util/configparser.y" { OUTYY(("P(server_http_response_buffer_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), @@ -3672,11 +3686,11 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3676 "util/configparser.c" +#line 3690 "util/configparser.c" break; - case 356: /* server_http_nodelay: VAR_HTTP_NODELAY STRING_ARG */ -#line 1076 "./util/configparser.y" + case 358: /* server_http_nodelay: VAR_HTTP_NODELAY STRING_ARG */ +#line 1078 "./util/configparser.y" { OUTYY(("P(server_http_nodelay:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3684,11 +3698,11 @@ yyreduce: else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3688 "util/configparser.c" +#line 3702 "util/configparser.c" break; - case 357: /* server_http_notls_downstream: VAR_HTTP_NOTLS_DOWNSTREAM STRING_ARG */ -#line 1084 "./util/configparser.y" + case 359: /* server_http_notls_downstream: VAR_HTTP_NOTLS_DOWNSTREAM STRING_ARG */ +#line 1086 "./util/configparser.y" { OUTYY(("P(server_http_notls_downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3696,11 +3710,11 @@ yyreduce: else cfg_parser->cfg->http_notls_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3700 "util/configparser.c" +#line 3714 "util/configparser.c" break; - case 358: /* server_use_systemd: VAR_USE_SYSTEMD STRING_ARG */ -#line 1092 "./util/configparser.y" + case 360: /* server_use_systemd: VAR_USE_SYSTEMD STRING_ARG */ +#line 1094 "./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) @@ -3708,11 +3722,11 @@ yyreduce: else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3712 "util/configparser.c" +#line 3726 "util/configparser.c" break; - case 359: /* server_do_daemonize: VAR_DO_DAEMONIZE STRING_ARG */ -#line 1101 "./util/configparser.y" + case 361: /* server_do_daemonize: VAR_DO_DAEMONIZE STRING_ARG */ +#line 1103 "./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) @@ -3720,11 +3734,11 @@ yyreduce: else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3724 "util/configparser.c" +#line 3738 "util/configparser.c" break; - case 360: /* server_use_syslog: VAR_USE_SYSLOG STRING_ARG */ -#line 1110 "./util/configparser.y" + case 362: /* server_use_syslog: VAR_USE_SYSLOG STRING_ARG */ +#line 1112 "./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) @@ -3737,11 +3751,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3741 "util/configparser.c" +#line 3755 "util/configparser.c" break; - case 361: /* server_log_time_ascii: VAR_LOG_TIME_ASCII STRING_ARG */ -#line 1124 "./util/configparser.y" + case 363: /* server_log_time_ascii: VAR_LOG_TIME_ASCII STRING_ARG */ +#line 1126 "./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) @@ -3749,11 +3763,11 @@ yyreduce: else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3753 "util/configparser.c" +#line 3767 "util/configparser.c" break; - case 362: /* server_log_queries: VAR_LOG_QUERIES STRING_ARG */ -#line 1133 "./util/configparser.y" + case 364: /* server_log_queries: VAR_LOG_QUERIES STRING_ARG */ +#line 1135 "./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) @@ -3761,11 +3775,11 @@ yyreduce: else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3765 "util/configparser.c" +#line 3779 "util/configparser.c" break; - case 363: /* server_log_replies: VAR_LOG_REPLIES STRING_ARG */ -#line 1142 "./util/configparser.y" + case 365: /* server_log_replies: VAR_LOG_REPLIES STRING_ARG */ +#line 1144 "./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) @@ -3773,11 +3787,11 @@ yyreduce: else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3777 "util/configparser.c" +#line 3791 "util/configparser.c" break; - case 364: /* server_log_tag_queryreply: VAR_LOG_TAG_QUERYREPLY STRING_ARG */ -#line 1151 "./util/configparser.y" + case 366: /* server_log_tag_queryreply: VAR_LOG_TAG_QUERYREPLY STRING_ARG */ +#line 1153 "./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) @@ -3785,11 +3799,11 @@ yyreduce: else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3789 "util/configparser.c" +#line 3803 "util/configparser.c" break; - case 365: /* server_log_servfail: VAR_LOG_SERVFAIL STRING_ARG */ -#line 1160 "./util/configparser.y" + case 367: /* server_log_servfail: VAR_LOG_SERVFAIL STRING_ARG */ +#line 1162 "./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) @@ -3797,11 +3811,11 @@ yyreduce: else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3801 "util/configparser.c" +#line 3815 "util/configparser.c" break; - case 366: /* server_log_local_actions: VAR_LOG_LOCAL_ACTIONS STRING_ARG */ -#line 1169 "./util/configparser.y" + case 368: /* server_log_local_actions: VAR_LOG_LOCAL_ACTIONS STRING_ARG */ +#line 1171 "./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) @@ -3809,31 +3823,31 @@ yyreduce: else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3813 "util/configparser.c" +#line 3827 "util/configparser.c" break; - case 367: /* server_chroot: VAR_CHROOT STRING_ARG */ -#line 1178 "./util/configparser.y" + case 369: /* server_chroot: VAR_CHROOT STRING_ARG */ +#line 1180 "./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 3823 "util/configparser.c" +#line 3837 "util/configparser.c" break; - case 368: /* server_username: VAR_USERNAME STRING_ARG */ -#line 1185 "./util/configparser.y" + case 370: /* server_username: VAR_USERNAME STRING_ARG */ +#line 1187 "./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 3833 "util/configparser.c" +#line 3847 "util/configparser.c" break; - case 369: /* server_directory: VAR_DIRECTORY STRING_ARG */ -#line 1192 "./util/configparser.y" + case 371: /* server_directory: VAR_DIRECTORY STRING_ARG */ +#line 1194 "./util/configparser.y" { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->directory); @@ -3858,105 +3872,105 @@ yyreduce: } } } -#line 3862 "util/configparser.c" +#line 3876 "util/configparser.c" break; - case 370: /* server_logfile: VAR_LOGFILE STRING_ARG */ -#line 1218 "./util/configparser.y" + case 372: /* server_logfile: VAR_LOGFILE STRING_ARG */ +#line 1220 "./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 3873 "util/configparser.c" +#line 3887 "util/configparser.c" break; - case 371: /* server_pidfile: VAR_PIDFILE STRING_ARG */ -#line 1226 "./util/configparser.y" + case 373: /* server_pidfile: VAR_PIDFILE STRING_ARG */ +#line 1228 "./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 3883 "util/configparser.c" +#line 3897 "util/configparser.c" break; - case 372: /* server_root_hints: VAR_ROOT_HINTS STRING_ARG */ -#line 1233 "./util/configparser.y" + case 374: /* server_root_hints: VAR_ROOT_HINTS STRING_ARG */ +#line 1235 "./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 3893 "util/configparser.c" +#line 3907 "util/configparser.c" break; - case 373: /* server_dlv_anchor_file: VAR_DLV_ANCHOR_FILE STRING_ARG */ -#line 1240 "./util/configparser.y" + case 375: /* server_dlv_anchor_file: VAR_DLV_ANCHOR_FILE STRING_ARG */ +#line 1242 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str))); log_warn("option dlv-anchor-file ignored: DLV is decommissioned"); free((yyvsp[0].str)); } -#line 3903 "util/configparser.c" +#line 3917 "util/configparser.c" break; - case 374: /* server_dlv_anchor: VAR_DLV_ANCHOR STRING_ARG */ -#line 1247 "./util/configparser.y" + case 376: /* server_dlv_anchor: VAR_DLV_ANCHOR STRING_ARG */ +#line 1249 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str))); log_warn("option dlv-anchor ignored: DLV is decommissioned"); free((yyvsp[0].str)); } -#line 3913 "util/configparser.c" +#line 3927 "util/configparser.c" break; - case 375: /* server_auto_trust_anchor_file: VAR_AUTO_TRUST_ANCHOR_FILE STRING_ARG */ -#line 1254 "./util/configparser.y" + case 377: /* server_auto_trust_anchor_file: VAR_AUTO_TRUST_ANCHOR_FILE STRING_ARG */ +#line 1256 "./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 3924 "util/configparser.c" +#line 3938 "util/configparser.c" break; - case 376: /* server_trust_anchor_file: VAR_TRUST_ANCHOR_FILE STRING_ARG */ -#line 1262 "./util/configparser.y" + case 378: /* server_trust_anchor_file: VAR_TRUST_ANCHOR_FILE STRING_ARG */ +#line 1264 "./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 3935 "util/configparser.c" +#line 3949 "util/configparser.c" break; - case 377: /* server_trusted_keys_file: VAR_TRUSTED_KEYS_FILE STRING_ARG */ -#line 1270 "./util/configparser.y" + case 379: /* server_trusted_keys_file: VAR_TRUSTED_KEYS_FILE STRING_ARG */ +#line 1272 "./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 3946 "util/configparser.c" +#line 3960 "util/configparser.c" break; - case 378: /* server_trust_anchor: VAR_TRUST_ANCHOR STRING_ARG */ -#line 1278 "./util/configparser.y" + case 380: /* server_trust_anchor: VAR_TRUST_ANCHOR STRING_ARG */ +#line 1280 "./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 3956 "util/configparser.c" +#line 3970 "util/configparser.c" break; - case 379: /* server_trust_anchor_signaling: VAR_TRUST_ANCHOR_SIGNALING STRING_ARG */ -#line 1285 "./util/configparser.y" + case 381: /* server_trust_anchor_signaling: VAR_TRUST_ANCHOR_SIGNALING STRING_ARG */ +#line 1287 "./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) @@ -3966,11 +3980,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3970 "util/configparser.c" +#line 3984 "util/configparser.c" break; - case 380: /* server_root_key_sentinel: VAR_ROOT_KEY_SENTINEL STRING_ARG */ -#line 1296 "./util/configparser.y" + case 382: /* server_root_key_sentinel: VAR_ROOT_KEY_SENTINEL STRING_ARG */ +#line 1298 "./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) @@ -3980,21 +3994,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3984 "util/configparser.c" +#line 3998 "util/configparser.c" break; - case 381: /* server_domain_insecure: VAR_DOMAIN_INSECURE STRING_ARG */ -#line 1307 "./util/configparser.y" + case 383: /* server_domain_insecure: VAR_DOMAIN_INSECURE STRING_ARG */ +#line 1309 "./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 3994 "util/configparser.c" +#line 4008 "util/configparser.c" break; - case 382: /* server_hide_identity: VAR_HIDE_IDENTITY STRING_ARG */ -#line 1314 "./util/configparser.y" + case 384: /* server_hide_identity: VAR_HIDE_IDENTITY STRING_ARG */ +#line 1316 "./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) @@ -4002,11 +4016,11 @@ yyreduce: else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4006 "util/configparser.c" +#line 4020 "util/configparser.c" break; - case 383: /* server_hide_version: VAR_HIDE_VERSION STRING_ARG */ -#line 1323 "./util/configparser.y" + case 385: /* server_hide_version: VAR_HIDE_VERSION STRING_ARG */ +#line 1325 "./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) @@ -4014,11 +4028,11 @@ yyreduce: else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4018 "util/configparser.c" +#line 4032 "util/configparser.c" break; - case 384: /* server_hide_trustanchor: VAR_HIDE_TRUSTANCHOR STRING_ARG */ -#line 1332 "./util/configparser.y" + case 386: /* server_hide_trustanchor: VAR_HIDE_TRUSTANCHOR STRING_ARG */ +#line 1334 "./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) @@ -4026,31 +4040,53 @@ yyreduce: else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4030 "util/configparser.c" +#line 4044 "util/configparser.c" break; - case 385: /* server_identity: VAR_IDENTITY STRING_ARG */ -#line 1341 "./util/configparser.y" + case 387: /* server_hide_http_user_agent: VAR_HIDE_HTTP_USER_AGENT STRING_ARG */ +#line 1343 "./util/configparser.y" + { + OUTYY(("P(server_hide_user_agent:%s)\n", (yyvsp[0].str))); + if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->hide_http_user_agent = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); + } +#line 4056 "util/configparser.c" + break; + + case 388: /* server_identity: VAR_IDENTITY STRING_ARG */ +#line 1352 "./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 4040 "util/configparser.c" +#line 4066 "util/configparser.c" break; - case 386: /* server_version: VAR_VERSION STRING_ARG */ -#line 1348 "./util/configparser.y" + case 389: /* server_version: VAR_VERSION STRING_ARG */ +#line 1359 "./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 4050 "util/configparser.c" +#line 4076 "util/configparser.c" break; - case 387: /* server_nsid: VAR_NSID STRING_ARG */ -#line 1355 "./util/configparser.y" + case 390: /* server_http_user_agent: VAR_HTTP_USER_AGENT STRING_ARG */ +#line 1366 "./util/configparser.y" + { + OUTYY(("P(server_http_user_agent:%s)\n", (yyvsp[0].str))); + free(cfg_parser->cfg->http_user_agent); + cfg_parser->cfg->http_user_agent = (yyvsp[0].str); + } +#line 4086 "util/configparser.c" + break; + + case 391: /* server_nsid: VAR_NSID STRING_ARG */ +#line 1373 "./util/configparser.y" { OUTYY(("P(server_nsid:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->nsid_cfg_str); @@ -4065,33 +4101,33 @@ yyreduce: yyerror("the NSID must be either a hex string or an " "ascii character string prepended with ascii_."); } -#line 4069 "util/configparser.c" +#line 4105 "util/configparser.c" break; - case 388: /* server_so_rcvbuf: VAR_SO_RCVBUF STRING_ARG */ -#line 1371 "./util/configparser.y" + case 392: /* server_so_rcvbuf: VAR_SO_RCVBUF STRING_ARG */ +#line 1389 "./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 4080 "util/configparser.c" +#line 4116 "util/configparser.c" break; - case 389: /* server_so_sndbuf: VAR_SO_SNDBUF STRING_ARG */ -#line 1379 "./util/configparser.y" + case 393: /* server_so_sndbuf: VAR_SO_SNDBUF STRING_ARG */ +#line 1397 "./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 4091 "util/configparser.c" +#line 4127 "util/configparser.c" break; - case 390: /* server_so_reuseport: VAR_SO_REUSEPORT STRING_ARG */ -#line 1387 "./util/configparser.y" + case 394: /* server_so_reuseport: VAR_SO_REUSEPORT STRING_ARG */ +#line 1405 "./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) @@ -4100,11 +4136,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4104 "util/configparser.c" +#line 4140 "util/configparser.c" break; - case 391: /* server_ip_transparent: VAR_IP_TRANSPARENT STRING_ARG */ -#line 1397 "./util/configparser.y" + case 395: /* server_ip_transparent: VAR_IP_TRANSPARENT STRING_ARG */ +#line 1415 "./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) @@ -4113,11 +4149,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4117 "util/configparser.c" +#line 4153 "util/configparser.c" break; - case 392: /* server_ip_freebind: VAR_IP_FREEBIND STRING_ARG */ -#line 1407 "./util/configparser.y" + case 396: /* server_ip_freebind: VAR_IP_FREEBIND STRING_ARG */ +#line 1425 "./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) @@ -4126,11 +4162,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4130 "util/configparser.c" +#line 4166 "util/configparser.c" break; - case 393: /* server_ip_dscp: VAR_IP_DSCP STRING_ARG */ -#line 1417 "./util/configparser.y" + case 397: /* server_ip_dscp: VAR_IP_DSCP STRING_ARG */ +#line 1435 "./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) @@ -4143,22 +4179,22 @@ yyreduce: cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4147 "util/configparser.c" +#line 4183 "util/configparser.c" break; - case 394: /* server_stream_wait_size: VAR_STREAM_WAIT_SIZE STRING_ARG */ -#line 1431 "./util/configparser.y" + case 398: /* server_stream_wait_size: VAR_STREAM_WAIT_SIZE STRING_ARG */ +#line 1449 "./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 4158 "util/configparser.c" +#line 4194 "util/configparser.c" break; - case 395: /* server_edns_buffer_size: VAR_EDNS_BUFFER_SIZE STRING_ARG */ -#line 1439 "./util/configparser.y" + case 399: /* server_edns_buffer_size: VAR_EDNS_BUFFER_SIZE STRING_ARG */ +#line 1457 "./util/configparser.y" { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4170,11 +4206,11 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4174 "util/configparser.c" +#line 4210 "util/configparser.c" break; - case 396: /* server_msg_buffer_size: VAR_MSG_BUFFER_SIZE STRING_ARG */ -#line 1452 "./util/configparser.y" + case 400: /* server_msg_buffer_size: VAR_MSG_BUFFER_SIZE STRING_ARG */ +#line 1470 "./util/configparser.y" { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4184,22 +4220,22 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4188 "util/configparser.c" +#line 4224 "util/configparser.c" break; - case 397: /* server_msg_cache_size: VAR_MSG_CACHE_SIZE STRING_ARG */ -#line 1463 "./util/configparser.y" + case 401: /* server_msg_cache_size: VAR_MSG_CACHE_SIZE STRING_ARG */ +#line 1481 "./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 4199 "util/configparser.c" +#line 4235 "util/configparser.c" break; - case 398: /* server_msg_cache_slabs: VAR_MSG_CACHE_SLABS STRING_ARG */ -#line 1471 "./util/configparser.y" + case 402: /* server_msg_cache_slabs: VAR_MSG_CACHE_SLABS STRING_ARG */ +#line 1489 "./util/configparser.y" { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4211,11 +4247,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4215 "util/configparser.c" +#line 4251 "util/configparser.c" break; - case 399: /* server_num_queries_per_thread: VAR_NUM_QUERIES_PER_THREAD STRING_ARG */ -#line 1484 "./util/configparser.y" + case 403: /* server_num_queries_per_thread: VAR_NUM_QUERIES_PER_THREAD STRING_ARG */ +#line 1502 "./util/configparser.y" { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4223,11 +4259,11 @@ yyreduce: else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4227 "util/configparser.c" +#line 4263 "util/configparser.c" break; - case 400: /* server_jostle_timeout: VAR_JOSTLE_TIMEOUT STRING_ARG */ -#line 1493 "./util/configparser.y" + case 404: /* server_jostle_timeout: VAR_JOSTLE_TIMEOUT STRING_ARG */ +#line 1511 "./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) @@ -4235,11 +4271,11 @@ yyreduce: else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4239 "util/configparser.c" +#line 4275 "util/configparser.c" break; - case 401: /* server_delay_close: VAR_DELAY_CLOSE STRING_ARG */ -#line 1502 "./util/configparser.y" + case 405: /* server_delay_close: VAR_DELAY_CLOSE STRING_ARG */ +#line 1520 "./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) @@ -4247,11 +4283,11 @@ yyreduce: else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4251 "util/configparser.c" +#line 4287 "util/configparser.c" break; - case 402: /* server_udp_connect: VAR_UDP_CONNECT STRING_ARG */ -#line 1511 "./util/configparser.y" + case 406: /* server_udp_connect: VAR_UDP_CONNECT STRING_ARG */ +#line 1529 "./util/configparser.y" { OUTYY(("P(server_udp_connect:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4259,11 +4295,11 @@ yyreduce: else cfg_parser->cfg->udp_connect = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4263 "util/configparser.c" +#line 4299 "util/configparser.c" break; - case 403: /* server_unblock_lan_zones: VAR_UNBLOCK_LAN_ZONES STRING_ARG */ -#line 1520 "./util/configparser.y" + case 407: /* server_unblock_lan_zones: VAR_UNBLOCK_LAN_ZONES STRING_ARG */ +#line 1538 "./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) @@ -4272,11 +4308,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4276 "util/configparser.c" +#line 4312 "util/configparser.c" break; - case 404: /* server_insecure_lan_zones: VAR_INSECURE_LAN_ZONES STRING_ARG */ -#line 1530 "./util/configparser.y" + case 408: /* server_insecure_lan_zones: VAR_INSECURE_LAN_ZONES STRING_ARG */ +#line 1548 "./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) @@ -4285,22 +4321,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4289 "util/configparser.c" +#line 4325 "util/configparser.c" break; - case 405: /* server_rrset_cache_size: VAR_RRSET_CACHE_SIZE STRING_ARG */ -#line 1540 "./util/configparser.y" + case 409: /* server_rrset_cache_size: VAR_RRSET_CACHE_SIZE STRING_ARG */ +#line 1558 "./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 4300 "util/configparser.c" +#line 4336 "util/configparser.c" break; - case 406: /* server_rrset_cache_slabs: VAR_RRSET_CACHE_SLABS STRING_ARG */ -#line 1548 "./util/configparser.y" + case 410: /* server_rrset_cache_slabs: VAR_RRSET_CACHE_SLABS STRING_ARG */ +#line 1566 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4312,11 +4348,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4316 "util/configparser.c" +#line 4352 "util/configparser.c" break; - case 407: /* server_infra_host_ttl: VAR_INFRA_HOST_TTL STRING_ARG */ -#line 1561 "./util/configparser.y" + case 411: /* server_infra_host_ttl: VAR_INFRA_HOST_TTL STRING_ARG */ +#line 1579 "./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) @@ -4324,22 +4360,22 @@ yyreduce: else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4328 "util/configparser.c" +#line 4364 "util/configparser.c" break; - case 408: /* server_infra_lame_ttl: VAR_INFRA_LAME_TTL STRING_ARG */ -#line 1570 "./util/configparser.y" + case 412: /* server_infra_lame_ttl: VAR_INFRA_LAME_TTL STRING_ARG */ +#line 1588 "./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 4339 "util/configparser.c" +#line 4375 "util/configparser.c" break; - case 409: /* server_infra_cache_numhosts: VAR_INFRA_CACHE_NUMHOSTS STRING_ARG */ -#line 1578 "./util/configparser.y" + case 413: /* server_infra_cache_numhosts: VAR_INFRA_CACHE_NUMHOSTS STRING_ARG */ +#line 1596 "./util/configparser.y" { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4347,22 +4383,22 @@ yyreduce: else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4351 "util/configparser.c" +#line 4387 "util/configparser.c" break; - case 410: /* server_infra_cache_lame_size: VAR_INFRA_CACHE_LAME_SIZE STRING_ARG */ -#line 1587 "./util/configparser.y" + case 414: /* server_infra_cache_lame_size: VAR_INFRA_CACHE_LAME_SIZE STRING_ARG */ +#line 1605 "./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 4362 "util/configparser.c" +#line 4398 "util/configparser.c" break; - case 411: /* server_infra_cache_slabs: VAR_INFRA_CACHE_SLABS STRING_ARG */ -#line 1595 "./util/configparser.y" + case 415: /* server_infra_cache_slabs: VAR_INFRA_CACHE_SLABS STRING_ARG */ +#line 1613 "./util/configparser.y" { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4374,11 +4410,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4378 "util/configparser.c" +#line 4414 "util/configparser.c" break; - case 412: /* server_infra_cache_min_rtt: VAR_INFRA_CACHE_MIN_RTT STRING_ARG */ -#line 1608 "./util/configparser.y" + case 416: /* server_infra_cache_min_rtt: VAR_INFRA_CACHE_MIN_RTT STRING_ARG */ +#line 1626 "./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) @@ -4386,11 +4422,11 @@ yyreduce: else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4390 "util/configparser.c" +#line 4426 "util/configparser.c" break; - case 413: /* server_infra_keep_probing: VAR_INFRA_KEEP_PROBING STRING_ARG */ -#line 1617 "./util/configparser.y" + case 417: /* server_infra_keep_probing: VAR_INFRA_KEEP_PROBING STRING_ARG */ +#line 1635 "./util/configparser.y" { OUTYY(("P(server_infra_keep_probing:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4399,21 +4435,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4403 "util/configparser.c" +#line 4439 "util/configparser.c" break; - case 414: /* server_target_fetch_policy: VAR_TARGET_FETCH_POLICY STRING_ARG */ -#line 1627 "./util/configparser.y" + case 418: /* server_target_fetch_policy: VAR_TARGET_FETCH_POLICY STRING_ARG */ +#line 1645 "./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 4413 "util/configparser.c" +#line 4449 "util/configparser.c" break; - case 415: /* server_harden_short_bufsize: VAR_HARDEN_SHORT_BUFSIZE STRING_ARG */ -#line 1634 "./util/configparser.y" + case 419: /* server_harden_short_bufsize: VAR_HARDEN_SHORT_BUFSIZE STRING_ARG */ +#line 1652 "./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) @@ -4422,11 +4458,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4426 "util/configparser.c" +#line 4462 "util/configparser.c" break; - case 416: /* server_harden_large_queries: VAR_HARDEN_LARGE_QUERIES STRING_ARG */ -#line 1644 "./util/configparser.y" + case 420: /* server_harden_large_queries: VAR_HARDEN_LARGE_QUERIES STRING_ARG */ +#line 1662 "./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) @@ -4435,11 +4471,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4439 "util/configparser.c" +#line 4475 "util/configparser.c" break; - case 417: /* server_harden_glue: VAR_HARDEN_GLUE STRING_ARG */ -#line 1654 "./util/configparser.y" + case 421: /* server_harden_glue: VAR_HARDEN_GLUE STRING_ARG */ +#line 1672 "./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) @@ -4448,11 +4484,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4452 "util/configparser.c" +#line 4488 "util/configparser.c" break; - case 418: /* server_harden_dnssec_stripped: VAR_HARDEN_DNSSEC_STRIPPED STRING_ARG */ -#line 1664 "./util/configparser.y" + case 422: /* server_harden_dnssec_stripped: VAR_HARDEN_DNSSEC_STRIPPED STRING_ARG */ +#line 1682 "./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) @@ -4461,11 +4497,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4465 "util/configparser.c" +#line 4501 "util/configparser.c" break; - case 419: /* server_harden_below_nxdomain: VAR_HARDEN_BELOW_NXDOMAIN STRING_ARG */ -#line 1674 "./util/configparser.y" + case 423: /* server_harden_below_nxdomain: VAR_HARDEN_BELOW_NXDOMAIN STRING_ARG */ +#line 1692 "./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) @@ -4474,11 +4510,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4478 "util/configparser.c" +#line 4514 "util/configparser.c" break; - case 420: /* server_harden_referral_path: VAR_HARDEN_REFERRAL_PATH STRING_ARG */ -#line 1684 "./util/configparser.y" + case 424: /* server_harden_referral_path: VAR_HARDEN_REFERRAL_PATH STRING_ARG */ +#line 1702 "./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) @@ -4487,11 +4523,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4491 "util/configparser.c" +#line 4527 "util/configparser.c" break; - case 421: /* server_harden_algo_downgrade: VAR_HARDEN_ALGO_DOWNGRADE STRING_ARG */ -#line 1694 "./util/configparser.y" + case 425: /* server_harden_algo_downgrade: VAR_HARDEN_ALGO_DOWNGRADE STRING_ARG */ +#line 1712 "./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) @@ -4500,11 +4536,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4504 "util/configparser.c" +#line 4540 "util/configparser.c" break; - case 422: /* server_use_caps_for_id: VAR_USE_CAPS_FOR_ID STRING_ARG */ -#line 1704 "./util/configparser.y" + case 426: /* server_use_caps_for_id: VAR_USE_CAPS_FOR_ID STRING_ARG */ +#line 1722 "./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) @@ -4513,41 +4549,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4517 "util/configparser.c" +#line 4553 "util/configparser.c" break; - case 423: /* server_caps_whitelist: VAR_CAPS_WHITELIST STRING_ARG */ -#line 1714 "./util/configparser.y" + case 427: /* server_caps_whitelist: VAR_CAPS_WHITELIST STRING_ARG */ +#line 1732 "./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 4527 "util/configparser.c" +#line 4563 "util/configparser.c" break; - case 424: /* server_private_address: VAR_PRIVATE_ADDRESS STRING_ARG */ -#line 1721 "./util/configparser.y" + case 428: /* server_private_address: VAR_PRIVATE_ADDRESS STRING_ARG */ +#line 1739 "./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 4537 "util/configparser.c" +#line 4573 "util/configparser.c" break; - case 425: /* server_private_domain: VAR_PRIVATE_DOMAIN STRING_ARG */ -#line 1728 "./util/configparser.y" + case 429: /* server_private_domain: VAR_PRIVATE_DOMAIN STRING_ARG */ +#line 1746 "./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 4547 "util/configparser.c" +#line 4583 "util/configparser.c" break; - case 426: /* server_prefetch: VAR_PREFETCH STRING_ARG */ -#line 1735 "./util/configparser.y" + case 430: /* server_prefetch: VAR_PREFETCH STRING_ARG */ +#line 1753 "./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) @@ -4555,11 +4591,11 @@ yyreduce: else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4559 "util/configparser.c" +#line 4595 "util/configparser.c" break; - case 427: /* server_prefetch_key: VAR_PREFETCH_KEY STRING_ARG */ -#line 1744 "./util/configparser.y" + case 431: /* server_prefetch_key: VAR_PREFETCH_KEY STRING_ARG */ +#line 1762 "./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) @@ -4567,11 +4603,11 @@ yyreduce: else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4571 "util/configparser.c" +#line 4607 "util/configparser.c" break; - case 428: /* server_deny_any: VAR_DENY_ANY STRING_ARG */ -#line 1753 "./util/configparser.y" + case 432: /* server_deny_any: VAR_DENY_ANY STRING_ARG */ +#line 1771 "./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) @@ -4579,11 +4615,11 @@ yyreduce: else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4583 "util/configparser.c" +#line 4619 "util/configparser.c" break; - case 429: /* server_unwanted_reply_threshold: VAR_UNWANTED_REPLY_THRESHOLD STRING_ARG */ -#line 1762 "./util/configparser.y" + case 433: /* server_unwanted_reply_threshold: VAR_UNWANTED_REPLY_THRESHOLD STRING_ARG */ +#line 1780 "./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) @@ -4591,21 +4627,21 @@ yyreduce: else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4595 "util/configparser.c" +#line 4631 "util/configparser.c" break; - case 430: /* server_do_not_query_address: VAR_DO_NOT_QUERY_ADDRESS STRING_ARG */ -#line 1771 "./util/configparser.y" + case 434: /* server_do_not_query_address: VAR_DO_NOT_QUERY_ADDRESS STRING_ARG */ +#line 1789 "./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 4605 "util/configparser.c" +#line 4641 "util/configparser.c" break; - case 431: /* server_do_not_query_localhost: VAR_DO_NOT_QUERY_LOCALHOST STRING_ARG */ -#line 1778 "./util/configparser.y" + case 435: /* server_do_not_query_localhost: VAR_DO_NOT_QUERY_LOCALHOST STRING_ARG */ +#line 1796 "./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) @@ -4614,11 +4650,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4618 "util/configparser.c" +#line 4654 "util/configparser.c" break; - case 432: /* server_access_control: VAR_ACCESS_CONTROL STRING_ARG STRING_ARG */ -#line 1788 "./util/configparser.y" + case 436: /* server_access_control: VAR_ACCESS_CONTROL STRING_ARG STRING_ARG */ +#line 1806 "./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 && @@ -4637,21 +4673,21 @@ yyreduce: fatal_exit("out of memory adding acl"); } } -#line 4641 "util/configparser.c" +#line 4677 "util/configparser.c" break; - case 433: /* server_module_conf: VAR_MODULE_CONF STRING_ARG */ -#line 1808 "./util/configparser.y" + case 437: /* server_module_conf: VAR_MODULE_CONF STRING_ARG */ +#line 1826 "./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 4651 "util/configparser.c" +#line 4687 "util/configparser.c" break; - case 434: /* server_val_override_date: VAR_VAL_OVERRIDE_DATE STRING_ARG */ -#line 1815 "./util/configparser.y" + case 438: /* server_val_override_date: VAR_VAL_OVERRIDE_DATE STRING_ARG */ +#line 1833 "./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) { @@ -4668,11 +4704,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4672 "util/configparser.c" +#line 4708 "util/configparser.c" break; - case 435: /* server_val_sig_skew_min: VAR_VAL_SIG_SKEW_MIN STRING_ARG */ -#line 1833 "./util/configparser.y" + case 439: /* server_val_sig_skew_min: VAR_VAL_SIG_SKEW_MIN STRING_ARG */ +#line 1851 "./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) { @@ -4684,11 +4720,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4688 "util/configparser.c" +#line 4724 "util/configparser.c" break; - case 436: /* server_val_sig_skew_max: VAR_VAL_SIG_SKEW_MAX STRING_ARG */ -#line 1846 "./util/configparser.y" + case 440: /* server_val_sig_skew_max: VAR_VAL_SIG_SKEW_MAX STRING_ARG */ +#line 1864 "./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) { @@ -4700,11 +4736,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4704 "util/configparser.c" +#line 4740 "util/configparser.c" break; - case 437: /* server_val_max_restart: VAR_VAL_MAX_RESTART STRING_ARG */ -#line 1859 "./util/configparser.y" + case 441: /* server_val_max_restart: VAR_VAL_MAX_RESTART STRING_ARG */ +#line 1877 "./util/configparser.y" { OUTYY(("P(server_val_max_restart:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4716,11 +4752,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4720 "util/configparser.c" +#line 4756 "util/configparser.c" break; - case 438: /* server_cache_max_ttl: VAR_CACHE_MAX_TTL STRING_ARG */ -#line 1872 "./util/configparser.y" + case 442: /* server_cache_max_ttl: VAR_CACHE_MAX_TTL STRING_ARG */ +#line 1890 "./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) @@ -4728,11 +4764,11 @@ yyreduce: else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4732 "util/configparser.c" +#line 4768 "util/configparser.c" break; - case 439: /* server_cache_max_negative_ttl: VAR_CACHE_MAX_NEGATIVE_TTL STRING_ARG */ -#line 1881 "./util/configparser.y" + case 443: /* server_cache_max_negative_ttl: VAR_CACHE_MAX_NEGATIVE_TTL STRING_ARG */ +#line 1899 "./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) @@ -4740,11 +4776,11 @@ yyreduce: else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4744 "util/configparser.c" +#line 4780 "util/configparser.c" break; - case 440: /* server_cache_min_ttl: VAR_CACHE_MIN_TTL STRING_ARG */ -#line 1890 "./util/configparser.y" + case 444: /* server_cache_min_ttl: VAR_CACHE_MIN_TTL STRING_ARG */ +#line 1908 "./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) @@ -4752,11 +4788,11 @@ yyreduce: else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4756 "util/configparser.c" +#line 4792 "util/configparser.c" break; - case 441: /* server_bogus_ttl: VAR_BOGUS_TTL STRING_ARG */ -#line 1899 "./util/configparser.y" + case 445: /* server_bogus_ttl: VAR_BOGUS_TTL STRING_ARG */ +#line 1917 "./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) @@ -4764,11 +4800,11 @@ yyreduce: else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4768 "util/configparser.c" +#line 4804 "util/configparser.c" break; - case 442: /* server_val_clean_additional: VAR_VAL_CLEAN_ADDITIONAL STRING_ARG */ -#line 1908 "./util/configparser.y" + case 446: /* server_val_clean_additional: VAR_VAL_CLEAN_ADDITIONAL STRING_ARG */ +#line 1926 "./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) @@ -4777,11 +4813,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4781 "util/configparser.c" +#line 4817 "util/configparser.c" break; - case 443: /* server_val_permissive_mode: VAR_VAL_PERMISSIVE_MODE STRING_ARG */ -#line 1918 "./util/configparser.y" + case 447: /* server_val_permissive_mode: VAR_VAL_PERMISSIVE_MODE STRING_ARG */ +#line 1936 "./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) @@ -4790,11 +4826,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4794 "util/configparser.c" +#line 4830 "util/configparser.c" break; - case 444: /* server_aggressive_nsec: VAR_AGGRESSIVE_NSEC STRING_ARG */ -#line 1928 "./util/configparser.y" + case 448: /* server_aggressive_nsec: VAR_AGGRESSIVE_NSEC STRING_ARG */ +#line 1946 "./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) @@ -4804,11 +4840,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4808 "util/configparser.c" +#line 4844 "util/configparser.c" break; - case 445: /* server_ignore_cd_flag: VAR_IGNORE_CD_FLAG STRING_ARG */ -#line 1939 "./util/configparser.y" + case 449: /* server_ignore_cd_flag: VAR_IGNORE_CD_FLAG STRING_ARG */ +#line 1957 "./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) @@ -4816,11 +4852,11 @@ yyreduce: else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4820 "util/configparser.c" +#line 4856 "util/configparser.c" break; - case 446: /* server_serve_expired: VAR_SERVE_EXPIRED STRING_ARG */ -#line 1948 "./util/configparser.y" + case 450: /* server_serve_expired: VAR_SERVE_EXPIRED STRING_ARG */ +#line 1966 "./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) @@ -4828,11 +4864,11 @@ yyreduce: else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4832 "util/configparser.c" +#line 4868 "util/configparser.c" break; - case 447: /* server_serve_expired_ttl: VAR_SERVE_EXPIRED_TTL STRING_ARG */ -#line 1957 "./util/configparser.y" + case 451: /* server_serve_expired_ttl: VAR_SERVE_EXPIRED_TTL STRING_ARG */ +#line 1975 "./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) @@ -4840,11 +4876,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4844 "util/configparser.c" +#line 4880 "util/configparser.c" break; - case 448: /* server_serve_expired_ttl_reset: VAR_SERVE_EXPIRED_TTL_RESET STRING_ARG */ -#line 1966 "./util/configparser.y" + case 452: /* server_serve_expired_ttl_reset: VAR_SERVE_EXPIRED_TTL_RESET STRING_ARG */ +#line 1984 "./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) @@ -4852,11 +4888,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4856 "util/configparser.c" +#line 4892 "util/configparser.c" break; - case 449: /* server_serve_expired_reply_ttl: VAR_SERVE_EXPIRED_REPLY_TTL STRING_ARG */ -#line 1975 "./util/configparser.y" + case 453: /* server_serve_expired_reply_ttl: VAR_SERVE_EXPIRED_REPLY_TTL STRING_ARG */ +#line 1993 "./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) @@ -4864,11 +4900,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4868 "util/configparser.c" +#line 4904 "util/configparser.c" break; - case 450: /* server_serve_expired_client_timeout: VAR_SERVE_EXPIRED_CLIENT_TIMEOUT STRING_ARG */ -#line 1984 "./util/configparser.y" + case 454: /* server_serve_expired_client_timeout: VAR_SERVE_EXPIRED_CLIENT_TIMEOUT STRING_ARG */ +#line 2002 "./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) @@ -4876,11 +4912,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4880 "util/configparser.c" +#line 4916 "util/configparser.c" break; - case 451: /* server_serve_original_ttl: VAR_SERVE_ORIGINAL_TTL STRING_ARG */ -#line 1993 "./util/configparser.y" + case 455: /* server_serve_original_ttl: VAR_SERVE_ORIGINAL_TTL STRING_ARG */ +#line 2011 "./util/configparser.y" { OUTYY(("P(server_serve_original_ttl:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4888,11 +4924,11 @@ yyreduce: else cfg_parser->cfg->serve_original_ttl = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4892 "util/configparser.c" +#line 4928 "util/configparser.c" break; - case 452: /* server_fake_dsa: VAR_FAKE_DSA STRING_ARG */ -#line 2002 "./util/configparser.y" + case 456: /* server_fake_dsa: VAR_FAKE_DSA STRING_ARG */ +#line 2020 "./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) @@ -4904,11 +4940,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4908 "util/configparser.c" +#line 4944 "util/configparser.c" break; - case 453: /* server_fake_sha1: VAR_FAKE_SHA1 STRING_ARG */ -#line 2015 "./util/configparser.y" + case 457: /* server_fake_sha1: VAR_FAKE_SHA1 STRING_ARG */ +#line 2033 "./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) @@ -4920,11 +4956,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4924 "util/configparser.c" +#line 4960 "util/configparser.c" break; - case 454: /* server_val_log_level: VAR_VAL_LOG_LEVEL STRING_ARG */ -#line 2028 "./util/configparser.y" + case 458: /* server_val_log_level: VAR_VAL_LOG_LEVEL STRING_ARG */ +#line 2046 "./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) @@ -4932,21 +4968,21 @@ yyreduce: else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4936 "util/configparser.c" +#line 4972 "util/configparser.c" break; - case 455: /* server_val_nsec3_keysize_iterations: VAR_VAL_NSEC3_KEYSIZE_ITERATIONS STRING_ARG */ -#line 2037 "./util/configparser.y" + case 459: /* server_val_nsec3_keysize_iterations: VAR_VAL_NSEC3_KEYSIZE_ITERATIONS STRING_ARG */ +#line 2055 "./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 4946 "util/configparser.c" +#line 4982 "util/configparser.c" break; - case 456: /* server_zonemd_permissive_mode: VAR_ZONEMD_PERMISSIVE_MODE STRING_ARG */ -#line 2044 "./util/configparser.y" + case 460: /* server_zonemd_permissive_mode: VAR_ZONEMD_PERMISSIVE_MODE STRING_ARG */ +#line 2062 "./util/configparser.y" { OUTYY(("P(server_zonemd_permissive_mode:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4954,11 +4990,11 @@ yyreduce: else cfg_parser->cfg->zonemd_permissive_mode = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4958 "util/configparser.c" +#line 4994 "util/configparser.c" break; - case 457: /* server_add_holddown: VAR_ADD_HOLDDOWN STRING_ARG */ -#line 2053 "./util/configparser.y" + case 461: /* server_add_holddown: VAR_ADD_HOLDDOWN STRING_ARG */ +#line 2071 "./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) @@ -4966,11 +5002,11 @@ yyreduce: else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4970 "util/configparser.c" +#line 5006 "util/configparser.c" break; - case 458: /* server_del_holddown: VAR_DEL_HOLDDOWN STRING_ARG */ -#line 2062 "./util/configparser.y" + case 462: /* server_del_holddown: VAR_DEL_HOLDDOWN STRING_ARG */ +#line 2080 "./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) @@ -4978,11 +5014,11 @@ yyreduce: else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4982 "util/configparser.c" +#line 5018 "util/configparser.c" break; - case 459: /* server_keep_missing: VAR_KEEP_MISSING STRING_ARG */ -#line 2071 "./util/configparser.y" + case 463: /* server_keep_missing: VAR_KEEP_MISSING STRING_ARG */ +#line 2089 "./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) @@ -4990,11 +5026,11 @@ yyreduce: else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4994 "util/configparser.c" +#line 5030 "util/configparser.c" break; - case 460: /* server_permit_small_holddown: VAR_PERMIT_SMALL_HOLDDOWN STRING_ARG */ -#line 2080 "./util/configparser.y" + case 464: /* server_permit_small_holddown: VAR_PERMIT_SMALL_HOLDDOWN STRING_ARG */ +#line 2098 "./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) @@ -5003,22 +5039,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5007 "util/configparser.c" +#line 5043 "util/configparser.c" break; - case 461: /* server_key_cache_size: VAR_KEY_CACHE_SIZE STRING_ARG */ -#line 2089 "./util/configparser.y" + case 465: /* server_key_cache_size: VAR_KEY_CACHE_SIZE STRING_ARG */ +#line 2107 "./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 5018 "util/configparser.c" +#line 5054 "util/configparser.c" break; - case 462: /* server_key_cache_slabs: VAR_KEY_CACHE_SLABS STRING_ARG */ -#line 2097 "./util/configparser.y" + case 466: /* server_key_cache_slabs: VAR_KEY_CACHE_SLABS STRING_ARG */ +#line 2115 "./util/configparser.y" { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5030,22 +5066,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5034 "util/configparser.c" +#line 5070 "util/configparser.c" break; - case 463: /* server_neg_cache_size: VAR_NEG_CACHE_SIZE STRING_ARG */ -#line 2110 "./util/configparser.y" + case 467: /* server_neg_cache_size: VAR_NEG_CACHE_SIZE STRING_ARG */ +#line 2128 "./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 5045 "util/configparser.c" +#line 5081 "util/configparser.c" break; - case 464: /* server_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */ -#line 2118 "./util/configparser.y" + case 468: /* server_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */ +#line 2136 "./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 && @@ -5089,21 +5125,21 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5093 "util/configparser.c" +#line 5129 "util/configparser.c" break; - case 465: /* server_local_data: VAR_LOCAL_DATA STRING_ARG */ -#line 2163 "./util/configparser.y" + case 469: /* server_local_data: VAR_LOCAL_DATA STRING_ARG */ +#line 2181 "./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 5103 "util/configparser.c" +#line 5139 "util/configparser.c" break; - case 466: /* server_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ -#line 2170 "./util/configparser.y" + case 470: /* server_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ +#line 2188 "./util/configparser.y" { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -5117,11 +5153,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5121 "util/configparser.c" +#line 5157 "util/configparser.c" break; - case 467: /* server_minimal_responses: VAR_MINIMAL_RESPONSES STRING_ARG */ -#line 2185 "./util/configparser.y" + case 471: /* server_minimal_responses: VAR_MINIMAL_RESPONSES STRING_ARG */ +#line 2203 "./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) @@ -5130,11 +5166,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5134 "util/configparser.c" +#line 5170 "util/configparser.c" break; - case 468: /* server_rrset_roundrobin: VAR_RRSET_ROUNDROBIN STRING_ARG */ -#line 2195 "./util/configparser.y" + case 472: /* server_rrset_roundrobin: VAR_RRSET_ROUNDROBIN STRING_ARG */ +#line 2213 "./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) @@ -5143,41 +5179,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5147 "util/configparser.c" +#line 5183 "util/configparser.c" break; - case 469: /* server_unknown_server_time_limit: VAR_UNKNOWN_SERVER_TIME_LIMIT STRING_ARG */ -#line 2205 "./util/configparser.y" + case 473: /* server_unknown_server_time_limit: VAR_UNKNOWN_SERVER_TIME_LIMIT STRING_ARG */ +#line 2223 "./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 5157 "util/configparser.c" +#line 5193 "util/configparser.c" break; - case 470: /* server_max_udp_size: VAR_MAX_UDP_SIZE STRING_ARG */ -#line 2212 "./util/configparser.y" + case 474: /* server_max_udp_size: VAR_MAX_UDP_SIZE STRING_ARG */ +#line 2230 "./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 5167 "util/configparser.c" +#line 5203 "util/configparser.c" break; - case 471: /* server_dns64_prefix: VAR_DNS64_PREFIX STRING_ARG */ -#line 2219 "./util/configparser.y" + case 475: /* server_dns64_prefix: VAR_DNS64_PREFIX STRING_ARG */ +#line 2237 "./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 5177 "util/configparser.c" +#line 5213 "util/configparser.c" break; - case 472: /* server_dns64_synthall: VAR_DNS64_SYNTHALL STRING_ARG */ -#line 2226 "./util/configparser.y" + case 476: /* server_dns64_synthall: VAR_DNS64_SYNTHALL STRING_ARG */ +#line 2244 "./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) @@ -5185,22 +5221,22 @@ yyreduce: else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5189 "util/configparser.c" +#line 5225 "util/configparser.c" break; - case 473: /* server_dns64_ignore_aaaa: VAR_DNS64_IGNORE_AAAA STRING_ARG */ -#line 2235 "./util/configparser.y" + case 477: /* server_dns64_ignore_aaaa: VAR_DNS64_IGNORE_AAAA STRING_ARG */ +#line 2253 "./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 5200 "util/configparser.c" +#line 5236 "util/configparser.c" break; - case 474: /* server_define_tag: VAR_DEFINE_TAG STRING_ARG */ -#line 2243 "./util/configparser.y" + case 478: /* server_define_tag: VAR_DEFINE_TAG STRING_ARG */ +#line 2261 "./util/configparser.y" { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); @@ -5213,11 +5249,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5217 "util/configparser.c" +#line 5253 "util/configparser.c" break; - case 475: /* server_local_zone_tag: VAR_LOCAL_ZONE_TAG STRING_ARG STRING_ARG */ -#line 2257 "./util/configparser.y" + case 479: /* server_local_zone_tag: VAR_LOCAL_ZONE_TAG STRING_ARG STRING_ARG */ +#line 2275 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5237,11 +5273,11 @@ yyreduce: } } } -#line 5241 "util/configparser.c" +#line 5277 "util/configparser.c" break; - case 476: /* server_access_control_tag: VAR_ACCESS_CONTROL_TAG STRING_ARG STRING_ARG */ -#line 2278 "./util/configparser.y" + case 480: /* server_access_control_tag: VAR_ACCESS_CONTROL_TAG STRING_ARG STRING_ARG */ +#line 2296 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5261,11 +5297,11 @@ yyreduce: } } } -#line 5265 "util/configparser.c" +#line 5301 "util/configparser.c" break; - case 477: /* server_access_control_tag_action: VAR_ACCESS_CONTROL_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG */ -#line 2299 "./util/configparser.y" + case 481: /* server_access_control_tag_action: VAR_ACCESS_CONTROL_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG */ +#line 2317 "./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, @@ -5276,11 +5312,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5280 "util/configparser.c" +#line 5316 "util/configparser.c" break; - case 478: /* server_access_control_tag_data: VAR_ACCESS_CONTROL_TAG_DATA STRING_ARG STRING_ARG STRING_ARG */ -#line 2311 "./util/configparser.y" + case 482: /* server_access_control_tag_data: VAR_ACCESS_CONTROL_TAG_DATA STRING_ARG STRING_ARG STRING_ARG */ +#line 2329 "./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, @@ -5291,11 +5327,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5295 "util/configparser.c" +#line 5331 "util/configparser.c" break; - case 479: /* server_local_zone_override: VAR_LOCAL_ZONE_OVERRIDE STRING_ARG STRING_ARG STRING_ARG */ -#line 2323 "./util/configparser.y" + case 483: /* server_local_zone_override: VAR_LOCAL_ZONE_OVERRIDE STRING_ARG STRING_ARG STRING_ARG */ +#line 2341 "./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, @@ -5306,11 +5342,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5310 "util/configparser.c" +#line 5346 "util/configparser.c" break; - case 480: /* server_access_control_view: VAR_ACCESS_CONTROL_VIEW STRING_ARG STRING_ARG */ -#line 2335 "./util/configparser.y" + case 484: /* server_access_control_view: VAR_ACCESS_CONTROL_VIEW STRING_ARG STRING_ARG */ +#line 2353 "./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, @@ -5318,11 +5354,11 @@ yyreduce: yyerror("out of memory"); } } -#line 5322 "util/configparser.c" +#line 5358 "util/configparser.c" break; - case 481: /* server_response_ip_tag: VAR_RESPONSE_IP_TAG STRING_ARG STRING_ARG */ -#line 2344 "./util/configparser.y" + case 485: /* server_response_ip_tag: VAR_RESPONSE_IP_TAG STRING_ARG STRING_ARG */ +#line 2362 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5342,11 +5378,11 @@ yyreduce: } } } -#line 5346 "util/configparser.c" +#line 5382 "util/configparser.c" break; - case 482: /* server_ip_ratelimit: VAR_IP_RATELIMIT STRING_ARG */ -#line 2365 "./util/configparser.y" + case 486: /* server_ip_ratelimit: VAR_IP_RATELIMIT STRING_ARG */ +#line 2383 "./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) @@ -5354,11 +5390,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5358 "util/configparser.c" +#line 5394 "util/configparser.c" break; - case 483: /* server_ratelimit: VAR_RATELIMIT STRING_ARG */ -#line 2375 "./util/configparser.y" + case 487: /* server_ratelimit: VAR_RATELIMIT STRING_ARG */ +#line 2393 "./util/configparser.y" { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5366,33 +5402,33 @@ yyreduce: else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5370 "util/configparser.c" +#line 5406 "util/configparser.c" break; - case 484: /* server_ip_ratelimit_size: VAR_IP_RATELIMIT_SIZE STRING_ARG */ -#line 2384 "./util/configparser.y" + case 488: /* server_ip_ratelimit_size: VAR_IP_RATELIMIT_SIZE STRING_ARG */ +#line 2402 "./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 5381 "util/configparser.c" +#line 5417 "util/configparser.c" break; - case 485: /* server_ratelimit_size: VAR_RATELIMIT_SIZE STRING_ARG */ -#line 2392 "./util/configparser.y" + case 489: /* server_ratelimit_size: VAR_RATELIMIT_SIZE STRING_ARG */ +#line 2410 "./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 5392 "util/configparser.c" +#line 5428 "util/configparser.c" break; - case 486: /* server_ip_ratelimit_slabs: VAR_IP_RATELIMIT_SLABS STRING_ARG */ -#line 2400 "./util/configparser.y" + case 490: /* server_ip_ratelimit_slabs: VAR_IP_RATELIMIT_SLABS STRING_ARG */ +#line 2418 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5404,11 +5440,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5408 "util/configparser.c" +#line 5444 "util/configparser.c" break; - case 487: /* server_ratelimit_slabs: VAR_RATELIMIT_SLABS STRING_ARG */ -#line 2413 "./util/configparser.y" + case 491: /* server_ratelimit_slabs: VAR_RATELIMIT_SLABS STRING_ARG */ +#line 2431 "./util/configparser.y" { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5420,11 +5456,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5424 "util/configparser.c" +#line 5460 "util/configparser.c" break; - case 488: /* server_ratelimit_for_domain: VAR_RATELIMIT_FOR_DOMAIN STRING_ARG STRING_ARG */ -#line 2426 "./util/configparser.y" + case 492: /* server_ratelimit_for_domain: VAR_RATELIMIT_FOR_DOMAIN STRING_ARG STRING_ARG */ +#line 2444 "./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) { @@ -5438,11 +5474,11 @@ yyreduce: "ratelimit-for-domain"); } } -#line 5442 "util/configparser.c" +#line 5478 "util/configparser.c" break; - case 489: /* server_ratelimit_below_domain: VAR_RATELIMIT_BELOW_DOMAIN STRING_ARG STRING_ARG */ -#line 2441 "./util/configparser.y" + case 493: /* server_ratelimit_below_domain: VAR_RATELIMIT_BELOW_DOMAIN STRING_ARG STRING_ARG */ +#line 2459 "./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) { @@ -5456,11 +5492,11 @@ yyreduce: "ratelimit-below-domain"); } } -#line 5460 "util/configparser.c" +#line 5496 "util/configparser.c" break; - case 490: /* server_ip_ratelimit_factor: VAR_IP_RATELIMIT_FACTOR STRING_ARG */ -#line 2456 "./util/configparser.y" + case 494: /* server_ip_ratelimit_factor: VAR_IP_RATELIMIT_FACTOR STRING_ARG */ +#line 2474 "./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) @@ -5468,11 +5504,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5472 "util/configparser.c" +#line 5508 "util/configparser.c" break; - case 491: /* server_ratelimit_factor: VAR_RATELIMIT_FACTOR STRING_ARG */ -#line 2465 "./util/configparser.y" + case 495: /* server_ratelimit_factor: VAR_RATELIMIT_FACTOR STRING_ARG */ +#line 2483 "./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) @@ -5480,20 +5516,20 @@ yyreduce: else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5484 "util/configparser.c" +#line 5520 "util/configparser.c" break; - case 492: /* server_low_rtt: VAR_LOW_RTT STRING_ARG */ -#line 2474 "./util/configparser.y" + case 496: /* server_low_rtt: VAR_LOW_RTT STRING_ARG */ +#line 2492 "./util/configparser.y" { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 5493 "util/configparser.c" +#line 5529 "util/configparser.c" break; - case 493: /* server_fast_server_num: VAR_FAST_SERVER_NUM STRING_ARG */ -#line 2480 "./util/configparser.y" + case 497: /* server_fast_server_num: VAR_FAST_SERVER_NUM STRING_ARG */ +#line 2498 "./util/configparser.y" { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) <= 0) @@ -5501,11 +5537,11 @@ yyreduce: else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5505 "util/configparser.c" +#line 5541 "util/configparser.c" break; - case 494: /* server_fast_server_permil: VAR_FAST_SERVER_PERMIL STRING_ARG */ -#line 2489 "./util/configparser.y" + case 498: /* server_fast_server_permil: VAR_FAST_SERVER_PERMIL STRING_ARG */ +#line 2507 "./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) @@ -5513,11 +5549,11 @@ yyreduce: else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5517 "util/configparser.c" +#line 5553 "util/configparser.c" break; - case 495: /* server_qname_minimisation: VAR_QNAME_MINIMISATION STRING_ARG */ -#line 2498 "./util/configparser.y" + case 499: /* server_qname_minimisation: VAR_QNAME_MINIMISATION STRING_ARG */ +#line 2516 "./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) @@ -5526,11 +5562,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5530 "util/configparser.c" +#line 5566 "util/configparser.c" break; - case 496: /* server_qname_minimisation_strict: VAR_QNAME_MINIMISATION_STRICT STRING_ARG */ -#line 2508 "./util/configparser.y" + case 500: /* server_qname_minimisation_strict: VAR_QNAME_MINIMISATION_STRICT STRING_ARG */ +#line 2526 "./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) @@ -5539,11 +5575,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5543 "util/configparser.c" +#line 5579 "util/configparser.c" break; - case 497: /* server_pad_responses: VAR_PAD_RESPONSES STRING_ARG */ -#line 2518 "./util/configparser.y" + case 501: /* server_pad_responses: VAR_PAD_RESPONSES STRING_ARG */ +#line 2536 "./util/configparser.y" { OUTYY(("P(server_pad_responses:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5552,11 +5588,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5556 "util/configparser.c" +#line 5592 "util/configparser.c" break; - case 498: /* server_pad_responses_block_size: VAR_PAD_RESPONSES_BLOCK_SIZE STRING_ARG */ -#line 2528 "./util/configparser.y" + case 502: /* server_pad_responses_block_size: VAR_PAD_RESPONSES_BLOCK_SIZE STRING_ARG */ +#line 2546 "./util/configparser.y" { OUTYY(("P(server_pad_responses_block_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5564,11 +5600,11 @@ yyreduce: else cfg_parser->cfg->pad_responses_block_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5568 "util/configparser.c" +#line 5604 "util/configparser.c" break; - case 499: /* server_pad_queries: VAR_PAD_QUERIES STRING_ARG */ -#line 2537 "./util/configparser.y" + case 503: /* server_pad_queries: VAR_PAD_QUERIES STRING_ARG */ +#line 2555 "./util/configparser.y" { OUTYY(("P(server_pad_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5577,11 +5613,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5581 "util/configparser.c" +#line 5617 "util/configparser.c" break; - case 500: /* server_pad_queries_block_size: VAR_PAD_QUERIES_BLOCK_SIZE STRING_ARG */ -#line 2547 "./util/configparser.y" + case 504: /* server_pad_queries_block_size: VAR_PAD_QUERIES_BLOCK_SIZE STRING_ARG */ +#line 2565 "./util/configparser.y" { OUTYY(("P(server_pad_queries_block_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5589,11 +5625,11 @@ yyreduce: else cfg_parser->cfg->pad_queries_block_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5593 "util/configparser.c" +#line 5629 "util/configparser.c" break; - case 501: /* server_ipsecmod_enabled: VAR_IPSECMOD_ENABLED STRING_ARG */ -#line 2556 "./util/configparser.y" + case 505: /* server_ipsecmod_enabled: VAR_IPSECMOD_ENABLED STRING_ARG */ +#line 2574 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); @@ -5605,11 +5641,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5609 "util/configparser.c" +#line 5645 "util/configparser.c" break; - case 502: /* server_ipsecmod_ignore_bogus: VAR_IPSECMOD_IGNORE_BOGUS STRING_ARG */ -#line 2569 "./util/configparser.y" + case 506: /* server_ipsecmod_ignore_bogus: VAR_IPSECMOD_IGNORE_BOGUS STRING_ARG */ +#line 2587 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); @@ -5621,11 +5657,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5625 "util/configparser.c" +#line 5661 "util/configparser.c" break; - case 503: /* server_ipsecmod_hook: VAR_IPSECMOD_HOOK STRING_ARG */ -#line 2582 "./util/configparser.y" + case 507: /* server_ipsecmod_hook: VAR_IPSECMOD_HOOK STRING_ARG */ +#line 2600 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); @@ -5636,11 +5672,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5640 "util/configparser.c" +#line 5676 "util/configparser.c" break; - case 504: /* server_ipsecmod_max_ttl: VAR_IPSECMOD_MAX_TTL STRING_ARG */ -#line 2594 "./util/configparser.y" + case 508: /* server_ipsecmod_max_ttl: VAR_IPSECMOD_MAX_TTL STRING_ARG */ +#line 2612 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); @@ -5653,11 +5689,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5657 "util/configparser.c" +#line 5693 "util/configparser.c" break; - case 505: /* server_ipsecmod_whitelist: VAR_IPSECMOD_WHITELIST STRING_ARG */ -#line 2608 "./util/configparser.y" + case 509: /* server_ipsecmod_whitelist: VAR_IPSECMOD_WHITELIST STRING_ARG */ +#line 2626 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); @@ -5668,11 +5704,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5672 "util/configparser.c" +#line 5708 "util/configparser.c" break; - case 506: /* server_ipsecmod_strict: VAR_IPSECMOD_STRICT STRING_ARG */ -#line 2620 "./util/configparser.y" + case 510: /* server_ipsecmod_strict: VAR_IPSECMOD_STRICT STRING_ARG */ +#line 2638 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); @@ -5685,11 +5721,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5689 "util/configparser.c" +#line 5725 "util/configparser.c" break; - case 507: /* server_edns_client_string: VAR_EDNS_CLIENT_STRING STRING_ARG STRING_ARG */ -#line 2634 "./util/configparser.y" + case 511: /* server_edns_client_string: VAR_EDNS_CLIENT_STRING STRING_ARG STRING_ARG */ +#line 2652 "./util/configparser.y" { OUTYY(("P(server_edns_client_string:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert( @@ -5697,11 +5733,11 @@ yyreduce: fatal_exit("out of memory adding " "edns-client-string"); } -#line 5701 "util/configparser.c" +#line 5737 "util/configparser.c" break; - case 508: /* server_edns_client_string_opcode: VAR_EDNS_CLIENT_STRING_OPCODE STRING_ARG */ -#line 2643 "./util/configparser.y" + case 512: /* server_edns_client_string_opcode: VAR_EDNS_CLIENT_STRING_OPCODE STRING_ARG */ +#line 2661 "./util/configparser.y" { OUTYY(("P(edns_client_string_opcode:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5712,11 +5748,11 @@ yyreduce: free((yyvsp[0].str)); } -#line 5716 "util/configparser.c" +#line 5752 "util/configparser.c" break; - case 509: /* stub_name: VAR_NAME STRING_ARG */ -#line 2655 "./util/configparser.y" + case 513: /* stub_name: VAR_NAME STRING_ARG */ +#line 2673 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) @@ -5725,31 +5761,31 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 5729 "util/configparser.c" +#line 5765 "util/configparser.c" break; - case 510: /* stub_host: VAR_STUB_HOST STRING_ARG */ -#line 2665 "./util/configparser.y" + case 514: /* stub_host: VAR_STUB_HOST STRING_ARG */ +#line 2683 "./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 5739 "util/configparser.c" +#line 5775 "util/configparser.c" break; - case 511: /* stub_addr: VAR_STUB_ADDR STRING_ARG */ -#line 2672 "./util/configparser.y" + case 515: /* stub_addr: VAR_STUB_ADDR STRING_ARG */ +#line 2690 "./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 5749 "util/configparser.c" +#line 5785 "util/configparser.c" break; - case 512: /* stub_first: VAR_STUB_FIRST STRING_ARG */ -#line 2679 "./util/configparser.y" + case 516: /* stub_first: VAR_STUB_FIRST STRING_ARG */ +#line 2697 "./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) @@ -5757,11 +5793,11 @@ yyreduce: else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5761 "util/configparser.c" +#line 5797 "util/configparser.c" break; - case 513: /* stub_no_cache: VAR_STUB_NO_CACHE STRING_ARG */ -#line 2688 "./util/configparser.y" + case 517: /* stub_no_cache: VAR_STUB_NO_CACHE STRING_ARG */ +#line 2706 "./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) @@ -5769,11 +5805,11 @@ yyreduce: else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5773 "util/configparser.c" +#line 5809 "util/configparser.c" break; - case 514: /* stub_ssl_upstream: VAR_STUB_SSL_UPSTREAM STRING_ARG */ -#line 2697 "./util/configparser.y" + case 518: /* stub_ssl_upstream: VAR_STUB_SSL_UPSTREAM STRING_ARG */ +#line 2715 "./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) @@ -5782,11 +5818,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5786 "util/configparser.c" +#line 5822 "util/configparser.c" break; - case 515: /* stub_prime: VAR_STUB_PRIME STRING_ARG */ -#line 2707 "./util/configparser.y" + case 519: /* stub_prime: VAR_STUB_PRIME STRING_ARG */ +#line 2725 "./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) @@ -5795,11 +5831,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5799 "util/configparser.c" +#line 5835 "util/configparser.c" break; - case 516: /* forward_name: VAR_NAME STRING_ARG */ -#line 2717 "./util/configparser.y" + case 520: /* forward_name: VAR_NAME STRING_ARG */ +#line 2735 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) @@ -5808,31 +5844,31 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 5812 "util/configparser.c" +#line 5848 "util/configparser.c" break; - case 517: /* forward_host: VAR_FORWARD_HOST STRING_ARG */ -#line 2727 "./util/configparser.y" + case 521: /* forward_host: VAR_FORWARD_HOST STRING_ARG */ +#line 2745 "./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 5822 "util/configparser.c" +#line 5858 "util/configparser.c" break; - case 518: /* forward_addr: VAR_FORWARD_ADDR STRING_ARG */ -#line 2734 "./util/configparser.y" + case 522: /* forward_addr: VAR_FORWARD_ADDR STRING_ARG */ +#line 2752 "./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 5832 "util/configparser.c" +#line 5868 "util/configparser.c" break; - case 519: /* forward_first: VAR_FORWARD_FIRST STRING_ARG */ -#line 2741 "./util/configparser.y" + case 523: /* forward_first: VAR_FORWARD_FIRST STRING_ARG */ +#line 2759 "./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) @@ -5840,11 +5876,11 @@ yyreduce: else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5844 "util/configparser.c" +#line 5880 "util/configparser.c" break; - case 520: /* forward_no_cache: VAR_FORWARD_NO_CACHE STRING_ARG */ -#line 2750 "./util/configparser.y" + case 524: /* forward_no_cache: VAR_FORWARD_NO_CACHE STRING_ARG */ +#line 2768 "./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) @@ -5852,11 +5888,11 @@ yyreduce: else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5856 "util/configparser.c" +#line 5892 "util/configparser.c" break; - case 521: /* forward_ssl_upstream: VAR_FORWARD_SSL_UPSTREAM STRING_ARG */ -#line 2759 "./util/configparser.y" + case 525: /* forward_ssl_upstream: VAR_FORWARD_SSL_UPSTREAM STRING_ARG */ +#line 2777 "./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) @@ -5865,11 +5901,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5869 "util/configparser.c" +#line 5905 "util/configparser.c" break; - case 522: /* auth_name: VAR_NAME STRING_ARG */ -#line 2769 "./util/configparser.y" + case 526: /* auth_name: VAR_NAME STRING_ARG */ +#line 2787 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) @@ -5878,52 +5914,52 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 5882 "util/configparser.c" +#line 5918 "util/configparser.c" break; - case 523: /* auth_zonefile: VAR_ZONEFILE STRING_ARG */ -#line 2779 "./util/configparser.y" + case 527: /* auth_zonefile: VAR_ZONEFILE STRING_ARG */ +#line 2797 "./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 5892 "util/configparser.c" +#line 5928 "util/configparser.c" break; - case 524: /* auth_master: VAR_MASTER STRING_ARG */ -#line 2786 "./util/configparser.y" + case 528: /* auth_master: VAR_MASTER STRING_ARG */ +#line 2804 "./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 5902 "util/configparser.c" +#line 5938 "util/configparser.c" break; - case 525: /* auth_url: VAR_URL STRING_ARG */ -#line 2793 "./util/configparser.y" + case 529: /* auth_url: VAR_URL STRING_ARG */ +#line 2811 "./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 5912 "util/configparser.c" +#line 5948 "util/configparser.c" break; - case 526: /* auth_allow_notify: VAR_ALLOW_NOTIFY STRING_ARG */ -#line 2800 "./util/configparser.y" + case 530: /* auth_allow_notify: VAR_ALLOW_NOTIFY STRING_ARG */ +#line 2818 "./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 5923 "util/configparser.c" +#line 5959 "util/configparser.c" break; - case 527: /* auth_zonemd_check: VAR_ZONEMD_CHECK STRING_ARG */ -#line 2808 "./util/configparser.y" + case 531: /* auth_zonemd_check: VAR_ZONEMD_CHECK STRING_ARG */ +#line 2826 "./util/configparser.y" { OUTYY(("P(zonemd-check:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5932,11 +5968,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5936 "util/configparser.c" +#line 5972 "util/configparser.c" break; - case 528: /* auth_zonemd_reject_absence: VAR_ZONEMD_REJECT_ABSENCE STRING_ARG */ -#line 2818 "./util/configparser.y" + case 532: /* auth_zonemd_reject_absence: VAR_ZONEMD_REJECT_ABSENCE STRING_ARG */ +#line 2836 "./util/configparser.y" { OUTYY(("P(zonemd-reject-absence:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5945,11 +5981,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5949 "util/configparser.c" +#line 5985 "util/configparser.c" break; - case 529: /* auth_for_downstream: VAR_FOR_DOWNSTREAM STRING_ARG */ -#line 2828 "./util/configparser.y" + case 533: /* auth_for_downstream: VAR_FOR_DOWNSTREAM STRING_ARG */ +#line 2846 "./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) @@ -5958,11 +5994,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5962 "util/configparser.c" +#line 5998 "util/configparser.c" break; - case 530: /* auth_for_upstream: VAR_FOR_UPSTREAM STRING_ARG */ -#line 2838 "./util/configparser.y" + case 534: /* auth_for_upstream: VAR_FOR_UPSTREAM STRING_ARG */ +#line 2856 "./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) @@ -5971,11 +6007,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5975 "util/configparser.c" +#line 6011 "util/configparser.c" break; - case 531: /* auth_fallback_enabled: VAR_FALLBACK_ENABLED STRING_ARG */ -#line 2848 "./util/configparser.y" + case 535: /* auth_fallback_enabled: VAR_FALLBACK_ENABLED STRING_ARG */ +#line 2866 "./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) @@ -5984,11 +6020,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5988 "util/configparser.c" +#line 6024 "util/configparser.c" break; - case 532: /* view_name: VAR_NAME STRING_ARG */ -#line 2858 "./util/configparser.y" + case 536: /* view_name: VAR_NAME STRING_ARG */ +#line 2876 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) @@ -5997,11 +6033,11 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 6001 "util/configparser.c" +#line 6037 "util/configparser.c" break; - case 533: /* view_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */ -#line 2868 "./util/configparser.y" + case 537: /* view_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */ +#line 2886 "./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 && @@ -6046,11 +6082,11 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 6050 "util/configparser.c" +#line 6086 "util/configparser.c" break; - case 534: /* view_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ -#line 2914 "./util/configparser.y" + case 538: /* view_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ +#line 2932 "./util/configparser.y" { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -6059,33 +6095,33 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 6063 "util/configparser.c" +#line 6099 "util/configparser.c" break; - case 535: /* view_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ -#line 2924 "./util/configparser.y" + case 539: /* view_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ +#line 2942 "./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 6074 "util/configparser.c" +#line 6110 "util/configparser.c" break; - case 536: /* view_local_data: VAR_LOCAL_DATA STRING_ARG */ -#line 2932 "./util/configparser.y" + case 540: /* view_local_data: VAR_LOCAL_DATA STRING_ARG */ +#line 2950 "./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 6085 "util/configparser.c" +#line 6121 "util/configparser.c" break; - case 537: /* view_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ -#line 2940 "./util/configparser.y" + case 541: /* view_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ +#line 2958 "./util/configparser.y" { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -6099,11 +6135,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 6103 "util/configparser.c" +#line 6139 "util/configparser.c" break; - case 538: /* view_first: VAR_VIEW_FIRST STRING_ARG */ -#line 2955 "./util/configparser.y" + case 542: /* view_first: VAR_VIEW_FIRST STRING_ARG */ +#line 2973 "./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) @@ -6111,19 +6147,19 @@ yyreduce: else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6115 "util/configparser.c" +#line 6151 "util/configparser.c" break; - case 539: /* rcstart: VAR_REMOTE_CONTROL */ -#line 2964 "./util/configparser.y" + case 543: /* rcstart: VAR_REMOTE_CONTROL */ +#line 2982 "./util/configparser.y" { OUTYY(("\nP(remote-control:)\n")); } -#line 6123 "util/configparser.c" +#line 6159 "util/configparser.c" break; - case 550: /* rc_control_enable: VAR_CONTROL_ENABLE STRING_ARG */ -#line 2975 "./util/configparser.y" + case 554: /* rc_control_enable: VAR_CONTROL_ENABLE STRING_ARG */ +#line 2993 "./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) @@ -6132,11 +6168,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6136 "util/configparser.c" +#line 6172 "util/configparser.c" break; - case 551: /* rc_control_port: VAR_CONTROL_PORT STRING_ARG */ -#line 2985 "./util/configparser.y" + case 555: /* rc_control_port: VAR_CONTROL_PORT STRING_ARG */ +#line 3003 "./util/configparser.y" { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6144,79 +6180,79 @@ yyreduce: else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6148 "util/configparser.c" +#line 6184 "util/configparser.c" break; - case 552: /* rc_control_interface: VAR_CONTROL_INTERFACE STRING_ARG */ -#line 2994 "./util/configparser.y" + case 556: /* rc_control_interface: VAR_CONTROL_INTERFACE STRING_ARG */ +#line 3012 "./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 6158 "util/configparser.c" +#line 6194 "util/configparser.c" break; - case 553: /* rc_control_use_cert: VAR_CONTROL_USE_CERT STRING_ARG */ -#line 3001 "./util/configparser.y" + case 557: /* rc_control_use_cert: VAR_CONTROL_USE_CERT STRING_ARG */ +#line 3019 "./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 6168 "util/configparser.c" +#line 6204 "util/configparser.c" break; - case 554: /* rc_server_key_file: VAR_SERVER_KEY_FILE STRING_ARG */ -#line 3008 "./util/configparser.y" + case 558: /* rc_server_key_file: VAR_SERVER_KEY_FILE STRING_ARG */ +#line 3026 "./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 6178 "util/configparser.c" +#line 6214 "util/configparser.c" break; - case 555: /* rc_server_cert_file: VAR_SERVER_CERT_FILE STRING_ARG */ -#line 3015 "./util/configparser.y" + case 559: /* rc_server_cert_file: VAR_SERVER_CERT_FILE STRING_ARG */ +#line 3033 "./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 6188 "util/configparser.c" +#line 6224 "util/configparser.c" break; - case 556: /* rc_control_key_file: VAR_CONTROL_KEY_FILE STRING_ARG */ -#line 3022 "./util/configparser.y" + case 560: /* rc_control_key_file: VAR_CONTROL_KEY_FILE STRING_ARG */ +#line 3040 "./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 6198 "util/configparser.c" +#line 6234 "util/configparser.c" break; - case 557: /* rc_control_cert_file: VAR_CONTROL_CERT_FILE STRING_ARG */ -#line 3029 "./util/configparser.y" + case 561: /* rc_control_cert_file: VAR_CONTROL_CERT_FILE STRING_ARG */ +#line 3047 "./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 6208 "util/configparser.c" +#line 6244 "util/configparser.c" break; - case 558: /* dtstart: VAR_DNSTAP */ -#line 3036 "./util/configparser.y" + case 562: /* dtstart: VAR_DNSTAP */ +#line 3054 "./util/configparser.y" { OUTYY(("\nP(dnstap:)\n")); } -#line 6216 "util/configparser.c" +#line 6252 "util/configparser.c" break; - case 580: /* dt_dnstap_enable: VAR_DNSTAP_ENABLE STRING_ARG */ -#line 3056 "./util/configparser.y" + case 584: /* dt_dnstap_enable: VAR_DNSTAP_ENABLE STRING_ARG */ +#line 3074 "./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) @@ -6224,11 +6260,11 @@ yyreduce: else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6228 "util/configparser.c" +#line 6264 "util/configparser.c" break; - case 581: /* dt_dnstap_bidirectional: VAR_DNSTAP_BIDIRECTIONAL STRING_ARG */ -#line 3065 "./util/configparser.y" + case 585: /* dt_dnstap_bidirectional: VAR_DNSTAP_BIDIRECTIONAL STRING_ARG */ +#line 3083 "./util/configparser.y" { OUTYY(("P(dt_dnstap_bidirectional:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6237,31 +6273,31 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6241 "util/configparser.c" +#line 6277 "util/configparser.c" break; - case 582: /* dt_dnstap_socket_path: VAR_DNSTAP_SOCKET_PATH STRING_ARG */ -#line 3075 "./util/configparser.y" + case 586: /* dt_dnstap_socket_path: VAR_DNSTAP_SOCKET_PATH STRING_ARG */ +#line 3093 "./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 6251 "util/configparser.c" +#line 6287 "util/configparser.c" break; - case 583: /* dt_dnstap_ip: VAR_DNSTAP_IP STRING_ARG */ -#line 3082 "./util/configparser.y" + case 587: /* dt_dnstap_ip: VAR_DNSTAP_IP STRING_ARG */ +#line 3100 "./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 6261 "util/configparser.c" +#line 6297 "util/configparser.c" break; - case 584: /* dt_dnstap_tls: VAR_DNSTAP_TLS STRING_ARG */ -#line 3089 "./util/configparser.y" + case 588: /* dt_dnstap_tls: VAR_DNSTAP_TLS STRING_ARG */ +#line 3107 "./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) @@ -6269,51 +6305,51 @@ yyreduce: else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6273 "util/configparser.c" +#line 6309 "util/configparser.c" break; - case 585: /* dt_dnstap_tls_server_name: VAR_DNSTAP_TLS_SERVER_NAME STRING_ARG */ -#line 3098 "./util/configparser.y" + case 589: /* dt_dnstap_tls_server_name: VAR_DNSTAP_TLS_SERVER_NAME STRING_ARG */ +#line 3116 "./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 6283 "util/configparser.c" +#line 6319 "util/configparser.c" break; - case 586: /* dt_dnstap_tls_cert_bundle: VAR_DNSTAP_TLS_CERT_BUNDLE STRING_ARG */ -#line 3105 "./util/configparser.y" + case 590: /* dt_dnstap_tls_cert_bundle: VAR_DNSTAP_TLS_CERT_BUNDLE STRING_ARG */ +#line 3123 "./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 6293 "util/configparser.c" +#line 6329 "util/configparser.c" break; - case 587: /* dt_dnstap_tls_client_key_file: VAR_DNSTAP_TLS_CLIENT_KEY_FILE STRING_ARG */ -#line 3112 "./util/configparser.y" + case 591: /* dt_dnstap_tls_client_key_file: VAR_DNSTAP_TLS_CLIENT_KEY_FILE STRING_ARG */ +#line 3130 "./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 6303 "util/configparser.c" +#line 6339 "util/configparser.c" break; - case 588: /* dt_dnstap_tls_client_cert_file: VAR_DNSTAP_TLS_CLIENT_CERT_FILE STRING_ARG */ -#line 3119 "./util/configparser.y" + case 592: /* dt_dnstap_tls_client_cert_file: VAR_DNSTAP_TLS_CLIENT_CERT_FILE STRING_ARG */ +#line 3137 "./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 6313 "util/configparser.c" +#line 6349 "util/configparser.c" break; - case 589: /* dt_dnstap_send_identity: VAR_DNSTAP_SEND_IDENTITY STRING_ARG */ -#line 3126 "./util/configparser.y" + case 593: /* dt_dnstap_send_identity: VAR_DNSTAP_SEND_IDENTITY STRING_ARG */ +#line 3144 "./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) @@ -6321,11 +6357,11 @@ yyreduce: else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6325 "util/configparser.c" +#line 6361 "util/configparser.c" break; - case 590: /* dt_dnstap_send_version: VAR_DNSTAP_SEND_VERSION STRING_ARG */ -#line 3135 "./util/configparser.y" + case 594: /* dt_dnstap_send_version: VAR_DNSTAP_SEND_VERSION STRING_ARG */ +#line 3153 "./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) @@ -6333,31 +6369,31 @@ yyreduce: else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6337 "util/configparser.c" +#line 6373 "util/configparser.c" break; - case 591: /* dt_dnstap_identity: VAR_DNSTAP_IDENTITY STRING_ARG */ -#line 3144 "./util/configparser.y" + case 595: /* dt_dnstap_identity: VAR_DNSTAP_IDENTITY STRING_ARG */ +#line 3162 "./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 6347 "util/configparser.c" +#line 6383 "util/configparser.c" break; - case 592: /* dt_dnstap_version: VAR_DNSTAP_VERSION STRING_ARG */ -#line 3151 "./util/configparser.y" + case 596: /* dt_dnstap_version: VAR_DNSTAP_VERSION STRING_ARG */ +#line 3169 "./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 6357 "util/configparser.c" +#line 6393 "util/configparser.c" break; - case 593: /* dt_dnstap_log_resolver_query_messages: VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES STRING_ARG */ -#line 3158 "./util/configparser.y" + case 597: /* dt_dnstap_log_resolver_query_messages: VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES STRING_ARG */ +#line 3176 "./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) @@ -6366,11 +6402,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6370 "util/configparser.c" +#line 6406 "util/configparser.c" break; - case 594: /* dt_dnstap_log_resolver_response_messages: VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES STRING_ARG */ -#line 3168 "./util/configparser.y" + case 598: /* dt_dnstap_log_resolver_response_messages: VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES STRING_ARG */ +#line 3186 "./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) @@ -6379,11 +6415,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6383 "util/configparser.c" +#line 6419 "util/configparser.c" break; - case 595: /* dt_dnstap_log_client_query_messages: VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES STRING_ARG */ -#line 3178 "./util/configparser.y" + case 599: /* dt_dnstap_log_client_query_messages: VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES STRING_ARG */ +#line 3196 "./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) @@ -6392,11 +6428,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6396 "util/configparser.c" +#line 6432 "util/configparser.c" break; - case 596: /* dt_dnstap_log_client_response_messages: VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES STRING_ARG */ -#line 3188 "./util/configparser.y" + case 600: /* dt_dnstap_log_client_response_messages: VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES STRING_ARG */ +#line 3206 "./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) @@ -6405,11 +6441,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6409 "util/configparser.c" +#line 6445 "util/configparser.c" break; - case 597: /* dt_dnstap_log_forwarder_query_messages: VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES STRING_ARG */ -#line 3198 "./util/configparser.y" + case 601: /* dt_dnstap_log_forwarder_query_messages: VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES STRING_ARG */ +#line 3216 "./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) @@ -6418,11 +6454,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6422 "util/configparser.c" +#line 6458 "util/configparser.c" break; - case 598: /* dt_dnstap_log_forwarder_response_messages: VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES STRING_ARG */ -#line 3208 "./util/configparser.y" + case 602: /* dt_dnstap_log_forwarder_response_messages: VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES STRING_ARG */ +#line 3226 "./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) @@ -6431,47 +6467,47 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6435 "util/configparser.c" +#line 6471 "util/configparser.c" break; - case 599: /* pythonstart: VAR_PYTHON */ -#line 3218 "./util/configparser.y" + case 603: /* pythonstart: VAR_PYTHON */ +#line 3236 "./util/configparser.y" { OUTYY(("\nP(python:)\n")); } -#line 6443 "util/configparser.c" +#line 6479 "util/configparser.c" break; - case 603: /* py_script: VAR_PYTHON_SCRIPT STRING_ARG */ -#line 3227 "./util/configparser.y" + case 607: /* py_script: VAR_PYTHON_SCRIPT STRING_ARG */ +#line 3245 "./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 6453 "util/configparser.c" +#line 6489 "util/configparser.c" break; - case 604: /* dynlibstart: VAR_DYNLIB */ -#line 3233 "./util/configparser.y" + case 608: /* dynlibstart: VAR_DYNLIB */ +#line 3251 "./util/configparser.y" { OUTYY(("\nP(dynlib:)\n")); } -#line 6461 "util/configparser.c" +#line 6497 "util/configparser.c" break; - case 608: /* dl_file: VAR_DYNLIB_FILE STRING_ARG */ -#line 3242 "./util/configparser.y" + case 612: /* dl_file: VAR_DYNLIB_FILE STRING_ARG */ +#line 3260 "./util/configparser.y" { OUTYY(("P(dynlib-file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6471 "util/configparser.c" +#line 6507 "util/configparser.c" break; - case 609: /* server_disable_dnssec_lame_check: VAR_DISABLE_DNSSEC_LAME_CHECK STRING_ARG */ -#line 3248 "./util/configparser.y" + case 613: /* server_disable_dnssec_lame_check: VAR_DISABLE_DNSSEC_LAME_CHECK STRING_ARG */ +#line 3266 "./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) @@ -6480,21 +6516,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6484 "util/configparser.c" +#line 6520 "util/configparser.c" break; - case 610: /* server_log_identity: VAR_LOG_IDENTITY STRING_ARG */ -#line 3258 "./util/configparser.y" + case 614: /* server_log_identity: VAR_LOG_IDENTITY STRING_ARG */ +#line 3276 "./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 6494 "util/configparser.c" +#line 6530 "util/configparser.c" break; - case 611: /* server_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ -#line 3265 "./util/configparser.y" + case 615: /* server_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ +#line 3283 "./util/configparser.y" { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -6502,30 +6538,30 @@ yyreduce: (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 6506 "util/configparser.c" +#line 6542 "util/configparser.c" break; - case 612: /* server_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ -#line 3274 "./util/configparser.y" + case 616: /* server_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ +#line 3292 "./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 6517 "util/configparser.c" +#line 6553 "util/configparser.c" break; - case 613: /* dnscstart: VAR_DNSCRYPT */ -#line 3282 "./util/configparser.y" + case 617: /* dnscstart: VAR_DNSCRYPT */ +#line 3300 "./util/configparser.y" { OUTYY(("\nP(dnscrypt:)\n")); } -#line 6525 "util/configparser.c" +#line 6561 "util/configparser.c" break; - case 626: /* dnsc_dnscrypt_enable: VAR_DNSCRYPT_ENABLE STRING_ARG */ -#line 3298 "./util/configparser.y" + case 630: /* dnsc_dnscrypt_enable: VAR_DNSCRYPT_ENABLE STRING_ARG */ +#line 3316 "./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) @@ -6533,11 +6569,11 @@ yyreduce: else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6537 "util/configparser.c" +#line 6573 "util/configparser.c" break; - case 627: /* dnsc_dnscrypt_port: VAR_DNSCRYPT_PORT STRING_ARG */ -#line 3308 "./util/configparser.y" + case 631: /* dnsc_dnscrypt_port: VAR_DNSCRYPT_PORT STRING_ARG */ +#line 3326 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6545,21 +6581,21 @@ yyreduce: else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6549 "util/configparser.c" +#line 6585 "util/configparser.c" break; - case 628: /* dnsc_dnscrypt_provider: VAR_DNSCRYPT_PROVIDER STRING_ARG */ -#line 3317 "./util/configparser.y" + case 632: /* dnsc_dnscrypt_provider: VAR_DNSCRYPT_PROVIDER STRING_ARG */ +#line 3335 "./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 6559 "util/configparser.c" +#line 6595 "util/configparser.c" break; - case 629: /* dnsc_dnscrypt_provider_cert: VAR_DNSCRYPT_PROVIDER_CERT STRING_ARG */ -#line 3324 "./util/configparser.y" + case 633: /* dnsc_dnscrypt_provider_cert: VAR_DNSCRYPT_PROVIDER_CERT STRING_ARG */ +#line 3342 "./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))) @@ -6567,21 +6603,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 6571 "util/configparser.c" +#line 6607 "util/configparser.c" break; - case 630: /* dnsc_dnscrypt_provider_cert_rotated: VAR_DNSCRYPT_PROVIDER_CERT_ROTATED STRING_ARG */ -#line 3333 "./util/configparser.y" + case 634: /* dnsc_dnscrypt_provider_cert_rotated: VAR_DNSCRYPT_PROVIDER_CERT_ROTATED STRING_ARG */ +#line 3351 "./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 6581 "util/configparser.c" +#line 6617 "util/configparser.c" break; - case 631: /* dnsc_dnscrypt_secret_key: VAR_DNSCRYPT_SECRET_KEY STRING_ARG */ -#line 3340 "./util/configparser.y" + case 635: /* dnsc_dnscrypt_secret_key: VAR_DNSCRYPT_SECRET_KEY STRING_ARG */ +#line 3358 "./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))) @@ -6589,22 +6625,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 6593 "util/configparser.c" +#line 6629 "util/configparser.c" break; - case 632: /* dnsc_dnscrypt_shared_secret_cache_size: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE STRING_ARG */ -#line 3349 "./util/configparser.y" + case 636: /* dnsc_dnscrypt_shared_secret_cache_size: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE STRING_ARG */ +#line 3367 "./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 6604 "util/configparser.c" +#line 6640 "util/configparser.c" break; - case 633: /* dnsc_dnscrypt_shared_secret_cache_slabs: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS STRING_ARG */ -#line 3357 "./util/configparser.y" + case 637: /* dnsc_dnscrypt_shared_secret_cache_slabs: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS STRING_ARG */ +#line 3375 "./util/configparser.y" { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6616,22 +6652,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6620 "util/configparser.c" +#line 6656 "util/configparser.c" break; - case 634: /* dnsc_dnscrypt_nonce_cache_size: VAR_DNSCRYPT_NONCE_CACHE_SIZE STRING_ARG */ -#line 3370 "./util/configparser.y" + case 638: /* dnsc_dnscrypt_nonce_cache_size: VAR_DNSCRYPT_NONCE_CACHE_SIZE STRING_ARG */ +#line 3388 "./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 6631 "util/configparser.c" +#line 6667 "util/configparser.c" break; - case 635: /* dnsc_dnscrypt_nonce_cache_slabs: VAR_DNSCRYPT_NONCE_CACHE_SLABS STRING_ARG */ -#line 3378 "./util/configparser.y" + case 639: /* dnsc_dnscrypt_nonce_cache_slabs: VAR_DNSCRYPT_NONCE_CACHE_SLABS STRING_ARG */ +#line 3396 "./util/configparser.y" { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6643,19 +6679,19 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6647 "util/configparser.c" +#line 6683 "util/configparser.c" break; - case 636: /* cachedbstart: VAR_CACHEDB */ -#line 3391 "./util/configparser.y" + case 640: /* cachedbstart: VAR_CACHEDB */ +#line 3409 "./util/configparser.y" { OUTYY(("\nP(cachedb:)\n")); } -#line 6655 "util/configparser.c" +#line 6691 "util/configparser.c" break; - case 645: /* cachedb_backend_name: VAR_CACHEDB_BACKEND STRING_ARG */ -#line 3402 "./util/configparser.y" + case 649: /* cachedb_backend_name: VAR_CACHEDB_BACKEND STRING_ARG */ +#line 3420 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); @@ -6666,11 +6702,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6670 "util/configparser.c" +#line 6706 "util/configparser.c" break; - case 646: /* cachedb_secret_seed: VAR_CACHEDB_SECRETSEED STRING_ARG */ -#line 3414 "./util/configparser.y" + case 650: /* cachedb_secret_seed: VAR_CACHEDB_SECRETSEED STRING_ARG */ +#line 3432 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); @@ -6681,11 +6717,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6685 "util/configparser.c" +#line 6721 "util/configparser.c" break; - case 647: /* redis_server_host: VAR_CACHEDB_REDISHOST STRING_ARG */ -#line 3426 "./util/configparser.y" + case 651: /* redis_server_host: VAR_CACHEDB_REDISHOST STRING_ARG */ +#line 3444 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); @@ -6696,11 +6732,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6700 "util/configparser.c" +#line 6736 "util/configparser.c" break; - case 648: /* redis_server_port: VAR_CACHEDB_REDISPORT STRING_ARG */ -#line 3438 "./util/configparser.y" + case 652: /* redis_server_port: VAR_CACHEDB_REDISPORT STRING_ARG */ +#line 3456 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; @@ -6714,11 +6750,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6718 "util/configparser.c" +#line 6754 "util/configparser.c" break; - case 649: /* redis_timeout: VAR_CACHEDB_REDISTIMEOUT STRING_ARG */ -#line 3453 "./util/configparser.y" + case 653: /* redis_timeout: VAR_CACHEDB_REDISTIMEOUT STRING_ARG */ +#line 3471 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); @@ -6730,11 +6766,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6734 "util/configparser.c" +#line 6770 "util/configparser.c" break; - case 650: /* redis_expire_records: VAR_CACHEDB_REDISEXPIRERECORDS STRING_ARG */ -#line 3466 "./util/configparser.y" + case 654: /* redis_expire_records: VAR_CACHEDB_REDISEXPIRERECORDS STRING_ARG */ +#line 3484 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str))); @@ -6746,11 +6782,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6750 "util/configparser.c" +#line 6786 "util/configparser.c" break; - case 651: /* server_tcp_connection_limit: VAR_TCP_CONNECTION_LIMIT STRING_ARG STRING_ARG */ -#line 3479 "./util/configparser.y" + case 655: /* server_tcp_connection_limit: VAR_TCP_CONNECTION_LIMIT STRING_ARG STRING_ARG */ +#line 3497 "./util/configparser.y" { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) @@ -6760,19 +6796,19 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 6764 "util/configparser.c" +#line 6800 "util/configparser.c" break; - case 652: /* ipsetstart: VAR_IPSET */ -#line 3490 "./util/configparser.y" + case 656: /* ipsetstart: VAR_IPSET */ +#line 3508 "./util/configparser.y" { OUTYY(("\nP(ipset:)\n")); } -#line 6772 "util/configparser.c" +#line 6808 "util/configparser.c" break; - case 657: /* ipset_name_v4: VAR_IPSET_NAME_V4 STRING_ARG */ -#line 3499 "./util/configparser.y" + case 661: /* ipset_name_v4: VAR_IPSET_NAME_V4 STRING_ARG */ +#line 3517 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); @@ -6786,11 +6822,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6790 "util/configparser.c" +#line 6826 "util/configparser.c" break; - case 658: /* ipset_name_v6: VAR_IPSET_NAME_V6 STRING_ARG */ -#line 3514 "./util/configparser.y" + case 662: /* ipset_name_v6: VAR_IPSET_NAME_V6 STRING_ARG */ +#line 3532 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); @@ -6804,11 +6840,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6808 "util/configparser.c" +#line 6844 "util/configparser.c" break; -#line 6812 "util/configparser.c" +#line 6848 "util/configparser.c" default: break; } @@ -7002,7 +7038,7 @@ yyreturn: return yyresult; } -#line 3528 "./util/configparser.y" +#line 3546 "./util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index 81766639a..721a02414 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -289,84 +289,86 @@ extern int yydebug; VAR_FAKE_SHA1 = 490, /* VAR_FAKE_SHA1 */ VAR_LOG_IDENTITY = 491, /* VAR_LOG_IDENTITY */ VAR_HIDE_TRUSTANCHOR = 492, /* VAR_HIDE_TRUSTANCHOR */ - VAR_TRUST_ANCHOR_SIGNALING = 493, /* VAR_TRUST_ANCHOR_SIGNALING */ - VAR_AGGRESSIVE_NSEC = 494, /* VAR_AGGRESSIVE_NSEC */ - VAR_USE_SYSTEMD = 495, /* VAR_USE_SYSTEMD */ - VAR_SHM_ENABLE = 496, /* VAR_SHM_ENABLE */ - VAR_SHM_KEY = 497, /* VAR_SHM_KEY */ - VAR_ROOT_KEY_SENTINEL = 498, /* VAR_ROOT_KEY_SENTINEL */ - VAR_DNSCRYPT = 499, /* VAR_DNSCRYPT */ - VAR_DNSCRYPT_ENABLE = 500, /* VAR_DNSCRYPT_ENABLE */ - VAR_DNSCRYPT_PORT = 501, /* VAR_DNSCRYPT_PORT */ - VAR_DNSCRYPT_PROVIDER = 502, /* VAR_DNSCRYPT_PROVIDER */ - VAR_DNSCRYPT_SECRET_KEY = 503, /* VAR_DNSCRYPT_SECRET_KEY */ - VAR_DNSCRYPT_PROVIDER_CERT = 504, /* VAR_DNSCRYPT_PROVIDER_CERT */ - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 505, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 506, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 507, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 508, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 509, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ - VAR_PAD_RESPONSES = 510, /* VAR_PAD_RESPONSES */ - VAR_PAD_RESPONSES_BLOCK_SIZE = 511, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ - VAR_PAD_QUERIES = 512, /* VAR_PAD_QUERIES */ - VAR_PAD_QUERIES_BLOCK_SIZE = 513, /* VAR_PAD_QUERIES_BLOCK_SIZE */ - VAR_IPSECMOD_ENABLED = 514, /* VAR_IPSECMOD_ENABLED */ - VAR_IPSECMOD_HOOK = 515, /* VAR_IPSECMOD_HOOK */ - VAR_IPSECMOD_IGNORE_BOGUS = 516, /* VAR_IPSECMOD_IGNORE_BOGUS */ - VAR_IPSECMOD_MAX_TTL = 517, /* VAR_IPSECMOD_MAX_TTL */ - VAR_IPSECMOD_WHITELIST = 518, /* VAR_IPSECMOD_WHITELIST */ - VAR_IPSECMOD_STRICT = 519, /* VAR_IPSECMOD_STRICT */ - VAR_CACHEDB = 520, /* VAR_CACHEDB */ - VAR_CACHEDB_BACKEND = 521, /* VAR_CACHEDB_BACKEND */ - VAR_CACHEDB_SECRETSEED = 522, /* VAR_CACHEDB_SECRETSEED */ - VAR_CACHEDB_REDISHOST = 523, /* VAR_CACHEDB_REDISHOST */ - VAR_CACHEDB_REDISPORT = 524, /* VAR_CACHEDB_REDISPORT */ - VAR_CACHEDB_REDISTIMEOUT = 525, /* VAR_CACHEDB_REDISTIMEOUT */ - VAR_CACHEDB_REDISEXPIRERECORDS = 526, /* VAR_CACHEDB_REDISEXPIRERECORDS */ - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 527, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ - VAR_FOR_UPSTREAM = 528, /* VAR_FOR_UPSTREAM */ - VAR_AUTH_ZONE = 529, /* VAR_AUTH_ZONE */ - VAR_ZONEFILE = 530, /* VAR_ZONEFILE */ - VAR_MASTER = 531, /* VAR_MASTER */ - VAR_URL = 532, /* VAR_URL */ - VAR_FOR_DOWNSTREAM = 533, /* VAR_FOR_DOWNSTREAM */ - VAR_FALLBACK_ENABLED = 534, /* VAR_FALLBACK_ENABLED */ - VAR_TLS_ADDITIONAL_PORT = 535, /* VAR_TLS_ADDITIONAL_PORT */ - VAR_LOW_RTT = 536, /* VAR_LOW_RTT */ - VAR_LOW_RTT_PERMIL = 537, /* VAR_LOW_RTT_PERMIL */ - VAR_FAST_SERVER_PERMIL = 538, /* VAR_FAST_SERVER_PERMIL */ - VAR_FAST_SERVER_NUM = 539, /* VAR_FAST_SERVER_NUM */ - VAR_ALLOW_NOTIFY = 540, /* VAR_ALLOW_NOTIFY */ - VAR_TLS_WIN_CERT = 541, /* VAR_TLS_WIN_CERT */ - VAR_TCP_CONNECTION_LIMIT = 542, /* VAR_TCP_CONNECTION_LIMIT */ - VAR_FORWARD_NO_CACHE = 543, /* VAR_FORWARD_NO_CACHE */ - VAR_STUB_NO_CACHE = 544, /* VAR_STUB_NO_CACHE */ - VAR_LOG_SERVFAIL = 545, /* VAR_LOG_SERVFAIL */ - VAR_DENY_ANY = 546, /* VAR_DENY_ANY */ - VAR_UNKNOWN_SERVER_TIME_LIMIT = 547, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ - VAR_LOG_TAG_QUERYREPLY = 548, /* VAR_LOG_TAG_QUERYREPLY */ - VAR_STREAM_WAIT_SIZE = 549, /* VAR_STREAM_WAIT_SIZE */ - VAR_TLS_CIPHERS = 550, /* VAR_TLS_CIPHERS */ - VAR_TLS_CIPHERSUITES = 551, /* VAR_TLS_CIPHERSUITES */ - VAR_TLS_USE_SNI = 552, /* VAR_TLS_USE_SNI */ - VAR_IPSET = 553, /* VAR_IPSET */ - VAR_IPSET_NAME_V4 = 554, /* VAR_IPSET_NAME_V4 */ - VAR_IPSET_NAME_V6 = 555, /* VAR_IPSET_NAME_V6 */ - VAR_TLS_SESSION_TICKET_KEYS = 556, /* VAR_TLS_SESSION_TICKET_KEYS */ - VAR_RPZ = 557, /* VAR_RPZ */ - VAR_TAGS = 558, /* VAR_TAGS */ - VAR_RPZ_ACTION_OVERRIDE = 559, /* VAR_RPZ_ACTION_OVERRIDE */ - VAR_RPZ_CNAME_OVERRIDE = 560, /* VAR_RPZ_CNAME_OVERRIDE */ - VAR_RPZ_LOG = 561, /* VAR_RPZ_LOG */ - VAR_RPZ_LOG_NAME = 562, /* VAR_RPZ_LOG_NAME */ - VAR_DYNLIB = 563, /* VAR_DYNLIB */ - VAR_DYNLIB_FILE = 564, /* VAR_DYNLIB_FILE */ - VAR_EDNS_CLIENT_STRING = 565, /* VAR_EDNS_CLIENT_STRING */ - VAR_EDNS_CLIENT_STRING_OPCODE = 566, /* VAR_EDNS_CLIENT_STRING_OPCODE */ - VAR_NSID = 567, /* VAR_NSID */ - VAR_ZONEMD_PERMISSIVE_MODE = 568, /* VAR_ZONEMD_PERMISSIVE_MODE */ - VAR_ZONEMD_CHECK = 569, /* VAR_ZONEMD_CHECK */ - VAR_ZONEMD_REJECT_ABSENCE = 570 /* VAR_ZONEMD_REJECT_ABSENCE */ + VAR_HIDE_HTTP_USER_AGENT = 493, /* VAR_HIDE_HTTP_USER_AGENT */ + VAR_HTTP_USER_AGENT = 494, /* VAR_HTTP_USER_AGENT */ + VAR_TRUST_ANCHOR_SIGNALING = 495, /* VAR_TRUST_ANCHOR_SIGNALING */ + VAR_AGGRESSIVE_NSEC = 496, /* VAR_AGGRESSIVE_NSEC */ + VAR_USE_SYSTEMD = 497, /* VAR_USE_SYSTEMD */ + VAR_SHM_ENABLE = 498, /* VAR_SHM_ENABLE */ + VAR_SHM_KEY = 499, /* VAR_SHM_KEY */ + VAR_ROOT_KEY_SENTINEL = 500, /* VAR_ROOT_KEY_SENTINEL */ + VAR_DNSCRYPT = 501, /* VAR_DNSCRYPT */ + VAR_DNSCRYPT_ENABLE = 502, /* VAR_DNSCRYPT_ENABLE */ + VAR_DNSCRYPT_PORT = 503, /* VAR_DNSCRYPT_PORT */ + VAR_DNSCRYPT_PROVIDER = 504, /* VAR_DNSCRYPT_PROVIDER */ + VAR_DNSCRYPT_SECRET_KEY = 505, /* VAR_DNSCRYPT_SECRET_KEY */ + VAR_DNSCRYPT_PROVIDER_CERT = 506, /* VAR_DNSCRYPT_PROVIDER_CERT */ + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 507, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 508, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 509, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 510, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 511, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ + VAR_PAD_RESPONSES = 512, /* VAR_PAD_RESPONSES */ + VAR_PAD_RESPONSES_BLOCK_SIZE = 513, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ + VAR_PAD_QUERIES = 514, /* VAR_PAD_QUERIES */ + VAR_PAD_QUERIES_BLOCK_SIZE = 515, /* VAR_PAD_QUERIES_BLOCK_SIZE */ + VAR_IPSECMOD_ENABLED = 516, /* VAR_IPSECMOD_ENABLED */ + VAR_IPSECMOD_HOOK = 517, /* VAR_IPSECMOD_HOOK */ + VAR_IPSECMOD_IGNORE_BOGUS = 518, /* VAR_IPSECMOD_IGNORE_BOGUS */ + VAR_IPSECMOD_MAX_TTL = 519, /* VAR_IPSECMOD_MAX_TTL */ + VAR_IPSECMOD_WHITELIST = 520, /* VAR_IPSECMOD_WHITELIST */ + VAR_IPSECMOD_STRICT = 521, /* VAR_IPSECMOD_STRICT */ + VAR_CACHEDB = 522, /* VAR_CACHEDB */ + VAR_CACHEDB_BACKEND = 523, /* VAR_CACHEDB_BACKEND */ + VAR_CACHEDB_SECRETSEED = 524, /* VAR_CACHEDB_SECRETSEED */ + VAR_CACHEDB_REDISHOST = 525, /* VAR_CACHEDB_REDISHOST */ + VAR_CACHEDB_REDISPORT = 526, /* VAR_CACHEDB_REDISPORT */ + VAR_CACHEDB_REDISTIMEOUT = 527, /* VAR_CACHEDB_REDISTIMEOUT */ + VAR_CACHEDB_REDISEXPIRERECORDS = 528, /* VAR_CACHEDB_REDISEXPIRERECORDS */ + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 529, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ + VAR_FOR_UPSTREAM = 530, /* VAR_FOR_UPSTREAM */ + VAR_AUTH_ZONE = 531, /* VAR_AUTH_ZONE */ + VAR_ZONEFILE = 532, /* VAR_ZONEFILE */ + VAR_MASTER = 533, /* VAR_MASTER */ + VAR_URL = 534, /* VAR_URL */ + VAR_FOR_DOWNSTREAM = 535, /* VAR_FOR_DOWNSTREAM */ + VAR_FALLBACK_ENABLED = 536, /* VAR_FALLBACK_ENABLED */ + VAR_TLS_ADDITIONAL_PORT = 537, /* VAR_TLS_ADDITIONAL_PORT */ + VAR_LOW_RTT = 538, /* VAR_LOW_RTT */ + VAR_LOW_RTT_PERMIL = 539, /* VAR_LOW_RTT_PERMIL */ + VAR_FAST_SERVER_PERMIL = 540, /* VAR_FAST_SERVER_PERMIL */ + VAR_FAST_SERVER_NUM = 541, /* VAR_FAST_SERVER_NUM */ + VAR_ALLOW_NOTIFY = 542, /* VAR_ALLOW_NOTIFY */ + VAR_TLS_WIN_CERT = 543, /* VAR_TLS_WIN_CERT */ + VAR_TCP_CONNECTION_LIMIT = 544, /* VAR_TCP_CONNECTION_LIMIT */ + VAR_FORWARD_NO_CACHE = 545, /* VAR_FORWARD_NO_CACHE */ + VAR_STUB_NO_CACHE = 546, /* VAR_STUB_NO_CACHE */ + VAR_LOG_SERVFAIL = 547, /* VAR_LOG_SERVFAIL */ + VAR_DENY_ANY = 548, /* VAR_DENY_ANY */ + VAR_UNKNOWN_SERVER_TIME_LIMIT = 549, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ + VAR_LOG_TAG_QUERYREPLY = 550, /* VAR_LOG_TAG_QUERYREPLY */ + VAR_STREAM_WAIT_SIZE = 551, /* VAR_STREAM_WAIT_SIZE */ + VAR_TLS_CIPHERS = 552, /* VAR_TLS_CIPHERS */ + VAR_TLS_CIPHERSUITES = 553, /* VAR_TLS_CIPHERSUITES */ + VAR_TLS_USE_SNI = 554, /* VAR_TLS_USE_SNI */ + VAR_IPSET = 555, /* VAR_IPSET */ + VAR_IPSET_NAME_V4 = 556, /* VAR_IPSET_NAME_V4 */ + VAR_IPSET_NAME_V6 = 557, /* VAR_IPSET_NAME_V6 */ + VAR_TLS_SESSION_TICKET_KEYS = 558, /* VAR_TLS_SESSION_TICKET_KEYS */ + VAR_RPZ = 559, /* VAR_RPZ */ + VAR_TAGS = 560, /* VAR_TAGS */ + VAR_RPZ_ACTION_OVERRIDE = 561, /* VAR_RPZ_ACTION_OVERRIDE */ + VAR_RPZ_CNAME_OVERRIDE = 562, /* VAR_RPZ_CNAME_OVERRIDE */ + VAR_RPZ_LOG = 563, /* VAR_RPZ_LOG */ + VAR_RPZ_LOG_NAME = 564, /* VAR_RPZ_LOG_NAME */ + VAR_DYNLIB = 565, /* VAR_DYNLIB */ + VAR_DYNLIB_FILE = 566, /* VAR_DYNLIB_FILE */ + VAR_EDNS_CLIENT_STRING = 567, /* VAR_EDNS_CLIENT_STRING */ + VAR_EDNS_CLIENT_STRING_OPCODE = 568, /* VAR_EDNS_CLIENT_STRING_OPCODE */ + VAR_NSID = 569, /* VAR_NSID */ + VAR_ZONEMD_PERMISSIVE_MODE = 570, /* VAR_ZONEMD_PERMISSIVE_MODE */ + VAR_ZONEMD_CHECK = 571, /* VAR_ZONEMD_CHECK */ + VAR_ZONEMD_REJECT_ABSENCE = 572 /* VAR_ZONEMD_REJECT_ABSENCE */ }; typedef enum yytokentype yytoken_kind_t; #endif @@ -610,84 +612,86 @@ extern int yydebug; #define VAR_FAKE_SHA1 490 #define VAR_LOG_IDENTITY 491 #define VAR_HIDE_TRUSTANCHOR 492 -#define VAR_TRUST_ANCHOR_SIGNALING 493 -#define VAR_AGGRESSIVE_NSEC 494 -#define VAR_USE_SYSTEMD 495 -#define VAR_SHM_ENABLE 496 -#define VAR_SHM_KEY 497 -#define VAR_ROOT_KEY_SENTINEL 498 -#define VAR_DNSCRYPT 499 -#define VAR_DNSCRYPT_ENABLE 500 -#define VAR_DNSCRYPT_PORT 501 -#define VAR_DNSCRYPT_PROVIDER 502 -#define VAR_DNSCRYPT_SECRET_KEY 503 -#define VAR_DNSCRYPT_PROVIDER_CERT 504 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 505 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 506 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 507 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 508 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 509 -#define VAR_PAD_RESPONSES 510 -#define VAR_PAD_RESPONSES_BLOCK_SIZE 511 -#define VAR_PAD_QUERIES 512 -#define VAR_PAD_QUERIES_BLOCK_SIZE 513 -#define VAR_IPSECMOD_ENABLED 514 -#define VAR_IPSECMOD_HOOK 515 -#define VAR_IPSECMOD_IGNORE_BOGUS 516 -#define VAR_IPSECMOD_MAX_TTL 517 -#define VAR_IPSECMOD_WHITELIST 518 -#define VAR_IPSECMOD_STRICT 519 -#define VAR_CACHEDB 520 -#define VAR_CACHEDB_BACKEND 521 -#define VAR_CACHEDB_SECRETSEED 522 -#define VAR_CACHEDB_REDISHOST 523 -#define VAR_CACHEDB_REDISPORT 524 -#define VAR_CACHEDB_REDISTIMEOUT 525 -#define VAR_CACHEDB_REDISEXPIRERECORDS 526 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 527 -#define VAR_FOR_UPSTREAM 528 -#define VAR_AUTH_ZONE 529 -#define VAR_ZONEFILE 530 -#define VAR_MASTER 531 -#define VAR_URL 532 -#define VAR_FOR_DOWNSTREAM 533 -#define VAR_FALLBACK_ENABLED 534 -#define VAR_TLS_ADDITIONAL_PORT 535 -#define VAR_LOW_RTT 536 -#define VAR_LOW_RTT_PERMIL 537 -#define VAR_FAST_SERVER_PERMIL 538 -#define VAR_FAST_SERVER_NUM 539 -#define VAR_ALLOW_NOTIFY 540 -#define VAR_TLS_WIN_CERT 541 -#define VAR_TCP_CONNECTION_LIMIT 542 -#define VAR_FORWARD_NO_CACHE 543 -#define VAR_STUB_NO_CACHE 544 -#define VAR_LOG_SERVFAIL 545 -#define VAR_DENY_ANY 546 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 547 -#define VAR_LOG_TAG_QUERYREPLY 548 -#define VAR_STREAM_WAIT_SIZE 549 -#define VAR_TLS_CIPHERS 550 -#define VAR_TLS_CIPHERSUITES 551 -#define VAR_TLS_USE_SNI 552 -#define VAR_IPSET 553 -#define VAR_IPSET_NAME_V4 554 -#define VAR_IPSET_NAME_V6 555 -#define VAR_TLS_SESSION_TICKET_KEYS 556 -#define VAR_RPZ 557 -#define VAR_TAGS 558 -#define VAR_RPZ_ACTION_OVERRIDE 559 -#define VAR_RPZ_CNAME_OVERRIDE 560 -#define VAR_RPZ_LOG 561 -#define VAR_RPZ_LOG_NAME 562 -#define VAR_DYNLIB 563 -#define VAR_DYNLIB_FILE 564 -#define VAR_EDNS_CLIENT_STRING 565 -#define VAR_EDNS_CLIENT_STRING_OPCODE 566 -#define VAR_NSID 567 -#define VAR_ZONEMD_PERMISSIVE_MODE 568 -#define VAR_ZONEMD_CHECK 569 -#define VAR_ZONEMD_REJECT_ABSENCE 570 +#define VAR_HIDE_HTTP_USER_AGENT 493 +#define VAR_HTTP_USER_AGENT 494 +#define VAR_TRUST_ANCHOR_SIGNALING 495 +#define VAR_AGGRESSIVE_NSEC 496 +#define VAR_USE_SYSTEMD 497 +#define VAR_SHM_ENABLE 498 +#define VAR_SHM_KEY 499 +#define VAR_ROOT_KEY_SENTINEL 500 +#define VAR_DNSCRYPT 501 +#define VAR_DNSCRYPT_ENABLE 502 +#define VAR_DNSCRYPT_PORT 503 +#define VAR_DNSCRYPT_PROVIDER 504 +#define VAR_DNSCRYPT_SECRET_KEY 505 +#define VAR_DNSCRYPT_PROVIDER_CERT 506 +#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 507 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 508 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 509 +#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 510 +#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 511 +#define VAR_PAD_RESPONSES 512 +#define VAR_PAD_RESPONSES_BLOCK_SIZE 513 +#define VAR_PAD_QUERIES 514 +#define VAR_PAD_QUERIES_BLOCK_SIZE 515 +#define VAR_IPSECMOD_ENABLED 516 +#define VAR_IPSECMOD_HOOK 517 +#define VAR_IPSECMOD_IGNORE_BOGUS 518 +#define VAR_IPSECMOD_MAX_TTL 519 +#define VAR_IPSECMOD_WHITELIST 520 +#define VAR_IPSECMOD_STRICT 521 +#define VAR_CACHEDB 522 +#define VAR_CACHEDB_BACKEND 523 +#define VAR_CACHEDB_SECRETSEED 524 +#define VAR_CACHEDB_REDISHOST 525 +#define VAR_CACHEDB_REDISPORT 526 +#define VAR_CACHEDB_REDISTIMEOUT 527 +#define VAR_CACHEDB_REDISEXPIRERECORDS 528 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 529 +#define VAR_FOR_UPSTREAM 530 +#define VAR_AUTH_ZONE 531 +#define VAR_ZONEFILE 532 +#define VAR_MASTER 533 +#define VAR_URL 534 +#define VAR_FOR_DOWNSTREAM 535 +#define VAR_FALLBACK_ENABLED 536 +#define VAR_TLS_ADDITIONAL_PORT 537 +#define VAR_LOW_RTT 538 +#define VAR_LOW_RTT_PERMIL 539 +#define VAR_FAST_SERVER_PERMIL 540 +#define VAR_FAST_SERVER_NUM 541 +#define VAR_ALLOW_NOTIFY 542 +#define VAR_TLS_WIN_CERT 543 +#define VAR_TCP_CONNECTION_LIMIT 544 +#define VAR_FORWARD_NO_CACHE 545 +#define VAR_STUB_NO_CACHE 546 +#define VAR_LOG_SERVFAIL 547 +#define VAR_DENY_ANY 548 +#define VAR_UNKNOWN_SERVER_TIME_LIMIT 549 +#define VAR_LOG_TAG_QUERYREPLY 550 +#define VAR_STREAM_WAIT_SIZE 551 +#define VAR_TLS_CIPHERS 552 +#define VAR_TLS_CIPHERSUITES 553 +#define VAR_TLS_USE_SNI 554 +#define VAR_IPSET 555 +#define VAR_IPSET_NAME_V4 556 +#define VAR_IPSET_NAME_V6 557 +#define VAR_TLS_SESSION_TICKET_KEYS 558 +#define VAR_RPZ 559 +#define VAR_TAGS 560 +#define VAR_RPZ_ACTION_OVERRIDE 561 +#define VAR_RPZ_CNAME_OVERRIDE 562 +#define VAR_RPZ_LOG 563 +#define VAR_RPZ_LOG_NAME 564 +#define VAR_DYNLIB 565 +#define VAR_DYNLIB_FILE 566 +#define VAR_EDNS_CLIENT_STRING 567 +#define VAR_EDNS_CLIENT_STRING_OPCODE 568 +#define VAR_NSID 569 +#define VAR_ZONEMD_PERMISSIVE_MODE 570 +#define VAR_ZONEMD_CHECK 571 +#define VAR_ZONEMD_REJECT_ABSENCE 572 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -697,7 +701,7 @@ union YYSTYPE char* str; -#line 701 "util/configparser.h" +#line 705 "util/configparser.h" }; typedef union YYSTYPE YYSTYPE; diff --git a/util/configparser.y b/util/configparser.y index 790e45de4..e22d48d41 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -154,6 +154,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_SERVE_EXPIRED_TTL_RESET VAR_SERVE_EXPIRED_REPLY_TTL %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_HIDE_HTTP_USER_AGENT VAR_HTTP_USER_AGENT %token VAR_TRUST_ANCHOR_SIGNALING VAR_AGGRESSIVE_NSEC VAR_USE_SYSTEMD %token VAR_SHM_ENABLE VAR_SHM_KEY VAR_ROOT_KEY_SENTINEL %token VAR_DNSCRYPT VAR_DNSCRYPT_ENABLE VAR_DNSCRYPT_PORT VAR_DNSCRYPT_PROVIDER @@ -225,6 +226,7 @@ content_server: server_num_threads | server_verbosity | server_port | server_harden_short_bufsize | server_harden_large_queries | server_do_not_query_address | server_hide_identity | server_hide_version | server_identity | server_version | + server_hide_http_user_agent | server_http_user_agent | server_harden_glue | server_module_conf | server_trust_anchor_file | server_trust_anchor | server_val_override_date | server_bogus_ttl | server_val_clean_additional | server_val_permissive_mode | @@ -1337,6 +1339,15 @@ server_hide_trustanchor: VAR_HIDE_TRUSTANCHOR STRING_ARG free($2); } ; +server_hide_http_user_agent: VAR_HIDE_HTTP_USER_AGENT STRING_ARG + { + OUTYY(("P(server_hide_user_agent:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->hide_http_user_agent = (strcmp($2, "yes")==0); + free($2); + } + ; server_identity: VAR_IDENTITY STRING_ARG { OUTYY(("P(server_identity:%s)\n", $2)); @@ -1351,6 +1362,13 @@ server_version: VAR_VERSION STRING_ARG cfg_parser->cfg->version = $2; } ; +server_http_user_agent: VAR_HTTP_USER_AGENT STRING_ARG + { + OUTYY(("P(server_http_user_agent:%s)\n", $2)); + free(cfg_parser->cfg->http_user_agent); + cfg_parser->cfg->http_user_agent = $2; + } + ; server_nsid: VAR_NSID STRING_ARG { OUTYY(("P(server_nsid:%s)\n", $2)); From 5f57dbf19bbd71826ed1de37532754a4e4257fe1 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 16 Jul 2021 17:12:41 +0200 Subject: [PATCH 293/553] - Insert header into testcode/readzone.c, it was missing. --- doc/Changelog | 1 + testcode/readzone.c | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 68926abfa..993191b4c 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -10,6 +10,7 @@ - Fix unbound-control local_data and local_datas to print detailed syntax errors. - review fix to remove duplicate error printout. + - Insert header into testcode/readzone.c, it was missing. 6 July 2021: Wouter - iana portlist update. diff --git a/testcode/readzone.c b/testcode/readzone.c index 8edc683ee..f0351fc56 100644 --- a/testcode/readzone.c +++ b/testcode/readzone.c @@ -1,3 +1,43 @@ +/* + * testcode/readzone.c - readzone tool reads zonefiles + * + * Copyright (c) 2021, NLnet Labs. All rights reserved. + * + * This software is open source. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * Neither the name of the NLNET LABS nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ +/** + * \file + * Command to read and echo a zonefile. + */ + #include "config.h" #include #include From a7eaf6364d8abb88aef60b8d981be0817faf70fd Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 16 Jul 2021 17:46:04 +0200 Subject: [PATCH 294/553] - Fix from lint for ignored return value. --- doc/Changelog | 1 + validator/autotrust.c | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 993191b4c..f1d65b382 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -11,6 +11,7 @@ syntax errors. - review fix to remove duplicate error printout. - Insert header into testcode/readzone.c, it was missing. + - Fix from lint for ignored return value. 6 July 2021: Wouter - iana portlist update. diff --git a/validator/autotrust.c b/validator/autotrust.c index fe17df2d5..9643a3ddb 100644 --- a/validator/autotrust.c +++ b/validator/autotrust.c @@ -2275,7 +2275,7 @@ autr_debug_print_ta(struct autr_ta* ta) return; } if(str[0]) str[strlen(str)-1]=0; /* remove newline */ - autr_ctime_r(&ta->last_change, buf); + (void)autr_ctime_r(&ta->last_change, buf); if(buf[0]) buf[strlen(buf)-1]=0; /* remove newline */ log_info("[%s] %s ;;state:%d ;;pending_count:%d%s%s last:%s", trustanchor_state2str(ta->s), str, ta->s, ta->pending_count, @@ -2302,13 +2302,13 @@ autr_debug_print_tp(struct trust_anchor* tp) log_packed_rrset(NO_VERBOSE, "DNSKEY:", tp->dnskey_rrset); } log_info("file %s", tp->autr->file); - autr_ctime_r(&tp->autr->last_queried, buf); + (void)autr_ctime_r(&tp->autr->last_queried, buf); if(buf[0]) buf[strlen(buf)-1]=0; /* remove newline */ log_info("last_queried: %u %s", (unsigned)tp->autr->last_queried, buf); - autr_ctime_r(&tp->autr->last_success, buf); + (void)autr_ctime_r(&tp->autr->last_success, buf); if(buf[0]) buf[strlen(buf)-1]=0; /* remove newline */ log_info("last_success: %u %s", (unsigned)tp->autr->last_success, buf); - autr_ctime_r(&tp->autr->next_probe_time, buf); + (void)autr_ctime_r(&tp->autr->next_probe_time, buf); if(buf[0]) buf[strlen(buf)-1]=0; /* remove newline */ log_info("next_probe_time: %u %s", (unsigned)tp->autr->next_probe_time, buf); From 163d8b768e35c7bdddfc123d2ba91018e4ff1730 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 16 Jul 2021 17:48:52 +0200 Subject: [PATCH 295/553] - Another fix from lint for ignored return value. --- respip/respip.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/respip/respip.c b/respip/respip.c index 8fe82cdee..aae41f5d6 100644 --- a/respip/respip.c +++ b/respip/respip.c @@ -129,7 +129,7 @@ respip_sockaddr_delete(struct respip_set* set, struct resp_addr* node) struct resp_addr* prev; prev = (struct resp_addr*)rbtree_previous((struct rbnode_type*)node); lock_rw_destroy(&node->lock); - rbtree_delete(&set->ip_tree, node); + (void)rbtree_delete(&set->ip_tree, node); /* no free'ing, all allocated in region */ if(!prev) addr_tree_init_parents((rbtree_type*)set); From d300bc8eee547d64c6ab418e2eceaee2ec604c6a Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 16 Jul 2021 17:55:10 +0200 Subject: [PATCH 296/553] - Fix for older parsers for function call in serve expired get cached. --- doc/Changelog | 1 + services/mesh.c | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index f1d65b382..d16391c5a 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -12,6 +12,7 @@ - review fix to remove duplicate error printout. - Insert header into testcode/readzone.c, it was missing. - Fix from lint for ignored return value. + - Fix for older parsers for function call in serve expired get cached. 6 July 2021: Wouter - iana portlist update. diff --git a/services/mesh.c b/services/mesh.c index 7931a072f..5679a8b64 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -439,7 +439,7 @@ mesh_serve_expired_init(struct mesh_state* mstate, int timeout) mstate->s.serve_expired_data->get_cached_answer = mstate->s.serve_expired_data->get_cached_answer? mstate->s.serve_expired_data->get_cached_answer: - mesh_serve_expired_lookup; + &mesh_serve_expired_lookup; /* In case this timer already popped, start it again */ if(!mstate->s.serve_expired_data->timer) { @@ -1946,7 +1946,7 @@ mesh_serve_expired_callback(void* arg) while(1) { fptr_ok(fptr_whitelist_serve_expired_lookup( qstate->serve_expired_data->get_cached_answer)); - msg = qstate->serve_expired_data->get_cached_answer(qstate, + msg = (*qstate->serve_expired_data->get_cached_answer)(qstate, lookup_qinfo); if(!msg) return; From d9153cb35b680b4fb0a3fc1b4976ef9aefcbbd52 Mon Sep 17 00:00:00 2001 From: Artem Egorenkov Date: Thu, 17 Dec 2020 17:00:54 +0100 Subject: [PATCH 297/553] Option --enable-linux-ip-local-port-range added to use system configured port range for libunbound on Linux --- config.h.in | 8 ++++++++ configure | 28 ++++++++++++++++++++++++++++ configure.ac | 11 +++++++++++ libunbound/context.c | 1 + util/config_file.c | 31 +++++++++++++++++++++++++++++++ util/config_file.h | 11 +++++++++++ 6 files changed, 90 insertions(+) diff --git a/config.h.in b/config.h.in index cb27afa4f..a3b4bd162 100644 --- a/config.h.in +++ b/config.h.in @@ -856,6 +856,14 @@ /* Define if you enable libevent */ #undef USE_LIBEVENT +/* Define this to enable use of /proc/sys/net/ipv4/ip_local_port_range as a + default outgoing port range. This is only for the libunbound on Linux and + does not affect unbound resolving daemon itself. This may severely limit + the number of available outgoing ports and thus decrease randomness. Define + this only when the target system restricts (e.g. some of SELinux enabled + distributions) the use of non-ephemeral ports. */ +#undef USE_LINUX_IP_LOCAL_PORT_RANGE + /* Define if you want to use internal select based events */ #undef USE_MINI_EVENT diff --git a/configure b/configure index 7e722b59e..e68013ead 100755 --- a/configure +++ b/configure @@ -902,6 +902,7 @@ enable_ipsecmod enable_ipset with_libmnl enable_explicit_port_randomisation +enable_linux_ip_local_port_range with_libunbound_only ' ac_precious_vars='build_alias @@ -1605,6 +1606,16 @@ Optional Features: --disable-explicit-port-randomisation disable explicit source port randomisation and rely on the kernel to provide random source ports + --enable-linux-ip-local-port-range + Define this to enable use of + /proc/sys/net/ipv4/ip_local_port_range as a default + outgoing port range. This is only for the libunbound + on Linux and does not affect unbound resolving + daemon itself. This may severely limit the number of + available outgoing ports and thus decrease + randomness. Define this only when the target system + restricts (e.g. some of SELinux enabled + distributions) the use of non-ephemeral ports. Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] @@ -21632,6 +21643,23 @@ $as_echo "#define DISABLE_EXPLICIT_PORT_RANDOMISATION 1" >>confdefs.h ;; esac +if echo "$host" | $GREP -i -e linux >/dev/null; then + # Check whether --enable-linux-ip-local-port-range was given. +if test "${enable_linux_ip_local_port_range+set}" = set; then : + enableval=$enable_linux_ip_local_port_range; +fi + + case "$enable_linux_ip_local_port_range" in + yes) + +$as_echo "#define USE_LINUX_IP_LOCAL_PORT_RANGE 1" >>confdefs.h + + ;; + no|*) + ;; + esac +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if ${MAKE:-make} supports $< with implicit rule in scope" >&5 $as_echo_n "checking if ${MAKE:-make} supports $< with implicit rule in scope... " >&6; } diff --git a/configure.ac b/configure.ac index 5ffbe6834..33ed0812c 100644 --- a/configure.ac +++ b/configure.ac @@ -1862,6 +1862,17 @@ case "$enable_explicit_port_randomisation" in ;; esac +if echo "$host" | $GREP -i -e linux >/dev/null; then + AC_ARG_ENABLE(linux-ip-local-port-range, AC_HELP_STRING([--enable-linux-ip-local-port-range], [Define this to enable use of /proc/sys/net/ipv4/ip_local_port_range as a default outgoing port range. This is only for the libunbound on Linux and does not affect unbound resolving daemon itself. This may severely limit the number of available outgoing ports and thus decrease randomness. Define this only when the target system restricts (e.g. some of SELinux enabled distributions) the use of non-ephemeral ports.])) + case "$enable_linux_ip_local_port_range" in + yes) + AC_DEFINE([USE_LINUX_IP_LOCAL_PORT_RANGE], [1], [Define this to enable use of /proc/sys/net/ipv4/ip_local_port_range as a default outgoing port range. This is only for the libunbound on Linux and does not affect unbound resolving daemon itself. This may severely limit the number of available outgoing ports and thus decrease randomness. Define this only when the target system restricts (e.g. some of SELinux enabled distributions) the use of non-ephemeral ports.]) + ;; + no|*) + ;; + esac +fi + AC_MSG_CHECKING([if ${MAKE:-make} supports $< with implicit rule in scope]) # on openBSD, the implicit rule make $< work. diff --git a/libunbound/context.c b/libunbound/context.c index 267366ae5..e589c6ae2 100644 --- a/libunbound/context.c +++ b/libunbound/context.c @@ -69,6 +69,7 @@ context_finalize(struct ub_ctx* ctx) } else { log_init(cfg->logfile, cfg->use_syslog, NULL); } + cfg_apply_local_port_policy(cfg, 65536); config_apply(cfg); if(!modstack_setup(&ctx->mods, cfg->module_conf, ctx->env)) return UB_INITFAIL; diff --git a/util/config_file.c b/util/config_file.c index bbbfe24f5..50b0e645a 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -1704,6 +1704,37 @@ int cfg_condense_ports(struct config_file* cfg, int** avail) return num; } +void cfg_apply_local_port_policy(struct config_file* cfg, int num) { +(void)cfg; +(void)num; +#ifdef USE_LINUX_IP_LOCAL_PORT_RANGE + { + int i = 0; + FILE* range_fd; + if ((range_fd = fopen(LINUX_IP_LOCAL_PORT_RANGE_PATH, "r")) != NULL) { + int min_port = 0; + int max_port = num - 1; + if (fscanf(range_fd, "%d %d", &min_port, &max_port) == 2) { + for(i=0; ioutgoing_avail_ports[i] = 0; + } + for(i=max_port+1; ioutgoing_avail_ports[i] = 0; + } + } else { + log_err("unexpected port range in %s", + LINUX_IP_LOCAL_PORT_RANGE_PATH); + } + fclose(range_fd); + } else { + log_err("failed to read from file: %s (%s)", + LINUX_IP_LOCAL_PORT_RANGE_PATH, + strerror(errno)); + } + } +#endif +} + /** print error with file and line number */ static void ub_c_error_va_list(const char *fmt, va_list args) { diff --git a/util/config_file.h b/util/config_file.h index d61f7ce8c..aed6812da 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -1190,6 +1190,13 @@ int cfg_mark_ports(const char* str, int allow, int* avail, int num); */ int cfg_condense_ports(struct config_file* cfg, int** avail); +/** + * Apply system specific port range policy. + * @param cfg: config file. + * @param num: size of the array (65536). + */ +void cfg_apply_local_port_policy(struct config_file* cfg, int num); + /** * Scan ports available * @param avail: the array from cfg. @@ -1329,5 +1336,9 @@ int if_is_https(const char* ifname, const char* port, int https_port); */ int cfg_has_https(struct config_file* cfg); +#ifdef USE_LINUX_IP_LOCAL_PORT_RANGE +#define LINUX_IP_LOCAL_PORT_RANGE_PATH "/proc/sys/net/ipv4/ip_local_port_range" +#endif + #endif /* UTIL_CONFIG_FILE_H */ From ca5baef4336ffb80daeca9f8a15f2649463a0d35 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 21 Jul 2021 13:58:07 +0200 Subject: [PATCH 298/553] - Fix that ldns_zone_new_frm_fp_l counts the line number for an empty line after a comment. --- doc/Changelog | 4 ++++ sldns/parse.c | 3 +++ 2 files changed, 7 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index d16391c5a..3988d0c9d 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +21 July 2021: Wouter + - Fix that ldns_zone_new_frm_fp_l counts the line number for an empty + line after a comment. + 16 July 2021: George - Introduce 'http-user-agent:' and 'hide-http-user-agent:' options. diff --git a/sldns/parse.c b/sldns/parse.c index f4de8602f..491c8f51b 100644 --- a/sldns/parse.c +++ b/sldns/parse.c @@ -149,6 +149,9 @@ sldns_fget_token_l(FILE *f, char *token, const char *delim, size_t limit, int *l if (c != '\0' && c != '\n') { *t++ = c; } + if (c == '\n' && line_nr) { + *line_nr = *line_nr + 1; + } if (c == '\\' && prev_c == '\\') prev_c = 0; else prev_c = c; From e2221f3388f88a3dabaa8b9d7981d8a9486621ef Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Fri, 23 Jul 2021 17:50:28 +0200 Subject: [PATCH 299/553] - More log_assert for stream reuse operations. --- services/outside_network.c | 57 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/services/outside_network.c b/services/outside_network.c index 03526d568..b40c3076e 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -377,6 +377,8 @@ static struct waiting_tcp* reuse_write_wait_pop(struct reuse_tcp* reuse) static void reuse_write_wait_remove(struct reuse_tcp* reuse, struct waiting_tcp* w) { + log_assert(w); + log_assert(w->write_wait_queued); if(!w) return; if(!w->write_wait_queued) @@ -384,9 +386,13 @@ static void reuse_write_wait_remove(struct reuse_tcp* reuse, if(w->write_wait_prev) w->write_wait_prev->write_wait_next = w->write_wait_next; else reuse->write_wait_first = w->write_wait_next; + log_assert(!w->write_wait_prev || + w->write_wait_prev->write_wait_next != w->write_wait_prev); if(w->write_wait_next) w->write_wait_next->write_wait_prev = w->write_wait_prev; else reuse->write_wait_last = w->write_wait_prev; + log_assert(!w->write_wait_next + || w->write_wait_next->write_wait_prev != w->write_wait_next); w->write_wait_queued = 0; } @@ -398,6 +404,8 @@ static void reuse_write_wait_push_back(struct reuse_tcp* reuse, log_assert(!w->write_wait_queued); if(reuse->write_wait_last) { reuse->write_wait_last->write_wait_next = w; + log_assert(reuse->write_wait_last->write_wait_next != + reuse->write_wait_last); w->write_wait_prev = reuse->write_wait_last; } else { reuse->write_wait_first = w; @@ -468,13 +476,22 @@ reuse_tcp_insert(struct outside_network* outnet, struct pending_tcp* pend_tcp) pend_tcp->reuse.lru_prev = NULL; if(outnet->tcp_reuse_first) { pend_tcp->reuse.lru_next = outnet->tcp_reuse_first; + log_assert(pend_tcp->reuse.lru_next != &pend_tcp->reuse); outnet->tcp_reuse_first->lru_prev = &pend_tcp->reuse; + log_assert(outnet->tcp_reuse_first->lru_prev != + outnet->tcp_reuse_first); } else { pend_tcp->reuse.lru_next = NULL; outnet->tcp_reuse_last = &pend_tcp->reuse; } outnet->tcp_reuse_first = &pend_tcp->reuse; pend_tcp->reuse.item_on_lru_list = 1; + log_assert((!outnet->tcp_reuse_first && !outnet->tcp_reuse_last) || + (outnet->tcp_reuse_first && outnet->tcp_reuse_last)); + log_assert(outnet->tcp_reuse_first != outnet->tcp_reuse_first->lru_next && + outnet->tcp_reuse_first != outnet->tcp_reuse_first->lru_prev); + log_assert(outnet->tcp_reuse_last != outnet->tcp_reuse_last->lru_next && + outnet->tcp_reuse_last != outnet->tcp_reuse_last->lru_prev); return 1; } @@ -719,21 +736,32 @@ reuse_tcp_lru_touch(struct outside_network* outnet, struct reuse_tcp* reuse) 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 */ } + log_assert(reuse->lru_prev || + (!reuse->lru_prev && outnet->tcp_reuse_first == reuse)); if(!reuse->lru_prev) return; /* already first in the list */ /* remove at current position */ /* since it is not first, there is a previous element */ reuse->lru_prev->lru_next = reuse->lru_next; + log_assert(reuse->lru_prev->lru_next != reuse->lru_prev); if(reuse->lru_next) reuse->lru_next->lru_prev = reuse->lru_prev; else outnet->tcp_reuse_last = reuse->lru_prev; + log_assert(!reuse->lru_next || reuse->lru_next->lru_prev != reuse->lru_next); + log_assert(outnet->tcp_reuse_last != outnet->tcp_reuse_last->lru_next && + outnet->tcp_reuse_last != outnet->tcp_reuse_last->lru_prev); /* insert at the front */ reuse->lru_prev = NULL; reuse->lru_next = outnet->tcp_reuse_first; + log_assert(reuse->lru_next != reuse); /* since it is not first, it is not the only element and * lru_next is thus not NULL and thus reuse is now not the last in * the list, so outnet->tcp_reuse_last does not need to be modified */ outnet->tcp_reuse_first = reuse; + log_assert(outnet->tcp_reuse_first != outnet->tcp_reuse_first->lru_next && + outnet->tcp_reuse_first != outnet->tcp_reuse_first->lru_prev); + log_assert((!outnet->tcp_reuse_first && !outnet->tcp_reuse_last) || + (outnet->tcp_reuse_first && outnet->tcp_reuse_last)); } /** call callback on waiting_tcp, if not NULL */ @@ -759,9 +787,13 @@ use_free_buffer(struct outside_network* outnet) #endif struct reuse_tcp* reuse = NULL; w = outnet->tcp_wait_first; + log_assert(w->on_tcp_waiting_list); outnet->tcp_wait_first = w->next_waiting; if(outnet->tcp_wait_last == w) outnet->tcp_wait_last = NULL; + log_assert( + (!outnet->tcp_reuse_first && !outnet->tcp_reuse_last) || + (outnet->tcp_reuse_first && outnet->tcp_reuse_last)); w->on_tcp_waiting_list = 0; reuse = reuse_tcp_find(outnet, &w->addr, w->addrlen, w->ssl_upstream); @@ -827,6 +859,7 @@ static void outnet_add_tcp_waiting(struct outside_network* outnet, struct waiting_tcp* w) { struct timeval tv; + log_assert(!w->on_tcp_waiting_list); if(w->on_tcp_waiting_list) return; w->next_waiting = NULL; @@ -941,19 +974,33 @@ reuse_tcp_remove_tree_list(struct outside_network* outnet, * and thus have a pending pointer to the struct */ log_assert(reuse->lru_prev->pending); reuse->lru_prev->lru_next = reuse->lru_next; + log_assert(reuse->lru_prev->lru_next != reuse->lru_prev); } else { log_assert(!reuse->lru_next || reuse->lru_next->pending); outnet->tcp_reuse_first = reuse->lru_next; + log_assert(!outnet->tcp_reuse_first || + (outnet->tcp_reuse_first != + outnet->tcp_reuse_first->lru_next && + outnet->tcp_reuse_first != + outnet->tcp_reuse_first->lru_prev)); } if(reuse->lru_next) { /* assert that members of the lru list are waiting * and thus have a pending pointer to the struct */ log_assert(reuse->lru_next->pending); reuse->lru_next->lru_prev = reuse->lru_prev; + log_assert(reuse->lru_next->lru_prev != reuse->lru_next); } else { log_assert(!reuse->lru_prev || reuse->lru_prev->pending); outnet->tcp_reuse_last = reuse->lru_prev; + log_assert(!outnet->tcp_reuse_last || + (outnet->tcp_reuse_last != + outnet->tcp_reuse_last->lru_next && + outnet->tcp_reuse_last != + outnet->tcp_reuse_last->lru_prev)); } + log_assert((!outnet->tcp_reuse_first && !outnet->tcp_reuse_last) || + (outnet->tcp_reuse_first && outnet->tcp_reuse_last)); reuse->item_on_lru_list = 0; } } @@ -984,6 +1031,7 @@ decommission_pending_tcp(struct outside_network* outnet, verbose(VERB_CLIENT, "decommission_pending_tcp"); pend->next_free = outnet->tcp_free; outnet->tcp_free = pend; + log_assert(outnet->tcp_free->next_free != outnet->tcp_free); if(pend->reuse.node.key) { /* needs unlink from the reuse tree to get deleted */ reuse_tcp_remove_tree_list(outnet, &pend->reuse); @@ -1069,6 +1117,7 @@ outnet_tcp_cb(struct comm_point* c, void* arg, int error, struct pending_tcp* pend = (struct pending_tcp*)arg; struct outside_network* outnet = pend->reuse.outnet; struct waiting_tcp* w = NULL; + log_assert(pend->reuse.item_on_lru_list && pend->reuse.node.key); verbose(VERB_ALGO, "outnettcp cb"); if(error == NETEVENT_TIMEOUT) { if(pend->c->tcp_write_and_read) { @@ -2107,6 +2156,8 @@ reuse_tcp_close_oldest(struct outside_network* outnet) outnet->tcp_reuse_last = NULL; outnet->tcp_reuse_first = NULL; } + log_assert((!outnet->tcp_reuse_first && !outnet->tcp_reuse_last) || + (outnet->tcp_reuse_first && outnet->tcp_reuse_last)); pend->reuse.item_on_lru_list = 0; /* free up */ @@ -2216,6 +2267,7 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, reuse_tcp_lru_touch(sq->outnet, reuse); } + log_assert(!reuse || (reuse && pend)); /* if !pend but we have reuse streams, close a reuse stream * to be able to open a new one to this target, no use waiting * to reuse a file descriptor while another query needs to use @@ -2223,6 +2275,7 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, if(!pend) { reuse_tcp_close_oldest(sq->outnet); pend = sq->outnet->tcp_free; + log_assert(!reuse || (pend == reuse->pending)); } /* allocate space to store query */ @@ -2261,6 +2314,7 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, if(pend) { /* we have a buffer available right now */ if(reuse) { + log_assert(reuse == &pend->reuse); /* reuse existing fd, write query and continue */ /* store query in tree by id */ verbose(VERB_CLIENT, "pending_tcp_query: reuse, store"); @@ -2447,6 +2501,9 @@ waiting_list_remove(struct outside_network* outnet, struct waiting_tcp* w) prev = p; p = p->next_waiting; } + /* waiting_list_remove is currently called only with items that are + * already in the waiting list. */ + log_assert(0); } /** reuse tcp stream, remove serviced query from stream, From f9ad139c08000b9c7ae67a9592b5e9cb505f1fab Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Fri, 23 Jul 2021 17:51:42 +0200 Subject: [PATCH 300/553] - Fix for #411, #439, #469: stream reuse, fix linking when touching the tcp_reuse LRU list. --- services/outside_network.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/services/outside_network.c b/services/outside_network.c index b40c3076e..8b8deea91 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -753,6 +753,9 @@ reuse_tcp_lru_touch(struct outside_network* outnet, struct reuse_tcp* reuse) /* insert at the front */ reuse->lru_prev = NULL; reuse->lru_next = outnet->tcp_reuse_first; + if(outnet->tcp_reuse_first) { + outnet->tcp_reuse_first->lru_prev = reuse; + } log_assert(reuse->lru_next != reuse); /* since it is not first, it is not the only element and * lru_next is thus not NULL and thus reuse is now not the last in From 224571256d6e826d3a3609e37e0bab4137288acd Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Fri, 23 Jul 2021 18:00:24 +0200 Subject: [PATCH 301/553] - Fix for #411, #439, #469: stream reuse, fix LRU list when reuse is already in the tree. --- services/outside_network.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/services/outside_network.c b/services/outside_network.c index 8b8deea91..1867893c7 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -467,10 +467,10 @@ reuse_tcp_insert(struct outside_network* outnet, struct pending_tcp* pend_tcp) pend_tcp->reuse.node.key = &pend_tcp->reuse; pend_tcp->reuse.pending = pend_tcp; if(!rbtree_insert(&outnet->tcp_reuse, &pend_tcp->reuse.node)) { - /* this is a duplicate connection, close this one */ + /* We are not in the LRU list but we are already in the + * tcp_reuse tree, strange. + * Continue to add ourselves to the LRU list. */ verbose(VERB_CLIENT, "reuse_tcp_insert: duplicate connection"); - pend_tcp->reuse.node.key = NULL; - return 0; } /* insert into LRU, first is newest */ pend_tcp->reuse.lru_prev = NULL; From 5b4555954a36c11ba7568c0618175203230c74a1 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Fri, 23 Jul 2021 18:05:57 +0200 Subject: [PATCH 302/553] - Fix for #411, #439, #469: stream reuse, fix outnet deletion for all non-free pending_tcp. --- services/outside_network.c | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/services/outside_network.c b/services/outside_network.c index 1867893c7..023e09420 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -1732,19 +1732,14 @@ outside_network_delete(struct outside_network* outnet) size_t i; for(i=0; inum_tcp; i++) if(outnet->tcp_conns[i]) { - if(outnet->tcp_conns[i]->query && - !outnet->tcp_conns[i]->query-> - on_tcp_waiting_list) { + struct pending_tcp* pend; + pend = outnet->tcp_conns[i]; + if(pend->reuse.item_on_lru_list) { /* delete waiting_tcp elements that * the tcp conn is working on */ - struct pending_tcp* pend = - (struct pending_tcp*)outnet-> - tcp_conns[i]->query-> - next_waiting; decommission_pending_tcp(outnet, pend); } comm_point_delete(outnet->tcp_conns[i]->c); - waiting_tcp_delete(outnet->tcp_conns[i]->query); free(outnet->tcp_conns[i]); } free(outnet->tcp_conns); From 0c74d6abbaf6d3aee0475bc311e2c27bb2a6a171 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Fri, 23 Jul 2021 18:25:06 +0200 Subject: [PATCH 303/553] - Fix for #411, #439, #469: stream reuse, fix loop in the free pending_tcp list. --- services/outside_network.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/services/outside_network.c b/services/outside_network.c index 023e09420..54fcfdd5c 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -1032,8 +1032,12 @@ decommission_pending_tcp(struct outside_network* outnet, struct pending_tcp* pend) { verbose(VERB_CLIENT, "decommission_pending_tcp"); - pend->next_free = outnet->tcp_free; - outnet->tcp_free = pend; + /* A certain code path can lead here twice for the same pending_tcp + * creating a loop in the free pending_tcp list. */ + if(outnet->tcp_free != pend) { + pend->next_free = outnet->tcp_free; + outnet->tcp_free = pend; + } log_assert(outnet->tcp_free->next_free != outnet->tcp_free); if(pend->reuse.node.key) { /* needs unlink from the reuse tree to get deleted */ From e1fdac720562ddf4da4c95aa8969f91da28bb077 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Fri, 23 Jul 2021 18:32:14 +0200 Subject: [PATCH 304/553] - stream reuse, clean links on structs that are unlinked from a list. --- services/outside_network.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/services/outside_network.c b/services/outside_network.c index 54fcfdd5c..8c0d3200a 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -370,6 +370,8 @@ static struct waiting_tcp* reuse_write_wait_pop(struct reuse_tcp* reuse) w->write_wait_next->write_wait_prev = NULL; else reuse->write_wait_last = NULL; w->write_wait_queued = 0; + w->write_wait_next = NULL; + w->write_wait_prev = NULL; return w; } @@ -394,6 +396,8 @@ static void reuse_write_wait_remove(struct reuse_tcp* reuse, log_assert(!w->write_wait_next || w->write_wait_next->write_wait_prev != w->write_wait_next); w->write_wait_queued = 0; + w->write_wait_next = NULL; + w->write_wait_prev = NULL; } /** push the element after the last on the writewait list */ @@ -1005,7 +1009,10 @@ reuse_tcp_remove_tree_list(struct outside_network* outnet, log_assert((!outnet->tcp_reuse_first && !outnet->tcp_reuse_last) || (outnet->tcp_reuse_first && outnet->tcp_reuse_last)); reuse->item_on_lru_list = 0; + reuse->lru_next = NULL; + reuse->lru_prev = NULL; } + reuse->pending = NULL; } /** helper function that deletes an element from the tree of readwait @@ -1745,8 +1752,10 @@ outside_network_delete(struct outside_network* outnet) } comm_point_delete(outnet->tcp_conns[i]->c); free(outnet->tcp_conns[i]); + outnet->tcp_conns[i] = NULL; } free(outnet->tcp_conns); + outnet->tcp_conns = NULL; } if(outnet->tcp_wait_first) { struct waiting_tcp* p = outnet->tcp_wait_first, *np; @@ -2161,6 +2170,8 @@ reuse_tcp_close_oldest(struct outside_network* outnet) log_assert((!outnet->tcp_reuse_first && !outnet->tcp_reuse_last) || (outnet->tcp_reuse_first && outnet->tcp_reuse_last)); pend->reuse.item_on_lru_list = 0; + pend->reuse.lru_next = NULL; + pend->reuse.lru_prev = NULL; /* free up */ reuse_cb_and_decommission(outnet, pend, NETEVENT_CLOSED); From 1b7358e85c0a00bc3553c39fbc52fbdd9f57b8a6 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Fri, 23 Jul 2021 20:51:14 +0200 Subject: [PATCH 305/553] - stream reuse, move log_assert to the correct location. --- services/outside_network.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/outside_network.c b/services/outside_network.c index 8c0d3200a..340489ba9 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -1044,8 +1044,8 @@ decommission_pending_tcp(struct outside_network* outnet, if(outnet->tcp_free != pend) { pend->next_free = outnet->tcp_free; outnet->tcp_free = pend; + log_assert(outnet->tcp_free->next_free != outnet->tcp_free); } - log_assert(outnet->tcp_free->next_free != outnet->tcp_free); if(pend->reuse.node.key) { /* needs unlink from the reuse tree to get deleted */ reuse_tcp_remove_tree_list(outnet, &pend->reuse); From ab318a8b95f5fdccb6410805f1bdaf611ce270ae Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Sat, 24 Jul 2021 01:15:00 +0200 Subject: [PATCH 306/553] - Add unittest for tcp_reuse functions. --- Makefile.in | 8 +- services/outside_network.c | 57 ++++----- services/outside_network.h | 18 ++- testcode/unitmain.c | 48 +------- testcode/unitmain.h | 2 + testcode/unittcpreuse.c | 236 +++++++++++++++++++++++++++++++++++++ 6 files changed, 292 insertions(+), 77 deletions(-) create mode 100644 testcode/unittcpreuse.c diff --git a/Makefile.in b/Makefile.in index 9fbb8f8e0..476545ea9 100644 --- a/Makefile.in +++ b/Makefile.in @@ -175,10 +175,12 @@ UNITTEST_SRC=testcode/unitanchor.c testcode/unitdname.c \ testcode/unitlruhash.c testcode/unitmain.c testcode/unitmsgparse.c \ testcode/unitneg.c testcode/unitregional.c testcode/unitslabhash.c \ testcode/unitverify.c testcode/readhex.c testcode/testpkts.c testcode/unitldns.c \ -testcode/unitecs.c testcode/unitauth.c testcode/unitzonemd.c +testcode/unitecs.c testcode/unitauth.c testcode/unitzonemd.c \ +testcode/unittcpreuse.c UNITTEST_OBJ=unitanchor.lo unitdname.lo unitlruhash.lo unitmain.lo \ unitmsgparse.lo unitneg.lo unitregional.lo unitslabhash.lo unitverify.lo \ -readhex.lo testpkts.lo unitldns.lo unitecs.lo unitauth.lo unitzonemd.lo +readhex.lo testpkts.lo unitldns.lo unitecs.lo unitauth.lo unitzonemd.lo \ +unittcpreuse.lo UNITTEST_OBJ_LINK=$(UNITTEST_OBJ) worker_cb.lo $(COMMON_OBJ) $(SLDNS_OBJ) \ $(COMPAT_OBJ) DAEMON_SRC=daemon/acl_list.c daemon/cachedump.c daemon/daemon.c \ @@ -1223,6 +1225,8 @@ unitzonemd.lo unitzonemd.o: $(srcdir)/testcode/unitzonemd.c config.h $(srcdir)/u $(srcdir)/sldns/sbuffer.h $(srcdir)/util/config_file.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/data/dname.h $(srcdir)/util/regional.h \ $(srcdir)/validator/val_anchor.h +unittcpreuse.lo unittcpreuse.o: $(srcdir)/testcode/unittcpreuse.c config.h $(srcdir)/services/outside_network.h \ +$(srcdir)/util/random.h acl_list.lo acl_list.o: $(srcdir)/daemon/acl_list.c config.h $(srcdir)/daemon/acl_list.h \ $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/services/view.h $(srcdir)/util/locks.h \ $(srcdir)/util/log.h $(srcdir)/util/regional.h $(srcdir)/util/config_file.h $(srcdir)/util/net_help.h \ diff --git a/services/outside_network.c b/services/outside_network.c index 340489ba9..5207a7042 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -90,10 +90,6 @@ 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); - /** select a DNS ID for a TCP stream */ static uint16_t tcp_select_id(struct outside_network* outnet, struct reuse_tcp* reuse); @@ -459,7 +455,7 @@ tree_by_id_get_id(rbnode_type* node) } /** insert into reuse tcp tree and LRU, false on failure (duplicate) */ -static int +int reuse_tcp_insert(struct outside_network* outnet, struct pending_tcp* pend_tcp) { log_reuse_tcp(VERB_CLIENT, "reuse_tcp_insert", &pend_tcp->reuse); @@ -733,7 +729,7 @@ outnet_tcp_take_into_use(struct waiting_tcp* w) /** Touch the lru of a reuse_tcp element, it is in use. * This moves it to the front of the list, where it is not likely to * be closed. Items at the back of the list are closed to make space. */ -static void +void reuse_tcp_lru_touch(struct outside_network* outnet, struct reuse_tcp* reuse) { if(!reuse->item_on_lru_list) { @@ -771,6 +767,29 @@ reuse_tcp_lru_touch(struct outside_network* outnet, struct reuse_tcp* reuse) (outnet->tcp_reuse_first && outnet->tcp_reuse_last)); } +/** Snip the last reuse_tcp element off of the LRU list */ +struct reuse_tcp* +reuse_tcp_lru_snip(struct outside_network* outnet) +{ + struct reuse_tcp* reuse = outnet->tcp_reuse_last; + if(!reuse) return NULL; + /* snip off of LRU */ + log_assert(reuse->lru_next == NULL); + if(reuse->lru_prev) { + outnet->tcp_reuse_last = reuse->lru_prev; + reuse->lru_prev->lru_next = NULL; + } else { + outnet->tcp_reuse_last = NULL; + outnet->tcp_reuse_first = NULL; + } + log_assert((!outnet->tcp_reuse_first && !outnet->tcp_reuse_last) || + (outnet->tcp_reuse_first && outnet->tcp_reuse_last)); + reuse->item_on_lru_list = 0; + reuse->lru_next = NULL; + reuse->lru_prev = NULL; + return reuse; +} + /** call callback on waiting_tcp, if not NULL */ static void waiting_tcp_callback(struct waiting_tcp* w, struct comm_point* c, int error, @@ -955,7 +974,7 @@ reuse_move_writewait_away(struct outside_network* outnet, } /** remove reused element from tree and lru list */ -static void +void reuse_tcp_remove_tree_list(struct outside_network* outnet, struct reuse_tcp* reuse) { @@ -2153,28 +2172,12 @@ outnet_tcptimer(void* arg) static void reuse_tcp_close_oldest(struct outside_network* outnet) { - struct pending_tcp* pend; + struct reuse_tcp* reuse; verbose(VERB_CLIENT, "reuse_tcp_close_oldest"); - if(!outnet->tcp_reuse_last) return; - pend = outnet->tcp_reuse_last->pending; - - /* snip off of LRU */ - log_assert(pend->reuse.lru_next == NULL); - if(pend->reuse.lru_prev) { - outnet->tcp_reuse_last = pend->reuse.lru_prev; - pend->reuse.lru_prev->lru_next = NULL; - } else { - outnet->tcp_reuse_last = NULL; - outnet->tcp_reuse_first = NULL; - } - log_assert((!outnet->tcp_reuse_first && !outnet->tcp_reuse_last) || - (outnet->tcp_reuse_first && outnet->tcp_reuse_last)); - pend->reuse.item_on_lru_list = 0; - pend->reuse.lru_next = NULL; - pend->reuse.lru_prev = NULL; - + reuse = reuse_tcp_lru_snip(outnet); + if(!reuse) return; /* free up */ - reuse_cb_and_decommission(outnet, pend, NETEVENT_CLOSED); + reuse_cb_and_decommission(outnet, reuse->pending, NETEVENT_CLOSED); } static uint16_t diff --git a/services/outside_network.h b/services/outside_network.h index 67403f736..d0d532e64 100644 --- a/services/outside_network.h +++ b/services/outside_network.h @@ -682,12 +682,28 @@ struct waiting_tcp* reuse_tcp_by_id_find(struct reuse_tcp* reuse, uint16_t id); /** insert element in tree by id */ void reuse_tree_by_id_insert(struct reuse_tcp* reuse, struct waiting_tcp* w); +/** insert element in tcp_reuse tree and LRU list */ +int reuse_tcp_insert(struct outside_network* outnet, + struct pending_tcp* pend_tcp); + +/** touch the LRU of the element */ +void reuse_tcp_lru_touch(struct outside_network* outnet, + struct reuse_tcp* reuse); + +/** remove element from tree and LRU list */ +void reuse_tcp_remove_tree_list(struct outside_network* outnet, + struct reuse_tcp* reuse); + +/** snip the last reuse_tcp element off of the LRU list if any */ +struct reuse_tcp* reuse_tcp_lru_snip(struct outside_network* outnet); + /** delete readwait waiting_tcp elements, deletes the elements in the list */ void reuse_del_readwait(rbtree_type* tree_by_id); /** get TCP file descriptor for address, returns -1 on failure, * tcp_mss is 0 or maxseg size to set for TCP packets. */ -int outnet_get_tcp_fd(struct sockaddr_storage* addr, socklen_t addrlen, int tcp_mss, int dscp); +int outnet_get_tcp_fd(struct sockaddr_storage* addr, socklen_t addrlen, + int tcp_mss, int dscp); /** * Create udp commpoint suitable for sending packets to the destination. diff --git a/testcode/unitmain.c b/testcode/unitmain.c index 30562af11..c18be7be3 100644 --- a/testcode/unitmain.c +++ b/testcode/unitmain.c @@ -839,52 +839,6 @@ static void respip_test(void) respip_conf_actions_test(); } -#include "services/outside_network.h" -/** add number of new IDs to the reuse tree, randomly chosen */ -static void tcpid_addmore(struct reuse_tcp* reuse, - struct outside_network* outnet, unsigned int addnum) -{ - unsigned int i; - struct waiting_tcp* w; - for(i=0; iid = id; - w->outnet = outnet; - w->next_waiting = (void*)reuse->pending; - reuse_tree_by_id_insert(reuse, w); - } -} - -/** fill up the reuse ID tree and test assertions */ -static void tcpid_fillup(struct reuse_tcp* reuse, - struct outside_network* outnet) -{ - int t, numtest=3; - for(t=0; ttree_by_id, reuse_id_cmp); - tcpid_addmore(reuse, outnet, 65535); - reuse_del_readwait(&reuse->tree_by_id); - } -} - -/** test TCP ID selection */ -static void tcpid_test(void) -{ - struct pending_tcp pend; - struct outside_network outnet; - unit_show_func("services/outside_network.c", "reuse_tcp_select_id"); - memset(&pend, 0, sizeof(pend)); - pend.reuse.pending = &pend; - memset(&outnet, 0, sizeof(outnet)); - outnet.rnd = ub_initstate(NULL); - rbtree_init(&pend.reuse.tree_by_id, reuse_id_cmp); - tcpid_fillup(&pend.reuse, &outnet); - ub_randfree(outnet.rnd); -} - void unit_show_func(const char* file, const char* func) { printf("test %s:%s\n", file, func); @@ -953,8 +907,8 @@ main(int argc, char* argv[]) infra_test(); ldns_test(); zonemd_test(); + tcpreuse_test(); msgparse_test(); - tcpid_test(); #ifdef CLIENT_SUBNET ecs_test(); #endif /* CLIENT_SUBNET */ diff --git a/testcode/unitmain.h b/testcode/unitmain.h index 66d1322f2..adcd74f77 100644 --- a/testcode/unitmain.h +++ b/testcode/unitmain.h @@ -82,5 +82,7 @@ void ldns_test(void); void authzone_test(void); /** unit test for zonemd functions */ void zonemd_test(void); +/** unit test for tcp_reuse functions */ +void tcpreuse_test(void); #endif /* TESTCODE_UNITMAIN_H */ diff --git a/testcode/unittcpreuse.c b/testcode/unittcpreuse.c new file mode 100644 index 000000000..ddb865b68 --- /dev/null +++ b/testcode/unittcpreuse.c @@ -0,0 +1,236 @@ +/* + * testcode/unittcpreuse.c - unit test for tcp_reuse. + * + * Copyright (c) 2021, NLnet Labs. All rights reserved. + * + * This software is open source. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * Neither the name of the NLNET LABS nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ +/** + * \file + * Tests the tcp_reuse functionality. + */ + +#include "config.h" +#include "testcode/unitmain.h" +#include "util/log.h" +#include "util/random.h" +#include "services/outside_network.h" + +/** add number of new IDs to the reuse tree, randomly chosen */ +static void tcpid_addmore(struct reuse_tcp* reuse, + struct outside_network* outnet, unsigned int addnum) +{ + unsigned int i; + struct waiting_tcp* w; + for(i=0; iid = id; + w->outnet = outnet; + w->next_waiting = (void*)reuse->pending; + reuse_tree_by_id_insert(reuse, w); + } +} + +/** fill up the reuse ID tree and test assertions */ +static void tcpid_fillup(struct reuse_tcp* reuse, + struct outside_network* outnet) +{ + int t, numtest=3; + for(t=0; ttree_by_id, reuse_id_cmp); + tcpid_addmore(reuse, outnet, 65535); + reuse_del_readwait(&reuse->tree_by_id); + } +} + +/** test TCP ID selection */ +static void tcpid_test(void) +{ + struct pending_tcp pend; + struct outside_network outnet; + unit_show_func("services/outside_network.c", "reuse_tcp_select_id"); + memset(&pend, 0, sizeof(pend)); + pend.reuse.pending = &pend; + memset(&outnet, 0, sizeof(outnet)); + outnet.rnd = ub_initstate(NULL); + rbtree_init(&pend.reuse.tree_by_id, reuse_id_cmp); + tcpid_fillup(&pend.reuse, &outnet); + ub_randfree(outnet.rnd); +} + +/** check that the tree has present number of nodes and the LRU is linked + * properly. */ +static void check_tree_and_list(struct outside_network* outnet, int present) +{ + int i; + struct reuse_tcp *reuse, *next_reuse; + unit_assert(present == (int)outnet->tcp_reuse.count); + if(present < 1) { + unit_assert(outnet->tcp_reuse_first == NULL); + unit_assert(outnet->tcp_reuse_last == NULL); + return; + } + unit_assert(outnet->tcp_reuse_first->item_on_lru_list); + unit_assert(!outnet->tcp_reuse_first->lru_prev); + reuse = outnet->tcp_reuse_first; + for(i=0; iitem_on_lru_list); + unit_assert(reuse->lru_next); + unit_assert(reuse->lru_next != reuse); + next_reuse = reuse->lru_next; + unit_assert(next_reuse->lru_prev == reuse); + reuse = next_reuse; + } + unit_assert(!reuse->lru_next); + unit_assert(outnet->tcp_reuse_last->item_on_lru_list); + unit_assert(outnet->tcp_reuse_last == reuse); +} + +/** creates pending_tcp. Copy of outside_network.c:create_pending_tcp without + * the comm_point creation */ +static int create_pending_tcp(struct outside_network* outnet) +{ + size_t i; + if(outnet->num_tcp == 0) + return 1; /* no tcp needed, nothing to do */ + if(!(outnet->tcp_conns = (struct pending_tcp **)calloc( + outnet->num_tcp, sizeof(struct pending_tcp*)))) + return 0; + for(i=0; inum_tcp; i++) { + if(!(outnet->tcp_conns[i] = (struct pending_tcp*)calloc(1, + sizeof(struct pending_tcp)))) + return 0; + outnet->tcp_conns[i]->next_free = outnet->tcp_free; + outnet->tcp_free = outnet->tcp_conns[i]; + } + return 1; +} + +/** empty the tcp_reuse tree and LRU list */ +static void empty_tree(struct outside_network* outnet) +{ + size_t i; + struct reuse_tcp* reuse; + reuse = outnet->tcp_reuse_first; + i = outnet->tcp_reuse.count; + while(reuse) { + reuse_tcp_remove_tree_list(outnet, reuse); + check_tree_and_list(outnet, --i); + reuse = outnet->tcp_reuse_first; + } +} + +/** check removal of the LRU element on the given position of total elements */ +static void check_removal(struct outside_network* outnet, int position, int total) +{ + int i; + struct reuse_tcp* reuse; + empty_tree(outnet); + for(i=0; itcp_conns[i]); + } + check_tree_and_list(outnet, total); + reuse = outnet->tcp_reuse_first; + for(i=0; ilru_next; + reuse_tcp_remove_tree_list(outnet, reuse); + check_tree_and_list(outnet, total-1); +} + +/** check snipping off the last element of the LRU with total elements */ +static void check_snip(struct outside_network* outnet, int total) +{ + int i; + struct reuse_tcp* reuse; + empty_tree(outnet); + for(i=0; itcp_conns[i]); + } + check_tree_and_list(outnet, total); + reuse = reuse_tcp_lru_snip(outnet); + while(reuse) { + reuse_tcp_remove_tree_list(outnet, reuse); + check_tree_and_list(outnet, --total); + reuse = reuse_tcp_lru_snip(outnet); + } + unit_assert(outnet->tcp_reuse_first == NULL); + unit_assert(outnet->tcp_reuse_last == NULL); + unit_assert(outnet->tcp_reuse.count == 0); +} + +/** test tcp_reuse tree and LRU list functions */ +static void tcp_reuse_tree_list_test(void) +{ + size_t i; + struct outside_network outnet; + struct reuse_tcp* reuse; + rbtree_init(&outnet.tcp_reuse, reuse_cmp); + outnet.num_tcp = 5; + outnet.tcp_reuse_max = outnet.num_tcp; + if(!create_pending_tcp(&outnet)) fatal_exit("out of memory"); + /* add all to the tree */ + unit_show_func("services/outside_network.c", "reuse_tcp_insert"); + for(i=0; ilru_next; reuse = reuse->lru_next); + reuse_tcp_lru_touch(&outnet, reuse); + check_tree_and_list(&outnet, outnet.num_tcp); + } + /* check removal */ + unit_show_func("services/outside_network.c", "reuse_tcp_remove_tree_list"); + check_removal(&outnet, 2, 5); + check_removal(&outnet, 1, 3); + check_removal(&outnet, 1, 2); + + /* check snip */ + unit_show_func("services/outside_network.c", "reuse_tcp_lru_snip"); + check_snip(&outnet, 4); + + for(i=0; i Date: Sun, 25 Jul 2021 03:17:18 +0000 Subject: [PATCH 307/553] unbound.service.in: upgrade hardening to latest standards MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Systemd gradually introduced new protection bits, let’s enable them. --- contrib/unbound.service.in | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/contrib/unbound.service.in b/contrib/unbound.service.in index a4596978d..90ee708ce 100644 --- a/contrib/unbound.service.in +++ b/contrib/unbound.service.in @@ -60,8 +60,12 @@ NoNewPrivileges=true PrivateDevices=true PrivateTmp=true ProtectHome=true +ProtectClock=true ProtectControlGroups=true +ProtectKernelLogs=true ProtectKernelModules=true +ProtectKernelTunables=true +ProtectProc=invisible ProtectSystem=strict RuntimeDirectory=unbound ConfigurationDirectory=unbound From fc462aa15d8b7df2bbd8bea44f237050da6a7e1b Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 26 Jul 2021 09:47:24 +0200 Subject: [PATCH 308/553] Changelog note for #512 - Merge #512: unbound.service.in: upgrade hardening to latest standards. --- doc/Changelog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 3988d0c9d..c00a1a29f 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +26 July 2021: Wouter + - Merge #512: unbound.service.in: upgrade hardening to latest + standards. + 21 July 2021: Wouter - Fix that ldns_zone_new_frm_fp_l counts the line number for an empty line after a comment. From de73af2da2105f2ba4cb88b0a775c59faf4bee25 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Sat, 24 Jul 2021 16:16:19 +0200 Subject: [PATCH 309/553] - stream reuse, do not explicitly wait for a free pending_tcp if a reuse could be used. --- services/outside_network.c | 81 ++++++++++++++++++++++++++------------ testcode/unittcpreuse.c | 3 +- 2 files changed, 56 insertions(+), 28 deletions(-) diff --git a/services/outside_network.c b/services/outside_network.c index 5207a7042..37f97d3dd 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -801,13 +801,59 @@ waiting_tcp_callback(struct waiting_tcp* w, struct comm_point* c, int error, } } +/** add waiting_tcp element to the outnet tcp waiting list */ +static void +outnet_add_tcp_waiting(struct outside_network* outnet, struct waiting_tcp* w) +{ + struct timeval tv; + log_assert(!w->on_tcp_waiting_list); + if(w->on_tcp_waiting_list) + return; + w->next_waiting = NULL; + if(outnet->tcp_wait_last) + outnet->tcp_wait_last->next_waiting = w; + else outnet->tcp_wait_first = w; + outnet->tcp_wait_last = w; + w->on_tcp_waiting_list = 1; +#ifndef S_SPLINT_S + tv.tv_sec = w->timeout/1000; + tv.tv_usec = (w->timeout%1000)*1000; +#endif + comm_timer_set(w->timer, &tv); +} + +/** add waiting_tcp element as first to the outnet tcp waiting list */ +static void +outnet_add_tcp_waiting_first(struct outside_network* outnet, + struct waiting_tcp* w, int reset_timer) +{ + struct timeval tv; + log_assert(!w->on_tcp_waiting_list); + if(w->on_tcp_waiting_list) + return; + w->next_waiting = outnet->tcp_wait_first; + if(!outnet->tcp_wait_last) + outnet->tcp_wait_last = w; + outnet->tcp_wait_first = w; + w->on_tcp_waiting_list = 1; + if(reset_timer) { +#ifndef S_SPLINT_S + tv.tv_sec = w->timeout/1000; + tv.tv_usec = (w->timeout%1000)*1000; +#endif + comm_timer_set(w->timer, &tv); + } + log_assert( + (!outnet->tcp_reuse_first && !outnet->tcp_reuse_last) || + (outnet->tcp_reuse_first && outnet->tcp_reuse_last)); +} + /** see if buffers can be used to service TCP queries */ static void use_free_buffer(struct outside_network* outnet) { struct waiting_tcp* w; - while(outnet->tcp_free && outnet->tcp_wait_first - && !outnet->want_to_quit) { + while(outnet->tcp_wait_first && !outnet->want_to_quit) { #ifdef USE_DNSTAP struct pending_tcp* pend_tcp = NULL; #endif @@ -848,7 +894,7 @@ use_free_buffer(struct outside_network* outnet) reuse->pending->c->fd, reuse->pending, w); } - } else { + } else if(outnet->tcp_free) { struct pending_tcp* pend = w->outnet->tcp_free; rbtree_init(&pend->reuse.tree_by_id, reuse_id_cmp); pend->reuse.pending = pend; @@ -865,11 +911,15 @@ use_free_buffer(struct outside_network* outnet) #ifdef USE_DNSTAP pend_tcp = pend; #endif + } else { + /* no reuse and no free buffer, put back at the start */ + outnet_add_tcp_waiting_first(outnet, w, 0); + break; } #ifdef USE_DNSTAP if(outnet->dtenv && pend_tcp && w && w->sq && - (outnet->dtenv->log_resolver_query_messages || - outnet->dtenv->log_forwarder_query_messages)) { + (outnet->dtenv->log_resolver_query_messages || + outnet->dtenv->log_forwarder_query_messages)) { sldns_buffer tmp; sldns_buffer_init_frm_data(&tmp, w->pkt, w->pkt_len); dt_msg_send_outside_query(outnet->dtenv, &w->sq->addr, @@ -880,27 +930,6 @@ use_free_buffer(struct outside_network* outnet) } } -/** add waiting_tcp element to the outnet tcp waiting list */ -static void -outnet_add_tcp_waiting(struct outside_network* outnet, struct waiting_tcp* w) -{ - struct timeval tv; - log_assert(!w->on_tcp_waiting_list); - if(w->on_tcp_waiting_list) - return; - w->next_waiting = NULL; - if(outnet->tcp_wait_last) - outnet->tcp_wait_last->next_waiting = w; - else outnet->tcp_wait_first = w; - outnet->tcp_wait_last = w; - w->on_tcp_waiting_list = 1; -#ifndef S_SPLINT_S - tv.tv_sec = w->timeout/1000; - tv.tv_usec = (w->timeout%1000)*1000; -#endif - comm_timer_set(w->timer, &tv); -} - /** delete element from tree by id */ static void reuse_tree_by_id_delete(struct reuse_tcp* reuse, struct waiting_tcp* w) diff --git a/testcode/unittcpreuse.c b/testcode/unittcpreuse.c index ddb865b68..b93e7def1 100644 --- a/testcode/unittcpreuse.c +++ b/testcode/unittcpreuse.c @@ -128,7 +128,7 @@ static int create_pending_tcp(struct outside_network* outnet) outnet->num_tcp, sizeof(struct pending_tcp*)))) return 0; for(i=0; inum_tcp; i++) { - if(!(outnet->tcp_conns[i] = (struct pending_tcp*)calloc(1, + if(!(outnet->tcp_conns[i] = (struct pending_tcp*)calloc(1, sizeof(struct pending_tcp)))) return 0; outnet->tcp_conns[i]->next_free = outnet->tcp_free; @@ -216,7 +216,6 @@ static void tcp_reuse_tree_list_test(void) check_removal(&outnet, 2, 5); check_removal(&outnet, 1, 3); check_removal(&outnet, 1, 2); - /* check snip */ unit_show_func("services/outside_network.c", "reuse_tcp_lru_snip"); check_snip(&outnet, 4); From ad2bd61ed42b57f53f05aae9da780316ae7be44d Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Mon, 26 Jul 2021 16:11:14 +0200 Subject: [PATCH 310/553] - Remove redundant log_assert and fix error messages. --- services/outside_network.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/services/outside_network.c b/services/outside_network.c index 37f97d3dd..73cb4ff32 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -461,7 +461,8 @@ 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.node.key) - log_err("internal error: reuse_tcp_insert: on lru list without key"); + log_err("internal error: reuse_tcp_insert: " + "in lru list without key"); return 1; } pend_tcp->reuse.node.key = &pend_tcp->reuse; @@ -470,7 +471,8 @@ reuse_tcp_insert(struct outside_network* outnet, struct pending_tcp* pend_tcp) /* We are not in the LRU list but we are already in the * tcp_reuse tree, strange. * Continue to add ourselves to the LRU list. */ - verbose(VERB_CLIENT, "reuse_tcp_insert: duplicate connection"); + log_err("internal error: reuse_tcp_insert: in lru list but " + "not in the tree"); } /* insert into LRU, first is newest */ pend_tcp->reuse.lru_prev = NULL; @@ -1092,7 +1094,6 @@ decommission_pending_tcp(struct outside_network* outnet, if(outnet->tcp_free != pend) { pend->next_free = outnet->tcp_free; outnet->tcp_free = pend; - log_assert(outnet->tcp_free->next_free != outnet->tcp_free); } if(pend->reuse.node.key) { /* needs unlink from the reuse tree to get deleted */ From 8ee5aa312f3faa5e3455b987ebde990c1e13c5c2 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Mon, 26 Jul 2021 16:29:57 +0200 Subject: [PATCH 311/553] - Fix unittcpreuse.c: properly initialise outnet. --- testcode/unittcpreuse.c | 1 + 1 file changed, 1 insertion(+) diff --git a/testcode/unittcpreuse.c b/testcode/unittcpreuse.c index b93e7def1..087c6c1b9 100644 --- a/testcode/unittcpreuse.c +++ b/testcode/unittcpreuse.c @@ -194,6 +194,7 @@ static void tcp_reuse_tree_list_test(void) size_t i; struct outside_network outnet; struct reuse_tcp* reuse; + memset(&outnet, 0, sizeof(outnet)); rbtree_init(&outnet.tcp_reuse, reuse_cmp); outnet.num_tcp = 5; outnet.tcp_reuse_max = outnet.num_tcp; From e8d28f0a55b3bd6c9f8d7bec4ead568eedd139ad Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 26 Jul 2021 16:45:33 +0200 Subject: [PATCH 312/553] - Fix readzone unknown type print for memory resize. --- doc/Changelog | 1 + testcode/readzone.c | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index c00a1a29f..43a1b50a4 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,7 @@ 26 July 2021: Wouter - Merge #512: unbound.service.in: upgrade hardening to latest standards. + - Fix readzone unknown type print for memory resize. 21 July 2021: Wouter - Fix that ldns_zone_new_frm_fp_l counts the line number for an empty diff --git a/testcode/readzone.c b/testcode/readzone.c index f0351fc56..94511e577 100644 --- a/testcode/readzone.c +++ b/testcode/readzone.c @@ -142,7 +142,12 @@ int main(int argc, char *const *argv) s = -1; break; } - (void) sldns_wire2str_rr_buf(rr, rr_len, str, str_len); + if (print_in_unknown_type_format) + (void) sldns_wire2str_rr_unknown_buf( + rr, rr_len, str, str_len); + else + (void) sldns_wire2str_rr_buf( + rr, rr_len, str, str_len); } fprintf(stdout, "%s", str); } From dd254137f1450976b43751248ee208008e65fd42 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Mon, 26 Jul 2021 16:55:32 +0200 Subject: [PATCH 313/553] - Changelog entry for #513: Stream reuse, attempt to fix #411, #439, #469. --- doc/Changelog | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 43a1b50a4..82fd320e7 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,8 @@ +26 July 2021: George + - Merge #513: Stream reuse, attempt to fix #411, #439, #469. This + introduces a couple of fixes for the stream reuse functionality + that could result in broken internal structures. + 26 July 2021: Wouter - Merge #512: unbound.service.in: upgrade hardening to latest standards. From 3e310a17becddf87483643ae21a8d66943ca53a6 Mon Sep 17 00:00:00 2001 From: Tomasz Ziolkowski Date: Tue, 27 Jul 2021 12:03:51 +0200 Subject: [PATCH 314/553] Docker environment for run tests + enhancement for ssl_handshake --- .gitignore | 1 + Dockerfile | 11 +++++++++++ Makefile.in | 2 ++ configure | 6 ++++++ doc/README.tests | 8 ++++++++ testcode/petal.c | 10 ++++++++-- testdata/fwd_zero.tdir/fwd_zero.test | 2 +- util/iana_ports.inc | 1 + util/netevent.c | 7 +++++++ 9 files changed, 45 insertions(+), 3 deletions(-) create mode 100644 Dockerfile diff --git a/.gitignore b/.gitignore index d0c69f81d..ddd734967 100644 --- a/.gitignore +++ b/.gitignore @@ -56,3 +56,4 @@ /testdata/.perfstats.txt /doc/html /doc/xml +.idea diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000..417daccb2 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,11 @@ +FROM gcc:latest +WORKDIR /usr/src/unbound +RUN apt-get update +# install semantic parser & lexical analyzer +RUN apt-get install -y bison flex +# install packages used in tests +RUN apt-get install -y ldnsutils dnsutils xxd splint doxygen netcat +# accept short rsa keys, which are used in tests +RUN sed -i 's/SECLEVEL=2/SECLEVEL=1/g' /usr/lib/ssl/openssl.cnf + +CMD ["/bin/bash"] diff --git a/Makefile.in b/Makefile.in index 476545ea9..3f2e9312b 100644 --- a/Makefile.in +++ b/Makefile.in @@ -85,6 +85,8 @@ LINTFLAGS+=@NETBSD_LINTFLAGS@ LINTFLAGS+="-Dsigset_t=long" # FreeBSD LINTFLAGS+="-D__uint16_t=uint16_t" "-DEVP_PKEY_ASN1_METHOD=int" "-D_RuneLocale=int" "-D__va_list=va_list" "-D__uint32_t=uint32_t" "-D_Alignof(x)=x" "-D__aligned(x)=" "-D__requires_exclusive(x)=" "-D__requires_unlocked(x)=" "-D__locks_exclusive(x)=" "-D__trylocks_exclusive(x)=" "-D__unlocks(x)=" "-D__locks_shared(x)=" "-D__trylocks_shared(x)=" +# GCC Docker +LINTFLAGS+=@GCC_DOCKER_LINTFLAGS@ INSTALL=$(SHELL) $(srcdir)/install-sh diff --git a/configure b/configure index 7e722b59e..57f8094a3 100755 --- a/configure +++ b/configure @@ -683,6 +683,7 @@ HAVE_SSL PC_CRYPTO_DEPENDENCY CONFIG_DATE NETBSD_LINTFLAGS +GCC_DOCKER_LINTFLAGS PYUNBOUND_UNINSTALL PYUNBOUND_INSTALL PYUNBOUND_TARGET @@ -17888,6 +17889,11 @@ if test "`uname`" = "NetBSD"; then NETBSD_LINTFLAGS='"-D__RENAME(x)=" -D_NETINET_IN_H_' fi + +if test "`uname -o`" = "GNU/Linux"; then + # splint cannot parse modern c99 header files + GCC_DOCKER_LINTFLAGS='-syntax' +fi CONFIG_DATE=`date +%Y%m%d` diff --git a/doc/README.tests b/doc/README.tests index 5385e2b22..122bf02f3 100644 --- a/doc/README.tests +++ b/doc/README.tests @@ -15,6 +15,14 @@ You need to have the following programs installed and in your PATH. * xxd and nc (optional) - for (malformed) packet transmission. The optional programs are detected and can be omitted. +You can also use prepared Dockerfile to run tests inside docker based on latest gcc image: +* build container: docker build -t unbound-tester . +* run container: docker run -it --mount type=bind,source="$(pwd)",target=/usr/src/unbound --rm unbound-tester +* configure environment: ./configure +* run test: make test +* run long tests: make longtest +It is worth to mention that you need to enable [ipv6 in your docker daemon configuration](https://docs.docker.com/config/daemon/ipv6/) because some tests need ipv6 network stack. + testdata/ contains the data for tests. testcode/ contains scripts and c code for the tests. diff --git a/testcode/petal.c b/testcode/petal.c index 123684aab..78f1ca2f5 100644 --- a/testcode/petal.c +++ b/testcode/petal.c @@ -220,8 +220,11 @@ read_http_headers(SSL* ssl, char* file, size_t flen, char* host, size_t hlen, host[0] = 0; while(read_ssl_line(ssl, buf, sizeof(buf))) { if(verb>=2) printf("read: %s\n", buf); - if(buf[0] == 0) + if(buf[0] == 0) { + int e = ERR_peek_error(); + printf("error string: %s\n", ERR_reason_error_string(e)); return 1; + } if(!process_one_header(buf, file, flen, host, hlen, vs)) return 0; } @@ -238,8 +241,11 @@ setup_ctx(char* key, char* cert) (void)SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv2); #endif (void)SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv3); - if(!SSL_CTX_use_certificate_chain_file(ctx, cert)) + if(!SSL_CTX_use_certificate_chain_file(ctx, cert)) { + int e = ERR_peek_error(); + printf("error string: %s\n", ERR_reason_error_string(e)); print_exit("cannot read cert"); + } if(!SSL_CTX_use_PrivateKey_file(ctx, key, SSL_FILETYPE_PEM)) print_exit("cannot read key"); if(!SSL_CTX_check_private_key(ctx)) diff --git a/testdata/fwd_zero.tdir/fwd_zero.test b/testdata/fwd_zero.tdir/fwd_zero.test index 87a2dec9c..2e0806d6f 100644 --- a/testdata/fwd_zero.tdir/fwd_zero.test +++ b/testdata/fwd_zero.tdir/fwd_zero.test @@ -7,7 +7,7 @@ PRE="../.." OPT="-i" -if nc -h 2>&1 | grep -- "-w secs" >/dev/null; then +if nc -h 2>&1 | grep -E -- "-w (timeout|secs)" >/dev/null; then OPT="-w" fi diff --git a/util/iana_ports.inc b/util/iana_ports.inc index f928d0669..b93af015d 100644 --- a/util/iana_ports.inc +++ b/util/iana_ports.inc @@ -4244,6 +4244,7 @@ 5504, 5505, 5506, +5540, 5553, 5554, 5555, diff --git a/util/netevent.c b/util/netevent.c index 01e44c9b6..b1cc995c0 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -1232,6 +1232,13 @@ ssl_handshake(struct comm_point* c) if(want == SSL_ERROR_WANT_READ) { if(c->ssl_shake_state == comm_ssl_shake_read) return 1; + /* According to https://www.openssl.org/docs/man1.1.1/man3/SSL_do_handshake.html + * we should repeat handshake - for non blocking BIO + */ + if(c->ssl_shake_state == comm_ssl_shake_write) { + comm_point_listen_for_rw(c, 0, 1); + return 1; + } c->ssl_shake_state = comm_ssl_shake_read; comm_point_listen_for_rw(c, 1, 0); return 1; From 11caae256b0c82a2002162702fe0697f5396baf9 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 30 Jul 2021 13:35:23 +0200 Subject: [PATCH 315/553] - Fix #515: Compilation against openssl 3.0.0 beta2 is failing to build unbound. --- doc/Changelog | 4 ++++ smallapp/unbound-control.c | 4 +--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 82fd320e7..a2821b44d 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +30 July 2021: Wouter + - Fix #515: Compilation against openssl 3.0.0 beta2 is failing to + build unbound. + 26 July 2021: George - Merge #513: Stream reuse, attempt to fix #411, #439, #469. This introduces a couple of fixes for the stream reuse functionality diff --git a/smallapp/unbound-control.c b/smallapp/unbound-control.c index af72f2a4e..a3df25795 100644 --- a/smallapp/unbound-control.c +++ b/smallapp/unbound-control.c @@ -499,9 +499,7 @@ static void ssl_path_err(const char* s, const char *path) { unsigned long err; err = ERR_peek_error(); - if (ERR_GET_LIB(err) == ERR_LIB_SYS && - (ERR_GET_FUNC(err) == SYS_F_FOPEN || - ERR_GET_FUNC(err) == SYS_F_FREAD) ) { + if (ERR_GET_LIB(err) == ERR_LIB_SYS) { fprintf(stderr, "error: %s\n%s: %s\n", s, path, ERR_reason_error_string(err)); exit(1); From b6abcb150808412678e87e49c829b1a3ef6509da Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 30 Jul 2021 13:54:43 +0200 Subject: [PATCH 316/553] - For #515: Fix compilation with openssl 3.0.0 beta2, lib64 dir and SSL_get_peer_certificate. - Move acx_nlnetlabs.m4 to version 41, with lib64 openssl dir check. --- acx_nlnetlabs.m4 | 15 +++++++++++---- config.h.in | 3 +++ configure | 32 ++++++++++++++++---------------- configure.ac | 2 +- daemon/remote.c | 4 ++++ doc/Changelog | 3 +++ util/netevent.c | 8 ++++++++ 7 files changed, 46 insertions(+), 21 deletions(-) diff --git a/acx_nlnetlabs.m4 b/acx_nlnetlabs.m4 index 7ce790708..39e92d875 100644 --- a/acx_nlnetlabs.m4 +++ b/acx_nlnetlabs.m4 @@ -2,7 +2,8 @@ # Copyright 2009, Wouter Wijngaards, NLnet Labs. # BSD licensed. # -# Version 40 +# Version 41 +# 2021-07-30 fix for openssl use of lib64 directory. # 2021-06-14 fix nonblocking test to use host instead of target for mingw test. # 2021-05-17 fix nonblocking socket test from grep on mingw32 to mingw for # 64bit compatibility. @@ -669,9 +670,15 @@ AC_DEFUN([ACX_SSL_CHECKS], [ HAVE_SSL=yes dnl assume /usr is already in the lib and dynlib paths. if test "$ssldir" != "/usr" -a "$ssldir" != ""; then - LDFLAGS="$LDFLAGS -L$ssldir/lib" - LIBSSL_LDFLAGS="$LIBSSL_LDFLAGS -L$ssldir/lib" - ACX_RUNTIME_PATH_ADD([$ssldir/lib]) + if test ! -d "$ssldir/lib" -a -d "$ssldir/lib64"; then + LDFLAGS="$LDFLAGS -L$ssldir/lib64" + LIBSSL_LDFLAGS="$LIBSSL_LDFLAGS -L$ssldir/lib64" + ACX_RUNTIME_PATH_ADD([$ssldir/lib64]) + else + LDFLAGS="$LDFLAGS -L$ssldir/lib" + LIBSSL_LDFLAGS="$LIBSSL_LDFLAGS -L$ssldir/lib" + ACX_RUNTIME_PATH_ADD([$ssldir/lib]) + fi fi AC_MSG_CHECKING([for EVP_sha256 in -lcrypto]) diff --git a/config.h.in b/config.h.in index cb27afa4f..3d45a0953 100644 --- a/config.h.in +++ b/config.h.in @@ -541,6 +541,9 @@ /* Define to 1 if you have the `SSL_get0_peername' function. */ #undef HAVE_SSL_GET0_PEERNAME +/* Define to 1 if you have the `SSL_get1_peer_certificate' function. */ +#undef HAVE_SSL_GET1_PEER_CERTIFICATE + /* Define to 1 if you have the `SSL_set1_host' function. */ #undef HAVE_SSL_SET1_HOST diff --git a/configure b/configure index 7e722b59e..ede92e732 100755 --- a/configure +++ b/configure @@ -811,7 +811,6 @@ infodir docdir oldincludedir includedir -runstatedir localstatedir sharedstatedir sysconfdir @@ -962,7 +961,6 @@ datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' -runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -1215,15 +1213,6 @@ do | -silent | --silent | --silen | --sile | --sil) silent=yes ;; - -runstatedir | --runstatedir | --runstatedi | --runstated \ - | --runstate | --runstat | --runsta | --runst | --runs \ - | --run | --ru | --r) - ac_prev=runstatedir ;; - -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ - | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ - | --run=* | --ru=* | --r=*) - runstatedir=$ac_optarg ;; - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1361,7 +1350,7 @@ fi for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir runstatedir + libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1514,7 +1503,6 @@ Fine tuning of the installation directories: --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -18020,8 +18008,19 @@ _ACEOF $as_echo "found in $ssldir" >&6; } HAVE_SSL=yes if test "$ssldir" != "/usr" -a "$ssldir" != ""; then - LDFLAGS="$LDFLAGS -L$ssldir/lib" - LIBSSL_LDFLAGS="$LIBSSL_LDFLAGS -L$ssldir/lib" + if test ! -d "$ssldir/lib" -a -d "$ssldir/lib64"; then + LDFLAGS="$LDFLAGS -L$ssldir/lib64" + LIBSSL_LDFLAGS="$LIBSSL_LDFLAGS -L$ssldir/lib64" + + if test "x$enable_rpath" = xyes; then + if echo "$ssldir/lib64" | grep "^/" >/dev/null; then + RUNTIME_PATH="$RUNTIME_PATH -R$ssldir/lib64" + fi + fi + + else + LDFLAGS="$LDFLAGS -L$ssldir/lib" + LIBSSL_LDFLAGS="$LIBSSL_LDFLAGS -L$ssldir/lib" if test "x$enable_rpath" = xyes; then if echo "$ssldir/lib" | grep "^/" >/dev/null; then @@ -18029,6 +18028,7 @@ $as_echo "found in $ssldir" >&6; } fi fi + fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EVP_sha256 in -lcrypto" >&5 @@ -18441,7 +18441,7 @@ done # these check_funcs need -lssl BAKLIBS="$LIBS" LIBS="-lssl $LIBS" -for ac_func in OPENSSL_init_ssl SSL_CTX_set_security_level SSL_set1_host SSL_get0_peername X509_VERIFY_PARAM_set1_host SSL_CTX_set_ciphersuites SSL_CTX_set_tlsext_ticket_key_evp_cb SSL_CTX_set_alpn_select_cb SSL_get0_alpn_selected SSL_CTX_set_alpn_protos +for ac_func in OPENSSL_init_ssl SSL_CTX_set_security_level SSL_set1_host SSL_get0_peername X509_VERIFY_PARAM_set1_host SSL_CTX_set_ciphersuites SSL_CTX_set_tlsext_ticket_key_evp_cb SSL_CTX_set_alpn_select_cb SSL_get0_alpn_selected SSL_CTX_set_alpn_protos SSL_get1_peer_certificate do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" diff --git a/configure.ac b/configure.ac index 5ffbe6834..933529690 100644 --- a/configure.ac +++ b/configure.ac @@ -865,7 +865,7 @@ AC_CHECK_FUNCS([OPENSSL_config EVP_sha1 EVP_sha256 EVP_sha512 FIPS_mode EVP_MD_C # these check_funcs need -lssl BAKLIBS="$LIBS" LIBS="-lssl $LIBS" -AC_CHECK_FUNCS([OPENSSL_init_ssl SSL_CTX_set_security_level SSL_set1_host SSL_get0_peername X509_VERIFY_PARAM_set1_host SSL_CTX_set_ciphersuites SSL_CTX_set_tlsext_ticket_key_evp_cb SSL_CTX_set_alpn_select_cb SSL_get0_alpn_selected SSL_CTX_set_alpn_protos]) +AC_CHECK_FUNCS([OPENSSL_init_ssl SSL_CTX_set_security_level SSL_set1_host SSL_get0_peername X509_VERIFY_PARAM_set1_host SSL_CTX_set_ciphersuites SSL_CTX_set_tlsext_ticket_key_evp_cb SSL_CTX_set_alpn_select_cb SSL_get0_alpn_selected SSL_CTX_set_alpn_protos SSL_get1_peer_certificate]) LIBS="$BAKLIBS" AC_CHECK_DECLS([SSL_COMP_get_compression_methods,sk_SSL_COMP_pop_free,SSL_CTX_set_ecdh_auto], [], [], [ diff --git a/daemon/remote.c b/daemon/remote.c index dd17bff91..923ddefa4 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -3338,7 +3338,11 @@ int remote_control_callback(struct comm_point* c, void* arg, int err, if (!rc->use_cert) { verbose(VERB_ALGO, "unauthenticated remote control connection"); } else if(SSL_get_verify_result(s->ssl) == X509_V_OK) { +#ifdef HAVE_SSL_GET1_PEER_CERTIFICATE + X509* x = SSL_get1_peer_certificate(s->ssl); +#else X509* x = SSL_get_peer_certificate(s->ssl); +#endif if(!x) { verbose(VERB_DETAIL, "remote control connection " "provided no client certificate"); diff --git a/doc/Changelog b/doc/Changelog index a2821b44d..aca4b2d1f 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,9 @@ 30 July 2021: Wouter - Fix #515: Compilation against openssl 3.0.0 beta2 is failing to build unbound. + - For #515: Fix compilation with openssl 3.0.0 beta2, lib64 dir and + SSL_get_peer_certificate. + - Move acx_nlnetlabs.m4 to version 41, with lib64 openssl dir check. 26 July 2021: George - Merge #513: Stream reuse, attempt to fix #411, #439, #469. This diff --git a/util/netevent.c b/util/netevent.c index 01e44c9b6..d1316c5b4 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -1271,7 +1271,11 @@ ssl_handshake(struct comm_point* c) if((SSL_get_verify_mode(c->ssl)&SSL_VERIFY_PEER)) { /* verification */ if(SSL_get_verify_result(c->ssl) == X509_V_OK) { +#ifdef HAVE_SSL_GET1_PEER_CERTIFICATE + X509* x = SSL_get1_peer_certificate(c->ssl); +#else X509* x = SSL_get_peer_certificate(c->ssl); +#endif if(!x) { log_addr(VERB_ALGO, "SSL connection failed: " "no certificate", @@ -1297,7 +1301,11 @@ ssl_handshake(struct comm_point* c) #endif X509_free(x); } else { +#ifdef HAVE_SSL_GET1_PEER_CERTIFICATE + X509* x = SSL_get1_peer_certificate(c->ssl); +#else X509* x = SSL_get_peer_certificate(c->ssl); +#endif if(x) { log_cert(VERB_ALGO, "peer certificate", x); X509_free(x); From ca00814e674ac8047e07b6bec55413002c1035d7 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 2 Aug 2021 13:33:32 +0200 Subject: [PATCH 317/553] - Prepare for OpenSSL 3.0.0 provider API usage, move the sldns keyraw functions to produce EVP_PKEY results. --- doc/Changelog | 4 ++++ sldns/keyraw.c | 40 +++++++++++++++++++++++++++++++++ sldns/keyraw.h | 16 +++++++++++++ validator/val_secalgo.c | 50 +++++------------------------------------ 4 files changed, 66 insertions(+), 44 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index aca4b2d1f..8557baf18 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +2 August 2021: Wouter + - Prepare for OpenSSL 3.0.0 provider API usage, move the sldns + keyraw functions to produce EVP_PKEY results. + 30 July 2021: Wouter - Fix #515: Compilation against openssl 3.0.0 beta2 is failing to build unbound. diff --git a/sldns/keyraw.c b/sldns/keyraw.c index 2ec225bc5..34cf94332 100644 --- a/sldns/keyraw.c +++ b/sldns/keyraw.c @@ -262,6 +262,26 @@ sldns_key_buf2dsa_raw(unsigned char* key, size_t len) return dsa; } +EVP_PKEY *sldns_key_dsa2pkey_raw(unsigned char* key, size_t len) +{ + DSA* dsa; + EVP_PKEY* evp_key = EVP_PKEY_new(); + if(!evp_key) { + return 0; + } + dsa = sldns_key_buf2dsa_raw(key, len); + if(!dsa) { + EVP_PKEY_free(evp_key); + return 0; + } + if(EVP_PKEY_assign_DSA(evp_key, dsa) == 0) { + DSA_free(dsa); + EVP_PKEY_free(evp_key); + return 0; + } + return evp_key; +} + RSA * sldns_key_buf2rsa_raw(unsigned char* key, size_t len) { @@ -328,6 +348,26 @@ sldns_key_buf2rsa_raw(unsigned char* key, size_t len) return rsa; } +EVP_PKEY* sldns_key_rsa2pkey_raw(unsigned char* key, size_t len) +{ + RSA* rsa; + EVP_PKEY *evp_key = EVP_PKEY_new(); + if(!evp_key) { + return 0; + } + rsa = sldns_key_buf2rsa_raw(key, len); + if(!rsa) { + EVP_PKEY_free(evp_key); + return 0; + } + if(EVP_PKEY_assign_RSA(evp_key, rsa) == 0) { + RSA_free(rsa); + EVP_PKEY_free(evp_key); + return 0; + } + return evp_key; +} + #ifdef USE_GOST EVP_PKEY* sldns_gost2pkey_raw(unsigned char* key, size_t keylen) diff --git a/sldns/keyraw.h b/sldns/keyraw.h index 989b02ce0..0166129b3 100644 --- a/sldns/keyraw.h +++ b/sldns/keyraw.h @@ -65,6 +65,14 @@ void sldns_key_EVP_unload_gost(void); */ DSA *sldns_key_buf2dsa_raw(unsigned char* key, size_t len); +/** + * Converts a holding buffer with DSA key material to EVP PKEY in openssl. + * \param[in] key the uncompressed wireformat of the key. + * \param[in] len length of key data + * \return the key or NULL on error. + */ +EVP_PKEY *sldns_key_dsa2pkey_raw(unsigned char* key, size_t len); + /** * Converts a holding buffer with key material to EVP PKEY in openssl. * Only available if ldns was compiled with GOST. @@ -92,6 +100,14 @@ EVP_PKEY* sldns_ecdsa2pkey_raw(unsigned char* key, size_t keylen, uint8_t algo); */ RSA *sldns_key_buf2rsa_raw(unsigned char* key, size_t len); +/** + * Converts a holding buffer with RSA key material to EVP PKEY in openssl. + * \param[in] key the uncompressed wireformat of the key. + * \param[in] len length of key data + * \return the key or NULL on error. + */ +EVP_PKEY* sldns_key_rsa2pkey_raw(unsigned char* key, size_t len); + /** * Converts a holding buffer with key material to EVP PKEY in openssl. * Only available if ldns was compiled with ED25519. diff --git a/validator/val_secalgo.c b/validator/val_secalgo.c index a4d020143..5a817a4c8 100644 --- a/validator/val_secalgo.c +++ b/validator/val_secalgo.c @@ -513,29 +513,13 @@ static int setup_key_digest(int algo, EVP_PKEY** evp_key, const EVP_MD** digest_type, unsigned char* key, size_t keylen) { -#if defined(USE_DSA) && defined(USE_SHA1) - DSA* dsa; -#endif - RSA* rsa; - switch(algo) { #if defined(USE_DSA) && defined(USE_SHA1) case LDNS_DSA: case LDNS_DSA_NSEC3: - *evp_key = EVP_PKEY_new(); + *evp_key = sldns_key_dsa2pkey_raw(key, keylen); if(!*evp_key) { - log_err("verify: malloc failure in crypto"); - return 0; - } - dsa = sldns_key_buf2dsa_raw(key, keylen); - if(!dsa) { - verbose(VERB_QUERY, "verify: " - "sldns_key_buf2dsa_raw failed"); - return 0; - } - if(EVP_PKEY_assign_DSA(*evp_key, dsa) == 0) { - verbose(VERB_QUERY, "verify: " - "EVP_PKEY_assign_DSA failed"); + log_err("verify: sldns_key_dsa2pkey failed"); return 0; } #ifdef HAVE_EVP_DSS1 @@ -558,20 +542,9 @@ setup_key_digest(int algo, EVP_PKEY** evp_key, const EVP_MD** digest_type, #if defined(HAVE_EVP_SHA512) && defined(USE_SHA2) case LDNS_RSASHA512: #endif - *evp_key = EVP_PKEY_new(); + *evp_key = sldns_key_rsa2pkey_raw(key, keylen); if(!*evp_key) { - log_err("verify: malloc failure in crypto"); - return 0; - } - rsa = sldns_key_buf2rsa_raw(key, keylen); - if(!rsa) { - verbose(VERB_QUERY, "verify: " - "sldns_key_buf2rsa_raw SHA failed"); - return 0; - } - if(EVP_PKEY_assign_RSA(*evp_key, rsa) == 0) { - verbose(VERB_QUERY, "verify: " - "EVP_PKEY_assign_RSA SHA failed"); + log_err("verify: sldns_key_rsa2pkey SHA failed"); return 0; } @@ -595,20 +568,9 @@ setup_key_digest(int algo, EVP_PKEY** evp_key, const EVP_MD** digest_type, #endif /* defined(USE_SHA1) || (defined(HAVE_EVP_SHA256) && defined(USE_SHA2)) || (defined(HAVE_EVP_SHA512) && defined(USE_SHA2)) */ case LDNS_RSAMD5: - *evp_key = EVP_PKEY_new(); + *evp_key = sldns_key_rsa2pkey_raw(key, keylen); if(!*evp_key) { - log_err("verify: malloc failure in crypto"); - return 0; - } - rsa = sldns_key_buf2rsa_raw(key, keylen); - if(!rsa) { - verbose(VERB_QUERY, "verify: " - "sldns_key_buf2rsa_raw MD5 failed"); - return 0; - } - if(EVP_PKEY_assign_RSA(*evp_key, rsa) == 0) { - verbose(VERB_QUERY, "verify: " - "EVP_PKEY_assign_RSA MD5 failed"); + log_err("verify: sldns_key_rsa2pkey MD5 failed"); return 0; } *digest_type = EVP_md5(); From 60663c766a662dcb8546d840e4793090de00a219 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 2 Aug 2021 13:39:48 +0200 Subject: [PATCH 318/553] Review fixup for keyraw pkey function use. --- validator/val_secalgo.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/validator/val_secalgo.c b/validator/val_secalgo.c index 5a817a4c8..7abf66f01 100644 --- a/validator/val_secalgo.c +++ b/validator/val_secalgo.c @@ -519,7 +519,7 @@ setup_key_digest(int algo, EVP_PKEY** evp_key, const EVP_MD** digest_type, case LDNS_DSA_NSEC3: *evp_key = sldns_key_dsa2pkey_raw(key, keylen); if(!*evp_key) { - log_err("verify: sldns_key_dsa2pkey failed"); + verbose(VERB_QUERY, "verify: sldns_key_dsa2pkey failed"); return 0; } #ifdef HAVE_EVP_DSS1 @@ -544,7 +544,7 @@ setup_key_digest(int algo, EVP_PKEY** evp_key, const EVP_MD** digest_type, #endif *evp_key = sldns_key_rsa2pkey_raw(key, keylen); if(!*evp_key) { - log_err("verify: sldns_key_rsa2pkey SHA failed"); + verbose(VERB_QUERY, "verify: sldns_key_rsa2pkey SHA failed"); return 0; } @@ -570,7 +570,7 @@ setup_key_digest(int algo, EVP_PKEY** evp_key, const EVP_MD** digest_type, case LDNS_RSAMD5: *evp_key = sldns_key_rsa2pkey_raw(key, keylen); if(!*evp_key) { - log_err("verify: sldns_key_rsa2pkey MD5 failed"); + verbose(VERB_QUERY, "verify: sldns_key_rsa2pkey MD5 failed"); return 0; } *digest_type = EVP_md5(); From d242bfb73b90bdb1f34c1072dfab49f21729ccb6 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 2 Aug 2021 14:43:51 +0200 Subject: [PATCH 319/553] - Move RSA and DSA to use OpenSSL 3.0.0 API. --- config.h.in | 6 ++ configure | 4 +- configure.ac | 4 +- doc/Changelog | 1 + sldns/keyraw.c | 246 ++++++++++++++++++++++++++++++++++++++++--------- sldns/keyraw.h | 4 + 6 files changed, 217 insertions(+), 48 deletions(-) diff --git a/config.h.in b/config.h.in index 3d45a0953..8fdf83e74 100644 --- a/config.h.in +++ b/config.h.in @@ -429,6 +429,9 @@ /* Define to 1 if you have the `OPENSSL_init_ssl' function. */ #undef HAVE_OPENSSL_INIT_SSL +/* Define to 1 if you have the header file. */ +#undef HAVE_OPENSSL_PARAM_BUILD_H + /* Define to 1 if you have the header file. */ #undef HAVE_OPENSSL_RAND_H @@ -438,6 +441,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_OPENSSL_SSL_H +/* Define to 1 if you have the `OSSL_PARAM_BLD_new' function. */ +#undef HAVE_OSSL_PARAM_BLD_NEW + /* Define if you have POSIX threads libraries and header files. */ #undef HAVE_PTHREAD diff --git a/configure b/configure index ede92e732..84c97357f 100755 --- a/configure +++ b/configure @@ -18411,7 +18411,7 @@ else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi -for ac_header in openssl/conf.h openssl/engine.h openssl/bn.h openssl/dh.h openssl/dsa.h openssl/rsa.h openssl/core_names.h +for ac_header in openssl/conf.h openssl/engine.h openssl/bn.h openssl/dh.h openssl/dsa.h openssl/rsa.h openssl/core_names.h openssl/param_build.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default @@ -18425,7 +18425,7 @@ fi done -for ac_func in OPENSSL_config EVP_sha1 EVP_sha256 EVP_sha512 FIPS_mode EVP_MD_CTX_new OpenSSL_add_all_digests OPENSSL_init_crypto EVP_cleanup ENGINE_cleanup ERR_load_crypto_strings CRYPTO_cleanup_all_ex_data ERR_free_strings RAND_cleanup DSA_SIG_set0 EVP_dss1 EVP_DigestVerify EVP_aes_256_cbc EVP_EncryptInit_ex HMAC_Init_ex CRYPTO_THREADID_set_callback EVP_MAC_CTX_set_params +for ac_func in OPENSSL_config EVP_sha1 EVP_sha256 EVP_sha512 FIPS_mode EVP_MD_CTX_new OpenSSL_add_all_digests OPENSSL_init_crypto EVP_cleanup ENGINE_cleanup ERR_load_crypto_strings CRYPTO_cleanup_all_ex_data ERR_free_strings RAND_cleanup DSA_SIG_set0 EVP_dss1 EVP_DigestVerify EVP_aes_256_cbc EVP_EncryptInit_ex HMAC_Init_ex CRYPTO_THREADID_set_callback EVP_MAC_CTX_set_params OSSL_PARAM_BLD_new do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" diff --git a/configure.ac b/configure.ac index 933529690..2ec11b970 100644 --- a/configure.ac +++ b/configure.ac @@ -859,8 +859,8 @@ if grep VERSION_TEXT $ssldir/include/openssl/opensslv.h | grep "LibreSSL" >/dev/ else AC_MSG_RESULT([no]) fi -AC_CHECK_HEADERS([openssl/conf.h openssl/engine.h openssl/bn.h openssl/dh.h openssl/dsa.h openssl/rsa.h openssl/core_names.h],,, [AC_INCLUDES_DEFAULT]) -AC_CHECK_FUNCS([OPENSSL_config EVP_sha1 EVP_sha256 EVP_sha512 FIPS_mode EVP_MD_CTX_new OpenSSL_add_all_digests OPENSSL_init_crypto EVP_cleanup ENGINE_cleanup ERR_load_crypto_strings CRYPTO_cleanup_all_ex_data ERR_free_strings RAND_cleanup DSA_SIG_set0 EVP_dss1 EVP_DigestVerify EVP_aes_256_cbc EVP_EncryptInit_ex HMAC_Init_ex CRYPTO_THREADID_set_callback EVP_MAC_CTX_set_params]) +AC_CHECK_HEADERS([openssl/conf.h openssl/engine.h openssl/bn.h openssl/dh.h openssl/dsa.h openssl/rsa.h openssl/core_names.h openssl/param_build.h],,, [AC_INCLUDES_DEFAULT]) +AC_CHECK_FUNCS([OPENSSL_config EVP_sha1 EVP_sha256 EVP_sha512 FIPS_mode EVP_MD_CTX_new OpenSSL_add_all_digests OPENSSL_init_crypto EVP_cleanup ENGINE_cleanup ERR_load_crypto_strings CRYPTO_cleanup_all_ex_data ERR_free_strings RAND_cleanup DSA_SIG_set0 EVP_dss1 EVP_DigestVerify EVP_aes_256_cbc EVP_EncryptInit_ex HMAC_Init_ex CRYPTO_THREADID_set_callback EVP_MAC_CTX_set_params OSSL_PARAM_BLD_new]) # these check_funcs need -lssl BAKLIBS="$LIBS" diff --git a/doc/Changelog b/doc/Changelog index 8557baf18..686203b8e 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,7 @@ 2 August 2021: Wouter - Prepare for OpenSSL 3.0.0 provider API usage, move the sldns keyraw functions to produce EVP_PKEY results. + - Move RSA and DSA to use OpenSSL 3.0.0 API. 30 July 2021: Wouter - Fix #515: Compilation against openssl 3.0.0 beta2 is failing to diff --git a/sldns/keyraw.c b/sldns/keyraw.c index 34cf94332..ce94dd74e 100644 --- a/sldns/keyraw.c +++ b/sldns/keyraw.c @@ -26,11 +26,15 @@ #ifdef HAVE_OPENSSL_BN_H #include #endif -#ifdef HAVE_OPENSSL_RSA_H -#include -#endif -#ifdef HAVE_OPENSSL_DSA_H -#include +#ifdef HAVE_OPENSSL_PARAM_BUILD_H +# include +#else +# ifdef HAVE_OPENSSL_RSA_H +# include +# endif +# ifdef HAVE_OPENSSL_DSA_H +# include +# endif #endif #endif /* HAVE_SSL */ @@ -191,45 +195,59 @@ void sldns_key_EVP_unload_gost(void) } #endif /* USE_GOST */ -DSA * -sldns_key_buf2dsa_raw(unsigned char* key, size_t len) +/* Retrieve params as BIGNUM from raw buffer */ +static int +sldns_key_dsa_buf_bignum(unsigned char* key, size_t len, BIGNUM** p, + BIGNUM** q, BIGNUM** g, BIGNUM** y) { uint8_t T; uint16_t length; uint16_t offset; - DSA *dsa; - BIGNUM *Q; BIGNUM *P; - BIGNUM *G; BIGNUM *Y; if(len == 0) - return NULL; + return 0; T = (uint8_t)key[0]; length = (64 + T * 8); offset = 1; if (T > 8) { - return NULL; + return 0; } if(len < (size_t)1 + SHA_DIGEST_LENGTH + 3*length) - return NULL; + return 0; - Q = BN_bin2bn(key+offset, SHA_DIGEST_LENGTH, NULL); + *q = BN_bin2bn(key+offset, SHA_DIGEST_LENGTH, NULL); offset += SHA_DIGEST_LENGTH; - P = BN_bin2bn(key+offset, (int)length, NULL); + *p = BN_bin2bn(key+offset, (int)length, NULL); offset += length; - G = BN_bin2bn(key+offset, (int)length, NULL); + *g = BN_bin2bn(key+offset, (int)length, NULL); offset += length; - Y = BN_bin2bn(key+offset, (int)length, NULL); + *y = BN_bin2bn(key+offset, (int)length, NULL); + if(!*q || !*p || !*g || !*y) { + BN_free(*q); + BN_free(*p); + BN_free(*g); + BN_free(*y); + return 0; + } + return 1; +} + +#ifndef HAVE_OSSL_PARAM_BLD_NEW +DSA * +sldns_key_buf2dsa_raw(unsigned char* key, size_t len) +{ + DSA *dsa; + BIGNUM *Q=NULL, *P=NULL, *G=NULL, *Y=NULL; + if(!sldns_key_dsa_buf_bignum(key, len, &P, &Q, &G, &Y)) { + return NULL; + } /* create the key and set its properties */ - if(!Q || !P || !G || !Y || !(dsa = DSA_new())) { - BN_free(Q); - BN_free(P); - BN_free(G); - BN_free(Y); + if(!(dsa = DSA_new())) { return NULL; } #if OPENSSL_VERSION_NUMBER < 0x10100000 || defined(HAVE_LIBRESSL) @@ -261,42 +279,110 @@ sldns_key_buf2dsa_raw(unsigned char* key, size_t len) return dsa; } +#endif /* HAVE_OSSL_PARAM_BLD_NEW */ EVP_PKEY *sldns_key_dsa2pkey_raw(unsigned char* key, size_t len) { +#ifdef HAVE_OSSL_PARAM_BLD_NEW + EVP_PKEY* evp_key = NULL; + EVP_PKEY_CTX* ctx; + BIGNUM *p=NULL, *q=NULL, *g=NULL, *y=NULL; + OSSL_PARAM_BLD* param_bld; + OSSL_PARAM* params = NULL; + if(!sldns_key_dsa_buf_bignum(key, len, &p, &q, &g, &y)) { + return NULL; + } + + param_bld = OSSL_PARAM_BLD_new(); + if(!param_bld) { + BN_free(p); + BN_free(q); + BN_free(g); + BN_free(y); + return NULL; + } + if(!OSSL_PARAM_BLD_push_BN(param_bld, "p", p) || + !OSSL_PARAM_BLD_push_BN(param_bld, "g", g) || + !OSSL_PARAM_BLD_push_BN(param_bld, "q", q) || + !OSSL_PARAM_BLD_push_BN(param_bld, "pub", y)) { + OSSL_PARAM_BLD_free(param_bld); + BN_free(p); + BN_free(q); + BN_free(g); + BN_free(y); + return NULL; + } + params = OSSL_PARAM_BLD_to_param(param_bld); + OSSL_PARAM_BLD_free(param_bld); + + ctx = EVP_PKEY_CTX_new_from_name(NULL, "DSA", NULL); + if(!ctx) { + BN_free(p); + BN_free(q); + BN_free(g); + BN_free(y); + return NULL; + } + if(EVP_PKEY_fromdata_init(ctx) <= 0) { + EVP_PKEY_CTX_free(ctx); + OSSL_PARAM_free(params); + BN_free(p); + BN_free(q); + BN_free(g); + BN_free(y); + return NULL; + } + if(EVP_PKEY_fromdata(ctx, &evp_key, EVP_PKEY_PUBLIC_KEY, params) <= 0) { + EVP_PKEY_CTX_free(ctx); + OSSL_PARAM_free(params); + BN_free(p); + BN_free(q); + BN_free(g); + BN_free(y); + return NULL; + } + + EVP_PKEY_CTX_free(ctx); + OSSL_PARAM_free(params); + BN_free(p); + BN_free(q); + BN_free(g); + BN_free(y); + return evp_key; +#else DSA* dsa; EVP_PKEY* evp_key = EVP_PKEY_new(); if(!evp_key) { - return 0; + return NULL; } dsa = sldns_key_buf2dsa_raw(key, len); if(!dsa) { EVP_PKEY_free(evp_key); - return 0; + return NULL; } if(EVP_PKEY_assign_DSA(evp_key, dsa) == 0) { DSA_free(dsa); EVP_PKEY_free(evp_key); - return 0; + return NULL; } return evp_key; +#endif } -RSA * -sldns_key_buf2rsa_raw(unsigned char* key, size_t len) +/* Retrieve params as BIGNUM from raw buffer, n is modulus, e is exponent */ +static int +sldns_key_rsa_buf_bignum(unsigned char* key, size_t len, BIGNUM** n, + BIGNUM** e) { uint16_t offset; uint16_t exp; uint16_t int16; - RSA *rsa; - BIGNUM *modulus; - BIGNUM *exponent; if (len == 0) - return NULL; + return 0; if (key[0] == 0) { if(len < 3) - return NULL; + return 0; memmove(&int16, key+1, 2); exp = ntohs(int16); offset = 3; @@ -307,23 +393,34 @@ sldns_key_buf2rsa_raw(unsigned char* key, size_t len) /* key length at least one */ if(len < (size_t)offset + exp + 1) - return NULL; + return 0; /* Exponent */ - exponent = BN_new(); - if(!exponent) return NULL; - (void) BN_bin2bn(key+offset, (int)exp, exponent); + *e = BN_new(); + if(!*e) return 0; + (void) BN_bin2bn(key+offset, (int)exp, *e); offset += exp; /* Modulus */ - modulus = BN_new(); - if(!modulus) { - BN_free(exponent); - return NULL; + *n = BN_new(); + if(!*n) { + BN_free(*e); + return 0; } /* length of the buffer must match the key length! */ - (void) BN_bin2bn(key+offset, (int)(len - offset), modulus); + (void) BN_bin2bn(key+offset, (int)(len - offset), *n); + return 1; +} +#ifndef HAVE_OSSL_PARAM_BLD_NEW +RSA * +sldns_key_buf2rsa_raw(unsigned char* key, size_t len) +{ + BIGNUM* modulus = NULL; + BIGNUM* exponent = NULL; + RSA *rsa; + if(!sldns_key_rsa_buf_bignum(key, len, &modulus, &exponent)) + return NULL; rsa = RSA_new(); if(!rsa) { BN_free(exponent); @@ -347,25 +444,86 @@ sldns_key_buf2rsa_raw(unsigned char* key, size_t len) return rsa; } +#endif /* HAVE_OSSL_PARAM_BLD_NEW */ EVP_PKEY* sldns_key_rsa2pkey_raw(unsigned char* key, size_t len) { +#ifdef HAVE_OSSL_PARAM_BLD_NEW + EVP_PKEY* evp_key = NULL; + EVP_PKEY_CTX* ctx; + BIGNUM *n=NULL, *e=NULL; + OSSL_PARAM_BLD* param_bld; + OSSL_PARAM* params = NULL; + + if(!sldns_key_rsa_buf_bignum(key, len, &n, &e)) { + return NULL; + } + + param_bld = OSSL_PARAM_BLD_new(); + if(!param_bld) { + BN_free(n); + BN_free(e); + return NULL; + } + if(!OSSL_PARAM_BLD_push_BN(param_bld, "n", n)) { + OSSL_PARAM_BLD_free(param_bld); + BN_free(n); + BN_free(e); + return NULL; + } + if(!OSSL_PARAM_BLD_push_BN(param_bld, "e", e)) { + OSSL_PARAM_BLD_free(param_bld); + BN_free(n); + BN_free(e); + return NULL; + } + params = OSSL_PARAM_BLD_to_param(param_bld); + OSSL_PARAM_BLD_free(param_bld); + + ctx = EVP_PKEY_CTX_new_from_name(NULL, "RSA", NULL); + if(!ctx) { + BN_free(n); + BN_free(e); + return NULL; + } + if(EVP_PKEY_fromdata_init(ctx) <= 0) { + EVP_PKEY_CTX_free(ctx); + OSSL_PARAM_free(params); + BN_free(n); + BN_free(e); + return NULL; + } + if(EVP_PKEY_fromdata(ctx, &evp_key, EVP_PKEY_PUBLIC_KEY, params) <= 0) { + EVP_PKEY_CTX_free(ctx); + OSSL_PARAM_free(params); + BN_free(n); + BN_free(e); + return NULL; + } + + EVP_PKEY_CTX_free(ctx); + OSSL_PARAM_free(params); + BN_free(n); + BN_free(e); + return evp_key; +#else RSA* rsa; EVP_PKEY *evp_key = EVP_PKEY_new(); if(!evp_key) { - return 0; + return NULL; } rsa = sldns_key_buf2rsa_raw(key, len); if(!rsa) { EVP_PKEY_free(evp_key); - return 0; + return NULL; } if(EVP_PKEY_assign_RSA(evp_key, rsa) == 0) { RSA_free(rsa); EVP_PKEY_free(evp_key); - return 0; + return NULL; } return evp_key; +#endif } #ifdef USE_GOST diff --git a/sldns/keyraw.h b/sldns/keyraw.h index 0166129b3..b1f19740c 100644 --- a/sldns/keyraw.h +++ b/sldns/keyraw.h @@ -57,6 +57,7 @@ int sldns_key_EVP_load_gost_id(void); /** Release the engine reference held for the GOST engine. */ void sldns_key_EVP_unload_gost(void); +#ifndef HAVE_OSSL_PARAM_BLD_NEW /** * Like sldns_key_buf2dsa, but uses raw buffer. * \param[in] key the uncompressed wireformat of the key. @@ -64,6 +65,7 @@ void sldns_key_EVP_unload_gost(void); * \return a DSA * structure with the key material */ DSA *sldns_key_buf2dsa_raw(unsigned char* key, size_t len); +#endif /** * Converts a holding buffer with DSA key material to EVP PKEY in openssl. @@ -92,6 +94,7 @@ EVP_PKEY* sldns_gost2pkey_raw(unsigned char* key, size_t keylen); */ EVP_PKEY* sldns_ecdsa2pkey_raw(unsigned char* key, size_t keylen, uint8_t algo); +#ifndef HAVE_OSSL_PARAM_BLD_NEW /** * Like sldns_key_buf2rsa, but uses raw buffer. * \param[in] key the uncompressed wireformat of the key. @@ -99,6 +102,7 @@ EVP_PKEY* sldns_ecdsa2pkey_raw(unsigned char* key, size_t keylen, uint8_t algo); * \return a RSA * structure with the key material */ RSA *sldns_key_buf2rsa_raw(unsigned char* key, size_t len); +#endif /** * Converts a holding buffer with RSA key material to EVP PKEY in openssl. From 0bdcbc80b96983bca6c3710e58e34ccd7d4019ed Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 2 Aug 2021 15:06:26 +0200 Subject: [PATCH 320/553] - Move ECDSA functions to use OpenSSL 3.0.0 API. --- doc/Changelog | 1 + sldns/keyraw.c | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 686203b8e..29f8cbe75 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -2,6 +2,7 @@ - Prepare for OpenSSL 3.0.0 provider API usage, move the sldns keyraw functions to produce EVP_PKEY results. - Move RSA and DSA to use OpenSSL 3.0.0 API. + - Move ECDSA functions to use OpenSSL 3.0.0 API. 30 July 2021: Wouter - Fix #515: Compilation against openssl 3.0.0 beta2 is failing to diff --git a/sldns/keyraw.c b/sldns/keyraw.c index ce94dd74e..b1e60d8b5 100644 --- a/sldns/keyraw.c +++ b/sldns/keyraw.c @@ -317,6 +317,7 @@ EVP_PKEY *sldns_key_dsa2pkey_raw(unsigned char* key, size_t len) ctx = EVP_PKEY_CTX_new_from_name(NULL, "DSA", NULL); if(!ctx) { + OSSL_PARAM_free(params); BN_free(p); BN_free(q); BN_free(g); @@ -482,6 +483,7 @@ EVP_PKEY* sldns_key_rsa2pkey_raw(unsigned char* key, size_t len) ctx = EVP_PKEY_CTX_new_from_name(NULL, "RSA", NULL); if(!ctx) { + OSSL_PARAM_free(params); BN_free(n); BN_free(e); return NULL; @@ -555,6 +557,62 @@ sldns_gost2pkey_raw(unsigned char* key, size_t keylen) EVP_PKEY* sldns_ecdsa2pkey_raw(unsigned char* key, size_t keylen, uint8_t algo) { +#ifdef HAVE_OSSL_PARAM_BLD_NEW + unsigned char buf[256+2]; /* sufficient for 2*384/8+1 */ + EVP_PKEY *evp_key = NULL; + EVP_PKEY_CTX* ctx; + OSSL_PARAM_BLD* param_bld; + OSSL_PARAM* params = NULL; + char* group = NULL; + + /* check length, which uncompressed must be 2 bignums */ + if(algo == LDNS_ECDSAP256SHA256) { + if(keylen != 2*256/8) return NULL; + group = "prime256v1"; + } else if(algo == LDNS_ECDSAP384SHA384) { + if(keylen != 2*384/8) return NULL; + group = "P-384"; + } else { + return NULL; + } + if(keylen+1 > sizeof(buf)) { /* sanity check */ + return NULL; + } + /* prepend the 0x04 for uncompressed format */ + buf[0] = POINT_CONVERSION_UNCOMPRESSED; + memmove(buf+1, key, keylen); + + param_bld = OSSL_PARAM_BLD_new(); + if(!param_bld) { + return NULL; + } + if(!OSSL_PARAM_BLD_push_utf8_string(param_bld, "group", group, 0) || + !OSSL_PARAM_BLD_push_octet_string(param_bld, "pub", buf, keylen+1)) { + OSSL_PARAM_BLD_free(param_bld); + return NULL; + } + params = OSSL_PARAM_BLD_to_param(param_bld); + OSSL_PARAM_BLD_free(param_bld); + + ctx = EVP_PKEY_CTX_new_from_name(NULL, "EC", NULL); + if(!ctx) { + OSSL_PARAM_free(params); + return NULL; + } + if(EVP_PKEY_fromdata_init(ctx) <= 0) { + EVP_PKEY_CTX_free(ctx); + OSSL_PARAM_free(params); + return NULL; + } + if(EVP_PKEY_fromdata(ctx, &evp_key, EVP_PKEY_PUBLIC_KEY, params) <= 0) { + EVP_PKEY_CTX_free(ctx); + OSSL_PARAM_free(params); + return NULL; + } + EVP_PKEY_CTX_free(ctx); + OSSL_PARAM_free(params); + return evp_key; +#else unsigned char buf[256+2]; /* sufficient for 2*384/8+1 */ const unsigned char* pp = buf; EVP_PKEY *evp_key; @@ -591,6 +649,7 @@ sldns_ecdsa2pkey_raw(unsigned char* key, size_t keylen, uint8_t algo) return NULL; } return evp_key; +#endif /* HAVE_OSSL_PARAM_BLD_NEW */ } #endif /* USE_ECDSA */ From 89e2f2f753cb5dcca765ba57b44d190e7a9c6f24 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 2 Aug 2021 15:26:20 +0200 Subject: [PATCH 321/553] - iana portlist update. --- doc/Changelog | 1 + util/iana_ports.inc | 1 + 2 files changed, 2 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 29f8cbe75..6ec117b30 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -3,6 +3,7 @@ keyraw functions to produce EVP_PKEY results. - Move RSA and DSA to use OpenSSL 3.0.0 API. - Move ECDSA functions to use OpenSSL 3.0.0 API. + - iana portlist update. 30 July 2021: Wouter - Fix #515: Compilation against openssl 3.0.0 beta2 is failing to diff --git a/util/iana_ports.inc b/util/iana_ports.inc index f928d0669..b93af015d 100644 --- a/util/iana_ports.inc +++ b/util/iana_ports.inc @@ -4244,6 +4244,7 @@ 5504, 5505, 5506, +5540, 5553, 5554, 5555, From 3ed5b62578809b5d891045b1cb9b5196d0f86a92 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 2 Aug 2021 16:06:36 +0200 Subject: [PATCH 322/553] - Fix verbose printout failure in tcp reuse unit test. --- doc/Changelog | 1 + services/outside_network.c | 2 ++ 2 files changed, 3 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 6ec117b30..9d002be11 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -4,6 +4,7 @@ - Move RSA and DSA to use OpenSSL 3.0.0 API. - Move ECDSA functions to use OpenSSL 3.0.0 API. - iana portlist update. + - Fix verbose printout failure in tcp reuse unit test. 30 July 2021: Wouter - Fix #515: Compilation against openssl 3.0.0 beta2 is failing to diff --git a/services/outside_network.c b/services/outside_network.c index 73cb4ff32..a3f982e72 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -347,6 +347,8 @@ log_reuse_tcp(enum verbosity_value v, const char* msg, struct reuse_tcp* reuse) uint16_t port; char addrbuf[128]; if(verbosity < v) return; + if(!reuse || !reuse->pending || !reuse->pending->c) + return; addr_to_str(&reuse->addr, reuse->addrlen, addrbuf, sizeof(addrbuf)); port = ntohs(((struct sockaddr_in*)&reuse->addr)->sin_port); verbose(v, "%s %s#%u fd %d", msg, addrbuf, (unsigned)port, From 0784ad7a1185c3f2852e6d44308c06409e05f0d5 Mon Sep 17 00:00:00 2001 From: daiyunwei Date: Tue, 3 Aug 2021 11:40:30 +0800 Subject: [PATCH 323/553] #420 clear the c->buffer in the comm_point_send_reply does resolve the "can't fit qbuffer in c->buffer" issue, but it breaks the mesh reply list function that need to reuse the answer. because the c->buffer is cleared in the comm_point_send_reply, it cannot be resued again. it means that it is not inappropriate to clear c->buffer in the comm_point_send_reply. After some investigation, i found it is appropriate to clear c->buffer before use in the http2_query_read_done. --- services/listen_dnsport.c | 4 ++++ util/netevent.c | 1 - 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index 52b0a2ee9..b43def567 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -2477,6 +2477,10 @@ static int http2_query_read_done(struct http2_session* h2_session, "buffer already assigned to stream"); return -1; } + + /* the c->buffer might be used by mesh_send_reply and no be cleard + * need to be cleared before use */ + sldns_buffer_clear(h2_session->c->buffer); if(sldns_buffer_remaining(h2_session->c->buffer) < sldns_buffer_remaining(h2_stream->qbuffer)) { /* qbuffer will be free'd in frame close cb */ diff --git a/util/netevent.c b/util/netevent.c index d1316c5b4..a2defcb5f 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -4063,7 +4063,6 @@ comm_point_send_reply(struct comm_reply *repinfo) } repinfo->c->h2_stream = NULL; repinfo->c->tcp_is_reading = 0; - sldns_buffer_clear(repinfo->c->buffer); comm_point_stop_listening(repinfo->c); comm_point_start_listening(repinfo->c, -1, adjusted_tcp_timeout(repinfo->c)); From ca67691092127aafd3c11ead622dcb659959e1bf Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Tue, 3 Aug 2021 12:18:58 +0200 Subject: [PATCH 324/553] - Listen to read or write events after the SSL handshake. Sticky events on windows would stick on read when write was needed. --- doc/Changelog | 4 ++++ util/netevent.c | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 82fd320e7..94daab83b 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +3 August 2021: George + - Listen to read or write events after the SSL handshake. + Sticky events on windows would stick on read when write was needed. + 26 July 2021: George - Merge #513: Stream reuse, attempt to fix #411, #439, #469. This introduces a couple of fixes for the stream reuse functionality diff --git a/util/netevent.c b/util/netevent.c index 01e44c9b6..9c99c677b 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -1214,7 +1214,7 @@ ssl_handshake(struct comm_point* c) int r; if(c->ssl_shake_state == comm_ssl_shake_hs_read) { /* read condition satisfied back to writing */ - comm_point_listen_for_rw(c, 1, 1); + comm_point_listen_for_rw(c, 0, 1); c->ssl_shake_state = comm_ssl_shake_none; return 1; } @@ -1333,7 +1333,7 @@ ssl_handshake(struct comm_point* c) if(c->ssl_shake_state != comm_ssl_shake_read) comm_point_listen_for_rw(c, 1, 0); } else { - comm_point_listen_for_rw(c, 1, 1); + comm_point_listen_for_rw(c, 0, 1); } c->ssl_shake_state = comm_ssl_shake_none; return 1; From dd7dc30294b8bdfdd499a81570a76fd50ee5c81d Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 3 Aug 2021 13:11:18 +0200 Subject: [PATCH 325/553] Changelog note for #517 - Merge PR #517 from dyunwei: #420 breaks the mesh reply list function that need to reuse the dns answer. --- doc/Changelog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 8544a8266..8c3c8abc3 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -2,6 +2,10 @@ - Listen to read or write events after the SSL handshake. Sticky events on windows would stick on read when write was needed. +3 August 2021: Wouter + - Merge PR #517 from dyunwei: #420 breaks the mesh reply list + function that need to reuse the dns answer. + 2 August 2021: Wouter - Prepare for OpenSSL 3.0.0 provider API usage, move the sldns keyraw functions to produce EVP_PKEY results. From 2a0df9e72e523ad4e2d9274e06ae0de6cc38cc80 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 3 Aug 2021 14:08:30 +0200 Subject: [PATCH 326/553] - Annotate assertion into error printout; we think it may be an error, but the situation looks harmless. --- doc/Changelog | 2 ++ util/netevent.c | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 8c3c8abc3..c8c9b7041 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -5,6 +5,8 @@ 3 August 2021: Wouter - Merge PR #517 from dyunwei: #420 breaks the mesh reply list function that need to reuse the dns answer. + - Annotate assertion into error printout; we think it may be an + error, but the situation looks harmless. 2 August 2021: Wouter - Prepare for OpenSSL 3.0.0 provider API usage, move the sldns diff --git a/util/netevent.c b/util/netevent.c index d2d1481f7..11c642a2b 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -1727,7 +1727,8 @@ comm_point_tcp_handle_read(int fd, struct comm_point* c, int short_ok) (int)sldns_buffer_limit(c->buffer)); } - log_assert(sldns_buffer_remaining(c->buffer) > 0); + if(sldns_buffer_remaining(c->buffer) == 0) + log_err("in comm_point_tcp_handle_read buffer_remaining is not > 0 as expected, continuing with (harmless) 0 length recv"); r = recv(fd, (void*)sldns_buffer_current(c->buffer), sldns_buffer_remaining(c->buffer), 0); if(r == 0) { From c639dc956a14d5db4b281676e8ccf08030bf0ccf Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 3 Aug 2021 14:13:37 +0200 Subject: [PATCH 327/553] - Fix sign comparison warning on FreeBSD. --- daemon/unbound.c | 2 +- doc/Changelog | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/daemon/unbound.c b/daemon/unbound.c index 78771dbdd..934a96c80 100644 --- a/daemon/unbound.c +++ b/daemon/unbound.c @@ -222,7 +222,7 @@ checkrlimits(struct config_file* cfg) #endif if(getrlimit(RLIMIT_DATA, &rlim) == 0) { if(rlim.rlim_cur != (rlim_t)RLIM_INFINITY && - rlim.rlim_cur < memsize_expect) { + rlim.rlim_cur < (rlim_t)memsize_expect) { log_warn("the ulimit(data seg size) is smaller than the expected memory usage (added size of caches). %u < %u bytes", (unsigned)rlim.rlim_cur, (unsigned)memsize_expect); } } diff --git a/doc/Changelog b/doc/Changelog index c8c9b7041..15a2b00b7 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -7,6 +7,7 @@ function that need to reuse the dns answer. - Annotate assertion into error printout; we think it may be an error, but the situation looks harmless. + - Fix sign comparison warning on FreeBSD. 2 August 2021: Wouter - Prepare for OpenSSL 3.0.0 provider API usage, move the sldns From f5d53928a34ff2a5a3f50d3e9c4b5aa7ded32511 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 4 Aug 2021 09:58:38 +0200 Subject: [PATCH 328/553] - In unit test use openssl set security level to allow keys in test. --- doc/Changelog | 3 +++ testcode/petal.c | 3 +++ 2 files changed, 6 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 15a2b00b7..ad229cbe4 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +4 August 2021: Wouter + - In unit test use openssl set security level to allow keys in test. + 3 August 2021: George - Listen to read or write events after the SSL handshake. Sticky events on windows would stick on read when write was needed. diff --git a/testcode/petal.c b/testcode/petal.c index 123684aab..a1a376155 100644 --- a/testcode/petal.c +++ b/testcode/petal.c @@ -238,6 +238,9 @@ setup_ctx(char* key, char* cert) (void)SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv2); #endif (void)SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv3); +#ifdef HAVE_SSL_CTX_SET_SECURITY_LEVEL + SSL_CTX_set_security_level(ctx, 0); /* for keys in tests */ +#endif if(!SSL_CTX_use_certificate_chain_file(ctx, cert)) print_exit("cannot read cert"); if(!SSL_CTX_use_PrivateKey_file(ctx, key, SSL_FILETYPE_PEM)) From efa15747a248dc7ca89e5070d8c6f1616c08e167 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Wed, 4 Aug 2021 10:46:17 +0200 Subject: [PATCH 329/553] Changelog note for #415: - Merge PR #415 from sibeream: Use /proc/sys/net/ipv4/ip_local_port_range to determine available outgoing ports. --- doc/Changelog | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index ad229cbe4..a1b02a040 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,8 @@ +4 August 2021: George + - Merge PR #415 from sibeream: Use + /proc/sys/net/ipv4/ip_local_port_range to determine available outgoing + ports. (New --enable-linux-ip-local-port-range configuration option) + 4 August 2021: Wouter - In unit test use openssl set security level to allow keys in test. From 8878680898b23671d31857930891f65affe639c8 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Wed, 4 Aug 2021 10:51:02 +0200 Subject: [PATCH 330/553] - Bump MAX_RESTART_COUNT to 11 from 8; in relation to #438. This allows longer CNAME chains in Unbound. --- doc/Changelog | 6 ++++-- iterator/iterator.h | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index a1b02a040..4503feea9 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,7 +1,9 @@ 4 August 2021: George - Merge PR #415 from sibeream: Use - /proc/sys/net/ipv4/ip_local_port_range to determine available outgoing - ports. (New --enable-linux-ip-local-port-range configuration option) + /proc/sys/net/ipv4/ip_local_port_range to determine available outgoing + ports. (New --enable-linux-ip-local-port-range configuration option) + - Bump MAX_RESTART_COUNT to 11 from 8; in relation to #438. This + allows longer CNAME chains in Unbound. 4 August 2021: Wouter - In unit test use openssl set security level to allow keys in test. diff --git a/iterator/iterator.h b/iterator/iterator.h index 7952f26df..dc5e57527 100644 --- a/iterator/iterator.h +++ b/iterator/iterator.h @@ -61,7 +61,7 @@ struct rbtree_type; * its subqueries */ #define MAX_TARGET_NX 5 /** max number of query restarts. Determines max number of CNAME chain. */ -#define MAX_RESTART_COUNT 8 +#define MAX_RESTART_COUNT 11 /** max number of referrals. Makes sure resolver does not run away */ #define MAX_REFERRAL_COUNT 130 /** max number of queries-sent-out. Make sure large NS set does not loop */ From c9bb0604db222739ce9aec18685f26b4f06f4452 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 4 Aug 2021 10:58:08 +0200 Subject: [PATCH 331/553] - Fix static analysis warnings about localzone locks that are unused. --- doc/Changelog | 1 + services/localzone.c | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 4503feea9..ccd40966c 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -7,6 +7,7 @@ 4 August 2021: Wouter - In unit test use openssl set security level to allow keys in test. + - Fix static analysis warnings about localzone locks that are unused. 3 August 2021: George - Listen to read or write events after the SSL handshake. diff --git a/services/localzone.c b/services/localzone.c index fd2ff2bb6..54f55ab81 100644 --- a/services/localzone.c +++ b/services/localzone.c @@ -745,9 +745,15 @@ static int lz_enter_zones(struct local_zones* zones, struct config_file* cfg) { struct config_str2list* p; +#ifndef THREADS_DISABLED struct local_zone* z; +#endif for(p = cfg->local_zones; p; p = p->next) { - if(!(z=lz_enter_zone(zones, p->str, p->str2, + if(!( +#ifndef THREADS_DISABLED + z= +#endif + lz_enter_zone(zones, p->str, p->str2, LDNS_RR_CLASS_IN))) return 0; lock_rw_unlock(&z->lock); @@ -1027,7 +1033,9 @@ lz_setup_implicit(struct local_zones* zones, struct config_file* cfg) } if(have_name) { uint8_t* n2; +#ifndef THREADS_DISABLED struct local_zone* z; +#endif /* allocate zone of smallest shared topdomain to contain em */ n2 = nm; dname_remove_labels(&n2, &nmlen, nmlabs - match); @@ -1039,7 +1047,11 @@ lz_setup_implicit(struct local_zones* zones, struct config_file* cfg) } log_nametypeclass(VERB_ALGO, "implicit transparent local-zone", n2, 0, dclass); - if(!(z=lz_enter_zone_dname(zones, n2, nmlen, match, + if(!( +#ifndef THREADS_DISABLED + z= +#endif + lz_enter_zone_dname(zones, n2, nmlen, match, local_zone_transparent, dclass))) { return 0; } From 6dd270d625b5e31697a4d0085d7d4db1f5e819f7 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 4 Aug 2021 11:05:51 +0200 Subject: [PATCH 332/553] - Fix missing locks in zonemd unit test. --- doc/Changelog | 1 + testcode/unitzonemd.c | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index ccd40966c..ac992b345 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -8,6 +8,7 @@ 4 August 2021: Wouter - In unit test use openssl set security level to allow keys in test. - Fix static analysis warnings about localzone locks that are unused. + - Fix missing locks in zonemd unit test. 3 August 2021: George - Listen to read or write events after the SSL handshake. diff --git a/testcode/unitzonemd.c b/testcode/unitzonemd.c index 3352a7c37..b5b865eab 100644 --- a/testcode/unitzonemd.c +++ b/testcode/unitzonemd.c @@ -82,7 +82,9 @@ static void zonemd_generate_test(const char* zname, char* zfile, /* read file */ z = authtest_addzone(az, zname, zfile); unit_assert(z); + lock_rw_wrlock(&z->lock); z->zonemd_check = 1; + lock_rw_unlock(&z->lock); /* create zonemd digest */ result = auth_zone_generate_zonemd_hash(z, scheme, hashalgo, @@ -197,7 +199,9 @@ static void zonemd_check_test(void) /* read file */ z = authtest_addzone(az, zname, zfile); unit_assert(z); + lock_rw_wrlock(&z->lock); z->zonemd_check = 1; + lock_rw_unlock(&z->lock); hashlen = sizeof(hash); if(sldns_str2wire_hex_buf(digest, hash, &hashlen) != 0) { unit_assert(0); /* parse failure */ From 592cfe3afccc832aa5753fccf349fe82efee7d4a Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 4 Aug 2021 11:43:29 +0200 Subject: [PATCH 333/553] - Fix readzone compile under debug config. --- Makefile.in | 2 +- doc/Changelog | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Makefile.in b/Makefile.in index 476545ea9..3ac3b1681 100644 --- a/Makefile.in +++ b/Makefile.in @@ -248,7 +248,7 @@ DELAYER_OBJ_LINK=$(DELAYER_OBJ) worker_cb.lo $(COMMON_OBJ) $(COMPAT_OBJ) \ $(SLDNS_OBJ) READZONE_SRC=testcode/readzone.c READZONE_OBJ=readzone.lo -READZONE_OBJ_LINK=$(READZONE_OBJ) $(COMPAT_OBJ) $(SLDNS_OBJ) +READZONE_OBJ_LINK=$(READZONE_OBJ) worker_cb.lo $(COMMON_OBJ) $(COMPAT_OBJ) $(SLDNS_OBJ) IPSET_SRC=@IPSET_SRC@ IPSET_OBJ=@IPSET_OBJ@ DNSTAP_SOCKET_SRC=dnstap/unbound-dnstap-socket.c diff --git a/doc/Changelog b/doc/Changelog index ac992b345..8c4eb0023 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -9,6 +9,7 @@ - In unit test use openssl set security level to allow keys in test. - Fix static analysis warnings about localzone locks that are unused. - Fix missing locks in zonemd unit test. + - Fix readzone compile under debug config. 3 August 2021: George - Listen to read or write events after the SSL handshake. From 1900ea3bb38e31df874579bc58d39945d22d75ff Mon Sep 17 00:00:00 2001 From: Tomasz Ziolkowski Date: Wed, 4 Aug 2021 12:57:55 +0200 Subject: [PATCH 334/553] Revert changes in files managed by maintainers, move docker do contrib dir --- .gitignore | 1 - configure | 5 ----- configure.ac | 6 ++++++ Dockerfile => contrib/Dockerfile.tests | 0 doc/README.tests | 2 +- util/netevent.c | 7 ------- 6 files changed, 7 insertions(+), 14 deletions(-) rename Dockerfile => contrib/Dockerfile.tests (100%) diff --git a/.gitignore b/.gitignore index ddd734967..d0c69f81d 100644 --- a/.gitignore +++ b/.gitignore @@ -56,4 +56,3 @@ /testdata/.perfstats.txt /doc/html /doc/xml -.idea diff --git a/configure b/configure index d27ded8a5..457efb480 100755 --- a/configure +++ b/configure @@ -683,7 +683,6 @@ HAVE_SSL PC_CRYPTO_DEPENDENCY CONFIG_DATE NETBSD_LINTFLAGS -GCC_DOCKER_LINTFLAGS PYUNBOUND_UNINSTALL PYUNBOUND_INSTALL PYUNBOUND_TARGET @@ -17889,10 +17888,6 @@ if test "`uname`" = "NetBSD"; then fi -if test "`uname -o`" = "GNU/Linux"; then - # splint cannot parse modern c99 header files - GCC_DOCKER_LINTFLAGS='-syntax' -fi CONFIG_DATE=`date +%Y%m%d` diff --git a/configure.ac b/configure.ac index fe911723c..128232b1c 100644 --- a/configure.ac +++ b/configure.ac @@ -776,6 +776,12 @@ if test "`uname`" = "NetBSD"; then NETBSD_LINTFLAGS='"-D__RENAME(x)=" -D_NETINET_IN_H_' AC_SUBST(NETBSD_LINTFLAGS) fi + +if test "`uname -o`" = "GNU/Linux"; then + # splint cannot parse modern c99 header files + GCC_DOCKER_LINTFLAGS='-syntax' + AC_SUBST(GCC_DOCKER_LINTFLAGS) +fi CONFIG_DATE=`date +%Y%m%d` AC_SUBST(CONFIG_DATE) diff --git a/Dockerfile b/contrib/Dockerfile.tests similarity index 100% rename from Dockerfile rename to contrib/Dockerfile.tests diff --git a/doc/README.tests b/doc/README.tests index 122bf02f3..376f01717 100644 --- a/doc/README.tests +++ b/doc/README.tests @@ -16,7 +16,7 @@ You need to have the following programs installed and in your PATH. The optional programs are detected and can be omitted. You can also use prepared Dockerfile to run tests inside docker based on latest gcc image: -* build container: docker build -t unbound-tester . +* build container: docker build -t unbound-tester -f contrib/Dockerfile.tests . * run container: docker run -it --mount type=bind,source="$(pwd)",target=/usr/src/unbound --rm unbound-tester * configure environment: ./configure * run test: make test diff --git a/util/netevent.c b/util/netevent.c index b3df164e6..11c642a2b 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -1232,13 +1232,6 @@ ssl_handshake(struct comm_point* c) if(want == SSL_ERROR_WANT_READ) { if(c->ssl_shake_state == comm_ssl_shake_read) return 1; - /* According to https://www.openssl.org/docs/man1.1.1/man3/SSL_do_handshake.html - * we should repeat handshake - for non blocking BIO - */ - if(c->ssl_shake_state == comm_ssl_shake_write) { - comm_point_listen_for_rw(c, 0, 1); - return 1; - } c->ssl_shake_state = comm_ssl_shake_read; comm_point_listen_for_rw(c, 1, 0); return 1; From 59552a7a762f265c9a7436cecab51cea7e76530a Mon Sep 17 00:00:00 2001 From: Tomasz Ziolkowski Date: Wed, 4 Aug 2021 13:05:21 +0200 Subject: [PATCH 335/553] reformat --- configure | 1 - testcode/petal.c | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/configure b/configure index 457efb480..346fd5e5b 100755 --- a/configure +++ b/configure @@ -17887,7 +17887,6 @@ if test "`uname`" = "NetBSD"; then NETBSD_LINTFLAGS='"-D__RENAME(x)=" -D_NETINET_IN_H_' fi - CONFIG_DATE=`date +%Y%m%d` diff --git a/testcode/petal.c b/testcode/petal.c index fbe5ac61b..6ea3c34cd 100644 --- a/testcode/petal.c +++ b/testcode/petal.c @@ -245,8 +245,8 @@ setup_ctx(char* key, char* cert) SSL_CTX_set_security_level(ctx, 0); /* for keys in tests */ #endif if(!SSL_CTX_use_certificate_chain_file(ctx, cert)) { - int e = ERR_peek_error(); - printf("error string: %s\n", ERR_reason_error_string(e)); + int e = ERR_peek_error(); + printf("error string: %s\n", ERR_reason_error_string(e)); print_exit("cannot read cert"); } if(!SSL_CTX_use_PrivateKey_file(ctx, key, SSL_FILETYPE_PEM)) From 067954fe8db4d6bc1e4daf65cbc55247d1463f8e Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 4 Aug 2021 13:54:38 +0200 Subject: [PATCH 336/553] - Fix out of sourcedir run of zonemd unit tests. --- doc/Changelog | 1 + testcode/unitzonemd.c | 66 +++++++++++++++++++++++-------------------- 2 files changed, 36 insertions(+), 31 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 8c4eb0023..66683a3d2 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -10,6 +10,7 @@ - Fix static analysis warnings about localzone locks that are unused. - Fix missing locks in zonemd unit test. - Fix readzone compile under debug config. + - Fix out of sourcedir run of zonemd unit tests. 3 August 2021: George - Listen to read or write events after the SSL handshake. diff --git a/testcode/unitzonemd.c b/testcode/unitzonemd.c index b5b865eab..2ba7749aa 100644 --- a/testcode/unitzonemd.c +++ b/testcode/unitzonemd.c @@ -48,6 +48,10 @@ #include "util/regional.h" #include "validator/val_anchor.h" +#define xstr(s) str(s) +#define str(s) #s +#define SRCDIRSTR xstr(SRCDIR) + /** Add zone from file for testing */ struct auth_zone* authtest_addzone(struct auth_zones* az, const char* name, char* fname); @@ -132,37 +136,37 @@ static void zonemd_generate_test(const char* zname, char* zfile, static void zonemd_generate_tests(void) { unit_show_func("services/authzone.c", "auth_zone_generate_zonemd_hash"); - zonemd_generate_test("example.org", "testdata/zonemd.example1.zone", + zonemd_generate_test("example.org", SRCDIRSTR "/testdata/zonemd.example1.zone", 1, 2, "20564D10F50A0CEBEC856C64032B7DFB53D3C449A421A5BC7A21F7627B4ACEA4DF29F2C6FE82ED9C23ADF6F4D420D5DD63EF6E6349D60FDAB910B65DF8D481B7"); /* https://tools.ietf.org/html/draft-ietf-dnsop-dns-zone-digest-12 * from section A.1 */ - zonemd_generate_test("example", "testdata/zonemd.example_a1.zone", + zonemd_generate_test("example", SRCDIRSTR "/testdata/zonemd.example_a1.zone", 1, 1, "c68090d90a7aed716bc459f9340e3d7c1370d4d24b7e2fc3a1ddc0b9a87153b9a9713b3c9ae5cc27777f98b8e730044c"); /* https://tools.ietf.org/html/draft-ietf-dnsop-dns-zone-digest-12 * from section A.2 */ - zonemd_generate_test("example", "testdata/zonemd.example_a2.zone", + zonemd_generate_test("example", SRCDIRSTR "/testdata/zonemd.example_a2.zone", 1, 1, "31cefb03814f5062ad12fa951ba0ef5f8da6ae354a415767246f7dc932ceb1e742a2108f529db6a33a11c01493de358d"); /* https://tools.ietf.org/html/draft-ietf-dnsop-dns-zone-digest-12 * from section A.3 SHA384 digest */ - zonemd_generate_test("example", "testdata/zonemd.example_a3.zone", + zonemd_generate_test("example", SRCDIRSTR "/testdata/zonemd.example_a3.zone", 1, 1, "62e6cf51b02e54b9b5f967d547ce43136792901f9f88e637493daaf401c92c279dd10f0edb1c56f8080211f8480ee306"); /* https://tools.ietf.org/html/draft-ietf-dnsop-dns-zone-digest-12 * from section A.3 SHA512 digest*/ - zonemd_generate_test("example", "testdata/zonemd.example_a3.zone", + zonemd_generate_test("example", SRCDIRSTR "/testdata/zonemd.example_a3.zone", 1, 2, "08cfa1115c7b948c4163a901270395ea226a930cd2cbcf2fa9a5e6eb85f37c8a4e114d884e66f176eab121cb02db7d652e0cc4827e7a3204f166b47e5613fd27"); /* https://tools.ietf.org/html/draft-ietf-dnsop-dns-zone-digest-12 * from section A.4 */ - zonemd_generate_test("uri.arpa", "testdata/zonemd.example_a4.zone", + zonemd_generate_test("uri.arpa", SRCDIRSTR "/testdata/zonemd.example_a4.zone", 1, 1, "1291b78ddf7669b1a39d014d87626b709b55774c5d7d58fadc556439889a10eaf6f11d615900a4f996bd46279514e473"); /* https://tools.ietf.org/html/draft-ietf-dnsop-dns-zone-digest-12 * from section A.5 */ - zonemd_generate_test("root-servers.net", "testdata/zonemd.example_a5.zone", + zonemd_generate_test("root-servers.net", SRCDIRSTR "/testdata/zonemd.example_a5.zone", 1, 1, "f1ca0ccd91bd5573d9f431c00ee0101b2545c97602be0a978a3b11dbfc1c776d5b3e86ae3d973d6b5349ba7f04340f79"); } @@ -170,7 +174,7 @@ static void zonemd_generate_tests(void) static void zonemd_check_test(void) { const char* zname = "example.org"; - char* zfile = "testdata/zonemd.example1.zone"; + char* zfile = SRCDIRSTR "/testdata/zonemd.example1.zone"; int scheme = 1; int hashalgo = 2; const char* digest = "20564D10F50A0CEBEC856C64032B7DFB53D3C449A421A5BC7A21F7627B4ACEA4DF29F2C6FE82ED9C23ADF6F4D420D5DD63EF6E6349D60FDAB910B65DF8D481B7"; @@ -341,25 +345,25 @@ static void zonemd_verify_tests(void) unit_show_func("services/authzone.c", "auth_zone_verify_zonemd"); /* give trustanchor for unsigned zone, should fail */ zonemd_verify_test("example.org", - "testdata/zonemd.example1.zone", + SRCDIRSTR "/testdata/zonemd.example1.zone", "example.org. IN DS 55566 8 2 9c148338951ce1c3b5cd3da532f3d90dfcf92595148022f2c2fd98e5deee90af", "20180302005009", "verify DNSKEY RRset with trust anchor failed: have trust anchor, but zone has no DNSKEY"); /* unsigned zone without ZONEMD in it */ zonemd_verify_test("example.org", - "testdata/zonemd.example1.zone", + SRCDIRSTR "/testdata/zonemd.example1.zone", NULL, "20180302005009", "no ZONEMD present"); /* no trust anchor, so it succeeds for zone with a correct ZONEMD */ zonemd_verify_test("example.com", - "testdata/zonemd.example2.zone", + SRCDIRSTR "/testdata/zonemd.example2.zone", NULL, "20180302005009", "ZONEMD verification successful"); /* trust anchor for another zone, so it is indeterminate */ zonemd_verify_test("example.com", - "testdata/zonemd.example2.zone", + SRCDIRSTR "/testdata/zonemd.example2.zone", "example.org. IN DS 55566 8 2 9c148338951ce1c3b5cd3da532f3d90dfcf92595148022f2c2fd98e5deee90af", "20180302005009", "ZONEMD verification successful"); @@ -368,7 +372,7 @@ static void zonemd_verify_tests(void) /* this zonefile has an incorrect ZONEMD digest, with correct * DNSSEC signature. */ zonemd_verify_test("example.com", - "testdata/zonemd.example3.zone", + SRCDIRSTR "/testdata/zonemd.example3.zone", NULL, "20180302005009", "incorrect digest"); @@ -376,7 +380,7 @@ static void zonemd_verify_tests(void) /* this zonefile has an incorrect ZONEMD digest, with correct * DNSSEC signature. */ zonemd_verify_test("example.com", - "testdata/zonemd.example4.zone", + SRCDIRSTR "/testdata/zonemd.example4.zone", NULL, "20180302005009", "incorrect digest"); @@ -384,91 +388,91 @@ static void zonemd_verify_tests(void) /* this zonefile has a correct ZONEMD digest and * correct DNSSEC signature */ zonemd_verify_test("example.com", - "testdata/zonemd.example5.zone", + SRCDIRSTR "/testdata/zonemd.example5.zone", NULL, "20180302005009", "ZONEMD verification successful"); /* valid zonemd, in dnssec NSEC3 zone, no trust anchor*/ zonemd_verify_test("example.com", - "testdata/zonemd.example6.zone", + SRCDIRSTR "/testdata/zonemd.example6.zone", NULL, "20180302005009", "ZONEMD verification successful"); /* load a DNSSEC signed zone with a trust anchor, valid ZONEMD */ zonemd_verify_test("example.com", - "testdata/zonemd.example5.zone", + SRCDIRSTR "/testdata/zonemd.example5.zone", "example.com. IN DS 55566 8 2 9c148338951ce1c3b5cd3da532f3d90dfcf92595148022f2c2fd98e5deee90af", "20201020135527", "ZONEMD verification successful"); /* load a DNSSEC NSEC3 signed zone with a trust anchor, valid ZONEMD */ zonemd_verify_test("example.com", - "testdata/zonemd.example6.zone", + SRCDIRSTR "/testdata/zonemd.example6.zone", "example.com. IN DS 55566 8 2 9c148338951ce1c3b5cd3da532f3d90dfcf92595148022f2c2fd98e5deee90af", "20201020135527", "ZONEMD verification successful"); /* load a DNSSEC NSEC zone without ZONEMD */ zonemd_verify_test("example.com", - "testdata/zonemd.example7.zone", + SRCDIRSTR "/testdata/zonemd.example7.zone", "example.com. IN DS 55566 8 2 9c148338951ce1c3b5cd3da532f3d90dfcf92595148022f2c2fd98e5deee90af", "20201020135527", "DNSSEC verified nonexistence of ZONEMD"); /* load a DNSSEC NSEC3 zone without ZONEMD */ zonemd_verify_test("example.com", - "testdata/zonemd.example8.zone", + SRCDIRSTR "/testdata/zonemd.example8.zone", "example.com. IN DS 55566 8 2 9c148338951ce1c3b5cd3da532f3d90dfcf92595148022f2c2fd98e5deee90af", "20201020135527", "DNSSEC verified nonexistence of ZONEMD"); /* load DNSSEC zone but RRSIG on ZONEMD is wrong */ zonemd_verify_test("example.com", - "testdata/zonemd.example9.zone", + SRCDIRSTR "/testdata/zonemd.example9.zone", "example.com. IN DS 55566 8 2 9c148338951ce1c3b5cd3da532f3d90dfcf92595148022f2c2fd98e5deee90af", "20201020135527", "DNSSEC verify failed for ZONEMD RRset: signature crypto failed"); /* load DNSSEC zone but RRSIG on SOA is wrong */ zonemd_verify_test("example.com", - "testdata/zonemd.example10.zone", + SRCDIRSTR "/testdata/zonemd.example10.zone", "example.com. IN DS 55566 8 2 9c148338951ce1c3b5cd3da532f3d90dfcf92595148022f2c2fd98e5deee90af", "20201020135527", "DNSSEC verify failed for SOA RRset: signature crypto failed"); /* load DNSSEC zone without ZONEMD, but NSEC bitmap says it exists */ zonemd_verify_test("example.com", - "testdata/zonemd.example11.zone", + SRCDIRSTR "/testdata/zonemd.example11.zone", "example.com. IN DS 55566 8 2 9c148338951ce1c3b5cd3da532f3d90dfcf92595148022f2c2fd98e5deee90af", "20201020135527", "DNSSEC NSEC bitmap says type ZONEMD exists"); /* load DNSSEC zone without ZONEMD, but NSEC3 bitmap says it exists */ zonemd_verify_test("example.com", - "testdata/zonemd.example12.zone", + SRCDIRSTR "/testdata/zonemd.example12.zone", "example.com. IN DS 55566 8 2 9c148338951ce1c3b5cd3da532f3d90dfcf92595148022f2c2fd98e5deee90af", "20201020135527", "DNSSEC NSEC3 bitmap says type ZONEMD exists"); /* load DNSSEC zone without ZONEMD, but RRSIG on NSEC not okay */ zonemd_verify_test("example.com", - "testdata/zonemd.example13.zone", + SRCDIRSTR "/testdata/zonemd.example13.zone", "example.com. IN DS 55566 8 2 9c148338951ce1c3b5cd3da532f3d90dfcf92595148022f2c2fd98e5deee90af", "20201020135527", "DNSSEC verify failed for NSEC RRset: signature crypto failed"); /* load DNSSEC zone without ZONEMD, but RRSIG on NSEC3 not okay */ zonemd_verify_test("example.com", - "testdata/zonemd.example14.zone", + SRCDIRSTR "/testdata/zonemd.example14.zone", "example.com. IN DS 55566 8 2 9c148338951ce1c3b5cd3da532f3d90dfcf92595148022f2c2fd98e5deee90af", "20201020135527", "DNSSEC verify failed for NSEC3 RRset: signature crypto failed"); /* load DNSSEC zone, with ZONEMD, but DNSKEY RRSIG is not okay. */ zonemd_verify_test("example.com", - "testdata/zonemd.example15.zone", + SRCDIRSTR "/testdata/zonemd.example15.zone", "example.com. IN DS 55566 8 2 9c148338951ce1c3b5cd3da532f3d90dfcf92595148022f2c2fd98e5deee90af", "20201020135527", "verify DNSKEY RRset with trust anchor failed: signature crypto failed"); /* load DNSSEC zone, but trust anchor mismatches DNSKEY */ zonemd_verify_test("example.com", - "testdata/zonemd.example5.zone", + SRCDIRSTR "/testdata/zonemd.example5.zone", /* okay anchor is "example.com. IN DS 55566 8 2 9c148338951ce1c3b5cd3da532f3d90dfcf92595148022f2c2fd98e5deee90af", */ "example.com. IN DS 55566 8 2 0000000000111111222223333444444dfcf92595148022f2c2fd98e5deee90af", @@ -477,7 +481,7 @@ static void zonemd_verify_tests(void) /* load DNSSEC zone, but trust anchor fails because the zone * has expired signatures. We set the date for it */ zonemd_verify_test("example.com", - "testdata/zonemd.example5.zone", + SRCDIRSTR "/testdata/zonemd.example5.zone", "example.com. IN DS 55566 8 2 9c148338951ce1c3b5cd3da532f3d90dfcf92595148022f2c2fd98e5deee90af", /* okay date: "20201020135527", */ "20221020135527", @@ -485,14 +489,14 @@ static void zonemd_verify_tests(void) /* duplicate zonemd with same scheme and algorithm */ zonemd_verify_test("example.com", - "testdata/zonemd.example16.zone", + SRCDIRSTR "/testdata/zonemd.example16.zone", NULL, "20180302005009", "ZONEMD RRSet contains more than one RR with the same scheme and hash algorithm"); /* different capitalisation of ns name and owner names, should * be canonicalized. */ zonemd_verify_test("example.com", - "testdata/zonemd.example17.zone", + SRCDIRSTR "/testdata/zonemd.example17.zone", NULL, "20180302005009", "ZONEMD verification successful"); From 822a96b29a0fc7ee8b8813459b5014871e99bd53 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 4 Aug 2021 14:04:31 +0200 Subject: [PATCH 337/553] - Fix libnettle zonemd unit test. --- doc/Changelog | 1 + testcode/unitzonemd.c | 35 ++++++++++++++++++++++++++++++----- 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 66683a3d2..5fa857ef7 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -11,6 +11,7 @@ - Fix missing locks in zonemd unit test. - Fix readzone compile under debug config. - Fix out of sourcedir run of zonemd unit tests. + - Fix libnettle zonemd unit test. 3 August 2021: George - Listen to read or write events after the SSL handshake. diff --git a/testcode/unitzonemd.c b/testcode/unitzonemd.c index 2ba7749aa..5caa68a10 100644 --- a/testcode/unitzonemd.c +++ b/testcode/unitzonemd.c @@ -430,13 +430,23 @@ static void zonemd_verify_tests(void) SRCDIRSTR "/testdata/zonemd.example9.zone", "example.com. IN DS 55566 8 2 9c148338951ce1c3b5cd3da532f3d90dfcf92595148022f2c2fd98e5deee90af", "20201020135527", - "DNSSEC verify failed for ZONEMD RRset: signature crypto failed"); +#ifdef HAVE_SSL + "DNSSEC verify failed for ZONEMD RRset: signature crypto failed" +#else /* HAVE_NETTLE */ + "DNSSEC verify failed for ZONEMD RRset: RSA signature verification failed" +#endif + ); /* load DNSSEC zone but RRSIG on SOA is wrong */ zonemd_verify_test("example.com", SRCDIRSTR "/testdata/zonemd.example10.zone", "example.com. IN DS 55566 8 2 9c148338951ce1c3b5cd3da532f3d90dfcf92595148022f2c2fd98e5deee90af", "20201020135527", - "DNSSEC verify failed for SOA RRset: signature crypto failed"); +#ifdef HAVE_SSL + "DNSSEC verify failed for SOA RRset: signature crypto failed" +#else /* HAVE_NETTLE */ + "DNSSEC verify failed for SOA RRset: RSA signature verification failed" +#endif + ); /* load DNSSEC zone without ZONEMD, but NSEC bitmap says it exists */ zonemd_verify_test("example.com", @@ -456,20 +466,35 @@ static void zonemd_verify_tests(void) SRCDIRSTR "/testdata/zonemd.example13.zone", "example.com. IN DS 55566 8 2 9c148338951ce1c3b5cd3da532f3d90dfcf92595148022f2c2fd98e5deee90af", "20201020135527", - "DNSSEC verify failed for NSEC RRset: signature crypto failed"); +#ifdef HAVE_SSL + "DNSSEC verify failed for NSEC RRset: signature crypto failed" +#else /* HAVE_NETTLE */ + "DNSSEC verify failed for NSEC RRset: RSA signature verification failed" +#endif + ); /* load DNSSEC zone without ZONEMD, but RRSIG on NSEC3 not okay */ zonemd_verify_test("example.com", SRCDIRSTR "/testdata/zonemd.example14.zone", "example.com. IN DS 55566 8 2 9c148338951ce1c3b5cd3da532f3d90dfcf92595148022f2c2fd98e5deee90af", "20201020135527", - "DNSSEC verify failed for NSEC3 RRset: signature crypto failed"); +#ifdef HAVE_SSL + "DNSSEC verify failed for NSEC3 RRset: signature crypto failed" +#else /* HAVE_NETTLE */ + "DNSSEC verify failed for NSEC3 RRset: RSA signature verification failed" +#endif + ); /* load DNSSEC zone, with ZONEMD, but DNSKEY RRSIG is not okay. */ zonemd_verify_test("example.com", SRCDIRSTR "/testdata/zonemd.example15.zone", "example.com. IN DS 55566 8 2 9c148338951ce1c3b5cd3da532f3d90dfcf92595148022f2c2fd98e5deee90af", "20201020135527", - "verify DNSKEY RRset with trust anchor failed: signature crypto failed"); +#ifdef HAVE_SSL + "verify DNSKEY RRset with trust anchor failed: signature crypto failed" +#else /* HAVE_NETTLE */ + "verify DNSKEY RRset with trust anchor failed: RSA signature verification failed" +#endif + ); /* load DNSSEC zone, but trust anchor mismatches DNSKEY */ zonemd_verify_test("example.com", SRCDIRSTR "/testdata/zonemd.example5.zone", From 77fdd8836d6eb7e8f574c0c8681214589c63b452 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 4 Aug 2021 16:26:21 +0200 Subject: [PATCH 338/553] - Fix unit test zonemd_reload for use in run_vm. --- doc/Changelog | 1 + testdata/zonemd_reload.tdir/zonemd_reload.test | 2 +- testdata/zonemd_reload.tdir/zonemd_reload.zone | 6 +++--- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 5fa857ef7..babae93da 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -12,6 +12,7 @@ - Fix readzone compile under debug config. - Fix out of sourcedir run of zonemd unit tests. - Fix libnettle zonemd unit test. + - Fix unit test zonemd_reload for use in run_vm. 3 August 2021: George - Listen to read or write events after the SSL handshake. diff --git a/testdata/zonemd_reload.tdir/zonemd_reload.test b/testdata/zonemd_reload.tdir/zonemd_reload.test index 5ae1d9b0c..fbdf07511 100644 --- a/testdata/zonemd_reload.tdir/zonemd_reload.test +++ b/testdata/zonemd_reload.tdir/zonemd_reload.test @@ -41,7 +41,7 @@ echo "> cat logfiles" cat fwd.log cat unbound.log echo "> check answer" -if grep www.example.com outfile | grep "127.0.0.1"; then +if grep www.example.com outfile | grep "192.0.2.1"; then echo "OK" else echo "Not OK" diff --git a/testdata/zonemd_reload.tdir/zonemd_reload.zone b/testdata/zonemd_reload.tdir/zonemd_reload.zone index 16b631c7b..01e57a738 100644 --- a/testdata/zonemd_reload.tdir/zonemd_reload.zone +++ b/testdata/zonemd_reload.tdir/zonemd_reload.zone @@ -1,8 +1,8 @@ example.com. IN SOA ns.example.com. hostmaster.example.com. 200154054 28800 7200 604800 3600 example.com. IN NS ns.example.com. -example.com. IN ZONEMD 200154054 1 2 EFAA5B78B38AB1C45DE57B8167BCCE906451D0E72118E1F5E80B5F0C3CF04BFFC65D53C011185528EAD439D6F3A02F511961E090E5E4E0DFA013BD276D728B22 -www.example.com. IN A 127.0.0.1 -ns.example.com. IN A 127.0.0.1 +example.com. IN ZONEMD 200154054 1 2 D207FBBD1403DC8FDDC0159AB1F4B4C54A2FEB814E5CB1E82841C51D1372E78E4F6C75F7A9D710CC78C54E2DB3B92D07C72990644F93E1C44AC356EACA3980C5 +www.example.com. IN A 192.0.2.1 +ns.example.com. IN A 192.0.2.1 bar.example.com. IN A 1.2.3.4 ding.example.com. IN A 1.2.3.4 foo.example.com. IN A 1.2.3.4 From 5d349dbcf3ed720275f0a74c8bd0ac5933a127b6 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 5 Aug 2021 08:36:24 +0200 Subject: [PATCH 339/553] - Tag for 1.13.2 release. --- doc/Changelog | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index babae93da..8c34710cb 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +5 August 2021: Wouter + - Tag for 1.13.2 release. + 4 August 2021: George - Merge PR #415 from sibeream: Use /proc/sys/net/ipv4/ip_local_port_range to determine available outgoing From 4518bb1158e98d87b1211cbcfddddd79c5a6fb28 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 5 Aug 2021 08:37:20 +0200 Subject: [PATCH 340/553] For 1.13.2rc1. --- doc/Changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 8c34710cb..7927da389 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,5 @@ 5 August 2021: Wouter - - Tag for 1.13.2 release. + - Tag for 1.13.2rc1 release. 4 August 2021: George - Merge PR #415 from sibeream: Use From ae45f46b9e086f477a10c22d4fca494a31328129 Mon Sep 17 00:00:00 2001 From: Tomasz Ziolkowski Date: Thu, 5 Aug 2021 08:44:18 +0200 Subject: [PATCH 341/553] Add (stub|forward)-tcp-upstream options which enable using tcp transport only for specified stub/forward zones --- daemon/worker.c | 8 ++-- doc/unbound.conf.5.in | 12 ++++- iterator/iter_delegpt.c | 1 + iterator/iter_delegpt.h | 2 + iterator/iter_fwd.c | 2 + iterator/iter_hints.c | 2 + iterator/iterator.c | 1 + libunbound/libworker.c | 6 +-- libunbound/worker.h | 4 +- smallapp/worker_cb.c | 4 +- .../fwd_udp_with_tcp_upstream.conf | 20 ++++++++ .../fwd_udp_with_tcp_upstream.dsc | 16 +++++++ .../fwd_udp_with_tcp_upstream.post | 10 ++++ .../fwd_udp_with_tcp_upstream.pre | 31 ++++++++++++ .../fwd_udp_with_tcp_upstream.test | 35 ++++++++++++++ .../fwd_udp_with_tcp_upstream.testns | 25 ++++++++++ .../stub_udp_with_tcp_upstream.conf | 19 ++++++++ .../stub_udp_with_tcp_upstream.dsc | 16 +++++++ .../stub_udp_with_tcp_upstream.post | 10 ++++ .../stub_udp_with_tcp_upstream.pre | 35 ++++++++++++++ .../stub_udp_with_tcp_upstream.test | 37 ++++++++++++++ .../stub_udp_with_tcp_upstream.testns | 48 +++++++++++++++++++ util/config_file.h | 2 + util/configlexer.lex | 2 + util/configparser.y | 25 +++++++++- util/fptr_wlist.c | 2 +- util/fptr_wlist.h | 2 +- util/module.h | 3 +- 28 files changed, 363 insertions(+), 17 deletions(-) create mode 100644 testdata/fwd_udp_with_tcp_upstream.tdir/fwd_udp_with_tcp_upstream.conf create mode 100644 testdata/fwd_udp_with_tcp_upstream.tdir/fwd_udp_with_tcp_upstream.dsc create mode 100644 testdata/fwd_udp_with_tcp_upstream.tdir/fwd_udp_with_tcp_upstream.post create mode 100644 testdata/fwd_udp_with_tcp_upstream.tdir/fwd_udp_with_tcp_upstream.pre create mode 100644 testdata/fwd_udp_with_tcp_upstream.tdir/fwd_udp_with_tcp_upstream.test create mode 100644 testdata/fwd_udp_with_tcp_upstream.tdir/fwd_udp_with_tcp_upstream.testns create mode 100644 testdata/stub_udp_with_tcp_upstream.tdir/stub_udp_with_tcp_upstream.conf create mode 100644 testdata/stub_udp_with_tcp_upstream.tdir/stub_udp_with_tcp_upstream.dsc create mode 100644 testdata/stub_udp_with_tcp_upstream.tdir/stub_udp_with_tcp_upstream.post create mode 100644 testdata/stub_udp_with_tcp_upstream.tdir/stub_udp_with_tcp_upstream.pre create mode 100644 testdata/stub_udp_with_tcp_upstream.tdir/stub_udp_with_tcp_upstream.test create mode 100644 testdata/stub_udp_with_tcp_upstream.tdir/stub_udp_with_tcp_upstream.testns diff --git a/daemon/worker.c b/daemon/worker.c index e9e163a04..b994645b4 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -1988,8 +1988,8 @@ worker_delete(struct worker* worker) struct outbound_entry* worker_send_query(struct query_info* qinfo, uint16_t flags, int dnssec, int want_dnssec, int nocaps, struct sockaddr_storage* addr, - socklen_t addrlen, uint8_t* zone, size_t zonelen, int ssl_upstream, - char* tls_auth_name, struct module_qstate* q) + socklen_t addrlen, uint8_t* zone, size_t zonelen, int tcp_upstream, + int ssl_upstream, char* tls_auth_name, struct module_qstate* q) { struct worker* worker = q->env->worker; struct outbound_entry* e = (struct outbound_entry*)regional_alloc( @@ -1998,7 +1998,7 @@ worker_send_query(struct query_info* qinfo, uint16_t flags, int dnssec, return NULL; e->qstate = q; e->qsent = outnet_serviced_query(worker->back, qinfo, flags, dnssec, - want_dnssec, nocaps, q->env->cfg->tcp_upstream, + want_dnssec, nocaps, tcp_upstream, ssl_upstream, tls_auth_name, addr, addrlen, zone, zonelen, q, worker_handle_service_reply, e, worker->back->udp_buff, q->env); if(!e->qsent) { @@ -2045,7 +2045,7 @@ struct outbound_entry* libworker_send_query( uint16_t ATTR_UNUSED(flags), int ATTR_UNUSED(dnssec), int ATTR_UNUSED(want_dnssec), int ATTR_UNUSED(nocaps), struct sockaddr_storage* ATTR_UNUSED(addr), socklen_t ATTR_UNUSED(addrlen), - uint8_t* ATTR_UNUSED(zone), size_t ATTR_UNUSED(zonelen), + uint8_t* ATTR_UNUSED(zone), size_t ATTR_UNUSED(zonelen), int ATTR_UNUSED(tcp_upstream), int ATTR_UNUSED(ssl_upstream), char* ATTR_UNUSED(tls_auth_name), struct module_qstate* ATTR_UNUSED(q)) { diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index d5315d53b..1f7e191ed 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -485,7 +485,9 @@ advertised timeout. .TP .B tcp\-upstream: \fI Enable or disable whether the upstream queries use TCP only for transport. -Default is no. Useful in tunneling scenarios. +Default is no. Useful in tunneling scenarios. If set to no you can specify +TCP transport only for selected forward or stub zones using forward-tcp-upstream +or stub-tcp-upstream respectively. .TP .B udp\-upstream\-without\-downstream: \fI Enable udp upstream even if do-udp is no. Default is no, and this does not @@ -1853,6 +1855,10 @@ Default is no. .B stub\-ssl\-upstream: \fI Alternate syntax for \fBstub\-tls\-upstream\fR. .TP +.B stub\-tcp\-upstream: \fI +If it is set to "yes" then upstream queries use TCP only for transport regardless of global flag tcp-upstream. +Default is no. +.TP .B stub\-no\-cache: \fI Default is no. If enabled, data inside the stub is not cached. This is useful when you want immediate changes to be visible. @@ -1905,6 +1911,10 @@ load CA certs, otherwise the connections cannot be authenticated. .B forward\-ssl\-upstream: \fI Alternate syntax for \fBforward\-tls\-upstream\fR. .TP +.B forward\-tcp\-upstream: \fI +If it is set to "yes" then upstream queries use TCP only for transport regardless of global flag tcp-upstream. +Default is no. +.TP .B forward\-no\-cache: \fI Default is no. If enabled, data inside the forward is not cached. This is useful when you want immediate changes to be visible. diff --git a/iterator/iter_delegpt.c b/iterator/iter_delegpt.c index 9a672b0af..bdac42b0d 100644 --- a/iterator/iter_delegpt.c +++ b/iterator/iter_delegpt.c @@ -73,6 +73,7 @@ struct delegpt* delegpt_copy(struct delegpt* dp, struct regional* region) copy->bogus = dp->bogus; copy->has_parent_side_NS = dp->has_parent_side_NS; copy->ssl_upstream = dp->ssl_upstream; + copy->tcp_upstream = dp->tcp_upstream; for(ns = dp->nslist; ns; ns = ns->next) { if(!delegpt_add_ns(copy, region, ns->name, ns->lame)) return NULL; diff --git a/iterator/iter_delegpt.h b/iterator/iter_delegpt.h index 138eb6e1b..9c8cfb281 100644 --- a/iterator/iter_delegpt.h +++ b/iterator/iter_delegpt.h @@ -83,6 +83,8 @@ struct delegpt { uint8_t dp_type_mlc; /** use SSL for upstream query */ uint8_t ssl_upstream; + /** use TCP for upstream query */ + uint8_t tcp_upstream; /** delegpt from authoritative zone that is locally hosted */ uint8_t auth_dp; /*** no cache */ diff --git a/iterator/iter_fwd.c b/iterator/iter_fwd.c index ea3d70e07..128007a04 100644 --- a/iterator/iter_fwd.c +++ b/iterator/iter_fwd.c @@ -276,6 +276,8 @@ read_forwards(struct iter_forwards* fwd, struct config_file* cfg) dp->no_cache = s->no_cache; /* use SSL for queries to this forwarder */ dp->ssl_upstream = (uint8_t)s->ssl_upstream; + /* use TCP for queries to this forwarder */ + dp->tcp_upstream = (uint8_t)s->tcp_upstream; verbose(VERB_QUERY, "Forward zone server list:"); delegpt_log(VERB_QUERY, dp); if(!forwards_insert(fwd, LDNS_RR_CLASS_IN, dp)) diff --git a/iterator/iter_hints.c b/iterator/iter_hints.c index 60e518122..2af443d8c 100644 --- a/iterator/iter_hints.c +++ b/iterator/iter_hints.c @@ -287,6 +287,8 @@ read_stubs(struct iter_hints* hints, struct config_file* cfg) dp->no_cache = s->no_cache; /* ssl_upstream */ dp->ssl_upstream = (uint8_t)s->ssl_upstream; + /* tcp_upstream */ + dp->tcp_upstream = (uint8_t)s->tcp_upstream; delegpt_log(VERB_QUERY, dp); if(!hints_insert(hints, LDNS_RR_CLASS_IN, dp, !s->isprime)) return 0; diff --git a/iterator/iterator.c b/iterator/iterator.c index f0105ad4b..efc94c37b 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -2666,6 +2666,7 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, iq->dnssec_expected, iq->caps_fallback || is_caps_whitelisted( ie, iq), &target->addr, target->addrlen, iq->dp->name, iq->dp->namelen, + (iq->dp->tcp_upstream || qstate->env->cfg->tcp_upstream), (iq->dp->ssl_upstream || qstate->env->cfg->ssl_upstream), target->tls_auth_name, qstate); if(!outq) { diff --git a/libunbound/libworker.c b/libunbound/libworker.c index 8a9ca9419..151f50cf5 100644 --- a/libunbound/libworker.c +++ b/libunbound/libworker.c @@ -881,7 +881,7 @@ void libworker_alloc_cleanup(void* arg) struct outbound_entry* libworker_send_query(struct query_info* qinfo, uint16_t flags, int dnssec, int want_dnssec, int nocaps, struct sockaddr_storage* addr, socklen_t addrlen, uint8_t* zone, - size_t zonelen, int ssl_upstream, char* tls_auth_name, + size_t zonelen, int tcp_upstream, int ssl_upstream, char* tls_auth_name, struct module_qstate* q) { struct libworker* w = (struct libworker*)q->env->worker; @@ -891,7 +891,7 @@ struct outbound_entry* libworker_send_query(struct query_info* qinfo, return NULL; e->qstate = q; e->qsent = outnet_serviced_query(w->back, qinfo, flags, dnssec, - want_dnssec, nocaps, q->env->cfg->tcp_upstream, ssl_upstream, + want_dnssec, nocaps, tcp_upstream, ssl_upstream, tls_auth_name, addr, addrlen, zone, zonelen, q, libworker_handle_service_reply, e, w->back->udp_buff, q->env); if(!e->qsent) { @@ -975,7 +975,7 @@ struct outbound_entry* worker_send_query(struct query_info* ATTR_UNUSED(qinfo), uint16_t ATTR_UNUSED(flags), int ATTR_UNUSED(dnssec), int ATTR_UNUSED(want_dnssec), int ATTR_UNUSED(nocaps), struct sockaddr_storage* ATTR_UNUSED(addr), socklen_t ATTR_UNUSED(addrlen), - uint8_t* ATTR_UNUSED(zone), size_t ATTR_UNUSED(zonelen), + uint8_t* ATTR_UNUSED(zone), size_t ATTR_UNUSED(zonelen), int ATTR_UNUSED(tcp_upstream), int ATTR_UNUSED(ssl_upstream), char* ATTR_UNUSED(tls_auth_name), struct module_qstate* ATTR_UNUSED(q)) { diff --git a/libunbound/worker.h b/libunbound/worker.h index bf7473861..c1fc8e784 100644 --- a/libunbound/worker.h +++ b/libunbound/worker.h @@ -72,7 +72,7 @@ struct query_info; struct outbound_entry* libworker_send_query(struct query_info* qinfo, uint16_t flags, int dnssec, int want_dnssec, int nocaps, struct sockaddr_storage* addr, socklen_t addrlen, uint8_t* zone, - size_t zonelen, int ssl_upstream, char* tls_auth_name, + size_t zonelen, int tcp_upstream, int ssl_upstream, char* tls_auth_name, struct module_qstate* q); /** process incoming serviced query replies from the network */ @@ -123,7 +123,7 @@ void worker_sighandler(int sig, void* arg); struct outbound_entry* worker_send_query(struct query_info* qinfo, uint16_t flags, int dnssec, int want_dnssec, int nocaps, struct sockaddr_storage* addr, socklen_t addrlen, uint8_t* zone, - size_t zonelen, int ssl_upstream, char* tls_auth_name, + size_t zonelen, int tcp_upstream, int ssl_upstream, char* tls_auth_name, struct module_qstate* q); /** diff --git a/smallapp/worker_cb.c b/smallapp/worker_cb.c index 473e32a60..78e773938 100644 --- a/smallapp/worker_cb.c +++ b/smallapp/worker_cb.c @@ -99,7 +99,7 @@ struct outbound_entry* worker_send_query( int ATTR_UNUSED(dnssec), int ATTR_UNUSED(want_dnssec), int ATTR_UNUSED(nocaps), struct sockaddr_storage* ATTR_UNUSED(addr), socklen_t ATTR_UNUSED(addrlen), uint8_t* ATTR_UNUSED(zone), - size_t ATTR_UNUSED(zonelen), int ATTR_UNUSED(ssl_upstream), + size_t ATTR_UNUSED(zonelen), int ATTR_UNUSED(tcp_upstream), int ATTR_UNUSED(ssl_upstream), char* ATTR_UNUSED(tls_auth_name), struct module_qstate* ATTR_UNUSED(q)) { log_assert(0); @@ -131,7 +131,7 @@ struct outbound_entry* libworker_send_query( int ATTR_UNUSED(dnssec), int ATTR_UNUSED(want_dnssec), int ATTR_UNUSED(nocaps), struct sockaddr_storage* ATTR_UNUSED(addr), socklen_t ATTR_UNUSED(addrlen), uint8_t* ATTR_UNUSED(zone), - size_t ATTR_UNUSED(zonelen), int ATTR_UNUSED(ssl_upstream), + size_t ATTR_UNUSED(zonelen), int ATTR_UNUSED(tcp_upstream), int ATTR_UNUSED(ssl_upstream), char* ATTR_UNUSED(tls_auth_name), struct module_qstate* ATTR_UNUSED(q)) { log_assert(0); diff --git a/testdata/fwd_udp_with_tcp_upstream.tdir/fwd_udp_with_tcp_upstream.conf b/testdata/fwd_udp_with_tcp_upstream.tdir/fwd_udp_with_tcp_upstream.conf new file mode 100644 index 000000000..6daf2eeec --- /dev/null +++ b/testdata/fwd_udp_with_tcp_upstream.tdir/fwd_udp_with_tcp_upstream.conf @@ -0,0 +1,20 @@ +server: + verbosity: 5 + # num-threads: 1 + interface: 127.0.0.1 + port: @PORT@ + use-syslog: no + directory: "" + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no +forward-zone: + name: "tcp.example.com" + forward-addr: "127.0.0.1@@TOPORT@" + forward-tcp-upstream: "yes" +forward-zone: + name: "udp.example.com" + forward-addr: "127.0.0.1@@TOPORT@" + forward-tcp-upstream: "no" + diff --git a/testdata/fwd_udp_with_tcp_upstream.tdir/fwd_udp_with_tcp_upstream.dsc b/testdata/fwd_udp_with_tcp_upstream.tdir/fwd_udp_with_tcp_upstream.dsc new file mode 100644 index 000000000..5b1f0d3d1 --- /dev/null +++ b/testdata/fwd_udp_with_tcp_upstream.tdir/fwd_udp_with_tcp_upstream.dsc @@ -0,0 +1,16 @@ +BaseName: fwd_udp_with_tcp_upstream +Version: 1.0 +Description: Forward an UDP packet to upstream via TCP and return reply. +CreationDate: Thu Aug 5 07:44:41 CEST 2021 +Maintainer: ziollek +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: fwd_udp_with_tcp_upstream.pre +Post: fwd_udp_with_tcp_upstream.post +Test: fwd_udp_with_tcp_upstream.test +AuxFiles: +Passed: +Failure: diff --git a/testdata/fwd_udp_with_tcp_upstream.tdir/fwd_udp_with_tcp_upstream.post b/testdata/fwd_udp_with_tcp_upstream.tdir/fwd_udp_with_tcp_upstream.post new file mode 100644 index 000000000..0013eca71 --- /dev/null +++ b/testdata/fwd_udp_with_tcp_upstream.tdir/fwd_udp_with_tcp_upstream.post @@ -0,0 +1,10 @@ +# #-- fwd_udp_with_tcp_upstream.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 +kill_pid $FWD_PID +kill_pid $UNBOUND_PID diff --git a/testdata/fwd_udp_with_tcp_upstream.tdir/fwd_udp_with_tcp_upstream.pre b/testdata/fwd_udp_with_tcp_upstream.tdir/fwd_udp_with_tcp_upstream.pre new file mode 100644 index 000000000..546787a5f --- /dev/null +++ b/testdata/fwd_udp_with_tcp_upstream.tdir/fwd_udp_with_tcp_upstream.pre @@ -0,0 +1,31 @@ +# #-- fwd_udp_with_tcp_upstream.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 + +. ../common.sh +get_random_port 2 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT fwd_udp_with_tcp_upstream.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' < fwd_udp_with_tcp_upstream.conf > ub.conf +# start unbound in the background +PRE="../.." +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log +wait_unbound_up unbound.log + diff --git a/testdata/fwd_udp_with_tcp_upstream.tdir/fwd_udp_with_tcp_upstream.test b/testdata/fwd_udp_with_tcp_upstream.tdir/fwd_udp_with_tcp_upstream.test new file mode 100644 index 000000000..fad6497be --- /dev/null +++ b/testdata/fwd_udp_with_tcp_upstream.tdir/fwd_udp_with_tcp_upstream.test @@ -0,0 +1,35 @@ +# #-- fwd_udp_with_tcp_upstream.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="../.." +# do the test +echo "> dig tcp.example.com." +dig @localhost -p $UNBOUND_PORT tcp.example.com. | tee outfile +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> check answer" +if grep "10.20.30.40" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + +echo "> dig udp.example.com." +dig @localhost -p $UNBOUND_PORT udp.example.com. | tee outfile +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> check answer" +if grep "10.20.30.80" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + +exit 0 diff --git a/testdata/fwd_udp_with_tcp_upstream.tdir/fwd_udp_with_tcp_upstream.testns b/testdata/fwd_udp_with_tcp_upstream.tdir/fwd_udp_with_tcp_upstream.testns new file mode 100644 index 000000000..04089af0e --- /dev/null +++ b/testdata/fwd_udp_with_tcp_upstream.tdir/fwd_udp_with_tcp_upstream.testns @@ -0,0 +1,25 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname +MATCH TCP +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +tcp IN A +SECTION ANSWER +tcp IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +MATCH UDP +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +udp IN A +SECTION ANSWER +udp IN A 10.20.30.80 +ENTRY_END diff --git a/testdata/stub_udp_with_tcp_upstream.tdir/stub_udp_with_tcp_upstream.conf b/testdata/stub_udp_with_tcp_upstream.tdir/stub_udp_with_tcp_upstream.conf new file mode 100644 index 000000000..d57c787b1 --- /dev/null +++ b/testdata/stub_udp_with_tcp_upstream.tdir/stub_udp_with_tcp_upstream.conf @@ -0,0 +1,19 @@ +server: + verbosity: 2 + # num-threads: 1 + interface: 127.0.0.1 + port: @PORT@ + use-syslog: no + directory: "" + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no +stub-zone: + name: "tcp.example.com" + stub-addr: "127.0.0.1@@TOPORT@" + stub-tcp-upstream: "yes" +stub-zone: + name: "udp.example.com" + stub-addr: "127.0.0.1@@TOPORT@" + stub-tcp-upstream: "no" \ No newline at end of file diff --git a/testdata/stub_udp_with_tcp_upstream.tdir/stub_udp_with_tcp_upstream.dsc b/testdata/stub_udp_with_tcp_upstream.tdir/stub_udp_with_tcp_upstream.dsc new file mode 100644 index 000000000..526ff67f9 --- /dev/null +++ b/testdata/stub_udp_with_tcp_upstream.tdir/stub_udp_with_tcp_upstream.dsc @@ -0,0 +1,16 @@ +BaseName: stub_udp_with_tcp_upstream +Version: 1.0 +Description: Stub server contacted via UDP with tcp upstream. +CreationDate: Thu Aug 5 07:44:41 CEST 2021 +Maintainer: ziollek +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: stub_udp_with_tcp_upstream.pre +Post: stub_udp_with_tcp_upstream.post +Test: stub_udp_with_tcp_upstream.test +AuxFiles: +Passed: +Failure: diff --git a/testdata/stub_udp_with_tcp_upstream.tdir/stub_udp_with_tcp_upstream.post b/testdata/stub_udp_with_tcp_upstream.tdir/stub_udp_with_tcp_upstream.post new file mode 100644 index 000000000..c804b6c46 --- /dev/null +++ b/testdata/stub_udp_with_tcp_upstream.tdir/stub_udp_with_tcp_upstream.post @@ -0,0 +1,10 @@ +# #-- stub_udp_with_tcp_upstream.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 +kill_pid $FWD_PID +kill_pid $UNBOUND_PID diff --git a/testdata/stub_udp_with_tcp_upstream.tdir/stub_udp_with_tcp_upstream.pre b/testdata/stub_udp_with_tcp_upstream.tdir/stub_udp_with_tcp_upstream.pre new file mode 100644 index 000000000..2bca63b9d --- /dev/null +++ b/testdata/stub_udp_with_tcp_upstream.tdir/stub_udp_with_tcp_upstream.pre @@ -0,0 +1,35 @@ +# #-- stub_udp_with_tcp_upstream.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 +. ../common.sh + +get_random_port 2 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT stub_udp_with_tcp_upstream.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' < stub_udp_with_tcp_upstream.conf > ub.conf +# start unbound in the background +PRE="../.." +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test + +# wait for forwarder to come up +wait_ldns_testns_up fwd.log + +# wait for unbound to come up +wait_unbound_up unbound.log + diff --git a/testdata/stub_udp_with_tcp_upstream.tdir/stub_udp_with_tcp_upstream.test b/testdata/stub_udp_with_tcp_upstream.tdir/stub_udp_with_tcp_upstream.test new file mode 100644 index 000000000..43591ac16 --- /dev/null +++ b/testdata/stub_udp_with_tcp_upstream.tdir/stub_udp_with_tcp_upstream.test @@ -0,0 +1,37 @@ +# #-- stub_udp_with_tcp_upstream.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="../.." +# do the test +echo "> dig tcp.example.com." +dig @127.0.0.1 -p $UNBOUND_PORT tcp.example.com. | tee outfile +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> check answer" +if grep "10.20.30.40" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + + +# check if second stub is requested via udp +echo "> dig udp.example.com." +dig @127.0.0.1 -p $UNBOUND_PORT udp.example.com. | tee outfile +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> check answer" +if grep "10.20.30.80" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + +exit 0 diff --git a/testdata/stub_udp_with_tcp_upstream.tdir/stub_udp_with_tcp_upstream.testns b/testdata/stub_udp_with_tcp_upstream.tdir/stub_udp_with_tcp_upstream.testns new file mode 100644 index 000000000..f2155414e --- /dev/null +++ b/testdata/stub_udp_with_tcp_upstream.tdir/stub_udp_with_tcp_upstream.testns @@ -0,0 +1,48 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname +MATCH TCP +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +tcp IN A +SECTION ANSWER +tcp IN A 10.20.30.40 +SECTION AUTHORITY +@ IN NS ns.example.com. +SECTION ADDITIONAL +ns IN A 127.0.0.1 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +MATCH UDP +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +udp IN A +SECTION ANSWER +udp IN A 10.20.30.80 +SECTION AUTHORITY +@ IN NS ns.example.com. +SECTION ADDITIONAL +ns IN A 127.0.0.1 +ENTRY_END + +; root prime +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS root.server. +SECTION AUTHORITY +SECTION ADDITIONAL +root.server. IN A 127.0.0.1 +ENTRY_END + diff --git a/util/config_file.h b/util/config_file.h index aed6812da..b868d9cc8 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -697,6 +697,8 @@ struct config_stub { int isprime; /** if forward-first is set (failover to without if fails) */ int isfirst; + /** use tcp for queries to this stub */ + int tcp_upstream; /** use SSL for queries to this stub */ int ssl_upstream; /*** no cache */ diff --git a/util/configlexer.lex b/util/configlexer.lex index dbfc17d49..b1dd3c1ed 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -331,6 +331,7 @@ stub-first{COLON} { YDVAR(1, VAR_STUB_FIRST) } stub-no-cache{COLON} { YDVAR(1, VAR_STUB_NO_CACHE) } stub-ssl-upstream{COLON} { YDVAR(1, VAR_STUB_SSL_UPSTREAM) } stub-tls-upstream{COLON} { YDVAR(1, VAR_STUB_SSL_UPSTREAM) } +stub-tcp-upstream{COLON} { YDVAR(1, VAR_STUB_TCP_UPSTREAM) } forward-zone{COLON} { YDVAR(0, VAR_FORWARD_ZONE) } forward-addr{COLON} { YDVAR(1, VAR_FORWARD_ADDR) } forward-host{COLON} { YDVAR(1, VAR_FORWARD_HOST) } @@ -338,6 +339,7 @@ forward-first{COLON} { YDVAR(1, VAR_FORWARD_FIRST) } forward-no-cache{COLON} { YDVAR(1, VAR_FORWARD_NO_CACHE) } forward-ssl-upstream{COLON} { YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) } forward-tls-upstream{COLON} { YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) } +forward-tcp-upstream{COLON} { YDVAR(1, VAR_FORWARD_TCP_UPSTREAM) } auth-zone{COLON} { YDVAR(0, VAR_AUTH_ZONE) } rpz{COLON} { YDVAR(0, VAR_RPZ) } tags{COLON} { YDVAR(1, VAR_TAGS) } diff --git a/util/configparser.y b/util/configparser.y index e22d48d41..be8fe2dac 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -113,6 +113,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_SSL_UPSTREAM VAR_TCP_AUTH_QUERY_TIMEOUT VAR_SSL_SERVICE_KEY %token VAR_SSL_SERVICE_PEM VAR_SSL_PORT VAR_FORWARD_FIRST %token VAR_STUB_SSL_UPSTREAM VAR_FORWARD_SSL_UPSTREAM VAR_TLS_CERT_BUNDLE +%token VAR_STUB_TCP_UPSTREAM VAR_FORWARD_TCP_UPSTREAM %token VAR_HTTPS_PORT VAR_HTTP_ENDPOINT VAR_HTTP_MAX_STREAMS %token VAR_HTTP_QUERY_BUFFER_SIZE VAR_HTTP_RESPONSE_BUFFER_SIZE %token VAR_HTTP_NODELAY VAR_HTTP_NOTLS_DOWNSTREAM @@ -324,7 +325,7 @@ stubstart: VAR_STUB_ZONE contents_stub: contents_stub content_stub | ; content_stub: stub_name | stub_host | stub_addr | stub_prime | stub_first | - stub_no_cache | stub_ssl_upstream + stub_no_cache | stub_ssl_upstream | stub_tcp_upstream ; forwardstart: VAR_FORWARD_ZONE { @@ -341,7 +342,7 @@ forwardstart: VAR_FORWARD_ZONE contents_forward: contents_forward content_forward | ; content_forward: forward_name | forward_host | forward_addr | forward_first | - forward_no_cache | forward_ssl_upstream + forward_no_cache | forward_ssl_upstream | forward_tcp_upstream ; viewstart: VAR_VIEW { @@ -2721,6 +2722,16 @@ stub_ssl_upstream: VAR_STUB_SSL_UPSTREAM STRING_ARG free($2); } ; +stub_tcp_upstream: VAR_STUB_TCP_UPSTREAM STRING_ARG + { + OUTYY(("P(stub-tcp-upstream:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->stubs->tcp_upstream = + (strcmp($2, "yes")==0); + free($2); + } + ; stub_prime: VAR_STUB_PRIME STRING_ARG { OUTYY(("P(stub-prime:%s)\n", $2)); @@ -2783,6 +2794,16 @@ forward_ssl_upstream: VAR_FORWARD_SSL_UPSTREAM STRING_ARG free($2); } ; +forward_tcp_upstream: VAR_FORWARD_TCP_UPSTREAM STRING_ARG + { + OUTYY(("P(forward-tcp-upstream:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->forwards->tcp_upstream = + (strcmp($2, "yes")==0); + free($2); + } + ; auth_name: VAR_NAME STRING_ARG { OUTYY(("P(name:%s)\n", $2)); diff --git a/util/fptr_wlist.c b/util/fptr_wlist.c index de6dbd02a..f8dac65c5 100644 --- a/util/fptr_wlist.c +++ b/util/fptr_wlist.c @@ -335,7 +335,7 @@ int fptr_whitelist_modenv_send_query(struct outbound_entry* (*fptr)( struct query_info* qinfo, uint16_t flags, int dnssec, int want_dnssec, int nocaps, struct sockaddr_storage* addr, socklen_t addrlen, - uint8_t* zone, size_t zonelen, int ssl_upstream, char* tls_auth_name, + uint8_t* zone, size_t zonelen, int tcp_upstream, int ssl_upstream, char* tls_auth_name, struct module_qstate* q)) { if(fptr == &worker_send_query) return 1; diff --git a/util/fptr_wlist.h b/util/fptr_wlist.h index cd331febb..a54709925 100644 --- a/util/fptr_wlist.h +++ b/util/fptr_wlist.h @@ -212,7 +212,7 @@ int fptr_whitelist_hash_markdelfunc(lruhash_markdelfunc_type fptr); int fptr_whitelist_modenv_send_query(struct outbound_entry* (*fptr)( struct query_info* qinfo, uint16_t flags, int dnssec, int want_dnssec, int nocaps, struct sockaddr_storage* addr, socklen_t addrlen, - uint8_t* zone, size_t zonelen, int ssl_upstream, char* tls_auth_name, + uint8_t* zone, size_t zonelen, int tcp_upstream, int ssl_upstream, char* tls_auth_name, struct module_qstate* q)); /** diff --git a/util/module.h b/util/module.h index 81a31a9cc..a46373687 100644 --- a/util/module.h +++ b/util/module.h @@ -354,6 +354,7 @@ struct module_env { * @param addrlen: length of addr. * @param zone: delegation point name. * @param zonelen: length of zone name. + * @param tcp_upstream: use TCP for upstream queries. * @param ssl_upstream: use SSL for upstream queries. * @param tls_auth_name: if ssl_upstream, use this name with TLS * authentication. @@ -366,7 +367,7 @@ struct module_env { struct outbound_entry* (*send_query)(struct query_info* qinfo, uint16_t flags, int dnssec, int want_dnssec, int nocaps, struct sockaddr_storage* addr, socklen_t addrlen, - uint8_t* zone, size_t zonelen, int ssl_upstream, + uint8_t* zone, size_t zonelen, int tcp_upstream, int ssl_upstream, char* tls_auth_name, struct module_qstate* q); /** From 8e538dcaa8df2d0fab8ff3dcf94ac1f972450b66 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 5 Aug 2021 17:10:56 +0200 Subject: [PATCH 342/553] - Fix #520: Unbound 1.13.2rc1 fails to build python module. --- Makefile.in | 2 +- doc/Changelog | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Makefile.in b/Makefile.in index 3ac3b1681..ff5dc8fae 100644 --- a/Makefile.in +++ b/Makefile.in @@ -476,7 +476,7 @@ libunbound/python/libunbound_wrap.c: $(srcdir)/libunbound/python/libunbound.i un # Pyunbound python unbound wrapper _unbound.la: libunbound_wrap.lo libunbound.la - $(LIBTOOL) --tag=CC --mode=link $(CC) $(RUNTIME_PATH) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -module -avoid-version -no-undefined -shared -o $@ libunbound_wrap.lo -rpath $(PYTHON_SITE_PKG) libunbound.la $(LIBS) + $(LIBTOOL) --tag=CC --mode=link $(CC) $(RUNTIME_PATH) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -module -avoid-version -no-undefined -shared -o $@ libunbound_wrap.lo -rpath $(PYTHON_SITE_PKG) -L. -L.libs libunbound.la $(LIBS) util/config_file.c: util/configparser.h util/configlexer.c: $(srcdir)/util/configlexer.lex util/configparser.h diff --git a/doc/Changelog b/doc/Changelog index 7927da389..91abd0da0 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,6 @@ 5 August 2021: Wouter - Tag for 1.13.2rc1 release. + - Fix #520: Unbound 1.13.2rc1 fails to build python module. 4 August 2021: George - Merge PR #415 from sibeream: Use From edbf9c21ee5c32f4ef52c2e3a16868fccc2d82e6 Mon Sep 17 00:00:00 2001 From: liheng562653799 <47775671+liheng562653799@users.noreply.github.com> Date: Fri, 6 Aug 2021 12:00:56 +0800 Subject: [PATCH 343/553] Update mini_event.c When in heavy load, unbound opens many outside_network sockets for out going queries to delegation servers, which may result in a big fd(maxfd) value(for thread A 65500, for thread B 65501, for thread C ...). There are situations when thread A has a max fd num 65500 where maxfd is of course 65500, thread B has max fd num 20 for now but maxfd is still 65501. Though linux kernel checks whether maxfd+1 passed by select syscall is really the process' maxfd+1. Linux kernel can not tell maxfd+1 passed by thread B select syscall is much bigger(65501+1 or 65500+1 after trimed by kerne) than it should be (20+1). In this situation, when kernel do_select() for thread B, much work is wasted. --- util/mini_event.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/util/mini_event.c b/util/mini_event.c index 661d88d2e..c05dc668c 100644 --- a/util/mini_event.c +++ b/util/mini_event.c @@ -337,6 +337,15 @@ int event_del(struct event* ev) FD_CLR(FD_SET_T ev->ev_fd, &ev->ev_base->writes); FD_CLR(FD_SET_T ev->ev_fd, &ev->ev_base->ready); FD_CLR(FD_SET_T ev->ev_fd, &ev->ev_base->content); + if(ev->ev_fd == ev->ev_base->maxfd) { + int i = ev->ev_base->maxfd - 1; + for (; i > 3; i--) { + if (NULL != ev->ev_base->fds[i]) { + break; + } + } + ev->ev_base->maxfd = i; + } } ev->added = 0; return 0; From 0d8dd6ec33db3b1b8ce4ac6a6a1f5d60e0a8e28e Mon Sep 17 00:00:00 2001 From: Artem Egorenkov Date: Fri, 6 Aug 2021 14:03:23 +0200 Subject: [PATCH 344/553] - memory management violations fixed --- dns64/dns64.c | 8 ++++++-- util/net_help.c | 1 + 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/dns64/dns64.c b/dns64/dns64.c index c79bc9c65..860b3a728 100644 --- a/dns64/dns64.c +++ b/dns64/dns64.c @@ -685,8 +685,12 @@ dns64_operate(struct module_qstate* qstate, enum module_ev event, int id, switch(event) { case module_event_new: /* Tag this query as being new and fall through. */ - iq = (struct dns64_qstate*)regional_alloc( - qstate->region, sizeof(*iq)); + if (!(iq = (struct dns64_qstate*)regional_alloc( + qstate->region, sizeof(*iq)))) { + log_err("out of memory"); + qstate->ext_state[id] = module_error; + return; + } qstate->minfo[id] = iq; iq->state = DNS64_NEW_QUERY; iq->started_no_cache_store = qstate->no_cache_store; diff --git a/util/net_help.c b/util/net_help.c index 06bc1f5dd..5788ac87e 100644 --- a/util/net_help.c +++ b/util/net_help.c @@ -1172,6 +1172,7 @@ void* connect_sslctx_create(char* key, char* pem, char* verifypem, int wincert) if((SSL_CTX_set_options(ctx, SSL_OP_NO_RENEGOTIATION) & SSL_OP_NO_RENEGOTIATION) != SSL_OP_NO_RENEGOTIATION) { log_crypto_err("could not set SSL_OP_NO_RENEGOTIATION"); + SSL_CTX_free(ctx); return 0; } #endif From 98087a051e657c4604050c3d1e6735950b9ea76f Mon Sep 17 00:00:00 2001 From: Chih-Hsuan Yen Date: Fri, 23 Jul 2021 13:23:05 +0800 Subject: [PATCH 345/553] - Reduce unnecessary linking - Link to libpython only when needed, fixes #242 When pyunbound is enabled while pythonmodule is not (i.e., ./configure --without-pythonmodule --with-pyunbound), only the Python library _unbound.so uses Python functions, and main programs (unbound, unbound-anchor, ...) and libunbound.so do not. This patch removes unneeded linking. - Link the Python library _unbound.so to Python only. _unbound.so does not directly use libraries used by libunbound. This patch removes unneeded linking mentioned in [1] [1] https://github.com/NLnetLabs/unbound/pull/511#issuecomment-886072003 --- Makefile.in | 3 ++- configure.ac | 12 ++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/Makefile.in b/Makefile.in index ff5dc8fae..58413d7a5 100644 --- a/Makefile.in +++ b/Makefile.in @@ -61,6 +61,7 @@ PYTHON_CPPFLAGS=-I. @PYTHON_CPPFLAGS@ CFLAGS=-DSRCDIR=$(srcdir) @CFLAGS@ LDFLAGS=@LDFLAGS@ LIBS=@LIBS@ +PYTHON_LIBS=@PYTHON_LIBS@ LIBOBJS=@LIBOBJS@ # filter out ctime_r from compat obj. LIBOBJ_WITHOUT_CTIME=@LIBOBJ_WITHOUT_CTIME@ @@ -476,7 +477,7 @@ libunbound/python/libunbound_wrap.c: $(srcdir)/libunbound/python/libunbound.i un # Pyunbound python unbound wrapper _unbound.la: libunbound_wrap.lo libunbound.la - $(LIBTOOL) --tag=CC --mode=link $(CC) $(RUNTIME_PATH) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -module -avoid-version -no-undefined -shared -o $@ libunbound_wrap.lo -rpath $(PYTHON_SITE_PKG) -L. -L.libs libunbound.la $(LIBS) + $(LIBTOOL) --tag=CC --mode=link $(CC) $(RUNTIME_PATH) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -module -avoid-version -no-undefined -shared -o $@ libunbound_wrap.lo -rpath $(PYTHON_SITE_PKG) -L. -L.libs libunbound.la $(PYTHON_LIBS) util/config_file.c: util/configparser.h util/configlexer.c: $(srcdir)/util/configlexer.lex util/configparser.h diff --git a/configure.ac b/configure.ac index fe911723c..0fc1e00a4 100644 --- a/configure.ac +++ b/configure.ac @@ -699,11 +699,15 @@ if test x_$ub_test_python != x_no; then AC_SUBST(PY_MAJOR_VERSION) # Have Python AC_DEFINE(HAVE_PYTHON,1,[Define if you have Python libraries and header files.]) - if test -n "$LIBS"; then - LIBS="$PYTHON_LDFLAGS $LIBS" - else - LIBS="$PYTHON_LDFLAGS" + if test x_$ub_with_pythonmod != x_no; then + if test -n "$LIBS"; then + LIBS="$PYTHON_LDFLAGS $LIBS" + else + LIBS="$PYTHON_LDFLAGS" + fi fi + PYTHON_LIBS="$PYTHON_LDFLAGS" + AC_SUBST(PYTHON_LIBS) if test -n "$CPPFLAGS"; then CPPFLAGS="$CPPFLAGS $PYTHON_CPPFLAGS" else From e20b2c1aafead40567188584190c668b3e2fed06 Mon Sep 17 00:00:00 2001 From: Shchelkunov Artem Date: Wed, 11 Aug 2021 15:14:43 +0500 Subject: [PATCH 346/553] fix: free() call more than once with the same pointer --- util/data/msgreply.c | 1 - 1 file changed, 1 deletion(-) diff --git a/util/data/msgreply.c b/util/data/msgreply.c index 00272fd1c..6c875674d 100644 --- a/util/data/msgreply.c +++ b/util/data/msgreply.c @@ -495,7 +495,6 @@ int reply_info_parse(sldns_buffer* pkt, struct alloc_cache* alloc, /* this also performs dname decompression */ if(!parse_create_msg(pkt, msg, alloc, qinf, rep, NULL)) { query_info_clear(qinf); - reply_info_parsedelete(*rep, alloc); *rep = NULL; return LDNS_RCODE_SERVFAIL; } From c5ceee22a9454d5f7f0fbc87537f46d5d6d7b908 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 12 Aug 2021 10:04:20 +0200 Subject: [PATCH 347/553] - And 1.13.2rc1 became the 1.13.2 with the fix for the python module build. The current code repository continues with version 1.13.3. --- configure | 25 +++++++++++++------------ configure.ac | 5 +++-- doc/Changelog | 4 ++++ 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/configure b/configure index 346fd5e5b..4d01e3421 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.2. +# Generated by GNU Autoconf 2.69 for unbound 1.13.3. # # Report bugs to . # @@ -591,8 +591,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='unbound' PACKAGE_TARNAME='unbound' -PACKAGE_VERSION='1.13.2' -PACKAGE_STRING='unbound 1.13.2' +PACKAGE_VERSION='1.13.3' +PACKAGE_STRING='unbound 1.13.3' PACKAGE_BUGREPORT='unbound-bugs@nlnetlabs.nl or https://github.com/NLnetLabs/unbound/issues' PACKAGE_URL='' @@ -1464,7 +1464,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.2 to adapt to many kinds of systems. +\`configure' configures unbound 1.13.3 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1529,7 +1529,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of unbound 1.13.2:";; + short | recursive ) echo "Configuration of unbound 1.13.3:";; esac cat <<\_ACEOF @@ -1771,7 +1771,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -unbound configure 1.13.2 +unbound configure 1.13.3 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2480,7 +2480,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.2, which was +It was created by unbound $as_me 1.13.3, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2832,11 +2832,11 @@ UNBOUND_VERSION_MAJOR=1 UNBOUND_VERSION_MINOR=13 -UNBOUND_VERSION_MICRO=2 +UNBOUND_VERSION_MICRO=3 LIBUNBOUND_CURRENT=9 -LIBUNBOUND_REVISION=13 +LIBUNBOUND_REVISION=14 LIBUNBOUND_AGE=1 # 1.0.0 had 0:12:0 # 1.0.1 had 0:13:0 @@ -2917,6 +2917,7 @@ LIBUNBOUND_AGE=1 # 1.13.0 had 9:11:1 # 1.13.1 had 9:12:1 # 1.13.2 had 9:13:1 +# 1.13.3 had 9:14:1 # Current -- the number of the binary API that we're implementing # Revision -- which iteration of the implementation of the binary @@ -21816,7 +21817,7 @@ _ACEOF -version=1.13.2 +version=1.13.3 date=`date +'%b %e, %Y'` @@ -22335,7 +22336,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.2, which was +This file was extended by unbound $as_me 1.13.3, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -22401,7 +22402,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.2 +unbound config.status 1.13.3 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index fe911723c..bbe8d683a 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],[2]) +m4_define([VERSION_MICRO],[3]) 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=13 +LIBUNBOUND_REVISION=14 LIBUNBOUND_AGE=1 # 1.0.0 had 0:12:0 # 1.0.1 had 0:13:0 @@ -99,6 +99,7 @@ LIBUNBOUND_AGE=1 # 1.13.0 had 9:11:1 # 1.13.1 had 9:12:1 # 1.13.2 had 9:13:1 +# 1.13.3 had 9:14: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 91abd0da0..a801ea4d7 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +12 August 2021: Wouter + - And 1.13.2rc1 became the 1.13.2 with the fix for the python module + build. The current code repository continues with version 1.13.3. + 5 August 2021: Wouter - Tag for 1.13.2rc1 release. - Fix #520: Unbound 1.13.2rc1 fails to build python module. From f8ddcc15b8bcd52e5d5f1e1d1b799dbe7c583c23 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 12 Aug 2021 13:17:29 +0200 Subject: [PATCH 348/553] - Add test tool readzone to .gitignore. --- .gitignore | 1 + doc/Changelog | 1 + 2 files changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index d0c69f81d..6c3cfb91d 100644 --- a/.gitignore +++ b/.gitignore @@ -37,6 +37,7 @@ /perf /petal /pktview +/readzone /streamtcp /unbound-dnstap-socket /testbound diff --git a/doc/Changelog b/doc/Changelog index a801ea4d7..72c83d0b5 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,7 @@ 12 August 2021: Wouter - And 1.13.2rc1 became the 1.13.2 with the fix for the python module build. The current code repository continues with version 1.13.3. + - Add test tool readzone to .gitignore. 5 August 2021: Wouter - Tag for 1.13.2rc1 release. From 20febc2179723ed67b84b7f3ffc7fd1b656b2699 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 12 Aug 2021 13:24:15 +0200 Subject: [PATCH 349/553] Changelog note for #521 - Merge #521: Update mini_event.c. --- doc/Changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/Changelog b/doc/Changelog index 72c83d0b5..a225c3181 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -2,6 +2,7 @@ - And 1.13.2rc1 became the 1.13.2 with the fix for the python module build. The current code repository continues with version 1.13.3. - Add test tool readzone to .gitignore. + - Merge #521: Update mini_event.c. 5 August 2021: Wouter - Tag for 1.13.2rc1 release. From 07f70d0745876d7e256c7f8756626a3a60e33e82 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 12 Aug 2021 13:45:18 +0200 Subject: [PATCH 350/553] Changelog note for #523 - Merge #523: fix: free() call more than once with the same pointer. --- doc/Changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/Changelog b/doc/Changelog index a225c3181..8a420d770 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -3,6 +3,7 @@ build. The current code repository continues with version 1.13.3. - Add test tool readzone to .gitignore. - Merge #521: Update mini_event.c. + - Merge #523: fix: free() call more than once with the same pointer. 5 August 2021: Wouter - Tag for 1.13.2rc1 release. From 6bee3e77fca77d42e18e3b6e44e4b03027d79c1c Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 12 Aug 2021 15:05:51 +0200 Subject: [PATCH 351/553] Changelog note for #519 and example.conf edit - Merge #519: Support for selective enabling tcp-upstream for stub/forward zones. - For #519: note stub-tcp-upstream and forward-tcp-upstream in the example configuration file. --- doc/Changelog | 4 ++++ doc/example.conf.in | 2 ++ 2 files changed, 6 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 8a420d770..15b0db32c 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -4,6 +4,10 @@ - Add test tool readzone to .gitignore. - Merge #521: Update mini_event.c. - Merge #523: fix: free() call more than once with the same pointer. + - Merge #519: Support for selective enabling tcp-upstream for + stub/forward zones. + - For #519: note stub-tcp-upstream and forward-tcp-upstream in + the example configuration file. 5 August 2021: Wouter - Tag for 1.13.2rc1 release. diff --git a/doc/example.conf.in b/doc/example.conf.in index e13c3ad24..a7287ec5e 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -987,6 +987,7 @@ remote-control: # stub-addr: 192.0.2.68 # stub-prime: no # stub-first: no +# stub-tcp-upstream: no # stub-tls-upstream: no # stub-no-cache: no # stub-zone: @@ -1004,6 +1005,7 @@ remote-control: # forward-addr: 192.0.2.68 # forward-addr: 192.0.2.73@5355 # forward to port 5355. # forward-first: no +# forward-tcp-upstream: no # forward-tls-upstream: no # forward-no-cache: no # forward-zone: From 2f828ec7207b23c1f52d8f473e2b94faf286496c Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 12 Aug 2021 15:12:55 +0200 Subject: [PATCH 352/553] - For #519: yacc and lex. And fix python bindings, and test program unbound-dnstap-socket. --- dnstap/unbound-dnstap-socket.c | 10 +- doc/Changelog | 2 + pythonmod/interface.i | 4 +- util/configlexer.c | 4781 ++++++++++++++++---------------- util/configparser.c | 4740 +++++++++++++++++-------------- util/configparser.h | 697 ++--- 6 files changed, 5498 insertions(+), 4736 deletions(-) diff --git a/dnstap/unbound-dnstap-socket.c b/dnstap/unbound-dnstap-socket.c index 3de8ab3f0..0fc74015e 100644 --- a/dnstap/unbound-dnstap-socket.c +++ b/dnstap/unbound-dnstap-socket.c @@ -1415,8 +1415,9 @@ struct outbound_entry* worker_send_query( int ATTR_UNUSED(dnssec), int ATTR_UNUSED(want_dnssec), int ATTR_UNUSED(nocaps), struct sockaddr_storage* ATTR_UNUSED(addr), socklen_t ATTR_UNUSED(addrlen), uint8_t* ATTR_UNUSED(zone), - size_t ATTR_UNUSED(zonelen), int ATTR_UNUSED(ssl_upstream), - char* ATTR_UNUSED(tls_auth_name), struct module_qstate* ATTR_UNUSED(q)) + size_t ATTR_UNUSED(zonelen), int ATTR_UNUSED(tcp_upstream), + int ATTR_UNUSED(ssl_upstream), char* ATTR_UNUSED(tls_auth_name), + struct module_qstate* ATTR_UNUSED(q)) { log_assert(0); return 0; @@ -1447,8 +1448,9 @@ struct outbound_entry* libworker_send_query( int ATTR_UNUSED(dnssec), int ATTR_UNUSED(want_dnssec), int ATTR_UNUSED(nocaps), struct sockaddr_storage* ATTR_UNUSED(addr), socklen_t ATTR_UNUSED(addrlen), uint8_t* ATTR_UNUSED(zone), - size_t ATTR_UNUSED(zonelen), int ATTR_UNUSED(ssl_upstream), - char* ATTR_UNUSED(tls_auth_name), struct module_qstate* ATTR_UNUSED(q)) + size_t ATTR_UNUSED(zonelen), int ATTR_UNUSED(tcp_upstream), + int ATTR_UNUSED(ssl_upstream), char* ATTR_UNUSED(tls_auth_name), + struct module_qstate* ATTR_UNUSED(q)) { log_assert(0); return 0; diff --git a/doc/Changelog b/doc/Changelog index 15b0db32c..6e42c649b 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -8,6 +8,8 @@ stub/forward zones. - For #519: note stub-tcp-upstream and forward-tcp-upstream in the example configuration file. + - For #519: yacc and lex. And fix python bindings, and test program + unbound-dnstap-socket. 5 August 2021: Wouter - Tag for 1.13.2rc1 release. diff --git a/pythonmod/interface.i b/pythonmod/interface.i index ce7dcde71..5825409b1 100644 --- a/pythonmod/interface.i +++ b/pythonmod/interface.i @@ -710,8 +710,8 @@ struct module_env { struct outbound_entry* (*send_query)(struct query_info* qinfo, uint16_t flags, int dnssec, int want_dnssec, int nocaps, struct sockaddr_storage* addr, socklen_t addrlen, - uint8_t* zone, size_t zonelen, int ssl_upstream, char* tls_auth_name, - struct module_qstate* q); + uint8_t* zone, size_t zonelen, int tcp_upstream, int ssl_upstream, + char* tls_auth_name, struct module_qstate* q); void (*detach_subs)(struct module_qstate* qstate); int (*attach_sub)(struct module_qstate* qstate, struct query_info* qinfo, uint16_t qflags, int prime, diff --git a/util/configlexer.c b/util/configlexer.c index af30f0643..6ead5bf93 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -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 352 -#define YY_END_OF_BUFFER 353 +#define YY_NUM_RULES 354 +#define YY_END_OF_BUFFER 355 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -363,391 +363,394 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[3484] = +static const flex_int16_t yy_accept[3508] = { 0, - 1, 1, 326, 326, 330, 330, 334, 334, 338, 338, - 1, 1, 342, 342, 346, 346, 353, 350, 1, 324, - 324, 351, 2, 351, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 326, 327, 327, 328, - 351, 330, 331, 331, 332, 351, 337, 334, 335, 335, - 336, 351, 338, 339, 339, 340, 351, 349, 325, 2, - 329, 351, 349, 345, 342, 343, 343, 344, 351, 346, - 347, 347, 348, 351, 350, 0, 1, 2, 2, 2, - 2, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 1, 1, 328, 328, 332, 332, 336, 336, 340, 340, + 1, 1, 344, 344, 348, 348, 355, 352, 1, 326, + 326, 353, 2, 353, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 328, 329, 329, 330, + 353, 332, 333, 333, 334, 353, 339, 336, 337, 337, + 338, 353, 340, 341, 341, 342, 353, 351, 327, 2, + 331, 353, 351, 347, 344, 345, 345, 346, 353, 348, + 349, 349, 350, 353, 352, 0, 1, 2, 2, 2, + 2, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 326, - 0, 330, 0, 337, 0, 334, 338, 0, 349, 0, - 2, 2, 349, 345, 0, 342, 346, 0, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 328, + 0, 332, 0, 339, 0, 336, 340, 0, 351, 0, + 2, 2, 351, 347, 0, 344, 348, 0, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 349, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 351, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 128, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 137, - 350, 350, 350, 350, 350, 350, 350, 349, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 130, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 139, + 352, 352, 352, 352, 352, 352, 352, 351, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 112, 350, 323, - 350, 350, 350, 350, 350, 350, 350, 8, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 112, 352, 325, + 352, 352, 352, 352, 352, 352, 352, 8, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 350, 350, 350, 350, 350, 350, 350, 129, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 142, 350, 350, 349, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 352, 352, 352, 352, 352, 352, 352, 131, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 144, 352, 352, 351, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 316, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 318, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 349, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 67, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 248, 350, 14, 15, 350, 19, 18, 350, - 350, 232, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 351, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 67, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 250, 352, 14, 15, 352, 19, 18, 352, + 352, 234, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 135, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 230, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 3, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 137, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 232, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 3, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 349, - 350, 350, 350, 350, 350, 350, 350, 310, 350, 350, - 309, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 333, 350, 350, 350, 350, 350, 350, 350, 350, 66, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 351, 352, 352, 352, 352, 352, 352, 352, 312, 352, + 352, 311, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 335, 352, 352, 352, 352, 352, 352, 352, 352, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 70, 350, 279, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 317, 318, - 350, 350, 350, 350, 350, 350, 350, 71, 350, 350, - 136, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 132, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 219, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 21, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 66, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 70, 352, 281, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 319, + 320, 352, 352, 352, 352, 352, 352, 352, 71, 352, + 352, 138, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 134, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 221, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 21, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 162, - 350, 350, 350, 350, 350, 349, 333, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 110, 350, - 350, 350, 350, 350, 350, 350, 287, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 188, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 164, 352, 352, 352, 352, 352, 351, 335, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 110, 352, 352, 352, 352, 352, 352, 352, 289, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 190, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 350, 350, 350, 350, 350, 350, 161, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 109, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 35, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 352, 352, 352, 352, 352, 352, 352, 352, 163, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 109, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 35, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 350, 350, 350, 36, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 68, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 134, 350, 350, 350, 349, 350, 350, 350, 350, 350, - 127, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 69, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 252, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 189, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 352, 352, 352, 352, 352, 352, 36, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 68, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 136, 352, 352, 352, 351, 352, 352, + 352, 352, 352, 129, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 69, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 254, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 191, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 57, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 270, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 61, 350, 62, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 57, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 272, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 350, 350, 350, 350, 350, 113, 350, 114, 350, 350, - 350, 350, 111, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 7, 350, 350, 350, 350, - 349, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 241, - 350, 350, 350, 350, 165, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 253, 350, 350, 350, 350, 350, 350, 350, 350, + 352, 61, 352, 62, 352, 352, 352, 352, 352, 113, + 352, 114, 352, 352, 352, 352, 352, 111, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 7, 352, 352, 352, 352, 351, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 243, 352, 352, 352, 352, 167, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 255, 352, 352, 352, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 48, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 58, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 211, 350, 210, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 16, 17, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 48, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 58, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 213, 352, 212, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 16, 17, 352, 352, 352, 352, 352, - 350, 350, 72, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 218, 350, 350, 350, 350, - 350, 350, 116, 350, 115, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 202, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 143, - 350, 350, 350, 349, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 104, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 92, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 352, 352, 352, 352, 352, 352, 352, 352, 72, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 220, 352, 352, 352, 352, 352, 352, 116, 352, + 115, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 204, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 145, 352, 352, 352, + 351, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 104, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 92, 352, 352, 352, 352, 352, 352, 352, 352, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 231, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 97, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 65, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 205, 206, 350, 350, 350, 281, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 6, 350, 350, 350, 350, 350, 350, 300, 350, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 233, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 97, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 65, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 207, 208, 352, 352, 352, 283, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 6, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 285, 350, 350, 350, - 350, 350, 350, 311, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 45, 350, 350, - 350, 350, 47, 350, 350, 350, 93, 350, 350, 350, - 350, 350, 55, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 349, 350, 198, 350, 350, 350, - 138, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 223, 350, 199, 350, 350, 350, 238, 350, 350, + 352, 352, 352, 352, 352, 352, 302, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 287, 352, 352, 352, 352, 352, + 352, 313, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 45, 352, 352, 352, + 352, 47, 352, 352, 352, 93, 352, 352, 352, 352, + 352, 55, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 351, 352, 200, 352, 352, 352, 140, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 56, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 140, - 121, 350, 122, 350, 350, 350, 120, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 158, 350, 350, 53, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 269, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 200, 350, 350, - 350, 350, 350, 203, 350, 209, 350, 350, 350, 350, - 350, 350, 237, 350, 350, 350, 350, 350, 350, 350, + 225, 352, 201, 352, 352, 352, 240, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 56, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 142, 122, + 352, 123, 352, 352, 352, 352, 121, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 160, 352, 352, 53, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 271, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 202, 352, 352, + 352, 352, 352, 205, 352, 211, 352, 352, 352, 352, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 108, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 133, 350, - 350, 350, 350, 350, 350, 350, 63, 350, 350, 350, - 29, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 20, 350, 350, 350, 350, 350, 350, 30, - 39, 350, 170, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 196, 350, 350, - 349, 350, 350, 350, 350, 350, 350, 80, 82, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 352, 352, 239, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 108, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 135, 352, + 352, 352, 352, 352, 352, 352, 63, 352, 352, 352, + 29, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 20, 352, 352, 352, 352, 352, 352, + 30, 39, 352, 172, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 198, 352, + 352, 351, 352, 352, 352, 352, 352, 352, 80, 82, - 350, 350, 289, 350, 350, 350, 350, 249, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 123, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 157, 350, 49, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 304, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 164, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 298, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 291, 352, 352, 352, 352, 251, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 124, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 159, 352, 49, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 306, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 166, 352, - 350, 350, 350, 229, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 314, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 182, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 117, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 177, 350, 190, - 350, 350, 350, 350, 350, 350, 350, 349, 350, 146, - 350, 350, 350, 350, 350, 103, 350, 350, 350, 350, - 221, 350, 350, 350, 350, 350, 350, 239, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 300, 352, 352, 352, 231, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 316, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 184, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 117, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 179, 352, 192, 352, 352, 352, 352, 352, 352, 352, + 351, 352, 148, 352, 352, 352, 352, 352, 103, 352, + 352, 352, 352, 223, 352, 352, 352, 352, 352, 352, - 350, 350, 350, 350, 261, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 139, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 181, 350, 350, 350, 350, 350, 350, 83, - 350, 84, 350, 350, 350, 350, 350, 64, 307, 350, - 350, 350, 350, 350, 91, 191, 350, 212, 350, 242, - 350, 350, 204, 282, 350, 350, 350, 350, 350, 350, - 76, 350, 193, 350, 350, 350, 350, 350, 9, 350, - 350, 350, 350, 350, 107, 350, 350, 350, 350, 274, - 350, 350, 350, 350, 220, 350, 350, 350, 350, 350, + 241, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 263, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 141, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 183, 352, 352, 352, + 352, 352, 352, 83, 352, 84, 352, 352, 352, 352, + 352, 64, 309, 352, 352, 352, 352, 352, 91, 193, + 352, 214, 352, 244, 352, 352, 206, 284, 352, 352, + 352, 352, 352, 352, 76, 352, 195, 352, 352, 352, + 352, 352, 9, 352, 352, 352, 352, 352, 107, 352, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 349, 350, 350, 350, - 350, 180, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 166, 350, 288, 350, 350, 350, 350, 350, - 260, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 233, 350, 350, 350, 350, 350, 280, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 352, 352, 352, 276, 352, 352, 352, 352, 222, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 351, 352, 352, 352, 352, 182, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 168, 352, 290, + 352, 352, 352, 352, 352, 262, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 235, 352, 352, - 350, 350, 350, 350, 350, 163, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 308, 350, 192, 350, 350, 350, 350, 350, 350, - 350, 350, 75, 77, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 106, 350, 350, 350, 350, 272, 350, - 350, 350, 350, 284, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 225, 37, 31, 33, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 38, 350, 32, 34, 350, 350, 350, 350, 350, - 350, 350, 350, 102, 350, 176, 350, 350, 350, 350, + 352, 352, 352, 282, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 165, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 310, 352, 194, + 352, 352, 352, 352, 352, 352, 352, 352, 75, 77, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 106, + 352, 352, 352, 352, 274, 352, 352, 352, 352, 286, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 227, 37, 31, 33, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 38, 352, - 350, 350, 350, 349, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 227, 224, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 74, 350, 350, 350, 141, - 350, 124, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 159, 50, 350, 350, 350, 341, 13, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 302, 350, - 305, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 12, 350, 350, 22, 350, 350, 350, 350, - 350, 278, 350, 350, 350, 350, 286, 350, 350, 350, + 32, 34, 352, 352, 352, 352, 352, 352, 352, 352, + 102, 352, 178, 352, 352, 352, 352, 352, 352, 352, + 351, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 229, 226, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 74, 352, 352, 352, 143, 352, 125, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 161, + 50, 352, 352, 352, 343, 13, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 304, 352, 307, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 78, 350, 235, 350, 350, 350, 350, 350, 226, 350, - 350, 73, 350, 350, 350, 350, 350, 23, 350, 350, - 46, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 175, 174, 350, 350, 341, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 228, 222, 350, - 240, 350, 350, 290, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 85, 350, 350, - 350, 350, 273, 350, 350, 350, 350, 208, 350, 350, + 12, 352, 352, 22, 352, 352, 352, 352, 352, 280, + 352, 352, 352, 352, 288, 352, 352, 352, 78, 352, + 237, 352, 352, 352, 352, 352, 228, 352, 352, 73, + 352, 352, 352, 352, 352, 352, 23, 352, 352, 46, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 177, 176, 352, 352, 343, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 230, 224, 352, 242, + 352, 352, 292, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 350, 350, 350, 234, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 312, 313, 172, 350, 350, - 79, 350, 350, 350, 350, 183, 350, 350, 350, 118, - 119, 350, 350, 350, 25, 350, 350, 167, 350, 169, - 350, 213, 350, 350, 350, 350, 173, 350, 350, 350, - 350, 243, 350, 350, 350, 350, 350, 350, 350, 148, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 251, 350, 350, 350, 350, 350, 350, 350, - 321, 350, 27, 350, 283, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 352, 352, 352, 352, 352, 352, 352, 85, 352, 352, + 352, 352, 275, 352, 352, 352, 352, 210, 352, 352, + 352, 352, 352, 236, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 314, 315, 174, 352, 352, + 79, 352, 352, 352, 352, 185, 352, 352, 352, 118, + 120, 119, 352, 352, 352, 25, 352, 352, 169, 352, + 171, 352, 215, 352, 352, 352, 352, 175, 352, 352, + 352, 352, 245, 352, 352, 352, 352, 352, 352, 352, + 150, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 253, 352, 352, 352, 352, 352, 352, - 89, 214, 350, 350, 271, 350, 306, 350, 207, 350, - 350, 350, 350, 350, 59, 350, 350, 350, 350, 350, - 350, 4, 350, 350, 350, 350, 131, 147, 350, 350, - 350, 187, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 246, 40, 41, 350, 350, 350, 350, 350, 350, 350, - 291, 350, 350, 350, 350, 350, 350, 350, 259, 350, - 350, 350, 350, 350, 350, 350, 350, 217, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 88, 350, 60, 277, 350, 247, 350, 350, 350, + 352, 323, 352, 27, 352, 285, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 89, 216, 352, 352, 273, 352, 308, 352, + 209, 352, 352, 352, 352, 352, 59, 352, 352, 352, + 352, 352, 352, 4, 352, 352, 352, 352, 133, 149, + 352, 352, 352, 189, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 248, 40, 41, 352, 352, 352, 352, 352, + 352, 352, 293, 352, 352, 352, 352, 352, 352, 352, + 261, 352, 352, 352, 352, 352, 352, 352, 352, 219, - 350, 350, 11, 350, 350, 350, 350, 350, 350, 350, - 350, 130, 350, 350, 350, 350, 215, 94, 350, 350, - 43, 350, 350, 350, 350, 350, 350, 350, 350, 179, - 350, 350, 350, 350, 350, 350, 350, 150, 350, 350, - 350, 350, 250, 350, 350, 350, 350, 350, 258, 350, - 350, 350, 350, 144, 350, 350, 350, 125, 126, 350, - 350, 350, 96, 100, 95, 160, 350, 350, 350, 350, - 86, 350, 350, 350, 350, 350, 350, 10, 350, 350, - 350, 350, 350, 275, 315, 350, 350, 350, 350, 350, - 320, 42, 350, 350, 350, 350, 350, 178, 350, 350, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 88, 352, 60, 279, 352, 249, + 352, 352, 352, 352, 352, 11, 352, 352, 352, 352, + 352, 352, 352, 352, 132, 352, 352, 352, 352, 217, + 94, 352, 352, 43, 352, 352, 352, 352, 352, 352, + 352, 352, 181, 352, 352, 352, 352, 352, 352, 352, + 152, 352, 352, 352, 352, 252, 352, 352, 352, 352, + 352, 260, 352, 352, 352, 352, 146, 352, 352, 352, + 126, 128, 127, 352, 352, 352, 96, 100, 95, 162, + 352, 352, 352, 352, 86, 352, 352, 352, 352, 352, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 101, 99, 350, 54, 350, 350, 87, - 303, 350, 350, 350, 350, 24, 350, 350, 350, 350, - 350, 201, 350, 350, 350, 350, 350, 216, 350, 350, - 350, 350, 350, 350, 350, 350, 197, 350, 350, 168, - 81, 350, 350, 350, 350, 350, 292, 350, 350, 350, - 350, 350, 350, 350, 255, 350, 350, 254, 145, 350, - 350, 98, 51, 350, 151, 152, 155, 156, 153, 154, - 90, 301, 350, 350, 276, 350, 350, 350, 26, 350, + 352, 10, 352, 352, 352, 352, 352, 277, 317, 352, + 352, 352, 352, 352, 322, 42, 352, 352, 352, 352, + 352, 180, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 101, 99, 352, + 54, 352, 352, 87, 305, 352, 352, 352, 352, 24, + 352, 352, 352, 352, 352, 203, 352, 352, 352, 352, + 352, 218, 352, 352, 352, 352, 352, 352, 352, 352, + 199, 352, 352, 170, 81, 352, 352, 352, 352, 352, + 294, 352, 352, 352, 352, 352, 352, 352, 257, 352, - 171, 350, 350, 350, 350, 195, 350, 245, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 185, 184, - 44, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 299, 350, 350, 350, 350, 105, 350, - 244, 350, 268, 296, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 322, 350, 52, 5, 350, - 350, 236, 350, 350, 297, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 256, 28, 350, 350, 350, 350, + 352, 256, 147, 352, 352, 98, 51, 352, 153, 154, + 157, 158, 155, 156, 90, 303, 352, 352, 278, 352, + 352, 352, 26, 352, 173, 352, 352, 352, 352, 197, + 352, 247, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 187, 186, 44, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 301, 352, 352, + 352, 352, 105, 352, 246, 352, 270, 298, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 324, - 350, 350, 350, 350, 350, 350, 350, 350, 257, 350, - 350, 350, 149, 350, 350, 350, 350, 350, 350, 350, - 350, 186, 350, 194, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 293, 350, 350, 350, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - 350, 319, 350, 350, 264, 350, 350, 350, 350, 350, - 294, 350, 350, 350, 350, 350, 350, 295, 350, 350, - 350, 262, 350, 265, 266, 350, 350, 350, 350, 350, - 263, 267, 0 + 352, 52, 5, 352, 352, 238, 352, 352, 299, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 258, 28, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 259, 352, 352, 352, 151, 352, 352, 352, + 352, 352, 352, 352, 352, 188, 352, 196, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 295, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 321, 352, 352, 266, 352, + 352, 352, 352, 352, 296, 352, 352, 352, 352, 352, + 352, 297, 352, 352, 352, 264, 352, 267, 268, 352, + + 352, 352, 352, 352, 265, 269, 0 } ; static const YY_CHAR yy_ec[256] = @@ -790,17 +793,17 @@ static const YY_CHAR yy_meta[41] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[3502] = +static const flex_int16_t yy_base[3526] = { 0, 0, 0, 38, 41, 44, 46, 59, 65, 71, 77, - 90, 112, 96, 118, 124, 136, 5204, 5022, 81, 6793, - 6793, 6793, 129, 52, 130, 63, 131, 152, 70, 140, + 90, 112, 96, 118, 124, 136, 3772, 3465, 81, 6844, + 6844, 6844, 129, 52, 130, 63, 131, 152, 70, 140, 149, 156, 57, 88, 76, 173, 175, 95, 197, 145, - 185, 199, 208, 213, 178, 123, 4580, 6793, 6793, 6793, - 107, 3835, 6793, 6793, 6793, 154, 3459, 3338, 6793, 6793, - 6793, 245, 3159, 6793, 6793, 6793, 163, 2930, 6793, 249, - 6793, 253, 148, 2502, 2483, 6793, 6793, 6793, 257, 2236, - 6793, 6793, 6793, 233, 1695, 263, 201, 0, 267, 0, + 185, 199, 208, 213, 178, 123, 3351, 6844, 6844, 6844, + 107, 3099, 6844, 6844, 6844, 154, 2963, 2900, 6844, 6844, + 6844, 245, 2522, 6844, 6844, 6844, 163, 2482, 6844, 249, + 6844, 253, 148, 2216, 1825, 6844, 6844, 6844, 257, 1688, + 6844, 6844, 6844, 233, 1531, 263, 201, 0, 267, 0, 0, 165, 191, 221, 252, 205, 181, 265, 92, 261, 216, 263, 271, 272, 210, 279, 274, 282, 278, 291, @@ -830,9 +833,9 @@ static const flex_int16_t yy_base[3502] = 738, 741, 745, 743, 750, 752, 760, 755, 756, 771, 763, 766, 762, 774, 773, 765, 769, 794, 799, 782, 787, 800, 801, 804, 802, 803, 806, 808, 809, 814, - 818, 819, 823, 807, 825, 827, 834, 829, 6793, 831, + 818, 819, 823, 807, 825, 827, 834, 829, 6844, 831, 838, 846, 839, 847, 850, 848, 854, 856, 836, 866, - 864, 867, 876, 898, 849, 871, 868, 878, 881, 6793, + 864, 867, 876, 898, 849, 871, 868, 878, 881, 6844, 884, 882, 922, 890, 891, 908, 910, 859, 909, 911, 904, 912, 933, 906, 920, 915, 945, 942, 930, 943, @@ -842,16 +845,16 @@ static const flex_int16_t yy_base[3502] = 1002, 1000, 1016, 1017, 1024, 1023, 1025, 1028, 1030, 1029, 1037, 1041, 1038, 1046, 1047, 1048, 1049, 1059, 1054, 1055, 1056, 1060, 1062, 1063, 1066, 1068, 1069, 1071, 1073, 1074, - 1080, 1081, 1085, 1089, 1075, 1090, 1082, 6793, 1097, 6793, - 1092, 1095, 1099, 1100, 1101, 1102, 1105, 6793, 1107, 1110, + 1080, 1081, 1085, 1089, 1075, 1090, 1082, 6844, 1097, 6844, + 1092, 1095, 1099, 1100, 1101, 1102, 1105, 6844, 1107, 1110, 1109, 1112, 1120, 1115, 1136, 1111, 1118, 1123, 1135, 1119, 1137, 1145, 1140, 1141, 1148, 1143, 1146, 1147, 1149, 1150, - 1153, 1156, 1159, 1161, 1155, 1162, 1178, 6793, 1163, 1167, + 1153, 1156, 1159, 1161, 1155, 1162, 1178, 6844, 1163, 1167, 1165, 1168, 1176, 1182, 1173, 1181, 1191, 1190, 1201, 1193, 1199, 1213, 1202, 1203, 1211, 1210, 1215, 1220, 1216, 1222, 1224, 1225, 1227, 1228, 1226, 1230, 1231, 1234, 1232, 1238, - 1240, 6793, 1247, 1244, 1250, 1255, 1257, 1258, 1259, 1260, + 1240, 6844, 1247, 1244, 1250, 1255, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1266, 517, 1271, 1282, 1289, 1272, 1291, 1275, 1290, 1286, 1288, 1265, 1292, 1296, 1294, 1307, 1298, 1309, 1314, 1322, 1318, 1320, 1327, 1329, 1304, 1324, @@ -859,718 +862,722 @@ static const flex_int16_t yy_base[3502] = 1344, 1346, 1345, 1347, 1351, 1353, 1355, 1356, 1357, 1359, 1366, 1361, 1373, 1369, 1371, 1372, 1368, 1387, 1376, 1379, - 1391, 1392, 1389, 1390, 6793, 1399, 1398, 1401, 1402, 1408, + 1391, 1392, 1389, 1390, 6844, 1399, 1398, 1401, 1402, 1408, 1409, 1410, 1400, 1411, 1414, 1417, 1418, 1419, 1425, 1422, 1426, 1420, 1427, 1433, 1432, 1440, 1446, 1435, 1450, 1451, 1453, 1437, 1449, 1456, 1457, 1465, 1462, 1466, 1468, 1464, 1469, 1478, 1470, 1473, 1475, 1485, 1481, 1482, 1487, 1484, 1496, 1498, 1490, 1507, 1499, 1509, 1516, 1502, 1488, 1517, 1506, 1518, 1512, 1521, 1522, 1523, 1526, 1533, 1528, 1529, - 1534, 1535, 1536, 1537, 1531, 1544, 1547, 1545, 1548, 1551, - 1552, 1553, 1557, 1560, 1555, 1561, 1566, 1567, 1568, 1570, + 1534, 1535, 1536, 1537, 1541, 1543, 1551, 1547, 1548, 1552, + 1555, 1557, 1560, 1559, 1565, 1561, 1566, 1568, 1569, 1570, - 1558, 1578, 1588, 1569, 1580, 1582, 1581, 1589, 1590, 1591, - 1596, 1597, 1598, 1600, 1601, 1608, 1611, 1602, 1605, 1614, - 1615, 1617, 1618, 1627, 1619, 1628, 1632, 1633, 1634, 1622, - 1635, 1638, 1640, 1641, 1645, 1646, 1648, 6793, 1652, 1660, - 1653, 1658, 1655, 1656, 1661, 1669, 1664, 1668, 1665, 1666, - 1670, 1692, 6793, 1674, 6793, 6793, 1676, 6793, 6793, 1677, - 1678, 6793, 1682, 1687, 1699, 1698, 1705, 1707, 1709, 1685, - 1710, 1680, 1719, 1725, 1716, 1717, 1718, 1723, 1730, 1721, - 1731, 1728, 1738, 1742, 1740, 1746, 1749, 1754, 1756, 1758, - 1750, 1761, 1767, 1764, 1770, 1772, 1775, 1760, 1776, 1778, + 1571, 1572, 1576, 1581, 1582, 1589, 1590, 1591, 1592, 1593, + 1594, 1598, 1597, 1599, 1603, 1609, 1610, 1611, 1613, 1616, + 1617, 1619, 1618, 1632, 1633, 1621, 1635, 1622, 1634, 1637, + 1640, 1623, 1642, 1646, 1649, 1645, 1651, 6844, 1653, 1662, + 1657, 1659, 1658, 1661, 1664, 1671, 1666, 1668, 1667, 1669, + 1673, 1695, 6844, 1676, 6844, 6844, 1679, 6844, 6844, 1678, + 1683, 6844, 1684, 1692, 1702, 1699, 1680, 1705, 1698, 1708, + 1710, 1711, 1719, 1732, 1720, 1716, 1722, 1712, 1723, 1725, + 1737, 1742, 1729, 1753, 1745, 1738, 1752, 1762, 1728, 1764, + 1754, 1766, 1767, 1770, 1773, 1772, 1779, 1780, 1774, 1781, - 1779, 1780, 1782, 1781, 1784, 1787, 1790, 1791, 1793, 1786, - 1794, 1805, 1803, 1796, 1813, 6793, 1809, 1821, 1806, 1823, - 1819, 1826, 1827, 1822, 1810, 1832, 1834, 1829, 1835, 1836, - 1838, 1839, 1840, 1842, 1844, 1846, 1850, 1848, 1860, 1849, - 6793, 1862, 1863, 1851, 1859, 1865, 1866, 1873, 1867, 1852, - 1870, 1876, 1886, 1882, 1884, 1887, 1888, 1890, 1891, 1892, - 6793, 1894, 1901, 1898, 1902, 1904, 1893, 1908, 1905, 1910, - 1911, 1912, 1917, 1915, 1918, 1922, 1923, 1924, 1926, 1929, - 1934, 1931, 1938, 1941, 1948, 1942, 1944, 1949, 1950, 1951, - 1953, 1954, 1955, 1957, 1962, 1966, 1965, 1969, 1967, 1968, + 1783, 1784, 1788, 1785, 1789, 1791, 1794, 1795, 1792, 1797, + 1798, 1805, 1811, 1802, 1818, 6844, 1814, 1821, 1803, 1829, + 1825, 1832, 1824, 1828, 1831, 1836, 1838, 1833, 1840, 1842, + 1843, 1844, 1845, 1846, 1849, 1851, 1855, 1853, 1870, 1854, + 6844, 1857, 1859, 1856, 1867, 1869, 1871, 1876, 1875, 1877, + 1879, 1746, 1891, 1882, 1884, 1886, 1887, 1892, 1893, 1895, + 6844, 1901, 1908, 1894, 1904, 1897, 1900, 1910, 1912, 1913, + 1914, 1917, 1921, 1919, 1922, 1932, 1927, 1931, 1928, 1929, + 1924, 1939, 1942, 1935, 1946, 1953, 1947, 1954, 1955, 1956, + 1957, 1958, 1959, 1960, 1962, 1967, 1969, 1970, 1977, 1972, - 1978, 1986, 1971, 1982, 1983, 1984, 1985, 1990, 1993, 1998, - 1994, 1996, 1999, 2008, 2000, 2005, 2007, 2010, 2013, 2023, - 2009, 2026, 2018, 2011, 2021, 2027, 2028, 6793, 2034, 2035, - 6793, 2037, 2036, 2038, 2060, 2039, 2042, 2051, 2044, 2045, - 2048, 2053, 2061, 2057, 2064, 2073, 2074, 2077, 2080, 2079, - 2082, 2086, 2085, 2088, 2089, 2092, 2095, 2093, 2100, 2107, - 2109, 2055, 2113, 2117, 2112, 2114, 2118, 2137, 2115, 2116, - 2125, 2119, 2122, 2124, 2120, 2126, 2130, 2135, 2140, 2132, - 2147, 2150, 2146, 2149, 2152, 2153, 2160, 2162, 2165, 2164, - 6793, 2172, 2170, 2174, 2175, 2176, 2183, 2181, 2179, 6793, + 1968, 1989, 1991, 1990, 1973, 1975, 1993, 1980, 1996, 2005, + 2006, 2004, 2002, 2003, 2014, 2009, 2011, 2012, 2013, 2019, + 2027, 2017, 2024, 2033, 2023, 2031, 2036, 2025, 6844, 2015, + 2038, 6844, 2040, 2042, 2043, 2065, 2046, 2050, 2048, 2056, + 2057, 2067, 2058, 2061, 2072, 2066, 2084, 2060, 2079, 2085, + 2087, 2090, 2088, 2091, 2092, 2094, 2097, 2098, 2103, 2099, + 2114, 2116, 2113, 2122, 2124, 2119, 2120, 2125, 2144, 2121, + 2123, 2126, 2130, 2131, 2129, 2127, 2137, 2146, 2136, 2138, + 2149, 2154, 2151, 2147, 2161, 2162, 2166, 2167, 2169, 2171, + 2172, 6844, 2180, 2173, 2177, 2181, 2182, 2189, 2188, 2187, - 2182, 2185, 2187, 2196, 2188, 2192, 2195, 2199, 2201, 2202, - 2204, 2205, 2208, 2206, 2207, 2226, 6793, 2209, 6793, 2213, - 2210, 2218, 2221, 2228, 2229, 2231, 2232, 2233, 6793, 6793, - 2234, 2235, 2248, 2251, 2241, 2243, 2252, 6793, 2253, 2260, - 6793, 2262, 2261, 2256, 2255, 2257, 2267, 2268, 2271, 2278, - 2274, 2282, 2277, 2279, 2283, 6793, 2287, 2280, 2288, 2291, - 2289, 2295, 2298, 2302, 2299, 6793, 2300, 2308, 2309, 2316, - 2313, 2314, 2317, 2318, 2319, 2322, 2325, 2326, 2327, 2328, - 2337, 2338, 2329, 2342, 2339, 2343, 2351, 6793, 2349, 2350, - 2336, 2358, 2355, 2362, 2357, 2363, 2353, 2359, 2364, 2370, + 6844, 2190, 2191, 2194, 2203, 2198, 2201, 2204, 2202, 2205, + 2208, 2211, 2212, 2215, 2225, 2213, 2232, 6844, 2217, 6844, + 2227, 2214, 2235, 2218, 2229, 2236, 2238, 2239, 2242, 6844, + 6844, 2245, 2246, 2248, 2257, 2252, 2256, 2259, 6844, 2258, + 2266, 6844, 2263, 2270, 2262, 2268, 2269, 2275, 2277, 2279, + 2284, 2280, 2287, 2282, 2286, 2289, 6844, 2292, 2283, 2296, + 2302, 2298, 2299, 2305, 2306, 2309, 6844, 2312, 2313, 2316, + 2323, 2320, 2315, 2325, 2327, 2331, 2326, 2328, 2333, 2334, + 2335, 2342, 2345, 2346, 2349, 2350, 2357, 2356, 2358, 6844, + 2359, 2360, 2362, 2369, 2365, 2367, 2368, 2371, 2372, 2373, - 2365, 2369, 2375, 2377, 2379, 2386, 2387, 2382, 2383, 2385, - 2390, 2391, 2392, 2394, 2399, 2396, 2401, 2400, 2402, 6793, - 2403, 2407, 2408, 2413, 2415, 2411, 171, 2421, 2417, 2424, - 2423, 2425, 2430, 2426, 2439, 2443, 2438, 2440, 2442, 2447, - 2441, 2448, 2451, 2449, 2450, 2453, 2457, 2458, 6793, 2466, - 2459, 2461, 2463, 2468, 2467, 2470, 6793, 2476, 2481, 2483, - 2491, 2485, 2493, 2494, 2495, 2498, 2496, 2499, 2500, 2501, - 2503, 2506, 2510, 2509, 6793, 2512, 2517, 2518, 2515, 2524, - 2526, 2525, 2527, 2531, 2532, 2533, 2537, 2536, 2538, 2539, - 2540, 2541, 2547, 2548, 2555, 2544, 2554, 2556, 2557, 2560, + 2338, 2376, 2374, 2381, 2375, 2383, 2384, 2394, 2397, 2387, + 2396, 2399, 2389, 2400, 2404, 2405, 2410, 2407, 2409, 2411, + 2412, 6844, 2413, 2420, 2421, 2417, 2426, 2415, 171, 2424, + 2427, 2428, 2434, 2436, 2444, 2433, 2447, 2452, 2448, 2449, + 2455, 2451, 2458, 2459, 2460, 2461, 2450, 2463, 2462, 2466, + 6844, 2468, 2474, 2471, 2475, 2478, 2479, 2481, 6844, 2483, + 2491, 2493, 2502, 2496, 2480, 2504, 2505, 2508, 2506, 2509, + 2510, 2511, 2512, 2513, 2519, 2516, 6844, 2521, 2528, 2531, + 2518, 2532, 2539, 2525, 2540, 2541, 2542, 2545, 2544, 2546, + 2550, 2547, 2549, 2551, 2552, 2560, 2571, 2554, 2563, 2564, - 2566, 2562, 2567, 2568, 2575, 2570, 6793, 2577, 2573, 2580, - 2576, 2582, 2585, 2586, 2587, 2604, 2589, 2593, 2596, 2605, - 2610, 2600, 2612, 2620, 2616, 2622, 2625, 2630, 2626, 2632, - 2635, 2628, 2638, 2640, 2641, 2642, 2650, 2646, 2647, 2648, - 2651, 2652, 2662, 2663, 2654, 2664, 2666, 2669, 2658, 2676, - 2681, 2683, 6793, 2685, 2673, 2687, 2690, 2697, 2692, 2671, - 2695, 2698, 2702, 2703, 2704, 2706, 2713, 2708, 2710, 2714, - 2716, 2715, 2717, 2724, 2719, 2725, 2727, 2734, 2730, 2736, - 2595, 6793, 2738, 2739, 2740, 2742, 2747, 2743, 2749, 2752, - 2755, 2754, 2756, 2758, 2761, 2762, 2764, 2765, 2772, 2768, + 2567, 2568, 2572, 2576, 2577, 2578, 2585, 2580, 6844, 2592, + 2581, 2589, 2590, 2588, 2591, 2594, 2597, 2611, 2601, 2604, + 2606, 2612, 2621, 2614, 2615, 2623, 2631, 2628, 2616, 2641, + 2637, 2638, 2645, 2636, 2647, 2649, 2639, 2650, 2661, 2651, + 2653, 2658, 2656, 2662, 2671, 2672, 2664, 2674, 2667, 2677, + 2675, 2690, 2695, 2686, 6844, 2684, 2679, 2696, 2698, 2705, + 2700, 2701, 2703, 2702, 2706, 2710, 2711, 2712, 2719, 2717, + 2720, 2721, 2722, 2724, 2725, 2732, 2731, 2733, 2736, 2743, + 2737, 2745, 2746, 6844, 2747, 2751, 2740, 2753, 2755, 2757, + 2761, 2763, 2765, 2766, 2767, 2768, 2772, 2773, 2769, 2775, - 2769, 2774, 2770, 6793, 2780, 2771, 2782, 2784, 2789, 2791, - 2790, 2793, 2792, 2800, 2802, 2803, 2804, 2805, 2806, 6793, - 2814, 2815, 2811, 2813, 2823, 2820, 2822, 2824, 2826, 2827, - 6793, 2828, 2830, 2832, 2831, 2834, 2836, 2843, 2844, 2839, - 6793, 2855, 2850, 2840, 2851, 2853, 2852, 2856, 2857, 2861, - 2862, 2867, 2863, 2873, 2869, 2875, 6793, 2876, 2883, 2878, - 2879, 2886, 2884, 2889, 2890, 2901, 2891, 2897, 2893, 6793, - 2916, 2911, 2902, 2918, 2903, 2914, 2919, 2920, 2921, 2923, - 2924, 2927, 2928, 6793, 2929, 2931, 2933, 2934, 2938, 2936, - 2939, 2952, 2945, 2947, 2950, 2953, 2955, 2956, 2960, 2962, + 2774, 2782, 2779, 2781, 2783, 2780, 6844, 2792, 2791, 2796, + 2797, 2799, 2800, 2802, 2809, 2805, 2813, 2815, 2803, 2816, + 2817, 2818, 6844, 2825, 2829, 2827, 2828, 2836, 2826, 2834, + 2837, 2839, 2840, 6844, 2841, 2843, 2049, 2842, 2844, 2845, + 2855, 2856, 2852, 6844, 2865, 2862, 2847, 2851, 2854, 2863, + 2869, 2872, 2870, 2874, 2875, 2878, 2880, 2881, 2884, 6844, + 2886, 2897, 2885, 2892, 2894, 2895, 2898, 2900, 2906, 2907, + 2908, 2912, 6844, 2923, 2920, 2919, 2928, 2921, 2925, 2929, + 2931, 2932, 2934, 2933, 2938, 2935, 6844, 2942, 2939, 2941, + 2944, 2946, 2948, 2949, 2960, 2958, 2961, 2962, 2964, 2965, - 2967, 2959, 2961, 2971, 2973, 2963, 2976, 2979, 2983, 2987, - 2992, 2988, 2989, 2994, 2991, 2995, 2996, 2998, 3006, 3007, - 3010, 3008, 3012, 6793, 3015, 3016, 3018, 3005, 3019, 3021, - 3022, 3025, 3028, 3024, 3026, 3033, 3036, 3030, 3046, 3048, - 3039, 3051, 3041, 3043, 3054, 3053, 3055, 3056, 3057, 3067, - 3064, 3065, 3066, 3077, 3068, 3072, 3079, 3070, 3080, 3081, - 3082, 3083, 3084, 3088, 3090, 3093, 3094, 3095, 3086, 3107, - 3109, 3110, 3112, 3104, 3102, 3118, 3119, 6793, 3122, 3123, - 3120, 3124, 3126, 3130, 3127, 3139, 3134, 3137, 3136, 3143, - 3148, 3145, 3146, 3151, 3153, 3161, 3157, 6793, 3154, 6793, + 2967, 2969, 2971, 2972, 2984, 2973, 2974, 2983, 2985, 2975, + 2987, 2993, 2997, 3000, 3005, 3001, 3002, 3007, 3004, 3008, + 3009, 3011, 3018, 3020, 3023, 3021, 3025, 6844, 3028, 3029, + 3031, 3019, 3032, 3034, 3035, 3036, 3038, 3041, 3045, 3042, + 3046, 3049, 3057, 3064, 3052, 3054, 3059, 3062, 3065, 3066, + 3067, 3069, 3070, 3079, 3075, 3076, 3077, 3090, 3082, 3085, + 3093, 3083, 3092, 3094, 3095, 3098, 3097, 3100, 3104, 3106, + 3107, 3108, 3110, 3117, 3120, 3123, 3121, 3124, 3129, 3130, + 3133, 6844, 3131, 3136, 3132, 3134, 3140, 3145, 3146, 3148, + 3150, 3153, 3155, 3157, 3158, 3159, 3163, 3164, 3167, 3174, - 3158, 3162, 3168, 3176, 3163, 6793, 3175, 6793, 3177, 3182, - 3171, 3178, 6793, 3185, 3184, 3166, 3189, 3190, 3191, 3193, - 3195, 3196, 3197, 3199, 3200, 3203, 3204, 3206, 3207, 3209, - 3217, 3211, 3219, 3223, 3220, 3227, 3230, 3224, 3238, 3214, - 3231, 3240, 3241, 3233, 3242, 6793, 3249, 3243, 3253, 3254, - 3255, 3256, 3258, 3257, 3261, 3260, 3262, 3264, 3267, 3268, - 3279, 3273, 3265, 3280, 3281, 3284, 3292, 3290, 3297, 6793, - 3293, 3295, 3296, 3298, 6793, 3301, 3299, 3302, 3308, 3305, - 3311, 3312, 3313, 3317, 3314, 3321, 3320, 3325, 3330, 3334, - 3335, 6793, 3336, 3337, 3322, 3341, 3349, 3352, 3356, 3353, + 3170, 6844, 3171, 6844, 3172, 3175, 3176, 3184, 3182, 6844, + 3186, 6844, 3188, 3195, 3183, 3190, 3192, 6844, 3197, 3196, + 3198, 3201, 3203, 3204, 3207, 3209, 3212, 3211, 3213, 3214, + 3219, 3220, 3221, 3224, 3225, 3232, 3226, 3229, 3234, 3235, + 3242, 3244, 3237, 3251, 3243, 3253, 3255, 3254, 3256, 3259, + 6844, 3261, 3267, 3263, 3268, 3246, 3269, 3271, 3274, 3277, + 3278, 3279, 3281, 3282, 3284, 3289, 3283, 3290, 3296, 3297, + 3300, 3307, 3298, 3312, 6844, 3308, 3310, 3311, 3313, 6844, + 3315, 3314, 3323, 3325, 3317, 3321, 3327, 3329, 3333, 3328, + 3335, 3336, 3337, 3350, 3348, 3349, 6844, 3345, 3357, 3341, - 3359, 3361, 3357, 3363, 3364, 3355, 3365, 3366, 3367, 3375, - 3378, 3371, 3380, 3379, 3382, 3389, 3385, 3381, 3383, 3391, - 3392, 3393, 3394, 3395, 3396, 3397, 3400, 3411, 3398, 3416, - 6793, 3406, 3415, 3419, 3426, 3401, 3424, 3405, 3428, 3429, - 6793, 3431, 3433, 3434, 3435, 3436, 3441, 3438, 3443, 3444, - 3445, 3446, 3448, 3451, 3449, 6793, 3457, 6793, 3458, 3466, - 3471, 3474, 3464, 3468, 3475, 3480, 3481, 3482, 3484, 3485, - 3487, 3490, 3491, 3493, 3495, 3496, 3497, 3504, 3500, 3503, - 3511, 3510, 3512, 3513, 3521, 3517, 3518, 6793, 6793, 3516, - 3519, 3531, 3527, 3525, 3533, 3535, 3539, 3540, 3542, 3544, + 3358, 3360, 3369, 3370, 3367, 3373, 3375, 3371, 3377, 3378, + 3379, 3380, 3381, 3383, 3390, 3393, 3394, 3395, 3398, 3385, + 3402, 3404, 3405, 3396, 3389, 3406, 3411, 3412, 3413, 3415, + 3416, 3417, 3418, 3419, 3420, 3423, 6844, 3424, 3428, 3432, + 3441, 3433, 3438, 3437, 3444, 3443, 6844, 3447, 3448, 3450, + 3449, 3451, 3456, 3459, 3460, 3462, 3463, 3466, 3467, 3470, + 3469, 6844, 3475, 6844, 3476, 3483, 3478, 3488, 3491, 3489, + 3493, 3498, 3492, 3494, 3499, 3506, 3510, 3500, 3502, 3508, + 3511, 3512, 3514, 3522, 3526, 3520, 3528, 3527, 3529, 3531, + 3538, 3534, 3536, 6844, 6844, 3533, 3535, 3549, 3544, 3542, - 3546, 3553, 6793, 3549, 3554, 3555, 3556, 3568, 3557, 3559, - 3572, 3571, 3567, 3579, 3574, 6793, 3570, 3578, 3588, 3583, - 3584, 3591, 6793, 3586, 6793, 3589, 3595, 3597, 3598, 3600, - 3599, 3601, 3602, 3604, 3606, 3617, 3613, 3625, 3611, 3622, - 3623, 3626, 3627, 3629, 3632, 3636, 3631, 3633, 3634, 6793, - 3640, 3635, 3637, 3642, 3648, 3651, 3654, 3657, 3650, 6793, - 3658, 3661, 3660, 3662, 3664, 3672, 3665, 3675, 3667, 3677, - 3678, 3681, 3682, 3683, 6793, 3680, 3685, 3696, 3689, 3691, - 3697, 3707, 3708, 3713, 6793, 3693, 3710, 3720, 3716, 3717, - 3700, 3718, 3704, 3722, 3723, 3725, 3726, 3727, 3728, 3730, + 3552, 3554, 3556, 3559, 3561, 3546, 3562, 3572, 6844, 3563, + 3570, 3573, 3576, 3584, 3574, 3583, 3593, 3586, 3575, 3594, + 3590, 6844, 3597, 3598, 3605, 3600, 3601, 3608, 6844, 3603, + 6844, 3606, 3607, 3609, 3614, 3615, 3618, 3616, 3621, 3619, + 3623, 3624, 3634, 3641, 3642, 3631, 3640, 3643, 3646, 3647, + 3649, 3645, 3656, 3651, 3652, 3653, 6844, 3660, 3654, 3657, + 3662, 3665, 3670, 3672, 3669, 3676, 6844, 3679, 3680, 3681, + 3682, 3683, 3687, 3688, 3691, 3692, 3696, 3700, 3697, 3693, + 3701, 6844, 3702, 3706, 3715, 3708, 3710, 3712, 3717, 3719, + 3724, 6844, 3725, 3727, 3735, 3732, 3733, 3737, 3738, 3734, - 3733, 3734, 3736, 3735, 3747, 3746, 3738, 3750, 3760, 3740, - 6793, 3756, 3757, 3762, 3763, 3764, 3765, 3767, 3770, 3772, - 3773, 3785, 3786, 3774, 3777, 3789, 3790, 3797, 3796, 6793, - 3806, 3792, 3807, 3803, 3780, 3809, 3814, 3782, 3811, 3818, - 3804, 3815, 3820, 3821, 3822, 3824, 3833, 3828, 3830, 3831, - 3832, 3843, 3834, 6793, 3845, 3846, 3838, 3855, 3848, 3851, - 3862, 3858, 3861, 3863, 3865, 3868, 3869, 3871, 3873, 3874, - 3877, 3872, 6793, 6793, 3879, 3880, 3887, 6793, 3888, 3882, - 3889, 3885, 3899, 3886, 3893, 3902, 3904, 3890, 3910, 3900, - 3906, 6793, 3912, 3920, 3915, 3918, 3927, 3928, 6793, 3919, + 3740, 3742, 3743, 3744, 3746, 3747, 3752, 3748, 3750, 3757, + 3753, 3765, 3767, 3759, 3769, 3781, 3771, 6844, 3776, 3778, + 3780, 3782, 3783, 3784, 3786, 3789, 3791, 3793, 3804, 3805, + 3794, 3799, 3801, 3808, 3810, 3817, 3809, 6844, 3824, 3816, + 3825, 3821, 3823, 3827, 3829, 3831, 3832, 3836, 3838, 3833, + 3839, 3840, 3841, 3847, 3849, 3846, 3850, 3855, 3856, 3863, + 3861, 6844, 3868, 3864, 3869, 3872, 3866, 3871, 3885, 3880, + 3875, 3882, 3888, 3883, 3890, 3892, 3893, 3896, 3899, 3894, + 6844, 6844, 3901, 3902, 3904, 6844, 3907, 3905, 3917, 3906, + 3919, 3908, 3910, 3921, 3923, 3920, 3930, 3924, 3933, 6844, - 3929, 3932, 3934, 3924, 3936, 3940, 3937, 3941, 3942, 3943, - 3945, 3953, 3954, 3950, 3951, 3957, 6793, 3952, 3958, 3962, - 3964, 3955, 3968, 6793, 3965, 3971, 3978, 3976, 3981, 3986, - 3987, 3988, 3993, 3973, 3989, 3995, 3996, 3997, 3998, 4006, - 4002, 4007, 4005, 4008, 4012, 4015, 4009, 6793, 4019, 4023, - 4024, 4026, 6793, 4030, 4033, 4037, 6793, 4041, 4036, 4038, - 4040, 4048, 6793, 4045, 4046, 4047, 4053, 4049, 4061, 4051, - 4064, 4066, 4056, 4060, 4063, 4067, 6793, 4069, 4070, 4071, - 6793, 4082, 4077, 4084, 4087, 4072, 4094, 4090, 4093, 4091, - 4095, 6793, 4100, 6793, 4099, 4101, 4106, 6793, 4103, 4108, + 3934, 3941, 3936, 3937, 3948, 3938, 6844, 3943, 3951, 3953, + 3954, 3955, 3947, 3957, 3958, 3960, 3961, 3965, 3968, 3972, + 3977, 3973, 3974, 3978, 6844, 3975, 3980, 3981, 3984, 3985, + 3988, 6844, 3987, 3990, 3996, 3999, 3992, 4008, 4009, 4000, + 4015, 4010, 4012, 4017, 4018, 4019, 4020, 4021, 4028, 4024, + 4029, 4025, 4032, 4034, 4037, 4043, 6844, 4046, 4048, 4049, + 4051, 6844, 4053, 4062, 4060, 6844, 4063, 4058, 4065, 4066, + 4073, 6844, 4068, 4071, 4074, 4076, 4072, 4085, 4081, 4088, + 4090, 4083, 4087, 4091, 4092, 6844, 4093, 4094, 4095, 6844, + 4098, 4108, 4111, 4115, 4099, 4112, 4116, 4118, 4120, 4121, - 4109, 4111, 4112, 4117, 4118, 4116, 4125, 4126, 4127, 4129, - 4130, 4128, 4133, 4137, 4134, 4135, 4139, 4140, 6793, 4141, - 4143, 4150, 4145, 4155, 4151, 4158, 4148, 4162, 4163, 6793, - 6793, 4172, 6793, 4174, 4164, 4166, 6793, 4168, 4173, 4181, - 4178, 4184, 4186, 4179, 4190, 4191, 6793, 4193, 4200, 6793, - 4194, 4196, 4204, 4205, 4203, 4206, 4207, 4208, 4211, 4212, - 4213, 4214, 4215, 4222, 4216, 4221, 4218, 6793, 4223, 4229, - 4232, 4239, 4231, 4235, 4245, 4241, 4240, 6793, 4251, 4257, - 4247, 4253, 4254, 6793, 4262, 6793, 4250, 4263, 4264, 4267, - 4266, 4279, 6793, 4275, 4270, 4281, 4274, 4278, 4286, 4282, + 6844, 4124, 6844, 4125, 4127, 4131, 6844, 4133, 4134, 4135, + 4137, 4138, 4143, 4144, 4150, 4142, 4151, 4152, 4154, 4155, + 4156, 4157, 4164, 4159, 4166, 4163, 4165, 6844, 4168, 4167, + 4173, 4170, 4183, 4178, 4176, 4186, 4189, 4191, 6844, 6844, + 4193, 6844, 4195, 4196, 4197, 4199, 6844, 4201, 4200, 4208, + 4203, 4205, 4209, 4210, 4218, 4027, 6844, 4222, 4223, 6844, + 4219, 4225, 4232, 4227, 4229, 4230, 4233, 4234, 4237, 4238, + 4239, 4243, 4245, 4244, 4240, 4247, 4248, 6844, 4249, 4250, + 4258, 4264, 4257, 4261, 4265, 4271, 4272, 6844, 4274, 4278, + 4277, 4282, 4283, 6844, 4284, 6844, 4285, 4288, 4286, 4289, - 4289, 4290, 4291, 4298, 4296, 4293, 4295, 4303, 4304, 6793, - 4299, 4305, 4310, 4313, 4315, 4316, 4323, 4320, 4322, 4321, - 4326, 4328, 4329, 4331, 4337, 4335, 4340, 4333, 6793, 4343, - 4346, 4347, 4359, 4349, 4354, 4350, 6793, 4357, 4360, 4366, - 6793, 4364, 4356, 4370, 4373, 4367, 4374, 4375, 4378, 4380, - 4381, 4382, 6793, 4383, 4386, 4384, 4388, 4397, 4390, 6793, - 6793, 4400, 6793, 4401, 4389, 4405, 4408, 4409, 4413, 4411, - 4414, 4416, 4417, 4418, 4421, 4424, 4427, 6793, 4428, 4436, - 4431, 4439, 4448, 4449, 4441, 4446, 4432, 6793, 6793, 4451, - 4455, 4457, 4459, 4460, 4462, 4445, 4471, 4464, 4467, 4473, + 4294, 4302, 6844, 4299, 4300, 4305, 4306, 4307, 4308, 4311, + 4315, 4309, 4317, 4324, 4321, 4322, 4319, 4329, 4325, 6844, + 4330, 4334, 4339, 4340, 4336, 4342, 4350, 4347, 4343, 4346, + 4353, 4355, 4356, 4357, 4359, 4363, 4365, 4366, 6844, 4367, + 4371, 4374, 4381, 4377, 4378, 4382, 6844, 4385, 4383, 4386, + 6844, 4390, 4392, 4393, 4399, 4396, 4400, 4401, 4404, 4405, + 4407, 4408, 4406, 6844, 4410, 4413, 4409, 4426, 4427, 4415, + 6844, 6844, 4428, 6844, 4433, 4417, 4435, 4436, 4416, 4437, + 4443, 4444, 4449, 4438, 4445, 4451, 4452, 4458, 6844, 4459, + 4466, 4461, 4468, 4469, 4476, 4472, 4465, 4474, 6844, 6844, - 4475, 4482, 6793, 4479, 4477, 4484, 4478, 6793, 4485, 4486, - 4489, 4487, 4490, 4493, 4492, 4494, 4496, 4499, 4504, 4505, - 4500, 4513, 4506, 4507, 4516, 4517, 4519, 4520, 4522, 4527, - 6793, 4523, 4529, 4530, 4534, 4535, 4537, 4539, 4538, 4541, - 4551, 6793, 4543, 6793, 4542, 4547, 4546, 4563, 4544, 4554, - 4566, 4567, 4568, 4569, 4572, 4573, 4576, 4577, 4587, 4578, - 4582, 4588, 4590, 4592, 4597, 4598, 6793, 4600, 4584, 4594, - 4601, 4607, 4609, 4610, 4612, 4615, 4617, 4619, 4618, 4621, - 4625, 4622, 4626, 4627, 4628, 4630, 6793, 4632, 4639, 4631, - 4641, 4643, 4645, 4652, 4646, 4654, 4648, 4656, 4657, 6793, + 4480, 4481, 4477, 4485, 4487, 4489, 4490, 4497, 4493, 4499, + 4503, 4504, 4511, 6844, 4506, 4492, 4513, 4495, 6844, 4514, + 4516, 4518, 4519, 4520, 4522, 4526, 4523, 4524, 4527, 4531, + 4528, 4533, 4545, 4535, 4536, 4544, 4538, 4546, 4547, 4537, + 4553, 6844, 4558, 4559, 4562, 4563, 4564, 4565, 4567, 4569, + 4568, 4570, 4577, 6844, 4573, 6844, 4572, 4579, 4592, 4574, + 4575, 4584, 4594, 4597, 4596, 4601, 4603, 4604, 4607, 4608, + 4612, 4602, 4613, 4618, 4620, 4622, 4624, 4625, 6844, 4628, + 4614, 4627, 4631, 4636, 4638, 4639, 4641, 4642, 4645, 4646, + 4648, 4650, 4652, 4654, 4655, 4656, 4657, 4659, 6844, 4662, - 4658, 4660, 4664, 6793, 4665, 4666, 4668, 4670, 4676, 4669, - 4672, 4678, 4680, 6793, 4682, 4684, 4687, 4686, 4690, 4691, - 4692, 4696, 4698, 4699, 4702, 6793, 4712, 4703, 4711, 4714, - 4710, 4713, 4717, 4723, 4721, 6793, 4724, 4725, 4727, 4737, - 4739, 4732, 4734, 4746, 4736, 4743, 4744, 4745, 4751, 4750, - 4752, 4755, 4756, 4757, 4766, 4768, 4763, 6793, 4770, 6793, - 4772, 4773, 4774, 4783, 4778, 4776, 4780, 4784, 4786, 6793, - 4788, 4791, 4794, 4795, 4796, 6793, 4797, 4798, 4800, 4799, - 6793, 4813, 4812, 4801, 4818, 4803, 4819, 6793, 4823, 4824, - 4826, 4834, 4835, 4832, 4837, 4825, 4842, 4833, 4838, 4840, + 4666, 4663, 4670, 4672, 4674, 4676, 4683, 4686, 4675, 4677, + 4687, 6844, 4681, 4688, 4698, 6844, 4691, 4693, 4695, 4700, + 4702, 4703, 4708, 4705, 4706, 6844, 4715, 4709, 4712, 4717, + 4718, 4723, 4724, 4725, 4728, 4730, 4735, 6844, 4733, 4734, + 4739, 4740, 4742, 4743, 4747, 4749, 4748, 6844, 4752, 4758, + 4759, 4751, 4771, 4775, 4760, 4761, 4778, 4777, 4779, 4762, + 4770, 4785, 4780, 4786, 4790, 4791, 4792, 4802, 4803, 4794, + 6844, 4773, 6844, 4801, 4804, 4807, 4811, 4809, 4814, 4815, + 4812, 4819, 6844, 4820, 4822, 4825, 4827, 4826, 6844, 4828, + 4829, 4831, 4832, 6844, 4830, 4843, 4834, 4837, 4851, 4852, - 4846, 4850, 4848, 4849, 6793, 4851, 4853, 4858, 4860, 4861, - 4863, 4864, 4867, 4869, 4866, 6793, 4873, 4874, 4875, 4876, - 4877, 4880, 4882, 4889, 4885, 4892, 4886, 4888, 4896, 4897, - 4898, 4906, 6793, 4899, 4901, 4903, 4916, 4912, 4921, 6793, - 4909, 6793, 4913, 4924, 4926, 4914, 4930, 6793, 6793, 4928, - 4939, 4922, 4936, 4937, 6793, 6793, 4942, 6793, 4938, 6793, - 4943, 4944, 6793, 6793, 4945, 4947, 4948, 4949, 4953, 4952, - 6793, 4962, 6793, 4965, 4963, 4955, 4966, 4967, 6793, 4968, - 4974, 4970, 4978, 4976, 6793, 4980, 4985, 4981, 4983, 6793, - 4992, 4993, 4984, 4986, 6793, 4994, 5001, 4997, 5005, 5006, + 6844, 4856, 4857, 4858, 4865, 4867, 4862, 4869, 4864, 4872, + 4870, 4866, 4874, 4875, 4883, 4881, 4879, 6844, 4885, 4887, + 4892, 4894, 4888, 4896, 4886, 4898, 4901, 4903, 6844, 4904, + 4907, 4908, 4910, 4911, 4913, 4912, 4914, 4921, 4918, 4922, + 4920, 4926, 4929, 4931, 4933, 4935, 6844, 4937, 4939, 4941, + 4950, 4943, 4940, 6844, 4947, 6844, 4952, 4957, 4959, 4953, + 4960, 6844, 6844, 4963, 4970, 4965, 4969, 4971, 6844, 6844, + 4973, 6844, 4974, 6844, 4975, 4978, 6844, 6844, 4976, 4982, + 4983, 4985, 4986, 4988, 6844, 4996, 6844, 4999, 4997, 4984, + 5001, 5002, 6844, 5003, 5006, 5005, 5012, 5011, 6844, 5016, - 5007, 5008, 5011, 5013, 5009, 5014, 5016, 5017, 5024, 5031, - 5033, 5035, 5039, 5028, 5026, 5041, 5042, 5047, 5045, 5049, - 5050, 5051, 5052, 5054, 5056, 5053, 5059, 5061, 5063, 5064, - 5068, 5065, 5066, 5078, 5067, 5079, 5081, 5082, 5085, 5088, - 5089, 5090, 5092, 5093, 5095, 5018, 5094, 5096, 5101, 5098, - 5100, 6793, 5102, 5104, 5105, 5108, 5118, 5119, 5122, 5130, - 5134, 5135, 6793, 5137, 6793, 5139, 5123, 5131, 5125, 5143, - 6793, 5145, 5146, 5147, 5148, 5112, 5150, 5149, 5152, 5153, - 5155, 5156, 6793, 5160, 5161, 5154, 5174, 5163, 6793, 5177, - 5167, 5178, 5179, 5180, 5184, 5182, 5185, 5188, 5189, 5191, + 5019, 5014, 5015, 6844, 5021, 5026, 5018, 5027, 6844, 5033, + 5036, 5038, 5028, 5031, 5039, 5047, 5041, 5042, 5048, 5052, + 5050, 5051, 5053, 5062, 5064, 5066, 5068, 5069, 5054, 5073, + 5074, 5076, 5079, 5082, 5083, 5084, 5085, 5086, 5088, 5090, + 5087, 5092, 5098, 5099, 5100, 5095, 5101, 5108, 5109, 5111, + 5115, 5117, 5118, 5120, 5121, 5122, 5123, 5124, 5125, 5129, + 5130, 5126, 5133, 5137, 5140, 5141, 6844, 5143, 5144, 5145, + 5149, 5150, 5153, 5154, 5163, 5170, 5171, 6844, 5173, 6844, + 5175, 5160, 5177, 5165, 5167, 6844, 5179, 5180, 5181, 5185, + 5183, 5186, 5187, 5190, 5191, 5193, 5194, 6844, 5197, 5200, - 5193, 5195, 5181, 5202, 5205, 6793, 5207, 5210, 5218, 5213, - 5214, 5215, 5216, 5217, 5219, 5221, 5223, 5224, 5233, 5225, - 5236, 6793, 5237, 6793, 5238, 5240, 5242, 5243, 5244, 5245, - 5246, 5248, 6793, 6793, 5251, 5252, 5258, 5253, 5260, 5262, - 5264, 5265, 5269, 6793, 5270, 5272, 5282, 5274, 6793, 5277, - 5279, 5283, 5289, 6793, 5284, 5286, 5290, 5298, 5291, 5301, - 5302, 5304, 5293, 5305, 5306, 5312, 6793, 6793, 6793, 6793, - 5314, 5308, 5319, 5316, 5320, 5322, 5323, 5325, 5328, 5321, - 5324, 6793, 5336, 6793, 6793, 5337, 5338, 5340, 5344, 5345, - 5346, 5347, 5350, 6793, 5348, 6793, 5352, 5355, 5351, 5362, + 5201, 5204, 5208, 6844, 5212, 5216, 5202, 5217, 5218, 5219, + 5222, 5224, 5225, 5228, 5227, 5231, 5230, 5233, 5234, 5239, + 5241, 6844, 5249, 5251, 5258, 5245, 5240, 5253, 5256, 5259, + 5260, 5261, 5262, 5266, 5274, 5269, 5276, 6844, 5265, 6844, + 5277, 5278, 5279, 5282, 5283, 5285, 5287, 5289, 6844, 6844, + 5292, 5293, 5295, 5298, 5299, 5301, 5303, 5304, 5305, 6844, + 5306, 5311, 5323, 5316, 6844, 5310, 5318, 5320, 5327, 6844, + 5324, 5328, 5330, 5332, 5333, 5342, 5339, 5345, 5335, 5343, + 5346, 5348, 6844, 6844, 6844, 6844, 5349, 5353, 5357, 5358, + 5359, 5360, 5361, 5365, 5367, 5363, 5364, 5368, 6844, 5378, - 5368, 5359, 5369, 5371, 5372, 5373, 5374, 5375, 5382, 5380, - 5383, 5381, 5386, 5390, 5395, 6793, 6793, 5387, 5398, 5399, - 5407, 5403, 5404, 5405, 5416, 5411, 5412, 5413, 5414, 5418, - 5420, 5427, 5430, 5423, 5425, 6793, 5431, 5434, 5432, 6793, - 5433, 6793, 5442, 5443, 5436, 5440, 5446, 5449, 5450, 5452, - 5457, 6793, 6793, 5456, 5465, 5460, 6793, 6793, 5444, 5464, - 5467, 5469, 5470, 5471, 5472, 5473, 5476, 5478, 6793, 5479, - 6793, 5480, 5483, 5492, 5482, 5495, 5499, 5485, 5502, 5505, - 5498, 5508, 6793, 5501, 5509, 6793, 5517, 5512, 5514, 5516, - 5519, 6793, 5520, 5523, 5525, 5527, 6793, 5529, 5531, 5532, + 6844, 6844, 5380, 5381, 5379, 5382, 5388, 5389, 5390, 5392, + 6844, 5391, 6844, 5397, 5398, 5394, 5405, 5411, 5407, 5395, + 5416, 5413, 5417, 5401, 5418, 5427, 5423, 5424, 5426, 5429, + 5431, 5433, 6844, 6844, 5435, 5438, 5439, 5446, 5444, 5447, + 5443, 5456, 5451, 5453, 5454, 5459, 5460, 5461, 5470, 5471, + 5462, 5466, 6844, 5469, 5472, 5480, 6844, 5473, 6844, 5479, + 5481, 5487, 5475, 5488, 5489, 5490, 5494, 5491, 5497, 6844, + 6844, 5496, 5509, 5504, 6844, 6844, 5505, 5506, 5508, 5512, + 5513, 5515, 5507, 5517, 5519, 5521, 6844, 5522, 6844, 5523, + 5525, 5531, 5528, 5539, 5541, 5536, 5544, 5546, 5542, 5547, - 6793, 5539, 6793, 5533, 5540, 5536, 5550, 5542, 6793, 5543, - 5546, 6793, 5552, 5556, 5557, 5558, 5559, 6793, 5562, 5564, - 6793, 5565, 5567, 5568, 5574, 5575, 5577, 5570, 5578, 5579, - 5586, 5588, 5591, 6793, 6793, 5598, 5584, 135, 5600, 5581, - 5597, 5601, 5602, 5609, 5605, 5606, 5612, 6793, 6793, 5613, - 6793, 5607, 5616, 6793, 5614, 5620, 5624, 5626, 5622, 5628, - 5629, 5631, 5633, 5634, 5647, 5637, 5635, 5652, 5642, 5662, - 5638, 5664, 5665, 5667, 5669, 5671, 5659, 5673, 5674, 5653, - 5676, 5677, 5680, 5681, 5683, 5684, 5685, 6793, 5688, 5696, - 5697, 5689, 6793, 5702, 5691, 5709, 5706, 6793, 5713, 5710, + 6844, 5548, 5549, 6844, 5561, 5556, 5560, 5551, 5558, 6844, + 5566, 5563, 5569, 5571, 6844, 5575, 5572, 5577, 6844, 5579, + 6844, 5580, 5583, 5584, 5591, 5586, 6844, 5587, 5592, 6844, + 5595, 5602, 5604, 5605, 5597, 5599, 6844, 5614, 5606, 6844, + 5589, 5616, 5617, 5620, 5611, 5622, 5623, 5625, 5627, 5634, + 5630, 5631, 6844, 6844, 5638, 5637, 135, 5645, 5633, 5640, + 5646, 5647, 5654, 5649, 5651, 5658, 6844, 6844, 5659, 6844, + 5661, 5662, 6844, 5650, 5667, 5671, 5663, 5668, 5676, 5677, + 5678, 5683, 5679, 5684, 5685, 5686, 5688, 5704, 5707, 5689, + 5691, 5709, 5711, 5713, 5715, 5717, 5719, 5720, 5702, 5700, - 5714, 5715, 5716, 6793, 5703, 5718, 5722, 5720, 5727, 5728, - 5640, 5736, 5731, 5732, 5733, 6793, 6793, 6793, 5738, 5748, - 6793, 5750, 5740, 5734, 5742, 6793, 5752, 5753, 5745, 6793, - 6793, 5755, 5756, 5758, 6793, 5763, 5770, 6793, 5765, 6793, - 5766, 6793, 5768, 5769, 5771, 5775, 6793, 5776, 5778, 5779, - 5785, 6793, 5795, 5797, 5799, 5792, 5782, 5788, 5800, 6793, - 5809, 5806, 5808, 5815, 5804, 5812, 5810, 5816, 5817, 5825, - 5818, 5827, 6793, 5828, 5829, 5833, 5836, 5820, 5830, 5840, - 6793, 5841, 6793, 5847, 6793, 5844, 5849, 5848, 5842, 5850, - 5853, 5856, 5854, 5858, 5867, 5860, 5863, 5865, 5871, 5873, + 5723, 5724, 5721, 5727, 5730, 5728, 5731, 6844, 5734, 5742, + 5743, 5736, 6844, 5745, 5749, 5753, 5750, 6844, 5758, 5738, + 5759, 5760, 5761, 6844, 5762, 5764, 5767, 5765, 5766, 5772, + 5773, 5782, 5777, 5775, 5787, 6844, 6844, 6844, 5789, 5779, + 6844, 5793, 5786, 5795, 5796, 6844, 5798, 5799, 5801, 6844, + 6844, 6844, 5802, 5804, 5803, 6844, 5805, 5816, 6844, 5806, + 6844, 5807, 6844, 5817, 5819, 5829, 5823, 6844, 5821, 5831, + 5833, 5834, 6844, 5837, 5840, 5842, 5843, 5845, 5848, 5846, + 6844, 5855, 5853, 5854, 5857, 5850, 5860, 5861, 5864, 5862, + 5876, 5863, 5874, 6844, 5811, 5866, 5878, 5884, 5875, 5877, - 6793, 6793, 5875, 5877, 6793, 5879, 6793, 5883, 6793, 5880, - 5885, 5884, 5886, 5888, 6793, 5895, 5887, 5890, 5903, 5898, - 5904, 6793, 5905, 5908, 5909, 5911, 6793, 6793, 5912, 5919, - 5915, 6793, 5914, 5917, 5925, 5918, 5926, 5930, 5927, 5931, - 5934, 5941, 5937, 5939, 5942, 5944, 5945, 5947, 5952, 5957, - 6793, 6793, 6793, 5953, 5948, 5967, 5964, 5966, 5976, 5959, - 6793, 5973, 5972, 5974, 5975, 5986, 5981, 5983, 6793, 5984, - 5985, 5987, 5988, 5990, 5991, 5992, 5993, 6793, 6005, 6007, - 5995, 5997, 6009, 6016, 6018, 6020, 6022, 6013, 6023, 6030, - 6027, 6793, 6029, 6793, 6793, 6025, 6793, 6031, 6033, 6035, + 5881, 6844, 5879, 6844, 5887, 6844, 5889, 5890, 5891, 5893, + 5898, 5895, 5900, 5901, 5905, 5906, 5912, 5908, 5914, 5915, + 5921, 5916, 6844, 6844, 5923, 5925, 6844, 5918, 6844, 5928, + 6844, 5929, 5930, 5931, 5933, 5937, 6844, 5944, 5934, 5938, + 5956, 5940, 5948, 6844, 5951, 5955, 5953, 5958, 6844, 6844, + 5959, 5966, 5965, 6844, 5961, 5974, 5976, 5962, 5964, 5981, + 5971, 5978, 5968, 5991, 5986, 5989, 5990, 5993, 5994, 5995, + 5996, 6002, 6844, 6844, 6844, 6004, 5997, 6012, 6008, 6011, + 6019, 6015, 6844, 6018, 6021, 6022, 6024, 6031, 6028, 6030, + 6844, 6026, 6032, 6034, 6035, 6037, 6039, 6040, 6042, 6844, - 6034, 6036, 6793, 6039, 6040, 6041, 6043, 6042, 6050, 6046, - 6048, 6793, 6058, 6051, 6061, 6063, 6793, 6793, 6064, 6070, - 6793, 6073, 6074, 6067, 6082, 6065, 6075, 6087, 6084, 6793, - 6088, 6090, 6078, 6091, 6094, 6093, 6096, 6793, 6100, 6097, - 6101, 6103, 6793, 6104, 6109, 6110, 6112, 6113, 6793, 6114, - 6106, 6130, 6115, 6793, 6117, 6129, 6131, 6793, 6793, 6135, - 6139, 6136, 6793, 6793, 6793, 6793, 6142, 6143, 6145, 6147, - 6793, 6150, 6154, 6158, 6160, 6165, 6153, 6793, 6161, 6167, - 6169, 6170, 6171, 6793, 6793, 6172, 6173, 6174, 6178, 6175, - 6793, 6793, 6180, 6182, 6183, 6181, 6184, 6793, 6186, 6191, + 6053, 6055, 6061, 6044, 6057, 6062, 6064, 6066, 6069, 6073, + 6070, 6074, 6047, 6075, 6844, 6077, 6844, 6844, 6078, 6844, + 6079, 6081, 6085, 6084, 6086, 6844, 6089, 6082, 6090, 6091, + 6092, 6093, 6095, 6099, 6844, 6113, 6096, 6110, 6114, 6844, + 6844, 6111, 6118, 6844, 6121, 6122, 6123, 6130, 6126, 6125, + 6135, 6131, 6844, 6139, 6140, 6128, 6141, 6142, 6144, 6146, + 6844, 6149, 6150, 6151, 6153, 6844, 6154, 6158, 6159, 6160, + 6162, 6844, 6163, 6155, 6170, 6178, 6844, 6165, 6179, 6180, + 6844, 6844, 6844, 6187, 6189, 6190, 6844, 6844, 6844, 6844, + 6192, 6195, 6184, 6197, 6844, 6199, 6204, 6208, 6210, 6214, - 6198, 6194, 6200, 6207, 6209, 6202, 6210, 6211, 6219, 6222, - 6212, 6214, 6221, 6225, 6226, 6224, 6228, 6238, 6233, 6235, - 6241, 6236, 6244, 6793, 6793, 6246, 6793, 6248, 6250, 6793, - 6793, 6253, 6255, 6257, 6261, 6793, 6263, 6265, 6267, 6269, - 6258, 6793, 6270, 6272, 6273, 6274, 6275, 6793, 6277, 6278, - 6281, 6283, 6287, 6289, 6290, 6293, 6793, 6288, 6305, 6793, - 6793, 6294, 6296, 6285, 6306, 6302, 6793, 6310, 6314, 6309, - 6316, 6315, 6317, 6322, 6793, 6318, 6319, 6793, 6793, 6325, - 6326, 6793, 6793, 6327, 6793, 6793, 6793, 6793, 6793, 6793, - 6793, 6793, 6331, 6330, 6793, 6332, 6340, 6343, 6793, 6347, + 6213, 6844, 6215, 6207, 6219, 6221, 6222, 6844, 6844, 6223, + 6224, 6225, 6227, 6228, 6844, 6844, 6229, 6231, 6233, 6232, + 6234, 6844, 6235, 6240, 6247, 6242, 6255, 6258, 6260, 6250, + 6261, 6262, 6269, 6270, 6252, 6267, 6272, 6273, 6275, 6276, + 6284, 6285, 6281, 6289, 6291, 6286, 6292, 6844, 6844, 6299, + 6844, 6303, 6296, 6844, 6844, 6307, 6309, 6311, 6313, 6844, + 6315, 6317, 6319, 6321, 6300, 6844, 6322, 6324, 6325, 6327, + 6328, 6844, 6330, 6332, 6336, 6337, 6333, 6338, 6340, 6343, + 6844, 6344, 6354, 6844, 6844, 6345, 6355, 6347, 6356, 6349, + 6844, 6361, 6366, 6362, 6365, 6368, 6371, 6369, 6844, 6372, - 6793, 6337, 6348, 6350, 6344, 6793, 6349, 6793, 6351, 6355, - 6356, 6365, 6358, 6368, 6359, 6352, 6362, 6370, 6375, 6376, - 6378, 6377, 6379, 6381, 6383, 6393, 6385, 6390, 6793, 6793, - 6793, 6382, 6394, 6398, 6399, 6404, 6406, 6410, 6412, 6401, - 6413, 6415, 6416, 6417, 6419, 6423, 6430, 6425, 6428, 6426, - 6435, 6427, 6437, 6793, 6442, 6443, 6429, 6446, 6793, 6449, - 6793, 6432, 6793, 6793, 6452, 6453, 6455, 6456, 6465, 6466, - 6457, 6461, 6462, 6467, 6469, 6793, 6477, 6793, 6793, 6470, - 6473, 6793, 6478, 6479, 6793, 6480, 6482, 6484, 6485, 6486, - 6488, 6489, 6490, 6497, 6793, 6793, 6501, 6502, 6504, 6506, + 6374, 6844, 6844, 6375, 6377, 6844, 6844, 6380, 6844, 6844, + 6844, 6844, 6844, 6844, 6844, 6844, 6381, 6388, 6844, 6382, + 6394, 6397, 6844, 6399, 6844, 6384, 6400, 6401, 6390, 6844, + 6402, 6844, 6403, 6404, 6408, 6412, 6417, 6418, 6411, 6420, + 6422, 6421, 6423, 6427, 6425, 6429, 6428, 6430, 6431, 6444, + 6435, 6445, 6844, 6844, 6844, 6438, 6446, 6454, 6447, 6458, + 6459, 6462, 6464, 6449, 6465, 6467, 6469, 6471, 6472, 6473, + 6481, 6477, 6478, 6479, 6483, 6480, 6487, 6844, 6493, 6489, + 6494, 6496, 6844, 6499, 6844, 6498, 6844, 6844, 6502, 6505, + 6503, 6507, 6515, 6518, 6508, 6510, 6517, 6519, 6521, 6844, - 6508, 6515, 6510, 6512, 6514, 6522, 6516, 6524, 6793, 6526, - 6528, 6530, 6793, 6532, 6531, 6534, 6537, 6538, 6545, 6540, - 6542, 6793, 6543, 6793, 6547, 6549, 6548, 6551, 6552, 6554, - 6562, 6560, 6564, 6793, 6566, 6568, 6572, 6573, 6575, 6578, - 6579, 6580, 6582, 6584, 6585, 6594, 6588, 6590, 6596, 6598, - 6600, 6793, 6602, 6604, 6793, 6605, 6606, 6607, 6608, 6612, - 6793, 6617, 6609, 6614, 6620, 6625, 6622, 6793, 6631, 6635, - 6632, 6793, 6636, 6793, 6793, 6637, 6638, 6640, 6644, 6646, - 6793, 6793, 6793, 6673, 6680, 6687, 6694, 6701, 6708, 6715, - 88, 6722, 6729, 6736, 6743, 6750, 6757, 6764, 6771, 6778, + 6528, 6844, 6844, 6525, 6529, 6844, 6530, 6531, 6844, 6532, + 6533, 6534, 6537, 6541, 6539, 6540, 6542, 6556, 6844, 6844, + 6543, 6548, 6551, 6560, 6557, 6567, 6564, 6568, 6569, 6571, + 6572, 6581, 6844, 6578, 6579, 6583, 6844, 6585, 6580, 6586, + 6587, 6588, 6596, 6592, 6595, 6844, 6597, 6844, 6601, 6603, + 6604, 6594, 6602, 6605, 6616, 6614, 6610, 6844, 6620, 6624, + 6622, 6626, 6628, 6630, 6631, 6632, 6634, 6637, 6643, 6640, + 6647, 6648, 6644, 6652, 6649, 6844, 6659, 6650, 6844, 6656, + 6660, 6653, 6662, 6666, 6844, 6671, 6664, 6673, 6674, 6677, + 6678, 6844, 6680, 6687, 6682, 6844, 6688, 6844, 6844, 6690, - 6785 + 6684, 6691, 6697, 6699, 6844, 6844, 6844, 6724, 6731, 6738, + 6745, 6752, 6759, 6766, 88, 6773, 6780, 6787, 6794, 6801, + 6808, 6815, 6822, 6829, 6836 } ; -static const flex_int16_t yy_def[3502] = +static const flex_int16_t yy_def[3526] = { 0, - 3483, 1, 3484, 3484, 3485, 3485, 3486, 3486, 3487, 3487, - 3488, 3488, 3489, 3489, 3490, 3490, 3483, 3491, 3483, 3483, - 3483, 3483, 3492, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3493, 3483, 3483, 3483, - 3493, 3494, 3483, 3483, 3483, 3494, 3495, 3483, 3483, 3483, - 3483, 3495, 3496, 3483, 3483, 3483, 3496, 3497, 3483, 3498, - 3483, 3497, 3497, 3499, 3483, 3483, 3483, 3483, 3499, 3500, - 3483, 3483, 3483, 3500, 3491, 3491, 3483, 3501, 3492, 3501, - 3492, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3507, 1, 3508, 3508, 3509, 3509, 3510, 3510, 3511, 3511, + 3512, 3512, 3513, 3513, 3514, 3514, 3507, 3515, 3507, 3507, + 3507, 3507, 3516, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3517, 3507, 3507, 3507, + 3517, 3518, 3507, 3507, 3507, 3518, 3519, 3507, 3507, 3507, + 3507, 3519, 3520, 3507, 3507, 3507, 3520, 3521, 3507, 3522, + 3507, 3521, 3521, 3523, 3507, 3507, 3507, 3507, 3523, 3524, + 3507, 3507, 3507, 3524, 3515, 3515, 3507, 3525, 3516, 3525, + 3516, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3493, - 3493, 3494, 3494, 3495, 3495, 3483, 3496, 3496, 3497, 3497, - 3498, 3498, 3497, 3499, 3499, 3483, 3500, 3500, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3517, + 3517, 3518, 3518, 3519, 3519, 3507, 3520, 3520, 3521, 3521, + 3522, 3522, 3521, 3523, 3523, 3507, 3524, 3524, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3497, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3521, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3497, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3507, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3521, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3483, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3515, 3507, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3483, 3491, 3491, 3497, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3507, 3515, 3515, 3521, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3507, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3497, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3483, 3491, 3483, 3483, 3491, 3483, 3483, 3491, - 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3521, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3507, 3515, 3507, 3507, 3515, 3507, 3507, 3515, + 3515, 3507, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3507, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3507, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3507, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3497, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, - 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3521, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3515, + 3515, 3507, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3507, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3483, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3483, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, - 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3507, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3515, 3507, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3507, + 3507, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3515, + 3515, 3507, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3507, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, - 3491, 3491, 3491, 3491, 3491, 3497, 3497, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3507, 3515, 3515, 3515, 3515, 3515, 3521, 3521, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3507, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, - 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3507, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3507, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, - 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3483, 3491, 3491, 3491, 3497, 3491, 3491, 3491, 3491, 3491, - 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3507, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3507, 3515, 3515, 3515, 3521, 3515, 3515, + 3515, 3515, 3515, 3507, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3507, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3507, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3483, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3507, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, - 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3483, 3491, 3491, - 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, - 3497, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, - 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3515, 3507, 3515, 3507, 3515, 3515, 3515, 3515, 3515, 3507, + 3515, 3507, 3515, 3515, 3515, 3515, 3515, 3507, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3507, 3515, 3515, 3515, 3515, 3521, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3507, 3515, 3515, 3515, 3515, 3507, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3515, 3515, 3515, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3483, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3483, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3507, 3515, 3507, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3507, 3507, 3515, 3515, 3515, 3515, 3515, - 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, - 3491, 3491, 3483, 3491, 3483, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, - 3491, 3491, 3491, 3497, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3507, 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3515, + 3507, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3515, 3515, 3515, + 3521, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3507, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3507, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3483, 3483, 3491, 3491, 3491, 3483, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3507, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3507, 3507, 3515, 3515, 3515, 3507, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3507, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, - 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, - 3491, 3491, 3483, 3491, 3491, 3491, 3483, 3491, 3491, 3491, - 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3497, 3491, 3483, 3491, 3491, 3491, - 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3483, 3491, 3483, 3491, 3491, 3491, 3483, 3491, 3491, + 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3507, 3515, 3515, 3515, 3515, 3515, + 3515, 3507, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3515, 3515, 3515, + 3515, 3507, 3515, 3515, 3515, 3507, 3515, 3515, 3515, 3515, + 3515, 3507, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3521, 3515, 3507, 3515, 3515, 3515, 3507, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, - 3483, 3491, 3483, 3491, 3491, 3491, 3483, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3483, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, - 3491, 3491, 3491, 3483, 3491, 3483, 3491, 3491, 3491, 3491, - 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3507, 3515, 3507, 3515, 3515, 3515, 3507, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3507, + 3515, 3507, 3515, 3515, 3515, 3515, 3507, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3515, 3515, 3507, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3515, 3515, + 3515, 3515, 3515, 3507, 3515, 3507, 3515, 3515, 3515, 3515, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, - 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3483, - 3483, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, - 3497, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3483, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3515, 3515, 3507, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3507, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3515, 3515, 3515, + 3507, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3507, 3515, 3515, 3515, 3515, 3515, 3515, + 3507, 3507, 3515, 3507, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3515, + 3515, 3521, 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3507, - 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3483, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3483, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3507, 3515, 3515, 3515, 3515, 3507, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3507, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3507, 3515, 3507, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3515, - 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3483, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3497, 3491, 3483, - 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, - 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3507, 3515, 3515, 3515, 3507, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3507, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3507, 3515, 3507, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3521, 3515, 3507, 3515, 3515, 3515, 3515, 3515, 3507, 3515, + 3515, 3515, 3515, 3507, 3515, 3515, 3515, 3515, 3515, 3515, - 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3483, - 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3483, 3483, 3491, - 3491, 3491, 3491, 3491, 3483, 3483, 3491, 3483, 3491, 3483, - 3491, 3491, 3483, 3483, 3491, 3491, 3491, 3491, 3491, 3491, - 3483, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3483, 3491, - 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3483, - 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, + 3507, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3515, 3515, 3515, + 3515, 3515, 3515, 3507, 3515, 3507, 3515, 3515, 3515, 3515, + 3515, 3507, 3507, 3515, 3515, 3515, 3515, 3515, 3507, 3507, + 3515, 3507, 3515, 3507, 3515, 3515, 3507, 3507, 3515, 3515, + 3515, 3515, 3515, 3515, 3507, 3515, 3507, 3515, 3515, 3515, + 3515, 3515, 3507, 3515, 3515, 3515, 3515, 3515, 3507, 3515, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3497, 3491, 3491, 3491, - 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3483, 3491, 3483, 3491, 3491, 3491, 3491, 3491, - 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3483, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3515, 3515, 3515, 3507, 3515, 3515, 3515, 3515, 3507, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3521, 3515, 3515, 3515, 3515, 3507, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3515, 3507, + 3515, 3515, 3515, 3515, 3515, 3507, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3515, 3515, - 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3483, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3483, 3483, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3483, 3491, - 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3483, 3483, 3483, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3483, 3491, 3483, 3483, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3483, 3491, 3483, 3491, 3491, 3491, 3491, + 3515, 3515, 3515, 3507, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3507, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3515, 3507, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3507, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3507, + 3515, 3515, 3515, 3515, 3507, 3515, 3515, 3515, 3515, 3507, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3507, 3507, 3507, 3507, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3515, - 3491, 3491, 3491, 3497, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3483, 3483, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3483, - 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3483, 3483, 3491, 3491, 3491, 3483, 3483, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, - 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3483, 3491, 3491, 3483, 3491, 3491, 3491, 3491, - 3491, 3483, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, + 3507, 3507, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3507, 3515, 3507, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3521, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3507, 3507, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3507, 3515, 3515, 3515, 3507, 3515, 3507, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3507, + 3507, 3515, 3515, 3515, 3507, 3507, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3515, 3507, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, - 3483, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3483, 3491, - 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, - 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3483, 3483, 3491, 3491, 3497, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3483, 3491, - 3483, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, - 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3483, 3491, 3491, + 3507, 3515, 3515, 3507, 3515, 3515, 3515, 3515, 3515, 3507, + 3515, 3515, 3515, 3515, 3507, 3515, 3515, 3515, 3507, 3515, + 3507, 3515, 3515, 3515, 3515, 3515, 3507, 3515, 3515, 3507, + 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3515, 3515, 3507, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3507, 3507, 3515, 3515, 3521, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3507, 3515, 3507, + 3515, 3515, 3507, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, - 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3483, 3483, 3483, 3491, 3491, - 3483, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3483, - 3483, 3491, 3491, 3491, 3483, 3491, 3491, 3483, 3491, 3483, - 3491, 3483, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, - 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3483, 3491, 3483, 3491, 3483, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3515, 3515, + 3515, 3515, 3507, 3515, 3515, 3515, 3515, 3507, 3515, 3515, + 3515, 3515, 3515, 3507, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3507, 3507, 3507, 3515, 3515, + 3507, 3515, 3515, 3515, 3515, 3507, 3515, 3515, 3515, 3507, + 3507, 3507, 3515, 3515, 3515, 3507, 3515, 3515, 3507, 3515, + 3507, 3515, 3507, 3515, 3515, 3515, 3515, 3507, 3515, 3515, + 3515, 3515, 3507, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3507, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3507, 3515, 3515, 3515, 3515, 3515, 3515, - 3483, 3483, 3491, 3491, 3483, 3491, 3483, 3491, 3483, 3491, - 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, - 3491, 3483, 3491, 3491, 3491, 3491, 3483, 3483, 3491, 3491, - 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3483, 3483, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3483, 3491, 3483, 3483, 3491, 3483, 3491, 3491, 3491, + 3515, 3507, 3515, 3507, 3515, 3507, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3507, 3507, 3515, 3515, 3507, 3515, 3507, 3515, + 3507, 3515, 3515, 3515, 3515, 3515, 3507, 3515, 3515, 3515, + 3515, 3515, 3515, 3507, 3515, 3515, 3515, 3515, 3507, 3507, + 3515, 3515, 3515, 3507, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3507, 3507, 3507, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3507, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3507, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3507, - 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3483, 3491, 3491, 3491, 3491, 3483, 3483, 3491, 3491, - 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, - 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3483, 3491, - 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3483, 3483, 3491, - 3491, 3491, 3483, 3483, 3483, 3483, 3491, 3491, 3491, 3491, - 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, - 3491, 3491, 3491, 3483, 3483, 3491, 3491, 3491, 3491, 3491, - 3483, 3483, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3507, 3515, 3507, 3507, 3515, 3507, + 3515, 3515, 3515, 3515, 3515, 3507, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3507, 3515, 3515, 3515, 3515, 3507, + 3507, 3515, 3515, 3507, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3507, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3507, 3515, 3515, 3515, 3515, 3507, 3515, 3515, 3515, 3515, + 3515, 3507, 3515, 3515, 3515, 3515, 3507, 3515, 3515, 3515, + 3507, 3507, 3507, 3515, 3515, 3515, 3507, 3507, 3507, 3507, + 3515, 3515, 3515, 3515, 3507, 3515, 3515, 3515, 3515, 3515, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3483, 3483, 3491, 3483, 3491, 3491, 3483, - 3483, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, - 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3483, - 3483, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3483, 3491, 3491, 3483, 3483, 3491, - 3491, 3483, 3483, 3491, 3483, 3483, 3483, 3483, 3483, 3483, - 3483, 3483, 3491, 3491, 3483, 3491, 3491, 3491, 3483, 3491, + 3515, 3507, 3515, 3515, 3515, 3515, 3515, 3507, 3507, 3515, + 3515, 3515, 3515, 3515, 3507, 3507, 3515, 3515, 3515, 3515, + 3515, 3507, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3507, 3515, + 3507, 3515, 3515, 3507, 3507, 3515, 3515, 3515, 3515, 3507, + 3515, 3515, 3515, 3515, 3515, 3507, 3515, 3515, 3515, 3515, + 3515, 3507, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3507, 3515, 3515, 3507, 3507, 3515, 3515, 3515, 3515, 3515, + 3507, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3515, - 3483, 3491, 3491, 3491, 3491, 3483, 3491, 3483, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3483, - 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3483, 3491, - 3483, 3491, 3483, 3483, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3483, 3483, 3491, - 3491, 3483, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3483, 3483, 3491, 3491, 3491, 3491, + 3515, 3507, 3507, 3515, 3515, 3507, 3507, 3515, 3507, 3507, + 3507, 3507, 3507, 3507, 3507, 3507, 3515, 3515, 3507, 3515, + 3515, 3515, 3507, 3515, 3507, 3515, 3515, 3515, 3515, 3507, + 3515, 3507, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3507, 3507, 3507, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3515, 3515, + 3515, 3515, 3507, 3515, 3507, 3515, 3507, 3507, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3507, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, - 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3483, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, 3491, - 3491, 3483, 3491, 3491, 3483, 3491, 3491, 3491, 3491, 3491, - 3483, 3491, 3491, 3491, 3491, 3491, 3491, 3483, 3491, 3491, - 3491, 3483, 3491, 3483, 3483, 3491, 3491, 3491, 3491, 3491, - 3483, 3483, 0, 3483, 3483, 3483, 3483, 3483, 3483, 3483, - 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, + 3515, 3507, 3507, 3515, 3515, 3507, 3515, 3515, 3507, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3507, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3507, 3515, 3515, 3515, 3507, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3507, 3515, 3507, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3507, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, 3515, + 3515, 3515, 3515, 3515, 3515, 3507, 3515, 3515, 3507, 3515, + 3515, 3515, 3515, 3515, 3507, 3515, 3515, 3515, 3515, 3515, + 3515, 3507, 3515, 3515, 3515, 3507, 3515, 3507, 3507, 3515, - 3483 + 3515, 3515, 3515, 3515, 3507, 3507, 0, 3507, 3507, 3507, + 3507, 3507, 3507, 3507, 3507, 3507, 3507, 3507, 3507, 3507, + 3507, 3507, 3507, 3507, 3507 } ; -static const flex_int16_t yy_nxt[6834] = +static const flex_int16_t yy_nxt[6885] = { 0, 18, 19, 20, 21, 22, 23, 22, 18, 18, 18, 18, 18, 22, 24, 25, 26, 27, 28, 29, 30, @@ -1742,591 +1749,596 @@ static const flex_int16_t yy_nxt[6834] = 86, 855, 86, 860, 857, 86, 863, 858, 861, 86, 86, 86, 864, 866, 86, 86, 86, 859, 865, 86, 872, 86, 86, 867, 86, 873, 86, 86, 86, 86, - 86, 874, 868, 869, 881, 870, 879, 86, 86, 871, - 86, 86, 875, 876, 86, 86, 86, 877, 86, 878, - 86, 86, 880, 86, 86, 883, 884, 888, 882, 86, - 86, 86, 86, 86, 885, 896, 889, 886, 895, 887, - 890, 86, 897, 86, 86, 86, 899, 891, 892, 893, + 86, 874, 868, 869, 86, 870, 86, 879, 882, 871, + 86, 86, 875, 876, 86, 86, 880, 877, 86, 878, + 86, 881, 86, 86, 86, 884, 889, 885, 86, 86, + 883, 86, 86, 86, 86, 86, 898, 886, 896, 86, + 891, 887, 888, 899, 86, 86, 890, 892, 897, 893, - 894, 86, 86, 86, 86, 898, 901, 903, 902, 86, - 86, 86, 900, 86, 86, 86, 908, 907, 86, 904, - 909, 86, 906, 905, 86, 914, 911, 86, 86, 912, - 86, 86, 170, 913, 919, 86, 915, 920, 910, 917, - 86, 86, 916, 918, 921, 86, 86, 86, 86, 922, - 925, 86, 928, 86, 86, 929, 924, 931, 86, 86, - 923, 86, 926, 930, 932, 86, 86, 935, 86, 86, - 933, 86, 927, 86, 86, 937, 941, 86, 86, 86, - 938, 86, 86, 86, 934, 942, 936, 86, 943, 86, - 86, 86, 940, 86, 939, 86, 944, 957, 86, 956, + 894, 895, 86, 86, 86, 86, 86, 86, 900, 904, + 86, 86, 86, 902, 901, 909, 86, 903, 908, 910, + 907, 905, 86, 86, 86, 906, 86, 912, 913, 86, + 86, 86, 86, 915, 86, 86, 86, 922, 916, 920, + 911, 918, 914, 919, 917, 86, 170, 86, 86, 924, + 86, 921, 923, 86, 929, 86, 925, 928, 86, 86, + 930, 932, 86, 933, 86, 926, 86, 927, 931, 936, + 86, 86, 86, 934, 86, 86, 938, 86, 942, 86, + 86, 86, 86, 939, 86, 935, 86, 943, 944, 86, + 937, 86, 86, 86, 963, 941, 86, 86, 945, 940, - 86, 958, 954, 946, 945, 86, 955, 947, 86, 959, - 948, 86, 86, 967, 949, 961, 965, 950, 86, 962, - 86, 963, 86, 86, 951, 952, 968, 953, 960, 86, - 86, 86, 86, 964, 86, 977, 86, 966, 86, 969, - 970, 86, 971, 86, 86, 972, 984, 980, 982, 976, - 973, 86, 978, 86, 979, 86, 974, 975, 981, 86, - 986, 990, 86, 86, 983, 989, 991, 86, 987, 86, - 985, 86, 993, 86, 86, 1001, 992, 86, 994, 995, - 86, 996, 997, 86, 988, 86, 998, 1000, 86, 86, - 999, 86, 86, 86, 86, 86, 1004, 86, 1008, 86, + 957, 178, 958, 959, 955, 86, 947, 946, 86, 956, + 948, 86, 86, 949, 960, 86, 962, 950, 86, 964, + 951, 86, 965, 86, 86, 86, 969, 952, 953, 86, + 954, 961, 86, 86, 978, 86, 86, 967, 86, 966, + 981, 86, 86, 980, 968, 86, 970, 971, 993, 972, + 86, 86, 973, 977, 983, 86, 979, 974, 86, 86, + 985, 986, 982, 975, 976, 86, 86, 86, 990, 991, + 984, 987, 1055, 988, 992, 86, 989, 86, 994, 86, + 86, 997, 995, 86, 996, 86, 86, 86, 998, 999, + 1000, 1001, 86, 86, 86, 1002, 86, 86, 86, 1003, - 86, 1002, 1007, 86, 86, 1011, 86, 86, 1017, 86, - 1003, 1013, 1015, 1005, 1006, 1009, 86, 1010, 86, 86, - 1018, 1016, 86, 86, 1012, 1019, 86, 1020, 1021, 1014, - 1023, 1028, 86, 1025, 86, 86, 86, 1024, 1022, 86, - 86, 1027, 86, 1026, 1029, 86, 1030, 86, 86, 86, - 1031, 86, 86, 86, 1033, 86, 1038, 86, 1034, 86, - 1041, 86, 86, 86, 86, 86, 1032, 1042, 1039, 1036, - 1035, 1040, 86, 86, 1037, 86, 86, 1047, 86, 86, - 86, 1043, 1049, 86, 1044, 1045, 86, 1048, 1046, 86, - 1052, 1050, 1053, 1055, 1051, 86, 1057, 86, 1056, 86, + 1005, 86, 86, 1009, 86, 86, 1008, 86, 86, 1012, + 86, 86, 1016, 1004, 1018, 86, 86, 1006, 86, 1010, + 1007, 1011, 1014, 1013, 86, 1019, 176, 86, 1022, 1017, + 1020, 86, 1021, 1015, 86, 1023, 1024, 86, 86, 1026, + 1027, 86, 86, 1025, 86, 86, 86, 1028, 1030, 86, + 1031, 86, 1029, 86, 1032, 86, 86, 86, 86, 86, + 1034, 1039, 86, 1035, 86, 1042, 86, 86, 86, 86, + 86, 1033, 86, 1040, 1037, 1036, 1041, 1043, 1038, 1045, + 86, 1046, 86, 86, 86, 1048, 1044, 1050, 86, 86, + 86, 1049, 86, 1047, 1051, 86, 1058, 86, 1056, 86, - 86, 86, 1054, 86, 86, 86, 86, 86, 1063, 1065, - 1060, 86, 1058, 1066, 86, 86, 1064, 86, 86, 1059, - 1068, 86, 1062, 86, 86, 86, 1070, 1061, 86, 1079, - 86, 86, 1067, 1074, 1076, 86, 86, 86, 1069, 86, - 1072, 1071, 86, 1073, 86, 1080, 1077, 86, 1075, 1081, - 1078, 86, 1085, 1084, 86, 86, 1083, 86, 1082, 1087, - 1088, 86, 86, 86, 86, 1086, 86, 86, 86, 1098, - 86, 1091, 1093, 1099, 1089, 86, 1101, 1090, 86, 86, - 86, 86, 86, 1092, 86, 1104, 1094, 1096, 1106, 1095, - 1097, 86, 1100, 1105, 1102, 86, 86, 86, 86, 86, + 86, 1054, 1052, 1057, 86, 86, 86, 86, 86, 1061, + 86, 1064, 1059, 86, 86, 1053, 1066, 86, 1060, 1065, + 1067, 86, 1069, 86, 1063, 86, 86, 86, 1068, 1062, + 86, 1070, 86, 1071, 86, 86, 1075, 86, 1077, 1080, + 86, 86, 86, 1072, 86, 86, 1074, 1073, 86, 1081, + 1078, 1085, 86, 1076, 1079, 86, 1082, 1083, 1086, 86, + 86, 1084, 1088, 1087, 1089, 1090, 86, 86, 86, 86, + 86, 86, 86, 86, 1100, 86, 1101, 1093, 1095, 1091, + 86, 86, 86, 86, 1103, 86, 86, 1092, 86, 1094, + 86, 1096, 1098, 86, 1097, 1099, 1106, 1102, 1107, 1104, - 1113, 1103, 1110, 86, 1112, 1114, 86, 86, 1108, 86, - 1115, 86, 86, 86, 1107, 1118, 1109, 1120, 86, 1111, - 86, 86, 86, 86, 86, 1117, 86, 1116, 1122, 1123, - 1126, 86, 1130, 1119, 86, 1127, 170, 1128, 1121, 86, - 86, 86, 1124, 1129, 1125, 1133, 1131, 86, 86, 86, - 86, 86, 86, 1146, 1132, 86, 1149, 86, 86, 1147, - 1134, 86, 1136, 1137, 86, 1151, 86, 1175, 86, 1138, - 86, 1135, 1139, 86, 86, 1154, 1140, 86, 1141, 1148, - 1156, 1152, 1142, 1150, 1143, 1157, 86, 86, 1153, 1144, - 86, 1155, 86, 86, 1145, 86, 1158, 1160, 86, 86, + 1110, 1105, 86, 86, 86, 1109, 86, 1108, 1111, 86, + 1114, 1112, 1115, 1116, 1113, 86, 86, 86, 86, 86, + 1117, 1120, 86, 1122, 86, 86, 86, 86, 86, 1119, + 86, 1124, 86, 1118, 1128, 1125, 86, 86, 86, 1129, + 170, 1131, 1121, 1123, 86, 1130, 86, 1132, 1126, 86, + 1127, 86, 1137, 86, 1135, 86, 86, 1136, 1133, 86, + 1148, 86, 86, 86, 1134, 1138, 1139, 1149, 1151, 86, + 86, 86, 1555, 86, 86, 1140, 1150, 1141, 86, 86, + 86, 1142, 1160, 1143, 1153, 86, 1154, 1144, 1155, 1145, + 1156, 1158, 86, 1157, 1146, 1152, 1159, 86, 86, 1147, - 1163, 86, 86, 1166, 1159, 86, 86, 1162, 86, 1161, - 1164, 1165, 1171, 86, 1173, 1167, 1174, 1170, 1172, 1169, - 86, 1176, 86, 1168, 1177, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 1189, 86, 1192, 86, 86, 86, - 1188, 1194, 1193, 86, 1191, 86, 1179, 1178, 86, 1180, - 86, 1181, 1190, 86, 1200, 1195, 1182, 1196, 1183, 86, - 86, 1199, 86, 86, 1184, 86, 86, 1197, 1201, 1185, - 1186, 1202, 1198, 86, 1207, 86, 1187, 86, 86, 1210, - 1203, 1204, 1208, 86, 1205, 86, 1211, 86, 86, 86, - 1215, 1206, 86, 1213, 86, 86, 86, 1209, 86, 1216, + 86, 86, 1162, 86, 86, 86, 1161, 86, 1165, 1168, + 86, 86, 86, 1167, 1163, 1164, 86, 1174, 1166, 1169, + 1172, 1175, 1173, 1176, 1171, 1177, 86, 86, 1170, 86, + 1178, 1179, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 1191, 86, 86, 86, 1194, 1190, 1195, 1196, 86, + 86, 86, 1181, 1192, 1180, 1193, 1182, 86, 1183, 86, + 86, 1202, 86, 1184, 86, 1185, 1197, 86, 1199, 1203, + 1200, 1186, 1204, 1198, 86, 86, 1187, 1188, 1201, 86, + 86, 1209, 86, 1189, 86, 86, 86, 1212, 1210, 1213, + 86, 1206, 1205, 86, 86, 86, 1217, 1207, 1208, 1215, - 86, 86, 1214, 1221, 1218, 86, 1212, 1219, 86, 86, - 1222, 1217, 86, 1224, 86, 86, 1220, 86, 86, 86, - 86, 86, 86, 86, 1223, 1231, 86, 1229, 1226, 1228, - 1230, 86, 1225, 1233, 86, 1227, 1237, 1232, 1234, 86, - 1235, 86, 86, 1236, 86, 86, 86, 86, 86, 178, - 1242, 1243, 1244, 1238, 86, 1239, 86, 1245, 1247, 1241, - 1240, 86, 1246, 1248, 86, 86, 86, 1252, 86, 86, - 86, 1249, 1253, 86, 86, 86, 1254, 1256, 1250, 1255, - 86, 86, 1251, 1257, 86, 1263, 1259, 86, 1258, 1265, - 86, 86, 86, 86, 1261, 86, 86, 1267, 1260, 1262, + 86, 86, 86, 86, 86, 1211, 1218, 86, 1216, 1214, + 1223, 86, 1220, 1221, 86, 86, 86, 86, 86, 1219, + 1224, 86, 1226, 1222, 86, 86, 86, 86, 86, 175, + 86, 86, 1228, 1225, 1231, 1227, 1230, 1232, 86, 1235, + 86, 1229, 86, 1234, 1233, 86, 1236, 1238, 86, 86, + 1240, 86, 86, 1239, 1237, 86, 1241, 1244, 86, 86, + 1245, 86, 1248, 1246, 1249, 86, 1243, 1242, 1247, 86, + 86, 86, 86, 1254, 1250, 86, 86, 1256, 1255, 86, + 1257, 86, 86, 86, 1251, 1252, 1258, 1253, 86, 1259, + 86, 1265, 86, 86, 1267, 86, 86, 86, 1261, 86, - 86, 86, 86, 1269, 86, 1266, 1271, 1264, 86, 1272, - 1268, 86, 86, 86, 1270, 86, 1275, 1274, 1273, 1278, - 1276, 86, 86, 1281, 1277, 1282, 86, 86, 1280, 86, - 86, 86, 86, 1286, 1285, 86, 1283, 1279, 86, 86, - 86, 86, 86, 1290, 1292, 1293, 1296, 1294, 1284, 86, - 86, 86, 86, 1287, 1291, 86, 86, 1288, 1298, 1289, - 1295, 1297, 86, 86, 86, 1302, 86, 1299, 86, 1301, - 86, 86, 86, 1303, 1304, 86, 86, 86, 86, 1305, - 1309, 1300, 86, 86, 1307, 1306, 1310, 1312, 86, 1311, - 86, 1308, 86, 1316, 1317, 86, 86, 1320, 86, 86, + 86, 1260, 86, 1263, 1269, 86, 1262, 1264, 1271, 86, + 1268, 86, 86, 1266, 1273, 86, 1270, 1272, 86, 86, + 1274, 1276, 86, 1277, 1278, 86, 86, 1275, 86, 86, + 1283, 1280, 1284, 86, 1279, 1282, 86, 1285, 86, 86, + 86, 86, 1281, 1287, 86, 1288, 86, 86, 86, 1294, + 1292, 86, 1295, 1296, 1312, 86, 1286, 1289, 86, 86, + 1290, 1293, 86, 86, 1299, 1301, 1291, 1297, 1298, 86, + 86, 86, 86, 86, 1300, 86, 1305, 1302, 86, 1307, + 86, 86, 86, 1306, 86, 86, 86, 86, 86, 86, + 1308, 1303, 1313, 1309, 86, 1304, 86, 86, 1314, 1315, - 86, 1319, 1314, 86, 86, 86, 1313, 86, 1325, 86, - 1318, 1315, 86, 86, 86, 86, 86, 1323, 1322, 1331, - 86, 86, 1321, 1327, 170, 1324, 86, 1326, 86, 1332, - 86, 1333, 1328, 1334, 86, 1330, 86, 86, 86, 86, - 1329, 1339, 1341, 86, 1335, 1337, 1343, 1340, 1336, 1338, - 1344, 86, 86, 86, 86, 86, 86, 1347, 1346, 1342, - 86, 86, 86, 86, 86, 1348, 86, 1345, 1349, 1351, - 86, 86, 86, 1354, 86, 1350, 86, 1352, 1357, 86, - 86, 86, 1353, 86, 176, 1355, 1358, 1361, 1363, 86, - 1356, 1360, 1359, 1367, 86, 1368, 86, 1364, 86, 1365, + 86, 1319, 86, 1310, 1320, 1311, 1316, 86, 1317, 86, + 86, 1323, 86, 86, 1322, 1321, 1318, 86, 86, 1328, + 86, 1324, 86, 86, 86, 86, 86, 1325, 170, 1326, + 86, 1330, 1334, 86, 86, 1336, 1327, 86, 1329, 86, + 86, 86, 1335, 1331, 1337, 1333, 86, 86, 1338, 86, + 1332, 1339, 1342, 1341, 1346, 1340, 1344, 86, 1343, 1347, + 86, 86, 86, 86, 86, 86, 1345, 1349, 86, 1351, + 1350, 86, 86, 86, 86, 86, 86, 1348, 1354, 86, + 1360, 86, 1356, 1357, 86, 1352, 1353, 86, 86, 1355, + 1358, 86, 86, 86, 86, 170, 86, 1364, 1359, 1366, - 1362, 1369, 1366, 1370, 86, 1371, 86, 86, 86, 86, - 1373, 86, 86, 86, 86, 175, 86, 1377, 1376, 86, - 1372, 1380, 86, 86, 1384, 86, 1379, 1374, 86, 1375, - 86, 86, 1378, 1381, 1382, 1385, 1386, 86, 86, 86, - 86, 1383, 1388, 1389, 86, 86, 86, 1390, 1387, 86, - 86, 86, 86, 86, 86, 1391, 1396, 86, 1394, 1392, - 86, 86, 1403, 1397, 1393, 1395, 1401, 86, 86, 86, - 86, 1398, 1400, 86, 1399, 86, 1402, 1404, 1406, 86, - 86, 86, 1413, 86, 1415, 1407, 86, 1405, 86, 86, - 86, 1409, 1408, 86, 1410, 86, 1412, 1418, 86, 86, + 1370, 1361, 1362, 1363, 86, 1371, 86, 1375, 1367, 86, + 1368, 1372, 1365, 1369, 1373, 86, 1374, 86, 86, 86, + 1376, 86, 86, 86, 86, 86, 86, 1380, 1379, 86, + 1383, 86, 86, 1387, 86, 168, 1382, 1377, 86, 1378, + 1384, 86, 1381, 1385, 86, 86, 1388, 1393, 1386, 1389, + 1391, 1390, 86, 86, 86, 86, 1392, 86, 86, 86, + 86, 1397, 86, 86, 86, 86, 1400, 86, 1394, 1395, + 1398, 1405, 1399, 86, 1396, 1401, 86, 86, 1407, 1402, + 86, 86, 1404, 1403, 86, 86, 1410, 1408, 1406, 86, + 86, 86, 1417, 86, 86, 1411, 1409, 1413, 86, 1419, - 86, 1416, 86, 1414, 1421, 1411, 86, 1417, 86, 86, - 1501, 1423, 1422, 86, 1420, 1419, 1424, 86, 86, 1428, - 1426, 1425, 1427, 86, 1429, 86, 1436, 1438, 1430, 86, - 1439, 1431, 1432, 86, 1437, 86, 1433, 1442, 86, 86, - 1440, 86, 1434, 86, 1443, 86, 1435, 1441, 86, 1445, - 1444, 86, 1447, 86, 86, 86, 1448, 1452, 1449, 86, - 86, 86, 1446, 86, 86, 86, 1455, 86, 1453, 1458, - 1459, 86, 1460, 1451, 1450, 86, 86, 86, 1456, 86, - 1454, 1461, 86, 1457, 86, 1468, 86, 1467, 1462, 86, - 1469, 1470, 1471, 1463, 86, 1464, 86, 1465, 86, 1466, + 1412, 86, 86, 86, 86, 86, 1416, 86, 1414, 1420, + 86, 1422, 1425, 1418, 86, 1415, 1421, 86, 1427, 86, + 1424, 1423, 1426, 1428, 86, 86, 1432, 86, 86, 86, + 1442, 1430, 1431, 1429, 86, 1433, 86, 1441, 1445, 1434, + 1440, 86, 1435, 1436, 86, 1443, 1444, 1437, 1446, 86, + 86, 86, 86, 1438, 86, 1447, 1448, 1439, 86, 1449, + 86, 1451, 86, 86, 86, 1452, 86, 1453, 1456, 86, + 1450, 86, 1454, 1457, 86, 86, 1459, 86, 1462, 1463, + 86, 1455, 1464, 1460, 86, 86, 1458, 86, 86, 1466, + 86, 1465, 86, 1461, 1467, 1471, 1468, 86, 1469, 86, - 86, 1474, 1473, 86, 1477, 86, 1480, 1472, 86, 1478, - 86, 86, 1476, 1481, 1479, 86, 86, 86, 1475, 86, - 1487, 86, 1488, 86, 1483, 1482, 86, 86, 86, 86, - 86, 1489, 86, 1486, 1491, 1484, 1485, 86, 86, 1493, - 86, 1490, 1492, 86, 1494, 1497, 1498, 86, 1500, 86, - 1495, 86, 86, 86, 1502, 86, 86, 1503, 1499, 1506, - 86, 1508, 86, 1496, 1505, 86, 1509, 86, 86, 86, - 1513, 86, 1504, 1510, 86, 86, 1507, 86, 86, 1518, - 1516, 86, 86, 86, 86, 86, 1519, 86, 1511, 1521, - 1512, 1520, 1515, 86, 1514, 86, 1523, 86, 1517, 1524, + 1470, 1477, 1472, 86, 1473, 1474, 1475, 1478, 86, 86, + 1476, 86, 1481, 86, 86, 86, 86, 1482, 86, 86, + 1480, 1485, 1483, 86, 86, 86, 1491, 1479, 1487, 1486, + 86, 1492, 86, 86, 86, 86, 1484, 86, 86, 1490, + 1495, 1493, 1488, 1489, 86, 86, 86, 1497, 1494, 86, + 86, 1496, 1498, 86, 1501, 1502, 86, 1504, 86, 86, + 86, 1505, 1499, 1506, 86, 1503, 86, 1510, 86, 1507, + 86, 1500, 1508, 1512, 86, 1509, 86, 1513, 86, 86, + 86, 86, 86, 1514, 1518, 86, 86, 86, 86, 1523, + 1511, 1521, 86, 86, 86, 86, 86, 1524, 1526, 1520, - 1525, 1522, 86, 86, 86, 86, 86, 1527, 1529, 1530, - 1531, 1526, 1528, 86, 1532, 86, 86, 86, 86, 86, - 1533, 1538, 1539, 1535, 86, 1536, 86, 86, 86, 1540, - 1542, 1541, 1537, 86, 1534, 86, 86, 86, 1546, 86, - 86, 86, 1543, 86, 170, 86, 1548, 86, 1545, 86, - 1554, 1555, 86, 86, 1544, 1550, 86, 86, 1556, 1551, - 1547, 1549, 1557, 86, 86, 86, 86, 1552, 86, 86, - 86, 1565, 1553, 1560, 86, 86, 86, 1558, 1562, 1563, - 86, 1569, 86, 1559, 1561, 1570, 86, 1564, 86, 86, - 1574, 86, 86, 1572, 1566, 1575, 86, 86, 1568, 86, + 1515, 1516, 1517, 1525, 86, 86, 1519, 1522, 1528, 86, + 86, 1527, 86, 86, 1530, 86, 86, 1532, 86, 1529, + 1534, 1533, 86, 1536, 1531, 1535, 86, 1537, 86, 86, + 86, 86, 1543, 1538, 1539, 1540, 1544, 1541, 86, 86, + 86, 86, 86, 1547, 1542, 1545, 1546, 86, 1548, 86, + 86, 1551, 86, 86, 86, 170, 86, 86, 86, 1553, + 86, 1550, 1559, 1560, 86, 86, 1549, 86, 86, 86, + 1556, 1561, 1562, 1552, 1554, 86, 86, 1557, 86, 1567, + 1565, 1558, 86, 86, 1566, 86, 1570, 86, 86, 1563, + 1568, 86, 1575, 86, 86, 1564, 1574, 86, 86, 86, - 1567, 1577, 86, 86, 86, 1571, 86, 1578, 1573, 1576, - 86, 1579, 1586, 1585, 86, 86, 86, 1580, 1581, 1583, - 1587, 1582, 1584, 1588, 86, 1591, 1590, 86, 1589, 86, - 1592, 86, 86, 86, 86, 1593, 86, 86, 1596, 1597, - 86, 86, 86, 170, 86, 1600, 86, 86, 1605, 86, - 1595, 86, 86, 1594, 1598, 1606, 1602, 1599, 86, 1609, - 86, 1601, 1603, 86, 1604, 86, 86, 1607, 86, 86, - 1610, 1608, 86, 86, 86, 86, 86, 1612, 1616, 1611, - 86, 1613, 1617, 1614, 86, 1618, 86, 1622, 1615, 86, - 1619, 1623, 86, 1621, 1627, 1620, 86, 1626, 1624, 1628, + 1569, 166, 1577, 1571, 1579, 86, 1573, 86, 86, 1580, + 86, 86, 1572, 86, 1582, 1583, 1581, 1576, 1578, 86, + 86, 86, 1584, 1591, 1588, 86, 1585, 1589, 1586, 1590, + 1593, 1587, 86, 86, 86, 1596, 86, 1594, 86, 1592, + 1597, 86, 86, 1595, 86, 86, 86, 86, 86, 1601, + 1602, 86, 86, 1598, 86, 86, 1605, 86, 1610, 86, + 1600, 86, 86, 1611, 1599, 1603, 1604, 1614, 1606, 1607, + 1608, 86, 1609, 86, 86, 86, 165, 86, 86, 1612, + 86, 1613, 86, 1615, 86, 86, 86, 86, 86, 1622, + 1616, 1618, 1623, 1619, 1617, 1620, 86, 86, 86, 1628, - 86, 86, 86, 1630, 86, 86, 1631, 86, 86, 86, - 1632, 86, 1625, 1636, 1637, 1629, 1635, 1638, 86, 86, - 86, 86, 1639, 86, 1633, 86, 1640, 1641, 86, 86, - 1634, 86, 86, 1642, 86, 86, 1644, 86, 86, 86, - 1643, 86, 1649, 86, 1645, 1648, 86, 1651, 1646, 86, - 1647, 1652, 86, 1655, 86, 1657, 86, 1650, 1656, 86, - 1658, 86, 1654, 1653, 86, 1660, 86, 86, 86, 86, - 86, 1664, 1659, 1661, 1668, 1662, 1663, 86, 86, 86, - 86, 86, 1669, 86, 1672, 86, 1675, 1665, 1667, 1666, - 86, 1674, 86, 86, 86, 86, 86, 86, 1670, 86, + 86, 1621, 1624, 1629, 1625, 1627, 86, 1633, 1626, 1630, + 86, 1632, 1634, 86, 86, 86, 1636, 86, 86, 1637, + 86, 86, 86, 1638, 86, 1642, 1631, 1643, 1635, 1641, + 1644, 86, 86, 86, 86, 1645, 86, 1639, 86, 1646, + 1647, 86, 86, 1640, 86, 86, 1648, 86, 86, 86, + 1650, 86, 1655, 1649, 86, 86, 1654, 1651, 86, 86, + 1658, 1652, 86, 1653, 1661, 86, 1657, 86, 1666, 1662, + 86, 1663, 86, 1659, 1656, 86, 1664, 86, 86, 86, + 86, 1660, 86, 86, 1670, 1665, 1674, 1669, 86, 86, + 86, 1667, 86, 1675, 1668, 86, 86, 1678, 86, 1671, - 1673, 86, 1676, 86, 1683, 1671, 86, 86, 86, 1684, - 1680, 1687, 1677, 1678, 1679, 86, 1682, 86, 1681, 1688, - 86, 1689, 86, 86, 1693, 86, 1685, 1686, 1690, 1691, - 1692, 86, 86, 86, 1695, 86, 86, 86, 1696, 86, - 86, 1699, 1703, 86, 1694, 1704, 1705, 86, 1700, 86, - 86, 1697, 86, 1698, 1708, 1702, 86, 1701, 86, 86, - 1709, 86, 1706, 1707, 86, 1710, 86, 86, 1715, 1716, - 86, 86, 168, 1713, 86, 86, 86, 1712, 1711, 86, - 1719, 86, 1720, 1721, 86, 1717, 1714, 1723, 86, 86, - 86, 86, 1718, 1724, 1725, 86, 1722, 86, 86, 1730, + 1681, 1673, 1672, 86, 1680, 86, 86, 86, 86, 1676, + 86, 86, 163, 86, 1679, 1682, 1677, 86, 1689, 86, + 86, 86, 1690, 86, 1683, 1686, 1684, 1685, 1688, 1694, + 86, 1687, 1695, 86, 86, 1693, 86, 86, 1697, 1691, + 1692, 1696, 86, 86, 86, 86, 86, 86, 1701, 86, + 1698, 1699, 1702, 86, 1705, 1711, 1700, 1709, 86, 86, + 1706, 86, 1704, 86, 1710, 1703, 86, 1707, 86, 1708, + 86, 86, 86, 1714, 1715, 1716, 86, 86, 1712, 1713, + 86, 1721, 1722, 86, 86, 86, 1719, 86, 86, 86, + 1726, 1727, 1717, 1725, 1718, 86, 86, 86, 1729, 86, - 1726, 1728, 86, 86, 86, 1733, 86, 1727, 86, 86, - 86, 1731, 86, 86, 1739, 1737, 86, 86, 1729, 86, - 86, 1734, 86, 1732, 86, 1740, 1738, 86, 1736, 1735, - 86, 1745, 86, 86, 1742, 1741, 86, 86, 1746, 1750, - 86, 1748, 1744, 86, 86, 1743, 86, 1751, 1749, 1754, - 1747, 86, 1753, 86, 86, 86, 86, 1752, 1757, 1761, - 1759, 1760, 86, 1755, 1756, 1758, 86, 86, 170, 86, - 86, 86, 1763, 86, 86, 86, 1771, 86, 86, 1762, - 86, 86, 1772, 1777, 1764, 1766, 86, 1765, 1769, 1767, - 1768, 1775, 86, 86, 86, 1776, 1779, 86, 1770, 1781, + 1720, 86, 1723, 86, 1730, 86, 1724, 1731, 86, 86, + 86, 86, 1732, 1735, 86, 1728, 86, 86, 1740, 1733, + 86, 1734, 86, 1738, 86, 86, 86, 86, 1746, 1744, + 1736, 1737, 86, 86, 86, 1741, 1739, 86, 86, 86, + 1745, 1747, 86, 1742, 1743, 86, 1752, 86, 86, 1749, + 86, 1748, 1755, 1753, 1757, 86, 86, 86, 1751, 170, + 1754, 1758, 1750, 1756, 86, 1760, 86, 86, 86, 86, + 1759, 1764, 86, 1767, 86, 1771, 86, 1766, 1761, 1763, + 86, 86, 86, 1768, 86, 1762, 1770, 86, 1765, 1769, + 86, 86, 86, 1778, 86, 86, 86, 86, 1773, 1779, - 1773, 1774, 1780, 86, 1783, 86, 86, 1785, 86, 86, - 86, 86, 86, 1778, 86, 86, 1790, 1787, 86, 1788, - 1784, 86, 1791, 1782, 86, 86, 86, 86, 1786, 1795, - 86, 1796, 1792, 86, 86, 86, 1789, 1803, 86, 166, - 1794, 1800, 1793, 86, 1801, 1797, 1798, 86, 86, 86, - 86, 1805, 1804, 1799, 86, 1808, 1802, 1810, 1807, 1812, - 1809, 1811, 86, 1813, 1817, 86, 86, 1806, 86, 86, - 86, 1814, 86, 1815, 86, 1816, 86, 86, 86, 86, - 86, 1818, 1824, 1823, 86, 1825, 1820, 1827, 86, 1826, - 1819, 86, 86, 86, 86, 86, 86, 1821, 86, 1822, + 1772, 1782, 86, 86, 1776, 1783, 1774, 1775, 1784, 86, + 86, 86, 1786, 86, 1788, 1780, 1777, 1781, 1787, 1790, + 86, 86, 1792, 86, 86, 86, 86, 86, 86, 1785, + 86, 1789, 1794, 1795, 86, 1791, 86, 1797, 86, 1798, + 86, 86, 86, 1793, 1799, 1802, 86, 1803, 86, 86, + 86, 1796, 1800, 1807, 86, 1801, 1808, 1810, 86, 1804, + 1805, 86, 86, 86, 161, 1812, 1811, 1814, 1809, 1806, + 86, 86, 1818, 86, 1817, 1815, 1819, 1820, 1824, 1816, + 86, 1813, 86, 86, 86, 1821, 86, 1822, 86, 1823, + 86, 86, 86, 86, 86, 1825, 86, 1831, 86, 1830, - 1829, 1830, 86, 1831, 86, 86, 86, 86, 86, 86, - 86, 86, 1832, 86, 86, 1828, 1833, 1841, 86, 86, - 1836, 1837, 1838, 1834, 86, 1835, 1842, 1839, 86, 86, - 1843, 1845, 86, 1848, 1849, 1840, 1844, 86, 1851, 86, - 1846, 86, 86, 1854, 86, 1847, 86, 86, 86, 86, - 1858, 86, 1856, 1850, 86, 1852, 86, 86, 86, 86, - 1857, 86, 86, 1853, 86, 1860, 1855, 1863, 1865, 1859, - 86, 86, 165, 1866, 1864, 1862, 1867, 86, 1868, 86, - 1861, 86, 1872, 1873, 86, 1869, 1874, 86, 86, 1875, - 1870, 1877, 1878, 86, 86, 86, 1871, 86, 86, 1876, + 1832, 1833, 86, 86, 1826, 1835, 86, 86, 86, 86, + 1827, 86, 1828, 1834, 1829, 86, 1838, 86, 86, 86, + 1837, 1836, 1841, 1839, 86, 86, 86, 1840, 86, 86, + 86, 86, 86, 86, 1850, 1849, 86, 86, 1842, 1844, + 1845, 86, 1846, 1852, 1843, 86, 86, 1847, 1856, 1853, + 86, 86, 1851, 1854, 86, 1848, 86, 86, 1855, 1862, + 86, 86, 86, 86, 86, 1866, 1857, 1858, 1864, 86, + 1859, 1860, 86, 86, 1865, 86, 86, 1861, 86, 86, + 86, 1863, 86, 86, 1867, 1871, 1868, 1873, 86, 86, + 1881, 86, 1874, 1870, 1872, 1875, 86, 1869, 1876, 1880, - 86, 1882, 1881, 86, 86, 1883, 86, 1879, 86, 86, - 86, 1891, 1892, 86, 1880, 1886, 86, 86, 1888, 1890, - 1885, 1889, 1884, 86, 86, 86, 86, 1887, 1898, 86, - 86, 86, 86, 1899, 86, 1900, 1893, 1894, 86, 1896, - 86, 1895, 1897, 1901, 86, 1904, 86, 1906, 86, 1908, - 1903, 1907, 86, 86, 1902, 86, 1905, 86, 1912, 86, - 1916, 1910, 86, 1909, 1911, 1917, 86, 86, 86, 86, - 86, 1924, 86, 1913, 1921, 1922, 1918, 1915, 1914, 1925, - 86, 86, 1919, 86, 86, 86, 1928, 86, 1923, 1926, - 1920, 86, 86, 1929, 1927, 1932, 86, 86, 1936, 86, + 1882, 86, 86, 1877, 86, 86, 86, 86, 1878, 1885, + 1886, 86, 86, 86, 1879, 86, 1883, 1889, 1887, 86, + 1884, 86, 1890, 86, 86, 86, 1888, 86, 1891, 1899, + 1894, 1893, 1892, 86, 1896, 86, 1898, 1897, 1900, 86, + 86, 86, 86, 1895, 86, 1906, 86, 86, 86, 86, + 1907, 86, 1908, 1901, 1902, 86, 1904, 86, 1903, 86, + 1905, 1909, 86, 1912, 1914, 86, 1911, 86, 1916, 86, + 1915, 1910, 86, 1913, 86, 86, 86, 1920, 1918, 1924, + 1922, 1919, 1917, 86, 1925, 86, 86, 86, 86, 86, + 1926, 1930, 1921, 1923, 1929, 1932, 86, 86, 1927, 86, - 1934, 86, 86, 1930, 86, 1931, 1935, 1937, 86, 1933, - 86, 86, 86, 86, 86, 86, 1941, 86, 1940, 86, - 1950, 1938, 1942, 1944, 86, 1943, 86, 1939, 1945, 1948, - 86, 1946, 1951, 1947, 1953, 86, 86, 1952, 86, 86, - 86, 1957, 86, 1959, 86, 86, 86, 86, 86, 86, - 86, 1949, 1963, 86, 1965, 86, 1954, 1955, 1958, 1956, - 1966, 86, 1961, 86, 86, 1962, 1960, 86, 1964, 1968, - 86, 86, 1969, 86, 86, 170, 1974, 86, 86, 1970, - 86, 1967, 1972, 1973, 1977, 86, 1971, 1975, 86, 1981, - 86, 86, 1976, 86, 86, 86, 86, 1978, 86, 1980, + 1933, 1936, 1935, 86, 1934, 1931, 86, 86, 1928, 1937, + 86, 86, 1940, 86, 86, 1944, 86, 1942, 86, 86, + 86, 86, 86, 1943, 1945, 1939, 1941, 86, 86, 86, + 1938, 86, 86, 1950, 86, 1949, 86, 86, 1946, 1947, + 1951, 1948, 1952, 1953, 86, 1954, 1957, 86, 1959, 1960, + 1955, 1956, 1962, 86, 86, 86, 86, 1961, 86, 86, + 86, 1966, 86, 1968, 86, 86, 86, 86, 1958, 86, + 86, 1967, 1972, 86, 1974, 86, 1963, 1964, 86, 1965, + 1975, 1970, 86, 86, 1971, 86, 1969, 1973, 1977, 86, + 1978, 1979, 86, 86, 86, 170, 86, 1983, 1976, 1986, - 1979, 1983, 86, 1988, 86, 1982, 86, 1984, 1985, 86, - 86, 1995, 1986, 86, 1989, 2000, 1991, 86, 1987, 1992, - 86, 86, 1990, 86, 1993, 1994, 86, 1997, 1998, 86, - 86, 86, 1996, 86, 2001, 86, 86, 2002, 86, 86, - 86, 86, 1999, 86, 2006, 2007, 86, 86, 86, 86, - 2008, 86, 2011, 86, 2004, 2009, 2005, 2003, 2012, 86, - 86, 2010, 2019, 86, 2017, 2015, 2018, 2020, 2014, 86, - 86, 2013, 2016, 86, 2021, 86, 86, 86, 86, 2026, - 86, 2029, 2030, 86, 2031, 86, 86, 86, 2022, 2023, - 86, 2024, 2027, 86, 2028, 86, 2025, 2033, 86, 86, + 86, 86, 1982, 1981, 86, 86, 86, 1984, 1990, 86, + 86, 1985, 1980, 86, 86, 86, 1988, 1992, 1993, 86, + 1987, 86, 1997, 86, 1989, 86, 1994, 1991, 86, 2001, + 86, 2000, 86, 1998, 1995, 2002, 2003, 86, 86, 1996, + 86, 1999, 2006, 2004, 2007, 86, 86, 86, 86, 2005, + 86, 86, 2009, 86, 2010, 86, 86, 86, 2008, 86, + 86, 86, 2015, 86, 2016, 86, 86, 2011, 2020, 2017, + 86, 3507, 86, 2013, 2014, 2012, 2019, 2018, 86, 2021, + 86, 2028, 86, 2024, 86, 2026, 2023, 2027, 2029, 86, + 2025, 86, 2022, 86, 86, 86, 86, 86, 2035, 86, - 2034, 2037, 86, 86, 2039, 86, 2032, 2038, 2035, 86, - 86, 2036, 2040, 2041, 2043, 2048, 86, 86, 2045, 86, - 86, 2044, 86, 2042, 86, 2046, 2047, 86, 86, 2049, - 2050, 86, 2051, 86, 86, 86, 2055, 86, 2053, 2054, - 2057, 86, 2056, 86, 86, 86, 86, 86, 163, 2052, - 2065, 86, 2067, 2058, 2059, 2060, 86, 2068, 86, 86, - 2061, 86, 2063, 2062, 86, 2064, 2070, 2066, 86, 2074, - 2071, 86, 2072, 2069, 86, 86, 86, 2078, 86, 2073, - 2075, 86, 86, 2080, 86, 86, 86, 86, 2083, 2084, - 86, 2086, 86, 86, 2076, 86, 2091, 2077, 86, 86, + 2038, 2039, 86, 2040, 86, 2030, 86, 86, 2031, 2033, + 2032, 2036, 86, 2037, 86, 2034, 2042, 86, 86, 2043, + 2047, 86, 86, 86, 2049, 2050, 2041, 2048, 2044, 86, + 86, 2051, 2053, 2045, 86, 2046, 86, 86, 86, 2054, + 86, 2057, 86, 2056, 86, 86, 86, 2052, 2060, 86, + 2059, 86, 86, 86, 86, 2065, 2067, 2063, 2064, 86, + 86, 2055, 86, 86, 2058, 2066, 2061, 2062, 86, 86, + 2075, 2068, 2069, 2070, 86, 2077, 86, 86, 2071, 86, + 2078, 86, 86, 2072, 86, 86, 2073, 2081, 86, 2074, + 2082, 2079, 2084, 86, 2076, 86, 86, 2080, 86, 2083, - 86, 86, 86, 86, 2081, 2085, 86, 2079, 2082, 2088, - 2089, 2093, 86, 86, 2092, 86, 2090, 86, 2087, 86, - 2094, 2095, 2096, 86, 2099, 86, 2097, 2103, 86, 2098, - 2102, 86, 86, 86, 2106, 2101, 2109, 86, 2105, 2100, - 86, 86, 86, 2107, 2110, 86, 2112, 86, 2104, 86, - 86, 2108, 2111, 86, 86, 86, 86, 2116, 86, 2119, - 2120, 2121, 2115, 86, 86, 86, 86, 86, 86, 2113, - 86, 86, 2114, 2117, 2124, 86, 2129, 86, 86, 2123, - 2128, 86, 2118, 2122, 86, 2126, 86, 2130, 2133, 86, - 2125, 86, 2134, 2127, 86, 2135, 2131, 2132, 2137, 86, + 2088, 86, 2085, 86, 2090, 86, 86, 86, 2086, 86, + 2093, 2094, 86, 2096, 86, 86, 2087, 86, 86, 86, + 86, 86, 2089, 86, 2101, 2091, 2098, 2095, 2092, 2099, + 86, 2103, 86, 86, 86, 2102, 86, 86, 2105, 2100, + 2097, 2106, 2104, 86, 2109, 2107, 86, 86, 2113, 86, + 86, 86, 2112, 2117, 86, 2116, 86, 2115, 2119, 2108, + 86, 86, 2111, 2110, 86, 2120, 86, 86, 86, 2114, + 86, 86, 2121, 86, 86, 2118, 2126, 2122, 86, 2130, + 2123, 86, 2129, 2125, 2131, 86, 86, 86, 86, 2124, + 86, 86, 2127, 86, 86, 2134, 2139, 86, 86, 2138, - 86, 86, 86, 2136, 2138, 2141, 86, 2142, 86, 86, - 86, 86, 2139, 2148, 2145, 86, 2143, 2140, 86, 86, - 86, 86, 86, 2151, 2153, 86, 2155, 2144, 86, 2154, - 2146, 2147, 86, 2149, 2152, 2150, 86, 86, 2160, 86, - 2162, 2156, 2161, 86, 2164, 2163, 86, 2157, 2165, 86, - 86, 86, 2158, 86, 86, 2169, 2167, 2159, 86, 86, - 86, 86, 86, 2171, 86, 2168, 86, 2173, 2175, 86, - 2170, 2177, 2172, 86, 86, 2166, 170, 86, 2178, 86, - 86, 2181, 86, 86, 86, 86, 2176, 2174, 2179, 2185, - 86, 2187, 2182, 2180, 2183, 86, 2188, 86, 2186, 2189, + 86, 86, 2133, 86, 2128, 86, 2132, 2143, 2136, 86, + 2144, 2135, 86, 86, 2146, 2137, 2141, 2140, 2145, 2142, + 2147, 86, 86, 86, 2149, 86, 2148, 2151, 86, 2150, + 86, 86, 86, 86, 86, 2159, 2155, 86, 86, 2153, + 86, 86, 86, 2162, 2152, 86, 2164, 86, 2255, 2154, + 86, 2165, 2156, 2157, 2158, 2160, 86, 2161, 2163, 86, + 2166, 86, 86, 2171, 86, 2172, 86, 2175, 2167, 2173, + 2176, 86, 2168, 86, 2174, 86, 86, 2169, 86, 86, + 2180, 86, 2170, 2178, 86, 86, 86, 86, 2182, 86, + 2184, 2179, 2186, 2181, 86, 2188, 86, 2177, 86, 2183, - 86, 2191, 2184, 86, 86, 2190, 86, 86, 86, 2192, - 2194, 2193, 86, 86, 86, 2197, 86, 2195, 2196, 86, - 2199, 86, 86, 2203, 86, 86, 2198, 2202, 2200, 86, - 86, 86, 2207, 2201, 2204, 2205, 2206, 2208, 86, 86, - 86, 86, 86, 86, 2215, 2213, 86, 86, 86, 2210, - 86, 2214, 86, 86, 86, 2220, 86, 2217, 86, 2209, - 2211, 86, 2212, 86, 86, 2216, 2221, 2219, 86, 2225, - 2218, 86, 2223, 2226, 2222, 86, 86, 86, 2224, 86, - 2229, 86, 2228, 2227, 2231, 86, 86, 86, 2237, 2230, - 2232, 86, 86, 2233, 86, 2234, 2235, 86, 2239, 86, + 86, 86, 2189, 86, 170, 86, 86, 86, 86, 2192, + 2185, 86, 86, 2196, 2197, 2190, 2187, 2193, 2194, 2202, + 2191, 86, 2198, 2199, 86, 86, 2195, 2200, 86, 86, + 3507, 86, 2201, 86, 86, 2203, 2204, 86, 86, 2205, + 86, 2208, 2207, 2206, 86, 2210, 86, 86, 86, 2214, + 86, 86, 2209, 2213, 2219, 86, 86, 86, 2211, 2212, + 2215, 2216, 2217, 86, 86, 86, 2218, 86, 86, 86, + 86, 2226, 86, 2224, 2221, 2225, 86, 86, 86, 86, + 86, 86, 2231, 86, 2220, 2222, 86, 2223, 2228, 86, + 2227, 86, 2230, 2232, 2229, 2234, 86, 2236, 2233, 86, - 2236, 2240, 2242, 86, 86, 2244, 86, 86, 2238, 86, - 2241, 2248, 2243, 86, 2245, 2247, 86, 86, 86, 86, - 86, 86, 2253, 2250, 86, 86, 86, 86, 86, 86, - 2246, 86, 2249, 2254, 86, 86, 86, 2262, 2256, 2257, - 2252, 2251, 86, 2258, 86, 86, 2255, 2259, 86, 2261, - 2263, 2267, 86, 86, 86, 2260, 2264, 2266, 86, 2271, - 86, 2270, 2268, 86, 86, 2265, 86, 86, 2269, 2273, - 86, 2276, 2274, 2272, 2277, 86, 86, 86, 2275, 86, - 86, 2279, 2282, 86, 2278, 2280, 2284, 86, 86, 2281, - 2285, 86, 86, 2287, 86, 86, 2289, 2286, 2283, 86, + 2237, 2238, 86, 2235, 86, 2242, 86, 2240, 86, 86, + 86, 2243, 86, 86, 86, 2249, 86, 2241, 86, 2251, + 2239, 86, 86, 86, 2252, 2244, 2245, 2248, 2246, 2247, + 2254, 86, 86, 2250, 2256, 86, 86, 2257, 86, 2260, + 86, 2253, 86, 86, 2259, 86, 86, 86, 2265, 2262, + 86, 86, 86, 86, 2261, 2258, 86, 86, 86, 2266, + 86, 86, 86, 86, 2268, 2263, 2264, 2274, 2269, 2271, + 86, 86, 2267, 2270, 86, 2273, 2279, 86, 86, 2272, + 2275, 2282, 2276, 2278, 86, 86, 2277, 86, 2280, 2283, + 86, 86, 2285, 2286, 2281, 86, 86, 86, 86, 86, - 2291, 2290, 86, 86, 86, 2295, 86, 2292, 86, 86, - 2299, 86, 86, 2288, 2296, 2300, 86, 86, 86, 2297, - 2298, 2293, 2304, 86, 2294, 2301, 86, 2305, 86, 86, - 2308, 2302, 2303, 86, 86, 86, 86, 2310, 2309, 86, - 2314, 86, 86, 2306, 86, 2316, 86, 2312, 86, 2307, - 86, 2317, 2311, 86, 2315, 2313, 86, 2318, 2319, 86, - 86, 2323, 86, 86, 2320, 2321, 2325, 86, 2322, 86, - 86, 2326, 86, 86, 2327, 2329, 2328, 86, 2331, 86, - 86, 2324, 2330, 86, 2332, 2336, 86, 86, 86, 2334, - 2333, 86, 2335, 86, 86, 86, 86, 86, 2337, 86, + 2288, 86, 86, 2289, 2294, 2284, 2290, 86, 2287, 2296, + 2292, 2293, 86, 86, 2297, 86, 2291, 2299, 86, 86, + 86, 86, 86, 2302, 86, 2301, 2295, 2298, 86, 2303, + 86, 2307, 86, 2304, 86, 86, 2311, 86, 86, 2308, + 2305, 2312, 86, 86, 2310, 2300, 2313, 86, 2309, 86, + 2306, 2316, 86, 86, 2317, 86, 86, 2320, 2322, 86, + 86, 2315, 2314, 86, 2318, 2321, 86, 2326, 86, 86, + 86, 2328, 86, 2329, 2324, 2319, 86, 2323, 86, 86, + 86, 2327, 2325, 2331, 86, 2330, 2335, 86, 2337, 2333, + 86, 86, 2334, 2338, 86, 86, 86, 2332, 86, 86, - 2343, 86, 86, 86, 2339, 2338, 2347, 2341, 2344, 2342, - 86, 2345, 2349, 86, 86, 2348, 2340, 2346, 86, 2350, - 2352, 86, 86, 2358, 86, 2353, 86, 86, 2360, 86, - 86, 86, 2351, 2354, 86, 2357, 2359, 86, 2363, 2355, - 86, 86, 2364, 2367, 170, 86, 2369, 2356, 2361, 86, - 2362, 2370, 86, 2365, 86, 2371, 2372, 2373, 86, 86, - 2366, 86, 86, 2376, 86, 2375, 2368, 2374, 86, 2377, - 86, 2381, 86, 86, 2382, 86, 2384, 86, 2385, 2380, - 86, 2387, 2386, 2378, 86, 2388, 86, 2383, 86, 2390, - 86, 86, 86, 2389, 2379, 86, 2391, 86, 86, 86, + 2340, 2343, 2339, 86, 2344, 86, 86, 2341, 2336, 86, + 2342, 2348, 86, 86, 86, 2347, 2345, 86, 86, 86, + 86, 86, 86, 86, 2356, 2346, 86, 2349, 86, 86, + 86, 2350, 2351, 2352, 2354, 2357, 2355, 2362, 2358, 86, + 86, 86, 2359, 2353, 2360, 2361, 86, 2363, 86, 86, + 86, 86, 2365, 2366, 2369, 2371, 86, 86, 86, 2370, + 2364, 2373, 86, 2367, 86, 86, 2372, 2368, 2376, 2374, + 2377, 86, 86, 2380, 170, 2382, 2384, 2375, 86, 86, + 2383, 86, 86, 2385, 2378, 86, 2387, 86, 2386, 86, + 86, 2379, 2389, 86, 86, 2390, 2381, 2394, 86, 2393, - 86, 2393, 86, 86, 2396, 86, 86, 86, 2399, 86, - 2392, 2394, 86, 86, 2403, 2398, 2405, 86, 86, 86, - 86, 2401, 2406, 2395, 2400, 2397, 86, 2402, 2407, 86, - 86, 2408, 86, 86, 2404, 86, 86, 2413, 2410, 2416, - 86, 2411, 86, 86, 2417, 2409, 2414, 86, 86, 2412, - 86, 86, 86, 2415, 86, 86, 86, 86, 2426, 86, - 86, 2418, 2419, 2424, 86, 2430, 2433, 86, 2428, 2422, - 2420, 2427, 2421, 2423, 2429, 2425, 86, 2432, 2431, 86, - 86, 86, 86, 2435, 2434, 86, 86, 2439, 2440, 86, - 86, 86, 2441, 161, 2436, 86, 2437, 86, 2438, 2442, + 86, 2395, 86, 86, 2398, 86, 86, 2388, 86, 2391, + 86, 2399, 86, 2400, 2396, 2401, 86, 86, 2403, 86, + 2392, 2397, 2402, 2404, 86, 2405, 86, 86, 2407, 86, + 2406, 86, 86, 86, 2409, 86, 86, 86, 2412, 86, + 86, 86, 2416, 2418, 86, 2419, 86, 2411, 86, 86, + 86, 86, 2408, 2413, 2410, 2414, 2415, 86, 86, 86, + 86, 2420, 2417, 2421, 2426, 2429, 86, 2423, 2428, 2424, + 2425, 86, 86, 2427, 2422, 86, 86, 86, 86, 2430, + 86, 86, 86, 86, 2440, 86, 86, 86, 86, 2445, + 86, 2431, 86, 2438, 2432, 2433, 2447, 86, 2442, 2436, - 86, 86, 2445, 86, 2448, 86, 2443, 86, 2444, 2449, - 86, 86, 2446, 86, 86, 2447, 2450, 2452, 2451, 2455, - 86, 2456, 86, 86, 2458, 86, 2454, 2453, 86, 2460, - 86, 86, 86, 2463, 86, 86, 2462, 2464, 86, 86, - 86, 86, 2457, 86, 86, 86, 2459, 2461, 2466, 2465, - 2470, 2471, 86, 2473, 86, 2468, 86, 2467, 86, 86, - 2477, 86, 2469, 2472, 2475, 86, 2479, 86, 2476, 86, - 86, 86, 2482, 86, 2474, 2478, 2485, 86, 86, 86, - 2480, 86, 86, 86, 2481, 86, 2483, 2489, 2490, 86, - 2492, 86, 2484, 86, 2495, 86, 2488, 86, 2486, 86, + 2434, 2441, 2435, 2437, 2439, 86, 2443, 86, 2446, 86, + 86, 2444, 2448, 2449, 86, 86, 86, 86, 2453, 2454, + 86, 86, 2450, 2455, 2456, 86, 86, 86, 2451, 2452, + 2457, 86, 2459, 86, 2462, 86, 2463, 86, 86, 2458, + 86, 86, 2460, 2464, 86, 2461, 2465, 2466, 2469, 86, + 2470, 86, 86, 2472, 86, 86, 2468, 2474, 86, 86, + 2467, 86, 2477, 86, 2478, 86, 2476, 86, 86, 86, + 86, 2471, 86, 2473, 2475, 86, 86, 2480, 2485, 86, + 2484, 2479, 2487, 86, 2482, 86, 2481, 86, 86, 86, + 86, 2483, 2490, 2489, 86, 2486, 86, 2491, 2493, 86, - 86, 2491, 2487, 86, 86, 86, 2493, 2497, 2494, 86, - 2502, 86, 86, 2498, 2504, 86, 86, 2496, 2505, 2508, - 2503, 2499, 2500, 86, 86, 86, 86, 86, 2509, 2510, - 86, 2501, 2511, 2506, 86, 2507, 86, 86, 86, 2513, - 86, 2515, 2517, 2518, 2520, 86, 2521, 86, 2512, 86, - 86, 2514, 86, 2524, 2525, 2519, 86, 86, 86, 86, - 2516, 2526, 2523, 86, 86, 86, 2522, 2529, 86, 86, - 86, 2528, 2530, 2535, 2531, 2536, 86, 2532, 2533, 86, - 2537, 86, 2527, 86, 2534, 86, 86, 86, 2541, 86, - 2542, 86, 2543, 86, 2546, 2540, 86, 170, 2545, 86, + 86, 86, 2496, 2488, 86, 2495, 86, 2494, 86, 2497, + 2499, 86, 2492, 86, 2504, 86, 86, 2503, 86, 86, + 2498, 86, 86, 2502, 2500, 86, 2506, 2509, 86, 2501, + 86, 86, 2511, 2507, 2508, 2505, 86, 86, 86, 2516, + 2522, 86, 2510, 86, 2512, 2518, 86, 86, 86, 2513, + 2517, 2519, 86, 86, 2514, 86, 86, 2524, 2525, 2523, + 86, 86, 86, 2515, 86, 86, 2520, 2529, 2521, 2527, + 2531, 86, 86, 86, 86, 86, 2532, 2533, 2535, 2534, + 2526, 2528, 2536, 86, 86, 2539, 86, 2530, 86, 2538, + 86, 86, 86, 86, 2537, 2540, 2543, 2541, 86, 86, - 2544, 86, 2547, 2538, 86, 2539, 2552, 86, 86, 86, - 86, 86, 86, 86, 86, 2563, 86, 2550, 2554, 2548, - 2551, 2549, 2555, 2553, 2558, 86, 86, 2556, 2557, 2559, - 2560, 86, 86, 2564, 2561, 2565, 86, 86, 86, 86, - 2566, 2568, 2569, 2562, 2567, 86, 86, 86, 86, 2571, - 86, 86, 2572, 86, 2570, 86, 2573, 2578, 2574, 86, - 2577, 86, 86, 86, 86, 2575, 86, 2580, 2581, 2582, - 2583, 86, 2576, 86, 86, 2579, 86, 86, 2584, 86, - 86, 2589, 86, 2585, 2588, 2586, 86, 86, 86, 86, - 86, 2591, 2590, 86, 2595, 86, 2598, 2587, 86, 86, + 2542, 2544, 2545, 86, 86, 86, 2553, 86, 2546, 2550, + 2551, 2552, 2547, 2548, 86, 86, 86, 86, 2557, 2549, + 86, 2556, 86, 2558, 86, 170, 2555, 86, 86, 2561, + 2562, 2559, 86, 86, 2554, 86, 2560, 2567, 86, 86, + 86, 86, 86, 86, 86, 86, 2574, 86, 2569, 2565, + 86, 2566, 2563, 2570, 2564, 2568, 86, 2573, 2571, 2572, + 3507, 2575, 2577, 2578, 86, 86, 2579, 2576, 2580, 86, + 86, 86, 2583, 2581, 2584, 86, 2582, 86, 86, 86, + 86, 2586, 86, 86, 2585, 86, 2588, 86, 86, 2592, + 2593, 2587, 86, 2590, 86, 2589, 86, 2595, 86, 86, - 2597, 86, 86, 2594, 2599, 86, 2600, 2592, 2593, 86, - 86, 86, 86, 2596, 86, 2604, 86, 2601, 2606, 86, - 2602, 2609, 86, 2610, 2607, 86, 86, 86, 2603, 86, - 2608, 2613, 2605, 2611, 86, 86, 2612, 86, 2615, 86, - 2614, 86, 2616, 86, 2618, 2619, 2620, 2621, 2622, 86, - 86, 86, 86, 2617, 2624, 86, 86, 86, 86, 2623, - 86, 86, 86, 2628, 2633, 86, 86, 2631, 86, 2625, - 2626, 2632, 2635, 2627, 2634, 86, 86, 2636, 86, 86, - 86, 86, 2630, 86, 2637, 2639, 2629, 86, 2644, 86, - 2641, 86, 2646, 86, 86, 2642, 86, 86, 86, 86, + 86, 86, 2596, 2597, 2598, 86, 2591, 86, 2594, 86, + 2600, 86, 2599, 2604, 86, 2603, 86, 86, 2601, 2602, + 86, 86, 2606, 86, 86, 86, 86, 86, 2614, 2605, + 2611, 86, 2613, 86, 86, 86, 2616, 2615, 2610, 86, + 2607, 2608, 86, 2609, 86, 2612, 86, 2622, 86, 2620, + 86, 2617, 86, 86, 86, 2628, 86, 2626, 2618, 2625, + 86, 2619, 2623, 86, 2627, 86, 86, 2621, 2624, 2629, + 86, 2631, 86, 86, 2634, 2632, 86, 2636, 86, 2630, + 2635, 2638, 86, 86, 86, 2640, 86, 86, 86, 86, + 2637, 86, 2633, 2639, 2644, 86, 86, 86, 86, 86, - 2640, 2638, 2645, 2643, 2649, 86, 86, 86, 2653, 2650, - 86, 2648, 2647, 2654, 86, 2655, 2651, 2652, 86, 86, - 86, 86, 86, 2659, 86, 2658, 86, 86, 2657, 86, - 86, 86, 2663, 2703, 2662, 86, 2656, 86, 2660, 86, - 2661, 86, 2666, 2667, 86, 2668, 86, 2669, 86, 2664, - 2665, 2670, 86, 2671, 86, 86, 2674, 2672, 86, 2673, - 86, 2675, 86, 86, 86, 86, 86, 86, 2682, 86, - 2676, 2684, 86, 2685, 86, 2678, 86, 86, 86, 86, - 86, 86, 2677, 2681, 2679, 2683, 2680, 2686, 2688, 2687, - 2689, 86, 86, 2694, 86, 86, 2691, 2696, 86, 2690, + 2649, 86, 2642, 2647, 2648, 2641, 2651, 2643, 2650, 86, + 86, 2652, 86, 2653, 86, 86, 86, 2646, 86, 86, + 2655, 2645, 2657, 2660, 86, 86, 2662, 86, 86, 86, + 2658, 86, 86, 2665, 86, 2656, 2654, 2659, 2661, 86, + 86, 86, 2666, 2664, 86, 2663, 86, 2669, 2670, 86, + 2667, 86, 86, 2673, 86, 86, 2671, 2674, 2668, 2672, + 86, 86, 2675, 86, 86, 86, 86, 86, 2676, 2677, + 2679, 2682, 3507, 2678, 2683, 86, 2684, 86, 2685, 86, + 2686, 86, 86, 2680, 2681, 2688, 86, 86, 2690, 86, + 2691, 2689, 86, 2692, 2687, 86, 86, 86, 86, 86, - 2692, 86, 86, 86, 2695, 86, 86, 170, 86, 86, - 2705, 86, 2693, 86, 86, 86, 2699, 86, 86, 2704, - 2701, 86, 2698, 2706, 2712, 86, 2707, 2697, 2708, 2700, - 2702, 86, 86, 2709, 2729, 86, 86, 2714, 86, 2710, - 2715, 2711, 2716, 86, 86, 2713, 2717, 86, 86, 2718, - 86, 2719, 86, 2720, 2721, 2722, 86, 2723, 86, 86, - 86, 86, 86, 86, 2731, 86, 86, 86, 86, 86, - 2735, 2724, 2736, 86, 86, 2740, 86, 2726, 2725, 2742, - 86, 2728, 2727, 2730, 2733, 2732, 2734, 86, 2737, 2738, - 86, 86, 86, 86, 86, 86, 2739, 86, 86, 2741, + 86, 86, 2699, 86, 2701, 86, 3507, 2693, 86, 2695, + 2702, 86, 86, 86, 86, 2705, 2694, 2698, 2696, 2700, + 2697, 86, 86, 2703, 86, 2704, 2706, 2708, 86, 2711, + 86, 86, 2713, 86, 86, 86, 86, 86, 86, 170, + 2712, 2707, 86, 86, 2709, 2720, 86, 2722, 2710, 2716, + 86, 2721, 2718, 86, 86, 2715, 86, 86, 86, 2723, + 2714, 2717, 86, 86, 2719, 2729, 86, 86, 2724, 2725, + 3507, 2731, 2732, 86, 2726, 2733, 86, 2730, 86, 2727, + 86, 2728, 2734, 86, 86, 2735, 86, 2736, 86, 2737, + 86, 2738, 86, 86, 86, 2741, 86, 2740, 86, 86, - 2745, 86, 86, 3483, 86, 2752, 86, 2753, 86, 2743, - 2744, 2751, 2746, 2747, 2754, 86, 2748, 2749, 86, 2757, - 86, 2750, 2758, 86, 2756, 2759, 86, 86, 86, 86, - 86, 86, 86, 2755, 86, 2764, 86, 86, 86, 2768, - 2770, 2767, 2761, 2763, 2760, 2769, 86, 2762, 2771, 86, - 86, 86, 2765, 86, 2766, 86, 86, 86, 86, 86, - 2773, 86, 2777, 2778, 86, 86, 86, 2775, 2782, 2772, - 2783, 86, 2774, 86, 2786, 86, 2776, 86, 86, 2779, - 2780, 2784, 86, 86, 2781, 86, 2789, 86, 2787, 2791, - 86, 2785, 86, 2788, 2792, 86, 86, 86, 2790, 86, + 86, 2739, 2748, 86, 86, 2746, 86, 86, 2752, 2753, + 86, 2743, 2742, 86, 86, 86, 2744, 86, 2745, 2747, + 2757, 86, 2750, 2749, 2751, 86, 2756, 2754, 2759, 86, + 86, 86, 86, 2760, 2758, 86, 2755, 86, 86, 2763, + 86, 86, 2770, 86, 86, 2771, 86, 86, 2761, 2762, + 2764, 2769, 86, 86, 86, 2765, 2766, 2767, 86, 2768, + 2774, 2775, 86, 2776, 86, 2777, 86, 2772, 2779, 86, + 2773, 86, 86, 86, 86, 86, 2778, 2782, 86, 86, + 2785, 2786, 86, 2781, 2788, 2780, 2787, 86, 2789, 86, + 86, 86, 86, 2783, 2784, 86, 86, 2790, 86, 2791, - 2793, 2797, 86, 86, 86, 2794, 86, 2800, 2799, 2798, - 2801, 86, 2795, 2803, 86, 86, 2796, 86, 86, 86, - 2804, 86, 2806, 2802, 2809, 86, 2805, 86, 2810, 86, - 2807, 2812, 86, 86, 86, 86, 86, 86, 86, 2808, - 2818, 86, 2813, 2811, 2815, 2816, 2814, 2817, 2821, 86, - 86, 86, 2820, 86, 2819, 2822, 2823, 86, 86, 86, - 86, 86, 2825, 86, 86, 86, 2826, 2824, 86, 2828, - 2831, 2829, 86, 2832, 2834, 86, 2830, 2836, 2827, 2833, - 2835, 86, 86, 2838, 170, 86, 86, 86, 86, 2843, - 3483, 2840, 2839, 86, 86, 86, 86, 2845, 2844, 86, + 86, 2795, 86, 2796, 2793, 86, 86, 2801, 86, 2800, + 2792, 86, 86, 2804, 86, 2794, 86, 86, 86, 86, + 2797, 2798, 2807, 86, 86, 2799, 2802, 2805, 2809, 86, + 2803, 86, 2806, 86, 2808, 2810, 86, 86, 2812, 2815, + 86, 86, 2811, 86, 2819, 86, 86, 2818, 86, 2816, + 2817, 2813, 86, 2814, 2821, 86, 86, 2822, 86, 86, + 2827, 86, 86, 2828, 2824, 2820, 86, 2823, 2825, 2830, + 86, 86, 86, 86, 86, 2837, 86, 86, 86, 2826, + 86, 86, 3507, 2834, 2831, 2832, 2833, 2835, 2829, 2836, + 2840, 86, 86, 86, 86, 86, 2839, 2838, 2841, 2842, - 86, 2837, 2848, 86, 2847, 2841, 2842, 2849, 86, 2846, - 2851, 86, 86, 2850, 2853, 2852, 86, 86, 86, 2854, - 86, 2855, 2856, 2858, 86, 86, 86, 86, 2859, 86, - 2860, 86, 2857, 86, 2865, 2861, 86, 2866, 86, 2863, - 86, 2867, 2862, 86, 86, 86, 86, 86, 2871, 86, - 2868, 2869, 2870, 86, 2864, 86, 86, 86, 2872, 86, - 2873, 2874, 86, 86, 2879, 86, 2876, 2875, 2877, 86, - 86, 2878, 2883, 86, 2880, 2881, 2885, 86, 86, 2884, - 86, 2888, 86, 86, 86, 86, 86, 2882, 2893, 86, - 2889, 86, 86, 86, 2891, 86, 86, 2886, 86, 2887, + 2844, 86, 86, 86, 86, 86, 2843, 86, 86, 2845, + 86, 86, 2847, 2848, 86, 2850, 2851, 2853, 86, 2849, + 86, 2846, 2852, 2854, 86, 2855, 86, 2856, 2857, 170, + 86, 86, 2860, 2858, 2862, 2859, 86, 86, 2864, 86, + 86, 2863, 86, 2867, 86, 2868, 86, 2866, 86, 2861, + 2870, 86, 86, 2872, 2865, 2871, 86, 86, 2873, 86, + 86, 2869, 2874, 2877, 86, 2875, 86, 86, 2878, 86, + 2876, 2879, 86, 86, 86, 86, 2880, 2884, 2885, 86, + 2886, 2882, 86, 86, 86, 86, 86, 2881, 86, 2888, + 2889, 2887, 86, 86, 86, 2883, 2890, 2892, 2891, 2893, - 2897, 2892, 2900, 2890, 2898, 86, 2901, 2895, 86, 2903, - 2894, 86, 86, 2896, 86, 86, 2902, 2904, 86, 2905, - 2899, 86, 86, 2907, 2909, 86, 2906, 86, 2910, 86, - 86, 2911, 86, 86, 2914, 2908, 86, 2916, 86, 2917, - 86, 2918, 86, 2912, 86, 86, 86, 2913, 2919, 86, - 2920, 2921, 86, 86, 2915, 86, 86, 2925, 2923, 86, - 2929, 2924, 2926, 86, 2930, 86, 2922, 2927, 2931, 86, - 86, 86, 86, 2932, 2935, 86, 2928, 86, 86, 2938, - 86, 86, 2939, 86, 2933, 2934, 2940, 86, 86, 2942, - 86, 86, 86, 2946, 86, 2936, 2943, 86, 2937, 86, + 86, 86, 86, 86, 86, 2894, 2895, 86, 2899, 86, + 86, 2897, 2898, 2900, 2896, 2901, 2903, 86, 86, 86, + 86, 86, 86, 2904, 2908, 86, 86, 2902, 86, 2911, + 86, 2913, 86, 2909, 86, 86, 86, 2905, 86, 2906, + 2907, 86, 2917, 2918, 86, 2912, 2920, 2910, 2921, 86, + 2915, 2923, 86, 2914, 86, 86, 2916, 86, 2924, 86, + 86, 86, 86, 2925, 86, 2926, 2919, 2922, 2929, 86, + 2927, 86, 2930, 86, 86, 2928, 86, 2931, 2932, 86, + 2934, 2936, 86, 2937, 86, 86, 2933, 2938, 86, 2939, + 86, 2941, 86, 86, 2935, 2940, 86, 86, 2945, 86, - 2947, 86, 2950, 2941, 86, 2949, 2945, 2951, 2948, 2944, - 86, 86, 2952, 86, 86, 86, 2957, 2953, 86, 86, - 86, 2956, 86, 2959, 2960, 86, 86, 86, 2962, 86, - 2954, 2961, 2963, 86, 2955, 86, 2965, 86, 2966, 86, - 2969, 86, 86, 2958, 86, 2973, 86, 86, 86, 2980, - 86, 86, 2964, 86, 2981, 86, 2967, 2968, 2972, 2970, - 86, 2974, 2971, 2975, 2977, 86, 86, 2978, 3020, 2982, - 2984, 2976, 86, 2979, 2983, 86, 2985, 86, 86, 2986, - 86, 2987, 86, 2988, 86, 2989, 86, 86, 2990, 86, - 86, 2991, 2993, 86, 86, 2995, 86, 86, 86, 2997, + 86, 2943, 86, 2946, 86, 86, 2949, 2950, 86, 2944, + 86, 2947, 86, 2942, 2951, 86, 2952, 86, 86, 86, + 2948, 2953, 2958, 2954, 86, 2955, 2956, 86, 2959, 86, + 86, 2960, 2961, 86, 2963, 86, 86, 2957, 86, 2962, + 86, 2967, 2968, 86, 86, 2970, 86, 86, 2969, 2964, + 86, 86, 2972, 86, 2966, 2971, 2965, 2973, 86, 86, + 86, 2978, 86, 86, 86, 3507, 2977, 86, 2980, 2974, + 2981, 86, 86, 2975, 86, 86, 86, 2982, 2984, 2976, + 86, 86, 2983, 2986, 86, 2987, 2990, 2979, 2985, 86, + 86, 86, 86, 2988, 2989, 2994, 86, 86, 86, 86, - 3001, 86, 86, 2994, 86, 2998, 3483, 2992, 3002, 86, - 86, 3006, 2996, 3003, 3005, 86, 86, 2999, 3000, 86, - 3004, 3007, 86, 86, 3008, 3009, 86, 86, 86, 86, - 3015, 86, 3010, 86, 3014, 86, 3011, 3012, 3013, 3016, - 86, 86, 3017, 3021, 86, 86, 86, 86, 3022, 86, - 3025, 86, 3019, 86, 3024, 86, 3026, 3023, 86, 3018, - 3027, 86, 3028, 86, 3032, 86, 86, 3029, 86, 86, - 3034, 86, 3030, 3031, 3036, 3033, 86, 3039, 86, 86, - 3037, 86, 86, 86, 86, 3044, 3042, 3043, 86, 86, - 3040, 86, 86, 3035, 3046, 86, 3038, 3045, 86, 3049, + 2996, 86, 86, 3006, 86, 2993, 2995, 2991, 2997, 3000, + 2992, 3001, 2998, 86, 3003, 86, 3002, 86, 2999, 3004, + 86, 3005, 86, 3007, 86, 3008, 86, 3009, 86, 3010, + 86, 3011, 86, 86, 86, 3014, 86, 86, 3013, 3015, + 86, 86, 3017, 86, 86, 3019, 3023, 86, 3012, 86, + 3016, 86, 3020, 3018, 3024, 86, 86, 3027, 86, 3025, + 3032, 3021, 86, 86, 3022, 3029, 86, 3026, 3030, 3028, + 3031, 86, 86, 86, 86, 86, 3037, 86, 86, 86, + 86, 3033, 3034, 3035, 3038, 86, 86, 3039, 86, 3043, + 86, 3049, 86, 3036, 3044, 86, 3041, 3046, 3040, 86, - 3041, 86, 3050, 3483, 3047, 86, 3048, 3051, 86, 3052, - 86, 3053, 86, 86, 3054, 3055, 3058, 86, 3057, 86, - 3056, 86, 86, 86, 3059, 86, 3060, 3061, 86, 86, - 86, 86, 3067, 86, 3065, 3062, 3483, 3063, 86, 3069, - 86, 86, 86, 86, 3064, 3070, 86, 3071, 3066, 86, - 3073, 3072, 3074, 86, 86, 86, 3068, 86, 3075, 3078, - 86, 86, 86, 86, 3082, 3081, 86, 86, 3076, 86, - 3079, 86, 3086, 86, 3077, 3080, 86, 3085, 86, 3083, - 86, 3088, 3089, 3092, 86, 3084, 86, 3094, 86, 3095, - 86, 3087, 86, 86, 3090, 3097, 86, 86, 86, 86, + 86, 3042, 86, 3045, 3047, 3050, 86, 3048, 86, 86, + 3054, 86, 86, 3051, 86, 86, 86, 86, 86, 86, + 86, 3055, 3058, 3061, 86, 3059, 3056, 3053, 3092, 86, + 86, 3062, 86, 3052, 86, 3064, 86, 3065, 3060, 3068, + 3057, 3063, 86, 3066, 86, 3067, 86, 86, 3071, 3073, + 86, 3072, 3074, 86, 3075, 86, 86, 3069, 86, 86, + 3070, 86, 3080, 86, 3079, 3076, 86, 86, 86, 3083, + 86, 3081, 3082, 86, 86, 86, 86, 86, 3077, 86, + 3078, 3084, 3087, 3089, 3093, 3085, 3091, 86, 86, 86, + 86, 86, 86, 3088, 86, 3086, 3094, 86, 3095, 3100, - 86, 86, 3100, 86, 3091, 3093, 3102, 3103, 86, 3098, - 3106, 86, 3105, 3096, 3099, 3101, 86, 86, 86, 3109, - 3104, 86, 86, 3112, 86, 86, 3114, 86, 86, 3117, - 86, 86, 86, 3115, 3107, 3110, 3108, 3118, 86, 86, - 86, 3111, 3121, 86, 86, 3113, 3119, 86, 3126, 3116, - 86, 3123, 86, 3124, 86, 86, 3130, 86, 86, 3120, - 86, 86, 3122, 3132, 3128, 86, 86, 3125, 3133, 3127, - 86, 3134, 86, 3131, 3137, 3129, 3138, 86, 3135, 86, - 86, 3136, 3139, 3140, 3143, 86, 86, 86, 86, 86, - 3141, 3142, 3144, 3146, 86, 3149, 86, 86, 86, 86, + 86, 3090, 86, 86, 86, 3097, 86, 3096, 86, 3098, + 3104, 86, 3099, 86, 86, 3101, 3102, 3103, 86, 86, + 3105, 86, 3108, 3109, 3106, 86, 3111, 86, 86, 86, + 3112, 86, 3107, 3115, 86, 3117, 86, 3118, 86, 3110, + 3120, 86, 86, 86, 86, 3113, 86, 86, 3116, 3123, + 86, 86, 3119, 86, 3114, 3125, 3126, 86, 3121, 3122, + 3128, 86, 3124, 3129, 86, 3132, 86, 3127, 86, 86, + 3135, 86, 86, 3137, 86, 86, 3130, 86, 86, 86, + 3131, 86, 3133, 3138, 86, 3134, 3140, 86, 3141, 86, + 3142, 86, 3136, 3144, 86, 3146, 3139, 3143, 3149, 86, - 86, 86, 3154, 86, 86, 86, 86, 3145, 86, 3150, - 86, 3147, 3148, 3160, 3153, 3157, 3151, 3158, 86, 3159, - 86, 3156, 86, 3155, 3161, 3152, 86, 3162, 3163, 86, - 3164, 86, 3165, 86, 3166, 86, 86, 3169, 86, 3167, - 86, 3171, 86, 86, 86, 3170, 86, 86, 86, 86, - 3177, 3178, 86, 86, 86, 86, 86, 3172, 3184, 86, - 3185, 86, 3168, 86, 86, 3186, 3173, 3175, 3174, 3176, - 3181, 86, 3183, 3180, 86, 3182, 86, 86, 86, 3179, - 86, 3189, 3191, 86, 3187, 3192, 86, 86, 86, 3195, - 3196, 86, 3193, 3188, 3194, 86, 3197, 86, 3190, 3198, + 3147, 3148, 86, 86, 86, 3153, 86, 86, 86, 86, + 86, 3155, 3156, 3145, 3151, 86, 3157, 86, 3150, 3160, + 3161, 86, 3154, 3152, 86, 86, 3163, 3162, 86, 3158, + 3159, 86, 86, 3166, 86, 86, 3165, 86, 3169, 86, + 3167, 86, 3172, 86, 86, 86, 3164, 86, 86, 3177, + 86, 3173, 86, 86, 3193, 86, 3168, 86, 3170, 3171, + 86, 3176, 3184, 3174, 3180, 3181, 86, 3182, 86, 3179, + 86, 3178, 3175, 3183, 86, 86, 3187, 86, 3188, 86, + 3186, 3189, 86, 86, 3185, 3190, 86, 86, 86, 3195, + 86, 86, 86, 3194, 86, 86, 3191, 86, 86, 86, - 86, 86, 3199, 86, 86, 3200, 86, 86, 3201, 86, - 86, 3202, 3204, 86, 86, 3206, 86, 86, 3205, 86, - 3483, 3207, 86, 86, 3203, 86, 86, 86, 86, 3208, - 86, 3216, 3217, 3220, 3209, 3211, 3210, 3219, 3212, 3218, - 3213, 3214, 86, 86, 86, 3222, 3215, 3224, 86, 86, - 3221, 3225, 86, 3226, 3227, 86, 86, 3223, 86, 3230, - 86, 3228, 3231, 86, 3232, 3233, 86, 86, 3234, 3235, - 3239, 86, 3236, 86, 86, 3237, 3238, 3229, 86, 3240, - 86, 3242, 86, 86, 86, 86, 86, 86, 86, 3241, - 3248, 86, 3247, 86, 86, 86, 86, 86, 3244, 86, + 3201, 3202, 86, 86, 86, 86, 86, 3208, 86, 86, + 3196, 3209, 86, 3192, 3197, 3207, 3198, 3199, 3205, 3200, + 3210, 3203, 3204, 86, 86, 3206, 86, 86, 3507, 3211, + 3215, 86, 3213, 3216, 86, 86, 86, 3219, 86, 86, + 3217, 86, 3212, 86, 86, 3214, 3221, 3222, 86, 3223, + 3218, 3220, 86, 86, 86, 86, 3224, 86, 3225, 86, + 3228, 3226, 86, 86, 86, 3230, 86, 86, 86, 3229, + 3231, 86, 86, 86, 3227, 86, 86, 3243, 86, 3507, + 3240, 3241, 3232, 86, 3233, 3235, 3234, 3236, 3242, 3237, + 3238, 86, 86, 86, 3239, 3246, 3244, 86, 3245, 3248, - 3252, 3243, 3251, 3253, 86, 3245, 3246, 86, 3249, 3256, - 3257, 86, 3254, 86, 3259, 86, 3258, 3255, 3250, 3260, - 86, 3261, 86, 86, 86, 86, 3266, 86, 3263, 3268, - 3262, 3267, 86, 3264, 86, 86, 3265, 86, 86, 86, - 3275, 86, 3270, 3272, 3273, 3276, 86, 3278, 86, 86, - 3269, 86, 3277, 3279, 86, 3271, 3274, 86, 3282, 86, - 3283, 86, 3281, 86, 3280, 3285, 86, 3286, 86, 3287, - 86, 86, 3284, 3288, 86, 3289, 86, 3290, 86, 3291, - 86, 3292, 86, 86, 3295, 86, 86, 86, 86, 3299, - 86, 86, 3294, 3301, 86, 3296, 86, 3293, 86, 3297, + 86, 3249, 86, 86, 3251, 86, 3247, 3250, 86, 3254, + 86, 3255, 86, 3252, 3256, 3257, 3253, 86, 3258, 3259, + 86, 86, 3260, 86, 3261, 3262, 86, 86, 86, 3265, + 3263, 3266, 86, 3264, 86, 86, 86, 86, 86, 3272, + 86, 86, 86, 3271, 86, 86, 86, 86, 86, 3268, + 3276, 3275, 3267, 86, 3277, 86, 3269, 3270, 3280, 3281, + 86, 3273, 3278, 86, 3282, 86, 3279, 3274, 86, 3283, + 3284, 86, 3285, 86, 86, 86, 3290, 3292, 3286, 3287, + 86, 3291, 86, 86, 3288, 86, 86, 3289, 86, 86, + 3293, 3296, 3300, 3297, 86, 3294, 3299, 86, 86, 86, - 86, 86, 86, 86, 3305, 3306, 86, 86, 3298, 86, - 3300, 3302, 3310, 3303, 3304, 86, 3307, 3308, 86, 86, - 3312, 3315, 86, 86, 3311, 3309, 3314, 86, 86, 86, - 86, 86, 86, 3313, 3317, 86, 3316, 3321, 86, 86, - 86, 3322, 3323, 86, 86, 86, 3327, 3318, 3319, 3326, - 86, 3320, 3329, 86, 3324, 3330, 86, 86, 3328, 3331, - 86, 86, 86, 86, 86, 86, 3325, 3334, 86, 86, - 3333, 86, 86, 3332, 3339, 86, 3336, 3335, 86, 3338, - 3340, 86, 3342, 86, 3344, 3343, 3341, 3337, 86, 86, - 86, 86, 86, 3345, 86, 86, 86, 3351, 86, 3346, + 3301, 3302, 86, 3303, 86, 86, 3295, 3507, 3298, 86, + 3305, 3306, 86, 86, 3304, 3307, 86, 3507, 3308, 3309, + 86, 3310, 86, 3311, 86, 3312, 86, 3313, 86, 3314, + 86, 3315, 86, 3316, 86, 86, 3319, 86, 86, 3317, + 86, 86, 3323, 86, 3318, 86, 86, 3320, 3325, 86, + 86, 86, 3321, 86, 3329, 3330, 86, 86, 86, 3327, + 86, 3322, 86, 3328, 3324, 3326, 3332, 86, 86, 86, + 3336, 3334, 3331, 3339, 86, 86, 3333, 3338, 86, 86, + 3337, 86, 86, 3341, 86, 86, 3335, 86, 86, 3340, + 86, 3345, 3347, 86, 86, 86, 3346, 86, 3344, 3350, - 3349, 3353, 3350, 86, 3348, 3354, 86, 86, 3356, 3357, - 3359, 86, 86, 3347, 86, 3352, 3361, 86, 3355, 86, - 3362, 3360, 3363, 86, 3364, 86, 86, 3358, 86, 86, - 86, 3367, 86, 3365, 3368, 3369, 86, 3372, 86, 86, - 86, 86, 86, 86, 3375, 86, 3366, 3376, 86, 3378, - 86, 3371, 3373, 3374, 3379, 86, 86, 3370, 3382, 86, - 3377, 3381, 86, 3384, 3385, 86, 86, 3386, 86, 86, - 86, 3380, 3389, 3390, 86, 86, 3387, 3383, 86, 86, - 86, 3395, 86, 86, 3391, 3394, 86, 3392, 3388, 3396, - 86, 86, 86, 86, 3393, 86, 3400, 86, 86, 86, + 3342, 86, 3343, 86, 3351, 3348, 3353, 86, 3352, 3354, + 86, 3355, 86, 86, 86, 86, 86, 86, 3358, 3349, + 3356, 86, 3357, 3359, 86, 86, 3363, 3364, 3362, 3360, + 86, 86, 3366, 86, 86, 86, 86, 3367, 86, 3361, + 86, 86, 86, 86, 86, 3365, 3375, 3373, 86, 3377, + 3370, 86, 3368, 3369, 3374, 3372, 3378, 86, 86, 86, + 86, 3371, 86, 3380, 3376, 3381, 3383, 86, 3379, 3384, + 3385, 86, 86, 3386, 3387, 86, 3388, 86, 86, 3382, + 86, 3389, 86, 3391, 86, 86, 86, 3392, 3396, 3393, + 86, 86, 86, 86, 86, 3400, 86, 3399, 3390, 3402, - 3402, 86, 86, 86, 3397, 3399, 3398, 3407, 3408, 3409, - 86, 3404, 3405, 3401, 86, 86, 3403, 86, 3413, 86, - 3406, 86, 3415, 86, 3416, 86, 3414, 86, 86, 86, - 3417, 3421, 3418, 3411, 3410, 86, 3412, 86, 3422, 86, - 3419, 86, 3424, 86, 86, 86, 3423, 86, 3420, 3425, - 86, 86, 3430, 86, 3427, 86, 86, 3433, 86, 3434, - 86, 86, 86, 3426, 86, 86, 3437, 86, 3432, 3428, - 3429, 3435, 3431, 86, 3436, 86, 3441, 86, 3442, 86, - 3440, 86, 3445, 3438, 3439, 86, 86, 3447, 86, 3448, - 3443, 86, 86, 86, 3452, 86, 3449, 86, 86, 3450, + 86, 3395, 86, 3398, 3397, 3403, 86, 86, 3406, 86, + 3394, 86, 86, 3401, 3409, 86, 86, 3404, 86, 3410, + 86, 86, 3413, 86, 3411, 3414, 3405, 3407, 86, 3408, + 86, 86, 86, 3419, 86, 3415, 3416, 3418, 86, 3412, + 3420, 86, 86, 86, 86, 86, 86, 86, 3424, 3417, + 86, 3426, 86, 86, 86, 86, 86, 3423, 3431, 3421, + 3432, 86, 3422, 3428, 86, 3425, 3427, 3429, 3433, 86, + 86, 3430, 3437, 86, 3439, 3438, 3434, 86, 3440, 3435, + 86, 86, 86, 3436, 86, 86, 3441, 3442, 3445, 3443, + 3446, 86, 86, 86, 86, 3448, 86, 3447, 86, 86, - 3454, 86, 3453, 86, 3446, 3444, 3455, 86, 3456, 86, - 3457, 86, 3451, 86, 3461, 86, 3459, 86, 86, 86, - 86, 86, 86, 3463, 3464, 86, 3467, 86, 3458, 3468, - 86, 3483, 3460, 86, 3471, 86, 3462, 3472, 86, 3465, - 3466, 3469, 3473, 3474, 86, 86, 3470, 3475, 86, 86, - 86, 86, 3476, 86, 3477, 3478, 3481, 86, 3482, 86, - 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, - 3479, 3483, 3480, 47, 47, 47, 47, 47, 47, 47, - 52, 52, 52, 52, 52, 52, 52, 57, 57, 57, - 57, 57, 57, 57, 63, 63, 63, 63, 63, 63, + 86, 86, 3449, 3454, 3444, 86, 3451, 86, 86, 86, + 86, 3457, 3450, 3458, 86, 86, 86, 86, 86, 3452, + 3453, 3456, 3461, 86, 3455, 3459, 3462, 86, 3460, 86, + 3465, 3464, 3466, 86, 3463, 86, 3467, 86, 3469, 86, + 3471, 86, 3472, 86, 86, 86, 3476, 86, 3473, 3507, + 86, 3474, 3479, 86, 3470, 3477, 86, 86, 3478, 3468, + 86, 86, 86, 86, 3475, 86, 86, 3480, 3481, 86, + 3483, 3485, 86, 86, 3487, 86, 3482, 86, 3488, 86, + 3491, 3484, 3486, 3492, 86, 3489, 86, 86, 3495, 3496, + 86, 86, 3498, 86, 3490, 86, 3493, 86, 3497, 3499, - 63, 68, 68, 68, 68, 68, 68, 68, 74, 74, - 74, 74, 74, 74, 74, 80, 80, 80, 80, 80, - 80, 80, 89, 89, 3483, 89, 89, 89, 89, 160, - 160, 3483, 3483, 3483, 160, 160, 162, 162, 3483, 3483, - 162, 3483, 162, 164, 3483, 3483, 3483, 3483, 3483, 164, - 167, 167, 3483, 3483, 3483, 167, 167, 169, 3483, 3483, - 3483, 3483, 3483, 169, 171, 171, 3483, 171, 171, 171, - 171, 174, 3483, 3483, 3483, 3483, 3483, 174, 177, 177, - 3483, 3483, 3483, 177, 177, 90, 90, 3483, 90, 90, - 90, 90, 17, 3483, 3483, 3483, 3483, 3483, 3483, 3483, + 86, 86, 3500, 86, 86, 3494, 3501, 3507, 3502, 3505, + 86, 3506, 86, 3507, 3507, 3507, 3503, 3507, 3507, 3507, + 3507, 3507, 3507, 3504, 47, 47, 47, 47, 47, 47, + 47, 52, 52, 52, 52, 52, 52, 52, 57, 57, + 57, 57, 57, 57, 57, 63, 63, 63, 63, 63, + 63, 63, 68, 68, 68, 68, 68, 68, 68, 74, + 74, 74, 74, 74, 74, 74, 80, 80, 80, 80, + 80, 80, 80, 89, 89, 3507, 89, 89, 89, 89, + 160, 160, 3507, 3507, 3507, 160, 160, 162, 162, 3507, + 3507, 162, 3507, 162, 164, 3507, 3507, 3507, 3507, 3507, - 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, - 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, - 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, - 3483, 3483, 3483 + 164, 167, 167, 3507, 3507, 3507, 167, 167, 169, 3507, + 3507, 3507, 3507, 3507, 169, 171, 171, 3507, 171, 171, + 171, 171, 174, 3507, 3507, 3507, 3507, 3507, 174, 177, + 177, 3507, 3507, 3507, 177, 177, 90, 90, 3507, 90, + 90, 90, 90, 17, 3507, 3507, 3507, 3507, 3507, 3507, + 3507, 3507, 3507, 3507, 3507, 3507, 3507, 3507, 3507, 3507, + 3507, 3507, 3507, 3507, 3507, 3507, 3507, 3507, 3507, 3507, + 3507, 3507, 3507, 3507, 3507, 3507, 3507, 3507, 3507, 3507, + 3507, 3507, 3507, 3507 } ; -static const flex_int16_t yy_chk[6834] = +static const flex_int16_t yy_chk[6885] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2336,18 +2348,18 @@ static const flex_int16_t yy_chk[6834] = 5, 3, 6, 24, 4, 24, 24, 5, 24, 6, 7, 7, 7, 7, 24, 7, 8, 8, 8, 8, 33, 8, 7, 9, 9, 9, 26, 26, 8, 10, - 10, 10, 19, 29, 9, 33, 19, 29, 3491, 35, + 10, 10, 19, 29, 9, 33, 19, 29, 3515, 35, 10, 11, 11, 11, 11, 11, 11, 13, 13, 13, 13, 34, 13, 11, 35, 99, 34, 29, 38, 13, 51, 51, 11, 12, 12, 12, 12, 12, 12, 14, 14, 14, 14, 99, 14, 12, 15, 15, 15, 38, 23, 14, 23, 23, 12, 23, 46, 15, 16, 16, - 16, 23, 23, 25, 27, 27, 25, 25, 2838, 16, + 16, 23, 23, 25, 27, 27, 25, 25, 2857, 16, 25, 46, 27, 30, 30, 25, 27, 56, 40, 27, 56, 73, 31, 31, 25, 28, 67, 67, 30, 32, 28, 31, 40, 32, 28, 73, 32, 28, 92, 28, - 28, 92, 31, 32, 1127, 32, 36, 36, 37, 37, + 28, 92, 31, 32, 1129, 32, 36, 36, 37, 37, 28, 45, 45, 37, 97, 36, 45, 97, 41, 41, 45, 36, 87, 41, 93, 36, 87, 37, 93, 37, @@ -2497,589 +2509,594 @@ static const flex_int16_t yy_chk[6834] = 661, 662, 665, 657, 664, 668, 668, 660, 662, 671, 664, 663, 666, 667, 665, 673, 669, 666, 667, 667, 670, 672, 670, 672, 674, 675, 676, 666, 671, 677, - 678, 679, 680, 673, 685, 679, 678, 681, 682, 683, - 684, 680, 674, 675, 687, 676, 685, 686, 688, 677, - 687, 689, 681, 682, 690, 691, 692, 683, 695, 684, - 693, 701, 686, 694, 696, 689, 690, 694, 688, 697, - 698, 699, 704, 700, 691, 701, 695, 692, 700, 693, - 696, 702, 702, 705, 707, 706, 704, 697, 698, 698, + 678, 679, 680, 673, 85, 679, 678, 681, 682, 683, + 684, 680, 674, 675, 685, 676, 686, 685, 687, 677, + 688, 689, 681, 682, 687, 690, 685, 683, 691, 684, + 692, 686, 694, 693, 696, 689, 694, 690, 695, 697, + 688, 698, 699, 700, 701, 702, 702, 691, 700, 703, + 696, 692, 693, 703, 704, 705, 695, 697, 701, 698, - 699, 703, 708, 709, 710, 703, 706, 708, 707, 711, - 712, 713, 705, 714, 715, 718, 713, 712, 719, 709, - 714, 716, 711, 710, 717, 719, 716, 720, 721, 717, - 722, 723, 725, 718, 724, 730, 720, 725, 715, 722, - 724, 726, 721, 723, 726, 727, 728, 729, 731, 727, - 730, 732, 733, 733, 734, 734, 729, 735, 735, 736, - 728, 737, 731, 734, 736, 739, 741, 740, 743, 744, - 737, 742, 732, 740, 745, 742, 746, 747, 749, 750, - 743, 748, 746, 751, 739, 747, 741, 754, 748, 757, - 760, 761, 745, 772, 744, 763, 749, 761, 770, 760, + 698, 699, 706, 707, 708, 709, 710, 711, 704, 708, + 713, 712, 714, 706, 705, 713, 715, 707, 712, 714, + 711, 709, 716, 717, 718, 710, 719, 716, 717, 720, + 721, 723, 722, 719, 726, 728, 732, 726, 720, 724, + 715, 722, 718, 723, 721, 724, 725, 729, 727, 728, + 730, 725, 727, 731, 733, 733, 729, 732, 736, 734, + 734, 735, 735, 736, 737, 730, 739, 731, 734, 740, + 741, 743, 742, 737, 744, 740, 742, 745, 746, 747, + 749, 748, 750, 743, 746, 739, 751, 747, 748, 754, + 741, 760, 757, 767, 767, 745, 761, 763, 749, 744, - 764, 763, 754, 751, 750, 752, 757, 752, 85, 764, - 752, 766, 765, 772, 752, 766, 770, 752, 767, 767, - 768, 768, 769, 771, 752, 752, 773, 752, 765, 775, - 776, 777, 773, 769, 780, 776, 778, 771, 774, 774, - 774, 782, 774, 779, 781, 774, 782, 779, 781, 775, - 774, 783, 777, 785, 778, 784, 774, 774, 780, 786, - 784, 788, 787, 791, 781, 787, 788, 788, 785, 789, - 783, 790, 790, 798, 792, 798, 789, 794, 791, 792, - 793, 793, 794, 795, 786, 796, 795, 797, 797, 799, - 796, 800, 801, 802, 804, 803, 801, 805, 805, 810, + 760, 80, 761, 763, 754, 764, 751, 750, 752, 757, + 752, 769, 766, 752, 764, 765, 766, 752, 768, 768, + 752, 770, 769, 771, 772, 778, 773, 752, 752, 776, + 752, 765, 773, 775, 776, 777, 779, 771, 780, 770, + 779, 789, 783, 778, 772, 774, 774, 774, 789, 774, + 781, 786, 774, 775, 781, 782, 777, 774, 785, 852, + 782, 783, 780, 774, 774, 787, 784, 791, 787, 788, + 781, 784, 852, 785, 788, 788, 786, 790, 790, 792, + 793, 793, 791, 794, 792, 796, 795, 799, 794, 795, + 796, 797, 797, 798, 800, 798, 801, 802, 804, 799, - 806, 799, 804, 807, 808, 808, 809, 811, 814, 814, - 800, 810, 812, 802, 803, 806, 813, 807, 812, 819, - 815, 813, 817, 825, 809, 815, 815, 817, 818, 811, - 820, 825, 821, 822, 818, 824, 820, 821, 819, 822, - 823, 824, 828, 823, 826, 826, 827, 827, 829, 830, - 828, 831, 832, 833, 830, 834, 835, 835, 831, 836, - 838, 838, 840, 837, 844, 850, 829, 839, 836, 833, - 832, 837, 845, 839, 834, 842, 843, 845, 846, 847, - 849, 840, 847, 851, 842, 843, 848, 846, 844, 852, - 850, 848, 851, 853, 849, 854, 854, 855, 853, 853, + 801, 803, 805, 805, 806, 809, 804, 807, 808, 808, + 810, 811, 812, 800, 814, 814, 819, 802, 812, 806, + 803, 807, 810, 809, 813, 815, 75, 817, 818, 813, + 815, 815, 817, 811, 818, 819, 820, 823, 821, 822, + 823, 824, 820, 821, 825, 822, 828, 824, 826, 826, + 827, 827, 825, 829, 828, 830, 831, 832, 833, 834, + 830, 835, 835, 831, 836, 838, 838, 840, 837, 844, + 842, 829, 843, 836, 833, 832, 837, 839, 834, 842, + 845, 843, 846, 839, 847, 845, 840, 847, 849, 848, + 850, 846, 851, 844, 848, 854, 854, 855, 853, 856, - 856, 857, 852, 858, 859, 860, 867, 862, 860, 862, - 857, 864, 855, 863, 863, 865, 860, 866, 869, 856, - 865, 868, 859, 870, 871, 872, 867, 858, 874, 876, - 873, 875, 864, 871, 873, 876, 877, 878, 866, 879, - 869, 868, 880, 870, 882, 877, 874, 881, 872, 878, - 875, 883, 882, 881, 884, 886, 880, 887, 879, 884, - 885, 885, 888, 889, 890, 883, 891, 892, 893, 895, - 894, 888, 890, 896, 886, 895, 898, 887, 897, 896, - 899, 900, 898, 889, 903, 901, 891, 893, 903, 892, - 894, 901, 897, 902, 899, 904, 905, 906, 907, 902, + 857, 851, 849, 853, 853, 858, 859, 864, 860, 857, + 866, 860, 855, 867, 862, 850, 862, 865, 856, 860, + 863, 863, 865, 868, 859, 869, 870, 871, 864, 858, + 872, 866, 874, 867, 873, 875, 871, 881, 873, 876, + 877, 879, 880, 868, 878, 876, 870, 869, 884, 877, + 874, 881, 882, 872, 875, 883, 878, 879, 882, 885, + 887, 880, 884, 883, 885, 886, 886, 888, 889, 890, + 891, 892, 893, 894, 896, 895, 897, 889, 891, 887, + 896, 901, 897, 898, 899, 900, 905, 888, 906, 890, + 899, 892, 894, 908, 893, 895, 902, 898, 903, 900, - 909, 900, 906, 908, 908, 910, 909, 911, 905, 912, - 911, 910, 913, 915, 904, 914, 905, 916, 916, 907, - 917, 914, 921, 918, 924, 913, 919, 912, 918, 919, - 920, 923, 923, 915, 925, 920, 920, 921, 917, 922, - 926, 927, 919, 922, 919, 926, 924, 929, 930, 933, - 932, 934, 936, 936, 925, 937, 939, 939, 940, 937, - 927, 941, 930, 932, 938, 941, 942, 962, 962, 933, - 944, 929, 934, 935, 943, 944, 935, 945, 935, 938, - 946, 942, 935, 940, 935, 946, 946, 947, 943, 935, - 948, 945, 950, 949, 935, 951, 947, 949, 953, 952, + 906, 901, 902, 904, 903, 905, 907, 904, 906, 909, + 909, 907, 910, 911, 908, 913, 914, 912, 910, 911, + 912, 915, 916, 917, 917, 918, 919, 915, 930, 914, + 922, 919, 920, 913, 921, 920, 925, 923, 928, 921, + 921, 923, 916, 918, 926, 922, 924, 924, 920, 927, + 920, 931, 930, 933, 927, 934, 935, 928, 925, 937, + 937, 939, 1337, 938, 926, 931, 933, 938, 940, 940, + 941, 943, 1337, 948, 944, 934, 939, 935, 936, 946, + 942, 936, 948, 936, 942, 945, 943, 936, 944, 936, + 945, 947, 949, 946, 936, 941, 947, 947, 950, 936, - 951, 954, 955, 953, 948, 956, 958, 950, 957, 949, - 951, 952, 958, 959, 960, 954, 961, 957, 959, 956, - 960, 963, 961, 955, 964, 965, 963, 966, 969, 970, - 964, 967, 972, 975, 970, 973, 973, 974, 971, 976, - 969, 975, 974, 977, 972, 980, 966, 965, 978, 967, - 968, 968, 971, 979, 981, 976, 968, 977, 968, 983, - 981, 980, 984, 982, 968, 985, 986, 978, 982, 968, - 968, 983, 979, 987, 988, 988, 968, 990, 989, 992, - 984, 985, 989, 993, 986, 992, 993, 994, 995, 996, - 997, 987, 999, 995, 998, 1001, 997, 990, 1002, 998, + 951, 953, 950, 952, 954, 955, 949, 956, 952, 954, + 957, 958, 960, 953, 950, 951, 959, 960, 952, 955, + 958, 961, 959, 962, 957, 963, 963, 961, 956, 962, + 964, 965, 966, 967, 970, 964, 971, 965, 968, 972, + 976, 971, 975, 973, 974, 974, 970, 975, 976, 979, + 977, 980, 967, 972, 966, 973, 968, 969, 969, 978, + 984, 982, 981, 969, 983, 969, 977, 982, 979, 983, + 980, 969, 984, 978, 985, 986, 969, 969, 981, 987, + 988, 989, 989, 969, 990, 991, 994, 993, 990, 994, + 995, 986, 985, 993, 996, 997, 998, 987, 988, 996, - 1003, 1005, 996, 1004, 1001, 1006, 994, 1002, 1007, 1004, - 1005, 999, 1008, 1007, 1009, 1010, 1003, 1011, 1012, 1014, - 1015, 1013, 1018, 1021, 1006, 1014, 1020, 1012, 1009, 1011, - 1013, 1022, 1008, 1016, 1023, 1010, 1022, 1015, 1018, 1016, - 1020, 1024, 1025, 1021, 1026, 1027, 1028, 1031, 1032, 80, - 1027, 1028, 1031, 1023, 1035, 1024, 1036, 1032, 1034, 1026, - 1025, 1033, 1033, 1035, 1034, 1037, 1039, 1040, 1045, 1044, - 1046, 1036, 1040, 1040, 1043, 1042, 1042, 1043, 1037, 1042, - 1047, 1048, 1039, 1044, 1049, 1050, 1046, 1051, 1045, 1052, - 1053, 1050, 1054, 1058, 1048, 1052, 1055, 1054, 1047, 1049, + 1000, 999, 998, 1002, 1003, 991, 999, 1004, 997, 995, + 1005, 1006, 1002, 1003, 1007, 1009, 1005, 1008, 1010, 1000, + 1006, 1011, 1008, 1004, 1012, 1013, 1016, 1022, 1014, 74, + 1019, 1024, 1010, 1007, 1013, 1009, 1012, 1014, 1015, 1017, + 1021, 1011, 1025, 1016, 1015, 1017, 1019, 1022, 1023, 1026, + 1024, 1027, 1028, 1023, 1021, 1029, 1025, 1028, 1032, 1033, + 1029, 1034, 1034, 1032, 1035, 1036, 1027, 1026, 1033, 1037, + 1035, 1040, 1038, 1041, 1036, 1045, 1043, 1043, 1041, 1041, + 1043, 1046, 1047, 1044, 1037, 1038, 1044, 1040, 1048, 1045, + 1049, 1051, 1050, 1052, 1053, 1054, 1059, 1051, 1047, 1055, - 1057, 1059, 1061, 1057, 1060, 1053, 1059, 1051, 1062, 1060, - 1055, 1063, 1065, 1067, 1058, 1064, 1063, 1062, 1061, 1067, - 1064, 1068, 1069, 1070, 1065, 1071, 1071, 1072, 1069, 1070, - 1073, 1074, 1075, 1075, 1074, 1076, 1072, 1068, 1077, 1078, - 1079, 1080, 1083, 1079, 1081, 1082, 1085, 1083, 1073, 1091, - 1081, 1082, 1085, 1076, 1080, 1084, 1086, 1077, 1087, 1078, - 1084, 1086, 1089, 1090, 1087, 1092, 1097, 1089, 1093, 1091, - 1095, 1092, 1098, 1093, 1094, 1094, 1096, 1099, 1101, 1095, - 1099, 1090, 1102, 1100, 1097, 1096, 1100, 1102, 1103, 1101, - 1104, 1098, 1105, 1106, 1107, 1108, 1109, 1110, 1110, 1106, + 1053, 1046, 1056, 1049, 1055, 1058, 1048, 1050, 1058, 1060, + 1054, 1062, 1063, 1052, 1060, 1061, 1056, 1059, 1064, 1065, + 1061, 1063, 1066, 1064, 1065, 1068, 1069, 1062, 1073, 1070, + 1071, 1068, 1072, 1072, 1066, 1070, 1071, 1073, 1074, 1077, + 1075, 1078, 1069, 1075, 1076, 1076, 1079, 1080, 1081, 1082, + 1080, 1101, 1083, 1084, 1101, 1082, 1074, 1077, 1083, 1084, + 1078, 1081, 1085, 1086, 1087, 1089, 1079, 1085, 1086, 1088, + 1087, 1089, 1091, 1092, 1088, 1093, 1094, 1091, 1095, 1096, + 1096, 1097, 1094, 1095, 1098, 1099, 1100, 1103, 1105, 1102, + 1097, 1092, 1102, 1098, 1104, 1093, 1106, 1107, 1103, 1104, - 1107, 1109, 1104, 1111, 1112, 1113, 1103, 1114, 1115, 1116, - 1108, 1105, 1115, 1118, 1117, 1119, 1121, 1113, 1112, 1122, - 1122, 1123, 1111, 1117, 1126, 1114, 1124, 1116, 1125, 1123, - 1129, 1124, 1118, 1125, 1128, 1121, 1131, 1130, 1132, 1134, - 1119, 1131, 1133, 1133, 1126, 1129, 1135, 1132, 1128, 1130, - 1136, 1137, 1135, 1138, 1141, 1139, 1136, 1139, 1138, 1134, - 1140, 1142, 1144, 1145, 1143, 1140, 1146, 1137, 1141, 1143, - 1147, 1148, 1151, 1146, 1152, 1142, 1153, 1144, 1150, 1150, - 1155, 1154, 1145, 1156, 75, 1147, 1151, 1154, 1156, 1158, - 1148, 1153, 1152, 1158, 1159, 1159, 1160, 1156, 1162, 1156, + 1110, 1108, 1113, 1099, 1109, 1100, 1105, 1108, 1106, 1111, + 1109, 1112, 1112, 1114, 1111, 1110, 1107, 1115, 1116, 1117, + 1118, 1113, 1119, 1117, 1120, 1121, 1123, 1114, 1128, 1115, + 1126, 1119, 1124, 1124, 1125, 1126, 1116, 1130, 1118, 1127, + 1131, 1132, 1125, 1120, 1127, 1123, 1136, 1133, 1128, 1134, + 1121, 1130, 1133, 1132, 1137, 1131, 1135, 1135, 1134, 1138, + 1137, 1139, 1140, 1147, 1142, 1138, 1136, 1140, 1141, 1142, + 1141, 1143, 1144, 1145, 1146, 1149, 1148, 1139, 1145, 1150, + 1152, 1152, 1147, 1148, 1154, 1143, 1144, 1153, 1155, 1146, + 1149, 1156, 1157, 1165, 1158, 68, 1160, 1156, 1150, 1158, - 1155, 1160, 1156, 1161, 1161, 1162, 1163, 1164, 1165, 1167, - 1164, 1166, 1168, 1169, 1170, 74, 1171, 1168, 1167, 1172, - 1163, 1171, 1174, 1173, 1176, 1176, 1170, 1165, 1179, 1166, - 1177, 1178, 1169, 1172, 1173, 1177, 1178, 1180, 1182, 1181, - 1183, 1174, 1180, 1181, 1184, 1185, 1186, 1182, 1179, 1188, - 1187, 1189, 1190, 1191, 1192, 1183, 1188, 1196, 1186, 1184, - 1193, 1194, 1195, 1189, 1185, 1187, 1193, 1197, 1195, 1198, - 1199, 1190, 1192, 1200, 1191, 1202, 1194, 1196, 1198, 1201, - 1203, 1204, 1205, 1206, 1208, 1199, 1209, 1197, 1205, 1211, - 1208, 1201, 1200, 1210, 1202, 1212, 1204, 1211, 1213, 1214, + 1160, 1153, 1154, 1155, 1161, 1161, 1162, 1165, 1158, 1164, + 1158, 1162, 1157, 1158, 1163, 1163, 1164, 1166, 1167, 1169, + 1166, 1168, 1170, 1171, 1172, 1173, 1174, 1170, 1169, 1176, + 1173, 1181, 1175, 1178, 1178, 63, 1172, 1167, 1184, 1168, + 1174, 1179, 1171, 1175, 1180, 1182, 1179, 1184, 1176, 1180, + 1182, 1181, 1183, 1185, 1186, 1187, 1183, 1189, 1188, 1190, + 1192, 1188, 1193, 1191, 1194, 1195, 1190, 1198, 1185, 1186, + 1188, 1195, 1189, 1196, 1187, 1191, 1199, 1200, 1197, 1192, + 1201, 1202, 1194, 1193, 1197, 1203, 1200, 1198, 1196, 1204, + 1205, 1206, 1207, 1208, 1211, 1201, 1199, 1203, 1207, 1210, - 1215, 1209, 1217, 1206, 1214, 1203, 1218, 1210, 1281, 1219, - 1281, 1216, 1215, 1222, 1213, 1212, 1216, 1216, 1220, 1220, - 1218, 1217, 1219, 1221, 1221, 1223, 1222, 1224, 1221, 1225, - 1225, 1221, 1221, 1224, 1223, 1226, 1221, 1228, 1227, 1229, - 1226, 1232, 1221, 1228, 1229, 1230, 1221, 1227, 1231, 1231, - 1230, 1233, 1233, 1234, 1235, 1236, 1234, 1237, 1234, 1238, - 1239, 1240, 1232, 1237, 1241, 1242, 1240, 1245, 1238, 1243, - 1244, 1249, 1245, 1236, 1235, 1243, 1244, 1246, 1241, 1247, - 1239, 1246, 1248, 1242, 1260, 1249, 1255, 1248, 1247, 1250, - 1250, 1251, 1251, 1247, 1251, 1247, 1252, 1247, 1254, 1247, + 1202, 1214, 1212, 1213, 1215, 1210, 1206, 1216, 1204, 1211, + 1217, 1213, 1216, 1208, 1219, 1205, 1212, 1220, 1218, 1221, + 1215, 1214, 1217, 1218, 1218, 1222, 1222, 1224, 1225, 1229, + 1226, 1220, 1221, 1219, 1223, 1223, 1226, 1225, 1229, 1223, + 1224, 1228, 1223, 1223, 1227, 1227, 1228, 1223, 1230, 1234, + 1231, 1232, 1237, 1223, 1230, 1231, 1232, 1223, 1233, 1233, + 1235, 1235, 1236, 1238, 1240, 1236, 1241, 1236, 1239, 1243, + 1234, 1242, 1237, 1240, 1239, 1244, 1242, 1247, 1245, 1246, + 1249, 1238, 1247, 1243, 1245, 1246, 1241, 1248, 1251, 1249, + 1250, 1248, 1257, 1244, 1249, 1250, 1249, 1256, 1249, 1254, - 1256, 1255, 1254, 1257, 1258, 1259, 1260, 1252, 1261, 1258, - 1258, 1262, 1257, 1261, 1259, 1263, 1264, 1265, 1256, 1266, - 1267, 1268, 1268, 1269, 1263, 1262, 1267, 1270, 1272, 1271, - 1273, 1269, 1275, 1266, 1271, 1264, 1265, 1274, 1276, 1273, - 1277, 1270, 1272, 1279, 1274, 1277, 1278, 1278, 1280, 1280, - 1275, 1283, 1284, 1285, 1283, 1286, 1288, 1284, 1279, 1287, - 1287, 1289, 1289, 1276, 1286, 1290, 1290, 1292, 1291, 1293, - 1294, 1294, 1285, 1291, 1295, 1296, 1288, 1297, 1298, 1299, - 1297, 1300, 1301, 1303, 1306, 1299, 1300, 1302, 1292, 1302, - 1293, 1301, 1296, 1305, 1295, 1307, 1305, 1308, 1298, 1306, + 1249, 1256, 1251, 1252, 1252, 1253, 1253, 1257, 1253, 1258, + 1254, 1259, 1260, 1261, 1262, 1264, 1263, 1260, 1260, 1265, + 1259, 1263, 1261, 1266, 1267, 1268, 1269, 1258, 1265, 1264, + 1270, 1270, 1269, 1271, 1272, 1273, 1262, 1274, 1275, 1268, + 1273, 1271, 1266, 1267, 1277, 1276, 1278, 1275, 1272, 1279, + 1281, 1274, 1276, 1287, 1279, 1280, 1280, 1282, 1282, 1283, + 1285, 1283, 1277, 1285, 1286, 1281, 1288, 1289, 1289, 1286, + 1290, 1278, 1287, 1291, 1291, 1288, 1292, 1292, 1293, 1294, + 1295, 1296, 1299, 1293, 1297, 1297, 1298, 1301, 1300, 1302, + 1290, 1300, 1303, 1306, 1304, 1302, 1305, 1303, 1305, 1299, - 1307, 1303, 1309, 1311, 1310, 1313, 1312, 1309, 1311, 1312, - 1313, 1308, 1310, 1314, 1314, 1315, 1316, 1317, 1318, 1319, - 1315, 1321, 1322, 1317, 1323, 1318, 1324, 1321, 1322, 1323, - 1325, 1324, 1319, 1326, 1316, 1327, 1325, 1328, 1329, 1329, - 1330, 1332, 1326, 1333, 1335, 1334, 1332, 1336, 1328, 1337, - 1338, 1339, 1340, 1344, 1327, 1334, 1338, 1339, 1340, 1335, - 1330, 1333, 1342, 1343, 1345, 1347, 1346, 1336, 1342, 1348, - 1349, 1349, 1337, 1344, 1350, 1351, 1353, 1343, 1346, 1347, - 1352, 1353, 1355, 1343, 1345, 1354, 1354, 1348, 1356, 1358, - 1359, 1360, 1361, 1356, 1350, 1359, 1359, 1363, 1352, 1362, + 1294, 1295, 1296, 1304, 1309, 1308, 1298, 1301, 1308, 1310, + 1311, 1306, 1312, 1313, 1310, 1314, 1319, 1312, 1316, 1309, + 1314, 1313, 1315, 1316, 1311, 1315, 1317, 1317, 1318, 1320, + 1321, 1322, 1324, 1318, 1319, 1320, 1325, 1321, 1324, 1329, + 1326, 1327, 1325, 1328, 1322, 1326, 1327, 1330, 1329, 1328, + 1331, 1332, 1332, 1333, 1335, 1338, 1336, 1339, 1340, 1335, + 1347, 1331, 1341, 1342, 1348, 1343, 1330, 1349, 1341, 1342, + 1338, 1343, 1345, 1333, 1336, 1346, 1350, 1339, 1345, 1349, + 1347, 1340, 1351, 1353, 1348, 1352, 1352, 1354, 1355, 1346, + 1350, 1356, 1357, 1357, 1358, 1346, 1356, 1359, 1363, 1361, - 1351, 1361, 1364, 1365, 1367, 1355, 1369, 1362, 1358, 1360, - 1368, 1363, 1368, 1367, 1366, 1373, 1375, 1364, 1365, 1366, - 1369, 1365, 1366, 1371, 1372, 1374, 1373, 1376, 1372, 1371, - 1374, 1374, 1377, 1378, 1379, 1375, 1380, 1381, 1378, 1379, - 1382, 1383, 1385, 68, 1386, 1382, 1387, 1388, 1388, 1390, - 1377, 1389, 1391, 1376, 1380, 1389, 1385, 1381, 1393, 1392, - 1394, 1383, 1386, 1395, 1387, 1392, 1396, 1390, 1397, 1398, - 1393, 1391, 1402, 1399, 1403, 1400, 1406, 1395, 1399, 1394, - 1401, 1396, 1400, 1397, 1404, 1401, 1405, 1405, 1398, 1407, - 1402, 1406, 1408, 1404, 1410, 1403, 1409, 1409, 1407, 1411, + 1351, 58, 1359, 1353, 1362, 1364, 1355, 1365, 1366, 1362, + 1362, 1367, 1354, 1368, 1364, 1365, 1363, 1358, 1361, 1369, + 1370, 1371, 1366, 1371, 1369, 1372, 1367, 1369, 1368, 1370, + 1374, 1368, 1376, 1375, 1378, 1377, 1374, 1375, 1379, 1372, + 1377, 1377, 1380, 1376, 1381, 1382, 1384, 1383, 1386, 1381, + 1382, 1385, 1389, 1378, 1390, 1388, 1385, 1391, 1391, 1392, + 1380, 1393, 1394, 1392, 1379, 1383, 1384, 1395, 1386, 1388, + 1389, 1396, 1390, 1395, 1397, 1398, 57, 1399, 1400, 1393, + 1401, 1394, 1402, 1396, 1403, 1404, 1406, 1407, 1410, 1403, + 1397, 1399, 1404, 1400, 1398, 1401, 1408, 1405, 1409, 1409, - 1410, 1412, 1413, 1413, 1415, 1411, 1414, 1414, 1416, 1417, - 1415, 1418, 1408, 1419, 1420, 1412, 1418, 1421, 1428, 1419, - 1420, 1422, 1422, 1421, 1416, 1423, 1423, 1425, 1425, 1426, - 1417, 1427, 1429, 1426, 1430, 1431, 1428, 1434, 1432, 1435, - 1427, 1433, 1433, 1438, 1429, 1432, 1436, 1435, 1430, 1437, - 1431, 1436, 1441, 1439, 1443, 1440, 1444, 1434, 1439, 1439, - 1440, 1440, 1438, 1437, 1442, 1442, 1446, 1445, 1447, 1448, - 1449, 1446, 1441, 1443, 1450, 1444, 1445, 1451, 1452, 1453, - 1450, 1455, 1451, 1458, 1454, 1456, 1457, 1447, 1449, 1448, - 1454, 1456, 1457, 1459, 1460, 1461, 1462, 1463, 1452, 1469, + 1411, 1402, 1405, 1410, 1406, 1408, 1412, 1414, 1407, 1411, + 1413, 1413, 1415, 1414, 1416, 1417, 1417, 1419, 1415, 1418, + 1418, 1420, 1421, 1419, 1422, 1423, 1412, 1424, 1416, 1422, + 1425, 1423, 1432, 1424, 1426, 1426, 1425, 1420, 1427, 1427, + 1429, 1429, 1430, 1421, 1431, 1433, 1430, 1434, 1435, 1436, + 1432, 1437, 1437, 1431, 1438, 1440, 1436, 1433, 1439, 1441, + 1440, 1434, 1442, 1435, 1443, 1445, 1439, 1446, 1446, 1443, + 1443, 1444, 1447, 1441, 1438, 1448, 1444, 1444, 1449, 1450, + 1451, 1442, 1452, 1453, 1450, 1445, 1454, 1449, 1455, 1456, + 1457, 1447, 1454, 1455, 1448, 1459, 1462, 1458, 1460, 1451, - 1455, 1464, 1458, 1465, 1465, 1453, 1466, 1467, 1468, 1466, - 1462, 1469, 1459, 1460, 1461, 1475, 1464, 1474, 1463, 1470, - 1470, 1471, 1471, 1472, 1475, 1473, 1467, 1468, 1472, 1473, - 1474, 1476, 1477, 1481, 1477, 1479, 1480, 1482, 1477, 1483, - 1485, 1480, 1484, 1484, 1476, 1485, 1486, 1487, 1481, 1489, - 1488, 1477, 1486, 1479, 1489, 1483, 1490, 1482, 1492, 1493, - 1490, 1491, 1487, 1488, 1494, 1491, 1495, 1499, 1496, 1497, - 1497, 1501, 63, 1494, 1496, 1502, 1505, 1493, 1492, 1516, - 1502, 1503, 1503, 1504, 1511, 1499, 1495, 1507, 1507, 1504, - 1509, 1512, 1501, 1509, 1510, 1510, 1505, 1515, 1514, 1516, + 1461, 1453, 1452, 1458, 1460, 1463, 1461, 1464, 1465, 1456, + 1467, 1466, 52, 1468, 1459, 1462, 1457, 1469, 1469, 1470, + 1471, 1472, 1470, 1473, 1463, 1466, 1464, 1465, 1468, 1474, + 1474, 1467, 1475, 1475, 1477, 1473, 1476, 1478, 1477, 1471, + 1472, 1476, 1479, 1480, 1483, 1485, 1481, 1486, 1481, 1484, + 1478, 1479, 1481, 1487, 1484, 1490, 1480, 1488, 1488, 1489, + 1485, 1490, 1483, 1491, 1489, 1481, 1492, 1486, 1493, 1487, + 1494, 1495, 1496, 1493, 1494, 1495, 1497, 1498, 1491, 1492, + 1499, 1500, 1501, 1501, 1503, 1505, 1498, 1500, 1506, 1507, + 1507, 1508, 1496, 1506, 1497, 1509, 1515, 1508, 1511, 1511, - 1511, 1514, 1517, 1518, 1519, 1519, 1520, 1512, 1521, 1522, - 1523, 1517, 1524, 1525, 1525, 1523, 1526, 1527, 1515, 1528, - 1529, 1520, 1530, 1518, 1532, 1526, 1524, 1540, 1522, 1521, - 1531, 1531, 1533, 1535, 1528, 1527, 1534, 1538, 1532, 1536, - 1536, 1534, 1530, 1537, 1541, 1529, 1544, 1537, 1535, 1540, - 1533, 1539, 1539, 1542, 1543, 1545, 1548, 1538, 1543, 1548, - 1545, 1547, 1547, 1541, 1542, 1544, 1549, 1550, 1551, 1552, - 1554, 1553, 1550, 1556, 1555, 1557, 1557, 1558, 1563, 1549, - 1559, 1560, 1558, 1563, 1551, 1553, 1562, 1552, 1555, 1554, - 1554, 1561, 1561, 1564, 1565, 1562, 1565, 1566, 1556, 1567, + 1499, 1513, 1503, 1516, 1513, 1517, 1505, 1514, 1514, 1520, + 1519, 1521, 1515, 1519, 1522, 1509, 1523, 1524, 1524, 1516, + 1525, 1517, 1526, 1522, 1528, 1527, 1529, 1530, 1530, 1528, + 1520, 1521, 1531, 1532, 1533, 1525, 1523, 1534, 1535, 1537, + 1529, 1531, 1538, 1526, 1527, 1536, 1536, 1539, 1540, 1533, + 1543, 1532, 1539, 1537, 1541, 1541, 1545, 1542, 1535, 1556, + 1538, 1542, 1534, 1540, 1544, 1544, 1546, 1548, 1547, 1549, + 1543, 1548, 1550, 1552, 1552, 1556, 1554, 1550, 1545, 1547, + 1553, 1555, 1557, 1553, 1558, 1546, 1555, 1559, 1549, 1554, + 1560, 1561, 1562, 1562, 1563, 1564, 1567, 1565, 1558, 1563, - 1559, 1560, 1566, 1568, 1569, 1567, 1571, 1572, 1572, 1573, - 1569, 1574, 1577, 1564, 1576, 1578, 1578, 1574, 1580, 1576, - 1571, 1579, 1579, 1568, 1581, 1582, 1583, 1585, 1573, 1583, - 1584, 1584, 1580, 1587, 1586, 1595, 1577, 1589, 1588, 58, - 1582, 1588, 1581, 1589, 1588, 1585, 1586, 1590, 1591, 1593, - 1594, 1591, 1590, 1587, 1596, 1594, 1588, 1596, 1593, 1598, - 1595, 1597, 1597, 1599, 1603, 1598, 1600, 1591, 1606, 1599, - 1603, 1600, 1601, 1601, 1602, 1602, 1604, 1605, 1607, 1608, - 1609, 1604, 1610, 1609, 1612, 1611, 1606, 1613, 1610, 1612, - 1605, 1611, 1614, 1613, 1618, 1615, 1619, 1607, 1617, 1608, + 1557, 1566, 1566, 1568, 1560, 1567, 1559, 1559, 1568, 1569, + 1570, 1573, 1570, 1571, 1572, 1564, 1561, 1565, 1571, 1574, + 1572, 1576, 1577, 1577, 1578, 1574, 1579, 1582, 1581, 1569, + 1585, 1573, 1579, 1581, 1586, 1576, 1583, 1583, 1584, 1584, + 1587, 1590, 1588, 1578, 1585, 1588, 1589, 1589, 1591, 1592, + 1593, 1582, 1586, 1593, 1600, 1587, 1593, 1594, 1598, 1590, + 1591, 1595, 1596, 1594, 47, 1596, 1595, 1598, 1593, 1592, + 1599, 1601, 1602, 1602, 1601, 1599, 1603, 1604, 1608, 1600, + 1605, 1596, 1603, 1604, 1608, 1605, 1606, 1606, 1607, 1607, + 1609, 1610, 1611, 1612, 1613, 1609, 1614, 1615, 1620, 1614, - 1615, 1616, 1616, 1617, 1620, 1621, 1622, 1623, 1624, 1625, - 1626, 1629, 1618, 1627, 1636, 1614, 1619, 1627, 1638, 1632, - 1622, 1623, 1624, 1620, 1628, 1621, 1628, 1625, 1633, 1630, - 1629, 1632, 1634, 1635, 1636, 1626, 1630, 1637, 1638, 1635, - 1633, 1639, 1640, 1642, 1642, 1634, 1643, 1644, 1645, 1646, - 1646, 1648, 1644, 1637, 1647, 1639, 1649, 1650, 1651, 1652, - 1645, 1653, 1655, 1640, 1654, 1648, 1643, 1651, 1653, 1647, - 1657, 1659, 57, 1654, 1652, 1650, 1654, 1663, 1655, 1660, - 1649, 1664, 1660, 1661, 1661, 1657, 1662, 1662, 1665, 1663, - 1657, 1665, 1666, 1666, 1667, 1668, 1659, 1669, 1670, 1664, + 1616, 1617, 1625, 1615, 1610, 1619, 1616, 1617, 1618, 1624, + 1611, 1619, 1612, 1618, 1613, 1621, 1622, 1622, 1623, 1626, + 1621, 1620, 1625, 1623, 1627, 1628, 1629, 1624, 1630, 1631, + 1632, 1633, 1634, 1635, 1634, 1633, 1636, 1638, 1626, 1628, + 1629, 1639, 1630, 1636, 1627, 1640, 1642, 1631, 1641, 1638, + 1644, 1643, 1635, 1639, 1641, 1632, 1646, 1645, 1640, 1648, + 1648, 1649, 1651, 1650, 1652, 1652, 1642, 1643, 1650, 1653, + 1644, 1645, 1654, 1655, 1651, 1656, 1657, 1646, 18, 1658, + 1659, 1649, 1661, 1660, 1653, 1657, 1654, 1659, 1663, 1665, + 1667, 1667, 1660, 1656, 1658, 1660, 1666, 1655, 1661, 1666, - 1671, 1670, 1669, 1672, 1673, 1671, 1674, 1667, 1675, 1676, - 1677, 1678, 1679, 1679, 1668, 1674, 1680, 1678, 1676, 1677, - 1673, 1676, 1672, 1682, 1681, 1683, 1684, 1675, 1685, 1690, - 1686, 1687, 1691, 1685, 1685, 1686, 1680, 1681, 1694, 1683, - 1693, 1682, 1684, 1687, 1692, 1692, 1695, 1694, 1696, 1696, - 1691, 1695, 1697, 1698, 1690, 1699, 1693, 1700, 1698, 1701, - 1702, 1697, 1704, 1696, 1697, 1702, 1702, 1705, 1706, 1707, - 1709, 1710, 1710, 1699, 1707, 1708, 1704, 1701, 1700, 1711, - 1713, 1708, 1705, 1717, 1712, 1711, 1714, 1715, 1709, 1712, - 1706, 1718, 1714, 1715, 1713, 1719, 1720, 1721, 1722, 1724, + 1668, 1668, 1670, 1663, 1669, 1673, 1671, 1674, 1663, 1671, + 1672, 1672, 1675, 1678, 1665, 1679, 1669, 1675, 1673, 1676, + 1670, 1680, 1676, 1677, 1681, 1682, 1674, 1683, 1677, 1684, + 1680, 1679, 1678, 1686, 1682, 1684, 1683, 1682, 1685, 1685, + 1688, 1687, 1689, 1681, 1690, 1691, 1696, 1692, 1697, 1693, + 1691, 1691, 1692, 1686, 1687, 1700, 1689, 1699, 1688, 1706, + 1690, 1693, 1698, 1698, 1700, 1701, 1697, 1702, 1702, 1703, + 1701, 1696, 1704, 1699, 1705, 1707, 1710, 1704, 1703, 1708, + 1706, 1703, 1702, 1711, 1708, 1708, 1712, 1715, 1719, 1713, + 1710, 1714, 1705, 1707, 1713, 1716, 1716, 1714, 1711, 1718, - 1721, 1719, 1726, 1717, 1722, 1718, 1721, 1724, 1727, 1720, - 1728, 1729, 1731, 1730, 1732, 1733, 1729, 1734, 1728, 1735, - 1737, 1726, 1730, 1732, 1739, 1731, 1737, 1727, 1733, 1736, - 1736, 1734, 1738, 1735, 1740, 1740, 1741, 1739, 1738, 1742, - 1743, 1744, 1744, 1746, 1747, 1745, 1748, 1749, 1752, 1746, - 1753, 1736, 1751, 1751, 1753, 1754, 1741, 1742, 1745, 1743, - 1754, 1755, 1748, 1759, 1756, 1749, 1747, 1757, 1752, 1756, - 1758, 1761, 1757, 1763, 1762, 1764, 1763, 1765, 1767, 1758, - 1769, 1755, 1761, 1762, 1766, 1766, 1759, 1764, 1768, 1770, - 1770, 1771, 1765, 1776, 1772, 1773, 1774, 1767, 1777, 1769, + 1717, 1720, 1719, 1721, 1718, 1715, 1717, 1720, 1712, 1721, + 1723, 1724, 1725, 1726, 1727, 1728, 1730, 1727, 1725, 1732, + 1733, 1728, 1734, 1727, 1730, 1724, 1726, 1735, 1736, 1738, + 1723, 1737, 1740, 1736, 1739, 1735, 1741, 1742, 1732, 1733, + 1737, 1734, 1738, 1739, 1746, 1740, 1743, 1743, 1744, 1745, + 1741, 1742, 1747, 1747, 1744, 1745, 1748, 1746, 1752, 1749, + 1750, 1751, 1751, 1753, 1754, 1755, 1756, 1759, 1743, 1753, + 1760, 1752, 1758, 1758, 1760, 1761, 1748, 1749, 1762, 1750, + 1761, 1755, 1765, 1763, 1756, 1764, 1754, 1759, 1763, 1766, + 1764, 1765, 1768, 1769, 1770, 1771, 1772, 1770, 1762, 1773, - 1768, 1772, 1779, 1778, 1780, 1771, 1786, 1773, 1774, 1778, - 1781, 1786, 1776, 1791, 1779, 1791, 1781, 1793, 1777, 1782, - 1782, 1783, 1780, 1787, 1783, 1784, 1784, 1788, 1789, 1789, - 1790, 1792, 1787, 1788, 1792, 1794, 1795, 1793, 1796, 1797, - 1798, 1799, 1790, 1800, 1797, 1798, 1801, 1802, 1804, 1803, - 1799, 1807, 1802, 1810, 1795, 1800, 1796, 1794, 1803, 1806, - 1805, 1801, 1808, 1808, 1806, 1805, 1807, 1809, 1804, 1812, - 1813, 1803, 1805, 1809, 1810, 1814, 1815, 1816, 1817, 1816, - 1818, 1818, 1819, 1819, 1820, 1820, 1821, 1824, 1812, 1813, - 1825, 1814, 1817, 1835, 1817, 1838, 1815, 1822, 1822, 1823, + 1773, 1774, 1769, 1768, 1775, 1776, 1780, 1771, 1777, 1777, + 1779, 1772, 1766, 1778, 1781, 1783, 1775, 1779, 1780, 1784, + 1774, 1786, 1785, 1787, 1776, 1788, 1781, 1778, 1785, 1789, + 1789, 1788, 1790, 1786, 1783, 1790, 1791, 1791, 1793, 1784, + 1794, 1787, 1795, 1793, 1796, 1796, 1797, 1800, 1795, 1794, + 1798, 1799, 1798, 1801, 1799, 1802, 1803, 1804, 1797, 1805, + 1806, 1808, 1804, 1809, 1805, 1807, 1811, 1800, 1809, 1806, + 1810, 17, 1814, 1802, 1803, 1801, 1808, 1807, 1812, 1810, + 1813, 1815, 1815, 1812, 1817, 1813, 1811, 1814, 1816, 1819, + 1812, 1820, 1810, 1821, 1816, 1822, 1823, 1824, 1823, 1825, - 1823, 1826, 1826, 1827, 1828, 1832, 1821, 1827, 1824, 1829, - 1828, 1825, 1829, 1831, 1833, 1838, 1834, 1841, 1835, 1831, - 1833, 1834, 1836, 1832, 1839, 1836, 1837, 1837, 1842, 1839, - 1840, 1840, 1841, 1843, 1844, 1845, 1845, 1846, 1843, 1844, - 1847, 1848, 1846, 1849, 1850, 1851, 1847, 1853, 52, 1842, - 1852, 1857, 1855, 1848, 1848, 1848, 1852, 1855, 1855, 1856, - 1848, 1859, 1850, 1849, 1860, 1851, 1857, 1853, 1858, 1861, - 1858, 1862, 1859, 1856, 1863, 1861, 1864, 1865, 1865, 1860, - 1862, 1866, 1867, 1867, 1868, 1872, 1869, 1870, 1870, 1871, - 1871, 1875, 1875, 1876, 1863, 1880, 1881, 1864, 1882, 1884, + 1825, 1826, 1826, 1827, 1827, 1817, 1828, 1831, 1819, 1821, + 1820, 1824, 1832, 1824, 1833, 1822, 1829, 1829, 1830, 1830, + 1834, 1834, 1837, 1835, 1836, 1837, 1828, 1835, 1831, 1840, + 1836, 1839, 1841, 1832, 1842, 1833, 1843, 1839, 1841, 1842, + 1844, 1845, 1845, 1844, 1846, 1847, 1850, 1840, 1848, 1848, + 1847, 1849, 1851, 1852, 1853, 1853, 1855, 1851, 1852, 1856, + 1854, 1843, 1855, 1857, 1846, 1854, 1849, 1850, 1858, 1859, + 1860, 1856, 1856, 1856, 1861, 1863, 1860, 1864, 1856, 1867, + 1863, 1863, 1865, 1857, 1868, 1866, 1858, 1866, 1871, 1859, + 1867, 1864, 1869, 1870, 1861, 1872, 1874, 1865, 1869, 1868, - 1877, 1879, 1881, 1888, 1868, 1872, 1885, 1866, 1869, 1877, - 1879, 1883, 1883, 1890, 1882, 1886, 1880, 1887, 1876, 1891, - 1884, 1885, 1886, 1889, 1889, 1893, 1887, 1894, 1895, 1888, - 1893, 1896, 1900, 1894, 1897, 1891, 1901, 1904, 1896, 1890, - 1897, 1898, 1901, 1898, 1902, 1902, 1904, 1903, 1895, 1905, - 1907, 1900, 1903, 1906, 1908, 1909, 1910, 1908, 1911, 1911, - 1912, 1913, 1907, 1914, 1915, 1918, 1912, 1913, 1922, 1905, - 1916, 1919, 1906, 1909, 1916, 1920, 1921, 1921, 1925, 1915, - 1920, 1923, 1910, 1914, 1926, 1918, 1934, 1922, 1926, 1928, - 1916, 1927, 1927, 1919, 1929, 1928, 1923, 1925, 1930, 1930, + 1873, 1873, 1870, 1875, 1875, 1876, 1877, 1880, 1871, 1878, + 1878, 1879, 1879, 1883, 1883, 1884, 1872, 1885, 1888, 1890, + 1887, 1892, 1874, 1893, 1889, 1876, 1885, 1880, 1877, 1887, + 1889, 1891, 1891, 1896, 1894, 1890, 1895, 1898, 1893, 1888, + 1884, 1894, 1892, 1897, 1897, 1895, 1899, 1901, 1902, 1903, + 1904, 1906, 1901, 1906, 1902, 1905, 1908, 1904, 1909, 1896, + 1913, 1905, 1899, 1898, 1909, 1910, 1910, 1911, 1912, 1903, + 1914, 1915, 1911, 1916, 1917, 1908, 1916, 1912, 1918, 1920, + 1913, 1919, 1919, 1915, 1921, 1920, 1922, 1923, 1926, 1914, + 1921, 1924, 1917, 1927, 1928, 1924, 1929, 1929, 1930, 1928, - 1931, 1932, 1935, 1929, 1931, 1933, 1933, 1934, 1936, 1937, - 1938, 1939, 1932, 1940, 1937, 1941, 1935, 1932, 1943, 1940, - 1942, 1944, 1947, 1943, 1945, 1945, 1947, 1936, 1946, 1946, - 1938, 1939, 1949, 1941, 1944, 1942, 1950, 1951, 1952, 1952, - 1955, 1949, 1954, 1954, 1956, 1955, 1955, 1950, 1958, 1959, - 1956, 1960, 1950, 1961, 1958, 1962, 1960, 1951, 1964, 1965, - 1966, 1962, 1968, 1965, 1970, 1961, 1967, 1967, 1969, 1973, - 1964, 1971, 1966, 1974, 1969, 1959, 1975, 1971, 1972, 1972, - 1976, 1975, 1978, 1979, 1980, 1986, 1970, 1968, 1973, 1980, - 1983, 1983, 1976, 1974, 1978, 1982, 1984, 1984, 1982, 1985, + 1933, 1931, 1923, 1934, 1918, 1937, 1922, 1934, 1926, 1935, + 1935, 1924, 1936, 1940, 1937, 1927, 1931, 1930, 1936, 1933, + 1938, 1938, 1939, 1942, 1940, 1943, 1939, 1941, 1941, 1940, + 1944, 1945, 1946, 1947, 1948, 1949, 1945, 1950, 1952, 1943, + 2056, 1949, 1951, 1952, 1942, 1953, 1954, 1954, 2056, 1944, + 1955, 1955, 1946, 1947, 1948, 1950, 1956, 1951, 1953, 1958, + 1956, 1959, 1960, 1961, 1961, 1963, 1963, 1965, 1958, 1964, + 1967, 1968, 1959, 1965, 1964, 1964, 1967, 1959, 1969, 1970, + 1971, 1973, 1960, 1969, 1974, 1977, 1971, 1975, 1974, 1976, + 1976, 1970, 1978, 1973, 1979, 1980, 1982, 1968, 1978, 1975, - 1985, 1987, 1979, 1988, 1990, 1986, 1989, 1987, 1991, 1988, - 1990, 1989, 1995, 1993, 1996, 1995, 1999, 1991, 1993, 1997, - 1997, 2000, 2001, 2002, 2002, 2003, 1996, 2001, 1999, 2006, - 2004, 2005, 2006, 2000, 2003, 2004, 2005, 2007, 2007, 2008, - 2009, 2012, 2010, 2011, 2014, 2012, 2013, 2015, 2016, 2009, - 2014, 2013, 2017, 2018, 2020, 2020, 2021, 2016, 2023, 2008, - 2010, 2027, 2011, 2022, 2025, 2015, 2020, 2018, 2024, 2024, - 2017, 2026, 2022, 2025, 2021, 2028, 2029, 2035, 2023, 2036, - 2028, 2038, 2027, 2026, 2032, 2032, 2039, 2034, 2040, 2029, - 2034, 2041, 2044, 2035, 2040, 2036, 2038, 2042, 2042, 2043, + 1983, 1980, 1981, 1981, 1984, 1985, 1987, 1988, 1989, 1984, + 1977, 1991, 1995, 1989, 1991, 1982, 1979, 1985, 1987, 1996, + 1983, 1992, 1992, 1993, 1993, 1996, 1988, 1994, 1994, 1997, + 0, 1998, 1995, 1999, 2000, 1997, 1998, 2002, 2004, 1999, + 2005, 2004, 2002, 2000, 2006, 2006, 2008, 2009, 2010, 2011, + 2011, 2012, 2005, 2010, 2016, 2016, 2013, 2014, 2008, 2009, + 2012, 2013, 2014, 2015, 2017, 2018, 2015, 2019, 2020, 2021, + 2022, 2023, 2024, 2021, 2018, 2022, 2026, 2023, 2027, 2025, + 2030, 2029, 2029, 2032, 2017, 2019, 2031, 2020, 2025, 2035, + 2024, 2034, 2027, 2029, 2026, 2031, 2033, 2033, 2030, 2036, - 2039, 2043, 2045, 2045, 2046, 2048, 2048, 2051, 2041, 2052, - 2044, 2053, 2046, 2049, 2049, 2052, 2055, 2053, 2054, 2056, - 2057, 2058, 2058, 2055, 2059, 2060, 2061, 2062, 2063, 2065, - 2051, 2067, 2054, 2059, 2066, 2064, 2069, 2067, 2061, 2062, - 2057, 2056, 2070, 2063, 2073, 2071, 2060, 2064, 2074, 2066, - 2067, 2072, 2072, 2077, 2076, 2065, 2069, 2071, 2075, 2076, - 2081, 2075, 2073, 2087, 2079, 2070, 2082, 2083, 2074, 2079, - 2080, 2082, 2080, 2077, 2083, 2085, 2088, 2089, 2081, 2091, - 2090, 2087, 2090, 2095, 2085, 2088, 2092, 2097, 2094, 2089, - 2094, 2098, 2092, 2096, 2096, 2100, 2098, 2095, 2091, 2099, + 2034, 2035, 2037, 2032, 2038, 2041, 2041, 2037, 2043, 2044, + 2045, 2043, 2046, 2049, 2048, 2050, 2051, 2038, 2052, 2052, + 2036, 2050, 2053, 2054, 2053, 2044, 2045, 2049, 2046, 2048, + 2055, 2055, 2061, 2051, 2058, 2058, 2059, 2059, 2062, 2063, + 2064, 2054, 2065, 2066, 2062, 2063, 2067, 2068, 2068, 2065, + 2069, 2070, 2071, 2075, 2064, 2061, 2072, 2074, 2073, 2069, + 2076, 2077, 2079, 2080, 2071, 2066, 2067, 2077, 2072, 2074, + 2083, 2081, 2070, 2073, 2084, 2076, 2082, 2082, 2085, 2075, + 2077, 2085, 2079, 2081, 2086, 2087, 2080, 2089, 2083, 2086, + 2091, 2090, 2089, 2090, 2084, 2092, 2093, 2095, 2097, 2099, - 2100, 2099, 2101, 2102, 2103, 2104, 2106, 2101, 2107, 2105, - 2108, 2104, 2111, 2097, 2105, 2108, 2108, 2109, 2112, 2106, - 2107, 2102, 2113, 2113, 2103, 2109, 2114, 2114, 2115, 2116, - 2117, 2111, 2112, 2118, 2120, 2119, 2117, 2119, 2118, 2121, - 2122, 2122, 2123, 2115, 2124, 2124, 2128, 2121, 2126, 2116, - 2125, 2125, 2120, 2127, 2123, 2121, 2130, 2126, 2127, 2131, - 2132, 2131, 2134, 2136, 2128, 2130, 2133, 2135, 2130, 2143, - 2138, 2133, 2133, 2139, 2134, 2136, 2135, 2142, 2139, 2140, - 2146, 2132, 2138, 2144, 2140, 2145, 2145, 2147, 2148, 2143, - 2142, 2149, 2144, 2150, 2151, 2152, 2154, 2156, 2146, 2155, + 2092, 2098, 2100, 2093, 2100, 2087, 2095, 2101, 2091, 2102, + 2098, 2099, 2104, 2105, 2104, 2102, 2097, 2106, 2106, 2107, + 2108, 2109, 2112, 2109, 2110, 2108, 2101, 2105, 2111, 2110, + 2113, 2114, 2117, 2111, 2115, 2116, 2118, 2114, 2119, 2115, + 2112, 2118, 2118, 2121, 2117, 2107, 2119, 2122, 2116, 2125, + 2113, 2123, 2123, 2124, 2124, 2126, 2129, 2127, 2129, 2130, + 2128, 2122, 2121, 2127, 2125, 2128, 2131, 2132, 2132, 2133, + 2134, 2134, 2135, 2135, 2131, 2126, 2136, 2130, 2137, 2138, + 2140, 2133, 2131, 2137, 2141, 2136, 2141, 2142, 2143, 2140, + 2144, 2145, 2140, 2143, 2143, 2146, 2149, 2138, 2148, 2150, - 2152, 2157, 2165, 2159, 2148, 2147, 2157, 2150, 2154, 2151, - 2158, 2155, 2159, 2162, 2164, 2158, 2149, 2156, 2166, 2162, - 2164, 2167, 2168, 2170, 2170, 2165, 2169, 2171, 2172, 2172, - 2173, 2174, 2162, 2166, 2175, 2169, 2171, 2176, 2175, 2167, - 2177, 2179, 2176, 2180, 2181, 2187, 2182, 2168, 2173, 2180, - 2174, 2182, 2182, 2177, 2185, 2183, 2184, 2185, 2196, 2186, - 2179, 2183, 2184, 2190, 2190, 2187, 2181, 2186, 2191, 2191, - 2192, 2193, 2193, 2194, 2194, 2195, 2196, 2198, 2197, 2192, - 2199, 2199, 2198, 2191, 2197, 2200, 2200, 2195, 2201, 2202, - 2205, 2207, 2204, 2201, 2191, 2202, 2204, 2206, 2209, 2210, + 2145, 2149, 2144, 2152, 2150, 2153, 2154, 2146, 2142, 2156, + 2148, 2155, 2155, 2157, 2158, 2154, 2152, 2159, 2160, 2163, + 2161, 2162, 2167, 2165, 2163, 2153, 2166, 2156, 2170, 2179, + 2176, 2157, 2158, 2159, 2161, 2165, 2162, 2170, 2166, 2168, + 2169, 2173, 2167, 2160, 2168, 2169, 2175, 2173, 2177, 2178, + 2180, 2184, 2175, 2176, 2179, 2181, 2181, 2182, 2185, 2180, + 2173, 2183, 2183, 2177, 2186, 2187, 2182, 2178, 2186, 2184, + 2187, 2188, 2190, 2191, 2192, 2193, 2194, 2185, 2197, 2191, + 2193, 2193, 2194, 2195, 2188, 2196, 2197, 2198, 2196, 2195, + 2203, 2190, 2201, 2201, 2202, 2202, 2192, 2204, 2204, 2203, - 2212, 2206, 2211, 2213, 2210, 2215, 2214, 2216, 2213, 2217, - 2205, 2207, 2218, 2221, 2217, 2212, 2219, 2219, 2220, 2223, - 2224, 2215, 2220, 2209, 2214, 2211, 2222, 2216, 2221, 2225, - 2226, 2222, 2227, 2228, 2218, 2229, 2232, 2227, 2224, 2230, - 2230, 2225, 2233, 2234, 2232, 2223, 2228, 2235, 2236, 2226, - 2237, 2239, 2238, 2229, 2240, 2245, 2243, 2249, 2241, 2247, - 2246, 2233, 2234, 2239, 2241, 2247, 2250, 2250, 2245, 2237, - 2235, 2243, 2236, 2238, 2246, 2240, 2248, 2249, 2248, 2251, - 2252, 2253, 2254, 2252, 2251, 2255, 2256, 2256, 2257, 2257, - 2258, 2260, 2258, 47, 2253, 2261, 2254, 2269, 2255, 2259, + 2205, 2205, 2206, 2207, 2208, 2216, 2209, 2198, 2218, 2202, + 2208, 2209, 2210, 2210, 2206, 2211, 2211, 2212, 2213, 2215, + 2202, 2207, 2212, 2215, 2213, 2216, 2217, 2220, 2218, 2221, + 2217, 2222, 2223, 2224, 2221, 2225, 2227, 2228, 2224, 2226, + 2229, 2231, 2228, 2230, 2230, 2231, 2232, 2223, 2234, 2235, + 2240, 2237, 2220, 2225, 2222, 2226, 2227, 2236, 2233, 2238, + 2239, 2232, 2229, 2233, 2238, 2241, 2241, 2235, 2240, 2236, + 2237, 2243, 2244, 2239, 2234, 2245, 2246, 2247, 2248, 2243, + 2249, 2251, 2250, 2252, 2253, 2257, 2255, 2260, 2261, 2260, + 2253, 2244, 2258, 2251, 2245, 2246, 2262, 2262, 2257, 2249, - 2259, 2262, 2262, 2263, 2264, 2264, 2260, 2270, 2261, 2265, - 2265, 2266, 2263, 2268, 2271, 2263, 2266, 2269, 2268, 2272, - 2272, 2273, 2273, 2274, 2275, 2275, 2271, 2270, 2276, 2277, - 2277, 2279, 2278, 2280, 2280, 2282, 2279, 2281, 2281, 2283, - 2284, 2285, 2274, 2286, 2290, 2288, 2276, 2278, 2283, 2282, - 2288, 2289, 2289, 2291, 2291, 2285, 2292, 2284, 2293, 2295, - 2295, 2297, 2286, 2290, 2293, 2294, 2296, 2296, 2294, 2298, - 2299, 2301, 2299, 2302, 2292, 2295, 2303, 2303, 2305, 2306, - 2297, 2307, 2310, 2308, 2298, 2311, 2301, 2308, 2309, 2309, - 2311, 2312, 2302, 2313, 2315, 2315, 2307, 2316, 2305, 2318, + 2247, 2255, 2248, 2250, 2252, 2259, 2258, 2263, 2261, 2265, + 2264, 2259, 2263, 2264, 2266, 2272, 2267, 2268, 2268, 2269, + 2269, 2270, 2265, 2270, 2271, 2271, 2273, 2281, 2266, 2267, + 2272, 2274, 2274, 2275, 2276, 2276, 2277, 2277, 2278, 2273, + 2282, 2280, 2275, 2278, 2283, 2275, 2280, 2281, 2284, 2284, + 2285, 2285, 2286, 2287, 2287, 2288, 2283, 2289, 2289, 2290, + 2282, 2291, 2292, 2292, 2293, 2293, 2291, 2294, 2295, 2296, + 2297, 2286, 2298, 2288, 2290, 2300, 2302, 2295, 2301, 2301, + 2300, 2294, 2303, 2303, 2297, 2304, 2296, 2305, 2309, 2306, + 2310, 2298, 2306, 2305, 2313, 2302, 2307, 2307, 2308, 2308, - 2317, 2310, 2306, 2319, 2320, 2321, 2312, 2317, 2313, 2322, - 2322, 2323, 2324, 2318, 2324, 2325, 2328, 2316, 2325, 2327, - 2323, 2319, 2320, 2331, 2329, 2327, 2332, 2330, 2328, 2329, - 2333, 2321, 2330, 2325, 2335, 2325, 2334, 2337, 2338, 2332, - 2339, 2334, 2337, 2338, 2340, 2342, 2341, 2343, 2331, 2345, - 2340, 2333, 2341, 2344, 2345, 2339, 2346, 2347, 2348, 2344, - 2335, 2346, 2343, 2350, 2349, 2351, 2342, 2349, 2352, 2353, - 2354, 2348, 2350, 2355, 2351, 2356, 2357, 2352, 2353, 2355, - 2357, 2356, 2347, 2359, 2354, 2361, 2362, 2363, 2363, 2366, - 2364, 2365, 2365, 2367, 2367, 2362, 2364, 2368, 2366, 2369, + 2311, 2314, 2311, 2304, 2317, 2310, 2318, 2309, 2319, 2313, + 2315, 2315, 2307, 2320, 2321, 2321, 2322, 2320, 2324, 2325, + 2314, 2323, 2328, 2319, 2317, 2329, 2323, 2327, 2327, 2318, + 2330, 2331, 2329, 2324, 2325, 2322, 2332, 2333, 2334, 2334, + 2339, 2335, 2328, 2336, 2330, 2336, 2339, 2340, 2337, 2331, + 2335, 2337, 2341, 2342, 2332, 2343, 2344, 2341, 2342, 2340, + 2345, 2347, 2346, 2333, 2352, 2349, 2337, 2346, 2337, 2344, + 2349, 2350, 2351, 2355, 2356, 2360, 2350, 2351, 2353, 2352, + 2343, 2345, 2354, 2361, 2353, 2357, 2372, 2347, 2354, 2356, + 2358, 2357, 2359, 2363, 2355, 2358, 2361, 2359, 2362, 2364, - 2365, 2371, 2368, 2359, 2372, 2361, 2373, 2373, 2374, 2375, - 2377, 2378, 2380, 2379, 2384, 2386, 2386, 2371, 2375, 2369, - 2372, 2369, 2377, 2374, 2380, 2383, 2382, 2378, 2379, 2382, - 2383, 2385, 2387, 2387, 2384, 2389, 2389, 2390, 2396, 2391, - 2390, 2392, 2393, 2385, 2391, 2394, 2398, 2392, 2393, 2395, - 2395, 2399, 2396, 2400, 2394, 2397, 2397, 2402, 2398, 2401, - 2401, 2403, 2404, 2402, 2406, 2399, 2407, 2404, 2406, 2407, - 2408, 2408, 2400, 2409, 2410, 2403, 2411, 2412, 2409, 2415, - 2413, 2414, 2414, 2410, 2413, 2411, 2417, 2418, 2419, 2420, - 2421, 2417, 2415, 2422, 2421, 2423, 2424, 2412, 2425, 2427, + 2360, 2362, 2363, 2365, 2366, 2367, 2372, 2370, 2364, 2368, + 2369, 2370, 2365, 2366, 2374, 2368, 2369, 2375, 2377, 2367, + 2376, 2376, 2378, 2378, 2377, 2381, 2375, 2379, 2380, 2380, + 2381, 2378, 2382, 2384, 2374, 2385, 2379, 2386, 2386, 2388, + 2387, 2390, 2391, 2395, 2392, 2393, 2395, 2397, 2388, 2384, + 2398, 2385, 2382, 2390, 2382, 2387, 2396, 2393, 2391, 2392, + 0, 2396, 2398, 2399, 2399, 2400, 2400, 2397, 2402, 2402, + 2403, 2404, 2405, 2403, 2406, 2407, 2404, 2409, 2405, 2412, + 2406, 2408, 2408, 2411, 2407, 2410, 2410, 2413, 2414, 2414, + 2415, 2409, 2417, 2412, 2416, 2411, 2415, 2417, 2419, 2425, - 2423, 2428, 2424, 2420, 2425, 2426, 2426, 2418, 2419, 2429, - 2430, 2431, 2434, 2422, 2435, 2430, 2436, 2427, 2432, 2432, - 2428, 2436, 2441, 2437, 2434, 2438, 2443, 2446, 2429, 2437, - 2435, 2441, 2431, 2438, 2439, 2452, 2439, 2444, 2444, 2445, - 2443, 2450, 2445, 2447, 2447, 2450, 2451, 2452, 2453, 2453, - 2454, 2459, 2451, 2446, 2457, 2457, 2461, 2462, 2465, 2454, - 2466, 2467, 2468, 2465, 2470, 2470, 2469, 2468, 2476, 2459, - 2461, 2469, 2474, 2462, 2472, 2472, 2475, 2475, 2474, 2477, - 2478, 2480, 2467, 2482, 2476, 2478, 2466, 2481, 2484, 2484, - 2481, 2483, 2487, 2486, 2488, 2482, 2489, 2493, 2487, 2494, + 2420, 2423, 2419, 2420, 2421, 2421, 2413, 2422, 2416, 2424, + 2423, 2426, 2422, 2427, 2427, 2426, 2428, 2430, 2424, 2425, + 2431, 2432, 2430, 2433, 2434, 2436, 2435, 2437, 2438, 2428, + 2435, 2439, 2437, 2441, 2438, 2440, 2440, 2439, 2434, 2442, + 2431, 2432, 2443, 2433, 2444, 2436, 2445, 2446, 2446, 2444, + 2448, 2441, 2449, 2453, 2450, 2453, 2452, 2451, 2442, 2450, + 2455, 2443, 2448, 2451, 2452, 2457, 2460, 2445, 2449, 2455, + 2458, 2458, 2459, 2461, 2461, 2459, 2464, 2465, 2466, 2457, + 2464, 2467, 2467, 2465, 2468, 2471, 2471, 2473, 2475, 2479, + 2466, 2476, 2460, 2468, 2479, 2480, 2481, 2490, 2482, 2483, - 2480, 2477, 2486, 2483, 2491, 2491, 2492, 2496, 2496, 2492, - 2498, 2489, 2488, 2497, 2497, 2498, 2493, 2494, 2499, 2500, - 2501, 2502, 2505, 2502, 2503, 2501, 2504, 2506, 2500, 2507, - 2508, 2546, 2506, 2546, 2505, 18, 2499, 2509, 2503, 2515, - 2504, 2514, 2509, 2510, 2510, 2511, 2511, 2512, 2512, 2507, - 2508, 2513, 2513, 2514, 2516, 2517, 2517, 2515, 2519, 2516, - 2518, 2518, 2520, 2521, 2522, 2523, 2526, 2524, 2525, 2525, - 2519, 2527, 2527, 2528, 2528, 2521, 2529, 2530, 2532, 2533, - 2535, 2531, 2520, 2524, 2522, 2526, 2523, 2529, 2531, 2530, - 2532, 2534, 2536, 2537, 2537, 2538, 2534, 2539, 2539, 2533, + 2484, 2484, 2475, 2482, 2483, 2473, 2488, 2476, 2486, 2486, + 2489, 2489, 2488, 2490, 2491, 2492, 2494, 2481, 2496, 2495, + 2492, 2480, 2495, 2498, 2498, 2497, 2501, 2502, 2503, 2500, + 2496, 2507, 2501, 2505, 2505, 2494, 2491, 2497, 2500, 2506, + 2508, 2513, 2506, 2503, 2514, 2502, 2510, 2510, 2511, 2511, + 2507, 2512, 2515, 2514, 2517, 2518, 2512, 2515, 2508, 2513, + 2516, 2519, 2516, 2521, 2522, 2520, 2523, 2529, 2517, 2518, + 2520, 2523, 0, 2519, 2524, 2524, 2525, 2525, 2526, 2526, + 2527, 2527, 2528, 2521, 2522, 2529, 2530, 2531, 2531, 2532, + 2532, 2530, 2533, 2533, 2528, 2534, 2535, 2536, 2537, 2538, - 2535, 2540, 2541, 2542, 2538, 2543, 2544, 2547, 2545, 2548, - 2548, 2550, 2536, 2551, 2549, 2553, 2542, 2554, 2555, 2547, - 2544, 2556, 2541, 2549, 2556, 2576, 2550, 2540, 2551, 2543, - 2545, 2557, 2558, 2553, 2576, 2559, 2567, 2558, 2569, 2554, - 2559, 2555, 2560, 2560, 2568, 2557, 2561, 2561, 2562, 2562, - 2564, 2564, 2566, 2566, 2567, 2568, 2570, 2569, 2572, 2573, - 2574, 2575, 2578, 2577, 2578, 2579, 2580, 2586, 2581, 2582, - 2582, 2570, 2584, 2584, 2585, 2588, 2588, 2573, 2572, 2591, - 2591, 2575, 2574, 2577, 2580, 2579, 2581, 2587, 2585, 2586, - 2590, 2592, 2593, 2594, 2603, 2596, 2587, 2595, 2597, 2590, + 2541, 2539, 2540, 2540, 2542, 2542, 0, 2534, 2546, 2536, + 2543, 2543, 2544, 2545, 2547, 2546, 2535, 2539, 2537, 2541, + 2538, 2548, 2549, 2544, 2550, 2545, 2547, 2549, 2551, 2552, + 2552, 2553, 2554, 2554, 2555, 2556, 2557, 2558, 2559, 2562, + 2553, 2548, 2560, 2561, 2550, 2561, 2563, 2563, 2551, 2557, + 2564, 2562, 2559, 2565, 2566, 2556, 2568, 2569, 2570, 2564, + 2555, 2558, 2571, 2572, 2560, 2571, 2573, 2574, 2565, 2566, + 0, 2573, 2574, 2582, 2568, 2575, 2575, 2572, 2584, 2569, + 2585, 2570, 2576, 2576, 2577, 2577, 2579, 2579, 2581, 2581, + 2583, 2582, 2587, 2588, 2589, 2585, 2591, 2584, 2590, 2592, - 2594, 2598, 2599, 17, 2600, 2601, 2601, 2602, 2602, 2592, - 2593, 2600, 2595, 2596, 2603, 2604, 2597, 2598, 2605, 2607, - 2607, 2599, 2608, 2608, 2605, 2609, 2610, 2611, 2612, 2613, - 2614, 2609, 2615, 2604, 2616, 2614, 2617, 2618, 2620, 2618, - 2620, 2617, 2611, 2613, 2610, 2619, 2619, 2612, 2621, 2621, - 2623, 2625, 2615, 2626, 2616, 2627, 2628, 2629, 2630, 2631, - 2625, 2632, 2629, 2630, 2635, 2636, 2638, 2627, 2636, 2623, - 2637, 2637, 2626, 2639, 2640, 2640, 2628, 2641, 2642, 2631, - 2632, 2638, 2643, 2645, 2635, 2646, 2643, 2648, 2641, 2646, - 2650, 2639, 2651, 2642, 2647, 2647, 2652, 2655, 2645, 2656, + 2593, 2583, 2593, 2594, 2595, 2591, 2596, 2597, 2597, 2599, + 2599, 2588, 2587, 2600, 2601, 2607, 2589, 2602, 2590, 2592, + 2603, 2603, 2595, 2594, 2596, 2605, 2602, 2600, 2606, 2606, + 2608, 2609, 2610, 2607, 2605, 2611, 2601, 2612, 2613, 2610, + 2615, 2614, 2617, 2617, 2616, 2618, 2618, 2619, 2608, 2609, + 2611, 2616, 2620, 2627, 2621, 2612, 2613, 2614, 2626, 2615, + 2621, 2623, 2623, 2624, 2624, 2625, 2628, 2619, 2627, 2629, + 2620, 2625, 2630, 2631, 2632, 2633, 2626, 2630, 2639, 2634, + 2633, 2634, 2636, 2629, 2636, 2628, 2635, 2635, 2637, 2637, + 2641, 2642, 2643, 2631, 2632, 2644, 2645, 2639, 2646, 2641, - 2648, 2653, 2653, 2657, 2659, 2650, 2663, 2657, 2656, 2655, - 2658, 2658, 2651, 2660, 2660, 2661, 2652, 2662, 2664, 2665, - 2661, 2672, 2663, 2659, 2666, 2666, 2662, 2671, 2671, 2674, - 2664, 2673, 2673, 2675, 2680, 2676, 2677, 2681, 2678, 2665, - 2679, 2679, 2674, 2672, 2676, 2677, 2675, 2678, 2683, 2683, - 2686, 2687, 2681, 2688, 2680, 2686, 2687, 2689, 2690, 2691, - 2692, 2695, 2689, 2693, 2699, 2697, 2690, 2688, 2698, 2692, - 2697, 2693, 2702, 2698, 2700, 2700, 2695, 2702, 2691, 2699, - 2701, 2701, 2703, 2704, 2704, 2705, 2706, 2707, 2708, 2709, - 0, 2706, 2705, 2710, 2712, 2709, 2711, 2711, 2710, 2713, + 2647, 2645, 2648, 2646, 2643, 2651, 2652, 2653, 2653, 2652, + 2642, 2654, 2655, 2656, 2656, 2644, 2657, 2658, 2659, 2661, + 2647, 2648, 2659, 2666, 2662, 2651, 2654, 2657, 2662, 2664, + 2655, 2667, 2658, 2668, 2661, 2663, 2663, 2671, 2666, 2669, + 2669, 2672, 2664, 2673, 2674, 2674, 2675, 2673, 2679, 2671, + 2672, 2667, 2677, 2668, 2676, 2676, 2680, 2677, 2678, 2681, + 2682, 2682, 2687, 2687, 2679, 2675, 2688, 2678, 2680, 2689, + 2689, 2690, 2691, 2692, 2693, 2696, 2696, 2697, 2694, 2681, + 2695, 2698, 0, 2693, 2690, 2691, 2692, 2694, 2688, 2695, + 2700, 2700, 2705, 2703, 2704, 2706, 2698, 2697, 2703, 2704, - 2718, 2703, 2714, 2714, 2713, 2707, 2708, 2715, 2715, 2712, - 2719, 2719, 2720, 2718, 2721, 2720, 2722, 2723, 2724, 2721, - 2721, 2722, 2723, 2725, 2726, 2727, 2728, 2729, 2726, 2725, - 2727, 2730, 2724, 2731, 2732, 2728, 2734, 2733, 2735, 2730, - 2732, 2734, 2729, 2733, 2737, 2739, 2741, 2738, 2739, 2745, - 2735, 2737, 2738, 2746, 2731, 2743, 2744, 2759, 2741, 2747, - 2743, 2744, 2748, 2749, 2749, 2750, 2746, 2745, 2747, 2754, - 2751, 2748, 2755, 2756, 2750, 2751, 2759, 2760, 2755, 2756, - 2761, 2762, 2762, 2763, 2764, 2765, 2766, 2754, 2767, 2767, - 2763, 2768, 2770, 2772, 2765, 2775, 2773, 2760, 2778, 2761, + 2706, 2707, 2708, 2709, 2712, 2710, 2705, 2716, 2720, 2707, + 2714, 2715, 2709, 2710, 2724, 2714, 2715, 2717, 2717, 2712, + 2719, 2708, 2716, 2718, 2718, 2719, 2722, 2720, 2721, 2721, + 2723, 2725, 2724, 2722, 2726, 2723, 2727, 2728, 2728, 2729, + 2726, 2727, 2730, 2731, 2731, 2732, 2732, 2730, 2735, 2725, + 2736, 2736, 2737, 2738, 2729, 2737, 2741, 2739, 2738, 2738, + 2740, 2735, 2739, 2742, 2743, 2740, 2744, 2745, 2743, 2742, + 2741, 2744, 2746, 2747, 2748, 2751, 2745, 2749, 2750, 2752, + 2751, 2747, 2754, 2749, 2750, 2755, 2758, 2746, 2763, 2754, + 2755, 2752, 2760, 2756, 2761, 2748, 2756, 2760, 2758, 2761, - 2773, 2766, 2776, 2764, 2774, 2774, 2777, 2770, 2776, 2779, - 2768, 2781, 2777, 2772, 2784, 2779, 2778, 2780, 2780, 2781, - 2775, 2782, 2785, 2784, 2787, 2788, 2782, 2789, 2788, 2790, - 2787, 2789, 2791, 2793, 2793, 2785, 2794, 2795, 2795, 2796, - 2796, 2798, 2798, 2790, 2799, 2800, 2804, 2791, 2799, 2806, - 2800, 2802, 2802, 2805, 2794, 2808, 2810, 2807, 2805, 2811, - 2811, 2806, 2807, 2807, 2813, 2813, 2804, 2808, 2814, 2814, - 2815, 2816, 2817, 2815, 2819, 2819, 2810, 2820, 2822, 2823, - 2823, 2824, 2824, 2828, 2816, 2817, 2825, 2825, 2826, 2827, - 2827, 2829, 2830, 2831, 2840, 2820, 2828, 2837, 2822, 2831, + 2762, 2764, 2765, 2766, 2768, 2762, 2763, 2767, 2767, 2772, + 2769, 2765, 2766, 2768, 2764, 2769, 2773, 2774, 2777, 2778, + 2783, 2779, 2773, 2774, 2780, 2780, 2781, 2772, 2782, 2783, + 2784, 2785, 2785, 2781, 2786, 2788, 2790, 2777, 2791, 2778, + 2779, 2793, 2791, 2792, 2792, 2784, 2794, 2782, 2795, 2796, + 2788, 2797, 2794, 2786, 2795, 2799, 2790, 2797, 2798, 2798, + 2800, 2802, 2803, 2799, 2808, 2800, 2793, 2796, 2805, 2806, + 2802, 2809, 2806, 2807, 2805, 2803, 2812, 2807, 2808, 2811, + 2811, 2813, 2813, 2814, 2814, 2817, 2809, 2816, 2816, 2817, + 2818, 2820, 2820, 2822, 2812, 2818, 2823, 2824, 2825, 2826, - 2832, 2832, 2837, 2826, 2833, 2836, 2830, 2839, 2833, 2829, - 2841, 2836, 2839, 2839, 2842, 2843, 2844, 2840, 2845, 2846, - 2852, 2843, 2844, 2846, 2847, 2847, 2850, 2855, 2852, 2853, - 2841, 2850, 2853, 2856, 2842, 2859, 2856, 2857, 2857, 2858, - 2859, 2860, 2861, 2845, 2862, 2863, 2863, 2864, 2867, 2869, - 2866, 2871, 2855, 2911, 2869, 2869, 2858, 2858, 2862, 2860, - 2865, 2864, 2861, 2865, 2866, 2868, 2880, 2867, 2911, 2870, - 2871, 2865, 2877, 2868, 2870, 2870, 2872, 2872, 2873, 2873, - 2874, 2874, 2875, 2875, 2876, 2876, 2878, 2879, 2877, 2881, - 2882, 2878, 2880, 2883, 2884, 2882, 2885, 2886, 2887, 2884, + 2828, 2823, 2841, 2825, 2825, 2829, 2829, 2831, 2831, 2824, + 2835, 2826, 2836, 2822, 2832, 2832, 2833, 2833, 2834, 2839, + 2828, 2834, 2841, 2835, 2845, 2836, 2838, 2838, 2842, 2842, + 2843, 2843, 2844, 2844, 2846, 2846, 2847, 2839, 2848, 2845, + 2849, 2850, 2851, 2851, 2852, 2855, 2859, 2850, 2852, 2847, + 2856, 2855, 2858, 2860, 2849, 2856, 2848, 2858, 2858, 2861, + 2862, 2863, 2864, 2874, 2865, 0, 2862, 2863, 2865, 2859, + 2866, 2866, 2869, 2860, 2871, 2872, 2877, 2869, 2872, 2861, + 2875, 2878, 2871, 2875, 2876, 2876, 2878, 2864, 2874, 2879, + 2880, 2881, 2883, 2877, 2877, 2882, 2882, 2884, 2885, 2886, - 2889, 2889, 2892, 2881, 2895, 2885, 0, 2879, 2890, 2890, - 2891, 2895, 2883, 2891, 2894, 2894, 2905, 2886, 2887, 2897, - 2892, 2896, 2896, 2900, 2897, 2899, 2899, 2901, 2902, 2903, - 2906, 2906, 2900, 2908, 2905, 2907, 2901, 2902, 2903, 2907, - 2909, 2910, 2908, 2912, 2913, 2914, 2915, 2924, 2912, 2912, - 2915, 2919, 2910, 2923, 2914, 2925, 2919, 2913, 2929, 2909, - 2920, 2920, 2922, 2922, 2927, 2927, 2928, 2923, 2932, 2933, - 2929, 2934, 2924, 2925, 2933, 2928, 2936, 2937, 2939, 2941, - 2934, 2943, 2944, 2937, 2945, 2945, 2943, 2944, 2946, 2948, - 2939, 2949, 2950, 2932, 2948, 2957, 2936, 2946, 2951, 2951, + 2884, 2887, 2890, 2891, 2891, 2881, 2883, 2879, 2884, 2887, + 2880, 2888, 2885, 2900, 2889, 2899, 2888, 2888, 2886, 2889, + 2889, 2890, 2892, 2892, 2893, 2893, 2894, 2894, 2895, 2895, + 2896, 2896, 2897, 2898, 2903, 2899, 2901, 2902, 2898, 2900, + 2904, 2906, 2902, 2905, 2907, 2904, 2909, 2909, 2897, 2912, + 2901, 2920, 2905, 2903, 2910, 2910, 2911, 2914, 2914, 2911, + 2920, 2906, 2915, 2917, 2907, 2916, 2916, 2912, 2917, 2915, + 2919, 2919, 2921, 2922, 2923, 2925, 2926, 2926, 2928, 2929, + 2927, 2921, 2922, 2923, 2927, 2930, 2931, 2928, 2934, 2932, + 2933, 2940, 2940, 2925, 2932, 2932, 2930, 2934, 2929, 2943, - 2941, 2958, 2951, 0, 2949, 2956, 2950, 2953, 2953, 2954, - 2954, 2955, 2955, 2959, 2956, 2957, 2961, 2965, 2959, 2962, - 2958, 2963, 2961, 2967, 2962, 2966, 2963, 2964, 2964, 2968, - 2969, 2971, 2970, 2978, 2968, 2965, 0, 2966, 2970, 2972, - 2972, 2974, 2975, 2979, 2967, 2974, 2976, 2975, 2969, 2977, - 2977, 2976, 2978, 2980, 2982, 2989, 2971, 2986, 2979, 2984, - 2984, 2988, 2987, 2990, 2989, 2988, 2991, 2993, 2980, 2992, - 2986, 2994, 2993, 2996, 2982, 2987, 2997, 2992, 2998, 2990, - 2995, 2995, 2996, 2999, 2999, 2991, 3000, 3003, 3003, 3004, - 3004, 2994, 3006, 3010, 2997, 3008, 3008, 3012, 3011, 3013, + 2935, 2931, 2939, 2933, 2935, 2942, 2942, 2939, 2944, 2945, + 2947, 2947, 2948, 2943, 2949, 2953, 2955, 2954, 2957, 2960, + 2962, 2948, 2954, 2958, 2995, 2955, 2949, 2945, 2995, 2958, + 2964, 2960, 2965, 2944, 2969, 2964, 2967, 2965, 2957, 2969, + 2953, 2962, 2966, 2966, 2970, 2967, 2971, 2972, 2972, 2974, + 2974, 2972, 2975, 2975, 2976, 2976, 2977, 2970, 2978, 2980, + 2971, 2979, 2982, 2986, 2980, 2977, 2983, 2984, 2982, 2985, + 2985, 2983, 2984, 2987, 2988, 2990, 2992, 2989, 2978, 2996, + 2979, 2986, 2989, 2991, 2996, 2987, 2993, 2993, 2999, 2991, + 3000, 2997, 3003, 2990, 3001, 2988, 2997, 2998, 2998, 3005, - 3017, 3014, 3012, 3018, 2998, 3000, 3014, 3016, 3016, 3010, - 3019, 3020, 3018, 3006, 3011, 3013, 3019, 3021, 3023, 3023, - 3017, 3024, 3025, 3026, 3026, 3029, 3030, 3033, 3031, 3034, - 3034, 3036, 3030, 3031, 3020, 3024, 3021, 3035, 3035, 3037, - 3039, 3025, 3038, 3038, 3040, 3029, 3036, 3041, 3042, 3033, - 3043, 3039, 3044, 3040, 3042, 3045, 3046, 3046, 3047, 3037, - 3048, 3055, 3038, 3048, 3044, 3049, 3054, 3041, 3049, 3043, - 3050, 3050, 3060, 3047, 3056, 3045, 3057, 3057, 3054, 3058, - 3056, 3055, 3058, 3059, 3063, 3063, 3062, 3064, 3065, 3059, - 3060, 3062, 3064, 3066, 3067, 3068, 3068, 3070, 3071, 3066, + 3005, 2992, 3007, 3008, 3009, 3000, 3010, 2999, 3012, 3001, + 3010, 3011, 3003, 3013, 3014, 3007, 3008, 3009, 3015, 3016, + 3011, 3018, 3014, 3015, 3012, 3017, 3017, 3019, 3020, 3022, + 3018, 3028, 3013, 3021, 3021, 3025, 3025, 3026, 3026, 3016, + 3030, 3030, 3032, 3033, 3034, 3019, 3035, 3039, 3022, 3034, + 3036, 3040, 3028, 3042, 3020, 3036, 3038, 3038, 3032, 3033, + 3040, 3043, 3035, 3041, 3045, 3045, 3047, 3039, 3046, 3041, + 3048, 3048, 3051, 3052, 3055, 3058, 3042, 3059, 3053, 3052, + 3043, 3063, 3046, 3053, 3061, 3047, 3056, 3056, 3057, 3057, + 3058, 3062, 3051, 3060, 3060, 3061, 3055, 3059, 3064, 3065, - 3072, 3073, 3074, 3074, 3075, 3076, 3077, 3065, 3081, 3070, - 3082, 3067, 3067, 3081, 3073, 3077, 3071, 3079, 3079, 3080, - 3080, 3076, 3083, 3075, 3082, 3072, 3088, 3083, 3084, 3084, - 3085, 3085, 3086, 3086, 3087, 3087, 3089, 3090, 3096, 3088, - 3091, 3093, 3093, 3090, 3098, 3091, 3099, 3101, 3100, 3102, - 3102, 3104, 3104, 3105, 3106, 3108, 3107, 3096, 3110, 3110, - 3111, 3111, 3089, 3109, 3114, 3113, 3098, 3100, 3099, 3101, - 3107, 3113, 3109, 3106, 3115, 3108, 3116, 3119, 3126, 3105, - 3124, 3116, 3120, 3120, 3114, 3122, 3122, 3123, 3127, 3125, - 3126, 3133, 3123, 3115, 3124, 3125, 3127, 3129, 3119, 3128, + 3062, 3063, 3066, 3067, 3064, 3068, 3068, 3069, 3070, 3071, + 3077, 3070, 3071, 3060, 3066, 3072, 3072, 3076, 3065, 3078, + 3079, 3079, 3069, 3067, 3080, 3078, 3081, 3080, 3082, 3076, + 3077, 3084, 3081, 3085, 3085, 3086, 3084, 3087, 3088, 3092, + 3086, 3089, 3090, 3090, 3088, 3093, 3082, 3094, 3095, 3096, + 3096, 3092, 3097, 3098, 3113, 3099, 3087, 3104, 3089, 3089, + 3113, 3095, 3104, 3093, 3099, 3101, 3101, 3102, 3102, 3098, + 3105, 3097, 3094, 3103, 3103, 3106, 3107, 3107, 3108, 3108, + 3106, 3109, 3109, 3111, 3105, 3110, 3110, 3112, 3114, 3116, + 3116, 3119, 3121, 3114, 3122, 3128, 3111, 3124, 3123, 3125, - 3128, 3131, 3129, 3132, 3134, 3131, 3136, 3135, 3132, 3137, - 3140, 3133, 3135, 3139, 3141, 3137, 3142, 3144, 3136, 3151, - 0, 3139, 3145, 3146, 3134, 3147, 3148, 3150, 3153, 3140, - 3155, 3148, 3150, 3153, 3141, 3144, 3142, 3152, 3145, 3151, - 3146, 3146, 3156, 3152, 3157, 3156, 3147, 3160, 3160, 3162, - 3155, 3161, 3161, 3162, 3167, 3167, 3168, 3157, 3169, 3170, - 3170, 3168, 3172, 3172, 3173, 3173, 3177, 3173, 3174, 3174, - 3177, 3174, 3175, 3175, 3179, 3176, 3176, 3169, 3176, 3179, - 3180, 3181, 3181, 3182, 3183, 3186, 3187, 3188, 3190, 3180, - 3189, 3189, 3188, 3193, 3196, 3194, 3195, 3197, 3183, 3199, + 3125, 3127, 3127, 3129, 3130, 3131, 3132, 3133, 3133, 3137, + 3119, 3134, 3134, 3112, 3121, 3132, 3122, 3123, 3130, 3124, + 3136, 3128, 3129, 3138, 3142, 3131, 3136, 3139, 0, 3137, + 3143, 3143, 3139, 3145, 3145, 3146, 3147, 3148, 3150, 3149, + 3146, 3156, 3138, 3148, 3152, 3142, 3150, 3151, 3151, 3152, + 3147, 3149, 3154, 3155, 3157, 3158, 3154, 3159, 3155, 3160, + 3158, 3156, 3162, 3163, 3164, 3160, 3165, 3167, 3174, 3159, + 3162, 3168, 3169, 3170, 3157, 3171, 3173, 3175, 3178, 0, + 3171, 3173, 3163, 3175, 3164, 3167, 3165, 3168, 3174, 3169, + 3169, 3176, 3179, 3180, 3170, 3179, 3176, 3193, 3178, 3184, - 3195, 3182, 3194, 3196, 3200, 3186, 3187, 3202, 3190, 3200, - 3201, 3201, 3197, 3203, 3203, 3206, 3202, 3199, 3193, 3204, - 3204, 3205, 3205, 3207, 3208, 3211, 3209, 3212, 3207, 3210, - 3206, 3209, 3209, 3208, 3213, 3210, 3208, 3216, 3214, 3215, - 3217, 3217, 3212, 3214, 3215, 3218, 3219, 3220, 3220, 3222, - 3211, 3218, 3219, 3221, 3221, 3213, 3216, 3223, 3226, 3226, - 3228, 3228, 3223, 3229, 3222, 3232, 3232, 3233, 3233, 3234, - 3234, 3241, 3229, 3235, 3235, 3237, 3237, 3238, 3238, 3239, - 3239, 3240, 3240, 3243, 3244, 3244, 3245, 3246, 3247, 3249, - 3249, 3250, 3243, 3251, 3251, 3245, 3252, 3241, 3264, 3246, + 3184, 3185, 3185, 3186, 3191, 3191, 3180, 3186, 3192, 3194, + 3194, 3196, 3196, 3192, 3197, 3197, 3193, 3197, 3198, 3198, + 3204, 3198, 3199, 3199, 3200, 3200, 3201, 3200, 3203, 3204, + 3201, 3205, 3205, 3203, 3206, 3207, 3210, 3211, 3212, 3213, + 3213, 3214, 3217, 3212, 3218, 3220, 3219, 3221, 3223, 3207, + 3219, 3218, 3206, 3224, 3220, 3226, 3210, 3211, 3224, 3225, + 3225, 3214, 3221, 3230, 3226, 3235, 3223, 3217, 3227, 3227, + 3228, 3228, 3229, 3229, 3231, 3232, 3233, 3234, 3230, 3231, + 3236, 3233, 3233, 3234, 3232, 3237, 3238, 3232, 3239, 3240, + 3235, 3238, 3242, 3239, 3243, 3236, 3241, 3241, 3242, 3246, - 3253, 3258, 3254, 3255, 3255, 3256, 3256, 3262, 3247, 3263, - 3250, 3252, 3263, 3253, 3254, 3266, 3258, 3259, 3259, 3265, - 3265, 3269, 3270, 3268, 3264, 3262, 3268, 3269, 3272, 3271, - 3273, 3276, 3277, 3266, 3271, 3274, 3270, 3276, 3280, 3281, - 3284, 3277, 3280, 3294, 3293, 3296, 3294, 3272, 3273, 3293, - 3302, 3274, 3297, 3297, 3281, 3298, 3298, 3305, 3296, 3300, - 3300, 3303, 3307, 3304, 3309, 3316, 3284, 3304, 3310, 3311, - 3303, 3313, 3315, 3302, 3311, 3317, 3307, 3305, 3312, 3310, - 3312, 3314, 3314, 3318, 3316, 3315, 3313, 3309, 3319, 3320, - 3322, 3321, 3323, 3317, 3324, 3332, 3325, 3323, 3327, 3318, + 3243, 3244, 3244, 3245, 3245, 3247, 3237, 0, 3240, 3253, + 3247, 3250, 3250, 3265, 3246, 3252, 3252, 0, 3253, 3256, + 3256, 3257, 3257, 3258, 3258, 3259, 3259, 3261, 3261, 3262, + 3262, 3263, 3263, 3264, 3264, 3267, 3268, 3268, 3269, 3265, + 3270, 3271, 3273, 3273, 3267, 3274, 3277, 3269, 3275, 3275, + 3276, 3278, 3270, 3279, 3279, 3280, 3280, 3282, 3286, 3277, + 3288, 3271, 3290, 3278, 3274, 3276, 3283, 3283, 3287, 3289, + 3289, 3287, 3282, 3293, 3292, 3294, 3286, 3292, 3295, 3293, + 3290, 3296, 3298, 3295, 3297, 3300, 3288, 3301, 3304, 3294, + 3305, 3300, 3304, 3308, 3317, 3320, 3301, 3326, 3298, 3317, - 3321, 3325, 3322, 3328, 3320, 3326, 3326, 3333, 3328, 3332, - 3334, 3334, 3335, 3319, 3340, 3324, 3336, 3336, 3327, 3337, - 3337, 3335, 3338, 3338, 3339, 3339, 3341, 3333, 3342, 3343, - 3344, 3342, 3345, 3340, 3343, 3344, 3346, 3347, 3348, 3350, - 3352, 3349, 3357, 3347, 3350, 3362, 3341, 3351, 3351, 3353, - 3353, 3346, 3348, 3349, 3355, 3355, 3356, 3345, 3358, 3358, - 3352, 3357, 3360, 3362, 3365, 3365, 3366, 3366, 3367, 3368, - 3371, 3356, 3369, 3370, 3372, 3373, 3367, 3360, 3369, 3370, - 3374, 3375, 3375, 3380, 3371, 3374, 3381, 3372, 3368, 3377, - 3377, 3383, 3384, 3386, 3373, 3387, 3384, 3388, 3389, 3390, + 3296, 3318, 3297, 3329, 3318, 3305, 3321, 3321, 3320, 3322, + 3322, 3324, 3324, 3327, 3328, 3331, 3333, 3334, 3328, 3308, + 3326, 3335, 3327, 3329, 3339, 3336, 3335, 3336, 3334, 3331, + 3337, 3338, 3338, 3340, 3342, 3341, 3343, 3339, 3345, 3333, + 3344, 3347, 3346, 3348, 3349, 3337, 3347, 3345, 3351, 3349, + 3342, 3356, 3340, 3341, 3346, 3344, 3350, 3350, 3352, 3357, + 3359, 3343, 3364, 3352, 3348, 3356, 3358, 3358, 3351, 3359, + 3360, 3360, 3361, 3361, 3362, 3362, 3363, 3363, 3365, 3357, + 3366, 3364, 3367, 3366, 3368, 3369, 3370, 3367, 3371, 3368, + 3372, 3373, 3374, 3376, 3371, 3375, 3375, 3374, 3365, 3377, - 3387, 3391, 3392, 3393, 3380, 3383, 3381, 3392, 3393, 3394, - 3394, 3389, 3390, 3386, 3397, 3398, 3388, 3399, 3400, 3400, - 3391, 3401, 3402, 3403, 3403, 3404, 3401, 3405, 3402, 3407, - 3404, 3408, 3405, 3398, 3397, 3406, 3399, 3408, 3410, 3410, - 3406, 3411, 3412, 3412, 3415, 3414, 3411, 3416, 3407, 3414, - 3417, 3418, 3419, 3420, 3416, 3421, 3423, 3423, 3419, 3425, - 3425, 3427, 3426, 3415, 3428, 3429, 3427, 3430, 3421, 3417, - 3418, 3426, 3420, 3432, 3426, 3431, 3431, 3433, 3432, 3435, - 3430, 3436, 3436, 3428, 3429, 3437, 3438, 3438, 3439, 3439, - 3433, 3440, 3441, 3442, 3443, 3443, 3440, 3444, 3445, 3441, + 3377, 3370, 3380, 3373, 3372, 3379, 3379, 3381, 3382, 3382, + 3369, 3386, 3384, 3376, 3389, 3389, 3391, 3380, 3390, 3390, + 3392, 3395, 3393, 3396, 3391, 3394, 3381, 3384, 3393, 3386, + 3397, 3394, 3398, 3399, 3399, 3395, 3396, 3398, 3404, 3392, + 3401, 3401, 3405, 3407, 3408, 3410, 3411, 3412, 3408, 3397, + 3413, 3411, 3415, 3416, 3414, 3417, 3421, 3407, 3416, 3404, + 3417, 3422, 3405, 3413, 3423, 3410, 3412, 3414, 3418, 3418, + 3425, 3415, 3424, 3424, 3426, 3425, 3421, 3427, 3427, 3422, + 3426, 3428, 3429, 3423, 3430, 3431, 3428, 3429, 3432, 3430, + 3434, 3434, 3435, 3439, 3432, 3436, 3436, 3435, 3438, 3440, - 3445, 3447, 3444, 3448, 3437, 3435, 3446, 3446, 3447, 3449, - 3448, 3450, 3442, 3451, 3453, 3453, 3450, 3454, 3456, 3457, - 3458, 3459, 3463, 3456, 3457, 3460, 3460, 3464, 3449, 3462, - 3462, 0, 3451, 3465, 3465, 3467, 3454, 3466, 3466, 3458, - 3459, 3463, 3467, 3469, 3469, 3471, 3464, 3470, 3470, 3473, - 3476, 3477, 3471, 3478, 3473, 3476, 3479, 3479, 3480, 3480, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3477, 0, 3478, 3484, 3484, 3484, 3484, 3484, 3484, 3484, - 3485, 3485, 3485, 3485, 3485, 3485, 3485, 3486, 3486, 3486, - 3486, 3486, 3486, 3486, 3487, 3487, 3487, 3487, 3487, 3487, + 3441, 3442, 3438, 3443, 3431, 3444, 3440, 3452, 3445, 3443, + 3447, 3447, 3439, 3449, 3449, 3453, 3450, 3451, 3454, 3441, + 3442, 3445, 3451, 3457, 3444, 3450, 3452, 3456, 3450, 3455, + 3455, 3454, 3456, 3459, 3453, 3461, 3457, 3460, 3460, 3462, + 3462, 3463, 3463, 3464, 3465, 3466, 3467, 3467, 3464, 0, + 3468, 3465, 3470, 3470, 3461, 3468, 3469, 3473, 3469, 3459, + 3471, 3472, 3475, 3478, 3466, 3474, 3482, 3471, 3472, 3480, + 3474, 3477, 3477, 3481, 3480, 3483, 3473, 3487, 3481, 3484, + 3484, 3475, 3478, 3486, 3486, 3482, 3488, 3489, 3489, 3490, + 3490, 3491, 3493, 3493, 3483, 3495, 3487, 3501, 3491, 3494, - 3487, 3488, 3488, 3488, 3488, 3488, 3488, 3488, 3489, 3489, - 3489, 3489, 3489, 3489, 3489, 3490, 3490, 3490, 3490, 3490, - 3490, 3490, 3492, 3492, 0, 3492, 3492, 3492, 3492, 3493, - 3493, 0, 0, 0, 3493, 3493, 3494, 3494, 0, 0, - 3494, 0, 3494, 3495, 0, 0, 0, 0, 0, 3495, - 3496, 3496, 0, 0, 0, 3496, 3496, 3497, 0, 0, - 0, 0, 0, 3497, 3498, 3498, 0, 3498, 3498, 3498, - 3498, 3499, 0, 0, 0, 0, 0, 3499, 3500, 3500, - 0, 0, 0, 3500, 3500, 3501, 3501, 0, 3501, 3501, - 3501, 3501, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, + 3494, 3497, 3495, 3500, 3502, 3488, 3497, 0, 3500, 3503, + 3503, 3504, 3504, 0, 0, 0, 3501, 0, 0, 0, + 0, 0, 0, 3502, 3508, 3508, 3508, 3508, 3508, 3508, + 3508, 3509, 3509, 3509, 3509, 3509, 3509, 3509, 3510, 3510, + 3510, 3510, 3510, 3510, 3510, 3511, 3511, 3511, 3511, 3511, + 3511, 3511, 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3513, + 3513, 3513, 3513, 3513, 3513, 3513, 3514, 3514, 3514, 3514, + 3514, 3514, 3514, 3516, 3516, 0, 3516, 3516, 3516, 3516, + 3517, 3517, 0, 0, 0, 3517, 3517, 3518, 3518, 0, + 0, 3518, 0, 3518, 3519, 0, 0, 0, 0, 0, - 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, - 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, - 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, 3483, - 3483, 3483, 3483 + 3519, 3520, 3520, 0, 0, 0, 3520, 3520, 3521, 0, + 0, 0, 0, 0, 3521, 3522, 3522, 0, 3522, 3522, + 3522, 3522, 3523, 0, 0, 0, 0, 0, 3523, 3524, + 3524, 0, 0, 0, 3524, 3524, 3525, 3525, 0, 3525, + 3525, 3525, 3525, 3507, 3507, 3507, 3507, 3507, 3507, 3507, + 3507, 3507, 3507, 3507, 3507, 3507, 3507, 3507, 3507, 3507, + 3507, 3507, 3507, 3507, 3507, 3507, 3507, 3507, 3507, 3507, + 3507, 3507, 3507, 3507, 3507, 3507, 3507, 3507, 3507, 3507, + 3507, 3507, 3507, 3507 } ; static yy_state_type yy_last_accepting_state; @@ -3285,7 +3302,7 @@ static void config_end_include(void) } #endif -#line 3286 "" +#line 3303 "" #define YY_NO_INPUT 1 #line 191 "./util/configlexer.lex" #ifndef YY_NO_UNPUT @@ -3294,9 +3311,9 @@ static void config_end_include(void) #ifndef YY_NO_INPUT #define YY_NO_INPUT 1 #endif -#line 3295 "" +#line 3312 "" -#line 3297 "" +#line 3314 "" #define INITIAL 0 #define quotedstring 1 @@ -3520,7 +3537,7 @@ YY_DECL { #line 211 "./util/configlexer.lex" -#line 3521 "" +#line 3538 "" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -3553,13 +3570,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 >= 3484 ) + if ( yy_current_state >= 3508 ) 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] != 6793 ); + while ( yy_base[yy_current_state] != 6844 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -4184,32 +4201,32 @@ YY_RULE_SETUP case 120: YY_RULE_SETUP #line 334 "./util/configlexer.lex" -{ YDVAR(0, VAR_FORWARD_ZONE) } +{ YDVAR(1, VAR_STUB_TCP_UPSTREAM) } YY_BREAK case 121: YY_RULE_SETUP #line 335 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_ADDR) } +{ YDVAR(0, VAR_FORWARD_ZONE) } YY_BREAK case 122: YY_RULE_SETUP #line 336 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_HOST) } +{ YDVAR(1, VAR_FORWARD_ADDR) } YY_BREAK case 123: YY_RULE_SETUP #line 337 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_FIRST) } +{ YDVAR(1, VAR_FORWARD_HOST) } YY_BREAK case 124: YY_RULE_SETUP #line 338 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_NO_CACHE) } +{ YDVAR(1, VAR_FORWARD_FIRST) } YY_BREAK case 125: YY_RULE_SETUP #line 339 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) } +{ YDVAR(1, VAR_FORWARD_NO_CACHE) } YY_BREAK case 126: YY_RULE_SETUP @@ -4219,791 +4236,791 @@ YY_RULE_SETUP case 127: YY_RULE_SETUP #line 341 "./util/configlexer.lex" -{ YDVAR(0, VAR_AUTH_ZONE) } +{ YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) } YY_BREAK case 128: YY_RULE_SETUP #line 342 "./util/configlexer.lex" -{ YDVAR(0, VAR_RPZ) } +{ YDVAR(1, VAR_FORWARD_TCP_UPSTREAM) } YY_BREAK case 129: YY_RULE_SETUP #line 343 "./util/configlexer.lex" -{ YDVAR(1, VAR_TAGS) } +{ YDVAR(0, VAR_AUTH_ZONE) } YY_BREAK case 130: YY_RULE_SETUP #line 344 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_ACTION_OVERRIDE) } +{ YDVAR(0, VAR_RPZ) } YY_BREAK case 131: YY_RULE_SETUP #line 345 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_CNAME_OVERRIDE) } +{ YDVAR(1, VAR_TAGS) } YY_BREAK case 132: YY_RULE_SETUP #line 346 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_LOG) } +{ YDVAR(1, VAR_RPZ_ACTION_OVERRIDE) } YY_BREAK case 133: YY_RULE_SETUP #line 347 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_LOG_NAME) } +{ YDVAR(1, VAR_RPZ_CNAME_OVERRIDE) } YY_BREAK case 134: YY_RULE_SETUP #line 348 "./util/configlexer.lex" -{ YDVAR(1, VAR_ZONEFILE) } +{ YDVAR(1, VAR_RPZ_LOG) } YY_BREAK case 135: YY_RULE_SETUP #line 349 "./util/configlexer.lex" -{ YDVAR(1, VAR_MASTER) } +{ YDVAR(1, VAR_RPZ_LOG_NAME) } YY_BREAK case 136: YY_RULE_SETUP #line 350 "./util/configlexer.lex" -{ YDVAR(1, VAR_MASTER) } +{ YDVAR(1, VAR_ZONEFILE) } YY_BREAK case 137: YY_RULE_SETUP #line 351 "./util/configlexer.lex" -{ YDVAR(1, VAR_URL) } +{ YDVAR(1, VAR_MASTER) } YY_BREAK case 138: YY_RULE_SETUP #line 352 "./util/configlexer.lex" -{ YDVAR(1, VAR_ALLOW_NOTIFY) } +{ YDVAR(1, VAR_MASTER) } YY_BREAK case 139: YY_RULE_SETUP #line 353 "./util/configlexer.lex" -{ YDVAR(1, VAR_FOR_DOWNSTREAM) } +{ YDVAR(1, VAR_URL) } YY_BREAK case 140: YY_RULE_SETUP #line 354 "./util/configlexer.lex" -{ YDVAR(1, VAR_FOR_UPSTREAM) } +{ YDVAR(1, VAR_ALLOW_NOTIFY) } YY_BREAK case 141: YY_RULE_SETUP #line 355 "./util/configlexer.lex" -{ YDVAR(1, VAR_FALLBACK_ENABLED) } +{ YDVAR(1, VAR_FOR_DOWNSTREAM) } YY_BREAK case 142: YY_RULE_SETUP #line 356 "./util/configlexer.lex" -{ YDVAR(0, VAR_VIEW) } +{ YDVAR(1, VAR_FOR_UPSTREAM) } YY_BREAK case 143: YY_RULE_SETUP #line 357 "./util/configlexer.lex" -{ YDVAR(1, VAR_VIEW_FIRST) } +{ YDVAR(1, VAR_FALLBACK_ENABLED) } YY_BREAK case 144: YY_RULE_SETUP #line 358 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } +{ YDVAR(0, VAR_VIEW) } YY_BREAK case 145: YY_RULE_SETUP #line 359 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } +{ YDVAR(1, VAR_VIEW_FIRST) } YY_BREAK case 146: YY_RULE_SETUP #line 360 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL) } +{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } YY_BREAK case 147: YY_RULE_SETUP #line 361 "./util/configlexer.lex" -{ YDVAR(1, VAR_SEND_CLIENT_SUBNET) } +{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } YY_BREAK case 148: YY_RULE_SETUP #line 362 "./util/configlexer.lex" -{ YDVAR(1, VAR_CLIENT_SUBNET_ZONE) } +{ YDVAR(2, VAR_ACCESS_CONTROL) } YY_BREAK case 149: YY_RULE_SETUP #line 363 "./util/configlexer.lex" -{ YDVAR(1, VAR_CLIENT_SUBNET_ALWAYS_FORWARD) } +{ YDVAR(1, VAR_SEND_CLIENT_SUBNET) } YY_BREAK case 150: YY_RULE_SETUP #line 364 "./util/configlexer.lex" -{ YDVAR(1, VAR_CLIENT_SUBNET_OPCODE) } +{ YDVAR(1, VAR_CLIENT_SUBNET_ZONE) } YY_BREAK case 151: YY_RULE_SETUP #line 365 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV4) } +{ YDVAR(1, VAR_CLIENT_SUBNET_ALWAYS_FORWARD) } YY_BREAK case 152: YY_RULE_SETUP #line 366 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV6) } +{ YDVAR(1, VAR_CLIENT_SUBNET_OPCODE) } YY_BREAK case 153: YY_RULE_SETUP #line 367 "./util/configlexer.lex" -{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV4) } +{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV4) } YY_BREAK case 154: YY_RULE_SETUP #line 368 "./util/configlexer.lex" -{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV6) } +{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV6) } YY_BREAK case 155: YY_RULE_SETUP #line 369 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV4) } +{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV4) } YY_BREAK case 156: YY_RULE_SETUP #line 370 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV6) } +{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV6) } YY_BREAK case 157: YY_RULE_SETUP #line 371 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_IDENTITY) } +{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV4) } YY_BREAK case 158: YY_RULE_SETUP #line 372 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_VERSION) } +{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV6) } YY_BREAK case 159: YY_RULE_SETUP #line 373 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_TRUSTANCHOR) } +{ YDVAR(1, VAR_HIDE_IDENTITY) } YY_BREAK case 160: YY_RULE_SETUP #line 374 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_HTTP_USER_AGENT) } +{ YDVAR(1, VAR_HIDE_VERSION) } YY_BREAK case 161: YY_RULE_SETUP #line 375 "./util/configlexer.lex" -{ YDVAR(1, VAR_IDENTITY) } +{ YDVAR(1, VAR_HIDE_TRUSTANCHOR) } YY_BREAK case 162: YY_RULE_SETUP #line 376 "./util/configlexer.lex" -{ YDVAR(1, VAR_VERSION) } +{ YDVAR(1, VAR_HIDE_HTTP_USER_AGENT) } YY_BREAK case 163: YY_RULE_SETUP #line 377 "./util/configlexer.lex" -{ YDVAR(1, VAR_HTTP_USER_AGENT) } +{ YDVAR(1, VAR_IDENTITY) } YY_BREAK case 164: YY_RULE_SETUP #line 378 "./util/configlexer.lex" -{ YDVAR(1, VAR_MODULE_CONF) } +{ YDVAR(1, VAR_VERSION) } YY_BREAK case 165: YY_RULE_SETUP #line 379 "./util/configlexer.lex" -{ YDVAR(1, VAR_DLV_ANCHOR) } +{ YDVAR(1, VAR_HTTP_USER_AGENT) } YY_BREAK case 166: YY_RULE_SETUP #line 380 "./util/configlexer.lex" -{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } +{ YDVAR(1, VAR_MODULE_CONF) } YY_BREAK case 167: YY_RULE_SETUP #line 381 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } +{ YDVAR(1, VAR_DLV_ANCHOR) } YY_BREAK case 168: YY_RULE_SETUP #line 382 "./util/configlexer.lex" -{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } +{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } YY_BREAK case 169: YY_RULE_SETUP #line 383 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } +{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } YY_BREAK case 170: YY_RULE_SETUP #line 384 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR) } +{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } YY_BREAK case 171: YY_RULE_SETUP #line 385 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR_SIGNALING) } +{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } YY_BREAK case 172: YY_RULE_SETUP #line 386 "./util/configlexer.lex" -{ YDVAR(1, VAR_ROOT_KEY_SENTINEL) } +{ YDVAR(1, VAR_TRUST_ANCHOR) } YY_BREAK case 173: YY_RULE_SETUP #line 387 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } +{ YDVAR(1, VAR_TRUST_ANCHOR_SIGNALING) } YY_BREAK case 174: YY_RULE_SETUP #line 388 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } +{ YDVAR(1, VAR_ROOT_KEY_SENTINEL) } YY_BREAK case 175: YY_RULE_SETUP #line 389 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } +{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } YY_BREAK case 176: YY_RULE_SETUP #line 390 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_MAX_RESTART) } +{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } YY_BREAK case 177: YY_RULE_SETUP #line 391 "./util/configlexer.lex" -{ YDVAR(1, VAR_BOGUS_TTL) } +{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } YY_BREAK case 178: YY_RULE_SETUP #line 392 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } +{ YDVAR(1, VAR_VAL_MAX_RESTART) } YY_BREAK case 179: YY_RULE_SETUP #line 393 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } +{ YDVAR(1, VAR_BOGUS_TTL) } YY_BREAK case 180: YY_RULE_SETUP #line 394 "./util/configlexer.lex" -{ YDVAR(1, VAR_AGGRESSIVE_NSEC) } +{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } YY_BREAK case 181: YY_RULE_SETUP #line 395 "./util/configlexer.lex" -{ YDVAR(1, VAR_IGNORE_CD_FLAG) } +{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } YY_BREAK case 182: YY_RULE_SETUP #line 396 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED) } +{ YDVAR(1, VAR_AGGRESSIVE_NSEC) } YY_BREAK case 183: YY_RULE_SETUP #line 397 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_TTL) } +{ YDVAR(1, VAR_IGNORE_CD_FLAG) } YY_BREAK case 184: YY_RULE_SETUP #line 398 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) } +{ YDVAR(1, VAR_SERVE_EXPIRED) } YY_BREAK case 185: YY_RULE_SETUP #line 399 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) } +{ YDVAR(1, VAR_SERVE_EXPIRED_TTL) } YY_BREAK case 186: YY_RULE_SETUP #line 400 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) } +{ YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) } YY_BREAK case 187: YY_RULE_SETUP #line 401 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_ORIGINAL_TTL) } +{ YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) } YY_BREAK case 188: YY_RULE_SETUP #line 402 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAKE_DSA) } +{ YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) } YY_BREAK case 189: YY_RULE_SETUP #line 403 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAKE_SHA1) } +{ YDVAR(1, VAR_SERVE_ORIGINAL_TTL) } YY_BREAK case 190: YY_RULE_SETUP #line 404 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_LOG_LEVEL) } +{ YDVAR(1, VAR_FAKE_DSA) } YY_BREAK case 191: YY_RULE_SETUP #line 405 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SIZE) } +{ YDVAR(1, VAR_FAKE_SHA1) } YY_BREAK case 192: YY_RULE_SETUP #line 406 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SLABS) } +{ YDVAR(1, VAR_VAL_LOG_LEVEL) } YY_BREAK case 193: YY_RULE_SETUP #line 407 "./util/configlexer.lex" -{ YDVAR(1, VAR_NEG_CACHE_SIZE) } +{ YDVAR(1, VAR_KEY_CACHE_SIZE) } YY_BREAK case 194: YY_RULE_SETUP #line 408 "./util/configlexer.lex" -{ - YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } +{ YDVAR(1, VAR_KEY_CACHE_SLABS) } YY_BREAK case 195: YY_RULE_SETUP -#line 410 "./util/configlexer.lex" -{ YDVAR(1, VAR_ZONEMD_PERMISSIVE_MODE) } +#line 409 "./util/configlexer.lex" +{ YDVAR(1, VAR_NEG_CACHE_SIZE) } YY_BREAK case 196: YY_RULE_SETUP -#line 411 "./util/configlexer.lex" -{ YDVAR(1, VAR_ZONEMD_CHECK) } +#line 410 "./util/configlexer.lex" +{ + YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } YY_BREAK case 197: YY_RULE_SETUP #line 412 "./util/configlexer.lex" -{ YDVAR(1, VAR_ZONEMD_REJECT_ABSENCE) } +{ YDVAR(1, VAR_ZONEMD_PERMISSIVE_MODE) } YY_BREAK case 198: YY_RULE_SETUP #line 413 "./util/configlexer.lex" -{ YDVAR(1, VAR_ADD_HOLDDOWN) } +{ YDVAR(1, VAR_ZONEMD_CHECK) } YY_BREAK case 199: YY_RULE_SETUP #line 414 "./util/configlexer.lex" -{ YDVAR(1, VAR_DEL_HOLDDOWN) } +{ YDVAR(1, VAR_ZONEMD_REJECT_ABSENCE) } YY_BREAK case 200: YY_RULE_SETUP #line 415 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEEP_MISSING) } +{ YDVAR(1, VAR_ADD_HOLDDOWN) } YY_BREAK case 201: YY_RULE_SETUP #line 416 "./util/configlexer.lex" -{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } +{ YDVAR(1, VAR_DEL_HOLDDOWN) } YY_BREAK case 202: YY_RULE_SETUP #line 417 "./util/configlexer.lex" -{ YDVAR(1, VAR_USE_SYSLOG) } +{ YDVAR(1, VAR_KEEP_MISSING) } YY_BREAK case 203: YY_RULE_SETUP #line 418 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_IDENTITY) } +{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } YY_BREAK case 204: YY_RULE_SETUP #line 419 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TIME_ASCII) } +{ YDVAR(1, VAR_USE_SYSLOG) } YY_BREAK case 205: YY_RULE_SETUP #line 420 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_QUERIES) } +{ YDVAR(1, VAR_LOG_IDENTITY) } YY_BREAK case 206: YY_RULE_SETUP #line 421 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_REPLIES) } +{ YDVAR(1, VAR_LOG_TIME_ASCII) } YY_BREAK case 207: YY_RULE_SETUP #line 422 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) } +{ YDVAR(1, VAR_LOG_QUERIES) } YY_BREAK case 208: YY_RULE_SETUP #line 423 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) } +{ YDVAR(1, VAR_LOG_REPLIES) } YY_BREAK case 209: YY_RULE_SETUP #line 424 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_SERVFAIL) } +{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) } YY_BREAK case 210: YY_RULE_SETUP #line 425 "./util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE) } +{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) } YY_BREAK case 211: YY_RULE_SETUP #line 426 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA) } +{ YDVAR(1, VAR_LOG_SERVFAIL) } YY_BREAK case 212: YY_RULE_SETUP #line 427 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA_PTR) } +{ YDVAR(2, VAR_LOCAL_ZONE) } YY_BREAK case 213: YY_RULE_SETUP #line 428 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } +{ YDVAR(1, VAR_LOCAL_DATA) } YY_BREAK case 214: YY_RULE_SETUP #line 429 "./util/configlexer.lex" -{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } +{ YDVAR(1, VAR_LOCAL_DATA_PTR) } YY_BREAK case 215: YY_RULE_SETUP #line 430 "./util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_INTERVAL) } +{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } YY_BREAK case 216: YY_RULE_SETUP #line 431 "./util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } +{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } YY_BREAK case 217: YY_RULE_SETUP #line 432 "./util/configlexer.lex" -{ YDVAR(1, VAR_EXTENDED_STATISTICS) } +{ YDVAR(1, VAR_STATISTICS_INTERVAL) } YY_BREAK case 218: YY_RULE_SETUP #line 433 "./util/configlexer.lex" -{ YDVAR(1, VAR_SHM_ENABLE) } +{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } YY_BREAK case 219: YY_RULE_SETUP #line 434 "./util/configlexer.lex" -{ YDVAR(1, VAR_SHM_KEY) } +{ YDVAR(1, VAR_EXTENDED_STATISTICS) } YY_BREAK case 220: YY_RULE_SETUP #line 435 "./util/configlexer.lex" -{ YDVAR(0, VAR_REMOTE_CONTROL) } +{ YDVAR(1, VAR_SHM_ENABLE) } YY_BREAK case 221: YY_RULE_SETUP #line 436 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_ENABLE) } +{ YDVAR(1, VAR_SHM_KEY) } YY_BREAK case 222: YY_RULE_SETUP #line 437 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_INTERFACE) } +{ YDVAR(0, VAR_REMOTE_CONTROL) } YY_BREAK case 223: YY_RULE_SETUP #line 438 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_PORT) } +{ YDVAR(1, VAR_CONTROL_ENABLE) } YY_BREAK case 224: YY_RULE_SETUP #line 439 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_USE_CERT) } +{ YDVAR(1, VAR_CONTROL_INTERFACE) } YY_BREAK case 225: YY_RULE_SETUP #line 440 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_KEY_FILE) } +{ YDVAR(1, VAR_CONTROL_PORT) } YY_BREAK case 226: YY_RULE_SETUP #line 441 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_CERT_FILE) } +{ YDVAR(1, VAR_CONTROL_USE_CERT) } YY_BREAK case 227: YY_RULE_SETUP #line 442 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_KEY_FILE) } +{ YDVAR(1, VAR_SERVER_KEY_FILE) } YY_BREAK case 228: YY_RULE_SETUP #line 443 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_CERT_FILE) } +{ YDVAR(1, VAR_SERVER_CERT_FILE) } YY_BREAK case 229: YY_RULE_SETUP #line 444 "./util/configlexer.lex" -{ YDVAR(1, VAR_PYTHON_SCRIPT) } +{ YDVAR(1, VAR_CONTROL_KEY_FILE) } YY_BREAK case 230: YY_RULE_SETUP #line 445 "./util/configlexer.lex" -{ YDVAR(0, VAR_PYTHON) } +{ YDVAR(1, VAR_CONTROL_CERT_FILE) } YY_BREAK case 231: YY_RULE_SETUP #line 446 "./util/configlexer.lex" -{ YDVAR(1, VAR_DYNLIB_FILE) } +{ YDVAR(1, VAR_PYTHON_SCRIPT) } YY_BREAK case 232: YY_RULE_SETUP #line 447 "./util/configlexer.lex" -{ YDVAR(0, VAR_DYNLIB) } +{ YDVAR(0, VAR_PYTHON) } YY_BREAK case 233: YY_RULE_SETUP #line 448 "./util/configlexer.lex" -{ YDVAR(1, VAR_DOMAIN_INSECURE) } +{ YDVAR(1, VAR_DYNLIB_FILE) } YY_BREAK case 234: YY_RULE_SETUP #line 449 "./util/configlexer.lex" -{ YDVAR(1, VAR_MINIMAL_RESPONSES) } +{ YDVAR(0, VAR_DYNLIB) } YY_BREAK case 235: YY_RULE_SETUP #line 450 "./util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } +{ YDVAR(1, VAR_DOMAIN_INSECURE) } YY_BREAK case 236: YY_RULE_SETUP #line 451 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } +{ YDVAR(1, VAR_MINIMAL_RESPONSES) } YY_BREAK case 237: YY_RULE_SETUP #line 452 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_UDP_SIZE) } +{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } YY_BREAK case 238: YY_RULE_SETUP #line 453 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_PREFIX) } +{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } YY_BREAK case 239: YY_RULE_SETUP #line 454 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_SYNTHALL) } +{ YDVAR(1, VAR_MAX_UDP_SIZE) } YY_BREAK case 240: YY_RULE_SETUP #line 455 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } +{ YDVAR(1, VAR_DNS64_PREFIX) } YY_BREAK case 241: YY_RULE_SETUP #line 456 "./util/configlexer.lex" -{ YDVAR(1, VAR_DEFINE_TAG) } +{ YDVAR(1, VAR_DNS64_SYNTHALL) } YY_BREAK case 242: YY_RULE_SETUP #line 457 "./util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } +{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } YY_BREAK case 243: YY_RULE_SETUP #line 458 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } +{ YDVAR(1, VAR_DEFINE_TAG) } YY_BREAK case 244: YY_RULE_SETUP #line 459 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } +{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } YY_BREAK case 245: YY_RULE_SETUP #line 460 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } +{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } YY_BREAK case 246: YY_RULE_SETUP #line 461 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } YY_BREAK case 247: YY_RULE_SETUP #line 462 "./util/configlexer.lex" -{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } YY_BREAK case 248: YY_RULE_SETUP #line 463 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSTAP) } +{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } YY_BREAK case 249: YY_RULE_SETUP #line 464 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_ENABLE) } +{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } YY_BREAK case 250: YY_RULE_SETUP #line 465 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_BIDIRECTIONAL) } +{ YDVAR(0, VAR_DNSTAP) } YY_BREAK case 251: YY_RULE_SETUP #line 466 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } +{ YDVAR(1, VAR_DNSTAP_ENABLE) } YY_BREAK case 252: YY_RULE_SETUP #line 467 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IP) } +{ YDVAR(1, VAR_DNSTAP_BIDIRECTIONAL) } YY_BREAK case 253: YY_RULE_SETUP #line 468 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS) } +{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } YY_BREAK case 254: YY_RULE_SETUP #line 469 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } +{ YDVAR(1, VAR_DNSTAP_IP) } YY_BREAK case 255: YY_RULE_SETUP #line 470 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } +{ YDVAR(1, VAR_DNSTAP_TLS) } YY_BREAK case 256: YY_RULE_SETUP #line 471 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } +{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } YY_BREAK case 257: YY_RULE_SETUP -#line 473 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } +#line 472 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } YY_BREAK case 258: YY_RULE_SETUP -#line 475 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } +#line 473 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } YY_BREAK case 259: YY_RULE_SETUP -#line 476 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } +#line 475 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } YY_BREAK case 260: YY_RULE_SETUP #line 477 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IDENTITY) } +{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } YY_BREAK case 261: YY_RULE_SETUP #line 478 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_VERSION) } +{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } YY_BREAK case 262: YY_RULE_SETUP #line 479 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } +{ YDVAR(1, VAR_DNSTAP_IDENTITY) } YY_BREAK case 263: YY_RULE_SETUP -#line 481 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } +#line 480 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_VERSION) } YY_BREAK case 264: YY_RULE_SETUP -#line 483 "./util/configlexer.lex" +#line 481 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } YY_BREAK case 265: YY_RULE_SETUP -#line 485 "./util/configlexer.lex" +#line 483 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } YY_BREAK case 266: YY_RULE_SETUP -#line 487 "./util/configlexer.lex" +#line 485 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } YY_BREAK case 267: YY_RULE_SETUP -#line 489 "./util/configlexer.lex" +#line 487 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } YY_BREAK case 268: YY_RULE_SETUP -#line 491 "./util/configlexer.lex" -{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } +#line 489 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } YY_BREAK case 269: YY_RULE_SETUP -#line 492 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT) } +#line 491 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } YY_BREAK case 270: YY_RULE_SETUP #line 493 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT) } +{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } YY_BREAK case 271: YY_RULE_SETUP #line 494 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_IP_RATELIMIT) } YY_BREAK case 272: YY_RULE_SETUP #line 495 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_RATELIMIT) } YY_BREAK case 273: YY_RULE_SETUP #line 496 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } YY_BREAK case 274: YY_RULE_SETUP #line 497 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_RATELIMIT_SLABS) } YY_BREAK case 275: YY_RULE_SETUP #line 498 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } +{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } YY_BREAK case 276: YY_RULE_SETUP #line 499 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } +{ YDVAR(1, VAR_RATELIMIT_SIZE) } YY_BREAK case 277: YY_RULE_SETUP #line 500 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } +{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } YY_BREAK case 278: YY_RULE_SETUP #line 501 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_FACTOR) } +{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } YY_BREAK case 279: YY_RULE_SETUP #line 502 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOW_RTT) } +{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } YY_BREAK case 280: YY_RULE_SETUP #line 503 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_NUM) } +{ YDVAR(1, VAR_RATELIMIT_FACTOR) } YY_BREAK case 281: YY_RULE_SETUP #line 504 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } +{ YDVAR(1, VAR_LOW_RTT) } YY_BREAK case 282: YY_RULE_SETUP #line 505 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } +{ YDVAR(1, VAR_FAST_SERVER_NUM) } YY_BREAK case 283: YY_RULE_SETUP @@ -5013,240 +5030,250 @@ YY_RULE_SETUP case 284: YY_RULE_SETUP #line 507 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_TAG) } +{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 285: YY_RULE_SETUP #line 508 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP) } +{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 286: YY_RULE_SETUP #line 509 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_DATA) } +{ YDVAR(2, VAR_RESPONSE_IP_TAG) } YY_BREAK case 287: YY_RULE_SETUP #line 510 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSCRYPT) } +{ YDVAR(2, VAR_RESPONSE_IP) } YY_BREAK case 288: YY_RULE_SETUP #line 511 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } +{ YDVAR(2, VAR_RESPONSE_IP_DATA) } YY_BREAK case 289: YY_RULE_SETUP #line 512 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PORT) } +{ YDVAR(0, VAR_DNSCRYPT) } YY_BREAK case 290: YY_RULE_SETUP #line 513 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } +{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } YY_BREAK case 291: YY_RULE_SETUP #line 514 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } +{ YDVAR(1, VAR_DNSCRYPT_PORT) } YY_BREAK case 292: YY_RULE_SETUP #line 515 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } YY_BREAK case 293: YY_RULE_SETUP #line 516 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } +{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } YY_BREAK case 294: YY_RULE_SETUP #line 517 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } YY_BREAK case 295: YY_RULE_SETUP -#line 519 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } +#line 518 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } YY_BREAK case 296: YY_RULE_SETUP -#line 521 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } +#line 519 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } YY_BREAK case 297: YY_RULE_SETUP -#line 522 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } +#line 521 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } YY_BREAK case 298: YY_RULE_SETUP #line 523 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_RESPONSES) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } YY_BREAK case 299: YY_RULE_SETUP #line 524 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } YY_BREAK case 300: YY_RULE_SETUP #line 525 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_QUERIES) } +{ YDVAR(1, VAR_PAD_RESPONSES) } YY_BREAK case 301: YY_RULE_SETUP #line 526 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) } +{ YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) } YY_BREAK case 302: YY_RULE_SETUP #line 527 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_ENABLED) } +{ YDVAR(1, VAR_PAD_QUERIES) } YY_BREAK case 303: YY_RULE_SETUP #line 528 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } +{ YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) } YY_BREAK case 304: YY_RULE_SETUP #line 529 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_HOOK) } +{ YDVAR(1, VAR_IPSECMOD_ENABLED) } YY_BREAK case 305: YY_RULE_SETUP #line 530 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } +{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } YY_BREAK case 306: YY_RULE_SETUP #line 531 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } +{ YDVAR(1, VAR_IPSECMOD_HOOK) } YY_BREAK case 307: YY_RULE_SETUP #line 532 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } +{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } YY_BREAK case 308: YY_RULE_SETUP #line 533 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_STRICT) } +{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } YY_BREAK case 309: YY_RULE_SETUP #line 534 "./util/configlexer.lex" -{ YDVAR(0, VAR_CACHEDB) } +{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } YY_BREAK case 310: YY_RULE_SETUP #line 535 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_BACKEND) } +{ YDVAR(1, VAR_IPSECMOD_STRICT) } YY_BREAK case 311: YY_RULE_SETUP #line 536 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } +{ YDVAR(0, VAR_CACHEDB) } YY_BREAK case 312: YY_RULE_SETUP #line 537 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISHOST) } +{ YDVAR(1, VAR_CACHEDB_BACKEND) } YY_BREAK case 313: YY_RULE_SETUP #line 538 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISPORT) } +{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } YY_BREAK case 314: YY_RULE_SETUP #line 539 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } +{ YDVAR(1, VAR_CACHEDB_REDISHOST) } YY_BREAK case 315: YY_RULE_SETUP #line 540 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } +{ YDVAR(1, VAR_CACHEDB_REDISPORT) } YY_BREAK case 316: YY_RULE_SETUP #line 541 "./util/configlexer.lex" -{ YDVAR(0, VAR_IPSET) } +{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } YY_BREAK case 317: YY_RULE_SETUP #line 542 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V4) } +{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } YY_BREAK case 318: YY_RULE_SETUP #line 543 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V6) } +{ YDVAR(0, VAR_IPSET) } YY_BREAK case 319: YY_RULE_SETUP #line 544 "./util/configlexer.lex" -{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } +{ YDVAR(1, VAR_IPSET_NAME_V4) } YY_BREAK case 320: YY_RULE_SETUP #line 545 "./util/configlexer.lex" -{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } +{ YDVAR(1, VAR_IPSET_NAME_V6) } YY_BREAK case 321: YY_RULE_SETUP #line 546 "./util/configlexer.lex" -{ YDVAR(2, VAR_EDNS_CLIENT_STRING) } +{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } YY_BREAK case 322: YY_RULE_SETUP #line 547 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) } +{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } YY_BREAK case 323: YY_RULE_SETUP #line 548 "./util/configlexer.lex" -{ YDVAR(1, VAR_NSID ) } +{ YDVAR(2, VAR_EDNS_CLIENT_STRING) } YY_BREAK case 324: -/* rule 324 can match eol */ YY_RULE_SETUP #line 549 "./util/configlexer.lex" +{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) } + YY_BREAK +case 325: +YY_RULE_SETUP +#line 550 "./util/configlexer.lex" +{ YDVAR(1, VAR_NSID ) } + YY_BREAK +case 326: +/* rule 326 can match eol */ +YY_RULE_SETUP +#line 551 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK /* Quoted strings. Strip leading and ending quotes */ -case 325: +case 327: YY_RULE_SETUP -#line 552 "./util/configlexer.lex" +#line 554 "./util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 553 "./util/configlexer.lex" +#line 555 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 326: +case 328: YY_RULE_SETUP -#line 558 "./util/configlexer.lex" +#line 560 "./util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK -case 327: -/* rule 327 can match eol */ +case 329: +/* rule 329 can match eol */ YY_RULE_SETUP -#line 559 "./util/configlexer.lex" +#line 561 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 328: +case 330: YY_RULE_SETUP -#line 561 "./util/configlexer.lex" +#line 563 "./util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -5259,34 +5286,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 329: +case 331: YY_RULE_SETUP -#line 573 "./util/configlexer.lex" +#line 575 "./util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 574 "./util/configlexer.lex" +#line 576 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 330: +case 332: YY_RULE_SETUP -#line 579 "./util/configlexer.lex" +#line 581 "./util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK -case 331: -/* rule 331 can match eol */ +case 333: +/* rule 333 can match eol */ YY_RULE_SETUP -#line 580 "./util/configlexer.lex" +#line 582 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 332: +case 334: YY_RULE_SETUP -#line 582 "./util/configlexer.lex" +#line 584 "./util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -5299,38 +5326,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 333: +case 335: YY_RULE_SETUP -#line 594 "./util/configlexer.lex" +#line 596 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 596 "./util/configlexer.lex" +#line 598 "./util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); } YY_BREAK -case 334: -YY_RULE_SETUP -#line 600 "./util/configlexer.lex" -{ LEXOUT(("ISP ")); /* ignore */ } - YY_BREAK -case 335: -/* rule 335 can match eol */ -YY_RULE_SETUP -#line 601 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++;} - YY_BREAK case 336: YY_RULE_SETUP #line 602 "./util/configlexer.lex" -{ LEXOUT(("IQS ")); BEGIN(include_quoted); } +{ LEXOUT(("ISP ")); /* ignore */ } YY_BREAK case 337: +/* rule 337 can match eol */ YY_RULE_SETUP #line 603 "./util/configlexer.lex" +{ LEXOUT(("NL\n")); cfg_parser->line++;} + YY_BREAK +case 338: +YY_RULE_SETUP +#line 604 "./util/configlexer.lex" +{ LEXOUT(("IQS ")); BEGIN(include_quoted); } + YY_BREAK +case 339: +YY_RULE_SETUP +#line 605 "./util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 0); @@ -5338,27 +5365,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 608 "./util/configlexer.lex" +#line 610 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 338: +case 340: YY_RULE_SETUP -#line 612 "./util/configlexer.lex" +#line 614 "./util/configlexer.lex" { LEXOUT(("ISTR(%s) ", yytext)); yymore(); } YY_BREAK -case 339: -/* rule 339 can match eol */ +case 341: +/* rule 341 can match eol */ YY_RULE_SETUP -#line 613 "./util/configlexer.lex" +#line 615 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 340: +case 342: YY_RULE_SETUP -#line 615 "./util/configlexer.lex" +#line 617 "./util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -5368,7 +5395,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 621 "./util/configlexer.lex" +#line 623 "./util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ @@ -5383,39 +5410,39 @@ case YY_STATE_EOF(val): } YY_BREAK /* include-toplevel: directive */ -case 341: +case 343: YY_RULE_SETUP -#line 635 "./util/configlexer.lex" +#line 637 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include_toplevel); } YY_BREAK case YY_STATE_EOF(include_toplevel): -#line 638 "./util/configlexer.lex" +#line 640 "./util/configlexer.lex" { yyerror("EOF inside include_toplevel directive"); BEGIN(inc_prev); } YY_BREAK -case 342: -YY_RULE_SETUP -#line 642 "./util/configlexer.lex" -{ LEXOUT(("ITSP ")); /* ignore */ } - YY_BREAK -case 343: -/* rule 343 can match eol */ -YY_RULE_SETUP -#line 643 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++; } - YY_BREAK case 344: YY_RULE_SETUP #line 644 "./util/configlexer.lex" -{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } +{ LEXOUT(("ITSP ")); /* ignore */ } YY_BREAK case 345: +/* rule 345 can match eol */ YY_RULE_SETUP #line 645 "./util/configlexer.lex" +{ LEXOUT(("NL\n")); cfg_parser->line++; } + YY_BREAK +case 346: +YY_RULE_SETUP +#line 646 "./util/configlexer.lex" +{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } + YY_BREAK +case 347: +YY_RULE_SETUP +#line 647 "./util/configlexer.lex" { LEXOUT(("ITunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 1); @@ -5424,29 +5451,29 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_toplevel_quoted): -#line 651 "./util/configlexer.lex" +#line 653 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 346: +case 348: YY_RULE_SETUP -#line 655 "./util/configlexer.lex" +#line 657 "./util/configlexer.lex" { LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } YY_BREAK -case 347: -/* rule 347 can match eol */ +case 349: +/* rule 349 can match eol */ YY_RULE_SETUP -#line 656 "./util/configlexer.lex" +#line 658 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 348: +case 350: YY_RULE_SETUP -#line 660 "./util/configlexer.lex" +#line 662 "./util/configlexer.lex" { LEXOUT(("ITQE ")); yytext[yyleng - 1] = '\0'; @@ -5455,33 +5482,33 @@ YY_RULE_SETUP return (VAR_FORCE_TOPLEVEL); } YY_BREAK -case 349: +case 351: YY_RULE_SETUP -#line 668 "./util/configlexer.lex" +#line 670 "./util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 350: +case 352: YY_RULE_SETUP -#line 672 "./util/configlexer.lex" +#line 674 "./util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 351: +case 353: YY_RULE_SETUP -#line 676 "./util/configlexer.lex" +#line 678 "./util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 352: +case 354: YY_RULE_SETUP -#line 680 "./util/configlexer.lex" +#line 682 "./util/configlexer.lex" ECHO; YY_BREAK -#line 5482 "" +#line 5509 "" case YY_END_OF_BUFFER: { @@ -5776,7 +5803,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 >= 3484 ) + if ( yy_current_state >= 3508 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -5804,11 +5831,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 >= 3484 ) + if ( yy_current_state >= 3508 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 3483); + yy_is_jam = (yy_current_state == 3507); return yy_is_jam ? 0 : yy_current_state; } @@ -6447,6 +6474,6 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 680 "./util/configlexer.lex" +#line 682 "./util/configlexer.lex" diff --git a/util/configparser.c b/util/configparser.c index d2fceed4d..317bc2ad5 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -1,4 +1,4 @@ -/* A Bison parser, made by GNU Bison 3.7.4. */ +/* A Bison parser, made by GNU Bison 3.6.4. */ /* Bison implementation for Yacc-like parsers in C @@ -45,11 +45,11 @@ define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ -/* Identify Bison output, and Bison version. */ -#define YYBISON 30704 +/* Identify Bison output. */ +#define YYBISON 1 -/* Bison version string. */ -#define YYBISON_VERSION "3.7.4" +/* Bison version. */ +#define YYBISON_VERSION "3.6.4" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -119,7 +119,691 @@ extern struct config_parser_state* cfg_parser; # endif # endif -#include "configparser.h" +/* Use api.header.include to #include this header + instead of duplicating it here. */ +#ifndef YY_YY_UTIL_CONFIGPARSER_H_INCLUDED +# define YY_YY_UTIL_CONFIGPARSER_H_INCLUDED +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int yydebug; +#endif + +/* Token kinds. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + enum yytokentype + { + YYEMPTY = -2, + YYEOF = 0, /* "end of file" */ + YYerror = 256, /* error */ + YYUNDEF = 257, /* "invalid token" */ + SPACE = 258, /* SPACE */ + LETTER = 259, /* LETTER */ + NEWLINE = 260, /* NEWLINE */ + COMMENT = 261, /* COMMENT */ + COLON = 262, /* COLON */ + ANY = 263, /* ANY */ + ZONESTR = 264, /* ZONESTR */ + STRING_ARG = 265, /* STRING_ARG */ + VAR_FORCE_TOPLEVEL = 266, /* VAR_FORCE_TOPLEVEL */ + VAR_SERVER = 267, /* VAR_SERVER */ + VAR_VERBOSITY = 268, /* VAR_VERBOSITY */ + VAR_NUM_THREADS = 269, /* VAR_NUM_THREADS */ + VAR_PORT = 270, /* VAR_PORT */ + VAR_OUTGOING_RANGE = 271, /* VAR_OUTGOING_RANGE */ + VAR_INTERFACE = 272, /* VAR_INTERFACE */ + VAR_PREFER_IP4 = 273, /* VAR_PREFER_IP4 */ + VAR_DO_IP4 = 274, /* VAR_DO_IP4 */ + VAR_DO_IP6 = 275, /* VAR_DO_IP6 */ + VAR_PREFER_IP6 = 276, /* VAR_PREFER_IP6 */ + VAR_DO_UDP = 277, /* VAR_DO_UDP */ + VAR_DO_TCP = 278, /* VAR_DO_TCP */ + VAR_TCP_MSS = 279, /* VAR_TCP_MSS */ + VAR_OUTGOING_TCP_MSS = 280, /* VAR_OUTGOING_TCP_MSS */ + VAR_TCP_IDLE_TIMEOUT = 281, /* VAR_TCP_IDLE_TIMEOUT */ + VAR_EDNS_TCP_KEEPALIVE = 282, /* VAR_EDNS_TCP_KEEPALIVE */ + VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 283, /* VAR_EDNS_TCP_KEEPALIVE_TIMEOUT */ + VAR_CHROOT = 284, /* VAR_CHROOT */ + VAR_USERNAME = 285, /* VAR_USERNAME */ + VAR_DIRECTORY = 286, /* VAR_DIRECTORY */ + VAR_LOGFILE = 287, /* VAR_LOGFILE */ + VAR_PIDFILE = 288, /* VAR_PIDFILE */ + VAR_MSG_CACHE_SIZE = 289, /* VAR_MSG_CACHE_SIZE */ + VAR_MSG_CACHE_SLABS = 290, /* VAR_MSG_CACHE_SLABS */ + VAR_NUM_QUERIES_PER_THREAD = 291, /* VAR_NUM_QUERIES_PER_THREAD */ + VAR_RRSET_CACHE_SIZE = 292, /* VAR_RRSET_CACHE_SIZE */ + VAR_RRSET_CACHE_SLABS = 293, /* VAR_RRSET_CACHE_SLABS */ + VAR_OUTGOING_NUM_TCP = 294, /* VAR_OUTGOING_NUM_TCP */ + VAR_INFRA_HOST_TTL = 295, /* VAR_INFRA_HOST_TTL */ + VAR_INFRA_LAME_TTL = 296, /* VAR_INFRA_LAME_TTL */ + VAR_INFRA_CACHE_SLABS = 297, /* VAR_INFRA_CACHE_SLABS */ + VAR_INFRA_CACHE_NUMHOSTS = 298, /* VAR_INFRA_CACHE_NUMHOSTS */ + VAR_INFRA_CACHE_LAME_SIZE = 299, /* VAR_INFRA_CACHE_LAME_SIZE */ + VAR_NAME = 300, /* VAR_NAME */ + VAR_STUB_ZONE = 301, /* VAR_STUB_ZONE */ + VAR_STUB_HOST = 302, /* VAR_STUB_HOST */ + VAR_STUB_ADDR = 303, /* VAR_STUB_ADDR */ + VAR_TARGET_FETCH_POLICY = 304, /* VAR_TARGET_FETCH_POLICY */ + VAR_HARDEN_SHORT_BUFSIZE = 305, /* VAR_HARDEN_SHORT_BUFSIZE */ + VAR_HARDEN_LARGE_QUERIES = 306, /* VAR_HARDEN_LARGE_QUERIES */ + VAR_FORWARD_ZONE = 307, /* VAR_FORWARD_ZONE */ + VAR_FORWARD_HOST = 308, /* VAR_FORWARD_HOST */ + VAR_FORWARD_ADDR = 309, /* VAR_FORWARD_ADDR */ + VAR_DO_NOT_QUERY_ADDRESS = 310, /* VAR_DO_NOT_QUERY_ADDRESS */ + VAR_HIDE_IDENTITY = 311, /* VAR_HIDE_IDENTITY */ + VAR_HIDE_VERSION = 312, /* VAR_HIDE_VERSION */ + VAR_IDENTITY = 313, /* VAR_IDENTITY */ + VAR_VERSION = 314, /* VAR_VERSION */ + VAR_HARDEN_GLUE = 315, /* VAR_HARDEN_GLUE */ + VAR_MODULE_CONF = 316, /* VAR_MODULE_CONF */ + VAR_TRUST_ANCHOR_FILE = 317, /* VAR_TRUST_ANCHOR_FILE */ + VAR_TRUST_ANCHOR = 318, /* VAR_TRUST_ANCHOR */ + VAR_VAL_OVERRIDE_DATE = 319, /* VAR_VAL_OVERRIDE_DATE */ + VAR_BOGUS_TTL = 320, /* VAR_BOGUS_TTL */ + VAR_VAL_CLEAN_ADDITIONAL = 321, /* VAR_VAL_CLEAN_ADDITIONAL */ + VAR_VAL_PERMISSIVE_MODE = 322, /* VAR_VAL_PERMISSIVE_MODE */ + VAR_INCOMING_NUM_TCP = 323, /* VAR_INCOMING_NUM_TCP */ + VAR_MSG_BUFFER_SIZE = 324, /* VAR_MSG_BUFFER_SIZE */ + VAR_KEY_CACHE_SIZE = 325, /* VAR_KEY_CACHE_SIZE */ + VAR_KEY_CACHE_SLABS = 326, /* VAR_KEY_CACHE_SLABS */ + VAR_TRUSTED_KEYS_FILE = 327, /* VAR_TRUSTED_KEYS_FILE */ + VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 328, /* VAR_VAL_NSEC3_KEYSIZE_ITERATIONS */ + VAR_USE_SYSLOG = 329, /* VAR_USE_SYSLOG */ + VAR_OUTGOING_INTERFACE = 330, /* VAR_OUTGOING_INTERFACE */ + VAR_ROOT_HINTS = 331, /* VAR_ROOT_HINTS */ + VAR_DO_NOT_QUERY_LOCALHOST = 332, /* VAR_DO_NOT_QUERY_LOCALHOST */ + VAR_CACHE_MAX_TTL = 333, /* VAR_CACHE_MAX_TTL */ + VAR_HARDEN_DNSSEC_STRIPPED = 334, /* VAR_HARDEN_DNSSEC_STRIPPED */ + VAR_ACCESS_CONTROL = 335, /* VAR_ACCESS_CONTROL */ + VAR_LOCAL_ZONE = 336, /* VAR_LOCAL_ZONE */ + VAR_LOCAL_DATA = 337, /* VAR_LOCAL_DATA */ + VAR_INTERFACE_AUTOMATIC = 338, /* VAR_INTERFACE_AUTOMATIC */ + VAR_STATISTICS_INTERVAL = 339, /* VAR_STATISTICS_INTERVAL */ + VAR_DO_DAEMONIZE = 340, /* VAR_DO_DAEMONIZE */ + VAR_USE_CAPS_FOR_ID = 341, /* VAR_USE_CAPS_FOR_ID */ + VAR_STATISTICS_CUMULATIVE = 342, /* VAR_STATISTICS_CUMULATIVE */ + VAR_OUTGOING_PORT_PERMIT = 343, /* VAR_OUTGOING_PORT_PERMIT */ + VAR_OUTGOING_PORT_AVOID = 344, /* VAR_OUTGOING_PORT_AVOID */ + VAR_DLV_ANCHOR_FILE = 345, /* VAR_DLV_ANCHOR_FILE */ + VAR_DLV_ANCHOR = 346, /* VAR_DLV_ANCHOR */ + VAR_NEG_CACHE_SIZE = 347, /* VAR_NEG_CACHE_SIZE */ + VAR_HARDEN_REFERRAL_PATH = 348, /* VAR_HARDEN_REFERRAL_PATH */ + VAR_PRIVATE_ADDRESS = 349, /* VAR_PRIVATE_ADDRESS */ + VAR_PRIVATE_DOMAIN = 350, /* VAR_PRIVATE_DOMAIN */ + VAR_REMOTE_CONTROL = 351, /* VAR_REMOTE_CONTROL */ + VAR_CONTROL_ENABLE = 352, /* VAR_CONTROL_ENABLE */ + VAR_CONTROL_INTERFACE = 353, /* VAR_CONTROL_INTERFACE */ + VAR_CONTROL_PORT = 354, /* VAR_CONTROL_PORT */ + VAR_SERVER_KEY_FILE = 355, /* VAR_SERVER_KEY_FILE */ + VAR_SERVER_CERT_FILE = 356, /* VAR_SERVER_CERT_FILE */ + VAR_CONTROL_KEY_FILE = 357, /* VAR_CONTROL_KEY_FILE */ + VAR_CONTROL_CERT_FILE = 358, /* VAR_CONTROL_CERT_FILE */ + VAR_CONTROL_USE_CERT = 359, /* VAR_CONTROL_USE_CERT */ + VAR_TCP_REUSE_TIMEOUT = 360, /* VAR_TCP_REUSE_TIMEOUT */ + VAR_MAX_REUSE_TCP_QUERIES = 361, /* VAR_MAX_REUSE_TCP_QUERIES */ + VAR_EXTENDED_STATISTICS = 362, /* VAR_EXTENDED_STATISTICS */ + VAR_LOCAL_DATA_PTR = 363, /* VAR_LOCAL_DATA_PTR */ + VAR_JOSTLE_TIMEOUT = 364, /* VAR_JOSTLE_TIMEOUT */ + VAR_STUB_PRIME = 365, /* VAR_STUB_PRIME */ + VAR_UNWANTED_REPLY_THRESHOLD = 366, /* VAR_UNWANTED_REPLY_THRESHOLD */ + VAR_LOG_TIME_ASCII = 367, /* VAR_LOG_TIME_ASCII */ + VAR_DOMAIN_INSECURE = 368, /* VAR_DOMAIN_INSECURE */ + VAR_PYTHON = 369, /* VAR_PYTHON */ + VAR_PYTHON_SCRIPT = 370, /* VAR_PYTHON_SCRIPT */ + VAR_VAL_SIG_SKEW_MIN = 371, /* VAR_VAL_SIG_SKEW_MIN */ + VAR_VAL_SIG_SKEW_MAX = 372, /* VAR_VAL_SIG_SKEW_MAX */ + VAR_VAL_MAX_RESTART = 373, /* VAR_VAL_MAX_RESTART */ + VAR_CACHE_MIN_TTL = 374, /* VAR_CACHE_MIN_TTL */ + VAR_VAL_LOG_LEVEL = 375, /* VAR_VAL_LOG_LEVEL */ + VAR_AUTO_TRUST_ANCHOR_FILE = 376, /* VAR_AUTO_TRUST_ANCHOR_FILE */ + VAR_KEEP_MISSING = 377, /* VAR_KEEP_MISSING */ + VAR_ADD_HOLDDOWN = 378, /* VAR_ADD_HOLDDOWN */ + VAR_DEL_HOLDDOWN = 379, /* VAR_DEL_HOLDDOWN */ + VAR_SO_RCVBUF = 380, /* VAR_SO_RCVBUF */ + VAR_EDNS_BUFFER_SIZE = 381, /* VAR_EDNS_BUFFER_SIZE */ + VAR_PREFETCH = 382, /* VAR_PREFETCH */ + VAR_PREFETCH_KEY = 383, /* VAR_PREFETCH_KEY */ + VAR_SO_SNDBUF = 384, /* VAR_SO_SNDBUF */ + VAR_SO_REUSEPORT = 385, /* VAR_SO_REUSEPORT */ + VAR_HARDEN_BELOW_NXDOMAIN = 386, /* VAR_HARDEN_BELOW_NXDOMAIN */ + VAR_IGNORE_CD_FLAG = 387, /* VAR_IGNORE_CD_FLAG */ + VAR_LOG_QUERIES = 388, /* VAR_LOG_QUERIES */ + VAR_LOG_REPLIES = 389, /* VAR_LOG_REPLIES */ + VAR_LOG_LOCAL_ACTIONS = 390, /* VAR_LOG_LOCAL_ACTIONS */ + VAR_TCP_UPSTREAM = 391, /* VAR_TCP_UPSTREAM */ + VAR_SSL_UPSTREAM = 392, /* VAR_SSL_UPSTREAM */ + VAR_TCP_AUTH_QUERY_TIMEOUT = 393, /* VAR_TCP_AUTH_QUERY_TIMEOUT */ + VAR_SSL_SERVICE_KEY = 394, /* VAR_SSL_SERVICE_KEY */ + VAR_SSL_SERVICE_PEM = 395, /* VAR_SSL_SERVICE_PEM */ + VAR_SSL_PORT = 396, /* VAR_SSL_PORT */ + VAR_FORWARD_FIRST = 397, /* VAR_FORWARD_FIRST */ + VAR_STUB_SSL_UPSTREAM = 398, /* VAR_STUB_SSL_UPSTREAM */ + VAR_FORWARD_SSL_UPSTREAM = 399, /* VAR_FORWARD_SSL_UPSTREAM */ + VAR_TLS_CERT_BUNDLE = 400, /* VAR_TLS_CERT_BUNDLE */ + VAR_STUB_TCP_UPSTREAM = 401, /* VAR_STUB_TCP_UPSTREAM */ + VAR_FORWARD_TCP_UPSTREAM = 402, /* VAR_FORWARD_TCP_UPSTREAM */ + VAR_HTTPS_PORT = 403, /* VAR_HTTPS_PORT */ + VAR_HTTP_ENDPOINT = 404, /* VAR_HTTP_ENDPOINT */ + VAR_HTTP_MAX_STREAMS = 405, /* VAR_HTTP_MAX_STREAMS */ + VAR_HTTP_QUERY_BUFFER_SIZE = 406, /* VAR_HTTP_QUERY_BUFFER_SIZE */ + VAR_HTTP_RESPONSE_BUFFER_SIZE = 407, /* VAR_HTTP_RESPONSE_BUFFER_SIZE */ + VAR_HTTP_NODELAY = 408, /* VAR_HTTP_NODELAY */ + VAR_HTTP_NOTLS_DOWNSTREAM = 409, /* VAR_HTTP_NOTLS_DOWNSTREAM */ + VAR_STUB_FIRST = 410, /* VAR_STUB_FIRST */ + VAR_MINIMAL_RESPONSES = 411, /* VAR_MINIMAL_RESPONSES */ + VAR_RRSET_ROUNDROBIN = 412, /* VAR_RRSET_ROUNDROBIN */ + VAR_MAX_UDP_SIZE = 413, /* VAR_MAX_UDP_SIZE */ + VAR_DELAY_CLOSE = 414, /* VAR_DELAY_CLOSE */ + VAR_UDP_CONNECT = 415, /* VAR_UDP_CONNECT */ + VAR_UNBLOCK_LAN_ZONES = 416, /* VAR_UNBLOCK_LAN_ZONES */ + VAR_INSECURE_LAN_ZONES = 417, /* VAR_INSECURE_LAN_ZONES */ + VAR_INFRA_CACHE_MIN_RTT = 418, /* VAR_INFRA_CACHE_MIN_RTT */ + VAR_INFRA_KEEP_PROBING = 419, /* VAR_INFRA_KEEP_PROBING */ + VAR_DNS64_PREFIX = 420, /* VAR_DNS64_PREFIX */ + VAR_DNS64_SYNTHALL = 421, /* VAR_DNS64_SYNTHALL */ + VAR_DNS64_IGNORE_AAAA = 422, /* VAR_DNS64_IGNORE_AAAA */ + VAR_DNSTAP = 423, /* VAR_DNSTAP */ + VAR_DNSTAP_ENABLE = 424, /* VAR_DNSTAP_ENABLE */ + VAR_DNSTAP_SOCKET_PATH = 425, /* VAR_DNSTAP_SOCKET_PATH */ + VAR_DNSTAP_IP = 426, /* VAR_DNSTAP_IP */ + VAR_DNSTAP_TLS = 427, /* VAR_DNSTAP_TLS */ + VAR_DNSTAP_TLS_SERVER_NAME = 428, /* VAR_DNSTAP_TLS_SERVER_NAME */ + VAR_DNSTAP_TLS_CERT_BUNDLE = 429, /* VAR_DNSTAP_TLS_CERT_BUNDLE */ + VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 430, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE */ + VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 431, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE */ + VAR_DNSTAP_SEND_IDENTITY = 432, /* VAR_DNSTAP_SEND_IDENTITY */ + VAR_DNSTAP_SEND_VERSION = 433, /* VAR_DNSTAP_SEND_VERSION */ + VAR_DNSTAP_BIDIRECTIONAL = 434, /* VAR_DNSTAP_BIDIRECTIONAL */ + VAR_DNSTAP_IDENTITY = 435, /* VAR_DNSTAP_IDENTITY */ + VAR_DNSTAP_VERSION = 436, /* VAR_DNSTAP_VERSION */ + VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 437, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES */ + VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 438, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES */ + VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 439, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES */ + VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 440, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES */ + VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 441, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES */ + VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 442, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES */ + VAR_RESPONSE_IP_TAG = 443, /* VAR_RESPONSE_IP_TAG */ + VAR_RESPONSE_IP = 444, /* VAR_RESPONSE_IP */ + VAR_RESPONSE_IP_DATA = 445, /* VAR_RESPONSE_IP_DATA */ + VAR_HARDEN_ALGO_DOWNGRADE = 446, /* VAR_HARDEN_ALGO_DOWNGRADE */ + VAR_IP_TRANSPARENT = 447, /* VAR_IP_TRANSPARENT */ + VAR_IP_DSCP = 448, /* VAR_IP_DSCP */ + VAR_DISABLE_DNSSEC_LAME_CHECK = 449, /* VAR_DISABLE_DNSSEC_LAME_CHECK */ + VAR_IP_RATELIMIT = 450, /* VAR_IP_RATELIMIT */ + VAR_IP_RATELIMIT_SLABS = 451, /* VAR_IP_RATELIMIT_SLABS */ + VAR_IP_RATELIMIT_SIZE = 452, /* VAR_IP_RATELIMIT_SIZE */ + VAR_RATELIMIT = 453, /* VAR_RATELIMIT */ + VAR_RATELIMIT_SLABS = 454, /* VAR_RATELIMIT_SLABS */ + VAR_RATELIMIT_SIZE = 455, /* VAR_RATELIMIT_SIZE */ + VAR_RATELIMIT_FOR_DOMAIN = 456, /* VAR_RATELIMIT_FOR_DOMAIN */ + VAR_RATELIMIT_BELOW_DOMAIN = 457, /* VAR_RATELIMIT_BELOW_DOMAIN */ + VAR_IP_RATELIMIT_FACTOR = 458, /* VAR_IP_RATELIMIT_FACTOR */ + VAR_RATELIMIT_FACTOR = 459, /* VAR_RATELIMIT_FACTOR */ + VAR_SEND_CLIENT_SUBNET = 460, /* VAR_SEND_CLIENT_SUBNET */ + VAR_CLIENT_SUBNET_ZONE = 461, /* VAR_CLIENT_SUBNET_ZONE */ + VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 462, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ + VAR_CLIENT_SUBNET_OPCODE = 463, /* VAR_CLIENT_SUBNET_OPCODE */ + VAR_MAX_CLIENT_SUBNET_IPV4 = 464, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ + VAR_MAX_CLIENT_SUBNET_IPV6 = 465, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ + VAR_MIN_CLIENT_SUBNET_IPV4 = 466, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ + VAR_MIN_CLIENT_SUBNET_IPV6 = 467, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ + VAR_MAX_ECS_TREE_SIZE_IPV4 = 468, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ + VAR_MAX_ECS_TREE_SIZE_IPV6 = 469, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ + VAR_CAPS_WHITELIST = 470, /* VAR_CAPS_WHITELIST */ + VAR_CACHE_MAX_NEGATIVE_TTL = 471, /* VAR_CACHE_MAX_NEGATIVE_TTL */ + VAR_PERMIT_SMALL_HOLDDOWN = 472, /* VAR_PERMIT_SMALL_HOLDDOWN */ + VAR_QNAME_MINIMISATION = 473, /* VAR_QNAME_MINIMISATION */ + VAR_QNAME_MINIMISATION_STRICT = 474, /* VAR_QNAME_MINIMISATION_STRICT */ + VAR_IP_FREEBIND = 475, /* VAR_IP_FREEBIND */ + VAR_DEFINE_TAG = 476, /* VAR_DEFINE_TAG */ + VAR_LOCAL_ZONE_TAG = 477, /* VAR_LOCAL_ZONE_TAG */ + VAR_ACCESS_CONTROL_TAG = 478, /* VAR_ACCESS_CONTROL_TAG */ + VAR_LOCAL_ZONE_OVERRIDE = 479, /* VAR_LOCAL_ZONE_OVERRIDE */ + VAR_ACCESS_CONTROL_TAG_ACTION = 480, /* VAR_ACCESS_CONTROL_TAG_ACTION */ + VAR_ACCESS_CONTROL_TAG_DATA = 481, /* VAR_ACCESS_CONTROL_TAG_DATA */ + VAR_VIEW = 482, /* VAR_VIEW */ + VAR_ACCESS_CONTROL_VIEW = 483, /* VAR_ACCESS_CONTROL_VIEW */ + VAR_VIEW_FIRST = 484, /* VAR_VIEW_FIRST */ + VAR_SERVE_EXPIRED = 485, /* VAR_SERVE_EXPIRED */ + VAR_SERVE_EXPIRED_TTL = 486, /* VAR_SERVE_EXPIRED_TTL */ + VAR_SERVE_EXPIRED_TTL_RESET = 487, /* VAR_SERVE_EXPIRED_TTL_RESET */ + VAR_SERVE_EXPIRED_REPLY_TTL = 488, /* VAR_SERVE_EXPIRED_REPLY_TTL */ + VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 489, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ + VAR_SERVE_ORIGINAL_TTL = 490, /* VAR_SERVE_ORIGINAL_TTL */ + VAR_FAKE_DSA = 491, /* VAR_FAKE_DSA */ + VAR_FAKE_SHA1 = 492, /* VAR_FAKE_SHA1 */ + VAR_LOG_IDENTITY = 493, /* VAR_LOG_IDENTITY */ + VAR_HIDE_TRUSTANCHOR = 494, /* VAR_HIDE_TRUSTANCHOR */ + VAR_HIDE_HTTP_USER_AGENT = 495, /* VAR_HIDE_HTTP_USER_AGENT */ + VAR_HTTP_USER_AGENT = 496, /* VAR_HTTP_USER_AGENT */ + VAR_TRUST_ANCHOR_SIGNALING = 497, /* VAR_TRUST_ANCHOR_SIGNALING */ + VAR_AGGRESSIVE_NSEC = 498, /* VAR_AGGRESSIVE_NSEC */ + VAR_USE_SYSTEMD = 499, /* VAR_USE_SYSTEMD */ + VAR_SHM_ENABLE = 500, /* VAR_SHM_ENABLE */ + VAR_SHM_KEY = 501, /* VAR_SHM_KEY */ + VAR_ROOT_KEY_SENTINEL = 502, /* VAR_ROOT_KEY_SENTINEL */ + VAR_DNSCRYPT = 503, /* VAR_DNSCRYPT */ + VAR_DNSCRYPT_ENABLE = 504, /* VAR_DNSCRYPT_ENABLE */ + VAR_DNSCRYPT_PORT = 505, /* VAR_DNSCRYPT_PORT */ + VAR_DNSCRYPT_PROVIDER = 506, /* VAR_DNSCRYPT_PROVIDER */ + VAR_DNSCRYPT_SECRET_KEY = 507, /* VAR_DNSCRYPT_SECRET_KEY */ + VAR_DNSCRYPT_PROVIDER_CERT = 508, /* VAR_DNSCRYPT_PROVIDER_CERT */ + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 509, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 510, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 511, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 512, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 513, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ + VAR_PAD_RESPONSES = 514, /* VAR_PAD_RESPONSES */ + VAR_PAD_RESPONSES_BLOCK_SIZE = 515, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ + VAR_PAD_QUERIES = 516, /* VAR_PAD_QUERIES */ + VAR_PAD_QUERIES_BLOCK_SIZE = 517, /* VAR_PAD_QUERIES_BLOCK_SIZE */ + VAR_IPSECMOD_ENABLED = 518, /* VAR_IPSECMOD_ENABLED */ + VAR_IPSECMOD_HOOK = 519, /* VAR_IPSECMOD_HOOK */ + VAR_IPSECMOD_IGNORE_BOGUS = 520, /* VAR_IPSECMOD_IGNORE_BOGUS */ + VAR_IPSECMOD_MAX_TTL = 521, /* VAR_IPSECMOD_MAX_TTL */ + VAR_IPSECMOD_WHITELIST = 522, /* VAR_IPSECMOD_WHITELIST */ + VAR_IPSECMOD_STRICT = 523, /* VAR_IPSECMOD_STRICT */ + VAR_CACHEDB = 524, /* VAR_CACHEDB */ + VAR_CACHEDB_BACKEND = 525, /* VAR_CACHEDB_BACKEND */ + VAR_CACHEDB_SECRETSEED = 526, /* VAR_CACHEDB_SECRETSEED */ + VAR_CACHEDB_REDISHOST = 527, /* VAR_CACHEDB_REDISHOST */ + VAR_CACHEDB_REDISPORT = 528, /* VAR_CACHEDB_REDISPORT */ + VAR_CACHEDB_REDISTIMEOUT = 529, /* VAR_CACHEDB_REDISTIMEOUT */ + VAR_CACHEDB_REDISEXPIRERECORDS = 530, /* VAR_CACHEDB_REDISEXPIRERECORDS */ + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 531, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ + VAR_FOR_UPSTREAM = 532, /* VAR_FOR_UPSTREAM */ + VAR_AUTH_ZONE = 533, /* VAR_AUTH_ZONE */ + VAR_ZONEFILE = 534, /* VAR_ZONEFILE */ + VAR_MASTER = 535, /* VAR_MASTER */ + VAR_URL = 536, /* VAR_URL */ + VAR_FOR_DOWNSTREAM = 537, /* VAR_FOR_DOWNSTREAM */ + VAR_FALLBACK_ENABLED = 538, /* VAR_FALLBACK_ENABLED */ + VAR_TLS_ADDITIONAL_PORT = 539, /* VAR_TLS_ADDITIONAL_PORT */ + VAR_LOW_RTT = 540, /* VAR_LOW_RTT */ + VAR_LOW_RTT_PERMIL = 541, /* VAR_LOW_RTT_PERMIL */ + VAR_FAST_SERVER_PERMIL = 542, /* VAR_FAST_SERVER_PERMIL */ + VAR_FAST_SERVER_NUM = 543, /* VAR_FAST_SERVER_NUM */ + VAR_ALLOW_NOTIFY = 544, /* VAR_ALLOW_NOTIFY */ + VAR_TLS_WIN_CERT = 545, /* VAR_TLS_WIN_CERT */ + VAR_TCP_CONNECTION_LIMIT = 546, /* VAR_TCP_CONNECTION_LIMIT */ + VAR_FORWARD_NO_CACHE = 547, /* VAR_FORWARD_NO_CACHE */ + VAR_STUB_NO_CACHE = 548, /* VAR_STUB_NO_CACHE */ + VAR_LOG_SERVFAIL = 549, /* VAR_LOG_SERVFAIL */ + VAR_DENY_ANY = 550, /* VAR_DENY_ANY */ + VAR_UNKNOWN_SERVER_TIME_LIMIT = 551, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ + VAR_LOG_TAG_QUERYREPLY = 552, /* VAR_LOG_TAG_QUERYREPLY */ + VAR_STREAM_WAIT_SIZE = 553, /* VAR_STREAM_WAIT_SIZE */ + VAR_TLS_CIPHERS = 554, /* VAR_TLS_CIPHERS */ + VAR_TLS_CIPHERSUITES = 555, /* VAR_TLS_CIPHERSUITES */ + VAR_TLS_USE_SNI = 556, /* VAR_TLS_USE_SNI */ + VAR_IPSET = 557, /* VAR_IPSET */ + VAR_IPSET_NAME_V4 = 558, /* VAR_IPSET_NAME_V4 */ + VAR_IPSET_NAME_V6 = 559, /* VAR_IPSET_NAME_V6 */ + VAR_TLS_SESSION_TICKET_KEYS = 560, /* VAR_TLS_SESSION_TICKET_KEYS */ + VAR_RPZ = 561, /* VAR_RPZ */ + VAR_TAGS = 562, /* VAR_TAGS */ + VAR_RPZ_ACTION_OVERRIDE = 563, /* VAR_RPZ_ACTION_OVERRIDE */ + VAR_RPZ_CNAME_OVERRIDE = 564, /* VAR_RPZ_CNAME_OVERRIDE */ + VAR_RPZ_LOG = 565, /* VAR_RPZ_LOG */ + VAR_RPZ_LOG_NAME = 566, /* VAR_RPZ_LOG_NAME */ + VAR_DYNLIB = 567, /* VAR_DYNLIB */ + VAR_DYNLIB_FILE = 568, /* VAR_DYNLIB_FILE */ + VAR_EDNS_CLIENT_STRING = 569, /* VAR_EDNS_CLIENT_STRING */ + VAR_EDNS_CLIENT_STRING_OPCODE = 570, /* VAR_EDNS_CLIENT_STRING_OPCODE */ + VAR_NSID = 571, /* VAR_NSID */ + VAR_ZONEMD_PERMISSIVE_MODE = 572, /* VAR_ZONEMD_PERMISSIVE_MODE */ + VAR_ZONEMD_CHECK = 573, /* VAR_ZONEMD_CHECK */ + VAR_ZONEMD_REJECT_ABSENCE = 574 /* VAR_ZONEMD_REJECT_ABSENCE */ + }; + typedef enum yytokentype yytoken_kind_t; +#endif +/* Token kinds. */ +#define YYEOF 0 +#define YYerror 256 +#define YYUNDEF 257 +#define SPACE 258 +#define LETTER 259 +#define NEWLINE 260 +#define COMMENT 261 +#define COLON 262 +#define ANY 263 +#define ZONESTR 264 +#define STRING_ARG 265 +#define VAR_FORCE_TOPLEVEL 266 +#define VAR_SERVER 267 +#define VAR_VERBOSITY 268 +#define VAR_NUM_THREADS 269 +#define VAR_PORT 270 +#define VAR_OUTGOING_RANGE 271 +#define VAR_INTERFACE 272 +#define VAR_PREFER_IP4 273 +#define VAR_DO_IP4 274 +#define VAR_DO_IP6 275 +#define VAR_PREFER_IP6 276 +#define VAR_DO_UDP 277 +#define VAR_DO_TCP 278 +#define VAR_TCP_MSS 279 +#define VAR_OUTGOING_TCP_MSS 280 +#define VAR_TCP_IDLE_TIMEOUT 281 +#define VAR_EDNS_TCP_KEEPALIVE 282 +#define VAR_EDNS_TCP_KEEPALIVE_TIMEOUT 283 +#define VAR_CHROOT 284 +#define VAR_USERNAME 285 +#define VAR_DIRECTORY 286 +#define VAR_LOGFILE 287 +#define VAR_PIDFILE 288 +#define VAR_MSG_CACHE_SIZE 289 +#define VAR_MSG_CACHE_SLABS 290 +#define VAR_NUM_QUERIES_PER_THREAD 291 +#define VAR_RRSET_CACHE_SIZE 292 +#define VAR_RRSET_CACHE_SLABS 293 +#define VAR_OUTGOING_NUM_TCP 294 +#define VAR_INFRA_HOST_TTL 295 +#define VAR_INFRA_LAME_TTL 296 +#define VAR_INFRA_CACHE_SLABS 297 +#define VAR_INFRA_CACHE_NUMHOSTS 298 +#define VAR_INFRA_CACHE_LAME_SIZE 299 +#define VAR_NAME 300 +#define VAR_STUB_ZONE 301 +#define VAR_STUB_HOST 302 +#define VAR_STUB_ADDR 303 +#define VAR_TARGET_FETCH_POLICY 304 +#define VAR_HARDEN_SHORT_BUFSIZE 305 +#define VAR_HARDEN_LARGE_QUERIES 306 +#define VAR_FORWARD_ZONE 307 +#define VAR_FORWARD_HOST 308 +#define VAR_FORWARD_ADDR 309 +#define VAR_DO_NOT_QUERY_ADDRESS 310 +#define VAR_HIDE_IDENTITY 311 +#define VAR_HIDE_VERSION 312 +#define VAR_IDENTITY 313 +#define VAR_VERSION 314 +#define VAR_HARDEN_GLUE 315 +#define VAR_MODULE_CONF 316 +#define VAR_TRUST_ANCHOR_FILE 317 +#define VAR_TRUST_ANCHOR 318 +#define VAR_VAL_OVERRIDE_DATE 319 +#define VAR_BOGUS_TTL 320 +#define VAR_VAL_CLEAN_ADDITIONAL 321 +#define VAR_VAL_PERMISSIVE_MODE 322 +#define VAR_INCOMING_NUM_TCP 323 +#define VAR_MSG_BUFFER_SIZE 324 +#define VAR_KEY_CACHE_SIZE 325 +#define VAR_KEY_CACHE_SLABS 326 +#define VAR_TRUSTED_KEYS_FILE 327 +#define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 328 +#define VAR_USE_SYSLOG 329 +#define VAR_OUTGOING_INTERFACE 330 +#define VAR_ROOT_HINTS 331 +#define VAR_DO_NOT_QUERY_LOCALHOST 332 +#define VAR_CACHE_MAX_TTL 333 +#define VAR_HARDEN_DNSSEC_STRIPPED 334 +#define VAR_ACCESS_CONTROL 335 +#define VAR_LOCAL_ZONE 336 +#define VAR_LOCAL_DATA 337 +#define VAR_INTERFACE_AUTOMATIC 338 +#define VAR_STATISTICS_INTERVAL 339 +#define VAR_DO_DAEMONIZE 340 +#define VAR_USE_CAPS_FOR_ID 341 +#define VAR_STATISTICS_CUMULATIVE 342 +#define VAR_OUTGOING_PORT_PERMIT 343 +#define VAR_OUTGOING_PORT_AVOID 344 +#define VAR_DLV_ANCHOR_FILE 345 +#define VAR_DLV_ANCHOR 346 +#define VAR_NEG_CACHE_SIZE 347 +#define VAR_HARDEN_REFERRAL_PATH 348 +#define VAR_PRIVATE_ADDRESS 349 +#define VAR_PRIVATE_DOMAIN 350 +#define VAR_REMOTE_CONTROL 351 +#define VAR_CONTROL_ENABLE 352 +#define VAR_CONTROL_INTERFACE 353 +#define VAR_CONTROL_PORT 354 +#define VAR_SERVER_KEY_FILE 355 +#define VAR_SERVER_CERT_FILE 356 +#define VAR_CONTROL_KEY_FILE 357 +#define VAR_CONTROL_CERT_FILE 358 +#define VAR_CONTROL_USE_CERT 359 +#define VAR_TCP_REUSE_TIMEOUT 360 +#define VAR_MAX_REUSE_TCP_QUERIES 361 +#define VAR_EXTENDED_STATISTICS 362 +#define VAR_LOCAL_DATA_PTR 363 +#define VAR_JOSTLE_TIMEOUT 364 +#define VAR_STUB_PRIME 365 +#define VAR_UNWANTED_REPLY_THRESHOLD 366 +#define VAR_LOG_TIME_ASCII 367 +#define VAR_DOMAIN_INSECURE 368 +#define VAR_PYTHON 369 +#define VAR_PYTHON_SCRIPT 370 +#define VAR_VAL_SIG_SKEW_MIN 371 +#define VAR_VAL_SIG_SKEW_MAX 372 +#define VAR_VAL_MAX_RESTART 373 +#define VAR_CACHE_MIN_TTL 374 +#define VAR_VAL_LOG_LEVEL 375 +#define VAR_AUTO_TRUST_ANCHOR_FILE 376 +#define VAR_KEEP_MISSING 377 +#define VAR_ADD_HOLDDOWN 378 +#define VAR_DEL_HOLDDOWN 379 +#define VAR_SO_RCVBUF 380 +#define VAR_EDNS_BUFFER_SIZE 381 +#define VAR_PREFETCH 382 +#define VAR_PREFETCH_KEY 383 +#define VAR_SO_SNDBUF 384 +#define VAR_SO_REUSEPORT 385 +#define VAR_HARDEN_BELOW_NXDOMAIN 386 +#define VAR_IGNORE_CD_FLAG 387 +#define VAR_LOG_QUERIES 388 +#define VAR_LOG_REPLIES 389 +#define VAR_LOG_LOCAL_ACTIONS 390 +#define VAR_TCP_UPSTREAM 391 +#define VAR_SSL_UPSTREAM 392 +#define VAR_TCP_AUTH_QUERY_TIMEOUT 393 +#define VAR_SSL_SERVICE_KEY 394 +#define VAR_SSL_SERVICE_PEM 395 +#define VAR_SSL_PORT 396 +#define VAR_FORWARD_FIRST 397 +#define VAR_STUB_SSL_UPSTREAM 398 +#define VAR_FORWARD_SSL_UPSTREAM 399 +#define VAR_TLS_CERT_BUNDLE 400 +#define VAR_STUB_TCP_UPSTREAM 401 +#define VAR_FORWARD_TCP_UPSTREAM 402 +#define VAR_HTTPS_PORT 403 +#define VAR_HTTP_ENDPOINT 404 +#define VAR_HTTP_MAX_STREAMS 405 +#define VAR_HTTP_QUERY_BUFFER_SIZE 406 +#define VAR_HTTP_RESPONSE_BUFFER_SIZE 407 +#define VAR_HTTP_NODELAY 408 +#define VAR_HTTP_NOTLS_DOWNSTREAM 409 +#define VAR_STUB_FIRST 410 +#define VAR_MINIMAL_RESPONSES 411 +#define VAR_RRSET_ROUNDROBIN 412 +#define VAR_MAX_UDP_SIZE 413 +#define VAR_DELAY_CLOSE 414 +#define VAR_UDP_CONNECT 415 +#define VAR_UNBLOCK_LAN_ZONES 416 +#define VAR_INSECURE_LAN_ZONES 417 +#define VAR_INFRA_CACHE_MIN_RTT 418 +#define VAR_INFRA_KEEP_PROBING 419 +#define VAR_DNS64_PREFIX 420 +#define VAR_DNS64_SYNTHALL 421 +#define VAR_DNS64_IGNORE_AAAA 422 +#define VAR_DNSTAP 423 +#define VAR_DNSTAP_ENABLE 424 +#define VAR_DNSTAP_SOCKET_PATH 425 +#define VAR_DNSTAP_IP 426 +#define VAR_DNSTAP_TLS 427 +#define VAR_DNSTAP_TLS_SERVER_NAME 428 +#define VAR_DNSTAP_TLS_CERT_BUNDLE 429 +#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 430 +#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 431 +#define VAR_DNSTAP_SEND_IDENTITY 432 +#define VAR_DNSTAP_SEND_VERSION 433 +#define VAR_DNSTAP_BIDIRECTIONAL 434 +#define VAR_DNSTAP_IDENTITY 435 +#define VAR_DNSTAP_VERSION 436 +#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 437 +#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 438 +#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 439 +#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 440 +#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 441 +#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 442 +#define VAR_RESPONSE_IP_TAG 443 +#define VAR_RESPONSE_IP 444 +#define VAR_RESPONSE_IP_DATA 445 +#define VAR_HARDEN_ALGO_DOWNGRADE 446 +#define VAR_IP_TRANSPARENT 447 +#define VAR_IP_DSCP 448 +#define VAR_DISABLE_DNSSEC_LAME_CHECK 449 +#define VAR_IP_RATELIMIT 450 +#define VAR_IP_RATELIMIT_SLABS 451 +#define VAR_IP_RATELIMIT_SIZE 452 +#define VAR_RATELIMIT 453 +#define VAR_RATELIMIT_SLABS 454 +#define VAR_RATELIMIT_SIZE 455 +#define VAR_RATELIMIT_FOR_DOMAIN 456 +#define VAR_RATELIMIT_BELOW_DOMAIN 457 +#define VAR_IP_RATELIMIT_FACTOR 458 +#define VAR_RATELIMIT_FACTOR 459 +#define VAR_SEND_CLIENT_SUBNET 460 +#define VAR_CLIENT_SUBNET_ZONE 461 +#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 462 +#define VAR_CLIENT_SUBNET_OPCODE 463 +#define VAR_MAX_CLIENT_SUBNET_IPV4 464 +#define VAR_MAX_CLIENT_SUBNET_IPV6 465 +#define VAR_MIN_CLIENT_SUBNET_IPV4 466 +#define VAR_MIN_CLIENT_SUBNET_IPV6 467 +#define VAR_MAX_ECS_TREE_SIZE_IPV4 468 +#define VAR_MAX_ECS_TREE_SIZE_IPV6 469 +#define VAR_CAPS_WHITELIST 470 +#define VAR_CACHE_MAX_NEGATIVE_TTL 471 +#define VAR_PERMIT_SMALL_HOLDDOWN 472 +#define VAR_QNAME_MINIMISATION 473 +#define VAR_QNAME_MINIMISATION_STRICT 474 +#define VAR_IP_FREEBIND 475 +#define VAR_DEFINE_TAG 476 +#define VAR_LOCAL_ZONE_TAG 477 +#define VAR_ACCESS_CONTROL_TAG 478 +#define VAR_LOCAL_ZONE_OVERRIDE 479 +#define VAR_ACCESS_CONTROL_TAG_ACTION 480 +#define VAR_ACCESS_CONTROL_TAG_DATA 481 +#define VAR_VIEW 482 +#define VAR_ACCESS_CONTROL_VIEW 483 +#define VAR_VIEW_FIRST 484 +#define VAR_SERVE_EXPIRED 485 +#define VAR_SERVE_EXPIRED_TTL 486 +#define VAR_SERVE_EXPIRED_TTL_RESET 487 +#define VAR_SERVE_EXPIRED_REPLY_TTL 488 +#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 489 +#define VAR_SERVE_ORIGINAL_TTL 490 +#define VAR_FAKE_DSA 491 +#define VAR_FAKE_SHA1 492 +#define VAR_LOG_IDENTITY 493 +#define VAR_HIDE_TRUSTANCHOR 494 +#define VAR_HIDE_HTTP_USER_AGENT 495 +#define VAR_HTTP_USER_AGENT 496 +#define VAR_TRUST_ANCHOR_SIGNALING 497 +#define VAR_AGGRESSIVE_NSEC 498 +#define VAR_USE_SYSTEMD 499 +#define VAR_SHM_ENABLE 500 +#define VAR_SHM_KEY 501 +#define VAR_ROOT_KEY_SENTINEL 502 +#define VAR_DNSCRYPT 503 +#define VAR_DNSCRYPT_ENABLE 504 +#define VAR_DNSCRYPT_PORT 505 +#define VAR_DNSCRYPT_PROVIDER 506 +#define VAR_DNSCRYPT_SECRET_KEY 507 +#define VAR_DNSCRYPT_PROVIDER_CERT 508 +#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 509 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 510 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 511 +#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 512 +#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 513 +#define VAR_PAD_RESPONSES 514 +#define VAR_PAD_RESPONSES_BLOCK_SIZE 515 +#define VAR_PAD_QUERIES 516 +#define VAR_PAD_QUERIES_BLOCK_SIZE 517 +#define VAR_IPSECMOD_ENABLED 518 +#define VAR_IPSECMOD_HOOK 519 +#define VAR_IPSECMOD_IGNORE_BOGUS 520 +#define VAR_IPSECMOD_MAX_TTL 521 +#define VAR_IPSECMOD_WHITELIST 522 +#define VAR_IPSECMOD_STRICT 523 +#define VAR_CACHEDB 524 +#define VAR_CACHEDB_BACKEND 525 +#define VAR_CACHEDB_SECRETSEED 526 +#define VAR_CACHEDB_REDISHOST 527 +#define VAR_CACHEDB_REDISPORT 528 +#define VAR_CACHEDB_REDISTIMEOUT 529 +#define VAR_CACHEDB_REDISEXPIRERECORDS 530 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 531 +#define VAR_FOR_UPSTREAM 532 +#define VAR_AUTH_ZONE 533 +#define VAR_ZONEFILE 534 +#define VAR_MASTER 535 +#define VAR_URL 536 +#define VAR_FOR_DOWNSTREAM 537 +#define VAR_FALLBACK_ENABLED 538 +#define VAR_TLS_ADDITIONAL_PORT 539 +#define VAR_LOW_RTT 540 +#define VAR_LOW_RTT_PERMIL 541 +#define VAR_FAST_SERVER_PERMIL 542 +#define VAR_FAST_SERVER_NUM 543 +#define VAR_ALLOW_NOTIFY 544 +#define VAR_TLS_WIN_CERT 545 +#define VAR_TCP_CONNECTION_LIMIT 546 +#define VAR_FORWARD_NO_CACHE 547 +#define VAR_STUB_NO_CACHE 548 +#define VAR_LOG_SERVFAIL 549 +#define VAR_DENY_ANY 550 +#define VAR_UNKNOWN_SERVER_TIME_LIMIT 551 +#define VAR_LOG_TAG_QUERYREPLY 552 +#define VAR_STREAM_WAIT_SIZE 553 +#define VAR_TLS_CIPHERS 554 +#define VAR_TLS_CIPHERSUITES 555 +#define VAR_TLS_USE_SNI 556 +#define VAR_IPSET 557 +#define VAR_IPSET_NAME_V4 558 +#define VAR_IPSET_NAME_V6 559 +#define VAR_TLS_SESSION_TICKET_KEYS 560 +#define VAR_RPZ 561 +#define VAR_TAGS 562 +#define VAR_RPZ_ACTION_OVERRIDE 563 +#define VAR_RPZ_CNAME_OVERRIDE 564 +#define VAR_RPZ_LOG 565 +#define VAR_RPZ_LOG_NAME 566 +#define VAR_DYNLIB 567 +#define VAR_DYNLIB_FILE 568 +#define VAR_EDNS_CLIENT_STRING 569 +#define VAR_EDNS_CLIENT_STRING_OPCODE 570 +#define VAR_NSID 571 +#define VAR_ZONEMD_PERMISSIVE_MODE 572 +#define VAR_ZONEMD_CHECK 573 +#define VAR_ZONEMD_REJECT_ABSENCE 574 + +/* Value type. */ +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +union YYSTYPE +{ +#line 66 "./util/configparser.y" + + char* str; + +#line 794 "util/configparser.c" + +}; +typedef union YYSTYPE YYSTYPE; +# define YYSTYPE_IS_TRIVIAL 1 +# define YYSTYPE_IS_DECLARED 1 +#endif + + +extern YYSTYPE yylval; + +int yyparse (void); + +#endif /* !YY_YY_UTIL_CONFIGPARSER_H_INCLUDED */ /* Symbol kind. */ enum yysymbol_kind_t { @@ -270,521 +954,525 @@ enum yysymbol_kind_t YYSYMBOL_VAR_STUB_SSL_UPSTREAM = 143, /* VAR_STUB_SSL_UPSTREAM */ YYSYMBOL_VAR_FORWARD_SSL_UPSTREAM = 144, /* VAR_FORWARD_SSL_UPSTREAM */ YYSYMBOL_VAR_TLS_CERT_BUNDLE = 145, /* VAR_TLS_CERT_BUNDLE */ - YYSYMBOL_VAR_HTTPS_PORT = 146, /* VAR_HTTPS_PORT */ - YYSYMBOL_VAR_HTTP_ENDPOINT = 147, /* VAR_HTTP_ENDPOINT */ - YYSYMBOL_VAR_HTTP_MAX_STREAMS = 148, /* VAR_HTTP_MAX_STREAMS */ - YYSYMBOL_VAR_HTTP_QUERY_BUFFER_SIZE = 149, /* VAR_HTTP_QUERY_BUFFER_SIZE */ - YYSYMBOL_VAR_HTTP_RESPONSE_BUFFER_SIZE = 150, /* VAR_HTTP_RESPONSE_BUFFER_SIZE */ - YYSYMBOL_VAR_HTTP_NODELAY = 151, /* VAR_HTTP_NODELAY */ - YYSYMBOL_VAR_HTTP_NOTLS_DOWNSTREAM = 152, /* VAR_HTTP_NOTLS_DOWNSTREAM */ - YYSYMBOL_VAR_STUB_FIRST = 153, /* VAR_STUB_FIRST */ - YYSYMBOL_VAR_MINIMAL_RESPONSES = 154, /* VAR_MINIMAL_RESPONSES */ - YYSYMBOL_VAR_RRSET_ROUNDROBIN = 155, /* VAR_RRSET_ROUNDROBIN */ - YYSYMBOL_VAR_MAX_UDP_SIZE = 156, /* VAR_MAX_UDP_SIZE */ - YYSYMBOL_VAR_DELAY_CLOSE = 157, /* VAR_DELAY_CLOSE */ - YYSYMBOL_VAR_UDP_CONNECT = 158, /* VAR_UDP_CONNECT */ - YYSYMBOL_VAR_UNBLOCK_LAN_ZONES = 159, /* VAR_UNBLOCK_LAN_ZONES */ - YYSYMBOL_VAR_INSECURE_LAN_ZONES = 160, /* VAR_INSECURE_LAN_ZONES */ - YYSYMBOL_VAR_INFRA_CACHE_MIN_RTT = 161, /* VAR_INFRA_CACHE_MIN_RTT */ - YYSYMBOL_VAR_INFRA_KEEP_PROBING = 162, /* VAR_INFRA_KEEP_PROBING */ - YYSYMBOL_VAR_DNS64_PREFIX = 163, /* VAR_DNS64_PREFIX */ - YYSYMBOL_VAR_DNS64_SYNTHALL = 164, /* VAR_DNS64_SYNTHALL */ - YYSYMBOL_VAR_DNS64_IGNORE_AAAA = 165, /* VAR_DNS64_IGNORE_AAAA */ - YYSYMBOL_VAR_DNSTAP = 166, /* VAR_DNSTAP */ - YYSYMBOL_VAR_DNSTAP_ENABLE = 167, /* VAR_DNSTAP_ENABLE */ - YYSYMBOL_VAR_DNSTAP_SOCKET_PATH = 168, /* VAR_DNSTAP_SOCKET_PATH */ - YYSYMBOL_VAR_DNSTAP_IP = 169, /* VAR_DNSTAP_IP */ - YYSYMBOL_VAR_DNSTAP_TLS = 170, /* VAR_DNSTAP_TLS */ - YYSYMBOL_VAR_DNSTAP_TLS_SERVER_NAME = 171, /* VAR_DNSTAP_TLS_SERVER_NAME */ - YYSYMBOL_VAR_DNSTAP_TLS_CERT_BUNDLE = 172, /* VAR_DNSTAP_TLS_CERT_BUNDLE */ - YYSYMBOL_VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 173, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE */ - YYSYMBOL_VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 174, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE */ - YYSYMBOL_VAR_DNSTAP_SEND_IDENTITY = 175, /* VAR_DNSTAP_SEND_IDENTITY */ - YYSYMBOL_VAR_DNSTAP_SEND_VERSION = 176, /* VAR_DNSTAP_SEND_VERSION */ - YYSYMBOL_VAR_DNSTAP_BIDIRECTIONAL = 177, /* VAR_DNSTAP_BIDIRECTIONAL */ - YYSYMBOL_VAR_DNSTAP_IDENTITY = 178, /* VAR_DNSTAP_IDENTITY */ - YYSYMBOL_VAR_DNSTAP_VERSION = 179, /* VAR_DNSTAP_VERSION */ - YYSYMBOL_VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 180, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES */ - YYSYMBOL_VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 181, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES */ - YYSYMBOL_VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 182, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES */ - YYSYMBOL_VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 183, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES */ - YYSYMBOL_VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 184, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES */ - YYSYMBOL_VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 185, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES */ - YYSYMBOL_VAR_RESPONSE_IP_TAG = 186, /* VAR_RESPONSE_IP_TAG */ - YYSYMBOL_VAR_RESPONSE_IP = 187, /* VAR_RESPONSE_IP */ - YYSYMBOL_VAR_RESPONSE_IP_DATA = 188, /* VAR_RESPONSE_IP_DATA */ - YYSYMBOL_VAR_HARDEN_ALGO_DOWNGRADE = 189, /* VAR_HARDEN_ALGO_DOWNGRADE */ - YYSYMBOL_VAR_IP_TRANSPARENT = 190, /* VAR_IP_TRANSPARENT */ - YYSYMBOL_VAR_IP_DSCP = 191, /* VAR_IP_DSCP */ - YYSYMBOL_VAR_DISABLE_DNSSEC_LAME_CHECK = 192, /* VAR_DISABLE_DNSSEC_LAME_CHECK */ - YYSYMBOL_VAR_IP_RATELIMIT = 193, /* VAR_IP_RATELIMIT */ - YYSYMBOL_VAR_IP_RATELIMIT_SLABS = 194, /* VAR_IP_RATELIMIT_SLABS */ - YYSYMBOL_VAR_IP_RATELIMIT_SIZE = 195, /* VAR_IP_RATELIMIT_SIZE */ - YYSYMBOL_VAR_RATELIMIT = 196, /* VAR_RATELIMIT */ - YYSYMBOL_VAR_RATELIMIT_SLABS = 197, /* VAR_RATELIMIT_SLABS */ - YYSYMBOL_VAR_RATELIMIT_SIZE = 198, /* VAR_RATELIMIT_SIZE */ - YYSYMBOL_VAR_RATELIMIT_FOR_DOMAIN = 199, /* VAR_RATELIMIT_FOR_DOMAIN */ - YYSYMBOL_VAR_RATELIMIT_BELOW_DOMAIN = 200, /* VAR_RATELIMIT_BELOW_DOMAIN */ - YYSYMBOL_VAR_IP_RATELIMIT_FACTOR = 201, /* VAR_IP_RATELIMIT_FACTOR */ - YYSYMBOL_VAR_RATELIMIT_FACTOR = 202, /* VAR_RATELIMIT_FACTOR */ - YYSYMBOL_VAR_SEND_CLIENT_SUBNET = 203, /* VAR_SEND_CLIENT_SUBNET */ - YYSYMBOL_VAR_CLIENT_SUBNET_ZONE = 204, /* VAR_CLIENT_SUBNET_ZONE */ - YYSYMBOL_VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 205, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ - YYSYMBOL_VAR_CLIENT_SUBNET_OPCODE = 206, /* VAR_CLIENT_SUBNET_OPCODE */ - YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV4 = 207, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ - YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV6 = 208, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ - YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV4 = 209, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ - YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV6 = 210, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ - YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV4 = 211, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ - YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV6 = 212, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ - YYSYMBOL_VAR_CAPS_WHITELIST = 213, /* VAR_CAPS_WHITELIST */ - YYSYMBOL_VAR_CACHE_MAX_NEGATIVE_TTL = 214, /* VAR_CACHE_MAX_NEGATIVE_TTL */ - YYSYMBOL_VAR_PERMIT_SMALL_HOLDDOWN = 215, /* VAR_PERMIT_SMALL_HOLDDOWN */ - YYSYMBOL_VAR_QNAME_MINIMISATION = 216, /* VAR_QNAME_MINIMISATION */ - YYSYMBOL_VAR_QNAME_MINIMISATION_STRICT = 217, /* VAR_QNAME_MINIMISATION_STRICT */ - YYSYMBOL_VAR_IP_FREEBIND = 218, /* VAR_IP_FREEBIND */ - YYSYMBOL_VAR_DEFINE_TAG = 219, /* VAR_DEFINE_TAG */ - YYSYMBOL_VAR_LOCAL_ZONE_TAG = 220, /* VAR_LOCAL_ZONE_TAG */ - YYSYMBOL_VAR_ACCESS_CONTROL_TAG = 221, /* VAR_ACCESS_CONTROL_TAG */ - YYSYMBOL_VAR_LOCAL_ZONE_OVERRIDE = 222, /* VAR_LOCAL_ZONE_OVERRIDE */ - YYSYMBOL_VAR_ACCESS_CONTROL_TAG_ACTION = 223, /* VAR_ACCESS_CONTROL_TAG_ACTION */ - YYSYMBOL_VAR_ACCESS_CONTROL_TAG_DATA = 224, /* VAR_ACCESS_CONTROL_TAG_DATA */ - YYSYMBOL_VAR_VIEW = 225, /* VAR_VIEW */ - YYSYMBOL_VAR_ACCESS_CONTROL_VIEW = 226, /* VAR_ACCESS_CONTROL_VIEW */ - YYSYMBOL_VAR_VIEW_FIRST = 227, /* VAR_VIEW_FIRST */ - YYSYMBOL_VAR_SERVE_EXPIRED = 228, /* VAR_SERVE_EXPIRED */ - YYSYMBOL_VAR_SERVE_EXPIRED_TTL = 229, /* VAR_SERVE_EXPIRED_TTL */ - YYSYMBOL_VAR_SERVE_EXPIRED_TTL_RESET = 230, /* VAR_SERVE_EXPIRED_TTL_RESET */ - YYSYMBOL_VAR_SERVE_EXPIRED_REPLY_TTL = 231, /* VAR_SERVE_EXPIRED_REPLY_TTL */ - YYSYMBOL_VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 232, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ - YYSYMBOL_VAR_SERVE_ORIGINAL_TTL = 233, /* VAR_SERVE_ORIGINAL_TTL */ - YYSYMBOL_VAR_FAKE_DSA = 234, /* VAR_FAKE_DSA */ - YYSYMBOL_VAR_FAKE_SHA1 = 235, /* VAR_FAKE_SHA1 */ - YYSYMBOL_VAR_LOG_IDENTITY = 236, /* VAR_LOG_IDENTITY */ - YYSYMBOL_VAR_HIDE_TRUSTANCHOR = 237, /* VAR_HIDE_TRUSTANCHOR */ - YYSYMBOL_VAR_HIDE_HTTP_USER_AGENT = 238, /* VAR_HIDE_HTTP_USER_AGENT */ - YYSYMBOL_VAR_HTTP_USER_AGENT = 239, /* VAR_HTTP_USER_AGENT */ - YYSYMBOL_VAR_TRUST_ANCHOR_SIGNALING = 240, /* VAR_TRUST_ANCHOR_SIGNALING */ - YYSYMBOL_VAR_AGGRESSIVE_NSEC = 241, /* VAR_AGGRESSIVE_NSEC */ - YYSYMBOL_VAR_USE_SYSTEMD = 242, /* VAR_USE_SYSTEMD */ - YYSYMBOL_VAR_SHM_ENABLE = 243, /* VAR_SHM_ENABLE */ - YYSYMBOL_VAR_SHM_KEY = 244, /* VAR_SHM_KEY */ - YYSYMBOL_VAR_ROOT_KEY_SENTINEL = 245, /* VAR_ROOT_KEY_SENTINEL */ - YYSYMBOL_VAR_DNSCRYPT = 246, /* VAR_DNSCRYPT */ - YYSYMBOL_VAR_DNSCRYPT_ENABLE = 247, /* VAR_DNSCRYPT_ENABLE */ - YYSYMBOL_VAR_DNSCRYPT_PORT = 248, /* VAR_DNSCRYPT_PORT */ - YYSYMBOL_VAR_DNSCRYPT_PROVIDER = 249, /* VAR_DNSCRYPT_PROVIDER */ - YYSYMBOL_VAR_DNSCRYPT_SECRET_KEY = 250, /* VAR_DNSCRYPT_SECRET_KEY */ - YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT = 251, /* VAR_DNSCRYPT_PROVIDER_CERT */ - YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 252, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ - YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 253, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ - YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 254, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ - YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SIZE = 255, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ - YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SLABS = 256, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ - YYSYMBOL_VAR_PAD_RESPONSES = 257, /* VAR_PAD_RESPONSES */ - YYSYMBOL_VAR_PAD_RESPONSES_BLOCK_SIZE = 258, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ - YYSYMBOL_VAR_PAD_QUERIES = 259, /* VAR_PAD_QUERIES */ - YYSYMBOL_VAR_PAD_QUERIES_BLOCK_SIZE = 260, /* VAR_PAD_QUERIES_BLOCK_SIZE */ - YYSYMBOL_VAR_IPSECMOD_ENABLED = 261, /* VAR_IPSECMOD_ENABLED */ - YYSYMBOL_VAR_IPSECMOD_HOOK = 262, /* VAR_IPSECMOD_HOOK */ - YYSYMBOL_VAR_IPSECMOD_IGNORE_BOGUS = 263, /* VAR_IPSECMOD_IGNORE_BOGUS */ - YYSYMBOL_VAR_IPSECMOD_MAX_TTL = 264, /* VAR_IPSECMOD_MAX_TTL */ - YYSYMBOL_VAR_IPSECMOD_WHITELIST = 265, /* VAR_IPSECMOD_WHITELIST */ - YYSYMBOL_VAR_IPSECMOD_STRICT = 266, /* VAR_IPSECMOD_STRICT */ - YYSYMBOL_VAR_CACHEDB = 267, /* VAR_CACHEDB */ - YYSYMBOL_VAR_CACHEDB_BACKEND = 268, /* VAR_CACHEDB_BACKEND */ - YYSYMBOL_VAR_CACHEDB_SECRETSEED = 269, /* VAR_CACHEDB_SECRETSEED */ - YYSYMBOL_VAR_CACHEDB_REDISHOST = 270, /* VAR_CACHEDB_REDISHOST */ - YYSYMBOL_VAR_CACHEDB_REDISPORT = 271, /* VAR_CACHEDB_REDISPORT */ - YYSYMBOL_VAR_CACHEDB_REDISTIMEOUT = 272, /* VAR_CACHEDB_REDISTIMEOUT */ - YYSYMBOL_VAR_CACHEDB_REDISEXPIRERECORDS = 273, /* VAR_CACHEDB_REDISEXPIRERECORDS */ - YYSYMBOL_VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 274, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ - YYSYMBOL_VAR_FOR_UPSTREAM = 275, /* VAR_FOR_UPSTREAM */ - YYSYMBOL_VAR_AUTH_ZONE = 276, /* VAR_AUTH_ZONE */ - YYSYMBOL_VAR_ZONEFILE = 277, /* VAR_ZONEFILE */ - YYSYMBOL_VAR_MASTER = 278, /* VAR_MASTER */ - YYSYMBOL_VAR_URL = 279, /* VAR_URL */ - YYSYMBOL_VAR_FOR_DOWNSTREAM = 280, /* VAR_FOR_DOWNSTREAM */ - YYSYMBOL_VAR_FALLBACK_ENABLED = 281, /* VAR_FALLBACK_ENABLED */ - YYSYMBOL_VAR_TLS_ADDITIONAL_PORT = 282, /* VAR_TLS_ADDITIONAL_PORT */ - YYSYMBOL_VAR_LOW_RTT = 283, /* VAR_LOW_RTT */ - YYSYMBOL_VAR_LOW_RTT_PERMIL = 284, /* VAR_LOW_RTT_PERMIL */ - YYSYMBOL_VAR_FAST_SERVER_PERMIL = 285, /* VAR_FAST_SERVER_PERMIL */ - YYSYMBOL_VAR_FAST_SERVER_NUM = 286, /* VAR_FAST_SERVER_NUM */ - YYSYMBOL_VAR_ALLOW_NOTIFY = 287, /* VAR_ALLOW_NOTIFY */ - YYSYMBOL_VAR_TLS_WIN_CERT = 288, /* VAR_TLS_WIN_CERT */ - YYSYMBOL_VAR_TCP_CONNECTION_LIMIT = 289, /* VAR_TCP_CONNECTION_LIMIT */ - YYSYMBOL_VAR_FORWARD_NO_CACHE = 290, /* VAR_FORWARD_NO_CACHE */ - YYSYMBOL_VAR_STUB_NO_CACHE = 291, /* VAR_STUB_NO_CACHE */ - YYSYMBOL_VAR_LOG_SERVFAIL = 292, /* VAR_LOG_SERVFAIL */ - YYSYMBOL_VAR_DENY_ANY = 293, /* VAR_DENY_ANY */ - YYSYMBOL_VAR_UNKNOWN_SERVER_TIME_LIMIT = 294, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ - YYSYMBOL_VAR_LOG_TAG_QUERYREPLY = 295, /* VAR_LOG_TAG_QUERYREPLY */ - YYSYMBOL_VAR_STREAM_WAIT_SIZE = 296, /* VAR_STREAM_WAIT_SIZE */ - YYSYMBOL_VAR_TLS_CIPHERS = 297, /* VAR_TLS_CIPHERS */ - YYSYMBOL_VAR_TLS_CIPHERSUITES = 298, /* VAR_TLS_CIPHERSUITES */ - YYSYMBOL_VAR_TLS_USE_SNI = 299, /* VAR_TLS_USE_SNI */ - YYSYMBOL_VAR_IPSET = 300, /* VAR_IPSET */ - YYSYMBOL_VAR_IPSET_NAME_V4 = 301, /* VAR_IPSET_NAME_V4 */ - YYSYMBOL_VAR_IPSET_NAME_V6 = 302, /* VAR_IPSET_NAME_V6 */ - YYSYMBOL_VAR_TLS_SESSION_TICKET_KEYS = 303, /* VAR_TLS_SESSION_TICKET_KEYS */ - YYSYMBOL_VAR_RPZ = 304, /* VAR_RPZ */ - YYSYMBOL_VAR_TAGS = 305, /* VAR_TAGS */ - YYSYMBOL_VAR_RPZ_ACTION_OVERRIDE = 306, /* VAR_RPZ_ACTION_OVERRIDE */ - YYSYMBOL_VAR_RPZ_CNAME_OVERRIDE = 307, /* VAR_RPZ_CNAME_OVERRIDE */ - YYSYMBOL_VAR_RPZ_LOG = 308, /* VAR_RPZ_LOG */ - YYSYMBOL_VAR_RPZ_LOG_NAME = 309, /* VAR_RPZ_LOG_NAME */ - YYSYMBOL_VAR_DYNLIB = 310, /* VAR_DYNLIB */ - YYSYMBOL_VAR_DYNLIB_FILE = 311, /* VAR_DYNLIB_FILE */ - YYSYMBOL_VAR_EDNS_CLIENT_STRING = 312, /* VAR_EDNS_CLIENT_STRING */ - YYSYMBOL_VAR_EDNS_CLIENT_STRING_OPCODE = 313, /* VAR_EDNS_CLIENT_STRING_OPCODE */ - YYSYMBOL_VAR_NSID = 314, /* VAR_NSID */ - YYSYMBOL_VAR_ZONEMD_PERMISSIVE_MODE = 315, /* VAR_ZONEMD_PERMISSIVE_MODE */ - YYSYMBOL_VAR_ZONEMD_CHECK = 316, /* VAR_ZONEMD_CHECK */ - YYSYMBOL_VAR_ZONEMD_REJECT_ABSENCE = 317, /* VAR_ZONEMD_REJECT_ABSENCE */ - YYSYMBOL_YYACCEPT = 318, /* $accept */ - YYSYMBOL_toplevelvars = 319, /* toplevelvars */ - YYSYMBOL_toplevelvar = 320, /* toplevelvar */ - YYSYMBOL_force_toplevel = 321, /* force_toplevel */ - YYSYMBOL_serverstart = 322, /* serverstart */ - YYSYMBOL_contents_server = 323, /* contents_server */ - YYSYMBOL_content_server = 324, /* content_server */ - YYSYMBOL_stubstart = 325, /* stubstart */ - YYSYMBOL_contents_stub = 326, /* contents_stub */ - YYSYMBOL_content_stub = 327, /* content_stub */ - YYSYMBOL_forwardstart = 328, /* forwardstart */ - YYSYMBOL_contents_forward = 329, /* contents_forward */ - YYSYMBOL_content_forward = 330, /* content_forward */ - YYSYMBOL_viewstart = 331, /* viewstart */ - YYSYMBOL_contents_view = 332, /* contents_view */ - YYSYMBOL_content_view = 333, /* content_view */ - YYSYMBOL_authstart = 334, /* authstart */ - YYSYMBOL_contents_auth = 335, /* contents_auth */ - YYSYMBOL_content_auth = 336, /* content_auth */ - YYSYMBOL_rpz_tag = 337, /* rpz_tag */ - YYSYMBOL_rpz_action_override = 338, /* rpz_action_override */ - YYSYMBOL_rpz_cname_override = 339, /* rpz_cname_override */ - YYSYMBOL_rpz_log = 340, /* rpz_log */ - YYSYMBOL_rpz_log_name = 341, /* rpz_log_name */ - YYSYMBOL_rpzstart = 342, /* rpzstart */ - YYSYMBOL_contents_rpz = 343, /* contents_rpz */ - YYSYMBOL_content_rpz = 344, /* content_rpz */ - YYSYMBOL_server_num_threads = 345, /* server_num_threads */ - YYSYMBOL_server_verbosity = 346, /* server_verbosity */ - YYSYMBOL_server_statistics_interval = 347, /* server_statistics_interval */ - YYSYMBOL_server_statistics_cumulative = 348, /* server_statistics_cumulative */ - YYSYMBOL_server_extended_statistics = 349, /* server_extended_statistics */ - YYSYMBOL_server_shm_enable = 350, /* server_shm_enable */ - YYSYMBOL_server_shm_key = 351, /* server_shm_key */ - YYSYMBOL_server_port = 352, /* server_port */ - YYSYMBOL_server_send_client_subnet = 353, /* server_send_client_subnet */ - YYSYMBOL_server_client_subnet_zone = 354, /* server_client_subnet_zone */ - YYSYMBOL_server_client_subnet_always_forward = 355, /* server_client_subnet_always_forward */ - YYSYMBOL_server_client_subnet_opcode = 356, /* server_client_subnet_opcode */ - YYSYMBOL_server_max_client_subnet_ipv4 = 357, /* server_max_client_subnet_ipv4 */ - YYSYMBOL_server_max_client_subnet_ipv6 = 358, /* server_max_client_subnet_ipv6 */ - YYSYMBOL_server_min_client_subnet_ipv4 = 359, /* server_min_client_subnet_ipv4 */ - YYSYMBOL_server_min_client_subnet_ipv6 = 360, /* server_min_client_subnet_ipv6 */ - YYSYMBOL_server_max_ecs_tree_size_ipv4 = 361, /* server_max_ecs_tree_size_ipv4 */ - YYSYMBOL_server_max_ecs_tree_size_ipv6 = 362, /* server_max_ecs_tree_size_ipv6 */ - YYSYMBOL_server_interface = 363, /* server_interface */ - YYSYMBOL_server_outgoing_interface = 364, /* server_outgoing_interface */ - YYSYMBOL_server_outgoing_range = 365, /* server_outgoing_range */ - YYSYMBOL_server_outgoing_port_permit = 366, /* server_outgoing_port_permit */ - YYSYMBOL_server_outgoing_port_avoid = 367, /* server_outgoing_port_avoid */ - YYSYMBOL_server_outgoing_num_tcp = 368, /* server_outgoing_num_tcp */ - YYSYMBOL_server_incoming_num_tcp = 369, /* server_incoming_num_tcp */ - YYSYMBOL_server_interface_automatic = 370, /* server_interface_automatic */ - YYSYMBOL_server_do_ip4 = 371, /* server_do_ip4 */ - YYSYMBOL_server_do_ip6 = 372, /* server_do_ip6 */ - YYSYMBOL_server_do_udp = 373, /* server_do_udp */ - YYSYMBOL_server_do_tcp = 374, /* server_do_tcp */ - YYSYMBOL_server_prefer_ip4 = 375, /* server_prefer_ip4 */ - YYSYMBOL_server_prefer_ip6 = 376, /* server_prefer_ip6 */ - YYSYMBOL_server_tcp_mss = 377, /* server_tcp_mss */ - YYSYMBOL_server_outgoing_tcp_mss = 378, /* server_outgoing_tcp_mss */ - YYSYMBOL_server_tcp_idle_timeout = 379, /* server_tcp_idle_timeout */ - YYSYMBOL_server_max_reuse_tcp_queries = 380, /* server_max_reuse_tcp_queries */ - YYSYMBOL_server_tcp_reuse_timeout = 381, /* server_tcp_reuse_timeout */ - YYSYMBOL_server_tcp_auth_query_timeout = 382, /* server_tcp_auth_query_timeout */ - YYSYMBOL_server_tcp_keepalive = 383, /* server_tcp_keepalive */ - YYSYMBOL_server_tcp_keepalive_timeout = 384, /* server_tcp_keepalive_timeout */ - YYSYMBOL_server_tcp_upstream = 385, /* server_tcp_upstream */ - YYSYMBOL_server_udp_upstream_without_downstream = 386, /* server_udp_upstream_without_downstream */ - YYSYMBOL_server_ssl_upstream = 387, /* server_ssl_upstream */ - YYSYMBOL_server_ssl_service_key = 388, /* server_ssl_service_key */ - YYSYMBOL_server_ssl_service_pem = 389, /* server_ssl_service_pem */ - YYSYMBOL_server_ssl_port = 390, /* server_ssl_port */ - YYSYMBOL_server_tls_cert_bundle = 391, /* server_tls_cert_bundle */ - YYSYMBOL_server_tls_win_cert = 392, /* server_tls_win_cert */ - YYSYMBOL_server_tls_additional_port = 393, /* server_tls_additional_port */ - YYSYMBOL_server_tls_ciphers = 394, /* server_tls_ciphers */ - YYSYMBOL_server_tls_ciphersuites = 395, /* server_tls_ciphersuites */ - YYSYMBOL_server_tls_session_ticket_keys = 396, /* server_tls_session_ticket_keys */ - YYSYMBOL_server_tls_use_sni = 397, /* server_tls_use_sni */ - YYSYMBOL_server_https_port = 398, /* server_https_port */ - YYSYMBOL_server_http_endpoint = 399, /* server_http_endpoint */ - YYSYMBOL_server_http_max_streams = 400, /* server_http_max_streams */ - YYSYMBOL_server_http_query_buffer_size = 401, /* server_http_query_buffer_size */ - YYSYMBOL_server_http_response_buffer_size = 402, /* server_http_response_buffer_size */ - YYSYMBOL_server_http_nodelay = 403, /* server_http_nodelay */ - YYSYMBOL_server_http_notls_downstream = 404, /* server_http_notls_downstream */ - YYSYMBOL_server_use_systemd = 405, /* server_use_systemd */ - YYSYMBOL_server_do_daemonize = 406, /* server_do_daemonize */ - YYSYMBOL_server_use_syslog = 407, /* server_use_syslog */ - YYSYMBOL_server_log_time_ascii = 408, /* server_log_time_ascii */ - YYSYMBOL_server_log_queries = 409, /* server_log_queries */ - YYSYMBOL_server_log_replies = 410, /* server_log_replies */ - YYSYMBOL_server_log_tag_queryreply = 411, /* server_log_tag_queryreply */ - YYSYMBOL_server_log_servfail = 412, /* server_log_servfail */ - YYSYMBOL_server_log_local_actions = 413, /* server_log_local_actions */ - YYSYMBOL_server_chroot = 414, /* server_chroot */ - YYSYMBOL_server_username = 415, /* server_username */ - YYSYMBOL_server_directory = 416, /* server_directory */ - YYSYMBOL_server_logfile = 417, /* server_logfile */ - YYSYMBOL_server_pidfile = 418, /* server_pidfile */ - YYSYMBOL_server_root_hints = 419, /* server_root_hints */ - YYSYMBOL_server_dlv_anchor_file = 420, /* server_dlv_anchor_file */ - YYSYMBOL_server_dlv_anchor = 421, /* server_dlv_anchor */ - YYSYMBOL_server_auto_trust_anchor_file = 422, /* server_auto_trust_anchor_file */ - YYSYMBOL_server_trust_anchor_file = 423, /* server_trust_anchor_file */ - YYSYMBOL_server_trusted_keys_file = 424, /* server_trusted_keys_file */ - YYSYMBOL_server_trust_anchor = 425, /* server_trust_anchor */ - YYSYMBOL_server_trust_anchor_signaling = 426, /* server_trust_anchor_signaling */ - YYSYMBOL_server_root_key_sentinel = 427, /* server_root_key_sentinel */ - YYSYMBOL_server_domain_insecure = 428, /* server_domain_insecure */ - YYSYMBOL_server_hide_identity = 429, /* server_hide_identity */ - YYSYMBOL_server_hide_version = 430, /* server_hide_version */ - YYSYMBOL_server_hide_trustanchor = 431, /* server_hide_trustanchor */ - YYSYMBOL_server_hide_http_user_agent = 432, /* server_hide_http_user_agent */ - YYSYMBOL_server_identity = 433, /* server_identity */ - YYSYMBOL_server_version = 434, /* server_version */ - YYSYMBOL_server_http_user_agent = 435, /* server_http_user_agent */ - YYSYMBOL_server_nsid = 436, /* server_nsid */ - YYSYMBOL_server_so_rcvbuf = 437, /* server_so_rcvbuf */ - YYSYMBOL_server_so_sndbuf = 438, /* server_so_sndbuf */ - YYSYMBOL_server_so_reuseport = 439, /* server_so_reuseport */ - YYSYMBOL_server_ip_transparent = 440, /* server_ip_transparent */ - YYSYMBOL_server_ip_freebind = 441, /* server_ip_freebind */ - YYSYMBOL_server_ip_dscp = 442, /* server_ip_dscp */ - YYSYMBOL_server_stream_wait_size = 443, /* server_stream_wait_size */ - YYSYMBOL_server_edns_buffer_size = 444, /* server_edns_buffer_size */ - YYSYMBOL_server_msg_buffer_size = 445, /* server_msg_buffer_size */ - YYSYMBOL_server_msg_cache_size = 446, /* server_msg_cache_size */ - YYSYMBOL_server_msg_cache_slabs = 447, /* server_msg_cache_slabs */ - YYSYMBOL_server_num_queries_per_thread = 448, /* server_num_queries_per_thread */ - YYSYMBOL_server_jostle_timeout = 449, /* server_jostle_timeout */ - YYSYMBOL_server_delay_close = 450, /* server_delay_close */ - YYSYMBOL_server_udp_connect = 451, /* server_udp_connect */ - YYSYMBOL_server_unblock_lan_zones = 452, /* server_unblock_lan_zones */ - YYSYMBOL_server_insecure_lan_zones = 453, /* server_insecure_lan_zones */ - YYSYMBOL_server_rrset_cache_size = 454, /* server_rrset_cache_size */ - YYSYMBOL_server_rrset_cache_slabs = 455, /* server_rrset_cache_slabs */ - YYSYMBOL_server_infra_host_ttl = 456, /* server_infra_host_ttl */ - YYSYMBOL_server_infra_lame_ttl = 457, /* server_infra_lame_ttl */ - YYSYMBOL_server_infra_cache_numhosts = 458, /* server_infra_cache_numhosts */ - YYSYMBOL_server_infra_cache_lame_size = 459, /* server_infra_cache_lame_size */ - YYSYMBOL_server_infra_cache_slabs = 460, /* server_infra_cache_slabs */ - YYSYMBOL_server_infra_cache_min_rtt = 461, /* server_infra_cache_min_rtt */ - YYSYMBOL_server_infra_keep_probing = 462, /* server_infra_keep_probing */ - YYSYMBOL_server_target_fetch_policy = 463, /* server_target_fetch_policy */ - YYSYMBOL_server_harden_short_bufsize = 464, /* server_harden_short_bufsize */ - YYSYMBOL_server_harden_large_queries = 465, /* server_harden_large_queries */ - YYSYMBOL_server_harden_glue = 466, /* server_harden_glue */ - YYSYMBOL_server_harden_dnssec_stripped = 467, /* server_harden_dnssec_stripped */ - YYSYMBOL_server_harden_below_nxdomain = 468, /* server_harden_below_nxdomain */ - YYSYMBOL_server_harden_referral_path = 469, /* server_harden_referral_path */ - YYSYMBOL_server_harden_algo_downgrade = 470, /* server_harden_algo_downgrade */ - YYSYMBOL_server_use_caps_for_id = 471, /* server_use_caps_for_id */ - YYSYMBOL_server_caps_whitelist = 472, /* server_caps_whitelist */ - YYSYMBOL_server_private_address = 473, /* server_private_address */ - YYSYMBOL_server_private_domain = 474, /* server_private_domain */ - YYSYMBOL_server_prefetch = 475, /* server_prefetch */ - YYSYMBOL_server_prefetch_key = 476, /* server_prefetch_key */ - YYSYMBOL_server_deny_any = 477, /* server_deny_any */ - YYSYMBOL_server_unwanted_reply_threshold = 478, /* server_unwanted_reply_threshold */ - YYSYMBOL_server_do_not_query_address = 479, /* server_do_not_query_address */ - YYSYMBOL_server_do_not_query_localhost = 480, /* server_do_not_query_localhost */ - YYSYMBOL_server_access_control = 481, /* server_access_control */ - YYSYMBOL_server_module_conf = 482, /* server_module_conf */ - YYSYMBOL_server_val_override_date = 483, /* server_val_override_date */ - YYSYMBOL_server_val_sig_skew_min = 484, /* server_val_sig_skew_min */ - YYSYMBOL_server_val_sig_skew_max = 485, /* server_val_sig_skew_max */ - YYSYMBOL_server_val_max_restart = 486, /* server_val_max_restart */ - YYSYMBOL_server_cache_max_ttl = 487, /* server_cache_max_ttl */ - YYSYMBOL_server_cache_max_negative_ttl = 488, /* server_cache_max_negative_ttl */ - YYSYMBOL_server_cache_min_ttl = 489, /* server_cache_min_ttl */ - YYSYMBOL_server_bogus_ttl = 490, /* server_bogus_ttl */ - YYSYMBOL_server_val_clean_additional = 491, /* server_val_clean_additional */ - YYSYMBOL_server_val_permissive_mode = 492, /* server_val_permissive_mode */ - YYSYMBOL_server_aggressive_nsec = 493, /* server_aggressive_nsec */ - YYSYMBOL_server_ignore_cd_flag = 494, /* server_ignore_cd_flag */ - YYSYMBOL_server_serve_expired = 495, /* server_serve_expired */ - YYSYMBOL_server_serve_expired_ttl = 496, /* server_serve_expired_ttl */ - YYSYMBOL_server_serve_expired_ttl_reset = 497, /* server_serve_expired_ttl_reset */ - YYSYMBOL_server_serve_expired_reply_ttl = 498, /* server_serve_expired_reply_ttl */ - YYSYMBOL_server_serve_expired_client_timeout = 499, /* server_serve_expired_client_timeout */ - YYSYMBOL_server_serve_original_ttl = 500, /* server_serve_original_ttl */ - YYSYMBOL_server_fake_dsa = 501, /* server_fake_dsa */ - YYSYMBOL_server_fake_sha1 = 502, /* server_fake_sha1 */ - YYSYMBOL_server_val_log_level = 503, /* server_val_log_level */ - YYSYMBOL_server_val_nsec3_keysize_iterations = 504, /* server_val_nsec3_keysize_iterations */ - YYSYMBOL_server_zonemd_permissive_mode = 505, /* server_zonemd_permissive_mode */ - YYSYMBOL_server_add_holddown = 506, /* server_add_holddown */ - YYSYMBOL_server_del_holddown = 507, /* server_del_holddown */ - YYSYMBOL_server_keep_missing = 508, /* server_keep_missing */ - YYSYMBOL_server_permit_small_holddown = 509, /* server_permit_small_holddown */ - YYSYMBOL_server_key_cache_size = 510, /* server_key_cache_size */ - YYSYMBOL_server_key_cache_slabs = 511, /* server_key_cache_slabs */ - YYSYMBOL_server_neg_cache_size = 512, /* server_neg_cache_size */ - YYSYMBOL_server_local_zone = 513, /* server_local_zone */ - YYSYMBOL_server_local_data = 514, /* server_local_data */ - YYSYMBOL_server_local_data_ptr = 515, /* server_local_data_ptr */ - YYSYMBOL_server_minimal_responses = 516, /* server_minimal_responses */ - YYSYMBOL_server_rrset_roundrobin = 517, /* server_rrset_roundrobin */ - YYSYMBOL_server_unknown_server_time_limit = 518, /* server_unknown_server_time_limit */ - YYSYMBOL_server_max_udp_size = 519, /* server_max_udp_size */ - YYSYMBOL_server_dns64_prefix = 520, /* server_dns64_prefix */ - YYSYMBOL_server_dns64_synthall = 521, /* server_dns64_synthall */ - YYSYMBOL_server_dns64_ignore_aaaa = 522, /* server_dns64_ignore_aaaa */ - YYSYMBOL_server_define_tag = 523, /* server_define_tag */ - YYSYMBOL_server_local_zone_tag = 524, /* server_local_zone_tag */ - YYSYMBOL_server_access_control_tag = 525, /* server_access_control_tag */ - YYSYMBOL_server_access_control_tag_action = 526, /* server_access_control_tag_action */ - YYSYMBOL_server_access_control_tag_data = 527, /* server_access_control_tag_data */ - YYSYMBOL_server_local_zone_override = 528, /* server_local_zone_override */ - YYSYMBOL_server_access_control_view = 529, /* server_access_control_view */ - YYSYMBOL_server_response_ip_tag = 530, /* server_response_ip_tag */ - YYSYMBOL_server_ip_ratelimit = 531, /* server_ip_ratelimit */ - YYSYMBOL_server_ratelimit = 532, /* server_ratelimit */ - YYSYMBOL_server_ip_ratelimit_size = 533, /* server_ip_ratelimit_size */ - YYSYMBOL_server_ratelimit_size = 534, /* server_ratelimit_size */ - YYSYMBOL_server_ip_ratelimit_slabs = 535, /* server_ip_ratelimit_slabs */ - YYSYMBOL_server_ratelimit_slabs = 536, /* server_ratelimit_slabs */ - YYSYMBOL_server_ratelimit_for_domain = 537, /* server_ratelimit_for_domain */ - YYSYMBOL_server_ratelimit_below_domain = 538, /* server_ratelimit_below_domain */ - YYSYMBOL_server_ip_ratelimit_factor = 539, /* server_ip_ratelimit_factor */ - YYSYMBOL_server_ratelimit_factor = 540, /* server_ratelimit_factor */ - YYSYMBOL_server_low_rtt = 541, /* server_low_rtt */ - YYSYMBOL_server_fast_server_num = 542, /* server_fast_server_num */ - YYSYMBOL_server_fast_server_permil = 543, /* server_fast_server_permil */ - YYSYMBOL_server_qname_minimisation = 544, /* server_qname_minimisation */ - YYSYMBOL_server_qname_minimisation_strict = 545, /* server_qname_minimisation_strict */ - YYSYMBOL_server_pad_responses = 546, /* server_pad_responses */ - YYSYMBOL_server_pad_responses_block_size = 547, /* server_pad_responses_block_size */ - YYSYMBOL_server_pad_queries = 548, /* server_pad_queries */ - YYSYMBOL_server_pad_queries_block_size = 549, /* server_pad_queries_block_size */ - YYSYMBOL_server_ipsecmod_enabled = 550, /* server_ipsecmod_enabled */ - YYSYMBOL_server_ipsecmod_ignore_bogus = 551, /* server_ipsecmod_ignore_bogus */ - YYSYMBOL_server_ipsecmod_hook = 552, /* server_ipsecmod_hook */ - YYSYMBOL_server_ipsecmod_max_ttl = 553, /* server_ipsecmod_max_ttl */ - YYSYMBOL_server_ipsecmod_whitelist = 554, /* server_ipsecmod_whitelist */ - YYSYMBOL_server_ipsecmod_strict = 555, /* server_ipsecmod_strict */ - YYSYMBOL_server_edns_client_string = 556, /* server_edns_client_string */ - YYSYMBOL_server_edns_client_string_opcode = 557, /* server_edns_client_string_opcode */ - YYSYMBOL_stub_name = 558, /* stub_name */ - YYSYMBOL_stub_host = 559, /* stub_host */ - YYSYMBOL_stub_addr = 560, /* stub_addr */ - YYSYMBOL_stub_first = 561, /* stub_first */ - YYSYMBOL_stub_no_cache = 562, /* stub_no_cache */ - YYSYMBOL_stub_ssl_upstream = 563, /* stub_ssl_upstream */ - YYSYMBOL_stub_prime = 564, /* stub_prime */ - YYSYMBOL_forward_name = 565, /* forward_name */ - YYSYMBOL_forward_host = 566, /* forward_host */ - YYSYMBOL_forward_addr = 567, /* forward_addr */ - YYSYMBOL_forward_first = 568, /* forward_first */ - YYSYMBOL_forward_no_cache = 569, /* forward_no_cache */ - YYSYMBOL_forward_ssl_upstream = 570, /* forward_ssl_upstream */ - YYSYMBOL_auth_name = 571, /* auth_name */ - YYSYMBOL_auth_zonefile = 572, /* auth_zonefile */ - YYSYMBOL_auth_master = 573, /* auth_master */ - YYSYMBOL_auth_url = 574, /* auth_url */ - YYSYMBOL_auth_allow_notify = 575, /* auth_allow_notify */ - YYSYMBOL_auth_zonemd_check = 576, /* auth_zonemd_check */ - YYSYMBOL_auth_zonemd_reject_absence = 577, /* auth_zonemd_reject_absence */ - YYSYMBOL_auth_for_downstream = 578, /* auth_for_downstream */ - YYSYMBOL_auth_for_upstream = 579, /* auth_for_upstream */ - YYSYMBOL_auth_fallback_enabled = 580, /* auth_fallback_enabled */ - YYSYMBOL_view_name = 581, /* view_name */ - YYSYMBOL_view_local_zone = 582, /* view_local_zone */ - YYSYMBOL_view_response_ip = 583, /* view_response_ip */ - YYSYMBOL_view_response_ip_data = 584, /* view_response_ip_data */ - YYSYMBOL_view_local_data = 585, /* view_local_data */ - YYSYMBOL_view_local_data_ptr = 586, /* view_local_data_ptr */ - YYSYMBOL_view_first = 587, /* view_first */ - YYSYMBOL_rcstart = 588, /* rcstart */ - YYSYMBOL_contents_rc = 589, /* contents_rc */ - YYSYMBOL_content_rc = 590, /* content_rc */ - YYSYMBOL_rc_control_enable = 591, /* rc_control_enable */ - YYSYMBOL_rc_control_port = 592, /* rc_control_port */ - YYSYMBOL_rc_control_interface = 593, /* rc_control_interface */ - YYSYMBOL_rc_control_use_cert = 594, /* rc_control_use_cert */ - YYSYMBOL_rc_server_key_file = 595, /* rc_server_key_file */ - YYSYMBOL_rc_server_cert_file = 596, /* rc_server_cert_file */ - YYSYMBOL_rc_control_key_file = 597, /* rc_control_key_file */ - YYSYMBOL_rc_control_cert_file = 598, /* rc_control_cert_file */ - YYSYMBOL_dtstart = 599, /* dtstart */ - YYSYMBOL_contents_dt = 600, /* contents_dt */ - YYSYMBOL_content_dt = 601, /* content_dt */ - YYSYMBOL_dt_dnstap_enable = 602, /* dt_dnstap_enable */ - YYSYMBOL_dt_dnstap_bidirectional = 603, /* dt_dnstap_bidirectional */ - YYSYMBOL_dt_dnstap_socket_path = 604, /* dt_dnstap_socket_path */ - YYSYMBOL_dt_dnstap_ip = 605, /* dt_dnstap_ip */ - YYSYMBOL_dt_dnstap_tls = 606, /* dt_dnstap_tls */ - YYSYMBOL_dt_dnstap_tls_server_name = 607, /* dt_dnstap_tls_server_name */ - YYSYMBOL_dt_dnstap_tls_cert_bundle = 608, /* dt_dnstap_tls_cert_bundle */ - YYSYMBOL_dt_dnstap_tls_client_key_file = 609, /* dt_dnstap_tls_client_key_file */ - YYSYMBOL_dt_dnstap_tls_client_cert_file = 610, /* dt_dnstap_tls_client_cert_file */ - YYSYMBOL_dt_dnstap_send_identity = 611, /* dt_dnstap_send_identity */ - YYSYMBOL_dt_dnstap_send_version = 612, /* dt_dnstap_send_version */ - YYSYMBOL_dt_dnstap_identity = 613, /* dt_dnstap_identity */ - YYSYMBOL_dt_dnstap_version = 614, /* dt_dnstap_version */ - YYSYMBOL_dt_dnstap_log_resolver_query_messages = 615, /* dt_dnstap_log_resolver_query_messages */ - YYSYMBOL_dt_dnstap_log_resolver_response_messages = 616, /* dt_dnstap_log_resolver_response_messages */ - YYSYMBOL_dt_dnstap_log_client_query_messages = 617, /* dt_dnstap_log_client_query_messages */ - YYSYMBOL_dt_dnstap_log_client_response_messages = 618, /* dt_dnstap_log_client_response_messages */ - YYSYMBOL_dt_dnstap_log_forwarder_query_messages = 619, /* dt_dnstap_log_forwarder_query_messages */ - YYSYMBOL_dt_dnstap_log_forwarder_response_messages = 620, /* dt_dnstap_log_forwarder_response_messages */ - YYSYMBOL_pythonstart = 621, /* pythonstart */ - YYSYMBOL_contents_py = 622, /* contents_py */ - YYSYMBOL_content_py = 623, /* content_py */ - YYSYMBOL_py_script = 624, /* py_script */ - YYSYMBOL_dynlibstart = 625, /* dynlibstart */ - YYSYMBOL_contents_dl = 626, /* contents_dl */ - YYSYMBOL_content_dl = 627, /* content_dl */ - YYSYMBOL_dl_file = 628, /* dl_file */ - YYSYMBOL_server_disable_dnssec_lame_check = 629, /* server_disable_dnssec_lame_check */ - YYSYMBOL_server_log_identity = 630, /* server_log_identity */ - YYSYMBOL_server_response_ip = 631, /* server_response_ip */ - YYSYMBOL_server_response_ip_data = 632, /* server_response_ip_data */ - YYSYMBOL_dnscstart = 633, /* dnscstart */ - YYSYMBOL_contents_dnsc = 634, /* contents_dnsc */ - YYSYMBOL_content_dnsc = 635, /* content_dnsc */ - YYSYMBOL_dnsc_dnscrypt_enable = 636, /* dnsc_dnscrypt_enable */ - YYSYMBOL_dnsc_dnscrypt_port = 637, /* dnsc_dnscrypt_port */ - YYSYMBOL_dnsc_dnscrypt_provider = 638, /* dnsc_dnscrypt_provider */ - YYSYMBOL_dnsc_dnscrypt_provider_cert = 639, /* dnsc_dnscrypt_provider_cert */ - YYSYMBOL_dnsc_dnscrypt_provider_cert_rotated = 640, /* dnsc_dnscrypt_provider_cert_rotated */ - YYSYMBOL_dnsc_dnscrypt_secret_key = 641, /* dnsc_dnscrypt_secret_key */ - YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_size = 642, /* dnsc_dnscrypt_shared_secret_cache_size */ - YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_slabs = 643, /* dnsc_dnscrypt_shared_secret_cache_slabs */ - YYSYMBOL_dnsc_dnscrypt_nonce_cache_size = 644, /* dnsc_dnscrypt_nonce_cache_size */ - YYSYMBOL_dnsc_dnscrypt_nonce_cache_slabs = 645, /* dnsc_dnscrypt_nonce_cache_slabs */ - YYSYMBOL_cachedbstart = 646, /* cachedbstart */ - YYSYMBOL_contents_cachedb = 647, /* contents_cachedb */ - YYSYMBOL_content_cachedb = 648, /* content_cachedb */ - YYSYMBOL_cachedb_backend_name = 649, /* cachedb_backend_name */ - YYSYMBOL_cachedb_secret_seed = 650, /* cachedb_secret_seed */ - YYSYMBOL_redis_server_host = 651, /* redis_server_host */ - YYSYMBOL_redis_server_port = 652, /* redis_server_port */ - YYSYMBOL_redis_timeout = 653, /* redis_timeout */ - YYSYMBOL_redis_expire_records = 654, /* redis_expire_records */ - YYSYMBOL_server_tcp_connection_limit = 655, /* server_tcp_connection_limit */ - YYSYMBOL_ipsetstart = 656, /* ipsetstart */ - YYSYMBOL_contents_ipset = 657, /* contents_ipset */ - YYSYMBOL_content_ipset = 658, /* content_ipset */ - YYSYMBOL_ipset_name_v4 = 659, /* ipset_name_v4 */ - YYSYMBOL_ipset_name_v6 = 660 /* ipset_name_v6 */ + YYSYMBOL_VAR_STUB_TCP_UPSTREAM = 146, /* VAR_STUB_TCP_UPSTREAM */ + YYSYMBOL_VAR_FORWARD_TCP_UPSTREAM = 147, /* VAR_FORWARD_TCP_UPSTREAM */ + YYSYMBOL_VAR_HTTPS_PORT = 148, /* VAR_HTTPS_PORT */ + YYSYMBOL_VAR_HTTP_ENDPOINT = 149, /* VAR_HTTP_ENDPOINT */ + YYSYMBOL_VAR_HTTP_MAX_STREAMS = 150, /* VAR_HTTP_MAX_STREAMS */ + YYSYMBOL_VAR_HTTP_QUERY_BUFFER_SIZE = 151, /* VAR_HTTP_QUERY_BUFFER_SIZE */ + YYSYMBOL_VAR_HTTP_RESPONSE_BUFFER_SIZE = 152, /* VAR_HTTP_RESPONSE_BUFFER_SIZE */ + YYSYMBOL_VAR_HTTP_NODELAY = 153, /* VAR_HTTP_NODELAY */ + YYSYMBOL_VAR_HTTP_NOTLS_DOWNSTREAM = 154, /* VAR_HTTP_NOTLS_DOWNSTREAM */ + YYSYMBOL_VAR_STUB_FIRST = 155, /* VAR_STUB_FIRST */ + YYSYMBOL_VAR_MINIMAL_RESPONSES = 156, /* VAR_MINIMAL_RESPONSES */ + YYSYMBOL_VAR_RRSET_ROUNDROBIN = 157, /* VAR_RRSET_ROUNDROBIN */ + YYSYMBOL_VAR_MAX_UDP_SIZE = 158, /* VAR_MAX_UDP_SIZE */ + YYSYMBOL_VAR_DELAY_CLOSE = 159, /* VAR_DELAY_CLOSE */ + YYSYMBOL_VAR_UDP_CONNECT = 160, /* VAR_UDP_CONNECT */ + YYSYMBOL_VAR_UNBLOCK_LAN_ZONES = 161, /* VAR_UNBLOCK_LAN_ZONES */ + YYSYMBOL_VAR_INSECURE_LAN_ZONES = 162, /* VAR_INSECURE_LAN_ZONES */ + YYSYMBOL_VAR_INFRA_CACHE_MIN_RTT = 163, /* VAR_INFRA_CACHE_MIN_RTT */ + YYSYMBOL_VAR_INFRA_KEEP_PROBING = 164, /* VAR_INFRA_KEEP_PROBING */ + YYSYMBOL_VAR_DNS64_PREFIX = 165, /* VAR_DNS64_PREFIX */ + YYSYMBOL_VAR_DNS64_SYNTHALL = 166, /* VAR_DNS64_SYNTHALL */ + YYSYMBOL_VAR_DNS64_IGNORE_AAAA = 167, /* VAR_DNS64_IGNORE_AAAA */ + YYSYMBOL_VAR_DNSTAP = 168, /* VAR_DNSTAP */ + YYSYMBOL_VAR_DNSTAP_ENABLE = 169, /* VAR_DNSTAP_ENABLE */ + YYSYMBOL_VAR_DNSTAP_SOCKET_PATH = 170, /* VAR_DNSTAP_SOCKET_PATH */ + YYSYMBOL_VAR_DNSTAP_IP = 171, /* VAR_DNSTAP_IP */ + YYSYMBOL_VAR_DNSTAP_TLS = 172, /* VAR_DNSTAP_TLS */ + YYSYMBOL_VAR_DNSTAP_TLS_SERVER_NAME = 173, /* VAR_DNSTAP_TLS_SERVER_NAME */ + YYSYMBOL_VAR_DNSTAP_TLS_CERT_BUNDLE = 174, /* VAR_DNSTAP_TLS_CERT_BUNDLE */ + YYSYMBOL_VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 175, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE */ + YYSYMBOL_VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 176, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE */ + YYSYMBOL_VAR_DNSTAP_SEND_IDENTITY = 177, /* VAR_DNSTAP_SEND_IDENTITY */ + YYSYMBOL_VAR_DNSTAP_SEND_VERSION = 178, /* VAR_DNSTAP_SEND_VERSION */ + YYSYMBOL_VAR_DNSTAP_BIDIRECTIONAL = 179, /* VAR_DNSTAP_BIDIRECTIONAL */ + YYSYMBOL_VAR_DNSTAP_IDENTITY = 180, /* VAR_DNSTAP_IDENTITY */ + YYSYMBOL_VAR_DNSTAP_VERSION = 181, /* VAR_DNSTAP_VERSION */ + YYSYMBOL_VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 182, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES */ + YYSYMBOL_VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 183, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES */ + YYSYMBOL_VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 184, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES */ + YYSYMBOL_VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 185, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES */ + YYSYMBOL_VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 186, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES */ + YYSYMBOL_VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 187, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES */ + YYSYMBOL_VAR_RESPONSE_IP_TAG = 188, /* VAR_RESPONSE_IP_TAG */ + YYSYMBOL_VAR_RESPONSE_IP = 189, /* VAR_RESPONSE_IP */ + YYSYMBOL_VAR_RESPONSE_IP_DATA = 190, /* VAR_RESPONSE_IP_DATA */ + YYSYMBOL_VAR_HARDEN_ALGO_DOWNGRADE = 191, /* VAR_HARDEN_ALGO_DOWNGRADE */ + YYSYMBOL_VAR_IP_TRANSPARENT = 192, /* VAR_IP_TRANSPARENT */ + YYSYMBOL_VAR_IP_DSCP = 193, /* VAR_IP_DSCP */ + YYSYMBOL_VAR_DISABLE_DNSSEC_LAME_CHECK = 194, /* VAR_DISABLE_DNSSEC_LAME_CHECK */ + YYSYMBOL_VAR_IP_RATELIMIT = 195, /* VAR_IP_RATELIMIT */ + YYSYMBOL_VAR_IP_RATELIMIT_SLABS = 196, /* VAR_IP_RATELIMIT_SLABS */ + YYSYMBOL_VAR_IP_RATELIMIT_SIZE = 197, /* VAR_IP_RATELIMIT_SIZE */ + YYSYMBOL_VAR_RATELIMIT = 198, /* VAR_RATELIMIT */ + YYSYMBOL_VAR_RATELIMIT_SLABS = 199, /* VAR_RATELIMIT_SLABS */ + YYSYMBOL_VAR_RATELIMIT_SIZE = 200, /* VAR_RATELIMIT_SIZE */ + YYSYMBOL_VAR_RATELIMIT_FOR_DOMAIN = 201, /* VAR_RATELIMIT_FOR_DOMAIN */ + YYSYMBOL_VAR_RATELIMIT_BELOW_DOMAIN = 202, /* VAR_RATELIMIT_BELOW_DOMAIN */ + YYSYMBOL_VAR_IP_RATELIMIT_FACTOR = 203, /* VAR_IP_RATELIMIT_FACTOR */ + YYSYMBOL_VAR_RATELIMIT_FACTOR = 204, /* VAR_RATELIMIT_FACTOR */ + YYSYMBOL_VAR_SEND_CLIENT_SUBNET = 205, /* VAR_SEND_CLIENT_SUBNET */ + YYSYMBOL_VAR_CLIENT_SUBNET_ZONE = 206, /* VAR_CLIENT_SUBNET_ZONE */ + YYSYMBOL_VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 207, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ + YYSYMBOL_VAR_CLIENT_SUBNET_OPCODE = 208, /* VAR_CLIENT_SUBNET_OPCODE */ + YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV4 = 209, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ + YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV6 = 210, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ + YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV4 = 211, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ + YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV6 = 212, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ + YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV4 = 213, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ + YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV6 = 214, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ + YYSYMBOL_VAR_CAPS_WHITELIST = 215, /* VAR_CAPS_WHITELIST */ + YYSYMBOL_VAR_CACHE_MAX_NEGATIVE_TTL = 216, /* VAR_CACHE_MAX_NEGATIVE_TTL */ + YYSYMBOL_VAR_PERMIT_SMALL_HOLDDOWN = 217, /* VAR_PERMIT_SMALL_HOLDDOWN */ + YYSYMBOL_VAR_QNAME_MINIMISATION = 218, /* VAR_QNAME_MINIMISATION */ + YYSYMBOL_VAR_QNAME_MINIMISATION_STRICT = 219, /* VAR_QNAME_MINIMISATION_STRICT */ + YYSYMBOL_VAR_IP_FREEBIND = 220, /* VAR_IP_FREEBIND */ + YYSYMBOL_VAR_DEFINE_TAG = 221, /* VAR_DEFINE_TAG */ + YYSYMBOL_VAR_LOCAL_ZONE_TAG = 222, /* VAR_LOCAL_ZONE_TAG */ + YYSYMBOL_VAR_ACCESS_CONTROL_TAG = 223, /* VAR_ACCESS_CONTROL_TAG */ + YYSYMBOL_VAR_LOCAL_ZONE_OVERRIDE = 224, /* VAR_LOCAL_ZONE_OVERRIDE */ + YYSYMBOL_VAR_ACCESS_CONTROL_TAG_ACTION = 225, /* VAR_ACCESS_CONTROL_TAG_ACTION */ + YYSYMBOL_VAR_ACCESS_CONTROL_TAG_DATA = 226, /* VAR_ACCESS_CONTROL_TAG_DATA */ + YYSYMBOL_VAR_VIEW = 227, /* VAR_VIEW */ + YYSYMBOL_VAR_ACCESS_CONTROL_VIEW = 228, /* VAR_ACCESS_CONTROL_VIEW */ + YYSYMBOL_VAR_VIEW_FIRST = 229, /* VAR_VIEW_FIRST */ + YYSYMBOL_VAR_SERVE_EXPIRED = 230, /* VAR_SERVE_EXPIRED */ + YYSYMBOL_VAR_SERVE_EXPIRED_TTL = 231, /* VAR_SERVE_EXPIRED_TTL */ + YYSYMBOL_VAR_SERVE_EXPIRED_TTL_RESET = 232, /* VAR_SERVE_EXPIRED_TTL_RESET */ + YYSYMBOL_VAR_SERVE_EXPIRED_REPLY_TTL = 233, /* VAR_SERVE_EXPIRED_REPLY_TTL */ + YYSYMBOL_VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 234, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ + YYSYMBOL_VAR_SERVE_ORIGINAL_TTL = 235, /* VAR_SERVE_ORIGINAL_TTL */ + YYSYMBOL_VAR_FAKE_DSA = 236, /* VAR_FAKE_DSA */ + YYSYMBOL_VAR_FAKE_SHA1 = 237, /* VAR_FAKE_SHA1 */ + YYSYMBOL_VAR_LOG_IDENTITY = 238, /* VAR_LOG_IDENTITY */ + YYSYMBOL_VAR_HIDE_TRUSTANCHOR = 239, /* VAR_HIDE_TRUSTANCHOR */ + YYSYMBOL_VAR_HIDE_HTTP_USER_AGENT = 240, /* VAR_HIDE_HTTP_USER_AGENT */ + YYSYMBOL_VAR_HTTP_USER_AGENT = 241, /* VAR_HTTP_USER_AGENT */ + YYSYMBOL_VAR_TRUST_ANCHOR_SIGNALING = 242, /* VAR_TRUST_ANCHOR_SIGNALING */ + YYSYMBOL_VAR_AGGRESSIVE_NSEC = 243, /* VAR_AGGRESSIVE_NSEC */ + YYSYMBOL_VAR_USE_SYSTEMD = 244, /* VAR_USE_SYSTEMD */ + YYSYMBOL_VAR_SHM_ENABLE = 245, /* VAR_SHM_ENABLE */ + YYSYMBOL_VAR_SHM_KEY = 246, /* VAR_SHM_KEY */ + YYSYMBOL_VAR_ROOT_KEY_SENTINEL = 247, /* VAR_ROOT_KEY_SENTINEL */ + YYSYMBOL_VAR_DNSCRYPT = 248, /* VAR_DNSCRYPT */ + YYSYMBOL_VAR_DNSCRYPT_ENABLE = 249, /* VAR_DNSCRYPT_ENABLE */ + YYSYMBOL_VAR_DNSCRYPT_PORT = 250, /* VAR_DNSCRYPT_PORT */ + YYSYMBOL_VAR_DNSCRYPT_PROVIDER = 251, /* VAR_DNSCRYPT_PROVIDER */ + YYSYMBOL_VAR_DNSCRYPT_SECRET_KEY = 252, /* VAR_DNSCRYPT_SECRET_KEY */ + YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT = 253, /* VAR_DNSCRYPT_PROVIDER_CERT */ + YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 254, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ + YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 255, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ + YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 256, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ + YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SIZE = 257, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ + YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SLABS = 258, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ + YYSYMBOL_VAR_PAD_RESPONSES = 259, /* VAR_PAD_RESPONSES */ + YYSYMBOL_VAR_PAD_RESPONSES_BLOCK_SIZE = 260, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ + YYSYMBOL_VAR_PAD_QUERIES = 261, /* VAR_PAD_QUERIES */ + YYSYMBOL_VAR_PAD_QUERIES_BLOCK_SIZE = 262, /* VAR_PAD_QUERIES_BLOCK_SIZE */ + YYSYMBOL_VAR_IPSECMOD_ENABLED = 263, /* VAR_IPSECMOD_ENABLED */ + YYSYMBOL_VAR_IPSECMOD_HOOK = 264, /* VAR_IPSECMOD_HOOK */ + YYSYMBOL_VAR_IPSECMOD_IGNORE_BOGUS = 265, /* VAR_IPSECMOD_IGNORE_BOGUS */ + YYSYMBOL_VAR_IPSECMOD_MAX_TTL = 266, /* VAR_IPSECMOD_MAX_TTL */ + YYSYMBOL_VAR_IPSECMOD_WHITELIST = 267, /* VAR_IPSECMOD_WHITELIST */ + YYSYMBOL_VAR_IPSECMOD_STRICT = 268, /* VAR_IPSECMOD_STRICT */ + YYSYMBOL_VAR_CACHEDB = 269, /* VAR_CACHEDB */ + YYSYMBOL_VAR_CACHEDB_BACKEND = 270, /* VAR_CACHEDB_BACKEND */ + YYSYMBOL_VAR_CACHEDB_SECRETSEED = 271, /* VAR_CACHEDB_SECRETSEED */ + YYSYMBOL_VAR_CACHEDB_REDISHOST = 272, /* VAR_CACHEDB_REDISHOST */ + YYSYMBOL_VAR_CACHEDB_REDISPORT = 273, /* VAR_CACHEDB_REDISPORT */ + YYSYMBOL_VAR_CACHEDB_REDISTIMEOUT = 274, /* VAR_CACHEDB_REDISTIMEOUT */ + YYSYMBOL_VAR_CACHEDB_REDISEXPIRERECORDS = 275, /* VAR_CACHEDB_REDISEXPIRERECORDS */ + YYSYMBOL_VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 276, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ + YYSYMBOL_VAR_FOR_UPSTREAM = 277, /* VAR_FOR_UPSTREAM */ + YYSYMBOL_VAR_AUTH_ZONE = 278, /* VAR_AUTH_ZONE */ + YYSYMBOL_VAR_ZONEFILE = 279, /* VAR_ZONEFILE */ + YYSYMBOL_VAR_MASTER = 280, /* VAR_MASTER */ + YYSYMBOL_VAR_URL = 281, /* VAR_URL */ + YYSYMBOL_VAR_FOR_DOWNSTREAM = 282, /* VAR_FOR_DOWNSTREAM */ + YYSYMBOL_VAR_FALLBACK_ENABLED = 283, /* VAR_FALLBACK_ENABLED */ + YYSYMBOL_VAR_TLS_ADDITIONAL_PORT = 284, /* VAR_TLS_ADDITIONAL_PORT */ + YYSYMBOL_VAR_LOW_RTT = 285, /* VAR_LOW_RTT */ + YYSYMBOL_VAR_LOW_RTT_PERMIL = 286, /* VAR_LOW_RTT_PERMIL */ + YYSYMBOL_VAR_FAST_SERVER_PERMIL = 287, /* VAR_FAST_SERVER_PERMIL */ + YYSYMBOL_VAR_FAST_SERVER_NUM = 288, /* VAR_FAST_SERVER_NUM */ + YYSYMBOL_VAR_ALLOW_NOTIFY = 289, /* VAR_ALLOW_NOTIFY */ + YYSYMBOL_VAR_TLS_WIN_CERT = 290, /* VAR_TLS_WIN_CERT */ + YYSYMBOL_VAR_TCP_CONNECTION_LIMIT = 291, /* VAR_TCP_CONNECTION_LIMIT */ + YYSYMBOL_VAR_FORWARD_NO_CACHE = 292, /* VAR_FORWARD_NO_CACHE */ + YYSYMBOL_VAR_STUB_NO_CACHE = 293, /* VAR_STUB_NO_CACHE */ + YYSYMBOL_VAR_LOG_SERVFAIL = 294, /* VAR_LOG_SERVFAIL */ + YYSYMBOL_VAR_DENY_ANY = 295, /* VAR_DENY_ANY */ + YYSYMBOL_VAR_UNKNOWN_SERVER_TIME_LIMIT = 296, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ + YYSYMBOL_VAR_LOG_TAG_QUERYREPLY = 297, /* VAR_LOG_TAG_QUERYREPLY */ + YYSYMBOL_VAR_STREAM_WAIT_SIZE = 298, /* VAR_STREAM_WAIT_SIZE */ + YYSYMBOL_VAR_TLS_CIPHERS = 299, /* VAR_TLS_CIPHERS */ + YYSYMBOL_VAR_TLS_CIPHERSUITES = 300, /* VAR_TLS_CIPHERSUITES */ + YYSYMBOL_VAR_TLS_USE_SNI = 301, /* VAR_TLS_USE_SNI */ + YYSYMBOL_VAR_IPSET = 302, /* VAR_IPSET */ + YYSYMBOL_VAR_IPSET_NAME_V4 = 303, /* VAR_IPSET_NAME_V4 */ + YYSYMBOL_VAR_IPSET_NAME_V6 = 304, /* VAR_IPSET_NAME_V6 */ + YYSYMBOL_VAR_TLS_SESSION_TICKET_KEYS = 305, /* VAR_TLS_SESSION_TICKET_KEYS */ + YYSYMBOL_VAR_RPZ = 306, /* VAR_RPZ */ + YYSYMBOL_VAR_TAGS = 307, /* VAR_TAGS */ + YYSYMBOL_VAR_RPZ_ACTION_OVERRIDE = 308, /* VAR_RPZ_ACTION_OVERRIDE */ + YYSYMBOL_VAR_RPZ_CNAME_OVERRIDE = 309, /* VAR_RPZ_CNAME_OVERRIDE */ + YYSYMBOL_VAR_RPZ_LOG = 310, /* VAR_RPZ_LOG */ + YYSYMBOL_VAR_RPZ_LOG_NAME = 311, /* VAR_RPZ_LOG_NAME */ + YYSYMBOL_VAR_DYNLIB = 312, /* VAR_DYNLIB */ + YYSYMBOL_VAR_DYNLIB_FILE = 313, /* VAR_DYNLIB_FILE */ + YYSYMBOL_VAR_EDNS_CLIENT_STRING = 314, /* VAR_EDNS_CLIENT_STRING */ + YYSYMBOL_VAR_EDNS_CLIENT_STRING_OPCODE = 315, /* VAR_EDNS_CLIENT_STRING_OPCODE */ + YYSYMBOL_VAR_NSID = 316, /* VAR_NSID */ + YYSYMBOL_VAR_ZONEMD_PERMISSIVE_MODE = 317, /* VAR_ZONEMD_PERMISSIVE_MODE */ + YYSYMBOL_VAR_ZONEMD_CHECK = 318, /* VAR_ZONEMD_CHECK */ + YYSYMBOL_VAR_ZONEMD_REJECT_ABSENCE = 319, /* VAR_ZONEMD_REJECT_ABSENCE */ + YYSYMBOL_YYACCEPT = 320, /* $accept */ + YYSYMBOL_toplevelvars = 321, /* toplevelvars */ + YYSYMBOL_toplevelvar = 322, /* toplevelvar */ + YYSYMBOL_force_toplevel = 323, /* force_toplevel */ + YYSYMBOL_serverstart = 324, /* serverstart */ + YYSYMBOL_contents_server = 325, /* contents_server */ + YYSYMBOL_content_server = 326, /* content_server */ + YYSYMBOL_stubstart = 327, /* stubstart */ + YYSYMBOL_contents_stub = 328, /* contents_stub */ + YYSYMBOL_content_stub = 329, /* content_stub */ + YYSYMBOL_forwardstart = 330, /* forwardstart */ + YYSYMBOL_contents_forward = 331, /* contents_forward */ + YYSYMBOL_content_forward = 332, /* content_forward */ + YYSYMBOL_viewstart = 333, /* viewstart */ + YYSYMBOL_contents_view = 334, /* contents_view */ + YYSYMBOL_content_view = 335, /* content_view */ + YYSYMBOL_authstart = 336, /* authstart */ + YYSYMBOL_contents_auth = 337, /* contents_auth */ + YYSYMBOL_content_auth = 338, /* content_auth */ + YYSYMBOL_rpz_tag = 339, /* rpz_tag */ + YYSYMBOL_rpz_action_override = 340, /* rpz_action_override */ + YYSYMBOL_rpz_cname_override = 341, /* rpz_cname_override */ + YYSYMBOL_rpz_log = 342, /* rpz_log */ + YYSYMBOL_rpz_log_name = 343, /* rpz_log_name */ + YYSYMBOL_rpzstart = 344, /* rpzstart */ + YYSYMBOL_contents_rpz = 345, /* contents_rpz */ + YYSYMBOL_content_rpz = 346, /* content_rpz */ + YYSYMBOL_server_num_threads = 347, /* server_num_threads */ + YYSYMBOL_server_verbosity = 348, /* server_verbosity */ + YYSYMBOL_server_statistics_interval = 349, /* server_statistics_interval */ + YYSYMBOL_server_statistics_cumulative = 350, /* server_statistics_cumulative */ + YYSYMBOL_server_extended_statistics = 351, /* server_extended_statistics */ + YYSYMBOL_server_shm_enable = 352, /* server_shm_enable */ + YYSYMBOL_server_shm_key = 353, /* server_shm_key */ + YYSYMBOL_server_port = 354, /* server_port */ + YYSYMBOL_server_send_client_subnet = 355, /* server_send_client_subnet */ + YYSYMBOL_server_client_subnet_zone = 356, /* server_client_subnet_zone */ + YYSYMBOL_server_client_subnet_always_forward = 357, /* server_client_subnet_always_forward */ + YYSYMBOL_server_client_subnet_opcode = 358, /* server_client_subnet_opcode */ + YYSYMBOL_server_max_client_subnet_ipv4 = 359, /* server_max_client_subnet_ipv4 */ + YYSYMBOL_server_max_client_subnet_ipv6 = 360, /* server_max_client_subnet_ipv6 */ + YYSYMBOL_server_min_client_subnet_ipv4 = 361, /* server_min_client_subnet_ipv4 */ + YYSYMBOL_server_min_client_subnet_ipv6 = 362, /* server_min_client_subnet_ipv6 */ + YYSYMBOL_server_max_ecs_tree_size_ipv4 = 363, /* server_max_ecs_tree_size_ipv4 */ + YYSYMBOL_server_max_ecs_tree_size_ipv6 = 364, /* server_max_ecs_tree_size_ipv6 */ + YYSYMBOL_server_interface = 365, /* server_interface */ + YYSYMBOL_server_outgoing_interface = 366, /* server_outgoing_interface */ + YYSYMBOL_server_outgoing_range = 367, /* server_outgoing_range */ + YYSYMBOL_server_outgoing_port_permit = 368, /* server_outgoing_port_permit */ + YYSYMBOL_server_outgoing_port_avoid = 369, /* server_outgoing_port_avoid */ + YYSYMBOL_server_outgoing_num_tcp = 370, /* server_outgoing_num_tcp */ + YYSYMBOL_server_incoming_num_tcp = 371, /* server_incoming_num_tcp */ + YYSYMBOL_server_interface_automatic = 372, /* server_interface_automatic */ + YYSYMBOL_server_do_ip4 = 373, /* server_do_ip4 */ + YYSYMBOL_server_do_ip6 = 374, /* server_do_ip6 */ + YYSYMBOL_server_do_udp = 375, /* server_do_udp */ + YYSYMBOL_server_do_tcp = 376, /* server_do_tcp */ + YYSYMBOL_server_prefer_ip4 = 377, /* server_prefer_ip4 */ + YYSYMBOL_server_prefer_ip6 = 378, /* server_prefer_ip6 */ + YYSYMBOL_server_tcp_mss = 379, /* server_tcp_mss */ + YYSYMBOL_server_outgoing_tcp_mss = 380, /* server_outgoing_tcp_mss */ + YYSYMBOL_server_tcp_idle_timeout = 381, /* server_tcp_idle_timeout */ + YYSYMBOL_server_max_reuse_tcp_queries = 382, /* server_max_reuse_tcp_queries */ + YYSYMBOL_server_tcp_reuse_timeout = 383, /* server_tcp_reuse_timeout */ + YYSYMBOL_server_tcp_auth_query_timeout = 384, /* server_tcp_auth_query_timeout */ + YYSYMBOL_server_tcp_keepalive = 385, /* server_tcp_keepalive */ + YYSYMBOL_server_tcp_keepalive_timeout = 386, /* server_tcp_keepalive_timeout */ + YYSYMBOL_server_tcp_upstream = 387, /* server_tcp_upstream */ + YYSYMBOL_server_udp_upstream_without_downstream = 388, /* server_udp_upstream_without_downstream */ + YYSYMBOL_server_ssl_upstream = 389, /* server_ssl_upstream */ + YYSYMBOL_server_ssl_service_key = 390, /* server_ssl_service_key */ + YYSYMBOL_server_ssl_service_pem = 391, /* server_ssl_service_pem */ + YYSYMBOL_server_ssl_port = 392, /* server_ssl_port */ + YYSYMBOL_server_tls_cert_bundle = 393, /* server_tls_cert_bundle */ + YYSYMBOL_server_tls_win_cert = 394, /* server_tls_win_cert */ + YYSYMBOL_server_tls_additional_port = 395, /* server_tls_additional_port */ + YYSYMBOL_server_tls_ciphers = 396, /* server_tls_ciphers */ + YYSYMBOL_server_tls_ciphersuites = 397, /* server_tls_ciphersuites */ + YYSYMBOL_server_tls_session_ticket_keys = 398, /* server_tls_session_ticket_keys */ + YYSYMBOL_server_tls_use_sni = 399, /* server_tls_use_sni */ + YYSYMBOL_server_https_port = 400, /* server_https_port */ + YYSYMBOL_server_http_endpoint = 401, /* server_http_endpoint */ + YYSYMBOL_server_http_max_streams = 402, /* server_http_max_streams */ + YYSYMBOL_server_http_query_buffer_size = 403, /* server_http_query_buffer_size */ + YYSYMBOL_server_http_response_buffer_size = 404, /* server_http_response_buffer_size */ + YYSYMBOL_server_http_nodelay = 405, /* server_http_nodelay */ + YYSYMBOL_server_http_notls_downstream = 406, /* server_http_notls_downstream */ + YYSYMBOL_server_use_systemd = 407, /* server_use_systemd */ + YYSYMBOL_server_do_daemonize = 408, /* server_do_daemonize */ + YYSYMBOL_server_use_syslog = 409, /* server_use_syslog */ + YYSYMBOL_server_log_time_ascii = 410, /* server_log_time_ascii */ + YYSYMBOL_server_log_queries = 411, /* server_log_queries */ + YYSYMBOL_server_log_replies = 412, /* server_log_replies */ + YYSYMBOL_server_log_tag_queryreply = 413, /* server_log_tag_queryreply */ + YYSYMBOL_server_log_servfail = 414, /* server_log_servfail */ + YYSYMBOL_server_log_local_actions = 415, /* server_log_local_actions */ + YYSYMBOL_server_chroot = 416, /* server_chroot */ + YYSYMBOL_server_username = 417, /* server_username */ + YYSYMBOL_server_directory = 418, /* server_directory */ + YYSYMBOL_server_logfile = 419, /* server_logfile */ + YYSYMBOL_server_pidfile = 420, /* server_pidfile */ + YYSYMBOL_server_root_hints = 421, /* server_root_hints */ + YYSYMBOL_server_dlv_anchor_file = 422, /* server_dlv_anchor_file */ + YYSYMBOL_server_dlv_anchor = 423, /* server_dlv_anchor */ + YYSYMBOL_server_auto_trust_anchor_file = 424, /* server_auto_trust_anchor_file */ + YYSYMBOL_server_trust_anchor_file = 425, /* server_trust_anchor_file */ + YYSYMBOL_server_trusted_keys_file = 426, /* server_trusted_keys_file */ + YYSYMBOL_server_trust_anchor = 427, /* server_trust_anchor */ + YYSYMBOL_server_trust_anchor_signaling = 428, /* server_trust_anchor_signaling */ + YYSYMBOL_server_root_key_sentinel = 429, /* server_root_key_sentinel */ + YYSYMBOL_server_domain_insecure = 430, /* server_domain_insecure */ + YYSYMBOL_server_hide_identity = 431, /* server_hide_identity */ + YYSYMBOL_server_hide_version = 432, /* server_hide_version */ + YYSYMBOL_server_hide_trustanchor = 433, /* server_hide_trustanchor */ + YYSYMBOL_server_hide_http_user_agent = 434, /* server_hide_http_user_agent */ + YYSYMBOL_server_identity = 435, /* server_identity */ + YYSYMBOL_server_version = 436, /* server_version */ + YYSYMBOL_server_http_user_agent = 437, /* server_http_user_agent */ + YYSYMBOL_server_nsid = 438, /* server_nsid */ + YYSYMBOL_server_so_rcvbuf = 439, /* server_so_rcvbuf */ + YYSYMBOL_server_so_sndbuf = 440, /* server_so_sndbuf */ + YYSYMBOL_server_so_reuseport = 441, /* server_so_reuseport */ + YYSYMBOL_server_ip_transparent = 442, /* server_ip_transparent */ + YYSYMBOL_server_ip_freebind = 443, /* server_ip_freebind */ + YYSYMBOL_server_ip_dscp = 444, /* server_ip_dscp */ + YYSYMBOL_server_stream_wait_size = 445, /* server_stream_wait_size */ + YYSYMBOL_server_edns_buffer_size = 446, /* server_edns_buffer_size */ + YYSYMBOL_server_msg_buffer_size = 447, /* server_msg_buffer_size */ + YYSYMBOL_server_msg_cache_size = 448, /* server_msg_cache_size */ + YYSYMBOL_server_msg_cache_slabs = 449, /* server_msg_cache_slabs */ + YYSYMBOL_server_num_queries_per_thread = 450, /* server_num_queries_per_thread */ + YYSYMBOL_server_jostle_timeout = 451, /* server_jostle_timeout */ + YYSYMBOL_server_delay_close = 452, /* server_delay_close */ + YYSYMBOL_server_udp_connect = 453, /* server_udp_connect */ + YYSYMBOL_server_unblock_lan_zones = 454, /* server_unblock_lan_zones */ + YYSYMBOL_server_insecure_lan_zones = 455, /* server_insecure_lan_zones */ + YYSYMBOL_server_rrset_cache_size = 456, /* server_rrset_cache_size */ + YYSYMBOL_server_rrset_cache_slabs = 457, /* server_rrset_cache_slabs */ + YYSYMBOL_server_infra_host_ttl = 458, /* server_infra_host_ttl */ + YYSYMBOL_server_infra_lame_ttl = 459, /* server_infra_lame_ttl */ + YYSYMBOL_server_infra_cache_numhosts = 460, /* server_infra_cache_numhosts */ + YYSYMBOL_server_infra_cache_lame_size = 461, /* server_infra_cache_lame_size */ + YYSYMBOL_server_infra_cache_slabs = 462, /* server_infra_cache_slabs */ + YYSYMBOL_server_infra_cache_min_rtt = 463, /* server_infra_cache_min_rtt */ + YYSYMBOL_server_infra_keep_probing = 464, /* server_infra_keep_probing */ + YYSYMBOL_server_target_fetch_policy = 465, /* server_target_fetch_policy */ + YYSYMBOL_server_harden_short_bufsize = 466, /* server_harden_short_bufsize */ + YYSYMBOL_server_harden_large_queries = 467, /* server_harden_large_queries */ + YYSYMBOL_server_harden_glue = 468, /* server_harden_glue */ + YYSYMBOL_server_harden_dnssec_stripped = 469, /* server_harden_dnssec_stripped */ + YYSYMBOL_server_harden_below_nxdomain = 470, /* server_harden_below_nxdomain */ + YYSYMBOL_server_harden_referral_path = 471, /* server_harden_referral_path */ + YYSYMBOL_server_harden_algo_downgrade = 472, /* server_harden_algo_downgrade */ + YYSYMBOL_server_use_caps_for_id = 473, /* server_use_caps_for_id */ + YYSYMBOL_server_caps_whitelist = 474, /* server_caps_whitelist */ + YYSYMBOL_server_private_address = 475, /* server_private_address */ + YYSYMBOL_server_private_domain = 476, /* server_private_domain */ + YYSYMBOL_server_prefetch = 477, /* server_prefetch */ + YYSYMBOL_server_prefetch_key = 478, /* server_prefetch_key */ + YYSYMBOL_server_deny_any = 479, /* server_deny_any */ + YYSYMBOL_server_unwanted_reply_threshold = 480, /* server_unwanted_reply_threshold */ + YYSYMBOL_server_do_not_query_address = 481, /* server_do_not_query_address */ + YYSYMBOL_server_do_not_query_localhost = 482, /* server_do_not_query_localhost */ + YYSYMBOL_server_access_control = 483, /* server_access_control */ + YYSYMBOL_server_module_conf = 484, /* server_module_conf */ + YYSYMBOL_server_val_override_date = 485, /* server_val_override_date */ + YYSYMBOL_server_val_sig_skew_min = 486, /* server_val_sig_skew_min */ + YYSYMBOL_server_val_sig_skew_max = 487, /* server_val_sig_skew_max */ + YYSYMBOL_server_val_max_restart = 488, /* server_val_max_restart */ + YYSYMBOL_server_cache_max_ttl = 489, /* server_cache_max_ttl */ + YYSYMBOL_server_cache_max_negative_ttl = 490, /* server_cache_max_negative_ttl */ + YYSYMBOL_server_cache_min_ttl = 491, /* server_cache_min_ttl */ + YYSYMBOL_server_bogus_ttl = 492, /* server_bogus_ttl */ + YYSYMBOL_server_val_clean_additional = 493, /* server_val_clean_additional */ + YYSYMBOL_server_val_permissive_mode = 494, /* server_val_permissive_mode */ + YYSYMBOL_server_aggressive_nsec = 495, /* server_aggressive_nsec */ + YYSYMBOL_server_ignore_cd_flag = 496, /* server_ignore_cd_flag */ + YYSYMBOL_server_serve_expired = 497, /* server_serve_expired */ + YYSYMBOL_server_serve_expired_ttl = 498, /* server_serve_expired_ttl */ + YYSYMBOL_server_serve_expired_ttl_reset = 499, /* server_serve_expired_ttl_reset */ + YYSYMBOL_server_serve_expired_reply_ttl = 500, /* server_serve_expired_reply_ttl */ + YYSYMBOL_server_serve_expired_client_timeout = 501, /* server_serve_expired_client_timeout */ + YYSYMBOL_server_serve_original_ttl = 502, /* server_serve_original_ttl */ + YYSYMBOL_server_fake_dsa = 503, /* server_fake_dsa */ + YYSYMBOL_server_fake_sha1 = 504, /* server_fake_sha1 */ + YYSYMBOL_server_val_log_level = 505, /* server_val_log_level */ + YYSYMBOL_server_val_nsec3_keysize_iterations = 506, /* server_val_nsec3_keysize_iterations */ + YYSYMBOL_server_zonemd_permissive_mode = 507, /* server_zonemd_permissive_mode */ + YYSYMBOL_server_add_holddown = 508, /* server_add_holddown */ + YYSYMBOL_server_del_holddown = 509, /* server_del_holddown */ + YYSYMBOL_server_keep_missing = 510, /* server_keep_missing */ + YYSYMBOL_server_permit_small_holddown = 511, /* server_permit_small_holddown */ + YYSYMBOL_server_key_cache_size = 512, /* server_key_cache_size */ + YYSYMBOL_server_key_cache_slabs = 513, /* server_key_cache_slabs */ + YYSYMBOL_server_neg_cache_size = 514, /* server_neg_cache_size */ + YYSYMBOL_server_local_zone = 515, /* server_local_zone */ + YYSYMBOL_server_local_data = 516, /* server_local_data */ + YYSYMBOL_server_local_data_ptr = 517, /* server_local_data_ptr */ + YYSYMBOL_server_minimal_responses = 518, /* server_minimal_responses */ + YYSYMBOL_server_rrset_roundrobin = 519, /* server_rrset_roundrobin */ + YYSYMBOL_server_unknown_server_time_limit = 520, /* server_unknown_server_time_limit */ + YYSYMBOL_server_max_udp_size = 521, /* server_max_udp_size */ + YYSYMBOL_server_dns64_prefix = 522, /* server_dns64_prefix */ + YYSYMBOL_server_dns64_synthall = 523, /* server_dns64_synthall */ + YYSYMBOL_server_dns64_ignore_aaaa = 524, /* server_dns64_ignore_aaaa */ + YYSYMBOL_server_define_tag = 525, /* server_define_tag */ + YYSYMBOL_server_local_zone_tag = 526, /* server_local_zone_tag */ + YYSYMBOL_server_access_control_tag = 527, /* server_access_control_tag */ + YYSYMBOL_server_access_control_tag_action = 528, /* server_access_control_tag_action */ + YYSYMBOL_server_access_control_tag_data = 529, /* server_access_control_tag_data */ + YYSYMBOL_server_local_zone_override = 530, /* server_local_zone_override */ + YYSYMBOL_server_access_control_view = 531, /* server_access_control_view */ + YYSYMBOL_server_response_ip_tag = 532, /* server_response_ip_tag */ + YYSYMBOL_server_ip_ratelimit = 533, /* server_ip_ratelimit */ + YYSYMBOL_server_ratelimit = 534, /* server_ratelimit */ + YYSYMBOL_server_ip_ratelimit_size = 535, /* server_ip_ratelimit_size */ + YYSYMBOL_server_ratelimit_size = 536, /* server_ratelimit_size */ + YYSYMBOL_server_ip_ratelimit_slabs = 537, /* server_ip_ratelimit_slabs */ + YYSYMBOL_server_ratelimit_slabs = 538, /* server_ratelimit_slabs */ + YYSYMBOL_server_ratelimit_for_domain = 539, /* server_ratelimit_for_domain */ + YYSYMBOL_server_ratelimit_below_domain = 540, /* server_ratelimit_below_domain */ + YYSYMBOL_server_ip_ratelimit_factor = 541, /* server_ip_ratelimit_factor */ + YYSYMBOL_server_ratelimit_factor = 542, /* server_ratelimit_factor */ + YYSYMBOL_server_low_rtt = 543, /* server_low_rtt */ + YYSYMBOL_server_fast_server_num = 544, /* server_fast_server_num */ + YYSYMBOL_server_fast_server_permil = 545, /* server_fast_server_permil */ + YYSYMBOL_server_qname_minimisation = 546, /* server_qname_minimisation */ + YYSYMBOL_server_qname_minimisation_strict = 547, /* server_qname_minimisation_strict */ + YYSYMBOL_server_pad_responses = 548, /* server_pad_responses */ + YYSYMBOL_server_pad_responses_block_size = 549, /* server_pad_responses_block_size */ + YYSYMBOL_server_pad_queries = 550, /* server_pad_queries */ + YYSYMBOL_server_pad_queries_block_size = 551, /* server_pad_queries_block_size */ + YYSYMBOL_server_ipsecmod_enabled = 552, /* server_ipsecmod_enabled */ + YYSYMBOL_server_ipsecmod_ignore_bogus = 553, /* server_ipsecmod_ignore_bogus */ + YYSYMBOL_server_ipsecmod_hook = 554, /* server_ipsecmod_hook */ + YYSYMBOL_server_ipsecmod_max_ttl = 555, /* server_ipsecmod_max_ttl */ + YYSYMBOL_server_ipsecmod_whitelist = 556, /* server_ipsecmod_whitelist */ + YYSYMBOL_server_ipsecmod_strict = 557, /* server_ipsecmod_strict */ + YYSYMBOL_server_edns_client_string = 558, /* server_edns_client_string */ + YYSYMBOL_server_edns_client_string_opcode = 559, /* server_edns_client_string_opcode */ + YYSYMBOL_stub_name = 560, /* stub_name */ + YYSYMBOL_stub_host = 561, /* stub_host */ + YYSYMBOL_stub_addr = 562, /* stub_addr */ + YYSYMBOL_stub_first = 563, /* stub_first */ + YYSYMBOL_stub_no_cache = 564, /* stub_no_cache */ + YYSYMBOL_stub_ssl_upstream = 565, /* stub_ssl_upstream */ + YYSYMBOL_stub_tcp_upstream = 566, /* stub_tcp_upstream */ + YYSYMBOL_stub_prime = 567, /* stub_prime */ + YYSYMBOL_forward_name = 568, /* forward_name */ + YYSYMBOL_forward_host = 569, /* forward_host */ + YYSYMBOL_forward_addr = 570, /* forward_addr */ + YYSYMBOL_forward_first = 571, /* forward_first */ + YYSYMBOL_forward_no_cache = 572, /* forward_no_cache */ + YYSYMBOL_forward_ssl_upstream = 573, /* forward_ssl_upstream */ + YYSYMBOL_forward_tcp_upstream = 574, /* forward_tcp_upstream */ + YYSYMBOL_auth_name = 575, /* auth_name */ + YYSYMBOL_auth_zonefile = 576, /* auth_zonefile */ + YYSYMBOL_auth_master = 577, /* auth_master */ + YYSYMBOL_auth_url = 578, /* auth_url */ + YYSYMBOL_auth_allow_notify = 579, /* auth_allow_notify */ + YYSYMBOL_auth_zonemd_check = 580, /* auth_zonemd_check */ + YYSYMBOL_auth_zonemd_reject_absence = 581, /* auth_zonemd_reject_absence */ + YYSYMBOL_auth_for_downstream = 582, /* auth_for_downstream */ + YYSYMBOL_auth_for_upstream = 583, /* auth_for_upstream */ + YYSYMBOL_auth_fallback_enabled = 584, /* auth_fallback_enabled */ + YYSYMBOL_view_name = 585, /* view_name */ + YYSYMBOL_view_local_zone = 586, /* view_local_zone */ + YYSYMBOL_view_response_ip = 587, /* view_response_ip */ + YYSYMBOL_view_response_ip_data = 588, /* view_response_ip_data */ + YYSYMBOL_view_local_data = 589, /* view_local_data */ + YYSYMBOL_view_local_data_ptr = 590, /* view_local_data_ptr */ + YYSYMBOL_view_first = 591, /* view_first */ + YYSYMBOL_rcstart = 592, /* rcstart */ + YYSYMBOL_contents_rc = 593, /* contents_rc */ + YYSYMBOL_content_rc = 594, /* content_rc */ + YYSYMBOL_rc_control_enable = 595, /* rc_control_enable */ + YYSYMBOL_rc_control_port = 596, /* rc_control_port */ + YYSYMBOL_rc_control_interface = 597, /* rc_control_interface */ + YYSYMBOL_rc_control_use_cert = 598, /* rc_control_use_cert */ + YYSYMBOL_rc_server_key_file = 599, /* rc_server_key_file */ + YYSYMBOL_rc_server_cert_file = 600, /* rc_server_cert_file */ + YYSYMBOL_rc_control_key_file = 601, /* rc_control_key_file */ + YYSYMBOL_rc_control_cert_file = 602, /* rc_control_cert_file */ + YYSYMBOL_dtstart = 603, /* dtstart */ + YYSYMBOL_contents_dt = 604, /* contents_dt */ + YYSYMBOL_content_dt = 605, /* content_dt */ + YYSYMBOL_dt_dnstap_enable = 606, /* dt_dnstap_enable */ + YYSYMBOL_dt_dnstap_bidirectional = 607, /* dt_dnstap_bidirectional */ + YYSYMBOL_dt_dnstap_socket_path = 608, /* dt_dnstap_socket_path */ + YYSYMBOL_dt_dnstap_ip = 609, /* dt_dnstap_ip */ + YYSYMBOL_dt_dnstap_tls = 610, /* dt_dnstap_tls */ + YYSYMBOL_dt_dnstap_tls_server_name = 611, /* dt_dnstap_tls_server_name */ + YYSYMBOL_dt_dnstap_tls_cert_bundle = 612, /* dt_dnstap_tls_cert_bundle */ + YYSYMBOL_dt_dnstap_tls_client_key_file = 613, /* dt_dnstap_tls_client_key_file */ + YYSYMBOL_dt_dnstap_tls_client_cert_file = 614, /* dt_dnstap_tls_client_cert_file */ + YYSYMBOL_dt_dnstap_send_identity = 615, /* dt_dnstap_send_identity */ + YYSYMBOL_dt_dnstap_send_version = 616, /* dt_dnstap_send_version */ + YYSYMBOL_dt_dnstap_identity = 617, /* dt_dnstap_identity */ + YYSYMBOL_dt_dnstap_version = 618, /* dt_dnstap_version */ + YYSYMBOL_dt_dnstap_log_resolver_query_messages = 619, /* dt_dnstap_log_resolver_query_messages */ + YYSYMBOL_dt_dnstap_log_resolver_response_messages = 620, /* dt_dnstap_log_resolver_response_messages */ + YYSYMBOL_dt_dnstap_log_client_query_messages = 621, /* dt_dnstap_log_client_query_messages */ + YYSYMBOL_dt_dnstap_log_client_response_messages = 622, /* dt_dnstap_log_client_response_messages */ + YYSYMBOL_dt_dnstap_log_forwarder_query_messages = 623, /* dt_dnstap_log_forwarder_query_messages */ + YYSYMBOL_dt_dnstap_log_forwarder_response_messages = 624, /* dt_dnstap_log_forwarder_response_messages */ + YYSYMBOL_pythonstart = 625, /* pythonstart */ + YYSYMBOL_contents_py = 626, /* contents_py */ + YYSYMBOL_content_py = 627, /* content_py */ + YYSYMBOL_py_script = 628, /* py_script */ + YYSYMBOL_dynlibstart = 629, /* dynlibstart */ + YYSYMBOL_contents_dl = 630, /* contents_dl */ + YYSYMBOL_content_dl = 631, /* content_dl */ + YYSYMBOL_dl_file = 632, /* dl_file */ + YYSYMBOL_server_disable_dnssec_lame_check = 633, /* server_disable_dnssec_lame_check */ + YYSYMBOL_server_log_identity = 634, /* server_log_identity */ + YYSYMBOL_server_response_ip = 635, /* server_response_ip */ + YYSYMBOL_server_response_ip_data = 636, /* server_response_ip_data */ + YYSYMBOL_dnscstart = 637, /* dnscstart */ + YYSYMBOL_contents_dnsc = 638, /* contents_dnsc */ + YYSYMBOL_content_dnsc = 639, /* content_dnsc */ + YYSYMBOL_dnsc_dnscrypt_enable = 640, /* dnsc_dnscrypt_enable */ + YYSYMBOL_dnsc_dnscrypt_port = 641, /* dnsc_dnscrypt_port */ + YYSYMBOL_dnsc_dnscrypt_provider = 642, /* dnsc_dnscrypt_provider */ + YYSYMBOL_dnsc_dnscrypt_provider_cert = 643, /* dnsc_dnscrypt_provider_cert */ + YYSYMBOL_dnsc_dnscrypt_provider_cert_rotated = 644, /* dnsc_dnscrypt_provider_cert_rotated */ + YYSYMBOL_dnsc_dnscrypt_secret_key = 645, /* dnsc_dnscrypt_secret_key */ + YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_size = 646, /* dnsc_dnscrypt_shared_secret_cache_size */ + YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_slabs = 647, /* dnsc_dnscrypt_shared_secret_cache_slabs */ + YYSYMBOL_dnsc_dnscrypt_nonce_cache_size = 648, /* dnsc_dnscrypt_nonce_cache_size */ + YYSYMBOL_dnsc_dnscrypt_nonce_cache_slabs = 649, /* dnsc_dnscrypt_nonce_cache_slabs */ + YYSYMBOL_cachedbstart = 650, /* cachedbstart */ + YYSYMBOL_contents_cachedb = 651, /* contents_cachedb */ + YYSYMBOL_content_cachedb = 652, /* content_cachedb */ + YYSYMBOL_cachedb_backend_name = 653, /* cachedb_backend_name */ + YYSYMBOL_cachedb_secret_seed = 654, /* cachedb_secret_seed */ + YYSYMBOL_redis_server_host = 655, /* redis_server_host */ + YYSYMBOL_redis_server_port = 656, /* redis_server_port */ + YYSYMBOL_redis_timeout = 657, /* redis_timeout */ + YYSYMBOL_redis_expire_records = 658, /* redis_expire_records */ + YYSYMBOL_server_tcp_connection_limit = 659, /* server_tcp_connection_limit */ + YYSYMBOL_ipsetstart = 660, /* ipsetstart */ + YYSYMBOL_contents_ipset = 661, /* contents_ipset */ + YYSYMBOL_content_ipset = 662, /* content_ipset */ + YYSYMBOL_ipset_name_v4 = 663, /* ipset_name_v4 */ + YYSYMBOL_ipset_name_v6 = 664 /* ipset_name_v6 */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; @@ -1094,19 +1782,18 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 672 +#define YYLAST 676 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 318 +#define YYNTOKENS 320 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 343 +#define YYNNTS 345 /* YYNRULES -- Number of rules. */ -#define YYNRULES 662 +#define YYNRULES 666 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 984 +#define YYNSTATES 990 -/* YYMAXUTOK -- Last valid token kind. */ -#define YYMAXUTOK 572 +#define YYMAXUTOK 574 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM @@ -1177,80 +1864,80 @@ static const yytype_int16 yytranslate[] = 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317 + 315, 316, 317, 318, 319 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { - 0, 190, 190, 190, 191, 191, 192, 192, 193, 193, - 193, 194, 194, 195, 195, 196, 196, 197, 199, 205, - 210, 211, 212, 212, 212, 213, 213, 214, 214, 214, - 215, 215, 216, 216, 216, 217, 217, 218, 218, 218, - 219, 219, 219, 220, 220, 221, 221, 222, 222, 223, - 223, 224, 224, 225, 225, 226, 226, 227, 227, 228, - 228, 228, 229, 229, 230, 230, 230, 231, 231, 231, - 232, 232, 233, 233, 234, 234, 235, 235, 236, 236, - 236, 237, 237, 238, 238, 239, 239, 239, 240, 240, - 241, 241, 242, 242, 243, 243, 243, 244, 244, 245, - 245, 246, 246, 247, 247, 248, 248, 249, 249, 250, - 250, 251, 251, 252, 252, 252, 253, 253, 253, 254, - 254, 254, 255, 255, 255, 255, 256, 257, 257, 257, - 258, 258, 258, 259, 259, 260, 260, 261, 261, 261, - 262, 262, 262, 263, 263, 264, 264, 264, 265, 265, - 266, 266, 266, 267, 267, 268, 268, 269, 269, 270, - 271, 271, 272, 272, 273, 273, 274, 275, 275, 276, - 276, 277, 277, 278, 278, 279, 279, 280, 280, 280, - 281, 281, 282, 282, 283, 283, 284, 285, 285, 286, - 286, 287, 288, 288, 289, 289, 290, 290, 291, 291, - 292, 292, 292, 293, 293, 293, 294, 294, 295, 296, - 296, 297, 297, 298, 298, 299, 299, 300, 300, 300, - 301, 301, 301, 302, 302, 302, 303, 303, 304, 304, - 305, 305, 306, 306, 307, 307, 308, 308, 309, 309, - 312, 324, 325, 326, 326, 326, 326, 326, 327, 327, - 329, 341, 342, 343, 343, 343, 343, 344, 344, 346, - 360, 361, 362, 362, 362, 362, 363, 363, 363, 365, - 384, 385, 386, 386, 386, 386, 387, 387, 387, 388, - 388, 388, 391, 410, 427, 435, 445, 453, 470, 471, - 472, 472, 472, 472, 472, 473, 473, 473, 474, 474, - 476, 485, 494, 505, 514, 523, 532, 543, 552, 564, - 578, 593, 604, 621, 638, 655, 672, 687, 702, 715, - 730, 739, 748, 757, 766, 775, 784, 793, 802, 811, - 820, 829, 838, 847, 856, 869, 880, 891, 902, 911, - 924, 933, 942, 951, 958, 965, 974, 981, 990, 998, - 1005, 1012, 1020, 1029, 1037, 1053, 1061, 1069, 1077, 1085, - 1093, 1102, 1111, 1125, 1134, 1143, 1152, 1161, 1170, 1179, - 1186, 1193, 1219, 1227, 1234, 1241, 1248, 1255, 1263, 1271, - 1279, 1286, 1297, 1308, 1315, 1324, 1333, 1342, 1351, 1358, - 1365, 1372, 1388, 1396, 1404, 1414, 1424, 1434, 1448, 1456, - 1469, 1480, 1488, 1501, 1510, 1519, 1528, 1537, 1547, 1557, - 1565, 1578, 1587, 1595, 1604, 1612, 1625, 1634, 1644, 1651, - 1661, 1671, 1681, 1691, 1701, 1711, 1721, 1731, 1738, 1745, - 1752, 1761, 1770, 1779, 1788, 1795, 1805, 1825, 1832, 1850, - 1863, 1876, 1889, 1898, 1907, 1916, 1925, 1935, 1945, 1956, - 1965, 1974, 1983, 1992, 2001, 2010, 2019, 2032, 2045, 2054, - 2061, 2070, 2079, 2088, 2097, 2106, 2114, 2127, 2135, 2180, - 2187, 2202, 2212, 2222, 2229, 2236, 2243, 2252, 2260, 2274, - 2295, 2316, 2328, 2340, 2352, 2361, 2382, 2392, 2401, 2409, - 2417, 2430, 2443, 2458, 2473, 2482, 2491, 2497, 2506, 2515, - 2525, 2535, 2545, 2554, 2564, 2573, 2586, 2599, 2611, 2625, - 2637, 2651, 2660, 2672, 2682, 2689, 2696, 2705, 2714, 2724, - 2734, 2744, 2751, 2758, 2767, 2776, 2786, 2796, 2803, 2810, - 2817, 2825, 2835, 2845, 2855, 2865, 2875, 2885, 2931, 2941, - 2949, 2957, 2972, 2981, 2986, 2987, 2988, 2988, 2988, 2989, - 2989, 2989, 2990, 2990, 2992, 3002, 3011, 3018, 3025, 3032, - 3039, 3046, 3053, 3058, 3059, 3060, 3060, 3060, 3061, 3061, - 3061, 3062, 3063, 3063, 3064, 3064, 3065, 3065, 3066, 3067, - 3068, 3069, 3070, 3071, 3073, 3082, 3092, 3099, 3106, 3115, - 3122, 3129, 3136, 3143, 3152, 3161, 3168, 3175, 3185, 3195, - 3205, 3215, 3225, 3235, 3240, 3241, 3242, 3244, 3250, 3255, - 3256, 3257, 3259, 3265, 3275, 3282, 3291, 3299, 3304, 3305, - 3307, 3307, 3307, 3308, 3308, 3309, 3310, 3311, 3312, 3313, - 3315, 3325, 3334, 3341, 3350, 3357, 3366, 3374, 3387, 3395, - 3408, 3413, 3414, 3415, 3415, 3416, 3416, 3416, 3417, 3419, - 3431, 3443, 3455, 3470, 3483, 3496, 3507, 3512, 3513, 3514, - 3514, 3516, 3531 + 0, 191, 191, 191, 192, 192, 193, 193, 194, 194, + 194, 195, 195, 196, 196, 197, 197, 198, 200, 206, + 211, 212, 213, 213, 213, 214, 214, 215, 215, 215, + 216, 216, 217, 217, 217, 218, 218, 219, 219, 219, + 220, 220, 220, 221, 221, 222, 222, 223, 223, 224, + 224, 225, 225, 226, 226, 227, 227, 228, 228, 229, + 229, 229, 230, 230, 231, 231, 231, 232, 232, 232, + 233, 233, 234, 234, 235, 235, 236, 236, 237, 237, + 237, 238, 238, 239, 239, 240, 240, 240, 241, 241, + 242, 242, 243, 243, 244, 244, 244, 245, 245, 246, + 246, 247, 247, 248, 248, 249, 249, 250, 250, 251, + 251, 252, 252, 253, 253, 253, 254, 254, 254, 255, + 255, 255, 256, 256, 256, 256, 257, 258, 258, 258, + 259, 259, 259, 260, 260, 261, 261, 262, 262, 262, + 263, 263, 263, 264, 264, 265, 265, 265, 266, 266, + 267, 267, 267, 268, 268, 269, 269, 270, 270, 271, + 272, 272, 273, 273, 274, 274, 275, 276, 276, 277, + 277, 278, 278, 279, 279, 280, 280, 281, 281, 281, + 282, 282, 283, 283, 284, 284, 285, 286, 286, 287, + 287, 288, 289, 289, 290, 290, 291, 291, 292, 292, + 293, 293, 293, 294, 294, 294, 295, 295, 296, 297, + 297, 298, 298, 299, 299, 300, 300, 301, 301, 301, + 302, 302, 302, 303, 303, 303, 304, 304, 305, 305, + 306, 306, 307, 307, 308, 308, 309, 309, 310, 310, + 313, 325, 326, 327, 327, 327, 327, 327, 328, 328, + 328, 330, 342, 343, 344, 344, 344, 344, 345, 345, + 345, 347, 361, 362, 363, 363, 363, 363, 364, 364, + 364, 366, 385, 386, 387, 387, 387, 387, 388, 388, + 388, 389, 389, 389, 392, 411, 428, 436, 446, 454, + 471, 472, 473, 473, 473, 473, 473, 474, 474, 474, + 475, 475, 477, 486, 495, 506, 515, 524, 533, 544, + 553, 565, 579, 594, 605, 622, 639, 656, 673, 688, + 703, 716, 731, 740, 749, 758, 767, 776, 785, 794, + 803, 812, 821, 830, 839, 848, 857, 870, 881, 892, + 903, 912, 925, 934, 943, 952, 959, 966, 975, 982, + 991, 999, 1006, 1013, 1021, 1030, 1038, 1054, 1062, 1070, + 1078, 1086, 1094, 1103, 1112, 1126, 1135, 1144, 1153, 1162, + 1171, 1180, 1187, 1194, 1220, 1228, 1235, 1242, 1249, 1256, + 1264, 1272, 1280, 1287, 1298, 1309, 1316, 1325, 1334, 1343, + 1352, 1359, 1366, 1373, 1389, 1397, 1405, 1415, 1425, 1435, + 1449, 1457, 1470, 1481, 1489, 1502, 1511, 1520, 1529, 1538, + 1548, 1558, 1566, 1579, 1588, 1596, 1605, 1613, 1626, 1635, + 1645, 1652, 1662, 1672, 1682, 1692, 1702, 1712, 1722, 1732, + 1739, 1746, 1753, 1762, 1771, 1780, 1789, 1796, 1806, 1826, + 1833, 1851, 1864, 1877, 1890, 1899, 1908, 1917, 1926, 1936, + 1946, 1957, 1966, 1975, 1984, 1993, 2002, 2011, 2020, 2033, + 2046, 2055, 2062, 2071, 2080, 2089, 2098, 2107, 2115, 2128, + 2136, 2181, 2188, 2203, 2213, 2223, 2230, 2237, 2244, 2253, + 2261, 2275, 2296, 2317, 2329, 2341, 2353, 2362, 2383, 2393, + 2402, 2410, 2418, 2431, 2444, 2459, 2474, 2483, 2492, 2498, + 2507, 2516, 2526, 2536, 2546, 2555, 2565, 2574, 2587, 2600, + 2612, 2626, 2638, 2652, 2661, 2673, 2683, 2690, 2697, 2706, + 2715, 2725, 2735, 2745, 2755, 2762, 2769, 2778, 2787, 2797, + 2807, 2817, 2824, 2831, 2838, 2846, 2856, 2866, 2876, 2886, + 2896, 2906, 2952, 2962, 2970, 2978, 2993, 3002, 3007, 3008, + 3009, 3009, 3009, 3010, 3010, 3010, 3011, 3011, 3013, 3023, + 3032, 3039, 3046, 3053, 3060, 3067, 3074, 3079, 3080, 3081, + 3081, 3081, 3082, 3082, 3082, 3083, 3084, 3084, 3085, 3085, + 3086, 3086, 3087, 3088, 3089, 3090, 3091, 3092, 3094, 3103, + 3113, 3120, 3127, 3136, 3143, 3150, 3157, 3164, 3173, 3182, + 3189, 3196, 3206, 3216, 3226, 3236, 3246, 3256, 3261, 3262, + 3263, 3265, 3271, 3276, 3277, 3278, 3280, 3286, 3296, 3303, + 3312, 3320, 3325, 3326, 3328, 3328, 3328, 3329, 3329, 3330, + 3331, 3332, 3333, 3334, 3336, 3346, 3355, 3362, 3371, 3378, + 3387, 3395, 3408, 3416, 3429, 3434, 3435, 3436, 3436, 3437, + 3437, 3437, 3438, 3440, 3452, 3464, 3476, 3491, 3504, 3517, + 3528, 3533, 3534, 3535, 3535, 3537, 3552 }; #endif @@ -1314,7 +2001,8 @@ static const char *const yytname[] = "VAR_SSL_UPSTREAM", "VAR_TCP_AUTH_QUERY_TIMEOUT", "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_HTTPS_PORT", "VAR_HTTP_ENDPOINT", + "VAR_TLS_CERT_BUNDLE", "VAR_STUB_TCP_UPSTREAM", + "VAR_FORWARD_TCP_UPSTREAM", "VAR_HTTPS_PORT", "VAR_HTTP_ENDPOINT", "VAR_HTTP_MAX_STREAMS", "VAR_HTTP_QUERY_BUFFER_SIZE", "VAR_HTTP_RESPONSE_BUFFER_SIZE", "VAR_HTTP_NODELAY", "VAR_HTTP_NOTLS_DOWNSTREAM", "VAR_STUB_FIRST", "VAR_MINIMAL_RESPONSES", @@ -1487,8 +2175,9 @@ static const char *const yytname[] = "server_ipsecmod_strict", "server_edns_client_string", "server_edns_client_string_opcode", "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", + "stub_tcp_upstream", "stub_prime", "forward_name", "forward_host", + "forward_addr", "forward_first", "forward_no_cache", + "forward_ssl_upstream", "forward_tcp_upstream", "auth_name", "auth_zonefile", "auth_master", "auth_url", "auth_allow_notify", "auth_zonemd_check", "auth_zonemd_reject_absence", "auth_for_downstream", "auth_for_upstream", "auth_fallback_enabled", "view_name", @@ -1568,11 +2257,11 @@ static const yytype_int16 yytoknum[] = 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, - 565, 566, 567, 568, 569, 570, 571, 572 + 565, 566, 567, 568, 569, 570, 571, 572, 573, 574 }; #endif -#define YYPACT_NINF (-302) +#define YYPACT_NINF (-304) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) @@ -1586,105 +2275,105 @@ static const yytype_int16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - -302, 0, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, 298, -43, -38, -42, -44, -28, -29, -149, - -109, -301, -194, -192, -293, 3, 4, 27, 28, 31, + -304, 0, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, 300, -43, -38, -42, -44, -28, -29, -151, + -109, -303, -196, -194, -295, 3, 4, 27, 28, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 53, 54, 55, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 87, 88, 89, 91, - 92, 93, 95, 97, 98, 99, 101, 102, 103, 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, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 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, 216, 217, 218, 219, 220, - 222, 228, 229, 230, 231, 232, 234, 235, 237, 243, - 244, 245, 246, 247, 248, 250, 251, 252, 253, 254, - 255, 256, 258, 259, 260, 261, 264, 265, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 291, 292, 293, 295, - 296, 297, 299, 333, 334, 335, 336, 340, 341, 342, - 384, 385, 386, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, 387, 388, 389, 390, 391, 392, 398, -302, - -302, -302, -302, -302, -302, -302, -302, 402, 403, 430, - 431, 432, 441, -302, -302, -302, -302, -302, -302, -302, - 454, 455, 456, 457, 458, 459, 460, -302, -302, -302, - -302, -302, -302, -302, -302, 461, 462, 463, 464, 465, - 466, 467, 468, 469, 470, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, 471, 472, 473, 513, - 515, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, 534, 535, 536, 537, 538, 539, 540, 541, - -302, -302, -302, -302, -302, -302, -302, -302, -302, 542, - 543, 544, 555, 556, 557, 558, 559, 560, 561, 563, - 564, 565, 566, 567, 568, 569, 572, 575, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, 578, -302, - -302, 579, -302, -302, 588, 589, 590, 592, 593, 594, - 595, 596, 597, 598, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, 599, 604, 605, 606, 607, - 608, -302, -302, -302, -302, -302, -302, -302, 609, 610, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, 611, 612, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, 613, 614, 615, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, 616, 617, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, 618, 619, 620, - 621, 622, 623, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, 624, -302, -302, - -302, -302, -302, -302, -302, -302, -302, 625, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, 626, -302, -302, 627, 628, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, 629, 630, 631, -302, -302, -302, -302, -302, - -302, -302, -302, -302 + 92, 95, 97, 98, 100, 101, 103, 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, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 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, 218, 219, 220, 221, 222, + 224, 230, 231, 232, 233, 234, 236, 237, 239, 245, + 246, 247, 248, 249, 250, 252, 253, 254, 255, 256, + 257, 258, 260, 261, 262, 263, 266, 267, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 293, 294, 295, 297, + 298, 299, 301, 335, 336, 337, 338, 342, 343, 344, + 386, 387, 388, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, 389, 390, 391, 392, 393, 394, 400, 404, + -304, -304, -304, -304, -304, -304, -304, -304, -304, 405, + 432, 433, 434, 436, 437, 445, -304, -304, -304, -304, + -304, -304, -304, -304, 458, 459, 460, 461, 462, 463, + 464, -304, -304, -304, -304, -304, -304, -304, -304, 465, + 466, 467, 468, 469, 470, 471, 472, 473, 474, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + 475, 476, 477, 517, 519, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, 538, 539, 540, 541, + 542, 543, 544, 545, -304, -304, -304, -304, -304, -304, + -304, -304, -304, 546, 547, 548, 559, 560, 561, 562, + 563, 564, 565, 567, 568, 569, 570, 571, 572, 573, + 576, 579, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, 582, -304, -304, 583, -304, -304, 592, 593, + 594, 596, 597, 598, 599, 600, 601, 602, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, 603, + 608, 609, 610, 611, 612, -304, -304, -304, -304, -304, + -304, -304, 613, 614, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, 615, 616, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, 617, 618, 619, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + 620, 621, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, 622, 623, 624, 625, 626, 627, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, 628, -304, -304, -304, -304, -304, -304, -304, -304, + -304, 629, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, 630, -304, -304, 631, 632, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, 633, 634, + 635, -304, -304, -304, -304, -304, -304, -304, -304, -304 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1692,10 +2381,10 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_int16 yydefact[] = { - 2, 0, 1, 18, 19, 240, 250, 543, 603, 562, - 259, 617, 640, 269, 656, 287, 608, 3, 17, 21, - 242, 252, 261, 271, 289, 545, 564, 605, 610, 619, - 642, 658, 4, 5, 6, 10, 14, 15, 8, 9, + 2, 0, 1, 18, 19, 240, 251, 547, 607, 566, + 261, 621, 644, 271, 660, 289, 612, 3, 17, 21, + 242, 253, 263, 273, 291, 549, 568, 609, 614, 623, + 646, 662, 4, 5, 6, 10, 14, 15, 8, 9, 7, 16, 11, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1740,105 +2429,105 @@ static const yytype_int16 yydefact[] = 151, 152, 157, 158, 155, 156, 159, 160, 162, 161, 219, 221, 220, 176, 186, 187, 188, 189, 190, 209, 211, 210, 212, 213, 214, 233, 234, 180, 198, 201, - 202, 223, 0, 0, 0, 0, 0, 0, 0, 241, - 243, 244, 245, 247, 248, 249, 246, 0, 0, 0, - 0, 0, 0, 251, 253, 254, 255, 256, 257, 258, - 0, 0, 0, 0, 0, 0, 0, 260, 262, 263, - 266, 267, 264, 268, 265, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 270, 272, 273, 274, 275, - 279, 280, 281, 276, 277, 278, 0, 0, 0, 0, - 0, 292, 296, 297, 298, 299, 288, 290, 291, 293, - 294, 295, 0, 0, 0, 0, 0, 0, 0, 0, - 544, 546, 548, 547, 553, 549, 550, 551, 552, 0, + 202, 223, 0, 0, 0, 0, 0, 0, 0, 0, + 241, 243, 244, 245, 247, 248, 249, 250, 246, 0, + 0, 0, 0, 0, 0, 0, 252, 254, 255, 256, + 257, 258, 259, 260, 0, 0, 0, 0, 0, 0, + 0, 262, 264, 265, 268, 269, 266, 270, 267, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 272, + 274, 275, 276, 277, 281, 282, 283, 278, 279, 280, + 0, 0, 0, 0, 0, 294, 298, 299, 300, 301, + 290, 292, 293, 295, 296, 297, 0, 0, 0, 0, + 0, 0, 0, 0, 548, 550, 552, 551, 557, 553, + 554, 555, 556, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 563, 565, - 567, 566, 568, 569, 570, 571, 572, 573, 574, 575, - 576, 577, 578, 579, 580, 581, 582, 583, 0, 604, - 606, 0, 609, 611, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 618, 620, 621, 622, 624, 625, - 623, 626, 627, 628, 629, 0, 0, 0, 0, 0, - 0, 641, 643, 644, 645, 646, 647, 648, 0, 0, - 657, 659, 660, 301, 300, 307, 320, 318, 330, 326, - 327, 331, 328, 329, 332, 333, 334, 338, 339, 369, - 370, 371, 372, 373, 401, 402, 403, 409, 410, 323, - 411, 412, 415, 413, 414, 418, 419, 420, 434, 384, - 385, 388, 389, 421, 437, 378, 380, 438, 445, 446, - 447, 324, 400, 465, 466, 379, 459, 362, 319, 374, - 435, 442, 422, 0, 0, 469, 325, 302, 361, 426, - 303, 321, 322, 375, 376, 467, 424, 428, 429, 336, - 335, 304, 470, 404, 433, 363, 383, 439, 440, 441, - 444, 458, 377, 463, 461, 462, 392, 399, 430, 431, - 393, 394, 423, 449, 364, 365, 368, 340, 342, 337, - 343, 344, 345, 346, 353, 354, 355, 356, 357, 358, - 359, 471, 472, 474, 405, 406, 407, 408, 416, 417, - 475, 476, 477, 0, 0, 0, 425, 395, 397, 613, - 486, 490, 488, 487, 491, 489, 0, 0, 494, 495, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 427, 443, 464, 499, 500, 396, 478, 0, 0, 0, - 0, 0, 0, 450, 451, 452, 453, 454, 455, 456, - 457, 614, 386, 387, 390, 381, 448, 360, 305, 306, - 382, 501, 502, 503, 504, 505, 507, 506, 508, 509, - 510, 341, 348, 496, 498, 497, 347, 0, 367, 432, - 473, 366, 398, 349, 350, 352, 351, 0, 512, 391, - 460, 513, 514, 515, 519, 518, 516, 517, 520, 521, - 522, 523, 525, 524, 536, 0, 540, 541, 0, 0, - 542, 526, 534, 527, 528, 529, 533, 535, 530, 531, - 532, 282, 283, 284, 285, 286, 554, 556, 555, 558, - 559, 560, 561, 557, 584, 586, 587, 588, 589, 590, - 591, 592, 593, 594, 585, 595, 596, 597, 598, 599, - 600, 601, 602, 607, 612, 630, 631, 632, 635, 633, - 634, 636, 637, 638, 639, 649, 650, 651, 652, 653, - 654, 661, 662, 436, 468, 485, 615, 616, 492, 493, - 479, 480, 0, 0, 0, 484, 655, 511, 537, 538, - 539, 483, 481, 482 + 0, 0, 567, 569, 571, 570, 572, 573, 574, 575, + 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, + 586, 587, 0, 608, 610, 0, 613, 615, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 622, 624, + 625, 626, 628, 629, 627, 630, 631, 632, 633, 0, + 0, 0, 0, 0, 0, 645, 647, 648, 649, 650, + 651, 652, 0, 0, 661, 663, 664, 303, 302, 309, + 322, 320, 332, 328, 329, 333, 330, 331, 334, 335, + 336, 340, 341, 371, 372, 373, 374, 375, 403, 404, + 405, 411, 412, 325, 413, 414, 417, 415, 416, 420, + 421, 422, 436, 386, 387, 390, 391, 423, 439, 380, + 382, 440, 447, 448, 449, 326, 402, 467, 468, 381, + 461, 364, 321, 376, 437, 444, 424, 0, 0, 471, + 327, 304, 363, 428, 305, 323, 324, 377, 378, 469, + 426, 430, 431, 338, 337, 306, 472, 406, 435, 365, + 385, 441, 442, 443, 446, 460, 379, 465, 463, 464, + 394, 401, 432, 433, 395, 396, 425, 451, 366, 367, + 370, 342, 344, 339, 345, 346, 347, 348, 355, 356, + 357, 358, 359, 360, 361, 473, 474, 476, 407, 408, + 409, 410, 418, 419, 477, 478, 479, 0, 0, 0, + 427, 397, 399, 617, 488, 492, 490, 489, 493, 491, + 0, 0, 496, 497, 310, 311, 312, 313, 314, 315, + 316, 317, 318, 319, 429, 445, 466, 501, 502, 398, + 480, 0, 0, 0, 0, 0, 0, 452, 453, 454, + 455, 456, 457, 458, 459, 618, 388, 389, 392, 383, + 450, 362, 307, 308, 384, 503, 504, 505, 506, 507, + 509, 508, 510, 511, 512, 343, 350, 498, 500, 499, + 349, 0, 369, 434, 475, 368, 400, 351, 352, 354, + 353, 0, 514, 393, 462, 515, 516, 517, 522, 520, + 521, 518, 519, 523, 524, 525, 526, 528, 529, 527, + 540, 0, 544, 545, 0, 0, 546, 530, 538, 531, + 532, 533, 537, 539, 534, 535, 536, 284, 285, 286, + 287, 288, 558, 560, 559, 562, 563, 564, 565, 561, + 588, 590, 591, 592, 593, 594, 595, 596, 597, 598, + 589, 599, 600, 601, 602, 603, 604, 605, 606, 611, + 616, 634, 635, 636, 639, 637, 638, 640, 641, 642, + 643, 653, 654, 655, 656, 657, 658, 665, 666, 438, + 470, 487, 619, 620, 494, 495, 481, 482, 0, 0, + 0, 486, 659, 513, 541, 542, 543, 485, 483, 484 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, 271, 632, 633, 634, 635, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302 + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, 273, 636, 637, 638, 639, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + -304, -304, -304, -304, -304 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 17, 18, 19, 32, 263, 20, 33, 489, - 21, 34, 503, 22, 35, 517, 23, 36, 535, 551, - 552, 553, 554, 555, 24, 37, 556, 264, 265, 266, + -1, 1, 17, 18, 19, 32, 263, 20, 33, 490, + 21, 34, 506, 22, 35, 521, 23, 36, 539, 555, + 556, 557, 558, 559, 24, 37, 560, 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, @@ -1860,17 +2549,17 @@ static const yytype_int16 yydefgoto[] = 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, - 490, 491, 492, 493, 494, 495, 496, 504, 505, 506, - 507, 508, 509, 536, 537, 538, 539, 540, 541, 542, - 543, 544, 545, 518, 519, 520, 521, 522, 523, 524, - 25, 38, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 26, 39, 598, 599, 600, 601, 602, 603, 604, - 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, - 615, 616, 617, 27, 40, 619, 620, 28, 41, 622, - 623, 477, 478, 479, 480, 29, 42, 634, 635, 636, - 637, 638, 639, 640, 641, 642, 643, 644, 30, 43, - 651, 652, 653, 654, 655, 656, 657, 481, 31, 44, - 660, 661, 662 + 491, 492, 493, 494, 495, 496, 497, 498, 507, 508, + 509, 510, 511, 512, 513, 540, 541, 542, 543, 544, + 545, 546, 547, 548, 549, 522, 523, 524, 525, 526, + 527, 528, 25, 38, 574, 575, 576, 577, 578, 579, + 580, 581, 582, 26, 39, 602, 603, 604, 605, 606, + 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, + 617, 618, 619, 620, 621, 27, 40, 623, 624, 28, + 41, 626, 627, 477, 478, 479, 480, 29, 42, 638, + 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, + 30, 43, 655, 656, 657, 658, 659, 660, 661, 481, + 31, 44, 664, 665, 666 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1878,157 +2567,157 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 2, 525, 482, 510, 483, 484, 618, 497, 658, 659, - 621, 3, 4, 663, 664, 498, 499, 525, 579, 580, - 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, - 591, 592, 593, 594, 595, 596, 597, 665, 666, 511, - 512, 667, 668, 669, 670, 671, 5, 672, 673, 674, - 675, 676, 6, 624, 625, 626, 627, 628, 629, 630, - 631, 632, 633, 677, 678, 679, 513, 485, 562, 563, - 564, 565, 566, 567, 568, 569, 645, 646, 647, 648, - 649, 650, 680, 681, 682, 683, 684, 685, 686, 687, - 688, 689, 690, 691, 692, 693, 7, 694, 695, 696, - 486, 697, 698, 699, 500, 700, 501, 701, 702, 703, - 487, 704, 705, 706, 8, 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, 514, 515, 737, 738, 739, - 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, - 750, 751, 752, 753, 754, 755, 9, 756, 757, 758, - 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, - 769, 770, 771, 772, 773, 516, 774, 775, 776, 777, - 778, 779, 780, 781, 782, 783, 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, 812, 10, 813, 814, 815, 816, - 817, 526, 818, 527, 528, 529, 530, 531, 819, 820, - 821, 822, 823, 532, 824, 825, 11, 826, 488, 527, - 528, 529, 502, 827, 828, 829, 830, 831, 832, 532, - 833, 834, 835, 836, 837, 838, 839, 12, 840, 841, - 842, 843, 533, 534, 844, 845, 13, 546, 547, 548, - 549, 550, 846, 847, 848, 849, 850, 851, 852, 853, - 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, - 14, 864, 865, 866, 15, 867, 868, 869, 557, 870, - 16, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 871, 872, 873, 874, 77, 78, 79, - 875, 876, 877, 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, 878, 879, 880, 881, 882, 883, - 884, 885, 886, 121, 122, 123, 124, 125, 887, 126, - 127, 128, 888, 889, 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, - 890, 891, 892, 155, 156, 157, 158, 159, 160, 161, - 162, 893, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 894, 895, 896, 897, 898, 899, - 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, - 910, 911, 912, 913, 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, 914, 214, 915, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 916, 917, 918, 919, 920, 921, - 922, 923, 924, 925, 926, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 927, 928, 929, 930, 931, - 932, 933, 243, 934, 935, 936, 937, 938, 939, 940, - 244, 245, 941, 246, 247, 942, 248, 249, 943, 944, - 250, 251, 252, 253, 254, 255, 256, 257, 945, 946, - 947, 258, 948, 949, 950, 951, 952, 953, 954, 955, - 259, 260, 261, 262, 956, 957, 958, 959, 960, 961, - 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, - 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, - 982, 983, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 529, 482, 514, 483, 484, 622, 499, 662, 663, + 625, 3, 4, 667, 668, 500, 501, 529, 583, 584, + 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, + 595, 596, 597, 598, 599, 600, 601, 669, 670, 515, + 516, 671, 672, 673, 674, 675, 5, 676, 677, 678, + 679, 680, 6, 628, 629, 630, 631, 632, 633, 634, + 635, 636, 637, 681, 682, 683, 517, 485, 566, 567, + 568, 569, 570, 571, 572, 573, 649, 650, 651, 652, + 653, 654, 684, 685, 686, 687, 688, 689, 690, 691, + 692, 693, 694, 695, 696, 697, 7, 698, 699, 700, + 486, 701, 702, 487, 502, 703, 503, 704, 705, 504, + 706, 707, 488, 708, 8, 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, 518, 519, 741, + 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, + 752, 753, 754, 755, 756, 757, 758, 759, 9, 760, + 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, + 771, 772, 773, 774, 775, 776, 777, 520, 778, 779, + 780, 781, 782, 783, 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, 812, 813, 814, 815, 816, 10, 817, 818, + 819, 820, 821, 530, 822, 531, 532, 533, 534, 535, + 823, 824, 825, 826, 827, 536, 828, 829, 11, 830, + 489, 531, 532, 533, 505, 831, 832, 833, 834, 835, + 836, 536, 837, 838, 839, 840, 841, 842, 843, 12, + 844, 845, 846, 847, 537, 538, 848, 849, 13, 550, + 551, 552, 553, 554, 850, 851, 852, 853, 854, 855, + 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, + 866, 867, 14, 868, 869, 870, 15, 871, 872, 873, + 561, 874, 16, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 875, 876, 877, 878, 77, + 78, 79, 879, 880, 881, 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, 882, 883, 884, 885, + 886, 887, 888, 889, 890, 121, 122, 123, 124, 125, + 891, 126, 127, 128, 892, 893, 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, 894, 895, 896, 155, 897, 898, 156, 157, + 158, 159, 160, 161, 162, 899, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 900, 901, + 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, + 912, 913, 914, 915, 916, 917, 918, 919, 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, 920, 214, 921, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 922, 923, + 924, 925, 926, 927, 928, 929, 930, 931, 932, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 933, + 934, 935, 936, 937, 938, 939, 243, 940, 941, 942, + 943, 944, 945, 946, 244, 245, 947, 246, 247, 948, + 248, 249, 949, 950, 250, 251, 252, 253, 254, 255, + 256, 257, 951, 952, 953, 258, 954, 955, 956, 957, + 958, 959, 960, 961, 259, 260, 261, 262, 962, 963, + 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, + 974, 975, 976, 977, 978, 979, 980, 981, 982, 983, + 984, 985, 986, 987, 988, 989, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 558, - 559, 560, 561 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 562, 563, 564, 565 }; static const yytype_int16 yycheck[] = { - 0, 45, 45, 45, 47, 48, 115, 45, 301, 302, - 311, 11, 12, 10, 10, 53, 54, 45, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 10, 10, 81, + 0, 45, 45, 45, 47, 48, 115, 45, 303, 304, + 313, 11, 12, 10, 10, 53, 54, 45, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 10, 10, 81, 82, 10, 10, 10, 10, 10, 46, 10, 10, 10, - 10, 10, 52, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 10, 10, 10, 108, 110, 97, 98, - 99, 100, 101, 102, 103, 104, 268, 269, 270, 271, - 272, 273, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 52, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 10, 10, 10, 108, 110, 97, 98, + 99, 100, 101, 102, 103, 104, 270, 271, 272, 273, + 274, 275, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 96, 10, 10, 10, - 143, 10, 10, 10, 142, 10, 144, 10, 10, 10, - 153, 10, 10, 10, 114, 10, 10, 10, 10, 10, + 143, 10, 10, 146, 142, 10, 144, 10, 10, 147, + 10, 10, 155, 10, 114, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 187, 188, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 189, 190, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 166, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 168, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 227, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 229, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 225, 10, 10, 10, 10, - 10, 275, 10, 277, 278, 279, 280, 281, 10, 10, - 10, 10, 10, 287, 10, 10, 246, 10, 291, 277, - 278, 279, 290, 10, 10, 10, 10, 10, 10, 287, - 10, 10, 10, 10, 10, 10, 10, 267, 10, 10, - 10, 10, 316, 317, 10, 10, 276, 305, 306, 307, - 308, 309, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 227, 10, 10, + 10, 10, 10, 277, 10, 279, 280, 281, 282, 283, + 10, 10, 10, 10, 10, 289, 10, 10, 248, 10, + 293, 279, 280, 281, 292, 10, 10, 10, 10, 10, + 10, 289, 10, 10, 10, 10, 10, 10, 10, 269, + 10, 10, 10, 10, 318, 319, 10, 10, 278, 307, + 308, 309, 310, 311, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 300, 10, 10, 10, 304, 10, 10, 10, 37, 10, - 310, 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, 10, 10, 10, 10, 49, 50, 51, - 10, 10, 10, 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, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 105, 106, 107, 108, 109, 10, 111, - 112, 113, 10, 10, 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, - 10, 10, 10, 145, 146, 147, 148, 149, 150, 151, - 152, 10, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 10, 10, 10, 10, 10, 10, + 10, 10, 302, 10, 10, 10, 306, 10, 10, 10, + 37, 10, 312, 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, 10, 10, 10, 10, 49, + 50, 51, 10, 10, 10, 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, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 105, 106, 107, 108, 109, + 10, 111, 112, 113, 10, 10, 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, 10, 10, 10, 145, 10, 10, 148, 149, + 150, 151, 152, 153, 154, 10, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 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, 10, 226, 10, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 10, 10, 10, 10, 10, - 10, 10, 274, 10, 10, 10, 10, 10, 10, 10, - 282, 283, 10, 285, 286, 10, 288, 289, 10, 10, - 292, 293, 294, 295, 296, 297, 298, 299, 10, 10, - 10, 303, 10, 10, 10, 10, 10, 10, 10, 10, - 312, 313, 314, 315, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 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, 10, 228, 10, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 10, + 10, 10, 10, 10, 10, 10, 276, 10, 10, 10, + 10, 10, 10, 10, 284, 285, 10, 287, 288, 10, + 290, 291, 10, 10, 294, 295, 296, 297, 298, 299, + 300, 301, 10, 10, 10, 305, 10, 10, 10, 10, + 10, 10, 10, 10, 314, 315, 316, 317, 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, + 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, 37, - 37, 37, 37 + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 37, 37, 37, 37 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_int16 yystos[] = { - 0, 319, 0, 11, 12, 46, 52, 96, 114, 166, - 225, 246, 267, 276, 300, 304, 310, 320, 321, 322, - 325, 328, 331, 334, 342, 588, 599, 621, 625, 633, - 646, 656, 323, 326, 329, 332, 335, 343, 589, 600, - 622, 626, 634, 647, 657, 13, 14, 15, 16, 17, + 0, 321, 0, 11, 12, 46, 52, 96, 114, 168, + 227, 248, 269, 278, 302, 306, 312, 322, 323, 324, + 327, 330, 333, 336, 344, 592, 603, 625, 629, 637, + 650, 660, 325, 328, 331, 334, 337, 345, 593, 604, + 626, 630, 638, 651, 661, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 49, 50, 51, @@ -2039,58 +2728,58 @@ static const yytype_int16 yystos[] = 95, 105, 106, 107, 108, 109, 111, 112, 113, 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, 145, 146, 147, 148, 149, - 150, 151, 152, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 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, 226, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 274, 282, 283, 285, 286, 288, 289, - 292, 293, 294, 295, 296, 297, 298, 299, 303, 312, - 313, 314, 315, 324, 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, - 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, - 551, 552, 553, 554, 555, 556, 557, 629, 630, 631, - 632, 655, 45, 47, 48, 110, 143, 153, 291, 327, - 558, 559, 560, 561, 562, 563, 564, 45, 53, 54, - 142, 144, 290, 330, 565, 566, 567, 568, 569, 570, - 45, 81, 82, 108, 187, 188, 227, 333, 581, 582, - 583, 584, 585, 586, 587, 45, 275, 277, 278, 279, - 280, 281, 287, 316, 317, 336, 571, 572, 573, 574, - 575, 576, 577, 578, 579, 580, 305, 306, 307, 308, - 309, 337, 338, 339, 340, 341, 344, 571, 572, 573, - 574, 575, 97, 98, 99, 100, 101, 102, 103, 104, - 590, 591, 592, 593, 594, 595, 596, 597, 598, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 601, 602, - 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, - 613, 614, 615, 616, 617, 618, 619, 620, 115, 623, - 624, 311, 627, 628, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 635, 636, 637, 638, 639, 640, - 641, 642, 643, 644, 645, 268, 269, 270, 271, 272, - 273, 648, 649, 650, 651, 652, 653, 654, 301, 302, - 658, 659, 660, 10, 10, 10, 10, 10, 10, 10, + 137, 138, 139, 140, 141, 145, 148, 149, 150, 151, + 152, 153, 154, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 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, 228, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 276, 284, 285, 287, 288, 290, 291, + 294, 295, 296, 297, 298, 299, 300, 301, 305, 314, + 315, 316, 317, 326, 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, 541, 542, + 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, + 553, 554, 555, 556, 557, 558, 559, 633, 634, 635, + 636, 659, 45, 47, 48, 110, 143, 146, 155, 293, + 329, 560, 561, 562, 563, 564, 565, 566, 567, 45, + 53, 54, 142, 144, 147, 292, 332, 568, 569, 570, + 571, 572, 573, 574, 45, 81, 82, 108, 189, 190, + 229, 335, 585, 586, 587, 588, 589, 590, 591, 45, + 277, 279, 280, 281, 282, 283, 289, 318, 319, 338, + 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, + 307, 308, 309, 310, 311, 339, 340, 341, 342, 343, + 346, 575, 576, 577, 578, 579, 97, 98, 99, 100, + 101, 102, 103, 104, 594, 595, 596, 597, 598, 599, + 600, 601, 602, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 605, 606, 607, 608, 609, 610, 611, 612, + 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, + 623, 624, 115, 627, 628, 313, 631, 632, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 639, 640, + 641, 642, 643, 644, 645, 646, 647, 648, 649, 270, + 271, 272, 273, 274, 275, 652, 653, 654, 655, 656, + 657, 658, 303, 304, 662, 663, 664, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -2122,43 +2811,43 @@ static const yytype_int16 yystos[] = 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10 + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_int16 yyr1[] = { - 0, 318, 319, 319, 320, 320, 320, 320, 320, 320, - 320, 320, 320, 320, 320, 320, 320, 320, 321, 322, - 323, 323, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 325, 326, 326, 327, 327, 327, 327, 327, 327, 327, - 328, 329, 329, 330, 330, 330, 330, 330, 330, 331, - 332, 332, 333, 333, 333, 333, 333, 333, 333, 334, - 335, 335, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 337, 338, 339, 340, 341, 342, 343, 343, - 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 0, 320, 321, 321, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 323, 324, + 325, 325, 326, 326, 326, 326, 326, 326, 326, 326, + 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + 327, 328, 328, 329, 329, 329, 329, 329, 329, 329, + 329, 330, 331, 331, 332, 332, 332, 332, 332, 332, + 332, 333, 334, 334, 335, 335, 335, 335, 335, 335, + 335, 336, 337, 337, 338, 338, 338, 338, 338, 338, + 338, 338, 338, 338, 339, 340, 341, 342, 343, 344, + 345, 345, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 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, @@ -2182,19 +2871,19 @@ static const yytype_int16 yyr1[] = 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, - 585, 586, 587, 588, 589, 589, 590, 590, 590, 590, - 590, 590, 590, 590, 591, 592, 593, 594, 595, 596, - 597, 598, 599, 600, 600, 601, 601, 601, 601, 601, - 601, 601, 601, 601, 601, 601, 601, 601, 601, 601, - 601, 601, 601, 601, 602, 603, 604, 605, 606, 607, + 585, 586, 587, 588, 589, 590, 591, 592, 593, 593, + 594, 594, 594, 594, 594, 594, 594, 594, 595, 596, + 597, 598, 599, 600, 601, 602, 603, 604, 604, 605, + 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, + 605, 605, 605, 605, 605, 605, 605, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, - 618, 619, 620, 621, 622, 622, 623, 624, 625, 626, - 626, 627, 628, 629, 630, 631, 632, 633, 634, 634, - 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, - 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, - 646, 647, 647, 648, 648, 648, 648, 648, 648, 649, - 650, 651, 652, 653, 654, 655, 656, 657, 657, 658, - 658, 659, 660 + 618, 619, 620, 621, 622, 623, 624, 625, 626, 626, + 627, 628, 629, 630, 630, 631, 632, 633, 634, 635, + 636, 637, 638, 638, 639, 639, 639, 639, 639, 639, + 639, 639, 639, 639, 640, 641, 642, 643, 644, 645, + 646, 647, 648, 649, 650, 651, 651, 652, 652, 652, + 652, 652, 652, 653, 654, 655, 656, 657, 658, 659, + 660, 661, 661, 662, 662, 663, 664 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -2225,11 +2914,12 @@ static const yytype_int8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, + 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, + 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, - 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 2, 2, 2, 2, 1, 2, 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -2242,31 +2932,30 @@ static const yytype_int8 yyr2[] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 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, 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, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, - 2, 2, 2, 1, 2, 0, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, - 2, 2, 1, 2, 0, 1, 1, 1, 1, 1, + 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, 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, 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, 1, 2, 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, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 1, 2, 0, 1, 2, 1, 2, - 0, 1, 2, 2, 2, 3, 3, 1, 2, 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 1, 2, 0, 1, 1, 1, 1, 1, 1, 2, - 2, 2, 2, 2, 2, 3, 1, 2, 0, 1, - 1, 2, 2 + 2, 2, 2, 2, 1, 2, 0, 1, 1, 1, + 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, + 1, 2, 0, 1, 1, 2, 2 }; @@ -2478,7 +3167,7 @@ yydestruct (const char *yymsg, } -/* Lookahead token kind. */ +/* The lookahead symbol. */ int yychar; /* The semantic value of the lookahead symbol. */ @@ -2496,30 +3185,34 @@ int yynerrs; int yyparse (void) { - yy_state_fast_t yystate = 0; + yy_state_fast_t yystate; /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus = 0; + int yyerrstatus; - /* Refer to the stacks through separate pointers, to allow yyoverflow + /* 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. */ /* Their size. */ - YYPTRDIFF_T yystacksize = YYINITDEPTH; + YYPTRDIFF_T yystacksize; - /* The state stack: array, bottom, top. */ + /* The state stack. */ yy_state_t yyssa[YYINITDEPTH]; - yy_state_t *yyss = yyssa; - yy_state_t *yyssp = yyss; + yy_state_t *yyss; + yy_state_t *yyssp; - /* The semantic value stack: array, bottom, top. */ + /* The semantic value stack. */ YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs = yyvsa; - YYSTYPE *yyvsp = yyvs; + YYSTYPE *yyvs; + YYSTYPE *yyvsp; int yyn; /* The return value of yyparse. */ int yyresult; - /* Lookahead symbol kind. */ + /* Lookahead token as an internal (translated) token number. */ yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY; /* The variables used to return semantic value and location from the action routines. */ @@ -2533,6 +3226,15 @@ yyparse (void) Keep to zero when no symbol should be popped. */ int yylen = 0; + yynerrs = 0; + yystate = 0; + yyerrstatus = 0; + + yystacksize = YYINITDEPTH; + yyssp = yyss = yyssa; + yyvsp = yyvs = yyvsa; + + YYDPRINTF ((stderr, "Starting parse\n")); yychar = YYEMPTY; /* Cause a token to be read. */ @@ -2733,24 +3435,24 @@ yyreduce: YY_REDUCE_PRINT (yyn); switch (yyn) { - case 18: /* force_toplevel: VAR_FORCE_TOPLEVEL */ -#line 200 "./util/configparser.y" + case 18: +#line 201 "./util/configparser.y" { OUTYY(("\nP(force-toplevel)\n")); } -#line 2742 "util/configparser.c" +#line 3444 "util/configparser.c" break; - case 19: /* serverstart: VAR_SERVER */ -#line 206 "./util/configparser.y" + case 19: +#line 207 "./util/configparser.y" { OUTYY(("\nP(server:)\n")); } -#line 2750 "util/configparser.c" +#line 3452 "util/configparser.c" break; - case 240: /* stubstart: VAR_STUB_ZONE */ -#line 313 "./util/configparser.y" + case 240: +#line 314 "./util/configparser.y" { struct config_stub* s; OUTYY(("\nP(stub_zone:)\n")); @@ -2761,11 +3463,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2765 "util/configparser.c" +#line 3467 "util/configparser.c" break; - case 250: /* forwardstart: VAR_FORWARD_ZONE */ -#line 330 "./util/configparser.y" + case 251: +#line 331 "./util/configparser.y" { struct config_stub* s; OUTYY(("\nP(forward_zone:)\n")); @@ -2776,11 +3478,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2780 "util/configparser.c" +#line 3482 "util/configparser.c" break; - case 259: /* viewstart: VAR_VIEW */ -#line 347 "./util/configparser.y" + case 261: +#line 348 "./util/configparser.y" { struct config_view* s; OUTYY(("\nP(view:)\n")); @@ -2793,11 +3495,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2797 "util/configparser.c" +#line 3499 "util/configparser.c" break; - case 269: /* authstart: VAR_AUTH_ZONE */ -#line 366 "./util/configparser.y" + case 271: +#line 367 "./util/configparser.y" { struct config_auth* s; OUTYY(("\nP(auth_zone:)\n")); @@ -2815,11 +3517,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2819 "util/configparser.c" +#line 3521 "util/configparser.c" break; - case 282: /* rpz_tag: VAR_TAGS STRING_ARG */ -#line 392 "./util/configparser.y" + case 284: +#line 393 "./util/configparser.y" { uint8_t* bitlist; size_t len = 0; @@ -2836,11 +3538,11 @@ yyreduce: } } -#line 2840 "util/configparser.c" +#line 3542 "util/configparser.c" break; - case 283: /* rpz_action_override: VAR_RPZ_ACTION_OVERRIDE STRING_ARG */ -#line 411 "./util/configparser.y" + case 285: +#line 412 "./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 && @@ -2855,21 +3557,21 @@ yyreduce: cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); } } -#line 2859 "util/configparser.c" +#line 3561 "util/configparser.c" break; - case 284: /* rpz_cname_override: VAR_RPZ_CNAME_OVERRIDE STRING_ARG */ -#line 428 "./util/configparser.y" + case 286: +#line 429 "./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 2869 "util/configparser.c" +#line 3571 "util/configparser.c" break; - case 285: /* rpz_log: VAR_RPZ_LOG STRING_ARG */ -#line 436 "./util/configparser.y" + case 287: +#line 437 "./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) @@ -2877,21 +3579,21 @@ yyreduce: else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2881 "util/configparser.c" +#line 3583 "util/configparser.c" break; - case 286: /* rpz_log_name: VAR_RPZ_LOG_NAME STRING_ARG */ -#line 446 "./util/configparser.y" + case 288: +#line 447 "./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 2891 "util/configparser.c" +#line 3593 "util/configparser.c" break; - case 287: /* rpzstart: VAR_RPZ */ -#line 454 "./util/configparser.y" + case 289: +#line 455 "./util/configparser.y" { struct config_auth* s; OUTYY(("\nP(rpz:)\n")); @@ -2907,11 +3609,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2911 "util/configparser.c" +#line 3613 "util/configparser.c" break; - case 300: /* server_num_threads: VAR_NUM_THREADS STRING_ARG */ -#line 477 "./util/configparser.y" + case 302: +#line 478 "./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) @@ -2919,11 +3621,11 @@ yyreduce: else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2923 "util/configparser.c" +#line 3625 "util/configparser.c" break; - case 301: /* server_verbosity: VAR_VERBOSITY STRING_ARG */ -#line 486 "./util/configparser.y" + case 303: +#line 487 "./util/configparser.y" { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -2931,11 +3633,11 @@ yyreduce: else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2935 "util/configparser.c" +#line 3637 "util/configparser.c" break; - case 302: /* server_statistics_interval: VAR_STATISTICS_INTERVAL STRING_ARG */ -#line 495 "./util/configparser.y" + case 304: +#line 496 "./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) @@ -2945,11 +3647,11 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2949 "util/configparser.c" +#line 3651 "util/configparser.c" break; - case 303: /* server_statistics_cumulative: VAR_STATISTICS_CUMULATIVE STRING_ARG */ -#line 506 "./util/configparser.y" + case 305: +#line 507 "./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) @@ -2957,11 +3659,11 @@ yyreduce: else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2961 "util/configparser.c" +#line 3663 "util/configparser.c" break; - case 304: /* server_extended_statistics: VAR_EXTENDED_STATISTICS STRING_ARG */ -#line 515 "./util/configparser.y" + case 306: +#line 516 "./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) @@ -2969,11 +3671,11 @@ yyreduce: else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2973 "util/configparser.c" +#line 3675 "util/configparser.c" break; - case 305: /* server_shm_enable: VAR_SHM_ENABLE STRING_ARG */ -#line 524 "./util/configparser.y" + case 307: +#line 525 "./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) @@ -2981,11 +3683,11 @@ yyreduce: else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2985 "util/configparser.c" +#line 3687 "util/configparser.c" break; - case 306: /* server_shm_key: VAR_SHM_KEY STRING_ARG */ -#line 533 "./util/configparser.y" + case 308: +#line 534 "./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) @@ -2995,11 +3697,11 @@ yyreduce: else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2999 "util/configparser.c" +#line 3701 "util/configparser.c" break; - case 307: /* server_port: VAR_PORT STRING_ARG */ -#line 544 "./util/configparser.y" + case 309: +#line 545 "./util/configparser.y" { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3007,11 +3709,11 @@ yyreduce: else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3011 "util/configparser.c" +#line 3713 "util/configparser.c" break; - case 308: /* server_send_client_subnet: VAR_SEND_CLIENT_SUBNET STRING_ARG */ -#line 553 "./util/configparser.y" + case 310: +#line 554 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str))); @@ -3022,11 +3724,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3026 "util/configparser.c" +#line 3728 "util/configparser.c" break; - case 309: /* server_client_subnet_zone: VAR_CLIENT_SUBNET_ZONE STRING_ARG */ -#line 565 "./util/configparser.y" + case 311: +#line 566 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str))); @@ -3038,11 +3740,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3042 "util/configparser.c" +#line 3744 "util/configparser.c" break; - case 310: /* server_client_subnet_always_forward: VAR_CLIENT_SUBNET_ALWAYS_FORWARD STRING_ARG */ -#line 579 "./util/configparser.y" + case 312: +#line 580 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str))); @@ -3056,11 +3758,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3060 "util/configparser.c" +#line 3762 "util/configparser.c" break; - case 311: /* server_client_subnet_opcode: VAR_CLIENT_SUBNET_OPCODE STRING_ARG */ -#line 594 "./util/configparser.y" + case 313: +#line 595 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str))); @@ -3070,11 +3772,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3074 "util/configparser.c" +#line 3776 "util/configparser.c" break; - case 312: /* server_max_client_subnet_ipv4: VAR_MAX_CLIENT_SUBNET_IPV4 STRING_ARG */ -#line 605 "./util/configparser.y" + case 314: +#line 606 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -3090,11 +3792,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3094 "util/configparser.c" +#line 3796 "util/configparser.c" break; - case 313: /* server_max_client_subnet_ipv6: VAR_MAX_CLIENT_SUBNET_IPV6 STRING_ARG */ -#line 622 "./util/configparser.y" + case 315: +#line 623 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3110,11 +3812,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3114 "util/configparser.c" +#line 3816 "util/configparser.c" break; - case 314: /* server_min_client_subnet_ipv4: VAR_MIN_CLIENT_SUBNET_IPV4 STRING_ARG */ -#line 639 "./util/configparser.y" + case 316: +#line 640 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -3130,11 +3832,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3134 "util/configparser.c" +#line 3836 "util/configparser.c" break; - case 315: /* server_min_client_subnet_ipv6: VAR_MIN_CLIENT_SUBNET_IPV6 STRING_ARG */ -#line 656 "./util/configparser.y" + case 317: +#line 657 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3150,11 +3852,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3154 "util/configparser.c" +#line 3856 "util/configparser.c" break; - case 316: /* server_max_ecs_tree_size_ipv4: VAR_MAX_ECS_TREE_SIZE_IPV4 STRING_ARG */ -#line 673 "./util/configparser.y" + case 318: +#line 674 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str))); @@ -3168,11 +3870,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3172 "util/configparser.c" +#line 3874 "util/configparser.c" break; - case 317: /* server_max_ecs_tree_size_ipv6: VAR_MAX_ECS_TREE_SIZE_IPV6 STRING_ARG */ -#line 688 "./util/configparser.y" + case 319: +#line 689 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str))); @@ -3186,11 +3888,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3190 "util/configparser.c" +#line 3892 "util/configparser.c" break; - case 318: /* server_interface: VAR_INTERFACE STRING_ARG */ -#line 703 "./util/configparser.y" + case 320: +#line 704 "./util/configparser.y" { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_ifs == 0) @@ -3202,11 +3904,11 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 3206 "util/configparser.c" +#line 3908 "util/configparser.c" break; - case 319: /* server_outgoing_interface: VAR_OUTGOING_INTERFACE STRING_ARG */ -#line 716 "./util/configparser.y" + case 321: +#line 717 "./util/configparser.y" { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_out_ifs == 0) @@ -3220,11 +3922,11 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 3224 "util/configparser.c" +#line 3926 "util/configparser.c" break; - case 320: /* server_outgoing_range: VAR_OUTGOING_RANGE STRING_ARG */ -#line 731 "./util/configparser.y" + case 322: +#line 732 "./util/configparser.y" { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3232,11 +3934,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3236 "util/configparser.c" +#line 3938 "util/configparser.c" break; - case 321: /* server_outgoing_port_permit: VAR_OUTGOING_PORT_PERMIT STRING_ARG */ -#line 740 "./util/configparser.y" + case 323: +#line 741 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 1, @@ -3244,11 +3946,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3248 "util/configparser.c" +#line 3950 "util/configparser.c" break; - case 322: /* server_outgoing_port_avoid: VAR_OUTGOING_PORT_AVOID STRING_ARG */ -#line 749 "./util/configparser.y" + case 324: +#line 750 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 0, @@ -3256,11 +3958,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3260 "util/configparser.c" +#line 3962 "util/configparser.c" break; - case 323: /* server_outgoing_num_tcp: VAR_OUTGOING_NUM_TCP STRING_ARG */ -#line 758 "./util/configparser.y" + case 325: +#line 759 "./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) @@ -3268,11 +3970,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3272 "util/configparser.c" +#line 3974 "util/configparser.c" break; - case 324: /* server_incoming_num_tcp: VAR_INCOMING_NUM_TCP STRING_ARG */ -#line 767 "./util/configparser.y" + case 326: +#line 768 "./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) @@ -3280,11 +3982,11 @@ yyreduce: else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3284 "util/configparser.c" +#line 3986 "util/configparser.c" break; - case 325: /* server_interface_automatic: VAR_INTERFACE_AUTOMATIC STRING_ARG */ -#line 776 "./util/configparser.y" + case 327: +#line 777 "./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) @@ -3292,11 +3994,11 @@ yyreduce: else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3296 "util/configparser.c" +#line 3998 "util/configparser.c" break; - case 326: /* server_do_ip4: VAR_DO_IP4 STRING_ARG */ -#line 785 "./util/configparser.y" + case 328: +#line 786 "./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) @@ -3304,11 +4006,11 @@ yyreduce: else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3308 "util/configparser.c" +#line 4010 "util/configparser.c" break; - case 327: /* server_do_ip6: VAR_DO_IP6 STRING_ARG */ -#line 794 "./util/configparser.y" + case 329: +#line 795 "./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) @@ -3316,11 +4018,11 @@ yyreduce: else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3320 "util/configparser.c" +#line 4022 "util/configparser.c" break; - case 328: /* server_do_udp: VAR_DO_UDP STRING_ARG */ -#line 803 "./util/configparser.y" + case 330: +#line 804 "./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) @@ -3328,11 +4030,11 @@ yyreduce: else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3332 "util/configparser.c" +#line 4034 "util/configparser.c" break; - case 329: /* server_do_tcp: VAR_DO_TCP STRING_ARG */ -#line 812 "./util/configparser.y" + case 331: +#line 813 "./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) @@ -3340,11 +4042,11 @@ yyreduce: else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3344 "util/configparser.c" +#line 4046 "util/configparser.c" break; - case 330: /* server_prefer_ip4: VAR_PREFER_IP4 STRING_ARG */ -#line 821 "./util/configparser.y" + case 332: +#line 822 "./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) @@ -3352,11 +4054,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3356 "util/configparser.c" +#line 4058 "util/configparser.c" break; - case 331: /* server_prefer_ip6: VAR_PREFER_IP6 STRING_ARG */ -#line 830 "./util/configparser.y" + case 333: +#line 831 "./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) @@ -3364,11 +4066,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3368 "util/configparser.c" +#line 4070 "util/configparser.c" break; - case 332: /* server_tcp_mss: VAR_TCP_MSS STRING_ARG */ -#line 839 "./util/configparser.y" + case 334: +#line 840 "./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) @@ -3376,11 +4078,11 @@ yyreduce: else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3380 "util/configparser.c" +#line 4082 "util/configparser.c" break; - case 333: /* server_outgoing_tcp_mss: VAR_OUTGOING_TCP_MSS STRING_ARG */ -#line 848 "./util/configparser.y" + case 335: +#line 849 "./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) @@ -3388,11 +4090,11 @@ yyreduce: else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3392 "util/configparser.c" +#line 4094 "util/configparser.c" break; - case 334: /* server_tcp_idle_timeout: VAR_TCP_IDLE_TIMEOUT STRING_ARG */ -#line 857 "./util/configparser.y" + case 336: +#line 858 "./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) @@ -3404,11 +4106,11 @@ yyreduce: else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3408 "util/configparser.c" +#line 4110 "util/configparser.c" break; - case 335: /* server_max_reuse_tcp_queries: VAR_MAX_REUSE_TCP_QUERIES STRING_ARG */ -#line 870 "./util/configparser.y" + case 337: +#line 871 "./util/configparser.y" { OUTYY(("P(server_max_reuse_tcp_queries:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3418,11 +4120,11 @@ yyreduce: else cfg_parser->cfg->max_reuse_tcp_queries = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3422 "util/configparser.c" +#line 4124 "util/configparser.c" break; - case 336: /* server_tcp_reuse_timeout: VAR_TCP_REUSE_TIMEOUT STRING_ARG */ -#line 881 "./util/configparser.y" + case 338: +#line 882 "./util/configparser.y" { OUTYY(("P(server_tcp_reuse_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3432,11 +4134,11 @@ yyreduce: else cfg_parser->cfg->tcp_reuse_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3436 "util/configparser.c" +#line 4138 "util/configparser.c" break; - case 337: /* server_tcp_auth_query_timeout: VAR_TCP_AUTH_QUERY_TIMEOUT STRING_ARG */ -#line 892 "./util/configparser.y" + case 339: +#line 893 "./util/configparser.y" { OUTYY(("P(server_tcp_auth_query_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3446,11 +4148,11 @@ yyreduce: else cfg_parser->cfg->tcp_auth_query_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3450 "util/configparser.c" +#line 4152 "util/configparser.c" break; - case 338: /* server_tcp_keepalive: VAR_EDNS_TCP_KEEPALIVE STRING_ARG */ -#line 903 "./util/configparser.y" + case 340: +#line 904 "./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) @@ -3458,11 +4160,11 @@ yyreduce: else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3462 "util/configparser.c" +#line 4164 "util/configparser.c" break; - case 339: /* server_tcp_keepalive_timeout: VAR_EDNS_TCP_KEEPALIVE_TIMEOUT STRING_ARG */ -#line 912 "./util/configparser.y" + case 341: +#line 913 "./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) @@ -3474,11 +4176,11 @@ yyreduce: else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3478 "util/configparser.c" +#line 4180 "util/configparser.c" break; - case 340: /* server_tcp_upstream: VAR_TCP_UPSTREAM STRING_ARG */ -#line 925 "./util/configparser.y" + case 342: +#line 926 "./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) @@ -3486,11 +4188,11 @@ yyreduce: else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3490 "util/configparser.c" +#line 4192 "util/configparser.c" break; - case 341: /* server_udp_upstream_without_downstream: VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM STRING_ARG */ -#line 934 "./util/configparser.y" + case 343: +#line 935 "./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) @@ -3498,11 +4200,11 @@ yyreduce: else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3502 "util/configparser.c" +#line 4204 "util/configparser.c" break; - case 342: /* server_ssl_upstream: VAR_SSL_UPSTREAM STRING_ARG */ -#line 943 "./util/configparser.y" + case 344: +#line 944 "./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) @@ -3510,31 +4212,31 @@ yyreduce: else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3514 "util/configparser.c" +#line 4216 "util/configparser.c" break; - case 343: /* server_ssl_service_key: VAR_SSL_SERVICE_KEY STRING_ARG */ -#line 952 "./util/configparser.y" + case 345: +#line 953 "./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 3524 "util/configparser.c" +#line 4226 "util/configparser.c" break; - case 344: /* server_ssl_service_pem: VAR_SSL_SERVICE_PEM STRING_ARG */ -#line 959 "./util/configparser.y" + case 346: +#line 960 "./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 3534 "util/configparser.c" +#line 4236 "util/configparser.c" break; - case 345: /* server_ssl_port: VAR_SSL_PORT STRING_ARG */ -#line 966 "./util/configparser.y" + case 347: +#line 967 "./util/configparser.y" { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3542,21 +4244,21 @@ yyreduce: else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3546 "util/configparser.c" +#line 4248 "util/configparser.c" break; - case 346: /* server_tls_cert_bundle: VAR_TLS_CERT_BUNDLE STRING_ARG */ -#line 975 "./util/configparser.y" + case 348: +#line 976 "./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 3556 "util/configparser.c" +#line 4258 "util/configparser.c" break; - case 347: /* server_tls_win_cert: VAR_TLS_WIN_CERT STRING_ARG */ -#line 982 "./util/configparser.y" + case 349: +#line 983 "./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) @@ -3564,53 +4266,53 @@ yyreduce: else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3568 "util/configparser.c" +#line 4270 "util/configparser.c" break; - case 348: /* server_tls_additional_port: VAR_TLS_ADDITIONAL_PORT STRING_ARG */ -#line 991 "./util/configparser.y" + case 350: +#line 992 "./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 3579 "util/configparser.c" +#line 4281 "util/configparser.c" break; - case 349: /* server_tls_ciphers: VAR_TLS_CIPHERS STRING_ARG */ -#line 999 "./util/configparser.y" + case 351: +#line 1000 "./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 3589 "util/configparser.c" +#line 4291 "util/configparser.c" break; - case 350: /* server_tls_ciphersuites: VAR_TLS_CIPHERSUITES STRING_ARG */ -#line 1006 "./util/configparser.y" + case 352: +#line 1007 "./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 3599 "util/configparser.c" +#line 4301 "util/configparser.c" break; - case 351: /* server_tls_session_ticket_keys: VAR_TLS_SESSION_TICKET_KEYS STRING_ARG */ -#line 1013 "./util/configparser.y" + case 353: +#line 1014 "./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 3610 "util/configparser.c" +#line 4312 "util/configparser.c" break; - case 352: /* server_tls_use_sni: VAR_TLS_USE_SNI STRING_ARG */ -#line 1021 "./util/configparser.y" + case 354: +#line 1022 "./util/configparser.y" { OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3618,11 +4320,11 @@ yyreduce: else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3622 "util/configparser.c" +#line 4324 "util/configparser.c" break; - case 353: /* server_https_port: VAR_HTTPS_PORT STRING_ARG */ -#line 1030 "./util/configparser.y" + case 355: +#line 1031 "./util/configparser.y" { OUTYY(("P(server_https_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3630,11 +4332,11 @@ yyreduce: else cfg_parser->cfg->https_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3634 "util/configparser.c" +#line 4336 "util/configparser.c" break; - case 354: /* server_http_endpoint: VAR_HTTP_ENDPOINT STRING_ARG */ -#line 1038 "./util/configparser.y" + case 356: +#line 1039 "./util/configparser.y" { OUTYY(("P(server_http_endpoint:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->http_endpoint); @@ -3650,11 +4352,11 @@ yyreduce: cfg_parser->cfg->http_endpoint = (yyvsp[0].str); } } -#line 3654 "util/configparser.c" +#line 4356 "util/configparser.c" break; - case 355: /* server_http_max_streams: VAR_HTTP_MAX_STREAMS STRING_ARG */ -#line 1054 "./util/configparser.y" + case 357: +#line 1055 "./util/configparser.y" { OUTYY(("P(server_http_max_streams:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3662,11 +4364,11 @@ yyreduce: else cfg_parser->cfg->http_max_streams = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3666 "util/configparser.c" +#line 4368 "util/configparser.c" break; - case 356: /* server_http_query_buffer_size: VAR_HTTP_QUERY_BUFFER_SIZE STRING_ARG */ -#line 1062 "./util/configparser.y" + case 358: +#line 1063 "./util/configparser.y" { OUTYY(("P(server_http_query_buffer_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), @@ -3674,11 +4376,11 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3678 "util/configparser.c" +#line 4380 "util/configparser.c" break; - case 357: /* server_http_response_buffer_size: VAR_HTTP_RESPONSE_BUFFER_SIZE STRING_ARG */ -#line 1070 "./util/configparser.y" + case 359: +#line 1071 "./util/configparser.y" { OUTYY(("P(server_http_response_buffer_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), @@ -3686,11 +4388,11 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3690 "util/configparser.c" +#line 4392 "util/configparser.c" break; - case 358: /* server_http_nodelay: VAR_HTTP_NODELAY STRING_ARG */ -#line 1078 "./util/configparser.y" + case 360: +#line 1079 "./util/configparser.y" { OUTYY(("P(server_http_nodelay:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3698,11 +4400,11 @@ yyreduce: else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3702 "util/configparser.c" +#line 4404 "util/configparser.c" break; - case 359: /* server_http_notls_downstream: VAR_HTTP_NOTLS_DOWNSTREAM STRING_ARG */ -#line 1086 "./util/configparser.y" + case 361: +#line 1087 "./util/configparser.y" { OUTYY(("P(server_http_notls_downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3710,11 +4412,11 @@ yyreduce: else cfg_parser->cfg->http_notls_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3714 "util/configparser.c" +#line 4416 "util/configparser.c" break; - case 360: /* server_use_systemd: VAR_USE_SYSTEMD STRING_ARG */ -#line 1094 "./util/configparser.y" + case 362: +#line 1095 "./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) @@ -3722,11 +4424,11 @@ yyreduce: else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3726 "util/configparser.c" +#line 4428 "util/configparser.c" break; - case 361: /* server_do_daemonize: VAR_DO_DAEMONIZE STRING_ARG */ -#line 1103 "./util/configparser.y" + case 363: +#line 1104 "./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) @@ -3734,11 +4436,11 @@ yyreduce: else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3738 "util/configparser.c" +#line 4440 "util/configparser.c" break; - case 362: /* server_use_syslog: VAR_USE_SYSLOG STRING_ARG */ -#line 1112 "./util/configparser.y" + case 364: +#line 1113 "./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) @@ -3751,11 +4453,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3755 "util/configparser.c" +#line 4457 "util/configparser.c" break; - case 363: /* server_log_time_ascii: VAR_LOG_TIME_ASCII STRING_ARG */ -#line 1126 "./util/configparser.y" + case 365: +#line 1127 "./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) @@ -3763,11 +4465,11 @@ yyreduce: else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3767 "util/configparser.c" +#line 4469 "util/configparser.c" break; - case 364: /* server_log_queries: VAR_LOG_QUERIES STRING_ARG */ -#line 1135 "./util/configparser.y" + case 366: +#line 1136 "./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) @@ -3775,11 +4477,11 @@ yyreduce: else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3779 "util/configparser.c" +#line 4481 "util/configparser.c" break; - case 365: /* server_log_replies: VAR_LOG_REPLIES STRING_ARG */ -#line 1144 "./util/configparser.y" + case 367: +#line 1145 "./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) @@ -3787,11 +4489,11 @@ yyreduce: else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3791 "util/configparser.c" +#line 4493 "util/configparser.c" break; - case 366: /* server_log_tag_queryreply: VAR_LOG_TAG_QUERYREPLY STRING_ARG */ -#line 1153 "./util/configparser.y" + case 368: +#line 1154 "./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) @@ -3799,11 +4501,11 @@ yyreduce: else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3803 "util/configparser.c" +#line 4505 "util/configparser.c" break; - case 367: /* server_log_servfail: VAR_LOG_SERVFAIL STRING_ARG */ -#line 1162 "./util/configparser.y" + case 369: +#line 1163 "./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) @@ -3811,11 +4513,11 @@ yyreduce: else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3815 "util/configparser.c" +#line 4517 "util/configparser.c" break; - case 368: /* server_log_local_actions: VAR_LOG_LOCAL_ACTIONS STRING_ARG */ -#line 1171 "./util/configparser.y" + case 370: +#line 1172 "./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) @@ -3823,31 +4525,31 @@ yyreduce: else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3827 "util/configparser.c" +#line 4529 "util/configparser.c" break; - case 369: /* server_chroot: VAR_CHROOT STRING_ARG */ -#line 1180 "./util/configparser.y" + case 371: +#line 1181 "./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 3837 "util/configparser.c" +#line 4539 "util/configparser.c" break; - case 370: /* server_username: VAR_USERNAME STRING_ARG */ -#line 1187 "./util/configparser.y" + case 372: +#line 1188 "./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 3847 "util/configparser.c" +#line 4549 "util/configparser.c" break; - case 371: /* server_directory: VAR_DIRECTORY STRING_ARG */ -#line 1194 "./util/configparser.y" + case 373: +#line 1195 "./util/configparser.y" { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->directory); @@ -3872,105 +4574,105 @@ yyreduce: } } } -#line 3876 "util/configparser.c" +#line 4578 "util/configparser.c" break; - case 372: /* server_logfile: VAR_LOGFILE STRING_ARG */ -#line 1220 "./util/configparser.y" + case 374: +#line 1221 "./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 3887 "util/configparser.c" +#line 4589 "util/configparser.c" break; - case 373: /* server_pidfile: VAR_PIDFILE STRING_ARG */ -#line 1228 "./util/configparser.y" + case 375: +#line 1229 "./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 3897 "util/configparser.c" +#line 4599 "util/configparser.c" break; - case 374: /* server_root_hints: VAR_ROOT_HINTS STRING_ARG */ -#line 1235 "./util/configparser.y" + case 376: +#line 1236 "./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 3907 "util/configparser.c" +#line 4609 "util/configparser.c" break; - case 375: /* server_dlv_anchor_file: VAR_DLV_ANCHOR_FILE STRING_ARG */ -#line 1242 "./util/configparser.y" + case 377: +#line 1243 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str))); log_warn("option dlv-anchor-file ignored: DLV is decommissioned"); free((yyvsp[0].str)); } -#line 3917 "util/configparser.c" +#line 4619 "util/configparser.c" break; - case 376: /* server_dlv_anchor: VAR_DLV_ANCHOR STRING_ARG */ -#line 1249 "./util/configparser.y" + case 378: +#line 1250 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str))); log_warn("option dlv-anchor ignored: DLV is decommissioned"); free((yyvsp[0].str)); } -#line 3927 "util/configparser.c" +#line 4629 "util/configparser.c" break; - case 377: /* server_auto_trust_anchor_file: VAR_AUTO_TRUST_ANCHOR_FILE STRING_ARG */ -#line 1256 "./util/configparser.y" + case 379: +#line 1257 "./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 3938 "util/configparser.c" +#line 4640 "util/configparser.c" break; - case 378: /* server_trust_anchor_file: VAR_TRUST_ANCHOR_FILE STRING_ARG */ -#line 1264 "./util/configparser.y" + case 380: +#line 1265 "./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 3949 "util/configparser.c" +#line 4651 "util/configparser.c" break; - case 379: /* server_trusted_keys_file: VAR_TRUSTED_KEYS_FILE STRING_ARG */ -#line 1272 "./util/configparser.y" + case 381: +#line 1273 "./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 3960 "util/configparser.c" +#line 4662 "util/configparser.c" break; - case 380: /* server_trust_anchor: VAR_TRUST_ANCHOR STRING_ARG */ -#line 1280 "./util/configparser.y" + case 382: +#line 1281 "./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 3970 "util/configparser.c" +#line 4672 "util/configparser.c" break; - case 381: /* server_trust_anchor_signaling: VAR_TRUST_ANCHOR_SIGNALING STRING_ARG */ -#line 1287 "./util/configparser.y" + case 383: +#line 1288 "./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) @@ -3980,11 +4682,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3984 "util/configparser.c" +#line 4686 "util/configparser.c" break; - case 382: /* server_root_key_sentinel: VAR_ROOT_KEY_SENTINEL STRING_ARG */ -#line 1298 "./util/configparser.y" + case 384: +#line 1299 "./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) @@ -3994,21 +4696,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3998 "util/configparser.c" +#line 4700 "util/configparser.c" break; - case 383: /* server_domain_insecure: VAR_DOMAIN_INSECURE STRING_ARG */ -#line 1309 "./util/configparser.y" + case 385: +#line 1310 "./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 4008 "util/configparser.c" +#line 4710 "util/configparser.c" break; - case 384: /* server_hide_identity: VAR_HIDE_IDENTITY STRING_ARG */ -#line 1316 "./util/configparser.y" + case 386: +#line 1317 "./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) @@ -4016,11 +4718,11 @@ yyreduce: else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4020 "util/configparser.c" +#line 4722 "util/configparser.c" break; - case 385: /* server_hide_version: VAR_HIDE_VERSION STRING_ARG */ -#line 1325 "./util/configparser.y" + case 387: +#line 1326 "./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) @@ -4028,11 +4730,11 @@ yyreduce: else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4032 "util/configparser.c" +#line 4734 "util/configparser.c" break; - case 386: /* server_hide_trustanchor: VAR_HIDE_TRUSTANCHOR STRING_ARG */ -#line 1334 "./util/configparser.y" + case 388: +#line 1335 "./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) @@ -4040,11 +4742,11 @@ yyreduce: else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4044 "util/configparser.c" +#line 4746 "util/configparser.c" break; - case 387: /* server_hide_http_user_agent: VAR_HIDE_HTTP_USER_AGENT STRING_ARG */ -#line 1343 "./util/configparser.y" + case 389: +#line 1344 "./util/configparser.y" { OUTYY(("P(server_hide_user_agent:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4052,41 +4754,41 @@ yyreduce: else cfg_parser->cfg->hide_http_user_agent = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4056 "util/configparser.c" +#line 4758 "util/configparser.c" break; - case 388: /* server_identity: VAR_IDENTITY STRING_ARG */ -#line 1352 "./util/configparser.y" + case 390: +#line 1353 "./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 4066 "util/configparser.c" +#line 4768 "util/configparser.c" break; - case 389: /* server_version: VAR_VERSION STRING_ARG */ -#line 1359 "./util/configparser.y" + case 391: +#line 1360 "./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 4076 "util/configparser.c" +#line 4778 "util/configparser.c" break; - case 390: /* server_http_user_agent: VAR_HTTP_USER_AGENT STRING_ARG */ -#line 1366 "./util/configparser.y" + case 392: +#line 1367 "./util/configparser.y" { OUTYY(("P(server_http_user_agent:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->http_user_agent); cfg_parser->cfg->http_user_agent = (yyvsp[0].str); } -#line 4086 "util/configparser.c" +#line 4788 "util/configparser.c" break; - case 391: /* server_nsid: VAR_NSID STRING_ARG */ -#line 1373 "./util/configparser.y" + case 393: +#line 1374 "./util/configparser.y" { OUTYY(("P(server_nsid:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->nsid_cfg_str); @@ -4101,33 +4803,33 @@ yyreduce: yyerror("the NSID must be either a hex string or an " "ascii character string prepended with ascii_."); } -#line 4105 "util/configparser.c" +#line 4807 "util/configparser.c" break; - case 392: /* server_so_rcvbuf: VAR_SO_RCVBUF STRING_ARG */ -#line 1389 "./util/configparser.y" + case 394: +#line 1390 "./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 4116 "util/configparser.c" +#line 4818 "util/configparser.c" break; - case 393: /* server_so_sndbuf: VAR_SO_SNDBUF STRING_ARG */ -#line 1397 "./util/configparser.y" + case 395: +#line 1398 "./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 4127 "util/configparser.c" +#line 4829 "util/configparser.c" break; - case 394: /* server_so_reuseport: VAR_SO_REUSEPORT STRING_ARG */ -#line 1405 "./util/configparser.y" + case 396: +#line 1406 "./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) @@ -4136,11 +4838,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4140 "util/configparser.c" +#line 4842 "util/configparser.c" break; - case 395: /* server_ip_transparent: VAR_IP_TRANSPARENT STRING_ARG */ -#line 1415 "./util/configparser.y" + case 397: +#line 1416 "./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) @@ -4149,11 +4851,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4153 "util/configparser.c" +#line 4855 "util/configparser.c" break; - case 396: /* server_ip_freebind: VAR_IP_FREEBIND STRING_ARG */ -#line 1425 "./util/configparser.y" + case 398: +#line 1426 "./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) @@ -4162,11 +4864,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4166 "util/configparser.c" +#line 4868 "util/configparser.c" break; - case 397: /* server_ip_dscp: VAR_IP_DSCP STRING_ARG */ -#line 1435 "./util/configparser.y" + case 399: +#line 1436 "./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) @@ -4179,22 +4881,22 @@ yyreduce: cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4183 "util/configparser.c" +#line 4885 "util/configparser.c" break; - case 398: /* server_stream_wait_size: VAR_STREAM_WAIT_SIZE STRING_ARG */ -#line 1449 "./util/configparser.y" + case 400: +#line 1450 "./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 4194 "util/configparser.c" +#line 4896 "util/configparser.c" break; - case 399: /* server_edns_buffer_size: VAR_EDNS_BUFFER_SIZE STRING_ARG */ -#line 1457 "./util/configparser.y" + case 401: +#line 1458 "./util/configparser.y" { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4206,11 +4908,11 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4210 "util/configparser.c" +#line 4912 "util/configparser.c" break; - case 400: /* server_msg_buffer_size: VAR_MSG_BUFFER_SIZE STRING_ARG */ -#line 1470 "./util/configparser.y" + case 402: +#line 1471 "./util/configparser.y" { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4220,22 +4922,22 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4224 "util/configparser.c" +#line 4926 "util/configparser.c" break; - case 401: /* server_msg_cache_size: VAR_MSG_CACHE_SIZE STRING_ARG */ -#line 1481 "./util/configparser.y" + case 403: +#line 1482 "./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 4235 "util/configparser.c" +#line 4937 "util/configparser.c" break; - case 402: /* server_msg_cache_slabs: VAR_MSG_CACHE_SLABS STRING_ARG */ -#line 1489 "./util/configparser.y" + case 404: +#line 1490 "./util/configparser.y" { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4247,11 +4949,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4251 "util/configparser.c" +#line 4953 "util/configparser.c" break; - case 403: /* server_num_queries_per_thread: VAR_NUM_QUERIES_PER_THREAD STRING_ARG */ -#line 1502 "./util/configparser.y" + case 405: +#line 1503 "./util/configparser.y" { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4259,11 +4961,11 @@ yyreduce: else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4263 "util/configparser.c" +#line 4965 "util/configparser.c" break; - case 404: /* server_jostle_timeout: VAR_JOSTLE_TIMEOUT STRING_ARG */ -#line 1511 "./util/configparser.y" + case 406: +#line 1512 "./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) @@ -4271,11 +4973,11 @@ yyreduce: else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4275 "util/configparser.c" +#line 4977 "util/configparser.c" break; - case 405: /* server_delay_close: VAR_DELAY_CLOSE STRING_ARG */ -#line 1520 "./util/configparser.y" + case 407: +#line 1521 "./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) @@ -4283,11 +4985,11 @@ yyreduce: else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4287 "util/configparser.c" +#line 4989 "util/configparser.c" break; - case 406: /* server_udp_connect: VAR_UDP_CONNECT STRING_ARG */ -#line 1529 "./util/configparser.y" + case 408: +#line 1530 "./util/configparser.y" { OUTYY(("P(server_udp_connect:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4295,11 +4997,11 @@ yyreduce: else cfg_parser->cfg->udp_connect = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4299 "util/configparser.c" +#line 5001 "util/configparser.c" break; - case 407: /* server_unblock_lan_zones: VAR_UNBLOCK_LAN_ZONES STRING_ARG */ -#line 1538 "./util/configparser.y" + case 409: +#line 1539 "./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) @@ -4308,11 +5010,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4312 "util/configparser.c" +#line 5014 "util/configparser.c" break; - case 408: /* server_insecure_lan_zones: VAR_INSECURE_LAN_ZONES STRING_ARG */ -#line 1548 "./util/configparser.y" + case 410: +#line 1549 "./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) @@ -4321,22 +5023,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4325 "util/configparser.c" +#line 5027 "util/configparser.c" break; - case 409: /* server_rrset_cache_size: VAR_RRSET_CACHE_SIZE STRING_ARG */ -#line 1558 "./util/configparser.y" + case 411: +#line 1559 "./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 4336 "util/configparser.c" +#line 5038 "util/configparser.c" break; - case 410: /* server_rrset_cache_slabs: VAR_RRSET_CACHE_SLABS STRING_ARG */ -#line 1566 "./util/configparser.y" + case 412: +#line 1567 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4348,11 +5050,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4352 "util/configparser.c" +#line 5054 "util/configparser.c" break; - case 411: /* server_infra_host_ttl: VAR_INFRA_HOST_TTL STRING_ARG */ -#line 1579 "./util/configparser.y" + case 413: +#line 1580 "./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) @@ -4360,22 +5062,22 @@ yyreduce: else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4364 "util/configparser.c" +#line 5066 "util/configparser.c" break; - case 412: /* server_infra_lame_ttl: VAR_INFRA_LAME_TTL STRING_ARG */ -#line 1588 "./util/configparser.y" + case 414: +#line 1589 "./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 4375 "util/configparser.c" +#line 5077 "util/configparser.c" break; - case 413: /* server_infra_cache_numhosts: VAR_INFRA_CACHE_NUMHOSTS STRING_ARG */ -#line 1596 "./util/configparser.y" + case 415: +#line 1597 "./util/configparser.y" { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4383,22 +5085,22 @@ yyreduce: else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4387 "util/configparser.c" +#line 5089 "util/configparser.c" break; - case 414: /* server_infra_cache_lame_size: VAR_INFRA_CACHE_LAME_SIZE STRING_ARG */ -#line 1605 "./util/configparser.y" + case 416: +#line 1606 "./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 4398 "util/configparser.c" +#line 5100 "util/configparser.c" break; - case 415: /* server_infra_cache_slabs: VAR_INFRA_CACHE_SLABS STRING_ARG */ -#line 1613 "./util/configparser.y" + case 417: +#line 1614 "./util/configparser.y" { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4410,11 +5112,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4414 "util/configparser.c" +#line 5116 "util/configparser.c" break; - case 416: /* server_infra_cache_min_rtt: VAR_INFRA_CACHE_MIN_RTT STRING_ARG */ -#line 1626 "./util/configparser.y" + case 418: +#line 1627 "./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) @@ -4422,11 +5124,11 @@ yyreduce: else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4426 "util/configparser.c" +#line 5128 "util/configparser.c" break; - case 417: /* server_infra_keep_probing: VAR_INFRA_KEEP_PROBING STRING_ARG */ -#line 1635 "./util/configparser.y" + case 419: +#line 1636 "./util/configparser.y" { OUTYY(("P(server_infra_keep_probing:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4435,21 +5137,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4439 "util/configparser.c" +#line 5141 "util/configparser.c" break; - case 418: /* server_target_fetch_policy: VAR_TARGET_FETCH_POLICY STRING_ARG */ -#line 1645 "./util/configparser.y" + case 420: +#line 1646 "./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 4449 "util/configparser.c" +#line 5151 "util/configparser.c" break; - case 419: /* server_harden_short_bufsize: VAR_HARDEN_SHORT_BUFSIZE STRING_ARG */ -#line 1652 "./util/configparser.y" + case 421: +#line 1653 "./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) @@ -4458,11 +5160,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4462 "util/configparser.c" +#line 5164 "util/configparser.c" break; - case 420: /* server_harden_large_queries: VAR_HARDEN_LARGE_QUERIES STRING_ARG */ -#line 1662 "./util/configparser.y" + case 422: +#line 1663 "./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) @@ -4471,11 +5173,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4475 "util/configparser.c" +#line 5177 "util/configparser.c" break; - case 421: /* server_harden_glue: VAR_HARDEN_GLUE STRING_ARG */ -#line 1672 "./util/configparser.y" + case 423: +#line 1673 "./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) @@ -4484,11 +5186,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4488 "util/configparser.c" +#line 5190 "util/configparser.c" break; - case 422: /* server_harden_dnssec_stripped: VAR_HARDEN_DNSSEC_STRIPPED STRING_ARG */ -#line 1682 "./util/configparser.y" + case 424: +#line 1683 "./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) @@ -4497,11 +5199,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4501 "util/configparser.c" +#line 5203 "util/configparser.c" break; - case 423: /* server_harden_below_nxdomain: VAR_HARDEN_BELOW_NXDOMAIN STRING_ARG */ -#line 1692 "./util/configparser.y" + case 425: +#line 1693 "./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) @@ -4510,11 +5212,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4514 "util/configparser.c" +#line 5216 "util/configparser.c" break; - case 424: /* server_harden_referral_path: VAR_HARDEN_REFERRAL_PATH STRING_ARG */ -#line 1702 "./util/configparser.y" + case 426: +#line 1703 "./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) @@ -4523,11 +5225,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4527 "util/configparser.c" +#line 5229 "util/configparser.c" break; - case 425: /* server_harden_algo_downgrade: VAR_HARDEN_ALGO_DOWNGRADE STRING_ARG */ -#line 1712 "./util/configparser.y" + case 427: +#line 1713 "./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) @@ -4536,11 +5238,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4540 "util/configparser.c" +#line 5242 "util/configparser.c" break; - case 426: /* server_use_caps_for_id: VAR_USE_CAPS_FOR_ID STRING_ARG */ -#line 1722 "./util/configparser.y" + case 428: +#line 1723 "./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) @@ -4549,41 +5251,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4553 "util/configparser.c" +#line 5255 "util/configparser.c" break; - case 427: /* server_caps_whitelist: VAR_CAPS_WHITELIST STRING_ARG */ -#line 1732 "./util/configparser.y" + case 429: +#line 1733 "./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 4563 "util/configparser.c" +#line 5265 "util/configparser.c" break; - case 428: /* server_private_address: VAR_PRIVATE_ADDRESS STRING_ARG */ -#line 1739 "./util/configparser.y" + case 430: +#line 1740 "./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 4573 "util/configparser.c" +#line 5275 "util/configparser.c" break; - case 429: /* server_private_domain: VAR_PRIVATE_DOMAIN STRING_ARG */ -#line 1746 "./util/configparser.y" + case 431: +#line 1747 "./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 4583 "util/configparser.c" +#line 5285 "util/configparser.c" break; - case 430: /* server_prefetch: VAR_PREFETCH STRING_ARG */ -#line 1753 "./util/configparser.y" + case 432: +#line 1754 "./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) @@ -4591,11 +5293,11 @@ yyreduce: else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4595 "util/configparser.c" +#line 5297 "util/configparser.c" break; - case 431: /* server_prefetch_key: VAR_PREFETCH_KEY STRING_ARG */ -#line 1762 "./util/configparser.y" + case 433: +#line 1763 "./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) @@ -4603,11 +5305,11 @@ yyreduce: else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4607 "util/configparser.c" +#line 5309 "util/configparser.c" break; - case 432: /* server_deny_any: VAR_DENY_ANY STRING_ARG */ -#line 1771 "./util/configparser.y" + case 434: +#line 1772 "./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) @@ -4615,11 +5317,11 @@ yyreduce: else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4619 "util/configparser.c" +#line 5321 "util/configparser.c" break; - case 433: /* server_unwanted_reply_threshold: VAR_UNWANTED_REPLY_THRESHOLD STRING_ARG */ -#line 1780 "./util/configparser.y" + case 435: +#line 1781 "./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) @@ -4627,21 +5329,21 @@ yyreduce: else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4631 "util/configparser.c" +#line 5333 "util/configparser.c" break; - case 434: /* server_do_not_query_address: VAR_DO_NOT_QUERY_ADDRESS STRING_ARG */ -#line 1789 "./util/configparser.y" + case 436: +#line 1790 "./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 4641 "util/configparser.c" +#line 5343 "util/configparser.c" break; - case 435: /* server_do_not_query_localhost: VAR_DO_NOT_QUERY_LOCALHOST STRING_ARG */ -#line 1796 "./util/configparser.y" + case 437: +#line 1797 "./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) @@ -4650,11 +5352,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4654 "util/configparser.c" +#line 5356 "util/configparser.c" break; - case 436: /* server_access_control: VAR_ACCESS_CONTROL STRING_ARG STRING_ARG */ -#line 1806 "./util/configparser.y" + case 438: +#line 1807 "./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 && @@ -4673,21 +5375,21 @@ yyreduce: fatal_exit("out of memory adding acl"); } } -#line 4677 "util/configparser.c" +#line 5379 "util/configparser.c" break; - case 437: /* server_module_conf: VAR_MODULE_CONF STRING_ARG */ -#line 1826 "./util/configparser.y" + case 439: +#line 1827 "./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 4687 "util/configparser.c" +#line 5389 "util/configparser.c" break; - case 438: /* server_val_override_date: VAR_VAL_OVERRIDE_DATE STRING_ARG */ -#line 1833 "./util/configparser.y" + case 440: +#line 1834 "./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) { @@ -4704,11 +5406,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4708 "util/configparser.c" +#line 5410 "util/configparser.c" break; - case 439: /* server_val_sig_skew_min: VAR_VAL_SIG_SKEW_MIN STRING_ARG */ -#line 1851 "./util/configparser.y" + case 441: +#line 1852 "./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) { @@ -4720,11 +5422,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4724 "util/configparser.c" +#line 5426 "util/configparser.c" break; - case 440: /* server_val_sig_skew_max: VAR_VAL_SIG_SKEW_MAX STRING_ARG */ -#line 1864 "./util/configparser.y" + case 442: +#line 1865 "./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) { @@ -4736,11 +5438,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4740 "util/configparser.c" +#line 5442 "util/configparser.c" break; - case 441: /* server_val_max_restart: VAR_VAL_MAX_RESTART STRING_ARG */ -#line 1877 "./util/configparser.y" + case 443: +#line 1878 "./util/configparser.y" { OUTYY(("P(server_val_max_restart:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4752,11 +5454,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4756 "util/configparser.c" +#line 5458 "util/configparser.c" break; - case 442: /* server_cache_max_ttl: VAR_CACHE_MAX_TTL STRING_ARG */ -#line 1890 "./util/configparser.y" + case 444: +#line 1891 "./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) @@ -4764,11 +5466,11 @@ yyreduce: else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4768 "util/configparser.c" +#line 5470 "util/configparser.c" break; - case 443: /* server_cache_max_negative_ttl: VAR_CACHE_MAX_NEGATIVE_TTL STRING_ARG */ -#line 1899 "./util/configparser.y" + case 445: +#line 1900 "./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) @@ -4776,11 +5478,11 @@ yyreduce: else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4780 "util/configparser.c" +#line 5482 "util/configparser.c" break; - case 444: /* server_cache_min_ttl: VAR_CACHE_MIN_TTL STRING_ARG */ -#line 1908 "./util/configparser.y" + case 446: +#line 1909 "./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) @@ -4788,11 +5490,11 @@ yyreduce: else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4792 "util/configparser.c" +#line 5494 "util/configparser.c" break; - case 445: /* server_bogus_ttl: VAR_BOGUS_TTL STRING_ARG */ -#line 1917 "./util/configparser.y" + case 447: +#line 1918 "./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) @@ -4800,11 +5502,11 @@ yyreduce: else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4804 "util/configparser.c" +#line 5506 "util/configparser.c" break; - case 446: /* server_val_clean_additional: VAR_VAL_CLEAN_ADDITIONAL STRING_ARG */ -#line 1926 "./util/configparser.y" + case 448: +#line 1927 "./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) @@ -4813,11 +5515,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4817 "util/configparser.c" +#line 5519 "util/configparser.c" break; - case 447: /* server_val_permissive_mode: VAR_VAL_PERMISSIVE_MODE STRING_ARG */ -#line 1936 "./util/configparser.y" + case 449: +#line 1937 "./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) @@ -4826,11 +5528,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4830 "util/configparser.c" +#line 5532 "util/configparser.c" break; - case 448: /* server_aggressive_nsec: VAR_AGGRESSIVE_NSEC STRING_ARG */ -#line 1946 "./util/configparser.y" + case 450: +#line 1947 "./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) @@ -4840,11 +5542,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4844 "util/configparser.c" +#line 5546 "util/configparser.c" break; - case 449: /* server_ignore_cd_flag: VAR_IGNORE_CD_FLAG STRING_ARG */ -#line 1957 "./util/configparser.y" + case 451: +#line 1958 "./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) @@ -4852,11 +5554,11 @@ yyreduce: else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4856 "util/configparser.c" +#line 5558 "util/configparser.c" break; - case 450: /* server_serve_expired: VAR_SERVE_EXPIRED STRING_ARG */ -#line 1966 "./util/configparser.y" + case 452: +#line 1967 "./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) @@ -4864,11 +5566,11 @@ yyreduce: else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4868 "util/configparser.c" +#line 5570 "util/configparser.c" break; - case 451: /* server_serve_expired_ttl: VAR_SERVE_EXPIRED_TTL STRING_ARG */ -#line 1975 "./util/configparser.y" + case 453: +#line 1976 "./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) @@ -4876,11 +5578,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4880 "util/configparser.c" +#line 5582 "util/configparser.c" break; - case 452: /* server_serve_expired_ttl_reset: VAR_SERVE_EXPIRED_TTL_RESET STRING_ARG */ -#line 1984 "./util/configparser.y" + case 454: +#line 1985 "./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) @@ -4888,11 +5590,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4892 "util/configparser.c" +#line 5594 "util/configparser.c" break; - case 453: /* server_serve_expired_reply_ttl: VAR_SERVE_EXPIRED_REPLY_TTL STRING_ARG */ -#line 1993 "./util/configparser.y" + case 455: +#line 1994 "./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) @@ -4900,11 +5602,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4904 "util/configparser.c" +#line 5606 "util/configparser.c" break; - case 454: /* server_serve_expired_client_timeout: VAR_SERVE_EXPIRED_CLIENT_TIMEOUT STRING_ARG */ -#line 2002 "./util/configparser.y" + case 456: +#line 2003 "./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) @@ -4912,11 +5614,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4916 "util/configparser.c" +#line 5618 "util/configparser.c" break; - case 455: /* server_serve_original_ttl: VAR_SERVE_ORIGINAL_TTL STRING_ARG */ -#line 2011 "./util/configparser.y" + case 457: +#line 2012 "./util/configparser.y" { OUTYY(("P(server_serve_original_ttl:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4924,11 +5626,11 @@ yyreduce: else cfg_parser->cfg->serve_original_ttl = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4928 "util/configparser.c" +#line 5630 "util/configparser.c" break; - case 456: /* server_fake_dsa: VAR_FAKE_DSA STRING_ARG */ -#line 2020 "./util/configparser.y" + case 458: +#line 2021 "./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) @@ -4940,11 +5642,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4944 "util/configparser.c" +#line 5646 "util/configparser.c" break; - case 457: /* server_fake_sha1: VAR_FAKE_SHA1 STRING_ARG */ -#line 2033 "./util/configparser.y" + case 459: +#line 2034 "./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) @@ -4956,11 +5658,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4960 "util/configparser.c" +#line 5662 "util/configparser.c" break; - case 458: /* server_val_log_level: VAR_VAL_LOG_LEVEL STRING_ARG */ -#line 2046 "./util/configparser.y" + case 460: +#line 2047 "./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) @@ -4968,21 +5670,21 @@ yyreduce: else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4972 "util/configparser.c" +#line 5674 "util/configparser.c" break; - case 459: /* server_val_nsec3_keysize_iterations: VAR_VAL_NSEC3_KEYSIZE_ITERATIONS STRING_ARG */ -#line 2055 "./util/configparser.y" + case 461: +#line 2056 "./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 4982 "util/configparser.c" +#line 5684 "util/configparser.c" break; - case 460: /* server_zonemd_permissive_mode: VAR_ZONEMD_PERMISSIVE_MODE STRING_ARG */ -#line 2062 "./util/configparser.y" + case 462: +#line 2063 "./util/configparser.y" { OUTYY(("P(server_zonemd_permissive_mode:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4990,11 +5692,11 @@ yyreduce: else cfg_parser->cfg->zonemd_permissive_mode = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4994 "util/configparser.c" +#line 5696 "util/configparser.c" break; - case 461: /* server_add_holddown: VAR_ADD_HOLDDOWN STRING_ARG */ -#line 2071 "./util/configparser.y" + case 463: +#line 2072 "./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) @@ -5002,11 +5704,11 @@ yyreduce: else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5006 "util/configparser.c" +#line 5708 "util/configparser.c" break; - case 462: /* server_del_holddown: VAR_DEL_HOLDDOWN STRING_ARG */ -#line 2080 "./util/configparser.y" + case 464: +#line 2081 "./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) @@ -5014,11 +5716,11 @@ yyreduce: else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5018 "util/configparser.c" +#line 5720 "util/configparser.c" break; - case 463: /* server_keep_missing: VAR_KEEP_MISSING STRING_ARG */ -#line 2089 "./util/configparser.y" + case 465: +#line 2090 "./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) @@ -5026,11 +5728,11 @@ yyreduce: else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5030 "util/configparser.c" +#line 5732 "util/configparser.c" break; - case 464: /* server_permit_small_holddown: VAR_PERMIT_SMALL_HOLDDOWN STRING_ARG */ -#line 2098 "./util/configparser.y" + case 466: +#line 2099 "./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) @@ -5039,22 +5741,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5043 "util/configparser.c" +#line 5745 "util/configparser.c" break; - case 465: /* server_key_cache_size: VAR_KEY_CACHE_SIZE STRING_ARG */ -#line 2107 "./util/configparser.y" + case 467: +#line 2108 "./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 5054 "util/configparser.c" +#line 5756 "util/configparser.c" break; - case 466: /* server_key_cache_slabs: VAR_KEY_CACHE_SLABS STRING_ARG */ -#line 2115 "./util/configparser.y" + case 468: +#line 2116 "./util/configparser.y" { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5066,22 +5768,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5070 "util/configparser.c" +#line 5772 "util/configparser.c" break; - case 467: /* server_neg_cache_size: VAR_NEG_CACHE_SIZE STRING_ARG */ -#line 2128 "./util/configparser.y" + case 469: +#line 2129 "./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 5081 "util/configparser.c" +#line 5783 "util/configparser.c" break; - case 468: /* server_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */ -#line 2136 "./util/configparser.y" + case 470: +#line 2137 "./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 && @@ -5125,21 +5827,21 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5129 "util/configparser.c" +#line 5831 "util/configparser.c" break; - case 469: /* server_local_data: VAR_LOCAL_DATA STRING_ARG */ -#line 2181 "./util/configparser.y" + case 471: +#line 2182 "./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 5139 "util/configparser.c" +#line 5841 "util/configparser.c" break; - case 470: /* server_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ -#line 2188 "./util/configparser.y" + case 472: +#line 2189 "./util/configparser.y" { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -5153,11 +5855,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5157 "util/configparser.c" +#line 5859 "util/configparser.c" break; - case 471: /* server_minimal_responses: VAR_MINIMAL_RESPONSES STRING_ARG */ -#line 2203 "./util/configparser.y" + case 473: +#line 2204 "./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) @@ -5166,11 +5868,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5170 "util/configparser.c" +#line 5872 "util/configparser.c" break; - case 472: /* server_rrset_roundrobin: VAR_RRSET_ROUNDROBIN STRING_ARG */ -#line 2213 "./util/configparser.y" + case 474: +#line 2214 "./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) @@ -5179,41 +5881,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5183 "util/configparser.c" +#line 5885 "util/configparser.c" break; - case 473: /* server_unknown_server_time_limit: VAR_UNKNOWN_SERVER_TIME_LIMIT STRING_ARG */ -#line 2223 "./util/configparser.y" + case 475: +#line 2224 "./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 5193 "util/configparser.c" +#line 5895 "util/configparser.c" break; - case 474: /* server_max_udp_size: VAR_MAX_UDP_SIZE STRING_ARG */ -#line 2230 "./util/configparser.y" + case 476: +#line 2231 "./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 5203 "util/configparser.c" +#line 5905 "util/configparser.c" break; - case 475: /* server_dns64_prefix: VAR_DNS64_PREFIX STRING_ARG */ -#line 2237 "./util/configparser.y" + case 477: +#line 2238 "./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 5213 "util/configparser.c" +#line 5915 "util/configparser.c" break; - case 476: /* server_dns64_synthall: VAR_DNS64_SYNTHALL STRING_ARG */ -#line 2244 "./util/configparser.y" + case 478: +#line 2245 "./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) @@ -5221,22 +5923,22 @@ yyreduce: else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5225 "util/configparser.c" +#line 5927 "util/configparser.c" break; - case 477: /* server_dns64_ignore_aaaa: VAR_DNS64_IGNORE_AAAA STRING_ARG */ -#line 2253 "./util/configparser.y" + case 479: +#line 2254 "./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 5236 "util/configparser.c" +#line 5938 "util/configparser.c" break; - case 478: /* server_define_tag: VAR_DEFINE_TAG STRING_ARG */ -#line 2261 "./util/configparser.y" + case 480: +#line 2262 "./util/configparser.y" { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); @@ -5249,11 +5951,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5253 "util/configparser.c" +#line 5955 "util/configparser.c" break; - case 479: /* server_local_zone_tag: VAR_LOCAL_ZONE_TAG STRING_ARG STRING_ARG */ -#line 2275 "./util/configparser.y" + case 481: +#line 2276 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5273,11 +5975,11 @@ yyreduce: } } } -#line 5277 "util/configparser.c" +#line 5979 "util/configparser.c" break; - case 480: /* server_access_control_tag: VAR_ACCESS_CONTROL_TAG STRING_ARG STRING_ARG */ -#line 2296 "./util/configparser.y" + case 482: +#line 2297 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5297,11 +5999,11 @@ yyreduce: } } } -#line 5301 "util/configparser.c" +#line 6003 "util/configparser.c" break; - case 481: /* server_access_control_tag_action: VAR_ACCESS_CONTROL_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG */ -#line 2317 "./util/configparser.y" + case 483: +#line 2318 "./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, @@ -5312,11 +6014,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5316 "util/configparser.c" +#line 6018 "util/configparser.c" break; - case 482: /* server_access_control_tag_data: VAR_ACCESS_CONTROL_TAG_DATA STRING_ARG STRING_ARG STRING_ARG */ -#line 2329 "./util/configparser.y" + case 484: +#line 2330 "./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, @@ -5327,11 +6029,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5331 "util/configparser.c" +#line 6033 "util/configparser.c" break; - case 483: /* server_local_zone_override: VAR_LOCAL_ZONE_OVERRIDE STRING_ARG STRING_ARG STRING_ARG */ -#line 2341 "./util/configparser.y" + case 485: +#line 2342 "./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, @@ -5342,11 +6044,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5346 "util/configparser.c" +#line 6048 "util/configparser.c" break; - case 484: /* server_access_control_view: VAR_ACCESS_CONTROL_VIEW STRING_ARG STRING_ARG */ -#line 2353 "./util/configparser.y" + case 486: +#line 2354 "./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, @@ -5354,11 +6056,11 @@ yyreduce: yyerror("out of memory"); } } -#line 5358 "util/configparser.c" +#line 6060 "util/configparser.c" break; - case 485: /* server_response_ip_tag: VAR_RESPONSE_IP_TAG STRING_ARG STRING_ARG */ -#line 2362 "./util/configparser.y" + case 487: +#line 2363 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5378,11 +6080,11 @@ yyreduce: } } } -#line 5382 "util/configparser.c" +#line 6084 "util/configparser.c" break; - case 486: /* server_ip_ratelimit: VAR_IP_RATELIMIT STRING_ARG */ -#line 2383 "./util/configparser.y" + case 488: +#line 2384 "./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) @@ -5390,11 +6092,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5394 "util/configparser.c" +#line 6096 "util/configparser.c" break; - case 487: /* server_ratelimit: VAR_RATELIMIT STRING_ARG */ -#line 2393 "./util/configparser.y" + case 489: +#line 2394 "./util/configparser.y" { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5402,33 +6104,33 @@ yyreduce: else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5406 "util/configparser.c" +#line 6108 "util/configparser.c" break; - case 488: /* server_ip_ratelimit_size: VAR_IP_RATELIMIT_SIZE STRING_ARG */ -#line 2402 "./util/configparser.y" + case 490: +#line 2403 "./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 5417 "util/configparser.c" +#line 6119 "util/configparser.c" break; - case 489: /* server_ratelimit_size: VAR_RATELIMIT_SIZE STRING_ARG */ -#line 2410 "./util/configparser.y" + case 491: +#line 2411 "./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 5428 "util/configparser.c" +#line 6130 "util/configparser.c" break; - case 490: /* server_ip_ratelimit_slabs: VAR_IP_RATELIMIT_SLABS STRING_ARG */ -#line 2418 "./util/configparser.y" + case 492: +#line 2419 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5440,11 +6142,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5444 "util/configparser.c" +#line 6146 "util/configparser.c" break; - case 491: /* server_ratelimit_slabs: VAR_RATELIMIT_SLABS STRING_ARG */ -#line 2431 "./util/configparser.y" + case 493: +#line 2432 "./util/configparser.y" { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5456,11 +6158,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5460 "util/configparser.c" +#line 6162 "util/configparser.c" break; - case 492: /* server_ratelimit_for_domain: VAR_RATELIMIT_FOR_DOMAIN STRING_ARG STRING_ARG */ -#line 2444 "./util/configparser.y" + case 494: +#line 2445 "./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) { @@ -5474,11 +6176,11 @@ yyreduce: "ratelimit-for-domain"); } } -#line 5478 "util/configparser.c" +#line 6180 "util/configparser.c" break; - case 493: /* server_ratelimit_below_domain: VAR_RATELIMIT_BELOW_DOMAIN STRING_ARG STRING_ARG */ -#line 2459 "./util/configparser.y" + case 495: +#line 2460 "./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) { @@ -5492,11 +6194,11 @@ yyreduce: "ratelimit-below-domain"); } } -#line 5496 "util/configparser.c" +#line 6198 "util/configparser.c" break; - case 494: /* server_ip_ratelimit_factor: VAR_IP_RATELIMIT_FACTOR STRING_ARG */ -#line 2474 "./util/configparser.y" + case 496: +#line 2475 "./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) @@ -5504,11 +6206,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5508 "util/configparser.c" +#line 6210 "util/configparser.c" break; - case 495: /* server_ratelimit_factor: VAR_RATELIMIT_FACTOR STRING_ARG */ -#line 2483 "./util/configparser.y" + case 497: +#line 2484 "./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) @@ -5516,20 +6218,20 @@ yyreduce: else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5520 "util/configparser.c" +#line 6222 "util/configparser.c" break; - case 496: /* server_low_rtt: VAR_LOW_RTT STRING_ARG */ -#line 2492 "./util/configparser.y" + case 498: +#line 2493 "./util/configparser.y" { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 5529 "util/configparser.c" +#line 6231 "util/configparser.c" break; - case 497: /* server_fast_server_num: VAR_FAST_SERVER_NUM STRING_ARG */ -#line 2498 "./util/configparser.y" + case 499: +#line 2499 "./util/configparser.y" { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) <= 0) @@ -5537,11 +6239,11 @@ yyreduce: else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5541 "util/configparser.c" +#line 6243 "util/configparser.c" break; - case 498: /* server_fast_server_permil: VAR_FAST_SERVER_PERMIL STRING_ARG */ -#line 2507 "./util/configparser.y" + case 500: +#line 2508 "./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) @@ -5549,11 +6251,11 @@ yyreduce: else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5553 "util/configparser.c" +#line 6255 "util/configparser.c" break; - case 499: /* server_qname_minimisation: VAR_QNAME_MINIMISATION STRING_ARG */ -#line 2516 "./util/configparser.y" + case 501: +#line 2517 "./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) @@ -5562,11 +6264,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5566 "util/configparser.c" +#line 6268 "util/configparser.c" break; - case 500: /* server_qname_minimisation_strict: VAR_QNAME_MINIMISATION_STRICT STRING_ARG */ -#line 2526 "./util/configparser.y" + case 502: +#line 2527 "./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) @@ -5575,11 +6277,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5579 "util/configparser.c" +#line 6281 "util/configparser.c" break; - case 501: /* server_pad_responses: VAR_PAD_RESPONSES STRING_ARG */ -#line 2536 "./util/configparser.y" + case 503: +#line 2537 "./util/configparser.y" { OUTYY(("P(server_pad_responses:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5588,11 +6290,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5592 "util/configparser.c" +#line 6294 "util/configparser.c" break; - case 502: /* server_pad_responses_block_size: VAR_PAD_RESPONSES_BLOCK_SIZE STRING_ARG */ -#line 2546 "./util/configparser.y" + case 504: +#line 2547 "./util/configparser.y" { OUTYY(("P(server_pad_responses_block_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5600,11 +6302,11 @@ yyreduce: else cfg_parser->cfg->pad_responses_block_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5604 "util/configparser.c" +#line 6306 "util/configparser.c" break; - case 503: /* server_pad_queries: VAR_PAD_QUERIES STRING_ARG */ -#line 2555 "./util/configparser.y" + case 505: +#line 2556 "./util/configparser.y" { OUTYY(("P(server_pad_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5613,11 +6315,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5617 "util/configparser.c" +#line 6319 "util/configparser.c" break; - case 504: /* server_pad_queries_block_size: VAR_PAD_QUERIES_BLOCK_SIZE STRING_ARG */ -#line 2565 "./util/configparser.y" + case 506: +#line 2566 "./util/configparser.y" { OUTYY(("P(server_pad_queries_block_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5625,11 +6327,11 @@ yyreduce: else cfg_parser->cfg->pad_queries_block_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5629 "util/configparser.c" +#line 6331 "util/configparser.c" break; - case 505: /* server_ipsecmod_enabled: VAR_IPSECMOD_ENABLED STRING_ARG */ -#line 2574 "./util/configparser.y" + case 507: +#line 2575 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); @@ -5641,11 +6343,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5645 "util/configparser.c" +#line 6347 "util/configparser.c" break; - case 506: /* server_ipsecmod_ignore_bogus: VAR_IPSECMOD_IGNORE_BOGUS STRING_ARG */ -#line 2587 "./util/configparser.y" + case 508: +#line 2588 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); @@ -5657,11 +6359,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5661 "util/configparser.c" +#line 6363 "util/configparser.c" break; - case 507: /* server_ipsecmod_hook: VAR_IPSECMOD_HOOK STRING_ARG */ -#line 2600 "./util/configparser.y" + case 509: +#line 2601 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); @@ -5672,11 +6374,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5676 "util/configparser.c" +#line 6378 "util/configparser.c" break; - case 508: /* server_ipsecmod_max_ttl: VAR_IPSECMOD_MAX_TTL STRING_ARG */ -#line 2612 "./util/configparser.y" + case 510: +#line 2613 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); @@ -5689,11 +6391,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5693 "util/configparser.c" +#line 6395 "util/configparser.c" break; - case 509: /* server_ipsecmod_whitelist: VAR_IPSECMOD_WHITELIST STRING_ARG */ -#line 2626 "./util/configparser.y" + case 511: +#line 2627 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); @@ -5704,11 +6406,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5708 "util/configparser.c" +#line 6410 "util/configparser.c" break; - case 510: /* server_ipsecmod_strict: VAR_IPSECMOD_STRICT STRING_ARG */ -#line 2638 "./util/configparser.y" + case 512: +#line 2639 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); @@ -5721,11 +6423,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5725 "util/configparser.c" +#line 6427 "util/configparser.c" break; - case 511: /* server_edns_client_string: VAR_EDNS_CLIENT_STRING STRING_ARG STRING_ARG */ -#line 2652 "./util/configparser.y" + case 513: +#line 2653 "./util/configparser.y" { OUTYY(("P(server_edns_client_string:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert( @@ -5733,11 +6435,11 @@ yyreduce: fatal_exit("out of memory adding " "edns-client-string"); } -#line 5737 "util/configparser.c" +#line 6439 "util/configparser.c" break; - case 512: /* server_edns_client_string_opcode: VAR_EDNS_CLIENT_STRING_OPCODE STRING_ARG */ -#line 2661 "./util/configparser.y" + case 514: +#line 2662 "./util/configparser.y" { OUTYY(("P(edns_client_string_opcode:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5748,11 +6450,11 @@ yyreduce: free((yyvsp[0].str)); } -#line 5752 "util/configparser.c" +#line 6454 "util/configparser.c" break; - case 513: /* stub_name: VAR_NAME STRING_ARG */ -#line 2673 "./util/configparser.y" + case 515: +#line 2674 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) @@ -5761,31 +6463,31 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 5765 "util/configparser.c" +#line 6467 "util/configparser.c" break; - case 514: /* stub_host: VAR_STUB_HOST STRING_ARG */ -#line 2683 "./util/configparser.y" + case 516: +#line 2684 "./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 5775 "util/configparser.c" +#line 6477 "util/configparser.c" break; - case 515: /* stub_addr: VAR_STUB_ADDR STRING_ARG */ -#line 2690 "./util/configparser.y" + case 517: +#line 2691 "./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 5785 "util/configparser.c" +#line 6487 "util/configparser.c" break; - case 516: /* stub_first: VAR_STUB_FIRST STRING_ARG */ -#line 2697 "./util/configparser.y" + case 518: +#line 2698 "./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) @@ -5793,11 +6495,11 @@ yyreduce: else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5797 "util/configparser.c" +#line 6499 "util/configparser.c" break; - case 517: /* stub_no_cache: VAR_STUB_NO_CACHE STRING_ARG */ -#line 2706 "./util/configparser.y" + case 519: +#line 2707 "./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) @@ -5805,11 +6507,11 @@ yyreduce: else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5809 "util/configparser.c" +#line 6511 "util/configparser.c" break; - case 518: /* stub_ssl_upstream: VAR_STUB_SSL_UPSTREAM STRING_ARG */ -#line 2715 "./util/configparser.y" + case 520: +#line 2716 "./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) @@ -5818,11 +6520,24 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5822 "util/configparser.c" +#line 6524 "util/configparser.c" break; - case 519: /* stub_prime: VAR_STUB_PRIME STRING_ARG */ -#line 2725 "./util/configparser.y" + case 521: +#line 2726 "./util/configparser.y" + { + OUTYY(("P(stub-tcp-upstream:%s)\n", (yyvsp[0].str))); + if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->stubs->tcp_upstream = + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); + } +#line 6537 "util/configparser.c" + break; + + case 522: +#line 2736 "./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) @@ -5831,11 +6546,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5835 "util/configparser.c" +#line 6550 "util/configparser.c" break; - case 520: /* forward_name: VAR_NAME STRING_ARG */ -#line 2735 "./util/configparser.y" + case 523: +#line 2746 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) @@ -5844,31 +6559,31 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 5848 "util/configparser.c" +#line 6563 "util/configparser.c" break; - case 521: /* forward_host: VAR_FORWARD_HOST STRING_ARG */ -#line 2745 "./util/configparser.y" + case 524: +#line 2756 "./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 5858 "util/configparser.c" +#line 6573 "util/configparser.c" break; - case 522: /* forward_addr: VAR_FORWARD_ADDR STRING_ARG */ -#line 2752 "./util/configparser.y" + case 525: +#line 2763 "./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 5868 "util/configparser.c" +#line 6583 "util/configparser.c" break; - case 523: /* forward_first: VAR_FORWARD_FIRST STRING_ARG */ -#line 2759 "./util/configparser.y" + case 526: +#line 2770 "./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) @@ -5876,11 +6591,11 @@ yyreduce: else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5880 "util/configparser.c" +#line 6595 "util/configparser.c" break; - case 524: /* forward_no_cache: VAR_FORWARD_NO_CACHE STRING_ARG */ -#line 2768 "./util/configparser.y" + case 527: +#line 2779 "./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) @@ -5888,11 +6603,11 @@ yyreduce: else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5892 "util/configparser.c" +#line 6607 "util/configparser.c" break; - case 525: /* forward_ssl_upstream: VAR_FORWARD_SSL_UPSTREAM STRING_ARG */ -#line 2777 "./util/configparser.y" + case 528: +#line 2788 "./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) @@ -5901,11 +6616,24 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5905 "util/configparser.c" +#line 6620 "util/configparser.c" break; - case 526: /* auth_name: VAR_NAME STRING_ARG */ -#line 2787 "./util/configparser.y" + case 529: +#line 2798 "./util/configparser.y" + { + OUTYY(("P(forward-tcp-upstream:%s)\n", (yyvsp[0].str))); + if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->forwards->tcp_upstream = + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); + } +#line 6633 "util/configparser.c" + break; + + case 530: +#line 2808 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) @@ -5914,52 +6642,52 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 5918 "util/configparser.c" +#line 6646 "util/configparser.c" break; - case 527: /* auth_zonefile: VAR_ZONEFILE STRING_ARG */ -#line 2797 "./util/configparser.y" + case 531: +#line 2818 "./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 5928 "util/configparser.c" +#line 6656 "util/configparser.c" break; - case 528: /* auth_master: VAR_MASTER STRING_ARG */ -#line 2804 "./util/configparser.y" + case 532: +#line 2825 "./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 5938 "util/configparser.c" +#line 6666 "util/configparser.c" break; - case 529: /* auth_url: VAR_URL STRING_ARG */ -#line 2811 "./util/configparser.y" + case 533: +#line 2832 "./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 5948 "util/configparser.c" +#line 6676 "util/configparser.c" break; - case 530: /* auth_allow_notify: VAR_ALLOW_NOTIFY STRING_ARG */ -#line 2818 "./util/configparser.y" + case 534: +#line 2839 "./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 5959 "util/configparser.c" +#line 6687 "util/configparser.c" break; - case 531: /* auth_zonemd_check: VAR_ZONEMD_CHECK STRING_ARG */ -#line 2826 "./util/configparser.y" + case 535: +#line 2847 "./util/configparser.y" { OUTYY(("P(zonemd-check:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5968,11 +6696,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5972 "util/configparser.c" +#line 6700 "util/configparser.c" break; - case 532: /* auth_zonemd_reject_absence: VAR_ZONEMD_REJECT_ABSENCE STRING_ARG */ -#line 2836 "./util/configparser.y" + case 536: +#line 2857 "./util/configparser.y" { OUTYY(("P(zonemd-reject-absence:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5981,11 +6709,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5985 "util/configparser.c" +#line 6713 "util/configparser.c" break; - case 533: /* auth_for_downstream: VAR_FOR_DOWNSTREAM STRING_ARG */ -#line 2846 "./util/configparser.y" + case 537: +#line 2867 "./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) @@ -5994,11 +6722,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5998 "util/configparser.c" +#line 6726 "util/configparser.c" break; - case 534: /* auth_for_upstream: VAR_FOR_UPSTREAM STRING_ARG */ -#line 2856 "./util/configparser.y" + case 538: +#line 2877 "./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) @@ -6007,11 +6735,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6011 "util/configparser.c" +#line 6739 "util/configparser.c" break; - case 535: /* auth_fallback_enabled: VAR_FALLBACK_ENABLED STRING_ARG */ -#line 2866 "./util/configparser.y" + case 539: +#line 2887 "./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) @@ -6020,11 +6748,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6024 "util/configparser.c" +#line 6752 "util/configparser.c" break; - case 536: /* view_name: VAR_NAME STRING_ARG */ -#line 2876 "./util/configparser.y" + case 540: +#line 2897 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) @@ -6033,11 +6761,11 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 6037 "util/configparser.c" +#line 6765 "util/configparser.c" break; - case 537: /* view_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */ -#line 2886 "./util/configparser.y" + case 541: +#line 2907 "./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 && @@ -6082,11 +6810,11 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 6086 "util/configparser.c" +#line 6814 "util/configparser.c" break; - case 538: /* view_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ -#line 2932 "./util/configparser.y" + case 542: +#line 2953 "./util/configparser.y" { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -6095,33 +6823,33 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 6099 "util/configparser.c" +#line 6827 "util/configparser.c" break; - case 539: /* view_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ -#line 2942 "./util/configparser.y" + case 543: +#line 2963 "./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 6110 "util/configparser.c" +#line 6838 "util/configparser.c" break; - case 540: /* view_local_data: VAR_LOCAL_DATA STRING_ARG */ -#line 2950 "./util/configparser.y" + case 544: +#line 2971 "./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 6121 "util/configparser.c" +#line 6849 "util/configparser.c" break; - case 541: /* view_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ -#line 2958 "./util/configparser.y" + case 545: +#line 2979 "./util/configparser.y" { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -6135,11 +6863,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 6139 "util/configparser.c" +#line 6867 "util/configparser.c" break; - case 542: /* view_first: VAR_VIEW_FIRST STRING_ARG */ -#line 2973 "./util/configparser.y" + case 546: +#line 2994 "./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) @@ -6147,19 +6875,19 @@ yyreduce: else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6151 "util/configparser.c" +#line 6879 "util/configparser.c" break; - case 543: /* rcstart: VAR_REMOTE_CONTROL */ -#line 2982 "./util/configparser.y" + case 547: +#line 3003 "./util/configparser.y" { OUTYY(("\nP(remote-control:)\n")); } -#line 6159 "util/configparser.c" +#line 6887 "util/configparser.c" break; - case 554: /* rc_control_enable: VAR_CONTROL_ENABLE STRING_ARG */ -#line 2993 "./util/configparser.y" + case 558: +#line 3014 "./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) @@ -6168,11 +6896,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6172 "util/configparser.c" +#line 6900 "util/configparser.c" break; - case 555: /* rc_control_port: VAR_CONTROL_PORT STRING_ARG */ -#line 3003 "./util/configparser.y" + case 559: +#line 3024 "./util/configparser.y" { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6180,79 +6908,79 @@ yyreduce: else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6184 "util/configparser.c" +#line 6912 "util/configparser.c" break; - case 556: /* rc_control_interface: VAR_CONTROL_INTERFACE STRING_ARG */ -#line 3012 "./util/configparser.y" + case 560: +#line 3033 "./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 6194 "util/configparser.c" +#line 6922 "util/configparser.c" break; - case 557: /* rc_control_use_cert: VAR_CONTROL_USE_CERT STRING_ARG */ -#line 3019 "./util/configparser.y" + case 561: +#line 3040 "./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 6204 "util/configparser.c" +#line 6932 "util/configparser.c" break; - case 558: /* rc_server_key_file: VAR_SERVER_KEY_FILE STRING_ARG */ -#line 3026 "./util/configparser.y" + case 562: +#line 3047 "./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 6214 "util/configparser.c" +#line 6942 "util/configparser.c" break; - case 559: /* rc_server_cert_file: VAR_SERVER_CERT_FILE STRING_ARG */ -#line 3033 "./util/configparser.y" + case 563: +#line 3054 "./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 6224 "util/configparser.c" +#line 6952 "util/configparser.c" break; - case 560: /* rc_control_key_file: VAR_CONTROL_KEY_FILE STRING_ARG */ -#line 3040 "./util/configparser.y" + case 564: +#line 3061 "./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 6234 "util/configparser.c" +#line 6962 "util/configparser.c" break; - case 561: /* rc_control_cert_file: VAR_CONTROL_CERT_FILE STRING_ARG */ -#line 3047 "./util/configparser.y" + case 565: +#line 3068 "./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 6244 "util/configparser.c" +#line 6972 "util/configparser.c" break; - case 562: /* dtstart: VAR_DNSTAP */ -#line 3054 "./util/configparser.y" + case 566: +#line 3075 "./util/configparser.y" { OUTYY(("\nP(dnstap:)\n")); } -#line 6252 "util/configparser.c" +#line 6980 "util/configparser.c" break; - case 584: /* dt_dnstap_enable: VAR_DNSTAP_ENABLE STRING_ARG */ -#line 3074 "./util/configparser.y" + case 588: +#line 3095 "./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) @@ -6260,11 +6988,11 @@ yyreduce: else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6264 "util/configparser.c" +#line 6992 "util/configparser.c" break; - case 585: /* dt_dnstap_bidirectional: VAR_DNSTAP_BIDIRECTIONAL STRING_ARG */ -#line 3083 "./util/configparser.y" + case 589: +#line 3104 "./util/configparser.y" { OUTYY(("P(dt_dnstap_bidirectional:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6273,31 +7001,31 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6277 "util/configparser.c" +#line 7005 "util/configparser.c" break; - case 586: /* dt_dnstap_socket_path: VAR_DNSTAP_SOCKET_PATH STRING_ARG */ -#line 3093 "./util/configparser.y" + case 590: +#line 3114 "./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 6287 "util/configparser.c" +#line 7015 "util/configparser.c" break; - case 587: /* dt_dnstap_ip: VAR_DNSTAP_IP STRING_ARG */ -#line 3100 "./util/configparser.y" + case 591: +#line 3121 "./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 6297 "util/configparser.c" +#line 7025 "util/configparser.c" break; - case 588: /* dt_dnstap_tls: VAR_DNSTAP_TLS STRING_ARG */ -#line 3107 "./util/configparser.y" + case 592: +#line 3128 "./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) @@ -6305,51 +7033,51 @@ yyreduce: else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6309 "util/configparser.c" +#line 7037 "util/configparser.c" break; - case 589: /* dt_dnstap_tls_server_name: VAR_DNSTAP_TLS_SERVER_NAME STRING_ARG */ -#line 3116 "./util/configparser.y" + case 593: +#line 3137 "./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 6319 "util/configparser.c" +#line 7047 "util/configparser.c" break; - case 590: /* dt_dnstap_tls_cert_bundle: VAR_DNSTAP_TLS_CERT_BUNDLE STRING_ARG */ -#line 3123 "./util/configparser.y" + case 594: +#line 3144 "./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 6329 "util/configparser.c" +#line 7057 "util/configparser.c" break; - case 591: /* dt_dnstap_tls_client_key_file: VAR_DNSTAP_TLS_CLIENT_KEY_FILE STRING_ARG */ -#line 3130 "./util/configparser.y" + case 595: +#line 3151 "./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 6339 "util/configparser.c" +#line 7067 "util/configparser.c" break; - case 592: /* dt_dnstap_tls_client_cert_file: VAR_DNSTAP_TLS_CLIENT_CERT_FILE STRING_ARG */ -#line 3137 "./util/configparser.y" + case 596: +#line 3158 "./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 6349 "util/configparser.c" +#line 7077 "util/configparser.c" break; - case 593: /* dt_dnstap_send_identity: VAR_DNSTAP_SEND_IDENTITY STRING_ARG */ -#line 3144 "./util/configparser.y" + case 597: +#line 3165 "./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) @@ -6357,11 +7085,11 @@ yyreduce: else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6361 "util/configparser.c" +#line 7089 "util/configparser.c" break; - case 594: /* dt_dnstap_send_version: VAR_DNSTAP_SEND_VERSION STRING_ARG */ -#line 3153 "./util/configparser.y" + case 598: +#line 3174 "./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) @@ -6369,31 +7097,31 @@ yyreduce: else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6373 "util/configparser.c" +#line 7101 "util/configparser.c" break; - case 595: /* dt_dnstap_identity: VAR_DNSTAP_IDENTITY STRING_ARG */ -#line 3162 "./util/configparser.y" + case 599: +#line 3183 "./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 6383 "util/configparser.c" +#line 7111 "util/configparser.c" break; - case 596: /* dt_dnstap_version: VAR_DNSTAP_VERSION STRING_ARG */ -#line 3169 "./util/configparser.y" + case 600: +#line 3190 "./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 6393 "util/configparser.c" +#line 7121 "util/configparser.c" break; - case 597: /* dt_dnstap_log_resolver_query_messages: VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES STRING_ARG */ -#line 3176 "./util/configparser.y" + case 601: +#line 3197 "./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) @@ -6402,11 +7130,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6406 "util/configparser.c" +#line 7134 "util/configparser.c" break; - case 598: /* dt_dnstap_log_resolver_response_messages: VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES STRING_ARG */ -#line 3186 "./util/configparser.y" + case 602: +#line 3207 "./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) @@ -6415,11 +7143,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6419 "util/configparser.c" +#line 7147 "util/configparser.c" break; - case 599: /* dt_dnstap_log_client_query_messages: VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES STRING_ARG */ -#line 3196 "./util/configparser.y" + case 603: +#line 3217 "./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) @@ -6428,11 +7156,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6432 "util/configparser.c" +#line 7160 "util/configparser.c" break; - case 600: /* dt_dnstap_log_client_response_messages: VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES STRING_ARG */ -#line 3206 "./util/configparser.y" + case 604: +#line 3227 "./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) @@ -6441,11 +7169,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6445 "util/configparser.c" +#line 7173 "util/configparser.c" break; - case 601: /* dt_dnstap_log_forwarder_query_messages: VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES STRING_ARG */ -#line 3216 "./util/configparser.y" + case 605: +#line 3237 "./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) @@ -6454,11 +7182,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6458 "util/configparser.c" +#line 7186 "util/configparser.c" break; - case 602: /* dt_dnstap_log_forwarder_response_messages: VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES STRING_ARG */ -#line 3226 "./util/configparser.y" + case 606: +#line 3247 "./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) @@ -6467,47 +7195,47 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6471 "util/configparser.c" +#line 7199 "util/configparser.c" break; - case 603: /* pythonstart: VAR_PYTHON */ -#line 3236 "./util/configparser.y" + case 607: +#line 3257 "./util/configparser.y" { OUTYY(("\nP(python:)\n")); } -#line 6479 "util/configparser.c" +#line 7207 "util/configparser.c" break; - case 607: /* py_script: VAR_PYTHON_SCRIPT STRING_ARG */ -#line 3245 "./util/configparser.y" + case 611: +#line 3266 "./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 6489 "util/configparser.c" +#line 7217 "util/configparser.c" break; - case 608: /* dynlibstart: VAR_DYNLIB */ -#line 3251 "./util/configparser.y" + case 612: +#line 3272 "./util/configparser.y" { OUTYY(("\nP(dynlib:)\n")); } -#line 6497 "util/configparser.c" +#line 7225 "util/configparser.c" break; - case 612: /* dl_file: VAR_DYNLIB_FILE STRING_ARG */ -#line 3260 "./util/configparser.y" + case 616: +#line 3281 "./util/configparser.y" { OUTYY(("P(dynlib-file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6507 "util/configparser.c" +#line 7235 "util/configparser.c" break; - case 613: /* server_disable_dnssec_lame_check: VAR_DISABLE_DNSSEC_LAME_CHECK STRING_ARG */ -#line 3266 "./util/configparser.y" + case 617: +#line 3287 "./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) @@ -6516,21 +7244,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6520 "util/configparser.c" +#line 7248 "util/configparser.c" break; - case 614: /* server_log_identity: VAR_LOG_IDENTITY STRING_ARG */ -#line 3276 "./util/configparser.y" + case 618: +#line 3297 "./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 6530 "util/configparser.c" +#line 7258 "util/configparser.c" break; - case 615: /* server_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ -#line 3283 "./util/configparser.y" + case 619: +#line 3304 "./util/configparser.y" { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -6538,30 +7266,30 @@ yyreduce: (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 6542 "util/configparser.c" +#line 7270 "util/configparser.c" break; - case 616: /* server_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ -#line 3292 "./util/configparser.y" + case 620: +#line 3313 "./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 6553 "util/configparser.c" +#line 7281 "util/configparser.c" break; - case 617: /* dnscstart: VAR_DNSCRYPT */ -#line 3300 "./util/configparser.y" + case 621: +#line 3321 "./util/configparser.y" { OUTYY(("\nP(dnscrypt:)\n")); } -#line 6561 "util/configparser.c" +#line 7289 "util/configparser.c" break; - case 630: /* dnsc_dnscrypt_enable: VAR_DNSCRYPT_ENABLE STRING_ARG */ -#line 3316 "./util/configparser.y" + case 634: +#line 3337 "./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) @@ -6569,11 +7297,11 @@ yyreduce: else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6573 "util/configparser.c" +#line 7301 "util/configparser.c" break; - case 631: /* dnsc_dnscrypt_port: VAR_DNSCRYPT_PORT STRING_ARG */ -#line 3326 "./util/configparser.y" + case 635: +#line 3347 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6581,21 +7309,21 @@ yyreduce: else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6585 "util/configparser.c" +#line 7313 "util/configparser.c" break; - case 632: /* dnsc_dnscrypt_provider: VAR_DNSCRYPT_PROVIDER STRING_ARG */ -#line 3335 "./util/configparser.y" + case 636: +#line 3356 "./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 6595 "util/configparser.c" +#line 7323 "util/configparser.c" break; - case 633: /* dnsc_dnscrypt_provider_cert: VAR_DNSCRYPT_PROVIDER_CERT STRING_ARG */ -#line 3342 "./util/configparser.y" + case 637: +#line 3363 "./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))) @@ -6603,21 +7331,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 6607 "util/configparser.c" +#line 7335 "util/configparser.c" break; - case 634: /* dnsc_dnscrypt_provider_cert_rotated: VAR_DNSCRYPT_PROVIDER_CERT_ROTATED STRING_ARG */ -#line 3351 "./util/configparser.y" + case 638: +#line 3372 "./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 6617 "util/configparser.c" +#line 7345 "util/configparser.c" break; - case 635: /* dnsc_dnscrypt_secret_key: VAR_DNSCRYPT_SECRET_KEY STRING_ARG */ -#line 3358 "./util/configparser.y" + case 639: +#line 3379 "./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))) @@ -6625,22 +7353,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 6629 "util/configparser.c" +#line 7357 "util/configparser.c" break; - case 636: /* dnsc_dnscrypt_shared_secret_cache_size: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE STRING_ARG */ -#line 3367 "./util/configparser.y" + case 640: +#line 3388 "./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 6640 "util/configparser.c" +#line 7368 "util/configparser.c" break; - case 637: /* dnsc_dnscrypt_shared_secret_cache_slabs: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS STRING_ARG */ -#line 3375 "./util/configparser.y" + case 641: +#line 3396 "./util/configparser.y" { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6652,22 +7380,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6656 "util/configparser.c" +#line 7384 "util/configparser.c" break; - case 638: /* dnsc_dnscrypt_nonce_cache_size: VAR_DNSCRYPT_NONCE_CACHE_SIZE STRING_ARG */ -#line 3388 "./util/configparser.y" + case 642: +#line 3409 "./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 6667 "util/configparser.c" +#line 7395 "util/configparser.c" break; - case 639: /* dnsc_dnscrypt_nonce_cache_slabs: VAR_DNSCRYPT_NONCE_CACHE_SLABS STRING_ARG */ -#line 3396 "./util/configparser.y" + case 643: +#line 3417 "./util/configparser.y" { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6679,19 +7407,19 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6683 "util/configparser.c" +#line 7411 "util/configparser.c" break; - case 640: /* cachedbstart: VAR_CACHEDB */ -#line 3409 "./util/configparser.y" + case 644: +#line 3430 "./util/configparser.y" { OUTYY(("\nP(cachedb:)\n")); } -#line 6691 "util/configparser.c" +#line 7419 "util/configparser.c" break; - case 649: /* cachedb_backend_name: VAR_CACHEDB_BACKEND STRING_ARG */ -#line 3420 "./util/configparser.y" + case 653: +#line 3441 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); @@ -6702,11 +7430,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6706 "util/configparser.c" +#line 7434 "util/configparser.c" break; - case 650: /* cachedb_secret_seed: VAR_CACHEDB_SECRETSEED STRING_ARG */ -#line 3432 "./util/configparser.y" + case 654: +#line 3453 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); @@ -6717,11 +7445,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6721 "util/configparser.c" +#line 7449 "util/configparser.c" break; - case 651: /* redis_server_host: VAR_CACHEDB_REDISHOST STRING_ARG */ -#line 3444 "./util/configparser.y" + case 655: +#line 3465 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); @@ -6732,11 +7460,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6736 "util/configparser.c" +#line 7464 "util/configparser.c" break; - case 652: /* redis_server_port: VAR_CACHEDB_REDISPORT STRING_ARG */ -#line 3456 "./util/configparser.y" + case 656: +#line 3477 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; @@ -6750,11 +7478,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6754 "util/configparser.c" +#line 7482 "util/configparser.c" break; - case 653: /* redis_timeout: VAR_CACHEDB_REDISTIMEOUT STRING_ARG */ -#line 3471 "./util/configparser.y" + case 657: +#line 3492 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); @@ -6766,11 +7494,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6770 "util/configparser.c" +#line 7498 "util/configparser.c" break; - case 654: /* redis_expire_records: VAR_CACHEDB_REDISEXPIRERECORDS STRING_ARG */ -#line 3484 "./util/configparser.y" + case 658: +#line 3505 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str))); @@ -6782,11 +7510,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6786 "util/configparser.c" +#line 7514 "util/configparser.c" break; - case 655: /* server_tcp_connection_limit: VAR_TCP_CONNECTION_LIMIT STRING_ARG STRING_ARG */ -#line 3497 "./util/configparser.y" + case 659: +#line 3518 "./util/configparser.y" { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) @@ -6796,19 +7524,19 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 6800 "util/configparser.c" +#line 7528 "util/configparser.c" break; - case 656: /* ipsetstart: VAR_IPSET */ -#line 3508 "./util/configparser.y" + case 660: +#line 3529 "./util/configparser.y" { OUTYY(("\nP(ipset:)\n")); } -#line 6808 "util/configparser.c" +#line 7536 "util/configparser.c" break; - case 661: /* ipset_name_v4: VAR_IPSET_NAME_V4 STRING_ARG */ -#line 3517 "./util/configparser.y" + case 665: +#line 3538 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); @@ -6822,11 +7550,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6826 "util/configparser.c" +#line 7554 "util/configparser.c" break; - case 662: /* ipset_name_v6: VAR_IPSET_NAME_V6 STRING_ARG */ -#line 3532 "./util/configparser.y" + case 666: +#line 3553 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); @@ -6840,11 +7568,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6844 "util/configparser.c" +#line 7572 "util/configparser.c" break; -#line 6848 "util/configparser.c" +#line 7576 "util/configparser.c" default: break; } @@ -7004,13 +7732,13 @@ yyabortlab: yyexhaustedlab: yyerror (YY_("memory exhausted")); yyresult = 2; - goto yyreturn; + /* Fall through. */ #endif -/*-------------------------------------------------------. -| yyreturn -- parsing is finished, clean up and return. | -`-------------------------------------------------------*/ +/*-----------------------------------------------------. +| yyreturn -- parsing is finished, return the result. | +`-----------------------------------------------------*/ yyreturn: if (yychar != YYEMPTY) { @@ -7038,7 +7766,7 @@ yyreturn: return yyresult; } -#line 3546 "./util/configparser.y" +#line 3567 "./util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index 721a02414..7ce93b1d8 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -1,4 +1,4 @@ -/* A Bison parser, made by GNU Bison 3.7.4. */ +/* A Bison parser, made by GNU Bison 3.6.4. */ /* Bison interface for Yacc-like parsers in C @@ -197,183 +197,184 @@ extern int yydebug; VAR_STUB_SSL_UPSTREAM = 398, /* VAR_STUB_SSL_UPSTREAM */ VAR_FORWARD_SSL_UPSTREAM = 399, /* VAR_FORWARD_SSL_UPSTREAM */ VAR_TLS_CERT_BUNDLE = 400, /* VAR_TLS_CERT_BUNDLE */ - VAR_HTTPS_PORT = 401, /* VAR_HTTPS_PORT */ - VAR_HTTP_ENDPOINT = 402, /* VAR_HTTP_ENDPOINT */ - VAR_HTTP_MAX_STREAMS = 403, /* VAR_HTTP_MAX_STREAMS */ - VAR_HTTP_QUERY_BUFFER_SIZE = 404, /* VAR_HTTP_QUERY_BUFFER_SIZE */ - VAR_HTTP_RESPONSE_BUFFER_SIZE = 405, /* VAR_HTTP_RESPONSE_BUFFER_SIZE */ - VAR_HTTP_NODELAY = 406, /* VAR_HTTP_NODELAY */ - VAR_HTTP_NOTLS_DOWNSTREAM = 407, /* VAR_HTTP_NOTLS_DOWNSTREAM */ - VAR_STUB_FIRST = 408, /* VAR_STUB_FIRST */ - VAR_MINIMAL_RESPONSES = 409, /* VAR_MINIMAL_RESPONSES */ - VAR_RRSET_ROUNDROBIN = 410, /* VAR_RRSET_ROUNDROBIN */ - VAR_MAX_UDP_SIZE = 411, /* VAR_MAX_UDP_SIZE */ - VAR_DELAY_CLOSE = 412, /* VAR_DELAY_CLOSE */ - VAR_UDP_CONNECT = 413, /* VAR_UDP_CONNECT */ - VAR_UNBLOCK_LAN_ZONES = 414, /* VAR_UNBLOCK_LAN_ZONES */ - VAR_INSECURE_LAN_ZONES = 415, /* VAR_INSECURE_LAN_ZONES */ - VAR_INFRA_CACHE_MIN_RTT = 416, /* VAR_INFRA_CACHE_MIN_RTT */ - VAR_INFRA_KEEP_PROBING = 417, /* VAR_INFRA_KEEP_PROBING */ - VAR_DNS64_PREFIX = 418, /* VAR_DNS64_PREFIX */ - VAR_DNS64_SYNTHALL = 419, /* VAR_DNS64_SYNTHALL */ - VAR_DNS64_IGNORE_AAAA = 420, /* VAR_DNS64_IGNORE_AAAA */ - VAR_DNSTAP = 421, /* VAR_DNSTAP */ - VAR_DNSTAP_ENABLE = 422, /* VAR_DNSTAP_ENABLE */ - VAR_DNSTAP_SOCKET_PATH = 423, /* VAR_DNSTAP_SOCKET_PATH */ - VAR_DNSTAP_IP = 424, /* VAR_DNSTAP_IP */ - VAR_DNSTAP_TLS = 425, /* VAR_DNSTAP_TLS */ - VAR_DNSTAP_TLS_SERVER_NAME = 426, /* VAR_DNSTAP_TLS_SERVER_NAME */ - VAR_DNSTAP_TLS_CERT_BUNDLE = 427, /* VAR_DNSTAP_TLS_CERT_BUNDLE */ - VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 428, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE */ - VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 429, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE */ - VAR_DNSTAP_SEND_IDENTITY = 430, /* VAR_DNSTAP_SEND_IDENTITY */ - VAR_DNSTAP_SEND_VERSION = 431, /* VAR_DNSTAP_SEND_VERSION */ - VAR_DNSTAP_BIDIRECTIONAL = 432, /* VAR_DNSTAP_BIDIRECTIONAL */ - VAR_DNSTAP_IDENTITY = 433, /* VAR_DNSTAP_IDENTITY */ - VAR_DNSTAP_VERSION = 434, /* VAR_DNSTAP_VERSION */ - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 435, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES */ - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 436, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES */ - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 437, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES */ - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 438, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES */ - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 439, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES */ - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 440, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES */ - VAR_RESPONSE_IP_TAG = 441, /* VAR_RESPONSE_IP_TAG */ - VAR_RESPONSE_IP = 442, /* VAR_RESPONSE_IP */ - VAR_RESPONSE_IP_DATA = 443, /* VAR_RESPONSE_IP_DATA */ - VAR_HARDEN_ALGO_DOWNGRADE = 444, /* VAR_HARDEN_ALGO_DOWNGRADE */ - VAR_IP_TRANSPARENT = 445, /* VAR_IP_TRANSPARENT */ - VAR_IP_DSCP = 446, /* VAR_IP_DSCP */ - VAR_DISABLE_DNSSEC_LAME_CHECK = 447, /* VAR_DISABLE_DNSSEC_LAME_CHECK */ - VAR_IP_RATELIMIT = 448, /* VAR_IP_RATELIMIT */ - VAR_IP_RATELIMIT_SLABS = 449, /* VAR_IP_RATELIMIT_SLABS */ - VAR_IP_RATELIMIT_SIZE = 450, /* VAR_IP_RATELIMIT_SIZE */ - VAR_RATELIMIT = 451, /* VAR_RATELIMIT */ - VAR_RATELIMIT_SLABS = 452, /* VAR_RATELIMIT_SLABS */ - VAR_RATELIMIT_SIZE = 453, /* VAR_RATELIMIT_SIZE */ - VAR_RATELIMIT_FOR_DOMAIN = 454, /* VAR_RATELIMIT_FOR_DOMAIN */ - VAR_RATELIMIT_BELOW_DOMAIN = 455, /* VAR_RATELIMIT_BELOW_DOMAIN */ - VAR_IP_RATELIMIT_FACTOR = 456, /* VAR_IP_RATELIMIT_FACTOR */ - VAR_RATELIMIT_FACTOR = 457, /* VAR_RATELIMIT_FACTOR */ - VAR_SEND_CLIENT_SUBNET = 458, /* VAR_SEND_CLIENT_SUBNET */ - VAR_CLIENT_SUBNET_ZONE = 459, /* VAR_CLIENT_SUBNET_ZONE */ - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 460, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ - VAR_CLIENT_SUBNET_OPCODE = 461, /* VAR_CLIENT_SUBNET_OPCODE */ - VAR_MAX_CLIENT_SUBNET_IPV4 = 462, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ - VAR_MAX_CLIENT_SUBNET_IPV6 = 463, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ - VAR_MIN_CLIENT_SUBNET_IPV4 = 464, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ - VAR_MIN_CLIENT_SUBNET_IPV6 = 465, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ - VAR_MAX_ECS_TREE_SIZE_IPV4 = 466, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ - VAR_MAX_ECS_TREE_SIZE_IPV6 = 467, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ - VAR_CAPS_WHITELIST = 468, /* VAR_CAPS_WHITELIST */ - VAR_CACHE_MAX_NEGATIVE_TTL = 469, /* VAR_CACHE_MAX_NEGATIVE_TTL */ - VAR_PERMIT_SMALL_HOLDDOWN = 470, /* VAR_PERMIT_SMALL_HOLDDOWN */ - VAR_QNAME_MINIMISATION = 471, /* VAR_QNAME_MINIMISATION */ - VAR_QNAME_MINIMISATION_STRICT = 472, /* VAR_QNAME_MINIMISATION_STRICT */ - VAR_IP_FREEBIND = 473, /* VAR_IP_FREEBIND */ - VAR_DEFINE_TAG = 474, /* VAR_DEFINE_TAG */ - VAR_LOCAL_ZONE_TAG = 475, /* VAR_LOCAL_ZONE_TAG */ - VAR_ACCESS_CONTROL_TAG = 476, /* VAR_ACCESS_CONTROL_TAG */ - VAR_LOCAL_ZONE_OVERRIDE = 477, /* VAR_LOCAL_ZONE_OVERRIDE */ - VAR_ACCESS_CONTROL_TAG_ACTION = 478, /* VAR_ACCESS_CONTROL_TAG_ACTION */ - VAR_ACCESS_CONTROL_TAG_DATA = 479, /* VAR_ACCESS_CONTROL_TAG_DATA */ - VAR_VIEW = 480, /* VAR_VIEW */ - VAR_ACCESS_CONTROL_VIEW = 481, /* VAR_ACCESS_CONTROL_VIEW */ - VAR_VIEW_FIRST = 482, /* VAR_VIEW_FIRST */ - VAR_SERVE_EXPIRED = 483, /* VAR_SERVE_EXPIRED */ - VAR_SERVE_EXPIRED_TTL = 484, /* VAR_SERVE_EXPIRED_TTL */ - VAR_SERVE_EXPIRED_TTL_RESET = 485, /* VAR_SERVE_EXPIRED_TTL_RESET */ - VAR_SERVE_EXPIRED_REPLY_TTL = 486, /* VAR_SERVE_EXPIRED_REPLY_TTL */ - VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 487, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ - VAR_SERVE_ORIGINAL_TTL = 488, /* VAR_SERVE_ORIGINAL_TTL */ - VAR_FAKE_DSA = 489, /* VAR_FAKE_DSA */ - VAR_FAKE_SHA1 = 490, /* VAR_FAKE_SHA1 */ - VAR_LOG_IDENTITY = 491, /* VAR_LOG_IDENTITY */ - VAR_HIDE_TRUSTANCHOR = 492, /* VAR_HIDE_TRUSTANCHOR */ - VAR_HIDE_HTTP_USER_AGENT = 493, /* VAR_HIDE_HTTP_USER_AGENT */ - VAR_HTTP_USER_AGENT = 494, /* VAR_HTTP_USER_AGENT */ - VAR_TRUST_ANCHOR_SIGNALING = 495, /* VAR_TRUST_ANCHOR_SIGNALING */ - VAR_AGGRESSIVE_NSEC = 496, /* VAR_AGGRESSIVE_NSEC */ - VAR_USE_SYSTEMD = 497, /* VAR_USE_SYSTEMD */ - VAR_SHM_ENABLE = 498, /* VAR_SHM_ENABLE */ - VAR_SHM_KEY = 499, /* VAR_SHM_KEY */ - VAR_ROOT_KEY_SENTINEL = 500, /* VAR_ROOT_KEY_SENTINEL */ - VAR_DNSCRYPT = 501, /* VAR_DNSCRYPT */ - VAR_DNSCRYPT_ENABLE = 502, /* VAR_DNSCRYPT_ENABLE */ - VAR_DNSCRYPT_PORT = 503, /* VAR_DNSCRYPT_PORT */ - VAR_DNSCRYPT_PROVIDER = 504, /* VAR_DNSCRYPT_PROVIDER */ - VAR_DNSCRYPT_SECRET_KEY = 505, /* VAR_DNSCRYPT_SECRET_KEY */ - VAR_DNSCRYPT_PROVIDER_CERT = 506, /* VAR_DNSCRYPT_PROVIDER_CERT */ - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 507, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 508, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 509, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 510, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 511, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ - VAR_PAD_RESPONSES = 512, /* VAR_PAD_RESPONSES */ - VAR_PAD_RESPONSES_BLOCK_SIZE = 513, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ - VAR_PAD_QUERIES = 514, /* VAR_PAD_QUERIES */ - VAR_PAD_QUERIES_BLOCK_SIZE = 515, /* VAR_PAD_QUERIES_BLOCK_SIZE */ - VAR_IPSECMOD_ENABLED = 516, /* VAR_IPSECMOD_ENABLED */ - VAR_IPSECMOD_HOOK = 517, /* VAR_IPSECMOD_HOOK */ - VAR_IPSECMOD_IGNORE_BOGUS = 518, /* VAR_IPSECMOD_IGNORE_BOGUS */ - VAR_IPSECMOD_MAX_TTL = 519, /* VAR_IPSECMOD_MAX_TTL */ - VAR_IPSECMOD_WHITELIST = 520, /* VAR_IPSECMOD_WHITELIST */ - VAR_IPSECMOD_STRICT = 521, /* VAR_IPSECMOD_STRICT */ - VAR_CACHEDB = 522, /* VAR_CACHEDB */ - VAR_CACHEDB_BACKEND = 523, /* VAR_CACHEDB_BACKEND */ - VAR_CACHEDB_SECRETSEED = 524, /* VAR_CACHEDB_SECRETSEED */ - VAR_CACHEDB_REDISHOST = 525, /* VAR_CACHEDB_REDISHOST */ - VAR_CACHEDB_REDISPORT = 526, /* VAR_CACHEDB_REDISPORT */ - VAR_CACHEDB_REDISTIMEOUT = 527, /* VAR_CACHEDB_REDISTIMEOUT */ - VAR_CACHEDB_REDISEXPIRERECORDS = 528, /* VAR_CACHEDB_REDISEXPIRERECORDS */ - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 529, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ - VAR_FOR_UPSTREAM = 530, /* VAR_FOR_UPSTREAM */ - VAR_AUTH_ZONE = 531, /* VAR_AUTH_ZONE */ - VAR_ZONEFILE = 532, /* VAR_ZONEFILE */ - VAR_MASTER = 533, /* VAR_MASTER */ - VAR_URL = 534, /* VAR_URL */ - VAR_FOR_DOWNSTREAM = 535, /* VAR_FOR_DOWNSTREAM */ - VAR_FALLBACK_ENABLED = 536, /* VAR_FALLBACK_ENABLED */ - VAR_TLS_ADDITIONAL_PORT = 537, /* VAR_TLS_ADDITIONAL_PORT */ - VAR_LOW_RTT = 538, /* VAR_LOW_RTT */ - VAR_LOW_RTT_PERMIL = 539, /* VAR_LOW_RTT_PERMIL */ - VAR_FAST_SERVER_PERMIL = 540, /* VAR_FAST_SERVER_PERMIL */ - VAR_FAST_SERVER_NUM = 541, /* VAR_FAST_SERVER_NUM */ - VAR_ALLOW_NOTIFY = 542, /* VAR_ALLOW_NOTIFY */ - VAR_TLS_WIN_CERT = 543, /* VAR_TLS_WIN_CERT */ - VAR_TCP_CONNECTION_LIMIT = 544, /* VAR_TCP_CONNECTION_LIMIT */ - VAR_FORWARD_NO_CACHE = 545, /* VAR_FORWARD_NO_CACHE */ - VAR_STUB_NO_CACHE = 546, /* VAR_STUB_NO_CACHE */ - VAR_LOG_SERVFAIL = 547, /* VAR_LOG_SERVFAIL */ - VAR_DENY_ANY = 548, /* VAR_DENY_ANY */ - VAR_UNKNOWN_SERVER_TIME_LIMIT = 549, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ - VAR_LOG_TAG_QUERYREPLY = 550, /* VAR_LOG_TAG_QUERYREPLY */ - VAR_STREAM_WAIT_SIZE = 551, /* VAR_STREAM_WAIT_SIZE */ - VAR_TLS_CIPHERS = 552, /* VAR_TLS_CIPHERS */ - VAR_TLS_CIPHERSUITES = 553, /* VAR_TLS_CIPHERSUITES */ - VAR_TLS_USE_SNI = 554, /* VAR_TLS_USE_SNI */ - VAR_IPSET = 555, /* VAR_IPSET */ - VAR_IPSET_NAME_V4 = 556, /* VAR_IPSET_NAME_V4 */ - VAR_IPSET_NAME_V6 = 557, /* VAR_IPSET_NAME_V6 */ - VAR_TLS_SESSION_TICKET_KEYS = 558, /* VAR_TLS_SESSION_TICKET_KEYS */ - VAR_RPZ = 559, /* VAR_RPZ */ - VAR_TAGS = 560, /* VAR_TAGS */ - VAR_RPZ_ACTION_OVERRIDE = 561, /* VAR_RPZ_ACTION_OVERRIDE */ - VAR_RPZ_CNAME_OVERRIDE = 562, /* VAR_RPZ_CNAME_OVERRIDE */ - VAR_RPZ_LOG = 563, /* VAR_RPZ_LOG */ - VAR_RPZ_LOG_NAME = 564, /* VAR_RPZ_LOG_NAME */ - VAR_DYNLIB = 565, /* VAR_DYNLIB */ - VAR_DYNLIB_FILE = 566, /* VAR_DYNLIB_FILE */ - VAR_EDNS_CLIENT_STRING = 567, /* VAR_EDNS_CLIENT_STRING */ - VAR_EDNS_CLIENT_STRING_OPCODE = 568, /* VAR_EDNS_CLIENT_STRING_OPCODE */ - VAR_NSID = 569, /* VAR_NSID */ - VAR_ZONEMD_PERMISSIVE_MODE = 570, /* VAR_ZONEMD_PERMISSIVE_MODE */ - VAR_ZONEMD_CHECK = 571, /* VAR_ZONEMD_CHECK */ - VAR_ZONEMD_REJECT_ABSENCE = 572 /* VAR_ZONEMD_REJECT_ABSENCE */ + VAR_STUB_TCP_UPSTREAM = 401, /* VAR_STUB_TCP_UPSTREAM */ + VAR_FORWARD_TCP_UPSTREAM = 402, /* VAR_FORWARD_TCP_UPSTREAM */ + VAR_HTTPS_PORT = 403, /* VAR_HTTPS_PORT */ + VAR_HTTP_ENDPOINT = 404, /* VAR_HTTP_ENDPOINT */ + VAR_HTTP_MAX_STREAMS = 405, /* VAR_HTTP_MAX_STREAMS */ + VAR_HTTP_QUERY_BUFFER_SIZE = 406, /* VAR_HTTP_QUERY_BUFFER_SIZE */ + VAR_HTTP_RESPONSE_BUFFER_SIZE = 407, /* VAR_HTTP_RESPONSE_BUFFER_SIZE */ + VAR_HTTP_NODELAY = 408, /* VAR_HTTP_NODELAY */ + VAR_HTTP_NOTLS_DOWNSTREAM = 409, /* VAR_HTTP_NOTLS_DOWNSTREAM */ + VAR_STUB_FIRST = 410, /* VAR_STUB_FIRST */ + VAR_MINIMAL_RESPONSES = 411, /* VAR_MINIMAL_RESPONSES */ + VAR_RRSET_ROUNDROBIN = 412, /* VAR_RRSET_ROUNDROBIN */ + VAR_MAX_UDP_SIZE = 413, /* VAR_MAX_UDP_SIZE */ + VAR_DELAY_CLOSE = 414, /* VAR_DELAY_CLOSE */ + VAR_UDP_CONNECT = 415, /* VAR_UDP_CONNECT */ + VAR_UNBLOCK_LAN_ZONES = 416, /* VAR_UNBLOCK_LAN_ZONES */ + VAR_INSECURE_LAN_ZONES = 417, /* VAR_INSECURE_LAN_ZONES */ + VAR_INFRA_CACHE_MIN_RTT = 418, /* VAR_INFRA_CACHE_MIN_RTT */ + VAR_INFRA_KEEP_PROBING = 419, /* VAR_INFRA_KEEP_PROBING */ + VAR_DNS64_PREFIX = 420, /* VAR_DNS64_PREFIX */ + VAR_DNS64_SYNTHALL = 421, /* VAR_DNS64_SYNTHALL */ + VAR_DNS64_IGNORE_AAAA = 422, /* VAR_DNS64_IGNORE_AAAA */ + VAR_DNSTAP = 423, /* VAR_DNSTAP */ + VAR_DNSTAP_ENABLE = 424, /* VAR_DNSTAP_ENABLE */ + VAR_DNSTAP_SOCKET_PATH = 425, /* VAR_DNSTAP_SOCKET_PATH */ + VAR_DNSTAP_IP = 426, /* VAR_DNSTAP_IP */ + VAR_DNSTAP_TLS = 427, /* VAR_DNSTAP_TLS */ + VAR_DNSTAP_TLS_SERVER_NAME = 428, /* VAR_DNSTAP_TLS_SERVER_NAME */ + VAR_DNSTAP_TLS_CERT_BUNDLE = 429, /* VAR_DNSTAP_TLS_CERT_BUNDLE */ + VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 430, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE */ + VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 431, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE */ + VAR_DNSTAP_SEND_IDENTITY = 432, /* VAR_DNSTAP_SEND_IDENTITY */ + VAR_DNSTAP_SEND_VERSION = 433, /* VAR_DNSTAP_SEND_VERSION */ + VAR_DNSTAP_BIDIRECTIONAL = 434, /* VAR_DNSTAP_BIDIRECTIONAL */ + VAR_DNSTAP_IDENTITY = 435, /* VAR_DNSTAP_IDENTITY */ + VAR_DNSTAP_VERSION = 436, /* VAR_DNSTAP_VERSION */ + VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 437, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES */ + VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 438, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES */ + VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 439, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES */ + VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 440, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES */ + VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 441, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES */ + VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 442, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES */ + VAR_RESPONSE_IP_TAG = 443, /* VAR_RESPONSE_IP_TAG */ + VAR_RESPONSE_IP = 444, /* VAR_RESPONSE_IP */ + VAR_RESPONSE_IP_DATA = 445, /* VAR_RESPONSE_IP_DATA */ + VAR_HARDEN_ALGO_DOWNGRADE = 446, /* VAR_HARDEN_ALGO_DOWNGRADE */ + VAR_IP_TRANSPARENT = 447, /* VAR_IP_TRANSPARENT */ + VAR_IP_DSCP = 448, /* VAR_IP_DSCP */ + VAR_DISABLE_DNSSEC_LAME_CHECK = 449, /* VAR_DISABLE_DNSSEC_LAME_CHECK */ + VAR_IP_RATELIMIT = 450, /* VAR_IP_RATELIMIT */ + VAR_IP_RATELIMIT_SLABS = 451, /* VAR_IP_RATELIMIT_SLABS */ + VAR_IP_RATELIMIT_SIZE = 452, /* VAR_IP_RATELIMIT_SIZE */ + VAR_RATELIMIT = 453, /* VAR_RATELIMIT */ + VAR_RATELIMIT_SLABS = 454, /* VAR_RATELIMIT_SLABS */ + VAR_RATELIMIT_SIZE = 455, /* VAR_RATELIMIT_SIZE */ + VAR_RATELIMIT_FOR_DOMAIN = 456, /* VAR_RATELIMIT_FOR_DOMAIN */ + VAR_RATELIMIT_BELOW_DOMAIN = 457, /* VAR_RATELIMIT_BELOW_DOMAIN */ + VAR_IP_RATELIMIT_FACTOR = 458, /* VAR_IP_RATELIMIT_FACTOR */ + VAR_RATELIMIT_FACTOR = 459, /* VAR_RATELIMIT_FACTOR */ + VAR_SEND_CLIENT_SUBNET = 460, /* VAR_SEND_CLIENT_SUBNET */ + VAR_CLIENT_SUBNET_ZONE = 461, /* VAR_CLIENT_SUBNET_ZONE */ + VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 462, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ + VAR_CLIENT_SUBNET_OPCODE = 463, /* VAR_CLIENT_SUBNET_OPCODE */ + VAR_MAX_CLIENT_SUBNET_IPV4 = 464, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ + VAR_MAX_CLIENT_SUBNET_IPV6 = 465, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ + VAR_MIN_CLIENT_SUBNET_IPV4 = 466, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ + VAR_MIN_CLIENT_SUBNET_IPV6 = 467, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ + VAR_MAX_ECS_TREE_SIZE_IPV4 = 468, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ + VAR_MAX_ECS_TREE_SIZE_IPV6 = 469, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ + VAR_CAPS_WHITELIST = 470, /* VAR_CAPS_WHITELIST */ + VAR_CACHE_MAX_NEGATIVE_TTL = 471, /* VAR_CACHE_MAX_NEGATIVE_TTL */ + VAR_PERMIT_SMALL_HOLDDOWN = 472, /* VAR_PERMIT_SMALL_HOLDDOWN */ + VAR_QNAME_MINIMISATION = 473, /* VAR_QNAME_MINIMISATION */ + VAR_QNAME_MINIMISATION_STRICT = 474, /* VAR_QNAME_MINIMISATION_STRICT */ + VAR_IP_FREEBIND = 475, /* VAR_IP_FREEBIND */ + VAR_DEFINE_TAG = 476, /* VAR_DEFINE_TAG */ + VAR_LOCAL_ZONE_TAG = 477, /* VAR_LOCAL_ZONE_TAG */ + VAR_ACCESS_CONTROL_TAG = 478, /* VAR_ACCESS_CONTROL_TAG */ + VAR_LOCAL_ZONE_OVERRIDE = 479, /* VAR_LOCAL_ZONE_OVERRIDE */ + VAR_ACCESS_CONTROL_TAG_ACTION = 480, /* VAR_ACCESS_CONTROL_TAG_ACTION */ + VAR_ACCESS_CONTROL_TAG_DATA = 481, /* VAR_ACCESS_CONTROL_TAG_DATA */ + VAR_VIEW = 482, /* VAR_VIEW */ + VAR_ACCESS_CONTROL_VIEW = 483, /* VAR_ACCESS_CONTROL_VIEW */ + VAR_VIEW_FIRST = 484, /* VAR_VIEW_FIRST */ + VAR_SERVE_EXPIRED = 485, /* VAR_SERVE_EXPIRED */ + VAR_SERVE_EXPIRED_TTL = 486, /* VAR_SERVE_EXPIRED_TTL */ + VAR_SERVE_EXPIRED_TTL_RESET = 487, /* VAR_SERVE_EXPIRED_TTL_RESET */ + VAR_SERVE_EXPIRED_REPLY_TTL = 488, /* VAR_SERVE_EXPIRED_REPLY_TTL */ + VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 489, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ + VAR_SERVE_ORIGINAL_TTL = 490, /* VAR_SERVE_ORIGINAL_TTL */ + VAR_FAKE_DSA = 491, /* VAR_FAKE_DSA */ + VAR_FAKE_SHA1 = 492, /* VAR_FAKE_SHA1 */ + VAR_LOG_IDENTITY = 493, /* VAR_LOG_IDENTITY */ + VAR_HIDE_TRUSTANCHOR = 494, /* VAR_HIDE_TRUSTANCHOR */ + VAR_HIDE_HTTP_USER_AGENT = 495, /* VAR_HIDE_HTTP_USER_AGENT */ + VAR_HTTP_USER_AGENT = 496, /* VAR_HTTP_USER_AGENT */ + VAR_TRUST_ANCHOR_SIGNALING = 497, /* VAR_TRUST_ANCHOR_SIGNALING */ + VAR_AGGRESSIVE_NSEC = 498, /* VAR_AGGRESSIVE_NSEC */ + VAR_USE_SYSTEMD = 499, /* VAR_USE_SYSTEMD */ + VAR_SHM_ENABLE = 500, /* VAR_SHM_ENABLE */ + VAR_SHM_KEY = 501, /* VAR_SHM_KEY */ + VAR_ROOT_KEY_SENTINEL = 502, /* VAR_ROOT_KEY_SENTINEL */ + VAR_DNSCRYPT = 503, /* VAR_DNSCRYPT */ + VAR_DNSCRYPT_ENABLE = 504, /* VAR_DNSCRYPT_ENABLE */ + VAR_DNSCRYPT_PORT = 505, /* VAR_DNSCRYPT_PORT */ + VAR_DNSCRYPT_PROVIDER = 506, /* VAR_DNSCRYPT_PROVIDER */ + VAR_DNSCRYPT_SECRET_KEY = 507, /* VAR_DNSCRYPT_SECRET_KEY */ + VAR_DNSCRYPT_PROVIDER_CERT = 508, /* VAR_DNSCRYPT_PROVIDER_CERT */ + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 509, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 510, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 511, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 512, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 513, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ + VAR_PAD_RESPONSES = 514, /* VAR_PAD_RESPONSES */ + VAR_PAD_RESPONSES_BLOCK_SIZE = 515, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ + VAR_PAD_QUERIES = 516, /* VAR_PAD_QUERIES */ + VAR_PAD_QUERIES_BLOCK_SIZE = 517, /* VAR_PAD_QUERIES_BLOCK_SIZE */ + VAR_IPSECMOD_ENABLED = 518, /* VAR_IPSECMOD_ENABLED */ + VAR_IPSECMOD_HOOK = 519, /* VAR_IPSECMOD_HOOK */ + VAR_IPSECMOD_IGNORE_BOGUS = 520, /* VAR_IPSECMOD_IGNORE_BOGUS */ + VAR_IPSECMOD_MAX_TTL = 521, /* VAR_IPSECMOD_MAX_TTL */ + VAR_IPSECMOD_WHITELIST = 522, /* VAR_IPSECMOD_WHITELIST */ + VAR_IPSECMOD_STRICT = 523, /* VAR_IPSECMOD_STRICT */ + VAR_CACHEDB = 524, /* VAR_CACHEDB */ + VAR_CACHEDB_BACKEND = 525, /* VAR_CACHEDB_BACKEND */ + VAR_CACHEDB_SECRETSEED = 526, /* VAR_CACHEDB_SECRETSEED */ + VAR_CACHEDB_REDISHOST = 527, /* VAR_CACHEDB_REDISHOST */ + VAR_CACHEDB_REDISPORT = 528, /* VAR_CACHEDB_REDISPORT */ + VAR_CACHEDB_REDISTIMEOUT = 529, /* VAR_CACHEDB_REDISTIMEOUT */ + VAR_CACHEDB_REDISEXPIRERECORDS = 530, /* VAR_CACHEDB_REDISEXPIRERECORDS */ + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 531, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ + VAR_FOR_UPSTREAM = 532, /* VAR_FOR_UPSTREAM */ + VAR_AUTH_ZONE = 533, /* VAR_AUTH_ZONE */ + VAR_ZONEFILE = 534, /* VAR_ZONEFILE */ + VAR_MASTER = 535, /* VAR_MASTER */ + VAR_URL = 536, /* VAR_URL */ + VAR_FOR_DOWNSTREAM = 537, /* VAR_FOR_DOWNSTREAM */ + VAR_FALLBACK_ENABLED = 538, /* VAR_FALLBACK_ENABLED */ + VAR_TLS_ADDITIONAL_PORT = 539, /* VAR_TLS_ADDITIONAL_PORT */ + VAR_LOW_RTT = 540, /* VAR_LOW_RTT */ + VAR_LOW_RTT_PERMIL = 541, /* VAR_LOW_RTT_PERMIL */ + VAR_FAST_SERVER_PERMIL = 542, /* VAR_FAST_SERVER_PERMIL */ + VAR_FAST_SERVER_NUM = 543, /* VAR_FAST_SERVER_NUM */ + VAR_ALLOW_NOTIFY = 544, /* VAR_ALLOW_NOTIFY */ + VAR_TLS_WIN_CERT = 545, /* VAR_TLS_WIN_CERT */ + VAR_TCP_CONNECTION_LIMIT = 546, /* VAR_TCP_CONNECTION_LIMIT */ + VAR_FORWARD_NO_CACHE = 547, /* VAR_FORWARD_NO_CACHE */ + VAR_STUB_NO_CACHE = 548, /* VAR_STUB_NO_CACHE */ + VAR_LOG_SERVFAIL = 549, /* VAR_LOG_SERVFAIL */ + VAR_DENY_ANY = 550, /* VAR_DENY_ANY */ + VAR_UNKNOWN_SERVER_TIME_LIMIT = 551, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ + VAR_LOG_TAG_QUERYREPLY = 552, /* VAR_LOG_TAG_QUERYREPLY */ + VAR_STREAM_WAIT_SIZE = 553, /* VAR_STREAM_WAIT_SIZE */ + VAR_TLS_CIPHERS = 554, /* VAR_TLS_CIPHERS */ + VAR_TLS_CIPHERSUITES = 555, /* VAR_TLS_CIPHERSUITES */ + VAR_TLS_USE_SNI = 556, /* VAR_TLS_USE_SNI */ + VAR_IPSET = 557, /* VAR_IPSET */ + VAR_IPSET_NAME_V4 = 558, /* VAR_IPSET_NAME_V4 */ + VAR_IPSET_NAME_V6 = 559, /* VAR_IPSET_NAME_V6 */ + VAR_TLS_SESSION_TICKET_KEYS = 560, /* VAR_TLS_SESSION_TICKET_KEYS */ + VAR_RPZ = 561, /* VAR_RPZ */ + VAR_TAGS = 562, /* VAR_TAGS */ + VAR_RPZ_ACTION_OVERRIDE = 563, /* VAR_RPZ_ACTION_OVERRIDE */ + VAR_RPZ_CNAME_OVERRIDE = 564, /* VAR_RPZ_CNAME_OVERRIDE */ + VAR_RPZ_LOG = 565, /* VAR_RPZ_LOG */ + VAR_RPZ_LOG_NAME = 566, /* VAR_RPZ_LOG_NAME */ + VAR_DYNLIB = 567, /* VAR_DYNLIB */ + VAR_DYNLIB_FILE = 568, /* VAR_DYNLIB_FILE */ + VAR_EDNS_CLIENT_STRING = 569, /* VAR_EDNS_CLIENT_STRING */ + VAR_EDNS_CLIENT_STRING_OPCODE = 570, /* VAR_EDNS_CLIENT_STRING_OPCODE */ + VAR_NSID = 571, /* VAR_NSID */ + VAR_ZONEMD_PERMISSIVE_MODE = 572, /* VAR_ZONEMD_PERMISSIVE_MODE */ + VAR_ZONEMD_CHECK = 573, /* VAR_ZONEMD_CHECK */ + VAR_ZONEMD_REJECT_ABSENCE = 574 /* VAR_ZONEMD_REJECT_ABSENCE */ }; typedef enum yytokentype yytoken_kind_t; #endif /* Token kinds. */ -#define YYEMPTY -2 #define YYEOF 0 #define YYerror 256 #define YYUNDEF 257 @@ -520,178 +521,180 @@ extern int yydebug; #define VAR_STUB_SSL_UPSTREAM 398 #define VAR_FORWARD_SSL_UPSTREAM 399 #define VAR_TLS_CERT_BUNDLE 400 -#define VAR_HTTPS_PORT 401 -#define VAR_HTTP_ENDPOINT 402 -#define VAR_HTTP_MAX_STREAMS 403 -#define VAR_HTTP_QUERY_BUFFER_SIZE 404 -#define VAR_HTTP_RESPONSE_BUFFER_SIZE 405 -#define VAR_HTTP_NODELAY 406 -#define VAR_HTTP_NOTLS_DOWNSTREAM 407 -#define VAR_STUB_FIRST 408 -#define VAR_MINIMAL_RESPONSES 409 -#define VAR_RRSET_ROUNDROBIN 410 -#define VAR_MAX_UDP_SIZE 411 -#define VAR_DELAY_CLOSE 412 -#define VAR_UDP_CONNECT 413 -#define VAR_UNBLOCK_LAN_ZONES 414 -#define VAR_INSECURE_LAN_ZONES 415 -#define VAR_INFRA_CACHE_MIN_RTT 416 -#define VAR_INFRA_KEEP_PROBING 417 -#define VAR_DNS64_PREFIX 418 -#define VAR_DNS64_SYNTHALL 419 -#define VAR_DNS64_IGNORE_AAAA 420 -#define VAR_DNSTAP 421 -#define VAR_DNSTAP_ENABLE 422 -#define VAR_DNSTAP_SOCKET_PATH 423 -#define VAR_DNSTAP_IP 424 -#define VAR_DNSTAP_TLS 425 -#define VAR_DNSTAP_TLS_SERVER_NAME 426 -#define VAR_DNSTAP_TLS_CERT_BUNDLE 427 -#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 428 -#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 429 -#define VAR_DNSTAP_SEND_IDENTITY 430 -#define VAR_DNSTAP_SEND_VERSION 431 -#define VAR_DNSTAP_BIDIRECTIONAL 432 -#define VAR_DNSTAP_IDENTITY 433 -#define VAR_DNSTAP_VERSION 434 -#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 435 -#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 436 -#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 437 -#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 438 -#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 439 -#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 440 -#define VAR_RESPONSE_IP_TAG 441 -#define VAR_RESPONSE_IP 442 -#define VAR_RESPONSE_IP_DATA 443 -#define VAR_HARDEN_ALGO_DOWNGRADE 444 -#define VAR_IP_TRANSPARENT 445 -#define VAR_IP_DSCP 446 -#define VAR_DISABLE_DNSSEC_LAME_CHECK 447 -#define VAR_IP_RATELIMIT 448 -#define VAR_IP_RATELIMIT_SLABS 449 -#define VAR_IP_RATELIMIT_SIZE 450 -#define VAR_RATELIMIT 451 -#define VAR_RATELIMIT_SLABS 452 -#define VAR_RATELIMIT_SIZE 453 -#define VAR_RATELIMIT_FOR_DOMAIN 454 -#define VAR_RATELIMIT_BELOW_DOMAIN 455 -#define VAR_IP_RATELIMIT_FACTOR 456 -#define VAR_RATELIMIT_FACTOR 457 -#define VAR_SEND_CLIENT_SUBNET 458 -#define VAR_CLIENT_SUBNET_ZONE 459 -#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 460 -#define VAR_CLIENT_SUBNET_OPCODE 461 -#define VAR_MAX_CLIENT_SUBNET_IPV4 462 -#define VAR_MAX_CLIENT_SUBNET_IPV6 463 -#define VAR_MIN_CLIENT_SUBNET_IPV4 464 -#define VAR_MIN_CLIENT_SUBNET_IPV6 465 -#define VAR_MAX_ECS_TREE_SIZE_IPV4 466 -#define VAR_MAX_ECS_TREE_SIZE_IPV6 467 -#define VAR_CAPS_WHITELIST 468 -#define VAR_CACHE_MAX_NEGATIVE_TTL 469 -#define VAR_PERMIT_SMALL_HOLDDOWN 470 -#define VAR_QNAME_MINIMISATION 471 -#define VAR_QNAME_MINIMISATION_STRICT 472 -#define VAR_IP_FREEBIND 473 -#define VAR_DEFINE_TAG 474 -#define VAR_LOCAL_ZONE_TAG 475 -#define VAR_ACCESS_CONTROL_TAG 476 -#define VAR_LOCAL_ZONE_OVERRIDE 477 -#define VAR_ACCESS_CONTROL_TAG_ACTION 478 -#define VAR_ACCESS_CONTROL_TAG_DATA 479 -#define VAR_VIEW 480 -#define VAR_ACCESS_CONTROL_VIEW 481 -#define VAR_VIEW_FIRST 482 -#define VAR_SERVE_EXPIRED 483 -#define VAR_SERVE_EXPIRED_TTL 484 -#define VAR_SERVE_EXPIRED_TTL_RESET 485 -#define VAR_SERVE_EXPIRED_REPLY_TTL 486 -#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 487 -#define VAR_SERVE_ORIGINAL_TTL 488 -#define VAR_FAKE_DSA 489 -#define VAR_FAKE_SHA1 490 -#define VAR_LOG_IDENTITY 491 -#define VAR_HIDE_TRUSTANCHOR 492 -#define VAR_HIDE_HTTP_USER_AGENT 493 -#define VAR_HTTP_USER_AGENT 494 -#define VAR_TRUST_ANCHOR_SIGNALING 495 -#define VAR_AGGRESSIVE_NSEC 496 -#define VAR_USE_SYSTEMD 497 -#define VAR_SHM_ENABLE 498 -#define VAR_SHM_KEY 499 -#define VAR_ROOT_KEY_SENTINEL 500 -#define VAR_DNSCRYPT 501 -#define VAR_DNSCRYPT_ENABLE 502 -#define VAR_DNSCRYPT_PORT 503 -#define VAR_DNSCRYPT_PROVIDER 504 -#define VAR_DNSCRYPT_SECRET_KEY 505 -#define VAR_DNSCRYPT_PROVIDER_CERT 506 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 507 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 508 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 509 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 510 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 511 -#define VAR_PAD_RESPONSES 512 -#define VAR_PAD_RESPONSES_BLOCK_SIZE 513 -#define VAR_PAD_QUERIES 514 -#define VAR_PAD_QUERIES_BLOCK_SIZE 515 -#define VAR_IPSECMOD_ENABLED 516 -#define VAR_IPSECMOD_HOOK 517 -#define VAR_IPSECMOD_IGNORE_BOGUS 518 -#define VAR_IPSECMOD_MAX_TTL 519 -#define VAR_IPSECMOD_WHITELIST 520 -#define VAR_IPSECMOD_STRICT 521 -#define VAR_CACHEDB 522 -#define VAR_CACHEDB_BACKEND 523 -#define VAR_CACHEDB_SECRETSEED 524 -#define VAR_CACHEDB_REDISHOST 525 -#define VAR_CACHEDB_REDISPORT 526 -#define VAR_CACHEDB_REDISTIMEOUT 527 -#define VAR_CACHEDB_REDISEXPIRERECORDS 528 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 529 -#define VAR_FOR_UPSTREAM 530 -#define VAR_AUTH_ZONE 531 -#define VAR_ZONEFILE 532 -#define VAR_MASTER 533 -#define VAR_URL 534 -#define VAR_FOR_DOWNSTREAM 535 -#define VAR_FALLBACK_ENABLED 536 -#define VAR_TLS_ADDITIONAL_PORT 537 -#define VAR_LOW_RTT 538 -#define VAR_LOW_RTT_PERMIL 539 -#define VAR_FAST_SERVER_PERMIL 540 -#define VAR_FAST_SERVER_NUM 541 -#define VAR_ALLOW_NOTIFY 542 -#define VAR_TLS_WIN_CERT 543 -#define VAR_TCP_CONNECTION_LIMIT 544 -#define VAR_FORWARD_NO_CACHE 545 -#define VAR_STUB_NO_CACHE 546 -#define VAR_LOG_SERVFAIL 547 -#define VAR_DENY_ANY 548 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 549 -#define VAR_LOG_TAG_QUERYREPLY 550 -#define VAR_STREAM_WAIT_SIZE 551 -#define VAR_TLS_CIPHERS 552 -#define VAR_TLS_CIPHERSUITES 553 -#define VAR_TLS_USE_SNI 554 -#define VAR_IPSET 555 -#define VAR_IPSET_NAME_V4 556 -#define VAR_IPSET_NAME_V6 557 -#define VAR_TLS_SESSION_TICKET_KEYS 558 -#define VAR_RPZ 559 -#define VAR_TAGS 560 -#define VAR_RPZ_ACTION_OVERRIDE 561 -#define VAR_RPZ_CNAME_OVERRIDE 562 -#define VAR_RPZ_LOG 563 -#define VAR_RPZ_LOG_NAME 564 -#define VAR_DYNLIB 565 -#define VAR_DYNLIB_FILE 566 -#define VAR_EDNS_CLIENT_STRING 567 -#define VAR_EDNS_CLIENT_STRING_OPCODE 568 -#define VAR_NSID 569 -#define VAR_ZONEMD_PERMISSIVE_MODE 570 -#define VAR_ZONEMD_CHECK 571 -#define VAR_ZONEMD_REJECT_ABSENCE 572 +#define VAR_STUB_TCP_UPSTREAM 401 +#define VAR_FORWARD_TCP_UPSTREAM 402 +#define VAR_HTTPS_PORT 403 +#define VAR_HTTP_ENDPOINT 404 +#define VAR_HTTP_MAX_STREAMS 405 +#define VAR_HTTP_QUERY_BUFFER_SIZE 406 +#define VAR_HTTP_RESPONSE_BUFFER_SIZE 407 +#define VAR_HTTP_NODELAY 408 +#define VAR_HTTP_NOTLS_DOWNSTREAM 409 +#define VAR_STUB_FIRST 410 +#define VAR_MINIMAL_RESPONSES 411 +#define VAR_RRSET_ROUNDROBIN 412 +#define VAR_MAX_UDP_SIZE 413 +#define VAR_DELAY_CLOSE 414 +#define VAR_UDP_CONNECT 415 +#define VAR_UNBLOCK_LAN_ZONES 416 +#define VAR_INSECURE_LAN_ZONES 417 +#define VAR_INFRA_CACHE_MIN_RTT 418 +#define VAR_INFRA_KEEP_PROBING 419 +#define VAR_DNS64_PREFIX 420 +#define VAR_DNS64_SYNTHALL 421 +#define VAR_DNS64_IGNORE_AAAA 422 +#define VAR_DNSTAP 423 +#define VAR_DNSTAP_ENABLE 424 +#define VAR_DNSTAP_SOCKET_PATH 425 +#define VAR_DNSTAP_IP 426 +#define VAR_DNSTAP_TLS 427 +#define VAR_DNSTAP_TLS_SERVER_NAME 428 +#define VAR_DNSTAP_TLS_CERT_BUNDLE 429 +#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 430 +#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 431 +#define VAR_DNSTAP_SEND_IDENTITY 432 +#define VAR_DNSTAP_SEND_VERSION 433 +#define VAR_DNSTAP_BIDIRECTIONAL 434 +#define VAR_DNSTAP_IDENTITY 435 +#define VAR_DNSTAP_VERSION 436 +#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 437 +#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 438 +#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 439 +#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 440 +#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 441 +#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 442 +#define VAR_RESPONSE_IP_TAG 443 +#define VAR_RESPONSE_IP 444 +#define VAR_RESPONSE_IP_DATA 445 +#define VAR_HARDEN_ALGO_DOWNGRADE 446 +#define VAR_IP_TRANSPARENT 447 +#define VAR_IP_DSCP 448 +#define VAR_DISABLE_DNSSEC_LAME_CHECK 449 +#define VAR_IP_RATELIMIT 450 +#define VAR_IP_RATELIMIT_SLABS 451 +#define VAR_IP_RATELIMIT_SIZE 452 +#define VAR_RATELIMIT 453 +#define VAR_RATELIMIT_SLABS 454 +#define VAR_RATELIMIT_SIZE 455 +#define VAR_RATELIMIT_FOR_DOMAIN 456 +#define VAR_RATELIMIT_BELOW_DOMAIN 457 +#define VAR_IP_RATELIMIT_FACTOR 458 +#define VAR_RATELIMIT_FACTOR 459 +#define VAR_SEND_CLIENT_SUBNET 460 +#define VAR_CLIENT_SUBNET_ZONE 461 +#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 462 +#define VAR_CLIENT_SUBNET_OPCODE 463 +#define VAR_MAX_CLIENT_SUBNET_IPV4 464 +#define VAR_MAX_CLIENT_SUBNET_IPV6 465 +#define VAR_MIN_CLIENT_SUBNET_IPV4 466 +#define VAR_MIN_CLIENT_SUBNET_IPV6 467 +#define VAR_MAX_ECS_TREE_SIZE_IPV4 468 +#define VAR_MAX_ECS_TREE_SIZE_IPV6 469 +#define VAR_CAPS_WHITELIST 470 +#define VAR_CACHE_MAX_NEGATIVE_TTL 471 +#define VAR_PERMIT_SMALL_HOLDDOWN 472 +#define VAR_QNAME_MINIMISATION 473 +#define VAR_QNAME_MINIMISATION_STRICT 474 +#define VAR_IP_FREEBIND 475 +#define VAR_DEFINE_TAG 476 +#define VAR_LOCAL_ZONE_TAG 477 +#define VAR_ACCESS_CONTROL_TAG 478 +#define VAR_LOCAL_ZONE_OVERRIDE 479 +#define VAR_ACCESS_CONTROL_TAG_ACTION 480 +#define VAR_ACCESS_CONTROL_TAG_DATA 481 +#define VAR_VIEW 482 +#define VAR_ACCESS_CONTROL_VIEW 483 +#define VAR_VIEW_FIRST 484 +#define VAR_SERVE_EXPIRED 485 +#define VAR_SERVE_EXPIRED_TTL 486 +#define VAR_SERVE_EXPIRED_TTL_RESET 487 +#define VAR_SERVE_EXPIRED_REPLY_TTL 488 +#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 489 +#define VAR_SERVE_ORIGINAL_TTL 490 +#define VAR_FAKE_DSA 491 +#define VAR_FAKE_SHA1 492 +#define VAR_LOG_IDENTITY 493 +#define VAR_HIDE_TRUSTANCHOR 494 +#define VAR_HIDE_HTTP_USER_AGENT 495 +#define VAR_HTTP_USER_AGENT 496 +#define VAR_TRUST_ANCHOR_SIGNALING 497 +#define VAR_AGGRESSIVE_NSEC 498 +#define VAR_USE_SYSTEMD 499 +#define VAR_SHM_ENABLE 500 +#define VAR_SHM_KEY 501 +#define VAR_ROOT_KEY_SENTINEL 502 +#define VAR_DNSCRYPT 503 +#define VAR_DNSCRYPT_ENABLE 504 +#define VAR_DNSCRYPT_PORT 505 +#define VAR_DNSCRYPT_PROVIDER 506 +#define VAR_DNSCRYPT_SECRET_KEY 507 +#define VAR_DNSCRYPT_PROVIDER_CERT 508 +#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 509 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 510 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 511 +#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 512 +#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 513 +#define VAR_PAD_RESPONSES 514 +#define VAR_PAD_RESPONSES_BLOCK_SIZE 515 +#define VAR_PAD_QUERIES 516 +#define VAR_PAD_QUERIES_BLOCK_SIZE 517 +#define VAR_IPSECMOD_ENABLED 518 +#define VAR_IPSECMOD_HOOK 519 +#define VAR_IPSECMOD_IGNORE_BOGUS 520 +#define VAR_IPSECMOD_MAX_TTL 521 +#define VAR_IPSECMOD_WHITELIST 522 +#define VAR_IPSECMOD_STRICT 523 +#define VAR_CACHEDB 524 +#define VAR_CACHEDB_BACKEND 525 +#define VAR_CACHEDB_SECRETSEED 526 +#define VAR_CACHEDB_REDISHOST 527 +#define VAR_CACHEDB_REDISPORT 528 +#define VAR_CACHEDB_REDISTIMEOUT 529 +#define VAR_CACHEDB_REDISEXPIRERECORDS 530 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 531 +#define VAR_FOR_UPSTREAM 532 +#define VAR_AUTH_ZONE 533 +#define VAR_ZONEFILE 534 +#define VAR_MASTER 535 +#define VAR_URL 536 +#define VAR_FOR_DOWNSTREAM 537 +#define VAR_FALLBACK_ENABLED 538 +#define VAR_TLS_ADDITIONAL_PORT 539 +#define VAR_LOW_RTT 540 +#define VAR_LOW_RTT_PERMIL 541 +#define VAR_FAST_SERVER_PERMIL 542 +#define VAR_FAST_SERVER_NUM 543 +#define VAR_ALLOW_NOTIFY 544 +#define VAR_TLS_WIN_CERT 545 +#define VAR_TCP_CONNECTION_LIMIT 546 +#define VAR_FORWARD_NO_CACHE 547 +#define VAR_STUB_NO_CACHE 548 +#define VAR_LOG_SERVFAIL 549 +#define VAR_DENY_ANY 550 +#define VAR_UNKNOWN_SERVER_TIME_LIMIT 551 +#define VAR_LOG_TAG_QUERYREPLY 552 +#define VAR_STREAM_WAIT_SIZE 553 +#define VAR_TLS_CIPHERS 554 +#define VAR_TLS_CIPHERSUITES 555 +#define VAR_TLS_USE_SNI 556 +#define VAR_IPSET 557 +#define VAR_IPSET_NAME_V4 558 +#define VAR_IPSET_NAME_V6 559 +#define VAR_TLS_SESSION_TICKET_KEYS 560 +#define VAR_RPZ 561 +#define VAR_TAGS 562 +#define VAR_RPZ_ACTION_OVERRIDE 563 +#define VAR_RPZ_CNAME_OVERRIDE 564 +#define VAR_RPZ_LOG 565 +#define VAR_RPZ_LOG_NAME 566 +#define VAR_DYNLIB 567 +#define VAR_DYNLIB_FILE 568 +#define VAR_EDNS_CLIENT_STRING 569 +#define VAR_EDNS_CLIENT_STRING_OPCODE 570 +#define VAR_NSID 571 +#define VAR_ZONEMD_PERMISSIVE_MODE 572 +#define VAR_ZONEMD_CHECK 573 +#define VAR_ZONEMD_REJECT_ABSENCE 574 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -701,7 +704,7 @@ union YYSTYPE char* str; -#line 705 "util/configparser.h" +#line 708 "util/configparser.h" }; typedef union YYSTYPE YYSTYPE; From b13bcab0898d090323ae13bc27b3afaf82930a51 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 12 Aug 2021 15:14:22 +0200 Subject: [PATCH 353/553] - For #519: fix comments for doxygen. --- doc/Changelog | 1 + libunbound/worker.h | 2 ++ 2 files changed, 3 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 6e42c649b..879301387 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -10,6 +10,7 @@ the example configuration file. - For #519: yacc and lex. And fix python bindings, and test program unbound-dnstap-socket. + - For #519: fix comments for doxygen. 5 August 2021: Wouter - Tag for 1.13.2rc1 release. diff --git a/libunbound/worker.h b/libunbound/worker.h index c1fc8e784..f50369f87 100644 --- a/libunbound/worker.h +++ b/libunbound/worker.h @@ -62,6 +62,7 @@ struct query_info; * @param addrlen: length of addr. * @param zone: delegation point name. * @param zonelen: length of zone name wireformat dname. + * @param tcp_upstream: use TCP for upstream queries. * @param ssl_upstream: use SSL for upstream queries. * @param tls_auth_name: if ssl_upstream, use this name with TLS * authentication. @@ -113,6 +114,7 @@ void worker_sighandler(int sig, void* arg); * @param addrlen: length of addr. * @param zone: wireformat dname of the zone. * @param zonelen: length of zone name. + * @param tcp_upstream: use TCP for upstream queries. * @param ssl_upstream: use SSL for upstream queries. * @param tls_auth_name: if ssl_upstream, use this name with TLS * authentication. From fdae4cdbbb132296b3b8654a0747d61ddb6b4a25 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 12 Aug 2021 16:06:02 +0200 Subject: [PATCH 354/553] - Fix to print error from unbound-anchor for writing to the key file, also when not verbose. --- doc/Changelog | 2 ++ smallapp/unbound-anchor.c | 8 ++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 879301387..8deb1c73f 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -11,6 +11,8 @@ - For #519: yacc and lex. And fix python bindings, and test program unbound-dnstap-socket. - For #519: fix comments for doxygen. + - Fix to print error from unbound-anchor for writing to the key + file, also when not verbose. 5 August 2021: Wouter - Tag for 1.13.2rc1 release. diff --git a/smallapp/unbound-anchor.c b/smallapp/unbound-anchor.c index 3e6fc6e6f..3bc25a10c 100644 --- a/smallapp/unbound-anchor.c +++ b/smallapp/unbound-anchor.c @@ -2044,13 +2044,13 @@ write_builtin_anchor(const char* file) const char* builtin_root_anchor = get_builtin_ds(); FILE* out = fopen(file, "w"); if(!out) { - if(verb) printf("%s: %s\n", file, strerror(errno)); - if(verb) printf(" could not write builtin anchor\n"); + printf("could not write builtin anchor, to file %s: %s\n", + file, strerror(errno)); return; } if(!fwrite(builtin_root_anchor, strlen(builtin_root_anchor), 1, out)) { - if(verb) printf("%s: %s\n", file, strerror(errno)); - if(verb) printf(" could not complete write builtin anchor\n"); + printf("could not complete write builtin anchor, to file %s: %s\n", + file, strerror(errno)); } fclose(out); } From 3b8b2e0dc721363a7c704d9de745c73737c0791b Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Thu, 12 Aug 2021 21:43:18 +0200 Subject: [PATCH 355/553] Changelog note for #514: - Merge PR #514, from ziollek: Docker environment for run tests. --- doc/Changelog | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 8deb1c73f..64621ef68 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +12 August 2021: George + - Merge PR #514, from ziollek: Docker environment for run tests. + 12 August 2021: Wouter - And 1.13.2rc1 became the 1.13.2 with the fix for the python module build. The current code repository continues with version 1.13.3. From a158f365b9b2d0b82960f8d7a89d016922be2fbf Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Thu, 12 Aug 2021 21:46:30 +0200 Subject: [PATCH 356/553] - For #514: generate configure. --- configure | 7 +++++++ doc/Changelog | 1 + 2 files changed, 8 insertions(+) diff --git a/configure b/configure index 4d01e3421..f5185fc5b 100755 --- a/configure +++ b/configure @@ -682,6 +682,7 @@ SSLLIB HAVE_SSL PC_CRYPTO_DEPENDENCY CONFIG_DATE +GCC_DOCKER_LINTFLAGS NETBSD_LINTFLAGS PYUNBOUND_UNINSTALL PYUNBOUND_INSTALL @@ -17887,6 +17888,12 @@ fi if test "`uname`" = "NetBSD"; then NETBSD_LINTFLAGS='"-D__RENAME(x)=" -D_NETINET_IN_H_' +fi + +if test "`uname -o`" = "GNU/Linux"; then + # splint cannot parse modern c99 header files + GCC_DOCKER_LINTFLAGS='-syntax' + fi CONFIG_DATE=`date +%Y%m%d` diff --git a/doc/Changelog b/doc/Changelog index 64621ef68..f518a972f 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,6 @@ 12 August 2021: George - Merge PR #514, from ziollek: Docker environment for run tests. + - For #514: generate configure. 12 August 2021: Wouter - And 1.13.2rc1 became the 1.13.2 with the fix for the python module From de31bcdf2ebe302d5befb866973f812f9ad87333 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 13 Aug 2021 09:21:47 +0200 Subject: [PATCH 357/553] - Support using system-wide crypto policies. --- doc/Changelog | 3 +++ util/net_help.c | 7 +++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index f518a972f..62c747c85 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +13 August 2021: Wouter + - Support using system-wide crypto policies. + 12 August 2021: George - Merge PR #514, from ziollek: Docker environment for run tests. - For #514: generate configure. diff --git a/util/net_help.c b/util/net_help.c index 06bc1f5dd..b2d2061c9 100644 --- a/util/net_help.c +++ b/util/net_help.c @@ -945,9 +945,12 @@ listen_sslctx_setup(void* ctxt) } #endif #if defined(SHA256_DIGEST_LENGTH) && defined(USE_ECDSA) + /* if we detect system-wide crypto policies, use those */ + if (access( "/etc/crypto-policies/config", F_OK ) != 0 ) { /* if we have sha256, set the cipher list to have no known vulns */ - if(!SSL_CTX_set_cipher_list(ctx, "TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-256-GCM-SHA384:TLS13-AES-128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256")) - log_crypto_err("could not set cipher list with SSL_CTX_set_cipher_list"); + if(!SSL_CTX_set_cipher_list(ctx, "TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-256-GCM-SHA384:TLS13-AES-128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256")) + log_crypto_err("could not set cipher list with SSL_CTX_set_cipher_list"); + } #endif if((SSL_CTX_set_options(ctx, SSL_OP_CIPHER_SERVER_PREFERENCE) & From ad45e9b89ee18bbfeff0ed45da2c243ac17acfe6 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 13 Aug 2021 09:27:58 +0200 Subject: [PATCH 358/553] - Fix for #431: Squelch permission denied errors for udp connect, and udp send, they are visible at higher verbosity settings. --- doc/Changelog | 2 ++ services/outside_network.c | 1 + util/netevent.c | 1 + 3 files changed, 4 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 62c747c85..1cd0f3bad 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,7 @@ 13 August 2021: Wouter - Support using system-wide crypto policies. + - Fix for #431: Squelch permission denied errors for udp connect, + and udp send, they are visible at higher verbosity settings. 12 August 2021: George - Merge PR #514, from ziollek: Docker environment for run tests. diff --git a/services/outside_network.c b/services/outside_network.c index a3f982e72..666e46f98 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -1962,6 +1962,7 @@ static int udp_connect_needs_log(int err) case ENETDOWN: # endif case EPERM: + case EACCES: if(verbosity >= VERB_ALGO) return 1; return 0; diff --git a/util/netevent.c b/util/netevent.c index 11c642a2b..e3eed838f 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -300,6 +300,7 @@ udp_send_errno_needs_log(struct sockaddr* addr, socklen_t addrlen) case ENETDOWN: # endif case EPERM: + case EACCES: if(verbosity < VERB_ALGO) return 0; default: From c8c2dfff222268ba0bc26f6b286239620746ef58 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 13 Aug 2021 14:43:11 +0200 Subject: [PATCH 359/553] - Fix zonemd verification of key that is not in DNS but in the zone and needs a chain of trust. --- doc/Changelog | 2 + services/authzone.c | 149 +++++++-- services/authzone.h | 2 + testdata/auth_zonemd_xfr_chain_keyinxfr.rpl | 315 ++++++++++++++++++++ 4 files changed, 442 insertions(+), 26 deletions(-) create mode 100644 testdata/auth_zonemd_xfr_chain_keyinxfr.rpl diff --git a/doc/Changelog b/doc/Changelog index 1cd0f3bad..c1548dd67 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -2,6 +2,8 @@ - Support using system-wide crypto policies. - Fix for #431: Squelch permission denied errors for udp connect, and udp send, they are visible at higher verbosity settings. + - Fix zonemd verification of key that is not in DNS but in the zone + and needs a chain of trust. 12 August 2021: George - Merge PR #514, from ziollek: Docker environment for run tests. diff --git a/services/authzone.c b/services/authzone.c index e6e3a8cff..71b0331ca 100644 --- a/services/authzone.c +++ b/services/authzone.c @@ -8065,15 +8065,77 @@ zonemd_get_dnskey_from_anchor(struct auth_zone* z, struct module_env* env, return NULL; } +/** verify the DNSKEY from the zone with looked up DS record */ +static struct ub_packed_rrset_key* +auth_zone_verify_zonemd_key_with_ds(struct auth_zone* z, + struct module_env* env, struct module_stack* mods, + struct ub_packed_rrset_key* ds, int* is_insecure, char** why_bogus, + struct ub_packed_rrset_key* keystorage) +{ + struct auth_data* apex; + struct auth_rrset* dnskey_rrset; + enum sec_status sec; + struct val_env* ve; + int m; + + /* fetch DNSKEY from zone data */ + apex = az_find_name(z, z->name, z->namelen); + if(!apex) { + *why_bogus = "in verifywithDS, zone has no apex"; + return NULL; + } + dnskey_rrset = az_domain_rrset(apex, LDNS_RR_TYPE_DNSKEY); + if(!dnskey_rrset || dnskey_rrset->data->count==0) { + *why_bogus = "in verifywithDS, zone has no DNSKEY"; + return NULL; + } + + m = modstack_find(mods, "validator"); + if(m == -1) { + *why_bogus = "in verifywithDS, have no validator module"; + return NULL; + } + ve = (struct val_env*)env->modinfo[m]; + + memset(keystorage, 0, sizeof(*keystorage)); + keystorage->entry.key = keystorage; + keystorage->entry.data = dnskey_rrset->data; + keystorage->rk.dname = apex->name; + keystorage->rk.dname_len = apex->namelen; + keystorage->rk.type = htons(LDNS_RR_TYPE_DNSKEY); + keystorage->rk.rrset_class = htons(z->dclass); + auth_zone_log(z->name, VERB_QUERY, "zonemd: verify zone's DNSKEY with DS"); + sec = val_verify_DNSKEY_with_DS(env, ve, keystorage, ds, NULL, + why_bogus, NULL); + regional_free_all(env->scratch); + if(sec == sec_status_secure) { + /* success */ + return keystorage; + } else if(sec == sec_status_insecure) { + /* insecure */ + *is_insecure = 1; + } else { + /* bogus */ + *is_insecure = 0; + auth_zone_log(z->name, VERB_ALGO, + "zonemd: verify DNSKEY RRset with DS failed: %s", + *why_bogus); + if(*why_bogus == NULL) + *why_bogus = "verify failed"; + } + return NULL; +} + /** callback for ZONEMD lookup of DNSKEY */ void auth_zonemd_dnskey_lookup_callback(void* arg, int rcode, sldns_buffer* buf, enum sec_status sec, char* why_bogus, int ATTR_UNUSED(was_ratelimited)) { struct auth_zone* z = (struct auth_zone*)arg; struct module_env* env; - char* reason = NULL; - struct ub_packed_rrset_key* dnskey = NULL; + char* reason = NULL, *ds_bogus = NULL, *typestr="DNSKEY"; + struct ub_packed_rrset_key* dnskey = NULL, *ds = NULL; int is_insecure = 0; + struct ub_packed_rrset_key keystorage; lock_rw_wrlock(&z->lock); env = z->zonemd_callback_env; @@ -8084,16 +8146,21 @@ void auth_zonemd_dnskey_lookup_callback(void* arg, int rcode, sldns_buffer* buf, lock_rw_unlock(&z->lock); return; /* stop on quit */ } + if(z->zonemd_callback_qtype == LDNS_RR_TYPE_DS) + typestr = "DS"; /* process result */ if(sec == sec_status_bogus) { reason = why_bogus; - if(!reason) - reason = "lookup of DNSKEY was bogus"; + if(!reason) { + if(z->zonemd_callback_qtype == LDNS_RR_TYPE_DNSKEY) + reason = "lookup of DNSKEY was bogus"; + else reason = "lookup of DS was bogus"; + } auth_zone_log(z->name, VERB_ALGO, - "zonemd lookup of DNSKEY was bogus: %s", reason); + "zonemd lookup of %s was bogus: %s", typestr, reason); } else if(rcode == LDNS_RCODE_NOERROR) { - uint16_t wanted_qtype = LDNS_RR_TYPE_DNSKEY; + uint16_t wanted_qtype = z->zonemd_callback_qtype; struct regional* temp = env->scratch; struct query_info rq; struct reply_info* rep; @@ -8106,25 +8173,29 @@ void auth_zonemd_dnskey_lookup_callback(void* arg, int rcode, sldns_buffer* buf, struct ub_packed_rrset_key* answer = reply_find_answer_rrset(&rq, rep); if(answer && sec == sec_status_secure) { - dnskey = answer; + if(z->zonemd_callback_qtype == LDNS_RR_TYPE_DNSKEY) + dnskey = answer; + else ds = answer; auth_zone_log(z->name, VERB_ALGO, - "zonemd lookup of DNSKEY was secure"); + "zonemd lookup of %s was secure", typestr); } else if(sec == sec_status_secure && !answer) { is_insecure = 1; auth_zone_log(z->name, VERB_ALGO, - "zonemd lookup of DNSKEY has no content, but is secure, treat as insecure"); + "zonemd lookup of %s has no content, but is secure, treat as insecure", typestr); } else if(sec == sec_status_insecure) { is_insecure = 1; auth_zone_log(z->name, VERB_ALGO, - "zonemd lookup of DNSKEY was insecure"); + "zonemd lookup of %s was insecure", typestr); } else if(sec == sec_status_indeterminate) { is_insecure = 1; auth_zone_log(z->name, VERB_ALGO, - "zonemd lookup of DNSKEY was indeterminate, treat as insecure"); + "zonemd lookup of %s was indeterminate, treat as insecure", typestr); } else { auth_zone_log(z->name, VERB_ALGO, - "zonemd lookup of DNSKEY has nodata"); - reason = "lookup of DNSKEY has nodata"; + "zonemd lookup of %s has nodata", typestr); + if(z->zonemd_callback_qtype == LDNS_RR_TYPE_DNSKEY) + reason = "lookup of DNSKEY has nodata"; + else reason = "lookup of DS has nodata"; } } else if(rep && rq.qtype == wanted_qtype && query_dname_compare(z->name, rq.qname) == 0 && @@ -8137,34 +8208,46 @@ void auth_zonemd_dnskey_lookup_callback(void* arg, int rcode, sldns_buffer* buf, * trust, as insecure. */ is_insecure = 1; auth_zone_log(z->name, VERB_ALGO, - "zonemd lookup of DNSKEY was secure NXDOMAIN, treat as insecure"); + "zonemd lookup of %s was secure NXDOMAIN, treat as insecure", typestr); } else if(rep && rq.qtype == wanted_qtype && query_dname_compare(z->name, rq.qname) == 0 && FLAGS_GET_RCODE(rep->flags) == LDNS_RCODE_NXDOMAIN && sec == sec_status_insecure) { is_insecure = 1; auth_zone_log(z->name, VERB_ALGO, - "zonemd lookup of DNSKEY was insecure NXDOMAIN, treat as insecure"); + "zonemd lookup of %s was insecure NXDOMAIN, treat as insecure", typestr); } else if(rep && rq.qtype == wanted_qtype && query_dname_compare(z->name, rq.qname) == 0 && FLAGS_GET_RCODE(rep->flags) == LDNS_RCODE_NXDOMAIN && sec == sec_status_indeterminate) { is_insecure = 1; auth_zone_log(z->name, VERB_ALGO, - "zonemd lookup of DNSKEY was indeterminate NXDOMAIN, treat as insecure"); + "zonemd lookup of %s was indeterminate NXDOMAIN, treat as insecure", typestr); } else { auth_zone_log(z->name, VERB_ALGO, - "zonemd lookup of DNSKEY has no answer"); - reason = "lookup of DNSKEY has no answer"; + "zonemd lookup of %s has no answer", typestr); + if(z->zonemd_callback_qtype == LDNS_RR_TYPE_DNSKEY) + reason = "lookup of DNSKEY has no answer"; + else reason = "lookup of DS has no answer"; } } else { auth_zone_log(z->name, VERB_ALGO, - "zonemd lookup of DNSKEY failed"); - reason = "lookup of DNSKEY failed"; + "zonemd lookup of %s failed", typestr); + if(z->zonemd_callback_qtype == LDNS_RR_TYPE_DNSKEY) + reason = "lookup of DNSKEY failed"; + else reason = "lookup of DS failed"; + } + + if(!reason && !is_insecure && !dnskey && ds) { + dnskey = auth_zone_verify_zonemd_key_with_ds(z, env, + &env->mesh->mods, ds, &is_insecure, &ds_bogus, + &keystorage); + if(!dnskey && !is_insecure && !reason) + reason = "DNSKEY verify with DS failed"; } if(reason) { - auth_zone_zonemd_fail(z, env, reason, NULL, NULL); + auth_zone_zonemd_fail(z, env, reason, ds_bogus, NULL); lock_rw_unlock(&z->lock); return; } @@ -8183,14 +8266,21 @@ zonemd_lookup_dnskey(struct auth_zone* z, struct module_env* env) uint16_t qflags = BIT_RD; struct edns_data edns; sldns_buffer* buf = env->scratch_buffer; + int fetch_ds = 0; + if(!z->fallback_enabled) { + /* we cannot actually get the DNSKEY, because it is in the + * zone we have ourselves, and it is not served yet + * (possibly), so fetch type DS */ + fetch_ds = 1; + } if(z->zonemd_callback_env) { /* another worker is already working on the callback * for the DNSKEY lookup for ZONEMD verification. * We do not also have to do ZONEMD verification, let that * worker do it */ auth_zone_log(z->name, VERB_ALGO, - "zonemd needs lookup of DNSKEY and that already worked on by another worker"); + "zonemd needs lookup of %s and that already is worked on by another worker", (fetch_ds?"DS":"DNSKEY")); return 1; } @@ -8199,14 +8289,17 @@ zonemd_lookup_dnskey(struct auth_zone* z, struct module_env* env) qinfo.qname_len = z->namelen; qinfo.qname = z->name; qinfo.qclass = z->dclass; - qinfo.qtype = LDNS_RR_TYPE_DNSKEY; + if(fetch_ds) + qinfo.qtype = LDNS_RR_TYPE_DS; + else qinfo.qtype = LDNS_RR_TYPE_DNSKEY; qinfo.local_alias = NULL; if(verbosity >= VERB_ALGO) { char buf1[512]; char buf2[LDNS_MAX_DOMAINLEN+1]; dname_str(z->name, buf2); - snprintf(buf1, sizeof(buf1), "auth zone %s: lookup DNSKEY " - "for zonemd verification", buf2); + snprintf(buf1, sizeof(buf1), "auth zone %s: lookup %s " + "for zonemd verification", buf2, + (fetch_ds?"DS":"DNSKEY")); log_query_info(VERB_ALGO, buf1, &qinfo); } edns.edns_present = 1; @@ -8221,12 +8314,14 @@ zonemd_lookup_dnskey(struct auth_zone* z, struct module_env* env) /* store the worker-specific module env for the callback. * We can then reference this when the callback executes */ z->zonemd_callback_env = env; + z->zonemd_callback_qtype = qinfo.qtype; /* the callback can be called straight away */ lock_rw_unlock(&z->lock); if(!mesh_new_callback(env->mesh, &qinfo, qflags, &edns, buf, 0, &auth_zonemd_dnskey_lookup_callback, z)) { lock_rw_wrlock(&z->lock); - log_err("out of memory lookup up dnskey for zonemd"); + log_err("out of memory lookup of %s for zonemd", + (fetch_ds?"DS":"DNSKEY")); return 0; } lock_rw_wrlock(&z->lock); @@ -8245,6 +8340,8 @@ void auth_zone_verify_zonemd(struct auth_zone* z, struct module_env* env, * If not present check if absence is allowed by DNSSEC */ if(!z->zonemd_check) return; + if(z->data.count == 0) + return; /* no data */ /* if zone is under a trustanchor */ /* is it equal to trustanchor - get dnskey's verified */ diff --git a/services/authzone.h b/services/authzone.h index ffe234d59..1c6d5cf42 100644 --- a/services/authzone.h +++ b/services/authzone.h @@ -143,6 +143,8 @@ struct auth_zone { * worker has already picked up the zonemd verification task and * this worker does not have to do it as well. */ struct module_env* zonemd_callback_env; + /** for the zonemd callback, the type of data looked up */ + uint16_t zonemd_callback_qtype; /** zone has been deleted */ int zone_deleted; /** deletelist pointer, unused normally except during delete */ diff --git a/testdata/auth_zonemd_xfr_chain_keyinxfr.rpl b/testdata/auth_zonemd_xfr_chain_keyinxfr.rpl new file mode 100644 index 000000000..2feec88c0 --- /dev/null +++ b/testdata/auth_zonemd_xfr_chain_keyinxfr.rpl @@ -0,0 +1,315 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + trust-anchor: "com. DS 1444 8 2 0d72034e3e18a9ef383c164b68302433bbde957616e10cf44575fea2abae469c" + trust-anchor-signaling: no + val-override-date: 20201020135527 + +auth-zone: + name: "example.com." + ## zonefile (or none). + ## zonefile: "example.com.zone" + ## master by IP address or hostname + ## can list multiple masters, each on one line. + ## master: + master: 1.2.3.44 + ## url for http fetch + ## url: + ## queries from downstream clients get authoritative answers. + ## for-downstream: yes + + ## The for-downstream and fallback are disabled, the key cannot be + ## retrieved by DNS lookup, it is in the xfr itself. + ## only after the zone is loaded can it be looked up. + for-downstream: no + ## queries are used to fetch authoritative answers from this zone, + ## instead of unbound itself sending queries there. + ## for-upstream: yes + for-upstream: yes + ## on failures with for-upstream, fallback to sending queries to + ## the authority servers + ## fallback-enabled: no + fallback-enabled: no + zonemd-check: yes + + ## this line generates zonefile: \n"/tmp/xxx.example.com"\n + zonefile: +TEMPFILE_NAME example.com + ## this is the inline file /tmp/xxx.example.com + ## the tempfiles are deleted when the testrun is over. +TEMPFILE_CONTENTS example.com +TEMPFILE_END + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test authority zone with AXFR with ZONEMD with key in xfr + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qname qtype +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN DS +SECTION ANSWER +example.com. 3600 IN DS 55566 8 2 9c148338951ce1c3b5cd3da532f3d90dfcf92595148022f2c2fd98e5deee90af +example.com. 3600 IN RRSIG DS 8 2 3600 20201116135527 20201019135527 1444 com. BpV1M171SSkbdlGawwweJwQ0W+aNaCrgkt2QTsxCvbo1acR5i3AKm4REOUzo4I36lRx26mYkF9Topkeu0aFmov7P2uUhCxk4faFK7k87k97FAqZaDGp/K9b3YCfiwJBc5pJSUW0ndU/Ve5zAh/wL493RMSC7LwJr5JjV0NxydFk= +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN DS 55566 8 2 9c148338951ce1c3b5cd3da532f3d90dfcf92595148022f2c2fd98e5deee90af +example.com. 3600 IN RRSIG DS 8 2 3600 20201116135527 20201019135527 1444 com. BpV1M171SSkbdlGawwweJwQ0W+aNaCrgkt2QTsxCvbo1acR5i3AKm4REOUzo4I36lRx26mYkF9Topkeu0aFmov7P2uUhCxk4faFK7k87k97FAqZaDGp/K9b3YCfiwJBc5pJSUW0ndU/Ve5zAh/wL493RMSC7LwJr5JjV0NxydFk= +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +com. IN DNSKEY +SECTION ANSWER +com. 3600 IN DNSKEY 257 3 8 AwEAAbd9WqjzE2Pynz21OG5doSf9hFzMr5dhzz2waZ3vTa+0o5r7AjTAqmA1yH/B3+aAMihUm5ucZSfVqo7+kOaRE8yFj9aivOmA1n1+JLevJq/oyvQyjxQN2Qb89LyaNUT5oKZIiL+uyyhNW3KDR3SSbQ/GBwQNDHVcZi+JDR3RC0r7 ;{id = 1444 (ksk), size = 1024b} +com. 3600 IN RRSIG DNSKEY 8 1 3600 20201116135527 20201019135527 1444 com. BEOMfWvi6RgnHaHsst+Ed265hBuCkgMR7gDpu89J7ZrVL6DzMKnNVFdgjl/9xwLj/pkukc7qeLSHjAfLlN0E4THW7PVshscQnjvXCkktG2Ejx9fTyllAqeGDh9z9QDGlQZIGTMgb9413qZhNqe2Tda9PTJRpiZ8b4bdQp6V1kVo= +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.44 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION ANSWER +ns.example.net. IN A 1.2.3.44 +SECTION AUTHORITY +example.net. IN NS ns.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +www.example.net. IN A 1.2.3.44 +ENTRY_END + +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.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN SOA +SECTION ANSWER +; serial, refresh, retry, expire, minimum +example.com. IN SOA ns.example.com. hostmaster.example.com. 1 3600 900 86400 3600 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +example.com. IN AXFR +SECTION ANSWER +example.com. 3600 IN SOA ns.example.com. hostmaster.example.com. 200154054 28800 7200 604800 3600 +example.com. 3600 IN RRSIG SOA 8 2 3600 20201116135527 20201019135527 55566 example.com. gcFHT/Q4iDZ78CK6fyY2HZr8sRtgH2Rna9fEs06RW0gqMnfDntweoIaBamOZ7NlAP84aY2bZeanmEccmkHexByUpodCoKQ4NzVXctLr0TO4PVoFyfUfj62fjhM56SF8ioDxsoDQcPtYXcjNQjwfntWofMqHCMxrb9LzbgePzhOM= +example.com. 3600 IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 8 2 3600 20201116135527 20201019135527 55566 example.com. X+V3XsbJbBi9OsHpjMkGCox8RLY/uXp/XX/O/flTrIre9fMDWm9ZGnewtuQFpLgGc6hUTi0eLsuRWRA5fZXEKUBhmoR2Ph01KgE1gvlL7v6zPWQwXVcBRUr3mOSbYdNNkHkXEjiDBGEhNkfqR216zNgw563eEGXOkLUFNIx5Zpg= +example.com. 3600 IN DNSKEY 256 3 8 AwEAAdug/L739i0mgN2nuK/bhxu3wFn5Ud9nK2+XUmZQlPUEZUC5YZvm1rfMmEWTGBn87fFxEu/kjFZHJ55JLzqsbbpVHLbmKCTT2gYR2FV2WDKROGKuYbVkJIXdKAjJ0ONuK507NinYvlWXIoxHn22KAWOd9wKgSTNHBlmGkX+ts3hh ;{id = 55566 (zsk), size = 1024b} +example.com. 3600 IN RRSIG DNSKEY 8 2 3600 20201116135527 20201019135527 55566 example.com. fsdnVg38PKQTH2mDOwkXL6Jre7JP7Gf8WI3CvIbmeYQUJtAlpcSbZkS3wInm3kKMxOuT55BWzndQzpfmpo91OqJjG27W0k9301NMLUwFprA6b9HK+iPAT0JpYPDPzcm1bQdarLzLS+eD/GPwmyVSX7Gze+08VfE8m8sOW2r7UjA= +example.com. 3600 IN TYPE63 \# 70 0bee1bc6010258f7620f93204bbb31b44f795b3409cc4abd9ef5601decc15675bd7751213152984eddce0626e6062e744b03b3e47711202fbb79e4a2eb8bc5cf46741b5cae6f +example.com. 3600 IN RRSIG TYPE63 8 2 3600 20201116135527 20201019135527 55566 example.com. orn8ZF/yqj9u4WrhiO6gtEcTaVsnZSWWZLfXhcIOiWSB8kKCxtZl5cG17dD3Du1NllUwMRqkp0KleLhIoUS9xeQ/0x05u+CYLrfQ62oAiD7q54ZQzpXJIH52aQzKV70ZnO03CZowhQBnetmIoKX6xLogKo8pt+BdQbo3oVHxV8Y= +example.com. 3600 IN NSEC bar.example.com. NS SOA RRSIG NSEC DNSKEY TYPE63 +example.com. 3600 IN RRSIG NSEC 8 2 3600 20201116135527 20201019135527 55566 example.com. ufLrlOQprAqjnH85Rt3T0Mxd3ZB0mBeeNIr84eFJ8Rk6WiWEPm0Y1R7GRufNI24Mj7iqLcL4nJM6KK6B7dJqjqu73jw1acuYNnbsoV2BNDRXRFP2FNWTpctVdi+955f3FzgsmEJXfGiSUG0YXAEcZmdCPCn5ii2jk8mk7r6KKYo= +bar.example.com. 3600 IN A 1.2.3.4 +bar.example.com. 3600 IN RRSIG A 8 3 3600 20201116135527 20201019135527 55566 example.com. NYhmRicF4C9+YxpWeQrepy4ALM1CM0USoDuGi3W5Xtp4/+YpCJfSIdR9vlJaJ2WayYuZrz9Ai2ci7oWwE1Fn3oywGwCKvGo9m0c3mC2eEtphE19wrop6pWu6um4RiFhmzYS1voraA3PAdYzze9U4NHzlk0+sb5vNZW9dSZS30Ds= +bar.example.com. 3600 IN NSEC ding.example.com. A RRSIG NSEC +bar.example.com. 3600 IN RRSIG NSEC 8 3 3600 20201116135527 20201019135527 55566 example.com. VhsGuBx20DXQZNU8ITAMnasn6NVyEjN9xtB8msH5xJn80UCuaqvFBURzcPWN3aHnykEvGfdPF/9P3WvlON0cMikWkqSLy6Q9bpvgAq13HWYh+ZcDoqLtICaB7RkBQc+6aHAqZFyQbD8/m8Kxt5eVJtV6rEuf+yPX0+3aXHhsRg0= +ding.example.com. 3600 IN A 1.2.3.4 +ding.example.com. 3600 IN RRSIG A 8 3 3600 20201116135527 20201019135527 55566 example.com. OERsruISkpd1s68ute8Xm8YXisBCTkkiDMt34K+0dVqvySOJq63d3qN18BeUxZxLyHDB1eR3nZZKqEdkTqrv2r98skhWhjnOECpFbu5gKjtN/KPexbbJ+rxC0QqciuWOC7M6YE0cvI17/RB9KhVRy5rqY2X4Gt2wk2CNeD1dAko= +ding.example.com. 3600 IN NSEC foo.example.com. A RRSIG NSEC +ding.example.com. 3600 IN RRSIG NSEC 8 3 3600 20201116135527 20201019135527 55566 example.com. nb1W2aaKrU5iAQiY8gMsoMOejID19JMTEwY2rRoe+KsvzMs0rE0ifEkqit4blXaU0tfy0foJ70uqdJFqBoGz1NcSwZ6GNk/iNfGvG3XpxZ/zqEe7kkIucqqei794G7z9psqV94yZ3WaT+IswPpWrSaWv1w41RtcWufPhe4fOAmU= +foo.example.com. 3600 IN A 1.2.3.4 +foo.example.com. 3600 IN RRSIG A 8 3 3600 20201116135527 20201019135527 55566 example.com. ZcUngb2pUejwnsshbJN/Dfr+Bzu8fcZXyqLArQ+10Bw1IPHyfx7yyUJ43V5tTYVHPSEsJzTnaWj+olVrNhVZxq5e0pgzSYPfGln2FEItEvMIOn33j8yKTpPW2MLyuFF5ZkXhosG20EUwRMvMmRHRz9mIZfwWoMbSGPukmLh8zMA= +foo.example.com. 3600 IN NSEC ns.example.com. A RRSIG NSEC +foo.example.com. 3600 IN RRSIG NSEC 8 3 3600 20201116135527 20201019135527 55566 example.com. fUZEpkEULRWDntN5Z7Kr8M83Hjhf08ECMKRpo6IBoBc3ayenj+YMgWAvFXC825wjENPYYWNGag0d32U83zCZxqgv+8uXZd3B7QDpTbL41aWZdc++s5YWTkYjyOWwJ1XHOv4nL3qEnJBXVzo/E1gbSKhTFuG97i+7J1MFd9MsC5s= +ns.example.com. 3600 IN A 127.0.0.1 +ns.example.com. 3600 IN RRSIG A 8 3 3600 20201116135527 20201019135527 55566 example.com. SiuxuPtN/ITd+Z20j8UNUHJWbLHirE8zQOWMv5fAZ1rPKpAidrZgUL8J417GdrTwkueU2ywAJ7EzFJSwNTa7o/wUnq7svmOR6Ze6UQsKuZFZGEfqPNDRp4YuF86LU5jChuo+f/IRpydHrxVwGxDPCR9KarDM+ewfW+yI5bZeZcg= +ns.example.com. 3600 IN NSEC www.example.com. A RRSIG NSEC +ns.example.com. 3600 IN RRSIG NSEC 8 3 3600 20201116135527 20201019135527 55566 example.com. 0upKNYjiow4NDJm3I1RbUddE9GGuFYEVKswww5BAc/6WHuukupncL30lskvcSKGpByDssP2Hi2CufyEtYeGWh6q1TxtOFRqFBX1p6Q5b3tBlCtvv4h31dQR9uqLvq+GkGS5MR+0LO5kWagIpZmnI8YY5plVdXEtNbp2Ar8zvz/A= +www.example.com. 3600 IN A 127.0.0.1 +www.example.com. 3600 IN RRSIG A 8 3 3600 20201116135527 20201019135527 55566 example.com. AaIeICaPjV50TDrpbyOn94+hs8EYIMTmN4pYqj7e8GIGimqQIk5jgpwSx6SOoOF+uOqkf9GKHkQTn5YVGaeXwEQleg7mPTmMYKAOk06Y7MFUO1Vwt1Vt7Wo+Cpa3x2a1CmEkfFOi4WqP43VJnUtjjKmXoKRz3VUmqByyJYUAGbQ= +www.example.com. 3600 IN NSEC example.com. A RRSIG NSEC +www.example.com. 3600 IN RRSIG NSEC 8 3 3600 20201116135527 20201019135527 55566 example.com. meg/t6nIBqQZ0d5/dT7uu/3CuP4vE+HxqFQaj2fjUNceA/6C7QIQnqQ5Kyblg+XijDkQX0yvyFNHYdgF16UDgFT7tlNUCHk1SpF5BWzV4c4tBEhxASTz7UQo111O3Tyd6CldPzO/Se15Ud0/ZYltHEqWTfY5nJoXC/OJD9V2QOI= +example.com. 3600 IN SOA ns.example.com. hostmaster.example.com. 200154054 28800 7200 604800 3600 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 20 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +ENTRY_END + +STEP 30 TIME_PASSES ELAPSE 10 +STEP 40 TRAFFIC + +STEP 50 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 60 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 127.0.0.1 +ENTRY_END + +; the zonefile was updated with new contents +STEP 70 CHECK_TEMPFILE example.com +FILE_BEGIN +example.com. 3600 IN SOA ns.example.com. hostmaster.example.com. 200154054 28800 7200 604800 3600 +example.com. 3600 IN RRSIG SOA 8 2 3600 20201116135527 20201019135527 55566 example.com. gcFHT/Q4iDZ78CK6fyY2HZr8sRtgH2Rna9fEs06RW0gqMnfDntweoIaBamOZ7NlAP84aY2bZeanmEccmkHexByUpodCoKQ4NzVXctLr0TO4PVoFyfUfj62fjhM56SF8ioDxsoDQcPtYXcjNQjwfntWofMqHCMxrb9LzbgePzhOM= +example.com. 3600 IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 8 2 3600 20201116135527 20201019135527 55566 example.com. X+V3XsbJbBi9OsHpjMkGCox8RLY/uXp/XX/O/flTrIre9fMDWm9ZGnewtuQFpLgGc6hUTi0eLsuRWRA5fZXEKUBhmoR2Ph01KgE1gvlL7v6zPWQwXVcBRUr3mOSbYdNNkHkXEjiDBGEhNkfqR216zNgw563eEGXOkLUFNIx5Zpg= +example.com. 3600 IN NSEC bar.example.com. NS SOA RRSIG NSEC DNSKEY ZONEMD +example.com. 3600 IN RRSIG NSEC 8 2 3600 20201116135527 20201019135527 55566 example.com. ufLrlOQprAqjnH85Rt3T0Mxd3ZB0mBeeNIr84eFJ8Rk6WiWEPm0Y1R7GRufNI24Mj7iqLcL4nJM6KK6B7dJqjqu73jw1acuYNnbsoV2BNDRXRFP2FNWTpctVdi+955f3FzgsmEJXfGiSUG0YXAEcZmdCPCn5ii2jk8mk7r6KKYo= +example.com. 3600 IN DNSKEY 256 3 8 AwEAAdug/L739i0mgN2nuK/bhxu3wFn5Ud9nK2+XUmZQlPUEZUC5YZvm1rfMmEWTGBn87fFxEu/kjFZHJ55JLzqsbbpVHLbmKCTT2gYR2FV2WDKROGKuYbVkJIXdKAjJ0ONuK507NinYvlWXIoxHn22KAWOd9wKgSTNHBlmGkX+ts3hh ;{id = 55566} +example.com. 3600 IN RRSIG DNSKEY 8 2 3600 20201116135527 20201019135527 55566 example.com. fsdnVg38PKQTH2mDOwkXL6Jre7JP7Gf8WI3CvIbmeYQUJtAlpcSbZkS3wInm3kKMxOuT55BWzndQzpfmpo91OqJjG27W0k9301NMLUwFprA6b9HK+iPAT0JpYPDPzcm1bQdarLzLS+eD/GPwmyVSX7Gze+08VfE8m8sOW2r7UjA= +example.com. 3600 IN ZONEMD 200154054 1 2 58F7620F93204BBB31B44F795B3409CC4ABD9EF5601DECC15675BD7751213152984EDDCE0626E6062E744B03B3E47711202FBB79E4A2EB8BC5CF46741B5CAE6F +example.com. 3600 IN RRSIG ZONEMD 8 2 3600 20201116135527 20201019135527 55566 example.com. orn8ZF/yqj9u4WrhiO6gtEcTaVsnZSWWZLfXhcIOiWSB8kKCxtZl5cG17dD3Du1NllUwMRqkp0KleLhIoUS9xeQ/0x05u+CYLrfQ62oAiD7q54ZQzpXJIH52aQzKV70ZnO03CZowhQBnetmIoKX6xLogKo8pt+BdQbo3oVHxV8Y= +bar.example.com. 3600 IN A 1.2.3.4 +bar.example.com. 3600 IN RRSIG A 8 3 3600 20201116135527 20201019135527 55566 example.com. NYhmRicF4C9+YxpWeQrepy4ALM1CM0USoDuGi3W5Xtp4/+YpCJfSIdR9vlJaJ2WayYuZrz9Ai2ci7oWwE1Fn3oywGwCKvGo9m0c3mC2eEtphE19wrop6pWu6um4RiFhmzYS1voraA3PAdYzze9U4NHzlk0+sb5vNZW9dSZS30Ds= +bar.example.com. 3600 IN NSEC ding.example.com. A RRSIG NSEC +bar.example.com. 3600 IN RRSIG NSEC 8 3 3600 20201116135527 20201019135527 55566 example.com. VhsGuBx20DXQZNU8ITAMnasn6NVyEjN9xtB8msH5xJn80UCuaqvFBURzcPWN3aHnykEvGfdPF/9P3WvlON0cMikWkqSLy6Q9bpvgAq13HWYh+ZcDoqLtICaB7RkBQc+6aHAqZFyQbD8/m8Kxt5eVJtV6rEuf+yPX0+3aXHhsRg0= +ding.example.com. 3600 IN A 1.2.3.4 +ding.example.com. 3600 IN RRSIG A 8 3 3600 20201116135527 20201019135527 55566 example.com. OERsruISkpd1s68ute8Xm8YXisBCTkkiDMt34K+0dVqvySOJq63d3qN18BeUxZxLyHDB1eR3nZZKqEdkTqrv2r98skhWhjnOECpFbu5gKjtN/KPexbbJ+rxC0QqciuWOC7M6YE0cvI17/RB9KhVRy5rqY2X4Gt2wk2CNeD1dAko= +ding.example.com. 3600 IN NSEC foo.example.com. A RRSIG NSEC +ding.example.com. 3600 IN RRSIG NSEC 8 3 3600 20201116135527 20201019135527 55566 example.com. nb1W2aaKrU5iAQiY8gMsoMOejID19JMTEwY2rRoe+KsvzMs0rE0ifEkqit4blXaU0tfy0foJ70uqdJFqBoGz1NcSwZ6GNk/iNfGvG3XpxZ/zqEe7kkIucqqei794G7z9psqV94yZ3WaT+IswPpWrSaWv1w41RtcWufPhe4fOAmU= +foo.example.com. 3600 IN A 1.2.3.4 +foo.example.com. 3600 IN RRSIG A 8 3 3600 20201116135527 20201019135527 55566 example.com. ZcUngb2pUejwnsshbJN/Dfr+Bzu8fcZXyqLArQ+10Bw1IPHyfx7yyUJ43V5tTYVHPSEsJzTnaWj+olVrNhVZxq5e0pgzSYPfGln2FEItEvMIOn33j8yKTpPW2MLyuFF5ZkXhosG20EUwRMvMmRHRz9mIZfwWoMbSGPukmLh8zMA= +foo.example.com. 3600 IN NSEC ns.example.com. A RRSIG NSEC +foo.example.com. 3600 IN RRSIG NSEC 8 3 3600 20201116135527 20201019135527 55566 example.com. fUZEpkEULRWDntN5Z7Kr8M83Hjhf08ECMKRpo6IBoBc3ayenj+YMgWAvFXC825wjENPYYWNGag0d32U83zCZxqgv+8uXZd3B7QDpTbL41aWZdc++s5YWTkYjyOWwJ1XHOv4nL3qEnJBXVzo/E1gbSKhTFuG97i+7J1MFd9MsC5s= +ns.example.com. 3600 IN A 127.0.0.1 +ns.example.com. 3600 IN RRSIG A 8 3 3600 20201116135527 20201019135527 55566 example.com. SiuxuPtN/ITd+Z20j8UNUHJWbLHirE8zQOWMv5fAZ1rPKpAidrZgUL8J417GdrTwkueU2ywAJ7EzFJSwNTa7o/wUnq7svmOR6Ze6UQsKuZFZGEfqPNDRp4YuF86LU5jChuo+f/IRpydHrxVwGxDPCR9KarDM+ewfW+yI5bZeZcg= +ns.example.com. 3600 IN NSEC www.example.com. A RRSIG NSEC +ns.example.com. 3600 IN RRSIG NSEC 8 3 3600 20201116135527 20201019135527 55566 example.com. 0upKNYjiow4NDJm3I1RbUddE9GGuFYEVKswww5BAc/6WHuukupncL30lskvcSKGpByDssP2Hi2CufyEtYeGWh6q1TxtOFRqFBX1p6Q5b3tBlCtvv4h31dQR9uqLvq+GkGS5MR+0LO5kWagIpZmnI8YY5plVdXEtNbp2Ar8zvz/A= +www.example.com. 3600 IN A 127.0.0.1 +www.example.com. 3600 IN RRSIG A 8 3 3600 20201116135527 20201019135527 55566 example.com. AaIeICaPjV50TDrpbyOn94+hs8EYIMTmN4pYqj7e8GIGimqQIk5jgpwSx6SOoOF+uOqkf9GKHkQTn5YVGaeXwEQleg7mPTmMYKAOk06Y7MFUO1Vwt1Vt7Wo+Cpa3x2a1CmEkfFOi4WqP43VJnUtjjKmXoKRz3VUmqByyJYUAGbQ= +www.example.com. 3600 IN NSEC example.com. A RRSIG NSEC +www.example.com. 3600 IN RRSIG NSEC 8 3 3600 20201116135527 20201019135527 55566 example.com. meg/t6nIBqQZ0d5/dT7uu/3CuP4vE+HxqFQaj2fjUNceA/6C7QIQnqQ5Kyblg+XijDkQX0yvyFNHYdgF16UDgFT7tlNUCHk1SpF5BWzV4c4tBEhxASTz7UQo111O3Tyd6CldPzO/Se15Ud0/ZYltHEqWTfY5nJoXC/OJD9V2QOI= +FILE_END + +SCENARIO_END From 4034c009bb8fc78299996b0a23154653ede7c30a Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 13 Aug 2021 15:24:53 +0200 Subject: [PATCH 360/553] - zonemd, fix order of bogus printout string manipulation. --- doc/Changelog | 1 + services/authzone.c | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index c1548dd67..3ec77a522 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -4,6 +4,7 @@ and udp send, they are visible at higher verbosity settings. - Fix zonemd verification of key that is not in DNS but in the zone and needs a chain of trust. + - zonemd, fix order of bogus printout string manipulation. 12 August 2021: George - Merge PR #514, from ziollek: Docker environment for run tests. diff --git a/services/authzone.c b/services/authzone.c index 71b0331ca..d4a17f06e 100644 --- a/services/authzone.c +++ b/services/authzone.c @@ -8104,7 +8104,7 @@ auth_zone_verify_zonemd_key_with_ds(struct auth_zone* z, keystorage->rk.dname_len = apex->namelen; keystorage->rk.type = htons(LDNS_RR_TYPE_DNSKEY); keystorage->rk.rrset_class = htons(z->dclass); - auth_zone_log(z->name, VERB_QUERY, "zonemd: verify zone's DNSKEY with DS"); + auth_zone_log(z->name, VERB_QUERY, "zonemd: verify zone DNSKEY with DS"); sec = val_verify_DNSKEY_with_DS(env, ve, keystorage, ds, NULL, why_bogus, NULL); regional_free_all(env->scratch); @@ -8117,11 +8117,11 @@ auth_zone_verify_zonemd_key_with_ds(struct auth_zone* z, } else { /* bogus */ *is_insecure = 0; + if(*why_bogus == NULL) + *why_bogus = "verify failed"; auth_zone_log(z->name, VERB_ALGO, "zonemd: verify DNSKEY RRset with DS failed: %s", *why_bogus); - if(*why_bogus == NULL) - *why_bogus = "verify failed"; } return NULL; } From 25b7eb3c7cb0498b113fa3372a2f2b077bdf93af Mon Sep 17 00:00:00 2001 From: Florian Obser Date: Mon, 16 Aug 2021 11:27:40 +0200 Subject: [PATCH 361/553] Make sldns_str2wire_svcparam_buf() static. The function is only used in this translation unit and prevents a "no previous prototype" warning. --- sldns/str2wire.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sldns/str2wire.c b/sldns/str2wire.c index fbd615cbf..293abf79a 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -1565,7 +1565,7 @@ sldns_str2wire_svcparam_value(const char *key, size_t key_len, return LDNS_WIREPARSE_ERR_GENERAL; } -int sldns_str2wire_svcparam_buf(const char* str, uint8_t* rd, size_t* rd_len) +static int sldns_str2wire_svcparam_buf(const char* str, uint8_t* rd, size_t* rd_len) { const char* eq_pos; char unescaped_val[LDNS_MAX_RDFLEN]; From 2a72845576184166c655c898abcae43e4c2df6e7 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Mon, 16 Aug 2021 14:14:32 +0200 Subject: [PATCH 362/553] Changelog note for #528: - Merge PR #528 from fobser: Make sldns_str2wire_svcparam_buf() static. --- doc/Changelog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 3ec77a522..4e38d067d 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +16 August 2021: George + - Merge PR #528 from fobser: Make sldns_str2wire_svcparam_buf() + static. + 13 August 2021: Wouter - Support using system-wide crypto policies. - Fix for #431: Squelch permission denied errors for udp connect, From d0cc58be3d5c3ebc4b86913df5a87028a2fdab82 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 16 Aug 2021 16:14:32 +0200 Subject: [PATCH 363/553] - Fix to support harden-algo-downgrade for ZONEMD dnssec checks. --- doc/Changelog | 3 +++ services/authzone.c | 39 ++++++++++++++++++++++----------------- 2 files changed, 25 insertions(+), 17 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 4e38d067d..dc4939417 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -2,6 +2,9 @@ - Merge PR #528 from fobser: Make sldns_str2wire_svcparam_buf() static. +16 August 2021: Wouter + - Fix to support harden-algo-downgrade for ZONEMD dnssec checks. + 13 August 2021: Wouter - Support using system-wide crypto policies. - Fix for #431: Squelch permission denied errors for udp connect, diff --git a/services/authzone.c b/services/authzone.c index d4a17f06e..f9f5bba9e 100644 --- a/services/authzone.c +++ b/services/authzone.c @@ -7683,7 +7683,7 @@ static void auth_zone_log(uint8_t* name, enum verbosity_value level, static int zonemd_dnssec_verify_rrset(struct auth_zone* z, struct module_env* env, struct module_stack* mods, struct ub_packed_rrset_key* dnskey, struct auth_data* node, - struct auth_rrset* rrset, char** why_bogus) + struct auth_rrset* rrset, char** why_bogus, uint8_t* sigalg) { struct ub_packed_rrset_key pk; enum sec_status sec; @@ -7711,7 +7711,7 @@ static int zonemd_dnssec_verify_rrset(struct auth_zone* z, auth_zone_log(z->name, VERB_ALGO, "zonemd: verify %s RRset with DNSKEY", typestr); } - sec = dnskeyset_verify_rrset(env, ve, &pk, dnskey, NULL, why_bogus, + sec = dnskeyset_verify_rrset(env, ve, &pk, dnskey, sigalg, why_bogus, LDNS_SECTION_ANSWER, NULL); if(sec == sec_status_secure) { return 1; @@ -7755,7 +7755,7 @@ static int nsec3_of_param_has_type(struct auth_rrset* nsec3, int algo, static int zonemd_check_dnssec_absence(struct auth_zone* z, struct module_env* env, struct module_stack* mods, struct ub_packed_rrset_key* dnskey, struct auth_data* apex, - char** reason, char** why_bogus) + char** reason, char** why_bogus, uint8_t* sigalg) { struct auth_rrset* nsec = NULL; if(!apex) { @@ -7767,7 +7767,7 @@ static int zonemd_check_dnssec_absence(struct auth_zone* z, struct ub_packed_rrset_key pk; /* dnssec verify the NSEC */ if(!zonemd_dnssec_verify_rrset(z, env, mods, dnskey, apex, - nsec, why_bogus)) { + nsec, why_bogus, sigalg)) { *reason = "DNSSEC verify failed for NSEC RRset"; return 0; } @@ -7810,7 +7810,7 @@ static int zonemd_check_dnssec_absence(struct auth_zone* z, } /* dnssec verify the NSEC3 */ if(!zonemd_dnssec_verify_rrset(z, env, mods, dnskey, match, - nsec3, why_bogus)) { + nsec3, why_bogus, sigalg)) { *reason = "DNSSEC verify failed for NSEC3 RRset"; return 0; } @@ -7831,7 +7831,8 @@ static int zonemd_check_dnssec_absence(struct auth_zone* z, static int zonemd_check_dnssec_soazonemd(struct auth_zone* z, struct module_env* env, struct module_stack* mods, struct ub_packed_rrset_key* dnskey, struct auth_data* apex, - struct auth_rrset* zonemd_rrset, char** reason, char** why_bogus) + struct auth_rrset* zonemd_rrset, char** reason, char** why_bogus, + uint8_t* sigalg) { struct auth_rrset* soa; if(!apex) { @@ -7844,12 +7845,12 @@ static int zonemd_check_dnssec_soazonemd(struct auth_zone* z, return 0; } if(!zonemd_dnssec_verify_rrset(z, env, mods, dnskey, apex, soa, - why_bogus)) { + why_bogus, sigalg)) { *reason = "DNSSEC verify failed for SOA RRset"; return 0; } if(!zonemd_dnssec_verify_rrset(z, env, mods, dnskey, apex, - zonemd_rrset, why_bogus)) { + zonemd_rrset, why_bogus, sigalg)) { *reason = "DNSSEC verify failed for ZONEMD RRset"; return 0; } @@ -7908,12 +7909,14 @@ static void auth_zone_zonemd_fail(struct auth_zone* z, struct module_env* env, * @param is_insecure: if true, the dnskey is not used, the zone is insecure. * And dnssec is not used. It is DNSSEC secure insecure or not under * a trust anchor. + * @param sigalg: if nonNULL provide algorithm downgrade protection. + * Otherwise one algorithm is enough. Must have space of ALGO_NEEDS_MAX+1. * @param result: if not NULL result reason copied here. */ static void auth_zone_verify_zonemd_with_key(struct auth_zone* z, struct module_env* env, struct module_stack* mods, struct ub_packed_rrset_key* dnskey, - int is_insecure, char** result) + int is_insecure, char** result, uint8_t* sigalg) { char* reason = NULL, *why_bogus = NULL; struct auth_data* apex = NULL; @@ -7943,7 +7946,7 @@ auth_zone_verify_zonemd_with_key(struct auth_zone* z, struct module_env* env, } else if(!zonemd_rrset && dnskey && !is_insecure) { /* fetch, DNSSEC verify, and check NSEC/NSEC3 */ if(!zonemd_check_dnssec_absence(z, env, mods, dnskey, apex, - &reason, &why_bogus)) { + &reason, &why_bogus, sigalg)) { auth_zone_zonemd_fail(z, env, reason, why_bogus, result); return; } @@ -7951,7 +7954,7 @@ auth_zone_verify_zonemd_with_key(struct auth_zone* z, struct module_env* env, } else if(zonemd_rrset && dnskey && !is_insecure) { /* check DNSSEC verify of SOA and ZONEMD */ if(!zonemd_check_dnssec_soazonemd(z, env, mods, dnskey, apex, - zonemd_rrset, &reason, &why_bogus)) { + zonemd_rrset, &reason, &why_bogus, sigalg)) { auth_zone_zonemd_fail(z, env, reason, why_bogus, result); return; } @@ -8070,7 +8073,7 @@ static struct ub_packed_rrset_key* auth_zone_verify_zonemd_key_with_ds(struct auth_zone* z, struct module_env* env, struct module_stack* mods, struct ub_packed_rrset_key* ds, int* is_insecure, char** why_bogus, - struct ub_packed_rrset_key* keystorage) + struct ub_packed_rrset_key* keystorage, uint8_t* sigalg) { struct auth_data* apex; struct auth_rrset* dnskey_rrset; @@ -8105,7 +8108,7 @@ auth_zone_verify_zonemd_key_with_ds(struct auth_zone* z, keystorage->rk.type = htons(LDNS_RR_TYPE_DNSKEY); keystorage->rk.rrset_class = htons(z->dclass); auth_zone_log(z->name, VERB_QUERY, "zonemd: verify zone DNSKEY with DS"); - sec = val_verify_DNSKEY_with_DS(env, ve, keystorage, ds, NULL, + sec = val_verify_DNSKEY_with_DS(env, ve, keystorage, ds, sigalg, why_bogus, NULL); regional_free_all(env->scratch); if(sec == sec_status_secure) { @@ -8134,8 +8137,9 @@ void auth_zonemd_dnskey_lookup_callback(void* arg, int rcode, sldns_buffer* buf, struct module_env* env; char* reason = NULL, *ds_bogus = NULL, *typestr="DNSKEY"; struct ub_packed_rrset_key* dnskey = NULL, *ds = NULL; - int is_insecure = 0; + int is_insecure = 0, downprot; struct ub_packed_rrset_key keystorage; + uint8_t sigalg[ALGO_NEEDS_MAX+1]; lock_rw_wrlock(&z->lock); env = z->zonemd_callback_env; @@ -8148,6 +8152,7 @@ void auth_zonemd_dnskey_lookup_callback(void* arg, int rcode, sldns_buffer* buf, } if(z->zonemd_callback_qtype == LDNS_RR_TYPE_DS) typestr = "DS"; + downprot = env->cfg->harden_algo_downgrade; /* process result */ if(sec == sec_status_bogus) { @@ -8241,7 +8246,7 @@ void auth_zonemd_dnskey_lookup_callback(void* arg, int rcode, sldns_buffer* buf, if(!reason && !is_insecure && !dnskey && ds) { dnskey = auth_zone_verify_zonemd_key_with_ds(z, env, &env->mesh->mods, ds, &is_insecure, &ds_bogus, - &keystorage); + &keystorage, downprot?sigalg:NULL); if(!dnskey && !is_insecure && !reason) reason = "DNSKEY verify with DS failed"; } @@ -8253,7 +8258,7 @@ void auth_zonemd_dnskey_lookup_callback(void* arg, int rcode, sldns_buffer* buf, } auth_zone_verify_zonemd_with_key(z, env, &env->mesh->mods, dnskey, - is_insecure, NULL); + is_insecure, NULL, downprot?sigalg:NULL); regional_free_all(env->scratch); lock_rw_unlock(&z->lock); } @@ -8395,7 +8400,7 @@ void auth_zone_verify_zonemd(struct auth_zone* z, struct module_env* env, } auth_zone_verify_zonemd_with_key(z, env, mods, dnskey, is_insecure, - result); + result, NULL); regional_free_all(env->scratch); } From cc6d428cb717039f9f2bfc2a8e74dfe97ebad342 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 17 Aug 2021 10:32:12 +0200 Subject: [PATCH 364/553] - Fix that --with-ssl can use "/usr/include/openssl11" to pass the location of a different openssl version. --- acx_nlnetlabs.m4 | 65 +++++++++++++++++++++++++++-------------- configure | 75 +++++++++++++++++++++++++++--------------------- configure.ac | 8 +++--- doc/Changelog | 4 +++ 4 files changed, 95 insertions(+), 57 deletions(-) diff --git a/acx_nlnetlabs.m4 b/acx_nlnetlabs.m4 index 39e92d875..ed3cdb067 100644 --- a/acx_nlnetlabs.m4 +++ b/acx_nlnetlabs.m4 @@ -2,7 +2,9 @@ # Copyright 2009, Wouter Wijngaards, NLnet Labs. # BSD licensed. # -# Version 41 +# Version 42 +# 2021-08-17 fix for openssl to detect split version, with ssldir_include +# and ssldir_lib output directories. # 2021-07-30 fix for openssl use of lib64 directory. # 2021-06-14 fix nonblocking test to use host instead of target for mingw test. # 2021-05-17 fix nonblocking socket test from grep on mingw32 to mingw for @@ -647,6 +649,30 @@ AC_DEFUN([ACX_SSL_CHECKS], [ withval=$1 if test x_$withval != x_no; then AC_MSG_CHECKING(for SSL) + if test -n "$withval"; then + dnl look for openssl install with different version, eg. + dnl in /usr/include/openssl11/openssl/ssl.h + dnl and /usr/lib64/openssl11/libssl.so + dnl with the --with-ssl=/usr/include/openssl11 + if test ! -f "$withval/include/openssl/ssl.h" -a -f "$withval/openssl/ssl.h"; then + ssldir="$withval" + found_ssl="yes" + withval="" + ssldir_include="$ssldir" + dnl find the libdir + ssldir_lib=`echo $ssldir | sed -e '/include/lib/'` + if test -f "$ssldir_lib/libssl.a" -o -f "$ssldir_lib/libssl.so"; then + : # found here + else + ssldir_lib=`echo $ssldir | sed -e '/include/lib64/'` + if test -f "$ssldir_lib/libssl.a" -o -f "$ssldir_lib/libssl.so"; then + : # found here + else + AC_MSG_ERROR([Could not find openssl lib file, $ssldir_lib/libssl.[so,a], pass like "/usr/local" or "/usr/include/openssl11"]) + fi + fi + fi + fi if test x_$withval = x_ -o x_$withval = x_yes; then withval="/usr/local/ssl /usr/lib/ssl /usr/ssl /usr/pkg /usr/local /opt/local /usr/sfw /usr" fi @@ -654,12 +680,12 @@ AC_DEFUN([ACX_SSL_CHECKS], [ ssldir="$dir" if test -f "$dir/include/openssl/ssl.h"; then found_ssl="yes" - AC_DEFINE_UNQUOTED([HAVE_SSL], [], [Define if you have the SSL libraries installed.]) - dnl assume /usr/include is already in the include-path. - if test "$ssldir" != "/usr"; then - CPPFLAGS="$CPPFLAGS -I$ssldir/include" - LIBSSL_CPPFLAGS="$LIBSSL_CPPFLAGS -I$ssldir/include" - fi + ssldir_include="$ssldir/include" + if test ! -d "$ssldir/lib" -a -d "$ssldir/lib64"; then + ssldir_lib="$ssldir/lib64" + else + ssldir_lib="$ssldir/lib" + fi break; fi done @@ -667,19 +693,16 @@ AC_DEFUN([ACX_SSL_CHECKS], [ AC_MSG_ERROR(Cannot find the SSL libraries in $withval) else AC_MSG_RESULT(found in $ssldir) + AC_DEFINE_UNQUOTED([HAVE_SSL], [], [Define if you have the SSL libraries installed.]) HAVE_SSL=yes - dnl assume /usr is already in the lib and dynlib paths. - if test "$ssldir" != "/usr" -a "$ssldir" != ""; then - if test ! -d "$ssldir/lib" -a -d "$ssldir/lib64"; then - LDFLAGS="$LDFLAGS -L$ssldir/lib64" - LIBSSL_LDFLAGS="$LIBSSL_LDFLAGS -L$ssldir/lib64" - ACX_RUNTIME_PATH_ADD([$ssldir/lib64]) - else - LDFLAGS="$LDFLAGS -L$ssldir/lib" - LIBSSL_LDFLAGS="$LIBSSL_LDFLAGS -L$ssldir/lib" - ACX_RUNTIME_PATH_ADD([$ssldir/lib]) - fi - fi + dnl assume /usr is already in the include, lib and dynlib paths. + if test "$ssldir" != "/usr"; then + CPPFLAGS="$CPPFLAGS -I$ssldir_include" + LIBSSL_CPPFLAGS="$LIBSSL_CPPFLAGS -I$ssldir_include" + LDFLAGS="$LDFLAGS -L$ssldir_lib" + LIBSSL_LDFLAGS="$LIBSSL_LDFLAGS -L$ssldir_lib" + ACX_RUNTIME_PATH_ADD([$ssldir_lib]) + fi AC_MSG_CHECKING([for EVP_sha256 in -lcrypto]) LIBS="$LIBS -lcrypto" @@ -758,7 +781,7 @@ dnl AC_DEFUN([ACX_WITH_SSL], [ AC_ARG_WITH(ssl, AS_HELP_STRING([--with-ssl=pathname],[enable SSL (will check /usr/local/ssl - /usr/lib/ssl /usr/ssl /usr/pkg /usr/local /opt/local /usr/sfw /usr)]),[ + /usr/lib/ssl /usr/ssl /usr/pkg /usr/local /opt/local /usr/sfw /usr or specify like /usr/include/openssl11)]),[ ],[ withval="yes" ]) @@ -776,7 +799,7 @@ dnl AC_DEFUN([ACX_WITH_SSL_OPTIONAL], [ AC_ARG_WITH(ssl, AS_HELP_STRING([--with-ssl=pathname],[enable SSL (will check /usr/local/ssl - /usr/lib/ssl /usr/ssl /usr/pkg /usr/local /opt/local /usr/sfw /usr)]),[ + /usr/lib/ssl /usr/ssl /usr/pkg /usr/local /opt/local /usr/sfw /usr or specify like /usr/include/openssl11)]),[ ],[ withval="yes" ]) diff --git a/configure b/configure index f5185fc5b..186a13bfa 100755 --- a/configure +++ b/configure @@ -1650,7 +1650,7 @@ Optional Packages: --with-nettle=path use libnettle as crypto library, installed at path. --with-ssl=pathname enable SSL (will check /usr/local/ssl /usr/lib/ssl /usr/ssl /usr/pkg /usr/local /opt/local /usr/sfw - /usr) + /usr or specify like /usr/include/openssl11) --with-libbsd Use portable libbsd functions --with-deprecate-rsa-1024 Deprecate RSA 1024 bit length, makes that an @@ -18001,6 +18001,25 @@ fi if test x_$withval != x_no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SSL" >&5 $as_echo_n "checking for SSL... " >&6; } + if test -n "$withval"; then + if test ! -f "$withval/include/openssl/ssl.h" -a -f "$withval/openssl/ssl.h"; then + ssldir="$withval" + found_ssl="yes" + withval="" + ssldir_include="$ssldir" + ssldir_lib=`echo $ssldir | sed -e '/include/lib/'` + if test -f "$ssldir_lib/libssl.a" -o -f "$ssldir_lib/libssl.so"; then + : # found here + else + ssldir_lib=`echo $ssldir | sed -e '/include/lib64/'` + if test -f "$ssldir_lib/libssl.a" -o -f "$ssldir_lib/libssl.so"; then + : # found here + else + as_fn_error $? "Could not find openssl lib file, $ssldir_lib/libssl.so,a, pass like \"/usr/local\" or \"/usr/include/openssl11\"" "$LINENO" 5 + fi + fi + fi + fi if test x_$withval = x_ -o x_$withval = x_yes; then withval="/usr/local/ssl /usr/lib/ssl /usr/ssl /usr/pkg /usr/local /opt/local /usr/sfw /usr" fi @@ -18008,15 +18027,12 @@ $as_echo_n "checking for SSL... " >&6; } ssldir="$dir" if test -f "$dir/include/openssl/ssl.h"; then found_ssl="yes" - -cat >>confdefs.h <<_ACEOF -#define HAVE_SSL /**/ -_ACEOF - - if test "$ssldir" != "/usr"; then - CPPFLAGS="$CPPFLAGS -I$ssldir/include" - LIBSSL_CPPFLAGS="$LIBSSL_CPPFLAGS -I$ssldir/include" - fi + ssldir_include="$ssldir/include" + if test ! -d "$ssldir/lib" -a -d "$ssldir/lib64"; then + ssldir_lib="$ssldir/lib64" + else + ssldir_lib="$ssldir/lib" + fi break; fi done @@ -18025,30 +18041,25 @@ _ACEOF else { $as_echo "$as_me:${as_lineno-$LINENO}: result: found in $ssldir" >&5 $as_echo "found in $ssldir" >&6; } + +cat >>confdefs.h <<_ACEOF +#define HAVE_SSL /**/ +_ACEOF + HAVE_SSL=yes - if test "$ssldir" != "/usr" -a "$ssldir" != ""; then - if test ! -d "$ssldir/lib" -a -d "$ssldir/lib64"; then - LDFLAGS="$LDFLAGS -L$ssldir/lib64" - LIBSSL_LDFLAGS="$LIBSSL_LDFLAGS -L$ssldir/lib64" + if test "$ssldir" != "/usr"; then + CPPFLAGS="$CPPFLAGS -I$ssldir_include" + LIBSSL_CPPFLAGS="$LIBSSL_CPPFLAGS -I$ssldir_include" + LDFLAGS="$LDFLAGS -L$ssldir_lib" + LIBSSL_LDFLAGS="$LIBSSL_LDFLAGS -L$ssldir_lib" if test "x$enable_rpath" = xyes; then - if echo "$ssldir/lib64" | grep "^/" >/dev/null; then - RUNTIME_PATH="$RUNTIME_PATH -R$ssldir/lib64" + if echo "$ssldir_lib" | grep "^/" >/dev/null; then + RUNTIME_PATH="$RUNTIME_PATH -R$ssldir_lib" fi fi - else - LDFLAGS="$LDFLAGS -L$ssldir/lib" - LIBSSL_LDFLAGS="$LIBSSL_LDFLAGS -L$ssldir/lib" - - if test "x$enable_rpath" = xyes; then - if echo "$ssldir/lib" | grep "^/" >/dev/null; then - RUNTIME_PATH="$RUNTIME_PATH -R$ssldir/lib" - fi - fi - - fi - fi + fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EVP_sha256 in -lcrypto" >&5 $as_echo_n "checking for EVP_sha256 in -lcrypto... " >&6; } @@ -18377,7 +18388,7 @@ rm -f core conftest.err conftest.$ac_objext \ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LibreSSL" >&5 $as_echo_n "checking for LibreSSL... " >&6; } -if grep VERSION_TEXT $ssldir/include/openssl/opensslv.h | grep "LibreSSL" >/dev/null; then +if grep VERSION_TEXT $ssldir_include/openssl/opensslv.h | grep "LibreSSL" >/dev/null; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } @@ -18799,7 +18810,7 @@ $as_echo_n "checking if GOST works... " >&6; } if test c${cross_compiling} = cno; then BAKCFLAGS="$CFLAGS" if test -n "$ssldir"; then - CFLAGS="$CFLAGS -Wl,-rpath,$ssldir/lib" + CFLAGS="$CFLAGS -Wl,-rpath,$ssldir_lib" fi if test "$cross_compiling" = yes; then : { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 @@ -18982,8 +18993,8 @@ fi # see if OPENSSL 1.0.0 or later (has EVP MD and Verify independency) { $as_echo "$as_me:${as_lineno-$LINENO}: checking if openssl supports SHA2 and ECDSA with EVP" >&5 $as_echo_n "checking if openssl supports SHA2 and ECDSA with EVP... " >&6; } - if grep OPENSSL_VERSION_TEXT $ssldir/include/openssl/opensslv.h | grep "OpenSSL" >/dev/null; then - if grep OPENSSL_VERSION_NUMBER $ssldir/include/openssl/opensslv.h | grep 0x0 >/dev/null; then + if grep OPENSSL_VERSION_TEXT $ssldir_include/openssl/opensslv.h | grep "OpenSSL" >/dev/null; then + if grep OPENSSL_VERSION_NUMBER $ssldir_include/openssl/opensslv.h | grep 0x0 >/dev/null; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } diff --git a/configure.ac b/configure.ac index 1ed55b0ef..b9b177584 100644 --- a/configure.ac +++ b/configure.ac @@ -857,7 +857,7 @@ AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ ]) AC_MSG_CHECKING([for LibreSSL]) -if grep VERSION_TEXT $ssldir/include/openssl/opensslv.h | grep "LibreSSL" >/dev/null; then +if grep VERSION_TEXT $ssldir_include/openssl/opensslv.h | grep "LibreSSL" >/dev/null; then AC_MSG_RESULT([yes]) AC_DEFINE([HAVE_LIBRESSL], [1], [Define if we have LibreSSL]) # libressl provides these compat functions, but they may also be @@ -987,7 +987,7 @@ AC_MSG_CHECKING([if GOST works]) if test c${cross_compiling} = cno; then BAKCFLAGS="$CFLAGS" if test -n "$ssldir"; then - CFLAGS="$CFLAGS -Wl,-rpath,$ssldir/lib" + CFLAGS="$CFLAGS -Wl,-rpath,$ssldir_lib" fi AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include @@ -1110,8 +1110,8 @@ case "$enable_ecdsa" in ]) # see if OPENSSL 1.0.0 or later (has EVP MD and Verify independency) AC_MSG_CHECKING([if openssl supports SHA2 and ECDSA with EVP]) - if grep OPENSSL_VERSION_TEXT $ssldir/include/openssl/opensslv.h | grep "OpenSSL" >/dev/null; then - if grep OPENSSL_VERSION_NUMBER $ssldir/include/openssl/opensslv.h | grep 0x0 >/dev/null; then + if grep OPENSSL_VERSION_TEXT $ssldir_include/openssl/opensslv.h | grep "OpenSSL" >/dev/null; then + if grep OPENSSL_VERSION_NUMBER $ssldir_include/openssl/opensslv.h | grep 0x0 >/dev/null; then AC_MSG_RESULT([no]) AC_DEFINE_UNQUOTED([USE_ECDSA_EVP_WORKAROUND], [1], [Define this to enable an EVP workaround for older openssl]) else diff --git a/doc/Changelog b/doc/Changelog index dc4939417..26c66e65e 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +17 August 2021: Wouter + - Fix that --with-ssl can use "/usr/include/openssl11" to pass the + location of a different openssl version. + 16 August 2021: George - Merge PR #528 from fobser: Make sldns_str2wire_svcparam_buf() static. From d88f554503cbb31b924087f82ecd774145506a8f Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 17 Aug 2021 13:03:33 +0200 Subject: [PATCH 365/553] - Fix #527: not sending quad9 cert to syslog (and may be more). --- doc/Changelog | 1 + util/net_help.c | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 26c66e65e..103fb37cb 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,7 @@ 17 August 2021: Wouter - Fix that --with-ssl can use "/usr/include/openssl11" to pass the location of a different openssl version. + - Fix #527: not sending quad9 cert to syslog (and may be more). 16 August 2021: George - Merge PR #528 from fobser: Make sldns_str2wire_svcparam_buf() diff --git a/util/net_help.c b/util/net_help.c index b2d2061c9..3a671777c 100644 --- a/util/net_help.c +++ b/util/net_help.c @@ -881,6 +881,12 @@ log_cert(unsigned level, const char* str, void* cert) BIO_write(bio, &nul, (int)sizeof(nul)); len = BIO_get_mem_data(bio, &pp); if(len != 0 && pp) { + /* reduce size of cert printout */ + char* s; + while((s=strstr(pp, " "))!=NULL) + memmove(s, s+1, strlen(s+1)+1); + while((s=strstr(pp, "\t\t"))!=NULL) + memmove(s, s+1, strlen(s+1)+1); verbose(level, "%s: \n%s", str, pp); } BIO_free(bio); From 51f5b3ab44cb84815384e633a7a966c39050b65d Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 17 Aug 2021 13:15:20 +0200 Subject: [PATCH 366/553] - Fix sed script in ssldir split handling. --- acx_nlnetlabs.m4 | 7 ++++--- configure | 4 ++-- doc/Changelog | 1 + 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/acx_nlnetlabs.m4 b/acx_nlnetlabs.m4 index ed3cdb067..1574f97bf 100644 --- a/acx_nlnetlabs.m4 +++ b/acx_nlnetlabs.m4 @@ -2,7 +2,8 @@ # Copyright 2009, Wouter Wijngaards, NLnet Labs. # BSD licensed. # -# Version 42 +# Version 43 +# 2021-08-17 fix sed script in ssldir split handling. # 2021-08-17 fix for openssl to detect split version, with ssldir_include # and ssldir_lib output directories. # 2021-07-30 fix for openssl use of lib64 directory. @@ -660,11 +661,11 @@ AC_DEFUN([ACX_SSL_CHECKS], [ withval="" ssldir_include="$ssldir" dnl find the libdir - ssldir_lib=`echo $ssldir | sed -e '/include/lib/'` + ssldir_lib=`echo $ssldir | sed -e 's/include/lib/'` if test -f "$ssldir_lib/libssl.a" -o -f "$ssldir_lib/libssl.so"; then : # found here else - ssldir_lib=`echo $ssldir | sed -e '/include/lib64/'` + ssldir_lib=`echo $ssldir | sed -e 's/include/lib64/'` if test -f "$ssldir_lib/libssl.a" -o -f "$ssldir_lib/libssl.so"; then : # found here else diff --git a/configure b/configure index 186a13bfa..03e8fb5fd 100755 --- a/configure +++ b/configure @@ -18007,11 +18007,11 @@ $as_echo_n "checking for SSL... " >&6; } found_ssl="yes" withval="" ssldir_include="$ssldir" - ssldir_lib=`echo $ssldir | sed -e '/include/lib/'` + ssldir_lib=`echo $ssldir | sed -e 's/include/lib/'` if test -f "$ssldir_lib/libssl.a" -o -f "$ssldir_lib/libssl.so"; then : # found here else - ssldir_lib=`echo $ssldir | sed -e '/include/lib64/'` + ssldir_lib=`echo $ssldir | sed -e 's/include/lib64/'` if test -f "$ssldir_lib/libssl.a" -o -f "$ssldir_lib/libssl.so"; then : # found here else diff --git a/doc/Changelog b/doc/Changelog index 103fb37cb..c02c5d319 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -2,6 +2,7 @@ - Fix that --with-ssl can use "/usr/include/openssl11" to pass the location of a different openssl version. - Fix #527: not sending quad9 cert to syslog (and may be more). + - Fix sed script in ssldir split handling. 16 August 2021: George - Merge PR #528 from fobser: Make sldns_str2wire_svcparam_buf() From 4ea9651624f85b005f7942bc069e60e391c93e2f Mon Sep 17 00:00:00 2001 From: Shchelkunov Artem Date: Fri, 20 Aug 2021 17:12:43 +0500 Subject: [PATCH 367/553] Fix: log_assert does nothing if UNBOUND_DEBUG is undefined Found by static analyzer svace Static analyzer message: Integer value 'len' obtained from untrusted source at tube.c:374 by passing as 2nd parameter to function 'read' at tube.c:340 without checking its higher bound is used as a loop bound at tube.c:374. on-behalf-of: @ideco-team --- util/tube.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/util/tube.c b/util/tube.c index dc6e3c2e7..8ff474b87 100644 --- a/util/tube.c +++ b/util/tube.c @@ -363,7 +363,11 @@ int tube_read_msg(struct tube* tube, uint8_t** buf, uint32_t* len, } d += r; } - log_assert(*len < 65536*2); + if (*len >= 65536*2) { + log_err("tube msg length is too big", *len); + (void)fd_set_nonblock(fd); + return 0; + } *buf = (uint8_t*)malloc(*len); if(!*buf) { log_err("tube read out of memory"); From 54b7554b5a6a9c482389c535e464c41a8ccd6b9d Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 20 Aug 2021 14:32:13 +0200 Subject: [PATCH 368/553] Changelog note for #529 and nicer layout. - Fix #529: Fix: log_assert does nothing if UNBOUND_DEBUG is undefined. --- doc/Changelog | 4 ++++ util/tube.c | 6 +++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index c02c5d319..7dc5820fc 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +20 August 2021: Wouter + - Fix #529: Fix: log_assert does nothing if UNBOUND_DEBUG is + undefined. + 17 August 2021: Wouter - Fix that --with-ssl can use "/usr/include/openssl11" to pass the location of a different openssl version. diff --git a/util/tube.c b/util/tube.c index 8ff474b87..40556e720 100644 --- a/util/tube.c +++ b/util/tube.c @@ -364,9 +364,9 @@ int tube_read_msg(struct tube* tube, uint8_t** buf, uint32_t* len, d += r; } if (*len >= 65536*2) { - log_err("tube msg length is too big", *len); - (void)fd_set_nonblock(fd); - return 0; + log_err("tube msg length %u is too big", (unsigned)*len); + (void)fd_set_nonblock(fd); + return 0; } *buf = (uint8_t*)malloc(*len); if(!*buf) { From 5730e7bb594d250600d882d04ae1bc7cb10c99e8 Mon Sep 17 00:00:00 2001 From: Shchelkunov Artem Date: Fri, 20 Aug 2021 17:52:14 +0500 Subject: [PATCH 369/553] Fix: dereferencing a null pointer Found by static analyzer svace Static analyzer message: Return value of a function 'reply_info_copy' is dereferenced at dns64.c:923 without checking, but it is usually checked for this function (4/5). on-behalf-of: @ideco-team --- dns64/dns64.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/dns64/dns64.c b/dns64/dns64.c index c79bc9c65..8872f10b0 100644 --- a/dns64/dns64.c +++ b/dns64/dns64.c @@ -913,8 +913,9 @@ dns64_adjust_ptr(struct module_qstate* qstate, struct module_qstate* super) sizeof(struct dns_msg)))) return; super->return_msg->qinfo = super->qinfo; - super->return_msg->rep = reply_info_copy(qstate->return_msg->rep, NULL, - super->region); + if (!(super->return_msg->rep = reply_info_copy(qstate->return_msg->rep, + NULL, super->region))) + return; /* * Adjust the domain name of the answer RR set so that it matches the From ba7598f5591465e4d73dccfc5f20cb16e04c4360 Mon Sep 17 00:00:00 2001 From: Shchelkunov Artem Date: Fri, 20 Aug 2021 18:06:12 +0500 Subject: [PATCH 370/553] Fix: passed to proc after free Found by static analyzer svace Static analyzer message: Pointer 'dp' is passed to a function at iter_hints.c:401 after the referenced memory was deallocated at iter_hints.c:174 by passing as 3rd parameter to function 'hints_insert' at iter_hints.c:398. on-behalf-of: @ideco-team --- iterator/iter_hints.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/iterator/iter_hints.c b/iterator/iter_hints.c index 2af443d8c..5819cfb17 100644 --- a/iterator/iter_hints.c +++ b/iterator/iter_hints.c @@ -397,10 +397,10 @@ read_root_hints(struct iter_hints* hints, char* fname) delegpt_free_mlc(dp); return 1; } + delegpt_log(VERB_QUERY, dp); if(!hints_insert(hints, c, dp, 0)) { return 0; } - delegpt_log(VERB_QUERY, dp); return 1; stop_read: From 2315fc9d9b09ab8ac4b75e69d3e6fc8ab3bc919d Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 20 Aug 2021 15:18:39 +0200 Subject: [PATCH 371/553] Changelog entry for #531 - Fix #531: Fix: passed to proc after free. --- doc/Changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/Changelog b/doc/Changelog index 7dc5820fc..7c03d428b 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,7 @@ 20 August 2021: Wouter - Fix #529: Fix: log_assert does nothing if UNBOUND_DEBUG is undefined. + - Fix #531: Fix: passed to proc after free. 17 August 2021: Wouter - Fix that --with-ssl can use "/usr/include/openssl11" to pass the From 0b362e3a4d3061ee1acdcaf3aa32f4c6f74dcbbe Mon Sep 17 00:00:00 2001 From: Shchelkunov Artem Date: Fri, 20 Aug 2021 19:45:54 +0500 Subject: [PATCH 372/553] Fix: buffer overflow bug Found by static analyzer svace Static analyzer message: Array 'token' of size 65536 bytes passed to function 'rrinternal_parse_rdata' at str2wire.c:679 by passing as 2nd parameter to function 'rrinternal_parse_rdata' at str2wire.c:775, where it is accessed by unacceptable index. This may lead to buffer overflow. on-behalf-of: @ideco-team --- sldns/str2wire.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sldns/str2wire.c b/sldns/str2wire.c index 293abf79a..8c6664cde 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -601,7 +601,7 @@ sldns_affix_token(sldns_buffer* strbuf, char* token, size_t* token_len, size_t addstrlen = 0; /* add space */ - if(addlen < 1) return 0; + if(addlen < 2) return 0; token[*token_strlen] = ' '; token[++(*token_strlen)] = 0; From 924ff7b3730e7af4dc8b8dc08f3373279671acc0 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 25 Aug 2021 10:19:48 +0200 Subject: [PATCH 373/553] Changelog note for #401 - Merge #401: RPZ triggers. This add additional RPZ triggers, unbound supports a full set of rpz triggers, and this now includes nsdname, nsip and clientip triggers. Also actions are fully supported, and this now includes the tcp-only action. --- doc/Changelog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 7c03d428b..ece9d3bb7 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,9 @@ +25 August 2021: Wouter + - Merge #401: RPZ triggers. This add additional RPZ triggers, + unbound supports a full set of rpz triggers, and this now + includes nsdname, nsip and clientip triggers. Also actions + are fully supported, and this now includes the tcp-only action. + 20 August 2021: Wouter - Fix #529: Fix: log_assert does nothing if UNBOUND_DEBUG is undefined. From 889a2d09c35b2a1270464aa67ca43d37783053df Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 25 Aug 2021 13:14:53 +0200 Subject: [PATCH 374/553] - Fix #536: error: RPZ: name of record (drop.spamhaus.org.rpz.local.) to insert into RPZ. --- contrib/drop2rpz | 2 +- doc/Changelog | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/contrib/drop2rpz b/contrib/drop2rpz index 01602f651..6ac9b492e 100644 --- a/contrib/drop2rpz +++ b/contrib/drop2rpz @@ -4,7 +4,7 @@ # # unbound.conf: # rpz: -# name: "spamhaus-drop.rpz.local." +# name: "drop.spamhaus.org.rpz.local." # zonefile: "/path/tp/spamhaus-drop.rpz.local" # rpz-log: yes # rpz-log-name: "spamhaus-drop" diff --git a/doc/Changelog b/doc/Changelog index ece9d3bb7..e8f75a2a0 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -3,6 +3,8 @@ unbound supports a full set of rpz triggers, and this now includes nsdname, nsip and clientip triggers. Also actions are fully supported, and this now includes the tcp-only action. + - Fix #536: error: RPZ: name of record (drop.spamhaus.org.rpz.local.) + to insert into RPZ. 20 August 2021: Wouter - Fix #529: Fix: log_assert does nothing if UNBOUND_DEBUG is From c93a7fb38ac3e2805dd298c4076f28ee7b1f5a54 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 25 Aug 2021 13:37:50 +0200 Subject: [PATCH 375/553] - Fix the stream wait stream_wait_count_lock and http2 buffer locks setup and desetup from race condition. --- daemon/daemon.c | 2 ++ doc/Changelog | 2 ++ libunbound/context.c | 2 ++ libunbound/libunbound.c | 3 +++ services/listen_dnsport.c | 56 ++++++++++++++++++++++----------------- services/listen_dnsport.h | 5 ++++ testcode/testbound.c | 10 +++++++ 7 files changed, 56 insertions(+), 24 deletions(-) diff --git a/daemon/daemon.c b/daemon/daemon.c index 6d6667883..08497c5ed 100644 --- a/daemon/daemon.c +++ b/daemon/daemon.c @@ -280,6 +280,7 @@ daemon_init(void) free(daemon); return NULL; } + listen_setup_locks(); if(gettimeofday(&daemon->time_boot, NULL) < 0) log_err("gettimeofday: %s", strerror(errno)); daemon->time_last_stat = daemon->time_boot; @@ -781,6 +782,7 @@ daemon_delete(struct daemon* daemon) alloc_clear(&daemon->superalloc); acl_list_delete(daemon->acl); tcl_list_delete(daemon->tcl); + listen_desetup_locks(); free(daemon->chroot); free(daemon->pidfile); free(daemon->env); diff --git a/doc/Changelog b/doc/Changelog index e8f75a2a0..ed7da6ace 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -5,6 +5,8 @@ are fully supported, and this now includes the tcp-only action. - Fix #536: error: RPZ: name of record (drop.spamhaus.org.rpz.local.) to insert into RPZ. + - Fix the stream wait stream_wait_count_lock and http2 buffer locks + setup and desetup from race condition. 20 August 2021: Wouter - Fix #529: Fix: log_assert does nothing if UNBOUND_DEBUG is diff --git a/libunbound/context.c b/libunbound/context.c index e589c6ae2..c8d911f13 100644 --- a/libunbound/context.c +++ b/libunbound/context.c @@ -48,6 +48,7 @@ #include "services/cache/rrset.h" #include "services/cache/infra.h" #include "services/authzone.h" +#include "services/listen_dnsport.h" #include "util/data/msgreply.h" #include "util/storage/slabhash.h" #include "util/edns.h" @@ -73,6 +74,7 @@ context_finalize(struct ub_ctx* ctx) config_apply(cfg); if(!modstack_setup(&ctx->mods, cfg->module_conf, ctx->env)) return UB_INITFAIL; + listen_setup_locks(); log_edns_known_options(VERB_ALGO, ctx->env); ctx->local_zones = local_zones_create(); if(!ctx->local_zones) diff --git a/libunbound/libunbound.c b/libunbound/libunbound.c index c9e24ba8d..8ec8e417a 100644 --- a/libunbound/libunbound.c +++ b/libunbound/libunbound.c @@ -185,6 +185,7 @@ ub_ctx_create(void) ub_randfree(ctx->seed_rnd); config_delete(ctx->env->cfg); modstack_desetup(&ctx->mods, ctx->env); + listen_desetup_locks(); edns_known_options_delete(ctx->env); edns_strings_delete(ctx->env->edns_strings); free(ctx->env); @@ -198,6 +199,7 @@ ub_ctx_create(void) ub_randfree(ctx->seed_rnd); config_delete(ctx->env->cfg); modstack_desetup(&ctx->mods, ctx->env); + listen_desetup_locks(); edns_known_options_delete(ctx->env); edns_strings_delete(ctx->env->edns_strings); free(ctx->env); @@ -344,6 +346,7 @@ ub_ctx_delete(struct ub_ctx* ctx) } ub_randfree(ctx->seed_rnd); alloc_clear(&ctx->superalloc); + listen_desetup_locks(); traverse_postorder(&ctx->queries, delq, NULL); if(ctx_logfile_overridden) { log_file(NULL); diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index b43def567..1bb855c16 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -1306,6 +1306,38 @@ listen_cp_insert(struct comm_point* c, struct listen_dnsport* front) return 1; } +void listen_setup_locks(void) +{ + if(!stream_wait_lock_inited) { + lock_basic_init(&stream_wait_count_lock); + stream_wait_lock_inited = 1; + } + if(!http2_query_buffer_lock_inited) { + lock_basic_init(&http2_query_buffer_count_lock); + http2_query_buffer_lock_inited = 1; + } + if(!http2_response_buffer_lock_inited) { + lock_basic_init(&http2_response_buffer_count_lock); + http2_response_buffer_lock_inited = 1; + } +} + +void listen_desetup_locks(void) +{ + if(stream_wait_lock_inited) { + stream_wait_lock_inited = 0; + lock_basic_destroy(&stream_wait_count_lock); + } + if(http2_query_buffer_lock_inited) { + http2_query_buffer_lock_inited = 0; + lock_basic_destroy(&http2_query_buffer_count_lock); + } + if(http2_response_buffer_lock_inited) { + http2_response_buffer_lock_inited = 0; + lock_basic_destroy(&http2_response_buffer_count_lock); + } +} + struct listen_dnsport* listen_create(struct comm_base* base, struct listen_port* ports, size_t bufsize, int tcp_accept_count, int tcp_idle_timeout, @@ -1327,18 +1359,6 @@ listen_create(struct comm_base* base, struct listen_port* ports, free(front); return NULL; } - if(!stream_wait_lock_inited) { - lock_basic_init(&stream_wait_count_lock); - stream_wait_lock_inited = 1; - } - if(!http2_query_buffer_lock_inited) { - lock_basic_init(&http2_query_buffer_count_lock); - http2_query_buffer_lock_inited = 1; - } - if(!http2_response_buffer_lock_inited) { - lock_basic_init(&http2_response_buffer_count_lock); - http2_response_buffer_lock_inited = 1; - } /* create comm points as needed */ while(ports) { @@ -1454,18 +1474,6 @@ listen_delete(struct listen_dnsport* front) #endif sldns_buffer_free(front->udp_buff); free(front); - if(stream_wait_lock_inited) { - stream_wait_lock_inited = 0; - lock_basic_destroy(&stream_wait_count_lock); - } - if(http2_query_buffer_lock_inited) { - http2_query_buffer_lock_inited = 0; - lock_basic_destroy(&http2_query_buffer_count_lock); - } - if(http2_response_buffer_lock_inited) { - http2_response_buffer_lock_inited = 0; - lock_basic_destroy(&http2_response_buffer_count_lock); - } } #ifdef HAVE_GETIFADDRS diff --git a/services/listen_dnsport.h b/services/listen_dnsport.h index 1e51be9bf..0e63236bc 100644 --- a/services/listen_dnsport.h +++ b/services/listen_dnsport.h @@ -199,6 +199,11 @@ listen_create(struct comm_base* base, struct listen_port* ports, */ void listen_delete(struct listen_dnsport* listen); +/** setup the locks for the listen ports */ +void listen_setup_locks(void); +/** desetup the locks for the listen ports */ +void listen_desetup_locks(void); + /** * delete listen_list of commpoints. Calls commpointdelete() on items. * This may close the fds or not depending on flags. diff --git a/testcode/testbound.c b/testcode/testbound.c index c92900142..66299d693 100644 --- a/testcode/testbound.c +++ b/testcode/testbound.c @@ -604,3 +604,13 @@ int squelch_err_ssl_handshake(unsigned long ATTR_UNUSED(err)) { return 0; } + +void listen_setup_locks(void) +{ + /* nothing */ +} + +void listen_desetup_locks(void) +{ + /* nothing */ +} From 9fa1ae13401cc00465ecbb8e91d897271e3f653f Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 25 Aug 2021 14:18:29 +0200 Subject: [PATCH 376/553] - Fix RPZ locks. Do not unlock zones lock if requested and rpz find zone does not find the zone. Readlock the clientip that is found for ipbased triggers. Unlock the nsdname zone lock when done. Unlock zone and ip in rpz nsip and nsdname callback. Unlock authzone and localzone if clientip found in rpz worker call. --- doc/Changelog | 5 +++++ services/rpz.c | 34 ++++++++++++++++++++++++++++------ 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index ed7da6ace..4a476a853 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -7,6 +7,11 @@ to insert into RPZ. - Fix the stream wait stream_wait_count_lock and http2 buffer locks setup and desetup from race condition. + - Fix RPZ locks. Do not unlock zones lock if requested and rpz find + zone does not find the zone. Readlock the clientip that is found + for ipbased triggers. Unlock the nsdname zone lock when done. + Unlock zone and ip in rpz nsip and nsdname callback. Unlock + authzone and localzone if clientip found in rpz worker call. 20 August 2021: Wouter - Fix #529: Fix: log_assert does nothing if UNBOUND_DEBUG is diff --git a/services/rpz.c b/services/rpz.c index 085353b3f..57b22d312 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -1121,7 +1121,9 @@ rpz_find_zone(struct local_zones* zones, uint8_t* qname, size_t qname_len, uint1 dname_count_labels(qname), LDNS_RR_CLASS_IN, &exact); if(!z || (only_exact && !exact)) { - lock_rw_unlock(&zones->lock); + if(!zones_keep_lock) { + lock_rw_unlock(&zones->lock); + } return NULL; } if(wr) { @@ -1420,6 +1422,7 @@ rpz_ipbased_trigger_lookup(struct clientip_synthesized_rrset* set, raddr = (struct clientip_synthesized_rr*)addr_tree_lookup(&set->entries, addr, addrlen); if(raddr != NULL) { + lock_rw_rdlock(&raddr->lock); action = raddr->action; if(verbosity >= VERB_ALGO) { char ip[256], net[256]; @@ -1429,7 +1432,6 @@ rpz_ipbased_trigger_lookup(struct clientip_synthesized_rrset* set, verbose(VERB_ALGO, "rpz: trigger %s %s/%d on %s action=%s", triggername, net, raddr->node.net, ip, rpz_action_to_string(action)); } - lock_rw_unlock(&raddr->lock); } lock_rw_unlock(&set->lock); @@ -2056,6 +2058,7 @@ rpz_apply_nsdname_trigger(struct module_qstate* ms, struct rpz* r, action, &ms->qinfo, NULL, ms, r->log_name); if(ms->env->worker) ms->env->worker->stats.rpz_action[action]++; + lock_rw_unlock(&z->lock); return ret; } @@ -2148,9 +2151,17 @@ rpz_callback_from_iterator_module(struct module_qstate* ms, struct iter_qstate* lock_rw_unlock(&az->rpz_lock); if(raddr == NULL && z == NULL) { return NULL; } - else if(raddr != NULL) { return rpz_apply_nsip_trigger(ms, r, raddr, a); } - else if(z != NULL) { return rpz_apply_nsdname_trigger(ms, r, z, &match, a); } - else { return NULL; } + else if(raddr != NULL) { + if(z) { + lock_rw_unlock(&z->lock); + } + return rpz_apply_nsip_trigger(ms, r, raddr, a); + } else if(z != NULL) { + if(raddr) { + lock_rw_unlock(&raddr->lock); + } + return rpz_apply_nsdname_trigger(ms, r, z, &match, a); + } else { return NULL; } } struct dns_msg* rpz_callback_from_iterator_cname(struct module_qstate* ms, @@ -2313,9 +2324,20 @@ rpz_callback_from_worker_request(struct auth_zones* az, struct module_env* env, int clientip_trigger = rpz_apply_maybe_clientip_trigger(az, env, qinfo, edns, repinfo, taglist, taglen, stats, buf, temp, &z, &a, &r); - if(clientip_trigger >= 0) { return clientip_trigger; } + if(clientip_trigger >= 0) { + if(a) { + lock_rw_unlock(&a->lock); + } + if(z) { + lock_rw_unlock(&z->lock); + } + return clientip_trigger; + } if(z == NULL) { + if(a) { + lock_rw_unlock(&a->lock); + } return 0; } From 1ea624d0c779321b5a9d0fe4697c12d4f9d29749 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 25 Aug 2021 14:51:59 +0200 Subject: [PATCH 377/553] - Fix compile warning in libunbound for listen desetup routine. --- doc/Changelog | 1 + libunbound/libunbound.c | 1 + 2 files changed, 2 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 4a476a853..f3a3d3b12 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -12,6 +12,7 @@ for ipbased triggers. Unlock the nsdname zone lock when done. Unlock zone and ip in rpz nsip and nsdname callback. Unlock authzone and localzone if clientip found in rpz worker call. + - Fix compile warning in libunbound for listen desetup routine. 20 August 2021: Wouter - Fix #529: Fix: log_assert does nothing if UNBOUND_DEBUG is diff --git a/libunbound/libunbound.c b/libunbound/libunbound.c index 8ec8e417a..038b7b927 100644 --- a/libunbound/libunbound.c +++ b/libunbound/libunbound.c @@ -64,6 +64,7 @@ #include "services/cache/infra.h" #include "services/cache/rrset.h" #include "services/authzone.h" +#include "services/listen_dnsport.h" #include "sldns/sbuffer.h" #ifdef HAVE_PTHREAD #include From 087a7ff95e7e7626fd992a12b8d4661de73c90cd Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 25 Aug 2021 16:19:12 +0200 Subject: [PATCH 378/553] - Fix asynclook unit test for setup of lockchecks before log. --- doc/Changelog | 1 + testcode/asynclook.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index f3a3d3b12..ef467c129 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -13,6 +13,7 @@ Unlock zone and ip in rpz nsip and nsdname callback. Unlock authzone and localzone if clientip found in rpz worker call. - Fix compile warning in libunbound for listen desetup routine. + - Fix asynclook unit test for setup of lockchecks before log. 20 August 2021: Wouter - Fix #529: Fix: log_assert does nothing if UNBOUND_DEBUG is diff --git a/testcode/asynclook.c b/testcode/asynclook.c index 660f72a7d..fffd14ed5 100644 --- a/testcode/asynclook.c +++ b/testcode/asynclook.c @@ -406,10 +406,10 @@ int main(int argc, char** argv) struct lookinfo* lookups; int i, r, cancel=0, blocking=0, ext=0; + checklock_start(); /* init log now because solaris thr_key_create() is not threadsafe */ log_init(0,0,0); /* lock debug start (if any) */ - checklock_start(); /* create context */ ctx = ub_ctx_create(); From 4b2799fdd6190f8e7c86ebc4bcb3e06031694a35 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 27 Aug 2021 10:33:21 +0200 Subject: [PATCH 379/553] - Fix #533: Negative responses get cached even when setting cache-max-negative-ttl: 1 --- doc/Changelog | 4 ++++ util/data/msgreply.c | 8 ++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index ef467c129..2758e9c52 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +27 August 2021: Wouter + - Fix #533: Negative responses get cached even when setting + cache-max-negative-ttl: 1 + 25 August 2021: Wouter - Merge #401: RPZ triggers. This add additional RPZ triggers, unbound supports a full set of rpz triggers, and this now diff --git a/util/data/msgreply.c b/util/data/msgreply.c index 4f6d3398b..16441a79d 100644 --- a/util/data/msgreply.c +++ b/util/data/msgreply.c @@ -222,13 +222,17 @@ rdata_copy(sldns_buffer* pkt, struct packed_rrset_data* data, uint8_t* to, * minimum-ttl in the rdata of the SOA record */ if(*rr_ttl > soa_find_minttl(rr)) *rr_ttl = soa_find_minttl(rr); - if(*rr_ttl > MAX_NEG_TTL) - *rr_ttl = MAX_NEG_TTL; } if(!SERVE_ORIGINAL_TTL && (*rr_ttl < MIN_TTL)) *rr_ttl = MIN_TTL; if(!SERVE_ORIGINAL_TTL && (*rr_ttl > MAX_TTL)) *rr_ttl = MAX_TTL; + if(type == LDNS_RR_TYPE_SOA && section == LDNS_SECTION_AUTHORITY) { + /* max neg ttl overrides the min and max ttl of everything + * else, it is for a more specific record */ + if(*rr_ttl > MAX_NEG_TTL) + *rr_ttl = MAX_NEG_TTL; + } if(*rr_ttl < data->ttl) data->ttl = *rr_ttl; From 520fa842655a056050f7f63b0260160adb4f1ce0 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 1 Sep 2021 16:21:10 +0200 Subject: [PATCH 380/553] - Fix tcp fastopen failure when disabled, try normal connect instead. --- doc/Changelog | 3 +++ util/netevent.c | 15 ++++++++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 2758e9c52..8f1c851c7 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +1 September 2021: Wouter + - Fix tcp fastopen failure when disabled, try normal connect instead. + 27 August 2021: Wouter - Fix #533: Negative responses get cached even when setting cache-max-negative-ttl: 1 diff --git a/util/netevent.c b/util/netevent.c index e3eed838f..9a3b210b2 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -1863,13 +1863,22 @@ comm_point_tcp_handle_write(int fd, struct comm_point* c) if(errno == EINTR || errno == EAGAIN) return 1; /* Not handling EISCONN here as shouldn't ever hit that case.*/ - if(errno != EPIPE && errno != 0 && verbosity < 2) - return 0; /* silence lots of chatter in the logs */ - if(errno != EPIPE && errno != 0) { + if(errno != EPIPE +#ifdef EOPNOTSUPP + /* if /proc/sys/net/ipv4/tcp_fastopen is + * disabled on Linux, sendmsg may return + * 'Operation not supported', if so + * fallthrough to ordinary connect. */ + && errno != EOPNOTSUPP +#endif + && errno != 0) { + if(verbosity < 2) + return 0; /* silence lots of chatter in the logs */ log_err_addr("tcp sendmsg", strerror(errno), &c->repinfo.addr, c->repinfo.addrlen); return 0; } + verbose(VERB_ALGO, "tcp sendmsg for fastopen failed (with %s), try normal connect", strerror(errno)); /* fallthrough to nonFASTOPEN * (MSG_FASTOPEN on Linux 3 produces EPIPE) * we need to perform connect() */ From ebb4987146804f90e212e149f0991f5280b11a4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20du=20Bo=C3=BFs?= Date: Fri, 3 Sep 2021 09:59:15 +0200 Subject: [PATCH 381/553] Fix subnetcache statistics --- daemon/remote.c | 2 +- daemon/stats.c | 2 +- daemon/worker.c | 4 ++-- util/shm_side/shm_main.c | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/daemon/remote.c b/daemon/remote.c index 923ddefa4..adf038389 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -813,7 +813,7 @@ print_mem(RES* ssl, struct worker* worker, struct daemon* daemon, iter = mod_get_mem(&worker->env, "iterator"); respip = mod_get_mem(&worker->env, "respip"); #ifdef CLIENT_SUBNET - subnet = mod_get_mem(&worker->env, "subnet"); + subnet = mod_get_mem(&worker->env, "subnetcache"); #endif /* CLIENT_SUBNET */ #ifdef USE_IPSECMOD ipsecmod = mod_get_mem(&worker->env, "ipsecmod"); diff --git a/daemon/stats.c b/daemon/stats.c index 8720a52d6..d08f18dbb 100644 --- a/daemon/stats.c +++ b/daemon/stats.c @@ -137,7 +137,7 @@ static void set_subnet_stats(struct worker* worker, struct ub_server_stats* svr, int reset) { - int m = modstack_find(&worker->env.mesh->mods, "subnet"); + int m = modstack_find(&worker->env.mesh->mods, "subnetcache"); struct subnet_env* sne; if(m == -1) return; diff --git a/daemon/worker.c b/daemon/worker.c index b3b74c3af..93215a237 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -146,7 +146,7 @@ worker_mem_report(struct worker* ATTR_UNUSED(worker), (&worker->env, i); #ifdef CLIENT_SUBNET else if(strcmp(worker->env.mesh->mods.mod[i]->name, - "subnet")==0) + "subnetcache")==0) subnet += (*worker->env.mesh->mods.mod[i]->get_mem) (&worker->env, i); #endif /* CLIENT_SUBNET */ @@ -205,7 +205,7 @@ worker_mem_report(struct worker* ATTR_UNUSED(worker), (&worker->env, i); #ifdef CLIENT_SUBNET else if(strcmp(worker->env.mesh->mods.mod[i]->name, - "subnet")==0) + "subnetcache")==0) subnet += (*worker->env.mesh->mods.mod[i]->get_mem) (&worker->env, i); #endif /* CLIENT_SUBNET */ diff --git a/util/shm_side/shm_main.c b/util/shm_side/shm_main.c index 51039abf3..6fd1f5ea6 100644 --- a/util/shm_side/shm_main.c +++ b/util/shm_side/shm_main.c @@ -281,7 +281,7 @@ void shm_main_run(struct worker *worker) shm_stat->mem.subnet = 0; #ifdef CLIENT_SUBNET shm_stat->mem.subnet = (long long)mod_get_mem(&worker->env, - "subnet"); + "subnetcache"); #endif /* ipsecmod mem value is available in shm, also when not enabled, * to make the struct easier to memmap by other applications, From 48995dba21a53f0b31ff1d7973a0575b43b85d51 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 3 Sep 2021 16:41:21 +0200 Subject: [PATCH 382/553] Changelog entry for #538 - Fix #538: Fix subnetcache statistics. --- doc/Changelog | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 8f1c851c7..e0610e957 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +3 September 2021: Wouter + - Fix #538: Fix subnetcache statistics. + 1 September 2021: Wouter - Fix tcp fastopen failure when disabled, try normal connect instead. From 750f46d1aaf9419eff45225e40fb03db0ce7ad86 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 8 Sep 2021 14:52:56 +0200 Subject: [PATCH 383/553] - Small fixes for #41: changelog, conflicts resolved, processQueryResponse takes an iterator env argument like other functions in the iterator, no colon in string for set_option, and some whitespace style, to make it similar to the rest. --- doc/Changelog | 4 + iterator/iterator.c | 9 +- util/config_file.c | 2 +- util/configparser.c | 1447 ++++++++++++++++++++++--------------------- util/configparser.y | 106 ++-- 5 files changed, 791 insertions(+), 777 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index dbd5dcfe0..6592d3207 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,10 @@ 8 September 2021: Wouter - Merged #41 from Moritz Schneider: made outbound-msg-retry configurable. + - Small fixes for #41: changelog, conflicts resolved, + processQueryResponse takes an iterator env argument like other + functions in the iterator, no colon in string for set_option, + and some whitespace style, to make it similar to the rest. 3 September 2021: Wouter - Fix #538: Fix subnetcache statistics. diff --git a/iterator/iterator.c b/iterator/iterator.c index cd8b23b67..45e9f7bf4 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -2725,6 +2725,7 @@ find_NS(struct reply_info* rep, size_t from, size_t to) * * @param qstate: query state. * @param iq: iterator query state. + * @param ie: iterator shared global environment. * @param id: module id. * @return true if the event requires more immediate processing, false if * not. This is generally only true when forwarding the request to @@ -2732,7 +2733,7 @@ find_NS(struct reply_info* rep, size_t from, size_t to) */ static int processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq, - int id, size_t outbound_msg_retry) + struct iter_env* ie, int id) { int dnsseclame = 0; enum response_type type; @@ -3002,7 +3003,8 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq, } if(iq->store_parent_NS && query_dname_compare(iq->dp->name, iq->store_parent_NS->name) == 0) - iter_merge_retry_counts(iq->dp, iq->store_parent_NS, outbound_msg_retry); + iter_merge_retry_counts(iq->dp, iq->store_parent_NS, + ie->outbound_msg_retry); delegpt_log(VERB_ALGO, iq->dp); /* Count this as a referral. */ iq->referral_count++; @@ -3746,8 +3748,7 @@ iter_handle(struct module_qstate* qstate, struct iter_qstate* iq, cont = processQueryTargets(qstate, iq, ie, id); break; case QUERY_RESP_STATE: - cont = processQueryResponse( - qstate, iq, id, ie->outbound_msg_retry); + cont = processQueryResponse(qstate, iq, ie, id); break; case PRIME_RESP_STATE: cont = processPrimeResponse(qstate, id); diff --git a/util/config_file.c b/util/config_file.c index 834f4e848..a68099e58 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -753,7 +753,7 @@ int config_set_option(struct config_file* cfg, const char* opt, else S_POW2("ratelimit-slabs:", ratelimit_slabs) else S_NUMBER_OR_ZERO("ip-ratelimit-factor:", ip_ratelimit_factor) else S_NUMBER_OR_ZERO("ratelimit-factor:", ratelimit_factor) - else S_SIZET_NONZERO("outbound-msg-retry", outbound_msg_retry) + else S_SIZET_NONZERO("outbound-msg-retry:", outbound_msg_retry) else S_SIZET_NONZERO("fast-server-num:", fast_server_num) else S_NUMBER_OR_ZERO("fast-server-permil:", fast_server_permil) else S_YNO("qname-minimisation:", qname_minimisation) diff --git a/util/configparser.c b/util/configparser.c index f4613971b..2f1556501 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -1899,49 +1899,49 @@ static const yytype_int16 yyrline[] = 298, 298, 299, 299, 300, 300, 301, 301, 302, 302, 302, 303, 303, 303, 304, 304, 304, 305, 305, 306, 306, 307, 307, 308, 308, 309, 309, 310, 310, 311, - 311, 314, 326, 327, 328, 328, 328, 328, 328, 329, - 329, 329, 331, 343, 344, 345, 345, 345, 345, 346, - 346, 346, 348, 362, 363, 364, 364, 364, 364, 365, - 365, 365, 367, 386, 387, 388, 388, 388, 388, 389, - 389, 389, 390, 390, 390, 393, 412, 429, 437, 447, - 455, 472, 473, 474, 474, 474, 474, 474, 475, 475, - 475, 476, 476, 478, 487, 496, 507, 516, 525, 534, - 545, 554, 566, 580, 595, 606, 623, 640, 657, 674, - 689, 704, 717, 732, 741, 750, 759, 768, 777, 786, - 795, 804, 813, 822, 831, 840, 849, 858, 871, 882, - 893, 904, 913, 926, 935, 944, 953, 960, 967, 976, - 983, 992, 1000, 1007, 1014, 1022, 1031, 1039, 1055, 1063, - 1071, 1079, 1087, 1095, 1104, 1113, 1127, 1136, 1145, 1154, - 1163, 1172, 1181, 1188, 1195, 1221, 1229, 1236, 1243, 1250, - 1257, 1265, 1273, 1281, 1288, 1299, 1310, 1317, 1326, 1335, - 1344, 1353, 1360, 1367, 1374, 1390, 1398, 1406, 1416, 1426, - 1436, 1450, 1458, 1471, 1482, 1490, 1503, 1512, 1521, 1530, - 1539, 1549, 1559, 1567, 1580, 1589, 1597, 1606, 1614, 1627, - 1636, 1646, 1653, 1663, 1673, 1683, 1693, 1703, 1713, 1723, - 1733, 1740, 1747, 1754, 1763, 1772, 1781, 1790, 1797, 1807, - 1827, 1834, 1852, 1865, 1878, 1891, 1900, 1909, 1918, 1927, - 1937, 1947, 1958, 1967, 1976, 1985, 1994, 2003, 2012, 2021, - 2034, 2047, 2056, 2063, 2072, 2081, 2090, 2099, 2108, 2116, - 2129, 2137, 2182, 2189, 2204, 2214, 2224, 2231, 2238, 2245, - 2254, 2262, 2276, 2297, 2318, 2330, 2342, 2354, 2363, 2384, - 2394, 2403, 2411, 2419, 2432, 2445, 2460, 2475, 2484, 2493, - 2502, 2508, 2517, 2526, 2536, 2546, 2556, 2565, 2575, 2584, - 2597, 2610, 2622, 2636, 2648, 2662, 2671, 2683, 2693, 2700, - 2707, 2716, 2725, 2735, 2745, 2755, 2765, 2772, 2779, 2788, - 2797, 2807, 2817, 2827, 2834, 2841, 2848, 2856, 2866, 2876, - 2886, 2896, 2906, 2916, 2962, 2972, 2980, 2988, 3003, 3012, - 3017, 3018, 3019, 3019, 3019, 3020, 3020, 3020, 3021, 3021, - 3023, 3033, 3042, 3049, 3056, 3063, 3070, 3077, 3084, 3089, - 3090, 3091, 3091, 3091, 3092, 3092, 3092, 3093, 3094, 3094, - 3095, 3095, 3096, 3096, 3097, 3098, 3099, 3100, 3101, 3102, - 3104, 3113, 3123, 3130, 3137, 3146, 3153, 3160, 3167, 3174, - 3183, 3192, 3199, 3206, 3216, 3226, 3236, 3246, 3256, 3266, - 3271, 3272, 3273, 3275, 3281, 3286, 3287, 3288, 3290, 3296, - 3306, 3313, 3322, 3330, 3335, 3336, 3338, 3338, 3338, 3339, - 3339, 3340, 3341, 3342, 3343, 3344, 3346, 3356, 3365, 3372, - 3381, 3388, 3397, 3405, 3418, 3426, 3439, 3444, 3445, 3446, - 3446, 3447, 3447, 3447, 3448, 3450, 3462, 3474, 3486, 3501, - 3514, 3527, 3538, 3543, 3544, 3545, 3545, 3547, 3562 + 311, 314, 327, 328, 329, 329, 329, 329, 329, 330, + 330, 330, 332, 345, 346, 347, 347, 347, 347, 348, + 348, 348, 350, 365, 366, 367, 367, 367, 367, 368, + 368, 368, 370, 390, 391, 392, 392, 392, 392, 393, + 393, 393, 394, 394, 394, 397, 416, 433, 441, 451, + 459, 477, 478, 479, 479, 479, 479, 479, 480, 480, + 480, 481, 481, 483, 492, 501, 512, 521, 530, 539, + 550, 559, 571, 585, 600, 611, 628, 645, 662, 679, + 694, 709, 722, 737, 746, 755, 764, 773, 782, 791, + 800, 809, 818, 827, 836, 845, 854, 863, 876, 887, + 898, 909, 918, 931, 940, 949, 958, 965, 972, 981, + 988, 997, 1005, 1012, 1019, 1027, 1036, 1044, 1060, 1068, + 1076, 1084, 1092, 1100, 1109, 1118, 1132, 1141, 1150, 1159, + 1168, 1177, 1186, 1193, 1200, 1226, 1234, 1241, 1248, 1255, + 1262, 1270, 1278, 1286, 1293, 1304, 1315, 1322, 1331, 1340, + 1349, 1358, 1365, 1372, 1379, 1395, 1403, 1411, 1421, 1431, + 1441, 1455, 1463, 1476, 1487, 1495, 1508, 1517, 1526, 1535, + 1544, 1554, 1564, 1572, 1585, 1594, 1602, 1611, 1619, 1632, + 1641, 1651, 1658, 1668, 1678, 1688, 1698, 1708, 1718, 1728, + 1738, 1745, 1752, 1759, 1768, 1777, 1786, 1795, 1802, 1812, + 1832, 1839, 1857, 1870, 1883, 1896, 1905, 1914, 1923, 1932, + 1942, 1952, 1963, 1972, 1981, 1990, 1999, 2008, 2017, 2026, + 2039, 2052, 2061, 2068, 2077, 2086, 2095, 2104, 2113, 2121, + 2134, 2142, 2187, 2194, 2209, 2219, 2229, 2236, 2243, 2250, + 2259, 2267, 2281, 2302, 2323, 2335, 2347, 2359, 2368, 2389, + 2398, 2407, 2415, 2423, 2436, 2449, 2464, 2479, 2488, 2497, + 2506, 2512, 2521, 2530, 2540, 2550, 2560, 2569, 2579, 2588, + 2601, 2614, 2626, 2640, 2652, 2666, 2675, 2687, 2697, 2704, + 2711, 2720, 2729, 2739, 2749, 2759, 2769, 2776, 2783, 2792, + 2801, 2811, 2821, 2831, 2838, 2845, 2852, 2860, 2870, 2880, + 2890, 2900, 2910, 2920, 2966, 2976, 2984, 2992, 3007, 3016, + 3021, 3022, 3023, 3023, 3023, 3024, 3024, 3024, 3025, 3025, + 3027, 3037, 3046, 3053, 3060, 3067, 3074, 3081, 3088, 3093, + 3094, 3095, 3095, 3095, 3096, 3096, 3096, 3097, 3098, 3098, + 3099, 3099, 3100, 3100, 3101, 3102, 3103, 3104, 3105, 3106, + 3108, 3117, 3127, 3134, 3141, 3150, 3157, 3164, 3171, 3178, + 3187, 3196, 3203, 3210, 3220, 3230, 3240, 3250, 3260, 3270, + 3275, 3276, 3277, 3279, 3285, 3290, 3291, 3292, 3294, 3300, + 3310, 3317, 3326, 3334, 3339, 3340, 3342, 3342, 3342, 3343, + 3343, 3344, 3345, 3346, 3347, 3348, 3350, 3360, 3369, 3376, + 3385, 3392, 3401, 3409, 3422, 3430, 3443, 3448, 3449, 3450, + 3450, 3451, 3451, 3451, 3452, 3454, 3466, 3478, 3490, 3505, + 3518, 3531, 3542, 3547, 3548, 3549, 3549, 3551, 3566 }; #endif @@ -3469,14 +3469,15 @@ yyreduce: if(s) { s->next = cfg_parser->cfg->stubs; cfg_parser->cfg->stubs = s; - } else + } else { yyerror("out of memory"); + } } -#line 3476 "util/configparser.c" +#line 3477 "util/configparser.c" break; case 252: -#line 332 "./util/configparser.y" +#line 333 "./util/configparser.y" { struct config_stub* s; OUTYY(("\nP(forward_zone:)\n")); @@ -3484,14 +3485,15 @@ yyreduce: if(s) { s->next = cfg_parser->cfg->forwards; cfg_parser->cfg->forwards = s; - } else + } else { yyerror("out of memory"); + } } -#line 3491 "util/configparser.c" +#line 3493 "util/configparser.c" break; case 262: -#line 349 "./util/configparser.y" +#line 351 "./util/configparser.y" { struct config_view* s; OUTYY(("\nP(view:)\n")); @@ -3501,14 +3503,15 @@ yyreduce: if(s->next && !s->next->name) yyerror("view without name"); cfg_parser->cfg->views = s; - } else + } else { yyerror("out of memory"); + } } -#line 3508 "util/configparser.c" +#line 3511 "util/configparser.c" break; case 272: -#line 368 "./util/configparser.y" +#line 371 "./util/configparser.y" { struct config_auth* s; OUTYY(("\nP(auth_zone:)\n")); @@ -3523,14 +3526,15 @@ yyreduce: s->zonemd_check = 0; s->zonemd_reject_absence = 0; s->isrpz = 0; - } else + } else { yyerror("out of memory"); + } } -#line 3530 "util/configparser.c" +#line 3534 "util/configparser.c" break; case 285: -#line 394 "./util/configparser.y" +#line 398 "./util/configparser.y" { uint8_t* bitlist; size_t len = 0; @@ -3547,11 +3551,11 @@ yyreduce: } } -#line 3551 "util/configparser.c" +#line 3555 "util/configparser.c" break; case 286: -#line 413 "./util/configparser.y" +#line 417 "./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 && @@ -3566,21 +3570,21 @@ yyreduce: cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); } } -#line 3570 "util/configparser.c" +#line 3574 "util/configparser.c" break; case 287: -#line 430 "./util/configparser.y" +#line 434 "./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 3580 "util/configparser.c" +#line 3584 "util/configparser.c" break; case 288: -#line 438 "./util/configparser.y" +#line 442 "./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) @@ -3588,21 +3592,21 @@ yyreduce: else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3592 "util/configparser.c" +#line 3596 "util/configparser.c" break; case 289: -#line 448 "./util/configparser.y" +#line 452 "./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 3602 "util/configparser.c" +#line 3606 "util/configparser.c" break; case 290: -#line 456 "./util/configparser.y" +#line 460 "./util/configparser.y" { struct config_auth* s; OUTYY(("\nP(rpz:)\n")); @@ -3615,14 +3619,15 @@ yyreduce: s->for_upstream = 0; s->fallback_enabled = 0; s->isrpz = 1; - } else + } else { yyerror("out of memory"); + } } -#line 3622 "util/configparser.c" +#line 3627 "util/configparser.c" break; case 303: -#line 479 "./util/configparser.y" +#line 484 "./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) @@ -3630,11 +3635,11 @@ yyreduce: else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3634 "util/configparser.c" +#line 3639 "util/configparser.c" break; case 304: -#line 488 "./util/configparser.y" +#line 493 "./util/configparser.y" { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3642,11 +3647,11 @@ yyreduce: else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3646 "util/configparser.c" +#line 3651 "util/configparser.c" break; case 305: -#line 497 "./util/configparser.y" +#line 502 "./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) @@ -3656,11 +3661,11 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3660 "util/configparser.c" +#line 3665 "util/configparser.c" break; case 306: -#line 508 "./util/configparser.y" +#line 513 "./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) @@ -3668,11 +3673,11 @@ yyreduce: else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3672 "util/configparser.c" +#line 3677 "util/configparser.c" break; case 307: -#line 517 "./util/configparser.y" +#line 522 "./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) @@ -3680,11 +3685,11 @@ yyreduce: else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3684 "util/configparser.c" +#line 3689 "util/configparser.c" break; case 308: -#line 526 "./util/configparser.y" +#line 531 "./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) @@ -3692,11 +3697,11 @@ yyreduce: else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3696 "util/configparser.c" +#line 3701 "util/configparser.c" break; case 309: -#line 535 "./util/configparser.y" +#line 540 "./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) @@ -3706,11 +3711,11 @@ yyreduce: else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3710 "util/configparser.c" +#line 3715 "util/configparser.c" break; case 310: -#line 546 "./util/configparser.y" +#line 551 "./util/configparser.y" { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3718,11 +3723,11 @@ yyreduce: else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3722 "util/configparser.c" +#line 3727 "util/configparser.c" break; case 311: -#line 555 "./util/configparser.y" +#line 560 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str))); @@ -3733,11 +3738,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3737 "util/configparser.c" +#line 3742 "util/configparser.c" break; case 312: -#line 567 "./util/configparser.y" +#line 572 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str))); @@ -3749,11 +3754,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3753 "util/configparser.c" +#line 3758 "util/configparser.c" break; case 313: -#line 581 "./util/configparser.y" +#line 586 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str))); @@ -3767,11 +3772,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3771 "util/configparser.c" +#line 3776 "util/configparser.c" break; case 314: -#line 596 "./util/configparser.y" +#line 601 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str))); @@ -3781,11 +3786,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3785 "util/configparser.c" +#line 3790 "util/configparser.c" break; case 315: -#line 607 "./util/configparser.y" +#line 612 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -3801,11 +3806,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3805 "util/configparser.c" +#line 3810 "util/configparser.c" break; case 316: -#line 624 "./util/configparser.y" +#line 629 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3821,11 +3826,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3825 "util/configparser.c" +#line 3830 "util/configparser.c" break; case 317: -#line 641 "./util/configparser.y" +#line 646 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -3841,11 +3846,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3845 "util/configparser.c" +#line 3850 "util/configparser.c" break; case 318: -#line 658 "./util/configparser.y" +#line 663 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3861,11 +3866,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3865 "util/configparser.c" +#line 3870 "util/configparser.c" break; case 319: -#line 675 "./util/configparser.y" +#line 680 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str))); @@ -3879,11 +3884,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3883 "util/configparser.c" +#line 3888 "util/configparser.c" break; case 320: -#line 690 "./util/configparser.y" +#line 695 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str))); @@ -3897,11 +3902,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3901 "util/configparser.c" +#line 3906 "util/configparser.c" break; case 321: -#line 705 "./util/configparser.y" +#line 710 "./util/configparser.y" { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_ifs == 0) @@ -3913,11 +3918,11 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 3917 "util/configparser.c" +#line 3922 "util/configparser.c" break; case 322: -#line 718 "./util/configparser.y" +#line 723 "./util/configparser.y" { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_out_ifs == 0) @@ -3931,11 +3936,11 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 3935 "util/configparser.c" +#line 3940 "util/configparser.c" break; case 323: -#line 733 "./util/configparser.y" +#line 738 "./util/configparser.y" { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3943,11 +3948,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3947 "util/configparser.c" +#line 3952 "util/configparser.c" break; case 324: -#line 742 "./util/configparser.y" +#line 747 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 1, @@ -3955,11 +3960,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3959 "util/configparser.c" +#line 3964 "util/configparser.c" break; case 325: -#line 751 "./util/configparser.y" +#line 756 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 0, @@ -3967,11 +3972,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3971 "util/configparser.c" +#line 3976 "util/configparser.c" break; case 326: -#line 760 "./util/configparser.y" +#line 765 "./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) @@ -3979,11 +3984,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3983 "util/configparser.c" +#line 3988 "util/configparser.c" break; case 327: -#line 769 "./util/configparser.y" +#line 774 "./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) @@ -3991,11 +3996,11 @@ yyreduce: else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3995 "util/configparser.c" +#line 4000 "util/configparser.c" break; case 328: -#line 778 "./util/configparser.y" +#line 783 "./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) @@ -4003,11 +4008,11 @@ yyreduce: else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4007 "util/configparser.c" +#line 4012 "util/configparser.c" break; case 329: -#line 787 "./util/configparser.y" +#line 792 "./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) @@ -4015,11 +4020,11 @@ yyreduce: else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4019 "util/configparser.c" +#line 4024 "util/configparser.c" break; case 330: -#line 796 "./util/configparser.y" +#line 801 "./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) @@ -4027,11 +4032,11 @@ yyreduce: else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4031 "util/configparser.c" +#line 4036 "util/configparser.c" break; case 331: -#line 805 "./util/configparser.y" +#line 810 "./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) @@ -4039,11 +4044,11 @@ yyreduce: else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4043 "util/configparser.c" +#line 4048 "util/configparser.c" break; case 332: -#line 814 "./util/configparser.y" +#line 819 "./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) @@ -4051,11 +4056,11 @@ yyreduce: else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4055 "util/configparser.c" +#line 4060 "util/configparser.c" break; case 333: -#line 823 "./util/configparser.y" +#line 828 "./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) @@ -4063,11 +4068,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4067 "util/configparser.c" +#line 4072 "util/configparser.c" break; case 334: -#line 832 "./util/configparser.y" +#line 837 "./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) @@ -4075,11 +4080,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4079 "util/configparser.c" +#line 4084 "util/configparser.c" break; case 335: -#line 841 "./util/configparser.y" +#line 846 "./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) @@ -4087,11 +4092,11 @@ yyreduce: else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4091 "util/configparser.c" +#line 4096 "util/configparser.c" break; case 336: -#line 850 "./util/configparser.y" +#line 855 "./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) @@ -4099,11 +4104,11 @@ yyreduce: else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4103 "util/configparser.c" +#line 4108 "util/configparser.c" break; case 337: -#line 859 "./util/configparser.y" +#line 864 "./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) @@ -4115,11 +4120,11 @@ yyreduce: else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4119 "util/configparser.c" +#line 4124 "util/configparser.c" break; case 338: -#line 872 "./util/configparser.y" +#line 877 "./util/configparser.y" { OUTYY(("P(server_max_reuse_tcp_queries:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4129,11 +4134,11 @@ yyreduce: else cfg_parser->cfg->max_reuse_tcp_queries = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4133 "util/configparser.c" +#line 4138 "util/configparser.c" break; case 339: -#line 883 "./util/configparser.y" +#line 888 "./util/configparser.y" { OUTYY(("P(server_tcp_reuse_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4143,11 +4148,11 @@ yyreduce: else cfg_parser->cfg->tcp_reuse_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4147 "util/configparser.c" +#line 4152 "util/configparser.c" break; case 340: -#line 894 "./util/configparser.y" +#line 899 "./util/configparser.y" { OUTYY(("P(server_tcp_auth_query_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4157,11 +4162,11 @@ yyreduce: else cfg_parser->cfg->tcp_auth_query_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4161 "util/configparser.c" +#line 4166 "util/configparser.c" break; case 341: -#line 905 "./util/configparser.y" +#line 910 "./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) @@ -4169,11 +4174,11 @@ yyreduce: else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4173 "util/configparser.c" +#line 4178 "util/configparser.c" break; case 342: -#line 914 "./util/configparser.y" +#line 919 "./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) @@ -4185,11 +4190,11 @@ yyreduce: else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4189 "util/configparser.c" +#line 4194 "util/configparser.c" break; case 343: -#line 927 "./util/configparser.y" +#line 932 "./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) @@ -4197,11 +4202,11 @@ yyreduce: else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4201 "util/configparser.c" +#line 4206 "util/configparser.c" break; case 344: -#line 936 "./util/configparser.y" +#line 941 "./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) @@ -4209,11 +4214,11 @@ yyreduce: else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4213 "util/configparser.c" +#line 4218 "util/configparser.c" break; case 345: -#line 945 "./util/configparser.y" +#line 950 "./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) @@ -4221,31 +4226,31 @@ yyreduce: else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4225 "util/configparser.c" +#line 4230 "util/configparser.c" break; case 346: -#line 954 "./util/configparser.y" +#line 959 "./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 4235 "util/configparser.c" +#line 4240 "util/configparser.c" break; case 347: -#line 961 "./util/configparser.y" +#line 966 "./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 4245 "util/configparser.c" +#line 4250 "util/configparser.c" break; case 348: -#line 968 "./util/configparser.y" +#line 973 "./util/configparser.y" { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4253,21 +4258,21 @@ yyreduce: else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4257 "util/configparser.c" +#line 4262 "util/configparser.c" break; case 349: -#line 977 "./util/configparser.y" +#line 982 "./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 4267 "util/configparser.c" +#line 4272 "util/configparser.c" break; case 350: -#line 984 "./util/configparser.y" +#line 989 "./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) @@ -4275,53 +4280,53 @@ yyreduce: else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4279 "util/configparser.c" +#line 4284 "util/configparser.c" break; case 351: -#line 993 "./util/configparser.y" +#line 998 "./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 4290 "util/configparser.c" +#line 4295 "util/configparser.c" break; case 352: -#line 1001 "./util/configparser.y" +#line 1006 "./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 4300 "util/configparser.c" +#line 4305 "util/configparser.c" break; case 353: -#line 1008 "./util/configparser.y" +#line 1013 "./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 4310 "util/configparser.c" +#line 4315 "util/configparser.c" break; case 354: -#line 1015 "./util/configparser.y" +#line 1020 "./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 4321 "util/configparser.c" +#line 4326 "util/configparser.c" break; case 355: -#line 1023 "./util/configparser.y" +#line 1028 "./util/configparser.y" { OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4329,11 +4334,11 @@ yyreduce: else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4333 "util/configparser.c" +#line 4338 "util/configparser.c" break; case 356: -#line 1032 "./util/configparser.y" +#line 1037 "./util/configparser.y" { OUTYY(("P(server_https_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4341,11 +4346,11 @@ yyreduce: else cfg_parser->cfg->https_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4345 "util/configparser.c" +#line 4350 "util/configparser.c" break; case 357: -#line 1040 "./util/configparser.y" +#line 1045 "./util/configparser.y" { OUTYY(("P(server_http_endpoint:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->http_endpoint); @@ -4361,11 +4366,11 @@ yyreduce: cfg_parser->cfg->http_endpoint = (yyvsp[0].str); } } -#line 4365 "util/configparser.c" +#line 4370 "util/configparser.c" break; case 358: -#line 1056 "./util/configparser.y" +#line 1061 "./util/configparser.y" { OUTYY(("P(server_http_max_streams:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4373,11 +4378,11 @@ yyreduce: else cfg_parser->cfg->http_max_streams = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4377 "util/configparser.c" +#line 4382 "util/configparser.c" break; case 359: -#line 1064 "./util/configparser.y" +#line 1069 "./util/configparser.y" { OUTYY(("P(server_http_query_buffer_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), @@ -4385,11 +4390,11 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4389 "util/configparser.c" +#line 4394 "util/configparser.c" break; case 360: -#line 1072 "./util/configparser.y" +#line 1077 "./util/configparser.y" { OUTYY(("P(server_http_response_buffer_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), @@ -4397,11 +4402,11 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4401 "util/configparser.c" +#line 4406 "util/configparser.c" break; case 361: -#line 1080 "./util/configparser.y" +#line 1085 "./util/configparser.y" { OUTYY(("P(server_http_nodelay:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4409,11 +4414,11 @@ yyreduce: else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4413 "util/configparser.c" +#line 4418 "util/configparser.c" break; case 362: -#line 1088 "./util/configparser.y" +#line 1093 "./util/configparser.y" { OUTYY(("P(server_http_notls_downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4421,11 +4426,11 @@ yyreduce: else cfg_parser->cfg->http_notls_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4425 "util/configparser.c" +#line 4430 "util/configparser.c" break; case 363: -#line 1096 "./util/configparser.y" +#line 1101 "./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) @@ -4433,11 +4438,11 @@ yyreduce: else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4437 "util/configparser.c" +#line 4442 "util/configparser.c" break; case 364: -#line 1105 "./util/configparser.y" +#line 1110 "./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) @@ -4445,11 +4450,11 @@ yyreduce: else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4449 "util/configparser.c" +#line 4454 "util/configparser.c" break; case 365: -#line 1114 "./util/configparser.y" +#line 1119 "./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) @@ -4462,11 +4467,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4466 "util/configparser.c" +#line 4471 "util/configparser.c" break; case 366: -#line 1128 "./util/configparser.y" +#line 1133 "./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) @@ -4474,11 +4479,11 @@ yyreduce: else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4478 "util/configparser.c" +#line 4483 "util/configparser.c" break; case 367: -#line 1137 "./util/configparser.y" +#line 1142 "./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) @@ -4486,11 +4491,11 @@ yyreduce: else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4490 "util/configparser.c" +#line 4495 "util/configparser.c" break; case 368: -#line 1146 "./util/configparser.y" +#line 1151 "./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) @@ -4498,11 +4503,11 @@ yyreduce: else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4502 "util/configparser.c" +#line 4507 "util/configparser.c" break; case 369: -#line 1155 "./util/configparser.y" +#line 1160 "./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) @@ -4510,11 +4515,11 @@ yyreduce: else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4514 "util/configparser.c" +#line 4519 "util/configparser.c" break; case 370: -#line 1164 "./util/configparser.y" +#line 1169 "./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) @@ -4522,11 +4527,11 @@ yyreduce: else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4526 "util/configparser.c" +#line 4531 "util/configparser.c" break; case 371: -#line 1173 "./util/configparser.y" +#line 1178 "./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) @@ -4534,31 +4539,31 @@ yyreduce: else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4538 "util/configparser.c" +#line 4543 "util/configparser.c" break; case 372: -#line 1182 "./util/configparser.y" +#line 1187 "./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 4548 "util/configparser.c" +#line 4553 "util/configparser.c" break; case 373: -#line 1189 "./util/configparser.y" +#line 1194 "./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 4558 "util/configparser.c" +#line 4563 "util/configparser.c" break; case 374: -#line 1196 "./util/configparser.y" +#line 1201 "./util/configparser.y" { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->directory); @@ -4583,105 +4588,105 @@ yyreduce: } } } -#line 4587 "util/configparser.c" +#line 4592 "util/configparser.c" break; case 375: -#line 1222 "./util/configparser.y" +#line 1227 "./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 4598 "util/configparser.c" +#line 4603 "util/configparser.c" break; case 376: -#line 1230 "./util/configparser.y" +#line 1235 "./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 4608 "util/configparser.c" +#line 4613 "util/configparser.c" break; case 377: -#line 1237 "./util/configparser.y" +#line 1242 "./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 4618 "util/configparser.c" +#line 4623 "util/configparser.c" break; case 378: -#line 1244 "./util/configparser.y" +#line 1249 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str))); log_warn("option dlv-anchor-file ignored: DLV is decommissioned"); free((yyvsp[0].str)); } -#line 4628 "util/configparser.c" +#line 4633 "util/configparser.c" break; case 379: -#line 1251 "./util/configparser.y" +#line 1256 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str))); log_warn("option dlv-anchor ignored: DLV is decommissioned"); free((yyvsp[0].str)); } -#line 4638 "util/configparser.c" +#line 4643 "util/configparser.c" break; case 380: -#line 1258 "./util/configparser.y" +#line 1263 "./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 4649 "util/configparser.c" +#line 4654 "util/configparser.c" break; case 381: -#line 1266 "./util/configparser.y" +#line 1271 "./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 4660 "util/configparser.c" +#line 4665 "util/configparser.c" break; case 382: -#line 1274 "./util/configparser.y" +#line 1279 "./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 4671 "util/configparser.c" +#line 4676 "util/configparser.c" break; case 383: -#line 1282 "./util/configparser.y" +#line 1287 "./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 4681 "util/configparser.c" +#line 4686 "util/configparser.c" break; case 384: -#line 1289 "./util/configparser.y" +#line 1294 "./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) @@ -4691,11 +4696,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4695 "util/configparser.c" +#line 4700 "util/configparser.c" break; case 385: -#line 1300 "./util/configparser.y" +#line 1305 "./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) @@ -4705,21 +4710,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4709 "util/configparser.c" +#line 4714 "util/configparser.c" break; case 386: -#line 1311 "./util/configparser.y" +#line 1316 "./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 4719 "util/configparser.c" +#line 4724 "util/configparser.c" break; case 387: -#line 1318 "./util/configparser.y" +#line 1323 "./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) @@ -4727,11 +4732,11 @@ yyreduce: else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4731 "util/configparser.c" +#line 4736 "util/configparser.c" break; case 388: -#line 1327 "./util/configparser.y" +#line 1332 "./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) @@ -4739,11 +4744,11 @@ yyreduce: else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4743 "util/configparser.c" +#line 4748 "util/configparser.c" break; case 389: -#line 1336 "./util/configparser.y" +#line 1341 "./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) @@ -4751,11 +4756,11 @@ yyreduce: else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4755 "util/configparser.c" +#line 4760 "util/configparser.c" break; case 390: -#line 1345 "./util/configparser.y" +#line 1350 "./util/configparser.y" { OUTYY(("P(server_hide_user_agent:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4763,41 +4768,41 @@ yyreduce: else cfg_parser->cfg->hide_http_user_agent = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4767 "util/configparser.c" +#line 4772 "util/configparser.c" break; case 391: -#line 1354 "./util/configparser.y" +#line 1359 "./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 4777 "util/configparser.c" +#line 4782 "util/configparser.c" break; case 392: -#line 1361 "./util/configparser.y" +#line 1366 "./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 4787 "util/configparser.c" +#line 4792 "util/configparser.c" break; case 393: -#line 1368 "./util/configparser.y" +#line 1373 "./util/configparser.y" { OUTYY(("P(server_http_user_agent:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->http_user_agent); cfg_parser->cfg->http_user_agent = (yyvsp[0].str); } -#line 4797 "util/configparser.c" +#line 4802 "util/configparser.c" break; case 394: -#line 1375 "./util/configparser.y" +#line 1380 "./util/configparser.y" { OUTYY(("P(server_nsid:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->nsid_cfg_str); @@ -4812,33 +4817,33 @@ yyreduce: yyerror("the NSID must be either a hex string or an " "ascii character string prepended with ascii_."); } -#line 4816 "util/configparser.c" +#line 4821 "util/configparser.c" break; case 395: -#line 1391 "./util/configparser.y" +#line 1396 "./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 4827 "util/configparser.c" +#line 4832 "util/configparser.c" break; case 396: -#line 1399 "./util/configparser.y" +#line 1404 "./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 4838 "util/configparser.c" +#line 4843 "util/configparser.c" break; case 397: -#line 1407 "./util/configparser.y" +#line 1412 "./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) @@ -4847,11 +4852,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4851 "util/configparser.c" +#line 4856 "util/configparser.c" break; case 398: -#line 1417 "./util/configparser.y" +#line 1422 "./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) @@ -4860,11 +4865,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4864 "util/configparser.c" +#line 4869 "util/configparser.c" break; case 399: -#line 1427 "./util/configparser.y" +#line 1432 "./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) @@ -4873,11 +4878,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4877 "util/configparser.c" +#line 4882 "util/configparser.c" break; case 400: -#line 1437 "./util/configparser.y" +#line 1442 "./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) @@ -4890,22 +4895,22 @@ yyreduce: cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4894 "util/configparser.c" +#line 4899 "util/configparser.c" break; case 401: -#line 1451 "./util/configparser.y" +#line 1456 "./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 4905 "util/configparser.c" +#line 4910 "util/configparser.c" break; case 402: -#line 1459 "./util/configparser.y" +#line 1464 "./util/configparser.y" { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4917,11 +4922,11 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4921 "util/configparser.c" +#line 4926 "util/configparser.c" break; case 403: -#line 1472 "./util/configparser.y" +#line 1477 "./util/configparser.y" { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4931,38 +4936,38 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4935 "util/configparser.c" +#line 4940 "util/configparser.c" break; case 404: -#line 1483 "./util/configparser.y" +#line 1488 "./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 4946 "util/configparser.c" +#line 4951 "util/configparser.c" break; case 405: -#line 1491 "./util/configparser.y" +#line 1496 "./util/configparser.y" { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) + if(atoi((yyvsp[0].str)) == 0) { yyerror("number expected"); - else { + } 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 4962 "util/configparser.c" +#line 4967 "util/configparser.c" break; case 406: -#line 1504 "./util/configparser.y" +#line 1509 "./util/configparser.y" { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4970,11 +4975,11 @@ yyreduce: else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4974 "util/configparser.c" +#line 4979 "util/configparser.c" break; case 407: -#line 1513 "./util/configparser.y" +#line 1518 "./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) @@ -4982,11 +4987,11 @@ yyreduce: else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4986 "util/configparser.c" +#line 4991 "util/configparser.c" break; case 408: -#line 1522 "./util/configparser.y" +#line 1527 "./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) @@ -4994,11 +4999,11 @@ yyreduce: else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4998 "util/configparser.c" +#line 5003 "util/configparser.c" break; case 409: -#line 1531 "./util/configparser.y" +#line 1536 "./util/configparser.y" { OUTYY(("P(server_udp_connect:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5006,11 +5011,11 @@ yyreduce: else cfg_parser->cfg->udp_connect = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5010 "util/configparser.c" +#line 5015 "util/configparser.c" break; case 410: -#line 1540 "./util/configparser.y" +#line 1545 "./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) @@ -5019,11 +5024,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5023 "util/configparser.c" +#line 5028 "util/configparser.c" break; case 411: -#line 1550 "./util/configparser.y" +#line 1555 "./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) @@ -5032,38 +5037,38 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5036 "util/configparser.c" +#line 5041 "util/configparser.c" break; case 412: -#line 1560 "./util/configparser.y" +#line 1565 "./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 5047 "util/configparser.c" +#line 5052 "util/configparser.c" break; case 413: -#line 1568 "./util/configparser.y" +#line 1573 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) + if(atoi((yyvsp[0].str)) == 0) { yyerror("number expected"); - else { + } 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 5063 "util/configparser.c" +#line 5068 "util/configparser.c" break; case 414: -#line 1581 "./util/configparser.y" +#line 1586 "./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) @@ -5071,22 +5076,22 @@ yyreduce: else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5075 "util/configparser.c" +#line 5080 "util/configparser.c" break; case 415: -#line 1590 "./util/configparser.y" +#line 1595 "./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 5086 "util/configparser.c" +#line 5091 "util/configparser.c" break; case 416: -#line 1598 "./util/configparser.y" +#line 1603 "./util/configparser.y" { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5094,38 +5099,38 @@ yyreduce: else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5098 "util/configparser.c" +#line 5103 "util/configparser.c" break; case 417: -#line 1607 "./util/configparser.y" +#line 1612 "./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 5109 "util/configparser.c" +#line 5114 "util/configparser.c" break; case 418: -#line 1615 "./util/configparser.y" +#line 1620 "./util/configparser.y" { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) + if(atoi((yyvsp[0].str)) == 0) { yyerror("number expected"); - else { + } 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 5125 "util/configparser.c" +#line 5130 "util/configparser.c" break; case 419: -#line 1628 "./util/configparser.y" +#line 1633 "./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) @@ -5133,11 +5138,11 @@ yyreduce: else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5137 "util/configparser.c" +#line 5142 "util/configparser.c" break; case 420: -#line 1637 "./util/configparser.y" +#line 1642 "./util/configparser.y" { OUTYY(("P(server_infra_keep_probing:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5146,21 +5151,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5150 "util/configparser.c" +#line 5155 "util/configparser.c" break; case 421: -#line 1647 "./util/configparser.y" +#line 1652 "./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 5160 "util/configparser.c" +#line 5165 "util/configparser.c" break; case 422: -#line 1654 "./util/configparser.y" +#line 1659 "./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) @@ -5169,11 +5174,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5173 "util/configparser.c" +#line 5178 "util/configparser.c" break; case 423: -#line 1664 "./util/configparser.y" +#line 1669 "./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) @@ -5182,11 +5187,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5186 "util/configparser.c" +#line 5191 "util/configparser.c" break; case 424: -#line 1674 "./util/configparser.y" +#line 1679 "./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) @@ -5195,11 +5200,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5199 "util/configparser.c" +#line 5204 "util/configparser.c" break; case 425: -#line 1684 "./util/configparser.y" +#line 1689 "./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) @@ -5208,11 +5213,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5212 "util/configparser.c" +#line 5217 "util/configparser.c" break; case 426: -#line 1694 "./util/configparser.y" +#line 1699 "./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) @@ -5221,11 +5226,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5225 "util/configparser.c" +#line 5230 "util/configparser.c" break; case 427: -#line 1704 "./util/configparser.y" +#line 1709 "./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) @@ -5234,11 +5239,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5238 "util/configparser.c" +#line 5243 "util/configparser.c" break; case 428: -#line 1714 "./util/configparser.y" +#line 1719 "./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) @@ -5247,11 +5252,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5251 "util/configparser.c" +#line 5256 "util/configparser.c" break; case 429: -#line 1724 "./util/configparser.y" +#line 1729 "./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) @@ -5260,41 +5265,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5264 "util/configparser.c" +#line 5269 "util/configparser.c" break; case 430: -#line 1734 "./util/configparser.y" +#line 1739 "./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 5274 "util/configparser.c" +#line 5279 "util/configparser.c" break; case 431: -#line 1741 "./util/configparser.y" +#line 1746 "./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 5284 "util/configparser.c" +#line 5289 "util/configparser.c" break; case 432: -#line 1748 "./util/configparser.y" +#line 1753 "./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 5294 "util/configparser.c" +#line 5299 "util/configparser.c" break; case 433: -#line 1755 "./util/configparser.y" +#line 1760 "./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) @@ -5302,11 +5307,11 @@ yyreduce: else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5306 "util/configparser.c" +#line 5311 "util/configparser.c" break; case 434: -#line 1764 "./util/configparser.y" +#line 1769 "./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) @@ -5314,11 +5319,11 @@ yyreduce: else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5318 "util/configparser.c" +#line 5323 "util/configparser.c" break; case 435: -#line 1773 "./util/configparser.y" +#line 1778 "./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) @@ -5326,11 +5331,11 @@ yyreduce: else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5330 "util/configparser.c" +#line 5335 "util/configparser.c" break; case 436: -#line 1782 "./util/configparser.y" +#line 1787 "./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) @@ -5338,21 +5343,21 @@ yyreduce: else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5342 "util/configparser.c" +#line 5347 "util/configparser.c" break; case 437: -#line 1791 "./util/configparser.y" +#line 1796 "./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 5352 "util/configparser.c" +#line 5357 "util/configparser.c" break; case 438: -#line 1798 "./util/configparser.y" +#line 1803 "./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) @@ -5361,11 +5366,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5365 "util/configparser.c" +#line 5370 "util/configparser.c" break; case 439: -#line 1808 "./util/configparser.y" +#line 1813 "./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 && @@ -5384,21 +5389,21 @@ yyreduce: fatal_exit("out of memory adding acl"); } } -#line 5388 "util/configparser.c" +#line 5393 "util/configparser.c" break; case 440: -#line 1828 "./util/configparser.y" +#line 1833 "./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 5398 "util/configparser.c" +#line 5403 "util/configparser.c" break; case 441: -#line 1835 "./util/configparser.y" +#line 1840 "./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) { @@ -5415,11 +5420,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5419 "util/configparser.c" +#line 5424 "util/configparser.c" break; case 442: -#line 1853 "./util/configparser.y" +#line 1858 "./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) { @@ -5431,11 +5436,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5435 "util/configparser.c" +#line 5440 "util/configparser.c" break; case 443: -#line 1866 "./util/configparser.y" +#line 1871 "./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) { @@ -5447,11 +5452,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5451 "util/configparser.c" +#line 5456 "util/configparser.c" break; case 444: -#line 1879 "./util/configparser.y" +#line 1884 "./util/configparser.y" { OUTYY(("P(server_val_max_restart:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -5463,11 +5468,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5467 "util/configparser.c" +#line 5472 "util/configparser.c" break; case 445: -#line 1892 "./util/configparser.y" +#line 1897 "./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) @@ -5475,11 +5480,11 @@ yyreduce: else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5479 "util/configparser.c" +#line 5484 "util/configparser.c" break; case 446: -#line 1901 "./util/configparser.y" +#line 1906 "./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) @@ -5487,11 +5492,11 @@ yyreduce: else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5491 "util/configparser.c" +#line 5496 "util/configparser.c" break; case 447: -#line 1910 "./util/configparser.y" +#line 1915 "./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) @@ -5499,11 +5504,11 @@ yyreduce: else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5503 "util/configparser.c" +#line 5508 "util/configparser.c" break; case 448: -#line 1919 "./util/configparser.y" +#line 1924 "./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) @@ -5511,11 +5516,11 @@ yyreduce: else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5515 "util/configparser.c" +#line 5520 "util/configparser.c" break; case 449: -#line 1928 "./util/configparser.y" +#line 1933 "./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) @@ -5524,11 +5529,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5528 "util/configparser.c" +#line 5533 "util/configparser.c" break; case 450: -#line 1938 "./util/configparser.y" +#line 1943 "./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) @@ -5537,11 +5542,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5541 "util/configparser.c" +#line 5546 "util/configparser.c" break; case 451: -#line 1948 "./util/configparser.y" +#line 1953 "./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) @@ -5551,11 +5556,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5555 "util/configparser.c" +#line 5560 "util/configparser.c" break; case 452: -#line 1959 "./util/configparser.y" +#line 1964 "./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) @@ -5563,11 +5568,11 @@ yyreduce: else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5567 "util/configparser.c" +#line 5572 "util/configparser.c" break; case 453: -#line 1968 "./util/configparser.y" +#line 1973 "./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) @@ -5575,11 +5580,11 @@ yyreduce: else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5579 "util/configparser.c" +#line 5584 "util/configparser.c" break; case 454: -#line 1977 "./util/configparser.y" +#line 1982 "./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) @@ -5587,11 +5592,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5591 "util/configparser.c" +#line 5596 "util/configparser.c" break; case 455: -#line 1986 "./util/configparser.y" +#line 1991 "./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) @@ -5599,11 +5604,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5603 "util/configparser.c" +#line 5608 "util/configparser.c" break; case 456: -#line 1995 "./util/configparser.y" +#line 2000 "./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) @@ -5611,11 +5616,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5615 "util/configparser.c" +#line 5620 "util/configparser.c" break; case 457: -#line 2004 "./util/configparser.y" +#line 2009 "./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) @@ -5623,11 +5628,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5627 "util/configparser.c" +#line 5632 "util/configparser.c" break; case 458: -#line 2013 "./util/configparser.y" +#line 2018 "./util/configparser.y" { OUTYY(("P(server_serve_original_ttl:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5635,11 +5640,11 @@ yyreduce: else cfg_parser->cfg->serve_original_ttl = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5639 "util/configparser.c" +#line 5644 "util/configparser.c" break; case 459: -#line 2022 "./util/configparser.y" +#line 2027 "./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) @@ -5651,11 +5656,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5655 "util/configparser.c" +#line 5660 "util/configparser.c" break; case 460: -#line 2035 "./util/configparser.y" +#line 2040 "./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) @@ -5667,11 +5672,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5671 "util/configparser.c" +#line 5676 "util/configparser.c" break; case 461: -#line 2048 "./util/configparser.y" +#line 2053 "./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) @@ -5679,21 +5684,21 @@ yyreduce: else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5683 "util/configparser.c" +#line 5688 "util/configparser.c" break; case 462: -#line 2057 "./util/configparser.y" +#line 2062 "./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 5693 "util/configparser.c" +#line 5698 "util/configparser.c" break; case 463: -#line 2064 "./util/configparser.y" +#line 2069 "./util/configparser.y" { OUTYY(("P(server_zonemd_permissive_mode:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5701,11 +5706,11 @@ yyreduce: else cfg_parser->cfg->zonemd_permissive_mode = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5705 "util/configparser.c" +#line 5710 "util/configparser.c" break; case 464: -#line 2073 "./util/configparser.y" +#line 2078 "./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) @@ -5713,11 +5718,11 @@ yyreduce: else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5717 "util/configparser.c" +#line 5722 "util/configparser.c" break; case 465: -#line 2082 "./util/configparser.y" +#line 2087 "./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) @@ -5725,11 +5730,11 @@ yyreduce: else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5729 "util/configparser.c" +#line 5734 "util/configparser.c" break; case 466: -#line 2091 "./util/configparser.y" +#line 2096 "./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) @@ -5737,11 +5742,11 @@ yyreduce: else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5741 "util/configparser.c" +#line 5746 "util/configparser.c" break; case 467: -#line 2100 "./util/configparser.y" +#line 2105 "./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) @@ -5750,49 +5755,49 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5754 "util/configparser.c" +#line 5759 "util/configparser.c" break; case 468: -#line 2109 "./util/configparser.y" +#line 2114 "./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 5765 "util/configparser.c" +#line 5770 "util/configparser.c" break; case 469: -#line 2117 "./util/configparser.y" +#line 2122 "./util/configparser.y" { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) + if(atoi((yyvsp[0].str)) == 0) { yyerror("number expected"); - else { + } 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 5781 "util/configparser.c" +#line 5786 "util/configparser.c" break; case 470: -#line 2130 "./util/configparser.y" +#line 2135 "./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 5792 "util/configparser.c" +#line 5797 "util/configparser.c" break; case 471: -#line 2138 "./util/configparser.y" +#line 2143 "./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 && @@ -5836,21 +5841,21 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5840 "util/configparser.c" +#line 5845 "util/configparser.c" break; case 472: -#line 2183 "./util/configparser.y" +#line 2188 "./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 5850 "util/configparser.c" +#line 5855 "util/configparser.c" break; case 473: -#line 2190 "./util/configparser.y" +#line 2195 "./util/configparser.y" { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -5864,11 +5869,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5868 "util/configparser.c" +#line 5873 "util/configparser.c" break; case 474: -#line 2205 "./util/configparser.y" +#line 2210 "./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) @@ -5877,11 +5882,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5881 "util/configparser.c" +#line 5886 "util/configparser.c" break; case 475: -#line 2215 "./util/configparser.y" +#line 2220 "./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) @@ -5890,41 +5895,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5894 "util/configparser.c" +#line 5899 "util/configparser.c" break; case 476: -#line 2225 "./util/configparser.y" +#line 2230 "./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 5904 "util/configparser.c" +#line 5909 "util/configparser.c" break; case 477: -#line 2232 "./util/configparser.y" +#line 2237 "./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 5914 "util/configparser.c" +#line 5919 "util/configparser.c" break; case 478: -#line 2239 "./util/configparser.y" +#line 2244 "./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 5924 "util/configparser.c" +#line 5929 "util/configparser.c" break; case 479: -#line 2246 "./util/configparser.y" +#line 2251 "./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) @@ -5932,22 +5937,22 @@ yyreduce: else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5936 "util/configparser.c" +#line 5941 "util/configparser.c" break; case 480: -#line 2255 "./util/configparser.y" +#line 2260 "./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 5947 "util/configparser.c" +#line 5952 "util/configparser.c" break; case 481: -#line 2263 "./util/configparser.y" +#line 2268 "./util/configparser.y" { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); @@ -5960,11 +5965,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5964 "util/configparser.c" +#line 5969 "util/configparser.c" break; case 482: -#line 2277 "./util/configparser.y" +#line 2282 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5984,11 +5989,11 @@ yyreduce: } } } -#line 5988 "util/configparser.c" +#line 5993 "util/configparser.c" break; case 483: -#line 2298 "./util/configparser.y" +#line 2303 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -6008,11 +6013,11 @@ yyreduce: } } } -#line 6012 "util/configparser.c" +#line 6017 "util/configparser.c" break; case 484: -#line 2319 "./util/configparser.y" +#line 2324 "./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, @@ -6023,11 +6028,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 6027 "util/configparser.c" +#line 6032 "util/configparser.c" break; case 485: -#line 2331 "./util/configparser.y" +#line 2336 "./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, @@ -6038,11 +6043,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 6042 "util/configparser.c" +#line 6047 "util/configparser.c" break; case 486: -#line 2343 "./util/configparser.y" +#line 2348 "./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, @@ -6053,11 +6058,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 6057 "util/configparser.c" +#line 6062 "util/configparser.c" break; case 487: -#line 2355 "./util/configparser.y" +#line 2360 "./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, @@ -6065,11 +6070,11 @@ yyreduce: yyerror("out of memory"); } } -#line 6069 "util/configparser.c" +#line 6074 "util/configparser.c" break; case 488: -#line 2364 "./util/configparser.y" +#line 2369 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -6089,11 +6094,11 @@ yyreduce: } } } -#line 6093 "util/configparser.c" +#line 6098 "util/configparser.c" break; case 489: -#line 2385 "./util/configparser.y" +#line 2390 "./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) @@ -6101,11 +6106,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6105 "util/configparser.c" +#line 6110 "util/configparser.c" break; case 490: -#line 2395 "./util/configparser.y" +#line 2399 "./util/configparser.y" { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -6113,65 +6118,65 @@ yyreduce: else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6117 "util/configparser.c" +#line 6122 "util/configparser.c" break; case 491: -#line 2404 "./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 6128 "util/configparser.c" +#line 2408 "./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 6133 "util/configparser.c" break; case 492: -#line 2412 "./util/configparser.y" +#line 2416 "./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 6139 "util/configparser.c" +#line 6144 "util/configparser.c" break; case 493: -#line 2420 "./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"); +#line 2424 "./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)); } - free((yyvsp[0].str)); -} -#line 6155 "util/configparser.c" +#line 6160 "util/configparser.c" break; case 494: -#line 2433 "./util/configparser.y" +#line 2437 "./util/configparser.y" { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) + if(atoi((yyvsp[0].str)) == 0) { yyerror("number expected"); - else { + } 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 6171 "util/configparser.c" +#line 6176 "util/configparser.c" break; case 495: -#line 2446 "./util/configparser.y" +#line 2450 "./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) { @@ -6185,11 +6190,11 @@ yyreduce: "ratelimit-for-domain"); } } -#line 6189 "util/configparser.c" +#line 6194 "util/configparser.c" break; case 496: -#line 2461 "./util/configparser.y" +#line 2465 "./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) { @@ -6203,23 +6208,23 @@ yyreduce: "ratelimit-below-domain"); } } -#line 6207 "util/configparser.c" +#line 6212 "util/configparser.c" break; case 497: -#line 2476 "./util/configparser.y" +#line 2480 "./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)); + 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 6219 "util/configparser.c" +#line 6224 "util/configparser.c" break; case 498: -#line 2485 "./util/configparser.y" +#line 2489 "./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) @@ -6227,32 +6232,32 @@ yyreduce: else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6231 "util/configparser.c" +#line 6236 "util/configparser.c" break; case 499: -#line 2494 "./util/configparser.y" -{ - OUTYY(("P(server_outbound_msg_retry:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->outbound_msg_retry = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); -} -#line 6243 "util/configparser.c" +#line 2498 "./util/configparser.y" + { + OUTYY(("P(server_outbound_msg_retry:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->outbound_msg_retry = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); + } +#line 6248 "util/configparser.c" break; case 500: -#line 2503 "./util/configparser.y" +#line 2507 "./util/configparser.y" { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 6252 "util/configparser.c" +#line 6257 "util/configparser.c" break; case 501: -#line 2509 "./util/configparser.y" +#line 2513 "./util/configparser.y" { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) <= 0) @@ -6260,11 +6265,11 @@ yyreduce: else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6264 "util/configparser.c" +#line 6269 "util/configparser.c" break; case 502: -#line 2518 "./util/configparser.y" +#line 2522 "./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) @@ -6272,11 +6277,11 @@ yyreduce: else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6276 "util/configparser.c" +#line 6281 "util/configparser.c" break; case 503: -#line 2527 "./util/configparser.y" +#line 2531 "./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) @@ -6285,11 +6290,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6289 "util/configparser.c" +#line 6294 "util/configparser.c" break; case 504: -#line 2537 "./util/configparser.y" +#line 2541 "./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) @@ -6298,11 +6303,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6302 "util/configparser.c" +#line 6307 "util/configparser.c" break; case 505: -#line 2547 "./util/configparser.y" +#line 2551 "./util/configparser.y" { OUTYY(("P(server_pad_responses:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6311,11 +6316,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6315 "util/configparser.c" +#line 6320 "util/configparser.c" break; case 506: -#line 2557 "./util/configparser.y" +#line 2561 "./util/configparser.y" { OUTYY(("P(server_pad_responses_block_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6323,11 +6328,11 @@ yyreduce: else cfg_parser->cfg->pad_responses_block_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6327 "util/configparser.c" +#line 6332 "util/configparser.c" break; case 507: -#line 2566 "./util/configparser.y" +#line 2570 "./util/configparser.y" { OUTYY(("P(server_pad_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6336,11 +6341,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6340 "util/configparser.c" +#line 6345 "util/configparser.c" break; case 508: -#line 2576 "./util/configparser.y" +#line 2580 "./util/configparser.y" { OUTYY(("P(server_pad_queries_block_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6348,11 +6353,11 @@ yyreduce: else cfg_parser->cfg->pad_queries_block_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6352 "util/configparser.c" +#line 6357 "util/configparser.c" break; case 509: -#line 2585 "./util/configparser.y" +#line 2589 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); @@ -6364,11 +6369,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6368 "util/configparser.c" +#line 6373 "util/configparser.c" break; case 510: -#line 2598 "./util/configparser.y" +#line 2602 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); @@ -6380,11 +6385,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6384 "util/configparser.c" +#line 6389 "util/configparser.c" break; case 511: -#line 2611 "./util/configparser.y" +#line 2615 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); @@ -6395,11 +6400,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6399 "util/configparser.c" +#line 6404 "util/configparser.c" break; case 512: -#line 2623 "./util/configparser.y" +#line 2627 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); @@ -6412,11 +6417,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6416 "util/configparser.c" +#line 6421 "util/configparser.c" break; case 513: -#line 2637 "./util/configparser.y" +#line 2641 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); @@ -6427,11 +6432,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6431 "util/configparser.c" +#line 6436 "util/configparser.c" break; case 514: -#line 2649 "./util/configparser.y" +#line 2653 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); @@ -6444,11 +6449,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6448 "util/configparser.c" +#line 6453 "util/configparser.c" break; case 515: -#line 2663 "./util/configparser.y" +#line 2667 "./util/configparser.y" { OUTYY(("P(server_edns_client_string:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert( @@ -6456,11 +6461,11 @@ yyreduce: fatal_exit("out of memory adding " "edns-client-string"); } -#line 6460 "util/configparser.c" +#line 6465 "util/configparser.c" break; case 516: -#line 2672 "./util/configparser.y" +#line 2676 "./util/configparser.y" { OUTYY(("P(edns_client_string_opcode:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -6471,11 +6476,11 @@ yyreduce: free((yyvsp[0].str)); } -#line 6475 "util/configparser.c" +#line 6480 "util/configparser.c" break; case 517: -#line 2684 "./util/configparser.y" +#line 2688 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) @@ -6484,31 +6489,31 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 6488 "util/configparser.c" +#line 6493 "util/configparser.c" break; case 518: -#line 2694 "./util/configparser.y" +#line 2698 "./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 6498 "util/configparser.c" +#line 6503 "util/configparser.c" break; case 519: -#line 2701 "./util/configparser.y" +#line 2705 "./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 6508 "util/configparser.c" +#line 6513 "util/configparser.c" break; case 520: -#line 2708 "./util/configparser.y" +#line 2712 "./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) @@ -6516,11 +6521,11 @@ yyreduce: else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6520 "util/configparser.c" +#line 6525 "util/configparser.c" break; case 521: -#line 2717 "./util/configparser.y" +#line 2721 "./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) @@ -6528,11 +6533,11 @@ yyreduce: else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6532 "util/configparser.c" +#line 6537 "util/configparser.c" break; case 522: -#line 2726 "./util/configparser.y" +#line 2730 "./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) @@ -6541,11 +6546,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6545 "util/configparser.c" +#line 6550 "util/configparser.c" break; case 523: -#line 2736 "./util/configparser.y" +#line 2740 "./util/configparser.y" { OUTYY(("P(stub-tcp-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6554,11 +6559,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6558 "util/configparser.c" +#line 6563 "util/configparser.c" break; case 524: -#line 2746 "./util/configparser.y" +#line 2750 "./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) @@ -6567,11 +6572,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6571 "util/configparser.c" +#line 6576 "util/configparser.c" break; case 525: -#line 2756 "./util/configparser.y" +#line 2760 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) @@ -6580,31 +6585,31 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 6584 "util/configparser.c" +#line 6589 "util/configparser.c" break; case 526: -#line 2766 "./util/configparser.y" +#line 2770 "./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 6594 "util/configparser.c" +#line 6599 "util/configparser.c" break; case 527: -#line 2773 "./util/configparser.y" +#line 2777 "./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 6604 "util/configparser.c" +#line 6609 "util/configparser.c" break; case 528: -#line 2780 "./util/configparser.y" +#line 2784 "./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) @@ -6612,11 +6617,11 @@ yyreduce: else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6616 "util/configparser.c" +#line 6621 "util/configparser.c" break; case 529: -#line 2789 "./util/configparser.y" +#line 2793 "./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) @@ -6624,11 +6629,11 @@ yyreduce: else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6628 "util/configparser.c" +#line 6633 "util/configparser.c" break; case 530: -#line 2798 "./util/configparser.y" +#line 2802 "./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) @@ -6637,11 +6642,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6641 "util/configparser.c" +#line 6646 "util/configparser.c" break; case 531: -#line 2808 "./util/configparser.y" +#line 2812 "./util/configparser.y" { OUTYY(("P(forward-tcp-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6650,11 +6655,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6654 "util/configparser.c" +#line 6659 "util/configparser.c" break; case 532: -#line 2818 "./util/configparser.y" +#line 2822 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) @@ -6663,52 +6668,52 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 6667 "util/configparser.c" +#line 6672 "util/configparser.c" break; case 533: -#line 2828 "./util/configparser.y" +#line 2832 "./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 6677 "util/configparser.c" +#line 6682 "util/configparser.c" break; case 534: -#line 2835 "./util/configparser.y" +#line 2839 "./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 6687 "util/configparser.c" +#line 6692 "util/configparser.c" break; case 535: -#line 2842 "./util/configparser.y" +#line 2846 "./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 6697 "util/configparser.c" +#line 6702 "util/configparser.c" break; case 536: -#line 2849 "./util/configparser.y" +#line 2853 "./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 6708 "util/configparser.c" +#line 6713 "util/configparser.c" break; case 537: -#line 2857 "./util/configparser.y" +#line 2861 "./util/configparser.y" { OUTYY(("P(zonemd-check:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6717,11 +6722,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6721 "util/configparser.c" +#line 6726 "util/configparser.c" break; case 538: -#line 2867 "./util/configparser.y" +#line 2871 "./util/configparser.y" { OUTYY(("P(zonemd-reject-absence:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6730,11 +6735,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6734 "util/configparser.c" +#line 6739 "util/configparser.c" break; case 539: -#line 2877 "./util/configparser.y" +#line 2881 "./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) @@ -6743,11 +6748,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6747 "util/configparser.c" +#line 6752 "util/configparser.c" break; case 540: -#line 2887 "./util/configparser.y" +#line 2891 "./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) @@ -6756,11 +6761,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6760 "util/configparser.c" +#line 6765 "util/configparser.c" break; case 541: -#line 2897 "./util/configparser.y" +#line 2901 "./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) @@ -6769,11 +6774,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6773 "util/configparser.c" +#line 6778 "util/configparser.c" break; case 542: -#line 2907 "./util/configparser.y" +#line 2911 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) @@ -6782,11 +6787,11 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 6786 "util/configparser.c" +#line 6791 "util/configparser.c" break; case 543: -#line 2917 "./util/configparser.y" +#line 2921 "./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 && @@ -6831,11 +6836,11 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 6835 "util/configparser.c" +#line 6840 "util/configparser.c" break; case 544: -#line 2963 "./util/configparser.y" +#line 2967 "./util/configparser.y" { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -6844,33 +6849,33 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 6848 "util/configparser.c" +#line 6853 "util/configparser.c" break; case 545: -#line 2973 "./util/configparser.y" +#line 2977 "./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 6859 "util/configparser.c" +#line 6864 "util/configparser.c" break; case 546: -#line 2981 "./util/configparser.y" +#line 2985 "./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 6870 "util/configparser.c" +#line 6875 "util/configparser.c" break; case 547: -#line 2989 "./util/configparser.y" +#line 2993 "./util/configparser.y" { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -6884,11 +6889,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 6888 "util/configparser.c" +#line 6893 "util/configparser.c" break; case 548: -#line 3004 "./util/configparser.y" +#line 3008 "./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) @@ -6896,19 +6901,19 @@ yyreduce: else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6900 "util/configparser.c" +#line 6905 "util/configparser.c" break; case 549: -#line 3013 "./util/configparser.y" +#line 3017 "./util/configparser.y" { OUTYY(("\nP(remote-control:)\n")); } -#line 6908 "util/configparser.c" +#line 6913 "util/configparser.c" break; case 560: -#line 3024 "./util/configparser.y" +#line 3028 "./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) @@ -6917,11 +6922,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6921 "util/configparser.c" +#line 6926 "util/configparser.c" break; case 561: -#line 3034 "./util/configparser.y" +#line 3038 "./util/configparser.y" { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6929,79 +6934,79 @@ yyreduce: else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6933 "util/configparser.c" +#line 6938 "util/configparser.c" break; case 562: -#line 3043 "./util/configparser.y" +#line 3047 "./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 6943 "util/configparser.c" +#line 6948 "util/configparser.c" break; case 563: -#line 3050 "./util/configparser.y" +#line 3054 "./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 6953 "util/configparser.c" +#line 6958 "util/configparser.c" break; case 564: -#line 3057 "./util/configparser.y" +#line 3061 "./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 6963 "util/configparser.c" +#line 6968 "util/configparser.c" break; case 565: -#line 3064 "./util/configparser.y" +#line 3068 "./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 6973 "util/configparser.c" +#line 6978 "util/configparser.c" break; case 566: -#line 3071 "./util/configparser.y" +#line 3075 "./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 6983 "util/configparser.c" +#line 6988 "util/configparser.c" break; case 567: -#line 3078 "./util/configparser.y" +#line 3082 "./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 6993 "util/configparser.c" +#line 6998 "util/configparser.c" break; case 568: -#line 3085 "./util/configparser.y" +#line 3089 "./util/configparser.y" { OUTYY(("\nP(dnstap:)\n")); } -#line 7001 "util/configparser.c" +#line 7006 "util/configparser.c" break; case 590: -#line 3105 "./util/configparser.y" +#line 3109 "./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) @@ -7009,11 +7014,11 @@ yyreduce: else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7013 "util/configparser.c" +#line 7018 "util/configparser.c" break; case 591: -#line 3114 "./util/configparser.y" +#line 3118 "./util/configparser.y" { OUTYY(("P(dt_dnstap_bidirectional:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -7022,31 +7027,31 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7026 "util/configparser.c" +#line 7031 "util/configparser.c" break; case 592: -#line 3124 "./util/configparser.y" +#line 3128 "./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 7036 "util/configparser.c" +#line 7041 "util/configparser.c" break; case 593: -#line 3131 "./util/configparser.y" +#line 3135 "./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 7046 "util/configparser.c" +#line 7051 "util/configparser.c" break; case 594: -#line 3138 "./util/configparser.y" +#line 3142 "./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) @@ -7054,51 +7059,51 @@ yyreduce: else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7058 "util/configparser.c" +#line 7063 "util/configparser.c" break; case 595: -#line 3147 "./util/configparser.y" +#line 3151 "./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 7068 "util/configparser.c" +#line 7073 "util/configparser.c" break; case 596: -#line 3154 "./util/configparser.y" +#line 3158 "./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 7078 "util/configparser.c" +#line 7083 "util/configparser.c" break; case 597: -#line 3161 "./util/configparser.y" +#line 3165 "./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 7088 "util/configparser.c" +#line 7093 "util/configparser.c" break; case 598: -#line 3168 "./util/configparser.y" +#line 3172 "./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 7098 "util/configparser.c" +#line 7103 "util/configparser.c" break; case 599: -#line 3175 "./util/configparser.y" +#line 3179 "./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) @@ -7106,11 +7111,11 @@ yyreduce: else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7110 "util/configparser.c" +#line 7115 "util/configparser.c" break; case 600: -#line 3184 "./util/configparser.y" +#line 3188 "./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) @@ -7118,31 +7123,31 @@ yyreduce: else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7122 "util/configparser.c" +#line 7127 "util/configparser.c" break; case 601: -#line 3193 "./util/configparser.y" +#line 3197 "./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 7132 "util/configparser.c" +#line 7137 "util/configparser.c" break; case 602: -#line 3200 "./util/configparser.y" +#line 3204 "./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 7142 "util/configparser.c" +#line 7147 "util/configparser.c" break; case 603: -#line 3207 "./util/configparser.y" +#line 3211 "./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) @@ -7151,11 +7156,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7155 "util/configparser.c" +#line 7160 "util/configparser.c" break; case 604: -#line 3217 "./util/configparser.y" +#line 3221 "./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) @@ -7164,11 +7169,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7168 "util/configparser.c" +#line 7173 "util/configparser.c" break; case 605: -#line 3227 "./util/configparser.y" +#line 3231 "./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) @@ -7177,11 +7182,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7181 "util/configparser.c" +#line 7186 "util/configparser.c" break; case 606: -#line 3237 "./util/configparser.y" +#line 3241 "./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) @@ -7190,11 +7195,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7194 "util/configparser.c" +#line 7199 "util/configparser.c" break; case 607: -#line 3247 "./util/configparser.y" +#line 3251 "./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) @@ -7203,11 +7208,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7207 "util/configparser.c" +#line 7212 "util/configparser.c" break; case 608: -#line 3257 "./util/configparser.y" +#line 3261 "./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) @@ -7216,47 +7221,47 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7220 "util/configparser.c" +#line 7225 "util/configparser.c" break; case 609: -#line 3267 "./util/configparser.y" +#line 3271 "./util/configparser.y" { OUTYY(("\nP(python:)\n")); } -#line 7228 "util/configparser.c" +#line 7233 "util/configparser.c" break; case 613: -#line 3276 "./util/configparser.y" +#line 3280 "./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 7238 "util/configparser.c" +#line 7243 "util/configparser.c" break; case 614: -#line 3282 "./util/configparser.y" +#line 3286 "./util/configparser.y" { OUTYY(("\nP(dynlib:)\n")); } -#line 7246 "util/configparser.c" +#line 7251 "util/configparser.c" break; case 618: -#line 3291 "./util/configparser.y" +#line 3295 "./util/configparser.y" { OUTYY(("P(dynlib-file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, (yyvsp[0].str))) yyerror("out of memory"); } -#line 7256 "util/configparser.c" +#line 7261 "util/configparser.c" break; case 619: -#line 3297 "./util/configparser.y" +#line 3301 "./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) @@ -7265,21 +7270,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7269 "util/configparser.c" +#line 7274 "util/configparser.c" break; case 620: -#line 3307 "./util/configparser.y" +#line 3311 "./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 7279 "util/configparser.c" +#line 7284 "util/configparser.c" break; case 621: -#line 3314 "./util/configparser.y" +#line 3318 "./util/configparser.y" { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -7287,30 +7292,30 @@ yyreduce: (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 7291 "util/configparser.c" +#line 7296 "util/configparser.c" break; case 622: -#line 3323 "./util/configparser.y" +#line 3327 "./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 7302 "util/configparser.c" +#line 7307 "util/configparser.c" break; case 623: -#line 3331 "./util/configparser.y" +#line 3335 "./util/configparser.y" { OUTYY(("\nP(dnscrypt:)\n")); } -#line 7310 "util/configparser.c" +#line 7315 "util/configparser.c" break; case 636: -#line 3347 "./util/configparser.y" +#line 3351 "./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) @@ -7318,11 +7323,11 @@ yyreduce: else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7322 "util/configparser.c" +#line 7327 "util/configparser.c" break; case 637: -#line 3357 "./util/configparser.y" +#line 3361 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -7330,21 +7335,21 @@ yyreduce: else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 7334 "util/configparser.c" +#line 7339 "util/configparser.c" break; case 638: -#line 3366 "./util/configparser.y" +#line 3370 "./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 7344 "util/configparser.c" +#line 7349 "util/configparser.c" break; case 639: -#line 3373 "./util/configparser.y" +#line 3377 "./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))) @@ -7352,21 +7357,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 7356 "util/configparser.c" +#line 7361 "util/configparser.c" break; case 640: -#line 3382 "./util/configparser.y" +#line 3386 "./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 7366 "util/configparser.c" +#line 7371 "util/configparser.c" break; case 641: -#line 3389 "./util/configparser.y" +#line 3393 "./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))) @@ -7374,73 +7379,73 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-secret-key"); } -#line 7378 "util/configparser.c" +#line 7383 "util/configparser.c" break; case 642: -#line 3398 "./util/configparser.y" +#line 3402 "./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 7389 "util/configparser.c" +#line 7394 "util/configparser.c" break; case 643: -#line 3406 "./util/configparser.y" +#line 3410 "./util/configparser.y" { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) + if(atoi((yyvsp[0].str)) == 0) { yyerror("number expected"); - else { + } 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 7405 "util/configparser.c" +#line 7410 "util/configparser.c" break; case 644: -#line 3419 "./util/configparser.y" +#line 3423 "./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 7416 "util/configparser.c" +#line 7421 "util/configparser.c" break; case 645: -#line 3427 "./util/configparser.y" +#line 3431 "./util/configparser.y" { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) + if(atoi((yyvsp[0].str)) == 0) { yyerror("number expected"); - else { + } 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 7432 "util/configparser.c" +#line 7437 "util/configparser.c" break; case 646: -#line 3440 "./util/configparser.y" +#line 3444 "./util/configparser.y" { OUTYY(("\nP(cachedb:)\n")); } -#line 7440 "util/configparser.c" +#line 7445 "util/configparser.c" break; case 655: -#line 3451 "./util/configparser.y" +#line 3455 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); @@ -7451,11 +7456,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7455 "util/configparser.c" +#line 7460 "util/configparser.c" break; case 656: -#line 3463 "./util/configparser.y" +#line 3467 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); @@ -7466,11 +7471,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7470 "util/configparser.c" +#line 7475 "util/configparser.c" break; case 657: -#line 3475 "./util/configparser.y" +#line 3479 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); @@ -7481,11 +7486,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7485 "util/configparser.c" +#line 7490 "util/configparser.c" break; case 658: -#line 3487 "./util/configparser.y" +#line 3491 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; @@ -7499,11 +7504,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 7503 "util/configparser.c" +#line 7508 "util/configparser.c" break; case 659: -#line 3502 "./util/configparser.y" +#line 3506 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); @@ -7515,11 +7520,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 7519 "util/configparser.c" +#line 7524 "util/configparser.c" break; case 660: -#line 3515 "./util/configparser.y" +#line 3519 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str))); @@ -7531,11 +7536,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 7535 "util/configparser.c" +#line 7540 "util/configparser.c" break; case 661: -#line 3528 "./util/configparser.y" +#line 3532 "./util/configparser.y" { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) @@ -7545,19 +7550,19 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 7549 "util/configparser.c" +#line 7554 "util/configparser.c" break; case 662: -#line 3539 "./util/configparser.y" +#line 3543 "./util/configparser.y" { OUTYY(("\nP(ipset:)\n")); } -#line 7557 "util/configparser.c" +#line 7562 "util/configparser.c" break; case 667: -#line 3548 "./util/configparser.y" +#line 3552 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); @@ -7571,11 +7576,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7575 "util/configparser.c" +#line 7580 "util/configparser.c" break; case 668: -#line 3563 "./util/configparser.y" +#line 3567 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); @@ -7589,11 +7594,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7593 "util/configparser.c" +#line 7598 "util/configparser.c" break; -#line 7597 "util/configparser.c" +#line 7602 "util/configparser.c" default: break; } @@ -7787,7 +7792,7 @@ yyreturn: return yyresult; } -#line 3577 "./util/configparser.y" +#line 3581 "./util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.y b/util/configparser.y index b2df7a5d3..1daf853d5 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -319,8 +319,9 @@ stubstart: VAR_STUB_ZONE if(s) { s->next = cfg_parser->cfg->stubs; cfg_parser->cfg->stubs = s; - } else + } else { yyerror("out of memory"); + } } ; contents_stub: contents_stub content_stub @@ -336,8 +337,9 @@ forwardstart: VAR_FORWARD_ZONE if(s) { s->next = cfg_parser->cfg->forwards; cfg_parser->cfg->forwards = s; - } else + } else { yyerror("out of memory"); + } } ; contents_forward: contents_forward content_forward @@ -355,8 +357,9 @@ viewstart: VAR_VIEW if(s->next && !s->next->name) yyerror("view without name"); cfg_parser->cfg->views = s; - } else + } else { yyerror("out of memory"); + } } ; contents_view: contents_view content_view @@ -379,8 +382,9 @@ authstart: VAR_AUTH_ZONE s->zonemd_check = 0; s->zonemd_reject_absence = 0; s->isrpz = 0; - } else + } else { yyerror("out of memory"); + } } ; contents_auth: contents_auth content_auth @@ -465,8 +469,9 @@ rpzstart: VAR_RPZ s->for_upstream = 0; s->fallback_enabled = 0; s->isrpz = 1; - } else + } else { yyerror("out of memory"); + } } ; contents_rpz: contents_rpz content_rpz @@ -1490,9 +1495,9 @@ server_msg_cache_size: VAR_MSG_CACHE_SIZE STRING_ARG server_msg_cache_slabs: VAR_MSG_CACHE_SLABS STRING_ARG { OUTYY(("P(server_msg_cache_slabs:%s)\n", $2)); - if(atoi($2) == 0) + if(atoi($2) == 0) { yyerror("number expected"); - else { + } else { cfg_parser->cfg->msg_cache_slabs = atoi($2); if(!is_pow2(cfg_parser->cfg->msg_cache_slabs)) yyerror("must be a power of 2"); @@ -1567,9 +1572,9 @@ server_rrset_cache_size: VAR_RRSET_CACHE_SIZE STRING_ARG server_rrset_cache_slabs: VAR_RRSET_CACHE_SLABS STRING_ARG { OUTYY(("P(server_rrset_cache_slabs:%s)\n", $2)); - if(atoi($2) == 0) + if(atoi($2) == 0) { yyerror("number expected"); - else { + } else { cfg_parser->cfg->rrset_cache_slabs = atoi($2); if(!is_pow2(cfg_parser->cfg->rrset_cache_slabs)) yyerror("must be a power of 2"); @@ -1614,9 +1619,9 @@ server_infra_cache_lame_size: VAR_INFRA_CACHE_LAME_SIZE STRING_ARG server_infra_cache_slabs: VAR_INFRA_CACHE_SLABS STRING_ARG { OUTYY(("P(server_infra_cache_slabs:%s)\n", $2)); - if(atoi($2) == 0) + if(atoi($2) == 0) { yyerror("number expected"); - else { + } else { cfg_parser->cfg->infra_cache_slabs = atoi($2); if(!is_pow2(cfg_parser->cfg->infra_cache_slabs)) yyerror("must be a power of 2"); @@ -2116,9 +2121,9 @@ server_key_cache_size: VAR_KEY_CACHE_SIZE STRING_ARG server_key_cache_slabs: VAR_KEY_CACHE_SLABS STRING_ARG { OUTYY(("P(server_key_cache_slabs:%s)\n", $2)); - if(atoi($2) == 0) + if(atoi($2) == 0) { yyerror("number expected"); - else { + } else { cfg_parser->cfg->key_cache_slabs = atoi($2); if(!is_pow2(cfg_parser->cfg->key_cache_slabs)) yyerror("must be a power of 2"); @@ -2390,7 +2395,6 @@ server_ip_ratelimit: VAR_IP_RATELIMIT STRING_ARG free($2); } ; - server_ratelimit: VAR_RATELIMIT STRING_ARG { OUTYY(("P(server_ratelimit:%s)\n", $2)); @@ -2401,13 +2405,13 @@ server_ratelimit: VAR_RATELIMIT STRING_ARG } ; server_ip_ratelimit_size: VAR_IP_RATELIMIT_SIZE STRING_ARG -{ - OUTYY(("P(server_ip_ratelimit_size:%s)\n", $2)); - if(!cfg_parse_memsize($2, &cfg_parser->cfg->ip_ratelimit_size)) - yyerror("memory size expected"); - free($2); -} -; + { + OUTYY(("P(server_ip_ratelimit_size:%s)\n", $2)); + if(!cfg_parse_memsize($2, &cfg_parser->cfg->ip_ratelimit_size)) + yyerror("memory size expected"); + free($2); + } + ; server_ratelimit_size: VAR_RATELIMIT_SIZE STRING_ARG { OUTYY(("P(server_ratelimit_size:%s)\n", $2)); @@ -2417,24 +2421,24 @@ server_ratelimit_size: VAR_RATELIMIT_SIZE STRING_ARG } ; server_ip_ratelimit_slabs: VAR_IP_RATELIMIT_SLABS STRING_ARG -{ - OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", $2)); - if(atoi($2) == 0) - yyerror("number expected"); - else { - cfg_parser->cfg->ip_ratelimit_slabs = atoi($2); - if(!is_pow2(cfg_parser->cfg->ip_ratelimit_slabs)) - yyerror("must be a power of 2"); + { + OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", $2)); + if(atoi($2) == 0) { + yyerror("number expected"); + } else { + cfg_parser->cfg->ip_ratelimit_slabs = atoi($2); + if(!is_pow2(cfg_parser->cfg->ip_ratelimit_slabs)) + yyerror("must be a power of 2"); + } + free($2); } - free($2); -} -; + ; server_ratelimit_slabs: VAR_RATELIMIT_SLABS STRING_ARG { OUTYY(("P(server_ratelimit_slabs:%s)\n", $2)); - if(atoi($2) == 0) + if(atoi($2) == 0) { yyerror("number expected"); - else { + } else { cfg_parser->cfg->ratelimit_slabs = atoi($2); if(!is_pow2(cfg_parser->cfg->ratelimit_slabs)) yyerror("must be a power of 2"); @@ -2474,11 +2478,11 @@ server_ratelimit_below_domain: VAR_RATELIMIT_BELOW_DOMAIN STRING_ARG STRING_ARG ; server_ip_ratelimit_factor: VAR_IP_RATELIMIT_FACTOR STRING_ARG { - OUTYY(("P(server_ip_ratelimit_factor:%s)\n", $2)); - if(atoi($2) == 0 && strcmp($2, "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->ip_ratelimit_factor = atoi($2); - free($2); + OUTYY(("P(server_ip_ratelimit_factor:%s)\n", $2)); + if(atoi($2) == 0 && strcmp($2, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->ip_ratelimit_factor = atoi($2); + free($2); } ; server_ratelimit_factor: VAR_RATELIMIT_FACTOR STRING_ARG @@ -2491,14 +2495,14 @@ server_ratelimit_factor: VAR_RATELIMIT_FACTOR STRING_ARG } ; server_outbound_msg_retry: VAR_OUTBOUND_MSG_RETRY STRING_ARG -{ - OUTYY(("P(server_outbound_msg_retry:%s)\n", $2)); - if(atoi($2) == 0 && strcmp($2, "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->outbound_msg_retry = atoi($2); - free($2); -} -; + { + OUTYY(("P(server_outbound_msg_retry:%s)\n", $2)); + if(atoi($2) == 0 && strcmp($2, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->outbound_msg_retry = atoi($2); + free($2); + } + ; server_low_rtt: VAR_LOW_RTT STRING_ARG { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); @@ -3405,9 +3409,9 @@ dnsc_dnscrypt_shared_secret_cache_size: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE ST dnsc_dnscrypt_shared_secret_cache_slabs: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS STRING_ARG { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", $2)); - if(atoi($2) == 0) + if(atoi($2) == 0) { yyerror("number expected"); - else { + } else { cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs = atoi($2); if(!is_pow2(cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs)) yyerror("must be a power of 2"); @@ -3426,9 +3430,9 @@ dnsc_dnscrypt_nonce_cache_size: VAR_DNSCRYPT_NONCE_CACHE_SIZE STRING_ARG dnsc_dnscrypt_nonce_cache_slabs: VAR_DNSCRYPT_NONCE_CACHE_SLABS STRING_ARG { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", $2)); - if(atoi($2) == 0) + if(atoi($2) == 0) { yyerror("number expected"); - else { + } else { cfg_parser->cfg->dnscrypt_nonce_cache_slabs = atoi($2); if(!is_pow2(cfg_parser->cfg->dnscrypt_nonce_cache_slabs)) yyerror("must be a power of 2"); From 829f3c932e325df537adf3df9deae664ab5e321d Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 8 Sep 2021 15:07:11 +0200 Subject: [PATCH 384/553] - Fix for #41: change outbound retry to int to fix signed comparison warnings. --- doc/Changelog | 2 ++ iterator/iter_utils.c | 5 +++-- iterator/iter_utils.h | 4 ++-- iterator/iterator.h | 2 +- util/config_file.c | 2 +- util/config_file.h | 2 +- 6 files changed, 10 insertions(+), 7 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 6592d3207..2bd68409d 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -5,6 +5,8 @@ processQueryResponse takes an iterator env argument like other functions in the iterator, no colon in string for set_option, and some whitespace style, to make it similar to the rest. + - Fix for #41: change outbound retry to int to fix signed comparison + warnings. 3 September 2021: Wouter - Fix #538: Fix subnetcache statistics. diff --git a/iterator/iter_utils.c b/iterator/iter_utils.c index ac7f5c1b2..2482a1f40 100644 --- a/iterator/iter_utils.c +++ b/iterator/iter_utils.c @@ -1285,7 +1285,7 @@ iter_scrub_nxdomain(struct dns_msg* msg) msg->rep->an_numrrsets = 0; } -void iter_dec_attempts(struct delegpt* dp, int d, size_t outbound_msg_retry) +void iter_dec_attempts(struct delegpt* dp, int d, int outbound_msg_retry) { struct delegpt_addr* a; for(a=dp->target_list; a; a = a->next_target) { @@ -1300,7 +1300,8 @@ void iter_dec_attempts(struct delegpt* dp, int d, size_t outbound_msg_retry) } } -void iter_merge_retry_counts(struct delegpt* dp, struct delegpt* old, size_t outbound_msg_retry) +void iter_merge_retry_counts(struct delegpt* dp, struct delegpt* old, + int outbound_msg_retry) { struct delegpt_addr* a, *o, *prev; for(a=dp->target_list; a; a = a->next_target) { diff --git a/iterator/iter_utils.h b/iterator/iter_utils.h index c6dc1e401..0a40916c0 100644 --- a/iterator/iter_utils.h +++ b/iterator/iter_utils.h @@ -349,7 +349,7 @@ void iter_scrub_nxdomain(struct dns_msg* msg); * @param d: decrease. * @param outbound_msg_retry: number of retries of outgoing queries */ -void iter_dec_attempts(struct delegpt* dp, int d, size_t outbound_msg_retry); +void iter_dec_attempts(struct delegpt* dp, int d, int outbound_msg_retry); /** * Add retry counts from older delegpt to newer delegpt. @@ -359,7 +359,7 @@ void iter_dec_attempts(struct delegpt* dp, int d, size_t outbound_msg_retry); * @param outbound_msg_retry: number of retries of outgoing queries */ void iter_merge_retry_counts(struct delegpt* dp, struct delegpt* old, - size_t outbound_msg_retry); + int outbound_msg_retry); /** * See if a DS response (type ANSWER) is too low: a nodata answer with diff --git a/iterator/iterator.h b/iterator/iterator.h index f99193231..a9e58569f 100644 --- a/iterator/iterator.h +++ b/iterator/iterator.h @@ -139,7 +139,7 @@ struct iter_env { size_t num_queries_ratelimited; /** number of retries on outgoing queries */ - size_t outbound_msg_retry; + int outbound_msg_retry; }; /** diff --git a/util/config_file.c b/util/config_file.c index a68099e58..39050f553 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -753,7 +753,7 @@ int config_set_option(struct config_file* cfg, const char* opt, else S_POW2("ratelimit-slabs:", ratelimit_slabs) else S_NUMBER_OR_ZERO("ip-ratelimit-factor:", ip_ratelimit_factor) else S_NUMBER_OR_ZERO("ratelimit-factor:", ratelimit_factor) - else S_SIZET_NONZERO("outbound-msg-retry:", outbound_msg_retry) + else S_NUMBER_NONZERO("outbound-msg-retry:", outbound_msg_retry) else S_SIZET_NONZERO("fast-server-num:", fast_server_num) else S_NUMBER_OR_ZERO("fast-server-permil:", fast_server_permil) else S_YNO("qname-minimisation:", qname_minimisation) diff --git a/util/config_file.h b/util/config_file.h index 618a88651..cd1bc7931 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -579,7 +579,7 @@ struct config_file { /** ratelimit factor, 0 blocks all, 10 allows 1/10 of traffic */ int ratelimit_factor; /** number of retries on outgoing queries */ - size_t outbound_msg_retry; + int outbound_msg_retry; /** minimise outgoing QNAME and hide original QTYPE if possible */ int qname_minimisation; /** minimise QNAME in strict mode, minimise according to RFC. From f976fdee28e062e70e623bf7d0b809b0a83da2e1 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 8 Sep 2021 17:26:30 +0200 Subject: [PATCH 385/553] - Fix root_anchor test to check with new icannbundle date. --- doc/Changelog | 1 + testdata/root_anchor.tdir/root_anchor.test | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 2bd68409d..135c879ed 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -7,6 +7,7 @@ and some whitespace style, to make it similar to the rest. - Fix for #41: change outbound retry to int to fix signed comparison warnings. + - Fix root_anchor test to check with new icannbundle date. 3 September 2021: Wouter - Fix #538: Fix subnetcache statistics. diff --git a/testdata/root_anchor.tdir/root_anchor.test b/testdata/root_anchor.tdir/root_anchor.test index 8be248ab9..9b8454c7b 100644 --- a/testdata/root_anchor.tdir/root_anchor.test +++ b/testdata/root_anchor.tdir/root_anchor.test @@ -38,7 +38,7 @@ else fi # use curl to see if the PGP certificate has been updated. -curl --time-cond "20170203 10:00:00" https://data.iana.org/root-anchors/icannbundle.pem > newcert +curl --time-cond "20210908 17:00:00" https://data.iana.org/root-anchors/icannbundle.pem > newcert if test -n "`cat newcert`"; then echo "icannbundle.pem has been updated" cat newcert From 7d70e3c861b67cc849bd1691a6958438e214ceaf Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 10 Sep 2021 14:30:57 +0200 Subject: [PATCH 386/553] - Fix initialisation errors reported by gcc sanitizer. --- doc/Changelog | 3 +++ services/rpz.c | 2 +- testcode/testbound.c | 1 + testcode/unitmain.c | 2 +- 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 135c879ed..e31dbfe03 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +10 September 2021: Wouter + - Fix initialisation errors reported by gcc sanitizer. + 8 September 2021: Wouter - Merged #41 from Moritz Schneider: made outbound-msg-retry configurable. diff --git a/services/rpz.c b/services/rpz.c index 57b22d312..434660686 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -2105,7 +2105,7 @@ rpz_callback_from_iterator_module(struct module_qstate* ms, struct iter_qstate* struct auth_zones* az; struct auth_zone* a; struct clientip_synthesized_rr* raddr = NULL; - struct rpz* r; + struct rpz* r = NULL; struct local_zone* z = NULL; struct matched_delegation_point match = {0}; diff --git a/testcode/testbound.c b/testcode/testbound.c index 66299d693..ec627cc8d 100644 --- a/testcode/testbound.c +++ b/testcode/testbound.c @@ -374,6 +374,7 @@ main(int argc, char* argv[]) (void)unsetenv("NOTIFY_SOCKET"); #endif /* HAVE_SYSTEMD */ + checklock_start(); log_init(NULL, 0, NULL); /* determine commandline options for the daemon */ pass_argc = 1; diff --git a/testcode/unitmain.c b/testcode/unitmain.c index c18be7be3..16aa88450 100644 --- a/testcode/unitmain.c +++ b/testcode/unitmain.c @@ -861,6 +861,7 @@ void ecdsa_evp_workaround_init(void); int main(int argc, char* argv[]) { + checklock_start(); log_init(NULL, 0, NULL); if(argc != 1) { printf("usage: %s\n", argv[0]); @@ -888,7 +889,6 @@ main(int argc, char* argv[]) if(NSS_NoDB_Init(".") != SECSuccess) fatal_exit("could not init NSS"); #endif /* HAVE_SSL or HAVE_NSS*/ - checklock_start(); authzone_test(); neg_test(); rnd_test(); From a64cbe958dacb2cafe2800587fd76154371a464b Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 10 Sep 2021 15:11:30 +0200 Subject: [PATCH 387/553] - Fix lock debug code for gcc sanitizer reports. --- daemon/daemon.c | 1 - daemon/unbound.c | 1 + dnstap/unbound-dnstap-socket.c | 2 +- doc/Changelog | 1 + smallapp/unbound-checkconf.c | 2 +- smallapp/unbound-control.c | 2 +- testcode/lock_verify.c | 33 +++++++++++++++++++++++++++++++++ 7 files changed, 38 insertions(+), 4 deletions(-) diff --git a/daemon/daemon.c b/daemon/daemon.c index 08497c5ed..0e3923b4e 100644 --- a/daemon/daemon.c +++ b/daemon/daemon.c @@ -210,7 +210,6 @@ daemon_init(void) } #endif /* USE_WINSOCK */ signal_handling_record(); - checklock_start(); #ifdef HAVE_SSL # ifdef HAVE_ERR_LOAD_CRYPTO_STRINGS ERR_load_crypto_strings(); diff --git a/daemon/unbound.c b/daemon/unbound.c index 934a96c80..457a08032 100644 --- a/daemon/unbound.c +++ b/daemon/unbound.c @@ -781,6 +781,7 @@ main(int argc, char* argv[]) int cmdline_cfg = 0; #endif + checklock_start(); log_init(NULL, 0, NULL); log_ident_default = strrchr(argv[0],'/')?strrchr(argv[0],'/')+1:argv[0]; log_ident_set_default(log_ident_default); diff --git a/dnstap/unbound-dnstap-socket.c b/dnstap/unbound-dnstap-socket.c index 0fc74015e..990b8a866 100644 --- a/dnstap/unbound-dnstap-socket.c +++ b/dnstap/unbound-dnstap-socket.c @@ -1264,9 +1264,9 @@ int main(int argc, char** argv) memset(&tls_list, 0, sizeof(tls_list)); /* lock debug start (if any) */ + checklock_start(); log_ident_set("unbound-dnstap-socket"); log_init(0, 0, 0); - checklock_start(); #ifdef SIGPIPE if(signal(SIGPIPE, SIG_IGN) == SIG_ERR) { diff --git a/doc/Changelog b/doc/Changelog index e31dbfe03..0e5626563 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,6 @@ 10 September 2021: Wouter - Fix initialisation errors reported by gcc sanitizer. + - Fix lock debug code for gcc sanitizer reports. 8 September 2021: Wouter - Merged #41 from Moritz Schneider: made outbound-msg-retry diff --git a/smallapp/unbound-checkconf.c b/smallapp/unbound-checkconf.c index 5d1d67684..52c15238c 100644 --- a/smallapp/unbound-checkconf.c +++ b/smallapp/unbound-checkconf.c @@ -909,9 +909,9 @@ int main(int argc, char* argv[]) const char* f; const char* opt = NULL; const char* cfgfile = CONFIGFILE; + checklock_start(); log_ident_set("unbound-checkconf"); log_init(NULL, 0, NULL); - checklock_start(); #ifdef USE_WINSOCK /* use registry config file in preference to compiletime location */ if(!(cfgfile=w_lookup_reg_str("Software\\Unbound", "ConfigFile"))) diff --git a/smallapp/unbound-control.c b/smallapp/unbound-control.c index a3df25795..c7c38276f 100644 --- a/smallapp/unbound-control.c +++ b/smallapp/unbound-control.c @@ -944,9 +944,9 @@ int main(int argc, char* argv[]) extern int check_locking_order; check_locking_order = 0; #endif /* USE_THREAD_DEBUG */ + checklock_start(); log_ident_set("unbound-control"); log_init(NULL, 0, NULL); - checklock_start(); #ifdef USE_WINSOCK /* use registry config file in preference to compiletime location */ if(!(cfgfile=w_lookup_reg_str("Software\\Unbound", "ConfigFile"))) diff --git a/testcode/lock_verify.c b/testcode/lock_verify.c index 666a7029d..b0cffe292 100644 --- a/testcode/lock_verify.c +++ b/testcode/lock_verify.c @@ -387,6 +387,37 @@ static void check_order(rbtree_type* all_locks) fprintf(stderr, "\n"); } +/** delete lock ref */ +static void dellockref(rbnode_type* node, void* ATTR_UNUSED(arg)) +{ + struct lock_ref* o = (struct lock_ref*)node; + if(!o) return; + free(o->file); + free(o); +} + +/** delete lock node */ +static void delnode(rbnode_type* node, void* ATTR_UNUSED(arg)) +{ + struct order_lock* o = (struct order_lock*)node; + if(!o) return; + free(o->create_file); + if(o->smaller) { + traverse_postorder(o->smaller, &dellockref, NULL); + free(o->smaller); + } + free(o); +} + +/** delete allocated memory */ +static void locks_free(rbtree_type* all_locks) +{ + if(!all_locks) + return; + traverse_postorder(all_locks, &delnode, NULL); + free(all_locks); +} + /** main program to verify all traces passed */ int main(int argc, char* argv[]) @@ -403,6 +434,7 @@ main(int argc, char* argv[]) usage(); return 1; } + checklock_start(); log_init(NULL, 0, NULL); log_ident_set("lock-verify"); /* init */ @@ -421,6 +453,7 @@ main(int argc, char* argv[]) printf("checked %d locks in %d seconds with %d errors.\n", (int)all_locks->count, (int)(time(NULL)-starttime), errors_detected); + locks_free(all_locks); if(errors_detected) return 1; return 0; } From 63a406a432f41e67b17eece7dfb74616778195de Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 10 Sep 2021 15:27:05 +0200 Subject: [PATCH 388/553] - Fix more initialisation errors reported by gcc sanitizer. --- doc/Changelog | 1 + testcode/dohclient.c | 2 +- testcode/perf.c | 2 +- testcode/streamtcp.c | 2 +- 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 0e5626563..db318455a 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,7 @@ 10 September 2021: Wouter - Fix initialisation errors reported by gcc sanitizer. - Fix lock debug code for gcc sanitizer reports. + - Fix more initialisation errors reported by gcc sanitizer. 8 September 2021: Wouter - Merged #41 from Moritz Schneider: made outbound-msg-retry diff --git a/testcode/dohclient.c b/testcode/dohclient.c index 93d84a835..731aa6e13 100644 --- a/testcode/dohclient.c +++ b/testcode/dohclient.c @@ -571,8 +571,8 @@ int main(int argc, char** argv) return 1; } #endif - log_init(0, 0, 0); checklock_start(); + log_init(0, 0, 0); h2_session = http2_session_create(); if(!h2_session) fatal_exit("out of memory"); diff --git a/testcode/perf.c b/testcode/perf.c index b13eca6d3..55d6483c7 100644 --- a/testcode/perf.c +++ b/testcode/perf.c @@ -575,9 +575,9 @@ int main(int argc, char* argv[]) memset(&info, 0, sizeof(info)); info.io_num = 16; + checklock_start(); log_init(NULL, 0, NULL); log_ident_set("perf"); - checklock_start(); #ifdef USE_WINSOCK if((r = WSAStartup(MAKEWORD(2,2), &wsa_data)) != 0) fatal_exit("WSAStartup failed: %s", wsa_strerror(r)); diff --git a/testcode/streamtcp.c b/testcode/streamtcp.c index 2bd076ee5..ecc83c1cf 100644 --- a/testcode/streamtcp.c +++ b/testcode/streamtcp.c @@ -437,8 +437,8 @@ int main(int argc, char** argv) #endif /* lock debug start (if any) */ - log_init(0, 0, 0); checklock_start(); + log_init(0, 0, 0); #ifdef SIGPIPE if(signal(SIGPIPE, &sigh) == SIG_ERR) { From 808a3cb16daf2d7238aa24fccecaaa0398fe13fa Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 20 Sep 2021 17:52:34 +0200 Subject: [PATCH 389/553] - Fix crosscompile on windows to work with openssl 3.0.0 the link with ws2_32 needs -l:libssp.a for __strcpy_chk. Also copy results from lib64 directory if needed. --- doc/Changelog | 5 +++++ makedist.sh | 17 ++++++++++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index db318455a..fac757c5f 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,8 @@ +20 September 2021: Wouter + - Fix crosscompile on windows to work with openssl 3.0.0 the + link with ws2_32 needs -l:libssp.a for __strcpy_chk. + Also copy results from lib64 directory if needed. + 10 September 2021: Wouter - Fix initialisation errors reported by gcc sanitizer. - Fix lock debug code for gcc sanitizer reports. diff --git a/makedist.sh b/makedist.sh index 6b7e0a83d..341055d0f 100755 --- a/makedist.sh +++ b/makedist.sh @@ -272,7 +272,7 @@ if [ "$DOWIN" = "yes" ]; then sslflags="no-asm -DOPENSSL_NO_CAPIENG mingw" fi info "winssl: Configure no-shared $sslflags" - CC=${warch}-w64-mingw32-gcc AR=${warch}-w64-mingw32-ar RANLIB=${warch}-w64-mingw32-ranlib WINDRES=${warch}-w64-mingw32-windres ./Configure --prefix="$sslinstall" no-shared $sslflags || error_cleanup "OpenSSL Configure failed" + __CNF_LDLIBS=-l:libssp.a CC=${warch}-w64-mingw32-gcc AR=${warch}-w64-mingw32-ar RANLIB=${warch}-w64-mingw32-ranlib WINDRES=${warch}-w64-mingw32-windres ./Configure --prefix="$sslinstall" no-shared $sslflags || error_cleanup "OpenSSL Configure failed" info "winssl: make" make $MINJ || error_cleanup "OpenSSL crosscompile failed" # only install sw not docs, which take a long time. @@ -285,7 +285,7 @@ if [ "$DOWIN" = "yes" ]; then sslsharedinstall="`pwd`/sslsharedinstall" cd openssl_shared info "winssl: Configure shared $sslflags" - CC=${warch}-w64-mingw32-gcc AR=${warch}-w64-mingw32-ar RANLIB=${warch}-w64-mingw32-ranlib WINDRES=${warch}-w64-mingw32-windres ./Configure --prefix="$sslsharedinstall" shared $sslflags || error_cleanup "OpenSSL Configure failed" + __CNF_LDLIBS=-l:libssp.a CC=${warch}-w64-mingw32-gcc AR=${warch}-w64-mingw32-ar RANLIB=${warch}-w64-mingw32-ranlib WINDRES=${warch}-w64-mingw32-windres ./Configure --prefix="$sslsharedinstall" shared $sslflags || error_cleanup "OpenSSL Configure failed" info "winssl: make" make $MINJ || error_cleanup "OpenSSL crosscompile failed" info "winssl: make install_sw" @@ -415,7 +415,18 @@ if [ "$DOWIN" = "yes" ]; then cp ../doc/example.conf ../doc/Changelog . 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/. + # test to see if lib or lib64 (for openssl 3.0.0) needs to be used + if test -f ../../sslsharedinstall/lib/libcrypto.dll.a; then + cp ../../sslsharedinstall/lib/libcrypto.dll.a libunbound/. + else + cp ../../sslsharedinstall/lib64/libcrypto.dll.a libunbound/. + fi + if test -f ../../sslsharedinstall/lib/libssl.dll.a; then + cp ../../sslsharedinstall/lib/libssl.dll.a libunbound/. + else + cp ../../sslsharedinstall/lib64/libssl.dll.a libunbound/. + fi + 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/bin/libcrypto*.dll ../../sslsharedinstall/bin/libssl*.dll ../../wxpinstall/bin/libexpat*.dll ../../wxpinstall/lib/libexpat.dll.a libunbound/. if test "$W64" = "no"; then # Disable stack-protector for 32-bit windows builds. # cp /usr/i686-w64-mingw32/sys-root/mingw/bin/libssp-0.dll libunbound/. From 38f500f1c9a4e6e42ac5a7b348eba9148c66d15a Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 21 Sep 2021 09:20:56 +0200 Subject: [PATCH 390/553] - For crosscompile on windows, detect 64bit stackprotector library. --- doc/Changelog | 3 +++ makedist.sh | 16 ++++++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index fac757c5f..59864127e 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +21 September 2021: Wouter + - For crosscompile on windows, detect 64bit stackprotector library. + 20 September 2021: Wouter - Fix crosscompile on windows to work with openssl 3.0.0 the link with ws2_32 needs -l:libssp.a for __strcpy_chk. diff --git a/makedist.sh b/makedist.sh index 341055d0f..cfe2d727a 100755 --- a/makedist.sh +++ b/makedist.sh @@ -271,8 +271,18 @@ if [ "$DOWIN" = "yes" ]; then else sslflags="no-asm -DOPENSSL_NO_CAPIENG mingw" fi + if test "$W64" = "yes" -a -f /usr/x86_64-w64-mingw32/sys-root/mingw/bin/libssp-0.dll; then + # stack protector lib needs to link in to make + # -lws2_32 work in openssl link stage + SSPLIB="__CNF_LDLIBS=-l:libssp.a" + else + # disable SSPLIB for 32bit or if no such file + SSPLIB="" + fi info "winssl: Configure no-shared $sslflags" - __CNF_LDLIBS=-l:libssp.a CC=${warch}-w64-mingw32-gcc AR=${warch}-w64-mingw32-ar RANLIB=${warch}-w64-mingw32-ranlib WINDRES=${warch}-w64-mingw32-windres ./Configure --prefix="$sslinstall" no-shared $sslflags || error_cleanup "OpenSSL Configure failed" + set -x # echo the configure command + $SSPLIB CC=${warch}-w64-mingw32-gcc AR=${warch}-w64-mingw32-ar RANLIB=${warch}-w64-mingw32-ranlib WINDRES=${warch}-w64-mingw32-windres ./Configure --prefix="$sslinstall" no-shared $sslflags || error_cleanup "OpenSSL Configure failed" + set +x info "winssl: make" make $MINJ || error_cleanup "OpenSSL crosscompile failed" # only install sw not docs, which take a long time. @@ -285,7 +295,9 @@ if [ "$DOWIN" = "yes" ]; then sslsharedinstall="`pwd`/sslsharedinstall" cd openssl_shared info "winssl: Configure shared $sslflags" - __CNF_LDLIBS=-l:libssp.a CC=${warch}-w64-mingw32-gcc AR=${warch}-w64-mingw32-ar RANLIB=${warch}-w64-mingw32-ranlib WINDRES=${warch}-w64-mingw32-windres ./Configure --prefix="$sslsharedinstall" shared $sslflags || error_cleanup "OpenSSL Configure failed" + set -x # echo the configure command + $SSPLIB CC=${warch}-w64-mingw32-gcc AR=${warch}-w64-mingw32-ar RANLIB=${warch}-w64-mingw32-ranlib WINDRES=${warch}-w64-mingw32-windres ./Configure --prefix="$sslsharedinstall" shared $sslflags || error_cleanup "OpenSSL Configure failed" + set +x info "winssl: make" make $MINJ || error_cleanup "OpenSSL crosscompile failed" info "winssl: make install_sw" From 24d0dc1725be0965c2358b3ee7939b53f6f0de3d Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 21 Sep 2021 09:23:38 +0200 Subject: [PATCH 391/553] - Fix crosscompile shell syntax. --- doc/Changelog | 1 + makedist.sh | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 59864127e..f24cd7274 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,6 @@ 21 September 2021: Wouter - For crosscompile on windows, detect 64bit stackprotector library. + - Fix crosscompile shell syntax. 20 September 2021: Wouter - Fix crosscompile on windows to work with openssl 3.0.0 the diff --git a/makedist.sh b/makedist.sh index cfe2d727a..f288383fa 100755 --- a/makedist.sh +++ b/makedist.sh @@ -274,14 +274,14 @@ if [ "$DOWIN" = "yes" ]; then if test "$W64" = "yes" -a -f /usr/x86_64-w64-mingw32/sys-root/mingw/bin/libssp-0.dll; then # stack protector lib needs to link in to make # -lws2_32 work in openssl link stage - SSPLIB="__CNF_LDLIBS=-l:libssp.a" + SSPLIB="-l:libssp.a" else # disable SSPLIB for 32bit or if no such file SSPLIB="" fi info "winssl: Configure no-shared $sslflags" set -x # echo the configure command - $SSPLIB CC=${warch}-w64-mingw32-gcc AR=${warch}-w64-mingw32-ar RANLIB=${warch}-w64-mingw32-ranlib WINDRES=${warch}-w64-mingw32-windres ./Configure --prefix="$sslinstall" no-shared $sslflags || error_cleanup "OpenSSL Configure failed" + __CNF_LDLIBS=$SSPLIB CC=${warch}-w64-mingw32-gcc AR=${warch}-w64-mingw32-ar RANLIB=${warch}-w64-mingw32-ranlib WINDRES=${warch}-w64-mingw32-windres ./Configure --prefix="$sslinstall" no-shared $sslflags || error_cleanup "OpenSSL Configure failed" set +x info "winssl: make" make $MINJ || error_cleanup "OpenSSL crosscompile failed" @@ -296,7 +296,7 @@ if [ "$DOWIN" = "yes" ]; then cd openssl_shared info "winssl: Configure shared $sslflags" set -x # echo the configure command - $SSPLIB CC=${warch}-w64-mingw32-gcc AR=${warch}-w64-mingw32-ar RANLIB=${warch}-w64-mingw32-ranlib WINDRES=${warch}-w64-mingw32-windres ./Configure --prefix="$sslsharedinstall" shared $sslflags || error_cleanup "OpenSSL Configure failed" + __CNF_LDLIBS=$SSPLIB CC=${warch}-w64-mingw32-gcc AR=${warch}-w64-mingw32-ar RANLIB=${warch}-w64-mingw32-ranlib WINDRES=${warch}-w64-mingw32-windres ./Configure --prefix="$sslsharedinstall" shared $sslflags || error_cleanup "OpenSSL Configure failed" set +x info "winssl: make" make $MINJ || error_cleanup "OpenSSL crosscompile failed" From 9f26f397a952afc612d89f5b0fb75ed24059d936 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 21 Sep 2021 13:51:34 +0200 Subject: [PATCH 392/553] - Fix crosscompile windows to use libssp when it exists. - For the windows compile script disable gost. - Fix that on windows, use BIO_set_callback_ex instead of deprecated --- config.h.in | 3 +++ configure | 2 +- configure.ac | 2 +- doc/Changelog | 4 ++++ makedist.sh | 18 +++++++----------- util/netevent.c | 19 ++++++++++++++++++- 6 files changed, 34 insertions(+), 14 deletions(-) diff --git a/config.h.in b/config.h.in index ea6afa480..da25a2928 100644 --- a/config.h.in +++ b/config.h.in @@ -72,6 +72,9 @@ /* If we have be64toh */ #undef HAVE_BE64TOH +/* Define to 1 if you have the `BIO_set_callback_ex' function. */ +#undef HAVE_BIO_SET_CALLBACK_EX + /* Define to 1 if you have the header file. */ #undef HAVE_BSD_STDLIB_H diff --git a/configure b/configure index 03e8fb5fd..ec8a25499 100755 --- a/configure +++ b/configure @@ -18455,7 +18455,7 @@ fi done -for ac_func in OPENSSL_config EVP_sha1 EVP_sha256 EVP_sha512 FIPS_mode EVP_MD_CTX_new OpenSSL_add_all_digests OPENSSL_init_crypto EVP_cleanup ENGINE_cleanup ERR_load_crypto_strings CRYPTO_cleanup_all_ex_data ERR_free_strings RAND_cleanup DSA_SIG_set0 EVP_dss1 EVP_DigestVerify EVP_aes_256_cbc EVP_EncryptInit_ex HMAC_Init_ex CRYPTO_THREADID_set_callback EVP_MAC_CTX_set_params OSSL_PARAM_BLD_new +for ac_func in OPENSSL_config EVP_sha1 EVP_sha256 EVP_sha512 FIPS_mode EVP_MD_CTX_new OpenSSL_add_all_digests OPENSSL_init_crypto EVP_cleanup ENGINE_cleanup ERR_load_crypto_strings CRYPTO_cleanup_all_ex_data ERR_free_strings RAND_cleanup DSA_SIG_set0 EVP_dss1 EVP_DigestVerify EVP_aes_256_cbc EVP_EncryptInit_ex HMAC_Init_ex CRYPTO_THREADID_set_callback EVP_MAC_CTX_set_params OSSL_PARAM_BLD_new BIO_set_callback_ex do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" diff --git a/configure.ac b/configure.ac index b9b177584..99d57c412 100644 --- a/configure.ac +++ b/configure.ac @@ -867,7 +867,7 @@ else AC_MSG_RESULT([no]) fi AC_CHECK_HEADERS([openssl/conf.h openssl/engine.h openssl/bn.h openssl/dh.h openssl/dsa.h openssl/rsa.h openssl/core_names.h openssl/param_build.h],,, [AC_INCLUDES_DEFAULT]) -AC_CHECK_FUNCS([OPENSSL_config EVP_sha1 EVP_sha256 EVP_sha512 FIPS_mode EVP_MD_CTX_new OpenSSL_add_all_digests OPENSSL_init_crypto EVP_cleanup ENGINE_cleanup ERR_load_crypto_strings CRYPTO_cleanup_all_ex_data ERR_free_strings RAND_cleanup DSA_SIG_set0 EVP_dss1 EVP_DigestVerify EVP_aes_256_cbc EVP_EncryptInit_ex HMAC_Init_ex CRYPTO_THREADID_set_callback EVP_MAC_CTX_set_params OSSL_PARAM_BLD_new]) +AC_CHECK_FUNCS([OPENSSL_config EVP_sha1 EVP_sha256 EVP_sha512 FIPS_mode EVP_MD_CTX_new OpenSSL_add_all_digests OPENSSL_init_crypto EVP_cleanup ENGINE_cleanup ERR_load_crypto_strings CRYPTO_cleanup_all_ex_data ERR_free_strings RAND_cleanup DSA_SIG_set0 EVP_dss1 EVP_DigestVerify EVP_aes_256_cbc EVP_EncryptInit_ex HMAC_Init_ex CRYPTO_THREADID_set_callback EVP_MAC_CTX_set_params OSSL_PARAM_BLD_new BIO_set_callback_ex]) # these check_funcs need -lssl BAKLIBS="$LIBS" diff --git a/doc/Changelog b/doc/Changelog index f24cd7274..c6667ff3e 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,10 @@ 21 September 2021: Wouter - For crosscompile on windows, detect 64bit stackprotector library. - Fix crosscompile shell syntax. + - Fix crosscompile windows to use libssp when it exists. + - For the windows compile script disable gost. + - Fix that on windows, use BIO_set_callback_ex instead of deprecated + BIO_set_callback. 20 September 2021: Wouter - Fix crosscompile on windows to work with openssl 3.0.0 the diff --git a/makedist.sh b/makedist.sh index f288383fa..1aafb8467 100755 --- a/makedist.sh +++ b/makedist.sh @@ -271,12 +271,12 @@ if [ "$DOWIN" = "yes" ]; then else sslflags="no-asm -DOPENSSL_NO_CAPIENG mingw" fi - if test "$W64" = "yes" -a -f /usr/x86_64-w64-mingw32/sys-root/mingw/bin/libssp-0.dll; then + if test -f /usr/x86_64-w64-mingw32/sys-root/mingw/bin/libssp-0.dll; then # stack protector lib needs to link in to make # -lws2_32 work in openssl link stage SSPLIB="-l:libssp.a" else - # disable SSPLIB for 32bit or if no such file + # disable SSPLIB if no such file SSPLIB="" fi info "winssl: Configure no-shared $sslflags" @@ -376,12 +376,12 @@ if [ "$DOWIN" = "yes" ]; then fi if test "$W64" = "no"; then # Disable stack-protector for 32-bit windows builds. - echo "$configure"' --enable-debug --enable-static-exe --disable-flto '"$* $cross_flag" "$file_flag" "$file2_flag" "$file3_flag" CFLAGS='-O2 -g -fno-stack-protector' - $configure --enable-debug --enable-static-exe --disable-flto $* $cross_flag "$file_flag" "$file2_flag" "$file3_flag" CFLAGS='-O2 -g -fno-stack-protector'\ + echo "$configure"' --enable-debug --enable-static-exe --disable-flto --disable-gost '"$* $cross_flag" "$file_flag" "$file2_flag" "$file3_flag" CFLAGS='-O2 -g -fno-stack-protector' + $configure --enable-debug --enable-static-exe --disable-flto --disable-gost $* $cross_flag "$file_flag" "$file2_flag" "$file3_flag" CFLAGS='-O2 -g -fno-stack-protector'\ || error_cleanup "Could not configure" else - echo "$configure"' --enable-debug --enable-static-exe --disable-flto '"$* $cross_flag" - $configure --enable-debug --enable-static-exe --disable-flto $* $cross_flag \ + echo "$configure"' --enable-debug --enable-static-exe --disable-flto --disable-gost '"$* $cross_flag" + $configure --enable-debug --enable-static-exe --disable-flto --disable-gost $* $cross_flag \ || error_cleanup "Could not configure" fi info "Calling make" @@ -439,11 +439,7 @@ if [ "$DOWIN" = "yes" ]; then cp ../../sslsharedinstall/lib64/libssl.dll.a libunbound/. fi 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/bin/libcrypto*.dll ../../sslsharedinstall/bin/libssl*.dll ../../wxpinstall/bin/libexpat*.dll ../../wxpinstall/lib/libexpat.dll.a libunbound/. - if test "$W64" = "no"; then - # Disable stack-protector for 32-bit windows builds. - # cp /usr/i686-w64-mingw32/sys-root/mingw/bin/libssp-0.dll libunbound/. - : - else + if test -f /usr/x86_64-w64-mingw32/sys-root/mingw/bin/libssp-0.dll; then cp /usr/x86_64-w64-mingw32/sys-root/mingw/bin/libssp-0.dll libunbound/. fi # zipfile diff --git a/util/netevent.c b/util/netevent.c index 9a3b210b2..19ac2c837 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -943,7 +943,16 @@ int comm_point_perform_accept(struct comm_point* c, #ifdef USE_WINSOCK static long win_bio_cb(BIO *b, int oper, const char* ATTR_UNUSED(argp), - int ATTR_UNUSED(argi), long argl, long retvalue) +#ifdef HAVE_BIO_SET_CALLBACK_EX + size_t ATTR_UNUSED(len), +#endif + int ATTR_UNUSED(argi), long argl, +#ifndef HAVE_BIO_SET_CALLBACK_EX + long retvalue +#else + int retvalue, size_t* ATTR_UNUSED(processed) +#endif + ) { int wsa_err = WSAGetLastError(); /* store errcode before it is gone */ verbose(VERB_ALGO, "bio_cb %d, %s %s %s", oper, @@ -973,9 +982,17 @@ comm_point_tcp_win_bio_cb(struct comm_point* c, void* thessl) { SSL* ssl = (SSL*)thessl; /* set them both just in case, but usually they are the same BIO */ +#ifdef HAVE_BIO_SET_CALLBACK_EX + BIO_set_callback_ex(SSL_get_rbio(ssl), &win_bio_cb); +#else BIO_set_callback(SSL_get_rbio(ssl), &win_bio_cb); +#endif BIO_set_callback_arg(SSL_get_rbio(ssl), (char*)c->ev->ev); +#ifdef HAVE_BIO_SET_CALLBACK_EX + BIO_set_callback_ex(SSL_get_wbio(ssl), &win_bio_cb); +#else BIO_set_callback(SSL_get_wbio(ssl), &win_bio_cb); +#endif BIO_set_callback_arg(SSL_get_wbio(ssl), (char*)c->ev->ev); } #endif From 962cb070554af12039638880a4bbefe9afe192e9 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 21 Sep 2021 14:34:56 +0200 Subject: [PATCH 393/553] - Fix crosscompile script for the shared build flags. --- doc/Changelog | 1 + makedist.sh | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index c6667ff3e..192517ceb 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -5,6 +5,7 @@ - For the windows compile script disable gost. - Fix that on windows, use BIO_set_callback_ex instead of deprecated BIO_set_callback. + - Fix crosscompile script for the shared build flags. 20 September 2021: Wouter - Fix crosscompile on windows to work with openssl 3.0.0 the diff --git a/makedist.sh b/makedist.sh index 1aafb8467..ea79e7b46 100755 --- a/makedist.sh +++ b/makedist.sh @@ -393,12 +393,12 @@ if [ "$DOWIN" = "yes" ]; then cd ../unbound_shared if test "$W64" = "no"; then # Disable stack-protector for 32-bit windows builds. - echo "$configure"' --enable-debug --disable-flto '"$* $shared_cross_flag" "$file_flag" "$file2_flag" "$file3_flag" CFLAGS='-O2 -g -fno-stack-protector' - $configure --enable-debug --disable-flto $* $shared_cross_flag "$file_flag" "$file2_flag" "$file3_flag" CFLAGS='-O2 -g -fno-stack-protector'\ + echo "$configure"' --enable-debug --disable-flto --disable-gost '"$* $shared_cross_flag" "$file_flag" "$file2_flag" "$file3_flag" CFLAGS='-O2 -g -fno-stack-protector' + $configure --enable-debug --disable-flto --disable-gost $* $shared_cross_flag "$file_flag" "$file2_flag" "$file3_flag" CFLAGS='-O2 -g -fno-stack-protector'\ || error_cleanup "Could not configure" else - echo "$configure"' --enable-debug --disable-flto '"$* $shared_cross_flag" - $configure --enable-debug --disable-flto $* $shared_cross_flag \ + echo "$configure"' --enable-debug --disable-flto --disable-gost '"$* $shared_cross_flag" + $configure --enable-debug --disable-flto --disable-gost $* $shared_cross_flag \ || error_cleanup "Could not configure" fi info "Calling make for DLL" From 89510f4a0cb60e0f7d1388e497f1b5feb0464d04 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 27 Sep 2021 15:09:01 +0200 Subject: [PATCH 394/553] - Implement RFC8375: Special-Use Domain 'home.arpa.'. --- doc/Changelog | 3 +++ doc/example.conf.in | 1 + doc/unbound.conf.5.in | 23 ++++++++++++++++------- services/localzone.c | 5 +++++ 4 files changed, 25 insertions(+), 7 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 192517ceb..6349795c9 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +27 September 2021: Wouter + - Implement RFC8375: Special-Use Domain 'home.arpa.'. + 21 September 2021: Wouter - For crosscompile on windows, detect 64bit stackprotector library. - Fix crosscompile shell syntax. diff --git a/doc/example.conf.in b/doc/example.conf.in index ff5c7ca8e..949a0706e 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -666,6 +666,7 @@ server: # local-zone: "localhost." nodefault # local-zone: "127.in-addr.arpa." nodefault # local-zone: "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa." nodefault + # local-zone: "home.arpa." nodefault # local-zone: "onion." nodefault # local-zone: "test." nodefault # local-zone: "invalid." nodefault diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index f8521ed57..05971544b 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -1412,13 +1412,13 @@ has no other effect than turning off default contents for the given zone. Use \fInodefault\fR if you use exactly that zone, if you want to use a subzone, use \fItransparent\fR. .P -The default zones are localhost, reverse 127.0.0.1 and ::1, the onion, test, -invalid and the AS112 zones. The AS112 zones are reverse DNS zones for -private use and reserved IP addresses for which the servers on the internet -cannot provide correct answers. They are configured by default to give -nxdomain (no reverse information) answers. The defaults can be turned off -by specifying your own local\-zone of that name, or using the 'nodefault' -type. Below is a list of the default zone contents. +The default zones are localhost, reverse 127.0.0.1 and ::1, the home.arpa, +the onion, test, invalid and the AS112 zones. The AS112 zones are reverse +DNS zones for private use and reserved IP addresses for which the servers +on the internet cannot provide correct answers. They are configured by +default to give nxdomain (no reverse information) answers. The defaults +can be turned off by specifying your own local\-zone of that name, or +using the 'nodefault' type. Below is a list of the default zone contents. .TP 10 \h'5'\fIlocalhost\fR The IP4 and IP6 localhost information is given. NS and SOA records are provided @@ -1459,6 +1459,15 @@ local\-data: "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0. PTR localhost." .fi .TP 10 +\h'5'\fIhome.arpa (RFC 8375)\fR +Default content: +.nf +local\-zone: "home.arpa." static +local\-data: "home.arpa. 10800 IN NS localhost." +local\-data: "home.arpa. 10800 IN + SOA localhost. nobody.invalid. 1 3600 1200 604800 10800" +.fi +.TP 10 \h'5'\fIonion (RFC 7686)\fR Default content: .nf diff --git a/services/localzone.c b/services/localzone.c index 075f1087e..17dd46813 100644 --- a/services/localzone.c +++ b/services/localzone.c @@ -898,6 +898,11 @@ int local_zone_enter_defaults(struct local_zones* zones, struct config_file* cfg } lock_rw_unlock(&z->lock); } + /* home.arpa. zone (RFC 8375) */ + if(!add_empty_default(zones, cfg, "home.arpa.")) { + log_err("out of memory adding default zone"); + return 0; + } /* onion. zone (RFC 7686) */ if(!add_empty_default(zones, cfg, "onion.")) { log_err("out of memory adding default zone"); From ce39d5ad17fa11dd6dbc9951be0be9c41dcd1f68 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 4 Oct 2021 09:19:27 +0200 Subject: [PATCH 395/553] - Fix to add example.conf note for outbound-msg-retry. --- doc/Changelog | 3 +++ doc/example.conf.in | 3 +++ 2 files changed, 6 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 6349795c9..9d0651485 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +4 October 2021: Wouter + - Fix to add example.conf note for outbound-msg-retry. + 27 September 2021: Wouter - Implement RFC8375: Special-Use Domain 'home.arpa.'. diff --git a/doc/example.conf.in b/doc/example.conf.in index 949a0706e..febeb2ac1 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -164,6 +164,9 @@ server: # perform connect for UDP sockets to mitigate ICMP side channel. # udp-connect: yes + # The number of retries when a non-positive response is received. + # outbound-msg-retry: 5 + # msec for waiting for an unknown server to reply. Increase if you # are behind a slow satellite link, to eg. 1128. # unknown-server-time-limit: 376 From 09afdb7669f4c86cf1437a0d101316ef8b2b101d Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 11 Oct 2021 17:00:20 +0200 Subject: [PATCH 396/553] - Fix chaos replies to have truncation for short message lengths, or long reply strings. --- daemon/worker.c | 21 ++++++++++++++------- doc/Changelog | 4 ++++ 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/daemon/worker.c b/daemon/worker.c index 93215a237..b438700af 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -789,6 +789,14 @@ chaos_replystr(sldns_buffer* pkt, char** str, int num, struct edns_data* edns, int i; unsigned int rd = LDNS_RD_WIRE(sldns_buffer_begin(pkt)); unsigned int cd = LDNS_CD_WIRE(sldns_buffer_begin(pkt)); + size_t udpsize = edns->udp_size; + edns->edns_version = EDNS_ADVERTISED_VERSION; + edns->udp_size = EDNS_ADVERTISED_SIZE; + edns->bits &= EDNS_DO; + if(!inplace_cb_reply_local_call(&worker->env, NULL, NULL, NULL, + LDNS_RCODE_NOERROR, edns, repinfo, worker->scratchpad, + worker->env.now_tv)) + edns->opt_list = NULL; sldns_buffer_clear(pkt); sldns_buffer_skip(pkt, (ssize_t)sizeof(uint16_t)); /* skip id */ sldns_buffer_write_u16(pkt, (uint16_t)(BIT_QR|BIT_RA)); @@ -804,6 +812,12 @@ chaos_replystr(sldns_buffer* pkt, char** str, int num, struct edns_data* edns, for(i=0; i255) len=255; /* cap size of TXT record */ + if(sldns_buffer_position(pkt)+2+2+2+4+2+1+len+ + calc_edns_field_size(edns) > udpsize) { + sldns_buffer_write_u16_at(pkt, 6, i); /* ANCOUNT */ + LDNS_TC_SET(sldns_buffer_begin(pkt)); + break; + } sldns_buffer_write_u16(pkt, 0xc00c); /* compr ptr to query */ sldns_buffer_write_u16(pkt, LDNS_RR_TYPE_TXT); sldns_buffer_write_u16(pkt, LDNS_RR_CLASS_CH); @@ -813,13 +827,6 @@ chaos_replystr(sldns_buffer* pkt, char** str, int num, struct edns_data* edns, sldns_buffer_write(pkt, str[i], len); } sldns_buffer_flip(pkt); - edns->edns_version = EDNS_ADVERTISED_VERSION; - edns->udp_size = EDNS_ADVERTISED_SIZE; - edns->bits &= EDNS_DO; - if(!inplace_cb_reply_local_call(&worker->env, NULL, NULL, NULL, - LDNS_RCODE_NOERROR, edns, repinfo, worker->scratchpad, - worker->env.now_tv)) - edns->opt_list = NULL; if(sldns_buffer_capacity(pkt) >= sldns_buffer_limit(pkt)+calc_edns_field_size(edns)) attach_edns_record(pkt, edns); diff --git a/doc/Changelog b/doc/Changelog index 9d0651485..6e7abc812 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +11 October 2021: Wouter + - Fix chaos replies to have truncation for short message lengths, + or long reply strings. + 4 October 2021: Wouter - Fix to add example.conf note for outbound-msg-retry. From ecb0b44ba82d71c818a6a8f9304373ee79e4b5c3 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 11 Oct 2021 17:23:30 +0200 Subject: [PATCH 397/553] - Fix to protect custom regional create against small values. --- doc/Changelog | 1 + util/regional.c | 2 ++ 2 files changed, 3 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 6e7abc812..fe4b81f15 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,7 @@ 11 October 2021: Wouter - Fix chaos replies to have truncation for short message lengths, or long reply strings. + - Fix to protect custom regional create against small values. 4 October 2021: Wouter - Fix to add example.conf note for outbound-msg-retry. diff --git a/util/regional.c b/util/regional.c index bd67ecf50..93e911c5e 100644 --- a/util/regional.c +++ b/util/regional.c @@ -103,6 +103,8 @@ regional_create_custom_large_object(size_t size, size_t large_object_size) struct regional* regional_create_custom(size_t size) { + if(size < sizeof(struct regional)) + size = sizeof(struct regional); return regional_create_custom_large_object(size, REGIONAL_LARGE_OBJECT_SIZE); } From 8756f1e4c745c325b9ff6533820e7f9c5dcfa7be Mon Sep 17 00:00:00 2001 From: Florian Obser Date: Sun, 24 Oct 2021 15:55:17 +0200 Subject: [PATCH 398/553] Allow interface names as scope-id in IPv6 link-local addresses. For example, this makes forward-zone: name: "." forward-addr: fe80::20d:b9ff:fe46:c7f4%vio0 forward-first: yes work instead of fe80::20d:b9ff:fe46:c7f4%1. --- config.h.in | 3 +++ configure | 6 ++++++ configure.ac | 2 +- util/net_help.c | 11 ++++++++++- 4 files changed, 20 insertions(+), 2 deletions(-) diff --git a/config.h.in b/config.h.in index da25a2928..e8a26735d 100644 --- a/config.h.in +++ b/config.h.in @@ -318,6 +318,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_IFADDRS_H +/* Define to 1 if you have the `if_nametoindex' function. */ +#undef HAVE_IF_NAMETOINDEX + /* Define to 1 if you have the `inet_aton' function. */ #undef HAVE_INET_ATON diff --git a/configure b/configure index ec8a25499..e8dc11f2e 100755 --- a/configure +++ b/configure @@ -21730,6 +21730,12 @@ if test "${with_libunbound_only+set}" = set; then : INSTALLTARGET="install-lib" fi +fi +ac_fn_c_check_func "$LINENO" "if_nametoindex" "ac_cv_func_if_nametoindex" +if test "x$ac_cv_func_if_nametoindex" = xyes +then : + printf "%s\n" "#define HAVE_IF_NAMETOINDEX 1" >>confdefs.h + fi if test $ALLTARGET = "alltargets"; then diff --git a/configure.ac b/configure.ac index 99d57c412..f42fc314b 100644 --- a/configure.ac +++ b/configure.ac @@ -1601,7 +1601,7 @@ AC_LINK_IFELSE([AC_LANG_PROGRAM([ AC_MSG_RESULT(no)) AC_SEARCH_LIBS([setusercontext], [util]) -AC_CHECK_FUNCS([tzset sigprocmask fcntl getpwnam endpwent getrlimit setrlimit setsid chroot kill chown sleep usleep random srandom recvmsg sendmsg writev socketpair glob initgroups strftime localtime_r setusercontext _beginthreadex endservent endprotoent fsync shmget accept4 getifaddrs]) +AC_CHECK_FUNCS([tzset sigprocmask fcntl getpwnam endpwent getrlimit setrlimit setsid chroot kill chown sleep usleep random srandom recvmsg sendmsg writev socketpair glob initgroups strftime localtime_r setusercontext _beginthreadex endservent endprotoent fsync shmget accept4 getifaddrs if_nametoindex]) AC_CHECK_FUNCS([setresuid],,[AC_CHECK_FUNCS([setreuid])]) AC_CHECK_FUNCS([setresgid],,[AC_CHECK_FUNCS([setregid])]) diff --git a/util/net_help.c b/util/net_help.c index 3a671777c..c266e3551 100644 --- a/util/net_help.c +++ b/util/net_help.c @@ -38,6 +38,12 @@ */ #include "config.h" +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_NET_IF_H +#include +#endif #include "util/net_help.h" #include "util/log.h" #include "util/data/dname.h" @@ -266,7 +272,10 @@ ipstrtoaddr(const char* ip, int port, struct sockaddr_storage* addr, return 0; (void)strlcpy(buf, ip, sizeof(buf)); buf[s-ip]=0; - sa->sin6_scope_id = (uint32_t)atoi(s+1); +#ifdef HAVE_IF_NAMETOINDEX + if (!(sa->sin6_scope_id = if_nametoindex(s+1))) +#endif /* HAVE_IF_NAMETOINDEX */ + sa->sin6_scope_id = (uint32_t)atoi(s+1); ip = buf; } if(inet_pton((int)sa->sin6_family, ip, &sa->sin6_addr) <= 0) { From 3e6eeb504d967cd1ea58e1aecb76dcac9d31f2de Mon Sep 17 00:00:00 2001 From: Tom Carpay Date: Wed, 27 Oct 2021 13:48:49 +0000 Subject: [PATCH 399/553] Modules have their own outgoing ends options list But nothing happens with it yet --- daemon/worker.c | 3 +++ libunbound/libworker.c | 1 + services/authzone.c | 3 +++ util/data/msgparse.c | 2 ++ util/data/msgparse.h | 3 +++ validator/autotrust.c | 1 + 6 files changed, 13 insertions(+) diff --git a/daemon/worker.c b/daemon/worker.c index b438700af..dbb2da1fc 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -1012,6 +1012,7 @@ answer_notify(struct worker* w, struct query_info* qinfo, edns->ext_rcode = 0; edns->bits &= EDNS_DO; edns->opt_list = NULL; + edns->opt_list_modules_out = NULL; error_encode(pkt, rcode, qinfo, *(uint16_t*)(void *)sldns_buffer_begin(pkt), sldns_buffer_read_u16_at(pkt, 2), edns); @@ -1270,6 +1271,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.opt_list_modules_out = NULL; edns.padding_block_size = 0; verbose(VERB_ALGO, "query with bad edns version."); log_addr(VERB_CLIENT,"from",&repinfo->addr, repinfo->addrlen); @@ -1297,6 +1299,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.opt_list_modules_out = NULL; verbose(VERB_ALGO, "query with bad edns keepalive."); log_addr(VERB_CLIENT,"from",&repinfo->addr, repinfo->addrlen); error_encode(c->buffer, LDNS_RCODE_FORMERR, &qinfo, diff --git a/libunbound/libworker.c b/libunbound/libworker.c index 151f50cf5..c4ed660f3 100644 --- a/libunbound/libworker.c +++ b/libunbound/libworker.c @@ -601,6 +601,7 @@ setup_qinfo_edns(struct libworker* w, struct ctx_query* q, edns->edns_version = 0; edns->bits = EDNS_DO; edns->opt_list = NULL; + edns->opt_list_modules_out = NULL; edns->padding_block_size = 0; if(sldns_buffer_capacity(w->back->udp_buff) < 65535) edns->udp_size = (uint16_t)sldns_buffer_capacity( diff --git a/services/authzone.c b/services/authzone.c index 44dda2a71..38cc7ab21 100644 --- a/services/authzone.c +++ b/services/authzone.c @@ -5359,6 +5359,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.opt_list_modules_out = NULL; edns.padding_block_size = 0; if(sldns_buffer_capacity(buf) < 65535) edns.udp_size = (uint16_t)sldns_buffer_capacity(buf); @@ -6548,6 +6549,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.opt_list_modules_out = NULL; edns.padding_block_size = 0; if(sldns_buffer_capacity(buf) < 65535) edns.udp_size = (uint16_t)sldns_buffer_capacity(buf); @@ -8323,6 +8325,7 @@ zonemd_lookup_dnskey(struct auth_zone* z, struct module_env* env) edns.edns_version = 0; edns.bits = EDNS_DO; edns.opt_list = NULL; + edns.opt_list_modules_out = NULL; if(sldns_buffer_capacity(buf) < 65535) edns.udp_size = (uint16_t)sldns_buffer_capacity(buf); else edns.udp_size = 65535; diff --git a/util/data/msgparse.c b/util/data/msgparse.c index 6ee5559db..fb50c9165 100644 --- a/util/data/msgparse.c +++ b/util/data/msgparse.c @@ -1020,6 +1020,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->opt_list_modules_out = NULL; edns->padding_block_size = 0; /* take the options */ @@ -1094,6 +1095,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->opt_list_modules_out = NULL; edns->padding_block_size = 0; /* take the options */ diff --git a/util/data/msgparse.h b/util/data/msgparse.h index d2fd9c806..434a5b0b8 100644 --- a/util/data/msgparse.h +++ b/util/data/msgparse.h @@ -227,6 +227,9 @@ struct edns_data { uint16_t udp_size; /** rdata element list, or NULL if none */ struct edns_option* opt_list; + /** rdata element list of outgoing edns options from modules + * or NULL if none */ + struct edns_option* opt_list_modules_out; /** block size to pad */ uint16_t padding_block_size; }; diff --git a/validator/autotrust.c b/validator/autotrust.c index 9643a3ddb..080385e93 100644 --- a/validator/autotrust.c +++ b/validator/autotrust.c @@ -2378,6 +2378,7 @@ probe_anchor(struct module_env* env, struct trust_anchor* tp) edns.edns_version = 0; edns.bits = EDNS_DO; edns.opt_list = NULL; + edns.opt_list_modules_out = NULL; edns.padding_block_size = 0; if(sldns_buffer_capacity(buf) < 65535) edns.udp_size = (uint16_t)sldns_buffer_capacity(buf); From 3ebfa9fc9752f33db65bf84ec8d1071a53ca11e4 Mon Sep 17 00:00:00 2001 From: Tom Carpay Date: Wed, 27 Oct 2021 14:01:56 +0000 Subject: [PATCH 400/553] Outgoing module options go to opt_list_modules_out And opt_list_modules_out is reset in case of failure BEWARE! No options from modules will be encoded in the responses now! --- daemon/worker.c | 6 +++--- services/authzone.c | 2 +- services/localzone.c | 2 +- services/mesh.c | 16 ++++++++-------- util/data/msgreply.c | 2 +- 5 files changed, 14 insertions(+), 14 deletions(-) diff --git a/daemon/worker.c b/daemon/worker.c index dbb2da1fc..0d483de73 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -526,7 +526,7 @@ answer_norec_from_cache(struct worker* worker, struct query_info* qinfo, if(!inplace_cb_reply_servfail_call(&worker->env, qinfo, NULL, NULL, LDNS_RCODE_SERVFAIL, edns, repinfo, worker->scratchpad, worker->env.now_tv)) - edns->opt_list = NULL; + edns->opt_list_modules_out = NULL; error_encode(repinfo->c->buffer, LDNS_RCODE_SERVFAIL, &msg->qinfo, id, flags, edns); } @@ -730,7 +730,7 @@ answer_from_cache(struct worker* worker, struct query_info* qinfo, if(!inplace_cb_reply_servfail_call(&worker->env, qinfo, NULL, NULL, LDNS_RCODE_SERVFAIL, edns, repinfo, worker->scratchpad, worker->env.now_tv)) - edns->opt_list = NULL; + edns->opt_list_modules_out = NULL; error_encode(repinfo->c->buffer, LDNS_RCODE_SERVFAIL, qinfo, id, flags, edns); } @@ -796,7 +796,7 @@ chaos_replystr(sldns_buffer* pkt, char** str, int num, struct edns_data* edns, if(!inplace_cb_reply_local_call(&worker->env, NULL, NULL, NULL, LDNS_RCODE_NOERROR, edns, repinfo, worker->scratchpad, worker->env.now_tv)) - edns->opt_list = NULL; + edns->opt_list_modules_out = NULL; sldns_buffer_clear(pkt); sldns_buffer_skip(pkt, (ssize_t)sizeof(uint16_t)); /* skip id */ sldns_buffer_write_u16(pkt, (uint16_t)(BIT_QR|BIT_RA)); diff --git a/services/authzone.c b/services/authzone.c index 38cc7ab21..58056a13b 100644 --- a/services/authzone.c +++ b/services/authzone.c @@ -3518,7 +3518,7 @@ auth_error_encode(struct query_info* qinfo, struct module_env* env, if(!inplace_cb_reply_local_call(env, qinfo, NULL, NULL, rcode, edns, repinfo, temp, env->now_tv)) - edns->opt_list = NULL; + edns->opt_list_modules_out = NULL; error_encode(buf, rcode|BIT_AA, qinfo, *(uint16_t*)sldns_buffer_begin(buf), sldns_buffer_read_u16_at(buf, 2), edns); diff --git a/services/localzone.c b/services/localzone.c index 17dd46813..03d16f965 100644 --- a/services/localzone.c +++ b/services/localzone.c @@ -1299,7 +1299,7 @@ local_error_encode(struct query_info* qinfo, struct module_env* env, if(!inplace_cb_reply_local_call(env, qinfo, NULL, NULL, rcode, edns, repinfo, temp, env->now_tv)) - edns->opt_list = NULL; + edns->opt_list_modules_out = NULL; error_encode(buf, r, qinfo, *(uint16_t*)sldns_buffer_begin(buf), sldns_buffer_read_u16_at(buf, 2), edns); } diff --git a/services/mesh.c b/services/mesh.c index 200531903..be532610f 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -505,7 +505,7 @@ void mesh_new_client(struct mesh_area* mesh, struct query_info* qinfo, log_err("mesh_state_create: out of memory; SERVFAIL"); if(!inplace_cb_reply_servfail_call(mesh->env, qinfo, NULL, NULL, LDNS_RCODE_SERVFAIL, edns, rep, mesh->env->scratch, mesh->env->now_tv)) - edns->opt_list = NULL; + edns->opt_list_modules_out = NULL; error_encode(r_buffer, LDNS_RCODE_SERVFAIL, qinfo, qid, qflags, edns); comm_point_send_reply(rep); @@ -521,7 +521,7 @@ void mesh_new_client(struct mesh_area* mesh, struct query_info* qinfo, log_err("mesh_state_create: out of memory; SERVFAIL"); if(!inplace_cb_reply_servfail_call(mesh->env, qinfo, NULL, NULL, LDNS_RCODE_SERVFAIL, edns, rep, mesh->env->scratch, mesh->env->now_tv)) - edns->opt_list = NULL; + edns->opt_list_modules_out = NULL; error_encode(r_buffer, LDNS_RCODE_SERVFAIL, qinfo, qid, qflags, edns); comm_point_send_reply(rep); @@ -594,7 +594,7 @@ void mesh_new_client(struct mesh_area* mesh, struct query_info* qinfo, servfail_mem: if(!inplace_cb_reply_servfail_call(mesh->env, qinfo, &s->s, NULL, LDNS_RCODE_SERVFAIL, edns, rep, mesh->env->scratch, mesh->env->now_tv)) - edns->opt_list = NULL; + edns->opt_list_modules_out = NULL; error_encode(r_buffer, LDNS_RCODE_SERVFAIL, qinfo, qid, qflags, edns); comm_point_send_reply(rep); @@ -1145,11 +1145,11 @@ mesh_do_callback(struct mesh_state* m, int rcode, struct reply_info* rep, if(rcode == LDNS_RCODE_SERVFAIL) { if(!inplace_cb_reply_servfail_call(m->s.env, &m->s.qinfo, &m->s, rep, rcode, &r->edns, NULL, m->s.region, start_time)) - r->edns.opt_list = NULL; + r->edns.opt_list_modules_out = NULL; } else { if(!inplace_cb_reply_call(m->s.env, &m->s.qinfo, &m->s, rep, rcode, &r->edns, NULL, m->s.region, start_time)) - r->edns.opt_list = NULL; + r->edns.opt_list_modules_out = NULL; } fptr_ok(fptr_whitelist_mesh_cb(r->cb)); (*r->cb)(r->cb_arg, rcode, r->buf, sec_status_unchecked, NULL, @@ -1286,11 +1286,11 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, if(rcode == LDNS_RCODE_SERVFAIL) { if(!inplace_cb_reply_servfail_call(m->s.env, &m->s.qinfo, &m->s, rep, rcode, &r->edns, &r->query_reply, m->s.region, &r->start_time)) - r->edns.opt_list = NULL; + r->edns.opt_list_modules_out = NULL; } else { if(!inplace_cb_reply_call(m->s.env, &m->s.qinfo, &m->s, rep, rcode, &r->edns, &r->query_reply, m->s.region, &r->start_time)) - r->edns.opt_list = NULL; + r->edns.opt_list_modules_out = NULL; } error_encode(r_buffer, rcode, &m->s.qinfo, r->qid, r->qflags, &r->edns); @@ -1317,7 +1317,7 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, { if(!inplace_cb_reply_servfail_call(m->s.env, &m->s.qinfo, &m->s, rep, LDNS_RCODE_SERVFAIL, &r->edns, &r->query_reply, m->s.region, &r->start_time)) - r->edns.opt_list = NULL; + r->edns.opt_list_modules_out = NULL; error_encode(r_buffer, LDNS_RCODE_SERVFAIL, &m->s.qinfo, r->qid, r->qflags, &r->edns); } diff --git a/util/data/msgreply.c b/util/data/msgreply.c index 16441a79d..67a47a7b3 100644 --- a/util/data/msgreply.c +++ b/util/data/msgreply.c @@ -1097,7 +1097,7 @@ static int inplace_cb_reply_call_generic( (void)(*(inplace_cb_reply_func_type*)cb->cb)(qinfo, qstate, rep, rcode, edns, &opt_list_out, repinfo, region, start_time, cb->id, cb->cb_arg); } - edns->opt_list = opt_list_out; + edns->opt_list_modules_out = opt_list_out; return 1; } From 3925297d07ee17ba1aeb76020c00488161fd2559 Mon Sep 17 00:00:00 2001 From: Tom Carpay Date: Mon, 1 Nov 2021 10:44:55 +0000 Subject: [PATCH 401/553] Remove apply_edns_options from worker and mesh... to be returned in message encoding later... --- daemon/worker.c | 12 ++---------- services/mesh.c | 7 ------- 2 files changed, 2 insertions(+), 17 deletions(-) diff --git a/daemon/worker.c b/daemon/worker.c index 0d483de73..7965a1881 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -449,7 +449,6 @@ answer_norec_from_cache(struct worker* worker, struct query_info* qinfo, * Then check if it needs validation, if so, this routine fails, * so that iterator can prime and validator can verify rrsets. */ - struct edns_data edns_bak; uint16_t udpsize = edns->udp_size; int secure = 0; time_t timenow = *worker->env.now; @@ -508,7 +507,6 @@ answer_norec_from_cache(struct worker* worker, struct query_info* qinfo, } } /* return this delegation from the cache */ - edns_bak = *edns; edns->edns_version = EDNS_ADVERTISED_VERSION; edns->udp_size = EDNS_ADVERTISED_SIZE; edns->ext_rcode = 0; @@ -518,9 +516,7 @@ answer_norec_from_cache(struct worker* worker, struct query_info* qinfo, worker->env.now_tv)) return 0; msg->rep->flags |= BIT_QR|BIT_RA; - if(!apply_edns_options(edns, &edns_bak, worker->env.cfg, - repinfo->c, worker->scratchpad) || - !reply_info_answer_encode(&msg->qinfo, msg->rep, id, flags, + if(!reply_info_answer_encode(&msg->qinfo, msg->rep, id, flags, repinfo->c->buffer, 0, 1, worker->scratchpad, udpsize, edns, (int)(edns->bits & EDNS_DO), secure)) { if(!inplace_cb_reply_servfail_call(&worker->env, qinfo, NULL, NULL, @@ -604,7 +600,6 @@ answer_from_cache(struct worker* worker, struct query_info* qinfo, struct reply_info* rep, uint16_t id, uint16_t flags, struct comm_reply* repinfo, struct edns_data* edns) { - struct edns_data edns_bak; time_t timenow = *worker->env.now; uint16_t udpsize = edns->udp_size; struct reply_info* encode_rep = rep; @@ -685,7 +680,6 @@ answer_from_cache(struct worker* worker, struct query_info* qinfo, } } else *is_secure_answer = 0; - edns_bak = *edns; edns->edns_version = EDNS_ADVERTISED_VERSION; edns->udp_size = EDNS_ADVERTISED_SIZE; edns->ext_rcode = 0; @@ -722,9 +716,7 @@ answer_from_cache(struct worker* worker, struct query_info* qinfo, if(!*partial_repp) goto bail_out; } - } else if(!apply_edns_options(edns, &edns_bak, worker->env.cfg, - repinfo->c, worker->scratchpad) || - !reply_info_answer_encode(qinfo, encode_rep, id, flags, + } else if(!reply_info_answer_encode(qinfo, encode_rep, id, flags, repinfo->c->buffer, timenow, 1, worker->scratchpad, udpsize, edns, (int)(edns->bits & EDNS_DO), *is_secure_answer)) { if(!inplace_cb_reply_servfail_call(&worker->env, qinfo, NULL, NULL, diff --git a/services/mesh.c b/services/mesh.c index be532610f..df99f891c 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -1217,9 +1217,6 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, struct timeval end_time; struct timeval duration; int secure; - /* Copy the client's EDNS for later restore, to make sure the edns - * compare is with the correct edns options. */ - struct edns_data edns_bak = r->edns; /* briefly set the replylist to null in case the * meshsendreply calls tcpreqinfo sendreply that * comm_point_drops because of size, and then the @@ -1307,9 +1304,6 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, m->s.qinfo.local_alias = r->local_alias; if(!inplace_cb_reply_call(m->s.env, &m->s.qinfo, &m->s, rep, LDNS_RCODE_NOERROR, &r->edns, &r->query_reply, m->s.region, &r->start_time) || - !apply_edns_options(&r->edns, &edns_bak, - m->s.env->cfg, r->query_reply.c, - m->s.region) || !reply_info_answer_encode(&m->s.qinfo, rep, r->qid, r->qflags, r_buffer, 0, 1, m->s.env->scratch, udp_size, &r->edns, (int)(r->edns.bits & EDNS_DO), @@ -1321,7 +1315,6 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, error_encode(r_buffer, LDNS_RCODE_SERVFAIL, &m->s.qinfo, r->qid, r->qflags, &r->edns); } - r->edns = edns_bak; m->reply_list = NULL; comm_point_send_reply(&r->query_reply); m->reply_list = rlist; From 89d747653902798af8703e0723ebf6d44aa53e7d Mon Sep 17 00:00:00 2001 From: Tom Carpay Date: Mon, 1 Nov 2021 12:48:40 +0000 Subject: [PATCH 402/553] split edns_data.opt_list in opt_list_in and opt_list_out opt_list_in for parsed (incoming) edns options, and opt_list_out for outgoing (to be encoded) edns options --- daemon/worker.c | 14 +++++++----- iterator/iterator.c | 4 ++-- libunbound/libworker.c | 3 ++- services/authzone.c | 9 +++++--- services/mesh.c | 45 ++++++++++++++++++++++++++------------ services/outside_network.c | 8 ++++--- testcode/fake_event.c | 4 +++- util/data/msgencode.c | 16 ++++++++++---- util/data/msgparse.c | 10 +++++---- util/data/msgparse.h | 8 +++++-- util/data/msgreply.c | 28 ------------------------ util/data/msgreply.h | 12 ---------- util/edns.c | 12 +++++----- validator/autotrust.c | 3 ++- 14 files changed, 90 insertions(+), 86 deletions(-) diff --git a/daemon/worker.c b/daemon/worker.c index 7965a1881..abfb84fbe 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -1003,7 +1003,8 @@ answer_notify(struct worker* w, struct query_info* qinfo, edns->udp_size = EDNS_ADVERTISED_SIZE; edns->ext_rcode = 0; edns->bits &= EDNS_DO; - edns->opt_list = NULL; + edns->opt_list_in = NULL; + edns->opt_list_out = NULL; edns->opt_list_modules_out = NULL; error_encode(pkt, rcode, qinfo, *(uint16_t*)(void *)sldns_buffer_begin(pkt), @@ -1262,7 +1263,8 @@ worker_handle_request(struct comm_point* c, void* arg, int error, edns.edns_version = EDNS_ADVERTISED_VERSION; edns.udp_size = EDNS_ADVERTISED_SIZE; edns.bits &= EDNS_DO; - edns.opt_list = NULL; + edns.opt_list_in = NULL; + edns.opt_list_out = NULL; edns.opt_list_modules_out = NULL; edns.padding_block_size = 0; verbose(VERB_ALGO, "query with bad edns version."); @@ -1284,13 +1286,15 @@ worker_handle_request(struct comm_point* c, void* arg, int error, edns.udp_size = NORMAL_UDP_SIZE; } if(c->type != comm_udp) { - edns_opt = edns_opt_list_find(edns.opt_list, LDNS_EDNS_KEEPALIVE); + /* @TODO reuse what we found at parse time */ + edns_opt = edns_opt_list_find(edns.opt_list_in, LDNS_EDNS_KEEPALIVE); if(edns_opt && edns_opt->opt_len > 0) { edns.ext_rcode = 0; edns.edns_version = EDNS_ADVERTISED_VERSION; edns.udp_size = EDNS_ADVERTISED_SIZE; edns.bits &= EDNS_DO; - edns.opt_list = NULL; + edns.opt_list_in = NULL; + edns.opt_list_out = NULL; edns.opt_list_modules_out = NULL; verbose(VERB_ALGO, "query with bad edns keepalive."); log_addr(VERB_CLIENT,"from",&repinfo->addr, repinfo->addrlen); @@ -1455,7 +1459,7 @@ lookup_cache: * this is a two-pass operation, and lookup_qinfo is different for * each pass. We should still pass the original qinfo to * answer_from_cache(), however, since it's used to build the reply. */ - if(!edns_bypass_cache_stage(edns.opt_list, &worker->env)) { + if(!edns_bypass_cache_stage(edns.opt_list_in, &worker->env)) { is_expired_answer = 0; is_secure_answer = 0; h = query_info_hash(lookup_qinfo, sldns_buffer_read_u16_at(c->buffer, 2)); diff --git a/iterator/iterator.c b/iterator/iterator.c index 45e9f7bf4..64a0602d5 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -3859,8 +3859,8 @@ process_response(struct module_qstate* qstate, struct iter_qstate* iq, } /* Copy the edns options we may got from the back end */ - if(edns.opt_list) { - qstate->edns_opts_back_in = edns_opt_copy_region(edns.opt_list, + if(edns.opt_list_in) { + qstate->edns_opts_back_in = edns_opt_copy_region(edns.opt_list_in, qstate->region); if(!qstate->edns_opts_back_in) { log_err("out of memory on incoming message"); diff --git a/libunbound/libworker.c b/libunbound/libworker.c index c4ed660f3..b43bd9604 100644 --- a/libunbound/libworker.c +++ b/libunbound/libworker.c @@ -600,7 +600,8 @@ setup_qinfo_edns(struct libworker* w, struct ctx_query* q, edns->ext_rcode = 0; edns->edns_version = 0; edns->bits = EDNS_DO; - edns->opt_list = NULL; + edns->opt_list_in = NULL; + edns->opt_list_out = NULL; edns->opt_list_modules_out = NULL; edns->padding_block_size = 0; if(sldns_buffer_capacity(w->back->udp_buff) < 65535) diff --git a/services/authzone.c b/services/authzone.c index 58056a13b..d59573881 100644 --- a/services/authzone.c +++ b/services/authzone.c @@ -5358,7 +5358,8 @@ xfr_transfer_lookup_host(struct auth_xfer* xfr, struct module_env* env) edns.ext_rcode = 0; edns.edns_version = 0; edns.bits = EDNS_DO; - edns.opt_list = NULL; + edns.opt_list_in = NULL; + edns.opt_list_out = NULL; edns.opt_list_modules_out = NULL; edns.padding_block_size = 0; if(sldns_buffer_capacity(buf) < 65535) @@ -6548,7 +6549,8 @@ xfr_probe_lookup_host(struct auth_xfer* xfr, struct module_env* env) edns.ext_rcode = 0; edns.edns_version = 0; edns.bits = EDNS_DO; - edns.opt_list = NULL; + edns.opt_list_in = NULL; + edns.opt_list_out = NULL; edns.opt_list_modules_out = NULL; edns.padding_block_size = 0; if(sldns_buffer_capacity(buf) < 65535) @@ -8324,7 +8326,8 @@ zonemd_lookup_dnskey(struct auth_zone* z, struct module_env* env) edns.ext_rcode = 0; edns.edns_version = 0; edns.bits = EDNS_DO; - edns.opt_list = NULL; + edns.opt_list_in = NULL; + edns.opt_list_out = NULL; edns.opt_list_modules_out = NULL; if(sldns_buffer_capacity(buf) < 65535) edns.udp_size = (uint16_t)sldns_buffer_capacity(buf); diff --git a/services/mesh.c b/services/mesh.c index df99f891c..0bfa152ee 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -461,7 +461,7 @@ void mesh_new_client(struct mesh_area* mesh, struct query_info* qinfo, struct edns_data* edns, struct comm_reply* rep, uint16_t qid) { struct mesh_state* s = NULL; - int unique = unique_mesh_state(edns->opt_list, mesh->env); + int unique = unique_mesh_state(edns->opt_list_in, mesh->env); int was_detached = 0; int was_noreply = 0; int added = 0; @@ -514,8 +514,8 @@ void mesh_new_client(struct mesh_area* mesh, struct query_info* qinfo, if(unique) mesh_state_make_unique(s); /* copy the edns options we got from the front */ - if(edns->opt_list) { - s->s.edns_opts_front_in = edns_opt_copy_region(edns->opt_list, + if(edns->opt_list_in) { + s->s.edns_opts_front_in = edns_opt_copy_region(edns->opt_list_in, s->s.region); if(!s->s.edns_opts_front_in) { log_err("mesh_state_create: out of memory; SERVFAIL"); @@ -609,7 +609,7 @@ mesh_new_callback(struct mesh_area* mesh, struct query_info* qinfo, uint16_t qid, mesh_cb_func_type cb, void* cb_arg) { struct mesh_state* s = NULL; - int unique = unique_mesh_state(edns->opt_list, mesh->env); + int unique = unique_mesh_state(edns->opt_list_in, mesh->env); int timeout = mesh->env->cfg->serve_expired? mesh->env->cfg->serve_expired_client_timeout:0; int was_detached = 0; @@ -632,8 +632,8 @@ mesh_new_callback(struct mesh_area* mesh, struct query_info* qinfo, } if(unique) mesh_state_make_unique(s); - if(edns->opt_list) { - s->s.edns_opts_front_in = edns_opt_copy_region(edns->opt_list, + if(edns->opt_list_in) { + s->s.edns_opts_front_in = edns_opt_copy_region(edns->opt_list_in, s->s.region); if(!s->s.edns_opts_front_in) { return 0; @@ -1266,8 +1266,9 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, prev->edns.edns_present == r->edns.edns_present && prev->edns.bits == r->edns.bits && prev->edns.udp_size == r->edns.udp_size && - edns_opt_list_compare(prev->edns.opt_list, r->edns.opt_list) - == 0) { + edns_opt_list_compare(prev->edns.opt_list_out, r->edns.opt_list_out) == 0 && + edns_opt_list_compare(prev->edns.opt_list_modules_out, r->edns.opt_list_modules_out) == 0 + ) { /* if the previous reply is identical to this one, fix ID */ if(prev_buffer != r_buffer) sldns_buffer_copy(r_buffer, prev_buffer); @@ -1502,10 +1503,18 @@ int mesh_state_add_cb(struct mesh_state* s, struct edns_data* edns, r->cb = cb; r->cb_arg = cb_arg; r->edns = *edns; - if(edns->opt_list) { - r->edns.opt_list = edns_opt_copy_region(edns->opt_list, + if(edns->opt_list_in || edns->opt_list_out || edns->opt_list_modules_out) { + r->edns.opt_list_in = edns_opt_copy_region(edns->opt_list_in, s->s.region); - if(!r->edns.opt_list) + if(!r->edns.opt_list_in) + return 0; + r->edns.opt_list_out = edns_opt_copy_region(edns->opt_list_out, + s->s.region); + if(!r->edns.opt_list_out) + return 0; + r->edns.opt_list_modules_out = edns_opt_copy_region(edns->opt_list_modules_out, + s->s.region); + if(!r->edns.opt_list_modules_out) return 0; } r->qid = qid; @@ -1526,10 +1535,18 @@ int mesh_state_add_reply(struct mesh_state* s, struct edns_data* edns, return 0; r->query_reply = *rep; r->edns = *edns; - if(edns->opt_list) { - r->edns.opt_list = edns_opt_copy_region(edns->opt_list, + if(edns->opt_list_in || edns->opt_list_out || edns->opt_list_modules_out) { + r->edns.opt_list_in = edns_opt_copy_region(edns->opt_list_in, s->s.region); - if(!r->edns.opt_list) + if(!r->edns.opt_list_in) + return 0; + r->edns.opt_list_out = edns_opt_copy_region(edns->opt_list_out, + s->s.region); + if(!r->edns.opt_list_out) + return 0; + r->edns.opt_list_modules_out = edns_opt_copy_region(edns->opt_list_modules_out, + s->s.region); + if(!r->edns.opt_list_modules_out) return 0; } r->qid = qid; diff --git a/services/outside_network.c b/services/outside_network.c index 666e46f98..d5443ad44 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -2709,7 +2709,9 @@ serviced_encode(struct serviced_query* sq, sldns_buffer* buff, int with_edns) edns.edns_present = 1; edns.ext_rcode = 0; edns.edns_version = EDNS_ADVERTISED_VERSION; - edns.opt_list = sq->opt_list; + edns.opt_list_in = NULL; + edns.opt_list_out = sq->opt_list; + edns.opt_list_modules_out = NULL; if(sq->status == serviced_query_UDP_EDNS_FRAG) { if(addr_is_ip6(&sq->addr, sq->addrlen)) { if(EDNS_FRAG_SIZE_IP6 < EDNS_ADVERTISED_SIZE) @@ -2732,8 +2734,8 @@ serviced_encode(struct serviced_query* sq, sldns_buffer* buff, int with_edns) 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; + padding_option.next = edns.opt_list_out; + edns.opt_list_out = &padding_option; edns.padding_block_size = sq->padding_block_size; } attach_edns_record(buff, &edns); diff --git a/testcode/fake_event.c b/testcode/fake_event.c index 5f81b9eb8..6b0fed2f4 100644 --- a/testcode/fake_event.c +++ b/testcode/fake_event.c @@ -1244,7 +1244,9 @@ struct serviced_query* outnet_serviced_query(struct outside_network* outnet, client_string_addr->string_len, client_string_addr->string, qstate->region); } - edns.opt_list = qstate->edns_opts_back_out; + edns.opt_list_in = NULL; + edns.opt_list_out = qstate->edns_opts_back_out; + edns.opt_list_modules_out = NULL; attach_edns_record(pend->buffer, &edns); } memcpy(&pend->addr, addr, addrlen); diff --git a/util/data/msgencode.c b/util/data/msgencode.c index 5f297b551..05c0d1a99 100644 --- a/util/data/msgencode.c +++ b/util/data/msgencode.c @@ -796,7 +796,10 @@ calc_edns_field_size(struct edns_data* edns) struct edns_option* opt; if(!edns || !edns->edns_present) return 0; - for(opt = edns->opt_list; opt; opt = opt->next) { + for(opt = edns->opt_list_modules_out; opt; opt = opt->next) { + rdatalen += 4 + opt->opt_len; + } + for(opt = edns->opt_list_out; opt; opt = opt->next) { rdatalen += 4 + opt->opt_len; } /* domain root '.' + type + class + ttl + rdatalen */ @@ -827,7 +830,13 @@ attach_edns_record_max_msg_sz(sldns_buffer* pkt, struct edns_data* edns, rdatapos = sldns_buffer_position(pkt); sldns_buffer_write_u16(pkt, 0); /* rdatalen */ /* write rdata */ - for(opt=edns->opt_list; opt; opt=opt->next) { + for(opt=edns->opt_list_modules_out; opt; opt=opt->next) { + 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); + } + for(opt=edns->opt_list_out; opt; opt=opt->next) { if (opt->opt_code == LDNS_EDNS_PADDING) { padding_option = opt; continue; @@ -860,8 +869,7 @@ attach_edns_record_max_msg_sz(sldns_buffer* pkt, struct edns_data* edns, sldns_buffer_skip(pkt, pad_sz); } } - if(edns->opt_list) - sldns_buffer_write_u16_at(pkt, rdatapos, + sldns_buffer_write_u16_at(pkt, rdatapos, sldns_buffer_position(pkt)-rdatapos-2); sldns_buffer_flip(pkt); } diff --git a/util/data/msgparse.c b/util/data/msgparse.c index fb50c9165..b3ff35341 100644 --- a/util/data/msgparse.c +++ b/util/data/msgparse.c @@ -952,8 +952,8 @@ parse_edns_options(uint8_t* rdata_ptr, size_t rdata_len, rdata_len -= 4; if(opt_len > rdata_len) break; /* option code partial */ - if(!edns_opt_append(edns, region, opt_code, opt_len, - rdata_ptr)) { + if(!edns_opt_list_append(&edns->opt_list_in, opt_code, opt_len, + rdata_ptr, region)) { log_err("out of memory"); return 0; } @@ -1019,7 +1019,8 @@ parse_extract_edns(struct msg_parse* msg, struct edns_data* edns, edns->edns_version = found->rr_last->ttl_data[1]; edns->bits = sldns_read_uint16(&found->rr_last->ttl_data[2]); edns->udp_size = ntohs(found->rrset_class); - edns->opt_list = NULL; + edns->opt_list_in = NULL; + edns->opt_list_out = NULL; edns->opt_list_modules_out = NULL; edns->padding_block_size = 0; @@ -1094,7 +1095,8 @@ parse_edns_from_pkt(sldns_buffer* pkt, struct edns_data* edns, edns->ext_rcode = sldns_buffer_read_u8(pkt); /* ttl used for bits */ edns->edns_version = sldns_buffer_read_u8(pkt); edns->bits = sldns_buffer_read_u16(pkt); - edns->opt_list = NULL; + edns->opt_list_in = NULL; + edns->opt_list_out = NULL; edns->opt_list_modules_out = NULL; edns->padding_block_size = 0; diff --git a/util/data/msgparse.h b/util/data/msgparse.h index 434a5b0b8..4bb82cc3c 100644 --- a/util/data/msgparse.h +++ b/util/data/msgparse.h @@ -225,8 +225,12 @@ struct edns_data { uint16_t bits; /** UDP reassembly size. */ uint16_t udp_size; - /** rdata element list, or NULL if none */ - struct edns_option* opt_list; + /** rdata element list of options of an incoming packet created at + * parse time, or NULL if none */ + struct edns_option* opt_list_in; + /** rdata element list of options to encode for outgoing packets, + * or NULL if none */ + struct edns_option* opt_list_out; /** rdata element list of outgoing edns options from modules * or NULL if none */ struct edns_option* opt_list_modules_out; diff --git a/util/data/msgreply.c b/util/data/msgreply.c index 67a47a7b3..1d5a1f214 100644 --- a/util/data/msgreply.c +++ b/util/data/msgreply.c @@ -989,34 +989,6 @@ parse_reply_in_temp_region(sldns_buffer* pkt, struct regional* region, return rep; } -int edns_opt_append(struct edns_data* edns, struct regional* region, - uint16_t code, size_t len, uint8_t* data) -{ - struct edns_option** prevp; - struct edns_option* opt; - - /* allocate new element */ - opt = (struct edns_option*)regional_alloc(region, sizeof(*opt)); - if(!opt) - return 0; - opt->next = NULL; - opt->opt_code = code; - opt->opt_len = len; - opt->opt_data = NULL; - if(len > 0) { - opt->opt_data = regional_alloc_init(region, data, len); - if(!opt->opt_data) - return 0; - } - - /* append at end of list */ - prevp = &edns->opt_list; - while(*prevp != NULL) - prevp = &((*prevp)->next); - *prevp = opt; - return 1; -} - int edns_opt_list_append(struct edns_option** list, uint16_t code, size_t len, uint8_t* data, struct regional* region) { diff --git a/util/data/msgreply.h b/util/data/msgreply.h index 5a30a1d77..81c763fc7 100644 --- a/util/data/msgreply.h +++ b/util/data/msgreply.h @@ -518,18 +518,6 @@ void log_reply_info(enum verbosity_value v, struct query_info *qinf, void log_query_info(enum verbosity_value v, const char* str, struct query_info* qinf); -/** - * Append edns option to edns data structure - * @param edns: the edns data structure to append the edns option to. - * @param region: region to allocate the new edns option. - * @param code: the edns option's code. - * @param len: the edns option's length. - * @param data: the edns option's data. - * @return false on failure. - */ -int edns_opt_append(struct edns_data* edns, struct regional* region, - uint16_t code, size_t len, uint8_t* data); - /** * Append edns option to edns option list * @param list: the edns option list to append the edns option to. diff --git a/util/edns.c b/util/edns.c index 84308449c..2081cd1e6 100644 --- a/util/edns.c +++ b/util/edns.c @@ -140,12 +140,12 @@ static int edns_keepalive(struct edns_data* edns_out, struct edns_data* edns_in, * sent on that connection will have a TCP Keepalive option. */ if(c->tcp_keepalive || - edns_opt_list_find(edns_in->opt_list, LDNS_EDNS_KEEPALIVE)) { + edns_opt_list_find(edns_in->opt_list_in, LDNS_EDNS_KEEPALIVE)) { int keepalive = c->tcp_timeout_msec / 100; uint8_t data[2]; data[0] = (uint8_t)((keepalive >> 8) & 0xff); data[1] = (uint8_t)(keepalive & 0xff); - if(!edns_opt_list_append(&edns_out->opt_list, LDNS_EDNS_KEEPALIVE, + if(!edns_opt_list_append(&edns_out->opt_list_out, LDNS_EDNS_KEEPALIVE, sizeof(data), data, region)) return 0; c->tcp_keepalive = 1; @@ -160,17 +160,17 @@ 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->nsid && edns_opt_list_find(edns_in->opt_list, LDNS_EDNS_NSID) - && !edns_opt_list_append(&edns_out->opt_list, + if (cfg->nsid && edns_opt_list_find(edns_in->opt_list_in, LDNS_EDNS_NSID) + && !edns_opt_list_append(&edns_out->opt_list_out, LDNS_EDNS_NSID, cfg->nsid_len, cfg->nsid, region)) 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_in, LDNS_EDNS_PADDING)) { ; /* pass */ } - else if(!edns_opt_list_append(&edns_out->opt_list, LDNS_EDNS_PADDING + else if(!edns_opt_list_append(&edns_out->opt_list_out, LDNS_EDNS_PADDING , 0, NULL, region)) return 0; else diff --git a/validator/autotrust.c b/validator/autotrust.c index 080385e93..f26bfdb44 100644 --- a/validator/autotrust.c +++ b/validator/autotrust.c @@ -2377,7 +2377,8 @@ probe_anchor(struct module_env* env, struct trust_anchor* tp) edns.ext_rcode = 0; edns.edns_version = 0; edns.bits = EDNS_DO; - edns.opt_list = NULL; + edns.opt_list_in = NULL; + edns.opt_list_out = NULL; edns.opt_list_modules_out = NULL; edns.padding_block_size = 0; if(sldns_buffer_capacity(buf) < 65535) From 5f8447830ae74cba4c602cf6fa5367eee033b5af Mon Sep 17 00:00:00 2001 From: Tom Carpay Date: Mon, 1 Nov 2021 13:48:31 +0000 Subject: [PATCH 403/553] Move option handling to parse-time --- daemon/worker.c | 3 +- services/mesh.c | 46 +++++++++++----------------- util/data/msgparse.c | 73 +++++++++++++++++++++++++++++++++++++++----- util/data/msgparse.h | 6 +++- util/edns.c | 50 ------------------------------ util/edns.h | 12 -------- 6 files changed, 90 insertions(+), 100 deletions(-) diff --git a/daemon/worker.c b/daemon/worker.c index abfb84fbe..67b2e3166 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -1242,7 +1242,8 @@ worker_handle_request(struct comm_point* c, void* arg, int error, } goto send_reply; } - if((ret=parse_edns_from_pkt(c->buffer, &edns, worker->scratchpad)) != 0) { + if((ret=parse_edns_from_pkt(c->buffer, &edns, worker->env.cfg, c, + worker->scratchpad)) != 0) { struct edns_data reply_edns; verbose(VERB_ALGO, "worker parse edns: formerror."); log_addr(VERB_CLIENT,"from",&repinfo->addr, repinfo->addrlen); diff --git a/services/mesh.c b/services/mesh.c index 0bfa152ee..e91c28485 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -1503,20 +1503,15 @@ int mesh_state_add_cb(struct mesh_state* s, struct edns_data* edns, r->cb = cb; r->cb_arg = cb_arg; r->edns = *edns; - if(edns->opt_list_in || edns->opt_list_out || edns->opt_list_modules_out) { - r->edns.opt_list_in = edns_opt_copy_region(edns->opt_list_in, - s->s.region); - if(!r->edns.opt_list_in) - return 0; - r->edns.opt_list_out = edns_opt_copy_region(edns->opt_list_out, - s->s.region); - if(!r->edns.opt_list_out) - return 0; - r->edns.opt_list_modules_out = edns_opt_copy_region(edns->opt_list_modules_out, - s->s.region); - if(!r->edns.opt_list_modules_out) - return 0; - } + if(edns->opt_list_in && !(r->edns.opt_list_in = + edns_opt_copy_region(edns->opt_list_in, s->s.region))) + return 0; + if(edns->opt_list_out && !(r->edns.opt_list_out = + edns_opt_copy_region(edns->opt_list_out, s->s.region))) + return 0; + if(edns->opt_list_modules_out && !(r->edns.opt_list_modules_out = + edns_opt_copy_region(edns->opt_list_modules_out, s->s.region))) + return 0; r->qid = qid; r->qflags = qflags; r->next = s->cb_list; @@ -1535,20 +1530,15 @@ int mesh_state_add_reply(struct mesh_state* s, struct edns_data* edns, return 0; r->query_reply = *rep; r->edns = *edns; - if(edns->opt_list_in || edns->opt_list_out || edns->opt_list_modules_out) { - r->edns.opt_list_in = edns_opt_copy_region(edns->opt_list_in, - s->s.region); - if(!r->edns.opt_list_in) - return 0; - r->edns.opt_list_out = edns_opt_copy_region(edns->opt_list_out, - s->s.region); - if(!r->edns.opt_list_out) - return 0; - r->edns.opt_list_modules_out = edns_opt_copy_region(edns->opt_list_modules_out, - s->s.region); - if(!r->edns.opt_list_modules_out) - return 0; - } + if(edns->opt_list_in && !(r->edns.opt_list_in = + edns_opt_copy_region(edns->opt_list_in, s->s.region))) + return 0; + if(edns->opt_list_out && !(r->edns.opt_list_out = + edns_opt_copy_region(edns->opt_list_out, s->s.region))) + return 0; + if(edns->opt_list_modules_out && !(r->edns.opt_list_modules_out = + edns_opt_copy_region(edns->opt_list_modules_out, s->s.region))) + return 0; r->qid = qid; r->qflags = qflags; r->start_time = *s->s.env->now_tv; diff --git a/util/data/msgparse.c b/util/data/msgparse.c index b3ff35341..1fc7f2d55 100644 --- a/util/data/msgparse.c +++ b/util/data/msgparse.c @@ -37,10 +37,12 @@ * Routines for message parsing a packet buffer to a descriptive structure. */ #include "config.h" +#include "util/config_file.h" #include "util/data/msgparse.h" #include "util/data/msgreply.h" #include "util/data/dname.h" #include "util/data/packed_rrset.h" +#include "util/netevent.h" #include "util/storage/lookup3.h" #include "util/regional.h" #include "sldns/rrdef.h" @@ -941,8 +943,12 @@ parse_packet(sldns_buffer* pkt, struct msg_parse* msg, struct regional* region) /** parse EDNS options from EDNS wireformat rdata */ static int parse_edns_options(uint8_t* rdata_ptr, size_t rdata_len, - struct edns_data* edns, struct regional* region) + struct edns_data* edns, struct config_file* cfg, struct comm_point* c, + struct regional* region) { + int keepalive; + uint8_t data[2]; /* For keepalive value */ + /* while still more options, and have code+len to read */ /* ignores partial content (i.e. rdata len 3) */ while(rdata_len >= 4) { @@ -952,10 +958,61 @@ parse_edns_options(uint8_t* rdata_ptr, size_t rdata_len, rdata_len -= 4; if(opt_len > rdata_len) break; /* option code partial */ - if(!edns_opt_list_append(&edns->opt_list_in, opt_code, opt_len, - rdata_ptr, region)) { - log_err("out of memory"); - return 0; + + /* handle parse time edns options here */ + switch(opt_code) { + case LDNS_EDNS_NSID: + if (!cfg->nsid) + break; + if(!edns_opt_list_append(&edns->opt_list_out, + LDNS_EDNS_NSID, cfg->nsid_len, + cfg->nsid, region)) { + log_err("out of memory"); + return 0; + } + break; + + case LDNS_EDNS_KEEPALIVE: + /* To respond with a Keepalive option, the client + * connection must have received one message with a TCP + * Keepalive EDNS option, and that option must have 0 + * length data. Subsequent messages sent on that + * connection will have a TCP Keepalive option. + */ + if (!cfg->do_tcp_keepalive || c->type != comm_udp || + !c->tcp_keepalive) + break; + keepalive = c->tcp_timeout_msec / 100; + data[0] = (uint8_t)((keepalive >> 8) & 0xff); + data[1] = (uint8_t)(keepalive & 0xff); + if(!edns_opt_list_append(&edns->opt_list_out, + LDNS_EDNS_KEEPALIVE, + sizeof(data), data, region)) { + log_err("out of memory"); + return 0; + } + c->tcp_keepalive = 1; + break; + + case LDNS_EDNS_PADDING: + if(!cfg->pad_responses || c->type != comm_tcp ||!c->ssl) + break; + if(!edns_opt_list_append(&edns->opt_list_out, + LDNS_EDNS_PADDING, + 0, NULL, region)) { + log_err("out of memory"); + return 0; + } + edns->padding_block_size = cfg->pad_responses_block_size; + break; + + default: + if(!edns_opt_list_append(&edns->opt_list_in, + opt_code, opt_len, rdata_ptr, region)) { + log_err("out of memory"); + return 0; + } + break; } rdata_ptr += opt_len; rdata_len -= opt_len; @@ -1027,7 +1084,7 @@ parse_extract_edns(struct msg_parse* msg, struct edns_data* edns, /* take the options */ rdata_len = found->rr_first->size-2; rdata_ptr = found->rr_first->ttl_data+6; - if(!parse_edns_options(rdata_ptr, rdata_len, edns, region)) + if(!parse_edns_options(rdata_ptr, rdata_len, edns, NULL, NULL, region)) return 0; /* ignore rrsigs */ @@ -1063,7 +1120,7 @@ skip_pkt_rrs(sldns_buffer* pkt, int num) int parse_edns_from_pkt(sldns_buffer* pkt, struct edns_data* edns, - struct regional* region) + struct config_file* cfg, struct comm_point* c, struct regional* region) { size_t rdata_len; uint8_t* rdata_ptr; @@ -1105,7 +1162,7 @@ parse_edns_from_pkt(sldns_buffer* pkt, struct edns_data* edns, if(sldns_buffer_remaining(pkt) < rdata_len) return LDNS_RCODE_FORMERR; rdata_ptr = sldns_buffer_current(pkt); - if(!parse_edns_options(rdata_ptr, rdata_len, edns, region)) + if(!parse_edns_options(rdata_ptr, rdata_len, edns, cfg, c, region)) return LDNS_RCODE_SERVFAIL; /* ignore rrsigs */ diff --git a/util/data/msgparse.h b/util/data/msgparse.h index 4bb82cc3c..518161760 100644 --- a/util/data/msgparse.h +++ b/util/data/msgparse.h @@ -70,6 +70,8 @@ struct rrset_parse; struct rr_parse; struct regional; struct edns_option; +struct config_file; +struct comm_point; /** number of buckets in parse rrset hash table. Must be power of 2. */ #define PARSE_TABLE_SIZE 32 @@ -297,12 +299,14 @@ int parse_extract_edns(struct msg_parse* msg, struct edns_data* edns, * section. At end, right after EDNS data or no movement if failed. * @param edns: the edns data allocated by the caller. Does not have to be * initialised. + * @param cfg: the configuration (with nsid value etc.) + * @param c: commpoint to determine transport (if needed) * @param region: region to alloc results in (edns option contents) * @return: 0 on success, or an RCODE on error. * RCODE formerr if OPT is badly formatted and so on. */ int parse_edns_from_pkt(struct sldns_buffer* pkt, struct edns_data* edns, - struct regional* region); + struct config_file* cfg, struct comm_point* c, struct regional* region); /** * Calculate hash value for rrset in packet. diff --git a/util/edns.c b/util/edns.c index 2081cd1e6..f55dcb97e 100644 --- a/util/edns.c +++ b/util/edns.c @@ -128,53 +128,3 @@ edns_string_addr_lookup(rbtree_type* tree, struct sockaddr_storage* addr, return (struct edns_string_addr*)addr_tree_lookup(tree, addr, addrlen); } -static int edns_keepalive(struct edns_data* edns_out, struct edns_data* edns_in, - struct comm_point* c, struct regional* region) -{ - if(c->type == comm_udp) - return 1; - - /* To respond with a Keepalive option, the client connection - * must have received one message with a TCP Keepalive EDNS option, - * and that option must have 0 length data. Subsequent messages - * sent on that connection will have a TCP Keepalive option. - */ - if(c->tcp_keepalive || - edns_opt_list_find(edns_in->opt_list_in, LDNS_EDNS_KEEPALIVE)) { - int keepalive = c->tcp_timeout_msec / 100; - uint8_t data[2]; - data[0] = (uint8_t)((keepalive >> 8) & 0xff); - data[1] = (uint8_t)(keepalive & 0xff); - if(!edns_opt_list_append(&edns_out->opt_list_out, LDNS_EDNS_KEEPALIVE, - sizeof(data), data, region)) - return 0; - c->tcp_keepalive = 1; - } - return 1; -} - -int apply_edns_options(struct edns_data* edns_out, struct edns_data* edns_in, - struct config_file* cfg, struct comm_point* c, struct regional* region) -{ - if(cfg->do_tcp_keepalive && - !edns_keepalive(edns_out, edns_in, c, region)) - return 0; - - if (cfg->nsid && edns_opt_list_find(edns_in->opt_list_in, LDNS_EDNS_NSID) - && !edns_opt_list_append(&edns_out->opt_list_out, - LDNS_EDNS_NSID, cfg->nsid_len, cfg->nsid, region)) - return 0; - - if(!cfg->pad_responses || c->type != comm_tcp || !c->ssl - || !edns_opt_list_find(edns_in->opt_list_in, LDNS_EDNS_PADDING)) { - ; /* pass */ - } - - else if(!edns_opt_list_append(&edns_out->opt_list_out, LDNS_EDNS_PADDING - , 0, NULL, region)) - return 0; - else - edns_out->padding_block_size = cfg->pad_responses_block_size; - - return 1; -} diff --git a/util/edns.h b/util/edns.h index 11742eb5b..d9ded0b84 100644 --- a/util/edns.h +++ b/util/edns.h @@ -106,16 +106,4 @@ struct edns_string_addr* edns_string_addr_lookup(rbtree_type* tree, struct sockaddr_storage* addr, socklen_t addrlen); -/** - * Apply common EDNS options. - * - * @param edns_out: initialised edns information with outbound edns. - * @param edns_in: initialised edns information with received edns. - * @param cfg: configuration. - * @param c: comm channel. - * @param region: the region to allocate the edns options in. - */ -int apply_edns_options(struct edns_data* edns_out, struct edns_data* edns_in, - struct config_file* cfg, struct comm_point* c, struct regional* region); - #endif From cb48d9e4a1a834419ce366a7b4ead167b8fb8724 Mon Sep 17 00:00:00 2001 From: Tom Carpay Date: Mon, 1 Nov 2021 15:01:07 +0000 Subject: [PATCH 404/553] Fix keepalive logic --- daemon/worker.c | 24 ---------------- util/data/msgparse.c | 66 ++++++++++++++++++++++++++++++-------------- 2 files changed, 46 insertions(+), 44 deletions(-) diff --git a/daemon/worker.c b/daemon/worker.c index 67b2e3166..6a13dbe29 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -1258,7 +1258,6 @@ worker_handle_request(struct comm_point* c, void* arg, int error, goto send_reply; } if(edns.edns_present) { - struct edns_option* edns_opt; if(edns.edns_version != 0) { edns.ext_rcode = (uint8_t)(EDNS_RCODE_BADVERS>>4); edns.edns_version = EDNS_ADVERTISED_VERSION; @@ -1286,29 +1285,6 @@ worker_handle_request(struct comm_point* c, void* arg, int error, log_addr(VERB_CLIENT,"from",&repinfo->addr, repinfo->addrlen); edns.udp_size = NORMAL_UDP_SIZE; } - if(c->type != comm_udp) { - /* @TODO reuse what we found at parse time */ - edns_opt = edns_opt_list_find(edns.opt_list_in, LDNS_EDNS_KEEPALIVE); - if(edns_opt && edns_opt->opt_len > 0) { - edns.ext_rcode = 0; - edns.edns_version = EDNS_ADVERTISED_VERSION; - edns.udp_size = EDNS_ADVERTISED_SIZE; - edns.bits &= EDNS_DO; - edns.opt_list_in = NULL; - edns.opt_list_out = NULL; - edns.opt_list_modules_out = NULL; - verbose(VERB_ALGO, "query with bad edns keepalive."); - log_addr(VERB_CLIENT,"from",&repinfo->addr, repinfo->addrlen); - error_encode(c->buffer, LDNS_RCODE_FORMERR, &qinfo, - *(uint16_t*)(void *)sldns_buffer_begin(c->buffer), - sldns_buffer_read_u16_at(c->buffer, 2), NULL); - if(sldns_buffer_capacity(c->buffer) >= - sldns_buffer_limit(c->buffer)+calc_edns_field_size(&edns)) - attach_edns_record(c->buffer, &edns); - regional_free_all(worker->scratchpad); - goto send_reply; - } - } } if(edns.udp_size > worker->daemon->cfg->max_udp_size && c->type == comm_udp) { diff --git a/util/data/msgparse.c b/util/data/msgparse.c index 1fc7f2d55..35f58c2fe 100644 --- a/util/data/msgparse.c +++ b/util/data/msgparse.c @@ -940,14 +940,36 @@ parse_packet(sldns_buffer* pkt, struct msg_parse* msg, struct regional* region) return 0; } +static int +edns_opt_list_append_keepalive(struct edns_option** list, int msec, + struct regional* region) +{ + uint8_t data[2]; /* For keepalive value */ + data[0] = (uint8_t)((msec >> 8) & 0xff); + data[1] = (uint8_t)(msec & 0xff); + return edns_opt_list_append(list, LDNS_EDNS_KEEPALIVE, sizeof(data), + data, region); +} + /** parse EDNS options from EDNS wireformat rdata */ static int parse_edns_options(uint8_t* rdata_ptr, size_t rdata_len, struct edns_data* edns, struct config_file* cfg, struct comm_point* c, struct regional* region) { - int keepalive; - uint8_t data[2]; /* For keepalive value */ + /* To respond with a Keepalive option, the client connection must have + * received one message with a TCP Keepalive EDNS option, and that + * option must have 0 length data. Subsequent messages sent on that + * connection will have a TCP Keepalive option. + */ + if (cfg && cfg->do_tcp_keepalive && c && c->type != comm_udp && c->tcp_keepalive) { + if(!edns_opt_list_append_keepalive(&edns->opt_list_out, + c->tcp_timeout_msec / 100, region)) { + log_err("out of memory"); + return LDNS_RCODE_SERVFAIL; + } + c->tcp_keepalive = 1; + } /* while still more options, and have code+len to read */ /* ignores partial content (i.e. rdata len 3) */ @@ -962,13 +984,13 @@ parse_edns_options(uint8_t* rdata_ptr, size_t rdata_len, /* handle parse time edns options here */ switch(opt_code) { case LDNS_EDNS_NSID: - if (!cfg->nsid) + if (!cfg || !cfg->nsid) break; if(!edns_opt_list_append(&edns->opt_list_out, LDNS_EDNS_NSID, cfg->nsid_len, cfg->nsid, region)) { log_err("out of memory"); - return 0; + return LDNS_RCODE_SERVFAIL; } break; @@ -979,29 +1001,31 @@ parse_edns_options(uint8_t* rdata_ptr, size_t rdata_len, * length data. Subsequent messages sent on that * connection will have a TCP Keepalive option. */ - if (!cfg->do_tcp_keepalive || c->type != comm_udp || - !c->tcp_keepalive) + if (!cfg || !cfg->do_tcp_keepalive || !c || + c->type == comm_udp || c->tcp_keepalive) break; - keepalive = c->tcp_timeout_msec / 100; - data[0] = (uint8_t)((keepalive >> 8) & 0xff); - data[1] = (uint8_t)(keepalive & 0xff); - if(!edns_opt_list_append(&edns->opt_list_out, - LDNS_EDNS_KEEPALIVE, - sizeof(data), data, region)) { + if(opt_len) { + verbose(VERB_ALGO, "query with bad edns keepalive."); + return LDNS_RCODE_FORMERR; + } + if(!edns_opt_list_append_keepalive(&edns->opt_list_out, + c->tcp_timeout_msec / 100, + region)) { log_err("out of memory"); - return 0; + return LDNS_RCODE_SERVFAIL; } c->tcp_keepalive = 1; break; case LDNS_EDNS_PADDING: - if(!cfg->pad_responses || c->type != comm_tcp ||!c->ssl) + if(!cfg || !cfg->pad_responses || + !c || c->type != comm_tcp ||!c->ssl) break; if(!edns_opt_list_append(&edns->opt_list_out, LDNS_EDNS_PADDING, 0, NULL, region)) { log_err("out of memory"); - return 0; + return LDNS_RCODE_SERVFAIL; } edns->padding_block_size = cfg->pad_responses_block_size; break; @@ -1010,14 +1034,14 @@ parse_edns_options(uint8_t* rdata_ptr, size_t rdata_len, if(!edns_opt_list_append(&edns->opt_list_in, opt_code, opt_len, rdata_ptr, region)) { log_err("out of memory"); - return 0; + return LDNS_RCODE_SERVFAIL; } break; } rdata_ptr += opt_len; rdata_len -= opt_len; } - return 1; + return 0; } int @@ -1084,7 +1108,7 @@ parse_extract_edns(struct msg_parse* msg, struct edns_data* edns, /* take the options */ rdata_len = found->rr_first->size-2; rdata_ptr = found->rr_first->ttl_data+6; - if(!parse_edns_options(rdata_ptr, rdata_len, edns, NULL, NULL, region)) + if(parse_edns_options(rdata_ptr, rdata_len, edns, NULL, NULL, region)) return 0; /* ignore rrsigs */ @@ -1122,6 +1146,7 @@ int parse_edns_from_pkt(sldns_buffer* pkt, struct edns_data* edns, struct config_file* cfg, struct comm_point* c, struct regional* region) { + int rcode; size_t rdata_len; uint8_t* rdata_ptr; log_assert(LDNS_QDCOUNT(sldns_buffer_begin(pkt)) == 1); @@ -1162,8 +1187,9 @@ parse_edns_from_pkt(sldns_buffer* pkt, struct edns_data* edns, if(sldns_buffer_remaining(pkt) < rdata_len) return LDNS_RCODE_FORMERR; rdata_ptr = sldns_buffer_current(pkt); - if(!parse_edns_options(rdata_ptr, rdata_len, edns, cfg, c, region)) - return LDNS_RCODE_SERVFAIL; + rcode = parse_edns_options(rdata_ptr, rdata_len, edns, cfg, c, region); + if(rcode) + return rcode; /* ignore rrsigs */ From 53a16778284b4164dc5f5118137e03fa5f7b9dff Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Mon, 1 Nov 2021 21:06:07 +0100 Subject: [PATCH 405/553] Reset keepalive per new tcp session --- util/netevent.c | 1 + 1 file changed, 1 insertion(+) diff --git a/util/netevent.c b/util/netevent.c index 19ac2c837..99dec238a 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -818,6 +818,7 @@ setup_tcp_handler(struct comm_point* c, int fd, int cur, int max) #endif c->tcp_is_reading = 1; c->tcp_byte_count = 0; + c->tcp_keepalive = 0; /* if more than half the tcp handlers are in use, use a shorter * timeout for this TCP connection, we need to make space for * other connections to be able to get attention */ From 1a94a68fc228c1d3a5e5268267b900ae95612e31 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 2 Nov 2021 16:45:02 +0100 Subject: [PATCH 406/553] - Fix #552: Unbound assumes index.html exists on RPZ host. --- doc/Changelog | 3 +++ services/authzone.c | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index fe4b81f15..565a3e4df 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +2 November 2021: Wouter + - Fix #552: Unbound assumes index.html exists on RPZ host. + 11 October 2021: Wouter - Fix chaos replies to have truncation for short message lengths, or long reply strings. diff --git a/services/authzone.c b/services/authzone.c index 44dda2a71..696fcbd85 100644 --- a/services/authzone.c +++ b/services/authzone.c @@ -7160,7 +7160,7 @@ parse_url(char* url, char** host, char** file, int* port, int* ssl) while(p && *p == '/') p++; if(!p || p[0] == 0) - *file = strdup("index.html"); + *file = strdup("/"); else *file = strdup(p); if(!*file) { log_err("malloc failure"); From 8eb50101046c6861f71dfdbe4d4bdaa9168c9650 Mon Sep 17 00:00:00 2001 From: Maryse47 <41080948+Maryse47@users.noreply.github.com> Date: Wed, 3 Nov 2021 13:05:11 +0000 Subject: [PATCH 407/553] Disable ProtectKernelTunables again This option was removed in https://github.com/NLnetLabs/unbound/commit/ff8fd0be5c529e7a1b84e8c74426e9c531c0a8f8 but reintroduced in https://github.com/NLnetLabs/unbound/commit/c32b9e4ba95983146eac805719db720f02a64358 Disable it with commentary in hope to prevent slipping it in again. --- contrib/unbound.service.in | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/contrib/unbound.service.in b/contrib/unbound.service.in index 90ee708ce..ada5fac9c 100644 --- a/contrib/unbound.service.in +++ b/contrib/unbound.service.in @@ -64,7 +64,8 @@ ProtectClock=true ProtectControlGroups=true ProtectKernelLogs=true ProtectKernelModules=true -ProtectKernelTunables=true +# This breaks using socket options like 'so-rcvbuf'. Explicitly disable for visibility. +ProtectKernelTunables=false ProtectProc=invisible ProtectSystem=strict RuntimeDirectory=unbound From e7fbd2706079f4f8bd316e04f5a8a3de4ab817a9 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 5 Nov 2021 10:16:27 +0100 Subject: [PATCH 408/553] - Fix that forward-zone name is documented as the full name of the zone. It is not relative but a fully qualified domain name. --- doc/Changelog | 4 ++++ doc/unbound.conf.5.in | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 565a3e4df..6c099a377 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +5 November 2021: Wouter + - Fix that forward-zone name is documented as the full name of the + zone. It is not relative but a fully qualified domain name. + 2 November 2021: Wouter - Fix #552: Unbound assumes index.html exists on RPZ host. diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 05971544b..a1a2c3eff 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -1838,7 +1838,7 @@ zone. The local zone nodefault (or \fItransparent\fR) clause makes the (reverse\-) zone bypass unbound's filtering of RFC1918 zones. .TP .B name: \fI -Name of the stub zone. +Name of the stub zone. This is the full domain name of the zone. .TP .B stub\-host: \fI Name of stub zone nameserver. Is itself resolved before it is used. @@ -1895,7 +1895,7 @@ forward all queries to that other server (unless it can answer from the cache). .TP .B name: \fI -Name of the forward zone. +Name of the forward zone. This is the full domain name of the zone. .TP .B forward\-host: \fI Name of server to forward to. Is itself resolved before it is used. From 431b749d7a4c554ec6c271b13d09960c183ba28e Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Fri, 5 Nov 2021 11:15:19 +0100 Subject: [PATCH 409/553] - Fix for #558: fix loop in comm_point->tcp_free when a comm_point is reclaimed more than once during callbacks. --- doc/Changelog | 4 ++++ util/netevent.c | 18 ++++++++++++------ 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 6c099a377..9d102e111 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +5 November 2021: George + - Fix for #558: fix loop in comm_point->tcp_free when a comm_point is + reclaimed more than once during callbacks. + 5 November 2021: Wouter - Fix that forward-zone name is documented as the full name of the zone. It is not relative but a fully qualified domain name. diff --git a/util/netevent.c b/util/netevent.c index 19ac2c837..a54f01c76 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -1054,6 +1054,7 @@ comm_point_tcp_accept_callback(int fd, short event, void* arg) /* clear leftover flags from previous use, and then set the * correct event base for the event structure for libevent */ ub_event_free(c_hdl->ev->ev); + c_hdl->ev->ev = NULL; if((c_hdl->type == comm_tcp && c_hdl->tcp_req_info) || c_hdl->type == comm_local || c_hdl->type == comm_raw) c_hdl->tcp_do_toggle_rw = 0; @@ -1110,6 +1111,7 @@ comm_point_tcp_accept_callback(int fd, short event, void* arg) /* grab the tcp handler buffers */ c->cur_tcp_count++; c->tcp_free = c_hdl->tcp_free; + c_hdl->tcp_free = NULL; if(!c->tcp_free) { /* stop accepting incoming queries for now. */ comm_point_stop_listening(c); @@ -1131,9 +1133,11 @@ reclaim_tcp_handler(struct comm_point* c) } comm_point_close(c); if(c->tcp_parent) { - c->tcp_parent->cur_tcp_count--; - c->tcp_free = c->tcp_parent->tcp_free; - c->tcp_parent->tcp_free = c; + if(c != c->tcp_parent->tcp_free) { + c->tcp_parent->cur_tcp_count--; + c->tcp_free = c->tcp_parent->tcp_free; + c->tcp_parent->tcp_free = c; + } if(!c->tcp_free) { /* re-enable listening on accept socket */ comm_point_start_listening(c->tcp_parent, -1, -1); @@ -2228,9 +2232,11 @@ reclaim_http_handler(struct comm_point* c) } comm_point_close(c); if(c->tcp_parent) { - c->tcp_parent->cur_tcp_count--; - c->tcp_free = c->tcp_parent->tcp_free; - c->tcp_parent->tcp_free = c; + if(c != c->tcp_parent->tcp_free) { + c->tcp_parent->cur_tcp_count--; + c->tcp_free = c->tcp_parent->tcp_free; + c->tcp_parent->tcp_free = c; + } if(!c->tcp_free) { /* re-enable listening on accept socket */ comm_point_start_listening(c->tcp_parent, -1, -1); From 24eded6ef96316b4c66856cc9d467353749cba46 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Fri, 5 Nov 2021 11:21:30 +0100 Subject: [PATCH 410/553] - Fix for #558: clear the UB_EV_TIMEOUT bit before adding an event. --- doc/Changelog | 1 + util/netevent.c | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 9d102e111..4d4a6a569 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,7 @@ 5 November 2021: George - Fix for #558: fix loop in comm_point->tcp_free when a comm_point is reclaimed more than once during callbacks. + - Fix for #558: clear the UB_EV_TIMEOUT bit before adding an event. 5 November 2021: Wouter - Fix that forward-zone name is documented as the full name of the diff --git a/util/netevent.c b/util/netevent.c index a54f01c76..c0567ed13 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -4173,6 +4173,10 @@ comm_point_start_listening(struct comm_point* c, int newfd, int msec) c->timeout->tv_sec = msec/1000; c->timeout->tv_usec = (msec%1000)*1000; #endif /* S_SPLINT_S */ + } else { + if(msec == 0 || !c->timeout) { + ub_event_del_bits(c->ev->ev, UB_EV_TIMEOUT); + } } if(c->type == comm_tcp || c->type == comm_http) { ub_event_del_bits(c->ev->ev, UB_EV_READ|UB_EV_WRITE); @@ -4197,6 +4201,7 @@ comm_point_start_listening(struct comm_point* c, int newfd, int msec) } if(ub_event_add(c->ev->ev, msec==0?NULL:c->timeout) != 0) { log_err("event_add failed. in cpsl."); + return; } c->event_added = 1; } @@ -4210,11 +4215,15 @@ void comm_point_listen_for_rw(struct comm_point* c, int rd, int wr) } c->event_added = 0; } + if(!c->timeout) { + ub_event_del_bits(c->ev->ev, UB_EV_TIMEOUT); + } ub_event_del_bits(c->ev->ev, UB_EV_READ|UB_EV_WRITE); if(rd) ub_event_add_bits(c->ev->ev, UB_EV_READ); if(wr) ub_event_add_bits(c->ev->ev, UB_EV_WRITE); if(ub_event_add(c->ev->ev, c->timeout) != 0) { log_err("event_add failed. in cplf."); + return; } c->event_added = 1; } From 0006c08f15ba6c7c9c09d8337960cfa24904d066 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 5 Nov 2021 12:02:50 +0100 Subject: [PATCH 411/553] - Fix analyzer review failure in rpz action override code to not crash on unlocking the local zone lock. --- doc/Changelog | 2 ++ services/rpz.c | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 4d4a6a569..eb6fec0b0 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -6,6 +6,8 @@ 5 November 2021: Wouter - Fix that forward-zone name is documented as the full name of the zone. It is not relative but a fully qualified domain name. + - Fix analyzer review failure in rpz action override code to not + crash on unlocking the local zone lock. 2 November 2021: Wouter - Fix #552: Unbound assumes index.html exists on RPZ host. diff --git a/services/rpz.c b/services/rpz.c index 434660686..6c1fb330f 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -1476,8 +1476,10 @@ rpz_resolve_client_action_and_zone(struct auth_zones* az, struct query_info* qin r->action_override, qinfo, repinfo, NULL, r->log_name); stats->rpz_action[r->action_override]++; - lock_rw_unlock(&z->lock); - z = NULL; + if(z != NULL) { + lock_rw_unlock(&z->lock); + z = NULL; + } if(node != NULL) { lock_rw_unlock(&node->lock); node = NULL; From 738c7db9abb7a03d08b07e0b7d9f317f9f6105e7 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 5 Nov 2021 12:13:38 +0100 Subject: [PATCH 412/553] - Fix to remove unused code from rpz resolve client and action function. --- doc/Changelog | 2 ++ services/rpz.c | 5 ----- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index eb6fec0b0..aaf7383f5 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -8,6 +8,8 @@ zone. It is not relative but a fully qualified domain name. - Fix analyzer review failure in rpz action override code to not crash on unlocking the local zone lock. + - Fix to remove unused code from rpz resolve client and action + function. 2 November 2021: Wouter - Fix #552: Unbound assumes index.html exists on RPZ host. diff --git a/services/rpz.c b/services/rpz.c index 6c1fb330f..1e5596405 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -1487,11 +1487,6 @@ rpz_resolve_client_action_and_zone(struct auth_zones* az, struct query_info* qin } if(z || node) { break; - } else { - if(node != NULL) { - lock_rw_unlock(&node->lock); - node = NULL; - } } /* not found in this auth_zone */ lock_rw_unlock(&a->lock); From 3fc987955e3c852ab838ce4fdabdc7152d38b668 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 5 Nov 2021 13:22:27 +0100 Subject: [PATCH 413/553] Changelog note for #565 - Merge #565: unbound.service.in: Disable ProtectKernelTunables again. --- doc/Changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/Changelog b/doc/Changelog index aaf7383f5..0b24236a6 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -10,6 +10,7 @@ crash on unlocking the local zone lock. - Fix to remove unused code from rpz resolve client and action function. + - Merge #565: unbound.service.in: Disable ProtectKernelTunables again. 2 November 2021: Wouter - Fix #552: Unbound assumes index.html exists on RPZ host. From fa73142b7949849c9262ce533ed25753b5929e5f Mon Sep 17 00:00:00 2001 From: tcarpay <8014108+TCY16@users.noreply.github.com> Date: Mon, 8 Nov 2021 11:02:54 +0100 Subject: [PATCH 414/553] Apply suggestions from code review Co-authored-by: Willem Toorop --- daemon/worker.c | 3 --- util/data/msgencode.c | 4 ++++ util/data/msgparse.c | 21 ++++++++------------- util/data/msgparse.h | 2 +- 4 files changed, 13 insertions(+), 17 deletions(-) diff --git a/daemon/worker.c b/daemon/worker.c index 6a13dbe29..b9103488f 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -1003,9 +1003,6 @@ answer_notify(struct worker* w, struct query_info* qinfo, edns->udp_size = EDNS_ADVERTISED_SIZE; edns->ext_rcode = 0; edns->bits &= EDNS_DO; - edns->opt_list_in = NULL; - edns->opt_list_out = NULL; - edns->opt_list_modules_out = NULL; error_encode(pkt, rcode, qinfo, *(uint16_t*)(void *)sldns_buffer_begin(pkt), sldns_buffer_read_u16_at(pkt, 2), edns); diff --git a/util/data/msgencode.c b/util/data/msgencode.c index 05c0d1a99..f0017089d 100644 --- a/util/data/msgencode.c +++ b/util/data/msgencode.c @@ -831,6 +831,10 @@ attach_edns_record_max_msg_sz(sldns_buffer* pkt, struct edns_data* edns, sldns_buffer_write_u16(pkt, 0); /* rdatalen */ /* write rdata */ for(opt=edns->opt_list_modules_out; 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) diff --git a/util/data/msgparse.c b/util/data/msgparse.c index 35f58c2fe..3e6a0affa 100644 --- a/util/data/msgparse.c +++ b/util/data/msgparse.c @@ -968,7 +968,6 @@ parse_edns_options(uint8_t* rdata_ptr, size_t rdata_len, log_err("out of memory"); return LDNS_RCODE_SERVFAIL; } - c->tcp_keepalive = 1; } /* while still more options, and have code+len to read */ @@ -1031,17 +1030,17 @@ parse_edns_options(uint8_t* rdata_ptr, size_t rdata_len, break; default: - if(!edns_opt_list_append(&edns->opt_list_in, - opt_code, opt_len, rdata_ptr, region)) { - log_err("out of memory"); - return LDNS_RCODE_SERVFAIL; - } break; } + if(!edns_opt_list_append(&edns->opt_list_in, + opt_code, opt_len, rdata_ptr, region)) { + log_err("out of memory"); + return LDNS_RCODE_SERVFAIL; + } rdata_ptr += opt_len; rdata_len -= opt_len; } - return 0; + return LDNS_RCODE_NOERROR; } int @@ -1109,7 +1108,7 @@ parse_extract_edns(struct msg_parse* msg, struct edns_data* edns, rdata_len = found->rr_first->size-2; rdata_ptr = found->rr_first->ttl_data+6; if(parse_edns_options(rdata_ptr, rdata_len, edns, NULL, NULL, region)) - return 0; + return LDNS_RCODE_NOERROR; /* ignore rrsigs */ @@ -1187,12 +1186,8 @@ parse_edns_from_pkt(sldns_buffer* pkt, struct edns_data* edns, if(sldns_buffer_remaining(pkt) < rdata_len) return LDNS_RCODE_FORMERR; rdata_ptr = sldns_buffer_current(pkt); - rcode = parse_edns_options(rdata_ptr, rdata_len, edns, cfg, c, region); - if(rcode) - return rcode; - /* ignore rrsigs */ - + return parse_edns_options(rdata_ptr, rdata_len, edns, cfg, c, region); return 0; } diff --git a/util/data/msgparse.h b/util/data/msgparse.h index 518161760..0c70d3b15 100644 --- a/util/data/msgparse.h +++ b/util/data/msgparse.h @@ -235,7 +235,7 @@ struct edns_data { struct edns_option* opt_list_out; /** rdata element list of outgoing edns options from modules * or NULL if none */ - struct edns_option* opt_list_modules_out; + struct edns_option* opt_list_inplace_cb_out; /** block size to pad */ uint16_t padding_block_size; }; From 8205c87a96a8ec62098d4bc7578cbeaeeab686de Mon Sep 17 00:00:00 2001 From: TCY16 Date: Mon, 8 Nov 2021 11:50:29 +0100 Subject: [PATCH 415/553] complete renaming of the modules edns list --- daemon/worker.c | 8 ++++---- libunbound/libworker.c | 2 +- services/authzone.c | 8 ++++---- services/localzone.c | 2 +- services/mesh.c | 26 +++++++++++++------------- services/outside_network.c | 2 +- testcode/fake_event.c | 2 +- util/data/msgencode.c | 4 ++-- util/data/msgparse.c | 5 ++--- util/data/msgreply.c | 2 +- validator/autotrust.c | 2 +- 11 files changed, 31 insertions(+), 32 deletions(-) diff --git a/daemon/worker.c b/daemon/worker.c index b9103488f..8880cac19 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -522,7 +522,7 @@ answer_norec_from_cache(struct worker* worker, struct query_info* qinfo, if(!inplace_cb_reply_servfail_call(&worker->env, qinfo, NULL, NULL, LDNS_RCODE_SERVFAIL, edns, repinfo, worker->scratchpad, worker->env.now_tv)) - edns->opt_list_modules_out = NULL; + edns->opt_list_inplace_cb_out = NULL; error_encode(repinfo->c->buffer, LDNS_RCODE_SERVFAIL, &msg->qinfo, id, flags, edns); } @@ -722,7 +722,7 @@ answer_from_cache(struct worker* worker, struct query_info* qinfo, if(!inplace_cb_reply_servfail_call(&worker->env, qinfo, NULL, NULL, LDNS_RCODE_SERVFAIL, edns, repinfo, worker->scratchpad, worker->env.now_tv)) - edns->opt_list_modules_out = NULL; + edns->opt_list_inplace_cb_out = NULL; error_encode(repinfo->c->buffer, LDNS_RCODE_SERVFAIL, qinfo, id, flags, edns); } @@ -788,7 +788,7 @@ chaos_replystr(sldns_buffer* pkt, char** str, int num, struct edns_data* edns, if(!inplace_cb_reply_local_call(&worker->env, NULL, NULL, NULL, LDNS_RCODE_NOERROR, edns, repinfo, worker->scratchpad, worker->env.now_tv)) - edns->opt_list_modules_out = NULL; + edns->opt_list_inplace_cb_out = NULL; sldns_buffer_clear(pkt); sldns_buffer_skip(pkt, (ssize_t)sizeof(uint16_t)); /* skip id */ sldns_buffer_write_u16(pkt, (uint16_t)(BIT_QR|BIT_RA)); @@ -1262,7 +1262,7 @@ worker_handle_request(struct comm_point* c, void* arg, int error, edns.bits &= EDNS_DO; edns.opt_list_in = NULL; edns.opt_list_out = NULL; - edns.opt_list_modules_out = NULL; + edns.opt_list_inplace_cb_out = NULL; edns.padding_block_size = 0; verbose(VERB_ALGO, "query with bad edns version."); log_addr(VERB_CLIENT,"from",&repinfo->addr, repinfo->addrlen); diff --git a/libunbound/libworker.c b/libunbound/libworker.c index b43bd9604..7f753435d 100644 --- a/libunbound/libworker.c +++ b/libunbound/libworker.c @@ -602,7 +602,7 @@ setup_qinfo_edns(struct libworker* w, struct ctx_query* q, edns->bits = EDNS_DO; edns->opt_list_in = NULL; edns->opt_list_out = NULL; - edns->opt_list_modules_out = NULL; + edns->opt_list_inplace_cb_out = NULL; edns->padding_block_size = 0; if(sldns_buffer_capacity(w->back->udp_buff) < 65535) edns->udp_size = (uint16_t)sldns_buffer_capacity( diff --git a/services/authzone.c b/services/authzone.c index d59573881..3cf87ffd0 100644 --- a/services/authzone.c +++ b/services/authzone.c @@ -3518,7 +3518,7 @@ auth_error_encode(struct query_info* qinfo, struct module_env* env, if(!inplace_cb_reply_local_call(env, qinfo, NULL, NULL, rcode, edns, repinfo, temp, env->now_tv)) - edns->opt_list_modules_out = NULL; + edns->opt_list_inplace_cb_out = NULL; error_encode(buf, rcode|BIT_AA, qinfo, *(uint16_t*)sldns_buffer_begin(buf), sldns_buffer_read_u16_at(buf, 2), edns); @@ -5360,7 +5360,7 @@ xfr_transfer_lookup_host(struct auth_xfer* xfr, struct module_env* env) edns.bits = EDNS_DO; edns.opt_list_in = NULL; edns.opt_list_out = NULL; - edns.opt_list_modules_out = NULL; + edns.opt_list_inplace_cb_out = NULL; edns.padding_block_size = 0; if(sldns_buffer_capacity(buf) < 65535) edns.udp_size = (uint16_t)sldns_buffer_capacity(buf); @@ -6551,7 +6551,7 @@ xfr_probe_lookup_host(struct auth_xfer* xfr, struct module_env* env) edns.bits = EDNS_DO; edns.opt_list_in = NULL; edns.opt_list_out = NULL; - edns.opt_list_modules_out = NULL; + edns.opt_list_inplace_cb_out = NULL; edns.padding_block_size = 0; if(sldns_buffer_capacity(buf) < 65535) edns.udp_size = (uint16_t)sldns_buffer_capacity(buf); @@ -8328,7 +8328,7 @@ zonemd_lookup_dnskey(struct auth_zone* z, struct module_env* env) edns.bits = EDNS_DO; edns.opt_list_in = NULL; edns.opt_list_out = NULL; - edns.opt_list_modules_out = NULL; + edns.opt_list_inplace_cb_out = NULL; if(sldns_buffer_capacity(buf) < 65535) edns.udp_size = (uint16_t)sldns_buffer_capacity(buf); else edns.udp_size = 65535; diff --git a/services/localzone.c b/services/localzone.c index 03d16f965..a69aef8fd 100644 --- a/services/localzone.c +++ b/services/localzone.c @@ -1299,7 +1299,7 @@ local_error_encode(struct query_info* qinfo, struct module_env* env, if(!inplace_cb_reply_local_call(env, qinfo, NULL, NULL, rcode, edns, repinfo, temp, env->now_tv)) - edns->opt_list_modules_out = NULL; + edns->opt_list_inplace_cb_out = NULL; error_encode(buf, r, qinfo, *(uint16_t*)sldns_buffer_begin(buf), sldns_buffer_read_u16_at(buf, 2), edns); } diff --git a/services/mesh.c b/services/mesh.c index e91c28485..d2a1c6856 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -505,7 +505,7 @@ void mesh_new_client(struct mesh_area* mesh, struct query_info* qinfo, log_err("mesh_state_create: out of memory; SERVFAIL"); if(!inplace_cb_reply_servfail_call(mesh->env, qinfo, NULL, NULL, LDNS_RCODE_SERVFAIL, edns, rep, mesh->env->scratch, mesh->env->now_tv)) - edns->opt_list_modules_out = NULL; + edns->opt_list_inplace_cb_out = NULL; error_encode(r_buffer, LDNS_RCODE_SERVFAIL, qinfo, qid, qflags, edns); comm_point_send_reply(rep); @@ -521,7 +521,7 @@ void mesh_new_client(struct mesh_area* mesh, struct query_info* qinfo, log_err("mesh_state_create: out of memory; SERVFAIL"); if(!inplace_cb_reply_servfail_call(mesh->env, qinfo, NULL, NULL, LDNS_RCODE_SERVFAIL, edns, rep, mesh->env->scratch, mesh->env->now_tv)) - edns->opt_list_modules_out = NULL; + edns->opt_list_inplace_cb_out = NULL; error_encode(r_buffer, LDNS_RCODE_SERVFAIL, qinfo, qid, qflags, edns); comm_point_send_reply(rep); @@ -594,7 +594,7 @@ void mesh_new_client(struct mesh_area* mesh, struct query_info* qinfo, servfail_mem: if(!inplace_cb_reply_servfail_call(mesh->env, qinfo, &s->s, NULL, LDNS_RCODE_SERVFAIL, edns, rep, mesh->env->scratch, mesh->env->now_tv)) - edns->opt_list_modules_out = NULL; + edns->opt_list_inplace_cb_out = NULL; error_encode(r_buffer, LDNS_RCODE_SERVFAIL, qinfo, qid, qflags, edns); comm_point_send_reply(rep); @@ -1145,11 +1145,11 @@ mesh_do_callback(struct mesh_state* m, int rcode, struct reply_info* rep, if(rcode == LDNS_RCODE_SERVFAIL) { if(!inplace_cb_reply_servfail_call(m->s.env, &m->s.qinfo, &m->s, rep, rcode, &r->edns, NULL, m->s.region, start_time)) - r->edns.opt_list_modules_out = NULL; + r->edns.opt_list_inplace_cb_out = NULL; } else { if(!inplace_cb_reply_call(m->s.env, &m->s.qinfo, &m->s, rep, rcode, &r->edns, NULL, m->s.region, start_time)) - r->edns.opt_list_modules_out = NULL; + r->edns.opt_list_inplace_cb_out = NULL; } fptr_ok(fptr_whitelist_mesh_cb(r->cb)); (*r->cb)(r->cb_arg, rcode, r->buf, sec_status_unchecked, NULL, @@ -1267,7 +1267,7 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, prev->edns.bits == r->edns.bits && prev->edns.udp_size == r->edns.udp_size && edns_opt_list_compare(prev->edns.opt_list_out, r->edns.opt_list_out) == 0 && - edns_opt_list_compare(prev->edns.opt_list_modules_out, r->edns.opt_list_modules_out) == 0 + edns_opt_list_compare(prev->edns.opt_list_inplace_cb_out, r->edns.opt_list_inplace_cb_out) == 0 ) { /* if the previous reply is identical to this one, fix ID */ if(prev_buffer != r_buffer) @@ -1284,11 +1284,11 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, if(rcode == LDNS_RCODE_SERVFAIL) { if(!inplace_cb_reply_servfail_call(m->s.env, &m->s.qinfo, &m->s, rep, rcode, &r->edns, &r->query_reply, m->s.region, &r->start_time)) - r->edns.opt_list_modules_out = NULL; + r->edns.opt_list_inplace_cb_out = NULL; } else { if(!inplace_cb_reply_call(m->s.env, &m->s.qinfo, &m->s, rep, rcode, &r->edns, &r->query_reply, m->s.region, &r->start_time)) - r->edns.opt_list_modules_out = NULL; + r->edns.opt_list_inplace_cb_out = NULL; } error_encode(r_buffer, rcode, &m->s.qinfo, r->qid, r->qflags, &r->edns); @@ -1312,7 +1312,7 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, { if(!inplace_cb_reply_servfail_call(m->s.env, &m->s.qinfo, &m->s, rep, LDNS_RCODE_SERVFAIL, &r->edns, &r->query_reply, m->s.region, &r->start_time)) - r->edns.opt_list_modules_out = NULL; + r->edns.opt_list_inplace_cb_out = NULL; error_encode(r_buffer, LDNS_RCODE_SERVFAIL, &m->s.qinfo, r->qid, r->qflags, &r->edns); } @@ -1509,8 +1509,8 @@ int mesh_state_add_cb(struct mesh_state* s, struct edns_data* edns, if(edns->opt_list_out && !(r->edns.opt_list_out = edns_opt_copy_region(edns->opt_list_out, s->s.region))) return 0; - if(edns->opt_list_modules_out && !(r->edns.opt_list_modules_out = - edns_opt_copy_region(edns->opt_list_modules_out, s->s.region))) + if(edns->opt_list_inplace_cb_out && !(r->edns.opt_list_inplace_cb_out = + edns_opt_copy_region(edns->opt_list_inplace_cb_out, s->s.region))) return 0; r->qid = qid; r->qflags = qflags; @@ -1536,8 +1536,8 @@ int mesh_state_add_reply(struct mesh_state* s, struct edns_data* edns, if(edns->opt_list_out && !(r->edns.opt_list_out = edns_opt_copy_region(edns->opt_list_out, s->s.region))) return 0; - if(edns->opt_list_modules_out && !(r->edns.opt_list_modules_out = - edns_opt_copy_region(edns->opt_list_modules_out, s->s.region))) + if(edns->opt_list_inplace_cb_out && !(r->edns.opt_list_inplace_cb_out = + edns_opt_copy_region(edns->opt_list_inplace_cb_out, s->s.region))) return 0; r->qid = qid; r->qflags = qflags; diff --git a/services/outside_network.c b/services/outside_network.c index d5443ad44..fdfba7897 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -2711,7 +2711,7 @@ serviced_encode(struct serviced_query* sq, sldns_buffer* buff, int with_edns) edns.edns_version = EDNS_ADVERTISED_VERSION; edns.opt_list_in = NULL; edns.opt_list_out = sq->opt_list; - edns.opt_list_modules_out = NULL; + edns.opt_list_inplace_cb_out = NULL; if(sq->status == serviced_query_UDP_EDNS_FRAG) { if(addr_is_ip6(&sq->addr, sq->addrlen)) { if(EDNS_FRAG_SIZE_IP6 < EDNS_ADVERTISED_SIZE) diff --git a/testcode/fake_event.c b/testcode/fake_event.c index 6b0fed2f4..6a8245d4a 100644 --- a/testcode/fake_event.c +++ b/testcode/fake_event.c @@ -1246,7 +1246,7 @@ struct serviced_query* outnet_serviced_query(struct outside_network* outnet, } edns.opt_list_in = NULL; edns.opt_list_out = qstate->edns_opts_back_out; - edns.opt_list_modules_out = NULL; + edns.opt_list_inplace_cb_out = NULL; attach_edns_record(pend->buffer, &edns); } memcpy(&pend->addr, addr, addrlen); diff --git a/util/data/msgencode.c b/util/data/msgencode.c index f0017089d..fe21cfb86 100644 --- a/util/data/msgencode.c +++ b/util/data/msgencode.c @@ -796,7 +796,7 @@ calc_edns_field_size(struct edns_data* edns) struct edns_option* opt; if(!edns || !edns->edns_present) return 0; - for(opt = edns->opt_list_modules_out; opt; opt = opt->next) { + for(opt = edns->opt_list_inplace_cb_out; opt; opt = opt->next) { rdatalen += 4 + opt->opt_len; } for(opt = edns->opt_list_out; opt; opt = opt->next) { @@ -830,7 +830,7 @@ attach_edns_record_max_msg_sz(sldns_buffer* pkt, struct edns_data* edns, rdatapos = sldns_buffer_position(pkt); sldns_buffer_write_u16(pkt, 0); /* rdatalen */ /* write rdata */ - for(opt=edns->opt_list_modules_out; opt; opt=opt->next) { + for(opt=edns->opt_list_inplace_cb_out; opt; opt=opt->next) { if (opt->opt_code == LDNS_EDNS_PADDING) { padding_option = opt; continue; diff --git a/util/data/msgparse.c b/util/data/msgparse.c index 3e6a0affa..7841b628b 100644 --- a/util/data/msgparse.c +++ b/util/data/msgparse.c @@ -1101,7 +1101,7 @@ parse_extract_edns(struct msg_parse* msg, struct edns_data* edns, edns->udp_size = ntohs(found->rrset_class); edns->opt_list_in = NULL; edns->opt_list_out = NULL; - edns->opt_list_modules_out = NULL; + edns->opt_list_inplace_cb_out = NULL; edns->padding_block_size = 0; /* take the options */ @@ -1145,7 +1145,6 @@ int parse_edns_from_pkt(sldns_buffer* pkt, struct edns_data* edns, struct config_file* cfg, struct comm_point* c, struct regional* region) { - int rcode; size_t rdata_len; uint8_t* rdata_ptr; log_assert(LDNS_QDCOUNT(sldns_buffer_begin(pkt)) == 1); @@ -1178,7 +1177,7 @@ parse_edns_from_pkt(sldns_buffer* pkt, struct edns_data* edns, edns->bits = sldns_buffer_read_u16(pkt); edns->opt_list_in = NULL; edns->opt_list_out = NULL; - edns->opt_list_modules_out = NULL; + edns->opt_list_inplace_cb_out = NULL; edns->padding_block_size = 0; /* take the options */ diff --git a/util/data/msgreply.c b/util/data/msgreply.c index 1d5a1f214..5fb28a9e4 100644 --- a/util/data/msgreply.c +++ b/util/data/msgreply.c @@ -1069,7 +1069,7 @@ static int inplace_cb_reply_call_generic( (void)(*(inplace_cb_reply_func_type*)cb->cb)(qinfo, qstate, rep, rcode, edns, &opt_list_out, repinfo, region, start_time, cb->id, cb->cb_arg); } - edns->opt_list_modules_out = opt_list_out; + edns->opt_list_inplace_cb_out = opt_list_out; return 1; } diff --git a/validator/autotrust.c b/validator/autotrust.c index f26bfdb44..55e82c176 100644 --- a/validator/autotrust.c +++ b/validator/autotrust.c @@ -2379,7 +2379,7 @@ probe_anchor(struct module_env* env, struct trust_anchor* tp) edns.bits = EDNS_DO; edns.opt_list_in = NULL; edns.opt_list_out = NULL; - edns.opt_list_modules_out = NULL; + edns.opt_list_inplace_cb_out = NULL; edns.padding_block_size = 0; if(sldns_buffer_capacity(buf) < 65535) edns.udp_size = (uint16_t)sldns_buffer_capacity(buf); From f5b586dbdcfee507b4c1012becdabfa027d290ae Mon Sep 17 00:00:00 2001 From: TCY16 Date: Mon, 8 Nov 2021 11:50:57 +0100 Subject: [PATCH 416/553] add potential EDE spots --- validator/validator.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/validator/validator.c b/validator/validator.c index d4d48d956..1c7039e0c 100644 --- a/validator/validator.c +++ b/validator/validator.c @@ -1643,6 +1643,9 @@ processInit(struct module_qstate* qstate, struct val_qstate* vq, /* no retries, stop bothering the authority until timeout */ vq->restart_count = ve->max_restart; vq->chase_reply->security = sec_status_bogus; + + // @TODO ADD Error Code 6 - DNSSEC Bogus + text chain of trust? + vq->state = VAL_FINISHED_STATE; return 1; } @@ -1849,6 +1852,7 @@ processValidate(struct module_qstate* qstate, struct val_qstate* vq, LDNS_RR_TYPE_DNSKEY, vq->key_entry->key_class); vq->chase_reply->security = sec_status_bogus; errinf(qstate, "while building chain of trust"); + // @TODO ADD Error Code 6 - DNSSEC Bogus + text chain of trust? if(vq->restart_count >= ve->max_restart) key_cache_insert(ve->kcache, vq->key_entry, qstate); return 1; From a0df340b1e6b641ebcf8268658c81814426fed4b Mon Sep 17 00:00:00 2001 From: tcarpay <8014108+TCY16@users.noreply.github.com> Date: Mon, 8 Nov 2021 12:28:03 +0100 Subject: [PATCH 417/553] Update util/data/msgparse.c Co-authored-by: gthess --- util/data/msgparse.c | 1 - 1 file changed, 1 deletion(-) diff --git a/util/data/msgparse.c b/util/data/msgparse.c index 7841b628b..f9e7881b8 100644 --- a/util/data/msgparse.c +++ b/util/data/msgparse.c @@ -1187,7 +1187,6 @@ parse_edns_from_pkt(sldns_buffer* pkt, struct edns_data* edns, rdata_ptr = sldns_buffer_current(pkt); /* ignore rrsigs */ return parse_edns_options(rdata_ptr, rdata_len, edns, cfg, c, region); - return 0; } void From c21d6af61726ffca6ea47c6b2a4642d20f33819c Mon Sep 17 00:00:00 2001 From: Dimitris Apostolou Date: Sat, 13 Nov 2021 16:56:15 +0200 Subject: [PATCH 418/553] Fix typos --- README-Travis.md | 2 +- aclocal.m4 | 8 ++++---- configure | 6 +++--- dnscrypt/dnscrypt.c | 4 ++-- dnscrypt/dnscrypt.h | 4 ++-- dnstap/dtstream.c | 6 +++--- doc/unbound.conf.5.in | 2 +- doc/unbound.doxygen | 4 ++-- edns-subnet/edns-subnet.h | 2 +- edns-subnet/subnetmod.c | 2 +- ipsecmod/ipsecmod.c | 2 +- ipsecmod/ipsecmod.h | 2 +- iterator/iterator.c | 2 +- libunbound/python/doc/examples/example4.rst | 2 +- libunbound/python/libunbound.i | 2 +- libunbound/unbound-event.h | 2 +- libunbound/unbound.h | 2 +- libunbound/worker.h | 4 ++-- pythonmod/doc/examples/example5.rst | 2 +- pythonmod/doc/modules/struct.rst | 6 +++--- pythonmod/doc/usecase.rst | 2 +- pythonmod/examples/edns.py | 2 +- pythonmod/interface.i | 2 +- services/authzone.c | 6 +++--- services/cache/rrset.h | 4 ++-- services/listen_dnsport.c | 8 ++++---- services/localzone.c | 4 ++-- services/localzone.h | 2 +- services/mesh.c | 4 ++-- services/outbound_list.h | 2 +- services/outside_network.c | 2 +- services/rpz.c | 4 ++-- services/rpz.h | 4 ++-- sldns/parseutil.h | 2 +- sldns/str2wire.c | 2 +- sldns/wire2str.h | 2 +- testcode/dohclient.c | 4 ++-- .../10-unbound-anchor.tdir/keys/unbound-control-setup | 2 +- testdata/auth_xfr_ixfrmismatch.rpl | 2 +- testdata/fwd.rpl | 2 +- testdata/fwd_any.rpl | 2 +- testdata/http_user_agent.tdir/http_user_agent.test | 10 +++++----- testdata/iter_primenoglue.rpl | 2 +- testdata/iter_scrub_dname_rev.rpl | 2 +- testdata/iter_scrub_dname_sec.rpl | 2 +- testdata/root_anchor.tdir/root_anchor.test | 2 +- testdata/svcb.tdir/svcb.test | 2 +- testdata/ttl_msg.rpl | 2 +- testdata/val_keyprefetch_verify.rpl | 2 +- testdata/val_nodata_failwc.rpl | 2 +- testdata/val_nsec3_optout_cache.rpl | 4 ++-- util/config_file.h | 2 +- util/module.h | 2 +- util/netevent.h | 2 +- util/ub_event.c | 2 +- validator/validator.c | 4 ++-- validator/validator.h | 2 +- 57 files changed, 87 insertions(+), 87 deletions(-) diff --git a/README-Travis.md b/README-Travis.md index 3ce22cc20..ca6445612 100644 --- a/README-Travis.md +++ b/README-Travis.md @@ -241,7 +241,7 @@ If you are working from a developer machine you probably already have the necess The fourth step builds OpenSSL and Expat. OpenSSL and Expat are built for iOS using the scripts `contrib/ios/install_openssl.sh` and `contrib/ios/install_expat.sh`. The scripts download, configure and install the latest release version of the libraries. The libraries are configured with `--prefix="$IOS_PREFIX"` so the headers are placed in `$IOS_PREFIX/include` directory, and the libraries are placed in the `$IOS_PREFIX/lib` directory. -`IOS_PREFIX` is the value `$HOME/$IOS_SDK-$IOS_CPU`. The scheme handles both iOS SDKs and cpu architectures so the pair recieves a unique installation directory. The libraries will be installed in `$HOME/iPhoneOS-armv7s`, `$HOME/iPhoneOS-arm64`, `$HOME/iPhoneSimulator-i386`, etc. For Autotools projects, the appropriate `PKG_CONFIG_PATH` is exported. +`IOS_PREFIX` is the value `$HOME/$IOS_SDK-$IOS_CPU`. The scheme handles both iOS SDKs and cpu architectures so the pair receives a unique installation directory. The libraries will be installed in `$HOME/iPhoneOS-armv7s`, `$HOME/iPhoneOS-arm64`, `$HOME/iPhoneSimulator-i386`, etc. For Autotools projects, the appropriate `PKG_CONFIG_PATH` is exported. `PKG_CONFIG_PATH` is an important variable. It is the userland equivalent to sysroot, and allows Autotools to find non-system headers and libraries for an architecture. Typical `PKG_CONFIG_PATH` are `$HOME/iPhoneOS-armv7s/lib/pkgconfig` and `$HOME/iPhoneOS-arm64/lib/pkgconfig`. diff --git a/aclocal.m4 b/aclocal.m4 index bf3c57e2f..d62b482d0 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -622,7 +622,7 @@ m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT # LT_OUTPUT # --------- # This macro allows early generation of the libtool script (before -# AC_OUTPUT is called), incase it is used in configure for compilation +# AC_OUTPUT is called), in case it is used in configure for compilation # tests. AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt} @@ -659,7 +659,7 @@ configured by $[0], generated by m4_PACKAGE_STRING. Copyright (C) 2011 Free Software Foundation, Inc. This config.lt script is free software; the Free Software Foundation -gives unlimited permision to copy, distribute and modify it." +gives unlimited permission to copy, distribute and modify it." while test 0 != $[#] do @@ -2876,7 +2876,7 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) # Add ABI-specific directories to the system library path. sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" - # Ideally, we could use ldconfig to report *all* directores which are + # Ideally, we could use ldconfig to report *all* directories which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, @@ -9132,7 +9132,7 @@ dnl Check to see whether a particular set of modules exists. Similar to dnl PKG_CHECK_MODULES(), but does not set variables or print errors. dnl dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) -dnl only at the first occurence in configure.ac, so if the first place +dnl only at the first occurrence in configure.ac, so if the first place dnl it's called might be skipped (such as if it is within an "if", you dnl have to call PKG_CHECK_EXISTS manually AC_DEFUN([PKG_CHECK_EXISTS], diff --git a/configure b/configure index ec8a25499..9131b348a 100755 --- a/configure +++ b/configure @@ -13600,7 +13600,7 @@ fi # Add ABI-specific directories to the system library path. sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" - # Ideally, we could use ldconfig to report *all* directores which are + # Ideally, we could use ldconfig to report *all* directories which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, @@ -15324,7 +15324,7 @@ if test "$ac_res" != no; then : fi -# check wether strptime also works +# check whether strptime also works # check some functions of the OS before linking libs (while still runnable). for ac_header in unistd.h @@ -18777,7 +18777,7 @@ $as_echo "#define CLIENT_SUBNET 1" >>confdefs.h ;; esac -# check wether gost also works +# check whether gost also works # Check whether --enable-gost was given. if test "${enable_gost+set}" = set; then : diff --git a/dnscrypt/dnscrypt.c b/dnscrypt/dnscrypt.c index 9b324ae69..4902447fd 100644 --- a/dnscrypt/dnscrypt.c +++ b/dnscrypt/dnscrypt.c @@ -435,7 +435,7 @@ dnscrypt_hrtime(void) /** * Add the server nonce part to once. - * The nonce is made half of client nonce and the seconf half of the server + * The nonce is made half of client nonce and the second half of the server * nonce, both of them of size crypto_box_HALF_NONCEBYTES. * \param[in] nonce: a uint8_t* of size crypto_box_NONCEBYTES */ @@ -674,7 +674,7 @@ dnsc_find_cert(struct dnsc_env* dnscenv, struct sldns_buffer* buffer) /** * Insert local-zone and local-data into configuration. * In order to be able to serve certs over TXT, we can reuse the local-zone and - * local-data config option. The zone and qname are infered from the + * local-data config option. The zone and qname are inferred from the * provider_name and the content of the TXT record from the certificate content. * returns the number of certificate TXT record that were loaded. * < 0 in case of error. diff --git a/dnscrypt/dnscrypt.h b/dnscrypt/dnscrypt.h index 666f54e62..b0da9b732 100644 --- a/dnscrypt/dnscrypt.h +++ b/dnscrypt/dnscrypt.h @@ -114,7 +114,7 @@ void dnsc_delete(struct dnsc_env *env); /** * handle a crypted dnscrypt request. - * Determine wether or not a query is coming over the dnscrypt listener and + * Determine whether or not a query is coming over the dnscrypt listener and * attempt to uncurve it or detect if it is a certificate query. * return 0 in case of failure. */ @@ -122,7 +122,7 @@ int dnsc_handle_curved_request(struct dnsc_env* dnscenv, struct comm_reply* repinfo); /** * handle an unencrypted dnscrypt request. - * Determine wether or not a query is going over the dnscrypt channel and + * Determine whether or not a query is going over the dnscrypt channel and * attempt to curve it unless it was not crypted like when it is a * certificate query. * \return 0 in case of failure. diff --git a/dnstap/dtstream.c b/dnstap/dtstream.c index f1ace3c34..14aacaef5 100644 --- a/dnstap/dtstream.c +++ b/dnstap/dtstream.c @@ -251,7 +251,7 @@ dt_msg_queue_submit(struct dt_msg_queue* mq, void* buf, size_t len) entry->buf = buf; entry->len = len; - /* aqcuire lock */ + /* acquire lock */ lock_basic_lock(&mq->lock); /* if list was empty, start timer for (eventual) wakeup */ if(mq->first == NULL) @@ -930,7 +930,7 @@ static int dtio_write_more_of_data(struct dt_io_thread* dtio) return 1; } -/** write more of the current messsage. false if incomplete, true if +/** write more of the current message. false if incomplete, true if * the message is done */ static int dtio_write_more(struct dt_io_thread* dtio) { @@ -1181,7 +1181,7 @@ static int dtio_read_accept_frame(struct dt_io_thread* dtio) goto close_connection; return 1; } else { - /* unknow content type */ + /* unknown content type */ verbose(VERB_ALGO, "dnstap: ACCEPT frame " "contains unknown content type, " "closing connection"); diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index a1a2c3eff..3ad8be23c 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -2415,7 +2415,7 @@ This option defaults to "default". .P The following .B cachedb -otions are specific to the redis backend. +options are specific to the redis backend. .TP .B redis-server-host: \fI\fR The IP (either v6 or v4) address or domain name of the Redis server. diff --git a/doc/unbound.doxygen b/doc/unbound.doxygen index 823e09253..272d6b4cb 100644 --- a/doc/unbound.doxygen +++ b/doc/unbound.doxygen @@ -279,10 +279,10 @@ TYPEDEF_HIDES_STRUCT = NO # For small to medium size projects (<1000 input files) the default value is # probably good enough. For larger projects a too small cache size can cause # doxygen to be busy swapping symbols to and from disk most of the time -# causing a significant performance penality. +# causing a significant performance penalty. # If the system has enough physical memory increasing the cache will improve the # performance by keeping more symbols in memory. Note that the value works on -# a logarithmic scale so increasing the size by one will rougly double the +# a logarithmic scale so increasing the size by one will roughly double the # memory usage. The cache size is given by this formula: # 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, # corresponding to a cache size of 2^16 = 65536 symbols diff --git a/edns-subnet/edns-subnet.h b/edns-subnet/edns-subnet.h index 4b306080a..6ab541de9 100644 --- a/edns-subnet/edns-subnet.h +++ b/edns-subnet/edns-subnet.h @@ -59,7 +59,7 @@ struct ecs_data { /** * copy the first n BITS from src to dst iff both src and dst - * are large enough, return 0 on succes + * are large enough, return 0 on success */ int copy_clear(uint8_t* dst, size_t dstlen, uint8_t* src, size_t srclen, size_t n); diff --git a/edns-subnet/subnetmod.c b/edns-subnet/subnetmod.c index ade40c66e..81f0bf3ad 100644 --- a/edns-subnet/subnetmod.c +++ b/edns-subnet/subnetmod.c @@ -497,7 +497,7 @@ eval_response(struct module_qstate *qstate, int id, struct subnet_qstate *sq) if (!s_in->subnet_validdata) { /* The authority indicated no support for edns subnet. As a * consequence the answer ended up in the regular cache. It - * is still usefull to put it in the edns subnet cache for + * is still useful to put it in the edns subnet cache for * when a client explicitly asks for subnet specific answer. */ verbose(VERB_QUERY, "subnetcache: Authority indicates no support"); if(!sq->started_no_cache_store) { diff --git a/ipsecmod/ipsecmod.c b/ipsecmod/ipsecmod.c index e42af6f49..577f7112e 100644 --- a/ipsecmod/ipsecmod.c +++ b/ipsecmod/ipsecmod.c @@ -37,7 +37,7 @@ * \file * * This file contains a module that facilitates opportunistic IPsec. It does so - * by also quering for the IPSECKEY for A/AAAA queries and calling a + * by also querying for the IPSECKEY for A/AAAA queries and calling a * configurable hook (eg. signaling an IKE daemon) before replying. */ diff --git a/ipsecmod/ipsecmod.h b/ipsecmod/ipsecmod.h index e00816d4b..272f473c2 100644 --- a/ipsecmod/ipsecmod.h +++ b/ipsecmod/ipsecmod.h @@ -37,7 +37,7 @@ * \file * * This file contains a module that facilitates opportunistic IPsec. It does so - * by also quering for the IPSECKEY for A/AAAA queries and calling a + * by also querying for the IPSECKEY for A/AAAA queries and calling a * configurable hook (eg. signaling an IKE daemon) before replying. */ diff --git a/iterator/iterator.c b/iterator/iterator.c index 45e9f7bf4..72003b4ba 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -3242,7 +3242,7 @@ prime_supers(struct module_qstate* qstate, int id, struct module_qstate* forq) /* Convert our response to a delegation point */ dp = delegpt_from_message(qstate->return_msg, forq->region); if(!dp) { - /* if there is no convertable delegation point, then + /* if there is no convertible delegation point, then * the ANSWER type was (presumably) a negative answer. */ verbose(VERB_ALGO, "prime response was not a positive " "ANSWER; failing"); diff --git a/libunbound/python/doc/examples/example4.rst b/libunbound/python/doc/examples/example4.rst index 3b43eb85f..a95be52fb 100644 --- a/libunbound/python/doc/examples/example4.rst +++ b/libunbound/python/doc/examples/example4.rst @@ -31,6 +31,6 @@ Source code else: print "Result is insecure" -More detailed informations can be seen in libUnbound DNSSEC tutorial `here`_. +More detailed information can be seen in libUnbound DNSSEC tutorial `here`_. .. _here: http://www.unbound.net/documentation/libunbound-tutorial-6.html diff --git a/libunbound/python/libunbound.i b/libunbound/python/libunbound.i index 763879e80..c9549bf90 100644 --- a/libunbound/python/libunbound.i +++ b/libunbound/python/libunbound.i @@ -363,7 +363,7 @@ Result: ['74.125.43.147', '74.125.43.99', '74.125.43.103', '74.125.43.104'] ctx.debuglevel(3) ctx.debugout(fw) - Another option is to print the debug informations to stderr output + Another option is to print the debug information to stderr output :: diff --git a/libunbound/unbound-event.h b/libunbound/unbound-event.h index 4d694b8b4..a5d5c038b 100644 --- a/libunbound/unbound-event.h +++ b/libunbound/unbound-event.h @@ -41,7 +41,7 @@ * * Use ub_ctx_create_event_ub_base() to create an unbound context that uses * the user provided event base API. Then, use the ub_resolve_event call - * to add DNS resolve queries to the context. Those then run whith the + * to add DNS resolve queries to the context. Those then run with the * provided event_base, and when they are done you get a function callback. * * This method does not fork another process or create a thread, the effort diff --git a/libunbound/unbound.h b/libunbound/unbound.h index 945c17a8f..2a12511bd 100644 --- a/libunbound/unbound.h +++ b/libunbound/unbound.h @@ -224,7 +224,7 @@ struct ub_result { * It is called with * void* my_arg: your pointer to a (struct of) data of your choice, * or NULL. - * int err: if 0 all is OK, otherwise an error occured and no results + * int err: if 0 all is OK, otherwise an error occurred and no results * are forthcoming. * struct result: pointer to more detailed result structure. * This structure is allocated on the heap and needs to be diff --git a/libunbound/worker.h b/libunbound/worker.h index f50369f87..974b66a30 100644 --- a/libunbound/worker.h +++ b/libunbound/worker.h @@ -66,7 +66,7 @@ struct query_info; * @param ssl_upstream: use SSL for upstream queries. * @param tls_auth_name: if ssl_upstream, use this name with TLS * authentication. - * @param q: wich query state to reactivate upon return. + * @param q: which query state to reactivate upon return. * @return: false on failure (memory or socket related). no query was * sent. */ @@ -118,7 +118,7 @@ void worker_sighandler(int sig, void* arg); * @param ssl_upstream: use SSL for upstream queries. * @param tls_auth_name: if ssl_upstream, use this name with TLS * authentication. - * @param q: wich query state to reactivate upon return. + * @param q: which query state to reactivate upon return. * @return: false on failure (memory or socket related). no query was * sent. */ diff --git a/pythonmod/doc/examples/example5.rst b/pythonmod/doc/examples/example5.rst index 938d8941b..8b9d145d1 100644 --- a/pythonmod/doc/examples/example5.rst +++ b/pythonmod/doc/examples/example5.rst @@ -90,7 +90,7 @@ We can also remove an EDNS option code from an EDNS option list. log_info("python: Option code {} was not found in the " "list.".format(code)) -.. note:: All occurences of the EDNS option code will be removed from the list: +.. note:: All occurrences of the EDNS option code will be removed from the list: Controlling other modules' cache behavior diff --git a/pythonmod/doc/modules/struct.rst b/pythonmod/doc/modules/struct.rst index de7c084e9..310cf5524 100644 --- a/pythonmod/doc/modules/struct.rst +++ b/pythonmod/doc/modules/struct.rst @@ -12,7 +12,7 @@ module_qstate .. attribute:: qinfo - (:class:`query_info`) Informations about query being answered. Name, RR type, RR class. + (:class:`query_info`) Information about query being answered. Name, RR type, RR class. .. attribute:: query_flags @@ -256,7 +256,7 @@ dns_msg .. attribute:: qinfo - (:class:`query_info`) Informations about query. + (:class:`query_info`) Information about query. .. attribute:: rep @@ -440,7 +440,7 @@ DNSMessage .. method:: set_return_msg(self, qstate) - This method fills qstate return message according to the given informations. + This method fills qstate return message according to the given information. It takes lists of RRs in each section of answer, created necessary RRsets in wire format and store the result in :attr:`qstate.return_msg`. Returns 1 if OK. diff --git a/pythonmod/doc/usecase.rst b/pythonmod/doc/usecase.rst index 5845061b0..27985e039 100644 --- a/pythonmod/doc/usecase.rst +++ b/pythonmod/doc/usecase.rst @@ -21,7 +21,7 @@ almost every mail server supports DNS based blacklisting. DNS based Wake-On-Lan --------------------- -Controled by secured queries secured with private key. +Controlled by secured queries secured with private key. Dynamic translation service --------------------------- diff --git a/pythonmod/examples/edns.py b/pythonmod/examples/edns.py index ca1bb8da7..ddcccc51c 100644 --- a/pythonmod/examples/edns.py +++ b/pythonmod/examples/edns.py @@ -55,7 +55,7 @@ # Return True on success, False on failure. # # edns_opt_list_remove(edns_opt_list, code): -# Remove all occurences of the given EDNS option code from the +# Remove all occurrences of the given EDNS option code from the # edns_opt_list. # Return True when at least one EDNS option was removed, False otherwise. # diff --git a/pythonmod/interface.i b/pythonmod/interface.i index 5825409b1..650841893 100644 --- a/pythonmod/interface.i +++ b/pythonmod/interface.i @@ -1341,7 +1341,7 @@ int set_return_msg(struct module_qstate* qstate, %pythoncode %{ class DNSMessage: def __init__(self, rr_name, rr_type, rr_class = RR_CLASS_IN, query_flags = 0, default_ttl = 0): - """Query flags is a combination of PKT_xx contants""" + """Query flags is a combination of PKT_xx constants""" self.rr_name = rr_name self.rr_type = rr_type self.rr_class = rr_class diff --git a/services/authzone.c b/services/authzone.c index 696fcbd85..b07dcbcc7 100644 --- a/services/authzone.c +++ b/services/authzone.c @@ -84,7 +84,7 @@ #define AUTH_PROBE_TIMEOUT_STOP 1000 /* msec */ /* auth transfer timeout for TCP connections, in msec */ #define AUTH_TRANSFER_TIMEOUT 10000 /* msec */ -/* auth transfer max backoff for failed tranfers and probes */ +/* auth transfer max backoff for failed transfers and probes */ #define AUTH_TRANSFER_MAX_BACKOFF 86400 /* sec */ /* auth http port number */ #define AUTH_HTTP_PORT 80 @@ -243,7 +243,7 @@ msg_add_rrset_an(struct auth_zone* z, struct regional* region, return 1; } -/** add rrset to authority section (no additonal section rrsets yet) */ +/** add rrset to authority section (no additional section rrsets yet) */ static int msg_add_rrset_ns(struct auth_zone* z, struct regional* region, struct dns_msg* msg, struct auth_data* node, struct auth_rrset* rrset) @@ -6491,7 +6491,7 @@ auth_xfer_probe_udp_callback(struct comm_point* c, void* arg, int err, comm_point_delete(xfr->task_probe->cp); xfr->task_probe->cp = NULL; - /* if the result was not a successfull probe, we need + /* if the result was not a successful probe, we need * to send the next one */ xfr_probe_nextmaster(xfr); xfr_probe_send_or_end(xfr, env); diff --git a/services/cache/rrset.h b/services/cache/rrset.h index 35a0d732b..7c36d4032 100644 --- a/services/cache/rrset.h +++ b/services/cache/rrset.h @@ -120,7 +120,7 @@ void rrset_cache_touch(struct rrset_cache* r, struct ub_packed_rrset_key* key, * the new rrset. The reference may be changed if the cached rrset is * superior. * Before calling the rrset is presumed newly allocated and changeable. - * Afer calling you do not hold a lock, and the rrset is inserted in + * After calling you do not hold a lock, and the rrset is inserted in * the hashtable so you need a lock to change it. * @param alloc: how to allocate (and deallocate) the special rrset key. * @param timenow: current time (to see if ttl in cache is expired). @@ -143,7 +143,7 @@ int rrset_cache_update(struct rrset_cache* r, struct rrset_ref* ref, * @param rrset: which rrset to cache as wildcard. This rrset is left * untouched. * @param ce: the closest encloser, will be uses to generate the wildcard dname. - * @param ce_len: the closest encloser lenght. + * @param ce_len: the closest encloser length. * @param alloc: how to allocate (and deallocate) the special rrset key. * @param timenow: current time (to see if ttl in cache is expired). */ diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index 1bb855c16..bedb0d5be 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -2618,7 +2618,7 @@ static int http2_req_begin_headers_cb(nghttp2_session* session, int ret; if(frame->hd.type != NGHTTP2_HEADERS || frame->headers.cat != NGHTTP2_HCAT_REQUEST) { - /* only interrested in request headers */ + /* only interested in request headers */ return 0; } if(!(h2_stream = http2_stream_create(frame->hd.stream_id))) { @@ -2746,7 +2746,7 @@ static int http2_req_header_cb(nghttp2_session* session, * the HEADER */ if(frame->hd.type != NGHTTP2_HEADERS || frame->headers.cat != NGHTTP2_HCAT_REQUEST) { - /* only interrested in request headers */ + /* only interested in request headers */ return 0; } if(!(h2_stream = nghttp2_session_get_stream_user_data(session, @@ -2842,7 +2842,7 @@ static int http2_req_header_cb(nghttp2_session* session, h2_stream->query_too_large = 1; return 0; } - /* guaranteed to only contian digits and be null terminated */ + /* guaranteed to only contain digits and be null terminated */ h2_stream->content_length = atoi((const char*)value); if(h2_stream->content_length > h2_session->c->http2_stream_max_qbuffer_size) { @@ -2882,7 +2882,7 @@ static int http2_req_data_chunk_recv_cb(nghttp2_session* ATTR_UNUSED(session), /* setting this to msg-buffer-size can result in a lot * of memory consuption. Most queries should fit in a * single DATA frame, and most POST queries will - * containt content-length which does not impose this + * contain content-length which does not impose this * limit. */ qlen = len; } diff --git a/services/localzone.c b/services/localzone.c index 17dd46813..bbd2326ba 100644 --- a/services/localzone.c +++ b/services/localzone.c @@ -465,7 +465,7 @@ lz_find_create_node(struct local_zone* z, uint8_t* nm, size_t nmlen, /* 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 + * records. An artificial 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 @@ -1526,7 +1526,7 @@ local_data_answer(struct local_zone* z, struct module_env* env, /* write qname */ memmove(d->rr_data[0] + sizeof(uint16_t), qinfo->qname, qinfo->qname_len - 1); - /* write cname target wilcard wildcard label */ + /* write cname target wildcard label */ memmove(d->rr_data[0] + sizeof(uint16_t) + qinfo->qname_len - 1, ctarget + 2, ctargetlen - 2); diff --git a/services/localzone.h b/services/localzone.h index 9a06a7f84..19534f750 100644 --- a/services/localzone.h +++ b/services/localzone.h @@ -257,7 +257,7 @@ void local_zone_delete(struct local_zone* z); * @param dclass: class to lookup. * @param dtype: type to lookup, if type DS a zone higher is used for zonecuts. * @param taglist: taglist to lookup. - * @param taglen: lenth of taglist. + * @param taglen: length of taglist. * @param ignoretags: lookup zone by name and class, regardless the * local-zone's tags. * @return closest local_zone or NULL if no covering zone is found. diff --git a/services/mesh.c b/services/mesh.c index 200531903..6a1609e7f 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -1367,7 +1367,7 @@ void mesh_query_done(struct mesh_state* mstate) } if(mstate->s.return_rcode == LDNS_RCODE_SERVFAIL || (rep && FLAGS_GET_RCODE(rep->flags) == LDNS_RCODE_SERVFAIL)) { - /* we are SERVFAILing; check for expired asnwer here */ + /* we are SERVFAILing; check for expired answer here */ mesh_serve_expired_callback(mstate); if((mstate->reply_list || mstate->cb_list) && mstate->s.env->cfg->log_servfail @@ -1584,7 +1584,7 @@ int mesh_state_add_reply(struct mesh_state* s, struct edns_data* edns, return 0; /* the rrset is not packed, like in the cache, but it is - * individualy allocated with an allocator from localzone. */ + * individually allocated with an allocator from localzone. */ d = regional_alloc_zero(s->s.region, sizeof(*d)); if(!d) return 0; diff --git a/services/outbound_list.h b/services/outbound_list.h index ad59e42d1..73c137d50 100644 --- a/services/outbound_list.h +++ b/services/outbound_list.h @@ -79,7 +79,7 @@ void outbound_list_init(struct outbound_list* list); * Clear the user owner outbound list structure. * Deletes serviced queries. * @param list: the list structure. It is cleared, but the list struct itself - * is callers responsability to delete. + * is callers responsibility to delete. */ void outbound_list_clear(struct outbound_list* list); diff --git a/services/outside_network.c b/services/outside_network.c index 666e46f98..e1ab5aa5d 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -1935,7 +1935,7 @@ select_id(struct outside_network* outnet, struct pending* pend, LDNS_ID_SET(sldns_buffer_begin(packet), pend->id); id_tries++; if(id_tries == MAX_ID_RETRY) { - pend->id=99999; /* non existant ID */ + pend->id=99999; /* non existent ID */ log_err("failed to generate unique ID, drop msg"); return 0; } diff --git a/services/rpz.c b/services/rpz.c index 1e5596405..d408f9383 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -1095,7 +1095,7 @@ rpz_insert_rr(struct rpz* r, uint8_t* azname, size_t aznamelen, uint8_t* dname, * @param qname: qname * @param qname_len: length of qname * @param qclass: qclass - * @param only_exact: if 1 only excact (non wildcard) matches are returned + * @param only_exact: if 1 only exact (non wildcard) matches are returned * @param wr: get write lock for local-zone if 1, read lock if 0 * @param zones_keep_lock: if set do not release the r->local_zones lock, this * makes the caller of this function responsible for releasing the lock. @@ -1191,7 +1191,7 @@ rpz_find_zone(struct local_zones* zones, uint8_t* qname, size_t qname_len, uint1 * Remove RR from RPZ's local-data * @param z: local-zone for RPZ, holding write lock * @param policydname: dname of RR to remove - * @param policydnamelen: lenth of policydname + * @param policydnamelen: length of policydname * @param rr_type: RR type of RR to remove * @param rdata: rdata of RR to remove * @param rdatalen: length of rdata diff --git a/services/rpz.h b/services/rpz.h index 642548bdd..691475743 100644 --- a/services/rpz.h +++ b/services/rpz.h @@ -172,7 +172,7 @@ void rpz_remove_rr(struct rpz* r, size_t aznamelen, uint8_t* dname, * @param temp: scratchpad * @param repinfo: reply info * @param taglist: taglist to lookup. - * @param taglen: lenth of taglist. + * @param taglen: length of taglist. * @param stats: worker stats struct * @return: 1 if client answer is ready, 0 to continue resolving */ @@ -234,7 +234,7 @@ enum rpz_action respip_action_to_rpz_action(enum respip_action a); /** - * Prepare RPZ after procesing feed content. + * Prepare RPZ after processing feed content. * @param r: RPZ to use */ void rpz_finish_config(struct rpz* r); diff --git a/sldns/parseutil.h b/sldns/parseutil.h index 74d7c7275..208fd2fbc 100644 --- a/sldns/parseutil.h +++ b/sldns/parseutil.h @@ -58,7 +58,7 @@ time_t sldns_mktime_from_utc(const struct tm *tm); * The function interprets time as the number of seconds since epoch * with respect to now using serial arithmetics (rfc1982). * That number of seconds is then converted to broken-out time information. - * This is especially usefull when converting the inception and expiration + * This is especially useful when converting the inception and expiration * fields of RRSIG records. * * \param[in] time number of seconds since epoch (midnight, January 1st, 1970) diff --git a/sldns/str2wire.c b/sldns/str2wire.c index 293abf79a..ddaccd1b2 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -1427,7 +1427,7 @@ sldns_str2wire_svcbparam_parse_next_unescaped_comma(const char *val) } /* The source is already properly unescaped, this double unescaping is purely to allow for - * comma's in comma seperated alpn lists. + * comma's in comma separated alpn lists. * * In draft-ietf-dnsop-svcb-https-06 Section 7: * To enable simpler parsing, this SvcParamValue MUST NOT contain escape sequences. diff --git a/sldns/wire2str.h b/sldns/wire2str.h index b1ad459e3..548c66300 100644 --- a/sldns/wire2str.h +++ b/sldns/wire2str.h @@ -59,7 +59,7 @@ char* sldns_wire2str_pkt(uint8_t* data, size_t len); char* sldns_wire2str_rr(uint8_t* rr, size_t len); /** - * Conver wire dname to a string. + * Convert wire dname to a string. * @param dname: the dname in uncompressed wireformat. * @param dname_len: length of the dname. * @return string or NULL on failure. diff --git a/testcode/dohclient.c b/testcode/dohclient.c index 731aa6e13..d35f5a82c 100644 --- a/testcode/dohclient.c +++ b/testcode/dohclient.c @@ -358,7 +358,7 @@ static int http2_data_chunk_recv_cb(nghttp2_session* ATTR_UNUSED(session), } if(sldns_buffer_remaining(h2_stream->buf) < len) { - log_err("received data chunck does not fit into buffer"); + log_err("received data chunk does not fit into buffer"); return NGHTTP2_ERR_CALLBACK_FAILURE; } @@ -531,7 +531,7 @@ run(struct http2_session* h2_session, int port, int no_tls, int count, char** q) h2_session->block_select = 1; - /* hande query */ + /* handle query */ for(i=0; i cat logfiles" cat petal.log cat unbound.log -# check petal.log for the correct number of occurences. +# check petal.log for the correct number of occurrences. # It should be 2 User-Agents, one being the custom. -echo "> check User-Agent occurences" -occurences=`grep "User-Agent:" petal.log | wc -l` -echo $occurences -if test $occurences -eq 2; then +echo "> check User-Agent occurrences" +occurrences=`grep "User-Agent:" petal.log | wc -l` +echo $occurrences +if test $occurrences -eq 2; then echo "OK" else echo "Not OK" diff --git a/testdata/iter_primenoglue.rpl b/testdata/iter_primenoglue.rpl index a75ed82dd..a0be71c78 100644 --- a/testdata/iter_primenoglue.rpl +++ b/testdata/iter_primenoglue.rpl @@ -28,7 +28,7 @@ SECTION QUESTION SECTION ANSWER . IN NS K.ROOT-SERVERS.NET. SECTION ADDITIONAL -; glue ommitted! +; glue omitted! ;K.ROOT-SERVERS.NET. IN A 193.0.14.129 ENTRY_END diff --git a/testdata/iter_scrub_dname_rev.rpl b/testdata/iter_scrub_dname_rev.rpl index 3e649f936..9caca66c0 100644 --- a/testdata/iter_scrub_dname_rev.rpl +++ b/testdata/iter_scrub_dname_rev.rpl @@ -17,7 +17,7 @@ CONFIG_END SCENARIO_BEGIN Test scrub of reversed DNAME and CNAME in answer section RANGE_BEGIN 0 100 -; all adresses +; all addresses ENTRY_BEGIN MATCH opcode qtype qname ADJUST copy_id diff --git a/testdata/iter_scrub_dname_sec.rpl b/testdata/iter_scrub_dname_sec.rpl index 4597cdf98..34a7b324d 100644 --- a/testdata/iter_scrub_dname_sec.rpl +++ b/testdata/iter_scrub_dname_sec.rpl @@ -17,7 +17,7 @@ CONFIG_END SCENARIO_BEGIN Test scrub of secure DNAME in answer section RANGE_BEGIN 0 100 -; all adresses +; all addresses ENTRY_BEGIN MATCH opcode qtype qname ADJUST copy_id diff --git a/testdata/root_anchor.tdir/root_anchor.test b/testdata/root_anchor.tdir/root_anchor.test index 9b8454c7b..f75dadf67 100644 --- a/testdata/root_anchor.tdir/root_anchor.test +++ b/testdata/root_anchor.tdir/root_anchor.test @@ -27,7 +27,7 @@ fi echo "" # test that unbound-anchor, the builtin certificate, works -# so, force https with -F and the -c is a nonexistant file +# so, force https with -F and the -c is a nonexistent file $PRE/unbound-anchor -a test.cert -c test.pem -v -F # check that the test.cert file is OK. if $PRE/unbound-host -f test.cert -t SOA -v . 2>&1 | grep "(secure)"; then diff --git a/testdata/svcb.tdir/svcb.test b/testdata/svcb.tdir/svcb.test index 707287d5c..17330e08f 100644 --- a/testdata/svcb.tdir/svcb.test +++ b/testdata/svcb.tdir/svcb.test @@ -80,7 +80,7 @@ else fi -# check all the succes and write them +# check all the success and write them if ! $PRE/readzone svcb.success-cases.zone > svcb.success-cases.zone.out then echo "Some particular success cases did not succeed to parse" diff --git a/testdata/ttl_msg.rpl b/testdata/ttl_msg.rpl index efb7ea387..06726fb58 100644 --- a/testdata/ttl_msg.rpl +++ b/testdata/ttl_msg.rpl @@ -411,7 +411,7 @@ ENTRY_END ; cause a lookup for nx1.example.com bypassing the cache. ; with bug; this causes msg ttl for nx1 to be time(NOW)+ttl. ; so 15+5 = 20 -; visiable in debug log as "msg ttl is %d" +; visible in debug log as "msg ttl is %d" STEP 40 QUERY ENTRY_BEGIN REPLY RD diff --git a/testdata/val_keyprefetch_verify.rpl b/testdata/val_keyprefetch_verify.rpl index f2050fb7f..9b901a8cb 100644 --- a/testdata/val_keyprefetch_verify.rpl +++ b/testdata/val_keyprefetch_verify.rpl @@ -219,7 +219,7 @@ STEP 20 TIME_PASSES ELAPSE 3400 ; now the key gets prefetched and has to be verified with the anchor, ; not with the key itself. -; this answer is from cache enyway. +; this answer is from cache anyway. STEP 30 QUERY ENTRY_BEGIN REPLY RD DO diff --git a/testdata/val_nodata_failwc.rpl b/testdata/val_nodata_failwc.rpl index 76fa8acac..f9c810951 100644 --- a/testdata/val_nodata_failwc.rpl +++ b/testdata/val_nodata_failwc.rpl @@ -42,7 +42,7 @@ SECTION ANSWER SECTION AUTHORITY nsecwc.nlnetlabs.nl. 3600 IN SOA ns.nlnetlabs.nl. ralph.nlnetlabs.nl. 1 14400 3600 604800 3600 nsecwc.nlnetlabs.nl. 3600 IN RRSIG SOA 8 3 3600 20200101000000 20171108114635 565 nsecwc.nlnetlabs.nl. bYibpCDg1LgrnYJgVahgu94LBqLIcNs4iC0SW8LV7pTI1hhuFKbLkO2O ekPdkJAWmu/KTytf8D+cdcK6X/9VS8QCVIF5S0hraHtNezu0f1B5ztg3 7Rqy+uJSucNKoykueAsz2z43GMgO0rGH3bqM7+3ii8p2E2rhzqEtG/D3 qyY= -; NSEC has a label lenght of 3, indication that the original owner name is: +; NSEC has a label length of 3, indication that the original owner name is: ; *.nsecwc.nlnetlabs.nl. The NSEC therefore does no prove the NODATA answer. _25._tcp.mail.nsecwc.nlnetlabs.nl. 3600 IN NSEC delegation.nsecwc.nlnetlabs.nl. TXT RRSIG NSEC _25._tcp.mail.nsecwc.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20200101000000 20171108114635 565 nsecwc.nlnetlabs.nl. ddy1MRbshFuFJswlouNGHsZUF/tYu8BOCztY2JuHeTMyWL7rhRKp73q/ 1RAXMwywKsynT5ioY0bMtEQszeIEn29IYaPDHieLAobjF6BMu1kO7U2/ oEBrSHM/fx28BcaM5G4nfCIm3BlhQhWvk1NDHLn3Q26x4hF/dnmFOUet aXw= diff --git a/testdata/val_nsec3_optout_cache.rpl b/testdata/val_nsec3_optout_cache.rpl index 215cca676..05c07a839 100644 --- a/testdata/val_nsec3_optout_cache.rpl +++ b/testdata/val_nsec3_optout_cache.rpl @@ -138,7 +138,7 @@ b6fuorg741ufili49mg9j4328ig53sqg.example.com. IN NSEC3 1 1 123 aabb00123456bbccd b6fuorg741ufili49mg9j4328ig53sqg.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. AKHQ0gnNP5WDab1yqbd+Bt12CSSff88sqeDR40dvhiWOcYA8mmyjYNA= ; span around sub.example.com., same span as foo.example.com, but it has -; just changed and it is now larger to accomodate sub.example.com. +; just changed and it is now larger to accommodate sub.example.com. 6obgmo062d9935unjnnj2su5otaj9334.example.com. IN NSEC3 1 1 123 aabb00123456bbccdd 9r1f0ieoutlnjc03meng9e3bn2n0o9pd NS DS RRSIG 6obgmo062d9935unjnnj2su5otaj9334.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. ABzruSKUUcJRNlYDqZ4UmQH/WnzeXt9Gozp3chS4cR0sqsEeGjL54eQ= @@ -164,7 +164,7 @@ b6fuorg741ufili49mg9j4328ig53sqg.example.com. IN NSEC3 1 1 123 aabb00123456bbccd b6fuorg741ufili49mg9j4328ig53sqg.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. AKHQ0gnNP5WDab1yqbd+Bt12CSSff88sqeDR40dvhiWOcYA8mmyjYNA= ; span around sub.example.com., same span as foo.example.com, but it has -; just changed and it is now larger to accomodate sub.example.com. +; just changed and it is now larger to accommodate sub.example.com. 6obgmo062d9935unjnnj2su5otaj9334.example.com. IN NSEC3 1 1 123 aabb00123456bbccdd 9r1f0ieoutlnjc03meng9e3bn2n0o9pd NS DS RRSIG 6obgmo062d9935unjnnj2su5otaj9334.example.com. 3600 IN RRSIG NSEC3 3 3 3600 20070926135752 20070829135752 2854 example.com. ABzruSKUUcJRNlYDqZ4UmQH/WnzeXt9Gozp3chS4cR0sqsEeGjL54eQ= diff --git a/util/config_file.h b/util/config_file.h index cd1bc7931..18910bee3 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -1110,7 +1110,7 @@ int cfg_count_numbers(const char* str); int cfg_parse_memsize(const char* str, size_t* res); /** - * Parse nsid from string into binary nsid. nsid is either a hexidecimal + * Parse nsid from string into binary nsid. nsid is either a hexadecimal * string or an ascii string prepended with ascii_ in which case the * characters after ascii_ are simply copied. * @param str: the string to parse. diff --git a/util/module.h b/util/module.h index a46373687..c6b7e573c 100644 --- a/util/module.h +++ b/util/module.h @@ -358,7 +358,7 @@ struct module_env { * @param ssl_upstream: use SSL for upstream queries. * @param tls_auth_name: if ssl_upstream, use this name with TLS * authentication. - * @param q: wich query state to reactivate upon return. + * @param q: which query state to reactivate upon return. * @return: false on failure (memory or socket related). no query was * sent. Or returns an outbound entry with qsent and qstate set. * This outbound_entry will be used on later module invocations diff --git a/util/netevent.h b/util/netevent.h index c79f99b3e..9f4d28ba9 100644 --- a/util/netevent.h +++ b/util/netevent.h @@ -743,7 +743,7 @@ struct comm_signal* comm_signal_create(struct comm_base* base, void (*callback)(int, void*), void* cb_arg); /** - * Bind signal struct to catch a signal. A signle comm_signal can be bound + * Bind signal struct to catch a signal. A single comm_signal can be bound * to multiple signals, calling comm_signal_bind multiple times. * @param comsig: the communication point, with callback information. * @param sig: signal number. diff --git a/util/ub_event.c b/util/ub_event.c index 68f633bb0..8cd87ec4e 100644 --- a/util/ub_event.c +++ b/util/ub_event.c @@ -1,5 +1,5 @@ /* - * util/ub_event.c - directly call libevent (compatability) functions + * util/ub_event.c - directly call libevent (compatibility) functions * * Copyright (c) 2007, NLnet Labs. All rights reserved. * diff --git a/validator/validator.c b/validator/validator.c index d4d48d956..e6307284f 100644 --- a/validator/validator.c +++ b/validator/validator.c @@ -140,7 +140,7 @@ val_apply_cfg(struct module_env* env, struct val_env* val_env, val_env->max_restart = cfg->val_max_restart; c = cfg_count_numbers(cfg->val_nsec3_key_iterations); if(c < 1 || (c&1)) { - log_err("validator: unparseable or odd nsec3 key " + log_err("validator: unparsable or odd nsec3 key " "iterations: %s", cfg->val_nsec3_key_iterations); return 0; } @@ -484,7 +484,7 @@ generate_keytag_query(struct module_qstate* qstate, int id, return 0; } - /* Not interrested in subquery response. Restore the ext_state, + /* Not interested in subquery response. Restore the ext_state, * that might be changed by generate_request() */ qstate->ext_state[id] = ext_state; diff --git a/validator/validator.h b/validator/validator.h index a928e10a6..a97eab25b 100644 --- a/validator/validator.h +++ b/validator/validator.h @@ -68,7 +68,7 @@ struct config_strlist; #define SENTINEL_IS "root-key-sentinel-is-ta-" /** Root key sentinel is not ta preamble */ #define SENTINEL_NOT "root-key-sentinel-not-ta-" -/** Root key sentinal keytag length */ +/** Root key sentinel keytag length */ #define SENTINEL_KEYTAG_LEN 5 /** From c5a1e87f75852dc04288f61d26b559cdf1b7020e Mon Sep 17 00:00:00 2001 From: tcarpay <8014108+TCY16@users.noreply.github.com> Date: Mon, 15 Nov 2021 13:03:26 +0100 Subject: [PATCH 419/553] Remove wrongly added EDE comments Co-authored-by: Wouter Wijngaards --- validator/validator.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/validator/validator.c b/validator/validator.c index 1c7039e0c..d4d48d956 100644 --- a/validator/validator.c +++ b/validator/validator.c @@ -1643,9 +1643,6 @@ processInit(struct module_qstate* qstate, struct val_qstate* vq, /* no retries, stop bothering the authority until timeout */ vq->restart_count = ve->max_restart; vq->chase_reply->security = sec_status_bogus; - - // @TODO ADD Error Code 6 - DNSSEC Bogus + text chain of trust? - vq->state = VAL_FINISHED_STATE; return 1; } @@ -1852,7 +1849,6 @@ processValidate(struct module_qstate* qstate, struct val_qstate* vq, LDNS_RR_TYPE_DNSKEY, vq->key_entry->key_class); vq->chase_reply->security = sec_status_bogus; errinf(qstate, "while building chain of trust"); - // @TODO ADD Error Code 6 - DNSSEC Bogus + text chain of trust? if(vq->restart_count >= ve->max_restart) key_cache_insert(ve->kcache, vq->key_entry, qstate); return 1; From b47dc528aac9ebd739ee398a41e0420657c6c6f5 Mon Sep 17 00:00:00 2001 From: Tom Carpay Date: Mon, 15 Nov 2021 12:33:08 +0000 Subject: [PATCH 420/553] add missing return code --- util/data/msgparse.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/util/data/msgparse.c b/util/data/msgparse.c index f9e7881b8..fcf2f2325 100644 --- a/util/data/msgparse.c +++ b/util/data/msgparse.c @@ -1112,7 +1112,7 @@ parse_extract_edns(struct msg_parse* msg, struct edns_data* edns, /* ignore rrsigs */ - return 0; + return LDNS_RCODE_NOERROR; } /** skip RR in packet */ From e899b4cefe99dc69590dda79940cf096819c04b3 Mon Sep 17 00:00:00 2001 From: Tom Carpay Date: Mon, 15 Nov 2021 13:40:51 +0000 Subject: [PATCH 421/553] Make explicit whether edns options are parsed from queries or responses --- cachedb/cachedb.c | 2 +- daemon/worker.c | 2 +- iterator/iterator.c | 2 +- pythonmod/pythonmod_utils.c | 2 +- util/data/msgparse.c | 32 ++++++++++++++++++++++++-------- util/data/msgparse.h | 6 +++--- util/data/msgreply.c | 2 +- 7 files changed, 32 insertions(+), 16 deletions(-) diff --git a/cachedb/cachedb.c b/cachedb/cachedb.c index af4ffe5f2..725bc6ce8 100644 --- a/cachedb/cachedb.c +++ b/cachedb/cachedb.c @@ -519,7 +519,7 @@ parse_data(struct module_qstate* qstate, struct sldns_buffer* buf) sldns_buffer_set_limit(buf, lim); return 0; } - if(parse_extract_edns(prs, &edns, qstate->env->scratch) != + if(parse_extract_edns_from_response_msg(prs, &edns, qstate->env->scratch) != LDNS_RCODE_NOERROR) { sldns_buffer_set_limit(buf, lim); return 0; diff --git a/daemon/worker.c b/daemon/worker.c index 8880cac19..5d2483cd2 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -1239,7 +1239,7 @@ worker_handle_request(struct comm_point* c, void* arg, int error, } goto send_reply; } - if((ret=parse_edns_from_pkt(c->buffer, &edns, worker->env.cfg, c, + if((ret=parse_edns_from_query_pkt(c->buffer, &edns, worker->env.cfg, c, worker->scratchpad)) != 0) { struct edns_data reply_edns; verbose(VERB_ALGO, "worker parse edns: formerror."); diff --git a/iterator/iterator.c b/iterator/iterator.c index 64a0602d5..55d53da63 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -3852,7 +3852,7 @@ process_response(struct module_qstate* qstate, struct iter_qstate* iq, goto handle_it; } /* edns is not examined, but removed from message to help cache */ - if(parse_extract_edns(prs, &edns, qstate->env->scratch) != + if(parse_extract_edns_from_response_msg(prs, &edns, qstate->env->scratch) != LDNS_RCODE_NOERROR) { iq->parse_failures++; goto handle_it; diff --git a/pythonmod/pythonmod_utils.c b/pythonmod/pythonmod_utils.c index 21a16bbe8..34a20ba76 100644 --- a/pythonmod/pythonmod_utils.c +++ b/pythonmod/pythonmod_utils.c @@ -132,7 +132,7 @@ int createResponse(struct module_qstate* qstate, sldns_buffer* pkt) return 0; } /* edns is not examined, but removed from message to help cache */ - if(parse_extract_edns(prs, &edns, qstate->env->scratch) != + if(parse_extract_edns_from_response_msg(prs, &edns, qstate->env->scratch) != LDNS_RCODE_NOERROR) return 0; diff --git a/util/data/msgparse.c b/util/data/msgparse.c index fcf2f2325..415973cdd 100644 --- a/util/data/msgparse.c +++ b/util/data/msgparse.c @@ -953,7 +953,7 @@ edns_opt_list_append_keepalive(struct edns_option** list, int msec, /** parse EDNS options from EDNS wireformat rdata */ static int -parse_edns_options(uint8_t* rdata_ptr, size_t rdata_len, +parse_edns_options_from_query(uint8_t* rdata_ptr, size_t rdata_len, struct edns_data* edns, struct config_file* cfg, struct comm_point* c, struct regional* region) { @@ -1044,8 +1044,8 @@ parse_edns_options(uint8_t* rdata_ptr, size_t rdata_len, } int -parse_extract_edns(struct msg_parse* msg, struct edns_data* edns, - struct regional* region) +parse_extract_edns_from_response_msg(struct msg_parse* msg, + struct edns_data* edns, struct regional* region) { struct rrset_parse* rrset = msg->rrset_first; struct rrset_parse* prev = 0; @@ -1107,11 +1107,26 @@ parse_extract_edns(struct msg_parse* msg, struct edns_data* edns, /* take the options */ rdata_len = found->rr_first->size-2; rdata_ptr = found->rr_first->ttl_data+6; - if(parse_edns_options(rdata_ptr, rdata_len, edns, NULL, NULL, region)) - return LDNS_RCODE_NOERROR; + /* while still more options, and have code+len to read */ + /* ignores partial content (i.e. rdata len 3) */ + while(rdata_len >= 4) { + uint16_t opt_code = sldns_read_uint16(rdata_ptr); + uint16_t opt_len = sldns_read_uint16(rdata_ptr+2); + rdata_ptr += 4; + rdata_len -= 4; + if(opt_len > rdata_len) + break; /* option code partial */ + + if(!edns_opt_list_append(&edns->opt_list_in, + opt_code, opt_len, rdata_ptr, region)) { + log_err("out of memory"); + break; + } + rdata_ptr += opt_len; + rdata_len -= opt_len; + } /* ignore rrsigs */ - return LDNS_RCODE_NOERROR; } @@ -1142,7 +1157,7 @@ skip_pkt_rrs(sldns_buffer* pkt, int num) } int -parse_edns_from_pkt(sldns_buffer* pkt, struct edns_data* edns, +parse_edns_from_query_pkt(sldns_buffer* pkt, struct edns_data* edns, struct config_file* cfg, struct comm_point* c, struct regional* region) { size_t rdata_len; @@ -1186,7 +1201,8 @@ parse_edns_from_pkt(sldns_buffer* pkt, struct edns_data* edns, return LDNS_RCODE_FORMERR; rdata_ptr = sldns_buffer_current(pkt); /* ignore rrsigs */ - return parse_edns_options(rdata_ptr, rdata_len, edns, cfg, c, region); + return parse_edns_options_from_query(rdata_ptr, rdata_len, edns, cfg, + c, region); } void diff --git a/util/data/msgparse.h b/util/data/msgparse.h index 0c70d3b15..4c0559a73 100644 --- a/util/data/msgparse.h +++ b/util/data/msgparse.h @@ -290,8 +290,8 @@ int parse_packet(struct sldns_buffer* pkt, struct msg_parse* msg, * @return: 0 on success. or an RCODE on an error. * RCODE formerr if OPT in wrong section, and so on. */ -int parse_extract_edns(struct msg_parse* msg, struct edns_data* edns, - struct regional* region); +int parse_extract_edns_from_response_msg(struct msg_parse* msg, + struct edns_data* edns, struct regional* region); /** * If EDNS data follows a query section, extract it and initialize edns struct. @@ -305,7 +305,7 @@ int parse_extract_edns(struct msg_parse* msg, struct edns_data* edns, * @return: 0 on success, or an RCODE on error. * RCODE formerr if OPT is badly formatted and so on. */ -int parse_edns_from_pkt(struct sldns_buffer* pkt, struct edns_data* edns, +int parse_edns_from_query_pkt(struct sldns_buffer* pkt, struct edns_data* edns, struct config_file* cfg, struct comm_point* c, struct regional* region); /** diff --git a/util/data/msgreply.c b/util/data/msgreply.c index 5fb28a9e4..ec46e4724 100644 --- a/util/data/msgreply.c +++ b/util/data/msgreply.c @@ -518,7 +518,7 @@ int reply_info_parse(sldns_buffer* pkt, struct alloc_cache* alloc, if((ret = parse_packet(pkt, msg, region)) != 0) { return ret; } - if((ret = parse_extract_edns(msg, edns, region)) != 0) + if((ret = parse_extract_edns_from_response_msg(msg, edns, region)) != 0) return ret; /* parse OK, allocate return structures */ From ff030fa332b88bbd577b045efaee21c0f2d945dd Mon Sep 17 00:00:00 2001 From: Tom Carpay Date: Mon, 15 Nov 2021 14:00:31 +0000 Subject: [PATCH 422/553] Clarify KEEPALIVE EDNS0 option operation --- util/data/msgparse.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/util/data/msgparse.c b/util/data/msgparse.c index 415973cdd..a600a8c60 100644 --- a/util/data/msgparse.c +++ b/util/data/msgparse.c @@ -961,6 +961,10 @@ parse_edns_options_from_query(uint8_t* rdata_ptr, size_t rdata_len, * received one message with a TCP Keepalive EDNS option, and that * option must have 0 length data. Subsequent messages sent on that * connection will have a TCP Keepalive option. + * + * In the if-statement below, the option is added unsolicited. This + * means that the client has sent an KEEPALIVE option earlier. We know + * here this is true, because c->tcp_keepalive is set. */ if (cfg && cfg->do_tcp_keepalive && c && c->type != comm_udp && c->tcp_keepalive) { if(!edns_opt_list_append_keepalive(&edns->opt_list_out, @@ -999,6 +1003,14 @@ parse_edns_options_from_query(uint8_t* rdata_ptr, size_t rdata_len, * Keepalive EDNS option, and that option must have 0 * length data. Subsequent messages sent on that * connection will have a TCP Keepalive option. + * + * This should be the first time the client sends this + * option, so c->tcp_keepalive is not set. + * Besides adding the reply KEEPALIVE option, + * c->tcp_keepalive will be set so that the + * option will be added unsolicited in subsequent + * responses (see the comment above the if-statement + * at the start of this function). */ if (!cfg || !cfg->do_tcp_keepalive || !c || c->type == comm_udp || c->tcp_keepalive) From 5bde54b5306c3fe00d7ba2a32b182eb5c0413fc7 Mon Sep 17 00:00:00 2001 From: Tom Carpay Date: Mon, 15 Nov 2021 14:18:56 +0000 Subject: [PATCH 423/553] Document PR #563 to changelog --- doc/Changelog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 0b24236a6..daaa9621c 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +15 November 2021: Tom + - Improve EDNS option handling, now also works for synthesised + responses such as local-data and server.id CH TXT responses. + 5 November 2021: George - Fix for #558: fix loop in comm_point->tcp_free when a comm_point is reclaimed more than once during callbacks. From 22881e28cc20d4f3dfc07d113e7089fb839d0bc6 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 29 Nov 2021 11:41:45 +0100 Subject: [PATCH 424/553] - Fix for #570: regen aclocal.m4, fix configure.ac for spelling. --- aclocal.m4 | 8 ++++---- configure | 2 +- configure.ac | 4 ++-- doc/Changelog | 4 ++++ 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/aclocal.m4 b/aclocal.m4 index d62b482d0..bf3c57e2f 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -622,7 +622,7 @@ m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT # LT_OUTPUT # --------- # This macro allows early generation of the libtool script (before -# AC_OUTPUT is called), in case it is used in configure for compilation +# AC_OUTPUT is called), incase it is used in configure for compilation # tests. AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt} @@ -659,7 +659,7 @@ configured by $[0], generated by m4_PACKAGE_STRING. Copyright (C) 2011 Free Software Foundation, Inc. This config.lt script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." +gives unlimited permision to copy, distribute and modify it." while test 0 != $[#] do @@ -2876,7 +2876,7 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) # Add ABI-specific directories to the system library path. sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" - # Ideally, we could use ldconfig to report *all* directories which are + # Ideally, we could use ldconfig to report *all* directores which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, @@ -9132,7 +9132,7 @@ dnl Check to see whether a particular set of modules exists. Similar to dnl PKG_CHECK_MODULES(), but does not set variables or print errors. dnl dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) -dnl only at the first occurrence in configure.ac, so if the first place +dnl only at the first occurence in configure.ac, so if the first place dnl it's called might be skipped (such as if it is within an "if", you dnl have to call PKG_CHECK_EXISTS manually AC_DEFUN([PKG_CHECK_EXISTS], diff --git a/configure b/configure index 9131b348a..5ebb3de57 100755 --- a/configure +++ b/configure @@ -13600,7 +13600,7 @@ fi # Add ABI-specific directories to the system library path. sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" - # Ideally, we could use ldconfig to report *all* directories which are + # Ideally, we could use ldconfig to report *all* directores which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, diff --git a/configure.ac b/configure.ac index 99d57c412..721f2c8ba 100644 --- a/configure.ac +++ b/configure.ac @@ -458,7 +458,7 @@ AC_SUBST(RUNTIME_PATH) AC_SEARCH_LIBS([inet_pton], [nsl]) AC_SEARCH_LIBS([socket], [socket]) -# check wether strptime also works +# check whether strptime also works AC_DEFUN([AC_CHECK_STRPTIME_WORKS], [AC_REQUIRE([AC_PROG_CC]) AC_MSG_CHECKING(whether strptime works) @@ -980,7 +980,7 @@ case "$enable_subnet" in ;; esac -# check wether gost also works +# check whether gost also works AC_DEFUN([AC_CHECK_GOST_WORKS], [AC_REQUIRE([AC_PROG_CC]) AC_MSG_CHECKING([if GOST works]) diff --git a/doc/Changelog b/doc/Changelog index daaa9621c..daee68596 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +29 November 2021: Wouter + - Merge PR #570 from rex4539: Fix typos. + - Fix for #570: regen aclocal.m4, fix configure.ac for spelling. + 15 November 2021: Tom - Improve EDNS option handling, now also works for synthesised responses such as local-data and server.id CH TXT responses. From 2921ce9e6100a5b35789d2672ef4b5b314f301c2 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 29 Nov 2021 11:57:45 +0100 Subject: [PATCH 425/553] - Fix to make python module opt_list use opt_list_in. --- doc/Changelog | 1 + pythonmod/interface.i | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index daee68596..63ab8def2 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,7 @@ 29 November 2021: Wouter - Merge PR #570 from rex4539: Fix typos. - Fix for #570: regen aclocal.m4, fix configure.ac for spelling. + - Fix to make python module opt_list use opt_list_in. 15 November 2021: Tom - Improve EDNS option handling, now also works for synthesised diff --git a/pythonmod/interface.i b/pythonmod/interface.i index 650841893..03483abdf 100644 --- a/pythonmod/interface.i +++ b/pythonmod/interface.i @@ -678,11 +678,14 @@ struct edns_data { uint8_t edns_version; uint16_t bits; uint16_t udp_size; - struct edns_option* opt_list; + struct edns_option* opt_list_in; + struct edns_option* opt_list_out; + struct edns_option* opt_list_inplace_cb_out; + uint16_t padding_block_size; }; %inline %{ struct edns_option** _edns_data_opt_list_get(struct edns_data* edns) { - return &edns->opt_list; + return &edns->opt_list_in; } %} %extend edns_data { From dcad9d586329961efed36cf7c3b26ad8c27ddd64 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 29 Nov 2021 14:59:39 +0100 Subject: [PATCH 426/553] - Fix #574: unbound-checkconf reports fatal error if interface names are used as value for interfaces: --- doc/Changelog | 2 ++ smallapp/unbound-checkconf.c | 57 +++++++++++++++++++++++++++++++----- 2 files changed, 52 insertions(+), 7 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 63ab8def2..a8b304d91 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -2,6 +2,8 @@ - Merge PR #570 from rex4539: Fix typos. - Fix for #570: regen aclocal.m4, fix configure.ac for spelling. - Fix to make python module opt_list use opt_list_in. + - Fix #574: unbound-checkconf reports fatal error if interface names + are used as value for interfaces: 15 November 2021: Tom - Improve EDNS option handling, now also works for synthesised diff --git a/smallapp/unbound-checkconf.c b/smallapp/unbound-checkconf.c index 52c15238c..b88d010da 100644 --- a/smallapp/unbound-checkconf.c +++ b/smallapp/unbound-checkconf.c @@ -334,19 +334,62 @@ interfacechecks(struct config_file* cfg) int d; struct sockaddr_storage a; socklen_t alen; - int i, j; + int i, j, i2, j2; + char*** resif = NULL; + int* num_resif = 0; + + if(cfg->num_ifs != 0) { + resif = (char***)calloc(cfg->num_ifs, sizeof(char**)); + num_resif = (int*)calloc(cfg->num_ifs, sizeof(int*)); + } for(i=0; inum_ifs; i++) { - if(!extstrtoaddr(cfg->ifs[i], &a, &alen)) { - fatal_exit("cannot parse interface specified as '%s'", - cfg->ifs[i]); - } - for(j=0; jnum_ifs; j++) { - if(i!=j && strcmp(cfg->ifs[i], cfg->ifs[j])==0) + /* search for duplicates in IP or ifname arguments */ + for(i2=0; i2ifs[i], cfg->ifs[i2]) == 0) { fatal_exit("interface: %s present twice, " "cannot bind same ports twice.", cfg->ifs[i]); + } + } + if(!resolve_interface_names(&cfg->ifs[i], 1, NULL, &resif[i], + &num_resif[i])) { + fatal_exit("could not resolve interface names, for %s", + cfg->ifs[i]); + } + /* search for duplicates in the returned addresses */ + for(j=0; jifs[i], resif[i][j]) != 0) + fatal_exit("cannot parse interface address '%s' from the interace specified as '%s'", + resif[i][j], cfg->ifs[i]); + else + fatal_exit("cannot parse interface specified as '%s'", + cfg->ifs[i]); + } + for(i2=0; i2ifs[i], resif[i][j]) != 0) + snprintf(info1, sizeof(info1), "address %s from interface: %s", resif[i][j], cfg->ifs[i]); + else snprintf(info1, sizeof(info1), "interface: %s", cfg->ifs[i]); + if(strcmp(cfg->ifs[i2], resif[i2][j2]) != 0) + snprintf(info2, sizeof(info2), "address %s from interface: %s", resif[i2][j2], cfg->ifs[i2]); + else snprintf(info2, sizeof(info2), "interface: %s", cfg->ifs[i2]); + fatal_exit("%s present twice, cannot bind the same ports twice. The first entry is %s and the second is %s", resif[i][j], info2, info1); + } + } + } } } + + for(i=0; inum_ifs; i++) { + config_del_strarray(resif[i], num_resif[i]); + } + free(resif); + free(num_resif); + for(i=0; inum_out_ifs; i++) { if(!ipstrtoaddr(cfg->out_ifs[i], UNBOUND_DNS_PORT, &a, &alen) && !netblockstrtoaddr(cfg->out_ifs[i], UNBOUND_DNS_PORT, &a, &alen, &d)) { From b48d6760fc5abb3f5f53bd5ee9ed7930b7562cd2 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 29 Nov 2021 15:13:14 +0100 Subject: [PATCH 427/553] - Fix #574: Review fixes for it. --- doc/Changelog | 1 + smallapp/unbound-checkconf.c | 3 +++ 2 files changed, 4 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index a8b304d91..e1bbb6a7e 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -4,6 +4,7 @@ - Fix to make python module opt_list use opt_list_in. - Fix #574: unbound-checkconf reports fatal error if interface names are used as value for interfaces: + - Fix #574: Review fixes for it. 15 November 2021: Tom - Improve EDNS option handling, now also works for synthesised diff --git a/smallapp/unbound-checkconf.c b/smallapp/unbound-checkconf.c index b88d010da..7dc9994f9 100644 --- a/smallapp/unbound-checkconf.c +++ b/smallapp/unbound-checkconf.c @@ -54,6 +54,7 @@ #include "iterator/iter_hints.h" #include "validator/validator.h" #include "services/localzone.h" +#include "services/listen_dnsport.h" #include "services/view.h" #include "services/authzone.h" #include "respip/respip.h" @@ -340,7 +341,9 @@ interfacechecks(struct config_file* cfg) if(cfg->num_ifs != 0) { resif = (char***)calloc(cfg->num_ifs, sizeof(char**)); + if(!resif) fatal_exit("malloc failure"); num_resif = (int*)calloc(cfg->num_ifs, sizeof(int*)); + if(!num_resif) fatal_exit("malloc failure"); } for(i=0; inum_ifs; i++) { /* search for duplicates in IP or ifname arguments */ From 766c3164a37919e672ca47574d5d406e7a4d4f33 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 29 Nov 2021 15:26:07 +0100 Subject: [PATCH 428/553] - Fix #574: Review fixes for it. --- smallapp/unbound-checkconf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/smallapp/unbound-checkconf.c b/smallapp/unbound-checkconf.c index 7dc9994f9..768d5550b 100644 --- a/smallapp/unbound-checkconf.c +++ b/smallapp/unbound-checkconf.c @@ -337,7 +337,7 @@ interfacechecks(struct config_file* cfg) socklen_t alen; int i, j, i2, j2; char*** resif = NULL; - int* num_resif = 0; + int* num_resif = NULL; if(cfg->num_ifs != 0) { resif = (char***)calloc(cfg->num_ifs, sizeof(char**)); From b5dbb0282e702846c3fd30b2215fd026d97b4de1 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 29 Nov 2021 16:10:45 +0100 Subject: [PATCH 429/553] - Fix #576: [FR] UB_* error codes in unbound.h --- doc/Changelog | 1 + libunbound/context.h | 29 ----------------------------- libunbound/unbound.h | 30 ++++++++++++++++++++++++++++++ 3 files changed, 31 insertions(+), 29 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index e1bbb6a7e..04c495e97 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -5,6 +5,7 @@ - Fix #574: unbound-checkconf reports fatal error if interface names are used as value for interfaces: - Fix #574: Review fixes for it. + - Fix #576: [FR] UB_* error codes in unbound.h 15 November 2021: Tom - Improve EDNS option handling, now also works for synthesised diff --git a/libunbound/context.h b/libunbound/context.h index 78f8731e2..c0c86fb52 100644 --- a/libunbound/context.h +++ b/libunbound/context.h @@ -176,35 +176,6 @@ struct ctx_query { struct ub_result* res; }; -/** - * The error constants - */ -enum ub_ctx_err { - /** no error */ - UB_NOERROR = 0, - /** socket operation. Set to -1, so that if an error from _fd() is - * passed (-1) it gives a socket error. */ - UB_SOCKET = -1, - /** alloc failure */ - UB_NOMEM = -2, - /** syntax error */ - UB_SYNTAX = -3, - /** DNS service failed */ - UB_SERVFAIL = -4, - /** fork() failed */ - UB_FORKFAIL = -5, - /** cfg change after finalize() */ - UB_AFTERFINAL = -6, - /** initialization failed (bad settings) */ - UB_INITFAIL = -7, - /** error in pipe communication with async bg worker */ - UB_PIPE = -8, - /** error reading from file (resolv.conf) */ - UB_READFILE = -9, - /** error async_id does not exist or result already been delivered */ - UB_NOID = -10 -}; - /** * Command codes for libunbound pipe. * diff --git a/libunbound/unbound.h b/libunbound/unbound.h index 2a12511bd..ee8558759 100644 --- a/libunbound/unbound.h +++ b/libunbound/unbound.h @@ -232,6 +232,35 @@ struct ub_result { */ typedef void (*ub_callback_type)(void*, int, struct ub_result*); +/** + * The error constants + */ +enum ub_ctx_err { + /** no error */ + UB_NOERROR = 0, + /** socket operation. Set to -1, so that if an error from _fd() is + * passed (-1) it gives a socket error. */ + UB_SOCKET = -1, + /** alloc failure */ + UB_NOMEM = -2, + /** syntax error */ + UB_SYNTAX = -3, + /** DNS service failed */ + UB_SERVFAIL = -4, + /** fork() failed */ + UB_FORKFAIL = -5, + /** cfg change after finalize() */ + UB_AFTERFINAL = -6, + /** initialization failed (bad settings) */ + UB_INITFAIL = -7, + /** error in pipe communication with async bg worker */ + UB_PIPE = -8, + /** error reading from file (resolv.conf) */ + UB_READFILE = -9, + /** error async_id does not exist or result already been delivered */ + UB_NOID = -10 +}; + /** * Create a resolving and validation context. * The information from /etc/resolv.conf and /etc/hosts is not utilised by @@ -563,6 +592,7 @@ void ub_resolve_free(struct ub_result* result); /** * Convert error value to a human readable string. * @param err: error code from one of the libunbound functions. + * The error codes are from the type enum ub_ctx_err. * @return pointer to constant text string, zero terminated. */ const char* ub_strerror(int err); From 8648db9583e46d9b4200e9ccc6c11805c20ebe7a Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 29 Nov 2021 16:11:32 +0100 Subject: [PATCH 430/553] - Fix #574: Review fix for spelling. --- doc/Changelog | 1 + smallapp/unbound-checkconf.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 04c495e97..aa21d3515 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -6,6 +6,7 @@ are used as value for interfaces: - Fix #574: Review fixes for it. - Fix #576: [FR] UB_* error codes in unbound.h + - Fix #574: Review fix for spelling. 15 November 2021: Tom - Improve EDNS option handling, now also works for synthesised diff --git a/smallapp/unbound-checkconf.c b/smallapp/unbound-checkconf.c index 768d5550b..dd7c81dc7 100644 --- a/smallapp/unbound-checkconf.c +++ b/smallapp/unbound-checkconf.c @@ -363,7 +363,7 @@ interfacechecks(struct config_file* cfg) for(j=0; jifs[i], resif[i][j]) != 0) - fatal_exit("cannot parse interface address '%s' from the interace specified as '%s'", + fatal_exit("cannot parse interface address '%s' from the interface specified as '%s'", resif[i][j], cfg->ifs[i]); else fatal_exit("cannot parse interface specified as '%s'", From 2cee189e536d9da0fc07c027b00a4a9578692b2f Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 30 Nov 2021 13:38:39 +0100 Subject: [PATCH 431/553] - Fix to remove git tracking and ci information from release tarballs. --- doc/Changelog | 3 +++ makedist.sh | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index aa21d3515..2634c6828 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +30 November 2021: Wouter + - Fix to remove git tracking and ci information from release tarballs. + 29 November 2021: Wouter - Merge PR #570 from rex4539: Fix typos. - Fix for #570: regen aclocal.m4, fix configure.ac for spelling. diff --git a/makedist.sh b/makedist.sh index ea79e7b46..4234a0672 100755 --- a/makedist.sh +++ b/makedist.sh @@ -329,7 +329,7 @@ if [ "$DOWIN" = "yes" ]; then info "git clone --depth=1 --no-tags -b $GITBRANCH $GITREPO unbound" git clone --depth=1 --no-tags -b $GITBRANCH $GITREPO unbound || error_cleanup "git clone failed" cd unbound || error_cleanup "Unbound not exported correctly from git" - rm -rf .git || error_cleanup "Failed to remove .git tracking information" + rm -rf .git .travis.yml .gitattributes .github .gitignore || error_cleanup "Failed to remove .git tracking and ci information" # on a re-configure the cache may no longer be valid... if test -f mingw32-config.cache; then rm mingw32-config.cache; fi @@ -489,7 +489,7 @@ info "git clone --depth=1 --no-tags -b $GITBRANCH $GITREPO unbound" git clone --depth=1 --no-tags -b $GITBRANCH $GITREPO unbound || error_cleanup "git clone failed" cd unbound || error_cleanup "Unbound not exported correctly from git" -rm -rf .git || error_cleanup "Failed to remove .git tracking information" +rm -rf .git .travis.yml .gitattributes .github .gitignore || error_cleanup "Failed to remove .git tracking and ci information" info "Adding libtool utils (libtoolize)." libtoolize -c --install || libtoolize -c || error_cleanup "Libtoolize failed." From 88da8ce1740b9b1c1659acd80207b06d556b8d4e Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 30 Nov 2021 15:05:27 +0100 Subject: [PATCH 432/553] - iana portlist update. --- doc/Changelog | 1 + util/iana_ports.inc | 1 + 2 files changed, 2 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 2634c6828..ae892377d 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,6 @@ 30 November 2021: Wouter - Fix to remove git tracking and ci information from release tarballs. + - iana portlist update. 29 November 2021: Wouter - Merge PR #570 from rex4539: Fix typos. diff --git a/util/iana_ports.inc b/util/iana_ports.inc index b93af015d..9183c3987 100644 --- a/util/iana_ports.inc +++ b/util/iana_ports.inc @@ -2499,6 +2499,7 @@ 2870, 2871, 2872, +2873, 2874, 2875, 2876, From 178be45fb365dbb7a47545f82d4959a58c9f3829 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Wed, 1 Dec 2021 03:48:51 +0100 Subject: [PATCH 433/553] Changelog note for #511: - Merge PR #511 from yan12125: Reduce unnecessary linking. --- doc/Changelog | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index ae892377d..376b7c0e0 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +1 December 2021: George + - Merge PR #511 from yan12125: Reduce unnecessary linking. + 30 November 2021: Wouter - Fix to remove git tracking and ci information from release tarballs. - iana portlist update. From dc162f7feebd340e94616b0d3cb506db56a82511 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Wed, 1 Dec 2021 03:51:12 +0100 Subject: [PATCH 434/553] Changelog note for #493: - Merge PR #493 from Jaap: Fix generation of libunbound.pc. --- doc/Changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/Changelog b/doc/Changelog index 376b7c0e0..948d23c33 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,6 @@ 1 December 2021: George - Merge PR #511 from yan12125: Reduce unnecessary linking. + - Merge PR #493 from Jaap: Fix generation of libunbound.pc. 30 November 2021: Wouter - Fix to remove git tracking and ci information from release tarballs. From 173a8bb2b6b8ee4567a3bf637d7d33e04dafc48a Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Wed, 1 Dec 2021 03:55:53 +0100 Subject: [PATCH 435/553] Changelog note for #555: - Merge PR #555 from fobser: Allow interface names as scope-id in IPv6 link-local addresses. --- doc/Changelog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 948d23c33..0375e5b46 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,8 @@ 1 December 2021: George - Merge PR #511 from yan12125: Reduce unnecessary linking. - Merge PR #493 from Jaap: Fix generation of libunbound.pc. + - Merge PR #555 from fobser: Allow interface names as scope-id in IPv6 + link-local addresses. 30 November 2021: Wouter - Fix to remove git tracking and ci information from release tarballs. From 05c198ebd6d2235c970dfcc255686e709831f3a5 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Wed, 1 Dec 2021 03:58:01 +0100 Subject: [PATCH 436/553] Changelog note for #562: - Merge PR #562 from Willem: Reset keepalive per new tcp session. --- doc/Changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/Changelog b/doc/Changelog index 0375e5b46..de5720344 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -3,6 +3,7 @@ - Merge PR #493 from Jaap: Fix generation of libunbound.pc. - Merge PR #555 from fobser: Allow interface names as scope-id in IPv6 link-local addresses. + - Merge PR #562 from Willem: Reset keepalive per new tcp session. 30 November 2021: Wouter - Fix to remove git tracking and ci information from release tarballs. From 2add5850150b288bf767304a0422558a6a4017b6 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Wed, 1 Dec 2021 04:00:24 +0100 Subject: [PATCH 437/553] Changelog note for #522: - Merge PR #522 from sibeream: memory management violations fixed. --- doc/Changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/Changelog b/doc/Changelog index de5720344..2de6d176d 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -4,6 +4,7 @@ - Merge PR #555 from fobser: Allow interface names as scope-id in IPv6 link-local addresses. - Merge PR #562 from Willem: Reset keepalive per new tcp session. + - Merge PR #522 from sibeream: memory management violations fixed. 30 November 2021: Wouter - Fix to remove git tracking and ci information from release tarballs. From 7c0cb7198b41b3ddbd50b3255746263be34c8235 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Wed, 1 Dec 2021 04:03:27 +0100 Subject: [PATCH 438/553] Changelog note for #530: - Merge PR #530 from Shchelk: Fix: dereferencing a null pointer. --- doc/Changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/Changelog b/doc/Changelog index 2de6d176d..ae7e5ad39 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -5,6 +5,7 @@ link-local addresses. - Merge PR #562 from Willem: Reset keepalive per new tcp session. - Merge PR #522 from sibeream: memory management violations fixed. + - Merge PR #530 from Shchelk: Fix: dereferencing a null pointer. 30 November 2021: Wouter - Fix to remove git tracking and ci information from release tarballs. From 3dbda3aac38418e3d41c0722fffcfaa6285801fe Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Wed, 1 Dec 2021 04:26:36 +0100 Subject: [PATCH 439/553] =?UTF-8?q?-=20Fix=20#454:=20listen=5Fdnsport.c:82?= =?UTF-8?q?5:=20error:=20=E2=80=98IPV6=5FTCLASS=E2=80=99=20undeclared.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/Changelog | 1 + services/listen_dnsport.c | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index ae7e5ad39..009541447 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -6,6 +6,7 @@ - Merge PR #562 from Willem: Reset keepalive per new tcp session. - Merge PR #522 from sibeream: memory management violations fixed. - Merge PR #530 from Shchelk: Fix: dereferencing a null pointer. + - Fix #454: listen_dnsport.c:825: error: ‘IPV6_TCLASS’ undeclared. 30 November 2021: Wouter - Fix to remove git tracking and ci information from release tarballs. diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index bedb0d5be..6a33fbcda 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -869,9 +869,14 @@ set_ip_dscp(int socket, int addrfamily, int dscp) ds = dscp << 2; switch(addrfamily) { case AF_INET6: - if(setsockopt(socket, IPPROTO_IPV6, IPV6_TCLASS, (void*)&ds, sizeof(ds)) < 0) + #ifdef IPV6_TCLASS + if(setsockopt(socket, IPPROTO_IPV6, IPV6_TCLASS, (void*)&ds, + sizeof(ds)) < 0) return sock_strerror(errno); break; + #else + return "IPV6_TCLASS not defined on this system"; + #endif default: if(setsockopt(socket, IPPROTO_IP, IP_TOS, (void*)&ds, sizeof(ds)) < 0) return sock_strerror(errno); From 31bac7d5caef399bef165ab1641a53b580652ef8 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Wed, 1 Dec 2021 04:31:58 +0100 Subject: [PATCH 440/553] - Fix #574: Review fixes for size allocation. --- doc/Changelog | 1 + smallapp/unbound-checkconf.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 009541447..c5ed72778 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -7,6 +7,7 @@ - Merge PR #522 from sibeream: memory management violations fixed. - Merge PR #530 from Shchelk: Fix: dereferencing a null pointer. - Fix #454: listen_dnsport.c:825: error: ‘IPV6_TCLASS’ undeclared. + - Fix #574: Review fixes for size allocation. 30 November 2021: Wouter - Fix to remove git tracking and ci information from release tarballs. diff --git a/smallapp/unbound-checkconf.c b/smallapp/unbound-checkconf.c index dd7c81dc7..34c7d11bc 100644 --- a/smallapp/unbound-checkconf.c +++ b/smallapp/unbound-checkconf.c @@ -342,7 +342,7 @@ interfacechecks(struct config_file* cfg) if(cfg->num_ifs != 0) { resif = (char***)calloc(cfg->num_ifs, sizeof(char**)); if(!resif) fatal_exit("malloc failure"); - num_resif = (int*)calloc(cfg->num_ifs, sizeof(int*)); + num_resif = (int*)calloc(cfg->num_ifs, sizeof(int)); if(!num_resif) fatal_exit("malloc failure"); } for(i=0; inum_ifs; i++) { From 5d63ad6474022d4bc884de17bb92b7e7a7eaf65b Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 1 Dec 2021 10:08:54 +0100 Subject: [PATCH 441/553] - configure is set to 1.14.0, and release branch. --- configure | 49 ++++++++++++++++++++++++------------------------- configure.ac | 6 +++--- doc/Changelog | 3 +++ 3 files changed, 30 insertions(+), 28 deletions(-) diff --git a/configure b/configure index 64c8f38f4..0e964568e 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.3. +# Generated by GNU Autoconf 2.69 for unbound 1.14.0. # # Report bugs to . # @@ -591,8 +591,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='unbound' PACKAGE_TARNAME='unbound' -PACKAGE_VERSION='1.13.3' -PACKAGE_STRING='unbound 1.13.3' +PACKAGE_VERSION='1.14.0' +PACKAGE_STRING='unbound 1.14.0' PACKAGE_BUGREPORT='unbound-bugs@nlnetlabs.nl or https://github.com/NLnetLabs/unbound/issues' PACKAGE_URL='' @@ -698,6 +698,7 @@ swig SWIG_LIB SWIG PC_PY_DEPENDENCY +PYTHON_LIBS PY_MAJOR_VERSION PYTHON_SITE_PKG PYTHON_LDFLAGS @@ -1465,7 +1466,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.3 to adapt to many kinds of systems. +\`configure' configures unbound 1.14.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1530,7 +1531,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of unbound 1.13.3:";; + short | recursive ) echo "Configuration of unbound 1.14.0:";; esac cat <<\_ACEOF @@ -1772,7 +1773,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -unbound configure 1.13.3 +unbound configure 1.14.0 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2481,7 +2482,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.3, which was +It was created by unbound $as_me 1.14.0, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2831,9 +2832,9 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu UNBOUND_VERSION_MAJOR=1 -UNBOUND_VERSION_MINOR=13 +UNBOUND_VERSION_MINOR=14 -UNBOUND_VERSION_MICRO=3 +UNBOUND_VERSION_MICRO=0 LIBUNBOUND_CURRENT=9 @@ -2918,7 +2919,7 @@ LIBUNBOUND_AGE=1 # 1.13.0 had 9:11:1 # 1.13.1 had 9:12:1 # 1.13.2 had 9:13:1 -# 1.13.3 had 9:14:1 +# 1.14.0 had 9:14:1 # Current -- the number of the binary API that we're implementing # Revision -- which iteration of the implementation of the binary @@ -17555,11 +17556,15 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu $as_echo "#define HAVE_PYTHON 1" >>confdefs.h - if test -n "$LIBS"; then - LIBS="$PYTHON_LDFLAGS $LIBS" - else - LIBS="$PYTHON_LDFLAGS" + if test x_$ub_with_pythonmod != x_no; then + if test -n "$LIBS"; then + LIBS="$PYTHON_LDFLAGS $LIBS" + else + LIBS="$PYTHON_LDFLAGS" + fi fi + PYTHON_LIBS="$PYTHON_LDFLAGS" + if test -n "$CPPFLAGS"; then CPPFLAGS="$CPPFLAGS $PYTHON_CPPFLAGS" else @@ -18347,7 +18352,7 @@ rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext SSLLIB="-lssl" -PC_CRYPTO_DEPENDENCY="libcrypto libssl" +PC_CRYPTO_DEPENDENCY="" # check if -lcrypt32 is needed because CAPIENG needs that. (on windows) @@ -20417,7 +20422,7 @@ if test "$ac_res" != no; then : fi -for ac_func in tzset sigprocmask fcntl getpwnam endpwent getrlimit setrlimit setsid chroot kill chown sleep usleep random srandom recvmsg sendmsg writev socketpair glob initgroups strftime localtime_r setusercontext _beginthreadex endservent endprotoent fsync shmget accept4 getifaddrs +for ac_func in tzset sigprocmask fcntl getpwnam endpwent getrlimit setrlimit setsid chroot kill chown sleep usleep random srandom recvmsg sendmsg writev socketpair glob initgroups strftime localtime_r setusercontext _beginthreadex endservent endprotoent fsync shmget accept4 getifaddrs if_nametoindex do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" @@ -21730,12 +21735,6 @@ if test "${with_libunbound_only+set}" = set; then : INSTALLTARGET="install-lib" fi -fi -ac_fn_c_check_func "$LINENO" "if_nametoindex" "ac_cv_func_if_nametoindex" -if test "x$ac_cv_func_if_nametoindex" = xyes -then : - printf "%s\n" "#define HAVE_IF_NAMETOINDEX 1" >>confdefs.h - fi if test $ALLTARGET = "alltargets"; then @@ -21841,7 +21840,7 @@ _ACEOF -version=1.13.3 +version=1.14.0 date=`date +'%b %e, %Y'` @@ -22360,7 +22359,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.3, which was +This file was extended by unbound $as_me 1.14.0, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -22426,7 +22425,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.3 +unbound config.status 1.14.0 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index cfa200434..36fdb4598 100644 --- a/configure.ac +++ b/configure.ac @@ -10,8 +10,8 @@ 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],[3]) +m4_define([VERSION_MINOR],[14]) +m4_define([VERSION_MICRO],[0]) 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]) @@ -99,7 +99,7 @@ LIBUNBOUND_AGE=1 # 1.13.0 had 9:11:1 # 1.13.1 had 9:12:1 # 1.13.2 had 9:13:1 -# 1.13.3 had 9:14:1 +# 1.14.0 had 9:14: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 c5ed72778..c55d08278 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +1 December 2021: Wouter + - configure is set to 1.14.0, and release branch. + 1 December 2021: George - Merge PR #511 from yan12125: Reduce unnecessary linking. - Merge PR #493 from Jaap: Fix generation of libunbound.pc. From 919c8c9527281a7289415c00f8f2aed12b17a9aa Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 1 Dec 2021 17:13:11 +0100 Subject: [PATCH 442/553] - Fix doc/unbound.doxygen to remove obsolete tag warning. --- doc/Changelog | 1 + doc/unbound.doxygen | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index c55d08278..8aec7694f 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,6 @@ 1 December 2021: Wouter - configure is set to 1.14.0, and release branch. + - Fix doc/unbound.doxygen to remove obsolete tag warning. 1 December 2021: George - Merge PR #511 from yan12125: Reduce unnecessary linking. diff --git a/doc/unbound.doxygen b/doc/unbound.doxygen index 272d6b4cb..7222dbc27 100644 --- a/doc/unbound.doxygen +++ b/doc/unbound.doxygen @@ -779,7 +779,7 @@ ALPHABETICAL_INDEX = YES # the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns # in which this list will be split (can be a number in the range [1..20]) -COLS_IN_ALPHA_INDEX = 5 +#COLS_IN_ALPHA_INDEX = 5 # In case all classes in a project start with a common prefix, all # classes will be put under the same header in the alphabetical index. From 4efbee08b5bf0587505ce89142c54087f68963ef Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 3 Dec 2021 10:44:47 +0100 Subject: [PATCH 443/553] - Fix compile warning for if_nametoindex on windows 64bit. --- config.h.in | 3 +++ configure | 45 +++++++++++++++++++++++++++++++++++++++++++++ configure.ac | 33 +++++++++++++++++++++++++++++++++ doc/Changelog | 3 +++ util/net_help.c | 3 +++ 5 files changed, 87 insertions(+) diff --git a/config.h.in b/config.h.in index e8a26735d..197c2838b 100644 --- a/config.h.in +++ b/config.h.in @@ -381,6 +381,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_NETINET_TCP_H +/* Define to 1 if you have the header file. */ +#undef HAVE_NETIOAPI_H + /* Use libnettle for crypto */ #undef HAVE_NETTLE diff --git a/configure b/configure index 0e964568e..05dc8d2e7 100755 --- a/configure +++ b/configure @@ -14812,6 +14812,51 @@ fi done +for ac_header in netioapi.h +do : + ac_fn_c_check_header_compile "$LINENO" "netioapi.h" "ac_cv_header_netioapi_h" "$ac_includes_default +#if HAVE_SYS_PARAM_H +#include +#endif + +#ifdef HAVE_SYS_SOCKET_H +#include +#endif + +#ifdef HAVE_SYS_UIO_H +#include +#endif + +#ifdef HAVE_NETINET_IN_H +#include +#endif + +#ifdef HAVE_NETINET_TCP_H +#include +#endif + +#ifdef HAVE_ARPA_INET_H +#include +#endif + +#ifdef HAVE_WINSOCK2_H +#include +#endif + +#ifdef HAVE_WS2TCPIP_H +#include +#endif + +" +if test "x$ac_cv_header_netioapi_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_NETIOAPI_H 1 +_ACEOF + +fi + +done + # check for types. # Using own tests for int64* because autoconf builtin only give 32bit. diff --git a/configure.ac b/configure.ac index 36fdb4598..20cb8c136 100644 --- a/configure.ac +++ b/configure.ac @@ -412,6 +412,39 @@ AC_CHECK_HEADERS([net/if.h],,, [ # Check for Apple header. This uncovers TARGET_OS_IPHONE, TARGET_OS_TV or TARGET_OS_WATCH AC_CHECK_HEADERS([TargetConditionals.h],,, [AC_INCLUDES_DEFAULT]) +AC_CHECK_HEADERS([netioapi.h],,, [AC_INCLUDES_DEFAULT +#if HAVE_SYS_PARAM_H +#include +#endif + +#ifdef HAVE_SYS_SOCKET_H +#include +#endif + +#ifdef HAVE_SYS_UIO_H +#include +#endif + +#ifdef HAVE_NETINET_IN_H +#include +#endif + +#ifdef HAVE_NETINET_TCP_H +#include +#endif + +#ifdef HAVE_ARPA_INET_H +#include +#endif + +#ifdef HAVE_WINSOCK2_H +#include +#endif + +#ifdef HAVE_WS2TCPIP_H +#include +#endif +]) # check for types. # Using own tests for int64* because autoconf builtin only give 32bit. diff --git a/doc/Changelog b/doc/Changelog index 8aec7694f..98ff835b3 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +3 December 2021: Wouter + - Fix compile warning for if_nametoindex on windows 64bit. + 1 December 2021: Wouter - configure is set to 1.14.0, and release branch. - Fix doc/unbound.doxygen to remove obsolete tag warning. diff --git a/util/net_help.c b/util/net_help.c index d63fccd55..428e61bc4 100644 --- a/util/net_help.c +++ b/util/net_help.c @@ -44,6 +44,9 @@ #ifdef HAVE_NET_IF_H #include #endif +#ifdef HAVE_NETIOAPI_H +#include +#endif #include "util/net_help.h" #include "util/log.h" #include "util/data/dname.h" From 56cf526c68fa844e57c71afdb90ee6545bbd0a60 Mon Sep 17 00:00:00 2001 From: Florian Obser Date: Fri, 3 Dec 2021 18:29:04 +0100 Subject: [PATCH 444/553] Fix -Wmissing-prototypes by declaring functions static. --- services/rpz.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/services/rpz.c b/services/rpz.c index d408f9383..638dbcedf 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -836,7 +836,7 @@ rpz_report_rrset_error(const char* msg, uint8_t* rr, size_t rr_len) { } /* from localzone.c; difference is we don't have a dname */ -struct local_rrset* +static struct local_rrset* rpz_clientip_new_rrset(struct regional* region, struct clientip_synthesized_rr* raddr, uint16_t rrtype, uint16_t rrclass) { @@ -1930,7 +1930,7 @@ rpz_synthesize_qname_localdata(struct module_env* env, struct rpz* r, return ret; } -struct clientip_synthesized_rr* +static struct clientip_synthesized_rr* rpz_delegation_point_ipbased_trigger_lookup(struct rpz* rpz, struct iter_qstate* is) { struct delegpt_addr* cursor; @@ -1947,7 +1947,7 @@ rpz_delegation_point_ipbased_trigger_lookup(struct rpz* rpz, struct iter_qstate* return NULL; } -struct dns_msg* +static struct dns_msg* rpz_apply_nsip_trigger(struct module_qstate* ms, struct rpz* r, struct clientip_synthesized_rr* raddr, struct auth_zone* az) { @@ -2006,7 +2006,7 @@ done: return ret; } -struct dns_msg* +static struct dns_msg* rpz_apply_nsdname_trigger(struct module_qstate* ms, struct rpz* r, struct local_zone* z, struct matched_delegation_point const* match, struct auth_zone* az) From ef076c0e15fd9869378c182842db165fa8a762d2 Mon Sep 17 00:00:00 2001 From: Florian Obser Date: Fri, 3 Dec 2021 18:30:08 +0100 Subject: [PATCH 445/553] Fix -Wshadow --- services/rpz.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/services/rpz.c b/services/rpz.c index 638dbcedf..501817610 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -1384,9 +1384,9 @@ log_rpz_apply(char* trigger, uint8_t* dname, struct addr_tree_node* addrnode, if(dname) { dname_str(dname, dnamestr); } else if(addrnode) { - char a[128]; - addr_to_str(&addrnode->addr, addrnode->addrlen, a, sizeof(a)); - snprintf(dnamestr, sizeof(dnamestr), "%s/%d", a, addrnode->net); + char addrbuf[128]; + addr_to_str(&addrnode->addr, addrnode->addrlen, addrbuf, sizeof(addrbuf)); + snprintf(dnamestr, sizeof(dnamestr), "%s/%d", addrbuf, addrnode->net); } else { dnamestr[0]=0; } From c7afaef10c4f30cd591b0cd9d875a0ad388a73b3 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 6 Dec 2021 09:04:50 +0100 Subject: [PATCH 446/553] Changelog note for #581 --- doc/Changelog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 98ff835b3..5c54565b4 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +6 December 2021: Wouter + - Merge PR #581 from fobser: Fix -Wmissing-prototypes and -Wshadow + warnings in rpz. + 3 December 2021: Wouter - Fix compile warning for if_nametoindex on windows 64bit. From c6c54f9de418d7e952276e631fbd09a1bd979f2c Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 6 Dec 2021 13:12:44 +0100 Subject: [PATCH 447/553] - Fix validator debug output about DS support, print correct algorithm. --- doc/Changelog | 1 + validator/val_utils.c | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 5c54565b4..df097d57d 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,7 @@ 6 December 2021: Wouter - Merge PR #581 from fobser: Fix -Wmissing-prototypes and -Wshadow warnings in rpz. + - Fix validator debug output about DS support, print correct algorithm. 3 December 2021: Wouter - Fix compile warning for if_nametoindex on windows 64bit. diff --git a/validator/val_utils.c b/validator/val_utils.c index dd8d320e5..bb366d339 100644 --- a/validator/val_utils.c +++ b/validator/val_utils.c @@ -767,15 +767,15 @@ val_dsset_isusable(struct ub_packed_rrset_key* ds_rrset) sldns_lookup_table *lt; char herr[64], aerr[64]; lt = sldns_lookup_by_id(sldns_hashes, - (int)ds_get_digest_algo(ds_rrset, i)); + (int)ds_get_digest_algo(ds_rrset, 0)); if(lt) snprintf(herr, sizeof(herr), "%s", lt->name); else snprintf(herr, sizeof(herr), "%d", - (int)ds_get_digest_algo(ds_rrset, i)); + (int)ds_get_digest_algo(ds_rrset, 0)); lt = sldns_lookup_by_id(sldns_algorithms, - (int)ds_get_key_algo(ds_rrset, i)); + (int)ds_get_key_algo(ds_rrset, 0)); if(lt) snprintf(aerr, sizeof(aerr), "%s", lt->name); else snprintf(aerr, sizeof(aerr), "%d", - (int)ds_get_key_algo(ds_rrset, i)); + (int)ds_get_key_algo(ds_rrset, 0)); verbose(VERB_ALGO, "DS unsupported, hash %s %s, " "key algorithm %s %s", herr, (ds_digest_algo_is_supported(ds_rrset, 0)? From d29ab10a34ab5a26799da5cc9352efb2239f498c Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 9 Dec 2021 10:22:39 +0100 Subject: [PATCH 448/553] Continue with version 1.14.1 --- configure | 25 +++++++++++++------------ configure.ac | 5 +++-- doc/Changelog | 2 ++ 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/configure b/configure index 05dc8d2e7..3b6a591c3 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.14.0. +# Generated by GNU Autoconf 2.69 for unbound 1.14.1. # # Report bugs to . # @@ -591,8 +591,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='unbound' PACKAGE_TARNAME='unbound' -PACKAGE_VERSION='1.14.0' -PACKAGE_STRING='unbound 1.14.0' +PACKAGE_VERSION='1.14.1' +PACKAGE_STRING='unbound 1.14.1' PACKAGE_BUGREPORT='unbound-bugs@nlnetlabs.nl or https://github.com/NLnetLabs/unbound/issues' PACKAGE_URL='' @@ -1466,7 +1466,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.14.0 to adapt to many kinds of systems. +\`configure' configures unbound 1.14.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1531,7 +1531,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of unbound 1.14.0:";; + short | recursive ) echo "Configuration of unbound 1.14.1:";; esac cat <<\_ACEOF @@ -1773,7 +1773,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -unbound configure 1.14.0 +unbound configure 1.14.1 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2482,7 +2482,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.14.0, which was +It was created by unbound $as_me 1.14.1, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2834,11 +2834,11 @@ UNBOUND_VERSION_MAJOR=1 UNBOUND_VERSION_MINOR=14 -UNBOUND_VERSION_MICRO=0 +UNBOUND_VERSION_MICRO=1 LIBUNBOUND_CURRENT=9 -LIBUNBOUND_REVISION=14 +LIBUNBOUND_REVISION=15 LIBUNBOUND_AGE=1 # 1.0.0 had 0:12:0 # 1.0.1 had 0:13:0 @@ -2920,6 +2920,7 @@ LIBUNBOUND_AGE=1 # 1.13.1 had 9:12:1 # 1.13.2 had 9:13:1 # 1.14.0 had 9:14:1 +# 1.14.1 had 9:15:1 # Current -- the number of the binary API that we're implementing # Revision -- which iteration of the implementation of the binary @@ -21885,7 +21886,7 @@ _ACEOF -version=1.14.0 +version=1.14.1 date=`date +'%b %e, %Y'` @@ -22404,7 +22405,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.14.0, which was +This file was extended by unbound $as_me 1.14.1, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -22470,7 +22471,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.14.0 +unbound config.status 1.14.1 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 20cb8c136..53d5f335c 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],[14]) -m4_define([VERSION_MICRO],[0]) +m4_define([VERSION_MICRO],[1]) 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=14 +LIBUNBOUND_REVISION=15 LIBUNBOUND_AGE=1 # 1.0.0 had 0:12:0 # 1.0.1 had 0:13:0 @@ -100,6 +100,7 @@ LIBUNBOUND_AGE=1 # 1.13.1 had 9:12:1 # 1.13.2 had 9:13:1 # 1.14.0 had 9:14:1 +# 1.14.1 had 9:15: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 df097d57d..e08626452 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -8,6 +8,8 @@ 1 December 2021: Wouter - configure is set to 1.14.0, and release branch. + This was released as version 1.14.0 on 9 Dec 2021, with the doxygen + fix below included. The main branch continues as 1.14.1. - Fix doc/unbound.doxygen to remove obsolete tag warning. 1 December 2021: George From 778b50f11332a82cdf7bc8c71aadbcc25d004f58 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 10 Dec 2021 09:12:58 +0100 Subject: [PATCH 449/553] - Add code similar to fix for ldns for tab between strings, for consistency, the test case was not broken. --- doc/Changelog | 4 ++++ sldns/str2wire.c | 5 +++-- testdata/test_ldnsrr.5 | 2 ++ testdata/test_ldnsrr.c5 | 2 ++ 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index e08626452..8a5a32317 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +10 December 2021: Wouter + - Add code similar to fix for ldns for tab between strings, for + consistency, the test case was not broken. + 6 December 2021: Wouter - Merge PR #581 from fobser: Fix -Wmissing-prototypes and -Wshadow warnings in rpz. diff --git a/sldns/str2wire.c b/sldns/str2wire.c index ddaccd1b2..1e57211c1 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -543,9 +543,10 @@ sldns_parse_rdf_token(sldns_buffer* strbuf, char* token, size_t token_len, { size_t slen; - /* skip spaces */ + /* skip spaces and tabs */ while(sldns_buffer_remaining(strbuf) > 0 && !*quoted && - *(sldns_buffer_current(strbuf)) == ' ') { + (*(sldns_buffer_current(strbuf)) == ' ' || + *(sldns_buffer_current(strbuf)) == '\t')) { sldns_buffer_skip(strbuf, 1); } diff --git a/testdata/test_ldnsrr.5 b/testdata/test_ldnsrr.5 index c6e7ea2ba..2762ca82d 100644 --- a/testdata/test_ldnsrr.5 +++ b/testdata/test_ldnsrr.5 @@ -172,3 +172,5 @@ uri.arpa. 3600 IN ZONEMD 2018100702 1 1 ( 1291b78ddf7669b1a39d014 root-servers.net. 3600000 IN ZONEMD 2018091100 1 1 ( f1ca0ccd91bd5573d9f431c00ee0101b2545c97602be0a97 8a3b11dbfc1c776d5b3e86ae3d973d6b5349ba7f04340f79 ) ; from ldns issue #121, 0.10m was parsed as 0.01m. foo. 12345 IN LOC 12 45 52.333 N 105 40 33.452 W -24m 0.1m 0.1m 0.1m +; from ldns issue #147, fix #148, tab between quoted strings. +foo 12345 IN HINFO "hohum" "weirdo" diff --git a/testdata/test_ldnsrr.c5 b/testdata/test_ldnsrr.c5 index f30aa0b73..e86532c34 100644 --- a/testdata/test_ldnsrr.c5 +++ b/testdata/test_ldnsrr.c5 @@ -212,3 +212,5 @@ uri.arpa. 3600 IN ZONEMD 2018100702 1 1 1291B78DDF7669B1A39D014D87626B709B55774C root-servers.net. 3600000 IN ZONEMD 2018091100 1 1 F1CA0CCD91BD5573D9F431C00EE0101B2545C97602BE0A978A3B11DBFC1C776D5B3E86AE3D973D6B5349BA7F04340F79 03666F6F00001D00010000303900100011111182BD2D4D69530BD400988D20 foo. 12345 IN LOC 12 45 52.333 N 105 40 33.452 W -24m 0.10m 0.10m 0.10m +03666F6F00000D000100003039000D05686F68756D0677656972646F +foo. 12345 IN HINFO "hohum" "weirdo" From 2c1a5203a5c074cf696477a292dbfcacc26df7ef Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Fri, 10 Dec 2021 17:35:36 +0100 Subject: [PATCH 450/553] - Allow local-data for classes other than IN to inherit a configured local-zone's type if possible, instead of defaulting to type transparent as per the implicit rule. --- doc/Changelog | 5 +++ services/localzone.c | 99 ++++++++++++++++++++++++++++-------------- testdata/localdata.rpl | 54 +++++++++++++++++++++++ 3 files changed, 126 insertions(+), 32 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 8a5a32317..9df23b322 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,8 @@ +10 December 2021: George + - Allow local-data for classes other than IN to inherit a configured + local-zone's type if possible, instead of defaulting to type + transparent as per the implicit rule. + 10 December 2021: Wouter - Add code similar to fix for ldns for tab between strings, for consistency, the test case was not broken. diff --git a/services/localzone.c b/services/localzone.c index 77d0107f9..beaefbdc8 100644 --- a/services/localzone.c +++ b/services/localzone.c @@ -56,6 +56,44 @@ * with 16 bytes for an A record, a 64K packet has about 4000 max */ #define LOCALZONE_RRSET_COUNT_MAX 4096 +/** print all RRsets in local zone */ +static void +local_zone_out(struct local_zone* z) +{ + struct local_data* d; + struct local_rrset* p; + RBTREE_FOR(d, struct local_data*, &z->data) { + for(p = d->rrsets; p; p = p->next) { + log_nametypeclass(NO_VERBOSE, "rrset", d->name, + ntohs(p->rrset->rk.type), + ntohs(p->rrset->rk.rrset_class)); + } + } +} + +static void +local_zone_print(struct local_zone* z) +{ + char buf[64]; + lock_rw_rdlock(&z->lock); + snprintf(buf, sizeof(buf), "%s zone", + local_zone_type2str(z->type)); + log_nametypeclass(NO_VERBOSE, buf, z->name, 0, z->dclass); + local_zone_out(z); + lock_rw_unlock(&z->lock); +} + +void local_zones_print(struct local_zones* zones) +{ + struct local_zone* z; + lock_rw_rdlock(&zones->lock); + log_info("number of auth zones %u", (unsigned)zones->ztree.count); + RBTREE_FOR(z, struct local_zone*, &zones->ztree) { + local_zone_print(z); + } + lock_rw_unlock(&zones->lock); +} + struct local_zones* local_zones_create(void) { @@ -1010,6 +1048,35 @@ lz_setup_implicit(struct local_zones* zones, struct config_file* cfg) lock_rw_rdlock(&zones->lock); if(!local_zones_lookup(zones, rr_name, len, labs, rr_class, rr_type)) { + /* Check if there is a zone that this could go + * under but for different class; created zones are + * always for LDNS_RR_CLASS_IN. Create the zone with + * a different class but the same configured + * local_zone_type. */ + struct local_zone* z = local_zones_lookup(zones, + rr_name, len, labs, LDNS_RR_CLASS_IN, rr_type); + if(z) { + uint8_t* name = memdup(z->name, z->namelen); + lock_rw_unlock(&zones->lock); + if(!name) { + log_err("out of memory"); + free(rr_name); + return 0; + } + if(!( +#ifndef THREADS_DISABLED + z = +#endif + lz_enter_zone_dname(zones, name, + z->namelen, z->namelabs, + z->type, rr_class))) { + free(rr_name); + return 0; + } + lock_rw_unlock(&z->lock); + free(rr_name); + continue; + } if(!have_name) { dclass = rr_class; nm = rr_name; @@ -1220,38 +1287,6 @@ local_zones_find_le(struct local_zones* zones, return (struct local_zone*)node; } -/** print all RRsets in local zone */ -static void -local_zone_out(struct local_zone* z) -{ - struct local_data* d; - struct local_rrset* p; - RBTREE_FOR(d, struct local_data*, &z->data) { - for(p = d->rrsets; p; p = p->next) { - log_nametypeclass(NO_VERBOSE, "rrset", d->name, - ntohs(p->rrset->rk.type), - ntohs(p->rrset->rk.rrset_class)); - } - } -} - -void local_zones_print(struct local_zones* zones) -{ - struct local_zone* z; - lock_rw_rdlock(&zones->lock); - log_info("number of auth zones %u", (unsigned)zones->ztree.count); - RBTREE_FOR(z, struct local_zone*, &zones->ztree) { - char buf[64]; - lock_rw_rdlock(&z->lock); - snprintf(buf, sizeof(buf), "%s zone", - local_zone_type2str(z->type)); - log_nametypeclass(NO_VERBOSE, buf, z->name, 0, z->dclass); - local_zone_out(z); - lock_rw_unlock(&z->lock); - } - lock_rw_unlock(&zones->lock); -} - /** encode answer consisting of 1 rrset */ static int local_encode(struct query_info* qinfo, struct module_env* env, diff --git a/testdata/localdata.rpl b/testdata/localdata.rpl index 047fbeeba..e54de2b61 100644 --- a/testdata/localdata.rpl +++ b/testdata/localdata.rpl @@ -45,9 +45,32 @@ server: local-data: "b.c.implicit. A 20.30.45.50" local-data: "c.c.implicit. A 20.30.44.50" + ; create implicit data in the ANY domain + ; this should inherit the local_zone_type of the already configured + ; zone 'refuse.top.' and not be transparent + local-data: "refuse.top. ANY TXT implicit_non_transparent" + +stub-zone: + name: "refuse.top" + stub-addr: 1.2.3.4 + CONFIG_END SCENARIO_BEGIN Test local data queries +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 +; This entry should never be queried +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.refuse.top. IN A +SECTION ANSWER +www.refuse.top. IN A 5.5.5.5 +ENTRY_END +RANGE_END + ; id.server. STEP 1 QUERY ENTRY_BEGIN @@ -390,4 +413,35 @@ SECTION ANSWER foo.null.top. IN AAAA ::0 ENTRY_END +; refuse zone for implicit local-data with CLASS != IN +STEP 64 QUERY +ENTRY_BEGIN +SECTION QUESTION +refuse.top. ANY TXT +ENTRY_END +STEP 65 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA NOERROR +SECTION QUESTION +refuse.top. ANY TXT +SECTION ANSWER +refuse.top. ANY TXT implicit_non_transparent +ENTRY_END + +; refuse zone for implicit local-data with CLASS != IN +STEP 66 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.refuse.top. ANY A +ENTRY_END +STEP 67 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA RD AA REFUSED +SECTION QUESTION +www.refuse.top. ANY A +ENTRY_END + SCENARIO_END From 83c712ca609d3c821e74500ad9f1ff02172e54d1 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 13 Dec 2021 10:00:53 +0100 Subject: [PATCH 451/553] - Fix to pick up other class local zone information before unlock. --- doc/Changelog | 3 +++ services/localzone.c | 7 +++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 9df23b322..b6038612b 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +13 December 2021: Wouter + - Fix to pick up other class local zone information before unlock. + 10 December 2021: George - Allow local-data for classes other than IN to inherit a configured local-zone's type if possible, instead of defaulting to type diff --git a/services/localzone.c b/services/localzone.c index beaefbdc8..3e3a71aea 100644 --- a/services/localzone.c +++ b/services/localzone.c @@ -1057,6 +1057,9 @@ lz_setup_implicit(struct local_zones* zones, struct config_file* cfg) rr_name, len, labs, LDNS_RR_CLASS_IN, rr_type); if(z) { uint8_t* name = memdup(z->name, z->namelen); + size_t znamelen = z->namelen; + int znamelabs = z->namelabs; + enum localzone_type ztype = z->type; lock_rw_unlock(&zones->lock); if(!name) { log_err("out of memory"); @@ -1068,8 +1071,8 @@ lz_setup_implicit(struct local_zones* zones, struct config_file* cfg) z = #endif lz_enter_zone_dname(zones, name, - z->namelen, z->namelabs, - z->type, rr_class))) { + znamelen, znamelabs, + ztype, rr_class))) { free(rr_name); return 0; } From 983c716febc4a8af70fdd80c1fa5b18193f6fb2e Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Mon, 13 Dec 2021 12:46:08 +0100 Subject: [PATCH 452/553] - Add missing configure flags for optional features in the documentation. - Fix Unbound capitalization in the documentation. --- doc/Changelog | 5 ++ doc/example.conf.in | 49 +++++----- doc/unbound-anchor.8.in | 4 +- doc/unbound-checkconf.8.in | 16 ++-- doc/unbound-control.8.in | 78 ++++++++-------- doc/unbound-host.1.in | 14 +-- doc/unbound.8.in | 4 +- doc/unbound.conf.5.in | 180 +++++++++++++++++++------------------ 8 files changed, 182 insertions(+), 168 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index b6038612b..a989f5cc2 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,8 @@ +13 December 2021: George + - Add missing configure flags for optional features in the + documentation. + - Fix Unbound capitalization in the documentation. + 13 December 2021: Wouter - Fix to pick up other class local zone information before unlock. diff --git a/doc/example.conf.in b/doc/example.conf.in index febeb2ac1..6a4e812c2 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -82,13 +82,13 @@ server: # num-queries-per-thread, or, use as many as the OS will allow you. # outgoing-range: 4096 - # permit unbound to use this port number or port range for + # permit Unbound to use this port number or port range for # making outgoing queries, using an outgoing interface. # outgoing-port-permit: 32768 - # deny unbound the use this of port number or port range for + # deny Unbound the use this of port number or port range for # making outgoing queries, using an outgoing interface. - # Use this to make sure unbound does not grab a UDP port that some + # Use this to make sure Unbound does not grab a UDP port that some # other server on this computer needs. The default is to avoid # IANA-assigned port numbers. # If multiple outgoing-port-permit and outgoing-port-avoid options @@ -254,7 +254,7 @@ server: # use-systemd: no # Detach from the terminal, run in background, "yes" or "no". - # Set the value to "no" when unbound runs as systemd service. + # Set the value to "no" when Unbound runs as systemd service. # do-daemonize: yes # control which clients are allowed to make (recursive) queries @@ -307,7 +307,7 @@ server: # The pid file can be absolute and outside of the chroot, it is # written just prior to performing the chroot and dropping permissions. # - # Additionally, unbound may need to access /dev/urandom (for entropy). + # Additionally, Unbound may need to access /dev/urandom (for entropy). # How to do this is specific to your OS. # # If you give "" no chroot is performed. The path must not end in a /. @@ -517,7 +517,7 @@ server: # Use several entries, one per domain name, to track multiple zones. # # If you want to perform DNSSEC validation, run unbound-anchor before - # you start unbound (i.e. in the system boot scripts). + # you start Unbound (i.e. in the system boot scripts). # And then enable the auto-trust-anchor-file config item. # Please note usage of unbound-anchor root anchor is at your own risk # and under the terms of our LICENSE (see that file in the source). @@ -585,7 +585,7 @@ server: # val-permissive-mode: no # Ignore the CD flag in incoming queries and refuse them bogus data. - # Enable it if the only clients of unbound are legacy servers (w2008) + # Enable it if the only clients of Unbound are legacy servers (w2008) # that set CD but cannot validate themselves. # ignore-cd-flag: no @@ -615,7 +615,7 @@ server: # 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 + # 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 @@ -709,9 +709,9 @@ server: # Add example.com into ipset # local-zone: "example.com" ipset - # If unbound is running service for the local host then it is useful + # If Unbound is running service for the local host then it is useful # to perform lan-wide lookups to the upstream, and unblock the - # long list of local-zones above. If this unbound is a dns server + # long list of local-zones above. If this Unbound is a dns server # for a network of computers, disabled is better and stops information # leakage of local lan information. # unblock-lan-zones: no @@ -889,7 +889,7 @@ server: # the number of servers that will be used in the fast server selection. # fast-server-num: 3 - # Specific options for ipsecmod. unbound needs to be configured with + # Specific options for ipsecmod. Unbound needs to be configured with # --enable-ipsecmod for these to take effect. # # Enable or disable ipsecmod (it still needs to be defined in @@ -901,7 +901,7 @@ server: # listed in module-config (above). # ipsecmod-hook: "./my_executable" # - # When enabled unbound will reply with SERVFAIL if the return value of + # When enabled Unbound will reply with SERVFAIL if the return value of # the ipsecmod-hook is not 0. # ipsecmod-strict: no # @@ -966,10 +966,10 @@ remote-control: # For local sockets this option is ignored, and TLS is not used. # control-use-cert: "yes" - # unbound server key file. + # Unbound server key file. # server-key-file: "@UNBOUND_RUN_DIR@/unbound_server.key" - # unbound server certificate file. + # Unbound server certificate file. # server-cert-file: "@UNBOUND_RUN_DIR@/unbound_server.pem" # unbound-control key file. @@ -1072,8 +1072,9 @@ remote-control: # local-zone: "example.com" refuse # DNSCrypt +# To enable, use --enable-dnscrypt to configure before compiling. # Caveats: -# 1. the keys/certs cannot be produced by unbound. You can use dnscrypt-wrapper +# 1. the keys/certs cannot be produced by Unbound. You can use dnscrypt-wrapper # for this: https://github.com/cofyc/dnscrypt-wrapper/blob/master/README.md#usage # 2. dnscrypt channel attaches to an interface. you MUST set interfaces to # listen on `dnscrypt-port` with the follo0wing snippet: @@ -1092,7 +1093,9 @@ remote-control: # dnscrypt-provider-cert: /path/unbound-conf/keys2/1.cert # CacheDB -# Enable external backend DB as auxiliary cache. Specify the backend name +# External backend DB as auxiliary cache. +# To enable, use --enable-cachedb to configure before compiling. +# Specify the backend name # (default is "testframe", which has no use other than for debugging and # testing) and backend-specific options. The 'cachedb' module must be # included in module-config, just before the iterator module. @@ -1102,6 +1105,7 @@ remote-control: # secret-seed: "default" # # # For "redis" backend: +# # (to enable, use --with-libhiredis to configure before compiling) # # redis server's IP address or host name # redis-server-host: 127.0.0.1 # # redis server's TCP port @@ -1113,7 +1117,9 @@ remote-control: # IPSet # Add specify domain into set via ipset. -# Note: To enable ipset unbound needs to run as root user. +# To enable: +# o use --enable-ipset to configure before compiling; +# o Unbound then needs to run as root user. # ipset: # # set name for ip v4 addresses # name-v4: "list-v4" @@ -1121,9 +1127,10 @@ remote-control: # name-v6: "list-v6" # -# Dnstap logging support, if compiled in. To enable, set the dnstap-enable -# to yes and also some of dnstap-log-..-messages to yes. And select an -# upstream log destination, by socket path, TCP or TLS destination. +# Dnstap logging support, if compiled in by using --enable-dnstap to configure. +# To enable, set the dnstap-enable to yes and also some of +# dnstap-log-..-messages to yes. And select an upstream log destination, by +# socket path, TCP or TLS destination. # dnstap: # dnstap-enable: no # # if set to yes frame streams will be used in bidirectional mode @@ -1136,7 +1143,7 @@ remote-control: # dnstap-tls: yes # # name for authenticating the upstream server. or "" disabled. # dnstap-tls-server-name: "" -# # if "", it uses the cert bundle from the main unbound config. +# # if "", it uses the cert bundle from the main Unbound config. # dnstap-tls-cert-bundle: "" # # key file for client authentication, or "" disabled. # dnstap-tls-client-key-file: "" diff --git a/doc/unbound-anchor.8.in b/doc/unbound-anchor.8.in index b0d8302c4..dea113e4a 100644 --- a/doc/unbound-anchor.8.in +++ b/doc/unbound-anchor.8.in @@ -41,7 +41,7 @@ update certificate files. .P It tests if the root anchor file works, and if not, and an update is possible, attempts to update the root anchor using the root update certificate. -It performs a https fetch of root-anchors.xml and checks the results (RFC7958), +It performs a https fetch of root-anchors.xml and checks the results (RFC7958), if all checks are successful, it updates the root anchor file. Otherwise the root anchor file is unchanged. It performs RFC5011 tracking if the DNSSEC information available via the DNS makes that possible. @@ -185,5 +185,5 @@ Source for the root key information. .I https://data.iana.org/root\-anchors/root\-anchors.p7s Signature on the root key information. .SH "SEE ALSO" -\fIunbound.conf\fR(5), +\fIunbound.conf\fR(5), \fIunbound\fR(8). diff --git a/doc/unbound-checkconf.8.in b/doc/unbound-checkconf.8.in index f38049a03..98f1bf808 100644 --- a/doc/unbound-checkconf.8.in +++ b/doc/unbound-checkconf.8.in @@ -9,7 +9,7 @@ .\" .SH "NAME" unbound\-checkconf -\- Check unbound configuration file for errors. +\- Check Unbound configuration file for errors. .SH "SYNOPSIS" .B unbound\-checkconf .RB [ \-h ] @@ -21,8 +21,8 @@ unbound\-checkconf .B Unbound\-checkconf checks the configuration file for the \fIunbound\fR(8) -DNS resolver for syntax and other errors. -The config file syntax is described in +DNS resolver for syntax and other errors. +The config file syntax is described in \fIunbound.conf\fR(5). .P The available options are: @@ -34,19 +34,19 @@ Show the version and commandline option help. Print full pathname, with chroot applied to it. Use with the \-o option. .TP .B \-o\fI option -If given, after checking the config file the value of this option is +If given, after checking the config file the value of this option is printed to stdout. For "" (disabled) options an empty line is printed. .TP .I cfgfile -The config file to read with settings for unbound. It is checked. +The config file to read with settings for Unbound. It is checked. If omitted, the config file at the default location is checked. .SH "EXIT CODE" -The unbound\-checkconf program exits with status code 1 on error, +The unbound\-checkconf program exits with status code 1 on error, 0 for a correct config file. .SH "FILES" .TP .I @ub_conf_file@ -unbound configuration file. +Unbound configuration file. .SH "SEE ALSO" -\fIunbound.conf\fR(5), +\fIunbound.conf\fR(5), \fIunbound\fR(8). diff --git a/doc/unbound-control.8.in b/doc/unbound-control.8.in index c107c3bbc..2f3910463 100644 --- a/doc/unbound-control.8.in +++ b/doc/unbound-control.8.in @@ -14,15 +14,15 @@ .SH "SYNOPSIS" .B unbound\-control .RB [ \-hq ] -.RB [ \-c +.RB [ \-c .IR cfgfile ] -.RB [ \-s +.RB [ \-s .IR server ] .IR command .SH "DESCRIPTION" .B Unbound\-control performs remote administration on the \fIunbound\fR(8) DNS server. -It reads the configuration file, contacts the unbound server over SSL +It reads the configuration file, contacts the Unbound server over SSL sends the command and displays the result. .P The available options are: @@ -44,8 +44,8 @@ quiet, if the option is given it does not print anything if it works ok. There are several commands that the server understands. .TP .B start -Start the server. Simply execs \fIunbound\fR(8). The unbound executable -is searched for in the \fBPATH\fR set in the environment. It is started +Start the server. Simply execs \fIunbound\fR(8). The Unbound executable +is searched for in the \fBPATH\fR set in the environment. It is started with the config file specified using \fI\-c\fR or the default config file. .TP .B stop @@ -65,8 +65,8 @@ daemon release the file it is logging to. If you are using syslog it will attempt to close and open the syslog (which may not work if chrooted). .TP .B stats -Print statistics. Resets the internal counters to zero, this can be -controlled using the \fBstatistics\-cumulative\fR config statement. +Print statistics. Resets the internal counters to zero, this can be +controlled using the \fBstatistics\-cumulative\fR config statement. Statistics are printed with one [name]: [value] per line. .TP .B stats_noreset @@ -74,7 +74,7 @@ Peek at statistics. Prints them like the \fBstats\fR command does, but does not reset the internal counters to zero. .TP .B status -Display server status. Exit code 3 if not running (the connection to the +Display server status. Exit code 3 if not running (the connection to the port is refused), 1 on error, 0 if running. .TP .B local_zone \fIname\fR \fItype @@ -88,14 +88,14 @@ it. If the zone does not exist, the command succeeds. .B local_data \fIRR data... Add new local data, the given resource record. Like \fBlocal\-data\fR config statement, except for when no covering zone exists. In that case -this remote control command creates a transparent zone with the same +this remote control command creates a transparent zone with the same name as this record. .TP .B local_data_remove \fIname Remove all RR data from local name. If the name already has no items, nothing happens. Often results in NXDOMAIN for the name (in a static zone), -but if the name has become an empty nonterminal (there is still data in -domain names below the removed name), NOERROR nodata answers are the +but if the name has become an empty nonterminal (there is still data in +domain names below the removed name), NOERROR nodata answers are the result for that name. .TP .B local_zones @@ -125,22 +125,22 @@ in old or wrong data returned to clients. Loading data into the cache in this way is supported in order to aid with debugging. .TP .B lookup \fIname -Print to stdout the name servers that would be used to look up the +Print to stdout the name servers that would be used to look up the name specified. .TP .B flush \fIname Remove the name from the cache. Removes the types A, AAAA, NS, SOA, CNAME, DNAME, MX, PTR, SRV and NAPTR. -Because that is fast to do. Other record types can be removed using -.B flush_type -or +Because that is fast to do. Other record types can be removed using +.B flush_type +or .B flush_zone\fR. .TP .B flush_type \fIname\fR \fItype Remove the name, type information from the cache. .TP .B flush_zone \fIname -Remove all information at or below the name from the cache. +Remove all information at or below the name from the cache. The rrsets and key entries are removed so that new lookups will be performed. This needs to walk and inspect the entire cache, and is a slow operation. The entries are set to expired in the implementation of this command (so, @@ -187,7 +187,7 @@ therefore not flushed. The option must end with a ':' and whitespace must be between the option and the value. Some values may not have an effect if set this way, the new values are not written to the config file, not all options are supported. This is different from the set_option call -in libunbound, where all values work because unbound has not been initialized. +in libunbound, where all values work because Unbound has not been initialized. .IP The values that work are: statistics\-interval, statistics\-cumulative, do\-not\-query\-localhost, harden\-short\-bufsize, harden\-large\-queries, @@ -227,36 +227,36 @@ List the local data RRs in use. The resource records are printed. .TP .B insecure_add \fIzone Add a \fBdomain\-insecure\fR for the given zone, like the statement in unbound.conf. -Adds to the running unbound without affecting the cache contents (which may +Adds to the running Unbound without affecting the cache contents (which may still be bogus, use \fBflush_zone\fR to remove it), does not affect the config file. .TP .B insecure_remove \fIzone Removes domain\-insecure for the given zone. .TP .B forward_add \fR[\fI+i\fR] \fIzone addr ... -Add a new forward zone to running unbound. With +i option also adds a +Add a new forward zone to running Unbound. With +i option also adds a \fIdomain\-insecure\fR for the zone (so it can resolve insecurely if you have a DNSSEC root trust anchor configured for other names). The addr can be IP4, IP6 or nameserver names, like \fIforward-zone\fR config in unbound.conf. .TP .B forward_remove \fR[\fI+i\fR] \fIzone -Remove a forward zone from running unbound. The +i also removes a +Remove a forward zone from running Unbound. The +i also removes a \fIdomain\-insecure\fR for the zone. .TP .B stub_add \fR[\fI+ip\fR] \fIzone addr ... -Add a new stub zone to running unbound. With +i option also adds a +Add a new stub zone to running Unbound. With +i option also adds a \fIdomain\-insecure\fR for the zone. With +p the stub zone is set to prime, without it it is set to notprime. The addr can be IP4, IP6 or nameserver names, like the \fIstub-zone\fR config in unbound.conf. .TP .B stub_remove \fR[\fI+i\fR] \fIzone -Remove a stub zone from running unbound. The +i also removes a +Remove a stub zone from running Unbound. The +i also removes a \fIdomain\-insecure\fR for the zone. .TP .B forward \fR[\fIoff\fR | \fIaddr ...\fR ] Setup forwarding mode. Configures if the server should ask other upstream -nameservers, should go to the internet root nameservers itself, or show +nameservers, should go to the internet root nameservers itself, or show the current config. You could pass the nameservers after a DHCP update. .IP Without arguments the current list of addresses used to forward all queries @@ -296,7 +296,7 @@ status, indicating if the zone is expired and current serial number. Reload the auth zone from zonefile. The zonefile is read in overwriting the current contents of the zone in memory. This changes the auth zone contents itself, not the cache contents. Such cache contents exists if -you set unbound to validate with for-upstream yes and that can be cleared +you set Unbound to validate with for-upstream yes and that can be cleared with \fBflush_zone\fR \fIzone\fR. .TP .B auth_zone_transfer \fIzone\fR @@ -336,7 +336,7 @@ Add a list of \fIlocal_data\fR for given view from stdin. Like local_datas. .SH "EXIT CODE" The unbound\-control program exits with status code 1 on error, 0 on success. .SH "SET UP" -The setup requires a self\-signed certificate and private keys for both +The setup requires a self\-signed certificate and private keys for both the server and client. The script \fIunbound\-control\-setup\fR generates these in the default run directory, or with \-d in another directory. If you change the access control permissions on the key files you can decide @@ -350,7 +350,7 @@ If you have not configured a username in unbound.conf, the keys need read permission for the user credentials under which the daemon is started. The script preserves private keys present in the directory. -After running the script as root, turn on \fBcontrol\-enable\fR in +After running the script as root, turn on \fBcontrol\-enable\fR in \fIunbound.conf\fR. .SH "STATISTIC COUNTERS" The \fIstats\fR command shows a number of statistic counters. @@ -417,8 +417,8 @@ Average time it took to answer queries that needed recursive processing. Note th .TP .I threadX.recursion.time.median The median of the time it took to answer queries that needed recursive -processing. The median means that 50% of the user queries were answered in -less than this time. Because of big outliers (usually queries to non +processing. The median means that 50% of the user queries were answered in +less than this time. Because of big outliers (usually queries to non responsive servers), the average can be bigger than the median. This median has been calculated by interpolation from a histogram. .TP @@ -544,32 +544,32 @@ The total number of queries over all threads with query opcode QUERY. Also printed for other opcodes, UPDATE, ... .TP .I num.query.tcp -Number of queries that were made using TCP towards the unbound server. +Number of queries that were made using TCP towards the Unbound server. .TP .I num.query.tcpout -Number of queries that the unbound server made using TCP outgoing towards +Number of queries that the Unbound server made using TCP outgoing towards other servers. .TP .I num.query.tls -Number of queries that were made using TLS towards the unbound server. +Number of queries that were made using TLS towards the Unbound server. These are also counted in num.query.tcp, because TLS uses TCP. .TP .I num.query.tls.resume Number of TLS session resumptions, these are queries over TLS towards -the unbound server where the client negotiated a TLS session resumption key. +the Unbound server where the client negotiated a TLS session resumption key. .TP .I num.query.https -Number of queries that were made using HTTPS towards the unbound server. +Number of queries that were made using HTTPS towards the Unbound server. These are also counted in num.query.tcp and num.query.tls, because HTTPS uses TLS and TCP. .TP .I num.query.ipv6 -Number of queries that were made using IPv6 towards the unbound server. +Number of queries that were made using IPv6 towards the Unbound server. .TP .I num.query.flags.RD The number of queries that had the RD flag set in the header. Also printed for flags QR, AA, TC, RA, Z, AD, CD. -Note that queries with flags QR, AA or TC may have been rejected +Note that queries with flags QR, AA or TC may have been rejected because of that. .TP .I num.query.edns.present @@ -603,7 +603,7 @@ These queries are also included in the num.answer.rcode.NOERROR number. Common for AAAA lookups when an A record exists, and no AAAA. .TP .I num.answer.secure -Number of answers that were secure. The answer validated correctly. +Number of answers that were secure. The answer validated correctly. The AD bit might have been set in some of these answers, where the client signalled (with DO or AD bit in the query) that they were ready to accept the AD bit in the answer. @@ -644,7 +644,7 @@ per delegation point, and their validation status. .I dnscrypt_shared_secret.cache.count The number of items in the shared secret cache. These are precomputed shared secrets for a given client public key/server secret key pair. Shared secrets -are CPU intensive and this cache allows unbound to avoid recomputing the +are CPU intensive and this cache allows Unbound to avoid recomputing the shared secret when multiple dnscrypt queries are sent from the same client. .TP .I dnscrypt_nonce.cache.count @@ -689,11 +689,11 @@ disabled, and cname\-override. .SH "FILES" .TP .I @ub_conf_file@ -unbound configuration file. +Unbound configuration file. .TP .I @UNBOUND_RUN_DIR@ directory with private keys (unbound_server.key and unbound_control.key) and self\-signed certificates (unbound_server.pem and unbound_control.pem). .SH "SEE ALSO" -\fIunbound.conf\fR(5), +\fIunbound.conf\fR(5), \fIunbound\fR(8). diff --git a/doc/unbound-host.1.in b/doc/unbound-host.1.in index 1bddf2fd0..31902b422 100644 --- a/doc/unbound-host.1.in +++ b/doc/unbound-host.1.in @@ -15,7 +15,7 @@ .RB [ \-C .IR configfile ] .RB [ \-vdhr46D ] -.RB [ \-c +.RB [ \-c .IR class ] .RB [ \-t .IR type ] @@ -28,12 +28,12 @@ .I hostname .SH "DESCRIPTION" .B Unbound\-host -uses the unbound validating resolver to query for the hostname and display -results. With the \fB\-v\fR option it displays validation +uses the Unbound validating resolver to query for the hostname and display +results. With the \fB\-v\fR option it displays validation status: secure, insecure, bogus (security failure). .P By default it reads no configuration file whatsoever. It attempts to reach -the internet root servers. With \fB\-C\fR an unbound config file and with +the internet root servers. With \fB\-C\fR an Unbound config file and with \fB\-r\fR resolv.conf can be read. .P The available options are: @@ -73,7 +73,7 @@ For example \-y "example.com DS 31560 5 1 1CFED84787E6E19CCF9372C1187325972FE546 .TP .B \-D Enables DNSSEC validation. Reads the root anchor from the default configured -root anchor at the default location, \fI@UNBOUND_ROOTKEY_FILE@\fR. +root anchor at the default location, \fI@UNBOUND_ROOTKEY_FILE@\fR. .TP .B \-f \fIkeyfile Reads keys from a file. Every line has a DS or DNSKEY record, in the format @@ -110,9 +110,9 @@ $ unbound\-host \-v \-y "example.com DS 31560 5 1 1CFED84787E6E19CCF9372C1187325 .P $ unbound\-host \-v \-y "example.com DS 31560 5 1 1CFED84787E6E19CCF9372C1187325972FE546CD" 192.0.2.153 .SH "EXIT CODE" -The unbound\-host program exits with status code 1 on error, +The unbound\-host program exits with status code 1 on error, 0 on no error. The data may not be available on exit code 0, exit code 1 means the lookup encountered a fatal error. .SH "SEE ALSO" -\fIunbound.conf\fR(5), +\fIunbound.conf\fR(5), \fIunbound\fR(8). diff --git a/doc/unbound.8.in b/doc/unbound.8.in index 6e28ea783..936326912 100644 --- a/doc/unbound.8.in +++ b/doc/unbound.8.in @@ -57,7 +57,7 @@ The available options are: Show the version number and commandline option help, and exit. .TP .B \-c\fI cfgfile -Set the config file with settings for unbound to read instead of reading the +Set the config file with settings for Unbound to read instead of reading the file at the default location, @ub_conf_file@. The syntax is described in \fIunbound.conf\fR(5). .TP @@ -70,7 +70,7 @@ or to syslog, but the log messages are printed to stderr all the time. .TP .B \-p Don't use a pidfile. This argument should only be used by supervision -systems which can ensure that only one instance of unbound will run +systems which can ensure that only one instance of Unbound will run concurrently. .TP .B \-v diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 3ad8be23c..50f922405 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -104,7 +104,7 @@ requestlist statistics are printed for every interval (but can be 0). This is because the median calculation requires data to be present. .TP .B statistics\-cumulative: \fI -If enabled, statistics are cumulative since starting unbound, without clearing +If enabled, statistics are cumulative since starting Unbound, without clearing the statistics counters after logging the statistics. Default is no. .TP .B extended\-statistics: \fI @@ -136,7 +136,7 @@ Same as interface: (for ease of compatibility with nsd.conf). Listen on all addresses on all (current and future) interfaces, detect the source interface on UDP queries and copy them to replies. This is a lot like ip\-transparent, but this option services all interfaces whilst with -ip\-transparent you can select which (future) interfaces unbound provides +ip\-transparent you can select which (future) interfaces Unbound provides service on. This feature is experimental, and needs support in your OS for particular socket options. Default value is no. .TP @@ -154,7 +154,7 @@ sent via a random outgoing interface to counter spoofing. If an IPv6 netblock is specified instead of an individual IPv6 address, outgoing UDP queries will use a randomised source address taken from the netblock to counter spoofing. Requires the IPv6 netblock to be routed to the -host running unbound, and requires OS support for unprivileged non-local binds +host running Unbound, and requires OS support for unprivileged non-local binds (currently only supported on Linux). Several netblocks may be specified with multiple .B outgoing\-interface: @@ -174,7 +174,7 @@ numbers need extra resources from the operating system. For performance a very large value is best, use libevent to make this possible. .TP .B outgoing\-port\-permit: \fI -Permit unbound to open this port or range of ports for use to send queries. +Permit Unbound to open this port or range of ports for use to send queries. A larger number of permitted outgoing ports increases resilience against spoofing attempts. Make sure these ports are not needed by other daemons. By default only ports above 1024 that have not been assigned by IANA are used. @@ -187,8 +187,8 @@ processing starts with the non IANA allocated ports above 1024 in the set of allowed ports. .TP .B outgoing\-port\-avoid: \fI -Do not permit unbound to open this port or range of ports for use to send -queries. Use this to make sure unbound does not grab a port that another +Do not permit Unbound to open this port or range of ports for use to send +queries. Use this to make sure Unbound does not grab a port that another daemon needs. The port is avoided on all outgoing interfaces, both IP4 and IP6. By default only ports above 1024 that have not been assigned by IANA are used. Give a port number or a range of the form "low\-high", without spaces. @@ -289,7 +289,7 @@ If not 0, then set the SO_RCVBUF socket option to get more buffer space on UDP port 53 incoming queries. So that short spikes on busy servers do not drop packets (see counter in netstat \-su). Default is 0 (use system value). Otherwise, the number of bytes to ask for, try -"4m" on a busy server. The OS caps it at a maximum, on linux unbound +"4m" on a busy server. The OS caps it at a maximum, on linux Unbound needs root permission to bypass the limit, or the admin can use sysctl net.core.rmem_max. On BSD change kern.ipc.maxsockbuf in /etc/sysctl.conf. On OpenBSD change header and recompile kernel. On Solaris ndd \-set @@ -302,7 +302,7 @@ in answer traffic, otherwise 'send: resource temporarily unavailable' can get logged, the buffer overrun is also visible by netstat \-su. Default is 0 (use system value). Specify the number of bytes to ask for, try "4m" on a very busy server. The OS caps it at a maximum, on -linux unbound needs root permission to bypass the limit, or the admin +linux Unbound needs root permission to bypass the limit, or the admin can use sysctl net.core.wmem_max. On BSD, Solaris changes are similar to so\-rcvbuf. .TP @@ -319,18 +319,18 @@ At extreme load it could be better to turn it off to distribute the queries evenly, reported for Linux systems (4.4.x). .TP .B ip\-transparent: \fI -If yes, then use IP_TRANSPARENT socket option on sockets where unbound +If yes, then use IP_TRANSPARENT socket option on sockets where Unbound is listening for incoming traffic. Default no. Allows you to bind to non\-local interfaces. For example for non\-existent IP addresses that are going to exist later on, with host failover configuration. This is a lot like interface\-automatic, but that one services all interfaces -and with this option you can select which (future) interfaces unbound -provides service on. This option needs unbound to be started with root +and with this option you can select which (future) interfaces Unbound +provides service on. This option needs Unbound to be started with root permissions on some systems. The option uses IP_BINDANY on FreeBSD systems and SO_BINDANY on OpenBSD systems. .TP .B ip\-freebind: \fI -If yes, then use IP_FREEBIND socket option on sockets where unbound +If yes, then use IP_FREEBIND socket option on sockets where Unbound is listening to incoming traffic. Default no. Allows you to bind to IP addresses that are nonlocal or do not exist, like when the network interface or IP address is down. Exists only on Linux, where the similar @@ -560,7 +560,7 @@ service. Can list multiple, each on a new statement. .TP .B tls-session-ticket-keys: \fI If not "", lists files with 80 bytes of random contents that are used to -perform TLS session resumption for clients using the unbound server. +perform TLS session resumption for clients using the Unbound server. These files contain the secret key for the TLS session tickets. First key use to encrypt and decrypt TLS session tickets. Other keys use to decrypt only. With this you can roll over to new keys, @@ -642,8 +642,8 @@ Enable or disable systemd socket activation. Default is no. .TP .B do\-daemonize: \fI -Enable or disable whether the unbound server forks into the background as -a daemon. Set the value to \fIno\fR when unbound runs as systemd service. +Enable or disable whether the Unbound server forks into the background as +a daemon. Set the value to \fIno\fR when Unbound runs as systemd service. Default is yes. .TP .B tcp\-connection\-limit: \fI @@ -670,7 +670,7 @@ what almost all clients need). Nonrecursive queries are refused. .IP The \fIallow\fR action does allow nonrecursive queries to access the local\-data that is configured. The reason is that this does not involve -the unbound server recursive lookup algorithm, and static data is served +the Unbound server recursive lookup algorithm, and static data is served in the reply. This supports normal operations where nonrecursive queries are made for the authoritative data. For nonrecursive queries any replies from the dynamic cache are refused. @@ -742,7 +742,7 @@ to chroot and dropping permissions. This allows the pidfile to be Unbound is not able to remove the pidfile after termination when it is located outside of the chroot directory. .IP -Additionally, unbound may need to access /dev/urandom (for entropy) +Additionally, Unbound may need to access /dev/urandom (for entropy) from inside the chroot. .IP If given a chroot is done to the given directory. By default chroot is @@ -776,7 +776,7 @@ The logfile is reopened (for append) when the config file is reread, on SIGHUP. .TP .B use\-syslog: \fI -Sets unbound to send log messages to the syslogd, using +Sets Unbound to send log messages to the syslogd, using \fIsyslog\fR(3). The log facility LOG_DAEMON is used, with identity "unbound". The logfile setting is overridden when use\-syslog is turned on. @@ -786,7 +786,7 @@ The default is to log to syslog. If "" is given (default), then the name of the executable, usually "unbound" is used to report to the log. Enter a string to override it with that, which is useful on systems that run more than one instance of -unbound, with different configurations, so that the logs can be easily +Unbound, with different configurations, so that the logs can be easily distinguished against. .TP .B log\-time\-ascii: \fI @@ -874,12 +874,12 @@ with ascii_ prefix and then an ascii string. If enabled trustanchor.unbound queries are refused. .TP .B target\-fetch\-policy: \fI<"list of numbers"> -Set the target fetch policy used by unbound to determine if it should fetch +Set the target fetch policy used by Unbound to determine if it should fetch nameserver target addresses opportunistically. The policy is described per dependency depth. .IP The number of values determines the maximum dependency depth -that unbound will pursue in answering a query. +that Unbound will pursue in answering a query. A value of \-1 means to fetch all targets opportunistically for that dependency depth. A value of 0 means to fetch on demand only. A positive value fetches that many targets opportunistically. @@ -1030,7 +1030,7 @@ a little more CPU. Also if the cache is set to 0, it is no use. Default is no. .TP .B deny\-any: \fI If yes, deny queries of type ANY with an empty response. Default is no. -If disabled, unbound responds with a short list of resource records if some +If disabled, Unbound responds with a short list of resource records if some can be found in the cache and makes the upstream type ANY query if there are none. .TP @@ -1090,7 +1090,7 @@ File with trust anchor for one zone, which is tracked with RFC5011 probes. The probes are run several times per month, thus the machine must be online frequently. The initial file can be one with contents as described in \fBtrust\-anchor\-file\fR. The file is written to when the anchor is updated, -so the unbound user must have write permission. Write permission to the file, +so the Unbound user must have write permission. Write permission to the file, but also to the directory it is in (to create a temporary file, which is necessary to deal with filesystem full events), it must also be inside the chroot (if that is used). @@ -1176,7 +1176,7 @@ the verbosity setting. Default is 0, off. At 1, for every user query that fails a line is printed to the logs. This way you can monitor what happens with validation. Use a diagnosis tool, such as dig or drill, to find out why validation is failing for these queries. At 2, not only -the query that failed is printed but also the reason why unbound thought +the query that failed is printed but also the reason why Unbound thought it was wrong and which server sent the faulty data. .TP .B val\-permissive\-mode: \fI @@ -1188,15 +1188,15 @@ is set in replies. Also logging is performed as for full validation. The default value is "no". .TP .B ignore\-cd\-flag: \fI -Instruct unbound to ignore the CD flag from clients and refuse to +Instruct Unbound to ignore the CD flag from clients and refuse to return bogus answers to them. Thus, the CD (Checking Disabled) flag does not disable checking any more. This is useful if legacy (w2008) servers that set the CD flag but cannot validate DNSSEC themselves are -the clients, and then unbound provides them with DNSSEC protection. +the clients, and then Unbound provides them with DNSSEC protection. The default value is "no". .TP .B serve\-expired: \fI -If enabled, unbound attempts to serve old responses from cache with a +If enabled, Unbound attempts to serve old responses from cache with a TTL of \fBserve\-expired\-reply\-ttl\fR in the response without waiting for the actual resolution to finish. The actual resolution answer ends up in the cache later on. Default is "no". @@ -1227,14 +1227,14 @@ RFC 8767 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 +If enabled, Unbound will always return the original TTL as received from 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 +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 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. +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". @@ -1295,11 +1295,11 @@ or gigabytes (1024*1024 bytes in a megabyte). .TP .B unblock\-lan\-zones: \fI Default is disabled. If enabled, then for private address space, -the reverse lookups are no longer filtered. This allows unbound when +the reverse lookups are no longer filtered. This allows Unbound when running as dns service on a host where it provides service for that host, to put out all of the queries for the 'lan' upstream. When enabled, only localhost, 127.0.0.1 reverse and ::1 reverse zones are configured -with default local zones. Disable the option when unbound is running +with default local zones. Disable the option when Unbound is running as a (DHCP-) DNS network resolver for a group of machines, where such lookups should be filtered (RFC compliance), this also stops potential data leakage about the local network to the upstream DNS servers. @@ -1403,7 +1403,7 @@ Breaks out of that view and moves towards the global local zones for answer to the query. If the view first is no, it'll resolve normally. If view first is enabled, it'll break perform that step and check the global answers. For when the view has view specific overrides but some zone has to be -answered from global local zone contents. +answered from global local zone contents. .TP 10 \h'5'\fInodefault\fR Used to turn off default contents for AS112 zones. The other types @@ -1647,7 +1647,7 @@ query names, but not spoofed reflection floods. Cached responses are not ratelimited by this setting. The zone of the query is determined by examining the nameservers for it, the zone name is used to keep track of the rate. For example, 1000 may be a suitable value to stop the server from being -overloaded with random names, and keeps unbound from sending traffic to the +overloaded with random names, and keeps Unbound from sending traffic to the nameservers for those zones. .TP 5 .B ratelimit\-size: \fI @@ -1714,7 +1714,7 @@ and enter the cache, whilst also mitigating the traffic flow by the factor given. .TP 5 .B outbound\-msg\-retry: \fI -The number of retries unbound will do in case of a non positive response is +The number of retries Unbound will do in case of a non positive response is received. If a forward nameserver is used, this is the number of retries per forward nameserver in case of throwaway response. .TP 5 @@ -1747,7 +1747,7 @@ In the .B remote\-control: clause are the declarations for the remote control facility. If this is enabled, the \fIunbound\-control\fR(8) utility can be used to send -commands to the running unbound server. The server uses these clauses +commands to the running Unbound server. The server uses these clauses to setup TLSv1 security for the connection. The \fIunbound\-control\fR(8) utility also reads the \fBremote\-control\fR section for options. To setup the correct self\-signed certificates use the @@ -1767,7 +1767,7 @@ the server for the change to take effect. .IP If you set it to an absolute path, a local socket is used. The local socket does not use the certificates and keys, so those files need not be present. -To restrict access, unbound sets permissions on the file to the user and +To restrict access, Unbound sets permissions on the file to the user and group that is configured, the access bits are set to allow the group members to access the control socket file. Put users that need to access the socket in the that group. To restrict access further, create a directory to put @@ -1787,12 +1787,12 @@ and the value of this option is ignored. .B server\-key\-file: \fI Path to the server private key, by default unbound_server.key. This file is generated by the \fIunbound\-control\-setup\fR utility. -This file is used by the unbound server, but not by \fIunbound\-control\fR. +This file is used by the Unbound server, but not by \fIunbound\-control\fR. .TP 5 .B server\-cert\-file: \fI Path to the server self signed certificate, by default unbound_server.pem. This file is generated by the \fIunbound\-control\-setup\fR utility. -This file is used by the unbound server, and also by \fIunbound\-control\fR. +This file is used by the Unbound server, and also by \fIunbound\-control\fR. .TP 5 .B control\-key\-file: \fI Path to the control client private key, by default unbound_control.key. @@ -1810,24 +1810,24 @@ There may be multiple .B stub\-zone: clauses. Each with a name: and zero or more hostnames or IP addresses. For the stub zone this list of nameservers is used. Class IN is assumed. -The servers should be authority servers, not recursors; unbound performs +The servers should be authority servers, not recursors; Unbound performs the recursive processing itself for stub zones. .P The stub zone can be used to configure authoritative data to be used by the resolver that cannot be accessed using the public internet servers. This is useful for company\-local data or private zones. Setup an authoritative server on a different host (or different port). Enter a config -entry for unbound with +entry for Unbound with .B stub\-addr: . -The unbound resolver can then access the data, without referring to the +The Unbound resolver can then access the data, without referring to the public internet for it. .P This setup allows DNSSEC signed zones to be served by that authoritative server, in which case a trusted key entry with the public key -can be put in config, so that unbound can validate the data and set the AD +can be put in config, so that Unbound can validate the data and set the AD bit on replies for the private zone (authoritative servers do not set the -AD bit). This setup makes unbound capable of answering queries for the +AD bit). This setup makes Unbound capable of answering queries for the private zone, and can even set the AD bit ('authentic'), but the AA ('authoritative') bit is not set on these replies. .P @@ -1835,7 +1835,7 @@ Consider adding \fBserver:\fR statements for \fBdomain\-insecure:\fR and for \fBlocal\-zone:\fI name nodefault\fR for the zone if it is a locally served zone. The insecure clause stops DNSSEC from invalidating the zone. The local zone nodefault (or \fItransparent\fR) clause makes the -(reverse\-) zone bypass unbound's filtering of RFC1918 zones. +(reverse\-) zone bypass Unbound's filtering of RFC1918 zones. .TP .B name: \fI Name of the stub zone. This is the full domain name of the zone. @@ -1884,10 +1884,10 @@ clauses. Each with a \fBname:\fR and zero or more hostnames or IP addresses. For the forward zone this list of nameservers is used to forward the queries to. The servers listed as \fBforward\-host:\fR and \fBforward\-addr:\fR have to handle further recursion for the query. Thus, -those servers are not authority servers, but are (just like unbound is) -recursive servers too; unbound does not perform recursion itself for the +those servers are not authority servers, but are (just like Unbound is) +recursive servers too; Unbound does not perform recursion itself for the forward zone, it lets the remote server do it. Class IN is assumed. -CNAMEs are chased by unbound itself, asking the remote server for every +CNAMEs are chased by Unbound itself, asking the remote server for every name in the indirection chain, to protect the local cache from illegal indirect referenced items. A forward\-zone entry with name "." and a forward\-addr target will @@ -1913,7 +1913,7 @@ name is accepted. The cert must also match a CA from the tls\-cert\-bundle. .TP .B forward\-first: \fI If a forwarded query is met with a SERVFAIL error, and this option is -enabled, unbound will fall back to normal recursive resolution for this +enabled, Unbound will fall back to normal recursive resolution for this query as if no query forwarding had been specified. The default is "no". .TP .B forward\-tls\-upstream: \fI @@ -1939,7 +1939,7 @@ have a \fBname:\fR. There can be multiple ones, by listing multiple auth\-zone The authority zone with the name closest to the name looked up is used. Authority zones are processed after \fBlocal\-zones\fR and before cache (\fBfor\-downstream:\fR \fIyes\fR), and when used in this manner -make unbound respond like an authority server. Authority zones are also +make Unbound respond like an authority server. Authority zones are also processed after cache, just before going to the network to fetch information for recursion (\fBfor\-upstream:\fR \fIyes\fR), and when used in this manner provide a local copy of an authority server that speeds up @@ -2000,25 +2000,25 @@ file is downloaded when notified. The primaries from primary: statements are allowed notify by default. .TP .B fallback\-enabled: \fI -Default no. If enabled, unbound falls back to querying the internet as +Default no. If enabled, Unbound falls back to querying the internet as a resolver for this zone when lookups fail. For example for DNSSEC validation failures. .TP .B for\-downstream: \fI -Default yes. If enabled, unbound serves authority responses to -downstream clients for this zone. This option makes unbound behave, for +Default yes. If enabled, Unbound serves authority responses to +downstream clients for this zone. This option makes Unbound behave, for the queries with names in this zone, like one of the authority servers for -that zone. Turn it off if you want unbound to provide recursion for the +that zone. Turn it off if you want Unbound to provide recursion for the zone but have a local copy of zone data. If for\-downstream is no and -for\-upstream is yes, then unbound will DNSSEC validate the contents of the +for\-upstream is yes, then Unbound will DNSSEC validate the contents of the zone before serving the zone contents to clients and store validation results in the cache. .TP .B for\-upstream: \fI -Default yes. If enabled, unbound fetches data from this data collection +Default yes. If enabled, Unbound fetches data from this data collection for answering recursion queries. Instead of sending queries over the internet to the authority servers for this zone, it'll fetch the data directly from -the zone data. Turn it on when you want unbound to provide recursion for +the zone data. Turn it on when you want Unbound to provide recursion for downstream clients, and use the zone data as a local copy to speed up lookups. .TP .B zonemd\-check: \fI @@ -2042,14 +2042,14 @@ a ZONEMD is always a failure, also for nonDNSSEC signed zones. .TP .B zonefile: \fI The filename where the zone is stored. If not given then no zonefile is used. -If the file does not exist or is empty, unbound will attempt to fetch zone +If the file does not exist or is empty, Unbound will attempt to fetch zone data (eg. from the primary servers). .SS "View Options" .LP There may be multiple .B view: clauses. Each with a \fBname:\fR and zero or more \fBlocal\-zone\fR and -\fBlocal\-data\fR elements. Views can also contain view\-first, +\fBlocal\-data\fR elements. Views can also contain view\-first, response\-ip, response\-ip\-data and local\-data\-ptr elements. View can be mapped to requests by specifying the view name in an \fBaccess\-control\-view\fR element. Options from matching @@ -2142,9 +2142,9 @@ underneath the name given. The .B dnscrypt: clause gives the settings of the dnscrypt channel. While those options are -available, they are only meaningful if unbound was compiled with +available, they are only meaningful if Unbound was compiled with \fB\-\-enable\-dnscrypt\fR. -Currently certificate and secret/public keys cannot be generated by unbound. +Currently certificate and secret/public keys cannot be generated by Unbound. You can use dnscrypt-wrapper to generate those: https://github.com/cofyc/\ dnscrypt-wrapper/blob/master/README.md#usage .TP @@ -2263,7 +2263,7 @@ of 0 is always accepted. Default is 0. .TP .B min\-client\-subnet\-ipv4: \fI\fR Specifies the minimum prefix length of the IPv4 source mask we are willing to -accept in queries. Shorter source masks result in REFUSED answers. Source mask +accept in queries. Shorter source masks result in REFUSED answers. Source mask of 0 is always accepted. Default is 0. .TP .B max\-ecs\-tree\-size\-ipv4: \fI\fR @@ -2276,12 +2276,13 @@ This number applies for each qname/qclass/qtype tuple. Defaults to 100. .SS "Opportunistic IPsec Support Module Options" .LP The IPsec module must be configured in the \fBmodule\-config:\fR "ipsecmod -validator iterator" directive and be compiled into the daemon to be -enabled. These settings go in the \fBserver:\fR section. +validator iterator" directive and be compiled into Unbound by using +\fB\-\-enable\-ipsecmod\fR to be enabled. +These settings go in the \fBserver:\fR section. .LP -When unbound receives an A/AAAA query that is not in the cache and finds a +When Unbound receives an A/AAAA query that is not in the cache and finds a valid answer, it will withhold returning the answer and instead will generate -an IPSECKEY subquery for the same domain name. If an answer was found, unbound +an IPSECKEY subquery for the same domain name. If an answer was found, Unbound will call an external hook passing the following arguments: .TP 10 \h'5'\fIQNAME\fR @@ -2310,19 +2311,19 @@ relevant for opportunistic IPsec. .B ipsecmod-enabled: \fI\fR Specifies whether the IPsec module is enabled or not. The IPsec module still needs to be defined in the \fBmodule\-config:\fR directive. This option -facilitates turning on/off the module without restarting/reloading unbound. +facilitates turning on/off the module without restarting/reloading Unbound. Defaults to yes. .TP .B ipsecmod\-hook: \fI\fR -Specifies the external hook that unbound will call with \fIsystem\fR(3). The +Specifies the external hook that Unbound will call with \fIsystem\fR(3). The file can be specified as an absolute/relative path. The file needs the proper -permissions to be able to be executed by the same user that runs unbound. It +permissions to be able to be executed by the same user that runs Unbound. It must be present when the IPsec module is defined in the \fBmodule\-config:\fR directive. .TP .B ipsecmod-strict: \fI\fR -If enabled unbound requires the external hook to return a success value of 0. -Failing to do so unbound will reply with SERVFAIL. The A/AAAA answer will also +If enabled Unbound requires the external hook to return a success value of 0. +Failing to do so Unbound will reply with SERVFAIL. The A/AAAA answer will also not be cached. Defaults to no. .TP .B ipsecmod\-max-ttl: \fI\fR @@ -2330,7 +2331,7 @@ Time to live maximum for A/AAAA cached records after calling the external hook. Defaults to 3600. .TP .B ipsecmod-ignore-bogus: \fI\fR -Specifies the behaviour of unbound when the IPSECKEY answer is bogus. If set +Specifies the behaviour of Unbound when the IPSECKEY answer is bogus. If set to yes, the hook will be called and the A/AAAA answer will be returned to the client. If set to no, the hook will not be called and the answer to the A/AAAA query will be SERVFAIL. Mainly used for testing. Defaults to no. @@ -2357,7 +2358,7 @@ If Unbound cannot even find an answer in the backend, it resolves the query as usual, and stores the answer in the backend. .P This module interacts with the \fBserve\-expired\-*\fR options and will reply -with expired data if unbound is configured for that. Currently the use +with expired data if Unbound is configured for that. Currently the use of \fBserve\-expired\-client\-timeout:\fR and \fBserve\-expired\-reply\-ttl:\fR is not consistent for data originating from the external cache as these will result in a reply with 0 TTL without trying to @@ -2436,16 +2437,17 @@ re-establish a new connection later. This option defaults to 100 milliseconds. .TP .B redis-expire-records: \fI -If Redis record expiration is enabled. If yes, unbound sets timeout for Redis +If Redis record expiration is enabled. If yes, Unbound sets timeout for Redis records so that Redis can evict keys that have expired automatically. If -unbound is configured with \fBserve-expired\fR and \fBserve-expired-ttl\fR is 0, +Unbound is configured with \fBserve-expired\fR and \fBserve-expired-ttl\fR is 0, this option is internally reverted to "no". Redis SETEX support is required for this option (Redis >= 2.0.0). This option defaults to no. .SS DNSTAP Logging Options -DNSTAP support, when compiled in, is enabled in the \fBdnstap:\fR section. +DNSTAP support, when compiled in by using \fB\-\-enable\-dnstap\fR, is enabled +in the \fBdnstap:\fR section. This starts an extra thread (when compiled with threading) that writes -the log information to the destination. If unbound is compiled without +the log information to the destination. If Unbound is compiled without threading it does not spawn a thread, but connects per-process to the destination. .TP @@ -2503,19 +2505,19 @@ Default is "". .TP .B dnstap-log-resolver-query-messages: \fI Enable to log resolver query messages. Default is no. -These are messages from unbound to upstream servers. +These are messages from Unbound to upstream servers. .TP .B dnstap-log-resolver-response-messages: \fI Enable to log resolver response messages. Default is no. -These are replies from upstream servers to unbound. +These are replies from upstream servers to Unbound. .TP .B dnstap-log-client-query-messages: \fI Enable to log client query messages. Default is no. -These are client queries to unbound. +These are client queries to Unbound. .TP .B dnstap-log-client-response-messages: \fI Enable to log client response messages. Default is no. -These are responses from unbound to clients. +These are responses from Unbound to clients. .TP .B dnstap-log-forwarder-query-messages: \fI Enable to log forwarder query messages. Default is no. @@ -2614,7 +2616,7 @@ allowed notify by default. .TP .B zonefile: \fI The filename where the zone is stored. If not given then no zonefile is used. -If the file does not exist or is empty, unbound will attempt to fetch zone +If the file does not exist or is empty, Unbound will attempt to fetch zone data (eg. from the primary servers). .TP .B rpz\-action\-override: \fI @@ -2671,7 +2673,7 @@ server: .SH "FILES" .TP .I @UNBOUND_RUN_DIR@ -default unbound working directory. +default Unbound working directory. .TP .I @UNBOUND_CHROOT_DIR@ default @@ -2679,13 +2681,13 @@ default location. .TP .I @ub_conf_file@ -unbound configuration file. +Unbound configuration file. .TP .I @UNBOUND_PIDFILE@ -default unbound pidfile with process ID of the running daemon. +default Unbound pidfile with process ID of the running daemon. .TP .I unbound.log -unbound log file. default is to log to +Unbound log file. default is to log to \fIsyslog\fR(3). .SH "SEE ALSO" \fIunbound\fR(8), From 65113ac7758018eb58e8dc863714b5e6bc422aa2 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Mon, 20 Dec 2021 11:35:31 +0100 Subject: [PATCH 453/553] - Fix #591: Unbound-anchor manpage links to non-existent license file. --- doc/Changelog | 3 +++ doc/unbound-anchor.8.in | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index a989f5cc2..3dc60ab48 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +20 December 2021: George + - Fix #591: Unbound-anchor manpage links to non-existent license file. + 13 December 2021: George - Add missing configure flags for optional features in the documentation. diff --git a/doc/unbound-anchor.8.in b/doc/unbound-anchor.8.in index dea113e4a..31c4e9113 100644 --- a/doc/unbound-anchor.8.in +++ b/doc/unbound-anchor.8.in @@ -159,7 +159,7 @@ Or something more suitable for your operational environment. The root keys and update certificate included in this tool are provided for convenience and under the terms of our license (see the LICENSE file in the source distribution or -http://unbound.nlnetlabs.nl/svn/trunk/LICENSE) and might be stale or +https://github.com/NLnetLabs/unbound/blob/master/LICENSE) and might be stale or not suitable to your purpose. .P By running "unbound\-anchor \-l" the keys and certificate that are From 4e492725e1764c579ef3bef2bbcddffc5159629f Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Wed, 22 Dec 2021 15:02:44 +0100 Subject: [PATCH 454/553] - contrib/aaaa-filter-iterator.patch file renewed diff content to apply cleanly to the current coderepo for the current code version. --- contrib/aaaa-filter-iterator.patch | 90 +++++++++++++++--------------- doc/Changelog | 4 ++ 2 files changed, 49 insertions(+), 45 deletions(-) diff --git a/contrib/aaaa-filter-iterator.patch b/contrib/aaaa-filter-iterator.patch index f51de2a40..818b73a11 100644 --- a/contrib/aaaa-filter-iterator.patch +++ b/contrib/aaaa-filter-iterator.patch @@ -1,8 +1,8 @@ diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in -index f426ac5f..147fbfa9 100644 +index 50f9224..09456f5 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in -@@ -872,6 +872,13 @@ potentially broken nameservers. A lot of domains will not be resolvable when +@@ -970,6 +970,13 @@ potentially broken nameservers. A lot of domains will not be resolvable when this option in enabled. Only use if you know what you are doing. This option only has effect when qname-minimisation is enabled. Default is no. .TP @@ -17,14 +17,13 @@ index f426ac5f..147fbfa9 100644 Aggressive NSEC uses the DNSSEC NSEC chain to synthesize NXDOMAIN and other denials, using information from previous NXDOMAINs answers. diff --git a/iterator/iter_scrub.c b/iterator/iter_scrub.c -index aae934dd..55c55de0 100644 +index f093c1b..e55a224 100644 --- a/iterator/iter_scrub.c +++ b/iterator/iter_scrub.c -@@ -667,6 +667,32 @@ static int sanitize_nsec_is_overreach(struct rrset_parse* rrset, - return 0; +@@ -680,6 +680,32 @@ static int sanitize_nsec_is_overreach(sldns_buffer* pkt, } -+/** + /** + * ASN: Lookup A records from rrset cache. + * @param qinfo: the question originally asked. + * @param env: module environment with config and cache. @@ -50,10 +49,11 @@ index aae934dd..55c55de0 100644 + return 0; +} + - /** ++/** * Given a response event, remove suspect RRsets from the response. * "Suspect" rrsets are potentially poison. Note that this routine expects -@@ -686,6 +712,7 @@ scrub_sanitize(sldns_buffer* pkt, struct msg_parse* msg, + * the response to be in a "normalized" state -- that is, all "irrelevant" +@@ -698,6 +724,7 @@ scrub_sanitize(sldns_buffer* pkt, struct msg_parse* msg, struct query_info* qinfo, uint8_t* zonename, struct module_env* env, struct iter_env* ie) { @@ -61,7 +61,7 @@ index aae934dd..55c55de0 100644 int del_addi = 0; /* if additional-holding rrsets are deleted, we do not trust the normalized additional-A-AAAA any more */ struct rrset_parse* rrset, *prev; -@@ -721,6 +748,13 @@ scrub_sanitize(sldns_buffer* pkt, struct msg_parse* msg, +@@ -733,6 +760,13 @@ scrub_sanitize(sldns_buffer* pkt, struct msg_parse* msg, rrset = rrset->rrset_all_next; } @@ -75,7 +75,7 @@ index aae934dd..55c55de0 100644 /* At this point, we brutally remove ALL rrsets that aren't * children of the originating zone. The idea here is that, * as far as we know, the server that we contacted is ONLY -@@ -732,6 +766,24 @@ scrub_sanitize(sldns_buffer* pkt, struct msg_parse* msg, +@@ -744,6 +778,24 @@ scrub_sanitize(sldns_buffer* pkt, struct msg_parse* msg, rrset = msg->rrset_first; while(rrset) { @@ -101,22 +101,22 @@ index aae934dd..55c55de0 100644 if( (rrset->type == LDNS_RR_TYPE_A || rrset->type == LDNS_RR_TYPE_AAAA)) { diff --git a/iterator/iter_utils.c b/iterator/iter_utils.c -index 7bc67da6..e10f547a 100644 +index 2482a1f..bd5ba24 100644 --- a/iterator/iter_utils.c +++ b/iterator/iter_utils.c -@@ -175,6 +175,7 @@ iter_apply_cfg(struct iter_env* iter_env, struct config_file* cfg) - } +@@ -177,6 +177,7 @@ iter_apply_cfg(struct iter_env* iter_env, struct config_file* cfg) iter_env->supports_ipv6 = cfg->do_ip6; iter_env->supports_ipv4 = cfg->do_ip4; + iter_env->outbound_msg_retry = cfg->outbound_msg_retry; + iter_env->aaaa_filter = cfg->aaaa_filter; return 1; } diff --git a/iterator/iterator.c b/iterator/iterator.c -index 23b07ea9..ca29b48c 100644 +index 48238a2..34ba249 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c -@@ -2127,6 +2127,53 @@ processDSNSFind(struct module_qstate* qstate, struct iter_qstate* iq, int id) +@@ -2184,6 +2184,53 @@ processDSNSFind(struct module_qstate* qstate, struct iter_qstate* iq, int id) return 0; } @@ -170,7 +170,7 @@ index 23b07ea9..ca29b48c 100644 /** * This is the request event state where the request will be sent to one of -@@ -2186,6 +2233,13 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, +@@ -2243,6 +2290,13 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, return error_response(qstate, id, LDNS_RCODE_SERVFAIL); } @@ -184,7 +184,7 @@ index 23b07ea9..ca29b48c 100644 /* Make sure we have a delegation point, otherwise priming failed * or another failure occurred */ if(!iq->dp) { -@@ -3574,6 +3628,61 @@ processFinished(struct module_qstate* qstate, struct iter_qstate* iq, +@@ -3688,6 +3742,61 @@ processFinished(struct module_qstate* qstate, struct iter_qstate* iq, return 0; } @@ -246,7 +246,7 @@ index 23b07ea9..ca29b48c 100644 /* * Return priming query results to interested super querystates. * -@@ -3593,6 +3702,9 @@ iter_inform_super(struct module_qstate* qstate, int id, +@@ -3707,6 +3816,9 @@ iter_inform_super(struct module_qstate* qstate, int id, else if(super->qinfo.qtype == LDNS_RR_TYPE_DS && ((struct iter_qstate*) super->minfo[id])->state == DSNS_FIND_STATE) processDSNSResponse(qstate, id, super); @@ -256,7 +256,7 @@ index 23b07ea9..ca29b48c 100644 else if(qstate->return_rcode != LDNS_RCODE_NOERROR) error_supers(qstate, id, super); else if(qstate->is_priming) -@@ -3630,6 +3742,9 @@ iter_handle(struct module_qstate* qstate, struct iter_qstate* iq, +@@ -3744,6 +3856,9 @@ iter_handle(struct module_qstate* qstate, struct iter_qstate* iq, case INIT_REQUEST_3_STATE: cont = processInitRequest3(qstate, iq, id); break; @@ -266,7 +266,7 @@ index 23b07ea9..ca29b48c 100644 case QUERYTARGETS_STATE: cont = processQueryTargets(qstate, iq, ie, id); break; -@@ -3961,6 +4076,8 @@ iter_state_to_string(enum iter_state state) +@@ -4080,6 +4195,8 @@ iter_state_to_string(enum iter_state state) return "INIT REQUEST STATE (stage 2)"; case INIT_REQUEST_3_STATE: return "INIT REQUEST STATE (stage 3)"; @@ -275,7 +275,7 @@ index 23b07ea9..ca29b48c 100644 case QUERYTARGETS_STATE : return "QUERY TARGETS STATE"; case PRIME_RESP_STATE : -@@ -3985,6 +4102,7 @@ iter_state_is_responsestate(enum iter_state s) +@@ -4104,6 +4221,7 @@ iter_state_is_responsestate(enum iter_state s) case INIT_REQUEST_STATE : case INIT_REQUEST_2_STATE : case INIT_REQUEST_3_STATE : @@ -284,10 +284,10 @@ index 23b07ea9..ca29b48c 100644 case COLLECT_CLASS_STATE : return 0; diff --git a/iterator/iterator.h b/iterator/iterator.h -index 342ac207..731948d1 100644 +index a9e5856..ace68c6 100644 --- a/iterator/iterator.h +++ b/iterator/iterator.h -@@ -135,6 +135,9 @@ struct iter_env { +@@ -133,6 +133,9 @@ struct iter_env { */ int* target_fetch_policy; @@ -297,11 +297,10 @@ index 342ac207..731948d1 100644 /** lock on ratelimit counter */ lock_basic_type queries_ratelimit_lock; /** number of queries that have been ratelimited */ -@@ -186,6 +189,14 @@ enum iter_state { - */ +@@ -188,6 +191,14 @@ enum iter_state { INIT_REQUEST_3_STATE, -+ /** + /** + * This state is responsible for intercepting AAAA queries, + * and launch a A subquery on the same target, to populate the + * cache with A records, so the AAAA filter scrubbing logic can @@ -309,10 +308,11 @@ index 342ac207..731948d1 100644 + */ + ASN_FETCH_A_FOR_AAAA_STATE, + - /** ++ /** * Each time a delegation point changes for a given query or a * query times out and/or wakes up, this state is (re)visited. -@@ -375,6 +386,13 @@ struct iter_qstate { + * This state is responsible for iterating through a list of +@@ -376,6 +387,13 @@ struct iter_qstate { */ int refetch_glue; @@ -327,10 +327,10 @@ index 342ac207..731948d1 100644 struct outbound_list outlist; diff --git a/pythonmod/interface.i b/pythonmod/interface.i -index f08b575d..47f1bb2e 100644 +index 03483ab..a8c30b5 100644 --- a/pythonmod/interface.i +++ b/pythonmod/interface.i -@@ -975,6 +975,7 @@ struct config_file { +@@ -994,6 +994,7 @@ struct config_file { int harden_dnssec_stripped; int harden_referral_path; int use_caps_bits_for_id; @@ -339,10 +339,10 @@ index f08b575d..47f1bb2e 100644 struct config_strlist* private_domain; size_t unwanted_threshold; diff --git a/util/config_file.c b/util/config_file.c -index 0ab8614a..729fb147 100644 +index 39050f5..326b0b9 100644 --- a/util/config_file.c +++ b/util/config_file.c -@@ -218,6 +218,7 @@ config_create(void) +@@ -231,6 +231,7 @@ config_create(void) cfg->harden_referral_path = 0; cfg->harden_algo_downgrade = 0; cfg->use_caps_bits_for_id = 0; @@ -351,10 +351,10 @@ index 0ab8614a..729fb147 100644 cfg->private_address = NULL; cfg->private_domain = NULL; diff --git a/util/config_file.h b/util/config_file.h -index e61257a3..dabaa7bb 100644 +index 18910be..bd59144 100644 --- a/util/config_file.h +++ b/util/config_file.h -@@ -260,6 +260,8 @@ struct config_file { +@@ -285,6 +285,8 @@ struct config_file { int harden_algo_downgrade; /** use 0x20 bits in query as random ID bits */ int use_caps_bits_for_id; @@ -364,38 +364,38 @@ index e61257a3..dabaa7bb 100644 struct config_strlist* caps_whitelist; /** strip away these private addrs from answers, no DNS Rebinding */ diff --git a/util/configlexer.lex b/util/configlexer.lex -index 79a0edca..4eaec678 100644 +index 71da924..b58b4b6 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex -@@ -304,6 +304,7 @@ harden-algo-downgrade{COLON} { YDVAR(1, VAR_HARDEN_ALGO_DOWNGRADE) } - use-caps-for-id{COLON} { YDVAR(1, VAR_USE_CAPS_FOR_ID) } +@@ -317,6 +317,7 @@ use-caps-for-id{COLON} { YDVAR(1, VAR_USE_CAPS_FOR_ID) } caps-whitelist{COLON} { YDVAR(1, VAR_CAPS_WHITELIST) } + caps-exempt{COLON} { YDVAR(1, VAR_CAPS_WHITELIST) } unwanted-reply-threshold{COLON} { YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) } +aaaa-filter{COLON} { YDVAR(1, VAR_AAAA_FILTER) } private-address{COLON} { YDVAR(1, VAR_PRIVATE_ADDRESS) } private-domain{COLON} { YDVAR(1, VAR_PRIVATE_DOMAIN) } prefetch-key{COLON} { YDVAR(1, VAR_PREFETCH_KEY) } diff --git a/util/configparser.y b/util/configparser.y -index 1d0e8658..f284dd43 100644 +index 1daf853..cd39618 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -97,6 +97,7 @@ extern struct config_parser_state* cfg_parser; - %token VAR_STATISTICS_CUMULATIVE VAR_OUTGOING_PORT_PERMIT + %token VAR_STATISTICS_CUMULATIVE VAR_OUTGOING_PORT_PERMIT %token VAR_OUTGOING_PORT_AVOID VAR_DLV_ANCHOR_FILE VAR_DLV_ANCHOR %token VAR_NEG_CACHE_SIZE VAR_HARDEN_REFERRAL_PATH VAR_PRIVATE_ADDRESS +%token VAR_AAAA_FILTER %token VAR_PRIVATE_DOMAIN VAR_REMOTE_CONTROL VAR_CONTROL_ENABLE %token VAR_CONTROL_INTERFACE VAR_CONTROL_PORT VAR_SERVER_KEY_FILE %token VAR_SERVER_CERT_FILE VAR_CONTROL_KEY_FILE VAR_CONTROL_CERT_FILE -@@ -233,6 +234,7 @@ content_server: server_num_threads | server_verbosity | server_port | +@@ -245,6 +246,7 @@ content_server: server_num_threads | server_verbosity | server_port | server_dlv_anchor_file | server_dlv_anchor | server_neg_cache_size | server_harden_referral_path | server_private_address | - server_private_domain | server_extended_statistics | + server_private_domain | server_extended_statistics | + server_aaaa_filter | - server_local_data_ptr | server_jostle_timeout | - server_unwanted_reply_threshold | server_log_time_ascii | - server_domain_insecure | server_val_sig_skew_min | -@@ -1563,6 +1565,15 @@ server_caps_whitelist: VAR_CAPS_WHITELIST STRING_ARG + server_local_data_ptr | server_jostle_timeout | + server_unwanted_reply_threshold | server_log_time_ascii | + server_domain_insecure | server_val_sig_skew_min | +@@ -1742,6 +1744,15 @@ server_caps_whitelist: VAR_CAPS_WHITELIST STRING_ARG yyerror("out of memory"); } ; diff --git a/doc/Changelog b/doc/Changelog index 3dc60ab48..a69cf06b7 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +22 December 2021: George + - contrib/aaaa-filter-iterator.patch file renewed diff content to + apply cleanly to the current coderepo for the current code version. + 20 December 2021: George - Fix #591: Unbound-anchor manpage links to non-existent license file. From 392c1f0f5495cb0cc1170e126945caa7e988f47d Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 4 Jan 2022 13:40:07 +0100 Subject: [PATCH 455/553] - Fix #596: unset the RA bit when a query is blocked by an unbound RPZ nxdomain reply. The option rpz-signal-nxdomain-ra allows to signal that a domain is externally blocked to clients when it is blocked with NXDOMAIN by unsetting RA. --- doc/Changelog | 6 + doc/example.conf.in | 1 + doc/unbound.conf.5.in | 5 + services/rpz.c | 11 +- services/rpz.h | 2 + util/config_file.h | 2 + util/configlexer.c | 5113 +++++++++++++++++++++-------------------- util/configlexer.lex | 1 + util/configparser.c | 3550 ++++++++++++++-------------- util/configparser.h | 6 +- util/configparser.y | 12 +- 11 files changed, 4392 insertions(+), 4317 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index a69cf06b7..cdbaf47c2 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,9 @@ +4 January 2022: Wouter + - Fix #596: unset the RA bit when a query is blocked by an unbound + RPZ nxdomain reply. The option rpz-signal-nxdomain-ra allows to + signal that a domain is externally blocked to clients when it + is blocked with NXDOMAIN by unsetting RA. + 22 December 2021: George - contrib/aaaa-filter-iterator.patch file renewed diff content to apply cleanly to the current coderepo for the current code version. diff --git a/doc/example.conf.in b/doc/example.conf.in index 6a4e812c2..4f4599db2 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -1179,4 +1179,5 @@ remote-control: # rpz-cname-override: www.example.org # rpz-log: yes # rpz-log-name: "example policy" +# rpz-signal-nxdomain-ra: no # tags: "example" diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 50f922405..1c9ec9ddb 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -2633,6 +2633,11 @@ Log all applied RPZ actions for this RPZ zone. Default is no. .B rpz\-log\-name: \fI Specify a string to be part of the log line, for easy referencing. .TP +.B rpz\-signal\-nxdomain\-ra: \fI +Signal when a query is blocked by the RPZ with NXDOMAIN with an unset RA flag. +This allows certain clients, like dnsmasq, to infer that the domain is +externally blocked. Default is no. +.TP .B tags: \fI Limit the policies from this RPZ clause to clients with a matching tag. Tags need to be defined in \fBdefine\-tag\fR and can be assigned to client addresses diff --git a/services/rpz.c b/services/rpz.c index 501817610..cb05b830c 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -542,6 +542,7 @@ rpz_create(struct config_auth* p) } } r->log = p->rpz_log; + r->signal_nxdomain_ra = p->rpz_signal_nxdomain_ra; if(p->rpz_log_name) { if(!(r->log_name = strdup(p->rpz_log_name))) { log_err("malloc failure on RPZ log_name strdup"); @@ -1715,14 +1716,18 @@ rpz_synthesize_nodata(struct rpz* ATTR_UNUSED(r), struct module_qstate* ms, } static inline struct dns_msg* -rpz_synthesize_nxdomain(struct rpz* ATTR_UNUSED(r), struct module_qstate* ms, +rpz_synthesize_nxdomain(struct rpz* r, struct module_qstate* ms, struct query_info* qinfo, struct auth_zone* az) { struct dns_msg* msg = rpz_dns_msg_new(ms->region); + uint16_t flags; if(msg == NULL) { return msg; } msg->qinfo = *qinfo; + flags = LDNS_RCODE_NXDOMAIN | BIT_RD | BIT_QR | BIT_AA | BIT_RA; + if(r->signal_nxdomain_ra) + flags &= ~BIT_RA; msg->rep = construct_reply_info_base(ms->region, - LDNS_RCODE_NXDOMAIN | BIT_RD | BIT_QR | BIT_AA | BIT_RA, + flags, 1, /* qd */ 0, /* ttl */ 0, /* prettl */ @@ -1922,6 +1927,8 @@ rpz_synthesize_qname_localdata(struct module_env* env, struct rpz* r, ret = local_zones_zone_answer(z, env, qinfo, edns, repinfo, buf, temp, 0 /* no local data used */, lzt); + if(r->signal_nxdomain_ra) + LDNS_RA_CLR(sldns_buffer_begin(buf)); if(r->log) { log_rpz_apply("qname", z->name, NULL, localzone_type_to_rpz_action(lzt), qinfo, repinfo, NULL, r->log_name); diff --git a/services/rpz.h b/services/rpz.h index 691475743..c29d30dff 100644 --- a/services/rpz.h +++ b/services/rpz.h @@ -123,6 +123,8 @@ struct rpz { struct ub_packed_rrset_key* cname_override; int log; char* log_name; + /** signal NXDOMAIN blocked with unset RA flag */ + int signal_nxdomain_ra; struct regional* region; int disabled; }; diff --git a/util/config_file.h b/util/config_file.h index 18910bee3..cd1b3c99f 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -745,6 +745,8 @@ struct config_auth { /** Always reply with this CNAME target if the cname override action is * used */ char* rpz_cname; + /** signal nxdomain block with unset RA */ + int rpz_signal_nxdomain_ra; /** Check ZONEMD records for this zone */ int zonemd_check; /** Reject absence of ZONEMD records, zone must have one */ diff --git a/util/configlexer.c b/util/configlexer.c index 015df164c..2763dd3ac 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -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 355 -#define YY_END_OF_BUFFER 356 +#define YY_NUM_RULES 356 +#define YY_END_OF_BUFFER 357 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -363,396 +363,398 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[3524] = +static const flex_int16_t yy_accept[3543] = { 0, - 1, 1, 329, 329, 333, 333, 337, 337, 341, 341, - 1, 1, 345, 345, 349, 349, 356, 353, 1, 327, - 327, 354, 2, 354, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 329, 330, 330, 331, - 354, 333, 334, 334, 335, 354, 340, 337, 338, 338, - 339, 354, 341, 342, 342, 343, 354, 352, 328, 2, - 332, 354, 352, 348, 345, 346, 346, 347, 354, 349, - 350, 350, 351, 354, 353, 0, 1, 2, 2, 2, - 2, 353, 353, 353, 353, 353, 353, 353, 353, 353, + 1, 1, 330, 330, 334, 334, 338, 338, 342, 342, + 1, 1, 346, 346, 350, 350, 357, 354, 1, 328, + 328, 355, 2, 355, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 330, 331, 331, 332, + 355, 334, 335, 335, 336, 355, 341, 338, 339, 339, + 340, 355, 342, 343, 343, 344, 355, 353, 329, 2, + 333, 355, 353, 349, 346, 347, 347, 348, 355, 350, + 351, 351, 352, 355, 354, 0, 1, 2, 2, 2, + 2, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 329, - 0, 333, 0, 340, 0, 337, 341, 0, 352, 0, - 2, 2, 352, 348, 0, 345, 349, 0, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 330, + 0, 334, 0, 341, 0, 338, 342, 0, 353, 0, + 2, 2, 353, 349, 0, 346, 350, 0, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 352, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 353, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 130, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 139, 353, 353, 353, 353, 353, 353, 353, 352, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 130, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 140, 354, 354, 354, 354, 354, 354, 354, 353, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 112, 353, - 326, 353, 353, 353, 353, 353, 353, 353, 353, 8, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 112, 354, + 327, 354, 354, 354, 354, 354, 354, 354, 354, 8, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 131, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 144, 353, 353, 352, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 131, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 145, 354, 354, 353, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 319, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 320, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 352, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 67, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 250, 353, 14, 15, 353, - 19, 18, 353, 353, 234, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 353, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 67, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 251, 354, 14, + 15, 354, 19, 18, 354, 354, 235, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 137, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 232, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 3, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 138, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 233, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 3, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 352, 353, 353, 353, 353, 353, - 353, 353, 313, 353, 353, 312, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 336, 353, 353, 353, 353, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 353, 354, 354, + 354, 354, 354, 354, 354, 314, 354, 354, 313, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 337, 354, - 353, 353, 353, 353, 66, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 70, 353, 282, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 320, 321, 353, 353, 353, 353, 353, - 353, 353, 353, 71, 353, 353, 138, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 134, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 221, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 21, 353, 353, 353, 353, 353, + 354, 354, 354, 354, 354, 354, 354, 66, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 70, 354, 283, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 321, 322, 354, 354, + 354, 354, 354, 354, 354, 354, 71, 354, 354, 139, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 134, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 222, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 21, 354, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 164, 353, 353, 353, - 353, 353, 352, 336, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 110, 353, 353, 353, 353, - 353, 353, 353, 290, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 190, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 165, 354, 354, 354, 354, 354, 353, 337, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 110, + 354, 354, 354, 354, 354, 354, 354, 291, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 191, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 163, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 109, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 35, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 164, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 109, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 35, 354, 354, 354, 354, 354, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 36, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 68, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 136, - 353, 353, 353, 352, 353, 353, 353, 353, 353, 129, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 69, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 254, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 191, 353, 353, 353, 353, 353, 353, 353, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 36, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 68, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 137, 354, 354, 354, 353, 354, + 354, 354, 354, 354, 129, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 69, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 255, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 192, 354, 354, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 57, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 272, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 57, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 273, 354, 354, 354, 354, 354, 354, - 353, 353, 353, 353, 353, 353, 353, 353, 61, 353, - 62, 353, 353, 353, 353, 353, 113, 353, 114, 353, - 353, 353, 353, 353, 111, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 7, 353, 353, - 353, 353, 352, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 243, 353, 353, 353, 353, 167, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 61, 354, 62, 354, 354, 354, + 354, 354, 113, 354, 114, 354, 354, 354, 354, 354, + 111, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 7, 354, 354, 354, 354, 353, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 244, 354, 354, + 354, 354, 168, 354, 354, 354, 354, 354, 354, 354, - 353, 353, 353, 255, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 48, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 58, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 213, 353, - 212, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 256, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 48, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 58, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 214, 354, 213, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 353, 16, 17, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 72, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 220, - 353, 353, 353, 353, 353, 353, 116, 353, 115, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 204, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 145, 353, 353, 353, 352, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 104, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 92, + 354, 354, 354, 354, 354, 354, 354, 16, 17, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 72, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 221, 354, 354, 354, + 354, 354, 354, 116, 354, 115, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 205, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 146, 354, 354, 354, 353, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 104, 354, 354, 354, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 233, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 97, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 65, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 207, 208, - 353, 353, 353, 284, 353, 353, 353, 353, 353, 353, + 354, 354, 354, 354, 354, 354, 92, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 234, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 97, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 65, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 208, 209, 354, 354, 354, - 353, 353, 353, 353, 353, 353, 353, 6, 353, 353, - 353, 353, 353, 353, 353, 303, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 288, 353, 353, 353, 353, 353, 353, - 314, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 45, 353, 353, 353, 353, - 47, 353, 353, 353, 93, 353, 353, 353, 353, 353, - 55, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 352, 353, 200, 353, 353, 353, 140, 353, + 285, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 6, 354, 354, 354, 354, 354, + 354, 354, 304, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 289, 354, 354, 354, 354, 354, 354, 354, 315, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 45, 354, 354, 354, 354, 47, 354, + 354, 354, 93, 354, 354, 354, 354, 354, 55, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 225, - 353, 201, 353, 353, 353, 240, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 56, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 142, 122, 353, - 123, 353, 353, 353, 353, 121, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 160, 353, 353, 53, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 271, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 202, 353, 353, 353, + 353, 354, 201, 354, 354, 354, 141, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 226, 354, 202, + 354, 354, 354, 241, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 56, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 143, 122, 354, 123, 354, + 354, 354, 354, 121, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 161, 354, 354, 53, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 272, 354, 354, 354, 354, 354, - 353, 353, 205, 353, 211, 353, 353, 353, 353, 353, - 353, 239, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 108, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 135, 353, - 353, 353, 353, 353, 353, 353, 63, 353, 353, 353, - 29, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 20, 353, 353, 353, 353, 353, 353, - 30, 39, 353, 172, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 198, 353, + 354, 354, 354, 354, 203, 354, 354, 354, 354, 354, + 206, 354, 212, 354, 354, 354, 354, 354, 354, 240, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 108, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 135, 354, 354, 354, + 354, 354, 354, 354, 354, 63, 354, 354, 354, 29, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 20, 354, 354, 354, 354, 354, 354, 30, + 39, 354, 173, 354, 354, 354, 354, 354, 354, 354, - 353, 352, 353, 353, 353, 353, 353, 353, 80, 82, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 292, 353, 353, 353, 353, 251, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 124, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 159, 353, 49, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 307, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, + 354, 354, 354, 354, 354, 354, 354, 199, 354, 354, + 353, 354, 354, 354, 354, 354, 354, 80, 82, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 293, 354, 354, 354, 354, 252, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 124, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 160, 354, 49, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 308, 354, 354, - 353, 353, 353, 353, 353, 353, 353, 353, 166, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 301, 353, 353, 353, 231, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 317, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 184, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 117, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 179, 353, 192, 353, 353, 353, 353, 353, 353, - 353, 352, 353, 148, 353, 353, 353, 353, 353, 103, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 167, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 302, 354, 354, 354, 232, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 318, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 185, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 117, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 180, 354, 193, 354, 354, 354, 354, 354, 354, - 353, 353, 353, 353, 223, 353, 353, 353, 353, 353, - 353, 241, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 263, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 141, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 183, 353, 353, - 353, 353, 353, 353, 83, 353, 84, 353, 353, 353, - 353, 353, 64, 310, 353, 353, 353, 353, 353, 91, - 193, 353, 214, 353, 244, 353, 353, 206, 285, 353, - 353, 353, 353, 353, 353, 76, 353, 195, 353, 353, + 354, 353, 354, 149, 354, 354, 354, 354, 354, 103, + 354, 354, 354, 354, 224, 354, 354, 354, 354, 354, + 354, 242, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 264, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 142, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 184, 354, 354, + 354, 354, 354, 354, 83, 354, 84, 354, 354, 354, + 354, 354, 64, 311, 354, 354, 354, 354, 354, 91, + 194, 354, 215, 354, 245, 354, 354, 207, 286, 354, - 353, 353, 353, 353, 9, 353, 353, 353, 353, 353, - 107, 353, 353, 353, 353, 276, 353, 353, 353, 353, - 222, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 352, 353, 353, 353, 353, 182, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 168, - 353, 291, 353, 353, 353, 353, 353, 262, 353, 353, + 354, 354, 354, 354, 354, 76, 354, 196, 354, 354, + 354, 354, 354, 354, 9, 354, 354, 354, 354, 354, + 107, 354, 354, 354, 354, 277, 354, 354, 354, 354, + 223, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 353, 354, 354, 354, 354, 183, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 235, - 353, 353, 353, 353, 353, 283, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 165, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 311, - 353, 194, 353, 353, 353, 353, 353, 353, 353, 353, - 75, 77, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 106, 353, 353, 353, 353, 274, 353, 353, - 353, 353, 287, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 227, 37, 31, 33, 353, + 169, 354, 292, 354, 354, 354, 354, 354, 263, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 236, 354, 354, 354, 354, 354, 284, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 166, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 312, 354, 195, 354, 354, 354, 354, 354, 354, 354, + 354, 75, 77, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 106, 354, 354, 354, 354, 275, 354, + 354, 354, 354, 288, 354, 354, 354, 354, 354, 354, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 38, 353, 32, 34, 353, 353, 353, 353, 353, - 353, 353, 353, 102, 353, 178, 353, 353, 353, 353, - 353, 353, 353, 352, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 229, 226, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 74, 353, 353, 353, 143, - 353, 125, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 161, 50, 353, 353, 353, 344, 13, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 305, + 354, 354, 354, 354, 354, 354, 354, 228, 37, 31, + 33, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 38, 354, 32, 34, 354, 354, 354, + 354, 354, 354, 354, 354, 102, 354, 179, 354, 354, + 354, 354, 354, 354, 354, 353, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 230, 227, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 74, 354, 354, + 354, 144, 354, 125, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 162, 50, 354, 354, 354, 345, - 353, 308, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 12, 353, 353, 22, 353, 353, - 353, 353, 353, 280, 353, 353, 353, 353, 289, 353, - 353, 353, 78, 353, 237, 353, 353, 353, 353, 353, - 228, 353, 353, 73, 353, 353, 353, 353, 353, 353, - 23, 353, 353, 46, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 177, 176, 353, 353, - 344, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 230, 224, 353, 242, 353, 353, 293, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, + 13, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 306, 354, 309, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 12, 354, 354, 22, + 354, 354, 354, 354, 354, 281, 354, 354, 354, 354, + 290, 354, 354, 354, 354, 78, 354, 238, 354, 354, + 354, 354, 354, 229, 354, 354, 73, 354, 354, 354, + 354, 354, 354, 23, 354, 354, 46, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 178, + 177, 354, 354, 345, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 231, 225, 354, 243, 354, 354, 294, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 85, 353, 353, 353, 353, 275, 353, 353, 353, - 353, 210, 353, 353, 353, 353, 353, 236, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 315, 316, 174, 353, 353, 79, 353, 353, 353, 353, - 185, 353, 353, 353, 118, 120, 119, 353, 353, 353, - 25, 353, 353, 169, 353, 171, 353, 215, 353, 353, - 353, 353, 175, 353, 353, 353, 353, 245, 353, 353, - 353, 353, 353, 353, 353, 150, 353, 353, 353, 353, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 85, 354, 354, 354, 354, 276, + 354, 354, 354, 354, 211, 354, 354, 354, 354, 354, + 237, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 316, 317, 175, 354, 354, 354, 79, + 354, 354, 354, 354, 186, 354, 354, 354, 118, 120, + 119, 354, 354, 354, 25, 354, 354, 170, 354, 172, + 354, 216, 354, 354, 354, 354, 176, 354, 354, 354, - 353, 353, 353, 353, 353, 353, 353, 353, 253, 353, - 353, 353, 353, 353, 353, 353, 324, 353, 27, 353, - 286, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 89, 216, 353, - 353, 273, 353, 309, 353, 209, 353, 353, 353, 353, - 353, 281, 59, 353, 353, 353, 353, 353, 353, 4, - 353, 353, 353, 353, 133, 149, 353, 353, 353, 189, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 248, 40, - 41, 353, 353, 353, 353, 353, 353, 353, 294, 353, + 354, 246, 354, 354, 354, 354, 354, 354, 354, 151, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 254, 354, 354, 354, 354, 354, 354, 354, + 325, 354, 27, 354, 287, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 89, 217, 354, 354, 274, 354, 310, 354, 210, + 354, 354, 354, 354, 354, 282, 59, 354, 354, 354, + 354, 354, 354, 4, 354, 354, 354, 354, 133, 354, + 150, 354, 354, 354, 190, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 353, 353, 353, 353, 353, 353, 261, 353, 353, 353, - 353, 353, 353, 353, 353, 219, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 88, 353, 60, 279, 353, 249, 353, 353, 353, 353, - 353, 11, 353, 353, 353, 353, 353, 353, 353, 353, - 132, 353, 353, 353, 353, 217, 94, 353, 353, 43, - 353, 353, 353, 353, 353, 353, 353, 353, 181, 353, - 353, 353, 353, 353, 353, 353, 152, 353, 353, 353, - 353, 252, 353, 353, 353, 353, 353, 260, 353, 353, - 353, 353, 146, 353, 353, 353, 126, 128, 127, 353, + 354, 354, 354, 249, 40, 41, 354, 354, 354, 354, + 354, 354, 354, 295, 354, 354, 354, 354, 354, 354, + 354, 262, 354, 354, 354, 354, 354, 354, 354, 354, + 220, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 88, 354, 60, 280, 354, + 250, 354, 354, 354, 354, 354, 11, 354, 354, 354, + 354, 354, 354, 354, 354, 132, 354, 354, 354, 354, + 354, 218, 94, 354, 354, 43, 354, 354, 354, 354, + 354, 354, 354, 354, 182, 354, 354, 354, 354, 354, + 354, 354, 153, 354, 354, 354, 354, 253, 354, 354, - 353, 353, 96, 100, 95, 162, 353, 353, 353, 353, - 86, 353, 353, 353, 353, 353, 353, 10, 353, 353, - 353, 353, 353, 277, 318, 353, 353, 353, 353, 353, - 323, 42, 353, 353, 353, 353, 353, 180, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 101, 99, 353, 54, 353, 353, 87, - 306, 353, 353, 353, 353, 24, 353, 353, 353, 353, - 353, 203, 353, 353, 353, 353, 353, 218, 353, 353, - 353, 353, 353, 353, 353, 353, 199, 353, 353, 170, + 354, 354, 354, 261, 354, 354, 354, 354, 147, 354, + 354, 354, 126, 128, 127, 354, 354, 354, 96, 100, + 95, 163, 354, 354, 354, 354, 86, 354, 354, 354, + 354, 354, 354, 10, 354, 354, 354, 354, 354, 278, + 319, 354, 354, 354, 354, 354, 354, 324, 42, 354, + 354, 354, 354, 354, 181, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 101, 99, 354, 54, 354, 354, 87, 307, 354, 354, + 354, 354, 24, 354, 354, 354, 354, 354, 204, 354, - 81, 353, 353, 353, 353, 353, 295, 353, 353, 353, - 353, 353, 353, 353, 257, 353, 353, 256, 147, 353, - 353, 98, 51, 353, 153, 154, 157, 158, 155, 156, - 90, 304, 353, 353, 278, 353, 353, 353, 26, 353, - 173, 353, 353, 353, 353, 197, 353, 247, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 187, 186, - 44, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 302, 353, 353, 353, 353, 105, 353, + 354, 354, 354, 354, 354, 219, 354, 354, 354, 354, + 354, 354, 354, 354, 200, 354, 354, 171, 81, 354, + 354, 354, 354, 354, 296, 354, 354, 354, 354, 354, + 354, 354, 258, 354, 354, 257, 148, 354, 354, 98, + 51, 354, 154, 155, 158, 159, 156, 157, 90, 305, + 354, 354, 279, 136, 354, 354, 354, 26, 354, 174, + 354, 354, 354, 354, 198, 354, 248, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 188, 187, 44, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 246, 353, 270, 299, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 325, 353, 52, 5, 353, - 353, 238, 353, 353, 300, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 258, 28, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 259, 353, - 353, 353, 151, 353, 353, 353, 353, 353, 353, 353, - 353, 188, 353, 196, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 296, 353, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 322, 353, 353, 266, 353, 353, 353, 353, 353, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 303, 354, 354, 354, 354, 105, 354, 247, + 354, 271, 300, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 326, 354, 52, 5, 354, 354, + 239, 354, 354, 301, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 259, 28, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 260, 354, 354, + 354, 152, 354, 354, 354, 354, 354, 354, 354, 354, + 189, 354, 197, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 297, 354, 354, 354, 354, 354, 354, 354, - 297, 353, 353, 353, 353, 353, 353, 298, 353, 353, - 353, 264, 353, 267, 268, 353, 353, 353, 353, 353, - 265, 269, 0 + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 323, 354, 354, 267, 354, 354, 354, 354, 354, 298, + 354, 354, 354, 354, 354, 354, 299, 354, 354, 354, + 265, 354, 268, 269, 354, 354, 354, 354, 354, 266, + 270, 0 } ; static const YY_CHAR yy_ec[256] = @@ -795,17 +797,17 @@ static const YY_CHAR yy_meta[41] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[3542] = +static const flex_int16_t yy_base[3561] = { 0, 0, 0, 38, 41, 44, 46, 59, 65, 71, 77, - 90, 112, 96, 118, 124, 136, 4616, 4433, 81, 6875, - 6875, 6875, 129, 52, 130, 63, 131, 152, 70, 140, + 90, 112, 96, 118, 124, 136, 3060, 2545, 81, 6911, + 6911, 6911, 129, 52, 130, 63, 131, 152, 70, 140, 149, 156, 57, 88, 76, 173, 175, 95, 197, 145, - 185, 199, 208, 213, 178, 123, 4370, 6875, 6875, 6875, - 107, 3871, 6875, 6875, 6875, 154, 3773, 3649, 6875, 6875, - 6875, 245, 3475, 6875, 6875, 6875, 163, 2996, 6875, 249, - 6875, 253, 148, 2649, 2362, 6875, 6875, 6875, 257, 1809, - 6875, 6875, 6875, 233, 1758, 263, 201, 0, 267, 0, + 185, 199, 208, 213, 178, 123, 2505, 6911, 6911, 6911, + 107, 2460, 6911, 6911, 6911, 154, 2315, 2089, 6911, 6911, + 6911, 245, 2007, 6911, 6911, 6911, 163, 1936, 6911, 249, + 6911, 253, 148, 1835, 1793, 6911, 6911, 6911, 257, 1696, + 6911, 6911, 6911, 233, 1543, 263, 201, 0, 267, 0, 0, 165, 191, 221, 252, 205, 181, 265, 92, 261, 216, 263, 271, 272, 210, 279, 274, 282, 278, 291, @@ -813,8 +815,8 @@ static const flex_int16_t yy_base[3542] = 317, 311, 315, 319, 321, 331, 327, 332, 336, 322, 339, 337, 346, 345, 347, 348, 353, 351, 357, 284, 358, 359, 369, 360, 380, 365, 381, 379, 375, 366, - 367, 389, 390, 394, 393, 395, 396, 403, 404, 1583, - 419, 1403, 422, 1306, 429, 1127, 1006, 433, 779, 437, + 367, 389, 390, 394, 393, 395, 396, 403, 404, 1277, + 419, 1241, 422, 1199, 429, 1020, 925, 433, 779, 437, 441, 0, 433, 705, 447, 479, 287, 452, 411, 445, 426, 446, 447, 448, 449, 450, 451, 453, 452, 456, 470, 234, 463, 473, 481, 479, 476, 483, 486, 487, @@ -835,755 +837,757 @@ static const flex_int16_t yy_base[3542] = 738, 742, 745, 743, 753, 754, 755, 759, 758, 774, 763, 764, 771, 784, 765, 767, 769, 775, 796, 785, 798, 799, 800, 803, 804, 801, 808, 807, 809, 811, - 823, 813, 820, 826, 827, 829, 830, 837, 832, 6875, - 834, 836, 848, 847, 850, 853, 843, 859, 851, 839, - 869, 865, 866, 881, 903, 867, 870, 868, 874, 872, - 6875, 876, 893, 927, 877, 888, 911, 908, 896, 901, - 885, 909, 912, 934, 923, 913, 936, 944, 932, 915, + 823, 813, 820, 826, 827, 829, 830, 837, 832, 6911, + 834, 836, 848, 847, 850, 853, 843, 859, 860, 839, + 870, 866, 863, 881, 903, 867, 871, 873, 876, 872, + 6911, 893, 883, 927, 885, 889, 911, 895, 907, 913, + 916, 909, 914, 921, 923, 917, 920, 944, 945, 935, - 925, 947, 951, 952, 959, 957, 954, 960, 961, 969, - 964, 965, 966, 979, 968, 970, 978, 973, 980, 990, - 991, 996, 983, 985, 997, 998, 898, 999, 1008, 1031, - 1007, 1002, 1018, 1005, 1020, 1025, 1003, 1021, 1022, 1032, - 1033, 1034, 1039, 1037, 1042, 1046, 1043, 1057, 1053, 1055, - 1060, 1061, 1062, 1063, 1064, 1066, 1069, 1070, 1071, 1074, - 1076, 1080, 1079, 1085, 1087, 1072, 1094, 1090, 6875, 1096, - 6875, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 6875, - 1109, 1113, 1106, 1111, 1120, 1128, 1122, 1130, 1118, 1133, - 1136, 1134, 1138, 1146, 1142, 1147, 1149, 1145, 1151, 1152, + 936, 947, 952, 951, 959, 960, 954, 958, 963, 971, + 964, 967, 973, 982, 972, 969, 975, 976, 877, 984, + 993, 994, 995, 981, 988, 999, 1001, 1002, 1009, 1032, + 1011, 1012, 1020, 1006, 1014, 1028, 1026, 1024, 1034, 1033, + 1035, 1007, 1041, 1039, 1044, 1051, 1048, 1054, 1063, 1058, + 1059, 1060, 1064, 1065, 1066, 1068, 1071, 1072, 1073, 1076, + 1077, 1083, 1084, 1088, 1092, 1078, 1093, 1086, 6911, 1100, + 6911, 1095, 1098, 1102, 1103, 1104, 1105, 1107, 1109, 6911, + 1111, 1114, 1113, 1120, 1124, 1117, 1128, 1130, 1136, 1137, + 1138, 1139, 1140, 1142, 1149, 1144, 1154, 1152, 1147, 1158, - 1154, 1157, 1155, 1158, 1163, 1164, 1165, 1166, 1185, 6875, - 1169, 1171, 1172, 1177, 1176, 1178, 1182, 1190, 1197, 1188, - 1207, 1200, 1208, 1215, 1210, 1213, 1218, 1214, 1222, 1223, - 1226, 1227, 1230, 1231, 1232, 1233, 1235, 1236, 1239, 1240, - 1238, 1241, 1246, 6875, 1250, 1260, 1261, 1268, 1255, 1248, - 1253, 1266, 1269, 1270, 1271, 1273, 1274, 517, 1277, 1279, - 1287, 1282, 1289, 1290, 1292, 1291, 1293, 1296, 1297, 1298, - 1299, 1310, 1303, 1312, 1319, 1326, 1322, 1324, 1331, 1333, - 1313, 1328, 1335, 1336, 1329, 1337, 1339, 1344, 1330, 1343, - 1346, 1357, 1347, 1352, 1354, 1355, 1359, 1363, 1361, 1358, + 1156, 1159, 1115, 1160, 1162, 1166, 1167, 1168, 1169, 1188, + 6911, 1172, 1174, 1175, 1181, 1179, 1186, 1184, 1193, 1201, + 1203, 1211, 1205, 1213, 1215, 1212, 1217, 1173, 1219, 1223, + 1225, 1228, 1229, 1231, 1232, 1234, 1235, 1237, 1238, 1240, + 1239, 1247, 1250, 1251, 6911, 1252, 1254, 1255, 1268, 1263, + 1264, 1267, 1269, 1270, 1271, 1272, 1274, 1278, 517, 1273, + 1291, 1288, 1284, 1298, 1293, 1294, 1295, 1299, 1301, 1300, + 1302, 1304, 1313, 1310, 1316, 1325, 1328, 1327, 1330, 1337, + 1339, 1319, 1332, 1342, 1336, 1334, 1335, 1346, 1347, 1348, + 1350, 1351, 1360, 1356, 1357, 1359, 1358, 1364, 1365, 1367, - 1365, 1366, 1368, 1369, 1377, 1375, 1374, 1383, 1378, 1381, - 1387, 1390, 1392, 1393, 1399, 1400, 6875, 1407, 1402, 1409, - 1404, 1414, 1417, 1416, 1410, 1418, 1422, 1424, 1423, 1425, - 1432, 1433, 1427, 1434, 1435, 1438, 1440, 1449, 1444, 1453, - 1460, 1459, 1461, 1454, 1463, 1464, 1465, 1448, 1474, 1471, - 1475, 1479, 1473, 1480, 1487, 1483, 1484, 1488, 1495, 1490, - 1491, 1494, 1492, 1501, 1503, 1511, 1519, 1504, 1515, 1523, - 1505, 1518, 1439, 1521, 1524, 1527, 1528, 1531, 1525, 1532, - 1539, 1534, 1541, 1536, 1542, 1535, 1537, 1555, 1547, 1554, - 1559, 1560, 1561, 1563, 1564, 1565, 1566, 1568, 1571, 1572, + 1362, 1368, 1370, 1372, 1374, 1381, 1379, 1385, 1390, 1386, + 1391, 1387, 1380, 1395, 1403, 1397, 1406, 6911, 1413, 1308, + 1409, 1410, 1415, 1416, 1417, 1418, 1423, 1424, 1425, 1427, + 1426, 1429, 1430, 1433, 1435, 1437, 1440, 1442, 1450, 1445, + 1455, 1462, 1461, 1443, 1447, 1457, 1463, 1467, 1466, 1474, + 1470, 1479, 1478, 1469, 1482, 1489, 1480, 1484, 1486, 1496, + 1476, 1492, 1498, 1499, 1507, 1502, 1504, 1510, 1518, 1514, + 1515, 1522, 1523, 1500, 1527, 1517, 1531, 1532, 1534, 1535, + 1537, 1538, 1545, 1540, 1542, 1546, 1547, 1541, 1548, 1554, + 1549, 1569, 1555, 1560, 1565, 1568, 1570, 1571, 1572, 1578, - 1575, 1569, 1576, 1577, 1595, 1597, 1578, 1580, 1589, 1598, - 1602, 1603, 1604, 1605, 1606, 1609, 1608, 1610, 1611, 1617, - 1620, 1621, 1624, 1625, 1626, 1629, 1636, 1627, 1637, 1642, - 1631, 1643, 1644, 1647, 1648, 1650, 1653, 1656, 1658, 1651, - 6875, 1657, 1670, 1665, 1667, 1666, 1668, 1672, 1679, 1674, - 1677, 1680, 1675, 1681, 1702, 6875, 1688, 6875, 6875, 1689, - 6875, 6875, 1683, 1691, 6875, 1699, 1686, 1694, 1708, 1715, - 1717, 1709, 1713, 1719, 1723, 1732, 1744, 1727, 1725, 1728, - 1734, 1735, 1729, 1737, 1750, 1740, 1760, 1754, 1736, 1764, - 1772, 1768, 1773, 1770, 1776, 1777, 1779, 1780, 1782, 1789, + 1573, 1579, 1580, 1581, 1583, 1592, 1584, 1582, 1593, 1594, + 1601, 1595, 1603, 1602, 1604, 1611, 1610, 1614, 1615, 1605, + 1616, 1620, 1626, 1627, 1628, 1631, 1630, 1635, 1638, 1636, + 1640, 1642, 1648, 1649, 1650, 1652, 1633, 1656, 1659, 1664, + 1667, 1661, 6911, 1657, 1675, 1651, 1673, 1674, 1653, 1679, + 1687, 1680, 1682, 1683, 1684, 1685, 1710, 6911, 1691, 6911, + 6911, 1690, 6911, 6911, 1693, 1692, 6911, 1694, 1695, 1708, + 1699, 1713, 1716, 1720, 1718, 1711, 1721, 1733, 1742, 1728, + 1734, 1726, 1735, 1751, 1738, 1752, 1740, 1750, 1758, 1759, + 1757, 1764, 1771, 1766, 1775, 1768, 1779, 1777, 1780, 1786, - 1790, 1786, 1791, 1738, 1793, 1795, 1794, 1796, 1800, 1803, - 1804, 1801, 1799, 1806, 1818, 1816, 1808, 1826, 6875, 1822, - 1829, 1824, 1836, 1832, 1839, 1831, 1835, 1838, 1845, 1848, - 1842, 1840, 1849, 1851, 1852, 1853, 1856, 1857, 1861, 1687, - 1862, 1864, 1873, 1865, 6875, 1866, 1868, 1869, 1874, 1878, - 1880, 1881, 1882, 1885, 1888, 1889, 1900, 1890, 1892, 1895, - 1903, 1898, 1901, 1905, 6875, 1904, 1918, 1909, 1915, 1911, - 1913, 1921, 1923, 1924, 1925, 1926, 1927, 1928, 1929, 1942, - 1938, 1939, 1937, 1935, 1943, 1950, 1952, 1955, 1958, 1962, - 1940, 1964, 1965, 1966, 1967, 1968, 1970, 1971, 1973, 1978, + 1787, 1791, 1793, 1788, 1794, 1797, 1796, 1798, 1799, 1802, + 1804, 1723, 1805, 1808, 1809, 1810, 1818, 1815, 1823, 1830, + 6911, 1828, 1831, 1827, 1840, 1836, 1843, 1811, 1838, 1839, + 1849, 1851, 1845, 1842, 1852, 1854, 1855, 1856, 1859, 1861, + 1864, 1867, 1865, 1869, 1872, 1870, 6911, 1877, 1878, 1871, + 1879, 1881, 1882, 1883, 1891, 1892, 1893, 1894, 1904, 1896, + 1899, 1897, 1901, 1906, 1908, 1909, 1911, 6911, 1916, 1924, + 1913, 1921, 1919, 1925, 1928, 1929, 1930, 1933, 1931, 1935, + 1937, 1938, 1947, 1943, 1944, 1946, 1949, 1953, 1958, 1961, + 1959, 1960, 1971, 1963, 1966, 1972, 1974, 1975, 1976, 1977, - 1982, 1977, 1985, 1980, 1981, 1989, 2002, 1995, 1987, 1997, - 1998, 2000, 2004, 2013, 2014, 2012, 2010, 2011, 2022, 2018, - 2020, 2023, 2025, 2026, 2033, 2031, 2035, 2036, 2034, 2040, - 2043, 2045, 6875, 2047, 2049, 6875, 2052, 2050, 2051, 2073, - 2053, 2055, 2062, 2058, 2061, 2075, 2066, 2069, 2080, 2074, - 2093, 2090, 2091, 2096, 2095, 2098, 2097, 2101, 2102, 2104, - 2107, 2108, 2114, 2118, 2128, 2130, 2068, 2131, 2133, 2115, - 2119, 2111, 2139, 2132, 2136, 2134, 2142, 2149, 2146, 2135, - 2152, 2155, 2156, 2157, 2161, 2166, 2162, 2170, 2163, 2164, - 2171, 2172, 2174, 2179, 2178, 6875, 2191, 2184, 2186, 2188, + 1978, 1980, 1985, 1990, 1987, 1995, 1988, 1991, 1998, 2009, + 2004, 1993, 2005, 2010, 2006, 2013, 2022, 2024, 2020, 2019, + 2021, 2032, 2028, 2030, 2031, 2033, 2036, 2041, 2042, 2043, + 2044, 2046, 2050, 2051, 2053, 6911, 2055, 2059, 6911, 2058, + 2060, 2061, 2083, 2062, 2065, 2066, 2075, 2064, 2087, 2078, + 2076, 2095, 2084, 2102, 2097, 2103, 2105, 2107, 2108, 2112, + 2110, 2111, 2114, 2116, 2118, 2120, 2128, 2137, 2138, 2140, + 2134, 2142, 2119, 2143, 2067, 2163, 2144, 2145, 2146, 2147, + 2148, 2152, 2153, 2151, 2154, 2155, 2165, 2170, 2172, 2173, + 2175, 2158, 2179, 2180, 2181, 2191, 2188, 2185, 6911, 2200, - 2194, 2201, 2192, 2196, 6875, 2199, 2200, 2202, 2210, 2203, - 2206, 2211, 2213, 2214, 2217, 2219, 2220, 2221, 2226, 2222, - 2240, 6875, 2227, 6875, 2224, 2235, 2236, 2223, 2244, 2245, - 2246, 2247, 2248, 6875, 6875, 2249, 2250, 2256, 2266, 2268, - 2264, 2265, 2269, 6875, 2251, 2276, 6875, 2277, 2271, 2272, - 2279, 2284, 2283, 2285, 2287, 2294, 2289, 2296, 2291, 2292, - 2293, 6875, 2305, 2295, 2310, 2312, 2303, 2304, 2318, 2320, - 2314, 6875, 2321, 2322, 2324, 2334, 2332, 2333, 2311, 2336, - 2340, 2335, 2337, 2343, 2344, 2345, 2352, 2354, 2355, 2357, - 2359, 2366, 2365, 2367, 6875, 2368, 2351, 2371, 2378, 2374, + 2193, 2197, 2201, 2202, 2209, 2207, 2204, 6911, 2208, 2210, + 2211, 2220, 2213, 2218, 2221, 2224, 2225, 2228, 2229, 2231, + 2233, 2230, 2232, 2251, 6911, 2234, 6911, 2238, 2235, 2253, + 2243, 2246, 2247, 2254, 2256, 2259, 6911, 6911, 2263, 2257, + 2270, 2273, 2278, 2274, 2275, 2276, 6911, 2277, 2285, 6911, + 2287, 2292, 2280, 2281, 2282, 2286, 2296, 2297, 2305, 2300, + 2308, 2303, 2306, 2307, 6911, 2313, 2316, 2310, 2317, 2323, + 2324, 2325, 2327, 2330, 2326, 6911, 2333, 2329, 2336, 2343, + 2347, 2341, 2344, 2348, 2352, 2349, 2354, 2355, 2356, 2357, + 2364, 2366, 2369, 2371, 2372, 2374, 2378, 2385, 6911, 2381, - 2376, 2377, 2380, 2381, 2382, 2384, 2385, 2383, 2390, 2392, - 2393, 2396, 2403, 2404, 2402, 2406, 2408, 2400, 2409, 2412, - 2413, 2418, 2416, 2420, 2421, 2422, 6875, 2425, 2427, 2428, - 2430, 2432, 2433, 171, 2438, 2439, 2443, 2441, 2442, 2449, - 2445, 2456, 2463, 2458, 2459, 2460, 2461, 2467, 2468, 2470, - 2469, 2471, 2472, 2473, 2476, 6875, 2478, 2480, 2483, 2485, - 2486, 2487, 2497, 6875, 2489, 2498, 2491, 2504, 2505, 2506, - 2514, 2508, 2510, 2509, 2519, 2515, 2521, 2525, 2522, 2526, - 2523, 6875, 2532, 2535, 2538, 2529, 2539, 2541, 2546, 2547, - 2548, 2550, 2553, 2551, 2552, 2558, 2554, 2557, 2561, 2568, + 2380, 2382, 2390, 2387, 2389, 2391, 2394, 2393, 2395, 2396, + 2401, 2397, 2405, 2406, 2407, 2409, 2418, 2421, 2416, 2417, + 2426, 2413, 2420, 2423, 2427, 2365, 2429, 2430, 2433, 2436, + 6911, 2437, 2441, 2438, 2443, 2444, 2442, 171, 2450, 2451, + 2453, 2454, 2458, 2469, 2455, 2463, 2476, 2471, 2472, 2478, + 2474, 2481, 2482, 2483, 2484, 2473, 2486, 2485, 2489, 6911, + 2491, 2497, 2494, 2498, 2501, 2502, 2504, 6911, 2506, 2514, + 2516, 2525, 2519, 2503, 2527, 2528, 2531, 2529, 2532, 2533, + 2534, 2535, 2536, 2542, 2539, 6911, 2544, 2551, 2554, 2541, + 2555, 2562, 2548, 2563, 2564, 2565, 2568, 2567, 2569, 2573, - 2560, 2577, 2564, 2567, 2572, 2576, 2580, 2582, 2583, 2585, - 2586, 2595, 2588, 6875, 2596, 2592, 2597, 2598, 2593, 2600, - 2604, 2603, 2618, 2605, 2614, 2619, 2620, 2633, 2622, 2627, - 2629, 2625, 2639, 2631, 2643, 2645, 2648, 2654, 2630, 2657, - 2659, 2647, 2660, 2669, 2661, 2665, 2666, 2668, 2672, 2679, - 2680, 2676, 2683, 2675, 2677, 2684, 2692, 2698, 2703, 2694, - 6875, 2704, 2696, 2702, 2707, 2715, 2710, 2712, 2713, 2717, - 2721, 2722, 2723, 2724, 2732, 2727, 2725, 2729, 2735, 2736, - 2737, 2744, 2739, 2745, 2747, 2749, 2753, 2755, 2756, 6875, - 2759, 2760, 2761, 2763, 2767, 2764, 2774, 2775, 2777, 2769, + 2570, 2572, 2574, 2575, 2583, 2594, 2577, 2586, 2587, 2590, + 2591, 2595, 2599, 2600, 2601, 2608, 2603, 6911, 2615, 2604, + 2612, 2613, 2611, 2614, 2617, 2620, 2634, 2624, 2627, 2629, + 2635, 2644, 2637, 2638, 2646, 2654, 2651, 2639, 2664, 2660, + 2661, 2668, 2659, 2670, 2672, 2662, 2673, 2684, 2674, 2676, + 2681, 2679, 2685, 2694, 2695, 2687, 2697, 2698, 2690, 2700, + 2702, 2712, 2717, 2707, 6911, 2719, 2709, 2720, 2721, 2728, + 2725, 2726, 2731, 2729, 2732, 2733, 2735, 2737, 2745, 2746, + 2744, 2742, 2749, 2753, 2755, 2757, 2760, 2759, 2740, 2768, + 2762, 2764, 2771, 2772, 6911, 2775, 2776, 2780, 2782, 2784, - 2771, 2778, 2786, 2781, 2779, 2788, 2783, 2793, 2789, 2795, - 2798, 2797, 6875, 2802, 2806, 2807, 2808, 2809, 2810, 2811, - 2817, 2819, 2825, 2823, 2813, 2827, 2829, 2830, 6875, 2838, - 2840, 2837, 2839, 2841, 2845, 2846, 2847, 2849, 2850, 6875, - 2851, 2853, 2852, 2857, 2855, 2859, 2866, 2867, 2863, 6875, - 2874, 2864, 2873, 2876, 2877, 2880, 2879, 2885, 2881, 2883, - 2887, 2890, 2892, 2888, 2898, 6875, 2899, 2910, 2902, 2906, - 2913, 2900, 2907, 2912, 2923, 2916, 2917, 2924, 6875, 2932, - 2929, 2934, 2941, 2936, 1170, 2939, 2937, 2943, 2944, 2946, - 2947, 2949, 6875, 2950, 2953, 2954, 2958, 2956, 2961, 2951, + 2785, 2787, 2788, 2790, 2792, 2793, 2794, 2797, 2798, 2800, + 2801, 2802, 2809, 2806, 2807, 2808, 2812, 6911, 2820, 2819, + 2821, 2824, 2827, 2825, 2831, 2837, 2839, 2828, 2841, 2835, + 2842, 2843, 2845, 6911, 2855, 2857, 2847, 2854, 2862, 2860, + 2861, 2863, 2865, 2866, 6911, 2867, 2870, 2868, 2875, 2871, + 2873, 2882, 2883, 2879, 6911, 2887, 2884, 2889, 2892, 2893, + 2894, 2895, 2899, 2897, 2901, 2902, 2906, 2915, 2907, 2916, + 6911, 2903, 2924, 2910, 2925, 2919, 2929, 2931, 2932, 2933, + 2935, 2937, 2940, 6911, 2942, 2945, 2948, 2957, 2952, 2953, + 2955, 2958, 2960, 2962, 2961, 2964, 2966, 6911, 2968, 2967, - 2973, 2963, 2965, 2968, 2974, 2976, 2977, 2978, 2980, 2982, - 2990, 2983, 2984, 2993, 2998, 2994, 3003, 2986, 3007, 3010, - 3017, 3000, 3015, 3019, 3020, 3013, 3021, 3022, 3030, 3031, - 3034, 3032, 3035, 6875, 3038, 3039, 3040, 3023, 3044, 3045, - 3046, 3047, 3050, 3048, 3052, 3053, 3055, 3057, 3071, 3073, - 3062, 3063, 3066, 3074, 3075, 3078, 3077, 3079, 3080, 3087, - 3086, 3088, 3089, 3100, 3090, 3095, 3103, 3092, 3102, 3104, - 3105, 3106, 3112, 3107, 3114, 3116, 3110, 3118, 3119, 3120, - 3131, 3134, 3122, 3135, 3136, 3141, 3140, 3142, 6875, 3145, - 3146, 3143, 3147, 3152, 3155, 3157, 3165, 3156, 3160, 3164, + 2970, 2974, 2972, 2977, 2978, 2989, 2984, 2987, 2990, 2991, + 2992, 2993, 2994, 2999, 3010, 3001, 2998, 3000, 3002, 3014, + 3012, 3019, 3018, 3022, 3026, 3030, 3025, 3031, 3034, 3029, + 3036, 3037, 3040, 3047, 3048, 3049, 3050, 3053, 6911, 3056, + 3057, 3059, 3044, 3060, 3063, 3064, 3066, 3069, 3065, 3067, + 3071, 3074, 3078, 3087, 3090, 3080, 3082, 3091, 3092, 3093, + 3094, 3095, 3096, 3101, 3104, 3103, 3105, 3106, 3113, 3109, + 3112, 3121, 3117, 3120, 3122, 3123, 3124, 3126, 3127, 3129, + 3130, 3134, 3133, 3135, 3138, 3146, 3156, 3153, 3147, 3149, + 3157, 3159, 3161, 6911, 3160, 3164, 3168, 3165, 3170, 3174, - 3166, 3172, 3174, 3175, 3177, 3178, 3185, 3181, 6875, 3182, - 6875, 3183, 3184, 3187, 3196, 3191, 6875, 3202, 6875, 3192, - 3206, 3197, 3199, 3203, 6875, 3207, 3208, 3212, 3209, 3214, - 3216, 3220, 3221, 3222, 3223, 3224, 3225, 3227, 3230, 3231, - 3233, 3237, 3239, 3245, 3243, 3244, 3247, 3251, 3252, 3253, - 3254, 3260, 3264, 3263, 3265, 3266, 3267, 6875, 3271, 3275, - 3268, 3279, 3276, 3277, 3280, 3286, 3287, 3288, 3289, 3291, - 3297, 3298, 3300, 3293, 3303, 3304, 3307, 3310, 3320, 3311, - 3322, 6875, 3312, 3328, 3319, 3323, 6875, 3325, 3321, 3332, - 3334, 3336, 3337, 3339, 3340, 3341, 3344, 3346, 3347, 3353, + 3171, 3181, 3177, 3182, 3190, 3188, 3187, 3194, 3179, 3189, + 3196, 3197, 3206, 3202, 6911, 3203, 6911, 3204, 3208, 3209, + 3218, 3211, 6911, 3215, 6911, 3216, 3223, 3220, 3224, 3226, + 6911, 3227, 3228, 3232, 3229, 3233, 3234, 3239, 3237, 3241, + 3243, 3245, 3246, 3255, 3244, 3250, 3251, 3257, 3266, 3256, + 3261, 3263, 3269, 3272, 3274, 3273, 3280, 3275, 3282, 3283, + 3285, 3286, 3287, 6911, 3291, 3295, 3296, 3299, 3300, 3288, + 3303, 3302, 3310, 3307, 3311, 3308, 3314, 3315, 3319, 3320, + 3323, 3325, 3331, 3336, 3343, 3326, 3344, 6911, 3339, 3348, + 3330, 3350, 6911, 3352, 3327, 3354, 3358, 3360, 3361, 3362, - 3357, 3360, 3349, 6875, 3361, 3364, 3348, 3363, 3375, 3378, - 3382, 3379, 3380, 3385, 3383, 3387, 3388, 3389, 3390, 3391, - 3393, 3400, 3403, 3404, 3405, 3408, 3395, 3412, 3414, 3415, - 3406, 3399, 3416, 3421, 3422, 3423, 3425, 3426, 3427, 3428, - 3429, 3430, 3433, 6875, 3434, 3438, 3442, 3451, 3443, 3448, - 3447, 3454, 3453, 6875, 3457, 3458, 3460, 3459, 3461, 3466, - 3469, 3470, 3472, 3473, 3476, 3477, 3480, 3479, 6875, 3485, - 6875, 3486, 3493, 3488, 3498, 3501, 3499, 3503, 3508, 3502, - 3504, 3509, 3516, 3520, 3510, 3512, 3518, 3521, 3522, 3524, - 3532, 3536, 3530, 3538, 3539, 3541, 3542, 3544, 3549, 3545, + 3363, 3364, 3367, 3368, 3369, 3370, 3378, 3381, 3384, 6911, + 3382, 3390, 3371, 3394, 3393, 3404, 3405, 3401, 3407, 3409, + 3417, 3413, 3402, 3412, 3400, 3414, 3420, 3422, 3427, 3431, + 3424, 3432, 3428, 3433, 3436, 3437, 3439, 3440, 3443, 3441, + 3444, 3445, 3449, 3446, 3447, 3448, 3340, 3450, 3466, 6911, + 3453, 3455, 3468, 3476, 3454, 3471, 3475, 3477, 3478, 6911, + 3480, 3482, 3483, 3484, 3485, 3489, 3492, 3490, 3493, 3494, + 3497, 3498, 3501, 3500, 6911, 3507, 6911, 3508, 3515, 3520, + 3524, 3509, 3517, 3525, 3530, 3526, 3531, 3532, 3538, 3540, + 3534, 3536, 3542, 3543, 3546, 3547, 3554, 3560, 3557, 3549, - 3551, 6875, 6875, 3546, 3547, 3553, 3557, 3555, 3561, 3567, - 3569, 3570, 3562, 3572, 3574, 3585, 6875, 3576, 3583, 3577, - 3586, 3594, 3587, 3596, 3603, 3601, 3600, 3608, 3604, 6875, - 3589, 3607, 3617, 3612, 3613, 3624, 6875, 3615, 6875, 3619, - 3620, 3626, 3627, 3628, 3631, 3629, 3632, 3630, 3634, 3636, - 3647, 3655, 3657, 3652, 3654, 3644, 3656, 3658, 3660, 3662, - 3667, 3663, 3666, 3669, 6875, 3671, 3672, 3676, 3673, 3679, - 3681, 3683, 3684, 3689, 6875, 3690, 3691, 3694, 3695, 3696, - 3703, 3698, 3704, 3705, 3709, 3706, 3714, 3710, 3713, 6875, - 3715, 3718, 3729, 3719, 3726, 3727, 3736, 3737, 3742, 6875, + 3561, 3563, 3565, 3566, 3573, 3570, 3568, 6911, 6911, 3571, + 3576, 3577, 3583, 3584, 3585, 3586, 3588, 3598, 3589, 3591, + 3592, 3614, 6911, 3595, 3602, 3604, 3606, 3605, 3621, 3616, + 3623, 3624, 3620, 3627, 3635, 3630, 6911, 3628, 3631, 3638, + 3633, 3640, 3650, 6911, 3375, 6911, 3637, 3639, 3642, 3647, + 3652, 3651, 3653, 3654, 3659, 3662, 3664, 3668, 3671, 3675, + 3670, 3674, 3677, 3680, 3681, 3685, 3679, 3688, 3686, 3687, + 3691, 6911, 3694, 3690, 3695, 3696, 3702, 3706, 3707, 3704, + 3705, 6911, 3714, 3715, 3716, 3717, 3718, 3721, 3723, 3726, + 3727, 3731, 3734, 3732, 3735, 3737, 6911, 3736, 3740, 3750, - 3743, 3730, 3751, 3747, 3749, 3750, 3753, 3754, 3755, 3757, - 3758, 3759, 3760, 3762, 3766, 3767, 3763, 3770, 3769, 3781, - 3780, 3772, 3784, 3794, 3790, 6875, 3791, 3795, 3796, 3797, - 3798, 3799, 3801, 3804, 3806, 3807, 3809, 3818, 3816, 3820, - 3821, 3823, 3728, 3830, 3825, 6875, 3832, 3829, 3839, 3831, - 3834, 3835, 3844, 3840, 3845, 3849, 3846, 3851, 3852, 3853, - 3854, 3862, 3869, 3864, 3865, 3856, 3866, 3879, 3868, 6875, - 3881, 3870, 3882, 3887, 3890, 3891, 3898, 3893, 3894, 3895, - 3900, 3896, 3903, 3905, 3907, 3908, 3911, 3912, 6875, 6875, - 3918, 3913, 3915, 6875, 3919, 3920, 3927, 3923, 3931, 3926, + 3741, 3743, 3745, 3757, 3759, 3764, 6911, 3765, 3758, 3772, + 3769, 3771, 3752, 3773, 3774, 3775, 3777, 3778, 3779, 3780, + 3781, 3786, 3787, 3788, 3782, 3789, 3800, 3801, 3792, 3811, + 3814, 3799, 6911, 3803, 3813, 3815, 3816, 3817, 3821, 3823, + 3826, 3828, 3818, 3830, 3833, 3839, 3840, 3841, 3843, 3844, + 3851, 3846, 6911, 3853, 3850, 3858, 3854, 3855, 3863, 3857, + 3864, 3865, 3872, 3867, 3869, 3873, 3874, 3875, 3881, 3883, + 3885, 3887, 3888, 3889, 3900, 3891, 6911, 3902, 3903, 3893, + 3910, 3905, 3913, 3920, 3915, 3918, 3919, 3922, 3923, 3925, + 3927, 3929, 3930, 3933, 3934, 6911, 6911, 3936, 3937, 3939, - 3933, 3935, 3934, 3936, 3944, 3937, 3940, 6875, 3952, 3949, - 3957, 3950, 3953, 3961, 3964, 6875, 3958, 3965, 3968, 3969, - 3971, 3972, 3975, 3973, 3976, 3978, 3981, 3982, 3990, 3993, - 3986, 3988, 3991, 6875, 3989, 3997, 3999, 4001, 3998, 4005, - 6875, 4002, 4008, 4013, 4010, 4015, 4023, 4025, 4026, 4028, - 4018, 4030, 4031, 4033, 4032, 4034, 4035, 4046, 4041, 4036, - 4043, 4045, 4057, 4060, 4049, 6875, 4062, 4063, 4047, 4065, - 6875, 4069, 4076, 4072, 6875, 4083, 4073, 4080, 4078, 4087, - 6875, 4082, 4084, 4086, 4091, 4089, 4101, 4093, 4102, 4104, - 4097, 4100, 4105, 4106, 6875, 4107, 4108, 4112, 6875, 4121, + 6911, 3941, 3942, 3952, 3943, 3945, 3953, 3955, 3957, 3956, + 3958, 3960, 3966, 3967, 6911, 3975, 3968, 3977, 3976, 3972, + 3986, 3985, 6911, 3978, 3988, 3990, 3993, 3991, 3981, 3994, + 3995, 3892, 3999, 4002, 4003, 4011, 4012, 4009, 4008, 4010, + 6911, 4015, 4016, 4019, 4021, 4018, 4022, 4025, 6911, 4026, + 4027, 4032, 4037, 4039, 4047, 4049, 4044, 4051, 4036, 4052, + 4054, 4056, 4058, 4059, 4062, 4069, 4065, 4070, 4067, 4064, + 4075, 4080, 4084, 6911, 4086, 4076, 4071, 4090, 6911, 4094, + 4102, 4103, 6911, 4104, 4099, 4100, 4106, 4113, 6911, 4108, + 4110, 4109, 4111, 4115, 4122, 4117, 4129, 4127, 4119, 4124, - 4122, 4126, 4129, 4111, 4136, 4132, 4134, 4135, 4133, 6875, - 4140, 6875, 4143, 4137, 4147, 6875, 4144, 4150, 4152, 4154, - 4151, 4158, 4159, 4165, 4167, 4155, 4161, 4169, 4171, 4109, - 4172, 4179, 4174, 4176, 4178, 4180, 6875, 4181, 4183, 4186, - 4184, 4188, 4191, 4197, 4198, 4202, 4199, 6875, 6875, 4206, - 6875, 4208, 4210, 4213, 4214, 6875, 4203, 4217, 4221, 4216, - 4222, 4225, 4220, 4235, 4224, 6875, 4237, 4239, 6875, 4228, - 4241, 4248, 4243, 4245, 4244, 4249, 4253, 4246, 4250, 4256, - 4258, 4259, 4260, 4261, 4262, 4267, 6875, 4263, 4265, 4264, - 4279, 4275, 4280, 4281, 4285, 4282, 6875, 4289, 4295, 4291, + 4128, 4130, 6911, 4131, 4132, 4136, 6911, 4134, 4145, 4148, + 4150, 4135, 4158, 4153, 4156, 4154, 4157, 6911, 4162, 6911, + 4165, 4163, 4169, 6911, 4164, 4171, 4172, 4174, 4178, 4179, + 4180, 4186, 4182, 4188, 4190, 4191, 4192, 4193, 4195, 4202, + 4194, 4198, 4201, 4203, 6911, 4204, 4206, 4213, 4210, 4214, + 4218, 4220, 4221, 4223, 4225, 6911, 6911, 4234, 6911, 4226, + 4231, 4235, 4236, 6911, 4239, 4241, 4243, 4240, 4244, 4246, + 4249, 4259, 4253, 6911, 4263, 4264, 6911, 4250, 4260, 4274, + 4256, 4269, 4271, 4272, 4277, 4275, 4279, 4282, 4283, 4281, + 4285, 4280, 4286, 4298, 6911, 4287, 4288, 4290, 4309, 4303, - 4296, 4292, 6875, 4298, 6875, 4303, 4304, 4305, 4306, 4310, - 4318, 6875, 4314, 4311, 4320, 4315, 4322, 4324, 4323, 4330, - 4331, 4332, 4333, 4340, 4337, 4338, 4336, 4345, 4346, 6875, - 4343, 4347, 4356, 4357, 4352, 4359, 4366, 4363, 4369, 4364, - 4365, 4375, 4372, 4376, 4385, 4378, 4383, 4380, 6875, 4390, - 4389, 4392, 4401, 4393, 4394, 4396, 6875, 4397, 4406, 4407, - 6875, 4404, 4410, 4414, 4416, 4418, 4419, 4420, 4424, 4421, - 4425, 4426, 4422, 6875, 4431, 4432, 4428, 4429, 4442, 4445, - 6875, 6875, 4449, 6875, 4450, 4435, 4451, 4452, 4453, 4460, - 4462, 4463, 4465, 4457, 4467, 4473, 4471, 4474, 6875, 4479, + 4299, 4310, 4315, 4305, 6911, 4318, 4289, 4312, 4322, 4324, + 6911, 4326, 6911, 4314, 4328, 4329, 4334, 4333, 4344, 6911, + 4340, 4339, 4346, 4343, 4349, 4348, 4351, 4355, 4347, 4357, + 4358, 4367, 4359, 4363, 4362, 4372, 4373, 6911, 4368, 4370, + 4380, 4382, 4377, 4385, 4394, 4386, 4393, 4389, 4390, 4397, + 4399, 4400, 4402, 4404, 4409, 4408, 6911, 4412, 4410, 4415, + 4418, 4429, 4420, 4421, 4424, 6911, 4425, 4433, 4435, 6911, + 4431, 4427, 4434, 4442, 4445, 4446, 4448, 4449, 4450, 4453, + 4454, 4451, 6911, 4458, 4459, 4452, 4455, 4457, 4468, 6911, + 6911, 4473, 6911, 4474, 4461, 4476, 4478, 4481, 4485, 4483, - 4488, 4459, 4490, 4491, 4499, 4480, 4492, 4494, 6875, 6875, - 4496, 4501, 4497, 4504, 4507, 4505, 4510, 4515, 4513, 4511, - 4520, 4521, 4529, 6875, 4530, 4522, 4531, 4524, 6875, 4525, - 4532, 4533, 4536, 4538, 4539, 4545, 4540, 4541, 4547, 4549, - 4554, 4552, 4559, 4553, 4555, 4562, 4563, 4565, 4568, 4566, - 4572, 6875, 4575, 4576, 4577, 4578, 4580, 4585, 4586, 4587, - 4588, 4589, 4598, 6875, 4591, 6875, 4594, 4590, 4593, 4611, - 4601, 4615, 4612, 4616, 4618, 4620, 4622, 4623, 4626, 4627, - 4633, 4628, 4636, 4637, 4630, 4641, 4645, 4646, 6875, 4647, - 4648, 4650, 4653, 4655, 4657, 4658, 4660, 4661, 4663, 4666, + 4486, 4488, 4489, 4490, 4493, 4498, 4499, 6911, 4500, 4508, + 4501, 4511, 4520, 4521, 4513, 4517, 4504, 6911, 6911, 4527, + 4528, 4522, 4533, 4534, 4518, 4537, 4542, 4539, 4540, 4546, + 4547, 4556, 6911, 4549, 4538, 4557, 4548, 6911, 4551, 4559, + 4560, 4562, 4565, 4563, 4566, 4567, 4569, 4571, 4573, 4575, + 4580, 4584, 4578, 4585, 4586, 4588, 4591, 4592, 4590, 4600, + 6911, 4594, 4597, 4601, 4606, 4609, 4610, 4611, 4612, 4614, + 4615, 4619, 6911, 4622, 6911, 4618, 4621, 4617, 4627, 4624, + 4639, 4640, 4643, 4628, 4642, 4647, 4648, 4651, 4652, 4658, + 4653, 4659, 4661, 4655, 4666, 4670, 4671, 6911, 4673, 4663, - 4664, 4672, 4674, 4675, 4667, 4678, 4680, 4682, 6875, 4683, - 4685, 4686, 4691, 4692, 4693, 4696, 4697, 4703, 4707, 4699, - 4708, 4709, 6875, 4712, 4713, 4715, 6875, 4716, 4717, 4720, - 4721, 4729, 4722, 4726, 4724, 4730, 6875, 4734, 4737, 4742, - 4738, 4743, 4744, 4746, 4747, 4750, 4751, 4755, 6875, 4760, - 4756, 4764, 4765, 4763, 4766, 4771, 4776, 4767, 6875, 4777, - 4778, 4780, 4774, 4790, 4797, 4786, 4787, 4800, 4796, 4798, - 4795, 4799, 4805, 4804, 4806, 4809, 4810, 4811, 4822, 4823, - 4824, 6875, 4814, 6875, 4821, 4826, 4829, 4833, 4831, 4836, - 4837, 4839, 4842, 6875, 4843, 4847, 4849, 4846, 4851, 6875, + 4674, 4675, 4680, 4682, 4677, 4685, 4686, 4689, 4690, 4692, + 4699, 4701, 4693, 4702, 4691, 4695, 4703, 6911, 4710, 4713, + 4706, 4717, 4714, 4718, 4720, 4721, 4727, 4730, 4719, 4731, + 4733, 6911, 4734, 4736, 4740, 6911, 4737, 4741, 4744, 4747, + 4753, 4742, 4745, 4748, 4754, 6911, 4766, 4756, 4760, 4758, + 4762, 4768, 4770, 4771, 4773, 4775, 4777, 4778, 6911, 4788, + 4783, 4787, 4789, 4790, 4791, 4793, 4800, 4799, 6911, 4801, + 4802, 4803, 4809, 4816, 4817, 4812, 4813, 4826, 4818, 4822, + 4819, 4821, 4829, 4830, 4831, 4836, 4837, 4835, 4847, 4848, + 4850, 6911, 4838, 6911, 4843, 4851, 4852, 4861, 4856, 4859, - 4853, 4850, 4852, 4856, 6875, 4854, 4869, 4855, 4858, 4872, - 4876, 6875, 4879, 4880, 4881, 4888, 4890, 4885, 4892, 4873, - 4895, 4889, 4893, 4897, 4898, 4906, 4903, 4904, 6875, 4908, - 4902, 4911, 4913, 4914, 4915, 4919, 4921, 4927, 4920, 6875, - 4929, 4922, 4928, 4930, 4931, 4932, 4935, 4938, 4946, 4941, - 4951, 4944, 4937, 4949, 4953, 4954, 4960, 6875, 4957, 4961, - 4965, 4972, 4963, 4974, 6875, 4964, 6875, 4967, 4978, 4980, - 4982, 4984, 6875, 6875, 4986, 4993, 4988, 4992, 4989, 6875, - 6875, 4995, 6875, 4996, 6875, 4997, 4999, 6875, 6875, 5001, - 5002, 5003, 5004, 5005, 5013, 6875, 5017, 6875, 5025, 5007, + 4866, 4864, 4862, 6911, 4870, 4871, 4873, 4874, 4876, 6911, + 4878, 4875, 4877, 4881, 6911, 4880, 4894, 4888, 4895, 4897, + 4900, 6911, 4903, 4906, 4905, 4904, 4917, 4912, 4914, 4915, + 4918, 4916, 4920, 4922, 4923, 4931, 4926, 4927, 6911, 4933, + 4935, 4943, 4939, 4936, 4946, 4930, 4947, 4949, 4952, 6911, + 4953, 4954, 4956, 4957, 4959, 4960, 4961, 4962, 4969, 4966, + 4970, 4968, 4975, 4978, 4979, 4980, 4983, 6911, 4987, 4988, + 4985, 4995, 4992, 4991, 6911, 4996, 6911, 4998, 5002, 5006, + 5007, 5010, 6911, 6911, 5013, 5014, 5015, 5019, 5016, 6911, + 6911, 5021, 6911, 5022, 6911, 5023, 5026, 6911, 6911, 5024, - 5020, 5018, 5022, 5026, 6875, 5023, 5029, 5033, 5035, 5037, - 6875, 5030, 5046, 5038, 5043, 6875, 5049, 5050, 5041, 5051, - 6875, 5054, 5062, 5052, 5059, 5063, 5065, 5064, 5067, 5068, - 5071, 5073, 5074, 5075, 5079, 5086, 5088, 5090, 5092, 5093, - 5080, 5096, 5099, 5102, 5106, 5097, 5104, 5108, 5110, 5111, - 5112, 5114, 5115, 5117, 5119, 5122, 5123, 5129, 5125, 5121, - 5126, 5127, 5138, 5140, 5142, 5144, 5145, 5146, 5148, 5149, - 5150, 5152, 5153, 5156, 5159, 5154, 5157, 5162, 6875, 5165, - 5167, 5169, 5175, 5170, 5176, 5180, 5187, 5191, 5193, 6875, - 5195, 6875, 5197, 5182, 5188, 5201, 5202, 6875, 5203, 5204, + 5028, 5030, 5031, 5034, 5044, 6911, 5046, 6911, 5038, 5035, + 5047, 5041, 5049, 5053, 6911, 5050, 5056, 5052, 5060, 5062, + 6911, 5065, 5073, 5063, 5068, 6911, 5076, 5077, 5066, 5070, + 6911, 5078, 5087, 5084, 5082, 5090, 5091, 5092, 5093, 5094, + 5096, 5101, 5098, 5102, 5105, 5106, 5115, 5117, 5119, 5121, + 5112, 5109, 5123, 5129, 5131, 5133, 5126, 5135, 5136, 5137, + 5139, 5140, 5142, 5143, 5145, 5147, 5150, 5151, 5152, 5153, + 5149, 5166, 5154, 5158, 5168, 5164, 5176, 5170, 5172, 5177, + 5179, 5180, 5182, 5181, 5185, 5186, 5184, 5191, 5195, 6911, + 5189, 5198, 5188, 5199, 5200, 5208, 5212, 5216, 5219, 5221, - 5205, 5206, 5207, 5208, 5209, 5210, 5213, 5214, 5218, 6875, - 5225, 5215, 5212, 5233, 5236, 6875, 5237, 5239, 5240, 5241, - 5243, 5244, 5245, 5247, 5248, 5252, 5250, 5249, 5254, 5263, - 5255, 5264, 5267, 6875, 5271, 5277, 5278, 5274, 5279, 5280, - 5281, 5283, 5284, 5285, 5286, 5287, 5297, 5298, 5302, 6875, - 5290, 6875, 5303, 5306, 5307, 5293, 5310, 5311, 5308, 5314, - 6875, 6875, 5317, 5318, 5320, 5322, 5324, 5326, 5330, 5327, - 5331, 5341, 6875, 5332, 5348, 5335, 5340, 6875, 5342, 5343, - 5349, 5351, 6875, 5354, 5355, 5356, 5359, 5361, 5368, 5365, - 5362, 5372, 5373, 5374, 5376, 6875, 6875, 6875, 6875, 5377, + 6911, 5223, 6911, 5225, 5209, 5228, 5229, 5230, 6911, 5231, + 5232, 5233, 5234, 5235, 5236, 5238, 5237, 5241, 5242, 5246, + 6911, 5253, 5249, 5243, 5258, 5262, 6911, 5264, 5269, 5266, + 5270, 5271, 5272, 5275, 5274, 5276, 5277, 5278, 5280, 5282, + 5286, 5283, 5291, 5295, 6911, 5299, 5305, 5302, 5300, 5306, + 5307, 5308, 5310, 5311, 5312, 5314, 5323, 5317, 5327, 5334, + 6911, 5320, 6911, 5328, 5324, 5330, 5335, 5336, 5340, 5338, + 5344, 6911, 6911, 5346, 5347, 5348, 5350, 5352, 5353, 5357, + 5359, 5354, 5201, 6911, 5360, 5364, 5362, 5372, 6911, 5373, + 5374, 5376, 5378, 6911, 5379, 5380, 5382, 5383, 5393, 5381, - 5379, 5382, 5383, 5384, 5386, 5389, 5391, 5393, 5404, 5387, - 5390, 6875, 5409, 6875, 6875, 5406, 5410, 5412, 5413, 5414, - 5416, 5419, 5417, 6875, 5421, 6875, 5424, 5427, 5423, 5431, - 5434, 5437, 5420, 5441, 5443, 5444, 5445, 5446, 5453, 5451, - 5454, 5452, 5457, 5459, 5461, 6875, 6875, 5465, 5469, 5392, - 5472, 5470, 5474, 5473, 5482, 5477, 5480, 5483, 5484, 5486, - 5488, 5495, 5496, 5493, 5491, 6875, 5497, 5500, 5507, 6875, - 5501, 6875, 5506, 5512, 5514, 5502, 5508, 5515, 5516, 5522, - 5518, 5526, 6875, 6875, 5528, 5535, 5530, 6875, 6875, 5532, - 5533, 5537, 5539, 5534, 5540, 5543, 5542, 5545, 5547, 6875, + 5398, 5390, 5399, 5387, 5401, 5402, 5405, 6911, 6911, 6911, + 6911, 5406, 5409, 5411, 5412, 5414, 5415, 5417, 5420, 5421, + 5419, 5416, 5423, 6911, 5433, 6911, 6911, 5434, 5435, 5437, + 5441, 5442, 5424, 5444, 5447, 6911, 5445, 6911, 5449, 5452, + 5448, 5459, 5462, 5464, 5456, 5466, 5467, 5468, 5470, 5471, + 5478, 5476, 5479, 5477, 5482, 5484, 5486, 6911, 6911, 5490, + 5494, 5495, 5497, 5499, 5500, 5501, 5508, 5506, 5507, 5509, + 5511, 5513, 5514, 5522, 5523, 5519, 5520, 6911, 5527, 5525, + 5528, 6911, 5529, 6911, 5533, 5537, 5539, 5536, 5540, 5543, + 5546, 5547, 5549, 5545, 6911, 6911, 5551, 5562, 5557, 6911, - 5548, 6875, 5549, 5550, 5561, 5555, 5564, 5568, 5565, 5573, - 5571, 5574, 5572, 5576, 6875, 5575, 5577, 6875, 5585, 5586, - 5587, 5578, 5588, 6875, 5593, 5595, 5599, 5601, 6875, 5605, - 5602, 5607, 6875, 5609, 6875, 5596, 5610, 5611, 5620, 5617, - 6875, 5618, 5621, 6875, 5625, 5627, 5631, 5632, 5628, 5633, - 6875, 5637, 5634, 6875, 5639, 5643, 5644, 5648, 5640, 5650, - 5651, 5653, 5654, 5662, 5658, 5661, 6875, 6875, 5666, 5667, - 135, 5675, 5663, 5670, 5673, 5676, 5683, 5678, 5680, 5688, - 6875, 6875, 5689, 6875, 5691, 5692, 6875, 5679, 5697, 5701, - 5696, 5705, 5698, 5706, 5707, 5709, 5711, 5712, 5717, 5718, + 6911, 5559, 5560, 5564, 5566, 5561, 5567, 5570, 5572, 5574, + 5571, 6911, 5576, 6911, 5575, 5577, 5585, 5582, 5594, 5598, + 5593, 5602, 5600, 5589, 5601, 5603, 6911, 5604, 5605, 6911, + 5612, 5614, 5615, 5609, 5610, 6911, 5620, 5616, 5628, 5630, + 6911, 5632, 5633, 5635, 5636, 6911, 5639, 6911, 5622, 5641, + 5643, 5650, 5647, 6911, 5648, 5651, 6911, 5654, 5657, 5661, + 5662, 5658, 5663, 6911, 5667, 5664, 6911, 5669, 5673, 5674, + 5678, 5670, 5680, 5681, 5683, 5684, 5692, 5688, 5691, 6911, + 6911, 5696, 5697, 135, 5705, 5693, 5700, 5703, 5706, 5713, + 5708, 5710, 5718, 6911, 6911, 5719, 6911, 5721, 5722, 6911, - 5719, 5730, 5734, 5720, 5736, 5740, 5742, 5744, 5746, 5748, - 5722, 5750, 5732, 5751, 5753, 5754, 5756, 5757, 5760, 5758, - 5761, 6875, 5764, 5766, 5768, 5770, 6875, 5773, 5776, 5780, - 5782, 6875, 5785, 5786, 5789, 5790, 5791, 6875, 5774, 5794, - 5797, 5681, 5801, 5802, 5803, 5804, 5812, 5805, 5807, 5809, - 6875, 6875, 6875, 5815, 5823, 6875, 5825, 5817, 5808, 5826, - 6875, 5828, 5829, 5830, 6875, 6875, 6875, 5832, 5834, 5836, - 6875, 5835, 5843, 6875, 5840, 6875, 5841, 6875, 5846, 5848, - 5849, 5847, 6875, 5854, 5858, 5860, 5863, 6875, 5866, 5869, - 5873, 5861, 5875, 5877, 5876, 6875, 5884, 5880, 5882, 5889, + 5709, 5727, 5731, 5726, 5735, 5728, 5736, 5737, 5739, 5741, + 5742, 5747, 5748, 5749, 5760, 5764, 5750, 5766, 5770, 5772, + 5774, 5776, 5778, 5752, 5780, 5762, 5781, 5783, 5784, 5786, + 5787, 5790, 5788, 5791, 6911, 5794, 5796, 5798, 5800, 6911, + 5803, 5806, 5810, 5812, 6911, 5815, 5816, 5819, 5820, 5821, + 6911, 5804, 5824, 5827, 5711, 5831, 5832, 5833, 5834, 5842, + 5835, 5837, 5839, 6911, 6911, 6911, 5845, 5853, 5847, 6911, + 5855, 5856, 5838, 5857, 6911, 5859, 5860, 5862, 6911, 6911, + 6911, 5864, 5866, 5867, 6911, 5865, 5878, 6911, 5868, 6911, + 5873, 6911, 5877, 5879, 5886, 5881, 6911, 5883, 5891, 5892, - 5879, 5886, 5883, 5894, 5890, 5906, 5891, 5893, 6875, 5901, - 5902, 5909, 5910, 5903, 5912, 5913, 6875, 5915, 6875, 5918, - 6875, 5919, 5920, 5921, 5925, 5930, 5924, 5923, 5936, 5926, - 5937, 5945, 5938, 5941, 5943, 5949, 5951, 6875, 6875, 5953, - 5955, 6875, 5950, 6875, 5961, 6875, 5956, 5958, 5962, 5963, - 5968, 6875, 6875, 5965, 5966, 5975, 5982, 5977, 5978, 6875, - 5980, 5985, 5983, 5988, 6875, 6875, 5989, 5996, 5993, 6875, - 5991, 5995, 6004, 5992, 6001, 6006, 6008, 6011, 6010, 6018, - 6014, 6015, 6016, 6023, 6017, 6026, 6028, 6034, 6875, 6875, - 6875, 6037, 6024, 6045, 6041, 6043, 6048, 6038, 6875, 6047, + 5895, 6911, 5898, 5901, 5903, 5905, 5893, 5907, 5910, 6911, + 5917, 5916, 5918, 5909, 5912, 5919, 5920, 5922, 5924, 5934, + 5925, 5933, 6911, 5935, 5938, 5940, 5936, 5929, 5944, 5946, + 6911, 5947, 6911, 5952, 6911, 5949, 5953, 5955, 5954, 5956, + 5957, 5960, 5963, 5964, 5970, 5974, 5972, 5976, 5977, 5983, + 5978, 6911, 6911, 5985, 5987, 6911, 5980, 6911, 5989, 6911, + 5991, 5992, 5993, 5995, 5999, 6911, 6911, 6006, 5996, 6000, + 6018, 6002, 6010, 6911, 6013, 6017, 6015, 6020, 6911, 6027, + 6911, 6022, 6030, 6023, 6911, 6026, 6033, 6036, 6037, 6038, + 6040, 6043, 6041, 6044, 6051, 6046, 6049, 6047, 6056, 6053, - 6051, 6053, 6054, 6061, 6057, 6060, 6875, 6064, 6062, 6063, - 6065, 6067, 6068, 6069, 6070, 6875, 6072, 6082, 6084, 6086, - 6089, 6090, 6093, 6097, 6099, 6101, 6094, 6102, 6110, 6106, - 6875, 6109, 6875, 6875, 6105, 6875, 6112, 6113, 6114, 6115, - 6116, 6875, 6119, 6120, 6121, 6122, 6123, 6129, 6126, 6131, - 6875, 6145, 6127, 6132, 6144, 6875, 6875, 6141, 6153, 6875, - 6155, 6156, 6150, 6148, 6157, 6158, 6160, 6163, 6875, 6167, - 6165, 6172, 6173, 6174, 6175, 6176, 6875, 6177, 6178, 6180, - 6181, 6875, 6184, 6183, 6186, 6188, 6189, 6875, 6190, 6191, - 6212, 6205, 6875, 6196, 6214, 6207, 6875, 6875, 6875, 6219, + 6057, 6063, 6069, 6911, 6911, 6911, 6062, 6071, 6078, 6076, + 6077, 6079, 6081, 6911, 6082, 6084, 6085, 6086, 6094, 6089, + 6093, 6911, 6096, 6095, 6097, 6098, 6101, 6102, 6103, 6109, + 6911, 6115, 6117, 6124, 6120, 6112, 6127, 6129, 6131, 6134, + 6136, 6137, 6138, 6110, 6139, 6911, 6141, 6911, 6911, 6142, + 6911, 6143, 6145, 6147, 6146, 6148, 6911, 6152, 6153, 6154, + 6155, 6156, 6162, 6158, 6160, 6911, 6163, 6178, 6170, 6174, + 6175, 6911, 6911, 6177, 6183, 6911, 6185, 6186, 6187, 6194, + 6192, 6189, 6196, 6200, 6911, 6199, 6202, 6206, 6208, 6209, + 6210, 6211, 6911, 6212, 6213, 6215, 6216, 6911, 6219, 6218, - 6222, 6223, 6875, 6875, 6875, 6875, 6225, 6208, 6215, 6229, - 6875, 6231, 6235, 6239, 6241, 6245, 6244, 6875, 6246, 6238, - 6250, 6252, 6253, 6875, 6875, 6254, 6255, 6256, 6258, 6259, - 6875, 6875, 6260, 6262, 6264, 6263, 6265, 6875, 6266, 6271, - 6278, 6273, 6286, 6289, 6291, 6281, 6292, 6293, 6300, 6301, - 6283, 6298, 6303, 6304, 6306, 6307, 6315, 6316, 6312, 6320, - 6322, 6317, 6323, 6875, 6875, 6330, 6875, 6334, 6327, 6875, - 6875, 6338, 6340, 6342, 6344, 6875, 6346, 6348, 6350, 6352, - 6331, 6875, 6353, 6355, 6356, 6358, 6359, 6875, 6361, 6363, - 6367, 6368, 6364, 6369, 6371, 6374, 6875, 6375, 6385, 6875, + 6221, 6223, 6224, 6911, 6225, 6227, 6246, 6243, 6911, 6231, + 6242, 6241, 6911, 6911, 6911, 6250, 6253, 6255, 6911, 6911, + 6911, 6911, 6257, 6258, 6260, 6262, 6911, 6265, 6269, 6273, + 6275, 6280, 6268, 6911, 6276, 6282, 6284, 6285, 6286, 6911, + 6911, 6287, 6289, 6290, 6292, 6294, 6295, 6911, 6911, 6296, + 6298, 6302, 6299, 6301, 6911, 6304, 6307, 6314, 6311, 6317, + 6324, 6326, 6319, 6327, 6328, 6336, 6339, 6329, 6331, 6338, + 6342, 6343, 6341, 6345, 6355, 6350, 6352, 6358, 6353, 6361, + 6911, 6911, 6363, 6911, 6365, 6367, 6911, 6911, 6370, 6372, + 6374, 6378, 6911, 6380, 6382, 6384, 6386, 6375, 6911, 6387, - 6875, 6376, 6386, 6378, 6387, 6380, 6875, 6392, 6397, 6393, - 6396, 6399, 6402, 6400, 6875, 6403, 6405, 6875, 6875, 6406, - 6408, 6875, 6875, 6411, 6875, 6875, 6875, 6875, 6875, 6875, - 6875, 6875, 6412, 6419, 6875, 6413, 6425, 6428, 6875, 6430, - 6875, 6415, 6431, 6432, 6421, 6875, 6433, 6875, 6434, 6435, - 6439, 6443, 6448, 6449, 6442, 6451, 6453, 6452, 6454, 6458, - 6456, 6460, 6459, 6461, 6462, 6475, 6466, 6476, 6875, 6875, - 6875, 6469, 6477, 6485, 6478, 6489, 6490, 6493, 6495, 6480, - 6496, 6498, 6500, 6502, 6503, 6504, 6512, 6508, 6509, 6510, - 6514, 6511, 6518, 6875, 6524, 6520, 6525, 6527, 6875, 6530, + 6389, 6391, 6393, 6392, 6394, 6911, 6398, 6399, 6406, 6395, + 6400, 6403, 6407, 6412, 6911, 6409, 6417, 6911, 6911, 6419, + 6420, 6421, 6425, 6422, 6911, 6427, 6434, 6429, 6431, 6432, + 6435, 6433, 6911, 6438, 6439, 6911, 6911, 6441, 6442, 6911, + 6911, 6446, 6911, 6911, 6911, 6911, 6911, 6911, 6911, 6911, + 6450, 6456, 6911, 6911, 6452, 6461, 6463, 6911, 6467, 6911, + 6454, 6464, 6470, 6458, 6911, 6468, 6911, 6469, 6475, 6471, + 6479, 6480, 6483, 6485, 6487, 6489, 6488, 6490, 6493, 6491, + 6497, 6494, 6496, 6505, 6502, 6503, 6511, 6911, 6911, 6911, + 6512, 6513, 6519, 6520, 6522, 6524, 6528, 6531, 6532, 6514, - 6875, 6529, 6875, 6875, 6533, 6536, 6534, 6538, 6546, 6549, - 6539, 6541, 6548, 6550, 6552, 6875, 6559, 6875, 6875, 6556, - 6560, 6875, 6561, 6562, 6875, 6563, 6564, 6565, 6568, 6572, - 6570, 6571, 6573, 6587, 6875, 6875, 6574, 6579, 6582, 6591, - 6588, 6598, 6595, 6599, 6600, 6602, 6603, 6612, 6875, 6609, - 6610, 6614, 6875, 6616, 6611, 6617, 6618, 6619, 6627, 6623, - 6626, 6875, 6628, 6875, 6632, 6634, 6635, 6625, 6633, 6636, - 6647, 6645, 6641, 6875, 6651, 6655, 6653, 6657, 6659, 6661, - 6662, 6663, 6665, 6668, 6674, 6671, 6678, 6679, 6675, 6683, - 6680, 6875, 6690, 6681, 6875, 6687, 6691, 6684, 6693, 6697, + 6535, 6536, 6537, 6539, 6540, 6549, 6544, 6545, 6547, 6554, + 6546, 6560, 6911, 6562, 6548, 6550, 6568, 6911, 6556, 6911, + 6565, 6911, 6911, 6573, 6574, 6570, 6576, 6585, 6586, 6577, + 6581, 6582, 6584, 6588, 6911, 6593, 6911, 6911, 6590, 6596, + 6911, 6598, 6599, 6911, 6597, 6600, 6602, 6606, 6607, 6604, + 6608, 6609, 6625, 6911, 6911, 6610, 6615, 6618, 6627, 6629, + 6628, 6631, 6635, 6636, 6638, 6639, 6648, 6911, 6645, 6646, + 6650, 6911, 6652, 6647, 6653, 6654, 6655, 6663, 6659, 6662, + 6911, 6664, 6911, 6668, 6670, 6671, 6661, 6669, 6672, 6683, + 6681, 6677, 6911, 6687, 6691, 6689, 6693, 6695, 6697, 6698, - 6875, 6702, 6695, 6704, 6705, 6708, 6709, 6875, 6711, 6718, - 6713, 6875, 6719, 6875, 6875, 6721, 6715, 6722, 6728, 6730, - 6875, 6875, 6875, 6755, 6762, 6769, 6776, 6783, 6790, 6797, - 88, 6804, 6811, 6818, 6825, 6832, 6839, 6846, 6853, 6860, - 6867 + 6699, 6701, 6704, 6710, 6707, 6714, 6715, 6711, 6719, 6716, + 6911, 6726, 6717, 6911, 6723, 6727, 6720, 6729, 6733, 6911, + 6738, 6731, 6740, 6741, 6744, 6745, 6911, 6747, 6754, 6749, + 6911, 6755, 6911, 6911, 6757, 6751, 6758, 6764, 6766, 6911, + 6911, 6911, 6791, 6798, 6805, 6812, 6819, 6826, 6833, 88, + 6840, 6847, 6854, 6861, 6868, 6875, 6882, 6889, 6896, 6903 } ; -static const flex_int16_t yy_def[3542] = +static const flex_int16_t yy_def[3561] = { 0, - 3523, 1, 3524, 3524, 3525, 3525, 3526, 3526, 3527, 3527, - 3528, 3528, 3529, 3529, 3530, 3530, 3523, 3531, 3523, 3523, - 3523, 3523, 3532, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3533, 3523, 3523, 3523, - 3533, 3534, 3523, 3523, 3523, 3534, 3535, 3523, 3523, 3523, - 3523, 3535, 3536, 3523, 3523, 3523, 3536, 3537, 3523, 3538, - 3523, 3537, 3537, 3539, 3523, 3523, 3523, 3523, 3539, 3540, - 3523, 3523, 3523, 3540, 3531, 3531, 3523, 3541, 3532, 3541, - 3532, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, + 3542, 1, 3543, 3543, 3544, 3544, 3545, 3545, 3546, 3546, + 3547, 3547, 3548, 3548, 3549, 3549, 3542, 3550, 3542, 3542, + 3542, 3542, 3551, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3552, 3542, 3542, 3542, + 3552, 3553, 3542, 3542, 3542, 3553, 3554, 3542, 3542, 3542, + 3542, 3554, 3555, 3542, 3542, 3542, 3555, 3556, 3542, 3557, + 3542, 3556, 3556, 3558, 3542, 3542, 3542, 3542, 3558, 3559, + 3542, 3542, 3542, 3559, 3550, 3550, 3542, 3560, 3551, 3560, + 3551, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3533, - 3533, 3534, 3534, 3535, 3535, 3523, 3536, 3536, 3537, 3537, - 3538, 3538, 3537, 3539, 3539, 3523, 3540, 3540, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3552, + 3552, 3553, 3553, 3554, 3554, 3542, 3555, 3555, 3556, 3556, + 3557, 3557, 3556, 3558, 3558, 3542, 3559, 3559, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3537, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3556, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3523, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3523, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3537, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3556, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3523, 3531, - 3523, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3523, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, + 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3523, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3523, 3531, 3531, 3537, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3556, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3523, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3537, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3523, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3523, 3531, 3523, 3523, 3531, - 3523, 3523, 3531, 3531, 3523, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3556, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3542, + 3542, 3550, 3542, 3542, 3550, 3550, 3542, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3523, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3523, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3523, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3537, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3523, 3531, 3531, 3523, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3523, 3531, 3531, 3531, 3531, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3556, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3542, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, - 3531, 3531, 3531, 3531, 3523, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3523, 3531, 3523, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3523, 3523, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3523, 3531, 3531, 3523, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3523, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3523, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3523, 3531, 3531, 3531, 3531, 3531, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3542, 3550, 3542, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3542, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3542, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3523, 3531, 3531, 3531, - 3531, 3531, 3537, 3537, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3523, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3523, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3523, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3542, 3550, 3550, 3550, 3550, 3550, 3556, 3556, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3523, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3523, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3523, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3523, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3523, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3523, - 3531, 3531, 3531, 3537, 3531, 3531, 3531, 3531, 3531, 3523, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3523, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3523, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3523, 3531, 3531, 3531, 3531, 3531, 3531, 3531, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3556, 3550, + 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3523, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3523, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3523, 3531, - 3523, 3531, 3531, 3531, 3531, 3531, 3523, 3531, 3523, 3531, - 3531, 3531, 3531, 3531, 3523, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3523, 3531, 3531, - 3531, 3531, 3537, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3523, 3531, 3531, 3531, 3531, 3523, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3542, 3550, 3542, 3550, 3550, 3550, + 3550, 3550, 3542, 3550, 3542, 3550, 3550, 3550, 3550, 3550, + 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3556, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, + 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3531, 3531, 3531, 3523, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3523, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3523, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3523, 3531, - 3523, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3542, 3550, 3542, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3531, 3523, 3523, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3523, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3523, - 3531, 3531, 3531, 3531, 3531, 3531, 3523, 3531, 3523, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3523, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3523, 3531, 3531, 3531, 3537, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3523, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3523, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3542, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, + 3550, 3550, 3550, 3542, 3550, 3542, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3542, 3550, 3550, 3550, 3556, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3523, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3523, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3523, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3523, 3523, - 3531, 3531, 3531, 3523, 3531, 3531, 3531, 3531, 3531, 3531, + 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3542, 3542, 3550, 3550, 3550, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3523, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3523, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3523, 3531, 3531, 3531, 3531, 3531, 3531, - 3523, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3523, 3531, 3531, 3531, 3531, - 3523, 3531, 3531, 3531, 3523, 3531, 3531, 3531, 3531, 3531, - 3523, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3537, 3531, 3523, 3531, 3531, 3531, 3523, 3531, + 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3542, 3550, + 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3542, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3523, - 3531, 3523, 3531, 3531, 3531, 3523, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3523, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3523, 3523, 3531, - 3523, 3531, 3531, 3531, 3531, 3523, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3523, 3531, 3531, 3523, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3523, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3523, 3531, 3531, 3531, + 3556, 3550, 3542, 3550, 3550, 3550, 3542, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3542, + 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3542, 3542, 3550, 3542, 3550, + 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3542, 3550, 3550, 3542, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, - 3531, 3531, 3523, 3531, 3523, 3531, 3531, 3531, 3531, 3531, - 3531, 3523, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3523, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3523, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3523, 3531, 3531, 3531, - 3523, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3523, 3531, 3531, 3531, 3531, 3531, 3531, - 3523, 3523, 3531, 3523, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3523, 3531, + 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, + 3542, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3542, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3542, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3542, + 3542, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3531, 3537, 3531, 3531, 3531, 3531, 3531, 3531, 3523, 3523, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3523, 3531, 3531, 3531, 3531, 3523, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3523, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3523, 3531, 3523, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3523, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, + 3556, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3542, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3542, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3542, 3550, 3542, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3523, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3523, 3531, 3531, 3531, 3523, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3523, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3523, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3523, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3523, 3531, 3523, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3537, 3531, 3523, 3531, 3531, 3531, 3531, 3531, 3523, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3542, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3542, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, - 3531, 3531, 3531, 3531, 3523, 3531, 3531, 3531, 3531, 3531, - 3531, 3523, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3523, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3523, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3523, 3531, 3531, - 3531, 3531, 3531, 3531, 3523, 3531, 3523, 3531, 3531, 3531, - 3531, 3531, 3523, 3523, 3531, 3531, 3531, 3531, 3531, 3523, - 3523, 3531, 3523, 3531, 3523, 3531, 3531, 3523, 3523, 3531, - 3531, 3531, 3531, 3531, 3531, 3523, 3531, 3523, 3531, 3531, + 3550, 3556, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3542, + 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, + 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, + 3550, 3550, 3550, 3550, 3542, 3550, 3542, 3550, 3550, 3550, + 3550, 3550, 3542, 3542, 3550, 3550, 3550, 3550, 3550, 3542, + 3542, 3550, 3542, 3550, 3542, 3550, 3550, 3542, 3542, 3550, - 3531, 3531, 3531, 3531, 3523, 3531, 3531, 3531, 3531, 3531, - 3523, 3531, 3531, 3531, 3531, 3523, 3531, 3531, 3531, 3531, - 3523, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3537, 3531, 3531, 3531, 3531, 3523, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3523, - 3531, 3523, 3531, 3531, 3531, 3531, 3531, 3523, 3531, 3531, + 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3542, 3550, 3550, + 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, + 3542, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, + 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3556, 3550, 3550, 3550, 3550, 3542, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3523, - 3531, 3531, 3531, 3531, 3531, 3523, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3523, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3523, - 3531, 3523, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3523, 3523, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3523, 3531, 3531, 3531, 3531, 3523, 3531, 3531, - 3531, 3531, 3523, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3523, 3523, 3523, 3523, 3531, + 3542, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3542, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3542, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3542, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3542, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3542, 3550, + 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3523, 3531, 3523, 3523, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3523, 3531, 3523, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3537, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3523, 3523, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3523, 3531, 3531, 3531, 3523, - 3531, 3523, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3523, 3523, 3531, 3531, 3531, 3523, 3523, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3523, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3542, 3542, + 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3542, 3550, 3542, 3542, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3542, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3556, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3542, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, + 3550, 3542, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3542, 3542, 3550, 3550, 3550, 3542, - 3531, 3523, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3523, 3531, 3531, 3523, 3531, 3531, - 3531, 3531, 3531, 3523, 3531, 3531, 3531, 3531, 3523, 3531, - 3531, 3531, 3523, 3531, 3523, 3531, 3531, 3531, 3531, 3531, - 3523, 3531, 3531, 3523, 3531, 3531, 3531, 3531, 3531, 3531, - 3523, 3531, 3531, 3523, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3523, 3523, 3531, 3531, - 3537, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3523, 3523, 3531, 3523, 3531, 3531, 3523, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, + 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3542, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3542, + 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, + 3542, 3550, 3550, 3550, 3550, 3542, 3550, 3542, 3550, 3550, + 3550, 3550, 3550, 3542, 3550, 3550, 3542, 3550, 3550, 3550, + 3550, 3550, 3550, 3542, 3550, 3550, 3542, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, + 3542, 3550, 3550, 3556, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3542, 3542, 3550, 3542, 3550, 3550, 3542, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3523, 3531, 3531, 3531, 3531, 3523, 3531, 3531, 3531, - 3531, 3523, 3531, 3531, 3531, 3531, 3531, 3523, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3523, 3523, 3523, 3531, 3531, 3523, 3531, 3531, 3531, 3531, - 3523, 3531, 3531, 3531, 3523, 3523, 3523, 3531, 3531, 3531, - 3523, 3531, 3531, 3523, 3531, 3523, 3531, 3523, 3531, 3531, - 3531, 3531, 3523, 3531, 3531, 3531, 3531, 3523, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3523, 3531, 3531, 3531, 3531, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3542, + 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, + 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3542, 3542, 3542, 3550, 3550, 3550, 3542, + 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3542, 3542, + 3542, 3550, 3550, 3550, 3542, 3550, 3550, 3542, 3550, 3542, + 3550, 3542, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3523, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3523, 3531, 3523, 3531, - 3523, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3523, 3523, 3531, - 3531, 3523, 3531, 3523, 3531, 3523, 3531, 3531, 3531, 3531, - 3531, 3523, 3523, 3531, 3531, 3531, 3531, 3531, 3531, 3523, - 3531, 3531, 3531, 3531, 3523, 3523, 3531, 3531, 3531, 3523, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3523, 3523, - 3523, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3523, 3531, + 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3542, 3550, 3542, 3550, 3542, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3542, 3542, 3550, 3550, 3542, 3550, 3542, 3550, 3542, + 3550, 3550, 3550, 3550, 3550, 3542, 3542, 3550, 3550, 3550, + 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3542, 3550, + 3542, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3531, 3531, 3531, 3531, 3531, 3531, 3523, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3523, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3523, 3531, 3523, 3523, 3531, 3523, 3531, 3531, 3531, 3531, - 3531, 3523, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3523, 3531, 3531, 3531, 3531, 3523, 3523, 3531, 3531, 3523, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3523, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3523, 3531, 3531, 3531, - 3531, 3523, 3531, 3531, 3531, 3531, 3531, 3523, 3531, 3531, - 3531, 3531, 3523, 3531, 3531, 3531, 3523, 3523, 3523, 3531, + 3550, 3550, 3550, 3542, 3542, 3542, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3542, 3542, 3550, + 3542, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, + 3550, 3542, 3542, 3550, 3550, 3542, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3542, 3550, 3550, - 3531, 3531, 3523, 3523, 3523, 3523, 3531, 3531, 3531, 3531, - 3523, 3531, 3531, 3531, 3531, 3531, 3531, 3523, 3531, 3531, - 3531, 3531, 3531, 3523, 3523, 3531, 3531, 3531, 3531, 3531, - 3523, 3523, 3531, 3531, 3531, 3531, 3531, 3523, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3523, 3523, 3531, 3523, 3531, 3531, 3523, - 3523, 3531, 3531, 3531, 3531, 3523, 3531, 3531, 3531, 3531, - 3531, 3523, 3531, 3531, 3531, 3531, 3531, 3523, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3523, 3531, 3531, 3523, + 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3542, 3550, + 3550, 3550, 3542, 3542, 3542, 3550, 3550, 3550, 3542, 3542, + 3542, 3542, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, + 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3542, + 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3542, 3550, + 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3542, 3542, 3550, 3542, 3550, 3550, 3542, 3542, 3550, 3550, + 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3542, 3550, - 3523, 3531, 3531, 3531, 3531, 3531, 3523, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3523, 3531, 3531, 3523, 3523, 3531, - 3531, 3523, 3523, 3531, 3523, 3523, 3523, 3523, 3523, 3523, - 3523, 3523, 3531, 3531, 3523, 3531, 3531, 3531, 3523, 3531, - 3523, 3531, 3531, 3531, 3531, 3523, 3531, 3523, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3523, 3523, - 3523, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3523, 3531, 3531, 3531, 3531, 3523, 3531, + 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3542, 3542, 3550, + 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3542, 3550, 3550, 3542, 3542, 3550, 3550, 3542, + 3542, 3550, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, + 3550, 3550, 3542, 3542, 3550, 3550, 3550, 3542, 3550, 3542, + 3550, 3550, 3550, 3550, 3542, 3550, 3542, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3542, 3542, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3523, 3531, 3523, 3523, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3523, 3531, 3523, 3523, 3531, - 3531, 3523, 3531, 3531, 3523, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3523, 3523, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3523, 3531, - 3531, 3531, 3523, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3523, 3531, 3523, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3523, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3523, 3531, 3531, 3523, 3531, 3531, 3531, 3531, 3531, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3542, 3550, 3542, + 3550, 3542, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3542, 3550, 3542, 3542, 3550, 3550, + 3542, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3542, 3542, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, + 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3542, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3523, 3531, 3531, 3531, 3531, 3531, 3531, 3523, 3531, 3531, - 3531, 3523, 3531, 3523, 3523, 3531, 3531, 3531, 3531, 3531, - 3523, 3523, 0, 3523, 3523, 3523, 3523, 3523, 3523, 3523, - 3523, 3523, 3523, 3523, 3523, 3523, 3523, 3523, 3523, 3523, - 3523 + 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3542, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3542, + 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, + 3542, 3550, 3542, 3542, 3550, 3550, 3550, 3550, 3550, 3542, + 3542, 0, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, + 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542 } ; -static const flex_int16_t yy_nxt[6916] = +static const flex_int16_t yy_nxt[6952] = { 0, 18, 19, 20, 21, 22, 23, 22, 18, 18, 18, 18, 18, 22, 24, 25, 26, 27, 28, 29, 30, @@ -1645,7 +1649,7 @@ static const flex_int16_t yy_nxt[6916] = 311, 86, 86, 86, 86, 307, 86, 318, 86, 86, 86, 319, 86, 325, 312, 313, 315, 309, 314, 316, 86, 320, 86, 329, 321, 328, 322, 330, 327, 326, - 332, 86, 86, 86, 739, 334, 86, 338, 323, 331, + 332, 86, 86, 86, 741, 334, 86, 338, 323, 331, 324, 86, 335, 86, 86, 340, 86, 342, 86, 339, 341, 86, 333, 86, 86, 86, 343, 336, 345, 86, 86, 344, 86, 86, 86, 347, 86, 86, 346, 349, @@ -1678,677 +1682,681 @@ static const flex_int16_t yy_nxt[6916] = 86, 86, 86, 478, 86, 482, 86, 481, 474, 472, 479, 475, 473, 86, 476, 477, 86, 483, 485, 86, 86, 484, 86, 86, 490, 86, 491, 86, 492, 86, - 86, 486, 86, 508, 495, 496, 86, 493, 489, 487, - 86, 86, 488, 86, 86, 497, 86, 494, 498, 500, - 502, 501, 86, 507, 499, 503, 509, 510, 86, 86, - 86, 86, 86, 86, 511, 86, 525, 86, 504, 86, - 86, 505, 530, 506, 86, 512, 527, 513, 86, 529, + 86, 486, 86, 509, 496, 497, 86, 493, 489, 487, + 86, 86, 488, 86, 494, 498, 86, 495, 499, 501, + 503, 502, 86, 86, 500, 504, 86, 510, 511, 86, + 86, 512, 508, 86, 86, 86, 86, 526, 505, 86, + 86, 506, 581, 507, 86, 513, 86, 514, 86, 530, - 524, 86, 528, 514, 526, 541, 86, 515, 531, 170, - 542, 86, 516, 549, 86, 517, 86, 518, 543, 519, - 532, 86, 86, 544, 86, 86, 86, 545, 86, 591, - 547, 550, 520, 548, 546, 521, 86, 522, 86, 523, - 86, 552, 533, 534, 551, 86, 554, 86, 560, 86, - 558, 556, 535, 536, 537, 538, 539, 86, 561, 540, - 86, 557, 553, 555, 86, 86, 565, 86, 559, 563, - 86, 566, 86, 86, 86, 562, 570, 86, 86, 86, - 564, 86, 86, 86, 573, 568, 86, 567, 569, 574, - 575, 86, 86, 86, 572, 580, 86, 587, 86, 577, + 525, 528, 86, 515, 529, 527, 86, 516, 86, 531, + 533, 543, 517, 542, 546, 518, 86, 519, 544, 520, + 170, 547, 86, 545, 86, 532, 86, 86, 553, 86, + 86, 551, 521, 86, 86, 522, 86, 523, 168, 524, + 86, 548, 534, 535, 550, 549, 552, 556, 86, 86, + 555, 557, 536, 537, 538, 539, 540, 86, 86, 541, + 86, 558, 554, 559, 86, 86, 566, 86, 561, 562, + 564, 86, 86, 86, 567, 563, 86, 86, 571, 565, + 86, 560, 86, 569, 86, 86, 86, 568, 86, 86, + 570, 574, 575, 576, 86, 86, 573, 86, 578, 582, - 579, 576, 571, 86, 86, 581, 582, 578, 584, 86, - 86, 86, 86, 585, 603, 86, 86, 588, 86, 168, - 86, 86, 606, 583, 604, 589, 592, 590, 586, 593, - 594, 86, 608, 86, 86, 86, 605, 609, 86, 611, - 610, 595, 607, 596, 86, 86, 86, 86, 612, 597, - 86, 613, 86, 615, 617, 86, 86, 598, 599, 86, - 621, 600, 601, 616, 618, 602, 86, 614, 86, 619, - 86, 620, 622, 86, 86, 86, 86, 86, 627, 86, - 625, 626, 86, 86, 86, 86, 628, 86, 623, 86, - 633, 629, 86, 86, 634, 624, 632, 635, 86, 637, + 583, 86, 572, 580, 579, 577, 86, 86, 86, 588, + 585, 586, 86, 589, 86, 86, 590, 584, 604, 86, + 86, 166, 86, 607, 86, 86, 587, 86, 591, 593, + 594, 595, 592, 86, 605, 609, 608, 86, 606, 86, + 615, 86, 596, 611, 597, 86, 86, 86, 86, 613, + 598, 612, 86, 614, 86, 616, 618, 86, 599, 600, + 610, 86, 601, 602, 86, 617, 603, 86, 621, 619, + 622, 86, 86, 86, 620, 623, 86, 86, 86, 86, + 628, 86, 626, 627, 86, 86, 86, 624, 629, 86, + 86, 86, 634, 630, 625, 635, 86, 86, 633, 86, - 86, 631, 630, 86, 636, 638, 639, 86, 640, 86, - 642, 86, 86, 86, 86, 86, 86, 86, 86, 86, - 644, 648, 86, 646, 86, 641, 86, 656, 166, 658, - 650, 86, 643, 86, 645, 86, 647, 649, 655, 654, - 651, 86, 652, 86, 653, 660, 86, 86, 659, 86, - 657, 86, 663, 666, 661, 86, 669, 662, 86, 86, - 86, 664, 86, 668, 86, 86, 665, 86, 86, 672, - 86, 86, 671, 676, 675, 667, 86, 86, 86, 86, - 670, 678, 86, 86, 86, 86, 677, 673, 674, 86, - 86, 86, 681, 679, 693, 86, 695, 680, 86, 682, + 636, 86, 638, 632, 631, 86, 86, 641, 86, 637, + 639, 86, 640, 86, 643, 86, 86, 86, 86, 645, + 86, 642, 86, 649, 86, 647, 86, 86, 86, 644, + 86, 657, 677, 86, 651, 659, 646, 86, 648, 658, + 650, 86, 652, 86, 653, 654, 655, 656, 660, 86, + 86, 86, 86, 86, 664, 86, 668, 86, 662, 671, + 86, 663, 86, 661, 667, 86, 665, 86, 666, 86, + 670, 86, 86, 86, 673, 86, 674, 669, 678, 86, + 86, 86, 86, 672, 680, 86, 86, 86, 86, 711, + 679, 675, 86, 676, 86, 683, 681, 86, 695, 86, - 692, 86, 690, 86, 683, 691, 684, 697, 694, 1606, - 86, 696, 685, 86, 686, 698, 700, 687, 688, 699, - 86, 86, 705, 86, 689, 701, 86, 86, 86, 702, - 704, 86, 703, 706, 709, 86, 86, 712, 707, 86, - 86, 714, 708, 86, 86, 86, 86, 718, 86, 86, - 710, 86, 86, 86, 86, 711, 716, 721, 715, 86, - 717, 86, 722, 86, 713, 725, 86, 719, 86, 724, - 723, 720, 726, 86, 170, 729, 731, 727, 728, 86, - 730, 86, 86, 86, 86, 732, 86, 86, 736, 738, - 86, 741, 86, 733, 742, 86, 744, 734, 740, 737, + 682, 86, 684, 694, 697, 692, 86, 685, 693, 686, + 699, 696, 165, 698, 86, 687, 86, 688, 86, 700, + 689, 690, 707, 701, 86, 86, 86, 691, 86, 703, + 86, 702, 86, 708, 704, 706, 86, 705, 86, 714, + 709, 86, 86, 716, 86, 86, 710, 86, 86, 720, + 86, 86, 86, 86, 163, 712, 713, 718, 723, 717, + 86, 724, 719, 86, 86, 86, 715, 86, 170, 721, + 727, 729, 730, 722, 728, 731, 86, 86, 726, 725, + 86, 86, 86, 86, 86, 86, 86, 86, 732, 738, + 161, 86, 733, 740, 742, 744, 735, 86, 736, 734, - 86, 735, 86, 86, 86, 86, 86, 743, 746, 86, - 86, 86, 86, 750, 749, 745, 86, 755, 747, 165, - 751, 748, 756, 86, 758, 86, 86, 752, 754, 757, - 753, 759, 86, 760, 761, 86, 762, 86, 763, 86, - 764, 86, 86, 86, 86, 765, 86, 766, 86, 86, - 86, 768, 86, 767, 769, 772, 86, 86, 771, 86, - 86, 770, 773, 776, 777, 86, 774, 86, 86, 779, - 86, 86, 86, 781, 86, 775, 86, 783, 86, 86, - 778, 86, 86, 786, 790, 780, 782, 86, 86, 784, - 86, 86, 785, 791, 86, 798, 86, 788, 787, 793, + 739, 86, 737, 743, 86, 746, 86, 86, 86, 745, + 748, 86, 86, 86, 86, 86, 752, 86, 747, 751, + 757, 86, 749, 86, 753, 758, 86, 750, 760, 86, + 808, 754, 86, 756, 755, 762, 759, 761, 86, 763, + 86, 86, 764, 86, 765, 86, 766, 86, 86, 86, + 86, 767, 86, 768, 771, 86, 773, 769, 770, 86, + 86, 86, 774, 86, 86, 775, 772, 779, 778, 86, + 86, 86, 86, 86, 781, 86, 783, 86, 86, 785, + 86, 86, 777, 86, 776, 86, 788, 86, 792, 780, + 782, 784, 86, 86, 86, 786, 787, 793, 86, 86, - 86, 792, 789, 86, 794, 86, 86, 795, 796, 797, - 801, 802, 86, 86, 805, 86, 163, 86, 799, 800, - 86, 808, 86, 86, 806, 807, 803, 86, 804, 86, - 86, 86, 810, 811, 812, 86, 86, 86, 86, 813, - 86, 817, 815, 809, 819, 86, 86, 86, 86, 814, - 816, 86, 86, 86, 868, 820, 826, 86, 818, 821, - 824, 86, 86, 827, 823, 825, 86, 86, 822, 828, - 829, 830, 86, 86, 86, 831, 86, 86, 86, 832, - 837, 838, 840, 836, 86, 833, 86, 86, 86, 839, - 834, 835, 86, 86, 844, 841, 86, 86, 843, 845, + 86, 790, 789, 86, 86, 800, 795, 791, 86, 802, + 86, 796, 794, 803, 797, 798, 86, 799, 801, 86, + 807, 804, 86, 86, 805, 809, 86, 810, 86, 86, + 86, 86, 813, 812, 806, 814, 86, 86, 86, 86, + 86, 821, 86, 86, 817, 819, 86, 815, 86, 811, + 86, 818, 822, 86, 816, 86, 86, 828, 86, 820, + 86, 834, 826, 86, 829, 823, 825, 827, 86, 824, + 86, 830, 831, 832, 86, 86, 86, 833, 835, 86, + 86, 840, 86, 86, 836, 838, 842, 86, 841, 86, + 837, 86, 86, 86, 843, 86, 846, 86, 839, 86, - 86, 86, 851, 86, 86, 86, 848, 86, 86, 846, - 847, 842, 854, 853, 86, 856, 86, 86, 86, 866, - 849, 850, 852, 857, 86, 855, 860, 858, 86, 861, - 864, 86, 86, 862, 86, 865, 86, 86, 86, 870, - 86, 86, 859, 863, 86, 86, 876, 86, 86, 86, - 86, 877, 86, 869, 86, 86, 867, 874, 871, 872, - 86, 886, 873, 878, 879, 875, 881, 86, 86, 882, - 880, 883, 86, 86, 86, 885, 86, 86, 86, 86, - 884, 86, 86, 893, 86, 86, 889, 888, 86, 86, - 86, 86, 887, 86, 900, 890, 161, 892, 891, 894, + 845, 847, 86, 853, 850, 86, 848, 844, 854, 86, + 849, 86, 86, 86, 855, 86, 856, 86, 851, 852, + 86, 858, 859, 86, 860, 863, 861, 86, 86, 867, + 86, 86, 857, 865, 868, 86, 86, 869, 870, 864, + 86, 862, 871, 866, 86, 86, 873, 86, 86, 872, + 86, 86, 879, 86, 86, 86, 86, 880, 86, 86, + 86, 86, 86, 874, 881, 875, 876, 86, 86, 877, + 886, 878, 884, 86, 882, 883, 889, 888, 86, 887, + 885, 86, 86, 86, 86, 86, 86, 891, 890, 896, + 892, 86, 86, 86, 86, 86, 86, 86, 905, 906, - 895, 899, 86, 896, 901, 904, 897, 898, 86, 902, - 86, 86, 905, 906, 903, 86, 86, 86, 86, 86, - 908, 86, 86, 86, 86, 907, 912, 913, 914, 916, - 86, 911, 909, 86, 86, 917, 910, 86, 86, 86, - 170, 919, 86, 924, 86, 925, 920, 915, 922, 86, - 86, 918, 921, 926, 923, 86, 86, 86, 928, 927, - 86, 86, 933, 86, 86, 929, 86, 934, 936, 86, - 86, 86, 930, 938, 931, 935, 937, 940, 86, 86, - 86, 86, 932, 86, 942, 86, 946, 86, 86, 939, - 86, 943, 86, 86, 86, 947, 86, 948, 941, 86, + 893, 903, 898, 895, 894, 86, 86, 86, 86, 897, + 899, 900, 901, 902, 86, 86, 86, 86, 86, 904, + 907, 911, 910, 86, 86, 909, 908, 86, 86, 86, + 915, 912, 916, 86, 919, 917, 913, 914, 920, 86, + 86, 86, 918, 86, 86, 927, 86, 922, 86, 170, + 923, 86, 925, 86, 928, 86, 929, 921, 924, 930, + 926, 86, 86, 86, 86, 86, 86, 935, 936, 86, + 86, 932, 86, 937, 86, 931, 939, 86, 933, 934, + 86, 938, 943, 941, 944, 940, 86, 86, 86, 942, + 945, 947, 86, 86, 949, 86, 86, 86, 86, 946, - 86, 86, 86, 945, 86, 961, 944, 86, 964, 1045, - 962, 949, 86, 950, 951, 86, 959, 952, 963, 960, - 953, 86, 86, 965, 954, 966, 86, 955, 86, 967, - 86, 968, 86, 969, 956, 957, 86, 958, 86, 973, - 86, 86, 86, 982, 970, 86, 971, 86, 86, 86, - 86, 86, 985, 86, 987, 1009, 972, 86, 974, 975, - 981, 976, 983, 86, 977, 984, 986, 86, 989, 978, - 988, 86, 990, 86, 993, 979, 980, 86, 991, 995, - 994, 86, 992, 86, 996, 86, 86, 998, 997, 86, - 86, 1001, 86, 86, 1000, 86, 1003, 1002, 999, 86, + 86, 950, 951, 86, 86, 86, 86, 86, 86, 178, + 948, 965, 86, 966, 952, 964, 969, 967, 954, 962, + 963, 86, 953, 86, 86, 955, 86, 970, 956, 86, + 971, 86, 957, 86, 86, 958, 86, 968, 974, 86, + 976, 86, 959, 960, 972, 961, 86, 86, 86, 973, + 1018, 86, 985, 86, 975, 86, 977, 978, 992, 979, + 986, 984, 980, 86, 86, 86, 987, 981, 988, 990, + 86, 86, 86, 982, 983, 989, 994, 86, 998, 86, + 997, 86, 993, 999, 86, 991, 1000, 995, 86, 1001, + 86, 1004, 86, 86, 176, 996, 1002, 1003, 1005, 86, - 1004, 1005, 86, 86, 86, 1006, 86, 86, 86, 86, - 1013, 1007, 86, 86, 86, 1012, 86, 86, 1016, 86, - 1022, 86, 178, 1008, 1018, 1020, 1010, 1011, 1014, 86, - 1015, 86, 1017, 1023, 1021, 86, 1026, 86, 1024, 86, - 1025, 1019, 86, 1028, 86, 86, 1030, 1031, 86, 86, - 1029, 86, 86, 86, 1032, 86, 1027, 1034, 86, 1033, - 1035, 86, 86, 1036, 86, 86, 86, 1038, 1039, 86, - 86, 1037, 1040, 1044, 86, 86, 1047, 86, 86, 86, - 1048, 86, 86, 1046, 1041, 1042, 86, 86, 1050, 1043, - 1051, 86, 1053, 86, 86, 86, 1055, 1049, 86, 1056, + 86, 86, 1006, 1008, 86, 1007, 86, 86, 1009, 86, + 86, 86, 86, 1010, 1012, 86, 1016, 86, 86, 1019, + 1015, 86, 86, 86, 86, 1023, 1011, 1034, 86, 1013, + 1014, 86, 1017, 1024, 1021, 1025, 86, 1026, 1029, 1020, + 86, 86, 1027, 86, 86, 1022, 1028, 1031, 175, 86, + 1033, 86, 86, 86, 1032, 86, 86, 1035, 86, 1030, + 1036, 1037, 86, 1038, 86, 86, 1039, 86, 86, 86, + 1041, 1042, 86, 1040, 86, 1043, 1047, 86, 86, 1051, + 86, 1050, 86, 86, 86, 86, 1049, 1044, 1045, 1048, + 86, 86, 86, 1046, 86, 86, 86, 1056, 1058, 1053, - 1054, 86, 86, 86, 1063, 86, 1052, 1061, 86, 1057, - 1059, 86, 1062, 86, 86, 1060, 86, 86, 86, 1071, - 1064, 1069, 86, 1058, 86, 1066, 86, 1065, 86, 1070, - 1072, 86, 1068, 1074, 86, 1067, 86, 86, 86, 86, - 86, 86, 86, 1073, 1082, 1075, 1076, 1080, 86, 1085, - 86, 86, 86, 86, 1077, 86, 86, 1079, 1078, 1083, - 1086, 1084, 1081, 86, 1087, 86, 1088, 1089, 86, 1091, - 1090, 86, 1096, 1092, 1095, 86, 1094, 86, 86, 86, - 86, 86, 1093, 86, 86, 1105, 86, 1098, 1100, 1106, - 86, 86, 1108, 86, 86, 86, 1111, 1097, 86, 1099, + 1054, 1059, 1052, 1057, 86, 86, 86, 86, 1055, 86, + 86, 1064, 86, 1067, 86, 1062, 1065, 86, 1060, 86, + 1063, 86, 86, 1066, 86, 1068, 86, 1073, 1070, 86, + 1061, 1075, 86, 1069, 86, 1074, 1076, 86, 86, 1078, + 1072, 86, 86, 86, 86, 1071, 86, 1077, 86, 170, + 86, 86, 1086, 1079, 1089, 1084, 86, 86, 1080, 86, + 86, 1081, 86, 1083, 1082, 1090, 86, 1085, 1087, 1091, + 1088, 86, 86, 86, 86, 1092, 86, 1095, 1098, 86, + 1094, 1093, 1096, 1099, 86, 86, 1097, 86, 86, 86, + 86, 86, 1109, 86, 1102, 1100, 1104, 1110, 86, 1101, - 86, 1101, 86, 1103, 1107, 1102, 1104, 1109, 86, 1112, - 86, 86, 1113, 86, 1110, 86, 1117, 86, 1119, 1114, - 1120, 1121, 1115, 86, 86, 86, 86, 86, 1122, 1125, - 1116, 86, 1127, 86, 1118, 86, 86, 1124, 86, 86, - 1133, 1123, 1130, 1129, 86, 1134, 170, 86, 86, 86, - 1137, 1126, 1136, 86, 1128, 1131, 86, 1132, 86, 1135, - 86, 1140, 86, 86, 86, 86, 86, 1153, 86, 1138, - 1156, 86, 1154, 1139, 86, 86, 1143, 1141, 1144, 86, - 1182, 86, 86, 1145, 1142, 1146, 86, 86, 86, 1147, - 1155, 1148, 1158, 86, 1159, 1149, 1160, 1150, 1161, 1157, + 86, 86, 1112, 86, 86, 1115, 86, 1103, 86, 1105, + 1107, 86, 1106, 1108, 1111, 1113, 1116, 86, 86, 86, + 168, 1117, 86, 86, 1114, 1118, 86, 1123, 1121, 1124, + 1119, 1125, 86, 86, 86, 86, 1126, 86, 1120, 1129, + 1122, 86, 1131, 86, 86, 86, 86, 1128, 1137, 86, + 1127, 1133, 1134, 1138, 170, 86, 86, 86, 1141, 86, + 1140, 1130, 1132, 86, 86, 1135, 86, 1136, 86, 1144, + 1139, 86, 86, 86, 86, 86, 1157, 86, 86, 86, + 86, 1142, 1158, 1143, 1148, 1145, 1147, 1160, 86, 86, + 166, 86, 1146, 1149, 1159, 1150, 86, 86, 1191, 1151, - 1163, 1162, 1151, 86, 86, 1164, 86, 1152, 86, 86, - 86, 86, 1165, 1167, 86, 86, 1170, 86, 1166, 1173, - 86, 86, 1172, 1169, 86, 1168, 1171, 86, 86, 1174, - 1177, 86, 86, 1178, 1176, 1180, 1179, 1181, 1175, 1183, - 1184, 86, 1187, 86, 86, 86, 86, 86, 86, 86, - 1185, 1186, 86, 1188, 1196, 86, 1201, 1195, 1189, 86, - 1190, 1197, 86, 1199, 1200, 86, 1191, 1198, 86, 86, - 86, 1192, 1193, 1207, 86, 86, 86, 86, 1194, 86, - 1208, 1202, 1203, 86, 86, 86, 1214, 86, 1204, 1205, - 1206, 86, 86, 1211, 1210, 1209, 1215, 86, 1217, 86, + 86, 1152, 1161, 1164, 1162, 1153, 1163, 1154, 86, 1167, + 86, 1166, 1155, 1165, 1168, 86, 86, 1156, 86, 1169, + 86, 86, 1171, 86, 86, 86, 1174, 86, 1177, 86, + 1170, 86, 86, 86, 1172, 1173, 1175, 1176, 1178, 1182, + 1181, 86, 1187, 1180, 1184, 1185, 1183, 86, 1179, 1188, + 86, 86, 1186, 86, 1189, 86, 86, 86, 86, 86, + 86, 86, 1203, 1200, 86, 86, 86, 86, 86, 1199, + 1204, 86, 1202, 1201, 1205, 1190, 86, 1192, 86, 1211, + 1206, 1207, 1193, 86, 1194, 86, 86, 1208, 86, 1214, + 1195, 1212, 86, 86, 86, 1196, 1197, 1209, 86, 1210, - 1218, 86, 1212, 1213, 86, 86, 1220, 86, 1222, 86, - 1223, 1216, 86, 86, 86, 86, 86, 1228, 1219, 86, - 1221, 1225, 1226, 86, 86, 1229, 86, 86, 1224, 1231, - 86, 1227, 86, 86, 86, 86, 86, 86, 1230, 86, - 86, 1233, 1236, 1237, 1235, 1238, 1232, 1240, 86, 86, - 1234, 1242, 1239, 86, 1244, 1245, 1241, 86, 86, 86, - 86, 86, 86, 86, 86, 1249, 1250, 1251, 1243, 86, - 1253, 1246, 1252, 1254, 1248, 1255, 1247, 86, 86, 86, - 1259, 86, 86, 1260, 86, 86, 1256, 1264, 1261, 86, - 86, 1262, 86, 1257, 1263, 1258, 86, 86, 86, 1265, + 1213, 86, 1198, 1218, 86, 1219, 86, 1221, 1215, 1222, + 86, 1216, 1217, 86, 86, 86, 1226, 86, 1220, 1224, + 86, 86, 86, 86, 86, 1227, 86, 1232, 1225, 1223, + 1229, 86, 1230, 86, 86, 1233, 1228, 86, 86, 1235, + 1231, 86, 86, 86, 86, 86, 86, 86, 86, 1242, + 1234, 86, 1237, 1240, 1239, 1241, 86, 1236, 1244, 86, + 86, 1238, 1243, 1245, 86, 1246, 86, 86, 1247, 86, + 86, 1248, 86, 1250, 1253, 1249, 86, 1254, 1251, 1256, + 1258, 1255, 1252, 86, 1257, 1259, 86, 86, 86, 86, + 86, 86, 1264, 86, 86, 86, 1260, 1265, 86, 86, - 86, 1271, 86, 1273, 86, 86, 86, 86, 86, 86, - 1275, 1269, 1266, 1267, 1268, 1270, 86, 86, 86, 1274, - 1276, 1277, 1272, 86, 86, 86, 1282, 86, 1279, 1278, - 1280, 86, 1281, 86, 86, 86, 1283, 86, 1284, 1285, - 1286, 1289, 1292, 1288, 1290, 86, 86, 86, 86, 86, - 86, 1287, 1293, 86, 1294, 1291, 86, 86, 86, 1300, - 1298, 1301, 1302, 176, 86, 86, 1295, 86, 86, 1296, - 86, 1299, 86, 1305, 1307, 1303, 1297, 1304, 86, 86, - 86, 86, 1309, 1306, 86, 1311, 1308, 86, 1313, 86, - 86, 86, 1312, 86, 86, 86, 86, 86, 86, 1314, + 86, 1266, 1262, 1261, 1267, 86, 1263, 1269, 1268, 86, + 86, 1271, 1275, 86, 1270, 1277, 86, 1272, 86, 86, + 86, 86, 1273, 86, 1279, 1274, 86, 1281, 165, 86, + 86, 1278, 1282, 1276, 1280, 1284, 86, 86, 86, 86, + 86, 1285, 86, 86, 1283, 1288, 86, 1287, 1289, 86, + 1294, 1290, 1291, 1286, 86, 1293, 86, 86, 1292, 1295, + 86, 86, 86, 1296, 1298, 86, 1299, 86, 86, 86, + 86, 1305, 1303, 1306, 1339, 1297, 1307, 86, 86, 86, + 1300, 1310, 86, 1304, 86, 86, 1301, 86, 1302, 1308, + 1309, 86, 1312, 86, 86, 86, 1311, 1316, 86, 1313, - 1318, 1319, 1315, 86, 1310, 86, 86, 1320, 1321, 86, - 1325, 1326, 1316, 86, 1317, 86, 86, 86, 1323, 86, - 1329, 86, 86, 1322, 1328, 86, 86, 1334, 1324, 86, - 1327, 86, 1330, 86, 86, 86, 1331, 1332, 86, 1340, - 86, 86, 1336, 86, 1333, 86, 170, 1335, 1342, 1341, - 1343, 86, 86, 1337, 86, 86, 86, 1339, 86, 1348, - 1338, 1350, 86, 1352, 1349, 1345, 1344, 1346, 1347, 86, - 1353, 86, 86, 86, 86, 1356, 86, 1355, 1351, 1357, - 86, 86, 86, 86, 86, 86, 86, 1354, 1360, 86, - 1366, 86, 1363, 86, 1358, 1359, 86, 1361, 86, 86, + 86, 1318, 86, 86, 86, 1317, 86, 86, 86, 86, + 86, 1314, 1323, 1319, 86, 1315, 1320, 1324, 86, 86, + 86, 1325, 86, 1326, 1321, 1330, 86, 1322, 1331, 86, + 86, 86, 1328, 86, 86, 1333, 86, 1327, 1334, 86, + 86, 1329, 86, 86, 1332, 1335, 86, 1336, 1337, 86, + 86, 86, 1341, 1345, 86, 170, 86, 86, 1338, 1346, + 1340, 1347, 1348, 86, 86, 1342, 86, 86, 86, 1344, + 1357, 86, 1353, 163, 1343, 1349, 86, 1350, 1352, 1351, + 1354, 1355, 86, 1358, 86, 86, 86, 86, 1356, 86, + 1360, 86, 1362, 1361, 86, 86, 86, 86, 86, 86, - 86, 1364, 86, 1362, 86, 1370, 1376, 1367, 1365, 1378, - 86, 86, 1377, 1369, 1368, 1372, 1379, 86, 86, 86, - 1371, 86, 86, 86, 1373, 1380, 1374, 86, 86, 1375, - 1382, 1385, 86, 1381, 86, 86, 86, 1386, 86, 86, - 1383, 1384, 86, 1389, 1393, 86, 1388, 1387, 86, 1390, - 1391, 86, 86, 1394, 86, 1392, 1395, 1397, 1398, 86, - 86, 86, 1396, 86, 86, 86, 86, 86, 1399, 1403, - 86, 86, 1406, 86, 86, 1400, 1401, 86, 1404, 1405, - 86, 86, 1402, 1407, 1413, 86, 1408, 1411, 1412, 86, - 86, 1409, 1410, 86, 1416, 86, 86, 1414, 86, 86, + 1359, 1365, 86, 1371, 86, 1367, 1368, 86, 1363, 1364, + 86, 86, 1366, 1369, 86, 86, 86, 86, 161, 86, + 1375, 1370, 1377, 1381, 1372, 1373, 1374, 86, 1382, 86, + 1386, 1378, 86, 1379, 1383, 1376, 1380, 1384, 86, 1385, + 86, 86, 86, 1387, 86, 86, 86, 86, 86, 86, + 1391, 1390, 86, 1394, 86, 86, 1398, 86, 86, 1393, + 1388, 86, 1389, 1395, 86, 1392, 1396, 86, 86, 1399, + 1404, 1397, 1400, 1402, 1401, 86, 86, 86, 86, 1403, + 86, 86, 86, 86, 1408, 86, 86, 86, 86, 1411, + 86, 1405, 1406, 1409, 1416, 1410, 86, 1407, 1412, 86, - 1415, 86, 1423, 1425, 1417, 86, 86, 1419, 86, 86, - 86, 86, 1418, 86, 1422, 1420, 86, 86, 86, 1428, - 1426, 1424, 1431, 1421, 1427, 1433, 1429, 86, 1432, 1430, - 1434, 86, 86, 86, 1438, 86, 1448, 1435, 86, 1449, - 86, 1436, 86, 86, 86, 1437, 86, 1439, 1446, 1447, - 1452, 1440, 86, 1451, 1441, 1442, 86, 1450, 86, 1443, - 86, 86, 175, 1453, 1456, 1444, 1454, 86, 1455, 1445, - 86, 1457, 86, 86, 86, 1458, 1462, 1459, 86, 86, - 1460, 86, 86, 1463, 1465, 86, 1468, 1469, 86, 86, - 86, 1461, 86, 86, 1470, 1466, 86, 86, 1464, 1473, + 86, 1418, 1413, 86, 86, 1415, 1414, 86, 86, 1421, + 1419, 1417, 86, 86, 86, 1428, 86, 86, 1422, 1420, + 1424, 86, 1430, 1423, 86, 86, 86, 86, 86, 1427, + 86, 1425, 1431, 86, 1433, 1436, 1429, 86, 1426, 1432, + 86, 1438, 86, 1435, 1434, 1437, 1439, 86, 86, 1443, + 86, 86, 86, 1453, 1441, 1442, 1440, 86, 1444, 86, + 1452, 1456, 1445, 1451, 86, 1446, 1447, 86, 1454, 1455, + 1448, 1457, 86, 86, 86, 86, 1449, 86, 1458, 1459, + 1450, 86, 1460, 86, 1462, 86, 86, 86, 1463, 86, + 1464, 1467, 86, 1461, 86, 1465, 1468, 86, 86, 1470, - 1471, 1472, 1478, 1467, 1474, 86, 1475, 86, 1476, 86, - 1477, 86, 1480, 1481, 1482, 86, 86, 86, 1483, 1479, - 86, 1484, 1488, 86, 1485, 86, 86, 1489, 86, 1487, - 86, 1492, 1490, 1486, 86, 86, 86, 86, 86, 1498, - 86, 1499, 86, 1494, 1493, 86, 1500, 1491, 86, 86, - 86, 1497, 86, 1502, 1495, 1496, 1501, 86, 86, 1504, - 86, 1509, 86, 1503, 1505, 1508, 86, 1511, 86, 86, - 1506, 1512, 86, 86, 86, 1513, 86, 86, 1514, 1517, - 86, 1510, 86, 1507, 86, 1516, 1519, 86, 86, 1520, - 86, 86, 86, 1515, 86, 1521, 86, 1518, 1525, 86, + 86, 1473, 1474, 86, 1466, 1475, 1471, 86, 86, 1469, + 86, 86, 1478, 86, 1476, 86, 1472, 1479, 1483, 1480, + 86, 1481, 86, 1482, 1477, 86, 1485, 1486, 1487, 1484, + 86, 1488, 86, 86, 86, 1493, 1489, 1490, 86, 86, + 1494, 86, 86, 1492, 86, 86, 86, 1495, 86, 1497, + 86, 1491, 1503, 86, 1499, 86, 1498, 86, 86, 86, + 1504, 1496, 86, 1506, 1502, 1500, 86, 1501, 86, 1505, + 86, 1508, 86, 86, 1515, 86, 1507, 86, 1513, 1510, + 1511, 86, 1509, 1517, 86, 86, 1514, 1518, 86, 86, + 1512, 1519, 1516, 86, 1520, 86, 1523, 86, 86, 1525, - 1530, 86, 86, 1522, 1528, 1523, 86, 1531, 86, 1527, - 86, 86, 1524, 1533, 1526, 86, 1529, 1532, 1535, 86, - 86, 86, 86, 86, 86, 1537, 86, 1539, 1534, 1541, - 86, 1540, 86, 1542, 1536, 1538, 86, 1543, 86, 1544, - 86, 1545, 86, 86, 1546, 1550, 1547, 1551, 1554, 1548, - 86, 86, 86, 86, 86, 1552, 1549, 1553, 86, 86, - 86, 1558, 86, 86, 86, 86, 86, 1555, 86, 1560, - 170, 1557, 86, 1566, 1567, 1562, 86, 86, 1556, 86, - 86, 1569, 1568, 1559, 1561, 1563, 86, 86, 1564, 86, - 86, 1570, 86, 86, 86, 1565, 86, 1571, 86, 1577, + 86, 86, 1526, 86, 1522, 86, 86, 86, 1527, 1531, + 86, 86, 1521, 86, 86, 86, 1536, 1534, 1524, 86, + 86, 86, 86, 1539, 1537, 86, 1528, 1529, 1530, 1538, + 1533, 1532, 86, 86, 86, 1535, 1541, 86, 86, 1543, + 86, 86, 1550, 1540, 86, 1545, 1546, 1542, 86, 1547, + 86, 1544, 86, 1548, 86, 86, 86, 1549, 86, 1551, + 86, 1553, 1556, 1554, 1557, 1558, 1552, 86, 86, 1560, + 86, 1555, 1559, 86, 86, 86, 86, 1564, 86, 86, + 86, 86, 1561, 86, 86, 1566, 86, 1563, 170, 1572, + 1573, 1568, 86, 1562, 1575, 86, 86, 86, 1574, 1565, - 86, 86, 1574, 86, 1582, 86, 1572, 1575, 1581, 1573, - 1576, 86, 86, 86, 1578, 86, 1584, 1586, 1580, 86, - 86, 1579, 1587, 86, 1583, 86, 86, 1591, 1589, 86, - 86, 1585, 1598, 1588, 1590, 1592, 86, 86, 1597, 1600, - 1593, 1595, 86, 1594, 1596, 86, 1601, 86, 1603, 86, - 86, 1599, 86, 1604, 86, 1608, 86, 86, 1602, 86, - 86, 1609, 86, 86, 86, 1612, 86, 86, 1605, 86, - 1607, 86, 1617, 1618, 86, 1610, 86, 1614, 86, 1611, - 1621, 86, 1613, 1620, 1615, 1616, 86, 86, 1622, 86, - 86, 86, 1619, 86, 1623, 86, 86, 86, 1629, 86, + 86, 1567, 86, 1569, 1570, 86, 86, 86, 86, 1571, + 86, 1576, 86, 1583, 86, 86, 86, 1577, 1580, 86, + 86, 1581, 1578, 86, 1587, 1579, 1582, 1588, 86, 86, + 1584, 1592, 86, 1586, 1590, 1591, 1593, 86, 86, 1585, + 1596, 1594, 86, 1589, 86, 86, 86, 1595, 86, 1606, + 86, 1601, 1604, 86, 1602, 86, 1597, 1603, 86, 1598, + 1599, 86, 1607, 1600, 1609, 86, 86, 1605, 86, 1610, + 86, 86, 1608, 86, 86, 86, 1614, 86, 1615, 86, + 86, 86, 1618, 86, 1611, 86, 1613, 86, 1623, 1624, + 86, 86, 1612, 1616, 1617, 1620, 1627, 86, 1621, 1619, - 1624, 1625, 1630, 86, 1626, 1627, 86, 86, 1631, 170, - 1628, 86, 1635, 86, 1632, 1634, 86, 1640, 1633, 1638, - 86, 1639, 1636, 86, 1641, 1637, 86, 1642, 86, 1643, - 86, 1644, 86, 86, 86, 86, 86, 1649, 1650, 1645, - 1648, 1651, 1646, 86, 86, 86, 1652, 86, 86, 1653, - 1654, 86, 86, 86, 1657, 1647, 1655, 86, 86, 86, - 86, 86, 1656, 86, 1662, 86, 86, 1661, 86, 1658, - 86, 1665, 1659, 1664, 1660, 86, 86, 1673, 1668, 86, - 1670, 1663, 1666, 1669, 86, 1671, 86, 86, 86, 1667, - 86, 86, 86, 86, 1681, 1672, 1677, 1676, 1674, 86, + 86, 1622, 86, 86, 86, 86, 86, 86, 1625, 1628, + 1626, 86, 86, 86, 86, 86, 1629, 1635, 1631, 1637, + 1632, 1633, 1630, 86, 1640, 86, 1634, 86, 1641, 1638, + 1636, 86, 86, 1646, 1639, 86, 1645, 1647, 86, 86, + 1642, 1643, 86, 86, 86, 1649, 1650, 86, 1651, 86, + 86, 1644, 1648, 86, 1655, 1656, 1657, 86, 1654, 3542, + 86, 86, 86, 86, 1658, 1652, 86, 1659, 1660, 86, + 86, 1653, 86, 86, 1661, 1663, 86, 86, 86, 86, + 86, 1662, 86, 1668, 86, 1664, 1667, 86, 1670, 1671, + 1665, 86, 1666, 86, 1674, 86, 1679, 1676, 1669, 1675, - 86, 86, 86, 86, 1682, 86, 1675, 1685, 86, 1678, - 1688, 1680, 1679, 86, 1687, 86, 86, 86, 86, 86, - 86, 1683, 1686, 86, 1689, 86, 1698, 86, 1684, 86, - 1697, 86, 86, 86, 1690, 86, 1691, 1692, 1693, 1694, - 1704, 1695, 1696, 1702, 86, 1701, 1703, 86, 86, 86, - 1699, 1700, 1705, 86, 86, 86, 86, 1709, 86, 86, - 86, 1710, 1706, 1707, 1713, 86, 1708, 1717, 86, 86, - 86, 1714, 1719, 86, 1711, 1718, 1712, 86, 86, 86, - 1715, 1716, 1722, 1723, 1720, 86, 1721, 86, 86, 1724, - 86, 86, 1729, 1730, 86, 86, 86, 86, 86, 1727, + 86, 1672, 1677, 86, 86, 86, 86, 86, 86, 86, + 1673, 1687, 1683, 1678, 86, 1682, 86, 86, 86, 86, + 1691, 1688, 86, 1680, 1681, 86, 86, 1684, 1694, 1685, + 86, 1693, 1686, 86, 86, 86, 86, 86, 1689, 86, + 86, 1692, 86, 86, 1703, 1690, 86, 86, 86, 1695, + 1704, 86, 1696, 1700, 1697, 1698, 1699, 1702, 1708, 86, + 86, 1701, 86, 1707, 1711, 1705, 86, 1706, 1709, 86, + 86, 1710, 86, 86, 86, 1712, 1715, 86, 86, 1713, + 1716, 86, 1719, 86, 86, 1714, 1723, 86, 1725, 1724, + 86, 1718, 86, 1717, 86, 86, 1720, 1728, 1721, 1722, - 86, 1734, 1733, 1735, 86, 86, 1726, 1725, 1738, 86, - 86, 1728, 86, 1731, 1737, 86, 86, 1732, 1739, 86, - 86, 86, 86, 1743, 1736, 86, 1740, 86, 1741, 86, - 1748, 1746, 1742, 86, 86, 86, 86, 86, 86, 1754, - 86, 1752, 1744, 86, 86, 1745, 86, 1747, 1749, 1755, - 86, 1753, 86, 1760, 1751, 1750, 86, 86, 86, 1757, - 86, 1756, 1763, 1765, 86, 86, 86, 86, 1768, 1766, - 1759, 1758, 1761, 86, 1762, 1764, 86, 86, 86, 86, - 86, 86, 1772, 1775, 86, 1774, 1767, 1771, 86, 170, - 86, 1776, 86, 86, 1777, 1769, 1770, 1778, 1773, 86, + 86, 86, 86, 86, 1730, 1726, 1729, 86, 1727, 86, + 86, 1731, 1732, 1736, 1737, 86, 86, 86, 1734, 86, + 1733, 86, 86, 1741, 86, 1742, 1740, 1744, 86, 86, + 1735, 86, 1745, 86, 1738, 1746, 86, 86, 1739, 86, + 86, 86, 86, 1750, 1743, 86, 86, 86, 1755, 1747, + 86, 1753, 86, 1748, 86, 1749, 86, 86, 86, 86, + 1761, 1759, 1751, 86, 86, 1752, 1754, 1756, 86, 86, + 86, 1757, 1760, 1758, 86, 1763, 86, 1762, 1764, 86, + 1767, 1770, 86, 1768, 1772, 86, 86, 86, 86, 1765, + 1766, 1773, 1769, 86, 1775, 86, 86, 1771, 86, 86, - 86, 86, 86, 1786, 86, 1779, 86, 1781, 1780, 1787, - 86, 86, 1790, 86, 1784, 1791, 86, 86, 1782, 1783, - 86, 1792, 1794, 86, 86, 86, 1785, 1796, 1795, 1798, - 1788, 1789, 86, 86, 86, 86, 86, 1793, 86, 1799, - 1800, 86, 1802, 1803, 1797, 86, 1805, 86, 1806, 86, - 86, 1801, 86, 86, 86, 1811, 1810, 86, 1804, 86, - 86, 86, 86, 1807, 1818, 1820, 86, 1809, 1808, 1815, - 86, 1813, 1816, 86, 86, 1812, 86, 86, 1819, 1825, - 1814, 1821, 1823, 1822, 1817, 1827, 1824, 1826, 86, 1828, - 1832, 86, 86, 86, 1830, 86, 86, 1829, 86, 1831, + 86, 86, 1779, 1782, 86, 1781, 1774, 1778, 86, 86, + 1776, 1783, 86, 170, 1777, 86, 86, 1785, 1780, 1787, + 86, 86, 1784, 86, 86, 1793, 1794, 86, 86, 1786, + 1788, 1797, 86, 86, 1789, 1790, 86, 1791, 86, 86, + 86, 1799, 1798, 86, 86, 1792, 1801, 1795, 1796, 86, + 1803, 1805, 86, 86, 1802, 1865, 86, 86, 1800, 1804, + 1807, 86, 1808, 86, 1811, 86, 1806, 86, 1812, 1809, + 1810, 86, 1813, 86, 86, 86, 86, 86, 1818, 1817, + 86, 86, 86, 86, 86, 1825, 1822, 1814, 86, 1823, + 1816, 86, 1815, 1820, 86, 86, 1962, 86, 1819, 1826, - 86, 86, 86, 86, 86, 1833, 86, 1839, 86, 1838, - 1840, 1841, 86, 86, 1834, 1843, 86, 86, 86, 86, - 1835, 86, 1836, 1842, 1837, 86, 1846, 86, 86, 86, - 1845, 1844, 1849, 1847, 86, 86, 86, 1848, 86, 86, - 86, 86, 86, 86, 1858, 1857, 86, 86, 1850, 1852, - 1853, 86, 1854, 1860, 1851, 86, 86, 1855, 1864, 1861, - 86, 86, 1859, 1862, 86, 1856, 86, 86, 1863, 1870, - 86, 86, 86, 86, 86, 1874, 1865, 1866, 1872, 86, - 1867, 1868, 86, 86, 1873, 86, 86, 1869, 168, 86, - 86, 1871, 86, 86, 1875, 1879, 1876, 1881, 86, 86, + 1827, 1824, 1821, 86, 1829, 1833, 86, 86, 1830, 1831, + 1832, 1834, 1835, 86, 86, 86, 1828, 86, 86, 1836, + 86, 1837, 86, 1838, 1839, 86, 86, 86, 1841, 1846, + 86, 1840, 1843, 86, 1847, 86, 1845, 86, 1848, 1850, + 86, 86, 1849, 1842, 86, 86, 86, 1844, 1853, 86, + 86, 1852, 86, 86, 86, 1854, 86, 86, 86, 86, + 86, 86, 86, 86, 1851, 1864, 86, 86, 86, 3542, + 1855, 1859, 1860, 1856, 1858, 1857, 1861, 1862, 1868, 86, + 1869, 86, 1866, 1871, 86, 1863, 1867, 1872, 86, 86, + 86, 86, 1877, 86, 1870, 86, 86, 86, 86, 1881, - 1889, 86, 1882, 1878, 1880, 1883, 86, 1877, 1884, 1888, - 1890, 86, 86, 1885, 86, 86, 86, 86, 1886, 1893, - 1894, 86, 86, 86, 1887, 86, 1891, 1897, 1895, 86, - 1892, 86, 1898, 86, 86, 86, 1896, 86, 1899, 1907, - 1902, 1901, 1900, 86, 1904, 86, 1906, 1905, 1908, 86, - 1909, 86, 86, 1903, 86, 86, 1915, 86, 86, 86, - 86, 1916, 86, 1917, 86, 1911, 86, 1921, 86, 1913, - 86, 1910, 1912, 1914, 86, 86, 1918, 1923, 1920, 1924, - 86, 1925, 86, 86, 1919, 86, 1922, 86, 1929, 86, - 86, 1927, 1933, 1930, 1928, 1926, 86, 1934, 86, 86, + 1873, 1879, 86, 86, 1875, 86, 86, 86, 1874, 1880, + 86, 86, 1876, 86, 86, 1878, 1886, 1882, 1888, 1883, + 86, 86, 86, 1889, 1885, 1887, 1890, 1884, 86, 1891, + 86, 1895, 1896, 86, 1898, 1892, 1897, 86, 86, 86, + 1893, 1900, 1901, 86, 86, 86, 1894, 86, 1899, 86, + 1904, 86, 1902, 86, 1905, 86, 86, 3542, 1906, 86, + 86, 1914, 86, 1903, 1909, 1908, 1907, 86, 1911, 1913, + 86, 1912, 1915, 86, 86, 1910, 86, 1916, 86, 86, + 1922, 86, 1917, 86, 86, 1923, 86, 1918, 1924, 86, + 86, 1928, 1920, 1925, 1919, 1921, 86, 86, 86, 86, - 86, 1939, 86, 1935, 1938, 1932, 1931, 86, 1941, 86, - 1942, 1936, 1937, 86, 86, 1945, 86, 86, 1940, 1943, - 86, 86, 1947, 1946, 1949, 86, 86, 1944, 86, 1951, - 86, 1953, 86, 86, 1948, 1952, 1954, 86, 1950, 86, - 86, 86, 86, 86, 86, 86, 1959, 86, 1958, 86, - 166, 1955, 1956, 1960, 1962, 1961, 1963, 86, 1957, 1966, - 86, 1964, 1968, 1965, 1969, 86, 1971, 86, 86, 86, - 86, 86, 1975, 86, 1977, 86, 86, 1972, 1970, 86, - 86, 1967, 86, 1981, 86, 86, 86, 1973, 1976, 86, - 1974, 1984, 86, 1983, 86, 1979, 86, 86, 1978, 1986, + 1932, 86, 86, 1931, 86, 86, 1930, 1927, 86, 1926, + 1934, 86, 1929, 1935, 1933, 86, 1936, 86, 86, 86, + 1937, 1940, 1942, 1939, 1945, 1938, 1941, 86, 1947, 86, + 1943, 1950, 1946, 86, 86, 1949, 86, 86, 1951, 1944, + 86, 86, 1953, 86, 86, 1957, 86, 1948, 86, 1954, + 86, 86, 86, 86, 1952, 86, 1959, 1961, 1956, 1958, + 86, 1955, 1960, 86, 86, 86, 86, 86, 1966, 1963, + 1967, 1964, 86, 1968, 1965, 86, 1970, 86, 1976, 1969, + 1974, 86, 1977, 86, 86, 1971, 1979, 86, 86, 1972, + 86, 1973, 86, 86, 86, 1985, 1978, 1983, 86, 86, - 1980, 1987, 86, 86, 86, 1982, 1988, 86, 170, 86, - 1992, 86, 1985, 1991, 1990, 1995, 86, 86, 86, 86, - 1993, 1999, 86, 86, 1994, 1989, 86, 86, 86, 1997, - 1996, 86, 86, 2000, 2001, 2002, 2006, 1998, 2003, 86, - 86, 86, 86, 86, 2007, 2057, 2009, 2004, 2010, 86, - 86, 2005, 2014, 2011, 2012, 86, 86, 2008, 2015, 2016, - 86, 2013, 86, 86, 86, 2018, 86, 86, 86, 2019, - 86, 86, 86, 86, 2017, 86, 86, 2024, 2025, 86, - 86, 2029, 86, 86, 2026, 86, 165, 2020, 2022, 2023, - 2021, 2027, 2030, 86, 86, 2028, 2037, 86, 2035, 2033, + 86, 86, 1975, 86, 86, 1984, 1989, 86, 86, 86, + 1980, 1981, 1991, 1982, 1992, 86, 1987, 86, 86, 86, + 86, 1986, 1988, 1990, 1994, 1995, 1996, 86, 86, 86, + 170, 86, 2000, 2003, 86, 1993, 86, 1999, 1998, 86, + 86, 1997, 2001, 2007, 86, 86, 2002, 86, 86, 86, + 86, 2005, 2009, 86, 86, 2004, 86, 2014, 86, 2006, + 2010, 2008, 2011, 86, 2017, 86, 2015, 2026, 2012, 2018, + 86, 86, 86, 2013, 2016, 2019, 2020, 86, 86, 2023, + 2022, 2024, 86, 2021, 86, 86, 86, 86, 86, 2027, + 86, 86, 86, 86, 86, 86, 2025, 2032, 2033, 86, - 2036, 2038, 2032, 86, 86, 2031, 2034, 86, 86, 86, - 86, 86, 86, 2044, 86, 2047, 2048, 86, 2049, 86, - 86, 2051, 86, 2040, 2039, 2042, 2045, 2041, 2046, 86, - 2043, 86, 2052, 86, 86, 2056, 86, 2058, 86, 2060, - 2050, 2059, 86, 86, 86, 86, 2062, 86, 86, 2063, - 2053, 2065, 86, 86, 2054, 2055, 2066, 86, 86, 86, - 2061, 2069, 86, 2068, 86, 86, 86, 86, 2074, 86, - 2072, 2073, 2064, 2067, 2070, 86, 2076, 86, 86, 86, - 2075, 86, 86, 86, 163, 2071, 2084, 2082, 2086, 2077, - 2078, 2079, 86, 2087, 86, 86, 2080, 2088, 2081, 2083, + 86, 86, 86, 2034, 2038, 86, 2037, 2028, 2030, 2031, + 2029, 2035, 86, 86, 86, 2036, 86, 2039, 2041, 2043, + 2044, 2046, 2040, 2045, 86, 2042, 86, 86, 86, 86, + 86, 86, 2052, 2047, 86, 2048, 86, 2055, 2056, 86, + 2057, 86, 2059, 86, 2050, 2049, 86, 2060, 2053, 2051, + 2054, 2058, 86, 86, 86, 2064, 86, 86, 2066, 86, + 2068, 2065, 2067, 86, 86, 2070, 86, 86, 86, 2074, + 86, 86, 2071, 2061, 2062, 2063, 86, 86, 86, 2073, + 86, 2069, 86, 2076, 2077, 86, 86, 86, 86, 2082, + 2084, 2080, 2081, 2072, 86, 2078, 86, 2075, 86, 2083, - 86, 2085, 2090, 86, 86, 2093, 86, 86, 86, 86, - 2089, 86, 2097, 86, 2091, 2094, 86, 2099, 86, 2092, - 86, 86, 2102, 2103, 86, 86, 86, 2095, 86, 2096, - 2105, 86, 86, 86, 2110, 2098, 86, 2107, 2100, 86, - 86, 2108, 2101, 2112, 86, 2104, 86, 86, 86, 86, - 86, 2106, 2111, 86, 2109, 2115, 2116, 86, 2118, 2121, - 2113, 2114, 86, 86, 2123, 86, 86, 2122, 2126, 2120, - 86, 86, 2129, 2125, 86, 2117, 2119, 86, 86, 2127, - 2130, 86, 86, 2124, 86, 86, 86, 2131, 86, 86, - 2128, 86, 2136, 2132, 86, 86, 2139, 2140, 2135, 86, + 86, 86, 86, 2079, 86, 86, 86, 2092, 2144, 2094, + 2085, 2086, 2087, 86, 2095, 86, 86, 2088, 86, 2090, + 2089, 2097, 2091, 86, 2093, 2098, 86, 2101, 86, 2099, + 2096, 86, 86, 86, 2105, 86, 86, 2102, 86, 2107, + 86, 2100, 86, 86, 2110, 2111, 86, 86, 2113, 86, + 86, 2103, 86, 2104, 86, 86, 86, 2120, 86, 2118, + 2108, 2115, 2106, 2116, 2109, 86, 86, 2112, 86, 86, + 86, 86, 2119, 86, 2126, 2114, 2117, 2123, 2124, 86, + 86, 86, 2129, 2122, 2131, 86, 2130, 2121, 86, 86, + 86, 86, 2133, 2134, 86, 2137, 2128, 2125, 86, 86, - 2141, 86, 86, 86, 86, 2133, 86, 2134, 2144, 2137, - 86, 86, 86, 2149, 86, 86, 2143, 2148, 86, 2142, - 2138, 86, 2146, 86, 2145, 2153, 86, 2154, 86, 2155, - 2150, 86, 2147, 2151, 2152, 2157, 86, 2156, 86, 86, - 2161, 86, 2158, 86, 86, 86, 86, 86, 86, 86, - 2159, 2165, 2162, 2169, 86, 2160, 86, 2163, 86, 86, - 86, 2172, 86, 2164, 2171, 2166, 2176, 2167, 2168, 2174, - 86, 2173, 2170, 86, 2175, 86, 86, 2181, 86, 2185, - 2180, 2182, 86, 2183, 2177, 86, 86, 2178, 2184, 86, - 2186, 86, 2179, 86, 2190, 86, 86, 86, 2188, 86, + 2135, 86, 2138, 86, 86, 2127, 86, 86, 86, 2132, + 2136, 2139, 86, 2140, 2141, 86, 86, 2147, 2148, 2149, + 2143, 86, 86, 86, 86, 86, 2142, 2152, 86, 86, + 2145, 86, 86, 2157, 86, 86, 2151, 2156, 86, 86, + 86, 2146, 2150, 2153, 2162, 86, 2163, 3542, 2154, 86, + 86, 2155, 86, 2160, 2159, 2158, 2164, 86, 2161, 2166, + 86, 2165, 86, 2170, 86, 86, 2167, 86, 2168, 86, + 2171, 86, 86, 2169, 2174, 86, 2178, 86, 86, 2172, + 86, 3542, 86, 86, 86, 2181, 2173, 2183, 86, 86, + 2182, 2175, 2176, 86, 2184, 2177, 2179, 86, 2180, 86, - 86, 2192, 86, 2189, 86, 2194, 86, 2191, 2196, 2198, - 86, 2193, 2187, 86, 86, 86, 2199, 86, 170, 86, - 86, 86, 86, 2202, 86, 86, 2234, 2195, 2197, 2200, - 2206, 2203, 2204, 2201, 86, 86, 2208, 2207, 2209, 86, - 2205, 2210, 86, 2212, 2211, 86, 86, 86, 86, 86, - 86, 2213, 2214, 86, 2215, 2216, 86, 86, 2217, 2218, - 86, 2220, 2219, 86, 86, 86, 2224, 86, 86, 2221, - 2223, 86, 86, 2225, 86, 2222, 2226, 2227, 86, 2229, - 86, 2228, 86, 2231, 86, 86, 2236, 86, 2230, 86, - 2235, 86, 86, 86, 86, 2241, 86, 86, 2238, 86, + 2187, 2185, 2190, 86, 2189, 2188, 2191, 86, 2186, 2192, + 2194, 2195, 86, 86, 2193, 86, 86, 86, 2197, 86, + 2199, 86, 86, 86, 86, 2203, 86, 2201, 86, 2205, + 86, 2198, 86, 2200, 2202, 86, 2207, 86, 2196, 2208, + 86, 170, 86, 86, 86, 86, 2211, 86, 86, 86, + 2216, 2209, 2206, 2204, 2215, 2212, 2213, 2210, 86, 2217, + 2218, 86, 2219, 86, 2214, 2221, 86, 86, 2220, 86, + 86, 86, 2222, 2224, 2223, 86, 86, 86, 86, 2225, + 2226, 2227, 86, 2229, 86, 86, 2233, 86, 2228, 2230, + 2232, 86, 86, 86, 2238, 86, 2231, 2235, 2236, 86, - 2232, 86, 2246, 2233, 86, 2237, 2242, 2240, 2244, 2239, - 86, 86, 86, 2247, 2243, 86, 86, 2245, 2252, 86, - 2250, 86, 2248, 86, 2253, 2251, 86, 86, 2259, 86, - 86, 2257, 2249, 86, 86, 86, 2261, 86, 86, 2254, - 2262, 86, 2255, 2256, 2258, 2265, 2260, 2264, 86, 2266, - 86, 2263, 86, 2267, 86, 2270, 86, 86, 86, 86, - 2269, 86, 86, 86, 2268, 2272, 86, 2275, 2276, 86, - 2271, 86, 86, 86, 86, 86, 86, 86, 86, 2273, - 86, 2278, 2274, 2279, 2277, 2281, 2284, 2280, 86, 2288, - 2283, 2289, 86, 86, 86, 86, 2286, 2292, 86, 2285, + 2234, 86, 2237, 86, 86, 86, 86, 86, 86, 2245, + 2243, 86, 2240, 2244, 86, 86, 86, 86, 2250, 86, + 2247, 2239, 2241, 86, 2242, 2246, 86, 86, 2255, 2251, + 2249, 86, 2248, 86, 86, 2253, 86, 2252, 86, 86, + 2256, 2259, 2262, 2254, 86, 2257, 2261, 86, 86, 86, + 2268, 2260, 86, 86, 86, 2258, 86, 86, 2270, 86, + 2263, 2271, 86, 86, 2264, 2265, 86, 2266, 2267, 86, + 2269, 2273, 86, 86, 2274, 2275, 86, 86, 2276, 2278, + 2272, 2279, 86, 2280, 86, 86, 2277, 86, 86, 2281, + 86, 2284, 86, 86, 86, 86, 86, 2285, 86, 86, - 2282, 2287, 86, 2293, 86, 86, 2290, 2295, 86, 86, - 2296, 86, 2299, 2291, 2298, 2294, 86, 86, 86, 86, - 2300, 2304, 2297, 86, 86, 2306, 2302, 86, 86, 2307, - 2303, 86, 2309, 86, 2301, 86, 86, 86, 2308, 2312, - 2311, 2313, 2305, 86, 86, 86, 86, 2318, 2314, 86, - 86, 86, 2322, 86, 2310, 2319, 86, 2323, 86, 86, - 86, 2321, 2315, 2316, 2320, 86, 2317, 2324, 2327, 86, - 86, 2328, 86, 2331, 2326, 2325, 86, 86, 86, 86, - 2329, 2332, 86, 161, 2333, 86, 2335, 2337, 86, 86, - 2339, 86, 2330, 86, 2336, 2334, 86, 2338, 86, 2340, + 86, 86, 86, 86, 2305, 2283, 2282, 2287, 2288, 2289, + 2290, 86, 86, 2286, 2292, 2297, 86, 2293, 86, 2291, + 2295, 2298, 86, 86, 2296, 86, 2301, 86, 86, 3542, + 2294, 86, 2300, 2302, 2299, 86, 2304, 86, 2303, 86, + 2307, 86, 86, 2306, 2308, 2310, 86, 86, 2309, 2313, + 2311, 2315, 86, 86, 2312, 2316, 86, 86, 2318, 86, + 86, 86, 86, 2321, 86, 2314, 2317, 2320, 86, 2322, + 86, 86, 86, 2323, 2327, 86, 86, 2328, 2324, 2331, + 86, 86, 2319, 86, 2332, 86, 86, 2330, 2325, 2329, + 86, 2326, 2336, 86, 2333, 86, 2337, 2335, 86, 86, - 2341, 2342, 86, 86, 2346, 86, 86, 86, 2348, 86, - 86, 2343, 2344, 2349, 86, 2345, 2351, 86, 2350, 86, - 86, 2352, 2353, 86, 2354, 2355, 2347, 86, 2359, 86, - 2356, 86, 86, 86, 86, 86, 2358, 86, 86, 86, - 2367, 86, 86, 2357, 86, 86, 86, 2371, 86, 2360, - 2361, 2362, 2365, 2363, 2366, 86, 2368, 2369, 86, 2364, - 2372, 2370, 86, 86, 86, 86, 86, 2373, 2374, 2376, - 86, 2377, 170, 86, 2382, 86, 86, 2384, 86, 2378, - 86, 2375, 2381, 2379, 86, 2383, 86, 86, 2385, 2388, - 2387, 2380, 86, 86, 2392, 2391, 2397, 2393, 2395, 2386, + 2334, 2340, 86, 86, 2341, 2338, 86, 86, 2342, 2346, + 86, 2344, 86, 86, 2348, 86, 2349, 86, 2339, 2345, + 2343, 86, 86, 86, 2347, 86, 2350, 2351, 86, 2353, + 2356, 86, 2354, 86, 86, 2355, 2358, 86, 86, 2352, + 86, 2359, 86, 2361, 86, 2360, 86, 86, 86, 2362, + 2363, 2364, 2357, 2365, 2369, 86, 2368, 2366, 86, 86, + 2367, 86, 86, 86, 86, 86, 86, 86, 86, 2377, + 86, 86, 86, 2381, 86, 2382, 2370, 2371, 2373, 2372, + 2375, 86, 2376, 2378, 2379, 2380, 86, 86, 2374, 86, + 2383, 86, 2384, 2386, 86, 2392, 86, 2387, 86, 86, - 2389, 86, 2394, 86, 86, 86, 2396, 86, 2400, 86, - 86, 2390, 86, 2398, 86, 2401, 2405, 86, 86, 2404, - 86, 2406, 2409, 86, 86, 2411, 86, 2399, 86, 2402, - 2407, 2410, 2412, 86, 86, 86, 2414, 86, 86, 2413, - 2403, 2408, 86, 86, 86, 86, 86, 2415, 2417, 86, - 2420, 86, 86, 86, 86, 2416, 2423, 2418, 86, 2427, - 86, 2429, 86, 2419, 2422, 86, 86, 86, 86, 2421, - 2424, 2430, 86, 2426, 2425, 86, 86, 2432, 86, 86, - 2431, 86, 2428, 2437, 2440, 86, 2434, 2435, 86, 86, - 86, 86, 2433, 86, 2438, 2436, 2441, 2439, 86, 86, + 2394, 86, 86, 86, 2388, 2385, 86, 2391, 2393, 2389, + 2397, 86, 86, 86, 170, 2401, 2398, 86, 2403, 2390, + 2395, 86, 2396, 2404, 86, 2399, 86, 2405, 2406, 2407, + 86, 86, 2400, 86, 86, 86, 2402, 2409, 2408, 2410, + 86, 86, 2411, 2417, 2414, 2415, 86, 86, 2416, 2419, + 86, 86, 86, 86, 2421, 86, 2412, 2420, 2422, 86, + 86, 86, 86, 2424, 86, 2423, 2425, 2413, 2418, 86, + 86, 2426, 86, 86, 2427, 86, 86, 2430, 86, 86, + 86, 2428, 86, 2433, 86, 2439, 86, 2437, 86, 2429, + 2432, 86, 2440, 86, 2434, 2435, 2431, 86, 86, 86, - 86, 86, 86, 86, 86, 2451, 86, 86, 2442, 2443, - 2444, 86, 2455, 2449, 86, 3523, 2445, 2454, 2447, 2452, - 2453, 2448, 2446, 2450, 86, 86, 2456, 2458, 86, 86, - 2459, 86, 2460, 86, 2457, 86, 86, 2464, 2465, 86, - 86, 86, 2466, 86, 2461, 2467, 86, 2462, 2463, 86, - 86, 2470, 2471, 2473, 86, 2472, 2468, 2474, 86, 86, - 86, 86, 2469, 86, 2475, 2476, 86, 2480, 86, 2481, - 86, 86, 2483, 86, 86, 2485, 86, 86, 2479, 86, - 86, 2477, 2487, 2478, 2488, 86, 2489, 86, 86, 2491, - 2482, 86, 2484, 86, 2486, 86, 86, 2496, 86, 86, + 2436, 86, 2442, 86, 86, 86, 2438, 86, 2441, 2447, + 86, 2445, 2450, 86, 86, 2451, 2444, 2443, 2448, 86, + 2446, 2449, 86, 86, 86, 86, 2461, 86, 86, 2452, + 86, 86, 86, 2453, 86, 86, 2465, 86, 2454, 2459, + 86, 86, 2466, 2457, 2463, 2455, 2458, 2456, 2464, 2460, + 2462, 2468, 86, 86, 2471, 86, 86, 2467, 2469, 2470, + 86, 86, 2474, 2475, 86, 86, 86, 2476, 86, 2472, + 2477, 86, 86, 2473, 86, 2480, 86, 2481, 2483, 86, + 2482, 2478, 2484, 86, 86, 2479, 86, 86, 86, 2485, + 86, 2486, 2490, 86, 2491, 86, 2487, 2493, 86, 86, - 3523, 2495, 2490, 2498, 86, 86, 86, 2493, 2492, 86, - 86, 2500, 86, 2502, 2494, 2501, 86, 2503, 2497, 2505, - 86, 86, 86, 2499, 2508, 86, 86, 2511, 86, 86, - 86, 2506, 2504, 86, 86, 86, 2507, 86, 2515, 86, - 2509, 2516, 86, 86, 2518, 2510, 2521, 86, 2514, 2512, - 86, 86, 2519, 2513, 2517, 86, 86, 86, 2520, 86, - 86, 2528, 2523, 86, 86, 2524, 2530, 2534, 86, 86, - 2522, 2531, 2529, 86, 2525, 2526, 86, 86, 86, 86, - 86, 2535, 2536, 2537, 86, 2527, 2532, 86, 2533, 86, - 86, 86, 2539, 86, 2541, 2543, 2544, 2547, 2545, 86, + 2489, 2495, 86, 86, 86, 86, 86, 2488, 86, 2492, + 2497, 2498, 86, 2499, 86, 86, 86, 2494, 2496, 86, + 2500, 2502, 2503, 86, 2501, 2506, 86, 86, 2505, 2508, + 86, 86, 86, 86, 86, 2504, 2510, 2512, 2507, 2511, + 86, 2513, 2515, 86, 86, 2509, 86, 86, 2518, 86, + 86, 2516, 2521, 86, 86, 86, 2514, 86, 86, 2517, + 86, 86, 2519, 2528, 2525, 2526, 86, 86, 2520, 86, + 2522, 86, 2524, 86, 2527, 86, 2529, 2523, 2531, 86, + 2533, 86, 2530, 86, 86, 2534, 86, 2539, 86, 2532, + 86, 86, 2541, 2535, 2542, 2545, 86, 2540, 2537, 2536, - 86, 2538, 2546, 86, 2548, 2540, 2542, 2551, 86, 86, - 86, 86, 86, 86, 2552, 2550, 2553, 86, 86, 86, - 2549, 2556, 86, 86, 86, 2555, 2557, 86, 2558, 2562, - 2563, 2559, 2560, 2554, 86, 86, 86, 86, 2561, 86, - 2569, 2564, 86, 2568, 86, 2570, 86, 2565, 2567, 86, - 86, 2573, 170, 2571, 2566, 86, 86, 2574, 2572, 86, - 86, 2579, 86, 86, 86, 86, 86, 86, 86, 86, - 2586, 86, 2577, 2581, 2580, 2575, 2578, 2576, 2582, 2583, - 2584, 2585, 86, 2589, 2590, 86, 86, 2587, 2588, 86, - 2591, 2592, 86, 86, 86, 2595, 2593, 2596, 86, 2594, + 86, 86, 86, 86, 86, 2547, 86, 2548, 2546, 2543, + 2538, 2544, 86, 86, 86, 86, 86, 2550, 2552, 2554, + 2555, 2556, 86, 2558, 2559, 86, 86, 2551, 2549, 86, + 86, 86, 86, 2562, 86, 86, 2563, 2557, 2553, 86, + 2564, 2561, 86, 86, 86, 2567, 2560, 2566, 86, 86, + 86, 86, 2568, 2569, 2573, 2574, 86, 2565, 2570, 2571, + 86, 86, 2572, 86, 86, 86, 2579, 2575, 2580, 86, + 2581, 2576, 86, 2578, 86, 86, 2577, 170, 2582, 86, + 2584, 2583, 2585, 86, 86, 2590, 86, 86, 86, 86, + 86, 86, 3542, 86, 86, 2586, 2597, 2587, 2592, 2588, - 2599, 86, 86, 86, 2598, 86, 86, 2597, 86, 2600, - 86, 86, 2604, 2605, 2601, 86, 86, 86, 2609, 86, - 2602, 86, 2607, 2610, 86, 2608, 86, 86, 86, 2603, - 2606, 2611, 86, 86, 86, 86, 2612, 2613, 2615, 2616, - 86, 86, 86, 86, 86, 86, 2617, 2618, 86, 2623, - 86, 86, 2614, 2626, 86, 2619, 2625, 86, 2622, 86, - 2627, 2620, 86, 2621, 86, 2628, 86, 86, 2624, 2630, - 86, 2632, 2634, 86, 86, 2629, 86, 86, 86, 2638, - 86, 2631, 2635, 2637, 2639, 86, 2641, 86, 2633, 2640, - 2636, 86, 2643, 86, 2642, 86, 2644, 86, 2646, 86, + 2589, 86, 2591, 2593, 2594, 2595, 2596, 86, 86, 2601, + 86, 2606, 2598, 86, 2602, 2603, 86, 86, 86, 86, + 2600, 2599, 2604, 2605, 2607, 86, 2609, 86, 86, 86, + 86, 86, 2611, 86, 2608, 86, 86, 2615, 2616, 86, + 86, 2612, 2610, 86, 86, 2618, 86, 2613, 86, 86, + 2619, 2620, 86, 2617, 2614, 2621, 86, 2622, 2623, 86, + 86, 2627, 86, 2625, 2626, 86, 86, 86, 2624, 86, + 86, 2629, 86, 86, 86, 86, 2637, 2634, 2628, 86, + 2636, 86, 86, 86, 2639, 2638, 2633, 2630, 86, 2631, + 2632, 86, 86, 86, 2635, 2645, 86, 2643, 86, 2640, - 2648, 86, 86, 2647, 2650, 86, 86, 2652, 86, 86, - 86, 2651, 86, 2649, 86, 86, 86, 86, 86, 2656, - 86, 2645, 2659, 2660, 2654, 2661, 86, 2653, 2655, 2662, - 86, 86, 2663, 86, 2665, 86, 86, 2658, 86, 86, - 2664, 2657, 86, 86, 2668, 2670, 86, 2666, 86, 2673, - 86, 86, 2674, 2675, 86, 2669, 86, 2667, 2671, 86, - 2672, 2678, 86, 86, 86, 86, 2679, 86, 2682, 2676, - 2684, 2677, 86, 2680, 2683, 86, 86, 86, 86, 2688, - 86, 86, 2681, 2687, 86, 2686, 86, 86, 86, 3523, - 2685, 2692, 86, 86, 2689, 2690, 2691, 2695, 2696, 86, + 86, 86, 2649, 2648, 86, 86, 2651, 2641, 86, 86, + 2642, 86, 2646, 2650, 2644, 86, 2654, 2647, 2652, 86, + 86, 2659, 2655, 86, 2657, 2653, 86, 86, 86, 86, + 2658, 2661, 86, 2663, 86, 86, 86, 86, 2662, 86, + 2660, 86, 2667, 86, 86, 2674, 2656, 86, 86, 2670, + 2665, 86, 2671, 2664, 86, 2666, 2672, 86, 2673, 86, + 86, 2676, 86, 86, 2669, 86, 86, 2668, 2675, 86, + 2677, 2679, 2681, 86, 2684, 86, 86, 2682, 86, 86, + 2686, 86, 2680, 86, 2678, 2683, 86, 2685, 2689, 86, + 86, 86, 2693, 2690, 2687, 86, 2688, 86, 2691, 2694, - 2697, 86, 2698, 86, 2699, 86, 86, 2693, 2694, 86, - 86, 2701, 86, 2703, 2702, 86, 2704, 86, 2700, 86, - 2705, 86, 2706, 86, 86, 86, 2712, 86, 86, 2714, - 86, 2715, 86, 2708, 86, 86, 86, 2707, 86, 86, - 86, 2711, 86, 2709, 2721, 2710, 2716, 2713, 2717, 2718, - 2719, 86, 2724, 86, 2720, 86, 2726, 86, 86, 86, - 2722, 86, 86, 86, 2725, 86, 86, 86, 2733, 170, - 86, 2723, 86, 2735, 2729, 86, 2736, 2731, 86, 2728, - 86, 2734, 86, 86, 2727, 2737, 2730, 2732, 86, 86, - 2738, 2742, 3523, 86, 2744, 86, 2739, 2743, 2745, 2746, + 86, 2692, 2695, 86, 86, 86, 86, 86, 2700, 86, + 2699, 86, 2697, 2696, 86, 86, 2704, 2698, 86, 86, + 3542, 2701, 86, 2702, 2707, 86, 2703, 2708, 86, 2709, + 86, 2710, 86, 2711, 86, 2705, 86, 2712, 2706, 86, + 2713, 2714, 86, 2715, 86, 2716, 86, 2717, 86, 86, + 86, 2718, 86, 86, 2724, 86, 86, 2726, 86, 2727, + 86, 2720, 86, 86, 86, 86, 86, 86, 2719, 2723, + 2721, 86, 2730, 2722, 2728, 2725, 2729, 86, 2731, 86, + 2736, 86, 2732, 86, 2733, 86, 2737, 2734, 2738, 86, + 86, 2735, 86, 86, 86, 86, 2745, 86, 170, 86, - 86, 86, 2740, 2747, 86, 2741, 86, 2748, 86, 2749, - 86, 2750, 2752, 2751, 86, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 2761, 86, 86, 86, 86, 2759, - 2754, 86, 2765, 2753, 3523, 2756, 2755, 2766, 86, 2758, - 2757, 2760, 2767, 2762, 2763, 2764, 86, 2768, 2770, 86, - 86, 2772, 86, 86, 86, 2769, 86, 86, 86, 2771, - 86, 86, 86, 86, 2776, 86, 2783, 86, 86, 2782, - 3523, 2773, 2774, 2777, 2775, 2784, 86, 86, 2778, 2779, - 86, 2780, 2781, 2788, 86, 2790, 2787, 86, 2785, 2789, - 86, 86, 86, 86, 86, 2786, 86, 86, 86, 86, + 2747, 86, 86, 2741, 86, 2740, 2748, 2743, 86, 2739, + 2746, 86, 86, 86, 86, 2754, 2742, 2744, 2833, 2749, + 2751, 86, 86, 2750, 2753, 86, 2756, 2755, 2758, 86, + 2757, 2759, 86, 2752, 86, 2760, 86, 2761, 86, 2762, + 2763, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 2764, 2773, 86, 86, 86, 2771, 2766, 86, + 2777, 2765, 86, 2768, 2767, 2778, 86, 2770, 2769, 2772, + 2774, 86, 2775, 2776, 2782, 86, 2779, 86, 2780, 86, + 2781, 2784, 86, 86, 86, 86, 2783, 86, 86, 86, + 86, 86, 2788, 86, 2795, 86, 86, 2785, 2796, 86, - 86, 2795, 2799, 86, 2798, 2791, 86, 2792, 2794, 2800, - 86, 86, 2793, 2801, 2802, 86, 86, 2796, 2797, 86, - 86, 86, 2803, 86, 86, 2804, 2807, 86, 2808, 2809, - 86, 86, 2806, 86, 2815, 86, 2814, 86, 2805, 86, - 86, 2810, 2818, 86, 86, 86, 2811, 2824, 86, 2813, - 2812, 2819, 2816, 86, 86, 86, 86, 2817, 2821, 2820, - 2822, 86, 86, 2829, 86, 2823, 2825, 86, 86, 86, - 2826, 2833, 86, 2832, 86, 86, 2827, 2831, 86, 2830, - 2835, 86, 2828, 2836, 2837, 86, 86, 86, 2841, 86, - 86, 2842, 86, 2834, 2844, 86, 86, 86, 2839, 86, + 2794, 2786, 2787, 2789, 86, 2790, 2792, 2791, 86, 2802, + 2793, 2800, 86, 86, 2799, 86, 2797, 2801, 86, 86, + 86, 86, 2798, 86, 86, 86, 3542, 86, 2807, 2812, + 86, 2803, 2810, 86, 2804, 2806, 86, 86, 2811, 2805, + 86, 86, 2813, 86, 2808, 2809, 2814, 86, 86, 86, + 2816, 86, 2815, 86, 2820, 2818, 2817, 86, 2821, 86, + 86, 86, 2827, 86, 2826, 86, 86, 86, 2819, 2830, + 86, 2822, 86, 86, 2836, 86, 2823, 86, 2825, 2824, + 2828, 2835, 2832, 2831, 2829, 86, 86, 86, 2834, 86, + 2841, 86, 86, 86, 86, 86, 86, 2845, 2837, 2844, - 86, 2838, 86, 86, 86, 86, 86, 2840, 2885, 2845, - 2846, 2848, 2847, 2849, 2843, 2850, 2851, 86, 2853, 86, - 2852, 2854, 86, 86, 2855, 86, 86, 86, 2856, 86, - 86, 2858, 86, 86, 86, 2859, 86, 86, 2862, 2857, - 86, 2861, 2864, 2867, 86, 2865, 2868, 86, 2860, 2863, - 86, 2866, 2870, 2871, 170, 2869, 86, 86, 86, 86, - 2876, 3523, 2873, 2872, 86, 86, 86, 86, 2878, 2877, - 86, 2881, 86, 2882, 86, 2880, 2874, 2875, 86, 2886, - 2879, 2884, 86, 86, 2887, 86, 86, 86, 2888, 2891, - 86, 2883, 2889, 86, 2892, 86, 86, 86, 2893, 86, + 86, 2838, 2843, 86, 2842, 2846, 86, 2839, 2849, 2840, + 2848, 86, 86, 2847, 86, 86, 2851, 2854, 86, 86, + 2855, 2850, 86, 2857, 86, 86, 2852, 86, 86, 86, + 86, 2864, 86, 86, 86, 2853, 86, 86, 2858, 2861, + 2859, 2860, 2862, 2863, 2856, 2867, 86, 86, 86, 2865, + 86, 2866, 2868, 2869, 86, 86, 2873, 86, 86, 2871, + 86, 86, 86, 2872, 2870, 86, 2874, 2877, 2875, 86, + 2878, 2880, 86, 2876, 2881, 86, 2879, 86, 2884, 170, + 86, 86, 2882, 86, 86, 2889, 2886, 2885, 2883, 86, + 86, 86, 86, 2891, 2890, 86, 2894, 86, 2895, 86, - 2890, 86, 2898, 2899, 86, 2894, 86, 2896, 86, 86, - 86, 2900, 2895, 86, 86, 86, 2901, 2902, 2903, 86, - 86, 86, 2897, 2904, 2906, 86, 2905, 86, 86, 86, - 2907, 86, 2908, 2909, 2910, 86, 2913, 2911, 2912, 86, - 2914, 86, 2917, 86, 2915, 86, 86, 86, 86, 2918, - 86, 2922, 86, 86, 2923, 86, 86, 2927, 86, 2916, - 86, 86, 86, 86, 2919, 2925, 2920, 2931, 86, 2921, - 2926, 2934, 2924, 2932, 86, 2935, 2929, 86, 86, 2928, - 2937, 86, 2930, 2938, 86, 86, 86, 86, 86, 86, - 86, 86, 2944, 2933, 2941, 2939, 2936, 2942, 86, 86, + 2893, 2887, 2888, 86, 2899, 2892, 2897, 86, 86, 2900, + 86, 2898, 86, 86, 86, 2904, 2896, 2901, 2902, 86, + 86, 86, 86, 2905, 86, 2906, 86, 86, 2903, 2911, + 2912, 2907, 86, 86, 2909, 86, 86, 2913, 86, 2908, + 86, 86, 86, 2916, 2917, 2914, 86, 2915, 2910, 86, + 86, 2919, 86, 86, 2918, 2920, 86, 2921, 86, 86, + 86, 2926, 86, 2928, 86, 2924, 2923, 2922, 2925, 2930, + 86, 2927, 86, 86, 86, 86, 2931, 86, 2935, 86, + 86, 2936, 2929, 86, 86, 86, 2940, 86, 86, 86, + 86, 2932, 2938, 2933, 2944, 86, 2934, 2945, 86, 2937, - 86, 86, 2945, 2943, 2946, 2947, 86, 2949, 86, 86, - 2940, 2951, 86, 2952, 86, 86, 2948, 2953, 86, 2954, - 86, 2956, 86, 86, 86, 2955, 2950, 2960, 2958, 2957, - 86, 86, 2961, 86, 86, 2964, 2959, 2965, 86, 2966, - 86, 86, 2962, 2967, 86, 86, 86, 86, 2968, 2971, - 86, 2963, 86, 86, 2969, 2974, 86, 86, 2975, 2970, - 2976, 86, 2978, 86, 86, 2972, 86, 86, 2977, 2982, - 2983, 86, 2973, 2985, 86, 86, 86, 2979, 2984, 86, - 86, 2981, 2987, 86, 2980, 2986, 86, 2988, 86, 86, - 2993, 86, 86, 86, 86, 2992, 86, 2995, 3054, 2989, + 2939, 2947, 86, 2941, 2942, 2948, 86, 86, 2943, 2950, + 2952, 86, 2951, 86, 86, 86, 86, 86, 86, 2957, + 2946, 2954, 86, 86, 2949, 86, 2955, 86, 86, 86, + 2958, 2956, 2959, 86, 2962, 86, 2960, 3542, 2961, 2953, + 2964, 86, 2965, 86, 2966, 86, 86, 2963, 86, 86, + 2967, 2970, 86, 2968, 86, 2971, 86, 2974, 2969, 2972, + 86, 86, 2975, 86, 86, 2978, 2979, 86, 2973, 2980, + 86, 86, 2976, 2981, 86, 86, 86, 86, 2982, 2985, + 86, 2977, 86, 86, 2983, 2988, 86, 86, 2989, 2984, + 2990, 86, 2992, 86, 86, 2986, 86, 86, 2991, 2996, - 2996, 86, 86, 2990, 86, 86, 2991, 2997, 2999, 86, - 86, 86, 2998, 3001, 86, 3002, 2994, 3000, 86, 86, - 86, 3009, 86, 3005, 86, 86, 3003, 3004, 3011, 3006, - 86, 86, 86, 86, 3008, 86, 3012, 3016, 3010, 3007, - 3015, 3018, 3017, 86, 3013, 86, 3019, 86, 3021, 86, - 3014, 3027, 3020, 86, 3022, 86, 3023, 86, 3024, 86, - 3025, 86, 3026, 86, 86, 3029, 86, 86, 3028, 86, - 86, 86, 3032, 86, 86, 3034, 3038, 86, 3039, 86, - 3031, 86, 3035, 86, 3040, 3042, 86, 86, 3033, 86, - 3030, 3036, 3044, 86, 3037, 86, 3043, 3046, 86, 86, + 2997, 86, 2987, 2999, 86, 86, 86, 2993, 2998, 86, + 86, 2995, 3001, 86, 2994, 3000, 86, 3002, 86, 86, + 3007, 86, 86, 86, 86, 3006, 86, 3009, 3068, 3003, + 3010, 86, 86, 3004, 86, 86, 3005, 3011, 3013, 86, + 86, 86, 3012, 3015, 86, 3016, 3008, 3014, 86, 86, + 86, 3023, 86, 3019, 86, 86, 3017, 3018, 3025, 3020, + 86, 86, 86, 86, 3022, 86, 3026, 3030, 3024, 3021, + 3029, 3032, 3031, 86, 3027, 86, 3033, 86, 3035, 86, + 3028, 3041, 3034, 86, 3036, 86, 3037, 86, 3038, 86, + 3039, 86, 3040, 86, 86, 3043, 86, 86, 3042, 86, - 3045, 3041, 86, 86, 86, 3051, 3052, 86, 3047, 3053, - 86, 3048, 3049, 3050, 86, 86, 86, 86, 86, 3059, - 86, 86, 86, 3055, 3060, 86, 3063, 3057, 86, 3062, - 86, 3061, 3058, 3064, 3056, 3065, 86, 3066, 86, 86, - 3070, 86, 86, 86, 3067, 86, 3068, 86, 86, 86, - 3077, 3071, 3074, 86, 86, 3072, 86, 3069, 3075, 86, - 86, 86, 86, 3082, 3080, 3078, 3081, 86, 3076, 3083, - 3073, 86, 3084, 86, 86, 3079, 86, 3087, 3089, 86, - 3088, 3090, 86, 3092, 3085, 3091, 86, 3086, 86, 86, - 86, 3096, 86, 86, 3095, 86, 86, 86, 3097, 86, + 86, 86, 3046, 86, 86, 3048, 3052, 86, 3053, 86, + 3045, 86, 3049, 86, 3054, 3056, 86, 86, 3047, 86, + 3044, 3050, 3058, 86, 3051, 86, 3057, 3060, 86, 86, + 3059, 3055, 86, 86, 86, 3065, 3066, 86, 3061, 3067, + 86, 3062, 3063, 3064, 86, 86, 86, 86, 86, 3073, + 86, 86, 86, 3069, 3074, 86, 3077, 3071, 86, 3076, + 86, 3075, 3072, 3078, 3070, 3079, 86, 3081, 86, 86, + 86, 3085, 86, 86, 3080, 86, 3083, 86, 86, 86, + 86, 86, 3086, 3082, 3089, 3092, 86, 3087, 3084, 3090, + 86, 86, 86, 3093, 86, 3095, 86, 3096, 3091, 86, - 3098, 3099, 86, 86, 86, 3107, 86, 86, 3093, 3094, - 3100, 3101, 3103, 3105, 86, 86, 86, 3102, 3108, 86, - 3109, 3104, 86, 86, 3111, 86, 86, 3110, 86, 3106, - 3116, 86, 86, 86, 86, 3112, 86, 86, 86, 86, - 3113, 3114, 3120, 86, 3125, 3117, 3118, 3119, 3115, 86, - 86, 86, 3121, 3122, 86, 3123, 86, 3124, 86, 3127, - 3128, 3131, 86, 86, 86, 3133, 86, 3134, 86, 86, - 3126, 86, 3129, 3136, 86, 86, 86, 3142, 86, 86, - 3139, 86, 3130, 3132, 3135, 3137, 3141, 3138, 86, 3145, - 86, 86, 3140, 86, 3148, 86, 86, 3144, 86, 3143, + 3097, 3099, 3088, 3098, 86, 86, 86, 3094, 86, 3102, + 3104, 86, 3103, 3105, 86, 3106, 86, 3100, 86, 3101, + 86, 3114, 86, 86, 3111, 86, 3108, 3107, 3110, 86, + 86, 86, 86, 86, 3112, 86, 3113, 86, 86, 3109, + 3118, 3120, 86, 3115, 3116, 3122, 86, 86, 86, 86, + 3126, 86, 3123, 86, 3117, 3119, 3124, 86, 3125, 86, + 86, 3127, 86, 3121, 3131, 86, 86, 86, 86, 86, + 86, 3135, 3128, 86, 3129, 3132, 86, 86, 3136, 3133, + 3130, 3134, 3140, 86, 3139, 86, 3137, 86, 3142, 86, + 86, 86, 3138, 86, 3143, 3146, 86, 3148, 86, 3149, - 3151, 86, 86, 3153, 86, 86, 86, 3156, 86, 86, - 3147, 3154, 3149, 3146, 86, 3150, 3157, 86, 3160, 86, - 3158, 86, 3152, 86, 86, 3165, 3155, 86, 86, 86, - 86, 86, 3162, 3163, 3159, 3169, 86, 86, 3161, 86, - 3167, 86, 3171, 3164, 3172, 3170, 3166, 86, 3173, 3168, - 86, 86, 3176, 3177, 86, 3179, 86, 3175, 86, 3178, - 86, 86, 3174, 3182, 86, 3181, 86, 86, 3185, 3180, - 86, 3183, 3188, 86, 86, 86, 86, 86, 86, 3193, - 86, 86, 86, 86, 3197, 86, 3184, 3186, 3187, 3189, - 3523, 3192, 3196, 3190, 3198, 86, 3199, 86, 3195, 86, + 86, 3151, 86, 3141, 86, 86, 86, 3144, 86, 86, + 3147, 3154, 86, 86, 3150, 86, 3145, 3156, 3157, 86, + 3152, 3153, 3159, 86, 3155, 3160, 86, 3163, 86, 3158, + 86, 86, 3166, 86, 3167, 86, 86, 3169, 3161, 86, + 86, 3170, 3162, 86, 3164, 3172, 86, 3165, 3173, 86, + 86, 86, 3176, 86, 86, 3168, 86, 86, 3181, 86, + 86, 3171, 86, 3179, 86, 3174, 86, 3178, 3185, 86, + 86, 3175, 3177, 3187, 3183, 86, 86, 3180, 3182, 3188, + 3184, 3186, 86, 3189, 86, 3192, 3195, 3190, 3193, 86, + 86, 86, 86, 3194, 86, 86, 3198, 86, 86, 86, - 3194, 3191, 86, 86, 3200, 3203, 86, 86, 3202, 3204, - 86, 3205, 86, 3206, 86, 86, 3201, 3209, 86, 86, - 3207, 3211, 86, 86, 3210, 86, 86, 86, 86, 86, - 3217, 3218, 86, 86, 86, 86, 86, 3212, 3224, 86, - 86, 3208, 86, 3225, 86, 86, 3215, 3213, 3214, 3221, - 3216, 3223, 3226, 3220, 86, 3235, 3222, 86, 86, 3219, - 3227, 86, 3229, 86, 3228, 3231, 86, 3232, 86, 86, - 86, 86, 3238, 86, 3233, 3230, 86, 3234, 86, 3237, - 86, 3239, 3236, 3241, 3240, 86, 86, 86, 86, 86, - 86, 86, 3244, 86, 86, 3246, 86, 86, 3247, 86, + 3197, 3201, 86, 3199, 3191, 3204, 86, 86, 86, 86, + 86, 86, 3196, 3209, 86, 86, 86, 3225, 3200, 3202, + 3203, 3205, 86, 86, 3208, 86, 3206, 3213, 86, 3214, + 86, 3212, 3211, 86, 3210, 3207, 3215, 86, 3216, 3217, + 86, 3219, 86, 3220, 86, 3218, 3221, 86, 3222, 86, + 86, 86, 86, 3227, 86, 86, 86, 3226, 86, 86, + 86, 86, 3233, 3223, 3234, 86, 86, 86, 86, 86, + 3240, 86, 3241, 86, 3228, 86, 86, 3224, 3229, 3231, + 3230, 3232, 3237, 86, 3239, 3243, 3236, 86, 86, 3238, + 86, 86, 3235, 3246, 3242, 3248, 86, 3249, 86, 86, - 3245, 86, 86, 86, 86, 3242, 3243, 3256, 3257, 86, - 3248, 3523, 3252, 3249, 3250, 3251, 3253, 3254, 86, 3259, - 86, 86, 3255, 3260, 3258, 86, 3268, 86, 86, 3261, - 3262, 3264, 86, 3263, 3265, 86, 86, 3267, 86, 3523, - 3266, 3270, 86, 3271, 86, 3272, 3273, 3269, 86, 3274, - 3275, 86, 86, 3276, 86, 3277, 3278, 86, 86, 86, - 3281, 3279, 3282, 86, 3280, 86, 86, 86, 86, 86, - 3288, 86, 86, 86, 3287, 86, 86, 86, 86, 86, - 3284, 3292, 3291, 3283, 86, 3293, 86, 3285, 3286, 3296, - 3297, 86, 3289, 3294, 86, 3298, 86, 3295, 3290, 86, + 86, 3252, 86, 3244, 3250, 86, 3245, 86, 3255, 86, + 3254, 3247, 86, 86, 3251, 86, 3257, 3253, 3256, 86, + 3258, 86, 86, 86, 86, 86, 86, 3261, 86, 86, + 3263, 86, 86, 3264, 86, 3262, 86, 86, 86, 3259, + 86, 3260, 3273, 3274, 86, 3265, 3542, 3269, 3266, 3267, + 3268, 3270, 3271, 3276, 86, 86, 86, 3272, 3279, 86, + 3275, 3277, 3281, 86, 3278, 3282, 86, 3280, 86, 3284, + 86, 86, 3283, 86, 3287, 86, 3285, 3288, 86, 3289, + 3290, 86, 86, 3291, 3292, 3296, 86, 3293, 86, 86, + 3294, 3295, 3286, 86, 3297, 86, 3299, 86, 86, 86, - 3299, 3300, 86, 3301, 86, 86, 86, 3306, 3308, 3302, - 3303, 86, 3307, 86, 86, 3304, 86, 86, 3305, 86, - 86, 3309, 3312, 3316, 3313, 86, 3310, 3315, 86, 86, - 86, 3317, 3318, 86, 3319, 86, 86, 3311, 3523, 3314, - 86, 3321, 3322, 86, 86, 3320, 3323, 86, 3523, 3324, - 3325, 86, 3326, 86, 3327, 86, 3328, 86, 3329, 86, - 3330, 86, 3331, 86, 3332, 86, 86, 3335, 86, 86, - 3333, 86, 86, 3339, 86, 3334, 86, 86, 3336, 3341, - 86, 86, 86, 3337, 86, 3345, 3346, 86, 86, 86, - 3343, 86, 3338, 86, 3344, 3340, 3342, 3348, 86, 86, + 86, 3302, 86, 86, 3298, 86, 3306, 86, 86, 86, + 3305, 86, 86, 3301, 86, 86, 3300, 86, 3309, 3310, + 86, 3311, 3303, 3304, 86, 3314, 3315, 86, 3307, 3312, + 86, 3317, 86, 3316, 3308, 3313, 3318, 86, 3319, 86, + 86, 86, 86, 3324, 86, 3321, 3326, 3320, 3325, 86, + 3322, 86, 86, 3323, 86, 86, 86, 3333, 86, 3328, + 3330, 3331, 3334, 86, 3336, 86, 86, 3327, 86, 3335, + 3337, 86, 3329, 3332, 86, 3340, 86, 3341, 86, 3339, + 86, 3338, 3343, 86, 3344, 86, 3345, 86, 86, 3342, + 3346, 86, 3347, 86, 3348, 86, 3349, 86, 3350, 86, - 86, 3352, 3350, 3347, 3355, 86, 86, 3349, 3354, 86, - 86, 3353, 86, 86, 3357, 86, 86, 3351, 86, 86, - 3356, 86, 3361, 3363, 86, 86, 86, 3362, 86, 3360, - 3366, 3358, 86, 3359, 86, 3367, 3364, 3369, 86, 3368, - 3370, 86, 3371, 86, 86, 86, 86, 86, 86, 3374, - 3365, 3372, 86, 3373, 3375, 86, 86, 3379, 3380, 3378, - 3376, 86, 86, 3382, 86, 86, 86, 86, 3383, 86, - 3377, 86, 86, 86, 86, 86, 3381, 3391, 3389, 86, - 3393, 3386, 86, 3384, 3385, 3390, 3388, 3394, 86, 86, - 86, 86, 3387, 86, 3396, 3392, 3397, 3399, 86, 3395, + 86, 3353, 86, 3354, 86, 86, 86, 86, 86, 3352, + 3358, 86, 86, 86, 3351, 3355, 86, 3356, 3360, 86, + 86, 3364, 86, 3361, 3365, 86, 3362, 3357, 3363, 3367, + 86, 3359, 86, 86, 86, 86, 3369, 3366, 86, 3371, + 86, 3374, 86, 3373, 86, 86, 86, 86, 86, 3376, + 3368, 86, 86, 3372, 86, 86, 3375, 3380, 3382, 86, + 3370, 3381, 3379, 86, 3377, 86, 3378, 86, 3385, 86, + 3383, 86, 3386, 3388, 86, 3389, 86, 86, 3387, 3390, + 86, 86, 86, 86, 86, 3384, 3392, 3393, 86, 3398, + 3391, 3394, 86, 86, 3399, 3395, 86, 3401, 86, 3397, - 3400, 3401, 86, 86, 3402, 3403, 86, 3404, 86, 86, - 3398, 86, 3405, 86, 3407, 86, 86, 86, 3408, 3412, - 3409, 86, 86, 86, 86, 86, 3416, 86, 3415, 3406, - 3418, 86, 3411, 86, 3414, 3413, 3419, 86, 86, 3422, - 86, 3410, 86, 86, 3417, 3425, 86, 86, 3420, 86, - 3426, 86, 86, 3429, 86, 3427, 3430, 3421, 3423, 86, - 3424, 86, 86, 86, 3435, 86, 3431, 3432, 3434, 86, - 3428, 3436, 86, 86, 86, 86, 86, 86, 86, 3440, - 3433, 86, 3442, 86, 86, 86, 86, 86, 3439, 3447, - 3437, 3448, 86, 3438, 3444, 86, 3441, 3443, 3445, 3449, + 86, 86, 86, 86, 86, 3396, 86, 86, 3400, 86, + 86, 3402, 3410, 3408, 3413, 86, 86, 3405, 86, 3403, + 3404, 3407, 3409, 3412, 86, 86, 86, 86, 3406, 3415, + 3411, 3418, 86, 86, 3420, 86, 3414, 86, 3421, 3416, + 3422, 86, 3419, 3423, 86, 86, 3417, 3425, 86, 86, + 86, 3426, 86, 86, 3427, 3428, 3431, 86, 86, 86, + 86, 86, 86, 86, 3424, 3434, 3435, 86, 3430, 86, + 3433, 3432, 3437, 86, 3438, 86, 3439, 3429, 86, 3436, + 3441, 86, 3440, 86, 3442, 3444, 86, 86, 3445, 86, + 86, 3446, 3448, 3449, 86, 86, 3443, 86, 86, 86, - 86, 86, 3446, 3453, 86, 3455, 3454, 3450, 86, 3456, - 3451, 86, 86, 86, 3452, 86, 86, 3457, 3458, 3461, - 3459, 3462, 86, 86, 86, 86, 3464, 86, 3463, 86, - 86, 86, 86, 3465, 3470, 3460, 86, 3467, 86, 86, - 86, 86, 3473, 3466, 3474, 86, 86, 86, 86, 86, - 3468, 3469, 3472, 3477, 86, 3471, 3475, 3478, 86, 3476, - 86, 3481, 3480, 3482, 86, 3479, 86, 3483, 86, 3485, - 86, 3487, 86, 3488, 86, 86, 86, 3492, 86, 3489, - 3523, 86, 3490, 3495, 86, 3486, 3493, 86, 86, 3494, - 3484, 86, 86, 86, 86, 3491, 86, 86, 3496, 3497, + 3454, 86, 3453, 86, 3450, 3455, 86, 3451, 3447, 86, + 86, 86, 86, 86, 3452, 86, 3459, 86, 3461, 86, + 86, 86, 86, 86, 3456, 3458, 3466, 3467, 86, 3457, + 3460, 86, 3463, 3464, 3462, 3474, 3465, 3468, 86, 3472, + 86, 86, 86, 3469, 86, 3475, 3470, 3473, 86, 86, + 3471, 86, 86, 3476, 3477, 3480, 3478, 3481, 86, 86, + 86, 86, 3483, 86, 3482, 86, 86, 86, 86, 3484, + 3489, 3479, 86, 3486, 86, 86, 86, 86, 3492, 3485, + 3493, 86, 86, 86, 86, 86, 3487, 3488, 3491, 3496, + 86, 3490, 3494, 3497, 86, 3495, 86, 3500, 3499, 3501, - 86, 3499, 3501, 86, 86, 3503, 86, 3498, 86, 3504, - 86, 3507, 3500, 3502, 3508, 86, 3505, 86, 86, 3511, - 3512, 86, 86, 3514, 86, 3506, 86, 3509, 86, 3513, - 3515, 86, 86, 3516, 86, 86, 3510, 3517, 3523, 3518, - 3521, 86, 3522, 86, 3523, 3523, 3523, 3519, 3523, 3523, - 3523, 3523, 3523, 3523, 3520, 47, 47, 47, 47, 47, - 47, 47, 52, 52, 52, 52, 52, 52, 52, 57, - 57, 57, 57, 57, 57, 57, 63, 63, 63, 63, - 63, 63, 63, 68, 68, 68, 68, 68, 68, 68, - 74, 74, 74, 74, 74, 74, 74, 80, 80, 80, + 86, 3498, 86, 3502, 86, 3504, 86, 3506, 86, 3507, + 86, 86, 86, 3511, 86, 3508, 3542, 86, 3509, 3514, + 86, 3505, 3512, 86, 86, 3513, 3503, 86, 86, 86, + 86, 3510, 86, 86, 3515, 3516, 86, 3518, 3520, 86, + 86, 3522, 86, 3517, 86, 3523, 86, 3526, 3519, 3521, + 3527, 86, 3524, 86, 86, 3530, 3531, 86, 86, 3533, + 86, 3525, 86, 3528, 86, 3532, 3534, 86, 86, 3535, + 86, 86, 3529, 3536, 3542, 3537, 3540, 86, 3541, 86, + 3542, 3542, 3542, 3538, 3542, 3542, 3542, 3542, 3542, 3542, + 3539, 47, 47, 47, 47, 47, 47, 47, 52, 52, - 80, 80, 80, 80, 89, 89, 3523, 89, 89, 89, - 89, 160, 160, 3523, 3523, 3523, 160, 160, 162, 162, - 3523, 3523, 162, 3523, 162, 164, 3523, 3523, 3523, 3523, - 3523, 164, 167, 167, 3523, 3523, 3523, 167, 167, 169, - 3523, 3523, 3523, 3523, 3523, 169, 171, 171, 3523, 171, - 171, 171, 171, 174, 3523, 3523, 3523, 3523, 3523, 174, - 177, 177, 3523, 3523, 3523, 177, 177, 90, 90, 3523, - 90, 90, 90, 90, 17, 3523, 3523, 3523, 3523, 3523, - 3523, 3523, 3523, 3523, 3523, 3523, 3523, 3523, 3523, 3523, - 3523, 3523, 3523, 3523, 3523, 3523, 3523, 3523, 3523, 3523, + 52, 52, 52, 52, 52, 57, 57, 57, 57, 57, + 57, 57, 63, 63, 63, 63, 63, 63, 63, 68, + 68, 68, 68, 68, 68, 68, 74, 74, 74, 74, + 74, 74, 74, 80, 80, 80, 80, 80, 80, 80, + 89, 89, 3542, 89, 89, 89, 89, 160, 160, 3542, + 3542, 3542, 160, 160, 162, 162, 3542, 3542, 162, 3542, + 162, 164, 3542, 3542, 3542, 3542, 3542, 164, 167, 167, + 3542, 3542, 3542, 167, 167, 169, 3542, 3542, 3542, 3542, + 3542, 169, 171, 171, 3542, 171, 171, 171, 171, 174, + 3542, 3542, 3542, 3542, 3542, 174, 177, 177, 3542, 3542, - 3523, 3523, 3523, 3523, 3523, 3523, 3523, 3523, 3523, 3523, - 3523, 3523, 3523, 3523, 3523 + 3542, 177, 177, 90, 90, 3542, 90, 90, 90, 90, + 17, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, + 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, + 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, + 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, + 3542 } ; -static const flex_int16_t yy_chk[6916] = +static const flex_int16_t yy_chk[6952] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2358,18 +2366,18 @@ static const flex_int16_t yy_chk[6916] = 5, 3, 6, 24, 4, 24, 24, 5, 24, 6, 7, 7, 7, 7, 24, 7, 8, 8, 8, 8, 33, 8, 7, 9, 9, 9, 26, 26, 8, 10, - 10, 10, 19, 29, 9, 33, 19, 29, 3531, 35, + 10, 10, 19, 29, 9, 33, 19, 29, 3550, 35, 10, 11, 11, 11, 11, 11, 11, 13, 13, 13, 13, 34, 13, 11, 35, 99, 34, 29, 38, 13, 51, 51, 11, 12, 12, 12, 12, 12, 12, 14, 14, 14, 14, 99, 14, 12, 15, 15, 15, 38, 23, 14, 23, 23, 12, 23, 46, 15, 16, 16, - 16, 23, 23, 25, 27, 27, 25, 25, 2871, 16, + 16, 23, 23, 25, 27, 27, 25, 25, 2884, 16, 25, 46, 27, 30, 30, 25, 27, 56, 40, 27, 56, 73, 31, 31, 25, 28, 67, 67, 30, 32, 28, 31, 40, 32, 28, 73, 32, 28, 92, 28, - 28, 92, 31, 32, 1134, 32, 36, 36, 37, 37, + 28, 92, 31, 32, 1138, 32, 36, 36, 37, 37, 28, 45, 45, 37, 97, 36, 45, 97, 41, 41, 45, 36, 87, 41, 93, 36, 87, 37, 93, 37, @@ -2408,9 +2416,9 @@ static const flex_int16_t yy_chk[6916] = 200, 201, 202, 197, 203, 204, 201, 202, 205, 197, 197, 199, 196, 206, 205, 207, 203, 206, 208, 200, 207, 209, 213, 210, 211, 204, 214, 213, 216, 217, - 558, 214, 218, 216, 208, 209, 211, 205, 210, 211, + 559, 214, 218, 216, 208, 209, 211, 205, 210, 211, 215, 215, 220, 220, 215, 219, 215, 221, 218, 217, - 222, 219, 223, 221, 558, 224, 222, 227, 215, 221, + 222, 219, 223, 221, 559, 224, 222, 227, 215, 221, 215, 224, 225, 227, 228, 229, 230, 231, 225, 228, 230, 229, 223, 231, 232, 234, 232, 225, 233, 235, 236, 232, 238, 237, 233, 235, 239, 241, 234, 237, @@ -2444,673 +2452,677 @@ static const flex_int16_t yy_chk[6916] = 347, 344, 342, 353, 345, 345, 351, 351, 353, 354, 355, 352, 356, 357, 358, 359, 359, 361, 359, 362, 358, 354, 370, 370, 362, 363, 367, 359, 357, 355, - 364, 363, 356, 365, 369, 364, 366, 361, 365, 366, - 367, 366, 368, 369, 365, 368, 371, 372, 372, 373, - 376, 378, 371, 377, 373, 380, 377, 379, 368, 382, - 385, 368, 382, 368, 374, 374, 378, 374, 391, 380, + 364, 363, 356, 365, 359, 364, 366, 361, 365, 366, + 367, 366, 368, 369, 365, 368, 373, 371, 372, 372, + 376, 373, 369, 371, 377, 380, 378, 377, 368, 379, + 419, 368, 419, 368, 374, 374, 383, 374, 385, 380, - 376, 386, 379, 374, 377, 385, 383, 374, 382, 389, - 386, 427, 374, 391, 390, 374, 375, 375, 387, 375, - 383, 388, 392, 387, 387, 393, 396, 388, 400, 427, - 389, 392, 375, 390, 388, 375, 395, 375, 401, 375, - 384, 394, 384, 384, 393, 399, 396, 394, 400, 397, - 399, 398, 384, 384, 384, 384, 384, 398, 401, 384, - 402, 398, 395, 397, 403, 404, 405, 407, 399, 403, - 406, 406, 405, 408, 409, 402, 410, 411, 412, 413, - 404, 415, 410, 416, 413, 408, 418, 407, 409, 414, - 414, 417, 414, 419, 412, 419, 423, 423, 424, 416, + 376, 378, 386, 374, 379, 377, 382, 374, 388, 382, + 383, 386, 374, 385, 388, 374, 375, 375, 387, 375, + 389, 388, 392, 387, 387, 382, 390, 393, 394, 391, + 396, 392, 375, 397, 394, 375, 395, 375, 167, 375, + 384, 389, 384, 384, 391, 390, 393, 397, 400, 401, + 396, 398, 384, 384, 384, 384, 384, 398, 399, 384, + 402, 398, 395, 399, 404, 403, 405, 407, 400, 401, + 403, 408, 405, 406, 406, 402, 409, 411, 410, 404, + 412, 399, 416, 408, 410, 415, 413, 407, 417, 418, + 409, 413, 414, 414, 424, 414, 412, 420, 416, 420, - 418, 415, 411, 420, 421, 420, 420, 417, 421, 422, - 425, 426, 428, 422, 431, 432, 437, 424, 434, 167, - 431, 429, 434, 420, 432, 425, 428, 426, 422, 429, - 429, 433, 436, 435, 438, 439, 433, 437, 436, 439, - 438, 429, 435, 429, 430, 440, 441, 442, 440, 430, - 444, 441, 443, 443, 445, 445, 447, 430, 430, 446, - 449, 430, 430, 444, 446, 430, 449, 442, 450, 447, - 448, 448, 450, 451, 452, 453, 454, 455, 455, 456, - 453, 454, 457, 458, 459, 466, 455, 460, 451, 461, - 460, 456, 463, 462, 461, 452, 459, 462, 464, 464, + 420, 425, 411, 418, 417, 415, 421, 422, 423, 423, + 421, 422, 426, 424, 427, 428, 425, 420, 431, 434, + 442, 166, 429, 434, 431, 432, 422, 435, 426, 428, + 429, 429, 427, 433, 432, 436, 435, 438, 433, 437, + 442, 436, 429, 438, 429, 430, 440, 439, 441, 440, + 430, 439, 444, 441, 443, 443, 445, 445, 430, 430, + 437, 447, 430, 430, 446, 444, 430, 448, 448, 446, + 449, 450, 451, 452, 447, 450, 449, 453, 454, 455, + 455, 456, 453, 454, 457, 458, 459, 451, 455, 460, + 461, 466, 460, 456, 452, 461, 462, 463, 459, 468, - 465, 458, 457, 468, 463, 465, 466, 467, 467, 470, - 470, 472, 473, 474, 475, 476, 477, 478, 479, 483, - 473, 477, 481, 475, 484, 468, 482, 485, 166, 487, - 479, 489, 472, 485, 474, 487, 476, 478, 484, 483, - 481, 486, 481, 488, 482, 489, 490, 492, 488, 491, - 486, 493, 491, 494, 490, 495, 497, 490, 498, 494, - 496, 492, 497, 496, 499, 500, 493, 501, 503, 499, - 502, 504, 498, 503, 502, 495, 505, 506, 507, 508, - 497, 505, 511, 1385, 512, 513, 504, 500, 501, 515, - 514, 516, 508, 506, 514, 517, 516, 507, 509, 509, + 462, 464, 464, 458, 457, 465, 467, 467, 472, 463, + 465, 473, 466, 470, 470, 474, 475, 476, 477, 473, + 478, 468, 479, 477, 481, 475, 483, 482, 503, 472, + 486, 485, 503, 484, 479, 487, 474, 485, 476, 486, + 478, 487, 481, 488, 481, 482, 483, 484, 488, 489, + 490, 491, 492, 493, 491, 494, 495, 496, 490, 498, + 499, 490, 495, 489, 494, 498, 492, 497, 493, 501, + 497, 500, 502, 504, 499, 505, 500, 496, 504, 506, + 507, 508, 509, 498, 506, 512, 528, 513, 514, 528, + 505, 501, 516, 502, 515, 509, 507, 518, 515, 517, - 513, 520, 511, 518, 509, 512, 509, 518, 515, 1385, - 519, 517, 509, 522, 509, 519, 520, 509, 509, 519, - 521, 523, 524, 525, 509, 521, 526, 528, 524, 522, - 523, 527, 522, 524, 527, 529, 530, 530, 525, 531, - 532, 532, 526, 533, 534, 535, 536, 536, 537, 538, - 528, 541, 539, 540, 542, 529, 534, 539, 533, 543, - 535, 550, 540, 545, 531, 543, 551, 537, 549, 542, - 541, 538, 545, 546, 547, 548, 550, 546, 547, 552, - 549, 548, 553, 554, 555, 551, 556, 557, 555, 557, - 559, 560, 560, 552, 561, 562, 563, 553, 559, 556, + 508, 510, 510, 514, 517, 512, 519, 510, 513, 510, + 519, 516, 164, 518, 520, 510, 521, 510, 523, 520, + 510, 510, 525, 520, 522, 526, 524, 510, 525, 522, + 527, 521, 529, 525, 523, 524, 530, 523, 531, 531, + 526, 532, 533, 533, 534, 535, 527, 536, 537, 537, + 538, 539, 541, 540, 162, 529, 530, 535, 540, 534, + 542, 541, 536, 543, 544, 546, 532, 547, 548, 538, + 544, 547, 548, 539, 546, 549, 550, 551, 543, 542, + 552, 549, 553, 554, 555, 556, 560, 557, 550, 556, + 160, 558, 551, 558, 560, 562, 553, 563, 554, 552, - 561, 554, 563, 564, 566, 565, 567, 562, 565, 568, - 569, 570, 571, 569, 568, 564, 573, 572, 566, 164, - 570, 567, 572, 572, 574, 574, 581, 570, 571, 573, - 570, 575, 575, 576, 577, 577, 578, 578, 579, 576, - 580, 582, 585, 589, 579, 580, 580, 581, 583, 584, - 586, 583, 587, 582, 584, 587, 590, 588, 586, 591, - 593, 585, 588, 591, 592, 594, 589, 595, 596, 594, - 592, 600, 597, 596, 599, 590, 598, 598, 601, 602, - 593, 603, 604, 601, 605, 595, 597, 607, 606, 599, - 605, 609, 600, 606, 610, 610, 608, 603, 602, 608, + 557, 562, 555, 561, 561, 564, 565, 566, 567, 563, + 566, 564, 568, 570, 569, 571, 570, 572, 565, 569, + 573, 620, 567, 574, 571, 573, 573, 568, 575, 575, + 620, 571, 582, 572, 571, 577, 574, 576, 576, 578, + 578, 577, 579, 579, 580, 583, 581, 586, 587, 585, + 580, 581, 581, 582, 585, 584, 587, 583, 584, 588, + 589, 590, 588, 591, 592, 589, 586, 593, 592, 594, + 595, 597, 596, 593, 595, 601, 597, 598, 599, 599, + 600, 602, 591, 603, 590, 604, 602, 605, 606, 594, + 596, 598, 607, 613, 606, 600, 601, 607, 608, 610, - 611, 607, 604, 612, 608, 613, 614, 608, 608, 609, - 613, 614, 615, 616, 618, 619, 162, 621, 611, 612, - 618, 621, 620, 625, 619, 620, 615, 622, 616, 624, - 623, 626, 622, 623, 624, 627, 629, 628, 630, 625, - 633, 629, 627, 621, 631, 631, 632, 634, 635, 626, - 628, 636, 673, 637, 673, 632, 638, 639, 630, 633, - 636, 648, 638, 639, 635, 637, 640, 644, 634, 640, - 641, 641, 642, 641, 643, 642, 645, 646, 647, 643, - 648, 649, 651, 647, 650, 644, 653, 649, 651, 650, - 645, 646, 652, 654, 655, 652, 656, 657, 654, 655, + 612, 604, 603, 609, 611, 611, 609, 605, 614, 613, + 616, 609, 608, 614, 609, 609, 615, 610, 612, 617, + 619, 615, 621, 622, 616, 621, 619, 622, 623, 624, + 625, 626, 624, 623, 617, 625, 627, 628, 629, 631, + 630, 632, 632, 633, 628, 630, 634, 626, 635, 622, + 636, 629, 633, 637, 627, 638, 644, 639, 640, 631, + 645, 644, 637, 639, 640, 634, 636, 638, 641, 635, + 646, 641, 642, 642, 643, 642, 647, 643, 645, 649, + 648, 650, 654, 651, 646, 648, 652, 650, 651, 661, + 647, 653, 652, 657, 653, 655, 656, 658, 649, 659, - 655, 658, 659, 660, 661, 663, 658, 662, 659, 656, - 657, 653, 662, 661, 664, 664, 665, 668, 671, 671, - 658, 658, 660, 665, 666, 663, 667, 666, 669, 668, - 670, 672, 667, 669, 674, 670, 670, 675, 679, 675, - 676, 677, 666, 669, 678, 680, 681, 682, 686, 684, - 687, 682, 681, 674, 683, 685, 672, 679, 676, 677, - 689, 690, 678, 683, 684, 680, 686, 690, 688, 687, - 685, 688, 691, 692, 693, 689, 694, 695, 696, 697, - 688, 698, 702, 697, 699, 700, 693, 692, 701, 703, - 704, 707, 691, 708, 703, 694, 160, 696, 695, 698, + 655, 656, 656, 660, 659, 662, 657, 654, 661, 660, + 658, 663, 664, 674, 662, 666, 663, 667, 659, 659, + 665, 665, 666, 668, 667, 669, 668, 670, 671, 672, + 676, 669, 664, 671, 672, 672, 673, 673, 674, 670, + 675, 668, 675, 671, 677, 678, 677, 679, 680, 676, + 681, 682, 683, 684, 688, 685, 85, 684, 683, 686, + 687, 689, 691, 678, 685, 679, 680, 690, 693, 681, + 690, 682, 688, 694, 686, 687, 692, 691, 695, 690, + 689, 696, 692, 697, 698, 699, 701, 694, 693, 699, + 695, 700, 702, 703, 704, 708, 705, 707, 707, 708, - 699, 702, 709, 700, 704, 707, 701, 701, 705, 705, - 706, 710, 708, 709, 706, 711, 712, 713, 714, 715, - 711, 717, 716, 718, 719, 710, 715, 716, 717, 719, - 720, 714, 712, 721, 722, 720, 713, 723, 724, 725, - 728, 722, 726, 727, 731, 728, 723, 718, 725, 727, - 729, 721, 724, 729, 726, 730, 732, 733, 731, 730, - 734, 735, 736, 736, 740, 732, 737, 737, 738, 738, - 742, 739, 733, 740, 734, 737, 739, 743, 744, 746, - 745, 747, 735, 743, 745, 748, 749, 750, 753, 742, - 751, 746, 749, 752, 754, 750, 763, 751, 744, 767, + 696, 705, 701, 698, 697, 706, 709, 710, 712, 700, + 702, 703, 703, 704, 711, 714, 713, 715, 720, 706, + 709, 713, 712, 717, 716, 711, 710, 718, 719, 721, + 717, 714, 718, 722, 721, 719, 715, 716, 722, 723, + 724, 725, 720, 727, 726, 729, 737, 724, 728, 730, + 725, 729, 727, 731, 730, 732, 731, 723, 726, 732, + 728, 733, 734, 735, 746, 736, 749, 737, 738, 738, + 744, 734, 739, 739, 742, 733, 740, 740, 735, 736, + 741, 739, 745, 742, 746, 741, 747, 748, 745, 744, + 747, 749, 750, 752, 751, 753, 754, 755, 756, 748, - 840, 757, 760, 748, 764, 763, 747, 768, 767, 840, - 764, 752, 766, 753, 754, 755, 757, 755, 766, 760, - 755, 769, 772, 768, 755, 769, 773, 755, 770, 770, - 771, 771, 774, 772, 755, 755, 775, 755, 779, 776, - 778, 780, 783, 779, 773, 776, 774, 781, 782, 789, - 784, 804, 782, 786, 784, 804, 775, 777, 777, 777, - 778, 777, 780, 785, 777, 781, 783, 788, 785, 777, - 784, 85, 786, 787, 789, 777, 777, 790, 787, 791, - 790, 792, 788, 794, 791, 791, 793, 793, 792, 795, - 796, 796, 797, 798, 795, 799, 798, 797, 794, 802, + 751, 752, 753, 762, 759, 766, 765, 768, 769, 80, + 750, 766, 771, 768, 754, 765, 771, 769, 756, 759, + 762, 770, 755, 757, 776, 757, 772, 772, 757, 773, + 773, 775, 757, 774, 777, 757, 812, 770, 776, 782, + 778, 780, 757, 757, 774, 757, 778, 781, 783, 775, + 812, 785, 781, 787, 777, 779, 779, 779, 787, 779, + 782, 780, 779, 788, 784, 786, 783, 779, 784, 786, + 791, 789, 790, 779, 779, 785, 789, 792, 793, 794, + 792, 796, 788, 793, 793, 786, 794, 790, 795, 795, + 798, 798, 797, 799, 75, 791, 796, 797, 799, 800, - 799, 800, 800, 801, 803, 801, 805, 807, 806, 808, - 808, 802, 813, 809, 812, 807, 810, 811, 811, 814, - 817, 817, 80, 803, 813, 815, 805, 806, 809, 816, - 810, 815, 812, 818, 816, 820, 821, 822, 818, 818, - 820, 814, 821, 823, 826, 824, 825, 826, 827, 823, - 824, 828, 825, 832, 827, 831, 822, 829, 829, 828, - 830, 830, 833, 831, 834, 835, 836, 833, 834, 837, - 838, 832, 835, 839, 839, 841, 842, 842, 844, 846, - 843, 847, 848, 841, 836, 837, 843, 849, 846, 838, - 847, 850, 849, 851, 852, 853, 851, 844, 854, 852, + 801, 804, 800, 802, 802, 801, 803, 805, 803, 807, + 806, 808, 809, 804, 806, 810, 810, 811, 813, 813, + 809, 814, 815, 816, 828, 817, 805, 828, 818, 807, + 808, 817, 811, 818, 815, 819, 819, 820, 823, 814, + 824, 822, 820, 820, 823, 816, 822, 825, 74, 826, + 827, 829, 830, 825, 826, 834, 827, 829, 833, 824, + 830, 831, 831, 832, 832, 835, 833, 836, 837, 838, + 835, 836, 839, 834, 840, 837, 841, 841, 843, 845, + 842, 844, 844, 846, 850, 845, 843, 838, 839, 842, + 848, 849, 851, 840, 852, 853, 854, 851, 853, 848, - 850, 855, 856, 858, 858, 859, 848, 857, 860, 853, - 855, 862, 857, 857, 863, 856, 861, 866, 864, 866, - 859, 864, 868, 854, 870, 861, 871, 860, 869, 864, - 867, 867, 863, 869, 872, 862, 873, 874, 875, 876, - 877, 878, 879, 868, 877, 870, 871, 875, 884, 880, - 883, 881, 882, 891, 872, 880, 885, 874, 873, 878, - 881, 879, 876, 886, 882, 887, 883, 884, 888, 886, - 885, 889, 891, 887, 890, 890, 889, 892, 893, 894, - 895, 896, 888, 897, 898, 900, 899, 893, 895, 901, - 902, 900, 903, 904, 905, 901, 906, 892, 903, 894, + 849, 854, 846, 852, 855, 856, 857, 858, 850, 860, + 862, 859, 861, 861, 863, 857, 859, 859, 855, 864, + 858, 865, 866, 860, 867, 862, 871, 867, 864, 869, + 856, 869, 873, 863, 872, 867, 870, 870, 874, 872, + 866, 875, 876, 877, 879, 865, 878, 871, 880, 68, + 881, 882, 880, 873, 883, 878, 884, 885, 874, 886, + 883, 875, 887, 877, 876, 884, 888, 879, 881, 885, + 882, 889, 891, 892, 890, 886, 894, 889, 892, 895, + 888, 887, 890, 893, 893, 896, 891, 897, 898, 899, + 900, 901, 903, 902, 896, 894, 898, 904, 903, 895, - 909, 896, 906, 898, 902, 897, 899, 904, 908, 907, - 910, 911, 908, 912, 905, 907, 911, 913, 913, 909, - 914, 915, 910, 917, 918, 916, 914, 915, 916, 919, - 910, 920, 921, 921, 912, 919, 922, 918, 923, 924, - 925, 917, 924, 923, 926, 925, 925, 929, 927, 928, - 928, 920, 927, 930, 922, 924, 931, 924, 932, 926, - 934, 931, 935, 938, 939, 937, 941, 941, 942, 929, - 944, 944, 942, 930, 945, 943, 935, 932, 937, 947, - 967, 967, 948, 938, 934, 939, 940, 950, 946, 940, - 943, 940, 946, 949, 947, 940, 948, 940, 949, 945, + 905, 907, 906, 904, 908, 909, 912, 897, 906, 899, + 901, 909, 900, 902, 905, 907, 910, 911, 913, 915, + 63, 911, 910, 914, 908, 912, 916, 916, 914, 917, + 913, 918, 920, 919, 921, 917, 919, 918, 913, 922, + 915, 923, 924, 924, 925, 922, 926, 921, 928, 927, + 920, 926, 927, 928, 928, 929, 930, 931, 931, 932, + 930, 923, 925, 933, 934, 927, 935, 927, 937, 934, + 929, 940, 938, 941, 942, 944, 944, 948, 945, 946, + 975, 932, 945, 933, 940, 935, 938, 947, 947, 951, + 58, 950, 937, 941, 946, 942, 943, 953, 975, 943, - 951, 950, 940, 952, 953, 951, 951, 940, 955, 954, - 957, 956, 952, 954, 958, 959, 956, 960, 953, 958, - 961, 962, 957, 955, 972, 954, 956, 963, 970, 959, - 962, 964, 971, 963, 961, 965, 964, 966, 960, 968, - 969, 965, 972, 966, 968, 974, 969, 976, 980, 975, - 970, 971, 973, 973, 975, 977, 980, 974, 973, 979, - 973, 976, 978, 978, 979, 981, 973, 977, 982, 983, - 984, 973, 973, 986, 985, 987, 989, 990, 973, 986, - 987, 981, 982, 988, 991, 992, 993, 993, 983, 984, - 985, 995, 994, 990, 989, 988, 994, 998, 997, 999, + 949, 943, 948, 951, 949, 943, 950, 943, 952, 954, + 955, 953, 943, 952, 954, 954, 956, 943, 957, 955, + 958, 959, 957, 961, 962, 960, 959, 963, 961, 964, + 956, 965, 973, 966, 957, 958, 959, 960, 962, 966, + 965, 967, 971, 964, 968, 969, 967, 971, 963, 972, + 968, 969, 970, 970, 973, 972, 974, 977, 978, 979, + 980, 981, 981, 978, 984, 982, 983, 985, 986, 977, + 982, 992, 980, 979, 983, 974, 976, 976, 987, 989, + 984, 985, 976, 988, 976, 989, 990, 986, 991, 992, + 976, 990, 993, 994, 995, 976, 976, 987, 998, 988, - 998, 1000, 991, 992, 997, 1003, 1000, 1001, 1002, 1004, - 1003, 995, 1006, 1007, 1002, 1008, 1010, 1009, 999, 1011, - 1001, 1006, 1007, 1009, 1012, 1010, 1013, 1014, 1004, 1012, - 1015, 1008, 1016, 1017, 1018, 1020, 1028, 1025, 1011, 1019, - 1023, 1014, 1017, 1018, 1016, 1019, 1013, 1021, 1026, 1027, - 1015, 1025, 1020, 1021, 1027, 1028, 1023, 1029, 1030, 1031, - 1032, 1033, 1036, 1037, 1045, 1032, 1033, 1036, 1026, 1038, - 1038, 1029, 1037, 1039, 1031, 1040, 1030, 1041, 1042, 1039, - 1045, 1040, 1043, 1046, 1049, 1050, 1041, 1049, 1046, 1046, - 1048, 1048, 1051, 1042, 1048, 1043, 1053, 1052, 1054, 1050, + 991, 997, 976, 996, 996, 997, 1001, 1000, 993, 1001, + 1002, 994, 995, 1000, 1003, 1004, 1005, 1007, 998, 1003, + 1006, 1009, 1005, 1010, 1011, 1006, 1013, 1012, 1004, 1002, + 1009, 1014, 1010, 1012, 1015, 1013, 1007, 1016, 1017, 1015, + 1011, 1018, 1019, 1022, 1020, 1023, 1021, 1026, 1029, 1022, + 1014, 1028, 1017, 1020, 1019, 1021, 1031, 1016, 1024, 1032, + 1033, 1018, 1023, 1026, 1024, 1028, 1030, 1034, 1029, 1035, + 1040, 1030, 1036, 1032, 1035, 1031, 1039, 1036, 1033, 1040, + 1042, 1039, 1034, 1041, 1041, 1043, 1042, 1044, 1045, 1046, + 1048, 1043, 1049, 1053, 1054, 1055, 1044, 1049, 1049, 1056, - 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1056, 1064, 1058, - 1060, 1054, 1051, 1052, 1053, 1055, 1067, 1068, 1063, 1059, - 1061, 1063, 1057, 1065, 1079, 1066, 1068, 1071, 1065, 1064, - 1066, 1069, 1067, 1070, 1073, 1074, 1069, 1075, 1070, 1071, - 1073, 1076, 1079, 1075, 1077, 1077, 1078, 1076, 1082, 1080, - 1083, 1074, 1080, 1081, 1081, 1078, 1084, 1085, 1086, 1087, - 1085, 1088, 1089, 75, 1097, 1087, 1082, 1088, 1089, 1083, - 1090, 1086, 1091, 1092, 1094, 1090, 1084, 1091, 1093, 1092, - 1094, 1096, 1097, 1093, 1098, 1099, 1096, 1100, 1101, 1101, - 1102, 1099, 1100, 1103, 1104, 1105, 1108, 1106, 1107, 1102, + 1051, 1051, 1046, 1045, 1051, 1052, 1048, 1053, 1052, 1057, + 1058, 1055, 1059, 1060, 1054, 1061, 1062, 1056, 1059, 1063, + 1064, 1061, 1057, 1068, 1063, 1058, 1066, 1066, 57, 1067, + 1069, 1062, 1067, 1060, 1064, 1069, 1070, 1071, 1072, 1075, + 1073, 1070, 1078, 1074, 1068, 1073, 1077, 1072, 1074, 1079, + 1080, 1075, 1077, 1071, 1082, 1079, 1080, 1083, 1078, 1081, + 1081, 1084, 1086, 1082, 1084, 1085, 1085, 1087, 1088, 1089, + 1090, 1091, 1089, 1092, 1126, 1083, 1093, 1091, 1126, 1092, + 1086, 1096, 1093, 1090, 1094, 1095, 1087, 1096, 1088, 1094, + 1095, 1097, 1098, 1101, 1100, 1102, 1097, 1103, 1098, 1100, - 1106, 1107, 1103, 1109, 1098, 1110, 1111, 1108, 1109, 1112, - 1113, 1114, 1104, 1118, 1105, 1115, 1113, 1114, 1111, 1116, - 1117, 1117, 1119, 1110, 1116, 1120, 1121, 1122, 1112, 1123, - 1115, 1122, 1118, 1124, 1125, 1126, 1119, 1120, 1128, 1129, - 1129, 1130, 1124, 1131, 1121, 1132, 1133, 1123, 1131, 1130, - 1132, 1135, 1136, 1125, 1138, 1139, 1137, 1128, 1141, 1138, - 1126, 1140, 1140, 1142, 1139, 1135, 1133, 1136, 1137, 1142, - 1143, 1144, 1145, 1146, 1147, 1146, 1143, 1145, 1141, 1147, - 1148, 1149, 1151, 1150, 1152, 1153, 1154, 1144, 1150, 1155, - 1157, 1157, 1153, 1158, 1148, 1149, 1159, 1151, 1160, 1161, + 1104, 1105, 1105, 1103, 1106, 1104, 1108, 1107, 1109, 1110, + 1112, 1101, 1110, 1106, 1111, 1102, 1107, 1111, 1113, 1114, + 1115, 1112, 1116, 1113, 1108, 1117, 1122, 1109, 1118, 1119, + 1120, 1117, 1115, 1123, 1118, 1120, 1124, 1114, 1121, 1121, + 1125, 1116, 1127, 1128, 1119, 1122, 1129, 1123, 1124, 1130, + 1132, 1134, 1128, 1133, 1133, 1137, 1135, 1136, 1125, 1134, + 1127, 1135, 1136, 1139, 1140, 1129, 1141, 1142, 1145, 1132, + 1146, 1143, 1142, 52, 1130, 1137, 1146, 1139, 1141, 1140, + 1143, 1144, 1144, 1147, 1148, 1149, 1156, 1151, 1145, 1147, + 1149, 1150, 1151, 1150, 1152, 1153, 1154, 1155, 1158, 1157, - 1162, 1154, 1165, 1152, 1167, 1161, 1165, 1158, 1155, 1167, - 1163, 1166, 1166, 1160, 1159, 1163, 1168, 1168, 1169, 1170, - 1162, 1172, 1174, 1173, 1163, 1169, 1163, 1171, 1176, 1163, - 1171, 1174, 1175, 1170, 1177, 1179, 1181, 1175, 1178, 1180, - 1172, 1173, 1186, 1178, 1183, 1183, 1177, 1176, 1184, 1179, - 1180, 1185, 1187, 1184, 1188, 1181, 1185, 1187, 1188, 1189, - 1190, 1191, 1186, 1192, 1194, 1195, 1193, 1197, 1189, 1193, - 1198, 1196, 1195, 1201, 1199, 1190, 1191, 1203, 1193, 1194, - 1204, 1200, 1192, 1196, 1202, 1205, 1197, 1200, 1201, 1206, - 1202, 1198, 1199, 1207, 1205, 1208, 1209, 1203, 1210, 1211, + 1148, 1154, 1159, 1161, 1161, 1156, 1157, 1163, 1152, 1153, + 1162, 1164, 1155, 1158, 1165, 1166, 1174, 1167, 47, 1169, + 1165, 1159, 1167, 1169, 1162, 1163, 1164, 1170, 1170, 1171, + 1174, 1167, 1173, 1167, 1171, 1166, 1167, 1172, 1172, 1173, + 1175, 1176, 1178, 1175, 1177, 1179, 1180, 1181, 1182, 1183, + 1179, 1178, 1185, 1182, 1190, 1184, 1187, 1187, 18, 1181, + 1176, 1193, 1177, 1183, 1188, 1180, 1184, 1189, 1191, 1188, + 1193, 1185, 1189, 1191, 1190, 1192, 1194, 1195, 1196, 1192, + 1198, 1197, 1199, 1201, 1197, 1202, 1200, 1203, 1204, 1199, + 1207, 1194, 1195, 1197, 1204, 1198, 1205, 1196, 1200, 1208, - 1204, 1213, 1212, 1215, 1206, 1216, 1219, 1208, 1212, 1215, - 1217, 1218, 1207, 1220, 1211, 1209, 1222, 1221, 1224, 1218, - 1216, 1213, 1221, 1210, 1217, 1223, 1219, 1225, 1222, 1220, - 1223, 1223, 1226, 1227, 1227, 1229, 1231, 1224, 1232, 1232, - 1230, 1225, 1231, 1239, 1234, 1226, 1228, 1228, 1229, 1230, - 1235, 1228, 1233, 1234, 1228, 1228, 1235, 1233, 1236, 1228, - 1242, 1237, 74, 1236, 1239, 1228, 1237, 1238, 1238, 1228, - 1240, 1240, 1241, 1243, 1245, 1241, 1244, 1241, 1246, 1247, - 1242, 1248, 1244, 1245, 1247, 1249, 1250, 1251, 1254, 1252, - 1255, 1243, 1250, 1251, 1252, 1248, 1253, 1256, 1246, 1255, + 1209, 1206, 1201, 1210, 1211, 1203, 1202, 1206, 1212, 1209, + 1207, 1205, 1213, 1214, 1215, 1216, 1217, 1220, 1210, 1208, + 1212, 1216, 1219, 1211, 1223, 1221, 1222, 1224, 1219, 1215, + 1225, 1213, 1220, 1226, 1222, 1225, 1217, 1228, 1214, 1221, + 1229, 1227, 1230, 1224, 1223, 1226, 1227, 1227, 1231, 1231, + 1233, 1234, 1238, 1235, 1229, 1230, 1228, 1232, 1232, 1235, + 1234, 1238, 1232, 1233, 1237, 1232, 1232, 1236, 1236, 1237, + 1232, 1239, 1243, 1240, 1241, 1246, 1232, 1239, 1240, 1241, + 1232, 1242, 1242, 1244, 1244, 1245, 1247, 1249, 1245, 1250, + 1245, 1248, 1252, 1243, 1251, 1246, 1249, 1248, 1253, 1251, - 1253, 1254, 1256, 1249, 1255, 1257, 1255, 1260, 1255, 1263, - 1255, 1258, 1258, 1259, 1259, 1264, 1259, 1262, 1260, 1257, - 1265, 1262, 1266, 1267, 1263, 1268, 1269, 1266, 1266, 1265, - 1270, 1269, 1267, 1264, 1271, 1272, 1273, 1274, 1277, 1275, - 1276, 1276, 1278, 1271, 1270, 1275, 1277, 1268, 1279, 1280, - 1281, 1274, 1283, 1279, 1272, 1273, 1278, 1282, 1284, 1281, - 1285, 1286, 1286, 1280, 1282, 1285, 1287, 1288, 1288, 1289, - 1283, 1289, 1291, 1292, 1293, 1291, 1294, 1296, 1292, 1295, - 1295, 1287, 1300, 1284, 1301, 1294, 1297, 1297, 1298, 1298, - 1299, 1302, 1305, 1293, 1304, 1299, 1307, 1296, 1303, 1303, + 1256, 1254, 1255, 1259, 1247, 1256, 1252, 1254, 1255, 1250, + 1257, 1258, 1259, 1260, 1257, 1261, 1253, 1259, 1260, 1259, + 1264, 1259, 1267, 1259, 1258, 1262, 1262, 1263, 1263, 1261, + 1263, 1264, 1266, 1268, 1269, 1270, 1266, 1267, 1271, 1272, + 1270, 1270, 1274, 1269, 1273, 1275, 1276, 1271, 1277, 1273, + 1278, 1268, 1279, 1289, 1275, 1282, 1274, 1281, 1279, 1280, + 1280, 1272, 1283, 1282, 1278, 1276, 1284, 1277, 1285, 1281, + 1286, 1284, 1288, 1287, 1291, 1291, 1283, 1292, 1289, 1286, + 1287, 1290, 1285, 1293, 1293, 1294, 1290, 1294, 1296, 1297, + 1288, 1296, 1292, 1298, 1297, 1299, 1300, 1300, 1301, 1302, - 1308, 1306, 1309, 1300, 1306, 1301, 1308, 1309, 1310, 1305, - 1312, 1311, 1302, 1311, 1304, 1314, 1307, 1310, 1314, 1315, - 1316, 1317, 1318, 1319, 1320, 1316, 1325, 1318, 1312, 1320, - 1321, 1319, 1322, 1321, 1315, 1317, 1324, 1322, 1323, 1323, - 1326, 1324, 1327, 1328, 1325, 1330, 1326, 1331, 1334, 1327, - 1332, 1330, 1333, 1331, 1334, 1332, 1328, 1333, 1335, 1336, - 1337, 1338, 1338, 1339, 1341, 1343, 1342, 1335, 1345, 1341, - 1344, 1337, 1346, 1347, 1348, 1343, 1349, 1352, 1336, 1347, - 1348, 1351, 1349, 1339, 1342, 1344, 1353, 1351, 1345, 1354, - 1355, 1352, 1357, 1356, 1359, 1346, 1360, 1352, 1358, 1358, + 1302, 1303, 1303, 1304, 1299, 1305, 1306, 1307, 1304, 1308, + 1308, 1309, 1298, 1310, 1311, 1312, 1313, 1311, 1301, 1314, + 1315, 1316, 1313, 1316, 1314, 1317, 1305, 1306, 1307, 1315, + 1310, 1309, 1320, 1319, 1321, 1312, 1319, 1322, 1324, 1321, + 1323, 1328, 1328, 1317, 1325, 1323, 1324, 1320, 1330, 1325, + 1326, 1322, 1327, 1326, 1329, 1331, 1332, 1327, 1333, 1329, + 1337, 1331, 1335, 1332, 1336, 1337, 1330, 1338, 1335, 1339, + 1336, 1333, 1338, 1340, 1341, 1339, 1342, 1343, 1343, 1344, + 1346, 1348, 1340, 1347, 1350, 1346, 1351, 1342, 1349, 1352, + 1353, 1348, 1354, 1341, 1356, 1352, 1353, 1357, 1354, 1344, - 1361, 1364, 1355, 1362, 1363, 1363, 1353, 1356, 1362, 1354, - 1357, 1365, 1367, 1372, 1359, 1369, 1365, 1368, 1361, 1370, - 1373, 1360, 1368, 1368, 1364, 1374, 1371, 1372, 1370, 1376, - 1377, 1367, 1377, 1369, 1371, 1373, 1375, 1378, 1376, 1380, - 1374, 1375, 1381, 1374, 1375, 1380, 1381, 1382, 1383, 1384, - 1387, 1378, 1386, 1383, 1383, 1387, 1388, 1389, 1382, 1390, - 1391, 1388, 1392, 1394, 1400, 1391, 1395, 1396, 1384, 1398, - 1386, 1397, 1397, 1398, 1399, 1389, 1402, 1394, 1403, 1390, - 1401, 1404, 1392, 1400, 1395, 1396, 1401, 1405, 1402, 1406, - 1407, 1408, 1399, 1409, 1403, 1410, 1412, 1413, 1409, 1418, + 1356, 1347, 1358, 1349, 1350, 1359, 1360, 1361, 1362, 1351, + 1364, 1357, 1363, 1363, 1365, 1366, 1372, 1357, 1360, 1367, + 1369, 1361, 1358, 1374, 1367, 1359, 1362, 1368, 1368, 1370, + 1364, 1373, 1376, 1366, 1370, 1372, 1373, 1373, 1375, 1365, + 1376, 1374, 1377, 1369, 1378, 1379, 1380, 1375, 1381, 1385, + 1382, 1380, 1382, 1383, 1380, 1385, 1377, 1381, 1386, 1378, + 1379, 1387, 1386, 1379, 1388, 1389, 1390, 1383, 1391, 1388, + 1388, 1392, 1387, 1393, 1395, 1394, 1392, 1396, 1393, 1397, + 1400, 1399, 1396, 1401, 1389, 1403, 1391, 1402, 1402, 1403, + 1404, 1405, 1390, 1394, 1395, 1399, 1406, 1407, 1400, 1397, - 1404, 1405, 1410, 1411, 1406, 1407, 1414, 1416, 1411, 68, - 1408, 1415, 1415, 1422, 1412, 1414, 1417, 1420, 1413, 1418, - 1419, 1419, 1416, 1420, 1421, 1417, 1426, 1422, 1423, 1423, - 1421, 1424, 1424, 1425, 1427, 1428, 1438, 1429, 1430, 1425, - 1428, 1431, 1426, 1429, 1430, 1432, 1432, 1431, 1433, 1433, - 1435, 1435, 1436, 1437, 1438, 1427, 1436, 1439, 1440, 1441, - 1442, 1444, 1437, 1443, 1443, 1445, 1446, 1442, 1447, 1439, - 1448, 1446, 1440, 1445, 1441, 1451, 1452, 1452, 1449, 1453, - 1450, 1444, 1447, 1449, 1449, 1450, 1450, 1454, 1455, 1448, - 1457, 1456, 1458, 1459, 1460, 1451, 1456, 1455, 1453, 1461, + 1408, 1401, 1406, 1409, 1410, 1411, 1412, 1413, 1404, 1407, + 1405, 1417, 1414, 1418, 1416, 1419, 1408, 1414, 1410, 1416, + 1411, 1412, 1409, 1415, 1419, 1421, 1413, 1420, 1420, 1417, + 1415, 1423, 1422, 1425, 1418, 1424, 1424, 1426, 1427, 1425, + 1421, 1422, 1430, 1426, 1428, 1428, 1429, 1429, 1430, 1431, + 1432, 1423, 1427, 1433, 1434, 1435, 1436, 1443, 1433, 17, + 1434, 1435, 1436, 1437, 1437, 1431, 1438, 1438, 1440, 1440, + 1441, 1432, 1442, 1444, 1441, 1443, 1445, 1446, 1449, 1447, + 1450, 1442, 1448, 1448, 1451, 1444, 1447, 1452, 1450, 1451, + 1445, 1453, 1446, 1456, 1454, 1457, 1457, 1455, 1449, 1454, - 1460, 1462, 1463, 1465, 1461, 1468, 1454, 1464, 1466, 1457, - 1467, 1459, 1458, 1464, 1466, 1469, 1467, 1470, 1471, 1472, - 1474, 1462, 1465, 1477, 1468, 1473, 1477, 1475, 1463, 1476, - 1476, 1478, 1479, 1480, 1469, 1483, 1470, 1471, 1472, 1473, - 1483, 1474, 1475, 1481, 1481, 1480, 1482, 1482, 1484, 1485, - 1478, 1479, 1484, 1487, 1486, 1488, 1492, 1488, 1490, 1491, - 1493, 1488, 1485, 1486, 1491, 1494, 1487, 1495, 1495, 1498, - 1496, 1492, 1497, 1499, 1488, 1496, 1490, 1500, 1497, 1501, - 1493, 1494, 1500, 1501, 1498, 1502, 1499, 1503, 1504, 1502, - 1505, 1506, 1507, 1508, 1508, 1510, 1512, 1513, 1507, 1505, + 1454, 1452, 1455, 1455, 1458, 1459, 1460, 1461, 1462, 1463, + 1453, 1465, 1461, 1456, 1464, 1460, 1466, 1465, 1467, 1468, + 1469, 1466, 1470, 1458, 1459, 1471, 1469, 1462, 1472, 1463, + 1473, 1471, 1464, 1474, 1472, 1475, 1476, 1477, 1467, 1478, + 1479, 1470, 1480, 1481, 1481, 1468, 1483, 1482, 1484, 1473, + 1482, 1485, 1474, 1478, 1475, 1476, 1477, 1480, 1486, 1486, + 1489, 1479, 1490, 1485, 1489, 1483, 1488, 1484, 1487, 1487, + 1491, 1488, 1492, 1495, 1493, 1490, 1493, 1496, 1498, 1491, + 1493, 1497, 1496, 1499, 1501, 1492, 1500, 1500, 1502, 1501, + 1503, 1495, 1509, 1493, 1502, 1504, 1497, 1505, 1498, 1499, - 1514, 1514, 1513, 1515, 1516, 1520, 1504, 1503, 1520, 1515, - 1522, 1506, 1523, 1510, 1518, 1518, 1524, 1512, 1521, 1521, - 1526, 1527, 1529, 1526, 1516, 1528, 1522, 1530, 1523, 1531, - 1531, 1529, 1524, 1532, 1533, 1534, 1535, 1536, 1537, 1537, - 1538, 1535, 1527, 1539, 1540, 1528, 1541, 1530, 1532, 1538, - 1542, 1536, 1543, 1543, 1534, 1533, 1545, 1546, 1544, 1540, - 1547, 1539, 1546, 1548, 1548, 1549, 1550, 1551, 1551, 1549, - 1542, 1541, 1544, 1552, 1545, 1547, 1554, 1553, 1555, 1556, - 1557, 1561, 1555, 1559, 1559, 1557, 1550, 1554, 1560, 1563, - 1564, 1560, 1562, 1565, 1561, 1552, 1553, 1562, 1556, 1566, + 1507, 1506, 1510, 1505, 1507, 1503, 1506, 1508, 1504, 1511, + 1512, 1508, 1509, 1513, 1514, 1514, 1516, 1518, 1511, 1513, + 1510, 1519, 1520, 1520, 1522, 1521, 1519, 1524, 1524, 1526, + 1512, 1521, 1526, 1528, 1516, 1527, 1527, 1529, 1518, 1530, + 1532, 1533, 1535, 1532, 1522, 1534, 1536, 1537, 1537, 1528, + 1539, 1535, 1538, 1529, 1540, 1530, 1541, 1545, 1542, 1543, + 1543, 1541, 1533, 1546, 1547, 1534, 1536, 1538, 1544, 1550, + 1548, 1539, 1542, 1540, 1551, 1545, 1552, 1544, 1546, 1549, + 1549, 1552, 1553, 1550, 1554, 1554, 1556, 1555, 1558, 1547, + 1548, 1555, 1551, 1557, 1557, 1559, 1560, 1553, 1561, 1562, - 1567, 1568, 1569, 1569, 1570, 1563, 1574, 1565, 1564, 1570, - 1571, 1572, 1573, 1573, 1567, 1574, 1575, 1576, 1566, 1566, - 1577, 1575, 1577, 1578, 1580, 1583, 1568, 1579, 1578, 1581, - 1571, 1572, 1585, 1579, 1589, 1581, 1586, 1576, 1588, 1583, - 1584, 1584, 1586, 1588, 1580, 1590, 1590, 1591, 1591, 1592, - 1593, 1585, 1594, 1595, 1596, 1596, 1595, 1597, 1589, 1598, - 1599, 1607, 1603, 1592, 1601, 1603, 1600, 1594, 1593, 1600, - 1601, 1598, 1600, 1602, 1605, 1597, 1608, 1606, 1602, 1608, - 1599, 1603, 1606, 1605, 1600, 1610, 1607, 1609, 1609, 1611, - 1615, 1610, 1612, 1613, 1613, 1611, 1615, 1612, 1614, 1614, + 1563, 1570, 1561, 1565, 1565, 1563, 1556, 1560, 1566, 1567, + 1558, 1566, 1568, 1569, 1559, 1572, 1571, 1568, 1562, 1570, + 1574, 1576, 1567, 1573, 1575, 1575, 1576, 1577, 1578, 1569, + 1571, 1579, 1579, 1580, 1572, 1572, 1581, 1573, 1582, 1586, + 1595, 1581, 1580, 1591, 1583, 1574, 1583, 1577, 1578, 1584, + 1585, 1587, 1589, 1647, 1584, 1647, 1585, 1587, 1582, 1586, + 1590, 1590, 1591, 1592, 1595, 1594, 1589, 1596, 1596, 1592, + 1594, 1597, 1597, 1598, 1599, 1600, 1601, 1602, 1602, 1601, + 1603, 1604, 1605, 1606, 1613, 1607, 1606, 1598, 1745, 1606, + 1600, 1607, 1599, 1604, 1608, 1611, 1745, 1609, 1603, 1608, - 1616, 1617, 1618, 1619, 1620, 1616, 1621, 1622, 1627, 1621, - 1623, 1624, 1632, 1622, 1617, 1626, 1623, 1624, 1625, 1631, - 1618, 1626, 1619, 1625, 1620, 1628, 1629, 1629, 1630, 1633, - 1628, 1627, 1632, 1630, 1634, 1635, 1636, 1631, 1637, 1638, - 1639, 1640, 1641, 1642, 1641, 1640, 1643, 1645, 1633, 1635, - 1636, 1646, 1637, 1643, 1634, 1647, 1649, 1638, 1648, 1645, - 1651, 1650, 1642, 1646, 1648, 1639, 1653, 1652, 1647, 1655, - 1655, 1656, 1658, 1657, 1659, 1659, 1649, 1650, 1657, 1660, - 1651, 1652, 1661, 1662, 1658, 1663, 1664, 1653, 63, 1665, - 1666, 1656, 1668, 1667, 1660, 1664, 1661, 1666, 1670, 1672, + 1609, 1606, 1605, 1612, 1611, 1615, 1615, 1614, 1612, 1613, + 1614, 1616, 1617, 1625, 1618, 1623, 1609, 1616, 1617, 1618, + 1619, 1619, 1620, 1620, 1621, 1624, 1622, 1626, 1623, 1628, + 1621, 1622, 1625, 1627, 1629, 1628, 1627, 1631, 1630, 1632, + 1629, 1633, 1631, 1624, 1630, 1632, 1634, 1626, 1635, 1635, + 1636, 1634, 1637, 1638, 1640, 1636, 1639, 1641, 1642, 1644, + 1645, 1646, 1643, 1648, 1633, 1646, 1651, 1655, 1652, 0, + 1637, 1641, 1642, 1638, 1640, 1639, 1643, 1644, 1651, 1649, + 1652, 1653, 1648, 1654, 1656, 1645, 1649, 1655, 1657, 1654, + 1658, 1659, 1661, 1661, 1653, 1662, 1663, 1664, 1665, 1665, - 1674, 1674, 1667, 1663, 1665, 1667, 1673, 1662, 1668, 1673, - 1675, 1675, 1677, 1670, 1676, 1680, 1678, 1681, 1670, 1678, - 1679, 1679, 1682, 1685, 1672, 1686, 1676, 1682, 1680, 1683, - 1677, 1687, 1683, 1684, 1688, 1689, 1681, 1690, 1684, 1691, - 1687, 1686, 1685, 1693, 1689, 1691, 1690, 1689, 1692, 1692, - 1693, 1694, 1695, 1688, 1696, 1697, 1699, 1698, 1700, 1704, - 1705, 1699, 1699, 1700, 1701, 1695, 1706, 1706, 1708, 1697, - 1707, 1694, 1696, 1698, 1709, 1713, 1701, 1708, 1705, 1709, - 1710, 1710, 1711, 1712, 1704, 1714, 1707, 1715, 1712, 1718, - 1720, 1711, 1716, 1713, 1711, 1710, 1719, 1716, 1716, 1721, + 1656, 1663, 1666, 1668, 1658, 1667, 1669, 1670, 1657, 1664, + 1671, 1672, 1659, 1674, 1673, 1662, 1670, 1666, 1672, 1667, + 1676, 1678, 1682, 1673, 1669, 1671, 1673, 1668, 1679, 1674, + 1683, 1679, 1680, 1680, 1682, 1676, 1681, 1681, 1684, 1686, + 1676, 1684, 1685, 1685, 1687, 1688, 1678, 1691, 1683, 1692, + 1688, 1689, 1686, 1690, 1689, 1693, 1694, 0, 1690, 1695, + 1696, 1697, 1700, 1687, 1693, 1692, 1691, 1697, 1695, 1696, + 1699, 1695, 1698, 1698, 1701, 1694, 1702, 1699, 1703, 1704, + 1705, 1707, 1700, 1706, 1710, 1705, 1705, 1701, 1706, 1711, + 1712, 1712, 1703, 1707, 1702, 1704, 1713, 1714, 1715, 1716, - 1723, 1722, 1731, 1718, 1721, 1715, 1714, 1722, 1724, 1724, - 1725, 1719, 1720, 1727, 1726, 1728, 1725, 1729, 1723, 1726, - 1732, 1728, 1731, 1729, 1733, 1734, 1735, 1727, 1738, 1735, - 1733, 1736, 1740, 1741, 1732, 1735, 1738, 1736, 1734, 1742, - 1743, 1744, 1746, 1748, 1745, 1747, 1744, 1749, 1743, 1750, - 58, 1740, 1741, 1745, 1747, 1746, 1748, 1756, 1742, 1751, - 1751, 1749, 1752, 1750, 1753, 1754, 1755, 1755, 1752, 1757, - 1753, 1758, 1759, 1759, 1761, 1760, 1762, 1756, 1754, 1763, - 1761, 1751, 1764, 1766, 1766, 1767, 1769, 1757, 1760, 1768, - 1758, 1769, 1770, 1768, 1771, 1763, 1772, 1773, 1762, 1771, + 1716, 1717, 1719, 1715, 1720, 1721, 1714, 1711, 1724, 1710, + 1717, 1718, 1713, 1717, 1716, 1725, 1718, 1726, 1728, 1727, + 1719, 1722, 1724, 1721, 1727, 1720, 1722, 1722, 1729, 1730, + 1725, 1732, 1728, 1733, 1729, 1731, 1731, 1732, 1733, 1726, + 1734, 1738, 1735, 1736, 1739, 1740, 1741, 1730, 1735, 1736, + 1747, 1740, 1748, 1742, 1734, 1749, 1742, 1743, 1739, 1741, + 1750, 1738, 1742, 1743, 1752, 1751, 1753, 1754, 1750, 1747, + 1751, 1748, 1755, 1752, 1749, 1756, 1754, 1757, 1759, 1753, + 1758, 1758, 1760, 1761, 1759, 1755, 1762, 1762, 1760, 1756, + 1763, 1757, 1767, 1764, 1765, 1768, 1761, 1766, 1766, 1769, - 1764, 1772, 1774, 1776, 1777, 1767, 1773, 1778, 1779, 1780, - 1778, 1782, 1770, 1777, 1776, 1781, 1781, 1783, 1784, 1786, - 1779, 1785, 1785, 1788, 1780, 1774, 1789, 1787, 1791, 1783, - 1782, 1792, 1794, 1786, 1787, 1788, 1793, 1784, 1789, 1795, - 1796, 1843, 1793, 1802, 1794, 1843, 1796, 1791, 1797, 1797, - 1798, 1792, 1802, 1798, 1799, 1799, 1801, 1795, 1803, 1804, - 1804, 1801, 1805, 1806, 1803, 1806, 1807, 1808, 1809, 1807, - 1810, 1811, 1812, 1813, 1805, 1814, 1817, 1812, 1813, 1815, - 1816, 1817, 1819, 1818, 1814, 1822, 57, 1808, 1810, 1811, - 1809, 1815, 1818, 1821, 1820, 1816, 1823, 1823, 1821, 1820, + 1770, 1768, 1758, 1774, 1771, 1767, 1773, 1773, 1775, 1776, + 1763, 1764, 1775, 1765, 1776, 1777, 1770, 1780, 1781, 1778, + 1779, 1769, 1771, 1774, 1778, 1779, 1780, 1783, 1784, 1785, + 1786, 1787, 1785, 1788, 1788, 1777, 1789, 1784, 1783, 1790, + 1791, 1781, 1786, 1792, 1792, 1794, 1787, 1793, 1795, 1798, + 1796, 1790, 1794, 1799, 1801, 1789, 1802, 1800, 1803, 1791, + 1795, 1793, 1796, 1800, 1803, 1813, 1801, 1813, 1798, 1804, + 1804, 1809, 1805, 1799, 1802, 1805, 1806, 1806, 1808, 1810, + 1809, 1811, 1811, 1808, 1812, 1810, 1814, 1815, 1816, 1814, + 1817, 1818, 1819, 1820, 1821, 1825, 1812, 1819, 1820, 1822, - 1822, 1824, 1819, 1825, 1827, 1818, 1820, 1824, 1828, 1829, - 1830, 1831, 1832, 1831, 1833, 1833, 1834, 1834, 1835, 1835, - 1836, 1837, 1837, 1827, 1825, 1829, 1832, 1828, 1832, 1839, - 1830, 1838, 1838, 1840, 1841, 1842, 1842, 1844, 1845, 1847, - 1836, 1845, 1848, 1844, 1850, 1847, 1849, 1851, 1852, 1850, - 1839, 1852, 1849, 1854, 1840, 1841, 1853, 1853, 1855, 1857, - 1848, 1856, 1856, 1855, 1858, 1859, 1860, 1861, 1861, 1866, - 1859, 1860, 1851, 1854, 1857, 1862, 1863, 1864, 1865, 1867, - 1862, 1869, 1863, 1872, 52, 1858, 1868, 1866, 1871, 1864, - 1864, 1864, 1868, 1871, 1871, 1873, 1864, 1872, 1865, 1867, + 1823, 1824, 1826, 1821, 1825, 1829, 1824, 1815, 1817, 1818, + 1816, 1822, 1832, 1827, 1828, 1823, 1834, 1825, 1827, 1828, + 1829, 1831, 1826, 1830, 1830, 1827, 1835, 1831, 1836, 1837, + 1838, 1843, 1838, 1832, 1839, 1834, 1840, 1840, 1841, 1841, + 1842, 1842, 1844, 1844, 1836, 1835, 1845, 1845, 1839, 1837, + 1839, 1843, 1846, 1847, 1848, 1849, 1849, 1850, 1851, 1852, + 1854, 1850, 1852, 1855, 1851, 1856, 1854, 1857, 1858, 1860, + 1860, 1856, 1857, 1846, 1847, 1848, 1859, 1861, 1862, 1859, + 1864, 1855, 1865, 1862, 1863, 1863, 1866, 1867, 1868, 1868, + 1870, 1866, 1867, 1858, 1869, 1864, 1870, 1861, 1871, 1869, - 1874, 1869, 1874, 1875, 1876, 1877, 1878, 1879, 1880, 1882, - 1873, 1877, 1881, 1881, 1875, 1878, 1883, 1883, 1884, 1876, - 1885, 1886, 1886, 1887, 1887, 1888, 1892, 1879, 1893, 1880, - 1891, 1891, 1895, 1896, 1897, 1882, 1898, 1893, 1884, 1900, - 1897, 1895, 1885, 1899, 1899, 1888, 1901, 1903, 1902, 1904, - 1906, 1892, 1898, 1907, 1896, 1902, 1903, 1905, 1905, 1909, - 1900, 1901, 1910, 1912, 1911, 1909, 1913, 1910, 1914, 1907, - 1911, 1917, 1918, 1913, 1914, 1904, 1906, 1915, 1918, 1915, - 1919, 1919, 1920, 1912, 1921, 1922, 1924, 1920, 1923, 1925, - 1917, 1926, 1925, 1921, 1927, 1928, 1928, 1929, 1924, 1931, + 1872, 1873, 1874, 1865, 1876, 1932, 1880, 1875, 1932, 1878, + 1871, 1871, 1871, 1875, 1878, 1878, 1879, 1871, 1882, 1873, + 1872, 1880, 1874, 1881, 1876, 1881, 1883, 1884, 1885, 1882, + 1879, 1886, 1887, 1884, 1888, 1888, 1889, 1885, 1890, 1890, + 1891, 1883, 1892, 1893, 1893, 1894, 1894, 1895, 1898, 1898, + 1899, 1886, 1900, 1887, 1902, 1903, 1905, 1906, 1906, 1904, + 1891, 1900, 1889, 1902, 1892, 1904, 1907, 1895, 1908, 1910, + 1909, 1911, 1905, 1912, 1912, 1899, 1903, 1909, 1910, 1913, + 1914, 1917, 1916, 1908, 1918, 1920, 1917, 1907, 1916, 1919, + 1918, 1924, 1920, 1921, 1929, 1925, 1914, 1911, 1922, 1921, - 1930, 1932, 1935, 1929, 1933, 1922, 1930, 1923, 1933, 1926, - 1936, 1939, 1937, 1938, 1938, 1942, 1932, 1937, 1940, 1931, - 1927, 1943, 1935, 1945, 1933, 1943, 1944, 1944, 1946, 1945, - 1939, 1951, 1936, 1940, 1942, 1947, 1947, 1946, 1948, 1949, - 1950, 1950, 1948, 1952, 1953, 1955, 1954, 1956, 1957, 1960, - 1949, 1954, 1951, 1958, 1959, 1949, 1961, 1952, 1962, 1958, - 1969, 1961, 1965, 1953, 1960, 1955, 1965, 1956, 1957, 1963, - 1963, 1962, 1959, 1964, 1964, 1967, 1968, 1970, 1970, 1974, - 1969, 1972, 1972, 1973, 1967, 1974, 1977, 1968, 1973, 1973, - 1976, 1979, 1968, 1978, 1980, 1982, 1976, 1983, 1978, 1984, + 1922, 1925, 1926, 1926, 1928, 1913, 1927, 1930, 1931, 1919, + 1924, 1927, 1933, 1928, 1929, 1934, 1935, 1935, 1936, 1937, + 1931, 1939, 1938, 1940, 1936, 1937, 1930, 1940, 1942, 1943, + 1933, 1946, 1944, 1945, 1945, 1947, 1939, 1944, 1948, 1950, + 1951, 1934, 1938, 1940, 1951, 1952, 1952, 0, 1942, 1959, + 1953, 1943, 1954, 1948, 1947, 1946, 1953, 1957, 1950, 1955, + 1955, 1954, 1956, 1958, 1958, 1960, 1956, 1961, 1957, 1962, + 1959, 1963, 1964, 1957, 1962, 1965, 1966, 1970, 1967, 1960, + 1969, 0, 1966, 1968, 1977, 1969, 1961, 1971, 1971, 1976, + 1970, 1963, 1964, 1972, 1972, 1965, 1967, 1973, 1968, 1975, - 1980, 1983, 1986, 1979, 1985, 1985, 1988, 1982, 1987, 1989, - 1991, 1984, 1977, 1992, 1987, 1989, 1990, 1990, 1993, 1994, - 1996, 1997, 2030, 1993, 2004, 1998, 2030, 1986, 1988, 1991, - 1998, 1994, 1996, 1992, 2000, 2001, 2001, 2000, 2002, 2002, - 1997, 2003, 2003, 2005, 2004, 2006, 2009, 2007, 2008, 2005, - 2014, 2006, 2007, 2011, 2008, 2009, 2013, 2017, 2011, 2013, - 2015, 2015, 2014, 2018, 2021, 2019, 2020, 2020, 2026, 2017, - 2019, 2022, 2023, 2021, 2027, 2018, 2022, 2023, 2024, 2025, - 2025, 2024, 2028, 2027, 2029, 2031, 2032, 2033, 2026, 2034, - 2031, 2035, 2032, 2036, 2038, 2038, 2039, 2041, 2034, 2040, + 1976, 1973, 1978, 1978, 1977, 1976, 1980, 1980, 1975, 1981, + 1982, 1984, 1985, 1986, 1981, 1981, 1982, 1984, 1986, 1987, + 1988, 1990, 1992, 1991, 1993, 1993, 1988, 1991, 1994, 1995, + 1996, 1987, 1999, 1990, 1992, 1995, 1997, 2000, 1985, 1998, + 1998, 2001, 1997, 2002, 2004, 2005, 2001, 2008, 2012, 2006, + 2008, 1999, 1996, 1994, 2006, 2002, 2004, 2000, 2009, 2009, + 2010, 2010, 2011, 2011, 2005, 2013, 2014, 2016, 2012, 2015, + 2017, 2013, 2014, 2016, 2015, 2019, 2022, 2025, 2021, 2017, + 2019, 2021, 2023, 2023, 2026, 2027, 2028, 2028, 2022, 2025, + 2027, 2029, 2030, 2031, 2033, 2033, 2026, 2030, 2031, 2032, - 2028, 2042, 2042, 2029, 2043, 2033, 2038, 2036, 2040, 2035, - 2044, 2045, 2047, 2043, 2039, 2046, 2057, 2041, 2050, 2050, - 2046, 2052, 2044, 2053, 2052, 2047, 2054, 2055, 2059, 2060, - 2058, 2057, 2045, 2063, 2059, 2061, 2061, 2065, 2062, 2053, - 2062, 2070, 2054, 2055, 2058, 2065, 2060, 2064, 2064, 2067, - 2067, 2063, 2068, 2068, 2071, 2072, 2073, 2075, 2074, 2078, - 2071, 2072, 2076, 2079, 2070, 2074, 2077, 2077, 2078, 2080, - 2073, 2081, 2082, 2083, 2084, 2085, 2088, 2090, 2089, 2075, - 2086, 2080, 2076, 2081, 2079, 2083, 2086, 2082, 2092, 2090, - 2085, 2091, 2091, 2093, 2094, 2096, 2088, 2094, 2095, 2086, + 2029, 2034, 2032, 2035, 2036, 2037, 2038, 2041, 2039, 2040, + 2038, 2042, 2035, 2039, 2043, 2040, 2044, 2046, 2046, 2047, + 2042, 2034, 2036, 2049, 2037, 2041, 2048, 2050, 2050, 2046, + 2044, 2051, 2043, 2052, 2053, 2048, 2054, 2047, 2055, 2060, + 2051, 2054, 2060, 2049, 2061, 2052, 2058, 2058, 2062, 2063, + 2067, 2055, 2065, 2068, 2066, 2053, 2067, 2069, 2069, 2070, + 2061, 2070, 2071, 2078, 2062, 2063, 2073, 2065, 2066, 2081, + 2068, 2072, 2072, 2079, 2073, 2075, 2075, 2076, 2076, 2079, + 2071, 2080, 2082, 2081, 2083, 2084, 2078, 2080, 2086, 2082, + 2085, 2085, 2087, 2092, 2090, 2088, 2089, 2086, 2091, 2093, - 2084, 2089, 2098, 2095, 2100, 2102, 2092, 2098, 2099, 2101, - 2099, 2104, 2102, 2093, 2101, 2096, 2106, 2107, 2108, 2109, - 2104, 2109, 2100, 2110, 2114, 2111, 2107, 2113, 2116, 2113, - 2108, 2111, 2115, 2115, 2106, 2117, 2119, 2118, 2114, 2118, - 2117, 2119, 2110, 2120, 2121, 2122, 2123, 2124, 2120, 2127, - 2125, 2126, 2128, 2124, 2116, 2125, 2131, 2128, 2128, 2129, - 2132, 2127, 2121, 2122, 2126, 2135, 2123, 2129, 2133, 2133, - 2134, 2134, 2136, 2137, 2132, 2131, 2138, 2140, 2141, 2137, - 2135, 2138, 2139, 47, 2139, 2143, 2141, 2142, 2142, 2144, - 2144, 2146, 2136, 2148, 2141, 2140, 2147, 2143, 2145, 2145, + 2096, 2097, 2107, 2098, 2107, 2084, 2083, 2088, 2089, 2090, + 2091, 2094, 2101, 2087, 2093, 2098, 2100, 2094, 2104, 2092, + 2096, 2099, 2099, 2102, 2097, 2108, 2102, 2114, 2103, 0, + 2094, 2106, 2101, 2103, 2100, 2109, 2106, 2110, 2104, 2112, + 2109, 2115, 2116, 2108, 2110, 2114, 2118, 2117, 2112, 2117, + 2115, 2119, 2122, 2121, 2116, 2121, 2124, 2119, 2123, 2123, + 2129, 2126, 2125, 2126, 2127, 2118, 2122, 2125, 2128, 2127, + 2130, 2131, 2133, 2128, 2132, 2135, 2134, 2133, 2129, 2136, + 2132, 2139, 2124, 2140, 2136, 2136, 2137, 2135, 2130, 2134, + 2143, 2131, 2141, 2141, 2137, 2142, 2142, 2140, 2144, 2146, - 2146, 2147, 2151, 2150, 2151, 2152, 2154, 2155, 2153, 2156, - 2158, 2148, 2150, 2153, 2153, 2150, 2155, 2162, 2154, 2159, - 2160, 2156, 2158, 2163, 2159, 2160, 2152, 2164, 2165, 2165, - 2162, 2166, 2167, 2168, 2170, 2173, 2164, 2169, 2171, 2172, - 2173, 2177, 2178, 2163, 2175, 2176, 18, 2178, 2186, 2166, - 2167, 2168, 2171, 2169, 2172, 2179, 2175, 2176, 2180, 2170, - 2179, 2177, 2183, 2185, 2187, 2188, 2189, 2180, 2183, 2185, - 2194, 2186, 2202, 2190, 2191, 2191, 2192, 2193, 2193, 2187, - 2195, 2183, 2190, 2188, 2197, 2192, 2196, 2198, 2194, 2197, - 2196, 2189, 2200, 2206, 2202, 2201, 2206, 2203, 2204, 2195, + 2139, 2145, 2148, 2149, 2146, 2143, 2147, 2145, 2147, 2150, + 2150, 2149, 2151, 2152, 2152, 2153, 2153, 2154, 2144, 2149, + 2148, 2156, 2155, 2159, 2151, 2158, 2154, 2155, 2160, 2158, + 2160, 2161, 2159, 2163, 2164, 2159, 2162, 2165, 2167, 2156, + 2172, 2162, 2162, 2164, 2171, 2163, 2168, 2173, 2169, 2165, + 2167, 2168, 2161, 2169, 2174, 2174, 2173, 2171, 2175, 2176, + 2172, 2177, 2178, 2179, 2182, 2186, 2180, 2181, 2187, 2182, + 2188, 2184, 2185, 2187, 2195, 2188, 2175, 2176, 2178, 2177, + 2180, 2189, 2181, 2184, 2185, 2186, 2192, 2194, 2179, 2196, + 2189, 2197, 2192, 2194, 2198, 2200, 2200, 2195, 2199, 2201, - 2198, 2201, 2203, 2203, 2204, 2207, 2205, 2208, 2211, 2211, - 2213, 2200, 2205, 2207, 2212, 2212, 2214, 2214, 2216, 2213, - 2215, 2215, 2218, 2217, 2220, 2220, 2219, 2208, 2218, 2212, - 2216, 2219, 2221, 2221, 2222, 2226, 2223, 2228, 2230, 2222, - 2212, 2217, 2223, 2225, 2227, 2231, 2232, 2225, 2227, 2233, - 2231, 2234, 2235, 2237, 2238, 2226, 2234, 2228, 2236, 2238, - 2239, 2240, 2240, 2230, 2233, 2242, 2244, 2241, 2245, 2232, - 2235, 2241, 2243, 2237, 2236, 2246, 2247, 2243, 2248, 2250, - 2242, 2249, 2239, 2248, 2251, 2251, 2245, 2246, 2253, 2254, - 2255, 2256, 2244, 2257, 2249, 2247, 2253, 2250, 2258, 2259, + 2202, 2202, 2203, 2204, 2196, 2192, 2205, 2199, 2201, 2197, + 2205, 2206, 2207, 2209, 2211, 2210, 2206, 2217, 2212, 2198, + 2203, 2210, 2204, 2212, 2212, 2207, 2215, 2213, 2214, 2215, + 2216, 2225, 2209, 2213, 2214, 2222, 2211, 2217, 2216, 2220, + 2220, 2221, 2221, 2225, 2222, 2223, 2223, 2224, 2224, 2227, + 2226, 2235, 2228, 2229, 2229, 2227, 2221, 2228, 2230, 2230, + 2231, 2237, 2234, 2232, 2239, 2231, 2234, 2221, 2226, 2232, + 2236, 2235, 2240, 2241, 2236, 2242, 2244, 2240, 2243, 2245, + 2246, 2237, 2247, 2243, 2248, 2249, 2249, 2247, 2250, 2239, + 2242, 2253, 2250, 2251, 2244, 2245, 2241, 2252, 2254, 2255, - 2260, 2261, 2262, 2268, 2265, 2263, 2269, 2267, 2254, 2255, - 2256, 2263, 2269, 2261, 2271, 17, 2257, 2268, 2259, 2265, - 2267, 2260, 2258, 2262, 2270, 2273, 2270, 2272, 2272, 2274, - 2273, 2275, 2274, 2276, 2271, 2277, 2278, 2278, 2279, 2279, - 2280, 2282, 2280, 2285, 2275, 2281, 2281, 2276, 2277, 2283, - 2284, 2284, 2285, 2286, 2286, 2285, 2282, 2287, 2287, 2288, - 2290, 2291, 2283, 2292, 2288, 2290, 2293, 2294, 2294, 2295, - 2295, 2296, 2297, 2297, 2298, 2299, 2299, 2301, 2293, 2300, - 2305, 2291, 2301, 2292, 2302, 2302, 2303, 2303, 2304, 2305, - 2296, 2306, 2298, 2307, 2300, 2308, 2310, 2311, 2311, 2312, + 2246, 2256, 2252, 2259, 2257, 2258, 2248, 2262, 2251, 2257, + 2263, 2255, 2260, 2260, 2264, 2262, 2254, 2253, 2258, 2265, + 2256, 2259, 2266, 2267, 2268, 2269, 2272, 2270, 2271, 2263, + 2278, 2276, 2272, 2264, 2277, 2274, 2278, 2280, 2265, 2270, + 2279, 2284, 2279, 2268, 2276, 2266, 2269, 2267, 2277, 2271, + 2274, 2281, 2281, 2282, 2284, 2285, 2283, 2280, 2282, 2283, + 2286, 2287, 2287, 2288, 2288, 2289, 2291, 2289, 2294, 2285, + 2290, 2290, 2292, 2286, 2293, 2293, 2300, 2294, 2295, 2295, + 2294, 2291, 2296, 2296, 2297, 2292, 2299, 2301, 2302, 2297, + 2305, 2299, 2303, 2303, 2304, 2304, 2300, 2306, 2306, 2307, - 0, 2310, 2304, 2313, 2313, 2314, 2315, 2307, 2306, 2316, - 2317, 2315, 2320, 2317, 2308, 2316, 2318, 2318, 2312, 2319, - 2319, 2321, 2322, 2314, 2322, 2324, 2325, 2326, 2326, 2328, - 2329, 2320, 2318, 2330, 2331, 2333, 2321, 2335, 2331, 2334, - 2324, 2332, 2332, 2336, 2334, 2325, 2338, 2338, 2330, 2328, - 2339, 2341, 2335, 2329, 2333, 2340, 2342, 2343, 2336, 2344, - 2345, 2345, 2340, 2346, 2347, 2341, 2347, 2350, 2348, 2351, - 2339, 2348, 2346, 2350, 2342, 2343, 2354, 2352, 2353, 2355, - 2358, 2351, 2352, 2353, 2356, 2344, 2348, 2363, 2348, 2357, - 2360, 2361, 2355, 2362, 2357, 2360, 2361, 2364, 2362, 2366, + 2302, 2308, 2308, 2309, 2315, 2310, 2313, 2301, 2316, 2305, + 2310, 2311, 2311, 2312, 2312, 2314, 2317, 2307, 2309, 2321, + 2313, 2315, 2316, 2319, 2314, 2320, 2320, 2323, 2319, 2322, + 2322, 2324, 2329, 2325, 2326, 2317, 2324, 2326, 2321, 2325, + 2327, 2327, 2328, 2328, 2330, 2323, 2331, 2333, 2331, 2334, + 2337, 2329, 2335, 2335, 2338, 2342, 2327, 2339, 2343, 2330, + 2340, 2344, 2333, 2343, 2340, 2341, 2341, 2345, 2334, 2348, + 2337, 2350, 2339, 2349, 2342, 2351, 2344, 2338, 2347, 2347, + 2349, 2352, 2345, 2353, 2354, 2350, 2355, 2355, 2356, 2348, + 2357, 2358, 2357, 2351, 2358, 2360, 2361, 2356, 2353, 2352, - 2367, 2354, 2363, 2364, 2365, 2356, 2358, 2368, 2371, 2369, - 2365, 2370, 2372, 2368, 2369, 2367, 2370, 2374, 2373, 2375, - 2366, 2373, 2376, 2377, 2378, 2372, 2374, 2383, 2375, 2379, - 2380, 2376, 2377, 2371, 2385, 2379, 2380, 2381, 2378, 2386, - 2388, 2381, 2387, 2387, 2389, 2389, 2388, 2383, 2386, 2390, - 2391, 2391, 2392, 2389, 2385, 2393, 2395, 2392, 2390, 2398, - 2396, 2397, 2397, 2402, 2399, 2403, 2401, 2406, 2408, 2404, - 2406, 2409, 2395, 2399, 2398, 2393, 2396, 2393, 2401, 2402, - 2403, 2404, 2407, 2409, 2410, 2410, 2420, 2407, 2408, 2411, - 2411, 2413, 2413, 2414, 2415, 2416, 2414, 2417, 2418, 2415, + 2362, 2360, 2363, 2364, 2365, 2362, 2366, 2363, 2361, 2358, + 2354, 2358, 2368, 2367, 2370, 2371, 2372, 2365, 2367, 2370, + 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2366, 2364, 2374, + 2375, 2379, 2381, 2378, 2382, 2380, 2379, 2373, 2368, 2378, + 2380, 2377, 2383, 2384, 2385, 2383, 2376, 2382, 2388, 2386, + 2387, 2393, 2384, 2385, 2389, 2390, 2395, 2381, 2386, 2387, + 2389, 2390, 2388, 2391, 2396, 2397, 2397, 2391, 2398, 2399, + 2399, 2393, 2400, 2396, 2398, 2403, 2395, 2402, 2399, 2401, + 2401, 2400, 2402, 2405, 2406, 2407, 2407, 2408, 2412, 2409, + 2413, 2411, 0, 2416, 2414, 2403, 2416, 2403, 2409, 2405, - 2420, 2416, 2422, 2417, 2419, 2419, 2423, 2418, 2421, 2421, - 2424, 2425, 2425, 2426, 2422, 2431, 2427, 2428, 2431, 2426, - 2423, 2430, 2428, 2432, 2432, 2430, 2433, 2434, 2435, 2424, - 2427, 2433, 2436, 2439, 2437, 2442, 2434, 2435, 2437, 2438, - 2438, 2443, 2441, 2444, 2445, 2446, 2439, 2441, 2447, 2446, - 2453, 2448, 2436, 2449, 2450, 2442, 2448, 2452, 2445, 2449, - 2450, 2443, 2454, 2444, 2451, 2451, 2455, 2456, 2447, 2453, - 2459, 2455, 2457, 2457, 2460, 2452, 2463, 2466, 2461, 2462, - 2468, 2454, 2459, 2461, 2463, 2462, 2466, 2464, 2456, 2464, - 2460, 2469, 2469, 2470, 2468, 2471, 2470, 2472, 2472, 2475, + 2406, 2418, 2408, 2411, 2412, 2413, 2414, 2417, 2419, 2420, + 2420, 2426, 2417, 2421, 2421, 2423, 2423, 2426, 2425, 2424, + 2419, 2418, 2424, 2425, 2427, 2428, 2429, 2429, 2430, 2432, + 2427, 2431, 2431, 2433, 2428, 2434, 2435, 2435, 2436, 2437, + 2438, 2432, 2430, 2446, 2436, 2438, 2440, 2433, 2441, 2444, + 2440, 2441, 2443, 2437, 2434, 2442, 2442, 2443, 2444, 2445, + 2447, 2448, 2448, 2446, 2447, 2449, 2451, 2452, 2445, 2453, + 2454, 2451, 2455, 2456, 2457, 2458, 2459, 2456, 2449, 2460, + 2458, 2462, 2459, 2461, 2461, 2460, 2455, 2452, 2463, 2453, + 2454, 2464, 2465, 2466, 2457, 2467, 2467, 2465, 2471, 2462, - 2476, 2477, 2479, 2475, 2478, 2478, 2476, 2482, 2482, 2484, - 2486, 2479, 2487, 2477, 2490, 2491, 2492, 2493, 2494, 2490, - 2500, 2471, 2493, 2494, 2486, 2495, 2495, 2484, 2487, 2497, - 2497, 2502, 2499, 2501, 2501, 2503, 2506, 2492, 2499, 2504, - 2500, 2491, 2507, 2512, 2504, 2507, 2508, 2502, 2509, 2510, - 2510, 2514, 2512, 2513, 2519, 2506, 2515, 2503, 2508, 2513, - 2509, 2517, 2517, 2518, 2520, 2524, 2518, 2522, 2522, 2514, - 2524, 2515, 2525, 2519, 2523, 2523, 2526, 2528, 2527, 2528, - 2529, 2530, 2520, 2527, 2531, 2526, 2532, 2533, 2534, 0, - 2525, 2532, 2535, 2541, 2529, 2530, 2531, 2535, 2536, 2536, + 2469, 2470, 2472, 2471, 2474, 2473, 2474, 2463, 2472, 2476, + 2464, 2478, 2469, 2473, 2466, 2479, 2479, 2470, 2476, 2480, + 2481, 2486, 2480, 2482, 2482, 2478, 2485, 2486, 2487, 2489, + 2485, 2488, 2488, 2492, 2492, 2494, 2496, 2500, 2489, 2497, + 2487, 2501, 2500, 2502, 2503, 2509, 2481, 2504, 2510, 2503, + 2496, 2509, 2504, 2494, 2512, 2497, 2505, 2505, 2507, 2507, + 2511, 2511, 2513, 2516, 2502, 2518, 2514, 2501, 2510, 2517, + 2512, 2514, 2517, 2519, 2520, 2520, 2524, 2518, 2522, 2529, + 2523, 2525, 2516, 2530, 2513, 2519, 2523, 2522, 2527, 2527, + 2528, 2532, 2532, 2528, 2524, 2535, 2525, 2534, 2529, 2533, - 2537, 2537, 2538, 2538, 2539, 2539, 2540, 2533, 2534, 2542, - 2546, 2541, 2543, 2543, 2542, 2544, 2544, 2547, 2540, 2545, - 2545, 2548, 2546, 2549, 2550, 2551, 2552, 2552, 2553, 2554, - 2554, 2555, 2555, 2548, 2560, 2556, 2557, 2547, 2559, 2561, - 2562, 2551, 2558, 2549, 2561, 2550, 2556, 2553, 2557, 2558, - 2559, 2563, 2564, 2564, 2560, 2565, 2566, 2566, 2567, 2568, - 2562, 2569, 2570, 2571, 2565, 2572, 2573, 2576, 2573, 2574, - 2577, 2563, 2575, 2575, 2569, 2578, 2576, 2571, 2580, 2568, - 2581, 2574, 2582, 2584, 2567, 2577, 2570, 2572, 2583, 2585, - 2578, 2583, 0, 2586, 2585, 2594, 2580, 2584, 2586, 2587, + 2533, 2530, 2534, 2536, 2537, 2538, 2539, 2540, 2539, 2541, + 2538, 2543, 2536, 2535, 2542, 2544, 2543, 2537, 2545, 2546, + 0, 2540, 2552, 2541, 2546, 2551, 2542, 2547, 2547, 2548, + 2548, 2549, 2549, 2550, 2550, 2544, 2553, 2551, 2545, 2557, + 2552, 2553, 2554, 2554, 2555, 2555, 2556, 2556, 2558, 2559, + 2560, 2557, 2561, 2562, 2563, 2563, 2564, 2565, 2565, 2566, + 2566, 2559, 2571, 2567, 2568, 2569, 2570, 2573, 2558, 2562, + 2560, 2574, 2569, 2561, 2567, 2564, 2568, 2576, 2570, 2572, + 2575, 2575, 2571, 2578, 2572, 2579, 2576, 2573, 2577, 2577, + 2580, 2574, 2581, 2582, 2584, 2583, 2584, 2587, 2585, 2586, - 2587, 2595, 2581, 2588, 2588, 2582, 2589, 2589, 2591, 2591, - 2593, 2593, 2595, 2594, 2596, 2597, 2599, 2600, 2601, 2602, - 2603, 2604, 2605, 2606, 2605, 2613, 2607, 2608, 2612, 2603, - 2597, 2609, 2609, 2596, 0, 2600, 2599, 2611, 2611, 2602, - 2601, 2604, 2612, 2606, 2607, 2608, 2614, 2613, 2615, 2615, - 2617, 2618, 2618, 2619, 2620, 2614, 2621, 2622, 2623, 2617, - 2624, 2625, 2628, 2627, 2622, 2626, 2629, 2629, 2631, 2628, - 0, 2619, 2620, 2623, 2621, 2630, 2630, 2632, 2624, 2625, - 2633, 2626, 2627, 2635, 2635, 2637, 2633, 2638, 2631, 2636, - 2636, 2637, 2639, 2640, 2641, 2632, 2642, 2643, 2644, 2645, + 2586, 2593, 2591, 2580, 2588, 2579, 2587, 2582, 2589, 2578, + 2585, 2592, 2594, 2595, 2683, 2594, 2581, 2583, 2683, 2588, + 2591, 2596, 2605, 2589, 2593, 2597, 2596, 2595, 2598, 2598, + 2597, 2599, 2599, 2592, 2600, 2600, 2602, 2602, 2604, 2604, + 2605, 2606, 2607, 2608, 2610, 2611, 2612, 2613, 2614, 2615, + 2617, 2616, 2606, 2616, 2618, 2619, 2624, 2614, 2608, 2620, + 2620, 2607, 2623, 2611, 2610, 2622, 2622, 2613, 2612, 2615, + 2617, 2625, 2618, 2619, 2626, 2626, 2623, 2628, 2624, 2630, + 2625, 2629, 2629, 2631, 2632, 2633, 2628, 2635, 2634, 2636, + 2637, 2638, 2633, 2639, 2640, 2640, 2642, 2630, 2641, 2641, - 2646, 2642, 2646, 2651, 2645, 2638, 2656, 2639, 2641, 2647, - 2647, 2648, 2640, 2648, 2649, 2649, 2653, 2643, 2644, 2654, - 2655, 2659, 2651, 2657, 2658, 2653, 2656, 2660, 2657, 2658, - 2663, 2664, 2655, 2665, 2666, 2666, 2665, 2667, 2654, 2668, - 2670, 2659, 2669, 2669, 2671, 2674, 2660, 2676, 2676, 2664, - 2663, 2670, 2667, 2677, 2672, 2679, 2680, 2668, 2672, 2671, - 2674, 2675, 2681, 2682, 2682, 2675, 2677, 2684, 2685, 2686, - 2679, 2687, 2687, 2686, 2688, 2691, 2680, 2685, 2690, 2684, - 2689, 2689, 2681, 2690, 2691, 2692, 2693, 2694, 2695, 2695, - 2700, 2700, 2701, 2688, 2702, 2702, 2703, 2704, 2693, 2705, + 2639, 2631, 2632, 2634, 2643, 2635, 2637, 2636, 2644, 2648, + 2638, 2646, 2646, 2649, 2644, 2648, 2642, 2647, 2647, 2650, + 2651, 2652, 2643, 2653, 2654, 2655, 0, 2656, 2653, 2658, + 2658, 2649, 2656, 2662, 2650, 2652, 2657, 2665, 2657, 2651, + 2659, 2664, 2659, 2666, 2654, 2655, 2660, 2660, 2667, 2668, + 2664, 2670, 2662, 2669, 2668, 2666, 2665, 2671, 2669, 2674, + 2675, 2676, 2677, 2677, 2676, 2678, 2679, 2682, 2667, 2680, + 2680, 2670, 2681, 2685, 2687, 2687, 2671, 2686, 2675, 2674, + 2678, 2686, 2682, 2681, 2679, 2688, 2690, 2691, 2685, 2692, + 2693, 2693, 2695, 2696, 2700, 2697, 2698, 2698, 2688, 2697, - 2710, 2692, 2706, 2711, 2707, 2750, 2708, 2694, 2750, 2703, - 2704, 2706, 2705, 2707, 2701, 2708, 2709, 2709, 2711, 2716, - 2710, 2713, 2713, 2717, 2716, 2718, 2719, 2720, 2717, 2721, - 2723, 2719, 2722, 2733, 2725, 2720, 2729, 2727, 2723, 2718, - 2728, 2722, 2727, 2730, 2730, 2728, 2731, 2731, 2721, 2725, - 2732, 2729, 2733, 2734, 2734, 2732, 2735, 2736, 2737, 2738, - 2739, 0, 2736, 2735, 2740, 2742, 2739, 2741, 2741, 2740, - 2743, 2744, 2744, 2745, 2745, 2743, 2737, 2738, 2748, 2751, - 2742, 2749, 2749, 2752, 2751, 2751, 2754, 2753, 2752, 2755, - 2756, 2748, 2753, 2757, 2756, 2755, 2758, 2759, 2757, 2760, + 2704, 2690, 2696, 2702, 2695, 2699, 2699, 2691, 2702, 2692, + 2701, 2701, 2703, 2700, 2705, 2706, 2704, 2707, 2707, 2712, + 2712, 2703, 2713, 2714, 2714, 2715, 2705, 2716, 2717, 2722, + 2718, 2721, 2721, 2719, 2720, 2706, 2723, 2733, 2715, 2718, + 2716, 2717, 2719, 2720, 2713, 2725, 2725, 2728, 2729, 2722, + 2730, 2723, 2728, 2729, 2731, 2732, 2733, 2734, 2737, 2731, + 2735, 2741, 2739, 2732, 2730, 2740, 2734, 2739, 2735, 2745, + 2740, 2742, 2742, 2737, 2743, 2743, 2741, 2744, 2746, 2746, + 2747, 2748, 2744, 2749, 2750, 2751, 2748, 2747, 2745, 2752, + 2754, 2751, 2753, 2753, 2752, 2755, 2756, 2756, 2757, 2757, - 2754, 2761, 2762, 2763, 2765, 2758, 2764, 2760, 2762, 2763, - 2767, 2764, 2759, 2768, 2771, 2776, 2765, 2767, 2768, 2773, - 2769, 2777, 2761, 2769, 2773, 2774, 2771, 2775, 2778, 2779, - 2774, 2781, 2775, 2776, 2777, 2780, 2780, 2778, 2779, 2782, - 2781, 2785, 2786, 2787, 2782, 2790, 2791, 2794, 2786, 2787, - 2792, 2793, 2793, 2795, 2794, 2797, 2796, 2798, 2798, 2785, - 2799, 2801, 2803, 2804, 2790, 2796, 2791, 2804, 2806, 2792, - 2797, 2807, 2795, 2805, 2805, 2808, 2801, 2807, 2809, 2799, - 2810, 2808, 2803, 2811, 2811, 2813, 2810, 2812, 2816, 2814, - 2817, 2822, 2819, 2806, 2814, 2812, 2809, 2816, 2819, 2820, + 2755, 2749, 2750, 2760, 2763, 2754, 2761, 2761, 2762, 2763, + 2763, 2762, 2764, 2765, 2766, 2767, 2760, 2764, 2765, 2768, + 2769, 2767, 2770, 2768, 2771, 2769, 2772, 2773, 2766, 2774, + 2775, 2770, 2776, 2777, 2772, 2774, 2775, 2776, 2780, 2771, + 2779, 2781, 2783, 2780, 2781, 2777, 2785, 2779, 2773, 2788, + 2786, 2785, 2787, 2789, 2783, 2786, 2790, 2787, 2794, 2791, + 2792, 2792, 2793, 2794, 2797, 2790, 2789, 2788, 2791, 2798, + 2799, 2793, 2802, 2803, 2806, 2798, 2799, 2804, 2805, 2805, + 2807, 2806, 2797, 2808, 2811, 2809, 2810, 2810, 2815, 2813, + 2816, 2802, 2808, 2803, 2816, 2818, 2804, 2817, 2817, 2807, - 2821, 2823, 2820, 2817, 2821, 2822, 2825, 2825, 2826, 2836, - 2813, 2827, 2827, 2828, 2828, 2831, 2823, 2830, 2830, 2831, - 2832, 2834, 2834, 2837, 2838, 2832, 2826, 2839, 2837, 2836, - 2840, 2842, 2839, 2839, 2843, 2843, 2838, 2845, 2845, 2846, - 2846, 2849, 2840, 2847, 2847, 2848, 2850, 2853, 2848, 2852, - 2852, 2842, 2855, 2859, 2849, 2856, 2856, 2857, 2857, 2850, - 2858, 2858, 2860, 2860, 2861, 2853, 2862, 2863, 2859, 2864, - 2865, 2865, 2855, 2869, 2866, 2864, 2873, 2861, 2866, 2869, - 2870, 2863, 2872, 2874, 2862, 2870, 2875, 2872, 2872, 2876, - 2877, 2878, 2888, 2879, 2942, 2876, 2877, 2879, 2942, 2873, + 2809, 2819, 2824, 2811, 2813, 2820, 2821, 2819, 2815, 2822, + 2824, 2820, 2823, 2823, 2825, 2822, 2826, 2828, 2829, 2831, + 2818, 2826, 2834, 2835, 2821, 2831, 2828, 2832, 2833, 2838, + 2832, 2829, 2833, 2837, 2837, 2849, 2834, 0, 2835, 2825, + 2839, 2839, 2840, 2840, 2842, 2842, 2843, 2838, 2844, 2845, + 2843, 2847, 2847, 2844, 2850, 2849, 2851, 2852, 2845, 2850, + 2853, 2855, 2852, 2852, 2856, 2856, 2858, 2858, 2851, 2859, + 2859, 2862, 2853, 2860, 2860, 2861, 2863, 2866, 2861, 2865, + 2865, 2855, 2868, 2872, 2862, 2869, 2869, 2870, 2870, 2863, + 2871, 2871, 2873, 2873, 2874, 2866, 2875, 2876, 2872, 2877, - 2880, 2880, 2883, 2874, 2885, 2886, 2875, 2883, 2886, 2891, - 2889, 2893, 2885, 2889, 2890, 2890, 2878, 2888, 2892, 2894, - 2895, 2896, 2896, 2892, 2897, 2898, 2891, 2891, 2898, 2893, - 2899, 2900, 2901, 2904, 2895, 2911, 2898, 2902, 2897, 2894, - 2901, 2903, 2902, 2902, 2899, 2913, 2903, 2903, 2905, 2905, - 2900, 2911, 2904, 2906, 2906, 2907, 2907, 2908, 2908, 2909, - 2909, 2910, 2910, 2912, 2914, 2913, 2915, 2916, 2912, 2917, - 2918, 2920, 2916, 2919, 2921, 2918, 2923, 2923, 2924, 2924, - 2915, 2925, 2919, 2926, 2925, 2928, 2928, 2939, 2917, 2929, - 2914, 2920, 2930, 2930, 2921, 2931, 2929, 2933, 2933, 2934, + 2878, 2878, 2868, 2882, 2879, 2877, 2886, 2874, 2879, 2882, + 2883, 2876, 2885, 2887, 2875, 2883, 2888, 2885, 2885, 2889, + 2890, 2891, 2901, 2892, 2955, 2889, 2890, 2892, 2955, 2886, + 2893, 2893, 2896, 2887, 2898, 2899, 2888, 2896, 2899, 2904, + 2902, 2906, 2898, 2902, 2903, 2903, 2891, 2901, 2905, 2907, + 2908, 2909, 2909, 2905, 2910, 2911, 2904, 2904, 2911, 2906, + 2912, 2913, 2914, 2917, 2908, 2924, 2911, 2915, 2910, 2907, + 2914, 2916, 2915, 2915, 2912, 2926, 2916, 2916, 2918, 2918, + 2913, 2924, 2917, 2919, 2919, 2920, 2920, 2921, 2921, 2922, + 2922, 2923, 2923, 2925, 2927, 2926, 2928, 2929, 2925, 2930, - 2931, 2926, 2935, 2936, 2937, 2939, 2940, 2940, 2934, 2941, - 2941, 2935, 2936, 2937, 2943, 2944, 2945, 2946, 2948, 2947, - 2949, 2959, 2950, 2943, 2947, 2947, 2950, 2945, 2954, 2949, - 2958, 2948, 2946, 2954, 2944, 2955, 2955, 2957, 2957, 2960, - 2962, 2962, 2963, 2964, 2958, 2968, 2959, 2969, 2972, 2970, - 2973, 2963, 2969, 2975, 2977, 2964, 2973, 2960, 2970, 2979, - 2982, 2980, 2981, 2981, 2979, 2975, 2980, 2984, 2972, 2982, - 2968, 2985, 2984, 2986, 2992, 2977, 2987, 2987, 2989, 2989, - 2987, 2990, 2990, 2992, 2985, 2991, 2991, 2986, 2993, 2995, - 2994, 2997, 3001, 2998, 2995, 2999, 3003, 2997, 2998, 3002, + 2931, 2933, 2929, 2932, 2934, 2931, 2936, 2936, 2937, 2937, + 2928, 2938, 2932, 2939, 2938, 2941, 2941, 2952, 2930, 2942, + 2927, 2933, 2943, 2943, 2934, 2944, 2942, 2946, 2946, 2947, + 2944, 2939, 2948, 2949, 2950, 2952, 2953, 2953, 2947, 2954, + 2954, 2948, 2949, 2950, 2956, 2957, 2958, 2959, 2961, 2960, + 2962, 2973, 2963, 2956, 2960, 2960, 2963, 2958, 2967, 2962, + 2969, 2961, 2959, 2967, 2957, 2968, 2968, 2971, 2971, 2972, + 2974, 2976, 2976, 2977, 2969, 2978, 2973, 2982, 2986, 2983, + 2984, 2989, 2977, 2972, 2983, 2987, 2991, 2978, 2974, 2984, + 2993, 2987, 2994, 2989, 2996, 2993, 2998, 2994, 2986, 2995, - 2999, 3000, 3000, 3005, 3007, 3008, 3008, 3004, 2993, 2994, - 3001, 3002, 3004, 3006, 3010, 3011, 3014, 3003, 3010, 3006, - 3011, 3005, 3012, 3013, 3013, 3015, 3016, 3012, 3018, 3007, - 3020, 3020, 3022, 3023, 3024, 3014, 3028, 3027, 3025, 3030, - 3015, 3016, 3025, 3026, 3030, 3022, 3023, 3024, 3018, 3029, - 3031, 3033, 3026, 3027, 3034, 3028, 3035, 3029, 3032, 3032, - 3033, 3036, 3036, 3043, 3037, 3040, 3040, 3041, 3041, 3047, - 3031, 3048, 3034, 3045, 3045, 3049, 3050, 3054, 3054, 3055, - 3049, 3051, 3035, 3037, 3043, 3047, 3051, 3048, 3056, 3057, - 3058, 3059, 3050, 3061, 3061, 3057, 3063, 3056, 3062, 3055, + 2995, 2998, 2982, 2996, 2999, 3000, 3007, 2991, 3001, 3001, + 3003, 3003, 3001, 3004, 3004, 3005, 3005, 2999, 3006, 3000, + 3008, 3014, 3014, 3009, 3011, 3015, 3007, 3006, 3009, 3012, + 3011, 3013, 3016, 3017, 3012, 3018, 3013, 3019, 3021, 3008, + 3018, 3020, 3028, 3015, 3016, 3022, 3022, 3020, 3024, 3027, + 3027, 3025, 3024, 3026, 3017, 3019, 3025, 3029, 3026, 3030, + 3032, 3028, 3036, 3021, 3034, 3034, 3037, 3039, 3038, 3040, + 3041, 3039, 3029, 3042, 3030, 3036, 3043, 3044, 3040, 3037, + 3032, 3038, 3044, 3045, 3043, 3047, 3041, 3046, 3046, 3048, + 3049, 3051, 3042, 3057, 3047, 3050, 3050, 3054, 3054, 3055, - 3064, 3064, 3067, 3068, 3071, 3074, 3069, 3072, 3072, 3068, - 3059, 3069, 3062, 3058, 3075, 3063, 3073, 3073, 3076, 3076, - 3074, 3077, 3067, 3079, 3078, 3080, 3071, 3081, 3082, 3083, - 3085, 3080, 3077, 3078, 3075, 3084, 3084, 3093, 3076, 3086, - 3082, 3087, 3086, 3079, 3087, 3085, 3081, 3088, 3088, 3083, - 3092, 3098, 3094, 3095, 3095, 3097, 3096, 3093, 3094, 3096, - 3100, 3097, 3092, 3101, 3101, 3100, 3102, 3103, 3104, 3098, - 3105, 3102, 3106, 3106, 3104, 3109, 3110, 3108, 3111, 3112, - 3112, 3113, 3114, 3115, 3117, 3117, 3103, 3105, 3105, 3108, - 0, 3111, 3115, 3109, 3118, 3118, 3119, 3119, 3114, 3120, + 3055, 3059, 3059, 3045, 3061, 3062, 3063, 3048, 3064, 3069, + 3051, 3063, 3065, 3070, 3057, 3072, 3049, 3065, 3068, 3068, + 3061, 3062, 3070, 3073, 3064, 3071, 3075, 3075, 3077, 3069, + 3076, 3071, 3078, 3078, 3080, 3082, 3084, 3083, 3072, 3086, + 3080, 3084, 3073, 3083, 3076, 3087, 3087, 3077, 3088, 3088, + 3089, 3090, 3091, 3091, 3093, 3082, 3092, 3094, 3095, 3096, + 3098, 3086, 3097, 3093, 3095, 3089, 3100, 3092, 3099, 3099, + 3101, 3090, 3091, 3101, 3097, 3107, 3102, 3094, 3096, 3102, + 3098, 3100, 3103, 3103, 3108, 3109, 3112, 3107, 3110, 3110, + 3111, 3109, 3112, 3111, 3113, 3115, 3116, 3116, 3117, 3118, - 3113, 3110, 3121, 3122, 3120, 3123, 3123, 3127, 3122, 3124, - 3124, 3125, 3125, 3126, 3126, 3128, 3121, 3129, 3135, 3130, - 3127, 3132, 3132, 3129, 3130, 3137, 3138, 3139, 3140, 3141, - 3141, 3143, 3143, 3144, 3145, 3146, 3147, 3135, 3149, 3149, - 3153, 3128, 3148, 3150, 3150, 3154, 3139, 3137, 3138, 3146, - 3140, 3148, 3152, 3145, 3158, 3164, 3147, 3155, 3152, 3144, - 3153, 3164, 3155, 3163, 3154, 3159, 3159, 3161, 3161, 3162, - 3165, 3166, 3167, 3167, 3162, 3158, 3168, 3163, 3171, 3166, - 3170, 3168, 3165, 3171, 3170, 3172, 3173, 3174, 3175, 3176, - 3178, 3179, 3174, 3180, 3181, 3176, 3184, 3183, 3178, 3185, + 3115, 3119, 3120, 3117, 3108, 3121, 3121, 3119, 3124, 3123, + 3125, 3126, 3113, 3127, 3127, 3128, 3129, 3144, 3118, 3120, + 3120, 3123, 3130, 3144, 3126, 3136, 3124, 3132, 3132, 3133, + 3133, 3130, 3129, 3135, 3128, 3125, 3134, 3134, 3135, 3136, + 3137, 3138, 3138, 3139, 3139, 3137, 3140, 3140, 3141, 3141, + 3142, 3143, 3145, 3147, 3147, 3150, 3152, 3145, 3153, 3155, + 3154, 3156, 3156, 3142, 3158, 3158, 3159, 3160, 3161, 3162, + 3164, 3164, 3165, 3165, 3150, 3163, 3167, 3143, 3152, 3154, + 3153, 3155, 3161, 3169, 3163, 3168, 3160, 3170, 3171, 3162, + 3174, 3168, 3159, 3171, 3167, 3175, 3175, 3177, 3177, 3178, - 3175, 3186, 3187, 3189, 3190, 3172, 3173, 3187, 3189, 3194, - 3179, 0, 3184, 3180, 3181, 3183, 3185, 3185, 3192, 3191, - 3196, 3208, 3186, 3192, 3190, 3191, 3208, 3195, 3209, 3194, - 3195, 3200, 3200, 3196, 3201, 3201, 3202, 3207, 3207, 0, - 3202, 3210, 3210, 3212, 3212, 3213, 3213, 3209, 3213, 3214, - 3214, 3220, 3214, 3215, 3215, 3216, 3216, 3217, 3216, 3219, - 3220, 3217, 3221, 3221, 3219, 3222, 3223, 3226, 3227, 3228, - 3229, 3229, 3230, 3233, 3228, 3234, 3236, 3235, 3237, 3239, - 3223, 3235, 3234, 3222, 3240, 3236, 3242, 3226, 3227, 3240, - 3241, 3241, 3230, 3237, 3246, 3242, 3251, 3239, 3233, 3243, + 3179, 3180, 3182, 3169, 3178, 3181, 3170, 3180, 3183, 3183, + 3182, 3174, 3186, 3184, 3179, 3187, 3186, 3181, 3184, 3188, + 3187, 3189, 3190, 3191, 3192, 3194, 3195, 3190, 3196, 3197, + 3192, 3200, 3199, 3194, 3201, 3191, 3202, 3203, 3205, 3188, + 3206, 3189, 3203, 3205, 3210, 3195, 0, 3200, 3196, 3197, + 3199, 3201, 3201, 3207, 3212, 3211, 3208, 3202, 3211, 3207, + 3206, 3208, 3216, 3216, 3210, 3217, 3217, 3212, 3218, 3223, + 3223, 3224, 3218, 3225, 3226, 3226, 3224, 3228, 3228, 3229, + 3229, 3233, 3229, 3230, 3230, 3233, 3230, 3231, 3231, 3235, + 3232, 3232, 3225, 3232, 3235, 3236, 3237, 3237, 3238, 3239, - 3243, 3244, 3244, 3245, 3245, 3247, 3248, 3249, 3250, 3246, - 3247, 3252, 3249, 3249, 3250, 3248, 3253, 3254, 3248, 3255, - 3256, 3251, 3254, 3258, 3255, 3259, 3252, 3257, 3257, 3258, - 3262, 3259, 3260, 3260, 3261, 3261, 3263, 3253, 0, 3256, - 3269, 3263, 3266, 3266, 3281, 3262, 3268, 3268, 0, 3269, - 3272, 3272, 3273, 3273, 3274, 3274, 3275, 3275, 3277, 3277, - 3278, 3278, 3279, 3279, 3280, 3280, 3283, 3284, 3284, 3285, - 3281, 3286, 3287, 3289, 3289, 3283, 3290, 3293, 3285, 3291, - 3291, 3292, 3294, 3286, 3295, 3295, 3296, 3296, 3298, 3302, - 3293, 3304, 3287, 3306, 3294, 3290, 3292, 3299, 3299, 3303, + 3242, 3242, 3243, 3244, 3236, 3245, 3246, 3246, 3247, 3250, + 3245, 3251, 3253, 3239, 3254, 3252, 3238, 3256, 3251, 3252, + 3257, 3253, 3243, 3244, 3259, 3257, 3258, 3258, 3247, 3254, + 3260, 3260, 3263, 3259, 3250, 3256, 3261, 3261, 3262, 3262, + 3264, 3265, 3268, 3266, 3269, 3264, 3267, 3263, 3266, 3266, + 3265, 3270, 3267, 3265, 3273, 3271, 3272, 3274, 3274, 3269, + 3271, 3272, 3275, 3276, 3277, 3277, 3279, 3268, 3275, 3276, + 3278, 3278, 3270, 3273, 3280, 3283, 3283, 3285, 3285, 3280, + 3286, 3279, 3289, 3289, 3290, 3290, 3291, 3291, 3298, 3286, + 3292, 3292, 3294, 3294, 3295, 3295, 3296, 3296, 3297, 3297, - 3305, 3305, 3303, 3298, 3309, 3308, 3310, 3302, 3308, 3311, - 3309, 3306, 3312, 3314, 3311, 3313, 3316, 3304, 3317, 3320, - 3310, 3321, 3316, 3320, 3324, 3333, 3336, 3317, 3342, 3314, - 3333, 3312, 3334, 3313, 3345, 3334, 3321, 3337, 3337, 3336, - 3338, 3338, 3340, 3340, 3343, 3344, 3347, 3349, 3350, 3344, - 3324, 3342, 3351, 3343, 3345, 3355, 3352, 3351, 3352, 3350, - 3347, 3353, 3354, 3354, 3356, 3358, 3357, 3359, 3355, 3361, - 3349, 3360, 3363, 3362, 3364, 3365, 3353, 3363, 3361, 3367, - 3365, 3358, 3372, 3356, 3357, 3362, 3360, 3366, 3366, 3368, - 3373, 3375, 3359, 3380, 3368, 3364, 3372, 3374, 3374, 3367, + 3300, 3301, 3301, 3302, 3302, 3304, 3303, 3305, 3310, 3300, + 3307, 3307, 3308, 3311, 3298, 3303, 3312, 3304, 3309, 3309, + 3313, 3313, 3316, 3310, 3314, 3314, 3311, 3305, 3312, 3317, + 3317, 3308, 3320, 3321, 3322, 3324, 3321, 3316, 3323, 3323, + 3326, 3327, 3328, 3326, 3329, 3330, 3332, 3327, 3331, 3329, + 3320, 3334, 3335, 3324, 3338, 3339, 3328, 3334, 3338, 3342, + 3322, 3335, 3332, 3351, 3330, 3355, 3331, 3361, 3351, 3352, + 3339, 3364, 3352, 3356, 3356, 3357, 3357, 3362, 3355, 3359, + 3359, 3366, 3368, 3363, 3370, 3342, 3362, 3363, 3369, 3370, + 3361, 3364, 3371, 3372, 3371, 3366, 3373, 3373, 3374, 3369, - 3375, 3376, 3376, 3377, 3377, 3378, 3378, 3379, 3379, 3381, - 3373, 3382, 3380, 3383, 3382, 3384, 3385, 3386, 3383, 3387, - 3384, 3388, 3389, 3390, 3392, 3387, 3391, 3391, 3390, 3381, - 3393, 3393, 3386, 3396, 3389, 3388, 3395, 3395, 3397, 3398, - 3398, 3385, 3402, 3400, 3392, 3405, 3405, 3407, 3396, 3406, - 3406, 3408, 3411, 3409, 3412, 3407, 3410, 3397, 3400, 3409, - 3402, 3413, 3410, 3414, 3415, 3415, 3411, 3412, 3414, 3420, - 3408, 3417, 3417, 3421, 3423, 3424, 3426, 3427, 3428, 3424, - 3413, 3429, 3427, 3431, 3432, 3430, 3433, 3437, 3423, 3432, - 3420, 3433, 3438, 3421, 3429, 3439, 3426, 3428, 3430, 3434, + 3375, 3377, 3376, 3378, 3380, 3368, 3379, 3382, 3372, 3383, + 3381, 3374, 3382, 3380, 3385, 3385, 3386, 3377, 3384, 3375, + 3376, 3379, 3381, 3384, 3387, 3391, 3392, 3400, 3378, 3387, + 3383, 3393, 3393, 3394, 3395, 3395, 3386, 3396, 3396, 3391, + 3397, 3397, 3394, 3398, 3398, 3399, 3392, 3400, 3401, 3402, + 3403, 3401, 3404, 3405, 3402, 3403, 3406, 3407, 3408, 3411, + 3409, 3415, 3406, 3416, 3399, 3409, 3410, 3410, 3405, 3419, + 3408, 3407, 3412, 3412, 3414, 3414, 3415, 3404, 3421, 3411, + 3417, 3417, 3416, 3426, 3419, 3424, 3424, 3425, 3425, 3427, + 3430, 3426, 3428, 3429, 3431, 3432, 3421, 3433, 3428, 3429, - 3434, 3441, 3431, 3440, 3440, 3442, 3441, 3437, 3443, 3443, - 3438, 3442, 3444, 3445, 3439, 3446, 3447, 3444, 3445, 3448, - 3446, 3450, 3450, 3451, 3455, 3448, 3452, 3452, 3451, 3454, - 3456, 3457, 3458, 3454, 3459, 3447, 3460, 3456, 3468, 3461, - 3459, 3463, 3463, 3455, 3465, 3465, 3469, 3466, 3467, 3470, - 3457, 3458, 3461, 3467, 3473, 3460, 3466, 3468, 3472, 3466, - 3471, 3471, 3470, 3472, 3475, 3469, 3477, 3473, 3476, 3476, - 3478, 3478, 3479, 3479, 3480, 3481, 3482, 3483, 3483, 3480, - 0, 3484, 3481, 3486, 3486, 3477, 3484, 3485, 3489, 3485, - 3475, 3487, 3488, 3491, 3494, 3482, 3490, 3498, 3487, 3488, + 3434, 3434, 3433, 3439, 3430, 3436, 3436, 3431, 3427, 3440, + 3445, 3442, 3443, 3446, 3432, 3447, 3443, 3450, 3446, 3448, + 3449, 3451, 3452, 3456, 3439, 3442, 3451, 3452, 3457, 3440, + 3445, 3458, 3448, 3449, 3447, 3461, 3450, 3453, 3453, 3459, + 3459, 3461, 3460, 3456, 3462, 3462, 3457, 3460, 3463, 3464, + 3458, 3465, 3466, 3463, 3464, 3467, 3465, 3469, 3469, 3470, + 3474, 3467, 3471, 3471, 3470, 3473, 3475, 3476, 3477, 3473, + 3478, 3466, 3479, 3475, 3487, 3480, 3478, 3482, 3482, 3474, + 3484, 3484, 3488, 3485, 3486, 3489, 3476, 3477, 3480, 3486, + 3492, 3479, 3485, 3487, 3491, 3485, 3490, 3490, 3489, 3491, - 3496, 3490, 3493, 3493, 3497, 3496, 3499, 3489, 3503, 3497, - 3500, 3500, 3491, 3494, 3502, 3502, 3498, 3504, 3505, 3505, - 3506, 3506, 3507, 3509, 3509, 3499, 3511, 3503, 3517, 3507, - 3510, 3510, 3513, 3511, 3516, 3518, 3504, 3513, 0, 3516, - 3519, 3519, 3520, 3520, 0, 0, 0, 3517, 0, 0, - 0, 0, 0, 0, 3518, 3524, 3524, 3524, 3524, 3524, - 3524, 3524, 3525, 3525, 3525, 3525, 3525, 3525, 3525, 3526, - 3526, 3526, 3526, 3526, 3526, 3526, 3527, 3527, 3527, 3527, - 3527, 3527, 3527, 3528, 3528, 3528, 3528, 3528, 3528, 3528, - 3529, 3529, 3529, 3529, 3529, 3529, 3529, 3530, 3530, 3530, + 3494, 3488, 3496, 3492, 3495, 3495, 3497, 3497, 3498, 3498, + 3499, 3500, 3501, 3502, 3502, 3499, 0, 3503, 3500, 3505, + 3505, 3496, 3503, 3504, 3508, 3504, 3494, 3506, 3507, 3510, + 3513, 3501, 3509, 3517, 3506, 3507, 3515, 3509, 3512, 3512, + 3516, 3515, 3518, 3508, 3522, 3516, 3519, 3519, 3510, 3513, + 3521, 3521, 3517, 3523, 3524, 3524, 3525, 3525, 3526, 3528, + 3528, 3518, 3530, 3522, 3536, 3526, 3529, 3529, 3532, 3530, + 3535, 3537, 3523, 3532, 0, 3535, 3538, 3538, 3539, 3539, + 0, 0, 0, 3536, 0, 0, 0, 0, 0, 0, + 3537, 3543, 3543, 3543, 3543, 3543, 3543, 3543, 3544, 3544, - 3530, 3530, 3530, 3530, 3532, 3532, 0, 3532, 3532, 3532, - 3532, 3533, 3533, 0, 0, 0, 3533, 3533, 3534, 3534, - 0, 0, 3534, 0, 3534, 3535, 0, 0, 0, 0, - 0, 3535, 3536, 3536, 0, 0, 0, 3536, 3536, 3537, - 0, 0, 0, 0, 0, 3537, 3538, 3538, 0, 3538, - 3538, 3538, 3538, 3539, 0, 0, 0, 0, 0, 3539, - 3540, 3540, 0, 0, 0, 3540, 3540, 3541, 3541, 0, - 3541, 3541, 3541, 3541, 3523, 3523, 3523, 3523, 3523, 3523, - 3523, 3523, 3523, 3523, 3523, 3523, 3523, 3523, 3523, 3523, - 3523, 3523, 3523, 3523, 3523, 3523, 3523, 3523, 3523, 3523, + 3544, 3544, 3544, 3544, 3544, 3545, 3545, 3545, 3545, 3545, + 3545, 3545, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3547, + 3547, 3547, 3547, 3547, 3547, 3547, 3548, 3548, 3548, 3548, + 3548, 3548, 3548, 3549, 3549, 3549, 3549, 3549, 3549, 3549, + 3551, 3551, 0, 3551, 3551, 3551, 3551, 3552, 3552, 0, + 0, 0, 3552, 3552, 3553, 3553, 0, 0, 3553, 0, + 3553, 3554, 0, 0, 0, 0, 0, 3554, 3555, 3555, + 0, 0, 0, 3555, 3555, 3556, 0, 0, 0, 0, + 0, 3556, 3557, 3557, 0, 3557, 3557, 3557, 3557, 3558, + 0, 0, 0, 0, 0, 3558, 3559, 3559, 0, 0, - 3523, 3523, 3523, 3523, 3523, 3523, 3523, 3523, 3523, 3523, - 3523, 3523, 3523, 3523, 3523 + 0, 3559, 3559, 3560, 3560, 0, 3560, 3560, 3560, 3560, + 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, + 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, + 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, + 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, + 3542 } ; static yy_state_type yy_last_accepting_state; @@ -3316,7 +3328,7 @@ static void config_end_include(void) } #endif -#line 3317 "" +#line 3329 "" #define YY_NO_INPUT 1 #line 191 "./util/configlexer.lex" #ifndef YY_NO_UNPUT @@ -3325,9 +3337,9 @@ static void config_end_include(void) #ifndef YY_NO_INPUT #define YY_NO_INPUT 1 #endif -#line 3326 "" +#line 3338 "" -#line 3328 "" +#line 3340 "" #define INITIAL 0 #define quotedstring 1 @@ -3551,7 +3563,7 @@ YY_DECL { #line 211 "./util/configlexer.lex" -#line 3552 "" +#line 3564 "" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -3584,13 +3596,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 >= 3524 ) + if ( yy_current_state >= 3543 ) 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] != 6875 ); + while ( yy_base[yy_current_state] != 6911 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -4295,12 +4307,12 @@ YY_RULE_SETUP case 136: YY_RULE_SETUP #line 350 "./util/configlexer.lex" -{ YDVAR(1, VAR_ZONEFILE) } +{ YDVAR(1, VAR_RPZ_SIGNAL_NXDOMAIN_RA) } YY_BREAK case 137: YY_RULE_SETUP #line 351 "./util/configlexer.lex" -{ YDVAR(1, VAR_MASTER) } +{ YDVAR(1, VAR_ZONEFILE) } YY_BREAK case 138: YY_RULE_SETUP @@ -4310,741 +4322,741 @@ YY_RULE_SETUP case 139: YY_RULE_SETUP #line 353 "./util/configlexer.lex" -{ YDVAR(1, VAR_URL) } +{ YDVAR(1, VAR_MASTER) } YY_BREAK case 140: YY_RULE_SETUP #line 354 "./util/configlexer.lex" -{ YDVAR(1, VAR_ALLOW_NOTIFY) } +{ YDVAR(1, VAR_URL) } YY_BREAK case 141: YY_RULE_SETUP #line 355 "./util/configlexer.lex" -{ YDVAR(1, VAR_FOR_DOWNSTREAM) } +{ YDVAR(1, VAR_ALLOW_NOTIFY) } YY_BREAK case 142: YY_RULE_SETUP #line 356 "./util/configlexer.lex" -{ YDVAR(1, VAR_FOR_UPSTREAM) } +{ YDVAR(1, VAR_FOR_DOWNSTREAM) } YY_BREAK case 143: YY_RULE_SETUP #line 357 "./util/configlexer.lex" -{ YDVAR(1, VAR_FALLBACK_ENABLED) } +{ YDVAR(1, VAR_FOR_UPSTREAM) } YY_BREAK case 144: YY_RULE_SETUP #line 358 "./util/configlexer.lex" -{ YDVAR(0, VAR_VIEW) } +{ YDVAR(1, VAR_FALLBACK_ENABLED) } YY_BREAK case 145: YY_RULE_SETUP #line 359 "./util/configlexer.lex" -{ YDVAR(1, VAR_VIEW_FIRST) } +{ YDVAR(0, VAR_VIEW) } YY_BREAK case 146: YY_RULE_SETUP #line 360 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } +{ YDVAR(1, VAR_VIEW_FIRST) } YY_BREAK case 147: YY_RULE_SETUP #line 361 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } +{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } YY_BREAK case 148: YY_RULE_SETUP #line 362 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL) } +{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } YY_BREAK case 149: YY_RULE_SETUP #line 363 "./util/configlexer.lex" -{ YDVAR(1, VAR_SEND_CLIENT_SUBNET) } +{ YDVAR(2, VAR_ACCESS_CONTROL) } YY_BREAK case 150: YY_RULE_SETUP #line 364 "./util/configlexer.lex" -{ YDVAR(1, VAR_CLIENT_SUBNET_ZONE) } +{ YDVAR(1, VAR_SEND_CLIENT_SUBNET) } YY_BREAK case 151: YY_RULE_SETUP #line 365 "./util/configlexer.lex" -{ YDVAR(1, VAR_CLIENT_SUBNET_ALWAYS_FORWARD) } +{ YDVAR(1, VAR_CLIENT_SUBNET_ZONE) } YY_BREAK case 152: YY_RULE_SETUP #line 366 "./util/configlexer.lex" -{ YDVAR(1, VAR_CLIENT_SUBNET_OPCODE) } +{ YDVAR(1, VAR_CLIENT_SUBNET_ALWAYS_FORWARD) } YY_BREAK case 153: YY_RULE_SETUP #line 367 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV4) } +{ YDVAR(1, VAR_CLIENT_SUBNET_OPCODE) } YY_BREAK case 154: YY_RULE_SETUP #line 368 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV6) } +{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV4) } YY_BREAK case 155: YY_RULE_SETUP #line 369 "./util/configlexer.lex" -{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV4) } +{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV6) } YY_BREAK case 156: YY_RULE_SETUP #line 370 "./util/configlexer.lex" -{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV6) } +{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV4) } YY_BREAK case 157: YY_RULE_SETUP #line 371 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV4) } +{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV6) } YY_BREAK case 158: YY_RULE_SETUP #line 372 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV6) } +{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV4) } YY_BREAK case 159: YY_RULE_SETUP #line 373 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_IDENTITY) } +{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV6) } YY_BREAK case 160: YY_RULE_SETUP #line 374 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_VERSION) } +{ YDVAR(1, VAR_HIDE_IDENTITY) } YY_BREAK case 161: YY_RULE_SETUP #line 375 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_TRUSTANCHOR) } +{ YDVAR(1, VAR_HIDE_VERSION) } YY_BREAK case 162: YY_RULE_SETUP #line 376 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_HTTP_USER_AGENT) } +{ YDVAR(1, VAR_HIDE_TRUSTANCHOR) } YY_BREAK case 163: YY_RULE_SETUP #line 377 "./util/configlexer.lex" -{ YDVAR(1, VAR_IDENTITY) } +{ YDVAR(1, VAR_HIDE_HTTP_USER_AGENT) } YY_BREAK case 164: YY_RULE_SETUP #line 378 "./util/configlexer.lex" -{ YDVAR(1, VAR_VERSION) } +{ YDVAR(1, VAR_IDENTITY) } YY_BREAK case 165: YY_RULE_SETUP #line 379 "./util/configlexer.lex" -{ YDVAR(1, VAR_HTTP_USER_AGENT) } +{ YDVAR(1, VAR_VERSION) } YY_BREAK case 166: YY_RULE_SETUP #line 380 "./util/configlexer.lex" -{ YDVAR(1, VAR_MODULE_CONF) } +{ YDVAR(1, VAR_HTTP_USER_AGENT) } YY_BREAK case 167: YY_RULE_SETUP #line 381 "./util/configlexer.lex" -{ YDVAR(1, VAR_DLV_ANCHOR) } +{ YDVAR(1, VAR_MODULE_CONF) } YY_BREAK case 168: YY_RULE_SETUP #line 382 "./util/configlexer.lex" -{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } +{ YDVAR(1, VAR_DLV_ANCHOR) } YY_BREAK case 169: YY_RULE_SETUP #line 383 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } +{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } YY_BREAK case 170: YY_RULE_SETUP #line 384 "./util/configlexer.lex" -{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } +{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } YY_BREAK case 171: YY_RULE_SETUP #line 385 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } +{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } YY_BREAK case 172: YY_RULE_SETUP #line 386 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR) } +{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } YY_BREAK case 173: YY_RULE_SETUP #line 387 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR_SIGNALING) } +{ YDVAR(1, VAR_TRUST_ANCHOR) } YY_BREAK case 174: YY_RULE_SETUP #line 388 "./util/configlexer.lex" -{ YDVAR(1, VAR_ROOT_KEY_SENTINEL) } +{ YDVAR(1, VAR_TRUST_ANCHOR_SIGNALING) } YY_BREAK case 175: YY_RULE_SETUP #line 389 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } +{ YDVAR(1, VAR_ROOT_KEY_SENTINEL) } YY_BREAK case 176: YY_RULE_SETUP #line 390 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } +{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } YY_BREAK case 177: YY_RULE_SETUP #line 391 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } +{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } YY_BREAK case 178: YY_RULE_SETUP #line 392 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_MAX_RESTART) } +{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } YY_BREAK case 179: YY_RULE_SETUP #line 393 "./util/configlexer.lex" -{ YDVAR(1, VAR_BOGUS_TTL) } +{ YDVAR(1, VAR_VAL_MAX_RESTART) } YY_BREAK case 180: YY_RULE_SETUP #line 394 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } +{ YDVAR(1, VAR_BOGUS_TTL) } YY_BREAK case 181: YY_RULE_SETUP #line 395 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } +{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } YY_BREAK case 182: YY_RULE_SETUP #line 396 "./util/configlexer.lex" -{ YDVAR(1, VAR_AGGRESSIVE_NSEC) } +{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } YY_BREAK case 183: YY_RULE_SETUP #line 397 "./util/configlexer.lex" -{ YDVAR(1, VAR_IGNORE_CD_FLAG) } +{ YDVAR(1, VAR_AGGRESSIVE_NSEC) } YY_BREAK case 184: YY_RULE_SETUP #line 398 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED) } +{ YDVAR(1, VAR_IGNORE_CD_FLAG) } YY_BREAK case 185: YY_RULE_SETUP #line 399 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_TTL) } +{ YDVAR(1, VAR_SERVE_EXPIRED) } YY_BREAK case 186: YY_RULE_SETUP #line 400 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) } +{ YDVAR(1, VAR_SERVE_EXPIRED_TTL) } YY_BREAK case 187: YY_RULE_SETUP #line 401 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) } +{ YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) } YY_BREAK case 188: YY_RULE_SETUP #line 402 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) } +{ YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) } YY_BREAK case 189: YY_RULE_SETUP #line 403 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_ORIGINAL_TTL) } +{ YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) } YY_BREAK case 190: YY_RULE_SETUP #line 404 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAKE_DSA) } +{ YDVAR(1, VAR_SERVE_ORIGINAL_TTL) } YY_BREAK case 191: YY_RULE_SETUP #line 405 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAKE_SHA1) } +{ YDVAR(1, VAR_FAKE_DSA) } YY_BREAK case 192: YY_RULE_SETUP #line 406 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_LOG_LEVEL) } +{ YDVAR(1, VAR_FAKE_SHA1) } YY_BREAK case 193: YY_RULE_SETUP #line 407 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SIZE) } +{ YDVAR(1, VAR_VAL_LOG_LEVEL) } YY_BREAK case 194: YY_RULE_SETUP #line 408 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SLABS) } +{ YDVAR(1, VAR_KEY_CACHE_SIZE) } YY_BREAK case 195: YY_RULE_SETUP #line 409 "./util/configlexer.lex" -{ YDVAR(1, VAR_NEG_CACHE_SIZE) } +{ YDVAR(1, VAR_KEY_CACHE_SLABS) } YY_BREAK case 196: YY_RULE_SETUP #line 410 "./util/configlexer.lex" -{ - YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } +{ YDVAR(1, VAR_NEG_CACHE_SIZE) } YY_BREAK case 197: YY_RULE_SETUP -#line 412 "./util/configlexer.lex" -{ YDVAR(1, VAR_ZONEMD_PERMISSIVE_MODE) } +#line 411 "./util/configlexer.lex" +{ + YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } YY_BREAK case 198: YY_RULE_SETUP #line 413 "./util/configlexer.lex" -{ YDVAR(1, VAR_ZONEMD_CHECK) } +{ YDVAR(1, VAR_ZONEMD_PERMISSIVE_MODE) } YY_BREAK case 199: YY_RULE_SETUP #line 414 "./util/configlexer.lex" -{ YDVAR(1, VAR_ZONEMD_REJECT_ABSENCE) } +{ YDVAR(1, VAR_ZONEMD_CHECK) } YY_BREAK case 200: YY_RULE_SETUP #line 415 "./util/configlexer.lex" -{ YDVAR(1, VAR_ADD_HOLDDOWN) } +{ YDVAR(1, VAR_ZONEMD_REJECT_ABSENCE) } YY_BREAK case 201: YY_RULE_SETUP #line 416 "./util/configlexer.lex" -{ YDVAR(1, VAR_DEL_HOLDDOWN) } +{ YDVAR(1, VAR_ADD_HOLDDOWN) } YY_BREAK case 202: YY_RULE_SETUP #line 417 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEEP_MISSING) } +{ YDVAR(1, VAR_DEL_HOLDDOWN) } YY_BREAK case 203: YY_RULE_SETUP #line 418 "./util/configlexer.lex" -{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } +{ YDVAR(1, VAR_KEEP_MISSING) } YY_BREAK case 204: YY_RULE_SETUP #line 419 "./util/configlexer.lex" -{ YDVAR(1, VAR_USE_SYSLOG) } +{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } YY_BREAK case 205: YY_RULE_SETUP #line 420 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_IDENTITY) } +{ YDVAR(1, VAR_USE_SYSLOG) } YY_BREAK case 206: YY_RULE_SETUP #line 421 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TIME_ASCII) } +{ YDVAR(1, VAR_LOG_IDENTITY) } YY_BREAK case 207: YY_RULE_SETUP #line 422 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_QUERIES) } +{ YDVAR(1, VAR_LOG_TIME_ASCII) } YY_BREAK case 208: YY_RULE_SETUP #line 423 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_REPLIES) } +{ YDVAR(1, VAR_LOG_QUERIES) } YY_BREAK case 209: YY_RULE_SETUP #line 424 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) } +{ YDVAR(1, VAR_LOG_REPLIES) } YY_BREAK case 210: YY_RULE_SETUP #line 425 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) } +{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) } YY_BREAK case 211: YY_RULE_SETUP #line 426 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_SERVFAIL) } +{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) } YY_BREAK case 212: YY_RULE_SETUP #line 427 "./util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE) } +{ YDVAR(1, VAR_LOG_SERVFAIL) } YY_BREAK case 213: YY_RULE_SETUP #line 428 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA) } +{ YDVAR(2, VAR_LOCAL_ZONE) } YY_BREAK case 214: YY_RULE_SETUP #line 429 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA_PTR) } +{ YDVAR(1, VAR_LOCAL_DATA) } YY_BREAK case 215: YY_RULE_SETUP #line 430 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } +{ YDVAR(1, VAR_LOCAL_DATA_PTR) } YY_BREAK case 216: YY_RULE_SETUP #line 431 "./util/configlexer.lex" -{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } +{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } YY_BREAK case 217: YY_RULE_SETUP #line 432 "./util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_INTERVAL) } +{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } YY_BREAK case 218: YY_RULE_SETUP #line 433 "./util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } +{ YDVAR(1, VAR_STATISTICS_INTERVAL) } YY_BREAK case 219: YY_RULE_SETUP #line 434 "./util/configlexer.lex" -{ YDVAR(1, VAR_EXTENDED_STATISTICS) } +{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } YY_BREAK case 220: YY_RULE_SETUP #line 435 "./util/configlexer.lex" -{ YDVAR(1, VAR_SHM_ENABLE) } +{ YDVAR(1, VAR_EXTENDED_STATISTICS) } YY_BREAK case 221: YY_RULE_SETUP #line 436 "./util/configlexer.lex" -{ YDVAR(1, VAR_SHM_KEY) } +{ YDVAR(1, VAR_SHM_ENABLE) } YY_BREAK case 222: YY_RULE_SETUP #line 437 "./util/configlexer.lex" -{ YDVAR(0, VAR_REMOTE_CONTROL) } +{ YDVAR(1, VAR_SHM_KEY) } YY_BREAK case 223: YY_RULE_SETUP #line 438 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_ENABLE) } +{ YDVAR(0, VAR_REMOTE_CONTROL) } YY_BREAK case 224: YY_RULE_SETUP #line 439 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_INTERFACE) } +{ YDVAR(1, VAR_CONTROL_ENABLE) } YY_BREAK case 225: YY_RULE_SETUP #line 440 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_PORT) } +{ YDVAR(1, VAR_CONTROL_INTERFACE) } YY_BREAK case 226: YY_RULE_SETUP #line 441 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_USE_CERT) } +{ YDVAR(1, VAR_CONTROL_PORT) } YY_BREAK case 227: YY_RULE_SETUP #line 442 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_KEY_FILE) } +{ YDVAR(1, VAR_CONTROL_USE_CERT) } YY_BREAK case 228: YY_RULE_SETUP #line 443 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_CERT_FILE) } +{ YDVAR(1, VAR_SERVER_KEY_FILE) } YY_BREAK case 229: YY_RULE_SETUP #line 444 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_KEY_FILE) } +{ YDVAR(1, VAR_SERVER_CERT_FILE) } YY_BREAK case 230: YY_RULE_SETUP #line 445 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_CERT_FILE) } +{ YDVAR(1, VAR_CONTROL_KEY_FILE) } YY_BREAK case 231: YY_RULE_SETUP #line 446 "./util/configlexer.lex" -{ YDVAR(1, VAR_PYTHON_SCRIPT) } +{ YDVAR(1, VAR_CONTROL_CERT_FILE) } YY_BREAK case 232: YY_RULE_SETUP #line 447 "./util/configlexer.lex" -{ YDVAR(0, VAR_PYTHON) } +{ YDVAR(1, VAR_PYTHON_SCRIPT) } YY_BREAK case 233: YY_RULE_SETUP #line 448 "./util/configlexer.lex" -{ YDVAR(1, VAR_DYNLIB_FILE) } +{ YDVAR(0, VAR_PYTHON) } YY_BREAK case 234: YY_RULE_SETUP #line 449 "./util/configlexer.lex" -{ YDVAR(0, VAR_DYNLIB) } +{ YDVAR(1, VAR_DYNLIB_FILE) } YY_BREAK case 235: YY_RULE_SETUP #line 450 "./util/configlexer.lex" -{ YDVAR(1, VAR_DOMAIN_INSECURE) } +{ YDVAR(0, VAR_DYNLIB) } YY_BREAK case 236: YY_RULE_SETUP #line 451 "./util/configlexer.lex" -{ YDVAR(1, VAR_MINIMAL_RESPONSES) } +{ YDVAR(1, VAR_DOMAIN_INSECURE) } YY_BREAK case 237: YY_RULE_SETUP #line 452 "./util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } +{ YDVAR(1, VAR_MINIMAL_RESPONSES) } YY_BREAK case 238: YY_RULE_SETUP #line 453 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } +{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } YY_BREAK case 239: YY_RULE_SETUP #line 454 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_UDP_SIZE) } +{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } YY_BREAK case 240: YY_RULE_SETUP #line 455 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_PREFIX) } +{ YDVAR(1, VAR_MAX_UDP_SIZE) } YY_BREAK case 241: YY_RULE_SETUP #line 456 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_SYNTHALL) } +{ YDVAR(1, VAR_DNS64_PREFIX) } YY_BREAK case 242: YY_RULE_SETUP #line 457 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } +{ YDVAR(1, VAR_DNS64_SYNTHALL) } YY_BREAK case 243: YY_RULE_SETUP #line 458 "./util/configlexer.lex" -{ YDVAR(1, VAR_DEFINE_TAG) } +{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } YY_BREAK case 244: YY_RULE_SETUP #line 459 "./util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } +{ YDVAR(1, VAR_DEFINE_TAG) } YY_BREAK case 245: YY_RULE_SETUP #line 460 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } +{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } YY_BREAK case 246: YY_RULE_SETUP #line 461 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } +{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } YY_BREAK case 247: YY_RULE_SETUP #line 462 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } YY_BREAK case 248: YY_RULE_SETUP #line 463 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } YY_BREAK case 249: YY_RULE_SETUP #line 464 "./util/configlexer.lex" -{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } +{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } YY_BREAK case 250: YY_RULE_SETUP #line 465 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSTAP) } +{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } YY_BREAK case 251: YY_RULE_SETUP #line 466 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_ENABLE) } +{ YDVAR(0, VAR_DNSTAP) } YY_BREAK case 252: YY_RULE_SETUP #line 467 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_BIDIRECTIONAL) } +{ YDVAR(1, VAR_DNSTAP_ENABLE) } YY_BREAK case 253: YY_RULE_SETUP #line 468 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } +{ YDVAR(1, VAR_DNSTAP_BIDIRECTIONAL) } YY_BREAK case 254: YY_RULE_SETUP #line 469 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IP) } +{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } YY_BREAK case 255: YY_RULE_SETUP #line 470 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS) } +{ YDVAR(1, VAR_DNSTAP_IP) } YY_BREAK case 256: YY_RULE_SETUP #line 471 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } +{ YDVAR(1, VAR_DNSTAP_TLS) } YY_BREAK case 257: YY_RULE_SETUP #line 472 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } +{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } YY_BREAK case 258: YY_RULE_SETUP #line 473 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } +{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } YY_BREAK case 259: YY_RULE_SETUP -#line 475 "./util/configlexer.lex" +#line 474 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } YY_BREAK case 260: YY_RULE_SETUP -#line 477 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } +#line 476 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } YY_BREAK case 261: YY_RULE_SETUP #line 478 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } +{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } YY_BREAK case 262: YY_RULE_SETUP #line 479 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IDENTITY) } +{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } YY_BREAK case 263: YY_RULE_SETUP #line 480 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_VERSION) } +{ YDVAR(1, VAR_DNSTAP_IDENTITY) } YY_BREAK case 264: YY_RULE_SETUP #line 481 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } +{ YDVAR(1, VAR_DNSTAP_VERSION) } YY_BREAK case 265: YY_RULE_SETUP -#line 483 "./util/configlexer.lex" +#line 482 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } YY_BREAK case 266: YY_RULE_SETUP -#line 485 "./util/configlexer.lex" +#line 484 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } YY_BREAK case 267: YY_RULE_SETUP -#line 487 "./util/configlexer.lex" +#line 486 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } YY_BREAK case 268: YY_RULE_SETUP -#line 489 "./util/configlexer.lex" +#line 488 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } YY_BREAK case 269: YY_RULE_SETUP -#line 491 "./util/configlexer.lex" +#line 490 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } YY_BREAK case 270: YY_RULE_SETUP -#line 493 "./util/configlexer.lex" -{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } +#line 492 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } YY_BREAK case 271: YY_RULE_SETUP #line 494 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT) } +{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } YY_BREAK case 272: YY_RULE_SETUP #line 495 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT) } +{ YDVAR(1, VAR_IP_RATELIMIT) } YY_BREAK case 273: YY_RULE_SETUP #line 496 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_RATELIMIT) } YY_BREAK case 274: YY_RULE_SETUP #line 497 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } YY_BREAK case 275: YY_RULE_SETUP #line 498 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_RATELIMIT_SLABS) } YY_BREAK case 276: YY_RULE_SETUP #line 499 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } YY_BREAK case 277: YY_RULE_SETUP #line 500 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } +{ YDVAR(1, VAR_RATELIMIT_SIZE) } YY_BREAK case 278: YY_RULE_SETUP #line 501 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } +{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } YY_BREAK case 279: YY_RULE_SETUP #line 502 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } +{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } YY_BREAK case 280: YY_RULE_SETUP #line 503 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_FACTOR) } +{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } YY_BREAK case 281: YY_RULE_SETUP #line 504 "./util/configlexer.lex" -{ YDVAR(1, VAR_OUTBOUND_MSG_RETRY) } +{ YDVAR(1, VAR_RATELIMIT_FACTOR) } YY_BREAK case 282: YY_RULE_SETUP #line 505 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOW_RTT) } +{ YDVAR(1, VAR_OUTBOUND_MSG_RETRY) } YY_BREAK case 283: YY_RULE_SETUP #line 506 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_NUM) } +{ YDVAR(1, VAR_LOW_RTT) } YY_BREAK case 284: YY_RULE_SETUP #line 507 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } +{ YDVAR(1, VAR_FAST_SERVER_NUM) } YY_BREAK case 285: YY_RULE_SETUP @@ -5059,119 +5071,119 @@ YY_RULE_SETUP case 287: YY_RULE_SETUP #line 510 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_TAG) } +{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 288: YY_RULE_SETUP #line 511 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP) } +{ YDVAR(2, VAR_RESPONSE_IP_TAG) } YY_BREAK case 289: YY_RULE_SETUP #line 512 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_DATA) } +{ YDVAR(2, VAR_RESPONSE_IP) } YY_BREAK case 290: YY_RULE_SETUP #line 513 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSCRYPT) } +{ YDVAR(2, VAR_RESPONSE_IP_DATA) } YY_BREAK case 291: YY_RULE_SETUP #line 514 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } +{ YDVAR(0, VAR_DNSCRYPT) } YY_BREAK case 292: YY_RULE_SETUP #line 515 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PORT) } +{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } YY_BREAK case 293: YY_RULE_SETUP #line 516 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } +{ YDVAR(1, VAR_DNSCRYPT_PORT) } YY_BREAK case 294: YY_RULE_SETUP #line 517 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } YY_BREAK case 295: YY_RULE_SETUP #line 518 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } +{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } YY_BREAK case 296: YY_RULE_SETUP #line 519 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } YY_BREAK case 297: YY_RULE_SETUP #line 520 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } YY_BREAK case 298: YY_RULE_SETUP -#line 522 "./util/configlexer.lex" +#line 521 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } YY_BREAK case 299: YY_RULE_SETUP -#line 524 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } +#line 523 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } YY_BREAK case 300: YY_RULE_SETUP #line 525 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } YY_BREAK case 301: YY_RULE_SETUP #line 526 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_RESPONSES) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } YY_BREAK case 302: YY_RULE_SETUP #line 527 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) } +{ YDVAR(1, VAR_PAD_RESPONSES) } YY_BREAK case 303: YY_RULE_SETUP #line 528 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_QUERIES) } +{ YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) } YY_BREAK case 304: YY_RULE_SETUP #line 529 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) } +{ YDVAR(1, VAR_PAD_QUERIES) } YY_BREAK case 305: YY_RULE_SETUP #line 530 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_ENABLED) } +{ YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) } YY_BREAK case 306: YY_RULE_SETUP #line 531 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } +{ YDVAR(1, VAR_IPSECMOD_ENABLED) } YY_BREAK case 307: YY_RULE_SETUP #line 532 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_HOOK) } +{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } YY_BREAK case 308: YY_RULE_SETUP #line 533 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } +{ YDVAR(1, VAR_IPSECMOD_HOOK) } YY_BREAK case 309: YY_RULE_SETUP #line 534 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } +{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } YY_BREAK case 310: YY_RULE_SETUP @@ -5181,118 +5193,123 @@ YY_RULE_SETUP case 311: YY_RULE_SETUP #line 536 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_STRICT) } +{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } YY_BREAK case 312: YY_RULE_SETUP #line 537 "./util/configlexer.lex" -{ YDVAR(0, VAR_CACHEDB) } +{ YDVAR(1, VAR_IPSECMOD_STRICT) } YY_BREAK case 313: YY_RULE_SETUP #line 538 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_BACKEND) } +{ YDVAR(0, VAR_CACHEDB) } YY_BREAK case 314: YY_RULE_SETUP #line 539 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } +{ YDVAR(1, VAR_CACHEDB_BACKEND) } YY_BREAK case 315: YY_RULE_SETUP #line 540 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISHOST) } +{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } YY_BREAK case 316: YY_RULE_SETUP #line 541 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISPORT) } +{ YDVAR(1, VAR_CACHEDB_REDISHOST) } YY_BREAK case 317: YY_RULE_SETUP #line 542 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } +{ YDVAR(1, VAR_CACHEDB_REDISPORT) } YY_BREAK case 318: YY_RULE_SETUP #line 543 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } +{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } YY_BREAK case 319: YY_RULE_SETUP #line 544 "./util/configlexer.lex" -{ YDVAR(0, VAR_IPSET) } +{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } YY_BREAK case 320: YY_RULE_SETUP #line 545 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V4) } +{ YDVAR(0, VAR_IPSET) } YY_BREAK case 321: YY_RULE_SETUP #line 546 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V6) } +{ YDVAR(1, VAR_IPSET_NAME_V4) } YY_BREAK case 322: YY_RULE_SETUP #line 547 "./util/configlexer.lex" -{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } +{ YDVAR(1, VAR_IPSET_NAME_V6) } YY_BREAK case 323: YY_RULE_SETUP #line 548 "./util/configlexer.lex" -{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } +{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } YY_BREAK case 324: YY_RULE_SETUP #line 549 "./util/configlexer.lex" -{ YDVAR(2, VAR_EDNS_CLIENT_STRING) } +{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } YY_BREAK case 325: YY_RULE_SETUP #line 550 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) } +{ YDVAR(2, VAR_EDNS_CLIENT_STRING) } YY_BREAK case 326: YY_RULE_SETUP #line 551 "./util/configlexer.lex" -{ YDVAR(1, VAR_NSID ) } +{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) } YY_BREAK case 327: -/* rule 327 can match eol */ YY_RULE_SETUP #line 552 "./util/configlexer.lex" +{ YDVAR(1, VAR_NSID ) } + YY_BREAK +case 328: +/* rule 328 can match eol */ +YY_RULE_SETUP +#line 553 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK /* Quoted strings. Strip leading and ending quotes */ -case 328: +case 329: YY_RULE_SETUP -#line 555 "./util/configlexer.lex" +#line 556 "./util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 556 "./util/configlexer.lex" +#line 557 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 329: -YY_RULE_SETUP -#line 561 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 330: -/* rule 330 can match eol */ YY_RULE_SETUP #line 562 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 331: +/* rule 331 can match eol */ +YY_RULE_SETUP +#line 563 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 331: +case 332: YY_RULE_SETUP -#line 564 "./util/configlexer.lex" +#line 565 "./util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -5305,34 +5322,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 332: +case 333: YY_RULE_SETUP -#line 576 "./util/configlexer.lex" +#line 577 "./util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 577 "./util/configlexer.lex" +#line 578 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 333: -YY_RULE_SETUP -#line 582 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 334: -/* rule 334 can match eol */ YY_RULE_SETUP #line 583 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 335: +/* rule 335 can match eol */ +YY_RULE_SETUP +#line 584 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 335: +case 336: YY_RULE_SETUP -#line 585 "./util/configlexer.lex" +#line 586 "./util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -5345,38 +5362,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 336: +case 337: YY_RULE_SETUP -#line 597 "./util/configlexer.lex" +#line 598 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 599 "./util/configlexer.lex" +#line 600 "./util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); } YY_BREAK -case 337: -YY_RULE_SETUP -#line 603 "./util/configlexer.lex" -{ LEXOUT(("ISP ")); /* ignore */ } - YY_BREAK case 338: -/* rule 338 can match eol */ YY_RULE_SETUP #line 604 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++;} +{ LEXOUT(("ISP ")); /* ignore */ } YY_BREAK case 339: +/* rule 339 can match eol */ YY_RULE_SETUP #line 605 "./util/configlexer.lex" -{ LEXOUT(("IQS ")); BEGIN(include_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK case 340: YY_RULE_SETUP #line 606 "./util/configlexer.lex" +{ LEXOUT(("IQS ")); BEGIN(include_quoted); } + YY_BREAK +case 341: +YY_RULE_SETUP +#line 607 "./util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 0); @@ -5384,27 +5401,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 611 "./util/configlexer.lex" +#line 612 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 341: -YY_RULE_SETUP -#line 615 "./util/configlexer.lex" -{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } - YY_BREAK case 342: -/* rule 342 can match eol */ YY_RULE_SETUP #line 616 "./util/configlexer.lex" +{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } + YY_BREAK +case 343: +/* rule 343 can match eol */ +YY_RULE_SETUP +#line 617 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 343: +case 344: YY_RULE_SETUP -#line 618 "./util/configlexer.lex" +#line 619 "./util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -5414,7 +5431,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 624 "./util/configlexer.lex" +#line 625 "./util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ @@ -5429,39 +5446,39 @@ case YY_STATE_EOF(val): } YY_BREAK /* include-toplevel: directive */ -case 344: +case 345: YY_RULE_SETUP -#line 638 "./util/configlexer.lex" +#line 639 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include_toplevel); } YY_BREAK case YY_STATE_EOF(include_toplevel): -#line 641 "./util/configlexer.lex" +#line 642 "./util/configlexer.lex" { yyerror("EOF inside include_toplevel directive"); BEGIN(inc_prev); } YY_BREAK -case 345: -YY_RULE_SETUP -#line 645 "./util/configlexer.lex" -{ LEXOUT(("ITSP ")); /* ignore */ } - YY_BREAK case 346: -/* rule 346 can match eol */ YY_RULE_SETUP #line 646 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++; } +{ LEXOUT(("ITSP ")); /* ignore */ } YY_BREAK case 347: +/* rule 347 can match eol */ YY_RULE_SETUP #line 647 "./util/configlexer.lex" -{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK case 348: YY_RULE_SETUP #line 648 "./util/configlexer.lex" +{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } + YY_BREAK +case 349: +YY_RULE_SETUP +#line 649 "./util/configlexer.lex" { LEXOUT(("ITunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 1); @@ -5470,29 +5487,29 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_toplevel_quoted): -#line 654 "./util/configlexer.lex" +#line 655 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 349: -YY_RULE_SETUP -#line 658 "./util/configlexer.lex" -{ LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } - YY_BREAK case 350: -/* rule 350 can match eol */ YY_RULE_SETUP #line 659 "./util/configlexer.lex" +{ LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } + YY_BREAK +case 351: +/* rule 351 can match eol */ +YY_RULE_SETUP +#line 660 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 351: +case 352: YY_RULE_SETUP -#line 663 "./util/configlexer.lex" +#line 664 "./util/configlexer.lex" { LEXOUT(("ITQE ")); yytext[yyleng - 1] = '\0'; @@ -5501,33 +5518,33 @@ YY_RULE_SETUP return (VAR_FORCE_TOPLEVEL); } YY_BREAK -case 352: +case 353: YY_RULE_SETUP -#line 671 "./util/configlexer.lex" +#line 672 "./util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 353: +case 354: YY_RULE_SETUP -#line 675 "./util/configlexer.lex" +#line 676 "./util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 354: +case 355: YY_RULE_SETUP -#line 679 "./util/configlexer.lex" +#line 680 "./util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 355: +case 356: YY_RULE_SETUP -#line 683 "./util/configlexer.lex" +#line 684 "./util/configlexer.lex" ECHO; YY_BREAK -#line 5528 "" +#line 5545 "" case YY_END_OF_BUFFER: { @@ -5822,7 +5839,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 >= 3524 ) + if ( yy_current_state >= 3543 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -5850,11 +5867,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 >= 3524 ) + if ( yy_current_state >= 3543 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 3523); + yy_is_jam = (yy_current_state == 3542); return yy_is_jam ? 0 : yy_current_state; } @@ -6493,6 +6510,6 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 683 "./util/configlexer.lex" +#line 684 "./util/configlexer.lex" diff --git a/util/configlexer.lex b/util/configlexer.lex index 71da92422..4f6dfffba 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -347,6 +347,7 @@ rpz-action-override{COLON} { YDVAR(1, VAR_RPZ_ACTION_OVERRIDE) } rpz-cname-override{COLON} { YDVAR(1, VAR_RPZ_CNAME_OVERRIDE) } rpz-log{COLON} { YDVAR(1, VAR_RPZ_LOG) } rpz-log-name{COLON} { YDVAR(1, VAR_RPZ_LOG_NAME) } +rpz-signal-nxdomain-ra{COLON} { YDVAR(1, VAR_RPZ_SIGNAL_NXDOMAIN_RA) } zonefile{COLON} { YDVAR(1, VAR_ZONEFILE) } master{COLON} { YDVAR(1, VAR_MASTER) } primary{COLON} { YDVAR(1, VAR_MASTER) } diff --git a/util/configparser.c b/util/configparser.c index 2f1556501..fd072468a 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -457,7 +457,8 @@ extern int yydebug; VAR_NSID = 572, /* VAR_NSID */ VAR_ZONEMD_PERMISSIVE_MODE = 573, /* VAR_ZONEMD_PERMISSIVE_MODE */ VAR_ZONEMD_CHECK = 574, /* VAR_ZONEMD_CHECK */ - VAR_ZONEMD_REJECT_ABSENCE = 575 /* VAR_ZONEMD_REJECT_ABSENCE */ + VAR_ZONEMD_REJECT_ABSENCE = 575, /* VAR_ZONEMD_REJECT_ABSENCE */ + VAR_RPZ_SIGNAL_NXDOMAIN_RA = 576 /* VAR_RPZ_SIGNAL_NXDOMAIN_RA */ }; typedef enum yytokentype yytoken_kind_t; #endif @@ -783,6 +784,7 @@ extern int yydebug; #define VAR_ZONEMD_PERMISSIVE_MODE 573 #define VAR_ZONEMD_CHECK 574 #define VAR_ZONEMD_REJECT_ABSENCE 575 +#define VAR_RPZ_SIGNAL_NXDOMAIN_RA 576 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -792,7 +794,7 @@ union YYSTYPE char* str; -#line 796 "util/configparser.c" +#line 798 "util/configparser.c" }; typedef union YYSTYPE YYSTYPE; @@ -1131,352 +1133,354 @@ enum yysymbol_kind_t YYSYMBOL_VAR_ZONEMD_PERMISSIVE_MODE = 318, /* VAR_ZONEMD_PERMISSIVE_MODE */ YYSYMBOL_VAR_ZONEMD_CHECK = 319, /* VAR_ZONEMD_CHECK */ YYSYMBOL_VAR_ZONEMD_REJECT_ABSENCE = 320, /* VAR_ZONEMD_REJECT_ABSENCE */ - YYSYMBOL_YYACCEPT = 321, /* $accept */ - YYSYMBOL_toplevelvars = 322, /* toplevelvars */ - YYSYMBOL_toplevelvar = 323, /* toplevelvar */ - YYSYMBOL_force_toplevel = 324, /* force_toplevel */ - YYSYMBOL_serverstart = 325, /* serverstart */ - YYSYMBOL_contents_server = 326, /* contents_server */ - YYSYMBOL_content_server = 327, /* content_server */ - YYSYMBOL_stubstart = 328, /* stubstart */ - YYSYMBOL_contents_stub = 329, /* contents_stub */ - YYSYMBOL_content_stub = 330, /* content_stub */ - YYSYMBOL_forwardstart = 331, /* forwardstart */ - YYSYMBOL_contents_forward = 332, /* contents_forward */ - YYSYMBOL_content_forward = 333, /* content_forward */ - YYSYMBOL_viewstart = 334, /* viewstart */ - YYSYMBOL_contents_view = 335, /* contents_view */ - YYSYMBOL_content_view = 336, /* content_view */ - YYSYMBOL_authstart = 337, /* authstart */ - YYSYMBOL_contents_auth = 338, /* contents_auth */ - YYSYMBOL_content_auth = 339, /* content_auth */ - YYSYMBOL_rpz_tag = 340, /* rpz_tag */ - YYSYMBOL_rpz_action_override = 341, /* rpz_action_override */ - YYSYMBOL_rpz_cname_override = 342, /* rpz_cname_override */ - YYSYMBOL_rpz_log = 343, /* rpz_log */ - YYSYMBOL_rpz_log_name = 344, /* rpz_log_name */ - YYSYMBOL_rpzstart = 345, /* rpzstart */ - YYSYMBOL_contents_rpz = 346, /* contents_rpz */ - YYSYMBOL_content_rpz = 347, /* content_rpz */ - YYSYMBOL_server_num_threads = 348, /* server_num_threads */ - YYSYMBOL_server_verbosity = 349, /* server_verbosity */ - YYSYMBOL_server_statistics_interval = 350, /* server_statistics_interval */ - YYSYMBOL_server_statistics_cumulative = 351, /* server_statistics_cumulative */ - YYSYMBOL_server_extended_statistics = 352, /* server_extended_statistics */ - YYSYMBOL_server_shm_enable = 353, /* server_shm_enable */ - YYSYMBOL_server_shm_key = 354, /* server_shm_key */ - YYSYMBOL_server_port = 355, /* server_port */ - YYSYMBOL_server_send_client_subnet = 356, /* server_send_client_subnet */ - YYSYMBOL_server_client_subnet_zone = 357, /* server_client_subnet_zone */ - YYSYMBOL_server_client_subnet_always_forward = 358, /* server_client_subnet_always_forward */ - YYSYMBOL_server_client_subnet_opcode = 359, /* server_client_subnet_opcode */ - YYSYMBOL_server_max_client_subnet_ipv4 = 360, /* server_max_client_subnet_ipv4 */ - YYSYMBOL_server_max_client_subnet_ipv6 = 361, /* server_max_client_subnet_ipv6 */ - YYSYMBOL_server_min_client_subnet_ipv4 = 362, /* server_min_client_subnet_ipv4 */ - YYSYMBOL_server_min_client_subnet_ipv6 = 363, /* server_min_client_subnet_ipv6 */ - YYSYMBOL_server_max_ecs_tree_size_ipv4 = 364, /* server_max_ecs_tree_size_ipv4 */ - YYSYMBOL_server_max_ecs_tree_size_ipv6 = 365, /* server_max_ecs_tree_size_ipv6 */ - YYSYMBOL_server_interface = 366, /* server_interface */ - YYSYMBOL_server_outgoing_interface = 367, /* server_outgoing_interface */ - YYSYMBOL_server_outgoing_range = 368, /* server_outgoing_range */ - YYSYMBOL_server_outgoing_port_permit = 369, /* server_outgoing_port_permit */ - YYSYMBOL_server_outgoing_port_avoid = 370, /* server_outgoing_port_avoid */ - YYSYMBOL_server_outgoing_num_tcp = 371, /* server_outgoing_num_tcp */ - YYSYMBOL_server_incoming_num_tcp = 372, /* server_incoming_num_tcp */ - YYSYMBOL_server_interface_automatic = 373, /* server_interface_automatic */ - YYSYMBOL_server_do_ip4 = 374, /* server_do_ip4 */ - YYSYMBOL_server_do_ip6 = 375, /* server_do_ip6 */ - YYSYMBOL_server_do_udp = 376, /* server_do_udp */ - YYSYMBOL_server_do_tcp = 377, /* server_do_tcp */ - YYSYMBOL_server_prefer_ip4 = 378, /* server_prefer_ip4 */ - YYSYMBOL_server_prefer_ip6 = 379, /* server_prefer_ip6 */ - YYSYMBOL_server_tcp_mss = 380, /* server_tcp_mss */ - YYSYMBOL_server_outgoing_tcp_mss = 381, /* server_outgoing_tcp_mss */ - YYSYMBOL_server_tcp_idle_timeout = 382, /* server_tcp_idle_timeout */ - YYSYMBOL_server_max_reuse_tcp_queries = 383, /* server_max_reuse_tcp_queries */ - YYSYMBOL_server_tcp_reuse_timeout = 384, /* server_tcp_reuse_timeout */ - YYSYMBOL_server_tcp_auth_query_timeout = 385, /* server_tcp_auth_query_timeout */ - YYSYMBOL_server_tcp_keepalive = 386, /* server_tcp_keepalive */ - YYSYMBOL_server_tcp_keepalive_timeout = 387, /* server_tcp_keepalive_timeout */ - YYSYMBOL_server_tcp_upstream = 388, /* server_tcp_upstream */ - YYSYMBOL_server_udp_upstream_without_downstream = 389, /* server_udp_upstream_without_downstream */ - YYSYMBOL_server_ssl_upstream = 390, /* server_ssl_upstream */ - YYSYMBOL_server_ssl_service_key = 391, /* server_ssl_service_key */ - YYSYMBOL_server_ssl_service_pem = 392, /* server_ssl_service_pem */ - YYSYMBOL_server_ssl_port = 393, /* server_ssl_port */ - YYSYMBOL_server_tls_cert_bundle = 394, /* server_tls_cert_bundle */ - YYSYMBOL_server_tls_win_cert = 395, /* server_tls_win_cert */ - YYSYMBOL_server_tls_additional_port = 396, /* server_tls_additional_port */ - YYSYMBOL_server_tls_ciphers = 397, /* server_tls_ciphers */ - YYSYMBOL_server_tls_ciphersuites = 398, /* server_tls_ciphersuites */ - YYSYMBOL_server_tls_session_ticket_keys = 399, /* server_tls_session_ticket_keys */ - YYSYMBOL_server_tls_use_sni = 400, /* server_tls_use_sni */ - YYSYMBOL_server_https_port = 401, /* server_https_port */ - YYSYMBOL_server_http_endpoint = 402, /* server_http_endpoint */ - YYSYMBOL_server_http_max_streams = 403, /* server_http_max_streams */ - YYSYMBOL_server_http_query_buffer_size = 404, /* server_http_query_buffer_size */ - YYSYMBOL_server_http_response_buffer_size = 405, /* server_http_response_buffer_size */ - YYSYMBOL_server_http_nodelay = 406, /* server_http_nodelay */ - YYSYMBOL_server_http_notls_downstream = 407, /* server_http_notls_downstream */ - YYSYMBOL_server_use_systemd = 408, /* server_use_systemd */ - YYSYMBOL_server_do_daemonize = 409, /* server_do_daemonize */ - YYSYMBOL_server_use_syslog = 410, /* server_use_syslog */ - YYSYMBOL_server_log_time_ascii = 411, /* server_log_time_ascii */ - YYSYMBOL_server_log_queries = 412, /* server_log_queries */ - YYSYMBOL_server_log_replies = 413, /* server_log_replies */ - YYSYMBOL_server_log_tag_queryreply = 414, /* server_log_tag_queryreply */ - YYSYMBOL_server_log_servfail = 415, /* server_log_servfail */ - YYSYMBOL_server_log_local_actions = 416, /* server_log_local_actions */ - YYSYMBOL_server_chroot = 417, /* server_chroot */ - YYSYMBOL_server_username = 418, /* server_username */ - YYSYMBOL_server_directory = 419, /* server_directory */ - YYSYMBOL_server_logfile = 420, /* server_logfile */ - YYSYMBOL_server_pidfile = 421, /* server_pidfile */ - YYSYMBOL_server_root_hints = 422, /* server_root_hints */ - YYSYMBOL_server_dlv_anchor_file = 423, /* server_dlv_anchor_file */ - YYSYMBOL_server_dlv_anchor = 424, /* server_dlv_anchor */ - YYSYMBOL_server_auto_trust_anchor_file = 425, /* server_auto_trust_anchor_file */ - YYSYMBOL_server_trust_anchor_file = 426, /* server_trust_anchor_file */ - YYSYMBOL_server_trusted_keys_file = 427, /* server_trusted_keys_file */ - YYSYMBOL_server_trust_anchor = 428, /* server_trust_anchor */ - YYSYMBOL_server_trust_anchor_signaling = 429, /* server_trust_anchor_signaling */ - YYSYMBOL_server_root_key_sentinel = 430, /* server_root_key_sentinel */ - YYSYMBOL_server_domain_insecure = 431, /* server_domain_insecure */ - YYSYMBOL_server_hide_identity = 432, /* server_hide_identity */ - YYSYMBOL_server_hide_version = 433, /* server_hide_version */ - YYSYMBOL_server_hide_trustanchor = 434, /* server_hide_trustanchor */ - YYSYMBOL_server_hide_http_user_agent = 435, /* server_hide_http_user_agent */ - YYSYMBOL_server_identity = 436, /* server_identity */ - YYSYMBOL_server_version = 437, /* server_version */ - YYSYMBOL_server_http_user_agent = 438, /* server_http_user_agent */ - YYSYMBOL_server_nsid = 439, /* server_nsid */ - YYSYMBOL_server_so_rcvbuf = 440, /* server_so_rcvbuf */ - YYSYMBOL_server_so_sndbuf = 441, /* server_so_sndbuf */ - YYSYMBOL_server_so_reuseport = 442, /* server_so_reuseport */ - YYSYMBOL_server_ip_transparent = 443, /* server_ip_transparent */ - YYSYMBOL_server_ip_freebind = 444, /* server_ip_freebind */ - YYSYMBOL_server_ip_dscp = 445, /* server_ip_dscp */ - YYSYMBOL_server_stream_wait_size = 446, /* server_stream_wait_size */ - YYSYMBOL_server_edns_buffer_size = 447, /* server_edns_buffer_size */ - YYSYMBOL_server_msg_buffer_size = 448, /* server_msg_buffer_size */ - YYSYMBOL_server_msg_cache_size = 449, /* server_msg_cache_size */ - YYSYMBOL_server_msg_cache_slabs = 450, /* server_msg_cache_slabs */ - YYSYMBOL_server_num_queries_per_thread = 451, /* server_num_queries_per_thread */ - YYSYMBOL_server_jostle_timeout = 452, /* server_jostle_timeout */ - YYSYMBOL_server_delay_close = 453, /* server_delay_close */ - YYSYMBOL_server_udp_connect = 454, /* server_udp_connect */ - YYSYMBOL_server_unblock_lan_zones = 455, /* server_unblock_lan_zones */ - YYSYMBOL_server_insecure_lan_zones = 456, /* server_insecure_lan_zones */ - YYSYMBOL_server_rrset_cache_size = 457, /* server_rrset_cache_size */ - YYSYMBOL_server_rrset_cache_slabs = 458, /* server_rrset_cache_slabs */ - YYSYMBOL_server_infra_host_ttl = 459, /* server_infra_host_ttl */ - YYSYMBOL_server_infra_lame_ttl = 460, /* server_infra_lame_ttl */ - YYSYMBOL_server_infra_cache_numhosts = 461, /* server_infra_cache_numhosts */ - YYSYMBOL_server_infra_cache_lame_size = 462, /* server_infra_cache_lame_size */ - YYSYMBOL_server_infra_cache_slabs = 463, /* server_infra_cache_slabs */ - YYSYMBOL_server_infra_cache_min_rtt = 464, /* server_infra_cache_min_rtt */ - YYSYMBOL_server_infra_keep_probing = 465, /* server_infra_keep_probing */ - YYSYMBOL_server_target_fetch_policy = 466, /* server_target_fetch_policy */ - YYSYMBOL_server_harden_short_bufsize = 467, /* server_harden_short_bufsize */ - YYSYMBOL_server_harden_large_queries = 468, /* server_harden_large_queries */ - YYSYMBOL_server_harden_glue = 469, /* server_harden_glue */ - YYSYMBOL_server_harden_dnssec_stripped = 470, /* server_harden_dnssec_stripped */ - YYSYMBOL_server_harden_below_nxdomain = 471, /* server_harden_below_nxdomain */ - YYSYMBOL_server_harden_referral_path = 472, /* server_harden_referral_path */ - YYSYMBOL_server_harden_algo_downgrade = 473, /* server_harden_algo_downgrade */ - YYSYMBOL_server_use_caps_for_id = 474, /* server_use_caps_for_id */ - YYSYMBOL_server_caps_whitelist = 475, /* server_caps_whitelist */ - YYSYMBOL_server_private_address = 476, /* server_private_address */ - YYSYMBOL_server_private_domain = 477, /* server_private_domain */ - YYSYMBOL_server_prefetch = 478, /* server_prefetch */ - YYSYMBOL_server_prefetch_key = 479, /* server_prefetch_key */ - YYSYMBOL_server_deny_any = 480, /* server_deny_any */ - YYSYMBOL_server_unwanted_reply_threshold = 481, /* server_unwanted_reply_threshold */ - YYSYMBOL_server_do_not_query_address = 482, /* server_do_not_query_address */ - YYSYMBOL_server_do_not_query_localhost = 483, /* server_do_not_query_localhost */ - YYSYMBOL_server_access_control = 484, /* server_access_control */ - YYSYMBOL_server_module_conf = 485, /* server_module_conf */ - YYSYMBOL_server_val_override_date = 486, /* server_val_override_date */ - YYSYMBOL_server_val_sig_skew_min = 487, /* server_val_sig_skew_min */ - YYSYMBOL_server_val_sig_skew_max = 488, /* server_val_sig_skew_max */ - YYSYMBOL_server_val_max_restart = 489, /* server_val_max_restart */ - YYSYMBOL_server_cache_max_ttl = 490, /* server_cache_max_ttl */ - YYSYMBOL_server_cache_max_negative_ttl = 491, /* server_cache_max_negative_ttl */ - YYSYMBOL_server_cache_min_ttl = 492, /* server_cache_min_ttl */ - YYSYMBOL_server_bogus_ttl = 493, /* server_bogus_ttl */ - YYSYMBOL_server_val_clean_additional = 494, /* server_val_clean_additional */ - YYSYMBOL_server_val_permissive_mode = 495, /* server_val_permissive_mode */ - YYSYMBOL_server_aggressive_nsec = 496, /* server_aggressive_nsec */ - YYSYMBOL_server_ignore_cd_flag = 497, /* server_ignore_cd_flag */ - YYSYMBOL_server_serve_expired = 498, /* server_serve_expired */ - YYSYMBOL_server_serve_expired_ttl = 499, /* server_serve_expired_ttl */ - YYSYMBOL_server_serve_expired_ttl_reset = 500, /* server_serve_expired_ttl_reset */ - YYSYMBOL_server_serve_expired_reply_ttl = 501, /* server_serve_expired_reply_ttl */ - YYSYMBOL_server_serve_expired_client_timeout = 502, /* server_serve_expired_client_timeout */ - YYSYMBOL_server_serve_original_ttl = 503, /* server_serve_original_ttl */ - YYSYMBOL_server_fake_dsa = 504, /* server_fake_dsa */ - YYSYMBOL_server_fake_sha1 = 505, /* server_fake_sha1 */ - YYSYMBOL_server_val_log_level = 506, /* server_val_log_level */ - YYSYMBOL_server_val_nsec3_keysize_iterations = 507, /* server_val_nsec3_keysize_iterations */ - YYSYMBOL_server_zonemd_permissive_mode = 508, /* server_zonemd_permissive_mode */ - YYSYMBOL_server_add_holddown = 509, /* server_add_holddown */ - YYSYMBOL_server_del_holddown = 510, /* server_del_holddown */ - YYSYMBOL_server_keep_missing = 511, /* server_keep_missing */ - YYSYMBOL_server_permit_small_holddown = 512, /* server_permit_small_holddown */ - YYSYMBOL_server_key_cache_size = 513, /* server_key_cache_size */ - YYSYMBOL_server_key_cache_slabs = 514, /* server_key_cache_slabs */ - YYSYMBOL_server_neg_cache_size = 515, /* server_neg_cache_size */ - YYSYMBOL_server_local_zone = 516, /* server_local_zone */ - YYSYMBOL_server_local_data = 517, /* server_local_data */ - YYSYMBOL_server_local_data_ptr = 518, /* server_local_data_ptr */ - YYSYMBOL_server_minimal_responses = 519, /* server_minimal_responses */ - YYSYMBOL_server_rrset_roundrobin = 520, /* server_rrset_roundrobin */ - YYSYMBOL_server_unknown_server_time_limit = 521, /* server_unknown_server_time_limit */ - YYSYMBOL_server_max_udp_size = 522, /* server_max_udp_size */ - YYSYMBOL_server_dns64_prefix = 523, /* server_dns64_prefix */ - YYSYMBOL_server_dns64_synthall = 524, /* server_dns64_synthall */ - YYSYMBOL_server_dns64_ignore_aaaa = 525, /* server_dns64_ignore_aaaa */ - YYSYMBOL_server_define_tag = 526, /* server_define_tag */ - YYSYMBOL_server_local_zone_tag = 527, /* server_local_zone_tag */ - YYSYMBOL_server_access_control_tag = 528, /* server_access_control_tag */ - YYSYMBOL_server_access_control_tag_action = 529, /* server_access_control_tag_action */ - YYSYMBOL_server_access_control_tag_data = 530, /* server_access_control_tag_data */ - YYSYMBOL_server_local_zone_override = 531, /* server_local_zone_override */ - YYSYMBOL_server_access_control_view = 532, /* server_access_control_view */ - YYSYMBOL_server_response_ip_tag = 533, /* server_response_ip_tag */ - YYSYMBOL_server_ip_ratelimit = 534, /* server_ip_ratelimit */ - YYSYMBOL_server_ratelimit = 535, /* server_ratelimit */ - YYSYMBOL_server_ip_ratelimit_size = 536, /* server_ip_ratelimit_size */ - YYSYMBOL_server_ratelimit_size = 537, /* server_ratelimit_size */ - YYSYMBOL_server_ip_ratelimit_slabs = 538, /* server_ip_ratelimit_slabs */ - YYSYMBOL_server_ratelimit_slabs = 539, /* server_ratelimit_slabs */ - YYSYMBOL_server_ratelimit_for_domain = 540, /* server_ratelimit_for_domain */ - YYSYMBOL_server_ratelimit_below_domain = 541, /* server_ratelimit_below_domain */ - YYSYMBOL_server_ip_ratelimit_factor = 542, /* server_ip_ratelimit_factor */ - YYSYMBOL_server_ratelimit_factor = 543, /* server_ratelimit_factor */ - YYSYMBOL_server_outbound_msg_retry = 544, /* server_outbound_msg_retry */ - YYSYMBOL_server_low_rtt = 545, /* server_low_rtt */ - YYSYMBOL_server_fast_server_num = 546, /* server_fast_server_num */ - YYSYMBOL_server_fast_server_permil = 547, /* server_fast_server_permil */ - YYSYMBOL_server_qname_minimisation = 548, /* server_qname_minimisation */ - YYSYMBOL_server_qname_minimisation_strict = 549, /* server_qname_minimisation_strict */ - YYSYMBOL_server_pad_responses = 550, /* server_pad_responses */ - YYSYMBOL_server_pad_responses_block_size = 551, /* server_pad_responses_block_size */ - YYSYMBOL_server_pad_queries = 552, /* server_pad_queries */ - YYSYMBOL_server_pad_queries_block_size = 553, /* server_pad_queries_block_size */ - YYSYMBOL_server_ipsecmod_enabled = 554, /* server_ipsecmod_enabled */ - YYSYMBOL_server_ipsecmod_ignore_bogus = 555, /* server_ipsecmod_ignore_bogus */ - YYSYMBOL_server_ipsecmod_hook = 556, /* server_ipsecmod_hook */ - YYSYMBOL_server_ipsecmod_max_ttl = 557, /* server_ipsecmod_max_ttl */ - YYSYMBOL_server_ipsecmod_whitelist = 558, /* server_ipsecmod_whitelist */ - YYSYMBOL_server_ipsecmod_strict = 559, /* server_ipsecmod_strict */ - YYSYMBOL_server_edns_client_string = 560, /* server_edns_client_string */ - YYSYMBOL_server_edns_client_string_opcode = 561, /* server_edns_client_string_opcode */ - YYSYMBOL_stub_name = 562, /* stub_name */ - YYSYMBOL_stub_host = 563, /* stub_host */ - YYSYMBOL_stub_addr = 564, /* stub_addr */ - YYSYMBOL_stub_first = 565, /* stub_first */ - YYSYMBOL_stub_no_cache = 566, /* stub_no_cache */ - YYSYMBOL_stub_ssl_upstream = 567, /* stub_ssl_upstream */ - YYSYMBOL_stub_tcp_upstream = 568, /* stub_tcp_upstream */ - YYSYMBOL_stub_prime = 569, /* stub_prime */ - YYSYMBOL_forward_name = 570, /* forward_name */ - YYSYMBOL_forward_host = 571, /* forward_host */ - YYSYMBOL_forward_addr = 572, /* forward_addr */ - YYSYMBOL_forward_first = 573, /* forward_first */ - YYSYMBOL_forward_no_cache = 574, /* forward_no_cache */ - YYSYMBOL_forward_ssl_upstream = 575, /* forward_ssl_upstream */ - YYSYMBOL_forward_tcp_upstream = 576, /* forward_tcp_upstream */ - YYSYMBOL_auth_name = 577, /* auth_name */ - YYSYMBOL_auth_zonefile = 578, /* auth_zonefile */ - YYSYMBOL_auth_master = 579, /* auth_master */ - YYSYMBOL_auth_url = 580, /* auth_url */ - YYSYMBOL_auth_allow_notify = 581, /* auth_allow_notify */ - YYSYMBOL_auth_zonemd_check = 582, /* auth_zonemd_check */ - YYSYMBOL_auth_zonemd_reject_absence = 583, /* auth_zonemd_reject_absence */ - YYSYMBOL_auth_for_downstream = 584, /* auth_for_downstream */ - YYSYMBOL_auth_for_upstream = 585, /* auth_for_upstream */ - YYSYMBOL_auth_fallback_enabled = 586, /* auth_fallback_enabled */ - YYSYMBOL_view_name = 587, /* view_name */ - YYSYMBOL_view_local_zone = 588, /* view_local_zone */ - YYSYMBOL_view_response_ip = 589, /* view_response_ip */ - YYSYMBOL_view_response_ip_data = 590, /* view_response_ip_data */ - YYSYMBOL_view_local_data = 591, /* view_local_data */ - YYSYMBOL_view_local_data_ptr = 592, /* view_local_data_ptr */ - YYSYMBOL_view_first = 593, /* view_first */ - YYSYMBOL_rcstart = 594, /* rcstart */ - YYSYMBOL_contents_rc = 595, /* contents_rc */ - YYSYMBOL_content_rc = 596, /* content_rc */ - YYSYMBOL_rc_control_enable = 597, /* rc_control_enable */ - YYSYMBOL_rc_control_port = 598, /* rc_control_port */ - YYSYMBOL_rc_control_interface = 599, /* rc_control_interface */ - YYSYMBOL_rc_control_use_cert = 600, /* rc_control_use_cert */ - YYSYMBOL_rc_server_key_file = 601, /* rc_server_key_file */ - YYSYMBOL_rc_server_cert_file = 602, /* rc_server_cert_file */ - YYSYMBOL_rc_control_key_file = 603, /* rc_control_key_file */ - YYSYMBOL_rc_control_cert_file = 604, /* rc_control_cert_file */ - YYSYMBOL_dtstart = 605, /* dtstart */ - YYSYMBOL_contents_dt = 606, /* contents_dt */ - YYSYMBOL_content_dt = 607, /* content_dt */ - YYSYMBOL_dt_dnstap_enable = 608, /* dt_dnstap_enable */ - YYSYMBOL_dt_dnstap_bidirectional = 609, /* dt_dnstap_bidirectional */ - YYSYMBOL_dt_dnstap_socket_path = 610, /* dt_dnstap_socket_path */ - YYSYMBOL_dt_dnstap_ip = 611, /* dt_dnstap_ip */ - YYSYMBOL_dt_dnstap_tls = 612, /* dt_dnstap_tls */ - YYSYMBOL_dt_dnstap_tls_server_name = 613, /* dt_dnstap_tls_server_name */ - YYSYMBOL_dt_dnstap_tls_cert_bundle = 614, /* dt_dnstap_tls_cert_bundle */ - YYSYMBOL_dt_dnstap_tls_client_key_file = 615, /* dt_dnstap_tls_client_key_file */ - YYSYMBOL_dt_dnstap_tls_client_cert_file = 616, /* dt_dnstap_tls_client_cert_file */ - YYSYMBOL_dt_dnstap_send_identity = 617, /* dt_dnstap_send_identity */ - YYSYMBOL_dt_dnstap_send_version = 618, /* dt_dnstap_send_version */ - YYSYMBOL_dt_dnstap_identity = 619, /* dt_dnstap_identity */ - YYSYMBOL_dt_dnstap_version = 620, /* dt_dnstap_version */ - YYSYMBOL_dt_dnstap_log_resolver_query_messages = 621, /* dt_dnstap_log_resolver_query_messages */ - YYSYMBOL_dt_dnstap_log_resolver_response_messages = 622, /* dt_dnstap_log_resolver_response_messages */ - YYSYMBOL_dt_dnstap_log_client_query_messages = 623, /* dt_dnstap_log_client_query_messages */ - YYSYMBOL_dt_dnstap_log_client_response_messages = 624, /* dt_dnstap_log_client_response_messages */ - YYSYMBOL_dt_dnstap_log_forwarder_query_messages = 625, /* dt_dnstap_log_forwarder_query_messages */ - YYSYMBOL_dt_dnstap_log_forwarder_response_messages = 626, /* dt_dnstap_log_forwarder_response_messages */ - YYSYMBOL_pythonstart = 627, /* pythonstart */ - YYSYMBOL_contents_py = 628, /* contents_py */ - YYSYMBOL_content_py = 629, /* content_py */ - YYSYMBOL_py_script = 630, /* py_script */ - YYSYMBOL_dynlibstart = 631, /* dynlibstart */ - YYSYMBOL_contents_dl = 632, /* contents_dl */ - YYSYMBOL_content_dl = 633, /* content_dl */ - YYSYMBOL_dl_file = 634, /* dl_file */ - YYSYMBOL_server_disable_dnssec_lame_check = 635, /* server_disable_dnssec_lame_check */ - YYSYMBOL_server_log_identity = 636, /* server_log_identity */ - YYSYMBOL_server_response_ip = 637, /* server_response_ip */ - YYSYMBOL_server_response_ip_data = 638, /* server_response_ip_data */ - YYSYMBOL_dnscstart = 639, /* dnscstart */ - YYSYMBOL_contents_dnsc = 640, /* contents_dnsc */ - YYSYMBOL_content_dnsc = 641, /* content_dnsc */ - YYSYMBOL_dnsc_dnscrypt_enable = 642, /* dnsc_dnscrypt_enable */ - YYSYMBOL_dnsc_dnscrypt_port = 643, /* dnsc_dnscrypt_port */ - YYSYMBOL_dnsc_dnscrypt_provider = 644, /* dnsc_dnscrypt_provider */ - YYSYMBOL_dnsc_dnscrypt_provider_cert = 645, /* dnsc_dnscrypt_provider_cert */ - YYSYMBOL_dnsc_dnscrypt_provider_cert_rotated = 646, /* dnsc_dnscrypt_provider_cert_rotated */ - YYSYMBOL_dnsc_dnscrypt_secret_key = 647, /* dnsc_dnscrypt_secret_key */ - YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_size = 648, /* dnsc_dnscrypt_shared_secret_cache_size */ - YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_slabs = 649, /* dnsc_dnscrypt_shared_secret_cache_slabs */ - YYSYMBOL_dnsc_dnscrypt_nonce_cache_size = 650, /* dnsc_dnscrypt_nonce_cache_size */ - YYSYMBOL_dnsc_dnscrypt_nonce_cache_slabs = 651, /* dnsc_dnscrypt_nonce_cache_slabs */ - YYSYMBOL_cachedbstart = 652, /* cachedbstart */ - YYSYMBOL_contents_cachedb = 653, /* contents_cachedb */ - YYSYMBOL_content_cachedb = 654, /* content_cachedb */ - YYSYMBOL_cachedb_backend_name = 655, /* cachedb_backend_name */ - YYSYMBOL_cachedb_secret_seed = 656, /* cachedb_secret_seed */ - YYSYMBOL_redis_server_host = 657, /* redis_server_host */ - YYSYMBOL_redis_server_port = 658, /* redis_server_port */ - YYSYMBOL_redis_timeout = 659, /* redis_timeout */ - YYSYMBOL_redis_expire_records = 660, /* redis_expire_records */ - YYSYMBOL_server_tcp_connection_limit = 661, /* server_tcp_connection_limit */ - YYSYMBOL_ipsetstart = 662, /* ipsetstart */ - YYSYMBOL_contents_ipset = 663, /* contents_ipset */ - YYSYMBOL_content_ipset = 664, /* content_ipset */ - YYSYMBOL_ipset_name_v4 = 665, /* ipset_name_v4 */ - YYSYMBOL_ipset_name_v6 = 666 /* ipset_name_v6 */ + YYSYMBOL_VAR_RPZ_SIGNAL_NXDOMAIN_RA = 321, /* VAR_RPZ_SIGNAL_NXDOMAIN_RA */ + YYSYMBOL_YYACCEPT = 322, /* $accept */ + YYSYMBOL_toplevelvars = 323, /* toplevelvars */ + YYSYMBOL_toplevelvar = 324, /* toplevelvar */ + YYSYMBOL_force_toplevel = 325, /* force_toplevel */ + YYSYMBOL_serverstart = 326, /* serverstart */ + YYSYMBOL_contents_server = 327, /* contents_server */ + YYSYMBOL_content_server = 328, /* content_server */ + YYSYMBOL_stubstart = 329, /* stubstart */ + YYSYMBOL_contents_stub = 330, /* contents_stub */ + YYSYMBOL_content_stub = 331, /* content_stub */ + YYSYMBOL_forwardstart = 332, /* forwardstart */ + YYSYMBOL_contents_forward = 333, /* contents_forward */ + YYSYMBOL_content_forward = 334, /* content_forward */ + YYSYMBOL_viewstart = 335, /* viewstart */ + YYSYMBOL_contents_view = 336, /* contents_view */ + YYSYMBOL_content_view = 337, /* content_view */ + YYSYMBOL_authstart = 338, /* authstart */ + YYSYMBOL_contents_auth = 339, /* contents_auth */ + YYSYMBOL_content_auth = 340, /* content_auth */ + YYSYMBOL_rpz_tag = 341, /* rpz_tag */ + YYSYMBOL_rpz_action_override = 342, /* rpz_action_override */ + YYSYMBOL_rpz_cname_override = 343, /* rpz_cname_override */ + YYSYMBOL_rpz_log = 344, /* rpz_log */ + YYSYMBOL_rpz_log_name = 345, /* rpz_log_name */ + YYSYMBOL_rpz_signal_nxdomain_ra = 346, /* rpz_signal_nxdomain_ra */ + YYSYMBOL_rpzstart = 347, /* rpzstart */ + YYSYMBOL_contents_rpz = 348, /* contents_rpz */ + YYSYMBOL_content_rpz = 349, /* content_rpz */ + YYSYMBOL_server_num_threads = 350, /* server_num_threads */ + YYSYMBOL_server_verbosity = 351, /* server_verbosity */ + YYSYMBOL_server_statistics_interval = 352, /* server_statistics_interval */ + YYSYMBOL_server_statistics_cumulative = 353, /* server_statistics_cumulative */ + YYSYMBOL_server_extended_statistics = 354, /* server_extended_statistics */ + YYSYMBOL_server_shm_enable = 355, /* server_shm_enable */ + YYSYMBOL_server_shm_key = 356, /* server_shm_key */ + YYSYMBOL_server_port = 357, /* server_port */ + YYSYMBOL_server_send_client_subnet = 358, /* server_send_client_subnet */ + YYSYMBOL_server_client_subnet_zone = 359, /* server_client_subnet_zone */ + YYSYMBOL_server_client_subnet_always_forward = 360, /* server_client_subnet_always_forward */ + YYSYMBOL_server_client_subnet_opcode = 361, /* server_client_subnet_opcode */ + YYSYMBOL_server_max_client_subnet_ipv4 = 362, /* server_max_client_subnet_ipv4 */ + YYSYMBOL_server_max_client_subnet_ipv6 = 363, /* server_max_client_subnet_ipv6 */ + YYSYMBOL_server_min_client_subnet_ipv4 = 364, /* server_min_client_subnet_ipv4 */ + YYSYMBOL_server_min_client_subnet_ipv6 = 365, /* server_min_client_subnet_ipv6 */ + YYSYMBOL_server_max_ecs_tree_size_ipv4 = 366, /* server_max_ecs_tree_size_ipv4 */ + YYSYMBOL_server_max_ecs_tree_size_ipv6 = 367, /* server_max_ecs_tree_size_ipv6 */ + YYSYMBOL_server_interface = 368, /* server_interface */ + YYSYMBOL_server_outgoing_interface = 369, /* server_outgoing_interface */ + YYSYMBOL_server_outgoing_range = 370, /* server_outgoing_range */ + YYSYMBOL_server_outgoing_port_permit = 371, /* server_outgoing_port_permit */ + YYSYMBOL_server_outgoing_port_avoid = 372, /* server_outgoing_port_avoid */ + YYSYMBOL_server_outgoing_num_tcp = 373, /* server_outgoing_num_tcp */ + YYSYMBOL_server_incoming_num_tcp = 374, /* server_incoming_num_tcp */ + YYSYMBOL_server_interface_automatic = 375, /* server_interface_automatic */ + YYSYMBOL_server_do_ip4 = 376, /* server_do_ip4 */ + YYSYMBOL_server_do_ip6 = 377, /* server_do_ip6 */ + YYSYMBOL_server_do_udp = 378, /* server_do_udp */ + YYSYMBOL_server_do_tcp = 379, /* server_do_tcp */ + YYSYMBOL_server_prefer_ip4 = 380, /* server_prefer_ip4 */ + YYSYMBOL_server_prefer_ip6 = 381, /* server_prefer_ip6 */ + YYSYMBOL_server_tcp_mss = 382, /* server_tcp_mss */ + YYSYMBOL_server_outgoing_tcp_mss = 383, /* server_outgoing_tcp_mss */ + YYSYMBOL_server_tcp_idle_timeout = 384, /* server_tcp_idle_timeout */ + YYSYMBOL_server_max_reuse_tcp_queries = 385, /* server_max_reuse_tcp_queries */ + YYSYMBOL_server_tcp_reuse_timeout = 386, /* server_tcp_reuse_timeout */ + YYSYMBOL_server_tcp_auth_query_timeout = 387, /* server_tcp_auth_query_timeout */ + YYSYMBOL_server_tcp_keepalive = 388, /* server_tcp_keepalive */ + YYSYMBOL_server_tcp_keepalive_timeout = 389, /* server_tcp_keepalive_timeout */ + YYSYMBOL_server_tcp_upstream = 390, /* server_tcp_upstream */ + YYSYMBOL_server_udp_upstream_without_downstream = 391, /* server_udp_upstream_without_downstream */ + YYSYMBOL_server_ssl_upstream = 392, /* server_ssl_upstream */ + YYSYMBOL_server_ssl_service_key = 393, /* server_ssl_service_key */ + YYSYMBOL_server_ssl_service_pem = 394, /* server_ssl_service_pem */ + YYSYMBOL_server_ssl_port = 395, /* server_ssl_port */ + YYSYMBOL_server_tls_cert_bundle = 396, /* server_tls_cert_bundle */ + YYSYMBOL_server_tls_win_cert = 397, /* server_tls_win_cert */ + YYSYMBOL_server_tls_additional_port = 398, /* server_tls_additional_port */ + YYSYMBOL_server_tls_ciphers = 399, /* server_tls_ciphers */ + YYSYMBOL_server_tls_ciphersuites = 400, /* server_tls_ciphersuites */ + YYSYMBOL_server_tls_session_ticket_keys = 401, /* server_tls_session_ticket_keys */ + YYSYMBOL_server_tls_use_sni = 402, /* server_tls_use_sni */ + YYSYMBOL_server_https_port = 403, /* server_https_port */ + YYSYMBOL_server_http_endpoint = 404, /* server_http_endpoint */ + YYSYMBOL_server_http_max_streams = 405, /* server_http_max_streams */ + YYSYMBOL_server_http_query_buffer_size = 406, /* server_http_query_buffer_size */ + YYSYMBOL_server_http_response_buffer_size = 407, /* server_http_response_buffer_size */ + YYSYMBOL_server_http_nodelay = 408, /* server_http_nodelay */ + YYSYMBOL_server_http_notls_downstream = 409, /* server_http_notls_downstream */ + YYSYMBOL_server_use_systemd = 410, /* server_use_systemd */ + YYSYMBOL_server_do_daemonize = 411, /* server_do_daemonize */ + YYSYMBOL_server_use_syslog = 412, /* server_use_syslog */ + YYSYMBOL_server_log_time_ascii = 413, /* server_log_time_ascii */ + YYSYMBOL_server_log_queries = 414, /* server_log_queries */ + YYSYMBOL_server_log_replies = 415, /* server_log_replies */ + YYSYMBOL_server_log_tag_queryreply = 416, /* server_log_tag_queryreply */ + YYSYMBOL_server_log_servfail = 417, /* server_log_servfail */ + YYSYMBOL_server_log_local_actions = 418, /* server_log_local_actions */ + YYSYMBOL_server_chroot = 419, /* server_chroot */ + YYSYMBOL_server_username = 420, /* server_username */ + YYSYMBOL_server_directory = 421, /* server_directory */ + YYSYMBOL_server_logfile = 422, /* server_logfile */ + YYSYMBOL_server_pidfile = 423, /* server_pidfile */ + YYSYMBOL_server_root_hints = 424, /* server_root_hints */ + YYSYMBOL_server_dlv_anchor_file = 425, /* server_dlv_anchor_file */ + YYSYMBOL_server_dlv_anchor = 426, /* server_dlv_anchor */ + YYSYMBOL_server_auto_trust_anchor_file = 427, /* server_auto_trust_anchor_file */ + YYSYMBOL_server_trust_anchor_file = 428, /* server_trust_anchor_file */ + YYSYMBOL_server_trusted_keys_file = 429, /* server_trusted_keys_file */ + YYSYMBOL_server_trust_anchor = 430, /* server_trust_anchor */ + YYSYMBOL_server_trust_anchor_signaling = 431, /* server_trust_anchor_signaling */ + YYSYMBOL_server_root_key_sentinel = 432, /* server_root_key_sentinel */ + YYSYMBOL_server_domain_insecure = 433, /* server_domain_insecure */ + YYSYMBOL_server_hide_identity = 434, /* server_hide_identity */ + YYSYMBOL_server_hide_version = 435, /* server_hide_version */ + YYSYMBOL_server_hide_trustanchor = 436, /* server_hide_trustanchor */ + YYSYMBOL_server_hide_http_user_agent = 437, /* server_hide_http_user_agent */ + YYSYMBOL_server_identity = 438, /* server_identity */ + YYSYMBOL_server_version = 439, /* server_version */ + YYSYMBOL_server_http_user_agent = 440, /* server_http_user_agent */ + YYSYMBOL_server_nsid = 441, /* server_nsid */ + YYSYMBOL_server_so_rcvbuf = 442, /* server_so_rcvbuf */ + YYSYMBOL_server_so_sndbuf = 443, /* server_so_sndbuf */ + YYSYMBOL_server_so_reuseport = 444, /* server_so_reuseport */ + YYSYMBOL_server_ip_transparent = 445, /* server_ip_transparent */ + YYSYMBOL_server_ip_freebind = 446, /* server_ip_freebind */ + YYSYMBOL_server_ip_dscp = 447, /* server_ip_dscp */ + YYSYMBOL_server_stream_wait_size = 448, /* server_stream_wait_size */ + YYSYMBOL_server_edns_buffer_size = 449, /* server_edns_buffer_size */ + YYSYMBOL_server_msg_buffer_size = 450, /* server_msg_buffer_size */ + YYSYMBOL_server_msg_cache_size = 451, /* server_msg_cache_size */ + YYSYMBOL_server_msg_cache_slabs = 452, /* server_msg_cache_slabs */ + YYSYMBOL_server_num_queries_per_thread = 453, /* server_num_queries_per_thread */ + YYSYMBOL_server_jostle_timeout = 454, /* server_jostle_timeout */ + YYSYMBOL_server_delay_close = 455, /* server_delay_close */ + YYSYMBOL_server_udp_connect = 456, /* server_udp_connect */ + YYSYMBOL_server_unblock_lan_zones = 457, /* server_unblock_lan_zones */ + YYSYMBOL_server_insecure_lan_zones = 458, /* server_insecure_lan_zones */ + YYSYMBOL_server_rrset_cache_size = 459, /* server_rrset_cache_size */ + YYSYMBOL_server_rrset_cache_slabs = 460, /* server_rrset_cache_slabs */ + YYSYMBOL_server_infra_host_ttl = 461, /* server_infra_host_ttl */ + YYSYMBOL_server_infra_lame_ttl = 462, /* server_infra_lame_ttl */ + YYSYMBOL_server_infra_cache_numhosts = 463, /* server_infra_cache_numhosts */ + YYSYMBOL_server_infra_cache_lame_size = 464, /* server_infra_cache_lame_size */ + YYSYMBOL_server_infra_cache_slabs = 465, /* server_infra_cache_slabs */ + YYSYMBOL_server_infra_cache_min_rtt = 466, /* server_infra_cache_min_rtt */ + YYSYMBOL_server_infra_keep_probing = 467, /* server_infra_keep_probing */ + YYSYMBOL_server_target_fetch_policy = 468, /* server_target_fetch_policy */ + YYSYMBOL_server_harden_short_bufsize = 469, /* server_harden_short_bufsize */ + YYSYMBOL_server_harden_large_queries = 470, /* server_harden_large_queries */ + YYSYMBOL_server_harden_glue = 471, /* server_harden_glue */ + YYSYMBOL_server_harden_dnssec_stripped = 472, /* server_harden_dnssec_stripped */ + YYSYMBOL_server_harden_below_nxdomain = 473, /* server_harden_below_nxdomain */ + YYSYMBOL_server_harden_referral_path = 474, /* server_harden_referral_path */ + YYSYMBOL_server_harden_algo_downgrade = 475, /* server_harden_algo_downgrade */ + YYSYMBOL_server_use_caps_for_id = 476, /* server_use_caps_for_id */ + YYSYMBOL_server_caps_whitelist = 477, /* server_caps_whitelist */ + YYSYMBOL_server_private_address = 478, /* server_private_address */ + YYSYMBOL_server_private_domain = 479, /* server_private_domain */ + YYSYMBOL_server_prefetch = 480, /* server_prefetch */ + YYSYMBOL_server_prefetch_key = 481, /* server_prefetch_key */ + YYSYMBOL_server_deny_any = 482, /* server_deny_any */ + YYSYMBOL_server_unwanted_reply_threshold = 483, /* server_unwanted_reply_threshold */ + YYSYMBOL_server_do_not_query_address = 484, /* server_do_not_query_address */ + YYSYMBOL_server_do_not_query_localhost = 485, /* server_do_not_query_localhost */ + YYSYMBOL_server_access_control = 486, /* server_access_control */ + YYSYMBOL_server_module_conf = 487, /* server_module_conf */ + YYSYMBOL_server_val_override_date = 488, /* server_val_override_date */ + YYSYMBOL_server_val_sig_skew_min = 489, /* server_val_sig_skew_min */ + YYSYMBOL_server_val_sig_skew_max = 490, /* server_val_sig_skew_max */ + YYSYMBOL_server_val_max_restart = 491, /* server_val_max_restart */ + YYSYMBOL_server_cache_max_ttl = 492, /* server_cache_max_ttl */ + YYSYMBOL_server_cache_max_negative_ttl = 493, /* server_cache_max_negative_ttl */ + YYSYMBOL_server_cache_min_ttl = 494, /* server_cache_min_ttl */ + YYSYMBOL_server_bogus_ttl = 495, /* server_bogus_ttl */ + YYSYMBOL_server_val_clean_additional = 496, /* server_val_clean_additional */ + YYSYMBOL_server_val_permissive_mode = 497, /* server_val_permissive_mode */ + YYSYMBOL_server_aggressive_nsec = 498, /* server_aggressive_nsec */ + YYSYMBOL_server_ignore_cd_flag = 499, /* server_ignore_cd_flag */ + YYSYMBOL_server_serve_expired = 500, /* server_serve_expired */ + YYSYMBOL_server_serve_expired_ttl = 501, /* server_serve_expired_ttl */ + YYSYMBOL_server_serve_expired_ttl_reset = 502, /* server_serve_expired_ttl_reset */ + YYSYMBOL_server_serve_expired_reply_ttl = 503, /* server_serve_expired_reply_ttl */ + YYSYMBOL_server_serve_expired_client_timeout = 504, /* server_serve_expired_client_timeout */ + YYSYMBOL_server_serve_original_ttl = 505, /* server_serve_original_ttl */ + YYSYMBOL_server_fake_dsa = 506, /* server_fake_dsa */ + YYSYMBOL_server_fake_sha1 = 507, /* server_fake_sha1 */ + YYSYMBOL_server_val_log_level = 508, /* server_val_log_level */ + YYSYMBOL_server_val_nsec3_keysize_iterations = 509, /* server_val_nsec3_keysize_iterations */ + YYSYMBOL_server_zonemd_permissive_mode = 510, /* server_zonemd_permissive_mode */ + YYSYMBOL_server_add_holddown = 511, /* server_add_holddown */ + YYSYMBOL_server_del_holddown = 512, /* server_del_holddown */ + YYSYMBOL_server_keep_missing = 513, /* server_keep_missing */ + YYSYMBOL_server_permit_small_holddown = 514, /* server_permit_small_holddown */ + YYSYMBOL_server_key_cache_size = 515, /* server_key_cache_size */ + YYSYMBOL_server_key_cache_slabs = 516, /* server_key_cache_slabs */ + YYSYMBOL_server_neg_cache_size = 517, /* server_neg_cache_size */ + YYSYMBOL_server_local_zone = 518, /* server_local_zone */ + YYSYMBOL_server_local_data = 519, /* server_local_data */ + YYSYMBOL_server_local_data_ptr = 520, /* server_local_data_ptr */ + YYSYMBOL_server_minimal_responses = 521, /* server_minimal_responses */ + YYSYMBOL_server_rrset_roundrobin = 522, /* server_rrset_roundrobin */ + YYSYMBOL_server_unknown_server_time_limit = 523, /* server_unknown_server_time_limit */ + YYSYMBOL_server_max_udp_size = 524, /* server_max_udp_size */ + YYSYMBOL_server_dns64_prefix = 525, /* server_dns64_prefix */ + YYSYMBOL_server_dns64_synthall = 526, /* server_dns64_synthall */ + YYSYMBOL_server_dns64_ignore_aaaa = 527, /* server_dns64_ignore_aaaa */ + YYSYMBOL_server_define_tag = 528, /* server_define_tag */ + YYSYMBOL_server_local_zone_tag = 529, /* server_local_zone_tag */ + YYSYMBOL_server_access_control_tag = 530, /* server_access_control_tag */ + YYSYMBOL_server_access_control_tag_action = 531, /* server_access_control_tag_action */ + YYSYMBOL_server_access_control_tag_data = 532, /* server_access_control_tag_data */ + YYSYMBOL_server_local_zone_override = 533, /* server_local_zone_override */ + YYSYMBOL_server_access_control_view = 534, /* server_access_control_view */ + YYSYMBOL_server_response_ip_tag = 535, /* server_response_ip_tag */ + YYSYMBOL_server_ip_ratelimit = 536, /* server_ip_ratelimit */ + YYSYMBOL_server_ratelimit = 537, /* server_ratelimit */ + YYSYMBOL_server_ip_ratelimit_size = 538, /* server_ip_ratelimit_size */ + YYSYMBOL_server_ratelimit_size = 539, /* server_ratelimit_size */ + YYSYMBOL_server_ip_ratelimit_slabs = 540, /* server_ip_ratelimit_slabs */ + YYSYMBOL_server_ratelimit_slabs = 541, /* server_ratelimit_slabs */ + YYSYMBOL_server_ratelimit_for_domain = 542, /* server_ratelimit_for_domain */ + YYSYMBOL_server_ratelimit_below_domain = 543, /* server_ratelimit_below_domain */ + YYSYMBOL_server_ip_ratelimit_factor = 544, /* server_ip_ratelimit_factor */ + YYSYMBOL_server_ratelimit_factor = 545, /* server_ratelimit_factor */ + YYSYMBOL_server_outbound_msg_retry = 546, /* server_outbound_msg_retry */ + YYSYMBOL_server_low_rtt = 547, /* server_low_rtt */ + YYSYMBOL_server_fast_server_num = 548, /* server_fast_server_num */ + YYSYMBOL_server_fast_server_permil = 549, /* server_fast_server_permil */ + YYSYMBOL_server_qname_minimisation = 550, /* server_qname_minimisation */ + YYSYMBOL_server_qname_minimisation_strict = 551, /* server_qname_minimisation_strict */ + YYSYMBOL_server_pad_responses = 552, /* server_pad_responses */ + YYSYMBOL_server_pad_responses_block_size = 553, /* server_pad_responses_block_size */ + YYSYMBOL_server_pad_queries = 554, /* server_pad_queries */ + YYSYMBOL_server_pad_queries_block_size = 555, /* server_pad_queries_block_size */ + YYSYMBOL_server_ipsecmod_enabled = 556, /* server_ipsecmod_enabled */ + YYSYMBOL_server_ipsecmod_ignore_bogus = 557, /* server_ipsecmod_ignore_bogus */ + YYSYMBOL_server_ipsecmod_hook = 558, /* server_ipsecmod_hook */ + YYSYMBOL_server_ipsecmod_max_ttl = 559, /* server_ipsecmod_max_ttl */ + YYSYMBOL_server_ipsecmod_whitelist = 560, /* server_ipsecmod_whitelist */ + YYSYMBOL_server_ipsecmod_strict = 561, /* server_ipsecmod_strict */ + YYSYMBOL_server_edns_client_string = 562, /* server_edns_client_string */ + YYSYMBOL_server_edns_client_string_opcode = 563, /* server_edns_client_string_opcode */ + YYSYMBOL_stub_name = 564, /* stub_name */ + YYSYMBOL_stub_host = 565, /* stub_host */ + YYSYMBOL_stub_addr = 566, /* stub_addr */ + YYSYMBOL_stub_first = 567, /* stub_first */ + YYSYMBOL_stub_no_cache = 568, /* stub_no_cache */ + YYSYMBOL_stub_ssl_upstream = 569, /* stub_ssl_upstream */ + YYSYMBOL_stub_tcp_upstream = 570, /* stub_tcp_upstream */ + YYSYMBOL_stub_prime = 571, /* stub_prime */ + YYSYMBOL_forward_name = 572, /* forward_name */ + YYSYMBOL_forward_host = 573, /* forward_host */ + YYSYMBOL_forward_addr = 574, /* forward_addr */ + YYSYMBOL_forward_first = 575, /* forward_first */ + YYSYMBOL_forward_no_cache = 576, /* forward_no_cache */ + YYSYMBOL_forward_ssl_upstream = 577, /* forward_ssl_upstream */ + YYSYMBOL_forward_tcp_upstream = 578, /* forward_tcp_upstream */ + YYSYMBOL_auth_name = 579, /* auth_name */ + YYSYMBOL_auth_zonefile = 580, /* auth_zonefile */ + YYSYMBOL_auth_master = 581, /* auth_master */ + YYSYMBOL_auth_url = 582, /* auth_url */ + YYSYMBOL_auth_allow_notify = 583, /* auth_allow_notify */ + YYSYMBOL_auth_zonemd_check = 584, /* auth_zonemd_check */ + YYSYMBOL_auth_zonemd_reject_absence = 585, /* auth_zonemd_reject_absence */ + YYSYMBOL_auth_for_downstream = 586, /* auth_for_downstream */ + YYSYMBOL_auth_for_upstream = 587, /* auth_for_upstream */ + YYSYMBOL_auth_fallback_enabled = 588, /* auth_fallback_enabled */ + YYSYMBOL_view_name = 589, /* view_name */ + YYSYMBOL_view_local_zone = 590, /* view_local_zone */ + YYSYMBOL_view_response_ip = 591, /* view_response_ip */ + YYSYMBOL_view_response_ip_data = 592, /* view_response_ip_data */ + YYSYMBOL_view_local_data = 593, /* view_local_data */ + YYSYMBOL_view_local_data_ptr = 594, /* view_local_data_ptr */ + YYSYMBOL_view_first = 595, /* view_first */ + YYSYMBOL_rcstart = 596, /* rcstart */ + YYSYMBOL_contents_rc = 597, /* contents_rc */ + YYSYMBOL_content_rc = 598, /* content_rc */ + YYSYMBOL_rc_control_enable = 599, /* rc_control_enable */ + YYSYMBOL_rc_control_port = 600, /* rc_control_port */ + YYSYMBOL_rc_control_interface = 601, /* rc_control_interface */ + YYSYMBOL_rc_control_use_cert = 602, /* rc_control_use_cert */ + YYSYMBOL_rc_server_key_file = 603, /* rc_server_key_file */ + YYSYMBOL_rc_server_cert_file = 604, /* rc_server_cert_file */ + YYSYMBOL_rc_control_key_file = 605, /* rc_control_key_file */ + YYSYMBOL_rc_control_cert_file = 606, /* rc_control_cert_file */ + YYSYMBOL_dtstart = 607, /* dtstart */ + YYSYMBOL_contents_dt = 608, /* contents_dt */ + YYSYMBOL_content_dt = 609, /* content_dt */ + YYSYMBOL_dt_dnstap_enable = 610, /* dt_dnstap_enable */ + YYSYMBOL_dt_dnstap_bidirectional = 611, /* dt_dnstap_bidirectional */ + YYSYMBOL_dt_dnstap_socket_path = 612, /* dt_dnstap_socket_path */ + YYSYMBOL_dt_dnstap_ip = 613, /* dt_dnstap_ip */ + YYSYMBOL_dt_dnstap_tls = 614, /* dt_dnstap_tls */ + YYSYMBOL_dt_dnstap_tls_server_name = 615, /* dt_dnstap_tls_server_name */ + YYSYMBOL_dt_dnstap_tls_cert_bundle = 616, /* dt_dnstap_tls_cert_bundle */ + YYSYMBOL_dt_dnstap_tls_client_key_file = 617, /* dt_dnstap_tls_client_key_file */ + YYSYMBOL_dt_dnstap_tls_client_cert_file = 618, /* dt_dnstap_tls_client_cert_file */ + YYSYMBOL_dt_dnstap_send_identity = 619, /* dt_dnstap_send_identity */ + YYSYMBOL_dt_dnstap_send_version = 620, /* dt_dnstap_send_version */ + YYSYMBOL_dt_dnstap_identity = 621, /* dt_dnstap_identity */ + YYSYMBOL_dt_dnstap_version = 622, /* dt_dnstap_version */ + YYSYMBOL_dt_dnstap_log_resolver_query_messages = 623, /* dt_dnstap_log_resolver_query_messages */ + YYSYMBOL_dt_dnstap_log_resolver_response_messages = 624, /* dt_dnstap_log_resolver_response_messages */ + YYSYMBOL_dt_dnstap_log_client_query_messages = 625, /* dt_dnstap_log_client_query_messages */ + YYSYMBOL_dt_dnstap_log_client_response_messages = 626, /* dt_dnstap_log_client_response_messages */ + YYSYMBOL_dt_dnstap_log_forwarder_query_messages = 627, /* dt_dnstap_log_forwarder_query_messages */ + YYSYMBOL_dt_dnstap_log_forwarder_response_messages = 628, /* dt_dnstap_log_forwarder_response_messages */ + YYSYMBOL_pythonstart = 629, /* pythonstart */ + YYSYMBOL_contents_py = 630, /* contents_py */ + YYSYMBOL_content_py = 631, /* content_py */ + YYSYMBOL_py_script = 632, /* py_script */ + YYSYMBOL_dynlibstart = 633, /* dynlibstart */ + YYSYMBOL_contents_dl = 634, /* contents_dl */ + YYSYMBOL_content_dl = 635, /* content_dl */ + YYSYMBOL_dl_file = 636, /* dl_file */ + YYSYMBOL_server_disable_dnssec_lame_check = 637, /* server_disable_dnssec_lame_check */ + YYSYMBOL_server_log_identity = 638, /* server_log_identity */ + YYSYMBOL_server_response_ip = 639, /* server_response_ip */ + YYSYMBOL_server_response_ip_data = 640, /* server_response_ip_data */ + YYSYMBOL_dnscstart = 641, /* dnscstart */ + YYSYMBOL_contents_dnsc = 642, /* contents_dnsc */ + YYSYMBOL_content_dnsc = 643, /* content_dnsc */ + YYSYMBOL_dnsc_dnscrypt_enable = 644, /* dnsc_dnscrypt_enable */ + YYSYMBOL_dnsc_dnscrypt_port = 645, /* dnsc_dnscrypt_port */ + YYSYMBOL_dnsc_dnscrypt_provider = 646, /* dnsc_dnscrypt_provider */ + YYSYMBOL_dnsc_dnscrypt_provider_cert = 647, /* dnsc_dnscrypt_provider_cert */ + YYSYMBOL_dnsc_dnscrypt_provider_cert_rotated = 648, /* dnsc_dnscrypt_provider_cert_rotated */ + YYSYMBOL_dnsc_dnscrypt_secret_key = 649, /* dnsc_dnscrypt_secret_key */ + YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_size = 650, /* dnsc_dnscrypt_shared_secret_cache_size */ + YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_slabs = 651, /* dnsc_dnscrypt_shared_secret_cache_slabs */ + YYSYMBOL_dnsc_dnscrypt_nonce_cache_size = 652, /* dnsc_dnscrypt_nonce_cache_size */ + YYSYMBOL_dnsc_dnscrypt_nonce_cache_slabs = 653, /* dnsc_dnscrypt_nonce_cache_slabs */ + YYSYMBOL_cachedbstart = 654, /* cachedbstart */ + YYSYMBOL_contents_cachedb = 655, /* contents_cachedb */ + YYSYMBOL_content_cachedb = 656, /* content_cachedb */ + YYSYMBOL_cachedb_backend_name = 657, /* cachedb_backend_name */ + YYSYMBOL_cachedb_secret_seed = 658, /* cachedb_secret_seed */ + YYSYMBOL_redis_server_host = 659, /* redis_server_host */ + YYSYMBOL_redis_server_port = 660, /* redis_server_port */ + YYSYMBOL_redis_timeout = 661, /* redis_timeout */ + YYSYMBOL_redis_expire_records = 662, /* redis_expire_records */ + YYSYMBOL_server_tcp_connection_limit = 663, /* server_tcp_connection_limit */ + YYSYMBOL_ipsetstart = 664, /* ipsetstart */ + YYSYMBOL_contents_ipset = 665, /* contents_ipset */ + YYSYMBOL_content_ipset = 666, /* content_ipset */ + YYSYMBOL_ipset_name_v4 = 667, /* ipset_name_v4 */ + YYSYMBOL_ipset_name_v6 = 668 /* ipset_name_v6 */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; @@ -1786,18 +1790,18 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 678 +#define YYLAST 681 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 321 +#define YYNTOKENS 322 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 346 +#define YYNNTS 347 /* YYNRULES -- Number of rules. */ -#define YYNRULES 668 +#define YYNRULES 670 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 993 +#define YYNSTATES 996 -#define YYMAXUTOK 575 +#define YYMAXUTOK 576 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM @@ -1868,80 +1872,81 @@ static const yytype_int16 yytranslate[] = 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320 + 315, 316, 317, 318, 319, 320, 321 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { - 0, 192, 192, 192, 193, 193, 194, 194, 195, 195, - 195, 196, 196, 197, 197, 198, 198, 199, 201, 207, - 212, 213, 214, 214, 214, 215, 215, 216, 216, 216, - 217, 217, 218, 218, 218, 219, 219, 220, 220, 220, - 221, 221, 221, 222, 222, 223, 223, 224, 224, 225, - 225, 226, 226, 227, 227, 228, 228, 229, 229, 230, - 230, 230, 231, 231, 232, 232, 232, 233, 233, 233, - 234, 234, 235, 235, 236, 236, 237, 237, 238, 238, - 238, 239, 239, 240, 240, 241, 241, 241, 242, 242, - 243, 243, 244, 244, 245, 245, 245, 246, 246, 247, - 247, 248, 248, 249, 249, 250, 250, 251, 251, 252, - 252, 253, 253, 254, 254, 254, 255, 255, 255, 256, - 256, 256, 257, 257, 257, 257, 258, 259, 259, 259, - 260, 260, 260, 261, 261, 262, 262, 263, 263, 263, - 264, 264, 264, 265, 265, 266, 266, 266, 267, 267, - 268, 268, 268, 269, 269, 270, 270, 271, 271, 272, - 273, 273, 274, 274, 275, 275, 276, 276, 277, 277, - 278, 278, 279, 279, 280, 280, 281, 281, 282, 282, - 282, 283, 283, 284, 284, 285, 285, 286, 287, 287, - 288, 288, 289, 290, 290, 291, 291, 292, 292, 293, - 293, 294, 294, 294, 295, 295, 295, 296, 296, 297, - 298, 298, 299, 299, 300, 300, 301, 301, 302, 302, - 302, 303, 303, 303, 304, 304, 304, 305, 305, 306, - 306, 307, 307, 308, 308, 309, 309, 310, 310, 311, - 311, 314, 327, 328, 329, 329, 329, 329, 329, 330, - 330, 330, 332, 345, 346, 347, 347, 347, 347, 348, - 348, 348, 350, 365, 366, 367, 367, 367, 367, 368, - 368, 368, 370, 390, 391, 392, 392, 392, 392, 393, - 393, 393, 394, 394, 394, 397, 416, 433, 441, 451, - 459, 477, 478, 479, 479, 479, 479, 479, 480, 480, - 480, 481, 481, 483, 492, 501, 512, 521, 530, 539, - 550, 559, 571, 585, 600, 611, 628, 645, 662, 679, - 694, 709, 722, 737, 746, 755, 764, 773, 782, 791, - 800, 809, 818, 827, 836, 845, 854, 863, 876, 887, - 898, 909, 918, 931, 940, 949, 958, 965, 972, 981, - 988, 997, 1005, 1012, 1019, 1027, 1036, 1044, 1060, 1068, - 1076, 1084, 1092, 1100, 1109, 1118, 1132, 1141, 1150, 1159, - 1168, 1177, 1186, 1193, 1200, 1226, 1234, 1241, 1248, 1255, - 1262, 1270, 1278, 1286, 1293, 1304, 1315, 1322, 1331, 1340, - 1349, 1358, 1365, 1372, 1379, 1395, 1403, 1411, 1421, 1431, - 1441, 1455, 1463, 1476, 1487, 1495, 1508, 1517, 1526, 1535, - 1544, 1554, 1564, 1572, 1585, 1594, 1602, 1611, 1619, 1632, - 1641, 1651, 1658, 1668, 1678, 1688, 1698, 1708, 1718, 1728, - 1738, 1745, 1752, 1759, 1768, 1777, 1786, 1795, 1802, 1812, - 1832, 1839, 1857, 1870, 1883, 1896, 1905, 1914, 1923, 1932, - 1942, 1952, 1963, 1972, 1981, 1990, 1999, 2008, 2017, 2026, - 2039, 2052, 2061, 2068, 2077, 2086, 2095, 2104, 2113, 2121, - 2134, 2142, 2187, 2194, 2209, 2219, 2229, 2236, 2243, 2250, - 2259, 2267, 2281, 2302, 2323, 2335, 2347, 2359, 2368, 2389, - 2398, 2407, 2415, 2423, 2436, 2449, 2464, 2479, 2488, 2497, - 2506, 2512, 2521, 2530, 2540, 2550, 2560, 2569, 2579, 2588, - 2601, 2614, 2626, 2640, 2652, 2666, 2675, 2687, 2697, 2704, - 2711, 2720, 2729, 2739, 2749, 2759, 2769, 2776, 2783, 2792, - 2801, 2811, 2821, 2831, 2838, 2845, 2852, 2860, 2870, 2880, - 2890, 2900, 2910, 2920, 2966, 2976, 2984, 2992, 3007, 3016, - 3021, 3022, 3023, 3023, 3023, 3024, 3024, 3024, 3025, 3025, - 3027, 3037, 3046, 3053, 3060, 3067, 3074, 3081, 3088, 3093, - 3094, 3095, 3095, 3095, 3096, 3096, 3096, 3097, 3098, 3098, - 3099, 3099, 3100, 3100, 3101, 3102, 3103, 3104, 3105, 3106, - 3108, 3117, 3127, 3134, 3141, 3150, 3157, 3164, 3171, 3178, - 3187, 3196, 3203, 3210, 3220, 3230, 3240, 3250, 3260, 3270, - 3275, 3276, 3277, 3279, 3285, 3290, 3291, 3292, 3294, 3300, - 3310, 3317, 3326, 3334, 3339, 3340, 3342, 3342, 3342, 3343, - 3343, 3344, 3345, 3346, 3347, 3348, 3350, 3360, 3369, 3376, - 3385, 3392, 3401, 3409, 3422, 3430, 3443, 3448, 3449, 3450, - 3450, 3451, 3451, 3451, 3452, 3454, 3466, 3478, 3490, 3505, - 3518, 3531, 3542, 3547, 3548, 3549, 3549, 3551, 3566 + 0, 193, 193, 193, 194, 194, 195, 195, 196, 196, + 196, 197, 197, 198, 198, 199, 199, 200, 202, 208, + 213, 214, 215, 215, 215, 216, 216, 217, 217, 217, + 218, 218, 219, 219, 219, 220, 220, 221, 221, 221, + 222, 222, 222, 223, 223, 224, 224, 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, 236, 236, 237, 237, 238, 238, 239, 239, + 239, 240, 240, 241, 241, 242, 242, 242, 243, 243, + 244, 244, 245, 245, 246, 246, 246, 247, 247, 248, + 248, 249, 249, 250, 250, 251, 251, 252, 252, 253, + 253, 254, 254, 255, 255, 255, 256, 256, 256, 257, + 257, 257, 258, 258, 258, 258, 259, 260, 260, 260, + 261, 261, 261, 262, 262, 263, 263, 264, 264, 264, + 265, 265, 265, 266, 266, 267, 267, 267, 268, 268, + 269, 269, 269, 270, 270, 271, 271, 272, 272, 273, + 274, 274, 275, 275, 276, 276, 277, 277, 278, 278, + 279, 279, 280, 280, 281, 281, 282, 282, 283, 283, + 283, 284, 284, 285, 285, 286, 286, 287, 288, 288, + 289, 289, 290, 291, 291, 292, 292, 293, 293, 294, + 294, 295, 295, 295, 296, 296, 296, 297, 297, 298, + 299, 299, 300, 300, 301, 301, 302, 302, 303, 303, + 303, 304, 304, 304, 305, 305, 305, 306, 306, 307, + 307, 308, 308, 309, 309, 310, 310, 311, 311, 312, + 312, 315, 328, 329, 330, 330, 330, 330, 330, 331, + 331, 331, 333, 346, 347, 348, 348, 348, 348, 349, + 349, 349, 351, 366, 367, 368, 368, 368, 368, 369, + 369, 369, 371, 391, 392, 393, 393, 393, 393, 394, + 394, 394, 395, 395, 395, 398, 417, 434, 442, 452, + 459, 469, 487, 488, 489, 489, 489, 489, 489, 490, + 490, 490, 491, 491, 491, 493, 502, 511, 522, 531, + 540, 549, 560, 569, 581, 595, 610, 621, 638, 655, + 672, 689, 704, 719, 732, 747, 756, 765, 774, 783, + 792, 801, 810, 819, 828, 837, 846, 855, 864, 873, + 886, 897, 908, 919, 928, 941, 950, 959, 968, 975, + 982, 991, 998, 1007, 1015, 1022, 1029, 1037, 1046, 1054, + 1070, 1078, 1086, 1094, 1102, 1110, 1119, 1128, 1142, 1151, + 1160, 1169, 1178, 1187, 1196, 1203, 1210, 1236, 1244, 1251, + 1258, 1265, 1272, 1280, 1288, 1296, 1303, 1314, 1325, 1332, + 1341, 1350, 1359, 1368, 1375, 1382, 1389, 1405, 1413, 1421, + 1431, 1441, 1451, 1465, 1473, 1486, 1497, 1505, 1518, 1527, + 1536, 1545, 1554, 1564, 1574, 1582, 1595, 1604, 1612, 1621, + 1629, 1642, 1651, 1661, 1668, 1678, 1688, 1698, 1708, 1718, + 1728, 1738, 1748, 1755, 1762, 1769, 1778, 1787, 1796, 1805, + 1812, 1822, 1842, 1849, 1867, 1880, 1893, 1906, 1915, 1924, + 1933, 1942, 1952, 1962, 1973, 1982, 1991, 2000, 2009, 2018, + 2027, 2036, 2049, 2062, 2071, 2078, 2087, 2096, 2105, 2114, + 2123, 2131, 2144, 2152, 2197, 2204, 2219, 2229, 2239, 2246, + 2253, 2260, 2269, 2277, 2291, 2312, 2333, 2345, 2357, 2369, + 2378, 2399, 2408, 2417, 2425, 2433, 2446, 2459, 2474, 2489, + 2498, 2507, 2516, 2522, 2531, 2540, 2550, 2560, 2570, 2579, + 2589, 2598, 2611, 2624, 2636, 2650, 2662, 2676, 2685, 2697, + 2707, 2714, 2721, 2730, 2739, 2749, 2759, 2769, 2779, 2786, + 2793, 2802, 2811, 2821, 2831, 2841, 2848, 2855, 2862, 2870, + 2880, 2890, 2900, 2910, 2920, 2930, 2976, 2986, 2994, 3002, + 3017, 3026, 3031, 3032, 3033, 3033, 3033, 3034, 3034, 3034, + 3035, 3035, 3037, 3047, 3056, 3063, 3070, 3077, 3084, 3091, + 3098, 3103, 3104, 3105, 3105, 3105, 3106, 3106, 3106, 3107, + 3108, 3108, 3109, 3109, 3110, 3110, 3111, 3112, 3113, 3114, + 3115, 3116, 3118, 3127, 3137, 3144, 3151, 3160, 3167, 3174, + 3181, 3188, 3197, 3206, 3213, 3220, 3230, 3240, 3250, 3260, + 3270, 3280, 3285, 3286, 3287, 3289, 3295, 3300, 3301, 3302, + 3304, 3310, 3320, 3327, 3336, 3344, 3349, 3350, 3352, 3352, + 3352, 3353, 3353, 3354, 3355, 3356, 3357, 3358, 3360, 3370, + 3379, 3386, 3395, 3402, 3411, 3419, 3432, 3440, 3453, 3458, + 3459, 3460, 3460, 3461, 3461, 3461, 3462, 3464, 3476, 3488, + 3500, 3515, 3528, 3541, 3552, 3557, 3558, 3559, 3559, 3561, + 3576 }; #endif @@ -2079,14 +2084,15 @@ static const char *const yytname[] = "VAR_RPZ_LOG_NAME", "VAR_DYNLIB", "VAR_DYNLIB_FILE", "VAR_EDNS_CLIENT_STRING", "VAR_EDNS_CLIENT_STRING_OPCODE", "VAR_NSID", "VAR_ZONEMD_PERMISSIVE_MODE", "VAR_ZONEMD_CHECK", - "VAR_ZONEMD_REJECT_ABSENCE", "$accept", "toplevelvars", "toplevelvar", - "force_toplevel", "serverstart", "contents_server", "content_server", - "stubstart", "contents_stub", "content_stub", "forwardstart", - "contents_forward", "content_forward", "viewstart", "contents_view", - "content_view", "authstart", "contents_auth", "content_auth", "rpz_tag", - "rpz_action_override", "rpz_cname_override", "rpz_log", "rpz_log_name", - "rpzstart", "contents_rpz", "content_rpz", "server_num_threads", - "server_verbosity", "server_statistics_interval", + "VAR_ZONEMD_REJECT_ABSENCE", "VAR_RPZ_SIGNAL_NXDOMAIN_RA", "$accept", + "toplevelvars", "toplevelvar", "force_toplevel", "serverstart", + "contents_server", "content_server", "stubstart", "contents_stub", + "content_stub", "forwardstart", "contents_forward", "content_forward", + "viewstart", "contents_view", "content_view", "authstart", + "contents_auth", "content_auth", "rpz_tag", "rpz_action_override", + "rpz_cname_override", "rpz_log", "rpz_log_name", + "rpz_signal_nxdomain_ra", "rpzstart", "contents_rpz", "content_rpz", + "server_num_threads", "server_verbosity", "server_statistics_interval", "server_statistics_cumulative", "server_extended_statistics", "server_shm_enable", "server_shm_key", "server_port", "server_send_client_subnet", "server_client_subnet_zone", @@ -2263,11 +2269,11 @@ static const yytype_int16 yytoknum[] = 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, - 575 + 575, 576 }; #endif -#define YYPACT_NINF (-305) +#define YYPACT_NINF (-302) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) @@ -2281,106 +2287,106 @@ static const yytype_int16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - -305, 0, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, 301, -43, -38, -42, -44, -28, -29, -151, - -109, -304, -197, -195, -296, 3, 4, 27, 28, 31, - 32, 33, 34, 35, 37, 38, 39, 40, 41, 53, - 54, 55, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 87, 88, 89, 91, - 92, 95, 97, 98, 100, 101, 103, 105, 106, 107, + -302, 0, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, 301, -40, -35, -43, -39, -44, -67, -98, + -106, -300, -230, -231, -301, 3, 5, 6, 7, 37, + 38, 39, 40, 41, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 56, 57, 58, 59, + 80, 81, 82, 83, 84, 85, 87, 88, 89, 90, + 91, 92, 94, 95, 98, 100, 101, 103, 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, 139, + 128, 129, 130, 131, 132, 133, 134, 135, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 179, 180, 181, + 171, 172, 173, 174, 175, 176, 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, 219, 220, 221, 222, - 223, 225, 231, 232, 233, 234, 235, 237, 238, 240, - 246, 247, 248, 249, 250, 251, 253, 254, 255, 256, - 257, 258, 259, 261, 262, 263, 264, 267, 268, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 292, 294, 295, 296, - 298, 299, 300, 302, 336, 337, 338, 339, 343, 344, - 345, 387, 388, 389, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, 390, 391, 392, 393, 394, 395, - 401, 405, -305, -305, -305, -305, -305, -305, -305, -305, - -305, 406, 433, 434, 435, 437, 438, 446, -305, -305, - -305, -305, -305, -305, -305, -305, 459, 460, 461, 462, - 463, 464, 465, -305, -305, -305, -305, -305, -305, -305, - -305, 466, 467, 468, 469, 470, 471, 472, 473, 474, - 475, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, 476, 477, 478, 519, 521, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, 540, 541, - 542, 543, 544, 545, 546, 547, -305, -305, -305, -305, - -305, -305, -305, -305, -305, 548, 549, 550, 561, 562, + 223, 224, 225, 230, 237, 238, 240, 242, 243, 245, + 246, 247, 249, 250, 251, 252, 253, 259, 261, 262, + 263, 264, 265, 266, 268, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 294, 295, 296, 298, + 299, 300, 302, 336, 337, 338, 339, 343, 344, 345, + 387, 388, 389, 390, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, 391, 392, 393, 394, 395, 401, + 405, 406, -302, -302, -302, -302, -302, -302, -302, -302, + -302, 433, 434, 435, 437, 438, 446, 459, -302, -302, + -302, -302, -302, -302, -302, -302, 460, 461, 462, 463, + 464, 465, 466, -302, -302, -302, -302, -302, -302, -302, + -302, 467, 468, 469, 470, 471, 472, 473, 474, 475, + 476, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, 477, 478, 519, 521, 540, 541, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + 542, 543, 544, 545, 546, 547, 548, 549, -302, -302, + -302, -302, -302, -302, -302, -302, -302, 550, 561, 562, 563, 564, 565, 566, 567, 569, 570, 571, 572, 573, - 574, 575, 578, 581, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, 584, -305, -305, 585, -305, -305, - 594, 595, 596, 598, 599, 600, 601, 602, 603, 604, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, 605, 610, 611, 612, 613, 614, -305, -305, -305, - -305, -305, -305, -305, 615, 616, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, 617, - 618, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, 619, - 620, 621, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, 622, 623, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, 624, 625, 626, 627, 628, 629, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, 630, -305, -305, -305, -305, -305, - -305, -305, -305, -305, 631, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, 632, -305, -305, 633, 634, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, 635, 636, 637, -305, -305, -305, -305, -305, -305, - -305, -305, -305 + 574, 575, 578, 581, 584, 585, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, 594, -302, -302, 595, + -302, -302, 596, 598, 599, 600, 601, 602, 603, 604, + 605, 610, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, 611, 612, 613, 614, 615, 616, -302, + -302, -302, -302, -302, -302, -302, 617, 618, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, 619, 620, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, 621, 622, 623, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, 624, 625, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, 626, 627, 628, 629, + 630, 631, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, 632, -302, -302, -302, + -302, -302, -302, -302, -302, -302, 633, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, 634, -302, -302, 635, + 636, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, 637, 638, 639, -302, -302, -302, + -302, -302, -302, -302, -302, -302 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -2388,10 +2394,10 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_int16 yydefact[] = { - 2, 0, 1, 18, 19, 241, 252, 549, 609, 568, - 262, 623, 646, 272, 662, 290, 614, 3, 17, 21, - 243, 254, 264, 274, 292, 551, 570, 611, 616, 625, - 648, 664, 4, 5, 6, 10, 14, 15, 8, 9, + 2, 0, 1, 18, 19, 241, 252, 551, 611, 570, + 262, 625, 648, 272, 664, 291, 616, 3, 17, 21, + 243, 254, 264, 274, 293, 553, 572, 613, 618, 627, + 650, 666, 4, 5, 6, 10, 14, 15, 8, 9, 7, 16, 11, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2443,131 +2449,131 @@ static const yytype_int16 yydefact[] = 0, 0, 0, 263, 265, 266, 269, 270, 267, 271, 268, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 273, 275, 276, 277, 278, 282, 283, 284, 279, - 280, 281, 0, 0, 0, 0, 0, 295, 299, 300, - 301, 302, 291, 293, 294, 296, 297, 298, 0, 0, - 0, 0, 0, 0, 0, 0, 550, 552, 554, 553, - 559, 555, 556, 557, 558, 0, 0, 0, 0, 0, + 280, 281, 0, 0, 0, 0, 0, 0, 296, 300, + 301, 302, 303, 304, 292, 294, 295, 297, 298, 299, + 0, 0, 0, 0, 0, 0, 0, 0, 552, 554, + 556, 555, 561, 557, 558, 559, 560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 569, 571, 573, 572, 574, 575, + 0, 0, 0, 0, 0, 0, 571, 573, 575, 574, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, - 586, 587, 588, 589, 0, 610, 612, 0, 615, 617, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 624, 626, 627, 628, 630, 631, 629, 632, 633, 634, - 635, 0, 0, 0, 0, 0, 0, 647, 649, 650, - 651, 652, 653, 654, 0, 0, 663, 665, 666, 304, - 303, 310, 323, 321, 333, 329, 330, 334, 331, 332, - 335, 336, 337, 341, 342, 372, 373, 374, 375, 376, - 404, 405, 406, 412, 413, 326, 414, 415, 418, 416, - 417, 421, 422, 423, 437, 387, 388, 391, 392, 424, - 440, 381, 383, 441, 448, 449, 450, 327, 403, 468, - 469, 382, 462, 365, 322, 377, 438, 445, 425, 0, - 0, 472, 328, 305, 364, 429, 306, 324, 325, 378, - 379, 470, 427, 431, 432, 339, 338, 307, 473, 407, - 436, 366, 386, 442, 443, 444, 447, 461, 380, 466, - 464, 465, 395, 402, 433, 434, 396, 397, 426, 452, - 367, 368, 371, 343, 345, 340, 346, 347, 348, 349, - 356, 357, 358, 359, 360, 361, 362, 474, 475, 477, - 408, 409, 410, 411, 419, 420, 478, 479, 480, 0, - 0, 0, 428, 398, 400, 619, 489, 493, 491, 490, - 494, 492, 499, 0, 0, 497, 498, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 430, 446, 467, - 503, 504, 399, 481, 0, 0, 0, 0, 0, 0, - 453, 454, 455, 456, 457, 458, 459, 460, 620, 389, - 390, 393, 384, 451, 363, 308, 309, 385, 505, 506, - 507, 508, 509, 511, 510, 512, 513, 514, 344, 351, - 500, 502, 501, 350, 0, 370, 435, 476, 369, 401, - 352, 353, 355, 354, 0, 516, 394, 463, 517, 518, - 519, 524, 522, 523, 520, 521, 525, 526, 527, 528, - 530, 531, 529, 542, 0, 546, 547, 0, 0, 548, - 532, 540, 533, 534, 535, 539, 541, 536, 537, 538, - 285, 286, 287, 288, 289, 560, 562, 561, 564, 565, - 566, 567, 563, 590, 592, 593, 594, 595, 596, 597, - 598, 599, 600, 591, 601, 602, 603, 604, 605, 606, - 607, 608, 613, 618, 636, 637, 638, 641, 639, 640, - 642, 643, 644, 645, 655, 656, 657, 658, 659, 660, - 667, 668, 439, 471, 488, 621, 622, 495, 496, 482, - 483, 0, 0, 0, 487, 661, 515, 543, 544, 545, - 486, 484, 485 + 586, 587, 588, 589, 590, 591, 0, 612, 614, 0, + 617, 619, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 626, 628, 629, 630, 632, 633, 631, 634, + 635, 636, 637, 0, 0, 0, 0, 0, 0, 649, + 651, 652, 653, 654, 655, 656, 0, 0, 665, 667, + 668, 306, 305, 312, 325, 323, 335, 331, 332, 336, + 333, 334, 337, 338, 339, 343, 344, 374, 375, 376, + 377, 378, 406, 407, 408, 414, 415, 328, 416, 417, + 420, 418, 419, 423, 424, 425, 439, 389, 390, 393, + 394, 426, 442, 383, 385, 443, 450, 451, 452, 329, + 405, 470, 471, 384, 464, 367, 324, 379, 440, 447, + 427, 0, 0, 474, 330, 307, 366, 431, 308, 326, + 327, 380, 381, 472, 429, 433, 434, 341, 340, 309, + 475, 409, 438, 368, 388, 444, 445, 446, 449, 463, + 382, 468, 466, 467, 397, 404, 435, 436, 398, 399, + 428, 454, 369, 370, 373, 345, 347, 342, 348, 349, + 350, 351, 358, 359, 360, 361, 362, 363, 364, 476, + 477, 479, 410, 411, 412, 413, 421, 422, 480, 481, + 482, 0, 0, 0, 430, 400, 402, 621, 491, 495, + 493, 492, 496, 494, 501, 0, 0, 499, 500, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 432, + 448, 469, 505, 506, 401, 483, 0, 0, 0, 0, + 0, 0, 455, 456, 457, 458, 459, 460, 461, 462, + 622, 391, 392, 395, 386, 453, 365, 310, 311, 387, + 507, 508, 509, 510, 511, 513, 512, 514, 515, 516, + 346, 353, 502, 504, 503, 352, 0, 372, 437, 478, + 371, 403, 354, 355, 357, 356, 0, 518, 396, 465, + 519, 520, 521, 526, 524, 525, 522, 523, 527, 528, + 529, 530, 532, 533, 531, 544, 0, 548, 549, 0, + 0, 550, 534, 542, 535, 536, 537, 541, 543, 538, + 539, 540, 285, 286, 287, 288, 289, 290, 562, 564, + 563, 566, 567, 568, 569, 565, 592, 594, 595, 596, + 597, 598, 599, 600, 601, 602, 593, 603, 604, 605, + 606, 607, 608, 609, 610, 615, 620, 638, 639, 640, + 643, 641, 642, 644, 645, 646, 647, 657, 658, 659, + 660, 661, 662, 669, 670, 441, 473, 490, 623, 624, + 497, 498, 484, 485, 0, 0, 0, 489, 663, 517, + 545, 546, 547, 488, 486, 487 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, 274, 638, 639, 640, - 641, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305, -305, -305, -305, -305, - -305, -305, -305, -305, -305, -305 + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, 640, 641, 642, + 643, 644, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, + -302, -302, -302, -302, -302, -302, -302 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { -1, 1, 17, 18, 19, 32, 264, 20, 33, 492, - 21, 34, 508, 22, 35, 523, 23, 36, 541, 557, - 558, 559, 560, 561, 24, 37, 562, 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, 493, 494, 495, 496, 497, 498, 499, 500, 509, - 510, 511, 512, 513, 514, 515, 542, 543, 544, 545, - 546, 547, 548, 549, 550, 551, 524, 525, 526, 527, - 528, 529, 530, 25, 38, 576, 577, 578, 579, 580, - 581, 582, 583, 584, 26, 39, 604, 605, 606, 607, - 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, - 618, 619, 620, 621, 622, 623, 27, 40, 625, 626, - 28, 41, 628, 629, 479, 480, 481, 482, 29, 42, - 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, - 650, 30, 43, 657, 658, 659, 660, 661, 662, 663, - 483, 31, 44, 666, 667, 668 + 21, 34, 508, 22, 35, 523, 23, 36, 541, 558, + 559, 560, 561, 562, 563, 24, 37, 564, 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, 493, 494, 495, 496, 497, 498, 499, 500, + 509, 510, 511, 512, 513, 514, 515, 542, 543, 544, + 545, 546, 547, 548, 549, 550, 551, 524, 525, 526, + 527, 528, 529, 530, 25, 38, 578, 579, 580, 581, + 582, 583, 584, 585, 586, 26, 39, 606, 607, 608, + 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, + 619, 620, 621, 622, 623, 624, 625, 27, 40, 627, + 628, 28, 41, 630, 631, 479, 480, 481, 482, 29, + 42, 642, 643, 644, 645, 646, 647, 648, 649, 650, + 651, 652, 30, 43, 659, 660, 661, 662, 663, 664, + 665, 483, 31, 44, 668, 669, 670 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -2575,110 +2581,111 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 2, 531, 484, 516, 485, 486, 624, 501, 664, 665, - 627, 3, 4, 669, 670, 502, 503, 531, 585, 586, - 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, - 597, 598, 599, 600, 601, 602, 603, 671, 672, 517, - 518, 673, 674, 675, 676, 677, 5, 678, 679, 680, - 681, 682, 6, 630, 631, 632, 633, 634, 635, 636, - 637, 638, 639, 683, 684, 685, 519, 487, 568, 569, - 570, 571, 572, 573, 574, 575, 651, 652, 653, 654, - 655, 656, 686, 687, 688, 689, 690, 691, 692, 693, - 694, 695, 696, 697, 698, 699, 7, 700, 701, 702, - 488, 703, 704, 489, 504, 705, 505, 706, 707, 506, - 708, 709, 490, 710, 8, 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, 520, 521, 743, - 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, - 754, 755, 756, 757, 758, 759, 760, 761, 9, 762, - 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, - 773, 774, 775, 776, 777, 778, 779, 780, 522, 781, - 782, 783, 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, - 812, 813, 814, 815, 816, 817, 818, 819, 10, 820, - 821, 822, 823, 824, 532, 825, 533, 534, 535, 536, - 537, 826, 827, 828, 829, 830, 538, 831, 832, 11, - 833, 491, 533, 534, 535, 507, 834, 835, 836, 837, - 838, 839, 538, 840, 841, 842, 843, 844, 845, 846, - 12, 847, 848, 849, 850, 539, 540, 851, 852, 13, - 552, 553, 554, 555, 556, 853, 854, 855, 856, 857, - 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, - 868, 869, 870, 14, 871, 872, 873, 15, 874, 875, - 876, 563, 877, 16, 45, 46, 47, 48, 49, 50, + 2, 531, 516, 666, 667, 484, 531, 485, 486, 626, + 501, 3, 4, 671, 629, 672, 673, 674, 502, 503, + 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, + 570, 571, 572, 573, 574, 575, 576, 577, 517, 518, + 653, 654, 655, 656, 657, 658, 5, 675, 676, 677, + 678, 679, 6, 680, 681, 682, 683, 684, 685, 686, + 687, 688, 689, 690, 691, 519, 692, 693, 694, 695, + 487, 587, 588, 589, 590, 591, 592, 593, 594, 595, + 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, + 696, 697, 698, 699, 700, 701, 7, 702, 703, 704, + 705, 706, 707, 488, 708, 709, 489, 504, 710, 505, + 711, 712, 506, 713, 8, 490, 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, 520, 521, 744, 745, + 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, + 756, 757, 758, 759, 760, 761, 762, 763, 9, 764, + 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, + 775, 776, 777, 778, 779, 780, 781, 522, 782, 783, + 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, 812, 813, + 814, 815, 816, 817, 818, 819, 820, 821, 10, 822, + 823, 824, 825, 826, 827, 828, 533, 534, 535, 532, + 829, 533, 534, 535, 536, 537, 538, 830, 831, 11, + 832, 538, 833, 834, 491, 835, 836, 837, 507, 838, + 839, 840, 841, 842, 552, 553, 554, 555, 556, 843, + 12, 844, 845, 846, 847, 848, 849, 557, 850, 13, + 539, 540, 851, 852, 853, 854, 855, 856, 857, 858, + 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, + 869, 870, 871, 14, 872, 873, 874, 15, 875, 876, + 877, 0, 878, 16, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 878, 879, 880, 881, - 77, 78, 79, 882, 883, 884, 80, 81, 82, 83, + 71, 72, 73, 74, 75, 76, 879, 880, 881, 882, + 77, 78, 79, 883, 884, 885, 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, 885, 886, 887, - 888, 889, 890, 891, 892, 893, 121, 122, 123, 124, - 125, 894, 126, 127, 128, 895, 896, 129, 130, 131, + 114, 115, 116, 117, 118, 119, 120, 886, 887, 888, + 889, 890, 891, 892, 893, 894, 121, 122, 123, 124, + 125, 895, 126, 127, 128, 896, 897, 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, 897, 898, 899, 155, 900, 901, 156, - 157, 158, 159, 160, 161, 162, 902, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 903, - 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, - 914, 915, 916, 917, 918, 919, 920, 921, 922, 175, + 152, 153, 154, 898, 899, 900, 155, 901, 902, 156, + 157, 158, 159, 160, 161, 162, 903, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 904, + 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, + 915, 916, 917, 918, 919, 920, 921, 922, 923, 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, 923, - 215, 924, 216, 217, 218, 219, 220, 221, 222, 223, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 924, + 215, 925, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, - 935, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 936, 937, 938, 939, 940, 941, 942, 244, 943, - 944, 945, 946, 947, 948, 949, 245, 246, 950, 247, - 248, 951, 249, 250, 952, 953, 251, 252, 253, 254, - 255, 256, 257, 258, 954, 955, 956, 259, 957, 958, - 959, 960, 961, 962, 963, 964, 260, 261, 262, 263, - 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, - 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, - 985, 986, 987, 988, 989, 990, 991, 992, 0, 0, + 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, + 936, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 937, 938, 939, 940, 941, 942, 943, 244, 944, + 945, 946, 947, 948, 949, 950, 245, 246, 951, 247, + 248, 952, 249, 250, 953, 954, 251, 252, 253, 254, + 255, 256, 257, 258, 955, 956, 957, 259, 958, 959, + 960, 961, 962, 963, 964, 965, 260, 261, 262, 263, + 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, + 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, + 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 564, 565, 566, 567 + 0, 0, 0, 0, 0, 0, 0, 565, 566, 567, + 568, 569 }; static const yytype_int16 yycheck[] = { - 0, 45, 45, 45, 47, 48, 115, 45, 304, 305, - 314, 11, 12, 10, 10, 53, 54, 45, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 10, 10, 81, - 82, 10, 10, 10, 10, 10, 46, 10, 10, 10, - 10, 10, 52, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 10, 10, 10, 108, 110, 97, 98, - 99, 100, 101, 102, 103, 104, 271, 272, 273, 274, - 275, 276, 10, 10, 10, 10, 10, 10, 10, 10, + 0, 45, 45, 304, 305, 45, 45, 47, 48, 115, + 45, 11, 12, 10, 314, 10, 10, 10, 53, 54, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 97, 98, 99, 100, 101, 102, 103, 104, 81, 82, + 271, 272, 273, 274, 275, 276, 46, 10, 10, 10, + 10, 10, 52, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 108, 10, 10, 10, 10, + 110, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 10, 10, 10, 10, 10, 10, 96, 10, 10, 10, - 143, 10, 10, 146, 142, 10, 144, 10, 10, 147, - 10, 10, 155, 10, 114, 10, 10, 10, 10, 10, + 10, 10, 10, 143, 10, 10, 146, 142, 10, 144, + 10, 10, 147, 10, 114, 155, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 189, 190, 10, + 10, 10, 10, 10, 10, 10, 189, 190, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 168, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 230, 10, + 10, 10, 10, 10, 10, 10, 10, 230, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 228, 10, - 10, 10, 10, 10, 278, 10, 280, 281, 282, 283, - 284, 10, 10, 10, 10, 10, 290, 10, 10, 249, - 10, 294, 280, 281, 282, 293, 10, 10, 10, 10, - 10, 10, 290, 10, 10, 10, 10, 10, 10, 10, - 270, 10, 10, 10, 10, 319, 320, 10, 10, 279, - 308, 309, 310, 311, 312, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 280, 281, 282, 278, + 10, 280, 281, 282, 283, 284, 290, 10, 10, 249, + 10, 290, 10, 10, 294, 10, 10, 10, 293, 10, + 10, 10, 10, 10, 308, 309, 310, 311, 312, 10, + 270, 10, 10, 10, 10, 10, 10, 321, 10, 279, + 319, 320, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 303, 10, 10, 10, 307, 10, 10, - 10, 37, 10, 313, 13, 14, 15, 16, 17, 18, + 10, -1, 10, 313, 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, 10, 10, 10, 10, @@ -2711,21 +2718,22 @@ static const yytype_int16 yycheck[] = 10, 10, 10, 10, 10, 10, 315, 316, 317, 318, 10, 10, 10, 10, 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, + 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, -1, -1, 37, 37, 37, 37 + -1, -1, -1, -1, -1, -1, -1, 37, 37, 37, + 37, 37 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_int16 yystos[] = { - 0, 322, 0, 11, 12, 46, 52, 96, 114, 168, - 228, 249, 270, 279, 303, 307, 313, 323, 324, 325, - 328, 331, 334, 337, 345, 594, 605, 627, 631, 639, - 652, 662, 326, 329, 332, 335, 338, 346, 595, 606, - 628, 632, 640, 653, 663, 13, 14, 15, 16, 17, + 0, 323, 0, 11, 12, 46, 52, 96, 114, 168, + 228, 249, 270, 279, 303, 307, 313, 324, 325, 326, + 329, 332, 335, 338, 347, 596, 607, 629, 633, 641, + 654, 664, 327, 330, 333, 336, 339, 348, 597, 608, + 630, 634, 642, 655, 665, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 49, 50, 51, @@ -2747,47 +2755,48 @@ static const yytype_int16 yystos[] = 245, 246, 247, 248, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 277, 285, 286, 288, 289, 291, 292, 295, 296, 297, 298, 299, 300, 301, 302, 306, - 315, 316, 317, 318, 327, 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, 541, 542, - 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, - 553, 554, 555, 556, 557, 558, 559, 560, 561, 635, - 636, 637, 638, 661, 45, 47, 48, 110, 143, 146, - 155, 294, 330, 562, 563, 564, 565, 566, 567, 568, - 569, 45, 53, 54, 142, 144, 147, 293, 333, 570, - 571, 572, 573, 574, 575, 576, 45, 81, 82, 108, - 189, 190, 230, 336, 587, 588, 589, 590, 591, 592, - 593, 45, 278, 280, 281, 282, 283, 284, 290, 319, - 320, 339, 577, 578, 579, 580, 581, 582, 583, 584, - 585, 586, 308, 309, 310, 311, 312, 340, 341, 342, - 343, 344, 347, 577, 578, 579, 580, 581, 97, 98, - 99, 100, 101, 102, 103, 104, 596, 597, 598, 599, - 600, 601, 602, 603, 604, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 607, 608, 609, 610, 611, 612, + 315, 316, 317, 318, 328, 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, 541, 542, 543, 544, + 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, + 555, 556, 557, 558, 559, 560, 561, 562, 563, 637, + 638, 639, 640, 663, 45, 47, 48, 110, 143, 146, + 155, 294, 331, 564, 565, 566, 567, 568, 569, 570, + 571, 45, 53, 54, 142, 144, 147, 293, 334, 572, + 573, 574, 575, 576, 577, 578, 45, 81, 82, 108, + 189, 190, 230, 337, 589, 590, 591, 592, 593, 594, + 595, 45, 278, 280, 281, 282, 283, 284, 290, 319, + 320, 340, 579, 580, 581, 582, 583, 584, 585, 586, + 587, 588, 308, 309, 310, 311, 312, 321, 341, 342, + 343, 344, 345, 346, 349, 579, 580, 581, 582, 583, + 97, 98, 99, 100, 101, 102, 103, 104, 598, 599, + 600, 601, 602, 603, 604, 605, 606, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, - 623, 624, 625, 626, 115, 629, 630, 314, 633, 634, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, - 651, 271, 272, 273, 274, 275, 276, 654, 655, 656, - 657, 658, 659, 660, 304, 305, 664, 665, 666, 10, + 623, 624, 625, 626, 627, 628, 115, 631, 632, 314, + 635, 636, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 643, 644, 645, 646, 647, 648, 649, 650, + 651, 652, 653, 271, 272, 273, 274, 275, 276, 656, + 657, 658, 659, 660, 661, 662, 304, 305, 666, 667, + 668, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -2819,44 +2828,43 @@ static const yytype_int16 yystos[] = 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10 + 10, 10, 10, 10, 10, 10 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_int16 yyr1[] = { - 0, 321, 322, 322, 323, 323, 323, 323, 323, 323, - 323, 323, 323, 323, 323, 323, 323, 323, 324, 325, - 326, 326, 327, 327, 327, 327, 327, 327, 327, 327, - 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, - 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, - 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, - 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, - 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, - 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, - 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, - 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, - 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, - 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, - 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, - 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, - 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, - 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, - 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, - 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, - 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, - 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, - 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, - 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, - 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, - 327, 328, 329, 329, 330, 330, 330, 330, 330, 330, - 330, 330, 331, 332, 332, 333, 333, 333, 333, 333, - 333, 333, 334, 335, 335, 336, 336, 336, 336, 336, - 336, 336, 337, 338, 338, 339, 339, 339, 339, 339, - 339, 339, 339, 339, 339, 340, 341, 342, 343, 344, - 345, 346, 346, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 348, 349, 350, 351, 352, 353, 354, + 0, 322, 323, 323, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 325, 326, + 327, 327, 328, 328, 328, 328, 328, 328, 328, 328, + 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, + 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, + 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, + 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, + 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, + 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, + 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, + 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, + 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, + 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, + 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, + 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, + 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, + 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, + 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, + 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, + 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, + 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, + 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, + 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, + 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, + 328, 329, 330, 330, 331, 331, 331, 331, 331, 331, + 331, 331, 332, 333, 333, 334, 334, 334, 334, 334, + 334, 334, 335, 336, 336, 337, 337, 337, 337, 337, + 337, 337, 338, 339, 339, 340, 340, 340, 340, 340, + 340, 340, 340, 340, 340, 341, 342, 343, 344, 345, + 346, 347, 348, 348, 349, 349, 349, 349, 349, 349, + 349, 349, 349, 349, 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, @@ -2881,18 +2889,19 @@ static const yytype_int16 yyr1[] = 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, - 595, 595, 596, 596, 596, 596, 596, 596, 596, 596, - 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, - 606, 607, 607, 607, 607, 607, 607, 607, 607, 607, - 607, 607, 607, 607, 607, 607, 607, 607, 607, 607, - 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, + 595, 596, 597, 597, 598, 598, 598, 598, 598, 598, + 598, 598, 599, 600, 601, 602, 603, 604, 605, 606, + 607, 608, 608, 609, 609, 609, 609, 609, 609, 609, + 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, + 609, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, - 628, 628, 629, 630, 631, 632, 632, 633, 634, 635, - 636, 637, 638, 639, 640, 640, 641, 641, 641, 641, - 641, 641, 641, 641, 641, 641, 642, 643, 644, 645, - 646, 647, 648, 649, 650, 651, 652, 653, 653, 654, - 654, 654, 654, 654, 654, 655, 656, 657, 658, 659, - 660, 661, 662, 663, 663, 664, 664, 665, 666 + 628, 629, 630, 630, 631, 632, 633, 634, 634, 635, + 636, 637, 638, 639, 640, 641, 642, 642, 643, 643, + 643, 643, 643, 643, 643, 643, 643, 643, 644, 645, + 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, + 655, 656, 656, 656, 656, 656, 656, 657, 658, 659, + 660, 661, 662, 663, 664, 665, 665, 666, 666, 667, + 668 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -2927,8 +2936,8 @@ static const yytype_int8 yyr2[] = 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, - 1, 2, 0, 1, 1, 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, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -2941,30 +2950,31 @@ static const yytype_int8 yyr2[] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 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, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, - 2, 2, 2, 2, 2, 3, 3, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 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, + 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 3, 3, 4, 4, 4, 3, + 3, 2, 2, 2, 2, 2, 2, 3, 3, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 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, 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, 1, - 2, 0, 1, 2, 1, 2, 0, 1, 2, 2, - 2, 3, 3, 1, 2, 0, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, - 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, - 2, 3, 1, 2, 0, 1, 1, 2, 2 + 2, 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 }; @@ -3445,23 +3455,23 @@ yyreduce: switch (yyn) { case 18: -#line 202 "./util/configparser.y" +#line 203 "./util/configparser.y" { OUTYY(("\nP(force-toplevel)\n")); } -#line 3453 "util/configparser.c" +#line 3463 "util/configparser.c" break; case 19: -#line 208 "./util/configparser.y" +#line 209 "./util/configparser.y" { OUTYY(("\nP(server:)\n")); } -#line 3461 "util/configparser.c" +#line 3471 "util/configparser.c" break; case 241: -#line 315 "./util/configparser.y" +#line 316 "./util/configparser.y" { struct config_stub* s; OUTYY(("\nP(stub_zone:)\n")); @@ -3473,11 +3483,11 @@ yyreduce: yyerror("out of memory"); } } -#line 3477 "util/configparser.c" +#line 3487 "util/configparser.c" break; case 252: -#line 333 "./util/configparser.y" +#line 334 "./util/configparser.y" { struct config_stub* s; OUTYY(("\nP(forward_zone:)\n")); @@ -3489,11 +3499,11 @@ yyreduce: yyerror("out of memory"); } } -#line 3493 "util/configparser.c" +#line 3503 "util/configparser.c" break; case 262: -#line 351 "./util/configparser.y" +#line 352 "./util/configparser.y" { struct config_view* s; OUTYY(("\nP(view:)\n")); @@ -3507,11 +3517,11 @@ yyreduce: yyerror("out of memory"); } } -#line 3511 "util/configparser.c" +#line 3521 "util/configparser.c" break; case 272: -#line 371 "./util/configparser.y" +#line 372 "./util/configparser.y" { struct config_auth* s; OUTYY(("\nP(auth_zone:)\n")); @@ -3530,11 +3540,11 @@ yyreduce: yyerror("out of memory"); } } -#line 3534 "util/configparser.c" +#line 3544 "util/configparser.c" break; case 285: -#line 398 "./util/configparser.y" +#line 399 "./util/configparser.y" { uint8_t* bitlist; size_t len = 0; @@ -3551,11 +3561,11 @@ yyreduce: } } -#line 3555 "util/configparser.c" +#line 3565 "util/configparser.c" break; case 286: -#line 417 "./util/configparser.y" +#line 418 "./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 && @@ -3570,21 +3580,21 @@ yyreduce: cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); } } -#line 3574 "util/configparser.c" +#line 3584 "util/configparser.c" break; case 287: -#line 434 "./util/configparser.y" +#line 435 "./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 3584 "util/configparser.c" +#line 3594 "util/configparser.c" break; case 288: -#line 442 "./util/configparser.y" +#line 443 "./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) @@ -3592,21 +3602,33 @@ yyreduce: else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3596 "util/configparser.c" +#line 3606 "util/configparser.c" break; case 289: -#line 452 "./util/configparser.y" +#line 453 "./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 3606 "util/configparser.c" +#line 3616 "util/configparser.c" break; case 290: #line 460 "./util/configparser.y" + { + OUTYY(("P(rpz_signal_nxdomain_ra:%s)\n", (yyvsp[0].str))); + if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->auths->rpz_signal_nxdomain_ra = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); + } +#line 3628 "util/configparser.c" + break; + + case 291: +#line 470 "./util/configparser.y" { struct config_auth* s; OUTYY(("\nP(rpz:)\n")); @@ -3623,11 +3645,11 @@ yyreduce: yyerror("out of memory"); } } -#line 3627 "util/configparser.c" +#line 3649 "util/configparser.c" break; - case 303: -#line 484 "./util/configparser.y" + case 305: +#line 494 "./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) @@ -3635,11 +3657,11 @@ yyreduce: else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3639 "util/configparser.c" +#line 3661 "util/configparser.c" break; - case 304: -#line 493 "./util/configparser.y" + case 306: +#line 503 "./util/configparser.y" { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3647,11 +3669,11 @@ yyreduce: else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3651 "util/configparser.c" +#line 3673 "util/configparser.c" break; - case 305: -#line 502 "./util/configparser.y" + case 307: +#line 512 "./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) @@ -3661,11 +3683,11 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3665 "util/configparser.c" +#line 3687 "util/configparser.c" break; - case 306: -#line 513 "./util/configparser.y" + case 308: +#line 523 "./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) @@ -3673,11 +3695,11 @@ yyreduce: else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3677 "util/configparser.c" +#line 3699 "util/configparser.c" break; - case 307: -#line 522 "./util/configparser.y" + case 309: +#line 532 "./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) @@ -3685,11 +3707,11 @@ yyreduce: else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3689 "util/configparser.c" +#line 3711 "util/configparser.c" break; - case 308: -#line 531 "./util/configparser.y" + case 310: +#line 541 "./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) @@ -3697,11 +3719,11 @@ yyreduce: else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3701 "util/configparser.c" +#line 3723 "util/configparser.c" break; - case 309: -#line 540 "./util/configparser.y" + case 311: +#line 550 "./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) @@ -3711,11 +3733,11 @@ yyreduce: else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3715 "util/configparser.c" +#line 3737 "util/configparser.c" break; - case 310: -#line 551 "./util/configparser.y" + case 312: +#line 561 "./util/configparser.y" { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3723,11 +3745,11 @@ yyreduce: else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3727 "util/configparser.c" +#line 3749 "util/configparser.c" break; - case 311: -#line 560 "./util/configparser.y" + case 313: +#line 570 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str))); @@ -3738,11 +3760,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3742 "util/configparser.c" +#line 3764 "util/configparser.c" break; - case 312: -#line 572 "./util/configparser.y" + case 314: +#line 582 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str))); @@ -3754,11 +3776,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3758 "util/configparser.c" +#line 3780 "util/configparser.c" break; - case 313: -#line 586 "./util/configparser.y" + case 315: +#line 596 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str))); @@ -3772,11 +3794,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3776 "util/configparser.c" +#line 3798 "util/configparser.c" break; - case 314: -#line 601 "./util/configparser.y" + case 316: +#line 611 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str))); @@ -3786,11 +3808,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3790 "util/configparser.c" +#line 3812 "util/configparser.c" break; - case 315: -#line 612 "./util/configparser.y" + case 317: +#line 622 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -3806,11 +3828,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3810 "util/configparser.c" +#line 3832 "util/configparser.c" break; - case 316: -#line 629 "./util/configparser.y" + case 318: +#line 639 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3826,11 +3848,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3830 "util/configparser.c" +#line 3852 "util/configparser.c" break; - case 317: -#line 646 "./util/configparser.y" + case 319: +#line 656 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -3846,11 +3868,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3850 "util/configparser.c" +#line 3872 "util/configparser.c" break; - case 318: -#line 663 "./util/configparser.y" + case 320: +#line 673 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3866,11 +3888,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3870 "util/configparser.c" +#line 3892 "util/configparser.c" break; - case 319: -#line 680 "./util/configparser.y" + case 321: +#line 690 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str))); @@ -3884,11 +3906,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3888 "util/configparser.c" +#line 3910 "util/configparser.c" break; - case 320: -#line 695 "./util/configparser.y" + case 322: +#line 705 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str))); @@ -3902,11 +3924,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3906 "util/configparser.c" +#line 3928 "util/configparser.c" break; - case 321: -#line 710 "./util/configparser.y" + case 323: +#line 720 "./util/configparser.y" { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_ifs == 0) @@ -3918,11 +3940,11 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 3922 "util/configparser.c" +#line 3944 "util/configparser.c" break; - case 322: -#line 723 "./util/configparser.y" + case 324: +#line 733 "./util/configparser.y" { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_out_ifs == 0) @@ -3936,11 +3958,11 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 3940 "util/configparser.c" +#line 3962 "util/configparser.c" break; - case 323: -#line 738 "./util/configparser.y" + case 325: +#line 748 "./util/configparser.y" { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3948,11 +3970,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3952 "util/configparser.c" +#line 3974 "util/configparser.c" break; - case 324: -#line 747 "./util/configparser.y" + case 326: +#line 757 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 1, @@ -3960,11 +3982,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3964 "util/configparser.c" +#line 3986 "util/configparser.c" break; - case 325: -#line 756 "./util/configparser.y" + case 327: +#line 766 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 0, @@ -3972,11 +3994,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3976 "util/configparser.c" +#line 3998 "util/configparser.c" break; - case 326: -#line 765 "./util/configparser.y" + case 328: +#line 775 "./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) @@ -3984,11 +4006,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3988 "util/configparser.c" +#line 4010 "util/configparser.c" break; - case 327: -#line 774 "./util/configparser.y" + case 329: +#line 784 "./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) @@ -3996,11 +4018,11 @@ yyreduce: else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4000 "util/configparser.c" +#line 4022 "util/configparser.c" break; - case 328: -#line 783 "./util/configparser.y" + case 330: +#line 793 "./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) @@ -4008,11 +4030,11 @@ yyreduce: else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4012 "util/configparser.c" +#line 4034 "util/configparser.c" break; - case 329: -#line 792 "./util/configparser.y" + case 331: +#line 802 "./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) @@ -4020,11 +4042,11 @@ yyreduce: else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4024 "util/configparser.c" +#line 4046 "util/configparser.c" break; - case 330: -#line 801 "./util/configparser.y" + case 332: +#line 811 "./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) @@ -4032,11 +4054,11 @@ yyreduce: else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4036 "util/configparser.c" +#line 4058 "util/configparser.c" break; - case 331: -#line 810 "./util/configparser.y" + case 333: +#line 820 "./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) @@ -4044,11 +4066,11 @@ yyreduce: else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4048 "util/configparser.c" +#line 4070 "util/configparser.c" break; - case 332: -#line 819 "./util/configparser.y" + case 334: +#line 829 "./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) @@ -4056,11 +4078,11 @@ yyreduce: else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4060 "util/configparser.c" +#line 4082 "util/configparser.c" break; - case 333: -#line 828 "./util/configparser.y" + case 335: +#line 838 "./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) @@ -4068,11 +4090,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4072 "util/configparser.c" +#line 4094 "util/configparser.c" break; - case 334: -#line 837 "./util/configparser.y" + case 336: +#line 847 "./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) @@ -4080,11 +4102,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4084 "util/configparser.c" +#line 4106 "util/configparser.c" break; - case 335: -#line 846 "./util/configparser.y" + case 337: +#line 856 "./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) @@ -4092,11 +4114,11 @@ yyreduce: else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4096 "util/configparser.c" +#line 4118 "util/configparser.c" break; - case 336: -#line 855 "./util/configparser.y" + case 338: +#line 865 "./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) @@ -4104,11 +4126,11 @@ yyreduce: else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4108 "util/configparser.c" +#line 4130 "util/configparser.c" break; - case 337: -#line 864 "./util/configparser.y" + case 339: +#line 874 "./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) @@ -4120,11 +4142,11 @@ yyreduce: else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4124 "util/configparser.c" +#line 4146 "util/configparser.c" break; - case 338: -#line 877 "./util/configparser.y" + case 340: +#line 887 "./util/configparser.y" { OUTYY(("P(server_max_reuse_tcp_queries:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4134,11 +4156,11 @@ yyreduce: else cfg_parser->cfg->max_reuse_tcp_queries = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4138 "util/configparser.c" +#line 4160 "util/configparser.c" break; - case 339: -#line 888 "./util/configparser.y" + case 341: +#line 898 "./util/configparser.y" { OUTYY(("P(server_tcp_reuse_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4148,11 +4170,11 @@ yyreduce: else cfg_parser->cfg->tcp_reuse_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4152 "util/configparser.c" +#line 4174 "util/configparser.c" break; - case 340: -#line 899 "./util/configparser.y" + case 342: +#line 909 "./util/configparser.y" { OUTYY(("P(server_tcp_auth_query_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4162,11 +4184,11 @@ yyreduce: else cfg_parser->cfg->tcp_auth_query_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4166 "util/configparser.c" +#line 4188 "util/configparser.c" break; - case 341: -#line 910 "./util/configparser.y" + case 343: +#line 920 "./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) @@ -4174,11 +4196,11 @@ yyreduce: else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4178 "util/configparser.c" +#line 4200 "util/configparser.c" break; - case 342: -#line 919 "./util/configparser.y" + case 344: +#line 929 "./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) @@ -4190,11 +4212,11 @@ yyreduce: else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4194 "util/configparser.c" +#line 4216 "util/configparser.c" break; - case 343: -#line 932 "./util/configparser.y" + case 345: +#line 942 "./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) @@ -4202,11 +4224,11 @@ yyreduce: else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4206 "util/configparser.c" +#line 4228 "util/configparser.c" break; - case 344: -#line 941 "./util/configparser.y" + case 346: +#line 951 "./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) @@ -4214,11 +4236,11 @@ yyreduce: else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4218 "util/configparser.c" +#line 4240 "util/configparser.c" break; - case 345: -#line 950 "./util/configparser.y" + case 347: +#line 960 "./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) @@ -4226,31 +4248,31 @@ yyreduce: else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4230 "util/configparser.c" +#line 4252 "util/configparser.c" break; - case 346: -#line 959 "./util/configparser.y" + case 348: +#line 969 "./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 4240 "util/configparser.c" +#line 4262 "util/configparser.c" break; - case 347: -#line 966 "./util/configparser.y" + case 349: +#line 976 "./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 4250 "util/configparser.c" +#line 4272 "util/configparser.c" break; - case 348: -#line 973 "./util/configparser.y" + case 350: +#line 983 "./util/configparser.y" { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4258,21 +4280,21 @@ yyreduce: else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4262 "util/configparser.c" +#line 4284 "util/configparser.c" break; - case 349: -#line 982 "./util/configparser.y" + case 351: +#line 992 "./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 4272 "util/configparser.c" +#line 4294 "util/configparser.c" break; - case 350: -#line 989 "./util/configparser.y" + case 352: +#line 999 "./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) @@ -4280,53 +4302,53 @@ yyreduce: else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4284 "util/configparser.c" +#line 4306 "util/configparser.c" break; - case 351: -#line 998 "./util/configparser.y" + case 353: +#line 1008 "./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 4295 "util/configparser.c" +#line 4317 "util/configparser.c" break; - case 352: -#line 1006 "./util/configparser.y" + case 354: +#line 1016 "./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 4305 "util/configparser.c" +#line 4327 "util/configparser.c" break; - case 353: -#line 1013 "./util/configparser.y" + case 355: +#line 1023 "./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 4315 "util/configparser.c" +#line 4337 "util/configparser.c" break; - case 354: -#line 1020 "./util/configparser.y" + case 356: +#line 1030 "./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 4326 "util/configparser.c" +#line 4348 "util/configparser.c" break; - case 355: -#line 1028 "./util/configparser.y" + case 357: +#line 1038 "./util/configparser.y" { OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4334,11 +4356,11 @@ yyreduce: else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4338 "util/configparser.c" +#line 4360 "util/configparser.c" break; - case 356: -#line 1037 "./util/configparser.y" + case 358: +#line 1047 "./util/configparser.y" { OUTYY(("P(server_https_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4346,11 +4368,11 @@ yyreduce: else cfg_parser->cfg->https_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4350 "util/configparser.c" +#line 4372 "util/configparser.c" break; - case 357: -#line 1045 "./util/configparser.y" + case 359: +#line 1055 "./util/configparser.y" { OUTYY(("P(server_http_endpoint:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->http_endpoint); @@ -4366,11 +4388,11 @@ yyreduce: cfg_parser->cfg->http_endpoint = (yyvsp[0].str); } } -#line 4370 "util/configparser.c" +#line 4392 "util/configparser.c" break; - case 358: -#line 1061 "./util/configparser.y" + case 360: +#line 1071 "./util/configparser.y" { OUTYY(("P(server_http_max_streams:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4378,11 +4400,11 @@ yyreduce: else cfg_parser->cfg->http_max_streams = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4382 "util/configparser.c" +#line 4404 "util/configparser.c" break; - case 359: -#line 1069 "./util/configparser.y" + case 361: +#line 1079 "./util/configparser.y" { OUTYY(("P(server_http_query_buffer_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), @@ -4390,11 +4412,11 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4394 "util/configparser.c" +#line 4416 "util/configparser.c" break; - case 360: -#line 1077 "./util/configparser.y" + case 362: +#line 1087 "./util/configparser.y" { OUTYY(("P(server_http_response_buffer_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), @@ -4402,11 +4424,11 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4406 "util/configparser.c" +#line 4428 "util/configparser.c" break; - case 361: -#line 1085 "./util/configparser.y" + case 363: +#line 1095 "./util/configparser.y" { OUTYY(("P(server_http_nodelay:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4414,11 +4436,11 @@ yyreduce: else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4418 "util/configparser.c" +#line 4440 "util/configparser.c" break; - case 362: -#line 1093 "./util/configparser.y" + case 364: +#line 1103 "./util/configparser.y" { OUTYY(("P(server_http_notls_downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4426,11 +4448,11 @@ yyreduce: else cfg_parser->cfg->http_notls_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4430 "util/configparser.c" +#line 4452 "util/configparser.c" break; - case 363: -#line 1101 "./util/configparser.y" + case 365: +#line 1111 "./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) @@ -4438,11 +4460,11 @@ yyreduce: else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4442 "util/configparser.c" +#line 4464 "util/configparser.c" break; - case 364: -#line 1110 "./util/configparser.y" + case 366: +#line 1120 "./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) @@ -4450,11 +4472,11 @@ yyreduce: else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4454 "util/configparser.c" +#line 4476 "util/configparser.c" break; - case 365: -#line 1119 "./util/configparser.y" + case 367: +#line 1129 "./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) @@ -4467,11 +4489,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4471 "util/configparser.c" +#line 4493 "util/configparser.c" break; - case 366: -#line 1133 "./util/configparser.y" + case 368: +#line 1143 "./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) @@ -4479,11 +4501,11 @@ yyreduce: else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4483 "util/configparser.c" +#line 4505 "util/configparser.c" break; - case 367: -#line 1142 "./util/configparser.y" + case 369: +#line 1152 "./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) @@ -4491,11 +4513,11 @@ yyreduce: else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4495 "util/configparser.c" +#line 4517 "util/configparser.c" break; - case 368: -#line 1151 "./util/configparser.y" + case 370: +#line 1161 "./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) @@ -4503,11 +4525,11 @@ yyreduce: else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4507 "util/configparser.c" +#line 4529 "util/configparser.c" break; - case 369: -#line 1160 "./util/configparser.y" + case 371: +#line 1170 "./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) @@ -4515,11 +4537,11 @@ yyreduce: else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4519 "util/configparser.c" +#line 4541 "util/configparser.c" break; - case 370: -#line 1169 "./util/configparser.y" + case 372: +#line 1179 "./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) @@ -4527,11 +4549,11 @@ yyreduce: else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4531 "util/configparser.c" +#line 4553 "util/configparser.c" break; - case 371: -#line 1178 "./util/configparser.y" + case 373: +#line 1188 "./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) @@ -4539,31 +4561,31 @@ yyreduce: else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4543 "util/configparser.c" +#line 4565 "util/configparser.c" break; - case 372: -#line 1187 "./util/configparser.y" + case 374: +#line 1197 "./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 4553 "util/configparser.c" +#line 4575 "util/configparser.c" break; - case 373: -#line 1194 "./util/configparser.y" + case 375: +#line 1204 "./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 4563 "util/configparser.c" +#line 4585 "util/configparser.c" break; - case 374: -#line 1201 "./util/configparser.y" + case 376: +#line 1211 "./util/configparser.y" { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->directory); @@ -4588,105 +4610,105 @@ yyreduce: } } } -#line 4592 "util/configparser.c" +#line 4614 "util/configparser.c" break; - case 375: -#line 1227 "./util/configparser.y" + case 377: +#line 1237 "./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 4603 "util/configparser.c" +#line 4625 "util/configparser.c" break; - case 376: -#line 1235 "./util/configparser.y" + case 378: +#line 1245 "./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 4613 "util/configparser.c" +#line 4635 "util/configparser.c" break; - case 377: -#line 1242 "./util/configparser.y" + case 379: +#line 1252 "./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 4623 "util/configparser.c" +#line 4645 "util/configparser.c" break; - case 378: -#line 1249 "./util/configparser.y" + case 380: +#line 1259 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str))); log_warn("option dlv-anchor-file ignored: DLV is decommissioned"); free((yyvsp[0].str)); } -#line 4633 "util/configparser.c" +#line 4655 "util/configparser.c" break; - case 379: -#line 1256 "./util/configparser.y" + case 381: +#line 1266 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str))); log_warn("option dlv-anchor ignored: DLV is decommissioned"); free((yyvsp[0].str)); } -#line 4643 "util/configparser.c" +#line 4665 "util/configparser.c" break; - case 380: -#line 1263 "./util/configparser.y" + case 382: +#line 1273 "./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 4654 "util/configparser.c" +#line 4676 "util/configparser.c" break; - case 381: -#line 1271 "./util/configparser.y" + case 383: +#line 1281 "./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 4665 "util/configparser.c" +#line 4687 "util/configparser.c" break; - case 382: -#line 1279 "./util/configparser.y" + case 384: +#line 1289 "./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 4676 "util/configparser.c" +#line 4698 "util/configparser.c" break; - case 383: -#line 1287 "./util/configparser.y" + case 385: +#line 1297 "./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 4686 "util/configparser.c" +#line 4708 "util/configparser.c" break; - case 384: -#line 1294 "./util/configparser.y" + case 386: +#line 1304 "./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) @@ -4696,11 +4718,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4700 "util/configparser.c" +#line 4722 "util/configparser.c" break; - case 385: -#line 1305 "./util/configparser.y" + case 387: +#line 1315 "./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) @@ -4710,21 +4732,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4714 "util/configparser.c" +#line 4736 "util/configparser.c" break; - case 386: -#line 1316 "./util/configparser.y" + case 388: +#line 1326 "./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 4724 "util/configparser.c" +#line 4746 "util/configparser.c" break; - case 387: -#line 1323 "./util/configparser.y" + case 389: +#line 1333 "./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) @@ -4732,11 +4754,11 @@ yyreduce: else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4736 "util/configparser.c" +#line 4758 "util/configparser.c" break; - case 388: -#line 1332 "./util/configparser.y" + case 390: +#line 1342 "./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) @@ -4744,11 +4766,11 @@ yyreduce: else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4748 "util/configparser.c" +#line 4770 "util/configparser.c" break; - case 389: -#line 1341 "./util/configparser.y" + case 391: +#line 1351 "./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) @@ -4756,11 +4778,11 @@ yyreduce: else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4760 "util/configparser.c" +#line 4782 "util/configparser.c" break; - case 390: -#line 1350 "./util/configparser.y" + case 392: +#line 1360 "./util/configparser.y" { OUTYY(("P(server_hide_user_agent:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4768,41 +4790,41 @@ yyreduce: else cfg_parser->cfg->hide_http_user_agent = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4772 "util/configparser.c" +#line 4794 "util/configparser.c" break; - case 391: -#line 1359 "./util/configparser.y" + case 393: +#line 1369 "./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 4782 "util/configparser.c" +#line 4804 "util/configparser.c" break; - case 392: -#line 1366 "./util/configparser.y" + case 394: +#line 1376 "./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 4792 "util/configparser.c" +#line 4814 "util/configparser.c" break; - case 393: -#line 1373 "./util/configparser.y" + case 395: +#line 1383 "./util/configparser.y" { OUTYY(("P(server_http_user_agent:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->http_user_agent); cfg_parser->cfg->http_user_agent = (yyvsp[0].str); } -#line 4802 "util/configparser.c" +#line 4824 "util/configparser.c" break; - case 394: -#line 1380 "./util/configparser.y" + case 396: +#line 1390 "./util/configparser.y" { OUTYY(("P(server_nsid:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->nsid_cfg_str); @@ -4817,33 +4839,33 @@ yyreduce: yyerror("the NSID must be either a hex string or an " "ascii character string prepended with ascii_."); } -#line 4821 "util/configparser.c" +#line 4843 "util/configparser.c" break; - case 395: -#line 1396 "./util/configparser.y" + case 397: +#line 1406 "./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 4832 "util/configparser.c" +#line 4854 "util/configparser.c" break; - case 396: -#line 1404 "./util/configparser.y" + case 398: +#line 1414 "./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 4843 "util/configparser.c" +#line 4865 "util/configparser.c" break; - case 397: -#line 1412 "./util/configparser.y" + case 399: +#line 1422 "./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) @@ -4852,11 +4874,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4856 "util/configparser.c" +#line 4878 "util/configparser.c" break; - case 398: -#line 1422 "./util/configparser.y" + case 400: +#line 1432 "./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) @@ -4865,11 +4887,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4869 "util/configparser.c" +#line 4891 "util/configparser.c" break; - case 399: -#line 1432 "./util/configparser.y" + case 401: +#line 1442 "./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) @@ -4878,11 +4900,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4882 "util/configparser.c" +#line 4904 "util/configparser.c" break; - case 400: -#line 1442 "./util/configparser.y" + case 402: +#line 1452 "./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) @@ -4895,22 +4917,22 @@ yyreduce: cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4899 "util/configparser.c" +#line 4921 "util/configparser.c" break; - case 401: -#line 1456 "./util/configparser.y" + case 403: +#line 1466 "./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 4910 "util/configparser.c" +#line 4932 "util/configparser.c" break; - case 402: -#line 1464 "./util/configparser.y" + case 404: +#line 1474 "./util/configparser.y" { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4922,11 +4944,11 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4926 "util/configparser.c" +#line 4948 "util/configparser.c" break; - case 403: -#line 1477 "./util/configparser.y" + case 405: +#line 1487 "./util/configparser.y" { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4936,22 +4958,22 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4940 "util/configparser.c" +#line 4962 "util/configparser.c" break; - case 404: -#line 1488 "./util/configparser.y" + case 406: +#line 1498 "./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 4951 "util/configparser.c" +#line 4973 "util/configparser.c" break; - case 405: -#line 1496 "./util/configparser.y" + case 407: +#line 1506 "./util/configparser.y" { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -4963,11 +4985,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4967 "util/configparser.c" +#line 4989 "util/configparser.c" break; - case 406: -#line 1509 "./util/configparser.y" + case 408: +#line 1519 "./util/configparser.y" { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4975,11 +4997,11 @@ yyreduce: else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4979 "util/configparser.c" +#line 5001 "util/configparser.c" break; - case 407: -#line 1518 "./util/configparser.y" + case 409: +#line 1528 "./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) @@ -4987,11 +5009,11 @@ yyreduce: else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4991 "util/configparser.c" +#line 5013 "util/configparser.c" break; - case 408: -#line 1527 "./util/configparser.y" + case 410: +#line 1537 "./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) @@ -4999,11 +5021,11 @@ yyreduce: else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5003 "util/configparser.c" +#line 5025 "util/configparser.c" break; - case 409: -#line 1536 "./util/configparser.y" + case 411: +#line 1546 "./util/configparser.y" { OUTYY(("P(server_udp_connect:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5011,11 +5033,11 @@ yyreduce: else cfg_parser->cfg->udp_connect = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5015 "util/configparser.c" +#line 5037 "util/configparser.c" break; - case 410: -#line 1545 "./util/configparser.y" + case 412: +#line 1555 "./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) @@ -5024,11 +5046,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5028 "util/configparser.c" +#line 5050 "util/configparser.c" break; - case 411: -#line 1555 "./util/configparser.y" + case 413: +#line 1565 "./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) @@ -5037,22 +5059,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5041 "util/configparser.c" +#line 5063 "util/configparser.c" break; - case 412: -#line 1565 "./util/configparser.y" + case 414: +#line 1575 "./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 5052 "util/configparser.c" +#line 5074 "util/configparser.c" break; - case 413: -#line 1573 "./util/configparser.y" + case 415: +#line 1583 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -5064,11 +5086,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5068 "util/configparser.c" +#line 5090 "util/configparser.c" break; - case 414: -#line 1586 "./util/configparser.y" + case 416: +#line 1596 "./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) @@ -5076,22 +5098,22 @@ yyreduce: else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5080 "util/configparser.c" +#line 5102 "util/configparser.c" break; - case 415: -#line 1595 "./util/configparser.y" + case 417: +#line 1605 "./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 5091 "util/configparser.c" +#line 5113 "util/configparser.c" break; - case 416: -#line 1603 "./util/configparser.y" + case 418: +#line 1613 "./util/configparser.y" { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5099,22 +5121,22 @@ yyreduce: else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5103 "util/configparser.c" +#line 5125 "util/configparser.c" break; - case 417: -#line 1612 "./util/configparser.y" + case 419: +#line 1622 "./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 5114 "util/configparser.c" +#line 5136 "util/configparser.c" break; - case 418: -#line 1620 "./util/configparser.y" + case 420: +#line 1630 "./util/configparser.y" { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -5126,11 +5148,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5130 "util/configparser.c" +#line 5152 "util/configparser.c" break; - case 419: -#line 1633 "./util/configparser.y" + case 421: +#line 1643 "./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) @@ -5138,11 +5160,11 @@ yyreduce: else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5142 "util/configparser.c" +#line 5164 "util/configparser.c" break; - case 420: -#line 1642 "./util/configparser.y" + case 422: +#line 1652 "./util/configparser.y" { OUTYY(("P(server_infra_keep_probing:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5151,21 +5173,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5155 "util/configparser.c" +#line 5177 "util/configparser.c" break; - case 421: -#line 1652 "./util/configparser.y" + case 423: +#line 1662 "./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 5165 "util/configparser.c" +#line 5187 "util/configparser.c" break; - case 422: -#line 1659 "./util/configparser.y" + case 424: +#line 1669 "./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) @@ -5174,11 +5196,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5178 "util/configparser.c" +#line 5200 "util/configparser.c" break; - case 423: -#line 1669 "./util/configparser.y" + case 425: +#line 1679 "./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) @@ -5187,11 +5209,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5191 "util/configparser.c" +#line 5213 "util/configparser.c" break; - case 424: -#line 1679 "./util/configparser.y" + case 426: +#line 1689 "./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) @@ -5200,11 +5222,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5204 "util/configparser.c" +#line 5226 "util/configparser.c" break; - case 425: -#line 1689 "./util/configparser.y" + case 427: +#line 1699 "./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) @@ -5213,11 +5235,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5217 "util/configparser.c" +#line 5239 "util/configparser.c" break; - case 426: -#line 1699 "./util/configparser.y" + case 428: +#line 1709 "./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) @@ -5226,11 +5248,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5230 "util/configparser.c" +#line 5252 "util/configparser.c" break; - case 427: -#line 1709 "./util/configparser.y" + case 429: +#line 1719 "./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) @@ -5239,11 +5261,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5243 "util/configparser.c" +#line 5265 "util/configparser.c" break; - case 428: -#line 1719 "./util/configparser.y" + case 430: +#line 1729 "./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) @@ -5252,11 +5274,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5256 "util/configparser.c" +#line 5278 "util/configparser.c" break; - case 429: -#line 1729 "./util/configparser.y" + case 431: +#line 1739 "./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) @@ -5265,41 +5287,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5269 "util/configparser.c" +#line 5291 "util/configparser.c" break; - case 430: -#line 1739 "./util/configparser.y" + case 432: +#line 1749 "./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 5279 "util/configparser.c" +#line 5301 "util/configparser.c" break; - case 431: -#line 1746 "./util/configparser.y" + case 433: +#line 1756 "./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 5289 "util/configparser.c" +#line 5311 "util/configparser.c" break; - case 432: -#line 1753 "./util/configparser.y" + case 434: +#line 1763 "./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 5299 "util/configparser.c" +#line 5321 "util/configparser.c" break; - case 433: -#line 1760 "./util/configparser.y" + case 435: +#line 1770 "./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) @@ -5307,11 +5329,11 @@ yyreduce: else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5311 "util/configparser.c" +#line 5333 "util/configparser.c" break; - case 434: -#line 1769 "./util/configparser.y" + case 436: +#line 1779 "./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) @@ -5319,11 +5341,11 @@ yyreduce: else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5323 "util/configparser.c" +#line 5345 "util/configparser.c" break; - case 435: -#line 1778 "./util/configparser.y" + case 437: +#line 1788 "./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) @@ -5331,11 +5353,11 @@ yyreduce: else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5335 "util/configparser.c" +#line 5357 "util/configparser.c" break; - case 436: -#line 1787 "./util/configparser.y" + case 438: +#line 1797 "./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) @@ -5343,21 +5365,21 @@ yyreduce: else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5347 "util/configparser.c" +#line 5369 "util/configparser.c" break; - case 437: -#line 1796 "./util/configparser.y" + case 439: +#line 1806 "./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 5357 "util/configparser.c" +#line 5379 "util/configparser.c" break; - case 438: -#line 1803 "./util/configparser.y" + case 440: +#line 1813 "./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) @@ -5366,11 +5388,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5370 "util/configparser.c" +#line 5392 "util/configparser.c" break; - case 439: -#line 1813 "./util/configparser.y" + case 441: +#line 1823 "./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 && @@ -5389,21 +5411,21 @@ yyreduce: fatal_exit("out of memory adding acl"); } } -#line 5393 "util/configparser.c" +#line 5415 "util/configparser.c" break; - case 440: -#line 1833 "./util/configparser.y" + case 442: +#line 1843 "./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 5403 "util/configparser.c" +#line 5425 "util/configparser.c" break; - case 441: -#line 1840 "./util/configparser.y" + case 443: +#line 1850 "./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) { @@ -5420,11 +5442,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5424 "util/configparser.c" +#line 5446 "util/configparser.c" break; - case 442: -#line 1858 "./util/configparser.y" + case 444: +#line 1868 "./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) { @@ -5436,11 +5458,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5440 "util/configparser.c" +#line 5462 "util/configparser.c" break; - case 443: -#line 1871 "./util/configparser.y" + case 445: +#line 1881 "./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) { @@ -5452,11 +5474,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5456 "util/configparser.c" +#line 5478 "util/configparser.c" break; - case 444: -#line 1884 "./util/configparser.y" + case 446: +#line 1894 "./util/configparser.y" { OUTYY(("P(server_val_max_restart:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -5468,11 +5490,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5472 "util/configparser.c" +#line 5494 "util/configparser.c" break; - case 445: -#line 1897 "./util/configparser.y" + case 447: +#line 1907 "./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) @@ -5480,11 +5502,11 @@ yyreduce: else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5484 "util/configparser.c" +#line 5506 "util/configparser.c" break; - case 446: -#line 1906 "./util/configparser.y" + case 448: +#line 1916 "./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) @@ -5492,11 +5514,11 @@ yyreduce: else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5496 "util/configparser.c" +#line 5518 "util/configparser.c" break; - case 447: -#line 1915 "./util/configparser.y" + case 449: +#line 1925 "./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) @@ -5504,11 +5526,11 @@ yyreduce: else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5508 "util/configparser.c" +#line 5530 "util/configparser.c" break; - case 448: -#line 1924 "./util/configparser.y" + case 450: +#line 1934 "./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) @@ -5516,11 +5538,11 @@ yyreduce: else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5520 "util/configparser.c" +#line 5542 "util/configparser.c" break; - case 449: -#line 1933 "./util/configparser.y" + case 451: +#line 1943 "./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) @@ -5529,11 +5551,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5533 "util/configparser.c" +#line 5555 "util/configparser.c" break; - case 450: -#line 1943 "./util/configparser.y" + case 452: +#line 1953 "./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) @@ -5542,11 +5564,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5546 "util/configparser.c" +#line 5568 "util/configparser.c" break; - case 451: -#line 1953 "./util/configparser.y" + case 453: +#line 1963 "./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) @@ -5556,11 +5578,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5560 "util/configparser.c" +#line 5582 "util/configparser.c" break; - case 452: -#line 1964 "./util/configparser.y" + case 454: +#line 1974 "./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) @@ -5568,11 +5590,11 @@ yyreduce: else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5572 "util/configparser.c" +#line 5594 "util/configparser.c" break; - case 453: -#line 1973 "./util/configparser.y" + case 455: +#line 1983 "./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) @@ -5580,11 +5602,11 @@ yyreduce: else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5584 "util/configparser.c" +#line 5606 "util/configparser.c" break; - case 454: -#line 1982 "./util/configparser.y" + case 456: +#line 1992 "./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) @@ -5592,11 +5614,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5596 "util/configparser.c" +#line 5618 "util/configparser.c" break; - case 455: -#line 1991 "./util/configparser.y" + case 457: +#line 2001 "./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) @@ -5604,11 +5626,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5608 "util/configparser.c" +#line 5630 "util/configparser.c" break; - case 456: -#line 2000 "./util/configparser.y" + case 458: +#line 2010 "./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) @@ -5616,11 +5638,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5620 "util/configparser.c" +#line 5642 "util/configparser.c" break; - case 457: -#line 2009 "./util/configparser.y" + case 459: +#line 2019 "./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) @@ -5628,11 +5650,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5632 "util/configparser.c" +#line 5654 "util/configparser.c" break; - case 458: -#line 2018 "./util/configparser.y" + case 460: +#line 2028 "./util/configparser.y" { OUTYY(("P(server_serve_original_ttl:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5640,11 +5662,11 @@ yyreduce: else cfg_parser->cfg->serve_original_ttl = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5644 "util/configparser.c" +#line 5666 "util/configparser.c" break; - case 459: -#line 2027 "./util/configparser.y" + case 461: +#line 2037 "./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) @@ -5656,11 +5678,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5660 "util/configparser.c" +#line 5682 "util/configparser.c" break; - case 460: -#line 2040 "./util/configparser.y" + case 462: +#line 2050 "./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) @@ -5672,11 +5694,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5676 "util/configparser.c" +#line 5698 "util/configparser.c" break; - case 461: -#line 2053 "./util/configparser.y" + case 463: +#line 2063 "./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) @@ -5684,21 +5706,21 @@ yyreduce: else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5688 "util/configparser.c" +#line 5710 "util/configparser.c" break; - case 462: -#line 2062 "./util/configparser.y" + case 464: +#line 2072 "./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 5698 "util/configparser.c" +#line 5720 "util/configparser.c" break; - case 463: -#line 2069 "./util/configparser.y" + case 465: +#line 2079 "./util/configparser.y" { OUTYY(("P(server_zonemd_permissive_mode:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5706,11 +5728,11 @@ yyreduce: else cfg_parser->cfg->zonemd_permissive_mode = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5710 "util/configparser.c" +#line 5732 "util/configparser.c" break; - case 464: -#line 2078 "./util/configparser.y" + case 466: +#line 2088 "./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) @@ -5718,11 +5740,11 @@ yyreduce: else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5722 "util/configparser.c" +#line 5744 "util/configparser.c" break; - case 465: -#line 2087 "./util/configparser.y" + case 467: +#line 2097 "./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) @@ -5730,11 +5752,11 @@ yyreduce: else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5734 "util/configparser.c" +#line 5756 "util/configparser.c" break; - case 466: -#line 2096 "./util/configparser.y" + case 468: +#line 2106 "./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) @@ -5742,11 +5764,11 @@ yyreduce: else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5746 "util/configparser.c" +#line 5768 "util/configparser.c" break; - case 467: -#line 2105 "./util/configparser.y" + case 469: +#line 2115 "./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) @@ -5755,22 +5777,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5759 "util/configparser.c" +#line 5781 "util/configparser.c" break; - case 468: -#line 2114 "./util/configparser.y" + case 470: +#line 2124 "./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 5770 "util/configparser.c" +#line 5792 "util/configparser.c" break; - case 469: -#line 2122 "./util/configparser.y" + case 471: +#line 2132 "./util/configparser.y" { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -5782,22 +5804,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5786 "util/configparser.c" +#line 5808 "util/configparser.c" break; - case 470: -#line 2135 "./util/configparser.y" + case 472: +#line 2145 "./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 5797 "util/configparser.c" +#line 5819 "util/configparser.c" break; - case 471: -#line 2143 "./util/configparser.y" + case 473: +#line 2153 "./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 && @@ -5841,21 +5863,21 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5845 "util/configparser.c" +#line 5867 "util/configparser.c" break; - case 472: -#line 2188 "./util/configparser.y" + case 474: +#line 2198 "./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 5855 "util/configparser.c" +#line 5877 "util/configparser.c" break; - case 473: -#line 2195 "./util/configparser.y" + case 475: +#line 2205 "./util/configparser.y" { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -5869,11 +5891,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5873 "util/configparser.c" +#line 5895 "util/configparser.c" break; - case 474: -#line 2210 "./util/configparser.y" + case 476: +#line 2220 "./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) @@ -5882,11 +5904,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5886 "util/configparser.c" +#line 5908 "util/configparser.c" break; - case 475: -#line 2220 "./util/configparser.y" + case 477: +#line 2230 "./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) @@ -5895,41 +5917,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5899 "util/configparser.c" +#line 5921 "util/configparser.c" break; - case 476: -#line 2230 "./util/configparser.y" + case 478: +#line 2240 "./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 5909 "util/configparser.c" +#line 5931 "util/configparser.c" break; - case 477: -#line 2237 "./util/configparser.y" + case 479: +#line 2247 "./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 5919 "util/configparser.c" +#line 5941 "util/configparser.c" break; - case 478: -#line 2244 "./util/configparser.y" + case 480: +#line 2254 "./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 5929 "util/configparser.c" +#line 5951 "util/configparser.c" break; - case 479: -#line 2251 "./util/configparser.y" + case 481: +#line 2261 "./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) @@ -5937,22 +5959,22 @@ yyreduce: else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5941 "util/configparser.c" +#line 5963 "util/configparser.c" break; - case 480: -#line 2260 "./util/configparser.y" + case 482: +#line 2270 "./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 5952 "util/configparser.c" +#line 5974 "util/configparser.c" break; - case 481: -#line 2268 "./util/configparser.y" + case 483: +#line 2278 "./util/configparser.y" { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); @@ -5965,11 +5987,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5969 "util/configparser.c" +#line 5991 "util/configparser.c" break; - case 482: -#line 2282 "./util/configparser.y" + case 484: +#line 2292 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5989,11 +6011,11 @@ yyreduce: } } } -#line 5993 "util/configparser.c" +#line 6015 "util/configparser.c" break; - case 483: -#line 2303 "./util/configparser.y" + case 485: +#line 2313 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -6013,11 +6035,11 @@ yyreduce: } } } -#line 6017 "util/configparser.c" +#line 6039 "util/configparser.c" break; - case 484: -#line 2324 "./util/configparser.y" + case 486: +#line 2334 "./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, @@ -6028,11 +6050,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 6032 "util/configparser.c" +#line 6054 "util/configparser.c" break; - case 485: -#line 2336 "./util/configparser.y" + case 487: +#line 2346 "./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, @@ -6043,11 +6065,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 6047 "util/configparser.c" +#line 6069 "util/configparser.c" break; - case 486: -#line 2348 "./util/configparser.y" + case 488: +#line 2358 "./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, @@ -6058,11 +6080,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 6062 "util/configparser.c" +#line 6084 "util/configparser.c" break; - case 487: -#line 2360 "./util/configparser.y" + case 489: +#line 2370 "./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, @@ -6070,11 +6092,11 @@ yyreduce: yyerror("out of memory"); } } -#line 6074 "util/configparser.c" +#line 6096 "util/configparser.c" break; - case 488: -#line 2369 "./util/configparser.y" + case 490: +#line 2379 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -6094,11 +6116,11 @@ yyreduce: } } } -#line 6098 "util/configparser.c" +#line 6120 "util/configparser.c" break; - case 489: -#line 2390 "./util/configparser.y" + case 491: +#line 2400 "./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) @@ -6106,11 +6128,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6110 "util/configparser.c" +#line 6132 "util/configparser.c" break; - case 490: -#line 2399 "./util/configparser.y" + case 492: +#line 2409 "./util/configparser.y" { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -6118,33 +6140,33 @@ yyreduce: else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6122 "util/configparser.c" +#line 6144 "util/configparser.c" break; - case 491: -#line 2408 "./util/configparser.y" + case 493: +#line 2418 "./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 6133 "util/configparser.c" +#line 6155 "util/configparser.c" break; - case 492: -#line 2416 "./util/configparser.y" + case 494: +#line 2426 "./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 6144 "util/configparser.c" +#line 6166 "util/configparser.c" break; - case 493: -#line 2424 "./util/configparser.y" + case 495: +#line 2434 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -6156,11 +6178,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6160 "util/configparser.c" +#line 6182 "util/configparser.c" break; - case 494: -#line 2437 "./util/configparser.y" + case 496: +#line 2447 "./util/configparser.y" { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -6172,11 +6194,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6176 "util/configparser.c" +#line 6198 "util/configparser.c" break; - case 495: -#line 2450 "./util/configparser.y" + case 497: +#line 2460 "./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) { @@ -6190,11 +6212,11 @@ yyreduce: "ratelimit-for-domain"); } } -#line 6194 "util/configparser.c" +#line 6216 "util/configparser.c" break; - case 496: -#line 2465 "./util/configparser.y" + case 498: +#line 2475 "./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) { @@ -6208,11 +6230,11 @@ yyreduce: "ratelimit-below-domain"); } } -#line 6212 "util/configparser.c" +#line 6234 "util/configparser.c" break; - case 497: -#line 2480 "./util/configparser.y" + case 499: +#line 2490 "./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) @@ -6220,11 +6242,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6224 "util/configparser.c" +#line 6246 "util/configparser.c" break; - case 498: -#line 2489 "./util/configparser.y" + case 500: +#line 2499 "./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) @@ -6232,11 +6254,11 @@ yyreduce: else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6236 "util/configparser.c" +#line 6258 "util/configparser.c" break; - case 499: -#line 2498 "./util/configparser.y" + case 501: +#line 2508 "./util/configparser.y" { OUTYY(("P(server_outbound_msg_retry:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -6244,20 +6266,20 @@ yyreduce: else cfg_parser->cfg->outbound_msg_retry = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6248 "util/configparser.c" +#line 6270 "util/configparser.c" break; - case 500: -#line 2507 "./util/configparser.y" + case 502: +#line 2517 "./util/configparser.y" { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 6257 "util/configparser.c" +#line 6279 "util/configparser.c" break; - case 501: -#line 2513 "./util/configparser.y" + case 503: +#line 2523 "./util/configparser.y" { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) <= 0) @@ -6265,11 +6287,11 @@ yyreduce: else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6269 "util/configparser.c" +#line 6291 "util/configparser.c" break; - case 502: -#line 2522 "./util/configparser.y" + case 504: +#line 2532 "./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) @@ -6277,11 +6299,11 @@ yyreduce: else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6281 "util/configparser.c" +#line 6303 "util/configparser.c" break; - case 503: -#line 2531 "./util/configparser.y" + case 505: +#line 2541 "./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) @@ -6290,11 +6312,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6294 "util/configparser.c" +#line 6316 "util/configparser.c" break; - case 504: -#line 2541 "./util/configparser.y" + case 506: +#line 2551 "./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) @@ -6303,11 +6325,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6307 "util/configparser.c" +#line 6329 "util/configparser.c" break; - case 505: -#line 2551 "./util/configparser.y" + case 507: +#line 2561 "./util/configparser.y" { OUTYY(("P(server_pad_responses:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6316,11 +6338,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6320 "util/configparser.c" +#line 6342 "util/configparser.c" break; - case 506: -#line 2561 "./util/configparser.y" + case 508: +#line 2571 "./util/configparser.y" { OUTYY(("P(server_pad_responses_block_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6328,11 +6350,11 @@ yyreduce: else cfg_parser->cfg->pad_responses_block_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6332 "util/configparser.c" +#line 6354 "util/configparser.c" break; - case 507: -#line 2570 "./util/configparser.y" + case 509: +#line 2580 "./util/configparser.y" { OUTYY(("P(server_pad_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6341,11 +6363,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6345 "util/configparser.c" +#line 6367 "util/configparser.c" break; - case 508: -#line 2580 "./util/configparser.y" + case 510: +#line 2590 "./util/configparser.y" { OUTYY(("P(server_pad_queries_block_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6353,11 +6375,11 @@ yyreduce: else cfg_parser->cfg->pad_queries_block_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6357 "util/configparser.c" +#line 6379 "util/configparser.c" break; - case 509: -#line 2589 "./util/configparser.y" + case 511: +#line 2599 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); @@ -6369,11 +6391,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6373 "util/configparser.c" +#line 6395 "util/configparser.c" break; - case 510: -#line 2602 "./util/configparser.y" + case 512: +#line 2612 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); @@ -6385,11 +6407,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6389 "util/configparser.c" +#line 6411 "util/configparser.c" break; - case 511: -#line 2615 "./util/configparser.y" + case 513: +#line 2625 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); @@ -6400,11 +6422,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6404 "util/configparser.c" +#line 6426 "util/configparser.c" break; - case 512: -#line 2627 "./util/configparser.y" + case 514: +#line 2637 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); @@ -6417,11 +6439,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6421 "util/configparser.c" +#line 6443 "util/configparser.c" break; - case 513: -#line 2641 "./util/configparser.y" + case 515: +#line 2651 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); @@ -6432,11 +6454,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6436 "util/configparser.c" +#line 6458 "util/configparser.c" break; - case 514: -#line 2653 "./util/configparser.y" + case 516: +#line 2663 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); @@ -6449,11 +6471,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6453 "util/configparser.c" +#line 6475 "util/configparser.c" break; - case 515: -#line 2667 "./util/configparser.y" + case 517: +#line 2677 "./util/configparser.y" { OUTYY(("P(server_edns_client_string:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert( @@ -6461,11 +6483,11 @@ yyreduce: fatal_exit("out of memory adding " "edns-client-string"); } -#line 6465 "util/configparser.c" +#line 6487 "util/configparser.c" break; - case 516: -#line 2676 "./util/configparser.y" + case 518: +#line 2686 "./util/configparser.y" { OUTYY(("P(edns_client_string_opcode:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -6476,11 +6498,11 @@ yyreduce: free((yyvsp[0].str)); } -#line 6480 "util/configparser.c" +#line 6502 "util/configparser.c" break; - case 517: -#line 2688 "./util/configparser.y" + case 519: +#line 2698 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) @@ -6489,31 +6511,31 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 6493 "util/configparser.c" +#line 6515 "util/configparser.c" break; - case 518: -#line 2698 "./util/configparser.y" + case 520: +#line 2708 "./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 6503 "util/configparser.c" +#line 6525 "util/configparser.c" break; - case 519: -#line 2705 "./util/configparser.y" + case 521: +#line 2715 "./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 6513 "util/configparser.c" +#line 6535 "util/configparser.c" break; - case 520: -#line 2712 "./util/configparser.y" + case 522: +#line 2722 "./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) @@ -6521,11 +6543,11 @@ yyreduce: else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6525 "util/configparser.c" +#line 6547 "util/configparser.c" break; - case 521: -#line 2721 "./util/configparser.y" + case 523: +#line 2731 "./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) @@ -6533,11 +6555,11 @@ yyreduce: else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6537 "util/configparser.c" +#line 6559 "util/configparser.c" break; - case 522: -#line 2730 "./util/configparser.y" + case 524: +#line 2740 "./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) @@ -6546,11 +6568,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6550 "util/configparser.c" +#line 6572 "util/configparser.c" break; - case 523: -#line 2740 "./util/configparser.y" + case 525: +#line 2750 "./util/configparser.y" { OUTYY(("P(stub-tcp-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6559,11 +6581,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6563 "util/configparser.c" +#line 6585 "util/configparser.c" break; - case 524: -#line 2750 "./util/configparser.y" + case 526: +#line 2760 "./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) @@ -6572,11 +6594,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6576 "util/configparser.c" +#line 6598 "util/configparser.c" break; - case 525: -#line 2760 "./util/configparser.y" + case 527: +#line 2770 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) @@ -6585,31 +6607,31 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 6589 "util/configparser.c" +#line 6611 "util/configparser.c" break; - case 526: -#line 2770 "./util/configparser.y" + case 528: +#line 2780 "./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 6599 "util/configparser.c" +#line 6621 "util/configparser.c" break; - case 527: -#line 2777 "./util/configparser.y" + case 529: +#line 2787 "./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 6609 "util/configparser.c" +#line 6631 "util/configparser.c" break; - case 528: -#line 2784 "./util/configparser.y" + case 530: +#line 2794 "./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) @@ -6617,11 +6639,11 @@ yyreduce: else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6621 "util/configparser.c" +#line 6643 "util/configparser.c" break; - case 529: -#line 2793 "./util/configparser.y" + case 531: +#line 2803 "./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) @@ -6629,11 +6651,11 @@ yyreduce: else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6633 "util/configparser.c" +#line 6655 "util/configparser.c" break; - case 530: -#line 2802 "./util/configparser.y" + case 532: +#line 2812 "./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) @@ -6642,11 +6664,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6646 "util/configparser.c" +#line 6668 "util/configparser.c" break; - case 531: -#line 2812 "./util/configparser.y" + case 533: +#line 2822 "./util/configparser.y" { OUTYY(("P(forward-tcp-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6655,11 +6677,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6659 "util/configparser.c" +#line 6681 "util/configparser.c" break; - case 532: -#line 2822 "./util/configparser.y" + case 534: +#line 2832 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) @@ -6668,52 +6690,52 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 6672 "util/configparser.c" +#line 6694 "util/configparser.c" break; - case 533: -#line 2832 "./util/configparser.y" + case 535: +#line 2842 "./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 6682 "util/configparser.c" +#line 6704 "util/configparser.c" break; - case 534: -#line 2839 "./util/configparser.y" + case 536: +#line 2849 "./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 6692 "util/configparser.c" +#line 6714 "util/configparser.c" break; - case 535: -#line 2846 "./util/configparser.y" + case 537: +#line 2856 "./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 6702 "util/configparser.c" +#line 6724 "util/configparser.c" break; - case 536: -#line 2853 "./util/configparser.y" + case 538: +#line 2863 "./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 6713 "util/configparser.c" +#line 6735 "util/configparser.c" break; - case 537: -#line 2861 "./util/configparser.y" + case 539: +#line 2871 "./util/configparser.y" { OUTYY(("P(zonemd-check:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6722,11 +6744,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6726 "util/configparser.c" +#line 6748 "util/configparser.c" break; - case 538: -#line 2871 "./util/configparser.y" + case 540: +#line 2881 "./util/configparser.y" { OUTYY(("P(zonemd-reject-absence:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6735,11 +6757,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6739 "util/configparser.c" +#line 6761 "util/configparser.c" break; - case 539: -#line 2881 "./util/configparser.y" + case 541: +#line 2891 "./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) @@ -6748,11 +6770,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6752 "util/configparser.c" +#line 6774 "util/configparser.c" break; - case 540: -#line 2891 "./util/configparser.y" + case 542: +#line 2901 "./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) @@ -6761,11 +6783,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6765 "util/configparser.c" +#line 6787 "util/configparser.c" break; - case 541: -#line 2901 "./util/configparser.y" + case 543: +#line 2911 "./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) @@ -6774,11 +6796,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6778 "util/configparser.c" +#line 6800 "util/configparser.c" break; - case 542: -#line 2911 "./util/configparser.y" + case 544: +#line 2921 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) @@ -6787,11 +6809,11 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 6791 "util/configparser.c" +#line 6813 "util/configparser.c" break; - case 543: -#line 2921 "./util/configparser.y" + case 545: +#line 2931 "./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 && @@ -6836,11 +6858,11 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 6840 "util/configparser.c" +#line 6862 "util/configparser.c" break; - case 544: -#line 2967 "./util/configparser.y" + case 546: +#line 2977 "./util/configparser.y" { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -6849,33 +6871,33 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 6853 "util/configparser.c" +#line 6875 "util/configparser.c" break; - case 545: -#line 2977 "./util/configparser.y" + case 547: +#line 2987 "./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 6864 "util/configparser.c" +#line 6886 "util/configparser.c" break; - case 546: -#line 2985 "./util/configparser.y" + case 548: +#line 2995 "./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 6875 "util/configparser.c" +#line 6897 "util/configparser.c" break; - case 547: -#line 2993 "./util/configparser.y" + case 549: +#line 3003 "./util/configparser.y" { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -6889,11 +6911,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 6893 "util/configparser.c" +#line 6915 "util/configparser.c" break; - case 548: -#line 3008 "./util/configparser.y" + case 550: +#line 3018 "./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) @@ -6901,19 +6923,19 @@ yyreduce: else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6905 "util/configparser.c" +#line 6927 "util/configparser.c" break; - case 549: -#line 3017 "./util/configparser.y" + case 551: +#line 3027 "./util/configparser.y" { OUTYY(("\nP(remote-control:)\n")); } -#line 6913 "util/configparser.c" +#line 6935 "util/configparser.c" break; - case 560: -#line 3028 "./util/configparser.y" + case 562: +#line 3038 "./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) @@ -6922,11 +6944,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6926 "util/configparser.c" +#line 6948 "util/configparser.c" break; - case 561: -#line 3038 "./util/configparser.y" + case 563: +#line 3048 "./util/configparser.y" { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6934,79 +6956,79 @@ yyreduce: else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6938 "util/configparser.c" +#line 6960 "util/configparser.c" break; - case 562: -#line 3047 "./util/configparser.y" + case 564: +#line 3057 "./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 6948 "util/configparser.c" +#line 6970 "util/configparser.c" break; - case 563: -#line 3054 "./util/configparser.y" + case 565: +#line 3064 "./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 6958 "util/configparser.c" +#line 6980 "util/configparser.c" break; - case 564: -#line 3061 "./util/configparser.y" + case 566: +#line 3071 "./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 6968 "util/configparser.c" +#line 6990 "util/configparser.c" break; - case 565: -#line 3068 "./util/configparser.y" + case 567: +#line 3078 "./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 6978 "util/configparser.c" +#line 7000 "util/configparser.c" break; - case 566: -#line 3075 "./util/configparser.y" + case 568: +#line 3085 "./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 6988 "util/configparser.c" +#line 7010 "util/configparser.c" break; - case 567: -#line 3082 "./util/configparser.y" + case 569: +#line 3092 "./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 6998 "util/configparser.c" +#line 7020 "util/configparser.c" break; - case 568: -#line 3089 "./util/configparser.y" + case 570: +#line 3099 "./util/configparser.y" { OUTYY(("\nP(dnstap:)\n")); } -#line 7006 "util/configparser.c" +#line 7028 "util/configparser.c" break; - case 590: -#line 3109 "./util/configparser.y" + case 592: +#line 3119 "./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) @@ -7014,11 +7036,11 @@ yyreduce: else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7018 "util/configparser.c" +#line 7040 "util/configparser.c" break; - case 591: -#line 3118 "./util/configparser.y" + case 593: +#line 3128 "./util/configparser.y" { OUTYY(("P(dt_dnstap_bidirectional:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -7027,31 +7049,31 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7031 "util/configparser.c" +#line 7053 "util/configparser.c" break; - case 592: -#line 3128 "./util/configparser.y" + case 594: +#line 3138 "./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 7041 "util/configparser.c" +#line 7063 "util/configparser.c" break; - case 593: -#line 3135 "./util/configparser.y" + case 595: +#line 3145 "./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 7051 "util/configparser.c" +#line 7073 "util/configparser.c" break; - case 594: -#line 3142 "./util/configparser.y" + case 596: +#line 3152 "./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) @@ -7059,51 +7081,51 @@ yyreduce: else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7063 "util/configparser.c" +#line 7085 "util/configparser.c" break; - case 595: -#line 3151 "./util/configparser.y" + case 597: +#line 3161 "./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 7073 "util/configparser.c" +#line 7095 "util/configparser.c" break; - case 596: -#line 3158 "./util/configparser.y" + case 598: +#line 3168 "./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 7083 "util/configparser.c" +#line 7105 "util/configparser.c" break; - case 597: -#line 3165 "./util/configparser.y" + case 599: +#line 3175 "./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 7093 "util/configparser.c" +#line 7115 "util/configparser.c" break; - case 598: -#line 3172 "./util/configparser.y" + case 600: +#line 3182 "./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 7103 "util/configparser.c" +#line 7125 "util/configparser.c" break; - case 599: -#line 3179 "./util/configparser.y" + case 601: +#line 3189 "./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) @@ -7111,11 +7133,11 @@ yyreduce: else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7115 "util/configparser.c" +#line 7137 "util/configparser.c" break; - case 600: -#line 3188 "./util/configparser.y" + case 602: +#line 3198 "./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) @@ -7123,31 +7145,31 @@ yyreduce: else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7127 "util/configparser.c" +#line 7149 "util/configparser.c" break; - case 601: -#line 3197 "./util/configparser.y" + case 603: +#line 3207 "./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 7137 "util/configparser.c" +#line 7159 "util/configparser.c" break; - case 602: -#line 3204 "./util/configparser.y" + case 604: +#line 3214 "./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 7147 "util/configparser.c" +#line 7169 "util/configparser.c" break; - case 603: -#line 3211 "./util/configparser.y" + case 605: +#line 3221 "./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) @@ -7156,11 +7178,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7160 "util/configparser.c" +#line 7182 "util/configparser.c" break; - case 604: -#line 3221 "./util/configparser.y" + case 606: +#line 3231 "./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) @@ -7169,11 +7191,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7173 "util/configparser.c" +#line 7195 "util/configparser.c" break; - case 605: -#line 3231 "./util/configparser.y" + case 607: +#line 3241 "./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) @@ -7182,11 +7204,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7186 "util/configparser.c" +#line 7208 "util/configparser.c" break; - case 606: -#line 3241 "./util/configparser.y" + case 608: +#line 3251 "./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) @@ -7195,11 +7217,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7199 "util/configparser.c" +#line 7221 "util/configparser.c" break; - case 607: -#line 3251 "./util/configparser.y" + case 609: +#line 3261 "./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) @@ -7208,11 +7230,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7212 "util/configparser.c" +#line 7234 "util/configparser.c" break; - case 608: -#line 3261 "./util/configparser.y" + case 610: +#line 3271 "./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) @@ -7221,47 +7243,47 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7225 "util/configparser.c" +#line 7247 "util/configparser.c" break; - case 609: -#line 3271 "./util/configparser.y" + case 611: +#line 3281 "./util/configparser.y" { OUTYY(("\nP(python:)\n")); } -#line 7233 "util/configparser.c" +#line 7255 "util/configparser.c" break; - case 613: -#line 3280 "./util/configparser.y" + case 615: +#line 3290 "./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 7243 "util/configparser.c" +#line 7265 "util/configparser.c" break; - case 614: -#line 3286 "./util/configparser.y" + case 616: +#line 3296 "./util/configparser.y" { OUTYY(("\nP(dynlib:)\n")); } -#line 7251 "util/configparser.c" +#line 7273 "util/configparser.c" break; - case 618: -#line 3295 "./util/configparser.y" + case 620: +#line 3305 "./util/configparser.y" { OUTYY(("P(dynlib-file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, (yyvsp[0].str))) yyerror("out of memory"); } -#line 7261 "util/configparser.c" +#line 7283 "util/configparser.c" break; - case 619: -#line 3301 "./util/configparser.y" + case 621: +#line 3311 "./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) @@ -7270,21 +7292,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7274 "util/configparser.c" +#line 7296 "util/configparser.c" break; - case 620: -#line 3311 "./util/configparser.y" + case 622: +#line 3321 "./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 7284 "util/configparser.c" +#line 7306 "util/configparser.c" break; - case 621: -#line 3318 "./util/configparser.y" + case 623: +#line 3328 "./util/configparser.y" { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -7292,30 +7314,30 @@ yyreduce: (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 7296 "util/configparser.c" +#line 7318 "util/configparser.c" break; - case 622: -#line 3327 "./util/configparser.y" + case 624: +#line 3337 "./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 7307 "util/configparser.c" +#line 7329 "util/configparser.c" break; - case 623: -#line 3335 "./util/configparser.y" + case 625: +#line 3345 "./util/configparser.y" { OUTYY(("\nP(dnscrypt:)\n")); } -#line 7315 "util/configparser.c" +#line 7337 "util/configparser.c" break; - case 636: -#line 3351 "./util/configparser.y" + case 638: +#line 3361 "./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) @@ -7323,11 +7345,11 @@ yyreduce: else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7327 "util/configparser.c" +#line 7349 "util/configparser.c" break; - case 637: -#line 3361 "./util/configparser.y" + case 639: +#line 3371 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -7335,21 +7357,21 @@ yyreduce: else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 7339 "util/configparser.c" +#line 7361 "util/configparser.c" break; - case 638: -#line 3370 "./util/configparser.y" + case 640: +#line 3380 "./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 7349 "util/configparser.c" +#line 7371 "util/configparser.c" break; - case 639: -#line 3377 "./util/configparser.y" + case 641: +#line 3387 "./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))) @@ -7357,21 +7379,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 7361 "util/configparser.c" +#line 7383 "util/configparser.c" break; - case 640: -#line 3386 "./util/configparser.y" + case 642: +#line 3396 "./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 7371 "util/configparser.c" +#line 7393 "util/configparser.c" break; - case 641: -#line 3393 "./util/configparser.y" + case 643: +#line 3403 "./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))) @@ -7379,22 +7401,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 7383 "util/configparser.c" +#line 7405 "util/configparser.c" break; - case 642: -#line 3402 "./util/configparser.y" + case 644: +#line 3412 "./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 7394 "util/configparser.c" +#line 7416 "util/configparser.c" break; - case 643: -#line 3410 "./util/configparser.y" + case 645: +#line 3420 "./util/configparser.y" { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -7406,22 +7428,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 7410 "util/configparser.c" +#line 7432 "util/configparser.c" break; - case 644: -#line 3423 "./util/configparser.y" + case 646: +#line 3433 "./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 7421 "util/configparser.c" +#line 7443 "util/configparser.c" break; - case 645: -#line 3431 "./util/configparser.y" + case 647: +#line 3441 "./util/configparser.y" { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -7433,19 +7455,19 @@ yyreduce: } free((yyvsp[0].str)); } -#line 7437 "util/configparser.c" +#line 7459 "util/configparser.c" break; - case 646: -#line 3444 "./util/configparser.y" + case 648: +#line 3454 "./util/configparser.y" { OUTYY(("\nP(cachedb:)\n")); } -#line 7445 "util/configparser.c" +#line 7467 "util/configparser.c" break; - case 655: -#line 3455 "./util/configparser.y" + case 657: +#line 3465 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); @@ -7456,11 +7478,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7460 "util/configparser.c" +#line 7482 "util/configparser.c" break; - case 656: -#line 3467 "./util/configparser.y" + case 658: +#line 3477 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); @@ -7471,11 +7493,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7475 "util/configparser.c" +#line 7497 "util/configparser.c" break; - case 657: -#line 3479 "./util/configparser.y" + case 659: +#line 3489 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); @@ -7486,11 +7508,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7490 "util/configparser.c" +#line 7512 "util/configparser.c" break; - case 658: -#line 3491 "./util/configparser.y" + case 660: +#line 3501 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; @@ -7504,11 +7526,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 7508 "util/configparser.c" +#line 7530 "util/configparser.c" break; - case 659: -#line 3506 "./util/configparser.y" + case 661: +#line 3516 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); @@ -7520,11 +7542,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 7524 "util/configparser.c" +#line 7546 "util/configparser.c" break; - case 660: -#line 3519 "./util/configparser.y" + case 662: +#line 3529 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str))); @@ -7536,11 +7558,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 7540 "util/configparser.c" +#line 7562 "util/configparser.c" break; - case 661: -#line 3532 "./util/configparser.y" + case 663: +#line 3542 "./util/configparser.y" { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) @@ -7550,19 +7572,19 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 7554 "util/configparser.c" +#line 7576 "util/configparser.c" break; - case 662: -#line 3543 "./util/configparser.y" + case 664: +#line 3553 "./util/configparser.y" { OUTYY(("\nP(ipset:)\n")); } -#line 7562 "util/configparser.c" +#line 7584 "util/configparser.c" break; - case 667: -#line 3552 "./util/configparser.y" + case 669: +#line 3562 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); @@ -7576,11 +7598,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7580 "util/configparser.c" +#line 7602 "util/configparser.c" break; - case 668: -#line 3567 "./util/configparser.y" + case 670: +#line 3577 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); @@ -7594,11 +7616,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7598 "util/configparser.c" +#line 7620 "util/configparser.c" break; -#line 7602 "util/configparser.c" +#line 7624 "util/configparser.c" default: break; } @@ -7792,7 +7814,7 @@ yyreturn: return yyresult; } -#line 3581 "./util/configparser.y" +#line 3591 "./util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index 54a862af3..bac7d08f9 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -371,7 +371,8 @@ extern int yydebug; VAR_NSID = 572, /* VAR_NSID */ VAR_ZONEMD_PERMISSIVE_MODE = 573, /* VAR_ZONEMD_PERMISSIVE_MODE */ VAR_ZONEMD_CHECK = 574, /* VAR_ZONEMD_CHECK */ - VAR_ZONEMD_REJECT_ABSENCE = 575 /* VAR_ZONEMD_REJECT_ABSENCE */ + VAR_ZONEMD_REJECT_ABSENCE = 575, /* VAR_ZONEMD_REJECT_ABSENCE */ + VAR_RPZ_SIGNAL_NXDOMAIN_RA = 576 /* VAR_RPZ_SIGNAL_NXDOMAIN_RA */ }; typedef enum yytokentype yytoken_kind_t; #endif @@ -697,6 +698,7 @@ extern int yydebug; #define VAR_ZONEMD_PERMISSIVE_MODE 573 #define VAR_ZONEMD_CHECK 574 #define VAR_ZONEMD_REJECT_ABSENCE 575 +#define VAR_RPZ_SIGNAL_NXDOMAIN_RA 576 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -706,7 +708,7 @@ union YYSTYPE char* str; -#line 710 "util/configparser.h" +#line 712 "util/configparser.h" }; typedef union YYSTYPE YYSTYPE; diff --git a/util/configparser.y b/util/configparser.y index 1daf853d5..e181174f3 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -187,6 +187,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_DYNLIB VAR_DYNLIB_FILE VAR_EDNS_CLIENT_STRING %token VAR_EDNS_CLIENT_STRING_OPCODE VAR_NSID %token VAR_ZONEMD_PERMISSIVE_MODE VAR_ZONEMD_CHECK VAR_ZONEMD_REJECT_ABSENCE +%token VAR_RPZ_SIGNAL_NXDOMAIN_RA %% toplevelvars: /* empty */ | toplevelvars toplevelvar ; @@ -455,6 +456,15 @@ rpz_log_name: VAR_RPZ_LOG_NAME STRING_ARG cfg_parser->cfg->auths->rpz_log_name = $2; } ; +rpz_signal_nxdomain_ra: VAR_RPZ_SIGNAL_NXDOMAIN_RA STRING_ARG + { + OUTYY(("P(rpz_signal_nxdomain_ra:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->auths->rpz_signal_nxdomain_ra = (strcmp($2, "yes")==0); + free($2); + } + ; rpzstart: VAR_RPZ { @@ -478,7 +488,7 @@ contents_rpz: contents_rpz content_rpz | ; content_rpz: auth_name | auth_zonefile | rpz_tag | auth_master | auth_url | auth_allow_notify | rpz_action_override | rpz_cname_override | - rpz_log | rpz_log_name + rpz_log | rpz_log_name | rpz_signal_nxdomain_ra ; server_num_threads: VAR_NUM_THREADS STRING_ARG { From cbdc138df704fe5be0569aa1ad537dda710bee20 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 4 Jan 2022 13:41:27 +0100 Subject: [PATCH 456/553] - Fix to add test for rpz-signal-nxdomain-ra. --- doc/Changelog | 1 + testdata/rpz_signal_nxdomain_ra.rpl | 82 +++++++++++++++++++++++++++++ 2 files changed, 83 insertions(+) create mode 100644 testdata/rpz_signal_nxdomain_ra.rpl diff --git a/doc/Changelog b/doc/Changelog index cdbaf47c2..5b8eb1658 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -3,6 +3,7 @@ RPZ nxdomain reply. The option rpz-signal-nxdomain-ra allows to signal that a domain is externally blocked to clients when it is blocked with NXDOMAIN by unsetting RA. + - Fix to add test for rpz-signal-nxdomain-ra. 22 December 2021: George - contrib/aaaa-filter-iterator.patch file renewed diff content to diff --git a/testdata/rpz_signal_nxdomain_ra.rpl b/testdata/rpz_signal_nxdomain_ra.rpl new file mode 100644 index 000000000..90f7fea94 --- /dev/null +++ b/testdata/rpz_signal_nxdomain_ra.rpl @@ -0,0 +1,82 @@ +; config options +server: + module-config: "respip validator iterator" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: no + +rpz: + name: "rpz.example.com." + rpz-signal-nxdomain-ra: yes + zonefile: +TEMPFILE_NAME rpz.example.com +TEMPFILE_CONTENTS rpz.example.com +$ORIGIN example.com. +rpz 3600 IN SOA ns1.rpz.example.com. hostmaster.rpz.example.com. ( + 1379078166 28800 7200 604800 7200 ) + 3600 IN NS ns1.rpz.example.com. + 3600 IN NS ns2.rpz.example.com. +$ORIGIN rpz.example.com. +a.a CNAME . +b.a CNAME . +TEMPFILE_END + +stub-zone: + name: "a." + stub-addr: 10.20.30.40 +CONFIG_END + +SCENARIO_BEGIN Test RPZ qname trigger and signal NXDOMAIN with unset RA. + +RANGE_BEGIN 0 100 + ADDRESS 10.20.30.40 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +a. IN NS +SECTION ANSWER +a. IN NS ns.a. +SECTION ADDITIONAL +ns.a IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +a.a. IN TXT +SECTION ANSWER +a.a. IN TXT "upstream txt rr a.a." +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +b.a. IN TXT +SECTION ANSWER +b.a. IN TXT "upstream txt rr b.a." +ENTRY_END + +RANGE_END + +STEP 10 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +a.a. IN TXT +ENTRY_END + +STEP 11 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD AA NXDOMAIN +SECTION QUESTION +a.a. IN TXT +SECTION ANSWER +ENTRY_END + +SCENARIO_END From 95644c9309a6b578802aff6e9808611e73f250bf Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 4 Jan 2022 13:48:29 +0100 Subject: [PATCH 457/553] - Fix #596: only unset RA when NXDOMAIN is signalled. --- doc/Changelog | 1 + services/rpz.c | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 5b8eb1658..c843a3f06 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -4,6 +4,7 @@ signal that a domain is externally blocked to clients when it is blocked with NXDOMAIN by unsetting RA. - Fix to add test for rpz-signal-nxdomain-ra. + - Fix #596: only unset RA when NXDOMAIN is signalled. 22 December 2021: George - contrib/aaaa-filter-iterator.patch file renewed diff content to diff --git a/services/rpz.c b/services/rpz.c index cb05b830c..383440a23 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -1927,7 +1927,8 @@ rpz_synthesize_qname_localdata(struct module_env* env, struct rpz* r, ret = local_zones_zone_answer(z, env, qinfo, edns, repinfo, buf, temp, 0 /* no local data used */, lzt); - if(r->signal_nxdomain_ra) + if(r->signal_nxdomain_ra && LDNS_RCODE_WIRE(sldns_buffer_begin(buf)) + == LDNS_RCODE_NXDOMAIN) LDNS_RA_CLR(sldns_buffer_begin(buf)); if(r->log) { log_rpz_apply("qname", z->name, NULL, localzone_type_to_rpz_action(lzt), From ceef84e022cb5ee42fa32699c8c55d5b0322b429 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 4 Jan 2022 13:49:31 +0100 Subject: [PATCH 458/553] - Fix that RPZ does not set RD flag on replies, it should be copied from the query. --- doc/Changelog | 2 ++ services/rpz.c | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index c843a3f06..34366e7ae 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -5,6 +5,8 @@ is blocked with NXDOMAIN by unsetting RA. - Fix to add test for rpz-signal-nxdomain-ra. - Fix #596: only unset RA when NXDOMAIN is signalled. + - Fix that RPZ does not set RD flag on replies, it should be copied + from the query. 22 December 2021: George - contrib/aaaa-filter-iterator.patch file renewed diff content to diff --git a/services/rpz.c b/services/rpz.c index 383440a23..a8e8b5503 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -1698,7 +1698,7 @@ rpz_synthesize_nodata(struct rpz* ATTR_UNUSED(r), struct module_qstate* ms, if(msg == NULL) { return msg; } msg->qinfo = *qinfo; msg->rep = construct_reply_info_base(ms->region, - LDNS_RCODE_NOERROR | BIT_RD | BIT_QR | BIT_AA | BIT_RA, + LDNS_RCODE_NOERROR | BIT_QR | BIT_AA | BIT_RA, 1, /* qd */ 0, /* ttl */ 0, /* prettl */ @@ -1723,7 +1723,7 @@ rpz_synthesize_nxdomain(struct rpz* r, struct module_qstate* ms, uint16_t flags; if(msg == NULL) { return msg; } msg->qinfo = *qinfo; - flags = LDNS_RCODE_NXDOMAIN | BIT_RD | BIT_QR | BIT_AA | BIT_RA; + flags = LDNS_RCODE_NXDOMAIN | BIT_QR | BIT_AA | BIT_RA; if(r->signal_nxdomain_ra) flags &= ~BIT_RA; msg->rep = construct_reply_info_base(ms->region, @@ -1757,7 +1757,7 @@ rpz_synthesize_localdata_from_rrset(struct rpz* ATTR_UNUSED(r), struct module_qs if(msg == NULL) { return NULL; } new_reply_info = construct_reply_info_base(ms->region, - LDNS_RCODE_NOERROR | BIT_RD | BIT_QR | BIT_AA | BIT_RA, + LDNS_RCODE_NOERROR | BIT_QR | BIT_AA | BIT_RA, 1, /* qd */ 0, /* ttl */ 0, /* prettl */ From 6b2e96430e925245d3633ce831810e386c9c6ffd Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 5 Jan 2022 13:35:18 +0100 Subject: [PATCH 459/553] - Fix for #596: fix that rpz return message is returned and not just the rcode from the iterator return path. This fixes signal unset RA after a CNAME. --- doc/Changelog | 5 +++++ iterator/iterator.c | 4 ++-- testdata/rpz_signal_nxdomain_ra.rpl | 27 +++++++++++++++++++++++++++ 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 34366e7ae..4a6c1c27f 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,8 @@ +5 January 2022: Wouter + - Fix for #596: fix that rpz return message is returned and not just + the rcode from the iterator return path. This fixes signal unset RA + after a CNAME. + 4 January 2022: Wouter - Fix #596: unset the RA bit when a query is blocked by an unbound RPZ nxdomain reply. The option rpz-signal-nxdomain-ra allows to diff --git a/iterator/iterator.c b/iterator/iterator.c index 48238a231..69e7e53dd 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -2534,7 +2534,7 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, struct dns_msg* forged_response = rpz_callback_from_iterator_module(qstate, iq); if(forged_response != NULL) { qstate->ext_state[id] = module_finished; - qstate->return_rcode = FLAGS_GET_RCODE(forged_response->rep->flags); + qstate->return_rcode = LDNS_RCODE_NOERROR; qstate->return_msg = forged_response; iq->response = forged_response; next_state(iq, FINISHED_STATE); @@ -3103,7 +3103,7 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq, } if(forged_response != NULL) { qstate->ext_state[id] = module_finished; - qstate->return_rcode = FLAGS_GET_RCODE(forged_response->rep->flags); + qstate->return_rcode = LDNS_RCODE_NOERROR; qstate->return_msg = forged_response; iq->response = forged_response; next_state(iq, FINISHED_STATE); diff --git a/testdata/rpz_signal_nxdomain_ra.rpl b/testdata/rpz_signal_nxdomain_ra.rpl index 90f7fea94..bab4b65a0 100644 --- a/testdata/rpz_signal_nxdomain_ra.rpl +++ b/testdata/rpz_signal_nxdomain_ra.rpl @@ -61,6 +61,16 @@ SECTION ANSWER b.a. IN TXT "upstream txt rr b.a." ENTRY_END +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +c.a. IN TXT +SECTION ANSWER +c.a. IN CNAME b.a +ENTRY_END + RANGE_END STEP 10 QUERY @@ -79,4 +89,21 @@ a.a. IN TXT SECTION ANSWER ENTRY_END +STEP 20 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +c.a. IN TXT +ENTRY_END + +STEP 21 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD AA NXDOMAIN +SECTION QUESTION +c.a. IN TXT +SECTION ANSWER +c.a. IN CNAME b.a +ENTRY_END + SCENARIO_END From 313bceb9839a8690511c50f01905952cf3609022 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 5 Jan 2022 13:39:06 +0100 Subject: [PATCH 460/553] - Fix unit tests for rpz now that the AA flag returns successfully from the iterator loop. --- doc/Changelog | 2 ++ testdata/rpz_nsdname.rpl | 2 +- testdata/rpz_nsip.rpl | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 4a6c1c27f..b7f0d7e2e 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -2,6 +2,8 @@ - Fix for #596: fix that rpz return message is returned and not just the rcode from the iterator return path. This fixes signal unset RA after a CNAME. + - Fix unit tests for rpz now that the AA flag returns successfully from + the iterator loop. 4 January 2022: Wouter - Fix #596: unset the RA bit when a query is blocked by an unbound diff --git a/testdata/rpz_nsdname.rpl b/testdata/rpz_nsdname.rpl index 08ff3c2e2..1c678cc13 100644 --- a/testdata/rpz_nsdname.rpl +++ b/testdata/rpz_nsdname.rpl @@ -348,7 +348,7 @@ ENTRY_END STEP 11 CHECK_ANSWER ENTRY_BEGIN MATCH all -REPLY QR RD RA NXDOMAIN +REPLY QR AA RD RA NXDOMAIN SECTION QUESTION gotham.aa. IN A SECTION ANSWER diff --git a/testdata/rpz_nsip.rpl b/testdata/rpz_nsip.rpl index ac132cae0..34dbd9fef 100644 --- a/testdata/rpz_nsip.rpl +++ b/testdata/rpz_nsip.rpl @@ -348,7 +348,7 @@ ENTRY_END STEP 11 CHECK_ANSWER ENTRY_BEGIN MATCH all -REPLY QR RD RA NXDOMAIN +REPLY QR AA RD RA NXDOMAIN SECTION QUESTION gotham.aa. IN A SECTION ANSWER From c678c696a14a618bc01bfd634dfd8c87877ff08c Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 5 Jan 2022 14:13:52 +0100 Subject: [PATCH 461/553] - Fix for #596: add unit test for nsdname trigger and signal unset RA. --- doc/Changelog | 1 + testdata/rpz_signal_nxdomain_ra.rpl | 56 +++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index b7f0d7e2e..a6683ec7d 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -4,6 +4,7 @@ after a CNAME. - Fix unit tests for rpz now that the AA flag returns successfully from the iterator loop. + - Fix for #596: add unit test for nsdname trigger and signal unset RA. 4 January 2022: Wouter - Fix #596: unset the RA bit when a query is blocked by an unbound diff --git a/testdata/rpz_signal_nxdomain_ra.rpl b/testdata/rpz_signal_nxdomain_ra.rpl index bab4b65a0..f0ce5e56e 100644 --- a/testdata/rpz_signal_nxdomain_ra.rpl +++ b/testdata/rpz_signal_nxdomain_ra.rpl @@ -18,6 +18,7 @@ rpz 3600 IN SOA ns1.rpz.example.com. hostmaster.rpz.example.com. ( $ORIGIN rpz.example.com. a.a CNAME . b.a CNAME . +ns1.a.rpz-nsdname CNAME . TEMPFILE_END stub-zone: @@ -71,6 +72,45 @@ SECTION ANSWER c.a. IN CNAME b.a ENTRY_END +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +d.a. IN NS +SECTION ANSWER +SECTION AUTHORITY +d.a. IN NS ns1.a. +SECTION ADDITIONAL +ns1.a. IN A 10.20.30.50 +ENTRY_END + +RANGE_END + +RANGE_BEGIN 0 100 + ADDRESS 10.20.30.50 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +d.a. IN NS +SECTION ANSWER +d.a. IN NS ns1.a. +SECTION ADDITIONAL +ns1.a. IN A 10.20.30.50 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +d.d.a. IN TXT +SECTION ANSWER +d.d.a. IN TXT "upstream answer for d.d.a" +ENTRY_END + RANGE_END STEP 10 QUERY @@ -106,4 +146,20 @@ SECTION ANSWER c.a. IN CNAME b.a ENTRY_END +STEP 30 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +d.d.a. IN TXT +ENTRY_END + +STEP 31 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD AA NXDOMAIN +SECTION QUESTION +d.d.a. IN TXT +SECTION ANSWER +ENTRY_END + SCENARIO_END From adcbb6ced781e83fe42adbacc570c836766a949c Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 5 Jan 2022 14:31:42 +0100 Subject: [PATCH 462/553] - Fix for #596: add unit test for nsip trigger and signal unset RA. --- doc/Changelog | 1 + testdata/rpz_signal_nxdomain_ra.rpl | 60 +++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index a6683ec7d..cb1ff554f 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -5,6 +5,7 @@ - Fix unit tests for rpz now that the AA flag returns successfully from the iterator loop. - Fix for #596: add unit test for nsdname trigger and signal unset RA. + - Fix for #596: add unit test for nsip trigger and signal unset RA. 4 January 2022: Wouter - Fix #596: unset the RA bit when a query is blocked by an unbound diff --git a/testdata/rpz_signal_nxdomain_ra.rpl b/testdata/rpz_signal_nxdomain_ra.rpl index f0ce5e56e..d0fbaaa5c 100644 --- a/testdata/rpz_signal_nxdomain_ra.rpl +++ b/testdata/rpz_signal_nxdomain_ra.rpl @@ -19,6 +19,7 @@ $ORIGIN rpz.example.com. a.a CNAME . b.a CNAME . ns1.a.rpz-nsdname CNAME . +24.0.0.0.192.rpz-nsip CNAME . TEMPFILE_END stub-zone: @@ -85,6 +86,19 @@ SECTION ADDITIONAL ns1.a. IN A 10.20.30.50 ENTRY_END +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +e.a. IN NS +SECTION ANSWER +SECTION AUTHORITY +e.a. IN NS ns2.a. +SECTION ADDITIONAL +ns2.a. IN A 192.0.0.5 +ENTRY_END + RANGE_END RANGE_BEGIN 0 100 @@ -113,6 +127,33 @@ ENTRY_END RANGE_END +RANGE_BEGIN 0 100 + ADDRESS 192.0.0.5 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +e.a. IN NS +SECTION ANSWER +e.a. IN NS ns2.a. +SECTION ADDITIONAL +ns2.a. IN A 192.0.0.5 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +e.e.a. IN TXT +SECTION ANSWER +e.e.a. IN TXT "upstream answer for e.e.a" +ENTRY_END + +RANGE_END + +; qname trigger STEP 10 QUERY ENTRY_BEGIN REPLY RD @@ -129,6 +170,7 @@ a.a. IN TXT SECTION ANSWER ENTRY_END +; qname trigger after cname STEP 20 QUERY ENTRY_BEGIN REPLY RD @@ -146,6 +188,7 @@ SECTION ANSWER c.a. IN CNAME b.a ENTRY_END +; nsdname trigger STEP 30 QUERY ENTRY_BEGIN REPLY RD @@ -162,4 +205,21 @@ d.d.a. IN TXT SECTION ANSWER ENTRY_END +; nsip trigger +STEP 40 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +e.e.a. IN TXT +ENTRY_END + +STEP 41 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD AA NXDOMAIN +SECTION QUESTION +e.e.a. IN TXT +SECTION ANSWER +ENTRY_END + SCENARIO_END From eccfe3e1f560aa683b669403b72023975a03b844 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 5 Jan 2022 16:14:47 +0100 Subject: [PATCH 463/553] - Fix #598: Fix unbound-checkconf fatal error: module conf 'respip dns64 validator iterator' is not known to work. --- doc/Changelog | 2 ++ smallapp/unbound-checkconf.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index cb1ff554f..af5cfedee 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -6,6 +6,8 @@ the iterator loop. - Fix for #596: add unit test for nsdname trigger and signal unset RA. - Fix for #596: add unit test for nsip trigger and signal unset RA. + - Fix #598: Fix unbound-checkconf fatal error: module conf + 'respip dns64 validator iterator' is not known to work. 4 January 2022: Wouter - Fix #596: unset the RA bit when a query is blocked by an unbound diff --git a/smallapp/unbound-checkconf.c b/smallapp/unbound-checkconf.c index 34c7d11bc..c667f8115 100644 --- a/smallapp/unbound-checkconf.c +++ b/smallapp/unbound-checkconf.c @@ -691,6 +691,8 @@ morechecks(struct config_file* cfg) && strcmp(cfg->module_conf, "dns64 iterator") != 0 && strcmp(cfg->module_conf, "respip iterator") != 0 && strcmp(cfg->module_conf, "respip validator iterator") != 0 + && strcmp(cfg->module_conf, "respip dns64 validator iterator") != 0 + && strcmp(cfg->module_conf, "respip dns64 iterator") != 0 #ifdef WITH_PYTHONMODULE && strcmp(cfg->module_conf, "python iterator") != 0 && strcmp(cfg->module_conf, "python respip iterator") != 0 From 33ef79d433885e4c69f629fe6b546343795c4bd2 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 5 Jan 2022 16:48:35 +0100 Subject: [PATCH 464/553] - Fix for #596: Fix rpz-signal-nxdomain-ra to work for clientip triggered operation. --- doc/Changelog | 2 ++ services/rpz.c | 4 ++++ testdata/rpz_signal_nxdomain_ra.rpl | 29 +++++++++++++++++++++++++++++ 3 files changed, 35 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index af5cfedee..23c1c05c0 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -8,6 +8,8 @@ - Fix for #596: add unit test for nsip trigger and signal unset RA. - Fix #598: Fix unbound-checkconf fatal error: module conf 'respip dns64 validator iterator' is not known to work. + - Fix for #596: Fix rpz-signal-nxdomain-ra to work for clientip + triggered operation. 4 January 2022: Wouter - Fix #596: unset the RA bit when a query is blocked by an unbound diff --git a/services/rpz.c b/services/rpz.c index a8e8b5503..322e9d139 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -2303,6 +2303,10 @@ rpz_apply_maybe_clientip_trigger(struct auth_zones* az, struct module_env* env, local_zones_zone_answer(*z_out /*likely NULL, no zone*/, env, qinfo, edns, repinfo, buf, temp, 0 /* no local data used */, rpz_action_to_localzone_type(client_action)); + if(*r_out && (*r_out)->signal_nxdomain_ra && + LDNS_RCODE_WIRE(sldns_buffer_begin(buf)) + == LDNS_RCODE_NXDOMAIN) + LDNS_RA_CLR(sldns_buffer_begin(buf)); } ret = 1; goto done; diff --git a/testdata/rpz_signal_nxdomain_ra.rpl b/testdata/rpz_signal_nxdomain_ra.rpl index d0fbaaa5c..b89498cf9 100644 --- a/testdata/rpz_signal_nxdomain_ra.rpl +++ b/testdata/rpz_signal_nxdomain_ra.rpl @@ -3,6 +3,7 @@ server: module-config: "respip validator iterator" target-fetch-policy: "0 0 0 0 0" qname-minimisation: no + access-control: 192.0.0.0/8 allow rpz: name: "rpz.example.com." @@ -20,6 +21,7 @@ a.a CNAME . b.a CNAME . ns1.a.rpz-nsdname CNAME . 24.0.0.0.192.rpz-nsip CNAME . +24.0.3.0.192.rpz-client-ip CNAME . TEMPFILE_END stub-zone: @@ -99,6 +101,16 @@ SECTION ADDITIONAL ns2.a. IN A 192.0.0.5 ENTRY_END +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +f.a. IN TXT +SECTION ANSWER +f.a. IN TXT "upstream txt rr f.a." +ENTRY_END + RANGE_END RANGE_BEGIN 0 100 @@ -222,4 +234,21 @@ e.e.a. IN TXT SECTION ANSWER ENTRY_END +; clientip trigger +STEP 50 QUERY ADDRESS 192.0.3.1 +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +f.a. IN TXT +ENTRY_END + +STEP 51 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR AA RD NXDOMAIN +SECTION QUESTION +f.a. IN TXT +SECTION ANSWER +ENTRY_END + SCENARIO_END From 9bbbca5de9bcbbe30f1631d98b17c9bb3cc1c56c Mon Sep 17 00:00:00 2001 From: Alex Band Date: Fri, 7 Jan 2022 10:21:50 +0100 Subject: [PATCH 465/553] Update documentation links --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c8877d1e9..d1bbcf2b7 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ have any feedback, we would love to hear from you. Don’t hesitate to [create an issue on Github](https://github.com/NLnetLabs/unbound/issues/new) or post a message on the [Unbound mailing list](https://lists.nlnetlabs.nl/mailman/listinfo/unbound-users). You can learn more about Unbound by reading our -[documentation](https://nlnetlabs.nl/documentation/unbound/). +[documentation](https://unbound.docs.nlnetlabs.nl/). ## Compiling @@ -33,7 +33,7 @@ support. All of Unbound's configuration options are described in the man pages, which will be installed and are available on the Unbound -[documentation page](https://nlnetlabs.nl/documentation/unbound/). +[documentation page](https://unbound.docs.nlnetlabs.nl/). An example configuration file is located in [doc/example.conf](https://github.com/NLnetLabs/unbound/blob/master/doc/example.conf.in). From c7f44b99e343820e50f9a09485d685fb22d357b8 Mon Sep 17 00:00:00 2001 From: Petr Mensik Date: Fri, 7 Jan 2022 12:01:28 +0100 Subject: [PATCH 466/553] Change file mode before changing file owner Change mode first when configuring remote control unix socket. Some security systems might strip capability of changing other user's system even to process with effective uid 0. That is done on Fedora by SELinux policy and systemd for example. SELinux audit then shows errors, because unbound tries modifying permissions of not own file. Fix just by mode change as first step, make it owned by unbound:unbound user as the last step only. Related: rhbz#1905441 --- daemon/remote.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/daemon/remote.c b/daemon/remote.c index adf038389..183f6d4dc 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -300,6 +300,7 @@ add_open(const char* ip, int nr, struct listen_port** list, int noproto_is_err, */ if(fd != -1) { #ifdef HAVE_CHOWN + chmod(ip, (mode_t)(S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP)); if (cfg->username && cfg->username[0] && cfg_uid != (uid_t)-1) { if(chown(ip, cfg_uid, cfg_gid) == -1) @@ -307,7 +308,6 @@ add_open(const char* ip, int nr, struct listen_port** list, int noproto_is_err, (unsigned)cfg_uid, (unsigned)cfg_gid, ip, strerror(errno)); } - chmod(ip, (mode_t)(S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP)); #else (void)cfg; #endif From d52d94c6db061f6ed4eaaa803adcdd64724138ad Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 7 Jan 2022 13:23:18 +0100 Subject: [PATCH 467/553] Changelog note for #600 - Merge #600 from pemensik: Change file mode before changing file owner. --- doc/Changelog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 23c1c05c0..1c88f9724 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +7 January 2022: Wouter + - Merge #600 from pemensik: Change file mode before changing file + owner. + 5 January 2022: Wouter - Fix for #596: fix that rpz return message is returned and not just the rcode from the iterator return path. This fixes signal unset RA From a97604737b4c25b8b72b0bbf9b6ea16f98bfec15 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Tue, 11 Jan 2022 10:00:04 +0100 Subject: [PATCH 468/553] - Fix prematurely terminated TCP queries when a reply has the same ID. --- doc/Changelog | 3 +++ services/outside_network.c | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 1c88f9724..586cd1c37 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +11 January 2022: George + - Fix prematurely terminated TCP queries when a reply has the same ID. + 7 January 2022: Wouter - Merge #600 from pemensik: Change file mode before changing file owner. diff --git a/services/outside_network.c b/services/outside_network.c index f4a5d0707..d2389dd2d 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -1248,6 +1248,12 @@ outnet_tcp_cb(struct comm_point* c, void* arg, int error, c->buffer)); /* find the query the reply is for */ w = reuse_tcp_by_id_find(&pend->reuse, id); + /* Make sure that the reply we got is at least for a + * sent query with the same ID; the waiting_tcp that + * gets a reply is assumed to not be waiting to be + * sent. */ + if(w && (w->on_tcp_waiting_list || w->write_wait_queued)) + w = NULL; } } if(error == NETEVENT_NOERROR && !w) { From ff35659d5aaafbdb5bd9a80d5398f7357b7d1bba Mon Sep 17 00:00:00 2001 From: Florian Obser Date: Tue, 11 Jan 2022 15:34:25 +0100 Subject: [PATCH 469/553] Use OpenSSL 1.1 API to access DSA and RSA internals In LibreSSL 3.5, DSA and RSA internals will become opaque, so they can no longer be accessed directly and the libunbound build will break. The required API, DSA_set0_pqg(), DSA_set0_key() as well as RSA_set0_key(), has been available since LibreSSL 2.7, so this change should not affect any users. From Theo Buehler. --- sldns/keyraw.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sldns/keyraw.c b/sldns/keyraw.c index b1e60d8b5..a40f1e860 100644 --- a/sldns/keyraw.c +++ b/sldns/keyraw.c @@ -250,7 +250,7 @@ sldns_key_buf2dsa_raw(unsigned char* key, size_t len) if(!(dsa = DSA_new())) { return NULL; } -#if OPENSSL_VERSION_NUMBER < 0x10100000 || defined(HAVE_LIBRESSL) +#if OPENSSL_VERSION_NUMBER < 0x10100000 #ifndef S_SPLINT_S dsa->p = P; dsa->q = Q; @@ -428,7 +428,7 @@ sldns_key_buf2rsa_raw(unsigned char* key, size_t len) BN_free(modulus); return NULL; } -#if OPENSSL_VERSION_NUMBER < 0x10100000 || defined(HAVE_LIBRESSL) +#if OPENSSL_VERSION_NUMBER < 0x10100000 #ifndef S_SPLINT_S rsa->n = modulus; rsa->e = exponent; From de1e91fc7f82f1880ad92848adb772f378ed3084 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Fri, 14 Jan 2022 13:55:34 +0100 Subject: [PATCH 470/553] - Fix EDNS to upstream where the same option could be attached more than once. - Add a region to serviced_query for allocations. --- services/outside_network.c | 118 +++++++++++-------- services/outside_network.h | 7 ++ testcode/fake_event.c | 35 ++++-- testdata/edns_attached_once_per_upstream.rpl | 90 ++++++++++++++ 4 files changed, 191 insertions(+), 59 deletions(-) create mode 100644 testdata/edns_attached_once_per_upstream.rpl diff --git a/services/outside_network.c b/services/outside_network.c index d2389dd2d..ca92707f3 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -1714,16 +1714,7 @@ static void serviced_node_del(rbnode_type* node, void* ATTR_UNUSED(arg)) { struct serviced_query* sq = (struct serviced_query*)node; - struct service_callback* p = sq->cblist, *np; - free(sq->qbuf); - free(sq->zone); - free(sq->tls_auth_name); - edns_opt_list_free(sq->opt_list); - while(p) { - np = p->next; - free(p); - p = np; - } + alloc_reg_release(sq->alloc, sq->region); free(sq); } @@ -2468,7 +2459,8 @@ 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, - size_t pad_queries_block_size) + size_t pad_queries_block_size, struct alloc_cache* alloc, + struct regional* region) { struct serviced_query* sq = (struct serviced_query*)malloc(sizeof(*sq)); #ifdef UNBOUND_DEBUG @@ -2477,15 +2469,19 @@ serviced_create(struct outside_network* outnet, sldns_buffer* buff, int dnssec, if(!sq) return NULL; sq->node.key = sq; - sq->qbuf = memdup(sldns_buffer_begin(buff), sldns_buffer_limit(buff)); + sq->alloc = alloc; + sq->region = region; + sq->qbuf = regional_alloc_init(region, sldns_buffer_begin(buff), + sldns_buffer_limit(buff)); if(!sq->qbuf) { + alloc_reg_release(alloc, region); free(sq); return NULL; } sq->qbuflen = sldns_buffer_limit(buff); - sq->zone = memdup(zone, zonelen); + sq->zone = regional_alloc_init(region, zone, zonelen); if(!sq->zone) { - free(sq->qbuf); + alloc_reg_release(alloc, region); free(sq); return NULL; } @@ -2497,10 +2493,9 @@ serviced_create(struct outside_network* outnet, sldns_buffer* buff, int dnssec, sq->tcp_upstream = tcp_upstream; sq->ssl_upstream = ssl_upstream; if(tls_auth_name) { - sq->tls_auth_name = strdup(tls_auth_name); + sq->tls_auth_name = regional_strdup(region, tls_auth_name); if(!sq->tls_auth_name) { - free(sq->zone); - free(sq->qbuf); + alloc_reg_release(alloc, region); free(sq); return NULL; } @@ -2509,17 +2504,7 @@ serviced_create(struct outside_network* outnet, sldns_buffer* buff, int dnssec, } memcpy(&sq->addr, addr, addrlen); sq->addrlen = addrlen; - sq->opt_list = NULL; - if(opt_list) { - sq->opt_list = edns_opt_copy_alloc(opt_list); - if(!sq->opt_list) { - free(sq->tls_auth_name); - free(sq->zone); - free(sq->qbuf); - free(sq); - return NULL; - } - } + sq->opt_list = opt_list; sq->outnet = outnet; sq->cblist = NULL; sq->pending = NULL; @@ -2528,7 +2513,7 @@ serviced_create(struct outside_network* outnet, sldns_buffer* buff, int dnssec, sq->to_be_deleted = 0; sq->padding_block_size = pad_queries_block_size; #ifdef UNBOUND_DEBUG - ins = + ins = #else (void) #endif @@ -2898,7 +2883,8 @@ serviced_callbacks(struct serviced_query* sq, int error, struct comm_point* c, * use secondary buffer to store the query. * This is a data copy, but faster than packet to server */ backlen = sldns_buffer_limit(c->buffer); - backup_p = memdup(sldns_buffer_begin(c->buffer), backlen); + backup_p = regional_alloc_init(sq->region, + sldns_buffer_begin(c->buffer), backlen); if(!backup_p) { log_err("malloc failure in serviced query callbacks"); error = NETEVENT_CLOSED; @@ -2916,10 +2902,8 @@ serviced_callbacks(struct serviced_query* sq, int error, struct comm_point* c, } fptr_ok(fptr_whitelist_serviced_query(p->cb)); (void)(*p->cb)(c, p->cb_arg, error, rep); - free(p); } if(backup_p) { - free(backup_p); sq->outnet->svcd_overhead = 0; } verbose(VERB_ALGO, "svcd callbacks end"); @@ -3260,44 +3244,71 @@ outnet_serviced_query(struct outside_network* outnet, 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, struct module_qstate* qstate, - comm_point_callback_type* callback, void* callback_arg, sldns_buffer* buff, - struct module_env* env) + comm_point_callback_type* callback, void* callback_arg, + sldns_buffer* buff, struct module_env* env) { struct serviced_query* sq; struct service_callback* cb; struct edns_string_addr* client_string_addr; + struct regional* region; + struct edns_option* backed_up_opt_list = qstate->edns_opts_back_out; + struct edns_option* per_upstream_opt_list = NULL; - if(!inplace_cb_query_call(env, qinfo, flags, addr, addrlen, zone, zonelen, - qstate, qstate->region)) + /* If we have an already populated EDNS option list make a copy since + * we may now add upstream specific EDNS options. */ + /* Use a region that could be attached to a serviced_query, if it needs + * to be created. If an existing one is found then this region will be + * destroyed here. */ + region = alloc_reg_obtain(env->alloc); + if(!region) return NULL; + if(qstate->edns_opts_back_out) { + per_upstream_opt_list = edns_opt_copy_region( + qstate->edns_opts_back_out, region); + if(!per_upstream_opt_list) { + alloc_reg_release(env->alloc, region); return NULL; + } + qstate->edns_opts_back_out = per_upstream_opt_list; + } + + if(!inplace_cb_query_call(env, qinfo, flags, addr, addrlen, zone, + zonelen, qstate, region)) { + alloc_reg_release(env->alloc, region); + return NULL; + } + /* Restore the option list; we can explicitly use the copied one from + * now on. */ + qstate->edns_opts_back_out = backed_up_opt_list; if((client_string_addr = edns_string_addr_lookup( &env->edns_strings->client_strings, addr, addrlen))) { - edns_opt_list_append(&qstate->edns_opts_back_out, + edns_opt_list_append(&per_upstream_opt_list, env->edns_strings->client_string_opcode, client_string_addr->string_len, - client_string_addr->string, qstate->region); + client_string_addr->string, region); } serviced_gen_query(buff, qinfo->qname, qinfo->qname_len, qinfo->qtype, qinfo->qclass, flags); sq = lookup_serviced(outnet, buff, dnssec, addr, addrlen, - qstate->edns_opts_back_out); - /* duplicate entries are included in the callback list, because - * there is a counterpart registration by our caller that needs to - * be doubly-removed (with callbacks perhaps). */ - if(!(cb = (struct service_callback*)malloc(sizeof(*cb)))) - return NULL; + per_upstream_opt_list); if(!sq) { /* make new serviced query entry */ 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, + per_upstream_opt_list, ( ssl_upstream && env->cfg->pad_queries - ? env->cfg->pad_queries_block_size : 0 )); + ? env->cfg->pad_queries_block_size : 0 ), + env->alloc, region); if(!sq) { - free(cb); + alloc_reg_release(env->alloc, region); + return NULL; + } + if(!(cb = (struct service_callback*)regional_alloc( + sq->region, sizeof(*cb)))) { + (void)rbtree_delete(outnet->serviced, sq); + serviced_node_del(&sq->node, NULL); return NULL; } /* perform first network action */ @@ -3305,17 +3316,25 @@ outnet_serviced_query(struct outside_network* outnet, if(!serviced_udp_send(sq, buff)) { (void)rbtree_delete(outnet->serviced, sq); serviced_node_del(&sq->node, NULL); - free(cb); return NULL; } } else { if(!serviced_tcp_send(sq, buff)) { (void)rbtree_delete(outnet->serviced, sq); serviced_node_del(&sq->node, NULL); - free(cb); return NULL; } } + } else { + /* We don't need this region anymore. */ + alloc_reg_release(env->alloc, region); + /* duplicate entries are included in the callback list, because + * there is a counterpart registration by our caller that needs + * to be doubly-removed (with callbacks perhaps). */ + if(!(cb = (struct service_callback*)regional_alloc( + sq->region, sizeof(*cb)))) { + return NULL; + } } /* add callback to list of callbacks */ cb->cb = callback; @@ -3334,7 +3353,6 @@ callback_list_remove(struct serviced_query* sq, void* cb_arg) if((*pp)->cb_arg == cb_arg) { struct service_callback* del = *pp; *pp = del->next; - free(del); return; } pp = &(*pp)->next; diff --git a/services/outside_network.h b/services/outside_network.h index d0d532e64..10d9d5ca6 100644 --- a/services/outside_network.h +++ b/services/outside_network.h @@ -43,7 +43,9 @@ #ifndef OUTSIDE_NETWORK_H #define OUTSIDE_NETWORK_H +#include "util/alloc.h" #include "util/rbtree.h" +#include "util/regional.h" #include "util/netevent.h" #include "dnstap/dnstap_config.h" struct pending; @@ -512,6 +514,11 @@ struct serviced_query { void* pending; /** block size with which to pad encrypted queries (default: 128) */ size_t padding_block_size; + /** region for this serviced query. Will be cleared when this + * serviced_query will be deleted */ + struct regional* region; + /** allocation service for the region */ + struct alloc_cache* alloc; }; /** diff --git a/testcode/fake_event.c b/testcode/fake_event.c index 6a8245d4a..e1b4443bd 100644 --- a/testcode/fake_event.c +++ b/testcode/fake_event.c @@ -1222,11 +1222,36 @@ struct serviced_query* outnet_serviced_query(struct outside_network* outnet, if(1) { struct edns_data edns; struct edns_string_addr* client_string_addr; + struct edns_option* backed_up_opt_list = + qstate->edns_opts_back_out; + struct edns_option* per_upstream_opt_list = NULL; + /* If we have an already populated EDNS option list make a copy + * since we may now add upstream specific EDNS options. */ + if(qstate->edns_opts_back_out) { + per_upstream_opt_list = edns_opt_copy_region( + qstate->edns_opts_back_out, qstate->region); + if(!per_upstream_opt_list) { + free(pend); + fatal_exit("out of memory"); + } + qstate->edns_opts_back_out = per_upstream_opt_list; + } if(!inplace_cb_query_call(env, qinfo, flags, addr, addrlen, zone, zonelen, qstate, qstate->region)) { free(pend); return NULL; } + /* Restore the option list; we can explicitly use the copied + * one from now on. */ + qstate->edns_opts_back_out = backed_up_opt_list; + if((client_string_addr = edns_string_addr_lookup( + &env->edns_strings->client_strings, + addr, addrlen))) { + edns_opt_list_append(&per_upstream_opt_list, + env->edns_strings->client_string_opcode, + client_string_addr->string_len, + client_string_addr->string, qstate->region); + } /* add edns */ edns.edns_present = 1; edns.ext_rcode = 0; @@ -1236,16 +1261,8 @@ struct serviced_query* outnet_serviced_query(struct outside_network* outnet, if(dnssec) edns.bits = EDNS_DO; edns.padding_block_size = 0; - if((client_string_addr = edns_string_addr_lookup( - &env->edns_strings->client_strings, - addr, addrlen))) { - edns_opt_list_append(&qstate->edns_opts_back_out, - env->edns_strings->client_string_opcode, - client_string_addr->string_len, - client_string_addr->string, qstate->region); - } edns.opt_list_in = NULL; - edns.opt_list_out = qstate->edns_opts_back_out; + edns.opt_list_out = per_upstream_opt_list; edns.opt_list_inplace_cb_out = NULL; attach_edns_record(pend->buffer, &edns); } diff --git a/testdata/edns_attached_once_per_upstream.rpl b/testdata/edns_attached_once_per_upstream.rpl new file mode 100644 index 000000000..19f1ba75d --- /dev/null +++ b/testdata/edns_attached_once_per_upstream.rpl @@ -0,0 +1,90 @@ +; config options +server: + edns-client-string: 10.0.0.0/24 "abc d" + outbound-msg-retry: 1 + +stub-zone: + name: "edns-string-abc." + stub-addr: 10.0.0.3 + stub-first: yes + +forward-zone: + name: "." + forward-addr: 10.0.0.1 + +CONFIG_END + +SCENARIO_BEGIN Test that upstream specific EDNS is attached once; uses string tag option + +RANGE_BEGIN 0 1000 + ADDRESS 10.0.0.3 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR SERVFAIL +SECTION QUESTION +edns-string-abc. IN A +ENTRY_END +RANGE_END + +RANGE_BEGIN 0 1000 + ADDRESS 10.0.0.1 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +edns-string-abc. IN A +SECTION ANSWER +edns-string-abc. IN A 10.20.30.40 +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 10 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +edns-string-abc. IN A +ENTRY_END + +; This will receive SERVFAIL and the next address will be queried +STEP 20 CHECK_OUT_QUERY ADDRESS 10.0.0.3 +ENTRY_BEGIN +MATCH qname qtype opcode ednsdata +SECTION QUESTION +edns-string-abc. IN A +SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + fd e9 ; Opcode 65001 + 00 05 ; Length 5 + 61 62 63 20 64 ; "abc d" + HEX_EDNSDATA_END +ENTRY_END + +; This will receive the answer; makes sure that EDNS is attached once +STEP 22 CHECK_OUT_QUERY ADDRESS 10.0.0.1 +ENTRY_BEGIN +MATCH qname qtype opcode ednsdata +SECTION QUESTION +edns-string-abc. IN A +SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + fd e9 ; Opcode 65001 + 00 05 ; Length 5 + 61 62 63 20 64 ; "abc d" + HEX_EDNSDATA_END +ENTRY_END + + +STEP 30 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +edns-string-abc. IN A +SECTION ANSWER +edns-string-abc. IN A 10.20.30.40 +ENTRY_END + +SCENARIO_END From 773d1f29111b40445ec4bedf416c1f7b64c0605b Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Fri, 14 Jan 2022 15:18:43 +0100 Subject: [PATCH 471/553] - Make sure callback changes for EDNS are not lost. --- services/outside_network.c | 1 + testcode/fake_event.c | 1 + 2 files changed, 2 insertions(+) diff --git a/services/outside_network.c b/services/outside_network.c index ca92707f3..d11431169 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -3278,6 +3278,7 @@ outnet_serviced_query(struct outside_network* outnet, } /* Restore the option list; we can explicitly use the copied one from * now on. */ + per_upstream_opt_list = qstate->edns_opts_back_out; qstate->edns_opts_back_out = backed_up_opt_list; if((client_string_addr = edns_string_addr_lookup( diff --git a/testcode/fake_event.c b/testcode/fake_event.c index e1b4443bd..3c394ca62 100644 --- a/testcode/fake_event.c +++ b/testcode/fake_event.c @@ -1243,6 +1243,7 @@ struct serviced_query* outnet_serviced_query(struct outside_network* outnet, } /* Restore the option list; we can explicitly use the copied * one from now on. */ + per_upstream_opt_list = qstate->edns_opts_back_out; qstate->edns_opts_back_out = backed_up_opt_list; if((client_string_addr = edns_string_addr_lookup( &env->edns_strings->client_strings, From 3c8a79eed8c40bc06c7747fb297d2a2f1ceff7c7 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Fri, 14 Jan 2022 15:35:41 +0100 Subject: [PATCH 472/553] Changelog note for #605: - Merge PR #605: Fix EDNS to upstream where the same option could be attached more than once. --- doc/Changelog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 586cd1c37..b64aff1dc 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,9 @@ +14 January 2022: George + - Merge PR #605: + - Fix EDNS to upstream where the same option could be attached + more than once. + - Add a region to serviced_query for allocations. + 11 January 2022: George - Fix prematurely terminated TCP queries when a reply has the same ID. From 2996040c6c8f6e7523eda802b18e5aac807366dc Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 14 Jan 2022 16:23:43 +0100 Subject: [PATCH 473/553] - Add rpz: for-downstream: yesno option, where the RPZ zone is authoritatively answered for, so the RPZ zone contents can be checked with DNS queries directed at the RPZ zone. --- doc/Changelog | 5 + doc/example.conf.in | 1 + doc/unbound.conf.5.in | 6 + util/configparser.c | 1334 ++++++++++++++++++++--------------------- util/configparser.y | 2 +- 5 files changed, 680 insertions(+), 668 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index b64aff1dc..4215ea9a6 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -4,6 +4,11 @@ more than once. - Add a region to serviced_query for allocations. +14 January 2022: Wouter + - Add rpz: for-downstream: yesno option, where the RPZ zone is + authoritatively answered for, so the RPZ zone contents can be + checked with DNS queries directed at the RPZ zone. + 11 January 2022: George - Fix prematurely terminated TCP queries when a reply has the same ID. diff --git a/doc/example.conf.in b/doc/example.conf.in index 4f4599db2..09047f348 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -1180,4 +1180,5 @@ remote-control: # rpz-log: yes # rpz-log-name: "example policy" # rpz-signal-nxdomain-ra: no +# for-downstream: no # tags: "example" diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 1c9ec9ddb..c0878dad1 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -2638,6 +2638,12 @@ Signal when a query is blocked by the RPZ with NXDOMAIN with an unset RA flag. This allows certain clients, like dnsmasq, to infer that the domain is externally blocked. Default is no. .TP +.B for\-downstream: \fI +If enabled the zone is authoritatively answered for and queries for the RPZ +zone information are answered to downstream clients. This is useful for +monitoring scripts, that can then access the SOA information to check if +the rpz information is up to date. Default is no. +.TP .B tags: \fI Limit the policies from this RPZ clause to clients with a matching tag. Tags need to be defined in \fBdefine\-tag\fR and can be assigned to client addresses diff --git a/util/configparser.c b/util/configparser.c index fd072468a..cbd550c03 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -1790,16 +1790,16 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 681 +#define YYLAST 683 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 322 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 347 /* YYNRULES -- Number of rules. */ -#define YYNRULES 670 +#define YYNRULES 671 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 996 +#define YYNSTATES 997 #define YYMAXUTOK 576 @@ -1909,44 +1909,44 @@ static const yytype_int16 yyrline[] = 369, 369, 371, 391, 392, 393, 393, 393, 393, 394, 394, 394, 395, 395, 395, 398, 417, 434, 442, 452, 459, 469, 487, 488, 489, 489, 489, 489, 489, 490, - 490, 490, 491, 491, 491, 493, 502, 511, 522, 531, - 540, 549, 560, 569, 581, 595, 610, 621, 638, 655, - 672, 689, 704, 719, 732, 747, 756, 765, 774, 783, - 792, 801, 810, 819, 828, 837, 846, 855, 864, 873, - 886, 897, 908, 919, 928, 941, 950, 959, 968, 975, - 982, 991, 998, 1007, 1015, 1022, 1029, 1037, 1046, 1054, - 1070, 1078, 1086, 1094, 1102, 1110, 1119, 1128, 1142, 1151, - 1160, 1169, 1178, 1187, 1196, 1203, 1210, 1236, 1244, 1251, - 1258, 1265, 1272, 1280, 1288, 1296, 1303, 1314, 1325, 1332, - 1341, 1350, 1359, 1368, 1375, 1382, 1389, 1405, 1413, 1421, - 1431, 1441, 1451, 1465, 1473, 1486, 1497, 1505, 1518, 1527, - 1536, 1545, 1554, 1564, 1574, 1582, 1595, 1604, 1612, 1621, - 1629, 1642, 1651, 1661, 1668, 1678, 1688, 1698, 1708, 1718, - 1728, 1738, 1748, 1755, 1762, 1769, 1778, 1787, 1796, 1805, - 1812, 1822, 1842, 1849, 1867, 1880, 1893, 1906, 1915, 1924, - 1933, 1942, 1952, 1962, 1973, 1982, 1991, 2000, 2009, 2018, - 2027, 2036, 2049, 2062, 2071, 2078, 2087, 2096, 2105, 2114, - 2123, 2131, 2144, 2152, 2197, 2204, 2219, 2229, 2239, 2246, - 2253, 2260, 2269, 2277, 2291, 2312, 2333, 2345, 2357, 2369, - 2378, 2399, 2408, 2417, 2425, 2433, 2446, 2459, 2474, 2489, - 2498, 2507, 2516, 2522, 2531, 2540, 2550, 2560, 2570, 2579, - 2589, 2598, 2611, 2624, 2636, 2650, 2662, 2676, 2685, 2697, - 2707, 2714, 2721, 2730, 2739, 2749, 2759, 2769, 2779, 2786, - 2793, 2802, 2811, 2821, 2831, 2841, 2848, 2855, 2862, 2870, - 2880, 2890, 2900, 2910, 2920, 2930, 2976, 2986, 2994, 3002, - 3017, 3026, 3031, 3032, 3033, 3033, 3033, 3034, 3034, 3034, - 3035, 3035, 3037, 3047, 3056, 3063, 3070, 3077, 3084, 3091, - 3098, 3103, 3104, 3105, 3105, 3105, 3106, 3106, 3106, 3107, - 3108, 3108, 3109, 3109, 3110, 3110, 3111, 3112, 3113, 3114, - 3115, 3116, 3118, 3127, 3137, 3144, 3151, 3160, 3167, 3174, - 3181, 3188, 3197, 3206, 3213, 3220, 3230, 3240, 3250, 3260, - 3270, 3280, 3285, 3286, 3287, 3289, 3295, 3300, 3301, 3302, - 3304, 3310, 3320, 3327, 3336, 3344, 3349, 3350, 3352, 3352, - 3352, 3353, 3353, 3354, 3355, 3356, 3357, 3358, 3360, 3370, - 3379, 3386, 3395, 3402, 3411, 3419, 3432, 3440, 3453, 3458, - 3459, 3460, 3460, 3461, 3461, 3461, 3462, 3464, 3476, 3488, - 3500, 3515, 3528, 3541, 3552, 3557, 3558, 3559, 3559, 3561, - 3576 + 490, 490, 491, 491, 491, 491, 493, 502, 511, 522, + 531, 540, 549, 560, 569, 581, 595, 610, 621, 638, + 655, 672, 689, 704, 719, 732, 747, 756, 765, 774, + 783, 792, 801, 810, 819, 828, 837, 846, 855, 864, + 873, 886, 897, 908, 919, 928, 941, 950, 959, 968, + 975, 982, 991, 998, 1007, 1015, 1022, 1029, 1037, 1046, + 1054, 1070, 1078, 1086, 1094, 1102, 1110, 1119, 1128, 1142, + 1151, 1160, 1169, 1178, 1187, 1196, 1203, 1210, 1236, 1244, + 1251, 1258, 1265, 1272, 1280, 1288, 1296, 1303, 1314, 1325, + 1332, 1341, 1350, 1359, 1368, 1375, 1382, 1389, 1405, 1413, + 1421, 1431, 1441, 1451, 1465, 1473, 1486, 1497, 1505, 1518, + 1527, 1536, 1545, 1554, 1564, 1574, 1582, 1595, 1604, 1612, + 1621, 1629, 1642, 1651, 1661, 1668, 1678, 1688, 1698, 1708, + 1718, 1728, 1738, 1748, 1755, 1762, 1769, 1778, 1787, 1796, + 1805, 1812, 1822, 1842, 1849, 1867, 1880, 1893, 1906, 1915, + 1924, 1933, 1942, 1952, 1962, 1973, 1982, 1991, 2000, 2009, + 2018, 2027, 2036, 2049, 2062, 2071, 2078, 2087, 2096, 2105, + 2114, 2123, 2131, 2144, 2152, 2197, 2204, 2219, 2229, 2239, + 2246, 2253, 2260, 2269, 2277, 2291, 2312, 2333, 2345, 2357, + 2369, 2378, 2399, 2408, 2417, 2425, 2433, 2446, 2459, 2474, + 2489, 2498, 2507, 2516, 2522, 2531, 2540, 2550, 2560, 2570, + 2579, 2589, 2598, 2611, 2624, 2636, 2650, 2662, 2676, 2685, + 2697, 2707, 2714, 2721, 2730, 2739, 2749, 2759, 2769, 2779, + 2786, 2793, 2802, 2811, 2821, 2831, 2841, 2848, 2855, 2862, + 2870, 2880, 2890, 2900, 2910, 2920, 2930, 2976, 2986, 2994, + 3002, 3017, 3026, 3031, 3032, 3033, 3033, 3033, 3034, 3034, + 3034, 3035, 3035, 3037, 3047, 3056, 3063, 3070, 3077, 3084, + 3091, 3098, 3103, 3104, 3105, 3105, 3105, 3106, 3106, 3106, + 3107, 3108, 3108, 3109, 3109, 3110, 3110, 3111, 3112, 3113, + 3114, 3115, 3116, 3118, 3127, 3137, 3144, 3151, 3160, 3167, + 3174, 3181, 3188, 3197, 3206, 3213, 3220, 3230, 3240, 3250, + 3260, 3270, 3280, 3285, 3286, 3287, 3289, 3295, 3300, 3301, + 3302, 3304, 3310, 3320, 3327, 3336, 3344, 3349, 3350, 3352, + 3352, 3352, 3353, 3353, 3354, 3355, 3356, 3357, 3358, 3360, + 3370, 3379, 3386, 3395, 3402, 3411, 3419, 3432, 3440, 3453, + 3458, 3459, 3460, 3460, 3461, 3461, 3461, 3462, 3464, 3476, + 3488, 3500, 3515, 3528, 3541, 3552, 3557, 3558, 3559, 3559, + 3561, 3576 }; #endif @@ -2273,7 +2273,7 @@ static const yytype_int16 yytoknum[] = }; #endif -#define YYPACT_NINF (-302) +#define YYPACT_NINF (-308) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) @@ -2287,106 +2287,106 @@ static const yytype_int16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - -302, 0, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, 301, -40, -35, -43, -39, -44, -67, -98, - -106, -300, -230, -231, -301, 3, 5, 6, 7, 37, - 38, 39, 40, 41, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 56, 57, 58, 59, - 80, 81, 82, 83, 84, 85, 87, 88, 89, 90, - 91, 92, 94, 95, 98, 100, 101, 103, 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, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 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, 219, 220, 221, 222, - 223, 224, 225, 230, 237, 238, 240, 242, 243, 245, - 246, 247, 249, 250, 251, 252, 253, 259, 261, 262, - 263, 264, 265, 266, 268, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 294, 295, 296, 298, - 299, 300, 302, 336, 337, 338, 339, 343, 344, 345, - 387, 388, 389, 390, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, 391, 392, 393, 394, 395, 401, - 405, 406, -302, -302, -302, -302, -302, -302, -302, -302, - -302, 433, 434, 435, 437, 438, 446, 459, -302, -302, - -302, -302, -302, -302, -302, -302, 460, 461, 462, 463, - 464, 465, 466, -302, -302, -302, -302, -302, -302, -302, - -302, 467, 468, 469, 470, 471, 472, 473, 474, 475, - 476, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, 477, 478, 519, 521, 540, 541, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - 542, 543, 544, 545, 546, 547, 548, 549, -302, -302, - -302, -302, -302, -302, -302, -302, -302, 550, 561, 562, - 563, 564, 565, 566, 567, 569, 570, 571, 572, 573, - 574, 575, 578, 581, 584, 585, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, 594, -302, -302, 595, - -302, -302, 596, 598, 599, 600, 601, 602, 603, 604, - 605, 610, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, 611, 612, 613, 614, 615, 616, -302, - -302, -302, -302, -302, -302, -302, 617, 618, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, 619, 620, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, 621, 622, 623, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, 624, 625, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, 626, 627, 628, 629, - 630, 631, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, 632, -302, -302, -302, - -302, -302, -302, -302, -302, -302, 633, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, 634, -302, -302, 635, - 636, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, 637, 638, 639, -302, -302, -302, - -302, -302, -302, -302, -302, -302 + -308, 0, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, 301, -39, -32, -43, -30, -44, -42, -97, + -110, -307, -227, -231, -301, 4, 6, 7, 8, 9, + 10, 23, 24, 25, 26, 27, 37, 38, 39, 40, + 41, 43, 44, 53, 54, 56, 57, 58, 59, 60, + 81, 82, 83, 84, 85, 87, 88, 89, 90, 91, + 92, 93, 95, 96, 98, 99, 101, 103, 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, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 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, 219, 220, 221, 222, 223, + 224, 225, 230, 231, 232, 233, 234, 235, 237, 246, + 247, 248, 249, 252, 253, 259, 261, 262, 263, 264, + 265, 266, 268, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 294, 295, 296, 298, 299, 300, + 302, 336, 337, 338, 339, 343, 344, 345, 387, 388, + 389, 390, 391, 392, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, 393, 394, 395, 401, 405, 406, + 433, 434, -308, -308, -308, -308, -308, -308, -308, -308, + -308, 435, 437, 438, 446, 459, 460, 461, -308, -308, + -308, -308, -308, -308, -308, -308, 462, 463, 464, 465, + 466, 467, 468, -308, -308, -308, -308, -308, -308, -308, + -308, 469, 470, 471, 472, 473, 474, 475, 476, 477, + 478, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, 519, 521, 540, 541, 542, 543, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, 544, 545, 546, 547, 548, 549, 550, 561, -308, + -308, -308, -308, -308, -308, -308, -308, -308, 562, 563, + 564, 565, 566, 567, 569, 570, 571, 572, 573, 574, + 575, 578, 581, 584, 585, 594, 595, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, 596, -308, -308, + 598, -308, -308, 599, 600, 601, 602, 603, 604, 605, + 610, 611, 612, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, 613, 614, 615, 616, 617, 618, + -308, -308, -308, -308, -308, -308, -308, 619, 620, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, 621, 622, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, 623, 624, 625, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, 626, 627, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, 628, 629, 630, + 631, 632, 633, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, 634, -308, -308, + -308, -308, -308, -308, -308, -308, -308, 635, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, 636, -308, -308, + 637, 638, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, 639, 640, 641, -308, -308, + -308, -308, -308, -308, -308, -308, -308 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -2394,10 +2394,10 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_int16 yydefact[] = { - 2, 0, 1, 18, 19, 241, 252, 551, 611, 570, - 262, 625, 648, 272, 664, 291, 616, 3, 17, 21, - 243, 254, 264, 274, 293, 553, 572, 613, 618, 627, - 650, 666, 4, 5, 6, 10, 14, 15, 8, 9, + 2, 0, 1, 18, 19, 241, 252, 552, 612, 571, + 262, 626, 649, 272, 665, 291, 617, 3, 17, 21, + 243, 254, 264, 274, 293, 554, 573, 614, 619, 628, + 651, 667, 4, 5, 6, 10, 14, 15, 8, 9, 7, 16, 11, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2451,89 +2451,89 @@ static const yytype_int16 yydefact[] = 0, 273, 275, 276, 277, 278, 282, 283, 284, 279, 280, 281, 0, 0, 0, 0, 0, 0, 296, 300, 301, 302, 303, 304, 292, 294, 295, 297, 298, 299, - 0, 0, 0, 0, 0, 0, 0, 0, 552, 554, - 556, 555, 561, 557, 558, 559, 560, 0, 0, 0, + 305, 0, 0, 0, 0, 0, 0, 0, 0, 553, + 555, 557, 556, 562, 558, 559, 560, 561, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 571, 573, 575, 574, - 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, - 586, 587, 588, 589, 590, 591, 0, 612, 614, 0, - 617, 619, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 626, 628, 629, 630, 632, 633, 631, 634, - 635, 636, 637, 0, 0, 0, 0, 0, 0, 649, - 651, 652, 653, 654, 655, 656, 0, 0, 665, 667, - 668, 306, 305, 312, 325, 323, 335, 331, 332, 336, - 333, 334, 337, 338, 339, 343, 344, 374, 375, 376, - 377, 378, 406, 407, 408, 414, 415, 328, 416, 417, - 420, 418, 419, 423, 424, 425, 439, 389, 390, 393, - 394, 426, 442, 383, 385, 443, 450, 451, 452, 329, - 405, 470, 471, 384, 464, 367, 324, 379, 440, 447, - 427, 0, 0, 474, 330, 307, 366, 431, 308, 326, - 327, 380, 381, 472, 429, 433, 434, 341, 340, 309, - 475, 409, 438, 368, 388, 444, 445, 446, 449, 463, - 382, 468, 466, 467, 397, 404, 435, 436, 398, 399, - 428, 454, 369, 370, 373, 345, 347, 342, 348, 349, - 350, 351, 358, 359, 360, 361, 362, 363, 364, 476, - 477, 479, 410, 411, 412, 413, 421, 422, 480, 481, - 482, 0, 0, 0, 430, 400, 402, 621, 491, 495, - 493, 492, 496, 494, 501, 0, 0, 499, 500, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 432, - 448, 469, 505, 506, 401, 483, 0, 0, 0, 0, - 0, 0, 455, 456, 457, 458, 459, 460, 461, 462, - 622, 391, 392, 395, 386, 453, 365, 310, 311, 387, - 507, 508, 509, 510, 511, 513, 512, 514, 515, 516, - 346, 353, 502, 504, 503, 352, 0, 372, 437, 478, - 371, 403, 354, 355, 357, 356, 0, 518, 396, 465, - 519, 520, 521, 526, 524, 525, 522, 523, 527, 528, - 529, 530, 532, 533, 531, 544, 0, 548, 549, 0, - 0, 550, 534, 542, 535, 536, 537, 541, 543, 538, - 539, 540, 285, 286, 287, 288, 289, 290, 562, 564, - 563, 566, 567, 568, 569, 565, 592, 594, 595, 596, - 597, 598, 599, 600, 601, 602, 593, 603, 604, 605, - 606, 607, 608, 609, 610, 615, 620, 638, 639, 640, - 643, 641, 642, 644, 645, 646, 647, 657, 658, 659, - 660, 661, 662, 669, 670, 441, 473, 490, 623, 624, - 497, 498, 484, 485, 0, 0, 0, 489, 663, 517, - 545, 546, 547, 488, 486, 487 + 0, 0, 0, 0, 0, 0, 0, 572, 574, 576, + 575, 577, 578, 579, 580, 581, 582, 583, 584, 585, + 586, 587, 588, 589, 590, 591, 592, 0, 613, 615, + 0, 618, 620, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 627, 629, 630, 631, 633, 634, 632, + 635, 636, 637, 638, 0, 0, 0, 0, 0, 0, + 650, 652, 653, 654, 655, 656, 657, 0, 0, 666, + 668, 669, 307, 306, 313, 326, 324, 336, 332, 333, + 337, 334, 335, 338, 339, 340, 344, 345, 375, 376, + 377, 378, 379, 407, 408, 409, 415, 416, 329, 417, + 418, 421, 419, 420, 424, 425, 426, 440, 390, 391, + 394, 395, 427, 443, 384, 386, 444, 451, 452, 453, + 330, 406, 471, 472, 385, 465, 368, 325, 380, 441, + 448, 428, 0, 0, 475, 331, 308, 367, 432, 309, + 327, 328, 381, 382, 473, 430, 434, 435, 342, 341, + 310, 476, 410, 439, 369, 389, 445, 446, 447, 450, + 464, 383, 469, 467, 468, 398, 405, 436, 437, 399, + 400, 429, 455, 370, 371, 374, 346, 348, 343, 349, + 350, 351, 352, 359, 360, 361, 362, 363, 364, 365, + 477, 478, 480, 411, 412, 413, 414, 422, 423, 481, + 482, 483, 0, 0, 0, 431, 401, 403, 622, 492, + 496, 494, 493, 497, 495, 502, 0, 0, 500, 501, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 433, 449, 470, 506, 507, 402, 484, 0, 0, 0, + 0, 0, 0, 456, 457, 458, 459, 460, 461, 462, + 463, 623, 392, 393, 396, 387, 454, 366, 311, 312, + 388, 508, 509, 510, 511, 512, 514, 513, 515, 516, + 517, 347, 354, 503, 505, 504, 353, 0, 373, 438, + 479, 372, 404, 355, 356, 358, 357, 0, 519, 397, + 466, 520, 521, 522, 527, 525, 526, 523, 524, 528, + 529, 530, 531, 533, 534, 532, 545, 0, 549, 550, + 0, 0, 551, 535, 543, 536, 537, 538, 542, 544, + 539, 540, 541, 285, 286, 287, 288, 289, 290, 563, + 565, 564, 567, 568, 569, 570, 566, 593, 595, 596, + 597, 598, 599, 600, 601, 602, 603, 594, 604, 605, + 606, 607, 608, 609, 610, 611, 616, 621, 639, 640, + 641, 644, 642, 643, 645, 646, 647, 648, 658, 659, + 660, 661, 662, 663, 670, 671, 442, 474, 491, 624, + 625, 498, 499, 485, 486, 0, 0, 0, 490, 664, + 518, 546, 547, 548, 489, 487, 488 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, 640, 641, 642, - 643, 644, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302, -302, -302, -302, - -302, -302, -302, -302, -302, -302, -302 + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -27, 642, 643, + 644, 645, -308, -308, 646, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, + -308, -308, -308, -308, -308, -308, -308 }; /* YYDEFGOTO[NTERM-NUM]. */ @@ -2566,14 +2566,14 @@ static const yytype_int16 yydefgoto[] = 477, 478, 493, 494, 495, 496, 497, 498, 499, 500, 509, 510, 511, 512, 513, 514, 515, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 524, 525, 526, - 527, 528, 529, 530, 25, 38, 578, 579, 580, 581, - 582, 583, 584, 585, 586, 26, 39, 606, 607, 608, - 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, - 619, 620, 621, 622, 623, 624, 625, 27, 40, 627, - 628, 28, 41, 630, 631, 479, 480, 481, 482, 29, - 42, 642, 643, 644, 645, 646, 647, 648, 649, 650, - 651, 652, 30, 43, 659, 660, 661, 662, 663, 664, - 665, 483, 31, 44, 668, 669, 670 + 527, 528, 529, 530, 25, 38, 579, 580, 581, 582, + 583, 584, 585, 586, 587, 26, 39, 607, 608, 609, + 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, + 620, 621, 622, 623, 624, 625, 626, 27, 40, 628, + 629, 28, 41, 631, 632, 479, 480, 481, 482, 29, + 42, 643, 644, 645, 646, 647, 648, 649, 650, 651, + 652, 653, 30, 43, 660, 661, 662, 663, 664, 665, + 666, 483, 31, 44, 669, 670, 671 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -2581,18 +2581,18 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 2, 531, 516, 666, 667, 484, 531, 485, 486, 626, - 501, 3, 4, 671, 629, 672, 673, 674, 502, 503, - 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, - 570, 571, 572, 573, 574, 575, 576, 577, 517, 518, - 653, 654, 655, 656, 657, 658, 5, 675, 676, 677, - 678, 679, 6, 680, 681, 682, 683, 684, 685, 686, - 687, 688, 689, 690, 691, 519, 692, 693, 694, 695, - 487, 587, 588, 589, 590, 591, 592, 593, 594, 595, + 2, 531, 516, 667, 668, 627, 484, 630, 485, 486, + 565, 3, 4, 501, 672, 531, 673, 674, 675, 676, + 677, 502, 503, 633, 634, 635, 636, 637, 638, 639, + 640, 641, 642, 678, 679, 680, 681, 682, 517, 518, + 654, 655, 656, 657, 658, 659, 5, 683, 684, 685, + 686, 687, 6, 688, 689, 571, 572, 573, 574, 575, + 576, 577, 578, 690, 691, 519, 692, 693, 694, 695, + 696, 487, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, - 696, 697, 698, 699, 700, 701, 7, 702, 703, 704, - 705, 706, 707, 488, 708, 709, 489, 504, 710, 505, - 711, 712, 506, 713, 8, 490, 714, 715, 716, 717, + 606, 697, 698, 699, 700, 701, 7, 702, 703, 704, + 705, 706, 707, 708, 488, 709, 710, 489, 711, 712, + 504, 713, 505, 714, 8, 506, 490, 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, 520, 521, 744, 745, @@ -2604,68 +2604,68 @@ static const yytype_int16 yytable[] = 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 10, 822, - 823, 824, 825, 826, 827, 828, 533, 534, 535, 532, - 829, 533, 534, 535, 536, 537, 538, 830, 831, 11, - 832, 538, 833, 834, 491, 835, 836, 837, 507, 838, - 839, 840, 841, 842, 552, 553, 554, 555, 556, 843, - 12, 844, 845, 846, 847, 848, 849, 557, 850, 13, - 539, 540, 851, 852, 853, 854, 855, 856, 857, 858, - 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, - 869, 870, 871, 14, 872, 873, 874, 15, 875, 876, - 877, 0, 878, 16, 45, 46, 47, 48, 49, 50, + 823, 824, 825, 826, 827, 828, 533, 534, 535, 536, + 829, 830, 831, 832, 833, 834, 538, 835, 532, 11, + 533, 534, 535, 536, 537, 491, 836, 837, 838, 839, + 538, 507, 840, 841, 552, 553, 554, 555, 556, 842, + 12, 843, 844, 845, 846, 847, 848, 557, 849, 13, + 850, 851, 852, 853, 854, 855, 856, 857, 858, 539, + 540, 859, 860, 861, 862, 863, 864, 865, 866, 867, + 868, 869, 870, 14, 871, 872, 873, 15, 874, 875, + 876, 0, 877, 16, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 879, 880, 881, 882, - 77, 78, 79, 883, 884, 885, 80, 81, 82, 83, + 71, 72, 73, 74, 75, 76, 878, 879, 880, 881, + 77, 78, 79, 882, 883, 884, 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, 886, 887, 888, - 889, 890, 891, 892, 893, 894, 121, 122, 123, 124, - 125, 895, 126, 127, 128, 896, 897, 129, 130, 131, + 114, 115, 116, 117, 118, 119, 120, 885, 886, 887, + 888, 889, 890, 891, 892, 893, 121, 122, 123, 124, + 125, 894, 126, 127, 128, 895, 896, 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, 898, 899, 900, 155, 901, 902, 156, - 157, 158, 159, 160, 161, 162, 903, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 904, - 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, - 915, 916, 917, 918, 919, 920, 921, 922, 923, 175, + 152, 153, 154, 897, 898, 899, 155, 900, 901, 156, + 157, 158, 159, 160, 161, 162, 902, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 903, + 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, + 914, 915, 916, 917, 918, 919, 920, 921, 922, 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, 924, - 215, 925, 216, 217, 218, 219, 220, 221, 222, 223, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 923, + 215, 924, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, - 936, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 937, 938, 939, 940, 941, 942, 943, 244, 944, - 945, 946, 947, 948, 949, 950, 245, 246, 951, 247, - 248, 952, 249, 250, 953, 954, 251, 252, 253, 254, - 255, 256, 257, 258, 955, 956, 957, 259, 958, 959, - 960, 961, 962, 963, 964, 965, 260, 261, 262, 263, - 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, - 976, 977, 978, 979, 980, 981, 982, 983, 984, 985, - 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, + 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, + 935, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 936, 937, 938, 939, 940, 941, 942, 244, 943, + 944, 945, 946, 947, 948, 949, 245, 246, 950, 247, + 248, 951, 249, 250, 952, 953, 251, 252, 253, 254, + 255, 256, 257, 258, 954, 955, 956, 259, 957, 958, + 959, 960, 961, 962, 963, 964, 260, 261, 262, 263, + 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, + 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, + 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, + 995, 996, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 565, 566, 567, - 568, 569 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 566, + 567, 568, 569, 570 }; static const yytype_int16 yycheck[] = { - 0, 45, 45, 304, 305, 45, 45, 47, 48, 115, - 45, 11, 12, 10, 314, 10, 10, 10, 53, 54, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 97, 98, 99, 100, 101, 102, 103, 104, 81, 82, + 0, 45, 45, 304, 305, 115, 45, 314, 47, 48, + 37, 11, 12, 45, 10, 45, 10, 10, 10, 10, + 10, 53, 54, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 10, 10, 10, 10, 10, 81, 82, 271, 272, 273, 274, 275, 276, 46, 10, 10, 10, - 10, 10, 52, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 108, 10, 10, 10, 10, - 110, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 10, 10, 10, 10, 10, 10, 96, 10, 10, 10, - 10, 10, 10, 143, 10, 10, 146, 142, 10, 144, - 10, 10, 147, 10, 114, 155, 10, 10, 10, 10, + 10, 10, 52, 10, 10, 97, 98, 99, 100, 101, + 102, 103, 104, 10, 10, 108, 10, 10, 10, 10, + 10, 110, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 10, 10, 10, 10, 10, 96, 10, 10, 10, + 10, 10, 10, 10, 143, 10, 10, 146, 10, 10, + 142, 10, 144, 10, 114, 147, 155, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 189, 190, 10, 10, @@ -2677,13 +2677,13 @@ 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, 228, 10, - 10, 10, 10, 10, 10, 10, 280, 281, 282, 278, - 10, 280, 281, 282, 283, 284, 290, 10, 10, 249, - 10, 290, 10, 10, 294, 10, 10, 10, 293, 10, - 10, 10, 10, 10, 308, 309, 310, 311, 312, 10, + 10, 10, 10, 10, 10, 10, 280, 281, 282, 283, + 10, 10, 10, 10, 10, 10, 290, 10, 278, 249, + 280, 281, 282, 283, 284, 294, 10, 10, 10, 10, + 290, 293, 10, 10, 308, 309, 310, 311, 312, 10, 270, 10, 10, 10, 10, 10, 10, 321, 10, 279, - 319, 320, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 319, + 320, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 303, 10, 10, 10, 307, 10, 10, 10, -1, 10, 313, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, @@ -2719,10 +2719,10 @@ 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, + 10, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 37, 37, 37, - 37, 37 + -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, + 37, 37, 37, 37 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -2786,17 +2786,17 @@ static const yytype_int16 yystos[] = 320, 340, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 308, 309, 310, 311, 312, 321, 341, 342, 343, 344, 345, 346, 349, 579, 580, 581, 582, 583, - 97, 98, 99, 100, 101, 102, 103, 104, 598, 599, - 600, 601, 602, 603, 604, 605, 606, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 609, 610, 611, 612, - 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, - 623, 624, 625, 626, 627, 628, 115, 631, 632, 314, - 635, 636, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 643, 644, 645, 646, 647, 648, 649, 650, - 651, 652, 653, 271, 272, 273, 274, 275, 276, 656, - 657, 658, 659, 660, 661, 662, 304, 305, 666, 667, - 668, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 586, 97, 98, 99, 100, 101, 102, 103, 104, 598, + 599, 600, 601, 602, 603, 604, 605, 606, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 609, 610, 611, + 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, + 622, 623, 624, 625, 626, 627, 628, 115, 631, 632, + 314, 635, 636, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 643, 644, 645, 646, 647, 648, 649, + 650, 651, 652, 653, 271, 272, 273, 274, 275, 276, + 656, 657, 658, 659, 660, 661, 662, 304, 305, 666, + 667, 668, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -2828,7 +2828,7 @@ static const yytype_int16 yystos[] = 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10 + 10, 10, 10, 10, 10, 10, 10 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ @@ -2864,44 +2864,44 @@ static const yytype_int16 yyr1[] = 337, 337, 338, 339, 339, 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, 341, 342, 343, 344, 345, 346, 347, 348, 348, 349, 349, 349, 349, 349, 349, - 349, 349, 349, 349, 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, 541, 542, 543, 544, - 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, - 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, - 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, - 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, - 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, - 595, 596, 597, 597, 598, 598, 598, 598, 598, 598, - 598, 598, 599, 600, 601, 602, 603, 604, 605, 606, - 607, 608, 608, 609, 609, 609, 609, 609, 609, 609, + 349, 349, 349, 349, 349, 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, 541, 542, 543, + 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, + 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, + 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, + 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, + 594, 595, 596, 597, 597, 598, 598, 598, 598, 598, + 598, 598, 598, 599, 600, 601, 602, 603, 604, 605, + 606, 607, 608, 608, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, - 609, 609, 610, 611, 612, 613, 614, 615, 616, 617, - 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, - 628, 629, 630, 630, 631, 632, 633, 634, 634, 635, - 636, 637, 638, 639, 640, 641, 642, 642, 643, 643, - 643, 643, 643, 643, 643, 643, 643, 643, 644, 645, - 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, - 655, 656, 656, 656, 656, 656, 656, 657, 658, 659, - 660, 661, 662, 663, 664, 665, 665, 666, 666, 667, - 668 + 609, 609, 609, 610, 611, 612, 613, 614, 615, 616, + 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, + 627, 628, 629, 630, 630, 631, 632, 633, 634, 634, + 635, 636, 637, 638, 639, 640, 641, 642, 642, 643, + 643, 643, 643, 643, 643, 643, 643, 643, 643, 644, + 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, + 655, 655, 656, 656, 656, 656, 656, 656, 657, 658, + 659, 660, 661, 662, 663, 664, 665, 665, 666, 666, + 667, 668 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -2937,7 +2937,7 @@ static const yytype_int8 yyr2[] = 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, + 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, @@ -2951,30 +2951,30 @@ static const yytype_int8 yyr2[] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 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, 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, 3, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 3, 3, 3, 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, 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, 2, 2, 2, 2, 2, 2, 2, 2, + 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 + 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 }; @@ -3648,7 +3648,7 @@ yyreduce: #line 3649 "util/configparser.c" break; - case 305: + case 306: #line 494 "./util/configparser.y" { OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); @@ -3660,7 +3660,7 @@ yyreduce: #line 3661 "util/configparser.c" break; - case 306: + case 307: #line 503 "./util/configparser.y" { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); @@ -3672,7 +3672,7 @@ yyreduce: #line 3673 "util/configparser.c" break; - case 307: + case 308: #line 512 "./util/configparser.y" { OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); @@ -3686,7 +3686,7 @@ yyreduce: #line 3687 "util/configparser.c" break; - case 308: + case 309: #line 523 "./util/configparser.y" { OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str))); @@ -3698,7 +3698,7 @@ yyreduce: #line 3699 "util/configparser.c" break; - case 309: + case 310: #line 532 "./util/configparser.y" { OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str))); @@ -3710,7 +3710,7 @@ yyreduce: #line 3711 "util/configparser.c" break; - case 310: + case 311: #line 541 "./util/configparser.y" { OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str))); @@ -3722,7 +3722,7 @@ yyreduce: #line 3723 "util/configparser.c" break; - case 311: + case 312: #line 550 "./util/configparser.y" { OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str))); @@ -3736,7 +3736,7 @@ yyreduce: #line 3737 "util/configparser.c" break; - case 312: + case 313: #line 561 "./util/configparser.y" { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); @@ -3748,7 +3748,7 @@ yyreduce: #line 3749 "util/configparser.c" break; - case 313: + case 314: #line 570 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3763,7 +3763,7 @@ yyreduce: #line 3764 "util/configparser.c" break; - case 314: + case 315: #line 582 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3779,7 +3779,7 @@ yyreduce: #line 3780 "util/configparser.c" break; - case 315: + case 316: #line 596 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3797,7 +3797,7 @@ yyreduce: #line 3798 "util/configparser.c" break; - case 316: + case 317: #line 611 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3811,7 +3811,7 @@ yyreduce: #line 3812 "util/configparser.c" break; - case 317: + case 318: #line 622 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3831,7 +3831,7 @@ yyreduce: #line 3832 "util/configparser.c" break; - case 318: + case 319: #line 639 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3851,7 +3851,7 @@ yyreduce: #line 3852 "util/configparser.c" break; - case 319: + case 320: #line 656 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3871,7 +3871,7 @@ yyreduce: #line 3872 "util/configparser.c" break; - case 320: + case 321: #line 673 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3891,7 +3891,7 @@ yyreduce: #line 3892 "util/configparser.c" break; - case 321: + case 322: #line 690 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3909,7 +3909,7 @@ yyreduce: #line 3910 "util/configparser.c" break; - case 322: + case 323: #line 705 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3927,7 +3927,7 @@ yyreduce: #line 3928 "util/configparser.c" break; - case 323: + case 324: #line 720 "./util/configparser.y" { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); @@ -3943,7 +3943,7 @@ yyreduce: #line 3944 "util/configparser.c" break; - case 324: + case 325: #line 733 "./util/configparser.y" { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); @@ -3961,7 +3961,7 @@ yyreduce: #line 3962 "util/configparser.c" break; - case 325: + case 326: #line 748 "./util/configparser.y" { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); @@ -3973,7 +3973,7 @@ yyreduce: #line 3974 "util/configparser.c" break; - case 326: + case 327: #line 757 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); @@ -3985,7 +3985,7 @@ yyreduce: #line 3986 "util/configparser.c" break; - case 327: + case 328: #line 766 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); @@ -3997,7 +3997,7 @@ yyreduce: #line 3998 "util/configparser.c" break; - case 328: + case 329: #line 775 "./util/configparser.y" { OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str))); @@ -4009,7 +4009,7 @@ yyreduce: #line 4010 "util/configparser.c" break; - case 329: + case 330: #line 784 "./util/configparser.y" { OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str))); @@ -4021,7 +4021,7 @@ yyreduce: #line 4022 "util/configparser.c" break; - case 330: + case 331: #line 793 "./util/configparser.y" { OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str))); @@ -4033,7 +4033,7 @@ yyreduce: #line 4034 "util/configparser.c" break; - case 331: + case 332: #line 802 "./util/configparser.y" { OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str))); @@ -4045,7 +4045,7 @@ yyreduce: #line 4046 "util/configparser.c" break; - case 332: + case 333: #line 811 "./util/configparser.y" { OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str))); @@ -4057,7 +4057,7 @@ yyreduce: #line 4058 "util/configparser.c" break; - case 333: + case 334: #line 820 "./util/configparser.y" { OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str))); @@ -4069,7 +4069,7 @@ yyreduce: #line 4070 "util/configparser.c" break; - case 334: + case 335: #line 829 "./util/configparser.y" { OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str))); @@ -4081,7 +4081,7 @@ yyreduce: #line 4082 "util/configparser.c" break; - case 335: + case 336: #line 838 "./util/configparser.y" { OUTYY(("P(server_prefer_ip4:%s)\n", (yyvsp[0].str))); @@ -4093,7 +4093,7 @@ yyreduce: #line 4094 "util/configparser.c" break; - case 336: + case 337: #line 847 "./util/configparser.y" { OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str))); @@ -4105,7 +4105,7 @@ yyreduce: #line 4106 "util/configparser.c" break; - case 337: + case 338: #line 856 "./util/configparser.y" { OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str))); @@ -4117,7 +4117,7 @@ yyreduce: #line 4118 "util/configparser.c" break; - case 338: + case 339: #line 865 "./util/configparser.y" { OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str))); @@ -4129,7 +4129,7 @@ yyreduce: #line 4130 "util/configparser.c" break; - case 339: + case 340: #line 874 "./util/configparser.y" { OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[0].str))); @@ -4145,7 +4145,7 @@ yyreduce: #line 4146 "util/configparser.c" break; - case 340: + case 341: #line 887 "./util/configparser.y" { OUTYY(("P(server_max_reuse_tcp_queries:%s)\n", (yyvsp[0].str))); @@ -4159,7 +4159,7 @@ yyreduce: #line 4160 "util/configparser.c" break; - case 341: + case 342: #line 898 "./util/configparser.y" { OUTYY(("P(server_tcp_reuse_timeout:%s)\n", (yyvsp[0].str))); @@ -4173,7 +4173,7 @@ yyreduce: #line 4174 "util/configparser.c" break; - case 342: + case 343: #line 909 "./util/configparser.y" { OUTYY(("P(server_tcp_auth_query_timeout:%s)\n", (yyvsp[0].str))); @@ -4187,7 +4187,7 @@ yyreduce: #line 4188 "util/configparser.c" break; - case 343: + case 344: #line 920 "./util/configparser.y" { OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[0].str))); @@ -4199,7 +4199,7 @@ yyreduce: #line 4200 "util/configparser.c" break; - case 344: + case 345: #line 929 "./util/configparser.y" { OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[0].str))); @@ -4215,7 +4215,7 @@ yyreduce: #line 4216 "util/configparser.c" break; - case 345: + case 346: #line 942 "./util/configparser.y" { OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str))); @@ -4227,7 +4227,7 @@ yyreduce: #line 4228 "util/configparser.c" break; - case 346: + case 347: #line 951 "./util/configparser.y" { OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", (yyvsp[0].str))); @@ -4239,7 +4239,7 @@ yyreduce: #line 4240 "util/configparser.c" break; - case 347: + case 348: #line 960 "./util/configparser.y" { OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str))); @@ -4251,7 +4251,7 @@ yyreduce: #line 4252 "util/configparser.c" break; - case 348: + case 349: #line 969 "./util/configparser.y" { OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[0].str))); @@ -4261,7 +4261,7 @@ yyreduce: #line 4262 "util/configparser.c" break; - case 349: + case 350: #line 976 "./util/configparser.y" { OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[0].str))); @@ -4271,7 +4271,7 @@ yyreduce: #line 4272 "util/configparser.c" break; - case 350: + case 351: #line 983 "./util/configparser.y" { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); @@ -4283,7 +4283,7 @@ yyreduce: #line 4284 "util/configparser.c" break; - case 351: + case 352: #line 992 "./util/configparser.y" { OUTYY(("P(server_tls_cert_bundle:%s)\n", (yyvsp[0].str))); @@ -4293,7 +4293,7 @@ yyreduce: #line 4294 "util/configparser.c" break; - case 352: + case 353: #line 999 "./util/configparser.y" { OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[0].str))); @@ -4305,7 +4305,7 @@ yyreduce: #line 4306 "util/configparser.c" break; - case 353: + case 354: #line 1008 "./util/configparser.y" { OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[0].str))); @@ -4316,7 +4316,7 @@ yyreduce: #line 4317 "util/configparser.c" break; - case 354: + case 355: #line 1016 "./util/configparser.y" { OUTYY(("P(server_tls_ciphers:%s)\n", (yyvsp[0].str))); @@ -4326,7 +4326,7 @@ yyreduce: #line 4327 "util/configparser.c" break; - case 355: + case 356: #line 1023 "./util/configparser.y" { OUTYY(("P(server_tls_ciphersuites:%s)\n", (yyvsp[0].str))); @@ -4336,7 +4336,7 @@ yyreduce: #line 4337 "util/configparser.c" break; - case 356: + case 357: #line 1030 "./util/configparser.y" { OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[0].str))); @@ -4347,7 +4347,7 @@ yyreduce: #line 4348 "util/configparser.c" break; - case 357: + case 358: #line 1038 "./util/configparser.y" { OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str))); @@ -4359,7 +4359,7 @@ yyreduce: #line 4360 "util/configparser.c" break; - case 358: + case 359: #line 1047 "./util/configparser.y" { OUTYY(("P(server_https_port:%s)\n", (yyvsp[0].str))); @@ -4371,7 +4371,7 @@ yyreduce: #line 4372 "util/configparser.c" break; - case 359: + case 360: #line 1055 "./util/configparser.y" { OUTYY(("P(server_http_endpoint:%s)\n", (yyvsp[0].str))); @@ -4391,7 +4391,7 @@ yyreduce: #line 4392 "util/configparser.c" break; - case 360: + case 361: #line 1071 "./util/configparser.y" { OUTYY(("P(server_http_max_streams:%s)\n", (yyvsp[0].str))); @@ -4403,7 +4403,7 @@ yyreduce: #line 4404 "util/configparser.c" break; - case 361: + case 362: #line 1079 "./util/configparser.y" { OUTYY(("P(server_http_query_buffer_size:%s)\n", (yyvsp[0].str))); @@ -4415,7 +4415,7 @@ yyreduce: #line 4416 "util/configparser.c" break; - case 362: + case 363: #line 1087 "./util/configparser.y" { OUTYY(("P(server_http_response_buffer_size:%s)\n", (yyvsp[0].str))); @@ -4427,7 +4427,7 @@ yyreduce: #line 4428 "util/configparser.c" break; - case 363: + case 364: #line 1095 "./util/configparser.y" { OUTYY(("P(server_http_nodelay:%s)\n", (yyvsp[0].str))); @@ -4439,7 +4439,7 @@ yyreduce: #line 4440 "util/configparser.c" break; - case 364: + case 365: #line 1103 "./util/configparser.y" { OUTYY(("P(server_http_notls_downstream:%s)\n", (yyvsp[0].str))); @@ -4451,7 +4451,7 @@ yyreduce: #line 4452 "util/configparser.c" break; - case 365: + case 366: #line 1111 "./util/configparser.y" { OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str))); @@ -4463,7 +4463,7 @@ yyreduce: #line 4464 "util/configparser.c" break; - case 366: + case 367: #line 1120 "./util/configparser.y" { OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str))); @@ -4475,7 +4475,7 @@ yyreduce: #line 4476 "util/configparser.c" break; - case 367: + case 368: #line 1129 "./util/configparser.y" { OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str))); @@ -4492,7 +4492,7 @@ yyreduce: #line 4493 "util/configparser.c" break; - case 368: + case 369: #line 1143 "./util/configparser.y" { OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str))); @@ -4504,7 +4504,7 @@ yyreduce: #line 4505 "util/configparser.c" break; - case 369: + case 370: #line 1152 "./util/configparser.y" { OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str))); @@ -4516,7 +4516,7 @@ yyreduce: #line 4517 "util/configparser.c" break; - case 370: + case 371: #line 1161 "./util/configparser.y" { OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str))); @@ -4528,7 +4528,7 @@ yyreduce: #line 4529 "util/configparser.c" break; - case 371: + case 372: #line 1170 "./util/configparser.y" { OUTYY(("P(server_log_tag_queryreply:%s)\n", (yyvsp[0].str))); @@ -4540,7 +4540,7 @@ yyreduce: #line 4541 "util/configparser.c" break; - case 372: + case 373: #line 1179 "./util/configparser.y" { OUTYY(("P(server_log_servfail:%s)\n", (yyvsp[0].str))); @@ -4552,7 +4552,7 @@ yyreduce: #line 4553 "util/configparser.c" break; - case 373: + case 374: #line 1188 "./util/configparser.y" { OUTYY(("P(server_log_local_actions:%s)\n", (yyvsp[0].str))); @@ -4564,7 +4564,7 @@ yyreduce: #line 4565 "util/configparser.c" break; - case 374: + case 375: #line 1197 "./util/configparser.y" { OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str))); @@ -4574,7 +4574,7 @@ yyreduce: #line 4575 "util/configparser.c" break; - case 375: + case 376: #line 1204 "./util/configparser.y" { OUTYY(("P(server_username:%s)\n", (yyvsp[0].str))); @@ -4584,7 +4584,7 @@ yyreduce: #line 4585 "util/configparser.c" break; - case 376: + case 377: #line 1211 "./util/configparser.y" { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); @@ -4613,7 +4613,7 @@ yyreduce: #line 4614 "util/configparser.c" break; - case 377: + case 378: #line 1237 "./util/configparser.y" { OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str))); @@ -4624,7 +4624,7 @@ yyreduce: #line 4625 "util/configparser.c" break; - case 378: + case 379: #line 1245 "./util/configparser.y" { OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str))); @@ -4634,7 +4634,7 @@ yyreduce: #line 4635 "util/configparser.c" break; - case 379: + case 380: #line 1252 "./util/configparser.y" { OUTYY(("P(server_root_hints:%s)\n", (yyvsp[0].str))); @@ -4644,7 +4644,7 @@ yyreduce: #line 4645 "util/configparser.c" break; - case 380: + case 381: #line 1259 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str))); @@ -4654,7 +4654,7 @@ yyreduce: #line 4655 "util/configparser.c" break; - case 381: + case 382: #line 1266 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str))); @@ -4664,7 +4664,7 @@ yyreduce: #line 4665 "util/configparser.c" break; - case 382: + case 383: #line 1273 "./util/configparser.y" { OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str))); @@ -4675,7 +4675,7 @@ yyreduce: #line 4676 "util/configparser.c" break; - case 383: + case 384: #line 1281 "./util/configparser.y" { OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str))); @@ -4686,7 +4686,7 @@ yyreduce: #line 4687 "util/configparser.c" break; - case 384: + case 385: #line 1289 "./util/configparser.y" { OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str))); @@ -4697,7 +4697,7 @@ yyreduce: #line 4698 "util/configparser.c" break; - case 385: + case 386: #line 1297 "./util/configparser.y" { OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[0].str))); @@ -4707,7 +4707,7 @@ yyreduce: #line 4708 "util/configparser.c" break; - case 386: + case 387: #line 1304 "./util/configparser.y" { OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str))); @@ -4721,7 +4721,7 @@ yyreduce: #line 4722 "util/configparser.c" break; - case 387: + case 388: #line 1315 "./util/configparser.y" { OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[0].str))); @@ -4735,7 +4735,7 @@ yyreduce: #line 4736 "util/configparser.c" break; - case 388: + case 389: #line 1326 "./util/configparser.y" { OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[0].str))); @@ -4745,7 +4745,7 @@ yyreduce: #line 4746 "util/configparser.c" break; - case 389: + case 390: #line 1333 "./util/configparser.y" { OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str))); @@ -4757,7 +4757,7 @@ yyreduce: #line 4758 "util/configparser.c" break; - case 390: + case 391: #line 1342 "./util/configparser.y" { OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str))); @@ -4769,7 +4769,7 @@ yyreduce: #line 4770 "util/configparser.c" break; - case 391: + case 392: #line 1351 "./util/configparser.y" { OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str))); @@ -4781,7 +4781,7 @@ yyreduce: #line 4782 "util/configparser.c" break; - case 392: + case 393: #line 1360 "./util/configparser.y" { OUTYY(("P(server_hide_user_agent:%s)\n", (yyvsp[0].str))); @@ -4793,7 +4793,7 @@ yyreduce: #line 4794 "util/configparser.c" break; - case 393: + case 394: #line 1369 "./util/configparser.y" { OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str))); @@ -4803,7 +4803,7 @@ yyreduce: #line 4804 "util/configparser.c" break; - case 394: + case 395: #line 1376 "./util/configparser.y" { OUTYY(("P(server_version:%s)\n", (yyvsp[0].str))); @@ -4813,7 +4813,7 @@ yyreduce: #line 4814 "util/configparser.c" break; - case 395: + case 396: #line 1383 "./util/configparser.y" { OUTYY(("P(server_http_user_agent:%s)\n", (yyvsp[0].str))); @@ -4823,7 +4823,7 @@ yyreduce: #line 4824 "util/configparser.c" break; - case 396: + case 397: #line 1390 "./util/configparser.y" { OUTYY(("P(server_nsid:%s)\n", (yyvsp[0].str))); @@ -4842,7 +4842,7 @@ yyreduce: #line 4843 "util/configparser.c" break; - case 397: + case 398: #line 1406 "./util/configparser.y" { OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str))); @@ -4853,7 +4853,7 @@ yyreduce: #line 4854 "util/configparser.c" break; - case 398: + case 399: #line 1414 "./util/configparser.y" { OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str))); @@ -4864,7 +4864,7 @@ yyreduce: #line 4865 "util/configparser.c" break; - case 399: + case 400: #line 1422 "./util/configparser.y" { OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str))); @@ -4877,7 +4877,7 @@ yyreduce: #line 4878 "util/configparser.c" break; - case 400: + case 401: #line 1432 "./util/configparser.y" { OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str))); @@ -4890,7 +4890,7 @@ yyreduce: #line 4891 "util/configparser.c" break; - case 401: + case 402: #line 1442 "./util/configparser.y" { OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str))); @@ -4903,7 +4903,7 @@ yyreduce: #line 4904 "util/configparser.c" break; - case 402: + case 403: #line 1452 "./util/configparser.y" { OUTYY(("P(server_ip_dscp:%s)\n", (yyvsp[0].str))); @@ -4920,7 +4920,7 @@ yyreduce: #line 4921 "util/configparser.c" break; - case 403: + case 404: #line 1466 "./util/configparser.y" { OUTYY(("P(server_stream_wait_size:%s)\n", (yyvsp[0].str))); @@ -4931,7 +4931,7 @@ yyreduce: #line 4932 "util/configparser.c" break; - case 404: + case 405: #line 1474 "./util/configparser.y" { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); @@ -4947,7 +4947,7 @@ yyreduce: #line 4948 "util/configparser.c" break; - case 405: + case 406: #line 1487 "./util/configparser.y" { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); @@ -4961,7 +4961,7 @@ yyreduce: #line 4962 "util/configparser.c" break; - case 406: + case 407: #line 1498 "./util/configparser.y" { OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str))); @@ -4972,7 +4972,7 @@ yyreduce: #line 4973 "util/configparser.c" break; - case 407: + case 408: #line 1506 "./util/configparser.y" { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); @@ -4988,7 +4988,7 @@ yyreduce: #line 4989 "util/configparser.c" break; - case 408: + case 409: #line 1519 "./util/configparser.y" { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); @@ -5000,7 +5000,7 @@ yyreduce: #line 5001 "util/configparser.c" break; - case 409: + case 410: #line 1528 "./util/configparser.y" { OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str))); @@ -5012,7 +5012,7 @@ yyreduce: #line 5013 "util/configparser.c" break; - case 410: + case 411: #line 1537 "./util/configparser.y" { OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str))); @@ -5024,7 +5024,7 @@ yyreduce: #line 5025 "util/configparser.c" break; - case 411: + case 412: #line 1546 "./util/configparser.y" { OUTYY(("P(server_udp_connect:%s)\n", (yyvsp[0].str))); @@ -5036,7 +5036,7 @@ yyreduce: #line 5037 "util/configparser.c" break; - case 412: + case 413: #line 1555 "./util/configparser.y" { OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str))); @@ -5049,7 +5049,7 @@ yyreduce: #line 5050 "util/configparser.c" break; - case 413: + case 414: #line 1565 "./util/configparser.y" { OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str))); @@ -5062,7 +5062,7 @@ yyreduce: #line 5063 "util/configparser.c" break; - case 414: + case 415: #line 1575 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[0].str))); @@ -5073,7 +5073,7 @@ yyreduce: #line 5074 "util/configparser.c" break; - case 415: + case 416: #line 1583 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); @@ -5089,7 +5089,7 @@ yyreduce: #line 5090 "util/configparser.c" break; - case 416: + case 417: #line 1596 "./util/configparser.y" { OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str))); @@ -5101,7 +5101,7 @@ yyreduce: #line 5102 "util/configparser.c" break; - case 417: + case 418: #line 1605 "./util/configparser.y" { OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str))); @@ -5112,7 +5112,7 @@ yyreduce: #line 5113 "util/configparser.c" break; - case 418: + case 419: #line 1613 "./util/configparser.y" { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); @@ -5124,7 +5124,7 @@ yyreduce: #line 5125 "util/configparser.c" break; - case 419: + case 420: #line 1622 "./util/configparser.y" { OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str))); @@ -5135,7 +5135,7 @@ yyreduce: #line 5136 "util/configparser.c" break; - case 420: + case 421: #line 1630 "./util/configparser.y" { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); @@ -5151,7 +5151,7 @@ yyreduce: #line 5152 "util/configparser.c" break; - case 421: + case 422: #line 1643 "./util/configparser.y" { OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str))); @@ -5163,7 +5163,7 @@ yyreduce: #line 5164 "util/configparser.c" break; - case 422: + case 423: #line 1652 "./util/configparser.y" { OUTYY(("P(server_infra_keep_probing:%s)\n", (yyvsp[0].str))); @@ -5176,7 +5176,7 @@ yyreduce: #line 5177 "util/configparser.c" break; - case 423: + case 424: #line 1662 "./util/configparser.y" { OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[0].str))); @@ -5186,7 +5186,7 @@ yyreduce: #line 5187 "util/configparser.c" break; - case 424: + case 425: #line 1669 "./util/configparser.y" { OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str))); @@ -5199,7 +5199,7 @@ yyreduce: #line 5200 "util/configparser.c" break; - case 425: + case 426: #line 1679 "./util/configparser.y" { OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str))); @@ -5212,7 +5212,7 @@ yyreduce: #line 5213 "util/configparser.c" break; - case 426: + case 427: #line 1689 "./util/configparser.y" { OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str))); @@ -5225,7 +5225,7 @@ yyreduce: #line 5226 "util/configparser.c" break; - case 427: + case 428: #line 1699 "./util/configparser.y" { OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str))); @@ -5238,7 +5238,7 @@ yyreduce: #line 5239 "util/configparser.c" break; - case 428: + case 429: #line 1709 "./util/configparser.y" { OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str))); @@ -5251,7 +5251,7 @@ yyreduce: #line 5252 "util/configparser.c" break; - case 429: + case 430: #line 1719 "./util/configparser.y" { OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str))); @@ -5264,7 +5264,7 @@ yyreduce: #line 5265 "util/configparser.c" break; - case 430: + case 431: #line 1729 "./util/configparser.y" { OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str))); @@ -5277,7 +5277,7 @@ yyreduce: #line 5278 "util/configparser.c" break; - case 431: + case 432: #line 1739 "./util/configparser.y" { OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[0].str))); @@ -5290,7 +5290,7 @@ yyreduce: #line 5291 "util/configparser.c" break; - case 432: + case 433: #line 1749 "./util/configparser.y" { OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[0].str))); @@ -5300,7 +5300,7 @@ yyreduce: #line 5301 "util/configparser.c" break; - case 433: + case 434: #line 1756 "./util/configparser.y" { OUTYY(("P(server_private_address:%s)\n", (yyvsp[0].str))); @@ -5310,7 +5310,7 @@ yyreduce: #line 5311 "util/configparser.c" break; - case 434: + case 435: #line 1763 "./util/configparser.y" { OUTYY(("P(server_private_domain:%s)\n", (yyvsp[0].str))); @@ -5320,7 +5320,7 @@ yyreduce: #line 5321 "util/configparser.c" break; - case 435: + case 436: #line 1770 "./util/configparser.y" { OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str))); @@ -5332,7 +5332,7 @@ yyreduce: #line 5333 "util/configparser.c" break; - case 436: + case 437: #line 1779 "./util/configparser.y" { OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str))); @@ -5344,7 +5344,7 @@ yyreduce: #line 5345 "util/configparser.c" break; - case 437: + case 438: #line 1788 "./util/configparser.y" { OUTYY(("P(server_deny_any:%s)\n", (yyvsp[0].str))); @@ -5356,7 +5356,7 @@ yyreduce: #line 5357 "util/configparser.c" break; - case 438: + case 439: #line 1797 "./util/configparser.y" { OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str))); @@ -5368,7 +5368,7 @@ yyreduce: #line 5369 "util/configparser.c" break; - case 439: + case 440: #line 1806 "./util/configparser.y" { OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[0].str))); @@ -5378,7 +5378,7 @@ yyreduce: #line 5379 "util/configparser.c" break; - case 440: + case 441: #line 1813 "./util/configparser.y" { OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[0].str))); @@ -5391,7 +5391,7 @@ yyreduce: #line 5392 "util/configparser.c" break; - case 441: + case 442: #line 1823 "./util/configparser.y" { OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); @@ -5414,7 +5414,7 @@ yyreduce: #line 5415 "util/configparser.c" break; - case 442: + case 443: #line 1843 "./util/configparser.y" { OUTYY(("P(server_module_conf:%s)\n", (yyvsp[0].str))); @@ -5424,7 +5424,7 @@ yyreduce: #line 5425 "util/configparser.c" break; - case 443: + case 444: #line 1850 "./util/configparser.y" { OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str))); @@ -5445,7 +5445,7 @@ yyreduce: #line 5446 "util/configparser.c" break; - case 444: + case 445: #line 1868 "./util/configparser.y" { OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str))); @@ -5461,7 +5461,7 @@ yyreduce: #line 5462 "util/configparser.c" break; - case 445: + case 446: #line 1881 "./util/configparser.y" { OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str))); @@ -5477,7 +5477,7 @@ yyreduce: #line 5478 "util/configparser.c" break; - case 446: + case 447: #line 1894 "./util/configparser.y" { OUTYY(("P(server_val_max_restart:%s)\n", (yyvsp[0].str))); @@ -5493,7 +5493,7 @@ yyreduce: #line 5494 "util/configparser.c" break; - case 447: + case 448: #line 1907 "./util/configparser.y" { OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str))); @@ -5505,7 +5505,7 @@ yyreduce: #line 5506 "util/configparser.c" break; - case 448: + case 449: #line 1916 "./util/configparser.y" { OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str))); @@ -5517,7 +5517,7 @@ yyreduce: #line 5518 "util/configparser.c" break; - case 449: + case 450: #line 1925 "./util/configparser.y" { OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str))); @@ -5529,7 +5529,7 @@ yyreduce: #line 5530 "util/configparser.c" break; - case 450: + case 451: #line 1934 "./util/configparser.y" { OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str))); @@ -5541,7 +5541,7 @@ yyreduce: #line 5542 "util/configparser.c" break; - case 451: + case 452: #line 1943 "./util/configparser.y" { OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str))); @@ -5554,7 +5554,7 @@ yyreduce: #line 5555 "util/configparser.c" break; - case 452: + case 453: #line 1953 "./util/configparser.y" { OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str))); @@ -5567,7 +5567,7 @@ yyreduce: #line 5568 "util/configparser.c" break; - case 453: + case 454: #line 1963 "./util/configparser.y" { OUTYY(("P(server_aggressive_nsec:%s)\n", (yyvsp[0].str))); @@ -5581,7 +5581,7 @@ yyreduce: #line 5582 "util/configparser.c" break; - case 454: + case 455: #line 1974 "./util/configparser.y" { OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str))); @@ -5593,7 +5593,7 @@ yyreduce: #line 5594 "util/configparser.c" break; - case 455: + case 456: #line 1983 "./util/configparser.y" { OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str))); @@ -5605,7 +5605,7 @@ yyreduce: #line 5606 "util/configparser.c" break; - case 456: + case 457: #line 1992 "./util/configparser.y" { OUTYY(("P(server_serve_expired_ttl:%s)\n", (yyvsp[0].str))); @@ -5617,7 +5617,7 @@ yyreduce: #line 5618 "util/configparser.c" break; - case 457: + case 458: #line 2001 "./util/configparser.y" { OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", (yyvsp[0].str))); @@ -5629,7 +5629,7 @@ yyreduce: #line 5630 "util/configparser.c" break; - case 458: + case 459: #line 2010 "./util/configparser.y" { OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", (yyvsp[0].str))); @@ -5641,7 +5641,7 @@ yyreduce: #line 5642 "util/configparser.c" break; - case 459: + case 460: #line 2019 "./util/configparser.y" { OUTYY(("P(server_serve_expired_client_timeout:%s)\n", (yyvsp[0].str))); @@ -5653,7 +5653,7 @@ yyreduce: #line 5654 "util/configparser.c" break; - case 460: + case 461: #line 2028 "./util/configparser.y" { OUTYY(("P(server_serve_original_ttl:%s)\n", (yyvsp[0].str))); @@ -5665,7 +5665,7 @@ yyreduce: #line 5666 "util/configparser.c" break; - case 461: + case 462: #line 2037 "./util/configparser.y" { OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str))); @@ -5681,7 +5681,7 @@ yyreduce: #line 5682 "util/configparser.c" break; - case 462: + case 463: #line 2050 "./util/configparser.y" { OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[0].str))); @@ -5697,7 +5697,7 @@ yyreduce: #line 5698 "util/configparser.c" break; - case 463: + case 464: #line 2063 "./util/configparser.y" { OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str))); @@ -5709,7 +5709,7 @@ yyreduce: #line 5710 "util/configparser.c" break; - case 464: + case 465: #line 2072 "./util/configparser.y" { OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[0].str))); @@ -5719,7 +5719,7 @@ yyreduce: #line 5720 "util/configparser.c" break; - case 465: + case 466: #line 2079 "./util/configparser.y" { OUTYY(("P(server_zonemd_permissive_mode:%s)\n", (yyvsp[0].str))); @@ -5731,7 +5731,7 @@ yyreduce: #line 5732 "util/configparser.c" break; - case 466: + case 467: #line 2088 "./util/configparser.y" { OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str))); @@ -5743,7 +5743,7 @@ yyreduce: #line 5744 "util/configparser.c" break; - case 467: + case 468: #line 2097 "./util/configparser.y" { OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str))); @@ -5755,7 +5755,7 @@ yyreduce: #line 5756 "util/configparser.c" break; - case 468: + case 469: #line 2106 "./util/configparser.y" { OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str))); @@ -5767,7 +5767,7 @@ yyreduce: #line 5768 "util/configparser.c" break; - case 469: + case 470: #line 2115 "./util/configparser.y" { OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str))); @@ -5780,7 +5780,7 @@ yyreduce: #line 5781 "util/configparser.c" break; - case 470: + case 471: #line 2124 "./util/configparser.y" { OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[0].str))); @@ -5791,7 +5791,7 @@ yyreduce: #line 5792 "util/configparser.c" break; - case 471: + case 472: #line 2132 "./util/configparser.y" { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); @@ -5807,7 +5807,7 @@ yyreduce: #line 5808 "util/configparser.c" break; - case 472: + case 473: #line 2145 "./util/configparser.y" { OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[0].str))); @@ -5818,7 +5818,7 @@ yyreduce: #line 5819 "util/configparser.c" break; - case 473: + case 474: #line 2153 "./util/configparser.y" { OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); @@ -5866,7 +5866,7 @@ yyreduce: #line 5867 "util/configparser.c" break; - case 474: + case 475: #line 2198 "./util/configparser.y" { OUTYY(("P(server_local_data:%s)\n", (yyvsp[0].str))); @@ -5876,7 +5876,7 @@ yyreduce: #line 5877 "util/configparser.c" break; - case 475: + case 476: #line 2205 "./util/configparser.y" { char* ptr; @@ -5894,7 +5894,7 @@ yyreduce: #line 5895 "util/configparser.c" break; - case 476: + case 477: #line 2220 "./util/configparser.y" { OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str))); @@ -5907,7 +5907,7 @@ yyreduce: #line 5908 "util/configparser.c" break; - case 477: + case 478: #line 2230 "./util/configparser.y" { OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str))); @@ -5920,7 +5920,7 @@ yyreduce: #line 5921 "util/configparser.c" break; - case 478: + case 479: #line 2240 "./util/configparser.y" { OUTYY(("P(server_unknown_server_time_limit:%s)\n", (yyvsp[0].str))); @@ -5930,7 +5930,7 @@ yyreduce: #line 5931 "util/configparser.c" break; - case 479: + case 480: #line 2247 "./util/configparser.y" { OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[0].str))); @@ -5940,7 +5940,7 @@ yyreduce: #line 5941 "util/configparser.c" break; - case 480: + case 481: #line 2254 "./util/configparser.y" { OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str))); @@ -5950,7 +5950,7 @@ yyreduce: #line 5951 "util/configparser.c" break; - case 481: + case 482: #line 2261 "./util/configparser.y" { OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str))); @@ -5962,7 +5962,7 @@ yyreduce: #line 5963 "util/configparser.c" break; - case 482: + case 483: #line 2270 "./util/configparser.y" { OUTYY(("P(dns64_ignore_aaaa:%s)\n", (yyvsp[0].str))); @@ -5973,7 +5973,7 @@ yyreduce: #line 5974 "util/configparser.c" break; - case 483: + case 484: #line 2278 "./util/configparser.y" { char* p, *s = (yyvsp[0].str); @@ -5990,7 +5990,7 @@ yyreduce: #line 5991 "util/configparser.c" break; - case 484: + case 485: #line 2292 "./util/configparser.y" { size_t len = 0; @@ -6014,7 +6014,7 @@ yyreduce: #line 6015 "util/configparser.c" break; - case 485: + case 486: #line 2313 "./util/configparser.y" { size_t len = 0; @@ -6038,7 +6038,7 @@ yyreduce: #line 6039 "util/configparser.c" break; - case 486: + case 487: #line 2334 "./util/configparser.y" { OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); @@ -6053,7 +6053,7 @@ yyreduce: #line 6054 "util/configparser.c" break; - case 487: + case 488: #line 2346 "./util/configparser.y" { OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); @@ -6068,7 +6068,7 @@ yyreduce: #line 6069 "util/configparser.c" break; - case 488: + case 489: #line 2358 "./util/configparser.y" { OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); @@ -6083,7 +6083,7 @@ yyreduce: #line 6084 "util/configparser.c" break; - case 489: + case 490: #line 2370 "./util/configparser.y" { OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); @@ -6095,7 +6095,7 @@ yyreduce: #line 6096 "util/configparser.c" break; - case 490: + case 491: #line 2379 "./util/configparser.y" { size_t len = 0; @@ -6119,7 +6119,7 @@ yyreduce: #line 6120 "util/configparser.c" break; - case 491: + case 492: #line 2400 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str))); @@ -6131,7 +6131,7 @@ yyreduce: #line 6132 "util/configparser.c" break; - case 492: + case 493: #line 2409 "./util/configparser.y" { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); @@ -6143,7 +6143,7 @@ yyreduce: #line 6144 "util/configparser.c" break; - case 493: + case 494: #line 2418 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_size:%s)\n", (yyvsp[0].str))); @@ -6154,7 +6154,7 @@ yyreduce: #line 6155 "util/configparser.c" break; - case 494: + case 495: #line 2426 "./util/configparser.y" { OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[0].str))); @@ -6165,7 +6165,7 @@ yyreduce: #line 6166 "util/configparser.c" break; - case 495: + case 496: #line 2434 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); @@ -6181,7 +6181,7 @@ yyreduce: #line 6182 "util/configparser.c" break; - case 496: + case 497: #line 2447 "./util/configparser.y" { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); @@ -6197,7 +6197,7 @@ yyreduce: #line 6198 "util/configparser.c" break; - case 497: + case 498: #line 2460 "./util/configparser.y" { OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); @@ -6215,7 +6215,7 @@ yyreduce: #line 6216 "util/configparser.c" break; - case 498: + case 499: #line 2475 "./util/configparser.y" { OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); @@ -6233,7 +6233,7 @@ yyreduce: #line 6234 "util/configparser.c" break; - case 499: + case 500: #line 2490 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str))); @@ -6245,7 +6245,7 @@ yyreduce: #line 6246 "util/configparser.c" break; - case 500: + case 501: #line 2499 "./util/configparser.y" { OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str))); @@ -6257,7 +6257,7 @@ yyreduce: #line 6258 "util/configparser.c" break; - case 501: + case 502: #line 2508 "./util/configparser.y" { OUTYY(("P(server_outbound_msg_retry:%s)\n", (yyvsp[0].str))); @@ -6269,7 +6269,7 @@ yyreduce: #line 6270 "util/configparser.c" break; - case 502: + case 503: #line 2517 "./util/configparser.y" { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); @@ -6278,7 +6278,7 @@ yyreduce: #line 6279 "util/configparser.c" break; - case 503: + case 504: #line 2523 "./util/configparser.y" { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); @@ -6290,7 +6290,7 @@ yyreduce: #line 6291 "util/configparser.c" break; - case 504: + case 505: #line 2532 "./util/configparser.y" { OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[0].str))); @@ -6302,7 +6302,7 @@ yyreduce: #line 6303 "util/configparser.c" break; - case 505: + case 506: #line 2541 "./util/configparser.y" { OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str))); @@ -6315,7 +6315,7 @@ yyreduce: #line 6316 "util/configparser.c" break; - case 506: + case 507: #line 2551 "./util/configparser.y" { OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str))); @@ -6328,7 +6328,7 @@ yyreduce: #line 6329 "util/configparser.c" break; - case 507: + case 508: #line 2561 "./util/configparser.y" { OUTYY(("P(server_pad_responses:%s)\n", (yyvsp[0].str))); @@ -6341,7 +6341,7 @@ yyreduce: #line 6342 "util/configparser.c" break; - case 508: + case 509: #line 2571 "./util/configparser.y" { OUTYY(("P(server_pad_responses_block_size:%s)\n", (yyvsp[0].str))); @@ -6353,7 +6353,7 @@ yyreduce: #line 6354 "util/configparser.c" break; - case 509: + case 510: #line 2580 "./util/configparser.y" { OUTYY(("P(server_pad_queries:%s)\n", (yyvsp[0].str))); @@ -6366,7 +6366,7 @@ yyreduce: #line 6367 "util/configparser.c" break; - case 510: + case 511: #line 2590 "./util/configparser.y" { OUTYY(("P(server_pad_queries_block_size:%s)\n", (yyvsp[0].str))); @@ -6378,7 +6378,7 @@ yyreduce: #line 6379 "util/configparser.c" break; - case 511: + case 512: #line 2599 "./util/configparser.y" { #ifdef USE_IPSECMOD @@ -6394,7 +6394,7 @@ yyreduce: #line 6395 "util/configparser.c" break; - case 512: + case 513: #line 2612 "./util/configparser.y" { #ifdef USE_IPSECMOD @@ -6410,7 +6410,7 @@ yyreduce: #line 6411 "util/configparser.c" break; - case 513: + case 514: #line 2625 "./util/configparser.y" { #ifdef USE_IPSECMOD @@ -6425,7 +6425,7 @@ yyreduce: #line 6426 "util/configparser.c" break; - case 514: + case 515: #line 2637 "./util/configparser.y" { #ifdef USE_IPSECMOD @@ -6442,7 +6442,7 @@ yyreduce: #line 6443 "util/configparser.c" break; - case 515: + case 516: #line 2651 "./util/configparser.y" { #ifdef USE_IPSECMOD @@ -6457,7 +6457,7 @@ yyreduce: #line 6458 "util/configparser.c" break; - case 516: + case 517: #line 2663 "./util/configparser.y" { #ifdef USE_IPSECMOD @@ -6474,7 +6474,7 @@ yyreduce: #line 6475 "util/configparser.c" break; - case 517: + case 518: #line 2677 "./util/configparser.y" { OUTYY(("P(server_edns_client_string:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); @@ -6486,7 +6486,7 @@ yyreduce: #line 6487 "util/configparser.c" break; - case 518: + case 519: #line 2686 "./util/configparser.y" { OUTYY(("P(edns_client_string_opcode:%s)\n", (yyvsp[0].str))); @@ -6501,7 +6501,7 @@ yyreduce: #line 6502 "util/configparser.c" break; - case 519: + case 520: #line 2698 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); @@ -6514,7 +6514,7 @@ yyreduce: #line 6515 "util/configparser.c" break; - case 520: + case 521: #line 2708 "./util/configparser.y" { OUTYY(("P(stub-host:%s)\n", (yyvsp[0].str))); @@ -6524,7 +6524,7 @@ yyreduce: #line 6525 "util/configparser.c" break; - case 521: + case 522: #line 2715 "./util/configparser.y" { OUTYY(("P(stub-addr:%s)\n", (yyvsp[0].str))); @@ -6534,7 +6534,7 @@ yyreduce: #line 6535 "util/configparser.c" break; - case 522: + case 523: #line 2722 "./util/configparser.y" { OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str))); @@ -6546,7 +6546,7 @@ yyreduce: #line 6547 "util/configparser.c" break; - case 523: + case 524: #line 2731 "./util/configparser.y" { OUTYY(("P(stub-no-cache:%s)\n", (yyvsp[0].str))); @@ -6558,7 +6558,7 @@ yyreduce: #line 6559 "util/configparser.c" break; - case 524: + case 525: #line 2740 "./util/configparser.y" { OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str))); @@ -6571,7 +6571,7 @@ yyreduce: #line 6572 "util/configparser.c" break; - case 525: + case 526: #line 2750 "./util/configparser.y" { OUTYY(("P(stub-tcp-upstream:%s)\n", (yyvsp[0].str))); @@ -6584,7 +6584,7 @@ yyreduce: #line 6585 "util/configparser.c" break; - case 526: + case 527: #line 2760 "./util/configparser.y" { OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str))); @@ -6597,7 +6597,7 @@ yyreduce: #line 6598 "util/configparser.c" break; - case 527: + case 528: #line 2770 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); @@ -6610,7 +6610,7 @@ yyreduce: #line 6611 "util/configparser.c" break; - case 528: + case 529: #line 2780 "./util/configparser.y" { OUTYY(("P(forward-host:%s)\n", (yyvsp[0].str))); @@ -6620,7 +6620,7 @@ yyreduce: #line 6621 "util/configparser.c" break; - case 529: + case 530: #line 2787 "./util/configparser.y" { OUTYY(("P(forward-addr:%s)\n", (yyvsp[0].str))); @@ -6630,7 +6630,7 @@ yyreduce: #line 6631 "util/configparser.c" break; - case 530: + case 531: #line 2794 "./util/configparser.y" { OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str))); @@ -6642,7 +6642,7 @@ yyreduce: #line 6643 "util/configparser.c" break; - case 531: + case 532: #line 2803 "./util/configparser.y" { OUTYY(("P(forward-no-cache:%s)\n", (yyvsp[0].str))); @@ -6654,7 +6654,7 @@ yyreduce: #line 6655 "util/configparser.c" break; - case 532: + case 533: #line 2812 "./util/configparser.y" { OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str))); @@ -6667,7 +6667,7 @@ yyreduce: #line 6668 "util/configparser.c" break; - case 533: + case 534: #line 2822 "./util/configparser.y" { OUTYY(("P(forward-tcp-upstream:%s)\n", (yyvsp[0].str))); @@ -6680,7 +6680,7 @@ yyreduce: #line 6681 "util/configparser.c" break; - case 534: + case 535: #line 2832 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); @@ -6693,7 +6693,7 @@ yyreduce: #line 6694 "util/configparser.c" break; - case 535: + case 536: #line 2842 "./util/configparser.y" { OUTYY(("P(zonefile:%s)\n", (yyvsp[0].str))); @@ -6703,7 +6703,7 @@ yyreduce: #line 6704 "util/configparser.c" break; - case 536: + case 537: #line 2849 "./util/configparser.y" { OUTYY(("P(master:%s)\n", (yyvsp[0].str))); @@ -6713,7 +6713,7 @@ yyreduce: #line 6714 "util/configparser.c" break; - case 537: + case 538: #line 2856 "./util/configparser.y" { OUTYY(("P(url:%s)\n", (yyvsp[0].str))); @@ -6723,7 +6723,7 @@ yyreduce: #line 6724 "util/configparser.c" break; - case 538: + case 539: #line 2863 "./util/configparser.y" { OUTYY(("P(allow-notify:%s)\n", (yyvsp[0].str))); @@ -6734,7 +6734,7 @@ yyreduce: #line 6735 "util/configparser.c" break; - case 539: + case 540: #line 2871 "./util/configparser.y" { OUTYY(("P(zonemd-check:%s)\n", (yyvsp[0].str))); @@ -6747,7 +6747,7 @@ yyreduce: #line 6748 "util/configparser.c" break; - case 540: + case 541: #line 2881 "./util/configparser.y" { OUTYY(("P(zonemd-reject-absence:%s)\n", (yyvsp[0].str))); @@ -6760,7 +6760,7 @@ yyreduce: #line 6761 "util/configparser.c" break; - case 541: + case 542: #line 2891 "./util/configparser.y" { OUTYY(("P(for-downstream:%s)\n", (yyvsp[0].str))); @@ -6773,7 +6773,7 @@ yyreduce: #line 6774 "util/configparser.c" break; - case 542: + case 543: #line 2901 "./util/configparser.y" { OUTYY(("P(for-upstream:%s)\n", (yyvsp[0].str))); @@ -6786,7 +6786,7 @@ yyreduce: #line 6787 "util/configparser.c" break; - case 543: + case 544: #line 2911 "./util/configparser.y" { OUTYY(("P(fallback-enabled:%s)\n", (yyvsp[0].str))); @@ -6799,7 +6799,7 @@ yyreduce: #line 6800 "util/configparser.c" break; - case 544: + case 545: #line 2921 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); @@ -6812,7 +6812,7 @@ yyreduce: #line 6813 "util/configparser.c" break; - case 545: + case 546: #line 2931 "./util/configparser.y" { OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); @@ -6861,7 +6861,7 @@ yyreduce: #line 6862 "util/configparser.c" break; - case 546: + case 547: #line 2977 "./util/configparser.y" { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); @@ -6874,7 +6874,7 @@ yyreduce: #line 6875 "util/configparser.c" break; - case 547: + case 548: #line 2987 "./util/configparser.y" { OUTYY(("P(view_response_ip_data:%s)\n", (yyvsp[-1].str))); @@ -6885,7 +6885,7 @@ yyreduce: #line 6886 "util/configparser.c" break; - case 548: + case 549: #line 2995 "./util/configparser.y" { OUTYY(("P(view_local_data:%s)\n", (yyvsp[0].str))); @@ -6896,7 +6896,7 @@ yyreduce: #line 6897 "util/configparser.c" break; - case 549: + case 550: #line 3003 "./util/configparser.y" { char* ptr; @@ -6914,7 +6914,7 @@ yyreduce: #line 6915 "util/configparser.c" break; - case 550: + case 551: #line 3018 "./util/configparser.y" { OUTYY(("P(view-first:%s)\n", (yyvsp[0].str))); @@ -6926,7 +6926,7 @@ yyreduce: #line 6927 "util/configparser.c" break; - case 551: + case 552: #line 3027 "./util/configparser.y" { OUTYY(("\nP(remote-control:)\n")); @@ -6934,7 +6934,7 @@ yyreduce: #line 6935 "util/configparser.c" break; - case 562: + case 563: #line 3038 "./util/configparser.y" { OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str))); @@ -6947,7 +6947,7 @@ yyreduce: #line 6948 "util/configparser.c" break; - case 563: + case 564: #line 3048 "./util/configparser.y" { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); @@ -6959,7 +6959,7 @@ yyreduce: #line 6960 "util/configparser.c" break; - case 564: + case 565: #line 3057 "./util/configparser.y" { OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str))); @@ -6969,7 +6969,7 @@ yyreduce: #line 6970 "util/configparser.c" break; - case 565: + case 566: #line 3064 "./util/configparser.y" { OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str))); @@ -6979,7 +6979,7 @@ yyreduce: #line 6980 "util/configparser.c" break; - case 566: + case 567: #line 3071 "./util/configparser.y" { OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[0].str))); @@ -6989,7 +6989,7 @@ yyreduce: #line 6990 "util/configparser.c" break; - case 567: + case 568: #line 3078 "./util/configparser.y" { OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[0].str))); @@ -6999,7 +6999,7 @@ yyreduce: #line 7000 "util/configparser.c" break; - case 568: + case 569: #line 3085 "./util/configparser.y" { OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[0].str))); @@ -7009,7 +7009,7 @@ yyreduce: #line 7010 "util/configparser.c" break; - case 569: + case 570: #line 3092 "./util/configparser.y" { OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[0].str))); @@ -7019,7 +7019,7 @@ yyreduce: #line 7020 "util/configparser.c" break; - case 570: + case 571: #line 3099 "./util/configparser.y" { OUTYY(("\nP(dnstap:)\n")); @@ -7027,7 +7027,7 @@ yyreduce: #line 7028 "util/configparser.c" break; - case 592: + case 593: #line 3119 "./util/configparser.y" { OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str))); @@ -7039,7 +7039,7 @@ yyreduce: #line 7040 "util/configparser.c" break; - case 593: + case 594: #line 3128 "./util/configparser.y" { OUTYY(("P(dt_dnstap_bidirectional:%s)\n", (yyvsp[0].str))); @@ -7052,7 +7052,7 @@ yyreduce: #line 7053 "util/configparser.c" break; - case 594: + case 595: #line 3138 "./util/configparser.y" { OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[0].str))); @@ -7062,7 +7062,7 @@ yyreduce: #line 7063 "util/configparser.c" break; - case 595: + case 596: #line 3145 "./util/configparser.y" { OUTYY(("P(dt_dnstap_ip:%s)\n", (yyvsp[0].str))); @@ -7072,7 +7072,7 @@ yyreduce: #line 7073 "util/configparser.c" break; - case 596: + case 597: #line 3152 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls:%s)\n", (yyvsp[0].str))); @@ -7084,7 +7084,7 @@ yyreduce: #line 7085 "util/configparser.c" break; - case 597: + case 598: #line 3161 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_server_name:%s)\n", (yyvsp[0].str))); @@ -7094,7 +7094,7 @@ yyreduce: #line 7095 "util/configparser.c" break; - case 598: + case 599: #line 3168 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_cert_bundle:%s)\n", (yyvsp[0].str))); @@ -7104,7 +7104,7 @@ yyreduce: #line 7105 "util/configparser.c" break; - case 599: + case 600: #line 3175 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_client_key_file:%s)\n", (yyvsp[0].str))); @@ -7114,7 +7114,7 @@ yyreduce: #line 7115 "util/configparser.c" break; - case 600: + case 601: #line 3182 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_client_cert_file:%s)\n", (yyvsp[0].str))); @@ -7124,7 +7124,7 @@ yyreduce: #line 7125 "util/configparser.c" break; - case 601: + case 602: #line 3189 "./util/configparser.y" { OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str))); @@ -7136,7 +7136,7 @@ yyreduce: #line 7137 "util/configparser.c" break; - case 602: + case 603: #line 3198 "./util/configparser.y" { OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str))); @@ -7148,7 +7148,7 @@ yyreduce: #line 7149 "util/configparser.c" break; - case 603: + case 604: #line 3207 "./util/configparser.y" { OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str))); @@ -7158,7 +7158,7 @@ yyreduce: #line 7159 "util/configparser.c" break; - case 604: + case 605: #line 3214 "./util/configparser.y" { OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str))); @@ -7168,7 +7168,7 @@ yyreduce: #line 7169 "util/configparser.c" break; - case 605: + case 606: #line 3221 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[0].str))); @@ -7181,7 +7181,7 @@ yyreduce: #line 7182 "util/configparser.c" break; - case 606: + case 607: #line 3231 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[0].str))); @@ -7194,7 +7194,7 @@ yyreduce: #line 7195 "util/configparser.c" break; - case 607: + case 608: #line 3241 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[0].str))); @@ -7207,7 +7207,7 @@ yyreduce: #line 7208 "util/configparser.c" break; - case 608: + case 609: #line 3251 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[0].str))); @@ -7220,7 +7220,7 @@ yyreduce: #line 7221 "util/configparser.c" break; - case 609: + case 610: #line 3261 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[0].str))); @@ -7233,7 +7233,7 @@ yyreduce: #line 7234 "util/configparser.c" break; - case 610: + case 611: #line 3271 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[0].str))); @@ -7246,7 +7246,7 @@ yyreduce: #line 7247 "util/configparser.c" break; - case 611: + case 612: #line 3281 "./util/configparser.y" { OUTYY(("\nP(python:)\n")); @@ -7254,7 +7254,7 @@ yyreduce: #line 7255 "util/configparser.c" break; - case 615: + case 616: #line 3290 "./util/configparser.y" { OUTYY(("P(python-script:%s)\n", (yyvsp[0].str))); @@ -7264,7 +7264,7 @@ yyreduce: #line 7265 "util/configparser.c" break; - case 616: + case 617: #line 3296 "./util/configparser.y" { OUTYY(("\nP(dynlib:)\n")); @@ -7272,7 +7272,7 @@ yyreduce: #line 7273 "util/configparser.c" break; - case 620: + case 621: #line 3305 "./util/configparser.y" { OUTYY(("P(dynlib-file:%s)\n", (yyvsp[0].str))); @@ -7282,7 +7282,7 @@ yyreduce: #line 7283 "util/configparser.c" break; - case 621: + case 622: #line 3311 "./util/configparser.y" { OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str))); @@ -7295,7 +7295,7 @@ yyreduce: #line 7296 "util/configparser.c" break; - case 622: + case 623: #line 3321 "./util/configparser.y" { OUTYY(("P(server_log_identity:%s)\n", (yyvsp[0].str))); @@ -7305,7 +7305,7 @@ yyreduce: #line 7306 "util/configparser.c" break; - case 623: + case 624: #line 3328 "./util/configparser.y" { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); @@ -7317,7 +7317,7 @@ yyreduce: #line 7318 "util/configparser.c" break; - case 624: + case 625: #line 3337 "./util/configparser.y" { OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[-1].str))); @@ -7328,7 +7328,7 @@ yyreduce: #line 7329 "util/configparser.c" break; - case 625: + case 626: #line 3345 "./util/configparser.y" { OUTYY(("\nP(dnscrypt:)\n")); @@ -7336,7 +7336,7 @@ yyreduce: #line 7337 "util/configparser.c" break; - case 638: + case 639: #line 3361 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[0].str))); @@ -7348,7 +7348,7 @@ yyreduce: #line 7349 "util/configparser.c" break; - case 639: + case 640: #line 3371 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); @@ -7360,7 +7360,7 @@ yyreduce: #line 7361 "util/configparser.c" break; - case 640: + case 641: #line 3380 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", (yyvsp[0].str))); @@ -7370,7 +7370,7 @@ yyreduce: #line 7371 "util/configparser.c" break; - case 641: + case 642: #line 3387 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str))); @@ -7382,7 +7382,7 @@ yyreduce: #line 7383 "util/configparser.c" break; - case 642: + case 643: #line 3396 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", (yyvsp[0].str))); @@ -7392,7 +7392,7 @@ yyreduce: #line 7393 "util/configparser.c" break; - case 643: + case 644: #line 3403 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str))); @@ -7404,7 +7404,7 @@ yyreduce: #line 7405 "util/configparser.c" break; - case 644: + case 645: #line 3412 "./util/configparser.y" { OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", (yyvsp[0].str))); @@ -7415,7 +7415,7 @@ yyreduce: #line 7416 "util/configparser.c" break; - case 645: + case 646: #line 3420 "./util/configparser.y" { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); @@ -7431,7 +7431,7 @@ yyreduce: #line 7432 "util/configparser.c" break; - case 646: + case 647: #line 3433 "./util/configparser.y" { OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", (yyvsp[0].str))); @@ -7442,7 +7442,7 @@ yyreduce: #line 7443 "util/configparser.c" break; - case 647: + case 648: #line 3441 "./util/configparser.y" { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); @@ -7458,7 +7458,7 @@ yyreduce: #line 7459 "util/configparser.c" break; - case 648: + case 649: #line 3454 "./util/configparser.y" { OUTYY(("\nP(cachedb:)\n")); @@ -7466,7 +7466,7 @@ yyreduce: #line 7467 "util/configparser.c" break; - case 657: + case 658: #line 3465 "./util/configparser.y" { #ifdef USE_CACHEDB @@ -7481,7 +7481,7 @@ yyreduce: #line 7482 "util/configparser.c" break; - case 658: + case 659: #line 3477 "./util/configparser.y" { #ifdef USE_CACHEDB @@ -7496,7 +7496,7 @@ yyreduce: #line 7497 "util/configparser.c" break; - case 659: + case 660: #line 3489 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) @@ -7511,7 +7511,7 @@ yyreduce: #line 7512 "util/configparser.c" break; - case 660: + case 661: #line 3501 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) @@ -7529,7 +7529,7 @@ yyreduce: #line 7530 "util/configparser.c" break; - case 661: + case 662: #line 3516 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) @@ -7545,7 +7545,7 @@ yyreduce: #line 7546 "util/configparser.c" break; - case 662: + case 663: #line 3529 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) @@ -7561,7 +7561,7 @@ yyreduce: #line 7562 "util/configparser.c" break; - case 663: + case 664: #line 3542 "./util/configparser.y" { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); @@ -7575,7 +7575,7 @@ yyreduce: #line 7576 "util/configparser.c" break; - case 664: + case 665: #line 3553 "./util/configparser.y" { OUTYY(("\nP(ipset:)\n")); @@ -7583,7 +7583,7 @@ yyreduce: #line 7584 "util/configparser.c" break; - case 669: + case 670: #line 3562 "./util/configparser.y" { #ifdef USE_IPSET @@ -7601,7 +7601,7 @@ yyreduce: #line 7602 "util/configparser.c" break; - case 670: + case 671: #line 3577 "./util/configparser.y" { #ifdef USE_IPSET diff --git a/util/configparser.y b/util/configparser.y index e181174f3..9ebd59aa9 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -488,7 +488,7 @@ contents_rpz: contents_rpz content_rpz | ; content_rpz: auth_name | auth_zonefile | rpz_tag | auth_master | auth_url | auth_allow_notify | rpz_action_override | rpz_cname_override | - rpz_log | rpz_log_name | rpz_signal_nxdomain_ra + rpz_log | rpz_log_name | rpz_signal_nxdomain_ra | auth_for_downstream ; server_num_threads: VAR_NUM_THREADS STRING_ARG { From c7ae3ef15645f5be4279203d37380203cbd31a1d Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 14 Jan 2022 16:30:25 +0100 Subject: [PATCH 474/553] - For #602: Allow the module-config "subnetcache validator cachedb iterator". --- doc/Changelog | 2 ++ smallapp/unbound-checkconf.c | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 4215ea9a6..be52208c8 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -8,6 +8,8 @@ - Add rpz: for-downstream: yesno option, where the RPZ zone is authoritatively answered for, so the RPZ zone contents can be checked with DNS queries directed at the RPZ zone. + - For #602: Allow the module-config "subnetcache validator cachedb + iterator". 11 January 2022: George - Fix prematurely terminated TCP queries when a reply has the same ID. diff --git a/smallapp/unbound-checkconf.c b/smallapp/unbound-checkconf.c index c667f8115..fe18c3c83 100644 --- a/smallapp/unbound-checkconf.c +++ b/smallapp/unbound-checkconf.c @@ -787,6 +787,10 @@ morechecks(struct config_file* cfg) && strcmp(cfg->module_conf, "validator python cachedb iterator") != 0 && strcmp(cfg->module_conf, "respip validator python cachedb iterator") != 0 #endif +#if defined(CLIENT_SUBNET) && defined(USE_CACHEDB) + && strcmp(cfg->module_conf, "respip subnetcache validator cachedb iterator") != 0 + && strcmp(cfg->module_conf, "subnetcache validator cachedb iterator") != 0 +#endif #ifdef CLIENT_SUBNET && strcmp(cfg->module_conf, "subnetcache iterator") != 0 && strcmp(cfg->module_conf, "respip subnetcache iterator") != 0 From 8e76eb95a0d4fcb8bdfe4a6b5d84f279b71d8bc1 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Wed, 19 Jan 2022 15:32:02 +0100 Subject: [PATCH 475/553] - For dnstap, do not wakeupnow right there. Instead zero the timer to force the wakeup callback asap. --- dnstap/dtstream.c | 25 +++++++++++++++---------- doc/Changelog | 4 ++++ 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/dnstap/dtstream.c b/dnstap/dtstream.c index 14aacaef5..a1dd9703e 100644 --- a/dnstap/dtstream.c +++ b/dnstap/dtstream.c @@ -188,9 +188,9 @@ mq_wakeup_cb(void* arg) /** start timer to wakeup dtio because there is content in the queue */ static void -dt_msg_queue_start_timer(struct dt_msg_queue* mq) +dt_msg_queue_start_timer(struct dt_msg_queue* mq, int wakeupnow) { - struct timeval tv; + struct timeval tv = {0}; /* Start a timer to process messages to be logged. * If we woke up the dtio thread for every message, the wakeup * messages take up too much processing power. If the queue @@ -204,19 +204,26 @@ dt_msg_queue_start_timer(struct dt_msg_queue* mq) /* do not start the timer if a timer already exists, perhaps * in another worker. So this variable is protected by a lock in - * dtio */ + * dtio. */ + + /* If we need to wakeupnow, 0 the timer to force the callback. */ lock_basic_lock(&mq->dtio->wakeup_timer_lock); if(mq->dtio->wakeup_timer_enabled) { + if(wakeupnow) { + comm_timer_set(mq->wakeup_timer, &tv); + } lock_basic_unlock(&mq->dtio->wakeup_timer_lock); return; } mq->dtio->wakeup_timer_enabled = 1; /* we are going to start one */ - lock_basic_unlock(&mq->dtio->wakeup_timer_lock); /* start the timer, in mq, in the event base of our worker */ - tv.tv_sec = 1; - tv.tv_usec = 0; + if(!wakeupnow) { + tv.tv_sec = 1; + tv.tv_usec = 0; + } comm_timer_set(mq->wakeup_timer, &tv); + lock_basic_unlock(&mq->dtio->wakeup_timer_lock); } void @@ -283,10 +290,8 @@ dt_msg_queue_submit(struct dt_msg_queue* mq, void* buf, size_t len) /* release lock */ lock_basic_unlock(&mq->lock); - if(wakeupnow) { - dtio_wakeup(mq->dtio); - } else if(wakeupstarttimer) { - dt_msg_queue_start_timer(mq); + if(wakeupnow || wakeupstarttimer) { + dt_msg_queue_start_timer(mq, wakeupnow); } } diff --git a/doc/Changelog b/doc/Changelog index be52208c8..db7ce1f27 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +19 January 2022: George + - For dnstap, do not wakeupnow right there. Instead zero the timer to + force the wakeup callback asap. + 14 January 2022: George - Merge PR #605: - Fix EDNS to upstream where the same option could be attached From c3c0186658ebdee58851a900da4e5baf738788b1 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Tue, 25 Jan 2022 00:01:43 +0100 Subject: [PATCH 476/553] - Add serviced_query timer to send upstream queries outside of the mesh flow to prevent race conditions. --- services/outside_network.c | 99 +++++++++++++++++++++++++++++--------- services/outside_network.h | 7 +++ testcode/fake_event.c | 5 ++ util/fptr_wlist.c | 1 + 4 files changed, 90 insertions(+), 22 deletions(-) diff --git a/services/outside_network.c b/services/outside_network.c index d11431169..ac73c315a 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -94,6 +94,16 @@ static void waiting_list_remove(struct outside_network* outnet, static uint16_t tcp_select_id(struct outside_network* outnet, struct reuse_tcp* reuse); +/** Perform serviced query UDP sending operation */ +static int serviced_udp_send(struct serviced_query* sq, sldns_buffer* buff); + +/** Send serviced query over TCP return false on initial failure */ +static int serviced_tcp_send(struct serviced_query* sq, sldns_buffer* buff); + +/** call the callbacks for a serviced query */ +static void serviced_callbacks(struct serviced_query* sq, int error, + struct comm_point* c, struct comm_reply* rep); + int pending_cmp(const void* key1, const void* key2) { @@ -836,6 +846,7 @@ outnet_add_tcp_waiting_first(struct outside_network* outnet, if(w->on_tcp_waiting_list) return; w->next_waiting = outnet->tcp_wait_first; + log_assert(w->next_waiting != w); if(!outnet->tcp_wait_last) outnet->tcp_wait_last = w; outnet->tcp_wait_first = w; @@ -1271,6 +1282,8 @@ outnet_tcp_cb(struct comm_point* c, void* arg, int error, } } if(w) { + log_assert(!w->on_tcp_waiting_list); + log_assert(!w->write_wait_queued); reuse_tree_by_id_delete(&pend->reuse, w); verbose(VERB_CLIENT, "outnet tcp callback query err %d buflen %d", error, (int)sldns_buffer_limit(c->buffer)); @@ -1330,7 +1343,7 @@ outnet_send_wait_udp(struct outside_network* outnet) { struct pending* pend; /* process waiting queries */ - while(outnet->udp_wait_first && outnet->unused_fds + while(outnet->udp_wait_first && outnet->unused_fds && !outnet->want_to_quit) { pend = outnet->udp_wait_first; outnet->udp_wait_first = pend->next_waiting; @@ -1339,8 +1352,10 @@ outnet_send_wait_udp(struct outside_network* outnet) sldns_buffer_write(outnet->udp_buff, pend->pkt, pend->pkt_len); sldns_buffer_flip(outnet->udp_buff); free(pend->pkt); /* freeing now makes get_mem correct */ - pend->pkt = NULL; + pend->pkt = NULL; pend->pkt_len = 0; + log_assert(!pend->sq->busy); + pend->sq->busy = 1; if(!randomize_and_send_udp(pend, outnet->udp_buff, pend->timeout)) { /* callback error on pending */ @@ -1351,6 +1366,7 @@ outnet_send_wait_udp(struct outside_network* outnet) } pending_delete(outnet, pend); } + pend->sq->busy = 0; } } @@ -1460,7 +1476,6 @@ calc_num46(char** ifs, int num_ifs, int do_ip4, int do_ip6, (*num_ip4)++; } } - } void @@ -1715,6 +1730,8 @@ serviced_node_del(rbnode_type* node, void* ATTR_UNUSED(arg)) { struct serviced_query* sq = (struct serviced_query*)node; alloc_reg_release(sq->alloc, sq->region); + if(sq->timer) + comm_timer_delete(sq->timer); free(sq); } @@ -2171,10 +2188,13 @@ pending_udp_query(struct serviced_query* sq, struct sldns_buffer* packet, sq->outnet->udp_wait_last = pend; return pend; } + log_assert(!sq->busy); + sq->busy = 1; if(!randomize_and_send_udp(pend, packet, timeout)) { pending_delete(sq->outnet, pend); return NULL; } + sq->busy = 0; return pend; } @@ -2244,7 +2264,7 @@ reuse_tcp_select_id(struct reuse_tcp* reuse, struct outside_network* outnet) } /* equally pick a random unused element from the tree that is - * not in use. Pick a the n-th index of an ununused number, + * not in use. Pick a the n-th index of an unused number, * then loop over the empty spaces in the tree and find it */ log_assert(reuse->tree_by_id.count < 0xffff); select = ub_random_max(outnet->rnd, 0xffff - reuse->tree_by_id.count); @@ -2453,6 +2473,32 @@ lookup_serviced(struct outside_network* outnet, sldns_buffer* buff, int dnssec, return (struct serviced_query*)rbtree_search(outnet->serviced, &key); } +void +serviced_timer_cb(void* arg) +{ + struct serviced_query* sq = (struct serviced_query*)arg; + struct outside_network* outnet = sq->outnet; + verbose(VERB_ALGO, "serviced send timer"); + /* By the time this cb is called, if we don't have any registered + * callbacks for this serviced_query anymore; do not send. */ + if(!sq->cblist) + goto delete; + /* perform first network action */ + if(outnet->do_udp && !(sq->tcp_upstream || sq->ssl_upstream)) { + if(!serviced_udp_send(sq, outnet->udp_buff)) + goto delete; + } else { + if(!serviced_tcp_send(sq, outnet->udp_buff)) + goto delete; + } + /* Maybe by this time we don't have callbacks attached anymore. Don't + * proactively try to delete; let it run and maybe another callback + * will get attached by the time we get an answer. */ + return; +delete: + serviced_callbacks(sq, NETEVENT_CLOSED, NULL, NULL); +} + /** Create new serviced entry */ static struct serviced_query* serviced_create(struct outside_network* outnet, sldns_buffer* buff, int dnssec, @@ -2463,6 +2509,7 @@ serviced_create(struct outside_network* outnet, sldns_buffer* buff, int dnssec, struct regional* region) { struct serviced_query* sq = (struct serviced_query*)malloc(sizeof(*sq)); + struct timeval t; #ifdef UNBOUND_DEBUG rbnode_type* ins; #endif @@ -2505,6 +2552,15 @@ serviced_create(struct outside_network* outnet, sldns_buffer* buff, int dnssec, memcpy(&sq->addr, addr, addrlen); sq->addrlen = addrlen; sq->opt_list = opt_list; + sq->busy = 0; + sq->timer = comm_timer_create(outnet->base, serviced_timer_cb, sq); + if(!sq->timer) { + alloc_reg_release(alloc, region); + free(sq); + return NULL; + } + memset(&t, 0, sizeof(t)); + comm_timer_set(sq->timer, &t); sq->outnet = outnet; sq->cblist = NULL; sq->pending = NULL; @@ -2611,6 +2667,7 @@ serviced_delete(struct serviced_query* sq) struct waiting_tcp* w = (struct waiting_tcp*) sq->pending; verbose(VERB_CLIENT, "serviced_delete: TCP"); + log_assert(!(w->write_wait_queued && w->on_tcp_waiting_list)); /* if on stream-write-waiting list then * remove from waiting list and waiting_tcp_delete */ if(w->write_wait_queued) { @@ -2624,6 +2681,10 @@ serviced_delete(struct serviced_query* sq) struct pending_tcp* pend = (struct pending_tcp*)w->next_waiting; verbose(VERB_CLIENT, "serviced_delete: tcpreusekeep"); + /* w needs to stay on tree_by_id to not assign + * the same ID; remove the callback since its + * serviced_query will be gone. */ + w->cb = NULL; if(!reuse_tcp_remove_serviced_keep(w, sq)) { reuse_cb_and_decommission(sq->outnet, pend, NETEVENT_CLOSED); @@ -2921,7 +2982,7 @@ serviced_tcp_callback(struct comm_point* c, void* arg, int error, struct waiting_tcp* w = (struct waiting_tcp*)sq->pending; struct pending_tcp* pend_tcp = NULL; struct port_if* pi = NULL; - if(!w->on_tcp_waiting_list && w->next_waiting) { + if(w && !w->on_tcp_waiting_list && w->next_waiting) { pend_tcp = (struct pending_tcp*)w->next_waiting; pi = pend_tcp->pi; } @@ -3017,8 +3078,11 @@ serviced_tcp_initiate(struct serviced_query* sq, sldns_buffer* buff) sq->status==serviced_query_TCP_EDNS?"EDNS":""); serviced_encode(sq, buff, sq->status == serviced_query_TCP_EDNS); sq->last_sent_time = *sq->outnet->now_tv; + log_assert(!sq->busy); + sq->busy = 1; sq->pending = pending_tcp_query(sq, buff, sq->outnet->tcp_auth_query_timeout, serviced_tcp_callback, sq); + sq->busy = 0; if(!sq->pending) { /* delete from tree so that a retry by above layer does not * clash with this entry */ @@ -3050,8 +3114,11 @@ serviced_tcp_send(struct serviced_query* sq, sldns_buffer* buff) } else { timeout = sq->outnet->tcp_auth_query_timeout; } + log_assert(!sq->busy); + sq->busy = 1; sq->pending = pending_tcp_query(sq, buff, timeout, serviced_tcp_callback, sq); + sq->busy = 0; return sq->pending != NULL; } @@ -3312,20 +3379,8 @@ outnet_serviced_query(struct outside_network* outnet, serviced_node_del(&sq->node, NULL); return NULL; } - /* perform first network action */ - if(outnet->do_udp && !(tcp_upstream || ssl_upstream)) { - if(!serviced_udp_send(sq, buff)) { - (void)rbtree_delete(outnet->serviced, sq); - serviced_node_del(&sq->node, NULL); - return NULL; - } - } else { - if(!serviced_tcp_send(sq, buff)) { - (void)rbtree_delete(outnet->serviced, sq); - serviced_node_del(&sq->node, NULL); - return NULL; - } - } + /* No network action at this point; it will be invoked with the + * serviced_query timer instead to run outside of the mesh. */ } else { /* We don't need this region anymore. */ alloc_reg_release(env->alloc, region); @@ -3362,13 +3417,13 @@ callback_list_remove(struct serviced_query* sq, void* cb_arg) void outnet_serviced_query_stop(struct serviced_query* sq, void* cb_arg) { - if(!sq) + if(!sq) return; callback_list_remove(sq, cb_arg); /* if callbacks() routine scheduled deletion, let it do that */ - if(!sq->cblist && !sq->to_be_deleted) { + if(!sq->cblist && !sq->busy && !sq->to_be_deleted) { (void)rbtree_delete(sq->outnet->serviced, sq); - serviced_delete(sq); + serviced_delete(sq); } } diff --git a/services/outside_network.h b/services/outside_network.h index 10d9d5ca6..1125d5136 100644 --- a/services/outside_network.h +++ b/services/outside_network.h @@ -519,6 +519,10 @@ struct serviced_query { struct regional* region; /** allocation service for the region */ struct alloc_cache* alloc; + /** flash timer to start the net I/O as a separate event */ + struct comm_timer* timer; + /** true if serviced_query is currently doing net I/O and may block */ + int busy; }; /** @@ -792,6 +796,9 @@ void pending_udp_timer_delay_cb(void *arg); /** callback for outgoing TCP timer event */ void outnet_tcptimer(void* arg); +/** callback to send serviced queries */ +void serviced_timer_cb(void *arg); + /** callback for serviced query UDP answers */ int serviced_udp_callback(struct comm_point* c, void* arg, int error, struct comm_reply* rep); diff --git a/testcode/fake_event.c b/testcode/fake_event.c index 3c394ca62..741c035f8 100644 --- a/testcode/fake_event.c +++ b/testcode/fake_event.c @@ -1442,6 +1442,11 @@ void pending_udp_timer_cb(void *ATTR_UNUSED(arg)) log_assert(0); } +void serviced_timer_cb(void *ATTR_UNUSED(arg)) +{ + log_assert(0); +} + void pending_udp_timer_delay_cb(void *ATTR_UNUSED(arg)) { log_assert(0); diff --git a/util/fptr_wlist.c b/util/fptr_wlist.c index f8dac65c5..83b32a004 100644 --- a/util/fptr_wlist.c +++ b/util/fptr_wlist.c @@ -138,6 +138,7 @@ fptr_whitelist_comm_timer(void (*fptr)(void*)) else if(fptr == &auth_xfer_probe_timer_callback) return 1; else if(fptr == &auth_xfer_transfer_timer_callback) return 1; else if(fptr == &mesh_serve_expired_callback) return 1; + else if(fptr == &serviced_timer_cb) return 1; #ifdef USE_DNSTAP else if(fptr == &mq_wakeup_cb) return 1; #endif From 12a1053dfa9f978d875402456c2c836140e9ad47 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 25 Jan 2022 08:57:49 +0100 Subject: [PATCH 477/553] - Fix #610: Undefine-shift in sldns_str2wire_hip_buf. --- sldns/str2wire.c | 4 +++- sldns/str2wire.h | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/sldns/str2wire.c b/sldns/str2wire.c index 1e57211c1..c61a5964a 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -25,8 +25,10 @@ #include #endif +/** bits for the offset */ +#define RET_OFFSET_MASK (((unsigned)(~LDNS_WIREPARSE_MASK))>>LDNS_WIREPARSE_SHIFT) /** return an error */ -#define RET_ERR(e, off) ((int)((e)|((off)<>LDNS_WIREPARSE_SHIFT) +#define LDNS_WIREPARSE_OFFSET(e) ((((unsigned)(e))&~LDNS_WIREPARSE_MASK)>>LDNS_WIREPARSE_SHIFT) /* use lookuptable to get error string, sldns_wireparse_errors */ #define LDNS_WIREPARSE_ERR_OK 0 #define LDNS_WIREPARSE_ERR_GENERAL 342 From 70f13e54bf17343dbaf704b01602d3b09fcc38a5 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 25 Jan 2022 09:02:55 +0100 Subject: [PATCH 478/553] Changelog note for #610 - Fix #610: Undefine-shift in sldns_str2wire_hip_buf. --- doc/Changelog | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index db7ce1f27..2a48e872a 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +25 January 2022: Wouter + - Fix #610: Undefine-shift in sldns_str2wire_hip_buf. + 19 January 2022: George - For dnstap, do not wakeupnow right there. Instead zero the timer to force the wakeup callback asap. From 4573629fc4a8697547ea7aa0d5756bd46acd41b2 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Tue, 25 Jan 2022 09:46:16 +0100 Subject: [PATCH 479/553] - Mark waiting_tcp and serviced_query as being in the cb_and_decommission stage to signal later code about their state; prevents premature item deletion. --- services/outside_network.c | 34 +++++++++++++++++++++++++++++----- services/outside_network.h | 2 ++ 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/services/outside_network.c b/services/outside_network.c index ac73c315a..409257368 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -1147,6 +1147,22 @@ static void reuse_cb_readwait_for_failure(rbtree_type* tree_by_id, int err) } } +/** mark the entry for being in the cb_and_decommission stage */ +static void mark_for_cb_and_decommission(rbnode_type* node, + void* ATTR_UNUSED(arg)) +{ + struct waiting_tcp* w = (struct waiting_tcp*)node->key; + /* Mark the waiting_tcp to signal later code (serviced_delete) that + * this item is part of the backed up tree_by_id and will be deleted + * later. */ + w->in_cb_and_decommission = 1; + /* Mark the serviced_query for deletion so that later code through + * callbacks (iter_clear .. outnet_serviced_query_stop) won't + * prematurely delete it. */ + if(w->cb) + ((struct serviced_query*)w->cb_arg)->to_be_deleted = 1; +} + /** perform callbacks for failure and also decommission pending tcp. * the callbacks remove references in sq->pending to the waiting_tcp * members of the tree_by_id in the pending tcp. The pending_tcp is @@ -1162,6 +1178,9 @@ static void reuse_cb_and_decommission(struct outside_network* outnet, pend->reuse.write_wait_first = NULL; pend->reuse.write_wait_last = NULL; decommission_pending_tcp(outnet, pend); + if(store.root != NULL && store.root != RBTREE_NULL) { + traverse_postorder(&store, &mark_for_cb_and_decommission, NULL); + } reuse_cb_readwait_for_failure(&store, error); reuse_del_readwait(&store); } @@ -2377,6 +2396,7 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, #ifdef USE_DNSTAP w->sq = NULL; #endif + w->in_cb_and_decommission = 0; if(pend) { /* we have a buffer available right now */ if(reuse) { @@ -2674,9 +2694,11 @@ serviced_delete(struct serviced_query* sq) struct pending_tcp* pend = (struct pending_tcp*)w->next_waiting; verbose(VERB_CLIENT, "serviced_delete: writewait"); - reuse_tree_by_id_delete(&pend->reuse, w); + if(!w->in_cb_and_decommission) + reuse_tree_by_id_delete(&pend->reuse, w); reuse_write_wait_remove(&pend->reuse, w); - waiting_tcp_delete(w); + if(!w->in_cb_and_decommission) + waiting_tcp_delete(w); } else if(!w->on_tcp_waiting_list) { struct pending_tcp* pend = (struct pending_tcp*)w->next_waiting; @@ -2686,15 +2708,17 @@ serviced_delete(struct serviced_query* sq) * serviced_query will be gone. */ w->cb = NULL; if(!reuse_tcp_remove_serviced_keep(w, sq)) { - reuse_cb_and_decommission(sq->outnet, - pend, NETEVENT_CLOSED); + if(!w->in_cb_and_decommission) + reuse_cb_and_decommission(sq->outnet, + pend, NETEVENT_CLOSED); use_free_buffer(sq->outnet); } sq->pending = NULL; } else { verbose(VERB_CLIENT, "serviced_delete: tcpwait"); waiting_list_remove(sq->outnet, w); - waiting_tcp_delete(w); + if(!w->in_cb_and_decommission) + waiting_tcp_delete(w); } } } diff --git a/services/outside_network.h b/services/outside_network.h index 1125d5136..8f31d43cc 100644 --- a/services/outside_network.h +++ b/services/outside_network.h @@ -414,6 +414,8 @@ struct waiting_tcp { char* tls_auth_name; /** the packet was involved in an error, to stop looping errors */ int error_count; + /** if true, the item is at the cb_and_decommission stage */ + int in_cb_and_decommission; #ifdef USE_DNSTAP /** serviced query pointer for dnstap to get logging info, if nonNULL*/ struct serviced_query* sq; From f0c6d26155de704c04eeb856a3bdf23838d47b01 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Tue, 25 Jan 2022 09:57:14 +0100 Subject: [PATCH 480/553] - Better bookkeeping when reclaiming the TCP buffer. --- util/netevent.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/util/netevent.c b/util/netevent.c index 595e5dc80..b9b7230e4 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -1146,6 +1146,8 @@ reclaim_tcp_handler(struct comm_point* c) } c->tcp_more_read_again = NULL; c->tcp_more_write_again = NULL; + c->tcp_byte_count = 0; + sldns_buffer_clear(c->buffer); } /** do the callback when writing is done */ From 5c85615515a1548d7cfe4605d5ef6e6aa6ed87a6 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Tue, 25 Jan 2022 17:15:37 +0100 Subject: [PATCH 481/553] - Fix #588: Unbound 1.13.2 crashes due to p->pc is NULL in serviced_udp_callback. --- doc/Changelog | 4 ++++ services/outside_network.c | 17 +++++++++-------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 2a48e872a..9f2887e53 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +25 January 2022: George + - Fix #588: Unbound 1.13.2 crashes due to p->pc is NULL in + serviced_udp_callback. + 25 January 2022: Wouter - Fix #610: Undefine-shift in sldns_str2wire_hip_buf. diff --git a/services/outside_network.c b/services/outside_network.c index d11431169..df1a0ca21 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -3102,7 +3102,6 @@ serviced_udp_callback(struct comm_point* c, void* arg, int error, struct timeval now = *sq->outnet->now_tv; #ifdef USE_DNSTAP struct pending* p = (struct pending*)sq->pending; - struct port_if* pi = p->pc->pif; #endif sq->pending = NULL; /* removed after callback */ @@ -3144,14 +3143,16 @@ serviced_udp_callback(struct comm_point* c, void* arg, int error, /* * sending src (local service)/dst (upstream) addresses over DNSTAP */ - if(error == NETEVENT_NOERROR && outnet->dtenv && - (outnet->dtenv->log_resolver_response_messages || - outnet->dtenv->log_forwarder_response_messages)) { + if(error == NETEVENT_NOERROR && outnet->dtenv && p->pc && + (outnet->dtenv->log_resolver_response_messages || + outnet->dtenv->log_forwarder_response_messages)) { log_addr(VERB_ALGO, "response from upstream", &sq->addr, sq->addrlen); - log_addr(VERB_ALGO, "to local addr", &pi->addr, pi->addrlen); - dt_msg_send_outside_response(outnet->dtenv, &sq->addr, &pi->addr, c->type, - sq->zone, sq->zonelen, sq->qbuf, sq->qbuflen, - &sq->last_sent_time, sq->outnet->now_tv, c->buffer); + log_addr(VERB_ALGO, "to local addr", &p->pc->pif->addr, + p->pc->pif->addrlen); + dt_msg_send_outside_response(outnet->dtenv, &sq->addr, + &p->pc->pif->addr, c->type, sq->zone, sq->zonelen, + sq->qbuf, sq->qbuflen, &sq->last_sent_time, + sq->outnet->now_tv, c->buffer); } #endif if( (sq->status == serviced_query_UDP_EDNS From 79e755e1dd00cd05ae56e77b6f883ce11fbcf8c0 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Tue, 25 Jan 2022 17:29:52 +0100 Subject: [PATCH 482/553] Changelog note for #612: - Merge PR #612: TCP race condition. --- doc/Changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/Changelog b/doc/Changelog index 9f2887e53..9878dffc0 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,7 @@ 25 January 2022: George - Fix #588: Unbound 1.13.2 crashes due to p->pc is NULL in serviced_udp_callback. + - Merge PR #612: TCP race condition. 25 January 2022: Wouter - Fix #610: Undefine-shift in sldns_str2wire_hip_buf. From ea47c08e70d25695af0b3beaf2cdc445a2969713 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Wed, 26 Jan 2022 14:35:22 +0100 Subject: [PATCH 483/553] - Fix #599: [FR] RFC 9156 (obsoletes RFC 7816), by noting the new RFC document. --- doc/Changelog | 4 ++++ iterator/iterator.h | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 9878dffc0..abfb32888 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +26 January 2022: George + - Fix #599: [FR] RFC 9156 (obsoletes RFC 7816), by noting the new RFC + document. + 25 January 2022: George - Fix #588: Unbound 1.13.2 crashes due to p->pc is NULL in serviced_udp_callback. diff --git a/iterator/iterator.h b/iterator/iterator.h index a9e58569f..f09506f2e 100644 --- a/iterator/iterator.h +++ b/iterator/iterator.h @@ -379,7 +379,7 @@ struct iter_qstate { /** list of pending queries to authoritative servers. */ struct outbound_list outlist; - /** QNAME minimisation state, RFC7816 */ + /** QNAME minimisation state, RFC9156 */ enum minimisation_state minimisation_state; /** State for capsfail: QNAME minimisation state for comparisons. */ From 54ea2948da9f00ef69be6bb47464accf1597a670 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 26 Jan 2022 16:40:04 +0100 Subject: [PATCH 484/553] - Test for NSID in SERVFAIL response due to DNSSEC bogus. --- doc/Changelog | 3 + testdata/nsid_bogus.rpl | 174 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 177 insertions(+) create mode 100644 testdata/nsid_bogus.rpl diff --git a/doc/Changelog b/doc/Changelog index 9878dffc0..5a5f06eb6 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +26 January 2022: Wouter + - Test for NSID in SERVFAIL response due to DNSSEC bogus. + 25 January 2022: George - Fix #588: Unbound 1.13.2 crashes due to p->pc is NULL in serviced_udp_callback. diff --git a/testdata/nsid_bogus.rpl b/testdata/nsid_bogus.rpl new file mode 100644 index 000000000..1414163f8 --- /dev/null +++ b/testdata/nsid_bogus.rpl @@ -0,0 +1,174 @@ +; config options +; The island of trust is at example.com +server: + trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" + val-override-date: "20070916134226" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: "no" + fake-sha1: yes + trust-anchor-signaling: no + minimal-responses: no + nsid: "ascii_hopsa kidee" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test for NSID in SERVFAIL response due to DNSSEC bogus + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +; 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. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; response to DNSKEY priming query +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.com. IN DNSKEY +SECTION ANSWER +example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} +example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} +ENTRY_END + +; nodata for ns.example.com AAAA +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR AA NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +SECTION ADDITIONAL +ENTRY_END + + +; response to query of interest +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +;good signature +;www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} +;missing +www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2855 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= +SECTION AUTHORITY +example.com. IN NS ns.example.com. +example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.4 +ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +www.example.com. IN A +SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + 00 03 ; Opcode NSID (3) + 00 00 ; Length 0 + HEX_EDNSDATA_END +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA DO SERVFAIL +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + 00 03 ; Opcode NSID (3) + 00 0b ; Length 11 + 68 6F 70 73 61 20 ; "hopsa " + 6B 69 64 65 65 ; "kidee" + HEX_EDNSDATA_END +ENTRY_END + +SCENARIO_END From c49e87e1b7abd9f7c62107dab7fd3006d2f53c2c Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Sat, 29 Jan 2022 15:10:26 +0100 Subject: [PATCH 485/553] - Fix tls-* and ssl-* documented alternate syntax to also be available through remote-control and unbound-checkconf. --- doc/Changelog | 4 ++++ util/config_file.c | 14 ++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 34ed20378..d9c30a99c 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +29 January 2022: George + - Fix tls-* and ssl-* documented alternate syntax to also be available + through remote-control and unbound-checkconf. + 26 January 2022: George - Fix #599: [FR] RFC 9156 (obsoletes RFC 7816), by noting the new RFC document. diff --git a/util/config_file.c b/util/config_file.c index 39050f553..6bbd85ca1 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -531,11 +531,17 @@ int config_set_option(struct config_file* cfg, const char* opt, else S_YNO("edns-tcp-keepalive:", do_tcp_keepalive) else S_NUMBER_NONZERO("edns-tcp-keepalive-timeout:", tcp_keepalive_timeout) else S_YNO("ssl-upstream:", ssl_upstream) + else S_YNO("tls-upstream:", ssl_upstream) else S_STR("ssl-service-key:", ssl_service_key) + else S_STR("tls-service-key:", ssl_service_key) else S_STR("ssl-service-pem:", ssl_service_pem) + else S_STR("tls-service-pem:", ssl_service_pem) else S_NUMBER_NONZERO("ssl-port:", ssl_port) + else S_NUMBER_NONZERO("tls-port:", ssl_port) + else S_STR("ssl-cert-bundle:", tls_cert_bundle) else S_STR("tls-cert-bundle:", tls_cert_bundle) else S_YNO("tls-win-cert:", tls_win_cert) + else S_STRLIST("additional-ssl-port:", tls_additional_port) else S_STRLIST("additional-tls-port:", tls_additional_port) else S_STRLIST("tls-additional-ports:", tls_additional_port) else S_STRLIST("tls-additional-port:", tls_additional_port) @@ -1029,11 +1035,19 @@ config_get_option(struct config_file* cfg, const char* opt, else O_YNO(opt, "edns-tcp-keepalive", do_tcp_keepalive) else O_DEC(opt, "edns-tcp-keepalive-timeout", tcp_keepalive_timeout) else O_YNO(opt, "ssl-upstream", ssl_upstream) + else O_YNO(opt, "tls-upstream", ssl_upstream) else O_STR(opt, "ssl-service-key", ssl_service_key) + else O_STR(opt, "tls-service-key", ssl_service_key) else O_STR(opt, "ssl-service-pem", ssl_service_pem) + else O_STR(opt, "tls-service-pem", ssl_service_pem) else O_DEC(opt, "ssl-port", ssl_port) + else O_DEC(opt, "tls-port", ssl_port) + else O_STR(opt, "ssl-cert-bundle", tls_cert_bundle) else O_STR(opt, "tls-cert-bundle", tls_cert_bundle) else O_YNO(opt, "tls-win-cert", tls_win_cert) + else O_LST(opt, "additional-ssl-port", tls_additional_port) + else O_LST(opt, "additional-tls-port", tls_additional_port) + else O_LST(opt, "tls-additional-ports", tls_additional_port) else O_LST(opt, "tls-additional-port", tls_additional_port) else O_LST(opt, "tls-session-ticket-keys", tls_session_ticket_keys.first) else O_STR(opt, "tls-ciphers", tls_ciphers) From 888eb224a6a04da7f203795fd2305013010ddd6c Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Sat, 29 Jan 2022 15:14:56 +0100 Subject: [PATCH 486/553] - Better cleanup on failed DoT/DoH listening socket creation. --- doc/Changelog | 1 + services/listen_dnsport.c | 37 ++++++++++++++++++++----------------- 2 files changed, 21 insertions(+), 17 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index d9c30a99c..9b9dd0557 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,7 @@ 29 January 2022: George - Fix tls-* and ssl-* documented alternate syntax to also be available through remote-control and unbound-checkconf. + - Better cleanup on failed DoT/DoH listening socket creation. 26 January 2022: George - Fix #599: [FR] RFC 9156 (obsoletes RFC 7816), by noting the new RFC diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index 6a33fbcda..983b96f09 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -1370,39 +1370,38 @@ listen_create(struct comm_base* base, struct listen_port* ports, struct comm_point* cp = NULL; if(ports->ftype == listen_type_udp || ports->ftype == listen_type_udp_dnscrypt) - cp = comm_point_create_udp(base, ports->fd, + cp = comm_point_create_udp(base, ports->fd, front->udp_buff, cb, cb_arg, ports->socket); else if(ports->ftype == listen_type_tcp || ports->ftype == listen_type_tcp_dnscrypt) - cp = comm_point_create_tcp(base, ports->fd, + cp = comm_point_create_tcp(base, ports->fd, tcp_accept_count, tcp_idle_timeout, harden_large_queries, 0, NULL, tcp_conn_limit, bufsize, front->udp_buff, ports->ftype, cb, cb_arg, ports->socket); else if(ports->ftype == listen_type_ssl || ports->ftype == listen_type_http) { - cp = comm_point_create_tcp(base, ports->fd, + cp = comm_point_create_tcp(base, ports->fd, tcp_accept_count, tcp_idle_timeout, harden_large_queries, http_max_streams, http_endpoint, tcp_conn_limit, bufsize, front->udp_buff, ports->ftype, cb, cb_arg, ports->socket); - if(http_notls && ports->ftype == listen_type_http) - cp->ssl = NULL; - else - cp->ssl = sslctx; if(ports->ftype == listen_type_http) { if(!sslctx && !http_notls) { - log_warn("HTTPS port configured, but no TLS " - "tls-service-key or tls-service-pem " - "set"); + log_warn("HTTPS port configured, but " + "no TLS tls-service-key or " + "tls-service-pem set"); } #ifndef HAVE_SSL_CTX_SET_ALPN_SELECT_CB - if(!http_notls) - log_warn("Unbound is not compiled with an " - "OpenSSL version supporting ALPN " - " (OpenSSL >= 1.0.2). This is required " - "to use DNS-over-HTTPS"); + if(!http_notls) { + log_warn("Unbound is not compiled " + "with an OpenSSL version " + "supporting ALPN " + "(OpenSSL >= 1.0.2). This " + "is required to use " + "DNS-over-HTTPS"); + } #endif #ifndef HAVE_NGHTTP2_NGHTTP2_H log_warn("Unbound is not compiled with " @@ -1412,13 +1411,17 @@ listen_create(struct comm_base* base, struct listen_port* ports, } } else if(ports->ftype == listen_type_udpancil || ports->ftype == listen_type_udpancil_dnscrypt) - cp = comm_point_create_udp_ancil(base, ports->fd, + cp = comm_point_create_udp_ancil(base, ports->fd, front->udp_buff, cb, cb_arg, ports->socket); if(!cp) { - log_err("can't create commpoint"); + log_err("can't create commpoint"); listen_delete(front); return NULL; } + if(http_notls && ports->ftype == listen_type_http) + cp->ssl = NULL; + else + cp->ssl = sslctx; cp->dtenv = dtenv; cp->do_not_close = 1; #ifdef USE_DNSCRYPT From f857af873ef078710caff566fc9879304f798716 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Sat, 29 Jan 2022 23:49:38 +0100 Subject: [PATCH 487/553] - Update ratelimit code for recent serviced_query changes and more accurate ratelimit calculation. --- daemon/worker.c | 15 +++--- dnstap/unbound-dnstap-socket.c | 10 ++-- doc/unbound.conf.5.in | 3 +- iterator/iterator.c | 84 +++++++++------------------------- iterator/iterator.h | 2 +- libunbound/libworker.c | 11 +++-- libunbound/worker.h | 12 ++++- pythonmod/interface.i | 3 +- services/cache/infra.c | 44 +++++++++++++----- services/cache/infra.h | 2 +- services/outside_network.c | 37 +++++++++++++-- services/outside_network.h | 11 +++-- smallapp/worker_cb.c | 12 +++-- testcode/fake_event.c | 3 +- util/fptr_wlist.c | 7 +-- util/fptr_wlist.h | 7 +-- util/module.h | 6 ++- 17 files changed, 154 insertions(+), 115 deletions(-) diff --git a/daemon/worker.c b/daemon/worker.c index 5d2483cd2..a6b161f7a 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -1967,9 +1967,10 @@ worker_delete(struct worker* worker) struct outbound_entry* worker_send_query(struct query_info* qinfo, uint16_t flags, int dnssec, - int want_dnssec, int nocaps, struct sockaddr_storage* addr, - socklen_t addrlen, uint8_t* zone, size_t zonelen, int tcp_upstream, - int ssl_upstream, char* tls_auth_name, struct module_qstate* q) + int want_dnssec, int nocaps, int check_ratelimit, + struct sockaddr_storage* addr, socklen_t addrlen, uint8_t* zone, + size_t zonelen, int tcp_upstream, int ssl_upstream, char* tls_auth_name, + struct module_qstate* q, int* was_ratelimited) { struct worker* worker = q->env->worker; struct outbound_entry* e = (struct outbound_entry*)regional_alloc( @@ -1978,9 +1979,10 @@ worker_send_query(struct query_info* qinfo, uint16_t flags, int dnssec, return NULL; e->qstate = q; e->qsent = outnet_serviced_query(worker->back, qinfo, flags, dnssec, - want_dnssec, nocaps, tcp_upstream, + want_dnssec, nocaps, check_ratelimit, tcp_upstream, ssl_upstream, tls_auth_name, addr, addrlen, zone, zonelen, q, - worker_handle_service_reply, e, worker->back->udp_buff, q->env); + worker_handle_service_reply, e, worker->back->udp_buff, q->env, + was_ratelimited); if(!e->qsent) { return NULL; } @@ -2024,10 +2026,11 @@ struct outbound_entry* libworker_send_query( struct query_info* ATTR_UNUSED(qinfo), uint16_t ATTR_UNUSED(flags), int ATTR_UNUSED(dnssec), int ATTR_UNUSED(want_dnssec), int ATTR_UNUSED(nocaps), + int ATTR_UNUSED(check_ratelimit), struct sockaddr_storage* ATTR_UNUSED(addr), socklen_t ATTR_UNUSED(addrlen), uint8_t* ATTR_UNUSED(zone), size_t ATTR_UNUSED(zonelen), int ATTR_UNUSED(tcp_upstream), int ATTR_UNUSED(ssl_upstream), char* ATTR_UNUSED(tls_auth_name), - struct module_qstate* ATTR_UNUSED(q)) + struct module_qstate* ATTR_UNUSED(q), int* ATTR_UNUSED(was_ratelimited)) { log_assert(0); return 0; diff --git a/dnstap/unbound-dnstap-socket.c b/dnstap/unbound-dnstap-socket.c index 990b8a866..63292fbca 100644 --- a/dnstap/unbound-dnstap-socket.c +++ b/dnstap/unbound-dnstap-socket.c @@ -1413,11 +1413,12 @@ void worker_sighandler(int ATTR_UNUSED(sig), void* ATTR_UNUSED(arg)) struct outbound_entry* worker_send_query( struct query_info* ATTR_UNUSED(qinfo), uint16_t ATTR_UNUSED(flags), int ATTR_UNUSED(dnssec), int ATTR_UNUSED(want_dnssec), - int ATTR_UNUSED(nocaps), struct sockaddr_storage* ATTR_UNUSED(addr), + int ATTR_UNUSED(nocaps), int ATTR_UNUSED(check_ratelimit), + struct sockaddr_storage* ATTR_UNUSED(addr), socklen_t ATTR_UNUSED(addrlen), uint8_t* ATTR_UNUSED(zone), size_t ATTR_UNUSED(zonelen), int ATTR_UNUSED(tcp_upstream), int ATTR_UNUSED(ssl_upstream), char* ATTR_UNUSED(tls_auth_name), - struct module_qstate* ATTR_UNUSED(q)) + struct module_qstate* ATTR_UNUSED(q), int* ATTR_UNUSED(was_ratelimited)) { log_assert(0); return 0; @@ -1446,11 +1447,12 @@ worker_alloc_cleanup(void* ATTR_UNUSED(arg)) struct outbound_entry* libworker_send_query( struct query_info* ATTR_UNUSED(qinfo), uint16_t ATTR_UNUSED(flags), int ATTR_UNUSED(dnssec), int ATTR_UNUSED(want_dnssec), - int ATTR_UNUSED(nocaps), struct sockaddr_storage* ATTR_UNUSED(addr), + int ATTR_UNUSED(nocaps), int ATTR_UNUSED(check_ratelimit), + struct sockaddr_storage* ATTR_UNUSED(addr), socklen_t ATTR_UNUSED(addrlen), uint8_t* ATTR_UNUSED(zone), size_t ATTR_UNUSED(zonelen), int ATTR_UNUSED(tcp_upstream), int ATTR_UNUSED(ssl_upstream), char* ATTR_UNUSED(tls_auth_name), - struct module_qstate* ATTR_UNUSED(q)) + struct module_qstate* ATTR_UNUSED(q), int* ATTR_UNUSED(was_ratelimited)) { log_assert(0); return 0; diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index c0878dad1..a4d7ca3bc 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -1648,7 +1648,8 @@ ratelimited by this setting. The zone of the query is determined by examining the nameservers for it, the zone name is used to keep track of the rate. For example, 1000 may be a suitable value to stop the server from being overloaded with random names, and keeps Unbound from sending traffic to the -nameservers for those zones. +nameservers for those zones. Configured forwarders are excluded from +ratelimiting. .TP 5 .B ratelimit\-size: \fI Give the size of the data structure in which the current ongoing rates are diff --git a/iterator/iterator.c b/iterator/iterator.c index 69e7e53dd..81120c6b6 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -1533,36 +1533,6 @@ processInitRequest(struct module_qstate* qstate, struct iter_qstate* iq, if(!iq->ratelimit_ok && qstate->prefetch_leeway) iq->ratelimit_ok = 1; /* allow prefetches, this keeps otherwise valid data in the cache */ - if(!iq->ratelimit_ok && infra_ratelimit_exceeded( - qstate->env->infra_cache, iq->dp->name, - iq->dp->namelen, *qstate->env->now)) { - /* and increment the rate, so that the rate for time - * now will also exceed the rate, keeping cache fresh */ - (void)infra_ratelimit_inc(qstate->env->infra_cache, - iq->dp->name, iq->dp->namelen, - *qstate->env->now, &qstate->qinfo, - qstate->reply); - /* see if we are passed through with slip factor */ - if(qstate->env->cfg->ratelimit_factor != 0 && - ub_random_max(qstate->env->rnd, - qstate->env->cfg->ratelimit_factor) == 1) { - iq->ratelimit_ok = 1; - log_nametypeclass(VERB_ALGO, "ratelimit allowed through for " - "delegation point", iq->dp->name, - LDNS_RR_TYPE_NS, LDNS_RR_CLASS_IN); - } else { - lock_basic_lock(&ie->queries_ratelimit_lock); - ie->num_queries_ratelimited++; - lock_basic_unlock(&ie->queries_ratelimit_lock); - log_nametypeclass(VERB_ALGO, "ratelimit exceeded with " - "delegation point", iq->dp->name, - LDNS_RR_TYPE_NS, LDNS_RR_CLASS_IN); - qstate->was_ratelimited = 1; - errinf(qstate, "query was ratelimited"); - errinf_dname(qstate, "for zone", iq->dp->name); - return error_response(qstate, id, LDNS_RCODE_SERVFAIL); - } - } /* see if this dp not useless. * It is useless if: @@ -2211,9 +2181,11 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, int auth_fallback = 0; uint8_t* qout_orig = NULL; size_t qout_orig_len = 0; + int sq_check_ratelimit = 1; + int sq_was_ratelimited = 0; - /* NOTE: a request will encounter this state for each target it - * needs to send a query to. That is, at least one per referral, + /* NOTE: a request will encounter this state for each target it + * needs to send a query to. That is, at least one per referral, * more if some targets timeout or return throwaway answers. */ log_query_info(VERB_QUERY, "processQueryTargets:", &qstate->qinfo); @@ -2646,22 +2618,9 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, return 0; } - /* if not forwarding, check ratelimits per delegationpoint name */ - if(!(iq->chase_flags & BIT_RD) && !iq->ratelimit_ok) { - if(!infra_ratelimit_inc(qstate->env->infra_cache, iq->dp->name, - iq->dp->namelen, *qstate->env->now, &qstate->qinfo, - qstate->reply)) { - lock_basic_lock(&ie->queries_ratelimit_lock); - ie->num_queries_ratelimited++; - lock_basic_unlock(&ie->queries_ratelimit_lock); - verbose(VERB_ALGO, "query exceeded ratelimits"); - qstate->was_ratelimited = 1; - errinf_dname(qstate, "exceeded ratelimit for zone", - iq->dp->name); - return error_response(qstate, id, LDNS_RCODE_SERVFAIL); - } - } - + /* Do not check ratelimit for forwarding queries or if we already got a + * pass. */ + sq_check_ratelimit = (!(iq->chase_flags & BIT_RD) && !iq->ratelimit_ok); /* We have a valid target. */ if(verbosity >= VERB_QUERY) { log_query_info(VERB_QUERY, "sending query:", &iq->qinfo_out); @@ -2673,25 +2632,32 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, } fptr_ok(fptr_whitelist_modenv_send_query(qstate->env->send_query)); outq = (*qstate->env->send_query)(&iq->qinfo_out, - iq->chase_flags | (iq->chase_to_rd?BIT_RD:0), + iq->chase_flags | (iq->chase_to_rd?BIT_RD:0), /* unset CD if to forwarder(RD set) and not dnssec retry * (blacklist nonempty) and no trust-anchors are configured * above the qname or on the first attempt when dnssec is on */ EDNS_DO| ((iq->chase_to_rd||(iq->chase_flags&BIT_RD)!=0)&& !qstate->blacklist&&(!iter_qname_indicates_dnssec(qstate->env, - &iq->qinfo_out)||target->attempts==1)?0:BIT_CD), + &iq->qinfo_out)||target->attempts==1)?0:BIT_CD), iq->dnssec_expected, iq->caps_fallback || is_caps_whitelisted( - ie, iq), &target->addr, target->addrlen, + ie, iq), sq_check_ratelimit, &target->addr, target->addrlen, iq->dp->name, iq->dp->namelen, (iq->dp->tcp_upstream || qstate->env->cfg->tcp_upstream), (iq->dp->ssl_upstream || qstate->env->cfg->ssl_upstream), - target->tls_auth_name, qstate); + target->tls_auth_name, qstate, &sq_was_ratelimited); if(!outq) { + if(sq_was_ratelimited) { + lock_basic_lock(&ie->queries_ratelimit_lock); + ie->num_queries_ratelimited++; + lock_basic_unlock(&ie->queries_ratelimit_lock); + verbose(VERB_ALGO, "query exceeded ratelimits"); + qstate->was_ratelimited = 1; + errinf_dname(qstate, "exceeded ratelimit for zone", + iq->dp->name); + return error_response(qstate, id, LDNS_RCODE_SERVFAIL); + } log_addr(VERB_QUERY, "error sending query to auth server", &target->addr, target->addrlen); - if(!(iq->chase_flags & BIT_RD) && !iq->ratelimit_ok) - infra_ratelimit_dec(qstate->env->infra_cache, iq->dp->name, - iq->dp->namelen, *qstate->env->now); if(qstate->env->cfg->qname_minimisation) iq->minimisation_state = SKIP_MINIMISE_STATE; return next_state(iq, QUERYTARGETS_STATE); @@ -2935,14 +2901,6 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq, * delegation point, and back to the QUERYTARGETS_STATE. */ verbose(VERB_DETAIL, "query response was REFERRAL"); - if(!(iq->chase_flags & BIT_RD) && !iq->ratelimit_ok) { - /* we have a referral, no ratelimit, we can send - * our queries to the given name */ - infra_ratelimit_dec(qstate->env->infra_cache, - iq->dp->name, iq->dp->namelen, - *qstate->env->now); - } - /* if hardened, only store referral if we asked for it */ if(!qstate->no_cache_store && (!qstate->env->cfg->harden_referral_path || diff --git a/iterator/iterator.h b/iterator/iterator.h index f09506f2e..8b840528d 100644 --- a/iterator/iterator.h +++ b/iterator/iterator.h @@ -80,7 +80,7 @@ struct rbtree_type; /** * number of labels from QNAME that are always send individually when using * QNAME minimisation, even when the number of labels of the QNAME is bigger - * tham MAX_MINIMISE_COUNT */ + * than MAX_MINIMISE_COUNT */ #define MINIMISE_ONE_LAB 4 #define MINIMISE_MULTIPLE_LABS (MAX_MINIMISE_COUNT - MINIMISE_ONE_LAB) /** at what query-sent-count to stop target fetch policy */ diff --git a/libunbound/libworker.c b/libunbound/libworker.c index 7f753435d..ab28dd54f 100644 --- a/libunbound/libworker.c +++ b/libunbound/libworker.c @@ -882,9 +882,10 @@ void libworker_alloc_cleanup(void* arg) struct outbound_entry* libworker_send_query(struct query_info* qinfo, uint16_t flags, int dnssec, int want_dnssec, int nocaps, + int check_ratelimit, struct sockaddr_storage* addr, socklen_t addrlen, uint8_t* zone, size_t zonelen, int tcp_upstream, int ssl_upstream, char* tls_auth_name, - struct module_qstate* q) + struct module_qstate* q, int* was_ratelimited) { struct libworker* w = (struct libworker*)q->env->worker; struct outbound_entry* e = (struct outbound_entry*)regional_alloc( @@ -893,9 +894,10 @@ struct outbound_entry* libworker_send_query(struct query_info* qinfo, return NULL; e->qstate = q; e->qsent = outnet_serviced_query(w->back, qinfo, flags, dnssec, - want_dnssec, nocaps, tcp_upstream, ssl_upstream, + want_dnssec, nocaps, check_ratelimit, tcp_upstream, ssl_upstream, tls_auth_name, addr, addrlen, zone, zonelen, q, - libworker_handle_service_reply, e, w->back->udp_buff, q->env); + libworker_handle_service_reply, e, w->back->udp_buff, q->env, + was_ratelimited); if(!e->qsent) { return NULL; } @@ -976,10 +978,11 @@ void worker_sighandler(int ATTR_UNUSED(sig), void* ATTR_UNUSED(arg)) struct outbound_entry* worker_send_query(struct query_info* ATTR_UNUSED(qinfo), uint16_t ATTR_UNUSED(flags), int ATTR_UNUSED(dnssec), int ATTR_UNUSED(want_dnssec), int ATTR_UNUSED(nocaps), + int ATTR_UNUSED(check_ratelimit), struct sockaddr_storage* ATTR_UNUSED(addr), socklen_t ATTR_UNUSED(addrlen), uint8_t* ATTR_UNUSED(zone), size_t ATTR_UNUSED(zonelen), int ATTR_UNUSED(tcp_upstream), int ATTR_UNUSED(ssl_upstream), char* ATTR_UNUSED(tls_auth_name), - struct module_qstate* ATTR_UNUSED(q)) + struct module_qstate* ATTR_UNUSED(q), int* ATTR_UNUSED(was_ratelimited)) { log_assert(0); return 0; diff --git a/libunbound/worker.h b/libunbound/worker.h index 974b66a30..0fa5bfa99 100644 --- a/libunbound/worker.h +++ b/libunbound/worker.h @@ -58,6 +58,7 @@ struct query_info; * @param dnssec: if set, EDNS record will have DO bit set. * @param want_dnssec: signatures needed. * @param nocaps: ignore capsforid(if in config), do not perturb qname. + * @param check_ratelimit: if set, will check ratelimit before sending out. * @param addr: where to. * @param addrlen: length of addr. * @param zone: delegation point name. @@ -67,14 +68,17 @@ struct query_info; * @param tls_auth_name: if ssl_upstream, use this name with TLS * authentication. * @param q: which query state to reactivate upon return. + * @param was_ratelimited: it will signal back if the query failed to pass the + * ratelimit check. * @return: false on failure (memory or socket related). no query was * sent. */ struct outbound_entry* libworker_send_query(struct query_info* qinfo, uint16_t flags, int dnssec, int want_dnssec, int nocaps, + int check_ratelimit, struct sockaddr_storage* addr, socklen_t addrlen, uint8_t* zone, size_t zonelen, int tcp_upstream, int ssl_upstream, char* tls_auth_name, - struct module_qstate* q); + struct module_qstate* q, int* was_ratelimited); /** process incoming serviced query replies from the network */ int libworker_handle_service_reply(struct comm_point* c, void* arg, int error, @@ -110,6 +114,7 @@ void worker_sighandler(int sig, void* arg); * @param dnssec: if set, EDNS record will have DO bit set. * @param want_dnssec: signatures needed. * @param nocaps: ignore capsforid(if in config), do not perturb qname. + * @param check_ratelimit: if set, will check ratelimit before sending out. * @param addr: where to. * @param addrlen: length of addr. * @param zone: wireformat dname of the zone. @@ -119,14 +124,17 @@ void worker_sighandler(int sig, void* arg); * @param tls_auth_name: if ssl_upstream, use this name with TLS * authentication. * @param q: which query state to reactivate upon return. + * @param was_ratelimited: it will signal back if the query failed to pass the + * ratelimit check. * @return: false on failure (memory or socket related). no query was * sent. */ struct outbound_entry* worker_send_query(struct query_info* qinfo, uint16_t flags, int dnssec, int want_dnssec, int nocaps, + int check_ratelimit, struct sockaddr_storage* addr, socklen_t addrlen, uint8_t* zone, size_t zonelen, int tcp_upstream, int ssl_upstream, char* tls_auth_name, - struct module_qstate* q); + struct module_qstate* q, int* was_ratelimited); /** * process control messages from the main thread. Frees the control diff --git a/pythonmod/interface.i b/pythonmod/interface.i index 03483abdf..1ca8686a7 100644 --- a/pythonmod/interface.i +++ b/pythonmod/interface.i @@ -712,9 +712,10 @@ struct module_env { /* --- services --- */ struct outbound_entry* (*send_query)(struct query_info* qinfo, uint16_t flags, int dnssec, int want_dnssec, int nocaps, + int check_ratelimit, struct sockaddr_storage* addr, socklen_t addrlen, uint8_t* zone, size_t zonelen, int tcp_upstream, int ssl_upstream, - char* tls_auth_name, struct module_qstate* q); + char* tls_auth_name, struct module_qstate* q, int* was_ratelimited); void (*detach_subs)(struct module_qstate* qstate); int (*attach_sub)(struct module_qstate* qstate, struct query_info* qinfo, uint16_t qflags, int prime, diff --git a/services/cache/infra.c b/services/cache/infra.c index 518e69622..01e1a7cdd 100644 --- a/services/cache/infra.c +++ b/services/cache/infra.c @@ -898,8 +898,9 @@ static void infra_ip_create_ratedata(struct infra_cache* infra, slabhash_insert(infra->client_ip_rates, h, &k->entry, d, NULL); } -/** find the second and return its rate counter, if none, remove oldest */ -static int* infra_rate_find_second(void* data, time_t t) +/** Find the second and return its rate counter. If none and should_add, remove + * oldest to accommodate. Else return none. */ +static int* infra_rate_find_second_or_none(void* data, time_t t, int should_add) { struct rate_data* d = (struct rate_data*)data; int i, oldest; @@ -907,6 +908,7 @@ static int* infra_rate_find_second(void* data, time_t t) if(d->timestamp[i] == t) return &(d->qps[i]); } + if(!should_add) return NULL; /* remove oldest timestamp, and insert it at t with 0 qps */ oldest = 0; for(i=0; iqps[oldest]); } +/** find the second and return its rate counter, if none, remove oldest to + * accommodate */ +static int* infra_rate_give_second(void* data, time_t t) +{ + return infra_rate_find_second_or_none(data, t, 1); +} + +/** find the second and return its rate counter only if it exists. Caller + * should check for NULL return value */ +static int* infra_rate_get_second(void* data, time_t t) +{ + return infra_rate_find_second_or_none(data, t, 0); +} + int infra_rate_max(void* data, time_t now) { struct rate_data* d = (struct rate_data*)data; int i, max = 0; for(i=0; itimestamp[i] <= RATE_WINDOW) { - if(d->qps[i] > max) - max = d->qps[i]; + if(now == d->timestamp[i]) { + return d->qps[i]; } } return max; @@ -950,12 +965,12 @@ int infra_ratelimit_inc(struct infra_cache* infra, uint8_t* name, entry = infra_find_ratedata(infra, name, namelen, 1); if(entry) { int premax = infra_rate_max(entry->data, timenow); - int* cur = infra_rate_find_second(entry->data, timenow); + int* cur = infra_rate_give_second(entry->data, timenow); (*cur)++; max = infra_rate_max(entry->data, timenow); lock_rw_unlock(&entry->lock); - if(premax < lim && max >= lim) { + if(premax <= lim && max > lim) { char buf[257], qnm[257], ts[12], cs[12], ip[128]; dname_str(name, buf); dname_str(qinfo->qname, qnm); @@ -970,12 +985,12 @@ int infra_ratelimit_inc(struct infra_cache* infra, uint8_t* name, verbose(VERB_OPS, "ratelimit exceeded %s %d query %s %s %s", buf, lim, qnm, cs, ts); } } - return (max < lim); + return (max <= lim); } /* create */ infra_create_ratedata(infra, name, namelen, timenow); - return (1 < lim); + return (1 <= lim); } void infra_ratelimit_dec(struct infra_cache* infra, uint8_t* name, @@ -987,7 +1002,12 @@ void infra_ratelimit_dec(struct infra_cache* infra, uint8_t* name, return; /* not enabled */ entry = infra_find_ratedata(infra, name, namelen, 1); if(!entry) return; /* not cached */ - cur = infra_rate_find_second(entry->data, timenow); + cur = infra_rate_get_second(entry->data, timenow); + if(cur == NULL) { + /* our timenow is not available anymore; nothing to decrease */ + lock_rw_unlock(&entry->lock); + return; + } if((*cur) > 0) (*cur)--; lock_rw_unlock(&entry->lock); @@ -1027,7 +1047,7 @@ infra_get_mem(struct infra_cache* infra) } int infra_ip_ratelimit_inc(struct infra_cache* infra, - struct comm_reply* repinfo, time_t timenow, struct sldns_buffer* buffer) + struct comm_reply* repinfo, time_t timenow, struct sldns_buffer* buffer) { int max; struct lruhash_entry* entry; @@ -1040,7 +1060,7 @@ int infra_ip_ratelimit_inc(struct infra_cache* infra, entry = infra_find_ip_ratedata(infra, repinfo, 1); if(entry) { int premax = infra_rate_max(entry->data, timenow); - int* cur = infra_rate_find_second(entry->data, timenow); + int* cur = infra_rate_give_second(entry->data, timenow); (*cur)++; max = infra_rate_max(entry->data, timenow); lock_rw_unlock(&entry->lock); diff --git a/services/cache/infra.h b/services/cache/infra.h index 14f97c4c6..a10e70f7d 100644 --- a/services/cache/infra.h +++ b/services/cache/infra.h @@ -403,7 +403,7 @@ void infra_ratelimit_dec(struct infra_cache* infra, uint8_t* name, int infra_ratelimit_exceeded(struct infra_cache* infra, uint8_t* name, size_t namelen, time_t timenow); -/** find the maximum rate stored, not too old. 0 if no information. */ +/** find the maximum rate stored. 0 if no information. */ int infra_rate_max(void* data, time_t now); /** find the ratelimit in qps for a domain. 0 if no limit for domain. */ diff --git a/services/outside_network.c b/services/outside_network.c index 651f221fd..d0a53fe4b 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -3333,11 +3333,11 @@ serviced_udp_callback(struct comm_point* c, void* arg, int error, struct serviced_query* outnet_serviced_query(struct outside_network* outnet, struct query_info* qinfo, uint16_t flags, 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, struct module_qstate* qstate, + int nocaps, int check_ratelimit, int tcp_upstream, int ssl_upstream, + char* tls_auth_name, struct sockaddr_storage* addr, socklen_t addrlen, + uint8_t* zone, size_t zonelen, struct module_qstate* qstate, comm_point_callback_type* callback, void* callback_arg, - sldns_buffer* buff, struct module_env* env) + sldns_buffer* buff, struct module_env* env, int* was_ratelimited) { struct serviced_query* sq; struct service_callback* cb; @@ -3345,6 +3345,7 @@ outnet_serviced_query(struct outside_network* outnet, struct regional* region; struct edns_option* backed_up_opt_list = qstate->edns_opts_back_out; struct edns_option* per_upstream_opt_list = NULL; + time_t timenow = 0; /* If we have an already populated EDNS option list make a copy since * we may now add upstream specific EDNS options. */ @@ -3386,6 +3387,26 @@ outnet_serviced_query(struct outside_network* outnet, sq = lookup_serviced(outnet, buff, dnssec, addr, addrlen, per_upstream_opt_list); if(!sq) { + /* Check ratelimit only for new serviced_query */ + if(check_ratelimit) { + timenow = *env->now; + if(!infra_ratelimit_inc(env->infra_cache, zone, + zonelen, timenow, &qstate->qinfo, + qstate->reply)) { + /* Can we pass through with slip factor? */ + if(env->cfg->ratelimit_factor == 0 || + ub_random_max(env->rnd, + env->cfg->ratelimit_factor) != 1) { + *was_ratelimited = 1; + alloc_reg_release(env->alloc, region); + return NULL; + } + log_nametypeclass(VERB_ALGO, + "ratelimit allowed through for " + "delegation point", zone, + LDNS_RR_TYPE_NS, LDNS_RR_CLASS_IN); + } + } /* make new serviced query entry */ sq = serviced_create(outnet, buff, dnssec, want_dnssec, nocaps, tcp_upstream, ssl_upstream, tls_auth_name, addr, @@ -3395,11 +3416,19 @@ outnet_serviced_query(struct outside_network* outnet, ? env->cfg->pad_queries_block_size : 0 ), env->alloc, region); if(!sq) { + if(check_ratelimit) { + infra_ratelimit_dec(env->infra_cache, + zone, zonelen, timenow); + } alloc_reg_release(env->alloc, region); return NULL; } if(!(cb = (struct service_callback*)regional_alloc( sq->region, sizeof(*cb)))) { + if(check_ratelimit) { + infra_ratelimit_dec(env->infra_cache, + zone, zonelen, timenow); + } (void)rbtree_delete(outnet->serviced, sq); serviced_node_del(&sq->node, NULL); return NULL; diff --git a/services/outside_network.h b/services/outside_network.h index 8f31d43cc..4c5b96f83 100644 --- a/services/outside_network.h +++ b/services/outside_network.h @@ -632,6 +632,7 @@ void pending_delete(struct outside_network* outnet, struct pending* p); * @param want_dnssec: signatures are needed, without EDNS the answer is * likely to be useless. * @param nocaps: ignore use_caps_for_id and use unperturbed qname. + * @param check_ratelimit: if set, will check ratelimit before sending out. * @param tcp_upstream: use TCP for upstream queries. * @param ssl_upstream: use SSL for upstream queries. * @param tls_auth_name: when ssl_upstream is true, use this name to check @@ -648,16 +649,18 @@ void pending_delete(struct outside_network* outnet, struct pending* p); * @param callback_arg: user argument to callback function. * @param buff: scratch buffer to create query contents in. Empty on exit. * @param env: the module environment. + * @param was_ratelimited: it will signal back if the query failed to pass the + * ratelimit check. * @return 0 on error, or pointer to serviced query that is used to answer * this serviced query may be shared with other callbacks as well. */ struct serviced_query* outnet_serviced_query(struct outside_network* outnet, struct query_info* qinfo, uint16_t flags, 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, struct module_qstate* qstate, + int nocaps, int check_ratelimit, int tcp_upstream, int ssl_upstream, + char* tls_auth_name, struct sockaddr_storage* addr, socklen_t addrlen, + uint8_t* zone, size_t zonelen, struct module_qstate* qstate, comm_point_callback_type* callback, void* callback_arg, - struct sldns_buffer* buff, struct module_env* env); + struct sldns_buffer* buff, struct module_env* env, int* was_ratelimited); /** * Remove service query callback. diff --git a/smallapp/worker_cb.c b/smallapp/worker_cb.c index 78e773938..c68981735 100644 --- a/smallapp/worker_cb.c +++ b/smallapp/worker_cb.c @@ -97,10 +97,12 @@ void worker_sighandler(int ATTR_UNUSED(sig), void* ATTR_UNUSED(arg)) struct outbound_entry* worker_send_query( struct query_info* ATTR_UNUSED(qinfo), uint16_t ATTR_UNUSED(flags), int ATTR_UNUSED(dnssec), int ATTR_UNUSED(want_dnssec), - int ATTR_UNUSED(nocaps), struct sockaddr_storage* ATTR_UNUSED(addr), + int ATTR_UNUSED(nocaps), int ATTR_UNUSED(check_ratelimit), + struct sockaddr_storage* ATTR_UNUSED(addr), socklen_t ATTR_UNUSED(addrlen), uint8_t* ATTR_UNUSED(zone), size_t ATTR_UNUSED(zonelen), int ATTR_UNUSED(tcp_upstream), int ATTR_UNUSED(ssl_upstream), - char* ATTR_UNUSED(tls_auth_name), struct module_qstate* ATTR_UNUSED(q)) + char* ATTR_UNUSED(tls_auth_name), struct module_qstate* ATTR_UNUSED(q), + int* ATTR_UNUSED(was_ratelimited)) { log_assert(0); return 0; @@ -129,10 +131,12 @@ worker_alloc_cleanup(void* ATTR_UNUSED(arg)) struct outbound_entry* libworker_send_query( struct query_info* ATTR_UNUSED(qinfo), uint16_t ATTR_UNUSED(flags), int ATTR_UNUSED(dnssec), int ATTR_UNUSED(want_dnssec), - int ATTR_UNUSED(nocaps), struct sockaddr_storage* ATTR_UNUSED(addr), + int ATTR_UNUSED(nocaps), int ATTR_UNUSED(check_ratelimit), + struct sockaddr_storage* ATTR_UNUSED(addr), socklen_t ATTR_UNUSED(addrlen), uint8_t* ATTR_UNUSED(zone), size_t ATTR_UNUSED(zonelen), int ATTR_UNUSED(tcp_upstream), int ATTR_UNUSED(ssl_upstream), - char* ATTR_UNUSED(tls_auth_name), struct module_qstate* ATTR_UNUSED(q)) + char* ATTR_UNUSED(tls_auth_name), struct module_qstate* ATTR_UNUSED(q), + int* ATTR_UNUSED(was_ratelimited)) { log_assert(0); return 0; diff --git a/testcode/fake_event.c b/testcode/fake_event.c index 741c035f8..be06a4721 100644 --- a/testcode/fake_event.c +++ b/testcode/fake_event.c @@ -1187,12 +1187,13 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, struct serviced_query* outnet_serviced_query(struct outside_network* outnet, struct query_info* qinfo, uint16_t flags, int dnssec, int ATTR_UNUSED(want_dnssec), int ATTR_UNUSED(nocaps), + int ATTR_UNUSED(check_ratelimit), int ATTR_UNUSED(tcp_upstream), int ATTR_UNUSED(ssl_upstream), char* ATTR_UNUSED(tls_auth_name), struct sockaddr_storage* addr, socklen_t addrlen, uint8_t* zone, size_t zonelen, struct module_qstate* qstate, comm_point_callback_type* callback, void* callback_arg, sldns_buffer* ATTR_UNUSED(buff), - struct module_env* env) + struct module_env* env, int* ATTR_UNUSED(was_ratelimited)) { struct replay_runtime* runtime = (struct replay_runtime*)outnet->base; struct fake_pending* pend = (struct fake_pending*)calloc(1, diff --git a/util/fptr_wlist.c b/util/fptr_wlist.c index 83b32a004..05a22d402 100644 --- a/util/fptr_wlist.c +++ b/util/fptr_wlist.c @@ -335,9 +335,10 @@ fptr_whitelist_hash_markdelfunc(lruhash_markdelfunc_type fptr) int fptr_whitelist_modenv_send_query(struct outbound_entry* (*fptr)( struct query_info* qinfo, uint16_t flags, int dnssec, int want_dnssec, - int nocaps, struct sockaddr_storage* addr, socklen_t addrlen, - uint8_t* zone, size_t zonelen, int tcp_upstream, int ssl_upstream, char* tls_auth_name, - struct module_qstate* q)) + int nocaps, int check_ratelimit, struct sockaddr_storage* addr, + socklen_t addrlen, uint8_t* zone, size_t zonelen, int tcp_upstream, + int ssl_upstream, char* tls_auth_name, struct module_qstate* q, + int* was_ratelimited)) { if(fptr == &worker_send_query) return 1; else if(fptr == &libworker_send_query) return 1; diff --git a/util/fptr_wlist.h b/util/fptr_wlist.h index a54709925..a0d986755 100644 --- a/util/fptr_wlist.h +++ b/util/fptr_wlist.h @@ -211,9 +211,10 @@ int fptr_whitelist_hash_markdelfunc(lruhash_markdelfunc_type fptr); */ int fptr_whitelist_modenv_send_query(struct outbound_entry* (*fptr)( struct query_info* qinfo, uint16_t flags, int dnssec, int want_dnssec, - int nocaps, struct sockaddr_storage* addr, socklen_t addrlen, - uint8_t* zone, size_t zonelen, int tcp_upstream, int ssl_upstream, char* tls_auth_name, - struct module_qstate* q)); + int nocaps, int check_ratelimit, struct sockaddr_storage* addr, + socklen_t addrlen, uint8_t* zone, size_t zonelen, int tcp_upstream, + int ssl_upstream, char* tls_auth_name, struct module_qstate* q, + int* was_ratelimited)); /** * Check function pointer whitelist for module_env detach_subs callback values. diff --git a/util/module.h b/util/module.h index c6b7e573c..7a5480033 100644 --- a/util/module.h +++ b/util/module.h @@ -350,6 +350,7 @@ struct module_env { * EDNS, the answer is likely to be useless for this domain. * @param nocaps: do not use caps_for_id, use the qname as given. * (ignored if caps_for_id is disabled). + * @param check_ratelimit: if set, will check ratelimit before sending out. * @param addr: where to. * @param addrlen: length of addr. * @param zone: delegation point name. @@ -359,6 +360,8 @@ struct module_env { * @param tls_auth_name: if ssl_upstream, use this name with TLS * authentication. * @param q: which query state to reactivate upon return. + * @param was_ratelimited: it will signal back if the query failed to pass the + * ratelimit check. * @return: false on failure (memory or socket related). no query was * sent. Or returns an outbound entry with qsent and qstate set. * This outbound_entry will be used on later module invocations @@ -366,9 +369,10 @@ struct module_env { */ struct outbound_entry* (*send_query)(struct query_info* qinfo, uint16_t flags, int dnssec, int want_dnssec, int nocaps, + int check_ratelimit, struct sockaddr_storage* addr, socklen_t addrlen, uint8_t* zone, size_t zonelen, int tcp_upstream, int ssl_upstream, - char* tls_auth_name, struct module_qstate* q); + char* tls_auth_name, struct module_qstate* q, int* was_ratelimited); /** * Detach-subqueries. From 308633572449a07422f019ce110fffce2aaf91f7 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Sun, 30 Jan 2022 00:23:22 +0100 Subject: [PATCH 488/553] - Introduce ratelimit-backoff and ip-ratelimit-backoff options for more aggressive rate limiting. --- daemon/remote.c | 8 +- daemon/worker.c | 3 +- doc/unbound.conf.5.in | 9 + services/cache/infra.c | 30 +- services/cache/infra.h | 14 +- services/outside_network.c | 4 +- util/config_file.c | 8 +- util/config_file.h | 9 + util/configlexer.c | 3573 +++++++++++++-------------- util/configlexer.lex | 2 + util/configparser.c | 4707 ++++++++++++++++-------------------- util/configparser.h | 477 ++-- util/configparser.y | 24 +- 13 files changed, 4153 insertions(+), 4715 deletions(-) diff --git a/daemon/remote.c b/daemon/remote.c index 183f6d4dc..ea064e97f 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -2865,6 +2865,8 @@ struct ratelimit_list_arg { int all; /** current time */ time_t now; + /** if backoff is enabled */ + int backoff; }; #define ip_ratelimit_list_arg ratelimit_list_arg @@ -2878,7 +2880,7 @@ rate_list(struct lruhash_entry* e, void* arg) struct rate_data* d = (struct rate_data*)e->data; char buf[257]; int lim = infra_find_ratelimit(a->infra, k->name, k->namelen); - int max = infra_rate_max(d, a->now); + int max = infra_rate_max(d, a->now, a->backoff); if(a->all == 0) { if(max < lim) return; @@ -2896,7 +2898,7 @@ ip_rate_list(struct lruhash_entry* e, void* arg) struct ip_rate_key* k = (struct ip_rate_key*)e->key; struct ip_rate_data* d = (struct ip_rate_data*)e->data; int lim = infra_ip_ratelimit; - int max = infra_rate_max(d, a->now); + int max = infra_rate_max(d, a->now, a->backoff); if(a->all == 0) { if(max < lim) return; @@ -2914,6 +2916,7 @@ do_ratelimit_list(RES* ssl, struct worker* worker, char* arg) a.infra = worker->env.infra_cache; a.now = *worker->env.now; a.ssl = ssl; + a.backoff = worker->env.cfg->ratelimit_backoff; arg = skipwhite(arg); if(strcmp(arg, "+a") == 0) a.all = 1; @@ -2932,6 +2935,7 @@ do_ip_ratelimit_list(RES* ssl, struct worker* worker, char* arg) a.infra = worker->env.infra_cache; a.now = *worker->env.now; a.ssl = ssl; + a.backoff = worker->env.cfg->ip_ratelimit_backoff; arg = skipwhite(arg); if(strcmp(arg, "+a") == 0) a.all = 1; diff --git a/daemon/worker.c b/daemon/worker.c index a6b161f7a..862affb24 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -1167,7 +1167,8 @@ worker_handle_request(struct comm_point* c, void* arg, int error, /* check if this query should be dropped based on source ip rate limiting */ if(!infra_ip_ratelimit_inc(worker->env.infra_cache, repinfo, - *worker->env.now, c->buffer)) { + *worker->env.now, + worker->env.cfg->ip_ratelimit_backoff, c->buffer)) { /* See if we are passed through with slip factor */ if(worker->env.cfg->ip_ratelimit_factor != 0 && ub_random_max(worker->env.rnd, diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index a4d7ca3bc..9af909cab 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -1671,6 +1671,15 @@ This can make ordinary queries complete (if repeatedly queried for), and enter the cache, whilst also mitigating the traffic flow by the factor given. .TP 5 +.B ratelimit\-backoff: \fI +If enabled, the ratelimit is treated as a hard failure instead of the default +maximum allowed constant rate. When the limit is reached, traffic is +ratelimited and demand continues to be kept track of for a 2 second rate +window. No traffic is allowed, except for ratelimit\-factor, until demand +decreases below the configured ratelimit for a 2 second rate window. Useful to +set ratelimit to a suspicious rate to aggressively limit unusually high +traffic. Default is off. +.TP 5 .B ratelimit\-for\-domain: \fI Override the global ratelimit for an exact match domain name with the listed number. You can give this for any number of names. For example, for diff --git a/services/cache/infra.c b/services/cache/infra.c index 01e1a7cdd..252e1e288 100644 --- a/services/cache/infra.c +++ b/services/cache/infra.c @@ -934,20 +934,27 @@ static int* infra_rate_get_second(void* data, time_t t) return infra_rate_find_second_or_none(data, t, 0); } -int infra_rate_max(void* data, time_t now) +int infra_rate_max(void* data, time_t now, int backoff) { struct rate_data* d = (struct rate_data*)data; int i, max = 0; for(i=0; itimestamp[i]) { - return d->qps[i]; + if(backoff) { + if(now-d->timestamp[i] <= RATE_WINDOW && + d->qps[i] > max) { + max = d->qps[i]; + } + } else { + if(now == d->timestamp[i]) { + return d->qps[i]; + } } } return max; } int infra_ratelimit_inc(struct infra_cache* infra, uint8_t* name, - size_t namelen, time_t timenow, struct query_info* qinfo, + size_t namelen, time_t timenow, int backoff, struct query_info* qinfo, struct comm_reply* replylist) { int lim, max; @@ -964,10 +971,10 @@ int infra_ratelimit_inc(struct infra_cache* infra, uint8_t* name, /* find or insert ratedata */ entry = infra_find_ratedata(infra, name, namelen, 1); if(entry) { - int premax = infra_rate_max(entry->data, timenow); + int premax = infra_rate_max(entry->data, timenow, backoff); int* cur = infra_rate_give_second(entry->data, timenow); (*cur)++; - max = infra_rate_max(entry->data, timenow); + max = infra_rate_max(entry->data, timenow, backoff); lock_rw_unlock(&entry->lock); if(premax <= lim && max > lim) { @@ -1014,7 +1021,7 @@ void infra_ratelimit_dec(struct infra_cache* infra, uint8_t* name, } int infra_ratelimit_exceeded(struct infra_cache* infra, uint8_t* name, - size_t namelen, time_t timenow) + size_t namelen, time_t timenow, int backoff) { struct lruhash_entry* entry; int lim, max; @@ -1030,7 +1037,7 @@ int infra_ratelimit_exceeded(struct infra_cache* infra, uint8_t* name, entry = infra_find_ratedata(infra, name, namelen, 0); if(!entry) return 0; /* not cached */ - max = infra_rate_max(entry->data, timenow); + max = infra_rate_max(entry->data, timenow, backoff); lock_rw_unlock(&entry->lock); return (max >= lim); @@ -1047,7 +1054,8 @@ infra_get_mem(struct infra_cache* infra) } int infra_ip_ratelimit_inc(struct infra_cache* infra, - struct comm_reply* repinfo, time_t timenow, struct sldns_buffer* buffer) + struct comm_reply* repinfo, time_t timenow, int backoff, + struct sldns_buffer* buffer) { int max; struct lruhash_entry* entry; @@ -1059,10 +1067,10 @@ int infra_ip_ratelimit_inc(struct infra_cache* infra, /* find or insert ratedata */ entry = infra_find_ip_ratedata(infra, repinfo, 1); if(entry) { - int premax = infra_rate_max(entry->data, timenow); + int premax = infra_rate_max(entry->data, timenow, backoff); int* cur = infra_rate_give_second(entry->data, timenow); (*cur)++; - max = infra_rate_max(entry->data, timenow); + max = infra_rate_max(entry->data, timenow, backoff); lock_rw_unlock(&entry->lock); if(premax < infra_ip_ratelimit && max >= infra_ip_ratelimit) { diff --git a/services/cache/infra.h b/services/cache/infra.h index a10e70f7d..6a2371aca 100644 --- a/services/cache/infra.h +++ b/services/cache/infra.h @@ -368,6 +368,7 @@ long long infra_get_host_rto(struct infra_cache* infra, * @param name: zone name * @param namelen: zone name length * @param timenow: what time it is now. + * @param backoff: if backoff is enabled. * @param qinfo: for logging, query name. * @param replylist: for logging, querier's address (if any). * @return 1 if it could be incremented. 0 if the increment overshot the @@ -375,7 +376,7 @@ long long infra_get_host_rto(struct infra_cache* infra, * Failures like alloc failures are not returned (probably as 1). */ int infra_ratelimit_inc(struct infra_cache* infra, uint8_t* name, - size_t namelen, time_t timenow, struct query_info* qinfo, + size_t namelen, time_t timenow, int backoff, struct query_info* qinfo, struct comm_reply* replylist); /** @@ -398,13 +399,15 @@ void infra_ratelimit_dec(struct infra_cache* infra, uint8_t* name, * @param name: zone name * @param namelen: zone name length * @param timenow: what time it is now. + * @param backoff: if backoff is enabled. * @return true if exceeded. */ int infra_ratelimit_exceeded(struct infra_cache* infra, uint8_t* name, - size_t namelen, time_t timenow); + size_t namelen, time_t timenow, int backoff); -/** find the maximum rate stored. 0 if no information. */ -int infra_rate_max(void* data, time_t now); +/** find the maximum rate stored. 0 if no information. + * When backoff is enabled look for the maximum in the whole RATE_WINDOW. */ +int infra_rate_max(void* data, time_t now, int backoff); /** find the ratelimit in qps for a domain. 0 if no limit for domain. */ int infra_find_ratelimit(struct infra_cache* infra, uint8_t* name, @@ -415,11 +418,12 @@ int infra_find_ratelimit(struct infra_cache* infra, uint8_t* name, * @param infra: infra cache * @param repinfo: information about client * @param timenow: what time it is now. + * @param backoff: if backoff is enabled. * @param buffer: with query for logging. * @return 1 if it could be incremented. 0 if the increment overshot the * ratelimit and the query should be dropped. */ int infra_ip_ratelimit_inc(struct infra_cache* infra, - struct comm_reply* repinfo, time_t timenow, + struct comm_reply* repinfo, time_t timenow, int backoff, struct sldns_buffer* buffer); /** diff --git a/services/outside_network.c b/services/outside_network.c index d0a53fe4b..e790ee622 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -3391,8 +3391,8 @@ outnet_serviced_query(struct outside_network* outnet, if(check_ratelimit) { timenow = *env->now; if(!infra_ratelimit_inc(env->infra_cache, zone, - zonelen, timenow, &qstate->qinfo, - qstate->reply)) { + zonelen, timenow, env->cfg->ratelimit_backoff, + &qstate->qinfo, qstate->reply)) { /* Can we pass through with slip factor? */ if(env->cfg->ratelimit_factor == 0 || ub_random_max(env->rnd, diff --git a/util/config_file.c b/util/config_file.c index 6bbd85ca1..6fa1d114f 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -328,9 +328,11 @@ config_create(void) cfg->ratelimit_size = 4*1024*1024; cfg->ratelimit_for_domain = NULL; cfg->ratelimit_below_domain = NULL; - cfg->outbound_msg_retry = 5; cfg->ip_ratelimit_factor = 10; cfg->ratelimit_factor = 10; + cfg->ip_ratelimit_backoff = 0; + cfg->ratelimit_backoff = 0; + cfg->outbound_msg_retry = 5; cfg->qname_minimisation = 1; cfg->qname_minimisation_strict = 0; cfg->shm_enable = 0; @@ -759,6 +761,8 @@ int config_set_option(struct config_file* cfg, const char* opt, else S_POW2("ratelimit-slabs:", ratelimit_slabs) else S_NUMBER_OR_ZERO("ip-ratelimit-factor:", ip_ratelimit_factor) else S_NUMBER_OR_ZERO("ratelimit-factor:", ratelimit_factor) + else S_YNO("ip-ratelimit-backoff:", ip_ratelimit_backoff) + else S_YNO("ratelimit-backoff:", ratelimit_backoff) else S_NUMBER_NONZERO("outbound-msg-retry:", outbound_msg_retry) else S_SIZET_NONZERO("fast-server-num:", fast_server_num) else S_NUMBER_OR_ZERO("fast-server-permil:", fast_server_permil) @@ -1211,6 +1215,8 @@ config_get_option(struct config_file* cfg, const char* opt, else O_LS2(opt, "ratelimit-below-domain", ratelimit_below_domain) else O_DEC(opt, "ip-ratelimit-factor", ip_ratelimit_factor) else O_DEC(opt, "ratelimit-factor", ratelimit_factor) + else O_YNO(opt, "ip-ratelimit-backoff", ip_ratelimit_backoff) + else O_YNO(opt, "ratelimit-backoff", ratelimit_backoff) else O_UNS(opt, "outbound-msg-retry", outbound_msg_retry) else O_DEC(opt, "fast-server-num", fast_server_num) else O_DEC(opt, "fast-server-permil", fast_server_permil) diff --git a/util/config_file.h b/util/config_file.h index cd1b3c99f..c7c9a0a48 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -565,6 +565,10 @@ struct config_file { size_t ip_ratelimit_size; /** ip_ratelimit factor, 0 blocks all, 10 allows 1/10 of traffic */ int ip_ratelimit_factor; + /** ratelimit backoff, when on, if the limit is reached it is + * considered an attack and it backs off until 'demand' decreases over + * the RATE_WINDOW. */ + int ip_ratelimit_backoff; /** ratelimit for domains. 0 is off, otherwise qps (unless overridden) */ int ratelimit; @@ -578,6 +582,11 @@ struct config_file { struct config_str2list* ratelimit_below_domain; /** ratelimit factor, 0 blocks all, 10 allows 1/10 of traffic */ int ratelimit_factor; + /** ratelimit backoff, when on, if the limit is reached it is + * considered an attack and it backs off until 'demand' decreases over + * the RATE_WINDOW. */ + int ratelimit_backoff; + /** number of retries on outgoing queries */ int outbound_msg_retry; /** minimise outgoing QNAME and hide original QTYPE if possible */ diff --git a/util/configlexer.c b/util/configlexer.c index 2763dd3ac..f95f2fc7e 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -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 356 -#define YY_END_OF_BUFFER 357 +#define YY_NUM_RULES 358 +#define YY_END_OF_BUFFER 359 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -363,398 +363,399 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[3543] = +static const flex_int16_t yy_accept[3558] = { 0, - 1, 1, 330, 330, 334, 334, 338, 338, 342, 342, - 1, 1, 346, 346, 350, 350, 357, 354, 1, 328, - 328, 355, 2, 355, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 330, 331, 331, 332, - 355, 334, 335, 335, 336, 355, 341, 338, 339, 339, - 340, 355, 342, 343, 343, 344, 355, 353, 329, 2, - 333, 355, 353, 349, 346, 347, 347, 348, 355, 350, - 351, 351, 352, 355, 354, 0, 1, 2, 2, 2, - 2, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 1, 1, 332, 332, 336, 336, 340, 340, 344, 344, + 1, 1, 348, 348, 352, 352, 359, 356, 1, 330, + 330, 357, 2, 357, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 332, 333, 333, 334, + 357, 336, 337, 337, 338, 357, 343, 340, 341, 341, + 342, 357, 344, 345, 345, 346, 357, 355, 331, 2, + 335, 357, 355, 351, 348, 349, 349, 350, 357, 352, + 353, 353, 354, 357, 356, 0, 1, 2, 2, 2, + 2, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 330, - 0, 334, 0, 341, 0, 338, 342, 0, 353, 0, - 2, 2, 353, 349, 0, 346, 350, 0, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 332, + 0, 336, 0, 343, 0, 340, 344, 0, 355, 0, + 2, 2, 355, 351, 0, 348, 352, 0, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 353, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 355, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 130, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 140, 354, 354, 354, 354, 354, 354, 354, 353, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 130, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 140, 356, 356, 356, 356, 356, 356, 356, 355, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 112, 354, - 327, 354, 354, 354, 354, 354, 354, 354, 354, 8, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 112, 356, + 329, 356, 356, 356, 356, 356, 356, 356, 356, 8, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 131, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 145, 354, 354, 353, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 131, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 145, 356, 356, 355, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 320, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 322, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 353, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 67, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 251, 354, 14, - 15, 354, 19, 18, 354, 354, 235, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 355, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 67, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 251, 356, 14, + 15, 356, 19, 18, 356, 356, 235, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 138, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 233, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 3, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 138, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 233, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 3, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 353, 354, 354, - 354, 354, 354, 354, 354, 314, 354, 354, 313, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 337, 354, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 355, 356, 356, + 356, 356, 356, 356, 356, 316, 356, 356, 315, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 339, 356, - 354, 354, 354, 354, 354, 354, 354, 66, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 70, 354, 283, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 321, 322, 354, 354, - 354, 354, 354, 354, 354, 354, 71, 354, 354, 139, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 134, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 222, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 21, 354, + 356, 356, 356, 356, 356, 356, 356, 66, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 70, 356, 285, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 323, 324, 356, 356, + 356, 356, 356, 356, 356, 356, 71, 356, 356, 139, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 134, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 222, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 21, 356, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 165, 354, 354, 354, 354, 354, 353, 337, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 110, - 354, 354, 354, 354, 354, 354, 354, 291, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 191, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 165, 356, 356, 356, 356, 356, 355, 339, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 110, + 356, 356, 356, 356, 356, 356, 356, 293, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 191, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 164, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 109, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 35, 354, 354, 354, 354, 354, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 164, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 109, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 35, 356, 356, 356, 356, 356, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 36, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 68, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 137, 354, 354, 354, 353, 354, - 354, 354, 354, 354, 129, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 69, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 255, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 192, 354, 354, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 36, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 68, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 137, 356, 356, 356, 355, 356, + 356, 356, 356, 356, 129, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 69, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 255, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 192, 356, 356, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 57, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 273, 354, 354, 354, 354, 354, 354, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 57, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 273, 356, 356, 356, 356, 356, 356, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 61, 354, 62, 354, 354, 354, - 354, 354, 113, 354, 114, 354, 354, 354, 354, 354, - 111, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 7, 354, 354, 354, 354, 353, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 244, 354, 354, - 354, 354, 168, 354, 354, 354, 354, 354, 354, 354, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 61, 356, 62, 356, 356, 356, + 356, 356, 113, 356, 114, 356, 356, 356, 356, 356, + 111, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 7, 356, 356, 356, 356, 355, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 244, 356, 356, + 356, 356, 168, 356, 356, 356, 356, 356, 356, 356, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 256, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 48, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 58, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 214, 354, 213, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 256, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 48, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 58, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 214, 356, 213, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 354, 354, 354, 354, 354, 354, 354, 16, 17, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 72, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 221, 354, 354, 354, - 354, 354, 354, 116, 354, 115, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 205, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 146, 354, 354, 354, 353, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 104, 354, 354, 354, + 356, 356, 356, 356, 356, 356, 356, 16, 17, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 72, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 221, 356, 356, 356, + 356, 356, 356, 116, 356, 115, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 205, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 146, 356, 356, 356, 355, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 104, 356, 356, 356, - 354, 354, 354, 354, 354, 354, 92, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 234, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 97, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 65, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 208, 209, 354, 354, 354, + 356, 356, 356, 356, 356, 356, 92, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 234, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 97, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 65, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 208, 209, 356, 356, 356, - 285, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 6, 354, 354, 354, 354, 354, - 354, 354, 304, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 289, 354, 354, 354, 354, 354, 354, 354, 315, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 45, 354, 354, 354, 354, 47, 354, - 354, 354, 93, 354, 354, 354, 354, 354, 55, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 287, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 6, 356, 356, 356, 356, 356, + 356, 356, 306, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 291, 356, 356, 356, 356, 356, 356, 356, 317, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 45, 356, 356, 356, 356, 47, + 356, 356, 356, 93, 356, 356, 356, 356, 356, 55, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 353, 354, 201, 354, 354, 354, 141, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 226, 354, 202, - 354, 354, 354, 241, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 56, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 143, 122, 354, 123, 354, - 354, 354, 354, 121, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 161, 354, 354, 53, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 272, 354, 354, 354, 354, 354, + 356, 355, 356, 201, 356, 356, 356, 141, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 226, 356, + 202, 356, 356, 356, 241, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 56, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 143, 122, 356, 123, + 356, 356, 356, 356, 121, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 161, 356, 356, 53, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 272, 356, 356, 356, 356, - 354, 354, 354, 354, 203, 354, 354, 354, 354, 354, - 206, 354, 212, 354, 354, 354, 354, 354, 354, 240, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 108, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 135, 354, 354, 354, - 354, 354, 354, 354, 354, 63, 354, 354, 354, 29, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 20, 354, 354, 354, 354, 354, 354, 30, - 39, 354, 173, 354, 354, 354, 354, 354, 354, 354, + 356, 356, 356, 356, 356, 203, 356, 356, 356, 356, + 356, 206, 356, 212, 356, 356, 356, 356, 356, 356, + 240, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 108, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 135, 356, + 356, 356, 356, 356, 356, 356, 356, 63, 356, 356, + 356, 29, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 20, 356, 356, 356, 356, 356, + 356, 30, 39, 356, 173, 356, 356, 356, 356, 356, - 354, 354, 354, 354, 354, 354, 354, 199, 354, 354, - 353, 354, 354, 354, 354, 354, 354, 80, 82, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 293, 354, 354, 354, 354, 252, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 124, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 160, 354, 49, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 308, 354, 354, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 199, + 356, 356, 355, 356, 356, 356, 356, 356, 356, 80, + 82, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 295, 356, 356, 356, 356, 252, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 124, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 160, 356, 49, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 167, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 302, 354, 354, 354, 232, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 318, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 185, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 117, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 180, 354, 193, 354, 354, 354, 354, 354, 354, + 310, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 167, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 304, 356, 356, 356, 232, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 320, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 185, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 117, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 180, 356, 193, 356, 356, - 354, 353, 354, 149, 354, 354, 354, 354, 354, 103, - 354, 354, 354, 354, 224, 354, 354, 354, 354, 354, - 354, 242, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 264, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 142, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 184, 354, 354, - 354, 354, 354, 354, 83, 354, 84, 354, 354, 354, - 354, 354, 64, 311, 354, 354, 354, 354, 354, 91, - 194, 354, 215, 354, 245, 354, 354, 207, 286, 354, + 356, 356, 356, 356, 356, 355, 356, 149, 356, 356, + 356, 356, 356, 103, 356, 356, 356, 356, 224, 356, + 356, 356, 356, 356, 356, 242, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 264, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 142, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 184, 356, 356, 356, 356, 356, 356, 83, 356, + 84, 356, 356, 356, 356, 356, 356, 64, 313, 356, + 356, 356, 356, 356, 91, 194, 356, 215, 356, 245, - 354, 354, 354, 354, 354, 76, 354, 196, 354, 354, - 354, 354, 354, 354, 9, 354, 354, 354, 354, 354, - 107, 354, 354, 354, 354, 277, 354, 354, 354, 354, - 223, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 353, 354, 354, 354, 354, 183, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 356, 356, 207, 288, 356, 356, 356, 356, 356, 356, + 76, 356, 196, 356, 356, 356, 356, 356, 356, 9, + 356, 356, 356, 356, 356, 107, 356, 356, 356, 356, + 356, 277, 356, 356, 356, 356, 223, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 355, 356, 356, 356, 356, 183, 356, 356, 356, 356, - 169, 354, 292, 354, 354, 354, 354, 354, 263, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 236, 354, 354, 354, 354, 354, 284, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 166, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 312, 354, 195, 354, 354, 354, 354, 354, 354, 354, - 354, 75, 77, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 106, 354, 354, 354, 354, 275, 354, - 354, 354, 354, 288, 354, 354, 354, 354, 354, 354, + 356, 356, 356, 356, 356, 356, 169, 356, 294, 356, + 356, 356, 356, 356, 263, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 236, 356, 356, 356, + 356, 356, 286, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 166, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 314, 356, 195, + 356, 356, 356, 356, 356, 356, 356, 356, 75, 77, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 106, 356, 356, 356, 356, 356, 275, 356, 356, 356, - 354, 354, 354, 354, 354, 354, 354, 228, 37, 31, - 33, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 38, 354, 32, 34, 354, 354, 354, - 354, 354, 354, 354, 354, 102, 354, 179, 354, 354, - 354, 354, 354, 354, 354, 353, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 230, 227, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 74, 354, 354, - 354, 144, 354, 125, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 162, 50, 354, 354, 354, 345, + 356, 290, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 228, 37, 31, 33, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 38, 356, 32, 34, 356, 356, 356, 356, 356, + 356, 356, 356, 102, 356, 179, 356, 356, 356, 356, + 356, 356, 356, 355, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 230, 227, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 74, 356, 356, 356, 144, + 356, 125, 356, 356, 356, 356, 356, 356, 356, 356, - 13, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 306, 354, 309, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 12, 354, 354, 22, - 354, 354, 354, 354, 354, 281, 354, 354, 354, 354, - 290, 354, 354, 354, 354, 78, 354, 238, 354, 354, - 354, 354, 354, 229, 354, 354, 73, 354, 354, 354, - 354, 354, 354, 23, 354, 354, 46, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 178, - 177, 354, 354, 345, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 231, 225, 354, 243, 354, 354, 294, + 356, 356, 162, 50, 356, 356, 356, 347, 13, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 308, 356, 311, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 12, 356, 356, 22, 356, + 356, 356, 356, 356, 356, 281, 356, 356, 356, 356, + 292, 356, 356, 356, 356, 78, 356, 238, 356, 356, + 356, 356, 356, 229, 356, 356, 73, 356, 356, 356, + 356, 356, 356, 23, 356, 356, 46, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 178, + 177, 356, 356, 347, 356, 356, 356, 356, 356, 356, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 85, 354, 354, 354, 354, 276, - 354, 354, 354, 354, 211, 354, 354, 354, 354, 354, - 237, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 316, 317, 175, 354, 354, 354, 79, - 354, 354, 354, 354, 186, 354, 354, 354, 118, 120, - 119, 354, 354, 354, 25, 354, 354, 170, 354, 172, - 354, 216, 354, 354, 354, 354, 176, 354, 354, 354, + 356, 356, 356, 231, 225, 356, 243, 356, 356, 296, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 85, 356, 356, 356, 356, 356, + 276, 356, 356, 356, 356, 211, 356, 356, 356, 356, + 356, 237, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 283, 356, 356, 356, 318, 319, 175, 356, 356, + 356, 79, 356, 356, 356, 356, 186, 356, 356, 356, + 118, 120, 119, 356, 356, 356, 25, 356, 356, 170, - 354, 246, 354, 354, 354, 354, 354, 354, 354, 151, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 254, 354, 354, 354, 354, 354, 354, 354, - 325, 354, 27, 354, 287, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 89, 217, 354, 354, 274, 354, 310, 354, 210, - 354, 354, 354, 354, 354, 282, 59, 354, 354, 354, - 354, 354, 354, 4, 354, 354, 354, 354, 133, 354, - 150, 354, 354, 354, 190, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 356, 172, 356, 216, 356, 356, 356, 356, 176, 356, + 356, 356, 356, 246, 356, 356, 356, 356, 356, 356, + 356, 151, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 254, 356, 356, 356, 356, 356, + 356, 356, 327, 356, 27, 356, 289, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 89, 217, 356, 356, 356, 274, 356, + 312, 356, 210, 356, 356, 356, 356, 356, 284, 59, + 356, 356, 356, 356, 356, 356, 4, 356, 356, 356, + 356, 133, 356, 150, 356, 356, 356, 190, 356, 356, - 354, 354, 354, 249, 40, 41, 354, 354, 354, 354, - 354, 354, 354, 295, 354, 354, 354, 354, 354, 354, - 354, 262, 354, 354, 354, 354, 354, 354, 354, 354, - 220, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 88, 354, 60, 280, 354, - 250, 354, 354, 354, 354, 354, 11, 354, 354, 354, - 354, 354, 354, 354, 354, 132, 354, 354, 354, 354, - 354, 218, 94, 354, 354, 43, 354, 354, 354, 354, - 354, 354, 354, 354, 182, 354, 354, 354, 354, 354, - 354, 354, 153, 354, 354, 354, 354, 253, 354, 354, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 249, 40, 41, 356, + 356, 356, 356, 356, 356, 356, 297, 356, 356, 356, + 356, 356, 356, 356, 262, 356, 356, 356, 356, 356, + 356, 356, 356, 220, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 88, 356, + 60, 356, 280, 356, 250, 356, 356, 356, 356, 356, + 11, 356, 356, 356, 356, 356, 356, 356, 356, 132, + 356, 356, 356, 356, 356, 218, 94, 356, 356, 43, + 356, 356, 356, 356, 356, 356, 356, 356, 182, 356, - 354, 354, 354, 261, 354, 354, 354, 354, 147, 354, - 354, 354, 126, 128, 127, 354, 354, 354, 96, 100, - 95, 163, 354, 354, 354, 354, 86, 354, 354, 354, - 354, 354, 354, 10, 354, 354, 354, 354, 354, 278, - 319, 354, 354, 354, 354, 354, 354, 324, 42, 354, - 354, 354, 354, 354, 181, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 101, 99, 354, 54, 354, 354, 87, 307, 354, 354, - 354, 354, 24, 354, 354, 354, 354, 354, 204, 354, + 356, 356, 356, 356, 356, 356, 153, 356, 356, 356, + 356, 253, 356, 356, 356, 356, 356, 261, 356, 356, + 356, 356, 147, 356, 356, 356, 126, 128, 127, 356, + 356, 356, 96, 100, 95, 163, 356, 356, 356, 356, + 86, 282, 356, 356, 356, 356, 356, 356, 10, 356, + 356, 356, 356, 356, 278, 321, 356, 356, 356, 356, + 356, 356, 326, 42, 356, 356, 356, 356, 356, 181, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 101, 99, 356, 54, 356, - 354, 354, 354, 354, 354, 219, 354, 354, 354, 354, - 354, 354, 354, 354, 200, 354, 354, 171, 81, 354, - 354, 354, 354, 354, 296, 354, 354, 354, 354, 354, - 354, 354, 258, 354, 354, 257, 148, 354, 354, 98, - 51, 354, 154, 155, 158, 159, 156, 157, 90, 305, - 354, 354, 279, 136, 354, 354, 354, 26, 354, 174, - 354, 354, 354, 354, 198, 354, 248, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 188, 187, 44, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 356, 87, 309, 356, 356, 356, 356, 24, 356, 356, + 356, 356, 356, 204, 356, 356, 356, 356, 356, 356, + 219, 356, 356, 356, 356, 356, 356, 356, 356, 200, + 356, 356, 171, 81, 356, 356, 356, 356, 356, 298, + 356, 356, 356, 356, 356, 356, 356, 258, 356, 356, + 257, 148, 356, 356, 98, 51, 356, 154, 155, 158, + 159, 156, 157, 90, 307, 356, 356, 279, 136, 356, + 356, 356, 26, 356, 174, 356, 356, 356, 356, 198, + 356, 248, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 303, 354, 354, 354, 354, 105, 354, 247, - 354, 271, 300, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 326, 354, 52, 5, 354, 354, - 239, 354, 354, 301, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 259, 28, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 260, 354, 354, - 354, 152, 354, 354, 354, 354, 354, 354, 354, 354, - 189, 354, 197, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 297, 354, 354, 354, 354, 354, 354, 354, + 356, 356, 188, 187, 44, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 305, 356, 356, + 356, 356, 105, 356, 247, 356, 271, 302, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 328, + 356, 52, 5, 356, 356, 239, 356, 356, 303, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 259, 28, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 260, 356, 356, 356, 152, 356, 356, 356, + 356, 356, 356, 356, 356, 189, 356, 197, 356, 356, - 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 323, 354, 354, 267, 354, 354, 354, 354, 354, 298, - 354, 354, 354, 354, 354, 354, 299, 354, 354, 354, - 265, 354, 268, 269, 354, 354, 354, 354, 354, 266, - 270, 0 + 356, 356, 356, 356, 356, 356, 356, 299, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 356, 356, 325, 356, 356, 267, 356, + 356, 356, 356, 356, 300, 356, 356, 356, 356, 356, + 356, 301, 356, 356, 356, 265, 356, 268, 269, 356, + 356, 356, 356, 356, 266, 270, 0 } ; static const YY_CHAR yy_ec[256] = @@ -797,17 +798,17 @@ static const YY_CHAR yy_meta[41] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[3561] = +static const flex_int16_t yy_base[3576] = { 0, 0, 0, 38, 41, 44, 46, 59, 65, 71, 77, - 90, 112, 96, 118, 124, 136, 3060, 2545, 81, 6911, - 6911, 6911, 129, 52, 130, 63, 131, 152, 70, 140, + 90, 112, 96, 118, 124, 136, 3060, 2545, 81, 6947, + 6947, 6947, 129, 52, 130, 63, 131, 152, 70, 140, 149, 156, 57, 88, 76, 173, 175, 95, 197, 145, - 185, 199, 208, 213, 178, 123, 2505, 6911, 6911, 6911, - 107, 2460, 6911, 6911, 6911, 154, 2315, 2089, 6911, 6911, - 6911, 245, 2007, 6911, 6911, 6911, 163, 1936, 6911, 249, - 6911, 253, 148, 1835, 1793, 6911, 6911, 6911, 257, 1696, - 6911, 6911, 6911, 233, 1543, 263, 201, 0, 267, 0, + 185, 199, 208, 213, 178, 123, 2505, 6947, 6947, 6947, + 107, 2460, 6947, 6947, 6947, 154, 2315, 2089, 6947, 6947, + 6947, 245, 2007, 6947, 6947, 6947, 163, 1936, 6947, 249, + 6947, 253, 148, 1835, 1793, 6947, 6947, 6947, 257, 1696, + 6947, 6947, 6947, 233, 1543, 263, 201, 0, 267, 0, 0, 165, 191, 221, 252, 205, 181, 265, 92, 261, 216, 263, 271, 272, 210, 279, 274, 282, 278, 291, @@ -837,10 +838,10 @@ static const flex_int16_t yy_base[3561] = 738, 742, 745, 743, 753, 754, 755, 759, 758, 774, 763, 764, 771, 784, 765, 767, 769, 775, 796, 785, 798, 799, 800, 803, 804, 801, 808, 807, 809, 811, - 823, 813, 820, 826, 827, 829, 830, 837, 832, 6911, + 823, 813, 820, 826, 827, 829, 830, 837, 832, 6947, 834, 836, 848, 847, 850, 853, 843, 859, 860, 839, 870, 866, 863, 881, 903, 867, 871, 873, 876, 872, - 6911, 893, 883, 927, 885, 889, 911, 895, 907, 913, + 6947, 893, 883, 927, 885, 889, 911, 895, 907, 913, 916, 909, 914, 921, 923, 917, 920, 944, 945, 935, 936, 947, 952, 951, 959, 960, 954, 958, 963, 971, @@ -849,16 +850,16 @@ static const flex_int16_t yy_base[3561] = 1011, 1012, 1020, 1006, 1014, 1028, 1026, 1024, 1034, 1033, 1035, 1007, 1041, 1039, 1044, 1051, 1048, 1054, 1063, 1058, 1059, 1060, 1064, 1065, 1066, 1068, 1071, 1072, 1073, 1076, - 1077, 1083, 1084, 1088, 1092, 1078, 1093, 1086, 6911, 1100, - 6911, 1095, 1098, 1102, 1103, 1104, 1105, 1107, 1109, 6911, + 1077, 1083, 1084, 1088, 1092, 1078, 1093, 1086, 6947, 1100, + 6947, 1095, 1098, 1102, 1103, 1104, 1105, 1107, 1109, 6947, 1111, 1114, 1113, 1120, 1124, 1117, 1128, 1130, 1136, 1137, 1138, 1139, 1140, 1142, 1149, 1144, 1154, 1152, 1147, 1158, 1156, 1159, 1115, 1160, 1162, 1166, 1167, 1168, 1169, 1188, - 6911, 1172, 1174, 1175, 1181, 1179, 1186, 1184, 1193, 1201, + 6947, 1172, 1174, 1175, 1181, 1179, 1186, 1184, 1193, 1201, 1203, 1211, 1205, 1213, 1215, 1212, 1217, 1173, 1219, 1223, 1225, 1228, 1229, 1231, 1232, 1234, 1235, 1237, 1238, 1240, - 1239, 1247, 1250, 1251, 6911, 1252, 1254, 1255, 1268, 1263, + 1239, 1247, 1250, 1251, 6947, 1252, 1254, 1255, 1268, 1263, 1264, 1267, 1269, 1270, 1271, 1272, 1274, 1278, 517, 1273, 1291, 1288, 1284, 1298, 1293, 1294, 1295, 1299, 1301, 1300, 1302, 1304, 1313, 1310, 1316, 1325, 1328, 1327, 1330, 1337, @@ -866,7 +867,7 @@ static const flex_int16_t yy_base[3561] = 1350, 1351, 1360, 1356, 1357, 1359, 1358, 1364, 1365, 1367, 1362, 1368, 1370, 1372, 1374, 1381, 1379, 1385, 1390, 1386, - 1391, 1387, 1380, 1395, 1403, 1397, 1406, 6911, 1413, 1308, + 1391, 1387, 1380, 1395, 1403, 1397, 1406, 6947, 1413, 1308, 1409, 1410, 1415, 1416, 1417, 1418, 1423, 1424, 1425, 1427, 1426, 1429, 1430, 1433, 1435, 1437, 1440, 1442, 1450, 1445, 1455, 1462, 1461, 1443, 1447, 1457, 1463, 1467, 1466, 1474, @@ -880,20 +881,20 @@ static const flex_int16_t yy_base[3561] = 1601, 1595, 1603, 1602, 1604, 1611, 1610, 1614, 1615, 1605, 1616, 1620, 1626, 1627, 1628, 1631, 1630, 1635, 1638, 1636, 1640, 1642, 1648, 1649, 1650, 1652, 1633, 1656, 1659, 1664, - 1667, 1661, 6911, 1657, 1675, 1651, 1673, 1674, 1653, 1679, - 1687, 1680, 1682, 1683, 1684, 1685, 1710, 6911, 1691, 6911, - 6911, 1690, 6911, 6911, 1693, 1692, 6911, 1694, 1695, 1708, + 1667, 1661, 6947, 1657, 1675, 1651, 1673, 1674, 1653, 1679, + 1687, 1680, 1682, 1683, 1684, 1685, 1710, 6947, 1691, 6947, + 6947, 1690, 6947, 6947, 1693, 1692, 6947, 1694, 1695, 1708, 1699, 1713, 1716, 1720, 1718, 1711, 1721, 1733, 1742, 1728, 1734, 1726, 1735, 1751, 1738, 1752, 1740, 1750, 1758, 1759, 1757, 1764, 1771, 1766, 1775, 1768, 1779, 1777, 1780, 1786, 1787, 1791, 1793, 1788, 1794, 1797, 1796, 1798, 1799, 1802, 1804, 1723, 1805, 1808, 1809, 1810, 1818, 1815, 1823, 1830, - 6911, 1828, 1831, 1827, 1840, 1836, 1843, 1811, 1838, 1839, + 6947, 1828, 1831, 1827, 1840, 1836, 1843, 1811, 1838, 1839, 1849, 1851, 1845, 1842, 1852, 1854, 1855, 1856, 1859, 1861, - 1864, 1867, 1865, 1869, 1872, 1870, 6911, 1877, 1878, 1871, + 1864, 1867, 1865, 1869, 1872, 1870, 6947, 1877, 1878, 1871, 1879, 1881, 1882, 1883, 1891, 1892, 1893, 1894, 1904, 1896, - 1899, 1897, 1901, 1906, 1908, 1909, 1911, 6911, 1916, 1924, + 1899, 1897, 1901, 1906, 1908, 1909, 1911, 6947, 1916, 1924, 1913, 1921, 1919, 1925, 1928, 1929, 1930, 1933, 1931, 1935, 1937, 1938, 1947, 1943, 1944, 1946, 1949, 1953, 1958, 1961, 1959, 1960, 1971, 1963, 1966, 1972, 1974, 1975, 1976, 1977, @@ -901,693 +902,697 @@ static const flex_int16_t yy_base[3561] = 1978, 1980, 1985, 1990, 1987, 1995, 1988, 1991, 1998, 2009, 2004, 1993, 2005, 2010, 2006, 2013, 2022, 2024, 2020, 2019, 2021, 2032, 2028, 2030, 2031, 2033, 2036, 2041, 2042, 2043, - 2044, 2046, 2050, 2051, 2053, 6911, 2055, 2059, 6911, 2058, + 2044, 2046, 2050, 2051, 2053, 6947, 2055, 2059, 6947, 2058, 2060, 2061, 2083, 2062, 2065, 2066, 2075, 2064, 2087, 2078, 2076, 2095, 2084, 2102, 2097, 2103, 2105, 2107, 2108, 2112, 2110, 2111, 2114, 2116, 2118, 2120, 2128, 2137, 2138, 2140, 2134, 2142, 2119, 2143, 2067, 2163, 2144, 2145, 2146, 2147, 2148, 2152, 2153, 2151, 2154, 2155, 2165, 2170, 2172, 2173, - 2175, 2158, 2179, 2180, 2181, 2191, 2188, 2185, 6911, 2200, + 2175, 2158, 2179, 2180, 2181, 2191, 2188, 2185, 6947, 2200, - 2193, 2197, 2201, 2202, 2209, 2207, 2204, 6911, 2208, 2210, + 2193, 2197, 2201, 2202, 2209, 2207, 2204, 6947, 2208, 2210, 2211, 2220, 2213, 2218, 2221, 2224, 2225, 2228, 2229, 2231, - 2233, 2230, 2232, 2251, 6911, 2234, 6911, 2238, 2235, 2253, - 2243, 2246, 2247, 2254, 2256, 2259, 6911, 6911, 2263, 2257, - 2270, 2273, 2278, 2274, 2275, 2276, 6911, 2277, 2285, 6911, + 2233, 2230, 2232, 2251, 6947, 2234, 6947, 2238, 2235, 2253, + 2243, 2246, 2247, 2254, 2256, 2259, 6947, 6947, 2263, 2257, + 2270, 2273, 2278, 2274, 2275, 2276, 6947, 2277, 2285, 6947, 2287, 2292, 2280, 2281, 2282, 2286, 2296, 2297, 2305, 2300, - 2308, 2303, 2306, 2307, 6911, 2313, 2316, 2310, 2317, 2323, - 2324, 2325, 2327, 2330, 2326, 6911, 2333, 2329, 2336, 2343, + 2308, 2303, 2306, 2307, 6947, 2313, 2316, 2310, 2317, 2323, + 2324, 2325, 2327, 2330, 2326, 6947, 2333, 2329, 2336, 2343, 2347, 2341, 2344, 2348, 2352, 2349, 2354, 2355, 2356, 2357, - 2364, 2366, 2369, 2371, 2372, 2374, 2378, 2385, 6911, 2381, + 2364, 2366, 2369, 2371, 2372, 2374, 2378, 2385, 6947, 2381, 2380, 2382, 2390, 2387, 2389, 2391, 2394, 2393, 2395, 2396, 2401, 2397, 2405, 2406, 2407, 2409, 2418, 2421, 2416, 2417, 2426, 2413, 2420, 2423, 2427, 2365, 2429, 2430, 2433, 2436, - 6911, 2437, 2441, 2438, 2443, 2444, 2442, 171, 2450, 2451, + 6947, 2437, 2441, 2438, 2443, 2444, 2442, 171, 2450, 2451, 2453, 2454, 2458, 2469, 2455, 2463, 2476, 2471, 2472, 2478, - 2474, 2481, 2482, 2483, 2484, 2473, 2486, 2485, 2489, 6911, - 2491, 2497, 2494, 2498, 2501, 2502, 2504, 6911, 2506, 2514, + 2474, 2481, 2482, 2483, 2484, 2473, 2486, 2485, 2489, 6947, + 2491, 2497, 2494, 2498, 2501, 2502, 2504, 6947, 2506, 2514, 2516, 2525, 2519, 2503, 2527, 2528, 2531, 2529, 2532, 2533, - 2534, 2535, 2536, 2542, 2539, 6911, 2544, 2551, 2554, 2541, + 2534, 2535, 2536, 2542, 2539, 6947, 2544, 2551, 2554, 2541, 2555, 2562, 2548, 2563, 2564, 2565, 2568, 2567, 2569, 2573, 2570, 2572, 2574, 2575, 2583, 2594, 2577, 2586, 2587, 2590, - 2591, 2595, 2599, 2600, 2601, 2608, 2603, 6911, 2615, 2604, + 2591, 2595, 2599, 2600, 2601, 2608, 2603, 6947, 2615, 2604, 2612, 2613, 2611, 2614, 2617, 2620, 2634, 2624, 2627, 2629, 2635, 2644, 2637, 2638, 2646, 2654, 2651, 2639, 2664, 2660, 2661, 2668, 2659, 2670, 2672, 2662, 2673, 2684, 2674, 2676, 2681, 2679, 2685, 2694, 2695, 2687, 2697, 2698, 2690, 2700, - 2702, 2712, 2717, 2707, 6911, 2719, 2709, 2720, 2721, 2728, + 2702, 2712, 2717, 2707, 6947, 2719, 2709, 2720, 2721, 2728, 2725, 2726, 2731, 2729, 2732, 2733, 2735, 2737, 2745, 2746, 2744, 2742, 2749, 2753, 2755, 2757, 2760, 2759, 2740, 2768, - 2762, 2764, 2771, 2772, 6911, 2775, 2776, 2780, 2782, 2784, + 2762, 2764, 2771, 2772, 6947, 2775, 2776, 2780, 2782, 2784, 2785, 2787, 2788, 2790, 2792, 2793, 2794, 2797, 2798, 2800, - 2801, 2802, 2809, 2806, 2807, 2808, 2812, 6911, 2820, 2819, + 2801, 2802, 2809, 2806, 2807, 2808, 2812, 6947, 2820, 2819, 2821, 2824, 2827, 2825, 2831, 2837, 2839, 2828, 2841, 2835, - 2842, 2843, 2845, 6911, 2855, 2857, 2847, 2854, 2862, 2860, - 2861, 2863, 2865, 2866, 6911, 2867, 2870, 2868, 2875, 2871, - 2873, 2882, 2883, 2879, 6911, 2887, 2884, 2889, 2892, 2893, + 2842, 2843, 2845, 6947, 2855, 2857, 2847, 2854, 2862, 2860, + 2861, 2863, 2865, 2866, 6947, 2867, 2870, 2868, 2875, 2871, + 2873, 2882, 2883, 2879, 6947, 2887, 2884, 2889, 2892, 2893, 2894, 2895, 2899, 2897, 2901, 2902, 2906, 2915, 2907, 2916, - 6911, 2903, 2924, 2910, 2925, 2919, 2929, 2931, 2932, 2933, - 2935, 2937, 2940, 6911, 2942, 2945, 2948, 2957, 2952, 2953, - 2955, 2958, 2960, 2962, 2961, 2964, 2966, 6911, 2968, 2967, + 6947, 2903, 2924, 2910, 2925, 2919, 2929, 2931, 2932, 2933, + 2935, 2937, 2940, 6947, 2942, 2945, 2948, 2957, 2952, 2953, + 2955, 2958, 2960, 2962, 2961, 2964, 2966, 6947, 2968, 2967, 2970, 2974, 2972, 2977, 2978, 2989, 2984, 2987, 2990, 2991, 2992, 2993, 2994, 2999, 3010, 3001, 2998, 3000, 3002, 3014, 3012, 3019, 3018, 3022, 3026, 3030, 3025, 3031, 3034, 3029, - 3036, 3037, 3040, 3047, 3048, 3049, 3050, 3053, 6911, 3056, + 3036, 3037, 3040, 3047, 3048, 3049, 3050, 3053, 6947, 3056, 3057, 3059, 3044, 3060, 3063, 3064, 3066, 3069, 3065, 3067, 3071, 3074, 3078, 3087, 3090, 3080, 3082, 3091, 3092, 3093, 3094, 3095, 3096, 3101, 3104, 3103, 3105, 3106, 3113, 3109, 3112, 3121, 3117, 3120, 3122, 3123, 3124, 3126, 3127, 3129, 3130, 3134, 3133, 3135, 3138, 3146, 3156, 3153, 3147, 3149, - 3157, 3159, 3161, 6911, 3160, 3164, 3168, 3165, 3170, 3174, + 3157, 3159, 3161, 6947, 3160, 3164, 3168, 3165, 3170, 3174, 3171, 3181, 3177, 3182, 3190, 3188, 3187, 3194, 3179, 3189, - 3196, 3197, 3206, 3202, 6911, 3203, 6911, 3204, 3208, 3209, - 3218, 3211, 6911, 3215, 6911, 3216, 3223, 3220, 3224, 3226, - 6911, 3227, 3228, 3232, 3229, 3233, 3234, 3239, 3237, 3241, + 3196, 3197, 3206, 3202, 6947, 3203, 6947, 3204, 3208, 3209, + 3218, 3211, 6947, 3215, 6947, 3216, 3223, 3220, 3224, 3226, + 6947, 3227, 3228, 3232, 3229, 3233, 3234, 3239, 3237, 3241, 3243, 3245, 3246, 3255, 3244, 3250, 3251, 3257, 3266, 3256, 3261, 3263, 3269, 3272, 3274, 3273, 3280, 3275, 3282, 3283, - 3285, 3286, 3287, 6911, 3291, 3295, 3296, 3299, 3300, 3288, + 3285, 3286, 3287, 6947, 3291, 3295, 3296, 3299, 3300, 3288, 3303, 3302, 3310, 3307, 3311, 3308, 3314, 3315, 3319, 3320, - 3323, 3325, 3331, 3336, 3343, 3326, 3344, 6911, 3339, 3348, - 3330, 3350, 6911, 3352, 3327, 3354, 3358, 3360, 3361, 3362, + 3323, 3325, 3331, 3336, 3343, 3326, 3344, 6947, 3339, 3348, + 3330, 3350, 6947, 3352, 3327, 3354, 3358, 3360, 3361, 3362, - 3363, 3364, 3367, 3368, 3369, 3370, 3378, 3381, 3384, 6911, + 3363, 3364, 3367, 3368, 3369, 3370, 3378, 3381, 3384, 6947, 3382, 3390, 3371, 3394, 3393, 3404, 3405, 3401, 3407, 3409, 3417, 3413, 3402, 3412, 3400, 3414, 3420, 3422, 3427, 3431, 3424, 3432, 3428, 3433, 3436, 3437, 3439, 3440, 3443, 3441, - 3444, 3445, 3449, 3446, 3447, 3448, 3340, 3450, 3466, 6911, - 3453, 3455, 3468, 3476, 3454, 3471, 3475, 3477, 3478, 6911, + 3444, 3445, 3449, 3446, 3447, 3448, 3340, 3450, 3466, 6947, + 3453, 3455, 3468, 3476, 3454, 3471, 3475, 3477, 3478, 6947, 3480, 3482, 3483, 3484, 3485, 3489, 3492, 3490, 3493, 3494, - 3497, 3498, 3501, 3500, 6911, 3507, 6911, 3508, 3515, 3520, + 3497, 3498, 3501, 3500, 6947, 3507, 6947, 3508, 3515, 3520, 3524, 3509, 3517, 3525, 3530, 3526, 3531, 3532, 3538, 3540, 3534, 3536, 3542, 3543, 3546, 3547, 3554, 3560, 3557, 3549, - 3561, 3563, 3565, 3566, 3573, 3570, 3568, 6911, 6911, 3571, - 3576, 3577, 3583, 3584, 3585, 3586, 3588, 3598, 3589, 3591, - 3592, 3614, 6911, 3595, 3602, 3604, 3606, 3605, 3621, 3616, - 3623, 3624, 3620, 3627, 3635, 3630, 6911, 3628, 3631, 3638, - 3633, 3640, 3650, 6911, 3375, 6911, 3637, 3639, 3642, 3647, - 3652, 3651, 3653, 3654, 3659, 3662, 3664, 3668, 3671, 3675, - 3670, 3674, 3677, 3680, 3681, 3685, 3679, 3688, 3686, 3687, - 3691, 6911, 3694, 3690, 3695, 3696, 3702, 3706, 3707, 3704, - 3705, 6911, 3714, 3715, 3716, 3717, 3718, 3721, 3723, 3726, - 3727, 3731, 3734, 3732, 3735, 3737, 6911, 3736, 3740, 3750, + 3561, 3563, 3565, 3566, 3573, 3570, 3568, 6947, 6947, 3571, + 3576, 3577, 3583, 3584, 3585, 3587, 3589, 3592, 3591, 3595, + 3600, 3611, 6947, 3603, 3604, 3606, 3607, 3608, 3620, 3613, + 3624, 3621, 3625, 3626, 3633, 3629, 6947, 3632, 3634, 3642, + 3637, 3638, 3645, 6947, 3375, 6947, 3643, 3644, 3646, 3649, + 3651, 3655, 3653, 3658, 3659, 3654, 3660, 3670, 3677, 3679, + 3675, 3681, 3676, 3682, 3678, 3684, 3685, 3692, 3687, 3689, + 3690, 6947, 3694, 3695, 3699, 3701, 3702, 3707, 3711, 3704, + 3710, 6947, 3714, 3717, 3718, 3719, 3720, 3724, 3727, 3728, + 3729, 3737, 3730, 3732, 3738, 3741, 6947, 3742, 3734, 3749, - 3741, 3743, 3745, 3757, 3759, 3764, 6911, 3765, 3758, 3772, - 3769, 3771, 3752, 3773, 3774, 3775, 3777, 3778, 3779, 3780, - 3781, 3786, 3787, 3788, 3782, 3789, 3800, 3801, 3792, 3811, - 3814, 3799, 6911, 3803, 3813, 3815, 3816, 3817, 3821, 3823, - 3826, 3828, 3818, 3830, 3833, 3839, 3840, 3841, 3843, 3844, - 3851, 3846, 6911, 3853, 3850, 3858, 3854, 3855, 3863, 3857, - 3864, 3865, 3872, 3867, 3869, 3873, 3874, 3875, 3881, 3883, - 3885, 3887, 3888, 3889, 3900, 3891, 6911, 3902, 3903, 3893, - 3910, 3905, 3913, 3920, 3915, 3918, 3919, 3922, 3923, 3925, - 3927, 3929, 3930, 3933, 3934, 6911, 6911, 3936, 3937, 3939, + 3745, 3747, 3752, 3756, 3759, 3764, 6947, 3766, 3751, 3773, + 3769, 3770, 3772, 3775, 3776, 3777, 3779, 3780, 3781, 3783, + 3784, 3789, 3785, 3787, 3794, 3790, 3802, 3804, 3791, 3812, + 3819, 3805, 6947, 3808, 3815, 3817, 3818, 3820, 3821, 3823, + 3829, 3831, 3825, 3840, 3841, 3832, 3836, 3843, 3847, 3844, + 3855, 3851, 6947, 3856, 3852, 3865, 3858, 3860, 3866, 3862, + 3867, 3868, 3872, 3874, 3875, 3876, 3877, 3878, 3883, 3886, + 3890, 3891, 3892, 3893, 3900, 3895, 6947, 3907, 3884, 3897, + 3914, 3908, 3905, 3923, 3918, 3921, 3922, 3925, 3926, 3928, + 3930, 3931, 3932, 3935, 3936, 6947, 6947, 3938, 3939, 3940, - 6911, 3941, 3942, 3952, 3943, 3945, 3953, 3955, 3957, 3956, - 3958, 3960, 3966, 3967, 6911, 3975, 3968, 3977, 3976, 3972, - 3986, 3985, 6911, 3978, 3988, 3990, 3993, 3991, 3981, 3994, - 3995, 3892, 3999, 4002, 4003, 4011, 4012, 4009, 4008, 4010, - 6911, 4015, 4016, 4019, 4021, 4018, 4022, 4025, 6911, 4026, - 4027, 4032, 4037, 4039, 4047, 4049, 4044, 4051, 4036, 4052, - 4054, 4056, 4058, 4059, 4062, 4069, 4065, 4070, 4067, 4064, - 4075, 4080, 4084, 6911, 4086, 4076, 4071, 4090, 6911, 4094, - 4102, 4103, 6911, 4104, 4099, 4100, 4106, 4113, 6911, 4108, - 4110, 4109, 4111, 4115, 4122, 4117, 4129, 4127, 4119, 4124, + 6947, 3942, 3944, 3954, 3945, 3947, 3955, 3957, 3959, 3958, + 3960, 3962, 3968, 3969, 6947, 3977, 3970, 3979, 3978, 3974, + 3988, 3987, 6947, 3980, 3990, 3992, 3995, 3993, 3983, 3996, + 4001, 3997, 4005, 4006, 4007, 4010, 4018, 4019, 4014, 4016, + 4017, 6947, 4020, 4022, 4023, 4026, 4027, 4029, 4030, 6947, + 4035, 4032, 4038, 4041, 4043, 4050, 4042, 4053, 4056, 4057, + 4058, 4060, 4061, 4062, 4063, 4065, 4073, 4059, 4071, 4070, + 4068, 4088, 4089, 4076, 6947, 4084, 4091, 4074, 4096, 6947, + 4098, 4105, 4106, 6947, 4109, 4092, 4108, 4110, 4117, 6947, + 4112, 4115, 4114, 4120, 4116, 4129, 4125, 4133, 4131, 4132, - 4128, 4130, 6911, 4131, 4132, 4136, 6911, 4134, 4145, 4148, - 4150, 4135, 4158, 4153, 4156, 4154, 4157, 6911, 4162, 6911, - 4165, 4163, 4169, 6911, 4164, 4171, 4172, 4174, 4178, 4179, - 4180, 4186, 4182, 4188, 4190, 4191, 4192, 4193, 4195, 4202, - 4194, 4198, 4201, 4203, 6911, 4204, 4206, 4213, 4210, 4214, - 4218, 4220, 4221, 4223, 4225, 6911, 6911, 4234, 6911, 4226, - 4231, 4235, 4236, 6911, 4239, 4241, 4243, 4240, 4244, 4246, - 4249, 4259, 4253, 6911, 4263, 4264, 6911, 4250, 4260, 4274, - 4256, 4269, 4271, 4272, 4277, 4275, 4279, 4282, 4283, 4281, - 4285, 4280, 4286, 4298, 6911, 4287, 4288, 4290, 4309, 4303, + 4128, 4134, 4137, 6947, 4138, 4135, 4140, 6947, 4143, 4152, + 4156, 4158, 4142, 4165, 4160, 4163, 4161, 4164, 6947, 4169, + 6947, 4172, 4170, 4176, 6947, 4171, 4178, 4179, 4181, 4185, + 4186, 4187, 4193, 4189, 4195, 4197, 4198, 4199, 4200, 4202, + 4209, 4201, 4205, 4208, 4210, 6947, 4211, 4213, 4220, 4217, + 4221, 4225, 4227, 4228, 4230, 4232, 6947, 6947, 4241, 6947, + 4233, 4238, 4242, 4243, 6947, 4246, 4248, 4250, 4247, 4251, + 4253, 4256, 4266, 4136, 6947, 4268, 4269, 6947, 4257, 4271, + 4278, 4273, 4275, 4263, 4276, 4283, 4279, 4260, 4286, 4289, + 4290, 4291, 4292, 4293, 4300, 6947, 4294, 4297, 4295, 4310, - 4299, 4310, 4315, 4305, 6911, 4318, 4289, 4312, 4322, 4324, - 6911, 4326, 6911, 4314, 4328, 4329, 4334, 4333, 4344, 6911, - 4340, 4339, 4346, 4343, 4349, 4348, 4351, 4355, 4347, 4357, - 4358, 4367, 4359, 4363, 4362, 4372, 4373, 6911, 4368, 4370, - 4380, 4382, 4377, 4385, 4394, 4386, 4393, 4389, 4390, 4397, - 4399, 4400, 4402, 4404, 4409, 4408, 6911, 4412, 4410, 4415, - 4418, 4429, 4420, 4421, 4424, 6911, 4425, 4433, 4435, 6911, - 4431, 4427, 4434, 4442, 4445, 4446, 4448, 4449, 4450, 4453, - 4454, 4451, 6911, 4458, 4459, 4452, 4455, 4457, 4468, 6911, - 6911, 4473, 6911, 4474, 4461, 4476, 4478, 4481, 4485, 4483, + 4299, 4304, 4312, 4311, 4313, 6947, 4321, 4323, 4322, 4327, + 4328, 6947, 4329, 6947, 4330, 4334, 4337, 4339, 4331, 4342, + 6947, 4344, 4345, 4352, 4347, 4353, 4354, 4355, 4357, 4361, + 4363, 4364, 4371, 4367, 4369, 4366, 4376, 4377, 6947, 4368, + 4374, 4390, 4391, 4383, 4380, 4386, 4399, 4396, 4398, 4397, + 4402, 4404, 4405, 4407, 4411, 4413, 4409, 4416, 6947, 4419, + 4420, 4424, 4421, 4431, 4427, 4428, 4433, 6947, 4435, 4436, + 4438, 6947, 4440, 4444, 4446, 4449, 4450, 4451, 4452, 4456, + 4454, 4457, 4458, 4460, 6947, 4462, 4463, 4461, 4477, 4478, + 4467, 6947, 6947, 4480, 6947, 4484, 4466, 4485, 4487, 4488, - 4486, 4488, 4489, 4490, 4493, 4498, 4499, 6911, 4500, 4508, - 4501, 4511, 4520, 4521, 4513, 4517, 4504, 6911, 6911, 4527, - 4528, 4522, 4533, 4534, 4518, 4537, 4542, 4539, 4540, 4546, - 4547, 4556, 6911, 4549, 4538, 4557, 4548, 6911, 4551, 4559, - 4560, 4562, 4565, 4563, 4566, 4567, 4569, 4571, 4573, 4575, - 4580, 4584, 4578, 4585, 4586, 4588, 4591, 4592, 4590, 4600, - 6911, 4594, 4597, 4601, 4606, 4609, 4610, 4611, 4612, 4614, - 4615, 4619, 6911, 4622, 6911, 4618, 4621, 4617, 4627, 4624, - 4639, 4640, 4643, 4628, 4642, 4647, 4648, 4651, 4652, 4658, - 4653, 4659, 4661, 4655, 4666, 4670, 4671, 6911, 4673, 4663, + 4492, 4494, 4495, 4497, 4491, 4498, 4502, 4503, 4507, 6947, + 4510, 4518, 4511, 4522, 4525, 4530, 4523, 4527, 4514, 6947, + 6947, 4532, 4536, 4538, 4540, 4541, 4543, 4528, 4550, 4548, + 4556, 4559, 4549, 4566, 6947, 4561, 4552, 4563, 4564, 6947, + 4545, 4568, 4569, 4571, 4574, 4575, 4578, 4576, 4577, 4580, + 4588, 4581, 4583, 4590, 4589, 4591, 4599, 4597, 4600, 4601, + 4603, 4607, 6947, 4604, 4608, 4610, 4613, 4617, 4618, 4619, + 4620, 4622, 4623, 4630, 6947, 4628, 6947, 4626, 4631, 4646, + 4633, 4636, 4648, 4649, 4650, 4651, 4655, 4657, 4658, 4661, + 4663, 4667, 4662, 4668, 4671, 4673, 4675, 4679, 4683, 4680, - 4674, 4675, 4680, 4682, 4677, 4685, 4686, 4689, 4690, 4692, - 4699, 4701, 4693, 4702, 4691, 4695, 4703, 6911, 4710, 4713, - 4706, 4717, 4714, 4718, 4720, 4721, 4727, 4730, 4719, 4731, - 4733, 6911, 4734, 4736, 4740, 6911, 4737, 4741, 4744, 4747, - 4753, 4742, 4745, 4748, 4754, 6911, 4766, 4756, 4760, 4758, - 4762, 4768, 4770, 4771, 4773, 4775, 4777, 4778, 6911, 4788, - 4783, 4787, 4789, 4790, 4791, 4793, 4800, 4799, 6911, 4801, - 4802, 4803, 4809, 4816, 4817, 4812, 4813, 4826, 4818, 4822, - 4819, 4821, 4829, 4830, 4831, 4836, 4837, 4835, 4847, 4848, - 4850, 6911, 4838, 6911, 4843, 4851, 4852, 4861, 4856, 4859, + 6947, 4686, 4676, 4688, 4625, 4690, 4693, 4694, 4698, 4699, + 4701, 4695, 4702, 4704, 4706, 4709, 4711, 4712, 4714, 4715, + 6947, 4716, 4719, 4722, 4725, 4726, 4727, 4730, 4735, 4739, + 4743, 4731, 4733, 4745, 6947, 4737, 4746, 4754, 6947, 4749, + 4751, 4756, 4757, 4758, 4760, 4761, 4763, 4767, 4770, 6947, + 4774, 4764, 4771, 4775, 4776, 4777, 4781, 4783, 4786, 4788, + 4790, 4798, 6947, 4799, 4791, 4800, 4802, 4804, 4806, 4810, + 4808, 4811, 6947, 4812, 4815, 4821, 4823, 4828, 4830, 4814, + 4825, 4833, 4834, 4836, 4832, 4842, 4843, 4844, 4845, 4847, + 4849, 4848, 4865, 4866, 4863, 6947, 4850, 6947, 4851, 4852, - 4866, 4864, 4862, 6911, 4870, 4871, 4873, 4874, 4876, 6911, - 4878, 4875, 4877, 4881, 6911, 4880, 4894, 4888, 4895, 4897, - 4900, 6911, 4903, 4906, 4905, 4904, 4917, 4912, 4914, 4915, - 4918, 4916, 4920, 4922, 4923, 4931, 4926, 4927, 6911, 4933, - 4935, 4943, 4939, 4936, 4946, 4930, 4947, 4949, 4952, 6911, - 4953, 4954, 4956, 4957, 4959, 4960, 4961, 4962, 4969, 4966, - 4970, 4968, 4975, 4978, 4979, 4980, 4983, 6911, 4987, 4988, - 4985, 4995, 4992, 4991, 6911, 4996, 6911, 4998, 5002, 5006, - 5007, 5010, 6911, 6911, 5013, 5014, 5015, 5019, 5016, 6911, - 6911, 5021, 6911, 5022, 6911, 5023, 5026, 6911, 6911, 5024, + 4868, 4878, 4873, 4875, 4876, 4880, 4879, 6947, 4881, 4886, + 4888, 4883, 4891, 6947, 4892, 4889, 4893, 4894, 6947, 4907, + 4890, 4896, 4903, 4912, 4913, 6947, 4918, 4919, 4920, 4927, + 4929, 4924, 4931, 4926, 4934, 4932, 4928, 4936, 4937, 4945, + 4943, 4941, 6947, 4947, 4949, 4954, 4956, 4950, 4958, 4948, + 4960, 4963, 4965, 6947, 4966, 4969, 4970, 4972, 4973, 4975, + 4974, 4976, 4983, 4980, 4984, 4982, 4988, 4991, 4993, 4995, + 4997, 6947, 4999, 5001, 5003, 5012, 5005, 5002, 6947, 5009, + 6947, 5014, 5019, 5021, 5022, 5015, 5026, 6947, 6947, 5029, + 5036, 5023, 5032, 5034, 6947, 6947, 5038, 6947, 5039, 6947, - 5028, 5030, 5031, 5034, 5044, 6911, 5046, 6911, 5038, 5035, - 5047, 5041, 5049, 5053, 6911, 5050, 5056, 5052, 5060, 5062, - 6911, 5065, 5073, 5063, 5068, 6911, 5076, 5077, 5066, 5070, - 6911, 5078, 5087, 5084, 5082, 5090, 5091, 5092, 5093, 5094, - 5096, 5101, 5098, 5102, 5105, 5106, 5115, 5117, 5119, 5121, - 5112, 5109, 5123, 5129, 5131, 5133, 5126, 5135, 5136, 5137, - 5139, 5140, 5142, 5143, 5145, 5147, 5150, 5151, 5152, 5153, - 5149, 5166, 5154, 5158, 5168, 5164, 5176, 5170, 5172, 5177, - 5179, 5180, 5182, 5181, 5185, 5186, 5184, 5191, 5195, 6911, - 5189, 5198, 5188, 5199, 5200, 5208, 5212, 5216, 5219, 5221, + 5040, 5042, 6947, 6947, 5044, 5045, 5046, 5047, 5048, 5051, + 6947, 5056, 6947, 5065, 5060, 5061, 5063, 5064, 5068, 6947, + 5066, 5069, 5070, 5075, 5077, 6947, 5074, 5078, 5094, 5081, + 5089, 6947, 5091, 5092, 5093, 5096, 6947, 5097, 5101, 5102, + 5103, 5106, 5105, 5108, 5109, 5110, 5116, 5117, 5120, 5119, + 5122, 5123, 5127, 5132, 5134, 5136, 5137, 5138, 5140, 5143, + 5146, 5150, 5141, 5148, 5152, 5154, 5155, 5157, 5159, 5160, + 5162, 5166, 5167, 5163, 5170, 5169, 5171, 5180, 5172, 5182, + 5184, 5186, 5188, 5189, 5190, 5193, 5194, 5197, 5198, 5199, + 5196, 5203, 5200, 5207, 5212, 6947, 5205, 5213, 5214, 5216, - 6911, 5223, 6911, 5225, 5209, 5228, 5229, 5230, 6911, 5231, - 5232, 5233, 5234, 5235, 5236, 5238, 5237, 5241, 5242, 5246, - 6911, 5253, 5249, 5243, 5258, 5262, 6911, 5264, 5269, 5266, - 5270, 5271, 5272, 5275, 5274, 5276, 5277, 5278, 5280, 5282, - 5286, 5283, 5291, 5295, 6911, 5299, 5305, 5302, 5300, 5306, - 5307, 5308, 5310, 5311, 5312, 5314, 5323, 5317, 5327, 5334, - 6911, 5320, 6911, 5328, 5324, 5330, 5335, 5336, 5340, 5338, - 5344, 6911, 6911, 5346, 5347, 5348, 5350, 5352, 5353, 5357, - 5359, 5354, 5201, 6911, 5360, 5364, 5362, 5372, 6911, 5373, - 5374, 5376, 5378, 6911, 5379, 5380, 5382, 5383, 5393, 5381, + 5217, 5221, 5224, 5233, 5239, 5240, 6947, 5242, 6947, 5244, + 5228, 5225, 5230, 5247, 6947, 5234, 5248, 5250, 5251, 5252, + 5253, 5255, 5256, 5259, 5260, 5263, 6947, 5268, 5265, 5258, + 5274, 5270, 6947, 5275, 5282, 5285, 5286, 5287, 5288, 5291, + 5289, 5290, 5293, 5292, 5294, 5297, 5299, 5300, 5310, 5312, + 6947, 5314, 5316, 5323, 5319, 5321, 5322, 5324, 5325, 5326, + 5329, 5327, 5334, 5331, 5343, 5348, 5345, 6947, 5332, 6947, + 5349, 5335, 5352, 5353, 5355, 5356, 5357, 5359, 6947, 6947, + 5362, 5363, 5365, 5367, 5369, 5370, 5372, 5374, 5375, 5376, + 6947, 5379, 5383, 5387, 5393, 5386, 6947, 5395, 5396, 5397, - 5398, 5390, 5399, 5387, 5401, 5402, 5405, 6911, 6911, 6911, - 6911, 5406, 5409, 5411, 5412, 5414, 5415, 5417, 5420, 5421, - 5419, 5416, 5423, 6911, 5433, 6911, 6911, 5434, 5435, 5437, - 5441, 5442, 5424, 5444, 5447, 6911, 5445, 6911, 5449, 5452, - 5448, 5459, 5462, 5464, 5456, 5466, 5467, 5468, 5470, 5471, - 5478, 5476, 5479, 5477, 5482, 5484, 5486, 6911, 6911, 5490, - 5494, 5495, 5497, 5499, 5500, 5501, 5508, 5506, 5507, 5509, - 5511, 5513, 5514, 5522, 5523, 5519, 5520, 6911, 5527, 5525, - 5528, 6911, 5529, 6911, 5533, 5537, 5539, 5536, 5540, 5543, - 5546, 5547, 5549, 5545, 6911, 6911, 5551, 5562, 5557, 6911, + 5401, 6947, 5402, 5398, 5404, 5405, 5412, 5403, 5419, 5415, + 5421, 5409, 5423, 5413, 5427, 6947, 6947, 6947, 6947, 5428, + 5424, 5432, 5434, 5436, 5437, 5439, 5442, 5443, 5441, 5438, + 5444, 6947, 5454, 6947, 6947, 5455, 5456, 5457, 5462, 5464, + 5463, 5465, 5468, 6947, 5466, 6947, 5470, 5473, 5469, 5480, + 5486, 5483, 5477, 5490, 5487, 5492, 5491, 5493, 5501, 5498, + 5499, 5502, 5505, 5507, 5513, 6947, 6947, 5508, 5515, 5516, + 5524, 5520, 5522, 5526, 5534, 5529, 5530, 5532, 5531, 5536, + 5537, 5545, 5548, 5538, 5547, 6947, 5549, 5550, 5551, 6947, + 5552, 6947, 5557, 5560, 5561, 5553, 5563, 5568, 5569, 5572, - 6911, 5559, 5560, 5564, 5566, 5561, 5567, 5570, 5572, 5574, - 5571, 6911, 5576, 6911, 5575, 5577, 5585, 5582, 5594, 5598, - 5593, 5602, 5600, 5589, 5601, 5603, 6911, 5604, 5605, 6911, - 5612, 5614, 5615, 5609, 5610, 6911, 5620, 5616, 5628, 5630, - 6911, 5632, 5633, 5635, 5636, 6911, 5639, 6911, 5622, 5641, - 5643, 5650, 5647, 6911, 5648, 5651, 6911, 5654, 5657, 5661, - 5662, 5658, 5663, 6911, 5667, 5664, 6911, 5669, 5673, 5674, - 5678, 5670, 5680, 5681, 5683, 5684, 5692, 5688, 5691, 6911, - 6911, 5696, 5697, 135, 5705, 5693, 5700, 5703, 5706, 5713, - 5708, 5710, 5718, 6911, 6911, 5719, 6911, 5721, 5722, 6911, + 5570, 5575, 6947, 6947, 5567, 5587, 5582, 6947, 6947, 5574, + 5583, 5586, 5590, 5584, 5592, 5595, 5594, 5597, 5599, 5596, + 6947, 5601, 6947, 5600, 5602, 5608, 5610, 5619, 5623, 5614, + 5624, 5622, 5625, 5626, 5629, 6947, 5627, 5628, 6947, 5637, + 5639, 5640, 5638, 5646, 5643, 6947, 5647, 5649, 5654, 5656, + 6947, 5660, 5657, 5663, 5662, 6947, 5665, 6947, 5630, 5669, + 5666, 5676, 5672, 6947, 5673, 5679, 6947, 5682, 5686, 5688, + 5689, 5677, 5683, 6947, 5695, 5691, 6947, 5697, 5699, 5700, + 5703, 5704, 5706, 5707, 5708, 5710, 5718, 5714, 5711, 6947, + 6947, 5722, 5723, 135, 5731, 5721, 5727, 5729, 5732, 5739, - 5709, 5727, 5731, 5726, 5735, 5728, 5736, 5737, 5739, 5741, - 5742, 5747, 5748, 5749, 5760, 5764, 5750, 5766, 5770, 5772, - 5774, 5776, 5778, 5752, 5780, 5762, 5781, 5783, 5784, 5786, - 5787, 5790, 5788, 5791, 6911, 5794, 5796, 5798, 5800, 6911, - 5803, 5806, 5810, 5812, 6911, 5815, 5816, 5819, 5820, 5821, - 6911, 5804, 5824, 5827, 5711, 5831, 5832, 5833, 5834, 5842, - 5835, 5837, 5839, 6911, 6911, 6911, 5845, 5853, 5847, 6911, - 5855, 5856, 5838, 5857, 6911, 5859, 5860, 5862, 6911, 6911, - 6911, 5864, 5866, 5867, 6911, 5865, 5878, 6911, 5868, 6911, - 5873, 6911, 5877, 5879, 5886, 5881, 6911, 5883, 5891, 5892, + 5734, 5736, 5742, 6947, 6947, 5743, 6947, 5737, 5750, 6947, + 5735, 5751, 5755, 5746, 5752, 5758, 5761, 5765, 5767, 5768, + 5769, 5770, 5771, 5775, 5792, 5794, 5777, 5774, 5797, 5799, + 5801, 5803, 5805, 5762, 5807, 5789, 5785, 5808, 5810, 5795, + 5813, 5816, 5817, 5819, 6947, 5821, 5824, 5826, 5827, 5828, + 6947, 5831, 5834, 5836, 5838, 6947, 5845, 5840, 5842, 5847, + 5848, 6947, 5832, 5853, 5855, 5858, 5859, 5860, 5861, 5863, + 5870, 6947, 5867, 5865, 5871, 6947, 6947, 6947, 5876, 5883, + 5873, 6947, 5885, 5877, 5886, 5888, 6947, 5890, 5892, 5893, + 6947, 6947, 6947, 5894, 5895, 5898, 6947, 5896, 5903, 6947, - 5895, 6911, 5898, 5901, 5903, 5905, 5893, 5907, 5910, 6911, - 5917, 5916, 5918, 5909, 5912, 5919, 5920, 5922, 5924, 5934, - 5925, 5933, 6911, 5935, 5938, 5940, 5936, 5929, 5944, 5946, - 6911, 5947, 6911, 5952, 6911, 5949, 5953, 5955, 5954, 5956, - 5957, 5960, 5963, 5964, 5970, 5974, 5972, 5976, 5977, 5983, - 5978, 6911, 6911, 5985, 5987, 6911, 5980, 6911, 5989, 6911, - 5991, 5992, 5993, 5995, 5999, 6911, 6911, 6006, 5996, 6000, - 6018, 6002, 6010, 6911, 6013, 6017, 6015, 6020, 6911, 6027, - 6911, 6022, 6030, 6023, 6911, 6026, 6033, 6036, 6037, 6038, - 6040, 6043, 6041, 6044, 6051, 6046, 6049, 6047, 6056, 6053, + 5902, 6947, 5899, 6947, 5904, 5908, 5917, 5912, 6947, 5910, + 5922, 5923, 5924, 6947, 5927, 5930, 5932, 5933, 5934, 5936, + 5938, 6947, 5945, 5941, 5944, 5948, 5940, 5950, 5951, 5952, + 5953, 5965, 5956, 5961, 6947, 5963, 5964, 5968, 5974, 5966, + 5976, 5977, 6947, 5970, 6947, 5979, 6947, 5980, 5982, 5983, + 5984, 5989, 5986, 5987, 5997, 5994, 6000, 6003, 6001, 6007, + 6008, 6012, 6009, 6947, 6947, 6014, 6015, 6017, 6947, 6018, + 6947, 6023, 6947, 6019, 6024, 6026, 6027, 6032, 6947, 6947, + 6030, 6033, 6036, 6044, 6041, 6042, 6947, 6046, 6048, 6049, + 6051, 6947, 6058, 6947, 6054, 6063, 6055, 6947, 6056, 6066, - 6057, 6063, 6069, 6911, 6911, 6911, 6062, 6071, 6078, 6076, - 6077, 6079, 6081, 6911, 6082, 6084, 6085, 6086, 6094, 6089, - 6093, 6911, 6096, 6095, 6097, 6098, 6101, 6102, 6103, 6109, - 6911, 6115, 6117, 6124, 6120, 6112, 6127, 6129, 6131, 6134, - 6136, 6137, 6138, 6110, 6139, 6911, 6141, 6911, 6911, 6142, - 6911, 6143, 6145, 6147, 6146, 6148, 6911, 6152, 6153, 6154, - 6155, 6156, 6162, 6158, 6160, 6911, 6163, 6178, 6170, 6174, - 6175, 6911, 6911, 6177, 6183, 6911, 6185, 6186, 6187, 6194, - 6192, 6189, 6196, 6200, 6911, 6199, 6202, 6206, 6208, 6209, - 6210, 6211, 6911, 6212, 6213, 6215, 6216, 6911, 6219, 6218, + 6070, 6067, 6059, 6072, 6073, 6076, 6075, 6083, 6080, 6081, + 6086, 6088, 6089, 6094, 6098, 6102, 6947, 6947, 6947, 6096, + 6090, 6111, 6113, 6114, 6115, 6100, 6947, 6116, 6120, 6122, + 6107, 6129, 6124, 6131, 6947, 6125, 6128, 6132, 6134, 6136, + 6133, 6138, 6139, 6947, 6144, 6150, 6156, 6140, 6151, 6153, + 6160, 6162, 6164, 6167, 6168, 6169, 6176, 6172, 6947, 6174, + 6947, 6179, 6947, 6171, 6947, 6175, 6180, 6182, 6183, 6184, + 6947, 6187, 6188, 6189, 6192, 6191, 6194, 6199, 6210, 6947, + 6200, 6213, 6196, 6193, 6215, 6947, 6947, 6204, 6222, 6947, + 6224, 6226, 6219, 6234, 6217, 6227, 6237, 6238, 6947, 6240, - 6221, 6223, 6224, 6911, 6225, 6227, 6246, 6243, 6911, 6231, - 6242, 6241, 6911, 6911, 6911, 6250, 6253, 6255, 6911, 6911, - 6911, 6911, 6257, 6258, 6260, 6262, 6911, 6265, 6269, 6273, - 6275, 6280, 6268, 6911, 6276, 6282, 6284, 6285, 6286, 6911, - 6911, 6287, 6289, 6290, 6292, 6294, 6295, 6911, 6911, 6296, - 6298, 6302, 6299, 6301, 6911, 6304, 6307, 6314, 6311, 6317, - 6324, 6326, 6319, 6327, 6328, 6336, 6339, 6329, 6331, 6338, - 6342, 6343, 6341, 6345, 6355, 6350, 6352, 6358, 6353, 6361, - 6911, 6911, 6363, 6911, 6365, 6367, 6911, 6911, 6370, 6372, - 6374, 6378, 6911, 6380, 6382, 6384, 6386, 6375, 6911, 6387, + 6241, 6230, 6232, 6242, 6239, 6248, 6947, 6245, 6249, 6255, + 6256, 6947, 6259, 6257, 6261, 6260, 6258, 6947, 6262, 6264, + 6271, 6269, 6947, 6266, 6280, 6272, 6947, 6947, 6947, 6288, + 6290, 6291, 6947, 6947, 6947, 6947, 6293, 6294, 6282, 6297, + 6947, 6947, 6303, 6307, 6311, 6313, 6317, 6306, 6947, 6316, + 6318, 6320, 6322, 6323, 6947, 6947, 6324, 6326, 6328, 6329, + 6331, 6332, 6947, 6947, 6333, 6335, 6339, 6336, 6338, 6947, + 6341, 6344, 6351, 6347, 6354, 6361, 6363, 6357, 6364, 6365, + 6376, 6373, 6366, 6368, 6371, 6379, 6380, 6378, 6382, 6393, + 6388, 6390, 6396, 6386, 6398, 6947, 6947, 6400, 6947, 6405, - 6389, 6391, 6393, 6392, 6394, 6911, 6398, 6399, 6406, 6395, - 6400, 6403, 6407, 6412, 6911, 6409, 6417, 6911, 6911, 6419, - 6420, 6421, 6425, 6422, 6911, 6427, 6434, 6429, 6431, 6432, - 6435, 6433, 6911, 6438, 6439, 6911, 6911, 6441, 6442, 6911, - 6911, 6446, 6911, 6911, 6911, 6911, 6911, 6911, 6911, 6911, - 6450, 6456, 6911, 6911, 6452, 6461, 6463, 6911, 6467, 6911, - 6454, 6464, 6470, 6458, 6911, 6468, 6911, 6469, 6475, 6471, - 6479, 6480, 6483, 6485, 6487, 6489, 6488, 6490, 6493, 6491, - 6497, 6494, 6496, 6505, 6502, 6503, 6511, 6911, 6911, 6911, - 6512, 6513, 6519, 6520, 6522, 6524, 6528, 6531, 6532, 6514, + 6402, 6947, 6947, 6407, 6409, 6413, 6415, 6947, 6417, 6419, + 6421, 6423, 6410, 6947, 6424, 6426, 6428, 6429, 6430, 6431, + 6947, 6435, 6437, 6440, 6432, 6441, 6443, 6444, 6449, 6947, + 6446, 6453, 6947, 6947, 6450, 6457, 6458, 6462, 6459, 6947, + 6464, 6471, 6466, 6469, 6470, 6472, 6475, 6947, 6473, 6476, + 6947, 6947, 6478, 6481, 6947, 6947, 6483, 6947, 6947, 6947, + 6947, 6947, 6947, 6947, 6947, 6487, 6494, 6947, 6947, 6486, + 6501, 6503, 6947, 6505, 6947, 6488, 6498, 6506, 6493, 6947, + 6508, 6947, 6495, 6512, 6514, 6298, 6515, 6516, 6520, 6521, + 6524, 6525, 6526, 6528, 6527, 6532, 6529, 6531, 6545, 6538, - 6535, 6536, 6537, 6539, 6540, 6549, 6544, 6545, 6547, 6554, - 6546, 6560, 6911, 6562, 6548, 6550, 6568, 6911, 6556, 6911, - 6565, 6911, 6911, 6573, 6574, 6570, 6576, 6585, 6586, 6577, - 6581, 6582, 6584, 6588, 6911, 6593, 6911, 6911, 6590, 6596, - 6911, 6598, 6599, 6911, 6597, 6600, 6602, 6606, 6607, 6604, - 6608, 6609, 6625, 6911, 6911, 6610, 6615, 6618, 6627, 6629, - 6628, 6631, 6635, 6636, 6638, 6639, 6648, 6911, 6645, 6646, - 6650, 6911, 6652, 6647, 6653, 6654, 6655, 6663, 6659, 6662, - 6911, 6664, 6911, 6668, 6670, 6671, 6661, 6669, 6672, 6683, - 6681, 6677, 6911, 6687, 6691, 6689, 6693, 6695, 6697, 6698, + 6535, 6548, 6947, 6947, 6947, 6546, 6539, 6557, 6549, 6562, + 6563, 6566, 6568, 6554, 6569, 6571, 6570, 6572, 6576, 6578, + 6585, 6580, 6583, 6581, 6588, 6582, 6591, 6947, 6597, 6584, + 6592, 6604, 6947, 6598, 6947, 6600, 6947, 6947, 6606, 6607, + 6609, 6610, 6620, 6621, 6612, 6619, 6616, 6622, 6624, 6947, + 6631, 6947, 6947, 6625, 6628, 6947, 6633, 6634, 6947, 6636, + 6637, 6639, 6640, 6641, 6643, 6644, 6645, 6652, 6947, 6947, + 6655, 6659, 6657, 6661, 6663, 6670, 6665, 6667, 6669, 6673, + 6671, 6685, 6947, 6681, 6682, 6684, 6947, 6688, 6686, 6689, + 6691, 6693, 6700, 6695, 6698, 6947, 6701, 6947, 6704, 6697, - 6699, 6701, 6704, 6710, 6707, 6714, 6715, 6711, 6719, 6716, - 6911, 6726, 6717, 6911, 6723, 6727, 6720, 6729, 6733, 6911, - 6738, 6731, 6740, 6741, 6744, 6745, 6911, 6747, 6754, 6749, - 6911, 6755, 6911, 6911, 6757, 6751, 6758, 6764, 6766, 6911, - 6911, 6911, 6791, 6798, 6805, 6812, 6819, 6826, 6833, 88, - 6840, 6847, 6854, 6861, 6868, 6875, 6882, 6889, 6896, 6903 + 6708, 6699, 6707, 6715, 6716, 6719, 6720, 6947, 6721, 6722, + 6725, 6729, 6731, 6734, 6735, 6727, 6737, 6738, 6748, 6741, + 6745, 6749, 6751, 6753, 6754, 6947, 6760, 6755, 6947, 6757, + 6761, 6763, 6764, 6767, 6947, 6772, 6765, 6769, 6775, 6778, + 6779, 6947, 6781, 6790, 6785, 6947, 6791, 6947, 6947, 6793, + 6787, 6794, 6800, 6802, 6947, 6947, 6947, 6827, 6834, 6841, + 6848, 6855, 6862, 6869, 88, 6876, 6883, 6890, 6897, 6904, + 6911, 6918, 6925, 6932, 6939 } ; -static const flex_int16_t yy_def[3561] = +static const flex_int16_t yy_def[3576] = { 0, - 3542, 1, 3543, 3543, 3544, 3544, 3545, 3545, 3546, 3546, - 3547, 3547, 3548, 3548, 3549, 3549, 3542, 3550, 3542, 3542, - 3542, 3542, 3551, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3552, 3542, 3542, 3542, - 3552, 3553, 3542, 3542, 3542, 3553, 3554, 3542, 3542, 3542, - 3542, 3554, 3555, 3542, 3542, 3542, 3555, 3556, 3542, 3557, - 3542, 3556, 3556, 3558, 3542, 3542, 3542, 3542, 3558, 3559, - 3542, 3542, 3542, 3559, 3550, 3550, 3542, 3560, 3551, 3560, - 3551, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3557, 1, 3558, 3558, 3559, 3559, 3560, 3560, 3561, 3561, + 3562, 3562, 3563, 3563, 3564, 3564, 3557, 3565, 3557, 3557, + 3557, 3557, 3566, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3567, 3557, 3557, 3557, + 3567, 3568, 3557, 3557, 3557, 3568, 3569, 3557, 3557, 3557, + 3557, 3569, 3570, 3557, 3557, 3557, 3570, 3571, 3557, 3572, + 3557, 3571, 3571, 3573, 3557, 3557, 3557, 3557, 3573, 3574, + 3557, 3557, 3557, 3574, 3565, 3565, 3557, 3575, 3566, 3575, + 3566, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3552, - 3552, 3553, 3553, 3554, 3554, 3542, 3555, 3555, 3556, 3556, - 3557, 3557, 3556, 3558, 3558, 3542, 3559, 3559, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3567, + 3567, 3568, 3568, 3569, 3569, 3557, 3570, 3570, 3571, 3571, + 3572, 3572, 3571, 3573, 3573, 3557, 3574, 3574, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3556, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3571, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3556, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3571, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, - 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, + 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3556, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3571, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3556, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3542, - 3542, 3550, 3542, 3542, 3550, 3550, 3542, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3571, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3557, + 3557, 3565, 3557, 3557, 3565, 3565, 3557, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3556, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3542, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3571, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3557, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3542, 3550, 3542, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3542, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3542, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3557, 3565, 3557, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3557, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3557, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3542, 3550, 3550, 3550, 3550, 3550, 3556, 3556, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3557, 3565, 3565, 3565, 3565, 3565, 3571, 3571, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3556, 3550, - 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3571, 3565, + 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3542, 3550, 3542, 3550, 3550, 3550, - 3550, 3550, 3542, 3550, 3542, 3550, 3550, 3550, 3550, 3550, - 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3556, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, - 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3557, 3565, 3557, 3565, 3565, 3565, + 3565, 3565, 3557, 3565, 3557, 3565, 3565, 3565, 3565, 3565, + 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3571, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, + 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3542, 3550, 3542, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3557, 3565, 3557, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3542, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, - 3550, 3550, 3550, 3542, 3550, 3542, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3542, 3550, 3550, 3550, 3556, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3557, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, + 3565, 3565, 3565, 3557, 3565, 3557, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3557, 3565, 3565, 3565, 3571, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, - 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3542, 3542, 3550, 3550, 3550, + 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3557, 3557, 3565, 3565, 3565, - 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3542, 3550, - 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3542, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3557, + 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3557, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3556, 3550, 3542, 3550, 3550, 3550, 3542, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3542, - 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3542, 3542, 3550, 3542, 3550, - 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3542, 3550, 3550, 3542, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, + 3565, 3571, 3565, 3557, 3565, 3565, 3565, 3557, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, + 3557, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3557, 3565, 3557, + 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3557, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, - 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, - 3542, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3542, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3542, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3542, - 3542, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, + 3565, 3557, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, + 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, + 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, + 3565, 3557, 3557, 3565, 3557, 3565, 3565, 3565, 3565, 3565, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, - 3556, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3542, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3542, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3542, 3550, 3542, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, + 3565, 3565, 3571, 3565, 3565, 3565, 3565, 3565, 3565, 3557, + 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3557, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3557, 3565, 3557, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3542, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3542, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, + 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3557, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3557, 3565, 3565, - 3550, 3556, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3542, - 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, - 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, - 3550, 3550, 3550, 3550, 3542, 3550, 3542, 3550, 3550, 3550, - 3550, 3550, 3542, 3542, 3550, 3550, 3550, 3550, 3550, 3542, - 3542, 3550, 3542, 3550, 3542, 3550, 3550, 3542, 3542, 3550, + 3565, 3565, 3565, 3565, 3565, 3571, 3565, 3557, 3565, 3565, + 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3557, 3565, + 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, + 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3557, 3565, + 3565, 3565, 3565, 3565, 3557, 3557, 3565, 3557, 3565, 3557, - 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3542, 3550, 3550, - 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, - 3542, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, - 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3556, 3550, 3550, 3550, 3550, 3542, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3565, 3565, 3557, 3557, 3565, 3565, 3565, 3565, 3565, 3565, + 3557, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3557, + 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, + 3565, 3557, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3571, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, - 3542, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3542, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3542, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3542, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3542, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3542, 3550, - 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, + 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3557, 3565, + 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, + 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3557, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3557, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3557, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3542, 3542, - 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3542, 3550, 3542, 3542, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3542, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3556, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3542, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, - 3550, 3542, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3542, 3542, 3550, 3550, 3550, 3542, + 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3557, 3557, 3557, 3557, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3557, 3565, 3557, 3557, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3557, 3565, 3557, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3571, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3557, 3557, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3557, + 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3542, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3542, - 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, - 3542, 3550, 3550, 3550, 3550, 3542, 3550, 3542, 3550, 3550, - 3550, 3550, 3550, 3542, 3550, 3550, 3542, 3550, 3550, 3550, - 3550, 3550, 3550, 3542, 3550, 3550, 3542, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, - 3542, 3550, 3550, 3556, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3542, 3542, 3550, 3542, 3550, 3550, 3542, + 3565, 3565, 3557, 3557, 3565, 3565, 3565, 3557, 3557, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3557, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3557, 3565, + 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, + 3557, 3565, 3565, 3565, 3565, 3557, 3565, 3557, 3565, 3565, + 3565, 3565, 3565, 3557, 3565, 3565, 3557, 3565, 3565, 3565, + 3565, 3565, 3565, 3557, 3565, 3565, 3557, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, + 3557, 3565, 3565, 3571, 3565, 3565, 3565, 3565, 3565, 3565, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3542, - 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, - 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3542, 3542, 3542, 3550, 3550, 3550, 3542, - 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3542, 3542, - 3542, 3550, 3550, 3550, 3542, 3550, 3550, 3542, 3550, 3542, - 3550, 3542, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, + 3565, 3565, 3565, 3557, 3557, 3565, 3557, 3565, 3565, 3557, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, + 3557, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, + 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3557, 3565, 3565, 3565, 3557, 3557, 3557, 3565, 3565, + 3565, 3557, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, + 3557, 3557, 3557, 3565, 3565, 3565, 3557, 3565, 3565, 3557, - 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3542, 3550, 3542, 3550, 3542, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3542, 3542, 3550, 3550, 3542, 3550, 3542, 3550, 3542, - 3550, 3550, 3550, 3550, 3550, 3542, 3542, 3550, 3550, 3550, - 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3542, 3550, - 3542, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3565, 3557, 3565, 3557, 3565, 3565, 3565, 3565, 3557, 3565, + 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3557, 3565, 3557, 3565, 3557, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3557, 3557, 3565, 3565, 3565, 3557, 3565, + 3557, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3557, 3557, + 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, + 3565, 3557, 3565, 3557, 3565, 3565, 3565, 3557, 3565, 3565, - 3550, 3550, 3550, 3542, 3542, 3542, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3542, 3542, 3550, - 3542, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, - 3550, 3542, 3542, 3550, 3550, 3542, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3542, 3550, 3550, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3557, 3557, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, + 3557, 3565, 3557, 3565, 3557, 3565, 3565, 3565, 3565, 3565, + 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, + 3565, 3565, 3565, 3565, 3565, 3557, 3557, 3565, 3565, 3557, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, - 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3542, 3550, - 3550, 3550, 3542, 3542, 3542, 3550, 3550, 3550, 3542, 3542, - 3542, 3542, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, - 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3542, - 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3542, 3550, - 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3542, 3542, 3550, 3542, 3550, 3550, 3542, 3542, 3550, 3550, - 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3542, 3550, + 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, + 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, + 3565, 3565, 3557, 3565, 3565, 3565, 3557, 3557, 3557, 3565, + 3565, 3565, 3557, 3557, 3557, 3557, 3565, 3565, 3565, 3565, + 3557, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, + 3565, 3565, 3565, 3565, 3557, 3557, 3565, 3565, 3565, 3565, + 3565, 3565, 3557, 3557, 3565, 3565, 3565, 3565, 3565, 3557, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3557, 3557, 3565, 3557, 3565, - 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3542, 3542, 3550, - 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3542, 3550, 3550, 3542, 3542, 3550, 3550, 3542, - 3542, 3550, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, - 3550, 3550, 3542, 3542, 3550, 3550, 3550, 3542, 3550, 3542, - 3550, 3550, 3550, 3550, 3542, 3550, 3542, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3542, 3542, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3565, 3557, 3557, 3565, 3565, 3565, 3565, 3557, 3565, 3565, + 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, + 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, + 3565, 3565, 3557, 3557, 3565, 3565, 3565, 3565, 3565, 3557, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, + 3557, 3557, 3565, 3565, 3557, 3557, 3565, 3557, 3557, 3557, + 3557, 3557, 3557, 3557, 3557, 3565, 3565, 3557, 3557, 3565, + 3565, 3565, 3557, 3565, 3557, 3565, 3565, 3565, 3565, 3557, + 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3542, 3550, 3542, - 3550, 3542, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3542, 3550, 3542, 3542, 3550, 3550, - 3542, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3542, 3542, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, - 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3542, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3550, 3550, + 3565, 3565, 3557, 3557, 3557, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, + 3565, 3565, 3557, 3565, 3557, 3565, 3557, 3557, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, + 3565, 3557, 3557, 3565, 3565, 3557, 3565, 3565, 3557, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3557, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3557, 3565, 3565, 3565, 3557, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3557, 3565, 3565, - 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, 3550, - 3542, 3550, 3550, 3542, 3550, 3550, 3550, 3550, 3550, 3542, - 3550, 3550, 3550, 3550, 3550, 3550, 3542, 3550, 3550, 3550, - 3542, 3550, 3542, 3542, 3550, 3550, 3550, 3550, 3550, 3542, - 3542, 0, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, - 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542 + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3557, 3565, + 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, + 3565, 3557, 3565, 3565, 3565, 3557, 3565, 3557, 3557, 3565, + 3565, 3565, 3565, 3565, 3557, 3557, 0, 3557, 3557, 3557, + 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, + 3557, 3557, 3557, 3557, 3557 } ; -static const flex_int16_t yy_nxt[6952] = +static const flex_int16_t yy_nxt[6988] = { 0, 18, 19, 20, 21, 22, 23, 22, 18, 18, 18, 18, 18, 22, 24, 25, 26, 27, 28, 29, 30, @@ -1924,7 +1929,7 @@ static const flex_int16_t yy_nxt[6952] = 1632, 1633, 1630, 86, 1640, 86, 1634, 86, 1641, 1638, 1636, 86, 86, 1646, 1639, 86, 1645, 1647, 86, 86, 1642, 1643, 86, 86, 86, 1649, 1650, 86, 1651, 86, - 86, 1644, 1648, 86, 1655, 1656, 1657, 86, 1654, 3542, + 86, 1644, 1648, 86, 1655, 1656, 1657, 86, 1654, 3557, 86, 86, 86, 86, 1658, 1652, 86, 1659, 1660, 86, 86, 1653, 86, 86, 1661, 1663, 86, 86, 86, 86, 86, 1662, 86, 1668, 86, 1664, 1667, 86, 1670, 1671, @@ -1961,7 +1966,7 @@ static const flex_int16_t yy_nxt[6952] = 1807, 86, 1808, 86, 1811, 86, 1806, 86, 1812, 1809, 1810, 86, 1813, 86, 86, 86, 86, 86, 1818, 1817, 86, 86, 86, 86, 86, 1825, 1822, 1814, 86, 1823, - 1816, 86, 1815, 1820, 86, 86, 1962, 86, 1819, 1826, + 1816, 86, 1815, 1820, 86, 86, 1963, 86, 1819, 1826, 1827, 1824, 1821, 86, 1829, 1833, 86, 86, 1830, 1831, 1832, 1834, 1835, 86, 86, 86, 1828, 86, 86, 1836, @@ -1969,7 +1974,7 @@ static const flex_int16_t yy_nxt[6952] = 86, 1840, 1843, 86, 1847, 86, 1845, 86, 1848, 1850, 86, 86, 1849, 1842, 86, 86, 86, 1844, 1853, 86, 86, 1852, 86, 86, 86, 1854, 86, 86, 86, 86, - 86, 86, 86, 86, 1851, 1864, 86, 86, 86, 3542, + 86, 86, 86, 86, 1851, 1864, 86, 86, 86, 3557, 1855, 1859, 1860, 1856, 1858, 1857, 1861, 1862, 1868, 86, 1869, 86, 1866, 1871, 86, 1863, 1867, 1872, 86, 86, 86, 86, 1877, 86, 1870, 86, 86, 86, 86, 1881, @@ -1979,384 +1984,387 @@ static const flex_int16_t yy_nxt[6952] = 86, 86, 86, 1889, 1885, 1887, 1890, 1884, 86, 1891, 86, 1895, 1896, 86, 1898, 1892, 1897, 86, 86, 86, 1893, 1900, 1901, 86, 86, 86, 1894, 86, 1899, 86, - 1904, 86, 1902, 86, 1905, 86, 86, 3542, 1906, 86, + 1904, 86, 1902, 86, 1905, 86, 86, 3557, 1906, 86, 86, 1914, 86, 1903, 1909, 1908, 1907, 86, 1911, 1913, 86, 1912, 1915, 86, 86, 1910, 86, 1916, 86, 86, 1922, 86, 1917, 86, 86, 1923, 86, 1918, 1924, 86, - 86, 1928, 1920, 1925, 1919, 1921, 86, 86, 86, 86, + 86, 1928, 1920, 1925, 1919, 1921, 86, 86, 86, 1931, - 1932, 86, 86, 1931, 86, 86, 1930, 1927, 86, 1926, - 1934, 86, 1929, 1935, 1933, 86, 1936, 86, 86, 86, - 1937, 1940, 1942, 1939, 1945, 1938, 1941, 86, 1947, 86, - 1943, 1950, 1946, 86, 86, 1949, 86, 86, 1951, 1944, - 86, 86, 1953, 86, 86, 1957, 86, 1948, 86, 1954, - 86, 86, 86, 86, 1952, 86, 1959, 1961, 1956, 1958, - 86, 1955, 1960, 86, 86, 86, 86, 86, 1966, 1963, - 1967, 1964, 86, 1968, 1965, 86, 1970, 86, 1976, 1969, - 1974, 86, 1977, 86, 86, 1971, 1979, 86, 86, 1972, - 86, 1973, 86, 86, 86, 1985, 1978, 1983, 86, 86, + 86, 1933, 86, 1932, 86, 86, 1930, 1927, 86, 1926, + 1937, 1935, 1929, 86, 1936, 1934, 86, 86, 1941, 86, + 86, 86, 1938, 1942, 86, 1946, 86, 1948, 1951, 1939, + 1943, 1940, 1944, 86, 86, 1947, 1950, 86, 86, 86, + 1954, 1945, 86, 1952, 1949, 86, 86, 86, 1955, 1958, + 86, 86, 1962, 1953, 1960, 86, 86, 86, 86, 86, + 1961, 1957, 86, 1959, 86, 1956, 86, 86, 86, 1968, + 1967, 86, 86, 86, 3557, 1964, 1965, 1969, 1966, 1970, + 1971, 1973, 1975, 86, 1977, 1972, 1978, 1974, 86, 86, + 86, 86, 86, 1980, 86, 86, 1984, 86, 86, 1986, - 86, 86, 1975, 86, 86, 1984, 1989, 86, 86, 86, - 1980, 1981, 1991, 1982, 1992, 86, 1987, 86, 86, 86, - 86, 1986, 1988, 1990, 1994, 1995, 1996, 86, 86, 86, - 170, 86, 2000, 2003, 86, 1993, 86, 1999, 1998, 86, - 86, 1997, 2001, 2007, 86, 86, 2002, 86, 86, 86, - 86, 2005, 2009, 86, 86, 2004, 86, 2014, 86, 2006, - 2010, 2008, 2011, 86, 2017, 86, 2015, 2026, 2012, 2018, - 86, 86, 86, 2013, 2016, 2019, 2020, 86, 86, 2023, - 2022, 2024, 86, 2021, 86, 86, 86, 86, 86, 2027, - 86, 86, 86, 86, 86, 86, 2025, 2032, 2033, 86, + 86, 1979, 86, 86, 1976, 86, 1990, 86, 86, 1981, + 1983, 1985, 86, 1982, 86, 86, 1992, 86, 1988, 1993, + 86, 1989, 1987, 86, 86, 1995, 1997, 86, 1991, 1996, + 86, 86, 170, 86, 2001, 1994, 2004, 86, 1999, 2000, + 86, 86, 86, 86, 2002, 86, 1998, 86, 2003, 2008, + 86, 86, 2010, 2006, 86, 86, 2015, 2009, 86, 2005, + 86, 2007, 86, 2011, 86, 86, 2012, 2014, 2019, 86, + 2016, 2018, 86, 2023, 2013, 2020, 2021, 86, 2017, 86, + 2024, 2025, 86, 86, 2022, 86, 86, 2027, 86, 86, + 86, 2028, 86, 86, 86, 2026, 86, 86, 86, 2033, - 86, 86, 86, 2034, 2038, 86, 2037, 2028, 2030, 2031, - 2029, 2035, 86, 86, 86, 2036, 86, 2039, 2041, 2043, - 2044, 2046, 2040, 2045, 86, 2042, 86, 86, 86, 86, - 86, 86, 2052, 2047, 86, 2048, 86, 2055, 2056, 86, - 2057, 86, 2059, 86, 2050, 2049, 86, 2060, 2053, 2051, - 2054, 2058, 86, 86, 86, 2064, 86, 86, 2066, 86, - 2068, 2065, 2067, 86, 86, 2070, 86, 86, 86, 2074, - 86, 86, 2071, 2061, 2062, 2063, 86, 86, 86, 2073, - 86, 2069, 86, 2076, 2077, 86, 86, 86, 86, 2082, - 2084, 2080, 2081, 2072, 86, 2078, 86, 2075, 86, 2083, + 86, 2034, 86, 86, 86, 2038, 2035, 86, 3557, 2029, + 2031, 2032, 2030, 2037, 2036, 86, 2039, 86, 86, 2045, + 2042, 86, 2044, 2041, 2046, 86, 2047, 2043, 86, 2040, + 86, 86, 86, 86, 86, 2053, 86, 2056, 86, 2048, + 2049, 2057, 86, 2058, 86, 86, 2051, 2050, 2054, 86, + 2055, 2052, 2060, 86, 86, 2061, 86, 86, 2059, 2065, + 86, 2066, 2067, 2069, 86, 86, 2062, 2068, 86, 86, + 2063, 86, 2071, 86, 2075, 86, 2072, 2064, 86, 86, + 86, 86, 2074, 2070, 2078, 86, 2077, 86, 86, 86, + 86, 86, 2083, 2085, 2081, 2082, 86, 86, 2073, 86, - 86, 86, 86, 2079, 86, 86, 86, 2092, 2144, 2094, - 2085, 2086, 2087, 86, 2095, 86, 86, 2088, 86, 2090, - 2089, 2097, 2091, 86, 2093, 2098, 86, 2101, 86, 2099, - 2096, 86, 86, 86, 2105, 86, 86, 2102, 86, 2107, - 86, 2100, 86, 86, 2110, 2111, 86, 86, 2113, 86, - 86, 2103, 86, 2104, 86, 86, 86, 2120, 86, 2118, - 2108, 2115, 2106, 2116, 2109, 86, 86, 2112, 86, 86, - 86, 86, 2119, 86, 2126, 2114, 2117, 2123, 2124, 86, - 86, 86, 2129, 2122, 2131, 86, 2130, 2121, 86, 86, - 86, 86, 2133, 2134, 86, 2137, 2128, 2125, 86, 86, + 2076, 2084, 2079, 86, 86, 86, 86, 2093, 86, 2080, + 86, 2097, 3557, 86, 2095, 2086, 2087, 2088, 86, 2096, + 86, 86, 2089, 2091, 2090, 2098, 2092, 86, 2094, 2099, + 2102, 86, 2100, 2101, 86, 86, 86, 2106, 86, 86, + 2103, 86, 2108, 86, 86, 86, 2111, 2112, 86, 86, + 2114, 86, 86, 86, 2104, 86, 2105, 86, 86, 2121, + 86, 2119, 2116, 2109, 2117, 2107, 2110, 86, 86, 2113, + 86, 86, 86, 86, 2120, 86, 2127, 2115, 2118, 2124, + 2125, 86, 86, 86, 2130, 2123, 2132, 86, 2131, 2122, + 86, 86, 86, 86, 2134, 2135, 86, 2138, 2129, 2126, - 2135, 86, 2138, 86, 86, 2127, 86, 86, 86, 2132, - 2136, 2139, 86, 2140, 2141, 86, 86, 2147, 2148, 2149, - 2143, 86, 86, 86, 86, 86, 2142, 2152, 86, 86, - 2145, 86, 86, 2157, 86, 86, 2151, 2156, 86, 86, - 86, 2146, 2150, 2153, 2162, 86, 2163, 3542, 2154, 86, - 86, 2155, 86, 2160, 2159, 2158, 2164, 86, 2161, 2166, - 86, 2165, 86, 2170, 86, 86, 2167, 86, 2168, 86, - 2171, 86, 86, 2169, 2174, 86, 2178, 86, 86, 2172, - 86, 3542, 86, 86, 86, 2181, 2173, 2183, 86, 86, - 2182, 2175, 2176, 86, 2184, 2177, 2179, 86, 2180, 86, + 86, 86, 2136, 86, 2139, 86, 86, 2128, 86, 86, + 86, 2133, 2137, 2140, 86, 2141, 2142, 2144, 86, 86, + 86, 2146, 2145, 86, 2149, 2150, 2151, 86, 2143, 86, + 86, 86, 86, 86, 2154, 86, 86, 2147, 2159, 86, + 86, 2158, 86, 86, 2153, 86, 2148, 2152, 86, 2164, + 2155, 86, 2165, 2156, 86, 86, 86, 2157, 2162, 2169, + 2166, 2161, 2168, 86, 2160, 2167, 86, 2163, 2172, 86, + 86, 86, 86, 86, 86, 86, 86, 2170, 86, 2176, + 2180, 86, 2171, 86, 86, 2174, 86, 86, 2183, 86, + 2181, 2173, 2175, 2187, 2184, 2177, 2178, 86, 2179, 2182, - 2187, 2185, 2190, 86, 2189, 2188, 2191, 86, 2186, 2192, - 2194, 2195, 86, 86, 2193, 86, 86, 86, 2197, 86, - 2199, 86, 86, 86, 86, 2203, 86, 2201, 86, 2205, - 86, 2198, 86, 2200, 2202, 86, 2207, 86, 2196, 2208, - 86, 170, 86, 86, 86, 86, 2211, 86, 86, 86, - 2216, 2209, 2206, 2204, 2215, 2212, 2213, 2210, 86, 2217, - 2218, 86, 2219, 86, 2214, 2221, 86, 86, 2220, 86, - 86, 86, 2222, 2224, 2223, 86, 86, 86, 86, 2225, - 2226, 2227, 86, 2229, 86, 86, 2233, 86, 2228, 2230, - 2232, 86, 86, 86, 2238, 86, 2231, 2235, 2236, 86, + 2185, 86, 86, 2186, 86, 86, 2188, 2191, 2192, 86, + 2193, 86, 2194, 2196, 3557, 2189, 2197, 2195, 86, 86, + 2190, 86, 86, 86, 2201, 86, 2199, 86, 86, 86, + 86, 2198, 2203, 86, 2205, 2200, 2207, 2202, 86, 2204, + 2209, 86, 86, 2210, 86, 86, 86, 170, 86, 86, + 86, 86, 2213, 86, 2206, 86, 86, 2276, 2217, 2218, + 2208, 2212, 2214, 2215, 2211, 86, 2219, 2216, 2220, 86, + 2221, 86, 2223, 86, 86, 2222, 86, 86, 86, 2224, + 2226, 2225, 86, 86, 86, 86, 2227, 2228, 2229, 86, + 2231, 86, 86, 2235, 86, 2230, 2232, 2234, 86, 86, - 2234, 86, 2237, 86, 86, 86, 86, 86, 86, 2245, - 2243, 86, 2240, 2244, 86, 86, 86, 86, 2250, 86, - 2247, 2239, 2241, 86, 2242, 2246, 86, 86, 2255, 2251, - 2249, 86, 2248, 86, 86, 2253, 86, 2252, 86, 86, - 2256, 2259, 2262, 2254, 86, 2257, 2261, 86, 86, 86, - 2268, 2260, 86, 86, 86, 2258, 86, 86, 2270, 86, - 2263, 2271, 86, 86, 2264, 2265, 86, 2266, 2267, 86, - 2269, 2273, 86, 86, 2274, 2275, 86, 86, 2276, 2278, - 2272, 2279, 86, 2280, 86, 86, 2277, 86, 86, 2281, - 86, 2284, 86, 86, 86, 86, 86, 2285, 86, 86, + 86, 2240, 86, 2233, 2237, 2238, 86, 2236, 86, 2239, + 86, 86, 86, 86, 86, 86, 2247, 2245, 86, 2242, + 2246, 86, 86, 86, 86, 2252, 86, 2249, 2241, 2243, + 86, 2244, 2248, 86, 86, 2257, 2253, 2251, 86, 2250, + 86, 86, 2255, 86, 2254, 86, 86, 2258, 2261, 2264, + 2256, 86, 2259, 2263, 86, 86, 86, 2270, 2262, 86, + 86, 86, 2260, 86, 86, 2272, 86, 2265, 2273, 86, + 86, 2266, 2267, 86, 2268, 2269, 86, 2271, 2275, 86, + 2277, 86, 86, 2278, 86, 2281, 86, 2274, 86, 86, + 2280, 86, 86, 2279, 2288, 2283, 86, 2286, 2284, 86, - 86, 86, 86, 86, 2305, 2283, 2282, 2287, 2288, 2289, - 2290, 86, 86, 2286, 2292, 2297, 86, 2293, 86, 2291, - 2295, 2298, 86, 86, 2296, 86, 2301, 86, 86, 3542, - 2294, 86, 2300, 2302, 2299, 86, 2304, 86, 2303, 86, - 2307, 86, 86, 2306, 2308, 2310, 86, 86, 2309, 2313, - 2311, 2315, 86, 86, 2312, 2316, 86, 86, 2318, 86, - 86, 86, 86, 2321, 86, 2314, 2317, 2320, 86, 2322, - 86, 86, 86, 2323, 2327, 86, 86, 2328, 2324, 2331, - 86, 86, 2319, 86, 2332, 86, 86, 2330, 2325, 2329, - 86, 2326, 2336, 86, 2333, 86, 2337, 2335, 86, 86, + 2282, 2287, 86, 86, 86, 86, 86, 86, 86, 2285, + 86, 2289, 86, 86, 2290, 2295, 2292, 86, 2291, 2296, + 2300, 2294, 2301, 86, 86, 86, 86, 2298, 2304, 2305, + 2302, 2293, 2297, 2299, 86, 86, 86, 2303, 2308, 2307, + 86, 86, 86, 86, 86, 2310, 2306, 86, 2311, 2318, + 86, 2312, 86, 2309, 2316, 86, 2314, 86, 86, 2319, + 86, 2313, 2315, 2317, 2321, 86, 86, 86, 86, 2324, + 86, 2323, 2320, 2325, 86, 2326, 86, 86, 2330, 86, + 86, 86, 86, 2334, 86, 2331, 2322, 86, 2335, 86, + 86, 2333, 2327, 86, 2328, 2332, 86, 2329, 2336, 86, - 2334, 2340, 86, 86, 2341, 2338, 86, 86, 2342, 2346, - 86, 2344, 86, 86, 2348, 86, 2349, 86, 2339, 2345, - 2343, 86, 86, 86, 2347, 86, 2350, 2351, 86, 2353, - 2356, 86, 2354, 86, 86, 2355, 2358, 86, 86, 2352, - 86, 2359, 86, 2361, 86, 2360, 86, 86, 86, 2362, - 2363, 2364, 2357, 2365, 2369, 86, 2368, 2366, 86, 86, - 2367, 86, 86, 86, 86, 86, 86, 86, 86, 2377, - 86, 86, 86, 2381, 86, 2382, 2370, 2371, 2373, 2372, - 2375, 86, 2376, 2378, 2379, 2380, 86, 86, 2374, 86, - 2383, 86, 2384, 2386, 86, 2392, 86, 2387, 86, 86, + 2337, 2338, 2339, 86, 86, 2340, 2344, 2341, 2342, 86, + 86, 86, 86, 2346, 2345, 86, 2350, 86, 86, 2343, + 86, 2352, 86, 2348, 86, 2353, 86, 2355, 2347, 86, + 2351, 2349, 86, 86, 86, 2354, 2357, 86, 2362, 2360, + 86, 86, 2358, 2363, 86, 2359, 86, 2356, 86, 86, + 2365, 86, 2364, 86, 2368, 2361, 2369, 86, 2366, 86, + 2367, 2373, 86, 86, 86, 86, 2370, 86, 2372, 86, + 86, 86, 3557, 86, 86, 86, 86, 2371, 2381, 86, + 86, 2374, 2375, 2376, 2379, 2377, 2380, 2382, 2383, 2387, + 86, 86, 2378, 86, 2384, 2385, 2386, 86, 86, 2388, - 2394, 86, 86, 86, 2388, 2385, 86, 2391, 2393, 2389, - 2397, 86, 86, 86, 170, 2401, 2398, 86, 2403, 2390, - 2395, 86, 2396, 2404, 86, 2399, 86, 2405, 2406, 2407, - 86, 86, 2400, 86, 86, 86, 2402, 2409, 2408, 2410, - 86, 86, 2411, 2417, 2414, 2415, 86, 86, 2416, 2419, - 86, 86, 86, 86, 2421, 86, 2412, 2420, 2422, 86, - 86, 86, 86, 2424, 86, 2423, 2425, 2413, 2418, 86, - 86, 2426, 86, 86, 2427, 86, 86, 2430, 86, 86, - 86, 2428, 86, 2433, 86, 2439, 86, 2437, 86, 2429, - 2432, 86, 2440, 86, 2434, 2435, 2431, 86, 86, 86, + 86, 86, 2391, 2390, 86, 86, 2396, 86, 86, 2398, + 86, 86, 2389, 2392, 2395, 86, 86, 2397, 2393, 2401, + 86, 2402, 2399, 86, 170, 2405, 2394, 86, 3557, 2407, + 2400, 86, 2409, 2403, 2408, 86, 86, 2410, 86, 2411, + 86, 86, 2404, 86, 2414, 86, 2406, 2413, 2412, 86, + 2415, 86, 2419, 86, 86, 2420, 86, 2423, 86, 2422, + 2418, 86, 86, 86, 2416, 86, 2424, 2427, 2421, 86, + 2425, 2426, 86, 2428, 86, 2417, 86, 86, 2429, 86, + 2431, 86, 86, 2433, 86, 2430, 2434, 86, 86, 86, + 86, 86, 2437, 86, 86, 2441, 86, 2432, 2444, 2436, - 2436, 86, 2442, 86, 86, 86, 2438, 86, 2441, 2447, - 86, 2445, 2450, 86, 86, 2451, 2444, 2443, 2448, 86, - 2446, 2449, 86, 86, 86, 86, 2461, 86, 86, 2452, - 86, 86, 86, 2453, 86, 86, 2465, 86, 2454, 2459, - 86, 86, 2466, 2457, 2463, 2455, 2458, 2456, 2464, 2460, - 2462, 2468, 86, 86, 2471, 86, 86, 2467, 2469, 2470, - 86, 86, 2474, 2475, 86, 86, 86, 2476, 86, 2472, - 2477, 86, 86, 2473, 86, 2480, 86, 2481, 2483, 86, - 2482, 2478, 2484, 86, 86, 2479, 86, 86, 86, 2485, - 86, 2486, 2490, 86, 2491, 86, 2487, 2493, 86, 86, + 2443, 86, 86, 86, 86, 2435, 2438, 2439, 2446, 2440, + 86, 2445, 86, 86, 86, 2442, 86, 86, 2451, 2454, + 86, 86, 2448, 86, 2449, 2455, 86, 2452, 2447, 2450, + 86, 86, 86, 86, 2453, 86, 86, 2465, 86, 86, + 2456, 86, 2457, 86, 86, 2458, 86, 2463, 2470, 86, + 2494, 2461, 2467, 2459, 2462, 2460, 2466, 2464, 2468, 86, + 2472, 86, 86, 86, 86, 2469, 2474, 2473, 86, 2471, + 86, 86, 2478, 2479, 86, 86, 86, 2475, 2480, 2481, + 86, 86, 2476, 2477, 86, 2484, 86, 2485, 86, 86, + 2482, 2488, 86, 86, 2483, 2489, 86, 2486, 2490, 86, - 2489, 2495, 86, 86, 86, 86, 86, 2488, 86, 2492, - 2497, 2498, 86, 2499, 86, 86, 86, 2494, 2496, 86, - 2500, 2502, 2503, 86, 2501, 2506, 86, 86, 2505, 2508, - 86, 86, 86, 86, 86, 2504, 2510, 2512, 2507, 2511, - 86, 2513, 2515, 86, 86, 2509, 86, 86, 2518, 86, - 86, 2516, 2521, 86, 86, 86, 2514, 86, 86, 2517, - 86, 86, 2519, 2528, 2525, 2526, 86, 86, 2520, 86, - 2522, 86, 2524, 86, 2527, 86, 2529, 2523, 2531, 86, - 2533, 86, 2530, 86, 86, 2534, 86, 2539, 86, 2532, - 86, 86, 2541, 2535, 2542, 2545, 86, 2540, 2537, 2536, + 2487, 86, 2495, 86, 2491, 2496, 86, 86, 86, 2492, + 2498, 86, 86, 2500, 86, 86, 2503, 86, 2504, 86, + 2502, 2493, 86, 2501, 86, 86, 2497, 86, 86, 86, + 2499, 2511, 86, 2506, 2510, 86, 2505, 2513, 86, 86, + 86, 2508, 2507, 86, 86, 2515, 86, 2509, 86, 2516, + 86, 2517, 86, 2518, 2512, 2520, 86, 2514, 86, 86, + 2523, 2522, 86, 2521, 86, 2524, 2526, 86, 2519, 86, + 86, 86, 2532, 86, 86, 2531, 86, 86, 2525, 2528, + 86, 2534, 2527, 86, 86, 2530, 2537, 86, 86, 86, + 86, 2539, 2529, 2533, 86, 2535, 86, 2538, 2536, 86, - 86, 86, 86, 86, 86, 2547, 86, 2548, 2546, 2543, - 2538, 2544, 86, 86, 86, 86, 86, 2550, 2552, 2554, - 2555, 2556, 86, 2558, 2559, 86, 86, 2551, 2549, 86, - 86, 86, 86, 2562, 86, 86, 2563, 2557, 2553, 86, - 2564, 2561, 86, 86, 86, 2567, 2560, 2566, 86, 86, - 86, 86, 2568, 2569, 2573, 2574, 86, 2565, 2570, 2571, - 86, 86, 2572, 86, 86, 86, 2579, 2575, 2580, 86, - 2581, 2576, 86, 2578, 86, 86, 2577, 170, 2582, 86, - 2584, 2583, 2585, 86, 86, 2590, 86, 86, 86, 86, - 86, 86, 3542, 86, 86, 2586, 2597, 2587, 2592, 2588, + 2545, 86, 2540, 86, 86, 2547, 2551, 2541, 2542, 2543, + 2546, 86, 86, 86, 2548, 86, 2552, 86, 2553, 86, + 2554, 86, 2544, 86, 86, 86, 2558, 86, 86, 2549, + 2560, 2550, 2556, 2561, 86, 2564, 86, 2565, 86, 2562, + 2568, 86, 2555, 86, 2557, 86, 86, 86, 2566, 86, + 2559, 2563, 2569, 2567, 2570, 86, 86, 86, 86, 2573, + 86, 86, 86, 86, 86, 86, 2574, 2575, 2572, 2576, + 2571, 2577, 2579, 2580, 2584, 2578, 86, 3557, 86, 86, + 2581, 86, 2585, 2582, 2583, 2586, 86, 2587, 86, 86, + 2590, 86, 86, 170, 86, 2588, 86, 2589, 2591, 86, - 2589, 86, 2591, 2593, 2594, 2595, 2596, 86, 86, 2601, - 86, 2606, 2598, 86, 2602, 2603, 86, 86, 86, 86, - 2600, 2599, 2604, 2605, 2607, 86, 2609, 86, 86, 86, - 86, 86, 2611, 86, 2608, 86, 86, 2615, 2616, 86, - 86, 2612, 2610, 86, 86, 2618, 86, 2613, 86, 86, - 2619, 2620, 86, 2617, 2614, 2621, 86, 2622, 2623, 86, - 86, 2627, 86, 2625, 2626, 86, 86, 86, 2624, 86, - 86, 2629, 86, 86, 86, 86, 2637, 2634, 2628, 86, - 2636, 86, 86, 86, 2639, 2638, 2633, 2630, 86, 2631, - 2632, 86, 86, 86, 2635, 2645, 86, 2643, 86, 2640, + 2596, 86, 86, 86, 86, 86, 86, 86, 2604, 86, + 2594, 2597, 2592, 2598, 2593, 2595, 86, 2599, 2600, 2602, + 86, 2601, 3557, 2603, 2607, 86, 86, 2608, 2606, 2605, + 2609, 86, 86, 86, 2612, 2610, 2613, 86, 2611, 86, + 86, 86, 86, 2615, 86, 86, 2614, 86, 2617, 86, + 86, 2621, 2622, 2616, 86, 2619, 86, 2618, 86, 2624, + 86, 86, 86, 86, 2625, 2626, 2627, 86, 2620, 86, + 2623, 86, 2629, 86, 2628, 2633, 86, 2632, 86, 86, + 2630, 2631, 86, 86, 2635, 86, 86, 86, 86, 86, + 2643, 2634, 2640, 86, 2642, 86, 86, 86, 2645, 2644, - 86, 86, 2649, 2648, 86, 86, 2651, 2641, 86, 86, - 2642, 86, 2646, 2650, 2644, 86, 2654, 2647, 2652, 86, - 86, 2659, 2655, 86, 2657, 2653, 86, 86, 86, 86, - 2658, 2661, 86, 2663, 86, 86, 86, 86, 2662, 86, - 2660, 86, 2667, 86, 86, 2674, 2656, 86, 86, 2670, - 2665, 86, 2671, 2664, 86, 2666, 2672, 86, 2673, 86, - 86, 2676, 86, 86, 2669, 86, 86, 2668, 2675, 86, - 2677, 2679, 2681, 86, 2684, 86, 86, 2682, 86, 86, - 2686, 86, 2680, 86, 2678, 2683, 86, 2685, 2689, 86, - 86, 86, 2693, 2690, 2687, 86, 2688, 86, 2691, 2694, + 2639, 86, 2636, 2637, 86, 2638, 86, 2641, 86, 2651, + 86, 2649, 86, 2646, 86, 86, 86, 2657, 86, 2655, + 2647, 2654, 86, 2648, 2652, 86, 2656, 86, 86, 2650, + 2653, 2658, 86, 2660, 86, 86, 86, 2661, 2662, 86, + 2664, 2659, 86, 2666, 2668, 86, 2665, 86, 2667, 86, + 2670, 86, 86, 86, 2663, 86, 2669, 86, 86, 86, + 86, 86, 2674, 2679, 86, 2677, 2678, 2672, 2680, 86, + 2671, 2673, 2681, 86, 86, 2683, 86, 86, 86, 86, + 2676, 86, 86, 86, 2675, 2688, 2686, 86, 86, 2691, + 86, 86, 2684, 2682, 86, 2689, 2692, 2693, 2687, 2685, - 86, 2692, 2695, 86, 86, 86, 86, 86, 2700, 86, - 2699, 86, 2697, 2696, 86, 86, 2704, 2698, 86, 86, - 3542, 2701, 86, 2702, 2707, 86, 2703, 2708, 86, 2709, - 86, 2710, 86, 2711, 86, 2705, 86, 2712, 2706, 86, - 2713, 2714, 86, 2715, 86, 2716, 86, 2717, 86, 86, - 86, 2718, 86, 86, 2724, 86, 86, 2726, 86, 2727, - 86, 2720, 86, 86, 86, 86, 86, 86, 2719, 2723, - 2721, 86, 2730, 2722, 2728, 2725, 2729, 86, 2731, 86, - 2736, 86, 2732, 86, 2733, 86, 2737, 2734, 2738, 86, - 86, 2735, 86, 86, 86, 86, 2745, 86, 170, 86, + 2690, 2694, 86, 2697, 86, 86, 86, 86, 2698, 86, + 86, 2701, 2695, 2702, 86, 86, 86, 2696, 86, 86, + 2703, 86, 86, 86, 2708, 2699, 2707, 2700, 2705, 86, + 86, 2706, 86, 86, 2704, 86, 86, 2709, 2712, 2716, + 86, 2715, 2711, 2710, 2717, 86, 2718, 86, 2719, 86, + 86, 86, 2713, 86, 86, 2714, 86, 2723, 2722, 86, + 2724, 86, 2720, 86, 2725, 86, 2726, 86, 86, 2721, + 86, 2732, 86, 86, 2734, 86, 86, 2728, 2735, 86, + 86, 2727, 86, 86, 86, 86, 2731, 2729, 2737, 2730, + 2738, 2736, 2733, 86, 2739, 86, 2744, 86, 2741, 86, - 2747, 86, 86, 2741, 86, 2740, 2748, 2743, 86, 2739, - 2746, 86, 86, 86, 86, 2754, 2742, 2744, 2833, 2749, - 2751, 86, 86, 2750, 2753, 86, 2756, 2755, 2758, 86, - 2757, 2759, 86, 2752, 86, 2760, 86, 2761, 86, 2762, - 2763, 86, 86, 86, 86, 86, 86, 86, 86, 86, - 86, 86, 2764, 2773, 86, 86, 86, 2771, 2766, 86, - 2777, 2765, 86, 2768, 2767, 2778, 86, 2770, 2769, 2772, - 2774, 86, 2775, 2776, 2782, 86, 2779, 86, 2780, 86, - 2781, 2784, 86, 86, 86, 86, 2783, 86, 86, 86, - 86, 86, 2788, 86, 2795, 86, 86, 2785, 2796, 86, + 2746, 86, 86, 86, 2740, 2742, 86, 86, 2745, 170, + 86, 86, 86, 86, 2753, 2743, 86, 2755, 86, 2749, + 86, 2754, 2756, 2748, 2751, 86, 86, 86, 2747, 86, + 86, 2750, 2762, 2752, 86, 2757, 2759, 86, 86, 2764, + 2758, 86, 2765, 86, 2763, 2766, 86, 86, 2760, 2772, + 2761, 2767, 86, 86, 2768, 86, 2769, 86, 2770, 2771, + 86, 86, 2773, 86, 86, 86, 86, 2775, 86, 86, + 2781, 86, 86, 86, 2779, 2774, 86, 2785, 86, 2776, + 2786, 86, 2790, 86, 2778, 2777, 2780, 86, 86, 2782, + 2783, 2784, 2787, 2788, 2792, 86, 2789, 2791, 86, 86, - 2794, 2786, 2787, 2789, 86, 2790, 2792, 2791, 86, 2802, - 2793, 2800, 86, 86, 2799, 86, 2797, 2801, 86, 86, - 86, 86, 2798, 86, 86, 86, 3542, 86, 2807, 2812, - 86, 2803, 2810, 86, 2804, 2806, 86, 86, 2811, 2805, - 86, 86, 2813, 86, 2808, 2809, 2814, 86, 86, 86, - 2816, 86, 2815, 86, 2820, 2818, 2817, 86, 2821, 86, - 86, 86, 2827, 86, 2826, 86, 86, 86, 2819, 2830, - 86, 2822, 86, 86, 2836, 86, 2823, 86, 2825, 2824, - 2828, 2835, 2832, 2831, 2829, 86, 86, 86, 2834, 86, - 2841, 86, 86, 86, 86, 86, 86, 2845, 2837, 2844, + 86, 86, 86, 86, 86, 86, 86, 86, 2796, 2803, + 86, 2804, 86, 86, 2802, 3557, 2793, 2794, 2795, 2797, + 2798, 2799, 2800, 86, 2801, 86, 2808, 86, 2809, 86, + 2810, 2807, 86, 2805, 86, 86, 86, 86, 86, 86, + 86, 2806, 86, 2815, 86, 86, 2820, 86, 86, 2812, + 2811, 2814, 2819, 2817, 2813, 2821, 86, 2823, 86, 2816, + 2818, 86, 86, 2822, 2824, 86, 86, 2826, 86, 86, + 86, 2825, 86, 2829, 2830, 86, 86, 2827, 86, 2836, + 86, 2835, 86, 86, 2839, 86, 2828, 86, 86, 86, + 2831, 2832, 86, 2842, 2834, 2833, 86, 2837, 2840, 86, - 86, 2838, 2843, 86, 2842, 2846, 86, 2839, 2849, 2840, - 2848, 86, 86, 2847, 86, 86, 2851, 2854, 86, 86, - 2855, 2850, 86, 2857, 86, 86, 2852, 86, 86, 86, - 86, 2864, 86, 86, 86, 2853, 86, 86, 2858, 2861, - 2859, 2860, 2862, 2863, 2856, 2867, 86, 86, 86, 2865, - 86, 2866, 2868, 2869, 86, 86, 2873, 86, 86, 2871, - 86, 86, 86, 2872, 2870, 86, 2874, 2877, 2875, 86, - 2878, 2880, 86, 2876, 2881, 86, 2879, 86, 2884, 170, - 86, 86, 2882, 86, 86, 2889, 2886, 2885, 2883, 86, - 86, 86, 86, 2891, 2890, 86, 2894, 86, 2895, 86, + 86, 2838, 2844, 2841, 2845, 2846, 86, 2843, 86, 86, + 86, 86, 2847, 2851, 86, 86, 86, 86, 86, 2855, + 2853, 2854, 86, 2848, 2856, 86, 86, 2852, 86, 2849, + 2850, 2858, 86, 2859, 86, 2857, 86, 86, 2861, 2864, + 86, 86, 2865, 2860, 2867, 86, 2863, 86, 2862, 86, + 86, 86, 86, 2874, 86, 86, 86, 86, 3557, 2866, + 2868, 2871, 2869, 2870, 2872, 2873, 2877, 86, 86, 86, + 86, 2875, 2876, 2878, 2879, 86, 86, 86, 86, 86, + 2881, 86, 86, 86, 2880, 2882, 86, 2884, 2887, 2885, + 86, 2888, 2890, 86, 2886, 2883, 86, 2889, 2891, 86, - 2893, 2887, 2888, 86, 2899, 2892, 2897, 86, 86, 2900, - 86, 2898, 86, 86, 86, 2904, 2896, 2901, 2902, 86, - 86, 86, 86, 2905, 86, 2906, 86, 86, 2903, 2911, - 2912, 2907, 86, 86, 2909, 86, 86, 2913, 86, 2908, - 86, 86, 86, 2916, 2917, 2914, 86, 2915, 2910, 86, - 86, 2919, 86, 86, 2918, 2920, 86, 2921, 86, 86, - 86, 2926, 86, 2928, 86, 2924, 2923, 2922, 2925, 2930, - 86, 2927, 86, 86, 86, 86, 2931, 86, 2935, 86, - 86, 2936, 2929, 86, 86, 86, 2940, 86, 86, 86, - 86, 2932, 2938, 2933, 2944, 86, 2934, 2945, 86, 2937, + 86, 2892, 2894, 170, 86, 86, 86, 2895, 2899, 2893, + 2896, 86, 86, 2901, 86, 86, 2900, 3557, 86, 2904, + 86, 86, 2897, 2903, 2898, 2905, 86, 2907, 86, 86, + 2902, 2909, 2908, 86, 2906, 86, 2910, 86, 2911, 86, + 2912, 2914, 86, 86, 86, 86, 2915, 86, 2916, 86, + 86, 86, 2921, 2913, 2917, 2922, 2923, 2919, 86, 2918, + 86, 86, 86, 86, 86, 86, 86, 2927, 2926, 2925, + 86, 2920, 2924, 86, 86, 2929, 86, 2928, 2930, 2931, + 86, 86, 86, 86, 2932, 86, 2936, 86, 86, 2933, + 2934, 2935, 2937, 2938, 2940, 86, 86, 86, 2939, 86, - 2939, 2947, 86, 2941, 2942, 2948, 86, 86, 2943, 2950, - 2952, 86, 2951, 86, 86, 86, 86, 86, 86, 2957, - 2946, 2954, 86, 86, 2949, 86, 2955, 86, 86, 86, - 2958, 2956, 2959, 86, 2962, 86, 2960, 3542, 2961, 2953, - 2964, 86, 2965, 86, 2966, 86, 86, 2963, 86, 86, - 2967, 2970, 86, 2968, 86, 2971, 86, 2974, 2969, 2972, - 86, 86, 2975, 86, 86, 2978, 2979, 86, 2973, 2980, - 86, 86, 2976, 2981, 86, 86, 86, 86, 2982, 2985, - 86, 2977, 86, 86, 2983, 2988, 86, 86, 2989, 2984, - 2990, 86, 2992, 86, 86, 2986, 86, 86, 2991, 2996, + 86, 2941, 2945, 86, 2946, 86, 2942, 86, 86, 86, + 86, 2951, 86, 86, 86, 86, 2943, 2948, 2944, 2955, + 2956, 86, 2949, 86, 2947, 2950, 2958, 86, 2952, 2953, + 2959, 2961, 86, 2954, 2962, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 2968, 2960, 2963, 2965, 2957, 2966, + 86, 86, 86, 86, 2967, 2969, 86, 2970, 2972, 86, + 86, 2974, 86, 2983, 2964, 2971, 2976, 86, 2977, 86, + 86, 2973, 2978, 86, 2979, 86, 86, 2982, 86, 86, + 2975, 2980, 86, 2986, 2981, 86, 86, 2984, 2987, 86, + 86, 2985, 86, 2990, 2991, 86, 86, 2988, 2992, 86, - 2997, 86, 2987, 2999, 86, 86, 86, 2993, 2998, 86, - 86, 2995, 3001, 86, 2994, 3000, 86, 3002, 86, 86, - 3007, 86, 86, 86, 86, 3006, 86, 3009, 3068, 3003, - 3010, 86, 86, 3004, 86, 86, 3005, 3011, 3013, 86, - 86, 86, 3012, 3015, 86, 3016, 3008, 3014, 86, 86, - 86, 3023, 86, 3019, 86, 86, 3017, 3018, 3025, 3020, - 86, 86, 86, 86, 3022, 86, 3026, 3030, 3024, 3021, - 3029, 3032, 3031, 86, 3027, 86, 3033, 86, 3035, 86, - 3028, 3041, 3034, 86, 3036, 86, 3037, 86, 3038, 86, - 3039, 86, 3040, 86, 86, 3043, 86, 86, 3042, 86, + 2993, 86, 86, 2995, 86, 2994, 2989, 2997, 86, 2996, + 86, 3000, 86, 86, 3001, 3002, 86, 86, 3004, 86, + 86, 86, 2998, 86, 86, 3008, 3009, 86, 3010, 3011, + 2999, 86, 3003, 3005, 86, 86, 86, 3007, 3013, 3006, + 86, 3012, 86, 3014, 86, 86, 3019, 86, 86, 86, + 86, 3018, 86, 3021, 3022, 86, 86, 3015, 3024, 86, + 3016, 3023, 3017, 86, 86, 86, 3025, 3027, 86, 3028, + 3031, 86, 3020, 3026, 86, 86, 3029, 3030, 86, 3035, + 86, 86, 86, 86, 86, 3037, 3047, 86, 86, 3032, + 86, 3053, 3034, 3038, 3033, 3036, 3041, 3039, 86, 3042, - 86, 86, 3046, 86, 86, 3048, 3052, 86, 3053, 86, - 3045, 86, 3049, 86, 3054, 3056, 86, 86, 3047, 86, - 3044, 3050, 3058, 86, 3051, 86, 3057, 3060, 86, 86, - 3059, 3055, 86, 86, 86, 3065, 3066, 86, 3061, 3067, - 86, 3062, 3063, 3064, 86, 86, 86, 86, 86, 3073, - 86, 86, 86, 3069, 3074, 86, 3077, 3071, 86, 3076, - 86, 3075, 3072, 3078, 3070, 3079, 86, 3081, 86, 86, - 86, 3085, 86, 86, 3080, 86, 3083, 86, 86, 86, - 86, 86, 3086, 3082, 3089, 3092, 86, 3087, 3084, 3090, - 86, 86, 86, 3093, 86, 3095, 86, 3096, 3091, 86, + 3557, 3044, 86, 3040, 3043, 86, 3045, 86, 86, 3046, + 86, 3048, 86, 3049, 86, 3050, 86, 3051, 86, 3052, + 86, 86, 3055, 86, 3056, 3054, 86, 3059, 3058, 86, + 86, 3060, 86, 3064, 86, 3057, 3065, 86, 3061, 86, + 86, 86, 3066, 3069, 86, 86, 3067, 86, 3071, 86, + 3062, 86, 3063, 86, 3070, 86, 3072, 3073, 86, 3068, + 86, 86, 3074, 3078, 3075, 3079, 86, 3080, 86, 3076, + 3077, 86, 86, 86, 86, 3081, 86, 3086, 86, 3557, + 86, 3082, 3087, 86, 86, 3084, 86, 3089, 3090, 86, + 86, 3085, 3083, 3088, 3091, 3092, 86, 3094, 86, 86, - 3097, 3099, 3088, 3098, 86, 86, 86, 3094, 86, 3102, - 3104, 86, 3103, 3105, 86, 3106, 86, 3100, 86, 3101, - 86, 3114, 86, 86, 3111, 86, 3108, 3107, 3110, 86, - 86, 86, 86, 86, 3112, 86, 3113, 86, 86, 3109, - 3118, 3120, 86, 3115, 3116, 3122, 86, 86, 86, 86, - 3126, 86, 3123, 86, 3117, 3119, 3124, 86, 3125, 86, - 86, 3127, 86, 3121, 3131, 86, 86, 86, 86, 86, - 86, 3135, 3128, 86, 3129, 3132, 86, 86, 3136, 3133, - 3130, 3134, 3140, 86, 3139, 86, 3137, 86, 3142, 86, - 86, 86, 3138, 86, 3143, 3146, 86, 3148, 86, 3149, + 3093, 86, 3098, 86, 3095, 86, 86, 86, 86, 86, + 3105, 86, 86, 3102, 3099, 86, 86, 86, 3100, 3097, + 3103, 86, 3108, 86, 3096, 86, 3109, 3106, 3112, 3104, + 86, 3110, 3101, 3107, 3111, 86, 86, 86, 3115, 3117, + 86, 3116, 3118, 86, 3119, 86, 86, 86, 3113, 86, + 3114, 86, 3124, 86, 86, 3120, 3123, 86, 86, 3125, + 3127, 86, 3126, 86, 86, 86, 86, 3121, 3122, 86, + 3131, 3128, 3133, 3135, 86, 3129, 86, 86, 86, 86, + 3136, 86, 3137, 86, 3132, 3130, 3138, 86, 3139, 86, + 86, 3144, 86, 86, 3134, 86, 86, 86, 3140, 86, - 86, 3151, 86, 3141, 86, 86, 86, 3144, 86, 86, - 3147, 3154, 86, 86, 3150, 86, 3145, 3156, 3157, 86, - 3152, 3153, 3159, 86, 3155, 3160, 86, 3163, 86, 3158, - 86, 86, 3166, 86, 3167, 86, 86, 3169, 3161, 86, - 86, 3170, 3162, 86, 3164, 3172, 86, 3165, 3173, 86, - 86, 86, 3176, 86, 86, 3168, 86, 86, 3181, 86, - 86, 3171, 86, 3179, 86, 3174, 86, 3178, 3185, 86, - 86, 3175, 3177, 3187, 3183, 86, 86, 3180, 3182, 3188, - 3184, 3186, 86, 3189, 86, 3192, 3195, 3190, 3193, 86, - 86, 86, 86, 3194, 86, 86, 3198, 86, 86, 86, + 86, 3148, 86, 3143, 3141, 3142, 3145, 86, 3146, 3147, + 86, 3149, 3153, 86, 86, 3150, 86, 3155, 3152, 3151, + 86, 86, 86, 3156, 3159, 86, 3161, 86, 86, 3163, + 86, 86, 86, 3154, 3162, 3165, 86, 86, 3157, 86, + 86, 3160, 3171, 86, 3168, 86, 86, 3158, 3166, 86, + 3170, 3174, 3164, 3167, 86, 86, 3169, 86, 3173, 86, + 3177, 86, 86, 3180, 86, 3181, 3172, 86, 86, 86, + 3183, 86, 86, 3184, 3176, 3178, 86, 3175, 3186, 86, + 86, 3179, 3187, 86, 3190, 86, 86, 3182, 86, 86, + 3195, 3185, 3189, 86, 86, 3188, 86, 3192, 3193, 86, - 3197, 3201, 86, 3199, 3191, 3204, 86, 86, 86, 86, - 86, 86, 3196, 3209, 86, 86, 86, 3225, 3200, 3202, - 3203, 3205, 86, 86, 3208, 86, 3206, 3213, 86, 3214, - 86, 3212, 3211, 86, 3210, 3207, 3215, 86, 3216, 3217, - 86, 3219, 86, 3220, 86, 3218, 3221, 86, 3222, 86, - 86, 86, 86, 3227, 86, 86, 86, 3226, 86, 86, - 86, 86, 3233, 3223, 3234, 86, 86, 86, 86, 86, - 3240, 86, 3241, 86, 3228, 86, 86, 3224, 3229, 3231, - 3230, 3232, 3237, 86, 3239, 3243, 3236, 86, 86, 3238, - 86, 86, 3235, 3246, 3242, 3248, 86, 3249, 86, 86, + 3199, 86, 86, 86, 3191, 3557, 3197, 86, 3194, 86, + 3201, 86, 3196, 86, 3202, 86, 3203, 3200, 3206, 3198, + 86, 3204, 3209, 3205, 86, 3207, 86, 86, 86, 86, + 3208, 3210, 3212, 86, 3211, 86, 3215, 86, 86, 3214, + 3213, 86, 86, 3218, 86, 86, 86, 86, 3223, 86, + 3219, 86, 86, 86, 3216, 3217, 3227, 86, 3230, 3220, + 3222, 3226, 3228, 86, 86, 3224, 86, 3225, 3229, 86, + 3221, 3232, 3233, 86, 3234, 86, 3235, 86, 3231, 3236, + 86, 86, 86, 3239, 86, 86, 3241, 86, 86, 86, + 3240, 3242, 86, 86, 3237, 86, 86, 86, 3248, 3249, - 86, 3252, 86, 3244, 3250, 86, 3245, 86, 3255, 86, - 3254, 3247, 86, 86, 3251, 86, 3257, 3253, 3256, 86, - 3258, 86, 86, 86, 86, 86, 86, 3261, 86, 86, - 3263, 86, 86, 3264, 86, 3262, 86, 86, 86, 3259, - 86, 3260, 3273, 3274, 86, 3265, 3542, 3269, 3266, 3267, - 3268, 3270, 3271, 3276, 86, 86, 86, 3272, 3279, 86, - 3275, 3277, 3281, 86, 3278, 3282, 86, 3280, 86, 3284, - 86, 86, 3283, 86, 3287, 86, 3285, 3288, 86, 3289, - 3290, 86, 86, 3291, 3292, 3296, 86, 3293, 86, 86, - 3294, 3295, 3286, 86, 3297, 86, 3299, 86, 86, 86, + 86, 86, 86, 3243, 86, 86, 86, 86, 3238, 86, + 3244, 3255, 86, 86, 3246, 3245, 3254, 86, 3247, 3252, + 3258, 3251, 3256, 86, 3253, 3260, 86, 3250, 86, 3259, + 86, 3257, 86, 3261, 3263, 86, 3264, 86, 3262, 86, + 86, 3267, 3268, 86, 3265, 86, 3266, 86, 3269, 3270, + 86, 86, 86, 86, 86, 86, 3271, 3272, 86, 3273, + 3276, 86, 86, 3274, 3277, 3275, 3279, 3278, 86, 86, + 86, 86, 86, 86, 86, 86, 3288, 86, 3291, 86, + 3289, 3280, 86, 3557, 86, 86, 3284, 3292, 3281, 3282, + 3283, 3285, 3286, 86, 3287, 86, 3294, 3290, 3295, 3293, - 86, 3302, 86, 86, 3298, 86, 3306, 86, 86, 86, - 3305, 86, 86, 3301, 86, 86, 3300, 86, 3309, 3310, - 86, 3311, 3303, 3304, 86, 3314, 3315, 86, 3307, 3312, - 86, 3317, 86, 3316, 3308, 3313, 3318, 86, 3319, 86, - 86, 86, 86, 3324, 86, 3321, 3326, 3320, 3325, 86, - 3322, 86, 86, 3323, 86, 86, 86, 3333, 86, 3328, - 3330, 3331, 3334, 86, 3336, 86, 86, 3327, 86, 3335, - 3337, 86, 3329, 3332, 86, 3340, 86, 3341, 86, 3339, - 86, 3338, 3343, 86, 3344, 86, 3345, 86, 86, 3342, - 3346, 86, 3347, 86, 3348, 86, 3349, 86, 3350, 86, + 3296, 86, 3297, 86, 86, 3299, 86, 86, 3298, 3302, + 86, 86, 3300, 3414, 3301, 3303, 86, 3304, 3305, 86, + 86, 3306, 3307, 3311, 86, 3308, 86, 3309, 3310, 86, + 86, 86, 3314, 86, 3312, 86, 86, 86, 3317, 86, + 3313, 86, 86, 3321, 86, 86, 86, 3320, 86, 86, + 3316, 86, 86, 3315, 86, 3324, 3325, 86, 3326, 3318, + 86, 3319, 3329, 3330, 86, 3322, 3327, 86, 3332, 3331, + 86, 3323, 3328, 3333, 86, 3334, 86, 86, 86, 86, + 3341, 86, 3336, 3339, 86, 3335, 86, 3337, 3340, 86, + 3338, 86, 86, 86, 3348, 86, 3343, 3345, 3346, 86, - 86, 3353, 86, 3354, 86, 86, 86, 86, 86, 3352, - 3358, 86, 86, 86, 3351, 3355, 86, 3356, 3360, 86, - 86, 3364, 86, 3361, 3365, 86, 3362, 3357, 3363, 3367, - 86, 3359, 86, 86, 86, 86, 3369, 3366, 86, 3371, - 86, 3374, 86, 3373, 86, 86, 86, 86, 86, 3376, - 3368, 86, 86, 3372, 86, 86, 3375, 3380, 3382, 86, - 3370, 3381, 3379, 86, 3377, 86, 3378, 86, 3385, 86, - 3383, 86, 3386, 3388, 86, 3389, 86, 86, 3387, 3390, - 86, 86, 86, 86, 86, 3384, 3392, 3393, 86, 3398, - 3391, 3394, 86, 86, 3399, 3395, 86, 3401, 86, 3397, + 3349, 86, 3351, 86, 3342, 3344, 86, 3350, 3352, 86, + 3347, 86, 3355, 86, 3353, 86, 3354, 3356, 86, 3358, + 86, 3359, 86, 86, 3357, 3360, 86, 3361, 86, 3362, + 86, 3363, 86, 3364, 86, 3365, 86, 86, 3368, 86, + 3369, 86, 86, 86, 86, 86, 3367, 3373, 86, 3366, + 86, 3370, 3375, 86, 86, 3371, 86, 86, 3379, 86, + 3376, 3380, 86, 86, 3372, 3382, 86, 3377, 3378, 3374, + 86, 86, 86, 3384, 3381, 86, 3386, 86, 3389, 86, + 3388, 3383, 86, 86, 86, 86, 86, 3391, 86, 86, + 3387, 86, 3395, 3390, 86, 3397, 86, 3385, 3396, 86, - 86, 86, 86, 86, 86, 3396, 86, 86, 3400, 86, - 86, 3402, 3410, 3408, 3413, 86, 86, 3405, 86, 3403, - 3404, 3407, 3409, 3412, 86, 86, 86, 86, 3406, 3415, - 3411, 3418, 86, 86, 3420, 86, 3414, 86, 3421, 3416, - 3422, 86, 3419, 3423, 86, 86, 3417, 3425, 86, 86, - 86, 3426, 86, 86, 3427, 3428, 3431, 86, 86, 86, - 86, 86, 86, 86, 3424, 3434, 3435, 86, 3430, 86, - 3433, 3432, 3437, 86, 3438, 86, 3439, 3429, 86, 3436, - 3441, 86, 3440, 86, 3442, 3444, 86, 86, 3445, 86, - 86, 3446, 3448, 3449, 86, 86, 3443, 86, 86, 86, + 86, 86, 3392, 3393, 3394, 3400, 86, 86, 86, 3398, + 3401, 86, 3402, 3403, 86, 3404, 86, 3405, 86, 86, + 3407, 86, 3399, 3408, 3406, 86, 3409, 86, 86, 86, + 3416, 3411, 3413, 86, 86, 3410, 3412, 86, 86, 86, + 86, 86, 86, 3415, 86, 86, 3417, 3425, 86, 3423, + 3428, 86, 86, 3418, 3420, 3419, 3422, 3424, 86, 86, + 3557, 86, 86, 3427, 3421, 3426, 3430, 86, 3429, 3433, + 86, 3434, 3432, 3431, 3435, 86, 86, 3436, 3437, 86, + 3438, 86, 86, 86, 86, 86, 3439, 3441, 3442, 86, + 3443, 86, 3446, 86, 86, 86, 86, 86, 86, 3449, - 3454, 86, 3453, 86, 3450, 3455, 86, 3451, 3447, 86, - 86, 86, 86, 86, 3452, 86, 3459, 86, 3461, 86, - 86, 86, 86, 86, 3456, 3458, 3466, 3467, 86, 3457, - 3460, 86, 3463, 3464, 3462, 3474, 3465, 3468, 86, 3472, - 86, 86, 86, 3469, 86, 3475, 3470, 3473, 86, 86, - 3471, 86, 86, 3476, 3477, 3480, 3478, 3481, 86, 86, - 86, 86, 3483, 86, 3482, 86, 86, 86, 86, 3484, - 3489, 3479, 86, 3486, 86, 86, 86, 86, 3492, 3485, - 3493, 86, 86, 86, 86, 86, 3487, 3488, 3491, 3496, - 86, 3490, 3494, 3497, 86, 3495, 86, 3500, 3499, 3501, + 3450, 86, 3440, 3452, 86, 86, 3445, 3447, 3448, 3453, + 86, 86, 3454, 86, 3444, 3451, 3456, 86, 3459, 86, + 86, 3460, 86, 86, 3455, 86, 3457, 3463, 3464, 86, + 3461, 3458, 86, 86, 86, 86, 3469, 86, 86, 3465, + 3468, 86, 3462, 3470, 86, 3466, 86, 86, 3467, 86, + 86, 3474, 86, 86, 86, 3476, 86, 86, 86, 3471, + 3473, 3472, 3481, 3482, 3483, 86, 3478, 3479, 86, 3475, + 86, 3477, 86, 3487, 86, 3480, 86, 3489, 86, 3490, + 86, 3488, 86, 86, 86, 3491, 86, 3492, 3484, 3486, + 3485, 3493, 3495, 3496, 86, 86, 3498, 86, 86, 86, - 86, 3498, 86, 3502, 86, 3504, 86, 3506, 86, 3507, - 86, 86, 86, 3511, 86, 3508, 3542, 86, 3509, 3514, - 86, 3505, 3512, 86, 86, 3513, 3503, 86, 86, 86, - 86, 3510, 86, 86, 3515, 3516, 86, 3518, 3520, 86, - 86, 3522, 86, 3517, 86, 3523, 86, 3526, 3519, 3521, - 3527, 86, 3524, 86, 86, 3530, 3531, 86, 86, 3533, - 86, 3525, 86, 3528, 86, 3532, 3534, 86, 86, 3535, - 86, 86, 3529, 3536, 3542, 3537, 3540, 86, 3541, 86, - 3542, 3542, 3542, 3538, 3542, 3542, 3542, 3542, 3542, 3542, - 3539, 47, 47, 47, 47, 47, 47, 47, 52, 52, + 3497, 86, 86, 3494, 86, 3499, 86, 3504, 86, 3501, + 86, 86, 86, 86, 86, 3507, 3508, 86, 3500, 3509, + 86, 86, 3510, 3502, 3506, 3503, 3511, 3505, 86, 86, + 3515, 3512, 86, 86, 86, 86, 3519, 3516, 86, 3513, + 86, 3514, 86, 3521, 86, 3522, 3517, 86, 86, 3526, + 86, 86, 3523, 3529, 86, 3524, 3527, 3520, 86, 3525, + 3518, 86, 86, 3528, 86, 3530, 86, 86, 86, 3531, + 86, 3533, 3535, 86, 86, 3537, 86, 86, 86, 3538, + 86, 3541, 86, 3532, 3542, 86, 3534, 3536, 86, 3545, + 3546, 86, 86, 3548, 86, 3539, 3540, 3543, 86, 3547, - 52, 52, 52, 52, 52, 57, 57, 57, 57, 57, - 57, 57, 63, 63, 63, 63, 63, 63, 63, 68, - 68, 68, 68, 68, 68, 68, 74, 74, 74, 74, - 74, 74, 74, 80, 80, 80, 80, 80, 80, 80, - 89, 89, 3542, 89, 89, 89, 89, 160, 160, 3542, - 3542, 3542, 160, 160, 162, 162, 3542, 3542, 162, 3542, - 162, 164, 3542, 3542, 3542, 3542, 3542, 164, 167, 167, - 3542, 3542, 3542, 167, 167, 169, 3542, 3542, 3542, 3542, - 3542, 169, 171, 171, 3542, 171, 171, 171, 171, 174, - 3542, 3542, 3542, 3542, 3542, 174, 177, 177, 3542, 3542, + 86, 3544, 3549, 86, 86, 3550, 86, 86, 3557, 3551, + 3557, 3552, 3555, 86, 3556, 86, 3557, 3557, 3557, 3553, + 3557, 3557, 3557, 3557, 3557, 3557, 3554, 47, 47, 47, + 47, 47, 47, 47, 52, 52, 52, 52, 52, 52, + 52, 57, 57, 57, 57, 57, 57, 57, 63, 63, + 63, 63, 63, 63, 63, 68, 68, 68, 68, 68, + 68, 68, 74, 74, 74, 74, 74, 74, 74, 80, + 80, 80, 80, 80, 80, 80, 89, 89, 3557, 89, + 89, 89, 89, 160, 160, 3557, 3557, 3557, 160, 160, + 162, 162, 3557, 3557, 162, 3557, 162, 164, 3557, 3557, - 3542, 177, 177, 90, 90, 3542, 90, 90, 90, 90, - 17, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, - 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, - 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, - 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, - 3542 + 3557, 3557, 3557, 164, 167, 167, 3557, 3557, 3557, 167, + 167, 169, 3557, 3557, 3557, 3557, 3557, 169, 171, 171, + 3557, 171, 171, 171, 171, 174, 3557, 3557, 3557, 3557, + 3557, 174, 177, 177, 3557, 3557, 3557, 177, 177, 90, + 90, 3557, 90, 90, 90, 90, 17, 3557, 3557, 3557, + 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, + 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, + 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, + 3557, 3557, 3557, 3557, 3557, 3557, 3557 } ; -static const flex_int16_t yy_chk[6952] = +static const flex_int16_t yy_chk[6988] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2366,14 +2374,14 @@ static const flex_int16_t yy_chk[6952] = 5, 3, 6, 24, 4, 24, 24, 5, 24, 6, 7, 7, 7, 7, 24, 7, 8, 8, 8, 8, 33, 8, 7, 9, 9, 9, 26, 26, 8, 10, - 10, 10, 19, 29, 9, 33, 19, 29, 3550, 35, + 10, 10, 19, 29, 9, 33, 19, 29, 3565, 35, 10, 11, 11, 11, 11, 11, 11, 13, 13, 13, 13, 34, 13, 11, 35, 99, 34, 29, 38, 13, 51, 51, 11, 12, 12, 12, 12, 12, 12, 14, 14, 14, 14, 99, 14, 12, 15, 15, 15, 38, 23, 14, 23, 23, 12, 23, 46, 15, 16, 16, - 16, 23, 23, 25, 27, 27, 25, 25, 2884, 16, + 16, 23, 23, 25, 27, 27, 25, 25, 2894, 16, 25, 46, 27, 30, 30, 25, 27, 56, 40, 27, 56, 73, 31, 31, 25, 28, 67, 67, 30, 32, 28, 31, 40, 32, 28, 73, 32, 28, 92, 28, @@ -2752,377 +2760,380 @@ static const flex_int16_t yy_chk[6952] = 1696, 1697, 1700, 1687, 1693, 1692, 1691, 1697, 1695, 1696, 1699, 1695, 1698, 1698, 1701, 1694, 1702, 1699, 1703, 1704, 1705, 1707, 1700, 1706, 1710, 1705, 1705, 1701, 1706, 1711, - 1712, 1712, 1703, 1707, 1702, 1704, 1713, 1714, 1715, 1716, + 1712, 1712, 1703, 1707, 1702, 1704, 1713, 1714, 1715, 1715, - 1716, 1717, 1719, 1715, 1720, 1721, 1714, 1711, 1724, 1710, - 1717, 1718, 1713, 1717, 1716, 1725, 1718, 1726, 1728, 1727, - 1719, 1722, 1724, 1721, 1727, 1720, 1722, 1722, 1729, 1730, - 1725, 1732, 1728, 1733, 1729, 1731, 1731, 1732, 1733, 1726, - 1734, 1738, 1735, 1736, 1739, 1740, 1741, 1730, 1735, 1736, - 1747, 1740, 1748, 1742, 1734, 1749, 1742, 1743, 1739, 1741, - 1750, 1738, 1742, 1743, 1752, 1751, 1753, 1754, 1750, 1747, - 1751, 1748, 1755, 1752, 1749, 1756, 1754, 1757, 1759, 1753, - 1758, 1758, 1760, 1761, 1759, 1755, 1762, 1762, 1760, 1756, - 1763, 1757, 1767, 1764, 1765, 1768, 1761, 1766, 1766, 1769, + 1716, 1716, 1717, 1715, 1719, 1718, 1714, 1711, 1720, 1710, + 1718, 1717, 1713, 1721, 1717, 1716, 1724, 1725, 1722, 1726, + 1727, 1728, 1719, 1722, 1722, 1727, 1730, 1729, 1732, 1720, + 1724, 1721, 1725, 1729, 1732, 1728, 1731, 1731, 1733, 1734, + 1735, 1726, 1736, 1733, 1730, 1738, 1735, 1739, 1736, 1740, + 1741, 1742, 1743, 1734, 1742, 1740, 1747, 1748, 1743, 1749, + 1742, 1739, 1750, 1741, 1751, 1738, 1753, 1756, 1752, 1751, + 1750, 1754, 1755, 1757, 0, 1747, 1748, 1752, 1749, 1753, + 1754, 1756, 1758, 1758, 1759, 1755, 1760, 1757, 1761, 1763, + 1759, 1765, 1760, 1762, 1762, 1764, 1766, 1766, 1767, 1768, - 1770, 1768, 1758, 1774, 1771, 1767, 1773, 1773, 1775, 1776, - 1763, 1764, 1775, 1765, 1776, 1777, 1770, 1780, 1781, 1778, - 1779, 1769, 1771, 1774, 1778, 1779, 1780, 1783, 1784, 1785, - 1786, 1787, 1785, 1788, 1788, 1777, 1789, 1784, 1783, 1790, - 1791, 1781, 1786, 1792, 1792, 1794, 1787, 1793, 1795, 1798, - 1796, 1790, 1794, 1799, 1801, 1789, 1802, 1800, 1803, 1791, - 1795, 1793, 1796, 1800, 1803, 1813, 1801, 1813, 1798, 1804, - 1804, 1809, 1805, 1799, 1802, 1805, 1806, 1806, 1808, 1810, - 1809, 1811, 1811, 1808, 1812, 1810, 1814, 1815, 1816, 1814, - 1817, 1818, 1819, 1820, 1821, 1825, 1812, 1819, 1820, 1822, + 1769, 1761, 1770, 1771, 1758, 1768, 1773, 1773, 1774, 1763, + 1765, 1767, 1775, 1764, 1776, 1777, 1775, 1780, 1770, 1776, + 1778, 1771, 1769, 1781, 1779, 1778, 1780, 1783, 1774, 1779, + 1784, 1785, 1786, 1787, 1785, 1777, 1788, 1788, 1783, 1784, + 1789, 1790, 1791, 1793, 1786, 1794, 1781, 1799, 1787, 1792, + 1792, 1795, 1794, 1790, 1796, 1798, 1800, 1793, 1801, 1789, + 1802, 1791, 1800, 1795, 1809, 1803, 1796, 1799, 1804, 1804, + 1801, 1803, 1805, 1809, 1798, 1805, 1806, 1806, 1802, 1808, + 1810, 1811, 1811, 1812, 1808, 1813, 1810, 1813, 1814, 1815, + 1816, 1814, 1817, 1818, 1819, 1812, 1820, 1821, 1823, 1819, - 1823, 1824, 1826, 1821, 1825, 1829, 1824, 1815, 1817, 1818, - 1816, 1822, 1832, 1827, 1828, 1823, 1834, 1825, 1827, 1828, - 1829, 1831, 1826, 1830, 1830, 1827, 1835, 1831, 1836, 1837, - 1838, 1843, 1838, 1832, 1839, 1834, 1840, 1840, 1841, 1841, - 1842, 1842, 1844, 1844, 1836, 1835, 1845, 1845, 1839, 1837, - 1839, 1843, 1846, 1847, 1848, 1849, 1849, 1850, 1851, 1852, - 1854, 1850, 1852, 1855, 1851, 1856, 1854, 1857, 1858, 1860, - 1860, 1856, 1857, 1846, 1847, 1848, 1859, 1861, 1862, 1859, - 1864, 1855, 1865, 1862, 1863, 1863, 1866, 1867, 1868, 1868, - 1870, 1866, 1867, 1858, 1869, 1864, 1870, 1861, 1871, 1869, + 1824, 1820, 1822, 1826, 1829, 1824, 1821, 1825, 0, 1815, + 1817, 1818, 1816, 1823, 1822, 1827, 1825, 1828, 1832, 1829, + 1827, 1834, 1828, 1826, 1830, 1830, 1831, 1827, 1835, 1825, + 1836, 1837, 1831, 1838, 1839, 1838, 1840, 1840, 1843, 1832, + 1834, 1841, 1841, 1842, 1842, 1846, 1836, 1835, 1839, 1847, + 1839, 1837, 1844, 1844, 1845, 1845, 1848, 1850, 1843, 1849, + 1849, 1850, 1851, 1854, 1852, 1855, 1846, 1852, 1851, 1854, + 1847, 1857, 1856, 1858, 1860, 1860, 1857, 1848, 1856, 1859, + 1861, 1862, 1859, 1855, 1863, 1863, 1862, 1864, 1865, 1866, + 1867, 1868, 1868, 1870, 1866, 1867, 1869, 1879, 1858, 1870, - 1872, 1873, 1874, 1865, 1876, 1932, 1880, 1875, 1932, 1878, - 1871, 1871, 1871, 1875, 1878, 1878, 1879, 1871, 1882, 1873, - 1872, 1880, 1874, 1881, 1876, 1881, 1883, 1884, 1885, 1882, - 1879, 1886, 1887, 1884, 1888, 1888, 1889, 1885, 1890, 1890, - 1891, 1883, 1892, 1893, 1893, 1894, 1894, 1895, 1898, 1898, - 1899, 1886, 1900, 1887, 1902, 1903, 1905, 1906, 1906, 1904, - 1891, 1900, 1889, 1902, 1892, 1904, 1907, 1895, 1908, 1910, - 1909, 1911, 1905, 1912, 1912, 1899, 1903, 1909, 1910, 1913, - 1914, 1917, 1916, 1908, 1918, 1920, 1917, 1907, 1916, 1919, - 1918, 1924, 1920, 1921, 1929, 1925, 1914, 1911, 1922, 1921, + 1861, 1869, 1864, 1871, 1872, 1873, 1874, 1875, 1876, 1865, + 1880, 1879, 0, 1875, 1878, 1871, 1871, 1871, 1883, 1878, + 1878, 1882, 1871, 1873, 1872, 1880, 1874, 1881, 1876, 1881, + 1884, 1885, 1882, 1883, 1886, 1887, 1884, 1888, 1888, 1889, + 1885, 1890, 1890, 1891, 1892, 1893, 1893, 1894, 1894, 1895, + 1898, 1898, 1899, 1900, 1886, 1902, 1887, 1903, 1905, 1906, + 1906, 1904, 1900, 1891, 1902, 1889, 1892, 1904, 1907, 1895, + 1908, 1910, 1909, 1911, 1905, 1912, 1912, 1899, 1903, 1909, + 1910, 1913, 1914, 1917, 1916, 1908, 1918, 1920, 1917, 1907, + 1916, 1919, 1918, 1924, 1920, 1921, 1929, 1925, 1914, 1911, - 1922, 1925, 1926, 1926, 1928, 1913, 1927, 1930, 1931, 1919, - 1924, 1927, 1933, 1928, 1929, 1934, 1935, 1935, 1936, 1937, - 1931, 1939, 1938, 1940, 1936, 1937, 1930, 1940, 1942, 1943, - 1933, 1946, 1944, 1945, 1945, 1947, 1939, 1944, 1948, 1950, - 1951, 1934, 1938, 1940, 1951, 1952, 1952, 0, 1942, 1959, - 1953, 1943, 1954, 1948, 1947, 1946, 1953, 1957, 1950, 1955, - 1955, 1954, 1956, 1958, 1958, 1960, 1956, 1961, 1957, 1962, - 1959, 1963, 1964, 1957, 1962, 1965, 1966, 1970, 1967, 1960, - 1969, 0, 1966, 1968, 1977, 1969, 1961, 1971, 1971, 1976, - 1970, 1963, 1964, 1972, 1972, 1965, 1967, 1973, 1968, 1975, + 1922, 1921, 1922, 1925, 1926, 1926, 1928, 1913, 1927, 1930, + 1932, 1919, 1924, 1927, 1931, 1928, 1929, 1931, 1933, 1934, + 1935, 1933, 1932, 1936, 1936, 1937, 1938, 1939, 1930, 1940, + 1941, 1937, 1938, 1943, 1941, 1944, 1945, 1934, 1946, 1946, + 1947, 1945, 1948, 1949, 1940, 1952, 1935, 1939, 1951, 1952, + 1941, 1953, 1953, 1943, 1954, 1957, 1955, 1944, 1949, 1957, + 1954, 1948, 1956, 1956, 1947, 1955, 1958, 1951, 1959, 1959, + 1960, 1961, 1968, 1962, 1963, 1964, 1965, 1958, 1966, 1963, + 1967, 1971, 1958, 1970, 1969, 1961, 1967, 1978, 1970, 1974, + 1968, 1960, 1962, 1974, 1971, 1964, 1965, 1976, 1966, 1969, - 1976, 1973, 1978, 1978, 1977, 1976, 1980, 1980, 1975, 1981, - 1982, 1984, 1985, 1986, 1981, 1981, 1982, 1984, 1986, 1987, - 1988, 1990, 1992, 1991, 1993, 1993, 1988, 1991, 1994, 1995, - 1996, 1987, 1999, 1990, 1992, 1995, 1997, 2000, 1985, 1998, - 1998, 2001, 1997, 2002, 2004, 2005, 2001, 2008, 2012, 2006, - 2008, 1999, 1996, 1994, 2006, 2002, 2004, 2000, 2009, 2009, - 2010, 2010, 2011, 2011, 2005, 2013, 2014, 2016, 2012, 2015, - 2017, 2013, 2014, 2016, 2015, 2019, 2022, 2025, 2021, 2017, - 2019, 2021, 2023, 2023, 2026, 2027, 2028, 2028, 2022, 2025, - 2027, 2029, 2030, 2031, 2033, 2033, 2026, 2030, 2031, 2032, + 1972, 1972, 1973, 1973, 1977, 1986, 1976, 1978, 1979, 1979, + 1981, 1981, 1982, 1983, 0, 1977, 1985, 1982, 1982, 1983, + 1977, 1987, 1985, 1988, 1989, 1991, 1987, 1993, 1992, 1995, + 1989, 1986, 1992, 1994, 1994, 1988, 1996, 1991, 1997, 1993, + 1998, 2001, 1996, 1999, 1999, 2000, 1998, 2002, 2006, 2074, + 2003, 2005, 2002, 2007, 1995, 2013, 2009, 2074, 2007, 2009, + 1997, 2001, 2003, 2005, 2000, 2010, 2010, 2006, 2011, 2011, + 2012, 2012, 2014, 2015, 2017, 2013, 2016, 2018, 2014, 2015, + 2017, 2016, 2020, 2023, 2026, 2022, 2018, 2020, 2022, 2024, + 2024, 2027, 2028, 2029, 2029, 2023, 2026, 2028, 2030, 2031, - 2029, 2034, 2032, 2035, 2036, 2037, 2038, 2041, 2039, 2040, - 2038, 2042, 2035, 2039, 2043, 2040, 2044, 2046, 2046, 2047, - 2042, 2034, 2036, 2049, 2037, 2041, 2048, 2050, 2050, 2046, - 2044, 2051, 2043, 2052, 2053, 2048, 2054, 2047, 2055, 2060, - 2051, 2054, 2060, 2049, 2061, 2052, 2058, 2058, 2062, 2063, - 2067, 2055, 2065, 2068, 2066, 2053, 2067, 2069, 2069, 2070, - 2061, 2070, 2071, 2078, 2062, 2063, 2073, 2065, 2066, 2081, - 2068, 2072, 2072, 2079, 2073, 2075, 2075, 2076, 2076, 2079, - 2071, 2080, 2082, 2081, 2083, 2084, 2078, 2080, 2086, 2082, - 2085, 2085, 2087, 2092, 2090, 2088, 2089, 2086, 2091, 2093, + 2032, 2034, 2034, 2027, 2031, 2032, 2033, 2030, 2035, 2033, + 2036, 2037, 2038, 2039, 2042, 2040, 2041, 2039, 2043, 2036, + 2040, 2044, 2041, 2045, 2047, 2047, 2048, 2043, 2035, 2037, + 2050, 2038, 2042, 2049, 2051, 2051, 2047, 2045, 2052, 2044, + 2053, 2054, 2049, 2055, 2048, 2056, 2061, 2052, 2055, 2061, + 2050, 2062, 2053, 2059, 2059, 2063, 2064, 2068, 2056, 2066, + 2069, 2067, 2054, 2068, 2070, 2070, 2071, 2062, 2071, 2072, + 2079, 2063, 2064, 2088, 2066, 2067, 2084, 2069, 2073, 2073, + 2076, 2076, 2077, 2077, 2080, 2081, 2082, 2072, 2083, 2085, + 2080, 2081, 2087, 2079, 2088, 2083, 2086, 2086, 2084, 2089, - 2096, 2097, 2107, 2098, 2107, 2084, 2083, 2088, 2089, 2090, - 2091, 2094, 2101, 2087, 2093, 2098, 2100, 2094, 2104, 2092, - 2096, 2099, 2099, 2102, 2097, 2108, 2102, 2114, 2103, 0, - 2094, 2106, 2101, 2103, 2100, 2109, 2106, 2110, 2104, 2112, - 2109, 2115, 2116, 2108, 2110, 2114, 2118, 2117, 2112, 2117, - 2115, 2119, 2122, 2121, 2116, 2121, 2124, 2119, 2123, 2123, - 2129, 2126, 2125, 2126, 2127, 2118, 2122, 2125, 2128, 2127, - 2130, 2131, 2133, 2128, 2132, 2135, 2134, 2133, 2129, 2136, - 2132, 2139, 2124, 2140, 2136, 2136, 2137, 2135, 2130, 2134, - 2143, 2131, 2141, 2141, 2137, 2142, 2142, 2140, 2144, 2146, + 2082, 2087, 2090, 2091, 2092, 2093, 2094, 2097, 2099, 2085, + 2098, 2089, 2101, 2095, 2090, 2095, 2092, 2102, 2091, 2095, + 2099, 2094, 2100, 2100, 2104, 2103, 2105, 2097, 2103, 2104, + 2101, 2093, 2095, 2098, 2107, 2109, 2108, 2102, 2108, 2107, + 2110, 2111, 2113, 2115, 2119, 2110, 2105, 2116, 2111, 2120, + 2117, 2113, 2118, 2109, 2118, 2120, 2116, 2122, 2123, 2122, + 2125, 2115, 2117, 2119, 2124, 2124, 2126, 2127, 2128, 2127, + 2129, 2126, 2123, 2128, 2130, 2129, 2131, 2132, 2133, 2136, + 2134, 2140, 2135, 2137, 2133, 2134, 2125, 2141, 2137, 2137, + 2138, 2136, 2130, 2145, 2131, 2135, 2144, 2132, 2138, 2146, - 2139, 2145, 2148, 2149, 2146, 2143, 2147, 2145, 2147, 2150, - 2150, 2149, 2151, 2152, 2152, 2153, 2153, 2154, 2144, 2149, - 2148, 2156, 2155, 2159, 2151, 2158, 2154, 2155, 2160, 2158, - 2160, 2161, 2159, 2163, 2164, 2159, 2162, 2165, 2167, 2156, - 2172, 2162, 2162, 2164, 2171, 2163, 2168, 2173, 2169, 2165, - 2167, 2168, 2161, 2169, 2174, 2174, 2173, 2171, 2175, 2176, - 2172, 2177, 2178, 2179, 2182, 2186, 2180, 2181, 2187, 2182, - 2188, 2184, 2185, 2187, 2195, 2188, 2175, 2176, 2178, 2177, - 2180, 2189, 2181, 2184, 2185, 2186, 2192, 2194, 2179, 2196, - 2189, 2197, 2192, 2194, 2198, 2200, 2200, 2195, 2199, 2201, + 2140, 2141, 2142, 2142, 2143, 2143, 2147, 2144, 2145, 2148, + 2150, 2149, 2147, 2149, 2148, 2151, 2152, 2152, 2153, 2146, + 2154, 2154, 2157, 2151, 2155, 2155, 2156, 2157, 2150, 2158, + 2153, 2151, 2160, 2161, 2163, 2156, 2160, 2162, 2164, 2162, + 2165, 2166, 2161, 2164, 2164, 2161, 2167, 2158, 2169, 2170, + 2166, 2171, 2165, 2173, 2170, 2163, 2171, 2174, 2167, 2175, + 2169, 2176, 2176, 2177, 2178, 2179, 2173, 2181, 2175, 2180, + 2182, 2183, 0, 2184, 2188, 2186, 2187, 2174, 2184, 2197, + 2191, 2177, 2178, 2179, 2182, 2180, 2183, 2186, 2187, 2191, + 2189, 2190, 2181, 2194, 2188, 2189, 2190, 2196, 2198, 2194, - 2202, 2202, 2203, 2204, 2196, 2192, 2205, 2199, 2201, 2197, - 2205, 2206, 2207, 2209, 2211, 2210, 2206, 2217, 2212, 2198, - 2203, 2210, 2204, 2212, 2212, 2207, 2215, 2213, 2214, 2215, - 2216, 2225, 2209, 2213, 2214, 2222, 2211, 2217, 2216, 2220, - 2220, 2221, 2221, 2225, 2222, 2223, 2223, 2224, 2224, 2227, - 2226, 2235, 2228, 2229, 2229, 2227, 2221, 2228, 2230, 2230, - 2231, 2237, 2234, 2232, 2239, 2231, 2234, 2221, 2226, 2232, - 2236, 2235, 2240, 2241, 2236, 2242, 2244, 2240, 2243, 2245, - 2246, 2237, 2247, 2243, 2248, 2249, 2249, 2247, 2250, 2239, - 2242, 2253, 2250, 2251, 2244, 2245, 2241, 2252, 2254, 2255, + 2199, 2200, 2197, 2196, 2205, 2201, 2202, 2202, 2203, 2204, + 2204, 2206, 2194, 2198, 2201, 2207, 2208, 2203, 2199, 2207, + 2209, 2208, 2205, 2211, 2213, 2212, 2200, 2219, 0, 2214, + 2206, 2212, 2215, 2209, 2214, 2214, 2217, 2216, 2215, 2217, + 2218, 2228, 2211, 2216, 2222, 2222, 2213, 2219, 2218, 2223, + 2223, 2224, 2225, 2225, 2226, 2226, 2227, 2229, 2241, 2228, + 2224, 2230, 2233, 2229, 2223, 2237, 2230, 2233, 2227, 2231, + 2231, 2232, 2232, 2234, 2236, 2223, 2238, 2239, 2236, 2234, + 2238, 2242, 2243, 2241, 2244, 2237, 2242, 2245, 2246, 2248, + 2249, 2247, 2245, 2250, 2252, 2249, 2253, 2239, 2252, 2244, - 2246, 2256, 2252, 2259, 2257, 2258, 2248, 2262, 2251, 2257, - 2263, 2255, 2260, 2260, 2264, 2262, 2254, 2253, 2258, 2265, - 2256, 2259, 2266, 2267, 2268, 2269, 2272, 2270, 2271, 2263, - 2278, 2276, 2272, 2264, 2277, 2274, 2278, 2280, 2265, 2270, - 2279, 2284, 2279, 2268, 2276, 2266, 2269, 2267, 2277, 2271, - 2274, 2281, 2281, 2282, 2284, 2285, 2283, 2280, 2282, 2283, - 2286, 2287, 2287, 2288, 2288, 2289, 2291, 2289, 2294, 2285, - 2290, 2290, 2292, 2286, 2293, 2293, 2300, 2294, 2295, 2295, - 2294, 2291, 2296, 2296, 2297, 2292, 2299, 2301, 2302, 2297, - 2305, 2299, 2303, 2303, 2304, 2304, 2300, 2306, 2306, 2307, + 2251, 2251, 2255, 2254, 2256, 2243, 2246, 2247, 2254, 2248, + 2258, 2253, 2257, 2259, 2260, 2250, 2261, 2264, 2259, 2262, + 2262, 2265, 2256, 2266, 2257, 2264, 2267, 2260, 2255, 2258, + 2268, 2269, 2270, 2271, 2261, 2272, 2273, 2274, 2305, 2278, + 2265, 2276, 2266, 2274, 2279, 2267, 2281, 2272, 2281, 2282, + 2305, 2270, 2278, 2268, 2271, 2269, 2276, 2273, 2279, 2280, + 2283, 2283, 2284, 2285, 2286, 2280, 2285, 2284, 2287, 2282, + 2288, 2289, 2289, 2290, 2290, 2293, 2291, 2286, 2291, 2292, + 2292, 2294, 2287, 2288, 2295, 2295, 2296, 2296, 2297, 2303, + 2293, 2298, 2298, 2300, 2294, 2299, 2299, 2297, 2300, 2302, - 2302, 2308, 2308, 2309, 2315, 2310, 2313, 2301, 2316, 2305, - 2310, 2311, 2311, 2312, 2312, 2314, 2317, 2307, 2309, 2321, - 2313, 2315, 2316, 2319, 2314, 2320, 2320, 2323, 2319, 2322, - 2322, 2324, 2329, 2325, 2326, 2317, 2324, 2326, 2321, 2325, - 2327, 2327, 2328, 2328, 2330, 2323, 2331, 2333, 2331, 2334, - 2337, 2329, 2335, 2335, 2338, 2342, 2327, 2339, 2343, 2330, - 2340, 2344, 2333, 2343, 2340, 2341, 2341, 2345, 2334, 2348, - 2337, 2350, 2339, 2349, 2342, 2351, 2344, 2338, 2347, 2347, - 2349, 2352, 2345, 2353, 2354, 2350, 2355, 2355, 2356, 2348, - 2357, 2358, 2357, 2351, 2358, 2360, 2361, 2356, 2353, 2352, + 2297, 2304, 2306, 2306, 2302, 2307, 2307, 2308, 2312, 2303, + 2309, 2309, 2310, 2311, 2311, 2313, 2314, 2314, 2315, 2315, + 2313, 2304, 2316, 2312, 2317, 2318, 2308, 2319, 2320, 2322, + 2310, 2323, 2323, 2317, 2322, 2324, 2316, 2325, 2325, 2326, + 2327, 2319, 2318, 2328, 2332, 2327, 2333, 2320, 2329, 2328, + 2336, 2329, 2330, 2330, 2324, 2331, 2331, 2326, 2334, 2337, + 2334, 2333, 2340, 2332, 2341, 2336, 2338, 2338, 2330, 2342, + 2343, 2344, 2345, 2345, 2346, 2344, 2347, 2352, 2337, 2341, + 2348, 2347, 2340, 2349, 2353, 2343, 2351, 2351, 2354, 2355, + 2356, 2353, 2342, 2346, 2357, 2348, 2358, 2352, 2349, 2359, - 2362, 2360, 2363, 2364, 2365, 2362, 2366, 2363, 2361, 2358, - 2354, 2358, 2368, 2367, 2370, 2371, 2372, 2365, 2367, 2370, - 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2366, 2364, 2374, - 2375, 2379, 2381, 2378, 2382, 2380, 2379, 2373, 2368, 2378, - 2380, 2377, 2383, 2384, 2385, 2383, 2376, 2382, 2388, 2386, - 2387, 2393, 2384, 2385, 2389, 2390, 2395, 2381, 2386, 2387, - 2389, 2390, 2388, 2391, 2396, 2397, 2397, 2391, 2398, 2399, - 2399, 2393, 2400, 2396, 2398, 2403, 2395, 2402, 2399, 2401, - 2401, 2400, 2402, 2405, 2406, 2407, 2407, 2408, 2412, 2409, - 2413, 2411, 0, 2416, 2414, 2403, 2416, 2403, 2409, 2405, + 2359, 2360, 2354, 2361, 2365, 2361, 2364, 2355, 2356, 2357, + 2360, 2362, 2364, 2366, 2362, 2367, 2365, 2368, 2366, 2369, + 2367, 2371, 2358, 2370, 2372, 2374, 2371, 2380, 2375, 2362, + 2374, 2362, 2369, 2375, 2376, 2378, 2377, 2379, 2381, 2376, + 2382, 2378, 2368, 2379, 2370, 2385, 2382, 2383, 2380, 2384, + 2372, 2377, 2383, 2381, 2384, 2386, 2387, 2388, 2389, 2387, + 2390, 2392, 2391, 2397, 2399, 2400, 2388, 2389, 2386, 2390, + 2385, 2391, 2393, 2394, 2400, 2392, 2395, 0, 2393, 2394, + 2395, 2401, 2401, 2397, 2399, 2402, 2403, 2403, 2404, 2405, + 2405, 2402, 2407, 2406, 2409, 2403, 2412, 2404, 2406, 2410, - 2406, 2418, 2408, 2411, 2412, 2413, 2414, 2417, 2419, 2420, - 2420, 2426, 2417, 2421, 2421, 2423, 2423, 2426, 2425, 2424, - 2419, 2418, 2424, 2425, 2427, 2428, 2429, 2429, 2430, 2432, - 2427, 2431, 2431, 2433, 2428, 2434, 2435, 2435, 2436, 2437, - 2438, 2432, 2430, 2446, 2436, 2438, 2440, 2433, 2441, 2444, - 2440, 2441, 2443, 2437, 2434, 2442, 2442, 2443, 2444, 2445, - 2447, 2448, 2448, 2446, 2447, 2449, 2451, 2452, 2445, 2453, - 2454, 2451, 2455, 2456, 2457, 2458, 2459, 2456, 2449, 2460, - 2458, 2462, 2459, 2461, 2461, 2460, 2455, 2452, 2463, 2453, - 2454, 2464, 2465, 2466, 2457, 2467, 2467, 2465, 2471, 2462, + 2411, 2411, 2416, 2421, 2413, 2415, 2417, 2418, 2421, 2422, + 2409, 2412, 2407, 2413, 2407, 2410, 2423, 2415, 2416, 2418, + 2420, 2417, 0, 2420, 2424, 2424, 2425, 2425, 2423, 2422, + 2427, 2427, 2428, 2429, 2430, 2428, 2431, 2432, 2429, 2434, + 2430, 2437, 2431, 2433, 2433, 2436, 2432, 2435, 2435, 2438, + 2439, 2439, 2440, 2434, 2442, 2437, 2441, 2436, 2440, 2442, + 2444, 2450, 2445, 2448, 2444, 2445, 2446, 2446, 2438, 2447, + 2441, 2449, 2448, 2451, 2447, 2452, 2452, 2451, 2453, 2455, + 2449, 2450, 2456, 2457, 2455, 2458, 2459, 2461, 2460, 2462, + 2463, 2453, 2460, 2464, 2462, 2466, 2463, 2465, 2465, 2464, - 2469, 2470, 2472, 2471, 2474, 2473, 2474, 2463, 2472, 2476, - 2464, 2478, 2469, 2473, 2466, 2479, 2479, 2470, 2476, 2480, - 2481, 2486, 2480, 2482, 2482, 2478, 2485, 2486, 2487, 2489, - 2485, 2488, 2488, 2492, 2492, 2494, 2496, 2500, 2489, 2497, - 2487, 2501, 2500, 2502, 2503, 2509, 2481, 2504, 2510, 2503, - 2496, 2509, 2504, 2494, 2512, 2497, 2505, 2505, 2507, 2507, - 2511, 2511, 2513, 2516, 2502, 2518, 2514, 2501, 2510, 2517, - 2512, 2514, 2517, 2519, 2520, 2520, 2524, 2518, 2522, 2529, - 2523, 2525, 2516, 2530, 2513, 2519, 2523, 2522, 2527, 2527, - 2528, 2532, 2532, 2528, 2524, 2535, 2525, 2534, 2529, 2533, + 2459, 2467, 2456, 2457, 2468, 2458, 2469, 2461, 2470, 2471, + 2471, 2469, 2473, 2466, 2474, 2478, 2475, 2478, 2477, 2476, + 2467, 2475, 2480, 2468, 2473, 2476, 2477, 2482, 2486, 2470, + 2474, 2480, 2483, 2483, 2484, 2485, 2492, 2484, 2485, 2487, + 2487, 2482, 2490, 2491, 2493, 2493, 2490, 2494, 2492, 2491, + 2497, 2497, 2499, 2501, 2486, 2502, 2494, 2505, 2506, 2507, + 2508, 2509, 2505, 2510, 2510, 2508, 2509, 2501, 2512, 2512, + 2499, 2502, 2514, 2515, 2516, 2516, 2517, 2518, 2514, 2521, + 2507, 2519, 2522, 2523, 2506, 2522, 2519, 2527, 2524, 2525, + 2525, 2528, 2517, 2515, 2530, 2523, 2527, 2528, 2521, 2518, - 2533, 2530, 2534, 2536, 2537, 2538, 2539, 2540, 2539, 2541, - 2538, 2543, 2536, 2535, 2542, 2544, 2543, 2537, 2545, 2546, - 0, 2540, 2552, 2541, 2546, 2551, 2542, 2547, 2547, 2548, - 2548, 2549, 2549, 2550, 2550, 2544, 2553, 2551, 2545, 2557, - 2552, 2553, 2554, 2554, 2555, 2555, 2556, 2556, 2558, 2559, - 2560, 2557, 2561, 2562, 2563, 2563, 2564, 2565, 2565, 2566, - 2566, 2559, 2571, 2567, 2568, 2569, 2570, 2573, 2558, 2562, - 2560, 2574, 2569, 2561, 2567, 2564, 2568, 2576, 2570, 2572, - 2575, 2575, 2571, 2578, 2572, 2579, 2576, 2573, 2577, 2577, - 2580, 2574, 2581, 2582, 2584, 2583, 2584, 2587, 2585, 2586, + 2524, 2529, 2531, 2533, 2533, 2534, 2535, 2529, 2534, 2536, + 2538, 2538, 2530, 2539, 2539, 2540, 2541, 2531, 2543, 2542, + 2540, 2544, 2545, 2546, 2545, 2535, 2544, 2536, 2542, 2547, + 2548, 2543, 2550, 2549, 2541, 2551, 2552, 2546, 2549, 2553, + 2553, 2552, 2548, 2547, 2554, 2554, 2555, 2555, 2556, 2556, + 2557, 2558, 2550, 2559, 2563, 2551, 2560, 2560, 2559, 2561, + 2561, 2564, 2557, 2562, 2562, 2565, 2563, 2566, 2567, 2558, + 2568, 2569, 2569, 2570, 2571, 2571, 2574, 2565, 2572, 2572, + 2573, 2564, 2576, 2575, 2577, 2579, 2568, 2566, 2574, 2567, + 2575, 2573, 2570, 2578, 2576, 2580, 2581, 2581, 2578, 2582, - 2586, 2593, 2591, 2580, 2588, 2579, 2587, 2582, 2589, 2578, - 2585, 2592, 2594, 2595, 2683, 2594, 2581, 2583, 2683, 2588, - 2591, 2596, 2605, 2589, 2593, 2597, 2596, 2595, 2598, 2598, - 2597, 2599, 2599, 2592, 2600, 2600, 2602, 2602, 2604, 2604, - 2605, 2606, 2607, 2608, 2610, 2611, 2612, 2613, 2614, 2615, - 2617, 2616, 2606, 2616, 2618, 2619, 2624, 2614, 2608, 2620, - 2620, 2607, 2623, 2611, 2610, 2622, 2622, 2613, 2612, 2615, - 2617, 2625, 2618, 2619, 2626, 2626, 2623, 2628, 2624, 2630, - 2625, 2629, 2629, 2631, 2632, 2633, 2628, 2635, 2634, 2636, - 2637, 2638, 2633, 2639, 2640, 2640, 2642, 2630, 2641, 2641, + 2583, 2583, 2584, 2585, 2577, 2579, 2586, 2587, 2582, 2591, + 2588, 2589, 2590, 2593, 2590, 2580, 2592, 2592, 2597, 2586, + 2594, 2591, 2593, 2585, 2588, 2595, 2598, 2599, 2584, 2600, + 2601, 2587, 2600, 2589, 2602, 2594, 2597, 2603, 2612, 2602, + 2595, 2611, 2603, 2613, 2601, 2604, 2604, 2616, 2598, 2612, + 2599, 2605, 2605, 2606, 2606, 2608, 2608, 2610, 2610, 2611, + 2614, 2617, 2613, 2618, 2619, 2620, 2621, 2616, 2622, 2623, + 2622, 2630, 2624, 2625, 2620, 2614, 2626, 2626, 2629, 2617, + 2628, 2628, 2632, 2632, 2619, 2618, 2621, 2631, 2634, 2623, + 2624, 2625, 2629, 2630, 2635, 2635, 2631, 2634, 2636, 2637, - 2639, 2631, 2632, 2634, 2643, 2635, 2637, 2636, 2644, 2648, - 2638, 2646, 2646, 2649, 2644, 2648, 2642, 2647, 2647, 2650, - 2651, 2652, 2643, 2653, 2654, 2655, 0, 2656, 2653, 2658, - 2658, 2649, 2656, 2662, 2650, 2652, 2657, 2665, 2657, 2651, - 2659, 2664, 2659, 2666, 2654, 2655, 2660, 2660, 2667, 2668, - 2664, 2670, 2662, 2669, 2668, 2666, 2665, 2671, 2669, 2674, - 2675, 2676, 2677, 2677, 2676, 2678, 2679, 2682, 2667, 2680, - 2680, 2670, 2681, 2685, 2687, 2687, 2671, 2686, 2675, 2674, - 2678, 2686, 2682, 2681, 2679, 2688, 2690, 2691, 2685, 2692, - 2693, 2693, 2695, 2696, 2700, 2697, 2698, 2698, 2688, 2697, + 2638, 2639, 2641, 2642, 2640, 2644, 2643, 2645, 2639, 2646, + 2646, 2647, 2647, 2648, 2645, 0, 2636, 2637, 2638, 2640, + 2641, 2642, 2643, 2649, 2644, 2650, 2652, 2652, 2653, 2653, + 2654, 2650, 2655, 2648, 2656, 2657, 2654, 2658, 2659, 2660, + 2662, 2649, 2661, 2659, 2664, 2669, 2664, 2663, 2672, 2656, + 2655, 2658, 2663, 2661, 2657, 2665, 2665, 2667, 2667, 2660, + 2662, 2666, 2671, 2666, 2669, 2673, 2674, 2672, 2675, 2676, + 2677, 2671, 2678, 2675, 2676, 2681, 2682, 2673, 2683, 2684, + 2684, 2683, 2685, 2686, 2687, 2687, 2674, 2688, 2689, 2690, + 2677, 2678, 2692, 2690, 2682, 2681, 2693, 2685, 2688, 2696, - 2704, 2690, 2696, 2702, 2695, 2699, 2699, 2691, 2702, 2692, - 2701, 2701, 2703, 2700, 2705, 2706, 2704, 2707, 2707, 2712, - 2712, 2703, 2713, 2714, 2714, 2715, 2705, 2716, 2717, 2722, - 2718, 2721, 2721, 2719, 2720, 2706, 2723, 2733, 2715, 2718, - 2716, 2717, 2719, 2720, 2713, 2725, 2725, 2728, 2729, 2722, - 2730, 2723, 2728, 2729, 2731, 2732, 2733, 2734, 2737, 2731, - 2735, 2741, 2739, 2732, 2730, 2740, 2734, 2739, 2735, 2745, - 2740, 2742, 2742, 2737, 2743, 2743, 2741, 2744, 2746, 2746, - 2747, 2748, 2744, 2749, 2750, 2751, 2748, 2747, 2745, 2752, - 2754, 2751, 2753, 2753, 2752, 2755, 2756, 2756, 2757, 2757, + 2694, 2686, 2693, 2689, 2694, 2695, 2695, 2692, 2698, 2699, + 2700, 2704, 2696, 2701, 2701, 2703, 2708, 2705, 2706, 2706, + 2704, 2705, 2712, 2698, 2707, 2707, 2714, 2703, 2710, 2699, + 2700, 2709, 2709, 2710, 2711, 2708, 2713, 2721, 2712, 2715, + 2715, 2720, 2720, 2711, 2722, 2722, 2714, 2723, 2713, 2724, + 2725, 2730, 2726, 2729, 2729, 2727, 2728, 2731, 0, 2721, + 2723, 2726, 2724, 2725, 2727, 2728, 2733, 2733, 2736, 2737, + 2738, 2730, 2731, 2736, 2737, 2739, 2741, 2740, 2742, 2745, + 2739, 2743, 2749, 2747, 2738, 2740, 2748, 2742, 2747, 2743, + 2753, 2748, 2750, 2750, 2745, 2741, 2752, 2749, 2751, 2751, - 2755, 2749, 2750, 2760, 2763, 2754, 2761, 2761, 2762, 2763, - 2763, 2762, 2764, 2765, 2766, 2767, 2760, 2764, 2765, 2768, - 2769, 2767, 2770, 2768, 2771, 2769, 2772, 2773, 2766, 2774, - 2775, 2770, 2776, 2777, 2772, 2774, 2775, 2776, 2780, 2771, - 2779, 2781, 2783, 2780, 2781, 2777, 2785, 2779, 2773, 2788, - 2786, 2785, 2787, 2789, 2783, 2786, 2790, 2787, 2794, 2791, - 2792, 2792, 2793, 2794, 2797, 2790, 2789, 2788, 2791, 2798, - 2799, 2793, 2802, 2803, 2806, 2798, 2799, 2804, 2805, 2805, - 2807, 2806, 2797, 2808, 2811, 2809, 2810, 2810, 2815, 2813, - 2816, 2802, 2808, 2803, 2816, 2818, 2804, 2817, 2817, 2807, + 2755, 2752, 2754, 2754, 2757, 2756, 2758, 2755, 2759, 2753, + 2756, 2760, 2761, 2761, 2759, 2762, 2760, 0, 2763, 2764, + 2764, 2768, 2757, 2763, 2758, 2765, 2765, 2769, 2769, 2770, + 2762, 2771, 2770, 2772, 2768, 2773, 2771, 2771, 2772, 2774, + 2773, 2775, 2776, 2777, 2779, 2778, 2776, 2775, 2777, 2780, + 2781, 2784, 2782, 2774, 2778, 2783, 2784, 2780, 2782, 2779, + 2785, 2783, 2787, 2788, 2789, 2791, 2796, 2789, 2788, 2787, + 2793, 2781, 2785, 2794, 2795, 2793, 2797, 2791, 2794, 2795, + 2805, 2798, 2799, 2801, 2796, 2800, 2800, 2810, 2802, 2797, + 2798, 2799, 2801, 2802, 2806, 2807, 2811, 2814, 2805, 2812, - 2809, 2819, 2824, 2811, 2813, 2820, 2821, 2819, 2815, 2822, - 2824, 2820, 2823, 2823, 2825, 2822, 2826, 2828, 2829, 2831, - 2818, 2826, 2834, 2835, 2821, 2831, 2828, 2832, 2833, 2838, - 2832, 2829, 2833, 2837, 2837, 2849, 2834, 0, 2835, 2825, - 2839, 2839, 2840, 2840, 2842, 2842, 2843, 2838, 2844, 2845, - 2843, 2847, 2847, 2844, 2850, 2849, 2851, 2852, 2845, 2850, - 2853, 2855, 2852, 2852, 2856, 2856, 2858, 2858, 2851, 2859, - 2859, 2862, 2853, 2860, 2860, 2861, 2863, 2866, 2861, 2865, - 2865, 2855, 2868, 2872, 2862, 2869, 2869, 2870, 2870, 2863, - 2871, 2871, 2873, 2873, 2874, 2866, 2875, 2876, 2872, 2877, + 2806, 2807, 2813, 2813, 2814, 2815, 2810, 2817, 2816, 2820, + 2818, 2819, 2819, 2824, 2822, 2825, 2811, 2816, 2812, 2825, + 2826, 2826, 2817, 2827, 2815, 2818, 2828, 2830, 2820, 2822, + 2829, 2831, 2828, 2824, 2832, 2832, 2829, 2831, 2833, 2834, + 2837, 2838, 2835, 2859, 2840, 2830, 2833, 2835, 2827, 2837, + 2840, 2843, 2841, 2842, 2838, 2841, 2845, 2842, 2844, 2844, + 2847, 2847, 2848, 2859, 2834, 2843, 2849, 2849, 2850, 2850, + 2853, 2845, 2852, 2852, 2853, 2855, 2854, 2857, 2857, 2861, + 2848, 2854, 2860, 2862, 2855, 2863, 2865, 2860, 2862, 2862, + 2872, 2861, 2866, 2866, 2868, 2868, 2873, 2863, 2869, 2869, - 2878, 2878, 2868, 2882, 2879, 2877, 2886, 2874, 2879, 2882, - 2883, 2876, 2885, 2887, 2875, 2883, 2888, 2885, 2885, 2889, - 2890, 2891, 2901, 2892, 2955, 2889, 2890, 2892, 2955, 2886, - 2893, 2893, 2896, 2887, 2898, 2899, 2888, 2896, 2899, 2904, - 2902, 2906, 2898, 2902, 2903, 2903, 2891, 2901, 2905, 2907, - 2908, 2909, 2909, 2905, 2910, 2911, 2904, 2904, 2911, 2906, - 2912, 2913, 2914, 2917, 2908, 2924, 2911, 2915, 2910, 2907, - 2914, 2916, 2915, 2915, 2912, 2926, 2916, 2916, 2918, 2918, - 2913, 2924, 2917, 2919, 2919, 2920, 2920, 2921, 2921, 2922, - 2922, 2923, 2923, 2925, 2927, 2926, 2928, 2929, 2925, 2930, + 2870, 2870, 2871, 2872, 2876, 2871, 2865, 2875, 2875, 2873, + 2878, 2879, 2879, 2880, 2880, 2881, 2881, 2882, 2883, 2883, + 2884, 2885, 2876, 2886, 2889, 2887, 2888, 2888, 2889, 2892, + 2878, 2887, 2882, 2884, 2896, 2892, 2893, 2886, 2895, 2885, + 2897, 2893, 2898, 2895, 2895, 2899, 2900, 2901, 2911, 2902, + 2908, 2899, 2900, 2902, 2903, 2903, 2906, 2896, 2908, 2914, + 2897, 2906, 2898, 2909, 2912, 2915, 2909, 2912, 2913, 2913, + 2915, 2916, 2901, 2911, 2917, 2934, 2914, 2914, 2918, 2919, + 2919, 2920, 2921, 2922, 2923, 2921, 2928, 2928, 2924, 2916, + 2927, 2934, 2918, 2921, 2917, 2920, 2924, 2922, 2937, 2925, - 2931, 2933, 2929, 2932, 2934, 2931, 2936, 2936, 2937, 2937, - 2928, 2938, 2932, 2939, 2938, 2941, 2941, 2952, 2930, 2942, - 2927, 2933, 2943, 2943, 2934, 2944, 2942, 2946, 2946, 2947, - 2944, 2939, 2948, 2949, 2950, 2952, 2953, 2953, 2947, 2954, - 2954, 2948, 2949, 2950, 2956, 2957, 2958, 2959, 2961, 2960, - 2962, 2973, 2963, 2956, 2960, 2960, 2963, 2958, 2967, 2962, - 2969, 2961, 2959, 2967, 2957, 2968, 2968, 2971, 2971, 2972, - 2974, 2976, 2976, 2977, 2969, 2978, 2973, 2982, 2986, 2983, - 2984, 2989, 2977, 2972, 2983, 2987, 2991, 2978, 2974, 2984, - 2993, 2987, 2994, 2989, 2996, 2993, 2998, 2994, 2986, 2995, + 0, 2926, 2936, 2923, 2925, 2925, 2926, 2926, 2940, 2927, + 2929, 2929, 2930, 2930, 2931, 2931, 2932, 2932, 2933, 2933, + 2935, 2938, 2936, 2939, 2937, 2935, 2941, 2940, 2939, 2942, + 2943, 2941, 2944, 2946, 2946, 2938, 2947, 2947, 2942, 2948, + 2949, 2950, 2948, 2952, 2952, 2963, 2949, 2953, 2954, 2954, + 2943, 2955, 2944, 2958, 2953, 2959, 2955, 2957, 2957, 2950, + 2960, 2961, 2958, 2963, 2959, 2964, 2964, 2965, 2965, 2960, + 2961, 2966, 2967, 2968, 2969, 2966, 2970, 2971, 2974, 0, + 2973, 2967, 2971, 2971, 2975, 2969, 2981, 2974, 2975, 2979, + 2984, 2970, 2968, 2973, 2979, 2980, 2980, 2983, 2983, 2985, - 2995, 2998, 2982, 2996, 2999, 3000, 3007, 2991, 3001, 3001, - 3003, 3003, 3001, 3004, 3004, 3005, 3005, 2999, 3006, 3000, - 3008, 3014, 3014, 3009, 3011, 3015, 3007, 3006, 3009, 3012, - 3011, 3013, 3016, 3017, 3012, 3018, 3013, 3019, 3021, 3008, - 3018, 3020, 3028, 3015, 3016, 3022, 3022, 3020, 3024, 3027, - 3027, 3025, 3024, 3026, 3017, 3019, 3025, 3029, 3026, 3030, - 3032, 3028, 3036, 3021, 3034, 3034, 3037, 3039, 3038, 3040, - 3041, 3039, 3029, 3042, 3030, 3036, 3043, 3044, 3040, 3037, - 3032, 3038, 3044, 3045, 3043, 3047, 3041, 3046, 3046, 3048, - 3049, 3051, 3042, 3057, 3047, 3050, 3050, 3054, 3054, 3055, + 2981, 2986, 2988, 2988, 2984, 2989, 2990, 2994, 2995, 2998, + 2999, 2996, 3003, 2995, 2989, 3001, 2999, 3005, 2990, 2986, + 2996, 3006, 3005, 3010, 2985, 3008, 3006, 3001, 3010, 2998, + 3007, 3007, 2994, 3003, 3008, 3011, 3012, 3013, 3013, 3015, + 3015, 3013, 3016, 3016, 3017, 3017, 3018, 3019, 3011, 3020, + 3012, 3021, 3023, 3027, 3024, 3018, 3021, 3025, 3023, 3024, + 3026, 3026, 3025, 3028, 3029, 3030, 3031, 3019, 3020, 3033, + 3030, 3027, 3032, 3034, 3034, 3028, 3036, 3037, 3032, 3040, + 3036, 3038, 3037, 3044, 3031, 3029, 3038, 3039, 3039, 3041, + 3042, 3046, 3046, 3048, 3033, 3049, 3050, 3051, 3040, 3053, - 3055, 3059, 3059, 3045, 3061, 3062, 3063, 3048, 3064, 3069, - 3051, 3063, 3065, 3070, 3057, 3072, 3049, 3065, 3068, 3068, - 3061, 3062, 3070, 3073, 3064, 3071, 3075, 3075, 3077, 3069, - 3076, 3071, 3078, 3078, 3080, 3082, 3084, 3083, 3072, 3086, - 3080, 3084, 3073, 3083, 3076, 3087, 3087, 3077, 3088, 3088, - 3089, 3090, 3091, 3091, 3093, 3082, 3092, 3094, 3095, 3096, - 3098, 3086, 3097, 3093, 3095, 3089, 3100, 3092, 3099, 3099, - 3101, 3090, 3091, 3101, 3097, 3107, 3102, 3094, 3096, 3102, - 3098, 3100, 3103, 3103, 3108, 3109, 3112, 3107, 3110, 3110, - 3111, 3109, 3112, 3111, 3113, 3115, 3116, 3116, 3117, 3118, + 3054, 3051, 3052, 3044, 3041, 3042, 3048, 3056, 3049, 3050, + 3055, 3052, 3056, 3057, 3059, 3053, 3058, 3058, 3055, 3054, + 3060, 3061, 3063, 3059, 3062, 3062, 3066, 3066, 3067, 3068, + 3068, 3070, 3074, 3057, 3067, 3072, 3072, 3075, 3060, 3076, + 3077, 3063, 3081, 3081, 3076, 3078, 3082, 3061, 3074, 3083, + 3078, 3084, 3070, 3075, 3085, 3086, 3077, 3084, 3083, 3088, + 3088, 3089, 3090, 3091, 3091, 3093, 3082, 3095, 3097, 3099, + 3096, 3093, 3103, 3097, 3086, 3089, 3096, 3085, 3100, 3100, + 3102, 3090, 3101, 3101, 3104, 3104, 3105, 3095, 3107, 3106, + 3108, 3099, 3103, 3109, 3110, 3102, 3108, 3105, 3106, 3111, - 3115, 3119, 3120, 3117, 3108, 3121, 3121, 3119, 3124, 3123, - 3125, 3126, 3113, 3127, 3127, 3128, 3129, 3144, 3118, 3120, - 3120, 3123, 3130, 3144, 3126, 3136, 3124, 3132, 3132, 3133, - 3133, 3130, 3129, 3135, 3128, 3125, 3134, 3134, 3135, 3136, - 3137, 3138, 3138, 3139, 3139, 3137, 3140, 3140, 3141, 3141, - 3142, 3143, 3145, 3147, 3147, 3150, 3152, 3145, 3153, 3155, - 3154, 3156, 3156, 3142, 3158, 3158, 3159, 3160, 3161, 3162, - 3164, 3164, 3165, 3165, 3150, 3163, 3167, 3143, 3152, 3154, - 3153, 3155, 3161, 3169, 3163, 3168, 3160, 3170, 3171, 3162, - 3174, 3168, 3159, 3171, 3167, 3175, 3175, 3177, 3177, 3178, + 3112, 3112, 3113, 3121, 3104, 0, 3110, 3114, 3107, 3120, + 3114, 3115, 3109, 3126, 3115, 3116, 3116, 3113, 3122, 3111, + 3131, 3120, 3125, 3121, 3122, 3123, 3123, 3124, 3125, 3128, + 3124, 3126, 3129, 3129, 3128, 3130, 3132, 3133, 3136, 3131, + 3130, 3137, 3132, 3134, 3134, 3138, 3141, 3139, 3140, 3140, + 3136, 3142, 3143, 3148, 3133, 3133, 3145, 3145, 3148, 3137, + 3139, 3143, 3146, 3146, 3149, 3141, 3150, 3142, 3147, 3147, + 3138, 3150, 3151, 3151, 3152, 3152, 3153, 3153, 3149, 3154, + 3154, 3155, 3156, 3157, 3164, 3158, 3160, 3160, 3166, 3157, + 3158, 3162, 3162, 3167, 3155, 3168, 3169, 3170, 3170, 3172, - 3179, 3180, 3182, 3169, 3178, 3181, 3170, 3180, 3183, 3183, - 3182, 3174, 3186, 3184, 3179, 3187, 3186, 3181, 3184, 3188, - 3187, 3189, 3190, 3191, 3192, 3194, 3195, 3190, 3196, 3197, - 3192, 3200, 3199, 3194, 3201, 3191, 3202, 3203, 3205, 3188, - 3206, 3189, 3203, 3205, 3210, 3195, 0, 3200, 3196, 3197, - 3199, 3201, 3201, 3207, 3212, 3211, 3208, 3202, 3211, 3207, - 3206, 3208, 3216, 3216, 3210, 3217, 3217, 3212, 3218, 3223, - 3223, 3224, 3218, 3225, 3226, 3226, 3224, 3228, 3228, 3229, - 3229, 3233, 3229, 3230, 3230, 3233, 3230, 3231, 3231, 3235, - 3232, 3232, 3225, 3232, 3235, 3236, 3237, 3237, 3238, 3239, + 3172, 3173, 3174, 3164, 3176, 3175, 3184, 3177, 3156, 3183, + 3166, 3178, 3178, 3181, 3168, 3167, 3177, 3188, 3169, 3175, + 3182, 3174, 3179, 3179, 3176, 3184, 3182, 3173, 3185, 3183, + 3195, 3181, 3193, 3185, 3189, 3189, 3191, 3191, 3188, 3192, + 3196, 3194, 3195, 3202, 3192, 3203, 3193, 3194, 3196, 3197, + 3197, 3198, 3205, 3200, 3201, 3204, 3198, 3200, 3208, 3201, + 3204, 3206, 3209, 3202, 3205, 3203, 3208, 3206, 3210, 3211, + 3214, 3217, 3213, 3216, 3215, 3219, 3217, 3220, 3221, 3224, + 3219, 3209, 3222, 0, 3221, 3226, 3214, 3222, 3210, 3211, + 3213, 3215, 3215, 3225, 3216, 3239, 3225, 3220, 3226, 3224, - 3242, 3242, 3243, 3244, 3236, 3245, 3246, 3246, 3247, 3250, - 3245, 3251, 3253, 3239, 3254, 3252, 3238, 3256, 3251, 3252, - 3257, 3253, 3243, 3244, 3259, 3257, 3258, 3258, 3247, 3254, - 3260, 3260, 3263, 3259, 3250, 3256, 3261, 3261, 3262, 3262, - 3264, 3265, 3268, 3266, 3269, 3264, 3267, 3263, 3266, 3266, - 3265, 3270, 3267, 3265, 3273, 3271, 3272, 3274, 3274, 3269, - 3271, 3272, 3275, 3276, 3277, 3277, 3279, 3268, 3275, 3276, - 3278, 3278, 3270, 3273, 3280, 3283, 3283, 3285, 3285, 3280, - 3286, 3279, 3289, 3289, 3290, 3290, 3291, 3291, 3298, 3286, - 3292, 3292, 3294, 3294, 3295, 3295, 3296, 3296, 3297, 3297, + 3230, 3230, 3231, 3231, 3232, 3237, 3237, 3238, 3232, 3240, + 3240, 3386, 3238, 3386, 3239, 3243, 3243, 3244, 3244, 3248, + 3244, 3245, 3245, 3248, 3245, 3246, 3246, 3247, 3247, 3250, + 3247, 3251, 3252, 3252, 3250, 3253, 3254, 3257, 3257, 3258, + 3251, 3259, 3260, 3261, 3261, 3262, 3265, 3260, 3266, 3268, + 3254, 3269, 3267, 3253, 3271, 3266, 3267, 3272, 3268, 3258, + 3274, 3259, 3272, 3273, 3273, 3262, 3269, 3275, 3275, 3274, + 3278, 3265, 3271, 3276, 3276, 3277, 3277, 3279, 3280, 3283, + 3282, 3284, 3279, 3281, 3285, 3278, 3282, 3280, 3281, 3281, + 3280, 3288, 3286, 3287, 3289, 3289, 3284, 3286, 3287, 3294, - 3300, 3301, 3301, 3302, 3302, 3304, 3303, 3305, 3310, 3300, - 3307, 3307, 3308, 3311, 3298, 3303, 3312, 3304, 3309, 3309, - 3313, 3313, 3316, 3310, 3314, 3314, 3311, 3305, 3312, 3317, - 3317, 3308, 3320, 3321, 3322, 3324, 3321, 3316, 3323, 3323, - 3326, 3327, 3328, 3326, 3329, 3330, 3332, 3327, 3331, 3329, - 3320, 3334, 3335, 3324, 3338, 3339, 3328, 3334, 3338, 3342, - 3322, 3335, 3332, 3351, 3330, 3355, 3331, 3361, 3351, 3352, - 3339, 3364, 3352, 3356, 3356, 3357, 3357, 3362, 3355, 3359, - 3359, 3366, 3368, 3363, 3370, 3342, 3362, 3363, 3369, 3370, - 3361, 3364, 3371, 3372, 3371, 3366, 3373, 3373, 3374, 3369, + 3290, 3291, 3292, 3292, 3283, 3285, 3290, 3291, 3293, 3293, + 3288, 3295, 3298, 3298, 3294, 3301, 3295, 3300, 3300, 3304, + 3304, 3305, 3305, 3313, 3301, 3306, 3306, 3307, 3307, 3309, + 3309, 3310, 3310, 3311, 3311, 3312, 3312, 3315, 3316, 3316, + 3317, 3317, 3318, 3319, 3320, 3325, 3315, 3322, 3322, 3313, + 3323, 3318, 3324, 3324, 3326, 3319, 3327, 3328, 3328, 3331, + 3325, 3329, 3329, 3335, 3320, 3332, 3332, 3326, 3327, 3323, + 3336, 3337, 3339, 3336, 3331, 3338, 3338, 3341, 3342, 3343, + 3341, 3335, 3344, 3345, 3342, 3346, 3349, 3344, 3347, 3350, + 3339, 3353, 3349, 3343, 3354, 3353, 3357, 3337, 3350, 3370, - 3375, 3377, 3376, 3378, 3380, 3368, 3379, 3382, 3372, 3383, - 3381, 3374, 3382, 3380, 3385, 3385, 3386, 3377, 3384, 3375, - 3376, 3379, 3381, 3384, 3387, 3391, 3392, 3400, 3378, 3387, - 3383, 3393, 3393, 3394, 3395, 3395, 3386, 3396, 3396, 3391, - 3397, 3397, 3394, 3398, 3398, 3399, 3392, 3400, 3401, 3402, - 3403, 3401, 3404, 3405, 3402, 3403, 3406, 3407, 3408, 3411, - 3409, 3415, 3406, 3416, 3399, 3409, 3410, 3410, 3405, 3419, - 3408, 3407, 3412, 3412, 3414, 3414, 3415, 3404, 3421, 3411, - 3417, 3417, 3416, 3426, 3419, 3424, 3424, 3425, 3425, 3427, - 3430, 3426, 3428, 3429, 3431, 3432, 3421, 3433, 3428, 3429, + 3366, 3376, 3345, 3346, 3347, 3366, 3379, 3367, 3383, 3354, + 3367, 3377, 3370, 3371, 3371, 3372, 3372, 3374, 3374, 3378, + 3377, 3381, 3357, 3378, 3376, 3384, 3379, 3385, 3387, 3388, + 3388, 3383, 3385, 3389, 3390, 3381, 3384, 3391, 3392, 3393, + 3395, 3394, 3397, 3387, 3398, 3396, 3389, 3397, 3401, 3395, + 3400, 3400, 3407, 3390, 3392, 3391, 3394, 3396, 3399, 3406, + 0, 3402, 3409, 3399, 3393, 3398, 3402, 3414, 3401, 3408, + 3408, 3409, 3407, 3406, 3410, 3410, 3411, 3411, 3412, 3412, + 3413, 3413, 3415, 3417, 3416, 3418, 3414, 3416, 3417, 3419, + 3418, 3420, 3421, 3422, 3424, 3426, 3423, 3430, 3421, 3424, - 3434, 3434, 3433, 3439, 3430, 3436, 3436, 3431, 3427, 3440, - 3445, 3442, 3443, 3446, 3432, 3447, 3443, 3450, 3446, 3448, - 3449, 3451, 3452, 3456, 3439, 3442, 3451, 3452, 3457, 3440, - 3445, 3458, 3448, 3449, 3447, 3461, 3450, 3453, 3453, 3459, - 3459, 3461, 3460, 3456, 3462, 3462, 3457, 3460, 3463, 3464, - 3458, 3465, 3466, 3463, 3464, 3467, 3465, 3469, 3469, 3470, - 3474, 3467, 3471, 3471, 3470, 3473, 3475, 3476, 3477, 3473, - 3478, 3466, 3479, 3475, 3487, 3480, 3478, 3482, 3482, 3474, - 3484, 3484, 3488, 3485, 3486, 3489, 3476, 3477, 3480, 3486, - 3492, 3479, 3485, 3487, 3491, 3485, 3490, 3490, 3489, 3491, + 3425, 3425, 3415, 3427, 3427, 3431, 3420, 3422, 3423, 3429, + 3429, 3434, 3430, 3436, 3419, 3426, 3432, 3432, 3439, 3439, + 3440, 3440, 3441, 3442, 3431, 3445, 3434, 3443, 3444, 3447, + 3441, 3436, 3446, 3443, 3444, 3448, 3449, 3449, 3454, 3445, + 3448, 3455, 3442, 3451, 3451, 3446, 3457, 3458, 3447, 3460, + 3461, 3458, 3462, 3463, 3464, 3461, 3465, 3466, 3467, 3454, + 3457, 3455, 3466, 3467, 3468, 3468, 3463, 3464, 3471, 3460, + 3473, 3462, 3472, 3474, 3474, 3465, 3475, 3476, 3477, 3477, + 3478, 3475, 3479, 3476, 3481, 3478, 3480, 3479, 3471, 3473, + 3472, 3480, 3482, 3484, 3484, 3485, 3486, 3486, 3482, 3489, - 3494, 3488, 3496, 3492, 3495, 3495, 3497, 3497, 3498, 3498, - 3499, 3500, 3501, 3502, 3502, 3499, 0, 3503, 3500, 3505, - 3505, 3496, 3503, 3504, 3508, 3504, 3494, 3506, 3507, 3510, - 3513, 3501, 3509, 3517, 3506, 3507, 3515, 3509, 3512, 3512, - 3516, 3515, 3518, 3508, 3522, 3516, 3519, 3519, 3510, 3513, - 3521, 3521, 3517, 3523, 3524, 3524, 3525, 3525, 3526, 3528, - 3528, 3518, 3530, 3522, 3536, 3526, 3529, 3529, 3532, 3530, - 3535, 3537, 3523, 3532, 0, 3535, 3538, 3538, 3539, 3539, - 0, 0, 0, 3536, 0, 0, 0, 0, 0, 0, - 3537, 3543, 3543, 3543, 3543, 3543, 3543, 3543, 3544, 3544, + 3485, 3488, 3490, 3481, 3491, 3488, 3492, 3493, 3494, 3490, + 3500, 3495, 3502, 3493, 3497, 3497, 3499, 3499, 3489, 3500, + 3503, 3501, 3500, 3491, 3495, 3492, 3501, 3494, 3504, 3505, + 3505, 3502, 3506, 3507, 3509, 3510, 3510, 3506, 3511, 3503, + 3516, 3504, 3512, 3512, 3513, 3513, 3507, 3514, 3515, 3517, + 3517, 3518, 3514, 3520, 3520, 3515, 3518, 3511, 3521, 3516, + 3509, 3519, 3522, 3519, 3523, 3521, 3524, 3525, 3528, 3522, + 3530, 3524, 3527, 3527, 3531, 3530, 3532, 3533, 3537, 3531, + 3534, 3534, 3538, 3523, 3536, 3536, 3525, 3528, 3539, 3539, + 3540, 3540, 3541, 3543, 3543, 3532, 3533, 3537, 3545, 3541, - 3544, 3544, 3544, 3544, 3544, 3545, 3545, 3545, 3545, 3545, - 3545, 3545, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3547, - 3547, 3547, 3547, 3547, 3547, 3547, 3548, 3548, 3548, 3548, - 3548, 3548, 3548, 3549, 3549, 3549, 3549, 3549, 3549, 3549, - 3551, 3551, 0, 3551, 3551, 3551, 3551, 3552, 3552, 0, - 0, 0, 3552, 3552, 3553, 3553, 0, 0, 3553, 0, - 3553, 3554, 0, 0, 0, 0, 0, 3554, 3555, 3555, - 0, 0, 0, 3555, 3555, 3556, 0, 0, 0, 0, - 0, 3556, 3557, 3557, 0, 3557, 3557, 3557, 3557, 3558, - 0, 0, 0, 0, 0, 3558, 3559, 3559, 0, 0, + 3551, 3538, 3544, 3544, 3547, 3545, 3550, 3552, 0, 3547, + 0, 3550, 3553, 3553, 3554, 3554, 0, 0, 0, 3551, + 0, 0, 0, 0, 0, 0, 3552, 3558, 3558, 3558, + 3558, 3558, 3558, 3558, 3559, 3559, 3559, 3559, 3559, 3559, + 3559, 3560, 3560, 3560, 3560, 3560, 3560, 3560, 3561, 3561, + 3561, 3561, 3561, 3561, 3561, 3562, 3562, 3562, 3562, 3562, + 3562, 3562, 3563, 3563, 3563, 3563, 3563, 3563, 3563, 3564, + 3564, 3564, 3564, 3564, 3564, 3564, 3566, 3566, 0, 3566, + 3566, 3566, 3566, 3567, 3567, 0, 0, 0, 3567, 3567, + 3568, 3568, 0, 0, 3568, 0, 3568, 3569, 0, 0, - 0, 3559, 3559, 3560, 3560, 0, 3560, 3560, 3560, 3560, - 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, - 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, - 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, - 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, 3542, - 3542 + 0, 0, 0, 3569, 3570, 3570, 0, 0, 0, 3570, + 3570, 3571, 0, 0, 0, 0, 0, 3571, 3572, 3572, + 0, 3572, 3572, 3572, 3572, 3573, 0, 0, 0, 0, + 0, 3573, 3574, 3574, 0, 0, 0, 3574, 3574, 3575, + 3575, 0, 3575, 3575, 3575, 3575, 3557, 3557, 3557, 3557, + 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, + 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, + 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, + 3557, 3557, 3557, 3557, 3557, 3557, 3557 } ; static yy_state_type yy_last_accepting_state; @@ -3328,7 +3339,7 @@ static void config_end_include(void) } #endif -#line 3329 "" +#line 3340 "" #define YY_NO_INPUT 1 #line 191 "./util/configlexer.lex" #ifndef YY_NO_UNPUT @@ -3337,9 +3348,9 @@ static void config_end_include(void) #ifndef YY_NO_INPUT #define YY_NO_INPUT 1 #endif -#line 3338 "" +#line 3349 "" -#line 3340 "" +#line 3351 "" #define INITIAL 0 #define quotedstring 1 @@ -3563,7 +3574,7 @@ YY_DECL { #line 211 "./util/configlexer.lex" -#line 3564 "" +#line 3575 "" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -3596,13 +3607,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 >= 3543 ) + if ( yy_current_state >= 3558 ) 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] != 6911 ); + while ( yy_base[yy_current_state] != 6947 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -5046,27 +5057,27 @@ YY_RULE_SETUP case 282: YY_RULE_SETUP #line 505 "./util/configlexer.lex" -{ YDVAR(1, VAR_OUTBOUND_MSG_RETRY) } +{ YDVAR(1, VAR_IP_RATELIMIT_BACKOFF) } YY_BREAK case 283: YY_RULE_SETUP #line 506 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOW_RTT) } +{ YDVAR(1, VAR_RATELIMIT_BACKOFF) } YY_BREAK case 284: YY_RULE_SETUP #line 507 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_NUM) } +{ YDVAR(1, VAR_OUTBOUND_MSG_RETRY) } YY_BREAK case 285: YY_RULE_SETUP #line 508 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } +{ YDVAR(1, VAR_LOW_RTT) } YY_BREAK case 286: YY_RULE_SETUP #line 509 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } +{ YDVAR(1, VAR_FAST_SERVER_NUM) } YY_BREAK case 287: YY_RULE_SETUP @@ -5076,240 +5087,250 @@ YY_RULE_SETUP case 288: YY_RULE_SETUP #line 511 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_TAG) } +{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 289: YY_RULE_SETUP #line 512 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP) } +{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 290: YY_RULE_SETUP #line 513 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_DATA) } +{ YDVAR(2, VAR_RESPONSE_IP_TAG) } YY_BREAK case 291: YY_RULE_SETUP #line 514 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSCRYPT) } +{ YDVAR(2, VAR_RESPONSE_IP) } YY_BREAK case 292: YY_RULE_SETUP #line 515 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } +{ YDVAR(2, VAR_RESPONSE_IP_DATA) } YY_BREAK case 293: YY_RULE_SETUP #line 516 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PORT) } +{ YDVAR(0, VAR_DNSCRYPT) } YY_BREAK case 294: YY_RULE_SETUP #line 517 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } +{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } YY_BREAK case 295: YY_RULE_SETUP #line 518 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } +{ YDVAR(1, VAR_DNSCRYPT_PORT) } YY_BREAK case 296: YY_RULE_SETUP #line 519 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } YY_BREAK case 297: YY_RULE_SETUP #line 520 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } +{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } YY_BREAK case 298: YY_RULE_SETUP #line 521 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } YY_BREAK case 299: YY_RULE_SETUP -#line 523 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } +#line 522 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } YY_BREAK case 300: YY_RULE_SETUP -#line 525 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } +#line 523 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } YY_BREAK case 301: YY_RULE_SETUP -#line 526 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } +#line 525 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } YY_BREAK case 302: YY_RULE_SETUP #line 527 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_RESPONSES) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } YY_BREAK case 303: YY_RULE_SETUP #line 528 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } YY_BREAK case 304: YY_RULE_SETUP #line 529 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_QUERIES) } +{ YDVAR(1, VAR_PAD_RESPONSES) } YY_BREAK case 305: YY_RULE_SETUP #line 530 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) } +{ YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) } YY_BREAK case 306: YY_RULE_SETUP #line 531 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_ENABLED) } +{ YDVAR(1, VAR_PAD_QUERIES) } YY_BREAK case 307: YY_RULE_SETUP #line 532 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } +{ YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) } YY_BREAK case 308: YY_RULE_SETUP #line 533 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_HOOK) } +{ YDVAR(1, VAR_IPSECMOD_ENABLED) } YY_BREAK case 309: YY_RULE_SETUP #line 534 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } +{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } YY_BREAK case 310: YY_RULE_SETUP #line 535 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } +{ YDVAR(1, VAR_IPSECMOD_HOOK) } YY_BREAK case 311: YY_RULE_SETUP #line 536 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } +{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } YY_BREAK case 312: YY_RULE_SETUP #line 537 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_STRICT) } +{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } YY_BREAK case 313: YY_RULE_SETUP #line 538 "./util/configlexer.lex" -{ YDVAR(0, VAR_CACHEDB) } +{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } YY_BREAK case 314: YY_RULE_SETUP #line 539 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_BACKEND) } +{ YDVAR(1, VAR_IPSECMOD_STRICT) } YY_BREAK case 315: YY_RULE_SETUP #line 540 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } +{ YDVAR(0, VAR_CACHEDB) } YY_BREAK case 316: YY_RULE_SETUP #line 541 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISHOST) } +{ YDVAR(1, VAR_CACHEDB_BACKEND) } YY_BREAK case 317: YY_RULE_SETUP #line 542 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISPORT) } +{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } YY_BREAK case 318: YY_RULE_SETUP #line 543 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } +{ YDVAR(1, VAR_CACHEDB_REDISHOST) } YY_BREAK case 319: YY_RULE_SETUP #line 544 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } +{ YDVAR(1, VAR_CACHEDB_REDISPORT) } YY_BREAK case 320: YY_RULE_SETUP #line 545 "./util/configlexer.lex" -{ YDVAR(0, VAR_IPSET) } +{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } YY_BREAK case 321: YY_RULE_SETUP #line 546 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V4) } +{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } YY_BREAK case 322: YY_RULE_SETUP #line 547 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V6) } +{ YDVAR(0, VAR_IPSET) } YY_BREAK case 323: YY_RULE_SETUP #line 548 "./util/configlexer.lex" -{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } +{ YDVAR(1, VAR_IPSET_NAME_V4) } YY_BREAK case 324: YY_RULE_SETUP #line 549 "./util/configlexer.lex" -{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } +{ YDVAR(1, VAR_IPSET_NAME_V6) } YY_BREAK case 325: YY_RULE_SETUP #line 550 "./util/configlexer.lex" -{ YDVAR(2, VAR_EDNS_CLIENT_STRING) } +{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } YY_BREAK case 326: YY_RULE_SETUP #line 551 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) } +{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } YY_BREAK case 327: YY_RULE_SETUP #line 552 "./util/configlexer.lex" -{ YDVAR(1, VAR_NSID ) } +{ YDVAR(2, VAR_EDNS_CLIENT_STRING) } YY_BREAK case 328: -/* rule 328 can match eol */ YY_RULE_SETUP #line 553 "./util/configlexer.lex" +{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) } + YY_BREAK +case 329: +YY_RULE_SETUP +#line 554 "./util/configlexer.lex" +{ YDVAR(1, VAR_NSID ) } + YY_BREAK +case 330: +/* rule 330 can match eol */ +YY_RULE_SETUP +#line 555 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK /* Quoted strings. Strip leading and ending quotes */ -case 329: +case 331: YY_RULE_SETUP -#line 556 "./util/configlexer.lex" +#line 558 "./util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 557 "./util/configlexer.lex" +#line 559 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 330: +case 332: YY_RULE_SETUP -#line 562 "./util/configlexer.lex" +#line 564 "./util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK -case 331: -/* rule 331 can match eol */ +case 333: +/* rule 333 can match eol */ YY_RULE_SETUP -#line 563 "./util/configlexer.lex" +#line 565 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 332: +case 334: YY_RULE_SETUP -#line 565 "./util/configlexer.lex" +#line 567 "./util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -5322,34 +5343,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 333: +case 335: YY_RULE_SETUP -#line 577 "./util/configlexer.lex" +#line 579 "./util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 578 "./util/configlexer.lex" +#line 580 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 334: +case 336: YY_RULE_SETUP -#line 583 "./util/configlexer.lex" +#line 585 "./util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK -case 335: -/* rule 335 can match eol */ +case 337: +/* rule 337 can match eol */ YY_RULE_SETUP -#line 584 "./util/configlexer.lex" +#line 586 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 336: +case 338: YY_RULE_SETUP -#line 586 "./util/configlexer.lex" +#line 588 "./util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -5362,38 +5383,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 337: +case 339: YY_RULE_SETUP -#line 598 "./util/configlexer.lex" +#line 600 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 600 "./util/configlexer.lex" +#line 602 "./util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); } YY_BREAK -case 338: -YY_RULE_SETUP -#line 604 "./util/configlexer.lex" -{ LEXOUT(("ISP ")); /* ignore */ } - YY_BREAK -case 339: -/* rule 339 can match eol */ -YY_RULE_SETUP -#line 605 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++;} - YY_BREAK case 340: YY_RULE_SETUP #line 606 "./util/configlexer.lex" -{ LEXOUT(("IQS ")); BEGIN(include_quoted); } +{ LEXOUT(("ISP ")); /* ignore */ } YY_BREAK case 341: +/* rule 341 can match eol */ YY_RULE_SETUP #line 607 "./util/configlexer.lex" +{ LEXOUT(("NL\n")); cfg_parser->line++;} + YY_BREAK +case 342: +YY_RULE_SETUP +#line 608 "./util/configlexer.lex" +{ LEXOUT(("IQS ")); BEGIN(include_quoted); } + YY_BREAK +case 343: +YY_RULE_SETUP +#line 609 "./util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 0); @@ -5401,27 +5422,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 612 "./util/configlexer.lex" +#line 614 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 342: +case 344: YY_RULE_SETUP -#line 616 "./util/configlexer.lex" +#line 618 "./util/configlexer.lex" { LEXOUT(("ISTR(%s) ", yytext)); yymore(); } YY_BREAK -case 343: -/* rule 343 can match eol */ +case 345: +/* rule 345 can match eol */ YY_RULE_SETUP -#line 617 "./util/configlexer.lex" +#line 619 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 344: +case 346: YY_RULE_SETUP -#line 619 "./util/configlexer.lex" +#line 621 "./util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -5431,7 +5452,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 625 "./util/configlexer.lex" +#line 627 "./util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ @@ -5446,39 +5467,39 @@ case YY_STATE_EOF(val): } YY_BREAK /* include-toplevel: directive */ -case 345: +case 347: YY_RULE_SETUP -#line 639 "./util/configlexer.lex" +#line 641 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include_toplevel); } YY_BREAK case YY_STATE_EOF(include_toplevel): -#line 642 "./util/configlexer.lex" +#line 644 "./util/configlexer.lex" { yyerror("EOF inside include_toplevel directive"); BEGIN(inc_prev); } YY_BREAK -case 346: -YY_RULE_SETUP -#line 646 "./util/configlexer.lex" -{ LEXOUT(("ITSP ")); /* ignore */ } - YY_BREAK -case 347: -/* rule 347 can match eol */ -YY_RULE_SETUP -#line 647 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++; } - YY_BREAK case 348: YY_RULE_SETUP #line 648 "./util/configlexer.lex" -{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } +{ LEXOUT(("ITSP ")); /* ignore */ } YY_BREAK case 349: +/* rule 349 can match eol */ YY_RULE_SETUP #line 649 "./util/configlexer.lex" +{ LEXOUT(("NL\n")); cfg_parser->line++; } + YY_BREAK +case 350: +YY_RULE_SETUP +#line 650 "./util/configlexer.lex" +{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } + YY_BREAK +case 351: +YY_RULE_SETUP +#line 651 "./util/configlexer.lex" { LEXOUT(("ITunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 1); @@ -5487,29 +5508,29 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_toplevel_quoted): -#line 655 "./util/configlexer.lex" +#line 657 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 350: +case 352: YY_RULE_SETUP -#line 659 "./util/configlexer.lex" +#line 661 "./util/configlexer.lex" { LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } YY_BREAK -case 351: -/* rule 351 can match eol */ +case 353: +/* rule 353 can match eol */ YY_RULE_SETUP -#line 660 "./util/configlexer.lex" +#line 662 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 352: +case 354: YY_RULE_SETUP -#line 664 "./util/configlexer.lex" +#line 666 "./util/configlexer.lex" { LEXOUT(("ITQE ")); yytext[yyleng - 1] = '\0'; @@ -5518,33 +5539,33 @@ YY_RULE_SETUP return (VAR_FORCE_TOPLEVEL); } YY_BREAK -case 353: +case 355: YY_RULE_SETUP -#line 672 "./util/configlexer.lex" +#line 674 "./util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 354: +case 356: YY_RULE_SETUP -#line 676 "./util/configlexer.lex" +#line 678 "./util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 355: +case 357: YY_RULE_SETUP -#line 680 "./util/configlexer.lex" +#line 682 "./util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 356: +case 358: YY_RULE_SETUP -#line 684 "./util/configlexer.lex" +#line 686 "./util/configlexer.lex" ECHO; YY_BREAK -#line 5545 "" +#line 5566 "" case YY_END_OF_BUFFER: { @@ -5839,7 +5860,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 >= 3543 ) + if ( yy_current_state >= 3558 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -5867,11 +5888,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 >= 3543 ) + if ( yy_current_state >= 3558 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 3542); + yy_is_jam = (yy_current_state == 3557); return yy_is_jam ? 0 : yy_current_state; } @@ -6510,6 +6531,6 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 684 "./util/configlexer.lex" +#line 686 "./util/configlexer.lex" diff --git a/util/configlexer.lex b/util/configlexer.lex index 4f6dfffba..34a0e5dd9 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -502,6 +502,8 @@ ratelimit-for-domain{COLON} { YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } ratelimit-below-domain{COLON} { YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } ip-ratelimit-factor{COLON} { YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } ratelimit-factor{COLON} { YDVAR(1, VAR_RATELIMIT_FACTOR) } +ip-ratelimit-backoff{COLON} { YDVAR(1, VAR_IP_RATELIMIT_BACKOFF) } +ratelimit-backoff{COLON} { YDVAR(1, VAR_RATELIMIT_BACKOFF) } outbound-msg-retry{COLON} { YDVAR(1, VAR_OUTBOUND_MSG_RETRY) } low-rtt{COLON} { YDVAR(1, VAR_LOW_RTT) } fast-server-num{COLON} { YDVAR(1, VAR_FAST_SERVER_NUM) } diff --git a/util/configparser.c b/util/configparser.c index cbd550c03..4f534cdf5 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.6.4. */ +/* A Bison parser, made by GNU Bison 3.7.6. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -16,7 +16,7 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program. If not, see . */ + 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 @@ -45,11 +45,11 @@ define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ -/* Identify Bison output. */ -#define YYBISON 1 +/* Identify Bison output, and Bison version. */ +#define YYBISON 30706 -/* Bison version. */ -#define YYBISON_VERSION "3.6.4" +/* Bison version string. */ +#define YYBISON_VERSION "3.7.6" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -119,695 +119,7 @@ extern struct config_parser_state* cfg_parser; # endif # 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 kinds. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - enum yytokentype - { - YYEMPTY = -2, - YYEOF = 0, /* "end of file" */ - YYerror = 256, /* error */ - YYUNDEF = 257, /* "invalid token" */ - SPACE = 258, /* SPACE */ - LETTER = 259, /* LETTER */ - NEWLINE = 260, /* NEWLINE */ - COMMENT = 261, /* COMMENT */ - COLON = 262, /* COLON */ - ANY = 263, /* ANY */ - ZONESTR = 264, /* ZONESTR */ - STRING_ARG = 265, /* STRING_ARG */ - VAR_FORCE_TOPLEVEL = 266, /* VAR_FORCE_TOPLEVEL */ - VAR_SERVER = 267, /* VAR_SERVER */ - VAR_VERBOSITY = 268, /* VAR_VERBOSITY */ - VAR_NUM_THREADS = 269, /* VAR_NUM_THREADS */ - VAR_PORT = 270, /* VAR_PORT */ - VAR_OUTGOING_RANGE = 271, /* VAR_OUTGOING_RANGE */ - VAR_INTERFACE = 272, /* VAR_INTERFACE */ - VAR_PREFER_IP4 = 273, /* VAR_PREFER_IP4 */ - VAR_DO_IP4 = 274, /* VAR_DO_IP4 */ - VAR_DO_IP6 = 275, /* VAR_DO_IP6 */ - VAR_PREFER_IP6 = 276, /* VAR_PREFER_IP6 */ - VAR_DO_UDP = 277, /* VAR_DO_UDP */ - VAR_DO_TCP = 278, /* VAR_DO_TCP */ - VAR_TCP_MSS = 279, /* VAR_TCP_MSS */ - VAR_OUTGOING_TCP_MSS = 280, /* VAR_OUTGOING_TCP_MSS */ - VAR_TCP_IDLE_TIMEOUT = 281, /* VAR_TCP_IDLE_TIMEOUT */ - VAR_EDNS_TCP_KEEPALIVE = 282, /* VAR_EDNS_TCP_KEEPALIVE */ - VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 283, /* VAR_EDNS_TCP_KEEPALIVE_TIMEOUT */ - VAR_CHROOT = 284, /* VAR_CHROOT */ - VAR_USERNAME = 285, /* VAR_USERNAME */ - VAR_DIRECTORY = 286, /* VAR_DIRECTORY */ - VAR_LOGFILE = 287, /* VAR_LOGFILE */ - VAR_PIDFILE = 288, /* VAR_PIDFILE */ - VAR_MSG_CACHE_SIZE = 289, /* VAR_MSG_CACHE_SIZE */ - VAR_MSG_CACHE_SLABS = 290, /* VAR_MSG_CACHE_SLABS */ - VAR_NUM_QUERIES_PER_THREAD = 291, /* VAR_NUM_QUERIES_PER_THREAD */ - VAR_RRSET_CACHE_SIZE = 292, /* VAR_RRSET_CACHE_SIZE */ - VAR_RRSET_CACHE_SLABS = 293, /* VAR_RRSET_CACHE_SLABS */ - VAR_OUTGOING_NUM_TCP = 294, /* VAR_OUTGOING_NUM_TCP */ - VAR_INFRA_HOST_TTL = 295, /* VAR_INFRA_HOST_TTL */ - VAR_INFRA_LAME_TTL = 296, /* VAR_INFRA_LAME_TTL */ - VAR_INFRA_CACHE_SLABS = 297, /* VAR_INFRA_CACHE_SLABS */ - VAR_INFRA_CACHE_NUMHOSTS = 298, /* VAR_INFRA_CACHE_NUMHOSTS */ - VAR_INFRA_CACHE_LAME_SIZE = 299, /* VAR_INFRA_CACHE_LAME_SIZE */ - VAR_NAME = 300, /* VAR_NAME */ - VAR_STUB_ZONE = 301, /* VAR_STUB_ZONE */ - VAR_STUB_HOST = 302, /* VAR_STUB_HOST */ - VAR_STUB_ADDR = 303, /* VAR_STUB_ADDR */ - VAR_TARGET_FETCH_POLICY = 304, /* VAR_TARGET_FETCH_POLICY */ - VAR_HARDEN_SHORT_BUFSIZE = 305, /* VAR_HARDEN_SHORT_BUFSIZE */ - VAR_HARDEN_LARGE_QUERIES = 306, /* VAR_HARDEN_LARGE_QUERIES */ - VAR_FORWARD_ZONE = 307, /* VAR_FORWARD_ZONE */ - VAR_FORWARD_HOST = 308, /* VAR_FORWARD_HOST */ - VAR_FORWARD_ADDR = 309, /* VAR_FORWARD_ADDR */ - VAR_DO_NOT_QUERY_ADDRESS = 310, /* VAR_DO_NOT_QUERY_ADDRESS */ - VAR_HIDE_IDENTITY = 311, /* VAR_HIDE_IDENTITY */ - VAR_HIDE_VERSION = 312, /* VAR_HIDE_VERSION */ - VAR_IDENTITY = 313, /* VAR_IDENTITY */ - VAR_VERSION = 314, /* VAR_VERSION */ - VAR_HARDEN_GLUE = 315, /* VAR_HARDEN_GLUE */ - VAR_MODULE_CONF = 316, /* VAR_MODULE_CONF */ - VAR_TRUST_ANCHOR_FILE = 317, /* VAR_TRUST_ANCHOR_FILE */ - VAR_TRUST_ANCHOR = 318, /* VAR_TRUST_ANCHOR */ - VAR_VAL_OVERRIDE_DATE = 319, /* VAR_VAL_OVERRIDE_DATE */ - VAR_BOGUS_TTL = 320, /* VAR_BOGUS_TTL */ - VAR_VAL_CLEAN_ADDITIONAL = 321, /* VAR_VAL_CLEAN_ADDITIONAL */ - VAR_VAL_PERMISSIVE_MODE = 322, /* VAR_VAL_PERMISSIVE_MODE */ - VAR_INCOMING_NUM_TCP = 323, /* VAR_INCOMING_NUM_TCP */ - VAR_MSG_BUFFER_SIZE = 324, /* VAR_MSG_BUFFER_SIZE */ - VAR_KEY_CACHE_SIZE = 325, /* VAR_KEY_CACHE_SIZE */ - VAR_KEY_CACHE_SLABS = 326, /* VAR_KEY_CACHE_SLABS */ - VAR_TRUSTED_KEYS_FILE = 327, /* VAR_TRUSTED_KEYS_FILE */ - VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 328, /* VAR_VAL_NSEC3_KEYSIZE_ITERATIONS */ - VAR_USE_SYSLOG = 329, /* VAR_USE_SYSLOG */ - VAR_OUTGOING_INTERFACE = 330, /* VAR_OUTGOING_INTERFACE */ - VAR_ROOT_HINTS = 331, /* VAR_ROOT_HINTS */ - VAR_DO_NOT_QUERY_LOCALHOST = 332, /* VAR_DO_NOT_QUERY_LOCALHOST */ - VAR_CACHE_MAX_TTL = 333, /* VAR_CACHE_MAX_TTL */ - VAR_HARDEN_DNSSEC_STRIPPED = 334, /* VAR_HARDEN_DNSSEC_STRIPPED */ - VAR_ACCESS_CONTROL = 335, /* VAR_ACCESS_CONTROL */ - VAR_LOCAL_ZONE = 336, /* VAR_LOCAL_ZONE */ - VAR_LOCAL_DATA = 337, /* VAR_LOCAL_DATA */ - VAR_INTERFACE_AUTOMATIC = 338, /* VAR_INTERFACE_AUTOMATIC */ - VAR_STATISTICS_INTERVAL = 339, /* VAR_STATISTICS_INTERVAL */ - VAR_DO_DAEMONIZE = 340, /* VAR_DO_DAEMONIZE */ - VAR_USE_CAPS_FOR_ID = 341, /* VAR_USE_CAPS_FOR_ID */ - VAR_STATISTICS_CUMULATIVE = 342, /* VAR_STATISTICS_CUMULATIVE */ - VAR_OUTGOING_PORT_PERMIT = 343, /* VAR_OUTGOING_PORT_PERMIT */ - VAR_OUTGOING_PORT_AVOID = 344, /* VAR_OUTGOING_PORT_AVOID */ - VAR_DLV_ANCHOR_FILE = 345, /* VAR_DLV_ANCHOR_FILE */ - VAR_DLV_ANCHOR = 346, /* VAR_DLV_ANCHOR */ - VAR_NEG_CACHE_SIZE = 347, /* VAR_NEG_CACHE_SIZE */ - VAR_HARDEN_REFERRAL_PATH = 348, /* VAR_HARDEN_REFERRAL_PATH */ - VAR_PRIVATE_ADDRESS = 349, /* VAR_PRIVATE_ADDRESS */ - VAR_PRIVATE_DOMAIN = 350, /* VAR_PRIVATE_DOMAIN */ - VAR_REMOTE_CONTROL = 351, /* VAR_REMOTE_CONTROL */ - VAR_CONTROL_ENABLE = 352, /* VAR_CONTROL_ENABLE */ - VAR_CONTROL_INTERFACE = 353, /* VAR_CONTROL_INTERFACE */ - VAR_CONTROL_PORT = 354, /* VAR_CONTROL_PORT */ - VAR_SERVER_KEY_FILE = 355, /* VAR_SERVER_KEY_FILE */ - VAR_SERVER_CERT_FILE = 356, /* VAR_SERVER_CERT_FILE */ - VAR_CONTROL_KEY_FILE = 357, /* VAR_CONTROL_KEY_FILE */ - VAR_CONTROL_CERT_FILE = 358, /* VAR_CONTROL_CERT_FILE */ - VAR_CONTROL_USE_CERT = 359, /* VAR_CONTROL_USE_CERT */ - VAR_TCP_REUSE_TIMEOUT = 360, /* VAR_TCP_REUSE_TIMEOUT */ - VAR_MAX_REUSE_TCP_QUERIES = 361, /* VAR_MAX_REUSE_TCP_QUERIES */ - VAR_EXTENDED_STATISTICS = 362, /* VAR_EXTENDED_STATISTICS */ - VAR_LOCAL_DATA_PTR = 363, /* VAR_LOCAL_DATA_PTR */ - VAR_JOSTLE_TIMEOUT = 364, /* VAR_JOSTLE_TIMEOUT */ - VAR_STUB_PRIME = 365, /* VAR_STUB_PRIME */ - VAR_UNWANTED_REPLY_THRESHOLD = 366, /* VAR_UNWANTED_REPLY_THRESHOLD */ - VAR_LOG_TIME_ASCII = 367, /* VAR_LOG_TIME_ASCII */ - VAR_DOMAIN_INSECURE = 368, /* VAR_DOMAIN_INSECURE */ - VAR_PYTHON = 369, /* VAR_PYTHON */ - VAR_PYTHON_SCRIPT = 370, /* VAR_PYTHON_SCRIPT */ - VAR_VAL_SIG_SKEW_MIN = 371, /* VAR_VAL_SIG_SKEW_MIN */ - VAR_VAL_SIG_SKEW_MAX = 372, /* VAR_VAL_SIG_SKEW_MAX */ - VAR_VAL_MAX_RESTART = 373, /* VAR_VAL_MAX_RESTART */ - VAR_CACHE_MIN_TTL = 374, /* VAR_CACHE_MIN_TTL */ - VAR_VAL_LOG_LEVEL = 375, /* VAR_VAL_LOG_LEVEL */ - VAR_AUTO_TRUST_ANCHOR_FILE = 376, /* VAR_AUTO_TRUST_ANCHOR_FILE */ - VAR_KEEP_MISSING = 377, /* VAR_KEEP_MISSING */ - VAR_ADD_HOLDDOWN = 378, /* VAR_ADD_HOLDDOWN */ - VAR_DEL_HOLDDOWN = 379, /* VAR_DEL_HOLDDOWN */ - VAR_SO_RCVBUF = 380, /* VAR_SO_RCVBUF */ - VAR_EDNS_BUFFER_SIZE = 381, /* VAR_EDNS_BUFFER_SIZE */ - VAR_PREFETCH = 382, /* VAR_PREFETCH */ - VAR_PREFETCH_KEY = 383, /* VAR_PREFETCH_KEY */ - VAR_SO_SNDBUF = 384, /* VAR_SO_SNDBUF */ - VAR_SO_REUSEPORT = 385, /* VAR_SO_REUSEPORT */ - VAR_HARDEN_BELOW_NXDOMAIN = 386, /* VAR_HARDEN_BELOW_NXDOMAIN */ - VAR_IGNORE_CD_FLAG = 387, /* VAR_IGNORE_CD_FLAG */ - VAR_LOG_QUERIES = 388, /* VAR_LOG_QUERIES */ - VAR_LOG_REPLIES = 389, /* VAR_LOG_REPLIES */ - VAR_LOG_LOCAL_ACTIONS = 390, /* VAR_LOG_LOCAL_ACTIONS */ - VAR_TCP_UPSTREAM = 391, /* VAR_TCP_UPSTREAM */ - VAR_SSL_UPSTREAM = 392, /* VAR_SSL_UPSTREAM */ - VAR_TCP_AUTH_QUERY_TIMEOUT = 393, /* VAR_TCP_AUTH_QUERY_TIMEOUT */ - VAR_SSL_SERVICE_KEY = 394, /* VAR_SSL_SERVICE_KEY */ - VAR_SSL_SERVICE_PEM = 395, /* VAR_SSL_SERVICE_PEM */ - VAR_SSL_PORT = 396, /* VAR_SSL_PORT */ - VAR_FORWARD_FIRST = 397, /* VAR_FORWARD_FIRST */ - VAR_STUB_SSL_UPSTREAM = 398, /* VAR_STUB_SSL_UPSTREAM */ - VAR_FORWARD_SSL_UPSTREAM = 399, /* VAR_FORWARD_SSL_UPSTREAM */ - VAR_TLS_CERT_BUNDLE = 400, /* VAR_TLS_CERT_BUNDLE */ - VAR_STUB_TCP_UPSTREAM = 401, /* VAR_STUB_TCP_UPSTREAM */ - VAR_FORWARD_TCP_UPSTREAM = 402, /* VAR_FORWARD_TCP_UPSTREAM */ - VAR_HTTPS_PORT = 403, /* VAR_HTTPS_PORT */ - VAR_HTTP_ENDPOINT = 404, /* VAR_HTTP_ENDPOINT */ - VAR_HTTP_MAX_STREAMS = 405, /* VAR_HTTP_MAX_STREAMS */ - VAR_HTTP_QUERY_BUFFER_SIZE = 406, /* VAR_HTTP_QUERY_BUFFER_SIZE */ - VAR_HTTP_RESPONSE_BUFFER_SIZE = 407, /* VAR_HTTP_RESPONSE_BUFFER_SIZE */ - VAR_HTTP_NODELAY = 408, /* VAR_HTTP_NODELAY */ - VAR_HTTP_NOTLS_DOWNSTREAM = 409, /* VAR_HTTP_NOTLS_DOWNSTREAM */ - VAR_STUB_FIRST = 410, /* VAR_STUB_FIRST */ - VAR_MINIMAL_RESPONSES = 411, /* VAR_MINIMAL_RESPONSES */ - VAR_RRSET_ROUNDROBIN = 412, /* VAR_RRSET_ROUNDROBIN */ - VAR_MAX_UDP_SIZE = 413, /* VAR_MAX_UDP_SIZE */ - VAR_DELAY_CLOSE = 414, /* VAR_DELAY_CLOSE */ - VAR_UDP_CONNECT = 415, /* VAR_UDP_CONNECT */ - VAR_UNBLOCK_LAN_ZONES = 416, /* VAR_UNBLOCK_LAN_ZONES */ - VAR_INSECURE_LAN_ZONES = 417, /* VAR_INSECURE_LAN_ZONES */ - VAR_INFRA_CACHE_MIN_RTT = 418, /* VAR_INFRA_CACHE_MIN_RTT */ - VAR_INFRA_KEEP_PROBING = 419, /* VAR_INFRA_KEEP_PROBING */ - VAR_DNS64_PREFIX = 420, /* VAR_DNS64_PREFIX */ - VAR_DNS64_SYNTHALL = 421, /* VAR_DNS64_SYNTHALL */ - VAR_DNS64_IGNORE_AAAA = 422, /* VAR_DNS64_IGNORE_AAAA */ - VAR_DNSTAP = 423, /* VAR_DNSTAP */ - VAR_DNSTAP_ENABLE = 424, /* VAR_DNSTAP_ENABLE */ - VAR_DNSTAP_SOCKET_PATH = 425, /* VAR_DNSTAP_SOCKET_PATH */ - VAR_DNSTAP_IP = 426, /* VAR_DNSTAP_IP */ - VAR_DNSTAP_TLS = 427, /* VAR_DNSTAP_TLS */ - VAR_DNSTAP_TLS_SERVER_NAME = 428, /* VAR_DNSTAP_TLS_SERVER_NAME */ - VAR_DNSTAP_TLS_CERT_BUNDLE = 429, /* VAR_DNSTAP_TLS_CERT_BUNDLE */ - VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 430, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE */ - VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 431, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE */ - VAR_DNSTAP_SEND_IDENTITY = 432, /* VAR_DNSTAP_SEND_IDENTITY */ - VAR_DNSTAP_SEND_VERSION = 433, /* VAR_DNSTAP_SEND_VERSION */ - VAR_DNSTAP_BIDIRECTIONAL = 434, /* VAR_DNSTAP_BIDIRECTIONAL */ - VAR_DNSTAP_IDENTITY = 435, /* VAR_DNSTAP_IDENTITY */ - VAR_DNSTAP_VERSION = 436, /* VAR_DNSTAP_VERSION */ - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 437, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES */ - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 438, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES */ - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 439, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES */ - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 440, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES */ - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 441, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES */ - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 442, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES */ - VAR_RESPONSE_IP_TAG = 443, /* VAR_RESPONSE_IP_TAG */ - VAR_RESPONSE_IP = 444, /* VAR_RESPONSE_IP */ - VAR_RESPONSE_IP_DATA = 445, /* VAR_RESPONSE_IP_DATA */ - VAR_HARDEN_ALGO_DOWNGRADE = 446, /* VAR_HARDEN_ALGO_DOWNGRADE */ - VAR_IP_TRANSPARENT = 447, /* VAR_IP_TRANSPARENT */ - VAR_IP_DSCP = 448, /* VAR_IP_DSCP */ - VAR_DISABLE_DNSSEC_LAME_CHECK = 449, /* VAR_DISABLE_DNSSEC_LAME_CHECK */ - VAR_IP_RATELIMIT = 450, /* VAR_IP_RATELIMIT */ - VAR_IP_RATELIMIT_SLABS = 451, /* VAR_IP_RATELIMIT_SLABS */ - VAR_IP_RATELIMIT_SIZE = 452, /* VAR_IP_RATELIMIT_SIZE */ - VAR_RATELIMIT = 453, /* VAR_RATELIMIT */ - VAR_RATELIMIT_SLABS = 454, /* VAR_RATELIMIT_SLABS */ - VAR_RATELIMIT_SIZE = 455, /* VAR_RATELIMIT_SIZE */ - VAR_OUTBOUND_MSG_RETRY = 456, /* VAR_OUTBOUND_MSG_RETRY */ - VAR_RATELIMIT_FOR_DOMAIN = 457, /* VAR_RATELIMIT_FOR_DOMAIN */ - VAR_RATELIMIT_BELOW_DOMAIN = 458, /* VAR_RATELIMIT_BELOW_DOMAIN */ - VAR_IP_RATELIMIT_FACTOR = 459, /* VAR_IP_RATELIMIT_FACTOR */ - VAR_RATELIMIT_FACTOR = 460, /* VAR_RATELIMIT_FACTOR */ - VAR_SEND_CLIENT_SUBNET = 461, /* VAR_SEND_CLIENT_SUBNET */ - VAR_CLIENT_SUBNET_ZONE = 462, /* VAR_CLIENT_SUBNET_ZONE */ - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 463, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ - VAR_CLIENT_SUBNET_OPCODE = 464, /* VAR_CLIENT_SUBNET_OPCODE */ - VAR_MAX_CLIENT_SUBNET_IPV4 = 465, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ - VAR_MAX_CLIENT_SUBNET_IPV6 = 466, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ - VAR_MIN_CLIENT_SUBNET_IPV4 = 467, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ - VAR_MIN_CLIENT_SUBNET_IPV6 = 468, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ - VAR_MAX_ECS_TREE_SIZE_IPV4 = 469, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ - VAR_MAX_ECS_TREE_SIZE_IPV6 = 470, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ - VAR_CAPS_WHITELIST = 471, /* VAR_CAPS_WHITELIST */ - VAR_CACHE_MAX_NEGATIVE_TTL = 472, /* VAR_CACHE_MAX_NEGATIVE_TTL */ - VAR_PERMIT_SMALL_HOLDDOWN = 473, /* VAR_PERMIT_SMALL_HOLDDOWN */ - VAR_QNAME_MINIMISATION = 474, /* VAR_QNAME_MINIMISATION */ - VAR_QNAME_MINIMISATION_STRICT = 475, /* VAR_QNAME_MINIMISATION_STRICT */ - VAR_IP_FREEBIND = 476, /* VAR_IP_FREEBIND */ - VAR_DEFINE_TAG = 477, /* VAR_DEFINE_TAG */ - VAR_LOCAL_ZONE_TAG = 478, /* VAR_LOCAL_ZONE_TAG */ - VAR_ACCESS_CONTROL_TAG = 479, /* VAR_ACCESS_CONTROL_TAG */ - VAR_LOCAL_ZONE_OVERRIDE = 480, /* VAR_LOCAL_ZONE_OVERRIDE */ - VAR_ACCESS_CONTROL_TAG_ACTION = 481, /* VAR_ACCESS_CONTROL_TAG_ACTION */ - VAR_ACCESS_CONTROL_TAG_DATA = 482, /* VAR_ACCESS_CONTROL_TAG_DATA */ - VAR_VIEW = 483, /* VAR_VIEW */ - VAR_ACCESS_CONTROL_VIEW = 484, /* VAR_ACCESS_CONTROL_VIEW */ - VAR_VIEW_FIRST = 485, /* VAR_VIEW_FIRST */ - VAR_SERVE_EXPIRED = 486, /* VAR_SERVE_EXPIRED */ - VAR_SERVE_EXPIRED_TTL = 487, /* VAR_SERVE_EXPIRED_TTL */ - VAR_SERVE_EXPIRED_TTL_RESET = 488, /* VAR_SERVE_EXPIRED_TTL_RESET */ - VAR_SERVE_EXPIRED_REPLY_TTL = 489, /* VAR_SERVE_EXPIRED_REPLY_TTL */ - VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 490, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ - VAR_SERVE_ORIGINAL_TTL = 491, /* VAR_SERVE_ORIGINAL_TTL */ - VAR_FAKE_DSA = 492, /* VAR_FAKE_DSA */ - VAR_FAKE_SHA1 = 493, /* VAR_FAKE_SHA1 */ - VAR_LOG_IDENTITY = 494, /* VAR_LOG_IDENTITY */ - VAR_HIDE_TRUSTANCHOR = 495, /* VAR_HIDE_TRUSTANCHOR */ - VAR_HIDE_HTTP_USER_AGENT = 496, /* VAR_HIDE_HTTP_USER_AGENT */ - VAR_HTTP_USER_AGENT = 497, /* VAR_HTTP_USER_AGENT */ - VAR_TRUST_ANCHOR_SIGNALING = 498, /* VAR_TRUST_ANCHOR_SIGNALING */ - VAR_AGGRESSIVE_NSEC = 499, /* VAR_AGGRESSIVE_NSEC */ - VAR_USE_SYSTEMD = 500, /* VAR_USE_SYSTEMD */ - VAR_SHM_ENABLE = 501, /* VAR_SHM_ENABLE */ - VAR_SHM_KEY = 502, /* VAR_SHM_KEY */ - VAR_ROOT_KEY_SENTINEL = 503, /* VAR_ROOT_KEY_SENTINEL */ - VAR_DNSCRYPT = 504, /* VAR_DNSCRYPT */ - VAR_DNSCRYPT_ENABLE = 505, /* VAR_DNSCRYPT_ENABLE */ - VAR_DNSCRYPT_PORT = 506, /* VAR_DNSCRYPT_PORT */ - VAR_DNSCRYPT_PROVIDER = 507, /* VAR_DNSCRYPT_PROVIDER */ - VAR_DNSCRYPT_SECRET_KEY = 508, /* VAR_DNSCRYPT_SECRET_KEY */ - VAR_DNSCRYPT_PROVIDER_CERT = 509, /* VAR_DNSCRYPT_PROVIDER_CERT */ - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 510, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 511, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 512, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 513, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 514, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ - VAR_PAD_RESPONSES = 515, /* VAR_PAD_RESPONSES */ - VAR_PAD_RESPONSES_BLOCK_SIZE = 516, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ - VAR_PAD_QUERIES = 517, /* VAR_PAD_QUERIES */ - VAR_PAD_QUERIES_BLOCK_SIZE = 518, /* VAR_PAD_QUERIES_BLOCK_SIZE */ - VAR_IPSECMOD_ENABLED = 519, /* VAR_IPSECMOD_ENABLED */ - VAR_IPSECMOD_HOOK = 520, /* VAR_IPSECMOD_HOOK */ - VAR_IPSECMOD_IGNORE_BOGUS = 521, /* VAR_IPSECMOD_IGNORE_BOGUS */ - VAR_IPSECMOD_MAX_TTL = 522, /* VAR_IPSECMOD_MAX_TTL */ - VAR_IPSECMOD_WHITELIST = 523, /* VAR_IPSECMOD_WHITELIST */ - VAR_IPSECMOD_STRICT = 524, /* VAR_IPSECMOD_STRICT */ - VAR_CACHEDB = 525, /* VAR_CACHEDB */ - VAR_CACHEDB_BACKEND = 526, /* VAR_CACHEDB_BACKEND */ - VAR_CACHEDB_SECRETSEED = 527, /* VAR_CACHEDB_SECRETSEED */ - VAR_CACHEDB_REDISHOST = 528, /* VAR_CACHEDB_REDISHOST */ - VAR_CACHEDB_REDISPORT = 529, /* VAR_CACHEDB_REDISPORT */ - VAR_CACHEDB_REDISTIMEOUT = 530, /* VAR_CACHEDB_REDISTIMEOUT */ - VAR_CACHEDB_REDISEXPIRERECORDS = 531, /* VAR_CACHEDB_REDISEXPIRERECORDS */ - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 532, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ - VAR_FOR_UPSTREAM = 533, /* VAR_FOR_UPSTREAM */ - VAR_AUTH_ZONE = 534, /* VAR_AUTH_ZONE */ - VAR_ZONEFILE = 535, /* VAR_ZONEFILE */ - VAR_MASTER = 536, /* VAR_MASTER */ - VAR_URL = 537, /* VAR_URL */ - VAR_FOR_DOWNSTREAM = 538, /* VAR_FOR_DOWNSTREAM */ - VAR_FALLBACK_ENABLED = 539, /* VAR_FALLBACK_ENABLED */ - VAR_TLS_ADDITIONAL_PORT = 540, /* VAR_TLS_ADDITIONAL_PORT */ - VAR_LOW_RTT = 541, /* VAR_LOW_RTT */ - VAR_LOW_RTT_PERMIL = 542, /* VAR_LOW_RTT_PERMIL */ - VAR_FAST_SERVER_PERMIL = 543, /* VAR_FAST_SERVER_PERMIL */ - VAR_FAST_SERVER_NUM = 544, /* VAR_FAST_SERVER_NUM */ - VAR_ALLOW_NOTIFY = 545, /* VAR_ALLOW_NOTIFY */ - VAR_TLS_WIN_CERT = 546, /* VAR_TLS_WIN_CERT */ - VAR_TCP_CONNECTION_LIMIT = 547, /* VAR_TCP_CONNECTION_LIMIT */ - VAR_FORWARD_NO_CACHE = 548, /* VAR_FORWARD_NO_CACHE */ - VAR_STUB_NO_CACHE = 549, /* VAR_STUB_NO_CACHE */ - VAR_LOG_SERVFAIL = 550, /* VAR_LOG_SERVFAIL */ - VAR_DENY_ANY = 551, /* VAR_DENY_ANY */ - VAR_UNKNOWN_SERVER_TIME_LIMIT = 552, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ - VAR_LOG_TAG_QUERYREPLY = 553, /* VAR_LOG_TAG_QUERYREPLY */ - VAR_STREAM_WAIT_SIZE = 554, /* VAR_STREAM_WAIT_SIZE */ - VAR_TLS_CIPHERS = 555, /* VAR_TLS_CIPHERS */ - VAR_TLS_CIPHERSUITES = 556, /* VAR_TLS_CIPHERSUITES */ - VAR_TLS_USE_SNI = 557, /* VAR_TLS_USE_SNI */ - VAR_IPSET = 558, /* VAR_IPSET */ - VAR_IPSET_NAME_V4 = 559, /* VAR_IPSET_NAME_V4 */ - VAR_IPSET_NAME_V6 = 560, /* VAR_IPSET_NAME_V6 */ - VAR_TLS_SESSION_TICKET_KEYS = 561, /* VAR_TLS_SESSION_TICKET_KEYS */ - VAR_RPZ = 562, /* VAR_RPZ */ - VAR_TAGS = 563, /* VAR_TAGS */ - VAR_RPZ_ACTION_OVERRIDE = 564, /* VAR_RPZ_ACTION_OVERRIDE */ - VAR_RPZ_CNAME_OVERRIDE = 565, /* VAR_RPZ_CNAME_OVERRIDE */ - VAR_RPZ_LOG = 566, /* VAR_RPZ_LOG */ - VAR_RPZ_LOG_NAME = 567, /* VAR_RPZ_LOG_NAME */ - VAR_DYNLIB = 568, /* VAR_DYNLIB */ - VAR_DYNLIB_FILE = 569, /* VAR_DYNLIB_FILE */ - VAR_EDNS_CLIENT_STRING = 570, /* VAR_EDNS_CLIENT_STRING */ - VAR_EDNS_CLIENT_STRING_OPCODE = 571, /* VAR_EDNS_CLIENT_STRING_OPCODE */ - VAR_NSID = 572, /* VAR_NSID */ - VAR_ZONEMD_PERMISSIVE_MODE = 573, /* VAR_ZONEMD_PERMISSIVE_MODE */ - VAR_ZONEMD_CHECK = 574, /* VAR_ZONEMD_CHECK */ - VAR_ZONEMD_REJECT_ABSENCE = 575, /* VAR_ZONEMD_REJECT_ABSENCE */ - VAR_RPZ_SIGNAL_NXDOMAIN_RA = 576 /* VAR_RPZ_SIGNAL_NXDOMAIN_RA */ - }; - typedef enum yytokentype yytoken_kind_t; -#endif -/* Token kinds. */ -#define YYEOF 0 -#define YYerror 256 -#define YYUNDEF 257 -#define SPACE 258 -#define LETTER 259 -#define NEWLINE 260 -#define COMMENT 261 -#define COLON 262 -#define ANY 263 -#define ZONESTR 264 -#define STRING_ARG 265 -#define VAR_FORCE_TOPLEVEL 266 -#define VAR_SERVER 267 -#define VAR_VERBOSITY 268 -#define VAR_NUM_THREADS 269 -#define VAR_PORT 270 -#define VAR_OUTGOING_RANGE 271 -#define VAR_INTERFACE 272 -#define VAR_PREFER_IP4 273 -#define VAR_DO_IP4 274 -#define VAR_DO_IP6 275 -#define VAR_PREFER_IP6 276 -#define VAR_DO_UDP 277 -#define VAR_DO_TCP 278 -#define VAR_TCP_MSS 279 -#define VAR_OUTGOING_TCP_MSS 280 -#define VAR_TCP_IDLE_TIMEOUT 281 -#define VAR_EDNS_TCP_KEEPALIVE 282 -#define VAR_EDNS_TCP_KEEPALIVE_TIMEOUT 283 -#define VAR_CHROOT 284 -#define VAR_USERNAME 285 -#define VAR_DIRECTORY 286 -#define VAR_LOGFILE 287 -#define VAR_PIDFILE 288 -#define VAR_MSG_CACHE_SIZE 289 -#define VAR_MSG_CACHE_SLABS 290 -#define VAR_NUM_QUERIES_PER_THREAD 291 -#define VAR_RRSET_CACHE_SIZE 292 -#define VAR_RRSET_CACHE_SLABS 293 -#define VAR_OUTGOING_NUM_TCP 294 -#define VAR_INFRA_HOST_TTL 295 -#define VAR_INFRA_LAME_TTL 296 -#define VAR_INFRA_CACHE_SLABS 297 -#define VAR_INFRA_CACHE_NUMHOSTS 298 -#define VAR_INFRA_CACHE_LAME_SIZE 299 -#define VAR_NAME 300 -#define VAR_STUB_ZONE 301 -#define VAR_STUB_HOST 302 -#define VAR_STUB_ADDR 303 -#define VAR_TARGET_FETCH_POLICY 304 -#define VAR_HARDEN_SHORT_BUFSIZE 305 -#define VAR_HARDEN_LARGE_QUERIES 306 -#define VAR_FORWARD_ZONE 307 -#define VAR_FORWARD_HOST 308 -#define VAR_FORWARD_ADDR 309 -#define VAR_DO_NOT_QUERY_ADDRESS 310 -#define VAR_HIDE_IDENTITY 311 -#define VAR_HIDE_VERSION 312 -#define VAR_IDENTITY 313 -#define VAR_VERSION 314 -#define VAR_HARDEN_GLUE 315 -#define VAR_MODULE_CONF 316 -#define VAR_TRUST_ANCHOR_FILE 317 -#define VAR_TRUST_ANCHOR 318 -#define VAR_VAL_OVERRIDE_DATE 319 -#define VAR_BOGUS_TTL 320 -#define VAR_VAL_CLEAN_ADDITIONAL 321 -#define VAR_VAL_PERMISSIVE_MODE 322 -#define VAR_INCOMING_NUM_TCP 323 -#define VAR_MSG_BUFFER_SIZE 324 -#define VAR_KEY_CACHE_SIZE 325 -#define VAR_KEY_CACHE_SLABS 326 -#define VAR_TRUSTED_KEYS_FILE 327 -#define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 328 -#define VAR_USE_SYSLOG 329 -#define VAR_OUTGOING_INTERFACE 330 -#define VAR_ROOT_HINTS 331 -#define VAR_DO_NOT_QUERY_LOCALHOST 332 -#define VAR_CACHE_MAX_TTL 333 -#define VAR_HARDEN_DNSSEC_STRIPPED 334 -#define VAR_ACCESS_CONTROL 335 -#define VAR_LOCAL_ZONE 336 -#define VAR_LOCAL_DATA 337 -#define VAR_INTERFACE_AUTOMATIC 338 -#define VAR_STATISTICS_INTERVAL 339 -#define VAR_DO_DAEMONIZE 340 -#define VAR_USE_CAPS_FOR_ID 341 -#define VAR_STATISTICS_CUMULATIVE 342 -#define VAR_OUTGOING_PORT_PERMIT 343 -#define VAR_OUTGOING_PORT_AVOID 344 -#define VAR_DLV_ANCHOR_FILE 345 -#define VAR_DLV_ANCHOR 346 -#define VAR_NEG_CACHE_SIZE 347 -#define VAR_HARDEN_REFERRAL_PATH 348 -#define VAR_PRIVATE_ADDRESS 349 -#define VAR_PRIVATE_DOMAIN 350 -#define VAR_REMOTE_CONTROL 351 -#define VAR_CONTROL_ENABLE 352 -#define VAR_CONTROL_INTERFACE 353 -#define VAR_CONTROL_PORT 354 -#define VAR_SERVER_KEY_FILE 355 -#define VAR_SERVER_CERT_FILE 356 -#define VAR_CONTROL_KEY_FILE 357 -#define VAR_CONTROL_CERT_FILE 358 -#define VAR_CONTROL_USE_CERT 359 -#define VAR_TCP_REUSE_TIMEOUT 360 -#define VAR_MAX_REUSE_TCP_QUERIES 361 -#define VAR_EXTENDED_STATISTICS 362 -#define VAR_LOCAL_DATA_PTR 363 -#define VAR_JOSTLE_TIMEOUT 364 -#define VAR_STUB_PRIME 365 -#define VAR_UNWANTED_REPLY_THRESHOLD 366 -#define VAR_LOG_TIME_ASCII 367 -#define VAR_DOMAIN_INSECURE 368 -#define VAR_PYTHON 369 -#define VAR_PYTHON_SCRIPT 370 -#define VAR_VAL_SIG_SKEW_MIN 371 -#define VAR_VAL_SIG_SKEW_MAX 372 -#define VAR_VAL_MAX_RESTART 373 -#define VAR_CACHE_MIN_TTL 374 -#define VAR_VAL_LOG_LEVEL 375 -#define VAR_AUTO_TRUST_ANCHOR_FILE 376 -#define VAR_KEEP_MISSING 377 -#define VAR_ADD_HOLDDOWN 378 -#define VAR_DEL_HOLDDOWN 379 -#define VAR_SO_RCVBUF 380 -#define VAR_EDNS_BUFFER_SIZE 381 -#define VAR_PREFETCH 382 -#define VAR_PREFETCH_KEY 383 -#define VAR_SO_SNDBUF 384 -#define VAR_SO_REUSEPORT 385 -#define VAR_HARDEN_BELOW_NXDOMAIN 386 -#define VAR_IGNORE_CD_FLAG 387 -#define VAR_LOG_QUERIES 388 -#define VAR_LOG_REPLIES 389 -#define VAR_LOG_LOCAL_ACTIONS 390 -#define VAR_TCP_UPSTREAM 391 -#define VAR_SSL_UPSTREAM 392 -#define VAR_TCP_AUTH_QUERY_TIMEOUT 393 -#define VAR_SSL_SERVICE_KEY 394 -#define VAR_SSL_SERVICE_PEM 395 -#define VAR_SSL_PORT 396 -#define VAR_FORWARD_FIRST 397 -#define VAR_STUB_SSL_UPSTREAM 398 -#define VAR_FORWARD_SSL_UPSTREAM 399 -#define VAR_TLS_CERT_BUNDLE 400 -#define VAR_STUB_TCP_UPSTREAM 401 -#define VAR_FORWARD_TCP_UPSTREAM 402 -#define VAR_HTTPS_PORT 403 -#define VAR_HTTP_ENDPOINT 404 -#define VAR_HTTP_MAX_STREAMS 405 -#define VAR_HTTP_QUERY_BUFFER_SIZE 406 -#define VAR_HTTP_RESPONSE_BUFFER_SIZE 407 -#define VAR_HTTP_NODELAY 408 -#define VAR_HTTP_NOTLS_DOWNSTREAM 409 -#define VAR_STUB_FIRST 410 -#define VAR_MINIMAL_RESPONSES 411 -#define VAR_RRSET_ROUNDROBIN 412 -#define VAR_MAX_UDP_SIZE 413 -#define VAR_DELAY_CLOSE 414 -#define VAR_UDP_CONNECT 415 -#define VAR_UNBLOCK_LAN_ZONES 416 -#define VAR_INSECURE_LAN_ZONES 417 -#define VAR_INFRA_CACHE_MIN_RTT 418 -#define VAR_INFRA_KEEP_PROBING 419 -#define VAR_DNS64_PREFIX 420 -#define VAR_DNS64_SYNTHALL 421 -#define VAR_DNS64_IGNORE_AAAA 422 -#define VAR_DNSTAP 423 -#define VAR_DNSTAP_ENABLE 424 -#define VAR_DNSTAP_SOCKET_PATH 425 -#define VAR_DNSTAP_IP 426 -#define VAR_DNSTAP_TLS 427 -#define VAR_DNSTAP_TLS_SERVER_NAME 428 -#define VAR_DNSTAP_TLS_CERT_BUNDLE 429 -#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 430 -#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 431 -#define VAR_DNSTAP_SEND_IDENTITY 432 -#define VAR_DNSTAP_SEND_VERSION 433 -#define VAR_DNSTAP_BIDIRECTIONAL 434 -#define VAR_DNSTAP_IDENTITY 435 -#define VAR_DNSTAP_VERSION 436 -#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 437 -#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 438 -#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 439 -#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 440 -#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 441 -#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 442 -#define VAR_RESPONSE_IP_TAG 443 -#define VAR_RESPONSE_IP 444 -#define VAR_RESPONSE_IP_DATA 445 -#define VAR_HARDEN_ALGO_DOWNGRADE 446 -#define VAR_IP_TRANSPARENT 447 -#define VAR_IP_DSCP 448 -#define VAR_DISABLE_DNSSEC_LAME_CHECK 449 -#define VAR_IP_RATELIMIT 450 -#define VAR_IP_RATELIMIT_SLABS 451 -#define VAR_IP_RATELIMIT_SIZE 452 -#define VAR_RATELIMIT 453 -#define VAR_RATELIMIT_SLABS 454 -#define VAR_RATELIMIT_SIZE 455 -#define VAR_OUTBOUND_MSG_RETRY 456 -#define VAR_RATELIMIT_FOR_DOMAIN 457 -#define VAR_RATELIMIT_BELOW_DOMAIN 458 -#define VAR_IP_RATELIMIT_FACTOR 459 -#define VAR_RATELIMIT_FACTOR 460 -#define VAR_SEND_CLIENT_SUBNET 461 -#define VAR_CLIENT_SUBNET_ZONE 462 -#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 463 -#define VAR_CLIENT_SUBNET_OPCODE 464 -#define VAR_MAX_CLIENT_SUBNET_IPV4 465 -#define VAR_MAX_CLIENT_SUBNET_IPV6 466 -#define VAR_MIN_CLIENT_SUBNET_IPV4 467 -#define VAR_MIN_CLIENT_SUBNET_IPV6 468 -#define VAR_MAX_ECS_TREE_SIZE_IPV4 469 -#define VAR_MAX_ECS_TREE_SIZE_IPV6 470 -#define VAR_CAPS_WHITELIST 471 -#define VAR_CACHE_MAX_NEGATIVE_TTL 472 -#define VAR_PERMIT_SMALL_HOLDDOWN 473 -#define VAR_QNAME_MINIMISATION 474 -#define VAR_QNAME_MINIMISATION_STRICT 475 -#define VAR_IP_FREEBIND 476 -#define VAR_DEFINE_TAG 477 -#define VAR_LOCAL_ZONE_TAG 478 -#define VAR_ACCESS_CONTROL_TAG 479 -#define VAR_LOCAL_ZONE_OVERRIDE 480 -#define VAR_ACCESS_CONTROL_TAG_ACTION 481 -#define VAR_ACCESS_CONTROL_TAG_DATA 482 -#define VAR_VIEW 483 -#define VAR_ACCESS_CONTROL_VIEW 484 -#define VAR_VIEW_FIRST 485 -#define VAR_SERVE_EXPIRED 486 -#define VAR_SERVE_EXPIRED_TTL 487 -#define VAR_SERVE_EXPIRED_TTL_RESET 488 -#define VAR_SERVE_EXPIRED_REPLY_TTL 489 -#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 490 -#define VAR_SERVE_ORIGINAL_TTL 491 -#define VAR_FAKE_DSA 492 -#define VAR_FAKE_SHA1 493 -#define VAR_LOG_IDENTITY 494 -#define VAR_HIDE_TRUSTANCHOR 495 -#define VAR_HIDE_HTTP_USER_AGENT 496 -#define VAR_HTTP_USER_AGENT 497 -#define VAR_TRUST_ANCHOR_SIGNALING 498 -#define VAR_AGGRESSIVE_NSEC 499 -#define VAR_USE_SYSTEMD 500 -#define VAR_SHM_ENABLE 501 -#define VAR_SHM_KEY 502 -#define VAR_ROOT_KEY_SENTINEL 503 -#define VAR_DNSCRYPT 504 -#define VAR_DNSCRYPT_ENABLE 505 -#define VAR_DNSCRYPT_PORT 506 -#define VAR_DNSCRYPT_PROVIDER 507 -#define VAR_DNSCRYPT_SECRET_KEY 508 -#define VAR_DNSCRYPT_PROVIDER_CERT 509 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 510 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 511 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 512 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 513 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 514 -#define VAR_PAD_RESPONSES 515 -#define VAR_PAD_RESPONSES_BLOCK_SIZE 516 -#define VAR_PAD_QUERIES 517 -#define VAR_PAD_QUERIES_BLOCK_SIZE 518 -#define VAR_IPSECMOD_ENABLED 519 -#define VAR_IPSECMOD_HOOK 520 -#define VAR_IPSECMOD_IGNORE_BOGUS 521 -#define VAR_IPSECMOD_MAX_TTL 522 -#define VAR_IPSECMOD_WHITELIST 523 -#define VAR_IPSECMOD_STRICT 524 -#define VAR_CACHEDB 525 -#define VAR_CACHEDB_BACKEND 526 -#define VAR_CACHEDB_SECRETSEED 527 -#define VAR_CACHEDB_REDISHOST 528 -#define VAR_CACHEDB_REDISPORT 529 -#define VAR_CACHEDB_REDISTIMEOUT 530 -#define VAR_CACHEDB_REDISEXPIRERECORDS 531 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 532 -#define VAR_FOR_UPSTREAM 533 -#define VAR_AUTH_ZONE 534 -#define VAR_ZONEFILE 535 -#define VAR_MASTER 536 -#define VAR_URL 537 -#define VAR_FOR_DOWNSTREAM 538 -#define VAR_FALLBACK_ENABLED 539 -#define VAR_TLS_ADDITIONAL_PORT 540 -#define VAR_LOW_RTT 541 -#define VAR_LOW_RTT_PERMIL 542 -#define VAR_FAST_SERVER_PERMIL 543 -#define VAR_FAST_SERVER_NUM 544 -#define VAR_ALLOW_NOTIFY 545 -#define VAR_TLS_WIN_CERT 546 -#define VAR_TCP_CONNECTION_LIMIT 547 -#define VAR_FORWARD_NO_CACHE 548 -#define VAR_STUB_NO_CACHE 549 -#define VAR_LOG_SERVFAIL 550 -#define VAR_DENY_ANY 551 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 552 -#define VAR_LOG_TAG_QUERYREPLY 553 -#define VAR_STREAM_WAIT_SIZE 554 -#define VAR_TLS_CIPHERS 555 -#define VAR_TLS_CIPHERSUITES 556 -#define VAR_TLS_USE_SNI 557 -#define VAR_IPSET 558 -#define VAR_IPSET_NAME_V4 559 -#define VAR_IPSET_NAME_V6 560 -#define VAR_TLS_SESSION_TICKET_KEYS 561 -#define VAR_RPZ 562 -#define VAR_TAGS 563 -#define VAR_RPZ_ACTION_OVERRIDE 564 -#define VAR_RPZ_CNAME_OVERRIDE 565 -#define VAR_RPZ_LOG 566 -#define VAR_RPZ_LOG_NAME 567 -#define VAR_DYNLIB 568 -#define VAR_DYNLIB_FILE 569 -#define VAR_EDNS_CLIENT_STRING 570 -#define VAR_EDNS_CLIENT_STRING_OPCODE 571 -#define VAR_NSID 572 -#define VAR_ZONEMD_PERMISSIVE_MODE 573 -#define VAR_ZONEMD_CHECK 574 -#define VAR_ZONEMD_REJECT_ABSENCE 575 -#define VAR_RPZ_SIGNAL_NXDOMAIN_RA 576 - -/* Value type. */ -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -union YYSTYPE -{ -#line 66 "./util/configparser.y" - - char* str; - -#line 798 "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 */ +#include "configparser.h" /* Symbol kind. */ enum yysymbol_kind_t { @@ -1018,469 +330,473 @@ enum yysymbol_kind_t YYSYMBOL_VAR_RATELIMIT_BELOW_DOMAIN = 203, /* VAR_RATELIMIT_BELOW_DOMAIN */ YYSYMBOL_VAR_IP_RATELIMIT_FACTOR = 204, /* VAR_IP_RATELIMIT_FACTOR */ YYSYMBOL_VAR_RATELIMIT_FACTOR = 205, /* VAR_RATELIMIT_FACTOR */ - YYSYMBOL_VAR_SEND_CLIENT_SUBNET = 206, /* VAR_SEND_CLIENT_SUBNET */ - YYSYMBOL_VAR_CLIENT_SUBNET_ZONE = 207, /* VAR_CLIENT_SUBNET_ZONE */ - YYSYMBOL_VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 208, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ - YYSYMBOL_VAR_CLIENT_SUBNET_OPCODE = 209, /* VAR_CLIENT_SUBNET_OPCODE */ - YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV4 = 210, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ - YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV6 = 211, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ - YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV4 = 212, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ - YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV6 = 213, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ - YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV4 = 214, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ - YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV6 = 215, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ - YYSYMBOL_VAR_CAPS_WHITELIST = 216, /* VAR_CAPS_WHITELIST */ - YYSYMBOL_VAR_CACHE_MAX_NEGATIVE_TTL = 217, /* VAR_CACHE_MAX_NEGATIVE_TTL */ - YYSYMBOL_VAR_PERMIT_SMALL_HOLDDOWN = 218, /* VAR_PERMIT_SMALL_HOLDDOWN */ - YYSYMBOL_VAR_QNAME_MINIMISATION = 219, /* VAR_QNAME_MINIMISATION */ - YYSYMBOL_VAR_QNAME_MINIMISATION_STRICT = 220, /* VAR_QNAME_MINIMISATION_STRICT */ - YYSYMBOL_VAR_IP_FREEBIND = 221, /* VAR_IP_FREEBIND */ - YYSYMBOL_VAR_DEFINE_TAG = 222, /* VAR_DEFINE_TAG */ - YYSYMBOL_VAR_LOCAL_ZONE_TAG = 223, /* VAR_LOCAL_ZONE_TAG */ - YYSYMBOL_VAR_ACCESS_CONTROL_TAG = 224, /* VAR_ACCESS_CONTROL_TAG */ - YYSYMBOL_VAR_LOCAL_ZONE_OVERRIDE = 225, /* VAR_LOCAL_ZONE_OVERRIDE */ - YYSYMBOL_VAR_ACCESS_CONTROL_TAG_ACTION = 226, /* VAR_ACCESS_CONTROL_TAG_ACTION */ - YYSYMBOL_VAR_ACCESS_CONTROL_TAG_DATA = 227, /* VAR_ACCESS_CONTROL_TAG_DATA */ - YYSYMBOL_VAR_VIEW = 228, /* VAR_VIEW */ - YYSYMBOL_VAR_ACCESS_CONTROL_VIEW = 229, /* VAR_ACCESS_CONTROL_VIEW */ - YYSYMBOL_VAR_VIEW_FIRST = 230, /* VAR_VIEW_FIRST */ - YYSYMBOL_VAR_SERVE_EXPIRED = 231, /* VAR_SERVE_EXPIRED */ - YYSYMBOL_VAR_SERVE_EXPIRED_TTL = 232, /* VAR_SERVE_EXPIRED_TTL */ - YYSYMBOL_VAR_SERVE_EXPIRED_TTL_RESET = 233, /* VAR_SERVE_EXPIRED_TTL_RESET */ - YYSYMBOL_VAR_SERVE_EXPIRED_REPLY_TTL = 234, /* VAR_SERVE_EXPIRED_REPLY_TTL */ - YYSYMBOL_VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 235, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ - YYSYMBOL_VAR_SERVE_ORIGINAL_TTL = 236, /* VAR_SERVE_ORIGINAL_TTL */ - YYSYMBOL_VAR_FAKE_DSA = 237, /* VAR_FAKE_DSA */ - YYSYMBOL_VAR_FAKE_SHA1 = 238, /* VAR_FAKE_SHA1 */ - YYSYMBOL_VAR_LOG_IDENTITY = 239, /* VAR_LOG_IDENTITY */ - YYSYMBOL_VAR_HIDE_TRUSTANCHOR = 240, /* VAR_HIDE_TRUSTANCHOR */ - YYSYMBOL_VAR_HIDE_HTTP_USER_AGENT = 241, /* VAR_HIDE_HTTP_USER_AGENT */ - YYSYMBOL_VAR_HTTP_USER_AGENT = 242, /* VAR_HTTP_USER_AGENT */ - YYSYMBOL_VAR_TRUST_ANCHOR_SIGNALING = 243, /* VAR_TRUST_ANCHOR_SIGNALING */ - YYSYMBOL_VAR_AGGRESSIVE_NSEC = 244, /* VAR_AGGRESSIVE_NSEC */ - YYSYMBOL_VAR_USE_SYSTEMD = 245, /* VAR_USE_SYSTEMD */ - YYSYMBOL_VAR_SHM_ENABLE = 246, /* VAR_SHM_ENABLE */ - YYSYMBOL_VAR_SHM_KEY = 247, /* VAR_SHM_KEY */ - YYSYMBOL_VAR_ROOT_KEY_SENTINEL = 248, /* VAR_ROOT_KEY_SENTINEL */ - YYSYMBOL_VAR_DNSCRYPT = 249, /* VAR_DNSCRYPT */ - YYSYMBOL_VAR_DNSCRYPT_ENABLE = 250, /* VAR_DNSCRYPT_ENABLE */ - YYSYMBOL_VAR_DNSCRYPT_PORT = 251, /* VAR_DNSCRYPT_PORT */ - YYSYMBOL_VAR_DNSCRYPT_PROVIDER = 252, /* VAR_DNSCRYPT_PROVIDER */ - YYSYMBOL_VAR_DNSCRYPT_SECRET_KEY = 253, /* VAR_DNSCRYPT_SECRET_KEY */ - YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT = 254, /* VAR_DNSCRYPT_PROVIDER_CERT */ - YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 255, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ - YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 256, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ - YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 257, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ - YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SIZE = 258, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ - YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SLABS = 259, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ - YYSYMBOL_VAR_PAD_RESPONSES = 260, /* VAR_PAD_RESPONSES */ - YYSYMBOL_VAR_PAD_RESPONSES_BLOCK_SIZE = 261, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ - YYSYMBOL_VAR_PAD_QUERIES = 262, /* VAR_PAD_QUERIES */ - YYSYMBOL_VAR_PAD_QUERIES_BLOCK_SIZE = 263, /* VAR_PAD_QUERIES_BLOCK_SIZE */ - YYSYMBOL_VAR_IPSECMOD_ENABLED = 264, /* VAR_IPSECMOD_ENABLED */ - YYSYMBOL_VAR_IPSECMOD_HOOK = 265, /* VAR_IPSECMOD_HOOK */ - YYSYMBOL_VAR_IPSECMOD_IGNORE_BOGUS = 266, /* VAR_IPSECMOD_IGNORE_BOGUS */ - YYSYMBOL_VAR_IPSECMOD_MAX_TTL = 267, /* VAR_IPSECMOD_MAX_TTL */ - YYSYMBOL_VAR_IPSECMOD_WHITELIST = 268, /* VAR_IPSECMOD_WHITELIST */ - YYSYMBOL_VAR_IPSECMOD_STRICT = 269, /* VAR_IPSECMOD_STRICT */ - YYSYMBOL_VAR_CACHEDB = 270, /* VAR_CACHEDB */ - YYSYMBOL_VAR_CACHEDB_BACKEND = 271, /* VAR_CACHEDB_BACKEND */ - YYSYMBOL_VAR_CACHEDB_SECRETSEED = 272, /* VAR_CACHEDB_SECRETSEED */ - YYSYMBOL_VAR_CACHEDB_REDISHOST = 273, /* VAR_CACHEDB_REDISHOST */ - YYSYMBOL_VAR_CACHEDB_REDISPORT = 274, /* VAR_CACHEDB_REDISPORT */ - YYSYMBOL_VAR_CACHEDB_REDISTIMEOUT = 275, /* VAR_CACHEDB_REDISTIMEOUT */ - YYSYMBOL_VAR_CACHEDB_REDISEXPIRERECORDS = 276, /* VAR_CACHEDB_REDISEXPIRERECORDS */ - YYSYMBOL_VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 277, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ - YYSYMBOL_VAR_FOR_UPSTREAM = 278, /* VAR_FOR_UPSTREAM */ - YYSYMBOL_VAR_AUTH_ZONE = 279, /* VAR_AUTH_ZONE */ - YYSYMBOL_VAR_ZONEFILE = 280, /* VAR_ZONEFILE */ - YYSYMBOL_VAR_MASTER = 281, /* VAR_MASTER */ - YYSYMBOL_VAR_URL = 282, /* VAR_URL */ - YYSYMBOL_VAR_FOR_DOWNSTREAM = 283, /* VAR_FOR_DOWNSTREAM */ - YYSYMBOL_VAR_FALLBACK_ENABLED = 284, /* VAR_FALLBACK_ENABLED */ - YYSYMBOL_VAR_TLS_ADDITIONAL_PORT = 285, /* VAR_TLS_ADDITIONAL_PORT */ - YYSYMBOL_VAR_LOW_RTT = 286, /* VAR_LOW_RTT */ - YYSYMBOL_VAR_LOW_RTT_PERMIL = 287, /* VAR_LOW_RTT_PERMIL */ - YYSYMBOL_VAR_FAST_SERVER_PERMIL = 288, /* VAR_FAST_SERVER_PERMIL */ - YYSYMBOL_VAR_FAST_SERVER_NUM = 289, /* VAR_FAST_SERVER_NUM */ - YYSYMBOL_VAR_ALLOW_NOTIFY = 290, /* VAR_ALLOW_NOTIFY */ - YYSYMBOL_VAR_TLS_WIN_CERT = 291, /* VAR_TLS_WIN_CERT */ - YYSYMBOL_VAR_TCP_CONNECTION_LIMIT = 292, /* VAR_TCP_CONNECTION_LIMIT */ - YYSYMBOL_VAR_FORWARD_NO_CACHE = 293, /* VAR_FORWARD_NO_CACHE */ - YYSYMBOL_VAR_STUB_NO_CACHE = 294, /* VAR_STUB_NO_CACHE */ - YYSYMBOL_VAR_LOG_SERVFAIL = 295, /* VAR_LOG_SERVFAIL */ - YYSYMBOL_VAR_DENY_ANY = 296, /* VAR_DENY_ANY */ - YYSYMBOL_VAR_UNKNOWN_SERVER_TIME_LIMIT = 297, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ - YYSYMBOL_VAR_LOG_TAG_QUERYREPLY = 298, /* VAR_LOG_TAG_QUERYREPLY */ - YYSYMBOL_VAR_STREAM_WAIT_SIZE = 299, /* VAR_STREAM_WAIT_SIZE */ - YYSYMBOL_VAR_TLS_CIPHERS = 300, /* VAR_TLS_CIPHERS */ - YYSYMBOL_VAR_TLS_CIPHERSUITES = 301, /* VAR_TLS_CIPHERSUITES */ - YYSYMBOL_VAR_TLS_USE_SNI = 302, /* VAR_TLS_USE_SNI */ - YYSYMBOL_VAR_IPSET = 303, /* VAR_IPSET */ - YYSYMBOL_VAR_IPSET_NAME_V4 = 304, /* VAR_IPSET_NAME_V4 */ - YYSYMBOL_VAR_IPSET_NAME_V6 = 305, /* VAR_IPSET_NAME_V6 */ - YYSYMBOL_VAR_TLS_SESSION_TICKET_KEYS = 306, /* VAR_TLS_SESSION_TICKET_KEYS */ - YYSYMBOL_VAR_RPZ = 307, /* VAR_RPZ */ - YYSYMBOL_VAR_TAGS = 308, /* VAR_TAGS */ - YYSYMBOL_VAR_RPZ_ACTION_OVERRIDE = 309, /* VAR_RPZ_ACTION_OVERRIDE */ - YYSYMBOL_VAR_RPZ_CNAME_OVERRIDE = 310, /* VAR_RPZ_CNAME_OVERRIDE */ - YYSYMBOL_VAR_RPZ_LOG = 311, /* VAR_RPZ_LOG */ - YYSYMBOL_VAR_RPZ_LOG_NAME = 312, /* VAR_RPZ_LOG_NAME */ - YYSYMBOL_VAR_DYNLIB = 313, /* VAR_DYNLIB */ - YYSYMBOL_VAR_DYNLIB_FILE = 314, /* VAR_DYNLIB_FILE */ - YYSYMBOL_VAR_EDNS_CLIENT_STRING = 315, /* VAR_EDNS_CLIENT_STRING */ - YYSYMBOL_VAR_EDNS_CLIENT_STRING_OPCODE = 316, /* VAR_EDNS_CLIENT_STRING_OPCODE */ - YYSYMBOL_VAR_NSID = 317, /* VAR_NSID */ - YYSYMBOL_VAR_ZONEMD_PERMISSIVE_MODE = 318, /* VAR_ZONEMD_PERMISSIVE_MODE */ - YYSYMBOL_VAR_ZONEMD_CHECK = 319, /* VAR_ZONEMD_CHECK */ - YYSYMBOL_VAR_ZONEMD_REJECT_ABSENCE = 320, /* VAR_ZONEMD_REJECT_ABSENCE */ - YYSYMBOL_VAR_RPZ_SIGNAL_NXDOMAIN_RA = 321, /* VAR_RPZ_SIGNAL_NXDOMAIN_RA */ - YYSYMBOL_YYACCEPT = 322, /* $accept */ - YYSYMBOL_toplevelvars = 323, /* toplevelvars */ - YYSYMBOL_toplevelvar = 324, /* toplevelvar */ - YYSYMBOL_force_toplevel = 325, /* force_toplevel */ - YYSYMBOL_serverstart = 326, /* serverstart */ - YYSYMBOL_contents_server = 327, /* contents_server */ - YYSYMBOL_content_server = 328, /* content_server */ - YYSYMBOL_stubstart = 329, /* stubstart */ - YYSYMBOL_contents_stub = 330, /* contents_stub */ - YYSYMBOL_content_stub = 331, /* content_stub */ - YYSYMBOL_forwardstart = 332, /* forwardstart */ - YYSYMBOL_contents_forward = 333, /* contents_forward */ - YYSYMBOL_content_forward = 334, /* content_forward */ - YYSYMBOL_viewstart = 335, /* viewstart */ - YYSYMBOL_contents_view = 336, /* contents_view */ - YYSYMBOL_content_view = 337, /* content_view */ - YYSYMBOL_authstart = 338, /* authstart */ - YYSYMBOL_contents_auth = 339, /* contents_auth */ - YYSYMBOL_content_auth = 340, /* content_auth */ - YYSYMBOL_rpz_tag = 341, /* rpz_tag */ - YYSYMBOL_rpz_action_override = 342, /* rpz_action_override */ - YYSYMBOL_rpz_cname_override = 343, /* rpz_cname_override */ - YYSYMBOL_rpz_log = 344, /* rpz_log */ - YYSYMBOL_rpz_log_name = 345, /* rpz_log_name */ - YYSYMBOL_rpz_signal_nxdomain_ra = 346, /* rpz_signal_nxdomain_ra */ - YYSYMBOL_rpzstart = 347, /* rpzstart */ - YYSYMBOL_contents_rpz = 348, /* contents_rpz */ - YYSYMBOL_content_rpz = 349, /* content_rpz */ - YYSYMBOL_server_num_threads = 350, /* server_num_threads */ - YYSYMBOL_server_verbosity = 351, /* server_verbosity */ - YYSYMBOL_server_statistics_interval = 352, /* server_statistics_interval */ - YYSYMBOL_server_statistics_cumulative = 353, /* server_statistics_cumulative */ - YYSYMBOL_server_extended_statistics = 354, /* server_extended_statistics */ - YYSYMBOL_server_shm_enable = 355, /* server_shm_enable */ - YYSYMBOL_server_shm_key = 356, /* server_shm_key */ - YYSYMBOL_server_port = 357, /* server_port */ - YYSYMBOL_server_send_client_subnet = 358, /* server_send_client_subnet */ - YYSYMBOL_server_client_subnet_zone = 359, /* server_client_subnet_zone */ - YYSYMBOL_server_client_subnet_always_forward = 360, /* server_client_subnet_always_forward */ - YYSYMBOL_server_client_subnet_opcode = 361, /* server_client_subnet_opcode */ - YYSYMBOL_server_max_client_subnet_ipv4 = 362, /* server_max_client_subnet_ipv4 */ - YYSYMBOL_server_max_client_subnet_ipv6 = 363, /* server_max_client_subnet_ipv6 */ - YYSYMBOL_server_min_client_subnet_ipv4 = 364, /* server_min_client_subnet_ipv4 */ - YYSYMBOL_server_min_client_subnet_ipv6 = 365, /* server_min_client_subnet_ipv6 */ - YYSYMBOL_server_max_ecs_tree_size_ipv4 = 366, /* server_max_ecs_tree_size_ipv4 */ - YYSYMBOL_server_max_ecs_tree_size_ipv6 = 367, /* server_max_ecs_tree_size_ipv6 */ - YYSYMBOL_server_interface = 368, /* server_interface */ - YYSYMBOL_server_outgoing_interface = 369, /* server_outgoing_interface */ - YYSYMBOL_server_outgoing_range = 370, /* server_outgoing_range */ - YYSYMBOL_server_outgoing_port_permit = 371, /* server_outgoing_port_permit */ - YYSYMBOL_server_outgoing_port_avoid = 372, /* server_outgoing_port_avoid */ - YYSYMBOL_server_outgoing_num_tcp = 373, /* server_outgoing_num_tcp */ - YYSYMBOL_server_incoming_num_tcp = 374, /* server_incoming_num_tcp */ - YYSYMBOL_server_interface_automatic = 375, /* server_interface_automatic */ - YYSYMBOL_server_do_ip4 = 376, /* server_do_ip4 */ - YYSYMBOL_server_do_ip6 = 377, /* server_do_ip6 */ - YYSYMBOL_server_do_udp = 378, /* server_do_udp */ - YYSYMBOL_server_do_tcp = 379, /* server_do_tcp */ - YYSYMBOL_server_prefer_ip4 = 380, /* server_prefer_ip4 */ - YYSYMBOL_server_prefer_ip6 = 381, /* server_prefer_ip6 */ - YYSYMBOL_server_tcp_mss = 382, /* server_tcp_mss */ - YYSYMBOL_server_outgoing_tcp_mss = 383, /* server_outgoing_tcp_mss */ - YYSYMBOL_server_tcp_idle_timeout = 384, /* server_tcp_idle_timeout */ - YYSYMBOL_server_max_reuse_tcp_queries = 385, /* server_max_reuse_tcp_queries */ - YYSYMBOL_server_tcp_reuse_timeout = 386, /* server_tcp_reuse_timeout */ - YYSYMBOL_server_tcp_auth_query_timeout = 387, /* server_tcp_auth_query_timeout */ - YYSYMBOL_server_tcp_keepalive = 388, /* server_tcp_keepalive */ - YYSYMBOL_server_tcp_keepalive_timeout = 389, /* server_tcp_keepalive_timeout */ - YYSYMBOL_server_tcp_upstream = 390, /* server_tcp_upstream */ - YYSYMBOL_server_udp_upstream_without_downstream = 391, /* server_udp_upstream_without_downstream */ - YYSYMBOL_server_ssl_upstream = 392, /* server_ssl_upstream */ - YYSYMBOL_server_ssl_service_key = 393, /* server_ssl_service_key */ - YYSYMBOL_server_ssl_service_pem = 394, /* server_ssl_service_pem */ - YYSYMBOL_server_ssl_port = 395, /* server_ssl_port */ - YYSYMBOL_server_tls_cert_bundle = 396, /* server_tls_cert_bundle */ - YYSYMBOL_server_tls_win_cert = 397, /* server_tls_win_cert */ - YYSYMBOL_server_tls_additional_port = 398, /* server_tls_additional_port */ - YYSYMBOL_server_tls_ciphers = 399, /* server_tls_ciphers */ - YYSYMBOL_server_tls_ciphersuites = 400, /* server_tls_ciphersuites */ - YYSYMBOL_server_tls_session_ticket_keys = 401, /* server_tls_session_ticket_keys */ - YYSYMBOL_server_tls_use_sni = 402, /* server_tls_use_sni */ - YYSYMBOL_server_https_port = 403, /* server_https_port */ - YYSYMBOL_server_http_endpoint = 404, /* server_http_endpoint */ - YYSYMBOL_server_http_max_streams = 405, /* server_http_max_streams */ - YYSYMBOL_server_http_query_buffer_size = 406, /* server_http_query_buffer_size */ - YYSYMBOL_server_http_response_buffer_size = 407, /* server_http_response_buffer_size */ - YYSYMBOL_server_http_nodelay = 408, /* server_http_nodelay */ - YYSYMBOL_server_http_notls_downstream = 409, /* server_http_notls_downstream */ - YYSYMBOL_server_use_systemd = 410, /* server_use_systemd */ - YYSYMBOL_server_do_daemonize = 411, /* server_do_daemonize */ - YYSYMBOL_server_use_syslog = 412, /* server_use_syslog */ - YYSYMBOL_server_log_time_ascii = 413, /* server_log_time_ascii */ - YYSYMBOL_server_log_queries = 414, /* server_log_queries */ - YYSYMBOL_server_log_replies = 415, /* server_log_replies */ - YYSYMBOL_server_log_tag_queryreply = 416, /* server_log_tag_queryreply */ - YYSYMBOL_server_log_servfail = 417, /* server_log_servfail */ - YYSYMBOL_server_log_local_actions = 418, /* server_log_local_actions */ - YYSYMBOL_server_chroot = 419, /* server_chroot */ - YYSYMBOL_server_username = 420, /* server_username */ - YYSYMBOL_server_directory = 421, /* server_directory */ - YYSYMBOL_server_logfile = 422, /* server_logfile */ - YYSYMBOL_server_pidfile = 423, /* server_pidfile */ - YYSYMBOL_server_root_hints = 424, /* server_root_hints */ - YYSYMBOL_server_dlv_anchor_file = 425, /* server_dlv_anchor_file */ - YYSYMBOL_server_dlv_anchor = 426, /* server_dlv_anchor */ - YYSYMBOL_server_auto_trust_anchor_file = 427, /* server_auto_trust_anchor_file */ - YYSYMBOL_server_trust_anchor_file = 428, /* server_trust_anchor_file */ - YYSYMBOL_server_trusted_keys_file = 429, /* server_trusted_keys_file */ - YYSYMBOL_server_trust_anchor = 430, /* server_trust_anchor */ - YYSYMBOL_server_trust_anchor_signaling = 431, /* server_trust_anchor_signaling */ - YYSYMBOL_server_root_key_sentinel = 432, /* server_root_key_sentinel */ - YYSYMBOL_server_domain_insecure = 433, /* server_domain_insecure */ - YYSYMBOL_server_hide_identity = 434, /* server_hide_identity */ - YYSYMBOL_server_hide_version = 435, /* server_hide_version */ - YYSYMBOL_server_hide_trustanchor = 436, /* server_hide_trustanchor */ - YYSYMBOL_server_hide_http_user_agent = 437, /* server_hide_http_user_agent */ - YYSYMBOL_server_identity = 438, /* server_identity */ - YYSYMBOL_server_version = 439, /* server_version */ - YYSYMBOL_server_http_user_agent = 440, /* server_http_user_agent */ - YYSYMBOL_server_nsid = 441, /* server_nsid */ - YYSYMBOL_server_so_rcvbuf = 442, /* server_so_rcvbuf */ - YYSYMBOL_server_so_sndbuf = 443, /* server_so_sndbuf */ - YYSYMBOL_server_so_reuseport = 444, /* server_so_reuseport */ - YYSYMBOL_server_ip_transparent = 445, /* server_ip_transparent */ - YYSYMBOL_server_ip_freebind = 446, /* server_ip_freebind */ - YYSYMBOL_server_ip_dscp = 447, /* server_ip_dscp */ - YYSYMBOL_server_stream_wait_size = 448, /* server_stream_wait_size */ - YYSYMBOL_server_edns_buffer_size = 449, /* server_edns_buffer_size */ - YYSYMBOL_server_msg_buffer_size = 450, /* server_msg_buffer_size */ - YYSYMBOL_server_msg_cache_size = 451, /* server_msg_cache_size */ - YYSYMBOL_server_msg_cache_slabs = 452, /* server_msg_cache_slabs */ - YYSYMBOL_server_num_queries_per_thread = 453, /* server_num_queries_per_thread */ - YYSYMBOL_server_jostle_timeout = 454, /* server_jostle_timeout */ - YYSYMBOL_server_delay_close = 455, /* server_delay_close */ - YYSYMBOL_server_udp_connect = 456, /* server_udp_connect */ - YYSYMBOL_server_unblock_lan_zones = 457, /* server_unblock_lan_zones */ - YYSYMBOL_server_insecure_lan_zones = 458, /* server_insecure_lan_zones */ - YYSYMBOL_server_rrset_cache_size = 459, /* server_rrset_cache_size */ - YYSYMBOL_server_rrset_cache_slabs = 460, /* server_rrset_cache_slabs */ - YYSYMBOL_server_infra_host_ttl = 461, /* server_infra_host_ttl */ - YYSYMBOL_server_infra_lame_ttl = 462, /* server_infra_lame_ttl */ - YYSYMBOL_server_infra_cache_numhosts = 463, /* server_infra_cache_numhosts */ - YYSYMBOL_server_infra_cache_lame_size = 464, /* server_infra_cache_lame_size */ - YYSYMBOL_server_infra_cache_slabs = 465, /* server_infra_cache_slabs */ - YYSYMBOL_server_infra_cache_min_rtt = 466, /* server_infra_cache_min_rtt */ - YYSYMBOL_server_infra_keep_probing = 467, /* server_infra_keep_probing */ - YYSYMBOL_server_target_fetch_policy = 468, /* server_target_fetch_policy */ - YYSYMBOL_server_harden_short_bufsize = 469, /* server_harden_short_bufsize */ - YYSYMBOL_server_harden_large_queries = 470, /* server_harden_large_queries */ - YYSYMBOL_server_harden_glue = 471, /* server_harden_glue */ - YYSYMBOL_server_harden_dnssec_stripped = 472, /* server_harden_dnssec_stripped */ - YYSYMBOL_server_harden_below_nxdomain = 473, /* server_harden_below_nxdomain */ - YYSYMBOL_server_harden_referral_path = 474, /* server_harden_referral_path */ - YYSYMBOL_server_harden_algo_downgrade = 475, /* server_harden_algo_downgrade */ - YYSYMBOL_server_use_caps_for_id = 476, /* server_use_caps_for_id */ - YYSYMBOL_server_caps_whitelist = 477, /* server_caps_whitelist */ - YYSYMBOL_server_private_address = 478, /* server_private_address */ - YYSYMBOL_server_private_domain = 479, /* server_private_domain */ - YYSYMBOL_server_prefetch = 480, /* server_prefetch */ - YYSYMBOL_server_prefetch_key = 481, /* server_prefetch_key */ - YYSYMBOL_server_deny_any = 482, /* server_deny_any */ - YYSYMBOL_server_unwanted_reply_threshold = 483, /* server_unwanted_reply_threshold */ - YYSYMBOL_server_do_not_query_address = 484, /* server_do_not_query_address */ - YYSYMBOL_server_do_not_query_localhost = 485, /* server_do_not_query_localhost */ - YYSYMBOL_server_access_control = 486, /* server_access_control */ - YYSYMBOL_server_module_conf = 487, /* server_module_conf */ - YYSYMBOL_server_val_override_date = 488, /* server_val_override_date */ - YYSYMBOL_server_val_sig_skew_min = 489, /* server_val_sig_skew_min */ - YYSYMBOL_server_val_sig_skew_max = 490, /* server_val_sig_skew_max */ - YYSYMBOL_server_val_max_restart = 491, /* server_val_max_restart */ - YYSYMBOL_server_cache_max_ttl = 492, /* server_cache_max_ttl */ - YYSYMBOL_server_cache_max_negative_ttl = 493, /* server_cache_max_negative_ttl */ - YYSYMBOL_server_cache_min_ttl = 494, /* server_cache_min_ttl */ - YYSYMBOL_server_bogus_ttl = 495, /* server_bogus_ttl */ - YYSYMBOL_server_val_clean_additional = 496, /* server_val_clean_additional */ - YYSYMBOL_server_val_permissive_mode = 497, /* server_val_permissive_mode */ - YYSYMBOL_server_aggressive_nsec = 498, /* server_aggressive_nsec */ - YYSYMBOL_server_ignore_cd_flag = 499, /* server_ignore_cd_flag */ - YYSYMBOL_server_serve_expired = 500, /* server_serve_expired */ - YYSYMBOL_server_serve_expired_ttl = 501, /* server_serve_expired_ttl */ - YYSYMBOL_server_serve_expired_ttl_reset = 502, /* server_serve_expired_ttl_reset */ - YYSYMBOL_server_serve_expired_reply_ttl = 503, /* server_serve_expired_reply_ttl */ - YYSYMBOL_server_serve_expired_client_timeout = 504, /* server_serve_expired_client_timeout */ - YYSYMBOL_server_serve_original_ttl = 505, /* server_serve_original_ttl */ - YYSYMBOL_server_fake_dsa = 506, /* server_fake_dsa */ - YYSYMBOL_server_fake_sha1 = 507, /* server_fake_sha1 */ - YYSYMBOL_server_val_log_level = 508, /* server_val_log_level */ - YYSYMBOL_server_val_nsec3_keysize_iterations = 509, /* server_val_nsec3_keysize_iterations */ - YYSYMBOL_server_zonemd_permissive_mode = 510, /* server_zonemd_permissive_mode */ - YYSYMBOL_server_add_holddown = 511, /* server_add_holddown */ - YYSYMBOL_server_del_holddown = 512, /* server_del_holddown */ - YYSYMBOL_server_keep_missing = 513, /* server_keep_missing */ - YYSYMBOL_server_permit_small_holddown = 514, /* server_permit_small_holddown */ - YYSYMBOL_server_key_cache_size = 515, /* server_key_cache_size */ - YYSYMBOL_server_key_cache_slabs = 516, /* server_key_cache_slabs */ - YYSYMBOL_server_neg_cache_size = 517, /* server_neg_cache_size */ - YYSYMBOL_server_local_zone = 518, /* server_local_zone */ - YYSYMBOL_server_local_data = 519, /* server_local_data */ - YYSYMBOL_server_local_data_ptr = 520, /* server_local_data_ptr */ - YYSYMBOL_server_minimal_responses = 521, /* server_minimal_responses */ - YYSYMBOL_server_rrset_roundrobin = 522, /* server_rrset_roundrobin */ - YYSYMBOL_server_unknown_server_time_limit = 523, /* server_unknown_server_time_limit */ - YYSYMBOL_server_max_udp_size = 524, /* server_max_udp_size */ - YYSYMBOL_server_dns64_prefix = 525, /* server_dns64_prefix */ - YYSYMBOL_server_dns64_synthall = 526, /* server_dns64_synthall */ - YYSYMBOL_server_dns64_ignore_aaaa = 527, /* server_dns64_ignore_aaaa */ - YYSYMBOL_server_define_tag = 528, /* server_define_tag */ - YYSYMBOL_server_local_zone_tag = 529, /* server_local_zone_tag */ - YYSYMBOL_server_access_control_tag = 530, /* server_access_control_tag */ - YYSYMBOL_server_access_control_tag_action = 531, /* server_access_control_tag_action */ - YYSYMBOL_server_access_control_tag_data = 532, /* server_access_control_tag_data */ - YYSYMBOL_server_local_zone_override = 533, /* server_local_zone_override */ - YYSYMBOL_server_access_control_view = 534, /* server_access_control_view */ - YYSYMBOL_server_response_ip_tag = 535, /* server_response_ip_tag */ - YYSYMBOL_server_ip_ratelimit = 536, /* server_ip_ratelimit */ - YYSYMBOL_server_ratelimit = 537, /* server_ratelimit */ - YYSYMBOL_server_ip_ratelimit_size = 538, /* server_ip_ratelimit_size */ - YYSYMBOL_server_ratelimit_size = 539, /* server_ratelimit_size */ - YYSYMBOL_server_ip_ratelimit_slabs = 540, /* server_ip_ratelimit_slabs */ - YYSYMBOL_server_ratelimit_slabs = 541, /* server_ratelimit_slabs */ - YYSYMBOL_server_ratelimit_for_domain = 542, /* server_ratelimit_for_domain */ - YYSYMBOL_server_ratelimit_below_domain = 543, /* server_ratelimit_below_domain */ - YYSYMBOL_server_ip_ratelimit_factor = 544, /* server_ip_ratelimit_factor */ - YYSYMBOL_server_ratelimit_factor = 545, /* server_ratelimit_factor */ - YYSYMBOL_server_outbound_msg_retry = 546, /* server_outbound_msg_retry */ - YYSYMBOL_server_low_rtt = 547, /* server_low_rtt */ - YYSYMBOL_server_fast_server_num = 548, /* server_fast_server_num */ - YYSYMBOL_server_fast_server_permil = 549, /* server_fast_server_permil */ - YYSYMBOL_server_qname_minimisation = 550, /* server_qname_minimisation */ - YYSYMBOL_server_qname_minimisation_strict = 551, /* server_qname_minimisation_strict */ - YYSYMBOL_server_pad_responses = 552, /* server_pad_responses */ - YYSYMBOL_server_pad_responses_block_size = 553, /* server_pad_responses_block_size */ - YYSYMBOL_server_pad_queries = 554, /* server_pad_queries */ - YYSYMBOL_server_pad_queries_block_size = 555, /* server_pad_queries_block_size */ - YYSYMBOL_server_ipsecmod_enabled = 556, /* server_ipsecmod_enabled */ - YYSYMBOL_server_ipsecmod_ignore_bogus = 557, /* server_ipsecmod_ignore_bogus */ - YYSYMBOL_server_ipsecmod_hook = 558, /* server_ipsecmod_hook */ - YYSYMBOL_server_ipsecmod_max_ttl = 559, /* server_ipsecmod_max_ttl */ - YYSYMBOL_server_ipsecmod_whitelist = 560, /* server_ipsecmod_whitelist */ - YYSYMBOL_server_ipsecmod_strict = 561, /* server_ipsecmod_strict */ - YYSYMBOL_server_edns_client_string = 562, /* server_edns_client_string */ - YYSYMBOL_server_edns_client_string_opcode = 563, /* server_edns_client_string_opcode */ - YYSYMBOL_stub_name = 564, /* stub_name */ - YYSYMBOL_stub_host = 565, /* stub_host */ - YYSYMBOL_stub_addr = 566, /* stub_addr */ - YYSYMBOL_stub_first = 567, /* stub_first */ - YYSYMBOL_stub_no_cache = 568, /* stub_no_cache */ - YYSYMBOL_stub_ssl_upstream = 569, /* stub_ssl_upstream */ - YYSYMBOL_stub_tcp_upstream = 570, /* stub_tcp_upstream */ - YYSYMBOL_stub_prime = 571, /* stub_prime */ - YYSYMBOL_forward_name = 572, /* forward_name */ - YYSYMBOL_forward_host = 573, /* forward_host */ - YYSYMBOL_forward_addr = 574, /* forward_addr */ - YYSYMBOL_forward_first = 575, /* forward_first */ - YYSYMBOL_forward_no_cache = 576, /* forward_no_cache */ - YYSYMBOL_forward_ssl_upstream = 577, /* forward_ssl_upstream */ - YYSYMBOL_forward_tcp_upstream = 578, /* forward_tcp_upstream */ - YYSYMBOL_auth_name = 579, /* auth_name */ - YYSYMBOL_auth_zonefile = 580, /* auth_zonefile */ - YYSYMBOL_auth_master = 581, /* auth_master */ - YYSYMBOL_auth_url = 582, /* auth_url */ - YYSYMBOL_auth_allow_notify = 583, /* auth_allow_notify */ - YYSYMBOL_auth_zonemd_check = 584, /* auth_zonemd_check */ - YYSYMBOL_auth_zonemd_reject_absence = 585, /* auth_zonemd_reject_absence */ - YYSYMBOL_auth_for_downstream = 586, /* auth_for_downstream */ - YYSYMBOL_auth_for_upstream = 587, /* auth_for_upstream */ - YYSYMBOL_auth_fallback_enabled = 588, /* auth_fallback_enabled */ - YYSYMBOL_view_name = 589, /* view_name */ - YYSYMBOL_view_local_zone = 590, /* view_local_zone */ - YYSYMBOL_view_response_ip = 591, /* view_response_ip */ - YYSYMBOL_view_response_ip_data = 592, /* view_response_ip_data */ - YYSYMBOL_view_local_data = 593, /* view_local_data */ - YYSYMBOL_view_local_data_ptr = 594, /* view_local_data_ptr */ - YYSYMBOL_view_first = 595, /* view_first */ - YYSYMBOL_rcstart = 596, /* rcstart */ - YYSYMBOL_contents_rc = 597, /* contents_rc */ - YYSYMBOL_content_rc = 598, /* content_rc */ - YYSYMBOL_rc_control_enable = 599, /* rc_control_enable */ - YYSYMBOL_rc_control_port = 600, /* rc_control_port */ - YYSYMBOL_rc_control_interface = 601, /* rc_control_interface */ - YYSYMBOL_rc_control_use_cert = 602, /* rc_control_use_cert */ - YYSYMBOL_rc_server_key_file = 603, /* rc_server_key_file */ - YYSYMBOL_rc_server_cert_file = 604, /* rc_server_cert_file */ - YYSYMBOL_rc_control_key_file = 605, /* rc_control_key_file */ - YYSYMBOL_rc_control_cert_file = 606, /* rc_control_cert_file */ - YYSYMBOL_dtstart = 607, /* dtstart */ - YYSYMBOL_contents_dt = 608, /* contents_dt */ - YYSYMBOL_content_dt = 609, /* content_dt */ - YYSYMBOL_dt_dnstap_enable = 610, /* dt_dnstap_enable */ - YYSYMBOL_dt_dnstap_bidirectional = 611, /* dt_dnstap_bidirectional */ - YYSYMBOL_dt_dnstap_socket_path = 612, /* dt_dnstap_socket_path */ - YYSYMBOL_dt_dnstap_ip = 613, /* dt_dnstap_ip */ - YYSYMBOL_dt_dnstap_tls = 614, /* dt_dnstap_tls */ - YYSYMBOL_dt_dnstap_tls_server_name = 615, /* dt_dnstap_tls_server_name */ - YYSYMBOL_dt_dnstap_tls_cert_bundle = 616, /* dt_dnstap_tls_cert_bundle */ - YYSYMBOL_dt_dnstap_tls_client_key_file = 617, /* dt_dnstap_tls_client_key_file */ - YYSYMBOL_dt_dnstap_tls_client_cert_file = 618, /* dt_dnstap_tls_client_cert_file */ - YYSYMBOL_dt_dnstap_send_identity = 619, /* dt_dnstap_send_identity */ - YYSYMBOL_dt_dnstap_send_version = 620, /* dt_dnstap_send_version */ - YYSYMBOL_dt_dnstap_identity = 621, /* dt_dnstap_identity */ - YYSYMBOL_dt_dnstap_version = 622, /* dt_dnstap_version */ - YYSYMBOL_dt_dnstap_log_resolver_query_messages = 623, /* dt_dnstap_log_resolver_query_messages */ - YYSYMBOL_dt_dnstap_log_resolver_response_messages = 624, /* dt_dnstap_log_resolver_response_messages */ - YYSYMBOL_dt_dnstap_log_client_query_messages = 625, /* dt_dnstap_log_client_query_messages */ - YYSYMBOL_dt_dnstap_log_client_response_messages = 626, /* dt_dnstap_log_client_response_messages */ - YYSYMBOL_dt_dnstap_log_forwarder_query_messages = 627, /* dt_dnstap_log_forwarder_query_messages */ - YYSYMBOL_dt_dnstap_log_forwarder_response_messages = 628, /* dt_dnstap_log_forwarder_response_messages */ - YYSYMBOL_pythonstart = 629, /* pythonstart */ - YYSYMBOL_contents_py = 630, /* contents_py */ - YYSYMBOL_content_py = 631, /* content_py */ - YYSYMBOL_py_script = 632, /* py_script */ - YYSYMBOL_dynlibstart = 633, /* dynlibstart */ - YYSYMBOL_contents_dl = 634, /* contents_dl */ - YYSYMBOL_content_dl = 635, /* content_dl */ - YYSYMBOL_dl_file = 636, /* dl_file */ - YYSYMBOL_server_disable_dnssec_lame_check = 637, /* server_disable_dnssec_lame_check */ - YYSYMBOL_server_log_identity = 638, /* server_log_identity */ - YYSYMBOL_server_response_ip = 639, /* server_response_ip */ - YYSYMBOL_server_response_ip_data = 640, /* server_response_ip_data */ - YYSYMBOL_dnscstart = 641, /* dnscstart */ - YYSYMBOL_contents_dnsc = 642, /* contents_dnsc */ - YYSYMBOL_content_dnsc = 643, /* content_dnsc */ - YYSYMBOL_dnsc_dnscrypt_enable = 644, /* dnsc_dnscrypt_enable */ - YYSYMBOL_dnsc_dnscrypt_port = 645, /* dnsc_dnscrypt_port */ - YYSYMBOL_dnsc_dnscrypt_provider = 646, /* dnsc_dnscrypt_provider */ - YYSYMBOL_dnsc_dnscrypt_provider_cert = 647, /* dnsc_dnscrypt_provider_cert */ - YYSYMBOL_dnsc_dnscrypt_provider_cert_rotated = 648, /* dnsc_dnscrypt_provider_cert_rotated */ - YYSYMBOL_dnsc_dnscrypt_secret_key = 649, /* dnsc_dnscrypt_secret_key */ - YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_size = 650, /* dnsc_dnscrypt_shared_secret_cache_size */ - YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_slabs = 651, /* dnsc_dnscrypt_shared_secret_cache_slabs */ - YYSYMBOL_dnsc_dnscrypt_nonce_cache_size = 652, /* dnsc_dnscrypt_nonce_cache_size */ - YYSYMBOL_dnsc_dnscrypt_nonce_cache_slabs = 653, /* dnsc_dnscrypt_nonce_cache_slabs */ - YYSYMBOL_cachedbstart = 654, /* cachedbstart */ - YYSYMBOL_contents_cachedb = 655, /* contents_cachedb */ - YYSYMBOL_content_cachedb = 656, /* content_cachedb */ - YYSYMBOL_cachedb_backend_name = 657, /* cachedb_backend_name */ - YYSYMBOL_cachedb_secret_seed = 658, /* cachedb_secret_seed */ - YYSYMBOL_redis_server_host = 659, /* redis_server_host */ - YYSYMBOL_redis_server_port = 660, /* redis_server_port */ - YYSYMBOL_redis_timeout = 661, /* redis_timeout */ - YYSYMBOL_redis_expire_records = 662, /* redis_expire_records */ - YYSYMBOL_server_tcp_connection_limit = 663, /* server_tcp_connection_limit */ - YYSYMBOL_ipsetstart = 664, /* ipsetstart */ - YYSYMBOL_contents_ipset = 665, /* contents_ipset */ - YYSYMBOL_content_ipset = 666, /* content_ipset */ - YYSYMBOL_ipset_name_v4 = 667, /* ipset_name_v4 */ - YYSYMBOL_ipset_name_v6 = 668 /* ipset_name_v6 */ + YYSYMBOL_VAR_IP_RATELIMIT_BACKOFF = 206, /* VAR_IP_RATELIMIT_BACKOFF */ + YYSYMBOL_VAR_RATELIMIT_BACKOFF = 207, /* VAR_RATELIMIT_BACKOFF */ + YYSYMBOL_VAR_SEND_CLIENT_SUBNET = 208, /* VAR_SEND_CLIENT_SUBNET */ + YYSYMBOL_VAR_CLIENT_SUBNET_ZONE = 209, /* VAR_CLIENT_SUBNET_ZONE */ + YYSYMBOL_VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 210, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ + YYSYMBOL_VAR_CLIENT_SUBNET_OPCODE = 211, /* VAR_CLIENT_SUBNET_OPCODE */ + YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV4 = 212, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ + YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV6 = 213, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ + YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV4 = 214, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ + YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV6 = 215, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ + YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV4 = 216, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ + YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV6 = 217, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ + YYSYMBOL_VAR_CAPS_WHITELIST = 218, /* VAR_CAPS_WHITELIST */ + YYSYMBOL_VAR_CACHE_MAX_NEGATIVE_TTL = 219, /* VAR_CACHE_MAX_NEGATIVE_TTL */ + YYSYMBOL_VAR_PERMIT_SMALL_HOLDDOWN = 220, /* VAR_PERMIT_SMALL_HOLDDOWN */ + YYSYMBOL_VAR_QNAME_MINIMISATION = 221, /* VAR_QNAME_MINIMISATION */ + YYSYMBOL_VAR_QNAME_MINIMISATION_STRICT = 222, /* VAR_QNAME_MINIMISATION_STRICT */ + YYSYMBOL_VAR_IP_FREEBIND = 223, /* VAR_IP_FREEBIND */ + YYSYMBOL_VAR_DEFINE_TAG = 224, /* VAR_DEFINE_TAG */ + YYSYMBOL_VAR_LOCAL_ZONE_TAG = 225, /* VAR_LOCAL_ZONE_TAG */ + YYSYMBOL_VAR_ACCESS_CONTROL_TAG = 226, /* VAR_ACCESS_CONTROL_TAG */ + YYSYMBOL_VAR_LOCAL_ZONE_OVERRIDE = 227, /* VAR_LOCAL_ZONE_OVERRIDE */ + YYSYMBOL_VAR_ACCESS_CONTROL_TAG_ACTION = 228, /* VAR_ACCESS_CONTROL_TAG_ACTION */ + YYSYMBOL_VAR_ACCESS_CONTROL_TAG_DATA = 229, /* VAR_ACCESS_CONTROL_TAG_DATA */ + YYSYMBOL_VAR_VIEW = 230, /* VAR_VIEW */ + YYSYMBOL_VAR_ACCESS_CONTROL_VIEW = 231, /* VAR_ACCESS_CONTROL_VIEW */ + YYSYMBOL_VAR_VIEW_FIRST = 232, /* VAR_VIEW_FIRST */ + YYSYMBOL_VAR_SERVE_EXPIRED = 233, /* VAR_SERVE_EXPIRED */ + YYSYMBOL_VAR_SERVE_EXPIRED_TTL = 234, /* VAR_SERVE_EXPIRED_TTL */ + YYSYMBOL_VAR_SERVE_EXPIRED_TTL_RESET = 235, /* VAR_SERVE_EXPIRED_TTL_RESET */ + YYSYMBOL_VAR_SERVE_EXPIRED_REPLY_TTL = 236, /* VAR_SERVE_EXPIRED_REPLY_TTL */ + YYSYMBOL_VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 237, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ + YYSYMBOL_VAR_SERVE_ORIGINAL_TTL = 238, /* VAR_SERVE_ORIGINAL_TTL */ + YYSYMBOL_VAR_FAKE_DSA = 239, /* VAR_FAKE_DSA */ + YYSYMBOL_VAR_FAKE_SHA1 = 240, /* VAR_FAKE_SHA1 */ + YYSYMBOL_VAR_LOG_IDENTITY = 241, /* VAR_LOG_IDENTITY */ + YYSYMBOL_VAR_HIDE_TRUSTANCHOR = 242, /* VAR_HIDE_TRUSTANCHOR */ + YYSYMBOL_VAR_HIDE_HTTP_USER_AGENT = 243, /* VAR_HIDE_HTTP_USER_AGENT */ + YYSYMBOL_VAR_HTTP_USER_AGENT = 244, /* VAR_HTTP_USER_AGENT */ + YYSYMBOL_VAR_TRUST_ANCHOR_SIGNALING = 245, /* VAR_TRUST_ANCHOR_SIGNALING */ + YYSYMBOL_VAR_AGGRESSIVE_NSEC = 246, /* VAR_AGGRESSIVE_NSEC */ + YYSYMBOL_VAR_USE_SYSTEMD = 247, /* VAR_USE_SYSTEMD */ + YYSYMBOL_VAR_SHM_ENABLE = 248, /* VAR_SHM_ENABLE */ + YYSYMBOL_VAR_SHM_KEY = 249, /* VAR_SHM_KEY */ + YYSYMBOL_VAR_ROOT_KEY_SENTINEL = 250, /* VAR_ROOT_KEY_SENTINEL */ + YYSYMBOL_VAR_DNSCRYPT = 251, /* VAR_DNSCRYPT */ + YYSYMBOL_VAR_DNSCRYPT_ENABLE = 252, /* VAR_DNSCRYPT_ENABLE */ + YYSYMBOL_VAR_DNSCRYPT_PORT = 253, /* VAR_DNSCRYPT_PORT */ + YYSYMBOL_VAR_DNSCRYPT_PROVIDER = 254, /* VAR_DNSCRYPT_PROVIDER */ + YYSYMBOL_VAR_DNSCRYPT_SECRET_KEY = 255, /* VAR_DNSCRYPT_SECRET_KEY */ + YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT = 256, /* VAR_DNSCRYPT_PROVIDER_CERT */ + YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 257, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ + YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 258, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ + YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 259, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ + YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SIZE = 260, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ + YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SLABS = 261, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ + YYSYMBOL_VAR_PAD_RESPONSES = 262, /* VAR_PAD_RESPONSES */ + YYSYMBOL_VAR_PAD_RESPONSES_BLOCK_SIZE = 263, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ + YYSYMBOL_VAR_PAD_QUERIES = 264, /* VAR_PAD_QUERIES */ + YYSYMBOL_VAR_PAD_QUERIES_BLOCK_SIZE = 265, /* VAR_PAD_QUERIES_BLOCK_SIZE */ + YYSYMBOL_VAR_IPSECMOD_ENABLED = 266, /* VAR_IPSECMOD_ENABLED */ + YYSYMBOL_VAR_IPSECMOD_HOOK = 267, /* VAR_IPSECMOD_HOOK */ + YYSYMBOL_VAR_IPSECMOD_IGNORE_BOGUS = 268, /* VAR_IPSECMOD_IGNORE_BOGUS */ + YYSYMBOL_VAR_IPSECMOD_MAX_TTL = 269, /* VAR_IPSECMOD_MAX_TTL */ + YYSYMBOL_VAR_IPSECMOD_WHITELIST = 270, /* VAR_IPSECMOD_WHITELIST */ + YYSYMBOL_VAR_IPSECMOD_STRICT = 271, /* VAR_IPSECMOD_STRICT */ + YYSYMBOL_VAR_CACHEDB = 272, /* VAR_CACHEDB */ + YYSYMBOL_VAR_CACHEDB_BACKEND = 273, /* VAR_CACHEDB_BACKEND */ + YYSYMBOL_VAR_CACHEDB_SECRETSEED = 274, /* VAR_CACHEDB_SECRETSEED */ + YYSYMBOL_VAR_CACHEDB_REDISHOST = 275, /* VAR_CACHEDB_REDISHOST */ + YYSYMBOL_VAR_CACHEDB_REDISPORT = 276, /* VAR_CACHEDB_REDISPORT */ + YYSYMBOL_VAR_CACHEDB_REDISTIMEOUT = 277, /* VAR_CACHEDB_REDISTIMEOUT */ + YYSYMBOL_VAR_CACHEDB_REDISEXPIRERECORDS = 278, /* VAR_CACHEDB_REDISEXPIRERECORDS */ + YYSYMBOL_VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 279, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ + YYSYMBOL_VAR_FOR_UPSTREAM = 280, /* VAR_FOR_UPSTREAM */ + YYSYMBOL_VAR_AUTH_ZONE = 281, /* VAR_AUTH_ZONE */ + YYSYMBOL_VAR_ZONEFILE = 282, /* VAR_ZONEFILE */ + YYSYMBOL_VAR_MASTER = 283, /* VAR_MASTER */ + YYSYMBOL_VAR_URL = 284, /* VAR_URL */ + YYSYMBOL_VAR_FOR_DOWNSTREAM = 285, /* VAR_FOR_DOWNSTREAM */ + YYSYMBOL_VAR_FALLBACK_ENABLED = 286, /* VAR_FALLBACK_ENABLED */ + YYSYMBOL_VAR_TLS_ADDITIONAL_PORT = 287, /* VAR_TLS_ADDITIONAL_PORT */ + YYSYMBOL_VAR_LOW_RTT = 288, /* VAR_LOW_RTT */ + YYSYMBOL_VAR_LOW_RTT_PERMIL = 289, /* VAR_LOW_RTT_PERMIL */ + YYSYMBOL_VAR_FAST_SERVER_PERMIL = 290, /* VAR_FAST_SERVER_PERMIL */ + YYSYMBOL_VAR_FAST_SERVER_NUM = 291, /* VAR_FAST_SERVER_NUM */ + YYSYMBOL_VAR_ALLOW_NOTIFY = 292, /* VAR_ALLOW_NOTIFY */ + YYSYMBOL_VAR_TLS_WIN_CERT = 293, /* VAR_TLS_WIN_CERT */ + YYSYMBOL_VAR_TCP_CONNECTION_LIMIT = 294, /* VAR_TCP_CONNECTION_LIMIT */ + YYSYMBOL_VAR_FORWARD_NO_CACHE = 295, /* VAR_FORWARD_NO_CACHE */ + YYSYMBOL_VAR_STUB_NO_CACHE = 296, /* VAR_STUB_NO_CACHE */ + YYSYMBOL_VAR_LOG_SERVFAIL = 297, /* VAR_LOG_SERVFAIL */ + YYSYMBOL_VAR_DENY_ANY = 298, /* VAR_DENY_ANY */ + YYSYMBOL_VAR_UNKNOWN_SERVER_TIME_LIMIT = 299, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ + YYSYMBOL_VAR_LOG_TAG_QUERYREPLY = 300, /* VAR_LOG_TAG_QUERYREPLY */ + YYSYMBOL_VAR_STREAM_WAIT_SIZE = 301, /* VAR_STREAM_WAIT_SIZE */ + YYSYMBOL_VAR_TLS_CIPHERS = 302, /* VAR_TLS_CIPHERS */ + YYSYMBOL_VAR_TLS_CIPHERSUITES = 303, /* VAR_TLS_CIPHERSUITES */ + YYSYMBOL_VAR_TLS_USE_SNI = 304, /* VAR_TLS_USE_SNI */ + YYSYMBOL_VAR_IPSET = 305, /* VAR_IPSET */ + YYSYMBOL_VAR_IPSET_NAME_V4 = 306, /* VAR_IPSET_NAME_V4 */ + YYSYMBOL_VAR_IPSET_NAME_V6 = 307, /* VAR_IPSET_NAME_V6 */ + YYSYMBOL_VAR_TLS_SESSION_TICKET_KEYS = 308, /* VAR_TLS_SESSION_TICKET_KEYS */ + YYSYMBOL_VAR_RPZ = 309, /* VAR_RPZ */ + YYSYMBOL_VAR_TAGS = 310, /* VAR_TAGS */ + YYSYMBOL_VAR_RPZ_ACTION_OVERRIDE = 311, /* VAR_RPZ_ACTION_OVERRIDE */ + YYSYMBOL_VAR_RPZ_CNAME_OVERRIDE = 312, /* VAR_RPZ_CNAME_OVERRIDE */ + YYSYMBOL_VAR_RPZ_LOG = 313, /* VAR_RPZ_LOG */ + YYSYMBOL_VAR_RPZ_LOG_NAME = 314, /* VAR_RPZ_LOG_NAME */ + YYSYMBOL_VAR_DYNLIB = 315, /* VAR_DYNLIB */ + YYSYMBOL_VAR_DYNLIB_FILE = 316, /* VAR_DYNLIB_FILE */ + YYSYMBOL_VAR_EDNS_CLIENT_STRING = 317, /* VAR_EDNS_CLIENT_STRING */ + YYSYMBOL_VAR_EDNS_CLIENT_STRING_OPCODE = 318, /* VAR_EDNS_CLIENT_STRING_OPCODE */ + YYSYMBOL_VAR_NSID = 319, /* VAR_NSID */ + YYSYMBOL_VAR_ZONEMD_PERMISSIVE_MODE = 320, /* VAR_ZONEMD_PERMISSIVE_MODE */ + YYSYMBOL_VAR_ZONEMD_CHECK = 321, /* VAR_ZONEMD_CHECK */ + YYSYMBOL_VAR_ZONEMD_REJECT_ABSENCE = 322, /* VAR_ZONEMD_REJECT_ABSENCE */ + YYSYMBOL_VAR_RPZ_SIGNAL_NXDOMAIN_RA = 323, /* VAR_RPZ_SIGNAL_NXDOMAIN_RA */ + YYSYMBOL_YYACCEPT = 324, /* $accept */ + YYSYMBOL_toplevelvars = 325, /* toplevelvars */ + YYSYMBOL_toplevelvar = 326, /* toplevelvar */ + YYSYMBOL_force_toplevel = 327, /* force_toplevel */ + YYSYMBOL_serverstart = 328, /* serverstart */ + YYSYMBOL_contents_server = 329, /* contents_server */ + YYSYMBOL_content_server = 330, /* content_server */ + YYSYMBOL_stubstart = 331, /* stubstart */ + YYSYMBOL_contents_stub = 332, /* contents_stub */ + YYSYMBOL_content_stub = 333, /* content_stub */ + YYSYMBOL_forwardstart = 334, /* forwardstart */ + YYSYMBOL_contents_forward = 335, /* contents_forward */ + YYSYMBOL_content_forward = 336, /* content_forward */ + YYSYMBOL_viewstart = 337, /* viewstart */ + YYSYMBOL_contents_view = 338, /* contents_view */ + YYSYMBOL_content_view = 339, /* content_view */ + YYSYMBOL_authstart = 340, /* authstart */ + YYSYMBOL_contents_auth = 341, /* contents_auth */ + YYSYMBOL_content_auth = 342, /* content_auth */ + YYSYMBOL_rpz_tag = 343, /* rpz_tag */ + YYSYMBOL_rpz_action_override = 344, /* rpz_action_override */ + YYSYMBOL_rpz_cname_override = 345, /* rpz_cname_override */ + YYSYMBOL_rpz_log = 346, /* rpz_log */ + YYSYMBOL_rpz_log_name = 347, /* rpz_log_name */ + YYSYMBOL_rpz_signal_nxdomain_ra = 348, /* rpz_signal_nxdomain_ra */ + YYSYMBOL_rpzstart = 349, /* rpzstart */ + YYSYMBOL_contents_rpz = 350, /* contents_rpz */ + YYSYMBOL_content_rpz = 351, /* content_rpz */ + YYSYMBOL_server_num_threads = 352, /* server_num_threads */ + YYSYMBOL_server_verbosity = 353, /* server_verbosity */ + YYSYMBOL_server_statistics_interval = 354, /* server_statistics_interval */ + YYSYMBOL_server_statistics_cumulative = 355, /* server_statistics_cumulative */ + YYSYMBOL_server_extended_statistics = 356, /* server_extended_statistics */ + YYSYMBOL_server_shm_enable = 357, /* server_shm_enable */ + YYSYMBOL_server_shm_key = 358, /* server_shm_key */ + YYSYMBOL_server_port = 359, /* server_port */ + YYSYMBOL_server_send_client_subnet = 360, /* server_send_client_subnet */ + YYSYMBOL_server_client_subnet_zone = 361, /* server_client_subnet_zone */ + YYSYMBOL_server_client_subnet_always_forward = 362, /* server_client_subnet_always_forward */ + YYSYMBOL_server_client_subnet_opcode = 363, /* server_client_subnet_opcode */ + YYSYMBOL_server_max_client_subnet_ipv4 = 364, /* server_max_client_subnet_ipv4 */ + YYSYMBOL_server_max_client_subnet_ipv6 = 365, /* server_max_client_subnet_ipv6 */ + YYSYMBOL_server_min_client_subnet_ipv4 = 366, /* server_min_client_subnet_ipv4 */ + YYSYMBOL_server_min_client_subnet_ipv6 = 367, /* server_min_client_subnet_ipv6 */ + YYSYMBOL_server_max_ecs_tree_size_ipv4 = 368, /* server_max_ecs_tree_size_ipv4 */ + YYSYMBOL_server_max_ecs_tree_size_ipv6 = 369, /* server_max_ecs_tree_size_ipv6 */ + YYSYMBOL_server_interface = 370, /* server_interface */ + YYSYMBOL_server_outgoing_interface = 371, /* server_outgoing_interface */ + YYSYMBOL_server_outgoing_range = 372, /* server_outgoing_range */ + YYSYMBOL_server_outgoing_port_permit = 373, /* server_outgoing_port_permit */ + YYSYMBOL_server_outgoing_port_avoid = 374, /* server_outgoing_port_avoid */ + YYSYMBOL_server_outgoing_num_tcp = 375, /* server_outgoing_num_tcp */ + YYSYMBOL_server_incoming_num_tcp = 376, /* server_incoming_num_tcp */ + YYSYMBOL_server_interface_automatic = 377, /* server_interface_automatic */ + YYSYMBOL_server_do_ip4 = 378, /* server_do_ip4 */ + YYSYMBOL_server_do_ip6 = 379, /* server_do_ip6 */ + YYSYMBOL_server_do_udp = 380, /* server_do_udp */ + YYSYMBOL_server_do_tcp = 381, /* server_do_tcp */ + YYSYMBOL_server_prefer_ip4 = 382, /* server_prefer_ip4 */ + YYSYMBOL_server_prefer_ip6 = 383, /* server_prefer_ip6 */ + YYSYMBOL_server_tcp_mss = 384, /* server_tcp_mss */ + YYSYMBOL_server_outgoing_tcp_mss = 385, /* server_outgoing_tcp_mss */ + YYSYMBOL_server_tcp_idle_timeout = 386, /* server_tcp_idle_timeout */ + YYSYMBOL_server_max_reuse_tcp_queries = 387, /* server_max_reuse_tcp_queries */ + YYSYMBOL_server_tcp_reuse_timeout = 388, /* server_tcp_reuse_timeout */ + YYSYMBOL_server_tcp_auth_query_timeout = 389, /* server_tcp_auth_query_timeout */ + YYSYMBOL_server_tcp_keepalive = 390, /* server_tcp_keepalive */ + YYSYMBOL_server_tcp_keepalive_timeout = 391, /* server_tcp_keepalive_timeout */ + YYSYMBOL_server_tcp_upstream = 392, /* server_tcp_upstream */ + YYSYMBOL_server_udp_upstream_without_downstream = 393, /* server_udp_upstream_without_downstream */ + YYSYMBOL_server_ssl_upstream = 394, /* server_ssl_upstream */ + YYSYMBOL_server_ssl_service_key = 395, /* server_ssl_service_key */ + YYSYMBOL_server_ssl_service_pem = 396, /* server_ssl_service_pem */ + YYSYMBOL_server_ssl_port = 397, /* server_ssl_port */ + YYSYMBOL_server_tls_cert_bundle = 398, /* server_tls_cert_bundle */ + YYSYMBOL_server_tls_win_cert = 399, /* server_tls_win_cert */ + YYSYMBOL_server_tls_additional_port = 400, /* server_tls_additional_port */ + YYSYMBOL_server_tls_ciphers = 401, /* server_tls_ciphers */ + YYSYMBOL_server_tls_ciphersuites = 402, /* server_tls_ciphersuites */ + YYSYMBOL_server_tls_session_ticket_keys = 403, /* server_tls_session_ticket_keys */ + YYSYMBOL_server_tls_use_sni = 404, /* server_tls_use_sni */ + YYSYMBOL_server_https_port = 405, /* server_https_port */ + YYSYMBOL_server_http_endpoint = 406, /* server_http_endpoint */ + YYSYMBOL_server_http_max_streams = 407, /* server_http_max_streams */ + YYSYMBOL_server_http_query_buffer_size = 408, /* server_http_query_buffer_size */ + YYSYMBOL_server_http_response_buffer_size = 409, /* server_http_response_buffer_size */ + YYSYMBOL_server_http_nodelay = 410, /* server_http_nodelay */ + YYSYMBOL_server_http_notls_downstream = 411, /* server_http_notls_downstream */ + YYSYMBOL_server_use_systemd = 412, /* server_use_systemd */ + YYSYMBOL_server_do_daemonize = 413, /* server_do_daemonize */ + YYSYMBOL_server_use_syslog = 414, /* server_use_syslog */ + YYSYMBOL_server_log_time_ascii = 415, /* server_log_time_ascii */ + YYSYMBOL_server_log_queries = 416, /* server_log_queries */ + YYSYMBOL_server_log_replies = 417, /* server_log_replies */ + YYSYMBOL_server_log_tag_queryreply = 418, /* server_log_tag_queryreply */ + YYSYMBOL_server_log_servfail = 419, /* server_log_servfail */ + YYSYMBOL_server_log_local_actions = 420, /* server_log_local_actions */ + YYSYMBOL_server_chroot = 421, /* server_chroot */ + YYSYMBOL_server_username = 422, /* server_username */ + YYSYMBOL_server_directory = 423, /* server_directory */ + YYSYMBOL_server_logfile = 424, /* server_logfile */ + YYSYMBOL_server_pidfile = 425, /* server_pidfile */ + YYSYMBOL_server_root_hints = 426, /* server_root_hints */ + YYSYMBOL_server_dlv_anchor_file = 427, /* server_dlv_anchor_file */ + YYSYMBOL_server_dlv_anchor = 428, /* server_dlv_anchor */ + YYSYMBOL_server_auto_trust_anchor_file = 429, /* server_auto_trust_anchor_file */ + YYSYMBOL_server_trust_anchor_file = 430, /* server_trust_anchor_file */ + YYSYMBOL_server_trusted_keys_file = 431, /* server_trusted_keys_file */ + YYSYMBOL_server_trust_anchor = 432, /* server_trust_anchor */ + YYSYMBOL_server_trust_anchor_signaling = 433, /* server_trust_anchor_signaling */ + YYSYMBOL_server_root_key_sentinel = 434, /* server_root_key_sentinel */ + YYSYMBOL_server_domain_insecure = 435, /* server_domain_insecure */ + YYSYMBOL_server_hide_identity = 436, /* server_hide_identity */ + YYSYMBOL_server_hide_version = 437, /* server_hide_version */ + YYSYMBOL_server_hide_trustanchor = 438, /* server_hide_trustanchor */ + YYSYMBOL_server_hide_http_user_agent = 439, /* server_hide_http_user_agent */ + YYSYMBOL_server_identity = 440, /* server_identity */ + YYSYMBOL_server_version = 441, /* server_version */ + YYSYMBOL_server_http_user_agent = 442, /* server_http_user_agent */ + YYSYMBOL_server_nsid = 443, /* server_nsid */ + YYSYMBOL_server_so_rcvbuf = 444, /* server_so_rcvbuf */ + YYSYMBOL_server_so_sndbuf = 445, /* server_so_sndbuf */ + YYSYMBOL_server_so_reuseport = 446, /* server_so_reuseport */ + YYSYMBOL_server_ip_transparent = 447, /* server_ip_transparent */ + YYSYMBOL_server_ip_freebind = 448, /* server_ip_freebind */ + YYSYMBOL_server_ip_dscp = 449, /* server_ip_dscp */ + YYSYMBOL_server_stream_wait_size = 450, /* server_stream_wait_size */ + YYSYMBOL_server_edns_buffer_size = 451, /* server_edns_buffer_size */ + YYSYMBOL_server_msg_buffer_size = 452, /* server_msg_buffer_size */ + YYSYMBOL_server_msg_cache_size = 453, /* server_msg_cache_size */ + YYSYMBOL_server_msg_cache_slabs = 454, /* server_msg_cache_slabs */ + YYSYMBOL_server_num_queries_per_thread = 455, /* server_num_queries_per_thread */ + YYSYMBOL_server_jostle_timeout = 456, /* server_jostle_timeout */ + YYSYMBOL_server_delay_close = 457, /* server_delay_close */ + YYSYMBOL_server_udp_connect = 458, /* server_udp_connect */ + YYSYMBOL_server_unblock_lan_zones = 459, /* server_unblock_lan_zones */ + YYSYMBOL_server_insecure_lan_zones = 460, /* server_insecure_lan_zones */ + YYSYMBOL_server_rrset_cache_size = 461, /* server_rrset_cache_size */ + YYSYMBOL_server_rrset_cache_slabs = 462, /* server_rrset_cache_slabs */ + YYSYMBOL_server_infra_host_ttl = 463, /* server_infra_host_ttl */ + YYSYMBOL_server_infra_lame_ttl = 464, /* server_infra_lame_ttl */ + YYSYMBOL_server_infra_cache_numhosts = 465, /* server_infra_cache_numhosts */ + YYSYMBOL_server_infra_cache_lame_size = 466, /* server_infra_cache_lame_size */ + YYSYMBOL_server_infra_cache_slabs = 467, /* server_infra_cache_slabs */ + YYSYMBOL_server_infra_cache_min_rtt = 468, /* server_infra_cache_min_rtt */ + YYSYMBOL_server_infra_keep_probing = 469, /* server_infra_keep_probing */ + YYSYMBOL_server_target_fetch_policy = 470, /* server_target_fetch_policy */ + YYSYMBOL_server_harden_short_bufsize = 471, /* server_harden_short_bufsize */ + YYSYMBOL_server_harden_large_queries = 472, /* server_harden_large_queries */ + YYSYMBOL_server_harden_glue = 473, /* server_harden_glue */ + YYSYMBOL_server_harden_dnssec_stripped = 474, /* server_harden_dnssec_stripped */ + YYSYMBOL_server_harden_below_nxdomain = 475, /* server_harden_below_nxdomain */ + YYSYMBOL_server_harden_referral_path = 476, /* server_harden_referral_path */ + YYSYMBOL_server_harden_algo_downgrade = 477, /* server_harden_algo_downgrade */ + YYSYMBOL_server_use_caps_for_id = 478, /* server_use_caps_for_id */ + YYSYMBOL_server_caps_whitelist = 479, /* server_caps_whitelist */ + YYSYMBOL_server_private_address = 480, /* server_private_address */ + YYSYMBOL_server_private_domain = 481, /* server_private_domain */ + YYSYMBOL_server_prefetch = 482, /* server_prefetch */ + YYSYMBOL_server_prefetch_key = 483, /* server_prefetch_key */ + YYSYMBOL_server_deny_any = 484, /* server_deny_any */ + YYSYMBOL_server_unwanted_reply_threshold = 485, /* server_unwanted_reply_threshold */ + YYSYMBOL_server_do_not_query_address = 486, /* server_do_not_query_address */ + YYSYMBOL_server_do_not_query_localhost = 487, /* server_do_not_query_localhost */ + YYSYMBOL_server_access_control = 488, /* server_access_control */ + YYSYMBOL_server_module_conf = 489, /* server_module_conf */ + YYSYMBOL_server_val_override_date = 490, /* server_val_override_date */ + YYSYMBOL_server_val_sig_skew_min = 491, /* server_val_sig_skew_min */ + YYSYMBOL_server_val_sig_skew_max = 492, /* server_val_sig_skew_max */ + YYSYMBOL_server_val_max_restart = 493, /* server_val_max_restart */ + YYSYMBOL_server_cache_max_ttl = 494, /* server_cache_max_ttl */ + YYSYMBOL_server_cache_max_negative_ttl = 495, /* server_cache_max_negative_ttl */ + YYSYMBOL_server_cache_min_ttl = 496, /* server_cache_min_ttl */ + YYSYMBOL_server_bogus_ttl = 497, /* server_bogus_ttl */ + YYSYMBOL_server_val_clean_additional = 498, /* server_val_clean_additional */ + YYSYMBOL_server_val_permissive_mode = 499, /* server_val_permissive_mode */ + YYSYMBOL_server_aggressive_nsec = 500, /* server_aggressive_nsec */ + YYSYMBOL_server_ignore_cd_flag = 501, /* server_ignore_cd_flag */ + YYSYMBOL_server_serve_expired = 502, /* server_serve_expired */ + YYSYMBOL_server_serve_expired_ttl = 503, /* server_serve_expired_ttl */ + YYSYMBOL_server_serve_expired_ttl_reset = 504, /* server_serve_expired_ttl_reset */ + YYSYMBOL_server_serve_expired_reply_ttl = 505, /* server_serve_expired_reply_ttl */ + YYSYMBOL_server_serve_expired_client_timeout = 506, /* server_serve_expired_client_timeout */ + YYSYMBOL_server_serve_original_ttl = 507, /* server_serve_original_ttl */ + YYSYMBOL_server_fake_dsa = 508, /* server_fake_dsa */ + YYSYMBOL_server_fake_sha1 = 509, /* server_fake_sha1 */ + YYSYMBOL_server_val_log_level = 510, /* server_val_log_level */ + YYSYMBOL_server_val_nsec3_keysize_iterations = 511, /* server_val_nsec3_keysize_iterations */ + YYSYMBOL_server_zonemd_permissive_mode = 512, /* server_zonemd_permissive_mode */ + YYSYMBOL_server_add_holddown = 513, /* server_add_holddown */ + YYSYMBOL_server_del_holddown = 514, /* server_del_holddown */ + YYSYMBOL_server_keep_missing = 515, /* server_keep_missing */ + YYSYMBOL_server_permit_small_holddown = 516, /* server_permit_small_holddown */ + YYSYMBOL_server_key_cache_size = 517, /* server_key_cache_size */ + YYSYMBOL_server_key_cache_slabs = 518, /* server_key_cache_slabs */ + YYSYMBOL_server_neg_cache_size = 519, /* server_neg_cache_size */ + YYSYMBOL_server_local_zone = 520, /* server_local_zone */ + YYSYMBOL_server_local_data = 521, /* server_local_data */ + YYSYMBOL_server_local_data_ptr = 522, /* server_local_data_ptr */ + YYSYMBOL_server_minimal_responses = 523, /* server_minimal_responses */ + YYSYMBOL_server_rrset_roundrobin = 524, /* server_rrset_roundrobin */ + YYSYMBOL_server_unknown_server_time_limit = 525, /* server_unknown_server_time_limit */ + YYSYMBOL_server_max_udp_size = 526, /* server_max_udp_size */ + YYSYMBOL_server_dns64_prefix = 527, /* server_dns64_prefix */ + YYSYMBOL_server_dns64_synthall = 528, /* server_dns64_synthall */ + YYSYMBOL_server_dns64_ignore_aaaa = 529, /* server_dns64_ignore_aaaa */ + YYSYMBOL_server_define_tag = 530, /* server_define_tag */ + YYSYMBOL_server_local_zone_tag = 531, /* server_local_zone_tag */ + YYSYMBOL_server_access_control_tag = 532, /* server_access_control_tag */ + YYSYMBOL_server_access_control_tag_action = 533, /* server_access_control_tag_action */ + YYSYMBOL_server_access_control_tag_data = 534, /* server_access_control_tag_data */ + YYSYMBOL_server_local_zone_override = 535, /* server_local_zone_override */ + YYSYMBOL_server_access_control_view = 536, /* server_access_control_view */ + YYSYMBOL_server_response_ip_tag = 537, /* server_response_ip_tag */ + YYSYMBOL_server_ip_ratelimit = 538, /* server_ip_ratelimit */ + YYSYMBOL_server_ratelimit = 539, /* server_ratelimit */ + YYSYMBOL_server_ip_ratelimit_size = 540, /* server_ip_ratelimit_size */ + YYSYMBOL_server_ratelimit_size = 541, /* server_ratelimit_size */ + YYSYMBOL_server_ip_ratelimit_slabs = 542, /* server_ip_ratelimit_slabs */ + YYSYMBOL_server_ratelimit_slabs = 543, /* server_ratelimit_slabs */ + YYSYMBOL_server_ratelimit_for_domain = 544, /* server_ratelimit_for_domain */ + YYSYMBOL_server_ratelimit_below_domain = 545, /* server_ratelimit_below_domain */ + YYSYMBOL_server_ip_ratelimit_factor = 546, /* server_ip_ratelimit_factor */ + YYSYMBOL_server_ratelimit_factor = 547, /* server_ratelimit_factor */ + YYSYMBOL_server_ip_ratelimit_backoff = 548, /* server_ip_ratelimit_backoff */ + YYSYMBOL_server_ratelimit_backoff = 549, /* server_ratelimit_backoff */ + YYSYMBOL_server_outbound_msg_retry = 550, /* server_outbound_msg_retry */ + YYSYMBOL_server_low_rtt = 551, /* server_low_rtt */ + YYSYMBOL_server_fast_server_num = 552, /* server_fast_server_num */ + YYSYMBOL_server_fast_server_permil = 553, /* server_fast_server_permil */ + YYSYMBOL_server_qname_minimisation = 554, /* server_qname_minimisation */ + YYSYMBOL_server_qname_minimisation_strict = 555, /* server_qname_minimisation_strict */ + YYSYMBOL_server_pad_responses = 556, /* server_pad_responses */ + YYSYMBOL_server_pad_responses_block_size = 557, /* server_pad_responses_block_size */ + YYSYMBOL_server_pad_queries = 558, /* server_pad_queries */ + YYSYMBOL_server_pad_queries_block_size = 559, /* server_pad_queries_block_size */ + YYSYMBOL_server_ipsecmod_enabled = 560, /* server_ipsecmod_enabled */ + YYSYMBOL_server_ipsecmod_ignore_bogus = 561, /* server_ipsecmod_ignore_bogus */ + YYSYMBOL_server_ipsecmod_hook = 562, /* server_ipsecmod_hook */ + YYSYMBOL_server_ipsecmod_max_ttl = 563, /* server_ipsecmod_max_ttl */ + YYSYMBOL_server_ipsecmod_whitelist = 564, /* server_ipsecmod_whitelist */ + YYSYMBOL_server_ipsecmod_strict = 565, /* server_ipsecmod_strict */ + YYSYMBOL_server_edns_client_string = 566, /* server_edns_client_string */ + YYSYMBOL_server_edns_client_string_opcode = 567, /* server_edns_client_string_opcode */ + YYSYMBOL_stub_name = 568, /* stub_name */ + YYSYMBOL_stub_host = 569, /* stub_host */ + YYSYMBOL_stub_addr = 570, /* stub_addr */ + YYSYMBOL_stub_first = 571, /* stub_first */ + YYSYMBOL_stub_no_cache = 572, /* stub_no_cache */ + YYSYMBOL_stub_ssl_upstream = 573, /* stub_ssl_upstream */ + YYSYMBOL_stub_tcp_upstream = 574, /* stub_tcp_upstream */ + YYSYMBOL_stub_prime = 575, /* stub_prime */ + YYSYMBOL_forward_name = 576, /* forward_name */ + YYSYMBOL_forward_host = 577, /* forward_host */ + YYSYMBOL_forward_addr = 578, /* forward_addr */ + YYSYMBOL_forward_first = 579, /* forward_first */ + YYSYMBOL_forward_no_cache = 580, /* forward_no_cache */ + YYSYMBOL_forward_ssl_upstream = 581, /* forward_ssl_upstream */ + YYSYMBOL_forward_tcp_upstream = 582, /* forward_tcp_upstream */ + YYSYMBOL_auth_name = 583, /* auth_name */ + YYSYMBOL_auth_zonefile = 584, /* auth_zonefile */ + YYSYMBOL_auth_master = 585, /* auth_master */ + YYSYMBOL_auth_url = 586, /* auth_url */ + YYSYMBOL_auth_allow_notify = 587, /* auth_allow_notify */ + YYSYMBOL_auth_zonemd_check = 588, /* auth_zonemd_check */ + YYSYMBOL_auth_zonemd_reject_absence = 589, /* auth_zonemd_reject_absence */ + YYSYMBOL_auth_for_downstream = 590, /* auth_for_downstream */ + YYSYMBOL_auth_for_upstream = 591, /* auth_for_upstream */ + YYSYMBOL_auth_fallback_enabled = 592, /* auth_fallback_enabled */ + YYSYMBOL_view_name = 593, /* view_name */ + YYSYMBOL_view_local_zone = 594, /* view_local_zone */ + YYSYMBOL_view_response_ip = 595, /* view_response_ip */ + YYSYMBOL_view_response_ip_data = 596, /* view_response_ip_data */ + YYSYMBOL_view_local_data = 597, /* view_local_data */ + YYSYMBOL_view_local_data_ptr = 598, /* view_local_data_ptr */ + YYSYMBOL_view_first = 599, /* view_first */ + YYSYMBOL_rcstart = 600, /* rcstart */ + YYSYMBOL_contents_rc = 601, /* contents_rc */ + YYSYMBOL_content_rc = 602, /* content_rc */ + YYSYMBOL_rc_control_enable = 603, /* rc_control_enable */ + YYSYMBOL_rc_control_port = 604, /* rc_control_port */ + YYSYMBOL_rc_control_interface = 605, /* rc_control_interface */ + YYSYMBOL_rc_control_use_cert = 606, /* rc_control_use_cert */ + YYSYMBOL_rc_server_key_file = 607, /* rc_server_key_file */ + YYSYMBOL_rc_server_cert_file = 608, /* rc_server_cert_file */ + YYSYMBOL_rc_control_key_file = 609, /* rc_control_key_file */ + YYSYMBOL_rc_control_cert_file = 610, /* rc_control_cert_file */ + YYSYMBOL_dtstart = 611, /* dtstart */ + YYSYMBOL_contents_dt = 612, /* contents_dt */ + YYSYMBOL_content_dt = 613, /* content_dt */ + YYSYMBOL_dt_dnstap_enable = 614, /* dt_dnstap_enable */ + YYSYMBOL_dt_dnstap_bidirectional = 615, /* dt_dnstap_bidirectional */ + YYSYMBOL_dt_dnstap_socket_path = 616, /* dt_dnstap_socket_path */ + YYSYMBOL_dt_dnstap_ip = 617, /* dt_dnstap_ip */ + YYSYMBOL_dt_dnstap_tls = 618, /* dt_dnstap_tls */ + YYSYMBOL_dt_dnstap_tls_server_name = 619, /* dt_dnstap_tls_server_name */ + YYSYMBOL_dt_dnstap_tls_cert_bundle = 620, /* dt_dnstap_tls_cert_bundle */ + YYSYMBOL_dt_dnstap_tls_client_key_file = 621, /* dt_dnstap_tls_client_key_file */ + YYSYMBOL_dt_dnstap_tls_client_cert_file = 622, /* dt_dnstap_tls_client_cert_file */ + YYSYMBOL_dt_dnstap_send_identity = 623, /* dt_dnstap_send_identity */ + YYSYMBOL_dt_dnstap_send_version = 624, /* dt_dnstap_send_version */ + YYSYMBOL_dt_dnstap_identity = 625, /* dt_dnstap_identity */ + YYSYMBOL_dt_dnstap_version = 626, /* dt_dnstap_version */ + YYSYMBOL_dt_dnstap_log_resolver_query_messages = 627, /* dt_dnstap_log_resolver_query_messages */ + YYSYMBOL_dt_dnstap_log_resolver_response_messages = 628, /* dt_dnstap_log_resolver_response_messages */ + YYSYMBOL_dt_dnstap_log_client_query_messages = 629, /* dt_dnstap_log_client_query_messages */ + YYSYMBOL_dt_dnstap_log_client_response_messages = 630, /* dt_dnstap_log_client_response_messages */ + YYSYMBOL_dt_dnstap_log_forwarder_query_messages = 631, /* dt_dnstap_log_forwarder_query_messages */ + YYSYMBOL_dt_dnstap_log_forwarder_response_messages = 632, /* dt_dnstap_log_forwarder_response_messages */ + YYSYMBOL_pythonstart = 633, /* pythonstart */ + YYSYMBOL_contents_py = 634, /* contents_py */ + YYSYMBOL_content_py = 635, /* content_py */ + YYSYMBOL_py_script = 636, /* py_script */ + YYSYMBOL_dynlibstart = 637, /* dynlibstart */ + YYSYMBOL_contents_dl = 638, /* contents_dl */ + YYSYMBOL_content_dl = 639, /* content_dl */ + YYSYMBOL_dl_file = 640, /* dl_file */ + YYSYMBOL_server_disable_dnssec_lame_check = 641, /* server_disable_dnssec_lame_check */ + YYSYMBOL_server_log_identity = 642, /* server_log_identity */ + YYSYMBOL_server_response_ip = 643, /* server_response_ip */ + YYSYMBOL_server_response_ip_data = 644, /* server_response_ip_data */ + YYSYMBOL_dnscstart = 645, /* dnscstart */ + YYSYMBOL_contents_dnsc = 646, /* contents_dnsc */ + YYSYMBOL_content_dnsc = 647, /* content_dnsc */ + YYSYMBOL_dnsc_dnscrypt_enable = 648, /* dnsc_dnscrypt_enable */ + YYSYMBOL_dnsc_dnscrypt_port = 649, /* dnsc_dnscrypt_port */ + YYSYMBOL_dnsc_dnscrypt_provider = 650, /* dnsc_dnscrypt_provider */ + YYSYMBOL_dnsc_dnscrypt_provider_cert = 651, /* dnsc_dnscrypt_provider_cert */ + YYSYMBOL_dnsc_dnscrypt_provider_cert_rotated = 652, /* dnsc_dnscrypt_provider_cert_rotated */ + YYSYMBOL_dnsc_dnscrypt_secret_key = 653, /* dnsc_dnscrypt_secret_key */ + YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_size = 654, /* dnsc_dnscrypt_shared_secret_cache_size */ + YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_slabs = 655, /* dnsc_dnscrypt_shared_secret_cache_slabs */ + YYSYMBOL_dnsc_dnscrypt_nonce_cache_size = 656, /* dnsc_dnscrypt_nonce_cache_size */ + YYSYMBOL_dnsc_dnscrypt_nonce_cache_slabs = 657, /* dnsc_dnscrypt_nonce_cache_slabs */ + YYSYMBOL_cachedbstart = 658, /* cachedbstart */ + YYSYMBOL_contents_cachedb = 659, /* contents_cachedb */ + YYSYMBOL_content_cachedb = 660, /* content_cachedb */ + YYSYMBOL_cachedb_backend_name = 661, /* cachedb_backend_name */ + YYSYMBOL_cachedb_secret_seed = 662, /* cachedb_secret_seed */ + YYSYMBOL_redis_server_host = 663, /* redis_server_host */ + YYSYMBOL_redis_server_port = 664, /* redis_server_port */ + YYSYMBOL_redis_timeout = 665, /* redis_timeout */ + YYSYMBOL_redis_expire_records = 666, /* redis_expire_records */ + YYSYMBOL_server_tcp_connection_limit = 667, /* server_tcp_connection_limit */ + YYSYMBOL_ipsetstart = 668, /* ipsetstart */ + YYSYMBOL_contents_ipset = 669, /* contents_ipset */ + YYSYMBOL_content_ipset = 670, /* content_ipset */ + YYSYMBOL_ipset_name_v4 = 671, /* ipset_name_v4 */ + YYSYMBOL_ipset_name_v6 = 672 /* ipset_name_v6 */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; @@ -1524,6 +840,18 @@ typedef int_least16_t yytype_int16; typedef short yytype_int16; #endif +/* Work around bug in HP-UX 11.23, which defines these macros + incorrectly for preprocessor constants. This workaround can likely + be removed in 2023, as HPE has promised support for HP-UX 11.23 + (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of + . */ +#ifdef __hpux +# undef UINT_LEAST8_MAX +# undef UINT_LEAST16_MAX +# define UINT_LEAST8_MAX 255 +# define UINT_LEAST16_MAX 65535 +#endif + #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ typedef __UINT_LEAST8_TYPE__ yytype_uint8; #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ @@ -1621,9 +949,9 @@ typedef int yy_state_fast_t; /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ -# define YYUSE(E) ((void) (E)) +# define YY_USE(E) ((void) (E)) #else -# define YYUSE(E) /* empty */ +# define YY_USE(E) /* empty */ #endif #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ @@ -1790,18 +1118,19 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 683 +#define YYLAST 687 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 322 +#define YYNTOKENS 324 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 347 +#define YYNNTS 349 /* YYNRULES -- Number of rules. */ -#define YYNRULES 671 +#define YYNRULES 675 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 997 +#define YYNSTATES 1003 -#define YYMAXUTOK 576 +/* YYMAXUTOK -- Last valid token kind. */ +#define YYMAXUTOK 578 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM @@ -1872,81 +1201,81 @@ static const yytype_int16 yytranslate[] = 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321 + 315, 316, 317, 318, 319, 320, 321, 322, 323 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { - 0, 193, 193, 193, 194, 194, 195, 195, 196, 196, - 196, 197, 197, 198, 198, 199, 199, 200, 202, 208, - 213, 214, 215, 215, 215, 216, 216, 217, 217, 217, - 218, 218, 219, 219, 219, 220, 220, 221, 221, 221, - 222, 222, 222, 223, 223, 224, 224, 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, 236, 236, 237, 237, 238, 238, 239, 239, - 239, 240, 240, 241, 241, 242, 242, 242, 243, 243, - 244, 244, 245, 245, 246, 246, 246, 247, 247, 248, - 248, 249, 249, 250, 250, 251, 251, 252, 252, 253, - 253, 254, 254, 255, 255, 255, 256, 256, 256, 257, - 257, 257, 258, 258, 258, 258, 259, 260, 260, 260, - 261, 261, 261, 262, 262, 263, 263, 264, 264, 264, - 265, 265, 265, 266, 266, 267, 267, 267, 268, 268, - 269, 269, 269, 270, 270, 271, 271, 272, 272, 273, - 274, 274, 275, 275, 276, 276, 277, 277, 278, 278, - 279, 279, 280, 280, 281, 281, 282, 282, 283, 283, - 283, 284, 284, 285, 285, 286, 286, 287, 288, 288, - 289, 289, 290, 291, 291, 292, 292, 293, 293, 294, - 294, 295, 295, 295, 296, 296, 296, 297, 297, 298, - 299, 299, 300, 300, 301, 301, 302, 302, 303, 303, - 303, 304, 304, 304, 305, 305, 305, 306, 306, 307, - 307, 308, 308, 309, 309, 310, 310, 311, 311, 312, - 312, 315, 328, 329, 330, 330, 330, 330, 330, 331, - 331, 331, 333, 346, 347, 348, 348, 348, 348, 349, - 349, 349, 351, 366, 367, 368, 368, 368, 368, 369, - 369, 369, 371, 391, 392, 393, 393, 393, 393, 394, - 394, 394, 395, 395, 395, 398, 417, 434, 442, 452, - 459, 469, 487, 488, 489, 489, 489, 489, 489, 490, - 490, 490, 491, 491, 491, 491, 493, 502, 511, 522, - 531, 540, 549, 560, 569, 581, 595, 610, 621, 638, - 655, 672, 689, 704, 719, 732, 747, 756, 765, 774, - 783, 792, 801, 810, 819, 828, 837, 846, 855, 864, - 873, 886, 897, 908, 919, 928, 941, 950, 959, 968, - 975, 982, 991, 998, 1007, 1015, 1022, 1029, 1037, 1046, - 1054, 1070, 1078, 1086, 1094, 1102, 1110, 1119, 1128, 1142, - 1151, 1160, 1169, 1178, 1187, 1196, 1203, 1210, 1236, 1244, - 1251, 1258, 1265, 1272, 1280, 1288, 1296, 1303, 1314, 1325, - 1332, 1341, 1350, 1359, 1368, 1375, 1382, 1389, 1405, 1413, - 1421, 1431, 1441, 1451, 1465, 1473, 1486, 1497, 1505, 1518, - 1527, 1536, 1545, 1554, 1564, 1574, 1582, 1595, 1604, 1612, - 1621, 1629, 1642, 1651, 1661, 1668, 1678, 1688, 1698, 1708, - 1718, 1728, 1738, 1748, 1755, 1762, 1769, 1778, 1787, 1796, - 1805, 1812, 1822, 1842, 1849, 1867, 1880, 1893, 1906, 1915, - 1924, 1933, 1942, 1952, 1962, 1973, 1982, 1991, 2000, 2009, - 2018, 2027, 2036, 2049, 2062, 2071, 2078, 2087, 2096, 2105, - 2114, 2123, 2131, 2144, 2152, 2197, 2204, 2219, 2229, 2239, - 2246, 2253, 2260, 2269, 2277, 2291, 2312, 2333, 2345, 2357, - 2369, 2378, 2399, 2408, 2417, 2425, 2433, 2446, 2459, 2474, - 2489, 2498, 2507, 2516, 2522, 2531, 2540, 2550, 2560, 2570, - 2579, 2589, 2598, 2611, 2624, 2636, 2650, 2662, 2676, 2685, - 2697, 2707, 2714, 2721, 2730, 2739, 2749, 2759, 2769, 2779, - 2786, 2793, 2802, 2811, 2821, 2831, 2841, 2848, 2855, 2862, - 2870, 2880, 2890, 2900, 2910, 2920, 2930, 2976, 2986, 2994, - 3002, 3017, 3026, 3031, 3032, 3033, 3033, 3033, 3034, 3034, - 3034, 3035, 3035, 3037, 3047, 3056, 3063, 3070, 3077, 3084, - 3091, 3098, 3103, 3104, 3105, 3105, 3105, 3106, 3106, 3106, - 3107, 3108, 3108, 3109, 3109, 3110, 3110, 3111, 3112, 3113, - 3114, 3115, 3116, 3118, 3127, 3137, 3144, 3151, 3160, 3167, - 3174, 3181, 3188, 3197, 3206, 3213, 3220, 3230, 3240, 3250, - 3260, 3270, 3280, 3285, 3286, 3287, 3289, 3295, 3300, 3301, - 3302, 3304, 3310, 3320, 3327, 3336, 3344, 3349, 3350, 3352, - 3352, 3352, 3353, 3353, 3354, 3355, 3356, 3357, 3358, 3360, - 3370, 3379, 3386, 3395, 3402, 3411, 3419, 3432, 3440, 3453, - 3458, 3459, 3460, 3460, 3461, 3461, 3461, 3462, 3464, 3476, - 3488, 3500, 3515, 3528, 3541, 3552, 3557, 3558, 3559, 3559, - 3561, 3576 + 0, 194, 194, 194, 195, 195, 196, 196, 197, 197, + 197, 198, 198, 199, 199, 200, 200, 201, 203, 209, + 214, 215, 216, 216, 216, 217, 217, 218, 218, 218, + 219, 219, 220, 220, 220, 221, 221, 222, 222, 222, + 223, 223, 223, 224, 224, 225, 225, 226, 226, 227, + 227, 228, 228, 229, 229, 230, 230, 231, 231, 232, + 232, 232, 233, 233, 234, 234, 234, 235, 235, 235, + 236, 236, 237, 237, 238, 238, 239, 239, 240, 240, + 240, 241, 241, 242, 242, 243, 243, 243, 244, 244, + 245, 245, 246, 246, 247, 247, 247, 248, 248, 249, + 249, 250, 250, 251, 251, 252, 252, 253, 253, 254, + 254, 255, 255, 256, 256, 256, 257, 257, 257, 258, + 258, 258, 259, 259, 259, 259, 260, 261, 261, 261, + 262, 262, 262, 263, 263, 264, 264, 265, 265, 265, + 266, 266, 266, 267, 267, 268, 268, 268, 269, 269, + 270, 270, 270, 271, 271, 272, 272, 273, 273, 274, + 275, 275, 276, 276, 277, 277, 278, 278, 279, 279, + 280, 280, 281, 281, 282, 282, 283, 283, 284, 284, + 285, 285, 285, 286, 286, 287, 287, 288, 288, 289, + 290, 290, 291, 291, 292, 293, 293, 294, 294, 295, + 295, 296, 296, 297, 297, 297, 298, 298, 298, 299, + 299, 300, 301, 301, 302, 302, 303, 303, 304, 304, + 305, 305, 305, 306, 306, 306, 307, 307, 307, 308, + 308, 309, 309, 310, 310, 311, 311, 312, 312, 313, + 313, 314, 314, 317, 330, 331, 332, 332, 332, 332, + 332, 333, 333, 333, 335, 348, 349, 350, 350, 350, + 350, 351, 351, 351, 353, 368, 369, 370, 370, 370, + 370, 371, 371, 371, 373, 393, 394, 395, 395, 395, + 395, 396, 396, 396, 397, 397, 397, 400, 419, 436, + 444, 454, 461, 471, 489, 490, 491, 491, 491, 491, + 491, 492, 492, 492, 493, 493, 493, 493, 495, 504, + 513, 524, 533, 542, 551, 562, 571, 583, 597, 612, + 623, 640, 657, 674, 691, 706, 721, 734, 749, 758, + 767, 776, 785, 794, 803, 812, 821, 830, 839, 848, + 857, 866, 875, 888, 899, 910, 921, 930, 943, 952, + 961, 970, 977, 984, 993, 1000, 1009, 1017, 1024, 1031, + 1039, 1048, 1056, 1072, 1080, 1088, 1096, 1104, 1112, 1121, + 1130, 1144, 1153, 1162, 1171, 1180, 1189, 1198, 1205, 1212, + 1238, 1246, 1253, 1260, 1267, 1274, 1282, 1290, 1298, 1305, + 1316, 1327, 1334, 1343, 1352, 1361, 1370, 1377, 1384, 1391, + 1407, 1415, 1423, 1433, 1443, 1453, 1467, 1475, 1488, 1499, + 1507, 1520, 1529, 1538, 1547, 1556, 1566, 1576, 1584, 1597, + 1606, 1614, 1623, 1631, 1644, 1653, 1663, 1670, 1680, 1690, + 1700, 1710, 1720, 1730, 1740, 1750, 1757, 1764, 1771, 1780, + 1789, 1798, 1807, 1814, 1824, 1844, 1851, 1869, 1882, 1895, + 1908, 1917, 1926, 1935, 1944, 1954, 1964, 1975, 1984, 1993, + 2002, 2011, 2020, 2029, 2038, 2051, 2064, 2073, 2080, 2089, + 2098, 2107, 2116, 2125, 2133, 2146, 2154, 2199, 2206, 2221, + 2231, 2241, 2248, 2255, 2262, 2271, 2279, 2293, 2314, 2335, + 2347, 2359, 2371, 2380, 2401, 2410, 2419, 2427, 2435, 2448, + 2461, 2476, 2491, 2500, 2509, 2519, 2529, 2538, 2544, 2553, + 2562, 2572, 2582, 2592, 2601, 2611, 2620, 2633, 2646, 2658, + 2672, 2684, 2698, 2707, 2719, 2729, 2736, 2743, 2752, 2761, + 2771, 2781, 2791, 2801, 2808, 2815, 2824, 2833, 2843, 2853, + 2863, 2870, 2877, 2884, 2892, 2902, 2912, 2922, 2932, 2942, + 2952, 2998, 3008, 3016, 3024, 3039, 3048, 3053, 3054, 3055, + 3055, 3055, 3056, 3056, 3056, 3057, 3057, 3059, 3069, 3078, + 3085, 3092, 3099, 3106, 3113, 3120, 3125, 3126, 3127, 3127, + 3127, 3128, 3128, 3128, 3129, 3130, 3130, 3131, 3131, 3132, + 3132, 3133, 3134, 3135, 3136, 3137, 3138, 3140, 3149, 3159, + 3166, 3173, 3182, 3189, 3196, 3203, 3210, 3219, 3228, 3235, + 3242, 3252, 3262, 3272, 3282, 3292, 3302, 3307, 3308, 3309, + 3311, 3317, 3322, 3323, 3324, 3326, 3332, 3342, 3349, 3358, + 3366, 3371, 3372, 3374, 3374, 3374, 3375, 3375, 3376, 3377, + 3378, 3379, 3380, 3382, 3392, 3401, 3408, 3417, 3424, 3433, + 3441, 3454, 3462, 3475, 3480, 3481, 3482, 3482, 3483, 3483, + 3483, 3484, 3486, 3498, 3510, 3522, 3537, 3550, 3563, 3574, + 3579, 3580, 3581, 3581, 3583, 3598 }; #endif @@ -2037,7 +1366,8 @@ static const char *const yytname[] = "VAR_RATELIMIT", "VAR_RATELIMIT_SLABS", "VAR_RATELIMIT_SIZE", "VAR_OUTBOUND_MSG_RETRY", "VAR_RATELIMIT_FOR_DOMAIN", "VAR_RATELIMIT_BELOW_DOMAIN", "VAR_IP_RATELIMIT_FACTOR", - "VAR_RATELIMIT_FACTOR", "VAR_SEND_CLIENT_SUBNET", + "VAR_RATELIMIT_FACTOR", "VAR_IP_RATELIMIT_BACKOFF", + "VAR_RATELIMIT_BACKOFF", "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", @@ -2176,8 +1506,9 @@ static const char *const yytname[] = "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_outbound_msg_retry", "server_low_rtt", - "server_fast_server_num", "server_fast_server_permil", + "server_ratelimit_factor", "server_ip_ratelimit_backoff", + "server_ratelimit_backoff", "server_outbound_msg_retry", + "server_low_rtt", "server_fast_server_num", "server_fast_server_permil", "server_qname_minimisation", "server_qname_minimisation_strict", "server_pad_responses", "server_pad_responses_block_size", "server_pad_queries", "server_pad_queries_block_size", @@ -2269,11 +1600,11 @@ static const yytype_int16 yytoknum[] = 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, - 575, 576 + 575, 576, 577, 578 }; #endif -#define YYPACT_NINF (-308) +#define YYPACT_NINF (-310) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) @@ -2287,11 +1618,11 @@ static const yytype_int16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - -308, 0, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, 301, -39, -32, -43, -30, -44, -42, -97, - -110, -307, -227, -231, -301, 4, 6, 7, 8, 9, + -310, 0, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, 303, -39, -32, -43, -30, -44, -42, -97, + -110, -309, -229, -233, -303, 4, 6, 7, 8, 9, 10, 23, 24, 25, 26, 27, 37, 38, 39, 40, 41, 43, 44, 53, 54, 56, 57, 58, 59, 60, 81, 82, 83, 84, 85, 87, 88, 89, 90, 91, @@ -2302,91 +1633,92 @@ static const yytype_int16 yypact[] = 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 178, 179, 180, 181, 182, + 172, 173, 174, 175, 176, 177, 178, 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, 219, 220, 221, 222, 223, - 224, 225, 230, 231, 232, 233, 234, 235, 237, 246, - 247, 248, 249, 252, 253, 259, 261, 262, 263, 264, - 265, 266, 268, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 294, 295, 296, 298, 299, 300, - 302, 336, 337, 338, 339, 343, 344, 345, 387, 388, - 389, 390, 391, 392, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, 393, 394, 395, 401, 405, 406, - 433, 434, -308, -308, -308, -308, -308, -308, -308, -308, - -308, 435, 437, 438, 446, 459, 460, 461, -308, -308, - -308, -308, -308, -308, -308, -308, 462, 463, 464, 465, - 466, 467, 468, -308, -308, -308, -308, -308, -308, -308, - -308, 469, 470, 471, 472, 473, 474, 475, 476, 477, - 478, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, 519, 521, 540, 541, 542, 543, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, 544, 545, 546, 547, 548, 549, 550, 561, -308, - -308, -308, -308, -308, -308, -308, -308, -308, 562, 563, - 564, 565, 566, 567, 569, 570, 571, 572, 573, 574, - 575, 578, 581, 584, 585, 594, 595, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, 596, -308, -308, - 598, -308, -308, 599, 600, 601, 602, 603, 604, 605, - 610, 611, 612, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, 613, 614, 615, 616, 617, 618, - -308, -308, -308, -308, -308, -308, -308, 619, 620, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, 621, 622, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, 623, 624, 625, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, 626, 627, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, 628, 629, 630, - 631, 632, 633, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, 634, -308, -308, - -308, -308, -308, -308, -308, -308, -308, 635, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, 636, -308, -308, - 637, 638, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, 639, 640, 641, -308, -308, - -308, -308, -308, -308, -308, -308, -308 + 213, 214, 215, 216, 217, 218, 219, 221, 222, 223, + 224, 225, 226, 227, 232, 233, 234, 235, 236, 237, + 239, 248, 249, 250, 251, 254, 255, 261, 263, 264, + 265, 266, 267, 268, 270, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 296, 297, 298, 300, + 301, 302, 304, 338, 339, 340, 341, 345, 346, 347, + 389, 390, 391, 392, 393, 394, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, 395, 396, + 397, 403, 407, 408, 435, 436, -310, -310, -310, -310, + -310, -310, -310, -310, -310, 437, 439, 440, 448, 461, + 462, 463, -310, -310, -310, -310, -310, -310, -310, -310, + 464, 465, 466, 467, 468, 469, 470, -310, -310, -310, + -310, -310, -310, -310, -310, 471, 472, 473, 474, 475, + 476, 477, 478, 479, 480, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, 523, 525, 544, 545, + 546, 547, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, 548, 549, 550, 551, 552, + 553, 554, 565, -310, -310, -310, -310, -310, -310, -310, + -310, -310, 566, 567, 568, 569, 570, 571, 573, 574, + 575, 576, 577, 578, 579, 582, 585, 588, 589, 598, + 599, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, 600, -310, -310, 602, -310, -310, 603, 604, 605, + 606, 607, 608, 609, 614, 615, 616, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, 617, 618, + 619, 620, 621, 622, -310, -310, -310, -310, -310, -310, + -310, 623, 624, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, 625, 626, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, 627, 628, 629, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + 630, 631, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, 632, 633, 634, 635, 636, 637, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, 638, -310, -310, -310, -310, -310, -310, + -310, -310, -310, 639, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, 640, -310, -310, 641, 642, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, 643, 644, 645, -310, -310, -310, -310, -310, -310, + -310, -310, -310 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -2394,10 +1726,10 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_int16 yydefact[] = { - 2, 0, 1, 18, 19, 241, 252, 552, 612, 571, - 262, 626, 649, 272, 665, 291, 617, 3, 17, 21, - 243, 254, 264, 274, 293, 554, 573, 614, 619, 628, - 651, 667, 4, 5, 6, 10, 14, 15, 8, 9, + 2, 0, 1, 18, 19, 243, 254, 556, 616, 575, + 264, 630, 653, 274, 669, 293, 621, 3, 17, 21, + 245, 256, 266, 276, 295, 558, 577, 618, 623, 632, + 655, 671, 4, 5, 6, 10, 14, 15, 8, 9, 7, 16, 11, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2420,160 +1752,161 @@ static const yytype_int16 yydefact[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 20, 22, 23, 88, 91, 100, - 204, 205, 24, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 37, 79, 25, 92, 93, 48, 72, - 87, 26, 27, 30, 31, 28, 29, 32, 33, 34, - 238, 239, 240, 35, 36, 124, 216, 125, 127, 128, - 129, 218, 223, 219, 230, 231, 232, 233, 130, 131, - 132, 133, 134, 135, 136, 200, 89, 78, 104, 122, - 123, 228, 225, 126, 38, 39, 40, 41, 42, 80, - 94, 95, 111, 66, 76, 67, 208, 209, 105, 58, - 59, 207, 62, 60, 61, 63, 236, 115, 119, 140, - 150, 178, 153, 229, 116, 73, 43, 44, 45, 102, - 141, 142, 143, 144, 46, 47, 49, 50, 52, 53, - 51, 148, 154, 54, 55, 56, 64, 83, 120, 97, - 149, 90, 174, 98, 99, 117, 118, 226, 103, 57, - 81, 84, 65, 68, 106, 107, 108, 82, 175, 109, - 69, 70, 71, 217, 121, 192, 193, 194, 195, 196, - 197, 198, 206, 110, 77, 237, 112, 113, 114, 176, - 74, 75, 96, 85, 86, 101, 137, 138, 227, 139, - 145, 146, 147, 179, 180, 182, 184, 185, 183, 186, - 201, 151, 152, 157, 158, 155, 156, 159, 160, 162, - 161, 163, 220, 222, 221, 177, 187, 188, 189, 190, - 191, 210, 212, 211, 213, 214, 215, 234, 235, 181, - 199, 202, 203, 224, 0, 0, 0, 0, 0, 0, - 0, 0, 242, 244, 245, 246, 248, 249, 250, 251, - 247, 0, 0, 0, 0, 0, 0, 0, 253, 255, - 256, 257, 258, 259, 260, 261, 0, 0, 0, 0, - 0, 0, 0, 263, 265, 266, 269, 270, 267, 271, - 268, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 273, 275, 276, 277, 278, 282, 283, 284, 279, - 280, 281, 0, 0, 0, 0, 0, 0, 296, 300, - 301, 302, 303, 304, 292, 294, 295, 297, 298, 299, - 305, 0, 0, 0, 0, 0, 0, 0, 0, 553, - 555, 557, 556, 562, 558, 559, 560, 561, 0, 0, + 0, 0, 0, 0, 0, 0, 20, 22, 23, 88, + 91, 100, 206, 207, 24, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 37, 79, 25, 92, 93, + 48, 72, 87, 26, 27, 30, 31, 28, 29, 32, + 33, 34, 240, 241, 242, 35, 36, 124, 218, 125, + 127, 128, 129, 220, 225, 221, 232, 233, 234, 235, + 130, 131, 132, 133, 134, 135, 136, 202, 89, 78, + 104, 122, 123, 230, 227, 126, 38, 39, 40, 41, + 42, 80, 94, 95, 111, 66, 76, 67, 210, 211, + 105, 58, 59, 209, 62, 60, 61, 63, 238, 115, + 119, 140, 150, 180, 153, 231, 116, 73, 43, 44, + 45, 102, 141, 142, 143, 144, 46, 47, 49, 50, + 52, 53, 51, 148, 154, 54, 55, 56, 64, 83, + 120, 97, 149, 90, 176, 98, 99, 117, 118, 228, + 103, 57, 81, 84, 65, 68, 106, 107, 108, 82, + 177, 109, 69, 70, 71, 219, 121, 194, 195, 196, + 197, 198, 199, 200, 208, 110, 77, 239, 112, 113, + 114, 178, 74, 75, 96, 85, 86, 101, 137, 138, + 229, 139, 145, 146, 147, 181, 182, 184, 186, 187, + 185, 188, 203, 151, 152, 157, 158, 155, 156, 159, + 160, 162, 161, 164, 163, 165, 222, 224, 223, 179, + 189, 190, 191, 192, 193, 212, 214, 213, 215, 216, + 217, 236, 237, 183, 201, 204, 205, 226, 0, 0, + 0, 0, 0, 0, 0, 0, 244, 246, 247, 248, + 250, 251, 252, 253, 249, 0, 0, 0, 0, 0, + 0, 0, 255, 257, 258, 259, 260, 261, 262, 263, + 0, 0, 0, 0, 0, 0, 0, 265, 267, 268, + 271, 272, 269, 273, 270, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 275, 277, 278, 279, 280, + 284, 285, 286, 281, 282, 283, 0, 0, 0, 0, + 0, 0, 298, 302, 303, 304, 305, 306, 294, 296, + 297, 299, 300, 301, 307, 0, 0, 0, 0, 0, + 0, 0, 0, 557, 559, 561, 560, 566, 562, 563, + 564, 565, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 572, 574, 576, - 575, 577, 578, 579, 580, 581, 582, 583, 584, 585, - 586, 587, 588, 589, 590, 591, 592, 0, 613, 615, - 0, 618, 620, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 627, 629, 630, 631, 633, 634, 632, - 635, 636, 637, 638, 0, 0, 0, 0, 0, 0, - 650, 652, 653, 654, 655, 656, 657, 0, 0, 666, - 668, 669, 307, 306, 313, 326, 324, 336, 332, 333, - 337, 334, 335, 338, 339, 340, 344, 345, 375, 376, - 377, 378, 379, 407, 408, 409, 415, 416, 329, 417, - 418, 421, 419, 420, 424, 425, 426, 440, 390, 391, - 394, 395, 427, 443, 384, 386, 444, 451, 452, 453, - 330, 406, 471, 472, 385, 465, 368, 325, 380, 441, - 448, 428, 0, 0, 475, 331, 308, 367, 432, 309, - 327, 328, 381, 382, 473, 430, 434, 435, 342, 341, - 310, 476, 410, 439, 369, 389, 445, 446, 447, 450, - 464, 383, 469, 467, 468, 398, 405, 436, 437, 399, - 400, 429, 455, 370, 371, 374, 346, 348, 343, 349, - 350, 351, 352, 359, 360, 361, 362, 363, 364, 365, - 477, 478, 480, 411, 412, 413, 414, 422, 423, 481, - 482, 483, 0, 0, 0, 431, 401, 403, 622, 492, - 496, 494, 493, 497, 495, 502, 0, 0, 500, 501, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 433, 449, 470, 506, 507, 402, 484, 0, 0, 0, - 0, 0, 0, 456, 457, 458, 459, 460, 461, 462, - 463, 623, 392, 393, 396, 387, 454, 366, 311, 312, - 388, 508, 509, 510, 511, 512, 514, 513, 515, 516, - 517, 347, 354, 503, 505, 504, 353, 0, 373, 438, - 479, 372, 404, 355, 356, 358, 357, 0, 519, 397, - 466, 520, 521, 522, 527, 525, 526, 523, 524, 528, - 529, 530, 531, 533, 534, 532, 545, 0, 549, 550, - 0, 0, 551, 535, 543, 536, 537, 538, 542, 544, - 539, 540, 541, 285, 286, 287, 288, 289, 290, 563, - 565, 564, 567, 568, 569, 570, 566, 593, 595, 596, - 597, 598, 599, 600, 601, 602, 603, 594, 604, 605, - 606, 607, 608, 609, 610, 611, 616, 621, 639, 640, - 641, 644, 642, 643, 645, 646, 647, 648, 658, 659, - 660, 661, 662, 663, 670, 671, 442, 474, 491, 624, - 625, 498, 499, 485, 486, 0, 0, 0, 490, 664, - 518, 546, 547, 548, 489, 487, 488 + 0, 576, 578, 580, 579, 581, 582, 583, 584, 585, + 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, + 596, 0, 617, 619, 0, 622, 624, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 631, 633, 634, + 635, 637, 638, 636, 639, 640, 641, 642, 0, 0, + 0, 0, 0, 0, 654, 656, 657, 658, 659, 660, + 661, 0, 0, 670, 672, 673, 309, 308, 315, 328, + 326, 338, 334, 335, 339, 336, 337, 340, 341, 342, + 346, 347, 377, 378, 379, 380, 381, 409, 410, 411, + 417, 418, 331, 419, 420, 423, 421, 422, 426, 427, + 428, 442, 392, 393, 396, 397, 429, 445, 386, 388, + 446, 453, 454, 455, 332, 408, 473, 474, 387, 467, + 370, 327, 382, 443, 450, 430, 0, 0, 477, 333, + 310, 369, 434, 311, 329, 330, 383, 384, 475, 432, + 436, 437, 344, 343, 312, 478, 412, 441, 371, 391, + 447, 448, 449, 452, 466, 385, 471, 469, 470, 400, + 407, 438, 439, 401, 402, 431, 457, 372, 373, 376, + 348, 350, 345, 351, 352, 353, 354, 361, 362, 363, + 364, 365, 366, 367, 479, 480, 482, 413, 414, 415, + 416, 424, 425, 483, 484, 485, 0, 0, 0, 433, + 403, 405, 626, 494, 498, 496, 495, 499, 497, 506, + 0, 0, 502, 503, 504, 505, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 435, 451, 472, 510, + 511, 404, 486, 0, 0, 0, 0, 0, 0, 458, + 459, 460, 461, 462, 463, 464, 465, 627, 394, 395, + 398, 389, 456, 368, 313, 314, 390, 512, 513, 514, + 515, 516, 518, 517, 519, 520, 521, 349, 356, 507, + 509, 508, 355, 0, 375, 440, 481, 374, 406, 357, + 358, 360, 359, 0, 523, 399, 468, 524, 525, 526, + 531, 529, 530, 527, 528, 532, 533, 534, 535, 537, + 538, 536, 549, 0, 553, 554, 0, 0, 555, 539, + 547, 540, 541, 542, 546, 548, 543, 544, 545, 287, + 288, 289, 290, 291, 292, 567, 569, 568, 571, 572, + 573, 574, 570, 597, 599, 600, 601, 602, 603, 604, + 605, 606, 607, 598, 608, 609, 610, 611, 612, 613, + 614, 615, 620, 625, 643, 644, 645, 648, 646, 647, + 649, 650, 651, 652, 662, 663, 664, 665, 666, 667, + 674, 675, 444, 476, 493, 628, 629, 500, 501, 487, + 488, 0, 0, 0, 492, 668, 522, 550, 551, 552, + 491, 489, 490 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -27, 642, 643, - 644, 645, -308, -308, 646, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308, -308, -308, -308, - -308, -308, -308, -308, -308, -308, -308 + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -27, + 646, 647, 648, 649, -310, -310, 650, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 17, 18, 19, 32, 264, 20, 33, 492, - 21, 34, 508, 22, 35, 523, 23, 36, 541, 558, - 559, 560, 561, 562, 563, 24, 37, 564, 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, 493, 494, 495, 496, 497, 498, 499, 500, - 509, 510, 511, 512, 513, 514, 515, 542, 543, 544, - 545, 546, 547, 548, 549, 550, 551, 524, 525, 526, - 527, 528, 529, 530, 25, 38, 579, 580, 581, 582, - 583, 584, 585, 586, 587, 26, 39, 607, 608, 609, - 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, - 620, 621, 622, 623, 624, 625, 626, 27, 40, 628, - 629, 28, 41, 631, 632, 479, 480, 481, 482, 29, - 42, 643, 644, 645, 646, 647, 648, 649, 650, 651, - 652, 653, 30, 43, 660, 661, 662, 663, 664, 665, - 666, 483, 31, 44, 669, 670, 671 + 0, 1, 17, 18, 19, 32, 266, 20, 33, 496, + 21, 34, 512, 22, 35, 527, 23, 36, 545, 562, + 563, 564, 565, 566, 567, 24, 37, 568, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, + 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, + 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, + 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, + 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, + 479, 480, 481, 482, 497, 498, 499, 500, 501, 502, + 503, 504, 513, 514, 515, 516, 517, 518, 519, 546, + 547, 548, 549, 550, 551, 552, 553, 554, 555, 528, + 529, 530, 531, 532, 533, 534, 25, 38, 583, 584, + 585, 586, 587, 588, 589, 590, 591, 26, 39, 611, + 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, + 622, 623, 624, 625, 626, 627, 628, 629, 630, 27, + 40, 632, 633, 28, 41, 635, 636, 483, 484, 485, + 486, 29, 42, 647, 648, 649, 650, 651, 652, 653, + 654, 655, 656, 657, 30, 43, 664, 665, 666, 667, + 668, 669, 670, 487, 31, 44, 673, 674, 675 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -2581,84 +1914,84 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 2, 531, 516, 667, 668, 627, 484, 630, 485, 486, - 565, 3, 4, 501, 672, 531, 673, 674, 675, 676, - 677, 502, 503, 633, 634, 635, 636, 637, 638, 639, - 640, 641, 642, 678, 679, 680, 681, 682, 517, 518, - 654, 655, 656, 657, 658, 659, 5, 683, 684, 685, - 686, 687, 6, 688, 689, 571, 572, 573, 574, 575, - 576, 577, 578, 690, 691, 519, 692, 693, 694, 695, - 696, 487, 588, 589, 590, 591, 592, 593, 594, 595, - 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, - 606, 697, 698, 699, 700, 701, 7, 702, 703, 704, - 705, 706, 707, 708, 488, 709, 710, 489, 711, 712, - 504, 713, 505, 714, 8, 506, 490, 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, 520, 521, 744, 745, - 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, - 756, 757, 758, 759, 760, 761, 762, 763, 9, 764, - 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, - 775, 776, 777, 778, 779, 780, 781, 522, 782, 783, - 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, 812, 813, - 814, 815, 816, 817, 818, 819, 820, 821, 10, 822, - 823, 824, 825, 826, 827, 828, 533, 534, 535, 536, - 829, 830, 831, 832, 833, 834, 538, 835, 532, 11, - 533, 534, 535, 536, 537, 491, 836, 837, 838, 839, - 538, 507, 840, 841, 552, 553, 554, 555, 556, 842, - 12, 843, 844, 845, 846, 847, 848, 557, 849, 13, - 850, 851, 852, 853, 854, 855, 856, 857, 858, 539, - 540, 859, 860, 861, 862, 863, 864, 865, 866, 867, - 868, 869, 870, 14, 871, 872, 873, 15, 874, 875, - 876, 0, 877, 16, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 878, 879, 880, 881, - 77, 78, 79, 882, 883, 884, 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, 885, 886, 887, - 888, 889, 890, 891, 892, 893, 121, 122, 123, 124, - 125, 894, 126, 127, 128, 895, 896, 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, 897, 898, 899, 155, 900, 901, 156, - 157, 158, 159, 160, 161, 162, 902, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 903, - 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, - 914, 915, 916, 917, 918, 919, 920, 921, 922, 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, 923, - 215, 924, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, - 935, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 936, 937, 938, 939, 940, 941, 942, 244, 943, - 944, 945, 946, 947, 948, 949, 245, 246, 950, 247, - 248, 951, 249, 250, 952, 953, 251, 252, 253, 254, - 255, 256, 257, 258, 954, 955, 956, 259, 957, 958, - 959, 960, 961, 962, 963, 964, 260, 261, 262, 263, - 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, - 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, - 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, - 995, 996, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 535, 520, 671, 672, 631, 488, 634, 489, 490, + 569, 3, 4, 505, 676, 535, 677, 678, 679, 680, + 681, 506, 507, 637, 638, 639, 640, 641, 642, 643, + 644, 645, 646, 682, 683, 684, 685, 686, 521, 522, + 658, 659, 660, 661, 662, 663, 5, 687, 688, 689, + 690, 691, 6, 692, 693, 575, 576, 577, 578, 579, + 580, 581, 582, 694, 695, 523, 696, 697, 698, 699, + 700, 491, 592, 593, 594, 595, 596, 597, 598, 599, + 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, + 610, 701, 702, 703, 704, 705, 7, 706, 707, 708, + 709, 710, 711, 712, 492, 713, 714, 493, 715, 716, + 508, 717, 509, 718, 8, 510, 494, 719, 720, 721, + 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, + 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, + 742, 743, 744, 745, 746, 747, 524, 525, 748, 749, + 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, + 760, 761, 762, 763, 764, 765, 766, 767, 9, 768, + 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, + 779, 780, 781, 782, 783, 784, 785, 786, 787, 526, + 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, + 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, + 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, + 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, + 10, 828, 829, 830, 831, 832, 833, 834, 537, 538, + 539, 540, 835, 836, 837, 838, 839, 840, 542, 841, + 536, 11, 537, 538, 539, 540, 541, 495, 842, 843, + 844, 845, 542, 511, 846, 847, 556, 557, 558, 559, + 560, 848, 12, 849, 850, 851, 852, 853, 854, 561, + 855, 13, 856, 857, 858, 859, 860, 861, 862, 863, + 864, 543, 544, 865, 866, 867, 868, 869, 870, 871, + 872, 873, 874, 875, 876, 14, 877, 878, 879, 15, + 880, 881, 882, 0, 883, 16, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 884, 885, + 886, 887, 77, 78, 79, 888, 889, 890, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 891, + 892, 893, 894, 895, 896, 897, 898, 899, 121, 122, + 123, 124, 125, 900, 126, 127, 128, 901, 902, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 903, 904, 905, 155, 906, + 907, 156, 157, 158, 159, 160, 161, 162, 908, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 909, 910, 911, 912, 913, 914, 915, 916, 917, + 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, + 928, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 929, 217, 930, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 931, 932, 933, 934, 935, 936, + 937, 938, 939, 940, 941, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 942, 943, 944, 945, 946, + 947, 948, 246, 949, 950, 951, 952, 953, 954, 955, + 247, 248, 956, 249, 250, 957, 251, 252, 958, 959, + 253, 254, 255, 256, 257, 258, 259, 260, 960, 961, + 962, 261, 963, 964, 965, 966, 967, 968, 969, 970, + 262, 263, 264, 265, 971, 972, 973, 974, 975, 976, + 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, + 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, + 997, 998, 999, 1000, 1001, 1002, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 566, - 567, 568, 569, 570 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 570, 571, 572, 573, 574 }; static const yytype_int16 yycheck[] = { - 0, 45, 45, 304, 305, 115, 45, 314, 47, 48, + 0, 45, 45, 306, 307, 115, 45, 316, 47, 48, 37, 11, 12, 45, 10, 45, 10, 10, 10, 10, - 10, 53, 54, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 10, 10, 10, 10, 10, 81, 82, - 271, 272, 273, 274, 275, 276, 46, 10, 10, 10, + 10, 53, 54, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 10, 10, 10, 10, 10, 81, 82, + 273, 274, 275, 276, 277, 278, 46, 10, 10, 10, 10, 10, 52, 10, 10, 97, 98, 99, 100, 101, 102, 103, 104, 10, 10, 108, 10, 10, 10, 10, 10, 110, 169, 170, 171, 172, 173, 174, 175, 176, @@ -2672,68 +2005,68 @@ static const yytype_int16 yycheck[] = 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 168, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 230, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 232, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 228, 10, - 10, 10, 10, 10, 10, 10, 280, 281, 282, 283, - 10, 10, 10, 10, 10, 10, 290, 10, 278, 249, - 280, 281, 282, 283, 284, 294, 10, 10, 10, 10, - 290, 293, 10, 10, 308, 309, 310, 311, 312, 10, - 270, 10, 10, 10, 10, 10, 10, 321, 10, 279, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 319, - 320, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 303, 10, 10, 10, 307, 10, 10, - 10, -1, 10, 313, 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, 10, 10, 10, 10, - 49, 50, 51, 10, 10, 10, 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, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 105, 106, 107, 108, - 109, 10, 111, 112, 113, 10, 10, 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, 10, 10, 10, 145, 10, 10, 148, - 149, 150, 151, 152, 153, 154, 10, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 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, 10, - 229, 10, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 230, 10, 10, 10, 10, 10, 10, 10, 282, 283, + 284, 285, 10, 10, 10, 10, 10, 10, 292, 10, + 280, 251, 282, 283, 284, 285, 286, 296, 10, 10, + 10, 10, 292, 295, 10, 10, 310, 311, 312, 313, + 314, 10, 272, 10, 10, 10, 10, 10, 10, 323, + 10, 281, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 321, 322, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 305, 10, 10, 10, 309, + 10, 10, 10, -1, 10, 315, 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, 10, 10, + 10, 10, 49, 50, 51, 10, 10, 10, 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, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 105, 106, + 107, 108, 109, 10, 111, 112, 113, 10, 10, 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, 10, 10, 10, 145, 10, + 10, 148, 149, 150, 151, 152, 153, 154, 10, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 10, 10, 10, 10, 10, 10, 10, 277, 10, - 10, 10, 10, 10, 10, 10, 285, 286, 10, 288, - 289, 10, 291, 292, 10, 10, 295, 296, 297, 298, - 299, 300, 301, 302, 10, 10, 10, 306, 10, 10, - 10, 10, 10, 10, 10, 10, 315, 316, 317, 318, + 10, 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, 10, 231, 10, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 10, 10, 10, 10, 10, + 10, 10, 279, 10, 10, 10, 10, 10, 10, 10, + 287, 288, 10, 290, 291, 10, 293, 294, 10, 10, + 297, 298, 299, 300, 301, 302, 303, 304, 10, 10, + 10, 308, 10, 10, 10, 10, 10, 10, 10, 10, + 317, 318, 319, 320, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 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, + 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, 37, - 37, 37, 37, 37 + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 37, 37, 37, 37, 37 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_int16 yystos[] = { - 0, 323, 0, 11, 12, 46, 52, 96, 114, 168, - 228, 249, 270, 279, 303, 307, 313, 324, 325, 326, - 329, 332, 335, 338, 347, 596, 607, 629, 633, 641, - 654, 664, 327, 330, 333, 336, 339, 348, 597, 608, - 630, 634, 642, 655, 665, 13, 14, 15, 16, 17, + 0, 325, 0, 11, 12, 46, 52, 96, 114, 168, + 230, 251, 272, 281, 305, 309, 315, 326, 327, 328, + 331, 334, 337, 340, 349, 600, 611, 633, 637, 645, + 658, 668, 329, 332, 335, 338, 341, 350, 601, 612, + 634, 638, 646, 659, 669, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 49, 50, 51, @@ -2750,12 +2083,12 @@ static const yytype_int16 yystos[] = 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, 229, 231, 232, 233, 234, + 223, 224, 225, 226, 227, 228, 229, 231, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 277, 285, 286, 288, 289, 291, - 292, 295, 296, 297, 298, 299, 300, 301, 302, 306, - 315, 316, 317, 318, 328, 350, 351, 352, 353, 354, + 245, 246, 247, 248, 249, 250, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 279, 287, 288, 290, + 291, 293, 294, 297, 298, 299, 300, 301, 302, 303, + 304, 308, 317, 318, 319, 320, 330, 352, 353, 354, 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, @@ -2776,27 +2109,27 @@ static const yytype_int16 yystos[] = 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, - 555, 556, 557, 558, 559, 560, 561, 562, 563, 637, - 638, 639, 640, 663, 45, 47, 48, 110, 143, 146, - 155, 294, 331, 564, 565, 566, 567, 568, 569, 570, - 571, 45, 53, 54, 142, 144, 147, 293, 334, 572, - 573, 574, 575, 576, 577, 578, 45, 81, 82, 108, - 189, 190, 230, 337, 589, 590, 591, 592, 593, 594, - 595, 45, 278, 280, 281, 282, 283, 284, 290, 319, - 320, 340, 579, 580, 581, 582, 583, 584, 585, 586, - 587, 588, 308, 309, 310, 311, 312, 321, 341, 342, - 343, 344, 345, 346, 349, 579, 580, 581, 582, 583, - 586, 97, 98, 99, 100, 101, 102, 103, 104, 598, - 599, 600, 601, 602, 603, 604, 605, 606, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 609, 610, 611, - 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, - 622, 623, 624, 625, 626, 627, 628, 115, 631, 632, - 314, 635, 636, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 643, 644, 645, 646, 647, 648, 649, - 650, 651, 652, 653, 271, 272, 273, 274, 275, 276, - 656, 657, 658, 659, 660, 661, 662, 304, 305, 666, - 667, 668, 10, 10, 10, 10, 10, 10, 10, 10, + 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, + 565, 566, 567, 641, 642, 643, 644, 667, 45, 47, + 48, 110, 143, 146, 155, 296, 333, 568, 569, 570, + 571, 572, 573, 574, 575, 45, 53, 54, 142, 144, + 147, 295, 336, 576, 577, 578, 579, 580, 581, 582, + 45, 81, 82, 108, 189, 190, 232, 339, 593, 594, + 595, 596, 597, 598, 599, 45, 280, 282, 283, 284, + 285, 286, 292, 321, 322, 342, 583, 584, 585, 586, + 587, 588, 589, 590, 591, 592, 310, 311, 312, 313, + 314, 323, 343, 344, 345, 346, 347, 348, 351, 583, + 584, 585, 586, 587, 590, 97, 98, 99, 100, 101, + 102, 103, 104, 602, 603, 604, 605, 606, 607, 608, + 609, 610, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 613, 614, 615, 616, 617, 618, 619, 620, 621, + 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, + 632, 115, 635, 636, 316, 639, 640, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 647, 648, 649, + 650, 651, 652, 653, 654, 655, 656, 657, 273, 274, + 275, 276, 277, 278, 660, 661, 662, 663, 664, 665, + 666, 306, 307, 670, 671, 672, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -2828,43 +2161,44 @@ static const yytype_int16 yystos[] = 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10 + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_int16 yyr1[] = { - 0, 322, 323, 323, 324, 324, 324, 324, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 325, 326, - 327, 327, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 329, 330, 330, 331, 331, 331, 331, 331, 331, - 331, 331, 332, 333, 333, 334, 334, 334, 334, 334, - 334, 334, 335, 336, 336, 337, 337, 337, 337, 337, - 337, 337, 338, 339, 339, 340, 340, 340, 340, 340, - 340, 340, 340, 340, 340, 341, 342, 343, 344, 345, - 346, 347, 348, 348, 349, 349, 349, 349, 349, 349, - 349, 349, 349, 349, 349, 349, 350, 351, 352, 353, + 0, 324, 325, 325, 326, 326, 326, 326, 326, 326, + 326, 326, 326, 326, 326, 326, 326, 326, 327, 328, + 329, 329, 330, 330, 330, 330, 330, 330, 330, 330, + 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, + 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, + 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, + 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, + 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, + 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, + 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, + 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, + 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, + 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, + 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, + 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, + 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, + 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, + 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, + 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, + 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, + 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, + 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, + 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, + 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, + 330, 330, 330, 331, 332, 332, 333, 333, 333, 333, + 333, 333, 333, 333, 334, 335, 335, 336, 336, 336, + 336, 336, 336, 336, 337, 338, 338, 339, 339, 339, + 339, 339, 339, 339, 340, 341, 341, 342, 342, 342, + 342, 342, 342, 342, 342, 342, 342, 343, 344, 345, + 346, 347, 348, 349, 350, 350, 351, 351, 351, 351, + 351, 351, 351, 351, 351, 351, 351, 351, 352, 353, 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, @@ -2889,19 +2223,19 @@ static const yytype_int16 yyr1[] = 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, - 594, 595, 596, 597, 597, 598, 598, 598, 598, 598, - 598, 598, 598, 599, 600, 601, 602, 603, 604, 605, - 606, 607, 608, 608, 609, 609, 609, 609, 609, 609, - 609, 609, 609, 609, 609, 609, 609, 609, 609, 609, - 609, 609, 609, 610, 611, 612, 613, 614, 615, 616, + 594, 595, 596, 597, 598, 599, 600, 601, 601, 602, + 602, 602, 602, 602, 602, 602, 602, 603, 604, 605, + 606, 607, 608, 609, 610, 611, 612, 612, 613, 613, + 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, + 613, 613, 613, 613, 613, 613, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, - 627, 628, 629, 630, 630, 631, 632, 633, 634, 634, - 635, 636, 637, 638, 639, 640, 641, 642, 642, 643, - 643, 643, 643, 643, 643, 643, 643, 643, 643, 644, - 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, - 655, 655, 656, 656, 656, 656, 656, 656, 657, 658, - 659, 660, 661, 662, 663, 664, 665, 665, 666, 666, - 667, 668 + 627, 628, 629, 630, 631, 632, 633, 634, 634, 635, + 636, 637, 638, 638, 639, 640, 641, 642, 643, 644, + 645, 646, 646, 647, 647, 647, 647, 647, 647, 647, + 647, 647, 647, 648, 649, 650, 651, 652, 653, 654, + 655, 656, 657, 658, 659, 659, 660, 660, 660, 660, + 660, 660, 661, 662, 663, 664, 665, 666, 667, 668, + 669, 669, 670, 670, 671, 672 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -2931,13 +2265,13 @@ static const yytype_int8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, - 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, - 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, - 2, 1, 2, 0, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, + 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, + 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, + 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, + 2, 2, 2, 1, 2, 0, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 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, @@ -2951,30 +2285,30 @@ static const yytype_int8 yyr2[] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 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, 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, 3, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 3, 3, 4, 4, 4, - 3, 3, 2, 2, 2, 2, 2, 2, 3, 3, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 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, + 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, 2, 2, 2, 2, 2, 2, 2, + 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 1, 2, 0, 1, 2, 1, 2, 0, - 1, 2, 2, 2, 3, 3, 1, 2, 0, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, - 2, 0, 1, 1, 1, 1, 1, 1, 2, 2, - 2, 2, 2, 2, 3, 1, 2, 0, 1, 1, - 2, 2 + 2, 2, 2, 2, 2, 2, 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 }; @@ -3053,7 +2387,7 @@ yy_symbol_value_print (FILE *yyo, yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep) { FILE *yyoutput = yyo; - YYUSE (yyoutput); + YY_USE (yyoutput); if (!yyvaluep) return; # ifdef YYPRINT @@ -3061,7 +2395,7 @@ yy_symbol_value_print (FILE *yyo, YYPRINT (yyo, yytoknum[yykind], *yyvaluep); # endif YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YYUSE (yykind); + YY_USE (yykind); YY_IGNORE_MAYBE_UNINITIALIZED_END } @@ -3175,18 +2509,18 @@ static void yydestruct (const char *yymsg, yysymbol_kind_t yykind, YYSTYPE *yyvaluep) { - YYUSE (yyvaluep); + YY_USE (yyvaluep); if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp); YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YYUSE (yykind); + YY_USE (yykind); YY_IGNORE_MAYBE_UNINITIALIZED_END } -/* The lookahead symbol. */ +/* Lookahead token kind. */ int yychar; /* The semantic value of the lookahead symbol. */ @@ -3204,34 +2538,30 @@ int yynerrs; int yyparse (void) { - yy_state_fast_t yystate; + yy_state_fast_t yystate = 0; /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; + int yyerrstatus = 0; - /* The stacks and their tools: - 'yyss': related to states. - 'yyvs': related to semantic values. - - Refer to the stacks through separate pointers, to allow yyoverflow + /* Refer to the stacks through separate pointers, to allow yyoverflow to reallocate them elsewhere. */ /* Their size. */ - YYPTRDIFF_T yystacksize; + YYPTRDIFF_T yystacksize = YYINITDEPTH; - /* The state stack. */ + /* The state stack: array, bottom, top. */ yy_state_t yyssa[YYINITDEPTH]; - yy_state_t *yyss; - yy_state_t *yyssp; + yy_state_t *yyss = yyssa; + yy_state_t *yyssp = yyss; - /* The semantic value stack. */ + /* The semantic value stack: array, bottom, top. */ YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs; - YYSTYPE *yyvsp; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp = yyvs; int yyn; /* The return value of yyparse. */ int yyresult; - /* Lookahead token as an internal (translated) token number. */ + /* Lookahead symbol kind. */ yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY; /* The variables used to return semantic value and location from the action routines. */ @@ -3245,15 +2575,6 @@ yyparse (void) Keep to zero when no symbol should be popped. */ int yylen = 0; - yynerrs = 0; - yystate = 0; - yyerrstatus = 0; - - yystacksize = YYINITDEPTH; - yyssp = yyss = yyssa; - yyvsp = yyvs = yyvsa; - - YYDPRINTF ((stderr, "Starting parse\n")); yychar = YYEMPTY; /* Cause a token to be read. */ @@ -3454,24 +2775,24 @@ yyreduce: YY_REDUCE_PRINT (yyn); switch (yyn) { - case 18: -#line 203 "./util/configparser.y" + case 18: /* force_toplevel: VAR_FORCE_TOPLEVEL */ +#line 204 "./util/configparser.y" { OUTYY(("\nP(force-toplevel)\n")); } -#line 3463 "util/configparser.c" +#line 2784 "util/configparser.c" break; - case 19: -#line 209 "./util/configparser.y" + case 19: /* serverstart: VAR_SERVER */ +#line 210 "./util/configparser.y" { OUTYY(("\nP(server:)\n")); } -#line 3471 "util/configparser.c" +#line 2792 "util/configparser.c" break; - case 241: -#line 316 "./util/configparser.y" + case 243: /* stubstart: VAR_STUB_ZONE */ +#line 318 "./util/configparser.y" { struct config_stub* s; OUTYY(("\nP(stub_zone:)\n")); @@ -3483,11 +2804,11 @@ yyreduce: yyerror("out of memory"); } } -#line 3487 "util/configparser.c" +#line 2808 "util/configparser.c" break; - case 252: -#line 334 "./util/configparser.y" + case 254: /* forwardstart: VAR_FORWARD_ZONE */ +#line 336 "./util/configparser.y" { struct config_stub* s; OUTYY(("\nP(forward_zone:)\n")); @@ -3499,11 +2820,11 @@ yyreduce: yyerror("out of memory"); } } -#line 3503 "util/configparser.c" +#line 2824 "util/configparser.c" break; - case 262: -#line 352 "./util/configparser.y" + case 264: /* viewstart: VAR_VIEW */ +#line 354 "./util/configparser.y" { struct config_view* s; OUTYY(("\nP(view:)\n")); @@ -3517,11 +2838,11 @@ yyreduce: yyerror("out of memory"); } } -#line 3521 "util/configparser.c" +#line 2842 "util/configparser.c" break; - case 272: -#line 372 "./util/configparser.y" + case 274: /* authstart: VAR_AUTH_ZONE */ +#line 374 "./util/configparser.y" { struct config_auth* s; OUTYY(("\nP(auth_zone:)\n")); @@ -3540,11 +2861,11 @@ yyreduce: yyerror("out of memory"); } } -#line 3544 "util/configparser.c" +#line 2865 "util/configparser.c" break; - case 285: -#line 399 "./util/configparser.y" + case 287: /* rpz_tag: VAR_TAGS STRING_ARG */ +#line 401 "./util/configparser.y" { uint8_t* bitlist; size_t len = 0; @@ -3561,11 +2882,11 @@ yyreduce: } } -#line 3565 "util/configparser.c" +#line 2886 "util/configparser.c" break; - case 286: -#line 418 "./util/configparser.y" + case 288: /* rpz_action_override: VAR_RPZ_ACTION_OVERRIDE STRING_ARG */ +#line 420 "./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 && @@ -3580,21 +2901,21 @@ yyreduce: cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); } } -#line 3584 "util/configparser.c" +#line 2905 "util/configparser.c" break; - case 287: -#line 435 "./util/configparser.y" + case 289: /* rpz_cname_override: VAR_RPZ_CNAME_OVERRIDE STRING_ARG */ +#line 437 "./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 3594 "util/configparser.c" +#line 2915 "util/configparser.c" break; - case 288: -#line 443 "./util/configparser.y" + case 290: /* rpz_log: VAR_RPZ_LOG STRING_ARG */ +#line 445 "./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) @@ -3602,21 +2923,21 @@ yyreduce: else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3606 "util/configparser.c" +#line 2927 "util/configparser.c" break; - case 289: -#line 453 "./util/configparser.y" + case 291: /* rpz_log_name: VAR_RPZ_LOG_NAME STRING_ARG */ +#line 455 "./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 3616 "util/configparser.c" +#line 2937 "util/configparser.c" break; - case 290: -#line 460 "./util/configparser.y" + case 292: /* rpz_signal_nxdomain_ra: VAR_RPZ_SIGNAL_NXDOMAIN_RA STRING_ARG */ +#line 462 "./util/configparser.y" { OUTYY(("P(rpz_signal_nxdomain_ra:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3624,11 +2945,11 @@ yyreduce: else cfg_parser->cfg->auths->rpz_signal_nxdomain_ra = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3628 "util/configparser.c" +#line 2949 "util/configparser.c" break; - case 291: -#line 470 "./util/configparser.y" + case 293: /* rpzstart: VAR_RPZ */ +#line 472 "./util/configparser.y" { struct config_auth* s; OUTYY(("\nP(rpz:)\n")); @@ -3645,11 +2966,11 @@ yyreduce: yyerror("out of memory"); } } -#line 3649 "util/configparser.c" +#line 2970 "util/configparser.c" break; - case 306: -#line 494 "./util/configparser.y" + case 308: /* server_num_threads: VAR_NUM_THREADS STRING_ARG */ +#line 496 "./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) @@ -3657,11 +2978,11 @@ yyreduce: else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3661 "util/configparser.c" +#line 2982 "util/configparser.c" break; - case 307: -#line 503 "./util/configparser.y" + case 309: /* server_verbosity: VAR_VERBOSITY STRING_ARG */ +#line 505 "./util/configparser.y" { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3669,11 +2990,11 @@ yyreduce: else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3673 "util/configparser.c" +#line 2994 "util/configparser.c" break; - case 308: -#line 512 "./util/configparser.y" + case 310: /* server_statistics_interval: VAR_STATISTICS_INTERVAL STRING_ARG */ +#line 514 "./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) @@ -3683,11 +3004,11 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3687 "util/configparser.c" +#line 3008 "util/configparser.c" break; - case 309: -#line 523 "./util/configparser.y" + case 311: /* server_statistics_cumulative: VAR_STATISTICS_CUMULATIVE STRING_ARG */ +#line 525 "./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) @@ -3695,11 +3016,11 @@ yyreduce: else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3699 "util/configparser.c" +#line 3020 "util/configparser.c" break; - case 310: -#line 532 "./util/configparser.y" + case 312: /* server_extended_statistics: VAR_EXTENDED_STATISTICS STRING_ARG */ +#line 534 "./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) @@ -3707,11 +3028,11 @@ yyreduce: else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3711 "util/configparser.c" +#line 3032 "util/configparser.c" break; - case 311: -#line 541 "./util/configparser.y" + case 313: /* server_shm_enable: VAR_SHM_ENABLE STRING_ARG */ +#line 543 "./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) @@ -3719,11 +3040,11 @@ yyreduce: else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3723 "util/configparser.c" +#line 3044 "util/configparser.c" break; - case 312: -#line 550 "./util/configparser.y" + case 314: /* server_shm_key: VAR_SHM_KEY STRING_ARG */ +#line 552 "./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) @@ -3733,11 +3054,11 @@ yyreduce: else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3737 "util/configparser.c" +#line 3058 "util/configparser.c" break; - case 313: -#line 561 "./util/configparser.y" + case 315: /* server_port: VAR_PORT STRING_ARG */ +#line 563 "./util/configparser.y" { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3745,11 +3066,11 @@ yyreduce: else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3749 "util/configparser.c" +#line 3070 "util/configparser.c" break; - case 314: -#line 570 "./util/configparser.y" + case 316: /* server_send_client_subnet: VAR_SEND_CLIENT_SUBNET STRING_ARG */ +#line 572 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str))); @@ -3760,11 +3081,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3764 "util/configparser.c" +#line 3085 "util/configparser.c" break; - case 315: -#line 582 "./util/configparser.y" + case 317: /* server_client_subnet_zone: VAR_CLIENT_SUBNET_ZONE STRING_ARG */ +#line 584 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str))); @@ -3776,11 +3097,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3780 "util/configparser.c" +#line 3101 "util/configparser.c" break; - case 316: -#line 596 "./util/configparser.y" + case 318: /* server_client_subnet_always_forward: VAR_CLIENT_SUBNET_ALWAYS_FORWARD STRING_ARG */ +#line 598 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str))); @@ -3794,11 +3115,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3798 "util/configparser.c" +#line 3119 "util/configparser.c" break; - case 317: -#line 611 "./util/configparser.y" + case 319: /* server_client_subnet_opcode: VAR_CLIENT_SUBNET_OPCODE STRING_ARG */ +#line 613 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str))); @@ -3808,11 +3129,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3812 "util/configparser.c" +#line 3133 "util/configparser.c" break; - case 318: -#line 622 "./util/configparser.y" + case 320: /* server_max_client_subnet_ipv4: VAR_MAX_CLIENT_SUBNET_IPV4 STRING_ARG */ +#line 624 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -3828,11 +3149,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3832 "util/configparser.c" +#line 3153 "util/configparser.c" break; - case 319: -#line 639 "./util/configparser.y" + case 321: /* server_max_client_subnet_ipv6: VAR_MAX_CLIENT_SUBNET_IPV6 STRING_ARG */ +#line 641 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3848,11 +3169,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3852 "util/configparser.c" +#line 3173 "util/configparser.c" break; - case 320: -#line 656 "./util/configparser.y" + case 322: /* server_min_client_subnet_ipv4: VAR_MIN_CLIENT_SUBNET_IPV4 STRING_ARG */ +#line 658 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -3868,11 +3189,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3872 "util/configparser.c" +#line 3193 "util/configparser.c" break; - case 321: -#line 673 "./util/configparser.y" + case 323: /* server_min_client_subnet_ipv6: VAR_MIN_CLIENT_SUBNET_IPV6 STRING_ARG */ +#line 675 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3888,11 +3209,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3892 "util/configparser.c" +#line 3213 "util/configparser.c" break; - case 322: -#line 690 "./util/configparser.y" + case 324: /* server_max_ecs_tree_size_ipv4: VAR_MAX_ECS_TREE_SIZE_IPV4 STRING_ARG */ +#line 692 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str))); @@ -3906,11 +3227,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3910 "util/configparser.c" +#line 3231 "util/configparser.c" break; - case 323: -#line 705 "./util/configparser.y" + case 325: /* server_max_ecs_tree_size_ipv6: VAR_MAX_ECS_TREE_SIZE_IPV6 STRING_ARG */ +#line 707 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str))); @@ -3924,11 +3245,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3928 "util/configparser.c" +#line 3249 "util/configparser.c" break; - case 324: -#line 720 "./util/configparser.y" + case 326: /* server_interface: VAR_INTERFACE STRING_ARG */ +#line 722 "./util/configparser.y" { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_ifs == 0) @@ -3940,11 +3261,11 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 3944 "util/configparser.c" +#line 3265 "util/configparser.c" break; - case 325: -#line 733 "./util/configparser.y" + case 327: /* server_outgoing_interface: VAR_OUTGOING_INTERFACE STRING_ARG */ +#line 735 "./util/configparser.y" { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_out_ifs == 0) @@ -3958,11 +3279,11 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 3962 "util/configparser.c" +#line 3283 "util/configparser.c" break; - case 326: -#line 748 "./util/configparser.y" + case 328: /* server_outgoing_range: VAR_OUTGOING_RANGE STRING_ARG */ +#line 750 "./util/configparser.y" { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3970,11 +3291,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3974 "util/configparser.c" +#line 3295 "util/configparser.c" break; - case 327: -#line 757 "./util/configparser.y" + case 329: /* server_outgoing_port_permit: VAR_OUTGOING_PORT_PERMIT STRING_ARG */ +#line 759 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 1, @@ -3982,11 +3303,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3986 "util/configparser.c" +#line 3307 "util/configparser.c" break; - case 328: -#line 766 "./util/configparser.y" + case 330: /* server_outgoing_port_avoid: VAR_OUTGOING_PORT_AVOID STRING_ARG */ +#line 768 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 0, @@ -3994,11 +3315,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3998 "util/configparser.c" +#line 3319 "util/configparser.c" break; - case 329: -#line 775 "./util/configparser.y" + case 331: /* server_outgoing_num_tcp: VAR_OUTGOING_NUM_TCP STRING_ARG */ +#line 777 "./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) @@ -4006,11 +3327,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4010 "util/configparser.c" +#line 3331 "util/configparser.c" break; - case 330: -#line 784 "./util/configparser.y" + case 332: /* server_incoming_num_tcp: VAR_INCOMING_NUM_TCP STRING_ARG */ +#line 786 "./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) @@ -4018,11 +3339,11 @@ yyreduce: else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4022 "util/configparser.c" +#line 3343 "util/configparser.c" break; - case 331: -#line 793 "./util/configparser.y" + case 333: /* server_interface_automatic: VAR_INTERFACE_AUTOMATIC STRING_ARG */ +#line 795 "./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) @@ -4030,11 +3351,11 @@ yyreduce: else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4034 "util/configparser.c" +#line 3355 "util/configparser.c" break; - case 332: -#line 802 "./util/configparser.y" + case 334: /* server_do_ip4: VAR_DO_IP4 STRING_ARG */ +#line 804 "./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) @@ -4042,11 +3363,11 @@ yyreduce: else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4046 "util/configparser.c" +#line 3367 "util/configparser.c" break; - case 333: -#line 811 "./util/configparser.y" + case 335: /* server_do_ip6: VAR_DO_IP6 STRING_ARG */ +#line 813 "./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) @@ -4054,11 +3375,11 @@ yyreduce: else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4058 "util/configparser.c" +#line 3379 "util/configparser.c" break; - case 334: -#line 820 "./util/configparser.y" + case 336: /* server_do_udp: VAR_DO_UDP STRING_ARG */ +#line 822 "./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) @@ -4066,11 +3387,11 @@ yyreduce: else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4070 "util/configparser.c" +#line 3391 "util/configparser.c" break; - case 335: -#line 829 "./util/configparser.y" + case 337: /* server_do_tcp: VAR_DO_TCP STRING_ARG */ +#line 831 "./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) @@ -4078,11 +3399,11 @@ yyreduce: else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4082 "util/configparser.c" +#line 3403 "util/configparser.c" break; - case 336: -#line 838 "./util/configparser.y" + case 338: /* server_prefer_ip4: VAR_PREFER_IP4 STRING_ARG */ +#line 840 "./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) @@ -4090,11 +3411,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4094 "util/configparser.c" +#line 3415 "util/configparser.c" break; - case 337: -#line 847 "./util/configparser.y" + case 339: /* server_prefer_ip6: VAR_PREFER_IP6 STRING_ARG */ +#line 849 "./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) @@ -4102,11 +3423,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4106 "util/configparser.c" +#line 3427 "util/configparser.c" break; - case 338: -#line 856 "./util/configparser.y" + case 340: /* server_tcp_mss: VAR_TCP_MSS STRING_ARG */ +#line 858 "./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) @@ -4114,11 +3435,11 @@ yyreduce: else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4118 "util/configparser.c" +#line 3439 "util/configparser.c" break; - case 339: -#line 865 "./util/configparser.y" + case 341: /* server_outgoing_tcp_mss: VAR_OUTGOING_TCP_MSS STRING_ARG */ +#line 867 "./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) @@ -4126,11 +3447,11 @@ yyreduce: else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4130 "util/configparser.c" +#line 3451 "util/configparser.c" break; - case 340: -#line 874 "./util/configparser.y" + case 342: /* server_tcp_idle_timeout: VAR_TCP_IDLE_TIMEOUT STRING_ARG */ +#line 876 "./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) @@ -4142,11 +3463,11 @@ yyreduce: else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4146 "util/configparser.c" +#line 3467 "util/configparser.c" break; - case 341: -#line 887 "./util/configparser.y" + case 343: /* server_max_reuse_tcp_queries: VAR_MAX_REUSE_TCP_QUERIES STRING_ARG */ +#line 889 "./util/configparser.y" { OUTYY(("P(server_max_reuse_tcp_queries:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4156,11 +3477,11 @@ yyreduce: else cfg_parser->cfg->max_reuse_tcp_queries = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4160 "util/configparser.c" +#line 3481 "util/configparser.c" break; - case 342: -#line 898 "./util/configparser.y" + case 344: /* server_tcp_reuse_timeout: VAR_TCP_REUSE_TIMEOUT STRING_ARG */ +#line 900 "./util/configparser.y" { OUTYY(("P(server_tcp_reuse_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4170,11 +3491,11 @@ yyreduce: else cfg_parser->cfg->tcp_reuse_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4174 "util/configparser.c" +#line 3495 "util/configparser.c" break; - case 343: -#line 909 "./util/configparser.y" + case 345: /* server_tcp_auth_query_timeout: VAR_TCP_AUTH_QUERY_TIMEOUT STRING_ARG */ +#line 911 "./util/configparser.y" { OUTYY(("P(server_tcp_auth_query_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4184,11 +3505,11 @@ yyreduce: else cfg_parser->cfg->tcp_auth_query_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4188 "util/configparser.c" +#line 3509 "util/configparser.c" break; - case 344: -#line 920 "./util/configparser.y" + case 346: /* server_tcp_keepalive: VAR_EDNS_TCP_KEEPALIVE STRING_ARG */ +#line 922 "./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) @@ -4196,11 +3517,11 @@ yyreduce: else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4200 "util/configparser.c" +#line 3521 "util/configparser.c" break; - case 345: -#line 929 "./util/configparser.y" + case 347: /* server_tcp_keepalive_timeout: VAR_EDNS_TCP_KEEPALIVE_TIMEOUT STRING_ARG */ +#line 931 "./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) @@ -4212,11 +3533,11 @@ yyreduce: else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4216 "util/configparser.c" +#line 3537 "util/configparser.c" break; - case 346: -#line 942 "./util/configparser.y" + case 348: /* server_tcp_upstream: VAR_TCP_UPSTREAM STRING_ARG */ +#line 944 "./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) @@ -4224,11 +3545,11 @@ yyreduce: else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4228 "util/configparser.c" +#line 3549 "util/configparser.c" break; - case 347: -#line 951 "./util/configparser.y" + case 349: /* server_udp_upstream_without_downstream: VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM STRING_ARG */ +#line 953 "./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) @@ -4236,11 +3557,11 @@ yyreduce: else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4240 "util/configparser.c" +#line 3561 "util/configparser.c" break; - case 348: -#line 960 "./util/configparser.y" + case 350: /* server_ssl_upstream: VAR_SSL_UPSTREAM STRING_ARG */ +#line 962 "./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) @@ -4248,31 +3569,31 @@ yyreduce: else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4252 "util/configparser.c" +#line 3573 "util/configparser.c" break; - case 349: -#line 969 "./util/configparser.y" + case 351: /* server_ssl_service_key: VAR_SSL_SERVICE_KEY STRING_ARG */ +#line 971 "./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 4262 "util/configparser.c" +#line 3583 "util/configparser.c" break; - case 350: -#line 976 "./util/configparser.y" + case 352: /* server_ssl_service_pem: VAR_SSL_SERVICE_PEM STRING_ARG */ +#line 978 "./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 4272 "util/configparser.c" +#line 3593 "util/configparser.c" break; - case 351: -#line 983 "./util/configparser.y" + case 353: /* server_ssl_port: VAR_SSL_PORT STRING_ARG */ +#line 985 "./util/configparser.y" { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4280,21 +3601,21 @@ yyreduce: else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4284 "util/configparser.c" +#line 3605 "util/configparser.c" break; - case 352: -#line 992 "./util/configparser.y" + case 354: /* server_tls_cert_bundle: VAR_TLS_CERT_BUNDLE STRING_ARG */ +#line 994 "./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 4294 "util/configparser.c" +#line 3615 "util/configparser.c" break; - case 353: -#line 999 "./util/configparser.y" + case 355: /* server_tls_win_cert: VAR_TLS_WIN_CERT STRING_ARG */ +#line 1001 "./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) @@ -4302,53 +3623,53 @@ yyreduce: else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4306 "util/configparser.c" +#line 3627 "util/configparser.c" break; - case 354: -#line 1008 "./util/configparser.y" + case 356: /* server_tls_additional_port: VAR_TLS_ADDITIONAL_PORT STRING_ARG */ +#line 1010 "./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 4317 "util/configparser.c" +#line 3638 "util/configparser.c" break; - case 355: -#line 1016 "./util/configparser.y" + case 357: /* server_tls_ciphers: VAR_TLS_CIPHERS STRING_ARG */ +#line 1018 "./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 4327 "util/configparser.c" +#line 3648 "util/configparser.c" break; - case 356: -#line 1023 "./util/configparser.y" + case 358: /* server_tls_ciphersuites: VAR_TLS_CIPHERSUITES STRING_ARG */ +#line 1025 "./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 4337 "util/configparser.c" +#line 3658 "util/configparser.c" break; - case 357: -#line 1030 "./util/configparser.y" + case 359: /* server_tls_session_ticket_keys: VAR_TLS_SESSION_TICKET_KEYS STRING_ARG */ +#line 1032 "./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 4348 "util/configparser.c" +#line 3669 "util/configparser.c" break; - case 358: -#line 1038 "./util/configparser.y" + case 360: /* server_tls_use_sni: VAR_TLS_USE_SNI STRING_ARG */ +#line 1040 "./util/configparser.y" { OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4356,11 +3677,11 @@ yyreduce: else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4360 "util/configparser.c" +#line 3681 "util/configparser.c" break; - case 359: -#line 1047 "./util/configparser.y" + case 361: /* server_https_port: VAR_HTTPS_PORT STRING_ARG */ +#line 1049 "./util/configparser.y" { OUTYY(("P(server_https_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4368,11 +3689,11 @@ yyreduce: else cfg_parser->cfg->https_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4372 "util/configparser.c" +#line 3693 "util/configparser.c" break; - case 360: -#line 1055 "./util/configparser.y" + case 362: /* server_http_endpoint: VAR_HTTP_ENDPOINT STRING_ARG */ +#line 1057 "./util/configparser.y" { OUTYY(("P(server_http_endpoint:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->http_endpoint); @@ -4388,11 +3709,11 @@ yyreduce: cfg_parser->cfg->http_endpoint = (yyvsp[0].str); } } -#line 4392 "util/configparser.c" +#line 3713 "util/configparser.c" break; - case 361: -#line 1071 "./util/configparser.y" + case 363: /* server_http_max_streams: VAR_HTTP_MAX_STREAMS STRING_ARG */ +#line 1073 "./util/configparser.y" { OUTYY(("P(server_http_max_streams:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4400,11 +3721,11 @@ yyreduce: else cfg_parser->cfg->http_max_streams = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4404 "util/configparser.c" +#line 3725 "util/configparser.c" break; - case 362: -#line 1079 "./util/configparser.y" + case 364: /* server_http_query_buffer_size: VAR_HTTP_QUERY_BUFFER_SIZE STRING_ARG */ +#line 1081 "./util/configparser.y" { OUTYY(("P(server_http_query_buffer_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), @@ -4412,11 +3733,11 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4416 "util/configparser.c" +#line 3737 "util/configparser.c" break; - case 363: -#line 1087 "./util/configparser.y" + case 365: /* server_http_response_buffer_size: VAR_HTTP_RESPONSE_BUFFER_SIZE STRING_ARG */ +#line 1089 "./util/configparser.y" { OUTYY(("P(server_http_response_buffer_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), @@ -4424,11 +3745,11 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4428 "util/configparser.c" +#line 3749 "util/configparser.c" break; - case 364: -#line 1095 "./util/configparser.y" + case 366: /* server_http_nodelay: VAR_HTTP_NODELAY STRING_ARG */ +#line 1097 "./util/configparser.y" { OUTYY(("P(server_http_nodelay:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4436,11 +3757,11 @@ yyreduce: else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4440 "util/configparser.c" +#line 3761 "util/configparser.c" break; - case 365: -#line 1103 "./util/configparser.y" + case 367: /* server_http_notls_downstream: VAR_HTTP_NOTLS_DOWNSTREAM STRING_ARG */ +#line 1105 "./util/configparser.y" { OUTYY(("P(server_http_notls_downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4448,11 +3769,11 @@ yyreduce: else cfg_parser->cfg->http_notls_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4452 "util/configparser.c" +#line 3773 "util/configparser.c" break; - case 366: -#line 1111 "./util/configparser.y" + case 368: /* server_use_systemd: VAR_USE_SYSTEMD STRING_ARG */ +#line 1113 "./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) @@ -4460,11 +3781,11 @@ yyreduce: else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4464 "util/configparser.c" +#line 3785 "util/configparser.c" break; - case 367: -#line 1120 "./util/configparser.y" + case 369: /* server_do_daemonize: VAR_DO_DAEMONIZE STRING_ARG */ +#line 1122 "./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) @@ -4472,11 +3793,11 @@ yyreduce: else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4476 "util/configparser.c" +#line 3797 "util/configparser.c" break; - case 368: -#line 1129 "./util/configparser.y" + case 370: /* server_use_syslog: VAR_USE_SYSLOG STRING_ARG */ +#line 1131 "./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) @@ -4489,11 +3810,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4493 "util/configparser.c" +#line 3814 "util/configparser.c" break; - case 369: -#line 1143 "./util/configparser.y" + case 371: /* server_log_time_ascii: VAR_LOG_TIME_ASCII STRING_ARG */ +#line 1145 "./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) @@ -4501,11 +3822,11 @@ yyreduce: else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4505 "util/configparser.c" +#line 3826 "util/configparser.c" break; - case 370: -#line 1152 "./util/configparser.y" + case 372: /* server_log_queries: VAR_LOG_QUERIES STRING_ARG */ +#line 1154 "./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) @@ -4513,11 +3834,11 @@ yyreduce: else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4517 "util/configparser.c" +#line 3838 "util/configparser.c" break; - case 371: -#line 1161 "./util/configparser.y" + case 373: /* server_log_replies: VAR_LOG_REPLIES STRING_ARG */ +#line 1163 "./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) @@ -4525,11 +3846,11 @@ yyreduce: else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4529 "util/configparser.c" +#line 3850 "util/configparser.c" break; - case 372: -#line 1170 "./util/configparser.y" + case 374: /* server_log_tag_queryreply: VAR_LOG_TAG_QUERYREPLY STRING_ARG */ +#line 1172 "./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) @@ -4537,11 +3858,11 @@ yyreduce: else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4541 "util/configparser.c" +#line 3862 "util/configparser.c" break; - case 373: -#line 1179 "./util/configparser.y" + case 375: /* server_log_servfail: VAR_LOG_SERVFAIL STRING_ARG */ +#line 1181 "./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) @@ -4549,11 +3870,11 @@ yyreduce: else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4553 "util/configparser.c" +#line 3874 "util/configparser.c" break; - case 374: -#line 1188 "./util/configparser.y" + case 376: /* server_log_local_actions: VAR_LOG_LOCAL_ACTIONS STRING_ARG */ +#line 1190 "./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) @@ -4561,31 +3882,31 @@ yyreduce: else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4565 "util/configparser.c" +#line 3886 "util/configparser.c" break; - case 375: -#line 1197 "./util/configparser.y" + case 377: /* server_chroot: VAR_CHROOT STRING_ARG */ +#line 1199 "./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 4575 "util/configparser.c" +#line 3896 "util/configparser.c" break; - case 376: -#line 1204 "./util/configparser.y" + case 378: /* server_username: VAR_USERNAME STRING_ARG */ +#line 1206 "./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 4585 "util/configparser.c" +#line 3906 "util/configparser.c" break; - case 377: -#line 1211 "./util/configparser.y" + case 379: /* server_directory: VAR_DIRECTORY STRING_ARG */ +#line 1213 "./util/configparser.y" { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->directory); @@ -4610,105 +3931,105 @@ yyreduce: } } } -#line 4614 "util/configparser.c" +#line 3935 "util/configparser.c" break; - case 378: -#line 1237 "./util/configparser.y" + case 380: /* server_logfile: VAR_LOGFILE STRING_ARG */ +#line 1239 "./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 4625 "util/configparser.c" +#line 3946 "util/configparser.c" break; - case 379: -#line 1245 "./util/configparser.y" + case 381: /* server_pidfile: VAR_PIDFILE STRING_ARG */ +#line 1247 "./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 4635 "util/configparser.c" +#line 3956 "util/configparser.c" break; - case 380: -#line 1252 "./util/configparser.y" + case 382: /* server_root_hints: VAR_ROOT_HINTS STRING_ARG */ +#line 1254 "./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 4645 "util/configparser.c" +#line 3966 "util/configparser.c" break; - case 381: -#line 1259 "./util/configparser.y" + case 383: /* server_dlv_anchor_file: VAR_DLV_ANCHOR_FILE STRING_ARG */ +#line 1261 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str))); log_warn("option dlv-anchor-file ignored: DLV is decommissioned"); free((yyvsp[0].str)); } -#line 4655 "util/configparser.c" +#line 3976 "util/configparser.c" break; - case 382: -#line 1266 "./util/configparser.y" + case 384: /* server_dlv_anchor: VAR_DLV_ANCHOR STRING_ARG */ +#line 1268 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str))); log_warn("option dlv-anchor ignored: DLV is decommissioned"); free((yyvsp[0].str)); } -#line 4665 "util/configparser.c" +#line 3986 "util/configparser.c" break; - case 383: -#line 1273 "./util/configparser.y" + case 385: /* server_auto_trust_anchor_file: VAR_AUTO_TRUST_ANCHOR_FILE STRING_ARG */ +#line 1275 "./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 4676 "util/configparser.c" +#line 3997 "util/configparser.c" break; - case 384: -#line 1281 "./util/configparser.y" + case 386: /* server_trust_anchor_file: VAR_TRUST_ANCHOR_FILE STRING_ARG */ +#line 1283 "./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 4687 "util/configparser.c" +#line 4008 "util/configparser.c" break; - case 385: -#line 1289 "./util/configparser.y" + case 387: /* server_trusted_keys_file: VAR_TRUSTED_KEYS_FILE STRING_ARG */ +#line 1291 "./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 4698 "util/configparser.c" +#line 4019 "util/configparser.c" break; - case 386: -#line 1297 "./util/configparser.y" + case 388: /* server_trust_anchor: VAR_TRUST_ANCHOR STRING_ARG */ +#line 1299 "./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 4708 "util/configparser.c" +#line 4029 "util/configparser.c" break; - case 387: -#line 1304 "./util/configparser.y" + case 389: /* server_trust_anchor_signaling: VAR_TRUST_ANCHOR_SIGNALING STRING_ARG */ +#line 1306 "./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) @@ -4718,11 +4039,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4722 "util/configparser.c" +#line 4043 "util/configparser.c" break; - case 388: -#line 1315 "./util/configparser.y" + case 390: /* server_root_key_sentinel: VAR_ROOT_KEY_SENTINEL STRING_ARG */ +#line 1317 "./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) @@ -4732,21 +4053,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4736 "util/configparser.c" +#line 4057 "util/configparser.c" break; - case 389: -#line 1326 "./util/configparser.y" + case 391: /* server_domain_insecure: VAR_DOMAIN_INSECURE STRING_ARG */ +#line 1328 "./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 4746 "util/configparser.c" +#line 4067 "util/configparser.c" break; - case 390: -#line 1333 "./util/configparser.y" + case 392: /* server_hide_identity: VAR_HIDE_IDENTITY STRING_ARG */ +#line 1335 "./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) @@ -4754,11 +4075,11 @@ yyreduce: else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4758 "util/configparser.c" +#line 4079 "util/configparser.c" break; - case 391: -#line 1342 "./util/configparser.y" + case 393: /* server_hide_version: VAR_HIDE_VERSION STRING_ARG */ +#line 1344 "./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) @@ -4766,11 +4087,11 @@ yyreduce: else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4770 "util/configparser.c" +#line 4091 "util/configparser.c" break; - case 392: -#line 1351 "./util/configparser.y" + case 394: /* server_hide_trustanchor: VAR_HIDE_TRUSTANCHOR STRING_ARG */ +#line 1353 "./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) @@ -4778,11 +4099,11 @@ yyreduce: else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4782 "util/configparser.c" +#line 4103 "util/configparser.c" break; - case 393: -#line 1360 "./util/configparser.y" + case 395: /* server_hide_http_user_agent: VAR_HIDE_HTTP_USER_AGENT STRING_ARG */ +#line 1362 "./util/configparser.y" { OUTYY(("P(server_hide_user_agent:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4790,41 +4111,41 @@ yyreduce: else cfg_parser->cfg->hide_http_user_agent = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4794 "util/configparser.c" +#line 4115 "util/configparser.c" break; - case 394: -#line 1369 "./util/configparser.y" + case 396: /* server_identity: VAR_IDENTITY STRING_ARG */ +#line 1371 "./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 4804 "util/configparser.c" +#line 4125 "util/configparser.c" break; - case 395: -#line 1376 "./util/configparser.y" + case 397: /* server_version: VAR_VERSION STRING_ARG */ +#line 1378 "./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 4814 "util/configparser.c" +#line 4135 "util/configparser.c" break; - case 396: -#line 1383 "./util/configparser.y" + case 398: /* server_http_user_agent: VAR_HTTP_USER_AGENT STRING_ARG */ +#line 1385 "./util/configparser.y" { OUTYY(("P(server_http_user_agent:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->http_user_agent); cfg_parser->cfg->http_user_agent = (yyvsp[0].str); } -#line 4824 "util/configparser.c" +#line 4145 "util/configparser.c" break; - case 397: -#line 1390 "./util/configparser.y" + case 399: /* server_nsid: VAR_NSID STRING_ARG */ +#line 1392 "./util/configparser.y" { OUTYY(("P(server_nsid:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->nsid_cfg_str); @@ -4839,33 +4160,33 @@ yyreduce: yyerror("the NSID must be either a hex string or an " "ascii character string prepended with ascii_."); } -#line 4843 "util/configparser.c" +#line 4164 "util/configparser.c" break; - case 398: -#line 1406 "./util/configparser.y" + case 400: /* server_so_rcvbuf: VAR_SO_RCVBUF STRING_ARG */ +#line 1408 "./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 4854 "util/configparser.c" +#line 4175 "util/configparser.c" break; - case 399: -#line 1414 "./util/configparser.y" + case 401: /* server_so_sndbuf: VAR_SO_SNDBUF STRING_ARG */ +#line 1416 "./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 4865 "util/configparser.c" +#line 4186 "util/configparser.c" break; - case 400: -#line 1422 "./util/configparser.y" + case 402: /* server_so_reuseport: VAR_SO_REUSEPORT STRING_ARG */ +#line 1424 "./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) @@ -4874,11 +4195,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4878 "util/configparser.c" +#line 4199 "util/configparser.c" break; - case 401: -#line 1432 "./util/configparser.y" + case 403: /* server_ip_transparent: VAR_IP_TRANSPARENT STRING_ARG */ +#line 1434 "./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) @@ -4887,11 +4208,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4891 "util/configparser.c" +#line 4212 "util/configparser.c" break; - case 402: -#line 1442 "./util/configparser.y" + case 404: /* server_ip_freebind: VAR_IP_FREEBIND STRING_ARG */ +#line 1444 "./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) @@ -4900,11 +4221,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4904 "util/configparser.c" +#line 4225 "util/configparser.c" break; - case 403: -#line 1452 "./util/configparser.y" + case 405: /* server_ip_dscp: VAR_IP_DSCP STRING_ARG */ +#line 1454 "./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) @@ -4917,22 +4238,22 @@ yyreduce: cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4921 "util/configparser.c" +#line 4242 "util/configparser.c" break; - case 404: -#line 1466 "./util/configparser.y" + case 406: /* server_stream_wait_size: VAR_STREAM_WAIT_SIZE STRING_ARG */ +#line 1468 "./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 4932 "util/configparser.c" +#line 4253 "util/configparser.c" break; - case 405: -#line 1474 "./util/configparser.y" + case 407: /* server_edns_buffer_size: VAR_EDNS_BUFFER_SIZE STRING_ARG */ +#line 1476 "./util/configparser.y" { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4944,11 +4265,11 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4948 "util/configparser.c" +#line 4269 "util/configparser.c" break; - case 406: -#line 1487 "./util/configparser.y" + case 408: /* server_msg_buffer_size: VAR_MSG_BUFFER_SIZE STRING_ARG */ +#line 1489 "./util/configparser.y" { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4958,22 +4279,22 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4962 "util/configparser.c" +#line 4283 "util/configparser.c" break; - case 407: -#line 1498 "./util/configparser.y" + case 409: /* server_msg_cache_size: VAR_MSG_CACHE_SIZE STRING_ARG */ +#line 1500 "./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 4973 "util/configparser.c" +#line 4294 "util/configparser.c" break; - case 408: -#line 1506 "./util/configparser.y" + case 410: /* server_msg_cache_slabs: VAR_MSG_CACHE_SLABS STRING_ARG */ +#line 1508 "./util/configparser.y" { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -4985,11 +4306,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4989 "util/configparser.c" +#line 4310 "util/configparser.c" break; - case 409: -#line 1519 "./util/configparser.y" + case 411: /* server_num_queries_per_thread: VAR_NUM_QUERIES_PER_THREAD STRING_ARG */ +#line 1521 "./util/configparser.y" { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4997,11 +4318,11 @@ yyreduce: else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5001 "util/configparser.c" +#line 4322 "util/configparser.c" break; - case 410: -#line 1528 "./util/configparser.y" + case 412: /* server_jostle_timeout: VAR_JOSTLE_TIMEOUT STRING_ARG */ +#line 1530 "./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) @@ -5009,11 +4330,11 @@ yyreduce: else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5013 "util/configparser.c" +#line 4334 "util/configparser.c" break; - case 411: -#line 1537 "./util/configparser.y" + case 413: /* server_delay_close: VAR_DELAY_CLOSE STRING_ARG */ +#line 1539 "./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) @@ -5021,11 +4342,11 @@ yyreduce: else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5025 "util/configparser.c" +#line 4346 "util/configparser.c" break; - case 412: -#line 1546 "./util/configparser.y" + case 414: /* server_udp_connect: VAR_UDP_CONNECT STRING_ARG */ +#line 1548 "./util/configparser.y" { OUTYY(("P(server_udp_connect:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5033,11 +4354,11 @@ yyreduce: else cfg_parser->cfg->udp_connect = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5037 "util/configparser.c" +#line 4358 "util/configparser.c" break; - case 413: -#line 1555 "./util/configparser.y" + case 415: /* server_unblock_lan_zones: VAR_UNBLOCK_LAN_ZONES STRING_ARG */ +#line 1557 "./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) @@ -5046,11 +4367,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5050 "util/configparser.c" +#line 4371 "util/configparser.c" break; - case 414: -#line 1565 "./util/configparser.y" + case 416: /* server_insecure_lan_zones: VAR_INSECURE_LAN_ZONES STRING_ARG */ +#line 1567 "./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) @@ -5059,22 +4380,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5063 "util/configparser.c" +#line 4384 "util/configparser.c" break; - case 415: -#line 1575 "./util/configparser.y" + case 417: /* server_rrset_cache_size: VAR_RRSET_CACHE_SIZE STRING_ARG */ +#line 1577 "./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 5074 "util/configparser.c" +#line 4395 "util/configparser.c" break; - case 416: -#line 1583 "./util/configparser.y" + case 418: /* server_rrset_cache_slabs: VAR_RRSET_CACHE_SLABS STRING_ARG */ +#line 1585 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -5086,11 +4407,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5090 "util/configparser.c" +#line 4411 "util/configparser.c" break; - case 417: -#line 1596 "./util/configparser.y" + case 419: /* server_infra_host_ttl: VAR_INFRA_HOST_TTL STRING_ARG */ +#line 1598 "./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) @@ -5098,22 +4419,22 @@ yyreduce: else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5102 "util/configparser.c" +#line 4423 "util/configparser.c" break; - case 418: -#line 1605 "./util/configparser.y" + case 420: /* server_infra_lame_ttl: VAR_INFRA_LAME_TTL STRING_ARG */ +#line 1607 "./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 5113 "util/configparser.c" +#line 4434 "util/configparser.c" break; - case 419: -#line 1613 "./util/configparser.y" + case 421: /* server_infra_cache_numhosts: VAR_INFRA_CACHE_NUMHOSTS STRING_ARG */ +#line 1615 "./util/configparser.y" { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5121,22 +4442,22 @@ yyreduce: else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5125 "util/configparser.c" +#line 4446 "util/configparser.c" break; - case 420: -#line 1622 "./util/configparser.y" + case 422: /* server_infra_cache_lame_size: VAR_INFRA_CACHE_LAME_SIZE STRING_ARG */ +#line 1624 "./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 5136 "util/configparser.c" +#line 4457 "util/configparser.c" break; - case 421: -#line 1630 "./util/configparser.y" + case 423: /* server_infra_cache_slabs: VAR_INFRA_CACHE_SLABS STRING_ARG */ +#line 1632 "./util/configparser.y" { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -5148,11 +4469,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5152 "util/configparser.c" +#line 4473 "util/configparser.c" break; - case 422: -#line 1643 "./util/configparser.y" + case 424: /* server_infra_cache_min_rtt: VAR_INFRA_CACHE_MIN_RTT STRING_ARG */ +#line 1645 "./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) @@ -5160,11 +4481,11 @@ yyreduce: else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5164 "util/configparser.c" +#line 4485 "util/configparser.c" break; - case 423: -#line 1652 "./util/configparser.y" + case 425: /* server_infra_keep_probing: VAR_INFRA_KEEP_PROBING STRING_ARG */ +#line 1654 "./util/configparser.y" { OUTYY(("P(server_infra_keep_probing:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5173,21 +4494,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5177 "util/configparser.c" +#line 4498 "util/configparser.c" break; - case 424: -#line 1662 "./util/configparser.y" + case 426: /* server_target_fetch_policy: VAR_TARGET_FETCH_POLICY STRING_ARG */ +#line 1664 "./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 5187 "util/configparser.c" +#line 4508 "util/configparser.c" break; - case 425: -#line 1669 "./util/configparser.y" + case 427: /* server_harden_short_bufsize: VAR_HARDEN_SHORT_BUFSIZE STRING_ARG */ +#line 1671 "./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) @@ -5196,11 +4517,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5200 "util/configparser.c" +#line 4521 "util/configparser.c" break; - case 426: -#line 1679 "./util/configparser.y" + case 428: /* server_harden_large_queries: VAR_HARDEN_LARGE_QUERIES STRING_ARG */ +#line 1681 "./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) @@ -5209,11 +4530,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5213 "util/configparser.c" +#line 4534 "util/configparser.c" break; - case 427: -#line 1689 "./util/configparser.y" + case 429: /* server_harden_glue: VAR_HARDEN_GLUE STRING_ARG */ +#line 1691 "./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) @@ -5222,11 +4543,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5226 "util/configparser.c" +#line 4547 "util/configparser.c" break; - case 428: -#line 1699 "./util/configparser.y" + case 430: /* server_harden_dnssec_stripped: VAR_HARDEN_DNSSEC_STRIPPED STRING_ARG */ +#line 1701 "./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) @@ -5235,11 +4556,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5239 "util/configparser.c" +#line 4560 "util/configparser.c" break; - case 429: -#line 1709 "./util/configparser.y" + case 431: /* server_harden_below_nxdomain: VAR_HARDEN_BELOW_NXDOMAIN STRING_ARG */ +#line 1711 "./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) @@ -5248,11 +4569,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5252 "util/configparser.c" +#line 4573 "util/configparser.c" break; - case 430: -#line 1719 "./util/configparser.y" + case 432: /* server_harden_referral_path: VAR_HARDEN_REFERRAL_PATH STRING_ARG */ +#line 1721 "./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) @@ -5261,11 +4582,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5265 "util/configparser.c" +#line 4586 "util/configparser.c" break; - case 431: -#line 1729 "./util/configparser.y" + case 433: /* server_harden_algo_downgrade: VAR_HARDEN_ALGO_DOWNGRADE STRING_ARG */ +#line 1731 "./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) @@ -5274,11 +4595,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5278 "util/configparser.c" +#line 4599 "util/configparser.c" break; - case 432: -#line 1739 "./util/configparser.y" + case 434: /* server_use_caps_for_id: VAR_USE_CAPS_FOR_ID STRING_ARG */ +#line 1741 "./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) @@ -5287,41 +4608,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5291 "util/configparser.c" +#line 4612 "util/configparser.c" break; - case 433: -#line 1749 "./util/configparser.y" + case 435: /* server_caps_whitelist: VAR_CAPS_WHITELIST STRING_ARG */ +#line 1751 "./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 5301 "util/configparser.c" +#line 4622 "util/configparser.c" break; - case 434: -#line 1756 "./util/configparser.y" + case 436: /* server_private_address: VAR_PRIVATE_ADDRESS STRING_ARG */ +#line 1758 "./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 5311 "util/configparser.c" +#line 4632 "util/configparser.c" break; - case 435: -#line 1763 "./util/configparser.y" + case 437: /* server_private_domain: VAR_PRIVATE_DOMAIN STRING_ARG */ +#line 1765 "./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 5321 "util/configparser.c" +#line 4642 "util/configparser.c" break; - case 436: -#line 1770 "./util/configparser.y" + case 438: /* server_prefetch: VAR_PREFETCH STRING_ARG */ +#line 1772 "./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) @@ -5329,11 +4650,11 @@ yyreduce: else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5333 "util/configparser.c" +#line 4654 "util/configparser.c" break; - case 437: -#line 1779 "./util/configparser.y" + case 439: /* server_prefetch_key: VAR_PREFETCH_KEY STRING_ARG */ +#line 1781 "./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) @@ -5341,11 +4662,11 @@ yyreduce: else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5345 "util/configparser.c" +#line 4666 "util/configparser.c" break; - case 438: -#line 1788 "./util/configparser.y" + case 440: /* server_deny_any: VAR_DENY_ANY STRING_ARG */ +#line 1790 "./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) @@ -5353,11 +4674,11 @@ yyreduce: else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5357 "util/configparser.c" +#line 4678 "util/configparser.c" break; - case 439: -#line 1797 "./util/configparser.y" + case 441: /* server_unwanted_reply_threshold: VAR_UNWANTED_REPLY_THRESHOLD STRING_ARG */ +#line 1799 "./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) @@ -5365,21 +4686,21 @@ yyreduce: else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5369 "util/configparser.c" +#line 4690 "util/configparser.c" break; - case 440: -#line 1806 "./util/configparser.y" + case 442: /* server_do_not_query_address: VAR_DO_NOT_QUERY_ADDRESS STRING_ARG */ +#line 1808 "./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 5379 "util/configparser.c" +#line 4700 "util/configparser.c" break; - case 441: -#line 1813 "./util/configparser.y" + case 443: /* server_do_not_query_localhost: VAR_DO_NOT_QUERY_LOCALHOST STRING_ARG */ +#line 1815 "./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) @@ -5388,11 +4709,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5392 "util/configparser.c" +#line 4713 "util/configparser.c" break; - case 442: -#line 1823 "./util/configparser.y" + case 444: /* server_access_control: VAR_ACCESS_CONTROL STRING_ARG STRING_ARG */ +#line 1825 "./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 && @@ -5411,21 +4732,21 @@ yyreduce: fatal_exit("out of memory adding acl"); } } -#line 5415 "util/configparser.c" +#line 4736 "util/configparser.c" break; - case 443: -#line 1843 "./util/configparser.y" + case 445: /* server_module_conf: VAR_MODULE_CONF STRING_ARG */ +#line 1845 "./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 5425 "util/configparser.c" +#line 4746 "util/configparser.c" break; - case 444: -#line 1850 "./util/configparser.y" + case 446: /* server_val_override_date: VAR_VAL_OVERRIDE_DATE STRING_ARG */ +#line 1852 "./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) { @@ -5442,11 +4763,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5446 "util/configparser.c" +#line 4767 "util/configparser.c" break; - case 445: -#line 1868 "./util/configparser.y" + case 447: /* server_val_sig_skew_min: VAR_VAL_SIG_SKEW_MIN STRING_ARG */ +#line 1870 "./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) { @@ -5458,11 +4779,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5462 "util/configparser.c" +#line 4783 "util/configparser.c" break; - case 446: -#line 1881 "./util/configparser.y" + case 448: /* server_val_sig_skew_max: VAR_VAL_SIG_SKEW_MAX STRING_ARG */ +#line 1883 "./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) { @@ -5474,11 +4795,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5478 "util/configparser.c" +#line 4799 "util/configparser.c" break; - case 447: -#line 1894 "./util/configparser.y" + case 449: /* server_val_max_restart: VAR_VAL_MAX_RESTART STRING_ARG */ +#line 1896 "./util/configparser.y" { OUTYY(("P(server_val_max_restart:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -5490,11 +4811,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5494 "util/configparser.c" +#line 4815 "util/configparser.c" break; - case 448: -#line 1907 "./util/configparser.y" + case 450: /* server_cache_max_ttl: VAR_CACHE_MAX_TTL STRING_ARG */ +#line 1909 "./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) @@ -5502,11 +4823,11 @@ yyreduce: else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5506 "util/configparser.c" +#line 4827 "util/configparser.c" break; - case 449: -#line 1916 "./util/configparser.y" + case 451: /* server_cache_max_negative_ttl: VAR_CACHE_MAX_NEGATIVE_TTL STRING_ARG */ +#line 1918 "./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) @@ -5514,11 +4835,11 @@ yyreduce: else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5518 "util/configparser.c" +#line 4839 "util/configparser.c" break; - case 450: -#line 1925 "./util/configparser.y" + case 452: /* server_cache_min_ttl: VAR_CACHE_MIN_TTL STRING_ARG */ +#line 1927 "./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) @@ -5526,11 +4847,11 @@ yyreduce: else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5530 "util/configparser.c" +#line 4851 "util/configparser.c" break; - case 451: -#line 1934 "./util/configparser.y" + case 453: /* server_bogus_ttl: VAR_BOGUS_TTL STRING_ARG */ +#line 1936 "./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) @@ -5538,11 +4859,11 @@ yyreduce: else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5542 "util/configparser.c" +#line 4863 "util/configparser.c" break; - case 452: -#line 1943 "./util/configparser.y" + case 454: /* server_val_clean_additional: VAR_VAL_CLEAN_ADDITIONAL STRING_ARG */ +#line 1945 "./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) @@ -5551,11 +4872,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5555 "util/configparser.c" +#line 4876 "util/configparser.c" break; - case 453: -#line 1953 "./util/configparser.y" + case 455: /* server_val_permissive_mode: VAR_VAL_PERMISSIVE_MODE STRING_ARG */ +#line 1955 "./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) @@ -5564,11 +4885,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5568 "util/configparser.c" +#line 4889 "util/configparser.c" break; - case 454: -#line 1963 "./util/configparser.y" + case 456: /* server_aggressive_nsec: VAR_AGGRESSIVE_NSEC STRING_ARG */ +#line 1965 "./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) @@ -5578,11 +4899,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5582 "util/configparser.c" +#line 4903 "util/configparser.c" break; - case 455: -#line 1974 "./util/configparser.y" + case 457: /* server_ignore_cd_flag: VAR_IGNORE_CD_FLAG STRING_ARG */ +#line 1976 "./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) @@ -5590,11 +4911,11 @@ yyreduce: else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5594 "util/configparser.c" +#line 4915 "util/configparser.c" break; - case 456: -#line 1983 "./util/configparser.y" + case 458: /* server_serve_expired: VAR_SERVE_EXPIRED STRING_ARG */ +#line 1985 "./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) @@ -5602,11 +4923,11 @@ yyreduce: else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5606 "util/configparser.c" +#line 4927 "util/configparser.c" break; - case 457: -#line 1992 "./util/configparser.y" + case 459: /* server_serve_expired_ttl: VAR_SERVE_EXPIRED_TTL STRING_ARG */ +#line 1994 "./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) @@ -5614,11 +4935,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5618 "util/configparser.c" +#line 4939 "util/configparser.c" break; - case 458: -#line 2001 "./util/configparser.y" + case 460: /* server_serve_expired_ttl_reset: VAR_SERVE_EXPIRED_TTL_RESET STRING_ARG */ +#line 2003 "./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) @@ -5626,11 +4947,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5630 "util/configparser.c" +#line 4951 "util/configparser.c" break; - case 459: -#line 2010 "./util/configparser.y" + case 461: /* server_serve_expired_reply_ttl: VAR_SERVE_EXPIRED_REPLY_TTL STRING_ARG */ +#line 2012 "./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) @@ -5638,11 +4959,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5642 "util/configparser.c" +#line 4963 "util/configparser.c" break; - case 460: -#line 2019 "./util/configparser.y" + case 462: /* server_serve_expired_client_timeout: VAR_SERVE_EXPIRED_CLIENT_TIMEOUT STRING_ARG */ +#line 2021 "./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) @@ -5650,11 +4971,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5654 "util/configparser.c" +#line 4975 "util/configparser.c" break; - case 461: -#line 2028 "./util/configparser.y" + case 463: /* server_serve_original_ttl: VAR_SERVE_ORIGINAL_TTL STRING_ARG */ +#line 2030 "./util/configparser.y" { OUTYY(("P(server_serve_original_ttl:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5662,11 +4983,11 @@ yyreduce: else cfg_parser->cfg->serve_original_ttl = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5666 "util/configparser.c" +#line 4987 "util/configparser.c" break; - case 462: -#line 2037 "./util/configparser.y" + case 464: /* server_fake_dsa: VAR_FAKE_DSA STRING_ARG */ +#line 2039 "./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) @@ -5678,11 +4999,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5682 "util/configparser.c" +#line 5003 "util/configparser.c" break; - case 463: -#line 2050 "./util/configparser.y" + case 465: /* server_fake_sha1: VAR_FAKE_SHA1 STRING_ARG */ +#line 2052 "./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) @@ -5694,11 +5015,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5698 "util/configparser.c" +#line 5019 "util/configparser.c" break; - case 464: -#line 2063 "./util/configparser.y" + case 466: /* server_val_log_level: VAR_VAL_LOG_LEVEL STRING_ARG */ +#line 2065 "./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) @@ -5706,21 +5027,21 @@ yyreduce: else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5710 "util/configparser.c" +#line 5031 "util/configparser.c" break; - case 465: -#line 2072 "./util/configparser.y" + case 467: /* server_val_nsec3_keysize_iterations: VAR_VAL_NSEC3_KEYSIZE_ITERATIONS STRING_ARG */ +#line 2074 "./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 5720 "util/configparser.c" +#line 5041 "util/configparser.c" break; - case 466: -#line 2079 "./util/configparser.y" + case 468: /* server_zonemd_permissive_mode: VAR_ZONEMD_PERMISSIVE_MODE STRING_ARG */ +#line 2081 "./util/configparser.y" { OUTYY(("P(server_zonemd_permissive_mode:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5728,11 +5049,11 @@ yyreduce: else cfg_parser->cfg->zonemd_permissive_mode = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5732 "util/configparser.c" +#line 5053 "util/configparser.c" break; - case 467: -#line 2088 "./util/configparser.y" + case 469: /* server_add_holddown: VAR_ADD_HOLDDOWN STRING_ARG */ +#line 2090 "./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) @@ -5740,11 +5061,11 @@ yyreduce: else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5744 "util/configparser.c" +#line 5065 "util/configparser.c" break; - case 468: -#line 2097 "./util/configparser.y" + case 470: /* server_del_holddown: VAR_DEL_HOLDDOWN STRING_ARG */ +#line 2099 "./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) @@ -5752,11 +5073,11 @@ yyreduce: else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5756 "util/configparser.c" +#line 5077 "util/configparser.c" break; - case 469: -#line 2106 "./util/configparser.y" + case 471: /* server_keep_missing: VAR_KEEP_MISSING STRING_ARG */ +#line 2108 "./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) @@ -5764,11 +5085,11 @@ yyreduce: else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5768 "util/configparser.c" +#line 5089 "util/configparser.c" break; - case 470: -#line 2115 "./util/configparser.y" + case 472: /* server_permit_small_holddown: VAR_PERMIT_SMALL_HOLDDOWN STRING_ARG */ +#line 2117 "./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) @@ -5777,22 +5098,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5781 "util/configparser.c" +#line 5102 "util/configparser.c" break; - case 471: -#line 2124 "./util/configparser.y" + case 473: /* server_key_cache_size: VAR_KEY_CACHE_SIZE STRING_ARG */ +#line 2126 "./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 5792 "util/configparser.c" +#line 5113 "util/configparser.c" break; - case 472: -#line 2132 "./util/configparser.y" + case 474: /* server_key_cache_slabs: VAR_KEY_CACHE_SLABS STRING_ARG */ +#line 2134 "./util/configparser.y" { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -5804,22 +5125,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5808 "util/configparser.c" +#line 5129 "util/configparser.c" break; - case 473: -#line 2145 "./util/configparser.y" + case 475: /* server_neg_cache_size: VAR_NEG_CACHE_SIZE STRING_ARG */ +#line 2147 "./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 5819 "util/configparser.c" +#line 5140 "util/configparser.c" break; - case 474: -#line 2153 "./util/configparser.y" + case 476: /* server_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */ +#line 2155 "./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 && @@ -5863,21 +5184,21 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5867 "util/configparser.c" +#line 5188 "util/configparser.c" break; - case 475: -#line 2198 "./util/configparser.y" + case 477: /* server_local_data: VAR_LOCAL_DATA STRING_ARG */ +#line 2200 "./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 5877 "util/configparser.c" +#line 5198 "util/configparser.c" break; - case 476: -#line 2205 "./util/configparser.y" + case 478: /* server_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ +#line 2207 "./util/configparser.y" { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -5891,11 +5212,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5895 "util/configparser.c" +#line 5216 "util/configparser.c" break; - case 477: -#line 2220 "./util/configparser.y" + case 479: /* server_minimal_responses: VAR_MINIMAL_RESPONSES STRING_ARG */ +#line 2222 "./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) @@ -5904,11 +5225,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5908 "util/configparser.c" +#line 5229 "util/configparser.c" break; - case 478: -#line 2230 "./util/configparser.y" + case 480: /* server_rrset_roundrobin: VAR_RRSET_ROUNDROBIN STRING_ARG */ +#line 2232 "./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) @@ -5917,41 +5238,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5921 "util/configparser.c" +#line 5242 "util/configparser.c" break; - case 479: -#line 2240 "./util/configparser.y" + case 481: /* server_unknown_server_time_limit: VAR_UNKNOWN_SERVER_TIME_LIMIT STRING_ARG */ +#line 2242 "./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 5931 "util/configparser.c" +#line 5252 "util/configparser.c" break; - case 480: -#line 2247 "./util/configparser.y" + case 482: /* server_max_udp_size: VAR_MAX_UDP_SIZE STRING_ARG */ +#line 2249 "./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 5941 "util/configparser.c" +#line 5262 "util/configparser.c" break; - case 481: -#line 2254 "./util/configparser.y" + case 483: /* server_dns64_prefix: VAR_DNS64_PREFIX STRING_ARG */ +#line 2256 "./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 5951 "util/configparser.c" +#line 5272 "util/configparser.c" break; - case 482: -#line 2261 "./util/configparser.y" + case 484: /* server_dns64_synthall: VAR_DNS64_SYNTHALL STRING_ARG */ +#line 2263 "./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) @@ -5959,22 +5280,22 @@ yyreduce: else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5963 "util/configparser.c" +#line 5284 "util/configparser.c" break; - case 483: -#line 2270 "./util/configparser.y" + case 485: /* server_dns64_ignore_aaaa: VAR_DNS64_IGNORE_AAAA STRING_ARG */ +#line 2272 "./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 5974 "util/configparser.c" +#line 5295 "util/configparser.c" break; - case 484: -#line 2278 "./util/configparser.y" + case 486: /* server_define_tag: VAR_DEFINE_TAG STRING_ARG */ +#line 2280 "./util/configparser.y" { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); @@ -5987,11 +5308,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5991 "util/configparser.c" +#line 5312 "util/configparser.c" break; - case 485: -#line 2292 "./util/configparser.y" + case 487: /* server_local_zone_tag: VAR_LOCAL_ZONE_TAG STRING_ARG STRING_ARG */ +#line 2294 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -6011,11 +5332,11 @@ yyreduce: } } } -#line 6015 "util/configparser.c" +#line 5336 "util/configparser.c" break; - case 486: -#line 2313 "./util/configparser.y" + case 488: /* server_access_control_tag: VAR_ACCESS_CONTROL_TAG STRING_ARG STRING_ARG */ +#line 2315 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -6035,11 +5356,11 @@ yyreduce: } } } -#line 6039 "util/configparser.c" +#line 5360 "util/configparser.c" break; - case 487: -#line 2334 "./util/configparser.y" + case 489: /* server_access_control_tag_action: VAR_ACCESS_CONTROL_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG */ +#line 2336 "./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, @@ -6050,11 +5371,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 6054 "util/configparser.c" +#line 5375 "util/configparser.c" break; - case 488: -#line 2346 "./util/configparser.y" + case 490: /* server_access_control_tag_data: VAR_ACCESS_CONTROL_TAG_DATA STRING_ARG STRING_ARG STRING_ARG */ +#line 2348 "./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, @@ -6065,11 +5386,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 6069 "util/configparser.c" +#line 5390 "util/configparser.c" break; - case 489: -#line 2358 "./util/configparser.y" + case 491: /* server_local_zone_override: VAR_LOCAL_ZONE_OVERRIDE STRING_ARG STRING_ARG STRING_ARG */ +#line 2360 "./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, @@ -6080,11 +5401,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 6084 "util/configparser.c" +#line 5405 "util/configparser.c" break; - case 490: -#line 2370 "./util/configparser.y" + case 492: /* server_access_control_view: VAR_ACCESS_CONTROL_VIEW STRING_ARG STRING_ARG */ +#line 2372 "./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, @@ -6092,11 +5413,11 @@ yyreduce: yyerror("out of memory"); } } -#line 6096 "util/configparser.c" +#line 5417 "util/configparser.c" break; - case 491: -#line 2379 "./util/configparser.y" + case 493: /* server_response_ip_tag: VAR_RESPONSE_IP_TAG STRING_ARG STRING_ARG */ +#line 2381 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -6116,11 +5437,11 @@ yyreduce: } } } -#line 6120 "util/configparser.c" +#line 5441 "util/configparser.c" break; - case 492: -#line 2400 "./util/configparser.y" + case 494: /* server_ip_ratelimit: VAR_IP_RATELIMIT STRING_ARG */ +#line 2402 "./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) @@ -6128,11 +5449,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6132 "util/configparser.c" +#line 5453 "util/configparser.c" break; - case 493: -#line 2409 "./util/configparser.y" + case 495: /* server_ratelimit: VAR_RATELIMIT STRING_ARG */ +#line 2411 "./util/configparser.y" { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -6140,33 +5461,33 @@ yyreduce: else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6144 "util/configparser.c" +#line 5465 "util/configparser.c" break; - case 494: -#line 2418 "./util/configparser.y" + case 496: /* server_ip_ratelimit_size: VAR_IP_RATELIMIT_SIZE STRING_ARG */ +#line 2420 "./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 6155 "util/configparser.c" +#line 5476 "util/configparser.c" break; - case 495: -#line 2426 "./util/configparser.y" + case 497: /* server_ratelimit_size: VAR_RATELIMIT_SIZE STRING_ARG */ +#line 2428 "./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 6166 "util/configparser.c" +#line 5487 "util/configparser.c" break; - case 496: -#line 2434 "./util/configparser.y" + case 498: /* server_ip_ratelimit_slabs: VAR_IP_RATELIMIT_SLABS STRING_ARG */ +#line 2436 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -6178,11 +5499,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6182 "util/configparser.c" +#line 5503 "util/configparser.c" break; - case 497: -#line 2447 "./util/configparser.y" + case 499: /* server_ratelimit_slabs: VAR_RATELIMIT_SLABS STRING_ARG */ +#line 2449 "./util/configparser.y" { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -6194,11 +5515,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6198 "util/configparser.c" +#line 5519 "util/configparser.c" break; - case 498: -#line 2460 "./util/configparser.y" + case 500: /* server_ratelimit_for_domain: VAR_RATELIMIT_FOR_DOMAIN STRING_ARG STRING_ARG */ +#line 2462 "./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) { @@ -6212,11 +5533,11 @@ yyreduce: "ratelimit-for-domain"); } } -#line 6216 "util/configparser.c" +#line 5537 "util/configparser.c" break; - case 499: -#line 2475 "./util/configparser.y" + case 501: /* server_ratelimit_below_domain: VAR_RATELIMIT_BELOW_DOMAIN STRING_ARG STRING_ARG */ +#line 2477 "./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) { @@ -6230,11 +5551,11 @@ yyreduce: "ratelimit-below-domain"); } } -#line 6234 "util/configparser.c" +#line 5555 "util/configparser.c" break; - case 500: -#line 2490 "./util/configparser.y" + case 502: /* server_ip_ratelimit_factor: VAR_IP_RATELIMIT_FACTOR STRING_ARG */ +#line 2492 "./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) @@ -6242,11 +5563,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6246 "util/configparser.c" +#line 5567 "util/configparser.c" break; - case 501: -#line 2499 "./util/configparser.y" + case 503: /* server_ratelimit_factor: VAR_RATELIMIT_FACTOR STRING_ARG */ +#line 2501 "./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) @@ -6254,11 +5575,37 @@ yyreduce: else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6258 "util/configparser.c" +#line 5579 "util/configparser.c" break; - case 502: -#line 2508 "./util/configparser.y" + case 504: /* server_ip_ratelimit_backoff: VAR_IP_RATELIMIT_BACKOFF STRING_ARG */ +#line 2510 "./util/configparser.y" + { + OUTYY(("P(server_ip_ratelimit_backoff:%s)\n", (yyvsp[0].str))); + if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->ip_ratelimit_backoff = + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); + } +#line 5592 "util/configparser.c" + break; + + case 505: /* server_ratelimit_backoff: VAR_RATELIMIT_BACKOFF STRING_ARG */ +#line 2520 "./util/configparser.y" + { + OUTYY(("P(server_ratelimit_backoff:%s)\n", (yyvsp[0].str))); + if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->ratelimit_backoff = + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); + } +#line 5605 "util/configparser.c" + break; + + case 506: /* server_outbound_msg_retry: VAR_OUTBOUND_MSG_RETRY STRING_ARG */ +#line 2530 "./util/configparser.y" { OUTYY(("P(server_outbound_msg_retry:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -6266,20 +5613,20 @@ yyreduce: else cfg_parser->cfg->outbound_msg_retry = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6270 "util/configparser.c" +#line 5617 "util/configparser.c" break; - case 503: -#line 2517 "./util/configparser.y" + case 507: /* server_low_rtt: VAR_LOW_RTT STRING_ARG */ +#line 2539 "./util/configparser.y" { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 6279 "util/configparser.c" +#line 5626 "util/configparser.c" break; - case 504: -#line 2523 "./util/configparser.y" + case 508: /* server_fast_server_num: VAR_FAST_SERVER_NUM STRING_ARG */ +#line 2545 "./util/configparser.y" { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) <= 0) @@ -6287,11 +5634,11 @@ yyreduce: else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6291 "util/configparser.c" +#line 5638 "util/configparser.c" break; - case 505: -#line 2532 "./util/configparser.y" + case 509: /* server_fast_server_permil: VAR_FAST_SERVER_PERMIL STRING_ARG */ +#line 2554 "./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) @@ -6299,11 +5646,11 @@ yyreduce: else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6303 "util/configparser.c" +#line 5650 "util/configparser.c" break; - case 506: -#line 2541 "./util/configparser.y" + case 510: /* server_qname_minimisation: VAR_QNAME_MINIMISATION STRING_ARG */ +#line 2563 "./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) @@ -6312,11 +5659,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6316 "util/configparser.c" +#line 5663 "util/configparser.c" break; - case 507: -#line 2551 "./util/configparser.y" + case 511: /* server_qname_minimisation_strict: VAR_QNAME_MINIMISATION_STRICT STRING_ARG */ +#line 2573 "./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) @@ -6325,11 +5672,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6329 "util/configparser.c" +#line 5676 "util/configparser.c" break; - case 508: -#line 2561 "./util/configparser.y" + case 512: /* server_pad_responses: VAR_PAD_RESPONSES STRING_ARG */ +#line 2583 "./util/configparser.y" { OUTYY(("P(server_pad_responses:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6338,11 +5685,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6342 "util/configparser.c" +#line 5689 "util/configparser.c" break; - case 509: -#line 2571 "./util/configparser.y" + case 513: /* server_pad_responses_block_size: VAR_PAD_RESPONSES_BLOCK_SIZE STRING_ARG */ +#line 2593 "./util/configparser.y" { OUTYY(("P(server_pad_responses_block_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6350,11 +5697,11 @@ yyreduce: else cfg_parser->cfg->pad_responses_block_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6354 "util/configparser.c" +#line 5701 "util/configparser.c" break; - case 510: -#line 2580 "./util/configparser.y" + case 514: /* server_pad_queries: VAR_PAD_QUERIES STRING_ARG */ +#line 2602 "./util/configparser.y" { OUTYY(("P(server_pad_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6363,11 +5710,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6367 "util/configparser.c" +#line 5714 "util/configparser.c" break; - case 511: -#line 2590 "./util/configparser.y" + case 515: /* server_pad_queries_block_size: VAR_PAD_QUERIES_BLOCK_SIZE STRING_ARG */ +#line 2612 "./util/configparser.y" { OUTYY(("P(server_pad_queries_block_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6375,11 +5722,11 @@ yyreduce: else cfg_parser->cfg->pad_queries_block_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6379 "util/configparser.c" +#line 5726 "util/configparser.c" break; - case 512: -#line 2599 "./util/configparser.y" + case 516: /* server_ipsecmod_enabled: VAR_IPSECMOD_ENABLED STRING_ARG */ +#line 2621 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); @@ -6391,11 +5738,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6395 "util/configparser.c" +#line 5742 "util/configparser.c" break; - case 513: -#line 2612 "./util/configparser.y" + case 517: /* server_ipsecmod_ignore_bogus: VAR_IPSECMOD_IGNORE_BOGUS STRING_ARG */ +#line 2634 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); @@ -6407,11 +5754,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6411 "util/configparser.c" +#line 5758 "util/configparser.c" break; - case 514: -#line 2625 "./util/configparser.y" + case 518: /* server_ipsecmod_hook: VAR_IPSECMOD_HOOK STRING_ARG */ +#line 2647 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); @@ -6422,11 +5769,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6426 "util/configparser.c" +#line 5773 "util/configparser.c" break; - case 515: -#line 2637 "./util/configparser.y" + case 519: /* server_ipsecmod_max_ttl: VAR_IPSECMOD_MAX_TTL STRING_ARG */ +#line 2659 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); @@ -6439,11 +5786,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6443 "util/configparser.c" +#line 5790 "util/configparser.c" break; - case 516: -#line 2651 "./util/configparser.y" + case 520: /* server_ipsecmod_whitelist: VAR_IPSECMOD_WHITELIST STRING_ARG */ +#line 2673 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); @@ -6454,11 +5801,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6458 "util/configparser.c" +#line 5805 "util/configparser.c" break; - case 517: -#line 2663 "./util/configparser.y" + case 521: /* server_ipsecmod_strict: VAR_IPSECMOD_STRICT STRING_ARG */ +#line 2685 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); @@ -6471,11 +5818,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6475 "util/configparser.c" +#line 5822 "util/configparser.c" break; - case 518: -#line 2677 "./util/configparser.y" + case 522: /* server_edns_client_string: VAR_EDNS_CLIENT_STRING STRING_ARG STRING_ARG */ +#line 2699 "./util/configparser.y" { OUTYY(("P(server_edns_client_string:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert( @@ -6483,11 +5830,11 @@ yyreduce: fatal_exit("out of memory adding " "edns-client-string"); } -#line 6487 "util/configparser.c" +#line 5834 "util/configparser.c" break; - case 519: -#line 2686 "./util/configparser.y" + case 523: /* server_edns_client_string_opcode: VAR_EDNS_CLIENT_STRING_OPCODE STRING_ARG */ +#line 2708 "./util/configparser.y" { OUTYY(("P(edns_client_string_opcode:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -6498,11 +5845,11 @@ yyreduce: free((yyvsp[0].str)); } -#line 6502 "util/configparser.c" +#line 5849 "util/configparser.c" break; - case 520: -#line 2698 "./util/configparser.y" + case 524: /* stub_name: VAR_NAME STRING_ARG */ +#line 2720 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) @@ -6511,31 +5858,31 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 6515 "util/configparser.c" +#line 5862 "util/configparser.c" break; - case 521: -#line 2708 "./util/configparser.y" + case 525: /* stub_host: VAR_STUB_HOST STRING_ARG */ +#line 2730 "./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 6525 "util/configparser.c" +#line 5872 "util/configparser.c" break; - case 522: -#line 2715 "./util/configparser.y" + case 526: /* stub_addr: VAR_STUB_ADDR STRING_ARG */ +#line 2737 "./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 6535 "util/configparser.c" +#line 5882 "util/configparser.c" break; - case 523: -#line 2722 "./util/configparser.y" + case 527: /* stub_first: VAR_STUB_FIRST STRING_ARG */ +#line 2744 "./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) @@ -6543,11 +5890,11 @@ yyreduce: else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6547 "util/configparser.c" +#line 5894 "util/configparser.c" break; - case 524: -#line 2731 "./util/configparser.y" + case 528: /* stub_no_cache: VAR_STUB_NO_CACHE STRING_ARG */ +#line 2753 "./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) @@ -6555,11 +5902,11 @@ yyreduce: else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6559 "util/configparser.c" +#line 5906 "util/configparser.c" break; - case 525: -#line 2740 "./util/configparser.y" + case 529: /* stub_ssl_upstream: VAR_STUB_SSL_UPSTREAM STRING_ARG */ +#line 2762 "./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) @@ -6568,11 +5915,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6572 "util/configparser.c" +#line 5919 "util/configparser.c" break; - case 526: -#line 2750 "./util/configparser.y" + case 530: /* stub_tcp_upstream: VAR_STUB_TCP_UPSTREAM STRING_ARG */ +#line 2772 "./util/configparser.y" { OUTYY(("P(stub-tcp-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6581,11 +5928,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6585 "util/configparser.c" +#line 5932 "util/configparser.c" break; - case 527: -#line 2760 "./util/configparser.y" + case 531: /* stub_prime: VAR_STUB_PRIME STRING_ARG */ +#line 2782 "./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) @@ -6594,11 +5941,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6598 "util/configparser.c" +#line 5945 "util/configparser.c" break; - case 528: -#line 2770 "./util/configparser.y" + case 532: /* forward_name: VAR_NAME STRING_ARG */ +#line 2792 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) @@ -6607,31 +5954,31 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 6611 "util/configparser.c" +#line 5958 "util/configparser.c" break; - case 529: -#line 2780 "./util/configparser.y" + case 533: /* forward_host: VAR_FORWARD_HOST STRING_ARG */ +#line 2802 "./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 6621 "util/configparser.c" +#line 5968 "util/configparser.c" break; - case 530: -#line 2787 "./util/configparser.y" + case 534: /* forward_addr: VAR_FORWARD_ADDR STRING_ARG */ +#line 2809 "./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 6631 "util/configparser.c" +#line 5978 "util/configparser.c" break; - case 531: -#line 2794 "./util/configparser.y" + case 535: /* forward_first: VAR_FORWARD_FIRST STRING_ARG */ +#line 2816 "./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) @@ -6639,11 +5986,11 @@ yyreduce: else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6643 "util/configparser.c" +#line 5990 "util/configparser.c" break; - case 532: -#line 2803 "./util/configparser.y" + case 536: /* forward_no_cache: VAR_FORWARD_NO_CACHE STRING_ARG */ +#line 2825 "./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) @@ -6651,11 +5998,11 @@ yyreduce: else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6655 "util/configparser.c" +#line 6002 "util/configparser.c" break; - case 533: -#line 2812 "./util/configparser.y" + case 537: /* forward_ssl_upstream: VAR_FORWARD_SSL_UPSTREAM STRING_ARG */ +#line 2834 "./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) @@ -6664,11 +6011,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6668 "util/configparser.c" +#line 6015 "util/configparser.c" break; - case 534: -#line 2822 "./util/configparser.y" + case 538: /* forward_tcp_upstream: VAR_FORWARD_TCP_UPSTREAM STRING_ARG */ +#line 2844 "./util/configparser.y" { OUTYY(("P(forward-tcp-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6677,11 +6024,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6681 "util/configparser.c" +#line 6028 "util/configparser.c" break; - case 535: -#line 2832 "./util/configparser.y" + case 539: /* auth_name: VAR_NAME STRING_ARG */ +#line 2854 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) @@ -6690,52 +6037,52 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 6694 "util/configparser.c" +#line 6041 "util/configparser.c" break; - case 536: -#line 2842 "./util/configparser.y" + case 540: /* auth_zonefile: VAR_ZONEFILE STRING_ARG */ +#line 2864 "./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 6704 "util/configparser.c" +#line 6051 "util/configparser.c" break; - case 537: -#line 2849 "./util/configparser.y" + case 541: /* auth_master: VAR_MASTER STRING_ARG */ +#line 2871 "./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 6714 "util/configparser.c" +#line 6061 "util/configparser.c" break; - case 538: -#line 2856 "./util/configparser.y" + case 542: /* auth_url: VAR_URL STRING_ARG */ +#line 2878 "./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 6724 "util/configparser.c" +#line 6071 "util/configparser.c" break; - case 539: -#line 2863 "./util/configparser.y" + case 543: /* auth_allow_notify: VAR_ALLOW_NOTIFY STRING_ARG */ +#line 2885 "./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 6735 "util/configparser.c" +#line 6082 "util/configparser.c" break; - case 540: -#line 2871 "./util/configparser.y" + case 544: /* auth_zonemd_check: VAR_ZONEMD_CHECK STRING_ARG */ +#line 2893 "./util/configparser.y" { OUTYY(("P(zonemd-check:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6744,11 +6091,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6748 "util/configparser.c" +#line 6095 "util/configparser.c" break; - case 541: -#line 2881 "./util/configparser.y" + case 545: /* auth_zonemd_reject_absence: VAR_ZONEMD_REJECT_ABSENCE STRING_ARG */ +#line 2903 "./util/configparser.y" { OUTYY(("P(zonemd-reject-absence:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6757,11 +6104,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6761 "util/configparser.c" +#line 6108 "util/configparser.c" break; - case 542: -#line 2891 "./util/configparser.y" + case 546: /* auth_for_downstream: VAR_FOR_DOWNSTREAM STRING_ARG */ +#line 2913 "./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) @@ -6770,11 +6117,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6774 "util/configparser.c" +#line 6121 "util/configparser.c" break; - case 543: -#line 2901 "./util/configparser.y" + case 547: /* auth_for_upstream: VAR_FOR_UPSTREAM STRING_ARG */ +#line 2923 "./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) @@ -6783,11 +6130,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6787 "util/configparser.c" +#line 6134 "util/configparser.c" break; - case 544: -#line 2911 "./util/configparser.y" + case 548: /* auth_fallback_enabled: VAR_FALLBACK_ENABLED STRING_ARG */ +#line 2933 "./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) @@ -6796,11 +6143,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6800 "util/configparser.c" +#line 6147 "util/configparser.c" break; - case 545: -#line 2921 "./util/configparser.y" + case 549: /* view_name: VAR_NAME STRING_ARG */ +#line 2943 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) @@ -6809,11 +6156,11 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 6813 "util/configparser.c" +#line 6160 "util/configparser.c" break; - case 546: -#line 2931 "./util/configparser.y" + case 550: /* view_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */ +#line 2953 "./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 && @@ -6858,11 +6205,11 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 6862 "util/configparser.c" +#line 6209 "util/configparser.c" break; - case 547: -#line 2977 "./util/configparser.y" + case 551: /* view_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ +#line 2999 "./util/configparser.y" { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -6871,33 +6218,33 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 6875 "util/configparser.c" +#line 6222 "util/configparser.c" break; - case 548: -#line 2987 "./util/configparser.y" + case 552: /* view_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ +#line 3009 "./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 6886 "util/configparser.c" +#line 6233 "util/configparser.c" break; - case 549: -#line 2995 "./util/configparser.y" + case 553: /* view_local_data: VAR_LOCAL_DATA STRING_ARG */ +#line 3017 "./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 6897 "util/configparser.c" +#line 6244 "util/configparser.c" break; - case 550: -#line 3003 "./util/configparser.y" + case 554: /* view_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ +#line 3025 "./util/configparser.y" { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -6911,11 +6258,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 6915 "util/configparser.c" +#line 6262 "util/configparser.c" break; - case 551: -#line 3018 "./util/configparser.y" + case 555: /* view_first: VAR_VIEW_FIRST STRING_ARG */ +#line 3040 "./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) @@ -6923,19 +6270,19 @@ yyreduce: else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6927 "util/configparser.c" +#line 6274 "util/configparser.c" break; - case 552: -#line 3027 "./util/configparser.y" + case 556: /* rcstart: VAR_REMOTE_CONTROL */ +#line 3049 "./util/configparser.y" { OUTYY(("\nP(remote-control:)\n")); } -#line 6935 "util/configparser.c" +#line 6282 "util/configparser.c" break; - case 563: -#line 3038 "./util/configparser.y" + case 567: /* rc_control_enable: VAR_CONTROL_ENABLE STRING_ARG */ +#line 3060 "./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) @@ -6944,11 +6291,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6948 "util/configparser.c" +#line 6295 "util/configparser.c" break; - case 564: -#line 3048 "./util/configparser.y" + case 568: /* rc_control_port: VAR_CONTROL_PORT STRING_ARG */ +#line 3070 "./util/configparser.y" { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6956,79 +6303,79 @@ yyreduce: else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6960 "util/configparser.c" +#line 6307 "util/configparser.c" break; - case 565: -#line 3057 "./util/configparser.y" + case 569: /* rc_control_interface: VAR_CONTROL_INTERFACE STRING_ARG */ +#line 3079 "./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 6970 "util/configparser.c" +#line 6317 "util/configparser.c" break; - case 566: -#line 3064 "./util/configparser.y" + case 570: /* rc_control_use_cert: VAR_CONTROL_USE_CERT STRING_ARG */ +#line 3086 "./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 6980 "util/configparser.c" +#line 6327 "util/configparser.c" break; - case 567: -#line 3071 "./util/configparser.y" + case 571: /* rc_server_key_file: VAR_SERVER_KEY_FILE STRING_ARG */ +#line 3093 "./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 6990 "util/configparser.c" +#line 6337 "util/configparser.c" break; - case 568: -#line 3078 "./util/configparser.y" + case 572: /* rc_server_cert_file: VAR_SERVER_CERT_FILE STRING_ARG */ +#line 3100 "./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 7000 "util/configparser.c" +#line 6347 "util/configparser.c" break; - case 569: -#line 3085 "./util/configparser.y" + case 573: /* rc_control_key_file: VAR_CONTROL_KEY_FILE STRING_ARG */ +#line 3107 "./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 7010 "util/configparser.c" +#line 6357 "util/configparser.c" break; - case 570: -#line 3092 "./util/configparser.y" + case 574: /* rc_control_cert_file: VAR_CONTROL_CERT_FILE STRING_ARG */ +#line 3114 "./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 7020 "util/configparser.c" +#line 6367 "util/configparser.c" break; - case 571: -#line 3099 "./util/configparser.y" + case 575: /* dtstart: VAR_DNSTAP */ +#line 3121 "./util/configparser.y" { OUTYY(("\nP(dnstap:)\n")); } -#line 7028 "util/configparser.c" +#line 6375 "util/configparser.c" break; - case 593: -#line 3119 "./util/configparser.y" + case 597: /* dt_dnstap_enable: VAR_DNSTAP_ENABLE STRING_ARG */ +#line 3141 "./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) @@ -7036,11 +6383,11 @@ yyreduce: else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7040 "util/configparser.c" +#line 6387 "util/configparser.c" break; - case 594: -#line 3128 "./util/configparser.y" + case 598: /* dt_dnstap_bidirectional: VAR_DNSTAP_BIDIRECTIONAL STRING_ARG */ +#line 3150 "./util/configparser.y" { OUTYY(("P(dt_dnstap_bidirectional:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -7049,31 +6396,31 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7053 "util/configparser.c" +#line 6400 "util/configparser.c" break; - case 595: -#line 3138 "./util/configparser.y" + case 599: /* dt_dnstap_socket_path: VAR_DNSTAP_SOCKET_PATH STRING_ARG */ +#line 3160 "./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 7063 "util/configparser.c" +#line 6410 "util/configparser.c" break; - case 596: -#line 3145 "./util/configparser.y" + case 600: /* dt_dnstap_ip: VAR_DNSTAP_IP STRING_ARG */ +#line 3167 "./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 7073 "util/configparser.c" +#line 6420 "util/configparser.c" break; - case 597: -#line 3152 "./util/configparser.y" + case 601: /* dt_dnstap_tls: VAR_DNSTAP_TLS STRING_ARG */ +#line 3174 "./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) @@ -7081,51 +6428,51 @@ yyreduce: else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7085 "util/configparser.c" +#line 6432 "util/configparser.c" break; - case 598: -#line 3161 "./util/configparser.y" + case 602: /* dt_dnstap_tls_server_name: VAR_DNSTAP_TLS_SERVER_NAME STRING_ARG */ +#line 3183 "./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 7095 "util/configparser.c" +#line 6442 "util/configparser.c" break; - case 599: -#line 3168 "./util/configparser.y" + case 603: /* dt_dnstap_tls_cert_bundle: VAR_DNSTAP_TLS_CERT_BUNDLE STRING_ARG */ +#line 3190 "./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 7105 "util/configparser.c" +#line 6452 "util/configparser.c" break; - case 600: -#line 3175 "./util/configparser.y" + case 604: /* dt_dnstap_tls_client_key_file: VAR_DNSTAP_TLS_CLIENT_KEY_FILE STRING_ARG */ +#line 3197 "./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 7115 "util/configparser.c" +#line 6462 "util/configparser.c" break; - case 601: -#line 3182 "./util/configparser.y" + case 605: /* dt_dnstap_tls_client_cert_file: VAR_DNSTAP_TLS_CLIENT_CERT_FILE STRING_ARG */ +#line 3204 "./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 7125 "util/configparser.c" +#line 6472 "util/configparser.c" break; - case 602: -#line 3189 "./util/configparser.y" + case 606: /* dt_dnstap_send_identity: VAR_DNSTAP_SEND_IDENTITY STRING_ARG */ +#line 3211 "./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) @@ -7133,11 +6480,11 @@ yyreduce: else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7137 "util/configparser.c" +#line 6484 "util/configparser.c" break; - case 603: -#line 3198 "./util/configparser.y" + case 607: /* dt_dnstap_send_version: VAR_DNSTAP_SEND_VERSION STRING_ARG */ +#line 3220 "./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) @@ -7145,31 +6492,31 @@ yyreduce: else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7149 "util/configparser.c" +#line 6496 "util/configparser.c" break; - case 604: -#line 3207 "./util/configparser.y" + case 608: /* dt_dnstap_identity: VAR_DNSTAP_IDENTITY STRING_ARG */ +#line 3229 "./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 7159 "util/configparser.c" +#line 6506 "util/configparser.c" break; - case 605: -#line 3214 "./util/configparser.y" + case 609: /* dt_dnstap_version: VAR_DNSTAP_VERSION STRING_ARG */ +#line 3236 "./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 7169 "util/configparser.c" +#line 6516 "util/configparser.c" break; - case 606: -#line 3221 "./util/configparser.y" + case 610: /* dt_dnstap_log_resolver_query_messages: VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES STRING_ARG */ +#line 3243 "./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) @@ -7178,11 +6525,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7182 "util/configparser.c" +#line 6529 "util/configparser.c" break; - case 607: -#line 3231 "./util/configparser.y" + case 611: /* dt_dnstap_log_resolver_response_messages: VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES STRING_ARG */ +#line 3253 "./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) @@ -7191,11 +6538,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7195 "util/configparser.c" +#line 6542 "util/configparser.c" break; - case 608: -#line 3241 "./util/configparser.y" + case 612: /* dt_dnstap_log_client_query_messages: VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES STRING_ARG */ +#line 3263 "./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) @@ -7204,11 +6551,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7208 "util/configparser.c" +#line 6555 "util/configparser.c" break; - case 609: -#line 3251 "./util/configparser.y" + case 613: /* dt_dnstap_log_client_response_messages: VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES STRING_ARG */ +#line 3273 "./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) @@ -7217,11 +6564,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7221 "util/configparser.c" +#line 6568 "util/configparser.c" break; - case 610: -#line 3261 "./util/configparser.y" + case 614: /* dt_dnstap_log_forwarder_query_messages: VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES STRING_ARG */ +#line 3283 "./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) @@ -7230,11 +6577,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7234 "util/configparser.c" +#line 6581 "util/configparser.c" break; - case 611: -#line 3271 "./util/configparser.y" + case 615: /* dt_dnstap_log_forwarder_response_messages: VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES STRING_ARG */ +#line 3293 "./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) @@ -7243,47 +6590,47 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7247 "util/configparser.c" +#line 6594 "util/configparser.c" break; - case 612: -#line 3281 "./util/configparser.y" + case 616: /* pythonstart: VAR_PYTHON */ +#line 3303 "./util/configparser.y" { OUTYY(("\nP(python:)\n")); } -#line 7255 "util/configparser.c" +#line 6602 "util/configparser.c" break; - case 616: -#line 3290 "./util/configparser.y" + case 620: /* py_script: VAR_PYTHON_SCRIPT STRING_ARG */ +#line 3312 "./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 7265 "util/configparser.c" +#line 6612 "util/configparser.c" break; - case 617: -#line 3296 "./util/configparser.y" + case 621: /* dynlibstart: VAR_DYNLIB */ +#line 3318 "./util/configparser.y" { OUTYY(("\nP(dynlib:)\n")); } -#line 7273 "util/configparser.c" +#line 6620 "util/configparser.c" break; - case 621: -#line 3305 "./util/configparser.y" + case 625: /* dl_file: VAR_DYNLIB_FILE STRING_ARG */ +#line 3327 "./util/configparser.y" { OUTYY(("P(dynlib-file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, (yyvsp[0].str))) yyerror("out of memory"); } -#line 7283 "util/configparser.c" +#line 6630 "util/configparser.c" break; - case 622: -#line 3311 "./util/configparser.y" + case 626: /* server_disable_dnssec_lame_check: VAR_DISABLE_DNSSEC_LAME_CHECK STRING_ARG */ +#line 3333 "./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) @@ -7292,21 +6639,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7296 "util/configparser.c" +#line 6643 "util/configparser.c" break; - case 623: -#line 3321 "./util/configparser.y" + case 627: /* server_log_identity: VAR_LOG_IDENTITY STRING_ARG */ +#line 3343 "./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 7306 "util/configparser.c" +#line 6653 "util/configparser.c" break; - case 624: -#line 3328 "./util/configparser.y" + case 628: /* server_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ +#line 3350 "./util/configparser.y" { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -7314,30 +6661,30 @@ yyreduce: (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 7318 "util/configparser.c" +#line 6665 "util/configparser.c" break; - case 625: -#line 3337 "./util/configparser.y" + case 629: /* server_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ +#line 3359 "./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 7329 "util/configparser.c" +#line 6676 "util/configparser.c" break; - case 626: -#line 3345 "./util/configparser.y" + case 630: /* dnscstart: VAR_DNSCRYPT */ +#line 3367 "./util/configparser.y" { OUTYY(("\nP(dnscrypt:)\n")); } -#line 7337 "util/configparser.c" +#line 6684 "util/configparser.c" break; - case 639: -#line 3361 "./util/configparser.y" + case 643: /* dnsc_dnscrypt_enable: VAR_DNSCRYPT_ENABLE STRING_ARG */ +#line 3383 "./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) @@ -7345,11 +6692,11 @@ yyreduce: else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7349 "util/configparser.c" +#line 6696 "util/configparser.c" break; - case 640: -#line 3371 "./util/configparser.y" + case 644: /* dnsc_dnscrypt_port: VAR_DNSCRYPT_PORT STRING_ARG */ +#line 3393 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -7357,21 +6704,21 @@ yyreduce: else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 7361 "util/configparser.c" +#line 6708 "util/configparser.c" break; - case 641: -#line 3380 "./util/configparser.y" + case 645: /* dnsc_dnscrypt_provider: VAR_DNSCRYPT_PROVIDER STRING_ARG */ +#line 3402 "./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 7371 "util/configparser.c" +#line 6718 "util/configparser.c" break; - case 642: -#line 3387 "./util/configparser.y" + case 646: /* dnsc_dnscrypt_provider_cert: VAR_DNSCRYPT_PROVIDER_CERT STRING_ARG */ +#line 3409 "./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))) @@ -7379,21 +6726,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 7383 "util/configparser.c" +#line 6730 "util/configparser.c" break; - case 643: -#line 3396 "./util/configparser.y" + case 647: /* dnsc_dnscrypt_provider_cert_rotated: VAR_DNSCRYPT_PROVIDER_CERT_ROTATED STRING_ARG */ +#line 3418 "./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 7393 "util/configparser.c" +#line 6740 "util/configparser.c" break; - case 644: -#line 3403 "./util/configparser.y" + case 648: /* dnsc_dnscrypt_secret_key: VAR_DNSCRYPT_SECRET_KEY STRING_ARG */ +#line 3425 "./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))) @@ -7401,22 +6748,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 7405 "util/configparser.c" +#line 6752 "util/configparser.c" break; - case 645: -#line 3412 "./util/configparser.y" + case 649: /* dnsc_dnscrypt_shared_secret_cache_size: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE STRING_ARG */ +#line 3434 "./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 7416 "util/configparser.c" +#line 6763 "util/configparser.c" break; - case 646: -#line 3420 "./util/configparser.y" + case 650: /* dnsc_dnscrypt_shared_secret_cache_slabs: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS STRING_ARG */ +#line 3442 "./util/configparser.y" { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -7428,22 +6775,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 7432 "util/configparser.c" +#line 6779 "util/configparser.c" break; - case 647: -#line 3433 "./util/configparser.y" + case 651: /* dnsc_dnscrypt_nonce_cache_size: VAR_DNSCRYPT_NONCE_CACHE_SIZE STRING_ARG */ +#line 3455 "./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 7443 "util/configparser.c" +#line 6790 "util/configparser.c" break; - case 648: -#line 3441 "./util/configparser.y" + case 652: /* dnsc_dnscrypt_nonce_cache_slabs: VAR_DNSCRYPT_NONCE_CACHE_SLABS STRING_ARG */ +#line 3463 "./util/configparser.y" { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -7455,19 +6802,19 @@ yyreduce: } free((yyvsp[0].str)); } -#line 7459 "util/configparser.c" +#line 6806 "util/configparser.c" break; - case 649: -#line 3454 "./util/configparser.y" + case 653: /* cachedbstart: VAR_CACHEDB */ +#line 3476 "./util/configparser.y" { OUTYY(("\nP(cachedb:)\n")); } -#line 7467 "util/configparser.c" +#line 6814 "util/configparser.c" break; - case 658: -#line 3465 "./util/configparser.y" + case 662: /* cachedb_backend_name: VAR_CACHEDB_BACKEND STRING_ARG */ +#line 3487 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); @@ -7478,11 +6825,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7482 "util/configparser.c" +#line 6829 "util/configparser.c" break; - case 659: -#line 3477 "./util/configparser.y" + case 663: /* cachedb_secret_seed: VAR_CACHEDB_SECRETSEED STRING_ARG */ +#line 3499 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); @@ -7493,11 +6840,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7497 "util/configparser.c" +#line 6844 "util/configparser.c" break; - case 660: -#line 3489 "./util/configparser.y" + case 664: /* redis_server_host: VAR_CACHEDB_REDISHOST STRING_ARG */ +#line 3511 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); @@ -7508,11 +6855,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7512 "util/configparser.c" +#line 6859 "util/configparser.c" break; - case 661: -#line 3501 "./util/configparser.y" + case 665: /* redis_server_port: VAR_CACHEDB_REDISPORT STRING_ARG */ +#line 3523 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; @@ -7526,11 +6873,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 7530 "util/configparser.c" +#line 6877 "util/configparser.c" break; - case 662: -#line 3516 "./util/configparser.y" + case 666: /* redis_timeout: VAR_CACHEDB_REDISTIMEOUT STRING_ARG */ +#line 3538 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); @@ -7542,11 +6889,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 7546 "util/configparser.c" +#line 6893 "util/configparser.c" break; - case 663: -#line 3529 "./util/configparser.y" + case 667: /* redis_expire_records: VAR_CACHEDB_REDISEXPIRERECORDS STRING_ARG */ +#line 3551 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str))); @@ -7558,11 +6905,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 7562 "util/configparser.c" +#line 6909 "util/configparser.c" break; - case 664: -#line 3542 "./util/configparser.y" + case 668: /* server_tcp_connection_limit: VAR_TCP_CONNECTION_LIMIT STRING_ARG STRING_ARG */ +#line 3564 "./util/configparser.y" { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) @@ -7572,19 +6919,19 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 7576 "util/configparser.c" +#line 6923 "util/configparser.c" break; - case 665: -#line 3553 "./util/configparser.y" + case 669: /* ipsetstart: VAR_IPSET */ +#line 3575 "./util/configparser.y" { OUTYY(("\nP(ipset:)\n")); } -#line 7584 "util/configparser.c" +#line 6931 "util/configparser.c" break; - case 670: -#line 3562 "./util/configparser.y" + case 674: /* ipset_name_v4: VAR_IPSET_NAME_V4 STRING_ARG */ +#line 3584 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); @@ -7598,11 +6945,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7602 "util/configparser.c" +#line 6949 "util/configparser.c" break; - case 671: -#line 3577 "./util/configparser.y" + case 675: /* ipset_name_v6: VAR_IPSET_NAME_V6 STRING_ARG */ +#line 3599 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); @@ -7616,11 +6963,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7620 "util/configparser.c" +#line 6967 "util/configparser.c" break; -#line 7624 "util/configparser.c" +#line 6971 "util/configparser.c" default: break; } @@ -7780,13 +7127,13 @@ yyabortlab: yyexhaustedlab: yyerror (YY_("memory exhausted")); yyresult = 2; - /* Fall through. */ + goto yyreturn; #endif -/*-----------------------------------------------------. -| yyreturn -- parsing is finished, return the result. | -`-----------------------------------------------------*/ +/*-------------------------------------------------------. +| yyreturn -- parsing is finished, clean up and return. | +`-------------------------------------------------------*/ yyreturn: if (yychar != YYEMPTY) { @@ -7814,7 +7161,7 @@ yyreturn: return yyresult; } -#line 3591 "./util/configparser.y" +#line 3613 "./util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index bac7d08f9..d919cf29c 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.6.4. */ +/* A Bison parser, made by GNU Bison 3.7.6. */ /* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -16,7 +16,7 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program. If not, see . */ + 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 @@ -257,126 +257,129 @@ extern int yydebug; VAR_RATELIMIT_BELOW_DOMAIN = 458, /* VAR_RATELIMIT_BELOW_DOMAIN */ VAR_IP_RATELIMIT_FACTOR = 459, /* VAR_IP_RATELIMIT_FACTOR */ VAR_RATELIMIT_FACTOR = 460, /* VAR_RATELIMIT_FACTOR */ - VAR_SEND_CLIENT_SUBNET = 461, /* VAR_SEND_CLIENT_SUBNET */ - VAR_CLIENT_SUBNET_ZONE = 462, /* VAR_CLIENT_SUBNET_ZONE */ - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 463, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ - VAR_CLIENT_SUBNET_OPCODE = 464, /* VAR_CLIENT_SUBNET_OPCODE */ - VAR_MAX_CLIENT_SUBNET_IPV4 = 465, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ - VAR_MAX_CLIENT_SUBNET_IPV6 = 466, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ - VAR_MIN_CLIENT_SUBNET_IPV4 = 467, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ - VAR_MIN_CLIENT_SUBNET_IPV6 = 468, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ - VAR_MAX_ECS_TREE_SIZE_IPV4 = 469, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ - VAR_MAX_ECS_TREE_SIZE_IPV6 = 470, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ - VAR_CAPS_WHITELIST = 471, /* VAR_CAPS_WHITELIST */ - VAR_CACHE_MAX_NEGATIVE_TTL = 472, /* VAR_CACHE_MAX_NEGATIVE_TTL */ - VAR_PERMIT_SMALL_HOLDDOWN = 473, /* VAR_PERMIT_SMALL_HOLDDOWN */ - VAR_QNAME_MINIMISATION = 474, /* VAR_QNAME_MINIMISATION */ - VAR_QNAME_MINIMISATION_STRICT = 475, /* VAR_QNAME_MINIMISATION_STRICT */ - VAR_IP_FREEBIND = 476, /* VAR_IP_FREEBIND */ - VAR_DEFINE_TAG = 477, /* VAR_DEFINE_TAG */ - VAR_LOCAL_ZONE_TAG = 478, /* VAR_LOCAL_ZONE_TAG */ - VAR_ACCESS_CONTROL_TAG = 479, /* VAR_ACCESS_CONTROL_TAG */ - VAR_LOCAL_ZONE_OVERRIDE = 480, /* VAR_LOCAL_ZONE_OVERRIDE */ - VAR_ACCESS_CONTROL_TAG_ACTION = 481, /* VAR_ACCESS_CONTROL_TAG_ACTION */ - VAR_ACCESS_CONTROL_TAG_DATA = 482, /* VAR_ACCESS_CONTROL_TAG_DATA */ - VAR_VIEW = 483, /* VAR_VIEW */ - VAR_ACCESS_CONTROL_VIEW = 484, /* VAR_ACCESS_CONTROL_VIEW */ - VAR_VIEW_FIRST = 485, /* VAR_VIEW_FIRST */ - VAR_SERVE_EXPIRED = 486, /* VAR_SERVE_EXPIRED */ - VAR_SERVE_EXPIRED_TTL = 487, /* VAR_SERVE_EXPIRED_TTL */ - VAR_SERVE_EXPIRED_TTL_RESET = 488, /* VAR_SERVE_EXPIRED_TTL_RESET */ - VAR_SERVE_EXPIRED_REPLY_TTL = 489, /* VAR_SERVE_EXPIRED_REPLY_TTL */ - VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 490, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ - VAR_SERVE_ORIGINAL_TTL = 491, /* VAR_SERVE_ORIGINAL_TTL */ - VAR_FAKE_DSA = 492, /* VAR_FAKE_DSA */ - VAR_FAKE_SHA1 = 493, /* VAR_FAKE_SHA1 */ - VAR_LOG_IDENTITY = 494, /* VAR_LOG_IDENTITY */ - VAR_HIDE_TRUSTANCHOR = 495, /* VAR_HIDE_TRUSTANCHOR */ - VAR_HIDE_HTTP_USER_AGENT = 496, /* VAR_HIDE_HTTP_USER_AGENT */ - VAR_HTTP_USER_AGENT = 497, /* VAR_HTTP_USER_AGENT */ - VAR_TRUST_ANCHOR_SIGNALING = 498, /* VAR_TRUST_ANCHOR_SIGNALING */ - VAR_AGGRESSIVE_NSEC = 499, /* VAR_AGGRESSIVE_NSEC */ - VAR_USE_SYSTEMD = 500, /* VAR_USE_SYSTEMD */ - VAR_SHM_ENABLE = 501, /* VAR_SHM_ENABLE */ - VAR_SHM_KEY = 502, /* VAR_SHM_KEY */ - VAR_ROOT_KEY_SENTINEL = 503, /* VAR_ROOT_KEY_SENTINEL */ - VAR_DNSCRYPT = 504, /* VAR_DNSCRYPT */ - VAR_DNSCRYPT_ENABLE = 505, /* VAR_DNSCRYPT_ENABLE */ - VAR_DNSCRYPT_PORT = 506, /* VAR_DNSCRYPT_PORT */ - VAR_DNSCRYPT_PROVIDER = 507, /* VAR_DNSCRYPT_PROVIDER */ - VAR_DNSCRYPT_SECRET_KEY = 508, /* VAR_DNSCRYPT_SECRET_KEY */ - VAR_DNSCRYPT_PROVIDER_CERT = 509, /* VAR_DNSCRYPT_PROVIDER_CERT */ - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 510, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 511, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 512, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 513, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 514, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ - VAR_PAD_RESPONSES = 515, /* VAR_PAD_RESPONSES */ - VAR_PAD_RESPONSES_BLOCK_SIZE = 516, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ - VAR_PAD_QUERIES = 517, /* VAR_PAD_QUERIES */ - VAR_PAD_QUERIES_BLOCK_SIZE = 518, /* VAR_PAD_QUERIES_BLOCK_SIZE */ - VAR_IPSECMOD_ENABLED = 519, /* VAR_IPSECMOD_ENABLED */ - VAR_IPSECMOD_HOOK = 520, /* VAR_IPSECMOD_HOOK */ - VAR_IPSECMOD_IGNORE_BOGUS = 521, /* VAR_IPSECMOD_IGNORE_BOGUS */ - VAR_IPSECMOD_MAX_TTL = 522, /* VAR_IPSECMOD_MAX_TTL */ - VAR_IPSECMOD_WHITELIST = 523, /* VAR_IPSECMOD_WHITELIST */ - VAR_IPSECMOD_STRICT = 524, /* VAR_IPSECMOD_STRICT */ - VAR_CACHEDB = 525, /* VAR_CACHEDB */ - VAR_CACHEDB_BACKEND = 526, /* VAR_CACHEDB_BACKEND */ - VAR_CACHEDB_SECRETSEED = 527, /* VAR_CACHEDB_SECRETSEED */ - VAR_CACHEDB_REDISHOST = 528, /* VAR_CACHEDB_REDISHOST */ - VAR_CACHEDB_REDISPORT = 529, /* VAR_CACHEDB_REDISPORT */ - VAR_CACHEDB_REDISTIMEOUT = 530, /* VAR_CACHEDB_REDISTIMEOUT */ - VAR_CACHEDB_REDISEXPIRERECORDS = 531, /* VAR_CACHEDB_REDISEXPIRERECORDS */ - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 532, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ - VAR_FOR_UPSTREAM = 533, /* VAR_FOR_UPSTREAM */ - VAR_AUTH_ZONE = 534, /* VAR_AUTH_ZONE */ - VAR_ZONEFILE = 535, /* VAR_ZONEFILE */ - VAR_MASTER = 536, /* VAR_MASTER */ - VAR_URL = 537, /* VAR_URL */ - VAR_FOR_DOWNSTREAM = 538, /* VAR_FOR_DOWNSTREAM */ - VAR_FALLBACK_ENABLED = 539, /* VAR_FALLBACK_ENABLED */ - VAR_TLS_ADDITIONAL_PORT = 540, /* VAR_TLS_ADDITIONAL_PORT */ - VAR_LOW_RTT = 541, /* VAR_LOW_RTT */ - VAR_LOW_RTT_PERMIL = 542, /* VAR_LOW_RTT_PERMIL */ - VAR_FAST_SERVER_PERMIL = 543, /* VAR_FAST_SERVER_PERMIL */ - VAR_FAST_SERVER_NUM = 544, /* VAR_FAST_SERVER_NUM */ - VAR_ALLOW_NOTIFY = 545, /* VAR_ALLOW_NOTIFY */ - VAR_TLS_WIN_CERT = 546, /* VAR_TLS_WIN_CERT */ - VAR_TCP_CONNECTION_LIMIT = 547, /* VAR_TCP_CONNECTION_LIMIT */ - VAR_FORWARD_NO_CACHE = 548, /* VAR_FORWARD_NO_CACHE */ - VAR_STUB_NO_CACHE = 549, /* VAR_STUB_NO_CACHE */ - VAR_LOG_SERVFAIL = 550, /* VAR_LOG_SERVFAIL */ - VAR_DENY_ANY = 551, /* VAR_DENY_ANY */ - VAR_UNKNOWN_SERVER_TIME_LIMIT = 552, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ - VAR_LOG_TAG_QUERYREPLY = 553, /* VAR_LOG_TAG_QUERYREPLY */ - VAR_STREAM_WAIT_SIZE = 554, /* VAR_STREAM_WAIT_SIZE */ - VAR_TLS_CIPHERS = 555, /* VAR_TLS_CIPHERS */ - VAR_TLS_CIPHERSUITES = 556, /* VAR_TLS_CIPHERSUITES */ - VAR_TLS_USE_SNI = 557, /* VAR_TLS_USE_SNI */ - VAR_IPSET = 558, /* VAR_IPSET */ - VAR_IPSET_NAME_V4 = 559, /* VAR_IPSET_NAME_V4 */ - VAR_IPSET_NAME_V6 = 560, /* VAR_IPSET_NAME_V6 */ - VAR_TLS_SESSION_TICKET_KEYS = 561, /* VAR_TLS_SESSION_TICKET_KEYS */ - VAR_RPZ = 562, /* VAR_RPZ */ - VAR_TAGS = 563, /* VAR_TAGS */ - VAR_RPZ_ACTION_OVERRIDE = 564, /* VAR_RPZ_ACTION_OVERRIDE */ - VAR_RPZ_CNAME_OVERRIDE = 565, /* VAR_RPZ_CNAME_OVERRIDE */ - VAR_RPZ_LOG = 566, /* VAR_RPZ_LOG */ - VAR_RPZ_LOG_NAME = 567, /* VAR_RPZ_LOG_NAME */ - VAR_DYNLIB = 568, /* VAR_DYNLIB */ - VAR_DYNLIB_FILE = 569, /* VAR_DYNLIB_FILE */ - VAR_EDNS_CLIENT_STRING = 570, /* VAR_EDNS_CLIENT_STRING */ - VAR_EDNS_CLIENT_STRING_OPCODE = 571, /* VAR_EDNS_CLIENT_STRING_OPCODE */ - VAR_NSID = 572, /* VAR_NSID */ - VAR_ZONEMD_PERMISSIVE_MODE = 573, /* VAR_ZONEMD_PERMISSIVE_MODE */ - VAR_ZONEMD_CHECK = 574, /* VAR_ZONEMD_CHECK */ - VAR_ZONEMD_REJECT_ABSENCE = 575, /* VAR_ZONEMD_REJECT_ABSENCE */ - VAR_RPZ_SIGNAL_NXDOMAIN_RA = 576 /* VAR_RPZ_SIGNAL_NXDOMAIN_RA */ + VAR_IP_RATELIMIT_BACKOFF = 461, /* VAR_IP_RATELIMIT_BACKOFF */ + VAR_RATELIMIT_BACKOFF = 462, /* VAR_RATELIMIT_BACKOFF */ + VAR_SEND_CLIENT_SUBNET = 463, /* VAR_SEND_CLIENT_SUBNET */ + VAR_CLIENT_SUBNET_ZONE = 464, /* VAR_CLIENT_SUBNET_ZONE */ + VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 465, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ + VAR_CLIENT_SUBNET_OPCODE = 466, /* VAR_CLIENT_SUBNET_OPCODE */ + VAR_MAX_CLIENT_SUBNET_IPV4 = 467, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ + VAR_MAX_CLIENT_SUBNET_IPV6 = 468, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ + VAR_MIN_CLIENT_SUBNET_IPV4 = 469, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ + VAR_MIN_CLIENT_SUBNET_IPV6 = 470, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ + VAR_MAX_ECS_TREE_SIZE_IPV4 = 471, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ + VAR_MAX_ECS_TREE_SIZE_IPV6 = 472, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ + VAR_CAPS_WHITELIST = 473, /* VAR_CAPS_WHITELIST */ + VAR_CACHE_MAX_NEGATIVE_TTL = 474, /* VAR_CACHE_MAX_NEGATIVE_TTL */ + VAR_PERMIT_SMALL_HOLDDOWN = 475, /* VAR_PERMIT_SMALL_HOLDDOWN */ + VAR_QNAME_MINIMISATION = 476, /* VAR_QNAME_MINIMISATION */ + VAR_QNAME_MINIMISATION_STRICT = 477, /* VAR_QNAME_MINIMISATION_STRICT */ + VAR_IP_FREEBIND = 478, /* VAR_IP_FREEBIND */ + VAR_DEFINE_TAG = 479, /* VAR_DEFINE_TAG */ + VAR_LOCAL_ZONE_TAG = 480, /* VAR_LOCAL_ZONE_TAG */ + VAR_ACCESS_CONTROL_TAG = 481, /* VAR_ACCESS_CONTROL_TAG */ + VAR_LOCAL_ZONE_OVERRIDE = 482, /* VAR_LOCAL_ZONE_OVERRIDE */ + VAR_ACCESS_CONTROL_TAG_ACTION = 483, /* VAR_ACCESS_CONTROL_TAG_ACTION */ + VAR_ACCESS_CONTROL_TAG_DATA = 484, /* VAR_ACCESS_CONTROL_TAG_DATA */ + VAR_VIEW = 485, /* VAR_VIEW */ + VAR_ACCESS_CONTROL_VIEW = 486, /* VAR_ACCESS_CONTROL_VIEW */ + VAR_VIEW_FIRST = 487, /* VAR_VIEW_FIRST */ + VAR_SERVE_EXPIRED = 488, /* VAR_SERVE_EXPIRED */ + VAR_SERVE_EXPIRED_TTL = 489, /* VAR_SERVE_EXPIRED_TTL */ + VAR_SERVE_EXPIRED_TTL_RESET = 490, /* VAR_SERVE_EXPIRED_TTL_RESET */ + VAR_SERVE_EXPIRED_REPLY_TTL = 491, /* VAR_SERVE_EXPIRED_REPLY_TTL */ + VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 492, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ + VAR_SERVE_ORIGINAL_TTL = 493, /* VAR_SERVE_ORIGINAL_TTL */ + VAR_FAKE_DSA = 494, /* VAR_FAKE_DSA */ + VAR_FAKE_SHA1 = 495, /* VAR_FAKE_SHA1 */ + VAR_LOG_IDENTITY = 496, /* VAR_LOG_IDENTITY */ + VAR_HIDE_TRUSTANCHOR = 497, /* VAR_HIDE_TRUSTANCHOR */ + VAR_HIDE_HTTP_USER_AGENT = 498, /* VAR_HIDE_HTTP_USER_AGENT */ + VAR_HTTP_USER_AGENT = 499, /* VAR_HTTP_USER_AGENT */ + VAR_TRUST_ANCHOR_SIGNALING = 500, /* VAR_TRUST_ANCHOR_SIGNALING */ + VAR_AGGRESSIVE_NSEC = 501, /* VAR_AGGRESSIVE_NSEC */ + VAR_USE_SYSTEMD = 502, /* VAR_USE_SYSTEMD */ + VAR_SHM_ENABLE = 503, /* VAR_SHM_ENABLE */ + VAR_SHM_KEY = 504, /* VAR_SHM_KEY */ + VAR_ROOT_KEY_SENTINEL = 505, /* VAR_ROOT_KEY_SENTINEL */ + VAR_DNSCRYPT = 506, /* VAR_DNSCRYPT */ + VAR_DNSCRYPT_ENABLE = 507, /* VAR_DNSCRYPT_ENABLE */ + VAR_DNSCRYPT_PORT = 508, /* VAR_DNSCRYPT_PORT */ + VAR_DNSCRYPT_PROVIDER = 509, /* VAR_DNSCRYPT_PROVIDER */ + VAR_DNSCRYPT_SECRET_KEY = 510, /* VAR_DNSCRYPT_SECRET_KEY */ + VAR_DNSCRYPT_PROVIDER_CERT = 511, /* VAR_DNSCRYPT_PROVIDER_CERT */ + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 512, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 513, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 514, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 515, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 516, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ + VAR_PAD_RESPONSES = 517, /* VAR_PAD_RESPONSES */ + VAR_PAD_RESPONSES_BLOCK_SIZE = 518, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ + VAR_PAD_QUERIES = 519, /* VAR_PAD_QUERIES */ + VAR_PAD_QUERIES_BLOCK_SIZE = 520, /* VAR_PAD_QUERIES_BLOCK_SIZE */ + VAR_IPSECMOD_ENABLED = 521, /* VAR_IPSECMOD_ENABLED */ + VAR_IPSECMOD_HOOK = 522, /* VAR_IPSECMOD_HOOK */ + VAR_IPSECMOD_IGNORE_BOGUS = 523, /* VAR_IPSECMOD_IGNORE_BOGUS */ + VAR_IPSECMOD_MAX_TTL = 524, /* VAR_IPSECMOD_MAX_TTL */ + VAR_IPSECMOD_WHITELIST = 525, /* VAR_IPSECMOD_WHITELIST */ + VAR_IPSECMOD_STRICT = 526, /* VAR_IPSECMOD_STRICT */ + VAR_CACHEDB = 527, /* VAR_CACHEDB */ + VAR_CACHEDB_BACKEND = 528, /* VAR_CACHEDB_BACKEND */ + VAR_CACHEDB_SECRETSEED = 529, /* VAR_CACHEDB_SECRETSEED */ + VAR_CACHEDB_REDISHOST = 530, /* VAR_CACHEDB_REDISHOST */ + VAR_CACHEDB_REDISPORT = 531, /* VAR_CACHEDB_REDISPORT */ + VAR_CACHEDB_REDISTIMEOUT = 532, /* VAR_CACHEDB_REDISTIMEOUT */ + VAR_CACHEDB_REDISEXPIRERECORDS = 533, /* VAR_CACHEDB_REDISEXPIRERECORDS */ + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 534, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ + VAR_FOR_UPSTREAM = 535, /* VAR_FOR_UPSTREAM */ + VAR_AUTH_ZONE = 536, /* VAR_AUTH_ZONE */ + VAR_ZONEFILE = 537, /* VAR_ZONEFILE */ + VAR_MASTER = 538, /* VAR_MASTER */ + VAR_URL = 539, /* VAR_URL */ + VAR_FOR_DOWNSTREAM = 540, /* VAR_FOR_DOWNSTREAM */ + VAR_FALLBACK_ENABLED = 541, /* VAR_FALLBACK_ENABLED */ + VAR_TLS_ADDITIONAL_PORT = 542, /* VAR_TLS_ADDITIONAL_PORT */ + VAR_LOW_RTT = 543, /* VAR_LOW_RTT */ + VAR_LOW_RTT_PERMIL = 544, /* VAR_LOW_RTT_PERMIL */ + VAR_FAST_SERVER_PERMIL = 545, /* VAR_FAST_SERVER_PERMIL */ + VAR_FAST_SERVER_NUM = 546, /* VAR_FAST_SERVER_NUM */ + VAR_ALLOW_NOTIFY = 547, /* VAR_ALLOW_NOTIFY */ + VAR_TLS_WIN_CERT = 548, /* VAR_TLS_WIN_CERT */ + VAR_TCP_CONNECTION_LIMIT = 549, /* VAR_TCP_CONNECTION_LIMIT */ + VAR_FORWARD_NO_CACHE = 550, /* VAR_FORWARD_NO_CACHE */ + VAR_STUB_NO_CACHE = 551, /* VAR_STUB_NO_CACHE */ + VAR_LOG_SERVFAIL = 552, /* VAR_LOG_SERVFAIL */ + VAR_DENY_ANY = 553, /* VAR_DENY_ANY */ + VAR_UNKNOWN_SERVER_TIME_LIMIT = 554, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ + VAR_LOG_TAG_QUERYREPLY = 555, /* VAR_LOG_TAG_QUERYREPLY */ + VAR_STREAM_WAIT_SIZE = 556, /* VAR_STREAM_WAIT_SIZE */ + VAR_TLS_CIPHERS = 557, /* VAR_TLS_CIPHERS */ + VAR_TLS_CIPHERSUITES = 558, /* VAR_TLS_CIPHERSUITES */ + VAR_TLS_USE_SNI = 559, /* VAR_TLS_USE_SNI */ + VAR_IPSET = 560, /* VAR_IPSET */ + VAR_IPSET_NAME_V4 = 561, /* VAR_IPSET_NAME_V4 */ + VAR_IPSET_NAME_V6 = 562, /* VAR_IPSET_NAME_V6 */ + VAR_TLS_SESSION_TICKET_KEYS = 563, /* VAR_TLS_SESSION_TICKET_KEYS */ + VAR_RPZ = 564, /* VAR_RPZ */ + VAR_TAGS = 565, /* VAR_TAGS */ + VAR_RPZ_ACTION_OVERRIDE = 566, /* VAR_RPZ_ACTION_OVERRIDE */ + VAR_RPZ_CNAME_OVERRIDE = 567, /* VAR_RPZ_CNAME_OVERRIDE */ + VAR_RPZ_LOG = 568, /* VAR_RPZ_LOG */ + VAR_RPZ_LOG_NAME = 569, /* VAR_RPZ_LOG_NAME */ + VAR_DYNLIB = 570, /* VAR_DYNLIB */ + VAR_DYNLIB_FILE = 571, /* VAR_DYNLIB_FILE */ + VAR_EDNS_CLIENT_STRING = 572, /* VAR_EDNS_CLIENT_STRING */ + VAR_EDNS_CLIENT_STRING_OPCODE = 573, /* VAR_EDNS_CLIENT_STRING_OPCODE */ + VAR_NSID = 574, /* VAR_NSID */ + VAR_ZONEMD_PERMISSIVE_MODE = 575, /* VAR_ZONEMD_PERMISSIVE_MODE */ + VAR_ZONEMD_CHECK = 576, /* VAR_ZONEMD_CHECK */ + VAR_ZONEMD_REJECT_ABSENCE = 577, /* VAR_ZONEMD_REJECT_ABSENCE */ + VAR_RPZ_SIGNAL_NXDOMAIN_RA = 578 /* VAR_RPZ_SIGNAL_NXDOMAIN_RA */ }; typedef enum yytokentype yytoken_kind_t; #endif /* Token kinds. */ +#define YYEMPTY -2 #define YYEOF 0 #define YYerror 256 #define YYUNDEF 257 @@ -583,122 +586,124 @@ extern int yydebug; #define VAR_RATELIMIT_BELOW_DOMAIN 458 #define VAR_IP_RATELIMIT_FACTOR 459 #define VAR_RATELIMIT_FACTOR 460 -#define VAR_SEND_CLIENT_SUBNET 461 -#define VAR_CLIENT_SUBNET_ZONE 462 -#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 463 -#define VAR_CLIENT_SUBNET_OPCODE 464 -#define VAR_MAX_CLIENT_SUBNET_IPV4 465 -#define VAR_MAX_CLIENT_SUBNET_IPV6 466 -#define VAR_MIN_CLIENT_SUBNET_IPV4 467 -#define VAR_MIN_CLIENT_SUBNET_IPV6 468 -#define VAR_MAX_ECS_TREE_SIZE_IPV4 469 -#define VAR_MAX_ECS_TREE_SIZE_IPV6 470 -#define VAR_CAPS_WHITELIST 471 -#define VAR_CACHE_MAX_NEGATIVE_TTL 472 -#define VAR_PERMIT_SMALL_HOLDDOWN 473 -#define VAR_QNAME_MINIMISATION 474 -#define VAR_QNAME_MINIMISATION_STRICT 475 -#define VAR_IP_FREEBIND 476 -#define VAR_DEFINE_TAG 477 -#define VAR_LOCAL_ZONE_TAG 478 -#define VAR_ACCESS_CONTROL_TAG 479 -#define VAR_LOCAL_ZONE_OVERRIDE 480 -#define VAR_ACCESS_CONTROL_TAG_ACTION 481 -#define VAR_ACCESS_CONTROL_TAG_DATA 482 -#define VAR_VIEW 483 -#define VAR_ACCESS_CONTROL_VIEW 484 -#define VAR_VIEW_FIRST 485 -#define VAR_SERVE_EXPIRED 486 -#define VAR_SERVE_EXPIRED_TTL 487 -#define VAR_SERVE_EXPIRED_TTL_RESET 488 -#define VAR_SERVE_EXPIRED_REPLY_TTL 489 -#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 490 -#define VAR_SERVE_ORIGINAL_TTL 491 -#define VAR_FAKE_DSA 492 -#define VAR_FAKE_SHA1 493 -#define VAR_LOG_IDENTITY 494 -#define VAR_HIDE_TRUSTANCHOR 495 -#define VAR_HIDE_HTTP_USER_AGENT 496 -#define VAR_HTTP_USER_AGENT 497 -#define VAR_TRUST_ANCHOR_SIGNALING 498 -#define VAR_AGGRESSIVE_NSEC 499 -#define VAR_USE_SYSTEMD 500 -#define VAR_SHM_ENABLE 501 -#define VAR_SHM_KEY 502 -#define VAR_ROOT_KEY_SENTINEL 503 -#define VAR_DNSCRYPT 504 -#define VAR_DNSCRYPT_ENABLE 505 -#define VAR_DNSCRYPT_PORT 506 -#define VAR_DNSCRYPT_PROVIDER 507 -#define VAR_DNSCRYPT_SECRET_KEY 508 -#define VAR_DNSCRYPT_PROVIDER_CERT 509 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 510 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 511 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 512 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 513 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 514 -#define VAR_PAD_RESPONSES 515 -#define VAR_PAD_RESPONSES_BLOCK_SIZE 516 -#define VAR_PAD_QUERIES 517 -#define VAR_PAD_QUERIES_BLOCK_SIZE 518 -#define VAR_IPSECMOD_ENABLED 519 -#define VAR_IPSECMOD_HOOK 520 -#define VAR_IPSECMOD_IGNORE_BOGUS 521 -#define VAR_IPSECMOD_MAX_TTL 522 -#define VAR_IPSECMOD_WHITELIST 523 -#define VAR_IPSECMOD_STRICT 524 -#define VAR_CACHEDB 525 -#define VAR_CACHEDB_BACKEND 526 -#define VAR_CACHEDB_SECRETSEED 527 -#define VAR_CACHEDB_REDISHOST 528 -#define VAR_CACHEDB_REDISPORT 529 -#define VAR_CACHEDB_REDISTIMEOUT 530 -#define VAR_CACHEDB_REDISEXPIRERECORDS 531 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 532 -#define VAR_FOR_UPSTREAM 533 -#define VAR_AUTH_ZONE 534 -#define VAR_ZONEFILE 535 -#define VAR_MASTER 536 -#define VAR_URL 537 -#define VAR_FOR_DOWNSTREAM 538 -#define VAR_FALLBACK_ENABLED 539 -#define VAR_TLS_ADDITIONAL_PORT 540 -#define VAR_LOW_RTT 541 -#define VAR_LOW_RTT_PERMIL 542 -#define VAR_FAST_SERVER_PERMIL 543 -#define VAR_FAST_SERVER_NUM 544 -#define VAR_ALLOW_NOTIFY 545 -#define VAR_TLS_WIN_CERT 546 -#define VAR_TCP_CONNECTION_LIMIT 547 -#define VAR_FORWARD_NO_CACHE 548 -#define VAR_STUB_NO_CACHE 549 -#define VAR_LOG_SERVFAIL 550 -#define VAR_DENY_ANY 551 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 552 -#define VAR_LOG_TAG_QUERYREPLY 553 -#define VAR_STREAM_WAIT_SIZE 554 -#define VAR_TLS_CIPHERS 555 -#define VAR_TLS_CIPHERSUITES 556 -#define VAR_TLS_USE_SNI 557 -#define VAR_IPSET 558 -#define VAR_IPSET_NAME_V4 559 -#define VAR_IPSET_NAME_V6 560 -#define VAR_TLS_SESSION_TICKET_KEYS 561 -#define VAR_RPZ 562 -#define VAR_TAGS 563 -#define VAR_RPZ_ACTION_OVERRIDE 564 -#define VAR_RPZ_CNAME_OVERRIDE 565 -#define VAR_RPZ_LOG 566 -#define VAR_RPZ_LOG_NAME 567 -#define VAR_DYNLIB 568 -#define VAR_DYNLIB_FILE 569 -#define VAR_EDNS_CLIENT_STRING 570 -#define VAR_EDNS_CLIENT_STRING_OPCODE 571 -#define VAR_NSID 572 -#define VAR_ZONEMD_PERMISSIVE_MODE 573 -#define VAR_ZONEMD_CHECK 574 -#define VAR_ZONEMD_REJECT_ABSENCE 575 -#define VAR_RPZ_SIGNAL_NXDOMAIN_RA 576 +#define VAR_IP_RATELIMIT_BACKOFF 461 +#define VAR_RATELIMIT_BACKOFF 462 +#define VAR_SEND_CLIENT_SUBNET 463 +#define VAR_CLIENT_SUBNET_ZONE 464 +#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 465 +#define VAR_CLIENT_SUBNET_OPCODE 466 +#define VAR_MAX_CLIENT_SUBNET_IPV4 467 +#define VAR_MAX_CLIENT_SUBNET_IPV6 468 +#define VAR_MIN_CLIENT_SUBNET_IPV4 469 +#define VAR_MIN_CLIENT_SUBNET_IPV6 470 +#define VAR_MAX_ECS_TREE_SIZE_IPV4 471 +#define VAR_MAX_ECS_TREE_SIZE_IPV6 472 +#define VAR_CAPS_WHITELIST 473 +#define VAR_CACHE_MAX_NEGATIVE_TTL 474 +#define VAR_PERMIT_SMALL_HOLDDOWN 475 +#define VAR_QNAME_MINIMISATION 476 +#define VAR_QNAME_MINIMISATION_STRICT 477 +#define VAR_IP_FREEBIND 478 +#define VAR_DEFINE_TAG 479 +#define VAR_LOCAL_ZONE_TAG 480 +#define VAR_ACCESS_CONTROL_TAG 481 +#define VAR_LOCAL_ZONE_OVERRIDE 482 +#define VAR_ACCESS_CONTROL_TAG_ACTION 483 +#define VAR_ACCESS_CONTROL_TAG_DATA 484 +#define VAR_VIEW 485 +#define VAR_ACCESS_CONTROL_VIEW 486 +#define VAR_VIEW_FIRST 487 +#define VAR_SERVE_EXPIRED 488 +#define VAR_SERVE_EXPIRED_TTL 489 +#define VAR_SERVE_EXPIRED_TTL_RESET 490 +#define VAR_SERVE_EXPIRED_REPLY_TTL 491 +#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 492 +#define VAR_SERVE_ORIGINAL_TTL 493 +#define VAR_FAKE_DSA 494 +#define VAR_FAKE_SHA1 495 +#define VAR_LOG_IDENTITY 496 +#define VAR_HIDE_TRUSTANCHOR 497 +#define VAR_HIDE_HTTP_USER_AGENT 498 +#define VAR_HTTP_USER_AGENT 499 +#define VAR_TRUST_ANCHOR_SIGNALING 500 +#define VAR_AGGRESSIVE_NSEC 501 +#define VAR_USE_SYSTEMD 502 +#define VAR_SHM_ENABLE 503 +#define VAR_SHM_KEY 504 +#define VAR_ROOT_KEY_SENTINEL 505 +#define VAR_DNSCRYPT 506 +#define VAR_DNSCRYPT_ENABLE 507 +#define VAR_DNSCRYPT_PORT 508 +#define VAR_DNSCRYPT_PROVIDER 509 +#define VAR_DNSCRYPT_SECRET_KEY 510 +#define VAR_DNSCRYPT_PROVIDER_CERT 511 +#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 512 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 513 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 514 +#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 515 +#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 516 +#define VAR_PAD_RESPONSES 517 +#define VAR_PAD_RESPONSES_BLOCK_SIZE 518 +#define VAR_PAD_QUERIES 519 +#define VAR_PAD_QUERIES_BLOCK_SIZE 520 +#define VAR_IPSECMOD_ENABLED 521 +#define VAR_IPSECMOD_HOOK 522 +#define VAR_IPSECMOD_IGNORE_BOGUS 523 +#define VAR_IPSECMOD_MAX_TTL 524 +#define VAR_IPSECMOD_WHITELIST 525 +#define VAR_IPSECMOD_STRICT 526 +#define VAR_CACHEDB 527 +#define VAR_CACHEDB_BACKEND 528 +#define VAR_CACHEDB_SECRETSEED 529 +#define VAR_CACHEDB_REDISHOST 530 +#define VAR_CACHEDB_REDISPORT 531 +#define VAR_CACHEDB_REDISTIMEOUT 532 +#define VAR_CACHEDB_REDISEXPIRERECORDS 533 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 534 +#define VAR_FOR_UPSTREAM 535 +#define VAR_AUTH_ZONE 536 +#define VAR_ZONEFILE 537 +#define VAR_MASTER 538 +#define VAR_URL 539 +#define VAR_FOR_DOWNSTREAM 540 +#define VAR_FALLBACK_ENABLED 541 +#define VAR_TLS_ADDITIONAL_PORT 542 +#define VAR_LOW_RTT 543 +#define VAR_LOW_RTT_PERMIL 544 +#define VAR_FAST_SERVER_PERMIL 545 +#define VAR_FAST_SERVER_NUM 546 +#define VAR_ALLOW_NOTIFY 547 +#define VAR_TLS_WIN_CERT 548 +#define VAR_TCP_CONNECTION_LIMIT 549 +#define VAR_FORWARD_NO_CACHE 550 +#define VAR_STUB_NO_CACHE 551 +#define VAR_LOG_SERVFAIL 552 +#define VAR_DENY_ANY 553 +#define VAR_UNKNOWN_SERVER_TIME_LIMIT 554 +#define VAR_LOG_TAG_QUERYREPLY 555 +#define VAR_STREAM_WAIT_SIZE 556 +#define VAR_TLS_CIPHERS 557 +#define VAR_TLS_CIPHERSUITES 558 +#define VAR_TLS_USE_SNI 559 +#define VAR_IPSET 560 +#define VAR_IPSET_NAME_V4 561 +#define VAR_IPSET_NAME_V6 562 +#define VAR_TLS_SESSION_TICKET_KEYS 563 +#define VAR_RPZ 564 +#define VAR_TAGS 565 +#define VAR_RPZ_ACTION_OVERRIDE 566 +#define VAR_RPZ_CNAME_OVERRIDE 567 +#define VAR_RPZ_LOG 568 +#define VAR_RPZ_LOG_NAME 569 +#define VAR_DYNLIB 570 +#define VAR_DYNLIB_FILE 571 +#define VAR_EDNS_CLIENT_STRING 572 +#define VAR_EDNS_CLIENT_STRING_OPCODE 573 +#define VAR_NSID 574 +#define VAR_ZONEMD_PERMISSIVE_MODE 575 +#define VAR_ZONEMD_CHECK 576 +#define VAR_ZONEMD_REJECT_ABSENCE 577 +#define VAR_RPZ_SIGNAL_NXDOMAIN_RA 578 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -708,7 +713,7 @@ union YYSTYPE char* str; -#line 712 "util/configparser.h" +#line 717 "util/configparser.h" }; typedef union YYSTYPE YYSTYPE; diff --git a/util/configparser.y b/util/configparser.y index 9ebd59aa9..d4f965f94 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -142,6 +142,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_OUTBOUND_MSG_RETRY %token VAR_RATELIMIT_FOR_DOMAIN VAR_RATELIMIT_BELOW_DOMAIN %token VAR_IP_RATELIMIT_FACTOR VAR_RATELIMIT_FACTOR +%token VAR_IP_RATELIMIT_BACKOFF VAR_RATELIMIT_BACKOFF %token VAR_SEND_CLIENT_SUBNET VAR_CLIENT_SUBNET_ZONE %token VAR_CLIENT_SUBNET_ALWAYS_FORWARD VAR_CLIENT_SUBNET_OPCODE %token VAR_MAX_CLIENT_SUBNET_IPV4 VAR_MAX_CLIENT_SUBNET_IPV6 @@ -272,7 +273,8 @@ content_server: server_num_threads | server_verbosity | server_port | server_ip_ratelimit_size | server_ratelimit_size | server_ratelimit_for_domain | server_ratelimit_below_domain | server_ratelimit_factor | - server_ip_ratelimit_factor | server_outbound_msg_retry | + server_ip_ratelimit_factor | server_ratelimit_backoff | + server_ip_ratelimit_backoff | server_outbound_msg_retry | 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 | @@ -2504,6 +2506,26 @@ server_ratelimit_factor: VAR_RATELIMIT_FACTOR STRING_ARG free($2); } ; +server_ip_ratelimit_backoff: VAR_IP_RATELIMIT_BACKOFF STRING_ARG + { + OUTYY(("P(server_ip_ratelimit_backoff:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->ip_ratelimit_backoff = + (strcmp($2, "yes")==0); + free($2); + } + ; +server_ratelimit_backoff: VAR_RATELIMIT_BACKOFF STRING_ARG + { + OUTYY(("P(server_ratelimit_backoff:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->ratelimit_backoff = + (strcmp($2, "yes")==0); + free($2); + } + ; server_outbound_msg_retry: VAR_OUTBOUND_MSG_RETRY STRING_ARG { OUTYY(("P(server_outbound_msg_retry:%s)\n", $2)); From c8a6234aac9801a46ea50ea3460f4e332bcfba1c Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Sun, 30 Jan 2022 00:51:39 +0100 Subject: [PATCH 489/553] - Add tests for ratelimit. --- testdata/pylib.tdir/pylib.lookup.conf | 2 +- testdata/pylib.tdir/pylib.lookup.py | 74 +++----- testdata/pylib.tdir/pylib.test | 18 -- testdata/pylib.tdir/pylib.testns | 9 + testdata/ratelimit.tdir/ratelimit.conf | 29 ++++ testdata/ratelimit.tdir/ratelimit.dsc | 16 ++ testdata/ratelimit.tdir/ratelimit.post | 14 ++ testdata/ratelimit.tdir/ratelimit.pre | 33 ++++ testdata/ratelimit.tdir/ratelimit.test | 183 ++++++++++++++++++++ testdata/ratelimit.tdir/ratelimit.testns | 13 ++ testdata/ratelimit.tdir/unbound_control.key | 39 +++++ testdata/ratelimit.tdir/unbound_control.pem | 22 +++ testdata/ratelimit.tdir/unbound_server.key | 39 +++++ testdata/ratelimit.tdir/unbound_server.pem | 22 +++ 14 files changed, 441 insertions(+), 72 deletions(-) create mode 100644 testdata/ratelimit.tdir/ratelimit.conf create mode 100644 testdata/ratelimit.tdir/ratelimit.dsc create mode 100644 testdata/ratelimit.tdir/ratelimit.post create mode 100644 testdata/ratelimit.tdir/ratelimit.pre create mode 100644 testdata/ratelimit.tdir/ratelimit.test create mode 100644 testdata/ratelimit.tdir/ratelimit.testns create mode 100644 testdata/ratelimit.tdir/unbound_control.key create mode 100644 testdata/ratelimit.tdir/unbound_control.pem create mode 100644 testdata/ratelimit.tdir/unbound_server.key create mode 100644 testdata/ratelimit.tdir/unbound_server.pem diff --git a/testdata/pylib.tdir/pylib.lookup.conf b/testdata/pylib.tdir/pylib.lookup.conf index 3f4a8d26d..f467d5bc6 100644 --- a/testdata/pylib.tdir/pylib.lookup.conf +++ b/testdata/pylib.tdir/pylib.lookup.conf @@ -11,4 +11,4 @@ server: stub-zone: name: "example.com." stub-addr: "127.0.0.1@@TOPORT@" - + stub-no-cache: yes diff --git a/testdata/pylib.tdir/pylib.lookup.py b/testdata/pylib.tdir/pylib.lookup.py index 114bb49a0..b9f6e8397 100755 --- a/testdata/pylib.tdir/pylib.lookup.py +++ b/testdata/pylib.tdir/pylib.lookup.py @@ -9,9 +9,11 @@ import time import unbound qname = "www.example.com" +qname2 = "www2.example.com" qtype = unbound.RR_TYPE_A qclass = unbound.RR_CLASS_IN + def create_context(config_file="ub.lookup.conf", asyncflag=False): """ Create an unbound context to use for testing. @@ -69,32 +71,6 @@ def test_async_resolve(ctx): print("Failed async resolve with: {}".format(retval)) -def test_ratelimit_fg_on(ctx): - """ - Test resolving a ratelimited domain with a foreground worker. - - """ - ctx.set_option("ratelimit:", "1") - ctx.set_option("ratelimit-factor:", "0") - status, result = ctx.resolve(qname, qtype, qclass) - if status == 0 and result.was_ratelimited: - print("Ratelimit-fg-on: pass") - else: - print("Failed ratelimit-fg-on with: {}".format(status)) - - -def test_ratelimit_fg_off(ctx): - """ - Test resolving a non-ratelimited domain with a foreground worker. - - """ - status, result = ctx.resolve(qname, qtype, qclass) - if status == 0 and result.havedata: - print("Ratelimit-fg-off: {}".format(result.data.address_list)) - else: - print("Failed ratelimit-fg-off with: {}".format(status)) - - def test_ratelimit_bg_on(ctx): """ Test resolving a ratelimited domain with a background worker. @@ -102,40 +78,32 @@ def test_ratelimit_bg_on(ctx): """ ctx.set_option("ratelimit:", "1") ctx.set_option("ratelimit-factor:", "0") - cb_data = dict(done=False) - retval, async_id = ctx.resolve_async(qname, cb_data, callback, qtype, qclass) - while retval == 0 and not cb_data['done']: - time.sleep(0.1) - retval = ctx.process() + total_runs = 6 + success_threshold = 4 # 2/3*total_runs + successes = 0 + for i in range(total_runs): + cb_data = dict(done=False) + cb_data2 = dict(done=False) + retval, async_id = ctx.resolve_async(qname, cb_data, callback, qtype, qclass) + retval, async_id = ctx.resolve_async(qname2, cb_data2, callback, qtype, qclass) - if cb_data.get('was_ratelimited'): + while retval == 0 and not (cb_data['done'] and cb_data['done']): + time.sleep(0.1) + retval = ctx.process() + + if bool(cb_data.get('was_ratelimited')) ^ bool(cb_data2.get('was_ratelimited')): + successes += 1 + if successes >= success_threshold: + break + time.sleep(1) + if successes >= success_threshold: print("Ratelimit-bg-on: pass") else: - print("Failed ratelimit-bg-on with: {}".format(status)) - - -def test_ratelimit_bg_off(ctx): - """ - Test resolving a non-ratelimited domain with a background worker. - - """ - cb_data = dict(done=False) - retval, async_id = ctx.resolve_async(qname, cb_data, callback, qtype, qclass) - while retval == 0 and not cb_data['done']: - time.sleep(0.1) - retval = ctx.process() - - if cb_data.get('data'): - print("Ratelimit-bg-off: {}".format(cb_data['data'].address_list)) - else: - print("Failed ratelimit-bg-off with: {}".format(status)) + print("Failed ratelimit-bg-on") test_resolve(create_context()) test_async_resolve(create_context(asyncflag=True)) -test_ratelimit_fg_on(create_context()) -test_ratelimit_fg_off(create_context()) test_ratelimit_bg_on(create_context(asyncflag=True)) -test_ratelimit_bg_off(create_context(asyncflag=True)) sys.exit(0) diff --git a/testdata/pylib.tdir/pylib.test b/testdata/pylib.tdir/pylib.test index 893aaf64f..59f996459 100644 --- a/testdata/pylib.tdir/pylib.test +++ b/testdata/pylib.tdir/pylib.test @@ -42,30 +42,12 @@ else echo "Not OK (async resolve)" exit 1 fi -if grep "Ratelimit-fg-on: pass" outfile; then - : -else - echo "Not OK (ratelimit-fg-on)" - exit 1 -fi -if grep "Ratelimit-fg-off: \[.\?10.20.30.40.\?\]" outfile; then - : -else - echo "Not OK (ratelimit-fg-off)" - exit 1 -fi if grep "Ratelimit-bg-on: pass" outfile; then : else echo "Not OK (ratelimit-bg-on)" exit 1 fi -if grep "Ratelimit-bg-off: \[.\?10.20.30.40.\?\]" outfile; then - : -else - echo "Not OK (ratelimit-bg-off)" - exit 1 -fi echo "OK" diff --git a/testdata/pylib.tdir/pylib.testns b/testdata/pylib.tdir/pylib.testns index f2a700cc7..af54ed570 100644 --- a/testdata/pylib.tdir/pylib.testns +++ b/testdata/pylib.tdir/pylib.testns @@ -12,3 +12,12 @@ 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 +www2 IN A +SECTION ANSWER +www2 IN A 10.20.30.40 +ENTRY_END diff --git a/testdata/ratelimit.tdir/ratelimit.conf b/testdata/ratelimit.tdir/ratelimit.conf new file mode 100644 index 000000000..5d2456c39 --- /dev/null +++ b/testdata/ratelimit.tdir/ratelimit.conf @@ -0,0 +1,29 @@ +server: + verbosity: 5 + # num-threads: 1 + interface: 127.0.0.1 + port: @PORT@ + use-syslog: no + directory: . + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no + + ratelimit: 1 + ratelimit-factor: 0 + +stub-zone: + name: "example.com." + stub-addr: "127.0.0.1@@TOPORT@" + stub-no-cache: yes + +remote-control: + control-enable: yes + control-interface: 127.0.0.1 + # control-interface: ::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" diff --git a/testdata/ratelimit.tdir/ratelimit.dsc b/testdata/ratelimit.tdir/ratelimit.dsc new file mode 100644 index 000000000..abd5307c7 --- /dev/null +++ b/testdata/ratelimit.tdir/ratelimit.dsc @@ -0,0 +1,16 @@ +BaseName: ratelimit +Version: 1.0 +Description: Test ratelimit. +CreationDate: Sun Jan 30 00:40:00 CET 2022 +Maintainer: Yorgos Thessalonikefs +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: ratelimit.pre +Post: ratelimit.post +Test: ratelimit.test +AuxFiles: +Passed: +Failure: diff --git a/testdata/ratelimit.tdir/ratelimit.post b/testdata/ratelimit.tdir/ratelimit.post new file mode 100644 index 000000000..6738ed55a --- /dev/null +++ b/testdata/ratelimit.tdir/ratelimit.post @@ -0,0 +1,14 @@ +# #-- ratelimit.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 +kill_pid $STUB_PID +kill_pid $UNBOUND_PID +if test -f unbound.log; then + echo ">>> unbound log" + cat unbound.log +fi diff --git a/testdata/ratelimit.tdir/ratelimit.pre b/testdata/ratelimit.tdir/ratelimit.pre new file mode 100644 index 000000000..928853ca7 --- /dev/null +++ b/testdata/ratelimit.tdir/ratelimit.pre @@ -0,0 +1,33 @@ +# #-- ratelimit.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 +get_random_port 2 +UNBOUND_PORT=$RND_PORT +STUB_PORT=$(($RND_PORT + 1)) +CONTROL_PORT=$(($RND_PORT + 2)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "STUB_PORT=$STUB_PORT" >> .tpkg.var.test +echo "CONTROL_PORT=$CONTROL_PORT" >> .tpkg.var.test + +# start ldns-testnd +get_ldns_testns +$LDNS_TESTNS -v -p $STUB_PORT ratelimit.testns >stub.log 2>&1 & +STUB_PID=$! +echo "STUB_PID=$STUB_PID" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$STUB_PORT'/' -e 's/@CONTROL_PORT\@/'$CONTROL_PORT'/' < ratelimit.conf > ub.conf +# start unbound in the background +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +wait_ldns_testns_up stub.log +wait_unbound_up unbound.log + +cat .tpkg.var.test diff --git a/testdata/ratelimit.tdir/ratelimit.test b/testdata/ratelimit.tdir/ratelimit.test new file mode 100644 index 000000000..cc1471740 --- /dev/null +++ b/testdata/ratelimit.tdir/ratelimit.test @@ -0,0 +1,183 @@ +# #-- ratelimit.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 + +get_make +(cd $PRE; $MAKE streamtcp) + +# These tests rely on second time precision. To combat false negatives the +# tests run multiple times and we allow 1/3 of the runs to fail. +total_runs=6 +success_threshold=4 # 2/3*total_runs + +successes=0 +echo "> Three parallel queries" +# For this test we send three parallel queries and we expect only one of them +# to be allowed through each second. +for i in $(seq 1 $total_runs); do + $PRE/streamtcp -na -f 127.0.0.1@$UNBOUND_PORT www1.example.com. A IN www2.example.com. A IN www3.example.com. A IN >outfile 2>&1 + if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat unbound.log + echo "Not OK" + exit 1 + fi + cat outfile + if test `grep "rcode: SERVFAIL" outfile | wc -l` -eq 2; then + ((successes++)) + fi + # We don't have to wait for all the runs to complete if we know + # we passed the threshold. + if test $successes -ge $success_threshold; then + break + fi + sleep 1 +done +if test $successes -ge $success_threshold; then + echo "Number of ratelimited queries OK for three parallel queries" +else + echo "Number of ratelimited queries not OK for three parallel queries" + echo "> cat logfiles" + cat outfile + cat unbound.log + echo "Number of ratelimited queries not OK for three parallel queries" + exit 1 +fi + +echo "> Activating ratelimit-factor" +echo "$PRE/unbound-control -c ub.conf set_option ratelimit-factor: 3" +$PRE/unbound-control -c ub.conf set_option ratelimit-factor: 3 +if test $? -ne 0; then + echo "wrong exit value after success" + exit 1 +fi + +slipped_through=0 +echo "> Three parallel queries with ratelimit-factor" +# For this test we send three parallel queries and we expect at least two of +# them to be allowed through at a given second; one from the ratelimit itself +# and one from the ratelimit-factor. +for i in {1..10}; do + $PRE/streamtcp -na -f 127.0.0.1@$UNBOUND_PORT www1.example.com. A IN www2.example.com. A IN www3.example.com. A IN >outfile 2>&1 + if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat unbound.log + echo "Not OK" + exit 1 + fi + cat outfile + if test `grep "rcode: SERVFAIL" outfile | wc -l` -lt 2; then + slipped_through=1 + break + fi + sleep 2 +done +if test $slipped_through -eq 0; then + echo "ratelimit-factor did not work" + echo "> cat logfiles" + cat outfile + cat unbound.log + echo "ratelimit-factor did not work" + exit 1 +fi +echo "ratelimit-factor OK" + +echo "> Disabling ratelimit-factor" +echo "$PRE/unbound-control -c ub.conf set_option ratelimit-factor: 0" +$PRE/unbound-control -c ub.conf set_option ratelimit-factor: 0 +if test $? -ne 0; then + echo "wrong exit value after success" + exit 1 +fi +echo "> Activating ratelimit-backoff" +echo "$PRE/unbound-control -c ub.conf set_option ratelimit-backoff: yes" +$PRE/unbound-control -c ub.conf set_option ratelimit-backoff: yes +if test $? -ne 0; then + echo "wrong exit value after success" + exit 1 +fi + +successes=0 +echo "> Three parallel queries with backoff" +# For this test we send three parallel queries. The ratelimit should be reached +# for that second. Then for the next second we again send three parallel +# queries and we expect none of them to be allowed through because of the +# backoff logic that keeps rolling the RATE_WINDOW based on demand. +for i in $(seq 1 $total_runs); do + $PRE/streamtcp -na -f 127.0.0.1@$UNBOUND_PORT www1.example.com. A IN www2.example.com. A IN www3.example.com. A IN >outfile 2>&1 + if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat unbound.log + echo "Not OK" + exit 1 + fi + sleep 1 # Limit is reached; it should also be active for the next second + $PRE/streamtcp -na -f 127.0.0.1@$UNBOUND_PORT www1.example.com. A IN www2.example.com. A IN www3.example.com. A IN >outfile 2>&1 + if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat unbound.log + echo "Not OK" + exit 1 + fi + cat outfile + if test `grep "rcode: SERVFAIL" outfile | wc -l` -eq 3; then + ((successes++)) + fi + # We don't have to wait for all the runs to complete if we know + # we passed the threshold. + if test $successes -ge $success_threshold; then + break + fi +done + +if test $successes -ge $success_threshold; then + echo "three parallel queries with backoff OK" +else + echo "Number of ratelimited queries not OK for three parallel queries with backoff" + echo "> cat logfiles" + cat outfile + cat unbound.log + echo "Number of ratelimited queries not OK for three parallel queries with backoff" + exit 1 +fi + +echo "> Three parallel queries after backoff RATE_WINDOW" +sleep 3 # Make sure the RATE_WINDOW is renewed +# For this test we make three parallel queries after the RATE_WINDOW has passed +# without any new demand and we expect at least one query to pass through. This +# is to check that the backoff logic does not insist on past (outside of +# RATE_WINDOW) limits. +$PRE/streamtcp -na -f 127.0.0.1@$UNBOUND_PORT www1.example.com. A IN www2.example.com. A IN www3.example.com. A IN >outfile 2>&1 +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat unbound.log + echo "Not OK" + exit 1 +fi +cat outfile +if test `grep "rcode: NOERROR" outfile | wc -l` -gt 0; then + echo "Number of ratelimited queries OK for three parallel queries after backoff RATE_WINDOW" +else + echo "Number of ratelimited queries not OK for three parallel queries after backoff RATE_WINDOW" + echo "> cat logfiles" + cat outfile + cat unbound.log + echo "Number of ratelimited queries not OK for three parallel queries after backoff RATE_WINDOW" + exit 1 +fi +exit 0 diff --git a/testdata/ratelimit.tdir/ratelimit.testns b/testdata/ratelimit.tdir/ratelimit.testns new file mode 100644 index 000000000..673bd15a5 --- /dev/null +++ b/testdata/ratelimit.tdir/ratelimit.testns @@ -0,0 +1,13 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype +REPLY QR AA NOERROR +ADJUST copy_id copy_query +SECTION QUESTION +wild IN A +SECTION ANSWER +wild IN A 10.20.30.40 +ENTRY_END diff --git a/testdata/ratelimit.tdir/unbound_control.key b/testdata/ratelimit.tdir/unbound_control.key new file mode 100644 index 000000000..753a4ef61 --- /dev/null +++ b/testdata/ratelimit.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/ratelimit.tdir/unbound_control.pem b/testdata/ratelimit.tdir/unbound_control.pem new file mode 100644 index 000000000..a1edf7017 --- /dev/null +++ b/testdata/ratelimit.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/ratelimit.tdir/unbound_server.key b/testdata/ratelimit.tdir/unbound_server.key new file mode 100644 index 000000000..370a7bbb2 --- /dev/null +++ b/testdata/ratelimit.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/ratelimit.tdir/unbound_server.pem b/testdata/ratelimit.tdir/unbound_server.pem new file mode 100644 index 000000000..986807310 --- /dev/null +++ b/testdata/ratelimit.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 52283194ebbe3b69facf40c3efd2d666ae66f3df Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Sun, 30 Jan 2022 01:04:15 +0100 Subject: [PATCH 490/553] - Update unbound.conf manpage and example.conf file for ratelimit options. --- doc/example.conf.in | 8 ++++++++ doc/unbound.conf.5.in | 11 ++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/doc/example.conf.in b/doc/example.conf.in index 09047f348..64f4cd988 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -860,6 +860,10 @@ server: # 0 blocks when ratelimited, otherwise let 1/xth traffic through # ratelimit-factor: 10 + # Aggressive rate limit when the limit is reached and until demand has + # decreased in a 2 second rate window. + # ratelimit-backoff: no + # override the ratelimit for a specific domain name. # give this setting multiple times to have multiple overrides. # ratelimit-for-domain: example.com 1000 @@ -880,6 +884,10 @@ server: # 0 blocks when ip is ratelimited, otherwise let 1/xth traffic through # ip-ratelimit-factor: 10 + # Aggressive rate limit when the limit is reached and until demand has + # decreased in a 2 second rate window. + # ip-ratelimit-backoff: no + # Limit the number of connections simultaneous from a netblock # tcp-connection-limit: 192.0.2.0/24 12 diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 9af909cab..bb556300b 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -1696,7 +1696,7 @@ to use different settings for a top\-level\-domain and subdomains. A value of 0 will disable ratelimiting for domain names that end in this name. .TP 5 .B ip\-ratelimit: \fI -Enable global ratelimiting of queries accepted per ip address. +Enable global ratelimiting of queries accepted per IP address. If 0, the default, it is disabled. This option is experimental at this time. The ratelimit is in queries per second that are allowed. More queries are completely dropped and will not receive a reply, SERVFAIL or otherwise. @@ -1723,6 +1723,15 @@ This can make ordinary queries complete (if repeatedly queried for), and enter the cache, whilst also mitigating the traffic flow by the factor given. .TP 5 +.B ip\-ratelimit\-backoff: \fI +If enabled, the ratelimit is treated as a hard failure instead of the default +maximum allowed constant rate. When the limit is reached, traffic is +ratelimited and demand continues to be kept track of for a 2 second rate +window. No traffic is allowed, except for ip\-ratelimit\-factor, until demand +decreases below the configured ratelimit for a 2 second rate window. Useful to +set ip\-ratelimit to a suspicious rate to aggressively limit unusually high +traffic. Default is off. +.TP 5 .B outbound\-msg\-retry: \fI The number of retries Unbound will do in case of a non positive response is received. If a forward nameserver is used, this is the number of retries per From 84df46289dba2f6ce6de8c40943ab930ed2c9939 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 31 Jan 2022 10:53:22 +0100 Subject: [PATCH 491/553] - iana portlist update. --- doc/Changelog | 3 +++ util/iana_ports.inc | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 9b9dd0557..5e3426e4a 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +31 January 2022: Wouter + - iana portlist update. + 29 January 2022: George - Fix tls-* and ssl-* documented alternate syntax to also be available through remote-control and unbound-checkconf. diff --git a/util/iana_ports.inc b/util/iana_ports.inc index 9183c3987..c7662dc62 100644 --- a/util/iana_ports.inc +++ b/util/iana_ports.inc @@ -3784,6 +3784,7 @@ 4308, 4309, 4310, +4319, 4320, 4321, 4322, @@ -4054,7 +4055,6 @@ 5026, 5027, 5029, -5030, 5031, 5042, 5043, From a60bbd12ed90fec3ee41fb112234bb481b2f6e79 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Mon, 31 Jan 2022 11:27:35 +0100 Subject: [PATCH 492/553] -Fix review comment for use-after-free when failing to send UDP out. --- doc/Changelog | 3 +++ services/outside_network.c | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 9b9dd0557..534987789 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +31 January 2022: George + - Fix review comment for use-after-free when failing to send UDP out. + 29 January 2022: George - Fix tls-* and ssl-* documented alternate syntax to also be available through remote-control and unbound-checkconf. diff --git a/services/outside_network.c b/services/outside_network.c index 651f221fd..eff7758c4 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -1384,8 +1384,9 @@ outnet_send_wait_udp(struct outside_network* outnet) NETEVENT_CLOSED, NULL); } pending_delete(outnet, pend); + } else { + pend->sq->busy = 0; } - pend->sq->busy = 0; } } From 814a234876741fd644e72c90d352e0a89ff0b924 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Tue, 1 Feb 2022 14:44:29 +0100 Subject: [PATCH 493/553] - Update stub/forward-host notation to accept port and tls-auth-name. Fixes #546. --- daemon/remote.c | 47 ++++++++++++--------------- doc/unbound.conf.5.in | 24 ++++++++++---- iterator/iter_delegpt.c | 71 ++++++++++++++++++++++++++++++----------- iterator/iter_delegpt.h | 28 ++++++++++++---- iterator/iter_fwd.c | 16 +++++++--- iterator/iter_hints.c | 20 ++++++++---- iterator/iterator.c | 20 ++++++------ util/net_help.c | 37 +++++++++++++++++++++ util/net_help.h | 19 +++++++++-- 9 files changed, 200 insertions(+), 82 deletions(-) diff --git a/daemon/remote.c b/daemon/remote.c index 183f6d4dc..728610f3c 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -2015,7 +2015,7 @@ print_root_fwds(RES* ssl, struct iter_forwards* fwds, uint8_t* root) /** parse args into delegpt */ static struct delegpt* -parse_delegpt(RES* ssl, char* args, uint8_t* nm, int allow_names) +parse_delegpt(RES* ssl, char* args, uint8_t* nm) { /* parse args and add in */ char* p = args; @@ -2037,40 +2037,35 @@ parse_delegpt(RES* ssl, char* args, uint8_t* nm, int allow_names) } /* parse address */ if(!authextstrtoaddr(todo, &addr, &addrlen, &auth_name)) { - if(allow_names) { - uint8_t* n = NULL; - size_t ln; - int lb; - if(!parse_arg_name(ssl, todo, &n, &ln, &lb)) { - (void)ssl_printf(ssl, "error cannot " - "parse IP address or name " - "'%s'\n", todo); - delegpt_free_mlc(dp); - return NULL; - } - if(!delegpt_add_ns_mlc(dp, n, 0)) { - (void)ssl_printf(ssl, "error out of memory\n"); - free(n); - delegpt_free_mlc(dp); - return NULL; - } - free(n); - - } else { + uint8_t* dname= NULL; + int port; + dname = authextstrtodname(todo, &port, &auth_name); + if(!dname) { (void)ssl_printf(ssl, "error cannot parse" - " IP address '%s'\n", todo); + " '%s'\n", todo); + delegpt_free_mlc(dp); + return NULL; + } +#if ! defined(HAVE_SSL_SET1_HOST) && ! defined(HAVE_X509_VERIFY_PARAM_SET1_HOST) + if(auth_name) + log_err("no name verification functionality in " + "ssl library, ignored name for %s", todo); +#endif + if(!delegpt_add_ns_mlc(dp, dname, 0, auth_name, port)) { + (void)ssl_printf(ssl, "error out of memory\n"); + free(dname); delegpt_free_mlc(dp); return NULL; } } else { #if ! defined(HAVE_SSL_SET1_HOST) && ! defined(HAVE_X509_VERIFY_PARAM_SET1_HOST) if(auth_name) - log_err("no name verification functionality in " + log_err("no name verification functionality in " "ssl library, ignored name for %s", todo); #endif /* add address */ if(!delegpt_add_addr_mlc(dp, &addr, addrlen, 0, 0, - auth_name)) { + auth_name, -1)) { (void)ssl_printf(ssl, "error out of memory\n"); delegpt_free_mlc(dp); return NULL; @@ -2103,7 +2098,7 @@ do_forward(RES* ssl, struct worker* worker, char* args) forwards_delete_zone(fwd, LDNS_RR_CLASS_IN, root); } else { struct delegpt* dp; - if(!(dp = parse_delegpt(ssl, args, root, 0))) + if(!(dp = parse_delegpt(ssl, args, root))) return; if(!forwards_add_zone(fwd, LDNS_RR_CLASS_IN, dp)) { (void)ssl_printf(ssl, "error out of memory\n"); @@ -2149,7 +2144,7 @@ parse_fs_args(RES* ssl, char* args, uint8_t** nm, struct delegpt** dp, /* parse dp */ if(dp) { - if(!(*dp = parse_delegpt(ssl, args, *nm, 1))) { + if(!(*dp = parse_delegpt(ssl, args, *nm))) { free(*nm); return 0; } diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index c0878dad1..3a293ca81 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -1842,13 +1842,19 @@ Name of the stub zone. This is the full domain name of the zone. .TP .B stub\-host: \fI Name of stub zone nameserver. Is itself resolved before it is used. +To use a nondefault port for DNS communication append '@' with the port number. +If tls is enabled, then you can append a '#' and a name, then it'll check the +tls authentication certificates with that name. If you combine the '@' and +'#', the '@' comes first. If only '#' is used the default port is the +configured tls\-port. .TP .B stub\-addr: \fI IP address of stub zone nameserver. Can be IP 4 or IP 6. To use a nondefault port for DNS communication append '@' with the port number. -If tls is enabled, then you can append a '#' and a name, then it'll check -the tls authentication certificates with that name. If you combine -the '@' and '#', the '@' comes first. +If tls is enabled, then you can append a '#' and a name, then it'll check the +tls authentication certificates with that name. If you combine the '@' and +'#', the '@' comes first. If only '#' is used the default port is the +configured tls\-port. .TP .B stub\-prime: \fI This option is by default no. If enabled it performs NS set priming, @@ -1899,13 +1905,19 @@ Name of the forward zone. This is the full domain name of the zone. .TP .B forward\-host: \fI Name of server to forward to. Is itself resolved before it is used. +To use a nondefault port for DNS communication append '@' with the port number. +If tls is enabled, then you can append a '#' and a name, then it'll check the +tls authentication certificates with that name. If you combine the '@' and +'#', the '@' comes first. If only '#' is used the default port is the +configured tls\-port. .TP .B forward\-addr: \fI IP address of server to forward to. Can be IP 4 or IP 6. To use a nondefault port for DNS communication append '@' with the port number. -If tls is enabled, then you can append a '#' and a name, then it'll check -the tls authentication certificates with that name. If you combine -the '@' and '#', the '@' comes first. +If tls is enabled, then you can append a '#' and a name, then it'll check the +tls authentication certificates with that name. If you combine the '@' and +'#', the '@' comes first. If only '#' is used the default port is the +configured tls\-port. .IP At high verbosity it logs the TLS certificate, with TLS enabled. If you leave out the '#' and auth name from the forward\-addr, any diff --git a/iterator/iter_delegpt.c b/iterator/iter_delegpt.c index bdac42b0d..80148e810 100644 --- a/iterator/iter_delegpt.c +++ b/iterator/iter_delegpt.c @@ -75,7 +75,8 @@ struct delegpt* delegpt_copy(struct delegpt* dp, struct regional* region) copy->ssl_upstream = dp->ssl_upstream; copy->tcp_upstream = dp->tcp_upstream; for(ns = dp->nslist; ns; ns = ns->next) { - if(!delegpt_add_ns(copy, region, ns->name, ns->lame)) + if(!delegpt_add_ns(copy, region, ns->name, ns->lame, + ns->tls_auth_name, ns->port)) return NULL; copy->nslist->resolved = ns->resolved; copy->nslist->got4 = ns->got4; @@ -84,8 +85,8 @@ struct delegpt* delegpt_copy(struct delegpt* dp, struct regional* region) copy->nslist->done_pside6 = ns->done_pside6; } for(a = dp->target_list; a; a = a->next_target) { - if(!delegpt_add_addr(copy, region, &a->addr, a->addrlen, - a->bogus, a->lame, a->tls_auth_name, NULL)) + if(!delegpt_add_addr(copy, region, &a->addr, a->addrlen, + a->bogus, a->lame, a->tls_auth_name, -1, NULL)) return NULL; } return copy; @@ -102,7 +103,7 @@ delegpt_set_name(struct delegpt* dp, struct regional* region, uint8_t* name) int delegpt_add_ns(struct delegpt* dp, struct regional* region, uint8_t* name, - uint8_t lame) + uint8_t lame, char* tls_auth_name, int port) { struct delegpt_ns* ns; size_t len; @@ -126,6 +127,14 @@ delegpt_add_ns(struct delegpt* dp, struct regional* region, uint8_t* name, ns->lame = lame; ns->done_pside4 = 0; ns->done_pside6 = 0; + ns->port = port; + if(tls_auth_name) { + ns->tls_auth_name = regional_strdup(region, tls_auth_name); + if(!ns->tls_auth_name) + return 0; + } else { + ns->tls_auth_name = NULL; + } return ns->name != 0; } @@ -159,9 +168,9 @@ delegpt_find_addr(struct delegpt* dp, struct sockaddr_storage* addr, return NULL; } -int -delegpt_add_target(struct delegpt* dp, struct regional* region, - uint8_t* name, size_t namelen, struct sockaddr_storage* addr, +int +delegpt_add_target(struct delegpt* dp, struct regional* region, + uint8_t* name, size_t namelen, struct sockaddr_storage* addr, socklen_t addrlen, uint8_t bogus, uint8_t lame, int* additions) { struct delegpt_ns* ns = delegpt_find_ns(dp, name, namelen); @@ -177,17 +186,22 @@ delegpt_add_target(struct delegpt* dp, struct regional* region, if(ns->got4 && ns->got6) ns->resolved = 1; } - return delegpt_add_addr(dp, region, addr, addrlen, bogus, lame, NULL, - additions); + log_assert(ns->port>0); + return delegpt_add_addr(dp, region, addr, addrlen, bogus, lame, + ns->tls_auth_name, ns->port, additions); } -int -delegpt_add_addr(struct delegpt* dp, struct regional* region, - struct sockaddr_storage* addr, socklen_t addrlen, uint8_t bogus, - uint8_t lame, char* tls_auth_name, int* additions) +int +delegpt_add_addr(struct delegpt* dp, struct regional* region, + struct sockaddr_storage* addr, socklen_t addrlen, uint8_t bogus, + uint8_t lame, char* tls_auth_name, int port, int* additions) { struct delegpt_addr* a; log_assert(!dp->dp_type_mlc); + if(port != -1) { + log_assert(port>0); + sockaddr_store_port(addr, addrlen, port); + } /* check for duplicates */ if((a = delegpt_find_addr(dp, addr, addrlen))) { if(bogus) @@ -412,7 +426,8 @@ delegpt_rrset_add_ns(struct delegpt* dp, struct regional* region, (size_t)sldns_read_uint16(nsdata->rr_data[i])) continue; /* bad format */ /* add rdata of NS (= wirefmt dname), skip rdatalen bytes */ - if(!delegpt_add_ns(dp, region, nsdata->rr_data[i]+2, lame)) + if(!delegpt_add_ns(dp, region, nsdata->rr_data[i]+2, lame, + NULL, UNBOUND_DNS_PORT)) return 0; } return 1; @@ -429,7 +444,6 @@ delegpt_add_rrset_A(struct delegpt* dp, struct regional* region, log_assert(!dp->dp_type_mlc); memset(&sa, 0, len); sa.sin_family = AF_INET; - sa.sin_port = (in_port_t)htons(UNBOUND_DNS_PORT); for(i=0; icount; i++) { if(d->rr_len[i] != 2 + INET_SIZE) continue; @@ -453,7 +467,6 @@ delegpt_add_rrset_AAAA(struct delegpt* dp, struct regional* region, log_assert(!dp->dp_type_mlc); memset(&sa, 0, len); sa.sin6_family = AF_INET6; - sa.sin6_port = (in_port_t)htons(UNBOUND_DNS_PORT); for(i=0; icount; i++) { if(d->rr_len[i] != 2 + INET6_SIZE) /* rdatalen + len of IP6 */ continue; @@ -555,6 +568,7 @@ void delegpt_free_mlc(struct delegpt* dp) while(n) { nn = n->next; free(n->name); + free(n->tls_auth_name); free(n); n = nn; } @@ -577,7 +591,8 @@ int delegpt_set_name_mlc(struct delegpt* dp, uint8_t* name) return (dp->name != NULL); } -int delegpt_add_ns_mlc(struct delegpt* dp, uint8_t* name, uint8_t lame) +int delegpt_add_ns_mlc(struct delegpt* dp, uint8_t* name, uint8_t lame, + char* tls_auth_name, int port) { struct delegpt_ns* ns; size_t len; @@ -604,14 +619,30 @@ int delegpt_add_ns_mlc(struct delegpt* dp, uint8_t* name, uint8_t lame) ns->lame = (uint8_t)lame; ns->done_pside4 = 0; ns->done_pside6 = 0; + ns->port = port; + if(tls_auth_name) { + ns->tls_auth_name = strdup(tls_auth_name); + if(!ns->tls_auth_name) { + free(ns->name); + free(ns); + return 0; + } + } else { + ns->tls_auth_name = NULL; + } return 1; } int delegpt_add_addr_mlc(struct delegpt* dp, struct sockaddr_storage* addr, - socklen_t addrlen, uint8_t bogus, uint8_t lame, char* tls_auth_name) + socklen_t addrlen, uint8_t bogus, uint8_t lame, char* tls_auth_name, + int port) { struct delegpt_addr* a; log_assert(dp->dp_type_mlc); + if(port != -1) { + log_assert(port>0); + sockaddr_store_port(addr, addrlen, port); + } /* check for duplicates */ if((a = delegpt_find_addr(dp, addr, addrlen))) { if(bogus) @@ -664,7 +695,9 @@ int delegpt_add_target_mlc(struct delegpt* dp, uint8_t* name, size_t namelen, if(ns->got4 && ns->got6) ns->resolved = 1; } - return delegpt_add_addr_mlc(dp, addr, addrlen, bogus, lame, NULL); + log_assert(ns->port>0); + return delegpt_add_addr_mlc(dp, addr, addrlen, bogus, lame, + ns->tls_auth_name, ns->port); } size_t delegpt_get_mem(struct delegpt* dp) diff --git a/iterator/iter_delegpt.h b/iterator/iter_delegpt.h index 9c8cfb281..17db15a23 100644 --- a/iterator/iter_delegpt.h +++ b/iterator/iter_delegpt.h @@ -126,6 +126,11 @@ struct delegpt_ns { * Also enabled if a parent-side cache entry exists, or a parent-side * negative-cache entry exists. */ uint8_t done_pside6; + /** the TLS authentication name, (if not NULL) to use. */ + char* tls_auth_name; + /** the port to use; it should mosty be the default 53 but configured + * upstreams can provide nondefault ports. */ + int port; }; /** @@ -191,10 +196,12 @@ int delegpt_set_name(struct delegpt* dp, struct regional* regional, * @param regional: where to allocate the info. * @param name: domain name in wire format. * @param lame: name is lame, disprefer it. + * @param tls_auth_name: TLS authentication name (or NULL). + * @param port: port to use for resolved addresses. * @return false on error. */ -int delegpt_add_ns(struct delegpt* dp, struct regional* regional, - uint8_t* name, uint8_t lame); +int delegpt_add_ns(struct delegpt* dp, struct regional* regional, + uint8_t* name, uint8_t lame, char* tls_auth_name, int port); /** * Add NS rrset; calls add_ns repeatedly. @@ -271,12 +278,14 @@ int delegpt_add_rrset(struct delegpt* dp, struct regional* regional, * @param bogus: if address is bogus. * @param lame: if address is lame. * @param tls_auth_name: TLS authentication name (or NULL). + * @param port: the port to use; if -1 the port is taken from addr. * @param additions: will be set to 1 if a new address is added * @return false on error. */ -int delegpt_add_addr(struct delegpt* dp, struct regional* regional, +int delegpt_add_addr(struct delegpt* dp, struct regional* regional, struct sockaddr_storage* addr, socklen_t addrlen, - uint8_t bogus, uint8_t lame, char* tls_auth_name, int* additions); + uint8_t bogus, uint8_t lame, char* tls_auth_name, int port, + int* additions); /** * Find NS record in name list of delegation point. @@ -404,22 +413,27 @@ int delegpt_set_name_mlc(struct delegpt* dp, uint8_t* name); * @param dp: must have been created with delegpt_create_mlc. * @param name: the name to add. * @param lame: the name is lame, disprefer. + * @param tls_auth_name: TLS authentication name (or NULL). + * @param port: port to use for resolved addresses. * @return false on error. */ -int delegpt_add_ns_mlc(struct delegpt* dp, uint8_t* name, uint8_t lame); +int delegpt_add_ns_mlc(struct delegpt* dp, uint8_t* name, uint8_t lame, + char* tls_auth_name, int port); /** * add an address to a malloced delegation point. - * @param dp: must have been created with delegpt_create_mlc. + * @param dp: must have been created with delegpt_create_mlc. * @param addr: the address. * @param addrlen: the length of addr. * @param bogus: if address is bogus. * @param lame: if address is lame. * @param tls_auth_name: TLS authentication name (or NULL). + * @param port: the port to use; if -1 the port is taken from addr. * @return false on error. */ int delegpt_add_addr_mlc(struct delegpt* dp, struct sockaddr_storage* addr, - socklen_t addrlen, uint8_t bogus, uint8_t lame, char* tls_auth_name); + socklen_t addrlen, uint8_t bogus, uint8_t lame, char* tls_auth_name, + int port); /** * Add target address to the delegation point. diff --git a/iterator/iter_fwd.c b/iterator/iter_fwd.c index 128007a04..151372912 100644 --- a/iterator/iter_fwd.c +++ b/iterator/iter_fwd.c @@ -200,21 +200,27 @@ read_fwds_name(struct config_stub* s) } /** set fwd host names */ -static int +static int read_fwds_host(struct config_stub* s, struct delegpt* dp) { struct config_strlist* p; uint8_t* dname; - size_t dname_len; + char* tls_auth_name; + int port; for(p = s->hosts; p; p = p->next) { log_assert(p->str); - dname = sldns_str2wire_dname(p->str, &dname_len); + dname = authextstrtodname(p->str, &port, &tls_auth_name); if(!dname) { log_err("cannot parse forward %s server name: '%s'", s->name, p->str); return 0; } - if(!delegpt_add_ns_mlc(dp, dname, 0)) { +#if ! defined(HAVE_SSL_SET1_HOST) && ! defined(HAVE_X509_VERIFY_PARAM_SET1_HOST) + if(tls_auth_name) + log_err("no name verification functionality in " + "ssl library, ignored name for %s", p->str); +#endif + if(!delegpt_add_ns_mlc(dp, dname, 0, tls_auth_name, port)) { free(dname); log_err("out of memory"); return 0; @@ -245,7 +251,7 @@ read_fwds_addr(struct config_stub* s, struct delegpt* dp) "ssl library, ignored name for %s", p->str); #endif if(!delegpt_add_addr_mlc(dp, &addr, addrlen, 0, 0, - tls_auth_name)) { + tls_auth_name, -1)) { log_err("out of memory"); return 0; } diff --git a/iterator/iter_hints.c b/iterator/iter_hints.c index 5819cfb17..9b1a200bb 100644 --- a/iterator/iter_hints.c +++ b/iterator/iter_hints.c @@ -99,7 +99,7 @@ ah(struct delegpt* dp, const char* sv, const char* ip) log_err("could not parse %s", sv); return 0; } - if(!delegpt_add_ns_mlc(dp, dname, 0) || + if(!delegpt_add_ns_mlc(dp, dname, 0, NULL, UNBOUND_DNS_PORT) || !extstrtoaddr(ip, &addr, &addrlen) || !delegpt_add_target_mlc(dp, dname, dname_len, &addr, addrlen, 0, 0)) { @@ -213,21 +213,27 @@ read_stubs_name(struct config_stub* s) } /** set stub host names */ -static int +static int read_stubs_host(struct config_stub* s, struct delegpt* dp) { struct config_strlist* p; - size_t dname_len; uint8_t* dname; + char* tls_auth_name; + int port; for(p = s->hosts; p; p = p->next) { log_assert(p->str); - dname = sldns_str2wire_dname(p->str, &dname_len); + dname = authextstrtodname(p->str, &port, &tls_auth_name); if(!dname) { log_err("cannot parse stub %s nameserver name: '%s'", s->name, p->str); return 0; } - if(!delegpt_add_ns_mlc(dp, dname, 0)) { +#if ! defined(HAVE_SSL_SET1_HOST) && ! defined(HAVE_X509_VERIFY_PARAM_SET1_HOST) + if(tls_auth_name) + log_err("no name verification functionality in " + "ssl library, ignored name for %s", p->str); +#endif + if(!delegpt_add_ns_mlc(dp, dname, 0, tls_auth_name, port)) { free(dname); log_err("out of memory"); return 0; @@ -258,7 +264,7 @@ read_stubs_addr(struct config_stub* s, struct delegpt* dp) "ssl library, ignored name for %s", p->str); #endif if(!delegpt_add_addr_mlc(dp, &addr, addrlen, 0, 0, - auth_name)) { + auth_name, -1)) { log_err("out of memory"); return 0; } @@ -338,7 +344,7 @@ read_root_hints(struct iter_hints* hints, char* fname) if(sldns_wirerr_get_type(rr, rr_len, dname_len) == LDNS_RR_TYPE_NS) { if(!delegpt_add_ns_mlc(dp, sldns_wirerr_get_rdata(rr, - rr_len, dname_len), 0)) { + rr_len, dname_len), 0, NULL, UNBOUND_DNS_PORT)) { log_err("out of memory reading root hints"); goto stop_read; } diff --git a/iterator/iterator.c b/iterator/iterator.c index 69e7e53dd..55845158d 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -1988,12 +1988,13 @@ processLastResort(struct module_qstate* qstate, struct iter_qstate* iq, iq->chase_flags &= ~BIT_RD; /* go to authorities */ for(ns = p->nslist; ns; ns=ns->next) { (void)delegpt_add_ns(iq->dp, qstate->region, - ns->name, ns->lame); + ns->name, ns->lame, ns->tls_auth_name, + ns->port); } for(a = p->target_list; a; a=a->next_target) { (void)delegpt_add_addr(iq->dp, qstate->region, &a->addr, a->addrlen, a->bogus, - a->lame, a->tls_auth_name, NULL); + a->lame, a->tls_auth_name, -1, NULL); } } iq->dp->has_parent_side_NS = 1; @@ -3384,21 +3385,22 @@ processTargetResponse(struct module_qstate* qstate, int id, log_err("out of memory adding pside glue"); } - /* This response is relevant to the current query, so we - * add (attempt to add, anyway) this target(s) and reactivate - * the original event. - * NOTE: we could only look for the AnswerRRset if the + /* This response is relevant to the current query, so we + * add (attempt to add, anyway) this target(s) and reactivate + * the original event. + * NOTE: we could only look for the AnswerRRset if the * response type was ANSWER. */ rrset = reply_find_answer_rrset(&iq->qchase, qstate->return_msg->rep); if(rrset) { int additions = 0; /* if CNAMEs have been followed - add new NS to delegpt. */ /* BTW. RFC 1918 says NS should not have got CNAMEs. Robust. */ - if(!delegpt_find_ns(foriq->dp, rrset->rk.dname, + if(!delegpt_find_ns(foriq->dp, rrset->rk.dname, rrset->rk.dname_len)) { /* if dpns->lame then set newcname ns lame too */ - if(!delegpt_add_ns(foriq->dp, forq->region, - rrset->rk.dname, dpns->lame)) + if(!delegpt_add_ns(foriq->dp, forq->region, + rrset->rk.dname, dpns->lame, dpns->tls_auth_name, + dpns->port)) log_err("out of memory adding cnamed-ns"); } /* if dpns->lame then set the address(es) lame too */ diff --git a/util/net_help.c b/util/net_help.c index 428e61bc4..8bef56890 100644 --- a/util/net_help.c +++ b/util/net_help.c @@ -55,6 +55,7 @@ #include "util/config_file.h" #include "sldns/parseutil.h" #include "sldns/wire2str.h" +#include "sldns/str2wire.h" #include #ifdef HAVE_OPENSSL_SSL_H #include @@ -479,6 +480,42 @@ int authextstrtoaddr(char* str, struct sockaddr_storage* addr, return ipstrtoaddr(str, port, addr, addrlen); } +uint8_t* authextstrtodname(char* str, int* port, char** auth_name) +{ + char* s; + uint8_t* dname; + size_t dname_len; + *port = UNBOUND_DNS_PORT; + *auth_name = NULL; + if((s=strchr(str, '@'))) { + char* hash = strchr(s+1, '#'); + if(hash) { + *auth_name = hash+1; + } else { + *auth_name = NULL; + } + *port = atoi(s+1); + if(*port == 0) { + if(!hash && strcmp(s+1,"0")!=0) + return 0; + if(hash && strncmp(s+1,"0#",2)!=0) + return 0; + } + *s = 0; + dname = sldns_str2wire_dname(str, &dname_len); + *s = '@'; + } else if((s=strchr(str, '#'))) { + *port = UNBOUND_DNS_OVER_TLS_PORT; + *auth_name = s+1; + *s = 0; + dname = sldns_str2wire_dname(str, &dname_len); + *s = '#'; + } else { + dname = sldns_str2wire_dname(str, &dname_len); + } + return dname; +} + /** store port number into sockaddr structure */ void sockaddr_store_port(struct sockaddr_storage* addr, socklen_t addrlen, int port) diff --git a/util/net_help.h b/util/net_help.h index 79835270c..790036caf 100644 --- a/util/net_help.h +++ b/util/net_help.h @@ -210,17 +210,30 @@ int netblockstrtoaddr(const char* ip, int port, struct sockaddr_storage* addr, /** * Convert address string, with "@port" appendix, to sockaddr. * It can also have an "#tls-auth-name" appendix (after the port). - * The returned tls-auth-name string is a pointer into the input string. - * Uses DNS port by default. + * The returned auth_name string is a pointer into the input string. + * Uses DNS port by default; TLS port when a '#tls-auth-name' is configured. * @param str: the string * @param addr: where to store sockaddr. * @param addrlen: length of stored sockaddr is returned. * @param auth_name: returned pointer to tls_auth_name, or NULL if none. * @return 0 on error. */ -int authextstrtoaddr(char* str, struct sockaddr_storage* addr, +int authextstrtoaddr(char* str, struct sockaddr_storage* addr, socklen_t* addrlen, char** auth_name); +/** + * Convert domain string, with "@port" appendix, to dname. + * It can also have an "#tls-auth-name" appendix (after the port). + * The return port is the parsed port. + * Uses DNS port by default; TLS port when a '#tls-auth-name' is configured. + * The returned auth_name string is a pointer into the input string. + * @param str: the string + * @param port: pointer to be assigned the parsed port value. + * @param auth_name: returned pointer to tls_auth_name, or NULL if none. + * @return pointer to the dname. + */ +uint8_t* authextstrtodname(char* str, int* port, char** auth_name); + /** * Store port number into sockaddr structure * @param addr: sockaddr structure, ip4 or ip6. From 7ddd456f0242e6fa8020165b3be7a6cce24434b2 Mon Sep 17 00:00:00 2001 From: gthess Date: Tue, 1 Feb 2022 17:38:16 +0100 Subject: [PATCH 494/553] Fix typo from review Co-authored-by: Wouter Wijngaards --- testdata/ratelimit.tdir/ratelimit.pre | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testdata/ratelimit.tdir/ratelimit.pre b/testdata/ratelimit.tdir/ratelimit.pre index 928853ca7..2404cfc00 100644 --- a/testdata/ratelimit.tdir/ratelimit.pre +++ b/testdata/ratelimit.tdir/ratelimit.pre @@ -14,7 +14,7 @@ echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test echo "STUB_PORT=$STUB_PORT" >> .tpkg.var.test echo "CONTROL_PORT=$CONTROL_PORT" >> .tpkg.var.test -# start ldns-testnd +# start ldns-testns get_ldns_testns $LDNS_TESTNS -v -p $STUB_PORT ratelimit.testns >stub.log 2>&1 & STUB_PID=$! From b93aa79a0585634476736484c5d0a2579ea116da Mon Sep 17 00:00:00 2001 From: gthess Date: Tue, 1 Feb 2022 17:54:42 +0100 Subject: [PATCH 495/553] Prefer the libressl API from when it was available --- sldns/keyraw.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sldns/keyraw.c b/sldns/keyraw.c index a40f1e860..befe1f722 100644 --- a/sldns/keyraw.c +++ b/sldns/keyraw.c @@ -250,7 +250,8 @@ sldns_key_buf2dsa_raw(unsigned char* key, size_t len) if(!(dsa = DSA_new())) { return NULL; } -#if OPENSSL_VERSION_NUMBER < 0x10100000 +#if OPENSSL_VERSION_NUMBER < 0x10100000 || \ + (defined(HAVE_LIBRESSL) && LIBRESSL_VERSION_NUMBER < 0x02070000f) #ifndef S_SPLINT_S dsa->p = P; dsa->q = Q; @@ -428,7 +429,8 @@ sldns_key_buf2rsa_raw(unsigned char* key, size_t len) BN_free(modulus); return NULL; } -#if OPENSSL_VERSION_NUMBER < 0x10100000 +#if OPENSSL_VERSION_NUMBER < 0x10100000 || \ + (defined(HAVE_LIBRESSL) && LIBRESSL_VERSION_NUMBER < 0x02070000f) #ifndef S_SPLINT_S rsa->n = modulus; rsa->e = exponent; From a5e92219335b7ae68617dbca00df30fc7c32f626 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Tue, 1 Feb 2022 18:00:46 +0100 Subject: [PATCH 496/553] Changelog note for #603: - Merge PR #603 from fobser: Use OpenSSL 1.1 API to access DSA and RSA internals. --- doc/Changelog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index dd8ef17a2..56da7994b 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +1 February 2022: George + - Merge PR #603 from fobser: Use OpenSSL 1.1 API to access DSA and RSA + internals. + 31 January 2022: George - Fix review comment for use-after-free when failing to send UDP out. From 506d24c7a6e01819e8ef46c2460202fdb32b22b6 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Wed, 2 Feb 2022 10:47:08 +0100 Subject: [PATCH 497/553] Changelog entry for #532 - Merge PR #532 from Shchelk: Fix: buffer overflow bug. --- doc/Changelog | 3 +++ sldns/str2wire.c | 3 +++ 2 files changed, 6 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 56da7994b..8c992c4bf 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +2 February 2022: George + - Merge PR #532 from Shchelk: Fix: buffer overflow bug. + 1 February 2022: George - Merge PR #603 from fobser: Use OpenSSL 1.1 API to access DSA and RSA internals. diff --git a/sldns/str2wire.c b/sldns/str2wire.c index 769ba1b79..d2cefae1c 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -604,6 +604,9 @@ sldns_affix_token(sldns_buffer* strbuf, char* token, size_t* token_len, size_t addstrlen = 0; /* add space */ + /* when addlen < 2, the token buffer is full considering the NULL byte + * from strlen and will lead to buffer overflow with the second + * assignement below. */ if(addlen < 2) return 0; token[*token_strlen] = ' '; token[++(*token_strlen)] = 0; From c6b413069d0364773239e17280cc03d5bd8b747d Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Wed, 2 Feb 2022 11:18:14 +0100 Subject: [PATCH 498/553] Changelog entry for #616 - Merge PR #616: Update ratelimit logic. It also introduces ratelimit-backoff and ip-ratelimit-backoff configuration options. --- doc/Changelog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 8c992c4bf..c5658988f 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,7 @@ 2 February 2022: George - Merge PR #532 from Shchelk: Fix: buffer overflow bug. + - Merge PR #616: Update ratelimit logic. It also introduces + ratelimit-backoff and ip-ratelimit-backoff configuration options. 1 February 2022: George - Merge PR #603 from fobser: Use OpenSSL 1.1 API to access DSA and RSA From 32c3bbd249380143b2cb02134215aa9271b839f1 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Wed, 2 Feb 2022 11:25:08 +0100 Subject: [PATCH 499/553] - Change aggressive-nsec default to yes. --- doc/Changelog | 1 + doc/example.conf.in | 2 +- doc/unbound.conf.5.in | 2 +- testdata/root_key_sentinel.rpl | 4 ++-- util/config_file.c | 2 +- 5 files changed, 6 insertions(+), 5 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index c5658988f..ea5f8314d 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -2,6 +2,7 @@ - Merge PR #532 from Shchelk: Fix: buffer overflow bug. - Merge PR #616: Update ratelimit logic. It also introduces ratelimit-backoff and ip-ratelimit-backoff configuration options. + - Change aggressive-nsec default to yes. 1 February 2022: George - Merge PR #603 from fobser: Use OpenSSL 1.1 API to access DSA and RSA diff --git a/doc/example.conf.in b/doc/example.conf.in index 64f4cd988..76ac604f9 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -442,7 +442,7 @@ server: # Aggressive NSEC uses the DNSSEC NSEC chain to synthesize NXDOMAIN # and other denials, using information from previous NXDOMAINs answers. - # aggressive-nsec: no + # aggressive-nsec: yes # Use 0x20-encoded random bits in the query to foil spoof attempts. # This feature is an experimental implementation of draft dns-0x20. diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index bb556300b..756c02855 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -973,7 +973,7 @@ This option only has effect when qname-minimisation is enabled. Default is no. .B aggressive\-nsec: \fI Aggressive NSEC uses the DNSSEC NSEC chain to synthesize NXDOMAIN and other denials, using information from previous NXDOMAINs answers. -Default is no. It helps to reduce the query rate towards targets that get +Default is yes. It helps to reduce the query rate towards targets that get a very high nonexistent name lookup rate. .TP .B private\-address: \fI diff --git a/testdata/root_key_sentinel.rpl b/testdata/root_key_sentinel.rpl index 1b66c5aac..2310953ad 100644 --- a/testdata/root_key_sentinel.rpl +++ b/testdata/root_key_sentinel.rpl @@ -175,11 +175,11 @@ REPLY QR RD RA AD DO NXDOMAIN SECTION QUESTION root-key-sentinel-not-ta-20326. IN A SECTION AUTHORITY -. 86400 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2018042300 1800 900 604800 86400 -. 86400 IN RRSIG SOA 8 0 86400 20180506050000 20180423040000 39570 . LboVfcSRUSuBcZPpkkOO1N6KpGO6DBzOGL6UtSVUssycPzGIZctcIM0s Kb71iBf3rxFjNVlgCuNFb74WpCyRQ2coB2uUQXVA81A+P4Qb62/s3Nr2 pRGxayA1Y0Uq2M4CRkh3bjgn/cEcEFSWTl+xDVjZO8hX98JdQjYmrVui 4zEQhsMM03sqkmjkH88owibWK7HDl6O0n6Imer2hCsVTlFv7PSrBHlXP KntkIMDtbGHZW/BkKnA6P1jfAVfgXr70bRVaDRddLqJp3EX6EuR83osg 8q46170NgCMCKK3ePItJYF16SEADFKdOQs19CMTXAN7M1p4cnGk2yRG/ 68BmCg== . 86400 IN NSEC aaa. NS SOA RRSIG NSEC DNSKEY . 86400 IN RRSIG NSEC 8 0 86400 20180506050000 20180423040000 39570 . E1FeP4/GvcPksKXgas9pslduWU6+cqqSoJpgtCeymd6t7MORbnsQJdUo rjqbRtxvOOnv5g4uVZdv0krSc/eqw8HWEiCW0oZWYLcz+h8eI4htt4uv 8LciVgQn3Aspic2b8uWdPTJUPuc94esn5AJZDMK9VOTwZD2UVqbv/k9U 4LG0o56yRQshYTG2hiutFXLYmzFe2YmKct6G7W50O7s5hwxTqqRwv9av 1Q3UZUj/ZARNt9z53pygJsDPDX+L2q4lowtiHJCRPjijm8K3Bwb8uFsG 3YB20K9d3krack9c6gAMJzpgeuFQ/b2HxiZMJPvJ3tHqIhDn0U5qoZdT Xq0WTw== room. 86400 IN NSEC rs. NS DS RRSIG NSEC room. 86400 IN RRSIG NSEC 8 1 86400 20180506050000 20180423040000 39570 . Fmhf8s0yVixynVdO6VWLEctcvb7+3UK9gu+9BhUPBS0SNedhMwfyiYaR MzWU9P99gVYUT1G/vXRqbAabtD3Ccnt/ydUBguZq3pV5GL+7czeEbZ5z 8/LlS+wyw2OTe4DOKzBZ7oZAA/r/Tz2bhVA6kNyIKFXAmBXuh7I5Ty7H elbIWh7Lq7QjZwN9LL4M1kSNePH2cmS3Lu/scRf3m3fN/70sgoYzKNB7 +Hbi/YjXBbRIcj7tHA6iMoZLGPXRMJdb6NqJNIaDIDtOA95cFa4oRx2P usBW9lpXG0YY+KDm1J6UjxUP7TIn0yXt+c0vy2cz7zu++ZEkdU29WtBG dUQEaA== +. 86400 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2018042300 1800 900 604800 86400 +. 86400 IN RRSIG SOA 8 0 86400 20180506050000 20180423040000 39570 . LboVfcSRUSuBcZPpkkOO1N6KpGO6DBzOGL6UtSVUssycPzGIZctcIM0s Kb71iBf3rxFjNVlgCuNFb74WpCyRQ2coB2uUQXVA81A+P4Qb62/s3Nr2 pRGxayA1Y0Uq2M4CRkh3bjgn/cEcEFSWTl+xDVjZO8hX98JdQjYmrVui 4zEQhsMM03sqkmjkH88owibWK7HDl6O0n6Imer2hCsVTlFv7PSrBHlXP KntkIMDtbGHZW/BkKnA6P1jfAVfgXr70bRVaDRddLqJp3EX6EuR83osg 8q46170NgCMCKK3ePItJYF16SEADFKdOQs19CMTXAN7M1p4cnGk2yRG/ 68BmCg== ENTRY_END SCENARIO_END diff --git a/util/config_file.c b/util/config_file.c index 6fa1d114f..969d664b4 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -260,7 +260,7 @@ config_create(void) cfg->val_log_level = 0; cfg->val_log_squelch = 0; cfg->val_permissive_mode = 0; - cfg->aggressive_nsec = 0; + cfg->aggressive_nsec = 1; cfg->ignore_cd = 0; cfg->serve_expired = 0; cfg->serve_expired_ttl = 0; From 414a37ed2b5a777518dcd2676817ccdba594f5b7 Mon Sep 17 00:00:00 2001 From: gthess Date: Wed, 2 Feb 2022 11:53:38 +0100 Subject: [PATCH 500/553] Don't accidentaly introduce a troff macro Co-authored-by: Wouter Wijngaards --- doc/unbound.conf.5.in | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 3a293ca81..04f8fa16c 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -1844,16 +1844,16 @@ Name of the stub zone. This is the full domain name of the zone. Name of stub zone nameserver. Is itself resolved before it is used. To use a nondefault port for DNS communication append '@' with the port number. If tls is enabled, then you can append a '#' and a name, then it'll check the -tls authentication certificates with that name. If you combine the '@' and -'#', the '@' comes first. If only '#' is used the default port is the +tls authentication certificates with that name. If you combine the '@' +and '#', the '@' comes first. If only '#' is used the default port is the configured tls\-port. .TP .B stub\-addr: \fI IP address of stub zone nameserver. Can be IP 4 or IP 6. To use a nondefault port for DNS communication append '@' with the port number. If tls is enabled, then you can append a '#' and a name, then it'll check the -tls authentication certificates with that name. If you combine the '@' and -'#', the '@' comes first. If only '#' is used the default port is the +tls authentication certificates with that name. If you combine the '@' +and '#', the '@' comes first. If only '#' is used the default port is the configured tls\-port. .TP .B stub\-prime: \fI @@ -1907,16 +1907,16 @@ Name of the forward zone. This is the full domain name of the zone. Name of server to forward to. Is itself resolved before it is used. To use a nondefault port for DNS communication append '@' with the port number. If tls is enabled, then you can append a '#' and a name, then it'll check the -tls authentication certificates with that name. If you combine the '@' and -'#', the '@' comes first. If only '#' is used the default port is the +tls authentication certificates with that name. If you combine the '@' +and '#', the '@' comes first. If only '#' is used the default port is the configured tls\-port. .TP .B forward\-addr: \fI IP address of server to forward to. Can be IP 4 or IP 6. To use a nondefault port for DNS communication append '@' with the port number. If tls is enabled, then you can append a '#' and a name, then it'll check the -tls authentication certificates with that name. If you combine the '@' and -'#', the '@' comes first. If only '#' is used the default port is the +tls authentication certificates with that name. If you combine the '@' +and '#', the '@' comes first. If only '#' is used the default port is the configured tls\-port. .IP At high verbosity it logs the TLS certificate, with TLS enabled. From 819008cf7e5ba6bc4cf6f0851eeb0bbf1875c750 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Wed, 2 Feb 2022 11:57:36 +0100 Subject: [PATCH 501/553] - Merge PR #617: Update stub/forward-host notation to accept port and tls-auth-name. --- doc/Changelog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index ea5f8314d..b978e1da7 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -3,6 +3,8 @@ - Merge PR #616: Update ratelimit logic. It also introduces ratelimit-backoff and ip-ratelimit-backoff configuration options. - Change aggressive-nsec default to yes. + - Merge PR #617: Update stub/forward-host notation to accept port and + tls-auth-name. 1 February 2022: George - Merge PR #603 from fobser: Use OpenSSL 1.1 API to access DSA and RSA From b1feb9fb1e33e19e9232e4de6cf11f0ec9c8c3aa Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Wed, 2 Feb 2022 12:54:09 +0100 Subject: [PATCH 502/553] - Update stream_ssl.tdir test to also use the new forward-host notation. --- doc/Changelog | 1 + testdata/stream_ssl.tdir/stream_ssl.clie.conf | 4 +++ testdata/stream_ssl.tdir/stream_ssl.serv.conf | 2 ++ testdata/stream_ssl.tdir/stream_ssl.test | 34 +++++++++++++++++++ 4 files changed, 41 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index b978e1da7..dd405b1cf 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -5,6 +5,7 @@ - Change aggressive-nsec default to yes. - Merge PR #617: Update stub/forward-host notation to accept port and tls-auth-name. + - Update stream_ssl test to also use the new forward-host notation. 1 February 2022: George - Merge PR #603 from fobser: Use OpenSSL 1.1 API to access DSA and RSA diff --git a/testdata/stream_ssl.tdir/stream_ssl.clie.conf b/testdata/stream_ssl.tdir/stream_ssl.clie.conf index 4643c6d55..923ab1fb5 100644 --- a/testdata/stream_ssl.tdir/stream_ssl.clie.conf +++ b/testdata/stream_ssl.tdir/stream_ssl.clie.conf @@ -16,3 +16,7 @@ server: forward-zone: name: "." forward-addr: "127.0.0.1@@SERVPORT@#unbound" + +forward-zone: + name: "test.host." + forward-host: "unbound.server@@SERVPORT@#unbound" diff --git a/testdata/stream_ssl.tdir/stream_ssl.serv.conf b/testdata/stream_ssl.tdir/stream_ssl.serv.conf index c77e39fc5..a5dfcf364 100644 --- a/testdata/stream_ssl.tdir/stream_ssl.serv.conf +++ b/testdata/stream_ssl.tdir/stream_ssl.serv.conf @@ -10,6 +10,8 @@ server: username: "" do-not-query-localhost: yes local-data: "www.example.com. IN A 10.20.30.40" + local-data: "unbound.server. IN A 127.0.0.1" + local-data: "test.host. IN A 1.2.3.4" ssl-port: @SERVPORT@ ssl-service-key: "unbound_server.key" ssl-service-pem: "unbound_server.pem" diff --git a/testdata/stream_ssl.tdir/stream_ssl.test b/testdata/stream_ssl.tdir/stream_ssl.test index b5bc2d911..39972a844 100644 --- a/testdata/stream_ssl.tdir/stream_ssl.test +++ b/testdata/stream_ssl.tdir/stream_ssl.test @@ -73,4 +73,38 @@ else exit 1 fi +rm -f outfile + +# test client unbound (no SSL towards it, but it does SSL to the SSL service) +# test that forward-host notation also works. +echo "> dig test.host. A IN" +dig @127.0.0.1 -p $CLIE_PORT test.host. >outfile 2>&1 +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + echo "SSLSERVICE" + cat unboundserv.log + echo "SSLCLIENT" + cat unboundclie.log + echo "Not OK" + exit 1 +else + echo "exit status OK" +fi +echo "> cat logfiles" +cat outfile +echo "SSLSERVICE" +cat unboundserv.log +echo "SSLCLIENT" +cat unboundclie.log +echo "> check answer" +if grep "1.2.3.4" outfile; then + echo "OK" +else + echo "Not OK" + exit 1 +fi + +rm -f outfile exit 0 From ee3c4782399e59ce84c0fe4ae28cffe00c1f27ea Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 2 Feb 2022 13:09:51 +0100 Subject: [PATCH 503/553] - Update version number in repo to 1.15.0 for upcoming release, since it changes the aggressive-nsec default and the ratelimit change. --- configure | 26 +++++++++++++------------- configure.ac | 6 +++--- doc/Changelog | 4 ++++ 3 files changed, 20 insertions(+), 16 deletions(-) diff --git a/configure b/configure index 3b6a591c3..2e640c9ba 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.14.1. +# Generated by GNU Autoconf 2.69 for unbound 1.15.0. # # Report bugs to . # @@ -591,8 +591,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='unbound' PACKAGE_TARNAME='unbound' -PACKAGE_VERSION='1.14.1' -PACKAGE_STRING='unbound 1.14.1' +PACKAGE_VERSION='1.15.0' +PACKAGE_STRING='unbound 1.15.0' PACKAGE_BUGREPORT='unbound-bugs@nlnetlabs.nl or https://github.com/NLnetLabs/unbound/issues' PACKAGE_URL='' @@ -1466,7 +1466,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.14.1 to adapt to many kinds of systems. +\`configure' configures unbound 1.15.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1531,7 +1531,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of unbound 1.14.1:";; + short | recursive ) echo "Configuration of unbound 1.15.0:";; esac cat <<\_ACEOF @@ -1773,7 +1773,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -unbound configure 1.14.1 +unbound configure 1.15.0 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2482,7 +2482,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.14.1, which was +It was created by unbound $as_me 1.15.0, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2832,9 +2832,9 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu UNBOUND_VERSION_MAJOR=1 -UNBOUND_VERSION_MINOR=14 +UNBOUND_VERSION_MINOR=15 -UNBOUND_VERSION_MICRO=1 +UNBOUND_VERSION_MICRO=0 LIBUNBOUND_CURRENT=9 @@ -2920,7 +2920,7 @@ LIBUNBOUND_AGE=1 # 1.13.1 had 9:12:1 # 1.13.2 had 9:13:1 # 1.14.0 had 9:14:1 -# 1.14.1 had 9:15:1 +# 1.15.0 had 9:15:1 # Current -- the number of the binary API that we're implementing # Revision -- which iteration of the implementation of the binary @@ -21886,7 +21886,7 @@ _ACEOF -version=1.14.1 +version=1.15.0 date=`date +'%b %e, %Y'` @@ -22405,7 +22405,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.14.1, which was +This file was extended by unbound $as_me 1.15.0, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -22471,7 +22471,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.14.1 +unbound config.status 1.15.0 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 53d5f335c..5314b2e4e 100644 --- a/configure.ac +++ b/configure.ac @@ -10,8 +10,8 @@ sinclude(dnscrypt/dnscrypt.m4) # must be numbers. ac_defun because of later processing m4_define([VERSION_MAJOR],[1]) -m4_define([VERSION_MINOR],[14]) -m4_define([VERSION_MICRO],[1]) +m4_define([VERSION_MINOR],[15]) +m4_define([VERSION_MICRO],[0]) 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]) @@ -100,7 +100,7 @@ LIBUNBOUND_AGE=1 # 1.13.1 had 9:12:1 # 1.13.2 had 9:13:1 # 1.14.0 had 9:14:1 -# 1.14.1 had 9:15:1 +# 1.15.0 had 9:15: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 dd405b1cf..ec7b989d7 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -7,6 +7,10 @@ tls-auth-name. - Update stream_ssl test to also use the new forward-host notation. +2 February 2022: Wouter + - Update version number in repo to 1.15.0 for upcoming release, + since it changes the aggressive-nsec default and the ratelimit change. + 1 February 2022: George - Merge PR #603 from fobser: Use OpenSSL 1.1 API to access DSA and RSA internals. From e656be63f9bb3d4719287c0ed1b66ac224b871c4 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 2 Feb 2022 13:20:46 +0100 Subject: [PATCH 504/553] - Fix header comment for doxygen for authextstrtoaddr. --- doc/Changelog | 1 + util/net_help.h | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index ec7b989d7..4bcbbc360 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -10,6 +10,7 @@ 2 February 2022: Wouter - Update version number in repo to 1.15.0 for upcoming release, since it changes the aggressive-nsec default and the ratelimit change. + - Fix header comment for doxygen for authextstrtoaddr. 1 February 2022: George - Merge PR #603 from fobser: Use OpenSSL 1.1 API to access DSA and RSA diff --git a/util/net_help.h b/util/net_help.h index 790036caf..4dd398460 100644 --- a/util/net_help.h +++ b/util/net_help.h @@ -211,7 +211,7 @@ int netblockstrtoaddr(const char* ip, int port, struct sockaddr_storage* addr, * Convert address string, with "@port" appendix, to sockaddr. * It can also have an "#tls-auth-name" appendix (after the port). * The returned auth_name string is a pointer into the input string. - * Uses DNS port by default; TLS port when a '#tls-auth-name' is configured. + * Uses DNS port by default; TLS port when a "#tls-auth-name" is configured. * @param str: the string * @param addr: where to store sockaddr. * @param addrlen: length of stored sockaddr is returned. @@ -225,7 +225,7 @@ int authextstrtoaddr(char* str, struct sockaddr_storage* addr, * Convert domain string, with "@port" appendix, to dname. * It can also have an "#tls-auth-name" appendix (after the port). * The return port is the parsed port. - * Uses DNS port by default; TLS port when a '#tls-auth-name' is configured. + * Uses DNS port by default; TLS port when a "#tls-auth-name" is configured. * The returned auth_name string is a pointer into the input string. * @param str: the string * @param port: pointer to be assigned the parsed port value. From c53171d942b6adab3be4f08847587616826acc8a Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Wed, 2 Feb 2022 14:05:31 +0100 Subject: [PATCH 505/553] - Changelog entry clarification. --- doc/Changelog | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index dd405b1cf..83b327d80 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -5,7 +5,8 @@ - Change aggressive-nsec default to yes. - Merge PR #617: Update stub/forward-host notation to accept port and tls-auth-name. - - Update stream_ssl test to also use the new forward-host notation. + - Update stream_ssl.tdir test to also use the new forward-host + notation. 1 February 2022: George - Merge PR #603 from fobser: Use OpenSSL 1.1 API to access DSA and RSA From 2642319ea6c0e6a0688eff947d494d9a819e9490 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 2 Feb 2022 14:11:36 +0100 Subject: [PATCH 506/553] - please clang analyzer for loop in test code. --- doc/Changelog | 1 + testcode/petal.c | 3 +-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 4bcbbc360..ddde12e1f 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -11,6 +11,7 @@ - Update version number in repo to 1.15.0 for upcoming release, since it changes the aggressive-nsec default and the ratelimit change. - Fix header comment for doxygen for authextstrtoaddr. + - please clang analyzer for loop in test code. 1 February 2022: George - Merge PR #603 from fobser: Use OpenSSL 1.1 API to access DSA and RSA diff --git a/testcode/petal.c b/testcode/petal.c index 6ea3c34cd..63d3d452e 100644 --- a/testcode/petal.c +++ b/testcode/petal.c @@ -582,10 +582,9 @@ do_service(char* addr, int port, char* key, char* cert) { SSL_CTX* sslctx = setup_ctx(key, cert); int fd = setup_fd(addr, port); - int go = 1; if(fd == -1) print_exit("could not setup sockets"); if(verb) {printf("petal start\n"); fflush(stdout);} - while(go) { + while(1) { struct sockaddr_storage from; socklen_t flen = (socklen_t)sizeof(from); int s; From 893fb4d54b7c1174b70317fd30ba46971cf5bdcb Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 2 Feb 2022 14:47:57 +0100 Subject: [PATCH 507/553] - Fix docker splint test to use more portable uname. --- configure | 2 +- configure.ac | 2 +- doc/Changelog | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/configure b/configure index 2e640c9ba..48f9c2d02 100755 --- a/configure +++ b/configure @@ -17941,7 +17941,7 @@ if test "`uname`" = "NetBSD"; then fi -if test "`uname -o`" = "GNU/Linux"; then +if test "`uname`" = "Linux"; then # splint cannot parse modern c99 header files GCC_DOCKER_LINTFLAGS='-syntax' diff --git a/configure.ac b/configure.ac index 5314b2e4e..5c7da1978 100644 --- a/configure.ac +++ b/configure.ac @@ -816,7 +816,7 @@ if test "`uname`" = "NetBSD"; then AC_SUBST(NETBSD_LINTFLAGS) fi -if test "`uname -o`" = "GNU/Linux"; then +if test "`uname`" = "Linux"; then # splint cannot parse modern c99 header files GCC_DOCKER_LINTFLAGS='-syntax' AC_SUBST(GCC_DOCKER_LINTFLAGS) diff --git a/doc/Changelog b/doc/Changelog index be4b9bfd0..e554d2cf9 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -13,6 +13,7 @@ since it changes the aggressive-nsec default and the ratelimit change. - Fix header comment for doxygen for authextstrtoaddr. - please clang analyzer for loop in test code. + - Fix docker splint test to use more portable uname. 1 February 2022: George - Merge PR #603 from fobser: Use OpenSSL 1.1 API to access DSA and RSA From 50a312b8da184438d38fa19ea9a29dffc72a1242 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 2 Feb 2022 15:35:19 +0100 Subject: [PATCH 508/553] - Update contrib/aaaa-filter-iterator.patch with diff for current software version. --- contrib/aaaa-filter-iterator.patch | 56 +++++++++++++++--------------- doc/Changelog | 2 ++ 2 files changed, 30 insertions(+), 28 deletions(-) diff --git a/contrib/aaaa-filter-iterator.patch b/contrib/aaaa-filter-iterator.patch index 818b73a11..551313372 100644 --- a/contrib/aaaa-filter-iterator.patch +++ b/contrib/aaaa-filter-iterator.patch @@ -1,5 +1,5 @@ diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in -index 50f9224..09456f5 100644 +index 5a75e319..c6c6dbe2 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -970,6 +970,13 @@ potentially broken nameservers. A lot of domains will not be resolvable when @@ -17,13 +17,14 @@ index 50f9224..09456f5 100644 Aggressive NSEC uses the DNSSEC NSEC chain to synthesize NXDOMAIN and other denials, using information from previous NXDOMAINs answers. diff --git a/iterator/iter_scrub.c b/iterator/iter_scrub.c -index f093c1b..e55a224 100644 +index f093c1bf..e55a2246 100644 --- a/iterator/iter_scrub.c +++ b/iterator/iter_scrub.c -@@ -680,6 +680,32 @@ static int sanitize_nsec_is_overreach(sldns_buffer* pkt, +@@ -679,6 +679,32 @@ static int sanitize_nsec_is_overreach(sldns_buffer* pkt, + return 0; } - /** ++/** + * ASN: Lookup A records from rrset cache. + * @param qinfo: the question originally asked. + * @param env: module environment with config and cache. @@ -49,10 +50,9 @@ index f093c1b..e55a224 100644 + return 0; +} + -+/** + /** * Given a response event, remove suspect RRsets from the response. * "Suspect" rrsets are potentially poison. Note that this routine expects - * the response to be in a "normalized" state -- that is, all "irrelevant" @@ -698,6 +724,7 @@ scrub_sanitize(sldns_buffer* pkt, struct msg_parse* msg, struct query_info* qinfo, uint8_t* zonename, struct module_env* env, struct iter_env* ie) @@ -101,7 +101,7 @@ index f093c1b..e55a224 100644 if( (rrset->type == LDNS_RR_TYPE_A || rrset->type == LDNS_RR_TYPE_AAAA)) { diff --git a/iterator/iter_utils.c b/iterator/iter_utils.c -index 2482a1f..bd5ba24 100644 +index 2482a1f4..bd5ba243 100644 --- a/iterator/iter_utils.c +++ b/iterator/iter_utils.c @@ -177,6 +177,7 @@ iter_apply_cfg(struct iter_env* iter_env, struct config_file* cfg) @@ -113,10 +113,10 @@ index 2482a1f..bd5ba24 100644 } diff --git a/iterator/iterator.c b/iterator/iterator.c -index 48238a2..34ba249 100644 +index 54006940..768fe202 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c -@@ -2184,6 +2184,53 @@ processDSNSFind(struct module_qstate* qstate, struct iter_qstate* iq, int id) +@@ -2155,6 +2155,53 @@ processDSNSFind(struct module_qstate* qstate, struct iter_qstate* iq, int id) return 0; } @@ -170,7 +170,7 @@ index 48238a2..34ba249 100644 /** * This is the request event state where the request will be sent to one of -@@ -2243,6 +2290,13 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, +@@ -2216,6 +2263,13 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, return error_response(qstate, id, LDNS_RCODE_SERVFAIL); } @@ -184,7 +184,7 @@ index 48238a2..34ba249 100644 /* Make sure we have a delegation point, otherwise priming failed * or another failure occurred */ if(!iq->dp) { -@@ -3688,6 +3742,61 @@ processFinished(struct module_qstate* qstate, struct iter_qstate* iq, +@@ -3648,6 +3702,61 @@ processFinished(struct module_qstate* qstate, struct iter_qstate* iq, return 0; } @@ -246,7 +246,7 @@ index 48238a2..34ba249 100644 /* * Return priming query results to interested super querystates. * -@@ -3707,6 +3816,9 @@ iter_inform_super(struct module_qstate* qstate, int id, +@@ -3667,6 +3776,9 @@ iter_inform_super(struct module_qstate* qstate, int id, else if(super->qinfo.qtype == LDNS_RR_TYPE_DS && ((struct iter_qstate*) super->minfo[id])->state == DSNS_FIND_STATE) processDSNSResponse(qstate, id, super); @@ -256,7 +256,7 @@ index 48238a2..34ba249 100644 else if(qstate->return_rcode != LDNS_RCODE_NOERROR) error_supers(qstate, id, super); else if(qstate->is_priming) -@@ -3744,6 +3856,9 @@ iter_handle(struct module_qstate* qstate, struct iter_qstate* iq, +@@ -3704,6 +3816,9 @@ iter_handle(struct module_qstate* qstate, struct iter_qstate* iq, case INIT_REQUEST_3_STATE: cont = processInitRequest3(qstate, iq, id); break; @@ -266,7 +266,7 @@ index 48238a2..34ba249 100644 case QUERYTARGETS_STATE: cont = processQueryTargets(qstate, iq, ie, id); break; -@@ -4080,6 +4195,8 @@ iter_state_to_string(enum iter_state state) +@@ -4040,6 +4155,8 @@ iter_state_to_string(enum iter_state state) return "INIT REQUEST STATE (stage 2)"; case INIT_REQUEST_3_STATE: return "INIT REQUEST STATE (stage 3)"; @@ -275,7 +275,7 @@ index 48238a2..34ba249 100644 case QUERYTARGETS_STATE : return "QUERY TARGETS STATE"; case PRIME_RESP_STATE : -@@ -4104,6 +4221,7 @@ iter_state_is_responsestate(enum iter_state s) +@@ -4064,6 +4181,7 @@ iter_state_is_responsestate(enum iter_state s) case INIT_REQUEST_STATE : case INIT_REQUEST_2_STATE : case INIT_REQUEST_3_STATE : @@ -284,7 +284,7 @@ index 48238a2..34ba249 100644 case COLLECT_CLASS_STATE : return 0; diff --git a/iterator/iterator.h b/iterator/iterator.h -index a9e5856..ace68c6 100644 +index 8b840528..a61c4195 100644 --- a/iterator/iterator.h +++ b/iterator/iterator.h @@ -133,6 +133,9 @@ struct iter_env { @@ -297,10 +297,11 @@ index a9e5856..ace68c6 100644 /** lock on ratelimit counter */ lock_basic_type queries_ratelimit_lock; /** number of queries that have been ratelimited */ -@@ -188,6 +191,14 @@ enum iter_state { +@@ -187,6 +190,14 @@ enum iter_state { + */ INIT_REQUEST_3_STATE, - /** ++ /** + * This state is responsible for intercepting AAAA queries, + * and launch a A subquery on the same target, to populate the + * cache with A records, so the AAAA filter scrubbing logic can @@ -308,10 +309,9 @@ index a9e5856..ace68c6 100644 + */ + ASN_FETCH_A_FOR_AAAA_STATE, + -+ /** + /** * Each time a delegation point changes for a given query or a * query times out and/or wakes up, this state is (re)visited. - * This state is responsible for iterating through a list of @@ -376,6 +387,13 @@ struct iter_qstate { */ int refetch_glue; @@ -327,10 +327,10 @@ index a9e5856..ace68c6 100644 struct outbound_list outlist; diff --git a/pythonmod/interface.i b/pythonmod/interface.i -index 03483ab..a8c30b5 100644 +index 1ca8686a..d91b19ec 100644 --- a/pythonmod/interface.i +++ b/pythonmod/interface.i -@@ -994,6 +994,7 @@ struct config_file { +@@ -995,6 +995,7 @@ struct config_file { int harden_dnssec_stripped; int harden_referral_path; int use_caps_bits_for_id; @@ -339,7 +339,7 @@ index 03483ab..a8c30b5 100644 struct config_strlist* private_domain; size_t unwanted_threshold; diff --git a/util/config_file.c b/util/config_file.c -index 39050f5..326b0b9 100644 +index 969d664b..8d94b008 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -231,6 +231,7 @@ config_create(void) @@ -351,7 +351,7 @@ index 39050f5..326b0b9 100644 cfg->private_address = NULL; cfg->private_domain = NULL; diff --git a/util/config_file.h b/util/config_file.h -index 18910be..bd59144 100644 +index c7c9a0a4..e3aa15b0 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -285,6 +285,8 @@ struct config_file { @@ -364,7 +364,7 @@ index 18910be..bd59144 100644 struct config_strlist* caps_whitelist; /** strip away these private addrs from answers, no DNS Rebinding */ diff --git a/util/configlexer.lex b/util/configlexer.lex -index 71da924..b58b4b6 100644 +index 34a0e5dd..c890be2a 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -317,6 +317,7 @@ use-caps-for-id{COLON} { YDVAR(1, VAR_USE_CAPS_FOR_ID) } @@ -376,7 +376,7 @@ index 71da924..b58b4b6 100644 private-domain{COLON} { YDVAR(1, VAR_PRIVATE_DOMAIN) } prefetch-key{COLON} { YDVAR(1, VAR_PREFETCH_KEY) } diff --git a/util/configparser.y b/util/configparser.y -index 1daf853..cd39618 100644 +index d4f965f9..8cc237c6 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -97,6 +97,7 @@ extern struct config_parser_state* cfg_parser; @@ -387,7 +387,7 @@ index 1daf853..cd39618 100644 %token VAR_PRIVATE_DOMAIN VAR_REMOTE_CONTROL VAR_CONTROL_ENABLE %token VAR_CONTROL_INTERFACE VAR_CONTROL_PORT VAR_SERVER_KEY_FILE %token VAR_SERVER_CERT_FILE VAR_CONTROL_KEY_FILE VAR_CONTROL_CERT_FILE -@@ -245,6 +246,7 @@ content_server: server_num_threads | server_verbosity | server_port | +@@ -247,6 +248,7 @@ content_server: server_num_threads | server_verbosity | server_port | server_dlv_anchor_file | server_dlv_anchor | server_neg_cache_size | server_harden_referral_path | server_private_address | server_private_domain | server_extended_statistics | @@ -395,7 +395,7 @@ index 1daf853..cd39618 100644 server_local_data_ptr | server_jostle_timeout | server_unwanted_reply_threshold | server_log_time_ascii | server_domain_insecure | server_val_sig_skew_min | -@@ -1742,6 +1744,15 @@ server_caps_whitelist: VAR_CAPS_WHITELIST STRING_ARG +@@ -1754,6 +1756,15 @@ server_caps_whitelist: VAR_CAPS_WHITELIST STRING_ARG yyerror("out of memory"); } ; diff --git a/doc/Changelog b/doc/Changelog index e554d2cf9..e16be03f3 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -14,6 +14,8 @@ - Fix header comment for doxygen for authextstrtoaddr. - please clang analyzer for loop in test code. - Fix docker splint test to use more portable uname. + - Update contrib/aaaa-filter-iterator.patch with diff for current + software version. 1 February 2022: George - Merge PR #603 from fobser: Use OpenSSL 1.1 API to access DSA and RSA From c29b0e0a96c4d281aef40d69a11c564d6ed1a2c6 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 3 Feb 2022 09:03:09 +0100 Subject: [PATCH 509/553] - Fix for #611: Integer overflow in sldns_wire2str_pkt_scan. --- doc/Changelog | 3 +++ sldns/wire2str.c | 11 +++++++++++ 2 files changed, 14 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index e16be03f3..8af7d3f88 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +3 February 2022: Wouter + - Fix for #611: Integer overflow in sldns_wire2str_pkt_scan. + 2 February 2022: George - Merge PR #532 from Shchelk: Fix: buffer overflow bug. - Merge PR #616: Update ratelimit logic. It also introduces diff --git a/sldns/wire2str.c b/sldns/wire2str.c index 6a177ec0b..b70efe299 100644 --- a/sldns/wire2str.c +++ b/sldns/wire2str.c @@ -817,6 +817,7 @@ int sldns_wire2str_dname_scan(uint8_t** d, size_t* dlen, char** s, size_t* slen, unsigned i, counter=0; unsigned maxcompr = MAX_COMPRESS_PTRS; /* loop detection, max compr ptrs */ int in_buf = 1; + size_t dname_len = 0; if(comprloop) { if(*comprloop != 0) maxcompr = 30; /* for like ipv6 reverse name, per label */ @@ -872,6 +873,16 @@ int sldns_wire2str_dname_scan(uint8_t** d, size_t* dlen, char** s, size_t* slen, labellen = (uint8_t)*dlen; else if(!in_buf && pos+(size_t)labellen > pkt+pktlen) labellen = (uint8_t)(pkt + pktlen - pos); + dname_len += ((size_t)labellen)+1; + if(dname_len > LDNS_MAX_DOMAINLEN) { + /* dname_len counts the uncompressed length we have + * seen so far, and the domain name has become too + * long, prevent the loop from printing overly long + * content. */ + w += sldns_str_print(s, slen, + "ErrorDomainNameTooLong"); + return w; + } for(i=0; i<(unsigned)labellen; i++) { w += dname_char_print(s, slen, *pos++); } From c44fe07a07d1af2d9735bb1dba3dfce8a38bb851 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 4 Feb 2022 14:27:01 +0100 Subject: [PATCH 510/553] - Fix #412: cache invalidation issue with CNAME+A. --- doc/Changelog | 3 + iterator/iterator.c | 4 +- testdata/iter_cname_minimise.rpl | 179 +++++++++++++++++++++++++++++++ 3 files changed, 185 insertions(+), 1 deletion(-) create mode 100644 testdata/iter_cname_minimise.rpl diff --git a/doc/Changelog b/doc/Changelog index 8af7d3f88..19a314c2c 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +4 February 2022: Wouter + - Fix #412: cache invalidation issue with CNAME+A. + 3 February 2022: Wouter - Fix for #611: Integer overflow in sldns_wire2str_pkt_scan. diff --git a/iterator/iterator.c b/iterator/iterator.c index 54006940d..320d2e8fc 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -2832,7 +2832,9 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq, } if(!qstate->no_cache_store) iter_dns_store(qstate->env, &iq->response->qinfo, - iq->response->rep, 0, qstate->prefetch_leeway, + iq->response->rep, + iq->qchase.qtype != iq->response->qinfo.qtype, + qstate->prefetch_leeway, iq->dp&&iq->dp->has_parent_side_NS, qstate->region, qstate->query_flags); /* close down outstanding requests to be discarded */ diff --git a/testdata/iter_cname_minimise.rpl b/testdata/iter_cname_minimise.rpl new file mode 100644 index 000000000..b61c3e344 --- /dev/null +++ b/testdata/iter_cname_minimise.rpl @@ -0,0 +1,179 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: yes + module-config: "iterator" + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test cname chain resolution with qname minimisation. + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.44 +ENTRY_END +RANGE_END + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.44 +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.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +ns.example.com. IN A 1.2.3.44 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +www.example.com. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. 300 IN A 10.20.30.40 +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +c.example.com. IN A +SECTION ANSWER +c.example.com. 10 IN CNAME www.example.com. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +c.example.com. IN CNAME +SECTION ANSWER +c.example.com. 10 IN CNAME www.example.com. +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +c.example.com. IN CNAME +ENTRY_END + +STEP 20 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +c.example.com. IN CNAME +SECTION ANSWER +c.example.com. 10 IN CNAME www.example.com. +ENTRY_END + +STEP 30 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +c.example.com. IN A +ENTRY_END + +STEP 40 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +c.example.com. IN A +SECTION ANSWER +c.example.com. 10 IN CNAME www.example.com. +www.example.com. 300 IN A 10.20.30.40 +ENTRY_END + +SCENARIO_END From 5f724da8c57c5a6bf1d589b6651daec2dc39a9d1 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 7 Feb 2022 09:31:10 +0100 Subject: [PATCH 511/553] - Fix that TCP interface does not use TLS when TLS is also configured. --- doc/Changelog | 3 +++ services/listen_dnsport.c | 19 +++++++++++++------ 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 19a314c2c..f00a1b4a7 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +7 February 2022: Wouter + - Fix that TCP interface does not use TLS when TLS is also configured. + 4 February 2022: Wouter - Fix #412: cache invalidation issue with CNAME+A. diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index 983b96f09..d6a90f1e6 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -1369,17 +1369,17 @@ listen_create(struct comm_base* base, struct listen_port* ports, while(ports) { struct comm_point* cp = NULL; if(ports->ftype == listen_type_udp || - ports->ftype == listen_type_udp_dnscrypt) + ports->ftype == listen_type_udp_dnscrypt) { cp = comm_point_create_udp(base, ports->fd, front->udp_buff, cb, cb_arg, ports->socket); - else if(ports->ftype == listen_type_tcp || - ports->ftype == listen_type_tcp_dnscrypt) + } else if(ports->ftype == listen_type_tcp || + ports->ftype == listen_type_tcp_dnscrypt) { cp = comm_point_create_tcp(base, ports->fd, tcp_accept_count, tcp_idle_timeout, harden_large_queries, 0, NULL, tcp_conn_limit, bufsize, front->udp_buff, ports->ftype, cb, cb_arg, ports->socket); - else if(ports->ftype == listen_type_ssl || + } else if(ports->ftype == listen_type_ssl || ports->ftype == listen_type_http) { cp = comm_point_create_tcp(base, ports->fd, tcp_accept_count, tcp_idle_timeout, @@ -1410,15 +1410,22 @@ listen_create(struct comm_base* base, struct listen_port* ports, #endif } } else if(ports->ftype == listen_type_udpancil || - ports->ftype == listen_type_udpancil_dnscrypt) + ports->ftype == listen_type_udpancil_dnscrypt) { cp = comm_point_create_udp_ancil(base, ports->fd, front->udp_buff, cb, cb_arg, ports->socket); + } if(!cp) { log_err("can't create commpoint"); listen_delete(front); return NULL; } - if(http_notls && ports->ftype == listen_type_http) + if((http_notls && ports->ftype == listen_type_http) || + (ports->ftype == listen_type_tcp) || + (ports->ftype == listen_type_udp) || + (ports->ftype == listen_type_udpancil) || + (ports->ftype == listen_type_tcp_dnscrypt) || + (ports->ftype == listen_type_udp_dnscrypt) || + (ports->ftype == listen_type_udpancil_dnscrypt)) cp->ssl = NULL; else cp->ssl = sslctx; From 58ac43c7546ae2c5a6d753be26ff61dfe40aa3c4 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 7 Feb 2022 11:31:41 +0100 Subject: [PATCH 512/553] Note 1.15.0rc1 tag creation in Changelog. - Tag for 1.15.0rc1 created. --- doc/Changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/Changelog b/doc/Changelog index f00a1b4a7..a114b0c55 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -6,6 +6,7 @@ 3 February 2022: Wouter - Fix for #611: Integer overflow in sldns_wire2str_pkt_scan. + - Tag for 1.15.0rc1 created. 2 February 2022: George - Merge PR #532 from Shchelk: Fix: buffer overflow bug. From ed4ce7b398b20d0842a048d681d7dcceca0f61fa Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 10 Feb 2022 09:54:51 +0100 Subject: [PATCH 513/553] Release 1.15.0 on 10 feb 2022. The repository continues with version 1.15.1. And Changelog note. --- configure | 25 +++++++++++++------------ configure.ac | 5 +++-- doc/Changelog | 3 ++- 3 files changed, 18 insertions(+), 15 deletions(-) diff --git a/configure b/configure index 48f9c2d02..b56720f96 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.15.0. +# Generated by GNU Autoconf 2.69 for unbound 1.15.1. # # Report bugs to . # @@ -591,8 +591,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='unbound' PACKAGE_TARNAME='unbound' -PACKAGE_VERSION='1.15.0' -PACKAGE_STRING='unbound 1.15.0' +PACKAGE_VERSION='1.15.1' +PACKAGE_STRING='unbound 1.15.1' PACKAGE_BUGREPORT='unbound-bugs@nlnetlabs.nl or https://github.com/NLnetLabs/unbound/issues' PACKAGE_URL='' @@ -1466,7 +1466,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.15.0 to adapt to many kinds of systems. +\`configure' configures unbound 1.15.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1531,7 +1531,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of unbound 1.15.0:";; + short | recursive ) echo "Configuration of unbound 1.15.1:";; esac cat <<\_ACEOF @@ -1773,7 +1773,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -unbound configure 1.15.0 +unbound configure 1.15.1 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2482,7 +2482,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.15.0, which was +It was created by unbound $as_me 1.15.1, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2834,11 +2834,11 @@ UNBOUND_VERSION_MAJOR=1 UNBOUND_VERSION_MINOR=15 -UNBOUND_VERSION_MICRO=0 +UNBOUND_VERSION_MICRO=1 LIBUNBOUND_CURRENT=9 -LIBUNBOUND_REVISION=15 +LIBUNBOUND_REVISION=16 LIBUNBOUND_AGE=1 # 1.0.0 had 0:12:0 # 1.0.1 had 0:13:0 @@ -2921,6 +2921,7 @@ LIBUNBOUND_AGE=1 # 1.13.2 had 9:13:1 # 1.14.0 had 9:14:1 # 1.15.0 had 9:15:1 +# 1.15.1 had 9:16:1 # Current -- the number of the binary API that we're implementing # Revision -- which iteration of the implementation of the binary @@ -21886,7 +21887,7 @@ _ACEOF -version=1.15.0 +version=1.15.1 date=`date +'%b %e, %Y'` @@ -22405,7 +22406,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.15.0, which was +This file was extended by unbound $as_me 1.15.1, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -22471,7 +22472,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.15.0 +unbound config.status 1.15.1 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 5c7da1978..9be7f1ee4 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],[15]) -m4_define([VERSION_MICRO],[0]) +m4_define([VERSION_MICRO],[1]) 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=15 +LIBUNBOUND_REVISION=16 LIBUNBOUND_AGE=1 # 1.0.0 had 0:12:0 # 1.0.1 had 0:13:0 @@ -101,6 +101,7 @@ LIBUNBOUND_AGE=1 # 1.13.2 had 9:13:1 # 1.14.0 had 9:14:1 # 1.15.0 had 9:15:1 +# 1.15.1 had 9:16: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 a114b0c55..c93008363 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -6,7 +6,8 @@ 3 February 2022: Wouter - Fix for #611: Integer overflow in sldns_wire2str_pkt_scan. - - Tag for 1.15.0rc1 created. + - Tag for 1.15.0rc1 created. That became 1.15.0 on 10 feb 2022. + The repository continues with version 1.15.1. 2 February 2022: George - Merge PR #532 from Shchelk: Fix: buffer overflow bug. From 4c6b59fa474956584116f9525464edb7bfe88669 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 11 Feb 2022 08:53:24 +0100 Subject: [PATCH 514/553] - Fix #624: Unable to stop Unbound in Windows console (does not respond to CTRL+C command). --- daemon/worker.c | 9 +++++++++ doc/Changelog | 4 ++++ 2 files changed, 13 insertions(+) diff --git a/daemon/worker.c b/daemon/worker.c index 862affb24..aee308d7d 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -1591,6 +1591,9 @@ worker_sighandler(int sig, void* arg) case SIGHUP: comm_base_exit(worker->base); break; +#endif +#ifdef SIGBREAK + case SIGBREAK: #endif case SIGINT: worker->need_to_exit = 1; @@ -1709,6 +1712,9 @@ worker_init(struct worker* worker, struct config_file *cfg, if(do_sigs) { #ifdef SIGHUP ub_thread_sig_unblock(SIGHUP); +#endif +#ifdef SIGBREAK + ub_thread_sig_unblock(SIGBREAK); #endif ub_thread_sig_unblock(SIGINT); #ifdef SIGQUIT @@ -1726,6 +1732,9 @@ worker_init(struct worker* worker, struct config_file *cfg, || !comm_signal_bind(worker->comsig, SIGQUIT) #endif || !comm_signal_bind(worker->comsig, SIGTERM) +#ifdef SIGBREAK + || !comm_signal_bind(worker->comsig, SIGBREAK) +#endif || !comm_signal_bind(worker->comsig, SIGINT)) { log_err("could not create signal handlers"); worker_delete(worker); diff --git a/doc/Changelog b/doc/Changelog index c93008363..abdf7c878 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +11 February 2022: Wouter + - Fix #624: Unable to stop Unbound in Windows console (does not + respond to CTRL+C command). + 7 February 2022: Wouter - Fix that TCP interface does not use TLS when TLS is also configured. From a0feea393a3a7f0ab0f88b3e1aa7a92cee0e0bb8 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 11 Feb 2022 10:58:53 +0100 Subject: [PATCH 515/553] - Fix #618: enabling interface-automatic disables DNS-over-TLS. Adds the option to list interface-automatic-ports. --- doc/Changelog | 2 + doc/example.conf.in | 4 + doc/unbound.conf.5.in | 9 + services/listen_dnsport.c | 58 + smallapp/unbound-checkconf.c | 24 + util/config_file.c | 4 + util/config_file.h | 2 + util/configlexer.c | 3006 ++++++++++++------------ util/configlexer.lex | 1 + util/configparser.c | 4255 ++++++++++++++++++++-------------- util/configparser.h | 13 +- util/configparser.y | 12 +- 12 files changed, 4112 insertions(+), 3278 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index abdf7c878..54bc8ac75 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,8 @@ 11 February 2022: Wouter - Fix #624: Unable to stop Unbound in Windows console (does not respond to CTRL+C command). + - Fix #618: enabling interface-automatic disables DNS-over-TLS. + Adds the option to list interface-automatic-ports. 7 February 2022: Wouter - Fix that TCP interface does not use TLS when TLS is also configured. diff --git a/doc/example.conf.in b/doc/example.conf.in index 76ac604f9..146ace827 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -55,6 +55,10 @@ server: # Socket options are not supported on all platforms. experimental. # interface-automatic: no + # instead of the default port, open additional ports separated by + # spaces when interface-automatic is enabled, by listing them here. + # interface-automatic-ports: "" + # port to answer queries from # port: 53 diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 5a75e3199..593bf860a 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -140,6 +140,15 @@ ip\-transparent you can select which (future) interfaces Unbound provides service on. This feature is experimental, and needs support in your OS for particular socket options. Default value is no. .TP +.B interface\-automatic\-ports: \fI +List the port numbers that interface-automatic listens on. If empty, the +default port is listened on. The port numbers are separated by spaces in the +string. Default is "". +.IP +This can be used to have interface automatic to deal with the interface, +and listen on the normal port number, by including it in the list, and +also https or dns over tls port numbers by putting them in the list as well. +.TP .B outgoing\-interface: \fI Interface to use to connect to the network. This interface is used to send queries to authoritative servers and receive their replies. Can be given diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index d6a90f1e6..afe4cb71d 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -47,6 +47,7 @@ #ifdef USE_TCP_FASTOPEN #include #endif +#include #include "services/listen_dnsport.h" #include "services/outside_network.h" #include "util/netevent.h" @@ -1716,6 +1717,63 @@ listening_ports_open(struct config_file* cfg, char** ifs, int num_ifs, } /* create ip4 and ip6 ports so that return addresses are nice. */ if(do_auto || num_ifs == 0) { + if(do_auto && cfg->if_automatic_ports && + cfg->if_automatic_ports[0]!=0) { + char* now = cfg->if_automatic_ports; + while(now && *now) { + char* after; + int extraport; + while(isspace((unsigned char)*now)) + now++; + if(!*now) + break; + after = now; + extraport = (int)strtol(now, &after, 10); + if(extraport < 0 || extraport > 65535) { + log_err("interface-automatic-ports port number out of range, at position %d of '%s'", (int)(now-cfg->if_automatic_ports)+1, cfg->if_automatic_ports); + listening_ports_free(list); + return NULL; + } + if(extraport == 0 && now == after) { + log_err("interface-automatic-ports could not be parsed, at position %d of '%s'", (int)(now-cfg->if_automatic_ports)+1, cfg->if_automatic_ports); + listening_ports_free(list); + return NULL; + } + now = after; + snprintf(portbuf, sizeof(portbuf), "%d", extraport); + if(do_ip6) { + hints.ai_family = AF_INET6; + if(!ports_create_if("::0", + do_auto, cfg->do_udp, do_tcp, + &hints, portbuf, &list, + cfg->so_rcvbuf, cfg->so_sndbuf, + cfg->ssl_port, cfg->tls_additional_port, + cfg->https_port, reuseport, cfg->ip_transparent, + cfg->tcp_mss, cfg->ip_freebind, + cfg->http_nodelay, cfg->use_systemd, + cfg->dnscrypt_port, cfg->ip_dscp)) { + listening_ports_free(list); + return NULL; + } + } + if(do_ip4) { + hints.ai_family = AF_INET; + if(!ports_create_if("0.0.0.0", + do_auto, cfg->do_udp, do_tcp, + &hints, portbuf, &list, + cfg->so_rcvbuf, cfg->so_sndbuf, + cfg->ssl_port, cfg->tls_additional_port, + cfg->https_port, reuseport, cfg->ip_transparent, + cfg->tcp_mss, cfg->ip_freebind, + cfg->http_nodelay, cfg->use_systemd, + cfg->dnscrypt_port, cfg->ip_dscp)) { + listening_ports_free(list); + return NULL; + } + } + } + return list; + } if(do_ip6) { hints.ai_family = AF_INET6; if(!ports_create_if(do_auto?"::0":"::1", diff --git a/smallapp/unbound-checkconf.c b/smallapp/unbound-checkconf.c index fe18c3c83..c44a1c98e 100644 --- a/smallapp/unbound-checkconf.c +++ b/smallapp/unbound-checkconf.c @@ -408,6 +408,29 @@ interfacechecks(struct config_file* cfg) } } +/** check interface-automatic-ports */ +static void +ifautomaticportschecks(char* ifautomaticports) +{ + char* now = ifautomaticports; + while(now && *now) { + char* after; + int extraport; + while(isspace((unsigned char)*now)) + now++; + if(!*now) + break; + after = now; + extraport = (int)strtol(now, &after, 10); + if(extraport < 0 || extraport > 65535) + fatal_exit("interface-automatic-ports: port out of range at position %d in '%s'", (int)(now-ifautomaticports)+1, ifautomaticports); + if(extraport == 0 && now == after) + fatal_exit("interface-automatic-ports: parse error at position %d in '%s'", (int)(now-ifautomaticports)+1, ifautomaticports); + log_info("extraport %d", extraport); + now = after; + } +} + /** check acl ips */ static void aclchecks(struct config_file* cfg) @@ -608,6 +631,7 @@ morechecks(struct config_file* cfg) warn_hosts("stub-host", cfg->stubs); warn_hosts("forward-host", cfg->forwards); interfacechecks(cfg); + ifautomaticportschecks(cfg->if_automatic_ports); aclchecks(cfg); tcpconnlimitchecks(cfg); diff --git a/util/config_file.c b/util/config_file.c index 969d664b4..19a44d834 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -195,6 +195,7 @@ config_create(void) cfg->use_systemd = 0; cfg->do_daemonize = 1; cfg->if_automatic = 0; + cfg->if_automatic_ports = NULL; cfg->so_rcvbuf = 0; cfg->so_sndbuf = 0; cfg->so_reuseport = REUSEPORT_DEFAULT; @@ -559,6 +560,7 @@ int config_set_option(struct config_file* cfg, const char* opt, else S_YNO("http-nodelay:", http_nodelay) else S_YNO("http-notls-downstream:", http_notls_downstream) else S_YNO("interface-automatic:", if_automatic) + else S_STR("interface-automatic-ports:", if_automatic_ports) else S_YNO("use-systemd:", use_systemd) else S_YNO("do-daemonize:", do_daemonize) else S_NUMBER_NONZERO("port:", port) @@ -990,6 +992,7 @@ config_get_option(struct config_file* cfg, const char* opt, else O_IFC(opt, "interface", num_ifs, ifs) else O_IFC(opt, "outgoing-interface", num_out_ifs, out_ifs) else O_YNO(opt, "interface-automatic", if_automatic) + else O_STR(opt, "interface-automatic-ports", if_automatic_ports) else O_DEC(opt, "port", port) else O_DEC(opt, "outgoing-range", outgoing_num_ports) else O_DEC(opt, "outgoing-num-tcp", outgoing_num_tcp) @@ -1534,6 +1537,7 @@ config_delete(struct config_file* cfg) free(cfg->directory); free(cfg->logfile); free(cfg->pidfile); + free(cfg->if_automatic_ports); free(cfg->target_fetch_policy); free(cfg->ssl_service_key); free(cfg->ssl_service_pem); diff --git a/util/config_file.h b/util/config_file.h index c7c9a0a48..54628c0c8 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -205,6 +205,8 @@ struct config_file { /** automatic interface for incoming messages. Uses ipv6 remapping, * and recvmsg/sendmsg ancillary data to detect interfaces, boolean */ int if_automatic; + /** extra ports to open if if_automatic enabled, or NULL for default */ + char* if_automatic_ports; /** SO_RCVBUF size to set on port 53 UDP socket */ size_t so_rcvbuf; /** SO_SNDBUF size to set on port 53 UDP socket */ diff --git a/util/configlexer.c b/util/configlexer.c index f95f2fc7e..7a052201d 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -354,8 +354,8 @@ static void yynoreturn yy_fatal_error ( const char* msg ); (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 358 -#define YY_END_OF_BUFFER 359 +#define YY_NUM_RULES 359 +#define YY_END_OF_BUFFER 360 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -363,399 +363,400 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[3558] = +static const flex_int16_t yy_accept[3565] = { 0, - 1, 1, 332, 332, 336, 336, 340, 340, 344, 344, - 1, 1, 348, 348, 352, 352, 359, 356, 1, 330, - 330, 357, 2, 357, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 332, 333, 333, 334, - 357, 336, 337, 337, 338, 357, 343, 340, 341, 341, - 342, 357, 344, 345, 345, 346, 357, 355, 331, 2, - 335, 357, 355, 351, 348, 349, 349, 350, 357, 352, - 353, 353, 354, 357, 356, 0, 1, 2, 2, 2, - 2, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 1, 1, 333, 333, 337, 337, 341, 341, 345, 345, + 1, 1, 349, 349, 353, 353, 360, 357, 1, 331, + 331, 358, 2, 358, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 333, 334, 334, 335, + 358, 337, 338, 338, 339, 358, 344, 341, 342, 342, + 343, 358, 345, 346, 346, 347, 358, 356, 332, 2, + 336, 358, 356, 352, 349, 350, 350, 351, 358, 353, + 354, 354, 355, 358, 357, 0, 1, 2, 2, 2, + 2, 357, 357, 357, 357, 357, 357, 357, 357, 357, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 332, - 0, 336, 0, 343, 0, 340, 344, 0, 355, 0, - 2, 2, 355, 351, 0, 348, 352, 0, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 333, + 0, 337, 0, 344, 0, 341, 345, 0, 356, 0, + 2, 2, 356, 352, 0, 349, 353, 0, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 355, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 356, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 130, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 140, 356, 356, 356, 356, 356, 356, 356, 355, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 131, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 141, 357, 357, 357, 357, 357, 357, 357, 356, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 112, 356, - 329, 356, 356, 356, 356, 356, 356, 356, 356, 8, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 113, 357, + 330, 357, 357, 357, 357, 357, 357, 357, 357, 8, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 131, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 145, 356, 356, 355, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 132, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 146, 357, 357, 356, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 322, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 323, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 355, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 67, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 251, 356, 14, - 15, 356, 19, 18, 356, 356, 235, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 356, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 68, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 252, 357, 14, + 15, 357, 19, 18, 357, 357, 236, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 138, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 233, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 3, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 139, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 234, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 3, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 355, 356, 356, - 356, 356, 356, 356, 356, 316, 356, 356, 315, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 339, 356, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 356, 357, 357, + 357, 357, 357, 357, 357, 317, 357, 357, 316, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 340, 357, - 356, 356, 356, 356, 356, 356, 356, 66, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 70, 356, 285, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 323, 324, 356, 356, - 356, 356, 356, 356, 356, 356, 71, 356, 356, 139, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 134, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 222, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 21, 356, + 357, 357, 357, 357, 357, 357, 357, 67, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 71, 357, 286, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 324, 325, 357, 357, + 357, 357, 357, 357, 357, 357, 72, 357, 357, 140, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 135, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 223, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 21, 357, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 165, 356, 356, 356, 356, 356, 355, 339, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 110, - 356, 356, 356, 356, 356, 356, 356, 293, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 191, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 166, 357, 357, 357, 357, 357, 356, 340, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 111, + 357, 357, 357, 357, 357, 357, 357, 294, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 192, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 164, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 109, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 35, 356, 356, 356, 356, 356, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 165, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 110, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 35, 357, 357, 357, 357, 357, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 36, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 68, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 137, 356, 356, 356, 355, 356, - 356, 356, 356, 356, 129, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 69, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 255, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 192, 356, 356, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 36, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 69, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 138, 357, 357, 357, 356, 357, + 357, 357, 357, 357, 130, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 70, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 256, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 193, 357, 357, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 57, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 273, 356, 356, 356, 356, 356, 356, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 57, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 274, 357, 357, 357, 357, 357, 357, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 61, 356, 62, 356, 356, 356, - 356, 356, 113, 356, 114, 356, 356, 356, 356, 356, - 111, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 7, 356, 356, 356, 356, 355, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 244, 356, 356, - 356, 356, 168, 356, 356, 356, 356, 356, 356, 356, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 62, 357, 63, 357, 357, 357, + 357, 357, 114, 357, 115, 357, 357, 357, 357, 357, + 112, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 7, 357, 357, 357, 357, 356, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 245, 357, 357, + 357, 357, 169, 357, 357, 357, 357, 357, 357, 357, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 256, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 48, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 58, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 214, 356, 213, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 257, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 48, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 58, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 215, 357, 214, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, - 356, 356, 356, 356, 356, 356, 356, 16, 17, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 72, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 221, 356, 356, 356, - 356, 356, 356, 116, 356, 115, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 205, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 146, 356, 356, 356, 355, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 104, 356, 356, 356, + 357, 357, 357, 357, 357, 357, 357, 16, 17, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 73, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 222, 357, 357, 357, + 357, 357, 357, 117, 357, 116, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 206, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 147, 357, 357, 357, 356, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 105, 357, 357, 357, - 356, 356, 356, 356, 356, 356, 92, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 234, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 97, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 65, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 208, 209, 356, 356, 356, + 357, 357, 357, 357, 357, 357, 93, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 235, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 98, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 66, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 209, 210, 357, 357, 357, - 287, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 6, 356, 356, 356, 356, 356, - 356, 356, 306, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 291, 356, 356, 356, 356, 356, 356, 356, 317, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 45, 356, 356, 356, 356, 47, - 356, 356, 356, 93, 356, 356, 356, 356, 356, 55, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 288, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 6, 357, 357, 357, 357, 357, + 357, 357, 307, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 292, 357, 357, 357, 357, 357, 357, 357, 318, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 45, 357, 357, 357, 357, 47, + 357, 357, 357, 94, 357, 357, 357, 357, 357, 55, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, - 356, 355, 356, 201, 356, 356, 356, 141, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 226, 356, - 202, 356, 356, 356, 241, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 56, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 143, 122, 356, 123, - 356, 356, 356, 356, 121, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 161, 356, 356, 53, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 272, 356, 356, 356, 356, + 357, 356, 357, 202, 357, 357, 357, 142, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 227, 357, + 203, 357, 357, 357, 242, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 56, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 144, 123, 357, 124, + 357, 357, 357, 357, 122, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 162, 357, 357, 53, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 273, 357, 357, 357, 357, - 356, 356, 356, 356, 356, 203, 356, 356, 356, 356, - 356, 206, 356, 212, 356, 356, 356, 356, 356, 356, - 240, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 108, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 135, 356, - 356, 356, 356, 356, 356, 356, 356, 63, 356, 356, - 356, 29, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 20, 356, 356, 356, 356, 356, - 356, 30, 39, 356, 173, 356, 356, 356, 356, 356, + 357, 357, 357, 357, 357, 204, 357, 357, 357, 357, + 357, 207, 357, 213, 357, 357, 357, 357, 357, 357, + 241, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 109, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 136, 357, + 357, 357, 357, 357, 357, 357, 357, 64, 357, 357, + 357, 29, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 20, 357, 357, 357, 357, 357, + 357, 30, 39, 357, 174, 357, 357, 357, 357, 357, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 199, - 356, 356, 355, 356, 356, 356, 356, 356, 356, 80, - 82, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 295, 356, 356, 356, 356, 252, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 124, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 160, 356, 49, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 200, + 357, 357, 356, 357, 357, 357, 357, 357, 357, 81, + 83, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 296, 357, 357, 357, 357, 253, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 125, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 161, 357, 49, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, - 310, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 167, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 304, 356, 356, 356, 232, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 320, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 185, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 117, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 180, 356, 193, 356, 356, + 311, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 168, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 305, 357, 357, 357, 233, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 321, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 186, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 118, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 181, 357, 194, 357, 357, - 356, 356, 356, 356, 356, 355, 356, 149, 356, 356, - 356, 356, 356, 103, 356, 356, 356, 356, 224, 356, - 356, 356, 356, 356, 356, 242, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 264, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 142, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 184, 356, 356, 356, 356, 356, 356, 83, 356, - 84, 356, 356, 356, 356, 356, 356, 64, 313, 356, - 356, 356, 356, 356, 91, 194, 356, 215, 356, 245, + 357, 357, 357, 357, 357, 356, 357, 150, 357, 357, + 357, 357, 357, 104, 357, 357, 357, 357, 225, 357, + 357, 357, 357, 357, 357, 243, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 265, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 143, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 185, 357, 357, 357, 357, 357, 357, 84, 357, + 85, 357, 357, 357, 357, 357, 357, 65, 314, 357, + 357, 357, 357, 357, 92, 195, 357, 216, 357, 246, - 356, 356, 207, 288, 356, 356, 356, 356, 356, 356, - 76, 356, 196, 356, 356, 356, 356, 356, 356, 9, - 356, 356, 356, 356, 356, 107, 356, 356, 356, 356, - 356, 277, 356, 356, 356, 356, 223, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 355, 356, 356, 356, 356, 183, 356, 356, 356, 356, + 357, 357, 208, 289, 357, 357, 357, 357, 357, 357, + 77, 357, 197, 357, 357, 357, 357, 357, 357, 9, + 357, 357, 357, 357, 357, 108, 357, 357, 357, 357, + 357, 278, 357, 357, 357, 357, 224, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 356, 357, 357, 357, 357, 184, 357, 357, 357, 357, - 356, 356, 356, 356, 356, 356, 169, 356, 294, 356, - 356, 356, 356, 356, 263, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 236, 356, 356, 356, - 356, 356, 286, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 166, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 314, 356, 195, - 356, 356, 356, 356, 356, 356, 356, 356, 75, 77, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 106, 356, 356, 356, 356, 356, 275, 356, 356, 356, + 357, 357, 357, 357, 357, 357, 170, 357, 295, 357, + 357, 357, 357, 357, 264, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 237, 357, 357, 357, + 357, 357, 287, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 167, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 315, 357, 196, + 357, 357, 357, 357, 357, 357, 357, 357, 76, 78, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 107, 357, 357, 357, 357, 357, 276, 357, 357, 357, - 356, 290, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 228, 37, 31, 33, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 38, 356, 32, 34, 356, 356, 356, 356, 356, - 356, 356, 356, 102, 356, 179, 356, 356, 356, 356, - 356, 356, 356, 355, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 230, 227, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 74, 356, 356, 356, 144, - 356, 125, 356, 356, 356, 356, 356, 356, 356, 356, + 357, 291, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 229, 37, 31, 33, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 38, 357, 32, 34, 357, 357, 357, 357, 357, + 357, 357, 357, 103, 357, 180, 357, 357, 357, 357, + 357, 357, 357, 356, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 231, 228, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 75, 357, 357, 357, 145, + 357, 126, 357, 357, 357, 357, 357, 357, 357, 357, - 356, 356, 162, 50, 356, 356, 356, 347, 13, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 308, 356, 311, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 12, 356, 356, 22, 356, - 356, 356, 356, 356, 356, 281, 356, 356, 356, 356, - 292, 356, 356, 356, 356, 78, 356, 238, 356, 356, - 356, 356, 356, 229, 356, 356, 73, 356, 356, 356, - 356, 356, 356, 23, 356, 356, 46, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 178, - 177, 356, 356, 347, 356, 356, 356, 356, 356, 356, + 357, 357, 163, 50, 357, 357, 357, 348, 13, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 309, 357, 312, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 12, 357, 357, 22, 357, + 357, 357, 357, 357, 357, 282, 357, 357, 357, 357, + 293, 357, 357, 357, 357, 79, 357, 239, 357, 357, + 357, 357, 357, 230, 357, 357, 74, 357, 357, 357, + 357, 357, 357, 23, 357, 357, 46, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 179, + 178, 357, 357, 348, 357, 357, 357, 357, 357, 357, - 356, 356, 356, 231, 225, 356, 243, 356, 356, 296, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 85, 356, 356, 356, 356, 356, - 276, 356, 356, 356, 356, 211, 356, 356, 356, 356, - 356, 237, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 283, 356, 356, 356, 318, 319, 175, 356, 356, - 356, 79, 356, 356, 356, 356, 186, 356, 356, 356, - 118, 120, 119, 356, 356, 356, 25, 356, 356, 170, + 357, 357, 357, 232, 226, 357, 244, 357, 357, 297, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 86, 357, 357, 357, 357, 357, + 277, 357, 357, 357, 357, 212, 357, 357, 357, 357, + 357, 238, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 284, 357, 357, 357, 319, 320, 176, 357, 357, + 357, 80, 357, 357, 357, 357, 187, 357, 357, 357, + 119, 121, 120, 357, 357, 357, 25, 357, 357, 171, - 356, 172, 356, 216, 356, 356, 356, 356, 176, 356, - 356, 356, 356, 246, 356, 356, 356, 356, 356, 356, - 356, 151, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 254, 356, 356, 356, 356, 356, - 356, 356, 327, 356, 27, 356, 289, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 89, 217, 356, 356, 356, 274, 356, - 312, 356, 210, 356, 356, 356, 356, 356, 284, 59, - 356, 356, 356, 356, 356, 356, 4, 356, 356, 356, - 356, 133, 356, 150, 356, 356, 356, 190, 356, 356, + 357, 173, 357, 217, 357, 357, 357, 357, 177, 357, + 357, 357, 357, 247, 357, 357, 357, 357, 357, 357, + 357, 152, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 255, 357, 357, 357, 357, 357, + 357, 357, 328, 357, 27, 357, 290, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 90, 218, 357, 357, 357, 275, 357, + 313, 357, 211, 357, 357, 357, 357, 357, 285, 59, + 357, 357, 357, 357, 357, 357, 4, 357, 357, 357, + 357, 134, 357, 151, 357, 357, 357, 191, 357, 357, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 249, 40, 41, 356, - 356, 356, 356, 356, 356, 356, 297, 356, 356, 356, - 356, 356, 356, 356, 262, 356, 356, 356, 356, 356, - 356, 356, 356, 220, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 88, 356, - 60, 356, 280, 356, 250, 356, 356, 356, 356, 356, - 11, 356, 356, 356, 356, 356, 356, 356, 356, 132, - 356, 356, 356, 356, 356, 218, 94, 356, 356, 43, - 356, 356, 356, 356, 356, 356, 356, 356, 182, 356, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 250, 40, 41, 357, + 357, 357, 357, 357, 357, 357, 298, 357, 357, 357, + 357, 357, 357, 357, 263, 357, 357, 357, 357, 357, + 357, 357, 357, 221, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 89, 357, + 357, 60, 357, 281, 357, 251, 357, 357, 357, 357, + 357, 11, 357, 357, 357, 357, 357, 357, 357, 357, + 133, 357, 357, 357, 357, 357, 219, 95, 357, 357, + 43, 357, 357, 357, 357, 357, 357, 357, 357, 183, - 356, 356, 356, 356, 356, 356, 153, 356, 356, 356, - 356, 253, 356, 356, 356, 356, 356, 261, 356, 356, - 356, 356, 147, 356, 356, 356, 126, 128, 127, 356, - 356, 356, 96, 100, 95, 163, 356, 356, 356, 356, - 86, 282, 356, 356, 356, 356, 356, 356, 10, 356, - 356, 356, 356, 356, 278, 321, 356, 356, 356, 356, - 356, 356, 326, 42, 356, 356, 356, 356, 356, 181, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 101, 99, 356, 54, 356, + 357, 357, 357, 357, 357, 357, 357, 154, 357, 357, + 357, 357, 254, 357, 357, 357, 357, 357, 262, 357, + 357, 357, 357, 148, 357, 357, 357, 127, 129, 128, + 357, 357, 357, 97, 101, 96, 164, 357, 357, 357, + 357, 87, 357, 283, 357, 357, 357, 357, 357, 357, + 10, 357, 357, 357, 357, 357, 279, 322, 357, 357, + 357, 357, 357, 357, 327, 42, 357, 357, 357, 357, + 357, 182, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 102, 100, 357, - 356, 87, 309, 356, 356, 356, 356, 24, 356, 356, - 356, 356, 356, 204, 356, 356, 356, 356, 356, 356, - 219, 356, 356, 356, 356, 356, 356, 356, 356, 200, - 356, 356, 171, 81, 356, 356, 356, 356, 356, 298, - 356, 356, 356, 356, 356, 356, 356, 258, 356, 356, - 257, 148, 356, 356, 98, 51, 356, 154, 155, 158, - 159, 156, 157, 90, 307, 356, 356, 279, 136, 356, - 356, 356, 26, 356, 174, 356, 356, 356, 356, 198, - 356, 248, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 54, 357, 357, 88, 357, 310, 357, 357, 357, 357, + 24, 357, 357, 357, 357, 357, 205, 357, 357, 357, + 357, 357, 357, 220, 357, 357, 357, 357, 357, 357, + 357, 357, 201, 357, 357, 172, 82, 357, 357, 357, + 357, 357, 299, 357, 357, 357, 357, 357, 357, 357, + 259, 357, 357, 258, 149, 357, 357, 99, 51, 357, + 357, 155, 156, 159, 160, 157, 158, 91, 308, 357, + 357, 280, 137, 357, 357, 357, 26, 357, 175, 357, + 357, 357, 357, 199, 357, 249, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, - 356, 356, 188, 187, 44, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 305, 356, 356, - 356, 356, 105, 356, 247, 356, 271, 302, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 328, - 356, 52, 5, 356, 356, 239, 356, 356, 303, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 259, 28, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 260, 356, 356, 356, 152, 356, 356, 356, - 356, 356, 356, 356, 356, 189, 356, 197, 356, 356, + 357, 357, 357, 357, 357, 357, 357, 189, 188, 44, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 306, 357, 357, 357, 357, 106, 357, + 248, 357, 272, 303, 357, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 329, 357, 52, 61, 5, + 357, 357, 240, 357, 357, 304, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 260, 28, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 261, + 357, 357, 357, 153, 357, 357, 357, 357, 357, 357, - 356, 356, 356, 356, 356, 356, 356, 299, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 356, 356, 356, 356, 325, 356, 356, 267, 356, - 356, 356, 356, 356, 300, 356, 356, 356, 356, 356, - 356, 301, 356, 356, 356, 265, 356, 268, 269, 356, - 356, 356, 356, 356, 266, 270, 0 + 357, 357, 190, 357, 198, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 300, 357, 357, 357, 357, 357, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 357, 357, 326, 357, 357, 268, 357, 357, 357, 357, + 357, 301, 357, 357, 357, 357, 357, 357, 302, 357, + 357, 357, 266, 357, 269, 270, 357, 357, 357, 357, + 357, 267, 271, 0 } ; static const YY_CHAR yy_ec[256] = @@ -798,17 +799,17 @@ static const YY_CHAR yy_meta[41] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[3576] = +static const flex_int16_t yy_base[3583] = { 0, 0, 0, 38, 41, 44, 46, 59, 65, 71, 77, - 90, 112, 96, 118, 124, 136, 3060, 2545, 81, 6947, - 6947, 6947, 129, 52, 130, 63, 131, 152, 70, 140, + 90, 112, 96, 118, 124, 136, 3060, 2545, 81, 6961, + 6961, 6961, 129, 52, 130, 63, 131, 152, 70, 140, 149, 156, 57, 88, 76, 173, 175, 95, 197, 145, - 185, 199, 208, 213, 178, 123, 2505, 6947, 6947, 6947, - 107, 2460, 6947, 6947, 6947, 154, 2315, 2089, 6947, 6947, - 6947, 245, 2007, 6947, 6947, 6947, 163, 1936, 6947, 249, - 6947, 253, 148, 1835, 1793, 6947, 6947, 6947, 257, 1696, - 6947, 6947, 6947, 233, 1543, 263, 201, 0, 267, 0, + 185, 199, 208, 213, 178, 123, 2505, 6961, 6961, 6961, + 107, 2460, 6961, 6961, 6961, 154, 2315, 2089, 6961, 6961, + 6961, 245, 2007, 6961, 6961, 6961, 163, 1936, 6961, 249, + 6961, 253, 148, 1835, 1793, 6961, 6961, 6961, 257, 1696, + 6961, 6961, 6961, 233, 1543, 263, 201, 0, 267, 0, 0, 165, 191, 221, 252, 205, 181, 265, 92, 261, 216, 263, 271, 272, 210, 279, 274, 282, 278, 291, @@ -838,10 +839,10 @@ static const flex_int16_t yy_base[3576] = 738, 742, 745, 743, 753, 754, 755, 759, 758, 774, 763, 764, 771, 784, 765, 767, 769, 775, 796, 785, 798, 799, 800, 803, 804, 801, 808, 807, 809, 811, - 823, 813, 820, 826, 827, 829, 830, 837, 832, 6947, + 823, 813, 820, 826, 827, 829, 830, 837, 832, 6961, 834, 836, 848, 847, 850, 853, 843, 859, 860, 839, 870, 866, 863, 881, 903, 867, 871, 873, 876, 872, - 6947, 893, 883, 927, 885, 889, 911, 895, 907, 913, + 6961, 893, 883, 927, 885, 889, 911, 895, 907, 913, 916, 909, 914, 921, 923, 917, 920, 944, 945, 935, 936, 947, 952, 951, 959, 960, 954, 958, 963, 971, @@ -850,16 +851,16 @@ static const flex_int16_t yy_base[3576] = 1011, 1012, 1020, 1006, 1014, 1028, 1026, 1024, 1034, 1033, 1035, 1007, 1041, 1039, 1044, 1051, 1048, 1054, 1063, 1058, 1059, 1060, 1064, 1065, 1066, 1068, 1071, 1072, 1073, 1076, - 1077, 1083, 1084, 1088, 1092, 1078, 1093, 1086, 6947, 1100, - 6947, 1095, 1098, 1102, 1103, 1104, 1105, 1107, 1109, 6947, + 1077, 1083, 1084, 1088, 1092, 1078, 1093, 1086, 6961, 1100, + 6961, 1095, 1098, 1102, 1103, 1104, 1105, 1107, 1109, 6961, 1111, 1114, 1113, 1120, 1124, 1117, 1128, 1130, 1136, 1137, 1138, 1139, 1140, 1142, 1149, 1144, 1154, 1152, 1147, 1158, 1156, 1159, 1115, 1160, 1162, 1166, 1167, 1168, 1169, 1188, - 6947, 1172, 1174, 1175, 1181, 1179, 1186, 1184, 1193, 1201, + 6961, 1172, 1174, 1175, 1181, 1179, 1186, 1184, 1193, 1201, 1203, 1211, 1205, 1213, 1215, 1212, 1217, 1173, 1219, 1223, 1225, 1228, 1229, 1231, 1232, 1234, 1235, 1237, 1238, 1240, - 1239, 1247, 1250, 1251, 6947, 1252, 1254, 1255, 1268, 1263, + 1239, 1247, 1250, 1251, 6961, 1252, 1254, 1255, 1268, 1263, 1264, 1267, 1269, 1270, 1271, 1272, 1274, 1278, 517, 1273, 1291, 1288, 1284, 1298, 1293, 1294, 1295, 1299, 1301, 1300, 1302, 1304, 1313, 1310, 1316, 1325, 1328, 1327, 1330, 1337, @@ -867,7 +868,7 @@ static const flex_int16_t yy_base[3576] = 1350, 1351, 1360, 1356, 1357, 1359, 1358, 1364, 1365, 1367, 1362, 1368, 1370, 1372, 1374, 1381, 1379, 1385, 1390, 1386, - 1391, 1387, 1380, 1395, 1403, 1397, 1406, 6947, 1413, 1308, + 1391, 1387, 1380, 1395, 1403, 1397, 1406, 6961, 1413, 1308, 1409, 1410, 1415, 1416, 1417, 1418, 1423, 1424, 1425, 1427, 1426, 1429, 1430, 1433, 1435, 1437, 1440, 1442, 1450, 1445, 1455, 1462, 1461, 1443, 1447, 1457, 1463, 1467, 1466, 1474, @@ -881,20 +882,20 @@ static const flex_int16_t yy_base[3576] = 1601, 1595, 1603, 1602, 1604, 1611, 1610, 1614, 1615, 1605, 1616, 1620, 1626, 1627, 1628, 1631, 1630, 1635, 1638, 1636, 1640, 1642, 1648, 1649, 1650, 1652, 1633, 1656, 1659, 1664, - 1667, 1661, 6947, 1657, 1675, 1651, 1673, 1674, 1653, 1679, - 1687, 1680, 1682, 1683, 1684, 1685, 1710, 6947, 1691, 6947, - 6947, 1690, 6947, 6947, 1693, 1692, 6947, 1694, 1695, 1708, + 1667, 1661, 6961, 1657, 1675, 1651, 1673, 1674, 1653, 1679, + 1687, 1680, 1682, 1683, 1684, 1685, 1710, 6961, 1691, 6961, + 6961, 1690, 6961, 6961, 1693, 1692, 6961, 1694, 1695, 1708, 1699, 1713, 1716, 1720, 1718, 1711, 1721, 1733, 1742, 1728, 1734, 1726, 1735, 1751, 1738, 1752, 1740, 1750, 1758, 1759, 1757, 1764, 1771, 1766, 1775, 1768, 1779, 1777, 1780, 1786, 1787, 1791, 1793, 1788, 1794, 1797, 1796, 1798, 1799, 1802, 1804, 1723, 1805, 1808, 1809, 1810, 1818, 1815, 1823, 1830, - 6947, 1828, 1831, 1827, 1840, 1836, 1843, 1811, 1838, 1839, + 6961, 1828, 1831, 1827, 1840, 1836, 1843, 1811, 1838, 1839, 1849, 1851, 1845, 1842, 1852, 1854, 1855, 1856, 1859, 1861, - 1864, 1867, 1865, 1869, 1872, 1870, 6947, 1877, 1878, 1871, + 1864, 1867, 1865, 1869, 1872, 1870, 6961, 1877, 1878, 1871, 1879, 1881, 1882, 1883, 1891, 1892, 1893, 1894, 1904, 1896, - 1899, 1897, 1901, 1906, 1908, 1909, 1911, 6947, 1916, 1924, + 1899, 1897, 1901, 1906, 1908, 1909, 1911, 6961, 1916, 1924, 1913, 1921, 1919, 1925, 1928, 1929, 1930, 1933, 1931, 1935, 1937, 1938, 1947, 1943, 1944, 1946, 1949, 1953, 1958, 1961, 1959, 1960, 1971, 1963, 1966, 1972, 1974, 1975, 1976, 1977, @@ -902,697 +903,699 @@ static const flex_int16_t yy_base[3576] = 1978, 1980, 1985, 1990, 1987, 1995, 1988, 1991, 1998, 2009, 2004, 1993, 2005, 2010, 2006, 2013, 2022, 2024, 2020, 2019, 2021, 2032, 2028, 2030, 2031, 2033, 2036, 2041, 2042, 2043, - 2044, 2046, 2050, 2051, 2053, 6947, 2055, 2059, 6947, 2058, + 2044, 2046, 2050, 2051, 2053, 6961, 2055, 2059, 6961, 2058, 2060, 2061, 2083, 2062, 2065, 2066, 2075, 2064, 2087, 2078, 2076, 2095, 2084, 2102, 2097, 2103, 2105, 2107, 2108, 2112, 2110, 2111, 2114, 2116, 2118, 2120, 2128, 2137, 2138, 2140, 2134, 2142, 2119, 2143, 2067, 2163, 2144, 2145, 2146, 2147, 2148, 2152, 2153, 2151, 2154, 2155, 2165, 2170, 2172, 2173, - 2175, 2158, 2179, 2180, 2181, 2191, 2188, 2185, 6947, 2200, + 2175, 2158, 2179, 2180, 2181, 2191, 2188, 2185, 6961, 2200, - 2193, 2197, 2201, 2202, 2209, 2207, 2204, 6947, 2208, 2210, + 2193, 2197, 2201, 2202, 2209, 2207, 2204, 6961, 2208, 2210, 2211, 2220, 2213, 2218, 2221, 2224, 2225, 2228, 2229, 2231, - 2233, 2230, 2232, 2251, 6947, 2234, 6947, 2238, 2235, 2253, - 2243, 2246, 2247, 2254, 2256, 2259, 6947, 6947, 2263, 2257, - 2270, 2273, 2278, 2274, 2275, 2276, 6947, 2277, 2285, 6947, + 2233, 2230, 2232, 2251, 6961, 2234, 6961, 2238, 2235, 2253, + 2243, 2246, 2247, 2254, 2256, 2259, 6961, 6961, 2263, 2257, + 2270, 2273, 2278, 2274, 2275, 2276, 6961, 2277, 2285, 6961, 2287, 2292, 2280, 2281, 2282, 2286, 2296, 2297, 2305, 2300, - 2308, 2303, 2306, 2307, 6947, 2313, 2316, 2310, 2317, 2323, - 2324, 2325, 2327, 2330, 2326, 6947, 2333, 2329, 2336, 2343, + 2308, 2303, 2306, 2307, 6961, 2313, 2316, 2310, 2317, 2323, + 2324, 2325, 2327, 2330, 2326, 6961, 2333, 2329, 2336, 2343, 2347, 2341, 2344, 2348, 2352, 2349, 2354, 2355, 2356, 2357, - 2364, 2366, 2369, 2371, 2372, 2374, 2378, 2385, 6947, 2381, + 2364, 2366, 2369, 2371, 2372, 2374, 2378, 2385, 6961, 2381, 2380, 2382, 2390, 2387, 2389, 2391, 2394, 2393, 2395, 2396, 2401, 2397, 2405, 2406, 2407, 2409, 2418, 2421, 2416, 2417, 2426, 2413, 2420, 2423, 2427, 2365, 2429, 2430, 2433, 2436, - 6947, 2437, 2441, 2438, 2443, 2444, 2442, 171, 2450, 2451, + 6961, 2437, 2441, 2438, 2443, 2444, 2442, 171, 2450, 2451, 2453, 2454, 2458, 2469, 2455, 2463, 2476, 2471, 2472, 2478, - 2474, 2481, 2482, 2483, 2484, 2473, 2486, 2485, 2489, 6947, - 2491, 2497, 2494, 2498, 2501, 2502, 2504, 6947, 2506, 2514, + 2474, 2481, 2482, 2483, 2484, 2473, 2486, 2485, 2489, 6961, + 2491, 2497, 2494, 2498, 2501, 2502, 2504, 6961, 2506, 2514, 2516, 2525, 2519, 2503, 2527, 2528, 2531, 2529, 2532, 2533, - 2534, 2535, 2536, 2542, 2539, 6947, 2544, 2551, 2554, 2541, + 2534, 2535, 2536, 2542, 2539, 6961, 2544, 2551, 2554, 2541, 2555, 2562, 2548, 2563, 2564, 2565, 2568, 2567, 2569, 2573, 2570, 2572, 2574, 2575, 2583, 2594, 2577, 2586, 2587, 2590, - 2591, 2595, 2599, 2600, 2601, 2608, 2603, 6947, 2615, 2604, + 2591, 2595, 2599, 2600, 2601, 2608, 2603, 6961, 2615, 2604, 2612, 2613, 2611, 2614, 2617, 2620, 2634, 2624, 2627, 2629, 2635, 2644, 2637, 2638, 2646, 2654, 2651, 2639, 2664, 2660, 2661, 2668, 2659, 2670, 2672, 2662, 2673, 2684, 2674, 2676, 2681, 2679, 2685, 2694, 2695, 2687, 2697, 2698, 2690, 2700, - 2702, 2712, 2717, 2707, 6947, 2719, 2709, 2720, 2721, 2728, + 2702, 2712, 2717, 2707, 6961, 2719, 2709, 2720, 2721, 2728, 2725, 2726, 2731, 2729, 2732, 2733, 2735, 2737, 2745, 2746, 2744, 2742, 2749, 2753, 2755, 2757, 2760, 2759, 2740, 2768, - 2762, 2764, 2771, 2772, 6947, 2775, 2776, 2780, 2782, 2784, + 2762, 2764, 2771, 2772, 6961, 2775, 2776, 2780, 2782, 2784, 2785, 2787, 2788, 2790, 2792, 2793, 2794, 2797, 2798, 2800, - 2801, 2802, 2809, 2806, 2807, 2808, 2812, 6947, 2820, 2819, + 2801, 2802, 2809, 2806, 2807, 2808, 2812, 6961, 2820, 2819, 2821, 2824, 2827, 2825, 2831, 2837, 2839, 2828, 2841, 2835, - 2842, 2843, 2845, 6947, 2855, 2857, 2847, 2854, 2862, 2860, - 2861, 2863, 2865, 2866, 6947, 2867, 2870, 2868, 2875, 2871, - 2873, 2882, 2883, 2879, 6947, 2887, 2884, 2889, 2892, 2893, + 2842, 2843, 2845, 6961, 2855, 2857, 2847, 2854, 2862, 2860, + 2861, 2863, 2865, 2866, 6961, 2867, 2870, 2868, 2875, 2871, + 2873, 2882, 2883, 2879, 6961, 2887, 2884, 2889, 2892, 2893, 2894, 2895, 2899, 2897, 2901, 2902, 2906, 2915, 2907, 2916, - 6947, 2903, 2924, 2910, 2925, 2919, 2929, 2931, 2932, 2933, - 2935, 2937, 2940, 6947, 2942, 2945, 2948, 2957, 2952, 2953, - 2955, 2958, 2960, 2962, 2961, 2964, 2966, 6947, 2968, 2967, + 6961, 2903, 2924, 2910, 2925, 2919, 2929, 2931, 2932, 2933, + 2935, 2937, 2940, 6961, 2942, 2945, 2948, 2957, 2952, 2953, + 2955, 2958, 2960, 2962, 2961, 2964, 2966, 6961, 2968, 2967, 2970, 2974, 2972, 2977, 2978, 2989, 2984, 2987, 2990, 2991, 2992, 2993, 2994, 2999, 3010, 3001, 2998, 3000, 3002, 3014, 3012, 3019, 3018, 3022, 3026, 3030, 3025, 3031, 3034, 3029, - 3036, 3037, 3040, 3047, 3048, 3049, 3050, 3053, 6947, 3056, + 3036, 3037, 3040, 3047, 3048, 3049, 3050, 3053, 6961, 3056, 3057, 3059, 3044, 3060, 3063, 3064, 3066, 3069, 3065, 3067, 3071, 3074, 3078, 3087, 3090, 3080, 3082, 3091, 3092, 3093, 3094, 3095, 3096, 3101, 3104, 3103, 3105, 3106, 3113, 3109, 3112, 3121, 3117, 3120, 3122, 3123, 3124, 3126, 3127, 3129, 3130, 3134, 3133, 3135, 3138, 3146, 3156, 3153, 3147, 3149, - 3157, 3159, 3161, 6947, 3160, 3164, 3168, 3165, 3170, 3174, + 3157, 3159, 3161, 6961, 3160, 3164, 3168, 3165, 3170, 3174, 3171, 3181, 3177, 3182, 3190, 3188, 3187, 3194, 3179, 3189, - 3196, 3197, 3206, 3202, 6947, 3203, 6947, 3204, 3208, 3209, - 3218, 3211, 6947, 3215, 6947, 3216, 3223, 3220, 3224, 3226, - 6947, 3227, 3228, 3232, 3229, 3233, 3234, 3239, 3237, 3241, + 3196, 3197, 3206, 3202, 6961, 3203, 6961, 3204, 3208, 3209, + 3218, 3211, 6961, 3215, 6961, 3216, 3223, 3220, 3224, 3226, + 6961, 3227, 3228, 3232, 3229, 3233, 3234, 3239, 3237, 3241, 3243, 3245, 3246, 3255, 3244, 3250, 3251, 3257, 3266, 3256, 3261, 3263, 3269, 3272, 3274, 3273, 3280, 3275, 3282, 3283, - 3285, 3286, 3287, 6947, 3291, 3295, 3296, 3299, 3300, 3288, + 3285, 3286, 3287, 6961, 3291, 3295, 3296, 3299, 3300, 3288, 3303, 3302, 3310, 3307, 3311, 3308, 3314, 3315, 3319, 3320, - 3323, 3325, 3331, 3336, 3343, 3326, 3344, 6947, 3339, 3348, - 3330, 3350, 6947, 3352, 3327, 3354, 3358, 3360, 3361, 3362, + 3323, 3325, 3331, 3336, 3343, 3326, 3344, 6961, 3339, 3348, + 3330, 3350, 6961, 3352, 3327, 3354, 3358, 3360, 3361, 3362, - 3363, 3364, 3367, 3368, 3369, 3370, 3378, 3381, 3384, 6947, + 3363, 3364, 3367, 3368, 3369, 3370, 3378, 3381, 3384, 6961, 3382, 3390, 3371, 3394, 3393, 3404, 3405, 3401, 3407, 3409, 3417, 3413, 3402, 3412, 3400, 3414, 3420, 3422, 3427, 3431, 3424, 3432, 3428, 3433, 3436, 3437, 3439, 3440, 3443, 3441, - 3444, 3445, 3449, 3446, 3447, 3448, 3340, 3450, 3466, 6947, - 3453, 3455, 3468, 3476, 3454, 3471, 3475, 3477, 3478, 6947, + 3444, 3445, 3449, 3446, 3447, 3448, 3340, 3450, 3466, 6961, + 3453, 3455, 3468, 3476, 3454, 3471, 3475, 3477, 3478, 6961, 3480, 3482, 3483, 3484, 3485, 3489, 3492, 3490, 3493, 3494, - 3497, 3498, 3501, 3500, 6947, 3507, 6947, 3508, 3515, 3520, + 3497, 3498, 3501, 3500, 6961, 3507, 6961, 3508, 3515, 3520, 3524, 3509, 3517, 3525, 3530, 3526, 3531, 3532, 3538, 3540, 3534, 3536, 3542, 3543, 3546, 3547, 3554, 3560, 3557, 3549, - 3561, 3563, 3565, 3566, 3573, 3570, 3568, 6947, 6947, 3571, + 3561, 3563, 3565, 3566, 3573, 3570, 3568, 6961, 6961, 3571, 3576, 3577, 3583, 3584, 3585, 3587, 3589, 3592, 3591, 3595, - 3600, 3611, 6947, 3603, 3604, 3606, 3607, 3608, 3620, 3613, - 3624, 3621, 3625, 3626, 3633, 3629, 6947, 3632, 3634, 3642, - 3637, 3638, 3645, 6947, 3375, 6947, 3643, 3644, 3646, 3649, + 3600, 3611, 6961, 3603, 3604, 3606, 3607, 3608, 3620, 3613, + 3624, 3621, 3625, 3626, 3633, 3629, 6961, 3632, 3634, 3642, + 3637, 3638, 3645, 6961, 3375, 6961, 3643, 3644, 3646, 3649, 3651, 3655, 3653, 3658, 3659, 3654, 3660, 3670, 3677, 3679, 3675, 3681, 3676, 3682, 3678, 3684, 3685, 3692, 3687, 3689, - 3690, 6947, 3694, 3695, 3699, 3701, 3702, 3707, 3711, 3704, - 3710, 6947, 3714, 3717, 3718, 3719, 3720, 3724, 3727, 3728, - 3729, 3737, 3730, 3732, 3738, 3741, 6947, 3742, 3734, 3749, + 3690, 6961, 3694, 3695, 3699, 3701, 3702, 3707, 3711, 3704, + 3710, 6961, 3714, 3717, 3718, 3719, 3720, 3724, 3727, 3728, + 3729, 3737, 3730, 3732, 3738, 3741, 6961, 3742, 3734, 3749, - 3745, 3747, 3752, 3756, 3759, 3764, 6947, 3766, 3751, 3773, + 3745, 3747, 3752, 3756, 3759, 3764, 6961, 3766, 3751, 3773, 3769, 3770, 3772, 3775, 3776, 3777, 3779, 3780, 3781, 3783, 3784, 3789, 3785, 3787, 3794, 3790, 3802, 3804, 3791, 3812, - 3819, 3805, 6947, 3808, 3815, 3817, 3818, 3820, 3821, 3823, + 3819, 3805, 6961, 3808, 3815, 3817, 3818, 3820, 3821, 3823, 3829, 3831, 3825, 3840, 3841, 3832, 3836, 3843, 3847, 3844, - 3855, 3851, 6947, 3856, 3852, 3865, 3858, 3860, 3866, 3862, + 3855, 3851, 6961, 3856, 3852, 3865, 3858, 3860, 3866, 3862, 3867, 3868, 3872, 3874, 3875, 3876, 3877, 3878, 3883, 3886, - 3890, 3891, 3892, 3893, 3900, 3895, 6947, 3907, 3884, 3897, + 3890, 3891, 3892, 3893, 3900, 3895, 6961, 3907, 3884, 3897, 3914, 3908, 3905, 3923, 3918, 3921, 3922, 3925, 3926, 3928, - 3930, 3931, 3932, 3935, 3936, 6947, 6947, 3938, 3939, 3940, + 3930, 3931, 3932, 3935, 3936, 6961, 6961, 3938, 3939, 3940, - 6947, 3942, 3944, 3954, 3945, 3947, 3955, 3957, 3959, 3958, - 3960, 3962, 3968, 3969, 6947, 3977, 3970, 3979, 3978, 3974, - 3988, 3987, 6947, 3980, 3990, 3992, 3995, 3993, 3983, 3996, + 6961, 3942, 3944, 3954, 3945, 3947, 3955, 3957, 3959, 3958, + 3960, 3962, 3968, 3969, 6961, 3977, 3970, 3979, 3978, 3974, + 3988, 3987, 6961, 3980, 3990, 3992, 3995, 3993, 3983, 3996, 4001, 3997, 4005, 4006, 4007, 4010, 4018, 4019, 4014, 4016, - 4017, 6947, 4020, 4022, 4023, 4026, 4027, 4029, 4030, 6947, + 4017, 6961, 4020, 4022, 4023, 4026, 4027, 4029, 4030, 6961, 4035, 4032, 4038, 4041, 4043, 4050, 4042, 4053, 4056, 4057, 4058, 4060, 4061, 4062, 4063, 4065, 4073, 4059, 4071, 4070, - 4068, 4088, 4089, 4076, 6947, 4084, 4091, 4074, 4096, 6947, - 4098, 4105, 4106, 6947, 4109, 4092, 4108, 4110, 4117, 6947, + 4068, 4088, 4089, 4076, 6961, 4084, 4091, 4074, 4096, 6961, + 4098, 4105, 4106, 6961, 4109, 4092, 4108, 4110, 4117, 6961, 4112, 4115, 4114, 4120, 4116, 4129, 4125, 4133, 4131, 4132, - 4128, 4134, 4137, 6947, 4138, 4135, 4140, 6947, 4143, 4152, - 4156, 4158, 4142, 4165, 4160, 4163, 4161, 4164, 6947, 4169, - 6947, 4172, 4170, 4176, 6947, 4171, 4178, 4179, 4181, 4185, + 4128, 4134, 4137, 6961, 4138, 4135, 4140, 6961, 4143, 4152, + 4156, 4158, 4142, 4165, 4160, 4163, 4161, 4164, 6961, 4169, + 6961, 4172, 4170, 4176, 6961, 4171, 4178, 4179, 4181, 4185, 4186, 4187, 4193, 4189, 4195, 4197, 4198, 4199, 4200, 4202, - 4209, 4201, 4205, 4208, 4210, 6947, 4211, 4213, 4220, 4217, - 4221, 4225, 4227, 4228, 4230, 4232, 6947, 6947, 4241, 6947, - 4233, 4238, 4242, 4243, 6947, 4246, 4248, 4250, 4247, 4251, - 4253, 4256, 4266, 4136, 6947, 4268, 4269, 6947, 4257, 4271, + 4209, 4201, 4205, 4208, 4210, 6961, 4211, 4213, 4220, 4217, + 4221, 4225, 4227, 4228, 4230, 4232, 6961, 6961, 4241, 6961, + 4233, 4238, 4242, 4243, 6961, 4246, 4248, 4250, 4247, 4251, + 4253, 4256, 4266, 4136, 6961, 4268, 4269, 6961, 4257, 4271, 4278, 4273, 4275, 4263, 4276, 4283, 4279, 4260, 4286, 4289, - 4290, 4291, 4292, 4293, 4300, 6947, 4294, 4297, 4295, 4310, + 4290, 4291, 4292, 4293, 4300, 6961, 4294, 4297, 4295, 4310, - 4299, 4304, 4312, 4311, 4313, 6947, 4321, 4323, 4322, 4327, - 4328, 6947, 4329, 6947, 4330, 4334, 4337, 4339, 4331, 4342, - 6947, 4344, 4345, 4352, 4347, 4353, 4354, 4355, 4357, 4361, - 4363, 4364, 4371, 4367, 4369, 4366, 4376, 4377, 6947, 4368, + 4299, 4304, 4312, 4311, 4313, 6961, 4321, 4323, 4322, 4327, + 4328, 6961, 4329, 6961, 4330, 4334, 4337, 4339, 4331, 4342, + 6961, 4344, 4345, 4352, 4347, 4353, 4354, 4355, 4357, 4361, + 4363, 4364, 4371, 4367, 4369, 4366, 4376, 4377, 6961, 4368, 4374, 4390, 4391, 4383, 4380, 4386, 4399, 4396, 4398, 4397, - 4402, 4404, 4405, 4407, 4411, 4413, 4409, 4416, 6947, 4419, - 4420, 4424, 4421, 4431, 4427, 4428, 4433, 6947, 4435, 4436, - 4438, 6947, 4440, 4444, 4446, 4449, 4450, 4451, 4452, 4456, - 4454, 4457, 4458, 4460, 6947, 4462, 4463, 4461, 4477, 4478, - 4467, 6947, 6947, 4480, 6947, 4484, 4466, 4485, 4487, 4488, + 4402, 4404, 4405, 4407, 4411, 4413, 4409, 4416, 6961, 4419, + 4420, 4424, 4421, 4431, 4427, 4428, 4433, 6961, 4435, 4436, + 4438, 6961, 4440, 4444, 4446, 4449, 4450, 4451, 4452, 4456, + 4454, 4457, 4458, 4460, 6961, 4462, 4463, 4461, 4477, 4478, + 4467, 6961, 6961, 4480, 6961, 4484, 4466, 4485, 4487, 4488, - 4492, 4494, 4495, 4497, 4491, 4498, 4502, 4503, 4507, 6947, - 4510, 4518, 4511, 4522, 4525, 4530, 4523, 4527, 4514, 6947, - 6947, 4532, 4536, 4538, 4540, 4541, 4543, 4528, 4550, 4548, - 4556, 4559, 4549, 4566, 6947, 4561, 4552, 4563, 4564, 6947, + 4492, 4494, 4495, 4497, 4491, 4498, 4502, 4503, 4507, 6961, + 4510, 4518, 4511, 4522, 4525, 4530, 4523, 4527, 4514, 6961, + 6961, 4532, 4536, 4538, 4540, 4541, 4543, 4528, 4550, 4548, + 4556, 4559, 4549, 4566, 6961, 4561, 4552, 4563, 4564, 6961, 4545, 4568, 4569, 4571, 4574, 4575, 4578, 4576, 4577, 4580, 4588, 4581, 4583, 4590, 4589, 4591, 4599, 4597, 4600, 4601, - 4603, 4607, 6947, 4604, 4608, 4610, 4613, 4617, 4618, 4619, - 4620, 4622, 4623, 4630, 6947, 4628, 6947, 4626, 4631, 4646, + 4603, 4607, 6961, 4604, 4608, 4610, 4613, 4617, 4618, 4619, + 4620, 4622, 4623, 4630, 6961, 4628, 6961, 4626, 4631, 4646, 4633, 4636, 4648, 4649, 4650, 4651, 4655, 4657, 4658, 4661, 4663, 4667, 4662, 4668, 4671, 4673, 4675, 4679, 4683, 4680, - 6947, 4686, 4676, 4688, 4625, 4690, 4693, 4694, 4698, 4699, + 6961, 4686, 4676, 4688, 4625, 4690, 4693, 4694, 4698, 4699, 4701, 4695, 4702, 4704, 4706, 4709, 4711, 4712, 4714, 4715, - 6947, 4716, 4719, 4722, 4725, 4726, 4727, 4730, 4735, 4739, - 4743, 4731, 4733, 4745, 6947, 4737, 4746, 4754, 6947, 4749, - 4751, 4756, 4757, 4758, 4760, 4761, 4763, 4767, 4770, 6947, + 6961, 4716, 4719, 4722, 4725, 4726, 4727, 4730, 4735, 4739, + 4743, 4731, 4733, 4745, 6961, 4737, 4746, 4754, 6961, 4749, + 4751, 4756, 4757, 4758, 4760, 4761, 4763, 4767, 4770, 6961, 4774, 4764, 4771, 4775, 4776, 4777, 4781, 4783, 4786, 4788, - 4790, 4798, 6947, 4799, 4791, 4800, 4802, 4804, 4806, 4810, - 4808, 4811, 6947, 4812, 4815, 4821, 4823, 4828, 4830, 4814, + 4790, 4798, 6961, 4799, 4791, 4800, 4802, 4804, 4806, 4810, + 4808, 4811, 6961, 4812, 4815, 4821, 4823, 4828, 4830, 4814, 4825, 4833, 4834, 4836, 4832, 4842, 4843, 4844, 4845, 4847, - 4849, 4848, 4865, 4866, 4863, 6947, 4850, 6947, 4851, 4852, + 4849, 4848, 4865, 4866, 4863, 6961, 4850, 6961, 4851, 4852, - 4868, 4878, 4873, 4875, 4876, 4880, 4879, 6947, 4881, 4886, - 4888, 4883, 4891, 6947, 4892, 4889, 4893, 4894, 6947, 4907, - 4890, 4896, 4903, 4912, 4913, 6947, 4918, 4919, 4920, 4927, + 4868, 4878, 4873, 4875, 4876, 4880, 4879, 6961, 4881, 4886, + 4888, 4883, 4891, 6961, 4892, 4889, 4893, 4894, 6961, 4907, + 4890, 4896, 4903, 4912, 4913, 6961, 4918, 4919, 4920, 4927, 4929, 4924, 4931, 4926, 4934, 4932, 4928, 4936, 4937, 4945, - 4943, 4941, 6947, 4947, 4949, 4954, 4956, 4950, 4958, 4948, - 4960, 4963, 4965, 6947, 4966, 4969, 4970, 4972, 4973, 4975, + 4943, 4941, 6961, 4947, 4949, 4954, 4956, 4950, 4958, 4948, + 4960, 4963, 4965, 6961, 4966, 4969, 4970, 4972, 4973, 4975, 4974, 4976, 4983, 4980, 4984, 4982, 4988, 4991, 4993, 4995, - 4997, 6947, 4999, 5001, 5003, 5012, 5005, 5002, 6947, 5009, - 6947, 5014, 5019, 5021, 5022, 5015, 5026, 6947, 6947, 5029, - 5036, 5023, 5032, 5034, 6947, 6947, 5038, 6947, 5039, 6947, + 4997, 6961, 4999, 5001, 5003, 5012, 5005, 5002, 6961, 5009, + 6961, 5014, 5019, 5021, 5022, 5015, 5026, 6961, 6961, 5029, + 5036, 5023, 5032, 5034, 6961, 6961, 5038, 6961, 5039, 6961, - 5040, 5042, 6947, 6947, 5044, 5045, 5046, 5047, 5048, 5051, - 6947, 5056, 6947, 5065, 5060, 5061, 5063, 5064, 5068, 6947, - 5066, 5069, 5070, 5075, 5077, 6947, 5074, 5078, 5094, 5081, - 5089, 6947, 5091, 5092, 5093, 5096, 6947, 5097, 5101, 5102, + 5040, 5042, 6961, 6961, 5044, 5045, 5046, 5047, 5048, 5051, + 6961, 5056, 6961, 5065, 5060, 5061, 5063, 5064, 5068, 6961, + 5066, 5069, 5070, 5075, 5077, 6961, 5074, 5078, 5094, 5081, + 5089, 6961, 5091, 5092, 5093, 5096, 6961, 5097, 5101, 5102, 5103, 5106, 5105, 5108, 5109, 5110, 5116, 5117, 5120, 5119, 5122, 5123, 5127, 5132, 5134, 5136, 5137, 5138, 5140, 5143, 5146, 5150, 5141, 5148, 5152, 5154, 5155, 5157, 5159, 5160, 5162, 5166, 5167, 5163, 5170, 5169, 5171, 5180, 5172, 5182, 5184, 5186, 5188, 5189, 5190, 5193, 5194, 5197, 5198, 5199, - 5196, 5203, 5200, 5207, 5212, 6947, 5205, 5213, 5214, 5216, + 5196, 5203, 5200, 5207, 5212, 6961, 5205, 5213, 5214, 5216, - 5217, 5221, 5224, 5233, 5239, 5240, 6947, 5242, 6947, 5244, - 5228, 5225, 5230, 5247, 6947, 5234, 5248, 5250, 5251, 5252, - 5253, 5255, 5256, 5259, 5260, 5263, 6947, 5268, 5265, 5258, - 5274, 5270, 6947, 5275, 5282, 5285, 5286, 5287, 5288, 5291, + 5217, 5221, 5224, 5233, 5239, 5240, 6961, 5242, 6961, 5244, + 5228, 5225, 5230, 5247, 6961, 5234, 5248, 5250, 5251, 5252, + 5253, 5255, 5256, 5259, 5260, 5263, 6961, 5268, 5265, 5258, + 5274, 5270, 6961, 5275, 5282, 5285, 5286, 5287, 5288, 5291, 5289, 5290, 5293, 5292, 5294, 5297, 5299, 5300, 5310, 5312, - 6947, 5314, 5316, 5323, 5319, 5321, 5322, 5324, 5325, 5326, - 5329, 5327, 5334, 5331, 5343, 5348, 5345, 6947, 5332, 6947, - 5349, 5335, 5352, 5353, 5355, 5356, 5357, 5359, 6947, 6947, + 6961, 5314, 5316, 5323, 5319, 5321, 5322, 5324, 5325, 5326, + 5329, 5327, 5334, 5331, 5343, 5348, 5345, 6961, 5332, 6961, + 5349, 5335, 5352, 5353, 5355, 5356, 5357, 5359, 6961, 6961, 5362, 5363, 5365, 5367, 5369, 5370, 5372, 5374, 5375, 5376, - 6947, 5379, 5383, 5387, 5393, 5386, 6947, 5395, 5396, 5397, + 6961, 5379, 5383, 5387, 5393, 5386, 6961, 5395, 5396, 5397, - 5401, 6947, 5402, 5398, 5404, 5405, 5412, 5403, 5419, 5415, - 5421, 5409, 5423, 5413, 5427, 6947, 6947, 6947, 6947, 5428, + 5401, 6961, 5402, 5398, 5404, 5405, 5412, 5403, 5419, 5415, + 5421, 5409, 5423, 5413, 5427, 6961, 6961, 6961, 6961, 5428, 5424, 5432, 5434, 5436, 5437, 5439, 5442, 5443, 5441, 5438, - 5444, 6947, 5454, 6947, 6947, 5455, 5456, 5457, 5462, 5464, - 5463, 5465, 5468, 6947, 5466, 6947, 5470, 5473, 5469, 5480, + 5444, 6961, 5454, 6961, 6961, 5455, 5456, 5457, 5462, 5464, + 5463, 5465, 5468, 6961, 5466, 6961, 5470, 5473, 5469, 5480, 5486, 5483, 5477, 5490, 5487, 5492, 5491, 5493, 5501, 5498, - 5499, 5502, 5505, 5507, 5513, 6947, 6947, 5508, 5515, 5516, + 5499, 5502, 5505, 5507, 5513, 6961, 6961, 5508, 5515, 5516, 5524, 5520, 5522, 5526, 5534, 5529, 5530, 5532, 5531, 5536, - 5537, 5545, 5548, 5538, 5547, 6947, 5549, 5550, 5551, 6947, - 5552, 6947, 5557, 5560, 5561, 5553, 5563, 5568, 5569, 5572, + 5537, 5545, 5548, 5538, 5547, 6961, 5549, 5550, 5551, 6961, + 5552, 6961, 5557, 5560, 5561, 5553, 5563, 5568, 5569, 5572, - 5570, 5575, 6947, 6947, 5567, 5587, 5582, 6947, 6947, 5574, + 5570, 5575, 6961, 6961, 5567, 5587, 5582, 6961, 6961, 5574, 5583, 5586, 5590, 5584, 5592, 5595, 5594, 5597, 5599, 5596, - 6947, 5601, 6947, 5600, 5602, 5608, 5610, 5619, 5623, 5614, - 5624, 5622, 5625, 5626, 5629, 6947, 5627, 5628, 6947, 5637, - 5639, 5640, 5638, 5646, 5643, 6947, 5647, 5649, 5654, 5656, - 6947, 5660, 5657, 5663, 5662, 6947, 5665, 6947, 5630, 5669, - 5666, 5676, 5672, 6947, 5673, 5679, 6947, 5682, 5686, 5688, - 5689, 5677, 5683, 6947, 5695, 5691, 6947, 5697, 5699, 5700, - 5703, 5704, 5706, 5707, 5708, 5710, 5718, 5714, 5711, 6947, - 6947, 5722, 5723, 135, 5731, 5721, 5727, 5729, 5732, 5739, + 6961, 5601, 6961, 5600, 5602, 5608, 5610, 5619, 5623, 5614, + 5624, 5622, 5625, 5626, 5629, 6961, 5627, 5628, 6961, 5637, + 5639, 5640, 5638, 5646, 5643, 6961, 5647, 5649, 5654, 5656, + 6961, 5660, 5657, 5663, 5662, 6961, 5665, 6961, 5630, 5669, + 5666, 5676, 5672, 6961, 5673, 5679, 6961, 5682, 5686, 5688, + 5689, 5677, 5683, 6961, 5695, 5691, 6961, 5697, 5699, 5700, + 5703, 5704, 5706, 5707, 5708, 5710, 5718, 5714, 5711, 6961, + 6961, 5722, 5723, 135, 5731, 5721, 5727, 5729, 5732, 5739, - 5734, 5736, 5742, 6947, 6947, 5743, 6947, 5737, 5750, 6947, + 5734, 5736, 5742, 6961, 6961, 5743, 6961, 5737, 5750, 6961, 5735, 5751, 5755, 5746, 5752, 5758, 5761, 5765, 5767, 5768, 5769, 5770, 5771, 5775, 5792, 5794, 5777, 5774, 5797, 5799, 5801, 5803, 5805, 5762, 5807, 5789, 5785, 5808, 5810, 5795, - 5813, 5816, 5817, 5819, 6947, 5821, 5824, 5826, 5827, 5828, - 6947, 5831, 5834, 5836, 5838, 6947, 5845, 5840, 5842, 5847, - 5848, 6947, 5832, 5853, 5855, 5858, 5859, 5860, 5861, 5863, - 5870, 6947, 5867, 5865, 5871, 6947, 6947, 6947, 5876, 5883, - 5873, 6947, 5885, 5877, 5886, 5888, 6947, 5890, 5892, 5893, - 6947, 6947, 6947, 5894, 5895, 5898, 6947, 5896, 5903, 6947, + 5813, 5816, 5817, 5819, 6961, 5821, 5824, 5826, 5827, 5828, + 6961, 5831, 5834, 5836, 5838, 6961, 5845, 5840, 5842, 5847, + 5848, 6961, 5832, 5853, 5855, 5858, 5859, 5860, 5861, 5863, + 5870, 6961, 5867, 5865, 5871, 6961, 6961, 6961, 5876, 5883, + 5873, 6961, 5885, 5877, 5886, 5888, 6961, 5890, 5892, 5893, + 6961, 6961, 6961, 5894, 5895, 5898, 6961, 5896, 5903, 6961, - 5902, 6947, 5899, 6947, 5904, 5908, 5917, 5912, 6947, 5910, - 5922, 5923, 5924, 6947, 5927, 5930, 5932, 5933, 5934, 5936, - 5938, 6947, 5945, 5941, 5944, 5948, 5940, 5950, 5951, 5952, - 5953, 5965, 5956, 5961, 6947, 5963, 5964, 5968, 5974, 5966, - 5976, 5977, 6947, 5970, 6947, 5979, 6947, 5980, 5982, 5983, + 5902, 6961, 5899, 6961, 5904, 5908, 5917, 5912, 6961, 5910, + 5922, 5923, 5924, 6961, 5927, 5930, 5932, 5933, 5934, 5936, + 5938, 6961, 5945, 5941, 5944, 5948, 5940, 5950, 5951, 5952, + 5953, 5965, 5956, 5961, 6961, 5963, 5964, 5968, 5974, 5966, + 5976, 5977, 6961, 5970, 6961, 5979, 6961, 5980, 5982, 5983, 5984, 5989, 5986, 5987, 5997, 5994, 6000, 6003, 6001, 6007, - 6008, 6012, 6009, 6947, 6947, 6014, 6015, 6017, 6947, 6018, - 6947, 6023, 6947, 6019, 6024, 6026, 6027, 6032, 6947, 6947, - 6030, 6033, 6036, 6044, 6041, 6042, 6947, 6046, 6048, 6049, - 6051, 6947, 6058, 6947, 6054, 6063, 6055, 6947, 6056, 6066, + 6008, 6012, 6009, 6961, 6961, 6019, 6015, 6017, 6961, 6014, + 6961, 6023, 6961, 6024, 6026, 6027, 6029, 6031, 6961, 6961, + 6038, 6030, 6039, 6047, 6033, 6043, 6961, 6051, 6044, 6046, + 6054, 6961, 6055, 6961, 6057, 6066, 6059, 6961, 6061, 6068, - 6070, 6067, 6059, 6072, 6073, 6076, 6075, 6083, 6080, 6081, - 6086, 6088, 6089, 6094, 6098, 6102, 6947, 6947, 6947, 6096, - 6090, 6111, 6113, 6114, 6115, 6100, 6947, 6116, 6120, 6122, - 6107, 6129, 6124, 6131, 6947, 6125, 6128, 6132, 6134, 6136, - 6133, 6138, 6139, 6947, 6144, 6150, 6156, 6140, 6151, 6153, - 6160, 6162, 6164, 6167, 6168, 6169, 6176, 6172, 6947, 6174, - 6947, 6179, 6947, 6171, 6947, 6175, 6180, 6182, 6183, 6184, - 6947, 6187, 6188, 6189, 6192, 6191, 6194, 6199, 6210, 6947, - 6200, 6213, 6196, 6193, 6215, 6947, 6947, 6204, 6222, 6947, - 6224, 6226, 6219, 6234, 6217, 6227, 6237, 6238, 6947, 6240, + 6070, 6063, 6071, 6073, 6074, 6075, 6076, 6086, 6079, 6081, + 6082, 6088, 6089, 6094, 6100, 6105, 6961, 6961, 6961, 6095, + 6090, 6114, 6112, 6113, 6115, 6099, 6961, 6118, 6120, 6121, + 6122, 6130, 6125, 6128, 6961, 6132, 6129, 6131, 6133, 6135, + 6136, 6137, 6139, 6961, 6150, 6152, 6158, 6140, 6154, 6159, + 6161, 6163, 6166, 6170, 6167, 6171, 6178, 6174, 6961, 6176, + 6173, 6961, 6182, 6961, 6177, 6961, 6183, 6184, 6185, 6186, + 6187, 6961, 6191, 6192, 6193, 6195, 6194, 6198, 6200, 6202, + 6961, 6203, 6216, 6211, 6213, 6215, 6961, 6961, 6217, 6223, + 6961, 6225, 6228, 6226, 6235, 6227, 6234, 6237, 6241, 6961, - 6241, 6230, 6232, 6242, 6239, 6248, 6947, 6245, 6249, 6255, - 6256, 6947, 6259, 6257, 6261, 6260, 6258, 6947, 6262, 6264, - 6271, 6269, 6947, 6266, 6280, 6272, 6947, 6947, 6947, 6288, - 6290, 6291, 6947, 6947, 6947, 6947, 6293, 6294, 6282, 6297, - 6947, 6947, 6303, 6307, 6311, 6313, 6317, 6306, 6947, 6316, - 6318, 6320, 6322, 6323, 6947, 6947, 6324, 6326, 6328, 6329, - 6331, 6332, 6947, 6947, 6333, 6335, 6339, 6336, 6338, 6947, - 6341, 6344, 6351, 6347, 6354, 6361, 6363, 6357, 6364, 6365, - 6376, 6373, 6366, 6368, 6371, 6379, 6380, 6378, 6382, 6393, - 6388, 6390, 6396, 6386, 6398, 6947, 6947, 6400, 6947, 6405, + 6243, 6244, 6230, 6245, 6248, 6251, 6252, 6961, 6254, 6255, + 6256, 6257, 6961, 6260, 6259, 6264, 6266, 6267, 6961, 6268, + 6269, 6285, 6283, 6961, 6270, 6291, 6271, 6961, 6961, 6961, + 6293, 6296, 6297, 6961, 6961, 6961, 6961, 6299, 6300, 6261, + 6303, 6961, 6304, 6961, 6307, 6311, 6315, 6317, 6323, 6310, + 6961, 6322, 6324, 6326, 6318, 6328, 6961, 6961, 6329, 6331, + 6332, 6334, 6338, 6335, 6961, 6961, 6340, 6341, 6343, 6344, + 6345, 6961, 6346, 6349, 6357, 6350, 6361, 6367, 6369, 6358, + 6370, 6371, 6378, 6382, 6363, 6374, 6379, 6381, 6385, 6384, + 6392, 6393, 6395, 6397, 6399, 6394, 6402, 6961, 6961, 6405, - 6402, 6947, 6947, 6407, 6409, 6413, 6415, 6947, 6417, 6419, - 6421, 6423, 6410, 6947, 6424, 6426, 6428, 6429, 6430, 6431, - 6947, 6435, 6437, 6440, 6432, 6441, 6443, 6444, 6449, 6947, - 6446, 6453, 6947, 6947, 6450, 6457, 6458, 6462, 6459, 6947, - 6464, 6471, 6466, 6469, 6470, 6472, 6475, 6947, 6473, 6476, - 6947, 6947, 6478, 6481, 6947, 6947, 6483, 6947, 6947, 6947, - 6947, 6947, 6947, 6947, 6947, 6487, 6494, 6947, 6947, 6486, - 6501, 6503, 6947, 6505, 6947, 6488, 6498, 6506, 6493, 6947, - 6508, 6947, 6495, 6512, 6514, 6298, 6515, 6516, 6520, 6521, - 6524, 6525, 6526, 6528, 6527, 6532, 6529, 6531, 6545, 6538, + 6961, 6411, 6406, 6961, 6408, 6961, 6413, 6417, 6419, 6421, + 6961, 6423, 6425, 6428, 6430, 6414, 6961, 6432, 6434, 6436, + 6437, 6431, 6438, 6961, 6445, 6442, 6448, 6439, 6449, 6451, + 6452, 6456, 6961, 6450, 6460, 6961, 6961, 6457, 6464, 6466, + 6468, 6470, 6961, 6471, 6478, 6473, 6476, 6477, 6479, 6482, + 6961, 6480, 6484, 6961, 6961, 6485, 6490, 6961, 6961, 6483, + 6491, 6961, 6961, 6961, 6961, 6961, 6961, 6961, 6961, 6494, + 6500, 6961, 6961, 6495, 6502, 6507, 6961, 6513, 6961, 6504, + 6510, 6514, 6515, 6961, 6516, 6961, 6517, 6520, 6521, 6522, + 6523, 6528, 6532, 6525, 6533, 6534, 6536, 6537, 6539, 6541, - 6535, 6548, 6947, 6947, 6947, 6546, 6539, 6557, 6549, 6562, - 6563, 6566, 6568, 6554, 6569, 6571, 6570, 6572, 6576, 6578, - 6585, 6580, 6583, 6581, 6588, 6582, 6591, 6947, 6597, 6584, - 6592, 6604, 6947, 6598, 6947, 6600, 6947, 6947, 6606, 6607, - 6609, 6610, 6620, 6621, 6612, 6619, 6616, 6622, 6624, 6947, - 6631, 6947, 6947, 6625, 6628, 6947, 6633, 6634, 6947, 6636, - 6637, 6639, 6640, 6641, 6643, 6644, 6645, 6652, 6947, 6947, - 6655, 6659, 6657, 6661, 6663, 6670, 6665, 6667, 6669, 6673, - 6671, 6685, 6947, 6681, 6682, 6684, 6947, 6688, 6686, 6689, - 6691, 6693, 6700, 6695, 6698, 6947, 6701, 6947, 6704, 6697, + 6542, 6543, 6549, 6546, 6556, 6557, 6558, 6961, 6961, 6961, + 6559, 6560, 6567, 6562, 6569, 6574, 6579, 6582, 6570, 6572, + 6583, 6585, 6588, 6576, 6584, 6597, 6594, 6595, 6598, 6605, + 6596, 6610, 6612, 6961, 6614, 6587, 6600, 6618, 6961, 6606, + 6961, 6615, 6961, 6961, 6623, 6624, 6620, 6626, 6635, 6636, + 6627, 6631, 6632, 6634, 6638, 6961, 6643, 6961, 6961, 6961, + 6640, 6646, 6961, 6648, 6649, 6961, 6647, 6650, 6652, 6656, + 6657, 6654, 6658, 6659, 6675, 6961, 6961, 6660, 6665, 6668, + 6677, 6679, 6678, 6681, 6685, 6686, 6688, 6689, 6698, 6961, + 6695, 6696, 6700, 6961, 6702, 6697, 6703, 6704, 6705, 6713, - 6708, 6699, 6707, 6715, 6716, 6719, 6720, 6947, 6721, 6722, - 6725, 6729, 6731, 6734, 6735, 6727, 6737, 6738, 6748, 6741, - 6745, 6749, 6751, 6753, 6754, 6947, 6760, 6755, 6947, 6757, - 6761, 6763, 6764, 6767, 6947, 6772, 6765, 6769, 6775, 6778, - 6779, 6947, 6781, 6790, 6785, 6947, 6791, 6947, 6947, 6793, - 6787, 6794, 6800, 6802, 6947, 6947, 6947, 6827, 6834, 6841, - 6848, 6855, 6862, 6869, 88, 6876, 6883, 6890, 6897, 6904, - 6911, 6918, 6925, 6932, 6939 + 6709, 6712, 6961, 6714, 6961, 6718, 6720, 6721, 6711, 6719, + 6722, 6733, 6731, 6727, 6961, 6737, 6741, 6739, 6743, 6745, + 6747, 6748, 6749, 6751, 6754, 6760, 6757, 6764, 6765, 6761, + 6769, 6766, 6961, 6776, 6767, 6961, 6773, 6777, 6770, 6779, + 6783, 6961, 6788, 6781, 6790, 6791, 6794, 6795, 6961, 6797, + 6804, 6799, 6961, 6805, 6961, 6961, 6807, 6801, 6808, 6814, + 6816, 6961, 6961, 6961, 6841, 6848, 6855, 6862, 6869, 6876, + 6883, 88, 6890, 6897, 6904, 6911, 6918, 6925, 6932, 6939, + 6946, 6953 } ; -static const flex_int16_t yy_def[3576] = +static const flex_int16_t yy_def[3583] = { 0, - 3557, 1, 3558, 3558, 3559, 3559, 3560, 3560, 3561, 3561, - 3562, 3562, 3563, 3563, 3564, 3564, 3557, 3565, 3557, 3557, - 3557, 3557, 3566, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3567, 3557, 3557, 3557, - 3567, 3568, 3557, 3557, 3557, 3568, 3569, 3557, 3557, 3557, - 3557, 3569, 3570, 3557, 3557, 3557, 3570, 3571, 3557, 3572, - 3557, 3571, 3571, 3573, 3557, 3557, 3557, 3557, 3573, 3574, - 3557, 3557, 3557, 3574, 3565, 3565, 3557, 3575, 3566, 3575, - 3566, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3564, 1, 3565, 3565, 3566, 3566, 3567, 3567, 3568, 3568, + 3569, 3569, 3570, 3570, 3571, 3571, 3564, 3572, 3564, 3564, + 3564, 3564, 3573, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3574, 3564, 3564, 3564, + 3574, 3575, 3564, 3564, 3564, 3575, 3576, 3564, 3564, 3564, + 3564, 3576, 3577, 3564, 3564, 3564, 3577, 3578, 3564, 3579, + 3564, 3578, 3578, 3580, 3564, 3564, 3564, 3564, 3580, 3581, + 3564, 3564, 3564, 3581, 3572, 3572, 3564, 3582, 3573, 3582, + 3573, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3567, - 3567, 3568, 3568, 3569, 3569, 3557, 3570, 3570, 3571, 3571, - 3572, 3572, 3571, 3573, 3573, 3557, 3574, 3574, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3574, + 3574, 3575, 3575, 3576, 3576, 3564, 3577, 3577, 3578, 3578, + 3579, 3579, 3578, 3580, 3580, 3564, 3581, 3581, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3571, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3578, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3571, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3578, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, - 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, + 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3571, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3578, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3571, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3557, - 3557, 3565, 3557, 3557, 3565, 3565, 3557, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3578, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3564, + 3564, 3572, 3564, 3564, 3572, 3572, 3564, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3571, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3557, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3578, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3564, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3557, 3565, 3557, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3557, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3557, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3564, 3572, 3564, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3564, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3564, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3557, 3565, 3565, 3565, 3565, 3565, 3571, 3571, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3564, 3572, 3572, 3572, 3572, 3572, 3578, 3578, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3571, 3565, - 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3578, 3572, + 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3557, 3565, 3557, 3565, 3565, 3565, - 3565, 3565, 3557, 3565, 3557, 3565, 3565, 3565, 3565, 3565, - 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3571, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, - 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3564, 3572, 3564, 3572, 3572, 3572, + 3572, 3572, 3564, 3572, 3564, 3572, 3572, 3572, 3572, 3572, + 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3578, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, + 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3557, 3565, 3557, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3564, 3572, 3564, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3557, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, - 3565, 3565, 3565, 3557, 3565, 3557, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3557, 3565, 3565, 3565, 3571, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3564, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, + 3572, 3572, 3572, 3564, 3572, 3564, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3564, 3572, 3572, 3572, 3578, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, - 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3557, 3557, 3565, 3565, 3565, + 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3564, 3564, 3572, 3572, 3572, - 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3557, - 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3557, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3564, + 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3564, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, - 3565, 3571, 3565, 3557, 3565, 3565, 3565, 3557, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, - 3557, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3557, 3565, 3557, - 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3557, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, + 3572, 3578, 3572, 3564, 3572, 3572, 3572, 3564, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, + 3564, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3564, 3572, 3564, + 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3564, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, - 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, - 3565, 3557, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, - 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, - 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, - 3565, 3557, 3557, 3565, 3557, 3565, 3565, 3565, 3565, 3565, + 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, + 3572, 3564, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, + 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, + 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, + 3572, 3564, 3564, 3572, 3564, 3572, 3572, 3572, 3572, 3572, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, - 3565, 3565, 3571, 3565, 3565, 3565, 3565, 3565, 3565, 3557, - 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3557, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3557, 3565, 3557, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, + 3572, 3572, 3578, 3572, 3572, 3572, 3572, 3572, 3572, 3564, + 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3564, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3564, 3572, 3564, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, - 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3557, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3557, 3565, 3565, + 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3564, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3564, 3572, 3572, - 3565, 3565, 3565, 3565, 3565, 3571, 3565, 3557, 3565, 3565, - 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3557, 3565, - 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, - 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3557, 3565, - 3565, 3565, 3565, 3565, 3557, 3557, 3565, 3557, 3565, 3557, + 3572, 3572, 3572, 3572, 3572, 3578, 3572, 3564, 3572, 3572, + 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3564, 3572, + 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, + 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3564, 3572, + 3572, 3572, 3572, 3572, 3564, 3564, 3572, 3564, 3572, 3564, - 3565, 3565, 3557, 3557, 3565, 3565, 3565, 3565, 3565, 3565, - 3557, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3557, - 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, - 3565, 3557, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3571, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, + 3572, 3572, 3564, 3564, 3572, 3572, 3572, 3572, 3572, 3572, + 3564, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3564, + 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, + 3572, 3564, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3578, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, - 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3557, 3565, - 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, - 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3557, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3557, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3557, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, + 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3564, 3572, + 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, + 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3564, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3564, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3564, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, - 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3557, 3557, 3557, 3557, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3557, 3565, 3557, 3557, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3557, 3565, 3557, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3571, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3557, 3557, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3557, - 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3564, 3564, 3564, 3564, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3564, 3572, 3564, 3564, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3564, 3572, 3564, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3578, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3564, 3564, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3564, + 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, - 3565, 3565, 3557, 3557, 3565, 3565, 3565, 3557, 3557, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3557, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3557, 3565, - 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, - 3557, 3565, 3565, 3565, 3565, 3557, 3565, 3557, 3565, 3565, - 3565, 3565, 3565, 3557, 3565, 3565, 3557, 3565, 3565, 3565, - 3565, 3565, 3565, 3557, 3565, 3565, 3557, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, - 3557, 3565, 3565, 3571, 3565, 3565, 3565, 3565, 3565, 3565, + 3572, 3572, 3564, 3564, 3572, 3572, 3572, 3564, 3564, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3564, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3564, 3572, + 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, + 3564, 3572, 3572, 3572, 3572, 3564, 3572, 3564, 3572, 3572, + 3572, 3572, 3572, 3564, 3572, 3572, 3564, 3572, 3572, 3572, + 3572, 3572, 3572, 3564, 3572, 3572, 3564, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, + 3564, 3572, 3572, 3578, 3572, 3572, 3572, 3572, 3572, 3572, - 3565, 3565, 3565, 3557, 3557, 3565, 3557, 3565, 3565, 3557, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, - 3557, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, - 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3557, 3565, 3565, 3565, 3557, 3557, 3557, 3565, 3565, - 3565, 3557, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, - 3557, 3557, 3557, 3565, 3565, 3565, 3557, 3565, 3565, 3557, + 3572, 3572, 3572, 3564, 3564, 3572, 3564, 3572, 3572, 3564, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, + 3564, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, + 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3564, 3572, 3572, 3572, 3564, 3564, 3564, 3572, 3572, + 3572, 3564, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, + 3564, 3564, 3564, 3572, 3572, 3572, 3564, 3572, 3572, 3564, - 3565, 3557, 3565, 3557, 3565, 3565, 3565, 3565, 3557, 3565, - 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3557, 3565, 3557, 3565, 3557, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3557, 3557, 3565, 3565, 3565, 3557, 3565, - 3557, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3557, 3557, - 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, - 3565, 3557, 3565, 3557, 3565, 3565, 3565, 3557, 3565, 3565, + 3572, 3564, 3572, 3564, 3572, 3572, 3572, 3572, 3564, 3572, + 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3564, 3572, 3564, 3572, 3564, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3564, 3564, 3572, 3572, 3572, 3564, 3572, + 3564, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3564, 3564, + 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, + 3572, 3564, 3572, 3564, 3572, 3572, 3572, 3564, 3572, 3572, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3557, 3557, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, - 3557, 3565, 3557, 3565, 3557, 3565, 3565, 3565, 3565, 3565, - 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, - 3565, 3565, 3565, 3565, 3565, 3557, 3557, 3565, 3565, 3557, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3564, 3564, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, + 3572, 3564, 3572, 3564, 3572, 3564, 3572, 3572, 3572, 3572, + 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3564, 3572, 3572, 3572, 3572, 3572, 3564, 3564, 3572, 3572, + 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, - 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, - 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, - 3565, 3565, 3557, 3565, 3565, 3565, 3557, 3557, 3557, 3565, - 3565, 3565, 3557, 3557, 3557, 3557, 3565, 3565, 3565, 3565, - 3557, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, - 3565, 3565, 3565, 3565, 3557, 3557, 3565, 3565, 3565, 3565, - 3565, 3565, 3557, 3557, 3565, 3565, 3565, 3565, 3565, 3557, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3557, 3557, 3565, 3557, 3565, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, + 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3564, 3572, + 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3564, 3564, 3564, + 3572, 3572, 3572, 3564, 3564, 3564, 3564, 3572, 3572, 3572, + 3572, 3564, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, + 3564, 3572, 3572, 3572, 3572, 3572, 3564, 3564, 3572, 3572, + 3572, 3572, 3572, 3572, 3564, 3564, 3572, 3572, 3572, 3572, + 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3564, 3572, - 3565, 3557, 3557, 3565, 3565, 3565, 3565, 3557, 3565, 3565, - 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, - 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, - 3565, 3565, 3557, 3557, 3565, 3565, 3565, 3565, 3565, 3557, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, - 3557, 3557, 3565, 3565, 3557, 3557, 3565, 3557, 3557, 3557, - 3557, 3557, 3557, 3557, 3557, 3565, 3565, 3557, 3557, 3565, - 3565, 3565, 3557, 3565, 3557, 3565, 3565, 3565, 3565, 3557, - 3565, 3557, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, + 3564, 3572, 3572, 3564, 3572, 3564, 3572, 3572, 3572, 3572, + 3564, 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, + 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3564, 3572, 3572, 3564, 3564, 3572, 3572, 3572, + 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3564, 3572, 3572, 3564, 3564, 3572, 3572, 3564, 3564, 3572, + 3572, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3572, + 3572, 3564, 3564, 3572, 3572, 3572, 3564, 3572, 3564, 3572, + 3572, 3572, 3572, 3564, 3572, 3564, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, - 3565, 3565, 3557, 3557, 3557, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, - 3565, 3565, 3557, 3565, 3557, 3565, 3557, 3557, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, - 3565, 3557, 3557, 3565, 3565, 3557, 3565, 3565, 3557, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3557, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3557, 3565, 3565, 3565, 3557, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3557, 3565, 3565, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3564, 3564, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3564, 3572, + 3564, 3572, 3564, 3564, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3564, 3572, 3564, 3564, 3564, + 3572, 3572, 3564, 3572, 3572, 3564, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3564, 3564, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3564, + 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3557, 3565, - 3565, 3565, 3565, 3565, 3557, 3565, 3565, 3565, 3565, 3565, - 3565, 3557, 3565, 3565, 3565, 3557, 3565, 3557, 3557, 3565, - 3565, 3565, 3565, 3565, 3557, 3557, 0, 3557, 3557, 3557, - 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, - 3557, 3557, 3557, 3557, 3557 + 3572, 3572, 3564, 3572, 3564, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3564, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, 3572, + 3572, 3572, 3564, 3572, 3572, 3564, 3572, 3572, 3572, 3572, + 3572, 3564, 3572, 3572, 3572, 3572, 3572, 3572, 3564, 3572, + 3572, 3572, 3564, 3572, 3564, 3564, 3572, 3572, 3572, 3572, + 3572, 3564, 3564, 0, 3564, 3564, 3564, 3564, 3564, 3564, + 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, + 3564, 3564 } ; -static const flex_int16_t yy_nxt[6988] = +static const flex_int16_t yy_nxt[7002] = { 0, 18, 19, 20, 21, 22, 23, 22, 18, 18, 18, 18, 18, 22, 24, 25, 26, 27, 28, 29, 30, @@ -1929,7 +1932,7 @@ static const flex_int16_t yy_nxt[6988] = 1632, 1633, 1630, 86, 1640, 86, 1634, 86, 1641, 1638, 1636, 86, 86, 1646, 1639, 86, 1645, 1647, 86, 86, 1642, 1643, 86, 86, 86, 1649, 1650, 86, 1651, 86, - 86, 1644, 1648, 86, 1655, 1656, 1657, 86, 1654, 3557, + 86, 1644, 1648, 86, 1655, 1656, 1657, 86, 1654, 3564, 86, 86, 86, 86, 1658, 1652, 86, 1659, 1660, 86, 86, 1653, 86, 86, 1661, 1663, 86, 86, 86, 86, 86, 1662, 86, 1668, 86, 1664, 1667, 86, 1670, 1671, @@ -1974,7 +1977,7 @@ static const flex_int16_t yy_nxt[6988] = 86, 1840, 1843, 86, 1847, 86, 1845, 86, 1848, 1850, 86, 86, 1849, 1842, 86, 86, 86, 1844, 1853, 86, 86, 1852, 86, 86, 86, 1854, 86, 86, 86, 86, - 86, 86, 86, 86, 1851, 1864, 86, 86, 86, 3557, + 86, 86, 86, 86, 1851, 1864, 86, 86, 86, 3564, 1855, 1859, 1860, 1856, 1858, 1857, 1861, 1862, 1868, 86, 1869, 86, 1866, 1871, 86, 1863, 1867, 1872, 86, 86, 86, 86, 1877, 86, 1870, 86, 86, 86, 86, 1881, @@ -1984,7 +1987,7 @@ static const flex_int16_t yy_nxt[6988] = 86, 86, 86, 1889, 1885, 1887, 1890, 1884, 86, 1891, 86, 1895, 1896, 86, 1898, 1892, 1897, 86, 86, 86, 1893, 1900, 1901, 86, 86, 86, 1894, 86, 1899, 86, - 1904, 86, 1902, 86, 1905, 86, 86, 3557, 1906, 86, + 1904, 86, 1902, 86, 1905, 86, 86, 3564, 1906, 86, 86, 1914, 86, 1903, 1909, 1908, 1907, 86, 1911, 1913, 86, 1912, 1915, 86, 86, 1910, 86, 1916, 86, 86, 1922, 86, 1917, 86, 86, 1923, 86, 1918, 1924, 86, @@ -1997,7 +2000,7 @@ static const flex_int16_t yy_nxt[6988] = 1954, 1945, 86, 1952, 1949, 86, 86, 86, 1955, 1958, 86, 86, 1962, 1953, 1960, 86, 86, 86, 86, 86, 1961, 1957, 86, 1959, 86, 1956, 86, 86, 86, 1968, - 1967, 86, 86, 86, 3557, 1964, 1965, 1969, 1966, 1970, + 1967, 86, 86, 86, 3564, 1964, 1965, 1969, 1966, 1970, 1971, 1973, 1975, 86, 1977, 1972, 1978, 1974, 86, 86, 86, 86, 86, 1980, 86, 86, 1984, 86, 86, 1986, @@ -2012,7 +2015,7 @@ static const flex_int16_t yy_nxt[6988] = 2024, 2025, 86, 86, 2022, 86, 86, 2027, 86, 86, 86, 2028, 86, 86, 86, 2026, 86, 86, 86, 2033, - 86, 2034, 86, 86, 86, 2038, 2035, 86, 3557, 2029, + 86, 2034, 86, 86, 86, 2038, 2035, 86, 3564, 2029, 2031, 2032, 2030, 2037, 2036, 86, 2039, 86, 86, 2045, 2042, 86, 2044, 2041, 2046, 86, 2047, 2043, 86, 2040, 86, 86, 86, 86, 86, 2053, 86, 2056, 86, 2048, @@ -2024,7 +2027,7 @@ static const flex_int16_t yy_nxt[6988] = 86, 86, 2083, 2085, 2081, 2082, 86, 86, 2073, 86, 2076, 2084, 2079, 86, 86, 86, 86, 2093, 86, 2080, - 86, 2097, 3557, 86, 2095, 2086, 2087, 2088, 86, 2096, + 86, 2097, 3564, 86, 2095, 2086, 2087, 2088, 86, 2096, 86, 86, 2089, 2091, 2090, 2098, 2092, 86, 2094, 2099, 2102, 86, 2100, 2101, 86, 86, 86, 2106, 86, 86, 2103, 86, 2108, 86, 86, 86, 2111, 2112, 86, 86, @@ -2046,7 +2049,7 @@ static const flex_int16_t yy_nxt[6988] = 2181, 2173, 2175, 2187, 2184, 2177, 2178, 86, 2179, 2182, 2185, 86, 86, 2186, 86, 86, 2188, 2191, 2192, 86, - 2193, 86, 2194, 2196, 3557, 2189, 2197, 2195, 86, 86, + 2193, 86, 2194, 2196, 3564, 2189, 2197, 2195, 86, 86, 2190, 86, 86, 86, 2201, 86, 2199, 86, 86, 86, 86, 2198, 2203, 86, 2205, 2200, 2207, 2202, 86, 2204, 2209, 86, 86, 2210, 86, 86, 86, 170, 86, 86, @@ -2085,13 +2088,13 @@ static const flex_int16_t yy_nxt[6988] = 86, 86, 2358, 2363, 86, 2359, 86, 2356, 86, 86, 2365, 86, 2364, 86, 2368, 2361, 2369, 86, 2366, 86, 2367, 2373, 86, 86, 86, 86, 2370, 86, 2372, 86, - 86, 86, 3557, 86, 86, 86, 86, 2371, 2381, 86, + 86, 86, 3564, 86, 86, 86, 86, 2371, 2381, 86, 86, 2374, 2375, 2376, 2379, 2377, 2380, 2382, 2383, 2387, 86, 86, 2378, 86, 2384, 2385, 2386, 86, 86, 2388, 86, 86, 2391, 2390, 86, 86, 2396, 86, 86, 2398, 86, 86, 2389, 2392, 2395, 86, 86, 2397, 2393, 2401, - 86, 2402, 2399, 86, 170, 2405, 2394, 86, 3557, 2407, + 86, 2402, 2399, 86, 170, 2405, 2394, 86, 3564, 2407, 2400, 86, 2409, 2403, 2408, 86, 86, 2410, 86, 2411, 86, 86, 2404, 86, 2414, 86, 2406, 2413, 2412, 86, 2415, 86, 2419, 86, 86, 2420, 86, 2423, 86, 2422, @@ -2129,13 +2132,13 @@ static const flex_int16_t yy_nxt[6988] = 2568, 86, 2555, 86, 2557, 86, 86, 86, 2566, 86, 2559, 2563, 2569, 2567, 2570, 86, 86, 86, 86, 2573, 86, 86, 86, 86, 86, 86, 2574, 2575, 2572, 2576, - 2571, 2577, 2579, 2580, 2584, 2578, 86, 3557, 86, 86, + 2571, 2577, 2579, 2580, 2584, 2578, 86, 3564, 86, 86, 2581, 86, 2585, 2582, 2583, 2586, 86, 2587, 86, 86, 2590, 86, 86, 170, 86, 2588, 86, 2589, 2591, 86, 2596, 86, 86, 86, 86, 86, 86, 86, 2604, 86, 2594, 2597, 2592, 2598, 2593, 2595, 86, 2599, 2600, 2602, - 86, 2601, 3557, 2603, 2607, 86, 86, 2608, 2606, 2605, + 86, 2601, 3564, 2603, 2607, 86, 86, 2608, 2606, 2605, 2609, 86, 86, 86, 2612, 2610, 2613, 86, 2611, 86, 86, 86, 86, 2615, 86, 86, 2614, 86, 2617, 86, 86, 2621, 2622, 2616, 86, 2619, 86, 2618, 86, 2624, @@ -2178,7 +2181,7 @@ static const flex_int16_t yy_nxt[6988] = 2783, 2784, 2787, 2788, 2792, 86, 2789, 2791, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 2796, 2803, - 86, 2804, 86, 86, 2802, 3557, 2793, 2794, 2795, 2797, + 86, 2804, 86, 86, 2802, 3564, 2793, 2794, 2795, 2797, 2798, 2799, 2800, 86, 2801, 86, 2808, 86, 2809, 86, 2810, 2807, 86, 2805, 86, 86, 86, 86, 86, 86, 86, 2806, 86, 2815, 86, 86, 2820, 86, 86, 2812, @@ -2193,14 +2196,14 @@ static const flex_int16_t yy_nxt[6988] = 2853, 2854, 86, 2848, 2856, 86, 86, 2852, 86, 2849, 2850, 2858, 86, 2859, 86, 2857, 86, 86, 2861, 2864, 86, 86, 2865, 2860, 2867, 86, 2863, 86, 2862, 86, - 86, 86, 86, 2874, 86, 86, 86, 86, 3557, 2866, + 86, 86, 86, 2874, 86, 86, 86, 86, 3564, 2866, 2868, 2871, 2869, 2870, 2872, 2873, 2877, 86, 86, 86, 86, 2875, 2876, 2878, 2879, 86, 86, 86, 86, 86, 2881, 86, 86, 86, 2880, 2882, 86, 2884, 2887, 2885, 86, 2888, 2890, 86, 2886, 2883, 86, 2889, 2891, 86, 86, 2892, 2894, 170, 86, 86, 86, 2895, 2899, 2893, - 2896, 86, 86, 2901, 86, 86, 2900, 3557, 86, 2904, + 2896, 86, 86, 2901, 86, 86, 2900, 3564, 86, 2904, 86, 86, 2897, 2903, 2898, 2905, 86, 2907, 86, 86, 2902, 2909, 2908, 86, 2906, 86, 2910, 86, 2911, 86, 2912, 2914, 86, 86, 86, 86, 2915, 86, 2916, 86, @@ -2232,14 +2235,14 @@ static const flex_int16_t yy_nxt[6988] = 86, 86, 86, 86, 86, 3037, 3047, 86, 86, 3032, 86, 3053, 3034, 3038, 3033, 3036, 3041, 3039, 86, 3042, - 3557, 3044, 86, 3040, 3043, 86, 3045, 86, 86, 3046, + 3564, 3044, 86, 3040, 3043, 86, 3045, 86, 86, 3046, 86, 3048, 86, 3049, 86, 3050, 86, 3051, 86, 3052, 86, 86, 3055, 86, 3056, 3054, 86, 3059, 3058, 86, 86, 3060, 86, 3064, 86, 3057, 3065, 86, 3061, 86, 86, 86, 3066, 3069, 86, 86, 3067, 86, 3071, 86, 3062, 86, 3063, 86, 3070, 86, 3072, 3073, 86, 3068, 86, 86, 3074, 3078, 3075, 3079, 86, 3080, 86, 3076, - 3077, 86, 86, 86, 86, 3081, 86, 3086, 86, 3557, + 3077, 86, 86, 86, 86, 3081, 86, 3086, 86, 3564, 86, 3082, 3087, 86, 86, 3084, 86, 3089, 3090, 86, 86, 3085, 3083, 3088, 3091, 3092, 86, 3094, 86, 86, @@ -2256,115 +2259,118 @@ static const flex_int16_t yy_nxt[6988] = 86, 3148, 86, 3143, 3141, 3142, 3145, 86, 3146, 3147, 86, 3149, 3153, 86, 86, 3150, 86, 3155, 3152, 3151, - 86, 86, 86, 3156, 3159, 86, 3161, 86, 86, 3163, - 86, 86, 86, 3154, 3162, 3165, 86, 86, 3157, 86, - 86, 3160, 3171, 86, 3168, 86, 86, 3158, 3166, 86, - 3170, 3174, 3164, 3167, 86, 86, 3169, 86, 3173, 86, - 3177, 86, 86, 3180, 86, 3181, 3172, 86, 86, 86, - 3183, 86, 86, 3184, 3176, 3178, 86, 3175, 3186, 86, - 86, 3179, 3187, 86, 3190, 86, 86, 3182, 86, 86, - 3195, 3185, 3189, 86, 86, 3188, 86, 3192, 3193, 86, + 86, 86, 86, 3156, 3159, 86, 3161, 86, 86, 3164, + 86, 3162, 86, 3154, 3163, 3166, 86, 86, 3157, 86, + 86, 3160, 86, 86, 86, 3169, 86, 3158, 3165, 3171, + 3172, 86, 86, 3167, 3175, 3168, 86, 86, 3170, 86, + 86, 3174, 3182, 3173, 86, 3178, 3181, 86, 86, 3176, + 86, 3179, 86, 3184, 86, 3177, 86, 3185, 3180, 86, + 3187, 86, 3188, 86, 86, 3191, 86, 86, 86, 86, + 3183, 3189, 86, 3196, 86, 86, 3186, 3194, 3193, 86, - 3199, 86, 86, 86, 3191, 3557, 3197, 86, 3194, 86, - 3201, 86, 3196, 86, 3202, 86, 3203, 3200, 3206, 3198, - 86, 3204, 3209, 3205, 86, 3207, 86, 86, 86, 86, - 3208, 3210, 3212, 86, 3211, 86, 3215, 86, 86, 3214, - 3213, 86, 86, 3218, 86, 86, 86, 86, 3223, 86, - 3219, 86, 86, 86, 3216, 3217, 3227, 86, 3230, 3220, - 3222, 3226, 3228, 86, 86, 3224, 86, 3225, 3229, 86, - 3221, 3232, 3233, 86, 3234, 86, 3235, 86, 3231, 3236, - 86, 86, 86, 3239, 86, 86, 3241, 86, 86, 86, - 3240, 3242, 86, 86, 3237, 86, 86, 86, 3248, 3249, + 3200, 86, 86, 86, 3190, 3192, 3198, 86, 86, 3195, + 3202, 3197, 86, 86, 3564, 3199, 3203, 3201, 86, 3204, + 3205, 3207, 3210, 3206, 3208, 86, 86, 86, 86, 3209, + 3211, 86, 3213, 86, 86, 86, 3212, 3216, 86, 3214, + 3219, 86, 86, 86, 86, 86, 86, 3224, 86, 86, + 86, 3564, 86, 86, 3215, 3217, 3218, 3220, 3231, 3223, + 3221, 3227, 3228, 86, 3229, 86, 3226, 86, 3225, 3222, + 3230, 86, 86, 3234, 86, 3235, 86, 3233, 3236, 86, + 86, 3232, 3237, 86, 86, 3240, 86, 86, 3242, 86, + 86, 86, 3241, 3238, 3244, 86, 86, 86, 86, 86, - 86, 86, 86, 3243, 86, 86, 86, 86, 3238, 86, - 3244, 3255, 86, 86, 3246, 3245, 3254, 86, 3247, 3252, - 3258, 3251, 3256, 86, 3253, 3260, 86, 3250, 86, 3259, - 86, 3257, 86, 3261, 3263, 86, 3264, 86, 3262, 86, - 86, 3267, 3268, 86, 3265, 86, 3266, 86, 3269, 3270, - 86, 86, 86, 86, 86, 86, 3271, 3272, 86, 3273, - 3276, 86, 86, 3274, 3277, 3275, 3279, 3278, 86, 86, - 86, 86, 86, 86, 86, 86, 3288, 86, 3291, 86, - 3289, 3280, 86, 3557, 86, 86, 3284, 3292, 3281, 3282, - 3283, 3285, 3286, 86, 3287, 86, 3294, 3290, 3295, 3293, + 86, 3250, 3243, 3251, 86, 86, 86, 86, 86, 3245, + 3239, 86, 3257, 86, 3258, 86, 86, 3248, 3246, 3247, + 3256, 3249, 3254, 3260, 86, 3253, 86, 3255, 86, 86, + 86, 3252, 3564, 3263, 3259, 3265, 86, 3266, 86, 86, + 86, 86, 3269, 86, 3261, 3262, 3267, 86, 86, 3272, + 86, 3264, 3270, 3268, 86, 3271, 86, 86, 86, 3273, + 3274, 86, 3275, 3276, 86, 86, 3278, 86, 86, 86, + 86, 3280, 86, 86, 86, 3281, 3279, 86, 3277, 86, + 86, 86, 86, 86, 86, 3290, 3291, 3282, 3286, 3283, + 3284, 3285, 3293, 3303, 3287, 3288, 86, 3297, 86, 3564, - 3296, 86, 3297, 86, 86, 3299, 86, 86, 3298, 3302, - 86, 86, 3300, 3414, 3301, 3303, 86, 3304, 3305, 86, - 86, 3306, 3307, 3311, 86, 3308, 86, 3309, 3310, 86, - 86, 86, 3314, 86, 3312, 86, 86, 86, 3317, 86, - 3313, 86, 86, 3321, 86, 86, 86, 3320, 86, 86, - 3316, 86, 86, 3315, 86, 3324, 3325, 86, 3326, 3318, - 86, 3319, 3329, 3330, 86, 3322, 3327, 86, 3332, 3331, - 86, 3323, 3328, 3333, 86, 3334, 86, 86, 86, 86, - 3341, 86, 3336, 3339, 86, 3335, 86, 3337, 3340, 86, - 3338, 86, 86, 86, 3348, 86, 3343, 3345, 3346, 86, + 3289, 3294, 3292, 3295, 86, 3298, 86, 3296, 3299, 86, + 86, 3301, 86, 86, 3300, 3304, 86, 86, 3302, 3306, + 86, 3307, 3308, 86, 86, 3309, 3310, 3314, 86, 3311, + 86, 86, 3305, 3312, 3313, 86, 86, 86, 3317, 86, + 3315, 86, 86, 3320, 86, 86, 3316, 86, 86, 3318, + 3324, 86, 3323, 86, 86, 3319, 86, 86, 86, 86, + 3328, 3327, 86, 86, 3321, 3322, 3329, 3332, 3325, 3333, + 86, 86, 3334, 3330, 86, 3335, 86, 3331, 3326, 3336, + 86, 3337, 86, 86, 86, 3342, 3338, 86, 3339, 3344, + 3343, 86, 86, 3340, 86, 86, 3341, 86, 86, 3348, - 3349, 86, 3351, 86, 3342, 3344, 86, 3350, 3352, 86, - 3347, 86, 3355, 86, 3353, 86, 3354, 3356, 86, 3358, - 86, 3359, 86, 86, 3357, 3360, 86, 3361, 86, 3362, - 86, 3363, 86, 3364, 86, 3365, 86, 86, 3368, 86, - 3369, 86, 86, 86, 86, 86, 3367, 3373, 86, 3366, - 86, 3370, 3375, 86, 86, 3371, 86, 86, 3379, 86, - 3376, 3380, 86, 86, 3372, 3382, 86, 3377, 3378, 3374, - 86, 86, 86, 3384, 3381, 86, 3386, 86, 3389, 86, - 3388, 3383, 86, 86, 86, 86, 86, 3391, 86, 86, - 3387, 86, 3395, 3390, 86, 3397, 86, 3385, 3396, 86, + 3352, 3345, 3346, 3349, 3351, 86, 86, 86, 86, 3354, + 86, 3355, 86, 3347, 3353, 86, 3350, 3358, 86, 86, + 3357, 86, 3356, 3359, 86, 3362, 86, 86, 3360, 3363, + 86, 3364, 86, 3365, 86, 3366, 86, 3367, 86, 3361, + 3368, 86, 3369, 86, 86, 86, 3372, 86, 3373, 86, + 86, 86, 86, 3370, 3371, 86, 3375, 3377, 86, 3374, + 3379, 86, 86, 86, 86, 86, 3383, 3380, 3384, 86, + 86, 3376, 3386, 86, 3378, 3381, 3382, 86, 3385, 86, + 3388, 86, 3390, 86, 86, 3393, 86, 3392, 3387, 86, + 86, 86, 86, 86, 3395, 86, 86, 86, 86, 3399, - 86, 86, 3392, 3393, 3394, 3400, 86, 86, 86, 3398, - 3401, 86, 3402, 3403, 86, 3404, 86, 3405, 86, 86, - 3407, 86, 3399, 3408, 3406, 86, 3409, 86, 86, 86, - 3416, 3411, 3413, 86, 86, 3410, 3412, 86, 86, 86, - 86, 86, 86, 3415, 86, 86, 3417, 3425, 86, 3423, - 3428, 86, 86, 3418, 3420, 3419, 3422, 3424, 86, 86, - 3557, 86, 86, 3427, 3421, 3426, 3430, 86, 3429, 3433, - 86, 3434, 3432, 3431, 3435, 86, 86, 3436, 3437, 86, - 3438, 86, 86, 86, 86, 86, 3439, 3441, 3442, 86, - 3443, 86, 3446, 86, 86, 86, 86, 86, 86, 3449, + 3394, 3391, 3401, 86, 86, 3389, 3400, 86, 86, 3396, + 3397, 3398, 3405, 86, 3408, 86, 3406, 86, 3402, 3409, + 86, 3407, 3403, 86, 3404, 3410, 86, 86, 86, 86, + 86, 3413, 3412, 86, 86, 86, 86, 3419, 86, 3418, + 3411, 86, 3421, 3415, 3417, 86, 86, 86, 3414, 86, + 86, 3420, 86, 3416, 86, 86, 86, 3423, 3422, 86, + 3430, 3428, 86, 3425, 3424, 3427, 3429, 3432, 3434, 86, + 86, 86, 86, 86, 3426, 86, 3436, 3431, 3433, 3439, + 86, 3441, 86, 86, 3440, 86, 3437, 86, 3442, 86, + 3435, 3443, 86, 3438, 3444, 86, 86, 86, 86, 3447, - 3450, 86, 3440, 3452, 86, 86, 3445, 3447, 3448, 3453, - 86, 86, 3454, 86, 3444, 3451, 3456, 86, 3459, 86, - 86, 3460, 86, 86, 3455, 86, 3457, 3463, 3464, 86, - 3461, 3458, 86, 86, 86, 86, 3469, 86, 86, 3465, - 3468, 86, 3462, 3470, 86, 3466, 86, 86, 3467, 86, - 86, 3474, 86, 86, 86, 3476, 86, 86, 86, 3471, - 3473, 3472, 3481, 3482, 3483, 86, 3478, 3479, 86, 3475, - 86, 3477, 86, 3487, 86, 3480, 86, 3489, 86, 3490, - 86, 3488, 86, 86, 86, 3491, 86, 3492, 3484, 3486, - 3485, 3493, 3495, 3496, 86, 86, 3498, 86, 86, 86, + 86, 86, 3445, 3448, 3452, 3446, 3449, 86, 86, 86, + 86, 86, 3451, 86, 3450, 3461, 3455, 3456, 86, 86, + 3454, 3453, 3458, 86, 3459, 86, 3460, 86, 86, 3457, + 3463, 86, 3462, 86, 3464, 3466, 86, 86, 3467, 86, + 86, 3468, 3470, 3471, 86, 86, 3465, 86, 86, 86, + 3476, 86, 3475, 86, 3472, 3477, 86, 3473, 3469, 86, + 86, 86, 86, 86, 3474, 86, 3481, 86, 3483, 86, + 86, 86, 86, 86, 3478, 3480, 3488, 3489, 86, 3479, + 3482, 86, 3485, 3486, 3484, 3496, 3487, 3490, 86, 3494, + 86, 86, 86, 3491, 86, 3497, 3492, 3495, 86, 86, - 3497, 86, 86, 3494, 86, 3499, 86, 3504, 86, 3501, - 86, 86, 86, 86, 86, 3507, 3508, 86, 3500, 3509, - 86, 86, 3510, 3502, 3506, 3503, 3511, 3505, 86, 86, - 3515, 3512, 86, 86, 86, 86, 3519, 3516, 86, 3513, - 86, 3514, 86, 3521, 86, 3522, 3517, 86, 86, 3526, - 86, 86, 3523, 3529, 86, 3524, 3527, 3520, 86, 3525, - 3518, 86, 86, 3528, 86, 3530, 86, 86, 86, 3531, - 86, 3533, 3535, 86, 86, 3537, 86, 86, 86, 3538, - 86, 3541, 86, 3532, 3542, 86, 3534, 3536, 86, 3545, - 3546, 86, 86, 3548, 86, 3539, 3540, 3543, 86, 3547, + 3493, 86, 86, 3498, 3499, 3502, 3500, 3503, 86, 86, + 86, 86, 3505, 86, 3504, 86, 86, 86, 86, 3506, + 3511, 3501, 86, 3508, 86, 86, 86, 86, 3514, 3507, + 3515, 86, 86, 86, 86, 86, 3509, 3510, 3513, 3518, + 86, 3512, 3516, 3519, 86, 3517, 86, 3522, 3521, 3523, + 86, 3520, 86, 3524, 86, 3526, 86, 3528, 86, 3529, + 86, 86, 86, 3533, 86, 3530, 3564, 86, 3531, 3536, + 86, 3527, 3534, 86, 86, 3535, 3525, 86, 86, 86, + 86, 3532, 86, 86, 3537, 3538, 86, 3540, 3542, 86, + 86, 3544, 86, 3539, 86, 3545, 86, 3548, 3541, 3543, - 86, 3544, 3549, 86, 86, 3550, 86, 86, 3557, 3551, - 3557, 3552, 3555, 86, 3556, 86, 3557, 3557, 3557, 3553, - 3557, 3557, 3557, 3557, 3557, 3557, 3554, 47, 47, 47, - 47, 47, 47, 47, 52, 52, 52, 52, 52, 52, - 52, 57, 57, 57, 57, 57, 57, 57, 63, 63, - 63, 63, 63, 63, 63, 68, 68, 68, 68, 68, - 68, 68, 74, 74, 74, 74, 74, 74, 74, 80, - 80, 80, 80, 80, 80, 80, 89, 89, 3557, 89, - 89, 89, 89, 160, 160, 3557, 3557, 3557, 160, 160, - 162, 162, 3557, 3557, 162, 3557, 162, 164, 3557, 3557, + 3549, 86, 3546, 86, 86, 3552, 3553, 86, 86, 3555, + 86, 3547, 86, 3550, 86, 3554, 3556, 86, 86, 3557, + 86, 86, 3551, 3558, 3564, 3559, 3562, 86, 3563, 86, + 3564, 3564, 3564, 3560, 3564, 3564, 3564, 3564, 3564, 3564, + 3561, 47, 47, 47, 47, 47, 47, 47, 52, 52, + 52, 52, 52, 52, 52, 57, 57, 57, 57, 57, + 57, 57, 63, 63, 63, 63, 63, 63, 63, 68, + 68, 68, 68, 68, 68, 68, 74, 74, 74, 74, + 74, 74, 74, 80, 80, 80, 80, 80, 80, 80, + 89, 89, 3564, 89, 89, 89, 89, 160, 160, 3564, - 3557, 3557, 3557, 164, 167, 167, 3557, 3557, 3557, 167, - 167, 169, 3557, 3557, 3557, 3557, 3557, 169, 171, 171, - 3557, 171, 171, 171, 171, 174, 3557, 3557, 3557, 3557, - 3557, 174, 177, 177, 3557, 3557, 3557, 177, 177, 90, - 90, 3557, 90, 90, 90, 90, 17, 3557, 3557, 3557, - 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, - 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, - 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, - 3557, 3557, 3557, 3557, 3557, 3557, 3557 + 3564, 3564, 160, 160, 162, 162, 3564, 3564, 162, 3564, + 162, 164, 3564, 3564, 3564, 3564, 3564, 164, 167, 167, + 3564, 3564, 3564, 167, 167, 169, 3564, 3564, 3564, 3564, + 3564, 169, 171, 171, 3564, 171, 171, 171, 171, 174, + 3564, 3564, 3564, 3564, 3564, 174, 177, 177, 3564, 3564, + 3564, 177, 177, 90, 90, 3564, 90, 90, 90, 90, + 17, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, + 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, + 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, + 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, + + 3564 } ; -static const flex_int16_t yy_chk[6988] = +static const flex_int16_t yy_chk[7002] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2374,7 +2380,7 @@ static const flex_int16_t yy_chk[6988] = 5, 3, 6, 24, 4, 24, 24, 5, 24, 6, 7, 7, 7, 7, 24, 7, 8, 8, 8, 8, 33, 8, 7, 9, 9, 9, 26, 26, 8, 10, - 10, 10, 19, 29, 9, 33, 19, 29, 3565, 35, + 10, 10, 19, 29, 9, 33, 19, 29, 3572, 35, 10, 11, 11, 11, 11, 11, 11, 13, 13, 13, 13, 34, 13, 11, 35, 99, 34, 29, 38, 13, @@ -3028,112 +3034,115 @@ static const flex_int16_t yy_chk[6988] = 3054, 3051, 3052, 3044, 3041, 3042, 3048, 3056, 3049, 3050, 3055, 3052, 3056, 3057, 3059, 3053, 3058, 3058, 3055, 3054, - 3060, 3061, 3063, 3059, 3062, 3062, 3066, 3066, 3067, 3068, - 3068, 3070, 3074, 3057, 3067, 3072, 3072, 3075, 3060, 3076, - 3077, 3063, 3081, 3081, 3076, 3078, 3082, 3061, 3074, 3083, - 3078, 3084, 3070, 3075, 3085, 3086, 3077, 3084, 3083, 3088, - 3088, 3089, 3090, 3091, 3091, 3093, 3082, 3095, 3097, 3099, - 3096, 3093, 3103, 3097, 3086, 3089, 3096, 3085, 3100, 3100, - 3102, 3090, 3101, 3101, 3104, 3104, 3105, 3095, 3107, 3106, - 3108, 3099, 3103, 3109, 3110, 3102, 3108, 3105, 3106, 3111, + 3060, 3061, 3063, 3059, 3062, 3062, 3066, 3070, 3067, 3068, + 3068, 3066, 3066, 3057, 3067, 3072, 3072, 3074, 3060, 3075, + 3076, 3063, 3077, 3082, 3078, 3076, 3085, 3061, 3070, 3078, + 3081, 3081, 3083, 3074, 3084, 3075, 3086, 3089, 3077, 3090, + 3084, 3083, 3093, 3082, 3088, 3088, 3091, 3091, 3093, 3085, + 3095, 3089, 3097, 3096, 3099, 3086, 3102, 3097, 3090, 3096, + 3100, 3100, 3101, 3101, 3103, 3104, 3104, 3105, 3106, 3107, + 3095, 3102, 3109, 3108, 3110, 3111, 3099, 3106, 3105, 3108, - 3112, 3112, 3113, 3121, 3104, 0, 3110, 3114, 3107, 3120, - 3114, 3115, 3109, 3126, 3115, 3116, 3116, 3113, 3122, 3111, - 3131, 3120, 3125, 3121, 3122, 3123, 3123, 3124, 3125, 3128, - 3124, 3126, 3129, 3129, 3128, 3130, 3132, 3133, 3136, 3131, - 3130, 3137, 3132, 3134, 3134, 3138, 3141, 3139, 3140, 3140, - 3136, 3142, 3143, 3148, 3133, 3133, 3145, 3145, 3148, 3137, - 3139, 3143, 3146, 3146, 3149, 3141, 3150, 3142, 3147, 3147, - 3138, 3150, 3151, 3151, 3152, 3152, 3153, 3153, 3149, 3154, - 3154, 3155, 3156, 3157, 3164, 3158, 3160, 3160, 3166, 3157, - 3158, 3162, 3162, 3167, 3155, 3168, 3169, 3170, 3170, 3172, + 3112, 3112, 3113, 3121, 3103, 3104, 3110, 3114, 3120, 3107, + 3114, 3109, 3126, 3115, 0, 3111, 3115, 3113, 3116, 3116, + 3120, 3122, 3125, 3121, 3123, 3123, 3124, 3122, 3125, 3124, + 3126, 3128, 3129, 3129, 3130, 3131, 3128, 3132, 3133, 3130, + 3134, 3134, 3137, 3132, 3138, 3136, 3139, 3140, 3140, 3141, + 3142, 0, 3143, 3148, 3131, 3133, 3133, 3136, 3148, 3139, + 3137, 3143, 3145, 3145, 3146, 3146, 3142, 3149, 3141, 3138, + 3147, 3147, 3150, 3151, 3151, 3152, 3152, 3150, 3153, 3153, + 3155, 3149, 3154, 3154, 3156, 3157, 3161, 3158, 3160, 3160, + 3165, 3157, 3158, 3155, 3163, 3163, 3167, 3168, 3169, 3170, - 3172, 3173, 3174, 3164, 3176, 3175, 3184, 3177, 3156, 3183, - 3166, 3178, 3178, 3181, 3168, 3167, 3177, 3188, 3169, 3175, - 3182, 3174, 3179, 3179, 3176, 3184, 3182, 3173, 3185, 3183, - 3195, 3181, 3193, 3185, 3189, 3189, 3191, 3191, 3188, 3192, - 3196, 3194, 3195, 3202, 3192, 3203, 3193, 3194, 3196, 3197, - 3197, 3198, 3205, 3200, 3201, 3204, 3198, 3200, 3208, 3201, - 3204, 3206, 3209, 3202, 3205, 3203, 3208, 3206, 3210, 3211, - 3214, 3217, 3213, 3216, 3215, 3219, 3217, 3220, 3221, 3224, - 3219, 3209, 3222, 0, 3221, 3226, 3214, 3222, 3210, 3211, - 3213, 3215, 3215, 3225, 3216, 3239, 3225, 3220, 3226, 3224, + 3171, 3171, 3161, 3173, 3173, 3174, 3175, 3177, 3176, 3165, + 3156, 3178, 3179, 3179, 3180, 3180, 3182, 3169, 3167, 3168, + 3178, 3170, 3176, 3183, 3184, 3175, 3185, 3177, 3186, 3183, + 3189, 3174, 0, 3186, 3182, 3190, 3190, 3192, 3192, 3194, + 3196, 3193, 3195, 3203, 3184, 3185, 3193, 3197, 3195, 3198, + 3198, 3189, 3196, 3194, 3199, 3197, 3201, 3202, 3204, 3199, + 3201, 3205, 3202, 3203, 3206, 3207, 3205, 3209, 3210, 3211, + 3212, 3207, 3215, 3214, 3240, 3209, 3206, 3216, 3204, 3217, + 3218, 3220, 3221, 3225, 3227, 3218, 3220, 3210, 3215, 3211, + 3212, 3214, 3222, 3240, 3216, 3216, 3223, 3227, 3222, 0, - 3230, 3230, 3231, 3231, 3232, 3237, 3237, 3238, 3232, 3240, - 3240, 3386, 3238, 3386, 3239, 3243, 3243, 3244, 3244, 3248, - 3244, 3245, 3245, 3248, 3245, 3246, 3246, 3247, 3247, 3250, - 3247, 3251, 3252, 3252, 3250, 3253, 3254, 3257, 3257, 3258, - 3251, 3259, 3260, 3261, 3261, 3262, 3265, 3260, 3266, 3268, - 3254, 3269, 3267, 3253, 3271, 3266, 3267, 3272, 3268, 3258, - 3274, 3259, 3272, 3273, 3273, 3262, 3269, 3275, 3275, 3274, - 3278, 3265, 3271, 3276, 3276, 3277, 3277, 3279, 3280, 3283, - 3282, 3284, 3279, 3281, 3285, 3278, 3282, 3280, 3281, 3281, - 3280, 3288, 3286, 3287, 3289, 3289, 3284, 3286, 3287, 3294, + 3217, 3223, 3221, 3225, 3226, 3231, 3231, 3226, 3232, 3232, + 3233, 3238, 3238, 3239, 3233, 3241, 3241, 3243, 3239, 3245, + 3245, 3246, 3246, 3250, 3246, 3247, 3247, 3250, 3247, 3248, + 3248, 3255, 3243, 3249, 3249, 3252, 3249, 3253, 3254, 3254, + 3252, 3256, 3259, 3259, 3260, 3261, 3253, 3262, 3264, 3255, + 3263, 3263, 3262, 3267, 3268, 3256, 3269, 3270, 3271, 3273, + 3269, 3268, 3274, 3276, 3260, 3261, 3270, 3274, 3264, 3275, + 3275, 3280, 3276, 3271, 3277, 3277, 3285, 3273, 3267, 3278, + 3278, 3279, 3279, 3281, 3282, 3283, 3280, 3286, 3281, 3284, + 3283, 3283, 3287, 3282, 3288, 3284, 3282, 3290, 3289, 3288, - 3290, 3291, 3292, 3292, 3283, 3285, 3290, 3291, 3293, 3293, - 3288, 3295, 3298, 3298, 3294, 3301, 3295, 3300, 3300, 3304, - 3304, 3305, 3305, 3313, 3301, 3306, 3306, 3307, 3307, 3309, - 3309, 3310, 3310, 3311, 3311, 3312, 3312, 3315, 3316, 3316, - 3317, 3317, 3318, 3319, 3320, 3325, 3315, 3322, 3322, 3313, - 3323, 3318, 3324, 3324, 3326, 3319, 3327, 3328, 3328, 3331, - 3325, 3329, 3329, 3335, 3320, 3332, 3332, 3326, 3327, 3323, - 3336, 3337, 3339, 3336, 3331, 3338, 3338, 3341, 3342, 3343, - 3341, 3335, 3344, 3345, 3342, 3346, 3349, 3344, 3347, 3350, - 3339, 3353, 3349, 3343, 3354, 3353, 3357, 3337, 3350, 3370, + 3292, 3285, 3286, 3289, 3291, 3291, 3292, 3296, 3293, 3294, + 3294, 3295, 3295, 3287, 3293, 3297, 3290, 3300, 3300, 3303, + 3297, 3305, 3296, 3302, 3302, 3307, 3307, 3316, 3303, 3308, + 3308, 3309, 3309, 3310, 3310, 3312, 3312, 3313, 3313, 3305, + 3314, 3314, 3315, 3315, 3322, 3318, 3319, 3319, 3320, 3320, + 3321, 3323, 3328, 3316, 3318, 3326, 3322, 3325, 3325, 3321, + 3327, 3327, 3329, 3334, 3330, 3331, 3331, 3328, 3332, 3332, + 3338, 3323, 3335, 3335, 3326, 3329, 3330, 3339, 3334, 3340, + 3339, 3341, 3341, 3342, 3344, 3345, 3346, 3344, 3338, 3347, + 3348, 3345, 3349, 3352, 3347, 3350, 3360, 3353, 3356, 3352, - 3366, 3376, 3345, 3346, 3347, 3366, 3379, 3367, 3383, 3354, - 3367, 3377, 3370, 3371, 3371, 3372, 3372, 3374, 3374, 3378, - 3377, 3381, 3357, 3378, 3376, 3384, 3379, 3385, 3387, 3388, - 3388, 3383, 3385, 3389, 3390, 3381, 3384, 3391, 3392, 3393, - 3395, 3394, 3397, 3387, 3398, 3396, 3389, 3397, 3401, 3395, - 3400, 3400, 3407, 3390, 3392, 3391, 3394, 3396, 3399, 3406, - 0, 3402, 3409, 3399, 3393, 3398, 3402, 3414, 3401, 3408, - 3408, 3409, 3407, 3406, 3410, 3410, 3411, 3411, 3412, 3412, - 3413, 3413, 3415, 3417, 3416, 3418, 3414, 3416, 3417, 3419, - 3418, 3420, 3421, 3422, 3424, 3426, 3423, 3430, 3421, 3424, + 3346, 3342, 3356, 3357, 3361, 3340, 3353, 3370, 3374, 3348, + 3349, 3350, 3370, 3371, 3375, 3375, 3371, 3380, 3357, 3376, + 3376, 3374, 3360, 3381, 3361, 3378, 3378, 3382, 3383, 3385, + 3387, 3382, 3381, 3388, 3389, 3390, 3391, 3390, 3394, 3389, + 3380, 3392, 3392, 3385, 3388, 3393, 3395, 3396, 3383, 3397, + 3398, 3391, 3399, 3387, 3400, 3401, 3402, 3394, 3393, 3404, + 3401, 3399, 3403, 3396, 3395, 3398, 3400, 3403, 3405, 3405, + 3406, 3407, 3411, 3412, 3397, 3414, 3407, 3402, 3404, 3413, + 3413, 3415, 3415, 3419, 3414, 3420, 3411, 3416, 3416, 3424, + 3406, 3417, 3417, 3412, 3418, 3418, 3421, 3425, 3422, 3421, - 3425, 3425, 3415, 3427, 3427, 3431, 3420, 3422, 3423, 3429, - 3429, 3434, 3430, 3436, 3419, 3426, 3432, 3432, 3439, 3439, - 3440, 3440, 3441, 3442, 3431, 3445, 3434, 3443, 3444, 3447, - 3441, 3436, 3446, 3443, 3444, 3448, 3449, 3449, 3454, 3445, - 3448, 3455, 3442, 3451, 3451, 3446, 3457, 3458, 3447, 3460, - 3461, 3458, 3462, 3463, 3464, 3461, 3465, 3466, 3467, 3454, - 3457, 3455, 3466, 3467, 3468, 3468, 3463, 3464, 3471, 3460, - 3473, 3462, 3472, 3474, 3474, 3465, 3475, 3476, 3477, 3477, - 3478, 3475, 3479, 3476, 3481, 3478, 3480, 3479, 3471, 3473, - 3472, 3480, 3482, 3484, 3484, 3485, 3486, 3486, 3482, 3489, + 3436, 3423, 3419, 3422, 3426, 3420, 3423, 3427, 3428, 3431, + 3426, 3429, 3425, 3437, 3424, 3436, 3429, 3430, 3430, 3440, + 3428, 3427, 3432, 3432, 3433, 3433, 3435, 3435, 3442, 3431, + 3438, 3438, 3437, 3447, 3440, 3445, 3445, 3446, 3446, 3448, + 3451, 3447, 3449, 3450, 3452, 3453, 3442, 3454, 3449, 3450, + 3455, 3455, 3454, 3461, 3451, 3457, 3457, 3452, 3448, 3462, + 3467, 3464, 3465, 3468, 3453, 3469, 3465, 3472, 3468, 3470, + 3471, 3473, 3474, 3478, 3461, 3464, 3473, 3474, 3479, 3462, + 3467, 3480, 3470, 3471, 3469, 3483, 3472, 3475, 3475, 3481, + 3481, 3483, 3482, 3478, 3484, 3484, 3479, 3482, 3485, 3486, - 3485, 3488, 3490, 3481, 3491, 3488, 3492, 3493, 3494, 3490, - 3500, 3495, 3502, 3493, 3497, 3497, 3499, 3499, 3489, 3500, - 3503, 3501, 3500, 3491, 3495, 3492, 3501, 3494, 3504, 3505, - 3505, 3502, 3506, 3507, 3509, 3510, 3510, 3506, 3511, 3503, - 3516, 3504, 3512, 3512, 3513, 3513, 3507, 3514, 3515, 3517, - 3517, 3518, 3514, 3520, 3520, 3515, 3518, 3511, 3521, 3516, - 3509, 3519, 3522, 3519, 3523, 3521, 3524, 3525, 3528, 3522, - 3530, 3524, 3527, 3527, 3531, 3530, 3532, 3533, 3537, 3531, - 3534, 3534, 3538, 3523, 3536, 3536, 3525, 3528, 3539, 3539, - 3540, 3540, 3541, 3543, 3543, 3532, 3533, 3537, 3545, 3541, + 3480, 3487, 3488, 3485, 3486, 3489, 3487, 3491, 3491, 3492, + 3496, 3489, 3493, 3493, 3492, 3495, 3497, 3498, 3499, 3495, + 3500, 3488, 3501, 3497, 3509, 3502, 3500, 3504, 3504, 3496, + 3506, 3506, 3510, 3507, 3508, 3511, 3498, 3499, 3502, 3508, + 3514, 3501, 3507, 3509, 3513, 3507, 3512, 3512, 3511, 3513, + 3516, 3510, 3518, 3514, 3517, 3517, 3519, 3519, 3520, 3520, + 3521, 3522, 3523, 3524, 3524, 3521, 0, 3525, 3522, 3527, + 3527, 3518, 3525, 3526, 3530, 3526, 3516, 3528, 3529, 3532, + 3535, 3523, 3531, 3539, 3528, 3529, 3537, 3531, 3534, 3534, + 3538, 3537, 3540, 3530, 3544, 3538, 3541, 3541, 3532, 3535, - 3551, 3538, 3544, 3544, 3547, 3545, 3550, 3552, 0, 3547, - 0, 3550, 3553, 3553, 3554, 3554, 0, 0, 0, 3551, - 0, 0, 0, 0, 0, 0, 3552, 3558, 3558, 3558, - 3558, 3558, 3558, 3558, 3559, 3559, 3559, 3559, 3559, 3559, - 3559, 3560, 3560, 3560, 3560, 3560, 3560, 3560, 3561, 3561, - 3561, 3561, 3561, 3561, 3561, 3562, 3562, 3562, 3562, 3562, - 3562, 3562, 3563, 3563, 3563, 3563, 3563, 3563, 3563, 3564, - 3564, 3564, 3564, 3564, 3564, 3564, 3566, 3566, 0, 3566, - 3566, 3566, 3566, 3567, 3567, 0, 0, 0, 3567, 3567, - 3568, 3568, 0, 0, 3568, 0, 3568, 3569, 0, 0, + 3543, 3543, 3539, 3545, 3546, 3546, 3547, 3547, 3548, 3550, + 3550, 3540, 3552, 3544, 3558, 3548, 3551, 3551, 3554, 3552, + 3557, 3559, 3545, 3554, 0, 3557, 3560, 3560, 3561, 3561, + 0, 0, 0, 3558, 0, 0, 0, 0, 0, 0, + 3559, 3565, 3565, 3565, 3565, 3565, 3565, 3565, 3566, 3566, + 3566, 3566, 3566, 3566, 3566, 3567, 3567, 3567, 3567, 3567, + 3567, 3567, 3568, 3568, 3568, 3568, 3568, 3568, 3568, 3569, + 3569, 3569, 3569, 3569, 3569, 3569, 3570, 3570, 3570, 3570, + 3570, 3570, 3570, 3571, 3571, 3571, 3571, 3571, 3571, 3571, + 3573, 3573, 0, 3573, 3573, 3573, 3573, 3574, 3574, 0, - 0, 0, 0, 3569, 3570, 3570, 0, 0, 0, 3570, - 3570, 3571, 0, 0, 0, 0, 0, 3571, 3572, 3572, - 0, 3572, 3572, 3572, 3572, 3573, 0, 0, 0, 0, - 0, 3573, 3574, 3574, 0, 0, 0, 3574, 3574, 3575, - 3575, 0, 3575, 3575, 3575, 3575, 3557, 3557, 3557, 3557, - 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, - 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, - 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, 3557, - 3557, 3557, 3557, 3557, 3557, 3557, 3557 + 0, 0, 3574, 3574, 3575, 3575, 0, 0, 3575, 0, + 3575, 3576, 0, 0, 0, 0, 0, 3576, 3577, 3577, + 0, 0, 0, 3577, 3577, 3578, 0, 0, 0, 0, + 0, 3578, 3579, 3579, 0, 3579, 3579, 3579, 3579, 3580, + 0, 0, 0, 0, 0, 3580, 3581, 3581, 0, 0, + 0, 3581, 3581, 3582, 3582, 0, 3582, 3582, 3582, 3582, + 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, + 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, + 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, + 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, + + 3564 } ; static yy_state_type yy_last_accepting_state; @@ -3339,7 +3348,7 @@ static void config_end_include(void) } #endif -#line 3340 "" +#line 3349 "" #define YY_NO_INPUT 1 #line 191 "./util/configlexer.lex" #ifndef YY_NO_UNPUT @@ -3348,9 +3357,9 @@ static void config_end_include(void) #ifndef YY_NO_INPUT #define YY_NO_INPUT 1 #endif -#line 3349 "" +#line 3358 "" -#line 3351 "" +#line 3360 "" #define INITIAL 0 #define quotedstring 1 @@ -3574,7 +3583,7 @@ YY_DECL { #line 211 "./util/configlexer.lex" -#line 3575 "" +#line 3584 "" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -3607,13 +3616,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 3558 ) + if ( yy_current_state >= 3565 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 6947 ); + while ( yy_base[yy_current_state] != 6961 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -3943,217 +3952,217 @@ YY_RULE_SETUP case 61: YY_RULE_SETUP #line 275 "./util/configlexer.lex" -{ YDVAR(1, VAR_SO_RCVBUF) } +{ YDVAR(1, VAR_INTERFACE_AUTOMATIC_PORTS) } YY_BREAK case 62: YY_RULE_SETUP #line 276 "./util/configlexer.lex" -{ YDVAR(1, VAR_SO_SNDBUF) } +{ YDVAR(1, VAR_SO_RCVBUF) } YY_BREAK case 63: YY_RULE_SETUP #line 277 "./util/configlexer.lex" -{ YDVAR(1, VAR_SO_REUSEPORT) } +{ YDVAR(1, VAR_SO_SNDBUF) } YY_BREAK case 64: YY_RULE_SETUP #line 278 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_TRANSPARENT) } +{ YDVAR(1, VAR_SO_REUSEPORT) } YY_BREAK case 65: YY_RULE_SETUP #line 279 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_FREEBIND) } +{ YDVAR(1, VAR_IP_TRANSPARENT) } YY_BREAK case 66: YY_RULE_SETUP #line 280 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_DSCP) } +{ YDVAR(1, VAR_IP_FREEBIND) } YY_BREAK case 67: YY_RULE_SETUP #line 281 "./util/configlexer.lex" -{ YDVAR(1, VAR_CHROOT) } +{ YDVAR(1, VAR_IP_DSCP) } YY_BREAK case 68: YY_RULE_SETUP #line 282 "./util/configlexer.lex" -{ YDVAR(1, VAR_USERNAME) } +{ YDVAR(1, VAR_CHROOT) } YY_BREAK case 69: YY_RULE_SETUP #line 283 "./util/configlexer.lex" -{ YDVAR(1, VAR_DIRECTORY) } +{ YDVAR(1, VAR_USERNAME) } YY_BREAK case 70: YY_RULE_SETUP #line 284 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOGFILE) } +{ YDVAR(1, VAR_DIRECTORY) } YY_BREAK case 71: YY_RULE_SETUP #line 285 "./util/configlexer.lex" -{ YDVAR(1, VAR_PIDFILE) } +{ YDVAR(1, VAR_LOGFILE) } YY_BREAK case 72: YY_RULE_SETUP #line 286 "./util/configlexer.lex" -{ YDVAR(1, VAR_ROOT_HINTS) } +{ YDVAR(1, VAR_PIDFILE) } YY_BREAK case 73: YY_RULE_SETUP #line 287 "./util/configlexer.lex" -{ YDVAR(1, VAR_STREAM_WAIT_SIZE) } +{ YDVAR(1, VAR_ROOT_HINTS) } YY_BREAK case 74: YY_RULE_SETUP #line 288 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDNS_BUFFER_SIZE) } +{ YDVAR(1, VAR_STREAM_WAIT_SIZE) } YY_BREAK case 75: YY_RULE_SETUP #line 289 "./util/configlexer.lex" -{ YDVAR(1, VAR_MSG_BUFFER_SIZE) } +{ YDVAR(1, VAR_EDNS_BUFFER_SIZE) } YY_BREAK case 76: YY_RULE_SETUP #line 290 "./util/configlexer.lex" -{ YDVAR(1, VAR_MSG_CACHE_SIZE) } +{ YDVAR(1, VAR_MSG_BUFFER_SIZE) } YY_BREAK case 77: YY_RULE_SETUP #line 291 "./util/configlexer.lex" -{ YDVAR(1, VAR_MSG_CACHE_SLABS) } +{ YDVAR(1, VAR_MSG_CACHE_SIZE) } YY_BREAK case 78: YY_RULE_SETUP #line 292 "./util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_CACHE_SIZE) } +{ YDVAR(1, VAR_MSG_CACHE_SLABS) } YY_BREAK case 79: YY_RULE_SETUP #line 293 "./util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_CACHE_SLABS) } +{ YDVAR(1, VAR_RRSET_CACHE_SIZE) } YY_BREAK case 80: YY_RULE_SETUP #line 294 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHE_MAX_TTL) } +{ YDVAR(1, VAR_RRSET_CACHE_SLABS) } YY_BREAK case 81: YY_RULE_SETUP #line 295 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHE_MAX_NEGATIVE_TTL) } +{ YDVAR(1, VAR_CACHE_MAX_TTL) } YY_BREAK case 82: YY_RULE_SETUP #line 296 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHE_MIN_TTL) } +{ YDVAR(1, VAR_CACHE_MAX_NEGATIVE_TTL) } YY_BREAK case 83: YY_RULE_SETUP #line 297 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_HOST_TTL) } +{ YDVAR(1, VAR_CACHE_MIN_TTL) } YY_BREAK case 84: YY_RULE_SETUP #line 298 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_LAME_TTL) } +{ YDVAR(1, VAR_INFRA_HOST_TTL) } YY_BREAK case 85: YY_RULE_SETUP #line 299 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_SLABS) } +{ YDVAR(1, VAR_INFRA_LAME_TTL) } YY_BREAK case 86: YY_RULE_SETUP #line 300 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_NUMHOSTS) } +{ YDVAR(1, VAR_INFRA_CACHE_SLABS) } YY_BREAK case 87: YY_RULE_SETUP #line 301 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_LAME_SIZE) } +{ YDVAR(1, VAR_INFRA_CACHE_NUMHOSTS) } YY_BREAK case 88: YY_RULE_SETUP #line 302 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_MIN_RTT) } +{ YDVAR(1, VAR_INFRA_CACHE_LAME_SIZE) } YY_BREAK case 89: YY_RULE_SETUP #line 303 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_KEEP_PROBING) } +{ YDVAR(1, VAR_INFRA_CACHE_MIN_RTT) } YY_BREAK case 90: YY_RULE_SETUP #line 304 "./util/configlexer.lex" -{ YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) } +{ YDVAR(1, VAR_INFRA_KEEP_PROBING) } YY_BREAK case 91: YY_RULE_SETUP #line 305 "./util/configlexer.lex" -{ YDVAR(1, VAR_JOSTLE_TIMEOUT) } +{ YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) } YY_BREAK case 92: YY_RULE_SETUP #line 306 "./util/configlexer.lex" -{ YDVAR(1, VAR_DELAY_CLOSE) } +{ YDVAR(1, VAR_JOSTLE_TIMEOUT) } YY_BREAK case 93: YY_RULE_SETUP #line 307 "./util/configlexer.lex" -{ YDVAR(1, VAR_UDP_CONNECT) } +{ YDVAR(1, VAR_DELAY_CLOSE) } YY_BREAK case 94: YY_RULE_SETUP #line 308 "./util/configlexer.lex" -{ YDVAR(1, VAR_TARGET_FETCH_POLICY) } +{ YDVAR(1, VAR_UDP_CONNECT) } YY_BREAK case 95: YY_RULE_SETUP #line 309 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) } +{ YDVAR(1, VAR_TARGET_FETCH_POLICY) } YY_BREAK case 96: YY_RULE_SETUP #line 310 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_LARGE_QUERIES) } +{ YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) } YY_BREAK case 97: YY_RULE_SETUP #line 311 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_GLUE) } +{ YDVAR(1, VAR_HARDEN_LARGE_QUERIES) } YY_BREAK case 98: YY_RULE_SETUP #line 312 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) } +{ YDVAR(1, VAR_HARDEN_GLUE) } YY_BREAK case 99: YY_RULE_SETUP #line 313 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) } +{ YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) } YY_BREAK case 100: YY_RULE_SETUP #line 314 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) } +{ YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) } YY_BREAK case 101: YY_RULE_SETUP #line 315 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_ALGO_DOWNGRADE) } +{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) } YY_BREAK case 102: YY_RULE_SETUP #line 316 "./util/configlexer.lex" -{ YDVAR(1, VAR_USE_CAPS_FOR_ID) } +{ YDVAR(1, VAR_HARDEN_ALGO_DOWNGRADE) } YY_BREAK case 103: YY_RULE_SETUP #line 317 "./util/configlexer.lex" -{ YDVAR(1, VAR_CAPS_WHITELIST) } +{ YDVAR(1, VAR_USE_CAPS_FOR_ID) } YY_BREAK case 104: YY_RULE_SETUP @@ -4163,72 +4172,72 @@ YY_RULE_SETUP case 105: YY_RULE_SETUP #line 319 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) } +{ YDVAR(1, VAR_CAPS_WHITELIST) } YY_BREAK case 106: YY_RULE_SETUP #line 320 "./util/configlexer.lex" -{ YDVAR(1, VAR_PRIVATE_ADDRESS) } +{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) } YY_BREAK case 107: YY_RULE_SETUP #line 321 "./util/configlexer.lex" -{ YDVAR(1, VAR_PRIVATE_DOMAIN) } +{ YDVAR(1, VAR_PRIVATE_ADDRESS) } YY_BREAK case 108: YY_RULE_SETUP #line 322 "./util/configlexer.lex" -{ YDVAR(1, VAR_PREFETCH_KEY) } +{ YDVAR(1, VAR_PRIVATE_DOMAIN) } YY_BREAK case 109: YY_RULE_SETUP #line 323 "./util/configlexer.lex" -{ YDVAR(1, VAR_PREFETCH) } +{ YDVAR(1, VAR_PREFETCH_KEY) } YY_BREAK case 110: YY_RULE_SETUP #line 324 "./util/configlexer.lex" -{ YDVAR(1, VAR_DENY_ANY) } +{ YDVAR(1, VAR_PREFETCH) } YY_BREAK case 111: YY_RULE_SETUP #line 325 "./util/configlexer.lex" -{ YDVAR(0, VAR_STUB_ZONE) } +{ YDVAR(1, VAR_DENY_ANY) } YY_BREAK case 112: YY_RULE_SETUP #line 326 "./util/configlexer.lex" -{ YDVAR(1, VAR_NAME) } +{ YDVAR(0, VAR_STUB_ZONE) } YY_BREAK case 113: YY_RULE_SETUP #line 327 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_ADDR) } +{ YDVAR(1, VAR_NAME) } YY_BREAK case 114: YY_RULE_SETUP #line 328 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_HOST) } +{ YDVAR(1, VAR_STUB_ADDR) } YY_BREAK case 115: YY_RULE_SETUP #line 329 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_PRIME) } +{ YDVAR(1, VAR_STUB_HOST) } YY_BREAK case 116: YY_RULE_SETUP #line 330 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_FIRST) } +{ YDVAR(1, VAR_STUB_PRIME) } YY_BREAK case 117: YY_RULE_SETUP #line 331 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_NO_CACHE) } +{ YDVAR(1, VAR_STUB_FIRST) } YY_BREAK case 118: YY_RULE_SETUP #line 332 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_SSL_UPSTREAM) } +{ YDVAR(1, VAR_STUB_NO_CACHE) } YY_BREAK case 119: YY_RULE_SETUP @@ -4238,37 +4247,37 @@ YY_RULE_SETUP case 120: YY_RULE_SETUP #line 334 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_TCP_UPSTREAM) } +{ YDVAR(1, VAR_STUB_SSL_UPSTREAM) } YY_BREAK case 121: YY_RULE_SETUP #line 335 "./util/configlexer.lex" -{ YDVAR(0, VAR_FORWARD_ZONE) } +{ YDVAR(1, VAR_STUB_TCP_UPSTREAM) } YY_BREAK case 122: YY_RULE_SETUP #line 336 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_ADDR) } +{ YDVAR(0, VAR_FORWARD_ZONE) } YY_BREAK case 123: YY_RULE_SETUP #line 337 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_HOST) } +{ YDVAR(1, VAR_FORWARD_ADDR) } YY_BREAK case 124: YY_RULE_SETUP #line 338 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_FIRST) } +{ YDVAR(1, VAR_FORWARD_HOST) } YY_BREAK case 125: YY_RULE_SETUP #line 339 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_NO_CACHE) } +{ YDVAR(1, VAR_FORWARD_FIRST) } YY_BREAK case 126: YY_RULE_SETUP #line 340 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) } +{ YDVAR(1, VAR_FORWARD_NO_CACHE) } YY_BREAK case 127: YY_RULE_SETUP @@ -4278,57 +4287,57 @@ YY_RULE_SETUP case 128: YY_RULE_SETUP #line 342 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_TCP_UPSTREAM) } +{ YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) } YY_BREAK case 129: YY_RULE_SETUP #line 343 "./util/configlexer.lex" -{ YDVAR(0, VAR_AUTH_ZONE) } +{ YDVAR(1, VAR_FORWARD_TCP_UPSTREAM) } YY_BREAK case 130: YY_RULE_SETUP #line 344 "./util/configlexer.lex" -{ YDVAR(0, VAR_RPZ) } +{ YDVAR(0, VAR_AUTH_ZONE) } YY_BREAK case 131: YY_RULE_SETUP #line 345 "./util/configlexer.lex" -{ YDVAR(1, VAR_TAGS) } +{ YDVAR(0, VAR_RPZ) } YY_BREAK case 132: YY_RULE_SETUP #line 346 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_ACTION_OVERRIDE) } +{ YDVAR(1, VAR_TAGS) } YY_BREAK case 133: YY_RULE_SETUP #line 347 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_CNAME_OVERRIDE) } +{ YDVAR(1, VAR_RPZ_ACTION_OVERRIDE) } YY_BREAK case 134: YY_RULE_SETUP #line 348 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_LOG) } +{ YDVAR(1, VAR_RPZ_CNAME_OVERRIDE) } YY_BREAK case 135: YY_RULE_SETUP #line 349 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_LOG_NAME) } +{ YDVAR(1, VAR_RPZ_LOG) } YY_BREAK case 136: YY_RULE_SETUP #line 350 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_SIGNAL_NXDOMAIN_RA) } +{ YDVAR(1, VAR_RPZ_LOG_NAME) } YY_BREAK case 137: YY_RULE_SETUP #line 351 "./util/configlexer.lex" -{ YDVAR(1, VAR_ZONEFILE) } +{ YDVAR(1, VAR_RPZ_SIGNAL_NXDOMAIN_RA) } YY_BREAK case 138: YY_RULE_SETUP #line 352 "./util/configlexer.lex" -{ YDVAR(1, VAR_MASTER) } +{ YDVAR(1, VAR_ZONEFILE) } YY_BREAK case 139: YY_RULE_SETUP @@ -4338,751 +4347,751 @@ YY_RULE_SETUP case 140: YY_RULE_SETUP #line 354 "./util/configlexer.lex" -{ YDVAR(1, VAR_URL) } +{ YDVAR(1, VAR_MASTER) } YY_BREAK case 141: YY_RULE_SETUP #line 355 "./util/configlexer.lex" -{ YDVAR(1, VAR_ALLOW_NOTIFY) } +{ YDVAR(1, VAR_URL) } YY_BREAK case 142: YY_RULE_SETUP #line 356 "./util/configlexer.lex" -{ YDVAR(1, VAR_FOR_DOWNSTREAM) } +{ YDVAR(1, VAR_ALLOW_NOTIFY) } YY_BREAK case 143: YY_RULE_SETUP #line 357 "./util/configlexer.lex" -{ YDVAR(1, VAR_FOR_UPSTREAM) } +{ YDVAR(1, VAR_FOR_DOWNSTREAM) } YY_BREAK case 144: YY_RULE_SETUP #line 358 "./util/configlexer.lex" -{ YDVAR(1, VAR_FALLBACK_ENABLED) } +{ YDVAR(1, VAR_FOR_UPSTREAM) } YY_BREAK case 145: YY_RULE_SETUP #line 359 "./util/configlexer.lex" -{ YDVAR(0, VAR_VIEW) } +{ YDVAR(1, VAR_FALLBACK_ENABLED) } YY_BREAK case 146: YY_RULE_SETUP #line 360 "./util/configlexer.lex" -{ YDVAR(1, VAR_VIEW_FIRST) } +{ YDVAR(0, VAR_VIEW) } YY_BREAK case 147: YY_RULE_SETUP #line 361 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } +{ YDVAR(1, VAR_VIEW_FIRST) } YY_BREAK case 148: YY_RULE_SETUP #line 362 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } +{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } YY_BREAK case 149: YY_RULE_SETUP #line 363 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL) } +{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } YY_BREAK case 150: YY_RULE_SETUP #line 364 "./util/configlexer.lex" -{ YDVAR(1, VAR_SEND_CLIENT_SUBNET) } +{ YDVAR(2, VAR_ACCESS_CONTROL) } YY_BREAK case 151: YY_RULE_SETUP #line 365 "./util/configlexer.lex" -{ YDVAR(1, VAR_CLIENT_SUBNET_ZONE) } +{ YDVAR(1, VAR_SEND_CLIENT_SUBNET) } YY_BREAK case 152: YY_RULE_SETUP #line 366 "./util/configlexer.lex" -{ YDVAR(1, VAR_CLIENT_SUBNET_ALWAYS_FORWARD) } +{ YDVAR(1, VAR_CLIENT_SUBNET_ZONE) } YY_BREAK case 153: YY_RULE_SETUP #line 367 "./util/configlexer.lex" -{ YDVAR(1, VAR_CLIENT_SUBNET_OPCODE) } +{ YDVAR(1, VAR_CLIENT_SUBNET_ALWAYS_FORWARD) } YY_BREAK case 154: YY_RULE_SETUP #line 368 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV4) } +{ YDVAR(1, VAR_CLIENT_SUBNET_OPCODE) } YY_BREAK case 155: YY_RULE_SETUP #line 369 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV6) } +{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV4) } YY_BREAK case 156: YY_RULE_SETUP #line 370 "./util/configlexer.lex" -{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV4) } +{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV6) } YY_BREAK case 157: YY_RULE_SETUP #line 371 "./util/configlexer.lex" -{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV6) } +{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV4) } YY_BREAK case 158: YY_RULE_SETUP #line 372 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV4) } +{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV6) } YY_BREAK case 159: YY_RULE_SETUP #line 373 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV6) } +{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV4) } YY_BREAK case 160: YY_RULE_SETUP #line 374 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_IDENTITY) } +{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV6) } YY_BREAK case 161: YY_RULE_SETUP #line 375 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_VERSION) } +{ YDVAR(1, VAR_HIDE_IDENTITY) } YY_BREAK case 162: YY_RULE_SETUP #line 376 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_TRUSTANCHOR) } +{ YDVAR(1, VAR_HIDE_VERSION) } YY_BREAK case 163: YY_RULE_SETUP #line 377 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_HTTP_USER_AGENT) } +{ YDVAR(1, VAR_HIDE_TRUSTANCHOR) } YY_BREAK case 164: YY_RULE_SETUP #line 378 "./util/configlexer.lex" -{ YDVAR(1, VAR_IDENTITY) } +{ YDVAR(1, VAR_HIDE_HTTP_USER_AGENT) } YY_BREAK case 165: YY_RULE_SETUP #line 379 "./util/configlexer.lex" -{ YDVAR(1, VAR_VERSION) } +{ YDVAR(1, VAR_IDENTITY) } YY_BREAK case 166: YY_RULE_SETUP #line 380 "./util/configlexer.lex" -{ YDVAR(1, VAR_HTTP_USER_AGENT) } +{ YDVAR(1, VAR_VERSION) } YY_BREAK case 167: YY_RULE_SETUP #line 381 "./util/configlexer.lex" -{ YDVAR(1, VAR_MODULE_CONF) } +{ YDVAR(1, VAR_HTTP_USER_AGENT) } YY_BREAK case 168: YY_RULE_SETUP #line 382 "./util/configlexer.lex" -{ YDVAR(1, VAR_DLV_ANCHOR) } +{ YDVAR(1, VAR_MODULE_CONF) } YY_BREAK case 169: YY_RULE_SETUP #line 383 "./util/configlexer.lex" -{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } +{ YDVAR(1, VAR_DLV_ANCHOR) } YY_BREAK case 170: YY_RULE_SETUP #line 384 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } +{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } YY_BREAK case 171: YY_RULE_SETUP #line 385 "./util/configlexer.lex" -{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } +{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } YY_BREAK case 172: YY_RULE_SETUP #line 386 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } +{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } YY_BREAK case 173: YY_RULE_SETUP #line 387 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR) } +{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } YY_BREAK case 174: YY_RULE_SETUP #line 388 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR_SIGNALING) } +{ YDVAR(1, VAR_TRUST_ANCHOR) } YY_BREAK case 175: YY_RULE_SETUP #line 389 "./util/configlexer.lex" -{ YDVAR(1, VAR_ROOT_KEY_SENTINEL) } +{ YDVAR(1, VAR_TRUST_ANCHOR_SIGNALING) } YY_BREAK case 176: YY_RULE_SETUP #line 390 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } +{ YDVAR(1, VAR_ROOT_KEY_SENTINEL) } YY_BREAK case 177: YY_RULE_SETUP #line 391 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } +{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } YY_BREAK case 178: YY_RULE_SETUP #line 392 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } +{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } YY_BREAK case 179: YY_RULE_SETUP #line 393 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_MAX_RESTART) } +{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } YY_BREAK case 180: YY_RULE_SETUP #line 394 "./util/configlexer.lex" -{ YDVAR(1, VAR_BOGUS_TTL) } +{ YDVAR(1, VAR_VAL_MAX_RESTART) } YY_BREAK case 181: YY_RULE_SETUP #line 395 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } +{ YDVAR(1, VAR_BOGUS_TTL) } YY_BREAK case 182: YY_RULE_SETUP #line 396 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } +{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } YY_BREAK case 183: YY_RULE_SETUP #line 397 "./util/configlexer.lex" -{ YDVAR(1, VAR_AGGRESSIVE_NSEC) } +{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } YY_BREAK case 184: YY_RULE_SETUP #line 398 "./util/configlexer.lex" -{ YDVAR(1, VAR_IGNORE_CD_FLAG) } +{ YDVAR(1, VAR_AGGRESSIVE_NSEC) } YY_BREAK case 185: YY_RULE_SETUP #line 399 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED) } +{ YDVAR(1, VAR_IGNORE_CD_FLAG) } YY_BREAK case 186: YY_RULE_SETUP #line 400 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_TTL) } +{ YDVAR(1, VAR_SERVE_EXPIRED) } YY_BREAK case 187: YY_RULE_SETUP #line 401 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) } +{ YDVAR(1, VAR_SERVE_EXPIRED_TTL) } YY_BREAK case 188: YY_RULE_SETUP #line 402 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) } +{ YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) } YY_BREAK case 189: YY_RULE_SETUP #line 403 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) } +{ YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) } YY_BREAK case 190: YY_RULE_SETUP #line 404 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_ORIGINAL_TTL) } +{ YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) } YY_BREAK case 191: YY_RULE_SETUP #line 405 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAKE_DSA) } +{ YDVAR(1, VAR_SERVE_ORIGINAL_TTL) } YY_BREAK case 192: YY_RULE_SETUP #line 406 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAKE_SHA1) } +{ YDVAR(1, VAR_FAKE_DSA) } YY_BREAK case 193: YY_RULE_SETUP #line 407 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_LOG_LEVEL) } +{ YDVAR(1, VAR_FAKE_SHA1) } YY_BREAK case 194: YY_RULE_SETUP #line 408 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SIZE) } +{ YDVAR(1, VAR_VAL_LOG_LEVEL) } YY_BREAK case 195: YY_RULE_SETUP #line 409 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SLABS) } +{ YDVAR(1, VAR_KEY_CACHE_SIZE) } YY_BREAK case 196: YY_RULE_SETUP #line 410 "./util/configlexer.lex" -{ YDVAR(1, VAR_NEG_CACHE_SIZE) } +{ YDVAR(1, VAR_KEY_CACHE_SLABS) } YY_BREAK case 197: YY_RULE_SETUP #line 411 "./util/configlexer.lex" -{ - YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } +{ YDVAR(1, VAR_NEG_CACHE_SIZE) } YY_BREAK case 198: YY_RULE_SETUP -#line 413 "./util/configlexer.lex" -{ YDVAR(1, VAR_ZONEMD_PERMISSIVE_MODE) } +#line 412 "./util/configlexer.lex" +{ + YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } YY_BREAK case 199: YY_RULE_SETUP #line 414 "./util/configlexer.lex" -{ YDVAR(1, VAR_ZONEMD_CHECK) } +{ YDVAR(1, VAR_ZONEMD_PERMISSIVE_MODE) } YY_BREAK case 200: YY_RULE_SETUP #line 415 "./util/configlexer.lex" -{ YDVAR(1, VAR_ZONEMD_REJECT_ABSENCE) } +{ YDVAR(1, VAR_ZONEMD_CHECK) } YY_BREAK case 201: YY_RULE_SETUP #line 416 "./util/configlexer.lex" -{ YDVAR(1, VAR_ADD_HOLDDOWN) } +{ YDVAR(1, VAR_ZONEMD_REJECT_ABSENCE) } YY_BREAK case 202: YY_RULE_SETUP #line 417 "./util/configlexer.lex" -{ YDVAR(1, VAR_DEL_HOLDDOWN) } +{ YDVAR(1, VAR_ADD_HOLDDOWN) } YY_BREAK case 203: YY_RULE_SETUP #line 418 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEEP_MISSING) } +{ YDVAR(1, VAR_DEL_HOLDDOWN) } YY_BREAK case 204: YY_RULE_SETUP #line 419 "./util/configlexer.lex" -{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } +{ YDVAR(1, VAR_KEEP_MISSING) } YY_BREAK case 205: YY_RULE_SETUP #line 420 "./util/configlexer.lex" -{ YDVAR(1, VAR_USE_SYSLOG) } +{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } YY_BREAK case 206: YY_RULE_SETUP #line 421 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_IDENTITY) } +{ YDVAR(1, VAR_USE_SYSLOG) } YY_BREAK case 207: YY_RULE_SETUP #line 422 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TIME_ASCII) } +{ YDVAR(1, VAR_LOG_IDENTITY) } YY_BREAK case 208: YY_RULE_SETUP #line 423 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_QUERIES) } +{ YDVAR(1, VAR_LOG_TIME_ASCII) } YY_BREAK case 209: YY_RULE_SETUP #line 424 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_REPLIES) } +{ YDVAR(1, VAR_LOG_QUERIES) } YY_BREAK case 210: YY_RULE_SETUP #line 425 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) } +{ YDVAR(1, VAR_LOG_REPLIES) } YY_BREAK case 211: YY_RULE_SETUP #line 426 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) } +{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) } YY_BREAK case 212: YY_RULE_SETUP #line 427 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_SERVFAIL) } +{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) } YY_BREAK case 213: YY_RULE_SETUP #line 428 "./util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE) } +{ YDVAR(1, VAR_LOG_SERVFAIL) } YY_BREAK case 214: YY_RULE_SETUP #line 429 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA) } +{ YDVAR(2, VAR_LOCAL_ZONE) } YY_BREAK case 215: YY_RULE_SETUP #line 430 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA_PTR) } +{ YDVAR(1, VAR_LOCAL_DATA) } YY_BREAK case 216: YY_RULE_SETUP #line 431 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } +{ YDVAR(1, VAR_LOCAL_DATA_PTR) } YY_BREAK case 217: YY_RULE_SETUP #line 432 "./util/configlexer.lex" -{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } +{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } YY_BREAK case 218: YY_RULE_SETUP #line 433 "./util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_INTERVAL) } +{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } YY_BREAK case 219: YY_RULE_SETUP #line 434 "./util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } +{ YDVAR(1, VAR_STATISTICS_INTERVAL) } YY_BREAK case 220: YY_RULE_SETUP #line 435 "./util/configlexer.lex" -{ YDVAR(1, VAR_EXTENDED_STATISTICS) } +{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } YY_BREAK case 221: YY_RULE_SETUP #line 436 "./util/configlexer.lex" -{ YDVAR(1, VAR_SHM_ENABLE) } +{ YDVAR(1, VAR_EXTENDED_STATISTICS) } YY_BREAK case 222: YY_RULE_SETUP #line 437 "./util/configlexer.lex" -{ YDVAR(1, VAR_SHM_KEY) } +{ YDVAR(1, VAR_SHM_ENABLE) } YY_BREAK case 223: YY_RULE_SETUP #line 438 "./util/configlexer.lex" -{ YDVAR(0, VAR_REMOTE_CONTROL) } +{ YDVAR(1, VAR_SHM_KEY) } YY_BREAK case 224: YY_RULE_SETUP #line 439 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_ENABLE) } +{ YDVAR(0, VAR_REMOTE_CONTROL) } YY_BREAK case 225: YY_RULE_SETUP #line 440 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_INTERFACE) } +{ YDVAR(1, VAR_CONTROL_ENABLE) } YY_BREAK case 226: YY_RULE_SETUP #line 441 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_PORT) } +{ YDVAR(1, VAR_CONTROL_INTERFACE) } YY_BREAK case 227: YY_RULE_SETUP #line 442 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_USE_CERT) } +{ YDVAR(1, VAR_CONTROL_PORT) } YY_BREAK case 228: YY_RULE_SETUP #line 443 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_KEY_FILE) } +{ YDVAR(1, VAR_CONTROL_USE_CERT) } YY_BREAK case 229: YY_RULE_SETUP #line 444 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_CERT_FILE) } +{ YDVAR(1, VAR_SERVER_KEY_FILE) } YY_BREAK case 230: YY_RULE_SETUP #line 445 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_KEY_FILE) } +{ YDVAR(1, VAR_SERVER_CERT_FILE) } YY_BREAK case 231: YY_RULE_SETUP #line 446 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_CERT_FILE) } +{ YDVAR(1, VAR_CONTROL_KEY_FILE) } YY_BREAK case 232: YY_RULE_SETUP #line 447 "./util/configlexer.lex" -{ YDVAR(1, VAR_PYTHON_SCRIPT) } +{ YDVAR(1, VAR_CONTROL_CERT_FILE) } YY_BREAK case 233: YY_RULE_SETUP #line 448 "./util/configlexer.lex" -{ YDVAR(0, VAR_PYTHON) } +{ YDVAR(1, VAR_PYTHON_SCRIPT) } YY_BREAK case 234: YY_RULE_SETUP #line 449 "./util/configlexer.lex" -{ YDVAR(1, VAR_DYNLIB_FILE) } +{ YDVAR(0, VAR_PYTHON) } YY_BREAK case 235: YY_RULE_SETUP #line 450 "./util/configlexer.lex" -{ YDVAR(0, VAR_DYNLIB) } +{ YDVAR(1, VAR_DYNLIB_FILE) } YY_BREAK case 236: YY_RULE_SETUP #line 451 "./util/configlexer.lex" -{ YDVAR(1, VAR_DOMAIN_INSECURE) } +{ YDVAR(0, VAR_DYNLIB) } YY_BREAK case 237: YY_RULE_SETUP #line 452 "./util/configlexer.lex" -{ YDVAR(1, VAR_MINIMAL_RESPONSES) } +{ YDVAR(1, VAR_DOMAIN_INSECURE) } YY_BREAK case 238: YY_RULE_SETUP #line 453 "./util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } +{ YDVAR(1, VAR_MINIMAL_RESPONSES) } YY_BREAK case 239: YY_RULE_SETUP #line 454 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } +{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } YY_BREAK case 240: YY_RULE_SETUP #line 455 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_UDP_SIZE) } +{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } YY_BREAK case 241: YY_RULE_SETUP #line 456 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_PREFIX) } +{ YDVAR(1, VAR_MAX_UDP_SIZE) } YY_BREAK case 242: YY_RULE_SETUP #line 457 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_SYNTHALL) } +{ YDVAR(1, VAR_DNS64_PREFIX) } YY_BREAK case 243: YY_RULE_SETUP #line 458 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } +{ YDVAR(1, VAR_DNS64_SYNTHALL) } YY_BREAK case 244: YY_RULE_SETUP #line 459 "./util/configlexer.lex" -{ YDVAR(1, VAR_DEFINE_TAG) } +{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } YY_BREAK case 245: YY_RULE_SETUP #line 460 "./util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } +{ YDVAR(1, VAR_DEFINE_TAG) } YY_BREAK case 246: YY_RULE_SETUP #line 461 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } +{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } YY_BREAK case 247: YY_RULE_SETUP #line 462 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } +{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } YY_BREAK case 248: YY_RULE_SETUP #line 463 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } YY_BREAK case 249: YY_RULE_SETUP #line 464 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } YY_BREAK case 250: YY_RULE_SETUP #line 465 "./util/configlexer.lex" -{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } +{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } YY_BREAK case 251: YY_RULE_SETUP #line 466 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSTAP) } +{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } YY_BREAK case 252: YY_RULE_SETUP #line 467 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_ENABLE) } +{ YDVAR(0, VAR_DNSTAP) } YY_BREAK case 253: YY_RULE_SETUP #line 468 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_BIDIRECTIONAL) } +{ YDVAR(1, VAR_DNSTAP_ENABLE) } YY_BREAK case 254: YY_RULE_SETUP #line 469 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } +{ YDVAR(1, VAR_DNSTAP_BIDIRECTIONAL) } YY_BREAK case 255: YY_RULE_SETUP #line 470 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IP) } +{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } YY_BREAK case 256: YY_RULE_SETUP #line 471 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS) } +{ YDVAR(1, VAR_DNSTAP_IP) } YY_BREAK case 257: YY_RULE_SETUP #line 472 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } +{ YDVAR(1, VAR_DNSTAP_TLS) } YY_BREAK case 258: YY_RULE_SETUP #line 473 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } +{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } YY_BREAK case 259: YY_RULE_SETUP #line 474 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } +{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } YY_BREAK case 260: YY_RULE_SETUP -#line 476 "./util/configlexer.lex" +#line 475 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } YY_BREAK case 261: YY_RULE_SETUP -#line 478 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } +#line 477 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } YY_BREAK case 262: YY_RULE_SETUP #line 479 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } +{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } YY_BREAK case 263: YY_RULE_SETUP #line 480 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IDENTITY) } +{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } YY_BREAK case 264: YY_RULE_SETUP #line 481 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_VERSION) } +{ YDVAR(1, VAR_DNSTAP_IDENTITY) } YY_BREAK case 265: YY_RULE_SETUP #line 482 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } +{ YDVAR(1, VAR_DNSTAP_VERSION) } YY_BREAK case 266: YY_RULE_SETUP -#line 484 "./util/configlexer.lex" +#line 483 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } YY_BREAK case 267: YY_RULE_SETUP -#line 486 "./util/configlexer.lex" +#line 485 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } YY_BREAK case 268: YY_RULE_SETUP -#line 488 "./util/configlexer.lex" +#line 487 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } YY_BREAK case 269: YY_RULE_SETUP -#line 490 "./util/configlexer.lex" +#line 489 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } YY_BREAK case 270: YY_RULE_SETUP -#line 492 "./util/configlexer.lex" +#line 491 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } YY_BREAK case 271: YY_RULE_SETUP -#line 494 "./util/configlexer.lex" -{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } +#line 493 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } YY_BREAK case 272: YY_RULE_SETUP #line 495 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT) } +{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } YY_BREAK case 273: YY_RULE_SETUP #line 496 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT) } +{ YDVAR(1, VAR_IP_RATELIMIT) } YY_BREAK case 274: YY_RULE_SETUP #line 497 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_RATELIMIT) } YY_BREAK case 275: YY_RULE_SETUP #line 498 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } YY_BREAK case 276: YY_RULE_SETUP #line 499 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_RATELIMIT_SLABS) } YY_BREAK case 277: YY_RULE_SETUP #line 500 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } YY_BREAK case 278: YY_RULE_SETUP #line 501 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } +{ YDVAR(1, VAR_RATELIMIT_SIZE) } YY_BREAK case 279: YY_RULE_SETUP #line 502 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } +{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } YY_BREAK case 280: YY_RULE_SETUP #line 503 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } +{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } YY_BREAK case 281: YY_RULE_SETUP #line 504 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_FACTOR) } +{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } YY_BREAK case 282: YY_RULE_SETUP #line 505 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_BACKOFF) } +{ YDVAR(1, VAR_RATELIMIT_FACTOR) } YY_BREAK case 283: YY_RULE_SETUP #line 506 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_BACKOFF) } +{ YDVAR(1, VAR_IP_RATELIMIT_BACKOFF) } YY_BREAK case 284: YY_RULE_SETUP #line 507 "./util/configlexer.lex" -{ YDVAR(1, VAR_OUTBOUND_MSG_RETRY) } +{ YDVAR(1, VAR_RATELIMIT_BACKOFF) } YY_BREAK case 285: YY_RULE_SETUP #line 508 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOW_RTT) } +{ YDVAR(1, VAR_OUTBOUND_MSG_RETRY) } YY_BREAK case 286: YY_RULE_SETUP #line 509 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_NUM) } +{ YDVAR(1, VAR_LOW_RTT) } YY_BREAK case 287: YY_RULE_SETUP #line 510 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } +{ YDVAR(1, VAR_FAST_SERVER_NUM) } YY_BREAK case 288: YY_RULE_SETUP @@ -5097,119 +5106,119 @@ YY_RULE_SETUP case 290: YY_RULE_SETUP #line 513 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_TAG) } +{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 291: YY_RULE_SETUP #line 514 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP) } +{ YDVAR(2, VAR_RESPONSE_IP_TAG) } YY_BREAK case 292: YY_RULE_SETUP #line 515 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_DATA) } +{ YDVAR(2, VAR_RESPONSE_IP) } YY_BREAK case 293: YY_RULE_SETUP #line 516 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSCRYPT) } +{ YDVAR(2, VAR_RESPONSE_IP_DATA) } YY_BREAK case 294: YY_RULE_SETUP #line 517 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } +{ YDVAR(0, VAR_DNSCRYPT) } YY_BREAK case 295: YY_RULE_SETUP #line 518 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PORT) } +{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } YY_BREAK case 296: YY_RULE_SETUP #line 519 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } +{ YDVAR(1, VAR_DNSCRYPT_PORT) } YY_BREAK case 297: YY_RULE_SETUP #line 520 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } YY_BREAK case 298: YY_RULE_SETUP #line 521 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } +{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } YY_BREAK case 299: YY_RULE_SETUP #line 522 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } YY_BREAK case 300: YY_RULE_SETUP #line 523 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } YY_BREAK case 301: YY_RULE_SETUP -#line 525 "./util/configlexer.lex" +#line 524 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } YY_BREAK case 302: YY_RULE_SETUP -#line 527 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } +#line 526 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } YY_BREAK case 303: YY_RULE_SETUP #line 528 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } YY_BREAK case 304: YY_RULE_SETUP #line 529 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_RESPONSES) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } YY_BREAK case 305: YY_RULE_SETUP #line 530 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) } +{ YDVAR(1, VAR_PAD_RESPONSES) } YY_BREAK case 306: YY_RULE_SETUP #line 531 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_QUERIES) } +{ YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) } YY_BREAK case 307: YY_RULE_SETUP #line 532 "./util/configlexer.lex" -{ YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) } +{ YDVAR(1, VAR_PAD_QUERIES) } YY_BREAK case 308: YY_RULE_SETUP #line 533 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_ENABLED) } +{ YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) } YY_BREAK case 309: YY_RULE_SETUP #line 534 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } +{ YDVAR(1, VAR_IPSECMOD_ENABLED) } YY_BREAK case 310: YY_RULE_SETUP #line 535 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_HOOK) } +{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } YY_BREAK case 311: YY_RULE_SETUP #line 536 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } +{ YDVAR(1, VAR_IPSECMOD_HOOK) } YY_BREAK case 312: YY_RULE_SETUP #line 537 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } +{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } YY_BREAK case 313: YY_RULE_SETUP @@ -5219,118 +5228,123 @@ YY_RULE_SETUP case 314: YY_RULE_SETUP #line 539 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_STRICT) } +{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } YY_BREAK case 315: YY_RULE_SETUP #line 540 "./util/configlexer.lex" -{ YDVAR(0, VAR_CACHEDB) } +{ YDVAR(1, VAR_IPSECMOD_STRICT) } YY_BREAK case 316: YY_RULE_SETUP #line 541 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_BACKEND) } +{ YDVAR(0, VAR_CACHEDB) } YY_BREAK case 317: YY_RULE_SETUP #line 542 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } +{ YDVAR(1, VAR_CACHEDB_BACKEND) } YY_BREAK case 318: YY_RULE_SETUP #line 543 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISHOST) } +{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } YY_BREAK case 319: YY_RULE_SETUP #line 544 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISPORT) } +{ YDVAR(1, VAR_CACHEDB_REDISHOST) } YY_BREAK case 320: YY_RULE_SETUP #line 545 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } +{ YDVAR(1, VAR_CACHEDB_REDISPORT) } YY_BREAK case 321: YY_RULE_SETUP #line 546 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } +{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } YY_BREAK case 322: YY_RULE_SETUP #line 547 "./util/configlexer.lex" -{ YDVAR(0, VAR_IPSET) } +{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } YY_BREAK case 323: YY_RULE_SETUP #line 548 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V4) } +{ YDVAR(0, VAR_IPSET) } YY_BREAK case 324: YY_RULE_SETUP #line 549 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V6) } +{ YDVAR(1, VAR_IPSET_NAME_V4) } YY_BREAK case 325: YY_RULE_SETUP #line 550 "./util/configlexer.lex" -{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } +{ YDVAR(1, VAR_IPSET_NAME_V6) } YY_BREAK case 326: YY_RULE_SETUP #line 551 "./util/configlexer.lex" -{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } +{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } YY_BREAK case 327: YY_RULE_SETUP #line 552 "./util/configlexer.lex" -{ YDVAR(2, VAR_EDNS_CLIENT_STRING) } +{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } YY_BREAK case 328: YY_RULE_SETUP #line 553 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) } +{ YDVAR(2, VAR_EDNS_CLIENT_STRING) } YY_BREAK case 329: YY_RULE_SETUP #line 554 "./util/configlexer.lex" -{ YDVAR(1, VAR_NSID ) } +{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) } YY_BREAK case 330: -/* rule 330 can match eol */ YY_RULE_SETUP #line 555 "./util/configlexer.lex" +{ YDVAR(1, VAR_NSID ) } + YY_BREAK +case 331: +/* rule 331 can match eol */ +YY_RULE_SETUP +#line 556 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK /* Quoted strings. Strip leading and ending quotes */ -case 331: +case 332: YY_RULE_SETUP -#line 558 "./util/configlexer.lex" +#line 559 "./util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 559 "./util/configlexer.lex" +#line 560 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 332: -YY_RULE_SETUP -#line 564 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 333: -/* rule 333 can match eol */ YY_RULE_SETUP #line 565 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 334: +/* rule 334 can match eol */ +YY_RULE_SETUP +#line 566 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 334: +case 335: YY_RULE_SETUP -#line 567 "./util/configlexer.lex" +#line 568 "./util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -5343,34 +5357,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 335: +case 336: YY_RULE_SETUP -#line 579 "./util/configlexer.lex" +#line 580 "./util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 580 "./util/configlexer.lex" +#line 581 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 336: -YY_RULE_SETUP -#line 585 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 337: -/* rule 337 can match eol */ YY_RULE_SETUP #line 586 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 338: +/* rule 338 can match eol */ +YY_RULE_SETUP +#line 587 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 338: +case 339: YY_RULE_SETUP -#line 588 "./util/configlexer.lex" +#line 589 "./util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -5383,38 +5397,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 339: +case 340: YY_RULE_SETUP -#line 600 "./util/configlexer.lex" +#line 601 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 602 "./util/configlexer.lex" +#line 603 "./util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); } YY_BREAK -case 340: -YY_RULE_SETUP -#line 606 "./util/configlexer.lex" -{ LEXOUT(("ISP ")); /* ignore */ } - YY_BREAK case 341: -/* rule 341 can match eol */ YY_RULE_SETUP #line 607 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++;} +{ LEXOUT(("ISP ")); /* ignore */ } YY_BREAK case 342: +/* rule 342 can match eol */ YY_RULE_SETUP #line 608 "./util/configlexer.lex" -{ LEXOUT(("IQS ")); BEGIN(include_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK case 343: YY_RULE_SETUP #line 609 "./util/configlexer.lex" +{ LEXOUT(("IQS ")); BEGIN(include_quoted); } + YY_BREAK +case 344: +YY_RULE_SETUP +#line 610 "./util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 0); @@ -5422,27 +5436,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 614 "./util/configlexer.lex" +#line 615 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 344: -YY_RULE_SETUP -#line 618 "./util/configlexer.lex" -{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } - YY_BREAK case 345: -/* rule 345 can match eol */ YY_RULE_SETUP #line 619 "./util/configlexer.lex" +{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } + YY_BREAK +case 346: +/* rule 346 can match eol */ +YY_RULE_SETUP +#line 620 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 346: +case 347: YY_RULE_SETUP -#line 621 "./util/configlexer.lex" +#line 622 "./util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -5452,7 +5466,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 627 "./util/configlexer.lex" +#line 628 "./util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ @@ -5467,39 +5481,39 @@ case YY_STATE_EOF(val): } YY_BREAK /* include-toplevel: directive */ -case 347: +case 348: YY_RULE_SETUP -#line 641 "./util/configlexer.lex" +#line 642 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include_toplevel); } YY_BREAK case YY_STATE_EOF(include_toplevel): -#line 644 "./util/configlexer.lex" +#line 645 "./util/configlexer.lex" { yyerror("EOF inside include_toplevel directive"); BEGIN(inc_prev); } YY_BREAK -case 348: -YY_RULE_SETUP -#line 648 "./util/configlexer.lex" -{ LEXOUT(("ITSP ")); /* ignore */ } - YY_BREAK case 349: -/* rule 349 can match eol */ YY_RULE_SETUP #line 649 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++; } +{ LEXOUT(("ITSP ")); /* ignore */ } YY_BREAK case 350: +/* rule 350 can match eol */ YY_RULE_SETUP #line 650 "./util/configlexer.lex" -{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK case 351: YY_RULE_SETUP #line 651 "./util/configlexer.lex" +{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } + YY_BREAK +case 352: +YY_RULE_SETUP +#line 652 "./util/configlexer.lex" { LEXOUT(("ITunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 1); @@ -5508,29 +5522,29 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_toplevel_quoted): -#line 657 "./util/configlexer.lex" +#line 658 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 352: -YY_RULE_SETUP -#line 661 "./util/configlexer.lex" -{ LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } - YY_BREAK case 353: -/* rule 353 can match eol */ YY_RULE_SETUP #line 662 "./util/configlexer.lex" +{ LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } + YY_BREAK +case 354: +/* rule 354 can match eol */ +YY_RULE_SETUP +#line 663 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 354: +case 355: YY_RULE_SETUP -#line 666 "./util/configlexer.lex" +#line 667 "./util/configlexer.lex" { LEXOUT(("ITQE ")); yytext[yyleng - 1] = '\0'; @@ -5539,33 +5553,33 @@ YY_RULE_SETUP return (VAR_FORCE_TOPLEVEL); } YY_BREAK -case 355: +case 356: YY_RULE_SETUP -#line 674 "./util/configlexer.lex" +#line 675 "./util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 356: +case 357: YY_RULE_SETUP -#line 678 "./util/configlexer.lex" +#line 679 "./util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 357: +case 358: YY_RULE_SETUP -#line 682 "./util/configlexer.lex" +#line 683 "./util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 358: +case 359: YY_RULE_SETUP -#line 686 "./util/configlexer.lex" +#line 687 "./util/configlexer.lex" ECHO; YY_BREAK -#line 5566 "" +#line 5580 "" case YY_END_OF_BUFFER: { @@ -5860,7 +5874,7 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 3558 ) + if ( yy_current_state >= 3565 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -5888,11 +5902,11 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 3558 ) + if ( yy_current_state >= 3565 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 3557); + yy_is_jam = (yy_current_state == 3564); return yy_is_jam ? 0 : yy_current_state; } @@ -6531,6 +6545,6 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 686 "./util/configlexer.lex" +#line 687 "./util/configlexer.lex" diff --git a/util/configlexer.lex b/util/configlexer.lex index 34a0e5dd9..93390ca9d 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -272,6 +272,7 @@ interface{COLON} { YDVAR(1, VAR_INTERFACE) } ip-address{COLON} { YDVAR(1, VAR_INTERFACE) } outgoing-interface{COLON} { YDVAR(1, VAR_OUTGOING_INTERFACE) } interface-automatic{COLON} { YDVAR(1, VAR_INTERFACE_AUTOMATIC) } +interface-automatic-ports{COLON} { YDVAR(1, VAR_INTERFACE_AUTOMATIC_PORTS) } so-rcvbuf{COLON} { YDVAR(1, VAR_SO_RCVBUF) } so-sndbuf{COLON} { YDVAR(1, VAR_SO_SNDBUF) } so-reuseport{COLON} { YDVAR(1, VAR_SO_REUSEPORT) } diff --git a/util/configparser.c b/util/configparser.c index 4f534cdf5..3a5ee57fc 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.7.6. */ +/* A Bison parser, made by GNU Bison 3.6.4. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -16,7 +16,7 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program. If not, see . */ + 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 @@ -45,11 +45,11 @@ define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ -/* Identify Bison output, and Bison version. */ -#define YYBISON 30706 +/* Identify Bison output. */ +#define YYBISON 1 -/* Bison version string. */ -#define YYBISON_VERSION "3.7.6" +/* Bison version. */ +#define YYBISON_VERSION "3.6.4" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -119,7 +119,701 @@ extern struct config_parser_state* cfg_parser; # endif # endif -#include "configparser.h" +/* Use api.header.include to #include this header + instead of duplicating it here. */ +#ifndef YY_YY_UTIL_CONFIGPARSER_H_INCLUDED +# define YY_YY_UTIL_CONFIGPARSER_H_INCLUDED +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int yydebug; +#endif + +/* Token kinds. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + enum yytokentype + { + YYEMPTY = -2, + YYEOF = 0, /* "end of file" */ + YYerror = 256, /* error */ + YYUNDEF = 257, /* "invalid token" */ + SPACE = 258, /* SPACE */ + LETTER = 259, /* LETTER */ + NEWLINE = 260, /* NEWLINE */ + COMMENT = 261, /* COMMENT */ + COLON = 262, /* COLON */ + ANY = 263, /* ANY */ + ZONESTR = 264, /* ZONESTR */ + STRING_ARG = 265, /* STRING_ARG */ + VAR_FORCE_TOPLEVEL = 266, /* VAR_FORCE_TOPLEVEL */ + VAR_SERVER = 267, /* VAR_SERVER */ + VAR_VERBOSITY = 268, /* VAR_VERBOSITY */ + VAR_NUM_THREADS = 269, /* VAR_NUM_THREADS */ + VAR_PORT = 270, /* VAR_PORT */ + VAR_OUTGOING_RANGE = 271, /* VAR_OUTGOING_RANGE */ + VAR_INTERFACE = 272, /* VAR_INTERFACE */ + VAR_PREFER_IP4 = 273, /* VAR_PREFER_IP4 */ + VAR_DO_IP4 = 274, /* VAR_DO_IP4 */ + VAR_DO_IP6 = 275, /* VAR_DO_IP6 */ + VAR_PREFER_IP6 = 276, /* VAR_PREFER_IP6 */ + VAR_DO_UDP = 277, /* VAR_DO_UDP */ + VAR_DO_TCP = 278, /* VAR_DO_TCP */ + VAR_TCP_MSS = 279, /* VAR_TCP_MSS */ + VAR_OUTGOING_TCP_MSS = 280, /* VAR_OUTGOING_TCP_MSS */ + VAR_TCP_IDLE_TIMEOUT = 281, /* VAR_TCP_IDLE_TIMEOUT */ + VAR_EDNS_TCP_KEEPALIVE = 282, /* VAR_EDNS_TCP_KEEPALIVE */ + VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 283, /* VAR_EDNS_TCP_KEEPALIVE_TIMEOUT */ + VAR_CHROOT = 284, /* VAR_CHROOT */ + VAR_USERNAME = 285, /* VAR_USERNAME */ + VAR_DIRECTORY = 286, /* VAR_DIRECTORY */ + VAR_LOGFILE = 287, /* VAR_LOGFILE */ + VAR_PIDFILE = 288, /* VAR_PIDFILE */ + VAR_MSG_CACHE_SIZE = 289, /* VAR_MSG_CACHE_SIZE */ + VAR_MSG_CACHE_SLABS = 290, /* VAR_MSG_CACHE_SLABS */ + VAR_NUM_QUERIES_PER_THREAD = 291, /* VAR_NUM_QUERIES_PER_THREAD */ + VAR_RRSET_CACHE_SIZE = 292, /* VAR_RRSET_CACHE_SIZE */ + VAR_RRSET_CACHE_SLABS = 293, /* VAR_RRSET_CACHE_SLABS */ + VAR_OUTGOING_NUM_TCP = 294, /* VAR_OUTGOING_NUM_TCP */ + VAR_INFRA_HOST_TTL = 295, /* VAR_INFRA_HOST_TTL */ + VAR_INFRA_LAME_TTL = 296, /* VAR_INFRA_LAME_TTL */ + VAR_INFRA_CACHE_SLABS = 297, /* VAR_INFRA_CACHE_SLABS */ + VAR_INFRA_CACHE_NUMHOSTS = 298, /* VAR_INFRA_CACHE_NUMHOSTS */ + VAR_INFRA_CACHE_LAME_SIZE = 299, /* VAR_INFRA_CACHE_LAME_SIZE */ + VAR_NAME = 300, /* VAR_NAME */ + VAR_STUB_ZONE = 301, /* VAR_STUB_ZONE */ + VAR_STUB_HOST = 302, /* VAR_STUB_HOST */ + VAR_STUB_ADDR = 303, /* VAR_STUB_ADDR */ + VAR_TARGET_FETCH_POLICY = 304, /* VAR_TARGET_FETCH_POLICY */ + VAR_HARDEN_SHORT_BUFSIZE = 305, /* VAR_HARDEN_SHORT_BUFSIZE */ + VAR_HARDEN_LARGE_QUERIES = 306, /* VAR_HARDEN_LARGE_QUERIES */ + VAR_FORWARD_ZONE = 307, /* VAR_FORWARD_ZONE */ + VAR_FORWARD_HOST = 308, /* VAR_FORWARD_HOST */ + VAR_FORWARD_ADDR = 309, /* VAR_FORWARD_ADDR */ + VAR_DO_NOT_QUERY_ADDRESS = 310, /* VAR_DO_NOT_QUERY_ADDRESS */ + VAR_HIDE_IDENTITY = 311, /* VAR_HIDE_IDENTITY */ + VAR_HIDE_VERSION = 312, /* VAR_HIDE_VERSION */ + VAR_IDENTITY = 313, /* VAR_IDENTITY */ + VAR_VERSION = 314, /* VAR_VERSION */ + VAR_HARDEN_GLUE = 315, /* VAR_HARDEN_GLUE */ + VAR_MODULE_CONF = 316, /* VAR_MODULE_CONF */ + VAR_TRUST_ANCHOR_FILE = 317, /* VAR_TRUST_ANCHOR_FILE */ + VAR_TRUST_ANCHOR = 318, /* VAR_TRUST_ANCHOR */ + VAR_VAL_OVERRIDE_DATE = 319, /* VAR_VAL_OVERRIDE_DATE */ + VAR_BOGUS_TTL = 320, /* VAR_BOGUS_TTL */ + VAR_VAL_CLEAN_ADDITIONAL = 321, /* VAR_VAL_CLEAN_ADDITIONAL */ + VAR_VAL_PERMISSIVE_MODE = 322, /* VAR_VAL_PERMISSIVE_MODE */ + VAR_INCOMING_NUM_TCP = 323, /* VAR_INCOMING_NUM_TCP */ + VAR_MSG_BUFFER_SIZE = 324, /* VAR_MSG_BUFFER_SIZE */ + VAR_KEY_CACHE_SIZE = 325, /* VAR_KEY_CACHE_SIZE */ + VAR_KEY_CACHE_SLABS = 326, /* VAR_KEY_CACHE_SLABS */ + VAR_TRUSTED_KEYS_FILE = 327, /* VAR_TRUSTED_KEYS_FILE */ + VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 328, /* VAR_VAL_NSEC3_KEYSIZE_ITERATIONS */ + VAR_USE_SYSLOG = 329, /* VAR_USE_SYSLOG */ + VAR_OUTGOING_INTERFACE = 330, /* VAR_OUTGOING_INTERFACE */ + VAR_ROOT_HINTS = 331, /* VAR_ROOT_HINTS */ + VAR_DO_NOT_QUERY_LOCALHOST = 332, /* VAR_DO_NOT_QUERY_LOCALHOST */ + VAR_CACHE_MAX_TTL = 333, /* VAR_CACHE_MAX_TTL */ + VAR_HARDEN_DNSSEC_STRIPPED = 334, /* VAR_HARDEN_DNSSEC_STRIPPED */ + VAR_ACCESS_CONTROL = 335, /* VAR_ACCESS_CONTROL */ + VAR_LOCAL_ZONE = 336, /* VAR_LOCAL_ZONE */ + VAR_LOCAL_DATA = 337, /* VAR_LOCAL_DATA */ + VAR_INTERFACE_AUTOMATIC = 338, /* VAR_INTERFACE_AUTOMATIC */ + VAR_STATISTICS_INTERVAL = 339, /* VAR_STATISTICS_INTERVAL */ + VAR_DO_DAEMONIZE = 340, /* VAR_DO_DAEMONIZE */ + VAR_USE_CAPS_FOR_ID = 341, /* VAR_USE_CAPS_FOR_ID */ + VAR_STATISTICS_CUMULATIVE = 342, /* VAR_STATISTICS_CUMULATIVE */ + VAR_OUTGOING_PORT_PERMIT = 343, /* VAR_OUTGOING_PORT_PERMIT */ + VAR_OUTGOING_PORT_AVOID = 344, /* VAR_OUTGOING_PORT_AVOID */ + VAR_DLV_ANCHOR_FILE = 345, /* VAR_DLV_ANCHOR_FILE */ + VAR_DLV_ANCHOR = 346, /* VAR_DLV_ANCHOR */ + VAR_NEG_CACHE_SIZE = 347, /* VAR_NEG_CACHE_SIZE */ + VAR_HARDEN_REFERRAL_PATH = 348, /* VAR_HARDEN_REFERRAL_PATH */ + VAR_PRIVATE_ADDRESS = 349, /* VAR_PRIVATE_ADDRESS */ + VAR_PRIVATE_DOMAIN = 350, /* VAR_PRIVATE_DOMAIN */ + VAR_REMOTE_CONTROL = 351, /* VAR_REMOTE_CONTROL */ + VAR_CONTROL_ENABLE = 352, /* VAR_CONTROL_ENABLE */ + VAR_CONTROL_INTERFACE = 353, /* VAR_CONTROL_INTERFACE */ + VAR_CONTROL_PORT = 354, /* VAR_CONTROL_PORT */ + VAR_SERVER_KEY_FILE = 355, /* VAR_SERVER_KEY_FILE */ + VAR_SERVER_CERT_FILE = 356, /* VAR_SERVER_CERT_FILE */ + VAR_CONTROL_KEY_FILE = 357, /* VAR_CONTROL_KEY_FILE */ + VAR_CONTROL_CERT_FILE = 358, /* VAR_CONTROL_CERT_FILE */ + VAR_CONTROL_USE_CERT = 359, /* VAR_CONTROL_USE_CERT */ + VAR_TCP_REUSE_TIMEOUT = 360, /* VAR_TCP_REUSE_TIMEOUT */ + VAR_MAX_REUSE_TCP_QUERIES = 361, /* VAR_MAX_REUSE_TCP_QUERIES */ + VAR_EXTENDED_STATISTICS = 362, /* VAR_EXTENDED_STATISTICS */ + VAR_LOCAL_DATA_PTR = 363, /* VAR_LOCAL_DATA_PTR */ + VAR_JOSTLE_TIMEOUT = 364, /* VAR_JOSTLE_TIMEOUT */ + VAR_STUB_PRIME = 365, /* VAR_STUB_PRIME */ + VAR_UNWANTED_REPLY_THRESHOLD = 366, /* VAR_UNWANTED_REPLY_THRESHOLD */ + VAR_LOG_TIME_ASCII = 367, /* VAR_LOG_TIME_ASCII */ + VAR_DOMAIN_INSECURE = 368, /* VAR_DOMAIN_INSECURE */ + VAR_PYTHON = 369, /* VAR_PYTHON */ + VAR_PYTHON_SCRIPT = 370, /* VAR_PYTHON_SCRIPT */ + VAR_VAL_SIG_SKEW_MIN = 371, /* VAR_VAL_SIG_SKEW_MIN */ + VAR_VAL_SIG_SKEW_MAX = 372, /* VAR_VAL_SIG_SKEW_MAX */ + VAR_VAL_MAX_RESTART = 373, /* VAR_VAL_MAX_RESTART */ + VAR_CACHE_MIN_TTL = 374, /* VAR_CACHE_MIN_TTL */ + VAR_VAL_LOG_LEVEL = 375, /* VAR_VAL_LOG_LEVEL */ + VAR_AUTO_TRUST_ANCHOR_FILE = 376, /* VAR_AUTO_TRUST_ANCHOR_FILE */ + VAR_KEEP_MISSING = 377, /* VAR_KEEP_MISSING */ + VAR_ADD_HOLDDOWN = 378, /* VAR_ADD_HOLDDOWN */ + VAR_DEL_HOLDDOWN = 379, /* VAR_DEL_HOLDDOWN */ + VAR_SO_RCVBUF = 380, /* VAR_SO_RCVBUF */ + VAR_EDNS_BUFFER_SIZE = 381, /* VAR_EDNS_BUFFER_SIZE */ + VAR_PREFETCH = 382, /* VAR_PREFETCH */ + VAR_PREFETCH_KEY = 383, /* VAR_PREFETCH_KEY */ + VAR_SO_SNDBUF = 384, /* VAR_SO_SNDBUF */ + VAR_SO_REUSEPORT = 385, /* VAR_SO_REUSEPORT */ + VAR_HARDEN_BELOW_NXDOMAIN = 386, /* VAR_HARDEN_BELOW_NXDOMAIN */ + VAR_IGNORE_CD_FLAG = 387, /* VAR_IGNORE_CD_FLAG */ + VAR_LOG_QUERIES = 388, /* VAR_LOG_QUERIES */ + VAR_LOG_REPLIES = 389, /* VAR_LOG_REPLIES */ + VAR_LOG_LOCAL_ACTIONS = 390, /* VAR_LOG_LOCAL_ACTIONS */ + VAR_TCP_UPSTREAM = 391, /* VAR_TCP_UPSTREAM */ + VAR_SSL_UPSTREAM = 392, /* VAR_SSL_UPSTREAM */ + VAR_TCP_AUTH_QUERY_TIMEOUT = 393, /* VAR_TCP_AUTH_QUERY_TIMEOUT */ + VAR_SSL_SERVICE_KEY = 394, /* VAR_SSL_SERVICE_KEY */ + VAR_SSL_SERVICE_PEM = 395, /* VAR_SSL_SERVICE_PEM */ + VAR_SSL_PORT = 396, /* VAR_SSL_PORT */ + VAR_FORWARD_FIRST = 397, /* VAR_FORWARD_FIRST */ + VAR_STUB_SSL_UPSTREAM = 398, /* VAR_STUB_SSL_UPSTREAM */ + VAR_FORWARD_SSL_UPSTREAM = 399, /* VAR_FORWARD_SSL_UPSTREAM */ + VAR_TLS_CERT_BUNDLE = 400, /* VAR_TLS_CERT_BUNDLE */ + VAR_STUB_TCP_UPSTREAM = 401, /* VAR_STUB_TCP_UPSTREAM */ + VAR_FORWARD_TCP_UPSTREAM = 402, /* VAR_FORWARD_TCP_UPSTREAM */ + VAR_HTTPS_PORT = 403, /* VAR_HTTPS_PORT */ + VAR_HTTP_ENDPOINT = 404, /* VAR_HTTP_ENDPOINT */ + VAR_HTTP_MAX_STREAMS = 405, /* VAR_HTTP_MAX_STREAMS */ + VAR_HTTP_QUERY_BUFFER_SIZE = 406, /* VAR_HTTP_QUERY_BUFFER_SIZE */ + VAR_HTTP_RESPONSE_BUFFER_SIZE = 407, /* VAR_HTTP_RESPONSE_BUFFER_SIZE */ + VAR_HTTP_NODELAY = 408, /* VAR_HTTP_NODELAY */ + VAR_HTTP_NOTLS_DOWNSTREAM = 409, /* VAR_HTTP_NOTLS_DOWNSTREAM */ + VAR_STUB_FIRST = 410, /* VAR_STUB_FIRST */ + VAR_MINIMAL_RESPONSES = 411, /* VAR_MINIMAL_RESPONSES */ + VAR_RRSET_ROUNDROBIN = 412, /* VAR_RRSET_ROUNDROBIN */ + VAR_MAX_UDP_SIZE = 413, /* VAR_MAX_UDP_SIZE */ + VAR_DELAY_CLOSE = 414, /* VAR_DELAY_CLOSE */ + VAR_UDP_CONNECT = 415, /* VAR_UDP_CONNECT */ + VAR_UNBLOCK_LAN_ZONES = 416, /* VAR_UNBLOCK_LAN_ZONES */ + VAR_INSECURE_LAN_ZONES = 417, /* VAR_INSECURE_LAN_ZONES */ + VAR_INFRA_CACHE_MIN_RTT = 418, /* VAR_INFRA_CACHE_MIN_RTT */ + VAR_INFRA_KEEP_PROBING = 419, /* VAR_INFRA_KEEP_PROBING */ + VAR_DNS64_PREFIX = 420, /* VAR_DNS64_PREFIX */ + VAR_DNS64_SYNTHALL = 421, /* VAR_DNS64_SYNTHALL */ + VAR_DNS64_IGNORE_AAAA = 422, /* VAR_DNS64_IGNORE_AAAA */ + VAR_DNSTAP = 423, /* VAR_DNSTAP */ + VAR_DNSTAP_ENABLE = 424, /* VAR_DNSTAP_ENABLE */ + VAR_DNSTAP_SOCKET_PATH = 425, /* VAR_DNSTAP_SOCKET_PATH */ + VAR_DNSTAP_IP = 426, /* VAR_DNSTAP_IP */ + VAR_DNSTAP_TLS = 427, /* VAR_DNSTAP_TLS */ + VAR_DNSTAP_TLS_SERVER_NAME = 428, /* VAR_DNSTAP_TLS_SERVER_NAME */ + VAR_DNSTAP_TLS_CERT_BUNDLE = 429, /* VAR_DNSTAP_TLS_CERT_BUNDLE */ + VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 430, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE */ + VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 431, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE */ + VAR_DNSTAP_SEND_IDENTITY = 432, /* VAR_DNSTAP_SEND_IDENTITY */ + VAR_DNSTAP_SEND_VERSION = 433, /* VAR_DNSTAP_SEND_VERSION */ + VAR_DNSTAP_BIDIRECTIONAL = 434, /* VAR_DNSTAP_BIDIRECTIONAL */ + VAR_DNSTAP_IDENTITY = 435, /* VAR_DNSTAP_IDENTITY */ + VAR_DNSTAP_VERSION = 436, /* VAR_DNSTAP_VERSION */ + VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 437, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES */ + VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 438, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES */ + VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 439, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES */ + VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 440, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES */ + VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 441, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES */ + VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 442, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES */ + VAR_RESPONSE_IP_TAG = 443, /* VAR_RESPONSE_IP_TAG */ + VAR_RESPONSE_IP = 444, /* VAR_RESPONSE_IP */ + VAR_RESPONSE_IP_DATA = 445, /* VAR_RESPONSE_IP_DATA */ + VAR_HARDEN_ALGO_DOWNGRADE = 446, /* VAR_HARDEN_ALGO_DOWNGRADE */ + VAR_IP_TRANSPARENT = 447, /* VAR_IP_TRANSPARENT */ + VAR_IP_DSCP = 448, /* VAR_IP_DSCP */ + VAR_DISABLE_DNSSEC_LAME_CHECK = 449, /* VAR_DISABLE_DNSSEC_LAME_CHECK */ + VAR_IP_RATELIMIT = 450, /* VAR_IP_RATELIMIT */ + VAR_IP_RATELIMIT_SLABS = 451, /* VAR_IP_RATELIMIT_SLABS */ + VAR_IP_RATELIMIT_SIZE = 452, /* VAR_IP_RATELIMIT_SIZE */ + VAR_RATELIMIT = 453, /* VAR_RATELIMIT */ + VAR_RATELIMIT_SLABS = 454, /* VAR_RATELIMIT_SLABS */ + VAR_RATELIMIT_SIZE = 455, /* VAR_RATELIMIT_SIZE */ + VAR_OUTBOUND_MSG_RETRY = 456, /* VAR_OUTBOUND_MSG_RETRY */ + VAR_RATELIMIT_FOR_DOMAIN = 457, /* VAR_RATELIMIT_FOR_DOMAIN */ + VAR_RATELIMIT_BELOW_DOMAIN = 458, /* VAR_RATELIMIT_BELOW_DOMAIN */ + VAR_IP_RATELIMIT_FACTOR = 459, /* VAR_IP_RATELIMIT_FACTOR */ + VAR_RATELIMIT_FACTOR = 460, /* VAR_RATELIMIT_FACTOR */ + VAR_IP_RATELIMIT_BACKOFF = 461, /* VAR_IP_RATELIMIT_BACKOFF */ + VAR_RATELIMIT_BACKOFF = 462, /* VAR_RATELIMIT_BACKOFF */ + VAR_SEND_CLIENT_SUBNET = 463, /* VAR_SEND_CLIENT_SUBNET */ + VAR_CLIENT_SUBNET_ZONE = 464, /* VAR_CLIENT_SUBNET_ZONE */ + VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 465, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ + VAR_CLIENT_SUBNET_OPCODE = 466, /* VAR_CLIENT_SUBNET_OPCODE */ + VAR_MAX_CLIENT_SUBNET_IPV4 = 467, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ + VAR_MAX_CLIENT_SUBNET_IPV6 = 468, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ + VAR_MIN_CLIENT_SUBNET_IPV4 = 469, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ + VAR_MIN_CLIENT_SUBNET_IPV6 = 470, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ + VAR_MAX_ECS_TREE_SIZE_IPV4 = 471, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ + VAR_MAX_ECS_TREE_SIZE_IPV6 = 472, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ + VAR_CAPS_WHITELIST = 473, /* VAR_CAPS_WHITELIST */ + VAR_CACHE_MAX_NEGATIVE_TTL = 474, /* VAR_CACHE_MAX_NEGATIVE_TTL */ + VAR_PERMIT_SMALL_HOLDDOWN = 475, /* VAR_PERMIT_SMALL_HOLDDOWN */ + VAR_QNAME_MINIMISATION = 476, /* VAR_QNAME_MINIMISATION */ + VAR_QNAME_MINIMISATION_STRICT = 477, /* VAR_QNAME_MINIMISATION_STRICT */ + VAR_IP_FREEBIND = 478, /* VAR_IP_FREEBIND */ + VAR_DEFINE_TAG = 479, /* VAR_DEFINE_TAG */ + VAR_LOCAL_ZONE_TAG = 480, /* VAR_LOCAL_ZONE_TAG */ + VAR_ACCESS_CONTROL_TAG = 481, /* VAR_ACCESS_CONTROL_TAG */ + VAR_LOCAL_ZONE_OVERRIDE = 482, /* VAR_LOCAL_ZONE_OVERRIDE */ + VAR_ACCESS_CONTROL_TAG_ACTION = 483, /* VAR_ACCESS_CONTROL_TAG_ACTION */ + VAR_ACCESS_CONTROL_TAG_DATA = 484, /* VAR_ACCESS_CONTROL_TAG_DATA */ + VAR_VIEW = 485, /* VAR_VIEW */ + VAR_ACCESS_CONTROL_VIEW = 486, /* VAR_ACCESS_CONTROL_VIEW */ + VAR_VIEW_FIRST = 487, /* VAR_VIEW_FIRST */ + VAR_SERVE_EXPIRED = 488, /* VAR_SERVE_EXPIRED */ + VAR_SERVE_EXPIRED_TTL = 489, /* VAR_SERVE_EXPIRED_TTL */ + VAR_SERVE_EXPIRED_TTL_RESET = 490, /* VAR_SERVE_EXPIRED_TTL_RESET */ + VAR_SERVE_EXPIRED_REPLY_TTL = 491, /* VAR_SERVE_EXPIRED_REPLY_TTL */ + VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 492, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ + VAR_SERVE_ORIGINAL_TTL = 493, /* VAR_SERVE_ORIGINAL_TTL */ + VAR_FAKE_DSA = 494, /* VAR_FAKE_DSA */ + VAR_FAKE_SHA1 = 495, /* VAR_FAKE_SHA1 */ + VAR_LOG_IDENTITY = 496, /* VAR_LOG_IDENTITY */ + VAR_HIDE_TRUSTANCHOR = 497, /* VAR_HIDE_TRUSTANCHOR */ + VAR_HIDE_HTTP_USER_AGENT = 498, /* VAR_HIDE_HTTP_USER_AGENT */ + VAR_HTTP_USER_AGENT = 499, /* VAR_HTTP_USER_AGENT */ + VAR_TRUST_ANCHOR_SIGNALING = 500, /* VAR_TRUST_ANCHOR_SIGNALING */ + VAR_AGGRESSIVE_NSEC = 501, /* VAR_AGGRESSIVE_NSEC */ + VAR_USE_SYSTEMD = 502, /* VAR_USE_SYSTEMD */ + VAR_SHM_ENABLE = 503, /* VAR_SHM_ENABLE */ + VAR_SHM_KEY = 504, /* VAR_SHM_KEY */ + VAR_ROOT_KEY_SENTINEL = 505, /* VAR_ROOT_KEY_SENTINEL */ + VAR_DNSCRYPT = 506, /* VAR_DNSCRYPT */ + VAR_DNSCRYPT_ENABLE = 507, /* VAR_DNSCRYPT_ENABLE */ + VAR_DNSCRYPT_PORT = 508, /* VAR_DNSCRYPT_PORT */ + VAR_DNSCRYPT_PROVIDER = 509, /* VAR_DNSCRYPT_PROVIDER */ + VAR_DNSCRYPT_SECRET_KEY = 510, /* VAR_DNSCRYPT_SECRET_KEY */ + VAR_DNSCRYPT_PROVIDER_CERT = 511, /* VAR_DNSCRYPT_PROVIDER_CERT */ + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 512, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 513, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 514, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 515, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 516, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ + VAR_PAD_RESPONSES = 517, /* VAR_PAD_RESPONSES */ + VAR_PAD_RESPONSES_BLOCK_SIZE = 518, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ + VAR_PAD_QUERIES = 519, /* VAR_PAD_QUERIES */ + VAR_PAD_QUERIES_BLOCK_SIZE = 520, /* VAR_PAD_QUERIES_BLOCK_SIZE */ + VAR_IPSECMOD_ENABLED = 521, /* VAR_IPSECMOD_ENABLED */ + VAR_IPSECMOD_HOOK = 522, /* VAR_IPSECMOD_HOOK */ + VAR_IPSECMOD_IGNORE_BOGUS = 523, /* VAR_IPSECMOD_IGNORE_BOGUS */ + VAR_IPSECMOD_MAX_TTL = 524, /* VAR_IPSECMOD_MAX_TTL */ + VAR_IPSECMOD_WHITELIST = 525, /* VAR_IPSECMOD_WHITELIST */ + VAR_IPSECMOD_STRICT = 526, /* VAR_IPSECMOD_STRICT */ + VAR_CACHEDB = 527, /* VAR_CACHEDB */ + VAR_CACHEDB_BACKEND = 528, /* VAR_CACHEDB_BACKEND */ + VAR_CACHEDB_SECRETSEED = 529, /* VAR_CACHEDB_SECRETSEED */ + VAR_CACHEDB_REDISHOST = 530, /* VAR_CACHEDB_REDISHOST */ + VAR_CACHEDB_REDISPORT = 531, /* VAR_CACHEDB_REDISPORT */ + VAR_CACHEDB_REDISTIMEOUT = 532, /* VAR_CACHEDB_REDISTIMEOUT */ + VAR_CACHEDB_REDISEXPIRERECORDS = 533, /* VAR_CACHEDB_REDISEXPIRERECORDS */ + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 534, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ + VAR_FOR_UPSTREAM = 535, /* VAR_FOR_UPSTREAM */ + VAR_AUTH_ZONE = 536, /* VAR_AUTH_ZONE */ + VAR_ZONEFILE = 537, /* VAR_ZONEFILE */ + VAR_MASTER = 538, /* VAR_MASTER */ + VAR_URL = 539, /* VAR_URL */ + VAR_FOR_DOWNSTREAM = 540, /* VAR_FOR_DOWNSTREAM */ + VAR_FALLBACK_ENABLED = 541, /* VAR_FALLBACK_ENABLED */ + VAR_TLS_ADDITIONAL_PORT = 542, /* VAR_TLS_ADDITIONAL_PORT */ + VAR_LOW_RTT = 543, /* VAR_LOW_RTT */ + VAR_LOW_RTT_PERMIL = 544, /* VAR_LOW_RTT_PERMIL */ + VAR_FAST_SERVER_PERMIL = 545, /* VAR_FAST_SERVER_PERMIL */ + VAR_FAST_SERVER_NUM = 546, /* VAR_FAST_SERVER_NUM */ + VAR_ALLOW_NOTIFY = 547, /* VAR_ALLOW_NOTIFY */ + VAR_TLS_WIN_CERT = 548, /* VAR_TLS_WIN_CERT */ + VAR_TCP_CONNECTION_LIMIT = 549, /* VAR_TCP_CONNECTION_LIMIT */ + VAR_FORWARD_NO_CACHE = 550, /* VAR_FORWARD_NO_CACHE */ + VAR_STUB_NO_CACHE = 551, /* VAR_STUB_NO_CACHE */ + VAR_LOG_SERVFAIL = 552, /* VAR_LOG_SERVFAIL */ + VAR_DENY_ANY = 553, /* VAR_DENY_ANY */ + VAR_UNKNOWN_SERVER_TIME_LIMIT = 554, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ + VAR_LOG_TAG_QUERYREPLY = 555, /* VAR_LOG_TAG_QUERYREPLY */ + VAR_STREAM_WAIT_SIZE = 556, /* VAR_STREAM_WAIT_SIZE */ + VAR_TLS_CIPHERS = 557, /* VAR_TLS_CIPHERS */ + VAR_TLS_CIPHERSUITES = 558, /* VAR_TLS_CIPHERSUITES */ + VAR_TLS_USE_SNI = 559, /* VAR_TLS_USE_SNI */ + VAR_IPSET = 560, /* VAR_IPSET */ + VAR_IPSET_NAME_V4 = 561, /* VAR_IPSET_NAME_V4 */ + VAR_IPSET_NAME_V6 = 562, /* VAR_IPSET_NAME_V6 */ + VAR_TLS_SESSION_TICKET_KEYS = 563, /* VAR_TLS_SESSION_TICKET_KEYS */ + VAR_RPZ = 564, /* VAR_RPZ */ + VAR_TAGS = 565, /* VAR_TAGS */ + VAR_RPZ_ACTION_OVERRIDE = 566, /* VAR_RPZ_ACTION_OVERRIDE */ + VAR_RPZ_CNAME_OVERRIDE = 567, /* VAR_RPZ_CNAME_OVERRIDE */ + VAR_RPZ_LOG = 568, /* VAR_RPZ_LOG */ + VAR_RPZ_LOG_NAME = 569, /* VAR_RPZ_LOG_NAME */ + VAR_DYNLIB = 570, /* VAR_DYNLIB */ + VAR_DYNLIB_FILE = 571, /* VAR_DYNLIB_FILE */ + VAR_EDNS_CLIENT_STRING = 572, /* VAR_EDNS_CLIENT_STRING */ + VAR_EDNS_CLIENT_STRING_OPCODE = 573, /* VAR_EDNS_CLIENT_STRING_OPCODE */ + VAR_NSID = 574, /* VAR_NSID */ + VAR_ZONEMD_PERMISSIVE_MODE = 575, /* VAR_ZONEMD_PERMISSIVE_MODE */ + VAR_ZONEMD_CHECK = 576, /* VAR_ZONEMD_CHECK */ + VAR_ZONEMD_REJECT_ABSENCE = 577, /* VAR_ZONEMD_REJECT_ABSENCE */ + VAR_RPZ_SIGNAL_NXDOMAIN_RA = 578, /* VAR_RPZ_SIGNAL_NXDOMAIN_RA */ + VAR_INTERFACE_AUTOMATIC_PORTS = 579 /* VAR_INTERFACE_AUTOMATIC_PORTS */ + }; + typedef enum yytokentype yytoken_kind_t; +#endif +/* Token kinds. */ +#define YYEOF 0 +#define YYerror 256 +#define YYUNDEF 257 +#define SPACE 258 +#define LETTER 259 +#define NEWLINE 260 +#define COMMENT 261 +#define COLON 262 +#define ANY 263 +#define ZONESTR 264 +#define STRING_ARG 265 +#define VAR_FORCE_TOPLEVEL 266 +#define VAR_SERVER 267 +#define VAR_VERBOSITY 268 +#define VAR_NUM_THREADS 269 +#define VAR_PORT 270 +#define VAR_OUTGOING_RANGE 271 +#define VAR_INTERFACE 272 +#define VAR_PREFER_IP4 273 +#define VAR_DO_IP4 274 +#define VAR_DO_IP6 275 +#define VAR_PREFER_IP6 276 +#define VAR_DO_UDP 277 +#define VAR_DO_TCP 278 +#define VAR_TCP_MSS 279 +#define VAR_OUTGOING_TCP_MSS 280 +#define VAR_TCP_IDLE_TIMEOUT 281 +#define VAR_EDNS_TCP_KEEPALIVE 282 +#define VAR_EDNS_TCP_KEEPALIVE_TIMEOUT 283 +#define VAR_CHROOT 284 +#define VAR_USERNAME 285 +#define VAR_DIRECTORY 286 +#define VAR_LOGFILE 287 +#define VAR_PIDFILE 288 +#define VAR_MSG_CACHE_SIZE 289 +#define VAR_MSG_CACHE_SLABS 290 +#define VAR_NUM_QUERIES_PER_THREAD 291 +#define VAR_RRSET_CACHE_SIZE 292 +#define VAR_RRSET_CACHE_SLABS 293 +#define VAR_OUTGOING_NUM_TCP 294 +#define VAR_INFRA_HOST_TTL 295 +#define VAR_INFRA_LAME_TTL 296 +#define VAR_INFRA_CACHE_SLABS 297 +#define VAR_INFRA_CACHE_NUMHOSTS 298 +#define VAR_INFRA_CACHE_LAME_SIZE 299 +#define VAR_NAME 300 +#define VAR_STUB_ZONE 301 +#define VAR_STUB_HOST 302 +#define VAR_STUB_ADDR 303 +#define VAR_TARGET_FETCH_POLICY 304 +#define VAR_HARDEN_SHORT_BUFSIZE 305 +#define VAR_HARDEN_LARGE_QUERIES 306 +#define VAR_FORWARD_ZONE 307 +#define VAR_FORWARD_HOST 308 +#define VAR_FORWARD_ADDR 309 +#define VAR_DO_NOT_QUERY_ADDRESS 310 +#define VAR_HIDE_IDENTITY 311 +#define VAR_HIDE_VERSION 312 +#define VAR_IDENTITY 313 +#define VAR_VERSION 314 +#define VAR_HARDEN_GLUE 315 +#define VAR_MODULE_CONF 316 +#define VAR_TRUST_ANCHOR_FILE 317 +#define VAR_TRUST_ANCHOR 318 +#define VAR_VAL_OVERRIDE_DATE 319 +#define VAR_BOGUS_TTL 320 +#define VAR_VAL_CLEAN_ADDITIONAL 321 +#define VAR_VAL_PERMISSIVE_MODE 322 +#define VAR_INCOMING_NUM_TCP 323 +#define VAR_MSG_BUFFER_SIZE 324 +#define VAR_KEY_CACHE_SIZE 325 +#define VAR_KEY_CACHE_SLABS 326 +#define VAR_TRUSTED_KEYS_FILE 327 +#define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 328 +#define VAR_USE_SYSLOG 329 +#define VAR_OUTGOING_INTERFACE 330 +#define VAR_ROOT_HINTS 331 +#define VAR_DO_NOT_QUERY_LOCALHOST 332 +#define VAR_CACHE_MAX_TTL 333 +#define VAR_HARDEN_DNSSEC_STRIPPED 334 +#define VAR_ACCESS_CONTROL 335 +#define VAR_LOCAL_ZONE 336 +#define VAR_LOCAL_DATA 337 +#define VAR_INTERFACE_AUTOMATIC 338 +#define VAR_STATISTICS_INTERVAL 339 +#define VAR_DO_DAEMONIZE 340 +#define VAR_USE_CAPS_FOR_ID 341 +#define VAR_STATISTICS_CUMULATIVE 342 +#define VAR_OUTGOING_PORT_PERMIT 343 +#define VAR_OUTGOING_PORT_AVOID 344 +#define VAR_DLV_ANCHOR_FILE 345 +#define VAR_DLV_ANCHOR 346 +#define VAR_NEG_CACHE_SIZE 347 +#define VAR_HARDEN_REFERRAL_PATH 348 +#define VAR_PRIVATE_ADDRESS 349 +#define VAR_PRIVATE_DOMAIN 350 +#define VAR_REMOTE_CONTROL 351 +#define VAR_CONTROL_ENABLE 352 +#define VAR_CONTROL_INTERFACE 353 +#define VAR_CONTROL_PORT 354 +#define VAR_SERVER_KEY_FILE 355 +#define VAR_SERVER_CERT_FILE 356 +#define VAR_CONTROL_KEY_FILE 357 +#define VAR_CONTROL_CERT_FILE 358 +#define VAR_CONTROL_USE_CERT 359 +#define VAR_TCP_REUSE_TIMEOUT 360 +#define VAR_MAX_REUSE_TCP_QUERIES 361 +#define VAR_EXTENDED_STATISTICS 362 +#define VAR_LOCAL_DATA_PTR 363 +#define VAR_JOSTLE_TIMEOUT 364 +#define VAR_STUB_PRIME 365 +#define VAR_UNWANTED_REPLY_THRESHOLD 366 +#define VAR_LOG_TIME_ASCII 367 +#define VAR_DOMAIN_INSECURE 368 +#define VAR_PYTHON 369 +#define VAR_PYTHON_SCRIPT 370 +#define VAR_VAL_SIG_SKEW_MIN 371 +#define VAR_VAL_SIG_SKEW_MAX 372 +#define VAR_VAL_MAX_RESTART 373 +#define VAR_CACHE_MIN_TTL 374 +#define VAR_VAL_LOG_LEVEL 375 +#define VAR_AUTO_TRUST_ANCHOR_FILE 376 +#define VAR_KEEP_MISSING 377 +#define VAR_ADD_HOLDDOWN 378 +#define VAR_DEL_HOLDDOWN 379 +#define VAR_SO_RCVBUF 380 +#define VAR_EDNS_BUFFER_SIZE 381 +#define VAR_PREFETCH 382 +#define VAR_PREFETCH_KEY 383 +#define VAR_SO_SNDBUF 384 +#define VAR_SO_REUSEPORT 385 +#define VAR_HARDEN_BELOW_NXDOMAIN 386 +#define VAR_IGNORE_CD_FLAG 387 +#define VAR_LOG_QUERIES 388 +#define VAR_LOG_REPLIES 389 +#define VAR_LOG_LOCAL_ACTIONS 390 +#define VAR_TCP_UPSTREAM 391 +#define VAR_SSL_UPSTREAM 392 +#define VAR_TCP_AUTH_QUERY_TIMEOUT 393 +#define VAR_SSL_SERVICE_KEY 394 +#define VAR_SSL_SERVICE_PEM 395 +#define VAR_SSL_PORT 396 +#define VAR_FORWARD_FIRST 397 +#define VAR_STUB_SSL_UPSTREAM 398 +#define VAR_FORWARD_SSL_UPSTREAM 399 +#define VAR_TLS_CERT_BUNDLE 400 +#define VAR_STUB_TCP_UPSTREAM 401 +#define VAR_FORWARD_TCP_UPSTREAM 402 +#define VAR_HTTPS_PORT 403 +#define VAR_HTTP_ENDPOINT 404 +#define VAR_HTTP_MAX_STREAMS 405 +#define VAR_HTTP_QUERY_BUFFER_SIZE 406 +#define VAR_HTTP_RESPONSE_BUFFER_SIZE 407 +#define VAR_HTTP_NODELAY 408 +#define VAR_HTTP_NOTLS_DOWNSTREAM 409 +#define VAR_STUB_FIRST 410 +#define VAR_MINIMAL_RESPONSES 411 +#define VAR_RRSET_ROUNDROBIN 412 +#define VAR_MAX_UDP_SIZE 413 +#define VAR_DELAY_CLOSE 414 +#define VAR_UDP_CONNECT 415 +#define VAR_UNBLOCK_LAN_ZONES 416 +#define VAR_INSECURE_LAN_ZONES 417 +#define VAR_INFRA_CACHE_MIN_RTT 418 +#define VAR_INFRA_KEEP_PROBING 419 +#define VAR_DNS64_PREFIX 420 +#define VAR_DNS64_SYNTHALL 421 +#define VAR_DNS64_IGNORE_AAAA 422 +#define VAR_DNSTAP 423 +#define VAR_DNSTAP_ENABLE 424 +#define VAR_DNSTAP_SOCKET_PATH 425 +#define VAR_DNSTAP_IP 426 +#define VAR_DNSTAP_TLS 427 +#define VAR_DNSTAP_TLS_SERVER_NAME 428 +#define VAR_DNSTAP_TLS_CERT_BUNDLE 429 +#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 430 +#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 431 +#define VAR_DNSTAP_SEND_IDENTITY 432 +#define VAR_DNSTAP_SEND_VERSION 433 +#define VAR_DNSTAP_BIDIRECTIONAL 434 +#define VAR_DNSTAP_IDENTITY 435 +#define VAR_DNSTAP_VERSION 436 +#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 437 +#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 438 +#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 439 +#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 440 +#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 441 +#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 442 +#define VAR_RESPONSE_IP_TAG 443 +#define VAR_RESPONSE_IP 444 +#define VAR_RESPONSE_IP_DATA 445 +#define VAR_HARDEN_ALGO_DOWNGRADE 446 +#define VAR_IP_TRANSPARENT 447 +#define VAR_IP_DSCP 448 +#define VAR_DISABLE_DNSSEC_LAME_CHECK 449 +#define VAR_IP_RATELIMIT 450 +#define VAR_IP_RATELIMIT_SLABS 451 +#define VAR_IP_RATELIMIT_SIZE 452 +#define VAR_RATELIMIT 453 +#define VAR_RATELIMIT_SLABS 454 +#define VAR_RATELIMIT_SIZE 455 +#define VAR_OUTBOUND_MSG_RETRY 456 +#define VAR_RATELIMIT_FOR_DOMAIN 457 +#define VAR_RATELIMIT_BELOW_DOMAIN 458 +#define VAR_IP_RATELIMIT_FACTOR 459 +#define VAR_RATELIMIT_FACTOR 460 +#define VAR_IP_RATELIMIT_BACKOFF 461 +#define VAR_RATELIMIT_BACKOFF 462 +#define VAR_SEND_CLIENT_SUBNET 463 +#define VAR_CLIENT_SUBNET_ZONE 464 +#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 465 +#define VAR_CLIENT_SUBNET_OPCODE 466 +#define VAR_MAX_CLIENT_SUBNET_IPV4 467 +#define VAR_MAX_CLIENT_SUBNET_IPV6 468 +#define VAR_MIN_CLIENT_SUBNET_IPV4 469 +#define VAR_MIN_CLIENT_SUBNET_IPV6 470 +#define VAR_MAX_ECS_TREE_SIZE_IPV4 471 +#define VAR_MAX_ECS_TREE_SIZE_IPV6 472 +#define VAR_CAPS_WHITELIST 473 +#define VAR_CACHE_MAX_NEGATIVE_TTL 474 +#define VAR_PERMIT_SMALL_HOLDDOWN 475 +#define VAR_QNAME_MINIMISATION 476 +#define VAR_QNAME_MINIMISATION_STRICT 477 +#define VAR_IP_FREEBIND 478 +#define VAR_DEFINE_TAG 479 +#define VAR_LOCAL_ZONE_TAG 480 +#define VAR_ACCESS_CONTROL_TAG 481 +#define VAR_LOCAL_ZONE_OVERRIDE 482 +#define VAR_ACCESS_CONTROL_TAG_ACTION 483 +#define VAR_ACCESS_CONTROL_TAG_DATA 484 +#define VAR_VIEW 485 +#define VAR_ACCESS_CONTROL_VIEW 486 +#define VAR_VIEW_FIRST 487 +#define VAR_SERVE_EXPIRED 488 +#define VAR_SERVE_EXPIRED_TTL 489 +#define VAR_SERVE_EXPIRED_TTL_RESET 490 +#define VAR_SERVE_EXPIRED_REPLY_TTL 491 +#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 492 +#define VAR_SERVE_ORIGINAL_TTL 493 +#define VAR_FAKE_DSA 494 +#define VAR_FAKE_SHA1 495 +#define VAR_LOG_IDENTITY 496 +#define VAR_HIDE_TRUSTANCHOR 497 +#define VAR_HIDE_HTTP_USER_AGENT 498 +#define VAR_HTTP_USER_AGENT 499 +#define VAR_TRUST_ANCHOR_SIGNALING 500 +#define VAR_AGGRESSIVE_NSEC 501 +#define VAR_USE_SYSTEMD 502 +#define VAR_SHM_ENABLE 503 +#define VAR_SHM_KEY 504 +#define VAR_ROOT_KEY_SENTINEL 505 +#define VAR_DNSCRYPT 506 +#define VAR_DNSCRYPT_ENABLE 507 +#define VAR_DNSCRYPT_PORT 508 +#define VAR_DNSCRYPT_PROVIDER 509 +#define VAR_DNSCRYPT_SECRET_KEY 510 +#define VAR_DNSCRYPT_PROVIDER_CERT 511 +#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 512 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 513 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 514 +#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 515 +#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 516 +#define VAR_PAD_RESPONSES 517 +#define VAR_PAD_RESPONSES_BLOCK_SIZE 518 +#define VAR_PAD_QUERIES 519 +#define VAR_PAD_QUERIES_BLOCK_SIZE 520 +#define VAR_IPSECMOD_ENABLED 521 +#define VAR_IPSECMOD_HOOK 522 +#define VAR_IPSECMOD_IGNORE_BOGUS 523 +#define VAR_IPSECMOD_MAX_TTL 524 +#define VAR_IPSECMOD_WHITELIST 525 +#define VAR_IPSECMOD_STRICT 526 +#define VAR_CACHEDB 527 +#define VAR_CACHEDB_BACKEND 528 +#define VAR_CACHEDB_SECRETSEED 529 +#define VAR_CACHEDB_REDISHOST 530 +#define VAR_CACHEDB_REDISPORT 531 +#define VAR_CACHEDB_REDISTIMEOUT 532 +#define VAR_CACHEDB_REDISEXPIRERECORDS 533 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 534 +#define VAR_FOR_UPSTREAM 535 +#define VAR_AUTH_ZONE 536 +#define VAR_ZONEFILE 537 +#define VAR_MASTER 538 +#define VAR_URL 539 +#define VAR_FOR_DOWNSTREAM 540 +#define VAR_FALLBACK_ENABLED 541 +#define VAR_TLS_ADDITIONAL_PORT 542 +#define VAR_LOW_RTT 543 +#define VAR_LOW_RTT_PERMIL 544 +#define VAR_FAST_SERVER_PERMIL 545 +#define VAR_FAST_SERVER_NUM 546 +#define VAR_ALLOW_NOTIFY 547 +#define VAR_TLS_WIN_CERT 548 +#define VAR_TCP_CONNECTION_LIMIT 549 +#define VAR_FORWARD_NO_CACHE 550 +#define VAR_STUB_NO_CACHE 551 +#define VAR_LOG_SERVFAIL 552 +#define VAR_DENY_ANY 553 +#define VAR_UNKNOWN_SERVER_TIME_LIMIT 554 +#define VAR_LOG_TAG_QUERYREPLY 555 +#define VAR_STREAM_WAIT_SIZE 556 +#define VAR_TLS_CIPHERS 557 +#define VAR_TLS_CIPHERSUITES 558 +#define VAR_TLS_USE_SNI 559 +#define VAR_IPSET 560 +#define VAR_IPSET_NAME_V4 561 +#define VAR_IPSET_NAME_V6 562 +#define VAR_TLS_SESSION_TICKET_KEYS 563 +#define VAR_RPZ 564 +#define VAR_TAGS 565 +#define VAR_RPZ_ACTION_OVERRIDE 566 +#define VAR_RPZ_CNAME_OVERRIDE 567 +#define VAR_RPZ_LOG 568 +#define VAR_RPZ_LOG_NAME 569 +#define VAR_DYNLIB 570 +#define VAR_DYNLIB_FILE 571 +#define VAR_EDNS_CLIENT_STRING 572 +#define VAR_EDNS_CLIENT_STRING_OPCODE 573 +#define VAR_NSID 574 +#define VAR_ZONEMD_PERMISSIVE_MODE 575 +#define VAR_ZONEMD_CHECK 576 +#define VAR_ZONEMD_REJECT_ABSENCE 577 +#define VAR_RPZ_SIGNAL_NXDOMAIN_RA 578 +#define VAR_INTERFACE_AUTOMATIC_PORTS 579 + +/* Value type. */ +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +union YYSTYPE +{ +#line 66 "./util/configparser.y" + + char* str; + +#line 804 "util/configparser.c" + +}; +typedef union YYSTYPE YYSTYPE; +# define YYSTYPE_IS_TRIVIAL 1 +# define YYSTYPE_IS_DECLARED 1 +#endif + + +extern YYSTYPE yylval; + +int yyparse (void); + +#endif /* !YY_YY_UTIL_CONFIGPARSER_H_INCLUDED */ /* Symbol kind. */ enum yysymbol_kind_t { @@ -448,355 +1142,357 @@ enum yysymbol_kind_t YYSYMBOL_VAR_ZONEMD_CHECK = 321, /* VAR_ZONEMD_CHECK */ YYSYMBOL_VAR_ZONEMD_REJECT_ABSENCE = 322, /* VAR_ZONEMD_REJECT_ABSENCE */ YYSYMBOL_VAR_RPZ_SIGNAL_NXDOMAIN_RA = 323, /* VAR_RPZ_SIGNAL_NXDOMAIN_RA */ - YYSYMBOL_YYACCEPT = 324, /* $accept */ - YYSYMBOL_toplevelvars = 325, /* toplevelvars */ - YYSYMBOL_toplevelvar = 326, /* toplevelvar */ - YYSYMBOL_force_toplevel = 327, /* force_toplevel */ - YYSYMBOL_serverstart = 328, /* serverstart */ - YYSYMBOL_contents_server = 329, /* contents_server */ - YYSYMBOL_content_server = 330, /* content_server */ - YYSYMBOL_stubstart = 331, /* stubstart */ - YYSYMBOL_contents_stub = 332, /* contents_stub */ - YYSYMBOL_content_stub = 333, /* content_stub */ - YYSYMBOL_forwardstart = 334, /* forwardstart */ - YYSYMBOL_contents_forward = 335, /* contents_forward */ - YYSYMBOL_content_forward = 336, /* content_forward */ - YYSYMBOL_viewstart = 337, /* viewstart */ - YYSYMBOL_contents_view = 338, /* contents_view */ - YYSYMBOL_content_view = 339, /* content_view */ - YYSYMBOL_authstart = 340, /* authstart */ - YYSYMBOL_contents_auth = 341, /* contents_auth */ - YYSYMBOL_content_auth = 342, /* content_auth */ - YYSYMBOL_rpz_tag = 343, /* rpz_tag */ - YYSYMBOL_rpz_action_override = 344, /* rpz_action_override */ - YYSYMBOL_rpz_cname_override = 345, /* rpz_cname_override */ - YYSYMBOL_rpz_log = 346, /* rpz_log */ - YYSYMBOL_rpz_log_name = 347, /* rpz_log_name */ - YYSYMBOL_rpz_signal_nxdomain_ra = 348, /* rpz_signal_nxdomain_ra */ - YYSYMBOL_rpzstart = 349, /* rpzstart */ - YYSYMBOL_contents_rpz = 350, /* contents_rpz */ - YYSYMBOL_content_rpz = 351, /* content_rpz */ - YYSYMBOL_server_num_threads = 352, /* server_num_threads */ - YYSYMBOL_server_verbosity = 353, /* server_verbosity */ - YYSYMBOL_server_statistics_interval = 354, /* server_statistics_interval */ - YYSYMBOL_server_statistics_cumulative = 355, /* server_statistics_cumulative */ - YYSYMBOL_server_extended_statistics = 356, /* server_extended_statistics */ - YYSYMBOL_server_shm_enable = 357, /* server_shm_enable */ - YYSYMBOL_server_shm_key = 358, /* server_shm_key */ - YYSYMBOL_server_port = 359, /* server_port */ - YYSYMBOL_server_send_client_subnet = 360, /* server_send_client_subnet */ - YYSYMBOL_server_client_subnet_zone = 361, /* server_client_subnet_zone */ - YYSYMBOL_server_client_subnet_always_forward = 362, /* server_client_subnet_always_forward */ - YYSYMBOL_server_client_subnet_opcode = 363, /* server_client_subnet_opcode */ - YYSYMBOL_server_max_client_subnet_ipv4 = 364, /* server_max_client_subnet_ipv4 */ - YYSYMBOL_server_max_client_subnet_ipv6 = 365, /* server_max_client_subnet_ipv6 */ - YYSYMBOL_server_min_client_subnet_ipv4 = 366, /* server_min_client_subnet_ipv4 */ - YYSYMBOL_server_min_client_subnet_ipv6 = 367, /* server_min_client_subnet_ipv6 */ - YYSYMBOL_server_max_ecs_tree_size_ipv4 = 368, /* server_max_ecs_tree_size_ipv4 */ - YYSYMBOL_server_max_ecs_tree_size_ipv6 = 369, /* server_max_ecs_tree_size_ipv6 */ - YYSYMBOL_server_interface = 370, /* server_interface */ - YYSYMBOL_server_outgoing_interface = 371, /* server_outgoing_interface */ - YYSYMBOL_server_outgoing_range = 372, /* server_outgoing_range */ - YYSYMBOL_server_outgoing_port_permit = 373, /* server_outgoing_port_permit */ - YYSYMBOL_server_outgoing_port_avoid = 374, /* server_outgoing_port_avoid */ - YYSYMBOL_server_outgoing_num_tcp = 375, /* server_outgoing_num_tcp */ - YYSYMBOL_server_incoming_num_tcp = 376, /* server_incoming_num_tcp */ - YYSYMBOL_server_interface_automatic = 377, /* server_interface_automatic */ - YYSYMBOL_server_do_ip4 = 378, /* server_do_ip4 */ - YYSYMBOL_server_do_ip6 = 379, /* server_do_ip6 */ - YYSYMBOL_server_do_udp = 380, /* server_do_udp */ - YYSYMBOL_server_do_tcp = 381, /* server_do_tcp */ - YYSYMBOL_server_prefer_ip4 = 382, /* server_prefer_ip4 */ - YYSYMBOL_server_prefer_ip6 = 383, /* server_prefer_ip6 */ - YYSYMBOL_server_tcp_mss = 384, /* server_tcp_mss */ - YYSYMBOL_server_outgoing_tcp_mss = 385, /* server_outgoing_tcp_mss */ - YYSYMBOL_server_tcp_idle_timeout = 386, /* server_tcp_idle_timeout */ - YYSYMBOL_server_max_reuse_tcp_queries = 387, /* server_max_reuse_tcp_queries */ - YYSYMBOL_server_tcp_reuse_timeout = 388, /* server_tcp_reuse_timeout */ - YYSYMBOL_server_tcp_auth_query_timeout = 389, /* server_tcp_auth_query_timeout */ - YYSYMBOL_server_tcp_keepalive = 390, /* server_tcp_keepalive */ - YYSYMBOL_server_tcp_keepalive_timeout = 391, /* server_tcp_keepalive_timeout */ - YYSYMBOL_server_tcp_upstream = 392, /* server_tcp_upstream */ - YYSYMBOL_server_udp_upstream_without_downstream = 393, /* server_udp_upstream_without_downstream */ - YYSYMBOL_server_ssl_upstream = 394, /* server_ssl_upstream */ - YYSYMBOL_server_ssl_service_key = 395, /* server_ssl_service_key */ - YYSYMBOL_server_ssl_service_pem = 396, /* server_ssl_service_pem */ - YYSYMBOL_server_ssl_port = 397, /* server_ssl_port */ - YYSYMBOL_server_tls_cert_bundle = 398, /* server_tls_cert_bundle */ - YYSYMBOL_server_tls_win_cert = 399, /* server_tls_win_cert */ - YYSYMBOL_server_tls_additional_port = 400, /* server_tls_additional_port */ - YYSYMBOL_server_tls_ciphers = 401, /* server_tls_ciphers */ - YYSYMBOL_server_tls_ciphersuites = 402, /* server_tls_ciphersuites */ - YYSYMBOL_server_tls_session_ticket_keys = 403, /* server_tls_session_ticket_keys */ - YYSYMBOL_server_tls_use_sni = 404, /* server_tls_use_sni */ - YYSYMBOL_server_https_port = 405, /* server_https_port */ - YYSYMBOL_server_http_endpoint = 406, /* server_http_endpoint */ - YYSYMBOL_server_http_max_streams = 407, /* server_http_max_streams */ - YYSYMBOL_server_http_query_buffer_size = 408, /* server_http_query_buffer_size */ - YYSYMBOL_server_http_response_buffer_size = 409, /* server_http_response_buffer_size */ - YYSYMBOL_server_http_nodelay = 410, /* server_http_nodelay */ - YYSYMBOL_server_http_notls_downstream = 411, /* server_http_notls_downstream */ - YYSYMBOL_server_use_systemd = 412, /* server_use_systemd */ - YYSYMBOL_server_do_daemonize = 413, /* server_do_daemonize */ - YYSYMBOL_server_use_syslog = 414, /* server_use_syslog */ - YYSYMBOL_server_log_time_ascii = 415, /* server_log_time_ascii */ - YYSYMBOL_server_log_queries = 416, /* server_log_queries */ - YYSYMBOL_server_log_replies = 417, /* server_log_replies */ - YYSYMBOL_server_log_tag_queryreply = 418, /* server_log_tag_queryreply */ - YYSYMBOL_server_log_servfail = 419, /* server_log_servfail */ - YYSYMBOL_server_log_local_actions = 420, /* server_log_local_actions */ - YYSYMBOL_server_chroot = 421, /* server_chroot */ - YYSYMBOL_server_username = 422, /* server_username */ - YYSYMBOL_server_directory = 423, /* server_directory */ - YYSYMBOL_server_logfile = 424, /* server_logfile */ - YYSYMBOL_server_pidfile = 425, /* server_pidfile */ - YYSYMBOL_server_root_hints = 426, /* server_root_hints */ - YYSYMBOL_server_dlv_anchor_file = 427, /* server_dlv_anchor_file */ - YYSYMBOL_server_dlv_anchor = 428, /* server_dlv_anchor */ - YYSYMBOL_server_auto_trust_anchor_file = 429, /* server_auto_trust_anchor_file */ - YYSYMBOL_server_trust_anchor_file = 430, /* server_trust_anchor_file */ - YYSYMBOL_server_trusted_keys_file = 431, /* server_trusted_keys_file */ - YYSYMBOL_server_trust_anchor = 432, /* server_trust_anchor */ - YYSYMBOL_server_trust_anchor_signaling = 433, /* server_trust_anchor_signaling */ - YYSYMBOL_server_root_key_sentinel = 434, /* server_root_key_sentinel */ - YYSYMBOL_server_domain_insecure = 435, /* server_domain_insecure */ - YYSYMBOL_server_hide_identity = 436, /* server_hide_identity */ - YYSYMBOL_server_hide_version = 437, /* server_hide_version */ - YYSYMBOL_server_hide_trustanchor = 438, /* server_hide_trustanchor */ - YYSYMBOL_server_hide_http_user_agent = 439, /* server_hide_http_user_agent */ - YYSYMBOL_server_identity = 440, /* server_identity */ - YYSYMBOL_server_version = 441, /* server_version */ - YYSYMBOL_server_http_user_agent = 442, /* server_http_user_agent */ - YYSYMBOL_server_nsid = 443, /* server_nsid */ - YYSYMBOL_server_so_rcvbuf = 444, /* server_so_rcvbuf */ - YYSYMBOL_server_so_sndbuf = 445, /* server_so_sndbuf */ - YYSYMBOL_server_so_reuseport = 446, /* server_so_reuseport */ - YYSYMBOL_server_ip_transparent = 447, /* server_ip_transparent */ - YYSYMBOL_server_ip_freebind = 448, /* server_ip_freebind */ - YYSYMBOL_server_ip_dscp = 449, /* server_ip_dscp */ - YYSYMBOL_server_stream_wait_size = 450, /* server_stream_wait_size */ - YYSYMBOL_server_edns_buffer_size = 451, /* server_edns_buffer_size */ - YYSYMBOL_server_msg_buffer_size = 452, /* server_msg_buffer_size */ - YYSYMBOL_server_msg_cache_size = 453, /* server_msg_cache_size */ - YYSYMBOL_server_msg_cache_slabs = 454, /* server_msg_cache_slabs */ - YYSYMBOL_server_num_queries_per_thread = 455, /* server_num_queries_per_thread */ - YYSYMBOL_server_jostle_timeout = 456, /* server_jostle_timeout */ - YYSYMBOL_server_delay_close = 457, /* server_delay_close */ - YYSYMBOL_server_udp_connect = 458, /* server_udp_connect */ - YYSYMBOL_server_unblock_lan_zones = 459, /* server_unblock_lan_zones */ - YYSYMBOL_server_insecure_lan_zones = 460, /* server_insecure_lan_zones */ - YYSYMBOL_server_rrset_cache_size = 461, /* server_rrset_cache_size */ - YYSYMBOL_server_rrset_cache_slabs = 462, /* server_rrset_cache_slabs */ - YYSYMBOL_server_infra_host_ttl = 463, /* server_infra_host_ttl */ - YYSYMBOL_server_infra_lame_ttl = 464, /* server_infra_lame_ttl */ - YYSYMBOL_server_infra_cache_numhosts = 465, /* server_infra_cache_numhosts */ - YYSYMBOL_server_infra_cache_lame_size = 466, /* server_infra_cache_lame_size */ - YYSYMBOL_server_infra_cache_slabs = 467, /* server_infra_cache_slabs */ - YYSYMBOL_server_infra_cache_min_rtt = 468, /* server_infra_cache_min_rtt */ - YYSYMBOL_server_infra_keep_probing = 469, /* server_infra_keep_probing */ - YYSYMBOL_server_target_fetch_policy = 470, /* server_target_fetch_policy */ - YYSYMBOL_server_harden_short_bufsize = 471, /* server_harden_short_bufsize */ - YYSYMBOL_server_harden_large_queries = 472, /* server_harden_large_queries */ - YYSYMBOL_server_harden_glue = 473, /* server_harden_glue */ - YYSYMBOL_server_harden_dnssec_stripped = 474, /* server_harden_dnssec_stripped */ - YYSYMBOL_server_harden_below_nxdomain = 475, /* server_harden_below_nxdomain */ - YYSYMBOL_server_harden_referral_path = 476, /* server_harden_referral_path */ - YYSYMBOL_server_harden_algo_downgrade = 477, /* server_harden_algo_downgrade */ - YYSYMBOL_server_use_caps_for_id = 478, /* server_use_caps_for_id */ - YYSYMBOL_server_caps_whitelist = 479, /* server_caps_whitelist */ - YYSYMBOL_server_private_address = 480, /* server_private_address */ - YYSYMBOL_server_private_domain = 481, /* server_private_domain */ - YYSYMBOL_server_prefetch = 482, /* server_prefetch */ - YYSYMBOL_server_prefetch_key = 483, /* server_prefetch_key */ - YYSYMBOL_server_deny_any = 484, /* server_deny_any */ - YYSYMBOL_server_unwanted_reply_threshold = 485, /* server_unwanted_reply_threshold */ - YYSYMBOL_server_do_not_query_address = 486, /* server_do_not_query_address */ - YYSYMBOL_server_do_not_query_localhost = 487, /* server_do_not_query_localhost */ - YYSYMBOL_server_access_control = 488, /* server_access_control */ - YYSYMBOL_server_module_conf = 489, /* server_module_conf */ - YYSYMBOL_server_val_override_date = 490, /* server_val_override_date */ - YYSYMBOL_server_val_sig_skew_min = 491, /* server_val_sig_skew_min */ - YYSYMBOL_server_val_sig_skew_max = 492, /* server_val_sig_skew_max */ - YYSYMBOL_server_val_max_restart = 493, /* server_val_max_restart */ - YYSYMBOL_server_cache_max_ttl = 494, /* server_cache_max_ttl */ - YYSYMBOL_server_cache_max_negative_ttl = 495, /* server_cache_max_negative_ttl */ - YYSYMBOL_server_cache_min_ttl = 496, /* server_cache_min_ttl */ - YYSYMBOL_server_bogus_ttl = 497, /* server_bogus_ttl */ - YYSYMBOL_server_val_clean_additional = 498, /* server_val_clean_additional */ - YYSYMBOL_server_val_permissive_mode = 499, /* server_val_permissive_mode */ - YYSYMBOL_server_aggressive_nsec = 500, /* server_aggressive_nsec */ - YYSYMBOL_server_ignore_cd_flag = 501, /* server_ignore_cd_flag */ - YYSYMBOL_server_serve_expired = 502, /* server_serve_expired */ - YYSYMBOL_server_serve_expired_ttl = 503, /* server_serve_expired_ttl */ - YYSYMBOL_server_serve_expired_ttl_reset = 504, /* server_serve_expired_ttl_reset */ - YYSYMBOL_server_serve_expired_reply_ttl = 505, /* server_serve_expired_reply_ttl */ - YYSYMBOL_server_serve_expired_client_timeout = 506, /* server_serve_expired_client_timeout */ - YYSYMBOL_server_serve_original_ttl = 507, /* server_serve_original_ttl */ - YYSYMBOL_server_fake_dsa = 508, /* server_fake_dsa */ - YYSYMBOL_server_fake_sha1 = 509, /* server_fake_sha1 */ - YYSYMBOL_server_val_log_level = 510, /* server_val_log_level */ - YYSYMBOL_server_val_nsec3_keysize_iterations = 511, /* server_val_nsec3_keysize_iterations */ - YYSYMBOL_server_zonemd_permissive_mode = 512, /* server_zonemd_permissive_mode */ - YYSYMBOL_server_add_holddown = 513, /* server_add_holddown */ - YYSYMBOL_server_del_holddown = 514, /* server_del_holddown */ - YYSYMBOL_server_keep_missing = 515, /* server_keep_missing */ - YYSYMBOL_server_permit_small_holddown = 516, /* server_permit_small_holddown */ - YYSYMBOL_server_key_cache_size = 517, /* server_key_cache_size */ - YYSYMBOL_server_key_cache_slabs = 518, /* server_key_cache_slabs */ - YYSYMBOL_server_neg_cache_size = 519, /* server_neg_cache_size */ - YYSYMBOL_server_local_zone = 520, /* server_local_zone */ - YYSYMBOL_server_local_data = 521, /* server_local_data */ - YYSYMBOL_server_local_data_ptr = 522, /* server_local_data_ptr */ - YYSYMBOL_server_minimal_responses = 523, /* server_minimal_responses */ - YYSYMBOL_server_rrset_roundrobin = 524, /* server_rrset_roundrobin */ - YYSYMBOL_server_unknown_server_time_limit = 525, /* server_unknown_server_time_limit */ - YYSYMBOL_server_max_udp_size = 526, /* server_max_udp_size */ - YYSYMBOL_server_dns64_prefix = 527, /* server_dns64_prefix */ - YYSYMBOL_server_dns64_synthall = 528, /* server_dns64_synthall */ - YYSYMBOL_server_dns64_ignore_aaaa = 529, /* server_dns64_ignore_aaaa */ - YYSYMBOL_server_define_tag = 530, /* server_define_tag */ - YYSYMBOL_server_local_zone_tag = 531, /* server_local_zone_tag */ - YYSYMBOL_server_access_control_tag = 532, /* server_access_control_tag */ - YYSYMBOL_server_access_control_tag_action = 533, /* server_access_control_tag_action */ - YYSYMBOL_server_access_control_tag_data = 534, /* server_access_control_tag_data */ - YYSYMBOL_server_local_zone_override = 535, /* server_local_zone_override */ - YYSYMBOL_server_access_control_view = 536, /* server_access_control_view */ - YYSYMBOL_server_response_ip_tag = 537, /* server_response_ip_tag */ - YYSYMBOL_server_ip_ratelimit = 538, /* server_ip_ratelimit */ - YYSYMBOL_server_ratelimit = 539, /* server_ratelimit */ - YYSYMBOL_server_ip_ratelimit_size = 540, /* server_ip_ratelimit_size */ - YYSYMBOL_server_ratelimit_size = 541, /* server_ratelimit_size */ - YYSYMBOL_server_ip_ratelimit_slabs = 542, /* server_ip_ratelimit_slabs */ - YYSYMBOL_server_ratelimit_slabs = 543, /* server_ratelimit_slabs */ - YYSYMBOL_server_ratelimit_for_domain = 544, /* server_ratelimit_for_domain */ - YYSYMBOL_server_ratelimit_below_domain = 545, /* server_ratelimit_below_domain */ - YYSYMBOL_server_ip_ratelimit_factor = 546, /* server_ip_ratelimit_factor */ - YYSYMBOL_server_ratelimit_factor = 547, /* server_ratelimit_factor */ - YYSYMBOL_server_ip_ratelimit_backoff = 548, /* server_ip_ratelimit_backoff */ - YYSYMBOL_server_ratelimit_backoff = 549, /* server_ratelimit_backoff */ - YYSYMBOL_server_outbound_msg_retry = 550, /* server_outbound_msg_retry */ - YYSYMBOL_server_low_rtt = 551, /* server_low_rtt */ - YYSYMBOL_server_fast_server_num = 552, /* server_fast_server_num */ - YYSYMBOL_server_fast_server_permil = 553, /* server_fast_server_permil */ - YYSYMBOL_server_qname_minimisation = 554, /* server_qname_minimisation */ - YYSYMBOL_server_qname_minimisation_strict = 555, /* server_qname_minimisation_strict */ - YYSYMBOL_server_pad_responses = 556, /* server_pad_responses */ - YYSYMBOL_server_pad_responses_block_size = 557, /* server_pad_responses_block_size */ - YYSYMBOL_server_pad_queries = 558, /* server_pad_queries */ - YYSYMBOL_server_pad_queries_block_size = 559, /* server_pad_queries_block_size */ - YYSYMBOL_server_ipsecmod_enabled = 560, /* server_ipsecmod_enabled */ - YYSYMBOL_server_ipsecmod_ignore_bogus = 561, /* server_ipsecmod_ignore_bogus */ - YYSYMBOL_server_ipsecmod_hook = 562, /* server_ipsecmod_hook */ - YYSYMBOL_server_ipsecmod_max_ttl = 563, /* server_ipsecmod_max_ttl */ - YYSYMBOL_server_ipsecmod_whitelist = 564, /* server_ipsecmod_whitelist */ - YYSYMBOL_server_ipsecmod_strict = 565, /* server_ipsecmod_strict */ - YYSYMBOL_server_edns_client_string = 566, /* server_edns_client_string */ - YYSYMBOL_server_edns_client_string_opcode = 567, /* server_edns_client_string_opcode */ - YYSYMBOL_stub_name = 568, /* stub_name */ - YYSYMBOL_stub_host = 569, /* stub_host */ - YYSYMBOL_stub_addr = 570, /* stub_addr */ - YYSYMBOL_stub_first = 571, /* stub_first */ - YYSYMBOL_stub_no_cache = 572, /* stub_no_cache */ - YYSYMBOL_stub_ssl_upstream = 573, /* stub_ssl_upstream */ - YYSYMBOL_stub_tcp_upstream = 574, /* stub_tcp_upstream */ - YYSYMBOL_stub_prime = 575, /* stub_prime */ - YYSYMBOL_forward_name = 576, /* forward_name */ - YYSYMBOL_forward_host = 577, /* forward_host */ - YYSYMBOL_forward_addr = 578, /* forward_addr */ - YYSYMBOL_forward_first = 579, /* forward_first */ - YYSYMBOL_forward_no_cache = 580, /* forward_no_cache */ - YYSYMBOL_forward_ssl_upstream = 581, /* forward_ssl_upstream */ - YYSYMBOL_forward_tcp_upstream = 582, /* forward_tcp_upstream */ - YYSYMBOL_auth_name = 583, /* auth_name */ - YYSYMBOL_auth_zonefile = 584, /* auth_zonefile */ - YYSYMBOL_auth_master = 585, /* auth_master */ - YYSYMBOL_auth_url = 586, /* auth_url */ - YYSYMBOL_auth_allow_notify = 587, /* auth_allow_notify */ - YYSYMBOL_auth_zonemd_check = 588, /* auth_zonemd_check */ - YYSYMBOL_auth_zonemd_reject_absence = 589, /* auth_zonemd_reject_absence */ - YYSYMBOL_auth_for_downstream = 590, /* auth_for_downstream */ - YYSYMBOL_auth_for_upstream = 591, /* auth_for_upstream */ - YYSYMBOL_auth_fallback_enabled = 592, /* auth_fallback_enabled */ - YYSYMBOL_view_name = 593, /* view_name */ - YYSYMBOL_view_local_zone = 594, /* view_local_zone */ - YYSYMBOL_view_response_ip = 595, /* view_response_ip */ - YYSYMBOL_view_response_ip_data = 596, /* view_response_ip_data */ - YYSYMBOL_view_local_data = 597, /* view_local_data */ - YYSYMBOL_view_local_data_ptr = 598, /* view_local_data_ptr */ - YYSYMBOL_view_first = 599, /* view_first */ - YYSYMBOL_rcstart = 600, /* rcstart */ - YYSYMBOL_contents_rc = 601, /* contents_rc */ - YYSYMBOL_content_rc = 602, /* content_rc */ - YYSYMBOL_rc_control_enable = 603, /* rc_control_enable */ - YYSYMBOL_rc_control_port = 604, /* rc_control_port */ - YYSYMBOL_rc_control_interface = 605, /* rc_control_interface */ - YYSYMBOL_rc_control_use_cert = 606, /* rc_control_use_cert */ - YYSYMBOL_rc_server_key_file = 607, /* rc_server_key_file */ - YYSYMBOL_rc_server_cert_file = 608, /* rc_server_cert_file */ - YYSYMBOL_rc_control_key_file = 609, /* rc_control_key_file */ - YYSYMBOL_rc_control_cert_file = 610, /* rc_control_cert_file */ - YYSYMBOL_dtstart = 611, /* dtstart */ - YYSYMBOL_contents_dt = 612, /* contents_dt */ - YYSYMBOL_content_dt = 613, /* content_dt */ - YYSYMBOL_dt_dnstap_enable = 614, /* dt_dnstap_enable */ - YYSYMBOL_dt_dnstap_bidirectional = 615, /* dt_dnstap_bidirectional */ - YYSYMBOL_dt_dnstap_socket_path = 616, /* dt_dnstap_socket_path */ - YYSYMBOL_dt_dnstap_ip = 617, /* dt_dnstap_ip */ - YYSYMBOL_dt_dnstap_tls = 618, /* dt_dnstap_tls */ - YYSYMBOL_dt_dnstap_tls_server_name = 619, /* dt_dnstap_tls_server_name */ - YYSYMBOL_dt_dnstap_tls_cert_bundle = 620, /* dt_dnstap_tls_cert_bundle */ - YYSYMBOL_dt_dnstap_tls_client_key_file = 621, /* dt_dnstap_tls_client_key_file */ - YYSYMBOL_dt_dnstap_tls_client_cert_file = 622, /* dt_dnstap_tls_client_cert_file */ - YYSYMBOL_dt_dnstap_send_identity = 623, /* dt_dnstap_send_identity */ - YYSYMBOL_dt_dnstap_send_version = 624, /* dt_dnstap_send_version */ - YYSYMBOL_dt_dnstap_identity = 625, /* dt_dnstap_identity */ - YYSYMBOL_dt_dnstap_version = 626, /* dt_dnstap_version */ - YYSYMBOL_dt_dnstap_log_resolver_query_messages = 627, /* dt_dnstap_log_resolver_query_messages */ - YYSYMBOL_dt_dnstap_log_resolver_response_messages = 628, /* dt_dnstap_log_resolver_response_messages */ - YYSYMBOL_dt_dnstap_log_client_query_messages = 629, /* dt_dnstap_log_client_query_messages */ - YYSYMBOL_dt_dnstap_log_client_response_messages = 630, /* dt_dnstap_log_client_response_messages */ - YYSYMBOL_dt_dnstap_log_forwarder_query_messages = 631, /* dt_dnstap_log_forwarder_query_messages */ - YYSYMBOL_dt_dnstap_log_forwarder_response_messages = 632, /* dt_dnstap_log_forwarder_response_messages */ - YYSYMBOL_pythonstart = 633, /* pythonstart */ - YYSYMBOL_contents_py = 634, /* contents_py */ - YYSYMBOL_content_py = 635, /* content_py */ - YYSYMBOL_py_script = 636, /* py_script */ - YYSYMBOL_dynlibstart = 637, /* dynlibstart */ - YYSYMBOL_contents_dl = 638, /* contents_dl */ - YYSYMBOL_content_dl = 639, /* content_dl */ - YYSYMBOL_dl_file = 640, /* dl_file */ - YYSYMBOL_server_disable_dnssec_lame_check = 641, /* server_disable_dnssec_lame_check */ - YYSYMBOL_server_log_identity = 642, /* server_log_identity */ - YYSYMBOL_server_response_ip = 643, /* server_response_ip */ - YYSYMBOL_server_response_ip_data = 644, /* server_response_ip_data */ - YYSYMBOL_dnscstart = 645, /* dnscstart */ - YYSYMBOL_contents_dnsc = 646, /* contents_dnsc */ - YYSYMBOL_content_dnsc = 647, /* content_dnsc */ - YYSYMBOL_dnsc_dnscrypt_enable = 648, /* dnsc_dnscrypt_enable */ - YYSYMBOL_dnsc_dnscrypt_port = 649, /* dnsc_dnscrypt_port */ - YYSYMBOL_dnsc_dnscrypt_provider = 650, /* dnsc_dnscrypt_provider */ - YYSYMBOL_dnsc_dnscrypt_provider_cert = 651, /* dnsc_dnscrypt_provider_cert */ - YYSYMBOL_dnsc_dnscrypt_provider_cert_rotated = 652, /* dnsc_dnscrypt_provider_cert_rotated */ - YYSYMBOL_dnsc_dnscrypt_secret_key = 653, /* dnsc_dnscrypt_secret_key */ - YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_size = 654, /* dnsc_dnscrypt_shared_secret_cache_size */ - YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_slabs = 655, /* dnsc_dnscrypt_shared_secret_cache_slabs */ - YYSYMBOL_dnsc_dnscrypt_nonce_cache_size = 656, /* dnsc_dnscrypt_nonce_cache_size */ - YYSYMBOL_dnsc_dnscrypt_nonce_cache_slabs = 657, /* dnsc_dnscrypt_nonce_cache_slabs */ - YYSYMBOL_cachedbstart = 658, /* cachedbstart */ - YYSYMBOL_contents_cachedb = 659, /* contents_cachedb */ - YYSYMBOL_content_cachedb = 660, /* content_cachedb */ - YYSYMBOL_cachedb_backend_name = 661, /* cachedb_backend_name */ - YYSYMBOL_cachedb_secret_seed = 662, /* cachedb_secret_seed */ - YYSYMBOL_redis_server_host = 663, /* redis_server_host */ - YYSYMBOL_redis_server_port = 664, /* redis_server_port */ - YYSYMBOL_redis_timeout = 665, /* redis_timeout */ - YYSYMBOL_redis_expire_records = 666, /* redis_expire_records */ - YYSYMBOL_server_tcp_connection_limit = 667, /* server_tcp_connection_limit */ - YYSYMBOL_ipsetstart = 668, /* ipsetstart */ - YYSYMBOL_contents_ipset = 669, /* contents_ipset */ - YYSYMBOL_content_ipset = 670, /* content_ipset */ - YYSYMBOL_ipset_name_v4 = 671, /* ipset_name_v4 */ - YYSYMBOL_ipset_name_v6 = 672 /* ipset_name_v6 */ + YYSYMBOL_VAR_INTERFACE_AUTOMATIC_PORTS = 324, /* VAR_INTERFACE_AUTOMATIC_PORTS */ + YYSYMBOL_YYACCEPT = 325, /* $accept */ + YYSYMBOL_toplevelvars = 326, /* toplevelvars */ + YYSYMBOL_toplevelvar = 327, /* toplevelvar */ + YYSYMBOL_force_toplevel = 328, /* force_toplevel */ + YYSYMBOL_serverstart = 329, /* serverstart */ + YYSYMBOL_contents_server = 330, /* contents_server */ + YYSYMBOL_content_server = 331, /* content_server */ + YYSYMBOL_stubstart = 332, /* stubstart */ + YYSYMBOL_contents_stub = 333, /* contents_stub */ + YYSYMBOL_content_stub = 334, /* content_stub */ + YYSYMBOL_forwardstart = 335, /* forwardstart */ + YYSYMBOL_contents_forward = 336, /* contents_forward */ + YYSYMBOL_content_forward = 337, /* content_forward */ + YYSYMBOL_viewstart = 338, /* viewstart */ + YYSYMBOL_contents_view = 339, /* contents_view */ + YYSYMBOL_content_view = 340, /* content_view */ + YYSYMBOL_authstart = 341, /* authstart */ + YYSYMBOL_contents_auth = 342, /* contents_auth */ + YYSYMBOL_content_auth = 343, /* content_auth */ + YYSYMBOL_rpz_tag = 344, /* rpz_tag */ + YYSYMBOL_rpz_action_override = 345, /* rpz_action_override */ + YYSYMBOL_rpz_cname_override = 346, /* rpz_cname_override */ + YYSYMBOL_rpz_log = 347, /* rpz_log */ + YYSYMBOL_rpz_log_name = 348, /* rpz_log_name */ + YYSYMBOL_rpz_signal_nxdomain_ra = 349, /* rpz_signal_nxdomain_ra */ + YYSYMBOL_rpzstart = 350, /* rpzstart */ + YYSYMBOL_contents_rpz = 351, /* contents_rpz */ + YYSYMBOL_content_rpz = 352, /* content_rpz */ + YYSYMBOL_server_num_threads = 353, /* server_num_threads */ + YYSYMBOL_server_verbosity = 354, /* server_verbosity */ + YYSYMBOL_server_statistics_interval = 355, /* server_statistics_interval */ + YYSYMBOL_server_statistics_cumulative = 356, /* server_statistics_cumulative */ + YYSYMBOL_server_extended_statistics = 357, /* server_extended_statistics */ + YYSYMBOL_server_shm_enable = 358, /* server_shm_enable */ + YYSYMBOL_server_shm_key = 359, /* server_shm_key */ + YYSYMBOL_server_port = 360, /* server_port */ + YYSYMBOL_server_send_client_subnet = 361, /* server_send_client_subnet */ + YYSYMBOL_server_client_subnet_zone = 362, /* server_client_subnet_zone */ + YYSYMBOL_server_client_subnet_always_forward = 363, /* server_client_subnet_always_forward */ + YYSYMBOL_server_client_subnet_opcode = 364, /* server_client_subnet_opcode */ + YYSYMBOL_server_max_client_subnet_ipv4 = 365, /* server_max_client_subnet_ipv4 */ + YYSYMBOL_server_max_client_subnet_ipv6 = 366, /* server_max_client_subnet_ipv6 */ + YYSYMBOL_server_min_client_subnet_ipv4 = 367, /* server_min_client_subnet_ipv4 */ + YYSYMBOL_server_min_client_subnet_ipv6 = 368, /* server_min_client_subnet_ipv6 */ + YYSYMBOL_server_max_ecs_tree_size_ipv4 = 369, /* server_max_ecs_tree_size_ipv4 */ + YYSYMBOL_server_max_ecs_tree_size_ipv6 = 370, /* server_max_ecs_tree_size_ipv6 */ + YYSYMBOL_server_interface = 371, /* server_interface */ + YYSYMBOL_server_outgoing_interface = 372, /* server_outgoing_interface */ + YYSYMBOL_server_outgoing_range = 373, /* server_outgoing_range */ + YYSYMBOL_server_outgoing_port_permit = 374, /* server_outgoing_port_permit */ + YYSYMBOL_server_outgoing_port_avoid = 375, /* server_outgoing_port_avoid */ + YYSYMBOL_server_outgoing_num_tcp = 376, /* server_outgoing_num_tcp */ + YYSYMBOL_server_incoming_num_tcp = 377, /* server_incoming_num_tcp */ + YYSYMBOL_server_interface_automatic = 378, /* server_interface_automatic */ + YYSYMBOL_server_interface_automatic_ports = 379, /* server_interface_automatic_ports */ + YYSYMBOL_server_do_ip4 = 380, /* server_do_ip4 */ + YYSYMBOL_server_do_ip6 = 381, /* server_do_ip6 */ + YYSYMBOL_server_do_udp = 382, /* server_do_udp */ + YYSYMBOL_server_do_tcp = 383, /* server_do_tcp */ + YYSYMBOL_server_prefer_ip4 = 384, /* server_prefer_ip4 */ + YYSYMBOL_server_prefer_ip6 = 385, /* server_prefer_ip6 */ + YYSYMBOL_server_tcp_mss = 386, /* server_tcp_mss */ + YYSYMBOL_server_outgoing_tcp_mss = 387, /* server_outgoing_tcp_mss */ + YYSYMBOL_server_tcp_idle_timeout = 388, /* server_tcp_idle_timeout */ + YYSYMBOL_server_max_reuse_tcp_queries = 389, /* server_max_reuse_tcp_queries */ + YYSYMBOL_server_tcp_reuse_timeout = 390, /* server_tcp_reuse_timeout */ + YYSYMBOL_server_tcp_auth_query_timeout = 391, /* server_tcp_auth_query_timeout */ + YYSYMBOL_server_tcp_keepalive = 392, /* server_tcp_keepalive */ + YYSYMBOL_server_tcp_keepalive_timeout = 393, /* server_tcp_keepalive_timeout */ + YYSYMBOL_server_tcp_upstream = 394, /* server_tcp_upstream */ + YYSYMBOL_server_udp_upstream_without_downstream = 395, /* server_udp_upstream_without_downstream */ + YYSYMBOL_server_ssl_upstream = 396, /* server_ssl_upstream */ + YYSYMBOL_server_ssl_service_key = 397, /* server_ssl_service_key */ + YYSYMBOL_server_ssl_service_pem = 398, /* server_ssl_service_pem */ + YYSYMBOL_server_ssl_port = 399, /* server_ssl_port */ + YYSYMBOL_server_tls_cert_bundle = 400, /* server_tls_cert_bundle */ + YYSYMBOL_server_tls_win_cert = 401, /* server_tls_win_cert */ + YYSYMBOL_server_tls_additional_port = 402, /* server_tls_additional_port */ + YYSYMBOL_server_tls_ciphers = 403, /* server_tls_ciphers */ + YYSYMBOL_server_tls_ciphersuites = 404, /* server_tls_ciphersuites */ + YYSYMBOL_server_tls_session_ticket_keys = 405, /* server_tls_session_ticket_keys */ + YYSYMBOL_server_tls_use_sni = 406, /* server_tls_use_sni */ + YYSYMBOL_server_https_port = 407, /* server_https_port */ + YYSYMBOL_server_http_endpoint = 408, /* server_http_endpoint */ + YYSYMBOL_server_http_max_streams = 409, /* server_http_max_streams */ + YYSYMBOL_server_http_query_buffer_size = 410, /* server_http_query_buffer_size */ + YYSYMBOL_server_http_response_buffer_size = 411, /* server_http_response_buffer_size */ + YYSYMBOL_server_http_nodelay = 412, /* server_http_nodelay */ + YYSYMBOL_server_http_notls_downstream = 413, /* server_http_notls_downstream */ + YYSYMBOL_server_use_systemd = 414, /* server_use_systemd */ + YYSYMBOL_server_do_daemonize = 415, /* server_do_daemonize */ + YYSYMBOL_server_use_syslog = 416, /* server_use_syslog */ + YYSYMBOL_server_log_time_ascii = 417, /* server_log_time_ascii */ + YYSYMBOL_server_log_queries = 418, /* server_log_queries */ + YYSYMBOL_server_log_replies = 419, /* server_log_replies */ + YYSYMBOL_server_log_tag_queryreply = 420, /* server_log_tag_queryreply */ + YYSYMBOL_server_log_servfail = 421, /* server_log_servfail */ + YYSYMBOL_server_log_local_actions = 422, /* server_log_local_actions */ + YYSYMBOL_server_chroot = 423, /* server_chroot */ + YYSYMBOL_server_username = 424, /* server_username */ + YYSYMBOL_server_directory = 425, /* server_directory */ + YYSYMBOL_server_logfile = 426, /* server_logfile */ + YYSYMBOL_server_pidfile = 427, /* server_pidfile */ + YYSYMBOL_server_root_hints = 428, /* server_root_hints */ + YYSYMBOL_server_dlv_anchor_file = 429, /* server_dlv_anchor_file */ + YYSYMBOL_server_dlv_anchor = 430, /* server_dlv_anchor */ + YYSYMBOL_server_auto_trust_anchor_file = 431, /* server_auto_trust_anchor_file */ + YYSYMBOL_server_trust_anchor_file = 432, /* server_trust_anchor_file */ + YYSYMBOL_server_trusted_keys_file = 433, /* server_trusted_keys_file */ + YYSYMBOL_server_trust_anchor = 434, /* server_trust_anchor */ + YYSYMBOL_server_trust_anchor_signaling = 435, /* server_trust_anchor_signaling */ + YYSYMBOL_server_root_key_sentinel = 436, /* server_root_key_sentinel */ + YYSYMBOL_server_domain_insecure = 437, /* server_domain_insecure */ + YYSYMBOL_server_hide_identity = 438, /* server_hide_identity */ + YYSYMBOL_server_hide_version = 439, /* server_hide_version */ + YYSYMBOL_server_hide_trustanchor = 440, /* server_hide_trustanchor */ + YYSYMBOL_server_hide_http_user_agent = 441, /* server_hide_http_user_agent */ + YYSYMBOL_server_identity = 442, /* server_identity */ + YYSYMBOL_server_version = 443, /* server_version */ + YYSYMBOL_server_http_user_agent = 444, /* server_http_user_agent */ + YYSYMBOL_server_nsid = 445, /* server_nsid */ + YYSYMBOL_server_so_rcvbuf = 446, /* server_so_rcvbuf */ + YYSYMBOL_server_so_sndbuf = 447, /* server_so_sndbuf */ + YYSYMBOL_server_so_reuseport = 448, /* server_so_reuseport */ + YYSYMBOL_server_ip_transparent = 449, /* server_ip_transparent */ + YYSYMBOL_server_ip_freebind = 450, /* server_ip_freebind */ + YYSYMBOL_server_ip_dscp = 451, /* server_ip_dscp */ + YYSYMBOL_server_stream_wait_size = 452, /* server_stream_wait_size */ + YYSYMBOL_server_edns_buffer_size = 453, /* server_edns_buffer_size */ + YYSYMBOL_server_msg_buffer_size = 454, /* server_msg_buffer_size */ + YYSYMBOL_server_msg_cache_size = 455, /* server_msg_cache_size */ + YYSYMBOL_server_msg_cache_slabs = 456, /* server_msg_cache_slabs */ + YYSYMBOL_server_num_queries_per_thread = 457, /* server_num_queries_per_thread */ + YYSYMBOL_server_jostle_timeout = 458, /* server_jostle_timeout */ + YYSYMBOL_server_delay_close = 459, /* server_delay_close */ + YYSYMBOL_server_udp_connect = 460, /* server_udp_connect */ + YYSYMBOL_server_unblock_lan_zones = 461, /* server_unblock_lan_zones */ + YYSYMBOL_server_insecure_lan_zones = 462, /* server_insecure_lan_zones */ + YYSYMBOL_server_rrset_cache_size = 463, /* server_rrset_cache_size */ + YYSYMBOL_server_rrset_cache_slabs = 464, /* server_rrset_cache_slabs */ + YYSYMBOL_server_infra_host_ttl = 465, /* server_infra_host_ttl */ + YYSYMBOL_server_infra_lame_ttl = 466, /* server_infra_lame_ttl */ + YYSYMBOL_server_infra_cache_numhosts = 467, /* server_infra_cache_numhosts */ + YYSYMBOL_server_infra_cache_lame_size = 468, /* server_infra_cache_lame_size */ + YYSYMBOL_server_infra_cache_slabs = 469, /* server_infra_cache_slabs */ + YYSYMBOL_server_infra_cache_min_rtt = 470, /* server_infra_cache_min_rtt */ + YYSYMBOL_server_infra_keep_probing = 471, /* server_infra_keep_probing */ + YYSYMBOL_server_target_fetch_policy = 472, /* server_target_fetch_policy */ + YYSYMBOL_server_harden_short_bufsize = 473, /* server_harden_short_bufsize */ + YYSYMBOL_server_harden_large_queries = 474, /* server_harden_large_queries */ + YYSYMBOL_server_harden_glue = 475, /* server_harden_glue */ + YYSYMBOL_server_harden_dnssec_stripped = 476, /* server_harden_dnssec_stripped */ + YYSYMBOL_server_harden_below_nxdomain = 477, /* server_harden_below_nxdomain */ + YYSYMBOL_server_harden_referral_path = 478, /* server_harden_referral_path */ + YYSYMBOL_server_harden_algo_downgrade = 479, /* server_harden_algo_downgrade */ + YYSYMBOL_server_use_caps_for_id = 480, /* server_use_caps_for_id */ + YYSYMBOL_server_caps_whitelist = 481, /* server_caps_whitelist */ + YYSYMBOL_server_private_address = 482, /* server_private_address */ + YYSYMBOL_server_private_domain = 483, /* server_private_domain */ + YYSYMBOL_server_prefetch = 484, /* server_prefetch */ + YYSYMBOL_server_prefetch_key = 485, /* server_prefetch_key */ + YYSYMBOL_server_deny_any = 486, /* server_deny_any */ + YYSYMBOL_server_unwanted_reply_threshold = 487, /* server_unwanted_reply_threshold */ + YYSYMBOL_server_do_not_query_address = 488, /* server_do_not_query_address */ + YYSYMBOL_server_do_not_query_localhost = 489, /* server_do_not_query_localhost */ + YYSYMBOL_server_access_control = 490, /* server_access_control */ + YYSYMBOL_server_module_conf = 491, /* server_module_conf */ + YYSYMBOL_server_val_override_date = 492, /* server_val_override_date */ + YYSYMBOL_server_val_sig_skew_min = 493, /* server_val_sig_skew_min */ + YYSYMBOL_server_val_sig_skew_max = 494, /* server_val_sig_skew_max */ + YYSYMBOL_server_val_max_restart = 495, /* server_val_max_restart */ + YYSYMBOL_server_cache_max_ttl = 496, /* server_cache_max_ttl */ + YYSYMBOL_server_cache_max_negative_ttl = 497, /* server_cache_max_negative_ttl */ + YYSYMBOL_server_cache_min_ttl = 498, /* server_cache_min_ttl */ + YYSYMBOL_server_bogus_ttl = 499, /* server_bogus_ttl */ + YYSYMBOL_server_val_clean_additional = 500, /* server_val_clean_additional */ + YYSYMBOL_server_val_permissive_mode = 501, /* server_val_permissive_mode */ + YYSYMBOL_server_aggressive_nsec = 502, /* server_aggressive_nsec */ + YYSYMBOL_server_ignore_cd_flag = 503, /* server_ignore_cd_flag */ + YYSYMBOL_server_serve_expired = 504, /* server_serve_expired */ + YYSYMBOL_server_serve_expired_ttl = 505, /* server_serve_expired_ttl */ + YYSYMBOL_server_serve_expired_ttl_reset = 506, /* server_serve_expired_ttl_reset */ + YYSYMBOL_server_serve_expired_reply_ttl = 507, /* server_serve_expired_reply_ttl */ + YYSYMBOL_server_serve_expired_client_timeout = 508, /* server_serve_expired_client_timeout */ + YYSYMBOL_server_serve_original_ttl = 509, /* server_serve_original_ttl */ + YYSYMBOL_server_fake_dsa = 510, /* server_fake_dsa */ + YYSYMBOL_server_fake_sha1 = 511, /* server_fake_sha1 */ + YYSYMBOL_server_val_log_level = 512, /* server_val_log_level */ + YYSYMBOL_server_val_nsec3_keysize_iterations = 513, /* server_val_nsec3_keysize_iterations */ + YYSYMBOL_server_zonemd_permissive_mode = 514, /* server_zonemd_permissive_mode */ + YYSYMBOL_server_add_holddown = 515, /* server_add_holddown */ + YYSYMBOL_server_del_holddown = 516, /* server_del_holddown */ + YYSYMBOL_server_keep_missing = 517, /* server_keep_missing */ + YYSYMBOL_server_permit_small_holddown = 518, /* server_permit_small_holddown */ + YYSYMBOL_server_key_cache_size = 519, /* server_key_cache_size */ + YYSYMBOL_server_key_cache_slabs = 520, /* server_key_cache_slabs */ + YYSYMBOL_server_neg_cache_size = 521, /* server_neg_cache_size */ + YYSYMBOL_server_local_zone = 522, /* server_local_zone */ + YYSYMBOL_server_local_data = 523, /* server_local_data */ + YYSYMBOL_server_local_data_ptr = 524, /* server_local_data_ptr */ + YYSYMBOL_server_minimal_responses = 525, /* server_minimal_responses */ + YYSYMBOL_server_rrset_roundrobin = 526, /* server_rrset_roundrobin */ + YYSYMBOL_server_unknown_server_time_limit = 527, /* server_unknown_server_time_limit */ + YYSYMBOL_server_max_udp_size = 528, /* server_max_udp_size */ + YYSYMBOL_server_dns64_prefix = 529, /* server_dns64_prefix */ + YYSYMBOL_server_dns64_synthall = 530, /* server_dns64_synthall */ + YYSYMBOL_server_dns64_ignore_aaaa = 531, /* server_dns64_ignore_aaaa */ + YYSYMBOL_server_define_tag = 532, /* server_define_tag */ + YYSYMBOL_server_local_zone_tag = 533, /* server_local_zone_tag */ + YYSYMBOL_server_access_control_tag = 534, /* server_access_control_tag */ + YYSYMBOL_server_access_control_tag_action = 535, /* server_access_control_tag_action */ + YYSYMBOL_server_access_control_tag_data = 536, /* server_access_control_tag_data */ + YYSYMBOL_server_local_zone_override = 537, /* server_local_zone_override */ + YYSYMBOL_server_access_control_view = 538, /* server_access_control_view */ + YYSYMBOL_server_response_ip_tag = 539, /* server_response_ip_tag */ + YYSYMBOL_server_ip_ratelimit = 540, /* server_ip_ratelimit */ + YYSYMBOL_server_ratelimit = 541, /* server_ratelimit */ + YYSYMBOL_server_ip_ratelimit_size = 542, /* server_ip_ratelimit_size */ + YYSYMBOL_server_ratelimit_size = 543, /* server_ratelimit_size */ + YYSYMBOL_server_ip_ratelimit_slabs = 544, /* server_ip_ratelimit_slabs */ + YYSYMBOL_server_ratelimit_slabs = 545, /* server_ratelimit_slabs */ + YYSYMBOL_server_ratelimit_for_domain = 546, /* server_ratelimit_for_domain */ + YYSYMBOL_server_ratelimit_below_domain = 547, /* server_ratelimit_below_domain */ + YYSYMBOL_server_ip_ratelimit_factor = 548, /* server_ip_ratelimit_factor */ + YYSYMBOL_server_ratelimit_factor = 549, /* server_ratelimit_factor */ + YYSYMBOL_server_ip_ratelimit_backoff = 550, /* server_ip_ratelimit_backoff */ + YYSYMBOL_server_ratelimit_backoff = 551, /* server_ratelimit_backoff */ + YYSYMBOL_server_outbound_msg_retry = 552, /* server_outbound_msg_retry */ + YYSYMBOL_server_low_rtt = 553, /* server_low_rtt */ + YYSYMBOL_server_fast_server_num = 554, /* server_fast_server_num */ + YYSYMBOL_server_fast_server_permil = 555, /* server_fast_server_permil */ + YYSYMBOL_server_qname_minimisation = 556, /* server_qname_minimisation */ + YYSYMBOL_server_qname_minimisation_strict = 557, /* server_qname_minimisation_strict */ + YYSYMBOL_server_pad_responses = 558, /* server_pad_responses */ + YYSYMBOL_server_pad_responses_block_size = 559, /* server_pad_responses_block_size */ + YYSYMBOL_server_pad_queries = 560, /* server_pad_queries */ + YYSYMBOL_server_pad_queries_block_size = 561, /* server_pad_queries_block_size */ + YYSYMBOL_server_ipsecmod_enabled = 562, /* server_ipsecmod_enabled */ + YYSYMBOL_server_ipsecmod_ignore_bogus = 563, /* server_ipsecmod_ignore_bogus */ + YYSYMBOL_server_ipsecmod_hook = 564, /* server_ipsecmod_hook */ + YYSYMBOL_server_ipsecmod_max_ttl = 565, /* server_ipsecmod_max_ttl */ + YYSYMBOL_server_ipsecmod_whitelist = 566, /* server_ipsecmod_whitelist */ + YYSYMBOL_server_ipsecmod_strict = 567, /* server_ipsecmod_strict */ + YYSYMBOL_server_edns_client_string = 568, /* server_edns_client_string */ + YYSYMBOL_server_edns_client_string_opcode = 569, /* server_edns_client_string_opcode */ + YYSYMBOL_stub_name = 570, /* stub_name */ + YYSYMBOL_stub_host = 571, /* stub_host */ + YYSYMBOL_stub_addr = 572, /* stub_addr */ + YYSYMBOL_stub_first = 573, /* stub_first */ + YYSYMBOL_stub_no_cache = 574, /* stub_no_cache */ + YYSYMBOL_stub_ssl_upstream = 575, /* stub_ssl_upstream */ + YYSYMBOL_stub_tcp_upstream = 576, /* stub_tcp_upstream */ + YYSYMBOL_stub_prime = 577, /* stub_prime */ + YYSYMBOL_forward_name = 578, /* forward_name */ + YYSYMBOL_forward_host = 579, /* forward_host */ + YYSYMBOL_forward_addr = 580, /* forward_addr */ + YYSYMBOL_forward_first = 581, /* forward_first */ + YYSYMBOL_forward_no_cache = 582, /* forward_no_cache */ + YYSYMBOL_forward_ssl_upstream = 583, /* forward_ssl_upstream */ + YYSYMBOL_forward_tcp_upstream = 584, /* forward_tcp_upstream */ + YYSYMBOL_auth_name = 585, /* auth_name */ + YYSYMBOL_auth_zonefile = 586, /* auth_zonefile */ + YYSYMBOL_auth_master = 587, /* auth_master */ + YYSYMBOL_auth_url = 588, /* auth_url */ + YYSYMBOL_auth_allow_notify = 589, /* auth_allow_notify */ + YYSYMBOL_auth_zonemd_check = 590, /* auth_zonemd_check */ + YYSYMBOL_auth_zonemd_reject_absence = 591, /* auth_zonemd_reject_absence */ + YYSYMBOL_auth_for_downstream = 592, /* auth_for_downstream */ + YYSYMBOL_auth_for_upstream = 593, /* auth_for_upstream */ + YYSYMBOL_auth_fallback_enabled = 594, /* auth_fallback_enabled */ + YYSYMBOL_view_name = 595, /* view_name */ + YYSYMBOL_view_local_zone = 596, /* view_local_zone */ + YYSYMBOL_view_response_ip = 597, /* view_response_ip */ + YYSYMBOL_view_response_ip_data = 598, /* view_response_ip_data */ + YYSYMBOL_view_local_data = 599, /* view_local_data */ + YYSYMBOL_view_local_data_ptr = 600, /* view_local_data_ptr */ + YYSYMBOL_view_first = 601, /* view_first */ + YYSYMBOL_rcstart = 602, /* rcstart */ + YYSYMBOL_contents_rc = 603, /* contents_rc */ + YYSYMBOL_content_rc = 604, /* content_rc */ + YYSYMBOL_rc_control_enable = 605, /* rc_control_enable */ + YYSYMBOL_rc_control_port = 606, /* rc_control_port */ + YYSYMBOL_rc_control_interface = 607, /* rc_control_interface */ + YYSYMBOL_rc_control_use_cert = 608, /* rc_control_use_cert */ + YYSYMBOL_rc_server_key_file = 609, /* rc_server_key_file */ + YYSYMBOL_rc_server_cert_file = 610, /* rc_server_cert_file */ + YYSYMBOL_rc_control_key_file = 611, /* rc_control_key_file */ + YYSYMBOL_rc_control_cert_file = 612, /* rc_control_cert_file */ + YYSYMBOL_dtstart = 613, /* dtstart */ + YYSYMBOL_contents_dt = 614, /* contents_dt */ + YYSYMBOL_content_dt = 615, /* content_dt */ + YYSYMBOL_dt_dnstap_enable = 616, /* dt_dnstap_enable */ + YYSYMBOL_dt_dnstap_bidirectional = 617, /* dt_dnstap_bidirectional */ + YYSYMBOL_dt_dnstap_socket_path = 618, /* dt_dnstap_socket_path */ + YYSYMBOL_dt_dnstap_ip = 619, /* dt_dnstap_ip */ + YYSYMBOL_dt_dnstap_tls = 620, /* dt_dnstap_tls */ + YYSYMBOL_dt_dnstap_tls_server_name = 621, /* dt_dnstap_tls_server_name */ + YYSYMBOL_dt_dnstap_tls_cert_bundle = 622, /* dt_dnstap_tls_cert_bundle */ + YYSYMBOL_dt_dnstap_tls_client_key_file = 623, /* dt_dnstap_tls_client_key_file */ + YYSYMBOL_dt_dnstap_tls_client_cert_file = 624, /* dt_dnstap_tls_client_cert_file */ + YYSYMBOL_dt_dnstap_send_identity = 625, /* dt_dnstap_send_identity */ + YYSYMBOL_dt_dnstap_send_version = 626, /* dt_dnstap_send_version */ + YYSYMBOL_dt_dnstap_identity = 627, /* dt_dnstap_identity */ + YYSYMBOL_dt_dnstap_version = 628, /* dt_dnstap_version */ + YYSYMBOL_dt_dnstap_log_resolver_query_messages = 629, /* dt_dnstap_log_resolver_query_messages */ + YYSYMBOL_dt_dnstap_log_resolver_response_messages = 630, /* dt_dnstap_log_resolver_response_messages */ + YYSYMBOL_dt_dnstap_log_client_query_messages = 631, /* dt_dnstap_log_client_query_messages */ + YYSYMBOL_dt_dnstap_log_client_response_messages = 632, /* dt_dnstap_log_client_response_messages */ + YYSYMBOL_dt_dnstap_log_forwarder_query_messages = 633, /* dt_dnstap_log_forwarder_query_messages */ + YYSYMBOL_dt_dnstap_log_forwarder_response_messages = 634, /* dt_dnstap_log_forwarder_response_messages */ + YYSYMBOL_pythonstart = 635, /* pythonstart */ + YYSYMBOL_contents_py = 636, /* contents_py */ + YYSYMBOL_content_py = 637, /* content_py */ + YYSYMBOL_py_script = 638, /* py_script */ + YYSYMBOL_dynlibstart = 639, /* dynlibstart */ + YYSYMBOL_contents_dl = 640, /* contents_dl */ + YYSYMBOL_content_dl = 641, /* content_dl */ + YYSYMBOL_dl_file = 642, /* dl_file */ + YYSYMBOL_server_disable_dnssec_lame_check = 643, /* server_disable_dnssec_lame_check */ + YYSYMBOL_server_log_identity = 644, /* server_log_identity */ + YYSYMBOL_server_response_ip = 645, /* server_response_ip */ + YYSYMBOL_server_response_ip_data = 646, /* server_response_ip_data */ + YYSYMBOL_dnscstart = 647, /* dnscstart */ + YYSYMBOL_contents_dnsc = 648, /* contents_dnsc */ + YYSYMBOL_content_dnsc = 649, /* content_dnsc */ + YYSYMBOL_dnsc_dnscrypt_enable = 650, /* dnsc_dnscrypt_enable */ + YYSYMBOL_dnsc_dnscrypt_port = 651, /* dnsc_dnscrypt_port */ + YYSYMBOL_dnsc_dnscrypt_provider = 652, /* dnsc_dnscrypt_provider */ + YYSYMBOL_dnsc_dnscrypt_provider_cert = 653, /* dnsc_dnscrypt_provider_cert */ + YYSYMBOL_dnsc_dnscrypt_provider_cert_rotated = 654, /* dnsc_dnscrypt_provider_cert_rotated */ + YYSYMBOL_dnsc_dnscrypt_secret_key = 655, /* dnsc_dnscrypt_secret_key */ + YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_size = 656, /* dnsc_dnscrypt_shared_secret_cache_size */ + YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_slabs = 657, /* dnsc_dnscrypt_shared_secret_cache_slabs */ + YYSYMBOL_dnsc_dnscrypt_nonce_cache_size = 658, /* dnsc_dnscrypt_nonce_cache_size */ + YYSYMBOL_dnsc_dnscrypt_nonce_cache_slabs = 659, /* dnsc_dnscrypt_nonce_cache_slabs */ + YYSYMBOL_cachedbstart = 660, /* cachedbstart */ + YYSYMBOL_contents_cachedb = 661, /* contents_cachedb */ + YYSYMBOL_content_cachedb = 662, /* content_cachedb */ + YYSYMBOL_cachedb_backend_name = 663, /* cachedb_backend_name */ + YYSYMBOL_cachedb_secret_seed = 664, /* cachedb_secret_seed */ + YYSYMBOL_redis_server_host = 665, /* redis_server_host */ + YYSYMBOL_redis_server_port = 666, /* redis_server_port */ + YYSYMBOL_redis_timeout = 667, /* redis_timeout */ + YYSYMBOL_redis_expire_records = 668, /* redis_expire_records */ + YYSYMBOL_server_tcp_connection_limit = 669, /* server_tcp_connection_limit */ + YYSYMBOL_ipsetstart = 670, /* ipsetstart */ + YYSYMBOL_contents_ipset = 671, /* contents_ipset */ + YYSYMBOL_content_ipset = 672, /* content_ipset */ + YYSYMBOL_ipset_name_v4 = 673, /* ipset_name_v4 */ + YYSYMBOL_ipset_name_v6 = 674 /* ipset_name_v6 */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; @@ -840,18 +1536,6 @@ typedef int_least16_t yytype_int16; typedef short yytype_int16; #endif -/* Work around bug in HP-UX 11.23, which defines these macros - incorrectly for preprocessor constants. This workaround can likely - be removed in 2023, as HPE has promised support for HP-UX 11.23 - (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of - . */ -#ifdef __hpux -# undef UINT_LEAST8_MAX -# undef UINT_LEAST16_MAX -# define UINT_LEAST8_MAX 255 -# define UINT_LEAST16_MAX 65535 -#endif - #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ typedef __UINT_LEAST8_TYPE__ yytype_uint8; #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ @@ -949,9 +1633,9 @@ typedef int yy_state_fast_t; /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ -# define YY_USE(E) ((void) (E)) +# define YYUSE(E) ((void) (E)) #else -# define YY_USE(E) /* empty */ +# define YYUSE(E) /* empty */ #endif #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ @@ -1118,19 +1802,18 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 687 +#define YYLAST 689 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 324 +#define YYNTOKENS 325 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 349 +#define YYNNTS 350 /* YYNRULES -- Number of rules. */ -#define YYNRULES 675 +#define YYNRULES 677 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 1003 +#define YYNSTATES 1006 -/* YYMAXUTOK -- Last valid token kind. */ -#define YYMAXUTOK 578 +#define YYMAXUTOK 579 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM @@ -1201,7 +1884,7 @@ static const yytype_int16 yytranslate[] = 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323 + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324 }; #if YYDEBUG @@ -1232,50 +1915,50 @@ static const yytype_int16 yyrline[] = 299, 300, 301, 301, 302, 302, 303, 303, 304, 304, 305, 305, 305, 306, 306, 306, 307, 307, 307, 308, 308, 309, 309, 310, 310, 311, 311, 312, 312, 313, - 313, 314, 314, 317, 330, 331, 332, 332, 332, 332, - 332, 333, 333, 333, 335, 348, 349, 350, 350, 350, - 350, 351, 351, 351, 353, 368, 369, 370, 370, 370, - 370, 371, 371, 371, 373, 393, 394, 395, 395, 395, - 395, 396, 396, 396, 397, 397, 397, 400, 419, 436, - 444, 454, 461, 471, 489, 490, 491, 491, 491, 491, - 491, 492, 492, 492, 493, 493, 493, 493, 495, 504, - 513, 524, 533, 542, 551, 562, 571, 583, 597, 612, - 623, 640, 657, 674, 691, 706, 721, 734, 749, 758, - 767, 776, 785, 794, 803, 812, 821, 830, 839, 848, - 857, 866, 875, 888, 899, 910, 921, 930, 943, 952, - 961, 970, 977, 984, 993, 1000, 1009, 1017, 1024, 1031, - 1039, 1048, 1056, 1072, 1080, 1088, 1096, 1104, 1112, 1121, - 1130, 1144, 1153, 1162, 1171, 1180, 1189, 1198, 1205, 1212, - 1238, 1246, 1253, 1260, 1267, 1274, 1282, 1290, 1298, 1305, - 1316, 1327, 1334, 1343, 1352, 1361, 1370, 1377, 1384, 1391, - 1407, 1415, 1423, 1433, 1443, 1453, 1467, 1475, 1488, 1499, - 1507, 1520, 1529, 1538, 1547, 1556, 1566, 1576, 1584, 1597, - 1606, 1614, 1623, 1631, 1644, 1653, 1663, 1670, 1680, 1690, - 1700, 1710, 1720, 1730, 1740, 1750, 1757, 1764, 1771, 1780, - 1789, 1798, 1807, 1814, 1824, 1844, 1851, 1869, 1882, 1895, - 1908, 1917, 1926, 1935, 1944, 1954, 1964, 1975, 1984, 1993, - 2002, 2011, 2020, 2029, 2038, 2051, 2064, 2073, 2080, 2089, - 2098, 2107, 2116, 2125, 2133, 2146, 2154, 2199, 2206, 2221, - 2231, 2241, 2248, 2255, 2262, 2271, 2279, 2293, 2314, 2335, - 2347, 2359, 2371, 2380, 2401, 2410, 2419, 2427, 2435, 2448, - 2461, 2476, 2491, 2500, 2509, 2519, 2529, 2538, 2544, 2553, - 2562, 2572, 2582, 2592, 2601, 2611, 2620, 2633, 2646, 2658, - 2672, 2684, 2698, 2707, 2719, 2729, 2736, 2743, 2752, 2761, - 2771, 2781, 2791, 2801, 2808, 2815, 2824, 2833, 2843, 2853, - 2863, 2870, 2877, 2884, 2892, 2902, 2912, 2922, 2932, 2942, - 2952, 2998, 3008, 3016, 3024, 3039, 3048, 3053, 3054, 3055, - 3055, 3055, 3056, 3056, 3056, 3057, 3057, 3059, 3069, 3078, - 3085, 3092, 3099, 3106, 3113, 3120, 3125, 3126, 3127, 3127, - 3127, 3128, 3128, 3128, 3129, 3130, 3130, 3131, 3131, 3132, - 3132, 3133, 3134, 3135, 3136, 3137, 3138, 3140, 3149, 3159, - 3166, 3173, 3182, 3189, 3196, 3203, 3210, 3219, 3228, 3235, - 3242, 3252, 3262, 3272, 3282, 3292, 3302, 3307, 3308, 3309, - 3311, 3317, 3322, 3323, 3324, 3326, 3332, 3342, 3349, 3358, - 3366, 3371, 3372, 3374, 3374, 3374, 3375, 3375, 3376, 3377, - 3378, 3379, 3380, 3382, 3392, 3401, 3408, 3417, 3424, 3433, - 3441, 3454, 3462, 3475, 3480, 3481, 3482, 3482, 3483, 3483, - 3483, 3484, 3486, 3498, 3510, 3522, 3537, 3550, 3563, 3574, - 3579, 3580, 3581, 3581, 3583, 3598 + 313, 314, 314, 315, 318, 331, 332, 333, 333, 333, + 333, 333, 334, 334, 334, 336, 349, 350, 351, 351, + 351, 351, 352, 352, 352, 354, 369, 370, 371, 371, + 371, 371, 372, 372, 372, 374, 394, 395, 396, 396, + 396, 396, 397, 397, 397, 398, 398, 398, 401, 420, + 437, 445, 455, 462, 472, 490, 491, 492, 492, 492, + 492, 492, 493, 493, 493, 494, 494, 494, 494, 496, + 505, 514, 525, 534, 543, 552, 563, 572, 584, 598, + 613, 624, 641, 658, 675, 692, 707, 722, 735, 750, + 759, 768, 777, 786, 795, 804, 811, 820, 829, 838, + 847, 856, 865, 874, 883, 896, 907, 918, 929, 938, + 951, 960, 969, 978, 985, 992, 1001, 1008, 1017, 1025, + 1032, 1039, 1047, 1056, 1064, 1080, 1088, 1096, 1104, 1112, + 1120, 1129, 1138, 1152, 1161, 1170, 1179, 1188, 1197, 1206, + 1213, 1220, 1246, 1254, 1261, 1268, 1275, 1282, 1290, 1298, + 1306, 1313, 1324, 1335, 1342, 1351, 1360, 1369, 1378, 1385, + 1392, 1399, 1415, 1423, 1431, 1441, 1451, 1461, 1475, 1483, + 1496, 1507, 1515, 1528, 1537, 1546, 1555, 1564, 1574, 1584, + 1592, 1605, 1614, 1622, 1631, 1639, 1652, 1661, 1671, 1678, + 1688, 1698, 1708, 1718, 1728, 1738, 1748, 1758, 1765, 1772, + 1779, 1788, 1797, 1806, 1815, 1822, 1832, 1852, 1859, 1877, + 1890, 1903, 1916, 1925, 1934, 1943, 1952, 1962, 1972, 1983, + 1992, 2001, 2010, 2019, 2028, 2037, 2046, 2059, 2072, 2081, + 2088, 2097, 2106, 2115, 2124, 2133, 2141, 2154, 2162, 2207, + 2214, 2229, 2239, 2249, 2256, 2263, 2270, 2279, 2287, 2301, + 2322, 2343, 2355, 2367, 2379, 2388, 2409, 2418, 2427, 2435, + 2443, 2456, 2469, 2484, 2499, 2508, 2517, 2527, 2537, 2546, + 2552, 2561, 2570, 2580, 2590, 2600, 2609, 2619, 2628, 2641, + 2654, 2666, 2680, 2692, 2706, 2715, 2727, 2737, 2744, 2751, + 2760, 2769, 2779, 2789, 2799, 2809, 2816, 2823, 2832, 2841, + 2851, 2861, 2871, 2878, 2885, 2892, 2900, 2910, 2920, 2930, + 2940, 2950, 2960, 3006, 3016, 3024, 3032, 3047, 3056, 3061, + 3062, 3063, 3063, 3063, 3064, 3064, 3064, 3065, 3065, 3067, + 3077, 3086, 3093, 3100, 3107, 3114, 3121, 3128, 3133, 3134, + 3135, 3135, 3135, 3136, 3136, 3136, 3137, 3138, 3138, 3139, + 3139, 3140, 3140, 3141, 3142, 3143, 3144, 3145, 3146, 3148, + 3157, 3167, 3174, 3181, 3190, 3197, 3204, 3211, 3218, 3227, + 3236, 3243, 3250, 3260, 3270, 3280, 3290, 3300, 3310, 3315, + 3316, 3317, 3319, 3325, 3330, 3331, 3332, 3334, 3340, 3350, + 3357, 3366, 3374, 3379, 3380, 3382, 3382, 3382, 3383, 3383, + 3384, 3385, 3386, 3387, 3388, 3390, 3400, 3409, 3416, 3425, + 3432, 3441, 3449, 3462, 3470, 3483, 3488, 3489, 3490, 3490, + 3491, 3491, 3491, 3492, 3494, 3506, 3518, 3530, 3545, 3558, + 3571, 3582, 3587, 3588, 3589, 3589, 3591, 3606 }; #endif @@ -1414,18 +2097,18 @@ static const char *const yytname[] = "VAR_RPZ_LOG_NAME", "VAR_DYNLIB", "VAR_DYNLIB_FILE", "VAR_EDNS_CLIENT_STRING", "VAR_EDNS_CLIENT_STRING_OPCODE", "VAR_NSID", "VAR_ZONEMD_PERMISSIVE_MODE", "VAR_ZONEMD_CHECK", - "VAR_ZONEMD_REJECT_ABSENCE", "VAR_RPZ_SIGNAL_NXDOMAIN_RA", "$accept", - "toplevelvars", "toplevelvar", "force_toplevel", "serverstart", - "contents_server", "content_server", "stubstart", "contents_stub", - "content_stub", "forwardstart", "contents_forward", "content_forward", - "viewstart", "contents_view", "content_view", "authstart", - "contents_auth", "content_auth", "rpz_tag", "rpz_action_override", - "rpz_cname_override", "rpz_log", "rpz_log_name", - "rpz_signal_nxdomain_ra", "rpzstart", "contents_rpz", "content_rpz", - "server_num_threads", "server_verbosity", "server_statistics_interval", - "server_statistics_cumulative", "server_extended_statistics", - "server_shm_enable", "server_shm_key", "server_port", - "server_send_client_subnet", "server_client_subnet_zone", + "VAR_ZONEMD_REJECT_ABSENCE", "VAR_RPZ_SIGNAL_NXDOMAIN_RA", + "VAR_INTERFACE_AUTOMATIC_PORTS", "$accept", "toplevelvars", + "toplevelvar", "force_toplevel", "serverstart", "contents_server", + "content_server", "stubstart", "contents_stub", "content_stub", + "forwardstart", "contents_forward", "content_forward", "viewstart", + "contents_view", "content_view", "authstart", "contents_auth", + "content_auth", "rpz_tag", "rpz_action_override", "rpz_cname_override", + "rpz_log", "rpz_log_name", "rpz_signal_nxdomain_ra", "rpzstart", + "contents_rpz", "content_rpz", "server_num_threads", "server_verbosity", + "server_statistics_interval", "server_statistics_cumulative", + "server_extended_statistics", "server_shm_enable", "server_shm_key", + "server_port", "server_send_client_subnet", "server_client_subnet_zone", "server_client_subnet_always_forward", "server_client_subnet_opcode", "server_max_client_subnet_ipv4", "server_max_client_subnet_ipv6", "server_min_client_subnet_ipv4", "server_min_client_subnet_ipv6", @@ -1433,66 +2116,67 @@ static const char *const yytname[] = "server_interface", "server_outgoing_interface", "server_outgoing_range", "server_outgoing_port_permit", "server_outgoing_port_avoid", "server_outgoing_num_tcp", "server_incoming_num_tcp", - "server_interface_automatic", "server_do_ip4", "server_do_ip6", - "server_do_udp", "server_do_tcp", "server_prefer_ip4", - "server_prefer_ip6", "server_tcp_mss", "server_outgoing_tcp_mss", - "server_tcp_idle_timeout", "server_max_reuse_tcp_queries", - "server_tcp_reuse_timeout", "server_tcp_auth_query_timeout", - "server_tcp_keepalive", "server_tcp_keepalive_timeout", - "server_tcp_upstream", "server_udp_upstream_without_downstream", - "server_ssl_upstream", "server_ssl_service_key", - "server_ssl_service_pem", "server_ssl_port", "server_tls_cert_bundle", - "server_tls_win_cert", "server_tls_additional_port", - "server_tls_ciphers", "server_tls_ciphersuites", - "server_tls_session_ticket_keys", "server_tls_use_sni", - "server_https_port", "server_http_endpoint", "server_http_max_streams", - "server_http_query_buffer_size", "server_http_response_buffer_size", - "server_http_nodelay", "server_http_notls_downstream", - "server_use_systemd", "server_do_daemonize", "server_use_syslog", - "server_log_time_ascii", "server_log_queries", "server_log_replies", - "server_log_tag_queryreply", "server_log_servfail", - "server_log_local_actions", "server_chroot", "server_username", - "server_directory", "server_logfile", "server_pidfile", - "server_root_hints", "server_dlv_anchor_file", "server_dlv_anchor", - "server_auto_trust_anchor_file", "server_trust_anchor_file", - "server_trusted_keys_file", "server_trust_anchor", - "server_trust_anchor_signaling", "server_root_key_sentinel", - "server_domain_insecure", "server_hide_identity", "server_hide_version", - "server_hide_trustanchor", "server_hide_http_user_agent", - "server_identity", "server_version", "server_http_user_agent", - "server_nsid", "server_so_rcvbuf", "server_so_sndbuf", - "server_so_reuseport", "server_ip_transparent", "server_ip_freebind", - "server_ip_dscp", "server_stream_wait_size", "server_edns_buffer_size", - "server_msg_buffer_size", "server_msg_cache_size", - "server_msg_cache_slabs", "server_num_queries_per_thread", - "server_jostle_timeout", "server_delay_close", "server_udp_connect", - "server_unblock_lan_zones", "server_insecure_lan_zones", - "server_rrset_cache_size", "server_rrset_cache_slabs", - "server_infra_host_ttl", "server_infra_lame_ttl", - "server_infra_cache_numhosts", "server_infra_cache_lame_size", - "server_infra_cache_slabs", "server_infra_cache_min_rtt", - "server_infra_keep_probing", "server_target_fetch_policy", - "server_harden_short_bufsize", "server_harden_large_queries", - "server_harden_glue", "server_harden_dnssec_stripped", - "server_harden_below_nxdomain", "server_harden_referral_path", - "server_harden_algo_downgrade", "server_use_caps_for_id", - "server_caps_whitelist", "server_private_address", - "server_private_domain", "server_prefetch", "server_prefetch_key", - "server_deny_any", "server_unwanted_reply_threshold", - "server_do_not_query_address", "server_do_not_query_localhost", - "server_access_control", "server_module_conf", - "server_val_override_date", "server_val_sig_skew_min", - "server_val_sig_skew_max", "server_val_max_restart", - "server_cache_max_ttl", "server_cache_max_negative_ttl", - "server_cache_min_ttl", "server_bogus_ttl", - "server_val_clean_additional", "server_val_permissive_mode", - "server_aggressive_nsec", "server_ignore_cd_flag", - "server_serve_expired", "server_serve_expired_ttl", - "server_serve_expired_ttl_reset", "server_serve_expired_reply_ttl", - "server_serve_expired_client_timeout", "server_serve_original_ttl", - "server_fake_dsa", "server_fake_sha1", "server_val_log_level", - "server_val_nsec3_keysize_iterations", "server_zonemd_permissive_mode", - "server_add_holddown", "server_del_holddown", "server_keep_missing", + "server_interface_automatic", "server_interface_automatic_ports", + "server_do_ip4", "server_do_ip6", "server_do_udp", "server_do_tcp", + "server_prefer_ip4", "server_prefer_ip6", "server_tcp_mss", + "server_outgoing_tcp_mss", "server_tcp_idle_timeout", + "server_max_reuse_tcp_queries", "server_tcp_reuse_timeout", + "server_tcp_auth_query_timeout", "server_tcp_keepalive", + "server_tcp_keepalive_timeout", "server_tcp_upstream", + "server_udp_upstream_without_downstream", "server_ssl_upstream", + "server_ssl_service_key", "server_ssl_service_pem", "server_ssl_port", + "server_tls_cert_bundle", "server_tls_win_cert", + "server_tls_additional_port", "server_tls_ciphers", + "server_tls_ciphersuites", "server_tls_session_ticket_keys", + "server_tls_use_sni", "server_https_port", "server_http_endpoint", + "server_http_max_streams", "server_http_query_buffer_size", + "server_http_response_buffer_size", "server_http_nodelay", + "server_http_notls_downstream", "server_use_systemd", + "server_do_daemonize", "server_use_syslog", "server_log_time_ascii", + "server_log_queries", "server_log_replies", "server_log_tag_queryreply", + "server_log_servfail", "server_log_local_actions", "server_chroot", + "server_username", "server_directory", "server_logfile", + "server_pidfile", "server_root_hints", "server_dlv_anchor_file", + "server_dlv_anchor", "server_auto_trust_anchor_file", + "server_trust_anchor_file", "server_trusted_keys_file", + "server_trust_anchor", "server_trust_anchor_signaling", + "server_root_key_sentinel", "server_domain_insecure", + "server_hide_identity", "server_hide_version", "server_hide_trustanchor", + "server_hide_http_user_agent", "server_identity", "server_version", + "server_http_user_agent", "server_nsid", "server_so_rcvbuf", + "server_so_sndbuf", "server_so_reuseport", "server_ip_transparent", + "server_ip_freebind", "server_ip_dscp", "server_stream_wait_size", + "server_edns_buffer_size", "server_msg_buffer_size", + "server_msg_cache_size", "server_msg_cache_slabs", + "server_num_queries_per_thread", "server_jostle_timeout", + "server_delay_close", "server_udp_connect", "server_unblock_lan_zones", + "server_insecure_lan_zones", "server_rrset_cache_size", + "server_rrset_cache_slabs", "server_infra_host_ttl", + "server_infra_lame_ttl", "server_infra_cache_numhosts", + "server_infra_cache_lame_size", "server_infra_cache_slabs", + "server_infra_cache_min_rtt", "server_infra_keep_probing", + "server_target_fetch_policy", "server_harden_short_bufsize", + "server_harden_large_queries", "server_harden_glue", + "server_harden_dnssec_stripped", "server_harden_below_nxdomain", + "server_harden_referral_path", "server_harden_algo_downgrade", + "server_use_caps_for_id", "server_caps_whitelist", + "server_private_address", "server_private_domain", "server_prefetch", + "server_prefetch_key", "server_deny_any", + "server_unwanted_reply_threshold", "server_do_not_query_address", + "server_do_not_query_localhost", "server_access_control", + "server_module_conf", "server_val_override_date", + "server_val_sig_skew_min", "server_val_sig_skew_max", + "server_val_max_restart", "server_cache_max_ttl", + "server_cache_max_negative_ttl", "server_cache_min_ttl", + "server_bogus_ttl", "server_val_clean_additional", + "server_val_permissive_mode", "server_aggressive_nsec", + "server_ignore_cd_flag", "server_serve_expired", + "server_serve_expired_ttl", "server_serve_expired_ttl_reset", + "server_serve_expired_reply_ttl", "server_serve_expired_client_timeout", + "server_serve_original_ttl", "server_fake_dsa", "server_fake_sha1", + "server_val_log_level", "server_val_nsec3_keysize_iterations", + "server_zonemd_permissive_mode", "server_add_holddown", + "server_del_holddown", "server_keep_missing", "server_permit_small_holddown", "server_key_cache_size", "server_key_cache_slabs", "server_neg_cache_size", "server_local_zone", "server_local_data", "server_local_data_ptr", "server_minimal_responses", @@ -1600,7 +2284,7 @@ static const yytype_int16 yytoknum[] = 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, - 575, 576, 577, 578 + 575, 576, 577, 578, 579 }; #endif @@ -1644,7 +2328,7 @@ static const yytype_int16 yypact[] = 277, 278, 279, 280, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 296, 297, 298, 300, 301, 302, 304, 338, 339, 340, 341, 345, 346, 347, - 389, 390, 391, 392, 393, 394, -310, -310, -310, -310, + 389, 390, 391, 392, 393, 394, 395, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, @@ -1666,59 +2350,59 @@ static const yytype_int16 yypact[] = -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, - -310, -310, -310, -310, -310, -310, -310, -310, 395, 396, - 397, 403, 407, 408, 435, 436, -310, -310, -310, -310, - -310, -310, -310, -310, -310, 437, 439, 440, 448, 461, - 462, 463, -310, -310, -310, -310, -310, -310, -310, -310, - 464, 465, 466, 467, 468, 469, 470, -310, -310, -310, - -310, -310, -310, -310, -310, 471, 472, 473, 474, 475, - 476, 477, 478, 479, 480, -310, -310, -310, -310, -310, - -310, -310, -310, -310, -310, -310, 523, 525, 544, 545, - 546, 547, -310, -310, -310, -310, -310, -310, -310, -310, - -310, -310, -310, -310, -310, 548, 549, 550, 551, 552, - 553, 554, 565, -310, -310, -310, -310, -310, -310, -310, - -310, -310, 566, 567, 568, 569, 570, 571, 573, 574, - 575, 576, 577, 578, 579, 582, 585, 588, 589, 598, - 599, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, - -310, 600, -310, -310, 602, -310, -310, 603, 604, 605, - 606, 607, 608, 609, 614, 615, 616, -310, -310, -310, - -310, -310, -310, -310, -310, -310, -310, -310, 617, 618, - 619, 620, 621, 622, -310, -310, -310, -310, -310, -310, - -310, 623, 624, -310, -310, -310, -310, -310, -310, -310, + 396, 397, 403, 407, 408, 435, 436, 437, -310, -310, + -310, -310, -310, -310, -310, -310, -310, 439, 440, 448, + 461, 462, 463, 464, -310, -310, -310, -310, -310, -310, + -310, -310, 465, 466, 467, 468, 469, 470, 471, -310, + -310, -310, -310, -310, -310, -310, -310, 472, 473, 474, + 475, 476, 477, 478, 479, 480, 523, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, 525, 544, + 545, 546, 547, 548, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, 549, 550, 551, + 552, 553, 554, 565, 566, -310, -310, -310, -310, -310, + -310, -310, -310, -310, 567, 568, 569, 570, 571, 573, + 574, 575, 576, 577, 578, 579, 582, 585, 588, 589, + 598, 599, 600, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, 602, -310, -310, 603, -310, -310, 604, + 605, 606, 607, 608, 609, 614, 615, 616, 618, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + 619, 620, 621, 622, 623, 624, -310, -310, -310, -310, + -310, -310, -310, 625, 626, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, - -310, -310, -310, -310, -310, -310, 625, 626, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, 627, 628, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, - -310, -310, -310, -310, -310, -310, 627, 628, 629, -310, + -310, -310, -310, -310, -310, -310, -310, -310, 629, 630, + 631, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, 632, 633, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, - 630, 631, -310, -310, -310, -310, -310, -310, -310, -310, - -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, - -310, -310, -310, 632, 633, 634, 635, 636, 637, -310, + -310, -310, -310, -310, -310, 634, 635, 636, 637, 638, + 639, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -310, -310, -310, -310, -310, 640, -310, -310, -310, -310, + -310, -310, -310, -310, -310, 641, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, - -310, -310, -310, 638, -310, -310, -310, -310, -310, -310, - -310, -310, -310, 639, -310, -310, -310, -310, -310, -310, - -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, - -310, -310, -310, 640, -310, -310, 641, 642, -310, -310, + -310, -310, -310, -310, -310, -310, 642, -310, -310, 643, + 644, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, - -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, - -310, 643, 644, 645, -310, -310, -310, -310, -310, -310, - -310, -310, -310 + -310, -310, -310, -310, 645, 646, 647, -310, -310, -310, + -310, -310, -310, -310, -310, -310 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1726,10 +2410,10 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_int16 yydefact[] = { - 2, 0, 1, 18, 19, 243, 254, 556, 616, 575, - 264, 630, 653, 274, 669, 293, 621, 3, 17, 21, - 245, 256, 266, 276, 295, 558, 577, 618, 623, 632, - 655, 671, 4, 5, 6, 10, 14, 15, 8, 9, + 2, 0, 1, 18, 19, 244, 255, 558, 618, 577, + 265, 632, 655, 275, 671, 294, 623, 3, 17, 21, + 246, 257, 267, 277, 296, 560, 579, 620, 625, 634, + 657, 673, 4, 5, 6, 10, 14, 15, 8, 9, 7, 16, 11, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1752,81 +2436,81 @@ static const yytype_int16 yydefact[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 20, 22, 23, 88, - 91, 100, 206, 207, 24, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 37, 79, 25, 92, 93, - 48, 72, 87, 26, 27, 30, 31, 28, 29, 32, - 33, 34, 240, 241, 242, 35, 36, 124, 218, 125, - 127, 128, 129, 220, 225, 221, 232, 233, 234, 235, - 130, 131, 132, 133, 134, 135, 136, 202, 89, 78, - 104, 122, 123, 230, 227, 126, 38, 39, 40, 41, - 42, 80, 94, 95, 111, 66, 76, 67, 210, 211, - 105, 58, 59, 209, 62, 60, 61, 63, 238, 115, - 119, 140, 150, 180, 153, 231, 116, 73, 43, 44, - 45, 102, 141, 142, 143, 144, 46, 47, 49, 50, - 52, 53, 51, 148, 154, 54, 55, 56, 64, 83, - 120, 97, 149, 90, 176, 98, 99, 117, 118, 228, - 103, 57, 81, 84, 65, 68, 106, 107, 108, 82, - 177, 109, 69, 70, 71, 219, 121, 194, 195, 196, - 197, 198, 199, 200, 208, 110, 77, 239, 112, 113, - 114, 178, 74, 75, 96, 85, 86, 101, 137, 138, - 229, 139, 145, 146, 147, 181, 182, 184, 186, 187, - 185, 188, 203, 151, 152, 157, 158, 155, 156, 159, - 160, 162, 161, 164, 163, 165, 222, 224, 223, 179, - 189, 190, 191, 192, 193, 212, 214, 213, 215, 216, - 217, 236, 237, 183, 201, 204, 205, 226, 0, 0, - 0, 0, 0, 0, 0, 0, 244, 246, 247, 248, - 250, 251, 252, 253, 249, 0, 0, 0, 0, 0, - 0, 0, 255, 257, 258, 259, 260, 261, 262, 263, - 0, 0, 0, 0, 0, 0, 0, 265, 267, 268, - 271, 272, 269, 273, 270, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 275, 277, 278, 279, 280, - 284, 285, 286, 281, 282, 283, 0, 0, 0, 0, - 0, 0, 298, 302, 303, 304, 305, 306, 294, 296, - 297, 299, 300, 301, 307, 0, 0, 0, 0, 0, - 0, 0, 0, 557, 559, 561, 560, 566, 562, 563, - 564, 565, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 20, 22, 23, + 88, 91, 100, 206, 207, 24, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 37, 79, 25, 92, + 93, 48, 72, 87, 243, 26, 27, 30, 31, 28, + 29, 32, 33, 34, 240, 241, 242, 35, 36, 124, + 218, 125, 127, 128, 129, 220, 225, 221, 232, 233, + 234, 235, 130, 131, 132, 133, 134, 135, 136, 202, + 89, 78, 104, 122, 123, 230, 227, 126, 38, 39, + 40, 41, 42, 80, 94, 95, 111, 66, 76, 67, + 210, 211, 105, 58, 59, 209, 62, 60, 61, 63, + 238, 115, 119, 140, 150, 180, 153, 231, 116, 73, + 43, 44, 45, 102, 141, 142, 143, 144, 46, 47, + 49, 50, 52, 53, 51, 148, 154, 54, 55, 56, + 64, 83, 120, 97, 149, 90, 176, 98, 99, 117, + 118, 228, 103, 57, 81, 84, 65, 68, 106, 107, + 108, 82, 177, 109, 69, 70, 71, 219, 121, 194, + 195, 196, 197, 198, 199, 200, 208, 110, 77, 239, + 112, 113, 114, 178, 74, 75, 96, 85, 86, 101, + 137, 138, 229, 139, 145, 146, 147, 181, 182, 184, + 186, 187, 185, 188, 203, 151, 152, 157, 158, 155, + 156, 159, 160, 162, 161, 164, 163, 165, 222, 224, + 223, 179, 189, 190, 191, 192, 193, 212, 214, 213, + 215, 216, 217, 236, 237, 183, 201, 204, 205, 226, + 0, 0, 0, 0, 0, 0, 0, 0, 245, 247, + 248, 249, 251, 252, 253, 254, 250, 0, 0, 0, + 0, 0, 0, 0, 256, 258, 259, 260, 261, 262, + 263, 264, 0, 0, 0, 0, 0, 0, 0, 266, + 268, 269, 272, 273, 270, 274, 271, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 276, 278, 279, + 280, 281, 285, 286, 287, 282, 283, 284, 0, 0, + 0, 0, 0, 0, 299, 303, 304, 305, 306, 307, + 295, 297, 298, 300, 301, 302, 308, 0, 0, 0, + 0, 0, 0, 0, 0, 559, 561, 563, 562, 568, + 564, 565, 566, 567, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 576, 578, 580, 579, 581, 582, 583, 584, 585, + 0, 0, 0, 578, 580, 582, 581, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, - 596, 0, 617, 619, 0, 622, 624, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 631, 633, 634, - 635, 637, 638, 636, 639, 640, 641, 642, 0, 0, - 0, 0, 0, 0, 654, 656, 657, 658, 659, 660, - 661, 0, 0, 670, 672, 673, 309, 308, 315, 328, - 326, 338, 334, 335, 339, 336, 337, 340, 341, 342, - 346, 347, 377, 378, 379, 380, 381, 409, 410, 411, - 417, 418, 331, 419, 420, 423, 421, 422, 426, 427, - 428, 442, 392, 393, 396, 397, 429, 445, 386, 388, - 446, 453, 454, 455, 332, 408, 473, 474, 387, 467, - 370, 327, 382, 443, 450, 430, 0, 0, 477, 333, - 310, 369, 434, 311, 329, 330, 383, 384, 475, 432, - 436, 437, 344, 343, 312, 478, 412, 441, 371, 391, - 447, 448, 449, 452, 466, 385, 471, 469, 470, 400, - 407, 438, 439, 401, 402, 431, 457, 372, 373, 376, - 348, 350, 345, 351, 352, 353, 354, 361, 362, 363, - 364, 365, 366, 367, 479, 480, 482, 413, 414, 415, - 416, 424, 425, 483, 484, 485, 0, 0, 0, 433, - 403, 405, 626, 494, 498, 496, 495, 499, 497, 506, - 0, 0, 502, 503, 504, 505, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 325, 435, 451, 472, 510, - 511, 404, 486, 0, 0, 0, 0, 0, 0, 458, - 459, 460, 461, 462, 463, 464, 465, 627, 394, 395, - 398, 389, 456, 368, 313, 314, 390, 512, 513, 514, - 515, 516, 518, 517, 519, 520, 521, 349, 356, 507, - 509, 508, 355, 0, 375, 440, 481, 374, 406, 357, - 358, 360, 359, 0, 523, 399, 468, 524, 525, 526, - 531, 529, 530, 527, 528, 532, 533, 534, 535, 537, - 538, 536, 549, 0, 553, 554, 0, 0, 555, 539, - 547, 540, 541, 542, 546, 548, 543, 544, 545, 287, - 288, 289, 290, 291, 292, 567, 569, 568, 571, 572, - 573, 574, 570, 597, 599, 600, 601, 602, 603, 604, - 605, 606, 607, 598, 608, 609, 610, 611, 612, 613, - 614, 615, 620, 625, 643, 644, 645, 648, 646, 647, - 649, 650, 651, 652, 662, 663, 664, 665, 666, 667, - 674, 675, 444, 476, 493, 628, 629, 500, 501, 487, - 488, 0, 0, 0, 492, 668, 522, 550, 551, 552, - 491, 489, 490 + 596, 597, 598, 0, 619, 621, 0, 624, 626, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 633, + 635, 636, 637, 639, 640, 638, 641, 642, 643, 644, + 0, 0, 0, 0, 0, 0, 656, 658, 659, 660, + 661, 662, 663, 0, 0, 672, 674, 675, 310, 309, + 316, 329, 327, 340, 336, 337, 341, 338, 339, 342, + 343, 344, 348, 349, 379, 380, 381, 382, 383, 411, + 412, 413, 419, 420, 332, 421, 422, 425, 423, 424, + 428, 429, 430, 444, 394, 395, 398, 399, 431, 447, + 388, 390, 448, 455, 456, 457, 333, 410, 475, 476, + 389, 469, 372, 328, 384, 445, 452, 432, 0, 0, + 479, 334, 311, 371, 436, 312, 330, 331, 385, 386, + 477, 434, 438, 439, 346, 345, 313, 480, 414, 443, + 373, 393, 449, 450, 451, 454, 468, 387, 473, 471, + 472, 402, 409, 440, 441, 403, 404, 433, 459, 374, + 375, 378, 350, 352, 347, 353, 354, 355, 356, 363, + 364, 365, 366, 367, 368, 369, 481, 482, 484, 415, + 416, 417, 418, 426, 427, 485, 486, 487, 0, 0, + 0, 435, 405, 407, 628, 496, 500, 498, 497, 501, + 499, 508, 0, 0, 504, 505, 506, 507, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 437, 453, + 474, 512, 513, 406, 488, 0, 0, 0, 0, 0, + 0, 460, 461, 462, 463, 464, 465, 466, 467, 629, + 396, 397, 400, 391, 458, 370, 314, 315, 392, 514, + 515, 516, 517, 518, 520, 519, 521, 522, 523, 351, + 358, 509, 511, 510, 357, 0, 377, 442, 483, 376, + 408, 359, 360, 362, 361, 0, 525, 401, 470, 335, + 526, 527, 528, 533, 531, 532, 529, 530, 534, 535, + 536, 537, 539, 540, 538, 551, 0, 555, 556, 0, + 0, 557, 541, 549, 542, 543, 544, 548, 550, 545, + 546, 547, 288, 289, 290, 291, 292, 293, 569, 571, + 570, 573, 574, 575, 576, 572, 599, 601, 602, 603, + 604, 605, 606, 607, 608, 609, 600, 610, 611, 612, + 613, 614, 615, 616, 617, 622, 627, 645, 646, 647, + 650, 648, 649, 651, 652, 653, 654, 664, 665, 666, + 667, 668, 669, 676, 677, 446, 478, 495, 630, 631, + 502, 503, 489, 490, 0, 0, 0, 494, 670, 524, + 552, 553, 554, 493, 491, 492 }; /* YYPGOTO[NTERM-NUM]. */ @@ -1857,8 +2541,8 @@ static const yytype_int16 yypgoto[] = -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, - -310, -310, -310, -310, -310, -310, -310, -310, -310, -27, - 646, 647, 648, 649, -310, -310, 650, -310, -310, -310, + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, + -27, 648, 649, 650, 651, -310, -310, 652, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, @@ -1866,47 +2550,47 @@ static const yytype_int16 yypgoto[] = -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, -310, - -310, -310, -310, -310, -310, -310, -310, -310, -310 + -310, -310, -310, -310, -310, -310, -310, -310, -310, -310 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - 0, 1, 17, 18, 19, 32, 266, 20, 33, 496, - 21, 34, 512, 22, 35, 527, 23, 36, 545, 562, - 563, 564, 565, 566, 567, 24, 37, 568, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, - 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, - 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, - 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, - 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, - 479, 480, 481, 482, 497, 498, 499, 500, 501, 502, - 503, 504, 513, 514, 515, 516, 517, 518, 519, 546, - 547, 548, 549, 550, 551, 552, 553, 554, 555, 528, - 529, 530, 531, 532, 533, 534, 25, 38, 583, 584, - 585, 586, 587, 588, 589, 590, 591, 26, 39, 611, - 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, - 622, 623, 624, 625, 626, 627, 628, 629, 630, 27, - 40, 632, 633, 28, 41, 635, 636, 483, 484, 485, - 486, 29, 42, 647, 648, 649, 650, 651, 652, 653, - 654, 655, 656, 657, 30, 43, 664, 665, 666, 667, - 668, 669, 670, 487, 31, 44, 673, 674, 675 + -1, 1, 17, 18, 19, 32, 267, 20, 33, 498, + 21, 34, 514, 22, 35, 529, 23, 36, 547, 564, + 565, 566, 567, 568, 569, 24, 37, 570, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, + 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, + 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, + 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, + 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, + 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, + 480, 481, 482, 483, 484, 499, 500, 501, 502, 503, + 504, 505, 506, 515, 516, 517, 518, 519, 520, 521, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 530, 531, 532, 533, 534, 535, 536, 25, 38, 585, + 586, 587, 588, 589, 590, 591, 592, 593, 26, 39, + 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, + 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, + 27, 40, 634, 635, 28, 41, 637, 638, 485, 486, + 487, 488, 29, 42, 649, 650, 651, 652, 653, 654, + 655, 656, 657, 658, 659, 30, 43, 666, 667, 668, + 669, 670, 671, 672, 489, 31, 44, 675, 676, 677 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1914,75 +2598,75 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 2, 535, 520, 671, 672, 631, 488, 634, 489, 490, - 569, 3, 4, 505, 676, 535, 677, 678, 679, 680, - 681, 506, 507, 637, 638, 639, 640, 641, 642, 643, - 644, 645, 646, 682, 683, 684, 685, 686, 521, 522, - 658, 659, 660, 661, 662, 663, 5, 687, 688, 689, - 690, 691, 6, 692, 693, 575, 576, 577, 578, 579, - 580, 581, 582, 694, 695, 523, 696, 697, 698, 699, - 700, 491, 592, 593, 594, 595, 596, 597, 598, 599, - 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, - 610, 701, 702, 703, 704, 705, 7, 706, 707, 708, - 709, 710, 711, 712, 492, 713, 714, 493, 715, 716, - 508, 717, 509, 718, 8, 510, 494, 719, 720, 721, - 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, - 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, - 742, 743, 744, 745, 746, 747, 524, 525, 748, 749, - 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, - 760, 761, 762, 763, 764, 765, 766, 767, 9, 768, - 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, - 779, 780, 781, 782, 783, 784, 785, 786, 787, 526, - 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, - 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, - 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, - 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, - 10, 828, 829, 830, 831, 832, 833, 834, 537, 538, - 539, 540, 835, 836, 837, 838, 839, 840, 542, 841, - 536, 11, 537, 538, 539, 540, 541, 495, 842, 843, - 844, 845, 542, 511, 846, 847, 556, 557, 558, 559, - 560, 848, 12, 849, 850, 851, 852, 853, 854, 561, - 855, 13, 856, 857, 858, 859, 860, 861, 862, 863, - 864, 543, 544, 865, 866, 867, 868, 869, 870, 871, - 872, 873, 874, 875, 876, 14, 877, 878, 879, 15, - 880, 881, 882, 0, 883, 16, 45, 46, 47, 48, + 2, 537, 522, 673, 674, 633, 490, 636, 491, 492, + 571, 3, 4, 507, 678, 537, 679, 680, 681, 682, + 683, 508, 509, 639, 640, 641, 642, 643, 644, 645, + 646, 647, 648, 684, 685, 686, 687, 688, 523, 524, + 660, 661, 662, 663, 664, 665, 5, 689, 690, 691, + 692, 693, 6, 694, 695, 577, 578, 579, 580, 581, + 582, 583, 584, 696, 697, 525, 698, 699, 700, 701, + 702, 493, 594, 595, 596, 597, 598, 599, 600, 601, + 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, + 612, 703, 704, 705, 706, 707, 7, 708, 709, 710, + 711, 712, 713, 714, 494, 715, 716, 495, 717, 718, + 510, 719, 511, 720, 8, 512, 496, 721, 722, 723, + 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, + 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, + 744, 745, 746, 747, 748, 749, 526, 527, 750, 751, + 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, + 762, 763, 764, 765, 766, 767, 768, 769, 9, 770, + 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, + 781, 782, 783, 784, 785, 786, 787, 788, 789, 528, + 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, + 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, + 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, + 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, + 10, 830, 831, 832, 833, 834, 835, 836, 539, 540, + 541, 542, 837, 838, 839, 840, 841, 842, 544, 843, + 538, 11, 539, 540, 541, 542, 543, 497, 844, 845, + 846, 847, 544, 513, 848, 849, 558, 559, 560, 561, + 562, 850, 12, 851, 852, 853, 854, 855, 856, 563, + 857, 13, 858, 859, 860, 861, 862, 863, 864, 865, + 866, 545, 546, 867, 868, 869, 870, 871, 872, 873, + 874, 875, 876, 877, 878, 14, 879, 880, 881, 15, + 882, 883, 884, 0, 885, 16, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 884, 885, - 886, 887, 77, 78, 79, 888, 889, 890, 80, 81, + 69, 70, 71, 72, 73, 74, 75, 76, 886, 887, + 888, 889, 77, 78, 79, 890, 891, 892, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 891, - 892, 893, 894, 895, 896, 897, 898, 899, 121, 122, - 123, 124, 125, 900, 126, 127, 128, 901, 902, 129, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 893, + 894, 895, 896, 897, 898, 899, 900, 901, 121, 122, + 123, 124, 125, 902, 126, 127, 128, 903, 904, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 903, 904, 905, 155, 906, - 907, 156, 157, 158, 159, 160, 161, 162, 908, 163, + 150, 151, 152, 153, 154, 905, 906, 907, 155, 908, + 909, 156, 157, 158, 159, 160, 161, 162, 910, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 909, 910, 911, 912, 913, 914, 915, 916, 917, - 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, - 928, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 174, 911, 912, 913, 914, 915, 916, 917, 918, 919, + 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, + 930, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 929, 217, 930, 218, 219, 220, 221, + 214, 215, 216, 931, 217, 932, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 931, 932, 933, 934, 935, 936, - 937, 938, 939, 940, 941, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 942, 943, 944, 945, 946, - 947, 948, 246, 949, 950, 951, 952, 953, 954, 955, - 247, 248, 956, 249, 250, 957, 251, 252, 958, 959, - 253, 254, 255, 256, 257, 258, 259, 260, 960, 961, - 962, 261, 963, 964, 965, 966, 967, 968, 969, 970, - 262, 263, 264, 265, 971, 972, 973, 974, 975, 976, - 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, - 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, - 997, 998, 999, 1000, 1001, 1002, 0, 0, 0, 0, + 232, 233, 234, 235, 933, 934, 935, 936, 937, 938, + 939, 940, 941, 942, 943, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 944, 945, 946, 947, 948, + 949, 950, 246, 951, 952, 953, 954, 955, 956, 957, + 247, 248, 958, 249, 250, 959, 251, 252, 960, 961, + 253, 254, 255, 256, 257, 258, 259, 260, 962, 963, + 964, 261, 965, 966, 967, 968, 969, 970, 971, 972, + 262, 263, 264, 265, 973, 974, 975, 266, 976, 977, + 978, 979, 980, 981, 982, 983, 984, 985, 986, 987, + 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, + 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 570, 571, 572, 573, 574 + 0, 0, 0, 0, 0, 572, 573, 574, 575, 576 }; static const yytype_int16 yycheck[] = @@ -2049,24 +2733,24 @@ static const yytype_int16 yycheck[] = 287, 288, 10, 290, 291, 10, 293, 294, 10, 10, 297, 298, 299, 300, 301, 302, 303, 304, 10, 10, 10, 308, 10, 10, 10, 10, 10, 10, 10, 10, - 317, 318, 319, 320, 10, 10, 10, 10, 10, 10, + 317, 318, 319, 320, 10, 10, 10, 324, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, -1, -1, -1, -1, + 10, 10, 10, 10, 10, 10, 10, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 37, 37, 37, 37, 37 + -1, -1, -1, -1, -1, 37, 37, 37, 37, 37 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_int16 yystos[] = { - 0, 325, 0, 11, 12, 46, 52, 96, 114, 168, - 230, 251, 272, 281, 305, 309, 315, 326, 327, 328, - 331, 334, 337, 340, 349, 600, 611, 633, 637, 645, - 658, 668, 329, 332, 335, 338, 341, 350, 601, 612, - 634, 638, 646, 659, 669, 13, 14, 15, 16, 17, + 0, 326, 0, 11, 12, 46, 52, 96, 114, 168, + 230, 251, 272, 281, 305, 309, 315, 327, 328, 329, + 332, 335, 338, 341, 350, 602, 613, 635, 639, 647, + 660, 670, 330, 333, 336, 339, 342, 351, 603, 614, + 636, 640, 648, 661, 671, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 49, 50, 51, @@ -2088,7 +2772,7 @@ static const yytype_int16 yystos[] = 245, 246, 247, 248, 249, 250, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 279, 287, 288, 290, 291, 293, 294, 297, 298, 299, 300, 301, 302, 303, - 304, 308, 317, 318, 319, 320, 330, 352, 353, 354, + 304, 308, 317, 318, 319, 320, 324, 331, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, @@ -2110,26 +2794,26 @@ static const yytype_int16 yystos[] = 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, - 565, 566, 567, 641, 642, 643, 644, 667, 45, 47, - 48, 110, 143, 146, 155, 296, 333, 568, 569, 570, - 571, 572, 573, 574, 575, 45, 53, 54, 142, 144, - 147, 295, 336, 576, 577, 578, 579, 580, 581, 582, - 45, 81, 82, 108, 189, 190, 232, 339, 593, 594, - 595, 596, 597, 598, 599, 45, 280, 282, 283, 284, - 285, 286, 292, 321, 322, 342, 583, 584, 585, 586, - 587, 588, 589, 590, 591, 592, 310, 311, 312, 313, - 314, 323, 343, 344, 345, 346, 347, 348, 351, 583, - 584, 585, 586, 587, 590, 97, 98, 99, 100, 101, - 102, 103, 104, 602, 603, 604, 605, 606, 607, 608, - 609, 610, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 613, 614, 615, 616, 617, 618, 619, 620, 621, + 565, 566, 567, 568, 569, 643, 644, 645, 646, 669, + 45, 47, 48, 110, 143, 146, 155, 296, 334, 570, + 571, 572, 573, 574, 575, 576, 577, 45, 53, 54, + 142, 144, 147, 295, 337, 578, 579, 580, 581, 582, + 583, 584, 45, 81, 82, 108, 189, 190, 232, 340, + 595, 596, 597, 598, 599, 600, 601, 45, 280, 282, + 283, 284, 285, 286, 292, 321, 322, 343, 585, 586, + 587, 588, 589, 590, 591, 592, 593, 594, 310, 311, + 312, 313, 314, 323, 344, 345, 346, 347, 348, 349, + 352, 585, 586, 587, 588, 589, 592, 97, 98, 99, + 100, 101, 102, 103, 104, 604, 605, 606, 607, 608, + 609, 610, 611, 612, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, - 632, 115, 635, 636, 316, 639, 640, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 647, 648, 649, - 650, 651, 652, 653, 654, 655, 656, 657, 273, 274, - 275, 276, 277, 278, 660, 661, 662, 663, 664, 665, - 666, 306, 307, 670, 671, 672, 10, 10, 10, 10, + 632, 633, 634, 115, 637, 638, 316, 641, 642, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 649, + 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, + 273, 274, 275, 276, 277, 278, 662, 663, 664, 665, + 666, 667, 668, 306, 307, 672, 673, 674, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -2162,43 +2846,43 @@ static const yytype_int16 yystos[] = 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10 + 10, 10, 10, 10, 10, 10 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_int16 yyr1[] = { - 0, 324, 325, 325, 326, 326, 326, 326, 326, 326, - 326, 326, 326, 326, 326, 326, 326, 326, 327, 328, - 329, 329, 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 331, 332, 332, 333, 333, 333, 333, - 333, 333, 333, 333, 334, 335, 335, 336, 336, 336, - 336, 336, 336, 336, 337, 338, 338, 339, 339, 339, - 339, 339, 339, 339, 340, 341, 341, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 343, 344, 345, - 346, 347, 348, 349, 350, 350, 351, 351, 351, 351, - 351, 351, 351, 351, 351, 351, 351, 351, 352, 353, + 0, 325, 326, 326, 327, 327, 327, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 327, 327, 328, 329, + 330, 330, 331, 331, 331, 331, 331, 331, 331, 331, + 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, + 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, + 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, + 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, + 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, + 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, + 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, + 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, + 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, + 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, + 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, + 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, + 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, + 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, + 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, + 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, + 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, + 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, + 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, + 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, + 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, + 331, 331, 331, 331, 332, 333, 333, 334, 334, 334, + 334, 334, 334, 334, 334, 335, 336, 336, 337, 337, + 337, 337, 337, 337, 337, 338, 339, 339, 340, 340, + 340, 340, 340, 340, 340, 341, 342, 342, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, 344, 345, + 346, 347, 348, 349, 350, 351, 351, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, @@ -2223,19 +2907,19 @@ static const yytype_int16 yyr1[] = 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, - 594, 595, 596, 597, 598, 599, 600, 601, 601, 602, - 602, 602, 602, 602, 602, 602, 602, 603, 604, 605, - 606, 607, 608, 609, 610, 611, 612, 612, 613, 613, - 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, - 613, 613, 613, 613, 613, 613, 613, 614, 615, 616, + 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, + 603, 604, 604, 604, 604, 604, 604, 604, 604, 605, + 606, 607, 608, 609, 610, 611, 612, 613, 614, 614, + 615, 615, 615, 615, 615, 615, 615, 615, 615, 615, + 615, 615, 615, 615, 615, 615, 615, 615, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, - 627, 628, 629, 630, 631, 632, 633, 634, 634, 635, - 636, 637, 638, 638, 639, 640, 641, 642, 643, 644, - 645, 646, 646, 647, 647, 647, 647, 647, 647, 647, - 647, 647, 647, 648, 649, 650, 651, 652, 653, 654, - 655, 656, 657, 658, 659, 659, 660, 660, 660, 660, - 660, 660, 661, 662, 663, 664, 665, 666, 667, 668, - 669, 669, 670, 670, 671, 672 + 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, + 636, 637, 638, 639, 640, 640, 641, 642, 643, 644, + 645, 646, 647, 648, 648, 649, 649, 649, 649, 649, + 649, 649, 649, 649, 649, 650, 651, 652, 653, 654, + 655, 656, 657, 658, 659, 660, 661, 661, 662, 662, + 662, 662, 662, 662, 663, 664, 665, 666, 667, 668, + 669, 670, 671, 671, 672, 672, 673, 674 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -2265,13 +2949,13 @@ static const yytype_int8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, - 2, 2, 2, 1, 2, 0, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, + 2, 2, 2, 2, 1, 2, 0, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -2285,30 +2969,30 @@ static const yytype_int8 yyr2[] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 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, 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, 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, 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, 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, - 3, 3, 3, 2, 2, 2, 1, 2, 0, 1, - 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, - 2, 2, 2, 2, 2, 1, 2, 0, 1, 1, + 2, 2, 3, 3, 3, 2, 2, 2, 1, 2, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 2, 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, - 2, 1, 2, 0, 1, 2, 2, 2, 3, 3, - 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 1, 2, 0, 1, 1, 1, 1, - 1, 1, 2, 2, 2, 2, 2, 2, 3, 1, - 2, 0, 1, 1, 2, 2 + 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, + 0, 1, 2, 1, 2, 0, 1, 2, 2, 2, + 3, 3, 1, 2, 0, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 1, 2, 0, 1, 1, + 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, + 3, 1, 2, 0, 1, 1, 2, 2 }; @@ -2387,7 +3071,7 @@ yy_symbol_value_print (FILE *yyo, yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep) { FILE *yyoutput = yyo; - YY_USE (yyoutput); + YYUSE (yyoutput); if (!yyvaluep) return; # ifdef YYPRINT @@ -2395,7 +3079,7 @@ yy_symbol_value_print (FILE *yyo, YYPRINT (yyo, yytoknum[yykind], *yyvaluep); # endif YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YY_USE (yykind); + YYUSE (yykind); YY_IGNORE_MAYBE_UNINITIALIZED_END } @@ -2509,18 +3193,18 @@ static void yydestruct (const char *yymsg, yysymbol_kind_t yykind, YYSTYPE *yyvaluep) { - YY_USE (yyvaluep); + YYUSE (yyvaluep); if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp); YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YY_USE (yykind); + YYUSE (yykind); YY_IGNORE_MAYBE_UNINITIALIZED_END } -/* Lookahead token kind. */ +/* The lookahead symbol. */ int yychar; /* The semantic value of the lookahead symbol. */ @@ -2538,30 +3222,34 @@ int yynerrs; int yyparse (void) { - yy_state_fast_t yystate = 0; + yy_state_fast_t yystate; /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus = 0; + int yyerrstatus; - /* Refer to the stacks through separate pointers, to allow yyoverflow + /* 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. */ /* Their size. */ - YYPTRDIFF_T yystacksize = YYINITDEPTH; + YYPTRDIFF_T yystacksize; - /* The state stack: array, bottom, top. */ + /* The state stack. */ yy_state_t yyssa[YYINITDEPTH]; - yy_state_t *yyss = yyssa; - yy_state_t *yyssp = yyss; + yy_state_t *yyss; + yy_state_t *yyssp; - /* The semantic value stack: array, bottom, top. */ + /* The semantic value stack. */ YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs = yyvsa; - YYSTYPE *yyvsp = yyvs; + YYSTYPE *yyvs; + YYSTYPE *yyvsp; int yyn; /* The return value of yyparse. */ int yyresult; - /* Lookahead symbol kind. */ + /* Lookahead token as an internal (translated) token number. */ yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY; /* The variables used to return semantic value and location from the action routines. */ @@ -2575,6 +3263,15 @@ yyparse (void) Keep to zero when no symbol should be popped. */ int yylen = 0; + yynerrs = 0; + yystate = 0; + yyerrstatus = 0; + + yystacksize = YYINITDEPTH; + yyssp = yyss = yyssa; + yyvsp = yyvs = yyvsa; + + YYDPRINTF ((stderr, "Starting parse\n")); yychar = YYEMPTY; /* Cause a token to be read. */ @@ -2775,24 +3472,24 @@ yyreduce: YY_REDUCE_PRINT (yyn); switch (yyn) { - case 18: /* force_toplevel: VAR_FORCE_TOPLEVEL */ + case 18: #line 204 "./util/configparser.y" { OUTYY(("\nP(force-toplevel)\n")); } -#line 2784 "util/configparser.c" +#line 3481 "util/configparser.c" break; - case 19: /* serverstart: VAR_SERVER */ + case 19: #line 210 "./util/configparser.y" { OUTYY(("\nP(server:)\n")); } -#line 2792 "util/configparser.c" +#line 3489 "util/configparser.c" break; - case 243: /* stubstart: VAR_STUB_ZONE */ -#line 318 "./util/configparser.y" + case 244: +#line 319 "./util/configparser.y" { struct config_stub* s; OUTYY(("\nP(stub_zone:)\n")); @@ -2804,11 +3501,11 @@ yyreduce: yyerror("out of memory"); } } -#line 2808 "util/configparser.c" +#line 3505 "util/configparser.c" break; - case 254: /* forwardstart: VAR_FORWARD_ZONE */ -#line 336 "./util/configparser.y" + case 255: +#line 337 "./util/configparser.y" { struct config_stub* s; OUTYY(("\nP(forward_zone:)\n")); @@ -2820,11 +3517,11 @@ yyreduce: yyerror("out of memory"); } } -#line 2824 "util/configparser.c" +#line 3521 "util/configparser.c" break; - case 264: /* viewstart: VAR_VIEW */ -#line 354 "./util/configparser.y" + case 265: +#line 355 "./util/configparser.y" { struct config_view* s; OUTYY(("\nP(view:)\n")); @@ -2838,11 +3535,11 @@ yyreduce: yyerror("out of memory"); } } -#line 2842 "util/configparser.c" +#line 3539 "util/configparser.c" break; - case 274: /* authstart: VAR_AUTH_ZONE */ -#line 374 "./util/configparser.y" + case 275: +#line 375 "./util/configparser.y" { struct config_auth* s; OUTYY(("\nP(auth_zone:)\n")); @@ -2861,11 +3558,11 @@ yyreduce: yyerror("out of memory"); } } -#line 2865 "util/configparser.c" +#line 3562 "util/configparser.c" break; - case 287: /* rpz_tag: VAR_TAGS STRING_ARG */ -#line 401 "./util/configparser.y" + case 288: +#line 402 "./util/configparser.y" { uint8_t* bitlist; size_t len = 0; @@ -2882,11 +3579,11 @@ yyreduce: } } -#line 2886 "util/configparser.c" +#line 3583 "util/configparser.c" break; - case 288: /* rpz_action_override: VAR_RPZ_ACTION_OVERRIDE STRING_ARG */ -#line 420 "./util/configparser.y" + case 289: +#line 421 "./util/configparser.y" { OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "nxdomain")!=0 && strcmp((yyvsp[0].str), "nodata")!=0 && @@ -2901,21 +3598,21 @@ yyreduce: cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); } } -#line 2905 "util/configparser.c" +#line 3602 "util/configparser.c" break; - case 289: /* rpz_cname_override: VAR_RPZ_CNAME_OVERRIDE STRING_ARG */ -#line 437 "./util/configparser.y" + case 290: +#line 438 "./util/configparser.y" { OUTYY(("P(rpz_cname_override:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->rpz_cname); cfg_parser->cfg->auths->rpz_cname = (yyvsp[0].str); } -#line 2915 "util/configparser.c" +#line 3612 "util/configparser.c" break; - case 290: /* rpz_log: VAR_RPZ_LOG STRING_ARG */ -#line 445 "./util/configparser.y" + case 291: +#line 446 "./util/configparser.y" { OUTYY(("P(rpz_log:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2923,21 +3620,21 @@ yyreduce: else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2927 "util/configparser.c" +#line 3624 "util/configparser.c" break; - case 291: /* rpz_log_name: VAR_RPZ_LOG_NAME STRING_ARG */ -#line 455 "./util/configparser.y" + case 292: +#line 456 "./util/configparser.y" { OUTYY(("P(rpz_log_name:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->rpz_log_name); cfg_parser->cfg->auths->rpz_log_name = (yyvsp[0].str); } -#line 2937 "util/configparser.c" +#line 3634 "util/configparser.c" break; - case 292: /* rpz_signal_nxdomain_ra: VAR_RPZ_SIGNAL_NXDOMAIN_RA STRING_ARG */ -#line 462 "./util/configparser.y" + case 293: +#line 463 "./util/configparser.y" { OUTYY(("P(rpz_signal_nxdomain_ra:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2945,11 +3642,11 @@ yyreduce: else cfg_parser->cfg->auths->rpz_signal_nxdomain_ra = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2949 "util/configparser.c" +#line 3646 "util/configparser.c" break; - case 293: /* rpzstart: VAR_RPZ */ -#line 472 "./util/configparser.y" + case 294: +#line 473 "./util/configparser.y" { struct config_auth* s; OUTYY(("\nP(rpz:)\n")); @@ -2966,11 +3663,11 @@ yyreduce: yyerror("out of memory"); } } -#line 2970 "util/configparser.c" +#line 3667 "util/configparser.c" break; - case 308: /* server_num_threads: VAR_NUM_THREADS STRING_ARG */ -#line 496 "./util/configparser.y" + case 309: +#line 497 "./util/configparser.y" { OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -2978,11 +3675,11 @@ yyreduce: else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2982 "util/configparser.c" +#line 3679 "util/configparser.c" break; - case 309: /* server_verbosity: VAR_VERBOSITY STRING_ARG */ -#line 505 "./util/configparser.y" + case 310: +#line 506 "./util/configparser.y" { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -2990,11 +3687,11 @@ yyreduce: else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2994 "util/configparser.c" +#line 3691 "util/configparser.c" break; - case 310: /* server_statistics_interval: VAR_STATISTICS_INTERVAL STRING_ARG */ -#line 514 "./util/configparser.y" + case 311: +#line 515 "./util/configparser.y" { OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) @@ -3004,11 +3701,11 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3008 "util/configparser.c" +#line 3705 "util/configparser.c" break; - case 311: /* server_statistics_cumulative: VAR_STATISTICS_CUMULATIVE STRING_ARG */ -#line 525 "./util/configparser.y" + case 312: +#line 526 "./util/configparser.y" { OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3016,11 +3713,11 @@ yyreduce: else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3020 "util/configparser.c" +#line 3717 "util/configparser.c" break; - case 312: /* server_extended_statistics: VAR_EXTENDED_STATISTICS STRING_ARG */ -#line 534 "./util/configparser.y" + case 313: +#line 535 "./util/configparser.y" { OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3028,11 +3725,11 @@ yyreduce: else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3032 "util/configparser.c" +#line 3729 "util/configparser.c" break; - case 313: /* server_shm_enable: VAR_SHM_ENABLE STRING_ARG */ -#line 543 "./util/configparser.y" + case 314: +#line 544 "./util/configparser.y" { OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3040,11 +3737,11 @@ yyreduce: else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3044 "util/configparser.c" +#line 3741 "util/configparser.c" break; - case 314: /* server_shm_key: VAR_SHM_KEY STRING_ARG */ -#line 552 "./util/configparser.y" + case 315: +#line 553 "./util/configparser.y" { OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) @@ -3054,11 +3751,11 @@ yyreduce: else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3058 "util/configparser.c" +#line 3755 "util/configparser.c" break; - case 315: /* server_port: VAR_PORT STRING_ARG */ -#line 563 "./util/configparser.y" + case 316: +#line 564 "./util/configparser.y" { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3066,11 +3763,11 @@ yyreduce: else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3070 "util/configparser.c" +#line 3767 "util/configparser.c" break; - case 316: /* server_send_client_subnet: VAR_SEND_CLIENT_SUBNET STRING_ARG */ -#line 572 "./util/configparser.y" + case 317: +#line 573 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str))); @@ -3081,11 +3778,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3085 "util/configparser.c" +#line 3782 "util/configparser.c" break; - case 317: /* server_client_subnet_zone: VAR_CLIENT_SUBNET_ZONE STRING_ARG */ -#line 584 "./util/configparser.y" + case 318: +#line 585 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str))); @@ -3097,11 +3794,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3101 "util/configparser.c" +#line 3798 "util/configparser.c" break; - case 318: /* server_client_subnet_always_forward: VAR_CLIENT_SUBNET_ALWAYS_FORWARD STRING_ARG */ -#line 598 "./util/configparser.y" + case 319: +#line 599 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str))); @@ -3115,11 +3812,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3119 "util/configparser.c" +#line 3816 "util/configparser.c" break; - case 319: /* server_client_subnet_opcode: VAR_CLIENT_SUBNET_OPCODE STRING_ARG */ -#line 613 "./util/configparser.y" + case 320: +#line 614 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str))); @@ -3129,11 +3826,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3133 "util/configparser.c" +#line 3830 "util/configparser.c" break; - case 320: /* server_max_client_subnet_ipv4: VAR_MAX_CLIENT_SUBNET_IPV4 STRING_ARG */ -#line 624 "./util/configparser.y" + case 321: +#line 625 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -3149,11 +3846,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3153 "util/configparser.c" +#line 3850 "util/configparser.c" break; - case 321: /* server_max_client_subnet_ipv6: VAR_MAX_CLIENT_SUBNET_IPV6 STRING_ARG */ -#line 641 "./util/configparser.y" + case 322: +#line 642 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3169,11 +3866,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3173 "util/configparser.c" +#line 3870 "util/configparser.c" break; - case 322: /* server_min_client_subnet_ipv4: VAR_MIN_CLIENT_SUBNET_IPV4 STRING_ARG */ -#line 658 "./util/configparser.y" + case 323: +#line 659 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -3189,11 +3886,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3193 "util/configparser.c" +#line 3890 "util/configparser.c" break; - case 323: /* server_min_client_subnet_ipv6: VAR_MIN_CLIENT_SUBNET_IPV6 STRING_ARG */ -#line 675 "./util/configparser.y" + case 324: +#line 676 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3209,11 +3906,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3213 "util/configparser.c" +#line 3910 "util/configparser.c" break; - case 324: /* server_max_ecs_tree_size_ipv4: VAR_MAX_ECS_TREE_SIZE_IPV4 STRING_ARG */ -#line 692 "./util/configparser.y" + case 325: +#line 693 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str))); @@ -3227,11 +3924,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3231 "util/configparser.c" +#line 3928 "util/configparser.c" break; - case 325: /* server_max_ecs_tree_size_ipv6: VAR_MAX_ECS_TREE_SIZE_IPV6 STRING_ARG */ -#line 707 "./util/configparser.y" + case 326: +#line 708 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str))); @@ -3245,11 +3942,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3249 "util/configparser.c" +#line 3946 "util/configparser.c" break; - case 326: /* server_interface: VAR_INTERFACE STRING_ARG */ -#line 722 "./util/configparser.y" + case 327: +#line 723 "./util/configparser.y" { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_ifs == 0) @@ -3261,11 +3958,11 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 3265 "util/configparser.c" +#line 3962 "util/configparser.c" break; - case 327: /* server_outgoing_interface: VAR_OUTGOING_INTERFACE STRING_ARG */ -#line 735 "./util/configparser.y" + case 328: +#line 736 "./util/configparser.y" { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_out_ifs == 0) @@ -3279,11 +3976,11 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 3283 "util/configparser.c" +#line 3980 "util/configparser.c" break; - case 328: /* server_outgoing_range: VAR_OUTGOING_RANGE STRING_ARG */ -#line 750 "./util/configparser.y" + case 329: +#line 751 "./util/configparser.y" { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3291,11 +3988,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3295 "util/configparser.c" +#line 3992 "util/configparser.c" break; - case 329: /* server_outgoing_port_permit: VAR_OUTGOING_PORT_PERMIT STRING_ARG */ -#line 759 "./util/configparser.y" + case 330: +#line 760 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 1, @@ -3303,11 +4000,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3307 "util/configparser.c" +#line 4004 "util/configparser.c" break; - case 330: /* server_outgoing_port_avoid: VAR_OUTGOING_PORT_AVOID STRING_ARG */ -#line 768 "./util/configparser.y" + case 331: +#line 769 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 0, @@ -3315,11 +4012,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3319 "util/configparser.c" +#line 4016 "util/configparser.c" break; - case 331: /* server_outgoing_num_tcp: VAR_OUTGOING_NUM_TCP STRING_ARG */ -#line 777 "./util/configparser.y" + case 332: +#line 778 "./util/configparser.y" { OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3327,11 +4024,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3331 "util/configparser.c" +#line 4028 "util/configparser.c" break; - case 332: /* server_incoming_num_tcp: VAR_INCOMING_NUM_TCP STRING_ARG */ -#line 786 "./util/configparser.y" + case 333: +#line 787 "./util/configparser.y" { OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3339,11 +4036,11 @@ yyreduce: else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3343 "util/configparser.c" +#line 4040 "util/configparser.c" break; - case 333: /* server_interface_automatic: VAR_INTERFACE_AUTOMATIC STRING_ARG */ -#line 795 "./util/configparser.y" + case 334: +#line 796 "./util/configparser.y" { OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3351,11 +4048,21 @@ yyreduce: else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3355 "util/configparser.c" +#line 4052 "util/configparser.c" break; - case 334: /* server_do_ip4: VAR_DO_IP4 STRING_ARG */ -#line 804 "./util/configparser.y" + case 335: +#line 805 "./util/configparser.y" + { + OUTYY(("P(server_interface_automatic_ports:%s)\n", (yyvsp[0].str))); + free(cfg_parser->cfg->if_automatic_ports); + cfg_parser->cfg->if_automatic_ports = (yyvsp[0].str); + } +#line 4062 "util/configparser.c" + break; + + case 336: +#line 812 "./util/configparser.y" { OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3363,11 +4070,11 @@ yyreduce: else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3367 "util/configparser.c" +#line 4074 "util/configparser.c" break; - case 335: /* server_do_ip6: VAR_DO_IP6 STRING_ARG */ -#line 813 "./util/configparser.y" + case 337: +#line 821 "./util/configparser.y" { OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3375,11 +4082,11 @@ yyreduce: else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3379 "util/configparser.c" +#line 4086 "util/configparser.c" break; - case 336: /* server_do_udp: VAR_DO_UDP STRING_ARG */ -#line 822 "./util/configparser.y" + case 338: +#line 830 "./util/configparser.y" { OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3387,11 +4094,11 @@ yyreduce: else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3391 "util/configparser.c" +#line 4098 "util/configparser.c" break; - case 337: /* server_do_tcp: VAR_DO_TCP STRING_ARG */ -#line 831 "./util/configparser.y" + case 339: +#line 839 "./util/configparser.y" { OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3399,11 +4106,11 @@ yyreduce: else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3403 "util/configparser.c" +#line 4110 "util/configparser.c" break; - case 338: /* server_prefer_ip4: VAR_PREFER_IP4 STRING_ARG */ -#line 840 "./util/configparser.y" + case 340: +#line 848 "./util/configparser.y" { OUTYY(("P(server_prefer_ip4:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3411,11 +4118,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3415 "util/configparser.c" +#line 4122 "util/configparser.c" break; - case 339: /* server_prefer_ip6: VAR_PREFER_IP6 STRING_ARG */ -#line 849 "./util/configparser.y" + case 341: +#line 857 "./util/configparser.y" { OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3423,11 +4130,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3427 "util/configparser.c" +#line 4134 "util/configparser.c" break; - case 340: /* server_tcp_mss: VAR_TCP_MSS STRING_ARG */ -#line 858 "./util/configparser.y" + case 342: +#line 866 "./util/configparser.y" { OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3435,11 +4142,11 @@ yyreduce: else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3439 "util/configparser.c" +#line 4146 "util/configparser.c" break; - case 341: /* server_outgoing_tcp_mss: VAR_OUTGOING_TCP_MSS STRING_ARG */ -#line 867 "./util/configparser.y" + case 343: +#line 875 "./util/configparser.y" { OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3447,11 +4154,11 @@ yyreduce: else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3451 "util/configparser.c" +#line 4158 "util/configparser.c" break; - case 342: /* server_tcp_idle_timeout: VAR_TCP_IDLE_TIMEOUT STRING_ARG */ -#line 876 "./util/configparser.y" + case 344: +#line 884 "./util/configparser.y" { OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3463,11 +4170,11 @@ yyreduce: else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3467 "util/configparser.c" +#line 4174 "util/configparser.c" break; - case 343: /* server_max_reuse_tcp_queries: VAR_MAX_REUSE_TCP_QUERIES STRING_ARG */ -#line 889 "./util/configparser.y" + case 345: +#line 897 "./util/configparser.y" { OUTYY(("P(server_max_reuse_tcp_queries:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3477,11 +4184,11 @@ yyreduce: else cfg_parser->cfg->max_reuse_tcp_queries = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3481 "util/configparser.c" +#line 4188 "util/configparser.c" break; - case 344: /* server_tcp_reuse_timeout: VAR_TCP_REUSE_TIMEOUT STRING_ARG */ -#line 900 "./util/configparser.y" + case 346: +#line 908 "./util/configparser.y" { OUTYY(("P(server_tcp_reuse_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3491,11 +4198,11 @@ yyreduce: else cfg_parser->cfg->tcp_reuse_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3495 "util/configparser.c" +#line 4202 "util/configparser.c" break; - case 345: /* server_tcp_auth_query_timeout: VAR_TCP_AUTH_QUERY_TIMEOUT STRING_ARG */ -#line 911 "./util/configparser.y" + case 347: +#line 919 "./util/configparser.y" { OUTYY(("P(server_tcp_auth_query_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3505,11 +4212,11 @@ yyreduce: else cfg_parser->cfg->tcp_auth_query_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3509 "util/configparser.c" +#line 4216 "util/configparser.c" break; - case 346: /* server_tcp_keepalive: VAR_EDNS_TCP_KEEPALIVE STRING_ARG */ -#line 922 "./util/configparser.y" + case 348: +#line 930 "./util/configparser.y" { OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3517,11 +4224,11 @@ yyreduce: else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3521 "util/configparser.c" +#line 4228 "util/configparser.c" break; - case 347: /* server_tcp_keepalive_timeout: VAR_EDNS_TCP_KEEPALIVE_TIMEOUT STRING_ARG */ -#line 931 "./util/configparser.y" + case 349: +#line 939 "./util/configparser.y" { OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3533,11 +4240,11 @@ yyreduce: else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3537 "util/configparser.c" +#line 4244 "util/configparser.c" break; - case 348: /* server_tcp_upstream: VAR_TCP_UPSTREAM STRING_ARG */ -#line 944 "./util/configparser.y" + case 350: +#line 952 "./util/configparser.y" { OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3545,11 +4252,11 @@ yyreduce: else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3549 "util/configparser.c" +#line 4256 "util/configparser.c" break; - case 349: /* server_udp_upstream_without_downstream: VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM STRING_ARG */ -#line 953 "./util/configparser.y" + case 351: +#line 961 "./util/configparser.y" { OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3557,11 +4264,11 @@ yyreduce: else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3561 "util/configparser.c" +#line 4268 "util/configparser.c" break; - case 350: /* server_ssl_upstream: VAR_SSL_UPSTREAM STRING_ARG */ -#line 962 "./util/configparser.y" + case 352: +#line 970 "./util/configparser.y" { OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3569,31 +4276,31 @@ yyreduce: else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3573 "util/configparser.c" +#line 4280 "util/configparser.c" break; - case 351: /* server_ssl_service_key: VAR_SSL_SERVICE_KEY STRING_ARG */ -#line 971 "./util/configparser.y" + case 353: +#line 979 "./util/configparser.y" { OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ssl_service_key); cfg_parser->cfg->ssl_service_key = (yyvsp[0].str); } -#line 3583 "util/configparser.c" +#line 4290 "util/configparser.c" break; - case 352: /* server_ssl_service_pem: VAR_SSL_SERVICE_PEM STRING_ARG */ -#line 978 "./util/configparser.y" + case 354: +#line 986 "./util/configparser.y" { OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ssl_service_pem); cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str); } -#line 3593 "util/configparser.c" +#line 4300 "util/configparser.c" break; - case 353: /* server_ssl_port: VAR_SSL_PORT STRING_ARG */ -#line 985 "./util/configparser.y" + case 355: +#line 993 "./util/configparser.y" { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3601,21 +4308,21 @@ yyreduce: else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3605 "util/configparser.c" +#line 4312 "util/configparser.c" break; - case 354: /* server_tls_cert_bundle: VAR_TLS_CERT_BUNDLE STRING_ARG */ -#line 994 "./util/configparser.y" + case 356: +#line 1002 "./util/configparser.y" { OUTYY(("P(server_tls_cert_bundle:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_cert_bundle); cfg_parser->cfg->tls_cert_bundle = (yyvsp[0].str); } -#line 3615 "util/configparser.c" +#line 4322 "util/configparser.c" break; - case 355: /* server_tls_win_cert: VAR_TLS_WIN_CERT STRING_ARG */ -#line 1001 "./util/configparser.y" + case 357: +#line 1009 "./util/configparser.y" { OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3623,53 +4330,53 @@ yyreduce: else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3627 "util/configparser.c" +#line 4334 "util/configparser.c" break; - case 356: /* server_tls_additional_port: VAR_TLS_ADDITIONAL_PORT STRING_ARG */ -#line 1010 "./util/configparser.y" + case 358: +#line 1018 "./util/configparser.y" { OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->tls_additional_port, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3638 "util/configparser.c" +#line 4345 "util/configparser.c" break; - case 357: /* server_tls_ciphers: VAR_TLS_CIPHERS STRING_ARG */ -#line 1018 "./util/configparser.y" + case 359: +#line 1026 "./util/configparser.y" { OUTYY(("P(server_tls_ciphers:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_ciphers); cfg_parser->cfg->tls_ciphers = (yyvsp[0].str); } -#line 3648 "util/configparser.c" +#line 4355 "util/configparser.c" break; - case 358: /* server_tls_ciphersuites: VAR_TLS_CIPHERSUITES STRING_ARG */ -#line 1025 "./util/configparser.y" + case 360: +#line 1033 "./util/configparser.y" { OUTYY(("P(server_tls_ciphersuites:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_ciphersuites); cfg_parser->cfg->tls_ciphersuites = (yyvsp[0].str); } -#line 3658 "util/configparser.c" +#line 4365 "util/configparser.c" break; - case 359: /* server_tls_session_ticket_keys: VAR_TLS_SESSION_TICKET_KEYS STRING_ARG */ -#line 1032 "./util/configparser.y" + case 361: +#line 1040 "./util/configparser.y" { OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append(&cfg_parser->cfg->tls_session_ticket_keys, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3669 "util/configparser.c" +#line 4376 "util/configparser.c" break; - case 360: /* server_tls_use_sni: VAR_TLS_USE_SNI STRING_ARG */ -#line 1040 "./util/configparser.y" + case 362: +#line 1048 "./util/configparser.y" { OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3677,11 +4384,11 @@ yyreduce: else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3681 "util/configparser.c" +#line 4388 "util/configparser.c" break; - case 361: /* server_https_port: VAR_HTTPS_PORT STRING_ARG */ -#line 1049 "./util/configparser.y" + case 363: +#line 1057 "./util/configparser.y" { OUTYY(("P(server_https_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3689,11 +4396,11 @@ yyreduce: else cfg_parser->cfg->https_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3693 "util/configparser.c" +#line 4400 "util/configparser.c" break; - case 362: /* server_http_endpoint: VAR_HTTP_ENDPOINT STRING_ARG */ -#line 1057 "./util/configparser.y" + case 364: +#line 1065 "./util/configparser.y" { OUTYY(("P(server_http_endpoint:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->http_endpoint); @@ -3709,11 +4416,11 @@ yyreduce: cfg_parser->cfg->http_endpoint = (yyvsp[0].str); } } -#line 3713 "util/configparser.c" +#line 4420 "util/configparser.c" break; - case 363: /* server_http_max_streams: VAR_HTTP_MAX_STREAMS STRING_ARG */ -#line 1073 "./util/configparser.y" + case 365: +#line 1081 "./util/configparser.y" { OUTYY(("P(server_http_max_streams:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3721,11 +4428,11 @@ yyreduce: else cfg_parser->cfg->http_max_streams = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3725 "util/configparser.c" +#line 4432 "util/configparser.c" break; - case 364: /* server_http_query_buffer_size: VAR_HTTP_QUERY_BUFFER_SIZE STRING_ARG */ -#line 1081 "./util/configparser.y" + case 366: +#line 1089 "./util/configparser.y" { OUTYY(("P(server_http_query_buffer_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), @@ -3733,11 +4440,11 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3737 "util/configparser.c" +#line 4444 "util/configparser.c" break; - case 365: /* server_http_response_buffer_size: VAR_HTTP_RESPONSE_BUFFER_SIZE STRING_ARG */ -#line 1089 "./util/configparser.y" + case 367: +#line 1097 "./util/configparser.y" { OUTYY(("P(server_http_response_buffer_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), @@ -3745,11 +4452,11 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3749 "util/configparser.c" +#line 4456 "util/configparser.c" break; - case 366: /* server_http_nodelay: VAR_HTTP_NODELAY STRING_ARG */ -#line 1097 "./util/configparser.y" + case 368: +#line 1105 "./util/configparser.y" { OUTYY(("P(server_http_nodelay:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3757,11 +4464,11 @@ yyreduce: else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3761 "util/configparser.c" +#line 4468 "util/configparser.c" break; - case 367: /* server_http_notls_downstream: VAR_HTTP_NOTLS_DOWNSTREAM STRING_ARG */ -#line 1105 "./util/configparser.y" + case 369: +#line 1113 "./util/configparser.y" { OUTYY(("P(server_http_notls_downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3769,11 +4476,11 @@ yyreduce: else cfg_parser->cfg->http_notls_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3773 "util/configparser.c" +#line 4480 "util/configparser.c" break; - case 368: /* server_use_systemd: VAR_USE_SYSTEMD STRING_ARG */ -#line 1113 "./util/configparser.y" + case 370: +#line 1121 "./util/configparser.y" { OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3781,11 +4488,11 @@ yyreduce: else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3785 "util/configparser.c" +#line 4492 "util/configparser.c" break; - case 369: /* server_do_daemonize: VAR_DO_DAEMONIZE STRING_ARG */ -#line 1122 "./util/configparser.y" + case 371: +#line 1130 "./util/configparser.y" { OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3793,11 +4500,11 @@ yyreduce: else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3797 "util/configparser.c" +#line 4504 "util/configparser.c" break; - case 370: /* server_use_syslog: VAR_USE_SYSLOG STRING_ARG */ -#line 1131 "./util/configparser.y" + case 372: +#line 1139 "./util/configparser.y" { OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3810,11 +4517,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3814 "util/configparser.c" +#line 4521 "util/configparser.c" break; - case 371: /* server_log_time_ascii: VAR_LOG_TIME_ASCII STRING_ARG */ -#line 1145 "./util/configparser.y" + case 373: +#line 1153 "./util/configparser.y" { OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3822,11 +4529,11 @@ yyreduce: else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3826 "util/configparser.c" +#line 4533 "util/configparser.c" break; - case 372: /* server_log_queries: VAR_LOG_QUERIES STRING_ARG */ -#line 1154 "./util/configparser.y" + case 374: +#line 1162 "./util/configparser.y" { OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3834,11 +4541,11 @@ yyreduce: else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3838 "util/configparser.c" +#line 4545 "util/configparser.c" break; - case 373: /* server_log_replies: VAR_LOG_REPLIES STRING_ARG */ -#line 1163 "./util/configparser.y" + case 375: +#line 1171 "./util/configparser.y" { OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3846,11 +4553,11 @@ yyreduce: else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3850 "util/configparser.c" +#line 4557 "util/configparser.c" break; - case 374: /* server_log_tag_queryreply: VAR_LOG_TAG_QUERYREPLY STRING_ARG */ -#line 1172 "./util/configparser.y" + case 376: +#line 1180 "./util/configparser.y" { OUTYY(("P(server_log_tag_queryreply:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3858,11 +4565,11 @@ yyreduce: else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3862 "util/configparser.c" +#line 4569 "util/configparser.c" break; - case 375: /* server_log_servfail: VAR_LOG_SERVFAIL STRING_ARG */ -#line 1181 "./util/configparser.y" + case 377: +#line 1189 "./util/configparser.y" { OUTYY(("P(server_log_servfail:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3870,11 +4577,11 @@ yyreduce: else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3874 "util/configparser.c" +#line 4581 "util/configparser.c" break; - case 376: /* server_log_local_actions: VAR_LOG_LOCAL_ACTIONS STRING_ARG */ -#line 1190 "./util/configparser.y" + case 378: +#line 1198 "./util/configparser.y" { OUTYY(("P(server_log_local_actions:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3882,31 +4589,31 @@ yyreduce: else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3886 "util/configparser.c" +#line 4593 "util/configparser.c" break; - case 377: /* server_chroot: VAR_CHROOT STRING_ARG */ -#line 1199 "./util/configparser.y" + case 379: +#line 1207 "./util/configparser.y" { OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->chrootdir); cfg_parser->cfg->chrootdir = (yyvsp[0].str); } -#line 3896 "util/configparser.c" +#line 4603 "util/configparser.c" break; - case 378: /* server_username: VAR_USERNAME STRING_ARG */ -#line 1206 "./util/configparser.y" + case 380: +#line 1214 "./util/configparser.y" { OUTYY(("P(server_username:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->username); cfg_parser->cfg->username = (yyvsp[0].str); } -#line 3906 "util/configparser.c" +#line 4613 "util/configparser.c" break; - case 379: /* server_directory: VAR_DIRECTORY STRING_ARG */ -#line 1213 "./util/configparser.y" + case 381: +#line 1221 "./util/configparser.y" { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->directory); @@ -3931,105 +4638,105 @@ yyreduce: } } } -#line 3935 "util/configparser.c" +#line 4642 "util/configparser.c" break; - case 380: /* server_logfile: VAR_LOGFILE STRING_ARG */ -#line 1239 "./util/configparser.y" + case 382: +#line 1247 "./util/configparser.y" { OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->logfile); cfg_parser->cfg->logfile = (yyvsp[0].str); cfg_parser->cfg->use_syslog = 0; } -#line 3946 "util/configparser.c" +#line 4653 "util/configparser.c" break; - case 381: /* server_pidfile: VAR_PIDFILE STRING_ARG */ -#line 1247 "./util/configparser.y" + case 383: +#line 1255 "./util/configparser.y" { OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->pidfile); cfg_parser->cfg->pidfile = (yyvsp[0].str); } -#line 3956 "util/configparser.c" +#line 4663 "util/configparser.c" break; - case 382: /* server_root_hints: VAR_ROOT_HINTS STRING_ARG */ -#line 1254 "./util/configparser.y" + case 384: +#line 1262 "./util/configparser.y" { OUTYY(("P(server_root_hints:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3966 "util/configparser.c" +#line 4673 "util/configparser.c" break; - case 383: /* server_dlv_anchor_file: VAR_DLV_ANCHOR_FILE STRING_ARG */ -#line 1261 "./util/configparser.y" + case 385: +#line 1269 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str))); log_warn("option dlv-anchor-file ignored: DLV is decommissioned"); free((yyvsp[0].str)); } -#line 3976 "util/configparser.c" +#line 4683 "util/configparser.c" break; - case 384: /* server_dlv_anchor: VAR_DLV_ANCHOR STRING_ARG */ -#line 1268 "./util/configparser.y" + case 386: +#line 1276 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str))); log_warn("option dlv-anchor ignored: DLV is decommissioned"); free((yyvsp[0].str)); } -#line 3986 "util/configparser.c" +#line 4693 "util/configparser.c" break; - case 385: /* server_auto_trust_anchor_file: VAR_AUTO_TRUST_ANCHOR_FILE STRING_ARG */ -#line 1275 "./util/configparser.y" + case 387: +#line 1283 "./util/configparser.y" { OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> auto_trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3997 "util/configparser.c" +#line 4704 "util/configparser.c" break; - case 386: /* server_trust_anchor_file: VAR_TRUST_ANCHOR_FILE STRING_ARG */ -#line 1283 "./util/configparser.y" + case 388: +#line 1291 "./util/configparser.y" { OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4008 "util/configparser.c" +#line 4715 "util/configparser.c" break; - case 387: /* server_trusted_keys_file: VAR_TRUSTED_KEYS_FILE STRING_ARG */ -#line 1291 "./util/configparser.y" + case 389: +#line 1299 "./util/configparser.y" { OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> trusted_keys_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4019 "util/configparser.c" +#line 4726 "util/configparser.c" break; - case 388: /* server_trust_anchor: VAR_TRUST_ANCHOR STRING_ARG */ -#line 1299 "./util/configparser.y" + case 390: +#line 1307 "./util/configparser.y" { OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4029 "util/configparser.c" +#line 4736 "util/configparser.c" break; - case 389: /* server_trust_anchor_signaling: VAR_TRUST_ANCHOR_SIGNALING STRING_ARG */ -#line 1306 "./util/configparser.y" + case 391: +#line 1314 "./util/configparser.y" { OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4039,11 +4746,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4043 "util/configparser.c" +#line 4750 "util/configparser.c" break; - case 390: /* server_root_key_sentinel: VAR_ROOT_KEY_SENTINEL STRING_ARG */ -#line 1317 "./util/configparser.y" + case 392: +#line 1325 "./util/configparser.y" { OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4053,21 +4760,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4057 "util/configparser.c" +#line 4764 "util/configparser.c" break; - case 391: /* server_domain_insecure: VAR_DOMAIN_INSECURE STRING_ARG */ -#line 1328 "./util/configparser.y" + case 393: +#line 1336 "./util/configparser.y" { OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4067 "util/configparser.c" +#line 4774 "util/configparser.c" break; - case 392: /* server_hide_identity: VAR_HIDE_IDENTITY STRING_ARG */ -#line 1335 "./util/configparser.y" + case 394: +#line 1343 "./util/configparser.y" { OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4075,11 +4782,11 @@ yyreduce: else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4079 "util/configparser.c" +#line 4786 "util/configparser.c" break; - case 393: /* server_hide_version: VAR_HIDE_VERSION STRING_ARG */ -#line 1344 "./util/configparser.y" + case 395: +#line 1352 "./util/configparser.y" { OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4087,11 +4794,11 @@ yyreduce: else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4091 "util/configparser.c" +#line 4798 "util/configparser.c" break; - case 394: /* server_hide_trustanchor: VAR_HIDE_TRUSTANCHOR STRING_ARG */ -#line 1353 "./util/configparser.y" + case 396: +#line 1361 "./util/configparser.y" { OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4099,11 +4806,11 @@ yyreduce: else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4103 "util/configparser.c" +#line 4810 "util/configparser.c" break; - case 395: /* server_hide_http_user_agent: VAR_HIDE_HTTP_USER_AGENT STRING_ARG */ -#line 1362 "./util/configparser.y" + case 397: +#line 1370 "./util/configparser.y" { OUTYY(("P(server_hide_user_agent:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4111,41 +4818,41 @@ yyreduce: else cfg_parser->cfg->hide_http_user_agent = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4115 "util/configparser.c" +#line 4822 "util/configparser.c" break; - case 396: /* server_identity: VAR_IDENTITY STRING_ARG */ -#line 1371 "./util/configparser.y" + case 398: +#line 1379 "./util/configparser.y" { OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->identity); cfg_parser->cfg->identity = (yyvsp[0].str); } -#line 4125 "util/configparser.c" +#line 4832 "util/configparser.c" break; - case 397: /* server_version: VAR_VERSION STRING_ARG */ -#line 1378 "./util/configparser.y" + case 399: +#line 1386 "./util/configparser.y" { OUTYY(("P(server_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->version); cfg_parser->cfg->version = (yyvsp[0].str); } -#line 4135 "util/configparser.c" +#line 4842 "util/configparser.c" break; - case 398: /* server_http_user_agent: VAR_HTTP_USER_AGENT STRING_ARG */ -#line 1385 "./util/configparser.y" + case 400: +#line 1393 "./util/configparser.y" { OUTYY(("P(server_http_user_agent:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->http_user_agent); cfg_parser->cfg->http_user_agent = (yyvsp[0].str); } -#line 4145 "util/configparser.c" +#line 4852 "util/configparser.c" break; - case 399: /* server_nsid: VAR_NSID STRING_ARG */ -#line 1392 "./util/configparser.y" + case 401: +#line 1400 "./util/configparser.y" { OUTYY(("P(server_nsid:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->nsid_cfg_str); @@ -4160,33 +4867,33 @@ yyreduce: yyerror("the NSID must be either a hex string or an " "ascii character string prepended with ascii_."); } -#line 4164 "util/configparser.c" +#line 4871 "util/configparser.c" break; - case 400: /* server_so_rcvbuf: VAR_SO_RCVBUF STRING_ARG */ -#line 1408 "./util/configparser.y" + case 402: +#line 1416 "./util/configparser.y" { OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_rcvbuf)) yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 4175 "util/configparser.c" +#line 4882 "util/configparser.c" break; - case 401: /* server_so_sndbuf: VAR_SO_SNDBUF STRING_ARG */ -#line 1416 "./util/configparser.y" + case 403: +#line 1424 "./util/configparser.y" { OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_sndbuf)) yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 4186 "util/configparser.c" +#line 4893 "util/configparser.c" break; - case 402: /* server_so_reuseport: VAR_SO_REUSEPORT STRING_ARG */ -#line 1424 "./util/configparser.y" + case 404: +#line 1432 "./util/configparser.y" { OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4195,11 +4902,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4199 "util/configparser.c" +#line 4906 "util/configparser.c" break; - case 403: /* server_ip_transparent: VAR_IP_TRANSPARENT STRING_ARG */ -#line 1434 "./util/configparser.y" + case 405: +#line 1442 "./util/configparser.y" { OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4208,11 +4915,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4212 "util/configparser.c" +#line 4919 "util/configparser.c" break; - case 404: /* server_ip_freebind: VAR_IP_FREEBIND STRING_ARG */ -#line 1444 "./util/configparser.y" + case 406: +#line 1452 "./util/configparser.y" { OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4221,11 +4928,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4225 "util/configparser.c" +#line 4932 "util/configparser.c" break; - case 405: /* server_ip_dscp: VAR_IP_DSCP STRING_ARG */ -#line 1454 "./util/configparser.y" + case 407: +#line 1462 "./util/configparser.y" { OUTYY(("P(server_ip_dscp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4238,22 +4945,22 @@ yyreduce: cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4242 "util/configparser.c" +#line 4949 "util/configparser.c" break; - case 406: /* server_stream_wait_size: VAR_STREAM_WAIT_SIZE STRING_ARG */ -#line 1468 "./util/configparser.y" + case 408: +#line 1476 "./util/configparser.y" { OUTYY(("P(server_stream_wait_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->stream_wait_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4253 "util/configparser.c" +#line 4960 "util/configparser.c" break; - case 407: /* server_edns_buffer_size: VAR_EDNS_BUFFER_SIZE STRING_ARG */ -#line 1476 "./util/configparser.y" + case 409: +#line 1484 "./util/configparser.y" { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4265,11 +4972,11 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4269 "util/configparser.c" +#line 4976 "util/configparser.c" break; - case 408: /* server_msg_buffer_size: VAR_MSG_BUFFER_SIZE STRING_ARG */ -#line 1489 "./util/configparser.y" + case 410: +#line 1497 "./util/configparser.y" { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4279,22 +4986,22 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4283 "util/configparser.c" +#line 4990 "util/configparser.c" break; - case 409: /* server_msg_cache_size: VAR_MSG_CACHE_SIZE STRING_ARG */ -#line 1500 "./util/configparser.y" + case 411: +#line 1508 "./util/configparser.y" { OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->msg_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4294 "util/configparser.c" +#line 5001 "util/configparser.c" break; - case 410: /* server_msg_cache_slabs: VAR_MSG_CACHE_SLABS STRING_ARG */ -#line 1508 "./util/configparser.y" + case 412: +#line 1516 "./util/configparser.y" { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -4306,11 +5013,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4310 "util/configparser.c" +#line 5017 "util/configparser.c" break; - case 411: /* server_num_queries_per_thread: VAR_NUM_QUERIES_PER_THREAD STRING_ARG */ -#line 1521 "./util/configparser.y" + case 413: +#line 1529 "./util/configparser.y" { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4318,11 +5025,11 @@ yyreduce: else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4322 "util/configparser.c" +#line 5029 "util/configparser.c" break; - case 412: /* server_jostle_timeout: VAR_JOSTLE_TIMEOUT STRING_ARG */ -#line 1530 "./util/configparser.y" + case 414: +#line 1538 "./util/configparser.y" { OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4330,11 +5037,11 @@ yyreduce: else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4334 "util/configparser.c" +#line 5041 "util/configparser.c" break; - case 413: /* server_delay_close: VAR_DELAY_CLOSE STRING_ARG */ -#line 1539 "./util/configparser.y" + case 415: +#line 1547 "./util/configparser.y" { OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4342,11 +5049,11 @@ yyreduce: else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4346 "util/configparser.c" +#line 5053 "util/configparser.c" break; - case 414: /* server_udp_connect: VAR_UDP_CONNECT STRING_ARG */ -#line 1548 "./util/configparser.y" + case 416: +#line 1556 "./util/configparser.y" { OUTYY(("P(server_udp_connect:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4354,11 +5061,11 @@ yyreduce: else cfg_parser->cfg->udp_connect = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4358 "util/configparser.c" +#line 5065 "util/configparser.c" break; - case 415: /* server_unblock_lan_zones: VAR_UNBLOCK_LAN_ZONES STRING_ARG */ -#line 1557 "./util/configparser.y" + case 417: +#line 1565 "./util/configparser.y" { OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4367,11 +5074,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4371 "util/configparser.c" +#line 5078 "util/configparser.c" break; - case 416: /* server_insecure_lan_zones: VAR_INSECURE_LAN_ZONES STRING_ARG */ -#line 1567 "./util/configparser.y" + case 418: +#line 1575 "./util/configparser.y" { OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4380,22 +5087,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4384 "util/configparser.c" +#line 5091 "util/configparser.c" break; - case 417: /* server_rrset_cache_size: VAR_RRSET_CACHE_SIZE STRING_ARG */ -#line 1577 "./util/configparser.y" + case 419: +#line 1585 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->rrset_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4395 "util/configparser.c" +#line 5102 "util/configparser.c" break; - case 418: /* server_rrset_cache_slabs: VAR_RRSET_CACHE_SLABS STRING_ARG */ -#line 1585 "./util/configparser.y" + case 420: +#line 1593 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -4407,11 +5114,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4411 "util/configparser.c" +#line 5118 "util/configparser.c" break; - case 419: /* server_infra_host_ttl: VAR_INFRA_HOST_TTL STRING_ARG */ -#line 1598 "./util/configparser.y" + case 421: +#line 1606 "./util/configparser.y" { OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4419,22 +5126,22 @@ yyreduce: else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4423 "util/configparser.c" +#line 5130 "util/configparser.c" break; - case 420: /* server_infra_lame_ttl: VAR_INFRA_LAME_TTL STRING_ARG */ -#line 1607 "./util/configparser.y" + case 422: +#line 1615 "./util/configparser.y" { OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str))); verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option " "removed, use infra-host-ttl)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4434 "util/configparser.c" +#line 5141 "util/configparser.c" break; - case 421: /* server_infra_cache_numhosts: VAR_INFRA_CACHE_NUMHOSTS STRING_ARG */ -#line 1615 "./util/configparser.y" + case 423: +#line 1623 "./util/configparser.y" { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4442,22 +5149,22 @@ yyreduce: else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4446 "util/configparser.c" +#line 5153 "util/configparser.c" break; - case 422: /* server_infra_cache_lame_size: VAR_INFRA_CACHE_LAME_SIZE STRING_ARG */ -#line 1624 "./util/configparser.y" + case 424: +#line 1632 "./util/configparser.y" { OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str))); verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s " "(option removed, use infra-cache-numhosts)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4457 "util/configparser.c" +#line 5164 "util/configparser.c" break; - case 423: /* server_infra_cache_slabs: VAR_INFRA_CACHE_SLABS STRING_ARG */ -#line 1632 "./util/configparser.y" + case 425: +#line 1640 "./util/configparser.y" { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -4469,11 +5176,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4473 "util/configparser.c" +#line 5180 "util/configparser.c" break; - case 424: /* server_infra_cache_min_rtt: VAR_INFRA_CACHE_MIN_RTT STRING_ARG */ -#line 1645 "./util/configparser.y" + case 426: +#line 1653 "./util/configparser.y" { OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4481,11 +5188,11 @@ yyreduce: else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4485 "util/configparser.c" +#line 5192 "util/configparser.c" break; - case 425: /* server_infra_keep_probing: VAR_INFRA_KEEP_PROBING STRING_ARG */ -#line 1654 "./util/configparser.y" + case 427: +#line 1662 "./util/configparser.y" { OUTYY(("P(server_infra_keep_probing:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4494,21 +5201,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4498 "util/configparser.c" +#line 5205 "util/configparser.c" break; - case 426: /* server_target_fetch_policy: VAR_TARGET_FETCH_POLICY STRING_ARG */ -#line 1664 "./util/configparser.y" + case 428: +#line 1672 "./util/configparser.y" { OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->target_fetch_policy); cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str); } -#line 4508 "util/configparser.c" +#line 5215 "util/configparser.c" break; - case 427: /* server_harden_short_bufsize: VAR_HARDEN_SHORT_BUFSIZE STRING_ARG */ -#line 1671 "./util/configparser.y" + case 429: +#line 1679 "./util/configparser.y" { OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4517,11 +5224,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4521 "util/configparser.c" +#line 5228 "util/configparser.c" break; - case 428: /* server_harden_large_queries: VAR_HARDEN_LARGE_QUERIES STRING_ARG */ -#line 1681 "./util/configparser.y" + case 430: +#line 1689 "./util/configparser.y" { OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4530,11 +5237,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4534 "util/configparser.c" +#line 5241 "util/configparser.c" break; - case 429: /* server_harden_glue: VAR_HARDEN_GLUE STRING_ARG */ -#line 1691 "./util/configparser.y" + case 431: +#line 1699 "./util/configparser.y" { OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4543,11 +5250,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4547 "util/configparser.c" +#line 5254 "util/configparser.c" break; - case 430: /* server_harden_dnssec_stripped: VAR_HARDEN_DNSSEC_STRIPPED STRING_ARG */ -#line 1701 "./util/configparser.y" + case 432: +#line 1709 "./util/configparser.y" { OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4556,11 +5263,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4560 "util/configparser.c" +#line 5267 "util/configparser.c" break; - case 431: /* server_harden_below_nxdomain: VAR_HARDEN_BELOW_NXDOMAIN STRING_ARG */ -#line 1711 "./util/configparser.y" + case 433: +#line 1719 "./util/configparser.y" { OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4569,11 +5276,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4573 "util/configparser.c" +#line 5280 "util/configparser.c" break; - case 432: /* server_harden_referral_path: VAR_HARDEN_REFERRAL_PATH STRING_ARG */ -#line 1721 "./util/configparser.y" + case 434: +#line 1729 "./util/configparser.y" { OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4582,11 +5289,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4586 "util/configparser.c" +#line 5293 "util/configparser.c" break; - case 433: /* server_harden_algo_downgrade: VAR_HARDEN_ALGO_DOWNGRADE STRING_ARG */ -#line 1731 "./util/configparser.y" + case 435: +#line 1739 "./util/configparser.y" { OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4595,11 +5302,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4599 "util/configparser.c" +#line 5306 "util/configparser.c" break; - case 434: /* server_use_caps_for_id: VAR_USE_CAPS_FOR_ID STRING_ARG */ -#line 1741 "./util/configparser.y" + case 436: +#line 1749 "./util/configparser.y" { OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4608,41 +5315,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4612 "util/configparser.c" +#line 5319 "util/configparser.c" break; - case 435: /* server_caps_whitelist: VAR_CAPS_WHITELIST STRING_ARG */ -#line 1751 "./util/configparser.y" + case 437: +#line 1759 "./util/configparser.y" { OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4622 "util/configparser.c" +#line 5329 "util/configparser.c" break; - case 436: /* server_private_address: VAR_PRIVATE_ADDRESS STRING_ARG */ -#line 1758 "./util/configparser.y" + case 438: +#line 1766 "./util/configparser.y" { OUTYY(("P(server_private_address:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4632 "util/configparser.c" +#line 5339 "util/configparser.c" break; - case 437: /* server_private_domain: VAR_PRIVATE_DOMAIN STRING_ARG */ -#line 1765 "./util/configparser.y" + case 439: +#line 1773 "./util/configparser.y" { OUTYY(("P(server_private_domain:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4642 "util/configparser.c" +#line 5349 "util/configparser.c" break; - case 438: /* server_prefetch: VAR_PREFETCH STRING_ARG */ -#line 1772 "./util/configparser.y" + case 440: +#line 1780 "./util/configparser.y" { OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4650,11 +5357,11 @@ yyreduce: else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4654 "util/configparser.c" +#line 5361 "util/configparser.c" break; - case 439: /* server_prefetch_key: VAR_PREFETCH_KEY STRING_ARG */ -#line 1781 "./util/configparser.y" + case 441: +#line 1789 "./util/configparser.y" { OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4662,11 +5369,11 @@ yyreduce: else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4666 "util/configparser.c" +#line 5373 "util/configparser.c" break; - case 440: /* server_deny_any: VAR_DENY_ANY STRING_ARG */ -#line 1790 "./util/configparser.y" + case 442: +#line 1798 "./util/configparser.y" { OUTYY(("P(server_deny_any:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4674,11 +5381,11 @@ yyreduce: else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4678 "util/configparser.c" +#line 5385 "util/configparser.c" break; - case 441: /* server_unwanted_reply_threshold: VAR_UNWANTED_REPLY_THRESHOLD STRING_ARG */ -#line 1799 "./util/configparser.y" + case 443: +#line 1807 "./util/configparser.y" { OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4686,21 +5393,21 @@ yyreduce: else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4690 "util/configparser.c" +#line 5397 "util/configparser.c" break; - case 442: /* server_do_not_query_address: VAR_DO_NOT_QUERY_ADDRESS STRING_ARG */ -#line 1808 "./util/configparser.y" + case 444: +#line 1816 "./util/configparser.y" { OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4700 "util/configparser.c" +#line 5407 "util/configparser.c" break; - case 443: /* server_do_not_query_localhost: VAR_DO_NOT_QUERY_LOCALHOST STRING_ARG */ -#line 1815 "./util/configparser.y" + case 445: +#line 1823 "./util/configparser.y" { OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4709,11 +5416,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4713 "util/configparser.c" +#line 5420 "util/configparser.c" break; - case 444: /* server_access_control: VAR_ACCESS_CONTROL STRING_ARG STRING_ARG */ -#line 1825 "./util/configparser.y" + case 446: +#line 1833 "./util/configparser.y" { OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 && @@ -4732,21 +5439,21 @@ yyreduce: fatal_exit("out of memory adding acl"); } } -#line 4736 "util/configparser.c" +#line 5443 "util/configparser.c" break; - case 445: /* server_module_conf: VAR_MODULE_CONF STRING_ARG */ -#line 1845 "./util/configparser.y" + case 447: +#line 1853 "./util/configparser.y" { OUTYY(("P(server_module_conf:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->module_conf); cfg_parser->cfg->module_conf = (yyvsp[0].str); } -#line 4746 "util/configparser.c" +#line 5453 "util/configparser.c" break; - case 446: /* server_val_override_date: VAR_VAL_OVERRIDE_DATE STRING_ARG */ -#line 1852 "./util/configparser.y" + case 448: +#line 1860 "./util/configparser.y" { OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4763,11 +5470,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4767 "util/configparser.c" +#line 5474 "util/configparser.c" break; - case 447: /* server_val_sig_skew_min: VAR_VAL_SIG_SKEW_MIN STRING_ARG */ -#line 1870 "./util/configparser.y" + case 449: +#line 1878 "./util/configparser.y" { OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4779,11 +5486,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4783 "util/configparser.c" +#line 5490 "util/configparser.c" break; - case 448: /* server_val_sig_skew_max: VAR_VAL_SIG_SKEW_MAX STRING_ARG */ -#line 1883 "./util/configparser.y" + case 450: +#line 1891 "./util/configparser.y" { OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4795,11 +5502,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4799 "util/configparser.c" +#line 5506 "util/configparser.c" break; - case 449: /* server_val_max_restart: VAR_VAL_MAX_RESTART STRING_ARG */ -#line 1896 "./util/configparser.y" + case 451: +#line 1904 "./util/configparser.y" { OUTYY(("P(server_val_max_restart:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4811,11 +5518,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4815 "util/configparser.c" +#line 5522 "util/configparser.c" break; - case 450: /* server_cache_max_ttl: VAR_CACHE_MAX_TTL STRING_ARG */ -#line 1909 "./util/configparser.y" + case 452: +#line 1917 "./util/configparser.y" { OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4823,11 +5530,11 @@ yyreduce: else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4827 "util/configparser.c" +#line 5534 "util/configparser.c" break; - case 451: /* server_cache_max_negative_ttl: VAR_CACHE_MAX_NEGATIVE_TTL STRING_ARG */ -#line 1918 "./util/configparser.y" + case 453: +#line 1926 "./util/configparser.y" { OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4835,11 +5542,11 @@ yyreduce: else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4839 "util/configparser.c" +#line 5546 "util/configparser.c" break; - case 452: /* server_cache_min_ttl: VAR_CACHE_MIN_TTL STRING_ARG */ -#line 1927 "./util/configparser.y" + case 454: +#line 1935 "./util/configparser.y" { OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4847,11 +5554,11 @@ yyreduce: else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4851 "util/configparser.c" +#line 5558 "util/configparser.c" break; - case 453: /* server_bogus_ttl: VAR_BOGUS_TTL STRING_ARG */ -#line 1936 "./util/configparser.y" + case 455: +#line 1944 "./util/configparser.y" { OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4859,11 +5566,11 @@ yyreduce: else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4863 "util/configparser.c" +#line 5570 "util/configparser.c" break; - case 454: /* server_val_clean_additional: VAR_VAL_CLEAN_ADDITIONAL STRING_ARG */ -#line 1945 "./util/configparser.y" + case 456: +#line 1953 "./util/configparser.y" { OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4872,11 +5579,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4876 "util/configparser.c" +#line 5583 "util/configparser.c" break; - case 455: /* server_val_permissive_mode: VAR_VAL_PERMISSIVE_MODE STRING_ARG */ -#line 1955 "./util/configparser.y" + case 457: +#line 1963 "./util/configparser.y" { OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4885,11 +5592,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4889 "util/configparser.c" +#line 5596 "util/configparser.c" break; - case 456: /* server_aggressive_nsec: VAR_AGGRESSIVE_NSEC STRING_ARG */ -#line 1965 "./util/configparser.y" + case 458: +#line 1973 "./util/configparser.y" { OUTYY(("P(server_aggressive_nsec:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4899,11 +5606,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4903 "util/configparser.c" +#line 5610 "util/configparser.c" break; - case 457: /* server_ignore_cd_flag: VAR_IGNORE_CD_FLAG STRING_ARG */ -#line 1976 "./util/configparser.y" + case 459: +#line 1984 "./util/configparser.y" { OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4911,11 +5618,11 @@ yyreduce: else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4915 "util/configparser.c" +#line 5622 "util/configparser.c" break; - case 458: /* server_serve_expired: VAR_SERVE_EXPIRED STRING_ARG */ -#line 1985 "./util/configparser.y" + case 460: +#line 1993 "./util/configparser.y" { OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4923,11 +5630,11 @@ yyreduce: else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4927 "util/configparser.c" +#line 5634 "util/configparser.c" break; - case 459: /* server_serve_expired_ttl: VAR_SERVE_EXPIRED_TTL STRING_ARG */ -#line 1994 "./util/configparser.y" + case 461: +#line 2002 "./util/configparser.y" { OUTYY(("P(server_serve_expired_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4935,11 +5642,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4939 "util/configparser.c" +#line 5646 "util/configparser.c" break; - case 460: /* server_serve_expired_ttl_reset: VAR_SERVE_EXPIRED_TTL_RESET STRING_ARG */ -#line 2003 "./util/configparser.y" + case 462: +#line 2011 "./util/configparser.y" { OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4947,11 +5654,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4951 "util/configparser.c" +#line 5658 "util/configparser.c" break; - case 461: /* server_serve_expired_reply_ttl: VAR_SERVE_EXPIRED_REPLY_TTL STRING_ARG */ -#line 2012 "./util/configparser.y" + case 463: +#line 2020 "./util/configparser.y" { OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4959,11 +5666,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4963 "util/configparser.c" +#line 5670 "util/configparser.c" break; - case 462: /* server_serve_expired_client_timeout: VAR_SERVE_EXPIRED_CLIENT_TIMEOUT STRING_ARG */ -#line 2021 "./util/configparser.y" + case 464: +#line 2029 "./util/configparser.y" { OUTYY(("P(server_serve_expired_client_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4971,11 +5678,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4975 "util/configparser.c" +#line 5682 "util/configparser.c" break; - case 463: /* server_serve_original_ttl: VAR_SERVE_ORIGINAL_TTL STRING_ARG */ -#line 2030 "./util/configparser.y" + case 465: +#line 2038 "./util/configparser.y" { OUTYY(("P(server_serve_original_ttl:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4983,11 +5690,11 @@ yyreduce: else cfg_parser->cfg->serve_original_ttl = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4987 "util/configparser.c" +#line 5694 "util/configparser.c" break; - case 464: /* server_fake_dsa: VAR_FAKE_DSA STRING_ARG */ -#line 2039 "./util/configparser.y" + case 466: +#line 2047 "./util/configparser.y" { OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4999,11 +5706,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5003 "util/configparser.c" +#line 5710 "util/configparser.c" break; - case 465: /* server_fake_sha1: VAR_FAKE_SHA1 STRING_ARG */ -#line 2052 "./util/configparser.y" + case 467: +#line 2060 "./util/configparser.y" { OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5015,11 +5722,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5019 "util/configparser.c" +#line 5726 "util/configparser.c" break; - case 466: /* server_val_log_level: VAR_VAL_LOG_LEVEL STRING_ARG */ -#line 2065 "./util/configparser.y" + case 468: +#line 2073 "./util/configparser.y" { OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5027,21 +5734,21 @@ yyreduce: else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5031 "util/configparser.c" +#line 5738 "util/configparser.c" break; - case 467: /* server_val_nsec3_keysize_iterations: VAR_VAL_NSEC3_KEYSIZE_ITERATIONS STRING_ARG */ -#line 2074 "./util/configparser.y" + case 469: +#line 2082 "./util/configparser.y" { OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->val_nsec3_key_iterations); cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str); } -#line 5041 "util/configparser.c" +#line 5748 "util/configparser.c" break; - case 468: /* server_zonemd_permissive_mode: VAR_ZONEMD_PERMISSIVE_MODE STRING_ARG */ -#line 2081 "./util/configparser.y" + case 470: +#line 2089 "./util/configparser.y" { OUTYY(("P(server_zonemd_permissive_mode:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5049,11 +5756,11 @@ yyreduce: else cfg_parser->cfg->zonemd_permissive_mode = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5053 "util/configparser.c" +#line 5760 "util/configparser.c" break; - case 469: /* server_add_holddown: VAR_ADD_HOLDDOWN STRING_ARG */ -#line 2090 "./util/configparser.y" + case 471: +#line 2098 "./util/configparser.y" { OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5061,11 +5768,11 @@ yyreduce: else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5065 "util/configparser.c" +#line 5772 "util/configparser.c" break; - case 470: /* server_del_holddown: VAR_DEL_HOLDDOWN STRING_ARG */ -#line 2099 "./util/configparser.y" + case 472: +#line 2107 "./util/configparser.y" { OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5073,11 +5780,11 @@ yyreduce: else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5077 "util/configparser.c" +#line 5784 "util/configparser.c" break; - case 471: /* server_keep_missing: VAR_KEEP_MISSING STRING_ARG */ -#line 2108 "./util/configparser.y" + case 473: +#line 2116 "./util/configparser.y" { OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5085,11 +5792,11 @@ yyreduce: else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5089 "util/configparser.c" +#line 5796 "util/configparser.c" break; - case 472: /* server_permit_small_holddown: VAR_PERMIT_SMALL_HOLDDOWN STRING_ARG */ -#line 2117 "./util/configparser.y" + case 474: +#line 2125 "./util/configparser.y" { OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5098,22 +5805,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5102 "util/configparser.c" +#line 5809 "util/configparser.c" break; - case 473: /* server_key_cache_size: VAR_KEY_CACHE_SIZE STRING_ARG */ -#line 2126 "./util/configparser.y" + case 475: +#line 2134 "./util/configparser.y" { OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->key_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5113 "util/configparser.c" +#line 5820 "util/configparser.c" break; - case 474: /* server_key_cache_slabs: VAR_KEY_CACHE_SLABS STRING_ARG */ -#line 2134 "./util/configparser.y" + case 476: +#line 2142 "./util/configparser.y" { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -5125,22 +5832,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5129 "util/configparser.c" +#line 5836 "util/configparser.c" break; - case 475: /* server_neg_cache_size: VAR_NEG_CACHE_SIZE STRING_ARG */ -#line 2147 "./util/configparser.y" + case 477: +#line 2155 "./util/configparser.y" { OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->neg_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5140 "util/configparser.c" +#line 5847 "util/configparser.c" break; - case 476: /* server_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */ -#line 2155 "./util/configparser.y" + case 478: +#line 2163 "./util/configparser.y" { OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && @@ -5184,21 +5891,21 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5188 "util/configparser.c" +#line 5895 "util/configparser.c" break; - case 477: /* server_local_data: VAR_LOCAL_DATA STRING_ARG */ -#line 2200 "./util/configparser.y" + case 479: +#line 2208 "./util/configparser.y" { OUTYY(("P(server_local_data:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[0].str))) fatal_exit("out of memory adding local-data"); } -#line 5198 "util/configparser.c" +#line 5905 "util/configparser.c" break; - case 478: /* server_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ -#line 2207 "./util/configparser.y" + case 480: +#line 2215 "./util/configparser.y" { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -5212,11 +5919,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5216 "util/configparser.c" +#line 5923 "util/configparser.c" break; - case 479: /* server_minimal_responses: VAR_MINIMAL_RESPONSES STRING_ARG */ -#line 2222 "./util/configparser.y" + case 481: +#line 2230 "./util/configparser.y" { OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5225,11 +5932,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5229 "util/configparser.c" +#line 5936 "util/configparser.c" break; - case 480: /* server_rrset_roundrobin: VAR_RRSET_ROUNDROBIN STRING_ARG */ -#line 2232 "./util/configparser.y" + case 482: +#line 2240 "./util/configparser.y" { OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5238,41 +5945,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5242 "util/configparser.c" +#line 5949 "util/configparser.c" break; - case 481: /* server_unknown_server_time_limit: VAR_UNKNOWN_SERVER_TIME_LIMIT STRING_ARG */ -#line 2242 "./util/configparser.y" + case 483: +#line 2250 "./util/configparser.y" { OUTYY(("P(server_unknown_server_time_limit:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->unknown_server_time_limit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5252 "util/configparser.c" +#line 5959 "util/configparser.c" break; - case 482: /* server_max_udp_size: VAR_MAX_UDP_SIZE STRING_ARG */ -#line 2249 "./util/configparser.y" + case 484: +#line 2257 "./util/configparser.y" { OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->max_udp_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5262 "util/configparser.c" +#line 5969 "util/configparser.c" break; - case 483: /* server_dns64_prefix: VAR_DNS64_PREFIX STRING_ARG */ -#line 2256 "./util/configparser.y" + case 485: +#line 2264 "./util/configparser.y" { OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dns64_prefix); cfg_parser->cfg->dns64_prefix = (yyvsp[0].str); } -#line 5272 "util/configparser.c" +#line 5979 "util/configparser.c" break; - case 484: /* server_dns64_synthall: VAR_DNS64_SYNTHALL STRING_ARG */ -#line 2263 "./util/configparser.y" + case 486: +#line 2271 "./util/configparser.y" { OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5280,22 +5987,22 @@ yyreduce: else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5284 "util/configparser.c" +#line 5991 "util/configparser.c" break; - case 485: /* server_dns64_ignore_aaaa: VAR_DNS64_IGNORE_AAAA STRING_ARG */ -#line 2272 "./util/configparser.y" + case 487: +#line 2280 "./util/configparser.y" { OUTYY(("P(dns64_ignore_aaaa:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dns64_ignore_aaaa, (yyvsp[0].str))) fatal_exit("out of memory adding dns64-ignore-aaaa"); } -#line 5295 "util/configparser.c" +#line 6002 "util/configparser.c" break; - case 486: /* server_define_tag: VAR_DEFINE_TAG STRING_ARG */ -#line 2280 "./util/configparser.y" + case 488: +#line 2288 "./util/configparser.y" { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); @@ -5308,11 +6015,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5312 "util/configparser.c" +#line 6019 "util/configparser.c" break; - case 487: /* server_local_zone_tag: VAR_LOCAL_ZONE_TAG STRING_ARG STRING_ARG */ -#line 2294 "./util/configparser.y" + case 489: +#line 2302 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5332,11 +6039,11 @@ yyreduce: } } } -#line 5336 "util/configparser.c" +#line 6043 "util/configparser.c" break; - case 488: /* server_access_control_tag: VAR_ACCESS_CONTROL_TAG STRING_ARG STRING_ARG */ -#line 2315 "./util/configparser.y" + case 490: +#line 2323 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5356,11 +6063,11 @@ yyreduce: } } } -#line 5360 "util/configparser.c" +#line 6067 "util/configparser.c" break; - case 489: /* server_access_control_tag_action: VAR_ACCESS_CONTROL_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG */ -#line 2336 "./util/configparser.y" + case 491: +#line 2344 "./util/configparser.y" { OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_actions, @@ -5371,11 +6078,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5375 "util/configparser.c" +#line 6082 "util/configparser.c" break; - case 490: /* server_access_control_tag_data: VAR_ACCESS_CONTROL_TAG_DATA STRING_ARG STRING_ARG STRING_ARG */ -#line 2348 "./util/configparser.y" + case 492: +#line 2356 "./util/configparser.y" { OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_datas, @@ -5386,11 +6093,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5390 "util/configparser.c" +#line 6097 "util/configparser.c" break; - case 491: /* server_local_zone_override: VAR_LOCAL_ZONE_OVERRIDE STRING_ARG STRING_ARG STRING_ARG */ -#line 2360 "./util/configparser.y" + case 493: +#line 2368 "./util/configparser.y" { OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides, @@ -5401,11 +6108,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5405 "util/configparser.c" +#line 6112 "util/configparser.c" break; - case 492: /* server_access_control_view: VAR_ACCESS_CONTROL_VIEW STRING_ARG STRING_ARG */ -#line 2372 "./util/configparser.y" + case 494: +#line 2380 "./util/configparser.y" { OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view, @@ -5413,11 +6120,11 @@ yyreduce: yyerror("out of memory"); } } -#line 5417 "util/configparser.c" +#line 6124 "util/configparser.c" break; - case 493: /* server_response_ip_tag: VAR_RESPONSE_IP_TAG STRING_ARG STRING_ARG */ -#line 2381 "./util/configparser.y" + case 495: +#line 2389 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5437,11 +6144,11 @@ yyreduce: } } } -#line 5441 "util/configparser.c" +#line 6148 "util/configparser.c" break; - case 494: /* server_ip_ratelimit: VAR_IP_RATELIMIT STRING_ARG */ -#line 2402 "./util/configparser.y" + case 496: +#line 2410 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5449,11 +6156,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5453 "util/configparser.c" +#line 6160 "util/configparser.c" break; - case 495: /* server_ratelimit: VAR_RATELIMIT STRING_ARG */ -#line 2411 "./util/configparser.y" + case 497: +#line 2419 "./util/configparser.y" { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5461,33 +6168,33 @@ yyreduce: else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5465 "util/configparser.c" +#line 6172 "util/configparser.c" break; - case 496: /* server_ip_ratelimit_size: VAR_IP_RATELIMIT_SIZE STRING_ARG */ -#line 2420 "./util/configparser.y" + case 498: +#line 2428 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ip_ratelimit_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5476 "util/configparser.c" +#line 6183 "util/configparser.c" break; - case 497: /* server_ratelimit_size: VAR_RATELIMIT_SIZE STRING_ARG */ -#line 2428 "./util/configparser.y" + case 499: +#line 2436 "./util/configparser.y" { OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ratelimit_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5487 "util/configparser.c" +#line 6194 "util/configparser.c" break; - case 498: /* server_ip_ratelimit_slabs: VAR_IP_RATELIMIT_SLABS STRING_ARG */ -#line 2436 "./util/configparser.y" + case 500: +#line 2444 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -5499,11 +6206,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5503 "util/configparser.c" +#line 6210 "util/configparser.c" break; - case 499: /* server_ratelimit_slabs: VAR_RATELIMIT_SLABS STRING_ARG */ -#line 2449 "./util/configparser.y" + case 501: +#line 2457 "./util/configparser.y" { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -5515,11 +6222,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5519 "util/configparser.c" +#line 6226 "util/configparser.c" break; - case 500: /* server_ratelimit_for_domain: VAR_RATELIMIT_FOR_DOMAIN STRING_ARG STRING_ARG */ -#line 2462 "./util/configparser.y" + case 502: +#line 2470 "./util/configparser.y" { OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) { @@ -5533,11 +6240,11 @@ yyreduce: "ratelimit-for-domain"); } } -#line 5537 "util/configparser.c" +#line 6244 "util/configparser.c" break; - case 501: /* server_ratelimit_below_domain: VAR_RATELIMIT_BELOW_DOMAIN STRING_ARG STRING_ARG */ -#line 2477 "./util/configparser.y" + case 503: +#line 2485 "./util/configparser.y" { OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) { @@ -5551,11 +6258,11 @@ yyreduce: "ratelimit-below-domain"); } } -#line 5555 "util/configparser.c" +#line 6262 "util/configparser.c" break; - case 502: /* server_ip_ratelimit_factor: VAR_IP_RATELIMIT_FACTOR STRING_ARG */ -#line 2492 "./util/configparser.y" + case 504: +#line 2500 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5563,11 +6270,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5567 "util/configparser.c" +#line 6274 "util/configparser.c" break; - case 503: /* server_ratelimit_factor: VAR_RATELIMIT_FACTOR STRING_ARG */ -#line 2501 "./util/configparser.y" + case 505: +#line 2509 "./util/configparser.y" { OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5575,11 +6282,11 @@ yyreduce: else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5579 "util/configparser.c" +#line 6286 "util/configparser.c" break; - case 504: /* server_ip_ratelimit_backoff: VAR_IP_RATELIMIT_BACKOFF STRING_ARG */ -#line 2510 "./util/configparser.y" + case 506: +#line 2518 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_backoff:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5588,11 +6295,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5592 "util/configparser.c" +#line 6299 "util/configparser.c" break; - case 505: /* server_ratelimit_backoff: VAR_RATELIMIT_BACKOFF STRING_ARG */ -#line 2520 "./util/configparser.y" + case 507: +#line 2528 "./util/configparser.y" { OUTYY(("P(server_ratelimit_backoff:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5601,11 +6308,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5605 "util/configparser.c" +#line 6312 "util/configparser.c" break; - case 506: /* server_outbound_msg_retry: VAR_OUTBOUND_MSG_RETRY STRING_ARG */ -#line 2530 "./util/configparser.y" + case 508: +#line 2538 "./util/configparser.y" { OUTYY(("P(server_outbound_msg_retry:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5613,20 +6320,20 @@ yyreduce: else cfg_parser->cfg->outbound_msg_retry = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5617 "util/configparser.c" +#line 6324 "util/configparser.c" break; - case 507: /* server_low_rtt: VAR_LOW_RTT STRING_ARG */ -#line 2539 "./util/configparser.y" + case 509: +#line 2547 "./util/configparser.y" { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 5626 "util/configparser.c" +#line 6333 "util/configparser.c" break; - case 508: /* server_fast_server_num: VAR_FAST_SERVER_NUM STRING_ARG */ -#line 2545 "./util/configparser.y" + case 510: +#line 2553 "./util/configparser.y" { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) <= 0) @@ -5634,11 +6341,11 @@ yyreduce: else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5638 "util/configparser.c" +#line 6345 "util/configparser.c" break; - case 509: /* server_fast_server_permil: VAR_FAST_SERVER_PERMIL STRING_ARG */ -#line 2554 "./util/configparser.y" + case 511: +#line 2562 "./util/configparser.y" { OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5646,11 +6353,11 @@ yyreduce: else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5650 "util/configparser.c" +#line 6357 "util/configparser.c" break; - case 510: /* server_qname_minimisation: VAR_QNAME_MINIMISATION STRING_ARG */ -#line 2563 "./util/configparser.y" + case 512: +#line 2571 "./util/configparser.y" { OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5659,11 +6366,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5663 "util/configparser.c" +#line 6370 "util/configparser.c" break; - case 511: /* server_qname_minimisation_strict: VAR_QNAME_MINIMISATION_STRICT STRING_ARG */ -#line 2573 "./util/configparser.y" + case 513: +#line 2581 "./util/configparser.y" { OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5672,11 +6379,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5676 "util/configparser.c" +#line 6383 "util/configparser.c" break; - case 512: /* server_pad_responses: VAR_PAD_RESPONSES STRING_ARG */ -#line 2583 "./util/configparser.y" + case 514: +#line 2591 "./util/configparser.y" { OUTYY(("P(server_pad_responses:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5685,11 +6392,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5689 "util/configparser.c" +#line 6396 "util/configparser.c" break; - case 513: /* server_pad_responses_block_size: VAR_PAD_RESPONSES_BLOCK_SIZE STRING_ARG */ -#line 2593 "./util/configparser.y" + case 515: +#line 2601 "./util/configparser.y" { OUTYY(("P(server_pad_responses_block_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5697,11 +6404,11 @@ yyreduce: else cfg_parser->cfg->pad_responses_block_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5701 "util/configparser.c" +#line 6408 "util/configparser.c" break; - case 514: /* server_pad_queries: VAR_PAD_QUERIES STRING_ARG */ -#line 2602 "./util/configparser.y" + case 516: +#line 2610 "./util/configparser.y" { OUTYY(("P(server_pad_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5710,11 +6417,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5714 "util/configparser.c" +#line 6421 "util/configparser.c" break; - case 515: /* server_pad_queries_block_size: VAR_PAD_QUERIES_BLOCK_SIZE STRING_ARG */ -#line 2612 "./util/configparser.y" + case 517: +#line 2620 "./util/configparser.y" { OUTYY(("P(server_pad_queries_block_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5722,11 +6429,11 @@ yyreduce: else cfg_parser->cfg->pad_queries_block_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5726 "util/configparser.c" +#line 6433 "util/configparser.c" break; - case 516: /* server_ipsecmod_enabled: VAR_IPSECMOD_ENABLED STRING_ARG */ -#line 2621 "./util/configparser.y" + case 518: +#line 2629 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); @@ -5738,11 +6445,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5742 "util/configparser.c" +#line 6449 "util/configparser.c" break; - case 517: /* server_ipsecmod_ignore_bogus: VAR_IPSECMOD_IGNORE_BOGUS STRING_ARG */ -#line 2634 "./util/configparser.y" + case 519: +#line 2642 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); @@ -5754,11 +6461,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5758 "util/configparser.c" +#line 6465 "util/configparser.c" break; - case 518: /* server_ipsecmod_hook: VAR_IPSECMOD_HOOK STRING_ARG */ -#line 2647 "./util/configparser.y" + case 520: +#line 2655 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); @@ -5769,11 +6476,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5773 "util/configparser.c" +#line 6480 "util/configparser.c" break; - case 519: /* server_ipsecmod_max_ttl: VAR_IPSECMOD_MAX_TTL STRING_ARG */ -#line 2659 "./util/configparser.y" + case 521: +#line 2667 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); @@ -5786,11 +6493,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5790 "util/configparser.c" +#line 6497 "util/configparser.c" break; - case 520: /* server_ipsecmod_whitelist: VAR_IPSECMOD_WHITELIST STRING_ARG */ -#line 2673 "./util/configparser.y" + case 522: +#line 2681 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); @@ -5801,11 +6508,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5805 "util/configparser.c" +#line 6512 "util/configparser.c" break; - case 521: /* server_ipsecmod_strict: VAR_IPSECMOD_STRICT STRING_ARG */ -#line 2685 "./util/configparser.y" + case 523: +#line 2693 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); @@ -5818,11 +6525,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5822 "util/configparser.c" +#line 6529 "util/configparser.c" break; - case 522: /* server_edns_client_string: VAR_EDNS_CLIENT_STRING STRING_ARG STRING_ARG */ -#line 2699 "./util/configparser.y" + case 524: +#line 2707 "./util/configparser.y" { OUTYY(("P(server_edns_client_string:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert( @@ -5830,11 +6537,11 @@ yyreduce: fatal_exit("out of memory adding " "edns-client-string"); } -#line 5834 "util/configparser.c" +#line 6541 "util/configparser.c" break; - case 523: /* server_edns_client_string_opcode: VAR_EDNS_CLIENT_STRING_OPCODE STRING_ARG */ -#line 2708 "./util/configparser.y" + case 525: +#line 2716 "./util/configparser.y" { OUTYY(("P(edns_client_string_opcode:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5845,11 +6552,11 @@ yyreduce: free((yyvsp[0].str)); } -#line 5849 "util/configparser.c" +#line 6556 "util/configparser.c" break; - case 524: /* stub_name: VAR_NAME STRING_ARG */ -#line 2720 "./util/configparser.y" + case 526: +#line 2728 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) @@ -5858,31 +6565,31 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 5862 "util/configparser.c" +#line 6569 "util/configparser.c" break; - case 525: /* stub_host: VAR_STUB_HOST STRING_ARG */ -#line 2730 "./util/configparser.y" + case 527: +#line 2738 "./util/configparser.y" { OUTYY(("P(stub-host:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5872 "util/configparser.c" +#line 6579 "util/configparser.c" break; - case 526: /* stub_addr: VAR_STUB_ADDR STRING_ARG */ -#line 2737 "./util/configparser.y" + case 528: +#line 2745 "./util/configparser.y" { OUTYY(("P(stub-addr:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5882 "util/configparser.c" +#line 6589 "util/configparser.c" break; - case 527: /* stub_first: VAR_STUB_FIRST STRING_ARG */ -#line 2744 "./util/configparser.y" + case 529: +#line 2752 "./util/configparser.y" { OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5890,11 +6597,11 @@ yyreduce: else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5894 "util/configparser.c" +#line 6601 "util/configparser.c" break; - case 528: /* stub_no_cache: VAR_STUB_NO_CACHE STRING_ARG */ -#line 2753 "./util/configparser.y" + case 530: +#line 2761 "./util/configparser.y" { OUTYY(("P(stub-no-cache:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5902,11 +6609,11 @@ yyreduce: else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5906 "util/configparser.c" +#line 6613 "util/configparser.c" break; - case 529: /* stub_ssl_upstream: VAR_STUB_SSL_UPSTREAM STRING_ARG */ -#line 2762 "./util/configparser.y" + case 531: +#line 2770 "./util/configparser.y" { OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5915,11 +6622,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5919 "util/configparser.c" +#line 6626 "util/configparser.c" break; - case 530: /* stub_tcp_upstream: VAR_STUB_TCP_UPSTREAM STRING_ARG */ -#line 2772 "./util/configparser.y" + case 532: +#line 2780 "./util/configparser.y" { OUTYY(("P(stub-tcp-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5928,11 +6635,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5932 "util/configparser.c" +#line 6639 "util/configparser.c" break; - case 531: /* stub_prime: VAR_STUB_PRIME STRING_ARG */ -#line 2782 "./util/configparser.y" + case 533: +#line 2790 "./util/configparser.y" { OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5941,11 +6648,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5945 "util/configparser.c" +#line 6652 "util/configparser.c" break; - case 532: /* forward_name: VAR_NAME STRING_ARG */ -#line 2792 "./util/configparser.y" + case 534: +#line 2800 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) @@ -5954,31 +6661,31 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 5958 "util/configparser.c" +#line 6665 "util/configparser.c" break; - case 533: /* forward_host: VAR_FORWARD_HOST STRING_ARG */ -#line 2802 "./util/configparser.y" + case 535: +#line 2810 "./util/configparser.y" { OUTYY(("P(forward-host:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5968 "util/configparser.c" +#line 6675 "util/configparser.c" break; - case 534: /* forward_addr: VAR_FORWARD_ADDR STRING_ARG */ -#line 2809 "./util/configparser.y" + case 536: +#line 2817 "./util/configparser.y" { OUTYY(("P(forward-addr:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5978 "util/configparser.c" +#line 6685 "util/configparser.c" break; - case 535: /* forward_first: VAR_FORWARD_FIRST STRING_ARG */ -#line 2816 "./util/configparser.y" + case 537: +#line 2824 "./util/configparser.y" { OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5986,11 +6693,11 @@ yyreduce: else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5990 "util/configparser.c" +#line 6697 "util/configparser.c" break; - case 536: /* forward_no_cache: VAR_FORWARD_NO_CACHE STRING_ARG */ -#line 2825 "./util/configparser.y" + case 538: +#line 2833 "./util/configparser.y" { OUTYY(("P(forward-no-cache:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5998,11 +6705,11 @@ yyreduce: else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6002 "util/configparser.c" +#line 6709 "util/configparser.c" break; - case 537: /* forward_ssl_upstream: VAR_FORWARD_SSL_UPSTREAM STRING_ARG */ -#line 2834 "./util/configparser.y" + case 539: +#line 2842 "./util/configparser.y" { OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6011,11 +6718,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6015 "util/configparser.c" +#line 6722 "util/configparser.c" break; - case 538: /* forward_tcp_upstream: VAR_FORWARD_TCP_UPSTREAM STRING_ARG */ -#line 2844 "./util/configparser.y" + case 540: +#line 2852 "./util/configparser.y" { OUTYY(("P(forward-tcp-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6024,11 +6731,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6028 "util/configparser.c" +#line 6735 "util/configparser.c" break; - case 539: /* auth_name: VAR_NAME STRING_ARG */ -#line 2854 "./util/configparser.y" + case 541: +#line 2862 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) @@ -6037,52 +6744,52 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 6041 "util/configparser.c" +#line 6748 "util/configparser.c" break; - case 540: /* auth_zonefile: VAR_ZONEFILE STRING_ARG */ -#line 2864 "./util/configparser.y" + case 542: +#line 2872 "./util/configparser.y" { OUTYY(("P(zonefile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->zonefile); cfg_parser->cfg->auths->zonefile = (yyvsp[0].str); } -#line 6051 "util/configparser.c" +#line 6758 "util/configparser.c" break; - case 541: /* auth_master: VAR_MASTER STRING_ARG */ -#line 2871 "./util/configparser.y" + case 543: +#line 2879 "./util/configparser.y" { OUTYY(("P(master:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6061 "util/configparser.c" +#line 6768 "util/configparser.c" break; - case 542: /* auth_url: VAR_URL STRING_ARG */ -#line 2878 "./util/configparser.y" + case 544: +#line 2886 "./util/configparser.y" { OUTYY(("P(url:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6071 "util/configparser.c" +#line 6778 "util/configparser.c" break; - case 543: /* auth_allow_notify: VAR_ALLOW_NOTIFY STRING_ARG */ -#line 2885 "./util/configparser.y" + case 545: +#line 2893 "./util/configparser.y" { OUTYY(("P(allow-notify:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6082 "util/configparser.c" +#line 6789 "util/configparser.c" break; - case 544: /* auth_zonemd_check: VAR_ZONEMD_CHECK STRING_ARG */ -#line 2893 "./util/configparser.y" + case 546: +#line 2901 "./util/configparser.y" { OUTYY(("P(zonemd-check:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6091,11 +6798,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6095 "util/configparser.c" +#line 6802 "util/configparser.c" break; - case 545: /* auth_zonemd_reject_absence: VAR_ZONEMD_REJECT_ABSENCE STRING_ARG */ -#line 2903 "./util/configparser.y" + case 547: +#line 2911 "./util/configparser.y" { OUTYY(("P(zonemd-reject-absence:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6104,11 +6811,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6108 "util/configparser.c" +#line 6815 "util/configparser.c" break; - case 546: /* auth_for_downstream: VAR_FOR_DOWNSTREAM STRING_ARG */ -#line 2913 "./util/configparser.y" + case 548: +#line 2921 "./util/configparser.y" { OUTYY(("P(for-downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6117,11 +6824,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6121 "util/configparser.c" +#line 6828 "util/configparser.c" break; - case 547: /* auth_for_upstream: VAR_FOR_UPSTREAM STRING_ARG */ -#line 2923 "./util/configparser.y" + case 549: +#line 2931 "./util/configparser.y" { OUTYY(("P(for-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6130,11 +6837,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6134 "util/configparser.c" +#line 6841 "util/configparser.c" break; - case 548: /* auth_fallback_enabled: VAR_FALLBACK_ENABLED STRING_ARG */ -#line 2933 "./util/configparser.y" + case 550: +#line 2941 "./util/configparser.y" { OUTYY(("P(fallback-enabled:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6143,11 +6850,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6147 "util/configparser.c" +#line 6854 "util/configparser.c" break; - case 549: /* view_name: VAR_NAME STRING_ARG */ -#line 2943 "./util/configparser.y" + case 551: +#line 2951 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) @@ -6156,11 +6863,11 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 6160 "util/configparser.c" +#line 6867 "util/configparser.c" break; - case 550: /* view_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */ -#line 2953 "./util/configparser.y" + case 552: +#line 2961 "./util/configparser.y" { OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && @@ -6205,11 +6912,11 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 6209 "util/configparser.c" +#line 6916 "util/configparser.c" break; - case 551: /* view_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ -#line 2999 "./util/configparser.y" + case 553: +#line 3007 "./util/configparser.y" { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -6218,33 +6925,33 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 6222 "util/configparser.c" +#line 6929 "util/configparser.c" break; - case 552: /* view_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ -#line 3009 "./util/configparser.y" + case 554: +#line 3017 "./util/configparser.y" { OUTYY(("P(view_response_ip_data:%s)\n", (yyvsp[-1].str))); if(!cfg_str2list_insert( &cfg_parser->cfg->views->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 6233 "util/configparser.c" +#line 6940 "util/configparser.c" break; - case 553: /* view_local_data: VAR_LOCAL_DATA STRING_ARG */ -#line 3017 "./util/configparser.y" + case 555: +#line 3025 "./util/configparser.y" { OUTYY(("P(view_local_data:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[0].str))) { fatal_exit("out of memory adding local-data"); } } -#line 6244 "util/configparser.c" +#line 6951 "util/configparser.c" break; - case 554: /* view_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ -#line 3025 "./util/configparser.y" + case 556: +#line 3033 "./util/configparser.y" { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -6258,11 +6965,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 6262 "util/configparser.c" +#line 6969 "util/configparser.c" break; - case 555: /* view_first: VAR_VIEW_FIRST STRING_ARG */ -#line 3040 "./util/configparser.y" + case 557: +#line 3048 "./util/configparser.y" { OUTYY(("P(view-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6270,19 +6977,19 @@ yyreduce: else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6274 "util/configparser.c" +#line 6981 "util/configparser.c" break; - case 556: /* rcstart: VAR_REMOTE_CONTROL */ -#line 3049 "./util/configparser.y" + case 558: +#line 3057 "./util/configparser.y" { OUTYY(("\nP(remote-control:)\n")); } -#line 6282 "util/configparser.c" +#line 6989 "util/configparser.c" break; - case 567: /* rc_control_enable: VAR_CONTROL_ENABLE STRING_ARG */ -#line 3060 "./util/configparser.y" + case 569: +#line 3068 "./util/configparser.y" { OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6291,11 +6998,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6295 "util/configparser.c" +#line 7002 "util/configparser.c" break; - case 568: /* rc_control_port: VAR_CONTROL_PORT STRING_ARG */ -#line 3070 "./util/configparser.y" + case 570: +#line 3078 "./util/configparser.y" { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6303,79 +7010,79 @@ yyreduce: else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6307 "util/configparser.c" +#line 7014 "util/configparser.c" break; - case 569: /* rc_control_interface: VAR_CONTROL_INTERFACE STRING_ARG */ -#line 3079 "./util/configparser.y" + case 571: +#line 3087 "./util/configparser.y" { OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6317 "util/configparser.c" +#line 7024 "util/configparser.c" break; - case 570: /* rc_control_use_cert: VAR_CONTROL_USE_CERT STRING_ARG */ -#line 3086 "./util/configparser.y" + case 572: +#line 3094 "./util/configparser.y" { OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->control_use_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6327 "util/configparser.c" +#line 7034 "util/configparser.c" break; - case 571: /* rc_server_key_file: VAR_SERVER_KEY_FILE STRING_ARG */ -#line 3093 "./util/configparser.y" + case 573: +#line 3101 "./util/configparser.y" { OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->server_key_file); cfg_parser->cfg->server_key_file = (yyvsp[0].str); } -#line 6337 "util/configparser.c" +#line 7044 "util/configparser.c" break; - case 572: /* rc_server_cert_file: VAR_SERVER_CERT_FILE STRING_ARG */ -#line 3100 "./util/configparser.y" + case 574: +#line 3108 "./util/configparser.y" { OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->server_cert_file); cfg_parser->cfg->server_cert_file = (yyvsp[0].str); } -#line 6347 "util/configparser.c" +#line 7054 "util/configparser.c" break; - case 573: /* rc_control_key_file: VAR_CONTROL_KEY_FILE STRING_ARG */ -#line 3107 "./util/configparser.y" + case 575: +#line 3115 "./util/configparser.y" { OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->control_key_file); cfg_parser->cfg->control_key_file = (yyvsp[0].str); } -#line 6357 "util/configparser.c" +#line 7064 "util/configparser.c" break; - case 574: /* rc_control_cert_file: VAR_CONTROL_CERT_FILE STRING_ARG */ -#line 3114 "./util/configparser.y" + case 576: +#line 3122 "./util/configparser.y" { OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->control_cert_file); cfg_parser->cfg->control_cert_file = (yyvsp[0].str); } -#line 6367 "util/configparser.c" +#line 7074 "util/configparser.c" break; - case 575: /* dtstart: VAR_DNSTAP */ -#line 3121 "./util/configparser.y" + case 577: +#line 3129 "./util/configparser.y" { OUTYY(("\nP(dnstap:)\n")); } -#line 6375 "util/configparser.c" +#line 7082 "util/configparser.c" break; - case 597: /* dt_dnstap_enable: VAR_DNSTAP_ENABLE STRING_ARG */ -#line 3141 "./util/configparser.y" + case 599: +#line 3149 "./util/configparser.y" { OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6383,11 +7090,11 @@ yyreduce: else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6387 "util/configparser.c" +#line 7094 "util/configparser.c" break; - case 598: /* dt_dnstap_bidirectional: VAR_DNSTAP_BIDIRECTIONAL STRING_ARG */ -#line 3150 "./util/configparser.y" + case 600: +#line 3158 "./util/configparser.y" { OUTYY(("P(dt_dnstap_bidirectional:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6396,31 +7103,31 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6400 "util/configparser.c" +#line 7107 "util/configparser.c" break; - case 599: /* dt_dnstap_socket_path: VAR_DNSTAP_SOCKET_PATH STRING_ARG */ -#line 3160 "./util/configparser.y" + case 601: +#line 3168 "./util/configparser.y" { OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_socket_path); cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str); } -#line 6410 "util/configparser.c" +#line 7117 "util/configparser.c" break; - case 600: /* dt_dnstap_ip: VAR_DNSTAP_IP STRING_ARG */ -#line 3167 "./util/configparser.y" + case 602: +#line 3175 "./util/configparser.y" { OUTYY(("P(dt_dnstap_ip:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_ip); cfg_parser->cfg->dnstap_ip = (yyvsp[0].str); } -#line 6420 "util/configparser.c" +#line 7127 "util/configparser.c" break; - case 601: /* dt_dnstap_tls: VAR_DNSTAP_TLS STRING_ARG */ -#line 3174 "./util/configparser.y" + case 603: +#line 3182 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6428,51 +7135,51 @@ yyreduce: else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6432 "util/configparser.c" +#line 7139 "util/configparser.c" break; - case 602: /* dt_dnstap_tls_server_name: VAR_DNSTAP_TLS_SERVER_NAME STRING_ARG */ -#line 3183 "./util/configparser.y" + case 604: +#line 3191 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_server_name:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_server_name); cfg_parser->cfg->dnstap_tls_server_name = (yyvsp[0].str); } -#line 6442 "util/configparser.c" +#line 7149 "util/configparser.c" break; - case 603: /* dt_dnstap_tls_cert_bundle: VAR_DNSTAP_TLS_CERT_BUNDLE STRING_ARG */ -#line 3190 "./util/configparser.y" + case 605: +#line 3198 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_cert_bundle:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_cert_bundle); cfg_parser->cfg->dnstap_tls_cert_bundle = (yyvsp[0].str); } -#line 6452 "util/configparser.c" +#line 7159 "util/configparser.c" break; - case 604: /* dt_dnstap_tls_client_key_file: VAR_DNSTAP_TLS_CLIENT_KEY_FILE STRING_ARG */ -#line 3197 "./util/configparser.y" + case 606: +#line 3205 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_client_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_client_key_file); cfg_parser->cfg->dnstap_tls_client_key_file = (yyvsp[0].str); } -#line 6462 "util/configparser.c" +#line 7169 "util/configparser.c" break; - case 605: /* dt_dnstap_tls_client_cert_file: VAR_DNSTAP_TLS_CLIENT_CERT_FILE STRING_ARG */ -#line 3204 "./util/configparser.y" + case 607: +#line 3212 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_client_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_client_cert_file); cfg_parser->cfg->dnstap_tls_client_cert_file = (yyvsp[0].str); } -#line 6472 "util/configparser.c" +#line 7179 "util/configparser.c" break; - case 606: /* dt_dnstap_send_identity: VAR_DNSTAP_SEND_IDENTITY STRING_ARG */ -#line 3211 "./util/configparser.y" + case 608: +#line 3219 "./util/configparser.y" { OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6480,11 +7187,11 @@ yyreduce: else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6484 "util/configparser.c" +#line 7191 "util/configparser.c" break; - case 607: /* dt_dnstap_send_version: VAR_DNSTAP_SEND_VERSION STRING_ARG */ -#line 3220 "./util/configparser.y" + case 609: +#line 3228 "./util/configparser.y" { OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6492,31 +7199,31 @@ yyreduce: else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6496 "util/configparser.c" +#line 7203 "util/configparser.c" break; - case 608: /* dt_dnstap_identity: VAR_DNSTAP_IDENTITY STRING_ARG */ -#line 3229 "./util/configparser.y" + case 610: +#line 3237 "./util/configparser.y" { OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_identity); cfg_parser->cfg->dnstap_identity = (yyvsp[0].str); } -#line 6506 "util/configparser.c" +#line 7213 "util/configparser.c" break; - case 609: /* dt_dnstap_version: VAR_DNSTAP_VERSION STRING_ARG */ -#line 3236 "./util/configparser.y" + case 611: +#line 3244 "./util/configparser.y" { OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_version); cfg_parser->cfg->dnstap_version = (yyvsp[0].str); } -#line 6516 "util/configparser.c" +#line 7223 "util/configparser.c" break; - case 610: /* dt_dnstap_log_resolver_query_messages: VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES STRING_ARG */ -#line 3243 "./util/configparser.y" + case 612: +#line 3251 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6525,11 +7232,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6529 "util/configparser.c" +#line 7236 "util/configparser.c" break; - case 611: /* dt_dnstap_log_resolver_response_messages: VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES STRING_ARG */ -#line 3253 "./util/configparser.y" + case 613: +#line 3261 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6538,11 +7245,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6542 "util/configparser.c" +#line 7249 "util/configparser.c" break; - case 612: /* dt_dnstap_log_client_query_messages: VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES STRING_ARG */ -#line 3263 "./util/configparser.y" + case 614: +#line 3271 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6551,11 +7258,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6555 "util/configparser.c" +#line 7262 "util/configparser.c" break; - case 613: /* dt_dnstap_log_client_response_messages: VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES STRING_ARG */ -#line 3273 "./util/configparser.y" + case 615: +#line 3281 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6564,11 +7271,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6568 "util/configparser.c" +#line 7275 "util/configparser.c" break; - case 614: /* dt_dnstap_log_forwarder_query_messages: VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES STRING_ARG */ -#line 3283 "./util/configparser.y" + case 616: +#line 3291 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6577,11 +7284,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6581 "util/configparser.c" +#line 7288 "util/configparser.c" break; - case 615: /* dt_dnstap_log_forwarder_response_messages: VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES STRING_ARG */ -#line 3293 "./util/configparser.y" + case 617: +#line 3301 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6590,47 +7297,47 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6594 "util/configparser.c" +#line 7301 "util/configparser.c" break; - case 616: /* pythonstart: VAR_PYTHON */ -#line 3303 "./util/configparser.y" + case 618: +#line 3311 "./util/configparser.y" { OUTYY(("\nP(python:)\n")); } -#line 6602 "util/configparser.c" +#line 7309 "util/configparser.c" break; - case 620: /* py_script: VAR_PYTHON_SCRIPT STRING_ARG */ -#line 3312 "./util/configparser.y" + case 622: +#line 3320 "./util/configparser.y" { OUTYY(("P(python-script:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6612 "util/configparser.c" +#line 7319 "util/configparser.c" break; - case 621: /* dynlibstart: VAR_DYNLIB */ -#line 3318 "./util/configparser.y" + case 623: +#line 3326 "./util/configparser.y" { OUTYY(("\nP(dynlib:)\n")); } -#line 6620 "util/configparser.c" +#line 7327 "util/configparser.c" break; - case 625: /* dl_file: VAR_DYNLIB_FILE STRING_ARG */ -#line 3327 "./util/configparser.y" + case 627: +#line 3335 "./util/configparser.y" { OUTYY(("P(dynlib-file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6630 "util/configparser.c" +#line 7337 "util/configparser.c" break; - case 626: /* server_disable_dnssec_lame_check: VAR_DISABLE_DNSSEC_LAME_CHECK STRING_ARG */ -#line 3333 "./util/configparser.y" + case 628: +#line 3341 "./util/configparser.y" { OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str))); if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6639,21 +7346,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6643 "util/configparser.c" +#line 7350 "util/configparser.c" break; - case 627: /* server_log_identity: VAR_LOG_IDENTITY STRING_ARG */ -#line 3343 "./util/configparser.y" + case 629: +#line 3351 "./util/configparser.y" { OUTYY(("P(server_log_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->log_identity); cfg_parser->cfg->log_identity = (yyvsp[0].str); } -#line 6653 "util/configparser.c" +#line 7360 "util/configparser.c" break; - case 628: /* server_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ -#line 3350 "./util/configparser.y" + case 630: +#line 3358 "./util/configparser.y" { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -6661,30 +7368,30 @@ yyreduce: (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 6665 "util/configparser.c" +#line 7372 "util/configparser.c" break; - case 629: /* server_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ -#line 3359 "./util/configparser.y" + case 631: +#line 3367 "./util/configparser.y" { OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[-1].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 6676 "util/configparser.c" +#line 7383 "util/configparser.c" break; - case 630: /* dnscstart: VAR_DNSCRYPT */ -#line 3367 "./util/configparser.y" + case 632: +#line 3375 "./util/configparser.y" { OUTYY(("\nP(dnscrypt:)\n")); } -#line 6684 "util/configparser.c" +#line 7391 "util/configparser.c" break; - case 643: /* dnsc_dnscrypt_enable: VAR_DNSCRYPT_ENABLE STRING_ARG */ -#line 3383 "./util/configparser.y" + case 645: +#line 3391 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6692,11 +7399,11 @@ yyreduce: else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6696 "util/configparser.c" +#line 7403 "util/configparser.c" break; - case 644: /* dnsc_dnscrypt_port: VAR_DNSCRYPT_PORT STRING_ARG */ -#line 3393 "./util/configparser.y" + case 646: +#line 3401 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6704,21 +7411,21 @@ yyreduce: else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6708 "util/configparser.c" +#line 7415 "util/configparser.c" break; - case 645: /* dnsc_dnscrypt_provider: VAR_DNSCRYPT_PROVIDER STRING_ARG */ -#line 3402 "./util/configparser.y" + case 647: +#line 3410 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnscrypt_provider); cfg_parser->cfg->dnscrypt_provider = (yyvsp[0].str); } -#line 6718 "util/configparser.c" +#line 7425 "util/configparser.c" break; - case 646: /* dnsc_dnscrypt_provider_cert: VAR_DNSCRYPT_PROVIDER_CERT STRING_ARG */ -#line 3409 "./util/configparser.y" + case 648: +#line 3417 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) @@ -6726,21 +7433,21 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert"); } -#line 6730 "util/configparser.c" +#line 7437 "util/configparser.c" break; - case 647: /* dnsc_dnscrypt_provider_cert_rotated: VAR_DNSCRYPT_PROVIDER_CERT_ROTATED STRING_ARG */ -#line 3418 "./util/configparser.y" + case 649: +#line 3426 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert-rotated"); } -#line 6740 "util/configparser.c" +#line 7447 "util/configparser.c" break; - case 648: /* dnsc_dnscrypt_secret_key: VAR_DNSCRYPT_SECRET_KEY STRING_ARG */ -#line 3425 "./util/configparser.y" + case 650: +#line 3433 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) @@ -6748,22 +7455,22 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-secret-key"); } -#line 6752 "util/configparser.c" +#line 7459 "util/configparser.c" break; - case 649: /* dnsc_dnscrypt_shared_secret_cache_size: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE STRING_ARG */ -#line 3434 "./util/configparser.y" + case 651: +#line 3442 "./util/configparser.y" { OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_shared_secret_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 6763 "util/configparser.c" +#line 7470 "util/configparser.c" break; - case 650: /* dnsc_dnscrypt_shared_secret_cache_slabs: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS STRING_ARG */ -#line 3442 "./util/configparser.y" + case 652: +#line 3450 "./util/configparser.y" { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -6775,22 +7482,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6779 "util/configparser.c" +#line 7486 "util/configparser.c" break; - case 651: /* dnsc_dnscrypt_nonce_cache_size: VAR_DNSCRYPT_NONCE_CACHE_SIZE STRING_ARG */ -#line 3455 "./util/configparser.y" + case 653: +#line 3463 "./util/configparser.y" { OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_nonce_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 6790 "util/configparser.c" +#line 7497 "util/configparser.c" break; - case 652: /* dnsc_dnscrypt_nonce_cache_slabs: VAR_DNSCRYPT_NONCE_CACHE_SLABS STRING_ARG */ -#line 3463 "./util/configparser.y" + case 654: +#line 3471 "./util/configparser.y" { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -6802,19 +7509,19 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6806 "util/configparser.c" +#line 7513 "util/configparser.c" break; - case 653: /* cachedbstart: VAR_CACHEDB */ -#line 3476 "./util/configparser.y" + case 655: +#line 3484 "./util/configparser.y" { OUTYY(("\nP(cachedb:)\n")); } -#line 6814 "util/configparser.c" +#line 7521 "util/configparser.c" break; - case 662: /* cachedb_backend_name: VAR_CACHEDB_BACKEND STRING_ARG */ -#line 3487 "./util/configparser.y" + case 664: +#line 3495 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); @@ -6825,11 +7532,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6829 "util/configparser.c" +#line 7536 "util/configparser.c" break; - case 663: /* cachedb_secret_seed: VAR_CACHEDB_SECRETSEED STRING_ARG */ -#line 3499 "./util/configparser.y" + case 665: +#line 3507 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); @@ -6840,11 +7547,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6844 "util/configparser.c" +#line 7551 "util/configparser.c" break; - case 664: /* redis_server_host: VAR_CACHEDB_REDISHOST STRING_ARG */ -#line 3511 "./util/configparser.y" + case 666: +#line 3519 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); @@ -6855,11 +7562,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6859 "util/configparser.c" +#line 7566 "util/configparser.c" break; - case 665: /* redis_server_port: VAR_CACHEDB_REDISPORT STRING_ARG */ -#line 3523 "./util/configparser.y" + case 667: +#line 3531 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; @@ -6873,11 +7580,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6877 "util/configparser.c" +#line 7584 "util/configparser.c" break; - case 666: /* redis_timeout: VAR_CACHEDB_REDISTIMEOUT STRING_ARG */ -#line 3538 "./util/configparser.y" + case 668: +#line 3546 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); @@ -6889,11 +7596,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6893 "util/configparser.c" +#line 7600 "util/configparser.c" break; - case 667: /* redis_expire_records: VAR_CACHEDB_REDISEXPIRERECORDS STRING_ARG */ -#line 3551 "./util/configparser.y" + case 669: +#line 3559 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str))); @@ -6905,11 +7612,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6909 "util/configparser.c" +#line 7616 "util/configparser.c" break; - case 668: /* server_tcp_connection_limit: VAR_TCP_CONNECTION_LIMIT STRING_ARG STRING_ARG */ -#line 3564 "./util/configparser.y" + case 670: +#line 3572 "./util/configparser.y" { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) @@ -6919,19 +7626,19 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 6923 "util/configparser.c" +#line 7630 "util/configparser.c" break; - case 669: /* ipsetstart: VAR_IPSET */ -#line 3575 "./util/configparser.y" + case 671: +#line 3583 "./util/configparser.y" { OUTYY(("\nP(ipset:)\n")); } -#line 6931 "util/configparser.c" +#line 7638 "util/configparser.c" break; - case 674: /* ipset_name_v4: VAR_IPSET_NAME_V4 STRING_ARG */ -#line 3584 "./util/configparser.y" + case 676: +#line 3592 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); @@ -6945,11 +7652,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6949 "util/configparser.c" +#line 7656 "util/configparser.c" break; - case 675: /* ipset_name_v6: VAR_IPSET_NAME_V6 STRING_ARG */ -#line 3599 "./util/configparser.y" + case 677: +#line 3607 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); @@ -6963,11 +7670,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6967 "util/configparser.c" +#line 7674 "util/configparser.c" break; -#line 6971 "util/configparser.c" +#line 7678 "util/configparser.c" default: break; } @@ -7127,13 +7834,13 @@ yyabortlab: yyexhaustedlab: yyerror (YY_("memory exhausted")); yyresult = 2; - goto yyreturn; + /* Fall through. */ #endif -/*-------------------------------------------------------. -| yyreturn -- parsing is finished, clean up and return. | -`-------------------------------------------------------*/ +/*-----------------------------------------------------. +| yyreturn -- parsing is finished, return the result. | +`-----------------------------------------------------*/ yyreturn: if (yychar != YYEMPTY) { @@ -7161,7 +7868,7 @@ yyreturn: return yyresult; } -#line 3613 "./util/configparser.y" +#line 3621 "./util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index d919cf29c..6dcbcb41e 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.7.6. */ +/* A Bison parser, made by GNU Bison 3.6.4. */ /* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -16,7 +16,7 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program. If not, see . */ + 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 @@ -374,12 +374,12 @@ extern int yydebug; VAR_ZONEMD_PERMISSIVE_MODE = 575, /* VAR_ZONEMD_PERMISSIVE_MODE */ VAR_ZONEMD_CHECK = 576, /* VAR_ZONEMD_CHECK */ VAR_ZONEMD_REJECT_ABSENCE = 577, /* VAR_ZONEMD_REJECT_ABSENCE */ - VAR_RPZ_SIGNAL_NXDOMAIN_RA = 578 /* VAR_RPZ_SIGNAL_NXDOMAIN_RA */ + VAR_RPZ_SIGNAL_NXDOMAIN_RA = 578, /* VAR_RPZ_SIGNAL_NXDOMAIN_RA */ + VAR_INTERFACE_AUTOMATIC_PORTS = 579 /* VAR_INTERFACE_AUTOMATIC_PORTS */ }; typedef enum yytokentype yytoken_kind_t; #endif /* Token kinds. */ -#define YYEMPTY -2 #define YYEOF 0 #define YYerror 256 #define YYUNDEF 257 @@ -704,6 +704,7 @@ extern int yydebug; #define VAR_ZONEMD_CHECK 576 #define VAR_ZONEMD_REJECT_ABSENCE 577 #define VAR_RPZ_SIGNAL_NXDOMAIN_RA 578 +#define VAR_INTERFACE_AUTOMATIC_PORTS 579 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -713,7 +714,7 @@ union YYSTYPE char* str; -#line 717 "util/configparser.h" +#line 718 "util/configparser.h" }; typedef union YYSTYPE YYSTYPE; diff --git a/util/configparser.y b/util/configparser.y index d4f965f94..4ec9e6350 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -188,7 +188,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_DYNLIB VAR_DYNLIB_FILE VAR_EDNS_CLIENT_STRING %token VAR_EDNS_CLIENT_STRING_OPCODE VAR_NSID %token VAR_ZONEMD_PERMISSIVE_MODE VAR_ZONEMD_CHECK VAR_ZONEMD_REJECT_ABSENCE -%token VAR_RPZ_SIGNAL_NXDOMAIN_RA +%token VAR_RPZ_SIGNAL_NXDOMAIN_RA VAR_INTERFACE_AUTOMATIC_PORTS %% toplevelvars: /* empty */ | toplevelvars toplevelvar ; @@ -311,7 +311,8 @@ content_server: server_num_threads | server_verbosity | server_port | server_tls_use_sni | server_edns_client_string | server_edns_client_string_opcode | server_nsid | server_zonemd_permissive_mode | server_max_reuse_tcp_queries | - server_tcp_reuse_timeout | server_tcp_auth_query_timeout + server_tcp_reuse_timeout | server_tcp_auth_query_timeout | + server_interface_automatic_ports ; stubstart: VAR_STUB_ZONE @@ -800,6 +801,13 @@ server_interface_automatic: VAR_INTERFACE_AUTOMATIC STRING_ARG free($2); } ; +server_interface_automatic_ports: VAR_INTERFACE_AUTOMATIC_PORTS STRING_ARG + { + OUTYY(("P(server_interface_automatic_ports:%s)\n", $2)); + free(cfg_parser->cfg->if_automatic_ports); + cfg_parser->cfg->if_automatic_ports = $2; + } + ; server_do_ip4: VAR_DO_IP4 STRING_ARG { OUTYY(("P(server_do_ip4:%s)\n", $2)); From 91a5cc9a08e3443f2359c5760a6fd90a5765211e Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 11 Feb 2022 16:34:24 +0100 Subject: [PATCH 516/553] - Remove debug info from #618 fix. --- doc/Changelog | 1 + smallapp/unbound-checkconf.c | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 54bc8ac75..3690dd653 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -3,6 +3,7 @@ respond to CTRL+C command). - Fix #618: enabling interface-automatic disables DNS-over-TLS. Adds the option to list interface-automatic-ports. + - Remove debug info from #618 fix. 7 February 2022: Wouter - Fix that TCP interface does not use TLS when TLS is also configured. diff --git a/smallapp/unbound-checkconf.c b/smallapp/unbound-checkconf.c index c44a1c98e..c25182bd2 100644 --- a/smallapp/unbound-checkconf.c +++ b/smallapp/unbound-checkconf.c @@ -426,7 +426,6 @@ ifautomaticportschecks(char* ifautomaticports) fatal_exit("interface-automatic-ports: port out of range at position %d in '%s'", (int)(now-ifautomaticports)+1, ifautomaticports); if(extraport == 0 && now == after) fatal_exit("interface-automatic-ports: parse error at position %d in '%s'", (int)(now-ifautomaticports)+1, ifautomaticports); - log_info("extraport %d", extraport); now = after; } } From 2b90181d3a47db7b19d0f2b8de0881f3e235aeb8 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 15 Feb 2022 16:20:12 +0100 Subject: [PATCH 517/553] - Fix #628: A rpz-passthru action is not ending RPZ zone processing. --- daemon/worker.c | 17 +++--- doc/Changelog | 3 ++ libunbound/libworker.c | 6 +-- respip/respip.c | 19 ++++--- respip/respip.h | 5 +- services/authzone.c | 6 +-- services/mesh.c | 24 ++++++--- services/mesh.h | 13 +++-- services/rpz.c | 28 ++++++++-- services/rpz.h | 4 +- testdata/rpz_passthru.rpl | 111 ++++++++++++++++++++++++++++++++++++++ testdata/rpz_qname.rpl | 37 +++++++++++++ util/module.h | 2 + validator/autotrust.c | 2 +- 14 files changed, 241 insertions(+), 36 deletions(-) create mode 100644 testdata/rpz_passthru.rpl diff --git a/daemon/worker.c b/daemon/worker.c index aee308d7d..863cd7a35 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -553,7 +553,7 @@ apply_respip_action(struct worker* worker, const struct query_info* qinfo, return 1; if(!respip_rewrite_reply(qinfo, cinfo, rep, encode_repp, &actinfo, - alias_rrset, 0, worker->scratchpad, az)) + alias_rrset, 0, worker->scratchpad, az, NULL)) return 0; /* xxx_deny actions mean dropping the reply, unless the original reply @@ -742,7 +742,8 @@ bail_out: /** Reply to client and perform prefetch to keep cache up to date. */ static void reply_and_prefetch(struct worker* worker, struct query_info* qinfo, - uint16_t flags, struct comm_reply* repinfo, time_t leeway, int noreply) + uint16_t flags, struct comm_reply* repinfo, time_t leeway, int noreply, + int rpz_passthru) { /* first send answer to client to keep its latency * as small as a cachereply */ @@ -761,7 +762,7 @@ reply_and_prefetch(struct worker* worker, struct query_info* qinfo, * the cache and go to the network for the data). */ /* this (potentially) runs the mesh for the new query */ mesh_new_prefetch(worker->env.mesh, qinfo, flags, leeway + - PREFETCH_EXPIRY_ADD); + PREFETCH_EXPIRY_ADD, rpz_passthru); } /** @@ -1073,6 +1074,7 @@ worker_handle_request(struct comm_point* c, void* arg, int error, int need_drop = 0; int is_expired_answer = 0; int is_secure_answer = 0; + int rpz_passthru = 0; /* We might have to chase a CNAME chain internally, in which case * we'll have up to two replies and combine them to build a complete * answer. These variables control this case. */ @@ -1338,7 +1340,8 @@ worker_handle_request(struct comm_point* c, void* arg, int error, if(worker->env.auth_zones && rpz_callback_from_worker_request(worker->env.auth_zones, &worker->env, &qinfo, &edns, c->buffer, worker->scratchpad, - repinfo, acladdr->taglist, acladdr->taglen, &worker->stats)) { + repinfo, acladdr->taglist, acladdr->taglen, &worker->stats, + &rpz_passthru)) { regional_free_all(worker->scratchpad); if(sldns_buffer_limit(c->buffer) == 0) { comm_point_drop_reply(repinfo); @@ -1464,7 +1467,8 @@ lookup_cache: reply_and_prefetch(worker, lookup_qinfo, sldns_buffer_read_u16_at(c->buffer, 2), repinfo, leeway, - (partial_rep || need_drop)); + (partial_rep || need_drop), + rpz_passthru); if(!partial_rep) { rc = 0; regional_free_all(worker->scratchpad); @@ -1527,7 +1531,8 @@ lookup_cache: /* grab a work request structure for this new request */ mesh_new_client(worker->env.mesh, &qinfo, cinfo, sldns_buffer_read_u16_at(c->buffer, 2), - &edns, repinfo, *(uint16_t*)(void *)sldns_buffer_begin(c->buffer)); + &edns, repinfo, *(uint16_t*)(void *)sldns_buffer_begin(c->buffer), + rpz_passthru); regional_free_all(worker->scratchpad); worker_mem_report(worker, NULL); return 0; diff --git a/doc/Changelog b/doc/Changelog index 3690dd653..7dea5002e 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +15 February 2022: Wouter + - Fix #628: A rpz-passthru action is not ending RPZ zone processing. + 11 February 2022: Wouter - Fix #624: Unable to stop Unbound in Windows console (does not respond to CTRL+C command). diff --git a/libunbound/libworker.c b/libunbound/libworker.c index ab28dd54f..11bf5f9db 100644 --- a/libunbound/libworker.c +++ b/libunbound/libworker.c @@ -650,7 +650,7 @@ int libworker_fg(struct ub_ctx* ctx, struct ctx_query* q) } /* process new query */ if(!mesh_new_callback(w->env->mesh, &qinfo, qflags, &edns, - w->back->udp_buff, qid, libworker_fg_done_cb, q)) { + w->back->udp_buff, qid, libworker_fg_done_cb, q, 0)) { free(qinfo.qname); return UB_NOMEM; } @@ -730,7 +730,7 @@ int libworker_attach_mesh(struct ub_ctx* ctx, struct ctx_query* q, if(async_id) *async_id = q->querynum; if(!mesh_new_callback(w->env->mesh, &qinfo, qflags, &edns, - w->back->udp_buff, qid, libworker_event_done_cb, q)) { + w->back->udp_buff, qid, libworker_event_done_cb, q, 0)) { free(qinfo.qname); return UB_NOMEM; } @@ -867,7 +867,7 @@ handle_newq(struct libworker* w, uint8_t* buf, uint32_t len) q->w = w; /* process new query */ if(!mesh_new_callback(w->env->mesh, &qinfo, qflags, &edns, - w->back->udp_buff, qid, libworker_bg_done_cb, q)) { + w->back->udp_buff, qid, libworker_bg_done_cb, q, 0)) { add_bg_result(w, q, NULL, UB_NOMEM, NULL, 0); } free(qinfo.qname); diff --git a/respip/respip.c b/respip/respip.c index 3d1b3feaf..569943e9e 100644 --- a/respip/respip.c +++ b/respip/respip.c @@ -833,8 +833,11 @@ static int respip_use_rpz(struct resp_addr* raddr, struct rpz* r, enum respip_action* action, struct ub_packed_rrset_key** data, int* rpz_log, char** log_name, - int* rpz_cname_override, struct regional* region, int* is_rpz) + int* rpz_cname_override, struct regional* region, int* is_rpz, + int* rpz_passthru) { + if(rpz_passthru && *rpz_passthru) + return 0; if(r->action_override == RPZ_DISABLED_ACTION) { *is_rpz = 0; return 1; @@ -848,6 +851,9 @@ respip_use_rpz(struct resp_addr* raddr, struct rpz* r, *data = r->cname_override; *rpz_cname_override = 1; } + if(*action == respip_always_transparent /* RPZ_PASSTHRU_ACTION */ + && rpz_passthru) + *rpz_passthru = 1; *rpz_log = r->log; if(r->log_name) if(!(*log_name = regional_strdup(region, r->log_name))) @@ -861,7 +867,7 @@ respip_rewrite_reply(const struct query_info* qinfo, const struct respip_client_info* cinfo, const struct reply_info* rep, struct reply_info** new_repp, struct respip_action_info* actinfo, struct ub_packed_rrset_key** alias_rrset, int search_only, - struct regional* region, struct auth_zones* az) + struct regional* region, struct auth_zones* az, int* rpz_passthru) { const uint8_t* ctaglist; size_t ctaglen; @@ -934,7 +940,7 @@ respip_rewrite_reply(const struct query_info* qinfo, ipset->tagname, ipset->num_tags); } lock_rw_rdlock(&az->rpz_lock); - for(a = az->rpz_first; a && !raddr; a = a->rpz_az_next) { + for(a = az->rpz_first; a && !raddr && !(rpz_passthru && *rpz_passthru); a = a->rpz_az_next) { lock_rw_rdlock(&a->lock); r = a->rpz; if(!r->taglist || taglist_intersect(r->taglist, @@ -943,7 +949,7 @@ respip_rewrite_reply(const struct query_info* qinfo, r->respip_set, &rrset_id, &rr_id))) { if(!respip_use_rpz(raddr, r, &action, &data, &rpz_log, &log_name, &rpz_cname_override, - region, &rpz_used)) { + region, &rpz_used, rpz_passthru)) { log_err("out of memory"); lock_rw_unlock(&raddr->lock); lock_rw_unlock(&a->lock); @@ -1094,7 +1100,8 @@ respip_operate(struct module_qstate* qstate, enum module_ev event, int id, if(!respip_rewrite_reply(&qstate->qinfo, qstate->client_info, qstate->return_msg->rep, &new_rep, &actinfo, &alias_rrset, 0, - qstate->region, qstate->env->auth_zones)) { + qstate->region, qstate->env->auth_zones, + &qstate->rpz_passthru)) { goto servfail; } if(actinfo.action != respip_none) { @@ -1169,7 +1176,7 @@ respip_merge_cname(struct reply_info* base_rep, /* see if the target reply would be subject to a response-ip action. */ if(!respip_rewrite_reply(qinfo, cinfo, tgt_rep, &tmp_rep, &actinfo, - &alias_rrset, 1, region, az)) + &alias_rrset, 1, region, az, NULL)) return 0; if(actinfo.action != respip_none) { log_info("CNAME target of redirect response-ip action would " diff --git a/respip/respip.h b/respip/respip.h index 3dfb4e9f0..988a72263 100644 --- a/respip/respip.h +++ b/respip/respip.h @@ -176,6 +176,8 @@ int respip_merge_cname(struct reply_info* base_rep, * will be set (or intact) accordingly but the modified reply won't be built. * @param az: auth zones containing RPZ information. * @param region: allocator to build *new_repp. + * @param rpz_passthru: keeps track of query state can have passthru that + * stops further rpz processing. Or NULL for cached answer processing. * @return 1 on success, 0 on error. */ int respip_rewrite_reply(const struct query_info* qinfo, @@ -183,7 +185,8 @@ int respip_rewrite_reply(const struct query_info* qinfo, const struct reply_info *rep, struct reply_info** new_repp, struct respip_action_info* actinfo, struct ub_packed_rrset_key** alias_rrset, - int search_only, struct regional* region, struct auth_zones* az); + int search_only, struct regional* region, struct auth_zones* az, + int* rpz_passthru); /** * Get the response-ip function block. diff --git a/services/authzone.c b/services/authzone.c index e83af533d..66d118b02 100644 --- a/services/authzone.c +++ b/services/authzone.c @@ -5370,7 +5370,7 @@ xfr_transfer_lookup_host(struct auth_xfer* xfr, struct module_env* env) * called straight away */ lock_basic_unlock(&xfr->lock); if(!mesh_new_callback(env->mesh, &qinfo, qflags, &edns, buf, 0, - &auth_xfer_transfer_lookup_callback, xfr)) { + &auth_xfer_transfer_lookup_callback, xfr, 0)) { lock_basic_lock(&xfr->lock); log_err("out of memory lookup up master %s", master->host); return 0; @@ -6561,7 +6561,7 @@ xfr_probe_lookup_host(struct auth_xfer* xfr, struct module_env* env) * called straight away */ lock_basic_unlock(&xfr->lock); if(!mesh_new_callback(env->mesh, &qinfo, qflags, &edns, buf, 0, - &auth_xfer_probe_lookup_callback, xfr)) { + &auth_xfer_probe_lookup_callback, xfr, 0)) { lock_basic_lock(&xfr->lock); log_err("out of memory lookup up master %s", master->host); return 0; @@ -8340,7 +8340,7 @@ zonemd_lookup_dnskey(struct auth_zone* z, struct module_env* env) /* the callback can be called straight away */ lock_rw_unlock(&z->lock); if(!mesh_new_callback(env->mesh, &qinfo, qflags, &edns, buf, 0, - &auth_zonemd_dnskey_lookup_callback, z)) { + &auth_zonemd_dnskey_lookup_callback, z, 0)) { lock_rw_wrlock(&z->lock); log_err("out of memory lookup of %s for zonemd", (fetch_ds?"DS":"DNSKEY")); diff --git a/services/mesh.c b/services/mesh.c index cdcfedda2..4b022d47f 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -458,7 +458,8 @@ mesh_serve_expired_init(struct mesh_state* mstate, int timeout) void mesh_new_client(struct mesh_area* mesh, struct query_info* qinfo, struct respip_client_info* cinfo, uint16_t qflags, - struct edns_data* edns, struct comm_reply* rep, uint16_t qid) + struct edns_data* edns, struct comm_reply* rep, uint16_t qid, + int rpz_passthru) { struct mesh_state* s = NULL; int unique = unique_mesh_state(edns->opt_list_in, mesh->env); @@ -513,6 +514,7 @@ void mesh_new_client(struct mesh_area* mesh, struct query_info* qinfo, } if(unique) mesh_state_make_unique(s); + s->s.rpz_passthru = rpz_passthru; /* copy the edns options we got from the front */ if(edns->opt_list_in) { s->s.edns_opts_front_in = edns_opt_copy_region(edns->opt_list_in, @@ -606,7 +608,7 @@ servfail_mem: int mesh_new_callback(struct mesh_area* mesh, struct query_info* qinfo, uint16_t qflags, struct edns_data* edns, sldns_buffer* buf, - uint16_t qid, mesh_cb_func_type cb, void* cb_arg) + uint16_t qid, mesh_cb_func_type cb, void* cb_arg, int rpz_passthru) { struct mesh_state* s = NULL; int unique = unique_mesh_state(edns->opt_list_in, mesh->env); @@ -632,6 +634,7 @@ mesh_new_callback(struct mesh_area* mesh, struct query_info* qinfo, } if(unique) mesh_state_make_unique(s); + s->s.rpz_passthru = rpz_passthru; if(edns->opt_list_in) { s->s.edns_opts_front_in = edns_opt_copy_region(edns->opt_list_in, s->s.region); @@ -686,7 +689,8 @@ mesh_new_callback(struct mesh_area* mesh, struct query_info* qinfo, * 0 (false), in which case the new state is only made runnable so it * will not be run recursively on top of the current state. */ static void mesh_schedule_prefetch(struct mesh_area* mesh, - struct query_info* qinfo, uint16_t qflags, time_t leeway, int run) + struct query_info* qinfo, uint16_t qflags, time_t leeway, int run, + int rpz_passthru) { struct mesh_state* s = mesh_area_find(mesh, NULL, qinfo, qflags&(BIT_RD|BIT_CD), 0, 0); @@ -741,6 +745,7 @@ static void mesh_schedule_prefetch(struct mesh_area* mesh, s->list_select = mesh_jostle_list; } } + s->s.rpz_passthru = rpz_passthru; if(!run) { #ifdef UNBOUND_DEBUG @@ -757,9 +762,9 @@ static void mesh_schedule_prefetch(struct mesh_area* mesh, } void mesh_new_prefetch(struct mesh_area* mesh, struct query_info* qinfo, - uint16_t qflags, time_t leeway) + uint16_t qflags, time_t leeway, int rpz_passthru) { - mesh_schedule_prefetch(mesh, qinfo, qflags, leeway, 1); + mesh_schedule_prefetch(mesh, qinfo, qflags, leeway, 1, rpz_passthru); } void mesh_report_reply(struct mesh_area* mesh, struct outbound_entry* e, @@ -1693,6 +1698,7 @@ mesh_continue(struct mesh_area* mesh, struct mesh_state* mstate, if(mstate->s.curmod == 0) { struct query_info* qinfo = NULL; uint16_t qflags; + int rpz_p = 0; mesh_query_done(mstate); mesh_walk_supers(mesh, mstate); @@ -1701,13 +1707,15 @@ mesh_continue(struct mesh_area* mesh, struct mesh_state* mstate, * from an external DNS server, we'll need to schedule * a prefetch after removing the current state, so * we need to make a copy of the query info here. */ - if(mstate->s.need_refetch) + if(mstate->s.need_refetch) { mesh_copy_qinfo(mstate, &qinfo, &qflags); + rpz_p = mstate->s.rpz_passthru; + } mesh_state_delete(&mstate->s); if(qinfo) { mesh_schedule_prefetch(mesh, qinfo, qflags, - 0, 1); + 0, 1, rpz_p); } return 0; } @@ -1917,7 +1925,7 @@ apply_respip_action(struct module_qstate* qstate, return 1; if(!respip_rewrite_reply(qinfo, cinfo, rep, encode_repp, actinfo, - alias_rrset, 0, qstate->region, az)) + alias_rrset, 0, qstate->region, az, NULL)) return 0; /* xxx_deny actions mean dropping the reply, unless the original reply diff --git a/services/mesh.h b/services/mesh.h index d0a4b5fb3..526e679fe 100644 --- a/services/mesh.h +++ b/services/mesh.h @@ -296,10 +296,13 @@ void mesh_delete(struct mesh_area* mesh); * @param edns: edns data from client query. * @param rep: where to reply to. * @param qid: query id to reply with. + * @param rpz_passthru: if true, the rpz passthru was previously found and + * further rpz processing is stopped. */ void mesh_new_client(struct mesh_area* mesh, struct query_info* qinfo, struct respip_client_info* cinfo, uint16_t qflags, - struct edns_data* edns, struct comm_reply* rep, uint16_t qid); + struct edns_data* edns, struct comm_reply* rep, uint16_t qid, + int rpz_passthru); /** * New query with callback. Create new query state if needed, and @@ -314,11 +317,13 @@ void mesh_new_client(struct mesh_area* mesh, struct query_info* qinfo, * @param qid: query id to reply with. * @param cb: callback function. * @param cb_arg: callback user arg. + * @param rpz_passthru: if true, the rpz passthru was previously found and + * further rpz processing is stopped. * @return 0 on error. */ int mesh_new_callback(struct mesh_area* mesh, struct query_info* qinfo, uint16_t qflags, struct edns_data* edns, struct sldns_buffer* buf, - uint16_t qid, mesh_cb_func_type cb, void* cb_arg); + uint16_t qid, mesh_cb_func_type cb, void* cb_arg, int rpz_passthru); /** * New prefetch message. Create new query state if needed. @@ -328,9 +333,11 @@ int mesh_new_callback(struct mesh_area* mesh, struct query_info* qinfo, * @param qinfo: query from client. * @param qflags: flags from client query. * @param leeway: TTL leeway what to expire earlier for this update. + * @param rpz_passthru: if true, the rpz passthru was previously found and + * further rpz processing is stopped. */ void mesh_new_prefetch(struct mesh_area* mesh, struct query_info* qinfo, - uint16_t qflags, time_t leeway); + uint16_t qflags, time_t leeway, int rpz_passthru); /** * Handle new event from the wire. A serviced query has returned. diff --git a/services/rpz.c b/services/rpz.c index 322e9d139..2d8b06922 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -1997,6 +1997,7 @@ rpz_apply_nsip_trigger(struct module_qstate* ms, struct rpz* r, break; case RPZ_PASSTHRU_ACTION: ret = NULL; + ms->rpz_passthru = 1; break; default: verbose(VERB_ALGO, "rpz: nsip: bug: unhandled or invalid action: '%s'", @@ -2051,6 +2052,7 @@ rpz_apply_nsdname_trigger(struct module_qstate* ms, struct rpz* r, break; case RPZ_PASSTHRU_ACTION: ret = NULL; + ms->rpz_passthru = 1; break; default: verbose(VERB_ALGO, "rpz: nsip: bug: unhandled or invalid action: '%s'", @@ -2114,6 +2116,11 @@ rpz_callback_from_iterator_module(struct module_qstate* ms, struct iter_qstate* struct local_zone* z = NULL; struct matched_delegation_point match = {0}; + if(ms->rpz_passthru) { + verbose(VERB_ALGO, "query is rpz_passthru, no futher processing"); + return NULL; + } + if(ms->env == NULL || ms->env->auth_zones == NULL) { return 0; } az = ms->env->auth_zones; @@ -2179,6 +2186,11 @@ struct dns_msg* rpz_callback_from_iterator_cname(struct module_qstate* ms, enum localzone_type lzt; struct dns_msg* ret = NULL; + if(ms->rpz_passthru) { + verbose(VERB_ALGO, "query is rpz_passthru, no futher processing"); + return NULL; + } + if(ms->env == NULL || ms->env->auth_zones == NULL) { return 0; } az = ms->env->auth_zones; @@ -2253,6 +2265,7 @@ struct dns_msg* rpz_callback_from_iterator_cname(struct module_qstate* ms, break; case RPZ_PASSTHRU_ACTION: ret = NULL; + ms->rpz_passthru = 1; break; default: verbose(VERB_ALGO, "rpz: qname trigger after cname: bug: unhandled or invalid action: '%s'", @@ -2270,7 +2283,8 @@ rpz_apply_maybe_clientip_trigger(struct auth_zones* az, struct module_env* env, uint8_t* taglist, size_t taglen, struct ub_server_stats* stats, sldns_buffer* buf, struct regional* temp, /* output parameters */ - struct local_zone** z_out, struct auth_zone** a_out, struct rpz** r_out) + struct local_zone** z_out, struct auth_zone** a_out, struct rpz** r_out, + int* passthru) { int ret = 0; enum rpz_action client_action; @@ -2278,7 +2292,9 @@ rpz_apply_maybe_clientip_trigger(struct auth_zones* az, struct module_env* env, az, qinfo, repinfo, taglist, taglen, stats, z_out, a_out, r_out); client_action = ((node == NULL) ? RPZ_INVALID_ACTION : node->action); - + if(client_action == RPZ_PASSTHRU_ACTION) { + *passthru = 1; + } if(*z_out == NULL || (client_action != RPZ_INVALID_ACTION && client_action != RPZ_PASSTHRU_ACTION)) { if(client_action == RPZ_PASSTHRU_ACTION @@ -2323,7 +2339,7 @@ int rpz_callback_from_worker_request(struct auth_zones* az, struct module_env* env, struct query_info* qinfo, struct edns_data* edns, sldns_buffer* buf, struct regional* temp, struct comm_reply* repinfo, uint8_t* taglist, - size_t taglen, struct ub_server_stats* stats) + size_t taglen, struct ub_server_stats* stats, int* passthru) { struct rpz* r = NULL; struct auth_zone* a = NULL; @@ -2332,7 +2348,8 @@ rpz_callback_from_worker_request(struct auth_zones* az, struct module_env* env, enum localzone_type lzt; int clientip_trigger = rpz_apply_maybe_clientip_trigger(az, env, qinfo, - edns, repinfo, taglist, taglen, stats, buf, temp, &z, &a, &r); + edns, repinfo, taglist, taglen, stats, buf, temp, &z, &a, &r, + passthru); if(clientip_trigger >= 0) { if(a) { lock_rw_unlock(&a->lock); @@ -2357,6 +2374,9 @@ rpz_callback_from_worker_request(struct auth_zones* az, struct module_env* env, } else { lzt = rpz_action_to_localzone_type(r->action_override); } + if(r->action_override == RPZ_PASSTHRU_ACTION) { + *passthru = 1; + } if(verbosity >= VERB_ALGO) { char nm[255+1], zn[255+1]; diff --git a/services/rpz.h b/services/rpz.h index c29d30dff..53781197a 100644 --- a/services/rpz.h +++ b/services/rpz.h @@ -176,12 +176,14 @@ void rpz_remove_rr(struct rpz* r, size_t aznamelen, uint8_t* dname, * @param taglist: taglist to lookup. * @param taglen: length of taglist. * @param stats: worker stats struct + * @param passthru: returns if the query can passthru further rpz processing. * @return: 1 if client answer is ready, 0 to continue resolving */ int rpz_callback_from_worker_request(struct auth_zones* az, struct module_env* env, struct query_info* qinfo, struct edns_data* edns, sldns_buffer* buf, struct regional* temp, struct comm_reply* repinfo, - uint8_t* taglist, size_t taglen, struct ub_server_stats* stats); + uint8_t* taglist, size_t taglen, struct ub_server_stats* stats, + int* passthru); /** * Callback to process when the iterator module is about to send queries. diff --git a/testdata/rpz_passthru.rpl b/testdata/rpz_passthru.rpl new file mode 100644 index 000000000..cc7a6af89 --- /dev/null +++ b/testdata/rpz_passthru.rpl @@ -0,0 +1,111 @@ +; config options +server: + module-config: "respip validator iterator" + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: no + access-control: 192.0.0.0/8 allow + +rpz: + name: "rpz.example.com." + rpz-log: yes + rpz-log-name: "rpz.example.com" + rpz-action-override: passthru + zonefile: +TEMPFILE_NAME rpz.example.com +TEMPFILE_CONTENTS rpz.example.com +$ORIGIN example.com. +rpz 3600 IN SOA ns1.rpz.example.com. hostmaster.rpz.example.com. ( + 1379078166 28800 7200 604800 7200 ) + 3600 IN NS ns1.rpz.example.com. + 3600 IN NS ns2.rpz.example.com. +$ORIGIN rpz.example.com. +c.a TXT "local data 1st zone" +d.a A 127.0.0.1 +TEMPFILE_END + +rpz: + name: "rpz2.example.com." + rpz-log: yes + rpz-log-name: "rpz2.example.com" + rpz-action-override: nxdomain + zonefile: +TEMPFILE_NAME rpz2.example.com +TEMPFILE_CONTENTS rpz2.example.com +$ORIGIN example.com. +rpz2 3600 IN SOA ns1.rpz.example.com. hostmaster.rpz.example.com. ( + 1379078166 28800 7200 604800 7200 ) + 3600 IN NS ns1.rpz.example.com. + 3600 IN NS ns2.rpz.example.com. +$ORIGIN rpz2.example.com. +c.a TXT "local data 2nd zone" +24.0.5.0.192.rpz-client-ip A 127.0.0.1 +24.0.5.0.192.rpz-client-ip TXT "clientip 2nd zone" +24.0.3.2.1.rpz-ip A 127.0.0.2 +TEMPFILE_END + +stub-zone: + name: "a." + stub-addr: 10.20.30.40 +CONFIG_END + +SCENARIO_BEGIN Test RPZ passthru ends processing for later triggers. + +; a. +RANGE_BEGIN 0 1000 + ADDRESS 10.20.30.40 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +c.a. IN TXT +SECTION ANSWER +c.a. IN TXT "answer from upstream ns" +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +d.a. IN A +SECTION ANSWER +d.a. IN A 1.2.3.4 +ENTRY_END +RANGE_END + +STEP 10 QUERY ADDRESS 192.0.5.1 +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +c.a. IN TXT +ENTRY_END + +STEP 11 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +c.a. IN TXT +SECTION ANSWER +c.a. IN TXT "answer from upstream ns" +ENTRY_END + +STEP 20 QUERY ADDRESS 192.0.2.1 +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +d.a. IN A +ENTRY_END + +STEP 21 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +d.a. IN A +SECTION ANSWER +d.a. IN A 1.2.3.4 +ENTRY_END + +SCENARIO_END diff --git a/testdata/rpz_qname.rpl b/testdata/rpz_qname.rpl index ede697233..aae55b573 100644 --- a/testdata/rpz_qname.rpl +++ b/testdata/rpz_qname.rpl @@ -6,6 +6,8 @@ server: rpz: name: "rpz.example.com." + rpz-log: yes + rpz-log-name: "rpz.example.com" zonefile: TEMPFILE_NAME rpz.example.com TEMPFILE_CONTENTS rpz.example.com @@ -20,10 +22,13 @@ a CNAME *. ; duplicate CNAME here on purpose *.a TXT "wildcard local data" b.a CNAME *. c.a CNAME rpz-passthru. +c.g CNAME rpz-passthru. TEMPFILE_END rpz: name: "rpz2.example.com." + rpz-log: yes + rpz-log-name: "rpz2.example.com" zonefile: TEMPFILE_NAME rpz2.example.com TEMPFILE_CONTENTS rpz2.example.com @@ -39,6 +44,7 @@ e CNAME *.a.example. *.e CNAME *.b.example. drop CNAME rpz-drop. tcp CNAME rpz-tcp-only. +c.g CNAME . TEMPFILE_END stub-zone: @@ -50,6 +56,9 @@ stub-zone: stub-zone: name: "tcp." stub-addr: 10.20.30.60 +stub-zone: + name: "g." + stub-addr: 10.20.30.40 CONFIG_END SCENARIO_BEGIN Test all support RPZ action for QNAME trigger @@ -89,6 +98,16 @@ SECTION ANSWER x.b.a. IN TXT "answer from upstream ns" ENTRY_END +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +c.g. IN TXT +SECTION ANSWER +c.g. IN TXT "answer from upstream ns" +ENTRY_END + RANGE_END ; example. @@ -396,5 +415,23 @@ f.example. IN CNAME d. d. IN TXT "local data 2nd zone" ENTRY_END +; check if passthru ends processing +STEP 110 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +c.g. IN TXT +ENTRY_END + +STEP 111 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +c.g. IN TXT +SECTION ANSWER +c.g. IN TXT "answer from upstream ns" +ENTRY_END + ; no answer is checked at exit of testbound. SCENARIO_END diff --git a/util/module.h b/util/module.h index 7a5480033..1ae7477cb 100644 --- a/util/module.h +++ b/util/module.h @@ -667,6 +667,8 @@ struct module_qstate { /** Extended result of response-ip action processing, mainly * for logging purposes. */ struct respip_action_info* respip_action_info; + /** if the query is rpz passthru, no further rpz processing for it */ + int rpz_passthru; /** whether the reply should be dropped */ int is_drop; diff --git a/validator/autotrust.c b/validator/autotrust.c index 55e82c176..ec656a1bd 100644 --- a/validator/autotrust.c +++ b/validator/autotrust.c @@ -2397,7 +2397,7 @@ probe_anchor(struct module_env* env, struct trust_anchor* tp) qinfo.qclass); if(!mesh_new_callback(env->mesh, &qinfo, qflags, &edns, buf, 0, - &probe_answer_cb, env)) { + &probe_answer_cb, env, 0)) { log_err("out of memory making 5011 probe"); } } From 6de531072860d95791445a3ee3220865de88f1e8 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 16 Feb 2022 09:51:25 +0100 Subject: [PATCH 518/553] - Fix for #628: fix rpz-passthru for qname trigger by localzone type. --- doc/Changelog | 3 +++ services/rpz.c | 3 ++- testdata/rpz_passthru.rpl | 43 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 48 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 7dea5002e..00d65d283 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +16 February 2022: Wouter + - Fix for #628: fix rpz-passthru for qname trigger by localzone type. + 15 February 2022: Wouter - Fix #628: A rpz-passthru action is not ending RPZ zone processing. diff --git a/services/rpz.c b/services/rpz.c index 2d8b06922..309fda22f 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -2374,7 +2374,8 @@ rpz_callback_from_worker_request(struct auth_zones* az, struct module_env* env, } else { lzt = rpz_action_to_localzone_type(r->action_override); } - if(r->action_override == RPZ_PASSTHRU_ACTION) { + if(r->action_override == RPZ_PASSTHRU_ACTION || + lzt == local_zone_always_transparent /* RPZ_PASSTHRU_ACTION */) { *passthru = 1; } diff --git a/testdata/rpz_passthru.rpl b/testdata/rpz_passthru.rpl index cc7a6af89..5c8557547 100644 --- a/testdata/rpz_passthru.rpl +++ b/testdata/rpz_passthru.rpl @@ -23,6 +23,22 @@ c.a TXT "local data 1st zone" d.a A 127.0.0.1 TEMPFILE_END +rpz: + name: "wl.example.com." + rpz-log: yes + rpz-log-name: "wl.example.com" + zonefile: +TEMPFILE_NAME wl.example.com +TEMPFILE_CONTENTS wl.example.com +$ORIGIN example.com. +wl 3600 IN SOA ns1.wl.example.com. hostmaster.wl.example.com. ( + 1379078166 28800 7200 604800 7200 ) + 3600 IN NS ns1.wl.example.com. + 3600 IN NS ns2.wl.example.com. +$ORIGIN wl.example.com. +e.a CNAME rpz-passthru. +TEMPFILE_END + rpz: name: "rpz2.example.com." rpz-log: yes @@ -72,6 +88,16 @@ d.a. IN A SECTION ANSWER d.a. IN A 1.2.3.4 ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +e.a. IN A +SECTION ANSWER +e.a. IN A 1.2.3.4 +ENTRY_END RANGE_END STEP 10 QUERY ADDRESS 192.0.5.1 @@ -108,4 +134,21 @@ SECTION ANSWER d.a. IN A 1.2.3.4 ENTRY_END +STEP 30 QUERY ADDRESS 192.0.2.1 +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +e.a. IN A +ENTRY_END + +STEP 31 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +e.a. IN A +SECTION ANSWER +e.a. IN A 1.2.3.4 +ENTRY_END + SCENARIO_END From 78aee89201cd40b4fe3973a135eb722a4cb1cc85 Mon Sep 17 00:00:00 2001 From: Oscar Mira Date: Sun, 6 Feb 2022 20:37:46 +0100 Subject: [PATCH 519/553] Replace OpenSSL's ERR_PACK with ERR_GET_REASON --- util/netevent.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/util/netevent.c b/util/netevent.c index b9b7230e4..f6fb8c242 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -1209,23 +1209,22 @@ squelch_err_ssl_handshake(unsigned long err) { if(verbosity >= VERB_QUERY) return 0; /* only squelch on low verbosity */ - /* this is very specific, we could filter on ERR_GET_REASON() - * (the third element in ERR_PACK) */ - if(err == ERR_PACK(ERR_LIB_SSL, SSL_F_SSL3_GET_RECORD, SSL_R_HTTPS_PROXY_REQUEST) || - err == ERR_PACK(ERR_LIB_SSL, SSL_F_SSL3_GET_RECORD, SSL_R_HTTP_REQUEST) || - err == ERR_PACK(ERR_LIB_SSL, SSL_F_SSL3_GET_RECORD, SSL_R_WRONG_VERSION_NUMBER) || - err == ERR_PACK(ERR_LIB_SSL, SSL_F_SSL3_READ_BYTES, SSL_R_SSLV3_ALERT_BAD_CERTIFICATE) + if(ERR_GET_LIB(err) == ERR_LIB_SSL && + (ERR_GET_REASON(err) == SSL_R_HTTPS_PROXY_REQUEST || + ERR_GET_REASON(err) == SSL_R_HTTP_REQUEST || + ERR_GET_REASON(err) == SSL_R_WRONG_VERSION_NUMBER || + ERR_GET_REASON(err) == SSL_R_SSLV3_ALERT_BAD_CERTIFICATE #ifdef SSL_F_TLS_POST_PROCESS_CLIENT_HELLO - || err == ERR_PACK(ERR_LIB_SSL, SSL_F_TLS_POST_PROCESS_CLIENT_HELLO, SSL_R_NO_SHARED_CIPHER) + || ERR_GET_REASON(err) == SSL_R_NO_SHARED_CIPHER #endif #ifdef SSL_F_TLS_EARLY_POST_PROCESS_CLIENT_HELLO - || err == ERR_PACK(ERR_LIB_SSL, SSL_F_TLS_EARLY_POST_PROCESS_CLIENT_HELLO, SSL_R_UNKNOWN_PROTOCOL) - || err == ERR_PACK(ERR_LIB_SSL, SSL_F_TLS_EARLY_POST_PROCESS_CLIENT_HELLO, SSL_R_UNSUPPORTED_PROTOCOL) + || ERR_GET_REASON(err) == SSL_R_UNKNOWN_PROTOCOL + || ERR_GET_REASON(err) == SSL_R_UNSUPPORTED_PROTOCOL # ifdef SSL_R_VERSION_TOO_LOW - || err == ERR_PACK(ERR_LIB_SSL, SSL_F_TLS_EARLY_POST_PROCESS_CLIENT_HELLO, SSL_R_VERSION_TOO_LOW) + || ERR_GET_REASON(err) == SSL_R_VERSION_TOO_LOW # endif #endif - ) + )) return 1; return 0; } From a746d9693afda79c267200bc63d379349dcd1be3 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 18 Feb 2022 09:03:56 +0100 Subject: [PATCH 520/553] - Fix that address not available is squelched from the logs for udp connect failures. It is visible on verbosity 4 and more. --- doc/Changelog | 4 ++++ services/outside_network.c | 3 +++ 2 files changed, 7 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 00d65d283..59ff8af0f 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +18 February 2022: Wouter + - Fix that address not available is squelched from the logs for + udp connect failures. It is visible on verbosity 4 and more. + 16 February 2022: Wouter - Fix for #628: fix rpz-passthru for qname trigger by localzone type. diff --git a/services/outside_network.c b/services/outside_network.c index a7e5fa3ad..4578bf8fc 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -1994,6 +1994,9 @@ static int udp_connect_needs_log(int err) # endif # ifdef ENETDOWN case ENETDOWN: +# endif +# ifdef EADDRNOTAVAIL + case EADDRNOTAVAIL: # endif case EPERM: case EACCES: From c4d8104db3fd2443e1959c5eb2d35d46a55f9b5e Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 18 Feb 2022 09:37:44 +0100 Subject: [PATCH 521/553] Changelog note for #631. - Merge #631 from mollyim: Replace OpenSSL's ERR_PACK with ERR_GET_REASON. --- doc/Changelog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 59ff8af0f..e0793c16d 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,8 @@ 18 February 2022: Wouter - Fix that address not available is squelched from the logs for udp connect failures. It is visible on verbosity 4 and more. + - Merge #631 from mollyim: Replace OpenSSL's ERR_PACK with + ERR_GET_REASON. 16 February 2022: Wouter - Fix for #628: fix rpz-passthru for qname trigger by localzone type. From c7be51a11b1148335a1d659b84e0725b0e7e328f Mon Sep 17 00:00:00 2001 From: Dimitris Apostolou Date: Wed, 9 Feb 2022 10:41:50 +0200 Subject: [PATCH 522/553] Fix typos --- iterator/iter_delegpt.h | 2 +- services/rpz.c | 4 ++-- sldns/str2wire.c | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/iterator/iter_delegpt.h b/iterator/iter_delegpt.h index 17db15a23..998b98cd8 100644 --- a/iterator/iter_delegpt.h +++ b/iterator/iter_delegpt.h @@ -128,7 +128,7 @@ struct delegpt_ns { uint8_t done_pside6; /** the TLS authentication name, (if not NULL) to use. */ char* tls_auth_name; - /** the port to use; it should mosty be the default 53 but configured + /** the port to use; it should mostly be the default 53 but configured * upstreams can provide nondefault ports. */ int port; }; diff --git a/services/rpz.c b/services/rpz.c index 309fda22f..241540e02 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -2117,7 +2117,7 @@ rpz_callback_from_iterator_module(struct module_qstate* ms, struct iter_qstate* struct matched_delegation_point match = {0}; if(ms->rpz_passthru) { - verbose(VERB_ALGO, "query is rpz_passthru, no futher processing"); + verbose(VERB_ALGO, "query is rpz_passthru, no further processing"); return NULL; } @@ -2187,7 +2187,7 @@ struct dns_msg* rpz_callback_from_iterator_cname(struct module_qstate* ms, struct dns_msg* ret = NULL; if(ms->rpz_passthru) { - verbose(VERB_ALGO, "query is rpz_passthru, no futher processing"); + verbose(VERB_ALGO, "query is rpz_passthru, no further processing"); return NULL; } diff --git a/sldns/str2wire.c b/sldns/str2wire.c index d2cefae1c..4e9da2b10 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -606,7 +606,7 @@ sldns_affix_token(sldns_buffer* strbuf, char* token, size_t* token_len, /* add space */ /* when addlen < 2, the token buffer is full considering the NULL byte * from strlen and will lead to buffer overflow with the second - * assignement below. */ + * assignment below. */ if(addlen < 2) return 0; token[*token_strlen] = ' '; token[++(*token_strlen)] = 0; @@ -670,10 +670,10 @@ static int sldns_str2wire_check_svcbparams(uint8_t* rdata, uint16_t rdata_len) ,sldns_str2wire_svcparam_key_cmp); - /* The code below revolves around sematic errors in the SVCParam set. + /* The code below revolves around semantic errors in the SVCParam set. * So long as we do not distinguish between running Unbound as a primary * or as a secondary, we default to secondary behavior and we ignore the - * sematic errors. */ + * semantic errors. */ #ifdef SVCB_SEMANTIC_ERRORS { @@ -1356,7 +1356,7 @@ sldns_str2wire_svcbparam_mandatory(const char* val, uint8_t* rd, size_t* rd_len) */ qsort((void *)(rd + 4), count, sizeof(uint16_t), sldns_network_uint16_cmp); - /* The code below revolves around sematic errors in the SVCParam set. + /* The code below revolves around semantic errors in the SVCParam set. * So long as we do not distinguish between running Unbound as a primary * or as a secondary, we default to secondary behavior and we ignore the * semantic errors. */ From 4f3df7ee8621fdfdcd972623b203a76e6716f854 Mon Sep 17 00:00:00 2001 From: scottrw93 Date: Sun, 20 Feb 2022 22:37:49 +0000 Subject: [PATCH 523/553] Match cnames in ipset --- ipset/ipset.c | 39 +++++++++++++++++++++++++-------------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/ipset/ipset.c b/ipset/ipset.c index f6e2c4a9d..065cde5ba 100644 --- a/ipset/ipset.c +++ b/ipset/ipset.c @@ -138,11 +138,12 @@ ipset_add_rrset_data(struct ipset_env *ie, struct mnl_socket *mnl, static int ipset_check_zones_for_rrset(struct module_env *env, struct ipset_env *ie, struct mnl_socket *mnl, struct ub_packed_rrset_key *rrset, - const char *setname, int af) + struct query_info qinfo, const char *setname, int af) { static char dname[BUFF_LEN]; - const char *s; - int dlen, plen; + static char qname[BUFF_LEN]; + const char *ds, *qs; + int dlen, plen, qlen; struct config_strlist *p; struct packed_rrset_data *d; @@ -156,24 +157,34 @@ ipset_check_zones_for_rrset(struct module_env *env, struct ipset_env *ie, dlen--; } + qlen = sldns_wire2str_dname_buf(qinfo.qname, qinfo.qname_len, qname, BUFF_LEN); + if (qname[qlen - 1] == '.') { + qlen--; + } + for (p = env->cfg->local_zones_ipset; p; p = p->next) { plen = strlen(p->str); if (dlen >= plen) { - s = dname + (dlen - plen); - - if (strncasecmp(p->str, s, plen) == 0) { - d = (struct packed_rrset_data*)rrset->entry.data; - ipset_add_rrset_data(ie, mnl, d, setname, - af, dname); - break; - } + ds = dname + (dlen - plen); + } + if (qlen >= plen) { + qs = qname + (qlen - plen); + } + if ((ds && strncasecmp(p->str, ds, plen) == 0) + || (qs && strncasecmp(p->str, qs, plen) == 0)) { + d = (struct packed_rrset_data*)rrset->entry.data; + ipset_add_rrset_data(ie, mnl, d, setname, + af, dname); + break; } } return 0; } -static int ipset_update(struct module_env *env, struct dns_msg *return_msg, struct ipset_env *ie) { +static int ipset_update(struct module_env *env, struct dns_msg *return_msg, + struct query_info qinfo, struct ipset_env *ie) +{ struct mnl_socket *mnl; size_t i; @@ -215,7 +226,7 @@ static int ipset_update(struct module_env *env, struct dns_msg *return_msg, stru if (setname) { if(ipset_check_zones_for_rrset(env, ie, mnl, rrset, - setname, af) == -1) + qinfo, setname, af) == -1) return -1; } } @@ -311,7 +322,7 @@ void ipset_operate(struct module_qstate *qstate, enum module_ev event, int id, if (iq && (event == module_event_moddone)) { if (qstate->return_msg && qstate->return_msg->rep) { - ipset_update(qstate->env, qstate->return_msg, ie); + ipset_update(qstate->env, qstate->return_msg, qstate->qinfo, ie); } qstate->ext_state[id] = module_finished; return; From 4b772ed57133a37139efe62a120e3fef3c5de819 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 25 Feb 2022 10:27:56 +0100 Subject: [PATCH 524/553] - Fix to detect that no IPv6 support means that IPv6 addresses are useless for delegation point lookups. --- daemon/cachedump.c | 4 +- doc/Changelog | 4 + iterator/iter_utils.c | 24 +++-- iterator/iter_utils.h | 6 +- iterator/iterator.c | 2 +- testdata/iter_dp_ip6useless.rpl | 168 ++++++++++++++++++++++++++++++++ 6 files changed, 199 insertions(+), 9 deletions(-) create mode 100644 testdata/iter_dp_ip6useless.rpl diff --git a/daemon/cachedump.c b/daemon/cachedump.c index b1ce53b59..8a8694c42 100644 --- a/daemon/cachedump.c +++ b/daemon/cachedump.c @@ -51,6 +51,7 @@ #include "util/regional.h" #include "util/net_help.h" #include "util/data/dname.h" +#include "util/config_file.h" #include "iterator/iterator.h" #include "iterator/iter_delegpt.h" #include "iterator/iter_utils.h" @@ -854,7 +855,8 @@ int print_deleg_lookup(RES* ssl, struct worker* worker, uint8_t* nm, "cache; goes to configured roots\n"); } /* go up? */ - if(iter_dp_is_useless(&qinfo, BIT_RD, dp)) { + if(iter_dp_is_useless(&qinfo, BIT_RD, dp, + worker->env.cfg->do_ip4, worker->env.cfg->do_ip6)) { print_dp_main(ssl, dp, msg); print_dp_details(ssl, worker, dp); if(!ssl_printf(ssl, "cache delegation was " diff --git a/doc/Changelog b/doc/Changelog index e0793c16d..b968383aa 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +25 February 2022: Wouter + - Fix to detect that no IPv6 support means that IPv6 addresses are + useless for delegation point lookups. + 18 February 2022: Wouter - Fix that address not available is squelched from the logs for udp connect failures. It is visible on verbosity 4 and more. diff --git a/iterator/iter_utils.c b/iterator/iter_utils.c index 2482a1f40..f3bea46d6 100644 --- a/iterator/iter_utils.c +++ b/iterator/iter_utils.c @@ -743,9 +743,10 @@ iter_mark_pside_cycle_targets(struct module_qstate* qstate, struct delegpt* dp) int iter_dp_is_useless(struct query_info* qinfo, uint16_t qflags, - struct delegpt* dp) + struct delegpt* dp, int supports_ipv4, int supports_ipv6) { struct delegpt_ns* ns; + struct delegpt_addr* a; /* check: * o RD qflag is on. * o no addresses are provided. @@ -758,13 +759,24 @@ iter_dp_is_useless(struct query_info* qinfo, uint16_t qflags, */ if(!(qflags&BIT_RD)) return 0; - /* either available or unused targets */ - if(dp->usable_list || dp->result_list) - return 0; + /* either available or unused targets, + * if they exist, the dp is not useless. */ + for(a = dp->usable_list; a; a = a->next_usable) { + if(!addr_is_ip6(&a->addr, a->addrlen) && supports_ipv4) + return 0; + else if(addr_is_ip6(&a->addr, a->addrlen) && supports_ipv6) + return 0; + } + for(a = dp->result_list; a; a = a->next_result) { + if(!addr_is_ip6(&a->addr, a->addrlen) && supports_ipv4) + return 0; + else if(addr_is_ip6(&a->addr, a->addrlen) && supports_ipv6) + return 0; + } /* see if query is for one of the nameservers, which is glue */ - if( (qinfo->qtype == LDNS_RR_TYPE_A || - qinfo->qtype == LDNS_RR_TYPE_AAAA) && + if( ((qinfo->qtype == LDNS_RR_TYPE_A && supports_ipv4) || + (qinfo->qtype == LDNS_RR_TYPE_AAAA && supports_ipv6)) && dname_subdomain_c(qinfo->qname, dp->name) && delegpt_find_ns(dp, qinfo->qname, qinfo->qname_len)) return 1; diff --git a/iterator/iter_utils.h b/iterator/iter_utils.h index 0a40916c0..c0e518157 100644 --- a/iterator/iter_utils.h +++ b/iterator/iter_utils.h @@ -175,10 +175,14 @@ void iter_mark_pside_cycle_targets(struct module_qstate* qstate, * @param qinfo: query name and type * @param qflags: query flags with RD flag * @param dp: delegpt to check. + * @param supports_ipv4: if we support ipv4 for lookups to the target. + * if not, then the IPv4 addresses are useless. + * @param supports_ipv6: if we support ipv6 for lookups to the target. + * if not, then the IPv6 addresses are useless. * @return true if dp is useless. */ int iter_dp_is_useless(struct query_info* qinfo, uint16_t qflags, - struct delegpt* dp); + struct delegpt* dp, int supports_ipv4, int supports_ipv6); /** * See if qname has DNSSEC needs. This is true if there is a trust anchor above diff --git a/iterator/iterator.c b/iterator/iterator.c index 320d2e8fc..cf4f1beac 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -1547,7 +1547,7 @@ processInitRequest(struct module_qstate* qstate, struct iter_qstate* iq, * same server reply) if useless-checked. */ if(iter_dp_is_useless(&qstate->qinfo, qstate->query_flags, - iq->dp)) { + iq->dp, ie->supports_ipv4, ie->supports_ipv6)) { struct delegpt* retdp = NULL; if(!can_have_last_resort(qstate->env, iq->dp->name, iq->dp->namelen, iq->qchase.qclass, &retdp)) { if(retdp) { diff --git a/testdata/iter_dp_ip6useless.rpl b/testdata/iter_dp_ip6useless.rpl new file mode 100644 index 000000000..9a7746e11 --- /dev/null +++ b/testdata/iter_dp_ip6useless.rpl @@ -0,0 +1,168 @@ +; config options +server: + do-ip6: no + target-fetch-policy: "0 0 0 0 0" + qname-minimisation: no +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test iterator when doip6 is no and dp is useless with only ip6 + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +; short TTL here, so it can expire +ns.example.com. 1 IN A 1.2.3.4 +ns.example.com. 100 IN AAAA ::53 +ENTRY_END +RANGE_END + +; 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 +; short TTL here, so it can expire +ns.example.com. 1 IN A 1.2.3.4 +ns.example.com. 100 IN AAAA ::53 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN A +SECTION ANSWER +; short TTL +ns.example.com. 1 IN A 1.2.3.4 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.com. IN AAAA +SECTION ANSWER +ns.example.com. IN AAAA ::53 +ENTRY_END + + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +mail.example.com. IN A +SECTION ANSWER +mail.example.com. IN A 10.20.30.50 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 10 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ENTRY_END + +STEP 20 TIME_PASSES ELAPSE 5.0 + +STEP 30 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +mail.example.com. IN A +ENTRY_END + +STEP 40 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +mail.example.com. IN A +SECTION ANSWER +mail.example.com. IN A 10.20.30.50 +ENTRY_END + +SCENARIO_END From 2c3225e6c7a6ce5627f4f48927c35d8231723d85 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 25 Feb 2022 10:29:33 +0100 Subject: [PATCH 525/553] - update Makefile dependencies. --- Makefile.in | 2 +- doc/Changelog | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Makefile.in b/Makefile.in index 55125a441..8e55527a5 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1248,7 +1248,7 @@ cachedump.lo cachedump.o: $(srcdir)/daemon/cachedump.c config.h $(srcdir)/daemon $(srcdir)/util/regional.h $(srcdir)/util/net_help.h $(srcdir)/util/data/dname.h $(srcdir)/iterator/iterator.h \ $(srcdir)/services/outbound_list.h $(srcdir)/iterator/iter_delegpt.h $(srcdir)/iterator/iter_utils.h \ $(srcdir)/iterator/iter_resptype.h $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_hints.h \ - $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h + $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h $(srcdir)/util/config_file.h daemon.lo daemon.o: $(srcdir)/daemon/daemon.c config.h $(srcdir)/daemon/daemon.h $(srcdir)/util/locks.h \ $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h \ diff --git a/doc/Changelog b/doc/Changelog index b968383aa..8061c0217 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,7 @@ 25 February 2022: Wouter - Fix to detect that no IPv6 support means that IPv6 addresses are useless for delegation point lookups. + - update Makefile dependencies. 18 February 2022: Wouter - Fix that address not available is squelched from the logs for From c084c27b392b0d98173e8c246b9bf69b95c800b0 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 25 Feb 2022 15:24:40 +0100 Subject: [PATCH 526/553] - Fix check interface existence for support detection in remote lookup. --- Makefile.in | 2 +- daemon/cachedump.c | 4 +++- doc/Changelog | 1 + 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/Makefile.in b/Makefile.in index 8e55527a5..0c223eb8d 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1248,7 +1248,7 @@ cachedump.lo cachedump.o: $(srcdir)/daemon/cachedump.c config.h $(srcdir)/daemon $(srcdir)/util/regional.h $(srcdir)/util/net_help.h $(srcdir)/util/data/dname.h $(srcdir)/iterator/iterator.h \ $(srcdir)/services/outbound_list.h $(srcdir)/iterator/iter_delegpt.h $(srcdir)/iterator/iter_utils.h \ $(srcdir)/iterator/iter_resptype.h $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_hints.h \ - $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h $(srcdir)/util/config_file.h + $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h $(srcdir)/util/config_file.h $(srcdir)/services/outside_network.h daemon.lo daemon.o: $(srcdir)/daemon/daemon.c config.h $(srcdir)/daemon/daemon.h $(srcdir)/util/locks.h \ $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h \ diff --git a/daemon/cachedump.c b/daemon/cachedump.c index 8a8694c42..b929f909b 100644 --- a/daemon/cachedump.c +++ b/daemon/cachedump.c @@ -47,6 +47,7 @@ #include "services/cache/rrset.h" #include "services/cache/dns.h" #include "services/cache/infra.h" +#include "services/outside_network.h" #include "util/data/msgreply.h" #include "util/regional.h" #include "util/net_help.h" @@ -856,7 +857,8 @@ int print_deleg_lookup(RES* ssl, struct worker* worker, uint8_t* nm, } /* go up? */ if(iter_dp_is_useless(&qinfo, BIT_RD, dp, - worker->env.cfg->do_ip4, worker->env.cfg->do_ip6)) { + (worker->env.cfg->do_ip4 && worker->back->num_ip4 != 0), + (worker->env.cfg->do_ip6 && worker->back->num_ip6 != 0))) { print_dp_main(ssl, dp, msg); print_dp_details(ssl, worker, dp); if(!ssl_printf(ssl, "cache delegation was " diff --git a/doc/Changelog b/doc/Changelog index 8061c0217..e156b6d7c 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -2,6 +2,7 @@ - Fix to detect that no IPv6 support means that IPv6 addresses are useless for delegation point lookups. - update Makefile dependencies. + - Fix check interface existence for support detection in remote lookup. 18 February 2022: Wouter - Fix that address not available is squelched from the logs for From e11cf2d96409585e205d0294bb4faa68b6be4346 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 28 Feb 2022 09:39:33 +0100 Subject: [PATCH 527/553] - Fix #633: Document unix domain socket support for unbound-control. --- doc/Changelog | 3 +++ doc/unbound.conf.5.in | 1 + 2 files changed, 4 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index e156b6d7c..b497aac3b 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +28 February 2022: Wouter + - Fix #633: Document unix domain socket support for unbound-control. + 25 February 2022: Wouter - Fix to detect that no IPv6 support means that IPv6 addresses are useless for delegation point lookups. diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 593bf860a..9310b77b5 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -1795,6 +1795,7 @@ the server for the change to take effect. .IP If you set it to an absolute path, a local socket is used. The local socket does not use the certificates and keys, so those files need not be present. +This uses a unix domain socket for communication with the server. To restrict access, Unbound sets permissions on the file to the user and group that is configured, the access bits are set to allow the group members to access the control socket file. Put users that need to access the socket From 6e6435617521cddcb0365d000464991bf1f764eb Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 28 Feb 2022 09:56:30 +0100 Subject: [PATCH 528/553] - Fix for #633: updated fix with new text. --- doc/Changelog | 1 + doc/unbound.conf.5.in | 3 +-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index b497aac3b..fa0afc95c 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,6 @@ 28 February 2022: Wouter - Fix #633: Document unix domain socket support for unbound-control. + - Fix for #633: updated fix with new text. 25 February 2022: Wouter - Fix to detect that no IPv6 support means that IPv6 addresses are diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 9310b77b5..1899ae6f3 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -1793,9 +1793,8 @@ Use 0.0.0.0 and ::0 to listen to all interfaces. If you change this and permissions have been dropped, you must restart the server for the change to take effect. .IP -If you set it to an absolute path, a local socket is used. The local socket +If you set it to an absolute path, a unix domain socket is used. This socket does not use the certificates and keys, so those files need not be present. -This uses a unix domain socket for communication with the server. To restrict access, Unbound sets permissions on the file to the user and group that is configured, the access bits are set to allow the group members to access the control socket file. Put users that need to access the socket From 82adcfb971df9634fea191208235d2aca05eff89 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Mon, 28 Feb 2022 12:07:25 +0100 Subject: [PATCH 529/553] - Fix #630: Unify the RPZ log messages. --- doc/Changelog | 3 +++ iterator/iterator.c | 4 ++-- respip/respip.c | 4 ++-- services/rpz.c | 8 ++++---- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index fa0afc95c..58f02a5b9 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +28 February 2022: George + - Fix #630: Unify the RPZ log messages. + 28 February 2022: Wouter - Fix #633: Document unix domain socket support for unbound-control. - Fix for #633: updated fix with new text. diff --git a/iterator/iterator.c b/iterator/iterator.c index cf4f1beac..29d2e79ed 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -2512,7 +2512,7 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, iq->response = forged_response; next_state(iq, FINISHED_STATE); if(!iter_prepend(iq, qstate->return_msg, qstate->region)) { - log_err("rpz, prepend rrsets: out of memory"); + log_err("rpz: prepend rrsets: out of memory"); return error_response(qstate, id, LDNS_RCODE_SERVFAIL); } return 0; @@ -3069,7 +3069,7 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq, iq->response = forged_response; next_state(iq, FINISHED_STATE); if(!iter_prepend(iq, qstate->return_msg, qstate->region)) { - log_err("rpz after cname, prepend rrsets: out of memory"); + log_err("rpz: after cname, prepend rrsets: out of memory"); return error_response(qstate, id, LDNS_RCODE_SERVFAIL); } qstate->return_msg->qinfo = qstate->qinfo; diff --git a/respip/respip.c b/respip/respip.c index 569943e9e..deff66317 100644 --- a/respip/respip.c +++ b/respip/respip.c @@ -970,7 +970,7 @@ respip_rewrite_reply(const struct query_info* qinfo, addr_to_str(&raddr->node.addr, raddr->node.addrlen, nm, sizeof(nm)); - verbose(VERB_ALGO, "respip: rpz response-ip trigger %s/%d on %s %s with action %s", nm, raddr->node.net, qn, ip, rpz_action_to_string(respip_action_to_rpz_action(action))); + verbose(VERB_ALGO, "respip: rpz: response-ip trigger %s/%d on %s %s with action %s", nm, raddr->node.net, qn, ip, rpz_action_to_string(respip_action_to_rpz_action(action))); } /* break to make sure 'a' stays pointed * to used auth_zone, and keeps lock */ @@ -1308,7 +1308,7 @@ respip_inform_print(struct respip_action_info* respip_actinfo, uint8_t* qname, respip, sizeof(respip)); if(respip_actinfo->rpz_log) { txtlen += snprintf(txt+txtlen, sizeof(txt)-txtlen, "%s", - "RPZ applied "); + "rpz: applied "); if(respip_actinfo->rpz_cname_override) actionstr = rpz_action_to_string( RPZ_CNAME_OVERRIDE_ACTION); diff --git a/services/rpz.c b/services/rpz.c index 309fda22f..54f77803a 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -526,13 +526,13 @@ rpz_create(struct config_auth* p) size_t nmlen = sizeof(nm); if(!p->rpz_cname) { - log_err("RPZ override with cname action found, but no " + log_err("rpz: override with cname action found, but no " "rpz-cname-override configured"); goto err; } if(sldns_str2wire_dname_buf(p->rpz_cname, nm, &nmlen) != 0) { - log_err("cannot parse RPZ cname override: %s", + log_err("rpz: cannot parse cname override: %s", p->rpz_cname); goto err; } @@ -614,7 +614,7 @@ rpz_insert_local_zones_trigger(struct local_zones* lz, uint8_t* dname, return; /* no need to log these types as unsupported */ } dname_str(dname, str); - verbose(VERB_ALGO, "RPZ: qname trigger, %s skipping unsupported action: %s", + verbose(VERB_ALGO, "rpz: qname trigger, %s skipping unsupported action: %s", str, rpz_action_to_string(a)); free(dname); return; @@ -999,7 +999,7 @@ rpz_insert_response_ip_trigger(struct rpz* r, uint8_t* dname, size_t dnamelen, rpz_action_to_respip_action(a) == respip_invalid) { char str[255+1]; dname_str(dname, str); - verbose(VERB_ALGO, "RPZ: respip trigger, %s skipping unsupported action: %s", + verbose(VERB_ALGO, "rpz: respip trigger, %s skipping unsupported action: %s", str, rpz_action_to_string(a)); return 0; } From ad158ed5ccc1a5df58fec84fefc6ed1393ad74ef Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Mon, 28 Feb 2022 12:37:59 +0100 Subject: [PATCH 530/553] Changelog entry for #623: - Merge #623 from rex4539: Fix typos. --- doc/Changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/Changelog b/doc/Changelog index 58f02a5b9..f3d925927 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,6 @@ 28 February 2022: George - Fix #630: Unify the RPZ log messages. + - Merge #623 from rex4539: Fix typos. 28 February 2022: Wouter - Fix #633: Document unix domain socket support for unbound-control. From 8e8ccfe3c3c5889a43d2a73e1cef7ebaced59d47 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 28 Feb 2022 14:39:48 +0100 Subject: [PATCH 531/553] - Fix edns client subnet to add the option based on the option list, so that it is not state dependent, after the state fix of #605 for double EDNS options. --- doc/Changelog | 3 +++ edns-subnet/subnetmod.c | 14 +++++++++----- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index f3d925927..fe8ef0d83 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -5,6 +5,9 @@ 28 February 2022: Wouter - Fix #633: Document unix domain socket support for unbound-control. - Fix for #633: updated fix with new text. + - Fix edns client subnet to add the option based on the option list, + so that it is not state dependent, after the state fix of #605 for + double EDNS options. 25 February 2022: Wouter - Fix to detect that no IPv6 support means that IPv6 addresses are diff --git a/edns-subnet/subnetmod.c b/edns-subnet/subnetmod.c index 81f0bf3ad..3c723bcc3 100644 --- a/edns-subnet/subnetmod.c +++ b/edns-subnet/subnetmod.c @@ -162,17 +162,21 @@ int ecs_whitelist_check(struct query_info* qinfo, /* Address on whitelist or client query contains ECS option, we * want to sent out ECS. Only add option if it is not already * set. */ - if(!(sq->subnet_sent)) { + if(!edns_opt_list_find(qstate->edns_opts_back_out, + qstate->env->cfg->client_subnet_opcode)) { ecs_opt_list_append(&sq->ecs_server_out, &qstate->edns_opts_back_out, qstate); - sq->subnet_sent = 1; } + sq->subnet_sent = 1; } - else if(sq->subnet_sent) { + else { /* Outgoing ECS option is set, but we don't want to sent it to * this address, remove option. */ - edns_opt_list_remove(&qstate->edns_opts_back_out, - qstate->env->cfg->client_subnet_opcode); + if(!edns_opt_list_find(qstate->edns_opts_back_out, + qstate->env->cfg->client_subnet_opcode)) { + edns_opt_list_remove(&qstate->edns_opts_back_out, + qstate->env->cfg->client_subnet_opcode); + } sq->subnet_sent = 0; } return 1; From 7749d98a14359200d6d37028f27f07fd823623a1 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 28 Feb 2022 14:51:35 +0100 Subject: [PATCH 532/553] - Fix for edns client subnet option add fix in removal code, from review. --- doc/Changelog | 1 + edns-subnet/subnetmod.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index fe8ef0d83..082f18b99 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -8,6 +8,7 @@ - Fix edns client subnet to add the option based on the option list, so that it is not state dependent, after the state fix of #605 for double EDNS options. + - Fix for edns client subnet option add fix in removal code, from review. 25 February 2022: Wouter - Fix to detect that no IPv6 support means that IPv6 addresses are diff --git a/edns-subnet/subnetmod.c b/edns-subnet/subnetmod.c index 3c723bcc3..fcea71c31 100644 --- a/edns-subnet/subnetmod.c +++ b/edns-subnet/subnetmod.c @@ -172,7 +172,7 @@ int ecs_whitelist_check(struct query_info* qinfo, else { /* Outgoing ECS option is set, but we don't want to sent it to * this address, remove option. */ - if(!edns_opt_list_find(qstate->edns_opts_back_out, + if(edns_opt_list_find(qstate->edns_opts_back_out, qstate->env->cfg->client_subnet_opcode)) { edns_opt_list_remove(&qstate->edns_opts_back_out, qstate->env->cfg->client_subnet_opcode); From 99a3f5ee85830f285c112c8ab65a8c680db91c87 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 1 Mar 2022 10:27:24 +0100 Subject: [PATCH 533/553] - Fix pythonmod for change in iter_dp_is_useless function prototype. --- doc/Changelog | 3 +++ pythonmod/interface.i | 5 +++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 082f18b99..ecc877aca 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +1 March 2022: Wouter + - Fix pythonmod for change in iter_dp_is_useless function prototype. + 28 February 2022: George - Fix #630: Unify the RPZ log messages. - Merge #623 from rex4539: Fix typos. diff --git a/pythonmod/interface.i b/pythonmod/interface.i index 1ca8686a7..2fac5f884 100644 --- a/pythonmod/interface.i +++ b/pythonmod/interface.i @@ -1377,7 +1377,7 @@ struct delegpt* dns_cache_find_delegation(struct module_env* env, uint8_t* qname, size_t qnamelen, uint16_t qtype, uint16_t qclass, struct regional* region, struct dns_msg** msg, uint32_t timenow); int iter_dp_is_useless(struct query_info* qinfo, uint16_t qflags, - struct delegpt* dp); + struct delegpt* dp, int supports_ipv4, int supports_ipv6); struct iter_hints_stub* hints_lookup_stub(struct iter_hints* hints, uint8_t* qname, uint16_t qclass, struct delegpt* dp); @@ -1407,7 +1407,8 @@ struct delegpt* find_delegation(struct module_qstate* qstate, char *nm, size_t n dp = dns_cache_find_delegation(qstate->env, (uint8_t*)nm, nmlen, qinfo.qtype, qinfo.qclass, region, &msg, timenow); if(!dp) return NULL; - if(iter_dp_is_useless(&qinfo, BIT_RD, dp)) { + if(iter_dp_is_useless(&qinfo, BIT_RD, dp, + qstate->env->cfg->do_ip4, qstate->env->cfg->do_ip6)) { if (dname_is_root((uint8_t*)nm)) return NULL; nm = (char*)dp->name; From 0b8e6dafe5b4a5916ad793ae9e2dd1ad4950de44 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Wed, 2 Mar 2022 13:08:16 +0100 Subject: [PATCH 534/553] - Added tests for ipset. --- testdata/ipset.tdir/ipset.conf | 23 +++++ testdata/ipset.tdir/ipset.dsc | 16 ++++ testdata/ipset.tdir/ipset.post | 14 +++ testdata/ipset.tdir/ipset.pre | 33 +++++++ testdata/ipset.tdir/ipset.test | 155 +++++++++++++++++++++++++++++++ testdata/ipset.tdir/ipset.testns | 103 ++++++++++++++++++++ 6 files changed, 344 insertions(+) create mode 100644 testdata/ipset.tdir/ipset.conf create mode 100644 testdata/ipset.tdir/ipset.dsc create mode 100644 testdata/ipset.tdir/ipset.post create mode 100644 testdata/ipset.tdir/ipset.pre create mode 100644 testdata/ipset.tdir/ipset.test create mode 100644 testdata/ipset.tdir/ipset.testns diff --git a/testdata/ipset.tdir/ipset.conf b/testdata/ipset.tdir/ipset.conf new file mode 100644 index 000000000..a53db66f2 --- /dev/null +++ b/testdata/ipset.tdir/ipset.conf @@ -0,0 +1,23 @@ +server: + verbosity: 3 + num-threads: 1 + module-config: "ipset iterator" + outgoing-range: 16 + interface: 127.0.0.1 + port: @PORT@ + use-syslog: no + directory: "" + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no + local-zone: "example.net" ipset +stub-zone: + name: "example.net." + stub-addr: "127.0.0.1@@TOPORT@" +stub-zone: + name: "example.com." + stub-addr: "127.0.0.1@@TOPORT@" +ipset: + name-v4: atotallymadeupnamefor4 + name-v6: atotallymadeupnamefor6 diff --git a/testdata/ipset.tdir/ipset.dsc b/testdata/ipset.tdir/ipset.dsc new file mode 100644 index 000000000..b7792b7e0 --- /dev/null +++ b/testdata/ipset.tdir/ipset.dsc @@ -0,0 +1,16 @@ +BaseName: ipset +Version: 1.0 +Description: mock test ipset module +CreationDate: Wed Mar 2 13:00:38 CET 2022 +Maintainer: George Thessalonikefs +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: ipset.pre +Post: ipset.post +Test: ipset.test +AuxFiles: +Passed: +Failure: diff --git a/testdata/ipset.tdir/ipset.post b/testdata/ipset.tdir/ipset.post new file mode 100644 index 000000000..7af512a4d --- /dev/null +++ b/testdata/ipset.tdir/ipset.post @@ -0,0 +1,14 @@ +# #-- ipset.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_IPSET 1" $PRE/config.h; then echo test enabled; else echo test skipped; exit 0; fi +kill_pid $FWD_PID +kill_pid $UNBOUND_PID +cat unbound.log +exit 0 diff --git a/testdata/ipset.tdir/ipset.pre b/testdata/ipset.tdir/ipset.pre new file mode 100644 index 000000000..ee1aedc70 --- /dev/null +++ b/testdata/ipset.tdir/ipset.pre @@ -0,0 +1,33 @@ +# #-- ipset.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 + +. ../common.sh + +PRE="../.." +if grep "define USE_IPSET 1" $PRE/config.h; then echo test enabled; else echo test skipped; exit 0; fi + +get_random_port 2 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT ipset.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' < ipset.conf > ub.conf +# start unbound in the background +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log +wait_unbound_up unbound.log diff --git a/testdata/ipset.tdir/ipset.test b/testdata/ipset.tdir/ipset.test new file mode 100644 index 000000000..9150e5e3f --- /dev/null +++ b/testdata/ipset.tdir/ipset.test @@ -0,0 +1,155 @@ +# #-- ipset.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 + +. ../common.sh +PRE="../.." +if grep "define USE_IPSET 1" $PRE/config.h; then echo test enabled; else echo test skipped; exit 0; fi + +# Make all the queries. They need to succeed by the way. +echo "> dig www.example.net." +dig @127.0.0.1 -p $UNBOUND_PORT www.example.net. | tee outfile +echo "> check answer" +if grep "1.1.1.1" outfile; then + echo "OK" +else + echo "> cat logfiles" + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi +echo "> check ipset" +if grep "ipset: add 1.1.1.1 to atotallymadeupnamefor4 for www.example.net." unbound.log; then + echo "ipset OK" +else + echo "> cat logfiles" + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi + +echo "> dig www.example.net. AAAA" +dig @127.0.0.1 -p $UNBOUND_PORT www.example.net. AAAA | tee outfile +echo "> check answer" +if grep "::1" outfile; then + echo "OK" +else + echo "> cat logfiles" + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi +echo "> check ipset" +if grep "ipset: add ::1 to atotallymadeupnamefor6 for www.example.net." unbound.log; then + echo "ipset OK" +else + echo "> cat logfiles" + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi + +echo "> dig cname.example.net." +dig @127.0.0.1 -p $UNBOUND_PORT cname.example.net. | tee outfile +echo "> check answer" +if grep "2.2.2.2" outfile; then + echo "OK" +else + echo "> cat logfiles" + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi +echo "> check ipset" +if grep "ipset: add 2.2.2.2 to atotallymadeupnamefor4 for target.example.net." unbound.log; then + echo "ipset OK" +else + echo "> cat logfiles" + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi + +echo "> dig cname.example.net. AAAA" +dig @127.0.0.1 -p $UNBOUND_PORT cname.example.net. AAAA | tee outfile +echo "> check answer" +if grep "::2" outfile; then + echo "OK" +else + echo "> cat logfiles" + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi +echo "> check ipset" +if grep "ipset: add ::2 to atotallymadeupnamefor6 for target.example.net." unbound.log; then + echo "ipset OK" +else + echo "> cat logfiles" + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi + +echo "> dig outsidecname.example.net." +dig @127.0.0.1 -p $UNBOUND_PORT outsidecname.example.net. | tee outfile +echo "> check answer" +if grep "3.3.3.3" outfile; then + echo "OK" +else + echo "> cat logfiles" + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi +echo "> check ipset" +if grep "ipset: add 3.3.3.3 to atotallymadeupnamefor4 for target.example.com." unbound.log; then + echo "ipset OK" +else + echo "> cat logfiles" + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi + +echo "> dig outsidecname.example.net. AAAA" +dig @127.0.0.1 -p $UNBOUND_PORT outsidecname.example.net. AAAA | tee outfile +echo "> check answer" +if grep "::3" outfile; then + echo "OK" +else + echo "> cat logfiles" + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi +echo "> check ipset" +if grep "ipset: add ::3 to atotallymadeupnamefor6 for target.example.com." unbound.log; then + echo "ipset OK" +else + echo "> cat logfiles" + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi + +echo "> cat logfiles" +cat tap.log +cat tap.errlog +cat fwd.log +echo "> OK" +exit 0 diff --git a/testdata/ipset.tdir/ipset.testns b/testdata/ipset.tdir/ipset.testns new file mode 100644 index 000000000..2b626e915 --- /dev/null +++ b/testdata/ipset.tdir/ipset.testns @@ -0,0 +1,103 @@ +; nameserver test file +$ORIGIN example.net. +$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 1.1.1.1 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www IN AAAA +SECTION ANSWER +www IN AAAA ::1 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +cname IN A +SECTION ANSWER +cname IN CNAME target.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +cname IN AAAA +SECTION ANSWER +cname IN CNAME target.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +outsidecname IN A +SECTION ANSWER +outsidecname IN CNAME target.example.com. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +outsidecname IN AAAA +SECTION ANSWER +outsidecname IN CNAME target.example.com. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +target IN A +SECTION ANSWER +target IN A 2.2.2.2 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +target IN AAAA +SECTION ANSWER +target IN AAAA ::2 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +target.example.com. IN A +SECTION ANSWER +target.example.com. IN A 3.3.3.3 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +target.example.com. IN AAAA +SECTION ANSWER +target.example.com. IN AAAA ::3 +ENTRY_END From f7ca4473686fb8edd9c19abf0b39eb7ae2c799bf Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Wed, 2 Mar 2022 13:19:32 +0100 Subject: [PATCH 535/553] Changelog entry for #632 - Merge PR #632 from scottrw93: Match cnames in ipset. --- doc/Changelog | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index ecc877aca..b8dfa6f33 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +2 March 2022: George + - Merge PR #632 from scottrw93: Match cnames in ipset. + 1 March 2022: Wouter - Fix pythonmod for change in iter_dp_is_useless function prototype. From b8e7dfa01e6f80656c339e8bb3f6d7a12d8704a6 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Wed, 2 Mar 2022 14:29:56 +0100 Subject: [PATCH 536/553] - Various fixes for #632: variable initialisation, convert the qinfo to str once, accept trailing dot in the local-zone ipset option. --- doc/Changelog | 2 + ipset/ipset.c | 52 +- testdata/ipset.tdir/ipset.conf | 2 +- util/configparser.c | 2410 ++++++++++++-------------------- util/configparser.h | 9 +- util/configparser.y | 22 +- 6 files changed, 919 insertions(+), 1578 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index b8dfa6f33..b3311201b 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,7 @@ 2 March 2022: George - Merge PR #632 from scottrw93: Match cnames in ipset. + - Various fixes for #632: variable initialisation, convert the qinfo + to str once, accept trailing dot in the local-zone ipset option. 1 March 2022: Wouter - Fix pythonmod for change in iter_dp_is_useless function prototype. diff --git a/ipset/ipset.c b/ipset/ipset.c index 065cde5ba..c61ebc205 100644 --- a/ipset/ipset.c +++ b/ipset/ipset.c @@ -138,12 +138,11 @@ ipset_add_rrset_data(struct ipset_env *ie, struct mnl_socket *mnl, static int ipset_check_zones_for_rrset(struct module_env *env, struct ipset_env *ie, struct mnl_socket *mnl, struct ub_packed_rrset_key *rrset, - struct query_info qinfo, const char *setname, int af) + const char *qname, const int qlen, const char *setname, int af) { static char dname[BUFF_LEN]; - static char qname[BUFF_LEN]; const char *ds, *qs; - int dlen, plen, qlen; + int dlen, plen; struct config_strlist *p; struct packed_rrset_data *d; @@ -153,16 +152,10 @@ ipset_check_zones_for_rrset(struct module_env *env, struct ipset_env *ie, log_err("bad domain name"); return -1; } - if (dname[dlen - 1] == '.') { - dlen--; - } - - qlen = sldns_wire2str_dname_buf(qinfo.qname, qinfo.qname_len, qname, BUFF_LEN); - if (qname[qlen - 1] == '.') { - qlen--; - } for (p = env->cfg->local_zones_ipset; p; p = p->next) { + ds = NULL; + qs = NULL; plen = strlen(p->str); if (dlen >= plen) { @@ -186,47 +179,46 @@ static int ipset_update(struct module_env *env, struct dns_msg *return_msg, struct query_info qinfo, struct ipset_env *ie) { struct mnl_socket *mnl; - size_t i; - const char *setname; - struct ub_packed_rrset_key *rrset; - int af; - + static char qname[BUFF_LEN]; + int qlen; mnl = (struct mnl_socket *)ie->mnl; if (!mnl) { - // retry to create mnl socket + /* retry to create mnl socket */ mnl = open_mnl_socket(); if (!mnl) { return -1; } - ie->mnl = mnl; } - for (i = 0; i < return_msg->rep->rrset_count; ++i) { + qlen = sldns_wire2str_dname_buf(qinfo.qname, qinfo.qname_len, + qname, BUFF_LEN); + if(qlen == 0) { + log_err("bad domain name"); + return -1; + } + + for(i = 0; i < return_msg->rep->rrset_count; i++) { setname = NULL; - rrset = return_msg->rep->rrsets[i]; - - if (rrset->rk.type == htons(LDNS_RR_TYPE_A)) { + if(ntohs(rrset->rk.type) == LDNS_RR_TYPE_A && + ie->v4_enabled == 1) { af = AF_INET; - if ((ie->v4_enabled == 1)) { - setname = ie->name_v4; - } - } else { + setname = ie->name_v4; + } else if(ntohs(rrset->rk.type) == LDNS_RR_TYPE_AAAA && + ie->v6_enabled == 1) { af = AF_INET6; - if ((ie->v6_enabled == 1)) { - setname = ie->name_v6; - } + setname = ie->name_v6; } if (setname) { if(ipset_check_zones_for_rrset(env, ie, mnl, rrset, - qinfo, setname, af) == -1) + qname, qlen, setname, af) == -1) return -1; } } diff --git a/testdata/ipset.tdir/ipset.conf b/testdata/ipset.tdir/ipset.conf index a53db66f2..7cc34912d 100644 --- a/testdata/ipset.tdir/ipset.conf +++ b/testdata/ipset.tdir/ipset.conf @@ -11,7 +11,7 @@ server: chroot: "" username: "" do-not-query-localhost: no - local-zone: "example.net" ipset + local-zone: "example.net." ipset stub-zone: name: "example.net." stub-addr: "127.0.0.1@@TOPORT@" diff --git a/util/configparser.c b/util/configparser.c index 3a5ee57fc..13b83a593 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.6.4. */ +/* A Bison parser, made by GNU Bison 3.7.6. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -16,7 +16,7 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program. If not, see . */ + 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 @@ -45,11 +45,11 @@ define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ -/* Identify Bison output. */ -#define YYBISON 1 +/* Identify Bison output, and Bison version. */ +#define YYBISON 30706 -/* Bison version. */ -#define YYBISON_VERSION "3.6.4" +/* Bison version string. */ +#define YYBISON_VERSION "3.7.6" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -119,701 +119,7 @@ extern struct config_parser_state* cfg_parser; # endif # 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 kinds. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - enum yytokentype - { - YYEMPTY = -2, - YYEOF = 0, /* "end of file" */ - YYerror = 256, /* error */ - YYUNDEF = 257, /* "invalid token" */ - SPACE = 258, /* SPACE */ - LETTER = 259, /* LETTER */ - NEWLINE = 260, /* NEWLINE */ - COMMENT = 261, /* COMMENT */ - COLON = 262, /* COLON */ - ANY = 263, /* ANY */ - ZONESTR = 264, /* ZONESTR */ - STRING_ARG = 265, /* STRING_ARG */ - VAR_FORCE_TOPLEVEL = 266, /* VAR_FORCE_TOPLEVEL */ - VAR_SERVER = 267, /* VAR_SERVER */ - VAR_VERBOSITY = 268, /* VAR_VERBOSITY */ - VAR_NUM_THREADS = 269, /* VAR_NUM_THREADS */ - VAR_PORT = 270, /* VAR_PORT */ - VAR_OUTGOING_RANGE = 271, /* VAR_OUTGOING_RANGE */ - VAR_INTERFACE = 272, /* VAR_INTERFACE */ - VAR_PREFER_IP4 = 273, /* VAR_PREFER_IP4 */ - VAR_DO_IP4 = 274, /* VAR_DO_IP4 */ - VAR_DO_IP6 = 275, /* VAR_DO_IP6 */ - VAR_PREFER_IP6 = 276, /* VAR_PREFER_IP6 */ - VAR_DO_UDP = 277, /* VAR_DO_UDP */ - VAR_DO_TCP = 278, /* VAR_DO_TCP */ - VAR_TCP_MSS = 279, /* VAR_TCP_MSS */ - VAR_OUTGOING_TCP_MSS = 280, /* VAR_OUTGOING_TCP_MSS */ - VAR_TCP_IDLE_TIMEOUT = 281, /* VAR_TCP_IDLE_TIMEOUT */ - VAR_EDNS_TCP_KEEPALIVE = 282, /* VAR_EDNS_TCP_KEEPALIVE */ - VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 283, /* VAR_EDNS_TCP_KEEPALIVE_TIMEOUT */ - VAR_CHROOT = 284, /* VAR_CHROOT */ - VAR_USERNAME = 285, /* VAR_USERNAME */ - VAR_DIRECTORY = 286, /* VAR_DIRECTORY */ - VAR_LOGFILE = 287, /* VAR_LOGFILE */ - VAR_PIDFILE = 288, /* VAR_PIDFILE */ - VAR_MSG_CACHE_SIZE = 289, /* VAR_MSG_CACHE_SIZE */ - VAR_MSG_CACHE_SLABS = 290, /* VAR_MSG_CACHE_SLABS */ - VAR_NUM_QUERIES_PER_THREAD = 291, /* VAR_NUM_QUERIES_PER_THREAD */ - VAR_RRSET_CACHE_SIZE = 292, /* VAR_RRSET_CACHE_SIZE */ - VAR_RRSET_CACHE_SLABS = 293, /* VAR_RRSET_CACHE_SLABS */ - VAR_OUTGOING_NUM_TCP = 294, /* VAR_OUTGOING_NUM_TCP */ - VAR_INFRA_HOST_TTL = 295, /* VAR_INFRA_HOST_TTL */ - VAR_INFRA_LAME_TTL = 296, /* VAR_INFRA_LAME_TTL */ - VAR_INFRA_CACHE_SLABS = 297, /* VAR_INFRA_CACHE_SLABS */ - VAR_INFRA_CACHE_NUMHOSTS = 298, /* VAR_INFRA_CACHE_NUMHOSTS */ - VAR_INFRA_CACHE_LAME_SIZE = 299, /* VAR_INFRA_CACHE_LAME_SIZE */ - VAR_NAME = 300, /* VAR_NAME */ - VAR_STUB_ZONE = 301, /* VAR_STUB_ZONE */ - VAR_STUB_HOST = 302, /* VAR_STUB_HOST */ - VAR_STUB_ADDR = 303, /* VAR_STUB_ADDR */ - VAR_TARGET_FETCH_POLICY = 304, /* VAR_TARGET_FETCH_POLICY */ - VAR_HARDEN_SHORT_BUFSIZE = 305, /* VAR_HARDEN_SHORT_BUFSIZE */ - VAR_HARDEN_LARGE_QUERIES = 306, /* VAR_HARDEN_LARGE_QUERIES */ - VAR_FORWARD_ZONE = 307, /* VAR_FORWARD_ZONE */ - VAR_FORWARD_HOST = 308, /* VAR_FORWARD_HOST */ - VAR_FORWARD_ADDR = 309, /* VAR_FORWARD_ADDR */ - VAR_DO_NOT_QUERY_ADDRESS = 310, /* VAR_DO_NOT_QUERY_ADDRESS */ - VAR_HIDE_IDENTITY = 311, /* VAR_HIDE_IDENTITY */ - VAR_HIDE_VERSION = 312, /* VAR_HIDE_VERSION */ - VAR_IDENTITY = 313, /* VAR_IDENTITY */ - VAR_VERSION = 314, /* VAR_VERSION */ - VAR_HARDEN_GLUE = 315, /* VAR_HARDEN_GLUE */ - VAR_MODULE_CONF = 316, /* VAR_MODULE_CONF */ - VAR_TRUST_ANCHOR_FILE = 317, /* VAR_TRUST_ANCHOR_FILE */ - VAR_TRUST_ANCHOR = 318, /* VAR_TRUST_ANCHOR */ - VAR_VAL_OVERRIDE_DATE = 319, /* VAR_VAL_OVERRIDE_DATE */ - VAR_BOGUS_TTL = 320, /* VAR_BOGUS_TTL */ - VAR_VAL_CLEAN_ADDITIONAL = 321, /* VAR_VAL_CLEAN_ADDITIONAL */ - VAR_VAL_PERMISSIVE_MODE = 322, /* VAR_VAL_PERMISSIVE_MODE */ - VAR_INCOMING_NUM_TCP = 323, /* VAR_INCOMING_NUM_TCP */ - VAR_MSG_BUFFER_SIZE = 324, /* VAR_MSG_BUFFER_SIZE */ - VAR_KEY_CACHE_SIZE = 325, /* VAR_KEY_CACHE_SIZE */ - VAR_KEY_CACHE_SLABS = 326, /* VAR_KEY_CACHE_SLABS */ - VAR_TRUSTED_KEYS_FILE = 327, /* VAR_TRUSTED_KEYS_FILE */ - VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 328, /* VAR_VAL_NSEC3_KEYSIZE_ITERATIONS */ - VAR_USE_SYSLOG = 329, /* VAR_USE_SYSLOG */ - VAR_OUTGOING_INTERFACE = 330, /* VAR_OUTGOING_INTERFACE */ - VAR_ROOT_HINTS = 331, /* VAR_ROOT_HINTS */ - VAR_DO_NOT_QUERY_LOCALHOST = 332, /* VAR_DO_NOT_QUERY_LOCALHOST */ - VAR_CACHE_MAX_TTL = 333, /* VAR_CACHE_MAX_TTL */ - VAR_HARDEN_DNSSEC_STRIPPED = 334, /* VAR_HARDEN_DNSSEC_STRIPPED */ - VAR_ACCESS_CONTROL = 335, /* VAR_ACCESS_CONTROL */ - VAR_LOCAL_ZONE = 336, /* VAR_LOCAL_ZONE */ - VAR_LOCAL_DATA = 337, /* VAR_LOCAL_DATA */ - VAR_INTERFACE_AUTOMATIC = 338, /* VAR_INTERFACE_AUTOMATIC */ - VAR_STATISTICS_INTERVAL = 339, /* VAR_STATISTICS_INTERVAL */ - VAR_DO_DAEMONIZE = 340, /* VAR_DO_DAEMONIZE */ - VAR_USE_CAPS_FOR_ID = 341, /* VAR_USE_CAPS_FOR_ID */ - VAR_STATISTICS_CUMULATIVE = 342, /* VAR_STATISTICS_CUMULATIVE */ - VAR_OUTGOING_PORT_PERMIT = 343, /* VAR_OUTGOING_PORT_PERMIT */ - VAR_OUTGOING_PORT_AVOID = 344, /* VAR_OUTGOING_PORT_AVOID */ - VAR_DLV_ANCHOR_FILE = 345, /* VAR_DLV_ANCHOR_FILE */ - VAR_DLV_ANCHOR = 346, /* VAR_DLV_ANCHOR */ - VAR_NEG_CACHE_SIZE = 347, /* VAR_NEG_CACHE_SIZE */ - VAR_HARDEN_REFERRAL_PATH = 348, /* VAR_HARDEN_REFERRAL_PATH */ - VAR_PRIVATE_ADDRESS = 349, /* VAR_PRIVATE_ADDRESS */ - VAR_PRIVATE_DOMAIN = 350, /* VAR_PRIVATE_DOMAIN */ - VAR_REMOTE_CONTROL = 351, /* VAR_REMOTE_CONTROL */ - VAR_CONTROL_ENABLE = 352, /* VAR_CONTROL_ENABLE */ - VAR_CONTROL_INTERFACE = 353, /* VAR_CONTROL_INTERFACE */ - VAR_CONTROL_PORT = 354, /* VAR_CONTROL_PORT */ - VAR_SERVER_KEY_FILE = 355, /* VAR_SERVER_KEY_FILE */ - VAR_SERVER_CERT_FILE = 356, /* VAR_SERVER_CERT_FILE */ - VAR_CONTROL_KEY_FILE = 357, /* VAR_CONTROL_KEY_FILE */ - VAR_CONTROL_CERT_FILE = 358, /* VAR_CONTROL_CERT_FILE */ - VAR_CONTROL_USE_CERT = 359, /* VAR_CONTROL_USE_CERT */ - VAR_TCP_REUSE_TIMEOUT = 360, /* VAR_TCP_REUSE_TIMEOUT */ - VAR_MAX_REUSE_TCP_QUERIES = 361, /* VAR_MAX_REUSE_TCP_QUERIES */ - VAR_EXTENDED_STATISTICS = 362, /* VAR_EXTENDED_STATISTICS */ - VAR_LOCAL_DATA_PTR = 363, /* VAR_LOCAL_DATA_PTR */ - VAR_JOSTLE_TIMEOUT = 364, /* VAR_JOSTLE_TIMEOUT */ - VAR_STUB_PRIME = 365, /* VAR_STUB_PRIME */ - VAR_UNWANTED_REPLY_THRESHOLD = 366, /* VAR_UNWANTED_REPLY_THRESHOLD */ - VAR_LOG_TIME_ASCII = 367, /* VAR_LOG_TIME_ASCII */ - VAR_DOMAIN_INSECURE = 368, /* VAR_DOMAIN_INSECURE */ - VAR_PYTHON = 369, /* VAR_PYTHON */ - VAR_PYTHON_SCRIPT = 370, /* VAR_PYTHON_SCRIPT */ - VAR_VAL_SIG_SKEW_MIN = 371, /* VAR_VAL_SIG_SKEW_MIN */ - VAR_VAL_SIG_SKEW_MAX = 372, /* VAR_VAL_SIG_SKEW_MAX */ - VAR_VAL_MAX_RESTART = 373, /* VAR_VAL_MAX_RESTART */ - VAR_CACHE_MIN_TTL = 374, /* VAR_CACHE_MIN_TTL */ - VAR_VAL_LOG_LEVEL = 375, /* VAR_VAL_LOG_LEVEL */ - VAR_AUTO_TRUST_ANCHOR_FILE = 376, /* VAR_AUTO_TRUST_ANCHOR_FILE */ - VAR_KEEP_MISSING = 377, /* VAR_KEEP_MISSING */ - VAR_ADD_HOLDDOWN = 378, /* VAR_ADD_HOLDDOWN */ - VAR_DEL_HOLDDOWN = 379, /* VAR_DEL_HOLDDOWN */ - VAR_SO_RCVBUF = 380, /* VAR_SO_RCVBUF */ - VAR_EDNS_BUFFER_SIZE = 381, /* VAR_EDNS_BUFFER_SIZE */ - VAR_PREFETCH = 382, /* VAR_PREFETCH */ - VAR_PREFETCH_KEY = 383, /* VAR_PREFETCH_KEY */ - VAR_SO_SNDBUF = 384, /* VAR_SO_SNDBUF */ - VAR_SO_REUSEPORT = 385, /* VAR_SO_REUSEPORT */ - VAR_HARDEN_BELOW_NXDOMAIN = 386, /* VAR_HARDEN_BELOW_NXDOMAIN */ - VAR_IGNORE_CD_FLAG = 387, /* VAR_IGNORE_CD_FLAG */ - VAR_LOG_QUERIES = 388, /* VAR_LOG_QUERIES */ - VAR_LOG_REPLIES = 389, /* VAR_LOG_REPLIES */ - VAR_LOG_LOCAL_ACTIONS = 390, /* VAR_LOG_LOCAL_ACTIONS */ - VAR_TCP_UPSTREAM = 391, /* VAR_TCP_UPSTREAM */ - VAR_SSL_UPSTREAM = 392, /* VAR_SSL_UPSTREAM */ - VAR_TCP_AUTH_QUERY_TIMEOUT = 393, /* VAR_TCP_AUTH_QUERY_TIMEOUT */ - VAR_SSL_SERVICE_KEY = 394, /* VAR_SSL_SERVICE_KEY */ - VAR_SSL_SERVICE_PEM = 395, /* VAR_SSL_SERVICE_PEM */ - VAR_SSL_PORT = 396, /* VAR_SSL_PORT */ - VAR_FORWARD_FIRST = 397, /* VAR_FORWARD_FIRST */ - VAR_STUB_SSL_UPSTREAM = 398, /* VAR_STUB_SSL_UPSTREAM */ - VAR_FORWARD_SSL_UPSTREAM = 399, /* VAR_FORWARD_SSL_UPSTREAM */ - VAR_TLS_CERT_BUNDLE = 400, /* VAR_TLS_CERT_BUNDLE */ - VAR_STUB_TCP_UPSTREAM = 401, /* VAR_STUB_TCP_UPSTREAM */ - VAR_FORWARD_TCP_UPSTREAM = 402, /* VAR_FORWARD_TCP_UPSTREAM */ - VAR_HTTPS_PORT = 403, /* VAR_HTTPS_PORT */ - VAR_HTTP_ENDPOINT = 404, /* VAR_HTTP_ENDPOINT */ - VAR_HTTP_MAX_STREAMS = 405, /* VAR_HTTP_MAX_STREAMS */ - VAR_HTTP_QUERY_BUFFER_SIZE = 406, /* VAR_HTTP_QUERY_BUFFER_SIZE */ - VAR_HTTP_RESPONSE_BUFFER_SIZE = 407, /* VAR_HTTP_RESPONSE_BUFFER_SIZE */ - VAR_HTTP_NODELAY = 408, /* VAR_HTTP_NODELAY */ - VAR_HTTP_NOTLS_DOWNSTREAM = 409, /* VAR_HTTP_NOTLS_DOWNSTREAM */ - VAR_STUB_FIRST = 410, /* VAR_STUB_FIRST */ - VAR_MINIMAL_RESPONSES = 411, /* VAR_MINIMAL_RESPONSES */ - VAR_RRSET_ROUNDROBIN = 412, /* VAR_RRSET_ROUNDROBIN */ - VAR_MAX_UDP_SIZE = 413, /* VAR_MAX_UDP_SIZE */ - VAR_DELAY_CLOSE = 414, /* VAR_DELAY_CLOSE */ - VAR_UDP_CONNECT = 415, /* VAR_UDP_CONNECT */ - VAR_UNBLOCK_LAN_ZONES = 416, /* VAR_UNBLOCK_LAN_ZONES */ - VAR_INSECURE_LAN_ZONES = 417, /* VAR_INSECURE_LAN_ZONES */ - VAR_INFRA_CACHE_MIN_RTT = 418, /* VAR_INFRA_CACHE_MIN_RTT */ - VAR_INFRA_KEEP_PROBING = 419, /* VAR_INFRA_KEEP_PROBING */ - VAR_DNS64_PREFIX = 420, /* VAR_DNS64_PREFIX */ - VAR_DNS64_SYNTHALL = 421, /* VAR_DNS64_SYNTHALL */ - VAR_DNS64_IGNORE_AAAA = 422, /* VAR_DNS64_IGNORE_AAAA */ - VAR_DNSTAP = 423, /* VAR_DNSTAP */ - VAR_DNSTAP_ENABLE = 424, /* VAR_DNSTAP_ENABLE */ - VAR_DNSTAP_SOCKET_PATH = 425, /* VAR_DNSTAP_SOCKET_PATH */ - VAR_DNSTAP_IP = 426, /* VAR_DNSTAP_IP */ - VAR_DNSTAP_TLS = 427, /* VAR_DNSTAP_TLS */ - VAR_DNSTAP_TLS_SERVER_NAME = 428, /* VAR_DNSTAP_TLS_SERVER_NAME */ - VAR_DNSTAP_TLS_CERT_BUNDLE = 429, /* VAR_DNSTAP_TLS_CERT_BUNDLE */ - VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 430, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE */ - VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 431, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE */ - VAR_DNSTAP_SEND_IDENTITY = 432, /* VAR_DNSTAP_SEND_IDENTITY */ - VAR_DNSTAP_SEND_VERSION = 433, /* VAR_DNSTAP_SEND_VERSION */ - VAR_DNSTAP_BIDIRECTIONAL = 434, /* VAR_DNSTAP_BIDIRECTIONAL */ - VAR_DNSTAP_IDENTITY = 435, /* VAR_DNSTAP_IDENTITY */ - VAR_DNSTAP_VERSION = 436, /* VAR_DNSTAP_VERSION */ - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 437, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES */ - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 438, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES */ - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 439, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES */ - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 440, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES */ - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 441, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES */ - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 442, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES */ - VAR_RESPONSE_IP_TAG = 443, /* VAR_RESPONSE_IP_TAG */ - VAR_RESPONSE_IP = 444, /* VAR_RESPONSE_IP */ - VAR_RESPONSE_IP_DATA = 445, /* VAR_RESPONSE_IP_DATA */ - VAR_HARDEN_ALGO_DOWNGRADE = 446, /* VAR_HARDEN_ALGO_DOWNGRADE */ - VAR_IP_TRANSPARENT = 447, /* VAR_IP_TRANSPARENT */ - VAR_IP_DSCP = 448, /* VAR_IP_DSCP */ - VAR_DISABLE_DNSSEC_LAME_CHECK = 449, /* VAR_DISABLE_DNSSEC_LAME_CHECK */ - VAR_IP_RATELIMIT = 450, /* VAR_IP_RATELIMIT */ - VAR_IP_RATELIMIT_SLABS = 451, /* VAR_IP_RATELIMIT_SLABS */ - VAR_IP_RATELIMIT_SIZE = 452, /* VAR_IP_RATELIMIT_SIZE */ - VAR_RATELIMIT = 453, /* VAR_RATELIMIT */ - VAR_RATELIMIT_SLABS = 454, /* VAR_RATELIMIT_SLABS */ - VAR_RATELIMIT_SIZE = 455, /* VAR_RATELIMIT_SIZE */ - VAR_OUTBOUND_MSG_RETRY = 456, /* VAR_OUTBOUND_MSG_RETRY */ - VAR_RATELIMIT_FOR_DOMAIN = 457, /* VAR_RATELIMIT_FOR_DOMAIN */ - VAR_RATELIMIT_BELOW_DOMAIN = 458, /* VAR_RATELIMIT_BELOW_DOMAIN */ - VAR_IP_RATELIMIT_FACTOR = 459, /* VAR_IP_RATELIMIT_FACTOR */ - VAR_RATELIMIT_FACTOR = 460, /* VAR_RATELIMIT_FACTOR */ - VAR_IP_RATELIMIT_BACKOFF = 461, /* VAR_IP_RATELIMIT_BACKOFF */ - VAR_RATELIMIT_BACKOFF = 462, /* VAR_RATELIMIT_BACKOFF */ - VAR_SEND_CLIENT_SUBNET = 463, /* VAR_SEND_CLIENT_SUBNET */ - VAR_CLIENT_SUBNET_ZONE = 464, /* VAR_CLIENT_SUBNET_ZONE */ - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 465, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ - VAR_CLIENT_SUBNET_OPCODE = 466, /* VAR_CLIENT_SUBNET_OPCODE */ - VAR_MAX_CLIENT_SUBNET_IPV4 = 467, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ - VAR_MAX_CLIENT_SUBNET_IPV6 = 468, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ - VAR_MIN_CLIENT_SUBNET_IPV4 = 469, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ - VAR_MIN_CLIENT_SUBNET_IPV6 = 470, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ - VAR_MAX_ECS_TREE_SIZE_IPV4 = 471, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ - VAR_MAX_ECS_TREE_SIZE_IPV6 = 472, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ - VAR_CAPS_WHITELIST = 473, /* VAR_CAPS_WHITELIST */ - VAR_CACHE_MAX_NEGATIVE_TTL = 474, /* VAR_CACHE_MAX_NEGATIVE_TTL */ - VAR_PERMIT_SMALL_HOLDDOWN = 475, /* VAR_PERMIT_SMALL_HOLDDOWN */ - VAR_QNAME_MINIMISATION = 476, /* VAR_QNAME_MINIMISATION */ - VAR_QNAME_MINIMISATION_STRICT = 477, /* VAR_QNAME_MINIMISATION_STRICT */ - VAR_IP_FREEBIND = 478, /* VAR_IP_FREEBIND */ - VAR_DEFINE_TAG = 479, /* VAR_DEFINE_TAG */ - VAR_LOCAL_ZONE_TAG = 480, /* VAR_LOCAL_ZONE_TAG */ - VAR_ACCESS_CONTROL_TAG = 481, /* VAR_ACCESS_CONTROL_TAG */ - VAR_LOCAL_ZONE_OVERRIDE = 482, /* VAR_LOCAL_ZONE_OVERRIDE */ - VAR_ACCESS_CONTROL_TAG_ACTION = 483, /* VAR_ACCESS_CONTROL_TAG_ACTION */ - VAR_ACCESS_CONTROL_TAG_DATA = 484, /* VAR_ACCESS_CONTROL_TAG_DATA */ - VAR_VIEW = 485, /* VAR_VIEW */ - VAR_ACCESS_CONTROL_VIEW = 486, /* VAR_ACCESS_CONTROL_VIEW */ - VAR_VIEW_FIRST = 487, /* VAR_VIEW_FIRST */ - VAR_SERVE_EXPIRED = 488, /* VAR_SERVE_EXPIRED */ - VAR_SERVE_EXPIRED_TTL = 489, /* VAR_SERVE_EXPIRED_TTL */ - VAR_SERVE_EXPIRED_TTL_RESET = 490, /* VAR_SERVE_EXPIRED_TTL_RESET */ - VAR_SERVE_EXPIRED_REPLY_TTL = 491, /* VAR_SERVE_EXPIRED_REPLY_TTL */ - VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 492, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ - VAR_SERVE_ORIGINAL_TTL = 493, /* VAR_SERVE_ORIGINAL_TTL */ - VAR_FAKE_DSA = 494, /* VAR_FAKE_DSA */ - VAR_FAKE_SHA1 = 495, /* VAR_FAKE_SHA1 */ - VAR_LOG_IDENTITY = 496, /* VAR_LOG_IDENTITY */ - VAR_HIDE_TRUSTANCHOR = 497, /* VAR_HIDE_TRUSTANCHOR */ - VAR_HIDE_HTTP_USER_AGENT = 498, /* VAR_HIDE_HTTP_USER_AGENT */ - VAR_HTTP_USER_AGENT = 499, /* VAR_HTTP_USER_AGENT */ - VAR_TRUST_ANCHOR_SIGNALING = 500, /* VAR_TRUST_ANCHOR_SIGNALING */ - VAR_AGGRESSIVE_NSEC = 501, /* VAR_AGGRESSIVE_NSEC */ - VAR_USE_SYSTEMD = 502, /* VAR_USE_SYSTEMD */ - VAR_SHM_ENABLE = 503, /* VAR_SHM_ENABLE */ - VAR_SHM_KEY = 504, /* VAR_SHM_KEY */ - VAR_ROOT_KEY_SENTINEL = 505, /* VAR_ROOT_KEY_SENTINEL */ - VAR_DNSCRYPT = 506, /* VAR_DNSCRYPT */ - VAR_DNSCRYPT_ENABLE = 507, /* VAR_DNSCRYPT_ENABLE */ - VAR_DNSCRYPT_PORT = 508, /* VAR_DNSCRYPT_PORT */ - VAR_DNSCRYPT_PROVIDER = 509, /* VAR_DNSCRYPT_PROVIDER */ - VAR_DNSCRYPT_SECRET_KEY = 510, /* VAR_DNSCRYPT_SECRET_KEY */ - VAR_DNSCRYPT_PROVIDER_CERT = 511, /* VAR_DNSCRYPT_PROVIDER_CERT */ - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 512, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 513, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 514, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 515, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 516, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ - VAR_PAD_RESPONSES = 517, /* VAR_PAD_RESPONSES */ - VAR_PAD_RESPONSES_BLOCK_SIZE = 518, /* VAR_PAD_RESPONSES_BLOCK_SIZE */ - VAR_PAD_QUERIES = 519, /* VAR_PAD_QUERIES */ - VAR_PAD_QUERIES_BLOCK_SIZE = 520, /* VAR_PAD_QUERIES_BLOCK_SIZE */ - VAR_IPSECMOD_ENABLED = 521, /* VAR_IPSECMOD_ENABLED */ - VAR_IPSECMOD_HOOK = 522, /* VAR_IPSECMOD_HOOK */ - VAR_IPSECMOD_IGNORE_BOGUS = 523, /* VAR_IPSECMOD_IGNORE_BOGUS */ - VAR_IPSECMOD_MAX_TTL = 524, /* VAR_IPSECMOD_MAX_TTL */ - VAR_IPSECMOD_WHITELIST = 525, /* VAR_IPSECMOD_WHITELIST */ - VAR_IPSECMOD_STRICT = 526, /* VAR_IPSECMOD_STRICT */ - VAR_CACHEDB = 527, /* VAR_CACHEDB */ - VAR_CACHEDB_BACKEND = 528, /* VAR_CACHEDB_BACKEND */ - VAR_CACHEDB_SECRETSEED = 529, /* VAR_CACHEDB_SECRETSEED */ - VAR_CACHEDB_REDISHOST = 530, /* VAR_CACHEDB_REDISHOST */ - VAR_CACHEDB_REDISPORT = 531, /* VAR_CACHEDB_REDISPORT */ - VAR_CACHEDB_REDISTIMEOUT = 532, /* VAR_CACHEDB_REDISTIMEOUT */ - VAR_CACHEDB_REDISEXPIRERECORDS = 533, /* VAR_CACHEDB_REDISEXPIRERECORDS */ - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 534, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ - VAR_FOR_UPSTREAM = 535, /* VAR_FOR_UPSTREAM */ - VAR_AUTH_ZONE = 536, /* VAR_AUTH_ZONE */ - VAR_ZONEFILE = 537, /* VAR_ZONEFILE */ - VAR_MASTER = 538, /* VAR_MASTER */ - VAR_URL = 539, /* VAR_URL */ - VAR_FOR_DOWNSTREAM = 540, /* VAR_FOR_DOWNSTREAM */ - VAR_FALLBACK_ENABLED = 541, /* VAR_FALLBACK_ENABLED */ - VAR_TLS_ADDITIONAL_PORT = 542, /* VAR_TLS_ADDITIONAL_PORT */ - VAR_LOW_RTT = 543, /* VAR_LOW_RTT */ - VAR_LOW_RTT_PERMIL = 544, /* VAR_LOW_RTT_PERMIL */ - VAR_FAST_SERVER_PERMIL = 545, /* VAR_FAST_SERVER_PERMIL */ - VAR_FAST_SERVER_NUM = 546, /* VAR_FAST_SERVER_NUM */ - VAR_ALLOW_NOTIFY = 547, /* VAR_ALLOW_NOTIFY */ - VAR_TLS_WIN_CERT = 548, /* VAR_TLS_WIN_CERT */ - VAR_TCP_CONNECTION_LIMIT = 549, /* VAR_TCP_CONNECTION_LIMIT */ - VAR_FORWARD_NO_CACHE = 550, /* VAR_FORWARD_NO_CACHE */ - VAR_STUB_NO_CACHE = 551, /* VAR_STUB_NO_CACHE */ - VAR_LOG_SERVFAIL = 552, /* VAR_LOG_SERVFAIL */ - VAR_DENY_ANY = 553, /* VAR_DENY_ANY */ - VAR_UNKNOWN_SERVER_TIME_LIMIT = 554, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ - VAR_LOG_TAG_QUERYREPLY = 555, /* VAR_LOG_TAG_QUERYREPLY */ - VAR_STREAM_WAIT_SIZE = 556, /* VAR_STREAM_WAIT_SIZE */ - VAR_TLS_CIPHERS = 557, /* VAR_TLS_CIPHERS */ - VAR_TLS_CIPHERSUITES = 558, /* VAR_TLS_CIPHERSUITES */ - VAR_TLS_USE_SNI = 559, /* VAR_TLS_USE_SNI */ - VAR_IPSET = 560, /* VAR_IPSET */ - VAR_IPSET_NAME_V4 = 561, /* VAR_IPSET_NAME_V4 */ - VAR_IPSET_NAME_V6 = 562, /* VAR_IPSET_NAME_V6 */ - VAR_TLS_SESSION_TICKET_KEYS = 563, /* VAR_TLS_SESSION_TICKET_KEYS */ - VAR_RPZ = 564, /* VAR_RPZ */ - VAR_TAGS = 565, /* VAR_TAGS */ - VAR_RPZ_ACTION_OVERRIDE = 566, /* VAR_RPZ_ACTION_OVERRIDE */ - VAR_RPZ_CNAME_OVERRIDE = 567, /* VAR_RPZ_CNAME_OVERRIDE */ - VAR_RPZ_LOG = 568, /* VAR_RPZ_LOG */ - VAR_RPZ_LOG_NAME = 569, /* VAR_RPZ_LOG_NAME */ - VAR_DYNLIB = 570, /* VAR_DYNLIB */ - VAR_DYNLIB_FILE = 571, /* VAR_DYNLIB_FILE */ - VAR_EDNS_CLIENT_STRING = 572, /* VAR_EDNS_CLIENT_STRING */ - VAR_EDNS_CLIENT_STRING_OPCODE = 573, /* VAR_EDNS_CLIENT_STRING_OPCODE */ - VAR_NSID = 574, /* VAR_NSID */ - VAR_ZONEMD_PERMISSIVE_MODE = 575, /* VAR_ZONEMD_PERMISSIVE_MODE */ - VAR_ZONEMD_CHECK = 576, /* VAR_ZONEMD_CHECK */ - VAR_ZONEMD_REJECT_ABSENCE = 577, /* VAR_ZONEMD_REJECT_ABSENCE */ - VAR_RPZ_SIGNAL_NXDOMAIN_RA = 578, /* VAR_RPZ_SIGNAL_NXDOMAIN_RA */ - VAR_INTERFACE_AUTOMATIC_PORTS = 579 /* VAR_INTERFACE_AUTOMATIC_PORTS */ - }; - typedef enum yytokentype yytoken_kind_t; -#endif -/* Token kinds. */ -#define YYEOF 0 -#define YYerror 256 -#define YYUNDEF 257 -#define SPACE 258 -#define LETTER 259 -#define NEWLINE 260 -#define COMMENT 261 -#define COLON 262 -#define ANY 263 -#define ZONESTR 264 -#define STRING_ARG 265 -#define VAR_FORCE_TOPLEVEL 266 -#define VAR_SERVER 267 -#define VAR_VERBOSITY 268 -#define VAR_NUM_THREADS 269 -#define VAR_PORT 270 -#define VAR_OUTGOING_RANGE 271 -#define VAR_INTERFACE 272 -#define VAR_PREFER_IP4 273 -#define VAR_DO_IP4 274 -#define VAR_DO_IP6 275 -#define VAR_PREFER_IP6 276 -#define VAR_DO_UDP 277 -#define VAR_DO_TCP 278 -#define VAR_TCP_MSS 279 -#define VAR_OUTGOING_TCP_MSS 280 -#define VAR_TCP_IDLE_TIMEOUT 281 -#define VAR_EDNS_TCP_KEEPALIVE 282 -#define VAR_EDNS_TCP_KEEPALIVE_TIMEOUT 283 -#define VAR_CHROOT 284 -#define VAR_USERNAME 285 -#define VAR_DIRECTORY 286 -#define VAR_LOGFILE 287 -#define VAR_PIDFILE 288 -#define VAR_MSG_CACHE_SIZE 289 -#define VAR_MSG_CACHE_SLABS 290 -#define VAR_NUM_QUERIES_PER_THREAD 291 -#define VAR_RRSET_CACHE_SIZE 292 -#define VAR_RRSET_CACHE_SLABS 293 -#define VAR_OUTGOING_NUM_TCP 294 -#define VAR_INFRA_HOST_TTL 295 -#define VAR_INFRA_LAME_TTL 296 -#define VAR_INFRA_CACHE_SLABS 297 -#define VAR_INFRA_CACHE_NUMHOSTS 298 -#define VAR_INFRA_CACHE_LAME_SIZE 299 -#define VAR_NAME 300 -#define VAR_STUB_ZONE 301 -#define VAR_STUB_HOST 302 -#define VAR_STUB_ADDR 303 -#define VAR_TARGET_FETCH_POLICY 304 -#define VAR_HARDEN_SHORT_BUFSIZE 305 -#define VAR_HARDEN_LARGE_QUERIES 306 -#define VAR_FORWARD_ZONE 307 -#define VAR_FORWARD_HOST 308 -#define VAR_FORWARD_ADDR 309 -#define VAR_DO_NOT_QUERY_ADDRESS 310 -#define VAR_HIDE_IDENTITY 311 -#define VAR_HIDE_VERSION 312 -#define VAR_IDENTITY 313 -#define VAR_VERSION 314 -#define VAR_HARDEN_GLUE 315 -#define VAR_MODULE_CONF 316 -#define VAR_TRUST_ANCHOR_FILE 317 -#define VAR_TRUST_ANCHOR 318 -#define VAR_VAL_OVERRIDE_DATE 319 -#define VAR_BOGUS_TTL 320 -#define VAR_VAL_CLEAN_ADDITIONAL 321 -#define VAR_VAL_PERMISSIVE_MODE 322 -#define VAR_INCOMING_NUM_TCP 323 -#define VAR_MSG_BUFFER_SIZE 324 -#define VAR_KEY_CACHE_SIZE 325 -#define VAR_KEY_CACHE_SLABS 326 -#define VAR_TRUSTED_KEYS_FILE 327 -#define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 328 -#define VAR_USE_SYSLOG 329 -#define VAR_OUTGOING_INTERFACE 330 -#define VAR_ROOT_HINTS 331 -#define VAR_DO_NOT_QUERY_LOCALHOST 332 -#define VAR_CACHE_MAX_TTL 333 -#define VAR_HARDEN_DNSSEC_STRIPPED 334 -#define VAR_ACCESS_CONTROL 335 -#define VAR_LOCAL_ZONE 336 -#define VAR_LOCAL_DATA 337 -#define VAR_INTERFACE_AUTOMATIC 338 -#define VAR_STATISTICS_INTERVAL 339 -#define VAR_DO_DAEMONIZE 340 -#define VAR_USE_CAPS_FOR_ID 341 -#define VAR_STATISTICS_CUMULATIVE 342 -#define VAR_OUTGOING_PORT_PERMIT 343 -#define VAR_OUTGOING_PORT_AVOID 344 -#define VAR_DLV_ANCHOR_FILE 345 -#define VAR_DLV_ANCHOR 346 -#define VAR_NEG_CACHE_SIZE 347 -#define VAR_HARDEN_REFERRAL_PATH 348 -#define VAR_PRIVATE_ADDRESS 349 -#define VAR_PRIVATE_DOMAIN 350 -#define VAR_REMOTE_CONTROL 351 -#define VAR_CONTROL_ENABLE 352 -#define VAR_CONTROL_INTERFACE 353 -#define VAR_CONTROL_PORT 354 -#define VAR_SERVER_KEY_FILE 355 -#define VAR_SERVER_CERT_FILE 356 -#define VAR_CONTROL_KEY_FILE 357 -#define VAR_CONTROL_CERT_FILE 358 -#define VAR_CONTROL_USE_CERT 359 -#define VAR_TCP_REUSE_TIMEOUT 360 -#define VAR_MAX_REUSE_TCP_QUERIES 361 -#define VAR_EXTENDED_STATISTICS 362 -#define VAR_LOCAL_DATA_PTR 363 -#define VAR_JOSTLE_TIMEOUT 364 -#define VAR_STUB_PRIME 365 -#define VAR_UNWANTED_REPLY_THRESHOLD 366 -#define VAR_LOG_TIME_ASCII 367 -#define VAR_DOMAIN_INSECURE 368 -#define VAR_PYTHON 369 -#define VAR_PYTHON_SCRIPT 370 -#define VAR_VAL_SIG_SKEW_MIN 371 -#define VAR_VAL_SIG_SKEW_MAX 372 -#define VAR_VAL_MAX_RESTART 373 -#define VAR_CACHE_MIN_TTL 374 -#define VAR_VAL_LOG_LEVEL 375 -#define VAR_AUTO_TRUST_ANCHOR_FILE 376 -#define VAR_KEEP_MISSING 377 -#define VAR_ADD_HOLDDOWN 378 -#define VAR_DEL_HOLDDOWN 379 -#define VAR_SO_RCVBUF 380 -#define VAR_EDNS_BUFFER_SIZE 381 -#define VAR_PREFETCH 382 -#define VAR_PREFETCH_KEY 383 -#define VAR_SO_SNDBUF 384 -#define VAR_SO_REUSEPORT 385 -#define VAR_HARDEN_BELOW_NXDOMAIN 386 -#define VAR_IGNORE_CD_FLAG 387 -#define VAR_LOG_QUERIES 388 -#define VAR_LOG_REPLIES 389 -#define VAR_LOG_LOCAL_ACTIONS 390 -#define VAR_TCP_UPSTREAM 391 -#define VAR_SSL_UPSTREAM 392 -#define VAR_TCP_AUTH_QUERY_TIMEOUT 393 -#define VAR_SSL_SERVICE_KEY 394 -#define VAR_SSL_SERVICE_PEM 395 -#define VAR_SSL_PORT 396 -#define VAR_FORWARD_FIRST 397 -#define VAR_STUB_SSL_UPSTREAM 398 -#define VAR_FORWARD_SSL_UPSTREAM 399 -#define VAR_TLS_CERT_BUNDLE 400 -#define VAR_STUB_TCP_UPSTREAM 401 -#define VAR_FORWARD_TCP_UPSTREAM 402 -#define VAR_HTTPS_PORT 403 -#define VAR_HTTP_ENDPOINT 404 -#define VAR_HTTP_MAX_STREAMS 405 -#define VAR_HTTP_QUERY_BUFFER_SIZE 406 -#define VAR_HTTP_RESPONSE_BUFFER_SIZE 407 -#define VAR_HTTP_NODELAY 408 -#define VAR_HTTP_NOTLS_DOWNSTREAM 409 -#define VAR_STUB_FIRST 410 -#define VAR_MINIMAL_RESPONSES 411 -#define VAR_RRSET_ROUNDROBIN 412 -#define VAR_MAX_UDP_SIZE 413 -#define VAR_DELAY_CLOSE 414 -#define VAR_UDP_CONNECT 415 -#define VAR_UNBLOCK_LAN_ZONES 416 -#define VAR_INSECURE_LAN_ZONES 417 -#define VAR_INFRA_CACHE_MIN_RTT 418 -#define VAR_INFRA_KEEP_PROBING 419 -#define VAR_DNS64_PREFIX 420 -#define VAR_DNS64_SYNTHALL 421 -#define VAR_DNS64_IGNORE_AAAA 422 -#define VAR_DNSTAP 423 -#define VAR_DNSTAP_ENABLE 424 -#define VAR_DNSTAP_SOCKET_PATH 425 -#define VAR_DNSTAP_IP 426 -#define VAR_DNSTAP_TLS 427 -#define VAR_DNSTAP_TLS_SERVER_NAME 428 -#define VAR_DNSTAP_TLS_CERT_BUNDLE 429 -#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 430 -#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 431 -#define VAR_DNSTAP_SEND_IDENTITY 432 -#define VAR_DNSTAP_SEND_VERSION 433 -#define VAR_DNSTAP_BIDIRECTIONAL 434 -#define VAR_DNSTAP_IDENTITY 435 -#define VAR_DNSTAP_VERSION 436 -#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 437 -#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 438 -#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 439 -#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 440 -#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 441 -#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 442 -#define VAR_RESPONSE_IP_TAG 443 -#define VAR_RESPONSE_IP 444 -#define VAR_RESPONSE_IP_DATA 445 -#define VAR_HARDEN_ALGO_DOWNGRADE 446 -#define VAR_IP_TRANSPARENT 447 -#define VAR_IP_DSCP 448 -#define VAR_DISABLE_DNSSEC_LAME_CHECK 449 -#define VAR_IP_RATELIMIT 450 -#define VAR_IP_RATELIMIT_SLABS 451 -#define VAR_IP_RATELIMIT_SIZE 452 -#define VAR_RATELIMIT 453 -#define VAR_RATELIMIT_SLABS 454 -#define VAR_RATELIMIT_SIZE 455 -#define VAR_OUTBOUND_MSG_RETRY 456 -#define VAR_RATELIMIT_FOR_DOMAIN 457 -#define VAR_RATELIMIT_BELOW_DOMAIN 458 -#define VAR_IP_RATELIMIT_FACTOR 459 -#define VAR_RATELIMIT_FACTOR 460 -#define VAR_IP_RATELIMIT_BACKOFF 461 -#define VAR_RATELIMIT_BACKOFF 462 -#define VAR_SEND_CLIENT_SUBNET 463 -#define VAR_CLIENT_SUBNET_ZONE 464 -#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 465 -#define VAR_CLIENT_SUBNET_OPCODE 466 -#define VAR_MAX_CLIENT_SUBNET_IPV4 467 -#define VAR_MAX_CLIENT_SUBNET_IPV6 468 -#define VAR_MIN_CLIENT_SUBNET_IPV4 469 -#define VAR_MIN_CLIENT_SUBNET_IPV6 470 -#define VAR_MAX_ECS_TREE_SIZE_IPV4 471 -#define VAR_MAX_ECS_TREE_SIZE_IPV6 472 -#define VAR_CAPS_WHITELIST 473 -#define VAR_CACHE_MAX_NEGATIVE_TTL 474 -#define VAR_PERMIT_SMALL_HOLDDOWN 475 -#define VAR_QNAME_MINIMISATION 476 -#define VAR_QNAME_MINIMISATION_STRICT 477 -#define VAR_IP_FREEBIND 478 -#define VAR_DEFINE_TAG 479 -#define VAR_LOCAL_ZONE_TAG 480 -#define VAR_ACCESS_CONTROL_TAG 481 -#define VAR_LOCAL_ZONE_OVERRIDE 482 -#define VAR_ACCESS_CONTROL_TAG_ACTION 483 -#define VAR_ACCESS_CONTROL_TAG_DATA 484 -#define VAR_VIEW 485 -#define VAR_ACCESS_CONTROL_VIEW 486 -#define VAR_VIEW_FIRST 487 -#define VAR_SERVE_EXPIRED 488 -#define VAR_SERVE_EXPIRED_TTL 489 -#define VAR_SERVE_EXPIRED_TTL_RESET 490 -#define VAR_SERVE_EXPIRED_REPLY_TTL 491 -#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 492 -#define VAR_SERVE_ORIGINAL_TTL 493 -#define VAR_FAKE_DSA 494 -#define VAR_FAKE_SHA1 495 -#define VAR_LOG_IDENTITY 496 -#define VAR_HIDE_TRUSTANCHOR 497 -#define VAR_HIDE_HTTP_USER_AGENT 498 -#define VAR_HTTP_USER_AGENT 499 -#define VAR_TRUST_ANCHOR_SIGNALING 500 -#define VAR_AGGRESSIVE_NSEC 501 -#define VAR_USE_SYSTEMD 502 -#define VAR_SHM_ENABLE 503 -#define VAR_SHM_KEY 504 -#define VAR_ROOT_KEY_SENTINEL 505 -#define VAR_DNSCRYPT 506 -#define VAR_DNSCRYPT_ENABLE 507 -#define VAR_DNSCRYPT_PORT 508 -#define VAR_DNSCRYPT_PROVIDER 509 -#define VAR_DNSCRYPT_SECRET_KEY 510 -#define VAR_DNSCRYPT_PROVIDER_CERT 511 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 512 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 513 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 514 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 515 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 516 -#define VAR_PAD_RESPONSES 517 -#define VAR_PAD_RESPONSES_BLOCK_SIZE 518 -#define VAR_PAD_QUERIES 519 -#define VAR_PAD_QUERIES_BLOCK_SIZE 520 -#define VAR_IPSECMOD_ENABLED 521 -#define VAR_IPSECMOD_HOOK 522 -#define VAR_IPSECMOD_IGNORE_BOGUS 523 -#define VAR_IPSECMOD_MAX_TTL 524 -#define VAR_IPSECMOD_WHITELIST 525 -#define VAR_IPSECMOD_STRICT 526 -#define VAR_CACHEDB 527 -#define VAR_CACHEDB_BACKEND 528 -#define VAR_CACHEDB_SECRETSEED 529 -#define VAR_CACHEDB_REDISHOST 530 -#define VAR_CACHEDB_REDISPORT 531 -#define VAR_CACHEDB_REDISTIMEOUT 532 -#define VAR_CACHEDB_REDISEXPIRERECORDS 533 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 534 -#define VAR_FOR_UPSTREAM 535 -#define VAR_AUTH_ZONE 536 -#define VAR_ZONEFILE 537 -#define VAR_MASTER 538 -#define VAR_URL 539 -#define VAR_FOR_DOWNSTREAM 540 -#define VAR_FALLBACK_ENABLED 541 -#define VAR_TLS_ADDITIONAL_PORT 542 -#define VAR_LOW_RTT 543 -#define VAR_LOW_RTT_PERMIL 544 -#define VAR_FAST_SERVER_PERMIL 545 -#define VAR_FAST_SERVER_NUM 546 -#define VAR_ALLOW_NOTIFY 547 -#define VAR_TLS_WIN_CERT 548 -#define VAR_TCP_CONNECTION_LIMIT 549 -#define VAR_FORWARD_NO_CACHE 550 -#define VAR_STUB_NO_CACHE 551 -#define VAR_LOG_SERVFAIL 552 -#define VAR_DENY_ANY 553 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 554 -#define VAR_LOG_TAG_QUERYREPLY 555 -#define VAR_STREAM_WAIT_SIZE 556 -#define VAR_TLS_CIPHERS 557 -#define VAR_TLS_CIPHERSUITES 558 -#define VAR_TLS_USE_SNI 559 -#define VAR_IPSET 560 -#define VAR_IPSET_NAME_V4 561 -#define VAR_IPSET_NAME_V6 562 -#define VAR_TLS_SESSION_TICKET_KEYS 563 -#define VAR_RPZ 564 -#define VAR_TAGS 565 -#define VAR_RPZ_ACTION_OVERRIDE 566 -#define VAR_RPZ_CNAME_OVERRIDE 567 -#define VAR_RPZ_LOG 568 -#define VAR_RPZ_LOG_NAME 569 -#define VAR_DYNLIB 570 -#define VAR_DYNLIB_FILE 571 -#define VAR_EDNS_CLIENT_STRING 572 -#define VAR_EDNS_CLIENT_STRING_OPCODE 573 -#define VAR_NSID 574 -#define VAR_ZONEMD_PERMISSIVE_MODE 575 -#define VAR_ZONEMD_CHECK 576 -#define VAR_ZONEMD_REJECT_ABSENCE 577 -#define VAR_RPZ_SIGNAL_NXDOMAIN_RA 578 -#define VAR_INTERFACE_AUTOMATIC_PORTS 579 - -/* Value type. */ -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -union YYSTYPE -{ -#line 66 "./util/configparser.y" - - char* str; - -#line 804 "util/configparser.c" - -}; -typedef union YYSTYPE YYSTYPE; -# define YYSTYPE_IS_TRIVIAL 1 -# define YYSTYPE_IS_DECLARED 1 -#endif - - -extern YYSTYPE yylval; - -int yyparse (void); - -#endif /* !YY_YY_UTIL_CONFIGPARSER_H_INCLUDED */ +#include "configparser.h" /* Symbol kind. */ enum yysymbol_kind_t { @@ -1536,6 +842,18 @@ typedef int_least16_t yytype_int16; typedef short yytype_int16; #endif +/* Work around bug in HP-UX 11.23, which defines these macros + incorrectly for preprocessor constants. This workaround can likely + be removed in 2023, as HPE has promised support for HP-UX 11.23 + (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of + . */ +#ifdef __hpux +# undef UINT_LEAST8_MAX +# undef UINT_LEAST16_MAX +# define UINT_LEAST8_MAX 255 +# define UINT_LEAST16_MAX 65535 +#endif + #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ typedef __UINT_LEAST8_TYPE__ yytype_uint8; #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ @@ -1633,9 +951,9 @@ typedef int yy_state_fast_t; /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ -# define YYUSE(E) ((void) (E)) +# define YY_USE(E) ((void) (E)) #else -# define YYUSE(E) /* empty */ +# define YY_USE(E) /* empty */ #endif #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ @@ -1813,6 +1131,7 @@ union yyalloc /* YYNSTATES -- Number of states. */ #define YYNSTATES 1006 +/* YYMAXUTOK -- Last valid token kind. */ #define YYMAXUTOK 579 @@ -1938,27 +1257,27 @@ static const yytype_int16 yyrline[] = 1779, 1788, 1797, 1806, 1815, 1822, 1832, 1852, 1859, 1877, 1890, 1903, 1916, 1925, 1934, 1943, 1952, 1962, 1972, 1983, 1992, 2001, 2010, 2019, 2028, 2037, 2046, 2059, 2072, 2081, - 2088, 2097, 2106, 2115, 2124, 2133, 2141, 2154, 2162, 2207, - 2214, 2229, 2239, 2249, 2256, 2263, 2270, 2279, 2287, 2301, - 2322, 2343, 2355, 2367, 2379, 2388, 2409, 2418, 2427, 2435, - 2443, 2456, 2469, 2484, 2499, 2508, 2517, 2527, 2537, 2546, - 2552, 2561, 2570, 2580, 2590, 2600, 2609, 2619, 2628, 2641, - 2654, 2666, 2680, 2692, 2706, 2715, 2727, 2737, 2744, 2751, - 2760, 2769, 2779, 2789, 2799, 2809, 2816, 2823, 2832, 2841, - 2851, 2861, 2871, 2878, 2885, 2892, 2900, 2910, 2920, 2930, - 2940, 2950, 2960, 3006, 3016, 3024, 3032, 3047, 3056, 3061, - 3062, 3063, 3063, 3063, 3064, 3064, 3064, 3065, 3065, 3067, - 3077, 3086, 3093, 3100, 3107, 3114, 3121, 3128, 3133, 3134, - 3135, 3135, 3135, 3136, 3136, 3136, 3137, 3138, 3138, 3139, - 3139, 3140, 3140, 3141, 3142, 3143, 3144, 3145, 3146, 3148, - 3157, 3167, 3174, 3181, 3190, 3197, 3204, 3211, 3218, 3227, - 3236, 3243, 3250, 3260, 3270, 3280, 3290, 3300, 3310, 3315, - 3316, 3317, 3319, 3325, 3330, 3331, 3332, 3334, 3340, 3350, - 3357, 3366, 3374, 3379, 3380, 3382, 3382, 3382, 3383, 3383, - 3384, 3385, 3386, 3387, 3388, 3390, 3400, 3409, 3416, 3425, - 3432, 3441, 3449, 3462, 3470, 3483, 3488, 3489, 3490, 3490, - 3491, 3491, 3491, 3492, 3494, 3506, 3518, 3530, 3545, 3558, - 3571, 3582, 3587, 3588, 3589, 3589, 3591, 3606 + 2088, 2097, 2106, 2115, 2124, 2133, 2141, 2154, 2162, 2217, + 2224, 2239, 2249, 2259, 2266, 2273, 2280, 2289, 2297, 2311, + 2332, 2353, 2365, 2377, 2389, 2398, 2419, 2428, 2437, 2445, + 2453, 2466, 2479, 2494, 2509, 2518, 2527, 2537, 2547, 2556, + 2562, 2571, 2580, 2590, 2600, 2610, 2619, 2629, 2638, 2651, + 2664, 2676, 2690, 2702, 2716, 2725, 2737, 2747, 2754, 2761, + 2770, 2779, 2789, 2799, 2809, 2819, 2826, 2833, 2842, 2851, + 2861, 2871, 2881, 2888, 2895, 2902, 2910, 2920, 2930, 2940, + 2950, 2960, 2970, 3026, 3036, 3044, 3052, 3067, 3076, 3081, + 3082, 3083, 3083, 3083, 3084, 3084, 3084, 3085, 3085, 3087, + 3097, 3106, 3113, 3120, 3127, 3134, 3141, 3148, 3153, 3154, + 3155, 3155, 3155, 3156, 3156, 3156, 3157, 3158, 3158, 3159, + 3159, 3160, 3160, 3161, 3162, 3163, 3164, 3165, 3166, 3168, + 3177, 3187, 3194, 3201, 3210, 3217, 3224, 3231, 3238, 3247, + 3256, 3263, 3270, 3280, 3290, 3300, 3310, 3320, 3330, 3335, + 3336, 3337, 3339, 3345, 3350, 3351, 3352, 3354, 3360, 3370, + 3377, 3386, 3394, 3399, 3400, 3402, 3402, 3402, 3403, 3403, + 3404, 3405, 3406, 3407, 3408, 3410, 3420, 3429, 3436, 3445, + 3452, 3461, 3469, 3482, 3490, 3503, 3508, 3509, 3510, 3510, + 3511, 3511, 3511, 3512, 3514, 3526, 3538, 3550, 3565, 3578, + 3591, 3602, 3607, 3608, 3609, 3609, 3611, 3626 }; #endif @@ -2556,7 +1875,7 @@ static const yytype_int16 yypgoto[] = /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 17, 18, 19, 32, 267, 20, 33, 498, + 0, 1, 17, 18, 19, 32, 267, 20, 33, 498, 21, 34, 514, 22, 35, 529, 23, 36, 547, 564, 565, 566, 567, 568, 569, 24, 37, 570, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, @@ -3071,7 +2390,7 @@ yy_symbol_value_print (FILE *yyo, yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep) { FILE *yyoutput = yyo; - YYUSE (yyoutput); + YY_USE (yyoutput); if (!yyvaluep) return; # ifdef YYPRINT @@ -3079,7 +2398,7 @@ yy_symbol_value_print (FILE *yyo, YYPRINT (yyo, yytoknum[yykind], *yyvaluep); # endif YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YYUSE (yykind); + YY_USE (yykind); YY_IGNORE_MAYBE_UNINITIALIZED_END } @@ -3193,18 +2512,18 @@ static void yydestruct (const char *yymsg, yysymbol_kind_t yykind, YYSTYPE *yyvaluep) { - YYUSE (yyvaluep); + YY_USE (yyvaluep); if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp); YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YYUSE (yykind); + YY_USE (yykind); YY_IGNORE_MAYBE_UNINITIALIZED_END } -/* The lookahead symbol. */ +/* Lookahead token kind. */ int yychar; /* The semantic value of the lookahead symbol. */ @@ -3222,34 +2541,30 @@ int yynerrs; int yyparse (void) { - yy_state_fast_t yystate; + yy_state_fast_t yystate = 0; /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; + int yyerrstatus = 0; - /* The stacks and their tools: - 'yyss': related to states. - 'yyvs': related to semantic values. - - Refer to the stacks through separate pointers, to allow yyoverflow + /* Refer to the stacks through separate pointers, to allow yyoverflow to reallocate them elsewhere. */ /* Their size. */ - YYPTRDIFF_T yystacksize; + YYPTRDIFF_T yystacksize = YYINITDEPTH; - /* The state stack. */ + /* The state stack: array, bottom, top. */ yy_state_t yyssa[YYINITDEPTH]; - yy_state_t *yyss; - yy_state_t *yyssp; + yy_state_t *yyss = yyssa; + yy_state_t *yyssp = yyss; - /* The semantic value stack. */ + /* The semantic value stack: array, bottom, top. */ YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs; - YYSTYPE *yyvsp; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp = yyvs; int yyn; /* The return value of yyparse. */ int yyresult; - /* Lookahead token as an internal (translated) token number. */ + /* Lookahead symbol kind. */ yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY; /* The variables used to return semantic value and location from the action routines. */ @@ -3263,15 +2578,6 @@ yyparse (void) Keep to zero when no symbol should be popped. */ int yylen = 0; - yynerrs = 0; - yystate = 0; - yyerrstatus = 0; - - yystacksize = YYINITDEPTH; - yyssp = yyss = yyssa; - yyvsp = yyvs = yyvsa; - - YYDPRINTF ((stderr, "Starting parse\n")); yychar = YYEMPTY; /* Cause a token to be read. */ @@ -3472,23 +2778,23 @@ yyreduce: YY_REDUCE_PRINT (yyn); switch (yyn) { - case 18: + case 18: /* force_toplevel: VAR_FORCE_TOPLEVEL */ #line 204 "./util/configparser.y" { OUTYY(("\nP(force-toplevel)\n")); } -#line 3481 "util/configparser.c" +#line 2787 "util/configparser.c" break; - case 19: + case 19: /* serverstart: VAR_SERVER */ #line 210 "./util/configparser.y" { OUTYY(("\nP(server:)\n")); } -#line 3489 "util/configparser.c" +#line 2795 "util/configparser.c" break; - case 244: + case 244: /* stubstart: VAR_STUB_ZONE */ #line 319 "./util/configparser.y" { struct config_stub* s; @@ -3501,10 +2807,10 @@ yyreduce: yyerror("out of memory"); } } -#line 3505 "util/configparser.c" +#line 2811 "util/configparser.c" break; - case 255: + case 255: /* forwardstart: VAR_FORWARD_ZONE */ #line 337 "./util/configparser.y" { struct config_stub* s; @@ -3517,10 +2823,10 @@ yyreduce: yyerror("out of memory"); } } -#line 3521 "util/configparser.c" +#line 2827 "util/configparser.c" break; - case 265: + case 265: /* viewstart: VAR_VIEW */ #line 355 "./util/configparser.y" { struct config_view* s; @@ -3535,10 +2841,10 @@ yyreduce: yyerror("out of memory"); } } -#line 3539 "util/configparser.c" +#line 2845 "util/configparser.c" break; - case 275: + case 275: /* authstart: VAR_AUTH_ZONE */ #line 375 "./util/configparser.y" { struct config_auth* s; @@ -3558,10 +2864,10 @@ yyreduce: yyerror("out of memory"); } } -#line 3562 "util/configparser.c" +#line 2868 "util/configparser.c" break; - case 288: + case 288: /* rpz_tag: VAR_TAGS STRING_ARG */ #line 402 "./util/configparser.y" { uint8_t* bitlist; @@ -3579,10 +2885,10 @@ yyreduce: } } -#line 3583 "util/configparser.c" +#line 2889 "util/configparser.c" break; - case 289: + case 289: /* rpz_action_override: VAR_RPZ_ACTION_OVERRIDE STRING_ARG */ #line 421 "./util/configparser.y" { OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[0].str))); @@ -3598,20 +2904,20 @@ yyreduce: cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); } } -#line 3602 "util/configparser.c" +#line 2908 "util/configparser.c" break; - case 290: + case 290: /* rpz_cname_override: VAR_RPZ_CNAME_OVERRIDE STRING_ARG */ #line 438 "./util/configparser.y" { OUTYY(("P(rpz_cname_override:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->rpz_cname); cfg_parser->cfg->auths->rpz_cname = (yyvsp[0].str); } -#line 3612 "util/configparser.c" +#line 2918 "util/configparser.c" break; - case 291: + case 291: /* rpz_log: VAR_RPZ_LOG STRING_ARG */ #line 446 "./util/configparser.y" { OUTYY(("P(rpz_log:%s)\n", (yyvsp[0].str))); @@ -3620,20 +2926,20 @@ yyreduce: else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3624 "util/configparser.c" +#line 2930 "util/configparser.c" break; - case 292: + case 292: /* rpz_log_name: VAR_RPZ_LOG_NAME STRING_ARG */ #line 456 "./util/configparser.y" { OUTYY(("P(rpz_log_name:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->rpz_log_name); cfg_parser->cfg->auths->rpz_log_name = (yyvsp[0].str); } -#line 3634 "util/configparser.c" +#line 2940 "util/configparser.c" break; - case 293: + case 293: /* rpz_signal_nxdomain_ra: VAR_RPZ_SIGNAL_NXDOMAIN_RA STRING_ARG */ #line 463 "./util/configparser.y" { OUTYY(("P(rpz_signal_nxdomain_ra:%s)\n", (yyvsp[0].str))); @@ -3642,10 +2948,10 @@ yyreduce: else cfg_parser->cfg->auths->rpz_signal_nxdomain_ra = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3646 "util/configparser.c" +#line 2952 "util/configparser.c" break; - case 294: + case 294: /* rpzstart: VAR_RPZ */ #line 473 "./util/configparser.y" { struct config_auth* s; @@ -3663,10 +2969,10 @@ yyreduce: yyerror("out of memory"); } } -#line 3667 "util/configparser.c" +#line 2973 "util/configparser.c" break; - case 309: + case 309: /* server_num_threads: VAR_NUM_THREADS STRING_ARG */ #line 497 "./util/configparser.y" { OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); @@ -3675,10 +2981,10 @@ yyreduce: else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3679 "util/configparser.c" +#line 2985 "util/configparser.c" break; - case 310: + case 310: /* server_verbosity: VAR_VERBOSITY STRING_ARG */ #line 506 "./util/configparser.y" { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); @@ -3687,10 +2993,10 @@ yyreduce: else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3691 "util/configparser.c" +#line 2997 "util/configparser.c" break; - case 311: + case 311: /* server_statistics_interval: VAR_STATISTICS_INTERVAL STRING_ARG */ #line 515 "./util/configparser.y" { OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); @@ -3701,10 +3007,10 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3705 "util/configparser.c" +#line 3011 "util/configparser.c" break; - case 312: + case 312: /* server_statistics_cumulative: VAR_STATISTICS_CUMULATIVE STRING_ARG */ #line 526 "./util/configparser.y" { OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str))); @@ -3713,10 +3019,10 @@ yyreduce: else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3717 "util/configparser.c" +#line 3023 "util/configparser.c" break; - case 313: + case 313: /* server_extended_statistics: VAR_EXTENDED_STATISTICS STRING_ARG */ #line 535 "./util/configparser.y" { OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str))); @@ -3725,10 +3031,10 @@ yyreduce: else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3729 "util/configparser.c" +#line 3035 "util/configparser.c" break; - case 314: + case 314: /* server_shm_enable: VAR_SHM_ENABLE STRING_ARG */ #line 544 "./util/configparser.y" { OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str))); @@ -3737,10 +3043,10 @@ yyreduce: else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3741 "util/configparser.c" +#line 3047 "util/configparser.c" break; - case 315: + case 315: /* server_shm_key: VAR_SHM_KEY STRING_ARG */ #line 553 "./util/configparser.y" { OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str))); @@ -3751,10 +3057,10 @@ yyreduce: else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3755 "util/configparser.c" +#line 3061 "util/configparser.c" break; - case 316: + case 316: /* server_port: VAR_PORT STRING_ARG */ #line 564 "./util/configparser.y" { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); @@ -3763,10 +3069,10 @@ yyreduce: else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3767 "util/configparser.c" +#line 3073 "util/configparser.c" break; - case 317: + case 317: /* server_send_client_subnet: VAR_SEND_CLIENT_SUBNET STRING_ARG */ #line 573 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3778,10 +3084,10 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3782 "util/configparser.c" +#line 3088 "util/configparser.c" break; - case 318: + case 318: /* server_client_subnet_zone: VAR_CLIENT_SUBNET_ZONE STRING_ARG */ #line 585 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3794,10 +3100,10 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3798 "util/configparser.c" +#line 3104 "util/configparser.c" break; - case 319: + case 319: /* server_client_subnet_always_forward: VAR_CLIENT_SUBNET_ALWAYS_FORWARD STRING_ARG */ #line 599 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3812,10 +3118,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3816 "util/configparser.c" +#line 3122 "util/configparser.c" break; - case 320: + case 320: /* server_client_subnet_opcode: VAR_CLIENT_SUBNET_OPCODE STRING_ARG */ #line 614 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3826,10 +3132,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3830 "util/configparser.c" +#line 3136 "util/configparser.c" break; - case 321: + case 321: /* server_max_client_subnet_ipv4: VAR_MAX_CLIENT_SUBNET_IPV4 STRING_ARG */ #line 625 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3846,10 +3152,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3850 "util/configparser.c" +#line 3156 "util/configparser.c" break; - case 322: + case 322: /* server_max_client_subnet_ipv6: VAR_MAX_CLIENT_SUBNET_IPV6 STRING_ARG */ #line 642 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3866,10 +3172,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3870 "util/configparser.c" +#line 3176 "util/configparser.c" break; - case 323: + case 323: /* server_min_client_subnet_ipv4: VAR_MIN_CLIENT_SUBNET_IPV4 STRING_ARG */ #line 659 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3886,10 +3192,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3890 "util/configparser.c" +#line 3196 "util/configparser.c" break; - case 324: + case 324: /* server_min_client_subnet_ipv6: VAR_MIN_CLIENT_SUBNET_IPV6 STRING_ARG */ #line 676 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3906,10 +3212,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3910 "util/configparser.c" +#line 3216 "util/configparser.c" break; - case 325: + case 325: /* server_max_ecs_tree_size_ipv4: VAR_MAX_ECS_TREE_SIZE_IPV4 STRING_ARG */ #line 693 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3924,10 +3230,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3928 "util/configparser.c" +#line 3234 "util/configparser.c" break; - case 326: + case 326: /* server_max_ecs_tree_size_ipv6: VAR_MAX_ECS_TREE_SIZE_IPV6 STRING_ARG */ #line 708 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3942,10 +3248,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3946 "util/configparser.c" +#line 3252 "util/configparser.c" break; - case 327: + case 327: /* server_interface: VAR_INTERFACE STRING_ARG */ #line 723 "./util/configparser.y" { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); @@ -3958,10 +3264,10 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 3962 "util/configparser.c" +#line 3268 "util/configparser.c" break; - case 328: + case 328: /* server_outgoing_interface: VAR_OUTGOING_INTERFACE STRING_ARG */ #line 736 "./util/configparser.y" { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); @@ -3976,10 +3282,10 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 3980 "util/configparser.c" +#line 3286 "util/configparser.c" break; - case 329: + case 329: /* server_outgoing_range: VAR_OUTGOING_RANGE STRING_ARG */ #line 751 "./util/configparser.y" { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); @@ -3988,10 +3294,10 @@ yyreduce: else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3992 "util/configparser.c" +#line 3298 "util/configparser.c" break; - case 330: + case 330: /* server_outgoing_port_permit: VAR_OUTGOING_PORT_PERMIT STRING_ARG */ #line 760 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); @@ -4000,10 +3306,10 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 4004 "util/configparser.c" +#line 3310 "util/configparser.c" break; - case 331: + case 331: /* server_outgoing_port_avoid: VAR_OUTGOING_PORT_AVOID STRING_ARG */ #line 769 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); @@ -4012,10 +3318,10 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 4016 "util/configparser.c" +#line 3322 "util/configparser.c" break; - case 332: + case 332: /* server_outgoing_num_tcp: VAR_OUTGOING_NUM_TCP STRING_ARG */ #line 778 "./util/configparser.y" { OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str))); @@ -4024,10 +3330,10 @@ yyreduce: else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4028 "util/configparser.c" +#line 3334 "util/configparser.c" break; - case 333: + case 333: /* server_incoming_num_tcp: VAR_INCOMING_NUM_TCP STRING_ARG */ #line 787 "./util/configparser.y" { OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str))); @@ -4036,10 +3342,10 @@ yyreduce: else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4040 "util/configparser.c" +#line 3346 "util/configparser.c" break; - case 334: + case 334: /* server_interface_automatic: VAR_INTERFACE_AUTOMATIC STRING_ARG */ #line 796 "./util/configparser.y" { OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str))); @@ -4048,20 +3354,20 @@ yyreduce: else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4052 "util/configparser.c" +#line 3358 "util/configparser.c" break; - case 335: + case 335: /* server_interface_automatic_ports: VAR_INTERFACE_AUTOMATIC_PORTS STRING_ARG */ #line 805 "./util/configparser.y" { OUTYY(("P(server_interface_automatic_ports:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->if_automatic_ports); cfg_parser->cfg->if_automatic_ports = (yyvsp[0].str); } -#line 4062 "util/configparser.c" +#line 3368 "util/configparser.c" break; - case 336: + case 336: /* server_do_ip4: VAR_DO_IP4 STRING_ARG */ #line 812 "./util/configparser.y" { OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str))); @@ -4070,10 +3376,10 @@ yyreduce: else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4074 "util/configparser.c" +#line 3380 "util/configparser.c" break; - case 337: + case 337: /* server_do_ip6: VAR_DO_IP6 STRING_ARG */ #line 821 "./util/configparser.y" { OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str))); @@ -4082,10 +3388,10 @@ yyreduce: else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4086 "util/configparser.c" +#line 3392 "util/configparser.c" break; - case 338: + case 338: /* server_do_udp: VAR_DO_UDP STRING_ARG */ #line 830 "./util/configparser.y" { OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str))); @@ -4094,10 +3400,10 @@ yyreduce: else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4098 "util/configparser.c" +#line 3404 "util/configparser.c" break; - case 339: + case 339: /* server_do_tcp: VAR_DO_TCP STRING_ARG */ #line 839 "./util/configparser.y" { OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str))); @@ -4106,10 +3412,10 @@ yyreduce: else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4110 "util/configparser.c" +#line 3416 "util/configparser.c" break; - case 340: + case 340: /* server_prefer_ip4: VAR_PREFER_IP4 STRING_ARG */ #line 848 "./util/configparser.y" { OUTYY(("P(server_prefer_ip4:%s)\n", (yyvsp[0].str))); @@ -4118,10 +3424,10 @@ yyreduce: else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4122 "util/configparser.c" +#line 3428 "util/configparser.c" break; - case 341: + case 341: /* server_prefer_ip6: VAR_PREFER_IP6 STRING_ARG */ #line 857 "./util/configparser.y" { OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str))); @@ -4130,10 +3436,10 @@ yyreduce: else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4134 "util/configparser.c" +#line 3440 "util/configparser.c" break; - case 342: + case 342: /* server_tcp_mss: VAR_TCP_MSS STRING_ARG */ #line 866 "./util/configparser.y" { OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str))); @@ -4142,10 +3448,10 @@ yyreduce: else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4146 "util/configparser.c" +#line 3452 "util/configparser.c" break; - case 343: + case 343: /* server_outgoing_tcp_mss: VAR_OUTGOING_TCP_MSS STRING_ARG */ #line 875 "./util/configparser.y" { OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str))); @@ -4154,10 +3460,10 @@ yyreduce: else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4158 "util/configparser.c" +#line 3464 "util/configparser.c" break; - case 344: + case 344: /* server_tcp_idle_timeout: VAR_TCP_IDLE_TIMEOUT STRING_ARG */ #line 884 "./util/configparser.y" { OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[0].str))); @@ -4170,10 +3476,10 @@ yyreduce: else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4174 "util/configparser.c" +#line 3480 "util/configparser.c" break; - case 345: + case 345: /* server_max_reuse_tcp_queries: VAR_MAX_REUSE_TCP_QUERIES STRING_ARG */ #line 897 "./util/configparser.y" { OUTYY(("P(server_max_reuse_tcp_queries:%s)\n", (yyvsp[0].str))); @@ -4184,10 +3490,10 @@ yyreduce: else cfg_parser->cfg->max_reuse_tcp_queries = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4188 "util/configparser.c" +#line 3494 "util/configparser.c" break; - case 346: + case 346: /* server_tcp_reuse_timeout: VAR_TCP_REUSE_TIMEOUT STRING_ARG */ #line 908 "./util/configparser.y" { OUTYY(("P(server_tcp_reuse_timeout:%s)\n", (yyvsp[0].str))); @@ -4198,10 +3504,10 @@ yyreduce: else cfg_parser->cfg->tcp_reuse_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4202 "util/configparser.c" +#line 3508 "util/configparser.c" break; - case 347: + case 347: /* server_tcp_auth_query_timeout: VAR_TCP_AUTH_QUERY_TIMEOUT STRING_ARG */ #line 919 "./util/configparser.y" { OUTYY(("P(server_tcp_auth_query_timeout:%s)\n", (yyvsp[0].str))); @@ -4212,10 +3518,10 @@ yyreduce: else cfg_parser->cfg->tcp_auth_query_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4216 "util/configparser.c" +#line 3522 "util/configparser.c" break; - case 348: + case 348: /* server_tcp_keepalive: VAR_EDNS_TCP_KEEPALIVE STRING_ARG */ #line 930 "./util/configparser.y" { OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[0].str))); @@ -4224,10 +3530,10 @@ yyreduce: else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4228 "util/configparser.c" +#line 3534 "util/configparser.c" break; - case 349: + case 349: /* server_tcp_keepalive_timeout: VAR_EDNS_TCP_KEEPALIVE_TIMEOUT STRING_ARG */ #line 939 "./util/configparser.y" { OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[0].str))); @@ -4240,10 +3546,10 @@ yyreduce: else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4244 "util/configparser.c" +#line 3550 "util/configparser.c" break; - case 350: + case 350: /* server_tcp_upstream: VAR_TCP_UPSTREAM STRING_ARG */ #line 952 "./util/configparser.y" { OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str))); @@ -4252,10 +3558,10 @@ yyreduce: else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4256 "util/configparser.c" +#line 3562 "util/configparser.c" break; - case 351: + case 351: /* server_udp_upstream_without_downstream: VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM STRING_ARG */ #line 961 "./util/configparser.y" { OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", (yyvsp[0].str))); @@ -4264,10 +3570,10 @@ yyreduce: else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4268 "util/configparser.c" +#line 3574 "util/configparser.c" break; - case 352: + case 352: /* server_ssl_upstream: VAR_SSL_UPSTREAM STRING_ARG */ #line 970 "./util/configparser.y" { OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str))); @@ -4276,30 +3582,30 @@ yyreduce: else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4280 "util/configparser.c" +#line 3586 "util/configparser.c" break; - case 353: + case 353: /* server_ssl_service_key: VAR_SSL_SERVICE_KEY STRING_ARG */ #line 979 "./util/configparser.y" { OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ssl_service_key); cfg_parser->cfg->ssl_service_key = (yyvsp[0].str); } -#line 4290 "util/configparser.c" +#line 3596 "util/configparser.c" break; - case 354: + case 354: /* server_ssl_service_pem: VAR_SSL_SERVICE_PEM STRING_ARG */ #line 986 "./util/configparser.y" { OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ssl_service_pem); cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str); } -#line 4300 "util/configparser.c" +#line 3606 "util/configparser.c" break; - case 355: + case 355: /* server_ssl_port: VAR_SSL_PORT STRING_ARG */ #line 993 "./util/configparser.y" { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); @@ -4308,20 +3614,20 @@ yyreduce: else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4312 "util/configparser.c" +#line 3618 "util/configparser.c" break; - case 356: + case 356: /* server_tls_cert_bundle: VAR_TLS_CERT_BUNDLE STRING_ARG */ #line 1002 "./util/configparser.y" { OUTYY(("P(server_tls_cert_bundle:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_cert_bundle); cfg_parser->cfg->tls_cert_bundle = (yyvsp[0].str); } -#line 4322 "util/configparser.c" +#line 3628 "util/configparser.c" break; - case 357: + case 357: /* server_tls_win_cert: VAR_TLS_WIN_CERT STRING_ARG */ #line 1009 "./util/configparser.y" { OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[0].str))); @@ -4330,10 +3636,10 @@ yyreduce: else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4334 "util/configparser.c" +#line 3640 "util/configparser.c" break; - case 358: + case 358: /* server_tls_additional_port: VAR_TLS_ADDITIONAL_PORT STRING_ARG */ #line 1018 "./util/configparser.y" { OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[0].str))); @@ -4341,30 +3647,30 @@ yyreduce: (yyvsp[0].str))) yyerror("out of memory"); } -#line 4345 "util/configparser.c" +#line 3651 "util/configparser.c" break; - case 359: + case 359: /* server_tls_ciphers: VAR_TLS_CIPHERS STRING_ARG */ #line 1026 "./util/configparser.y" { OUTYY(("P(server_tls_ciphers:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_ciphers); cfg_parser->cfg->tls_ciphers = (yyvsp[0].str); } -#line 4355 "util/configparser.c" +#line 3661 "util/configparser.c" break; - case 360: + case 360: /* server_tls_ciphersuites: VAR_TLS_CIPHERSUITES STRING_ARG */ #line 1033 "./util/configparser.y" { OUTYY(("P(server_tls_ciphersuites:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_ciphersuites); cfg_parser->cfg->tls_ciphersuites = (yyvsp[0].str); } -#line 4365 "util/configparser.c" +#line 3671 "util/configparser.c" break; - case 361: + case 361: /* server_tls_session_ticket_keys: VAR_TLS_SESSION_TICKET_KEYS STRING_ARG */ #line 1040 "./util/configparser.y" { OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[0].str))); @@ -4372,10 +3678,10 @@ yyreduce: (yyvsp[0].str))) yyerror("out of memory"); } -#line 4376 "util/configparser.c" +#line 3682 "util/configparser.c" break; - case 362: + case 362: /* server_tls_use_sni: VAR_TLS_USE_SNI STRING_ARG */ #line 1048 "./util/configparser.y" { OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str))); @@ -4384,10 +3690,10 @@ yyreduce: else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4388 "util/configparser.c" +#line 3694 "util/configparser.c" break; - case 363: + case 363: /* server_https_port: VAR_HTTPS_PORT STRING_ARG */ #line 1057 "./util/configparser.y" { OUTYY(("P(server_https_port:%s)\n", (yyvsp[0].str))); @@ -4396,10 +3702,10 @@ yyreduce: else cfg_parser->cfg->https_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4400 "util/configparser.c" +#line 3706 "util/configparser.c" break; - case 364: + case 364: /* server_http_endpoint: VAR_HTTP_ENDPOINT STRING_ARG */ #line 1065 "./util/configparser.y" { OUTYY(("P(server_http_endpoint:%s)\n", (yyvsp[0].str))); @@ -4416,10 +3722,10 @@ yyreduce: cfg_parser->cfg->http_endpoint = (yyvsp[0].str); } } -#line 4420 "util/configparser.c" +#line 3726 "util/configparser.c" break; - case 365: + case 365: /* server_http_max_streams: VAR_HTTP_MAX_STREAMS STRING_ARG */ #line 1081 "./util/configparser.y" { OUTYY(("P(server_http_max_streams:%s)\n", (yyvsp[0].str))); @@ -4428,10 +3734,10 @@ yyreduce: else cfg_parser->cfg->http_max_streams = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4432 "util/configparser.c" +#line 3738 "util/configparser.c" break; - case 366: + case 366: /* server_http_query_buffer_size: VAR_HTTP_QUERY_BUFFER_SIZE STRING_ARG */ #line 1089 "./util/configparser.y" { OUTYY(("P(server_http_query_buffer_size:%s)\n", (yyvsp[0].str))); @@ -4440,10 +3746,10 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4444 "util/configparser.c" +#line 3750 "util/configparser.c" break; - case 367: + case 367: /* server_http_response_buffer_size: VAR_HTTP_RESPONSE_BUFFER_SIZE STRING_ARG */ #line 1097 "./util/configparser.y" { OUTYY(("P(server_http_response_buffer_size:%s)\n", (yyvsp[0].str))); @@ -4452,10 +3758,10 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4456 "util/configparser.c" +#line 3762 "util/configparser.c" break; - case 368: + case 368: /* server_http_nodelay: VAR_HTTP_NODELAY STRING_ARG */ #line 1105 "./util/configparser.y" { OUTYY(("P(server_http_nodelay:%s)\n", (yyvsp[0].str))); @@ -4464,10 +3770,10 @@ yyreduce: else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4468 "util/configparser.c" +#line 3774 "util/configparser.c" break; - case 369: + case 369: /* server_http_notls_downstream: VAR_HTTP_NOTLS_DOWNSTREAM STRING_ARG */ #line 1113 "./util/configparser.y" { OUTYY(("P(server_http_notls_downstream:%s)\n", (yyvsp[0].str))); @@ -4476,10 +3782,10 @@ yyreduce: else cfg_parser->cfg->http_notls_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4480 "util/configparser.c" +#line 3786 "util/configparser.c" break; - case 370: + case 370: /* server_use_systemd: VAR_USE_SYSTEMD STRING_ARG */ #line 1121 "./util/configparser.y" { OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str))); @@ -4488,10 +3794,10 @@ yyreduce: else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4492 "util/configparser.c" +#line 3798 "util/configparser.c" break; - case 371: + case 371: /* server_do_daemonize: VAR_DO_DAEMONIZE STRING_ARG */ #line 1130 "./util/configparser.y" { OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str))); @@ -4500,10 +3806,10 @@ yyreduce: else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4504 "util/configparser.c" +#line 3810 "util/configparser.c" break; - case 372: + case 372: /* server_use_syslog: VAR_USE_SYSLOG STRING_ARG */ #line 1139 "./util/configparser.y" { OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str))); @@ -4517,10 +3823,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4521 "util/configparser.c" +#line 3827 "util/configparser.c" break; - case 373: + case 373: /* server_log_time_ascii: VAR_LOG_TIME_ASCII STRING_ARG */ #line 1153 "./util/configparser.y" { OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str))); @@ -4529,10 +3835,10 @@ yyreduce: else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4533 "util/configparser.c" +#line 3839 "util/configparser.c" break; - case 374: + case 374: /* server_log_queries: VAR_LOG_QUERIES STRING_ARG */ #line 1162 "./util/configparser.y" { OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str))); @@ -4541,10 +3847,10 @@ yyreduce: else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4545 "util/configparser.c" +#line 3851 "util/configparser.c" break; - case 375: + case 375: /* server_log_replies: VAR_LOG_REPLIES STRING_ARG */ #line 1171 "./util/configparser.y" { OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str))); @@ -4553,10 +3859,10 @@ yyreduce: else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4557 "util/configparser.c" +#line 3863 "util/configparser.c" break; - case 376: + case 376: /* server_log_tag_queryreply: VAR_LOG_TAG_QUERYREPLY STRING_ARG */ #line 1180 "./util/configparser.y" { OUTYY(("P(server_log_tag_queryreply:%s)\n", (yyvsp[0].str))); @@ -4565,10 +3871,10 @@ yyreduce: else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4569 "util/configparser.c" +#line 3875 "util/configparser.c" break; - case 377: + case 377: /* server_log_servfail: VAR_LOG_SERVFAIL STRING_ARG */ #line 1189 "./util/configparser.y" { OUTYY(("P(server_log_servfail:%s)\n", (yyvsp[0].str))); @@ -4577,10 +3883,10 @@ yyreduce: else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4581 "util/configparser.c" +#line 3887 "util/configparser.c" break; - case 378: + case 378: /* server_log_local_actions: VAR_LOG_LOCAL_ACTIONS STRING_ARG */ #line 1198 "./util/configparser.y" { OUTYY(("P(server_log_local_actions:%s)\n", (yyvsp[0].str))); @@ -4589,30 +3895,30 @@ yyreduce: else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4593 "util/configparser.c" +#line 3899 "util/configparser.c" break; - case 379: + case 379: /* server_chroot: VAR_CHROOT STRING_ARG */ #line 1207 "./util/configparser.y" { OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->chrootdir); cfg_parser->cfg->chrootdir = (yyvsp[0].str); } -#line 4603 "util/configparser.c" +#line 3909 "util/configparser.c" break; - case 380: + case 380: /* server_username: VAR_USERNAME STRING_ARG */ #line 1214 "./util/configparser.y" { OUTYY(("P(server_username:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->username); cfg_parser->cfg->username = (yyvsp[0].str); } -#line 4613 "util/configparser.c" +#line 3919 "util/configparser.c" break; - case 381: + case 381: /* server_directory: VAR_DIRECTORY STRING_ARG */ #line 1221 "./util/configparser.y" { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); @@ -4638,10 +3944,10 @@ yyreduce: } } } -#line 4642 "util/configparser.c" +#line 3948 "util/configparser.c" break; - case 382: + case 382: /* server_logfile: VAR_LOGFILE STRING_ARG */ #line 1247 "./util/configparser.y" { OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str))); @@ -4649,50 +3955,50 @@ yyreduce: cfg_parser->cfg->logfile = (yyvsp[0].str); cfg_parser->cfg->use_syslog = 0; } -#line 4653 "util/configparser.c" +#line 3959 "util/configparser.c" break; - case 383: + case 383: /* server_pidfile: VAR_PIDFILE STRING_ARG */ #line 1255 "./util/configparser.y" { OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->pidfile); cfg_parser->cfg->pidfile = (yyvsp[0].str); } -#line 4663 "util/configparser.c" +#line 3969 "util/configparser.c" break; - case 384: + case 384: /* server_root_hints: VAR_ROOT_HINTS STRING_ARG */ #line 1262 "./util/configparser.y" { OUTYY(("P(server_root_hints:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4673 "util/configparser.c" +#line 3979 "util/configparser.c" break; - case 385: + case 385: /* server_dlv_anchor_file: VAR_DLV_ANCHOR_FILE STRING_ARG */ #line 1269 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str))); log_warn("option dlv-anchor-file ignored: DLV is decommissioned"); free((yyvsp[0].str)); } -#line 4683 "util/configparser.c" +#line 3989 "util/configparser.c" break; - case 386: + case 386: /* server_dlv_anchor: VAR_DLV_ANCHOR STRING_ARG */ #line 1276 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str))); log_warn("option dlv-anchor ignored: DLV is decommissioned"); free((yyvsp[0].str)); } -#line 4693 "util/configparser.c" +#line 3999 "util/configparser.c" break; - case 387: + case 387: /* server_auto_trust_anchor_file: VAR_AUTO_TRUST_ANCHOR_FILE STRING_ARG */ #line 1283 "./util/configparser.y" { OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str))); @@ -4700,10 +4006,10 @@ yyreduce: auto_trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4704 "util/configparser.c" +#line 4010 "util/configparser.c" break; - case 388: + case 388: /* server_trust_anchor_file: VAR_TRUST_ANCHOR_FILE STRING_ARG */ #line 1291 "./util/configparser.y" { OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str))); @@ -4711,10 +4017,10 @@ yyreduce: trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4715 "util/configparser.c" +#line 4021 "util/configparser.c" break; - case 389: + case 389: /* server_trusted_keys_file: VAR_TRUSTED_KEYS_FILE STRING_ARG */ #line 1299 "./util/configparser.y" { OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str))); @@ -4722,20 +4028,20 @@ yyreduce: trusted_keys_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4726 "util/configparser.c" +#line 4032 "util/configparser.c" break; - case 390: + case 390: /* server_trust_anchor: VAR_TRUST_ANCHOR STRING_ARG */ #line 1307 "./util/configparser.y" { OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4736 "util/configparser.c" +#line 4042 "util/configparser.c" break; - case 391: + case 391: /* server_trust_anchor_signaling: VAR_TRUST_ANCHOR_SIGNALING STRING_ARG */ #line 1314 "./util/configparser.y" { OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str))); @@ -4746,10 +4052,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4750 "util/configparser.c" +#line 4056 "util/configparser.c" break; - case 392: + case 392: /* server_root_key_sentinel: VAR_ROOT_KEY_SENTINEL STRING_ARG */ #line 1325 "./util/configparser.y" { OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[0].str))); @@ -4760,20 +4066,20 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4764 "util/configparser.c" +#line 4070 "util/configparser.c" break; - case 393: + case 393: /* server_domain_insecure: VAR_DOMAIN_INSECURE STRING_ARG */ #line 1336 "./util/configparser.y" { OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4774 "util/configparser.c" +#line 4080 "util/configparser.c" break; - case 394: + case 394: /* server_hide_identity: VAR_HIDE_IDENTITY STRING_ARG */ #line 1343 "./util/configparser.y" { OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str))); @@ -4782,10 +4088,10 @@ yyreduce: else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4786 "util/configparser.c" +#line 4092 "util/configparser.c" break; - case 395: + case 395: /* server_hide_version: VAR_HIDE_VERSION STRING_ARG */ #line 1352 "./util/configparser.y" { OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str))); @@ -4794,10 +4100,10 @@ yyreduce: else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4798 "util/configparser.c" +#line 4104 "util/configparser.c" break; - case 396: + case 396: /* server_hide_trustanchor: VAR_HIDE_TRUSTANCHOR STRING_ARG */ #line 1361 "./util/configparser.y" { OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str))); @@ -4806,10 +4112,10 @@ yyreduce: else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4810 "util/configparser.c" +#line 4116 "util/configparser.c" break; - case 397: + case 397: /* server_hide_http_user_agent: VAR_HIDE_HTTP_USER_AGENT STRING_ARG */ #line 1370 "./util/configparser.y" { OUTYY(("P(server_hide_user_agent:%s)\n", (yyvsp[0].str))); @@ -4818,40 +4124,40 @@ yyreduce: else cfg_parser->cfg->hide_http_user_agent = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4822 "util/configparser.c" +#line 4128 "util/configparser.c" break; - case 398: + case 398: /* server_identity: VAR_IDENTITY STRING_ARG */ #line 1379 "./util/configparser.y" { OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->identity); cfg_parser->cfg->identity = (yyvsp[0].str); } -#line 4832 "util/configparser.c" +#line 4138 "util/configparser.c" break; - case 399: + case 399: /* server_version: VAR_VERSION STRING_ARG */ #line 1386 "./util/configparser.y" { OUTYY(("P(server_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->version); cfg_parser->cfg->version = (yyvsp[0].str); } -#line 4842 "util/configparser.c" +#line 4148 "util/configparser.c" break; - case 400: + case 400: /* server_http_user_agent: VAR_HTTP_USER_AGENT STRING_ARG */ #line 1393 "./util/configparser.y" { OUTYY(("P(server_http_user_agent:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->http_user_agent); cfg_parser->cfg->http_user_agent = (yyvsp[0].str); } -#line 4852 "util/configparser.c" +#line 4158 "util/configparser.c" break; - case 401: + case 401: /* server_nsid: VAR_NSID STRING_ARG */ #line 1400 "./util/configparser.y" { OUTYY(("P(server_nsid:%s)\n", (yyvsp[0].str))); @@ -4867,10 +4173,10 @@ yyreduce: yyerror("the NSID must be either a hex string or an " "ascii character string prepended with ascii_."); } -#line 4871 "util/configparser.c" +#line 4177 "util/configparser.c" break; - case 402: + case 402: /* server_so_rcvbuf: VAR_SO_RCVBUF STRING_ARG */ #line 1416 "./util/configparser.y" { OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str))); @@ -4878,10 +4184,10 @@ yyreduce: yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 4882 "util/configparser.c" +#line 4188 "util/configparser.c" break; - case 403: + case 403: /* server_so_sndbuf: VAR_SO_SNDBUF STRING_ARG */ #line 1424 "./util/configparser.y" { OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str))); @@ -4889,10 +4195,10 @@ yyreduce: yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 4893 "util/configparser.c" +#line 4199 "util/configparser.c" break; - case 404: + case 404: /* server_so_reuseport: VAR_SO_REUSEPORT STRING_ARG */ #line 1432 "./util/configparser.y" { OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str))); @@ -4902,10 +4208,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4906 "util/configparser.c" +#line 4212 "util/configparser.c" break; - case 405: + case 405: /* server_ip_transparent: VAR_IP_TRANSPARENT STRING_ARG */ #line 1442 "./util/configparser.y" { OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str))); @@ -4915,10 +4221,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4919 "util/configparser.c" +#line 4225 "util/configparser.c" break; - case 406: + case 406: /* server_ip_freebind: VAR_IP_FREEBIND STRING_ARG */ #line 1452 "./util/configparser.y" { OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str))); @@ -4928,10 +4234,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4932 "util/configparser.c" +#line 4238 "util/configparser.c" break; - case 407: + case 407: /* server_ip_dscp: VAR_IP_DSCP STRING_ARG */ #line 1462 "./util/configparser.y" { OUTYY(("P(server_ip_dscp:%s)\n", (yyvsp[0].str))); @@ -4945,10 +4251,10 @@ yyreduce: cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4949 "util/configparser.c" +#line 4255 "util/configparser.c" break; - case 408: + case 408: /* server_stream_wait_size: VAR_STREAM_WAIT_SIZE STRING_ARG */ #line 1476 "./util/configparser.y" { OUTYY(("P(server_stream_wait_size:%s)\n", (yyvsp[0].str))); @@ -4956,10 +4262,10 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4960 "util/configparser.c" +#line 4266 "util/configparser.c" break; - case 409: + case 409: /* server_edns_buffer_size: VAR_EDNS_BUFFER_SIZE STRING_ARG */ #line 1484 "./util/configparser.y" { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); @@ -4972,10 +4278,10 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4976 "util/configparser.c" +#line 4282 "util/configparser.c" break; - case 410: + case 410: /* server_msg_buffer_size: VAR_MSG_BUFFER_SIZE STRING_ARG */ #line 1497 "./util/configparser.y" { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); @@ -4986,10 +4292,10 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4990 "util/configparser.c" +#line 4296 "util/configparser.c" break; - case 411: + case 411: /* server_msg_cache_size: VAR_MSG_CACHE_SIZE STRING_ARG */ #line 1508 "./util/configparser.y" { OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str))); @@ -4997,10 +4303,10 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5001 "util/configparser.c" +#line 4307 "util/configparser.c" break; - case 412: + case 412: /* server_msg_cache_slabs: VAR_MSG_CACHE_SLABS STRING_ARG */ #line 1516 "./util/configparser.y" { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); @@ -5013,10 +4319,10 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5017 "util/configparser.c" +#line 4323 "util/configparser.c" break; - case 413: + case 413: /* server_num_queries_per_thread: VAR_NUM_QUERIES_PER_THREAD STRING_ARG */ #line 1529 "./util/configparser.y" { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); @@ -5025,10 +4331,10 @@ yyreduce: else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5029 "util/configparser.c" +#line 4335 "util/configparser.c" break; - case 414: + case 414: /* server_jostle_timeout: VAR_JOSTLE_TIMEOUT STRING_ARG */ #line 1538 "./util/configparser.y" { OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str))); @@ -5037,10 +4343,10 @@ yyreduce: else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5041 "util/configparser.c" +#line 4347 "util/configparser.c" break; - case 415: + case 415: /* server_delay_close: VAR_DELAY_CLOSE STRING_ARG */ #line 1547 "./util/configparser.y" { OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str))); @@ -5049,10 +4355,10 @@ yyreduce: else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5053 "util/configparser.c" +#line 4359 "util/configparser.c" break; - case 416: + case 416: /* server_udp_connect: VAR_UDP_CONNECT STRING_ARG */ #line 1556 "./util/configparser.y" { OUTYY(("P(server_udp_connect:%s)\n", (yyvsp[0].str))); @@ -5061,10 +4367,10 @@ yyreduce: else cfg_parser->cfg->udp_connect = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5065 "util/configparser.c" +#line 4371 "util/configparser.c" break; - case 417: + case 417: /* server_unblock_lan_zones: VAR_UNBLOCK_LAN_ZONES STRING_ARG */ #line 1565 "./util/configparser.y" { OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str))); @@ -5074,10 +4380,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5078 "util/configparser.c" +#line 4384 "util/configparser.c" break; - case 418: + case 418: /* server_insecure_lan_zones: VAR_INSECURE_LAN_ZONES STRING_ARG */ #line 1575 "./util/configparser.y" { OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str))); @@ -5087,10 +4393,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5091 "util/configparser.c" +#line 4397 "util/configparser.c" break; - case 419: + case 419: /* server_rrset_cache_size: VAR_RRSET_CACHE_SIZE STRING_ARG */ #line 1585 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[0].str))); @@ -5098,10 +4404,10 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5102 "util/configparser.c" +#line 4408 "util/configparser.c" break; - case 420: + case 420: /* server_rrset_cache_slabs: VAR_RRSET_CACHE_SLABS STRING_ARG */ #line 1593 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); @@ -5114,10 +4420,10 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5118 "util/configparser.c" +#line 4424 "util/configparser.c" break; - case 421: + case 421: /* server_infra_host_ttl: VAR_INFRA_HOST_TTL STRING_ARG */ #line 1606 "./util/configparser.y" { OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str))); @@ -5126,10 +4432,10 @@ yyreduce: else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5130 "util/configparser.c" +#line 4436 "util/configparser.c" break; - case 422: + case 422: /* server_infra_lame_ttl: VAR_INFRA_LAME_TTL STRING_ARG */ #line 1615 "./util/configparser.y" { OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str))); @@ -5137,10 +4443,10 @@ yyreduce: "removed, use infra-host-ttl)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5141 "util/configparser.c" +#line 4447 "util/configparser.c" break; - case 423: + case 423: /* server_infra_cache_numhosts: VAR_INFRA_CACHE_NUMHOSTS STRING_ARG */ #line 1623 "./util/configparser.y" { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); @@ -5149,10 +4455,10 @@ yyreduce: else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5153 "util/configparser.c" +#line 4459 "util/configparser.c" break; - case 424: + case 424: /* server_infra_cache_lame_size: VAR_INFRA_CACHE_LAME_SIZE STRING_ARG */ #line 1632 "./util/configparser.y" { OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str))); @@ -5160,10 +4466,10 @@ yyreduce: "(option removed, use infra-cache-numhosts)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5164 "util/configparser.c" +#line 4470 "util/configparser.c" break; - case 425: + case 425: /* server_infra_cache_slabs: VAR_INFRA_CACHE_SLABS STRING_ARG */ #line 1640 "./util/configparser.y" { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); @@ -5176,10 +4482,10 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5180 "util/configparser.c" +#line 4486 "util/configparser.c" break; - case 426: + case 426: /* server_infra_cache_min_rtt: VAR_INFRA_CACHE_MIN_RTT STRING_ARG */ #line 1653 "./util/configparser.y" { OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str))); @@ -5188,10 +4494,10 @@ yyreduce: else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5192 "util/configparser.c" +#line 4498 "util/configparser.c" break; - case 427: + case 427: /* server_infra_keep_probing: VAR_INFRA_KEEP_PROBING STRING_ARG */ #line 1662 "./util/configparser.y" { OUTYY(("P(server_infra_keep_probing:%s)\n", (yyvsp[0].str))); @@ -5201,20 +4507,20 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5205 "util/configparser.c" +#line 4511 "util/configparser.c" break; - case 428: + case 428: /* server_target_fetch_policy: VAR_TARGET_FETCH_POLICY STRING_ARG */ #line 1672 "./util/configparser.y" { OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->target_fetch_policy); cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str); } -#line 5215 "util/configparser.c" +#line 4521 "util/configparser.c" break; - case 429: + case 429: /* server_harden_short_bufsize: VAR_HARDEN_SHORT_BUFSIZE STRING_ARG */ #line 1679 "./util/configparser.y" { OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str))); @@ -5224,10 +4530,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5228 "util/configparser.c" +#line 4534 "util/configparser.c" break; - case 430: + case 430: /* server_harden_large_queries: VAR_HARDEN_LARGE_QUERIES STRING_ARG */ #line 1689 "./util/configparser.y" { OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str))); @@ -5237,10 +4543,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5241 "util/configparser.c" +#line 4547 "util/configparser.c" break; - case 431: + case 431: /* server_harden_glue: VAR_HARDEN_GLUE STRING_ARG */ #line 1699 "./util/configparser.y" { OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str))); @@ -5250,10 +4556,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5254 "util/configparser.c" +#line 4560 "util/configparser.c" break; - case 432: + case 432: /* server_harden_dnssec_stripped: VAR_HARDEN_DNSSEC_STRIPPED STRING_ARG */ #line 1709 "./util/configparser.y" { OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str))); @@ -5263,10 +4569,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5267 "util/configparser.c" +#line 4573 "util/configparser.c" break; - case 433: + case 433: /* server_harden_below_nxdomain: VAR_HARDEN_BELOW_NXDOMAIN STRING_ARG */ #line 1719 "./util/configparser.y" { OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str))); @@ -5276,10 +4582,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5280 "util/configparser.c" +#line 4586 "util/configparser.c" break; - case 434: + case 434: /* server_harden_referral_path: VAR_HARDEN_REFERRAL_PATH STRING_ARG */ #line 1729 "./util/configparser.y" { OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str))); @@ -5289,10 +4595,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5293 "util/configparser.c" +#line 4599 "util/configparser.c" break; - case 435: + case 435: /* server_harden_algo_downgrade: VAR_HARDEN_ALGO_DOWNGRADE STRING_ARG */ #line 1739 "./util/configparser.y" { OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str))); @@ -5302,10 +4608,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5306 "util/configparser.c" +#line 4612 "util/configparser.c" break; - case 436: + case 436: /* server_use_caps_for_id: VAR_USE_CAPS_FOR_ID STRING_ARG */ #line 1749 "./util/configparser.y" { OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[0].str))); @@ -5315,40 +4621,40 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5319 "util/configparser.c" +#line 4625 "util/configparser.c" break; - case 437: + case 437: /* server_caps_whitelist: VAR_CAPS_WHITELIST STRING_ARG */ #line 1759 "./util/configparser.y" { OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5329 "util/configparser.c" +#line 4635 "util/configparser.c" break; - case 438: + case 438: /* server_private_address: VAR_PRIVATE_ADDRESS STRING_ARG */ #line 1766 "./util/configparser.y" { OUTYY(("P(server_private_address:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5339 "util/configparser.c" +#line 4645 "util/configparser.c" break; - case 439: + case 439: /* server_private_domain: VAR_PRIVATE_DOMAIN STRING_ARG */ #line 1773 "./util/configparser.y" { OUTYY(("P(server_private_domain:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5349 "util/configparser.c" +#line 4655 "util/configparser.c" break; - case 440: + case 440: /* server_prefetch: VAR_PREFETCH STRING_ARG */ #line 1780 "./util/configparser.y" { OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str))); @@ -5357,10 +4663,10 @@ yyreduce: else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5361 "util/configparser.c" +#line 4667 "util/configparser.c" break; - case 441: + case 441: /* server_prefetch_key: VAR_PREFETCH_KEY STRING_ARG */ #line 1789 "./util/configparser.y" { OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str))); @@ -5369,10 +4675,10 @@ yyreduce: else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5373 "util/configparser.c" +#line 4679 "util/configparser.c" break; - case 442: + case 442: /* server_deny_any: VAR_DENY_ANY STRING_ARG */ #line 1798 "./util/configparser.y" { OUTYY(("P(server_deny_any:%s)\n", (yyvsp[0].str))); @@ -5381,10 +4687,10 @@ yyreduce: else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5385 "util/configparser.c" +#line 4691 "util/configparser.c" break; - case 443: + case 443: /* server_unwanted_reply_threshold: VAR_UNWANTED_REPLY_THRESHOLD STRING_ARG */ #line 1807 "./util/configparser.y" { OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str))); @@ -5393,20 +4699,20 @@ yyreduce: else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5397 "util/configparser.c" +#line 4703 "util/configparser.c" break; - case 444: + case 444: /* server_do_not_query_address: VAR_DO_NOT_QUERY_ADDRESS STRING_ARG */ #line 1816 "./util/configparser.y" { OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5407 "util/configparser.c" +#line 4713 "util/configparser.c" break; - case 445: + case 445: /* server_do_not_query_localhost: VAR_DO_NOT_QUERY_LOCALHOST STRING_ARG */ #line 1823 "./util/configparser.y" { OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[0].str))); @@ -5416,10 +4722,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5420 "util/configparser.c" +#line 4726 "util/configparser.c" break; - case 446: + case 446: /* server_access_control: VAR_ACCESS_CONTROL STRING_ARG STRING_ARG */ #line 1833 "./util/configparser.y" { OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); @@ -5439,20 +4745,20 @@ yyreduce: fatal_exit("out of memory adding acl"); } } -#line 5443 "util/configparser.c" +#line 4749 "util/configparser.c" break; - case 447: + case 447: /* server_module_conf: VAR_MODULE_CONF STRING_ARG */ #line 1853 "./util/configparser.y" { OUTYY(("P(server_module_conf:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->module_conf); cfg_parser->cfg->module_conf = (yyvsp[0].str); } -#line 5453 "util/configparser.c" +#line 4759 "util/configparser.c" break; - case 448: + case 448: /* server_val_override_date: VAR_VAL_OVERRIDE_DATE STRING_ARG */ #line 1860 "./util/configparser.y" { OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str))); @@ -5470,10 +4776,10 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5474 "util/configparser.c" +#line 4780 "util/configparser.c" break; - case 449: + case 449: /* server_val_sig_skew_min: VAR_VAL_SIG_SKEW_MIN STRING_ARG */ #line 1878 "./util/configparser.y" { OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str))); @@ -5486,10 +4792,10 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5490 "util/configparser.c" +#line 4796 "util/configparser.c" break; - case 450: + case 450: /* server_val_sig_skew_max: VAR_VAL_SIG_SKEW_MAX STRING_ARG */ #line 1891 "./util/configparser.y" { OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str))); @@ -5502,10 +4808,10 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5506 "util/configparser.c" +#line 4812 "util/configparser.c" break; - case 451: + case 451: /* server_val_max_restart: VAR_VAL_MAX_RESTART STRING_ARG */ #line 1904 "./util/configparser.y" { OUTYY(("P(server_val_max_restart:%s)\n", (yyvsp[0].str))); @@ -5518,10 +4824,10 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5522 "util/configparser.c" +#line 4828 "util/configparser.c" break; - case 452: + case 452: /* server_cache_max_ttl: VAR_CACHE_MAX_TTL STRING_ARG */ #line 1917 "./util/configparser.y" { OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str))); @@ -5530,10 +4836,10 @@ yyreduce: else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5534 "util/configparser.c" +#line 4840 "util/configparser.c" break; - case 453: + case 453: /* server_cache_max_negative_ttl: VAR_CACHE_MAX_NEGATIVE_TTL STRING_ARG */ #line 1926 "./util/configparser.y" { OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str))); @@ -5542,10 +4848,10 @@ yyreduce: else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5546 "util/configparser.c" +#line 4852 "util/configparser.c" break; - case 454: + case 454: /* server_cache_min_ttl: VAR_CACHE_MIN_TTL STRING_ARG */ #line 1935 "./util/configparser.y" { OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str))); @@ -5554,10 +4860,10 @@ yyreduce: else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5558 "util/configparser.c" +#line 4864 "util/configparser.c" break; - case 455: + case 455: /* server_bogus_ttl: VAR_BOGUS_TTL STRING_ARG */ #line 1944 "./util/configparser.y" { OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str))); @@ -5566,10 +4872,10 @@ yyreduce: else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5570 "util/configparser.c" +#line 4876 "util/configparser.c" break; - case 456: + case 456: /* server_val_clean_additional: VAR_VAL_CLEAN_ADDITIONAL STRING_ARG */ #line 1953 "./util/configparser.y" { OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str))); @@ -5579,10 +4885,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5583 "util/configparser.c" +#line 4889 "util/configparser.c" break; - case 457: + case 457: /* server_val_permissive_mode: VAR_VAL_PERMISSIVE_MODE STRING_ARG */ #line 1963 "./util/configparser.y" { OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str))); @@ -5592,10 +4898,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5596 "util/configparser.c" +#line 4902 "util/configparser.c" break; - case 458: + case 458: /* server_aggressive_nsec: VAR_AGGRESSIVE_NSEC STRING_ARG */ #line 1973 "./util/configparser.y" { OUTYY(("P(server_aggressive_nsec:%s)\n", (yyvsp[0].str))); @@ -5606,10 +4912,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5610 "util/configparser.c" +#line 4916 "util/configparser.c" break; - case 459: + case 459: /* server_ignore_cd_flag: VAR_IGNORE_CD_FLAG STRING_ARG */ #line 1984 "./util/configparser.y" { OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str))); @@ -5618,10 +4924,10 @@ yyreduce: else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5622 "util/configparser.c" +#line 4928 "util/configparser.c" break; - case 460: + case 460: /* server_serve_expired: VAR_SERVE_EXPIRED STRING_ARG */ #line 1993 "./util/configparser.y" { OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str))); @@ -5630,10 +4936,10 @@ yyreduce: else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5634 "util/configparser.c" +#line 4940 "util/configparser.c" break; - case 461: + case 461: /* server_serve_expired_ttl: VAR_SERVE_EXPIRED_TTL STRING_ARG */ #line 2002 "./util/configparser.y" { OUTYY(("P(server_serve_expired_ttl:%s)\n", (yyvsp[0].str))); @@ -5642,10 +4948,10 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5646 "util/configparser.c" +#line 4952 "util/configparser.c" break; - case 462: + case 462: /* server_serve_expired_ttl_reset: VAR_SERVE_EXPIRED_TTL_RESET STRING_ARG */ #line 2011 "./util/configparser.y" { OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", (yyvsp[0].str))); @@ -5654,10 +4960,10 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5658 "util/configparser.c" +#line 4964 "util/configparser.c" break; - case 463: + case 463: /* server_serve_expired_reply_ttl: VAR_SERVE_EXPIRED_REPLY_TTL STRING_ARG */ #line 2020 "./util/configparser.y" { OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", (yyvsp[0].str))); @@ -5666,10 +4972,10 @@ yyreduce: else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5670 "util/configparser.c" +#line 4976 "util/configparser.c" break; - case 464: + case 464: /* server_serve_expired_client_timeout: VAR_SERVE_EXPIRED_CLIENT_TIMEOUT STRING_ARG */ #line 2029 "./util/configparser.y" { OUTYY(("P(server_serve_expired_client_timeout:%s)\n", (yyvsp[0].str))); @@ -5678,10 +4984,10 @@ yyreduce: else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5682 "util/configparser.c" +#line 4988 "util/configparser.c" break; - case 465: + case 465: /* server_serve_original_ttl: VAR_SERVE_ORIGINAL_TTL STRING_ARG */ #line 2038 "./util/configparser.y" { OUTYY(("P(server_serve_original_ttl:%s)\n", (yyvsp[0].str))); @@ -5690,10 +4996,10 @@ yyreduce: else cfg_parser->cfg->serve_original_ttl = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5694 "util/configparser.c" +#line 5000 "util/configparser.c" break; - case 466: + case 466: /* server_fake_dsa: VAR_FAKE_DSA STRING_ARG */ #line 2047 "./util/configparser.y" { OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str))); @@ -5706,10 +5012,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5710 "util/configparser.c" +#line 5016 "util/configparser.c" break; - case 467: + case 467: /* server_fake_sha1: VAR_FAKE_SHA1 STRING_ARG */ #line 2060 "./util/configparser.y" { OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[0].str))); @@ -5722,10 +5028,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5726 "util/configparser.c" +#line 5032 "util/configparser.c" break; - case 468: + case 468: /* server_val_log_level: VAR_VAL_LOG_LEVEL STRING_ARG */ #line 2073 "./util/configparser.y" { OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str))); @@ -5734,20 +5040,20 @@ yyreduce: else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5738 "util/configparser.c" +#line 5044 "util/configparser.c" break; - case 469: + case 469: /* server_val_nsec3_keysize_iterations: VAR_VAL_NSEC3_KEYSIZE_ITERATIONS STRING_ARG */ #line 2082 "./util/configparser.y" { OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->val_nsec3_key_iterations); cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str); } -#line 5748 "util/configparser.c" +#line 5054 "util/configparser.c" break; - case 470: + case 470: /* server_zonemd_permissive_mode: VAR_ZONEMD_PERMISSIVE_MODE STRING_ARG */ #line 2089 "./util/configparser.y" { OUTYY(("P(server_zonemd_permissive_mode:%s)\n", (yyvsp[0].str))); @@ -5756,10 +5062,10 @@ yyreduce: else cfg_parser->cfg->zonemd_permissive_mode = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5760 "util/configparser.c" +#line 5066 "util/configparser.c" break; - case 471: + case 471: /* server_add_holddown: VAR_ADD_HOLDDOWN STRING_ARG */ #line 2098 "./util/configparser.y" { OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str))); @@ -5768,10 +5074,10 @@ yyreduce: else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5772 "util/configparser.c" +#line 5078 "util/configparser.c" break; - case 472: + case 472: /* server_del_holddown: VAR_DEL_HOLDDOWN STRING_ARG */ #line 2107 "./util/configparser.y" { OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str))); @@ -5780,10 +5086,10 @@ yyreduce: else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5784 "util/configparser.c" +#line 5090 "util/configparser.c" break; - case 473: + case 473: /* server_keep_missing: VAR_KEEP_MISSING STRING_ARG */ #line 2116 "./util/configparser.y" { OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str))); @@ -5792,10 +5098,10 @@ yyreduce: else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5796 "util/configparser.c" +#line 5102 "util/configparser.c" break; - case 474: + case 474: /* server_permit_small_holddown: VAR_PERMIT_SMALL_HOLDDOWN STRING_ARG */ #line 2125 "./util/configparser.y" { OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str))); @@ -5805,10 +5111,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5809 "util/configparser.c" +#line 5115 "util/configparser.c" break; - case 475: + case 475: /* server_key_cache_size: VAR_KEY_CACHE_SIZE STRING_ARG */ #line 2134 "./util/configparser.y" { OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[0].str))); @@ -5816,10 +5122,10 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5820 "util/configparser.c" +#line 5126 "util/configparser.c" break; - case 476: + case 476: /* server_key_cache_slabs: VAR_KEY_CACHE_SLABS STRING_ARG */ #line 2142 "./util/configparser.y" { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); @@ -5832,10 +5138,10 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5836 "util/configparser.c" +#line 5142 "util/configparser.c" break; - case 477: + case 477: /* server_neg_cache_size: VAR_NEG_CACHE_SIZE STRING_ARG */ #line 2155 "./util/configparser.y" { OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[0].str))); @@ -5843,10 +5149,10 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5847 "util/configparser.c" +#line 5153 "util/configparser.c" break; - case 478: + case 478: /* server_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */ #line 2163 "./util/configparser.y" { OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); @@ -5863,7 +5169,7 @@ yyreduce: && 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) { + && strcmp((yyvsp[0].str), "ipset") != 0) { yyerror("local-zone type: expected static, deny, " "refuse, redirect, transparent, " "typetransparent, inform, inform_deny, " @@ -5880,6 +5186,16 @@ yyreduce: free((yyvsp[0].str)); #ifdef USE_IPSET } else if(strcmp((yyvsp[0].str), "ipset")==0) { + size_t len = strlen((yyvsp[-1].str)); + /* Make sure to add the trailing dot. + * These are str compared to domain names. */ + if((yyvsp[-1].str)[len-1] != '.') { + if(!((yyvsp[-1].str) = realloc((yyvsp[-1].str), len+2))) { + fatal_exit("out of memory adding local-zone"); + } + (yyvsp[-1].str)[len] = '.'; + (yyvsp[-1].str)[len+1] = 0; + } if(!cfg_strlist_insert(&cfg_parser->cfg-> local_zones_ipset, (yyvsp[-1].str))) fatal_exit("out of memory adding local-zone"); @@ -5891,21 +5207,21 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5895 "util/configparser.c" +#line 5211 "util/configparser.c" break; - case 479: -#line 2208 "./util/configparser.y" + case 479: /* server_local_data: VAR_LOCAL_DATA STRING_ARG */ +#line 2218 "./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 5905 "util/configparser.c" +#line 5221 "util/configparser.c" break; - case 480: -#line 2215 "./util/configparser.y" + case 480: /* server_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ +#line 2225 "./util/configparser.y" { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -5919,11 +5235,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5923 "util/configparser.c" +#line 5239 "util/configparser.c" break; - case 481: -#line 2230 "./util/configparser.y" + case 481: /* server_minimal_responses: VAR_MINIMAL_RESPONSES STRING_ARG */ +#line 2240 "./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) @@ -5932,11 +5248,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5936 "util/configparser.c" +#line 5252 "util/configparser.c" break; - case 482: -#line 2240 "./util/configparser.y" + case 482: /* server_rrset_roundrobin: VAR_RRSET_ROUNDROBIN STRING_ARG */ +#line 2250 "./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) @@ -5945,41 +5261,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5949 "util/configparser.c" +#line 5265 "util/configparser.c" break; - case 483: -#line 2250 "./util/configparser.y" + case 483: /* server_unknown_server_time_limit: VAR_UNKNOWN_SERVER_TIME_LIMIT STRING_ARG */ +#line 2260 "./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 5959 "util/configparser.c" +#line 5275 "util/configparser.c" break; - case 484: -#line 2257 "./util/configparser.y" + case 484: /* server_max_udp_size: VAR_MAX_UDP_SIZE STRING_ARG */ +#line 2267 "./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 5969 "util/configparser.c" +#line 5285 "util/configparser.c" break; - case 485: -#line 2264 "./util/configparser.y" + case 485: /* server_dns64_prefix: VAR_DNS64_PREFIX STRING_ARG */ +#line 2274 "./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 5979 "util/configparser.c" +#line 5295 "util/configparser.c" break; - case 486: -#line 2271 "./util/configparser.y" + case 486: /* server_dns64_synthall: VAR_DNS64_SYNTHALL STRING_ARG */ +#line 2281 "./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) @@ -5987,22 +5303,22 @@ yyreduce: else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5991 "util/configparser.c" +#line 5307 "util/configparser.c" break; - case 487: -#line 2280 "./util/configparser.y" + case 487: /* server_dns64_ignore_aaaa: VAR_DNS64_IGNORE_AAAA STRING_ARG */ +#line 2290 "./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 6002 "util/configparser.c" +#line 5318 "util/configparser.c" break; - case 488: -#line 2288 "./util/configparser.y" + case 488: /* server_define_tag: VAR_DEFINE_TAG STRING_ARG */ +#line 2298 "./util/configparser.y" { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); @@ -6015,11 +5331,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6019 "util/configparser.c" +#line 5335 "util/configparser.c" break; - case 489: -#line 2302 "./util/configparser.y" + case 489: /* server_local_zone_tag: VAR_LOCAL_ZONE_TAG STRING_ARG STRING_ARG */ +#line 2312 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -6039,11 +5355,11 @@ yyreduce: } } } -#line 6043 "util/configparser.c" +#line 5359 "util/configparser.c" break; - case 490: -#line 2323 "./util/configparser.y" + case 490: /* server_access_control_tag: VAR_ACCESS_CONTROL_TAG STRING_ARG STRING_ARG */ +#line 2333 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -6063,11 +5379,11 @@ yyreduce: } } } -#line 6067 "util/configparser.c" +#line 5383 "util/configparser.c" break; - case 491: -#line 2344 "./util/configparser.y" + case 491: /* server_access_control_tag_action: VAR_ACCESS_CONTROL_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG */ +#line 2354 "./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, @@ -6078,11 +5394,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 6082 "util/configparser.c" +#line 5398 "util/configparser.c" break; - case 492: -#line 2356 "./util/configparser.y" + case 492: /* server_access_control_tag_data: VAR_ACCESS_CONTROL_TAG_DATA STRING_ARG STRING_ARG STRING_ARG */ +#line 2366 "./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, @@ -6093,11 +5409,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 6097 "util/configparser.c" +#line 5413 "util/configparser.c" break; - case 493: -#line 2368 "./util/configparser.y" + case 493: /* server_local_zone_override: VAR_LOCAL_ZONE_OVERRIDE STRING_ARG STRING_ARG STRING_ARG */ +#line 2378 "./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, @@ -6108,11 +5424,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 6112 "util/configparser.c" +#line 5428 "util/configparser.c" break; - case 494: -#line 2380 "./util/configparser.y" + case 494: /* server_access_control_view: VAR_ACCESS_CONTROL_VIEW STRING_ARG STRING_ARG */ +#line 2390 "./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, @@ -6120,11 +5436,11 @@ yyreduce: yyerror("out of memory"); } } -#line 6124 "util/configparser.c" +#line 5440 "util/configparser.c" break; - case 495: -#line 2389 "./util/configparser.y" + case 495: /* server_response_ip_tag: VAR_RESPONSE_IP_TAG STRING_ARG STRING_ARG */ +#line 2399 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -6144,11 +5460,11 @@ yyreduce: } } } -#line 6148 "util/configparser.c" +#line 5464 "util/configparser.c" break; - case 496: -#line 2410 "./util/configparser.y" + case 496: /* server_ip_ratelimit: VAR_IP_RATELIMIT STRING_ARG */ +#line 2420 "./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) @@ -6156,11 +5472,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6160 "util/configparser.c" +#line 5476 "util/configparser.c" break; - case 497: -#line 2419 "./util/configparser.y" + case 497: /* server_ratelimit: VAR_RATELIMIT STRING_ARG */ +#line 2429 "./util/configparser.y" { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -6168,33 +5484,33 @@ yyreduce: else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6172 "util/configparser.c" +#line 5488 "util/configparser.c" break; - case 498: -#line 2428 "./util/configparser.y" + case 498: /* server_ip_ratelimit_size: VAR_IP_RATELIMIT_SIZE STRING_ARG */ +#line 2438 "./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 6183 "util/configparser.c" +#line 5499 "util/configparser.c" break; - case 499: -#line 2436 "./util/configparser.y" + case 499: /* server_ratelimit_size: VAR_RATELIMIT_SIZE STRING_ARG */ +#line 2446 "./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 6194 "util/configparser.c" +#line 5510 "util/configparser.c" break; - case 500: -#line 2444 "./util/configparser.y" + case 500: /* server_ip_ratelimit_slabs: VAR_IP_RATELIMIT_SLABS STRING_ARG */ +#line 2454 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -6206,11 +5522,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6210 "util/configparser.c" +#line 5526 "util/configparser.c" break; - case 501: -#line 2457 "./util/configparser.y" + case 501: /* server_ratelimit_slabs: VAR_RATELIMIT_SLABS STRING_ARG */ +#line 2467 "./util/configparser.y" { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -6222,11 +5538,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6226 "util/configparser.c" +#line 5542 "util/configparser.c" break; - case 502: -#line 2470 "./util/configparser.y" + case 502: /* server_ratelimit_for_domain: VAR_RATELIMIT_FOR_DOMAIN STRING_ARG STRING_ARG */ +#line 2480 "./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) { @@ -6240,11 +5556,11 @@ yyreduce: "ratelimit-for-domain"); } } -#line 6244 "util/configparser.c" +#line 5560 "util/configparser.c" break; - case 503: -#line 2485 "./util/configparser.y" + case 503: /* server_ratelimit_below_domain: VAR_RATELIMIT_BELOW_DOMAIN STRING_ARG STRING_ARG */ +#line 2495 "./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) { @@ -6258,11 +5574,11 @@ yyreduce: "ratelimit-below-domain"); } } -#line 6262 "util/configparser.c" +#line 5578 "util/configparser.c" break; - case 504: -#line 2500 "./util/configparser.y" + case 504: /* server_ip_ratelimit_factor: VAR_IP_RATELIMIT_FACTOR STRING_ARG */ +#line 2510 "./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) @@ -6270,11 +5586,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6274 "util/configparser.c" +#line 5590 "util/configparser.c" break; - case 505: -#line 2509 "./util/configparser.y" + case 505: /* server_ratelimit_factor: VAR_RATELIMIT_FACTOR STRING_ARG */ +#line 2519 "./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) @@ -6282,11 +5598,11 @@ yyreduce: else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6286 "util/configparser.c" +#line 5602 "util/configparser.c" break; - case 506: -#line 2518 "./util/configparser.y" + case 506: /* server_ip_ratelimit_backoff: VAR_IP_RATELIMIT_BACKOFF STRING_ARG */ +#line 2528 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_backoff:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6295,11 +5611,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6299 "util/configparser.c" +#line 5615 "util/configparser.c" break; - case 507: -#line 2528 "./util/configparser.y" + case 507: /* server_ratelimit_backoff: VAR_RATELIMIT_BACKOFF STRING_ARG */ +#line 2538 "./util/configparser.y" { OUTYY(("P(server_ratelimit_backoff:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6308,11 +5624,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6312 "util/configparser.c" +#line 5628 "util/configparser.c" break; - case 508: -#line 2538 "./util/configparser.y" + case 508: /* server_outbound_msg_retry: VAR_OUTBOUND_MSG_RETRY STRING_ARG */ +#line 2548 "./util/configparser.y" { OUTYY(("P(server_outbound_msg_retry:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -6320,20 +5636,20 @@ yyreduce: else cfg_parser->cfg->outbound_msg_retry = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6324 "util/configparser.c" +#line 5640 "util/configparser.c" break; - case 509: -#line 2547 "./util/configparser.y" + case 509: /* server_low_rtt: VAR_LOW_RTT STRING_ARG */ +#line 2557 "./util/configparser.y" { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 6333 "util/configparser.c" +#line 5649 "util/configparser.c" break; - case 510: -#line 2553 "./util/configparser.y" + case 510: /* server_fast_server_num: VAR_FAST_SERVER_NUM STRING_ARG */ +#line 2563 "./util/configparser.y" { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) <= 0) @@ -6341,11 +5657,11 @@ yyreduce: else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6345 "util/configparser.c" +#line 5661 "util/configparser.c" break; - case 511: -#line 2562 "./util/configparser.y" + case 511: /* server_fast_server_permil: VAR_FAST_SERVER_PERMIL STRING_ARG */ +#line 2572 "./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) @@ -6353,11 +5669,11 @@ yyreduce: else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6357 "util/configparser.c" +#line 5673 "util/configparser.c" break; - case 512: -#line 2571 "./util/configparser.y" + case 512: /* server_qname_minimisation: VAR_QNAME_MINIMISATION STRING_ARG */ +#line 2581 "./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) @@ -6366,11 +5682,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6370 "util/configparser.c" +#line 5686 "util/configparser.c" break; - case 513: -#line 2581 "./util/configparser.y" + case 513: /* server_qname_minimisation_strict: VAR_QNAME_MINIMISATION_STRICT STRING_ARG */ +#line 2591 "./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) @@ -6379,11 +5695,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6383 "util/configparser.c" +#line 5699 "util/configparser.c" break; - case 514: -#line 2591 "./util/configparser.y" + case 514: /* server_pad_responses: VAR_PAD_RESPONSES STRING_ARG */ +#line 2601 "./util/configparser.y" { OUTYY(("P(server_pad_responses:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6392,11 +5708,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6396 "util/configparser.c" +#line 5712 "util/configparser.c" break; - case 515: -#line 2601 "./util/configparser.y" + case 515: /* server_pad_responses_block_size: VAR_PAD_RESPONSES_BLOCK_SIZE STRING_ARG */ +#line 2611 "./util/configparser.y" { OUTYY(("P(server_pad_responses_block_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6404,11 +5720,11 @@ yyreduce: else cfg_parser->cfg->pad_responses_block_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6408 "util/configparser.c" +#line 5724 "util/configparser.c" break; - case 516: -#line 2610 "./util/configparser.y" + case 516: /* server_pad_queries: VAR_PAD_QUERIES STRING_ARG */ +#line 2620 "./util/configparser.y" { OUTYY(("P(server_pad_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6417,11 +5733,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6421 "util/configparser.c" +#line 5737 "util/configparser.c" break; - case 517: -#line 2620 "./util/configparser.y" + case 517: /* server_pad_queries_block_size: VAR_PAD_QUERIES_BLOCK_SIZE STRING_ARG */ +#line 2630 "./util/configparser.y" { OUTYY(("P(server_pad_queries_block_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6429,11 +5745,11 @@ yyreduce: else cfg_parser->cfg->pad_queries_block_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6433 "util/configparser.c" +#line 5749 "util/configparser.c" break; - case 518: -#line 2629 "./util/configparser.y" + case 518: /* server_ipsecmod_enabled: VAR_IPSECMOD_ENABLED STRING_ARG */ +#line 2639 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); @@ -6445,11 +5761,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6449 "util/configparser.c" +#line 5765 "util/configparser.c" break; - case 519: -#line 2642 "./util/configparser.y" + case 519: /* server_ipsecmod_ignore_bogus: VAR_IPSECMOD_IGNORE_BOGUS STRING_ARG */ +#line 2652 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); @@ -6461,11 +5777,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6465 "util/configparser.c" +#line 5781 "util/configparser.c" break; - case 520: -#line 2655 "./util/configparser.y" + case 520: /* server_ipsecmod_hook: VAR_IPSECMOD_HOOK STRING_ARG */ +#line 2665 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); @@ -6476,11 +5792,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6480 "util/configparser.c" +#line 5796 "util/configparser.c" break; - case 521: -#line 2667 "./util/configparser.y" + case 521: /* server_ipsecmod_max_ttl: VAR_IPSECMOD_MAX_TTL STRING_ARG */ +#line 2677 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); @@ -6493,11 +5809,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6497 "util/configparser.c" +#line 5813 "util/configparser.c" break; - case 522: -#line 2681 "./util/configparser.y" + case 522: /* server_ipsecmod_whitelist: VAR_IPSECMOD_WHITELIST STRING_ARG */ +#line 2691 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); @@ -6508,11 +5824,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6512 "util/configparser.c" +#line 5828 "util/configparser.c" break; - case 523: -#line 2693 "./util/configparser.y" + case 523: /* server_ipsecmod_strict: VAR_IPSECMOD_STRICT STRING_ARG */ +#line 2703 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); @@ -6525,11 +5841,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6529 "util/configparser.c" +#line 5845 "util/configparser.c" break; - case 524: -#line 2707 "./util/configparser.y" + case 524: /* server_edns_client_string: VAR_EDNS_CLIENT_STRING STRING_ARG STRING_ARG */ +#line 2717 "./util/configparser.y" { OUTYY(("P(server_edns_client_string:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert( @@ -6537,11 +5853,11 @@ yyreduce: fatal_exit("out of memory adding " "edns-client-string"); } -#line 6541 "util/configparser.c" +#line 5857 "util/configparser.c" break; - case 525: -#line 2716 "./util/configparser.y" + case 525: /* server_edns_client_string_opcode: VAR_EDNS_CLIENT_STRING_OPCODE STRING_ARG */ +#line 2726 "./util/configparser.y" { OUTYY(("P(edns_client_string_opcode:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -6552,11 +5868,11 @@ yyreduce: free((yyvsp[0].str)); } -#line 6556 "util/configparser.c" +#line 5872 "util/configparser.c" break; - case 526: -#line 2728 "./util/configparser.y" + case 526: /* stub_name: VAR_NAME STRING_ARG */ +#line 2738 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) @@ -6565,31 +5881,31 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 6569 "util/configparser.c" +#line 5885 "util/configparser.c" break; - case 527: -#line 2738 "./util/configparser.y" + case 527: /* stub_host: VAR_STUB_HOST STRING_ARG */ +#line 2748 "./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 6579 "util/configparser.c" +#line 5895 "util/configparser.c" break; - case 528: -#line 2745 "./util/configparser.y" + case 528: /* stub_addr: VAR_STUB_ADDR STRING_ARG */ +#line 2755 "./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 6589 "util/configparser.c" +#line 5905 "util/configparser.c" break; - case 529: -#line 2752 "./util/configparser.y" + case 529: /* stub_first: VAR_STUB_FIRST STRING_ARG */ +#line 2762 "./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) @@ -6597,11 +5913,11 @@ yyreduce: else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6601 "util/configparser.c" +#line 5917 "util/configparser.c" break; - case 530: -#line 2761 "./util/configparser.y" + case 530: /* stub_no_cache: VAR_STUB_NO_CACHE STRING_ARG */ +#line 2771 "./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) @@ -6609,11 +5925,11 @@ yyreduce: else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6613 "util/configparser.c" +#line 5929 "util/configparser.c" break; - case 531: -#line 2770 "./util/configparser.y" + case 531: /* stub_ssl_upstream: VAR_STUB_SSL_UPSTREAM STRING_ARG */ +#line 2780 "./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) @@ -6622,11 +5938,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6626 "util/configparser.c" +#line 5942 "util/configparser.c" break; - case 532: -#line 2780 "./util/configparser.y" + case 532: /* stub_tcp_upstream: VAR_STUB_TCP_UPSTREAM STRING_ARG */ +#line 2790 "./util/configparser.y" { OUTYY(("P(stub-tcp-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6635,11 +5951,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6639 "util/configparser.c" +#line 5955 "util/configparser.c" break; - case 533: -#line 2790 "./util/configparser.y" + case 533: /* stub_prime: VAR_STUB_PRIME STRING_ARG */ +#line 2800 "./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) @@ -6648,11 +5964,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6652 "util/configparser.c" +#line 5968 "util/configparser.c" break; - case 534: -#line 2800 "./util/configparser.y" + case 534: /* forward_name: VAR_NAME STRING_ARG */ +#line 2810 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) @@ -6661,31 +5977,31 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 6665 "util/configparser.c" +#line 5981 "util/configparser.c" break; - case 535: -#line 2810 "./util/configparser.y" + case 535: /* forward_host: VAR_FORWARD_HOST STRING_ARG */ +#line 2820 "./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 6675 "util/configparser.c" +#line 5991 "util/configparser.c" break; - case 536: -#line 2817 "./util/configparser.y" + case 536: /* forward_addr: VAR_FORWARD_ADDR STRING_ARG */ +#line 2827 "./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 6685 "util/configparser.c" +#line 6001 "util/configparser.c" break; - case 537: -#line 2824 "./util/configparser.y" + case 537: /* forward_first: VAR_FORWARD_FIRST STRING_ARG */ +#line 2834 "./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) @@ -6693,11 +6009,11 @@ yyreduce: else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6697 "util/configparser.c" +#line 6013 "util/configparser.c" break; - case 538: -#line 2833 "./util/configparser.y" + case 538: /* forward_no_cache: VAR_FORWARD_NO_CACHE STRING_ARG */ +#line 2843 "./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) @@ -6705,11 +6021,11 @@ yyreduce: else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6709 "util/configparser.c" +#line 6025 "util/configparser.c" break; - case 539: -#line 2842 "./util/configparser.y" + case 539: /* forward_ssl_upstream: VAR_FORWARD_SSL_UPSTREAM STRING_ARG */ +#line 2852 "./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) @@ -6718,11 +6034,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6722 "util/configparser.c" +#line 6038 "util/configparser.c" break; - case 540: -#line 2852 "./util/configparser.y" + case 540: /* forward_tcp_upstream: VAR_FORWARD_TCP_UPSTREAM STRING_ARG */ +#line 2862 "./util/configparser.y" { OUTYY(("P(forward-tcp-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6731,11 +6047,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6735 "util/configparser.c" +#line 6051 "util/configparser.c" break; - case 541: -#line 2862 "./util/configparser.y" + case 541: /* auth_name: VAR_NAME STRING_ARG */ +#line 2872 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) @@ -6744,52 +6060,52 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 6748 "util/configparser.c" +#line 6064 "util/configparser.c" break; - case 542: -#line 2872 "./util/configparser.y" + case 542: /* auth_zonefile: VAR_ZONEFILE STRING_ARG */ +#line 2882 "./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 6758 "util/configparser.c" +#line 6074 "util/configparser.c" break; - case 543: -#line 2879 "./util/configparser.y" + case 543: /* auth_master: VAR_MASTER STRING_ARG */ +#line 2889 "./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 6768 "util/configparser.c" +#line 6084 "util/configparser.c" break; - case 544: -#line 2886 "./util/configparser.y" + case 544: /* auth_url: VAR_URL STRING_ARG */ +#line 2896 "./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 6778 "util/configparser.c" +#line 6094 "util/configparser.c" break; - case 545: -#line 2893 "./util/configparser.y" + case 545: /* auth_allow_notify: VAR_ALLOW_NOTIFY STRING_ARG */ +#line 2903 "./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 6789 "util/configparser.c" +#line 6105 "util/configparser.c" break; - case 546: -#line 2901 "./util/configparser.y" + case 546: /* auth_zonemd_check: VAR_ZONEMD_CHECK STRING_ARG */ +#line 2911 "./util/configparser.y" { OUTYY(("P(zonemd-check:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6798,11 +6114,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6802 "util/configparser.c" +#line 6118 "util/configparser.c" break; - case 547: -#line 2911 "./util/configparser.y" + case 547: /* auth_zonemd_reject_absence: VAR_ZONEMD_REJECT_ABSENCE STRING_ARG */ +#line 2921 "./util/configparser.y" { OUTYY(("P(zonemd-reject-absence:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6811,11 +6127,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6815 "util/configparser.c" +#line 6131 "util/configparser.c" break; - case 548: -#line 2921 "./util/configparser.y" + case 548: /* auth_for_downstream: VAR_FOR_DOWNSTREAM STRING_ARG */ +#line 2931 "./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) @@ -6824,11 +6140,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6828 "util/configparser.c" +#line 6144 "util/configparser.c" break; - case 549: -#line 2931 "./util/configparser.y" + case 549: /* auth_for_upstream: VAR_FOR_UPSTREAM STRING_ARG */ +#line 2941 "./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) @@ -6837,11 +6153,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6841 "util/configparser.c" +#line 6157 "util/configparser.c" break; - case 550: -#line 2941 "./util/configparser.y" + case 550: /* auth_fallback_enabled: VAR_FALLBACK_ENABLED STRING_ARG */ +#line 2951 "./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) @@ -6850,11 +6166,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6854 "util/configparser.c" +#line 6170 "util/configparser.c" break; - case 551: -#line 2951 "./util/configparser.y" + case 551: /* view_name: VAR_NAME STRING_ARG */ +#line 2961 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) @@ -6863,11 +6179,11 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 6867 "util/configparser.c" +#line 6183 "util/configparser.c" break; - case 552: -#line 2961 "./util/configparser.y" + case 552: /* view_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */ +#line 2971 "./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 && @@ -6900,6 +6216,16 @@ yyreduce: free((yyvsp[0].str)); #ifdef USE_IPSET } else if(strcmp((yyvsp[0].str), "ipset")==0) { + size_t len = strlen((yyvsp[-1].str)); + /* Make sure to add the trailing dot. + * These are str compared to domain names. */ + if((yyvsp[-1].str)[len-1] != '.') { + if(!((yyvsp[-1].str) = realloc((yyvsp[-1].str), len+2))) { + fatal_exit("out of memory adding local-zone"); + } + (yyvsp[-1].str)[len] = '.'; + (yyvsp[-1].str)[len+1] = 0; + } if(!cfg_strlist_insert(&cfg_parser->cfg->views-> local_zones_ipset, (yyvsp[-1].str))) fatal_exit("out of memory adding local-zone"); @@ -6912,11 +6238,11 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 6916 "util/configparser.c" +#line 6242 "util/configparser.c" break; - case 553: -#line 3007 "./util/configparser.y" + case 553: /* view_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ +#line 3027 "./util/configparser.y" { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -6925,33 +6251,33 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 6929 "util/configparser.c" +#line 6255 "util/configparser.c" break; - case 554: -#line 3017 "./util/configparser.y" + case 554: /* view_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ +#line 3037 "./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 6940 "util/configparser.c" +#line 6266 "util/configparser.c" break; - case 555: -#line 3025 "./util/configparser.y" + case 555: /* view_local_data: VAR_LOCAL_DATA STRING_ARG */ +#line 3045 "./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 6951 "util/configparser.c" +#line 6277 "util/configparser.c" break; - case 556: -#line 3033 "./util/configparser.y" + case 556: /* view_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ +#line 3053 "./util/configparser.y" { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -6965,11 +6291,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 6969 "util/configparser.c" +#line 6295 "util/configparser.c" break; - case 557: -#line 3048 "./util/configparser.y" + case 557: /* view_first: VAR_VIEW_FIRST STRING_ARG */ +#line 3068 "./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) @@ -6977,19 +6303,19 @@ yyreduce: else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6981 "util/configparser.c" +#line 6307 "util/configparser.c" break; - case 558: -#line 3057 "./util/configparser.y" + case 558: /* rcstart: VAR_REMOTE_CONTROL */ +#line 3077 "./util/configparser.y" { OUTYY(("\nP(remote-control:)\n")); } -#line 6989 "util/configparser.c" +#line 6315 "util/configparser.c" break; - case 569: -#line 3068 "./util/configparser.y" + case 569: /* rc_control_enable: VAR_CONTROL_ENABLE STRING_ARG */ +#line 3088 "./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) @@ -6998,11 +6324,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7002 "util/configparser.c" +#line 6328 "util/configparser.c" break; - case 570: -#line 3078 "./util/configparser.y" + case 570: /* rc_control_port: VAR_CONTROL_PORT STRING_ARG */ +#line 3098 "./util/configparser.y" { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -7010,79 +6336,79 @@ yyreduce: else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 7014 "util/configparser.c" +#line 6340 "util/configparser.c" break; - case 571: -#line 3087 "./util/configparser.y" + case 571: /* rc_control_interface: VAR_CONTROL_INTERFACE STRING_ARG */ +#line 3107 "./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 7024 "util/configparser.c" +#line 6350 "util/configparser.c" break; - case 572: -#line 3094 "./util/configparser.y" + case 572: /* rc_control_use_cert: VAR_CONTROL_USE_CERT STRING_ARG */ +#line 3114 "./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 7034 "util/configparser.c" +#line 6360 "util/configparser.c" break; - case 573: -#line 3101 "./util/configparser.y" + case 573: /* rc_server_key_file: VAR_SERVER_KEY_FILE STRING_ARG */ +#line 3121 "./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 7044 "util/configparser.c" +#line 6370 "util/configparser.c" break; - case 574: -#line 3108 "./util/configparser.y" + case 574: /* rc_server_cert_file: VAR_SERVER_CERT_FILE STRING_ARG */ +#line 3128 "./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 7054 "util/configparser.c" +#line 6380 "util/configparser.c" break; - case 575: -#line 3115 "./util/configparser.y" + case 575: /* rc_control_key_file: VAR_CONTROL_KEY_FILE STRING_ARG */ +#line 3135 "./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 7064 "util/configparser.c" +#line 6390 "util/configparser.c" break; - case 576: -#line 3122 "./util/configparser.y" + case 576: /* rc_control_cert_file: VAR_CONTROL_CERT_FILE STRING_ARG */ +#line 3142 "./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 7074 "util/configparser.c" +#line 6400 "util/configparser.c" break; - case 577: -#line 3129 "./util/configparser.y" + case 577: /* dtstart: VAR_DNSTAP */ +#line 3149 "./util/configparser.y" { OUTYY(("\nP(dnstap:)\n")); } -#line 7082 "util/configparser.c" +#line 6408 "util/configparser.c" break; - case 599: -#line 3149 "./util/configparser.y" + case 599: /* dt_dnstap_enable: VAR_DNSTAP_ENABLE STRING_ARG */ +#line 3169 "./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) @@ -7090,11 +6416,11 @@ yyreduce: else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7094 "util/configparser.c" +#line 6420 "util/configparser.c" break; - case 600: -#line 3158 "./util/configparser.y" + case 600: /* dt_dnstap_bidirectional: VAR_DNSTAP_BIDIRECTIONAL STRING_ARG */ +#line 3178 "./util/configparser.y" { OUTYY(("P(dt_dnstap_bidirectional:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -7103,31 +6429,31 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7107 "util/configparser.c" +#line 6433 "util/configparser.c" break; - case 601: -#line 3168 "./util/configparser.y" + case 601: /* dt_dnstap_socket_path: VAR_DNSTAP_SOCKET_PATH STRING_ARG */ +#line 3188 "./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 7117 "util/configparser.c" +#line 6443 "util/configparser.c" break; - case 602: -#line 3175 "./util/configparser.y" + case 602: /* dt_dnstap_ip: VAR_DNSTAP_IP STRING_ARG */ +#line 3195 "./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 7127 "util/configparser.c" +#line 6453 "util/configparser.c" break; - case 603: -#line 3182 "./util/configparser.y" + case 603: /* dt_dnstap_tls: VAR_DNSTAP_TLS STRING_ARG */ +#line 3202 "./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) @@ -7135,51 +6461,51 @@ yyreduce: else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7139 "util/configparser.c" +#line 6465 "util/configparser.c" break; - case 604: -#line 3191 "./util/configparser.y" + case 604: /* dt_dnstap_tls_server_name: VAR_DNSTAP_TLS_SERVER_NAME STRING_ARG */ +#line 3211 "./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 7149 "util/configparser.c" +#line 6475 "util/configparser.c" break; - case 605: -#line 3198 "./util/configparser.y" + case 605: /* dt_dnstap_tls_cert_bundle: VAR_DNSTAP_TLS_CERT_BUNDLE STRING_ARG */ +#line 3218 "./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 7159 "util/configparser.c" +#line 6485 "util/configparser.c" break; - case 606: -#line 3205 "./util/configparser.y" + case 606: /* dt_dnstap_tls_client_key_file: VAR_DNSTAP_TLS_CLIENT_KEY_FILE STRING_ARG */ +#line 3225 "./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 7169 "util/configparser.c" +#line 6495 "util/configparser.c" break; - case 607: -#line 3212 "./util/configparser.y" + case 607: /* dt_dnstap_tls_client_cert_file: VAR_DNSTAP_TLS_CLIENT_CERT_FILE STRING_ARG */ +#line 3232 "./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 7179 "util/configparser.c" +#line 6505 "util/configparser.c" break; - case 608: -#line 3219 "./util/configparser.y" + case 608: /* dt_dnstap_send_identity: VAR_DNSTAP_SEND_IDENTITY STRING_ARG */ +#line 3239 "./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) @@ -7187,11 +6513,11 @@ yyreduce: else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7191 "util/configparser.c" +#line 6517 "util/configparser.c" break; - case 609: -#line 3228 "./util/configparser.y" + case 609: /* dt_dnstap_send_version: VAR_DNSTAP_SEND_VERSION STRING_ARG */ +#line 3248 "./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) @@ -7199,31 +6525,31 @@ yyreduce: else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7203 "util/configparser.c" +#line 6529 "util/configparser.c" break; - case 610: -#line 3237 "./util/configparser.y" + case 610: /* dt_dnstap_identity: VAR_DNSTAP_IDENTITY STRING_ARG */ +#line 3257 "./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 7213 "util/configparser.c" +#line 6539 "util/configparser.c" break; - case 611: -#line 3244 "./util/configparser.y" + case 611: /* dt_dnstap_version: VAR_DNSTAP_VERSION STRING_ARG */ +#line 3264 "./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 7223 "util/configparser.c" +#line 6549 "util/configparser.c" break; - case 612: -#line 3251 "./util/configparser.y" + case 612: /* dt_dnstap_log_resolver_query_messages: VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES STRING_ARG */ +#line 3271 "./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) @@ -7232,11 +6558,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7236 "util/configparser.c" +#line 6562 "util/configparser.c" break; - case 613: -#line 3261 "./util/configparser.y" + case 613: /* dt_dnstap_log_resolver_response_messages: VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES STRING_ARG */ +#line 3281 "./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) @@ -7245,11 +6571,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7249 "util/configparser.c" +#line 6575 "util/configparser.c" break; - case 614: -#line 3271 "./util/configparser.y" + case 614: /* dt_dnstap_log_client_query_messages: VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES STRING_ARG */ +#line 3291 "./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) @@ -7258,11 +6584,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7262 "util/configparser.c" +#line 6588 "util/configparser.c" break; - case 615: -#line 3281 "./util/configparser.y" + case 615: /* dt_dnstap_log_client_response_messages: VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES STRING_ARG */ +#line 3301 "./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) @@ -7271,11 +6597,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7275 "util/configparser.c" +#line 6601 "util/configparser.c" break; - case 616: -#line 3291 "./util/configparser.y" + case 616: /* dt_dnstap_log_forwarder_query_messages: VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES STRING_ARG */ +#line 3311 "./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) @@ -7284,11 +6610,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7288 "util/configparser.c" +#line 6614 "util/configparser.c" break; - case 617: -#line 3301 "./util/configparser.y" + case 617: /* dt_dnstap_log_forwarder_response_messages: VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES STRING_ARG */ +#line 3321 "./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) @@ -7297,47 +6623,47 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7301 "util/configparser.c" +#line 6627 "util/configparser.c" break; - case 618: -#line 3311 "./util/configparser.y" + case 618: /* pythonstart: VAR_PYTHON */ +#line 3331 "./util/configparser.y" { OUTYY(("\nP(python:)\n")); } -#line 7309 "util/configparser.c" +#line 6635 "util/configparser.c" break; - case 622: -#line 3320 "./util/configparser.y" + case 622: /* py_script: VAR_PYTHON_SCRIPT STRING_ARG */ +#line 3340 "./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 7319 "util/configparser.c" +#line 6645 "util/configparser.c" break; - case 623: -#line 3326 "./util/configparser.y" + case 623: /* dynlibstart: VAR_DYNLIB */ +#line 3346 "./util/configparser.y" { OUTYY(("\nP(dynlib:)\n")); } -#line 7327 "util/configparser.c" +#line 6653 "util/configparser.c" break; - case 627: -#line 3335 "./util/configparser.y" + case 627: /* dl_file: VAR_DYNLIB_FILE STRING_ARG */ +#line 3355 "./util/configparser.y" { OUTYY(("P(dynlib-file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, (yyvsp[0].str))) yyerror("out of memory"); } -#line 7337 "util/configparser.c" +#line 6663 "util/configparser.c" break; - case 628: -#line 3341 "./util/configparser.y" + case 628: /* server_disable_dnssec_lame_check: VAR_DISABLE_DNSSEC_LAME_CHECK STRING_ARG */ +#line 3361 "./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) @@ -7346,21 +6672,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7350 "util/configparser.c" +#line 6676 "util/configparser.c" break; - case 629: -#line 3351 "./util/configparser.y" + case 629: /* server_log_identity: VAR_LOG_IDENTITY STRING_ARG */ +#line 3371 "./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 7360 "util/configparser.c" +#line 6686 "util/configparser.c" break; - case 630: -#line 3358 "./util/configparser.y" + case 630: /* server_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ +#line 3378 "./util/configparser.y" { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -7368,30 +6694,30 @@ yyreduce: (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 7372 "util/configparser.c" +#line 6698 "util/configparser.c" break; - case 631: -#line 3367 "./util/configparser.y" + case 631: /* server_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ +#line 3387 "./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 7383 "util/configparser.c" +#line 6709 "util/configparser.c" break; - case 632: -#line 3375 "./util/configparser.y" + case 632: /* dnscstart: VAR_DNSCRYPT */ +#line 3395 "./util/configparser.y" { OUTYY(("\nP(dnscrypt:)\n")); } -#line 7391 "util/configparser.c" +#line 6717 "util/configparser.c" break; - case 645: -#line 3391 "./util/configparser.y" + case 645: /* dnsc_dnscrypt_enable: VAR_DNSCRYPT_ENABLE STRING_ARG */ +#line 3411 "./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) @@ -7399,11 +6725,11 @@ yyreduce: else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 7403 "util/configparser.c" +#line 6729 "util/configparser.c" break; - case 646: -#line 3401 "./util/configparser.y" + case 646: /* dnsc_dnscrypt_port: VAR_DNSCRYPT_PORT STRING_ARG */ +#line 3421 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -7411,21 +6737,21 @@ yyreduce: else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 7415 "util/configparser.c" +#line 6741 "util/configparser.c" break; - case 647: -#line 3410 "./util/configparser.y" + case 647: /* dnsc_dnscrypt_provider: VAR_DNSCRYPT_PROVIDER STRING_ARG */ +#line 3430 "./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 7425 "util/configparser.c" +#line 6751 "util/configparser.c" break; - case 648: -#line 3417 "./util/configparser.y" + case 648: /* dnsc_dnscrypt_provider_cert: VAR_DNSCRYPT_PROVIDER_CERT STRING_ARG */ +#line 3437 "./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))) @@ -7433,21 +6759,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 7437 "util/configparser.c" +#line 6763 "util/configparser.c" break; - case 649: -#line 3426 "./util/configparser.y" + case 649: /* dnsc_dnscrypt_provider_cert_rotated: VAR_DNSCRYPT_PROVIDER_CERT_ROTATED STRING_ARG */ +#line 3446 "./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 7447 "util/configparser.c" +#line 6773 "util/configparser.c" break; - case 650: -#line 3433 "./util/configparser.y" + case 650: /* dnsc_dnscrypt_secret_key: VAR_DNSCRYPT_SECRET_KEY STRING_ARG */ +#line 3453 "./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))) @@ -7455,22 +6781,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 7459 "util/configparser.c" +#line 6785 "util/configparser.c" break; - case 651: -#line 3442 "./util/configparser.y" + case 651: /* dnsc_dnscrypt_shared_secret_cache_size: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE STRING_ARG */ +#line 3462 "./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 7470 "util/configparser.c" +#line 6796 "util/configparser.c" break; - case 652: -#line 3450 "./util/configparser.y" + case 652: /* dnsc_dnscrypt_shared_secret_cache_slabs: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS STRING_ARG */ +#line 3470 "./util/configparser.y" { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -7482,22 +6808,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 7486 "util/configparser.c" +#line 6812 "util/configparser.c" break; - case 653: -#line 3463 "./util/configparser.y" + case 653: /* dnsc_dnscrypt_nonce_cache_size: VAR_DNSCRYPT_NONCE_CACHE_SIZE STRING_ARG */ +#line 3483 "./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 7497 "util/configparser.c" +#line 6823 "util/configparser.c" break; - case 654: -#line 3471 "./util/configparser.y" + case 654: /* dnsc_dnscrypt_nonce_cache_slabs: VAR_DNSCRYPT_NONCE_CACHE_SLABS STRING_ARG */ +#line 3491 "./util/configparser.y" { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) { @@ -7509,19 +6835,19 @@ yyreduce: } free((yyvsp[0].str)); } -#line 7513 "util/configparser.c" +#line 6839 "util/configparser.c" break; - case 655: -#line 3484 "./util/configparser.y" + case 655: /* cachedbstart: VAR_CACHEDB */ +#line 3504 "./util/configparser.y" { OUTYY(("\nP(cachedb:)\n")); } -#line 7521 "util/configparser.c" +#line 6847 "util/configparser.c" break; - case 664: -#line 3495 "./util/configparser.y" + case 664: /* cachedb_backend_name: VAR_CACHEDB_BACKEND STRING_ARG */ +#line 3515 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); @@ -7532,11 +6858,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7536 "util/configparser.c" +#line 6862 "util/configparser.c" break; - case 665: -#line 3507 "./util/configparser.y" + case 665: /* cachedb_secret_seed: VAR_CACHEDB_SECRETSEED STRING_ARG */ +#line 3527 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); @@ -7547,11 +6873,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7551 "util/configparser.c" +#line 6877 "util/configparser.c" break; - case 666: -#line 3519 "./util/configparser.y" + case 666: /* redis_server_host: VAR_CACHEDB_REDISHOST STRING_ARG */ +#line 3539 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); @@ -7562,11 +6888,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7566 "util/configparser.c" +#line 6892 "util/configparser.c" break; - case 667: -#line 3531 "./util/configparser.y" + case 667: /* redis_server_port: VAR_CACHEDB_REDISPORT STRING_ARG */ +#line 3551 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; @@ -7580,11 +6906,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 7584 "util/configparser.c" +#line 6910 "util/configparser.c" break; - case 668: -#line 3546 "./util/configparser.y" + case 668: /* redis_timeout: VAR_CACHEDB_REDISTIMEOUT STRING_ARG */ +#line 3566 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); @@ -7596,11 +6922,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 7600 "util/configparser.c" +#line 6926 "util/configparser.c" break; - case 669: -#line 3559 "./util/configparser.y" + case 669: /* redis_expire_records: VAR_CACHEDB_REDISEXPIRERECORDS STRING_ARG */ +#line 3579 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str))); @@ -7612,11 +6938,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 7616 "util/configparser.c" +#line 6942 "util/configparser.c" break; - case 670: -#line 3572 "./util/configparser.y" + case 670: /* server_tcp_connection_limit: VAR_TCP_CONNECTION_LIMIT STRING_ARG STRING_ARG */ +#line 3592 "./util/configparser.y" { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) @@ -7626,19 +6952,19 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 7630 "util/configparser.c" +#line 6956 "util/configparser.c" break; - case 671: -#line 3583 "./util/configparser.y" + case 671: /* ipsetstart: VAR_IPSET */ +#line 3603 "./util/configparser.y" { OUTYY(("\nP(ipset:)\n")); } -#line 7638 "util/configparser.c" +#line 6964 "util/configparser.c" break; - case 676: -#line 3592 "./util/configparser.y" + case 676: /* ipset_name_v4: VAR_IPSET_NAME_V4 STRING_ARG */ +#line 3612 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); @@ -7652,11 +6978,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7656 "util/configparser.c" +#line 6982 "util/configparser.c" break; - case 677: -#line 3607 "./util/configparser.y" + case 677: /* ipset_name_v6: VAR_IPSET_NAME_V6 STRING_ARG */ +#line 3627 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); @@ -7670,11 +6996,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7674 "util/configparser.c" +#line 7000 "util/configparser.c" break; -#line 7678 "util/configparser.c" +#line 7004 "util/configparser.c" default: break; } @@ -7834,13 +7160,13 @@ yyabortlab: yyexhaustedlab: yyerror (YY_("memory exhausted")); yyresult = 2; - /* Fall through. */ + goto yyreturn; #endif -/*-----------------------------------------------------. -| yyreturn -- parsing is finished, return the result. | -`-----------------------------------------------------*/ +/*-------------------------------------------------------. +| yyreturn -- parsing is finished, clean up and return. | +`-------------------------------------------------------*/ yyreturn: if (yychar != YYEMPTY) { @@ -7868,7 +7194,7 @@ yyreturn: return yyresult; } -#line 3621 "./util/configparser.y" +#line 3641 "./util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index 6dcbcb41e..c299937c8 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.6.4. */ +/* A Bison parser, made by GNU Bison 3.7.6. */ /* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -16,7 +16,7 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program. If not, see . */ + 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 @@ -380,6 +380,7 @@ extern int yydebug; typedef enum yytokentype yytoken_kind_t; #endif /* Token kinds. */ +#define YYEMPTY -2 #define YYEOF 0 #define YYerror 256 #define YYUNDEF 257 @@ -714,7 +715,7 @@ union YYSTYPE char* str; -#line 718 "util/configparser.h" +#line 719 "util/configparser.h" }; typedef union YYSTYPE YYSTYPE; diff --git a/util/configparser.y b/util/configparser.y index 4ec9e6350..946bd432e 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -2175,7 +2175,7 @@ server_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG && strcmp($3, "noview")!=0 && strcmp($3, "inform")!=0 && strcmp($3, "inform_deny")!=0 && strcmp($3, "inform_redirect") != 0 - && strcmp($3, "ipset") != 0) { + && strcmp($3, "ipset") != 0) { yyerror("local-zone type: expected static, deny, " "refuse, redirect, transparent, " "typetransparent, inform, inform_deny, " @@ -2192,6 +2192,16 @@ server_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG free($3); #ifdef USE_IPSET } else if(strcmp($3, "ipset")==0) { + size_t len = strlen($2); + /* Make sure to add the trailing dot. + * These are str compared to domain names. */ + if($2[len-1] != '.') { + if(!($2 = realloc($2, len+2))) { + fatal_exit("out of memory adding local-zone"); + } + $2[len] = '.'; + $2[len+1] = 0; + } if(!cfg_strlist_insert(&cfg_parser->cfg-> local_zones_ipset, $2)) fatal_exit("out of memory adding local-zone"); @@ -2990,6 +3000,16 @@ view_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG free($3); #ifdef USE_IPSET } else if(strcmp($3, "ipset")==0) { + size_t len = strlen($2); + /* Make sure to add the trailing dot. + * These are str compared to domain names. */ + if($2[len-1] != '.') { + if(!($2 = realloc($2, len+2))) { + fatal_exit("out of memory adding local-zone"); + } + $2[len] = '.'; + $2[len+1] = 0; + } if(!cfg_strlist_insert(&cfg_parser->cfg->views-> local_zones_ipset, $2)) fatal_exit("out of memory adding local-zone"); From f81420d77fde09b81e94bdfb443bb192336b2e6a Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 2 Mar 2022 14:34:36 +0100 Subject: [PATCH 537/553] - Fix compile warnings for printf ll format on mingw compile. --- config.h.in | 6 +++++- configure | 17 ++++++++++++++++- configure.ac | 3 ++- doc/Changelog | 3 +++ validator/autotrust.c | 7 +------ 5 files changed, 27 insertions(+), 9 deletions(-) diff --git a/config.h.in b/config.h.in index 197c2838b..a080dde0d 100644 --- a/config.h.in +++ b/config.h.in @@ -971,6 +971,10 @@ /* Define to 1 if you need to in order for `stat' and other things to work. */ #undef _POSIX_SOURCE +/* defined to use gcc ansi snprintf and sscanf that understands %lld when + compiled for windows. */ +#undef __USE_MINGW_ANSI_STDIO + /* Define to empty if `const' does not conform to ANSI C. */ #undef const @@ -1150,7 +1154,7 @@ #include #endif -#ifndef USE_WINSOCK +#if !defined(USE_WINSOCK) || !defined(HAVE_SNPRINTF) || defined(SNPRINTF_RET_BROKEN) || defined(__USE_MINGW_ANSI_STDIO) #define ARG_LL "%ll" #else #define ARG_LL "%I64" diff --git a/configure b/configure index b56720f96..4b97c2541 100755 --- a/configure +++ b/configure @@ -813,6 +813,7 @@ infodir docdir oldincludedir includedir +runstatedir localstatedir sharedstatedir sysconfdir @@ -964,6 +965,7 @@ datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -1216,6 +1218,15 @@ do | -silent | --silent | --silen | --sile | --sil) silent=yes ;; + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1353,7 +1364,7 @@ fi for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir + libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1506,6 +1517,7 @@ Fine tuning of the installation directories: --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -20182,6 +20194,9 @@ fi WIN_CHECKCONF_OBJ_LINK="rsrc_unbound_checkconf.o" + +$as_echo "#define __USE_MINGW_ANSI_STDIO 1" >>confdefs.h + fi if test $ac_cv_func_getaddrinfo = no; then case " $LIBOBJS " in diff --git a/configure.ac b/configure.ac index 9be7f1ee4..ca0c6154f 100644 --- a/configure.ac +++ b/configure.ac @@ -1554,6 +1554,7 @@ if test "$USE_WINSOCK" = 1; then AC_SUBST(WIN_CONTROL_OBJ_LINK) WIN_CHECKCONF_OBJ_LINK="rsrc_unbound_checkconf.o" AC_SUBST(WIN_CHECKCONF_OBJ_LINK) + AC_DEFINE(__USE_MINGW_ANSI_STDIO, 1, [defined to use gcc ansi snprintf and sscanf that understands %lld when compiled for windows.]) fi if test $ac_cv_func_getaddrinfo = no; then AC_LIBOBJ([fake-rfc2553]) @@ -2061,7 +2062,7 @@ dnl includes #include #endif -#ifndef USE_WINSOCK +#if !defined(USE_WINSOCK) || !defined(HAVE_SNPRINTF) || defined(SNPRINTF_RET_BROKEN) || defined(__USE_MINGW_ANSI_STDIO) #define ARG_LL "%ll" #else #define ARG_LL "%I64" diff --git a/doc/Changelog b/doc/Changelog index b3311201b..ff410c212 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -3,6 +3,9 @@ - Various fixes for #632: variable initialisation, convert the qinfo to str once, accept trailing dot in the local-zone ipset option. +2 March 2022: Wouter + - Fix compile warnings for printf ll format on mingw compile. + 1 March 2022: Wouter - Fix pythonmod for change in iter_dp_is_useless function prototype. diff --git a/validator/autotrust.c b/validator/autotrust.c index ec656a1bd..96776a1f5 100644 --- a/validator/autotrust.c +++ b/validator/autotrust.c @@ -1203,13 +1203,8 @@ void autr_write_file(struct module_env* env, struct trust_anchor* tp) #else llvalue = (unsigned long long)tp; #endif -#ifndef USE_WINSOCK - snprintf(tempf, sizeof(tempf), "%s.%d-%d-%llx", fname, (int)getpid(), + snprintf(tempf, sizeof(tempf), "%s.%d-%d-" ARG_LL "x", fname, (int)getpid(), env->worker?*(int*)env->worker:0, llvalue); -#else - snprintf(tempf, sizeof(tempf), "%s.%d-%d-%I64x", fname, (int)getpid(), - env->worker?*(int*)env->worker:0, llvalue); -#endif #endif /* S_SPLINT_S */ verbose(VERB_ALGO, "autotrust: write to disk: %s", tempf); out = fopen(tempf, "w"); From debe5c665f5a14f43a712c76bb252becb50b76ce Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 3 Mar 2022 14:19:59 +0100 Subject: [PATCH 538/553] - Fix #637: Integer Overflow in sldns_str2period function. --- doc/Changelog | 3 +++ services/authzone.c | 43 +++++++++++++++++++++++++++++++++++-------- sldns/parseutil.c | 36 +++++++++++++++++++++++++++++++++++- sldns/parseutil.h | 4 +++- sldns/str2wire.c | 18 +++++++++++++++--- 5 files changed, 91 insertions(+), 13 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index ff410c212..2236e5550 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +3 March 2022: Wouter + - Fix #637: Integer Overflow in sldns_str2period function. + 2 March 2022: George - Merge PR #632 from scottrw93: Match cnames in ipset. - Various fixes for #632: variable initialisation, convert the qinfo diff --git a/services/authzone.c b/services/authzone.c index 66d118b02..b8ce8e73b 100644 --- a/services/authzone.c +++ b/services/authzone.c @@ -4456,7 +4456,7 @@ chunkline_get_line_collated(struct auth_chunk** chunk, size_t* chunk_pos, return 1; } -/** process $ORIGIN for http */ +/** process $ORIGIN for http, 0 nothing, 1 done, 2 error */ static int http_parse_origin(sldns_buffer* buf, struct sldns_file_parse_state* pstate) { @@ -4467,13 +4467,16 @@ http_parse_origin(sldns_buffer* buf, struct sldns_file_parse_state* pstate) pstate->origin_len = sizeof(pstate->origin); s = sldns_str2wire_dname_buf(sldns_strip_ws(line+8), pstate->origin, &pstate->origin_len); - if(s) pstate->origin_len = 0; + if(s) { + pstate->origin_len = 0; + return 2; + } return 1; } return 0; } -/** process $TTL for http */ +/** process $TTL for http, 0 nothing, 1 done, 2 error */ static int http_parse_ttl(sldns_buffer* buf, struct sldns_file_parse_state* pstate) { @@ -4481,8 +4484,12 @@ http_parse_ttl(sldns_buffer* buf, struct sldns_file_parse_state* pstate) if(strncmp(line, "$TTL", 4) == 0 && isspace((unsigned char)line[4])) { const char* end = NULL; + int overflow = 0; pstate->default_ttl = sldns_str2period( - sldns_strip_ws(line+5), &end); + sldns_strip_ws(line+5), &end, &overflow); + if(overflow) { + return 2; + } return 1; } return 0; @@ -4493,15 +4500,20 @@ static int chunkline_non_comment_RR(struct auth_chunk** chunk, size_t* chunk_pos, sldns_buffer* buf, struct sldns_file_parse_state* pstate) { + int ret; while(chunkline_get_line_collated(chunk, chunk_pos, buf)) { if(chunkline_is_comment_line_or_empty(buf)) { /* a comment, go to next line */ continue; } - if(http_parse_origin(buf, pstate)) { + if((ret=http_parse_origin(buf, pstate))!=0) { + if(ret == 2) + return 0; continue; /* $ORIGIN has been handled */ } - if(http_parse_ttl(buf, pstate)) { + if((ret=http_parse_ttl(buf, pstate))!=0) { + if(ret == 2) + return 0; continue; /* $TTL has been handled */ } return 1; @@ -5007,6 +5019,7 @@ apply_http(struct auth_xfer* xfr, struct auth_zone* z, struct sldns_file_parse_state pstate; struct auth_chunk* chunk; size_t chunk_pos; + int ret; memset(&pstate, 0, sizeof(pstate)); pstate.default_ttl = 3600; if(xfr->namelen < sizeof(pstate.origin)) { @@ -5063,10 +5076,24 @@ apply_http(struct auth_xfer* xfr, struct auth_zone* z, continue; } /* parse line and add RR */ - if(http_parse_origin(scratch_buffer, &pstate)) { + if((ret=http_parse_origin(scratch_buffer, &pstate))!=0) { + if(ret == 2) { + verbose(VERB_ALGO, "error parsing ORIGIN on line [%s:%d] %s", + xfr->task_transfer->master->file, + pstate.lineno, + sldns_buffer_begin(scratch_buffer)); + return 0; + } continue; /* $ORIGIN has been handled */ } - if(http_parse_ttl(scratch_buffer, &pstate)) { + if((ret=http_parse_ttl(scratch_buffer, &pstate))!=0) { + if(ret == 2) { + verbose(VERB_ALGO, "error parsing TTL on line [%s:%d] %s", + xfr->task_transfer->master->file, + pstate.lineno, + sldns_buffer_begin(scratch_buffer)); + return 0; + } continue; /* $TTL has been handled */ } if(!http_parse_add_rr(xfr, z, scratch_buffer, &pstate)) { diff --git a/sldns/parseutil.c b/sldns/parseutil.c index ba71df55d..e69c568db 100644 --- a/sldns/parseutil.c +++ b/sldns/parseutil.c @@ -209,11 +209,13 @@ sldns_hexdigit_to_int(char ch) } uint32_t -sldns_str2period(const char *nptr, const char **endptr) +sldns_str2period(const char *nptr, const char **endptr, int* overflow) { int sign = 0; uint32_t i = 0; uint32_t seconds = 0; + const uint32_t maxint = 0xffffffff; + *overflow = 0; for(*endptr = nptr; **endptr; (*endptr)++) { switch (**endptr) { @@ -236,26 +238,46 @@ sldns_str2period(const char *nptr, const char **endptr) break; case 's': case 'S': + if(seconds > maxint-i) { + *overflow = 1; + return 0; + } seconds += i; i = 0; break; case 'm': case 'M': + if(i > maxint/60 || seconds > maxint-(i*60)) { + *overflow = 1; + return 0; + } seconds += i * 60; i = 0; break; case 'h': case 'H': + if(i > maxint/(60*60) || seconds > maxint-(i*60*60)) { + *overflow = 1; + return 0; + } seconds += i * 60 * 60; i = 0; break; case 'd': case 'D': + if(i > maxint/(60*60*24) || seconds > maxint-(i*60*60*24)) { + *overflow = 1; + return 0; + } seconds += i * 60 * 60 * 24; i = 0; break; case 'w': case 'W': + if(i > maxint/(60*60*24*7) || seconds > maxint-(i*60*60*24*7)) { + *overflow = 1; + return 0; + } seconds += i * 60 * 60 * 24 * 7; i = 0; break; @@ -269,15 +291,27 @@ sldns_str2period(const char *nptr, const char **endptr) case '7': case '8': case '9': + if(i > maxint/10 || i > maxint - (**endptr - '0')) { + *overflow = 1; + return 0; + } i *= 10; i += (**endptr - '0'); break; default: + if(seconds > maxint-i) { + *overflow = 1; + return 0; + } seconds += i; /* disregard signedness */ return seconds; } } + if(seconds > maxint-i) { + *overflow = 1; + return 0; + } seconds += i; /* disregard signedness */ return seconds; diff --git a/sldns/parseutil.h b/sldns/parseutil.h index 208fd2fbc..683f34e23 100644 --- a/sldns/parseutil.h +++ b/sldns/parseutil.h @@ -74,9 +74,11 @@ struct tm * sldns_serial_arithmetics_gmtime_r(int32_t time, time_t now, struct t * converts a ttl value (like 5d2h) to a long. * \param[in] nptr the start of the string * \param[out] endptr points to the last char in case of error + * \param[out] overflow returns if the string causes integer overflow error, + * the number is too big, string of digits too long. * \return the convert duration value */ -uint32_t sldns_str2period(const char *nptr, const char **endptr); +uint32_t sldns_str2period(const char *nptr, const char **endptr, int* overflow); /** * Returns the int value of the given (hex) digit diff --git a/sldns/str2wire.c b/sldns/str2wire.c index 4e9da2b10..09dedb0d7 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -249,11 +249,16 @@ rrinternal_get_ttl(sldns_buffer* strbuf, char* token, size_t token_len, int* not_there, uint32_t* ttl, uint32_t default_ttl) { const char* endptr; + int overflow; if(sldns_bget_token(strbuf, token, "\t\n ", token_len) == -1) { return RET_ERR(LDNS_WIREPARSE_ERR_SYNTAX_TTL, sldns_buffer_position(strbuf)); } - *ttl = (uint32_t) sldns_str2period(token, &endptr); + *ttl = (uint32_t) sldns_str2period(token, &endptr, &overflow); + if(overflow) { + return RET_ERR(LDNS_WIREPARSE_ERR_SYNTAX_INTEGER_OVERFLOW, + sldns_buffer_position(strbuf)); + } if (strlen(token) > 0 && !isdigit((unsigned char)token[0])) { *not_there = 1; @@ -1055,12 +1060,15 @@ int sldns_fp2wire_rr_buf(FILE* in, uint8_t* rr, size_t* len, size_t* dname_len, return s; } else if(strncmp(line, "$TTL", 4) == 0 && isspace((unsigned char)line[4])) { const char* end = NULL; + int overflow = 0; strlcpy((char*)rr, line, *len); *len = 0; *dname_len = 0; if(!parse_state) return LDNS_WIREPARSE_ERR_OK; parse_state->default_ttl = sldns_str2period( - sldns_strip_ws(line+5), &end); + sldns_strip_ws(line+5), &end, &overflow); + if(overflow) + return LDNS_WIREPARSE_ERR_SYNTAX_INTEGER_OVERFLOW; } else if (strncmp(line, "$INCLUDE", 8) == 0) { strlcpy((char*)rr, line, *len); *len = 0; @@ -2157,9 +2165,13 @@ int sldns_str2wire_tsigtime_buf(const char* str, uint8_t* rd, size_t* len) int sldns_str2wire_period_buf(const char* str, uint8_t* rd, size_t* len) { const char* end; - uint32_t p = sldns_str2period(str, &end); + int overflow; + uint32_t p = sldns_str2period(str, &end, &overflow); if(*end != 0) return RET_ERR(LDNS_WIREPARSE_ERR_SYNTAX_PERIOD, end-str); + if(overflow) + return RET_ERR(LDNS_WIREPARSE_ERR_SYNTAX_INTEGER_OVERFLOW, + end-str); if(*len < 4) return LDNS_WIREPARSE_ERR_BUFFER_TOO_SMALL; sldns_write_uint32(rd, p); From b202b0874c7571b0ef1ed598264d9acebe3636fd Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 3 Mar 2022 16:24:46 +0100 Subject: [PATCH 539/553] - Fix for #637: fix integer overflow checks in sldns_str2period. --- doc/Changelog | 1 + sldns/parseutil.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 2236e5550..3fa86ac3b 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,6 @@ 3 March 2022: Wouter - Fix #637: Integer Overflow in sldns_str2period function. + - Fix for #637: fix integer overflow checks in sldns_str2period. 2 March 2022: George - Merge PR #632 from scottrw93: Match cnames in ipset. diff --git a/sldns/parseutil.c b/sldns/parseutil.c index e69c568db..dd1f33484 100644 --- a/sldns/parseutil.c +++ b/sldns/parseutil.c @@ -291,7 +291,7 @@ sldns_str2period(const char *nptr, const char **endptr, int* overflow) case '7': case '8': case '9': - if(i > maxint/10 || i > maxint - (**endptr - '0')) { + if(i > maxint/10 || i*10 > maxint - (**endptr - '0')) { *overflow = 1; return 0; } From 62c5039ab9da42713e006e840b7578e01d66e7f2 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 7 Mar 2022 14:02:31 +0100 Subject: [PATCH 540/553] - Fix configure for python to use sysutils, because distutils is deprecated. It uses sysutils when available, distutils otherwise. --- acx_python.m4 | 57 ++++++++++++++++++++++++++++++++-------------- configure | 62 ++++++++++++++++++++++++++++++++++++--------------- doc/Changelog | 4 ++++ 3 files changed, 88 insertions(+), 35 deletions(-) diff --git a/acx_python.m4 b/acx_python.m4 index 767db5b65..16c0c6fd9 100644 --- a/acx_python.m4 +++ b/acx_python.m4 @@ -18,27 +18,45 @@ AC_DEFUN([AC_PYTHON_DEVEL],[ print(sys.version.split()[[0]])"` fi - # - # Check if you have distutils, else fail - # - AC_MSG_CHECKING([for the distutils Python package]) - if ac_distutils_result=`$PYTHON -c "import distutils" 2>&1`; then + # Check if you have sysconfig + AC_MSG_CHECKING([for the sysconfig Python module]) + if ac_sysconfig_result=`$PYTHON -c "import sysconfig" 2>&1`; then AC_MSG_RESULT([yes]) - else + sysconfig_module="sysconfig" + # if yes, use sysconfig, because distutils is deprecated. + else AC_MSG_RESULT([no]) - AC_MSG_ERROR([cannot import Python module "distutils". -Please check your Python installation. The error was: -$ac_distutils_result]) - PYTHON_VERSION="" - fi + # if no, try to use distutils + + # + # Check if you have distutils, else fail + # + AC_MSG_CHECKING([for the distutils Python package]) + if ac_distutils_result=`$PYTHON -c "import distutils" 2>&1`; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + AC_MSG_ERROR([cannot import Python module "distutils". + Please check your Python installation. The error was: + $ac_distutils_result]) + PYTHON_VERSION="" + fi + + sysconfig_module="distutils.sysconfig" + fi # # Check for Python include path # AC_MSG_CHECKING([for Python include path]) if test -z "$PYTHON_CPPFLAGS"; then - python_path=`$PYTHON -c "import distutils.sysconfig; \ - print(distutils.sysconfig.get_python_inc());"` + if test "$sysconfig_module" = "sysconfig"; then + python_path=`$PYTHON -c 'import sysconfig; \ + print(sysconfig.get_path("include"));'` + else + python_path=`$PYTHON -c "import distutils.sysconfig; \ + print(distutils.sysconfig.get_python_inc());"` + fi if test -n "${python_path}"; then python_path="-I$python_path" fi @@ -52,14 +70,14 @@ $ac_distutils_result]) # AC_MSG_CHECKING([for Python library path]) if test -z "$PYTHON_LDFLAGS"; then - PYTHON_LDFLAGS=`$PYTHON -c "from distutils.sysconfig import *; \ + PYTHON_LDFLAGS=`$PYTHON -c "from $sysconfig_module import *; \ print('-L'+get_config_var('LIBDIR')+' -L'+get_config_var('LIBDEST')+' '+get_config_var('BLDLIBRARY'));"` fi AC_MSG_RESULT([$PYTHON_LDFLAGS]) AC_SUBST([PYTHON_LDFLAGS]) if test -z "$PYTHON_LIBDIR"; then - PYTHON_LIBDIR=`$PYTHON -c "from distutils.sysconfig import *; \ + PYTHON_LIBDIR=`$PYTHON -c "from $sysconfig_module import *; \ print(get_config_var('LIBDIR'));"` fi @@ -68,8 +86,13 @@ $ac_distutils_result]) # AC_MSG_CHECKING([for Python site-packages path]) if test -z "$PYTHON_SITE_PKG"; then - PYTHON_SITE_PKG=`$PYTHON -c "import distutils.sysconfig; \ - print(distutils.sysconfig.get_python_lib(1,0));"` + if test "$sysconfig_module" = "sysconfig"; then + PYTHON_SITE_PKG=`$PYTHON -c 'import sysconfig; \ + print(sysconfig.get_path("platlib"));'` + else + PYTHON_SITE_PKG=`$PYTHON -c "import distutils.sysconfig; \ + print(distutils.sysconfig.get_python_lib(1,0));"` + fi fi AC_MSG_RESULT([$PYTHON_SITE_PKG]) AC_SUBST([PYTHON_SITE_PKG]) diff --git a/configure b/configure index 4b97c2541..ac79c9a81 100755 --- a/configure +++ b/configure @@ -17468,22 +17468,38 @@ fi print(sys.version.split()[0])"` fi - # - # Check if you have distutils, else fail - # - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the distutils Python package" >&5 -$as_echo_n "checking for the distutils Python package... " >&6; } - if ac_distutils_result=`$PYTHON -c "import distutils" 2>&1`; then + # Check if you have sysconfig + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the sysconfig Python module" >&5 +$as_echo_n "checking for the sysconfig Python module... " >&6; } + if ac_sysconfig_result=`$PYTHON -c "import sysconfig" 2>&1`; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - else + sysconfig_module="sysconfig" + # if yes, use sysconfig, because distutils is deprecated. + else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } - as_fn_error $? "cannot import Python module \"distutils\". -Please check your Python installation. The error was: -$ac_distutils_result" "$LINENO" 5 - PYTHON_VERSION="" - fi + # if no, try to use distutils + + # + # Check if you have distutils, else fail + # + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the distutils Python package" >&5 +$as_echo_n "checking for the distutils Python package... " >&6; } + if ac_distutils_result=`$PYTHON -c "import distutils" 2>&1`; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + as_fn_error $? "cannot import Python module \"distutils\". + Please check your Python installation. The error was: + $ac_distutils_result" "$LINENO" 5 + PYTHON_VERSION="" + fi + + sysconfig_module="distutils.sysconfig" + fi # # Check for Python include path @@ -17491,8 +17507,13 @@ $ac_distutils_result" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python include path" >&5 $as_echo_n "checking for Python include path... " >&6; } if test -z "$PYTHON_CPPFLAGS"; then - python_path=`$PYTHON -c "import distutils.sysconfig; \ - print(distutils.sysconfig.get_python_inc());"` + if test "$sysconfig_module" = "sysconfig"; then + python_path=`$PYTHON -c 'import sysconfig; \ + print(sysconfig.get_path("include"));'` + else + python_path=`$PYTHON -c "import distutils.sysconfig; \ + print(distutils.sysconfig.get_python_inc());"` + fi if test -n "${python_path}"; then python_path="-I$python_path" fi @@ -17508,7 +17529,7 @@ $as_echo "$PYTHON_CPPFLAGS" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python library path" >&5 $as_echo_n "checking for Python library path... " >&6; } if test -z "$PYTHON_LDFLAGS"; then - PYTHON_LDFLAGS=`$PYTHON -c "from distutils.sysconfig import *; \ + PYTHON_LDFLAGS=`$PYTHON -c "from $sysconfig_module import *; \ print('-L'+get_config_var('LIBDIR')+' -L'+get_config_var('LIBDEST')+' '+get_config_var('BLDLIBRARY'));"` fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_LDFLAGS" >&5 @@ -17516,7 +17537,7 @@ $as_echo "$PYTHON_LDFLAGS" >&6; } if test -z "$PYTHON_LIBDIR"; then - PYTHON_LIBDIR=`$PYTHON -c "from distutils.sysconfig import *; \ + PYTHON_LIBDIR=`$PYTHON -c "from $sysconfig_module import *; \ print(get_config_var('LIBDIR'));"` fi @@ -17526,8 +17547,13 @@ $as_echo "$PYTHON_LDFLAGS" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python site-packages path" >&5 $as_echo_n "checking for Python site-packages path... " >&6; } if test -z "$PYTHON_SITE_PKG"; then - PYTHON_SITE_PKG=`$PYTHON -c "import distutils.sysconfig; \ - print(distutils.sysconfig.get_python_lib(1,0));"` + if test "$sysconfig_module" = "sysconfig"; then + PYTHON_SITE_PKG=`$PYTHON -c 'import sysconfig; \ + print(sysconfig.get_path("platlib"));'` + else + PYTHON_SITE_PKG=`$PYTHON -c "import distutils.sysconfig; \ + print(distutils.sysconfig.get_python_lib(1,0));"` + fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_SITE_PKG" >&5 $as_echo "$PYTHON_SITE_PKG" >&6; } diff --git a/doc/Changelog b/doc/Changelog index 3fa86ac3b..d9dfdfa72 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +7 March 2022: Wouter + - Fix configure for python to use sysutils, because distutils is + deprecated. It uses sysutils when available, distutils otherwise. + 3 March 2022: Wouter - Fix #637: Integer Overflow in sldns_str2period function. - Fix for #637: fix integer overflow checks in sldns_str2period. From 516f4f9cf41152b81e78bd1b6633d8ee3051fb18 Mon Sep 17 00:00:00 2001 From: Felipe Gasper Date: Tue, 8 Mar 2022 14:01:09 -0500 Subject: [PATCH 541/553] Make `install-lib` make target install the pkg-config file. Issue #643 --- Makefile.in | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile.in b/Makefile.in index 0c223eb8d..2c57161e3 100644 --- a/Makefile.in +++ b/Makefile.in @@ -584,6 +584,8 @@ install-lib: lib $(UNBOUND_EVENT_INSTALL) done $(LIBTOOL) --mode=install cp unbound.h $(DESTDIR)$(includedir)/unbound.h $(LIBTOOL) --mode=install cp libunbound.la $(DESTDIR)$(libdir) + $(INSTALL) -m 755 -d $(DESTDIR)$(libdir)/pkgconfig + $(INSTALL) -m 644 contrib/libunbound.pc $(DESTDIR)$(libdir)/pkgconfig $(LIBTOOL) --mode=finish $(DESTDIR)$(libdir) install-all: all $(PYTHONMOD_INSTALL) $(PYUNBOUND_INSTALL) $(UNBOUND_EVENT_INSTALL) install-lib @@ -592,8 +594,6 @@ install-all: all $(PYTHONMOD_INSTALL) $(PYUNBOUND_INSTALL) $(UNBOUND_EVENT_INSTA $(INSTALL) -m 755 -d $(DESTDIR)$(mandir)/man8 $(INSTALL) -m 755 -d $(DESTDIR)$(mandir)/man5 $(INSTALL) -m 755 -d $(DESTDIR)$(mandir)/man1 - $(INSTALL) -m 755 -d $(DESTDIR)$(libdir)/pkgconfig - $(INSTALL) -m 644 contrib/libunbound.pc $(DESTDIR)$(libdir)/pkgconfig $(LIBTOOL) --mode=install cp -f unbound$(EXEEXT) $(DESTDIR)$(sbindir)/unbound$(EXEEXT) $(LIBTOOL) --mode=install cp -f unbound-checkconf$(EXEEXT) $(DESTDIR)$(sbindir)/unbound-checkconf$(EXEEXT) $(LIBTOOL) --mode=install cp -f unbound-control$(EXEEXT) $(DESTDIR)$(sbindir)/unbound-control$(EXEEXT) From b0dbfa37f9dc46734bbae5963c5bdf33286a6c9c Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 9 Mar 2022 09:43:07 +0100 Subject: [PATCH 542/553] Changelog note for #644, move commands together for library binary. --- Makefile.in | 2 +- doc/Changelog | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/Makefile.in b/Makefile.in index 2c57161e3..7d9974e00 100644 --- a/Makefile.in +++ b/Makefile.in @@ -583,9 +583,9 @@ install-lib: lib $(UNBOUND_EVENT_INSTALL) echo ".so man3/libunbound.3" > $(DESTDIR)$(mandir)/man3/$$mpage.3 ; \ done $(LIBTOOL) --mode=install cp unbound.h $(DESTDIR)$(includedir)/unbound.h - $(LIBTOOL) --mode=install cp libunbound.la $(DESTDIR)$(libdir) $(INSTALL) -m 755 -d $(DESTDIR)$(libdir)/pkgconfig $(INSTALL) -m 644 contrib/libunbound.pc $(DESTDIR)$(libdir)/pkgconfig + $(LIBTOOL) --mode=install cp libunbound.la $(DESTDIR)$(libdir) $(LIBTOOL) --mode=finish $(DESTDIR)$(libdir) install-all: all $(PYTHONMOD_INSTALL) $(PYUNBOUND_INSTALL) $(UNBOUND_EVENT_INSTALL) install-lib diff --git a/doc/Changelog b/doc/Changelog index d9dfdfa72..93e452775 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +9 March 2022: Wouter + - Merge #644: Make `install-lib` make target install the pkg-config + file. + 7 March 2022: Wouter - Fix configure for python to use sysutils, because distutils is deprecated. It uses sysutils when available, distutils otherwise. From 402135b41ae326923136a8f9e087c17ddabc911b Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 16 Mar 2022 09:54:53 +0100 Subject: [PATCH 543/553] - Fix to ensure uniform handling of spaces and tabs when parsing RRs. --- doc/Changelog | 3 +++ sldns/str2wire.c | 6 ++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 93e452775..8b885b83c 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +16 March 2022: Wouter + - Fix to ensure uniform handling of spaces and tabs when parsing RRs. + 9 March 2022: Wouter - Merge #644: Make `install-lib` make target install the pkg-config file. diff --git a/sldns/str2wire.c b/sldns/str2wire.c index 09dedb0d7..5cfd3c585 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -378,7 +378,8 @@ rrinternal_get_quoted(sldns_buffer* strbuf, const char** delimiters, /* skip spaces */ while(sldns_buffer_remaining(strbuf) > 0 && - *(sldns_buffer_current(strbuf)) == ' ') { + (*(sldns_buffer_current(strbuf)) == ' ' || + *(sldns_buffer_current(strbuf)) == '\t')) { sldns_buffer_skip(strbuf, 1); } @@ -780,7 +781,8 @@ rrinternal_parse_rdata(sldns_buffer* strbuf, char* token, size_t token_len, /* unknown RR data */ if(token_strlen>=2 && strncmp(token, "\\#", 2) == 0 && - !quoted && (token_strlen == 2 || token[2]==' ')) { + !quoted && (token_strlen == 2 || token[2]==' ' || + token[2]=='\t')) { was_unknown_rr_format = 1; if((status=rrinternal_parse_unknown(strbuf, token, token_len, rr, rr_len, &rr_cur_len, From 9484ddee2e156a014b7b5728eb958240bcc6d643 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 17 Mar 2022 14:24:37 +0100 Subject: [PATCH 544/553] - Fix to describe auth-zone and other configuration at the local-zone configuration option, to allow for more broadly view of the options. --- doc/Changelog | 4 ++++ doc/unbound.conf.5.in | 12 +++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 8b885b83c..1ea3bc23a 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +17 March 2022: Wouter + - Fix to describe auth-zone and other configuration at the local-zone + configuration option, to allow for more broadly view of the options. + 16 March 2022: Wouter - Fix to ensure uniform handling of spaces and tabs when parsing RRs. diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 1899ae6f3..294cd23d8 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -1329,7 +1329,17 @@ are authoritative DNS answers. By default the zones are class IN. .IP If you need more complicated authoritative data, with referrals, wildcards, CNAME/DNAME support, or DNSSEC authoritative service, setup a stub\-zone for -it as detailed in the stub zone section below. +it as detailed in the stub zone section below. A stub\-zone can be used to +have unbound send queries to another server, an authoritative server, to +fetch the information. With a forward\-zone, unbound sends queries to a server +that is a recursive server to fetch the information. With an auth\-zone a +zone can be loaded from file and used, it can be used like a local\-zone +for users downstream, or the auth\-zone information can be used to fetch +information from when resolving like it is an upstream server. The +forward\-zone and auth\-zone options are described in their sections below. +If you want to perform filtering of the information that the users can fetch, +the local\-zone and local\-data statements allow for this, but also the +rpz functionality can be used, described in the RPZ section. .TP 10 \h'5'\fIdeny\fR Do not send an answer, drop the query. From c60bed8eef8962c6f7d8deb266d438ff77baaaf5 Mon Sep 17 00:00:00 2001 From: eaglegai Date: Fri, 18 Mar 2022 19:08:02 +0800 Subject: [PATCH 545/553] fix -q doesn't work when use with 'unbound-control stats_shm' Signed-off-by: eaglegai --- smallapp/unbound-control.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/smallapp/unbound-control.c b/smallapp/unbound-control.c index c7c38276f..b0835e3e1 100644 --- a/smallapp/unbound-control.c +++ b/smallapp/unbound-control.c @@ -444,7 +444,7 @@ static void do_stats_shm(struct config_file* cfg, struct ub_stats_info* stats, #endif /* HAVE_SHMGET */ /** print statistics from shm memory segment */ -static void print_stats_shm(const char* cfgfile) +static void print_stats_shm(const char* cfgfile, int quiet) { #ifdef HAVE_SHMGET struct config_file* cfg; @@ -474,8 +474,11 @@ static void print_stats_shm(const char* cfgfile) fatal_exit("shmat(%d): %s", id_arr, strerror(errno)); } - /* print the stats */ - do_stats_shm(cfg, stats, shm_stat); + + if (!quiet) { + /* print the stats */ + do_stats_shm(cfg, stats, shm_stat); + } /* shutdown */ shmdt(shm_stat); @@ -987,7 +990,7 @@ int main(int argc, char* argv[]) #endif } if(argc >= 1 && strcmp(argv[0], "stats_shm")==0) { - print_stats_shm(cfgfile); + print_stats_shm(cfgfile, quiet); return 0; } check_args_for_listcmd(argc, argv); From ee63ac8f9b83347fd1c783288df857bd1ef37b2c Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Fri, 18 Mar 2022 16:04:16 +0200 Subject: [PATCH 546/553] - Minor formatting. --- smallapp/unbound-control.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/smallapp/unbound-control.c b/smallapp/unbound-control.c index b0835e3e1..a22ad5433 100644 --- a/smallapp/unbound-control.c +++ b/smallapp/unbound-control.c @@ -475,7 +475,7 @@ static void print_stats_shm(const char* cfgfile, int quiet) } - if (!quiet) { + if(!quiet) { /* print the stats */ do_stats_shm(cfg, stats, shm_stat); } @@ -502,7 +502,7 @@ static void ssl_path_err(const char* s, const char *path) { unsigned long err; err = ERR_peek_error(); - if (ERR_GET_LIB(err) == ERR_LIB_SYS) { + if(ERR_GET_LIB(err) == ERR_LIB_SYS) { fprintf(stderr, "error: %s\n%s: %s\n", s, path, ERR_reason_error_string(err)); exit(1); @@ -544,11 +544,11 @@ setup_ctx(struct config_file* cfg) #endif if(!SSL_CTX_use_certificate_chain_file(ctx,c_cert)) ssl_path_err("Error setting up SSL_CTX client cert", c_cert); - if (!SSL_CTX_use_PrivateKey_file(ctx,c_key,SSL_FILETYPE_PEM)) + if(!SSL_CTX_use_PrivateKey_file(ctx,c_key,SSL_FILETYPE_PEM)) ssl_path_err("Error setting up SSL_CTX client key", c_key); - if (!SSL_CTX_check_private_key(ctx)) + if(!SSL_CTX_check_private_key(ctx)) ssl_err("Error setting up SSL_CTX client key"); - if (SSL_CTX_load_verify_locations(ctx, s_cert, NULL) != 1) + if(SSL_CTX_load_verify_locations(ctx, s_cert, NULL) != 1) ssl_path_err("Error setting up SSL_CTX verify, server cert", s_cert); SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, NULL); @@ -883,8 +883,9 @@ go_cmd(SSL* ssl, int fd, int quiet, int argc, char* argv[]) if(first_line && strncmp(buf, "error", 5) == 0) { printf("%s", buf); was_error = 1; - } else if (!quiet) + } else if(!quiet) { printf("%s", buf); + } first_line = 0; } From 722391baf163d09d299ad2467843da0e231b1c5e Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 23 Mar 2022 13:56:52 +0100 Subject: [PATCH 547/553] - Fix #651: [FR] Better logging for refused queries. --- daemon/acl_list.c | 35 +++++++++++++++++++++++++++++++++++ daemon/acl_list.h | 11 +++++++++++ daemon/worker.c | 32 ++++++++++++++++++++++---------- doc/Changelog | 3 +++ 4 files changed, 71 insertions(+), 10 deletions(-) diff --git a/daemon/acl_list.c b/daemon/acl_list.c index 84324575e..aecb3e0c6 100644 --- a/daemon/acl_list.c +++ b/daemon/acl_list.c @@ -487,3 +487,38 @@ acl_list_get_mem(struct acl_list* acl) if(!acl) return 0; return sizeof(*acl) + regional_get_mem(acl->region); } + +const char* acl_access_to_str(enum acl_access acl) +{ + switch(acl) { + case acl_deny: return "deny"; + case acl_refuse: return "refuse"; + case acl_deny_non_local: return "deny_non_local"; + case acl_refuse_non_local: return "refuse_non_local"; + case acl_allow: return "allow"; + case acl_allow_snoop: return "allow_snoop"; + case acl_allow_setrd: return "allow_setrd"; + default: break; + } + return "unknown"; +} + +void +log_acl_action(const char* action, struct sockaddr_storage* addr, + socklen_t addrlen, enum acl_access acl, struct acl_addr* acladdr) +{ + char a[128], n[128]; + uint16_t port; + addr_to_str(addr, addrlen, a, sizeof(a)); + port = ntohs(((struct sockaddr_in*)addr)->sin_port); + if(acladdr) { + addr_to_str(&acladdr->node.addr, acladdr->node.addrlen, + n, sizeof(n)); + verbose(VERB_ALGO, "%s query from %s port %d because of " + "%s/%d %s", action, a, (int)port, n, acladdr->node.net, + acl_access_to_str(acl)); + } else { + verbose(VERB_ALGO, "%s query from %s port %d", action, a, + (int)port); + } +} diff --git a/daemon/acl_list.h b/daemon/acl_list.h index 3a3b94bc5..c09e832a1 100644 --- a/daemon/acl_list.h +++ b/daemon/acl_list.h @@ -154,4 +154,15 @@ acl_addr_lookup(struct acl_list* acl, struct sockaddr_storage* addr, */ size_t acl_list_get_mem(struct acl_list* acl); +/* + * Get string for acl access specification + * @param acl: access type value + * @return string + */ +const char* acl_access_to_str(enum acl_access acl); + +/* log acl and addr for action */ +void log_acl_action(const char* action, struct sockaddr_storage* addr, + socklen_t addrlen, enum acl_access acl, struct acl_addr* acladdr); + #endif /* DAEMON_ACL_LIST_H */ diff --git a/daemon/worker.c b/daemon/worker.c index 863cd7a35..7209bc4cd 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -1013,17 +1013,25 @@ answer_notify(struct worker* w, struct query_info* qinfo, static int deny_refuse(struct comm_point* c, enum acl_access acl, enum acl_access deny, enum acl_access refuse, - struct worker* worker, struct comm_reply* repinfo) + struct worker* worker, struct comm_reply* repinfo, + struct acl_addr* acladdr) { if(acl == deny) { + if(verbosity >= VERB_ALGO) { + log_acl_action("dropped", &repinfo->addr, + repinfo->addrlen, acl, acladdr); + log_buf(VERB_ALGO, "dropped", c->buffer); + } comm_point_drop_reply(repinfo); if(worker->stats.extended) worker->stats.unwanted_queries++; return 0; } else if(acl == refuse) { - log_addr(VERB_ALGO, "refused query from", - &repinfo->addr, repinfo->addrlen); - log_buf(VERB_ALGO, "refuse", c->buffer); + if(verbosity >= VERB_ALGO) { + log_acl_action("refused", &repinfo->addr, + repinfo->addrlen, acl, acladdr); + log_buf(VERB_ALGO, "refuse", c->buffer); + } if(worker->stats.extended) worker->stats.unwanted_queries++; if(worker_check_request(c->buffer, worker) == -1) { @@ -1046,16 +1054,20 @@ deny_refuse(struct comm_point* c, enum acl_access acl, static int deny_refuse_all(struct comm_point* c, enum acl_access acl, - struct worker* worker, struct comm_reply* repinfo) + struct worker* worker, struct comm_reply* repinfo, + struct acl_addr* acladdr) { - return deny_refuse(c, acl, acl_deny, acl_refuse, worker, repinfo); + return deny_refuse(c, acl, acl_deny, acl_refuse, worker, repinfo, + acladdr); } static int deny_refuse_non_local(struct comm_point* c, enum acl_access acl, - struct worker* worker, struct comm_reply* repinfo) + struct worker* worker, struct comm_reply* repinfo, + struct acl_addr* acladdr) { - return deny_refuse(c, acl, acl_deny_non_local, acl_refuse_non_local, worker, repinfo); + return deny_refuse(c, acl, acl_deny_non_local, acl_refuse_non_local, + worker, repinfo, acladdr); } int @@ -1147,7 +1159,7 @@ worker_handle_request(struct comm_point* c, void* arg, int error, acladdr = acl_addr_lookup(worker->daemon->acl, &repinfo->addr, repinfo->addrlen); acl = acl_get_control(acladdr); - if((ret=deny_refuse_all(c, acl, worker, repinfo)) != -1) + if((ret=deny_refuse_all(c, acl, worker, repinfo, acladdr)) != -1) { if(ret == 1) goto send_reply; @@ -1367,7 +1379,7 @@ worker_handle_request(struct comm_point* c, void* arg, int error, /* We've looked in our local zones. If the answer isn't there, we * might need to bail out based on ACLs now. */ - if((ret=deny_refuse_non_local(c, acl, worker, repinfo)) != -1) + if((ret=deny_refuse_non_local(c, acl, worker, repinfo, acladdr)) != -1) { regional_free_all(worker->scratchpad); if(ret == 1) diff --git a/doc/Changelog b/doc/Changelog index 3d57479e7..ea01a80a9 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +23 March 2022: Wouter + - Fix #651: [FR] Better logging for refused queries. + 18 March 2022: George - Merge PR #648 from eaglegai: fix -q doesn't work when use with 'unbound-control stats_shm'. From 8f8a8a341a8525b1b6dc880cc3b70a3c7c03111c Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 25 Mar 2022 16:07:23 +0100 Subject: [PATCH 548/553] - Fix spelling error in comment in sldns_str2wire_svcparam_key_lookup. --- doc/Changelog | 3 +++ sldns/str2wire.c | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index ea01a80a9..9d2d2604e 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +25 March 2022: Wouter + - Fix spelling error in comment in sldns_str2wire_svcparam_key_lookup. + 23 March 2022: Wouter - Fix #651: [FR] Better logging for refused queries. diff --git a/sldns/str2wire.c b/sldns/str2wire.c index 5cfd3c585..3cfff4bde 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -1127,7 +1127,7 @@ sldns_str2wire_svcparam_key_lookup(const char *key, size_t key_len) if (!strncmp(key, "mandatory", sizeof("mandatory")-1)) return SVCB_KEY_MANDATORY; if (!strncmp(key, "echconfig", sizeof("echconfig")-1)) - return SVCB_KEY_ECH; /* allow "echconfig as well as "ech" */ + return SVCB_KEY_ECH; /* allow "echconfig" as well as "ech" */ break; case sizeof("alpn")-1: From e4ca71e85b571ea4327671165a01f609b14b1d77 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 8 Apr 2022 09:29:37 +0200 Subject: [PATCH 549/553] - Fix zonemd check to allow unsupported algorithms to load. If there are only unsupported algorithms, or unsupported schemes, and no failed or successful other ZONEMD records, or malformed or bad ZONEMD records, the unsupported records allow the zone load. --- doc/Changelog | 6 + services/authzone.c | 44 +++++- services/authzone.h | 3 + testcode/unitzonemd.c | 4 +- testdata/auth_zonemd_file_unknown.rpl | 184 ++++++++++++++++++++++++++ 5 files changed, 234 insertions(+), 7 deletions(-) create mode 100644 testdata/auth_zonemd_file_unknown.rpl diff --git a/doc/Changelog b/doc/Changelog index 9d2d2604e..eee54dfeb 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,9 @@ +8 April 2022: Wouter + - Fix zonemd check to allow unsupported algorithms to load. + If there are only unsupported algorithms, or unsupported schemes, + and no failed or successful other ZONEMD records, or malformed + or bad ZONEMD records, the unsupported records allow the zone load. + 25 March 2022: Wouter - Fix spelling error in comment in sldns_str2wire_svcparam_key_lookup. diff --git a/services/authzone.c b/services/authzone.c index b8ce8e73b..9b20c3a7b 100644 --- a/services/authzone.c +++ b/services/authzone.c @@ -1882,6 +1882,8 @@ static int auth_zone_zonemd_check_hash(struct auth_zone* z, struct regional* region = NULL; struct sldns_buffer* buf = NULL; uint32_t soa_serial = 0; + char* unsupported_reason = NULL; + int only_unsupported = 1; region = env->scratch; regional_free_all(region); buf = env->scratch_buffer; @@ -1911,6 +1913,7 @@ static int auth_zone_zonemd_check_hash(struct auth_zone* z, &hashalgo, &hash, &hashlen)) { /* malformed RR */ *reason = "ZONEMD rdata malformed"; + only_unsupported = 0; continue; } /* check for duplicates */ @@ -1920,25 +1923,49 @@ static int auth_zone_zonemd_check_hash(struct auth_zone* z, * is not allowed. */ *reason = "ZONEMD RRSet contains more than one RR " "with the same scheme and hash algorithm"; + only_unsupported = 0; continue; } regional_free_all(region); if(serial != soa_serial) { *reason = "ZONEMD serial is wrong"; + only_unsupported = 0; continue; } if(auth_zone_generate_zonemd_check(z, scheme, hashalgo, hash, hashlen, region, buf, reason)) { /* success */ + if(*reason) { + if(!unsupported_reason) + unsupported_reason = *reason; + /* continue to check for valid ZONEMD */ + if(verbosity >= VERB_ALGO) { + char zstr[255+1]; + dname_str(z->name, zstr); + verbose(VERB_ALGO, "auth-zone %s ZONEMD %d %d is unsupported: %s", zstr, (int)scheme, (int)hashalgo, *reason); + } + continue; + } + only_unsupported = 0; if(verbosity >= VERB_ALGO) { char zstr[255+1]; dname_str(z->name, zstr); - verbose(VERB_ALGO, "auth-zone %s ZONEMD hash is correct", zstr); + if(!reason) + verbose(VERB_ALGO, "auth-zone %s ZONEMD hash is correct", zstr); } return 1; } /* try next one */ } + /* have we seen no failures but only unsupported algo, + * and one unsupported algorithm, or more. */ + if(only_unsupported && unsupported_reason) { + /* only unsupported algorithms, with valid serial, not + * malformed. Did not see supported algorithms, failed or + * successful ones. */ + *reason = unsupported_reason; + return 1; + } /* fail, we may have reason */ if(!*reason) *reason = "no ZONEMD records found"; @@ -7659,13 +7686,16 @@ int auth_zone_generate_zonemd_check(struct auth_zone* z, int scheme, { uint8_t gen[512]; size_t genlen = 0; + *reason = NULL; if(!zonemd_hashalgo_supported(hashalgo)) { + /* allow it */ *reason = "unsupported algorithm"; - return 0; + return 1; } if(!zonemd_scheme_supported(scheme)) { + /* allow it */ *reason = "unsupported scheme"; - return 0; + return 1; } if(hashlen < 12) { /* the ZONEMD draft requires digests to fail if too small */ @@ -8030,9 +8060,13 @@ auth_zone_verify_zonemd_with_key(struct auth_zone* z, struct module_env* env, } /* success! log the success */ - auth_zone_log(z->name, VERB_ALGO, "ZONEMD verification successful"); + if(reason) + auth_zone_log(z->name, VERB_ALGO, "ZONEMD %s", reason); + else auth_zone_log(z->name, VERB_ALGO, "ZONEMD verification successful"); if(result) { - *result = strdup("ZONEMD verification successful"); + if(reason) + *result = strdup(reason); + else *result = strdup("ZONEMD verification successful"); if(!*result) log_err("out of memory"); } } diff --git a/services/authzone.h b/services/authzone.h index d24e569d3..07614ed82 100644 --- a/services/authzone.h +++ b/services/authzone.h @@ -747,6 +747,9 @@ int zonemd_scheme_supported(int scheme); * @param region: temp region for allocs during canonicalisation. * @param buf: temp buffer during canonicalisation. * @param reason: string returned with failure reason. + * If the hash cannot be checked, but it is allowed, for unknown + * algorithms, the routine returns success, and the reason is nonNULL, + * with the allowance reason. * @return false on failure. */ int auth_zone_generate_zonemd_check(struct auth_zone* z, int scheme, diff --git a/testcode/unitzonemd.c b/testcode/unitzonemd.c index 5caa68a10..23c9f7010 100644 --- a/testcode/unitzonemd.c +++ b/testcode/unitzonemd.c @@ -221,10 +221,10 @@ static void zonemd_check_test(void) unit_assert(result && reason == NULL); result = auth_zone_generate_zonemd_check(z, 241, hashalgo, hash, hashlen, region, buf, &reason); - unit_assert(!result && strcmp(reason, "unsupported scheme")==0); + unit_assert(result && strcmp(reason, "unsupported scheme")==0); result = auth_zone_generate_zonemd_check(z, scheme, 242, hash, hashlen, region, buf, &reason); - unit_assert(!result && strcmp(reason, "unsupported algorithm")==0); + unit_assert(result && strcmp(reason, "unsupported algorithm")==0); result = auth_zone_generate_zonemd_check(z, scheme, hashalgo, hash, 2, region, buf, &reason); unit_assert(!result && strcmp(reason, "digest length too small, less than 12")==0); diff --git a/testdata/auth_zonemd_file_unknown.rpl b/testdata/auth_zonemd_file_unknown.rpl new file mode 100644 index 000000000..f5c5f276e --- /dev/null +++ b/testdata/auth_zonemd_file_unknown.rpl @@ -0,0 +1,184 @@ +; config options +server: + target-fetch-policy: "0 0 0 0 0" + +auth-zone: + name: "example.com." + ## zonefile (or none). + ## zonefile: "example.com.zone" + ## master by IP address or hostname + ## can list multiple masters, each on one line. + ## master: + ## url for http fetch + ## url: + ## queries from downstream clients get authoritative answers. + ## for-downstream: yes + for-downstream: no + ## queries are used to fetch authoritative answers from this zone, + ## instead of unbound itself sending queries there. + ## for-upstream: yes + for-upstream: yes + ## on failures with for-upstream, fallback to sending queries to + ## the authority servers + ## fallback-enabled: no + zonemd-check: yes + + ## this line generates zonefile: \n"/tmp/xxx.example.com"\n + zonefile: +TEMPFILE_NAME example.com + ## this is the inline file /tmp/xxx.example.com + ## the tempfiles are deleted when the testrun is over. +TEMPFILE_CONTENTS example.com +example.com. IN SOA ns.example.com. hostmaster.example.com. 200154054 28800 7200 604800 3600 +example.com. IN NS ns.example.com. +example.com. IN ZONEMD 200154054 1 22 EFAA5B78B38AB1C45DE57B8167BCCE906451D0E72118E1F5E80B5F0C3CF04BFFC65D53C011185528EAD439D6F3A02F511961E090E5E4E0DFA013BD276D728B22 +example.com. IN ZONEMD 200154054 21 2 EFAA5B78B38AB1C45DE57B8167BCCE906451D0E72118E1F5E80B5F0C3CF04BFFC65D53C011185528EAD439D6F3A02F511961E090E5E4E0DFA013BD276D728B22 +www.example.com. IN A 127.0.0.1 +ns.example.com. IN A 127.0.0.1 +bar.example.com. IN A 1.2.3.4 +ding.example.com. IN A 1.2.3.4 +foo.example.com. IN A 1.2.3.4 +TEMPFILE_END + +stub-zone: + name: "." + stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. +CONFIG_END + +SCENARIO_BEGIN Test authority zone with ZONEMD with unknown algo from zonefile + +; K.ROOT-SERVERS.NET. +RANGE_BEGIN 0 100 + ADDRESS 193.0.14.129 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +. IN NS +SECTION ANSWER +. IN NS K.ROOT-SERVERS.NET. +SECTION ADDITIONAL +K.ROOT-SERVERS.NET. IN A 193.0.14.129 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION AUTHORITY +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END +RANGE_END + +; a.gtld-servers.net. +RANGE_BEGIN 0 100 + ADDRESS 192.5.6.30 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +com. IN NS +SECTION ANSWER +com. IN NS a.gtld-servers.net. +SECTION ADDITIONAL +a.gtld-servers.net. IN A 192.5.6.30 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode subdomain +ADJUST copy_id copy_query +REPLY QR NOERROR +SECTION QUESTION +example.com. IN NS +SECTION AUTHORITY +example.com. IN NS ns.example.com. +SECTION ADDITIONAL +ns.example.com. IN A 1.2.3.44 +ENTRY_END +RANGE_END + +; ns.example.net. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.44 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example.net. IN NS +SECTION ANSWER +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +ns.example.net. IN A 1.2.3.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN A +SECTION ANSWER +ns.example.net. IN A 1.2.3.44 +SECTION AUTHORITY +example.net. IN NS ns.example.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +ns.example.net. IN AAAA +SECTION AUTHORITY +example.net. IN NS ns.example.net. +SECTION ADDITIONAL +www.example.net. IN A 1.2.3.44 +ENTRY_END + +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.net. +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 10.20.30.40 +ENTRY_END +RANGE_END + +STEP 1 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +www.example.com. IN A +ENTRY_END + +; recursion happens here. +STEP 20 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +www.example.com. IN A +SECTION ANSWER +www.example.com. IN A 127.0.0.1 +ENTRY_END + +SCENARIO_END From 730a03e9bd9daa39b8028e7ec5cc64ea2b0b5df6 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 8 Apr 2022 09:36:01 +0200 Subject: [PATCH 550/553] - Fix zonemd unsupported algo check. --- doc/Changelog | 1 + services/authzone.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index eee54dfeb..ba9926210 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -3,6 +3,7 @@ If there are only unsupported algorithms, or unsupported schemes, and no failed or successful other ZONEMD records, or malformed or bad ZONEMD records, the unsupported records allow the zone load. + - Fix zonemd unsupported algo check. 25 March 2022: Wouter - Fix spelling error in comment in sldns_str2wire_svcparam_key_lookup. diff --git a/services/authzone.c b/services/authzone.c index 9b20c3a7b..c39ce9763 100644 --- a/services/authzone.c +++ b/services/authzone.c @@ -1946,7 +1946,6 @@ static int auth_zone_zonemd_check_hash(struct auth_zone* z, } continue; } - only_unsupported = 0; if(verbosity >= VERB_ALGO) { char zstr[255+1]; dname_str(z->name, zstr); @@ -1955,6 +1954,7 @@ static int auth_zone_zonemd_check_hash(struct auth_zone* z, } return 1; } + only_unsupported = 0; /* try next one */ } /* have we seen no failures but only unsupported algo, From 8f2847ba6954bbd4527daf9cbd1f9093389e2859 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 8 Apr 2022 10:54:57 +0200 Subject: [PATCH 551/553] - Fix zonemd unsupported algo check reason to not copy to next record, and check for success for debug printout. --- doc/Changelog | 2 ++ services/authzone.c | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index ba9926210..2319920e4 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -4,6 +4,8 @@ and no failed or successful other ZONEMD records, or malformed or bad ZONEMD records, the unsupported records allow the zone load. - Fix zonemd unsupported algo check. + - Fix zonemd unsupported algo check reason to not copy to next record, + and check for success for debug printout. 25 March 2022: Wouter - Fix spelling error in comment in sldns_str2wire_svcparam_key_lookup. diff --git a/services/authzone.c b/services/authzone.c index c39ce9763..b10d45859 100644 --- a/services/authzone.c +++ b/services/authzone.c @@ -1938,6 +1938,7 @@ static int auth_zone_zonemd_check_hash(struct auth_zone* z, if(*reason) { if(!unsupported_reason) unsupported_reason = *reason; + *reason = NULL; /* continue to check for valid ZONEMD */ if(verbosity >= VERB_ALGO) { char zstr[255+1]; @@ -1949,7 +1950,7 @@ static int auth_zone_zonemd_check_hash(struct auth_zone* z, if(verbosity >= VERB_ALGO) { char zstr[255+1]; dname_str(z->name, zstr); - if(!reason) + if(!*reason) verbose(VERB_ALGO, "auth-zone %s ZONEMD hash is correct", zstr); } return 1; From d02e83ae2bd620b8aa77f5d6013061938215e41c Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 8 Apr 2022 11:10:11 +0200 Subject: [PATCH 552/553] - Fix zonemd unsupported algo check to print unsupported reason before zeroing it. --- doc/Changelog | 2 ++ services/authzone.c | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 2319920e4..941246813 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -6,6 +6,8 @@ - Fix zonemd unsupported algo check. - Fix zonemd unsupported algo check reason to not copy to next record, and check for success for debug printout. + - Fix zonemd unsupported algo check to print unsupported reason before + zeroing it. 25 March 2022: Wouter - Fix spelling error in comment in sldns_str2wire_svcparam_key_lookup. diff --git a/services/authzone.c b/services/authzone.c index b10d45859..e25c5bd84 100644 --- a/services/authzone.c +++ b/services/authzone.c @@ -1938,13 +1938,13 @@ static int auth_zone_zonemd_check_hash(struct auth_zone* z, if(*reason) { if(!unsupported_reason) unsupported_reason = *reason; - *reason = NULL; /* continue to check for valid ZONEMD */ if(verbosity >= VERB_ALGO) { char zstr[255+1]; dname_str(z->name, zstr); verbose(VERB_ALGO, "auth-zone %s ZONEMD %d %d is unsupported: %s", zstr, (int)scheme, (int)hashalgo, *reason); } + *reason = NULL; continue; } if(verbosity >= VERB_ALGO) { From 1289c53c1ad698e51a7adf0271d63af992d78a33 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 8 Apr 2022 11:19:40 +0200 Subject: [PATCH 553/553] - Fix zonemd unsupported algo check to set reason to NULL before the check routine, but after malformed checks, to get the correct NULL output when the digest matches. --- doc/Changelog | 3 +++ services/authzone.c | 1 + 2 files changed, 4 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 941246813..1fdae1fde 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -8,6 +8,9 @@ and check for success for debug printout. - Fix zonemd unsupported algo check to print unsupported reason before zeroing it. + - Fix zonemd unsupported algo check to set reason to NULL before the + check routine, but after malformed checks, to get the correct NULL + output when the digest matches. 25 March 2022: Wouter - Fix spelling error in comment in sldns_str2wire_svcparam_key_lookup. diff --git a/services/authzone.c b/services/authzone.c index e25c5bd84..d3e93a62a 100644 --- a/services/authzone.c +++ b/services/authzone.c @@ -1932,6 +1932,7 @@ static int auth_zone_zonemd_check_hash(struct auth_zone* z, only_unsupported = 0; continue; } + *reason = NULL; if(auth_zone_generate_zonemd_check(z, scheme, hashalgo, hash, hashlen, region, buf, reason)) { /* success */