diff options
author | Dag-Erling Smørgrav <des@FreeBSD.org> | 2018-05-12 11:55:17 +0000 |
---|---|---|
committer | Dag-Erling Smørgrav <des@FreeBSD.org> | 2018-05-12 11:55:17 +0000 |
commit | a6c5280ea59f940be13fd6eb0f94ab8360d3d6c9 (patch) | |
tree | cbe088761a83cf2025bbdf36e1574f38c3e988f5 /util | |
parent | 8c2647a7dc721c8e5349bd194b8e8e178412057e (diff) | |
download | src-a6c5280ea59f940be13fd6eb0f94ab8360d3d6c9.tar.gz src-a6c5280ea59f940be13fd6eb0f94ab8360d3d6c9.zip |
Vendor import of Unbound 1.6.6.vendor/unbound/1.6.6
Notes
Notes:
svn path=/vendor/unbound/dist/; revision=333541
svn path=/vendor/unbound/1.6.6/; revision=333542; tag=vendor/unbound/1.6.6
Diffstat (limited to 'util')
-rw-r--r-- | util/config_file.c | 22 | ||||
-rw-r--r-- | util/config_file.h | 12 | ||||
-rw-r--r-- | util/configlexer.c | 4552 | ||||
-rw-r--r-- | util/configlexer.lex | 7 | ||||
-rw-r--r-- | util/configparser.c | 2235 | ||||
-rw-r--r-- | util/configparser.h | 36 | ||||
-rw-r--r-- | util/configparser.y | 69 | ||||
-rw-r--r-- | util/data/msgreply.c | 4 | ||||
-rw-r--r-- | util/fptr_wlist.c | 12 | ||||
-rw-r--r-- | util/iana_ports.inc | 3 | ||||
-rw-r--r-- | util/net_help.c | 111 | ||||
-rw-r--r-- | util/net_help.h | 13 | ||||
-rw-r--r-- | util/netevent.c | 7 | ||||
-rw-r--r-- | util/shm_side/shm_main.c | 7 | ||||
-rw-r--r-- | util/storage/lookup3.c | 14 |
15 files changed, 3758 insertions, 3346 deletions
diff --git a/util/config_file.c b/util/config_file.c index d0fdb2daaa25..796c1a61f269 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -282,6 +282,8 @@ config_create(void) cfg->dnscrypt_provider = NULL; cfg->dnscrypt_provider_cert = NULL; cfg->dnscrypt_secret_key = NULL; + cfg->dnscrypt_shared_secret_cache_size = 4*1024*1024; + cfg->dnscrypt_shared_secret_cache_slabs = 4; #ifdef USE_IPSECMOD cfg->ipsecmod_enabled = 1; cfg->ipsecmod_ignore_bogus = 0; @@ -290,6 +292,10 @@ config_create(void) cfg->ipsecmod_whitelist = NULL; cfg->ipsecmod_strict = 0; #endif +#ifdef USE_CACHEDB + cfg->cachedb_backend = NULL; + cfg->cachedb_secret = NULL; +#endif return cfg; error_exit: config_delete(cfg); @@ -561,6 +567,10 @@ int config_set_option(struct config_file* cfg, const char* opt, else S_STR("dnscrypt-provider:", dnscrypt_provider) else S_STRLIST("dnscrypt-provider-cert:", dnscrypt_provider_cert) else S_STRLIST("dnscrypt-secret-key:", dnscrypt_secret_key) + else S_MEMSIZE("dnscrypt-shared-secret-cache-size:", + dnscrypt_shared_secret_cache_size) + else S_POW2("dnscrypt-shared-secret-cache-slabs:", + dnscrypt_shared_secret_cache_slabs) #endif else if(strcmp(opt, "ip-ratelimit:") == 0) { IS_NUMBER_OR_ZERO; cfg->ip_ratelimit = atoi(val); @@ -922,6 +932,10 @@ config_get_option(struct config_file* cfg, const char* opt, else O_STR(opt, "dnscrypt-provider", dnscrypt_provider) else O_LST(opt, "dnscrypt-provider-cert", dnscrypt_provider_cert) else O_LST(opt, "dnscrypt-secret-key", dnscrypt_secret_key) + else O_MEM(opt, "dnscrypt-shared-secret-cache-size", + dnscrypt_shared_secret_cache_size) + else O_DEC(opt, "dnscrypt-shared-secret-cache-slabs", + dnscrypt_shared_secret_cache_slabs) #endif else O_YNO(opt, "unblock-lan-zones", unblock_lan_zones) else O_YNO(opt, "insecure-lan-zones", insecure_lan_zones) @@ -958,6 +972,10 @@ config_get_option(struct config_file* cfg, const char* opt, else O_LST(opt, "ipsecmod-whitelist", ipsecmod_whitelist) else O_YNO(opt, "ipsecmod-strict", ipsecmod_strict) #endif +#ifdef USE_CACHEDB + else O_STR(opt, "backend", cachedb_backend) + else O_STR(opt, "secret-seed", cachedb_secret) +#endif /* not here: * outgoing-permit, outgoing-avoid - have list of ports * local-zone - zones and nodefault variables @@ -1259,6 +1277,10 @@ config_delete(struct config_file* cfg) free(cfg->ipsecmod_hook); config_delstrlist(cfg->ipsecmod_whitelist); #endif +#ifdef USE_CACHEDB + free(cfg->cachedb_backend); + free(cfg->cachedb_secret); +#endif free(cfg); } diff --git a/util/config_file.h b/util/config_file.h index bb7a292050b4..fdc48111e30a 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -464,6 +464,10 @@ struct config_file { struct config_strlist* dnscrypt_secret_key; /** dnscrypt provider certs 1.cert */ struct config_strlist* dnscrypt_provider_cert; + /** memory size in bytes for dnscrypt shared secrets cache */ + size_t dnscrypt_shared_secret_cache_size; + /** number of slabs for dnscrypt shared secrets cache */ + size_t dnscrypt_shared_secret_cache_slabs; /** IPsec module */ #ifdef USE_IPSECMOD @@ -480,6 +484,14 @@ struct config_file { /** false to proceed even when ipsecmod_hook fails */ int ipsecmod_strict; #endif + + /* cachedb module */ +#ifdef USE_CACHEDB + /** backend DB name */ + char* cachedb_backend; + /** secret seed for hash key calculation */ + char* cachedb_secret; +#endif }; /** from cfg username, after daemonise setup performed */ diff --git a/util/configlexer.c b/util/configlexer.c index ba4128c654ba..ee5428e8906c 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -363,8 +363,8 @@ static void yynoreturn yy_fatal_error (yyconst char* msg ); *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 229 -#define YY_END_OF_BUFFER 230 +#define YY_NUM_RULES 234 +#define YY_END_OF_BUFFER 235 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -372,254 +372,259 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[2238] = +static yyconst flex_int16_t yy_accept[2288] = { 0, - 1, 1, 211, 211, 215, 215, 219, 219, 223, 223, - 1, 1, 230, 227, 1, 209, 209, 228, 2, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 228, - 211, 212, 212, 213, 228, 215, 216, 216, 217, 228, - 222, 219, 220, 220, 221, 228, 223, 224, 224, 225, - 228, 226, 210, 2, 214, 226, 228, 227, 0, 1, - 2, 2, 2, 2, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 211, 0, 215, 0, 222, 0, 219, 223, 0, 226, - 0, 2, 2, 226, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 226, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - - 227, 227, 226, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 77, - 227, 227, 227, 227, 227, 227, 8, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - - 227, 227, 227, 227, 227, 227, 227, 88, 226, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 226, 227, 227, 227, 227, 227, 37, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 170, 227, 14, 15, 227, 18, 17, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 156, - - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 3, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 226, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 218, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 40, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 41, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 145, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 20, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 103, 227, 218, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 197, 227, 227, - - 227, 227, 227, 227, 227, 227, 227, 227, 227, 120, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 102, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 75, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 25, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 38, - - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 39, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 121, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 28, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - - 227, 227, 227, 227, 227, 227, 227, 227, 227, 185, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 32, 227, 33, 227, 227, 227, 78, 227, 79, 227, - 227, 76, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 7, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 163, 227, 227, 227, 227, 105, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - - 227, 227, 227, 227, 227, 227, 227, 227, 227, 29, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 137, 227, 136, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 16, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 42, 227, 227, 227, - 227, 227, 227, 144, 227, 227, 227, 227, 81, 80, - 227, 227, 227, 227, 227, 227, 227, 227, 131, 227, - 227, 227, 227, 227, 227, 227, 227, 89, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - - 227, 227, 227, 60, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 64, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 36, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 134, 135, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 6, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 195, 227, 227, 227, 227, - - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 26, 227, 227, 227, 227, - 227, 227, 227, 227, 127, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 149, 227, 128, 227, 227, - 161, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 27, 227, 227, 227, 227, - 84, 227, 85, 227, 83, 227, 227, 227, 227, 227, - 227, 227, 227, 100, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 184, 227, 227, 227, 227, - 227, 227, 227, 227, 129, 227, 227, 227, 227, 227, - - 132, 227, 227, 160, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 74, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 34, 227, 227, 22, - 227, 227, 227, 227, 19, 227, 110, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 49, 51, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 199, 227, 227, 171, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 86, 227, 227, 227, 227, 227, 227, 227, 99, - - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 205, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 104, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 155, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 119, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 115, 227, 122, 227, 227, 227, 227, 227, - 92, 227, 227, 70, 227, 227, 227, 227, 147, 227, - 227, 227, 227, 227, 162, 227, 227, 227, 227, 227, - - 227, 227, 227, 227, 227, 176, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 118, - 227, 227, 227, 227, 227, 52, 53, 227, 227, 227, - 227, 227, 35, 227, 227, 227, 227, 227, 59, 123, - 227, 138, 227, 164, 133, 227, 227, 227, 45, 227, - 125, 227, 227, 227, 227, 227, 9, 227, 227, 227, - 73, 227, 227, 227, 227, 189, 227, 146, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - - 227, 227, 227, 227, 227, 227, 106, 198, 227, 227, - 175, 227, 227, 227, 227, 227, 227, 227, 227, 157, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 208, 227, 124, 227, 227, 227, 44, - 46, 227, 227, 227, 227, 227, 227, 227, 72, 227, - 227, 227, 227, 187, 227, 194, 227, 227, 227, 227, - 227, 151, 23, 24, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 69, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 153, - - 150, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 43, 227, 227, 227, 227, 227, 227, 227, - 227, 101, 13, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 203, 227, 206, 227, 227, 227, 227, 227, - 227, 12, 227, 227, 21, 227, 227, 227, 193, 227, - 196, 47, 227, 159, 227, 152, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 114, - 113, 227, 227, 227, 227, 227, 227, 227, 154, 148, - 227, 227, 200, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - - 227, 227, 227, 54, 227, 227, 227, 188, 227, 227, - 227, 227, 227, 158, 227, 227, 227, 227, 227, 227, - 227, 227, 48, 227, 227, 227, 82, 227, 107, 227, - 109, 139, 227, 227, 227, 112, 227, 227, 165, 227, - 227, 227, 227, 227, 94, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 172, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 140, 227, - 227, 186, 227, 207, 227, 227, 227, 30, 227, 227, - 227, 227, 4, 227, 227, 93, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 168, 227, 227, 227, - - 227, 227, 227, 201, 227, 227, 227, 227, 227, 174, - 227, 227, 143, 227, 227, 227, 227, 227, 227, 227, - 227, 57, 227, 31, 192, 227, 169, 227, 227, 11, - 227, 227, 227, 227, 227, 227, 141, 61, 227, 227, - 227, 227, 117, 227, 227, 227, 227, 227, 96, 227, - 227, 227, 227, 227, 227, 227, 173, 90, 227, 87, - 227, 227, 227, 63, 67, 62, 227, 55, 227, 227, - 227, 10, 227, 227, 227, 190, 227, 227, 227, 116, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 68, 66, 227, 56, 204, - - 227, 227, 227, 130, 227, 227, 142, 227, 227, 227, - 227, 227, 108, 50, 227, 227, 202, 227, 227, 227, - 227, 227, 227, 91, 65, 97, 98, 58, 227, 191, - 111, 227, 227, 227, 167, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 71, 227, 166, 227, - 183, 227, 227, 227, 227, 227, 227, 5, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 95, 227, 227, 227, 227, - 227, 227, 126, 227, 227, 227, 227, 227, 227, 227, - - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 179, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 177, 227, 180, 181, 227, - 227, 227, 227, 227, 178, 182, 0 + 1, 1, 216, 216, 220, 220, 224, 224, 228, 228, + 1, 1, 235, 232, 1, 214, 214, 233, 2, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 233, 216, 217, 217, 218, 233, 220, 221, 221, 222, + 233, 227, 224, 225, 225, 226, 233, 228, 229, 229, + 230, 233, 231, 215, 2, 219, 231, 233, 232, 0, + 1, 2, 2, 2, 2, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 216, 0, 220, 0, 227, 0, 224, 228, + 0, 231, 0, 2, 2, 231, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 231, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + + 232, 232, 232, 232, 232, 232, 232, 232, 231, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 77, 232, 232, 232, + 232, 232, 232, 8, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 88, 231, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 231, 232, 232, 232, 232, 232, + 232, 232, 37, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 170, 232, 14, 15, 232, + 18, 17, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 156, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 3, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 231, 232, 232, 232, 212, 232, 232, 211, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + + 232, 232, 232, 232, 232, 223, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 40, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 41, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 145, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 20, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 103, + 232, 223, 232, 232, 232, 232, 232, 232, 232, 232, + + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 197, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 120, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 102, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 75, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 25, 232, + + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 38, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 39, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 121, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 28, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 185, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 32, + 232, 33, 232, 232, 232, 78, 232, 79, 232, 232, + 76, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 7, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 163, 232, 232, 232, 232, 105, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 29, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 137, 232, 136, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 16, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 42, 232, 232, 232, + 232, 232, 232, 232, 144, 232, 232, 232, 232, 81, + 80, 232, 232, 232, 232, 232, 232, 232, 232, 131, + + 232, 232, 232, 232, 232, 232, 232, 232, 89, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 60, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 64, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 36, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 134, 135, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 6, 232, + + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 195, 232, 232, + 213, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 26, 232, + 232, 232, 232, 232, 232, 232, 232, 127, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 149, 232, + 128, 232, 232, 161, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 27, + 232, 232, 232, 232, 84, 232, 85, 232, 83, 232, + 232, 232, 232, 232, 232, 232, 232, 100, 232, 232, + + 232, 232, 232, 232, 232, 232, 232, 232, 232, 184, + 232, 232, 232, 232, 232, 232, 232, 232, 129, 232, + 232, 232, 232, 232, 132, 232, 232, 160, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 74, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 34, 232, 232, 22, 232, 232, 232, 232, 19, 232, + 110, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 49, 51, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 199, 232, + + 232, 232, 171, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 86, 232, 232, 232, + 232, 232, 232, 232, 99, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 207, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 104, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 155, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 119, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 115, 232, 122, + + 232, 232, 232, 232, 232, 92, 232, 232, 70, 232, + 232, 232, 232, 147, 232, 232, 232, 232, 232, 162, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 176, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 118, 232, 232, 232, 232, + 232, 52, 53, 232, 232, 232, 232, 232, 35, 232, + 232, 232, 232, 232, 59, 123, 232, 138, 232, 164, + 133, 232, 232, 232, 45, 232, 125, 232, 232, 232, + 232, 232, 9, 232, 232, 232, 73, 232, 232, 232, + 232, 189, 232, 146, 232, 232, 232, 232, 232, 232, + + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 106, 198, 232, 232, 232, 175, 232, 232, + 232, 232, 232, 232, 232, 232, 157, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 210, 232, 124, 232, 232, 232, 44, 46, 232, 232, + 232, 232, 232, 232, 232, 72, 232, 232, 232, 232, + 187, 232, 194, 232, 232, 232, 232, 232, 151, 23, + + 24, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 69, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 153, 150, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 43, 232, 232, 232, 232, 232, 232, 232, 232, 101, + 13, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 205, 232, 208, 232, 232, 232, 232, 232, 232, 12, + 232, 232, 21, 232, 232, 232, 193, 232, 196, 47, + 232, 159, 232, 152, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 114, 113, 232, + + 232, 232, 232, 232, 232, 232, 154, 148, 232, 232, + 200, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 54, 232, 232, 232, 188, 232, 232, 232, + 232, 232, 158, 232, 232, 232, 232, 232, 232, 232, + 232, 48, 232, 232, 232, 82, 232, 107, 232, 109, + 139, 232, 232, 232, 112, 232, 232, 165, 232, 232, + 232, 232, 232, 94, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 172, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 140, 232, + + 232, 186, 232, 209, 232, 232, 232, 30, 232, 232, + 232, 232, 4, 232, 232, 93, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 168, 232, 232, 232, + 232, 232, 232, 201, 232, 232, 232, 232, 232, 232, + 174, 232, 232, 143, 232, 232, 232, 232, 232, 232, + 232, 232, 57, 232, 31, 192, 232, 169, 232, 232, + 11, 232, 232, 232, 232, 232, 232, 141, 61, 232, + 232, 232, 232, 117, 232, 232, 232, 232, 232, 96, + 232, 232, 232, 232, 232, 232, 232, 232, 173, 90, + 232, 87, 232, 232, 232, 63, 67, 62, 232, 55, + + 232, 232, 232, 10, 232, 232, 232, 190, 232, 232, + 232, 116, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 68, 66, + 232, 56, 206, 232, 232, 232, 130, 232, 232, 142, + 232, 232, 232, 232, 232, 108, 50, 232, 232, 202, + 232, 232, 232, 232, 232, 232, 232, 91, 65, 97, + 98, 58, 232, 191, 111, 232, 232, 232, 167, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 71, 232, 166, 232, 183, 232, 232, 232, + + 232, 232, 232, 232, 5, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 95, 232, 232, 232, 232, 232, + 232, 232, 126, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 232, 179, 232, + 232, 232, 232, 232, 203, 232, 232, 232, 232, 232, + 232, 204, 232, 232, 232, 177, 232, 180, 181, 232, + 232, 232, 232, 232, 178, 182, 0 } ; static yyconst YY_CHAR yy_ec[256] = @@ -665,1226 +670,1259 @@ static yyconst YY_CHAR yy_meta[67] = 1, 1, 1, 1, 1, 1 } ; -static yyconst flex_uint16_t yy_base[2252] = +static yyconst flex_uint16_t yy_base[2302] = { 0, 0, 0, 64, 67, 70, 72, 78, 84, 89, 92, - 131, 137, 420, 366, 96, 6399, 6399, 6399, 109, 111, - 142, 180, 86, 133, 138, 172, 50, 151, 91, 181, - 197, 124, 241, 187, 225, 289, 233, 228, 253, 307, - 362, 6399, 6399, 6399, 95, 359, 6399, 6399, 6399, 102, - 326, 355, 6399, 6399, 6399, 311, 245, 6399, 6399, 6399, - 116, 221, 6399, 321, 6399, 265, 328, 212, 334, 160, - 0, 338, 0, 0, 141, 206, 184, 330, 322, 255, - 323, 335, 324, 222, 268, 350, 325, 334, 344, 357, - 358, 352, 367, 364, 389, 385, 369, 393, 394, 214, - - 373, 402, 128, 400, 403, 419, 414, 399, 435, 420, - 443, 422, 449, 431, 441, 178, 436, 453, 459, 416, - 461, 463, 456, 469, 263, 487, 488, 480, 477, 497, - 170, 284, 164, 241, 160, 514, 174, 85, 367, 77, - 534, 541, 0, 514, 504, 518, 512, 513, 515, 523, - 542, 526, 540, 556, 550, 551, 548, 560, 604, 561, - 539, 559, 565, 571, 568, 588, 582, 585, 590, 583, - 606, 609, 636, 617, 599, 623, 576, 633, 652, 621, - 644, 638, 635, 650, 648, 662, 660, 657, 666, 668, - 684, 651, 683, 679, 669, 687, 682, 685, 699, 703, - - 686, 721, 709, 725, 713, 720, 716, 726, 718, 712, - 740, 743, 747, 744, 735, 745, 750, 748, 749, 754, - 770, 751, 765, 762, 768, 783, 773, 784, 792, 800, - 804, 781, 802, 811, 789, 807, 810, 816, 806, 809, - 821, 828, 823, 836, 849, 825, 838, 832, 833, 857, - 851, 843, 860, 848, 868, 859, 871, 855, 862, 876, - 878, 891, 883, 894, 886, 895, 926, 676, 913, 903, - 910, 905, 922, 912, 939, 932, 930, 941, 936, 934, - 947, 956, 949, 970, 959, 973, 974, 953, 966, 981, - 975, 983, 986, 996, 1003, 1005, 1017, 1008, 1062, 1006, - - 1015, 1055, 1004, 1010, 1012, 1033, 1043, 1034, 1039, 1048, - 1052, 1066, 1058, 1045, 1063, 1075, 1082, 1093, 1072, 1090, - 1102, 1113, 1095, 1100, 1103, 1104, 1123, 1117, 1122, 1110, - 1124, 1147, 1127, 1130, 1154, 1150, 1137, 1139, 1155, 1166, - 1168, 1151, 1174, 1163, 1179, 1178, 1188, 1152, 1195, 1183, - 1187, 1198, 1196, 1197, 1213, 1211, 1215, 1200, 1227, 6399, - 1229, 1216, 1224, 1236, 1226, 1238, 6399, 1240, 1241, 1235, - 1257, 1262, 1264, 1252, 1267, 1279, 1277, 1283, 1256, 1276, - 1268, 1265, 1278, 1284, 1295, 1296, 1297, 1343, 1294, 1306, - 1302, 1341, 1327, 1311, 1333, 1315, 1336, 1305, 1338, 1357, - - 1329, 1352, 1361, 1371, 1363, 1368, 1375, 6399, 1387, 1358, - 1385, 1376, 1379, 1396, 1400, 1360, 1393, 1416, 1401, 1412, - 1402, 1420, 1419, 1414, 1410, 1450, 1421, 1435, 1436, 1443, - 1451, 1454, 1460, 1437, 1461, 1440, 1448, 1464, 1470, 1465, - 1453, 1467, 1462, 1478, 1474, 1476, 1499, 1486, 1509, 1494, - 1495, 1503, 1501, 1505, 1489, 1514, 1516, 1529, 1513, 1539, - 1532, 1536, 1546, 1543, 1537, 1542, 1530, 1556, 1558, 1564, - 1560, 1550, 1570, 1563, 1569, 1577, 1583, 1588, 1603, 1587, - 1589, 1604, 1590, 1596, 1615, 1595, 1614, 1626, 1611, 1610, - 1622, 1621, 1623, 1629, 1636, 1638, 1639, 1651, 1634, 1649, - - 1650, 1652, 1658, 1663, 1653, 1656, 1686, 1665, 1677, 1684, - 1678, 1674, 1690, 1699, 1692, 1700, 1704, 1705, 1711, 1701, - 1713, 1698, 1714, 1737, 1740, 1741, 1725, 1750, 1735, 6399, - 1728, 1753, 1734, 1756, 1763, 1739, 1758, 1768, 1761, 1764, - 1772, 1815, 6399, 1767, 6399, 6399, 1781, 6399, 6399, 1787, - 1795, 1808, 1803, 1816, 1770, 1864, 1806, 1805, 1818, 1788, - 1843, 1821, 1822, 1851, 1835, 1857, 1854, 1869, 1862, 1873, - 1878, 1861, 1870, 1884, 1887, 1900, 1911, 1898, 1901, 1842, - 1907, 1916, 1918, 1917, 1925, 1928, 1923, 1924, 1929, 1933, - 1936, 1942, 1951, 1940, 1961, 1953, 1957, 1971, 1956, 6399, - - 1963, 1964, 1967, 1974, 1968, 1976, 1978, 1987, 1983, 2005, - 6399, 2009, 2012, 1992, 2010, 1997, 2001, 1995, 2006, 2020, - 2023, 2028, 2022, 2042, 2040, 2043, 2053, 2031, 2044, 2047, - 2035, 2065, 2062, 2056, 2070, 2067, 2060, 2076, 2068, 2093, - 2080, 2087, 2106, 2085, 2110, 2095, 2111, 2101, 2114, 2102, - 2107, 2112, 2115, 2103, 2160, 2145, 2143, 2137, 2130, 2157, - 2141, 2162, 2164, 2159, 2166, 2173, 2170, 2194, 2190, 2187, - 2189, 2188, 2200, 2216, 2213, 75, 2243, 2207, 2215, 2204, - 2211, 2229, 2227, 2231, 2234, 2233, 2236, 2241, 2260, 6399, - 2240, 2250, 2246, 2259, 2279, 2276, 2266, 2274, 2275, 2278, - - 2293, 2286, 2271, 2292, 2280, 2301, 2289, 2305, 2316, 2323, - 6399, 2312, 2310, 2313, 2318, 2330, 2339, 2341, 2338, 2348, - 2328, 2321, 6399, 2343, 2369, 2350, 2360, 2353, 2352, 2368, - 2387, 2364, 2382, 2371, 2388, 2373, 2396, 2397, 2391, 6399, - 2398, 2390, 2399, 2407, 2412, 2395, 2424, 2417, 2418, 2416, - 2425, 2446, 2442, 2444, 6399, 2432, 2452, 2445, 2441, 2451, - 2462, 2443, 2461, 2460, 2448, 2470, 2469, 291, 2468, 2482, - 2471, 2474, 6399, 2473, 68, 2488, 2489, 2483, 2510, 2511, - 2507, 2518, 2509, 2508, 2513, 2516, 2517, 2506, 2535, 2531, - 2534, 2523, 2537, 2538, 2549, 2540, 2552, 6399, 2562, 2561, - - 2565, 2567, 2574, 2573, 2576, 2570, 2586, 2601, 2588, 6399, - 2596, 2610, 2600, 2602, 2592, 2615, 2613, 2604, 2626, 2625, - 2621, 2629, 2634, 2631, 2640, 2641, 6399, 2627, 2655, 2656, - 2643, 2654, 2653, 2679, 2666, 2657, 2662, 2687, 2711, 2681, - 2686, 2702, 2698, 2696, 2691, 2704, 2705, 2732, 2715, 2731, - 2712, 2727, 2737, 2750, 2753, 2744, 2748, 2774, 2768, 153, - 2759, 6399, 2762, 2757, 2760, 2764, 2803, 2793, 2795, 2787, - 2800, 2797, 2798, 2809, 2805, 2801, 2824, 2813, 2822, 2816, - 6399, 2838, 2839, 2827, 2842, 2828, 2847, 2852, 2840, 2858, - 2843, 2854, 2864, 2855, 2875, 2862, 2871, 2885, 2870, 6399, - - 2758, 2867, 2873, 2898, 2886, 2882, 2897, 2896, 2891, 2894, - 2893, 2920, 2912, 2907, 2917, 2919, 2913, 2935, 2910, 2923, - 2924, 2940, 2949, 2938, 2947, 6399, 2951, 2971, 2946, 2956, - 2954, 2962, 2979, 2983, 2972, 2992, 2989, 2990, 2975, 2982, - 2978, 2995, 2997, 2998, 6399, 2999, 3011, 3012, 3020, 3019, - 3021, 3022, 3024, 3035, 3007, 3039, 3034, 3041, 3053, 3042, - 3049, 3051, 3060, 3058, 3078, 3073, 3082, 6399, 3075, 3084, - 3077, 3071, 3076, 3079, 3100, 3092, 3098, 3087, 3103, 3109, - 3105, 3131, 3133, 3117, 3119, 3120, 3121, 3102, 3115, 3130, - 3146, 3148, 3134, 3135, 3136, 3150, 3145, 3157, 3156, 3173, - - 3167, 3175, 3185, 3183, 3186, 3176, 3182, 3179, 3202, 6399, - 3200, 3195, 3199, 3218, 3203, 3205, 3206, 3216, 3233, 3237, - 6399, 3222, 6399, 3234, 3241, 3246, 6399, 3244, 6399, 3253, - 3238, 6399, 3252, 3256, 3243, 3247, 3248, 3271, 3263, 3259, - 3273, 3267, 3290, 3266, 3281, 3293, 3282, 3302, 6399, 3295, - 3294, 3296, 3305, 3308, 3311, 3316, 3317, 3320, 3321, 3328, - 3322, 3347, 3339, 3350, 6399, 3337, 3346, 3342, 3354, 6399, - 3338, 3355, 3366, 3352, 3357, 3368, 3363, 3365, 3397, 3381, - 3386, 3387, 3399, 3380, 3398, 3411, 3408, 3392, 3402, 3413, - 3416, 3412, 3425, 3418, 3429, 3422, 3442, 3428, 3430, 3431, - - 3439, 3440, 3452, 3449, 3468, 3445, 3455, 3456, 3463, 6399, - 3459, 3467, 3466, 3495, 3473, 3485, 3477, 3489, 3494, 3490, - 3502, 3515, 3492, 6399, 3498, 6399, 3506, 3510, 3520, 3535, - 3522, 3534, 3528, 3537, 3529, 3551, 3543, 3555, 3553, 3547, - 3556, 3554, 3562, 3561, 3573, 6399, 3532, 3568, 3590, 3581, - 3583, 3588, 3601, 3613, 3587, 3606, 6399, 3603, 3608, 3612, - 3604, 3628, 3615, 6399, 3607, 3642, 3631, 3638, 6399, 6399, - 3632, 3637, 3633, 3639, 3643, 3655, 3640, 3658, 6399, 3611, - 3659, 3671, 3672, 3682, 3683, 3654, 3668, 6399, 3665, 3693, - 3686, 3689, 3685, 3699, 3698, 3674, 3710, 3707, 3704, 3702, - - 3728, 3727, 3732, 6399, 3731, 3724, 3739, 3729, 3738, 3723, - 3720, 3734, 3748, 3755, 3750, 3756, 3767, 3765, 3758, 3761, - 3773, 3786, 3763, 3777, 3775, 3793, 3788, 3797, 3785, 3807, - 3805, 3791, 3813, 6399, 3815, 3799, 3824, 3800, 3818, 3828, - 3829, 3834, 3846, 3819, 3827, 3836, 3842, 6399, 3872, 3823, - 3851, 3857, 3855, 3854, 3866, 3856, 3850, 3879, 3864, 3887, - 3874, 3878, 3895, 3904, 6399, 6399, 3898, 3889, 3908, 3897, - 3902, 3911, 3892, 3925, 3906, 3914, 6399, 3923, 3916, 3922, - 3933, 3949, 3951, 3948, 3953, 3945, 3936, 3943, 3952, 3963, - 3947, 3960, 3967, 3946, 3978, 6399, 3977, 3984, 3981, 3993, - - 3995, 3994, 4002, 4020, 4006, 3989, 4005, 3987, 4017, 4015, - 4040, 4022, 4012, 4029, 4023, 6399, 4033, 4039, 4042, 4026, - 4053, 4030, 4060, 4047, 6399, 4058, 4063, 4062, 4071, 4055, - 4078, 4070, 4072, 4086, 4074, 6399, 4079, 6399, 4090, 4082, - 6399, 4088, 4095, 4096, 4099, 4109, 4112, 4098, 4115, 4110, - 4111, 4125, 4126, 4121, 4119, 6399, 4142, 4122, 4123, 4135, - 6399, 4147, 6399, 4145, 6399, 4148, 4150, 4170, 4149, 4167, - 4171, 4178, 4172, 6399, 4175, 4159, 4183, 4176, 4187, 4177, - 4201, 4203, 4191, 4204, 4214, 6399, 4202, 4209, 4196, 4207, - 4212, 4223, 4238, 4231, 6399, 4240, 4235, 4236, 4250, 4249, - - 6399, 4248, 4259, 6399, 4252, 4268, 4247, 4264, 4278, 4282, - 4284, 4267, 4270, 4197, 4293, 4279, 4291, 6399, 4283, 4294, - 4301, 4303, 4300, 4312, 4276, 4317, 4311, 4321, 4323, 4335, - 4325, 4339, 4326, 4343, 4345, 4344, 6399, 4350, 4352, 6399, - 4360, 4338, 4349, 4353, 6399, 4372, 6399, 4380, 4374, 4363, - 4366, 4392, 4394, 4395, 4379, 4393, 4399, 4396, 4417, 4400, - 4412, 6399, 6399, 4410, 4427, 4402, 4414, 4433, 4431, 4422, - 4438, 4441, 4445, 4447, 6399, 4444, 4430, 6399, 4437, 4451, - 4458, 4461, 4477, 4466, 4470, 4463, 4483, 4479, 4490, 4465, - 4480, 6399, 4493, 4473, 4474, 4497, 4506, 4503, 4507, 6399, - - 4504, 4502, 4529, 4522, 4523, 4525, 4539, 4536, 4541, 4530, - 4531, 4546, 4566, 4553, 4555, 6399, 4556, 4549, 4550, 4567, - 4581, 4584, 4571, 4585, 4568, 4589, 4591, 4587, 4573, 6399, - 4594, 4603, 4588, 4604, 4602, 4616, 4606, 4623, 4610, 4608, - 4617, 4619, 4625, 6399, 4621, 4630, 4640, 4652, 4642, 4643, - 4645, 4644, 4651, 4634, 4672, 4654, 4674, 6399, 4665, 4670, - 4659, 4680, 4667, 4690, 4691, 4683, 4697, 4699, 4700, 4702, - 4710, 4715, 6399, 4694, 6399, 4703, 4727, 4718, 4731, 4729, - 6399, 4723, 4725, 6399, 4735, 4737, 4733, 4745, 6399, 4741, - 4758, 4746, 4765, 4769, 6399, 4770, 4774, 4786, 4782, 4773, - - 4788, 4771, 4780, 4772, 4801, 6399, 4799, 4792, 4805, 4806, - 4797, 4800, 4798, 4804, 4814, 4818, 4841, 4831, 4822, 6399, - 4826, 4838, 4851, 4844, 4846, 6399, 6399, 4845, 4853, 4857, - 4829, 4861, 6399, 4870, 4856, 4864, 4863, 4868, 6399, 6399, - 4866, 6399, 4867, 6399, 6399, 4887, 4891, 4898, 6399, 4899, - 6399, 4905, 4901, 4890, 4886, 4904, 6399, 4888, 4910, 4911, - 6399, 4912, 4915, 4923, 4925, 6399, 4916, 6399, 4919, 4924, - 4939, 4928, 4931, 4942, 4948, 4927, 4959, 4960, 4949, 4946, - 4962, 4958, 4965, 4967, 4966, 4976, 4975, 4979, 4973, 4972, - 4987, 4983, 4988, 4997, 5015, 5004, 4999, 5005, 5006, 5018, - - 5014, 5025, 5031, 5019, 5020, 5034, 6399, 6399, 5032, 5026, - 6399, 5040, 5047, 5044, 5048, 5042, 5052, 5055, 5069, 6399, - 5049, 5071, 5063, 5076, 5074, 5067, 5084, 5088, 5086, 5091, - 5106, 5093, 5096, 5094, 5098, 5119, 5107, 5108, 5121, 5120, - 5130, 5135, 5138, 6399, 5123, 6399, 5131, 5125, 5141, 6399, - 6399, 5136, 5158, 5139, 5144, 5152, 5173, 5171, 6399, 5162, - 5172, 5174, 5165, 6399, 5180, 6399, 5181, 5163, 5184, 5186, - 5193, 6399, 6399, 6399, 5194, 5188, 5199, 5187, 5201, 5202, - 5214, 5198, 5222, 6399, 5209, 5226, 5227, 5220, 5234, 5238, - 5233, 5237, 5250, 5243, 5251, 5241, 5258, 5255, 5266, 6399, - - 6399, 5259, 5276, 5268, 5279, 5277, 5275, 5278, 5269, 5283, - 5289, 5285, 6399, 5295, 5296, 5299, 5300, 5306, 5310, 5308, - 5311, 6399, 6399, 5312, 5314, 5324, 5329, 5326, 5321, 5335, - 5332, 5333, 6399, 5339, 6399, 5344, 5351, 5368, 5349, 5357, - 5362, 6399, 5360, 5361, 6399, 5371, 5359, 5370, 6399, 5379, - 6399, 6399, 5383, 6399, 5384, 6399, 5388, 5389, 5393, 5396, - 5403, 5412, 5405, 5409, 5400, 5407, 5419, 5422, 5420, 6399, - 6399, 5433, 5402, 5431, 5443, 5416, 5438, 5444, 6399, 6399, - 5445, 5451, 6399, 5428, 5439, 5458, 5449, 5455, 5447, 5459, - 5460, 5465, 5470, 5490, 5492, 5494, 5480, 5498, 5481, 5478, - - 5500, 5506, 5512, 6399, 5510, 5508, 5497, 6399, 5513, 5507, - 5529, 5538, 5535, 6399, 5527, 5546, 5547, 5539, 5534, 5552, - 5537, 5554, 6399, 5555, 5558, 5556, 6399, 5559, 6399, 5575, - 6399, 6399, 5564, 5579, 5583, 6399, 5588, 5596, 6399, 5589, - 5590, 5578, 5582, 5603, 6399, 5609, 5607, 5613, 5610, 5616, - 5611, 5623, 5617, 5622, 6399, 5614, 5630, 5632, 5634, 5648, - 5637, 5635, 5636, 5657, 5649, 5640, 5653, 5658, 6399, 5668, - 5670, 6399, 5662, 6399, 5671, 5672, 5681, 6399, 5687, 5674, - 5673, 5684, 6399, 5689, 5691, 6399, 5680, 5706, 5709, 5710, - 5693, 5713, 5704, 5722, 5723, 5727, 6399, 5729, 5715, 5732, - - 5734, 5740, 5720, 6399, 5739, 5745, 5750, 5756, 5748, 6399, - 5757, 5759, 6399, 5758, 5755, 5749, 5775, 5769, 5779, 5781, - 5783, 6399, 5789, 6399, 6399, 5776, 6399, 5770, 5793, 6399, - 5798, 5785, 5784, 5800, 5813, 5812, 6399, 6399, 5810, 5806, - 5818, 5823, 6399, 5815, 5826, 5825, 5820, 5837, 6399, 5821, - 5834, 5831, 5844, 5848, 5842, 5862, 6399, 6399, 5852, 6399, - 5868, 5874, 5873, 6399, 6399, 6399, 5878, 6399, 5880, 5884, - 5881, 6399, 5886, 5870, 5882, 6399, 5891, 5895, 5883, 6399, - 5899, 5894, 5905, 5914, 5916, 5904, 5915, 5924, 5909, 5912, - 5928, 5930, 5932, 5921, 5938, 6399, 6399, 5945, 6399, 6399, - - 5950, 5952, 5953, 6399, 5947, 5958, 6399, 5960, 5951, 5965, - 5954, 5968, 6399, 6399, 5955, 5967, 6399, 5976, 5961, 5979, - 5972, 5971, 5985, 6399, 6399, 6399, 6399, 6399, 5983, 6399, - 6399, 6000, 5987, 5994, 6399, 5982, 6006, 6002, 6003, 6018, - 6010, 5998, 6024, 6020, 6019, 6029, 6041, 6042, 6048, 6047, - 6049, 6030, 6044, 6063, 6046, 6061, 6399, 6057, 6399, 6062, - 6399, 6058, 6067, 6069, 6064, 6070, 6073, 6399, 6079, 6091, - 6082, 6085, 6089, 6084, 6108, 6109, 6096, 6117, 6120, 6119, - 6122, 6126, 6118, 6138, 6132, 6399, 6136, 6133, 6142, 6139, - 6148, 6144, 6399, 6145, 6149, 6154, 6165, 6155, 6169, 6166, - - 6179, 6186, 6184, 6183, 6172, 6197, 6195, 6196, 6200, 6193, - 6207, 6399, 6204, 6210, 6213, 6214, 6220, 6216, 6225, 6227, - 6238, 6242, 6239, 6245, 6243, 6399, 6246, 6399, 6399, 6252, - 6237, 6248, 6258, 6261, 6399, 6399, 6399, 6307, 6314, 6321, - 6328, 6335, 100, 6342, 6349, 6356, 6363, 6370, 6377, 6384, - 6391 + 131, 137, 360, 306, 96, 6594, 6594, 6594, 109, 111, + 85, 142, 180, 129, 134, 138, 183, 50, 166, 75, + 214, 204, 124, 256, 141, 248, 304, 200, 221, 250, + 305, 299, 6594, 6594, 6594, 96, 283, 6594, 6594, 6594, + 102, 276, 265, 6594, 6594, 6594, 322, 216, 6594, 6594, + 6594, 115, 212, 6594, 326, 6594, 161, 336, 186, 343, + 115, 0, 363, 0, 0, 107, 207, 159, 217, 342, + 219, 264, 243, 332, 322, 280, 260, 347, 334, 346, + 351, 277, 352, 372, 359, 367, 392, 361, 377, 401, + + 402, 386, 400, 413, 408, 245, 423, 407, 404, 425, + 441, 428, 449, 436, 447, 439, 452, 462, 442, 464, + 474, 294, 468, 489, 466, 481, 475, 498, 501, 491, + 495, 507, 181, 277, 177, 427, 173, 552, 207, 151, + 391, 117, 558, 562, 0, 528, 530, 389, 544, 488, + 534, 541, 548, 540, 546, 555, 575, 569, 577, 570, + 580, 624, 584, 579, 587, 589, 572, 604, 610, 599, + 605, 631, 591, 625, 629, 648, 657, 647, 637, 655, + 658, 682, 674, 669, 670, 684, 685, 692, 697, 676, + 686, 694, 687, 696, 698, 708, 709, 701, 715, 721, + + 711, 727, 723, 735, 718, 749, 733, 758, 736, 744, + 748, 766, 750, 753, 771, 779, 775, 782, 763, 776, + 762, 783, 792, 789, 790, 805, 799, 793, 809, 798, + 796, 808, 826, 828, 836, 590, 820, 839, 841, 832, + 831, 847, 845, 834, 856, 857, 867, 851, 875, 886, + 862, 869, 864, 877, 891, 894, 881, 884, 883, 902, + 898, 917, 910, 900, 928, 911, 936, 924, 938, 921, + 930, 937, 905, 943, 957, 960, 962, 967, 935, 973, + 981, 964, 980, 983, 970, 984, 993, 994, 991, 997, + 1008, 1020, 1024, 1001, 1017, 1007, 1035, 1032, 1040, 1019, + + 1030, 1041, 1066, 1056, 1111, 1059, 1062, 1078, 1054, 1057, + 1064, 1072, 1063, 1105, 1084, 1088, 1090, 1101, 1115, 1106, + 1129, 1102, 1119, 1137, 1144, 1134, 1139, 1140, 1164, 1148, + 1149, 1153, 1146, 1172, 1166, 1175, 1163, 1171, 1191, 1180, + 1178, 1199, 1195, 1182, 1193, 1209, 1219, 1212, 1205, 1227, + 1216, 1230, 1220, 1236, 1224, 1241, 1232, 1243, 1240, 1246, + 1254, 1257, 1264, 1269, 1250, 1277, 6594, 1281, 1262, 1279, + 1285, 1270, 1288, 6594, 1293, 1275, 1289, 1291, 1298, 1314, + 1309, 1316, 1304, 1306, 1325, 1340, 1315, 1327, 1317, 1336, + 1333, 1334, 1342, 1346, 1351, 1397, 1345, 1356, 1352, 1382, + + 1377, 1361, 1390, 1369, 1392, 1384, 1388, 1395, 1409, 1407, + 1426, 1424, 1419, 1420, 1436, 6594, 1437, 1417, 1427, 1430, + 1445, 1446, 1450, 1453, 1467, 1475, 1462, 1476, 1466, 1479, + 1468, 1480, 1481, 1471, 1488, 1496, 1486, 1492, 1497, 1505, + 1516, 1518, 1525, 1500, 1517, 1509, 1526, 1529, 1530, 1531, + 1519, 1536, 1520, 1543, 1545, 1551, 1563, 1524, 1553, 1555, + 1569, 1578, 1562, 1564, 1589, 1577, 1582, 1591, 1592, 1594, + 1598, 1602, 1603, 1611, 1607, 1616, 1612, 1621, 1629, 1630, + 1626, 1618, 1635, 1642, 1641, 1645, 1648, 1647, 1666, 1654, + 1657, 1669, 1658, 1656, 1668, 1685, 1675, 1683, 1705, 1681, + + 1664, 1697, 1684, 1704, 1700, 1701, 1698, 1702, 1716, 1712, + 1708, 1724, 1733, 1726, 1739, 1735, 1736, 1737, 1753, 1729, + 1756, 1743, 1758, 1760, 1764, 1767, 1768, 1769, 1784, 1779, + 1783, 1794, 1778, 1798, 1788, 1805, 1809, 1791, 1814, 1822, + 1826, 1818, 6594, 1810, 1833, 1824, 1834, 1830, 1825, 1851, + 1839, 1837, 1848, 1852, 1896, 6594, 1853, 6594, 6594, 1850, + 6594, 6594, 1854, 1856, 1880, 1858, 1875, 1892, 1945, 1893, + 1883, 1879, 1887, 1906, 1913, 1910, 1926, 1914, 1933, 1911, + 1948, 1950, 1956, 1953, 1940, 1962, 1961, 1968, 1986, 1969, + 1983, 1985, 1903, 1988, 1996, 2002, 2004, 1976, 2010, 2003, + + 2005, 2008, 2012, 2022, 2014, 2017, 2015, 2018, 2039, 2042, + 2027, 2033, 6594, 2044, 2046, 2054, 2051, 2045, 2061, 2043, + 2049, 2065, 2063, 2088, 6594, 2092, 2093, 2075, 2095, 2076, + 2078, 2082, 2086, 2101, 2103, 2090, 2113, 2102, 2124, 2125, + 2135, 2116, 2122, 2130, 2150, 2151, 2143, 2129, 2152, 2149, + 2134, 2157, 2165, 2170, 2162, 2174, 2188, 2166, 2167, 2177, + 2190, 2181, 2194, 2183, 6594, 2179, 2191, 6594, 2189, 2199, + 2245, 2210, 2208, 2204, 2215, 2224, 2218, 2236, 2230, 2258, + 2235, 2255, 2237, 2265, 2264, 2260, 2257, 2275, 2267, 2295, + 2298, 156, 2325, 2291, 2305, 2294, 2297, 2311, 2314, 2307, + + 2313, 2301, 2329, 2323, 2339, 6594, 2318, 2346, 2336, 2352, + 2334, 2354, 2345, 2353, 2358, 2341, 2374, 2368, 2369, 2378, + 2370, 2373, 2379, 2384, 2389, 2407, 6594, 2394, 2400, 2385, + 2409, 2413, 2417, 2423, 2420, 2430, 2412, 2425, 6594, 2416, + 2442, 2459, 2445, 2427, 2444, 2446, 2458, 2447, 2473, 2456, + 2457, 2465, 2466, 2474, 2475, 2469, 6594, 2472, 2494, 2489, + 2498, 2502, 2496, 2509, 2497, 2499, 2493, 2504, 2524, 2522, + 2523, 6594, 2516, 2529, 2519, 2521, 2540, 2552, 2538, 2557, + 2558, 2544, 2550, 2554, 121, 2551, 2559, 2555, 2545, 6594, + 2556, 68, 2573, 2561, 2572, 2578, 2599, 2593, 2602, 2601, + + 2594, 2595, 2605, 2596, 2588, 2617, 2603, 2620, 2613, 2627, + 2625, 2636, 2626, 2645, 6594, 2647, 2644, 2651, 2653, 2652, + 2638, 2672, 2657, 2668, 2685, 2673, 6594, 2659, 2689, 2688, + 2683, 2677, 2686, 2695, 2691, 2707, 2684, 2709, 2715, 2716, + 2713, 2717, 2729, 6594, 2712, 2732, 2739, 2725, 2730, 2743, + 2768, 2742, 2753, 2758, 2748, 2794, 2764, 2769, 2714, 2782, + 2774, 2784, 2787, 2795, 2788, 2798, 2814, 2819, 2821, 2763, + 2833, 2836, 2827, 2834, 2857, 2841, 164, 2826, 6594, 2843, + 2840, 2831, 2863, 2883, 2865, 2876, 2861, 2878, 2867, 2882, + 2897, 2892, 2898, 2870, 2891, 2812, 2900, 2917, 6594, 2918, + + 2924, 2907, 2920, 2910, 2931, 2927, 2912, 2935, 2941, 2944, + 2928, 2945, 2939, 2946, 2959, 2962, 2957, 6594, 2862, 2951, + 2947, 2980, 2972, 2963, 2974, 2983, 2967, 2973, 2975, 3000, + 2991, 2986, 2992, 2989, 2997, 3016, 3001, 3009, 3008, 3018, + 3022, 3014, 3024, 6594, 3020, 3057, 3031, 3038, 3041, 3044, + 3064, 3052, 3049, 3065, 3066, 3067, 3056, 3061, 3077, 3080, + 3082, 3081, 6594, 3094, 3088, 3084, 3104, 3096, 3102, 3105, + 3099, 3108, 3112, 3129, 3123, 3115, 3135, 3133, 3132, 3128, + 3147, 3158, 3159, 3156, 3163, 6594, 3166, 3165, 3161, 3153, + 3167, 3162, 3175, 3172, 3183, 3179, 3190, 3191, 3188, 3216, + + 3224, 3193, 3202, 3204, 3206, 3217, 3200, 3209, 3229, 3242, + 3219, 3220, 3222, 3240, 3231, 3233, 3246, 3256, 3260, 3252, + 3270, 3266, 3272, 3262, 3265, 3267, 3294, 6594, 3258, 3279, + 3277, 3303, 3305, 3306, 3291, 3297, 3292, 3287, 3316, 6594, + 3299, 6594, 3320, 3327, 3334, 6594, 3331, 6594, 3341, 3329, + 6594, 3343, 3347, 3335, 3324, 3339, 3352, 3344, 3360, 3361, + 3358, 3362, 3342, 3356, 3377, 3374, 3390, 6594, 3382, 3379, + 3384, 3399, 3391, 3383, 3387, 3404, 3410, 3392, 3414, 3423, + 3426, 3409, 3437, 6594, 3419, 3435, 3425, 3432, 6594, 3421, + 3446, 3448, 3436, 3442, 3455, 3450, 3456, 3459, 3484, 3466, + + 3462, 3461, 3486, 3471, 3477, 3497, 3498, 3482, 3489, 3483, + 3506, 3507, 3510, 3492, 3516, 3520, 3517, 3513, 3518, 3526, + 3514, 3536, 3539, 3541, 3537, 3532, 3540, 3542, 3549, 6594, + 3557, 3555, 3566, 3561, 3559, 3558, 3567, 3577, 3581, 3565, + 3589, 3594, 3584, 6594, 3599, 6594, 3585, 3605, 3609, 3612, + 3601, 3608, 3618, 3616, 3629, 3641, 3622, 3643, 3624, 3635, + 3644, 3636, 3645, 3649, 3652, 6594, 3642, 3656, 3672, 3662, + 3676, 3661, 3689, 3686, 3669, 3702, 6594, 3711, 3691, 3707, + 3713, 3705, 3716, 3714, 6594, 3699, 3726, 3715, 3721, 6594, + 6594, 3708, 3725, 3731, 3732, 3737, 3754, 3745, 3747, 6594, + + 3739, 3742, 3759, 3768, 3770, 3771, 3758, 3755, 6594, 3764, + 3780, 3782, 3777, 3781, 3787, 3791, 3792, 3806, 3801, 3797, + 3811, 3816, 3818, 3822, 6594, 3820, 3823, 3827, 3819, 3828, + 3809, 3838, 3835, 3843, 3836, 3842, 3852, 3856, 3862, 3863, + 3846, 3859, 3875, 3881, 3876, 3865, 3880, 3877, 3886, 3882, + 3889, 3895, 3892, 3919, 3902, 6594, 3920, 3899, 3923, 3903, + 3918, 3925, 3930, 3939, 3948, 3916, 3922, 3943, 3944, 6594, + 3956, 3927, 3951, 3954, 3957, 3978, 3950, 3970, 3955, 3974, + 3969, 3984, 3973, 3980, 3997, 3979, 6594, 6594, 3999, 3983, + 4009, 4000, 4006, 4005, 3992, 4020, 4011, 4007, 6594, 4025, + + 4033, 4019, 4036, 4049, 4054, 4051, 4048, 4046, 4038, 4040, + 4044, 4065, 4061, 4063, 4071, 4069, 4073, 6594, 4075, 4076, + 6594, 4078, 4083, 4095, 4098, 4108, 4115, 4109, 4092, 4103, + 4112, 4120, 4123, 4138, 4134, 4119, 4125, 4146, 6594, 4136, + 4139, 4142, 4124, 4160, 4135, 4161, 4155, 6594, 4165, 4170, + 4174, 4177, 4158, 4184, 4180, 4185, 4183, 4182, 6594, 4188, + 6594, 4196, 4194, 6594, 4202, 4207, 4200, 4213, 4198, 4223, + 4208, 4204, 4227, 4220, 4218, 4235, 4243, 4247, 4230, 6594, + 4255, 4234, 4249, 4250, 6594, 4253, 6594, 4257, 6594, 4245, + 4254, 4274, 4261, 4288, 4290, 4291, 4285, 6594, 4295, 4276, + + 4297, 4299, 4283, 4294, 4301, 4315, 4310, 4317, 4324, 6594, + 4287, 4326, 4339, 4323, 4325, 4344, 4350, 4329, 6594, 4353, + 4346, 4342, 4356, 4357, 6594, 4369, 4365, 6594, 4372, 4362, + 4371, 4374, 4388, 4376, 4395, 4375, 4384, 4412, 4405, 4396, + 4406, 6594, 4399, 4402, 4419, 4420, 4413, 4415, 4417, 4425, + 4432, 4426, 4448, 4450, 4454, 4456, 4443, 4460, 4459, 4455, + 6594, 4469, 4475, 6594, 4471, 4452, 4470, 4473, 6594, 4486, + 6594, 4497, 4491, 4483, 4495, 4509, 4511, 4512, 4498, 4510, + 4516, 4513, 4528, 4519, 4522, 6594, 6594, 4529, 4544, 4525, + 4550, 4556, 4539, 4540, 4565, 4563, 4562, 4569, 6594, 4560, + + 4553, 4571, 6594, 4554, 4577, 4576, 4578, 4583, 4589, 4592, + 4594, 4609, 4596, 4612, 4598, 4595, 6594, 4610, 4604, 4606, + 4623, 4622, 4620, 4625, 6594, 4633, 4618, 4650, 4645, 4641, + 4649, 4660, 4663, 4664, 4651, 4652, 4670, 4672, 4667, 4669, + 6594, 4678, 4675, 4680, 4691, 4686, 4704, 4687, 4709, 4694, + 4715, 4716, 4705, 4698, 6594, 4718, 4720, 4707, 4724, 4710, + 4729, 4737, 4747, 4738, 4722, 4739, 4733, 4757, 6594, 4749, + 4750, 4743, 4755, 4761, 4753, 4771, 4767, 4776, 4765, 4777, + 4780, 4793, 6594, 4785, 4796, 4781, 4798, 4788, 4808, 4812, + 4804, 4818, 4820, 4821, 4823, 4807, 4822, 6594, 4831, 6594, + + 4832, 4842, 4847, 4854, 4840, 6594, 4846, 4856, 6594, 4859, + 4850, 4857, 4864, 6594, 4877, 4870, 4874, 4873, 4852, 6594, + 4895, 4891, 4910, 4911, 4908, 4899, 4914, 4897, 4902, 4898, + 4918, 6594, 4923, 4925, 4920, 4926, 4912, 4929, 4934, 4947, + 4937, 4955, 4935, 4959, 4945, 6594, 4950, 4962, 4973, 4961, + 4968, 6594, 6594, 4971, 4978, 4977, 4975, 4982, 6594, 4987, + 4976, 4996, 4999, 5002, 6594, 6594, 5013, 6594, 4997, 6594, + 6594, 5012, 5014, 5016, 6594, 5020, 6594, 5026, 5021, 5009, + 5005, 5028, 6594, 5018, 5038, 5030, 6594, 5042, 5036, 5040, + 5041, 6594, 5034, 6594, 5061, 5059, 5065, 5064, 5057, 5060, + + 5067, 5073, 5075, 5076, 5068, 5063, 5078, 5084, 5092, 5102, + 5098, 5107, 5093, 5114, 5106, 5090, 5101, 5105, 5100, 5108, + 5125, 5129, 5128, 5132, 5134, 5141, 5133, 5145, 5153, 5162, + 5163, 5165, 6594, 6594, 5149, 5159, 5156, 6594, 5168, 5151, + 5160, 5171, 5190, 5180, 5183, 5178, 6594, 5203, 5195, 5193, + 5205, 5198, 5196, 5206, 5192, 5202, 5216, 5234, 5241, 5219, + 5227, 5225, 5240, 5229, 5230, 5248, 5256, 5247, 5257, 5255, + 6594, 5243, 6594, 5251, 5246, 5269, 6594, 6594, 5270, 5276, + 5265, 5280, 5273, 5281, 5294, 6594, 5284, 5297, 5302, 5292, + 6594, 5304, 6594, 5309, 5293, 5310, 5308, 5314, 6594, 6594, + + 6594, 5315, 5311, 5317, 5318, 5329, 5332, 5342, 5331, 5340, + 6594, 5336, 5344, 5357, 5337, 5353, 5355, 5358, 5361, 5373, + 5367, 5369, 5368, 5376, 5386, 5387, 6594, 6594, 5377, 5406, + 5393, 5397, 5396, 5401, 5404, 5403, 5392, 5408, 5410, 5399, + 6594, 5418, 5417, 5423, 5427, 5437, 5438, 5450, 5443, 6594, + 6594, 5434, 5435, 5439, 5456, 5444, 5448, 5445, 5459, 5462, + 6594, 5461, 6594, 5471, 5465, 5498, 5494, 5487, 5492, 6594, + 5490, 5488, 6594, 5496, 5493, 5489, 6594, 5505, 6594, 6594, + 5502, 6594, 5510, 6594, 5515, 5511, 5509, 5537, 5541, 5542, + 5544, 5545, 5528, 5533, 5553, 5549, 5548, 6594, 6594, 5556, + + 5527, 5555, 5558, 5538, 5562, 5559, 6594, 6594, 5573, 5581, + 6594, 5567, 5588, 5579, 5582, 5577, 5583, 5585, 5598, 5594, + 5593, 5608, 5606, 5615, 5628, 5620, 5612, 5611, 5619, 5623, + 5621, 5633, 6594, 5637, 5646, 5634, 6594, 5651, 5650, 5662, + 5660, 5658, 6594, 5648, 5669, 5670, 5672, 5656, 5691, 5675, + 5673, 6594, 5690, 5686, 5692, 6594, 5678, 6594, 5694, 6594, + 6594, 5702, 5709, 5705, 6594, 5711, 5719, 6594, 5712, 5715, + 5708, 5721, 5722, 6594, 5730, 5739, 5726, 5734, 5735, 5753, + 5741, 5750, 5738, 5760, 6594, 5745, 5754, 5770, 5761, 5771, + 5767, 5757, 5780, 5781, 5777, 5766, 5778, 5787, 6594, 5795, + + 5810, 6594, 5790, 6594, 5812, 5797, 5815, 6594, 5818, 5801, + 5800, 5816, 6594, 5824, 5817, 6594, 5807, 5830, 5832, 5827, + 5822, 5834, 5833, 5855, 5861, 5865, 6594, 5857, 5847, 5870, + 5871, 5872, 5858, 6594, 5873, 5874, 5862, 5877, 5892, 5886, + 6594, 5887, 5888, 6594, 5890, 5906, 5898, 5913, 5895, 5916, + 5920, 5919, 6594, 5921, 6594, 6594, 5904, 6594, 5905, 5925, + 6594, 5928, 5915, 5937, 5932, 5935, 5939, 6594, 6594, 5946, + 5950, 5949, 5956, 6594, 5943, 5945, 5962, 5966, 5968, 6594, + 5971, 5955, 5976, 5973, 5970, 5990, 5983, 5994, 6594, 6594, + 5989, 6594, 6011, 6012, 6010, 6594, 6594, 6594, 6015, 6594, + + 6019, 6026, 6016, 6594, 6022, 6027, 6030, 6594, 6028, 6025, + 6033, 6594, 6038, 6031, 6049, 6051, 6061, 6047, 6058, 6064, + 6071, 6043, 6054, 6052, 6075, 6077, 6065, 6086, 6594, 6594, + 6087, 6594, 6594, 6093, 6094, 6097, 6594, 6090, 6101, 6594, + 6103, 6096, 6104, 6091, 6110, 6594, 6594, 6098, 6109, 6594, + 6119, 6120, 6113, 6124, 6115, 6123, 6128, 6594, 6594, 6594, + 6594, 6594, 6135, 6594, 6594, 6148, 6133, 6131, 6594, 6136, + 6146, 6163, 6154, 6147, 6151, 6160, 6158, 6155, 6168, 6177, + 6180, 6192, 6197, 6199, 6202, 6195, 6196, 6181, 6194, 6207, + 6203, 6211, 6594, 6216, 6594, 6219, 6594, 6212, 6221, 6218, + + 6223, 6227, 6222, 6232, 6594, 6228, 6248, 6255, 6234, 6243, + 6244, 6246, 6258, 6261, 6262, 6272, 6279, 6275, 6286, 6289, + 6290, 6277, 6282, 6297, 6594, 6288, 6293, 6292, 6306, 6303, + 6309, 6299, 6594, 6320, 6326, 6316, 6318, 6327, 6341, 6339, + 6322, 6345, 6338, 6349, 6359, 6356, 6363, 6355, 6373, 6377, + 6314, 6382, 6384, 6366, 6375, 6376, 6381, 6394, 6594, 6387, + 6393, 6396, 6405, 6409, 6594, 6399, 6408, 6411, 6416, 6428, + 6422, 6594, 6431, 6433, 6432, 6594, 6436, 6594, 6594, 6440, + 6434, 6443, 6446, 6447, 6594, 6594, 6594, 6502, 6509, 6516, + 6523, 6530, 83, 6537, 6544, 6551, 6558, 6565, 6572, 6579, + + 6586 } ; -static yyconst flex_int16_t yy_def[2252] = +static yyconst flex_int16_t yy_def[2302] = { 0, - 2237, 1, 2238, 2238, 2239, 2239, 2240, 2240, 2241, 2241, - 2242, 2242, 2237, 2243, 2237, 2237, 2237, 2237, 2244, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2245, 2237, 2237, 2237, 2245, 2246, 2237, 2237, 2237, 2246, - 2247, 2237, 2237, 2237, 2237, 2247, 2248, 2237, 2237, 2237, - 2248, 2249, 2237, 2250, 2237, 2249, 2249, 2243, 2243, 2237, - 2251, 2244, 2251, 2244, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2245, 2245, 2246, 2246, 2247, 2247, 2237, 2248, 2248, 2249, - 2249, 2250, 2250, 2249, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2249, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - - 2243, 2243, 2249, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237, - 2243, 2243, 2243, 2243, 2243, 2243, 2237, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237, 2249, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2249, 2243, 2243, 2243, 2243, 2243, 2237, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2237, 2243, 2237, 2237, 2243, 2237, 2237, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237, - - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2237, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2249, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2237, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2237, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2237, 2243, 2249, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237, 2243, 2243, - - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2237, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2237, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2237, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237, - - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2237, 2243, 2237, 2243, 2243, 2243, 2237, 2243, 2237, 2243, - 2243, 2237, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243, 2237, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2237, 2243, 2237, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2237, 2243, 2243, 2243, - 2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243, 2237, 2237, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - - 2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2237, 2237, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2237, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243, - - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2237, 2243, 2237, 2243, 2243, - 2237, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243, - 2237, 2243, 2237, 2243, 2237, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243, 2243, - - 2237, 2243, 2243, 2237, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2237, 2243, 2243, 2237, - 2243, 2243, 2243, 2243, 2237, 2243, 2237, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2237, 2237, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2237, 2243, 2243, 2237, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2237, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237, - - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2237, 2243, 2237, 2243, 2243, 2243, 2243, 2243, - 2237, 2243, 2243, 2237, 2243, 2243, 2243, 2243, 2237, 2243, - 2243, 2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243, 2243, - - 2243, 2243, 2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237, - 2243, 2243, 2243, 2243, 2243, 2237, 2237, 2243, 2243, 2243, - 2243, 2243, 2237, 2243, 2243, 2243, 2243, 2243, 2237, 2237, - 2243, 2237, 2243, 2237, 2237, 2243, 2243, 2243, 2237, 2243, - 2237, 2243, 2243, 2243, 2243, 2243, 2237, 2243, 2243, 2243, - 2237, 2243, 2243, 2243, 2243, 2237, 2243, 2237, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - - 2243, 2243, 2243, 2243, 2243, 2243, 2237, 2237, 2243, 2243, - 2237, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2237, 2243, 2237, 2243, 2243, 2243, 2237, - 2237, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237, 2243, - 2243, 2243, 2243, 2237, 2243, 2237, 2243, 2243, 2243, 2243, - 2243, 2237, 2237, 2237, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237, - - 2237, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2237, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2237, 2237, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2237, 2243, 2237, 2243, 2243, 2243, 2243, 2243, - 2243, 2237, 2243, 2243, 2237, 2243, 2243, 2243, 2237, 2243, - 2237, 2237, 2243, 2237, 2243, 2237, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237, - 2237, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237, 2237, - 2243, 2243, 2237, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - - 2243, 2243, 2243, 2237, 2243, 2243, 2243, 2237, 2243, 2243, - 2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2237, 2243, 2243, 2243, 2237, 2243, 2237, 2243, - 2237, 2237, 2243, 2243, 2243, 2237, 2243, 2243, 2237, 2243, - 2243, 2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2237, 2243, - 2243, 2237, 2243, 2237, 2243, 2243, 2243, 2237, 2243, 2243, - 2243, 2243, 2237, 2243, 2243, 2237, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2237, 2243, 2243, 2243, - - 2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243, 2243, 2237, - 2243, 2243, 2237, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2237, 2243, 2237, 2237, 2243, 2237, 2243, 2243, 2237, - 2243, 2243, 2243, 2243, 2243, 2243, 2237, 2237, 2243, 2243, - 2243, 2243, 2237, 2243, 2243, 2243, 2243, 2243, 2237, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2237, 2237, 2243, 2237, - 2243, 2243, 2243, 2237, 2237, 2237, 2243, 2237, 2243, 2243, - 2243, 2237, 2243, 2243, 2243, 2237, 2243, 2243, 2243, 2237, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2237, 2237, 2243, 2237, 2237, - - 2243, 2243, 2243, 2237, 2243, 2243, 2237, 2243, 2243, 2243, - 2243, 2243, 2237, 2237, 2243, 2243, 2237, 2243, 2243, 2243, - 2243, 2243, 2243, 2237, 2237, 2237, 2237, 2237, 2243, 2237, - 2237, 2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2237, 2243, 2237, 2243, - 2237, 2243, 2243, 2243, 2243, 2243, 2243, 2237, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2237, 2243, 2243, 2243, 2243, - 2243, 2243, 2237, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - - 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2237, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, - 2243, 2243, 2243, 2243, 2243, 2237, 2243, 2237, 2237, 2243, - 2243, 2243, 2243, 2243, 2237, 2237, 0, 2237, 2237, 2237, - 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, - 2237 + 2287, 1, 2288, 2288, 2289, 2289, 2290, 2290, 2291, 2291, + 2292, 2292, 2287, 2293, 2287, 2287, 2287, 2287, 2294, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2295, 2287, 2287, 2287, 2295, 2296, 2287, 2287, 2287, + 2296, 2297, 2287, 2287, 2287, 2287, 2297, 2298, 2287, 2287, + 2287, 2298, 2299, 2287, 2300, 2287, 2299, 2299, 2293, 2293, + 2287, 2301, 2294, 2301, 2294, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2295, 2295, 2296, 2296, 2297, 2297, 2287, 2298, + 2298, 2299, 2299, 2300, 2300, 2299, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2299, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2299, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2287, 2293, 2293, 2293, + 2293, 2293, 2293, 2287, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2287, 2299, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2299, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2287, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2287, 2293, 2287, 2287, 2293, + 2287, 2287, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2287, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2287, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2299, 2293, 2293, 2293, 2287, 2293, 2293, 2287, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + + 2293, 2293, 2293, 2293, 2293, 2287, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2287, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2287, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2287, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2287, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2287, + 2293, 2299, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2287, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2287, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2287, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2287, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2287, 2293, + + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2287, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2287, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2287, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2287, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2287, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2287, + 2293, 2287, 2293, 2293, 2293, 2287, 2293, 2287, 2293, 2293, + 2287, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2287, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2287, 2293, 2293, 2293, 2293, 2287, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2287, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2287, 2293, 2287, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2287, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2287, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2287, 2293, 2293, 2293, 2293, 2287, + 2287, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2287, + + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2287, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2287, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2287, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2287, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2287, 2287, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2287, 2293, + + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2287, 2293, 2293, + 2287, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2287, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2287, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2287, 2293, + 2287, 2293, 2293, 2287, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2287, + 2293, 2293, 2293, 2293, 2287, 2293, 2287, 2293, 2287, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2287, 2293, 2293, + + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2287, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2287, 2293, + 2293, 2293, 2293, 2293, 2287, 2293, 2293, 2287, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2287, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2287, 2293, 2293, 2287, 2293, 2293, 2293, 2293, 2287, 2293, + 2287, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2287, 2287, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2287, 2293, + + 2293, 2293, 2287, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2287, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2287, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2287, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2287, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2287, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2287, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2287, 2293, 2287, + + 2293, 2293, 2293, 2293, 2293, 2287, 2293, 2293, 2287, 2293, + 2293, 2293, 2293, 2287, 2293, 2293, 2293, 2293, 2293, 2287, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2287, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2287, 2293, 2293, 2293, 2293, + 2293, 2287, 2287, 2293, 2293, 2293, 2293, 2293, 2287, 2293, + 2293, 2293, 2293, 2293, 2287, 2287, 2293, 2287, 2293, 2287, + 2287, 2293, 2293, 2293, 2287, 2293, 2287, 2293, 2293, 2293, + 2293, 2293, 2287, 2293, 2293, 2293, 2287, 2293, 2293, 2293, + 2293, 2287, 2293, 2287, 2293, 2293, 2293, 2293, 2293, 2293, + + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2287, 2287, 2293, 2293, 2293, 2287, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2287, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2287, 2293, 2287, 2293, 2293, 2293, 2287, 2287, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2287, 2293, 2293, 2293, 2293, + 2287, 2293, 2287, 2293, 2293, 2293, 2293, 2293, 2287, 2287, + + 2287, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2287, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2287, 2287, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2287, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2287, + 2287, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2287, 2293, 2287, 2293, 2293, 2293, 2293, 2293, 2293, 2287, + 2293, 2293, 2287, 2293, 2293, 2293, 2287, 2293, 2287, 2287, + 2293, 2287, 2293, 2287, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2287, 2287, 2293, + + 2293, 2293, 2293, 2293, 2293, 2293, 2287, 2287, 2293, 2293, + 2287, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2287, 2293, 2293, 2293, 2287, 2293, 2293, 2293, + 2293, 2293, 2287, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2287, 2293, 2293, 2293, 2287, 2293, 2287, 2293, 2287, + 2287, 2293, 2293, 2293, 2287, 2293, 2293, 2287, 2293, 2293, + 2293, 2293, 2293, 2287, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2287, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2287, 2293, + + 2293, 2287, 2293, 2287, 2293, 2293, 2293, 2287, 2293, 2293, + 2293, 2293, 2287, 2293, 2293, 2287, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2287, 2293, 2293, 2293, + 2293, 2293, 2293, 2287, 2293, 2293, 2293, 2293, 2293, 2293, + 2287, 2293, 2293, 2287, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2287, 2293, 2287, 2287, 2293, 2287, 2293, 2293, + 2287, 2293, 2293, 2293, 2293, 2293, 2293, 2287, 2287, 2293, + 2293, 2293, 2293, 2287, 2293, 2293, 2293, 2293, 2293, 2287, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2287, 2287, + 2293, 2287, 2293, 2293, 2293, 2287, 2287, 2287, 2293, 2287, + + 2293, 2293, 2293, 2287, 2293, 2293, 2293, 2287, 2293, 2293, + 2293, 2287, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2287, 2287, + 2293, 2287, 2287, 2293, 2293, 2293, 2287, 2293, 2293, 2287, + 2293, 2293, 2293, 2293, 2293, 2287, 2287, 2293, 2293, 2287, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2287, 2287, 2287, + 2287, 2287, 2293, 2287, 2287, 2293, 2293, 2293, 2287, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2287, 2293, 2287, 2293, 2287, 2293, 2293, 2293, + + 2293, 2293, 2293, 2293, 2287, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2287, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2287, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, + 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2287, 2293, + 2293, 2293, 2293, 2293, 2287, 2293, 2293, 2293, 2293, 2293, + 2293, 2287, 2293, 2293, 2293, 2287, 2293, 2287, 2287, 2293, + 2293, 2293, 2293, 2293, 2287, 2287, 0, 2287, 2287, 2287, + 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, + + 2287 } ; -static yyconst flex_uint16_t yy_nxt[6466] = +static yyconst flex_uint16_t yy_nxt[6661] = { 0, 14, 15, 16, 17, 18, 19, 18, 14, 14, 14, - 14, 14, 18, 20, 14, 21, 22, 23, 24, 14, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 14, 14, 14, 14, 40, - 20, 14, 21, 22, 23, 24, 14, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 14, 14, 14, 14, 42, 43, 44, 42, - 43, 44, 47, 48, 47, 48, 49, 97, 49, 52, - 53, 54, 55, 811, 18, 52, 53, 54, 55, 69, - 18, 58, 59, 60, 58, 59, 60, 70, 131, 131, - - 68, 71, 87, 45, 97, 133, 45, 141, 133, 50, - 73, 50, 73, 73, 69, 73, 141, 56, 99, 138, - 138, 73, 88, 56, 139, 69, 75, 76, 61, 87, - 69, 61, 15, 16, 17, 63, 64, 65, 15, 16, - 17, 63, 64, 65, 77, 99, 89, 183, 74, 88, - 69, 91, 66, 75, 76, 78, 145, 107, 66, 92, - 90, 70, 79, 69, 1003, 71, 80, 69, 98, 81, - 67, 77, 69, 89, 183, 137, 67, 69, 91, 66, - 69, 69, 78, 145, 107, 66, 92, 90, 93, 79, - 69, 94, 69, 80, 100, 98, 81, 82, 95, 136, - - 96, 83, 101, 134, 84, 198, 85, 86, 102, 132, - 104, 69, 103, 113, 105, 93, 147, 69, 94, 69, - 69, 100, 146, 69, 82, 95, 69, 96, 83, 101, - 106, 84, 198, 85, 86, 102, 69, 104, 114, 103, - 113, 105, 115, 147, 133, 69, 123, 133, 124, 146, - 180, 69, 116, 69, 126, 117, 157, 106, 108, 127, - 141, 69, 109, 125, 69, 114, 128, 69, 110, 115, - 129, 111, 69, 123, 130, 124, 151, 180, 112, 116, - 69, 126, 117, 157, 139, 108, 127, 131, 131, 109, - 125, 144, 69, 128, 69, 110, 209, 129, 111, 158, - - 904, 130, 69, 151, 141, 112, 118, 69, 68, 119, - 68, 68, 135, 68, 135, 135, 120, 135, 144, 68, - 121, 122, 73, 209, 73, 73, 158, 73, 69, 140, - 69, 140, 140, 118, 140, 68, 119, 68, 68, 73, - 68, 73, 73, 120, 73, 148, 68, 121, 122, 152, - 73, 161, 150, 153, 155, 156, 137, 159, 149, 154, - 143, 69, 69, 69, 69, 136, 162, 163, 166, 69, - 138, 138, 148, 69, 69, 160, 152, 74, 161, 150, - 153, 155, 156, 69, 167, 149, 154, 164, 165, 69, - 168, 69, 173, 162, 163, 166, 69, 69, 134, 181, - - 175, 132, 160, 69, 169, 69, 69, 170, 69, 178, - 176, 167, 69, 179, 164, 165, 174, 168, 182, 2237, - 171, 172, 185, 203, 69, 184, 181, 175, 69, 188, - 177, 169, 69, 69, 170, 2237, 178, 176, 69, 69, - 179, 69, 69, 174, 186, 182, 187, 171, 172, 185, - 190, 189, 184, 69, 193, 69, 188, 177, 69, 69, - 191, 69, 194, 195, 192, 2237, 196, 199, 2237, 2237, - 69, 186, 197, 187, 69, 69, 205, 190, 189, 200, - 69, 193, 69, 201, 202, 204, 207, 191, 69, 194, - 195, 192, 69, 196, 199, 69, 206, 208, 69, 197, - - 69, 210, 69, 205, 213, 212, 200, 214, 69, 2237, - 201, 202, 204, 207, 215, 135, 69, 135, 135, 69, - 135, 217, 211, 206, 208, 218, 69, 69, 210, 216, - 2237, 213, 212, 220, 214, 140, 69, 140, 140, 219, - 140, 215, 73, 69, 73, 73, 221, 73, 217, 211, - 222, 69, 69, 141, 69, 230, 216, 69, 224, 223, - 220, 225, 69, 226, 229, 69, 219, 228, 2237, 227, - 240, 231, 2237, 221, 239, 232, 241, 222, 69, 69, - 143, 69, 242, 260, 244, 224, 223, 69, 225, 69, - 69, 229, 233, 2237, 228, 69, 227, 240, 69, 69, - - 69, 239, 232, 241, 69, 245, 243, 69, 246, 242, - 69, 244, 247, 250, 248, 69, 2237, 249, 2237, 233, - 234, 69, 69, 251, 69, 235, 252, 69, 264, 69, - 236, 258, 245, 243, 257, 246, 237, 238, 69, 247, - 250, 248, 267, 69, 249, 69, 261, 234, 69, 253, - 251, 259, 235, 252, 254, 269, 69, 236, 258, 262, - 69, 257, 69, 237, 238, 265, 255, 268, 256, 270, - 263, 266, 69, 261, 69, 69, 253, 69, 259, 271, - 2237, 254, 272, 69, 273, 276, 279, 69, 360, 69, - 69, 69, 265, 255, 268, 256, 69, 263, 266, 69, - - 274, 69, 275, 277, 278, 69, 271, 69, 69, 272, - 281, 273, 276, 279, 280, 69, 283, 282, 69, 284, - 285, 69, 69, 69, 69, 69, 69, 274, 286, 275, - 277, 278, 289, 293, 291, 292, 295, 281, 69, 287, - 288, 280, 69, 283, 282, 290, 284, 285, 69, 294, - 297, 69, 69, 296, 299, 69, 306, 69, 300, 69, - 69, 291, 292, 295, 69, 69, 287, 288, 305, 303, - 302, 307, 290, 298, 69, 301, 294, 308, 309, 69, - 296, 304, 69, 69, 141, 300, 69, 69, 69, 69, - 69, 310, 311, 69, 312, 305, 303, 302, 307, 315, - - 298, 69, 301, 313, 69, 309, 316, 69, 304, 69, - 314, 319, 69, 317, 318, 320, 327, 322, 310, 311, - 69, 312, 69, 69, 321, 324, 315, 326, 69, 2237, - 313, 69, 325, 316, 323, 329, 330, 314, 319, 69, - 317, 69, 320, 69, 322, 69, 69, 328, 69, 69, - 69, 321, 324, 331, 326, 69, 332, 333, 336, 325, - 69, 323, 69, 330, 69, 335, 338, 69, 334, 346, - 337, 69, 69, 339, 328, 69, 340, 69, 341, 345, - 331, 342, 69, 2237, 333, 336, 344, 69, 69, 343, - 69, 347, 335, 338, 69, 334, 69, 337, 69, 69, - - 339, 69, 348, 340, 353, 341, 345, 69, 342, 354, - 69, 356, 349, 344, 2237, 69, 343, 69, 347, 357, - 350, 351, 69, 352, 367, 69, 365, 355, 361, 348, - 69, 353, 362, 69, 69, 363, 354, 364, 356, 349, - 358, 359, 69, 366, 69, 369, 357, 350, 351, 69, - 352, 69, 69, 365, 355, 361, 368, 370, 371, 362, - 372, 69, 363, 375, 364, 69, 373, 358, 359, 69, - 366, 69, 369, 69, 374, 69, 378, 377, 69, 383, - 69, 376, 388, 368, 370, 371, 69, 372, 69, 381, - 379, 382, 69, 373, 384, 69, 380, 385, 69, 386, - - 389, 374, 387, 378, 2237, 69, 383, 2237, 376, 69, - 2237, 390, 69, 69, 69, 2237, 381, 379, 382, 391, - 69, 384, 69, 380, 385, 69, 386, 389, 392, 387, - 393, 394, 395, 405, 397, 69, 406, 409, 390, 411, - 2237, 410, 69, 141, 69, 69, 391, 69, 396, 69, - 413, 69, 420, 2237, 69, 392, 69, 393, 394, 395, - 405, 397, 407, 406, 409, 412, 411, 408, 410, 414, - 2237, 415, 69, 69, 2237, 396, 398, 399, 69, 417, - 416, 2237, 69, 418, 69, 419, 400, 69, 401, 402, - 403, 69, 412, 404, 69, 421, 414, 69, 415, 422, - - 424, 69, 69, 398, 399, 69, 417, 416, 423, 425, - 418, 69, 419, 400, 69, 401, 402, 403, 426, 427, - 404, 69, 421, 428, 429, 2237, 422, 430, 431, 69, - 433, 432, 69, 435, 69, 423, 425, 434, 436, 69, - 438, 69, 69, 69, 447, 426, 427, 444, 443, 69, - 439, 2237, 69, 437, 430, 431, 69, 433, 432, 458, - 435, 69, 69, 69, 434, 436, 69, 438, 440, 69, - 445, 446, 448, 449, 444, 443, 69, 439, 69, 441, - 437, 442, 450, 452, 2237, 451, 69, 453, 454, 69, - 69, 69, 2237, 69, 69, 440, 455, 445, 446, 448, - - 449, 457, 69, 456, 461, 69, 441, 69, 442, 450, - 452, 459, 451, 69, 453, 454, 460, 69, 69, 462, - 463, 464, 69, 455, 466, 2237, 69, 69, 457, 465, - 456, 461, 467, 468, 69, 69, 69, 69, 459, 69, - 469, 2237, 470, 460, 472, 2237, 462, 463, 464, 471, - 69, 466, 69, 2237, 69, 69, 465, 473, 474, 467, - 468, 479, 475, 69, 480, 69, 69, 469, 69, 470, - 476, 472, 477, 478, 69, 69, 471, 69, 483, 69, - 69, 482, 489, 481, 473, 474, 485, 484, 479, 475, - 487, 69, 486, 490, 493, 69, 69, 476, 492, 477, - - 478, 69, 491, 69, 69, 483, 69, 69, 482, 489, - 481, 494, 495, 488, 484, 69, 69, 69, 69, 486, - 490, 493, 69, 69, 496, 492, 504, 2237, 497, 491, - 506, 2237, 514, 69, 69, 69, 69, 505, 494, 495, - 488, 69, 509, 510, 69, 69, 511, 2237, 507, 513, - 69, 496, 512, 504, 69, 497, 498, 506, 508, 514, - 517, 499, 515, 500, 505, 525, 69, 531, 69, 509, - 510, 501, 69, 511, 502, 69, 513, 69, 519, 512, - 69, 503, 69, 498, 516, 508, 518, 517, 499, 515, - 500, 69, 520, 523, 521, 522, 69, 69, 501, 69, - - 69, 502, 69, 524, 528, 519, 527, 69, 503, 526, - 69, 516, 530, 518, 69, 69, 529, 532, 69, 520, - 523, 521, 522, 533, 69, 534, 141, 535, 2237, 536, - 524, 528, 69, 527, 538, 69, 526, 537, 541, 69, - 69, 69, 539, 529, 532, 540, 544, 545, 546, 69, - 547, 69, 534, 69, 535, 69, 536, 542, 69, 69, - 69, 538, 543, 548, 537, 541, 549, 550, 554, 539, - 551, 553, 540, 544, 69, 69, 69, 556, 552, 69, - 555, 557, 69, 558, 559, 561, 2237, 69, 2237, 69, - 69, 562, 69, 69, 560, 554, 574, 551, 553, 69, - - 69, 69, 563, 69, 69, 552, 69, 555, 557, 69, - 558, 559, 570, 69, 564, 69, 567, 69, 562, 565, - 571, 560, 568, 566, 569, 69, 2237, 572, 69, 563, - 579, 576, 573, 69, 69, 575, 2237, 587, 69, 570, - 69, 564, 69, 567, 69, 577, 565, 571, 69, 568, - 566, 569, 69, 69, 572, 69, 580, 579, 576, 573, - 581, 582, 575, 583, 584, 585, 586, 578, 69, 69, - 594, 69, 577, 589, 588, 69, 69, 591, 69, 590, - 592, 69, 69, 580, 596, 69, 595, 581, 582, 69, - 583, 584, 585, 586, 578, 69, 593, 69, 597, 69, - - 589, 588, 69, 69, 591, 598, 590, 592, 69, 69, - 599, 603, 601, 595, 602, 600, 69, 605, 2237, 608, - 2237, 604, 69, 593, 612, 597, 69, 69, 69, 69, - 606, 609, 598, 610, 69, 69, 614, 616, 611, 601, - 2237, 602, 69, 69, 605, 607, 608, 613, 604, 69, - 69, 612, 615, 69, 69, 622, 2237, 606, 609, 617, - 69, 69, 69, 614, 616, 69, 618, 621, 69, 619, - 627, 620, 607, 69, 613, 69, 623, 69, 69, 615, - 624, 631, 622, 625, 628, 626, 617, 629, 69, 69, - 69, 69, 69, 618, 621, 69, 619, 69, 620, 630, - - 632, 633, 69, 623, 69, 635, 634, 624, 631, 638, - 625, 628, 626, 69, 629, 636, 69, 69, 637, 639, - 643, 640, 641, 69, 645, 69, 630, 632, 633, 69, - 2237, 69, 635, 634, 644, 646, 638, 69, 69, 69, - 69, 642, 636, 69, 69, 637, 639, 643, 640, 641, - 69, 645, 69, 69, 647, 648, 653, 649, 650, 654, - 655, 644, 646, 651, 69, 660, 656, 69, 642, 659, - 2237, 652, 657, 69, 69, 2237, 141, 677, 69, 69, - 69, 647, 648, 653, 649, 650, 654, 658, 661, 69, - 651, 662, 69, 656, 670, 69, 659, 69, 652, 657, - - 69, 663, 69, 69, 664, 2237, 69, 69, 672, 69, - 671, 69, 2237, 673, 658, 661, 675, 2237, 662, 2237, - 69, 670, 2237, 685, 674, 688, 69, 69, 663, 676, - 2237, 664, 665, 690, 69, 672, 666, 671, 686, 667, - 673, 691, 69, 675, 69, 69, 668, 69, 687, 669, - 685, 674, 688, 2237, 69, 69, 676, 69, 689, 665, - 69, 69, 693, 666, 692, 686, 667, 2237, 691, 2237, - 694, 695, 708, 668, 69, 687, 669, 678, 679, 697, - 680, 69, 69, 681, 696, 689, 701, 698, 682, 693, - 69, 692, 700, 69, 683, 684, 69, 694, 695, 708, - - 69, 69, 699, 69, 678, 679, 697, 680, 69, 69, - 681, 696, 69, 701, 698, 682, 702, 69, 703, 700, - 704, 683, 684, 69, 705, 706, 69, 707, 2237, 699, - 711, 709, 713, 710, 712, 714, 2237, 69, 715, 69, - 69, 2237, 716, 702, 2237, 703, 69, 704, 2237, 717, - 69, 705, 706, 718, 707, 69, 69, 69, 709, 720, - 710, 712, 69, 69, 69, 715, 719, 69, 69, 716, - 721, 722, 69, 723, 724, 69, 717, 725, 726, 69, - 718, 69, 730, 2237, 728, 729, 720, 727, 2237, 733, - 69, 731, 69, 719, 732, 69, 69, 721, 722, 2237, - - 69, 724, 69, 69, 725, 734, 69, 69, 735, 730, - 69, 728, 729, 69, 727, 69, 733, 69, 731, 736, - 737, 732, 69, 739, 740, 741, 69, 742, 738, 745, - 743, 69, 734, 744, 69, 735, 69, 2237, 746, 748, - 69, 747, 758, 755, 69, 69, 736, 737, 69, 69, - 739, 69, 741, 750, 742, 738, 745, 743, 749, 69, - 744, 69, 69, 751, 752, 746, 748, 69, 747, 753, - 69, 754, 759, 757, 69, 767, 756, 2237, 760, 69, - 750, 69, 69, 69, 764, 749, 69, 761, 2237, 766, - 751, 752, 69, 765, 762, 69, 753, 2237, 754, 69, - - 757, 69, 763, 756, 69, 760, 69, 69, 768, 69, - 769, 764, 770, 771, 761, 69, 766, 772, 2237, 69, - 765, 762, 773, 775, 69, 774, 69, 2237, 776, 763, - 777, 2237, 69, 778, 69, 768, 782, 769, 780, 770, - 69, 69, 69, 779, 772, 69, 69, 781, 2237, 69, - 141, 69, 774, 69, 69, 776, 2237, 777, 789, 790, - 778, 2237, 2237, 782, 791, 780, 797, 792, 794, 69, - 779, 798, 2237, 793, 781, 783, 69, 784, 2237, 795, - 69, 785, 69, 786, 69, 789, 790, 2237, 787, 800, - 796, 791, 799, 788, 792, 794, 69, 801, 69, 69, - - 793, 69, 783, 69, 784, 69, 795, 804, 785, 69, - 786, 802, 69, 805, 807, 787, 800, 796, 808, 799, - 788, 803, 806, 809, 801, 810, 69, 69, 69, 69, - 819, 817, 818, 69, 804, 820, 2237, 2237, 802, 69, - 805, 807, 821, 69, 822, 808, 69, 829, 803, 806, - 69, 823, 69, 827, 69, 69, 812, 819, 817, 818, - 824, 813, 820, 814, 825, 830, 69, 826, 69, 821, - 69, 822, 69, 69, 815, 69, 828, 831, 823, 69, - 69, 816, 69, 812, 832, 69, 833, 824, 813, 69, - 814, 825, 830, 834, 826, 836, 837, 835, 69, 69, - - 839, 815, 841, 828, 831, 69, 838, 840, 816, 842, - 69, 832, 843, 69, 69, 69, 2237, 69, 69, 69, - 834, 845, 836, 837, 835, 69, 846, 844, 69, 841, - 848, 69, 69, 838, 840, 858, 842, 847, 849, 843, - 69, 850, 2237, 851, 69, 852, 859, 853, 845, 69, - 2237, 69, 69, 846, 844, 69, 854, 69, 855, 856, - 69, 857, 69, 863, 847, 849, 864, 69, 850, 69, - 851, 860, 852, 859, 853, 865, 861, 69, 69, 866, - 69, 862, 69, 854, 867, 855, 856, 69, 857, 69, - 863, 69, 69, 864, 869, 868, 870, 871, 860, 69, - - 2237, 874, 865, 69, 872, 873, 866, 69, 69, 2237, - 69, 867, 69, 875, 876, 877, 878, 880, 879, 881, - 2237, 69, 868, 870, 871, 883, 69, 69, 874, 69, - 69, 872, 873, 882, 69, 69, 69, 69, 69, 884, - 875, 876, 877, 878, 880, 879, 69, 885, 887, 886, - 888, 69, 883, 889, 2237, 69, 69, 69, 896, 890, - 882, 891, 892, 69, 69, 895, 884, 893, 894, 897, - 898, 69, 900, 2237, 885, 887, 886, 888, 899, 901, - 69, 69, 69, 69, 69, 69, 890, 69, 891, 892, - 69, 69, 895, 903, 893, 894, 902, 898, 905, 69, - - 69, 69, 907, 906, 909, 899, 901, 69, 69, 69, - 69, 908, 69, 69, 910, 912, 911, 913, 914, 2237, - 903, 69, 69, 902, 915, 905, 917, 69, 69, 907, - 906, 909, 916, 920, 918, 926, 2237, 922, 908, 919, - 2237, 910, 912, 911, 921, 69, 69, 69, 69, 69, - 69, 915, 69, 917, 923, 69, 69, 69, 924, 916, - 920, 918, 69, 927, 922, 925, 919, 929, 928, 931, - 69, 921, 930, 69, 69, 934, 69, 69, 935, 69, - 932, 923, 2237, 933, 936, 924, 2237, 941, 69, 938, - 927, 69, 925, 937, 929, 928, 931, 940, 2237, 930, - - 69, 69, 934, 939, 69, 935, 69, 932, 945, 69, - 933, 936, 69, 69, 941, 69, 938, 942, 943, 944, - 937, 947, 2237, 949, 940, 69, 946, 69, 952, 948, - 939, 69, 951, 2237, 961, 69, 2237, 2237, 2237, 69, - 69, 69, 950, 69, 942, 943, 944, 956, 947, 69, - 949, 955, 69, 946, 69, 952, 948, 953, 954, 951, - 69, 957, 960, 958, 69, 69, 69, 2237, 69, 950, - 69, 965, 959, 69, 956, 964, 963, 966, 955, 69, - 69, 962, 69, 970, 953, 954, 967, 971, 957, 960, - 958, 968, 69, 69, 69, 69, 69, 969, 965, 959, - - 972, 69, 964, 963, 966, 69, 979, 980, 962, 981, - 970, 982, 984, 983, 971, 2237, 2237, 2237, 69, 2237, - 69, 985, 986, 2237, 969, 69, 69, 972, 973, 990, - 69, 974, 975, 979, 980, 69, 976, 69, 982, 984, - 983, 69, 977, 69, 69, 987, 978, 988, 985, 986, - 69, 69, 989, 991, 69, 973, 990, 993, 974, 975, - 994, 995, 2237, 976, 996, 1042, 69, 992, 2237, 977, - 69, 69, 987, 978, 988, 2237, 69, 2237, 1005, 989, - 991, 1002, 1004, 69, 1006, 1008, 2237, 69, 995, 69, - 1007, 996, 69, 2237, 992, 997, 69, 69, 69, 69, - - 998, 69, 999, 69, 1000, 1005, 1001, 69, 1002, 1004, - 1009, 1006, 1008, 69, 2237, 1010, 1012, 1007, 1013, 1011, - 1014, 2237, 997, 1015, 1016, 1021, 69, 998, 1023, 999, - 1017, 1000, 69, 1001, 69, 1018, 69, 69, 1019, 69, - 69, 1020, 69, 1012, 69, 1013, 1011, 1014, 69, 1022, - 1015, 1016, 69, 1024, 1027, 69, 1025, 1017, 1026, 1029, - 1028, 69, 1018, 69, 2237, 1019, 69, 69, 1020, 1030, - 1032, 1034, 1036, 1031, 1043, 1033, 1022, 69, 69, 69, - 1024, 69, 69, 1025, 1035, 1026, 69, 1028, 1037, 1039, - 1044, 69, 1038, 69, 69, 1041, 1030, 69, 1034, 1036, - - 1031, 69, 1033, 69, 1040, 1045, 69, 1046, 1049, 69, - 69, 1035, 69, 1047, 69, 1037, 1039, 1044, 2237, 1038, - 1048, 69, 1041, 1050, 69, 69, 1051, 1053, 1052, 2237, - 69, 1040, 69, 69, 1046, 69, 69, 69, 1054, 1056, - 1047, 1057, 1061, 1059, 1055, 1058, 69, 1048, 1060, 69, - 1050, 69, 69, 1051, 1063, 1052, 69, 1064, 69, 69, - 1062, 1065, 69, 69, 1067, 1054, 1056, 1071, 1057, 1061, - 1059, 1055, 1058, 1066, 69, 1060, 1072, 69, 1069, 69, - 1073, 1063, 1068, 1070, 1064, 69, 69, 1062, 69, 1074, - 69, 1067, 1075, 69, 1071, 69, 1076, 1077, 1078, 1079, - - 1066, 69, 2237, 1072, 2237, 1080, 1082, 1073, 1084, 1068, - 69, 69, 1085, 1081, 69, 1088, 1074, 69, 69, 1075, - 1083, 69, 69, 1076, 1077, 1078, 1097, 1086, 69, 69, - 1087, 69, 1080, 1082, 69, 1084, 69, 69, 69, 1085, - 1081, 1089, 1088, 1090, 1091, 1092, 69, 1083, 1093, 1094, - 69, 69, 1096, 1097, 1086, 1095, 1098, 1087, 69, 69, - 69, 69, 1100, 69, 1099, 1106, 1101, 1103, 1089, 1102, - 1090, 1091, 1092, 69, 69, 1093, 1094, 1105, 69, 1096, - 69, 69, 1095, 1098, 1104, 1107, 1108, 1110, 69, 1100, - 69, 1099, 69, 1101, 1103, 1109, 1102, 69, 1112, 69, - - 1111, 1113, 1114, 2237, 1105, 1117, 1115, 1119, 2237, 1131, - 69, 1104, 69, 1108, 69, 69, 69, 69, 69, 1116, - 1120, 69, 1109, 69, 2237, 1112, 69, 1111, 1113, 1114, - 1118, 69, 1117, 1115, 1119, 1121, 1122, 69, 1123, 69, - 1125, 69, 69, 1124, 69, 1126, 1116, 1120, 69, 1127, - 1128, 1129, 1130, 1132, 69, 1135, 69, 1118, 69, 69, - 69, 1133, 1121, 1122, 1134, 1136, 1137, 1138, 2237, 69, - 69, 1140, 69, 69, 69, 69, 1127, 1128, 1129, 1130, - 1132, 1139, 1144, 1142, 69, 69, 1143, 69, 1133, 69, - 1141, 1134, 1136, 1137, 1138, 69, 69, 1146, 1140, 1145, - - 1147, 1149, 1148, 1150, 1151, 2237, 69, 2237, 1139, 1144, - 1142, 1157, 69, 1143, 69, 69, 1152, 1141, 69, 1159, - 1153, 69, 69, 1156, 69, 69, 1145, 1147, 1149, 1148, - 1150, 1151, 1155, 1154, 69, 1158, 1161, 1160, 69, 69, - 1163, 69, 69, 1152, 69, 69, 1159, 1153, 1162, 1164, - 1156, 1166, 1165, 1168, 1167, 69, 1169, 69, 2237, 1155, - 1154, 69, 1158, 1161, 1160, 1170, 1171, 1172, 2237, 1173, - 1174, 1179, 69, 69, 1176, 1162, 69, 69, 1166, 1165, - 69, 1167, 69, 69, 1175, 69, 69, 69, 1177, 1180, - 1178, 69, 69, 1171, 1172, 69, 1173, 1174, 69, 1181, - - 1183, 1176, 69, 1182, 1184, 69, 69, 1188, 2237, 1185, - 69, 1175, 69, 1186, 2237, 1177, 1180, 1178, 1191, 1187, - 69, 69, 1190, 2237, 1189, 1192, 1181, 1183, 2237, 69, - 1182, 1184, 69, 69, 69, 69, 1185, 1196, 1195, 1199, - 1186, 69, 1198, 1193, 69, 1191, 1187, 69, 1194, 1190, - 69, 1189, 1192, 1197, 1200, 69, 69, 1202, 1204, 69, - 69, 69, 2237, 1203, 1196, 1195, 1199, 69, 1208, 1198, - 1193, 1201, 1206, 1205, 1207, 1194, 69, 69, 69, 1209, - 1197, 69, 1210, 1212, 1211, 69, 69, 1213, 1218, 69, - 1203, 69, 2237, 69, 69, 1208, 69, 1214, 1201, 1206, - - 1205, 1207, 69, 1219, 69, 69, 1209, 69, 1220, 1210, - 1212, 1211, 1215, 1223, 1213, 1216, 1221, 1222, 1224, 69, - 69, 1225, 1226, 1229, 1214, 69, 69, 1217, 2237, 1230, - 1219, 69, 1231, 1227, 1234, 1220, 69, 69, 69, 1215, - 1223, 69, 1216, 1221, 1222, 1228, 1233, 69, 1225, 1226, - 69, 69, 69, 1232, 1217, 69, 1230, 69, 1236, 1235, - 1227, 69, 1237, 1238, 69, 1239, 1240, 69, 69, 69, - 69, 1248, 1228, 1233, 1242, 1243, 1241, 1244, 69, 69, - 1232, 69, 1246, 1250, 69, 1236, 1235, 1245, 69, 1237, - 1238, 69, 1239, 1240, 69, 69, 1247, 2237, 69, 1249, - - 1252, 1242, 69, 1241, 1244, 69, 69, 69, 1251, 1246, - 1250, 1253, 69, 1254, 1245, 1256, 69, 1257, 2237, 1255, - 1261, 1258, 1265, 1247, 69, 1262, 1249, 1252, 69, 69, - 1263, 69, 1266, 69, 69, 1251, 1259, 69, 1253, 1260, - 1254, 69, 1256, 1264, 1257, 69, 1255, 1261, 1258, 69, - 1267, 1269, 1262, 1268, 69, 2237, 1270, 1263, 1271, 69, - 1272, 69, 1276, 1259, 1275, 1277, 1260, 69, 69, 1284, - 1264, 69, 1273, 69, 69, 1274, 69, 1267, 1269, 1278, - 1268, 1279, 69, 1270, 1280, 1271, 69, 1272, 1281, 1282, - 69, 1275, 69, 69, 69, 69, 1284, 1283, 1285, 1273, - - 69, 69, 1274, 1286, 1288, 1289, 1278, 69, 1279, 1287, - 1297, 1280, 69, 1295, 1290, 1281, 1282, 1294, 1296, 1299, - 69, 1300, 69, 1316, 1283, 1285, 69, 69, 1291, 69, - 1286, 1288, 1289, 1302, 1292, 1301, 1287, 1293, 1298, 1303, - 69, 1290, 69, 69, 1294, 69, 69, 69, 1300, 1304, - 69, 69, 69, 1306, 69, 1291, 1305, 1309, 1310, 1307, - 1302, 1292, 1313, 1308, 1293, 1298, 1303, 69, 1314, 1311, - 69, 69, 69, 2237, 1312, 1322, 69, 69, 69, 69, - 1306, 69, 69, 1305, 1309, 1310, 1307, 1318, 1315, 1319, - 1308, 1317, 1324, 69, 69, 1314, 1311, 69, 69, 1320, - - 1321, 1312, 1322, 1323, 69, 1325, 1331, 69, 1327, 1328, - 69, 69, 1326, 69, 1318, 1315, 1319, 1332, 1317, 1324, - 1335, 69, 69, 1329, 69, 69, 1320, 1321, 69, 1330, - 1323, 1333, 69, 1331, 1334, 1327, 1328, 69, 69, 1326, - 1336, 69, 1337, 69, 1338, 1340, 69, 1335, 1339, 69, - 1329, 1341, 1343, 1342, 1345, 1344, 1330, 2237, 1333, 69, - 2237, 1334, 69, 69, 1346, 1347, 69, 69, 69, 1337, - 69, 69, 1340, 69, 1349, 1339, 1348, 69, 69, 1343, - 1342, 1345, 1344, 1350, 1351, 1356, 1352, 69, 1355, 69, - 1354, 1346, 1347, 1357, 69, 69, 1358, 69, 1367, 1353, - - 69, 1349, 69, 1348, 69, 1361, 69, 1360, 1359, 1363, - 1350, 1351, 69, 1352, 69, 1355, 69, 1354, 1364, 1365, - 1362, 1366, 1369, 1358, 69, 69, 1353, 69, 1368, 1370, - 69, 1371, 69, 1373, 1360, 1359, 69, 1372, 69, 69, - 1374, 1376, 1375, 1383, 69, 1364, 69, 1362, 1366, 1387, - 2237, 1381, 69, 2237, 69, 1368, 1370, 69, 69, 1382, - 1373, 1391, 69, 69, 1372, 1388, 69, 69, 69, 1375, - 1377, 1378, 1379, 69, 1384, 69, 1387, 1380, 1381, 1385, - 1389, 69, 1390, 1394, 1386, 69, 1382, 1392, 1393, 69, - 69, 1395, 1388, 69, 69, 69, 69, 1377, 1378, 1379, - - 1397, 1384, 1396, 69, 1380, 69, 1398, 1389, 1400, 1390, - 1394, 69, 1399, 69, 1392, 1393, 1401, 69, 69, 1402, - 1404, 1406, 1403, 1413, 1405, 2237, 69, 1397, 69, 1396, - 1408, 69, 1407, 1398, 69, 1400, 69, 69, 1409, 1399, - 1412, 69, 1411, 69, 1410, 69, 1402, 69, 1406, 1403, - 69, 1405, 1415, 69, 1414, 69, 1416, 1408, 1417, 1407, - 1418, 69, 69, 2237, 69, 1409, 1420, 1412, 1421, 1411, - 1419, 1410, 69, 1428, 1422, 69, 1423, 1425, 1424, 1415, - 1427, 1414, 69, 2237, 69, 69, 69, 69, 69, 2237, - 69, 69, 69, 1420, 1429, 1421, 2237, 1419, 1426, 69, - - 1428, 1422, 69, 1423, 1425, 1424, 69, 1427, 1431, 1434, - 1430, 1432, 1433, 1435, 1437, 1436, 69, 69, 1440, 1443, - 69, 1429, 1441, 69, 1444, 1426, 69, 1445, 69, 1448, - 1451, 1442, 69, 69, 69, 1431, 1434, 1430, 1432, 1433, - 1435, 69, 1436, 1438, 69, 69, 1443, 1446, 1439, 1441, - 1449, 69, 1447, 1450, 69, 1453, 69, 1452, 1442, 69, - 1456, 69, 69, 1455, 1457, 69, 1454, 1458, 69, 69, - 1438, 1459, 69, 1460, 1462, 1439, 1461, 1449, 69, 69, - 1450, 69, 1453, 1463, 1452, 1465, 69, 1464, 1466, 1467, - 1455, 1457, 69, 1454, 69, 1469, 1470, 69, 1459, 69, - - 1460, 69, 69, 1461, 1468, 1471, 1472, 2237, 1475, 69, - 69, 69, 1473, 69, 1464, 1466, 1467, 69, 69, 1474, - 1476, 69, 1469, 1470, 1478, 69, 1477, 69, 1485, 69, - 1479, 1468, 1471, 1472, 69, 69, 1480, 69, 69, 1473, - 1481, 1483, 1482, 1484, 1490, 1486, 1474, 1476, 69, 69, - 69, 69, 1489, 1477, 69, 1487, 1491, 1479, 69, 1492, - 69, 69, 69, 1480, 69, 69, 1488, 1481, 1483, 1482, - 1484, 1490, 1486, 1493, 69, 1494, 1495, 1496, 1497, 1489, - 1498, 69, 1487, 1491, 69, 1499, 69, 69, 69, 69, - 1500, 1503, 1501, 1488, 1502, 2237, 1504, 1505, 69, 2237, - - 1493, 1507, 1494, 1495, 1538, 1497, 69, 1498, 1516, 69, - 69, 69, 1499, 2237, 69, 69, 69, 69, 1503, 1501, - 1506, 1502, 69, 1504, 1505, 1508, 69, 1509, 1507, 1510, - 69, 1511, 1512, 1515, 1514, 69, 69, 1517, 1519, 2237, - 69, 69, 69, 69, 1518, 1513, 69, 1506, 69, 1523, - 2237, 69, 1508, 69, 1509, 1520, 1510, 1522, 1511, 1512, - 1515, 1514, 69, 1521, 1517, 1519, 1524, 1525, 1526, 1527, - 69, 1518, 1513, 1528, 69, 69, 1523, 69, 1529, 69, - 1530, 1532, 1520, 1548, 1522, 1531, 69, 69, 69, 69, - 1521, 69, 1533, 1524, 1525, 1526, 1527, 1536, 69, 1534, - - 1528, 1535, 1537, 69, 1540, 1529, 69, 69, 1532, 69, - 1539, 1541, 1531, 1544, 1542, 69, 1545, 69, 69, 1533, - 1543, 69, 69, 69, 1536, 1550, 1534, 1546, 1535, 1537, - 69, 1540, 69, 69, 1549, 2237, 1552, 1539, 1541, 69, - 69, 1542, 69, 1545, 1547, 1551, 1554, 1543, 1553, 1555, - 69, 69, 1550, 1556, 1546, 1558, 69, 2237, 2237, 1557, - 69, 1549, 69, 1552, 69, 69, 1559, 1561, 1560, 1562, - 1564, 1547, 1551, 1554, 69, 1553, 1555, 69, 69, 1565, - 1556, 1566, 69, 69, 69, 1563, 1557, 1572, 69, 69, - 1567, 69, 69, 1559, 1561, 1560, 1562, 1564, 1569, 69, - - 1571, 1570, 69, 1568, 1573, 69, 1565, 1575, 1566, 1577, - 1576, 69, 1563, 69, 1572, 1574, 1578, 1567, 69, 69, - 1582, 1579, 1584, 1588, 1580, 1569, 1589, 1571, 1570, 1581, - 1568, 69, 69, 69, 69, 69, 1577, 1576, 69, 69, - 1585, 69, 1574, 1578, 1583, 1593, 1590, 1582, 1579, 69, - 1588, 69, 1592, 69, 1586, 1591, 69, 1595, 1594, 2237, - 1597, 69, 1598, 2237, 1596, 1587, 69, 1585, 1600, 69, - 69, 1583, 69, 1590, 1599, 1606, 69, 69, 2237, 1592, - 69, 1586, 1591, 69, 69, 1594, 69, 1597, 1602, 1598, - 69, 1596, 1587, 1601, 1603, 1600, 1604, 69, 1605, 1607, - - 69, 1599, 69, 1610, 69, 69, 1608, 1609, 1613, 69, - 1614, 1611, 69, 69, 1620, 1602, 69, 2237, 69, 69, - 1601, 1603, 69, 1604, 1612, 1605, 1607, 1617, 1615, 69, - 1610, 1619, 69, 1608, 1609, 1613, 69, 1614, 1611, 1616, - 1618, 69, 69, 69, 1621, 69, 69, 1622, 1626, 1623, - 1624, 1612, 1625, 1627, 1617, 1615, 1629, 1628, 1619, 1630, - 2237, 69, 69, 2237, 69, 1633, 1616, 1618, 69, 69, - 69, 1621, 1634, 1635, 1622, 69, 1623, 1624, 69, 1625, - 69, 1636, 1637, 1629, 1628, 69, 1630, 1631, 69, 69, - 1632, 1638, 69, 1639, 69, 69, 1640, 1642, 1643, 1634, - - 1635, 1644, 1641, 1645, 1647, 69, 69, 69, 1636, 1637, - 69, 1648, 69, 1646, 1631, 1649, 1651, 1632, 1638, 1650, - 69, 1654, 1657, 69, 69, 1643, 69, 69, 69, 1641, - 69, 1647, 1652, 69, 1653, 2237, 1655, 1661, 1648, 1658, - 1646, 69, 69, 69, 1659, 69, 1650, 69, 1654, 69, - 1660, 1656, 2237, 1662, 1666, 69, 69, 1668, 69, 1652, - 69, 1653, 69, 1655, 69, 1663, 1658, 1664, 1665, 69, - 1670, 1659, 1671, 69, 1667, 1673, 1669, 1660, 1656, 69, - 1662, 69, 69, 69, 69, 1672, 2237, 1676, 1674, 1675, - 69, 69, 1663, 69, 1664, 1665, 1677, 1670, 69, 1671, - - 1679, 1667, 1673, 1669, 69, 1678, 69, 1680, 1681, 69, - 1682, 69, 1672, 69, 1676, 1674, 1675, 1687, 1683, 69, - 1684, 1685, 69, 1677, 1690, 1692, 1689, 1679, 1686, 69, - 69, 1688, 1678, 69, 1680, 1681, 69, 1682, 69, 69, - 1691, 69, 69, 2237, 1693, 1683, 1698, 1684, 1685, 69, - 1697, 1690, 1694, 1689, 69, 1686, 1703, 69, 1688, 1699, - 1701, 1695, 69, 1696, 69, 1700, 69, 1691, 69, 1702, - 69, 1693, 69, 1698, 69, 1704, 69, 1697, 1705, 1694, - 69, 1707, 1708, 1703, 69, 69, 1699, 1701, 1695, 1706, - 1696, 1709, 1700, 1710, 1711, 1714, 1702, 69, 2237, 1712, - - 2237, 1713, 1704, 1716, 69, 1705, 1715, 1719, 69, 69, - 69, 69, 69, 69, 1717, 1718, 1706, 1720, 1709, 69, - 1725, 69, 1714, 1721, 1724, 69, 1712, 69, 1713, 1722, - 1716, 69, 1723, 1715, 1719, 1727, 69, 69, 69, 69, - 69, 1717, 1718, 69, 69, 69, 1726, 1725, 1728, 1729, - 1721, 1724, 1730, 69, 1731, 1732, 1722, 69, 1733, 1723, - 1735, 69, 1727, 1742, 1734, 69, 1737, 1739, 69, 2237, - 69, 1736, 1738, 1726, 1740, 1744, 1729, 69, 1746, 1730, - 69, 1731, 1732, 69, 69, 69, 1741, 1735, 1743, 1745, - 69, 1734, 69, 1737, 1739, 69, 69, 1747, 1736, 1738, - - 69, 1740, 69, 69, 1748, 69, 69, 69, 1749, 69, - 1750, 1751, 1752, 1741, 1753, 1743, 1745, 2237, 1754, 1757, - 1755, 1756, 1761, 1759, 1747, 69, 69, 69, 1764, 69, - 69, 1748, 1765, 1760, 1758, 1749, 1766, 69, 69, 1772, - 69, 1753, 1768, 69, 69, 1754, 1757, 1755, 1756, 69, - 69, 69, 1763, 1762, 69, 69, 1767, 1769, 69, 1765, - 1760, 1758, 69, 69, 69, 1771, 69, 69, 1770, 1768, - 69, 1773, 1774, 1775, 2237, 1777, 1776, 2237, 69, 1763, - 1762, 69, 1778, 1767, 1769, 69, 1780, 69, 69, 1779, - 1781, 1784, 1771, 1782, 1785, 1770, 2237, 69, 69, 69, - - 1775, 69, 1777, 1776, 69, 69, 69, 1783, 1788, 1778, - 1786, 69, 69, 1780, 69, 69, 1779, 1781, 69, 1787, - 1782, 1785, 69, 1790, 1789, 1792, 69, 69, 1791, 1793, - 2237, 1800, 1801, 1796, 1783, 1788, 69, 1786, 69, 1794, - 1797, 1795, 1798, 69, 69, 69, 1787, 1802, 1799, 1804, - 1790, 1789, 1792, 69, 69, 1791, 1793, 69, 69, 69, - 1796, 1813, 1803, 1809, 69, 69, 1794, 1797, 1795, 1798, - 69, 69, 1805, 69, 1802, 1799, 1804, 1806, 1807, 69, - 1808, 69, 1812, 69, 1810, 1811, 69, 69, 69, 1803, - 1809, 69, 1814, 1815, 69, 1816, 2237, 1818, 2237, 1805, - - 1824, 1817, 69, 1822, 1806, 1807, 69, 1808, 69, 1812, - 69, 1810, 1811, 69, 1819, 69, 1820, 1821, 1823, 1814, - 1815, 1826, 1816, 69, 1818, 69, 1825, 69, 1817, 1827, - 69, 2237, 69, 69, 1832, 69, 1828, 69, 1831, 1829, - 1830, 1819, 1833, 1820, 1821, 69, 69, 69, 1826, 1834, - 1835, 1842, 1837, 1825, 1836, 2237, 1827, 1838, 69, 69, - 69, 1832, 69, 1828, 69, 1831, 1829, 1830, 1840, 69, - 69, 1843, 1839, 1841, 69, 69, 1834, 69, 69, 1837, - 69, 1836, 1844, 69, 1838, 1845, 1849, 1846, 1848, 1847, - 1850, 69, 1851, 1852, 1853, 1840, 1854, 69, 1843, 1839, - - 1841, 69, 69, 1855, 69, 1856, 2237, 1857, 1860, 1844, - 69, 69, 69, 69, 1846, 1848, 1847, 1850, 1861, 69, - 69, 1853, 1858, 69, 1859, 69, 69, 69, 1862, 1864, - 1855, 1863, 69, 69, 1857, 1860, 1866, 69, 69, 2237, - 69, 69, 1865, 1867, 1868, 1861, 1870, 1869, 69, 1858, - 1871, 1859, 1872, 69, 1873, 1862, 1864, 1874, 1863, 69, - 1875, 69, 2237, 1866, 1876, 69, 69, 1879, 1877, 1865, - 1867, 1868, 69, 69, 1869, 1878, 69, 69, 1880, 1872, - 69, 1873, 69, 1882, 1881, 1884, 1885, 1875, 1883, 69, - 69, 1876, 1887, 1886, 69, 1877, 1889, 69, 69, 1888, - - 2237, 2237, 1878, 1890, 2237, 69, 1891, 69, 69, 1892, - 1893, 1881, 1884, 1894, 69, 69, 69, 69, 69, 1887, - 1886, 1899, 69, 1889, 69, 1896, 1888, 1897, 69, 1895, - 1890, 1898, 1900, 1891, 69, 69, 1892, 1893, 69, 69, - 1894, 1904, 1906, 1901, 1908, 69, 1902, 69, 1899, 69, - 69, 69, 1896, 69, 1897, 1903, 1895, 1905, 1898, 1900, - 69, 1914, 1907, 69, 1909, 69, 1910, 1912, 69, 1906, - 1901, 69, 69, 1902, 69, 1913, 1911, 1915, 69, 1916, - 2237, 1917, 1903, 69, 1905, 1920, 1918, 1919, 69, 1907, - 69, 1909, 1922, 1910, 1912, 1923, 69, 1921, 69, 69, - - 69, 69, 1926, 1911, 1915, 1927, 1916, 69, 1917, 69, - 69, 1928, 1920, 1918, 1919, 1929, 1924, 1931, 69, 1922, - 1925, 1932, 69, 69, 1921, 1930, 1935, 69, 69, 1926, - 1933, 2237, 69, 1934, 1936, 69, 1937, 1940, 1928, 69, - 1938, 69, 69, 1924, 69, 1939, 69, 1925, 69, 1941, - 1942, 69, 1930, 1943, 1944, 69, 1945, 1933, 69, 69, - 1934, 69, 1946, 1937, 1940, 1948, 1947, 69, 1949, 1950, - 69, 1955, 69, 1954, 2237, 1951, 1941, 69, 69, 1952, - 1943, 1944, 69, 69, 69, 1957, 69, 1953, 69, 1946, - 69, 1956, 1948, 1947, 69, 1949, 1950, 69, 69, 69, - - 1954, 1958, 1951, 1959, 69, 1960, 1952, 1961, 1962, 69, - 2237, 2237, 1957, 1964, 1953, 1963, 1965, 69, 1956, 69, - 69, 1966, 1969, 1970, 2237, 1972, 1973, 1971, 1958, 69, - 1959, 69, 1960, 69, 1961, 1962, 69, 69, 1967, 69, - 1964, 1974, 1963, 1965, 1968, 69, 69, 69, 1966, 69, - 1970, 69, 69, 1973, 1971, 1975, 1976, 1977, 1978, 1982, - 1980, 1981, 1984, 1979, 1983, 1967, 69, 1986, 69, 2237, - 2237, 1968, 2237, 69, 69, 1985, 69, 69, 69, 1987, - 1988, 1991, 1975, 1976, 1977, 69, 69, 1980, 1981, 1984, - 1979, 69, 1992, 69, 69, 69, 1989, 69, 69, 1990, - - 2237, 1997, 1985, 69, 1993, 1994, 1987, 1988, 1991, 1995, - 1999, 1998, 1996, 2000, 69, 2237, 2002, 69, 69, 1992, - 2001, 69, 69, 1989, 2003, 2004, 1990, 69, 69, 69, - 2008, 1993, 1994, 2006, 2010, 69, 1995, 1999, 1998, 1996, - 2000, 2007, 69, 2005, 2013, 2011, 69, 2001, 69, 69, - 69, 2003, 69, 69, 2009, 69, 69, 2012, 2016, 2014, - 2006, 69, 69, 2017, 2015, 2022, 2020, 2018, 2007, 69, - 2005, 69, 2011, 69, 69, 69, 69, 2019, 2021, 69, - 2024, 2009, 2025, 2027, 2012, 2016, 2014, 69, 69, 2023, - 2017, 2015, 69, 2020, 2018, 2026, 69, 69, 2029, 2030, - - 2028, 69, 2034, 2237, 2019, 2021, 2031, 69, 2032, 69, - 69, 69, 69, 69, 2036, 2033, 2023, 2035, 2037, 69, - 69, 2038, 2026, 69, 2040, 2029, 69, 2028, 69, 2034, - 69, 2039, 69, 2031, 2043, 2032, 2042, 2041, 2044, 2048, - 2045, 2036, 2033, 69, 2035, 69, 2049, 2047, 69, 69, - 2051, 2040, 69, 2046, 69, 2050, 2052, 2054, 2039, 69, - 2057, 69, 69, 2042, 2041, 2044, 69, 2045, 69, 2058, - 2060, 69, 2061, 69, 2047, 2062, 2053, 2051, 69, 69, - 2046, 2064, 2050, 2052, 69, 2055, 2056, 69, 69, 69, - 2059, 2065, 2063, 2066, 69, 69, 69, 69, 69, 2061, - - 2067, 2068, 2062, 2053, 2070, 2237, 2071, 2069, 69, 69, - 2072, 2073, 2055, 2056, 69, 69, 2074, 2059, 69, 2063, - 69, 2075, 69, 69, 69, 2076, 2079, 2067, 69, 2077, - 2080, 2070, 69, 2071, 2069, 2237, 2078, 69, 2073, 69, - 2081, 2087, 2084, 2074, 2085, 69, 2237, 2082, 2075, 69, - 2237, 69, 69, 2079, 69, 2086, 2077, 69, 2083, 69, - 69, 2089, 69, 2078, 69, 69, 2088, 2081, 2087, 2084, - 69, 2085, 2090, 69, 2082, 2093, 69, 2091, 2092, 2094, - 2096, 69, 2086, 69, 2095, 2083, 2097, 69, 2089, 2098, - 2099, 69, 2100, 2088, 2101, 2102, 2237, 2103, 2104, 2090, - - 2105, 69, 2093, 2107, 2091, 2092, 2094, 69, 2106, 69, - 2109, 2095, 69, 69, 2108, 2111, 2098, 69, 2112, 69, - 69, 69, 69, 69, 2103, 69, 2113, 2105, 2114, 2110, - 69, 2115, 2116, 69, 69, 2106, 2117, 2109, 69, 2119, - 2237, 2108, 2111, 69, 69, 2112, 2118, 2121, 69, 2122, - 2124, 69, 2123, 69, 69, 69, 2110, 2125, 2115, 2116, - 69, 2120, 2126, 69, 2127, 2128, 2119, 69, 2129, 69, - 2130, 69, 2131, 2118, 2121, 2132, 2122, 69, 2133, 2123, - 2135, 2134, 2137, 2138, 69, 2136, 69, 2139, 2120, 69, - 69, 69, 69, 69, 69, 2129, 2140, 69, 2144, 69, - - 69, 2142, 2132, 2141, 69, 2133, 69, 69, 2134, 2137, - 69, 69, 2136, 2143, 2139, 69, 2145, 2148, 69, 2146, - 2147, 69, 69, 2140, 69, 2144, 69, 2150, 2142, 2149, - 2141, 2157, 2237, 69, 2151, 2154, 2237, 69, 2153, 69, - 2143, 69, 69, 2145, 2148, 69, 2146, 2147, 2152, 69, - 2158, 2155, 2156, 2159, 2150, 2160, 2149, 69, 69, 69, - 2161, 2151, 2154, 69, 2162, 2153, 2163, 2164, 69, 69, - 2166, 2165, 2167, 2168, 2172, 2152, 2173, 2158, 2155, 2156, - 69, 69, 2160, 69, 2169, 69, 69, 69, 69, 2171, - 2174, 2162, 2170, 2163, 2164, 2175, 69, 69, 2165, 2167, - - 69, 69, 69, 69, 2176, 2177, 69, 2178, 69, 69, - 2180, 2169, 69, 2179, 2181, 2182, 2171, 2174, 69, 2170, - 2237, 69, 2175, 69, 69, 2183, 2184, 2185, 69, 2186, - 69, 2176, 2177, 2187, 2178, 69, 2188, 2180, 2237, 2189, - 2179, 2181, 2182, 2190, 2193, 2192, 2197, 69, 69, 2191, - 2237, 2237, 2183, 2184, 2185, 2194, 69, 69, 69, 69, - 2187, 69, 2200, 2188, 2195, 69, 2189, 2237, 2204, 2199, - 2190, 69, 69, 2196, 2237, 69, 2191, 69, 69, 2198, - 2201, 69, 2194, 69, 69, 2202, 2205, 69, 69, 2200, - 2203, 2195, 2207, 69, 69, 2204, 2199, 2206, 2237, 2208, - - 2196, 2209, 2210, 2211, 69, 69, 2198, 2201, 69, 2212, - 2216, 69, 2202, 2205, 2213, 2214, 2237, 2203, 69, 2207, - 2237, 2218, 69, 69, 2206, 69, 2208, 2219, 2209, 2210, - 2211, 2215, 69, 2222, 69, 69, 69, 2216, 2217, 69, - 2225, 2213, 2214, 69, 2220, 2221, 69, 2223, 2218, 69, - 2226, 2228, 69, 69, 2219, 69, 2224, 2229, 2215, 69, - 2222, 2227, 2230, 2231, 69, 2217, 69, 2225, 2233, 2232, - 2235, 2220, 2221, 2236, 2223, 2237, 69, 69, 69, 2234, - 2237, 69, 69, 2224, 69, 69, 2237, 69, 2227, 2230, - 2231, 69, 2237, 2237, 2237, 2233, 2232, 69, 2237, 2237, - - 69, 2237, 2237, 2237, 2237, 2237, 2234, 41, 41, 41, - 41, 41, 41, 41, 46, 46, 46, 46, 46, 46, - 46, 51, 51, 51, 51, 51, 51, 51, 57, 57, - 57, 57, 57, 57, 57, 62, 62, 62, 62, 62, - 62, 62, 72, 72, 2237, 72, 72, 72, 72, 131, - 131, 2237, 2237, 2237, 131, 131, 133, 133, 2237, 2237, - 133, 2237, 133, 135, 2237, 2237, 2237, 2237, 2237, 135, - 138, 138, 2237, 2237, 2237, 138, 138, 140, 2237, 2237, - 2237, 2237, 2237, 140, 142, 142, 2237, 142, 142, 142, - 142, 73, 73, 2237, 73, 73, 73, 73, 13, 2237, - - 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, - 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, - 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, - 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, - 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, - 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, - 2237, 2237, 2237, 2237, 2237 + 14, 14, 18, 20, 21, 22, 23, 24, 25, 14, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 14, 14, 14, 14, 41, + 20, 21, 22, 23, 24, 25, 14, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 14, 14, 14, 14, 43, 44, 45, 43, + 44, 45, 48, 49, 48, 49, 50, 99, 50, 53, + 54, 55, 56, 69, 18, 53, 54, 55, 56, 70, + 18, 59, 60, 61, 59, 60, 61, 71, 79, 133, + + 133, 72, 101, 46, 99, 135, 46, 143, 135, 51, + 74, 51, 74, 74, 70, 74, 71, 57, 140, 140, + 72, 74, 147, 57, 70, 79, 76, 77, 62, 101, + 922, 62, 15, 16, 17, 64, 65, 66, 15, 16, + 17, 64, 65, 66, 78, 89, 70, 91, 75, 147, + 70, 93, 67, 76, 77, 80, 143, 109, 67, 94, + 70, 92, 81, 70, 828, 90, 82, 115, 70, 83, + 68, 78, 89, 70, 91, 1021, 68, 70, 93, 67, + 70, 70, 80, 100, 109, 67, 94, 146, 92, 81, + 141, 149, 90, 82, 115, 70, 83, 84, 70, 95, + + 143, 85, 96, 70, 86, 70, 87, 88, 139, 97, + 100, 98, 138, 125, 146, 126, 136, 106, 149, 70, + 134, 107, 70, 148, 84, 70, 95, 102, 85, 96, + 127, 86, 150, 87, 88, 103, 97, 108, 98, 70, + 125, 104, 126, 70, 106, 105, 70, 128, 107, 153, + 148, 143, 129, 70, 102, 141, 70, 127, 70, 150, + 70, 116, 103, 130, 108, 117, 139, 131, 104, 155, + 187, 132, 105, 110, 128, 118, 153, 111, 119, 129, + 133, 133, 70, 112, 70, 154, 113, 70, 116, 70, + 130, 161, 117, 114, 131, 70, 155, 187, 132, 70, + + 110, 207, 118, 70, 111, 119, 69, 167, 69, 69, + 112, 69, 154, 113, 160, 138, 70, 69, 161, 70, + 114, 120, 136, 137, 121, 137, 137, 74, 137, 74, + 74, 122, 74, 70, 167, 123, 124, 142, 134, 142, + 142, 160, 142, 70, 69, 70, 69, 69, 120, 69, + 156, 121, 158, 159, 162, 69, 157, 151, 122, 2287, + 164, 70, 123, 124, 74, 145, 74, 74, 176, 74, + 152, 70, 163, 70, 166, 74, 170, 156, 165, 158, + 159, 70, 168, 157, 151, 70, 70, 164, 169, 2287, + 70, 70, 177, 171, 140, 140, 222, 152, 70, 163, + + 70, 166, 75, 170, 2287, 165, 70, 172, 178, 168, + 173, 70, 2287, 2287, 2287, 169, 70, 181, 179, 177, + 171, 182, 183, 174, 175, 70, 184, 186, 70, 185, + 135, 70, 189, 135, 172, 178, 190, 173, 180, 70, + 70, 70, 188, 70, 181, 179, 70, 70, 182, 183, + 174, 175, 70, 184, 186, 191, 185, 192, 193, 189, + 197, 2287, 70, 190, 70, 180, 194, 70, 196, 188, + 195, 198, 2287, 202, 2287, 70, 2287, 199, 70, 203, + 70, 70, 191, 200, 192, 193, 70, 197, 70, 201, + 204, 70, 208, 194, 205, 196, 211, 195, 198, 206, + + 202, 70, 209, 70, 199, 70, 203, 70, 213, 212, + 200, 224, 214, 70, 70, 217, 201, 204, 216, 208, + 70, 205, 210, 211, 219, 218, 206, 70, 70, 209, + 70, 2287, 2287, 215, 70, 213, 212, 70, 224, 214, + 70, 2287, 217, 220, 2287, 216, 70, 221, 2287, 210, + 2287, 219, 218, 137, 225, 137, 137, 228, 137, 142, + 215, 142, 142, 74, 142, 74, 74, 143, 74, 70, + 220, 223, 226, 70, 221, 227, 230, 235, 229, 70, + 70, 225, 231, 70, 228, 70, 233, 70, 232, 2287, + 234, 236, 2287, 2287, 70, 237, 2287, 244, 223, 226, + + 325, 145, 227, 230, 246, 229, 247, 248, 70, 70, + 245, 70, 238, 233, 70, 232, 70, 234, 70, 70, + 249, 255, 237, 70, 244, 251, 70, 250, 70, 70, + 70, 246, 252, 247, 248, 2287, 2287, 245, 70, 238, + 239, 2287, 256, 70, 70, 240, 257, 249, 255, 70, + 241, 2287, 251, 2287, 250, 253, 242, 243, 254, 252, + 2287, 258, 265, 70, 70, 264, 259, 239, 70, 256, + 70, 266, 240, 257, 262, 2287, 70, 241, 260, 263, + 261, 269, 253, 242, 243, 254, 70, 70, 258, 267, + 270, 272, 264, 259, 70, 276, 70, 70, 266, 274, + + 268, 262, 273, 271, 275, 260, 263, 261, 70, 70, + 2287, 277, 278, 70, 280, 70, 2287, 270, 284, 279, + 2287, 70, 276, 70, 70, 70, 70, 268, 282, 273, + 271, 70, 281, 70, 283, 70, 70, 70, 277, 278, + 70, 280, 285, 287, 288, 284, 279, 70, 70, 286, + 70, 290, 291, 289, 70, 282, 292, 70, 297, 281, + 70, 283, 70, 293, 294, 295, 70, 298, 296, 285, + 287, 288, 70, 299, 70, 70, 286, 301, 290, 291, + 289, 300, 305, 70, 302, 297, 303, 70, 70, 70, + 293, 294, 70, 310, 298, 296, 306, 70, 308, 312, + + 309, 70, 70, 311, 301, 70, 313, 314, 300, 304, + 70, 302, 315, 307, 70, 143, 320, 2287, 70, 317, + 310, 70, 70, 306, 319, 308, 316, 309, 70, 70, + 311, 70, 70, 313, 314, 70, 304, 70, 70, 318, + 307, 322, 323, 320, 70, 321, 317, 70, 70, 324, + 326, 319, 327, 316, 328, 333, 2287, 2287, 330, 70, + 329, 332, 331, 334, 337, 70, 318, 70, 322, 323, + 70, 70, 321, 70, 336, 70, 324, 326, 70, 327, + 70, 328, 333, 335, 70, 330, 70, 329, 332, 331, + 70, 337, 338, 339, 340, 70, 70, 342, 2287, 341, + + 347, 70, 343, 70, 344, 2287, 70, 353, 70, 345, + 335, 346, 2287, 348, 70, 349, 70, 367, 2287, 338, + 70, 340, 70, 70, 342, 70, 341, 347, 350, 343, + 70, 344, 351, 70, 352, 355, 345, 70, 346, 70, + 348, 70, 349, 354, 70, 360, 363, 374, 2287, 70, + 70, 365, 366, 361, 364, 350, 70, 356, 368, 351, + 70, 352, 355, 70, 2287, 357, 358, 70, 359, 70, + 354, 362, 360, 363, 70, 70, 70, 70, 365, 366, + 361, 364, 70, 372, 356, 368, 369, 371, 373, 370, + 375, 377, 357, 358, 376, 359, 70, 378, 362, 70, + + 382, 70, 380, 70, 385, 2287, 70, 379, 384, 70, + 372, 381, 70, 369, 371, 373, 370, 375, 377, 70, + 70, 376, 70, 70, 378, 386, 383, 391, 395, 380, + 70, 2287, 70, 70, 379, 384, 70, 387, 381, 389, + 70, 390, 396, 388, 2287, 392, 70, 70, 393, 397, + 394, 400, 386, 383, 391, 395, 70, 401, 70, 70, + 2287, 2287, 2287, 70, 387, 398, 389, 402, 390, 70, + 388, 70, 392, 399, 70, 393, 397, 394, 400, 70, + 70, 403, 405, 414, 401, 415, 413, 417, 418, 421, + 416, 419, 398, 143, 402, 70, 70, 404, 70, 2287, + + 399, 70, 70, 70, 420, 70, 2287, 2287, 403, 405, + 414, 70, 422, 413, 417, 418, 421, 70, 419, 424, + 425, 423, 426, 70, 404, 406, 407, 70, 427, 70, + 2287, 420, 428, 429, 431, 408, 430, 409, 410, 411, + 70, 70, 412, 432, 70, 70, 424, 425, 423, 426, + 70, 434, 406, 407, 70, 427, 2287, 437, 70, 428, + 429, 431, 408, 433, 409, 410, 411, 436, 70, 412, + 432, 435, 443, 70, 438, 439, 70, 441, 70, 70, + 440, 442, 445, 70, 437, 70, 444, 70, 70, 457, + 433, 446, 70, 448, 436, 454, 2287, 449, 435, 443, + + 2287, 453, 70, 70, 441, 70, 447, 440, 442, 445, + 70, 70, 450, 444, 70, 455, 456, 70, 446, 70, + 448, 70, 454, 451, 449, 452, 458, 459, 453, 461, + 70, 468, 70, 447, 70, 460, 2287, 462, 70, 450, + 463, 464, 455, 456, 70, 466, 2287, 465, 70, 467, + 451, 70, 452, 458, 459, 70, 461, 469, 70, 70, + 471, 472, 460, 70, 462, 470, 70, 463, 464, 70, + 473, 70, 466, 475, 465, 70, 467, 476, 474, 70, + 70, 2287, 70, 478, 469, 70, 477, 471, 472, 70, + 479, 2287, 470, 70, 480, 481, 70, 473, 490, 482, + + 475, 70, 484, 70, 476, 474, 483, 488, 70, 70, + 478, 495, 485, 477, 70, 489, 70, 479, 70, 491, + 70, 480, 481, 486, 70, 487, 482, 70, 70, 484, + 70, 492, 70, 483, 488, 493, 494, 70, 496, 485, + 497, 500, 489, 70, 501, 70, 491, 498, 70, 504, + 486, 502, 487, 70, 70, 70, 70, 2287, 492, 506, + 2287, 505, 493, 494, 70, 496, 70, 497, 500, 503, + 499, 501, 70, 70, 507, 70, 504, 515, 502, 70, + 517, 70, 508, 2287, 70, 70, 506, 516, 505, 518, + 70, 70, 520, 521, 2287, 70, 503, 499, 2287, 519, + + 70, 507, 2287, 522, 515, 524, 523, 517, 70, 508, + 509, 525, 526, 2287, 516, 510, 70, 511, 2287, 520, + 521, 70, 527, 70, 536, 512, 519, 70, 513, 70, + 522, 70, 524, 523, 70, 514, 70, 509, 525, 526, + 528, 529, 510, 530, 511, 531, 70, 533, 70, 527, + 532, 537, 512, 535, 534, 513, 70, 2287, 70, 70, + 538, 539, 514, 70, 541, 70, 70, 528, 529, 70, + 530, 540, 531, 542, 533, 70, 143, 532, 537, 543, + 535, 534, 544, 546, 70, 70, 545, 538, 539, 70, + 547, 541, 70, 2287, 548, 549, 551, 550, 540, 552, + + 542, 70, 553, 555, 558, 70, 70, 70, 556, 559, + 70, 557, 560, 545, 70, 70, 554, 547, 70, 70, + 70, 548, 549, 551, 550, 70, 552, 70, 561, 553, + 562, 70, 563, 564, 565, 70, 70, 569, 557, 70, + 566, 2287, 2287, 554, 70, 568, 567, 570, 70, 571, + 574, 2287, 573, 572, 580, 70, 70, 70, 70, 70, + 564, 565, 575, 70, 70, 70, 581, 566, 70, 70, + 70, 2287, 568, 567, 570, 70, 571, 576, 577, 573, + 572, 580, 70, 578, 70, 582, 583, 579, 585, 575, + 70, 586, 70, 581, 70, 584, 587, 589, 588, 2287, + + 2287, 70, 70, 70, 576, 577, 2287, 590, 70, 592, + 578, 593, 582, 583, 579, 585, 70, 70, 586, 600, + 596, 70, 584, 2287, 589, 588, 594, 595, 70, 591, + 70, 70, 597, 70, 590, 598, 592, 70, 593, 601, + 599, 70, 70, 604, 602, 603, 70, 596, 605, 607, + 70, 70, 609, 594, 595, 70, 591, 70, 608, 597, + 70, 606, 598, 610, 611, 70, 601, 599, 70, 70, + 604, 602, 603, 612, 70, 605, 616, 618, 613, 614, + 70, 70, 615, 619, 70, 608, 70, 70, 606, 617, + 610, 611, 621, 70, 626, 70, 70, 70, 620, 622, + + 623, 627, 2287, 70, 618, 70, 614, 70, 70, 615, + 619, 628, 624, 2287, 70, 629, 617, 625, 630, 2287, + 70, 626, 70, 70, 70, 620, 622, 623, 627, 633, + 631, 632, 635, 636, 634, 637, 70, 70, 628, 70, + 70, 70, 629, 70, 70, 630, 641, 70, 2287, 2287, + 644, 70, 646, 640, 638, 70, 633, 631, 632, 635, + 636, 634, 637, 70, 639, 70, 642, 643, 70, 645, + 2287, 648, 70, 647, 70, 70, 70, 644, 70, 646, + 640, 638, 70, 651, 652, 650, 654, 653, 2287, 649, + 2287, 639, 70, 642, 643, 70, 645, 70, 648, 70, + + 647, 655, 657, 70, 659, 661, 70, 70, 70, 656, + 651, 652, 650, 654, 653, 658, 649, 70, 70, 660, + 662, 2287, 70, 70, 664, 663, 665, 143, 655, 657, + 70, 659, 661, 70, 2287, 666, 656, 70, 668, 669, + 671, 670, 658, 667, 70, 2287, 660, 662, 70, 70, + 673, 664, 663, 70, 674, 675, 672, 70, 676, 677, + 2287, 70, 666, 70, 70, 70, 669, 678, 670, 70, + 667, 691, 70, 70, 689, 688, 70, 673, 70, 687, + 686, 674, 675, 672, 680, 679, 677, 70, 692, 70, + 70, 70, 70, 70, 678, 70, 690, 70, 691, 693, + + 2287, 689, 688, 2287, 2287, 2287, 687, 686, 2287, 703, + 701, 680, 679, 681, 70, 692, 702, 682, 70, 70, + 683, 705, 70, 690, 704, 706, 70, 684, 711, 707, + 685, 70, 70, 724, 2287, 70, 703, 701, 2287, 708, + 681, 709, 70, 702, 682, 70, 710, 683, 705, 70, + 70, 704, 70, 70, 684, 711, 707, 685, 694, 695, + 724, 696, 2287, 712, 697, 70, 708, 713, 709, 698, + 714, 716, 70, 710, 2287, 699, 700, 715, 717, 70, + 2287, 2287, 721, 729, 70, 694, 695, 70, 696, 70, + 712, 697, 70, 718, 713, 70, 698, 714, 716, 719, + + 70, 70, 699, 700, 715, 717, 720, 70, 70, 721, + 722, 723, 725, 726, 727, 70, 2287, 730, 731, 2287, + 718, 728, 70, 732, 70, 70, 719, 70, 733, 2287, + 739, 736, 734, 720, 742, 70, 737, 722, 723, 725, + 726, 70, 70, 70, 70, 731, 738, 70, 728, 70, + 732, 70, 735, 70, 70, 733, 70, 70, 736, 734, + 740, 70, 741, 737, 743, 744, 70, 745, 747, 746, + 750, 748, 70, 738, 749, 2287, 2287, 2287, 70, 735, + 751, 70, 70, 70, 70, 70, 752, 740, 70, 741, + 70, 743, 744, 70, 745, 747, 746, 750, 748, 753, + + 70, 749, 70, 754, 70, 757, 756, 751, 758, 760, + 761, 755, 759, 752, 70, 70, 762, 70, 763, 765, + 766, 70, 764, 768, 2287, 70, 753, 70, 772, 70, + 754, 70, 70, 756, 70, 758, 760, 761, 755, 759, + 70, 70, 70, 762, 767, 763, 765, 766, 769, 764, + 768, 770, 70, 771, 773, 70, 774, 775, 776, 777, + 778, 70, 2287, 70, 70, 2287, 781, 782, 70, 70, + 783, 767, 784, 70, 70, 769, 779, 2287, 770, 790, + 771, 773, 70, 774, 780, 785, 777, 778, 70, 70, + 70, 70, 786, 781, 782, 788, 70, 783, 789, 787, + + 2287, 70, 792, 779, 70, 70, 70, 791, 793, 70, + 794, 780, 785, 70, 795, 796, 70, 797, 70, 786, + 70, 798, 70, 806, 807, 789, 787, 70, 70, 143, + 70, 808, 799, 70, 791, 793, 2287, 794, 70, 2287, + 810, 795, 796, 70, 797, 811, 2287, 70, 798, 70, + 806, 807, 809, 812, 70, 2287, 813, 70, 808, 799, + 800, 816, 801, 70, 818, 814, 802, 810, 803, 70, + 815, 817, 811, 804, 70, 70, 70, 2287, 805, 809, + 812, 821, 819, 813, 70, 825, 822, 800, 816, 801, + 823, 818, 820, 802, 70, 803, 70, 70, 817, 70, + + 804, 824, 826, 70, 70, 805, 70, 2287, 821, 819, + 827, 2287, 825, 822, 70, 834, 2287, 823, 2287, 820, + 836, 837, 835, 2287, 838, 846, 2287, 840, 824, 2287, + 70, 839, 842, 70, 70, 844, 70, 70, 829, 841, + 70, 850, 834, 830, 70, 831, 70, 836, 837, 835, + 70, 838, 70, 70, 840, 845, 832, 70, 839, 842, + 843, 847, 70, 833, 70, 829, 841, 848, 70, 855, + 830, 851, 831, 70, 853, 70, 852, 849, 70, 854, + 70, 856, 845, 832, 70, 70, 2287, 843, 847, 857, + 833, 70, 70, 70, 848, 859, 855, 70, 851, 861, + + 858, 853, 860, 852, 849, 863, 854, 70, 70, 70, + 864, 862, 70, 70, 865, 868, 857, 70, 70, 875, + 866, 2287, 859, 70, 70, 2287, 861, 858, 70, 860, + 870, 867, 863, 70, 871, 2287, 869, 864, 862, 70, + 872, 873, 868, 874, 877, 2287, 70, 866, 70, 878, + 876, 70, 70, 883, 879, 70, 70, 870, 867, 70, + 882, 871, 70, 869, 70, 886, 70, 872, 873, 70, + 874, 877, 880, 885, 890, 881, 884, 876, 2287, 887, + 883, 70, 891, 70, 70, 70, 70, 882, 888, 889, + 896, 893, 894, 895, 892, 70, 70, 70, 70, 880, + + 885, 890, 881, 884, 70, 70, 887, 898, 70, 891, + 899, 70, 70, 70, 70, 888, 889, 896, 893, 894, + 895, 892, 897, 900, 902, 905, 901, 903, 70, 906, + 904, 907, 70, 70, 898, 70, 70, 70, 70, 908, + 909, 70, 912, 70, 911, 913, 910, 914, 70, 897, + 900, 902, 905, 901, 903, 70, 906, 904, 70, 915, + 70, 70, 70, 70, 2287, 916, 908, 909, 70, 912, + 918, 911, 913, 910, 917, 919, 920, 70, 921, 70, + 924, 923, 926, 70, 70, 931, 925, 927, 929, 70, + 70, 70, 916, 70, 70, 70, 70, 70, 70, 928, + + 70, 917, 919, 920, 930, 921, 932, 924, 923, 926, + 933, 70, 70, 925, 927, 929, 934, 70, 935, 940, + 936, 937, 938, 939, 2287, 944, 928, 70, 2287, 2287, + 942, 930, 70, 70, 70, 70, 941, 933, 70, 2287, + 70, 70, 70, 934, 70, 935, 940, 936, 937, 938, + 939, 943, 70, 945, 947, 946, 70, 942, 948, 70, + 952, 953, 949, 941, 70, 70, 70, 956, 957, 2287, + 954, 963, 2287, 950, 959, 70, 951, 70, 943, 955, + 945, 947, 946, 70, 70, 948, 70, 952, 953, 949, + 70, 70, 70, 958, 956, 957, 70, 954, 70, 960, + + 950, 959, 961, 951, 962, 964, 955, 70, 967, 965, + 966, 70, 70, 968, 969, 970, 70, 972, 2287, 979, + 958, 999, 70, 70, 70, 70, 960, 70, 70, 961, + 70, 962, 964, 974, 70, 967, 965, 966, 971, 973, + 968, 969, 970, 975, 972, 976, 70, 983, 70, 977, + 978, 70, 70, 70, 70, 70, 70, 982, 980, 981, + 974, 990, 2287, 2287, 70, 971, 973, 984, 70, 70, + 975, 70, 976, 987, 983, 985, 977, 978, 70, 988, + 986, 70, 70, 989, 982, 980, 981, 70, 990, 997, + 998, 1001, 70, 1010, 984, 1000, 2287, 70, 2287, 2287, + + 987, 1005, 70, 70, 1003, 1002, 988, 70, 70, 2287, + 989, 991, 1004, 70, 992, 993, 997, 998, 1001, 994, + 1010, 70, 1000, 70, 1040, 995, 70, 70, 1005, 996, + 1006, 1003, 1002, 70, 70, 1007, 1008, 70, 991, 1004, + 1011, 992, 993, 1012, 1013, 2287, 994, 1009, 2287, 1022, + 1014, 70, 995, 70, 1020, 2287, 996, 1006, 70, 1023, + 70, 1025, 1007, 1008, 2287, 70, 70, 1024, 2287, 1061, + 70, 1013, 70, 70, 1009, 70, 1022, 1014, 1015, 70, + 70, 1020, 70, 1016, 1026, 1017, 1023, 1018, 1025, 1019, + 1027, 1029, 1031, 1033, 1024, 1028, 70, 1030, 1032, 1034, + + 70, 70, 70, 2287, 70, 1015, 70, 1038, 1039, 70, + 1016, 1026, 1017, 1036, 1018, 70, 1019, 70, 1029, 1031, + 1033, 70, 70, 1035, 1030, 1032, 1034, 1041, 1037, 1042, + 70, 70, 1046, 1043, 1038, 1039, 70, 70, 1045, 70, + 1036, 1044, 1047, 1048, 1049, 1050, 70, 1051, 1054, 70, + 1035, 70, 1056, 2287, 1041, 1037, 70, 70, 1062, 70, + 1043, 1053, 1055, 70, 1063, 1045, 70, 70, 1044, 1047, + 70, 1049, 1050, 1052, 70, 1054, 1057, 1058, 70, 1056, + 70, 1059, 1060, 70, 70, 70, 70, 1064, 1053, 1055, + 70, 1063, 2287, 1065, 1066, 1068, 70, 1067, 70, 1069, + + 1052, 70, 70, 1057, 1058, 1070, 70, 1072, 1059, 1060, + 1071, 70, 70, 70, 70, 1077, 1076, 1073, 1075, 70, + 1065, 1066, 70, 1074, 1067, 70, 1069, 1078, 70, 1079, + 70, 70, 1070, 1080, 1084, 1083, 70, 1071, 1082, 70, + 70, 1086, 1077, 1076, 1073, 1075, 1081, 70, 70, 1085, + 1074, 1087, 1090, 70, 1078, 70, 1079, 70, 1091, 70, + 1080, 70, 1083, 70, 1088, 1082, 1097, 1092, 1086, 1089, + 70, 1093, 1099, 1081, 1094, 1098, 1085, 70, 1087, 1090, + 70, 1095, 1100, 70, 1096, 1091, 2287, 1102, 70, 2287, + 1101, 70, 2287, 1097, 1092, 70, 70, 1105, 1093, 1103, + + 70, 1094, 1098, 70, 70, 70, 70, 1104, 1095, 1100, + 1108, 1096, 1106, 1107, 1102, 1110, 70, 1101, 1109, 70, + 70, 70, 1112, 70, 1105, 1116, 1103, 70, 1111, 1113, + 1115, 1117, 1114, 70, 1104, 70, 1120, 1108, 70, 1106, + 1107, 70, 1110, 70, 70, 1109, 1118, 70, 1121, 1112, + 1123, 70, 1116, 1119, 70, 1111, 1113, 1115, 1117, 1114, + 1122, 1124, 70, 1120, 1125, 1126, 1127, 70, 70, 1128, + 2287, 70, 70, 1118, 70, 1121, 1129, 1123, 1130, 2287, + 1119, 1131, 1132, 1133, 2287, 1137, 70, 1122, 1124, 1135, + 2287, 1125, 70, 1134, 1136, 70, 1128, 70, 70, 1139, + + 70, 70, 70, 1129, 70, 70, 70, 1140, 1131, 1132, + 1133, 70, 1137, 2287, 70, 1138, 1135, 1141, 70, 1142, + 1134, 1136, 70, 1143, 1151, 1147, 1139, 70, 1144, 70, + 70, 1145, 70, 1148, 1140, 1149, 1146, 1150, 1152, 70, + 1153, 70, 1138, 70, 1141, 70, 1142, 1154, 70, 1155, + 1156, 1157, 1147, 1158, 2287, 70, 70, 1160, 70, 70, + 1148, 70, 1149, 70, 1150, 1152, 1161, 1153, 70, 1163, + 70, 1159, 70, 1162, 1154, 1164, 1165, 1156, 1157, 70, + 1158, 70, 1166, 1167, 1160, 70, 1170, 1169, 1168, 1177, + 1175, 70, 1171, 1161, 1184, 70, 1163, 70, 1159, 70, + + 1162, 70, 1164, 1165, 70, 70, 70, 1176, 1172, 70, + 1167, 70, 1173, 1170, 1169, 1168, 70, 1175, 70, 1171, + 1178, 1179, 1180, 1181, 1183, 1174, 70, 1182, 1185, 1186, + 70, 70, 2287, 70, 1176, 1172, 70, 1187, 70, 1173, + 1188, 1189, 70, 1190, 70, 70, 2287, 1178, 1179, 1180, + 1181, 1183, 1174, 1191, 1182, 70, 1186, 1192, 1193, 70, + 1194, 1196, 1195, 70, 1187, 1197, 70, 1188, 70, 1198, + 70, 1199, 1200, 70, 70, 1203, 1204, 1201, 70, 1205, + 70, 70, 70, 70, 1192, 1193, 70, 1194, 1196, 1195, + 1202, 70, 1197, 1206, 1209, 70, 1198, 70, 1199, 70, + + 70, 70, 1203, 1204, 1201, 1207, 1205, 1208, 1213, 1210, + 1211, 2287, 1212, 70, 2287, 1214, 70, 1202, 70, 1215, + 1206, 70, 70, 70, 1218, 1216, 70, 1217, 1219, 70, + 70, 70, 1207, 1221, 1208, 1213, 1210, 1211, 70, 1212, + 1220, 1222, 1214, 70, 1223, 1224, 1215, 1225, 70, 70, + 1227, 1218, 1216, 70, 1217, 1219, 1226, 1228, 70, 1229, + 70, 1230, 70, 1234, 70, 70, 1231, 1220, 1222, 1232, + 1233, 70, 1224, 1240, 70, 70, 70, 1227, 2287, 1241, + 1235, 70, 1242, 1226, 1228, 70, 1229, 70, 1230, 70, + 1234, 1236, 1245, 1231, 70, 70, 1232, 1233, 70, 1237, + + 70, 70, 1238, 1243, 1246, 70, 1241, 1235, 1244, 1242, + 70, 1247, 1248, 1251, 1239, 1250, 70, 1253, 1236, 1245, + 1249, 70, 70, 70, 1252, 70, 1237, 1254, 70, 1238, + 1243, 70, 1256, 1255, 1257, 1244, 70, 70, 1247, 1248, + 1261, 1239, 1250, 1258, 1265, 70, 70, 1249, 2287, 70, + 1259, 1252, 70, 70, 1254, 70, 70, 70, 1260, 70, + 1255, 1257, 1262, 1263, 1266, 70, 1264, 1261, 1268, 1270, + 1258, 70, 1267, 2287, 1273, 70, 70, 1259, 70, 70, + 70, 70, 1269, 1272, 1275, 1260, 1274, 1271, 70, 1262, + 1263, 1266, 1279, 1264, 70, 1268, 70, 70, 70, 1267, + + 70, 1273, 1278, 1276, 70, 70, 70, 1277, 1280, 1269, + 1272, 1275, 1283, 1274, 1271, 1281, 70, 1287, 1282, 1279, + 70, 1288, 1286, 70, 70, 1291, 1284, 1289, 70, 1278, + 1276, 1285, 1290, 70, 1277, 1280, 1299, 1293, 70, 1283, + 70, 2287, 1281, 1297, 70, 1282, 1292, 70, 70, 1286, + 1298, 70, 1291, 1284, 1289, 70, 2287, 70, 1285, 1290, + 1294, 70, 1295, 70, 1293, 1296, 1302, 1300, 70, 1301, + 1297, 1303, 2287, 1292, 70, 70, 1305, 1304, 1311, 1306, + 70, 70, 70, 70, 70, 1308, 1307, 1294, 70, 1295, + 1309, 70, 1296, 1302, 1300, 70, 1301, 1310, 1303, 1316, + + 70, 70, 1312, 1305, 1304, 1311, 1306, 1314, 70, 1317, + 1315, 70, 1308, 1307, 1318, 70, 1313, 1309, 1319, 1321, + 1322, 1320, 1323, 1324, 1310, 70, 1316, 2287, 70, 1312, + 70, 1326, 1325, 1327, 1314, 2287, 1329, 1315, 70, 1331, + 1328, 70, 1330, 1313, 70, 1332, 70, 70, 1320, 1323, + 70, 1339, 70, 70, 70, 70, 1333, 2287, 1326, 1325, + 70, 1336, 1334, 1329, 70, 70, 1331, 1328, 1335, 1330, + 70, 70, 1332, 1337, 1340, 1341, 70, 1338, 70, 1345, + 2287, 70, 2287, 1333, 70, 1342, 70, 1343, 1344, 1334, + 1346, 1347, 1348, 70, 70, 1335, 1350, 70, 70, 2287, + + 1337, 1340, 1341, 70, 1338, 1351, 1345, 70, 1349, 70, + 70, 1352, 1342, 1355, 1343, 1344, 70, 1346, 1347, 70, + 70, 70, 1353, 1350, 1354, 1356, 70, 1357, 1359, 1358, + 70, 70, 1351, 1360, 1361, 1349, 70, 1362, 1352, 1364, + 70, 1367, 1366, 1365, 1363, 70, 2287, 2287, 70, 1353, + 70, 1354, 1356, 1371, 1357, 70, 1358, 70, 70, 70, + 1360, 70, 70, 1372, 1362, 1369, 70, 70, 1367, 1366, + 1365, 1363, 1368, 1370, 70, 70, 1373, 70, 1378, 1375, + 1371, 70, 70, 1374, 1376, 70, 1379, 1380, 1381, 1385, + 1372, 70, 1369, 2287, 1387, 70, 1383, 1377, 70, 1368, + + 1370, 70, 70, 1373, 70, 1378, 1375, 1389, 1390, 1382, + 1374, 1376, 1384, 1379, 70, 70, 70, 1392, 1386, 70, + 70, 70, 1388, 1383, 1377, 70, 1391, 1393, 70, 1394, + 1395, 70, 2287, 1397, 70, 1390, 1382, 1398, 70, 1384, + 1396, 70, 70, 1399, 1392, 1386, 1400, 2287, 1405, 1388, + 1407, 2287, 2287, 1411, 1406, 70, 1394, 70, 70, 70, + 1397, 70, 70, 1409, 70, 1412, 70, 1396, 1410, 70, + 1399, 1416, 1401, 1402, 1403, 1405, 1408, 1413, 70, 1404, + 1411, 1406, 70, 70, 1414, 1415, 1419, 70, 1418, 70, + 70, 1425, 1412, 70, 70, 70, 70, 1421, 1416, 1401, + + 1402, 1403, 1417, 1408, 1413, 1422, 1404, 1420, 70, 70, + 1424, 1414, 70, 70, 1423, 1418, 1427, 70, 70, 70, + 1426, 1428, 70, 70, 1421, 1430, 1431, 1429, 2287, 1417, + 1432, 70, 1422, 1433, 1420, 1435, 70, 1424, 70, 70, + 1437, 1423, 1436, 1427, 70, 70, 70, 1426, 70, 1434, + 70, 1438, 1430, 1431, 1429, 1439, 1440, 1432, 70, 70, + 1433, 1441, 1435, 1442, 70, 1443, 2287, 1444, 1447, 1436, + 1445, 1446, 70, 2287, 2287, 70, 1434, 70, 1438, 70, + 1448, 2287, 1439, 70, 1451, 70, 2287, 70, 70, 1453, + 70, 1449, 1443, 70, 1444, 1447, 1452, 1445, 1446, 1458, + + 70, 1450, 70, 1456, 70, 1454, 1455, 1448, 70, 1457, + 70, 1451, 70, 1459, 70, 70, 1453, 70, 1449, 1460, + 1461, 1464, 70, 1452, 2287, 1465, 1458, 1468, 1450, 1466, + 1456, 70, 1454, 1455, 70, 1469, 1457, 70, 1462, 2287, + 1459, 1472, 70, 1463, 1467, 1470, 1460, 70, 70, 1474, + 1471, 70, 1465, 1475, 70, 1477, 1466, 1473, 70, 70, + 1476, 1479, 70, 70, 70, 1462, 1478, 1480, 1482, 1481, + 1463, 1467, 2287, 70, 70, 70, 1474, 70, 70, 1483, + 1484, 70, 1477, 1485, 1473, 70, 1486, 1476, 1479, 1487, + 1488, 1489, 2287, 1478, 70, 2287, 1481, 70, 1490, 70, + + 70, 1492, 1491, 1493, 70, 1494, 1483, 1484, 2287, 70, + 1485, 1495, 1499, 70, 2287, 1501, 70, 1488, 1496, 70, + 1503, 70, 70, 70, 70, 1490, 1497, 70, 1492, 1491, + 1493, 1498, 1494, 70, 1500, 70, 1504, 70, 1495, 70, + 1502, 70, 1501, 70, 2287, 1496, 70, 70, 1505, 1507, + 1506, 1508, 70, 1497, 1510, 2287, 1511, 70, 1498, 70, + 1509, 1500, 70, 1504, 1514, 1517, 70, 1502, 1512, 70, + 1515, 1516, 1519, 70, 70, 1505, 1507, 1506, 1508, 1513, + 1520, 1521, 70, 1511, 70, 1518, 70, 1509, 70, 70, + 1522, 1514, 70, 70, 70, 1512, 70, 1515, 1516, 1519, + + 70, 1523, 2287, 1525, 1524, 1526, 1513, 1520, 1528, 2287, + 1529, 2287, 1518, 70, 1527, 70, 1531, 1522, 1532, 1539, + 1530, 2287, 70, 2287, 70, 1533, 70, 70, 1523, 70, + 70, 1524, 1526, 70, 70, 1528, 70, 1529, 70, 1534, + 70, 1527, 1537, 1531, 1536, 1532, 1539, 1530, 1535, 70, + 1540, 1541, 1533, 1542, 70, 1538, 70, 1543, 2287, 1544, + 1548, 1546, 70, 70, 70, 70, 1534, 1545, 70, 1537, + 1547, 1536, 1549, 1550, 1555, 1535, 1551, 1540, 70, 1553, + 1542, 70, 1538, 70, 1543, 70, 1544, 1548, 1546, 70, + 1552, 1557, 70, 1559, 1545, 70, 70, 1547, 1554, 1549, + + 1550, 70, 1558, 1551, 70, 1561, 1553, 2287, 70, 1556, + 70, 70, 1560, 70, 70, 70, 1562, 1552, 1557, 1563, + 1559, 1565, 1564, 70, 1573, 1554, 1566, 70, 1568, 1558, + 1567, 1569, 1561, 1570, 70, 70, 1556, 2287, 70, 1560, + 1571, 70, 1574, 1562, 70, 70, 1575, 1572, 1565, 1564, + 1576, 70, 70, 1566, 70, 1568, 70, 1567, 70, 70, + 1570, 1577, 2287, 1578, 70, 70, 2287, 1571, 2287, 1574, + 1581, 70, 1583, 1575, 1572, 1579, 1582, 1576, 1580, 1585, + 1584, 2287, 70, 2287, 1589, 2287, 1586, 70, 1577, 70, + 1578, 70, 1587, 70, 70, 70, 1588, 1581, 70, 70, + + 1590, 1591, 1579, 1582, 1592, 1580, 1585, 1584, 70, 70, + 70, 1589, 70, 1586, 70, 1594, 1597, 1593, 1595, 1587, + 1596, 1598, 70, 1588, 1600, 70, 1602, 1590, 1591, 1601, + 70, 1592, 1599, 1603, 70, 1605, 70, 70, 1604, 1607, + 1606, 1609, 1594, 1597, 1593, 1595, 1613, 1596, 70, 70, + 70, 70, 70, 1602, 1608, 70, 1601, 1610, 70, 1599, + 1603, 70, 1614, 1616, 70, 1604, 1607, 70, 70, 1615, + 1617, 1611, 1618, 1613, 1620, 2287, 1622, 2287, 70, 70, + 1619, 1608, 1612, 70, 1610, 1623, 1621, 1624, 2287, 70, + 1616, 1625, 70, 70, 1626, 70, 1615, 1617, 1611, 70, + + 1629, 70, 70, 1622, 70, 1628, 1632, 1619, 70, 1612, + 70, 1627, 1623, 1621, 1624, 70, 70, 70, 1625, 1630, + 1631, 1626, 70, 1634, 2287, 1633, 1637, 1629, 70, 1635, + 1646, 70, 1628, 70, 70, 70, 1636, 70, 1627, 1639, + 2287, 1638, 1640, 70, 1643, 70, 1630, 1631, 70, 70, + 1634, 70, 1633, 1637, 1641, 1642, 1635, 70, 1644, 70, + 1645, 70, 70, 1636, 70, 1647, 1639, 1649, 1638, 1640, + 1648, 1643, 70, 1651, 1650, 1652, 1653, 1655, 1654, 1659, + 70, 1641, 1642, 1656, 70, 1644, 1660, 1645, 70, 70, + 70, 70, 1647, 1657, 1649, 1661, 1658, 1648, 1665, 70, + + 1651, 1650, 70, 70, 1655, 1654, 70, 1662, 70, 70, + 1656, 70, 1663, 1660, 70, 1664, 1666, 70, 1667, 70, + 1657, 1668, 1661, 1658, 1669, 70, 70, 1670, 1671, 1673, + 70, 1672, 1675, 70, 1662, 1674, 1677, 70, 1676, 1663, + 1678, 2287, 1664, 70, 70, 1667, 70, 1679, 70, 70, + 1683, 1669, 1680, 1684, 70, 70, 1673, 70, 1672, 70, + 1681, 70, 1674, 70, 1686, 1676, 1685, 1678, 70, 1687, + 1690, 1691, 70, 1692, 1679, 1682, 70, 70, 70, 1680, + 1684, 1688, 70, 1694, 1693, 1689, 70, 1681, 70, 70, + 1698, 1686, 70, 1685, 70, 1696, 70, 1690, 1691, 1695, + + 70, 1699, 1682, 1697, 70, 2287, 70, 1700, 1688, 1701, + 70, 1693, 1689, 1702, 1713, 70, 70, 1698, 1703, 70, + 70, 1705, 1696, 1704, 70, 1706, 1695, 70, 1699, 1707, + 1697, 1708, 70, 2287, 1700, 70, 1701, 70, 1714, 1709, + 1702, 1710, 1711, 70, 2287, 1703, 70, 70, 1705, 1712, + 1704, 70, 1706, 1716, 1718, 1717, 1707, 70, 1708, 70, + 70, 70, 70, 1715, 1733, 1714, 1709, 1719, 1710, 1711, + 70, 70, 1721, 1723, 1722, 1720, 1712, 1724, 1726, 70, + 1716, 70, 1717, 1725, 1727, 70, 70, 1730, 1728, 70, + 1715, 70, 1729, 70, 1719, 70, 70, 1732, 70, 1721, + + 1723, 1722, 1720, 70, 1724, 1726, 1731, 1734, 1735, 70, + 1725, 1727, 70, 70, 1730, 1728, 70, 1736, 1737, 1729, + 1738, 1741, 2287, 2287, 1732, 1739, 2287, 1740, 1742, 1743, + 70, 1744, 1747, 1731, 70, 1735, 70, 70, 70, 1745, + 1746, 70, 1755, 1748, 1749, 2287, 2287, 70, 1741, 70, + 70, 70, 1739, 70, 1740, 1742, 1743, 70, 1744, 70, + 1751, 1750, 70, 1752, 70, 70, 1745, 1746, 70, 1753, + 1748, 1749, 1754, 70, 70, 1757, 70, 1756, 1758, 1759, + 1760, 1761, 1762, 1769, 70, 2287, 70, 1751, 1750, 70, + 1752, 1764, 1765, 2287, 70, 1767, 1753, 1763, 70, 1754, + + 70, 70, 1757, 1768, 1756, 1758, 1759, 70, 1761, 1762, + 70, 1771, 70, 1766, 70, 70, 70, 70, 1764, 1765, + 1770, 70, 1767, 1772, 1763, 1773, 70, 1774, 1777, 1775, + 1768, 1776, 1778, 1779, 1780, 70, 70, 1781, 70, 1782, + 1766, 70, 1786, 1788, 70, 1783, 1791, 1770, 70, 1784, + 1772, 70, 70, 70, 1774, 70, 1775, 70, 1776, 70, + 70, 1780, 1785, 1787, 1781, 70, 1782, 70, 1790, 70, + 1789, 1793, 1783, 70, 1792, 70, 1784, 70, 1795, 70, + 70, 70, 1794, 1796, 1798, 1799, 1797, 1800, 1801, 1785, + 1787, 1804, 1802, 1803, 2287, 1790, 70, 1789, 70, 70, + + 70, 1792, 70, 70, 70, 1795, 70, 70, 1805, 1794, + 1796, 1798, 70, 1797, 70, 70, 1806, 70, 1804, 1802, + 1803, 1807, 1808, 70, 1809, 1810, 1811, 1812, 1813, 70, + 1815, 70, 70, 1814, 1817, 1805, 1816, 70, 1818, 70, + 70, 70, 2287, 1806, 70, 70, 70, 70, 1807, 1808, + 1819, 1809, 1810, 70, 1812, 1813, 1823, 1815, 1820, 1824, + 1814, 1817, 1825, 1816, 70, 1818, 1821, 70, 70, 1822, + 1826, 70, 70, 70, 1827, 1828, 2287, 1819, 1829, 1830, + 70, 1834, 1831, 1823, 70, 1820, 1824, 1832, 70, 1825, + 70, 1840, 70, 1821, 1835, 70, 1822, 1826, 70, 70, + + 1833, 70, 70, 1836, 70, 1829, 1830, 70, 1834, 1831, + 70, 1837, 1838, 1839, 1832, 1841, 1842, 70, 1840, 70, + 1848, 1835, 70, 1843, 1844, 1845, 1846, 1833, 1850, 70, + 1836, 70, 70, 1849, 70, 70, 1847, 70, 1837, 1838, + 1839, 70, 70, 1842, 70, 70, 1851, 1848, 1852, 1853, + 1843, 1844, 1845, 1846, 1854, 70, 1855, 1856, 70, 1861, + 1849, 1857, 1858, 1847, 70, 1859, 70, 1863, 70, 70, + 1860, 1862, 1865, 70, 1864, 2287, 1853, 1870, 1866, 70, + 70, 1854, 70, 1855, 1856, 70, 70, 70, 1857, 1858, + 70, 1869, 1859, 1873, 70, 70, 70, 1860, 1862, 1865, + + 1867, 1864, 1868, 1872, 70, 1866, 2287, 1871, 70, 70, + 1874, 1875, 70, 1876, 1877, 70, 1879, 1878, 1869, 70, + 70, 1880, 1882, 70, 1881, 1883, 1884, 1867, 1885, 1868, + 1872, 70, 70, 70, 1871, 2287, 70, 1874, 1875, 1888, + 1876, 70, 1887, 70, 1878, 1886, 1889, 70, 70, 70, + 70, 1881, 1883, 70, 70, 1885, 70, 70, 1890, 1891, + 1893, 1895, 1892, 1894, 1897, 1898, 1888, 1899, 70, 1887, + 70, 70, 1886, 1889, 1896, 70, 70, 1900, 1901, 70, + 1902, 70, 1904, 70, 1903, 1890, 1891, 1893, 1895, 1892, + 1894, 1897, 70, 1906, 70, 1905, 70, 70, 1907, 1908, + + 70, 1896, 1909, 1914, 1900, 1901, 70, 70, 70, 1904, + 1912, 1903, 70, 1910, 1913, 70, 70, 1915, 1911, 1918, + 1906, 1916, 1905, 1921, 1917, 70, 70, 1920, 1919, 1909, + 2287, 70, 70, 1922, 1923, 70, 70, 1912, 70, 2287, + 70, 1913, 70, 70, 1915, 70, 1918, 70, 1916, 70, + 1921, 1917, 1925, 1924, 1920, 1919, 70, 70, 1926, 1927, + 1922, 1923, 70, 1928, 1929, 1930, 70, 1931, 1933, 1935, + 1932, 1937, 1936, 70, 70, 1934, 70, 70, 70, 1925, + 1924, 1941, 70, 70, 70, 1926, 1927, 70, 1939, 70, + 1928, 1929, 1930, 1938, 1931, 70, 1935, 1932, 70, 1936, + + 70, 70, 1934, 1940, 70, 1942, 1943, 1944, 1941, 1945, + 70, 1946, 1948, 1947, 1952, 1939, 1950, 2287, 1951, 1949, + 1938, 1956, 2287, 2287, 1955, 2287, 70, 70, 70, 70, + 1940, 70, 70, 70, 1944, 70, 1945, 70, 1946, 1948, + 1947, 70, 1953, 1950, 70, 1951, 1949, 1954, 70, 70, + 70, 1955, 1957, 1958, 70, 1959, 1960, 1961, 1962, 1963, + 1964, 1965, 1969, 1967, 1966, 1971, 70, 70, 1968, 1953, + 2287, 1974, 70, 1970, 1954, 1972, 70, 70, 1973, 1957, + 70, 70, 1959, 70, 70, 1962, 1963, 70, 70, 1969, + 1975, 1966, 70, 2287, 70, 70, 1976, 70, 70, 1981, + + 1970, 70, 1972, 1978, 1977, 1973, 70, 1982, 1979, 1980, + 1985, 1984, 70, 1987, 2287, 1983, 70, 1975, 70, 1989, + 70, 70, 70, 1976, 70, 1986, 1981, 70, 1990, 1993, + 1978, 1977, 70, 70, 1982, 1979, 1980, 70, 1984, 1988, + 1987, 1991, 1983, 1994, 1996, 70, 1989, 70, 1992, 1999, + 70, 70, 1986, 1997, 70, 1990, 1993, 1995, 70, 70, + 70, 2000, 70, 2002, 2001, 1998, 1988, 70, 1991, 2003, + 1994, 1996, 70, 70, 2004, 1992, 70, 2005, 2007, 2006, + 1997, 2008, 2287, 2011, 1995, 70, 2009, 70, 2000, 70, + 70, 2001, 1998, 2010, 2015, 70, 2003, 70, 2012, 70, + + 2014, 70, 2016, 2013, 2005, 2007, 2006, 2017, 70, 70, + 2011, 70, 70, 2009, 70, 2019, 2018, 70, 2020, 2021, + 2010, 2015, 2022, 2287, 2027, 70, 2023, 2014, 2024, 70, + 70, 70, 2025, 70, 2017, 2026, 2028, 2032, 2034, 2031, + 2029, 70, 2019, 2018, 70, 2020, 2021, 70, 70, 2022, + 70, 70, 2030, 2023, 70, 2024, 2033, 2039, 70, 2025, + 70, 70, 2026, 2028, 2035, 70, 2031, 2029, 2036, 70, + 2037, 2038, 2041, 70, 70, 2040, 2042, 70, 70, 2030, + 70, 2043, 2044, 2033, 70, 2048, 2045, 2046, 2047, 70, + 2053, 2035, 70, 70, 2051, 2036, 70, 2037, 2038, 70, + + 70, 2050, 2040, 2042, 2052, 70, 70, 2055, 2043, 70, + 70, 2049, 2048, 2045, 2046, 2047, 70, 70, 2054, 70, + 70, 2051, 2056, 2057, 2058, 2059, 70, 2287, 2050, 70, + 2061, 2052, 2060, 2062, 70, 2063, 70, 2065, 2049, 70, + 70, 2067, 2068, 2066, 2069, 2054, 70, 2064, 2070, 70, + 2057, 70, 2059, 2071, 70, 70, 70, 70, 2072, 2060, + 2062, 70, 2063, 70, 2065, 2073, 70, 2074, 2067, 70, + 2066, 70, 70, 70, 2064, 2070, 2075, 2079, 2076, 2078, + 2071, 2077, 2287, 2080, 2086, 2072, 70, 2081, 2082, 2287, + 2083, 2084, 2073, 2085, 70, 2287, 70, 70, 2089, 2090, + + 70, 70, 2092, 2075, 70, 2076, 2078, 2096, 2077, 70, + 70, 70, 70, 70, 2081, 2082, 70, 2083, 2084, 2091, + 2085, 2087, 2088, 2093, 2094, 70, 70, 70, 2097, 70, + 2095, 70, 2098, 2100, 70, 2101, 2099, 70, 2103, 2102, + 2104, 2105, 2287, 70, 70, 70, 2091, 2108, 2087, 2088, + 2093, 2094, 70, 2107, 70, 70, 2109, 2095, 70, 70, + 70, 2112, 2101, 2099, 70, 2103, 2102, 70, 2105, 2106, + 2111, 70, 2110, 2113, 70, 2114, 70, 2115, 70, 2116, + 2107, 2287, 70, 2109, 70, 70, 2118, 2120, 70, 70, + 2117, 2119, 2287, 2287, 70, 70, 2106, 2111, 2123, 2110, + + 2113, 70, 2114, 2122, 2115, 70, 2116, 70, 2121, 70, + 70, 2127, 70, 2118, 2120, 70, 2126, 2117, 2119, 2124, + 2125, 2128, 70, 2129, 2130, 2123, 2131, 2132, 70, 70, + 2122, 2133, 2136, 70, 2137, 2121, 2134, 2135, 2127, 2287, + 2140, 2287, 2287, 2126, 2141, 2287, 2124, 2125, 2128, 70, + 70, 70, 2144, 2131, 70, 70, 2139, 2138, 70, 2136, + 2142, 70, 2145, 2146, 70, 70, 70, 70, 2143, 70, + 70, 2141, 70, 2147, 2148, 2149, 2150, 70, 2151, 2144, + 2152, 2153, 70, 2139, 2138, 2154, 70, 2142, 70, 2145, + 70, 70, 2155, 70, 2156, 2143, 2157, 70, 2158, 2159, + + 70, 2148, 2149, 70, 70, 2160, 2161, 2152, 2153, 2162, + 70, 2163, 2154, 2164, 70, 2165, 70, 2167, 2168, 2155, + 2166, 2156, 2169, 2157, 2171, 70, 70, 2173, 2170, 70, + 70, 2287, 70, 70, 2172, 70, 70, 70, 2163, 2174, + 70, 2175, 70, 70, 2167, 2168, 2176, 2166, 70, 70, + 2179, 2171, 70, 2177, 70, 2170, 2178, 2182, 70, 70, + 2287, 2172, 70, 70, 2180, 2181, 2174, 70, 2175, 2184, + 70, 2183, 70, 2176, 70, 70, 2185, 2179, 2187, 2186, + 2177, 2188, 2191, 2178, 2182, 70, 70, 70, 2189, 2193, + 70, 2180, 2181, 70, 70, 2190, 2184, 70, 2183, 70, + + 2192, 2194, 70, 2185, 2195, 2187, 2186, 70, 2188, 2191, + 2196, 2197, 2199, 2200, 2203, 2189, 70, 2198, 2201, 70, + 70, 2202, 2190, 2205, 2287, 2210, 2287, 2192, 2194, 2204, + 2211, 70, 2208, 70, 70, 70, 70, 2196, 70, 2199, + 2200, 70, 70, 2206, 2198, 2201, 70, 2213, 2202, 2207, + 70, 70, 2209, 2212, 2215, 70, 2204, 70, 70, 2208, + 70, 70, 70, 2214, 2216, 2218, 70, 70, 2219, 2220, + 2206, 70, 2217, 70, 2213, 2222, 2207, 2221, 2223, 2209, + 2212, 2215, 70, 70, 2225, 70, 2226, 70, 2227, 2232, + 2214, 2216, 2218, 2224, 70, 2219, 2220, 70, 2287, 2217, + + 70, 70, 2222, 2228, 2221, 2223, 2229, 2230, 2231, 2233, + 2238, 70, 2235, 2287, 70, 2227, 70, 2287, 70, 2234, + 2224, 70, 2287, 2236, 2240, 70, 2259, 70, 70, 70, + 2228, 70, 70, 2229, 2230, 2231, 70, 2237, 70, 2235, + 2239, 2241, 70, 2243, 2242, 70, 2234, 2244, 70, 2245, + 2236, 2240, 2246, 70, 2247, 70, 2248, 70, 2250, 70, + 2249, 70, 2252, 2287, 2237, 70, 70, 2239, 2241, 2251, + 2243, 2242, 2253, 2254, 2244, 2287, 2245, 70, 70, 2246, + 70, 2247, 2255, 2248, 70, 2250, 2256, 2249, 70, 2252, + 2257, 2258, 2263, 2265, 70, 70, 2251, 2262, 70, 2253, + + 2254, 2260, 70, 2261, 2267, 70, 2287, 2264, 2287, 2255, + 2268, 2272, 70, 2256, 70, 70, 70, 2257, 2258, 2263, + 70, 70, 2271, 70, 2262, 2266, 70, 2269, 2260, 2275, + 2261, 2267, 70, 70, 2264, 70, 2270, 2268, 70, 2273, + 2276, 2277, 2274, 2278, 70, 2279, 2287, 70, 70, 2271, + 70, 2280, 2266, 2281, 2269, 70, 2275, 2282, 2285, 2286, + 2287, 70, 2287, 2270, 2287, 2283, 2273, 70, 2277, 2274, + 70, 70, 70, 70, 2284, 70, 2287, 2287, 2280, 70, + 2281, 2287, 70, 2287, 2282, 70, 70, 2287, 2287, 2287, + 2287, 2287, 2283, 2287, 2287, 2287, 2287, 2287, 2287, 2287, + + 2287, 2284, 42, 42, 42, 42, 42, 42, 42, 47, + 47, 47, 47, 47, 47, 47, 52, 52, 52, 52, + 52, 52, 52, 58, 58, 58, 58, 58, 58, 58, + 63, 63, 63, 63, 63, 63, 63, 73, 73, 2287, + 73, 73, 73, 73, 133, 133, 2287, 2287, 2287, 133, + 133, 135, 135, 2287, 2287, 135, 2287, 135, 137, 2287, + 2287, 2287, 2287, 2287, 137, 140, 140, 2287, 2287, 2287, + 140, 140, 142, 2287, 2287, 2287, 2287, 2287, 142, 144, + 144, 2287, 144, 144, 144, 144, 74, 74, 2287, 74, + 74, 74, 74, 13, 2287, 2287, 2287, 2287, 2287, 2287, + + 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, + 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, + 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, + 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, + 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, + 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287 } ; -static yyconst flex_int16_t yy_chk[6466] = +static yyconst flex_int16_t yy_chk[6661] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -1893,710 +1931,731 @@ static yyconst flex_int16_t yy_chk[6466] = 1, 1, 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, 27, 6, 7, - 7, 7, 7, 676, 7, 8, 8, 8, 8, 27, - 8, 9, 9, 9, 10, 10, 10, 15, 45, 45, - - 2243, 15, 23, 3, 27, 50, 4, 775, 50, 5, - 19, 6, 19, 19, 676, 19, 140, 7, 29, 61, - 61, 19, 23, 8, 138, 23, 20, 20, 9, 23, - 29, 10, 11, 11, 11, 11, 11, 11, 12, 12, - 12, 12, 12, 12, 20, 29, 24, 103, 19, 23, - 20, 25, 11, 20, 20, 21, 75, 32, 12, 25, - 24, 70, 21, 32, 860, 70, 21, 103, 28, 21, - 11, 20, 24, 24, 103, 137, 12, 25, 25, 11, - 75, 21, 21, 75, 32, 12, 25, 24, 26, 21, - 28, 26, 860, 21, 30, 28, 21, 22, 26, 135, - - 26, 22, 30, 133, 22, 116, 22, 22, 30, 131, - 31, 26, 30, 34, 31, 26, 77, 116, 26, 22, - 30, 30, 76, 77, 22, 26, 34, 26, 22, 30, - 31, 22, 116, 22, 22, 30, 31, 31, 35, 30, - 34, 31, 35, 77, 134, 76, 37, 134, 37, 76, - 100, 68, 35, 100, 38, 35, 84, 31, 33, 38, - 62, 84, 33, 37, 35, 35, 39, 38, 33, 35, - 39, 33, 37, 37, 39, 37, 80, 100, 33, 35, - 33, 38, 35, 84, 57, 33, 38, 132, 132, 33, - 37, 66, 39, 39, 80, 33, 125, 39, 33, 85, - - 768, 39, 125, 80, 66, 33, 36, 85, 40, 36, - 40, 40, 56, 40, 56, 56, 36, 56, 66, 40, - 36, 36, 64, 125, 64, 64, 85, 64, 36, 67, - 768, 67, 67, 36, 67, 69, 36, 69, 69, 72, - 69, 72, 72, 36, 72, 78, 69, 36, 36, 81, - 72, 87, 79, 82, 83, 83, 52, 86, 78, 82, - 64, 79, 81, 83, 87, 51, 88, 89, 92, 78, - 139, 139, 78, 88, 82, 86, 81, 72, 87, 79, - 82, 83, 83, 89, 93, 78, 82, 90, 91, 86, - 94, 92, 96, 88, 89, 92, 90, 91, 46, 101, - - 97, 41, 86, 94, 95, 14, 93, 95, 97, 99, - 98, 93, 101, 99, 90, 91, 96, 94, 102, 13, - 95, 95, 105, 120, 96, 104, 101, 97, 95, 108, - 98, 95, 98, 99, 95, 0, 99, 98, 108, 104, - 99, 102, 105, 96, 106, 102, 107, 95, 95, 105, - 110, 109, 104, 107, 112, 120, 108, 98, 106, 110, - 111, 112, 113, 114, 111, 0, 115, 117, 0, 0, - 114, 106, 115, 107, 109, 117, 122, 110, 109, 118, - 115, 112, 111, 118, 119, 121, 123, 111, 113, 113, - 114, 111, 118, 115, 117, 123, 122, 124, 119, 115, - - 121, 126, 122, 122, 128, 127, 118, 129, 124, 0, - 118, 119, 121, 123, 130, 136, 129, 136, 136, 128, - 136, 145, 126, 122, 124, 146, 126, 127, 126, 144, - 0, 128, 127, 148, 129, 141, 130, 141, 141, 147, - 141, 130, 142, 145, 142, 142, 149, 142, 145, 126, - 150, 147, 148, 144, 149, 157, 144, 146, 152, 151, - 148, 153, 150, 154, 156, 152, 147, 155, 0, 154, - 161, 158, 0, 149, 160, 158, 162, 150, 161, 153, - 142, 151, 163, 177, 165, 152, 151, 157, 153, 155, - 156, 156, 158, 0, 155, 154, 154, 161, 162, 158, - - 160, 160, 158, 162, 163, 166, 164, 165, 167, 163, - 164, 165, 168, 170, 169, 177, 0, 169, 0, 158, - 159, 167, 170, 171, 168, 159, 172, 166, 180, 169, - 159, 175, 166, 164, 174, 167, 159, 159, 175, 168, - 170, 169, 183, 159, 169, 171, 178, 159, 172, 173, - 171, 176, 159, 172, 173, 185, 174, 159, 175, 179, - 180, 174, 176, 159, 159, 181, 173, 184, 173, 186, - 179, 182, 178, 178, 183, 173, 173, 182, 176, 187, - 0, 173, 188, 181, 189, 192, 195, 185, 268, 184, - 192, 179, 181, 173, 184, 173, 188, 179, 182, 187, - - 190, 186, 191, 193, 194, 189, 187, 190, 195, 188, - 197, 189, 192, 195, 196, 268, 199, 198, 194, 200, - 201, 197, 193, 191, 198, 201, 196, 190, 202, 191, - 193, 194, 204, 208, 206, 207, 210, 197, 199, 203, - 203, 196, 200, 199, 198, 205, 200, 201, 203, 209, - 212, 210, 205, 211, 213, 207, 219, 209, 214, 206, - 202, 206, 207, 210, 204, 208, 203, 203, 218, 216, - 215, 220, 205, 212, 215, 214, 209, 221, 222, 211, - 211, 217, 212, 214, 216, 214, 213, 218, 219, 217, - 222, 223, 224, 220, 225, 218, 216, 215, 220, 228, - - 212, 224, 214, 226, 223, 222, 229, 225, 217, 221, - 227, 232, 227, 230, 231, 233, 240, 235, 223, 224, - 232, 225, 226, 228, 234, 237, 228, 239, 235, 0, - 226, 229, 238, 229, 236, 242, 243, 227, 232, 230, - 230, 233, 233, 231, 235, 239, 236, 241, 240, 237, - 234, 234, 237, 244, 239, 238, 245, 246, 249, 238, - 241, 236, 243, 243, 246, 248, 251, 242, 247, 259, - 250, 248, 249, 252, 241, 244, 253, 247, 254, 258, - 244, 255, 252, 0, 246, 249, 257, 254, 245, 256, - 251, 260, 248, 251, 258, 247, 250, 250, 256, 253, - - 252, 259, 261, 253, 263, 254, 258, 255, 255, 264, - 257, 265, 262, 257, 0, 260, 256, 261, 260, 266, - 262, 262, 263, 262, 274, 265, 272, 264, 269, 261, - 262, 263, 270, 264, 266, 270, 264, 271, 265, 262, - 267, 267, 270, 273, 272, 276, 266, 262, 262, 271, - 262, 274, 269, 272, 264, 269, 275, 277, 278, 270, - 279, 273, 270, 282, 271, 267, 280, 267, 267, 277, - 273, 276, 276, 280, 281, 279, 285, 284, 275, 288, - 278, 283, 291, 275, 277, 278, 281, 279, 283, 287, - 286, 287, 288, 280, 289, 282, 286, 289, 285, 289, - - 292, 281, 290, 285, 0, 289, 288, 0, 283, 284, - 0, 293, 286, 287, 291, 0, 287, 286, 287, 293, - 290, 289, 292, 286, 289, 293, 289, 292, 294, 290, - 295, 296, 297, 300, 298, 294, 301, 303, 293, 305, - 0, 304, 295, 303, 296, 300, 293, 298, 297, 304, - 307, 305, 314, 0, 301, 294, 297, 295, 296, 297, - 300, 298, 302, 301, 303, 306, 305, 302, 304, 308, - 0, 309, 306, 308, 0, 297, 299, 299, 309, 311, - 310, 0, 307, 312, 314, 313, 299, 310, 299, 299, - 299, 311, 306, 299, 302, 315, 308, 313, 309, 316, - - 318, 299, 315, 299, 299, 312, 311, 310, 317, 319, - 312, 319, 313, 299, 316, 299, 299, 299, 320, 321, - 299, 317, 315, 322, 322, 0, 316, 323, 324, 320, - 326, 325, 318, 328, 323, 317, 319, 327, 329, 324, - 330, 321, 325, 326, 337, 320, 321, 334, 333, 330, - 331, 0, 322, 329, 323, 324, 328, 326, 325, 348, - 328, 329, 327, 331, 327, 329, 333, 330, 332, 334, - 335, 336, 338, 339, 334, 333, 337, 331, 338, 332, - 329, 332, 340, 342, 0, 341, 332, 343, 344, 336, - 342, 348, 0, 335, 339, 332, 345, 335, 336, 338, - - 339, 347, 344, 346, 351, 340, 332, 341, 332, 340, - 342, 349, 341, 343, 343, 344, 350, 346, 345, 352, - 353, 354, 350, 345, 356, 0, 351, 347, 347, 355, - 346, 351, 357, 358, 349, 353, 354, 352, 349, 358, - 359, 0, 361, 350, 363, 0, 352, 353, 354, 362, - 356, 356, 355, 0, 357, 362, 355, 364, 365, 357, - 358, 370, 366, 363, 371, 365, 359, 359, 361, 361, - 368, 363, 368, 369, 370, 364, 362, 366, 374, 368, - 369, 373, 379, 372, 364, 365, 376, 375, 370, 366, - 378, 374, 377, 380, 383, 379, 371, 368, 382, 368, - - 369, 372, 381, 373, 382, 374, 375, 381, 373, 379, - 372, 384, 385, 378, 375, 380, 377, 383, 376, 377, - 380, 383, 378, 384, 386, 382, 389, 0, 387, 381, - 391, 0, 398, 389, 385, 386, 387, 390, 384, 385, - 378, 391, 393, 394, 398, 390, 395, 0, 392, 397, - 394, 386, 396, 389, 396, 387, 388, 391, 392, 398, - 401, 388, 399, 388, 390, 410, 393, 416, 401, 393, - 394, 388, 395, 395, 388, 397, 397, 399, 403, 396, - 392, 388, 388, 388, 400, 392, 402, 401, 388, 399, - 388, 402, 404, 407, 405, 406, 400, 410, 388, 416, - - 403, 388, 405, 409, 413, 403, 412, 406, 388, 411, - 404, 400, 415, 402, 407, 412, 414, 417, 413, 404, - 407, 405, 406, 418, 411, 419, 409, 420, 0, 421, - 409, 413, 417, 412, 423, 414, 411, 422, 425, 415, - 419, 421, 424, 414, 417, 424, 427, 428, 429, 425, - 430, 420, 419, 424, 420, 418, 421, 426, 423, 422, - 427, 423, 426, 431, 422, 425, 432, 433, 437, 424, - 434, 436, 424, 427, 428, 429, 434, 439, 435, 436, - 438, 440, 430, 441, 442, 444, 0, 437, 0, 426, - 431, 445, 441, 432, 443, 437, 455, 434, 436, 433, - - 435, 443, 446, 438, 440, 435, 442, 438, 440, 439, - 441, 442, 451, 445, 447, 446, 448, 444, 445, 447, - 452, 443, 449, 447, 450, 448, 0, 453, 455, 446, - 459, 457, 454, 450, 451, 456, 0, 467, 447, 451, - 453, 447, 452, 448, 454, 458, 447, 452, 449, 449, - 447, 450, 459, 456, 453, 457, 460, 459, 457, 454, - 461, 462, 456, 463, 464, 465, 466, 458, 458, 467, - 474, 461, 458, 469, 468, 462, 465, 471, 460, 470, - 472, 466, 464, 460, 476, 463, 475, 461, 462, 472, - 463, 464, 465, 466, 458, 468, 473, 469, 477, 471, - - 469, 468, 474, 470, 471, 478, 470, 472, 475, 473, - 479, 482, 480, 475, 481, 479, 476, 484, 0, 486, - 0, 483, 477, 473, 489, 477, 480, 478, 481, 483, - 485, 487, 478, 488, 486, 484, 491, 493, 488, 480, - 0, 481, 479, 482, 484, 485, 486, 490, 483, 490, - 489, 489, 492, 487, 485, 499, 0, 485, 487, 494, - 492, 491, 493, 491, 493, 488, 495, 498, 494, 496, - 504, 497, 485, 499, 490, 495, 500, 496, 497, 492, - 501, 508, 499, 502, 505, 503, 494, 506, 500, 501, - 498, 502, 505, 495, 498, 506, 496, 503, 497, 507, - - 509, 510, 504, 500, 508, 512, 511, 501, 508, 515, - 502, 505, 503, 512, 506, 513, 509, 511, 514, 516, - 520, 517, 518, 510, 522, 507, 507, 509, 510, 513, - 0, 515, 512, 511, 521, 523, 515, 522, 514, 516, - 520, 519, 513, 517, 518, 514, 516, 520, 517, 518, - 519, 522, 521, 523, 524, 525, 529, 526, 527, 531, - 532, 521, 523, 528, 527, 537, 533, 531, 519, 536, - 0, 528, 534, 533, 529, 0, 524, 555, 536, 525, - 526, 524, 525, 529, 526, 527, 531, 535, 538, 528, - 528, 539, 532, 533, 544, 534, 536, 537, 528, 534, - - 539, 540, 535, 540, 541, 0, 544, 538, 550, 555, - 547, 541, 0, 551, 535, 538, 553, 0, 539, 0, - 547, 544, 0, 557, 552, 560, 550, 560, 540, 554, - 0, 541, 542, 562, 551, 550, 542, 547, 558, 542, - 551, 563, 553, 553, 558, 557, 542, 552, 559, 542, - 557, 552, 560, 0, 542, 554, 554, 559, 561, 542, - 562, 563, 565, 542, 564, 558, 542, 0, 563, 0, - 566, 567, 580, 542, 565, 559, 542, 556, 556, 569, - 556, 580, 561, 556, 568, 561, 573, 570, 556, 565, - 564, 564, 572, 567, 556, 556, 566, 566, 567, 580, - - 572, 569, 571, 556, 556, 556, 569, 556, 568, 573, - 556, 568, 570, 573, 570, 556, 574, 571, 575, 572, - 576, 556, 556, 574, 577, 578, 575, 579, 0, 571, - 583, 581, 585, 582, 584, 586, 0, 578, 587, 576, - 579, 0, 588, 574, 0, 575, 581, 576, 0, 589, - 577, 577, 578, 590, 579, 582, 584, 583, 581, 592, - 582, 584, 587, 588, 585, 587, 591, 586, 589, 588, - 593, 594, 590, 595, 596, 591, 589, 597, 598, 594, - 590, 592, 603, 0, 601, 602, 592, 599, 0, 606, - 593, 604, 596, 591, 605, 599, 597, 593, 594, 0, - - 595, 596, 601, 602, 597, 607, 603, 605, 608, 603, - 598, 601, 602, 604, 599, 606, 606, 607, 604, 609, - 610, 605, 609, 612, 613, 614, 608, 615, 610, 618, - 616, 614, 607, 617, 618, 608, 616, 0, 619, 621, - 617, 620, 631, 628, 610, 619, 609, 610, 612, 615, - 612, 613, 614, 623, 615, 610, 618, 616, 622, 620, - 617, 623, 621, 624, 625, 619, 621, 622, 620, 626, - 628, 627, 632, 630, 631, 639, 629, 0, 633, 625, - 623, 624, 626, 629, 636, 622, 630, 634, 0, 638, - 624, 625, 627, 637, 635, 634, 626, 0, 627, 637, - - 630, 633, 635, 629, 632, 633, 636, 639, 640, 635, - 641, 636, 642, 643, 634, 638, 638, 644, 0, 641, - 637, 635, 645, 647, 644, 646, 642, 0, 648, 635, - 649, 0, 640, 650, 646, 640, 654, 641, 652, 642, - 648, 650, 654, 651, 644, 643, 651, 653, 0, 645, - 647, 652, 646, 649, 653, 648, 0, 649, 656, 657, - 650, 0, 0, 654, 658, 652, 664, 659, 661, 659, - 651, 664, 0, 660, 653, 655, 658, 655, 0, 662, - 661, 655, 657, 655, 656, 656, 657, 0, 655, 666, - 663, 658, 665, 655, 659, 661, 660, 667, 664, 655, - - 660, 662, 655, 663, 655, 665, 662, 669, 655, 667, - 655, 668, 666, 670, 672, 655, 666, 663, 673, 665, - 655, 668, 671, 674, 667, 675, 670, 672, 671, 669, - 680, 678, 679, 668, 669, 681, 0, 0, 668, 673, - 670, 672, 682, 680, 683, 673, 678, 691, 668, 671, - 681, 684, 675, 688, 679, 674, 677, 680, 678, 679, - 685, 677, 681, 677, 686, 692, 683, 687, 682, 682, - 684, 683, 686, 685, 677, 687, 689, 693, 684, 691, - 688, 677, 677, 677, 694, 693, 695, 685, 677, 692, - 677, 686, 692, 696, 687, 698, 699, 697, 694, 689, - - 701, 677, 703, 689, 693, 697, 700, 702, 677, 704, - 703, 694, 705, 698, 699, 696, 0, 700, 695, 705, - 696, 707, 698, 699, 697, 702, 708, 706, 707, 703, - 710, 704, 701, 700, 702, 721, 704, 709, 712, 705, - 706, 713, 0, 714, 708, 715, 722, 716, 707, 713, - 0, 712, 714, 708, 706, 709, 717, 715, 718, 719, - 722, 720, 710, 726, 709, 712, 726, 721, 713, 716, - 714, 724, 715, 722, 716, 727, 725, 719, 717, 728, - 718, 725, 724, 717, 729, 718, 719, 720, 720, 726, - 726, 729, 728, 726, 731, 730, 732, 733, 724, 727, - - 0, 736, 727, 732, 734, 735, 728, 730, 725, 0, - 734, 729, 736, 737, 738, 739, 741, 743, 742, 744, - 0, 733, 730, 732, 733, 746, 731, 735, 736, 742, - 739, 734, 735, 745, 746, 737, 738, 741, 743, 747, - 737, 738, 739, 741, 743, 742, 744, 748, 750, 749, - 751, 745, 746, 752, 0, 750, 748, 749, 760, 753, - 745, 754, 756, 747, 751, 759, 747, 757, 758, 761, - 762, 756, 764, 0, 748, 750, 749, 751, 763, 765, - 759, 753, 762, 754, 758, 752, 753, 765, 754, 756, - 760, 757, 759, 767, 757, 758, 766, 762, 769, 764, - - 763, 761, 771, 770, 774, 763, 765, 769, 767, 766, - 771, 772, 774, 772, 776, 778, 777, 779, 780, 0, - 767, 770, 778, 766, 781, 769, 783, 776, 777, 771, - 770, 774, 782, 786, 784, 792, 0, 788, 772, 785, - 0, 776, 778, 777, 787, 788, 781, 784, 783, 779, - 780, 781, 785, 783, 789, 786, 787, 782, 790, 782, - 786, 784, 792, 793, 788, 791, 785, 795, 794, 797, - 790, 787, 796, 791, 789, 799, 793, 794, 800, 796, - 797, 789, 0, 797, 801, 790, 0, 806, 795, 803, - 793, 797, 791, 802, 795, 794, 797, 805, 0, 796, - - 800, 799, 799, 804, 801, 800, 802, 797, 811, 806, - 797, 801, 804, 803, 806, 805, 803, 807, 808, 809, - 802, 813, 0, 815, 805, 807, 812, 809, 818, 814, - 804, 815, 817, 0, 828, 811, 0, 0, 0, 813, - 808, 814, 816, 818, 807, 808, 809, 822, 813, 812, - 815, 821, 817, 812, 816, 818, 814, 819, 820, 817, - 821, 823, 826, 824, 820, 819, 828, 0, 822, 816, - 824, 832, 825, 823, 822, 831, 830, 833, 821, 825, - 826, 829, 831, 836, 819, 820, 834, 837, 823, 826, - 824, 834, 833, 832, 829, 830, 836, 835, 832, 825, - - 838, 837, 831, 830, 833, 835, 840, 841, 829, 842, - 836, 843, 845, 844, 837, 0, 0, 0, 834, 0, - 840, 846, 847, 0, 835, 841, 838, 838, 839, 851, - 845, 839, 839, 840, 841, 844, 839, 843, 843, 845, - 844, 842, 839, 846, 847, 848, 839, 849, 846, 847, - 839, 851, 850, 852, 849, 839, 851, 854, 839, 839, - 855, 856, 0, 839, 857, 901, 852, 853, 0, 839, - 850, 848, 848, 839, 849, 0, 853, 0, 863, 850, - 852, 859, 861, 856, 864, 866, 0, 857, 856, 854, - 865, 857, 855, 0, 853, 858, 864, 901, 861, 865, - - 858, 863, 858, 866, 858, 863, 858, 859, 859, 861, - 867, 864, 866, 858, 0, 867, 869, 865, 870, 868, - 871, 0, 858, 872, 873, 878, 870, 858, 880, 858, - 874, 858, 868, 858, 869, 875, 872, 873, 876, 871, - 876, 877, 867, 869, 875, 870, 868, 871, 874, 879, - 872, 873, 878, 882, 885, 880, 883, 874, 884, 887, - 886, 879, 875, 877, 0, 876, 884, 886, 877, 888, - 890, 892, 894, 889, 902, 891, 879, 882, 883, 889, - 882, 885, 891, 883, 893, 884, 887, 886, 895, 897, - 903, 888, 896, 892, 894, 899, 888, 890, 892, 894, - - 889, 896, 891, 893, 898, 904, 902, 905, 908, 899, - 897, 893, 903, 906, 895, 895, 897, 903, 0, 896, - 907, 906, 899, 909, 898, 905, 910, 912, 911, 0, - 909, 898, 911, 910, 905, 908, 907, 904, 913, 914, - 906, 915, 919, 917, 913, 916, 914, 907, 918, 919, - 909, 913, 917, 910, 921, 911, 915, 922, 916, 912, - 920, 923, 920, 921, 925, 913, 914, 929, 915, 919, - 917, 913, 916, 924, 918, 918, 930, 924, 928, 922, - 931, 921, 927, 928, 922, 929, 925, 920, 923, 932, - 927, 925, 932, 931, 929, 930, 933, 934, 935, 936, - - 924, 932, 0, 930, 0, 937, 939, 931, 941, 927, - 928, 935, 942, 938, 939, 946, 932, 941, 933, 932, - 940, 940, 934, 933, 934, 935, 955, 943, 937, 938, - 944, 936, 937, 939, 942, 941, 943, 944, 946, 942, - 938, 947, 946, 948, 949, 950, 955, 940, 951, 952, - 947, 948, 954, 955, 943, 953, 956, 944, 950, 949, - 951, 952, 958, 953, 957, 964, 959, 961, 947, 960, - 948, 949, 950, 957, 954, 951, 952, 963, 956, 954, - 958, 960, 953, 956, 962, 965, 966, 969, 961, 958, - 962, 957, 959, 959, 961, 967, 960, 964, 971, 963, - - 970, 972, 973, 0, 963, 976, 974, 978, 0, 988, - 972, 962, 966, 966, 969, 973, 971, 965, 974, 975, - 979, 967, 967, 970, 0, 971, 978, 970, 972, 973, - 977, 976, 976, 974, 978, 980, 981, 977, 982, 975, - 983, 988, 979, 982, 981, 983, 975, 979, 980, 984, - 985, 986, 987, 989, 989, 992, 984, 977, 985, 986, - 987, 990, 980, 981, 991, 993, 994, 995, 0, 990, - 982, 997, 983, 993, 994, 995, 984, 985, 986, 987, - 989, 996, 1001, 999, 997, 991, 1000, 992, 990, 996, - 998, 991, 993, 994, 995, 999, 998, 1003, 997, 1002, - - 1004, 1006, 1005, 1007, 1008, 0, 1001, 0, 996, 1001, - 999, 1013, 1000, 1000, 1002, 1006, 1009, 998, 1008, 1015, - 1009, 1007, 1004, 1012, 1003, 1005, 1002, 1004, 1006, 1005, - 1007, 1008, 1011, 1009, 1012, 1014, 1017, 1016, 1013, 1011, - 1019, 1009, 1015, 1009, 1016, 1017, 1015, 1009, 1018, 1020, - 1012, 1024, 1022, 1026, 1025, 1018, 1028, 1014, 0, 1011, - 1009, 1022, 1014, 1017, 1016, 1030, 1031, 1033, 0, 1034, - 1035, 1040, 1019, 1024, 1037, 1018, 1020, 1031, 1024, 1022, - 1025, 1025, 1035, 1028, 1036, 1026, 1036, 1037, 1038, 1041, - 1039, 1033, 1030, 1031, 1033, 1034, 1034, 1035, 1040, 1042, - - 1044, 1037, 1039, 1043, 1045, 1044, 1042, 1050, 0, 1046, - 1038, 1036, 1041, 1047, 0, 1038, 1041, 1039, 1053, 1048, - 1045, 1047, 1052, 0, 1051, 1054, 1042, 1044, 0, 1043, - 1043, 1045, 1046, 1051, 1050, 1052, 1046, 1058, 1057, 1061, - 1047, 1048, 1060, 1055, 1053, 1053, 1048, 1054, 1056, 1052, - 1055, 1051, 1054, 1059, 1062, 1056, 1057, 1064, 1067, 1058, - 1059, 1061, 0, 1066, 1058, 1057, 1061, 1060, 1072, 1060, - 1055, 1063, 1069, 1068, 1071, 1056, 1066, 1071, 1063, 1073, - 1059, 1068, 1074, 1076, 1075, 1067, 1062, 1077, 1080, 1064, - 1066, 1074, 0, 1069, 1072, 1072, 1075, 1078, 1063, 1069, - - 1068, 1071, 1077, 1081, 1078, 1073, 1073, 1076, 1082, 1074, - 1076, 1075, 1079, 1085, 1077, 1079, 1083, 1084, 1086, 1084, - 1080, 1087, 1088, 1091, 1078, 1081, 1082, 1079, 0, 1092, - 1081, 1088, 1093, 1089, 1096, 1082, 1079, 1085, 1083, 1079, - 1085, 1089, 1079, 1083, 1084, 1090, 1095, 1087, 1087, 1088, - 1086, 1092, 1090, 1094, 1079, 1091, 1092, 1094, 1098, 1097, - 1089, 1096, 1099, 1100, 1093, 1101, 1102, 1098, 1095, 1099, - 1100, 1111, 1090, 1095, 1104, 1105, 1103, 1106, 1101, 1102, - 1094, 1097, 1108, 1113, 1106, 1098, 1097, 1107, 1104, 1099, - 1100, 1103, 1101, 1102, 1107, 1108, 1109, 0, 1111, 1112, - - 1115, 1104, 1109, 1103, 1106, 1113, 1112, 1105, 1114, 1108, - 1113, 1116, 1115, 1117, 1107, 1119, 1117, 1120, 0, 1118, - 1123, 1121, 1128, 1109, 1116, 1125, 1112, 1115, 1118, 1120, - 1125, 1123, 1129, 1119, 1114, 1114, 1122, 1125, 1116, 1122, - 1117, 1121, 1119, 1127, 1120, 1127, 1118, 1123, 1121, 1128, - 1130, 1132, 1125, 1131, 1122, 0, 1133, 1125, 1134, 1129, - 1135, 1131, 1138, 1122, 1137, 1139, 1122, 1133, 1135, 1147, - 1127, 1147, 1136, 1132, 1130, 1136, 1134, 1130, 1132, 1140, - 1131, 1141, 1137, 1133, 1142, 1134, 1140, 1135, 1143, 1144, - 1136, 1137, 1139, 1142, 1138, 1141, 1147, 1145, 1148, 1136, - - 1144, 1143, 1136, 1149, 1151, 1152, 1140, 1148, 1141, 1150, - 1158, 1142, 1145, 1156, 1153, 1143, 1144, 1155, 1156, 1160, - 1150, 1161, 1151, 1180, 1145, 1148, 1155, 1152, 1153, 1149, - 1149, 1151, 1152, 1163, 1154, 1162, 1150, 1154, 1159, 1165, - 1153, 1153, 1158, 1161, 1155, 1156, 1165, 1159, 1161, 1166, - 1180, 1160, 1154, 1168, 1163, 1153, 1167, 1172, 1173, 1168, - 1163, 1154, 1176, 1171, 1154, 1159, 1165, 1162, 1177, 1174, - 1167, 1171, 1173, 0, 1175, 1186, 1172, 1168, 1174, 1177, - 1168, 1166, 1175, 1167, 1172, 1173, 1168, 1182, 1178, 1183, - 1171, 1181, 1189, 1186, 1176, 1177, 1174, 1178, 1181, 1184, - - 1185, 1175, 1186, 1187, 1189, 1190, 1196, 1187, 1192, 1193, - 1182, 1183, 1191, 1196, 1182, 1178, 1183, 1197, 1181, 1189, - 1200, 1184, 1185, 1194, 1193, 1191, 1184, 1185, 1192, 1195, - 1187, 1198, 1190, 1196, 1199, 1192, 1193, 1195, 1194, 1191, - 1201, 1200, 1202, 1199, 1203, 1206, 1198, 1200, 1205, 1197, - 1194, 1207, 1209, 1208, 1211, 1210, 1195, 0, 1198, 1211, - 0, 1199, 1210, 1206, 1212, 1213, 1202, 1201, 1208, 1202, - 1205, 1203, 1206, 1212, 1215, 1205, 1214, 1209, 1207, 1209, - 1208, 1211, 1210, 1216, 1217, 1221, 1218, 1213, 1220, 1215, - 1219, 1212, 1213, 1222, 1214, 1216, 1223, 1219, 1232, 1218, - - 1220, 1215, 1223, 1214, 1218, 1226, 1217, 1225, 1224, 1228, - 1216, 1217, 1221, 1218, 1225, 1220, 1224, 1219, 1229, 1230, - 1227, 1231, 1235, 1223, 1229, 1222, 1218, 1227, 1233, 1236, - 1232, 1237, 1226, 1239, 1225, 1224, 1228, 1238, 1236, 1238, - 1240, 1242, 1241, 1246, 1231, 1229, 1230, 1227, 1231, 1250, - 0, 1244, 1233, 0, 1235, 1233, 1236, 1239, 1244, 1245, - 1239, 1254, 1250, 1237, 1238, 1251, 1245, 1240, 1241, 1241, - 1243, 1243, 1243, 1242, 1247, 1246, 1250, 1243, 1244, 1249, - 1252, 1247, 1253, 1257, 1249, 1243, 1245, 1255, 1256, 1257, - 1251, 1258, 1251, 1254, 1253, 1256, 1252, 1243, 1243, 1243, - - 1260, 1247, 1259, 1259, 1243, 1255, 1261, 1252, 1263, 1253, - 1257, 1249, 1262, 1261, 1255, 1256, 1264, 1262, 1258, 1267, - 1269, 1271, 1268, 1279, 1270, 0, 1260, 1260, 1268, 1259, - 1273, 1273, 1272, 1261, 1263, 1263, 1270, 1267, 1274, 1262, - 1278, 1271, 1276, 1264, 1275, 1275, 1267, 1269, 1271, 1268, - 1272, 1270, 1281, 1276, 1280, 1279, 1282, 1273, 1283, 1272, - 1284, 1280, 1278, 0, 1274, 1274, 1286, 1278, 1287, 1276, - 1285, 1275, 1281, 1294, 1288, 1287, 1289, 1291, 1290, 1281, - 1293, 1280, 1288, 0, 1286, 1294, 1291, 1284, 1282, 0, - 1283, 1289, 1285, 1286, 1295, 1287, 0, 1285, 1292, 1292, - - 1294, 1288, 1290, 1289, 1291, 1290, 1293, 1293, 1297, 1300, - 1295, 1298, 1299, 1301, 1303, 1302, 1297, 1295, 1305, 1308, - 1299, 1295, 1306, 1298, 1309, 1292, 1308, 1310, 1306, 1312, - 1315, 1307, 1300, 1302, 1301, 1297, 1300, 1295, 1298, 1299, - 1301, 1303, 1302, 1304, 1307, 1305, 1308, 1311, 1304, 1306, - 1313, 1313, 1311, 1314, 1310, 1318, 1309, 1317, 1307, 1304, - 1321, 1312, 1315, 1320, 1322, 1320, 1319, 1323, 1314, 1322, - 1304, 1324, 1317, 1326, 1328, 1304, 1327, 1313, 1318, 1311, - 1314, 1319, 1318, 1329, 1317, 1331, 1324, 1330, 1332, 1333, - 1320, 1322, 1321, 1319, 1330, 1335, 1337, 1326, 1324, 1323, - - 1326, 1328, 1327, 1327, 1334, 1339, 1340, 0, 1344, 1332, - 1329, 1333, 1342, 1335, 1330, 1332, 1333, 1331, 1337, 1343, - 1345, 1340, 1335, 1337, 1347, 1334, 1346, 1342, 1354, 1339, - 1348, 1334, 1339, 1340, 1343, 1344, 1349, 1348, 1345, 1342, - 1350, 1352, 1351, 1353, 1359, 1355, 1343, 1345, 1346, 1350, - 1351, 1347, 1358, 1346, 1349, 1357, 1360, 1348, 1355, 1362, - 1354, 1358, 1359, 1349, 1352, 1353, 1357, 1350, 1352, 1351, - 1353, 1359, 1355, 1364, 1360, 1366, 1367, 1368, 1369, 1358, - 1370, 1357, 1357, 1360, 1364, 1371, 1362, 1366, 1369, 1367, - 1372, 1376, 1373, 1357, 1375, 0, 1377, 1378, 1376, 0, - - 1364, 1380, 1366, 1367, 1414, 1369, 1370, 1370, 1389, 1368, - 1371, 1373, 1371, 0, 1375, 1378, 1380, 1372, 1376, 1373, - 1379, 1375, 1377, 1377, 1378, 1381, 1379, 1382, 1380, 1383, - 1383, 1384, 1385, 1388, 1387, 1389, 1414, 1390, 1392, 0, - 1381, 1387, 1382, 1384, 1391, 1385, 1390, 1379, 1388, 1397, - 0, 1391, 1381, 1385, 1382, 1393, 1383, 1396, 1384, 1385, - 1388, 1387, 1392, 1394, 1390, 1392, 1398, 1399, 1400, 1402, - 1394, 1391, 1385, 1403, 1397, 1398, 1397, 1393, 1405, 1396, - 1406, 1408, 1393, 1425, 1396, 1407, 1407, 1402, 1400, 1399, - 1394, 1405, 1409, 1398, 1399, 1400, 1402, 1412, 1403, 1410, - - 1403, 1411, 1413, 1408, 1416, 1405, 1412, 1406, 1408, 1413, - 1415, 1417, 1407, 1421, 1419, 1425, 1422, 1409, 1416, 1409, - 1420, 1410, 1419, 1411, 1412, 1427, 1410, 1423, 1411, 1413, - 1417, 1416, 1415, 1420, 1426, 0, 1429, 1415, 1417, 1423, - 1421, 1419, 1422, 1422, 1424, 1428, 1431, 1420, 1430, 1431, - 1427, 1424, 1427, 1432, 1423, 1434, 1426, 0, 0, 1433, - 1428, 1426, 1429, 1429, 1431, 1433, 1435, 1438, 1436, 1439, - 1442, 1424, 1428, 1431, 1430, 1430, 1431, 1442, 1432, 1443, - 1432, 1444, 1434, 1436, 1435, 1441, 1433, 1451, 1443, 1438, - 1446, 1439, 1444, 1435, 1438, 1436, 1439, 1442, 1448, 1441, - - 1450, 1449, 1450, 1446, 1452, 1451, 1443, 1454, 1444, 1456, - 1455, 1446, 1441, 1449, 1451, 1453, 1457, 1446, 1455, 1448, - 1460, 1458, 1464, 1466, 1459, 1448, 1467, 1450, 1449, 1459, - 1446, 1452, 1456, 1453, 1454, 1458, 1456, 1455, 1457, 1460, - 1465, 1466, 1453, 1457, 1461, 1471, 1468, 1460, 1458, 1464, - 1466, 1461, 1470, 1467, 1465, 1469, 1459, 1473, 1472, 0, - 1476, 1470, 1477, 0, 1474, 1465, 1465, 1465, 1480, 1477, - 1469, 1461, 1468, 1468, 1479, 1486, 1479, 1471, 0, 1470, - 1472, 1465, 1469, 1476, 1473, 1472, 1474, 1476, 1482, 1477, - 1480, 1474, 1465, 1481, 1483, 1480, 1484, 1481, 1485, 1487, - - 1482, 1479, 1486, 1490, 1490, 1484, 1488, 1489, 1494, 1485, - 1495, 1491, 1494, 1495, 1502, 1482, 1483, 0, 1488, 1491, - 1481, 1483, 1487, 1484, 1493, 1485, 1487, 1498, 1496, 1489, - 1490, 1501, 1493, 1488, 1489, 1494, 1496, 1495, 1491, 1497, - 1499, 1502, 1498, 1501, 1503, 1497, 1499, 1504, 1508, 1505, - 1506, 1493, 1507, 1509, 1498, 1496, 1511, 1510, 1501, 1512, - 0, 1504, 1505, 0, 1506, 1514, 1497, 1499, 1503, 1510, - 1511, 1503, 1515, 1517, 1504, 1508, 1505, 1506, 1507, 1507, - 1509, 1518, 1519, 1511, 1510, 1512, 1512, 1513, 1518, 1519, - 1513, 1520, 1514, 1521, 1515, 1517, 1522, 1524, 1525, 1515, - - 1517, 1526, 1523, 1527, 1529, 1513, 1520, 1525, 1518, 1519, - 1523, 1531, 1529, 1528, 1513, 1532, 1534, 1513, 1520, 1533, - 1521, 1537, 1539, 1522, 1524, 1525, 1528, 1533, 1526, 1523, - 1527, 1529, 1535, 1531, 1536, 0, 1538, 1543, 1531, 1540, - 1528, 1535, 1532, 1534, 1541, 1537, 1533, 1540, 1537, 1539, - 1542, 1538, 0, 1545, 1549, 1536, 1541, 1551, 1542, 1535, - 1545, 1536, 1538, 1538, 1543, 1546, 1540, 1547, 1548, 1546, - 1553, 1541, 1554, 1554, 1550, 1556, 1552, 1542, 1538, 1547, - 1545, 1549, 1550, 1552, 1551, 1555, 0, 1560, 1557, 1559, - 1553, 1548, 1546, 1556, 1547, 1548, 1561, 1553, 1561, 1554, - - 1563, 1550, 1556, 1552, 1559, 1562, 1563, 1564, 1565, 1560, - 1566, 1555, 1555, 1557, 1560, 1557, 1559, 1571, 1567, 1562, - 1568, 1569, 1566, 1561, 1576, 1578, 1574, 1563, 1570, 1564, - 1565, 1572, 1562, 1574, 1564, 1565, 1567, 1566, 1568, 1569, - 1577, 1570, 1576, 0, 1579, 1567, 1583, 1568, 1569, 1571, - 1582, 1576, 1579, 1574, 1572, 1570, 1590, 1578, 1572, 1585, - 1587, 1580, 1582, 1580, 1583, 1586, 1577, 1577, 1580, 1588, - 1579, 1579, 1587, 1583, 1585, 1591, 1586, 1582, 1592, 1579, - 1590, 1594, 1596, 1590, 1588, 1592, 1585, 1587, 1580, 1593, - 1580, 1597, 1586, 1598, 1599, 1602, 1588, 1591, 0, 1600, - - 0, 1601, 1591, 1604, 1593, 1592, 1603, 1608, 1594, 1596, - 1602, 1604, 1600, 1597, 1605, 1607, 1593, 1609, 1597, 1603, - 1614, 1599, 1602, 1610, 1613, 1598, 1600, 1601, 1601, 1611, - 1604, 1608, 1612, 1603, 1608, 1616, 1611, 1613, 1607, 1612, - 1605, 1605, 1607, 1614, 1609, 1610, 1615, 1614, 1617, 1618, - 1610, 1613, 1619, 1615, 1621, 1622, 1611, 1616, 1623, 1612, - 1625, 1619, 1616, 1635, 1624, 1621, 1629, 1631, 1631, 0, - 1618, 1628, 1630, 1615, 1632, 1637, 1618, 1622, 1641, 1619, - 1617, 1621, 1622, 1624, 1628, 1625, 1634, 1625, 1636, 1638, - 1623, 1624, 1629, 1629, 1631, 1635, 1630, 1643, 1628, 1630, - - 1632, 1632, 1637, 1636, 1646, 1641, 1643, 1638, 1647, 1634, - 1648, 1650, 1652, 1634, 1653, 1636, 1638, 0, 1654, 1658, - 1655, 1656, 1663, 1660, 1643, 1655, 1646, 1658, 1667, 1654, - 1647, 1646, 1669, 1662, 1659, 1647, 1670, 1648, 1650, 1676, - 1653, 1653, 1672, 1656, 1652, 1654, 1658, 1655, 1656, 1659, - 1660, 1662, 1665, 1664, 1663, 1667, 1671, 1673, 1669, 1669, - 1662, 1659, 1664, 1670, 1665, 1675, 1676, 1672, 1674, 1672, - 1673, 1677, 1678, 1679, 0, 1681, 1680, 0, 1671, 1665, - 1664, 1674, 1682, 1671, 1673, 1680, 1684, 1675, 1679, 1683, - 1685, 1688, 1675, 1686, 1689, 1674, 0, 1682, 1677, 1678, - - 1679, 1681, 1681, 1680, 1683, 1685, 1684, 1687, 1692, 1682, - 1690, 1690, 1689, 1684, 1687, 1686, 1683, 1685, 1688, 1691, - 1686, 1689, 1692, 1694, 1693, 1696, 1691, 1693, 1695, 1697, - 0, 1704, 1705, 1700, 1687, 1692, 1694, 1690, 1697, 1698, - 1701, 1699, 1702, 1696, 1698, 1699, 1691, 1706, 1703, 1710, - 1694, 1693, 1696, 1701, 1695, 1695, 1697, 1700, 1704, 1705, - 1700, 1721, 1709, 1716, 1702, 1710, 1698, 1701, 1699, 1702, - 1703, 1709, 1712, 1706, 1706, 1703, 1710, 1713, 1714, 1712, - 1715, 1716, 1719, 1714, 1717, 1718, 1713, 1715, 1721, 1709, - 1716, 1717, 1722, 1723, 1718, 1724, 0, 1726, 0, 1712, - - 1732, 1725, 1723, 1730, 1713, 1714, 1726, 1715, 1719, 1719, - 1722, 1717, 1718, 1725, 1727, 1724, 1728, 1729, 1731, 1722, - 1723, 1734, 1724, 1727, 1726, 1729, 1733, 1728, 1725, 1735, - 1730, 0, 1732, 1734, 1740, 1733, 1736, 1735, 1739, 1737, - 1738, 1727, 1741, 1728, 1729, 1731, 1737, 1738, 1734, 1742, - 1743, 1754, 1747, 1733, 1745, 0, 1735, 1748, 1736, 1740, - 1739, 1740, 1745, 1736, 1748, 1739, 1737, 1738, 1752, 1741, - 1747, 1755, 1749, 1753, 1742, 1752, 1742, 1743, 1754, 1747, - 1749, 1745, 1756, 1755, 1748, 1757, 1762, 1758, 1761, 1760, - 1763, 1756, 1765, 1767, 1768, 1752, 1769, 1753, 1755, 1749, - - 1753, 1760, 1768, 1770, 1763, 1771, 0, 1775, 1778, 1756, - 1758, 1761, 1757, 1762, 1758, 1761, 1760, 1763, 1779, 1765, - 1767, 1768, 1776, 1769, 1777, 1770, 1778, 1776, 1780, 1782, - 1770, 1781, 1771, 1775, 1775, 1778, 1785, 1782, 1777, 0, - 1779, 1780, 1783, 1786, 1787, 1779, 1789, 1788, 1785, 1776, - 1790, 1777, 1791, 1781, 1792, 1780, 1782, 1793, 1781, 1788, - 1794, 1783, 0, 1785, 1795, 1786, 1787, 1798, 1796, 1783, - 1786, 1787, 1791, 1789, 1788, 1797, 1792, 1790, 1799, 1791, - 1796, 1792, 1794, 1803, 1802, 1804, 1805, 1794, 1803, 1793, - 1795, 1795, 1807, 1806, 1798, 1796, 1809, 1797, 1802, 1808, - - 0, 0, 1797, 1810, 0, 1799, 1811, 1804, 1809, 1812, - 1814, 1802, 1804, 1815, 1807, 1803, 1806, 1808, 1805, 1807, - 1806, 1820, 1810, 1809, 1812, 1817, 1808, 1818, 1811, 1816, - 1810, 1819, 1821, 1811, 1814, 1815, 1812, 1814, 1816, 1817, - 1815, 1827, 1829, 1824, 1831, 1818, 1825, 1820, 1820, 1819, - 1821, 1824, 1817, 1825, 1818, 1826, 1816, 1828, 1819, 1821, - 1829, 1839, 1830, 1826, 1832, 1828, 1834, 1837, 1827, 1829, - 1824, 1831, 1832, 1825, 1830, 1838, 1836, 1840, 1834, 1841, - 0, 1843, 1826, 1836, 1828, 1847, 1844, 1846, 1839, 1830, - 1837, 1832, 1850, 1834, 1837, 1853, 1840, 1848, 1847, 1843, - - 1844, 1841, 1858, 1836, 1840, 1859, 1841, 1838, 1843, 1848, - 1846, 1860, 1847, 1844, 1846, 1861, 1855, 1863, 1850, 1850, - 1857, 1864, 1853, 1855, 1848, 1862, 1867, 1857, 1858, 1858, - 1865, 0, 1859, 1866, 1868, 1860, 1869, 1873, 1860, 1865, - 1872, 1873, 1861, 1855, 1863, 1872, 1866, 1857, 1864, 1874, - 1875, 1862, 1862, 1876, 1877, 1876, 1878, 1865, 1867, 1869, - 1866, 1868, 1881, 1869, 1873, 1884, 1882, 1884, 1885, 1885, - 1874, 1890, 1872, 1889, 0, 1886, 1874, 1877, 1885, 1887, - 1876, 1877, 1875, 1878, 1881, 1892, 1889, 1888, 1887, 1881, - 1882, 1891, 1884, 1882, 1888, 1885, 1885, 1886, 1890, 1891, - - 1889, 1893, 1886, 1894, 1892, 1895, 1887, 1896, 1897, 1893, - 0, 0, 1892, 1899, 1888, 1898, 1900, 1900, 1891, 1897, - 1899, 1901, 1905, 1906, 0, 1909, 1910, 1907, 1893, 1894, - 1894, 1895, 1895, 1896, 1896, 1897, 1907, 1898, 1902, 1901, - 1899, 1911, 1898, 1900, 1903, 1902, 1910, 1906, 1901, 1905, - 1906, 1903, 1909, 1910, 1907, 1912, 1913, 1915, 1916, 1920, - 1918, 1919, 1921, 1917, 1920, 1902, 1915, 1924, 1911, 0, - 0, 1903, 0, 1919, 1913, 1922, 1921, 1912, 1918, 1925, - 1926, 1933, 1912, 1913, 1915, 1916, 1917, 1918, 1919, 1921, - 1917, 1920, 1934, 1922, 1924, 1926, 1928, 1925, 1928, 1930, - - 0, 1940, 1922, 1933, 1935, 1937, 1925, 1926, 1933, 1938, - 1942, 1941, 1938, 1943, 1930, 0, 1946, 1942, 1934, 1934, - 1944, 1943, 1935, 1928, 1947, 1948, 1930, 1937, 1940, 1941, - 1952, 1935, 1937, 1950, 1954, 1938, 1938, 1942, 1941, 1938, - 1943, 1951, 1944, 1949, 1958, 1956, 1947, 1944, 1946, 1949, - 1951, 1947, 1948, 1956, 1953, 1950, 1953, 1957, 1961, 1959, - 1950, 1954, 1952, 1962, 1960, 1967, 1965, 1963, 1951, 1957, - 1949, 1958, 1956, 1959, 1962, 1963, 1961, 1964, 1966, 1966, - 1970, 1953, 1971, 1975, 1957, 1961, 1959, 1960, 1965, 1968, - 1962, 1960, 1967, 1965, 1963, 1973, 1964, 1968, 1977, 1979, - - 1976, 1973, 1984, 0, 1964, 1966, 1980, 1970, 1981, 1971, - 1975, 1976, 1981, 1980, 1987, 1982, 1968, 1985, 1988, 1987, - 1977, 1989, 1973, 1982, 1991, 1977, 1979, 1976, 1984, 1984, - 1985, 1990, 1991, 1980, 1994, 1981, 1993, 1992, 1995, 2000, - 1996, 1987, 1982, 1993, 1985, 1988, 2001, 1999, 1989, 1990, - 2003, 1991, 1992, 1998, 1999, 2002, 2005, 2007, 1990, 2003, - 2009, 1994, 1995, 1993, 1992, 1995, 1996, 1996, 1998, 2011, - 2014, 2000, 2015, 2001, 1999, 2016, 2006, 2003, 2005, 2002, - 1998, 2018, 2002, 2005, 2006, 2008, 2008, 2009, 2016, 2007, - 2012, 2019, 2017, 2020, 2015, 2008, 2011, 2014, 2012, 2015, - - 2021, 2023, 2016, 2006, 2028, 0, 2029, 2026, 2018, 2028, - 2031, 2032, 2008, 2008, 2017, 2026, 2033, 2012, 2019, 2017, - 2020, 2034, 2021, 2033, 2032, 2035, 2040, 2021, 2023, 2036, - 2041, 2028, 2029, 2029, 2026, 0, 2039, 2031, 2032, 2034, - 2042, 2050, 2046, 2033, 2047, 2040, 0, 2044, 2034, 2039, - 0, 2036, 2035, 2040, 2044, 2048, 2036, 2041, 2045, 2047, - 2050, 2052, 2042, 2039, 2046, 2045, 2051, 2042, 2050, 2046, - 2052, 2047, 2053, 2051, 2044, 2055, 2048, 2054, 2054, 2056, - 2061, 2055, 2048, 2053, 2059, 2045, 2062, 2054, 2052, 2063, - 2067, 2059, 2069, 2051, 2070, 2070, 0, 2071, 2073, 2053, - - 2074, 2056, 2055, 2077, 2054, 2054, 2056, 2061, 2075, 2074, - 2079, 2059, 2063, 2062, 2078, 2082, 2063, 2067, 2083, 2069, - 2071, 2075, 2079, 2070, 2071, 2073, 2084, 2074, 2085, 2081, - 2077, 2086, 2087, 2082, 2078, 2075, 2088, 2079, 2081, 2090, - 0, 2078, 2082, 2086, 2083, 2083, 2089, 2092, 2089, 2093, - 2095, 2090, 2094, 2084, 2087, 2085, 2081, 2098, 2086, 2087, - 2094, 2091, 2101, 2088, 2102, 2103, 2090, 2091, 2105, 2092, - 2106, 2093, 2108, 2089, 2092, 2109, 2093, 2095, 2110, 2094, - 2112, 2111, 2116, 2118, 2098, 2115, 2105, 2119, 2091, 2101, - 2109, 2102, 2103, 2111, 2115, 2105, 2120, 2106, 2129, 2108, - - 2119, 2122, 2109, 2121, 2110, 2110, 2116, 2112, 2111, 2116, - 2122, 2121, 2115, 2123, 2119, 2118, 2132, 2136, 2120, 2133, - 2134, 2136, 2129, 2120, 2123, 2129, 2133, 2138, 2122, 2137, - 2121, 2145, 0, 2134, 2139, 2142, 0, 2142, 2141, 2132, - 2123, 2138, 2139, 2132, 2136, 2137, 2133, 2134, 2140, 2141, - 2146, 2143, 2144, 2147, 2138, 2148, 2137, 2140, 2145, 2144, - 2149, 2139, 2142, 2143, 2150, 2141, 2151, 2152, 2146, 2152, - 2154, 2153, 2155, 2156, 2163, 2140, 2164, 2146, 2143, 2144, - 2147, 2148, 2148, 2153, 2158, 2155, 2150, 2149, 2151, 2162, - 2165, 2150, 2160, 2151, 2152, 2166, 2158, 2162, 2153, 2155, - - 2156, 2160, 2154, 2165, 2167, 2169, 2163, 2170, 2164, 2166, - 2172, 2158, 2167, 2171, 2173, 2174, 2162, 2165, 2169, 2160, - 0, 2171, 2166, 2174, 2172, 2175, 2176, 2177, 2173, 2178, - 2170, 2167, 2169, 2179, 2170, 2177, 2180, 2172, 0, 2181, - 2171, 2173, 2174, 2182, 2185, 2184, 2190, 2175, 2176, 2183, - 0, 0, 2175, 2176, 2177, 2187, 2178, 2183, 2180, 2179, - 2179, 2181, 2194, 2180, 2188, 2182, 2181, 0, 2198, 2192, - 2182, 2185, 2188, 2189, 0, 2187, 2183, 2184, 2190, 2191, - 2195, 2189, 2187, 2192, 2194, 2196, 2199, 2191, 2195, 2194, - 2197, 2188, 2201, 2196, 2198, 2198, 2192, 2200, 0, 2202, - - 2189, 2203, 2204, 2205, 2197, 2200, 2191, 2195, 2199, 2206, - 2210, 2205, 2196, 2199, 2207, 2208, 0, 2197, 2201, 2201, - 0, 2213, 2204, 2203, 2200, 2202, 2202, 2214, 2203, 2204, - 2205, 2209, 2210, 2217, 2207, 2208, 2206, 2210, 2211, 2209, - 2220, 2207, 2208, 2213, 2215, 2216, 2211, 2218, 2213, 2214, - 2221, 2223, 2215, 2216, 2214, 2218, 2219, 2224, 2209, 2217, - 2217, 2222, 2225, 2227, 2219, 2211, 2220, 2220, 2231, 2230, - 2233, 2215, 2216, 2234, 2218, 0, 2231, 2221, 2223, 2232, - 0, 2222, 2225, 2219, 2224, 2227, 0, 2232, 2222, 2225, - 2227, 2230, 0, 0, 0, 2231, 2230, 2233, 0, 0, - - 2234, 0, 0, 0, 0, 0, 2232, 2238, 2238, 2238, - 2238, 2238, 2238, 2238, 2239, 2239, 2239, 2239, 2239, 2239, - 2239, 2240, 2240, 2240, 2240, 2240, 2240, 2240, 2241, 2241, - 2241, 2241, 2241, 2241, 2241, 2242, 2242, 2242, 2242, 2242, - 2242, 2242, 2244, 2244, 0, 2244, 2244, 2244, 2244, 2245, - 2245, 0, 0, 0, 2245, 2245, 2246, 2246, 0, 0, - 2246, 0, 2246, 2247, 0, 0, 0, 0, 0, 2247, - 2248, 2248, 0, 0, 0, 2248, 2248, 2249, 0, 0, - 0, 0, 0, 2249, 2250, 2250, 0, 2250, 2250, 2250, - 2250, 2251, 2251, 0, 2251, 2251, 2251, 2251, 2237, 2237, - - 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, - 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, - 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, - 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, - 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, - 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, - 2237, 2237, 2237, 2237, 2237 + 4, 4, 5, 5, 6, 6, 5, 28, 6, 7, + 7, 7, 7, 2293, 7, 8, 8, 8, 8, 28, + 8, 9, 9, 9, 10, 10, 10, 15, 21, 46, + + 46, 15, 30, 3, 28, 51, 4, 792, 51, 5, + 19, 6, 19, 19, 30, 19, 71, 7, 62, 62, + 71, 19, 76, 8, 21, 21, 20, 20, 9, 30, + 785, 10, 11, 11, 11, 11, 11, 11, 12, 12, + 12, 12, 12, 12, 20, 24, 76, 25, 19, 76, + 20, 26, 11, 20, 20, 22, 142, 33, 12, 26, + 785, 25, 22, 33, 692, 24, 22, 35, 24, 22, + 11, 20, 24, 25, 25, 877, 12, 26, 26, 11, + 35, 22, 22, 29, 33, 12, 26, 67, 25, 22, + 140, 78, 24, 22, 35, 692, 22, 23, 78, 27, + + 67, 23, 27, 877, 23, 29, 23, 23, 139, 27, + 29, 27, 137, 38, 67, 38, 135, 32, 78, 23, + 133, 32, 27, 77, 23, 69, 27, 31, 23, 27, + 38, 23, 79, 23, 23, 31, 27, 32, 27, 38, + 38, 31, 38, 32, 32, 31, 77, 39, 32, 81, + 77, 63, 39, 31, 31, 58, 79, 38, 81, 79, + 39, 36, 31, 40, 32, 36, 53, 40, 31, 83, + 106, 40, 31, 34, 39, 36, 81, 34, 36, 39, + 134, 134, 83, 34, 106, 82, 34, 36, 36, 40, + 40, 87, 36, 34, 40, 34, 83, 106, 40, 87, + + 34, 122, 36, 82, 34, 36, 41, 92, 41, 41, + 34, 41, 82, 34, 86, 52, 92, 41, 87, 86, + 34, 37, 47, 57, 37, 57, 57, 65, 57, 65, + 65, 37, 65, 122, 92, 37, 37, 68, 42, 68, + 68, 86, 68, 37, 70, 14, 70, 70, 37, 70, + 84, 37, 85, 85, 88, 70, 84, 80, 37, 13, + 89, 85, 37, 37, 73, 65, 73, 73, 98, 73, + 80, 84, 88, 89, 91, 73, 95, 84, 90, 85, + 85, 80, 93, 84, 80, 90, 88, 89, 94, 0, + 91, 93, 98, 96, 141, 141, 148, 80, 95, 88, + + 98, 91, 73, 95, 0, 90, 96, 97, 99, 93, + 97, 94, 0, 0, 0, 94, 99, 101, 100, 98, + 96, 101, 102, 97, 97, 102, 103, 105, 148, 104, + 136, 97, 108, 136, 97, 99, 109, 97, 100, 103, + 100, 101, 107, 109, 101, 100, 108, 105, 101, 102, + 97, 97, 104, 103, 105, 110, 104, 111, 112, 108, + 115, 0, 107, 109, 110, 100, 113, 112, 114, 107, + 113, 116, 0, 119, 0, 114, 0, 117, 116, 120, + 111, 119, 110, 117, 111, 112, 115, 115, 113, 118, + 120, 117, 123, 113, 120, 114, 125, 113, 116, 121, + + 119, 118, 124, 120, 117, 125, 120, 123, 127, 126, + 117, 150, 128, 121, 127, 130, 118, 120, 129, 123, + 126, 120, 124, 125, 132, 131, 121, 150, 124, 124, + 130, 0, 0, 128, 131, 127, 126, 128, 150, 128, + 129, 0, 130, 146, 0, 129, 132, 147, 0, 124, + 0, 132, 131, 138, 151, 138, 138, 154, 138, 143, + 128, 143, 143, 144, 143, 144, 144, 146, 144, 147, + 146, 149, 152, 151, 147, 153, 156, 160, 155, 154, + 152, 151, 157, 149, 154, 155, 158, 153, 157, 0, + 159, 161, 0, 0, 156, 161, 0, 163, 149, 152, + + 236, 144, 153, 156, 165, 155, 166, 167, 158, 160, + 164, 167, 161, 158, 157, 157, 159, 159, 164, 161, + 168, 173, 161, 163, 163, 170, 165, 169, 166, 236, + 173, 165, 171, 166, 167, 0, 0, 164, 170, 161, + 162, 0, 174, 168, 171, 162, 175, 168, 173, 169, + 162, 0, 170, 0, 169, 172, 162, 162, 172, 171, + 0, 176, 180, 162, 174, 179, 176, 162, 175, 174, + 172, 181, 162, 175, 177, 0, 179, 162, 176, 178, + 176, 183, 172, 162, 162, 172, 178, 176, 176, 182, + 184, 186, 179, 176, 180, 190, 177, 181, 181, 188, + + 182, 177, 187, 185, 189, 176, 178, 176, 184, 185, + 0, 191, 192, 183, 194, 190, 0, 184, 198, 193, + 0, 182, 190, 186, 187, 191, 193, 182, 196, 187, + 185, 188, 195, 192, 197, 194, 189, 195, 191, 192, + 198, 194, 199, 201, 202, 198, 193, 196, 197, 200, + 201, 204, 205, 203, 199, 196, 206, 205, 210, 195, + 200, 197, 203, 207, 207, 208, 202, 211, 209, 199, + 201, 202, 207, 212, 204, 209, 200, 214, 204, 205, + 203, 213, 217, 210, 215, 210, 216, 211, 206, 213, + 207, 207, 214, 221, 211, 209, 218, 208, 219, 223, + + 220, 221, 219, 222, 214, 212, 224, 225, 213, 216, + 215, 215, 226, 218, 217, 220, 231, 0, 216, 228, + 221, 218, 222, 218, 230, 219, 227, 220, 224, 225, + 222, 223, 228, 224, 225, 231, 216, 230, 227, 229, + 218, 233, 234, 231, 226, 232, 228, 232, 229, 235, + 237, 230, 238, 227, 239, 244, 0, 0, 241, 237, + 240, 243, 242, 245, 248, 233, 229, 234, 233, 234, + 241, 240, 232, 244, 247, 235, 235, 237, 238, 238, + 239, 239, 244, 246, 243, 241, 242, 240, 243, 242, + 248, 248, 249, 250, 251, 245, 246, 253, 0, 252, + + 258, 251, 254, 253, 255, 0, 247, 264, 252, 256, + 246, 257, 0, 259, 249, 260, 254, 273, 0, 249, + 257, 251, 259, 258, 253, 250, 252, 258, 261, 254, + 255, 255, 262, 256, 263, 266, 256, 261, 257, 264, + 259, 260, 260, 265, 273, 268, 270, 279, 0, 263, + 266, 272, 272, 269, 271, 261, 262, 267, 274, 262, + 270, 263, 266, 268, 0, 267, 267, 265, 267, 271, + 265, 269, 268, 270, 279, 267, 272, 269, 272, 272, + 269, 271, 274, 277, 267, 274, 275, 276, 278, 275, + 280, 282, 267, 267, 281, 267, 275, 283, 269, 276, + + 287, 277, 285, 282, 290, 0, 278, 284, 289, 285, + 277, 286, 280, 275, 276, 278, 275, 280, 282, 283, + 281, 281, 284, 286, 283, 291, 288, 294, 296, 285, + 289, 0, 287, 288, 284, 289, 290, 292, 286, 293, + 294, 293, 297, 292, 0, 295, 296, 291, 295, 298, + 295, 300, 291, 288, 294, 296, 295, 301, 300, 292, + 0, 0, 0, 293, 292, 299, 293, 302, 293, 301, + 292, 298, 295, 299, 297, 295, 298, 295, 300, 299, + 302, 303, 304, 307, 301, 308, 306, 309, 310, 313, + 308, 311, 299, 309, 302, 304, 310, 303, 306, 0, + + 299, 307, 313, 311, 312, 303, 0, 0, 303, 304, + 307, 312, 314, 306, 309, 310, 313, 308, 311, 315, + 316, 314, 317, 315, 303, 305, 305, 316, 318, 317, + 0, 312, 319, 320, 322, 305, 321, 305, 305, 305, + 318, 322, 305, 323, 314, 320, 315, 316, 314, 317, + 305, 325, 305, 305, 319, 318, 0, 328, 323, 319, + 320, 322, 305, 324, 305, 305, 305, 327, 321, 305, + 323, 326, 333, 326, 329, 329, 324, 331, 327, 328, + 330, 332, 335, 325, 328, 333, 334, 330, 331, 344, + 324, 336, 332, 337, 327, 341, 0, 338, 326, 333, + + 0, 340, 337, 329, 331, 335, 336, 330, 332, 335, + 338, 334, 339, 334, 336, 342, 343, 341, 336, 340, + 337, 344, 341, 339, 338, 339, 345, 346, 340, 348, + 339, 355, 345, 336, 343, 347, 0, 349, 342, 339, + 350, 351, 342, 343, 349, 353, 0, 352, 346, 354, + 339, 348, 339, 345, 346, 351, 348, 356, 347, 353, + 358, 359, 347, 355, 349, 357, 350, 350, 351, 352, + 360, 357, 353, 362, 352, 354, 354, 363, 361, 359, + 356, 0, 358, 365, 356, 360, 364, 358, 359, 365, + 366, 0, 357, 361, 368, 369, 362, 360, 378, 370, + + 362, 369, 372, 363, 363, 361, 371, 376, 364, 372, + 365, 383, 373, 364, 376, 377, 366, 366, 370, 379, + 368, 368, 369, 375, 371, 375, 370, 373, 377, 372, + 378, 380, 375, 371, 376, 381, 382, 379, 384, 373, + 385, 387, 377, 383, 388, 384, 379, 386, 381, 391, + 375, 389, 375, 380, 387, 382, 389, 0, 380, 393, + 0, 392, 381, 382, 385, 384, 388, 385, 387, 390, + 386, 388, 391, 392, 394, 390, 391, 397, 389, 386, + 399, 393, 395, 0, 397, 394, 393, 398, 392, 400, + 395, 399, 401, 402, 0, 398, 390, 386, 0, 400, + + 402, 394, 0, 403, 397, 405, 404, 399, 404, 395, + 396, 406, 407, 0, 398, 396, 401, 396, 0, 401, + 402, 400, 408, 406, 418, 396, 400, 407, 396, 403, + 403, 405, 405, 404, 408, 396, 396, 396, 406, 407, + 409, 410, 396, 411, 396, 412, 410, 414, 409, 408, + 413, 419, 396, 417, 415, 396, 418, 0, 413, 414, + 420, 421, 396, 412, 423, 411, 419, 409, 410, 420, + 411, 422, 412, 424, 414, 415, 417, 413, 419, 425, + 417, 415, 426, 428, 421, 422, 427, 420, 421, 423, + 429, 423, 424, 0, 430, 431, 433, 432, 422, 434, + + 424, 427, 434, 436, 438, 429, 425, 431, 436, 439, + 434, 437, 440, 427, 426, 428, 435, 429, 430, 432, + 433, 430, 431, 433, 432, 437, 434, 435, 441, 434, + 442, 438, 443, 444, 445, 436, 439, 449, 437, 444, + 446, 0, 0, 435, 440, 448, 447, 450, 446, 451, + 454, 0, 453, 452, 458, 441, 445, 442, 451, 453, + 444, 445, 455, 458, 443, 447, 459, 446, 448, 449, + 450, 0, 448, 447, 450, 452, 451, 456, 457, 453, + 452, 458, 454, 457, 455, 460, 461, 457, 463, 455, + 456, 464, 459, 459, 460, 462, 465, 467, 466, 0, + + 0, 463, 457, 464, 456, 457, 0, 468, 461, 469, + 457, 470, 460, 461, 457, 463, 466, 462, 464, 477, + 473, 467, 462, 0, 467, 466, 471, 472, 465, 468, + 468, 469, 474, 470, 468, 475, 469, 471, 470, 478, + 476, 472, 473, 481, 479, 480, 475, 473, 482, 484, + 474, 477, 486, 471, 472, 476, 468, 482, 485, 474, + 478, 483, 475, 487, 488, 481, 478, 476, 479, 480, + 481, 479, 480, 489, 483, 482, 492, 494, 489, 490, + 485, 484, 491, 495, 486, 485, 488, 487, 483, 493, + 487, 488, 496, 490, 500, 494, 491, 493, 495, 497, + + 498, 501, 0, 501, 494, 489, 490, 495, 492, 491, + 495, 502, 499, 0, 497, 503, 493, 499, 504, 0, + 500, 500, 498, 503, 496, 495, 497, 498, 501, 507, + 505, 506, 509, 510, 508, 511, 502, 507, 502, 505, + 506, 508, 503, 504, 499, 504, 515, 511, 0, 0, + 518, 510, 520, 514, 512, 509, 507, 505, 506, 509, + 510, 508, 511, 512, 513, 514, 516, 517, 520, 519, + 0, 522, 513, 521, 516, 517, 518, 518, 515, 520, + 514, 512, 522, 525, 526, 524, 528, 527, 0, 523, + 0, 513, 519, 516, 517, 521, 519, 523, 522, 524, + + 521, 529, 531, 525, 533, 535, 526, 527, 528, 530, + 525, 526, 524, 528, 527, 532, 523, 533, 530, 534, + 536, 0, 531, 529, 538, 537, 539, 535, 529, 531, + 538, 533, 535, 532, 0, 540, 530, 534, 541, 542, + 545, 544, 532, 540, 536, 0, 534, 536, 537, 544, + 547, 538, 537, 539, 548, 549, 546, 542, 550, 551, + 0, 540, 540, 546, 549, 541, 542, 552, 544, 548, + 540, 566, 545, 547, 564, 563, 552, 547, 551, 560, + 557, 548, 549, 546, 554, 553, 551, 553, 567, 560, + 550, 554, 557, 563, 552, 564, 565, 566, 566, 568, + + 0, 564, 563, 0, 0, 0, 560, 557, 0, 572, + 570, 554, 553, 555, 567, 567, 571, 555, 572, 565, + 555, 574, 571, 565, 573, 575, 573, 555, 580, 576, + 555, 568, 570, 593, 0, 555, 572, 570, 0, 577, + 555, 578, 593, 571, 555, 574, 579, 555, 574, 576, + 580, 573, 575, 578, 555, 580, 576, 555, 569, 569, + 593, 569, 0, 581, 569, 577, 577, 582, 578, 569, + 583, 585, 579, 579, 0, 569, 569, 584, 586, 585, + 0, 0, 590, 598, 569, 569, 569, 581, 569, 582, + 581, 569, 584, 587, 582, 583, 569, 583, 585, 588, + + 587, 586, 569, 569, 584, 586, 589, 588, 590, 590, + 591, 592, 594, 595, 596, 598, 0, 599, 600, 0, + 587, 597, 591, 601, 592, 589, 588, 594, 602, 0, + 608, 605, 603, 589, 611, 595, 606, 591, 592, 594, + 595, 596, 600, 597, 601, 600, 607, 602, 597, 599, + 601, 603, 604, 605, 607, 602, 606, 608, 605, 603, + 609, 604, 610, 606, 612, 614, 611, 615, 617, 616, + 620, 618, 612, 607, 619, 0, 0, 0, 609, 604, + 621, 610, 620, 614, 618, 615, 622, 609, 621, 610, + 617, 612, 614, 616, 615, 617, 616, 620, 618, 623, + + 619, 619, 623, 624, 622, 627, 626, 621, 628, 630, + 631, 624, 629, 622, 628, 630, 632, 631, 633, 635, + 636, 632, 634, 638, 0, 633, 623, 624, 642, 636, + 624, 626, 627, 626, 629, 628, 630, 631, 624, 629, + 634, 638, 635, 632, 637, 633, 635, 636, 639, 634, + 638, 640, 637, 641, 643, 642, 644, 645, 646, 647, + 648, 643, 0, 639, 640, 0, 650, 651, 648, 644, + 652, 637, 653, 651, 641, 639, 649, 0, 640, 659, + 641, 643, 647, 644, 649, 654, 647, 648, 650, 645, + 646, 649, 655, 650, 651, 657, 652, 652, 658, 656, + + 0, 655, 661, 649, 653, 658, 659, 660, 662, 654, + 663, 649, 654, 656, 664, 666, 660, 667, 666, 655, + 662, 669, 664, 672, 673, 658, 656, 657, 669, 661, + 667, 674, 670, 663, 660, 662, 0, 663, 670, 0, + 676, 664, 666, 674, 667, 677, 0, 673, 669, 672, + 672, 673, 675, 678, 675, 0, 679, 677, 674, 670, + 671, 681, 671, 676, 683, 680, 671, 676, 671, 679, + 680, 682, 677, 671, 681, 678, 683, 0, 671, 675, + 678, 685, 684, 679, 671, 689, 686, 671, 681, 671, + 687, 683, 684, 671, 682, 671, 687, 680, 682, 686, + + 671, 688, 690, 685, 684, 671, 689, 0, 685, 684, + 691, 0, 689, 686, 688, 694, 0, 687, 0, 684, + 696, 697, 695, 0, 698, 707, 0, 700, 688, 0, + 694, 699, 702, 696, 690, 704, 697, 691, 693, 701, + 702, 711, 694, 693, 695, 693, 700, 696, 697, 695, + 698, 698, 701, 699, 700, 705, 693, 707, 699, 702, + 703, 708, 704, 693, 693, 693, 701, 709, 703, 716, + 693, 712, 693, 711, 714, 709, 713, 710, 705, 715, + 716, 717, 705, 693, 713, 708, 0, 703, 708, 718, + 693, 710, 714, 712, 709, 720, 716, 715, 712, 722, + + 719, 714, 721, 713, 710, 724, 715, 718, 719, 721, + 725, 723, 722, 717, 726, 730, 718, 720, 723, 737, + 728, 0, 720, 724, 730, 0, 722, 719, 725, 721, + 732, 729, 724, 728, 733, 0, 731, 725, 723, 729, + 734, 735, 730, 736, 740, 0, 726, 728, 731, 741, + 738, 737, 732, 744, 741, 740, 733, 732, 729, 735, + 743, 733, 734, 731, 738, 747, 744, 734, 735, 736, + 736, 740, 742, 746, 751, 742, 745, 738, 0, 748, + 744, 741, 752, 745, 743, 746, 748, 743, 749, 750, + 758, 754, 755, 756, 753, 750, 751, 747, 742, 742, + + 746, 751, 742, 745, 752, 753, 748, 760, 756, 752, + 761, 758, 749, 754, 755, 749, 750, 758, 754, 755, + 756, 753, 759, 762, 764, 767, 763, 765, 760, 768, + 766, 769, 767, 759, 760, 763, 765, 761, 766, 770, + 771, 762, 775, 768, 774, 776, 773, 777, 764, 759, + 762, 764, 767, 763, 765, 773, 768, 766, 775, 778, + 776, 770, 771, 769, 0, 779, 770, 771, 774, 775, + 781, 774, 776, 773, 780, 782, 783, 779, 784, 777, + 787, 786, 789, 782, 789, 796, 788, 791, 794, 783, + 786, 778, 779, 784, 788, 791, 780, 781, 787, 793, + + 794, 780, 782, 783, 795, 784, 797, 787, 786, 789, + 798, 795, 793, 788, 791, 794, 799, 796, 800, 805, + 801, 802, 803, 804, 0, 809, 793, 805, 0, 0, + 807, 795, 798, 801, 802, 804, 806, 798, 797, 0, + 800, 799, 807, 799, 803, 800, 805, 801, 802, 803, + 804, 808, 809, 810, 812, 811, 806, 807, 813, 808, + 816, 817, 814, 806, 811, 813, 810, 820, 821, 0, + 818, 828, 0, 814, 823, 812, 814, 821, 808, 819, + 810, 812, 811, 817, 814, 813, 816, 816, 817, 814, + 818, 820, 819, 822, 820, 821, 823, 818, 828, 824, + + 814, 823, 825, 814, 826, 829, 819, 824, 832, 830, + 831, 822, 826, 833, 834, 835, 832, 837, 0, 845, + 822, 859, 831, 837, 825, 833, 824, 830, 829, 825, + 835, 826, 829, 839, 834, 832, 830, 831, 836, 838, + 833, 834, 835, 840, 837, 841, 836, 849, 838, 842, + 843, 845, 841, 859, 839, 840, 842, 848, 846, 847, + 839, 855, 0, 0, 848, 836, 838, 850, 843, 849, + 840, 846, 841, 852, 849, 851, 842, 843, 847, 853, + 851, 852, 850, 854, 848, 846, 847, 855, 855, 857, + 858, 861, 853, 870, 850, 860, 0, 854, 0, 0, + + 852, 865, 870, 857, 863, 862, 853, 851, 858, 0, + 854, 856, 864, 861, 856, 856, 857, 858, 861, 856, + 870, 860, 860, 862, 896, 856, 863, 865, 865, 856, + 866, 863, 862, 856, 864, 867, 868, 866, 856, 864, + 871, 856, 856, 872, 873, 0, 856, 869, 0, 878, + 874, 896, 856, 867, 876, 0, 856, 866, 868, 880, + 869, 882, 867, 868, 0, 878, 873, 881, 0, 919, + 882, 873, 871, 874, 869, 872, 878, 874, 875, 881, + 876, 876, 880, 875, 883, 875, 880, 875, 882, 875, + 884, 885, 887, 889, 881, 884, 875, 886, 888, 890, + + 887, 919, 883, 0, 885, 875, 889, 894, 895, 894, + 875, 883, 875, 892, 875, 886, 875, 888, 885, 887, + 889, 890, 884, 891, 886, 888, 890, 897, 893, 898, + 895, 892, 903, 900, 894, 895, 891, 893, 902, 897, + 892, 901, 904, 905, 906, 907, 902, 908, 911, 904, + 891, 907, 913, 0, 897, 893, 898, 900, 920, 903, + 900, 910, 912, 901, 921, 902, 906, 911, 901, 904, + 905, 906, 907, 909, 908, 911, 914, 915, 913, 913, + 909, 916, 917, 910, 912, 914, 921, 922, 910, 912, + 920, 921, 0, 923, 924, 926, 917, 925, 915, 927, + + 909, 916, 924, 914, 915, 928, 927, 930, 916, 917, + 929, 923, 928, 925, 929, 934, 933, 931, 932, 922, + 923, 924, 926, 931, 925, 932, 927, 935, 934, 936, + 931, 933, 928, 937, 941, 940, 935, 929, 939, 930, + 937, 943, 934, 933, 931, 932, 938, 939, 938, 942, + 931, 945, 947, 942, 935, 936, 936, 940, 948, 945, + 937, 941, 940, 943, 946, 939, 952, 949, 943, 946, + 947, 950, 954, 938, 950, 953, 942, 948, 945, 947, + 949, 951, 955, 950, 951, 948, 0, 957, 953, 0, + 956, 952, 0, 952, 949, 957, 946, 960, 950, 958, + + 958, 950, 953, 951, 954, 955, 956, 959, 951, 955, + 964, 951, 961, 962, 957, 966, 959, 956, 965, 960, + 962, 961, 968, 966, 960, 972, 958, 965, 967, 969, + 971, 973, 970, 964, 959, 968, 976, 964, 971, 961, + 962, 969, 966, 967, 970, 965, 974, 972, 977, 968, + 979, 973, 972, 975, 976, 967, 969, 971, 973, 970, + 978, 980, 975, 976, 981, 982, 983, 980, 974, 984, + 0, 979, 978, 974, 977, 977, 985, 979, 987, 0, + 975, 988, 989, 990, 0, 994, 981, 978, 980, 992, + 0, 981, 990, 991, 993, 984, 984, 982, 983, 996, + + 989, 992, 985, 985, 988, 987, 991, 997, 988, 989, + 990, 994, 994, 0, 993, 995, 992, 998, 996, 999, + 991, 993, 995, 1000, 1006, 1002, 996, 999, 1000, 997, + 998, 1001, 1002, 1003, 997, 1004, 1001, 1005, 1007, 1007, + 1008, 1003, 995, 1004, 998, 1005, 999, 1009, 1008, 1010, + 1011, 1012, 1002, 1013, 0, 1000, 1006, 1015, 1011, 1012, + 1003, 1013, 1004, 1001, 1005, 1007, 1016, 1008, 1009, 1018, + 1015, 1014, 1016, 1017, 1009, 1019, 1020, 1011, 1012, 1014, + 1013, 1010, 1021, 1022, 1015, 1017, 1025, 1024, 1023, 1031, + 1029, 1020, 1026, 1016, 1038, 1018, 1018, 1029, 1014, 1019, + + 1017, 1024, 1019, 1020, 1025, 1022, 1026, 1030, 1027, 1021, + 1022, 1023, 1027, 1025, 1024, 1023, 1031, 1029, 1030, 1026, + 1032, 1033, 1034, 1035, 1037, 1027, 1038, 1036, 1039, 1041, + 1035, 1037, 0, 1027, 1030, 1027, 1036, 1043, 1041, 1027, + 1044, 1045, 1032, 1047, 1033, 1034, 0, 1032, 1033, 1034, + 1035, 1037, 1027, 1049, 1036, 1039, 1041, 1050, 1052, 1043, + 1053, 1055, 1054, 1055, 1043, 1056, 1044, 1044, 1050, 1057, + 1047, 1058, 1059, 1045, 1054, 1062, 1063, 1060, 1056, 1064, + 1049, 1063, 1052, 1058, 1050, 1052, 1053, 1053, 1055, 1054, + 1061, 1057, 1056, 1065, 1069, 1064, 1057, 1061, 1058, 1059, + + 1060, 1062, 1062, 1063, 1060, 1066, 1064, 1067, 1073, 1070, + 1071, 0, 1072, 1066, 0, 1074, 1065, 1061, 1070, 1075, + 1065, 1069, 1074, 1071, 1078, 1076, 1075, 1077, 1079, 1067, + 1073, 1078, 1066, 1081, 1067, 1073, 1070, 1071, 1072, 1072, + 1080, 1082, 1074, 1076, 1083, 1085, 1075, 1086, 1082, 1077, + 1088, 1078, 1076, 1079, 1077, 1079, 1087, 1090, 1085, 1091, + 1090, 1092, 1080, 1096, 1087, 1081, 1093, 1080, 1082, 1094, + 1095, 1088, 1085, 1100, 1086, 1093, 1083, 1088, 0, 1101, + 1097, 1094, 1102, 1087, 1090, 1091, 1091, 1092, 1092, 1096, + 1096, 1098, 1105, 1093, 1095, 1097, 1094, 1095, 1098, 1099, + + 1102, 1101, 1099, 1103, 1106, 1100, 1101, 1097, 1104, 1102, + 1104, 1107, 1108, 1111, 1099, 1110, 1105, 1113, 1098, 1105, + 1109, 1108, 1110, 1099, 1112, 1103, 1099, 1114, 1109, 1099, + 1103, 1114, 1116, 1115, 1117, 1104, 1106, 1107, 1107, 1108, + 1121, 1099, 1110, 1118, 1125, 1111, 1112, 1109, 0, 1113, + 1119, 1112, 1118, 1121, 1114, 1115, 1117, 1119, 1120, 1116, + 1115, 1117, 1122, 1123, 1126, 1120, 1124, 1121, 1128, 1131, + 1118, 1126, 1127, 0, 1134, 1122, 1125, 1119, 1123, 1127, + 1124, 1128, 1129, 1133, 1136, 1120, 1135, 1132, 1129, 1122, + 1123, 1126, 1140, 1124, 1132, 1128, 1131, 1136, 1135, 1127, + + 1134, 1134, 1139, 1137, 1140, 1133, 1137, 1138, 1141, 1129, + 1133, 1136, 1143, 1135, 1132, 1142, 1138, 1148, 1142, 1140, + 1139, 1149, 1147, 1143, 1147, 1152, 1145, 1150, 1141, 1139, + 1137, 1145, 1151, 1142, 1138, 1141, 1159, 1154, 1145, 1143, + 1151, 0, 1142, 1157, 1148, 1142, 1153, 1152, 1149, 1147, + 1158, 1150, 1152, 1145, 1150, 1154, 0, 1153, 1145, 1151, + 1155, 1157, 1156, 1159, 1154, 1156, 1162, 1160, 1155, 1161, + 1157, 1163, 0, 1153, 1160, 1162, 1165, 1164, 1172, 1167, + 1156, 1167, 1158, 1161, 1163, 1169, 1168, 1155, 1164, 1156, + 1170, 1165, 1156, 1162, 1160, 1168, 1161, 1171, 1163, 1175, + + 1172, 1170, 1173, 1165, 1164, 1172, 1167, 1174, 1175, 1176, + 1174, 1169, 1169, 1168, 1176, 1171, 1173, 1170, 1178, 1180, + 1181, 1179, 1182, 1183, 1171, 1174, 1175, 0, 1173, 1173, + 1179, 1186, 1184, 1187, 1174, 0, 1189, 1174, 1186, 1192, + 1188, 1176, 1189, 1173, 1182, 1193, 1180, 1192, 1179, 1182, + 1178, 1201, 1181, 1184, 1188, 1183, 1194, 0, 1186, 1184, + 1189, 1197, 1195, 1189, 1193, 1187, 1192, 1188, 1196, 1189, + 1194, 1195, 1193, 1198, 1202, 1203, 1196, 1199, 1201, 1207, + 0, 1202, 0, 1194, 1198, 1204, 1199, 1205, 1206, 1195, + 1208, 1210, 1211, 1197, 1208, 1196, 1213, 1207, 1203, 0, + + 1198, 1202, 1203, 1210, 1199, 1214, 1207, 1204, 1212, 1205, + 1206, 1215, 1204, 1218, 1205, 1206, 1213, 1208, 1210, 1211, + 1214, 1212, 1216, 1213, 1217, 1219, 1215, 1220, 1222, 1221, + 1216, 1217, 1214, 1223, 1224, 1212, 1220, 1226, 1215, 1228, + 1219, 1231, 1230, 1229, 1227, 1218, 0, 0, 1231, 1216, + 1221, 1217, 1219, 1235, 1220, 1222, 1221, 1223, 1229, 1226, + 1223, 1224, 1227, 1236, 1226, 1233, 1228, 1230, 1231, 1230, + 1229, 1227, 1232, 1234, 1233, 1235, 1237, 1232, 1241, 1239, + 1235, 1236, 1234, 1238, 1240, 1241, 1242, 1243, 1244, 1248, + 1236, 1237, 1233, 0, 1250, 1238, 1246, 1240, 1242, 1232, + + 1234, 1239, 1240, 1237, 1246, 1241, 1239, 1252, 1253, 1245, + 1238, 1240, 1247, 1242, 1243, 1245, 1248, 1255, 1249, 1247, + 1244, 1250, 1251, 1246, 1240, 1249, 1254, 1257, 1251, 1258, + 1259, 1253, 0, 1261, 1252, 1253, 1245, 1262, 1258, 1247, + 1260, 1255, 1260, 1263, 1255, 1249, 1264, 0, 1266, 1251, + 1268, 0, 0, 1272, 1267, 1266, 1258, 1261, 1254, 1257, + 1261, 1267, 1259, 1271, 1262, 1273, 1272, 1260, 1271, 1263, + 1263, 1277, 1265, 1265, 1265, 1266, 1269, 1274, 1264, 1265, + 1272, 1267, 1268, 1269, 1275, 1276, 1280, 1265, 1279, 1277, + 1273, 1286, 1273, 1274, 1279, 1271, 1275, 1282, 1277, 1265, + + 1265, 1265, 1278, 1269, 1274, 1283, 1265, 1281, 1281, 1278, + 1285, 1275, 1283, 1280, 1284, 1279, 1290, 1276, 1286, 1284, + 1289, 1291, 1290, 1282, 1282, 1293, 1294, 1292, 0, 1278, + 1295, 1295, 1283, 1296, 1281, 1298, 1285, 1285, 1289, 1292, + 1301, 1284, 1300, 1290, 1294, 1293, 1298, 1289, 1291, 1297, + 1297, 1302, 1293, 1294, 1292, 1303, 1304, 1295, 1302, 1296, + 1296, 1305, 1298, 1306, 1300, 1307, 0, 1308, 1311, 1300, + 1309, 1310, 1301, 0, 0, 1303, 1297, 1309, 1302, 1310, + 1312, 0, 1303, 1311, 1315, 1308, 0, 1307, 1304, 1317, + 1306, 1313, 1307, 1305, 1308, 1311, 1316, 1309, 1310, 1323, + + 1313, 1314, 1314, 1320, 1312, 1317, 1319, 1312, 1316, 1322, + 1315, 1315, 1317, 1324, 1319, 1320, 1317, 1322, 1313, 1325, + 1326, 1328, 1323, 1316, 0, 1329, 1323, 1332, 1314, 1330, + 1320, 1329, 1317, 1319, 1324, 1333, 1322, 1325, 1327, 0, + 1324, 1335, 1330, 1327, 1331, 1334, 1325, 1326, 1328, 1337, + 1334, 1331, 1329, 1338, 1327, 1341, 1330, 1336, 1336, 1332, + 1340, 1343, 1333, 1343, 1337, 1327, 1342, 1344, 1346, 1345, + 1327, 1331, 0, 1335, 1345, 1340, 1337, 1334, 1341, 1347, + 1349, 1342, 1341, 1350, 1336, 1338, 1351, 1340, 1343, 1352, + 1353, 1354, 0, 1342, 1347, 0, 1345, 1353, 1355, 1344, + + 1346, 1357, 1356, 1358, 1349, 1360, 1347, 1349, 0, 1350, + 1350, 1362, 1367, 1351, 0, 1369, 1352, 1353, 1363, 1355, + 1371, 1358, 1357, 1354, 1356, 1355, 1365, 1360, 1357, 1356, + 1358, 1366, 1360, 1363, 1368, 1362, 1372, 1369, 1362, 1367, + 1370, 1365, 1369, 1372, 0, 1363, 1366, 1371, 1373, 1375, + 1374, 1376, 1368, 1365, 1378, 0, 1379, 1375, 1366, 1374, + 1377, 1368, 1370, 1372, 1382, 1386, 1373, 1370, 1381, 1379, + 1383, 1384, 1390, 1382, 1376, 1373, 1375, 1374, 1376, 1381, + 1391, 1392, 1377, 1379, 1390, 1388, 1378, 1377, 1383, 1384, + 1393, 1382, 1386, 1391, 1381, 1381, 1388, 1383, 1384, 1390, + + 1393, 1394, 0, 1396, 1395, 1397, 1381, 1391, 1400, 0, + 1401, 0, 1388, 1392, 1399, 1400, 1403, 1393, 1404, 1411, + 1402, 0, 1403, 0, 1397, 1405, 1411, 1394, 1394, 1395, + 1396, 1395, 1397, 1404, 1399, 1400, 1401, 1401, 1402, 1406, + 1405, 1399, 1409, 1403, 1408, 1404, 1411, 1402, 1407, 1407, + 1412, 1413, 1405, 1414, 1406, 1409, 1408, 1415, 0, 1416, + 1421, 1418, 1414, 1409, 1415, 1412, 1406, 1417, 1418, 1409, + 1420, 1408, 1422, 1423, 1430, 1407, 1424, 1412, 1413, 1427, + 1414, 1422, 1409, 1416, 1415, 1421, 1416, 1421, 1418, 1417, + 1426, 1432, 1420, 1434, 1417, 1423, 1424, 1420, 1429, 1422, + + 1423, 1430, 1433, 1424, 1427, 1436, 1427, 0, 1426, 1431, + 1431, 1429, 1435, 1432, 1436, 1434, 1437, 1426, 1432, 1438, + 1434, 1440, 1439, 1437, 1449, 1429, 1441, 1433, 1444, 1433, + 1443, 1445, 1436, 1446, 1435, 1440, 1431, 0, 1443, 1435, + 1447, 1444, 1450, 1437, 1439, 1441, 1451, 1448, 1440, 1439, + 1452, 1438, 1447, 1441, 1448, 1444, 1449, 1443, 1445, 1446, + 1446, 1453, 0, 1454, 1450, 1452, 0, 1447, 0, 1450, + 1456, 1451, 1458, 1451, 1448, 1455, 1457, 1452, 1455, 1460, + 1459, 0, 1457, 0, 1466, 0, 1462, 1453, 1453, 1454, + 1454, 1466, 1463, 1455, 1460, 1456, 1465, 1456, 1459, 1458, + + 1467, 1468, 1455, 1457, 1470, 1455, 1460, 1459, 1462, 1467, + 1465, 1466, 1468, 1462, 1463, 1472, 1475, 1470, 1473, 1463, + 1474, 1476, 1474, 1465, 1478, 1470, 1480, 1467, 1468, 1479, + 1473, 1470, 1477, 1481, 1475, 1483, 1472, 1479, 1482, 1484, + 1483, 1488, 1472, 1475, 1470, 1473, 1490, 1474, 1476, 1480, + 1477, 1478, 1482, 1480, 1485, 1481, 1479, 1489, 1484, 1477, + 1481, 1485, 1491, 1493, 1490, 1482, 1484, 1483, 1488, 1492, + 1494, 1489, 1495, 1490, 1497, 0, 1500, 0, 1493, 1494, + 1496, 1485, 1489, 1489, 1489, 1501, 1498, 1502, 0, 1491, + 1493, 1504, 1501, 1504, 1505, 1492, 1492, 1494, 1489, 1500, + + 1508, 1497, 1496, 1500, 1495, 1507, 1511, 1496, 1498, 1489, + 1502, 1506, 1501, 1498, 1502, 1506, 1505, 1507, 1504, 1509, + 1510, 1505, 1508, 1513, 0, 1512, 1516, 1508, 1509, 1514, + 1527, 1510, 1507, 1511, 1516, 1513, 1515, 1515, 1506, 1519, + 0, 1518, 1520, 1519, 1523, 1520, 1509, 1510, 1512, 1518, + 1513, 1514, 1512, 1516, 1521, 1522, 1514, 1527, 1524, 1523, + 1526, 1522, 1521, 1515, 1524, 1528, 1519, 1530, 1518, 1520, + 1529, 1523, 1526, 1532, 1531, 1533, 1534, 1536, 1535, 1539, + 1530, 1521, 1522, 1537, 1529, 1524, 1540, 1526, 1531, 1528, + 1535, 1536, 1528, 1538, 1530, 1542, 1538, 1529, 1546, 1532, + + 1532, 1531, 1533, 1534, 1536, 1535, 1539, 1543, 1540, 1537, + 1537, 1538, 1544, 1540, 1543, 1545, 1547, 1542, 1548, 1544, + 1538, 1549, 1542, 1538, 1550, 1546, 1548, 1551, 1552, 1554, + 1545, 1553, 1557, 1550, 1543, 1556, 1559, 1554, 1558, 1544, + 1560, 0, 1545, 1547, 1553, 1548, 1558, 1561, 1549, 1560, + 1564, 1550, 1562, 1565, 1551, 1552, 1554, 1556, 1553, 1557, + 1563, 1565, 1556, 1559, 1567, 1558, 1566, 1560, 1561, 1568, + 1572, 1573, 1567, 1574, 1561, 1563, 1562, 1564, 1566, 1562, + 1565, 1570, 1572, 1576, 1575, 1571, 1563, 1563, 1570, 1571, + 1580, 1567, 1575, 1566, 1573, 1578, 1568, 1572, 1573, 1577, + + 1574, 1581, 1563, 1579, 1579, 0, 1577, 1582, 1570, 1584, + 1576, 1575, 1571, 1585, 1596, 1578, 1580, 1580, 1586, 1581, + 1586, 1588, 1578, 1587, 1584, 1589, 1577, 1588, 1581, 1590, + 1579, 1591, 1582, 0, 1582, 1585, 1584, 1587, 1597, 1592, + 1585, 1593, 1594, 1591, 0, 1586, 1596, 1589, 1588, 1595, + 1587, 1590, 1589, 1601, 1603, 1602, 1590, 1592, 1591, 1593, + 1594, 1597, 1595, 1599, 1619, 1597, 1592, 1604, 1593, 1594, + 1599, 1601, 1605, 1607, 1605, 1604, 1595, 1608, 1611, 1605, + 1601, 1602, 1602, 1610, 1612, 1607, 1603, 1616, 1613, 1611, + 1599, 1619, 1615, 1604, 1604, 1608, 1612, 1618, 1610, 1605, + + 1607, 1605, 1604, 1613, 1608, 1611, 1617, 1621, 1622, 1616, + 1610, 1612, 1618, 1617, 1616, 1613, 1615, 1623, 1624, 1615, + 1625, 1628, 0, 0, 1618, 1626, 0, 1627, 1629, 1630, + 1622, 1631, 1635, 1617, 1621, 1622, 1628, 1630, 1626, 1633, + 1634, 1629, 1643, 1636, 1637, 0, 0, 1625, 1628, 1623, + 1624, 1637, 1626, 1627, 1627, 1629, 1630, 1631, 1631, 1635, + 1639, 1638, 1633, 1640, 1634, 1636, 1633, 1634, 1638, 1641, + 1636, 1637, 1642, 1639, 1643, 1645, 1641, 1644, 1647, 1648, + 1649, 1650, 1651, 1661, 1645, 0, 1640, 1639, 1638, 1647, + 1640, 1655, 1656, 0, 1642, 1658, 1641, 1654, 1644, 1642, + + 1650, 1648, 1645, 1660, 1644, 1647, 1648, 1651, 1650, 1651, + 1654, 1663, 1649, 1657, 1657, 1661, 1656, 1655, 1655, 1656, + 1662, 1658, 1658, 1664, 1654, 1667, 1660, 1669, 1674, 1672, + 1660, 1673, 1676, 1678, 1679, 1662, 1669, 1680, 1663, 1681, + 1657, 1664, 1686, 1689, 1681, 1682, 1693, 1662, 1680, 1684, + 1664, 1672, 1667, 1673, 1669, 1674, 1672, 1684, 1673, 1676, + 1679, 1679, 1685, 1688, 1680, 1678, 1681, 1682, 1691, 1686, + 1690, 1696, 1682, 1693, 1695, 1689, 1684, 1685, 1698, 1690, + 1691, 1688, 1697, 1699, 1701, 1702, 1700, 1703, 1704, 1685, + 1688, 1707, 1705, 1706, 0, 1691, 1699, 1690, 1696, 1700, + + 1695, 1695, 1706, 1698, 1697, 1698, 1701, 1705, 1708, 1697, + 1699, 1701, 1702, 1700, 1703, 1704, 1709, 1707, 1707, 1705, + 1706, 1710, 1711, 1708, 1712, 1713, 1714, 1715, 1716, 1716, + 1718, 1709, 1713, 1717, 1720, 1708, 1719, 1711, 1721, 1719, + 1717, 1710, 0, 1709, 1718, 1715, 1712, 1720, 1710, 1711, + 1722, 1712, 1713, 1714, 1715, 1716, 1726, 1718, 1723, 1727, + 1717, 1720, 1728, 1719, 1721, 1721, 1724, 1723, 1722, 1725, + 1729, 1724, 1727, 1725, 1730, 1731, 0, 1722, 1732, 1735, + 1726, 1740, 1736, 1726, 1728, 1723, 1727, 1737, 1735, 1728, + 1740, 1746, 1729, 1724, 1741, 1737, 1725, 1729, 1736, 1741, + + 1739, 1730, 1731, 1742, 1732, 1732, 1735, 1739, 1740, 1736, + 1742, 1743, 1744, 1745, 1737, 1748, 1749, 1746, 1746, 1744, + 1755, 1741, 1745, 1750, 1751, 1752, 1753, 1739, 1757, 1743, + 1742, 1755, 1750, 1756, 1749, 1753, 1754, 1752, 1743, 1744, + 1745, 1756, 1748, 1749, 1751, 1754, 1758, 1755, 1759, 1760, + 1750, 1751, 1752, 1753, 1761, 1757, 1762, 1763, 1760, 1768, + 1756, 1764, 1765, 1754, 1762, 1766, 1761, 1770, 1764, 1765, + 1767, 1769, 1774, 1758, 1772, 0, 1760, 1781, 1775, 1763, + 1759, 1761, 1772, 1762, 1763, 1775, 1768, 1766, 1764, 1765, + 1774, 1780, 1766, 1784, 1770, 1767, 1769, 1767, 1769, 1774, + + 1776, 1772, 1779, 1783, 1781, 1775, 0, 1782, 1776, 1779, + 1785, 1787, 1783, 1788, 1789, 1780, 1792, 1790, 1780, 1782, + 1784, 1794, 1796, 1787, 1795, 1797, 1798, 1776, 1802, 1779, + 1783, 1790, 1795, 1785, 1782, 0, 1788, 1785, 1787, 1805, + 1788, 1789, 1804, 1792, 1790, 1803, 1806, 1797, 1794, 1796, + 1803, 1795, 1797, 1798, 1802, 1802, 1804, 1805, 1807, 1808, + 1810, 1813, 1809, 1812, 1815, 1816, 1805, 1817, 1806, 1804, + 1809, 1807, 1803, 1806, 1814, 1812, 1815, 1818, 1819, 1810, + 1820, 1808, 1822, 1813, 1821, 1807, 1808, 1810, 1813, 1809, + 1812, 1815, 1816, 1824, 1817, 1823, 1814, 1818, 1825, 1826, + + 1819, 1814, 1829, 1833, 1818, 1819, 1821, 1823, 1822, 1822, + 1831, 1821, 1820, 1830, 1832, 1824, 1829, 1834, 1830, 1837, + 1824, 1835, 1823, 1840, 1836, 1825, 1826, 1839, 1838, 1829, + 0, 1837, 1831, 1842, 1843, 1833, 1832, 1831, 1840, 0, + 1834, 1832, 1836, 1835, 1834, 1830, 1837, 1838, 1835, 1839, + 1840, 1836, 1845, 1844, 1839, 1838, 1843, 1842, 1846, 1847, + 1842, 1843, 1844, 1848, 1849, 1852, 1845, 1853, 1855, 1857, + 1854, 1859, 1858, 1852, 1853, 1856, 1846, 1847, 1854, 1845, + 1844, 1865, 1849, 1856, 1858, 1846, 1847, 1857, 1862, 1848, + 1848, 1849, 1852, 1860, 1853, 1855, 1857, 1854, 1859, 1858, + + 1862, 1860, 1856, 1864, 1865, 1866, 1867, 1868, 1865, 1869, + 1864, 1871, 1874, 1872, 1881, 1862, 1876, 0, 1878, 1875, + 1860, 1887, 0, 0, 1886, 0, 1868, 1872, 1876, 1871, + 1864, 1869, 1875, 1867, 1868, 1874, 1869, 1866, 1871, 1874, + 1872, 1881, 1883, 1876, 1878, 1878, 1875, 1885, 1887, 1883, + 1886, 1886, 1888, 1889, 1885, 1890, 1891, 1892, 1893, 1894, + 1895, 1896, 1901, 1900, 1897, 1903, 1901, 1893, 1900, 1883, + 0, 1906, 1894, 1902, 1885, 1904, 1888, 1904, 1905, 1888, + 1889, 1890, 1890, 1891, 1892, 1893, 1894, 1897, 1896, 1901, + 1909, 1897, 1895, 0, 1902, 1900, 1910, 1903, 1906, 1915, + + 1902, 1905, 1904, 1913, 1912, 1905, 1912, 1916, 1914, 1914, + 1919, 1918, 1909, 1921, 0, 1917, 1916, 1909, 1914, 1923, + 1910, 1915, 1917, 1910, 1918, 1920, 1915, 1913, 1924, 1927, + 1913, 1912, 1921, 1920, 1916, 1914, 1914, 1919, 1918, 1922, + 1921, 1925, 1917, 1928, 1930, 1923, 1923, 1922, 1926, 1934, + 1928, 1927, 1920, 1931, 1924, 1924, 1927, 1929, 1929, 1926, + 1931, 1935, 1930, 1938, 1936, 1932, 1922, 1925, 1925, 1939, + 1928, 1930, 1932, 1936, 1940, 1926, 1934, 1941, 1944, 1942, + 1931, 1945, 0, 1948, 1929, 1935, 1946, 1944, 1935, 1939, + 1938, 1936, 1932, 1947, 1951, 1948, 1939, 1942, 1949, 1941, + + 1950, 1940, 1953, 1949, 1941, 1944, 1942, 1954, 1945, 1946, + 1948, 1947, 1951, 1946, 1950, 1957, 1955, 1957, 1959, 1962, + 1947, 1951, 1963, 0, 1969, 1954, 1964, 1950, 1966, 1953, + 1949, 1955, 1967, 1959, 1954, 1967, 1970, 1975, 1977, 1973, + 1971, 1962, 1957, 1955, 1964, 1959, 1962, 1971, 1963, 1963, + 1966, 1969, 1972, 1964, 1970, 1966, 1976, 1982, 1967, 1967, + 1972, 1973, 1967, 1970, 1978, 1977, 1973, 1971, 1979, 1975, + 1980, 1981, 1984, 1978, 1979, 1983, 1986, 1983, 1976, 1972, + 1981, 1987, 1988, 1976, 1986, 1992, 1989, 1990, 1991, 1982, + 1997, 1978, 1980, 1987, 1995, 1979, 1992, 1980, 1981, 1984, + + 1989, 1994, 1983, 1986, 1996, 1996, 1991, 2000, 1987, 1988, + 1990, 1993, 1992, 1989, 1990, 1991, 1995, 1997, 1998, 1993, + 1994, 1995, 2001, 2003, 2005, 2006, 1998, 0, 1994, 2003, + 2009, 1996, 2007, 2010, 2000, 2011, 2006, 2014, 1993, 2011, + 2010, 2017, 2018, 2015, 2019, 1998, 2017, 2012, 2020, 2001, + 2003, 2005, 2006, 2021, 2007, 2012, 2015, 2009, 2022, 2007, + 2010, 2021, 2011, 2014, 2014, 2023, 2020, 2024, 2017, 2018, + 2015, 2019, 2023, 2022, 2012, 2020, 2025, 2030, 2026, 2029, + 2021, 2028, 0, 2031, 2038, 2022, 2029, 2032, 2033, 0, + 2035, 2036, 2023, 2037, 2024, 0, 2028, 2033, 2040, 2042, + + 2025, 2037, 2045, 2025, 2026, 2026, 2029, 2049, 2028, 2030, + 2031, 2032, 2035, 2036, 2032, 2033, 2038, 2035, 2036, 2043, + 2037, 2039, 2039, 2046, 2047, 2040, 2042, 2043, 2050, 2045, + 2048, 2039, 2051, 2054, 2049, 2057, 2052, 2047, 2060, 2059, + 2062, 2063, 0, 2057, 2059, 2046, 2043, 2066, 2039, 2039, + 2046, 2047, 2048, 2065, 2063, 2050, 2067, 2048, 2052, 2051, + 2054, 2072, 2057, 2052, 2060, 2060, 2059, 2062, 2063, 2064, + 2071, 2065, 2070, 2073, 2066, 2075, 2064, 2076, 2067, 2077, + 2065, 0, 2075, 2067, 2076, 2070, 2079, 2082, 2072, 2071, + 2078, 2081, 0, 0, 2082, 2073, 2064, 2071, 2085, 2070, + + 2073, 2077, 2075, 2084, 2076, 2078, 2077, 2079, 2083, 2085, + 2081, 2088, 2084, 2079, 2082, 2083, 2087, 2078, 2081, 2086, + 2086, 2091, 2087, 2093, 2094, 2085, 2095, 2099, 2091, 2086, + 2084, 2101, 2103, 2088, 2105, 2083, 2102, 2102, 2088, 0, + 2109, 0, 0, 2087, 2110, 0, 2086, 2086, 2091, 2095, + 2093, 2094, 2114, 2095, 2099, 2103, 2107, 2106, 2101, 2103, + 2111, 2105, 2115, 2116, 2110, 2102, 2106, 2109, 2113, 2107, + 2114, 2110, 2111, 2117, 2118, 2119, 2120, 2113, 2121, 2114, + 2122, 2123, 2122, 2107, 2106, 2124, 2118, 2111, 2115, 2115, + 2116, 2124, 2125, 2123, 2126, 2113, 2127, 2119, 2128, 2131, + + 2117, 2118, 2119, 2120, 2127, 2134, 2135, 2122, 2123, 2136, + 2121, 2138, 2124, 2139, 2125, 2141, 2126, 2143, 2144, 2125, + 2142, 2126, 2145, 2127, 2149, 2128, 2131, 2152, 2148, 2138, + 2144, 0, 2134, 2135, 2151, 2142, 2136, 2148, 2138, 2153, + 2139, 2154, 2141, 2143, 2143, 2144, 2155, 2142, 2149, 2145, + 2163, 2149, 2153, 2156, 2155, 2148, 2157, 2168, 2151, 2152, + 0, 2151, 2156, 2154, 2166, 2167, 2153, 2157, 2154, 2171, + 2168, 2170, 2167, 2155, 2163, 2170, 2172, 2163, 2174, 2173, + 2156, 2175, 2178, 2157, 2168, 2171, 2174, 2166, 2176, 2180, + 2175, 2166, 2167, 2173, 2178, 2177, 2171, 2177, 2170, 2176, + + 2179, 2181, 2172, 2172, 2182, 2174, 2173, 2179, 2175, 2178, + 2183, 2184, 2186, 2187, 2190, 2176, 2180, 2185, 2188, 2181, + 2188, 2189, 2177, 2192, 0, 2200, 0, 2179, 2181, 2191, + 2201, 2182, 2198, 2189, 2186, 2187, 2183, 2183, 2184, 2186, + 2187, 2185, 2191, 2194, 2185, 2188, 2190, 2203, 2189, 2196, + 2192, 2198, 2199, 2202, 2206, 2194, 2191, 2200, 2196, 2198, + 2199, 2203, 2201, 2204, 2207, 2209, 2202, 2206, 2210, 2211, + 2194, 2204, 2208, 2209, 2203, 2213, 2196, 2212, 2214, 2199, + 2202, 2206, 2210, 2211, 2216, 2212, 2217, 2207, 2218, 2223, + 2204, 2207, 2209, 2215, 2208, 2210, 2211, 2213, 0, 2208, + + 2214, 2215, 2213, 2219, 2212, 2214, 2220, 2221, 2222, 2224, + 2230, 2216, 2227, 0, 2218, 2218, 2222, 0, 2217, 2226, + 2215, 2223, 0, 2228, 2232, 2219, 2251, 2226, 2220, 2221, + 2219, 2228, 2227, 2220, 2221, 2222, 2224, 2229, 2232, 2227, + 2231, 2234, 2230, 2235, 2234, 2229, 2226, 2236, 2231, 2237, + 2228, 2232, 2238, 2251, 2239, 2236, 2240, 2237, 2242, 2234, + 2241, 2241, 2244, 0, 2229, 2235, 2238, 2231, 2234, 2243, + 2235, 2234, 2245, 2246, 2236, 0, 2237, 2243, 2240, 2238, + 2239, 2239, 2247, 2240, 2242, 2242, 2248, 2241, 2244, 2244, + 2249, 2250, 2255, 2257, 2248, 2246, 2243, 2254, 2245, 2245, + + 2246, 2252, 2247, 2253, 2260, 2254, 0, 2256, 0, 2247, + 2261, 2266, 2249, 2248, 2255, 2256, 2250, 2249, 2250, 2255, + 2257, 2252, 2264, 2253, 2254, 2258, 2260, 2262, 2252, 2269, + 2253, 2260, 2261, 2258, 2256, 2262, 2263, 2261, 2266, 2267, + 2270, 2271, 2268, 2273, 2263, 2274, 0, 2267, 2264, 2264, + 2268, 2275, 2258, 2277, 2262, 2269, 2269, 2280, 2283, 2284, + 0, 2271, 0, 2263, 0, 2281, 2267, 2270, 2271, 2268, + 2273, 2275, 2274, 2281, 2282, 2277, 0, 0, 2275, 2280, + 2277, 0, 2282, 0, 2280, 2283, 2284, 0, 0, 0, + 0, 0, 2281, 0, 0, 0, 0, 0, 0, 0, + + 0, 2282, 2288, 2288, 2288, 2288, 2288, 2288, 2288, 2289, + 2289, 2289, 2289, 2289, 2289, 2289, 2290, 2290, 2290, 2290, + 2290, 2290, 2290, 2291, 2291, 2291, 2291, 2291, 2291, 2291, + 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2294, 2294, 0, + 2294, 2294, 2294, 2294, 2295, 2295, 0, 0, 0, 2295, + 2295, 2296, 2296, 0, 0, 2296, 0, 2296, 2297, 0, + 0, 0, 0, 0, 2297, 2298, 2298, 0, 0, 0, + 2298, 2298, 2299, 0, 0, 0, 0, 0, 2299, 2300, + 2300, 0, 2300, 2300, 2300, 2300, 2301, 2301, 0, 2301, + 2301, 2301, 2301, 2287, 2287, 2287, 2287, 2287, 2287, 2287, + + 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, + 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, + 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, + 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, + 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, + 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287, 2287 } ; static yy_state_type yy_last_accepting_state; @@ -2807,7 +2866,7 @@ static void config_end_include(void) #define YY_NO_INPUT 1 #endif -#line 2809 "<stdout>" +#line 2868 "<stdout>" #define INITIAL 0 #define quotedstring 1 @@ -3030,7 +3089,7 @@ YY_DECL { #line 207 "util/configlexer.lex" -#line 3032 "<stdout>" +#line 3091 "<stdout>" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -3063,13 +3122,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 >= 2238 ) + if ( yy_current_state >= 2288 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 6399 ); + while ( yy_base[yy_current_state] != 6594 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -4116,68 +4175,95 @@ YY_RULE_SETUP case 203: YY_RULE_SETUP #line 420 "util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_ENABLED) } +{ + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } YY_BREAK case 204: YY_RULE_SETUP -#line 421 "util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } +#line 422 "util/configlexer.lex" +{ + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } YY_BREAK case 205: YY_RULE_SETUP -#line 422 "util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_HOOK) } +#line 424 "util/configlexer.lex" +{ YDVAR(1, VAR_IPSECMOD_ENABLED) } YY_BREAK case 206: YY_RULE_SETUP -#line 423 "util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } +#line 425 "util/configlexer.lex" +{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } YY_BREAK case 207: YY_RULE_SETUP -#line 424 "util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } +#line 426 "util/configlexer.lex" +{ YDVAR(1, VAR_IPSECMOD_HOOK) } YY_BREAK case 208: YY_RULE_SETUP -#line 425 "util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_STRICT) } +#line 427 "util/configlexer.lex" +{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } YY_BREAK case 209: -/* rule 209 can match eol */ YY_RULE_SETUP -#line 426 "util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++; } +#line 428 "util/configlexer.lex" +{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } YY_BREAK -/* Quoted strings. Strip leading and ending quotes */ case 210: YY_RULE_SETUP #line 429 "util/configlexer.lex" +{ YDVAR(1, VAR_IPSECMOD_STRICT) } + YY_BREAK +case 211: +YY_RULE_SETUP +#line 430 "util/configlexer.lex" +{ YDVAR(0, VAR_CACHEDB) } + YY_BREAK +case 212: +YY_RULE_SETUP +#line 431 "util/configlexer.lex" +{ YDVAR(1, VAR_CACHEDB_BACKEND) } + YY_BREAK +case 213: +YY_RULE_SETUP +#line 432 "util/configlexer.lex" +{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } + YY_BREAK +case 214: +/* rule 214 can match eol */ +YY_RULE_SETUP +#line 433 "util/configlexer.lex" +{ LEXOUT(("NL\n")); cfg_parser->line++; } + YY_BREAK +/* Quoted strings. Strip leading and ending quotes */ +case 215: +YY_RULE_SETUP +#line 436 "util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 430 "util/configlexer.lex" +#line 437 "util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 211: +case 216: YY_RULE_SETUP -#line 435 "util/configlexer.lex" +#line 442 "util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK -case 212: -/* rule 212 can match eol */ +case 217: +/* rule 217 can match eol */ YY_RULE_SETUP -#line 436 "util/configlexer.lex" +#line 443 "util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 213: +case 218: YY_RULE_SETUP -#line 438 "util/configlexer.lex" +#line 445 "util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -4190,34 +4276,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 214: +case 219: YY_RULE_SETUP -#line 450 "util/configlexer.lex" +#line 457 "util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 451 "util/configlexer.lex" +#line 458 "util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 215: +case 220: YY_RULE_SETUP -#line 456 "util/configlexer.lex" +#line 463 "util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK -case 216: -/* rule 216 can match eol */ +case 221: +/* rule 221 can match eol */ YY_RULE_SETUP -#line 457 "util/configlexer.lex" +#line 464 "util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 217: +case 222: YY_RULE_SETUP -#line 459 "util/configlexer.lex" +#line 466 "util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -4230,38 +4316,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 218: +case 223: YY_RULE_SETUP -#line 471 "util/configlexer.lex" +#line 478 "util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 473 "util/configlexer.lex" +#line 480 "util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); } YY_BREAK -case 219: +case 224: YY_RULE_SETUP -#line 477 "util/configlexer.lex" +#line 484 "util/configlexer.lex" { LEXOUT(("ISP ")); /* ignore */ } YY_BREAK -case 220: -/* rule 220 can match eol */ +case 225: +/* rule 225 can match eol */ YY_RULE_SETUP -#line 478 "util/configlexer.lex" +#line 485 "util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK -case 221: +case 226: YY_RULE_SETUP -#line 479 "util/configlexer.lex" +#line 486 "util/configlexer.lex" { LEXOUT(("IQS ")); BEGIN(include_quoted); } YY_BREAK -case 222: +case 227: YY_RULE_SETUP -#line 480 "util/configlexer.lex" +#line 487 "util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include_glob(yytext); @@ -4269,27 +4355,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 485 "util/configlexer.lex" +#line 492 "util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 223: +case 228: YY_RULE_SETUP -#line 489 "util/configlexer.lex" +#line 496 "util/configlexer.lex" { LEXOUT(("ISTR(%s) ", yytext)); yymore(); } YY_BREAK -case 224: -/* rule 224 can match eol */ +case 229: +/* rule 229 can match eol */ YY_RULE_SETUP -#line 490 "util/configlexer.lex" +#line 497 "util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 225: +case 230: YY_RULE_SETUP -#line 492 "util/configlexer.lex" +#line 499 "util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -4299,7 +4385,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 498 "util/configlexer.lex" +#line 505 "util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ @@ -4311,33 +4397,33 @@ case YY_STATE_EOF(val): } } YY_BREAK -case 226: +case 231: YY_RULE_SETUP -#line 509 "util/configlexer.lex" +#line 516 "util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 227: +case 232: YY_RULE_SETUP -#line 513 "util/configlexer.lex" +#line 520 "util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 228: +case 233: YY_RULE_SETUP -#line 517 "util/configlexer.lex" +#line 524 "util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 229: +case 234: YY_RULE_SETUP -#line 521 "util/configlexer.lex" +#line 528 "util/configlexer.lex" ECHO; YY_BREAK -#line 4339 "<stdout>" +#line 4425 "<stdout>" case YY_END_OF_BUFFER: { @@ -4628,7 +4714,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 >= 2238 ) + if ( yy_current_state >= 2288 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; @@ -4656,11 +4742,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 >= 2238 ) + if ( yy_current_state >= 2288 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; - yy_is_jam = (yy_current_state == 2237); + yy_is_jam = (yy_current_state == 2287); return yy_is_jam ? 0 : yy_current_state; } @@ -5299,7 +5385,7 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 521 "util/configlexer.lex" +#line 528 "util/configlexer.lex" diff --git a/util/configlexer.lex b/util/configlexer.lex index d9b8e281c568..0c9a4df04298 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -417,12 +417,19 @@ dnscrypt-port{COLON} { YDVAR(1, VAR_DNSCRYPT_PORT) } dnscrypt-provider{COLON} { YDVAR(1, VAR_DNSCRYPT_PROVIDER) } dnscrypt-secret-key{COLON} { YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } dnscrypt-provider-cert{COLON} { YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } +dnscrypt-shared-secret-cache-size{COLON} { + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } +dnscrypt-shared-secret-cache-slabs{COLON} { + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } ipsecmod-enabled{COLON} { YDVAR(1, VAR_IPSECMOD_ENABLED) } ipsecmod-ignore-bogus{COLON} { YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } ipsecmod-hook{COLON} { YDVAR(1, VAR_IPSECMOD_HOOK) } ipsecmod-max-ttl{COLON} { YDVAR(1, VAR_IPSECMOD_MAX_TTL) } ipsecmod-whitelist{COLON} { YDVAR(1, VAR_IPSECMOD_WHITELIST) } ipsecmod-strict{COLON} { YDVAR(1, VAR_IPSECMOD_STRICT) } +cachedb{COLON} { YDVAR(0, VAR_CACHEDB) } +backend{COLON} { YDVAR(1, VAR_CACHEDB_BACKEND) } +secret-seed{COLON} { YDVAR(1, VAR_CACHEDB_SECRETSEED) } <INITIAL,val>{NEWLINE} { LEXOUT(("NL\n")); cfg_parser->line++; } /* Quoted strings. Strip leading and ending quotes */ diff --git a/util/configparser.c b/util/configparser.c index 9fa436b02886..7829ed8cd2bf 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -333,12 +333,17 @@ extern int yydebug; VAR_DNSCRYPT_PROVIDER = 462, VAR_DNSCRYPT_SECRET_KEY = 463, VAR_DNSCRYPT_PROVIDER_CERT = 464, - VAR_IPSECMOD_ENABLED = 465, - VAR_IPSECMOD_HOOK = 466, - VAR_IPSECMOD_IGNORE_BOGUS = 467, - VAR_IPSECMOD_MAX_TTL = 468, - VAR_IPSECMOD_WHITELIST = 469, - VAR_IPSECMOD_STRICT = 470 + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 465, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 466, + VAR_IPSECMOD_ENABLED = 467, + VAR_IPSECMOD_HOOK = 468, + VAR_IPSECMOD_IGNORE_BOGUS = 469, + VAR_IPSECMOD_MAX_TTL = 470, + VAR_IPSECMOD_WHITELIST = 471, + VAR_IPSECMOD_STRICT = 472, + VAR_CACHEDB = 473, + VAR_CACHEDB_BACKEND = 474, + VAR_CACHEDB_SECRETSEED = 475 }; #endif /* Tokens. */ @@ -549,12 +554,17 @@ extern int yydebug; #define VAR_DNSCRYPT_PROVIDER 462 #define VAR_DNSCRYPT_SECRET_KEY 463 #define VAR_DNSCRYPT_PROVIDER_CERT 464 -#define VAR_IPSECMOD_ENABLED 465 -#define VAR_IPSECMOD_HOOK 466 -#define VAR_IPSECMOD_IGNORE_BOGUS 467 -#define VAR_IPSECMOD_MAX_TTL 468 -#define VAR_IPSECMOD_WHITELIST 469 -#define VAR_IPSECMOD_STRICT 470 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 465 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 466 +#define VAR_IPSECMOD_ENABLED 467 +#define VAR_IPSECMOD_HOOK 468 +#define VAR_IPSECMOD_IGNORE_BOGUS 469 +#define VAR_IPSECMOD_MAX_TTL 470 +#define VAR_IPSECMOD_WHITELIST 471 +#define VAR_IPSECMOD_STRICT 472 +#define VAR_CACHEDB 473 +#define VAR_CACHEDB_BACKEND 474 +#define VAR_CACHEDB_SECRETSEED 475 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -565,7 +575,7 @@ union YYSTYPE char* str; -#line 569 "util/configparser.c" /* yacc.c:355 */ +#line 579 "util/configparser.c" /* yacc.c:355 */ }; typedef union YYSTYPE YYSTYPE; @@ -582,7 +592,7 @@ int yyparse (void); /* Copy the second part of user declarations. */ -#line 586 "util/configparser.c" /* yacc.c:358 */ +#line 596 "util/configparser.c" /* yacc.c:358 */ #ifdef short # undef short @@ -824,21 +834,21 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 442 +#define YYLAST 446 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 216 +#define YYNTOKENS 221 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 231 +#define YYNNTS 238 /* YYNRULES -- Number of rules. */ -#define YYNRULES 443 +#define YYNRULES 455 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 667 +#define YYNSTATES 683 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 470 +#define YYMAXUTOK 475 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -894,58 +904,59 @@ static const yytype_uint8 yytranslate[] = 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 + 215, 216, 217, 218, 219, 220 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 151, 151, 151, 152, 152, 153, 153, 154, 154, - 154, 156, 160, 165, 166, 167, 167, 167, 168, 168, - 169, 169, 170, 170, 171, 171, 172, 172, 172, 173, - 173, 173, 174, 174, 175, 175, 176, 176, 177, 177, - 178, 178, 179, 179, 180, 180, 181, 181, 182, 182, - 182, 183, 183, 183, 184, 184, 184, 185, 185, 186, - 186, 187, 187, 188, 188, 189, 189, 189, 190, 190, - 191, 191, 192, 192, 192, 193, 193, 194, 194, 195, - 195, 196, 196, 196, 197, 197, 198, 198, 199, 199, - 200, 200, 201, 201, 202, 202, 202, 203, 203, 204, - 204, 204, 205, 205, 205, 206, 206, 206, 207, 207, - 207, 207, 208, 208, 208, 209, 209, 209, 210, 210, - 211, 211, 212, 212, 213, 213, 214, 214, 214, 215, - 215, 216, 216, 217, 218, 218, 219, 219, 220, 220, - 221, 222, 222, 223, 223, 224, 224, 225, 225, 225, - 226, 226, 227, 227, 228, 228, 229, 229, 230, 230, - 230, 231, 231, 231, 232, 232, 232, 233, 233, 234, - 234, 235, 235, 236, 236, 238, 250, 251, 252, 252, - 252, 252, 252, 253, 255, 267, 268, 269, 269, 269, - 269, 270, 272, 286, 287, 288, 288, 288, 288, 289, - 289, 289, 291, 300, 309, 320, 329, 338, 347, 358, - 367, 378, 391, 406, 417, 434, 451, 464, 479, 488, - 497, 506, 515, 524, 533, 542, 551, 560, 569, 578, - 587, 596, 605, 614, 621, 628, 637, 646, 655, 669, - 678, 687, 696, 703, 710, 736, 744, 751, 758, 765, - 772, 780, 788, 796, 803, 814, 821, 830, 839, 848, - 855, 862, 870, 878, 888, 898, 908, 921, 932, 940, - 953, 962, 971, 980, 990, 1000, 1008, 1021, 1030, 1038, - 1047, 1055, 1068, 1077, 1084, 1094, 1104, 1114, 1124, 1134, - 1144, 1154, 1164, 1171, 1178, 1185, 1194, 1203, 1212, 1219, - 1229, 1246, 1253, 1271, 1284, 1297, 1306, 1315, 1324, 1333, - 1343, 1353, 1362, 1371, 1384, 1397, 1406, 1413, 1422, 1431, - 1440, 1449, 1457, 1470, 1478, 1506, 1513, 1528, 1538, 1548, - 1555, 1562, 1571, 1585, 1604, 1623, 1635, 1647, 1659, 1670, - 1689, 1699, 1708, 1716, 1724, 1737, 1750, 1763, 1776, 1785, - 1794, 1804, 1814, 1827, 1840, 1851, 1864, 1875, 1888, 1898, - 1905, 1912, 1921, 1931, 1941, 1951, 1958, 1965, 1974, 1984, - 1994, 2023, 2033, 2041, 2050, 2065, 2074, 2079, 2080, 2081, - 2081, 2081, 2082, 2082, 2082, 2083, 2083, 2085, 2095, 2104, - 2111, 2121, 2128, 2135, 2142, 2149, 2154, 2155, 2156, 2156, - 2157, 2157, 2158, 2158, 2159, 2160, 2161, 2162, 2163, 2164, - 2166, 2174, 2181, 2189, 2197, 2204, 2211, 2220, 2229, 2238, - 2247, 2256, 2265, 2270, 2271, 2272, 2274, 2280, 2290, 2297, - 2306, 2314, 2320, 2321, 2323, 2323, 2323, 2324, 2324, 2326, - 2336, 2346, 2353, 2360 + 0, 154, 154, 154, 155, 155, 156, 156, 157, 157, + 157, 159, 160, 164, 169, 170, 171, 171, 171, 172, + 172, 173, 173, 174, 174, 175, 175, 176, 176, 176, + 177, 177, 177, 178, 178, 179, 179, 180, 180, 181, + 181, 182, 182, 183, 183, 184, 184, 185, 185, 186, + 186, 186, 187, 187, 187, 188, 188, 188, 189, 189, + 190, 190, 191, 191, 192, 192, 193, 193, 193, 194, + 194, 195, 195, 196, 196, 196, 197, 197, 198, 198, + 199, 199, 200, 200, 200, 201, 201, 202, 202, 203, + 203, 204, 204, 205, 205, 206, 206, 206, 207, 207, + 208, 208, 208, 209, 209, 209, 210, 210, 210, 211, + 211, 211, 211, 212, 212, 212, 213, 213, 213, 214, + 214, 215, 215, 216, 216, 217, 217, 218, 218, 218, + 219, 219, 220, 220, 221, 222, 222, 223, 223, 224, + 224, 225, 226, 226, 227, 227, 228, 228, 229, 229, + 229, 230, 230, 231, 231, 232, 232, 233, 233, 234, + 234, 234, 235, 235, 235, 236, 236, 236, 237, 237, + 238, 238, 239, 239, 240, 240, 242, 254, 255, 256, + 256, 256, 256, 256, 257, 259, 271, 272, 273, 273, + 273, 273, 274, 276, 290, 291, 292, 292, 292, 292, + 293, 293, 293, 295, 304, 313, 324, 333, 342, 351, + 362, 371, 382, 395, 410, 421, 438, 455, 468, 483, + 492, 501, 510, 519, 528, 537, 546, 555, 564, 573, + 582, 591, 600, 609, 618, 625, 632, 641, 650, 659, + 673, 682, 691, 700, 707, 714, 740, 748, 755, 762, + 769, 776, 784, 792, 800, 807, 818, 825, 834, 843, + 852, 859, 866, 874, 882, 892, 902, 912, 925, 936, + 944, 957, 966, 975, 984, 994, 1004, 1012, 1025, 1034, + 1042, 1051, 1059, 1072, 1081, 1088, 1098, 1108, 1118, 1128, + 1138, 1148, 1158, 1168, 1175, 1182, 1189, 1198, 1207, 1216, + 1223, 1233, 1250, 1257, 1275, 1288, 1301, 1310, 1319, 1328, + 1337, 1347, 1357, 1366, 1375, 1388, 1401, 1410, 1417, 1426, + 1435, 1444, 1453, 1461, 1474, 1482, 1510, 1517, 1532, 1542, + 1552, 1559, 1566, 1575, 1589, 1608, 1627, 1639, 1651, 1663, + 1674, 1693, 1703, 1712, 1720, 1728, 1741, 1754, 1767, 1780, + 1789, 1798, 1808, 1818, 1831, 1844, 1855, 1868, 1879, 1892, + 1902, 1909, 1916, 1925, 1935, 1945, 1955, 1962, 1969, 1978, + 1988, 1998, 2027, 2037, 2045, 2054, 2069, 2078, 2083, 2084, + 2085, 2085, 2085, 2086, 2086, 2086, 2087, 2087, 2089, 2099, + 2108, 2115, 2125, 2132, 2139, 2146, 2153, 2158, 2159, 2160, + 2160, 2161, 2161, 2162, 2162, 2163, 2164, 2165, 2166, 2167, + 2168, 2170, 2178, 2185, 2193, 2201, 2208, 2215, 2224, 2233, + 2242, 2251, 2260, 2269, 2274, 2275, 2276, 2278, 2284, 2294, + 2301, 2310, 2318, 2324, 2325, 2327, 2327, 2327, 2328, 2328, + 2329, 2330, 2332, 2342, 2352, 2359, 2366, 2373, 2381, 2394, + 2399, 2400, 2401, 2401, 2403, 2417 }; #endif @@ -1028,12 +1039,15 @@ static const char *const yytname[] = "VAR_USE_SYSTEMD", "VAR_SHM_ENABLE", "VAR_SHM_KEY", "VAR_DNSCRYPT", "VAR_DNSCRYPT_ENABLE", "VAR_DNSCRYPT_PORT", "VAR_DNSCRYPT_PROVIDER", "VAR_DNSCRYPT_SECRET_KEY", "VAR_DNSCRYPT_PROVIDER_CERT", - "VAR_IPSECMOD_ENABLED", "VAR_IPSECMOD_HOOK", "VAR_IPSECMOD_IGNORE_BOGUS", - "VAR_IPSECMOD_MAX_TTL", "VAR_IPSECMOD_WHITELIST", "VAR_IPSECMOD_STRICT", - "$accept", "toplevelvars", "toplevelvar", "serverstart", - "contents_server", "content_server", "stubstart", "contents_stub", - "content_stub", "forwardstart", "contents_forward", "content_forward", - "viewstart", "contents_view", "content_view", "server_num_threads", + "VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE", + "VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS", "VAR_IPSECMOD_ENABLED", + "VAR_IPSECMOD_HOOK", "VAR_IPSECMOD_IGNORE_BOGUS", "VAR_IPSECMOD_MAX_TTL", + "VAR_IPSECMOD_WHITELIST", "VAR_IPSECMOD_STRICT", "VAR_CACHEDB", + "VAR_CACHEDB_BACKEND", "VAR_CACHEDB_SECRETSEED", "$accept", + "toplevelvars", "toplevelvar", "serverstart", "contents_server", + "content_server", "stubstart", "contents_stub", "content_stub", + "forwardstart", "contents_forward", "content_forward", "viewstart", + "contents_view", "content_view", "server_num_threads", "server_verbosity", "server_statistics_interval", "server_statistics_cumulative", "server_extended_statistics", "server_shm_enable", "server_shm_key", "server_port", @@ -1122,7 +1136,11 @@ static const char *const yytname[] = "server_response_ip", "server_response_ip_data", "dnscstart", "contents_dnsc", "content_dnsc", "dnsc_dnscrypt_enable", "dnsc_dnscrypt_port", "dnsc_dnscrypt_provider", - "dnsc_dnscrypt_provider_cert", "dnsc_dnscrypt_secret_key", YY_NULLPTR + "dnsc_dnscrypt_provider_cert", "dnsc_dnscrypt_secret_key", + "dnsc_dnscrypt_shared_secret_cache_size", + "dnsc_dnscrypt_shared_secret_cache_slabs", "cachedbstart", + "contents_cachedb", "content_cachedb", "cachedb_backend_name", + "cachedb_secret_seed", YY_NULLPTR }; #endif @@ -1152,14 +1170,15 @@ static const yytype_uint16 yytoknum[] = 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 + 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, + 475 }; # endif -#define YYPACT_NINF -200 +#define YYPACT_NINF -213 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-200))) + (!!((Yystate) == (-213))) #define YYTABLE_NINF -1 @@ -1170,73 +1189,75 @@ static const yytype_uint16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - -200, 0, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - 96, -39, -35, 248, -65, -131, -106, -199, 2, 25, - 26, 27, 28, 29, 30, 32, 33, 34, 35, 36, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 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, 82, 83, 85, 88, 90, 91, 92, 93, - 94, 95, 126, 127, 128, 129, 133, 134, 177, 178, - 179, 180, 181, 183, 184, 185, 189, 193, 218, 219, - 220, 221, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 280, 290, 291, 292, 293, - 294, 295, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, 361, - 362, 363, 364, 365, 366, -200, -200, -200, -200, -200, - -200, -200, 367, 368, 369, 370, 371, -200, -200, -200, - -200, -200, -200, 372, 373, 374, 375, 376, 377, 378, - -200, -200, -200, -200, -200, -200, -200, -200, 379, 380, - 381, 382, 383, 384, 385, 386, -200, -200, -200, -200, - -200, -200, -200, -200, -200, 387, 388, 389, 390, 391, - 392, 393, 394, 395, 396, 399, 400, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - 401, -200, -200, 402, 403, 404, 405, 406, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - 407, 408, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, 409, 410, 411, -200, -200, -200, - -200, -200, -200, -200, -200, -200, 412, 413, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, 414, 415, 416, 417, 418, 419, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, 420, -200, -200, 421, - 422, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, 423, 424, 425, - -200, -200, -200, -200, -200, -200, -200 + -213, 0, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, 207, -38, -34, -39, -64, -130, -105, -157, + -212, -1, 2, 3, 26, 29, 30, 32, 33, 34, + 35, 36, 45, 46, 47, 48, 49, 50, 51, 53, + 54, 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, 82, 83, 84, 86, + 89, 91, 92, 93, 94, 95, 96, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 237, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, 238, 239, 240, 244, 245, 246, -213, -213, + -213, -213, -213, -213, -213, 288, 289, 290, 291, 292, + -213, -213, -213, -213, -213, -213, 293, 294, 295, 296, + 300, 304, 305, -213, -213, -213, -213, -213, -213, -213, + -213, 329, 330, 331, 332, 342, 343, 344, 345, -213, + -213, -213, -213, -213, -213, -213, -213, -213, 346, 347, + 348, 349, 350, 351, 352, 353, 354, 389, 391, 401, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, 402, -213, -213, 403, 404, 405, 406, + 407, 408, 415, -213, -213, -213, -213, -213, -213, -213, + -213, 416, 417, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, 418, 419, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, 420, 421, 422, -213, + -213, -213, -213, -213, -213, -213, -213, -213, 423, 424, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, 425, 426, 427, 428, 429, + 430, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, 431, -213, + -213, 432, 433, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, 434, 435, 436, -213, -213, -213, -213, + -213, -213, -213 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1244,9 +1265,11 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint16 yydefact[] = { - 2, 0, 1, 12, 175, 184, 376, 422, 395, 192, - 431, 3, 14, 177, 186, 194, 378, 397, 424, 433, - 4, 5, 6, 10, 8, 9, 7, 11, 0, 0, + 2, 0, 1, 13, 176, 185, 377, 423, 396, 193, + 432, 449, 3, 15, 178, 187, 195, 379, 398, 425, + 434, 451, 4, 5, 6, 10, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1261,114 +1284,114 @@ 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, 14, 16, 17, 76, 79, 88, 165, 166, 18, + 138, 139, 140, 141, 142, 143, 27, 67, 19, 80, + 81, 38, 60, 75, 20, 21, 23, 24, 22, 25, + 26, 111, 112, 113, 114, 115, 161, 77, 66, 92, + 109, 110, 28, 29, 30, 31, 32, 68, 82, 83, + 98, 54, 64, 55, 169, 93, 48, 49, 168, 50, + 51, 102, 106, 119, 127, 148, 103, 61, 33, 34, + 35, 90, 120, 121, 122, 36, 37, 39, 40, 42, + 43, 41, 125, 44, 45, 46, 52, 71, 107, 85, + 126, 78, 144, 86, 87, 104, 105, 91, 47, 69, + 72, 53, 56, 94, 95, 70, 145, 96, 57, 58, + 59, 108, 158, 159, 167, 97, 65, 99, 100, 101, + 146, 62, 63, 84, 73, 74, 89, 116, 117, 118, + 123, 124, 149, 150, 152, 154, 155, 153, 156, 162, + 128, 129, 132, 133, 130, 131, 134, 135, 137, 136, + 147, 157, 170, 172, 171, 173, 174, 175, 151, 160, + 163, 164, 0, 0, 0, 0, 0, 0, 177, 179, + 180, 181, 183, 184, 182, 0, 0, 0, 0, 0, + 186, 188, 189, 190, 191, 192, 0, 0, 0, 0, + 0, 0, 0, 194, 196, 197, 200, 201, 198, 202, + 199, 0, 0, 0, 0, 0, 0, 0, 0, 378, + 380, 382, 381, 387, 383, 384, 385, 386, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 13, 15, - 16, 75, 78, 87, 164, 165, 17, 137, 138, 139, - 140, 141, 142, 26, 66, 18, 79, 80, 37, 59, - 74, 19, 20, 22, 23, 21, 24, 25, 110, 111, - 112, 113, 114, 160, 76, 65, 91, 108, 109, 27, - 28, 29, 30, 31, 67, 81, 82, 97, 53, 63, - 54, 168, 92, 47, 48, 167, 49, 50, 101, 105, - 118, 126, 147, 102, 60, 32, 33, 34, 89, 119, - 120, 121, 35, 36, 38, 39, 41, 42, 40, 124, - 43, 44, 45, 51, 70, 106, 84, 125, 77, 143, - 85, 86, 103, 104, 90, 46, 68, 71, 52, 55, - 93, 94, 69, 144, 95, 56, 57, 58, 107, 157, - 158, 166, 96, 64, 98, 99, 100, 145, 61, 62, - 83, 72, 73, 88, 115, 116, 117, 122, 123, 148, - 149, 151, 153, 154, 152, 155, 161, 127, 128, 131, - 132, 129, 130, 133, 134, 136, 135, 146, 156, 169, - 171, 170, 172, 173, 174, 150, 159, 162, 163, 0, - 0, 0, 0, 0, 0, 176, 178, 179, 180, 182, - 183, 181, 0, 0, 0, 0, 0, 185, 187, 188, - 189, 190, 191, 0, 0, 0, 0, 0, 0, 0, - 193, 195, 196, 199, 200, 197, 201, 198, 0, 0, - 0, 0, 0, 0, 0, 0, 377, 379, 381, 380, - 386, 382, 383, 384, 385, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 396, 398, 399, - 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 0, 423, 425, 0, 0, 0, 0, 0, 432, 434, - 435, 436, 438, 437, 203, 202, 209, 218, 216, 224, - 225, 228, 226, 227, 229, 230, 242, 243, 244, 245, - 246, 268, 269, 270, 275, 276, 221, 277, 278, 281, - 279, 280, 283, 284, 285, 298, 256, 257, 259, 260, - 286, 301, 251, 253, 302, 308, 309, 310, 222, 267, - 321, 322, 252, 316, 238, 217, 247, 299, 305, 287, - 0, 0, 325, 223, 204, 237, 291, 205, 219, 220, - 248, 249, 323, 289, 293, 294, 206, 326, 271, 297, - 239, 255, 303, 304, 307, 315, 250, 319, 317, 318, - 261, 266, 295, 296, 262, 263, 288, 311, 240, 241, - 231, 232, 233, 234, 235, 327, 328, 329, 272, 273, - 274, 282, 330, 331, 0, 0, 0, 290, 264, 427, - 340, 344, 342, 341, 345, 343, 0, 0, 348, 349, - 210, 211, 212, 213, 214, 215, 292, 306, 320, 350, - 351, 265, 332, 0, 0, 0, 0, 0, 0, 312, - 313, 314, 428, 258, 254, 236, 207, 208, 352, 354, - 353, 355, 356, 357, 358, 359, 360, 363, 362, 361, - 364, 365, 366, 367, 368, 369, 0, 373, 374, 0, - 0, 375, 387, 389, 388, 391, 392, 393, 394, 390, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 426, 439, 440, 441, 443, 442, 300, 324, - 339, 429, 430, 346, 347, 333, 334, 0, 0, 0, - 338, 370, 371, 372, 337, 335, 336 + 397, 399, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 409, 410, 0, 424, 426, 0, 0, 0, 0, + 0, 0, 0, 433, 435, 436, 437, 439, 438, 440, + 441, 0, 0, 450, 452, 453, 204, 203, 210, 219, + 217, 225, 226, 229, 227, 228, 230, 231, 243, 244, + 245, 246, 247, 269, 270, 271, 276, 277, 222, 278, + 279, 282, 280, 281, 284, 285, 286, 299, 257, 258, + 260, 261, 287, 302, 252, 254, 303, 309, 310, 311, + 223, 268, 322, 323, 253, 317, 239, 218, 248, 300, + 306, 288, 0, 0, 326, 224, 205, 238, 292, 206, + 220, 221, 249, 250, 324, 290, 294, 295, 207, 327, + 272, 298, 240, 256, 304, 305, 308, 316, 251, 320, + 318, 319, 262, 267, 296, 297, 263, 264, 289, 312, + 241, 242, 232, 233, 234, 235, 236, 328, 329, 330, + 273, 274, 275, 283, 331, 332, 0, 0, 0, 291, + 265, 428, 341, 345, 343, 342, 346, 344, 0, 0, + 349, 350, 211, 212, 213, 214, 215, 216, 293, 307, + 321, 351, 352, 266, 333, 0, 0, 0, 0, 0, + 0, 313, 314, 315, 429, 259, 255, 237, 208, 209, + 353, 355, 354, 356, 357, 358, 359, 360, 361, 364, + 363, 362, 365, 366, 367, 368, 369, 370, 0, 374, + 375, 0, 0, 376, 388, 390, 389, 392, 393, 394, + 395, 391, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 427, 442, 443, 444, 446, 445, + 447, 448, 454, 455, 301, 325, 340, 430, 431, 347, + 348, 334, 335, 0, 0, 0, 339, 371, 372, 373, + 338, 336, 337 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200, -200, -200, -200, -200, -200, -200, -200, -200, -200, - -200 + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213, -213, -213, + -213, -213, -213, -213, -213, -213, -213, -213 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 11, 12, 20, 188, 13, 21, 355, 14, - 22, 367, 15, 23, 380, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 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, 356, 357, 358, 359, 360, 361, 368, 369, 370, - 371, 372, 381, 382, 383, 384, 385, 386, 387, 16, - 24, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 17, 25, 417, 418, 419, 420, 421, 422, 423, 424, - 425, 426, 427, 428, 429, 18, 26, 431, 432, 345, - 346, 347, 348, 19, 27, 438, 439, 440, 441, 442, - 443 + -1, 1, 12, 13, 22, 191, 14, 23, 358, 15, + 24, 370, 16, 25, 383, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 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, 359, 360, 361, 362, 363, 364, 371, 372, 373, + 374, 375, 384, 385, 386, 387, 388, 389, 390, 17, + 26, 399, 400, 401, 402, 403, 404, 405, 406, 407, + 18, 27, 420, 421, 422, 423, 424, 425, 426, 427, + 428, 429, 430, 431, 432, 19, 28, 434, 435, 348, + 349, 350, 351, 20, 29, 443, 444, 445, 446, 447, + 448, 449, 450, 21, 30, 453, 454, 455 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1376,151 +1399,152 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_uint16 yytable[] = { - 2, 349, 430, 350, 351, 362, 433, 434, 435, 436, - 437, 3, 444, 363, 364, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 388, 389, 390, - 391, 392, 393, 394, 395, 445, 446, 447, 448, 449, - 450, 4, 451, 452, 453, 454, 455, 5, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, - 468, 469, 470, 471, 352, 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, 6, 498, 499, 353, 500, 354, 365, 501, 366, - 502, 503, 504, 505, 506, 507, 0, 7, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 508, 509, 510, 511, - 56, 57, 58, 512, 513, 8, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 514, 515, 516, - 517, 518, 9, 519, 520, 521, 100, 101, 102, 522, - 103, 104, 105, 523, 10, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 524, 525, - 526, 527, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 528, 529, 530, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 373, 172, - 541, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 542, 543, 544, 545, 546, 547, 182, 183, 184, 185, - 186, 187, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 557, 558, 559, 374, 375, 560, 561, 562, 563, - 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, - 574, 575, 576, 577, 578, 579, 580, 581, 582, 376, - 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, - 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, - 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, - 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, - 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, - 633, 634, 635, 636, 637, 638, 639, 377, 378, 640, - 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, - 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, - 661, 662, 663, 664, 665, 666, 0, 0, 0, 0, - 0, 0, 379 + 2, 376, 352, 433, 353, 354, 365, 451, 452, 456, + 0, 3, 457, 458, 366, 367, 408, 409, 410, 411, + 412, 413, 414, 415, 416, 417, 418, 419, 391, 392, + 393, 394, 395, 396, 397, 398, 459, 377, 378, 460, + 461, 4, 462, 463, 464, 465, 466, 5, 436, 437, + 438, 439, 440, 441, 442, 467, 468, 469, 470, 471, + 472, 473, 379, 474, 475, 355, 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, 6, 501, 502, 503, 356, 504, 357, 368, 505, + 369, 506, 507, 508, 509, 510, 511, 7, 512, 513, + 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, + 380, 381, 524, 525, 526, 527, 528, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 8, 547, 548, 549, 550, + 551, 552, 553, 554, 555, 382, 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, 9, 592, 593, 594, 595, 596, 597, 598, + 599, 600, 601, 602, 10, 603, 604, 605, 606, 607, + 608, 609, 610, 611, 612, 613, 614, 0, 11, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 615, 616, 617, + 618, 59, 60, 61, 619, 620, 621, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 622, 623, + 624, 625, 626, 627, 628, 629, 630, 103, 104, 105, + 631, 106, 107, 108, 632, 633, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 634, + 635, 636, 637, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 638, 639, 640, 641, 642, 643, 644, 645, + 646, 647, 648, 649, 650, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 651, + 175, 652, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 653, 654, 655, 656, 657, 658, 659, 660, 185, + 186, 187, 188, 189, 190, 661, 662, 663, 664, 665, + 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, + 676, 677, 678, 679, 680, 681, 682 }; static const yytype_int16 yycheck[] = { - 0, 40, 108, 42, 43, 40, 205, 206, 207, 208, - 209, 11, 10, 48, 49, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 92, 93, 94, - 95, 96, 97, 98, 99, 10, 10, 10, 10, 10, - 10, 41, 10, 10, 10, 10, 10, 47, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 103, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 0, 40, 40, 108, 42, 43, 40, 219, 220, 10, + -1, 11, 10, 10, 48, 49, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 92, 93, + 94, 95, 96, 97, 98, 99, 10, 76, 77, 10, + 10, 41, 10, 10, 10, 10, 10, 47, 205, 206, + 207, 208, 209, 210, 211, 10, 10, 10, 10, 10, + 10, 10, 101, 10, 10, 103, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 91, 10, 10, 133, 10, 135, 132, 10, 134, - 10, 10, 10, 10, 10, 10, -1, 107, 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, 10, 10, 10, 10, - 44, 45, 46, 10, 10, 145, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 10, 10, 10, - 10, 10, 192, 10, 10, 10, 100, 101, 102, 10, - 104, 105, 106, 10, 204, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 10, 10, - 10, 10, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 40, 193, - 10, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 10, 10, 10, 10, 10, 10, 210, 211, 212, 213, - 214, 215, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 76, 77, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 101, + 10, 91, 10, 10, 10, 133, 10, 135, 132, 10, + 134, 10, 10, 10, 10, 10, 10, 107, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 159, 160, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 145, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 194, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 159, 160, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 192, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 204, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, -1, 218, 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, 10, 10, 10, + 10, 44, 45, 46, 10, 10, 10, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 100, 101, 102, + 10, 104, 105, 106, 10, 10, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 10, + 10, 10, 10, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 10, + 193, 10, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 10, 10, 10, 10, 10, 10, 10, 10, 212, + 213, 214, 215, 216, 217, 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, 194 + 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, 217, 0, 11, 41, 47, 91, 107, 145, 192, - 204, 218, 219, 222, 225, 228, 405, 416, 431, 439, - 220, 223, 226, 229, 406, 417, 432, 440, 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, 44, 45, 46, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 100, 101, 102, 104, 105, 106, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 193, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 210, 211, 212, 213, 214, 215, 221, 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, 435, 436, 437, 438, 40, - 42, 43, 103, 133, 135, 224, 387, 388, 389, 390, - 391, 392, 40, 48, 49, 132, 134, 227, 393, 394, - 395, 396, 397, 40, 76, 77, 101, 159, 160, 194, - 230, 398, 399, 400, 401, 402, 403, 404, 92, 93, - 94, 95, 96, 97, 98, 99, 407, 408, 409, 410, - 411, 412, 413, 414, 415, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 418, 419, 420, - 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, - 108, 433, 434, 205, 206, 207, 208, 209, 441, 442, - 443, 444, 445, 446, 10, 10, 10, 10, 10, 10, + 0, 222, 0, 11, 41, 47, 91, 107, 145, 192, + 204, 218, 223, 224, 227, 230, 233, 410, 421, 436, + 444, 454, 225, 228, 231, 234, 411, 422, 437, 445, + 455, 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, 44, + 45, 46, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 100, 101, 102, 104, 105, 106, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 193, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 212, 213, 214, 215, 216, + 217, 226, 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, 440, 441, + 442, 443, 40, 42, 43, 103, 133, 135, 229, 392, + 393, 394, 395, 396, 397, 40, 48, 49, 132, 134, + 232, 398, 399, 400, 401, 402, 40, 76, 77, 101, + 159, 160, 194, 235, 403, 404, 405, 406, 407, 408, + 409, 92, 93, 94, 95, 96, 97, 98, 99, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, + 433, 434, 435, 108, 438, 439, 205, 206, 207, 208, + 209, 210, 211, 446, 447, 448, 449, 450, 451, 452, + 453, 219, 220, 456, 457, 458, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -1542,64 +1566,66 @@ static const yytype_uint16 yystos[] = 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10 + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint16 yyr1[] = { - 0, 216, 217, 217, 218, 218, 218, 218, 218, 218, - 218, 218, 219, 220, 220, 221, 221, 221, 221, 221, - 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, - 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, - 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, - 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, - 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, - 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, - 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, - 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, - 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, - 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, - 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, - 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, - 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, - 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, - 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, - 221, 221, 221, 221, 221, 222, 223, 223, 224, 224, - 224, 224, 224, 224, 225, 226, 226, 227, 227, 227, - 227, 227, 228, 229, 229, 230, 230, 230, 230, 230, - 230, 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, 406, 407, - 407, 407, 407, 407, 407, 407, 407, 408, 409, 410, - 411, 412, 413, 414, 415, 416, 417, 417, 418, 418, - 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, - 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, - 429, 430, 431, 432, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 440, 441, 441, 441, 441, 441, 442, - 443, 444, 445, 446 + 0, 221, 222, 222, 223, 223, 223, 223, 223, 223, + 223, 223, 223, 224, 225, 225, 226, 226, 226, 226, + 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, + 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, + 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, + 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, + 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, + 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, + 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, + 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, + 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, + 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, + 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, + 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, + 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, + 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, + 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, + 226, 226, 226, 226, 226, 226, 227, 228, 228, 229, + 229, 229, 229, 229, 229, 230, 231, 231, 232, 232, + 232, 232, 232, 233, 234, 234, 235, 235, 235, 235, + 235, 235, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 411, 411, + 412, 412, 412, 412, 412, 412, 412, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 422, 423, + 423, 423, 423, 423, 423, 423, 423, 423, 423, 423, + 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, + 433, 434, 435, 436, 437, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 445, 446, 446, 446, 446, 446, + 446, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 455, 456, 456, 457, 458 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 1, 2, 0, 1, 1, 1, 1, 1, + 2, 2, 2, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -1615,10 +1641,10 @@ 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, 2, 0, 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, - 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, - 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, - 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, + 1, 1, 1, 1, 2, 0, 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, @@ -1628,21 +1654,22 @@ 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, - 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, 3, 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, 3, 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, - 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, 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, - 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, 2, - 2, 2, 2, 2 + 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, 2, 2, 2, 2, 2, 2, 2, 1, + 2, 0, 1, 1, 2, 2 }; @@ -2318,16 +2345,16 @@ yyreduce: YY_REDUCE_PRINT (yyn); switch (yyn) { - case 12: -#line 161 "util/configparser.y" /* yacc.c:1646 */ + case 13: +#line 165 "util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(server:)\n")); } -#line 2327 "util/configparser.c" /* yacc.c:1646 */ +#line 2354 "util/configparser.c" /* yacc.c:1646 */ break; - case 175: -#line 239 "util/configparser.y" /* yacc.c:1646 */ + case 176: +#line 243 "util/configparser.y" /* yacc.c:1646 */ { struct config_stub* s; OUTYY(("\nP(stub_zone:)\n")); @@ -2338,11 +2365,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2342 "util/configparser.c" /* yacc.c:1646 */ +#line 2369 "util/configparser.c" /* yacc.c:1646 */ break; - case 184: -#line 256 "util/configparser.y" /* yacc.c:1646 */ + case 185: +#line 260 "util/configparser.y" /* yacc.c:1646 */ { struct config_stub* s; OUTYY(("\nP(forward_zone:)\n")); @@ -2353,11 +2380,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2357 "util/configparser.c" /* yacc.c:1646 */ +#line 2384 "util/configparser.c" /* yacc.c:1646 */ break; - case 192: -#line 273 "util/configparser.y" /* yacc.c:1646 */ + case 193: +#line 277 "util/configparser.y" /* yacc.c:1646 */ { struct config_view* s; OUTYY(("\nP(view:)\n")); @@ -2370,11 +2397,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2374 "util/configparser.c" /* yacc.c:1646 */ +#line 2401 "util/configparser.c" /* yacc.c:1646 */ break; - case 202: -#line 292 "util/configparser.y" /* yacc.c:1646 */ + case 203: +#line 296 "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) @@ -2382,11 +2409,11 @@ yyreduce: else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2386 "util/configparser.c" /* yacc.c:1646 */ +#line 2413 "util/configparser.c" /* yacc.c:1646 */ break; - case 203: -#line 301 "util/configparser.y" /* yacc.c:1646 */ + case 204: +#line 305 "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) @@ -2394,11 +2421,11 @@ yyreduce: else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2398 "util/configparser.c" /* yacc.c:1646 */ +#line 2425 "util/configparser.c" /* yacc.c:1646 */ break; - case 204: -#line 310 "util/configparser.y" /* yacc.c:1646 */ + case 205: +#line 314 "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) @@ -2408,11 +2435,11 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2412 "util/configparser.c" /* yacc.c:1646 */ +#line 2439 "util/configparser.c" /* yacc.c:1646 */ break; - case 205: -#line 321 "util/configparser.y" /* yacc.c:1646 */ + case 206: +#line 325 "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) @@ -2420,11 +2447,11 @@ yyreduce: else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2424 "util/configparser.c" /* yacc.c:1646 */ +#line 2451 "util/configparser.c" /* yacc.c:1646 */ break; - case 206: -#line 330 "util/configparser.y" /* yacc.c:1646 */ + case 207: +#line 334 "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) @@ -2432,11 +2459,11 @@ yyreduce: else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2436 "util/configparser.c" /* yacc.c:1646 */ +#line 2463 "util/configparser.c" /* yacc.c:1646 */ break; - case 207: -#line 339 "util/configparser.y" /* yacc.c:1646 */ + case 208: +#line 343 "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) @@ -2444,11 +2471,11 @@ yyreduce: else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2448 "util/configparser.c" /* yacc.c:1646 */ +#line 2475 "util/configparser.c" /* yacc.c:1646 */ break; - case 208: -#line 348 "util/configparser.y" /* yacc.c:1646 */ + case 209: +#line 352 "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) @@ -2458,11 +2485,11 @@ yyreduce: else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2462 "util/configparser.c" /* yacc.c:1646 */ +#line 2489 "util/configparser.c" /* yacc.c:1646 */ break; - case 209: -#line 359 "util/configparser.y" /* yacc.c:1646 */ + case 210: +#line 363 "util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -2470,11 +2497,11 @@ yyreduce: else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2474 "util/configparser.c" /* yacc.c:1646 */ +#line 2501 "util/configparser.c" /* yacc.c:1646 */ break; - case 210: -#line 368 "util/configparser.y" /* yacc.c:1646 */ + case 211: +#line 372 "util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str))); @@ -2484,11 +2511,11 @@ yyreduce: OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); #endif } -#line 2488 "util/configparser.c" /* yacc.c:1646 */ +#line 2515 "util/configparser.c" /* yacc.c:1646 */ break; - case 211: -#line 379 "util/configparser.y" /* yacc.c:1646 */ + case 212: +#line 383 "util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str))); @@ -2499,11 +2526,11 @@ yyreduce: OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); #endif } -#line 2503 "util/configparser.c" /* yacc.c:1646 */ +#line 2530 "util/configparser.c" /* yacc.c:1646 */ break; - case 212: -#line 392 "util/configparser.y" /* yacc.c:1646 */ + case 213: +#line 396 "util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str))); @@ -2517,11 +2544,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 2521 "util/configparser.c" /* yacc.c:1646 */ +#line 2548 "util/configparser.c" /* yacc.c:1646 */ break; - case 213: -#line 407 "util/configparser.y" /* yacc.c:1646 */ + case 214: +#line 411 "util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str))); @@ -2531,11 +2558,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 2535 "util/configparser.c" /* yacc.c:1646 */ +#line 2562 "util/configparser.c" /* yacc.c:1646 */ break; - case 214: -#line 418 "util/configparser.y" /* yacc.c:1646 */ + case 215: +#line 422 "util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -2551,11 +2578,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 2555 "util/configparser.c" /* yacc.c:1646 */ +#line 2582 "util/configparser.c" /* yacc.c:1646 */ break; - case 215: -#line 435 "util/configparser.y" /* yacc.c:1646 */ + case 216: +#line 439 "util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -2571,11 +2598,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 2575 "util/configparser.c" /* yacc.c:1646 */ +#line 2602 "util/configparser.c" /* yacc.c:1646 */ break; - case 216: -#line 452 "util/configparser.y" /* yacc.c:1646 */ + case 217: +#line 456 "util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_ifs == 0) @@ -2587,11 +2614,11 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 2591 "util/configparser.c" /* yacc.c:1646 */ +#line 2618 "util/configparser.c" /* yacc.c:1646 */ break; - case 217: -#line 465 "util/configparser.y" /* yacc.c:1646 */ + case 218: +#line 469 "util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_out_ifs == 0) @@ -2605,11 +2632,11 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 2609 "util/configparser.c" /* yacc.c:1646 */ +#line 2636 "util/configparser.c" /* yacc.c:1646 */ break; - case 218: -#line 480 "util/configparser.y" /* yacc.c:1646 */ + case 219: +#line 484 "util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -2617,11 +2644,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2621 "util/configparser.c" /* yacc.c:1646 */ +#line 2648 "util/configparser.c" /* yacc.c:1646 */ break; - case 219: -#line 489 "util/configparser.y" /* yacc.c:1646 */ + case 220: +#line 493 "util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 1, @@ -2629,11 +2656,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 2633 "util/configparser.c" /* yacc.c:1646 */ +#line 2660 "util/configparser.c" /* yacc.c:1646 */ break; - case 220: -#line 498 "util/configparser.y" /* yacc.c:1646 */ + case 221: +#line 502 "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, @@ -2641,11 +2668,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 2645 "util/configparser.c" /* yacc.c:1646 */ +#line 2672 "util/configparser.c" /* yacc.c:1646 */ break; - case 221: -#line 507 "util/configparser.y" /* yacc.c:1646 */ + case 222: +#line 511 "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) @@ -2653,11 +2680,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2657 "util/configparser.c" /* yacc.c:1646 */ +#line 2684 "util/configparser.c" /* yacc.c:1646 */ break; - case 222: -#line 516 "util/configparser.y" /* yacc.c:1646 */ + case 223: +#line 520 "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) @@ -2665,11 +2692,11 @@ yyreduce: else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2669 "util/configparser.c" /* yacc.c:1646 */ +#line 2696 "util/configparser.c" /* yacc.c:1646 */ break; - case 223: -#line 525 "util/configparser.y" /* yacc.c:1646 */ + case 224: +#line 529 "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) @@ -2677,11 +2704,11 @@ yyreduce: else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2681 "util/configparser.c" /* yacc.c:1646 */ +#line 2708 "util/configparser.c" /* yacc.c:1646 */ break; - case 224: -#line 534 "util/configparser.y" /* yacc.c:1646 */ + case 225: +#line 538 "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) @@ -2689,11 +2716,11 @@ yyreduce: else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2693 "util/configparser.c" /* yacc.c:1646 */ +#line 2720 "util/configparser.c" /* yacc.c:1646 */ break; - case 225: -#line 543 "util/configparser.y" /* yacc.c:1646 */ + case 226: +#line 547 "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) @@ -2701,11 +2728,11 @@ yyreduce: else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2705 "util/configparser.c" /* yacc.c:1646 */ +#line 2732 "util/configparser.c" /* yacc.c:1646 */ break; - case 226: -#line 552 "util/configparser.y" /* yacc.c:1646 */ + case 227: +#line 556 "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) @@ -2713,11 +2740,11 @@ yyreduce: else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2717 "util/configparser.c" /* yacc.c:1646 */ +#line 2744 "util/configparser.c" /* yacc.c:1646 */ break; - case 227: -#line 561 "util/configparser.y" /* yacc.c:1646 */ + case 228: +#line 565 "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) @@ -2725,11 +2752,11 @@ yyreduce: else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2729 "util/configparser.c" /* yacc.c:1646 */ +#line 2756 "util/configparser.c" /* yacc.c:1646 */ break; - case 228: -#line 570 "util/configparser.y" /* yacc.c:1646 */ + case 229: +#line 574 "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) @@ -2737,11 +2764,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2741 "util/configparser.c" /* yacc.c:1646 */ +#line 2768 "util/configparser.c" /* yacc.c:1646 */ break; - case 229: -#line 579 "util/configparser.y" /* yacc.c:1646 */ + case 230: +#line 583 "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) @@ -2749,11 +2776,11 @@ yyreduce: else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2753 "util/configparser.c" /* yacc.c:1646 */ +#line 2780 "util/configparser.c" /* yacc.c:1646 */ break; - case 230: -#line 588 "util/configparser.y" /* yacc.c:1646 */ + case 231: +#line 592 "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) @@ -2761,11 +2788,11 @@ yyreduce: else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2765 "util/configparser.c" /* yacc.c:1646 */ +#line 2792 "util/configparser.c" /* yacc.c:1646 */ break; - case 231: -#line 597 "util/configparser.y" /* yacc.c:1646 */ + case 232: +#line 601 "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) @@ -2773,11 +2800,11 @@ yyreduce: else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2777 "util/configparser.c" /* yacc.c:1646 */ +#line 2804 "util/configparser.c" /* yacc.c:1646 */ break; - case 232: -#line 606 "util/configparser.y" /* yacc.c:1646 */ + case 233: +#line 610 "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) @@ -2785,31 +2812,31 @@ yyreduce: else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2789 "util/configparser.c" /* yacc.c:1646 */ +#line 2816 "util/configparser.c" /* yacc.c:1646 */ break; - case 233: -#line 615 "util/configparser.y" /* yacc.c:1646 */ + case 234: +#line 619 "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 2799 "util/configparser.c" /* yacc.c:1646 */ +#line 2826 "util/configparser.c" /* yacc.c:1646 */ break; - case 234: -#line 622 "util/configparser.y" /* yacc.c:1646 */ + case 235: +#line 626 "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 2809 "util/configparser.c" /* yacc.c:1646 */ +#line 2836 "util/configparser.c" /* yacc.c:1646 */ break; - case 235: -#line 629 "util/configparser.y" /* yacc.c:1646 */ + case 236: +#line 633 "util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -2817,11 +2844,11 @@ yyreduce: else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2821 "util/configparser.c" /* yacc.c:1646 */ +#line 2848 "util/configparser.c" /* yacc.c:1646 */ break; - case 236: -#line 638 "util/configparser.y" /* yacc.c:1646 */ + case 237: +#line 642 "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) @@ -2829,11 +2856,11 @@ yyreduce: else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2833 "util/configparser.c" /* yacc.c:1646 */ +#line 2860 "util/configparser.c" /* yacc.c:1646 */ break; - case 237: -#line 647 "util/configparser.y" /* yacc.c:1646 */ + case 238: +#line 651 "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) @@ -2841,11 +2868,11 @@ yyreduce: else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2845 "util/configparser.c" /* yacc.c:1646 */ +#line 2872 "util/configparser.c" /* yacc.c:1646 */ break; - case 238: -#line 656 "util/configparser.y" /* yacc.c:1646 */ + case 239: +#line 660 "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) @@ -2858,11 +2885,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 2862 "util/configparser.c" /* yacc.c:1646 */ +#line 2889 "util/configparser.c" /* yacc.c:1646 */ break; - case 239: -#line 670 "util/configparser.y" /* yacc.c:1646 */ + case 240: +#line 674 "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) @@ -2870,11 +2897,11 @@ yyreduce: else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2874 "util/configparser.c" /* yacc.c:1646 */ +#line 2901 "util/configparser.c" /* yacc.c:1646 */ break; - case 240: -#line 679 "util/configparser.y" /* yacc.c:1646 */ + case 241: +#line 683 "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) @@ -2882,11 +2909,11 @@ yyreduce: else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2886 "util/configparser.c" /* yacc.c:1646 */ +#line 2913 "util/configparser.c" /* yacc.c:1646 */ break; - case 241: -#line 688 "util/configparser.y" /* yacc.c:1646 */ + case 242: +#line 692 "util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2894,31 +2921,31 @@ yyreduce: else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2898 "util/configparser.c" /* yacc.c:1646 */ +#line 2925 "util/configparser.c" /* yacc.c:1646 */ break; - case 242: -#line 697 "util/configparser.y" /* yacc.c:1646 */ + case 243: +#line 701 "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 2908 "util/configparser.c" /* yacc.c:1646 */ +#line 2935 "util/configparser.c" /* yacc.c:1646 */ break; - case 243: -#line 704 "util/configparser.y" /* yacc.c:1646 */ + case 244: +#line 708 "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 2918 "util/configparser.c" /* yacc.c:1646 */ +#line 2945 "util/configparser.c" /* yacc.c:1646 */ break; - case 244: -#line 711 "util/configparser.y" /* yacc.c:1646 */ + case 245: +#line 715 "util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->directory); @@ -2943,105 +2970,105 @@ yyreduce: } } } -#line 2947 "util/configparser.c" /* yacc.c:1646 */ +#line 2974 "util/configparser.c" /* yacc.c:1646 */ break; - case 245: -#line 737 "util/configparser.y" /* yacc.c:1646 */ + case 246: +#line 741 "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 2958 "util/configparser.c" /* yacc.c:1646 */ +#line 2985 "util/configparser.c" /* yacc.c:1646 */ break; - case 246: -#line 745 "util/configparser.y" /* yacc.c:1646 */ + case 247: +#line 749 "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 2968 "util/configparser.c" /* yacc.c:1646 */ +#line 2995 "util/configparser.c" /* yacc.c:1646 */ break; - case 247: -#line 752 "util/configparser.y" /* yacc.c:1646 */ + case 248: +#line 756 "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 2978 "util/configparser.c" /* yacc.c:1646 */ +#line 3005 "util/configparser.c" /* yacc.c:1646 */ break; - case 248: -#line 759 "util/configparser.y" /* yacc.c:1646 */ + case 249: +#line 763 "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 2988 "util/configparser.c" /* yacc.c:1646 */ +#line 3015 "util/configparser.c" /* yacc.c:1646 */ break; - case 249: -#line 766 "util/configparser.y" /* yacc.c:1646 */ + case 250: +#line 770 "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 2998 "util/configparser.c" /* yacc.c:1646 */ +#line 3025 "util/configparser.c" /* yacc.c:1646 */ break; - case 250: -#line 773 "util/configparser.y" /* yacc.c:1646 */ + case 251: +#line 777 "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 3009 "util/configparser.c" /* yacc.c:1646 */ +#line 3036 "util/configparser.c" /* yacc.c:1646 */ break; - case 251: -#line 781 "util/configparser.y" /* yacc.c:1646 */ + case 252: +#line 785 "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 3020 "util/configparser.c" /* yacc.c:1646 */ +#line 3047 "util/configparser.c" /* yacc.c:1646 */ break; - case 252: -#line 789 "util/configparser.y" /* yacc.c:1646 */ + case 253: +#line 793 "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 3031 "util/configparser.c" /* yacc.c:1646 */ +#line 3058 "util/configparser.c" /* yacc.c:1646 */ break; - case 253: -#line 797 "util/configparser.y" /* yacc.c:1646 */ + case 254: +#line 801 "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 3041 "util/configparser.c" /* yacc.c:1646 */ +#line 3068 "util/configparser.c" /* yacc.c:1646 */ break; - case 254: -#line 804 "util/configparser.y" /* yacc.c:1646 */ + case 255: +#line 808 "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) @@ -3051,21 +3078,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3055 "util/configparser.c" /* yacc.c:1646 */ +#line 3082 "util/configparser.c" /* yacc.c:1646 */ break; - case 255: -#line 815 "util/configparser.y" /* yacc.c:1646 */ + case 256: +#line 819 "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 3065 "util/configparser.c" /* yacc.c:1646 */ +#line 3092 "util/configparser.c" /* yacc.c:1646 */ break; - case 256: -#line 822 "util/configparser.y" /* yacc.c:1646 */ + case 257: +#line 826 "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) @@ -3073,11 +3100,11 @@ yyreduce: else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3077 "util/configparser.c" /* yacc.c:1646 */ +#line 3104 "util/configparser.c" /* yacc.c:1646 */ break; - case 257: -#line 831 "util/configparser.y" /* yacc.c:1646 */ + case 258: +#line 835 "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) @@ -3085,11 +3112,11 @@ yyreduce: else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3089 "util/configparser.c" /* yacc.c:1646 */ +#line 3116 "util/configparser.c" /* yacc.c:1646 */ break; - case 258: -#line 840 "util/configparser.y" /* yacc.c:1646 */ + case 259: +#line 844 "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) @@ -3097,53 +3124,53 @@ yyreduce: else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3101 "util/configparser.c" /* yacc.c:1646 */ +#line 3128 "util/configparser.c" /* yacc.c:1646 */ break; - case 259: -#line 849 "util/configparser.y" /* yacc.c:1646 */ + case 260: +#line 853 "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 3111 "util/configparser.c" /* yacc.c:1646 */ +#line 3138 "util/configparser.c" /* yacc.c:1646 */ break; - case 260: -#line 856 "util/configparser.y" /* yacc.c:1646 */ + case 261: +#line 860 "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 3121 "util/configparser.c" /* yacc.c:1646 */ +#line 3148 "util/configparser.c" /* yacc.c:1646 */ break; - case 261: -#line 863 "util/configparser.y" /* yacc.c:1646 */ + case 262: +#line 867 "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 3132 "util/configparser.c" /* yacc.c:1646 */ +#line 3159 "util/configparser.c" /* yacc.c:1646 */ break; - case 262: -#line 871 "util/configparser.y" /* yacc.c:1646 */ + case 263: +#line 875 "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 3143 "util/configparser.c" /* yacc.c:1646 */ +#line 3170 "util/configparser.c" /* yacc.c:1646 */ break; - case 263: -#line 879 "util/configparser.y" /* yacc.c:1646 */ + case 264: +#line 883 "util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3152,11 +3179,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3156 "util/configparser.c" /* yacc.c:1646 */ +#line 3183 "util/configparser.c" /* yacc.c:1646 */ break; - case 264: -#line 889 "util/configparser.y" /* yacc.c:1646 */ + case 265: +#line 893 "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) @@ -3165,11 +3192,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3169 "util/configparser.c" /* yacc.c:1646 */ +#line 3196 "util/configparser.c" /* yacc.c:1646 */ break; - case 265: -#line 899 "util/configparser.y" /* yacc.c:1646 */ + case 266: +#line 903 "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) @@ -3178,11 +3205,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3182 "util/configparser.c" /* yacc.c:1646 */ +#line 3209 "util/configparser.c" /* yacc.c:1646 */ break; - case 266: -#line 909 "util/configparser.y" /* yacc.c:1646 */ + case 267: +#line 913 "util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3194,11 +3221,11 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3198 "util/configparser.c" /* yacc.c:1646 */ +#line 3225 "util/configparser.c" /* yacc.c:1646 */ break; - case 267: -#line 922 "util/configparser.y" /* yacc.c:1646 */ + case 268: +#line 926 "util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3208,22 +3235,22 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3212 "util/configparser.c" /* yacc.c:1646 */ +#line 3239 "util/configparser.c" /* yacc.c:1646 */ break; - case 268: -#line 933 "util/configparser.y" /* yacc.c:1646 */ + case 269: +#line 937 "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 3223 "util/configparser.c" /* yacc.c:1646 */ +#line 3250 "util/configparser.c" /* yacc.c:1646 */ break; - case 269: -#line 941 "util/configparser.y" /* yacc.c:1646 */ + case 270: +#line 945 "util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3235,11 +3262,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 3239 "util/configparser.c" /* yacc.c:1646 */ +#line 3266 "util/configparser.c" /* yacc.c:1646 */ break; - case 270: -#line 954 "util/configparser.y" /* yacc.c:1646 */ + case 271: +#line 958 "util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3247,11 +3274,11 @@ yyreduce: else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3251 "util/configparser.c" /* yacc.c:1646 */ +#line 3278 "util/configparser.c" /* yacc.c:1646 */ break; - case 271: -#line 963 "util/configparser.y" /* yacc.c:1646 */ + case 272: +#line 967 "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) @@ -3259,11 +3286,11 @@ yyreduce: else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3263 "util/configparser.c" /* yacc.c:1646 */ +#line 3290 "util/configparser.c" /* yacc.c:1646 */ break; - case 272: -#line 972 "util/configparser.y" /* yacc.c:1646 */ + case 273: +#line 976 "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) @@ -3271,11 +3298,11 @@ yyreduce: else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3275 "util/configparser.c" /* yacc.c:1646 */ +#line 3302 "util/configparser.c" /* yacc.c:1646 */ break; - case 273: -#line 981 "util/configparser.y" /* yacc.c:1646 */ + case 274: +#line 985 "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) @@ -3284,11 +3311,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3288 "util/configparser.c" /* yacc.c:1646 */ +#line 3315 "util/configparser.c" /* yacc.c:1646 */ break; - case 274: -#line 991 "util/configparser.y" /* yacc.c:1646 */ + case 275: +#line 995 "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) @@ -3297,22 +3324,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3301 "util/configparser.c" /* yacc.c:1646 */ +#line 3328 "util/configparser.c" /* yacc.c:1646 */ break; - case 275: -#line 1001 "util/configparser.y" /* yacc.c:1646 */ + case 276: +#line 1005 "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 3312 "util/configparser.c" /* yacc.c:1646 */ +#line 3339 "util/configparser.c" /* yacc.c:1646 */ break; - case 276: -#line 1009 "util/configparser.y" /* yacc.c:1646 */ + case 277: +#line 1013 "util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3324,11 +3351,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 3328 "util/configparser.c" /* yacc.c:1646 */ +#line 3355 "util/configparser.c" /* yacc.c:1646 */ break; - case 277: -#line 1022 "util/configparser.y" /* yacc.c:1646 */ + case 278: +#line 1026 "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) @@ -3336,22 +3363,22 @@ yyreduce: else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3340 "util/configparser.c" /* yacc.c:1646 */ +#line 3367 "util/configparser.c" /* yacc.c:1646 */ break; - case 278: -#line 1031 "util/configparser.y" /* yacc.c:1646 */ + case 279: +#line 1035 "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 3351 "util/configparser.c" /* yacc.c:1646 */ +#line 3378 "util/configparser.c" /* yacc.c:1646 */ break; - case 279: -#line 1039 "util/configparser.y" /* yacc.c:1646 */ + case 280: +#line 1043 "util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3359,22 +3386,22 @@ yyreduce: else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3363 "util/configparser.c" /* yacc.c:1646 */ +#line 3390 "util/configparser.c" /* yacc.c:1646 */ break; - case 280: -#line 1048 "util/configparser.y" /* yacc.c:1646 */ + case 281: +#line 1052 "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 3374 "util/configparser.c" /* yacc.c:1646 */ +#line 3401 "util/configparser.c" /* yacc.c:1646 */ break; - case 281: -#line 1056 "util/configparser.y" /* yacc.c:1646 */ + case 282: +#line 1060 "util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3386,11 +3413,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 3390 "util/configparser.c" /* yacc.c:1646 */ +#line 3417 "util/configparser.c" /* yacc.c:1646 */ break; - case 282: -#line 1069 "util/configparser.y" /* yacc.c:1646 */ + case 283: +#line 1073 "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) @@ -3398,21 +3425,21 @@ yyreduce: else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3402 "util/configparser.c" /* yacc.c:1646 */ +#line 3429 "util/configparser.c" /* yacc.c:1646 */ break; - case 283: -#line 1078 "util/configparser.y" /* yacc.c:1646 */ + case 284: +#line 1082 "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 3412 "util/configparser.c" /* yacc.c:1646 */ +#line 3439 "util/configparser.c" /* yacc.c:1646 */ break; - case 284: -#line 1085 "util/configparser.y" /* yacc.c:1646 */ + case 285: +#line 1089 "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) @@ -3421,11 +3448,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3425 "util/configparser.c" /* yacc.c:1646 */ +#line 3452 "util/configparser.c" /* yacc.c:1646 */ break; - case 285: -#line 1095 "util/configparser.y" /* yacc.c:1646 */ + case 286: +#line 1099 "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) @@ -3434,11 +3461,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3438 "util/configparser.c" /* yacc.c:1646 */ +#line 3465 "util/configparser.c" /* yacc.c:1646 */ break; - case 286: -#line 1105 "util/configparser.y" /* yacc.c:1646 */ + case 287: +#line 1109 "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) @@ -3447,11 +3474,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3451 "util/configparser.c" /* yacc.c:1646 */ +#line 3478 "util/configparser.c" /* yacc.c:1646 */ break; - case 287: -#line 1115 "util/configparser.y" /* yacc.c:1646 */ + case 288: +#line 1119 "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) @@ -3460,11 +3487,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3464 "util/configparser.c" /* yacc.c:1646 */ +#line 3491 "util/configparser.c" /* yacc.c:1646 */ break; - case 288: -#line 1125 "util/configparser.y" /* yacc.c:1646 */ + case 289: +#line 1129 "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) @@ -3473,11 +3500,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3477 "util/configparser.c" /* yacc.c:1646 */ +#line 3504 "util/configparser.c" /* yacc.c:1646 */ break; - case 289: -#line 1135 "util/configparser.y" /* yacc.c:1646 */ + case 290: +#line 1139 "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) @@ -3486,11 +3513,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3490 "util/configparser.c" /* yacc.c:1646 */ +#line 3517 "util/configparser.c" /* yacc.c:1646 */ break; - case 290: -#line 1145 "util/configparser.y" /* yacc.c:1646 */ + case 291: +#line 1149 "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) @@ -3499,11 +3526,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3503 "util/configparser.c" /* yacc.c:1646 */ +#line 3530 "util/configparser.c" /* yacc.c:1646 */ break; - case 291: -#line 1155 "util/configparser.y" /* yacc.c:1646 */ + case 292: +#line 1159 "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) @@ -3512,41 +3539,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3516 "util/configparser.c" /* yacc.c:1646 */ +#line 3543 "util/configparser.c" /* yacc.c:1646 */ break; - case 292: -#line 1165 "util/configparser.y" /* yacc.c:1646 */ + case 293: +#line 1169 "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 3526 "util/configparser.c" /* yacc.c:1646 */ +#line 3553 "util/configparser.c" /* yacc.c:1646 */ break; - case 293: -#line 1172 "util/configparser.y" /* yacc.c:1646 */ + case 294: +#line 1176 "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 3536 "util/configparser.c" /* yacc.c:1646 */ +#line 3563 "util/configparser.c" /* yacc.c:1646 */ break; - case 294: -#line 1179 "util/configparser.y" /* yacc.c:1646 */ + case 295: +#line 1183 "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 3546 "util/configparser.c" /* yacc.c:1646 */ +#line 3573 "util/configparser.c" /* yacc.c:1646 */ break; - case 295: -#line 1186 "util/configparser.y" /* yacc.c:1646 */ + case 296: +#line 1190 "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) @@ -3554,11 +3581,11 @@ yyreduce: else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3558 "util/configparser.c" /* yacc.c:1646 */ +#line 3585 "util/configparser.c" /* yacc.c:1646 */ break; - case 296: -#line 1195 "util/configparser.y" /* yacc.c:1646 */ + case 297: +#line 1199 "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) @@ -3566,11 +3593,11 @@ yyreduce: else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3570 "util/configparser.c" /* yacc.c:1646 */ +#line 3597 "util/configparser.c" /* yacc.c:1646 */ break; - case 297: -#line 1204 "util/configparser.y" /* yacc.c:1646 */ + case 298: +#line 1208 "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) @@ -3578,21 +3605,21 @@ yyreduce: else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3582 "util/configparser.c" /* yacc.c:1646 */ +#line 3609 "util/configparser.c" /* yacc.c:1646 */ break; - case 298: -#line 1213 "util/configparser.y" /* yacc.c:1646 */ + case 299: +#line 1217 "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 3592 "util/configparser.c" /* yacc.c:1646 */ +#line 3619 "util/configparser.c" /* yacc.c:1646 */ break; - case 299: -#line 1220 "util/configparser.y" /* yacc.c:1646 */ + case 300: +#line 1224 "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) @@ -3601,11 +3628,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3605 "util/configparser.c" /* yacc.c:1646 */ +#line 3632 "util/configparser.c" /* yacc.c:1646 */ break; - case 300: -#line 1230 "util/configparser.y" /* yacc.c:1646 */ + case 301: +#line 1234 "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 && @@ -3621,21 +3648,21 @@ yyreduce: fatal_exit("out of memory adding acl"); } } -#line 3625 "util/configparser.c" /* yacc.c:1646 */ +#line 3652 "util/configparser.c" /* yacc.c:1646 */ break; - case 301: -#line 1247 "util/configparser.y" /* yacc.c:1646 */ + case 302: +#line 1251 "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 3635 "util/configparser.c" /* yacc.c:1646 */ +#line 3662 "util/configparser.c" /* yacc.c:1646 */ break; - case 302: -#line 1254 "util/configparser.y" /* yacc.c:1646 */ + case 303: +#line 1258 "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) { @@ -3652,11 +3679,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 3656 "util/configparser.c" /* yacc.c:1646 */ +#line 3683 "util/configparser.c" /* yacc.c:1646 */ break; - case 303: -#line 1272 "util/configparser.y" /* yacc.c:1646 */ + case 304: +#line 1276 "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) { @@ -3668,11 +3695,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 3672 "util/configparser.c" /* yacc.c:1646 */ +#line 3699 "util/configparser.c" /* yacc.c:1646 */ break; - case 304: -#line 1285 "util/configparser.y" /* yacc.c:1646 */ + case 305: +#line 1289 "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) { @@ -3684,11 +3711,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 3688 "util/configparser.c" /* yacc.c:1646 */ +#line 3715 "util/configparser.c" /* yacc.c:1646 */ break; - case 305: -#line 1298 "util/configparser.y" /* yacc.c:1646 */ + case 306: +#line 1302 "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) @@ -3696,11 +3723,11 @@ yyreduce: else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3700 "util/configparser.c" /* yacc.c:1646 */ +#line 3727 "util/configparser.c" /* yacc.c:1646 */ break; - case 306: -#line 1307 "util/configparser.y" /* yacc.c:1646 */ + case 307: +#line 1311 "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) @@ -3708,11 +3735,11 @@ yyreduce: else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3712 "util/configparser.c" /* yacc.c:1646 */ +#line 3739 "util/configparser.c" /* yacc.c:1646 */ break; - case 307: -#line 1316 "util/configparser.y" /* yacc.c:1646 */ + case 308: +#line 1320 "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) @@ -3720,11 +3747,11 @@ yyreduce: else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3724 "util/configparser.c" /* yacc.c:1646 */ +#line 3751 "util/configparser.c" /* yacc.c:1646 */ break; - case 308: -#line 1325 "util/configparser.y" /* yacc.c:1646 */ + case 309: +#line 1329 "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) @@ -3732,11 +3759,11 @@ yyreduce: else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3736 "util/configparser.c" /* yacc.c:1646 */ +#line 3763 "util/configparser.c" /* yacc.c:1646 */ break; - case 309: -#line 1334 "util/configparser.y" /* yacc.c:1646 */ + case 310: +#line 1338 "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) @@ -3745,11 +3772,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3749 "util/configparser.c" /* yacc.c:1646 */ +#line 3776 "util/configparser.c" /* yacc.c:1646 */ break; - case 310: -#line 1344 "util/configparser.y" /* yacc.c:1646 */ + case 311: +#line 1348 "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) @@ -3758,11 +3785,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3762 "util/configparser.c" /* yacc.c:1646 */ +#line 3789 "util/configparser.c" /* yacc.c:1646 */ break; - case 311: -#line 1354 "util/configparser.y" /* yacc.c:1646 */ + case 312: +#line 1358 "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) @@ -3770,11 +3797,11 @@ yyreduce: else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3774 "util/configparser.c" /* yacc.c:1646 */ +#line 3801 "util/configparser.c" /* yacc.c:1646 */ break; - case 312: -#line 1363 "util/configparser.y" /* yacc.c:1646 */ + case 313: +#line 1367 "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) @@ -3782,11 +3809,11 @@ yyreduce: else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3786 "util/configparser.c" /* yacc.c:1646 */ +#line 3813 "util/configparser.c" /* yacc.c:1646 */ break; - case 313: -#line 1372 "util/configparser.y" /* yacc.c:1646 */ + case 314: +#line 1376 "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) @@ -3798,11 +3825,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3802 "util/configparser.c" /* yacc.c:1646 */ +#line 3829 "util/configparser.c" /* yacc.c:1646 */ break; - case 314: -#line 1385 "util/configparser.y" /* yacc.c:1646 */ + case 315: +#line 1389 "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) @@ -3814,11 +3841,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3818 "util/configparser.c" /* yacc.c:1646 */ +#line 3845 "util/configparser.c" /* yacc.c:1646 */ break; - case 315: -#line 1398 "util/configparser.y" /* yacc.c:1646 */ + case 316: +#line 1402 "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) @@ -3826,21 +3853,21 @@ yyreduce: else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3830 "util/configparser.c" /* yacc.c:1646 */ +#line 3857 "util/configparser.c" /* yacc.c:1646 */ break; - case 316: -#line 1407 "util/configparser.y" /* yacc.c:1646 */ + case 317: +#line 1411 "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 3840 "util/configparser.c" /* yacc.c:1646 */ +#line 3867 "util/configparser.c" /* yacc.c:1646 */ break; - case 317: -#line 1414 "util/configparser.y" /* yacc.c:1646 */ + case 318: +#line 1418 "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) @@ -3848,11 +3875,11 @@ yyreduce: else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3852 "util/configparser.c" /* yacc.c:1646 */ +#line 3879 "util/configparser.c" /* yacc.c:1646 */ break; - case 318: -#line 1423 "util/configparser.y" /* yacc.c:1646 */ + case 319: +#line 1427 "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) @@ -3860,11 +3887,11 @@ yyreduce: else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3864 "util/configparser.c" /* yacc.c:1646 */ +#line 3891 "util/configparser.c" /* yacc.c:1646 */ break; - case 319: -#line 1432 "util/configparser.y" /* yacc.c:1646 */ + case 320: +#line 1436 "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) @@ -3872,11 +3899,11 @@ yyreduce: else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3876 "util/configparser.c" /* yacc.c:1646 */ +#line 3903 "util/configparser.c" /* yacc.c:1646 */ break; - case 320: -#line 1441 "util/configparser.y" /* yacc.c:1646 */ + case 321: +#line 1445 "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) @@ -3885,22 +3912,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3889 "util/configparser.c" /* yacc.c:1646 */ +#line 3916 "util/configparser.c" /* yacc.c:1646 */ break; - case 321: -#line 1450 "util/configparser.y" /* yacc.c:1646 */ + case 322: +#line 1454 "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 3900 "util/configparser.c" /* yacc.c:1646 */ +#line 3927 "util/configparser.c" /* yacc.c:1646 */ break; - case 322: -#line 1458 "util/configparser.y" /* yacc.c:1646 */ + case 323: +#line 1462 "util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3912,22 +3939,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 3916 "util/configparser.c" /* yacc.c:1646 */ +#line 3943 "util/configparser.c" /* yacc.c:1646 */ break; - case 323: -#line 1471 "util/configparser.y" /* yacc.c:1646 */ + case 324: +#line 1475 "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 3927 "util/configparser.c" /* yacc.c:1646 */ +#line 3954 "util/configparser.c" /* yacc.c:1646 */ break; - case 324: -#line 1479 "util/configparser.y" /* yacc.c:1646 */ + case 325: +#line 1483 "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 && @@ -3954,21 +3981,21 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 3958 "util/configparser.c" /* yacc.c:1646 */ +#line 3985 "util/configparser.c" /* yacc.c:1646 */ break; - case 325: -#line 1507 "util/configparser.y" /* yacc.c:1646 */ + case 326: +#line 1511 "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 3968 "util/configparser.c" /* yacc.c:1646 */ +#line 3995 "util/configparser.c" /* yacc.c:1646 */ break; - case 326: -#line 1514 "util/configparser.y" /* yacc.c:1646 */ + case 327: +#line 1518 "util/configparser.y" /* yacc.c:1646 */ { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -3982,11 +4009,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 3986 "util/configparser.c" /* yacc.c:1646 */ +#line 4013 "util/configparser.c" /* yacc.c:1646 */ break; - case 327: -#line 1529 "util/configparser.y" /* yacc.c:1646 */ + case 328: +#line 1533 "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) @@ -3995,11 +4022,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3999 "util/configparser.c" /* yacc.c:1646 */ +#line 4026 "util/configparser.c" /* yacc.c:1646 */ break; - case 328: -#line 1539 "util/configparser.y" /* yacc.c:1646 */ + case 329: +#line 1543 "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) @@ -4008,31 +4035,31 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4012 "util/configparser.c" /* yacc.c:1646 */ +#line 4039 "util/configparser.c" /* yacc.c:1646 */ break; - case 329: -#line 1549 "util/configparser.y" /* yacc.c:1646 */ + case 330: +#line 1553 "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 4022 "util/configparser.c" /* yacc.c:1646 */ +#line 4049 "util/configparser.c" /* yacc.c:1646 */ break; - case 330: -#line 1556 "util/configparser.y" /* yacc.c:1646 */ + case 331: +#line 1560 "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 4032 "util/configparser.c" /* yacc.c:1646 */ +#line 4059 "util/configparser.c" /* yacc.c:1646 */ break; - case 331: -#line 1563 "util/configparser.y" /* yacc.c:1646 */ + case 332: +#line 1567 "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) @@ -4040,11 +4067,11 @@ yyreduce: else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4044 "util/configparser.c" /* yacc.c:1646 */ +#line 4071 "util/configparser.c" /* yacc.c:1646 */ break; - case 332: -#line 1572 "util/configparser.y" /* yacc.c:1646 */ + case 333: +#line 1576 "util/configparser.y" /* yacc.c:1646 */ { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); @@ -4057,11 +4084,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4061 "util/configparser.c" /* yacc.c:1646 */ +#line 4088 "util/configparser.c" /* yacc.c:1646 */ break; - case 333: -#line 1586 "util/configparser.y" /* yacc.c:1646 */ + case 334: +#line 1590 "util/configparser.y" /* yacc.c:1646 */ { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -4079,11 +4106,11 @@ yyreduce: } } } -#line 4083 "util/configparser.c" /* yacc.c:1646 */ +#line 4110 "util/configparser.c" /* yacc.c:1646 */ break; - case 334: -#line 1605 "util/configparser.y" /* yacc.c:1646 */ + case 335: +#line 1609 "util/configparser.y" /* yacc.c:1646 */ { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -4101,11 +4128,11 @@ yyreduce: } } } -#line 4105 "util/configparser.c" /* yacc.c:1646 */ +#line 4132 "util/configparser.c" /* yacc.c:1646 */ break; - case 335: -#line 1624 "util/configparser.y" /* yacc.c:1646 */ + case 336: +#line 1628 "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, @@ -4116,11 +4143,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 4120 "util/configparser.c" /* yacc.c:1646 */ +#line 4147 "util/configparser.c" /* yacc.c:1646 */ break; - case 336: -#line 1636 "util/configparser.y" /* yacc.c:1646 */ + case 337: +#line 1640 "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, @@ -4131,11 +4158,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 4135 "util/configparser.c" /* yacc.c:1646 */ +#line 4162 "util/configparser.c" /* yacc.c:1646 */ break; - case 337: -#line 1648 "util/configparser.y" /* yacc.c:1646 */ + case 338: +#line 1652 "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, @@ -4146,11 +4173,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 4150 "util/configparser.c" /* yacc.c:1646 */ +#line 4177 "util/configparser.c" /* yacc.c:1646 */ break; - case 338: -#line 1660 "util/configparser.y" /* yacc.c:1646 */ + case 339: +#line 1664 "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, @@ -4160,11 +4187,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 4164 "util/configparser.c" /* yacc.c:1646 */ +#line 4191 "util/configparser.c" /* yacc.c:1646 */ break; - case 339: -#line 1671 "util/configparser.y" /* yacc.c:1646 */ + case 340: +#line 1675 "util/configparser.y" /* yacc.c:1646 */ { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -4182,11 +4209,11 @@ yyreduce: } } } -#line 4186 "util/configparser.c" /* yacc.c:1646 */ +#line 4213 "util/configparser.c" /* yacc.c:1646 */ break; - case 340: -#line 1690 "util/configparser.y" /* yacc.c:1646 */ + case 341: +#line 1694 "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) @@ -4194,11 +4221,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4198 "util/configparser.c" /* yacc.c:1646 */ +#line 4225 "util/configparser.c" /* yacc.c:1646 */ break; - case 341: -#line 1700 "util/configparser.y" /* yacc.c:1646 */ + case 342: +#line 1704 "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) @@ -4206,33 +4233,33 @@ yyreduce: else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4210 "util/configparser.c" /* yacc.c:1646 */ +#line 4237 "util/configparser.c" /* yacc.c:1646 */ break; - case 342: -#line 1709 "util/configparser.y" /* yacc.c:1646 */ + case 343: +#line 1713 "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 4221 "util/configparser.c" /* yacc.c:1646 */ +#line 4248 "util/configparser.c" /* yacc.c:1646 */ break; - case 343: -#line 1717 "util/configparser.y" /* yacc.c:1646 */ + case 344: +#line 1721 "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 4232 "util/configparser.c" /* yacc.c:1646 */ +#line 4259 "util/configparser.c" /* yacc.c:1646 */ break; - case 344: -#line 1725 "util/configparser.y" /* yacc.c:1646 */ + case 345: +#line 1729 "util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4244,11 +4271,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4248 "util/configparser.c" /* yacc.c:1646 */ +#line 4275 "util/configparser.c" /* yacc.c:1646 */ break; - case 345: -#line 1738 "util/configparser.y" /* yacc.c:1646 */ + case 346: +#line 1742 "util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4260,11 +4287,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4264 "util/configparser.c" /* yacc.c:1646 */ +#line 4291 "util/configparser.c" /* yacc.c:1646 */ break; - case 346: -#line 1751 "util/configparser.y" /* yacc.c:1646 */ + case 347: +#line 1755 "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) { @@ -4276,11 +4303,11 @@ yyreduce: "ratelimit-for-domain"); } } -#line 4280 "util/configparser.c" /* yacc.c:1646 */ +#line 4307 "util/configparser.c" /* yacc.c:1646 */ break; - case 347: -#line 1764 "util/configparser.y" /* yacc.c:1646 */ + case 348: +#line 1768 "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) { @@ -4292,11 +4319,11 @@ yyreduce: "ratelimit-below-domain"); } } -#line 4296 "util/configparser.c" /* yacc.c:1646 */ +#line 4323 "util/configparser.c" /* yacc.c:1646 */ break; - case 348: -#line 1777 "util/configparser.y" /* yacc.c:1646 */ + case 349: +#line 1781 "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) @@ -4304,11 +4331,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4308 "util/configparser.c" /* yacc.c:1646 */ +#line 4335 "util/configparser.c" /* yacc.c:1646 */ break; - case 349: -#line 1786 "util/configparser.y" /* yacc.c:1646 */ + case 350: +#line 1790 "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) @@ -4316,11 +4343,11 @@ yyreduce: else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4320 "util/configparser.c" /* yacc.c:1646 */ +#line 4347 "util/configparser.c" /* yacc.c:1646 */ break; - case 350: -#line 1795 "util/configparser.y" /* yacc.c:1646 */ + case 351: +#line 1799 "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) @@ -4329,11 +4356,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4333 "util/configparser.c" /* yacc.c:1646 */ +#line 4360 "util/configparser.c" /* yacc.c:1646 */ break; - case 351: -#line 1805 "util/configparser.y" /* yacc.c:1646 */ + case 352: +#line 1809 "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) @@ -4342,11 +4369,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4346 "util/configparser.c" /* yacc.c:1646 */ +#line 4373 "util/configparser.c" /* yacc.c:1646 */ break; - case 352: -#line 1815 "util/configparser.y" /* yacc.c:1646 */ + case 353: +#line 1819 "util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); @@ -4358,11 +4385,11 @@ yyreduce: OUTYY(("P(Compiled without IPsec module, ignoring)\n")); #endif } -#line 4362 "util/configparser.c" /* yacc.c:1646 */ +#line 4389 "util/configparser.c" /* yacc.c:1646 */ break; - case 353: -#line 1828 "util/configparser.y" /* yacc.c:1646 */ + case 354: +#line 1832 "util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); @@ -4374,11 +4401,11 @@ yyreduce: OUTYY(("P(Compiled without IPsec module, ignoring)\n")); #endif } -#line 4378 "util/configparser.c" /* yacc.c:1646 */ +#line 4405 "util/configparser.c" /* yacc.c:1646 */ break; - case 354: -#line 1841 "util/configparser.y" /* yacc.c:1646 */ + case 355: +#line 1845 "util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); @@ -4388,11 +4415,11 @@ yyreduce: OUTYY(("P(Compiled without IPsec module, ignoring)\n")); #endif } -#line 4392 "util/configparser.c" /* yacc.c:1646 */ +#line 4419 "util/configparser.c" /* yacc.c:1646 */ break; - case 355: -#line 1852 "util/configparser.y" /* yacc.c:1646 */ + case 356: +#line 1856 "util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); @@ -4404,11 +4431,11 @@ yyreduce: OUTYY(("P(Compiled without IPsec module, ignoring)\n")); #endif } -#line 4408 "util/configparser.c" /* yacc.c:1646 */ +#line 4435 "util/configparser.c" /* yacc.c:1646 */ break; - case 356: -#line 1865 "util/configparser.y" /* yacc.c:1646 */ + case 357: +#line 1869 "util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); @@ -4418,11 +4445,11 @@ yyreduce: OUTYY(("P(Compiled without IPsec module, ignoring)\n")); #endif } -#line 4422 "util/configparser.c" /* yacc.c:1646 */ +#line 4449 "util/configparser.c" /* yacc.c:1646 */ break; - case 357: -#line 1876 "util/configparser.y" /* yacc.c:1646 */ + case 358: +#line 1880 "util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); @@ -4434,11 +4461,11 @@ yyreduce: OUTYY(("P(Compiled without IPsec module, ignoring)\n")); #endif } -#line 4438 "util/configparser.c" /* yacc.c:1646 */ +#line 4465 "util/configparser.c" /* yacc.c:1646 */ break; - case 358: -#line 1889 "util/configparser.y" /* yacc.c:1646 */ + case 359: +#line 1893 "util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) @@ -4447,31 +4474,31 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 4451 "util/configparser.c" /* yacc.c:1646 */ +#line 4478 "util/configparser.c" /* yacc.c:1646 */ break; - case 359: -#line 1899 "util/configparser.y" /* yacc.c:1646 */ + case 360: +#line 1903 "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 4461 "util/configparser.c" /* yacc.c:1646 */ +#line 4488 "util/configparser.c" /* yacc.c:1646 */ break; - case 360: -#line 1906 "util/configparser.y" /* yacc.c:1646 */ + case 361: +#line 1910 "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 4471 "util/configparser.c" /* yacc.c:1646 */ +#line 4498 "util/configparser.c" /* yacc.c:1646 */ break; - case 361: -#line 1913 "util/configparser.y" /* yacc.c:1646 */ + case 362: +#line 1917 "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) @@ -4479,11 +4506,11 @@ yyreduce: else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4483 "util/configparser.c" /* yacc.c:1646 */ +#line 4510 "util/configparser.c" /* yacc.c:1646 */ break; - case 362: -#line 1922 "util/configparser.y" /* yacc.c:1646 */ + case 363: +#line 1926 "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) @@ -4492,11 +4519,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4496 "util/configparser.c" /* yacc.c:1646 */ +#line 4523 "util/configparser.c" /* yacc.c:1646 */ break; - case 363: -#line 1932 "util/configparser.y" /* yacc.c:1646 */ + case 364: +#line 1936 "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) @@ -4505,11 +4532,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4509 "util/configparser.c" /* yacc.c:1646 */ +#line 4536 "util/configparser.c" /* yacc.c:1646 */ break; - case 364: -#line 1942 "util/configparser.y" /* yacc.c:1646 */ + case 365: +#line 1946 "util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) @@ -4518,31 +4545,31 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 4522 "util/configparser.c" /* yacc.c:1646 */ +#line 4549 "util/configparser.c" /* yacc.c:1646 */ break; - case 365: -#line 1952 "util/configparser.y" /* yacc.c:1646 */ + case 366: +#line 1956 "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 4532 "util/configparser.c" /* yacc.c:1646 */ +#line 4559 "util/configparser.c" /* yacc.c:1646 */ break; - case 366: -#line 1959 "util/configparser.y" /* yacc.c:1646 */ + case 367: +#line 1963 "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 4542 "util/configparser.c" /* yacc.c:1646 */ +#line 4569 "util/configparser.c" /* yacc.c:1646 */ break; - case 367: -#line 1966 "util/configparser.y" /* yacc.c:1646 */ + case 368: +#line 1970 "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) @@ -4550,11 +4577,11 @@ yyreduce: else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4554 "util/configparser.c" /* yacc.c:1646 */ +#line 4581 "util/configparser.c" /* yacc.c:1646 */ break; - case 368: -#line 1975 "util/configparser.y" /* yacc.c:1646 */ + case 369: +#line 1979 "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) @@ -4563,11 +4590,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4567 "util/configparser.c" /* yacc.c:1646 */ +#line 4594 "util/configparser.c" /* yacc.c:1646 */ break; - case 369: -#line 1985 "util/configparser.y" /* yacc.c:1646 */ + case 370: +#line 1989 "util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) @@ -4576,11 +4603,11 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 4580 "util/configparser.c" /* yacc.c:1646 */ +#line 4607 "util/configparser.c" /* yacc.c:1646 */ break; - case 370: -#line 1995 "util/configparser.y" /* yacc.c:1646 */ + case 371: +#line 1999 "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 && @@ -4608,11 +4635,11 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 4612 "util/configparser.c" /* yacc.c:1646 */ +#line 4639 "util/configparser.c" /* yacc.c:1646 */ break; - case 371: -#line 2024 "util/configparser.y" /* yacc.c:1646 */ + case 372: +#line 2028 "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)); @@ -4621,22 +4648,22 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 4625 "util/configparser.c" /* yacc.c:1646 */ +#line 4652 "util/configparser.c" /* yacc.c:1646 */ break; - case 372: -#line 2034 "util/configparser.y" /* yacc.c:1646 */ + case 373: +#line 2038 "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 4636 "util/configparser.c" /* yacc.c:1646 */ +#line 4663 "util/configparser.c" /* yacc.c:1646 */ break; - case 373: -#line 2042 "util/configparser.y" /* yacc.c:1646 */ + case 374: +#line 2046 "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))) { @@ -4644,11 +4671,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 4648 "util/configparser.c" /* yacc.c:1646 */ +#line 4675 "util/configparser.c" /* yacc.c:1646 */ break; - case 374: -#line 2051 "util/configparser.y" /* yacc.c:1646 */ + case 375: +#line 2055 "util/configparser.y" /* yacc.c:1646 */ { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -4662,11 +4689,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 4666 "util/configparser.c" /* yacc.c:1646 */ +#line 4693 "util/configparser.c" /* yacc.c:1646 */ break; - case 375: -#line 2066 "util/configparser.y" /* yacc.c:1646 */ + case 376: +#line 2070 "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) @@ -4674,19 +4701,19 @@ yyreduce: else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4678 "util/configparser.c" /* yacc.c:1646 */ +#line 4705 "util/configparser.c" /* yacc.c:1646 */ break; - case 376: -#line 2075 "util/configparser.y" /* yacc.c:1646 */ + case 377: +#line 2079 "util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(remote-control:)\n")); } -#line 4686 "util/configparser.c" /* yacc.c:1646 */ +#line 4713 "util/configparser.c" /* yacc.c:1646 */ break; - case 387: -#line 2086 "util/configparser.y" /* yacc.c:1646 */ + case 388: +#line 2090 "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) @@ -4695,11 +4722,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4699 "util/configparser.c" /* yacc.c:1646 */ +#line 4726 "util/configparser.c" /* yacc.c:1646 */ break; - case 388: -#line 2096 "util/configparser.y" /* yacc.c:1646 */ + case 389: +#line 2100 "util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4707,21 +4734,21 @@ yyreduce: else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4711 "util/configparser.c" /* yacc.c:1646 */ +#line 4738 "util/configparser.c" /* yacc.c:1646 */ break; - case 389: -#line 2105 "util/configparser.y" /* yacc.c:1646 */ + case 390: +#line 2109 "util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->control_ifs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4721 "util/configparser.c" /* yacc.c:1646 */ +#line 4748 "util/configparser.c" /* yacc.c:1646 */ break; - case 390: -#line 2112 "util/configparser.y" /* yacc.c:1646 */ + case 391: +#line 2116 "util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4730,122 +4757,122 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4734 "util/configparser.c" /* yacc.c:1646 */ +#line 4761 "util/configparser.c" /* yacc.c:1646 */ break; - case 391: -#line 2122 "util/configparser.y" /* yacc.c:1646 */ + case 392: +#line 2126 "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 4744 "util/configparser.c" /* yacc.c:1646 */ +#line 4771 "util/configparser.c" /* yacc.c:1646 */ break; - case 392: -#line 2129 "util/configparser.y" /* yacc.c:1646 */ + case 393: +#line 2133 "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 4754 "util/configparser.c" /* yacc.c:1646 */ +#line 4781 "util/configparser.c" /* yacc.c:1646 */ break; - case 393: -#line 2136 "util/configparser.y" /* yacc.c:1646 */ + case 394: +#line 2140 "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 4764 "util/configparser.c" /* yacc.c:1646 */ +#line 4791 "util/configparser.c" /* yacc.c:1646 */ break; - case 394: -#line 2143 "util/configparser.y" /* yacc.c:1646 */ + case 395: +#line 2147 "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 4774 "util/configparser.c" /* yacc.c:1646 */ +#line 4801 "util/configparser.c" /* yacc.c:1646 */ break; - case 395: -#line 2150 "util/configparser.y" /* yacc.c:1646 */ + case 396: +#line 2154 "util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(dnstap:)\n")); } -#line 4782 "util/configparser.c" /* yacc.c:1646 */ +#line 4809 "util/configparser.c" /* yacc.c:1646 */ break; - case 410: -#line 2167 "util/configparser.y" /* yacc.c:1646 */ + case 411: +#line 2171 "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) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); } -#line 4793 "util/configparser.c" /* yacc.c:1646 */ +#line 4820 "util/configparser.c" /* yacc.c:1646 */ break; - case 411: -#line 2175 "util/configparser.y" /* yacc.c:1646 */ + case 412: +#line 2179 "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 4803 "util/configparser.c" /* yacc.c:1646 */ +#line 4830 "util/configparser.c" /* yacc.c:1646 */ break; - case 412: -#line 2182 "util/configparser.y" /* yacc.c:1646 */ + case 413: +#line 2186 "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) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); } -#line 4814 "util/configparser.c" /* yacc.c:1646 */ +#line 4841 "util/configparser.c" /* yacc.c:1646 */ break; - case 413: -#line 2190 "util/configparser.y" /* yacc.c:1646 */ + case 414: +#line 2194 "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) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); } -#line 4825 "util/configparser.c" /* yacc.c:1646 */ +#line 4852 "util/configparser.c" /* yacc.c:1646 */ break; - case 414: -#line 2198 "util/configparser.y" /* yacc.c:1646 */ + case 415: +#line 2202 "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 4835 "util/configparser.c" /* yacc.c:1646 */ +#line 4862 "util/configparser.c" /* yacc.c:1646 */ break; - case 415: -#line 2205 "util/configparser.y" /* yacc.c:1646 */ + case 416: +#line 2209 "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 4845 "util/configparser.c" /* yacc.c:1646 */ +#line 4872 "util/configparser.c" /* yacc.c:1646 */ break; - case 416: -#line 2212 "util/configparser.y" /* yacc.c:1646 */ + case 417: +#line 2216 "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) @@ -4853,11 +4880,11 @@ yyreduce: else cfg_parser->cfg->dnstap_log_resolver_query_messages = (strcmp((yyvsp[0].str), "yes")==0); } -#line 4857 "util/configparser.c" /* yacc.c:1646 */ +#line 4884 "util/configparser.c" /* yacc.c:1646 */ break; - case 417: -#line 2221 "util/configparser.y" /* yacc.c:1646 */ + case 418: +#line 2225 "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) @@ -4865,11 +4892,11 @@ yyreduce: else cfg_parser->cfg->dnstap_log_resolver_response_messages = (strcmp((yyvsp[0].str), "yes")==0); } -#line 4869 "util/configparser.c" /* yacc.c:1646 */ +#line 4896 "util/configparser.c" /* yacc.c:1646 */ break; - case 418: -#line 2230 "util/configparser.y" /* yacc.c:1646 */ + case 419: +#line 2234 "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) @@ -4877,11 +4904,11 @@ yyreduce: else cfg_parser->cfg->dnstap_log_client_query_messages = (strcmp((yyvsp[0].str), "yes")==0); } -#line 4881 "util/configparser.c" /* yacc.c:1646 */ +#line 4908 "util/configparser.c" /* yacc.c:1646 */ break; - case 419: -#line 2239 "util/configparser.y" /* yacc.c:1646 */ + case 420: +#line 2243 "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) @@ -4889,11 +4916,11 @@ yyreduce: else cfg_parser->cfg->dnstap_log_client_response_messages = (strcmp((yyvsp[0].str), "yes")==0); } -#line 4893 "util/configparser.c" /* yacc.c:1646 */ +#line 4920 "util/configparser.c" /* yacc.c:1646 */ break; - case 420: -#line 2248 "util/configparser.y" /* yacc.c:1646 */ + case 421: +#line 2252 "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) @@ -4901,11 +4928,11 @@ yyreduce: else cfg_parser->cfg->dnstap_log_forwarder_query_messages = (strcmp((yyvsp[0].str), "yes")==0); } -#line 4905 "util/configparser.c" /* yacc.c:1646 */ +#line 4932 "util/configparser.c" /* yacc.c:1646 */ break; - case 421: -#line 2257 "util/configparser.y" /* yacc.c:1646 */ + case 422: +#line 2261 "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) @@ -4913,29 +4940,29 @@ yyreduce: else cfg_parser->cfg->dnstap_log_forwarder_response_messages = (strcmp((yyvsp[0].str), "yes")==0); } -#line 4917 "util/configparser.c" /* yacc.c:1646 */ +#line 4944 "util/configparser.c" /* yacc.c:1646 */ break; - case 422: -#line 2266 "util/configparser.y" /* yacc.c:1646 */ + case 423: +#line 2270 "util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(python:)\n")); } -#line 4925 "util/configparser.c" /* yacc.c:1646 */ +#line 4952 "util/configparser.c" /* yacc.c:1646 */ break; - case 426: -#line 2275 "util/configparser.y" /* yacc.c:1646 */ + case 427: +#line 2279 "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 4935 "util/configparser.c" /* yacc.c:1646 */ +#line 4962 "util/configparser.c" /* yacc.c:1646 */ break; - case 427: -#line 2281 "util/configparser.y" /* yacc.c:1646 */ + case 428: +#line 2285 "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) @@ -4944,21 +4971,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4948 "util/configparser.c" /* yacc.c:1646 */ +#line 4975 "util/configparser.c" /* yacc.c:1646 */ break; - case 428: -#line 2291 "util/configparser.y" /* yacc.c:1646 */ + case 429: +#line 2295 "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 4958 "util/configparser.c" /* yacc.c:1646 */ +#line 4985 "util/configparser.c" /* yacc.c:1646 */ break; - case 429: -#line 2298 "util/configparser.y" /* yacc.c:1646 */ + case 430: +#line 2302 "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)); @@ -4966,31 +4993,31 @@ yyreduce: (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 4970 "util/configparser.c" /* yacc.c:1646 */ +#line 4997 "util/configparser.c" /* yacc.c:1646 */ break; - case 430: -#line 2307 "util/configparser.y" /* yacc.c:1646 */ + case 431: +#line 2311 "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 4981 "util/configparser.c" /* yacc.c:1646 */ +#line 5008 "util/configparser.c" /* yacc.c:1646 */ break; - case 431: -#line 2315 "util/configparser.y" /* yacc.c:1646 */ + case 432: +#line 2319 "util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(dnscrypt:)\n")); OUTYY(("\nP(dnscrypt:)\n")); } -#line 4990 "util/configparser.c" /* yacc.c:1646 */ +#line 5017 "util/configparser.c" /* yacc.c:1646 */ break; - case 439: -#line 2327 "util/configparser.y" /* yacc.c:1646 */ + case 442: +#line 2333 "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) @@ -4998,11 +5025,11 @@ yyreduce: else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5002 "util/configparser.c" /* yacc.c:1646 */ +#line 5029 "util/configparser.c" /* yacc.c:1646 */ break; - case 440: -#line 2337 "util/configparser.y" /* yacc.c:1646 */ + case 443: +#line 2343 "util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); @@ -5011,41 +5038,111 @@ yyreduce: else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5015 "util/configparser.c" /* yacc.c:1646 */ +#line 5042 "util/configparser.c" /* yacc.c:1646 */ break; - case 441: -#line 2347 "util/configparser.y" /* yacc.c:1646 */ + case 444: +#line 2353 "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 5025 "util/configparser.c" /* yacc.c:1646 */ +#line 5052 "util/configparser.c" /* yacc.c:1646 */ break; - case 442: -#line 2354 "util/configparser.y" /* yacc.c:1646 */ + case 445: +#line 2360 "util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (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 5035 "util/configparser.c" /* yacc.c:1646 */ +#line 5062 "util/configparser.c" /* yacc.c:1646 */ break; - case 443: -#line 2361 "util/configparser.y" /* yacc.c:1646 */ + case 446: +#line 2367 "util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (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 5045 "util/configparser.c" /* yacc.c:1646 */ +#line 5072 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 447: +#line 2374 "util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", (yyvsp[0].str))); + if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_shared_secret_cache_size)) + yyerror("memory size expected"); + free((yyvsp[0].str)); + } +#line 5083 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 448: +#line 2382 "util/configparser.y" /* yacc.c:1646 */ + { + 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 5099 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 449: +#line 2395 "util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("\nP(cachedb:)\n")); + } +#line 5107 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 454: +#line 2404 "util/configparser.y" /* yacc.c:1646 */ + { + #ifdef USE_CACHEDB + OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); + if(cfg_parser->cfg->cachedb_backend) + yyerror("cachedb backend override, there must be one " + "backend"); + free(cfg_parser->cfg->cachedb_backend); + cfg_parser->cfg->cachedb_backend = (yyvsp[0].str); + #else + OUTYY(("P(Compiled without cachedb, ignoring)\n")); + #endif + } +#line 5124 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 455: +#line 2418 "util/configparser.y" /* yacc.c:1646 */ + { + #ifdef USE_CACHEDB + OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); + if(cfg_parser->cfg->cachedb_secret) + yyerror("cachedb secret-seed override, there must be " + "only one secret"); + 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 5142 "util/configparser.c" /* yacc.c:1646 */ break; -#line 5049 "util/configparser.c" /* yacc.c:1646 */ +#line 5146 "util/configparser.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -5273,7 +5370,7 @@ yyreturn: #endif return yyresult; } -#line 2367 "util/configparser.y" /* yacc.c:1906 */ +#line 2432 "util/configparser.y" /* yacc.c:1906 */ /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index 30373da46cdf..fe9d6144256d 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -252,12 +252,17 @@ extern int yydebug; VAR_DNSCRYPT_PROVIDER = 462, VAR_DNSCRYPT_SECRET_KEY = 463, VAR_DNSCRYPT_PROVIDER_CERT = 464, - VAR_IPSECMOD_ENABLED = 465, - VAR_IPSECMOD_HOOK = 466, - VAR_IPSECMOD_IGNORE_BOGUS = 467, - VAR_IPSECMOD_MAX_TTL = 468, - VAR_IPSECMOD_WHITELIST = 469, - VAR_IPSECMOD_STRICT = 470 + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 465, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 466, + VAR_IPSECMOD_ENABLED = 467, + VAR_IPSECMOD_HOOK = 468, + VAR_IPSECMOD_IGNORE_BOGUS = 469, + VAR_IPSECMOD_MAX_TTL = 470, + VAR_IPSECMOD_WHITELIST = 471, + VAR_IPSECMOD_STRICT = 472, + VAR_CACHEDB = 473, + VAR_CACHEDB_BACKEND = 474, + VAR_CACHEDB_SECRETSEED = 475 }; #endif /* Tokens. */ @@ -468,12 +473,17 @@ extern int yydebug; #define VAR_DNSCRYPT_PROVIDER 462 #define VAR_DNSCRYPT_SECRET_KEY 463 #define VAR_DNSCRYPT_PROVIDER_CERT 464 -#define VAR_IPSECMOD_ENABLED 465 -#define VAR_IPSECMOD_HOOK 466 -#define VAR_IPSECMOD_IGNORE_BOGUS 467 -#define VAR_IPSECMOD_MAX_TTL 468 -#define VAR_IPSECMOD_WHITELIST 469 -#define VAR_IPSECMOD_STRICT 470 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 465 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 466 +#define VAR_IPSECMOD_ENABLED 467 +#define VAR_IPSECMOD_HOOK 468 +#define VAR_IPSECMOD_IGNORE_BOGUS 469 +#define VAR_IPSECMOD_MAX_TTL 470 +#define VAR_IPSECMOD_WHITELIST 471 +#define VAR_IPSECMOD_STRICT 472 +#define VAR_CACHEDB 473 +#define VAR_CACHEDB_BACKEND 474 +#define VAR_CACHEDB_SECRETSEED 475 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -484,7 +494,7 @@ union YYSTYPE char* str; -#line 488 "util/configparser.h" /* yacc.c:1909 */ +#line 498 "util/configparser.h" /* yacc.c:1909 */ }; typedef union YYSTYPE YYSTYPE; diff --git a/util/configparser.y b/util/configparser.y index 7c8161442ccd..7b41b1d767d6 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -144,8 +144,11 @@ extern struct config_parser_state* cfg_parser; %token VAR_USE_SYSTEMD VAR_SHM_ENABLE VAR_SHM_KEY %token VAR_DNSCRYPT VAR_DNSCRYPT_ENABLE VAR_DNSCRYPT_PORT VAR_DNSCRYPT_PROVIDER %token VAR_DNSCRYPT_SECRET_KEY VAR_DNSCRYPT_PROVIDER_CERT +%token VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE +%token VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS %token VAR_IPSECMOD_ENABLED VAR_IPSECMOD_HOOK VAR_IPSECMOD_IGNORE_BOGUS %token VAR_IPSECMOD_MAX_TTL VAR_IPSECMOD_WHITELIST VAR_IPSECMOD_STRICT +%token VAR_CACHEDB VAR_CACHEDB_BACKEND VAR_CACHEDB_SECRETSEED %% toplevelvars: /* empty */ | toplevelvars toplevelvar ; @@ -153,7 +156,8 @@ toplevelvar: serverstart contents_server | stubstart contents_stub | forwardstart contents_forward | pythonstart contents_py | rcstart contents_rc | dtstart contents_dt | viewstart contents_view | - dnscstart contents_dnsc + dnscstart contents_dnsc | + cachedbstart contents_cachedb ; /* server: declaration */ @@ -2321,7 +2325,9 @@ contents_dnsc: contents_dnsc content_dnsc | ; content_dnsc: dnsc_dnscrypt_enable | dnsc_dnscrypt_port | dnsc_dnscrypt_provider | - dnsc_dnscrypt_secret_key | dnsc_dnscrypt_provider_cert + dnsc_dnscrypt_secret_key | dnsc_dnscrypt_provider_cert | + dnsc_dnscrypt_shared_secret_cache_size | + dnsc_dnscrypt_shared_secret_cache_slabs ; dnsc_dnscrypt_enable: VAR_DNSCRYPT_ENABLE STRING_ARG { @@ -2364,6 +2370,65 @@ dnsc_dnscrypt_secret_key: VAR_DNSCRYPT_SECRET_KEY STRING_ARG fatal_exit("out of memory adding dnscrypt-secret-key"); } ; +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); + } + ; +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); + } + ; +cachedbstart: VAR_CACHEDB + { + OUTYY(("\nP(cachedb:)\n")); + } + ; +contents_cachedb: contents_cachedb content_cachedb + | ; +content_cachedb: cachedb_backend_name | cachedb_secret_seed + ; +cachedb_backend_name: VAR_CACHEDB_BACKEND STRING_ARG + { + #ifdef USE_CACHEDB + OUTYY(("P(backend:%s)\n", $2)); + if(cfg_parser->cfg->cachedb_backend) + yyerror("cachedb backend override, there must be one " + "backend"); + free(cfg_parser->cfg->cachedb_backend); + cfg_parser->cfg->cachedb_backend = $2; + #else + OUTYY(("P(Compiled without cachedb, ignoring)\n")); + #endif + } + ; +cachedb_secret_seed: VAR_CACHEDB_SECRETSEED STRING_ARG + { + #ifdef USE_CACHEDB + OUTYY(("P(secret-seed:%s)\n", $2)); + if(cfg_parser->cfg->cachedb_secret) + yyerror("cachedb secret-seed override, there must be " + "only one secret"); + free(cfg_parser->cfg->cachedb_secret); + cfg_parser->cfg->cachedb_secret = $2; + #else + OUTYY(("P(Compiled without cachedb, ignoring)\n")); + free($2); + #endif + } + ; %% /* parse helper routines could be here */ diff --git a/util/data/msgreply.c b/util/data/msgreply.c index 2ce898d7f031..6d80cce4cb50 100644 --- a/util/data/msgreply.c +++ b/util/data/msgreply.c @@ -840,7 +840,9 @@ log_reply_info(enum verbosity_value v, struct query_info *qinf, { log_info("%s - - - %s - - - ", clientip_buf, rcode_buf); } else { - dname_str(qinf->qname, qname_buf); + if(qinf->qname) + dname_str(qinf->qname, qname_buf); + else snprintf(qname_buf, sizeof(qname_buf), "null"); pktlen = sldns_buffer_limit(rmsg); sldns_wire2str_type_buf(qinf->qtype, type_buf, sizeof(type_buf)); sldns_wire2str_class_buf(qinf->qclass, class_buf, sizeof(class_buf)); diff --git a/util/fptr_wlist.c b/util/fptr_wlist.c index 2797d1fe8449..81ef487c5877 100644 --- a/util/fptr_wlist.c +++ b/util/fptr_wlist.c @@ -231,6 +231,9 @@ fptr_whitelist_hash_sizefunc(lruhash_sizefunc_type fptr) #ifdef CLIENT_SUBNET else if(fptr == &msg_cache_sizefunc) return 1; #endif +#ifdef USE_DNSCRYPT + else if(fptr == &dnsc_shared_secrets_sizefunc) return 1; +#endif return 0; } @@ -244,6 +247,9 @@ fptr_whitelist_hash_compfunc(lruhash_compfunc_type fptr) else if(fptr == &rate_compfunc) return 1; else if(fptr == &ip_rate_compfunc) return 1; else if(fptr == &test_slabhash_compfunc) return 1; +#ifdef USE_DNSCRYPT + else if(fptr == &dnsc_shared_secrets_compfunc) return 1; +#endif return 0; } @@ -257,6 +263,9 @@ fptr_whitelist_hash_delkeyfunc(lruhash_delkeyfunc_type fptr) else if(fptr == &rate_delkeyfunc) return 1; else if(fptr == &ip_rate_delkeyfunc) return 1; else if(fptr == &test_slabhash_delkey) return 1; +#ifdef USE_DNSCRYPT + else if(fptr == &dnsc_shared_secrets_delkeyfunc) return 1; +#endif return 0; } @@ -272,6 +281,9 @@ fptr_whitelist_hash_deldatafunc(lruhash_deldatafunc_type fptr) #ifdef CLIENT_SUBNET else if(fptr == &subnet_data_delete) return 1; #endif +#ifdef USE_DNSCRYPT + else if(fptr == &dnsc_shared_secrets_deldatafunc) return 1; +#endif return 0; } diff --git a/util/iana_ports.inc b/util/iana_ports.inc index dba3e62270c6..58c69fd1c1a7 100644 --- a/util/iana_ports.inc +++ b/util/iana_ports.inc @@ -2696,7 +2696,6 @@ 3068, 3069, 3070, -3071, 3072, 3073, 3074, @@ -4733,6 +4732,7 @@ 8003, 8005, 8006, +8007, 8008, 8019, 8020, @@ -4744,6 +4744,7 @@ 8033, 8034, 8040, +8041, 8052, 8053, 8054, diff --git a/util/net_help.c b/util/net_help.c index 6c0d68e312b8..ce136a337cff 100644 --- a/util/net_help.c +++ b/util/net_help.c @@ -114,8 +114,9 @@ fd_set_block(int s) #elif defined(HAVE_IOCTLSOCKET) unsigned long off = 0; if(ioctlsocket(s, FIONBIO, &off) != 0) { - log_err("can't ioctlsocket FIONBIO off: %s", - wsa_strerror(WSAGetLastError())); + if(WSAGetLastError() != WSAEINVAL || verbosity >= 4) + log_err("can't ioctlsocket FIONBIO off: %s", + wsa_strerror(WSAGetLastError())); } #endif return 1; @@ -610,45 +611,66 @@ log_crypto_err(const char* str) #endif /* HAVE_SSL */ } -void* listen_sslctx_create(char* key, char* pem, char* verifypem) +int +listen_sslctx_setup(void* ctxt) { #ifdef HAVE_SSL - SSL_CTX* ctx = SSL_CTX_new(SSLv23_server_method()); - if(!ctx) { - log_crypto_err("could not SSL_CTX_new"); - return NULL; - } + SSL_CTX* ctx = (SSL_CTX*)ctxt; /* no SSLv2, SSLv3 because has defects */ if((SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv2) & SSL_OP_NO_SSLv2) != SSL_OP_NO_SSLv2){ log_crypto_err("could not set SSL_OP_NO_SSLv2"); - SSL_CTX_free(ctx); - return NULL; + return 0; } if((SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv3) & SSL_OP_NO_SSLv3) != SSL_OP_NO_SSLv3){ log_crypto_err("could not set SSL_OP_NO_SSLv3"); - SSL_CTX_free(ctx); - return NULL; + return 0; } - if(!SSL_CTX_use_certificate_chain_file(ctx, pem)) { - log_err("error for cert file: %s", pem); - log_crypto_err("error in SSL_CTX use_certificate_chain_file"); - SSL_CTX_free(ctx); - return NULL; +#if defined(SSL_OP_NO_TLSv1) && defined(SSL_OP_NO_TLSv1_1) + /* if we have tls 1.1 disable 1.0 */ + if((SSL_CTX_set_options(ctx, SSL_OP_NO_TLSv1) & SSL_OP_NO_TLSv1) + != SSL_OP_NO_TLSv1){ + log_crypto_err("could not set SSL_OP_NO_TLSv1"); + return 0; } - if(!SSL_CTX_use_PrivateKey_file(ctx, key, SSL_FILETYPE_PEM)) { - log_err("error for private key file: %s", key); - log_crypto_err("Error in SSL_CTX use_PrivateKey_file"); - SSL_CTX_free(ctx); - return NULL; +#endif +#if defined(SSL_OP_NO_TLSv1_1) && defined(SSL_OP_NO_TLSv1_2) + /* if we have tls 1.2 disable 1.1 */ + if((SSL_CTX_set_options(ctx, SSL_OP_NO_TLSv1_1) & SSL_OP_NO_TLSv1_1) + != SSL_OP_NO_TLSv1_1){ + log_crypto_err("could not set SSL_OP_NO_TLSv1_1"); + return 0; } - if(!SSL_CTX_check_private_key(ctx)) { - log_err("error for key file: %s", key); - log_crypto_err("Error in SSL_CTX check_private_key"); - SSL_CTX_free(ctx); - return NULL; +#endif +#if defined(SHA256_DIGEST_LENGTH) && defined(USE_ECDSA) + /* if we have sha256, set the cipher list to have no known vulns */ + if(!SSL_CTX_set_cipher_list(ctx, "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) & + SSL_OP_CIPHER_SERVER_PREFERENCE) != + SSL_OP_CIPHER_SERVER_PREFERENCE) { + log_crypto_err("could not set SSL_OP_CIPHER_SERVER_PREFERENCE"); + return 0; } + +#ifdef HAVE_SSL_CTX_SET_SECURITY_LEVEL + SSL_CTX_set_security_level(ctx, 0); +#endif +#else + (void)ctxt; +#endif /* HAVE_SSL */ + return 1; +} + +void +listen_sslctx_setup_2(void* ctxt) +{ +#ifdef HAVE_SSL + SSL_CTX* ctx = (SSL_CTX*)ctxt; + (void)ctx; #if HAVE_DECL_SSL_CTX_SET_ECDH_AUTO if(!SSL_CTX_set_ecdh_auto(ctx,1)) { log_crypto_err("Error in SSL_CTX_ecdh_auto, not enabling ECDHE"); @@ -666,7 +688,42 @@ void* listen_sslctx_create(char* key, char* pem, char* verifypem) } } #endif +#else + (void)ctxt; +#endif /* HAVE_SSL */ +} +void* listen_sslctx_create(char* key, char* pem, char* verifypem) +{ +#ifdef HAVE_SSL + SSL_CTX* ctx = SSL_CTX_new(SSLv23_server_method()); + if(!ctx) { + log_crypto_err("could not SSL_CTX_new"); + return NULL; + } + if(!listen_sslctx_setup(ctx)) { + SSL_CTX_free(ctx); + return NULL; + } + if(!SSL_CTX_use_certificate_chain_file(ctx, pem)) { + log_err("error for cert file: %s", pem); + log_crypto_err("error in SSL_CTX use_certificate_chain_file"); + SSL_CTX_free(ctx); + return NULL; + } + if(!SSL_CTX_use_PrivateKey_file(ctx, key, SSL_FILETYPE_PEM)) { + log_err("error for private key file: %s", key); + log_crypto_err("Error in SSL_CTX use_PrivateKey_file"); + SSL_CTX_free(ctx); + return NULL; + } + if(!SSL_CTX_check_private_key(ctx)) { + log_err("error for key file: %s", key); + log_crypto_err("Error in SSL_CTX check_private_key"); + SSL_CTX_free(ctx); + return NULL; + } + listen_sslctx_setup_2(ctx); if(verifypem && verifypem[0]) { if(!SSL_CTX_load_verify_locations(ctx, verifypem, NULL)) { log_crypto_err("Error in SSL_CTX verify locations"); diff --git a/util/net_help.h b/util/net_help.h index 54f4c9c0e7cd..f0236e5335df 100644 --- a/util/net_help.h +++ b/util/net_help.h @@ -345,6 +345,19 @@ void sock_list_merge(struct sock_list** list, struct regional* region, */ void log_crypto_err(const char* str); +/** + * Set SSL_OP_NOxxx options on SSL context to disable bad crypto + * @param ctxt: SSL_CTX* + * @return false on failure. + */ +int listen_sslctx_setup(void* ctxt); + +/** + * Further setup of listening SSL context, after keys loaded. + * @param ctxt: SSL_CTX* + */ +void listen_sslctx_setup_2(void* ctxt); + /** * create SSL listen context * @param key: private key file. diff --git a/util/netevent.c b/util/netevent.c index 6990cdb36f36..771cb6bc7101 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -1551,6 +1551,13 @@ comm_point_tcp_handle_callback(int fd, short event, void* arg) c->dnscrypt_buffer = sldns_buffer_new(sldns_buffer_capacity(c->buffer)); if(!c->dnscrypt_buffer) { log_err("Could not allocate dnscrypt buffer"); + reclaim_tcp_handler(c); + if(!c->tcp_do_close) { + fptr_ok(fptr_whitelist_comm_point( + c->callback)); + (void)(*c->callback)(c, c->cb_arg, + NETEVENT_CLOSED, NULL); + } return; } } diff --git a/util/shm_side/shm_main.c b/util/shm_side/shm_main.c index bba2a8396333..c0757ed7cdef 100644 --- a/util/shm_side/shm_main.c +++ b/util/shm_side/shm_main.c @@ -249,6 +249,13 @@ void shm_main_run(struct worker *worker) shm_stat->mem.msg = (long long)slabhash_get_mem(worker->env.msg_cache); shm_stat->mem.rrset = (long long)slabhash_get_mem(&worker->env.rrset_cache->table); + shm_stat->mem.dnscrypt_shared_secret = 0; +#ifdef USE_DNSCRYPT + if(worker->daemon->dnscenv) { + shm_stat->mem.dnscrypt_shared_secret = (long long)slabhash_get_mem( + worker->daemon->dnscenv->shared_secrets_cache); + } +#endif shm_stat->mem.val = (long long)mod_get_mem(&worker->env, "validator"); shm_stat->mem.iter = (long long)mod_get_mem(&worker->env, diff --git a/util/storage/lookup3.c b/util/storage/lookup3.c index e9b05af37e31..cc110748156f 100644 --- a/util/storage/lookup3.c +++ b/util/storage/lookup3.c @@ -5,6 +5,7 @@ added #ifdef VALGRIND to remove 298,384,660 'unused variable k8' warnings. added include of lookup3.h to check definitions match declarations. removed include of stdint - config.h takes care of platform independence. + added fallthrough comments for new gcc warning suppression. url http://burtleburtle.net/bob/hash/index.html. */ /* @@ -235,7 +236,9 @@ uint32_t initval) /* the previous hash, or an arbitrary value */ switch(length) /* all the case statements fall through */ { case 3 : c+=k[2]; + /* fallthrough */ case 2 : b+=k[1]; + /* fallthrough */ case 1 : a+=k[0]; final(a,b,c); case 0: /* case 0: nothing left to add */ @@ -473,16 +476,27 @@ uint32_t hashlittle( const void *key, size_t length, uint32_t initval) switch(length) /* all the case statements fall through */ { case 12: c+=((uint32_t)k[11])<<24; + /* fallthrough */ case 11: c+=((uint32_t)k[10])<<16; + /* fallthrough */ case 10: c+=((uint32_t)k[9])<<8; + /* fallthrough */ case 9 : c+=k[8]; + /* fallthrough */ case 8 : b+=((uint32_t)k[7])<<24; + /* fallthrough */ case 7 : b+=((uint32_t)k[6])<<16; + /* fallthrough */ case 6 : b+=((uint32_t)k[5])<<8; + /* fallthrough */ case 5 : b+=k[4]; + /* fallthrough */ case 4 : a+=((uint32_t)k[3])<<24; + /* fallthrough */ case 3 : a+=((uint32_t)k[2])<<16; + /* fallthrough */ case 2 : a+=((uint32_t)k[1])<<8; + /* fallthrough */ case 1 : a+=k[0]; break; case 0 : return c; |