From aa0c26ddec3b696e8f9291f53c9f862481f8a426 Mon Sep 17 00:00:00 2001 From: Wouter Wijngaards Date: Wed, 28 Nov 2007 08:10:45 +0000 Subject: [PATCH] - tests for localdata multiple RR, and implicit zones. - can specify TXT records for local data. git-svn-id: file:///svn/unbound/trunk@780 be551aaa-1e26-0410-a405-d3ace91eadb9 --- doc/Changelog | 8 + doc/example.conf | 1 + doc/plan | 12 +- doc/unbound.conf.5 | 2 + services/localzone.c | 5 +- testdata/localdata.rpl | 47 ++ util/configlexer.c | 1447 +++++++++++++++++++++------------------- util/configlexer.lex | 29 +- 8 files changed, 842 insertions(+), 709 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 834fb9e76..1bade5cb3 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,11 @@ +28 November 2007: Wouter + - Changeup plan for 0.8 - no complication needed, a simple solution + has been chosen for authoritative features. + - you can use single quotes in the config file, so it is possible + to specify TXT records in local data. + - fixup small memory problem in implicit transparent zone creation. + - test for implicit zone creation and multiple RR RRsets local data. + 27 November 2007: Wouter - per suggestion in rfc2308, replaced default max-ttl value with 1 day. - set size of msgparse lookup table to 32, from 1024, so that its size diff --git a/doc/example.conf b/doc/example.conf index e48cc6933..b7a206951 100644 --- a/doc/example.conf +++ b/doc/example.conf @@ -275,6 +275,7 @@ server: # You can add locally served data with # local-zone: "local." static # local-data: "mycomputer.local. IN A 192.0.2.51" + # local-data: 'mytext.local TXT "content of text record"' # # You can override certain queries with # local-data: "adserver.example.com A 127.0.0.1" diff --git a/doc/plan b/doc/plan index a30b475fb..e82b3f765 100644 --- a/doc/plan +++ b/doc/plan @@ -203,14 +203,18 @@ X make overload mode work; phase 0 all ok, phase 1 some threads close ports, can be used to block AS112 traffic, option to unblock a zone. * after checking acl, do iter: static, blacklist, forwards, recurse. * Forward-local-zone to NSD. - - include in package, autoforkexec on localhost to do so. + - in package, autoforkexec on localhost to do so. + - not included. Not necessary for localhost and AS112 service. * forward local zone to remote server. + - not included. Not necessary for localhost and AS112 service. * stub zones - send queries for a zone to configged nameserver. + - Can be used for complicated setups. So, run auth server on a + different port or pc, and stub it on the resolver. Resolver is + not auth for zones, but resolution works. This enforces the split + of recursive and auth servers. * test local zones * for speed * for correctness on corner cases - * for validation - * in case you get data on localzone in an answer (from rootserver). *** Library use * Create library that can do: @@ -240,8 +244,6 @@ X make overload mode work; phase 0 all ok, phase 1 some threads close ports, *** Features features * aggressive negative caching for NSEC, NSEC3. * multiple queries per question, server exploration, server selection. -* option to use real entropy for randomness (mix it in once in a while). -* check query, enforce qdsection, checking for forgery-resilience. * NSID support. * support TSIG on queries, for validating resolver deployment. * Nicer statistics diff --git a/doc/unbound.conf.5 b/doc/unbound.conf.5 index 2e82a018f..badee38bd 100644 --- a/doc/unbound.conf.5 +++ b/doc/unbound.conf.5 @@ -415,6 +415,8 @@ The query has to match exactly unless you configure the local-zone as redirect. If not matched exactly, the local-zone type determines further processing. If local-data is configured that is not a subdomain of a local-zone, a transparent local-zone is configured. +For record types such as TXT, use single quotes, as in +local-data: 'example. TXT "text"'. .El .Ss Stub Zone Options There may be multiple diff --git a/services/localzone.c b/services/localzone.c index 270f48bca..59b71963e 100644 --- a/services/localzone.c +++ b/services/localzone.c @@ -710,15 +710,16 @@ lz_setup_implicit(struct local_zones* zones, struct config_file* cfg) have_name = 1; } else { int m; - free(rr_name); if(rr_class != dclass) { /* process other classes later */ + free(rr_name); have_other_classes = 1; continue; } /* find smallest shared topdomain */ (void)dname_lab_cmp(nm, nmlabs, rr_name, labs, &m); + free(rr_name); if(m < match) match = m; } @@ -735,6 +736,8 @@ lz_setup_implicit(struct local_zones* zones, struct config_file* cfg) log_err("out of memory"); return 0; } + log_nametypeclass(VERB_ALGO, "implicit transparent local-zone", + n2, 0, dclass); if(!lz_enter_zone_dname(zones, n2, nmlen, match, local_zone_transparent, dclass)) { return 0; diff --git a/testdata/localdata.rpl b/testdata/localdata.rpl index 50f7f5707..5bb259efd 100644 --- a/testdata/localdata.rpl +++ b/testdata/localdata.rpl @@ -7,12 +7,18 @@ server: ; implicit transparent zone should not block id.server local-data: "mydata.server. CH A 10.11.12.13" + local-data: "myd2.server. CH A 10.11.12.14" + local-data: 'myd3.server. CH TXT "a text record"' + ; together implicit CH top domain .server is created transparent. ; static zone local-zone: "local" static local-data: "local SOA nobody nobody 1 2 3 4 5" local-data: "serv.local. A 20.30.40.50" + ; multiple RRs in this RRset. local-data: "bla.bla.local. A 20.30.40.51" + local-data: "bla.bla.local. A 20.30.40.52" + local-data: "bla.bla.local. A 20.30.40.53" ; static zone (no soa) local-zone: "noso.local" static @@ -24,6 +30,13 @@ server: ; refuse zone (error) local-zone: "refuse.top." refuse + ; create implicit data in the IN domain as well + local-data: "a.a.implicit. A 20.30.41.50" + local-data: "b.a.implicit. A 20.30.42.50" + local-data: "b.b.implicit. A 20.30.43.50" + local-data: "b.c.implicit. A 20.30.45.50" + local-data: "c.c.implicit. A 20.30.44.50" + CONFIG_END SCENARIO_BEGIN Test local data queries @@ -169,6 +182,40 @@ SECTION QUESTION doing.noso.local. IN MX ENTRY_END +; positive multiple RR +STEP 19 QUERY +ENTRY_BEGIN +SECTION QUESTION +bla.bla.local. IN A +ENTRY_END +STEP 20 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA +SECTION QUESTION +bla.bla.local. IN A +SECTION ANSWER +bla.bla.local. IN A 20.30.40.51 +bla.bla.local. IN A 20.30.40.52 +bla.bla.local. IN A 20.30.40.53 +ENTRY_END + +; second implicit transparent zone. +STEP 21 QUERY +ENTRY_BEGIN +SECTION QUESTION +b.b.implicit. IN A +ENTRY_END +STEP 22 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA +SECTION QUESTION +b.b.implicit. IN A +SECTION ANSWER +b.b.implicit. 3600 IN A 20.30.43.50 +ENTRY_END + ; localhost A default STEP 30 QUERY ENTRY_BEGIN diff --git a/util/configlexer.c b/util/configlexer.c index 12a07d211..4e88f6fb1 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -365,8 +365,8 @@ static void yy_fatal_error (yyconst char msg[] ); *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 82 -#define YY_END_OF_BUFFER 83 +#define YY_NUM_RULES 86 +#define YY_END_OF_BUFFER 87 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -374,88 +374,89 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[723] = +static yyconst flex_int16_t yy_accept[732] = { 0, - 1, 1, 70, 70, 74, 74, 78, 78, 83, 81, - 1, 68, 69, 2, 82, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 70, 71, 82, 72, 82, 77, 74, 75, - 76, 82, 78, 79, 80, 82, 81, 0, 1, 2, - 2, 2, 2, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 70, 0, 77, 0, 74, 78, 0, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 41, 81, - 81, 81, 81, 6, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 17, 81, 11, - 12, 81, 14, 13, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 3, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - - 81, 81, 81, 81, 81, 81, 73, 81, 81, 81, - 81, 81, 81, 81, 81, 20, 81, 81, 81, 81, - 81, 81, 21, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 53, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 52, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 18, 81, 81, - 81, 81, 81, 81, 81, 81, 19, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - - 81, 15, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 42, 43, 40, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 5, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 67, 66, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 22, 81, 81, - 81, 81, 65, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 38, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 4, 81, 81, 81, 81, 81, 81, 81, 81, - - 81, 81, 81, 81, 81, 81, 81, 81, 45, 46, - 44, 81, 81, 81, 81, 51, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 57, 81, 81, 81, - 81, 81, 81, 81, 28, 81, 81, 81, 81, 81, - 50, 81, 81, 81, 81, 81, 81, 81, 81, 54, - 81, 81, 81, 81, 81, 81, 7, 81, 81, 81, - 81, 81, 81, 59, 81, 81, 81, 81, 49, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 29, 30, - 62, 81, 81, 24, 81, 81, 81, 81, 8, 81, - - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 63, 23, 25, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 10, 81, 81, - 81, 81, 81, 9, 26, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 31, 81, 81, 27, 81, 55, 56, 81, 81, 58, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 16, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 35, 81, 81, 61, 47, 81, 81, 37, - - 36, 81, 32, 81, 60, 81, 81, 81, 33, 81, - 81, 48, 39, 34, 81, 81, 81, 81, 81, 81, - 64, 0 + 1, 1, 70, 70, 74, 74, 78, 78, 82, 82, + 87, 85, 1, 68, 69, 2, 73, 86, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 70, 71, 86, 72, 86, + 74, 75, 76, 86, 81, 78, 79, 80, 86, 82, + 83, 84, 86, 85, 0, 1, 2, 2, 2, 2, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 70, 0, + 74, 0, 81, 0, 78, 82, 0, 85, 85, 85, + + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 41, 85, 85, + 85, 85, 6, 85, 85, 85, 85, 85, 85, 85, + + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 17, 85, 11, 12, + 85, 14, 13, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 3, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 77, 85, 85, 85, 85, + 85, 85, 85, 85, 20, 85, 85, 85, 85, 85, + 85, 21, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 53, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 52, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 18, 85, 85, 85, + 85, 85, 85, 85, 85, 19, 85, 85, 85, 85, + + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 15, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 42, 43, 40, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 5, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 67, 66, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 22, 85, 85, 85, + 85, 65, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 38, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + + 4, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 45, 46, 44, + 85, 85, 85, 85, 51, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 57, 85, 85, 85, 85, + 85, 85, 85, 28, 85, 85, 85, 85, 85, 50, + 85, 85, 85, 85, 85, 85, 85, 85, 54, 85, + 85, 85, 85, 85, 85, 7, 85, 85, 85, 85, + 85, 85, 59, 85, 85, 85, 85, 49, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 29, 30, 62, + + 85, 85, 24, 85, 85, 85, 85, 8, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 63, 23, 25, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 10, 85, 85, 85, + 85, 85, 9, 26, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 31, + 85, 85, 27, 85, 55, 56, 85, 85, 58, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 16, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + + 85, 35, 85, 85, 61, 47, 85, 85, 37, 36, + 85, 32, 85, 60, 85, 85, 85, 33, 85, 85, + 48, 39, 34, 85, 85, 85, 85, 85, 85, 64, + 0 } ; static yyconst flex_int32_t yy_ec[256] = @@ -463,17 +464,17 @@ static yyconst flex_int32_t yy_ec[256] = 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 1, 5, 6, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 7, 1, 1, 1, 1, 1, - 8, 9, 1, 10, 1, 1, 1, 11, 1, 1, + 1, 2, 1, 5, 6, 1, 1, 1, 7, 1, + 1, 1, 1, 1, 8, 1, 1, 1, 1, 1, + 9, 10, 1, 11, 1, 1, 1, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 12, 1, 1, 1, 1, 13, 14, 15, 16, + 1, 13, 1, 1, 1, 1, 14, 15, 16, 17, - 17, 18, 19, 20, 21, 1, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 1, 1, 1, 1, 1, 1, 1, 1, + 18, 19, 20, 21, 22, 1, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -490,522 +491,534 @@ static yyconst flex_int32_t yy_ec[256] = 1, 1, 1, 1, 1 } ; -static yyconst flex_int32_t yy_meta[38] = +static yyconst flex_int32_t yy_meta[39] = { 0, - 1, 2, 3, 4, 4, 1, 1, 1, 1, 1, + 1, 2, 3, 4, 5, 1, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1 + 1, 1, 1, 1, 1, 1, 1, 1 } ; -static yyconst flex_int16_t yy_base[732] = +static yyconst flex_int16_t yy_base[743] = { 0, - 0, 0, 35, 38, 49, 53, 59, 63, 1469, 1456, - 42, 1470, 1470, 68, 72, 34, 66, 69, 33, 70, - 72, 75, 73, 77, 81, 84, 88, 86, 89, 92, - 96, 105, 1455, 1470, 1470, 1470, 106, 1454, 1463, 1470, - 1470, 123, 1452, 1470, 1470, 119, 1451, 127, 128, 0, - 131, 0, 0, 125, 126, 90, 127, 135, 132, 133, - 134, 136, 137, 139, 145, 142, 147, 153, 155, 151, - 157, 158, 159, 160, 162, 164, 166, 168, 169, 171, - 172, 1450, 184, 1449, 200, 1458, 1447, 188, 186, 187, - 185, 196, 194, 197, 198, 200, 204, 209, 208, 206, - - 215, 221, 212, 216, 229, 226, 232, 228, 233, 230, - 234, 237, 238, 241, 240, 244, 250, 251, 252, 248, - 255, 257, 258, 263, 265, 269, 264, 273, 275, 281, - 277, 282, 283, 284, 286, 287, 288, 48, 289, 291, - 298, 292, 301, 304, 306, 312, 309, 314, 321, 317, - 310, 318, 320, 337, 324, 323, 325, 331, 327, 330, - 344, 334, 345, 347, 348, 354, 355, 357, 359, 361, - 373, 369, 371, 379, 377, 378, 380, 381, 1446, 384, - 385, 386, 387, 1445, 389, 396, 390, 401, 392, 408, - 394, 405, 410, 412, 399, 335, 414, 415, 416, 425, - - 422, 428, 421, 432, 437, 443, 440, 442, 444, 450, - 447, 449, 446, 452, 453, 456, 460, 455, 468, 469, - 475, 471, 473, 478, 462, 481, 480, 482, 484, 489, - 486, 492, 495, 501, 497, 499, 500, 502, 504, 505, - 507, 508, 515, 516, 517, 519, 520, 1444, 523, 1443, - 1442, 526, 1441, 1440, 529, 527, 528, 535, 536, 544, - 539, 547, 537, 549, 553, 554, 557, 541, 564, 565, - 561, 566, 559, 570, 571, 573, 569, 579, 1439, 577, - 583, 584, 585, 586, 592, 589, 588, 590, 594, 602, - 596, 603, 598, 607, 604, 608, 609, 612, 619, 611, - - 614, 621, 626, 616, 623, 636, 1438, 642, 640, 628, - 638, 647, 648, 630, 645, 1437, 651, 654, 655, 657, - 661, 668, 1436, 656, 664, 669, 670, 671, 672, 678, - 673, 674, 680, 682, 684, 691, 685, 690, 692, 1435, - 693, 701, 695, 698, 704, 705, 707, 709, 710, 711, - 712, 713, 714, 1434, 718, 717, 715, 724, 736, 738, - 739, 737, 741, 743, 749, 745, 747, 746, 748, 756, - 753, 758, 768, 762, 765, 769, 770, 1433, 776, 780, - 783, 779, 772, 785, 782, 786, 1432, 787, 789, 791, - 794, 792, 795, 796, 797, 799, 798, 802, 806, 818, - - 820, 1431, 816, 824, 826, 821, 833, 817, 819, 829, - 830, 831, 832, 838, 841, 844, 1430, 1429, 1428, 842, - 836, 848, 853, 854, 855, 857, 858, 859, 1427, 861, - 860, 863, 864, 865, 866, 869, 876, 880, 870, 882, - 883, 886, 893, 890, 891, 894, 1426, 1425, 895, 897, - 902, 912, 900, 906, 908, 914, 916, 1424, 922, 918, - 919, 921, 1423, 923, 924, 927, 930, 934, 933, 937, - 945, 950, 952, 954, 938, 1422, 960, 961, 868, 958, - 964, 962, 944, 946, 966, 967, 969, 970, 971, 977, - 972, 1421, 981, 988, 974, 982, 984, 990, 999, 997, - - 995, 1000, 1001, 1008, 1005, 1007, 1010, 1011, 1420, 1419, - 1418, 1019, 1013, 720, 1016, 1417, 1017, 1020, 1023, 1024, - 1027, 1028, 1032, 1031, 1041, 1030, 1042, 1044, 1045, 1034, - 1048, 1053, 1049, 1057, 1056, 1058, 1416, 1059, 1061, 1063, - 1062, 1069, 1070, 1077, 1415, 1074, 1079, 1081, 1082, 1083, - 1414, 1084, 1085, 1086, 1088, 1091, 1095, 1101, 1092, 1413, - 1104, 1106, 1096, 1107, 1111, 1112, 1412, 1119, 1108, 1120, - 1113, 1116, 1122, 1411, 1123, 1126, 1128, 1137, 1410, 1130, - 1136, 1138, 1140, 1141, 1143, 1144, 1146, 1148, 1409, 1408, - 1407, 1152, 1156, 1406, 1160, 1166, 1162, 1153, 1405, 1164, - - 1165, 1170, 1171, 1172, 1175, 1173, 1174, 1176, 1177, 1178, - 1180, 1185, 1186, 1190, 1192, 1191, 1195, 1404, 1403, 1402, - 1196, 1200, 1207, 1209, 1199, 1201, 1211, 1214, 1212, 1218, - 1220, 1221, 1222, 1228, 1224, 1229, 1231, 1401, 1230, 1232, - 1237, 1234, 1241, 1400, 1399, 1244, 1249, 1254, 1256, 1245, - 1262, 1260, 1247, 1261, 1263, 1265, 1264, 1266, 1267, 1268, - 1398, 1272, 1274, 1396, 1270, 1388, 1372, 1277, 1275, 1371, - 1281, 1282, 1283, 1288, 1290, 1293, 1285, 1295, 1296, 1369, - 1305, 1306, 1292, 1315, 1319, 1302, 1307, 1322, 1324, 1325, - 1327, 1328, 1367, 1332, 1333, 1366, 1365, 1316, 1336, 1364, - - 1363, 1342, 1362, 1339, 1358, 1334, 1345, 1347, 1309, 1349, - 1352, 1299, 639, 463, 1337, 1350, 1354, 1357, 1355, 1361, - 429, 1470, 1385, 1389, 1393, 369, 1397, 1401, 267, 1403, - 1405 + 0, 0, 36, 39, 43, 50, 62, 74, 55, 67, + 1513, 1499, 49, 1514, 1514, 81, 1514, 88, 32, 83, + 76, 78, 60, 89, 94, 86, 87, 95, 88, 97, + 103, 104, 112, 98, 121, 1498, 1514, 1514, 1514, 57, + 1497, 1514, 1514, 116, 1496, 1506, 1514, 1514, 136, 1494, + 1514, 1514, 127, 1493, 142, 146, 0, 149, 0, 0, + 142, 144, 137, 146, 153, 150, 151, 152, 155, 158, + 157, 159, 165, 171, 170, 172, 173, 175, 174, 176, + 114, 180, 183, 185, 186, 188, 187, 194, 1492, 204, + 1491, 210, 1490, 216, 1500, 1488, 208, 209, 212, 213, + + 216, 215, 217, 218, 225, 219, 226, 229, 231, 238, + 241, 243, 244, 250, 247, 253, 251, 254, 255, 256, + 257, 259, 261, 265, 266, 273, 276, 267, 270, 277, + 278, 283, 279, 281, 293, 287, 297, 299, 305, 289, + 301, 302, 306, 303, 309, 311, 310, 313, 315, 326, + 316, 323, 327, 329, 338, 330, 334, 345, 341, 331, + 342, 343, 361, 344, 348, 347, 359, 351, 352, 369, + 353, 362, 368, 373, 378, 379, 380, 381, 384, 387, + 386, 394, 401, 397, 398, 399, 404, 1487, 402, 406, + 407, 409, 1486, 410, 417, 411, 423, 413, 430, 415, + + 426, 429, 433, 434, 421, 436, 437, 440, 450, 446, + 457, 447, 460, 463, 469, 466, 468, 449, 475, 472, + 473, 471, 474, 438, 477, 481, 483, 487, 484, 497, + 493, 495, 496, 494, 500, 502, 505, 503, 509, 515, + 504, 510, 521, 522, 525, 517, 520, 526, 531, 534, + 537, 527, 538, 528, 540, 545, 1485, 548, 1484, 1483, + 550, 1482, 1481, 554, 551, 552, 553, 556, 560, 561, + 563, 567, 571, 573, 574, 577, 575, 584, 585, 586, + 579, 590, 591, 593, 595, 597, 598, 1480, 601, 602, + 603, 606, 604, 613, 611, 609, 615, 618, 621, 623, + + 625, 626, 628, 629, 630, 631, 632, 633, 636, 639, + 646, 648, 638, 642, 662, 1479, 659, 663, 657, 664, + 665, 667, 668, 669, 1478, 671, 673, 674, 677, 680, + 688, 1477, 684, 689, 690, 691, 693, 694, 697, 695, + 701, 709, 696, 704, 706, 711, 712, 713, 1476, 716, + 723, 720, 722, 726, 724, 725, 731, 732, 733, 734, + 735, 736, 1475, 740, 743, 741, 742, 756, 762, 758, + 761, 763, 764, 770, 767, 769, 771, 774, 775, 778, + 790, 794, 768, 791, 795, 796, 1474, 802, 806, 809, + 798, 805, 811, 808, 812, 1473, 813, 814, 815, 816, + + 817, 819, 821, 820, 825, 822, 826, 838, 844, 845, + 1472, 832, 842, 848, 779, 854, 851, 852, 853, 855, + 856, 858, 859, 862, 873, 1471, 1470, 1469, 863, 865, + 857, 875, 864, 884, 867, 882, 880, 1468, 887, 888, + 889, 891, 890, 892, 894, 896, 900, 893, 901, 902, + 906, 916, 903, 910, 914, 1467, 1466, 917, 919, 921, + 933, 935, 924, 927, 931, 936, 1465, 945, 938, 941, + 942, 1464, 944, 947, 950, 952, 953, 954, 956, 964, + 966, 970, 972, 973, 1463, 979, 980, 961, 978, 986, + 982, 983, 984, 987, 988, 990, 992, 991, 998, 994, + + 1462, 1005, 1011, 996, 1007, 1004, 1013, 1024, 1025, 1017, + 1026, 1018, 1032, 1029, 1033, 1035, 1036, 1461, 1460, 1459, + 1043, 1039, 744, 1041, 1458, 1045, 1048, 1031, 1046, 1052, + 1054, 1053, 1059, 1067, 1056, 1068, 1060, 1069, 1070, 1071, + 1076, 1072, 1080, 1078, 1079, 1457, 1082, 1084, 1086, 1092, + 1094, 1096, 1100, 1456, 1102, 1097, 1103, 1104, 1105, 1455, + 1109, 1107, 1108, 1113, 1116, 1118, 1123, 1126, 1454, 1127, + 1129, 1130, 1133, 1131, 1135, 1453, 1140, 1134, 1141, 1143, + 1136, 1146, 1452, 1147, 1149, 1151, 1161, 1451, 1160, 1162, + 1153, 1163, 1167, 1154, 1170, 1171, 1174, 1447, 1443, 1442, + + 1178, 1181, 1441, 1183, 1189, 1185, 1187, 1437, 1188, 1190, + 1194, 1195, 1196, 1191, 1197, 1198, 1199, 1201, 1203, 1208, + 1209, 1210, 1213, 1219, 1215, 1216, 1436, 1432, 1431, 1220, + 1221, 1231, 1233, 1223, 1227, 1235, 1237, 1238, 1243, 1244, + 1245, 1246, 1247, 1253, 1254, 1255, 1430, 1250, 1256, 1261, + 1257, 1266, 1424, 1396, 1270, 1272, 1277, 1279, 1267, 1286, + 1283, 1284, 1273, 1285, 1287, 1289, 1290, 1292, 1295, 1395, + 1296, 1298, 1394, 1299, 1393, 1392, 1303, 1300, 1390, 1305, + 1306, 1307, 1311, 1312, 1317, 1308, 1316, 1320, 1389, 1319, + 1327, 1328, 1332, 1336, 1337, 1339, 1341, 1343, 1345, 1349, + + 1351, 1388, 1354, 1356, 1387, 1385, 1346, 1358, 1384, 1329, + 1360, 1021, 1363, 782, 1357, 1369, 1371, 644, 1373, 1375, + 530, 355, 223, 1364, 1377, 1366, 1378, 1379, 1382, 189, + 1514, 1410, 1416, 1422, 1428, 136, 1434, 1440, 1446, 83, + 1451, 1457 } ; -static yyconst flex_int16_t yy_def[732] = +static yyconst flex_int16_t yy_def[743] = { 0, - 722, 1, 723, 723, 724, 724, 725, 725, 722, 726, - 722, 722, 722, 727, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 728, 722, 722, 722, 728, 729, 722, 722, - 722, 729, 730, 722, 722, 730, 726, 726, 722, 731, - 727, 731, 727, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 728, 728, 729, 729, 722, 730, 730, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 726, 726, 726, 726, 726, 726, 726, 726, 726, - 726, 0, 722, 722, 722, 722, 722, 722, 722, 722, - 722 + 731, 1, 732, 732, 733, 733, 734, 734, 735, 735, + 731, 736, 731, 731, 731, 737, 731, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 738, 731, 731, 731, 738, + 739, 731, 731, 739, 740, 731, 731, 731, 740, 741, + 731, 731, 741, 736, 736, 731, 742, 737, 742, 737, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 738, 738, + 739, 739, 740, 740, 731, 741, 741, 736, 736, 736, + + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, + 0, 731, 731, 731, 731, 731, 731, 731, 731, 731, + 731, 731 } ; -static yyconst flex_int16_t yy_nxt[1508] = +static yyconst flex_int16_t yy_nxt[1553] = { 0, - 10, 11, 12, 12, 13, 14, 10, 10, 10, 10, - 10, 15, 16, 10, 17, 18, 10, 19, 10, 20, - 21, 22, 23, 24, 25, 26, 27, 10, 28, 29, - 30, 31, 32, 10, 10, 10, 10, 34, 35, 36, - 34, 35, 36, 49, 48, 48, 37, 50, 54, 37, - 39, 40, 40, 41, 39, 40, 40, 41, 59, 48, - 42, 44, 44, 45, 42, 44, 44, 45, 175, 52, - 46, 52, 52, 47, 46, 47, 47, 48, 55, 53, - 48, 48, 60, 48, 48, 56, 48, 62, 48, 57, - 61, 64, 48, 68, 58, 48, 63, 48, 65, 48, - - 48, 48, 66, 48, 77, 75, 67, 48, 71, 82, - 82, 73, 69, 72, 74, 70, 48, 80, 91, 76, - 78, 81, 87, 87, 84, 79, 84, 84, 47, 49, - 47, 47, 52, 50, 52, 52, 48, 48, 48, 89, - 90, 93, 53, 48, 48, 48, 48, 48, 48, 96, - 48, 98, 97, 48, 99, 92, 48, 104, 48, 102, - 94, 95, 48, 103, 48, 105, 48, 100, 48, 48, - 48, 48, 109, 48, 101, 48, 106, 48, 107, 48, - 48, 108, 48, 48, 111, 117, 110, 82, 82, 112, - 113, 87, 87, 118, 115, 114, 48, 48, 48, 116, - - 119, 84, 120, 84, 84, 48, 121, 48, 48, 48, - 122, 48, 123, 129, 124, 48, 130, 48, 125, 48, - 48, 136, 135, 48, 126, 127, 48, 48, 131, 138, - 128, 132, 48, 137, 133, 140, 134, 48, 142, 48, - 48, 48, 141, 48, 48, 48, 143, 139, 48, 48, - 144, 48, 48, 147, 149, 48, 152, 154, 150, 48, - 145, 48, 48, 48, 146, 155, 48, 84, 48, 48, - 148, 158, 160, 151, 48, 48, 48, 157, 153, 164, - 48, 156, 159, 163, 48, 165, 48, 167, 48, 161, - 162, 166, 48, 48, 48, 48, 171, 48, 48, 48, - - 48, 173, 48, 48, 177, 178, 170, 168, 179, 48, - 174, 176, 48, 169, 172, 48, 184, 48, 185, 180, - 48, 48, 181, 48, 183, 48, 182, 188, 48, 48, - 187, 48, 48, 189, 48, 48, 48, 201, 48, 186, - 190, 48, 48, 199, 192, 48, 48, 191, 48, 198, - 193, 194, 204, 205, 200, 48, 48, 202, 48, 48, - 203, 195, 196, 197, 206, 48, 48, 242, 48, 47, - 48, 207, 48, 208, 214, 211, 209, 213, 210, 216, - 48, 215, 48, 218, 48, 219, 217, 212, 48, 48, - 48, 48, 48, 223, 221, 48, 48, 48, 48, 220, - - 48, 48, 229, 48, 225, 48, 226, 48, 228, 227, - 48, 222, 48, 231, 235, 224, 48, 238, 230, 48, - 232, 48, 234, 48, 236, 48, 48, 48, 241, 237, - 243, 246, 48, 48, 240, 239, 48, 233, 248, 48, - 48, 245, 250, 48, 244, 247, 249, 251, 48, 252, - 253, 48, 254, 48, 48, 48, 256, 48, 48, 255, - 48, 48, 257, 48, 48, 258, 48, 48, 260, 266, - 262, 48, 265, 48, 48, 263, 259, 261, 264, 48, - 48, 270, 48, 267, 48, 269, 48, 272, 271, 48, - 274, 48, 48, 48, 273, 48, 276, 48, 278, 279, - - 48, 280, 277, 48, 268, 275, 48, 283, 48, 284, - 48, 48, 48, 48, 285, 48, 48, 281, 48, 48, - 282, 289, 288, 290, 291, 287, 48, 48, 48, 286, - 48, 48, 296, 295, 48, 299, 293, 48, 48, 48, - 48, 294, 300, 292, 304, 301, 48, 48, 48, 302, - 48, 297, 48, 298, 307, 48, 303, 308, 48, 309, - 48, 311, 310, 305, 48, 48, 315, 312, 48, 314, - 48, 306, 48, 313, 316, 48, 48, 48, 318, 317, - 48, 48, 48, 323, 48, 319, 321, 320, 48, 322, - 48, 325, 326, 324, 48, 48, 48, 48, 331, 48, - - 48, 48, 329, 48, 333, 48, 335, 48, 328, 48, - 330, 332, 327, 48, 48, 48, 336, 340, 48, 48, - 48, 334, 48, 48, 337, 48, 338, 48, 339, 341, - 48, 345, 48, 350, 48, 348, 349, 48, 346, 48, - 352, 48, 342, 344, 343, 351, 354, 48, 355, 48, - 48, 48, 353, 48, 356, 347, 48, 357, 48, 48, - 361, 358, 48, 359, 360, 48, 48, 48, 48, 362, - 364, 365, 48, 367, 368, 48, 363, 366, 370, 48, - 48, 48, 48, 48, 48, 48, 369, 373, 374, 48, - 378, 48, 375, 48, 376, 48, 48, 371, 381, 377, - - 372, 48, 48, 48, 48, 387, 48, 386, 380, 48, - 383, 379, 48, 382, 388, 48, 48, 385, 48, 389, - 48, 48, 48, 48, 48, 48, 48, 384, 48, 48, - 390, 48, 391, 550, 397, 48, 399, 395, 392, 394, - 401, 393, 398, 396, 403, 400, 402, 48, 48, 48, - 48, 404, 48, 405, 48, 408, 48, 48, 48, 48, - 48, 409, 410, 417, 48, 406, 411, 48, 418, 48, - 412, 407, 413, 48, 414, 416, 48, 415, 419, 48, - 48, 48, 424, 48, 421, 422, 425, 48, 423, 426, - 48, 48, 420, 48, 48, 429, 48, 48, 48, 427, - - 48, 428, 48, 48, 433, 48, 48, 48, 48, 48, - 48, 437, 430, 48, 438, 432, 431, 48, 435, 440, - 434, 436, 443, 441, 444, 439, 445, 48, 48, 48, - 48, 48, 48, 442, 447, 48, 448, 48, 449, 450, - 48, 48, 48, 48, 48, 446, 451, 48, 452, 48, - 457, 458, 48, 48, 454, 48, 460, 456, 453, 48, - 459, 461, 455, 463, 48, 48, 48, 465, 48, 48, - 48, 48, 48, 467, 48, 48, 48, 48, 466, 48, - 48, 48, 474, 462, 464, 475, 476, 48, 468, 469, - 470, 48, 472, 48, 48, 473, 477, 48, 471, 482, - - 478, 48, 48, 515, 48, 48, 48, 480, 48, 481, - 492, 48, 479, 48, 485, 487, 486, 48, 491, 48, - 483, 484, 489, 48, 490, 48, 488, 48, 497, 48, - 48, 494, 48, 48, 48, 48, 493, 498, 48, 502, - 496, 48, 495, 503, 48, 48, 504, 499, 48, 48, - 500, 508, 512, 501, 505, 48, 48, 48, 506, 507, - 509, 48, 510, 48, 511, 48, 513, 514, 516, 48, - 517, 48, 48, 48, 521, 48, 522, 48, 48, 524, - 48, 48, 48, 48, 518, 48, 519, 525, 48, 528, - 526, 520, 48, 48, 531, 48, 535, 530, 529, 48, - - 533, 48, 523, 538, 532, 536, 48, 527, 48, 537, - 48, 48, 48, 534, 542, 540, 48, 539, 48, 48, - 545, 48, 48, 546, 48, 548, 551, 48, 48, 544, - 48, 48, 553, 547, 48, 48, 541, 543, 48, 48, - 549, 48, 48, 48, 559, 48, 555, 552, 558, 556, - 557, 560, 48, 48, 554, 48, 48, 563, 562, 48, - 48, 564, 565, 567, 48, 568, 561, 48, 48, 48, - 48, 574, 48, 48, 48, 572, 573, 569, 566, 570, - 48, 48, 571, 575, 577, 48, 578, 579, 48, 580, - 48, 576, 48, 48, 48, 48, 48, 48, 585, 48, - - 588, 589, 48, 48, 581, 590, 48, 48, 586, 587, - 582, 591, 48, 583, 584, 48, 594, 48, 48, 48, - 593, 592, 48, 48, 48, 595, 598, 48, 597, 599, - 48, 48, 601, 48, 48, 596, 603, 48, 602, 48, - 607, 48, 604, 608, 600, 609, 606, 48, 48, 48, - 610, 48, 48, 605, 48, 48, 612, 48, 613, 48, - 615, 617, 618, 48, 48, 616, 619, 48, 611, 614, - 620, 48, 621, 48, 622, 48, 48, 48, 625, 623, - 624, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 634, 48, 626, 627, 628, 629, 48, 48, 639, 632, - - 638, 48, 48, 48, 631, 633, 48, 48, 635, 630, - 48, 48, 48, 636, 643, 637, 640, 644, 48, 645, - 48, 647, 48, 48, 641, 48, 642, 648, 646, 48, - 649, 48, 48, 48, 651, 48, 652, 650, 654, 48, - 48, 48, 48, 48, 656, 48, 653, 661, 48, 657, - 655, 658, 48, 662, 664, 48, 48, 663, 48, 659, - 48, 660, 671, 665, 666, 48, 667, 48, 669, 668, - 670, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 675, 48, 673, 48, 680, 48, 48, 677, 48, 682, - 672, 674, 48, 48, 48, 683, 48, 684, 678, 48, - - 679, 48, 676, 48, 48, 681, 48, 48, 686, 689, - 48, 685, 692, 48, 687, 693, 48, 48, 48, 688, - 48, 690, 695, 699, 691, 696, 48, 48, 694, 697, - 48, 698, 700, 48, 701, 48, 48, 703, 48, 48, - 704, 702, 705, 48, 48, 48, 707, 48, 48, 706, - 48, 708, 709, 48, 710, 712, 48, 713, 48, 714, - 48, 48, 711, 48, 715, 48, 48, 716, 48, 48, - 717, 721, 48, 48, 48, 48, 48, 48, 48, 718, - 48, 719, 48, 48, 720, 33, 33, 33, 33, 38, - 38, 38, 38, 43, 43, 43, 43, 51, 51, 48, - - 51, 82, 82, 87, 87, 52, 52, 48, 52, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 88, 86, - 85, 83, 48, 88, 86, 85, 83, 48, 722, 9, - 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, - 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, - 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, - - 722, 722, 722, 722, 722, 722, 722 + 12, 13, 14, 14, 15, 16, 17, 12, 12, 12, + 12, 12, 18, 19, 12, 20, 21, 12, 22, 12, + 23, 24, 25, 26, 27, 28, 29, 30, 12, 31, + 32, 33, 34, 35, 12, 12, 12, 12, 37, 38, + 39, 37, 38, 39, 55, 42, 38, 61, 40, 43, + 56, 40, 42, 38, 57, 44, 43, 51, 51, 52, + 89, 89, 44, 46, 47, 47, 48, 53, 38, 51, + 51, 52, 55, 67, 49, 46, 47, 47, 48, 53, + 38, 68, 59, 93, 59, 59, 49, 59, 55, 54, + 55, 54, 54, 60, 54, 55, 62, 64, 55, 55, + + 55, 55, 65, 63, 66, 69, 55, 55, 75, 55, + 55, 71, 72, 73, 70, 55, 55, 74, 78, 91, + 77, 82, 91, 79, 55, 84, 55, 76, 86, 80, + 96, 96, 81, 55, 87, 83, 54, 93, 88, 93, + 93, 85, 93, 54, 121, 54, 54, 56, 54, 55, + 59, 57, 59, 59, 55, 59, 55, 98, 55, 99, + 102, 60, 55, 55, 55, 55, 100, 55, 105, 55, + 55, 55, 106, 107, 111, 101, 108, 55, 112, 103, + 104, 113, 55, 55, 55, 55, 55, 55, 55, 109, + 114, 118, 55, 110, 115, 55, 116, 55, 55, 55, + + 55, 55, 120, 119, 117, 126, 55, 89, 89, 122, + 127, 96, 96, 91, 124, 123, 91, 93, 125, 93, + 93, 55, 93, 128, 55, 55, 129, 55, 55, 55, + 55, 55, 130, 132, 138, 55, 133, 55, 55, 131, + 134, 55, 139, 55, 140, 145, 135, 136, 144, 141, + 55, 137, 142, 55, 146, 55, 55, 149, 143, 55, + 151, 147, 55, 55, 150, 55, 55, 55, 55, 55, + 152, 55, 153, 55, 156, 158, 148, 55, 55, 55, + 161, 164, 55, 163, 159, 55, 154, 155, 55, 55, + 55, 55, 157, 55, 167, 55, 160, 165, 169, 55, + + 166, 55, 162, 173, 168, 55, 170, 171, 172, 55, + 174, 55, 176, 55, 55, 55, 175, 55, 55, 180, + 177, 55, 55, 55, 182, 55, 179, 55, 55, 186, + 187, 184, 181, 178, 183, 55, 185, 188, 55, 55, + 193, 55, 55, 55, 189, 194, 55, 190, 192, 191, + 55, 196, 197, 55, 55, 55, 55, 55, 198, 55, + 55, 195, 199, 55, 55, 55, 210, 55, 201, 208, + 207, 55, 200, 55, 55, 202, 203, 209, 213, 214, + 55, 55, 211, 212, 215, 55, 204, 205, 206, 216, + 55, 55, 55, 55, 225, 217, 55, 223, 55, 55, + + 220, 222, 218, 219, 226, 224, 55, 227, 228, 55, + 55, 55, 221, 55, 55, 230, 55, 232, 55, 55, + 229, 55, 55, 55, 238, 55, 234, 55, 235, 55, + 237, 231, 236, 55, 233, 55, 240, 244, 55, 247, + 239, 55, 55, 241, 243, 55, 55, 245, 55, 55, + 55, 246, 55, 252, 251, 248, 249, 255, 55, 55, + 242, 55, 55, 270, 250, 264, 254, 253, 257, 55, + 256, 259, 55, 258, 260, 55, 261, 262, 55, 263, + 55, 55, 265, 55, 55, 55, 55, 55, 266, 55, + 267, 269, 271, 55, 274, 55, 55, 272, 275, 55, + + 273, 278, 268, 276, 279, 55, 55, 55, 55, 55, + 281, 280, 55, 282, 55, 55, 55, 55, 287, 285, + 288, 55, 55, 283, 277, 284, 286, 55, 292, 55, + 290, 289, 55, 55, 55, 293, 291, 55, 55, 55, + 55, 294, 55, 55, 296, 297, 55, 295, 298, 55, + 55, 299, 55, 303, 300, 304, 301, 55, 305, 302, + 55, 308, 55, 55, 55, 55, 55, 309, 55, 313, + 310, 316, 55, 55, 311, 55, 318, 306, 307, 55, + 317, 312, 314, 55, 320, 55, 55, 55, 321, 55, + 323, 55, 315, 319, 322, 325, 55, 55, 55, 328, + + 326, 324, 55, 55, 327, 55, 332, 55, 330, 55, + 55, 334, 331, 55, 55, 55, 55, 335, 55, 329, + 340, 55, 333, 55, 338, 55, 342, 55, 337, 339, + 55, 344, 336, 55, 341, 55, 345, 55, 55, 349, + 55, 55, 55, 55, 55, 55, 354, 343, 55, 347, + 55, 55, 346, 355, 55, 350, 55, 348, 55, 359, + 55, 357, 358, 361, 353, 351, 364, 352, 360, 55, + 356, 55, 362, 363, 55, 55, 55, 55, 365, 55, + 55, 55, 368, 55, 369, 55, 55, 366, 367, 55, + 373, 374, 55, 376, 371, 377, 55, 372, 375, 370, + + 55, 55, 55, 55, 379, 55, 55, 55, 55, 55, + 382, 383, 384, 55, 390, 378, 55, 385, 55, 380, + 387, 55, 381, 55, 55, 55, 388, 386, 55, 389, + 395, 396, 55, 392, 55, 55, 55, 55, 55, 397, + 391, 394, 398, 55, 55, 55, 55, 55, 55, 393, + 399, 400, 55, 55, 55, 55, 55, 406, 559, 410, + 404, 401, 403, 408, 402, 407, 405, 411, 55, 412, + 55, 413, 409, 55, 55, 55, 55, 417, 414, 55, + 55, 55, 55, 55, 418, 419, 55, 55, 415, 426, + 55, 55, 420, 416, 55, 425, 421, 458, 422, 429, + + 423, 427, 55, 55, 424, 428, 55, 55, 55, 433, + 55, 430, 431, 434, 55, 432, 435, 55, 55, 436, + 55, 55, 438, 55, 55, 55, 55, 55, 55, 55, + 442, 55, 55, 55, 55, 437, 446, 55, 55, 439, + 447, 444, 441, 440, 55, 443, 449, 445, 450, 448, + 55, 453, 454, 456, 55, 452, 55, 55, 451, 457, + 55, 459, 455, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 466, 467, 55, 55, 55, 55, 469, 55, + 463, 460, 461, 462, 465, 55, 472, 55, 464, 475, + 468, 470, 55, 471, 55, 473, 55, 474, 476, 55, + + 55, 55, 55, 55, 55, 55, 55, 485, 55, 483, + 477, 484, 55, 55, 55, 55, 478, 486, 55, 479, + 481, 482, 55, 491, 487, 480, 55, 489, 55, 55, + 490, 55, 488, 55, 492, 494, 55, 495, 496, 55, + 500, 493, 498, 55, 499, 55, 501, 55, 55, 497, + 55, 503, 506, 55, 55, 502, 55, 55, 507, 55, + 504, 505, 55, 511, 55, 55, 55, 512, 55, 513, + 508, 517, 509, 55, 514, 510, 55, 518, 55, 516, + 515, 519, 55, 520, 55, 55, 522, 523, 521, 525, + 55, 55, 55, 526, 55, 55, 55, 524, 55, 55, + + 55, 533, 55, 55, 55, 527, 55, 528, 55, 534, + 55, 537, 529, 535, 530, 531, 55, 55, 540, 55, + 544, 538, 539, 55, 532, 55, 542, 541, 536, 55, + 55, 545, 547, 55, 543, 546, 55, 55, 55, 551, + 548, 55, 549, 55, 55, 55, 554, 55, 55, 555, + 557, 55, 560, 55, 550, 55, 553, 55, 55, 556, + 55, 562, 552, 563, 55, 55, 55, 558, 55, 564, + 567, 55, 55, 568, 572, 565, 561, 566, 569, 55, + 55, 55, 55, 55, 55, 571, 573, 576, 55, 577, + 55, 55, 55, 570, 55, 583, 55, 581, 55, 574, + + 582, 578, 575, 579, 55, 580, 55, 584, 55, 55, + 586, 588, 55, 587, 55, 55, 55, 55, 589, 55, + 55, 55, 585, 590, 594, 55, 597, 598, 55, 599, + 55, 595, 596, 591, 600, 55, 592, 593, 55, 55, + 603, 55, 55, 55, 602, 55, 55, 55, 55, 606, + 607, 608, 55, 55, 610, 55, 601, 612, 55, 55, + 604, 55, 605, 55, 616, 55, 55, 613, 617, 611, + 615, 609, 55, 55, 55, 55, 618, 619, 614, 55, + 621, 623, 55, 55, 620, 622, 55, 624, 626, 627, + 55, 625, 628, 55, 629, 55, 630, 55, 631, 55, + + 55, 55, 55, 55, 634, 633, 55, 55, 55, 55, + 55, 55, 638, 55, 632, 55, 643, 635, 636, 637, + 55, 55, 55, 641, 647, 55, 648, 55, 55, 640, + 642, 55, 55, 55, 639, 55, 652, 644, 645, 55, + 646, 649, 653, 55, 654, 55, 650, 55, 656, 55, + 55, 651, 657, 655, 658, 55, 55, 55, 55, 55, + 660, 661, 55, 663, 659, 55, 55, 55, 55, 55, + 664, 662, 670, 55, 665, 666, 667, 671, 55, 55, + 668, 673, 55, 672, 55, 55, 669, 674, 675, 55, + 676, 55, 677, 678, 679, 55, 55, 55, 55, 55, + + 680, 55, 55, 681, 55, 682, 684, 55, 55, 689, + 55, 55, 55, 686, 683, 55, 691, 55, 55, 55, + 55, 692, 693, 55, 55, 688, 687, 685, 55, 55, + 702, 55, 55, 695, 698, 690, 694, 701, 696, 55, + 55, 55, 697, 705, 55, 699, 700, 706, 55, 55, + 703, 55, 709, 55, 710, 55, 708, 55, 55, 704, + 712, 55, 711, 55, 713, 714, 55, 707, 55, 55, + 55, 718, 55, 715, 717, 55, 55, 716, 55, 719, + 721, 55, 722, 55, 723, 55, 720, 55, 724, 55, + 55, 55, 727, 730, 55, 725, 55, 55, 726, 55, + + 55, 55, 55, 728, 55, 55, 55, 55, 55, 729, + 36, 36, 36, 36, 36, 36, 41, 41, 41, 41, + 41, 41, 45, 45, 45, 45, 45, 45, 50, 50, + 50, 50, 50, 50, 58, 58, 55, 58, 58, 58, + 89, 89, 55, 55, 55, 89, 91, 91, 55, 55, + 91, 96, 96, 55, 55, 55, 96, 59, 59, 55, + 59, 59, 59, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + + 97, 95, 94, 92, 90, 55, 97, 95, 94, 92, + 90, 55, 731, 11, 731, 731, 731, 731, 731, 731, + 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, + 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, + 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, + 731, 731 } ; -static yyconst flex_int16_t yy_chk[1508] = +static yyconst flex_int16_t yy_chk[1553] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, - 4, 4, 4, 11, 19, 16, 3, 11, 16, 4, - 5, 5, 5, 5, 6, 6, 6, 6, 19, 138, - 5, 7, 7, 7, 6, 8, 8, 8, 138, 14, - 7, 14, 14, 15, 8, 15, 15, 17, 17, 14, - 18, 20, 20, 21, 23, 17, 22, 21, 24, 18, - 20, 22, 25, 25, 18, 26, 21, 28, 23, 27, - - 29, 56, 24, 30, 30, 29, 24, 31, 27, 37, - 37, 28, 25, 27, 28, 26, 32, 32, 56, 29, - 30, 32, 46, 46, 42, 31, 42, 42, 48, 49, - 48, 48, 51, 49, 51, 51, 54, 55, 57, 54, - 55, 58, 51, 59, 60, 61, 58, 62, 63, 61, - 64, 63, 62, 66, 63, 57, 65, 66, 67, 65, - 59, 60, 70, 65, 68, 67, 69, 63, 71, 72, - 73, 74, 71, 75, 64, 76, 68, 77, 69, 78, - 79, 70, 80, 81, 73, 79, 72, 83, 83, 74, - 75, 88, 88, 80, 77, 76, 91, 89, 90, 78, - - 81, 85, 89, 85, 85, 93, 90, 92, 94, 95, - 91, 96, 92, 95, 93, 97, 96, 100, 93, 99, - 98, 101, 100, 103, 93, 93, 101, 104, 97, 103, - 94, 98, 102, 102, 98, 105, 99, 106, 107, 108, - 105, 110, 106, 107, 109, 111, 108, 104, 112, 113, - 109, 115, 114, 112, 114, 116, 117, 118, 115, 120, - 110, 117, 118, 119, 111, 119, 121, 729, 122, 123, - 113, 121, 123, 116, 124, 127, 125, 120, 117, 127, - 126, 119, 122, 126, 128, 128, 129, 130, 131, 124, - 125, 129, 130, 132, 133, 134, 134, 135, 136, 137, - - 139, 136, 140, 142, 140, 140, 133, 131, 141, 141, - 137, 139, 143, 132, 135, 144, 145, 145, 146, 142, - 147, 151, 142, 146, 144, 148, 143, 149, 150, 152, - 148, 153, 149, 150, 156, 155, 157, 158, 159, 147, - 151, 160, 158, 156, 153, 162, 196, 152, 154, 155, - 154, 154, 161, 161, 157, 161, 163, 159, 164, 165, - 160, 154, 154, 154, 162, 166, 167, 196, 168, 726, - 169, 163, 170, 164, 169, 167, 165, 168, 166, 171, - 172, 170, 173, 173, 171, 174, 172, 167, 175, 176, - 174, 177, 178, 178, 176, 180, 181, 182, 183, 175, - - 185, 187, 186, 189, 181, 191, 182, 186, 185, 183, - 195, 177, 188, 188, 190, 180, 192, 192, 187, 190, - 188, 193, 189, 194, 190, 197, 198, 199, 195, 191, - 197, 200, 203, 201, 194, 193, 200, 188, 202, 202, - 721, 199, 204, 204, 198, 201, 203, 205, 205, 206, - 207, 207, 208, 208, 206, 209, 210, 213, 211, 209, - 212, 210, 211, 214, 215, 212, 218, 216, 214, 218, - 216, 217, 217, 225, 714, 216, 213, 215, 216, 219, - 220, 221, 222, 219, 223, 220, 221, 223, 222, 224, - 225, 227, 226, 228, 224, 229, 227, 231, 229, 230, - - 230, 231, 228, 232, 219, 226, 233, 234, 235, 235, - 236, 237, 234, 238, 236, 239, 240, 232, 241, 242, - 233, 240, 239, 241, 242, 238, 243, 244, 245, 237, - 246, 247, 247, 246, 249, 255, 244, 252, 256, 257, - 255, 245, 256, 243, 257, 256, 258, 259, 263, 256, - 261, 249, 268, 252, 260, 260, 256, 261, 262, 262, - 264, 264, 263, 258, 265, 266, 268, 265, 267, 267, - 273, 259, 271, 266, 269, 269, 270, 272, 271, 270, - 277, 274, 275, 276, 276, 272, 274, 273, 280, 275, - 278, 278, 280, 277, 281, 282, 283, 284, 285, 287, - - 286, 288, 283, 285, 287, 289, 289, 291, 282, 293, - 284, 286, 281, 290, 292, 295, 290, 294, 294, 296, - 297, 288, 300, 298, 291, 301, 292, 304, 293, 295, - 299, 299, 302, 302, 305, 300, 301, 303, 299, 310, - 304, 314, 296, 298, 297, 303, 306, 306, 308, 311, - 713, 309, 305, 308, 309, 299, 315, 310, 312, 313, - 314, 311, 317, 312, 313, 318, 319, 324, 320, 315, - 318, 319, 321, 321, 322, 325, 317, 320, 325, 322, - 326, 327, 328, 329, 331, 332, 324, 328, 329, 330, - 333, 333, 330, 334, 331, 335, 337, 326, 336, 332, - - 327, 338, 336, 339, 341, 343, 343, 342, 335, 344, - 338, 334, 342, 337, 344, 345, 346, 341, 347, 345, - 348, 349, 350, 351, 352, 353, 357, 339, 356, 355, - 346, 514, 347, 514, 353, 358, 356, 351, 348, 350, - 358, 349, 355, 352, 360, 357, 359, 359, 362, 360, - 361, 361, 363, 362, 364, 365, 366, 368, 367, 369, - 365, 366, 367, 371, 371, 363, 368, 370, 372, 372, - 368, 364, 368, 374, 368, 370, 375, 369, 373, 373, - 376, 377, 379, 383, 375, 376, 380, 379, 377, 381, - 382, 380, 374, 385, 381, 384, 384, 386, 388, 382, - - 389, 383, 390, 392, 389, 391, 393, 394, 395, 397, - 396, 393, 385, 398, 394, 388, 386, 399, 391, 396, - 390, 392, 399, 397, 400, 395, 401, 403, 408, 400, - 409, 401, 406, 398, 404, 404, 405, 405, 406, 407, - 410, 411, 412, 413, 407, 403, 408, 421, 409, 414, - 414, 415, 415, 420, 411, 416, 420, 413, 410, 422, - 416, 421, 412, 423, 423, 424, 425, 425, 426, 427, - 428, 431, 430, 427, 432, 433, 434, 435, 426, 479, - 436, 439, 435, 422, 424, 436, 437, 437, 428, 430, - 431, 438, 433, 440, 441, 434, 438, 442, 432, 443, - - 439, 444, 445, 479, 443, 446, 449, 441, 450, 442, - 453, 453, 440, 451, 446, 449, 446, 454, 452, 455, - 444, 445, 451, 452, 451, 456, 450, 457, 459, 460, - 461, 455, 462, 459, 464, 465, 454, 460, 466, 465, - 457, 467, 456, 466, 469, 468, 467, 461, 470, 475, - 462, 471, 475, 464, 468, 483, 471, 484, 469, 470, - 472, 472, 473, 473, 474, 474, 477, 478, 480, 480, - 481, 477, 478, 482, 483, 481, 484, 485, 486, 486, - 487, 488, 489, 491, 482, 495, 482, 487, 490, 490, - 488, 482, 493, 496, 494, 497, 498, 493, 491, 494, - - 496, 498, 485, 500, 495, 499, 501, 489, 500, 499, - 499, 502, 503, 497, 504, 502, 505, 501, 506, 504, - 507, 507, 508, 508, 513, 512, 515, 515, 517, 506, - 512, 518, 518, 508, 519, 520, 503, 505, 521, 522, - 513, 526, 524, 523, 524, 530, 520, 517, 523, 521, - 522, 525, 525, 527, 519, 528, 529, 528, 527, 531, - 533, 529, 530, 532, 532, 533, 526, 535, 534, 536, - 538, 539, 539, 541, 540, 536, 538, 534, 531, 534, - 542, 543, 535, 540, 542, 546, 543, 544, 544, 546, - 547, 541, 548, 549, 550, 552, 553, 554, 552, 555, - - 555, 556, 556, 559, 547, 557, 557, 563, 553, 554, - 548, 558, 558, 549, 550, 561, 562, 562, 564, 569, - 561, 559, 565, 566, 571, 563, 566, 572, 565, 568, - 568, 570, 570, 573, 575, 564, 572, 576, 571, 577, - 577, 580, 573, 578, 569, 580, 576, 581, 578, 582, - 581, 583, 584, 575, 585, 586, 583, 587, 584, 588, - 586, 588, 592, 592, 598, 587, 593, 593, 582, 585, - 595, 595, 596, 597, 597, 600, 601, 596, 601, 598, - 600, 602, 603, 604, 606, 607, 605, 608, 609, 610, - 610, 611, 602, 603, 604, 605, 612, 613, 615, 608, - - 614, 614, 616, 615, 607, 609, 617, 621, 611, 606, - 625, 622, 626, 612, 622, 613, 616, 623, 623, 624, - 624, 626, 627, 629, 617, 628, 621, 627, 625, 630, - 628, 631, 632, 633, 630, 635, 631, 629, 633, 634, - 636, 639, 637, 640, 635, 642, 632, 641, 641, 636, - 634, 637, 643, 642, 646, 646, 650, 643, 653, 639, - 647, 640, 653, 647, 648, 648, 649, 649, 651, 650, - 652, 652, 654, 651, 655, 657, 656, 658, 659, 660, - 657, 665, 655, 662, 663, 663, 669, 659, 668, 668, - 654, 656, 671, 672, 673, 669, 677, 671, 660, 674, - - 662, 675, 658, 683, 676, 665, 678, 679, 673, 676, - 712, 672, 679, 686, 674, 681, 681, 682, 687, 675, - 709, 677, 683, 687, 678, 684, 684, 698, 682, 685, - 685, 686, 688, 688, 689, 689, 690, 691, 691, 692, - 692, 690, 694, 694, 695, 706, 698, 699, 715, 695, - 704, 699, 702, 702, 704, 707, 707, 708, 708, 710, - 710, 716, 706, 711, 711, 717, 719, 715, 718, 705, - 716, 720, 720, 703, 701, 700, 697, 696, 693, 717, - 680, 718, 670, 667, 719, 723, 723, 723, 723, 724, - 724, 724, 724, 725, 725, 725, 725, 727, 727, 666, - - 727, 728, 728, 730, 730, 731, 731, 664, 731, 661, - 645, 644, 638, 620, 619, 618, 599, 594, 591, 590, - 589, 579, 574, 567, 560, 551, 545, 537, 516, 511, - 510, 509, 492, 476, 463, 458, 448, 447, 429, 419, - 418, 417, 402, 387, 378, 354, 340, 323, 316, 307, - 279, 254, 253, 251, 250, 248, 184, 179, 87, 86, - 84, 82, 47, 43, 39, 38, 33, 10, 9, 722, - 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, - 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, - 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, - - 722, 722, 722, 722, 722, 722, 722 + 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, + 3, 4, 4, 4, 19, 5, 5, 19, 3, 5, + 13, 4, 6, 6, 13, 5, 6, 9, 9, 9, + 40, 40, 6, 7, 7, 7, 7, 9, 7, 10, + 10, 10, 23, 23, 7, 8, 8, 8, 8, 10, + 8, 23, 16, 740, 16, 16, 8, 16, 21, 18, + 22, 18, 18, 16, 18, 20, 20, 21, 26, 27, + + 29, 24, 21, 20, 22, 24, 25, 28, 28, 30, + 34, 25, 26, 27, 24, 31, 32, 27, 30, 44, + 29, 32, 44, 30, 33, 33, 81, 28, 34, 31, + 53, 53, 31, 35, 35, 32, 736, 49, 35, 49, + 49, 33, 49, 55, 81, 55, 55, 56, 55, 63, + 58, 56, 58, 58, 61, 58, 62, 61, 64, 62, + 65, 58, 66, 67, 68, 65, 63, 69, 68, 71, + 70, 72, 69, 70, 72, 64, 70, 73, 72, 66, + 67, 73, 75, 74, 76, 77, 79, 78, 80, 70, + 74, 78, 82, 71, 75, 83, 76, 84, 85, 87, + + 86, 730, 80, 79, 77, 86, 88, 90, 90, 82, + 87, 97, 97, 92, 84, 83, 92, 94, 85, 94, + 94, 98, 94, 88, 99, 100, 98, 102, 101, 103, + 104, 106, 99, 101, 104, 723, 102, 105, 107, 100, + 102, 108, 105, 109, 106, 110, 102, 102, 109, 107, + 110, 103, 107, 111, 111, 112, 113, 114, 108, 115, + 116, 112, 114, 117, 115, 116, 118, 119, 120, 121, + 117, 122, 118, 123, 121, 123, 113, 124, 125, 128, + 126, 128, 129, 127, 124, 126, 119, 120, 127, 130, + 131, 133, 122, 134, 130, 132, 125, 128, 132, 136, + + 129, 140, 126, 136, 131, 135, 133, 134, 135, 137, + 137, 138, 139, 141, 142, 144, 138, 139, 143, 143, + 140, 145, 147, 146, 145, 148, 142, 149, 151, 149, + 149, 147, 144, 141, 146, 152, 148, 150, 150, 153, + 154, 154, 156, 160, 151, 155, 157, 151, 153, 152, + 155, 157, 158, 159, 161, 162, 164, 158, 159, 166, + 165, 156, 160, 168, 169, 171, 167, 722, 162, 165, + 164, 167, 161, 163, 172, 163, 163, 166, 170, 170, + 173, 170, 168, 169, 171, 174, 163, 163, 163, 172, + 175, 176, 177, 178, 180, 173, 179, 178, 181, 180, + + 176, 177, 174, 175, 181, 179, 182, 182, 183, 184, + 185, 186, 176, 183, 189, 185, 187, 187, 190, 191, + 184, 192, 194, 196, 195, 198, 190, 200, 191, 195, + 194, 186, 192, 205, 189, 197, 197, 199, 201, 201, + 196, 202, 199, 197, 198, 203, 204, 199, 206, 207, + 224, 200, 208, 206, 205, 202, 203, 209, 210, 212, + 197, 218, 209, 224, 204, 218, 208, 207, 211, 211, + 210, 213, 213, 212, 214, 214, 215, 216, 216, 217, + 217, 215, 219, 222, 220, 221, 223, 219, 220, 225, + 221, 223, 225, 226, 226, 227, 229, 225, 227, 228, + + 225, 229, 222, 228, 230, 231, 234, 232, 233, 230, + 232, 231, 235, 233, 236, 238, 241, 237, 238, 236, + 239, 239, 242, 234, 228, 235, 237, 240, 243, 246, + 241, 240, 247, 243, 244, 244, 242, 245, 248, 252, + 254, 245, 721, 249, 247, 248, 250, 246, 249, 251, + 253, 250, 255, 254, 251, 255, 252, 256, 256, 253, + 258, 264, 261, 265, 266, 267, 264, 265, 268, 266, + 265, 269, 269, 270, 265, 271, 271, 258, 261, 272, + 270, 265, 267, 273, 273, 274, 275, 277, 274, 276, + 276, 281, 268, 272, 275, 278, 278, 279, 280, 281, + + 279, 277, 282, 283, 280, 284, 285, 285, 283, 286, + 287, 287, 284, 289, 290, 291, 293, 289, 292, 282, + 294, 296, 286, 295, 292, 294, 296, 297, 291, 293, + 298, 298, 290, 299, 295, 300, 299, 301, 302, 303, + 303, 304, 305, 306, 307, 308, 308, 297, 309, 301, + 313, 310, 300, 308, 314, 304, 718, 302, 311, 311, + 312, 309, 310, 313, 307, 305, 317, 306, 312, 319, + 308, 317, 314, 315, 315, 318, 320, 321, 318, 322, + 323, 324, 321, 326, 322, 327, 328, 319, 320, 329, + 327, 328, 330, 330, 324, 331, 333, 326, 329, 323, + + 331, 334, 335, 336, 334, 337, 338, 340, 343, 339, + 337, 338, 339, 341, 345, 333, 344, 340, 345, 335, + 342, 342, 336, 346, 347, 348, 343, 341, 350, 344, + 351, 352, 352, 347, 353, 351, 355, 356, 354, 353, + 346, 350, 354, 357, 358, 359, 360, 361, 362, 348, + 355, 356, 364, 366, 367, 365, 523, 362, 523, 367, + 360, 357, 359, 365, 358, 364, 361, 368, 368, 369, + 370, 370, 366, 371, 369, 372, 373, 374, 371, 375, + 383, 376, 374, 377, 375, 376, 378, 379, 372, 380, + 380, 415, 377, 373, 714, 379, 377, 415, 377, 383, + + 377, 381, 381, 384, 378, 382, 382, 385, 386, 388, + 391, 384, 385, 389, 388, 386, 390, 392, 389, 391, + 394, 390, 393, 393, 395, 397, 398, 399, 400, 401, + 398, 402, 404, 403, 406, 392, 402, 405, 407, 394, + 403, 400, 397, 395, 412, 399, 405, 401, 406, 404, + 408, 409, 410, 413, 413, 408, 409, 410, 407, 414, + 414, 416, 412, 417, 418, 419, 416, 420, 421, 431, + 422, 423, 423, 424, 424, 429, 433, 430, 429, 435, + 420, 417, 418, 419, 422, 425, 432, 432, 421, 435, + 425, 430, 437, 431, 436, 433, 434, 434, 436, 439, + + 440, 441, 443, 442, 444, 448, 445, 446, 446, 444, + 437, 445, 447, 449, 450, 453, 439, 447, 451, 440, + 442, 443, 454, 452, 448, 441, 455, 450, 452, 458, + 451, 459, 449, 460, 453, 455, 463, 455, 458, 464, + 461, 454, 460, 465, 460, 461, 462, 462, 466, 459, + 469, 464, 468, 470, 471, 463, 473, 468, 469, 474, + 465, 466, 475, 474, 476, 477, 478, 475, 479, 476, + 470, 480, 471, 488, 477, 473, 480, 481, 481, 479, + 478, 482, 482, 483, 483, 484, 486, 487, 484, 489, + 489, 486, 487, 490, 491, 492, 493, 488, 490, 494, + + 495, 495, 496, 498, 497, 491, 500, 491, 504, 496, + 499, 499, 491, 497, 492, 493, 506, 502, 503, 505, + 507, 500, 502, 503, 494, 507, 505, 504, 498, 510, + 512, 508, 509, 712, 506, 508, 508, 509, 511, 513, + 510, 514, 511, 528, 513, 515, 516, 516, 517, 517, + 521, 522, 524, 524, 512, 521, 515, 526, 529, 517, + 527, 527, 514, 528, 530, 532, 531, 522, 535, 529, + 532, 533, 537, 533, 537, 530, 526, 531, 534, 534, + 536, 538, 539, 540, 542, 536, 538, 541, 541, 542, + 544, 545, 543, 535, 547, 548, 548, 545, 549, 539, + + 547, 543, 540, 543, 550, 544, 551, 549, 552, 556, + 551, 553, 553, 552, 555, 557, 558, 559, 555, 562, + 563, 561, 550, 556, 561, 564, 564, 565, 565, 566, + 566, 562, 563, 557, 567, 567, 558, 559, 568, 570, + 571, 571, 572, 574, 570, 573, 578, 575, 581, 574, + 575, 577, 577, 579, 579, 580, 568, 581, 582, 584, + 572, 585, 573, 586, 586, 591, 594, 582, 587, 580, + 585, 578, 589, 587, 590, 592, 589, 590, 584, 593, + 592, 594, 595, 596, 591, 593, 597, 595, 597, 601, + 601, 596, 602, 602, 604, 604, 605, 606, 606, 607, + + 609, 605, 610, 614, 610, 609, 611, 612, 613, 615, + 616, 617, 614, 618, 607, 619, 619, 611, 612, 613, + 620, 621, 622, 617, 623, 623, 624, 625, 626, 616, + 618, 624, 630, 631, 615, 634, 631, 620, 621, 635, + 622, 625, 632, 632, 633, 633, 626, 636, 635, 637, + 638, 630, 636, 634, 637, 639, 640, 641, 642, 643, + 639, 640, 648, 642, 638, 644, 645, 646, 649, 651, + 643, 641, 650, 650, 644, 645, 646, 651, 652, 659, + 648, 655, 655, 652, 656, 663, 649, 656, 657, 657, + 658, 658, 659, 660, 661, 661, 662, 664, 660, 665, + + 662, 666, 667, 663, 668, 664, 666, 669, 671, 672, + 672, 674, 678, 668, 665, 677, 677, 680, 681, 682, + 686, 678, 680, 683, 684, 671, 669, 667, 687, 685, + 690, 690, 688, 682, 685, 674, 681, 688, 683, 691, + 692, 710, 684, 693, 693, 686, 687, 694, 694, 695, + 691, 696, 697, 697, 698, 698, 696, 699, 707, 692, + 700, 700, 699, 701, 701, 703, 703, 695, 704, 715, + 708, 711, 711, 704, 708, 713, 724, 707, 726, 713, + 716, 716, 717, 717, 719, 719, 715, 720, 720, 725, + 727, 728, 726, 729, 729, 724, 709, 706, 725, 705, + + 702, 689, 679, 727, 676, 675, 673, 670, 654, 728, + 732, 732, 732, 732, 732, 732, 733, 733, 733, 733, + 733, 733, 734, 734, 734, 734, 734, 734, 735, 735, + 735, 735, 735, 735, 737, 737, 653, 737, 737, 737, + 738, 738, 647, 629, 628, 738, 739, 739, 627, 608, + 739, 741, 741, 603, 600, 599, 741, 742, 742, 598, + 742, 742, 742, 588, 583, 576, 569, 560, 554, 546, + 525, 520, 519, 518, 501, 485, 472, 467, 457, 456, + 438, 428, 427, 426, 411, 396, 387, 363, 349, 332, + 325, 316, 288, 263, 262, 260, 259, 257, 193, 188, + + 96, 95, 93, 91, 89, 54, 50, 46, 45, 41, + 36, 12, 11, 731, 731, 731, 731, 731, 731, 731, + 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, + 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, + 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, + 731, 731 } ; static yy_state_type yy_last_accepting_state; @@ -1111,12 +1124,13 @@ static void config_end_include(void) #endif -#line 1114 "" +#line 1127 "" #define INITIAL 0 #define quotedstring 1 -#define include 2 -#define include_quoted 3 +#define singlequotedstr 2 +#define include 3 +#define include_quoted 4 #ifndef YY_NO_UNISTD_H /* Special case for "unistd.h", since it is non-ANSI. We include it way @@ -1265,9 +1279,9 @@ YY_DECL register char *yy_cp, *yy_bp; register int yy_act; -#line 98 "util/configlexer.lex" +#line 99 "util/configlexer.lex" -#line 1270 "" +#line 1284 "" if ( !(yy_init) ) { @@ -1326,13 +1340,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 >= 723 ) + if ( yy_current_state >= 732 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 1470 ); + while ( yy_base[yy_current_state] != 1514 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -1358,353 +1372,353 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 99 "util/configlexer.lex" +#line 100 "util/configlexer.lex" { LEXOUT(("SP ")); /* ignore */ } YY_BREAK case 2: YY_RULE_SETUP -#line 100 "util/configlexer.lex" +#line 101 "util/configlexer.lex" { LEXOUT(("comment(%s) ", yytext)); /* ignore */ } YY_BREAK case 3: YY_RULE_SETUP -#line 101 "util/configlexer.lex" +#line 102 "util/configlexer.lex" { YDOUT; return VAR_SERVER;} YY_BREAK case 4: YY_RULE_SETUP -#line 102 "util/configlexer.lex" +#line 103 "util/configlexer.lex" { YDOUT; return VAR_NUM_THREADS;} YY_BREAK case 5: YY_RULE_SETUP -#line 103 "util/configlexer.lex" +#line 104 "util/configlexer.lex" { YDOUT; return VAR_VERBOSITY;} YY_BREAK case 6: YY_RULE_SETUP -#line 104 "util/configlexer.lex" +#line 105 "util/configlexer.lex" { YDOUT; return VAR_PORT;} YY_BREAK case 7: YY_RULE_SETUP -#line 105 "util/configlexer.lex" +#line 106 "util/configlexer.lex" { YDOUT; return VAR_OUTGOING_PORT;} YY_BREAK case 8: YY_RULE_SETUP -#line 106 "util/configlexer.lex" +#line 107 "util/configlexer.lex" { YDOUT; return VAR_OUTGOING_RANGE;} YY_BREAK case 9: YY_RULE_SETUP -#line 107 "util/configlexer.lex" +#line 108 "util/configlexer.lex" { YDOUT; return VAR_OUTGOING_NUM_TCP;} YY_BREAK case 10: YY_RULE_SETUP -#line 108 "util/configlexer.lex" +#line 109 "util/configlexer.lex" { YDOUT; return VAR_INCOMING_NUM_TCP;} YY_BREAK case 11: YY_RULE_SETUP -#line 109 "util/configlexer.lex" +#line 110 "util/configlexer.lex" { YDOUT; return VAR_DO_IP4;} YY_BREAK case 12: YY_RULE_SETUP -#line 110 "util/configlexer.lex" +#line 111 "util/configlexer.lex" { YDOUT; return VAR_DO_IP6;} YY_BREAK case 13: YY_RULE_SETUP -#line 111 "util/configlexer.lex" +#line 112 "util/configlexer.lex" { YDOUT; return VAR_DO_UDP;} YY_BREAK case 14: YY_RULE_SETUP -#line 112 "util/configlexer.lex" +#line 113 "util/configlexer.lex" { YDOUT; return VAR_DO_TCP;} YY_BREAK case 15: YY_RULE_SETUP -#line 113 "util/configlexer.lex" +#line 114 "util/configlexer.lex" { YDOUT; return VAR_INTERFACE;} YY_BREAK case 16: YY_RULE_SETUP -#line 114 "util/configlexer.lex" +#line 115 "util/configlexer.lex" { YDOUT; return VAR_OUTGOING_INTERFACE;} YY_BREAK case 17: YY_RULE_SETUP -#line 115 "util/configlexer.lex" +#line 116 "util/configlexer.lex" { YDOUT; return VAR_CHROOT;} YY_BREAK case 18: YY_RULE_SETUP -#line 116 "util/configlexer.lex" +#line 117 "util/configlexer.lex" { YDOUT; return VAR_USERNAME;} YY_BREAK case 19: YY_RULE_SETUP -#line 117 "util/configlexer.lex" +#line 118 "util/configlexer.lex" { YDOUT; return VAR_DIRECTORY;} YY_BREAK case 20: YY_RULE_SETUP -#line 118 "util/configlexer.lex" +#line 119 "util/configlexer.lex" { YDOUT; return VAR_LOGFILE;} YY_BREAK case 21: YY_RULE_SETUP -#line 119 "util/configlexer.lex" +#line 120 "util/configlexer.lex" { YDOUT; return VAR_PIDFILE;} YY_BREAK case 22: YY_RULE_SETUP -#line 120 "util/configlexer.lex" +#line 121 "util/configlexer.lex" { YDOUT; return VAR_ROOT_HINTS;} YY_BREAK case 23: YY_RULE_SETUP -#line 121 "util/configlexer.lex" +#line 122 "util/configlexer.lex" { YDOUT; return VAR_MSG_BUFFER_SIZE;} YY_BREAK case 24: YY_RULE_SETUP -#line 122 "util/configlexer.lex" +#line 123 "util/configlexer.lex" { YDOUT; return VAR_MSG_CACHE_SIZE;} YY_BREAK case 25: YY_RULE_SETUP -#line 123 "util/configlexer.lex" +#line 124 "util/configlexer.lex" { YDOUT; return VAR_MSG_CACHE_SLABS;} YY_BREAK case 26: YY_RULE_SETUP -#line 124 "util/configlexer.lex" +#line 125 "util/configlexer.lex" { YDOUT; return VAR_RRSET_CACHE_SIZE;} YY_BREAK case 27: YY_RULE_SETUP -#line 125 "util/configlexer.lex" +#line 126 "util/configlexer.lex" { YDOUT; return VAR_RRSET_CACHE_SLABS;} YY_BREAK case 28: YY_RULE_SETUP -#line 126 "util/configlexer.lex" +#line 127 "util/configlexer.lex" { YDOUT; return VAR_CACHE_MAX_TTL;} YY_BREAK case 29: YY_RULE_SETUP -#line 127 "util/configlexer.lex" +#line 128 "util/configlexer.lex" { YDOUT; return VAR_INFRA_HOST_TTL;} YY_BREAK case 30: YY_RULE_SETUP -#line 128 "util/configlexer.lex" +#line 129 "util/configlexer.lex" { YDOUT; return VAR_INFRA_LAME_TTL;} YY_BREAK case 31: YY_RULE_SETUP -#line 129 "util/configlexer.lex" +#line 130 "util/configlexer.lex" { YDOUT; return VAR_INFRA_CACHE_SLABS;} YY_BREAK case 32: YY_RULE_SETUP -#line 130 "util/configlexer.lex" +#line 131 "util/configlexer.lex" { YDOUT; return VAR_INFRA_CACHE_NUMHOSTS;} YY_BREAK case 33: YY_RULE_SETUP -#line 131 "util/configlexer.lex" +#line 132 "util/configlexer.lex" { YDOUT; return VAR_INFRA_CACHE_LAME_SIZE;} YY_BREAK case 34: YY_RULE_SETUP -#line 132 "util/configlexer.lex" +#line 133 "util/configlexer.lex" { YDOUT; return VAR_NUM_QUERIES_PER_THREAD;} YY_BREAK case 35: YY_RULE_SETUP -#line 133 "util/configlexer.lex" +#line 134 "util/configlexer.lex" { YDOUT; return VAR_TARGET_FETCH_POLICY;} YY_BREAK case 36: YY_RULE_SETUP -#line 134 "util/configlexer.lex" +#line 135 "util/configlexer.lex" { YDOUT; return VAR_HARDEN_SHORT_BUFSIZE;} YY_BREAK case 37: YY_RULE_SETUP -#line 135 "util/configlexer.lex" +#line 136 "util/configlexer.lex" { YDOUT; return VAR_HARDEN_LARGE_QUERIES;} YY_BREAK case 38: YY_RULE_SETUP -#line 136 "util/configlexer.lex" +#line 137 "util/configlexer.lex" { YDOUT; return VAR_HARDEN_GLUE;} YY_BREAK case 39: YY_RULE_SETUP -#line 137 "util/configlexer.lex" +#line 138 "util/configlexer.lex" { YDOUT; return VAR_HARDEN_DNNSEC_STRIPPED;} YY_BREAK case 40: YY_RULE_SETUP -#line 138 "util/configlexer.lex" +#line 139 "util/configlexer.lex" { YDOUT; return VAR_STUB_ZONE;} YY_BREAK case 41: YY_RULE_SETUP -#line 139 "util/configlexer.lex" +#line 140 "util/configlexer.lex" { YDOUT; return VAR_NAME;} YY_BREAK case 42: YY_RULE_SETUP -#line 140 "util/configlexer.lex" +#line 141 "util/configlexer.lex" { YDOUT; return VAR_STUB_ADDR;} YY_BREAK case 43: YY_RULE_SETUP -#line 141 "util/configlexer.lex" +#line 142 "util/configlexer.lex" { YDOUT; return VAR_STUB_HOST;} YY_BREAK case 44: YY_RULE_SETUP -#line 142 "util/configlexer.lex" +#line 143 "util/configlexer.lex" { YDOUT; return VAR_FORWARD_ZONE;} YY_BREAK case 45: YY_RULE_SETUP -#line 143 "util/configlexer.lex" +#line 144 "util/configlexer.lex" { YDOUT; return VAR_FORWARD_ADDR;} YY_BREAK case 46: YY_RULE_SETUP -#line 144 "util/configlexer.lex" +#line 145 "util/configlexer.lex" { YDOUT; return VAR_FORWARD_HOST;} YY_BREAK case 47: YY_RULE_SETUP -#line 145 "util/configlexer.lex" +#line 146 "util/configlexer.lex" { YDOUT; return VAR_DO_NOT_QUERY_ADDRESS;} YY_BREAK case 48: YY_RULE_SETUP -#line 146 "util/configlexer.lex" +#line 147 "util/configlexer.lex" { YDOUT; return VAR_DO_NOT_QUERY_LOCALHOST;} YY_BREAK case 49: YY_RULE_SETUP -#line 147 "util/configlexer.lex" +#line 148 "util/configlexer.lex" { YDOUT; return VAR_ACCESS_CONTROL;} YY_BREAK case 50: YY_RULE_SETUP -#line 148 "util/configlexer.lex" +#line 149 "util/configlexer.lex" { YDOUT; return VAR_HIDE_IDENTITY;} YY_BREAK case 51: YY_RULE_SETUP -#line 149 "util/configlexer.lex" +#line 150 "util/configlexer.lex" { YDOUT; return VAR_HIDE_VERSION;} YY_BREAK case 52: YY_RULE_SETUP -#line 150 "util/configlexer.lex" +#line 151 "util/configlexer.lex" { YDOUT; return VAR_IDENTITY;} YY_BREAK case 53: YY_RULE_SETUP -#line 151 "util/configlexer.lex" +#line 152 "util/configlexer.lex" { YDOUT; return VAR_VERSION;} YY_BREAK case 54: YY_RULE_SETUP -#line 152 "util/configlexer.lex" +#line 153 "util/configlexer.lex" { YDOUT; return VAR_MODULE_CONF;} YY_BREAK case 55: YY_RULE_SETUP -#line 153 "util/configlexer.lex" +#line 154 "util/configlexer.lex" { YDOUT; return VAR_TRUST_ANCHOR_FILE;} YY_BREAK case 56: YY_RULE_SETUP -#line 154 "util/configlexer.lex" +#line 155 "util/configlexer.lex" { YDOUT; return VAR_TRUSTED_KEYS_FILE;} YY_BREAK case 57: YY_RULE_SETUP -#line 155 "util/configlexer.lex" +#line 156 "util/configlexer.lex" { YDOUT; return VAR_TRUST_ANCHOR;} YY_BREAK case 58: YY_RULE_SETUP -#line 156 "util/configlexer.lex" +#line 157 "util/configlexer.lex" { YDOUT; return VAR_VAL_OVERRIDE_DATE;} YY_BREAK case 59: YY_RULE_SETUP -#line 157 "util/configlexer.lex" +#line 158 "util/configlexer.lex" { YDOUT; return VAR_BOGUS_TTL;} YY_BREAK case 60: YY_RULE_SETUP -#line 158 "util/configlexer.lex" +#line 159 "util/configlexer.lex" { YDOUT; return VAR_VAL_CLEAN_ADDITIONAL;} YY_BREAK case 61: YY_RULE_SETUP -#line 159 "util/configlexer.lex" +#line 160 "util/configlexer.lex" { YDOUT; return VAR_VAL_PERMISSIVE_MODE;} YY_BREAK case 62: YY_RULE_SETUP -#line 160 "util/configlexer.lex" +#line 161 "util/configlexer.lex" { YDOUT; return VAR_KEY_CACHE_SIZE;} YY_BREAK case 63: YY_RULE_SETUP -#line 161 "util/configlexer.lex" +#line 162 "util/configlexer.lex" { YDOUT; return VAR_KEY_CACHE_SLABS;} YY_BREAK case 64: YY_RULE_SETUP -#line 162 "util/configlexer.lex" +#line 163 "util/configlexer.lex" { YDOUT; return VAR_VAL_NSEC3_KEYSIZE_ITERATIONS;} YY_BREAK case 65: YY_RULE_SETUP -#line 163 "util/configlexer.lex" +#line 164 "util/configlexer.lex" { YDOUT; return VAR_USE_SYSLOG;} YY_BREAK case 66: YY_RULE_SETUP -#line 164 "util/configlexer.lex" +#line 165 "util/configlexer.lex" { YDOUT; return VAR_LOCAL_ZONE;} YY_BREAK case 67: YY_RULE_SETUP -#line 165 "util/configlexer.lex" +#line 166 "util/configlexer.lex" { YDOUT; return VAR_LOCAL_DATA;} YY_BREAK case 68: /* rule 68 can match eol */ YY_RULE_SETUP -#line 166 "util/configlexer.lex" +#line 167 "util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK /* Quoted strings. Strip leading and ending quotes */ case 69: YY_RULE_SETUP -#line 169 "util/configlexer.lex" +#line 170 "util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 170 "util/configlexer.lex" +#line 171 "util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(INITIAL); @@ -1712,18 +1726,18 @@ case YY_STATE_EOF(quotedstring): YY_BREAK case 70: YY_RULE_SETUP -#line 174 "util/configlexer.lex" +#line 175 "util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK case 71: /* rule 71 can match eol */ YY_RULE_SETUP -#line 175 "util/configlexer.lex" +#line 176 "util/configlexer.lex" { cfg_parser->line++; yymore(); } YY_BREAK case 72: YY_RULE_SETUP -#line 176 "util/configlexer.lex" +#line 177 "util/configlexer.lex" { LEXOUT(("QE ")); BEGIN(INITIAL); @@ -1734,38 +1748,75 @@ YY_RULE_SETUP return STRING; } YY_BREAK -/* include: directive */ +/* Single Quoted strings. Strip leading and ending quotes */ case 73: YY_RULE_SETUP -#line 187 "util/configlexer.lex" +#line 188 "util/configlexer.lex" +{ BEGIN(singlequotedstr); LEXOUT(("SQS ")); } + YY_BREAK +case YY_STATE_EOF(singlequotedstr): +#line 189 "util/configlexer.lex" +{ + yyerror("EOF inside quoted string"); + BEGIN(INITIAL); +} + YY_BREAK +case 74: +YY_RULE_SETUP +#line 193 "util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 75: +/* rule 75 can match eol */ +YY_RULE_SETUP +#line 194 "util/configlexer.lex" +{ cfg_parser->line++; yymore(); } + YY_BREAK +case 76: +YY_RULE_SETUP +#line 195 "util/configlexer.lex" +{ + LEXOUT(("SQE ")); + BEGIN(INITIAL); + yytext[yyleng - 1] = '\0'; + yylval.str = strdup(yytext); + if(!yylval.str) + yyerror("out of memory"); + return STRING; +} + YY_BREAK +/* include: directive */ +case 77: +YY_RULE_SETUP +#line 206 "util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 188 "util/configlexer.lex" +#line 207 "util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(INITIAL); } YY_BREAK -case 74: +case 78: YY_RULE_SETUP -#line 192 "util/configlexer.lex" +#line 211 "util/configlexer.lex" { LEXOUT(("ISP ")); /* ignore */ } YY_BREAK -case 75: -/* rule 75 can match eol */ +case 79: +/* rule 79 can match eol */ YY_RULE_SETUP -#line 193 "util/configlexer.lex" +#line 212 "util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK -case 76: +case 80: YY_RULE_SETUP -#line 194 "util/configlexer.lex" +#line 213 "util/configlexer.lex" { LEXOUT(("IQS ")); BEGIN(include_quoted); } YY_BREAK -case 77: +case 81: YY_RULE_SETUP -#line 195 "util/configlexer.lex" +#line 214 "util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include(yytext); @@ -1773,26 +1824,26 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 200 "util/configlexer.lex" +#line 219 "util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(INITIAL); } YY_BREAK -case 78: +case 82: YY_RULE_SETUP -#line 204 "util/configlexer.lex" +#line 223 "util/configlexer.lex" { LEXOUT(("ISTR(%s) ", yytext)); yymore(); } YY_BREAK -case 79: -/* rule 79 can match eol */ +case 83: +/* rule 83 can match eol */ YY_RULE_SETUP -#line 205 "util/configlexer.lex" +#line 224 "util/configlexer.lex" { cfg_parser->line++; yymore(); } YY_BREAK -case 80: +case 84: YY_RULE_SETUP -#line 206 "util/configlexer.lex" +#line 225 "util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -1801,7 +1852,7 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(INITIAL): -#line 212 "util/configlexer.lex" +#line 231 "util/configlexer.lex" { yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ if (config_include_stack_ptr == 0) { @@ -1812,18 +1863,18 @@ case YY_STATE_EOF(INITIAL): } } YY_BREAK -case 81: +case 85: YY_RULE_SETUP -#line 222 "util/configlexer.lex" +#line 241 "util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); yylval.str = strdup(yytext); return STRING; } YY_BREAK -case 82: +case 86: YY_RULE_SETUP -#line 225 "util/configlexer.lex" +#line 244 "util/configlexer.lex" ECHO; YY_BREAK -#line 1826 "" +#line 1877 "" case YY_END_OF_BUFFER: { @@ -2105,7 +2156,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 >= 723 ) + if ( yy_current_state >= 732 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -2133,11 +2184,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 >= 723 ) + if ( yy_current_state >= 732 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 722); + yy_is_jam = (yy_current_state == 731); return yy_is_jam ? 0 : yy_current_state; } @@ -2770,7 +2821,7 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 225 "util/configlexer.lex" +#line 244 "util/configlexer.lex" diff --git a/util/configlexer.lex b/util/configlexer.lex index dc7d12c14..4b8ae0909 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -87,13 +87,14 @@ static void config_end_include(void) SPACE [ \t] LETTER [a-zA-Z] -UNQUOTEDLETTER [^\"\n\r \t\\]|\\. +UNQUOTEDLETTER [^\'\"\n\r \t\\]|\\. NEWLINE [\r\n] COMMENT \# COLON \: -ANY [^\"\n\r\\]|\\. +DQANY [^\"\n\r\\]|\\. +SQANY [^\'\n\r\\]|\\. -%x quotedstring include include_quoted +%x quotedstring singlequotedstr include include_quoted %% {SPACE}* { LEXOUT(("SP ")); /* ignore */ } @@ -171,7 +172,7 @@ local-data{COLON} { YDOUT; return VAR_LOCAL_DATA;} yyerror("EOF inside quoted string"); BEGIN(INITIAL); } -{ANY}* { LEXOUT(("STR(%s) ", yytext)); yymore(); } +{DQANY}* { LEXOUT(("STR(%s) ", yytext)); yymore(); } \n { cfg_parser->line++; yymore(); } \" { LEXOUT(("QE ")); @@ -183,6 +184,24 @@ local-data{COLON} { YDOUT; return VAR_LOCAL_DATA;} return STRING; } + /* Single Quoted strings. Strip leading and ending quotes */ +\' { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } +<> { + yyerror("EOF inside quoted string"); + BEGIN(INITIAL); +} +{SQANY}* { LEXOUT(("STR(%s) ", yytext)); yymore(); } +\n { cfg_parser->line++; yymore(); } +\' { + LEXOUT(("SQE ")); + BEGIN(INITIAL); + yytext[yyleng - 1] = '\0'; + yylval.str = strdup(yytext); + if(!yylval.str) + yyerror("out of memory"); + return STRING; +} + /* include: directive */ include{COLON} { LEXOUT(("v(%s) ", yytext)); BEGIN(include); } <> { @@ -201,7 +220,7 @@ include{COLON} { LEXOUT(("v(%s) ", yytext)); BEGIN(include); } yyerror("EOF inside quoted string"); BEGIN(INITIAL); } -{ANY}* { LEXOUT(("ISTR(%s) ", yytext)); yymore(); } +{DQANY}* { LEXOUT(("ISTR(%s) ", yytext)); yymore(); } {NEWLINE} { cfg_parser->line++; yymore(); } \" { LEXOUT(("IQE ")); -- 2.47.2