]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
inverse trust anchor.
authorWouter Wijngaards <wouter@nlnetlabs.nl>
Wed, 18 Mar 2009 14:02:46 +0000 (14:02 +0000)
committerWouter Wijngaards <wouter@nlnetlabs.nl>
Wed, 18 Mar 2009 14:02:46 +0000 (14:02 +0000)
git-svn-id: file:///svn/unbound/trunk@1533 be551aaa-1e26-0410-a405-d3ace91eadb9

14 files changed:
doc/Changelog
doc/example.conf.in
doc/unbound.conf.5.in
testdata/domain_insec_dlv.rpl [new file with mode: 0644]
testdata/domain_insec_ds.rpl [new file with mode: 0644]
util/config_file.c
util/config_file.h
util/configlexer.c
util/configlexer.lex
util/configparser.c
util/configparser.h
util/configparser.y
validator/val_anchor.c
validator/validator.c

index c06ffe06b85d9b63546070ef70f6c59277f70060..4bacbcd74237162860ebf875150c2571981396af 100644 (file)
@@ -4,6 +4,9 @@
          definition.  Trust anchors with no supported algos are ignored.
          This means a (higher)DS or DLV entry for them could succeed, and
          otherwise they are treated as insecure.
+       - domain-insecure: "example.com" statement added. Sets domain
+         insecure regardless of chain of trust DSs or DLVs. The inverse
+         of a trust-anchor.
 
 17 March 2009: Wouter
        - unit test for unsupported algorithm in anchor warning.
index 4b496656c53439168793bc6a9cc46db75dbd9535..119aecd384459e0c899cbffff87a544040dfaf8d 100644 (file)
@@ -307,6 +307,9 @@ server:
        # the trusted-keys { name flag proto algo "key"; }; clauses are read.
        # trusted-keys-file: ""
        
+       # Ignore chain of trust. Domain is treated as insecure.
+       # domain-insecure: "example.com"
+
        # Override the date for validation with a specific fixed date.
        # Do not set this unless you are debugging signature inception
        # and expiration. "" or "0" turns the feature off. 
index 007b247fb037977174bbb11bc317926c0a6acc88..5b819136aea71bdd13ad05fad7bf344af83dd11e 100644 (file)
@@ -508,6 +508,19 @@ means that it is a lookaside for the root. Default is "", or no dlv anchor file.
 .B dlv\-anchor: \fI<"Resource Record">
 Much like trust\-anchor, this is a DLV anchor with the DS or DNSKEY inline.
 .TP
+.B domain\-insecure: \fI<domain name>
+Sets domain name to be insecure, DNSSEC chain of trust is ignored towards
+the domain name.  So a trust anchor above the domain name can not make the
+domain secure with a DS record, such a DS record is then ignored.
+Also keys from DLV are ignored for the domain.  Can be given multiple times
+to specify multiple domains that are treated as if unsigned.  If you set
+trust anchors for the domain they override this setting (and the domain 
+is secured).
+.IP
+This can be useful if you want to make sure a trust anchor for external
+lookups does not affect an (unsigned) internal domain.  A DS record 
+externally can create validation failures for that internal domain.
+.TP
 .B val\-override\-date: \fI<rrsig\-style date spec>
 Default is "" or "0", which disables this debugging feature. If enabled by
 giving a RRSIG style date, that date is used for verifying RRSIG inception
diff --git a/testdata/domain_insec_dlv.rpl b/testdata/domain_insec_dlv.rpl
new file mode 100644 (file)
index 0000000..f3789e6
--- /dev/null
@@ -0,0 +1,276 @@
+; config options
+; The island of trust is at example.com (the DLV repository)
+server:
+       dlv-anchor: "example.com.    3600    IN      DS      2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b"
+       domain-insecure: "example.net"
+       val-override-date: "20070916134226"
+       target-fetch-policy: "0 0 0 0 0"
+
+stub-zone:
+       name: "."
+       stub-addr: 193.0.14.129         # K.ROOT-SERVERS.NET.
+CONFIG_END
+
+SCENARIO_BEGIN Test validator with domain-insecure below a DLV
+; positive response for DLV.
+
+; K.ROOT-SERVERS.NET.
+RANGE_BEGIN 0 100
+       ADDRESS 193.0.14.129 
+ENTRY_BEGIN
+MATCH opcode qtype qname
+ADJUST copy_id
+REPLY QR NOERROR
+SECTION QUESTION
+. IN NS
+SECTION ANSWER
+. IN NS        K.ROOT-SERVERS.NET.
+SECTION ADDITIONAL
+K.ROOT-SERVERS.NET.    IN      A       193.0.14.129
+ENTRY_END
+
+ENTRY_BEGIN
+MATCH opcode subdomain
+ADJUST copy_id copy_query
+REPLY QR NOERROR
+SECTION QUESTION
+com. IN A
+SECTION AUTHORITY
+com.   IN NS   a.gtld-servers.net.
+SECTION ADDITIONAL
+a.gtld-servers.net.    IN      A       192.5.6.30
+ENTRY_END
+
+ENTRY_BEGIN
+MATCH opcode subdomain
+ADJUST copy_id copy_query
+REPLY QR NOERROR
+SECTION QUESTION
+net. IN A
+SECTION AUTHORITY
+net.   IN NS   a.gtld-servers.net.
+SECTION ADDITIONAL
+a.gtld-servers.net.    IN      A       192.5.6.30
+ENTRY_END
+RANGE_END
+
+; a.gtld-servers.net.
+RANGE_BEGIN 0 100
+       ADDRESS 192.5.6.30
+ENTRY_BEGIN
+MATCH opcode qtype qname
+ADJUST copy_id
+REPLY QR NOERROR
+SECTION QUESTION
+com. IN NS
+SECTION ANSWER
+com.    IN NS   a.gtld-servers.net.
+SECTION ADDITIONAL
+a.gtld-servers.net.     IN      A       192.5.6.30
+ENTRY_END
+
+ENTRY_BEGIN
+MATCH opcode qtype qname
+ADJUST copy_id
+REPLY QR NOERROR
+SECTION QUESTION
+net. IN NS
+SECTION ANSWER
+net.    IN NS   a.gtld-servers.net.
+SECTION ADDITIONAL
+a.gtld-servers.net.     IN      A       192.5.6.30
+ENTRY_END
+
+ENTRY_BEGIN
+MATCH opcode subdomain
+ADJUST copy_id copy_query
+REPLY QR NOERROR
+SECTION QUESTION
+example.com. IN A
+SECTION AUTHORITY
+example.com.   IN NS   ns.example.com.
+SECTION ADDITIONAL
+ns.example.com.                IN      A       1.2.3.4
+ENTRY_END
+
+ENTRY_BEGIN
+MATCH opcode subdomain
+ADJUST copy_id copy_query
+REPLY QR NOERROR
+SECTION QUESTION
+example.net. IN A
+SECTION AUTHORITY
+example.net.   IN NS   ns.example.net.
+SECTION ADDITIONAL
+ns.example.net.                IN      A       1.2.3.5
+ENTRY_END
+RANGE_END
+
+; ns.example.com.
+RANGE_BEGIN 0 100
+       ADDRESS 1.2.3.4
+ENTRY_BEGIN
+MATCH opcode qtype qname
+ADJUST copy_id
+REPLY QR NOERROR
+SECTION QUESTION
+example.com. IN NS
+SECTION ANSWER
+example.com.    IN NS   ns.example.com.
+example.com.    3600    IN      RRSIG   NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854}
+SECTION ADDITIONAL
+ns.example.com.         IN      A       1.2.3.4
+ns.example.com. 3600    IN      RRSIG   A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854}
+ENTRY_END
+
+; response to DNSKEY priming query
+ENTRY_BEGIN
+MATCH opcode qtype qname
+ADJUST copy_id
+REPLY QR NOERROR
+SECTION QUESTION
+example.com. IN DNSKEY
+SECTION ANSWER
+example.com.    3600    IN      DNSKEY  256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b}
+example.com.    3600    IN      RRSIG   DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854}
+SECTION AUTHORITY
+example.com.   IN NS   ns.example.com.
+example.com.    3600    IN      RRSIG   NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854}
+SECTION ADDITIONAL
+ns.example.com.                IN      A       1.2.3.4
+ns.example.com. 3600    IN      RRSIG   A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854}
+ENTRY_END
+
+; DLV query
+ENTRY_BEGIN
+MATCH opcode qtype qname
+ADJUST copy_id
+REPLY QR NOERROR
+SECTION QUESTION
+example.net.example.com. IN DLV
+SECTION ANSWER
+example.net.example.com.       3600    IN      DLV     30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix
+example.net.example.com.       3600    IN      RRSIG   DLV 3 4 3600 20070926134150 20070829134150 2854 example.com. ACK48Q/oKwh/SM9yRiKjZYuc+AtEZ2yCPNJ15kKCN8nsVcv7xigmNTY= ;{id = 2854}
+SECTION AUTHORITY
+example.com.   IN NS   ns.example.com.
+example.com.    3600    IN      RRSIG   NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854}
+SECTION ADDITIONAL
+ns.example.com.                IN      A       1.2.3.4
+ns.example.com. 3600    IN      RRSIG   A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854}
+ENTRY_END
+
+ENTRY_BEGIN
+MATCH opcode qtype qname
+ADJUST copy_id
+REPLY QR NOERROR
+SECTION QUESTION
+net.example.com. IN DLV
+SECTION ANSWER
+SECTION AUTHORITY
+example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600
+example.com.   3600    IN      RRSIG   SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854}
+example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC
+example.com.   3600    IN      RRSIG   NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854}
+ENTRY_END
+
+ENTRY_BEGIN
+MATCH opcode qtype qname
+ADJUST copy_id
+REPLY QR NXDOMAIN
+SECTION QUESTION
+com.example.com. IN DLV
+SECTION ANSWER
+SECTION AUTHORITY
+example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600
+example.com.   3600    IN      RRSIG   SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854}
+example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC
+example.com.   3600    IN      RRSIG   NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854}
+ENTRY_END
+
+RANGE_END
+
+; ns.example.net.
+RANGE_BEGIN 0 100
+       ADDRESS 1.2.3.5
+; DS RR is
+; example.net. 3600    IN      DS      30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix
+; DNSKEY prime query
+ENTRY_BEGIN
+MATCH opcode qtype qname
+ADJUST copy_id
+REPLY QR NOERROR
+SECTION QUESTION
+example.net. IN DNSKEY
+SECTION ANSWER
+example.net.    3600    IN      DNSKEY  256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b}
+example.net.    3600    IN      RRSIG   DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899}
+SECTION AUTHORITY
+example.net.    IN NS   ns.example.net.
+example.net.    3600    IN      RRSIG   NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899}
+SECTION ADDITIONAL
+ns.example.net.         IN      A       1.2.3.5
+ns.example.net. 3600    IN      RRSIG   A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899}
+ENTRY_END
+
+; NS query
+ENTRY_BEGIN
+MATCH opcode qtype qname
+ADJUST copy_id
+REPLY QR NOERROR
+SECTION QUESTION
+example.net. IN NS
+SECTION ANSWER
+example.net.    IN NS   ns.example.net.
+example.net.    3600    IN      RRSIG   NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899}
+SECTION ADDITIONAL
+ns.example.net.         IN      A       1.2.3.5
+ns.example.net. 3600    IN      RRSIG   A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899}
+ENTRY_END
+
+; www.example.net query
+ENTRY_BEGIN
+MATCH opcode qtype qname
+ADJUST copy_id
+REPLY QR NOERROR
+SECTION QUESTION
+www.example.net. IN A
+SECTION ANSWER
+www.example.net.       3600    IN      A       10.20.30.40
+www.example.net.       3600    IN      RRSIG   A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899}
+SECTION AUTHORITY
+example.net.    IN NS   ns.example.net.
+example.net.    3600    IN      RRSIG   NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899}
+SECTION ADDITIONAL
+ns.example.net.         IN      A       1.2.3.5
+ns.example.net. 3600    IN      RRSIG   A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899}
+ENTRY_END
+
+
+RANGE_END
+
+STEP 1 QUERY
+ENTRY_BEGIN
+REPLY RD DO
+SECTION QUESTION
+www.example.net. IN A
+ENTRY_END
+
+; recursion happens here.
+STEP 10 CHECK_ANSWER
+ENTRY_BEGIN
+MATCH all
+REPLY QR RD RA NOERROR
+SECTION QUESTION
+www.example.net. IN A
+SECTION ANSWER
+www.example.net.       3600    IN      A       10.20.30.40
+www.example.net.       3600    IN      RRSIG   A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899}
+SECTION AUTHORITY
+example.net.    IN NS   ns.example.net.
+example.net.    3600    IN      RRSIG   NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899}
+SECTION ADDITIONAL
+ns.example.net.         IN      A       1.2.3.5
+ns.example.net. 3600    IN      RRSIG   A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899}
+ENTRY_END
+
+SCENARIO_END
diff --git a/testdata/domain_insec_ds.rpl b/testdata/domain_insec_ds.rpl
new file mode 100644 (file)
index 0000000..703acbb
--- /dev/null
@@ -0,0 +1,212 @@
+; config options
+; The island of trust is at example.com
+server:
+       trust-anchor: "example.com.    3600    IN      DS      2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b"
+       domain-insecure: "sub.example.com"
+       val-override-date: "20070916134226"
+       target-fetch-policy: "0 0 0 0 0"
+
+stub-zone:
+       name: "."
+       stub-addr: 193.0.14.129         # K.ROOT-SERVERS.NET.
+CONFIG_END
+
+SCENARIO_BEGIN Test validator with domain-insecure below a DS
+
+; K.ROOT-SERVERS.NET.
+RANGE_BEGIN 0 100
+       ADDRESS 193.0.14.129 
+ENTRY_BEGIN
+MATCH opcode qtype qname
+ADJUST copy_id
+REPLY QR NOERROR
+SECTION QUESTION
+. IN NS
+SECTION ANSWER
+. IN NS        K.ROOT-SERVERS.NET.
+SECTION ADDITIONAL
+K.ROOT-SERVERS.NET.    IN      A       193.0.14.129
+ENTRY_END
+
+ENTRY_BEGIN
+MATCH opcode qtype qname
+ADJUST copy_id
+REPLY QR NOERROR
+SECTION QUESTION
+www.sub.example.com. IN A
+SECTION AUTHORITY
+com.   IN NS   a.gtld-servers.net.
+SECTION ADDITIONAL
+a.gtld-servers.net.    IN      A       192.5.6.30
+ENTRY_END
+RANGE_END
+
+; a.gtld-servers.net.
+RANGE_BEGIN 0 100
+       ADDRESS 192.5.6.30
+ENTRY_BEGIN
+MATCH opcode qtype qname
+ADJUST copy_id
+REPLY QR NOERROR
+SECTION QUESTION
+com. IN NS
+SECTION ANSWER
+com.    IN NS   a.gtld-servers.net.
+SECTION ADDITIONAL
+a.gtld-servers.net.     IN      A       192.5.6.30
+ENTRY_END
+
+ENTRY_BEGIN
+MATCH opcode qtype qname
+ADJUST copy_id
+REPLY QR NOERROR
+SECTION QUESTION
+www.sub.example.com. IN A
+SECTION AUTHORITY
+example.com.   IN NS   ns.example.com.
+SECTION ADDITIONAL
+ns.example.com.                IN      A       1.2.3.4
+ENTRY_END
+RANGE_END
+
+; ns.example.com.
+RANGE_BEGIN 0 100
+       ADDRESS 1.2.3.4
+ENTRY_BEGIN
+MATCH opcode qtype qname
+ADJUST copy_id
+REPLY QR NOERROR
+SECTION QUESTION
+example.com. IN NS
+SECTION ANSWER
+example.com.    IN NS   ns.example.com.
+example.com.    3600    IN      RRSIG   NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854}
+SECTION ADDITIONAL
+ns.example.com.         IN      A       1.2.3.4
+ns.example.com. 3600    IN      RRSIG   A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854}
+ENTRY_END
+
+; response to DNSKEY priming query
+ENTRY_BEGIN
+MATCH opcode qtype qname
+ADJUST copy_id
+REPLY QR NOERROR
+SECTION QUESTION
+example.com. IN DNSKEY
+SECTION ANSWER
+example.com.    3600    IN      DNSKEY  256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b}
+example.com. 3600    IN      RRSIG   DNSKEY DSA 2 3600 20070926134150 20070829134150 2854 example.com. MCwCFBQRtlR4BEv9ohi+PGFjp+AHsJuHAhRCvz0shggvnvI88DFnBDCczHUcVA== ;{id = 2854}
+SECTION AUTHORITY
+example.com.   IN NS   ns.example.com.
+example.com.    3600    IN      RRSIG   NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854}
+SECTION ADDITIONAL
+ns.example.com.                IN      A       1.2.3.4
+ns.example.com. 3600    IN      RRSIG   A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854}
+ENTRY_END
+
+; response for delegation to sub.example.com.
+ENTRY_BEGIN
+MATCH opcode qtype qname
+ADJUST copy_id
+REPLY QR NOERROR
+SECTION QUESTION
+www.sub.example.com. IN A
+SECTION ANSWER
+SECTION AUTHORITY
+sub.example.com. IN    NS ns.sub.example.com.
+sub.example.com.        3600    IN      DS      30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3
+sub.example.com.        3600    IN      RRSIG   DS 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCW3ix0GD4BSvNLWIbROCJt5DAW9AhRt/kg9kBKJ20UBUdumrBUHqnskdA== ;{id = 2854}
+SECTION ADDITIONAL
+ns.sub.example.com. IN A 1.2.3.6
+ENTRY_END
+
+; response for delegation to sub.example.com.
+ENTRY_BEGIN
+MATCH opcode qtype qname
+ADJUST copy_id
+REPLY QR NOERROR
+SECTION QUESTION
+sub.example.com. IN DNSKEY
+SECTION ANSWER
+SECTION AUTHORITY
+sub.example.com. IN    NS ns.sub.example.com.
+sub.example.com.        3600    IN      DS      30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3
+sub.example.com.        3600    IN      RRSIG   DS 3 3 3600 20070926134150 20070829134150 2854 example.com. MCwCFCW3ix0GD4BSvNLWIbROCJt5DAW9AhRt/kg9kBKJ20UBUdumrBUHqnskdA== ;{id = 2854}
+SECTION ADDITIONAL
+ns.sub.example.com. IN A 1.2.3.6
+ENTRY_END
+RANGE_END
+
+; ns.sub.example.com.
+RANGE_BEGIN 0 100
+       ADDRESS 1.2.3.6
+ENTRY_BEGIN
+MATCH opcode qtype qname
+ADJUST copy_id
+REPLY QR NOERROR
+SECTION QUESTION
+sub.example.com. IN NS
+SECTION ANSWER
+sub.example.com. IN    NS ns.sub.example.com.
+sub.example.com.        3600    IN      RRSIG   NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. wcpHeBILHfo8C9uxMhcW03gcURZeUffiKdSTb50ZjzTHgMNhRyMfpcvSpXEd9548A9UTmWKeLZChfr5Z/glONw== ;{id = 30899}
+SECTION ADDITIONAL
+ns.sub.example.com. IN A 1.2.3.6
+ns.sub.example.com.     3600    IN      RRSIG   A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. UF7shD/gt1FOp2UHgLTNbPzVykklSXFMEtJ1xD+Hholwf/PIzd7zoaIttIYibNa4fUXCqMg22H9P7MRhfmFe6g== ;{id = 30899}
+ENTRY_END
+
+; response to DNSKEY priming query
+; sub.example.com.        3600    IN      DS      30899 RSASHA1 1 f7ed618f24d5e5202927e1d27bc2e84a141cb4b3
+ENTRY_BEGIN
+MATCH opcode qtype qname
+ADJUST copy_id
+REPLY QR NOERROR
+SECTION QUESTION
+sub.example.com. IN DNSKEY
+SECTION ANSWER
+sub.example.com.        3600    IN      DNSKEY  256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b}
+sub.example.com.        3600    IN      RRSIG   DNSKEY 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. uNGp99iznjD7oOX02XnQbDnbg75UwBHRvZSKYUorTKvPUnCWMHKdRsQ+mf+Fx3GZ+Fz9BVjoCmQqpnfgXLEYqw== ;{id = 30899}
+SECTION AUTHORITY
+sub.example.com. IN    NS ns.sub.example.com.
+sub.example.com.        3600    IN      RRSIG   NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.com. wcpHeBILHfo8C9uxMhcW03gcURZeUffiKdSTb50ZjzTHgMNhRyMfpcvSpXEd9548A9UTmWKeLZChfr5Z/glONw== ;{id = 30899}
+SECTION ADDITIONAL
+ns.sub.example.com. IN A 1.2.3.6
+ns.sub.example.com.     3600    IN      RRSIG   A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. UF7shD/gt1FOp2UHgLTNbPzVykklSXFMEtJ1xD+Hholwf/PIzd7zoaIttIYibNa4fUXCqMg22H9P7MRhfmFe6g== ;{id = 30899}
+ENTRY_END
+
+; response to query of interest
+ENTRY_BEGIN
+MATCH opcode qtype qname
+ADJUST copy_id
+REPLY QR NOERROR
+SECTION QUESTION
+www.sub.example.com. IN A
+SECTION ANSWER
+www.sub.example.com. IN A      11.11.11.11
+www.sub.example.com.    3600    IN      RRSIG   A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. 0DqqRfRtm7VSEQ4mmBbzrKRqQAay3JAE8DPDGmjtokrrjN9F1G/HxozDV7bjdIh2EChlQea8FPwf/GepJMUVxg== ;{id = 30899}
+SECTION AUTHORITY
+SECTION ADDITIONAL
+ENTRY_END
+RANGE_END
+
+STEP 1 QUERY
+ENTRY_BEGIN
+REPLY RD DO
+SECTION QUESTION
+www.sub.example.com. IN A
+ENTRY_END
+
+; recursion happens here.
+STEP 10 CHECK_ANSWER
+ENTRY_BEGIN
+MATCH all
+REPLY QR RD RA NOERROR
+SECTION QUESTION
+www.sub.example.com. IN A
+SECTION ANSWER
+www.sub.example.com.   3600    IN      A       11.11.11.11
+www.sub.example.com.    3600    IN      RRSIG   A 5 4 3600 20070926134150 20070829134150 30899 sub.example.com. 0DqqRfRtm7VSEQ4mmBbzrKRqQAay3JAE8DPDGmjtokrrjN9F1G/HxozDV7bjdIh2EChlQea8FPwf/GepJMUVxg== ;{id = 30899}
+SECTION AUTHORITY
+SECTION ADDITIONAL
+ENTRY_END
+
+SCENARIO_END
index 400011968dddaf6c6313bbc169c9e95c498287a7..75851802212c1230c44a1871319fb2612c649126 100644 (file)
@@ -146,6 +146,7 @@ config_create()
        cfg->trusted_keys_file_list = NULL;
        cfg->dlv_anchor_file = NULL;
        cfg->dlv_anchor_list = NULL;
+       cfg->domain_insecure = NULL;
        cfg->val_date_override = 0;
        cfg->val_clean_additional = 1;
        cfg->val_permissive_mode = 0;
@@ -350,6 +351,8 @@ int config_set_option(struct config_file* cfg, const char* opt,
        } else if(strcmp(opt, "dlv-anchor:") == 0) {
                return cfg_strlist_insert(&cfg->dlv_anchor_list, 
                        strdup(val));
+       } else if(strcmp(opt, "domain-insecure:") == 0) {
+               return cfg_strlist_insert(&cfg->domain_insecure, strdup(val));
        } else if(strcmp(opt, "val-override-date:") == 0) {
                if(strcmp(val, "") == 0 || strcmp(val, "0") == 0) {
                        cfg->val_date_override = 0;
@@ -524,6 +527,7 @@ config_delete(struct config_file* cfg)
        config_delstrlist(cfg->trust_anchor_file_list);
        config_delstrlist(cfg->trusted_keys_file_list);
        config_delstrlist(cfg->trust_anchor_list);
+       config_delstrlist(cfg->domain_insecure);
        free(cfg->dlv_anchor_file);
        config_delstrlist(cfg->dlv_anchor_list);
        config_deldblstrlist(cfg->acls);
index 73259f38131edd9ac044cc9b9e3869d61813a631..f50f863a7db69f05bcd1ef143a8adac41676c8b9 100644 (file)
@@ -196,6 +196,8 @@ struct config_file {
        char* dlv_anchor_file;
        /** DLV anchor inline */
        struct config_strlist* dlv_anchor_list;
+       /** insecure domain list */
+       struct config_strlist* domain_insecure;
 
        /** the number of seconds maximal TTL used for RRsets and messages */
        int max_ttl;
index 9f8f9542c2fe9fcc426e880f0608beeb3fc8bc4b..e00869bedc8cfc166edaff0e0ce48d3c5866d763 100644 (file)
@@ -361,8 +361,8 @@ static void yy_fatal_error (yyconst char msg[]  );
        *yy_cp = '\0'; \
        (yy_c_buf_p) = yy_cp;
 
-#define YY_NUM_RULES 114
-#define YY_END_OF_BUFFER 115
+#define YY_NUM_RULES 115
+#define YY_END_OF_BUFFER 116
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -370,124 +370,126 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static yyconst flex_int16_t yy_accept[1060] =
+static yyconst flex_int16_t yy_accept[1074] =
     {   0,
-        1,    1,   96,   96,  100,  100,  104,  104,  108,  108,
-        1,    1,  115,  112,    1,   94,   94,  113,  112,  113,
-      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-      112,  112,  112,  112,  112,  112,  112,  112,  112,   96,
-       97,   97,   98,  113,  100,  101,  101,  102,  113,  107,
-      104,  105,  105,  106,  113,  108,  109,  109,  110,  113,
-      111,   95,  111,   99,  113,  111,  112,    0,    1,    0,
-      112,    0,    2,    0,  112,  112,  112,  112,  112,  112,
-      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-
-      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-       96,    0,  100,    0,  107,    0,  104,  108,    0,  111,
-        0,  111,    0,  111,  112,  112,  112,  112,  112,  112,
-      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-      112,  112,  112,  112,  111,  112,  112,  112,  112,  112,
-      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-
-      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-      112,  112,  112,  111,  112,  112,  112,  112,  112,  112,
-      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-      112,  112,   50,  112,  112,  112,  112,  112,    6,  112,
-      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-      112,  112,  112,  112,  112,  112,  112,  112,  112,  111,
-      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-
-      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-      112,  112,  112,  112,  112,  112,  112,  112,  112,  111,
-      112,  112,   20,  112,  112,  112,  112,   12,   13,  112,
-       15,   14,  112,  112,  112,  112,  112,  112,  112,  112,
-      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-      112,  112,  112,    3,  112,  112,  112,  112,  112,  112,
-      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-      112,  112,  112,  111,  112,  112,  112,  112,  112,  112,
-
-      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-      112,  103,  112,  112,  112,  112,  112,  112,  112,  112,
-      112,  112,   23,  112,  112,  112,  112,  112,  112,  112,
-       24,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-      112,  112,  112,  112,  112,   63,  103,  112,  112,  112,
-      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-      112,  112,  112,  112,  112,  112,  112,  112,  112,   62,
-      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-
-      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-      112,  112,  112,  112,  112,   21,  112,  112,  112,  112,
-      112,  112,  112,  112,  112,  112,  112,  112,  112,   22,
-      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-      112,  112,  112,  112,  112,  112,  112,  112,  112,   17,
-      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-      112,  112,  112,   51,   52,  112,   49,  112,  112,  112,
-      112,  112,  112,  112,  112,  112,  112,  112,    5,  112,
-      112,  112,  112,  112,  112,  112,  112,   65,  112,  112,
-
-      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-      112,  112,  112,  112,  112,  112,  112,  112,  112,   81,
-       80,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-      112,  112,  112,  112,  112,   25,  112,  112,  112,  112,
-       53,  112,  112,  112,  112,  112,   78,  112,  112,  112,
-      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-      112,  112,  112,  112,  112,  112,  112,   42,  112,  112,
-      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-      112,  112,  112,  112,  112,  112,  112,  112,  112,    4,
-      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-
-      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-      112,  112,  112,  112,  112,  112,  112,  112,   89,  112,
-       16,  112,  112,   55,   56,   54,  112,  112,  112,  112,
-      112,   61,  112,  112,  112,  112,  112,  112,  112,  112,
-      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-      112,  112,  112,  112,   69,  112,  112,  112,  112,  112,
-      112,  112,  112,  112,   31,  112,  112,  112,  112,  112,
-      112,  112,  112,  112,  112,  112,  112,   60,  112,  112,
-      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-
-       64,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-      112,  112,  112,  112,   71,  112,  112,  112,  112,   59,
-      112,   87,  112,  112,  112,  112,  112,  112,  112,  112,
-      112,  112,  112,  112,  112,  112,   32,   33,  112,   38,
-       74,  112,   82,   79,  112,   27,  112,   76,  112,  112,
-      112,  112,  112,    7,  112,   48,   86,  112,  112,  112,
-      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-      112,  112,  112,  112,  112,   66,  112,  112,  112,  112,
-      112,  112,  112,  112,  112,  112,  112,  112,   75,   26,
-
-       28,  112,  112,  112,  112,  112,   47,  112,  112,  112,
-       90,  112,  112,  112,  112,  112,  112,   45,  112,  112,
-      112,  112,  112,  112,   92,  112,  112,  112,  112,  112,
-      112,  112,   11,  112,  112,  112,  112,  112,  112,   10,
-      112,  112,   29,  112,   91,  112,  112,  112,  112,  112,
-      112,  112,  112,  112,  112,   93,   88,  112,  112,  112,
-      112,  112,  112,  112,  112,  112,   34,  112,  112,  112,
-      112,  112,   30,  112,  112,  112,   67,   68,  112,  112,
-      112,   70,  112,  112,  112,  112,  112,  112,  112,  112,
-      112,  112,  112,  112,   18,  112,  112,  112,  112,  112,
-
-      112,  112,  112,  112,  112,  112,   85,  112,  112,  112,
-      112,  112,  112,   19,  112,    9,  112,  112,   83,   39,
-      112,  112,  112,   73,   57,  112,  112,   41,   44,   40,
-      112,   35,  112,    8,  112,  112,   72,  112,  112,  112,
-       36,  112,   84,  112,  112,   58,   43,   37,  112,  112,
-      112,  112,   46,  112,  112,  112,  112,   77,    0
+        1,    1,   97,   97,  101,  101,  105,  105,  109,  109,
+        1,    1,  116,  113,    1,   95,   95,  114,  113,  114,
+      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
+      113,  113,  113,  113,  113,  113,  113,  113,  113,   97,
+       98,   98,   99,  114,  101,  102,  102,  103,  114,  108,
+      105,  106,  106,  107,  114,  109,  110,  110,  111,  114,
+      112,   96,  112,  100,  114,  112,  113,    0,    1,    0,
+      113,    0,    2,    0,  113,  113,  113,  113,  113,  113,
+      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
+      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
+
+      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
+       97,    0,  101,    0,  108,    0,  105,  109,    0,  112,
+        0,  112,    0,  112,  113,  113,  113,  113,  113,  113,
+      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
+      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
+      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
+      113,  113,  113,  113,  113,  112,  113,  113,  113,  113,
+      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
+      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
+      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
+
+      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
+      113,  113,  113,  113,  113,  112,  113,  113,  113,  113,
+      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
+      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
+      113,  113,  113,  113,  113,   50,  113,  113,  113,  113,
+      113,    6,  113,  113,  113,  113,  113,  113,  113,  113,
+      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
+      113,  113,  112,  113,  113,  113,  113,  113,  113,  113,
+      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
+      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
+
+      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
+      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
+      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
+      113,  113,  113,  112,  113,  113,   20,  113,  113,  113,
+      113,   12,   13,  113,   15,   14,  113,  113,  113,  113,
+      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
+      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
+      113,  113,  113,  113,  113,  113,  113,  113,    3,  113,
+      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
+      113,  113,  113,  113,  113,  113,  113,  113,  112,  113,
+
+      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
+      113,  113,  113,  113,  113,  113,  113,  104,  113,  113,
+      113,  113,  113,  113,  113,  113,  113,  113,   23,  113,
+      113,  113,  113,  113,  113,  113,   24,  113,  113,  113,
+      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
+      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
+      113,   63,  104,  113,  113,  113,  113,  113,  113,  113,
+      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
+      113,  113,  113,  113,  113,  113,   62,  113,  113,  113,
+      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
+
+      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
+      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
+      113,  113,   21,  113,  113,  113,  113,  113,  113,  113,
+      113,  113,  113,  113,  113,  113,   22,  113,  113,  113,
+      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
+      113,  113,  113,  113,  113,  113,  113,   17,  113,  113,
+      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
+      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
+      113,   51,   52,  113,   49,  113,  113,  113,  113,  113,
+      113,  113,  113,  113,  113,  113,    5,  113,  113,  113,
+
+      113,  113,  113,  113,  113,   65,  113,  113,  113,  113,
+      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
+      113,  113,  113,  113,  113,  113,  113,  113,   81,   80,
+      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
+      113,  113,  113,  113,   25,  113,  113,  113,  113,   53,
+      113,  113,  113,  113,  113,   78,  113,  113,  113,  113,
+      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
+      113,  113,  113,  113,  113,  113,  113,   42,  113,  113,
+      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
+      113,  113,  113,  113,  113,  113,  113,  113,  113,    4,
+
+      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
+      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
+      113,  113,  113,  113,  113,  113,  113,  113,   89,  113,
+       16,  113,  113,  113,   55,   56,   54,  113,  113,  113,
+      113,  113,   61,  113,  113,  113,  113,  113,  113,  113,
+      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
+      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
+      113,  113,  113,  113,  113,   69,  113,  113,  113,  113,
+      113,  113,  113,  113,  113,   31,  113,  113,  113,  113,
+      113,  113,  113,  113,  113,  113,  113,  113,  113,   60,
+
+      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
+      113,  113,   64,  113,  113,  113,  113,  113,  113,  113,
+      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
+      113,  113,  113,  113,  113,  113,   71,  113,  113,  113,
+      113,   59,  113,   87,  113,  113,  113,  113,  113,  113,
+      113,  113,  113,  113,  113,  113,  113,  113,  113,   32,
+       33,  113,   38,   74,  113,   82,   79,  113,   27,  113,
+       76,  113,  113,  113,  113,  113,    7,  113,   48,   86,
+      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
+      113,  113,  113,  113,  113,  113,  113,  113,   66,  113,
+
+      113,   94,  113,  113,  113,  113,  113,  113,  113,  113,
+      113,  113,   75,   26,   28,  113,  113,  113,  113,  113,
+       47,  113,  113,  113,   90,  113,  113,  113,  113,  113,
+      113,   45,  113,  113,  113,  113,  113,  113,   92,  113,
+      113,  113,  113,  113,  113,  113,   11,  113,  113,  113,
+      113,  113,  113,   10,  113,  113,   29,  113,   91,  113,
+      113,  113,  113,  113,  113,  113,  113,  113,  113,   93,
+       88,  113,  113,  113,  113,  113,  113,  113,  113,  113,
+       34,  113,  113,  113,  113,  113,   30,  113,  113,  113,
+       67,   68,  113,  113,  113,   70,  113,  113,  113,  113,
+
+      113,  113,  113,  113,  113,  113,  113,  113,   18,  113,
+      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
+       85,  113,  113,  113,  113,  113,  113,   19,  113,    9,
+      113,  113,   83,   39,  113,  113,  113,   73,   57,  113,
+      113,   41,   44,   40,  113,   35,  113,    8,  113,  113,
+       72,  113,  113,  113,   36,  113,   84,  113,  113,   58,
+       43,   37,  113,  113,  113,  113,   46,  113,  113,  113,
+      113,   77,    0
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -530,251 +532,253 @@ static yyconst flex_int32_t yy_meta[40] =
         1,    1,    1,    1,    1,    1,    1,    1,    1
     } ;
 
-static yyconst flex_int16_t yy_base[1074] =
+static yyconst flex_int16_t yy_base[1088] =
     {   0,
         0,    0,   37,   40,   44,   51,   63,   75,   56,   68,
-       87,  108, 2048, 2034,   50, 2130, 2130, 2130,  129,   94,
+       87,  108, 2075, 2061,   50, 2157, 2157, 2157,  129,   94,
        33,  124,   94,   49,   74,   61,   91,   92,  110,  111,
-      112,  133,   50,  135,  137,  136,  145,  143,  159, 2033,
-     2130, 2130, 2130,  122, 2031, 2130, 2130, 2130,  157, 2030,
-     2040, 2130, 2130, 2130,  176, 2028, 2130, 2130, 2130,  180,
-     2027, 2130,  184, 2130,  188,   90, 2025,  194,  198, 2034,
-      205, 2033, 2130, 2032,  158,  166,  122,  116,  189,  181,
-      206,  190,  198,  200,  208,  209,  217,  192,  202,  219,
-      221,  224,  215,  229,  230,  213,  234,  232,  235,  239,
-
-      240,  241,  245,  246,  248,  249,  242,  251,   72,  253,
-     1659,  266, 1602,  268, 1168,  283, 1123, 1004,  277,  507,
-      287,  293,  380,  261,  286,  280,  289,  290,  292,  299,
-      311,  295,  273,  298,  301,  303,  307,  305,  308,  309,
-      321,  326,  333,  314,  341,  337,  343,  345,  344,  312,
-      330,  324,  334,  347,  348,  352,  355,  147,  354,  357,
-      358,  365,  368,  362,  366,  369,  372,  356,  373,  379,
-      384,  386,  380,  389,  390,  394,  392,  399,  397,  408,
-      395,  401,  405,  409,  407,  411,  413,  412,  414,  417,
-      419,  427,  421,  432,  428,  436,  433,  438,  439,  441,
-
-      449,  443,  447,  446,  458,  454,  450,  457,  462,  460,
-      482,  464,  466,  456,  467,  473,  469,  472,  480,  476,
-      478,  494,  488,  493,  495,  499,  501,  502,  504,  505,
-      506,  512,  520,  517,  522,  524,  533,  529,  518,  531,
-      532,  534, 2130,  539,  537,  541,  542,  543, 2130,  544,
-      545,  546,  552,  548,  556,  560,  557,  567,  559,  569,
-      563,  573,  565,  571,  578,  581,  582,  585,  584,  589,
-      595,  592,  601,  594,  596,  607,  602,  609,  613,  619,
-      617,  621,  618,  622,  629,  627,  625,  628,  632,  633,
-      638,  634,  644,  640,  645,  642,  651,  657,  653,  658,
-
-      660,  662,  636,  664,  665,  668,  674,  666,  676,  682,
-      672,  680,  683,  685,  686,  693,  689,  687,  694,  695,
-      696,  697,  591,  700,  702,  704,  706,  708,  712,  713,
-      716,  720, 2130,  727,  714,  723,  725, 2130, 2130,  728,
-     2130, 2130,  729,  735,  746,  734,  736,  737,  742,  744,
-      747,  752,  755,  757,  743,  761,  770,  759,  768,  776,
-      777,  766,  778,  779,  781,  783,  782,  785,  795,  791,
-      792,  796,  798, 2130,  793,  800,  803,  805,  807,  810,
-      811,  813,  815,  812,  817,  818,  820,  826,  830,  824,
-      832,  828,  835,  837,  838,  839,  864,  840,  843,  846,
-
-      847,  849,  851,  856,  850,  854,  861,  871,  872,  857,
-      882, 2130,  883,  884,  874,  885,  889,  888,  890,  891,
-      892,  901, 2130,  899,  900,  902,  903,  904,  909,  917,
-     2130,  915,  918,  920,  921,  922,  923,  926,  925,  930,
-      931,  932,  934,  935,  738,  941,  947,  945,  949,  946,
-      952,  955,  953,  954,  956, 2130,  254,  958,  962,  959,
-      961,  968,  969,  970,  977,  973,  978,  979,  967,  988,
-      980,  983,  989,  990,  994,  993, 1000,  996,  997, 2130,
-     1003, 1001, 1002, 1005, 1019, 1007, 1026, 1023, 1025, 1027,
-     1029, 1013, 1037, 1038, 1034, 1036, 1035, 1041, 1042, 1046,
-
-     1047, 1048, 1050, 1052, 1054, 1059, 1062, 1064, 1071, 1055,
-     1072, 1074, 1063, 1076, 1078, 2130, 1088, 1089, 1091, 1087,
-     1090, 1093, 1094, 1095, 1098, 1099, 1097, 1101, 1102, 2130,
-     1108, 1104, 1105, 1111, 1106, 1113, 1119, 1118, 1122, 1121,
-     1124, 1125, 1135, 1134, 1136, 1140, 1146, 1147, 1138, 2130,
-     1148, 1150, 1156, 1159, 1152, 1154, 1166, 1162, 1163, 1164,
-     1165, 1172, 1167, 1170, 1173, 1175, 1176, 1177, 1191, 1187,
-     1178, 1199, 1200, 2130, 2130, 1202, 2130, 1193, 1203, 1180,
-     1204, 1206, 1208, 1210, 1211, 1213, 1215, 1214, 2130, 1216,
-     1217, 1220, 1065, 1222, 1228, 1225, 1226, 2130, 1231, 1229,
-
-     1238, 1235, 1241, 1242, 1243, 1250, 1246, 1244, 1252, 1255,
-     1256, 1258, 1264, 1257, 1260, 1263, 1266, 1267, 1269, 2130,
-     2130, 1265, 1273, 1274, 1278, 1283, 1291, 1289, 1294, 1295,
-     1297, 1296, 1298, 1299, 1301, 2130, 1307, 1309, 1305, 1303,
-     2130, 1313, 1317, 1318, 1320, 1322, 2130, 1323, 1324, 1325,
-     1326, 1329, 1327, 1332, 1339, 1333, 1341, 1346, 1348, 1349,
-     1351, 1360, 1353, 1357, 1362, 1364, 1365, 2130, 1371, 1354,
-     1374, 1367, 1376, 1382, 1379, 1370, 1380, 1381, 1378, 1383,
-     1384, 1386, 1387, 1388, 1394, 1389, 1404, 1397, 1402, 2130,
-     1407, 1413, 1410, 1414, 1411, 1417, 1419, 1420, 1422, 1424,
-
-     1425, 1427, 1436, 1443, 1437, 1435, 1445, 1444, 1448, 1429,
-     1455, 1449, 1451, 1458, 1453, 1460, 1461, 1464, 2130, 1462,
-     2130, 1468, 1466, 2130, 2130, 2130, 1477, 1470, 1478, 1481,
-     1485, 2130, 1476, 1488, 1482, 1486, 1490, 1492, 1491, 1493,
-     1494, 1495, 1500, 1501, 1508, 1505, 1509, 1515, 1511, 1519,
-     1512, 1520, 1526, 1522, 1523, 1525, 1529, 1534, 1528, 1532,
-     1535, 1533, 1536, 1545, 2130, 1549, 1538, 1547, 1558, 1550,
-     1554, 1560, 1561, 1568, 2130, 1562, 1570, 1574, 1565, 1576,
-     1578, 1572, 1579, 1580, 1583, 1584, 1585, 2130, 1586, 1588,
-     1590, 1591, 1594, 1608, 1597, 1612, 1614, 1600, 1616, 1618,
-
-     2130, 1620, 1622, 1605, 1627, 1623, 1628, 1629, 1630, 1636,
-     1633, 1638, 1640, 1642, 1643, 1645, 1648, 1649, 1650, 1647,
-     1651, 1654, 1661, 1665, 2130, 1658, 1664, 1666, 1676, 2130,
-     1672, 2130, 1674, 1675, 1682, 1679, 1685, 1686, 1687, 1689,
-     1695, 1691, 1692, 1693, 1696, 1699, 2130, 2130, 1702, 2130,
-     2130, 1710, 2130, 2130, 1712, 2130, 1714, 2130, 1705, 1715,
-     1717, 1718, 1719, 2130, 1721, 2130, 2130, 1722, 1723, 1726,
-     1729, 1730, 1732, 1734, 1735, 1736, 1737, 1739, 1743, 1741,
-     1744, 1745, 1749, 1751, 1760, 2130, 1753, 1761, 1763, 1755,
-     1765, 1766, 1768, 1770, 1779, 1775, 1776, 1777, 2130, 2130,
-
-     2130, 1778, 1781, 1786, 1788, 1789, 2130, 1792, 1780, 1794,
-     2130, 1800, 1796, 1802, 1804, 1805, 1806, 2130, 1808, 1812,
-     1815, 1813, 1822, 1825, 2130, 1826, 1827, 1816, 1829, 1832,
-     1833, 1835, 2130, 1830, 1836, 1843, 1837, 1840, 1845, 2130,
-     1847, 1851, 2130, 1853, 2130, 1854, 1857, 1859, 1861, 1866,
-     1863, 1595, 1872, 1869, 1871, 2130, 2130, 1870, 1876, 1873,
-     1877, 1878, 1879, 1880, 1882, 1885, 2130, 1887, 1886, 1895,
-     1896, 1888, 2130, 1898, 1901, 1902, 2130, 2130, 1903, 1909,
-     1911, 2130, 1912, 1914, 1915, 1919, 1916, 1921, 1923, 1924,
-     1922, 1925, 1935, 1936, 2130, 1938, 1926, 1928, 1943, 1952,
-
-     1939, 1945, 1947, 1954, 1956, 1949, 2130, 1959, 1961, 1963,
-     1966, 1969, 1971, 2130, 1972, 2130, 1976, 1977, 2130, 2130,
-     1978, 1980, 1983, 2130, 2130, 1981, 1985, 2130, 2130, 2130,
-     1991, 2130, 1992, 2130, 1994, 1984, 2130, 1987, 1998, 2003,
-     2130, 2007, 2130, 2000, 2008, 2130, 2130, 2130, 2010, 1995,
-     2017, 2004, 2130, 2011, 2018, 2019, 2021, 2130, 2130, 2051,
-     2057, 2063, 2069, 2075,   94, 2081, 2087, 2093, 2099, 2105,
-     2111, 2117, 2123
+      112,  133,   50,  135,  137,  136,  145,  143,  159, 2060,
+     2157, 2157, 2157,  122, 2058, 2157, 2157, 2157,  157, 2057,
+     2067, 2157, 2157, 2157,  176, 2055, 2157, 2157, 2157,  180,
+     2054, 2157,  184, 2157,  188,   90, 2052,  194,  198, 2061,
+      205, 2060, 2157, 2059,  158,  166,  122,  116,  189,  181,
+      206,  190,  198,  200,  208,  209,  217,  192,  202,  221,
+      222,  225,  229,  231,  230,  213,  235,  234,  236,  240,
+
+      241,  244,  246,  247,  249,  250,  251,  254,   72,  255,
+     1981,  266, 1615,  271, 1560,  286,  875,  651,  269,  384,
+      290,  296,  280,  266,  289,  283,  292,  293,  295,  302,
+      314,  298,  301,  303,  272,  304,  305,  310,  311,  312,
+      316,  320,  330,  332,  321,  344,  340,  346,  348,  347,
+      349,  333,  337,  350,  351,  352,  356,  360,  147,  361,
+      358,  362,  369,  372,  373,  370,  366,  374,  376,  381,
+      383,  388,  393,  308,  390,  395,  396,  397,  401,  402,
+      404,  412,  408,  410,  411,  413,  416,  417,  418,  420,
+      419,  426,  425,  438,  423,  427,  433,  436,  443,  445,
+
+      446,  442,  454,  448,  455,  456,  463,  459,  457,  461,
+      466,  467,  486,  472,  470,  471,  474,  478,  476,  480,
+      483,  484,  494,  507,  490,  497,  506,  509,  508,  511,
+      514,  515,  482,  516,  517,  530,  521,  531,  518,  538,
+      532,  534,  535,  539,  542, 2157,  544,  547,  548,  549,
+      550, 2157,  551,  552,  553,  559,  555,  563,  564,  566,
+      574,  567,  575,  570,  577,  581,  585,  583,  584,  588,
+      589,  592,  594,  604,  600,  610,  591,  601,  611,  605,
+      620,  622,  617,  624,  626,  632,  628,  630,  636,  635,
+      637,  629,  638,  640,  644,  645,  653,  655,  657,  650,
+
+      659,  665,  662,  666,  667,  671,  672,  673,  674,  675,
+      682,  684,  678,  696,  685,  688,  686,  689,  694,  702,
+      698,  700,  703,  706,  710,  711,  712,  713,  715,  716,
+      714,  717,  723,  725,  728,  733, 2157,  740,  727,  736,
+      738, 2157, 2157,  739, 2157, 2157,  741,  742,  748,  757,
+      747,  749,  754,  759,  755,  765,  763,  770,  774,  760,
+      773,  782,  772,  784,  786,  788,  790,  792,  793,  794,
+      797,  798,  804,  811,  807,  795,  813,  815, 2157,  799,
+      816,  817,  819,  821,  823,  824,  827,  830,  825,  831,
+      832,  833,  839,  842,  841,  847,  846,  849,  851,  852,
+
+      853,  878,  855,  856,  858,  861,  862,  868,  884,  865,
+      857,  873,  870,  888,  886,  890,  898, 2157,  904,  902,
+      893,  895,  901,  907,  913,  891,  903,  919, 2157,  915,
+      920,  921,  922,  923,  928,  936, 2157,  933,  924,  935,
+      938,  940,  942,  943,  944,  948,  950,  949,  951,  957,
+      953,  966,  970,  952,  959,  969,  971,  976,  973,  974,
+      975, 2157,  215,  978,  982,  979,  980,  981,  993,  986,
+      990,  987,  997,  999,  996, 1002, 1003, 1008, 1009, 1010,
+     1011, 1012, 1013, 1016, 1014, 1017, 2157, 1022, 1020, 1018,
+     1035, 1042, 1033, 1044, 1047, 1045, 1051, 1043, 1049, 1058,
+
+     1059, 1055, 1061, 1062, 1064, 1066, 1056, 1063, 1069, 1072,
+     1073, 1074, 1084, 1086, 1087, 1089, 1075, 1091, 1096, 1079,
+     1094, 1102, 2157, 1108, 1110, 1111, 1104, 1107, 1115, 1112,
+     1116, 1117, 1118, 1120, 1121, 1123, 2157, 1129,  615, 1125,
+     1122, 1130, 1133, 1134, 1131, 1138, 1139, 1142, 1147, 1148,
+     1151, 1154, 1155, 1156, 1163, 1164, 1167, 2157, 1165, 1162,
+     1178, 1172, 1174, 1179, 1180, 1182, 1183, 1184, 1186, 1190,
+     1187, 1191, 1188, 1192, 1194, 1195, 1198, 1209, 1199, 1216,
+     1217, 2157, 2157, 1221, 2157, 1210, 1218, 1200, 1222, 1223,
+     1229, 1224, 1230, 1226, 1232, 1234, 2157, 1239, 1235, 1240,
+
+     1025, 1241, 1247, 1243, 1245, 2157, 1249, 1248, 1256, 1261,
+     1250, 1252, 1264, 1265, 1267, 1271, 1274, 1258, 1275, 1277,
+     1280, 1284, 1281, 1282, 1283, 1285, 1287, 1289, 2157, 2157,
+     1294, 1298, 1290, 1303, 1308, 1311, 1314, 1310, 1316, 1318,
+     1319, 1320, 1321, 1323, 2157, 1331, 1332, 1328, 1337, 2157,
+     1335, 1324, 1325, 1339, 1345, 2157, 1347, 1348, 1349, 1351,
+     1350, 1353, 1357, 1365, 1358, 1361, 1366, 1374, 1362, 1376,
+     1382, 1364, 1378, 1381, 1384, 1387, 1388, 2157, 1394, 1390,
+     1397, 1393, 1396, 1404, 1400, 1401, 1402, 1403, 1405, 1406,
+     1409, 1407, 1411, 1417, 1416, 1413, 1428, 1415, 1430, 2157,
+
+     1431, 1438, 1434, 1435, 1440, 1443, 1444, 1437, 1447, 1448,
+     1449, 1450, 1460, 1463, 1466, 1465, 1472, 1468, 1469, 1451,
+     1479, 1471, 1475, 1482, 1478, 1483, 1485, 1486, 2157, 1489,
+     2157, 1496, 1492, 1490, 2157, 2157, 2157, 1503,  751, 1504,
+     1286, 1507, 2157, 1494, 1511, 1500, 1513, 1515, 1516, 1502,
+     1509, 1518, 1520, 1519, 1524, 1531, 1526, 1534, 1536, 1535,
+     1541, 1532, 1542, 1548, 1544, 1545, 1547, 1551, 1556, 1557,
+     1555, 1558, 1553, 1554, 1569, 2157, 1572, 1559, 1574, 1577,
+     1579, 1580, 1581, 1582, 1590, 2157, 1586, 1592, 1593, 1596,
+     1597, 1600, 1598, 1601, 1603, 1605, 1607, 1609, 1610, 2157,
+
+     1611, 1612, 1616, 1617, 1620, 1627, 1623, 1633, 1635, 1630,
+     1638, 1640, 2157, 1641, 1643, 1644, 1648, 1650, 1645, 1652,
+     1653, 1657, 1658, 1660, 1662, 1664, 1665, 1667, 1670, 1671,
+     1673, 1672, 1674, 1676, 1686, 1680, 2157, 1682, 1688, 1693,
+     1696, 2157, 1689, 2157, 1695, 1699, 1706, 1703, 1708, 1710,
+     1700, 1712, 1713, 1719, 1715, 1717, 1722, 1716, 1723, 2157,
+     2157, 1728, 2157, 2157, 1731, 2157, 2157, 1735, 2157, 1737,
+     2157, 1743, 1739, 1726, 1741, 1744, 2157, 1746, 2157, 2157,
+     1747, 1748, 1751, 1754, 1755, 1757, 1758, 1759, 1760, 1761,
+     1765, 1768, 1762, 1766, 1769, 1773, 1774, 1784, 2157, 1776,
+
+     1789, 2157, 1787, 1780, 1785, 1791, 1792, 1800, 1802, 1793,
+     1795, 1801, 2157, 2157, 2157, 1804, 1806, 1813, 1805, 1810,
+     2157, 1816, 1817, 1819, 2157, 1822, 1825, 1826, 1827, 1829,
+     1830, 2157, 1831, 1837, 1839, 1833, 1841, 1850, 2157, 1851,
+     1843, 1854, 1852, 1853, 1858, 1860, 2157, 1845, 1863, 1866,
+     1867, 1870, 1868, 2157, 1871, 1872, 2157, 1875, 2157, 1877,
+     1883, 1886, 1888, 1891, 1881, 1879, 1900, 1902, 1892, 2157,
+     2157, 1894, 1898, 1903, 1904, 1905, 1907, 1908, 1909, 1911,
+     2157, 1912, 1914, 1917, 1919, 1921, 2157, 1924, 1925, 1926,
+     2157, 2157, 1935, 1928, 1936, 2157, 1938, 1939, 1941, 1947,
+
+     1944, 1942, 1949, 1948, 1950, 1952, 1955, 1959, 2157, 1963,
+     1965, 1966, 1968, 1970, 1972, 1974, 1973, 1978, 1980, 1975,
+     2157, 1982, 1984, 1990, 1996, 1992, 1999, 2157, 2000, 2157,
+     2003, 2004, 2157, 2157, 2005, 2007, 2010, 2157, 2157, 2008,
+     2012, 2157, 2157, 2157, 2018, 2157, 2019, 2157, 2021, 2011,
+     2157, 2014, 2025, 2030, 2157, 2034, 2157, 2027, 2035, 2157,
+     2157, 2157, 2037, 2022, 2044, 2031, 2157, 2038, 2045, 2046,
+     2048, 2157, 2157, 2078, 2084, 2090, 2096, 2102,   94, 2108,
+     2114, 2120, 2126, 2132, 2138, 2144, 2150
     } ;
 
-static yyconst flex_int16_t yy_def[1074] =
+static yyconst flex_int16_t yy_def[1088] =
     {   0,
-     1059,    1, 1060, 1060, 1061, 1061, 1062, 1062, 1063, 1063,
-     1064, 1064, 1059, 1065, 1059, 1059, 1059, 1059, 1066, 1065,
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1067,
-     1059, 1059, 1059, 1067, 1068, 1059, 1059, 1059, 1068, 1069,
-     1059, 1059, 1059, 1059, 1069, 1070, 1059, 1059, 1059, 1070,
-     1071, 1059, 1072, 1059, 1071, 1071, 1065, 1065, 1059, 1073,
-     1066, 1073, 1059, 1066, 1065, 1065, 1065, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-     1067, 1067, 1068, 1068, 1069, 1069, 1059, 1070, 1070, 1071,
-     1071, 1072, 1072, 1071, 1065, 1065, 1065, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1071, 1065, 1065, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-     1065, 1065, 1065, 1071, 1065, 1065, 1065, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-     1065, 1065, 1059, 1065, 1065, 1065, 1065, 1065, 1059, 1065,
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1071,
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1071,
-     1065, 1065, 1059, 1065, 1065, 1065, 1065, 1059, 1059, 1065,
-     1059, 1059, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-     1065, 1065, 1065, 1059, 1065, 1065, 1065, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-     1065, 1065, 1065, 1071, 1065, 1065, 1065, 1065, 1065, 1065,
-
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-     1065, 1059, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-     1065, 1065, 1059, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-     1059, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1065, 1059, 1071, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1059,
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1065, 1059, 1065, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1059,
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1059,
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-     1065, 1065, 1065, 1059, 1059, 1065, 1059, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1059, 1065,
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1059, 1065, 1065,
-
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1059,
-     1059, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1065, 1059, 1065, 1065, 1065, 1065,
-     1059, 1065, 1065, 1065, 1065, 1065, 1059, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1059, 1065, 1065,
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1059,
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1059, 1065,
-     1059, 1065, 1065, 1059, 1059, 1059, 1065, 1065, 1065, 1065,
-     1065, 1059, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1059, 1065, 1065, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1059, 1065, 1065, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1059, 1065, 1065,
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-
-     1059, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1059, 1065, 1065, 1065, 1065, 1059,
-     1065, 1059, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1065, 1065, 1059, 1059, 1065, 1059,
-     1059, 1065, 1059, 1059, 1065, 1059, 1065, 1059, 1065, 1065,
-     1065, 1065, 1065, 1059, 1065, 1059, 1059, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1065, 1059, 1065, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1059, 1059,
-
-     1059, 1065, 1065, 1065, 1065, 1065, 1059, 1065, 1065, 1065,
-     1059, 1065, 1065, 1065, 1065, 1065, 1065, 1059, 1065, 1065,
-     1065, 1065, 1065, 1065, 1059, 1065, 1065, 1065, 1065, 1065,
-     1065, 1065, 1059, 1065, 1065, 1065, 1065, 1065, 1065, 1059,
-     1065, 1065, 1059, 1065, 1059, 1065, 1065, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1065, 1059, 1059, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1065, 1065, 1059, 1065, 1065, 1065,
-     1065, 1065, 1059, 1065, 1065, 1065, 1059, 1059, 1065, 1065,
-     1065, 1059, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065,
-     1065, 1065, 1065, 1065, 1059, 1065, 1065, 1065, 1065, 1065,
-
-     1065, 1065, 1065, 1065, 1065, 1065, 1059, 1065, 1065, 1065,
-     1065, 1065, 1065, 1059, 1065, 1059, 1065, 1065, 1059, 1059,
-     1065, 1065, 1065, 1059, 1059, 1065, 1065, 1059, 1059, 1059,
-     1065, 1059, 1065, 1059, 1065, 1065, 1059, 1065, 1065, 1065,
-     1059, 1065, 1059, 1065, 1065, 1059, 1059, 1059, 1065, 1065,
-     1065, 1065, 1059, 1065, 1065, 1065, 1065, 1059,    0, 1059,
-     1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059,
-     1059, 1059, 1059
+     1073,    1, 1074, 1074, 1075, 1075, 1076, 1076, 1077, 1077,
+     1078, 1078, 1073, 1079, 1073, 1073, 1073, 1073, 1080, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1081,
+     1073, 1073, 1073, 1081, 1082, 1073, 1073, 1073, 1082, 1083,
+     1073, 1073, 1073, 1073, 1083, 1084, 1073, 1073, 1073, 1084,
+     1085, 1073, 1086, 1073, 1085, 1085, 1079, 1079, 1073, 1087,
+     1080, 1087, 1073, 1080, 1079, 1079, 1079, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+     1081, 1081, 1082, 1082, 1083, 1083, 1073, 1084, 1084, 1085,
+     1085, 1086, 1086, 1085, 1079, 1079, 1079, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1085, 1079, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1085, 1079, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1073, 1079, 1079, 1079, 1079,
+     1079, 1073, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+     1079, 1079, 1085, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+     1079, 1079, 1079, 1085, 1079, 1079, 1073, 1079, 1079, 1079,
+     1079, 1073, 1073, 1079, 1073, 1073, 1079, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1073, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1085, 1079,
+
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1073, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1073, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1073, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+     1079, 1073, 1085, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1073, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+     1079, 1079, 1073, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1073, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1073, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+     1079, 1073, 1073, 1079, 1073, 1079, 1079, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1073, 1079, 1079, 1079,
+
+     1079, 1079, 1079, 1079, 1079, 1073, 1079, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1073, 1073,
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1073, 1079, 1079, 1079, 1079, 1073,
+     1079, 1079, 1079, 1079, 1079, 1073, 1079, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1073, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1073,
+
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1073, 1079,
+     1073, 1079, 1079, 1079, 1073, 1073, 1073, 1079, 1079, 1079,
+     1079, 1079, 1073, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1073, 1079, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1073, 1079, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1073,
+
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+     1079, 1079, 1073, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1073, 1079, 1079, 1079,
+     1079, 1073, 1079, 1073, 1079, 1079, 1079, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1073,
+     1073, 1079, 1073, 1073, 1079, 1073, 1073, 1079, 1073, 1079,
+     1073, 1079, 1079, 1079, 1079, 1079, 1073, 1079, 1073, 1073,
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1073, 1079,
+
+     1079, 1073, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+     1079, 1079, 1073, 1073, 1073, 1079, 1079, 1079, 1079, 1079,
+     1073, 1079, 1079, 1079, 1073, 1079, 1079, 1079, 1079, 1079,
+     1079, 1073, 1079, 1079, 1079, 1079, 1079, 1079, 1073, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1073, 1079, 1079, 1079,
+     1079, 1079, 1079, 1073, 1079, 1079, 1073, 1079, 1073, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1073,
+     1073, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+     1073, 1079, 1079, 1079, 1079, 1079, 1073, 1079, 1079, 1079,
+     1073, 1073, 1079, 1079, 1079, 1073, 1079, 1079, 1079, 1079,
+
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1073, 1079,
+     1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
+     1073, 1079, 1079, 1079, 1079, 1079, 1079, 1073, 1079, 1073,
+     1079, 1079, 1073, 1073, 1079, 1079, 1079, 1073, 1073, 1079,
+     1079, 1073, 1073, 1073, 1079, 1073, 1079, 1073, 1079, 1079,
+     1073, 1079, 1079, 1079, 1073, 1079, 1073, 1079, 1079, 1073,
+     1073, 1073, 1079, 1079, 1079, 1079, 1073, 1079, 1079, 1079,
+     1079, 1073,    0, 1073, 1073, 1073, 1073, 1073, 1073, 1073,
+     1073, 1073, 1073, 1073, 1073, 1073, 1073
     } ;
 
-static yyconst flex_int16_t yy_nxt[2170] =
+static yyconst flex_int16_t yy_nxt[2197] =
     {   0,
        14,   15,   16,   17,   18,   19,   18,   14,   14,   14,
        14,   18,   20,   21,   14,   22,   23,   24,   25,   14,
@@ -785,7 +789,7 @@ static yyconst flex_int16_t yy_nxt[2170] =
        59,   68,   68,   49,   51,   52,   53,   54,   60,   18,
        57,   58,   59,   68,   84,   55,   51,   52,   53,   54,
        60,   18,   85,   96,   68,   82,   68,   55,   15,   16,
-       17,   62,   63,   64,   67,   67,  163,   67,   67,   65,
+       17,   62,   63,   64,   67,   67,  164,   67,   67,   65,
 
        67,   83,  121,   68,   68,   67,   68,   86,   66,   15,
        16,   17,   62,   63,   64,   79,  124,   87,   80,   88,
@@ -793,230 +797,234 @@ static yyconst flex_int16_t yy_nxt[2170] =
        72,   73,   72,   72,   68,   72,   68,   76,   90,   91,
        72,   74,  128,   92,   77,   68,   93,   68,   68,   68,
        94,   78,  127,  103,  100,   68,   97,   68,  105,   68,
-      113,  205,   98,  113,  101,   99,   95,  102,  104,  107,
+      113,  207,   98,  113,  101,   99,   95,  102,  104,  107,
        68,   68,  109,  125,  108,  106,  110,  115,   68,  115,
       115,  126,  115,  118,  118,   72,   73,   72,   72,  120,
        72,  120,  120,   68,  120,   67,  123,   67,   67,   69,
 
        67,   68,   68,   70,   68,   67,   72,   73,   72,   72,
        68,   72,   68,  131,   68,  130,   72,   74,   68,  129,
-       68,   68,  132,  140,  135,   68,  136,   68,  133,   68,
-      134,   68,  137,   68,  142,  138,   68,  144,  143,  141,
-      146,   68,   68,  145,   68,  149,   68,   68,  147,  139,
-      150,   68,   68,   68,   68,  148,  152,   68,   68,  157,
-       68,   68,  151,   68,  153,   68,  121,  154,  162,  111,
-      111,  113,  155,  121,  113,  156,  165,  161,  159,  158,
-      118,  118,  160,  164,  115,   68,  115,  115,  120,  115,
-      120,  120,   68,  120,   72,   73,   72,   72,   68,   72,
-
-      167,   68,   68,  166,   68,  123,  171,   68,  178,  170,
-       68,   68,  177,   68,  179,   68,  168,   68,  180,   68,
-       68,   68,  169,   68,   68,  185,   68,  172,  187,  181,
-      197,  182,  173,   68,  183,  184,   68,  174,   68,  188,
-      189,  186,   68,  175,  176,   68,   68,  191,  192,   68,
-      194,  190,  195,   68,  193,   68,   68,   68,  199,   68,
-       68,  200,  198,  196,   68,  202,   68,   68,   68,   68,
-       68,  208,  209,  206,   68,  211,  212,   68,  121,  201,
-       68,   68,   73,  217,   68,   68,  203,  204,  207,  216,
-      214,   68,   68,  213,  219,  210,   68,  220,   68,  221,
-
-      215,   68,   68,  218,   68,  224,   68,   68,  222,   68,
-      225,   68,  227,   68,  228,  229,  223,   68,  226,   68,
-       68,   68,  233,   68,   68,   68,   68,  230,  236,   68,
-      232,   68,  243,   68,  231,  235,  237,  234,  239,   68,
-       68,  241,  242,  240,   68,   68,  238,  244,   68,  249,
-       68,   68,  250,   68,  248,   68,  252,  245,   68,   68,
-      246,   68,   68,  247,  254,  256,   68,  255,  121,   68,
-       68,  257,   68,  251,   68,  253,   68,  260,   68,   68,
-      272,   68,  258,  259,   68,   68,  262,  269,   68,  270,
-       68,  268,   68,  261,   68,  277,  263,  264,  271,  274,
-
-       68,  273,  276,  278,  279,   68,   68,   68,  265,  266,
-      267,   68,  275,   68,   68,  283,   68,   68,   68,  121,
-      280,  281,  289,  282,   68,  286,  288,  291,  285,   68,
-       68,  284,   68,  290,   68,  292,   68,  294,  287,  293,
-      295,   68,  297,   68,   68,   68,   68,  300,  298,   68,
-      296,   68,  301,   68,   68,   68,   68,   68,   68,  309,
-       68,  303,  307,  304,   68,  299,  308,  305,   68,   68,
-      302,   68,   68,  312,  317,   68,  306,   68,  310,   68,
-      313,   68,  320,   68,  318,   68,  322,  311,  314,  316,
-       68,  319,  323,   68,   68,  324,   68,   68,  315,  327,
-
-      321,  121,  331,   68,   68,  330,   68,   68,   68,  325,
-      387,  329,  333,   68,   68,  326,  328,  332,  334,   68,
-      338,   68,  336,  335,  339,   68,  340,  337,  341,   68,
-       68,   68,  342,   68,   68,  343,  345,   68,  344,   68,
-       68,   68,  347,  346,   68,   68,   68,  354,   68,  349,
-       68,  355,   68,  351,   68,  356,   68,   68,  352,  350,
-      348,  357,  353,   68,  361,   68,  366,  359,  360,   68,
-       68,  362,   68,  363,   68,  364,   68,   68,   68,  365,
-       68,  370,  368,  358,   68,  369,   68,  371,   68,  373,
-      367,  372,   68,  374,   68,   68,  376,   68,   68,   68,
-
-      380,   68,  381,  382,  375,   68,   68,   68,   68,   68,
-      377,  383,   68,  379,   68,  378,   68,  388,   68,  389,
-       68,  390,  386,  384,   68,  121,   68,  385,   68,  392,
-      394,  395,   68,  396,  397,   68,  391,   68,  393,   68,
-       68,   68,  403,  399,  398,  402,   68,   68,   68,   68,
-       68,  409,  400,  412,   68,   68,   68,  401,   68,   68,
-      414,  512,  404,  413,   68,  405,  410,   68,  416,   68,
-      406,   68,  417,   68,  411,  418,  407,  408,   68,  415,
-       68,  419,   68,  420,  425,  422,  421,  423,   68,   68,
-       68,   68,  424,   68,   68,   68,  431,   68,  426,  427,
-
-      429,  430,  432,   68,   68,   68,  433,   68,   68,  435,
-       68,  428,   68,  436,  438,   68,  439,   68,  434,   68,
-      445,  437,   68,   68,   68,   68,  441,   68,  443,   68,
-       68,  446,   68,  442,  440,  449,   68,  444,   68,  451,
-       68,  448,   68,  447,   68,  452,  456,   68,  457,  121,
-       68,   68,   68,  450,  453,   68,  469,  454,   68,   68,
-      455,   68,   68,   68,  470,  458,   68,  475,   68,   68,
-      466,  471,  467,   68,  474,  459,   68,  465,  476,  460,
-      468,  461,  473,   68,   68,  462,   68,  463,  479,  472,
-      481,  477,  464,  480,   68,   68,   68,   68,  478,  482,
-
-       68,   68,   68,   68,   68,  483,  485,  487,  490,  486,
-      484,   68,   68,   68,   68,   68,   68,  492,  489,  493,
-      494,   68,  496,  488,  497,  495,  491,   68,  498,   68,
-       68,  499,   68,   68,   68,   68,  502,   68,   68,  503,
-      504,  505,   68,   68,   68,  500,   68,   68,  513,  509,
-      511,  510,  501,   68,  514,  506,  508,   68,   68,   68,
-      516,   68,  507,  519,   68,   68,   68,   68,   68,  524,
-       68,   68,  515,   68,   68,  521,  525,  517,  518,   68,
-       68,   68,   68,  520,  523,   68,  528,  526,  530,   68,
-       68,   68,   68,  522,  527,   68,  533,  529,  534,  532,
-
-       68,   68,   68,  531,  535,   68,   68,  536,   68,   68,
-      537,  541,   68,   68,   68,   68,  119,   68,  544,   68,
-      538,  546,  548,  539,  540,   68,  549,  542,  543,  545,
-      550,   68,  551,  552,  547,   68,  553,   68,   68,   68,
-      555,   68,  554,  557,  558,  559,   68,   68,   68,   68,
-       68,  560,  561,   68,   68,  556,  562,  566,   68,   68,
-       68,  563,   68,  564,   68,  565,   68,   68,  570,  567,
-      574,   68,  568,  575,   68,   68,   68,   68,  569,  656,
-      571,  576,  577,   68,   68,  573,   68,  578,   68,  572,
-       68,  580,  579,  581,  582,  584,  585,  583,  586,   68,
-
-       68,   68,   68,   68,  589,   68,   68,   68,  587,   68,
-       68,   68,  593,   68,   68,  597,   68,   68,   68,  598,
-       68,  588,  602,   68,  117,   68,  590,  591,  592,  594,
-       68,   68,  596,   68,   68,  600,   68,   68,  595,  606,
-      607,  608,  599,  601,  603,  604,   68,   68,   68,  605,
-       68,  616,   68,  614,  615,  609,  610,  613,   68,   68,
-       68,  611,   68,  619,   68,  617,   68,  620,   68,  612,
-      621,   68,  623,  624,   68,   68,   68,   68,   68,   68,
-      116,  618,   68,  622,   68,   68,  632,   68,   68,   68,
-       68,  633,   68,  625,  626,  627,  628,  631,  629,   68,
-
-      630,  634,  636,   68,  637,   68,  639,  640,  642,  635,
-      638,   68,   68,  641,   68,   68,   68,  644,   68,  647,
-       68,  645,   68,   68,  649,   68,   68,   68,   68,   68,
-      643,  651,   68,  646,   68,  658,  650,   68,   68,  657,
-       68,   68,  648,   68,  660,  652,  653,   68,  661,  654,
-       68,  663,  655,   68,   68,   68,   68,  659,   68,  666,
-      667,  668,   68,  669,   68,  664,  662,   68,   68,   68,
-       68,  675,   68,  665,  670,   68,   68,   68,   68,   68,
-      683,   68,  673,  674,  671,   68,   68,  672,  680,  676,
-       68,  681,  677,  679,  684,   68,  678,  682,  689,  686,
-
-      690,   68,  687,   68,  688,  685,   68,   68,   68,   68,
-       68,   68,  696,   68,  698,   68,  699,   68,  701,   68,
-      692,   68,  694,  700,  702,   68,  691,  693,  695,   68,
-       68,  697,   68,  703,   68,   68,   68,   68,   68,   68,
-      709,   68,  710,  711,   68,   68,  715,  704,  706,  705,
-      712,   68,  707,   68,  713,  708,  714,  716,   68,  719,
-       68,   68,  721,   68,  718,   68,   68,  722,  724,   68,
-      720,  717,   68,  725,   68,  726,   68,   68,  728,   68,
-      727,  730,   68,   68,  729,  723,   68,  732,   68,  733,
-       68,   68,   68,   68,   68,   68,   68,  742,   68,   68,
-
-       68,   68,  737,  734,  731,  735,   68,  745,  744,   68,
-      736,  740,  738,  739,   68,  746,   68,  748,  743,   68,
-      752,  741,   68,   68,  751,   68,   68,  747,  755,   68,
-      750,   68,   68,  754,   68,  749,   68,   68,  756,   68,
-      759,   68,  753,  763,  766,  760,  757,   68,   68,   68,
-      764,  758,  768,  762,  765,   68,   68,   68,  761,  767,
-       68,   68,  772,   68,  770,   68,  771,   68,  769,  775,
-       68,  776,   68,   68,   68,  774,   68,  777,   68,  778,
-       68,  781,   68,  773,  784,  779,  780,  783,   68,   68,
-       68,  786,  782,   68,   68,  787,  788,   68,   68,  785,
-
-       68,  790,   68,   68,   68,   68,   68,   68,  789,  798,
-      792,  797,   68,   68,  793,  791,  794,   68,  795,  801,
-       68,   68,  800,   68,   68,  796,  803,   68,  805,  804,
-      799,   68,   68,  809,   68,   68,  806,   68,   68,  810,
-       68,   68,  807,  802,   68,   68,   68,   68,   68,  816,
-       68,  812,  808,  813,  811,  814,  817,   68,  815,   68,
-      818,   68,   68,  821,  820,  819,   68,  822,  824,  825,
-       68,  826,   68,   68,   68,  823,  828,   68,  829,  830,
-       68,  832,   68,  831,   68,  827,   68,  833,   68,  834,
-       68,   68,   68,  835,  836,   68,   68,   68,   68,  837,
-
-       68,  843,   68,   68,  846,  847,   68,   68,  841,   68,
-      838,  839,   68,  844,  114,  845,  840,   68,  842,  848,
-       68,  980,  849,  850,   68,  851,   68,  853,   68,  854,
-       68,  852,   68,  856,   68,   68,  857,  855,  858,   68,
-       68,   68,   68,  862,  861,   68,  860,  864,   68,  866,
-       68,  867,   68,  859,   68,   68,  869,   68,  863,   68,
-       68,   68,   68,   68,  865,  871,   68,  873,  877,  870,
-       68,  112,  875,   68,  874,  876,   68,   68,   68,  881,
-      868,  878,  872,  882,   68,  880,   68,   68,   68,  884,
-      879,   68,  885,  886,   68,  887,  883,   68,   68,   68,
-
-      888,   68,  892,   68,   68,   68,  891,   68,   68,  893,
-      895,   68,  902,  897,   68,  898,  896,   68,  889,  890,
-      894,  899,   68,  900,   68,  901,   68,   68,  903,   68,
-       68,   68,  907,   68,   68,   68,  906,  909,   68,  908,
-      911,   68,   68,  910,   68,  904,   68,   68,   68,   68,
-      918,   68,  905,   68,  912,   68,   68,   68,  914,  915,
-      916,   68,  913,   68,  919,   68,  923,   68,  924,  917,
-      922,  925,   68,   68,  927,   68,  921,   68,   68,  920,
-       68,  933,   68,  926,  928,  929,  934,   68,   68,   68,
-       68,   68,   68,   68,  931,  930,  939,  940,   68,  932,
-
-       68,   68,  935,  943,   68,  945,   68,  936,   68,  937,
-      938,  944,   68,  946,   68,  941,   68,   68,   68,  942,
-       68,  949,  950,  948,   68,   68,  951,   68,   68,  953,
-      947,  960,  954,  956,   68,  952,  957,   68,   68,   68,
-      955,   68,   68,  958,   68,   68,  963,   68,   68,   68,
-      961,  959,   68,  962,  967,   68,  964,   68,  968,   68,
-      969,  965,  970,   68,  973,   68,   68,  966,  971,   68,
-      975,   68,  977,   68,  976,   68,  972,  978,   68,  981,
-      982,   68,   68,   68,   68,   68,  974,  983,   68,   68,
-       68,   68,   68,  979,   68,  988,  985,   68,   68,   68,
-
-       68,  984,  993,  991,  986,  987,  995,   68,   68,  997,
-       68,  989,  996,   68,   68,   68,  994,  992,  990,  998,
-     1001,   68, 1002,   68,   68,  999,   68,   68,   68, 1004,
-     1007,   68, 1003,   68,   68,   68,   68,   68,   68, 1000,
-       68, 1011, 1006, 1010, 1008, 1005, 1014,   68,   68, 1016,
-       68,   68, 1009, 1015, 1019,   68, 1013,   68, 1017,   68,
-     1012,   68, 1018, 1020,   68, 1024,   68, 1025,   68, 1022,
-     1021,   68, 1028,   68, 1029,   68, 1027, 1030,   68, 1023,
-     1026,   68, 1032,   68,   68, 1033, 1031, 1034,   68,   68,
-       68, 1037,   68,   68, 1035,   68,   68,   68, 1036,   68,
-
-     1038, 1040, 1041,   68,   68, 1043,   68,   68, 1042, 1046,
-       68, 1044,   68, 1039, 1047,   68,   68, 1045, 1048,   68,
-       68, 1050,   68,   68, 1049, 1054, 1051, 1052, 1053,   68,
-       68,   68, 1058,   68,   73,   73,   73,   68, 1055,  121,
-      119,  117,  116,  114, 1056,  112,   68, 1059, 1059, 1059,
-     1057,   40,   40,   40,   40,   40,   40,   45,   45,   45,
-       45,   45,   45,   50,   50,   50,   50,   50,   50,   56,
-       56,   56,   56,   56,   56,   61,   61,   61,   61,   61,
-       61,   71,   71,   71,   71,   71,   71,  111,  111, 1059,
-     1059,  111,  111,  113,  113, 1059,  113, 1059,  113,  115,
-
-     1059, 1059, 1059, 1059,  115,  118,  118, 1059, 1059,  118,
-      118,  120, 1059, 1059, 1059, 1059,  120,  122,  122,  122,
-      122,  122,  122,   72,   72,   72,   72,   72,   72,   13,
-     1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059,
-     1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059,
-     1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059,
-     1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059
+       68,   68,  133,  141,  136,   68,  137,  121,  134,   68,
+      135,  132,  138,   68,   68,  139,  143,   68,  145,  142,
+      144,   68,   68,   68,  146,  150,   68,   68,   68,  140,
+      148,  151,   68,   68,  147,  149,   68,  153,   68,   68,
+      158,   68,   68,   68,  152,  154,   68,   68,  155,  111,
+      111,  163,  118,  118,  113,  156,  157,  113,  121,  160,
+      159,  166,   73,  161,   68,  165,  162,  115,  181,  115,
+      115,  120,  115,  120,  120,   68,  120,   72,   73,   72,
+
+       72,   68,   72,  168,   68,   68,  167,   68,  123,  172,
+       68,  178,  171,   68,   68,   68,   68,   68,  179,  169,
+       68,  182,   68,   68,   68,  170,   68,  189,   68,  187,
+      173,  183,   68,   68,  184,  174,  224,  185,  180,  191,
+      175,  186,   68,  190,   68,   68,  176,  177,  188,   68,
+      192,  194,   68,  196,  193,  197,   68,  195,   68,   68,
+       68,   68,   68,   68,   68,  200,  198,  199,   68,  204,
+       68,  201,   68,   68,   68,  210,  211,  202,   68,  213,
+      208,   68,  121,  203,   68,   68,   68,  214,   68,  209,
+      205,  218,  206,   68,  216,   68,  121,  217,  221,  212,
+
+       68,  222,   68,  219,  215,   68,  223,   68,   68,   68,
+      226,  220,  227,   68,   68,  230,   68,  225,  228,  232,
+       68,  231,   68,   68,   68,   68,  236,  229,   68,   68,
+       68,   68,   68,  239,  246,   68,  235,   68,   68,   68,
+      233,  238,  247,  234,  240,   68,  237,  242,   68,  243,
+       68,  241,  244,  245,   68,   68,  252,   68,   68,  253,
+       68,  255,  248,  250,  251,  249,   68,   68,   68,   68,
+      259,   68,  257,   68,  254,   68,  260,  258,   68,   68,
+      256,  263,   68,  121,   68,  275,   68,  262,   68,  261,
+       68,  272,   68,  265,   68,   68,   68,  264,   68,  271,
+
+      266,  267,   68,  292,  273,  274,   68,  277,  276,   68,
+      279,  280,  268,  269,  270,  278,  281,  282,   68,   68,
+       68,   68,  283,   68,  287,  284,   68,   68,   68,   68,
+       68,  298,  293,   68,  285,  286,  290,  295,  294,  296,
+      289,  288,   68,   68,   68,  299,   68,   68,  297,  291,
+       68,   68,  302,  300,   68,  304,   68,  305,  301,   68,
+       68,   68,   68,   68,   68,   68,  313,   68,  307,  311,
+      308,   68,  303,  312,  309,   68,   68,  316,   68,   68,
+      306,  321,   68,  310,  317,  314,   68,   68,  324,   68,
+      326,  322,  318,   68,  315,   68,   68,   68,  320,  323,
+
+       68,   68,  319,   68,   68,  331,  121,  325,  327,  328,
+      334,  335,   68,   68,  329,  338,   68,   68,  330,  333,
+      332,  337,   68,   68,  344,  336,  340,   68,  339,   68,
+      341,  342,   68,  343,   68,  345,   68,  346,   68,  347,
+       68,   68,   68,  350,   68,  348,  349,   68,   68,   68,
+       68,  351,   68,  607,  352,  354,   68,   68,  359,  356,
+      360,  353,   68,  119,  357,   68,  355,   68,  358,   68,
+      361,   68,  366,  362,   68,  364,  365,   68,   68,   68,
+      367,  368,  369,   68,   68,   68,   68,   68,  370,  375,
+       68,  373,  374,  377,   68,  363,   68,   68,   68,  372,
+
+       68,   68,  371,  378,  381,  376,   68,  379,   68,  385,
+       68,  386,   68,  382,   68,   68,  387,  380,   68,  383,
+      388,  384,   68,   68,   68,   68,   68,   68,   68,   68,
+      393,  392,  394,  395,  389,   68,  391,  121,  397,   68,
+       68,  390,  399,  400,  396,   68,  401,  402,   68,  398,
+       68,   68,   68,   68,   68,  409,  404,  403,  408,   68,
+       68,   68,  407,   68,  415,  405,   68,   68,  406,   68,
+      418,   68,   68,  410,  419,   68,  411,   68,  420,  416,
+      797,  412,   68,  422,   68,   68,   68,  413,  414,  423,
+      421,  417,  424,  425,   68,  426,   68,  429,   68,  427,
+
+       68,  428,   68,  430,   68,   68,   68,   68,  431,   68,
+       68,   68,  432,  433,  435,  437,   68,  436,  438,   68,
+      444,  440,  439,   68,  434,   68,  441,   68,   68,   68,
+      442,   68,  445,   68,  451,   68,   68,   68,  443,   68,
+      447,  449,   68,   68,   68,   68,  452,  448,  446,  455,
+      450,   68,  457,   68,   68,  454,  453,  458,   68,   68,
+      462,   68,  463,  121,   68,   68,  456,   68,   68,   68,
+       68,  459,  460,   68,   68,  476,  117,   68,  461,  464,
+       68,  481,   68,  472,  473,   68,  482,  483,  475,  465,
+       68,  480,  471,  466,  474,  467,   68,  477,   68,  468,
+
+       68,  469,   68,   68,  478,   68,  470,   68,  484,  487,
+       68,  488,  485,   68,   68,   68,   68,  489,  492,   68,
+      491,  486,  479,  495,  490,   68,  497,   68,  493,  496,
+      494,   68,   68,   68,   68,   68,   68,  499,  500,  501,
+       68,  503,  498,  504,  502,   68,  505,   68,   68,  506,
+       68,  507,   68,  509,   68,   68,   68,  510,  512,  511,
+       68,   68,   68,   68,   68,   68,  516,  508,  517,   68,
+      523,   68,  518,  520,  513,  515,  519,  521,   68,  522,
+      514,   68,   68,   68,  526,   68,   68,   68,   68,  531,
+       68,   68,   68,   68,   68,  528,  532,  525,   68,   68,
+
+      524,  537,   68,  527,  530,   68,  533,  534,   68,   68,
+      535,   68,  529,  536,   68,   68,  540,  538,  539,  543,
+       68,   68,   68,   68,   68,   68,   68,  541,   68,   68,
+       68,  549,   68,  542,   68,  544,  545,   68,  552,  665,
+      554,  546,  548,  550,  547,   68,  551,   68,  553,  557,
+      555,  560,  556,  558,   68,   68,   68,   68,  559,   68,
+      561,   68,  562,   68,  563,  566,  567,   68,   68,  564,
+       68,   68,  568,   68,   68,   68,   68,  569,   68,  565,
+      574,   68,  576,  570,   68,   68,   68,   68,  571,  578,
+      572,   68,  573,  575,  577,  582,   68,  583,   68,   68,
+
+      585,   68,  579,   68,  584,  581,   68,  586,   68,  589,
+      580,  587,  590,  588,   68,  592,   68,  593,  594,   68,
+       68,  591,   68,   68,   68,  595,  597,   68,   68,   68,
+       68,  601,   68,   68,   68,   68,  605,   68,  596,  609,
+      606,   68,   68,   68,  598,   68,   68,  600,  599,  611,
+       68,   68,  602,  604,   68,  608,  615,  613,  603,   68,
+       68,  616,  610,   68,  617,  612,   68,   68,   68,  614,
+      623,  624,  619,  622,   68,   68,   68,   68,  618,   68,
+      625,  620,  626,  630,   68,  628,   68,  633,  621,  629,
+       68,   68,   68,  627,   68,   68,   68,  632,   68,   68,
+
+       68,  641,   68,   68,   68,  631,   68,   68,  642,  645,
+       68,   68,   68,  634,  635,  636,  638,  637,  640,  643,
+      639,   68,   68,  648,  649,  651,  646,  644,   68,   68,
+       68,  647,  650,   68,   68,   68,   68,  653,   68,  654,
+      656,   68,   68,  658,   68,  652,   68,   68,  660,  659,
+      655,   68,   68,   68,  667,   68,  657,   68,  666,   68,
+       68,   68,   68,  669,   68,  661,  670,  663,   68,  662,
+       68,  672,  664,   68,  673,  668,   68,   68,  678,   68,
+      674,  676,  677,   68,  675,  671,   68,   68,  679,   68,
+      681,  685,   68,   68,   68,   68,   68,   68,   68,   68,
+
+      799,   68,   68,  683,  680,  684,   68,  682,  690,  693,
+       68,  691,  689,  686,  687,   68,  688,  692,  699,  694,
+       68,  695,   68,   68,  696,  700,   68,  697,   68,  698,
+       68,   68,   68,   68,  706,   68,   68,   68,  708,  709,
+       68,  702,  701,   68,   68,  704,  710,   68,  703,   68,
+      705,   68,  711,  707,  714,  713,  715,   68,  712,   68,
+       68,   68,   68,   68,  719,   68,  720,  716,  721,   68,
+       68,  722,  725,   68,   68,  717,   68,   68,   68,  718,
+      723,  724,  726,  730,  728,  729,   68,  731,   68,  732,
+       68,  727,  735,   68,   68,  736,   68,  733,  737,   68,
+
+       68,  739,   68,  738,  741,   68,   68,  743,   68,   68,
+      734,  744,   68,   68,   68,   68,   68,   68,   68,   68,
+      740,   68,  753,   68,  745,   68,  746,   68,   68,   68,
+      742,  747,  755,  748,  749,  750,  756,  757,  751,  754,
+       68,  759,   68,   68,  752,  763,   68,   68,  762,   68,
+       68,  758,   68,  760,  765,   68,   68,  766,  761,   68,
+       68,   68,   68,   68,  767,  770,  764,  774,  769,  771,
+      775,  768,   68,  777,  776,   68,  773,   68,   68,  779,
+       68,   68,  772,   68,   68,  781,  783,   68,  782,  778,
+       68,   68,  780,  786,   68,   68,  787,   68,   68,  785,
+
+      788,   68,   68,  789,   68,  784,   68,  790,   68,  792,
+      796,  795,   68,  791,   68,   68,   68,  798,  800,   68,
+      793,   68,  794,   68,  802,   68,  801,   68,   68,  807,
+       68,   68,   68,  803,  810,  809,   68,  804,   68,  805,
+      806,  808,  813,   68,   68,  812,   68,   68,   68,  811,
+      816,  815,  817,   68,   68,  821,   68,   68,  818,   68,
+       68,  822,  819,   68,  814,   68,   68,   68,   68,   68,
+       68,   68,  116,  824,  820,  825,  823,  826,  828,  829,
+      827,   68,  832,  830,   68,  831,   68,  833,  837,   68,
+      834,   68,   68,   68,   68,  836,  835,  840,   68,  841,
+
+      838,  842,   68,  844,   68,   68,  845,  843,   68,   68,
+       68,  839,   68,   68,  847,   68,  848,   68,  850,   68,
+      846,   68,   68,   68,   68,  849,  856,  114,   68,   68,
+      859,  860,   68,  854,  851,   68,  852,  857,  861,   68,
+      853,  858,   68,  855,  863,   68,  864,   68,  862,  866,
+       68,  867,   68,   68,  869,   68,   68,   68,  868,  871,
+       68,  865,   68,  873,   68,   68,  875,  874,  877,   68,
+       68,  879,   68,  880,   68,  870,   68,   68,  882,   68,
+      872,  876,   68,   68,   68,   68,   68,  884,   68,  878,
+      886,  883,   68,  890,   68,  888,  891,  889,   68,  887,
+
+       68,   68,  881,  895,  885,   68,  894,   68,   68,  893,
+      897,   68,   68,  896,  892,   68,  898,  899,   68,  900,
+       68,  902,   68,  901,   68,   68,  906,   68,   68,   68,
+      905,   68,  903,  907,   68,   68,  910,  911,   68,  909,
+       68,  912,  913,   68,  904,  908,  914,   68,  915,   68,
+      916,   68,  917,   68,  918,   68,   68,  921,   68,   68,
+       68,  920,  923,   68,  922,  925,   68,   68,  924,   68,
+       68,   68,   68,   68,   68,  919,  932,   68,   68,  926,
+       68,   68,  928,  929,  930,   68,   68,  927,   68,  933,
+      937,  938,   68,  931,  936,  939,   68,   68,  935,   68,
+
+      934,   68,  941,   68,   68,   68,  940,   68,  942,  948,
+      943,  947,   68,   68,   68,  944,   68,   68,   68,  945,
+      949,  953,   68,  946,  954,   68,  950,  957,   68,   68,
+      959,   68,  955,  951,   68,  960,  952,   68,   68,   68,
+      956,   68,   68,   68,  963,   68,  964,  962,  958,   68,
+      965,   68,  970,   68,  967,   68,  968,   68,  966,  961,
+      969,  971,   68,   68,   68,   68,   68,  973,  972,  974,
+       68,  977,   68,  975,  976,   68,  979,  981,   68,   68,
+       68,  978,   68,   68,   68,  984,  987,   68,  982,   68,
+      983,   68,  985,   68,  980,   68,  989,  986,   68,  991,
+
+       68,  990,  992,   68,   68,  994,   68,  995,  997,  988,
+       68,  993,   68,  996,   68,   68,   68,   68,  999,   68,
+       68,   68, 1002,   68,   68,  998,   68, 1007, 1009,   68,
+     1005,   68, 1001,   68, 1000, 1010,   68,   68,   68, 1003,
+       68, 1016, 1011, 1006, 1008, 1012, 1004,   68,   68, 1013,
+       68,   68, 1015,   68,   68, 1018,   68, 1017, 1021,   68,
+       68,   68,   68, 1014,   68, 1025, 1028,   68, 1020, 1024,
+     1019,   68, 1022, 1023, 1030,   68, 1029,   68,   68, 1033,
+       68, 1034,   68, 1027,   68,   68,   68,   68, 1026, 1038,
+       68, 1039,   68,  112,   68, 1042,   68, 1031, 1036, 1041,
+
+     1032, 1043,   68, 1035,   68, 1037, 1040, 1044,   68, 1045,
+     1046,   68,   68, 1047, 1048,   68,   68,   68, 1051,   68,
+       68, 1049,   68,   68,   68, 1050,   68, 1052, 1054, 1055,
+       68,   68, 1057,   68,   68, 1056, 1060,   68, 1058,   68,
+     1053, 1061,   68,   68, 1059, 1062,   68,   68, 1064,   68,
+       68, 1063, 1068, 1065, 1066, 1067,   68,   68,   68, 1072,
+       68,   73,   73,   73,   68, 1069,  121,  119,  117,  116,
+      114, 1070,  112,   68, 1073, 1073, 1073, 1071,   40,   40,
+       40,   40,   40,   40,   45,   45,   45,   45,   45,   45,
+       50,   50,   50,   50,   50,   50,   56,   56,   56,   56,
+
+       56,   56,   61,   61,   61,   61,   61,   61,   71,   71,
+       71,   71,   71,   71,  111,  111, 1073, 1073,  111,  111,
+      113,  113, 1073,  113, 1073,  113,  115, 1073, 1073, 1073,
+     1073,  115,  118,  118, 1073, 1073,  118,  118,  120, 1073,
+     1073, 1073, 1073,  120,  122,  122,  122,  122,  122,  122,
+       72,   72,   72,   72,   72,   72,   13, 1073, 1073, 1073,
+     1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073,
+     1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073,
+     1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073,
+     1073, 1073, 1073, 1073, 1073, 1073
+
     } ;
 
-static yyconst flex_int16_t yy_chk[2170] =
+static yyconst flex_int16_t yy_chk[2197] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -1027,235 +1035,239 @@ static yyconst flex_int16_t yy_chk[2170] =
         9,   24,   33,    6,    7,    7,    7,    7,    9,    7,
        10,   10,   10,   26,   26,    7,    8,    8,    8,    8,
        10,    8,   26,   33,  109,   24,   25,    8,   11,   11,
-       11,   11,   11,   11, 1065,   20,  109,   20,   20,   11,
+       11,   11,   11,   11, 1079,   20,  109,   20,   20,   11,
 
        20,   25,   66,   27,   28,   20,   23,   27,   11,   12,
        12,   12,   12,   12,   12,   23,   66,   27,   23,   28,
        12,   23,   29,   30,   31,   44,   44,   29,   78,   12,
        19,   19,   19,   19,   77,   19,   22,   22,   30,   31,
        19,   19,   78,   31,   22,   32,   32,   34,   36,   35,
-       32,   22,   77,   36,   35,   38,   34,   37,   37,  158,
-       49,  158,   34,   49,   35,   34,   32,   35,   36,   38,
+       32,   22,   77,   36,   35,   38,   34,   37,   37,  159,
+       49,  159,   34,   49,   35,   34,   32,   35,   36,   38,
        75,   39,   39,   75,   38,   37,   39,   55,   76,   55,
        55,   76,   55,   60,   60,   63,   63,   63,   63,   65,
        63,   65,   65,   80,   65,   68,   63,   68,   68,   69,
 
        68,   79,   82,   69,   88,   68,   71,   71,   71,   71,
        83,   71,   84,   81,   89,   80,   71,   71,   81,   79,
-       85,   86,   82,   88,   85,   96,   86,   93,   83,   87,
-       84,   90,   87,   91,   90,   87,   92,   91,   90,   89,
-       93,   94,   95,   92,   98,   96,   97,   99,   94,   87,
-       97,  100,  101,  102,  107,   95,   99,  103,  104,  104,
-      105,  106,   98,  108,  100,  110,  457,  101,  108,  112,
-      112,  114,  102,  124,  114,  103,  124,  107,  105,  104,
-      119,  119,  106,  110,  116,  133,  116,  116,  121,  116,
-      121,  121,  126,  121,  122,  122,  122,  122,  125,  122,
-
-      126,  127,  128,  125,  129,  122,  130,  132,  133,  129,
-      134,  130,  132,  135,  134,  136,  127,  138,  135,  137,
-      139,  140,  128,  131,  150,  139,  144,  131,  141,  136,
-      150,  137,  131,  141,  137,  138,  152,  131,  142,  142,
-      143,  140,  151,  131,  131,  143,  153,  144,  145,  146,
-      147,  143,  148,  145,  146,  147,  149,  148,  152,  154,
-      155,  153,  151,  149,  156,  155,  159,  157,  168,  160,
-      161,  161,  162,  159,  164,  163,  164,  162,  165,  154,
-      163,  166,  123,  168,  167,  169,  156,  157,  160,  167,
-      165,  170,  173,  164,  170,  162,  171,  171,  172,  172,
-
-      166,  174,  175,  169,  177,  175,  176,  181,  173,  179,
-      176,  178,  178,  182,  179,  180,  174,  183,  177,  185,
-      180,  184,  184,  186,  188,  187,  189,  181,  187,  190,
-      183,  191,  193,  193,  182,  186,  188,  185,  190,  192,
-      195,  192,  192,  191,  194,  197,  189,  194,  196,  198,
-      198,  199,  199,  200,  197,  202,  201,  195,  204,  203,
-      195,  201,  207,  196,  203,  205,  206,  204,  214,  208,
-      205,  206,  210,  200,  209,  202,  212,  209,  213,  215,
-      216,  217,  207,  208,  218,  216,  210,  213,  220,  214,
-      221,  212,  219,  209,  211,  221,  211,  211,  215,  218,
-
-      223,  217,  220,  222,  222,  224,  222,  225,  211,  211,
-      211,  226,  219,  227,  228,  226,  229,  230,  231,  120,
-      223,  224,  231,  225,  232,  229,  230,  233,  228,  234,
-      239,  227,  233,  232,  235,  234,  236,  236,  229,  235,
-      237,  238,  239,  240,  241,  237,  242,  242,  240,  245,
-      238,  244,  244,  246,  247,  248,  250,  251,  252,  253,
-      254,  246,  251,  247,  253,  241,  252,  248,  255,  257,
-      245,  259,  256,  256,  258,  261,  250,  263,  254,  258,
-      256,  260,  260,  264,  258,  262,  262,  255,  256,  257,
-      265,  259,  263,  266,  267,  264,  269,  268,  256,  267,
-
-      261,  270,  271,  323,  272,  270,  274,  271,  275,  265,
-      323,  269,  273,  273,  277,  266,  268,  272,  274,  276,
-      278,  278,  276,  275,  279,  279,  280,  277,  281,  281,
-      283,  280,  282,  282,  284,  283,  285,  287,  284,  286,
-      288,  285,  287,  286,  289,  290,  292,  292,  303,  289,
-      291,  293,  294,  291,  296,  294,  293,  295,  291,  290,
-      288,  295,  291,  297,  298,  299,  303,  296,  297,  298,
-      300,  299,  301,  300,  302,  301,  304,  305,  308,  302,
-      306,  307,  305,  295,  311,  306,  307,  308,  309,  310,
-      304,  309,  312,  310,  310,  313,  312,  314,  315,  318,
-
-      316,  317,  317,  318,  311,  316,  319,  320,  321,  322,
-      313,  319,  324,  315,  325,  314,  326,  324,  327,  325,
-      328,  326,  322,  320,  329,  330,  335,  321,  331,  328,
-      330,  331,  332,  332,  334,  336,  327,  337,  329,  334,
-      340,  343,  344,  336,  335,  343,  346,  344,  347,  348,
-      445,  346,  337,  349,  349,  355,  350,  340,  345,  351,
-      351,  445,  345,  350,  352,  345,  347,  353,  353,  354,
-      345,  358,  354,  356,  348,  355,  345,  345,  362,  352,
-      359,  356,  357,  357,  362,  359,  358,  360,  360,  361,
-      363,  364,  361,  365,  367,  366,  368,  368,  363,  364,
-
-      366,  367,  369,  370,  371,  375,  370,  369,  372,  372,
-      373,  365,  376,  373,  375,  377,  376,  378,  371,  379,
-      382,  373,  380,  381,  384,  382,  378,  383,  380,  385,
-      386,  383,  387,  379,  377,  386,  390,  381,  388,  388,
-      392,  385,  389,  384,  391,  389,  393,  393,  394,  394,
-      395,  396,  398,  387,  390,  399,  402,  391,  400,  401,
-      392,  402,  405,  403,  403,  395,  406,  406,  404,  410,
-      399,  403,  400,  407,  405,  396,  397,  398,  407,  397,
-      401,  397,  404,  408,  409,  397,  415,  397,  410,  403,
-      413,  408,  397,  411,  411,  413,  414,  416,  409,  414,
-
-      418,  417,  419,  420,  421,  415,  417,  419,  422,  418,
-      416,  424,  425,  422,  426,  427,  428,  425,  421,  426,
-      427,  429,  429,  420,  430,  428,  424,  432,  432,  430,
-      433,  432,  434,  435,  436,  437,  435,  439,  438,  436,
-      437,  438,  440,  441,  442,  433,  443,  444,  446,  442,
-      444,  443,  434,  446,  447,  439,  441,  448,  450,  447,
-      449,  449,  440,  452,  451,  453,  454,  452,  455,  459,
-      458,  460,  448,  461,  459,  454,  460,  450,  451,  469,
-      462,  463,  464,  453,  458,  466,  463,  461,  465,  465,
-      467,  468,  471,  455,  462,  472,  468,  464,  469,  467,
-
-      470,  473,  474,  466,  470,  476,  475,  471,  478,  479,
-      472,  476,  477,  482,  483,  481,  118,  484,  479,  486,
-      473,  482,  484,  474,  475,  492,  485,  477,  478,  481,
-      485,  485,  486,  487,  483,  488,  488,  489,  487,  490,
-      490,  491,  489,  492,  493,  494,  495,  497,  496,  493,
-      494,  495,  496,  498,  499,  491,  497,  498,  500,  501,
-      502,  497,  503,  497,  504,  497,  505,  510,  502,  499,
-      506,  506,  500,  507,  507,  513,  508,  593,  501,  593,
-      503,  508,  509,  509,  511,  505,  512,  510,  514,  504,
-      515,  512,  511,  513,  514,  517,  518,  515,  519,  520,
-
-      517,  518,  521,  519,  522,  522,  523,  524,  520,  527,
-      525,  526,  526,  528,  529,  531,  532,  533,  535,  531,
-      531,  521,  535,  534,  117,  536,  523,  524,  525,  527,
-      538,  537,  529,  540,  539,  533,  541,  542,  528,  539,
-      540,  541,  532,  534,  536,  537,  544,  543,  545,  538,
-      549,  549,  546,  547,  548,  542,  543,  546,  547,  548,
-      551,  544,  552,  553,  555,  551,  556,  553,  553,  545,
-      554,  554,  556,  557,  558,  559,  560,  561,  557,  563,
-      115,  552,  564,  555,  562,  565,  565,  566,  567,  568,
-      571,  566,  580,  558,  559,  560,  561,  564,  562,  570,
-
-      563,  567,  569,  569,  570,  578,  572,  573,  578,  568,
-      571,  572,  573,  576,  576,  579,  581,  580,  582,  583,
-      583,  581,  584,  585,  585,  586,  588,  587,  590,  591,
-      579,  587,  592,  582,  594,  595,  586,  596,  597,  594,
-      595,  600,  584,  599,  597,  588,  590,  602,  599,  591,
-      601,  601,  592,  603,  604,  605,  608,  596,  607,  604,
-      605,  606,  606,  607,  609,  602,  600,  610,  611,  614,
-      612,  613,  615,  603,  608,  616,  613,  622,  617,  618,
-      622,  619,  611,  612,  609,  623,  624,  610,  618,  614,
-      625,  618,  615,  617,  623,  626,  616,  619,  627,  625,
-
-      628,  628,  625,  627,  626,  624,  629,  630,  632,  631,
-      633,  634,  634,  635,  637,  640,  638,  639,  640,  637,
-      630,  638,  632,  639,  640,  642,  629,  631,  633,  643,
-      644,  635,  645,  642,  646,  648,  649,  650,  651,  653,
-      649,  652,  650,  651,  654,  656,  655,  643,  645,  644,
-      652,  655,  646,  657,  653,  648,  654,  656,  658,  659,
-      659,  660,  661,  661,  658,  663,  670,  662,  664,  664,
-      660,  657,  662,  665,  665,  666,  666,  667,  669,  672,
-      667,  671,  676,  669,  670,  663,  671,  673,  673,  674,
-      679,  675,  677,  678,  674,  680,  681,  681,  682,  683,
-
-      684,  686,  676,  675,  672,  675,  685,  684,  683,  688,
-      675,  679,  677,  678,  689,  685,  687,  687,  682,  691,
-      692,  680,  693,  695,  691,  692,  694,  686,  695,  696,
-      689,  697,  698,  694,  699,  688,  700,  701,  696,  702,
-      699,  710,  693,  703,  705,  700,  697,  706,  703,  705,
-      704,  698,  707,  702,  704,  704,  708,  707,  701,  706,
-      709,  712,  711,  713,  709,  715,  710,  711,  708,  714,
-      714,  715,  716,  717,  720,  713,  718,  716,  723,  717,
-      722,  722,  728,  712,  727,  718,  720,  723,  733,  727,
-      729,  729,  722,  730,  735,  730,  731,  731,  736,  728,
-
-      734,  734,  737,  739,  738,  740,  741,  742,  733,  742,
-      736,  741,  743,  744,  737,  735,  738,  746,  739,  745,
-      745,  747,  744,  749,  751,  740,  747,  748,  749,  748,
-      743,  750,  752,  753,  754,  755,  750,  756,  753,  754,
-      759,  757,  751,  746,  760,  762,  758,  761,  763,  759,
-      767,  756,  752,  757,  755,  758,  760,  764,  758,  768,
-      761,  766,  770,  764,  763,  762,  771,  766,  768,  769,
-      769,  770,  772,  773,  776,  767,  772,  779,  773,  774,
-      774,  777,  777,  776,  782,  771,  778,  778,  780,  779,
-      781,  783,  784,  780,  781,  785,  786,  787,  789,  782,
-
-      790,  789,  791,  792,  792,  793,  793,  952,  786,  795,
-      783,  784,  798,  790,  113,  791,  785,  804,  787,  794,
-      794,  952,  795,  796,  796,  797,  797,  799,  799,  800,
-      800,  798,  802,  803,  803,  806,  804,  802,  805,  805,
-      807,  808,  809,  809,  808,  811,  807,  810,  810,  812,
-      812,  813,  813,  806,  814,  815,  815,  816,  809,  820,
-      817,  818,  819,  821,  811,  817,  822,  819,  823,  816,
-      826,  111,  821,  823,  820,  822,  827,  824,  828,  828,
-      814,  824,  818,  829,  831,  827,  833,  834,  829,  833,
-      826,  836,  834,  835,  835,  836,  831,  837,  838,  839,
-
-      837,  840,  841,  842,  843,  844,  840,  841,  845,  842,
-      844,  846,  859,  846,  849,  849,  845,  859,  838,  839,
-      843,  852,  852,  855,  855,  857,  857,  860,  860,  861,
-      862,  863,  865,  865,  868,  869,  863,  869,  870,  868,
-      871,  871,  872,  870,  873,  861,  874,  875,  876,  877,
-      878,  878,  862,  880,  872,  879,  881,  882,  874,  875,
-      876,  883,  873,  884,  879,  887,  883,  890,  884,  877,
-      882,  885,  885,  888,  888,  889,  881,  891,  892,  880,
-      893,  894,  894,  887,  889,  890,  895,  896,  897,  898,
-      902,  895,  909,  903,  892,  891,  903,  904,  904,  893,
-
-      905,  906,  896,  908,  908,  910,  910,  897,  913,  898,
-      902,  909,  912,  912,  914,  905,  915,  916,  917,  906,
-      919,  915,  916,  914,  920,  922,  917,  921,  928,  920,
-      913,  928,  921,  923,  923,  919,  924,  924,  926,  927,
-      922,  929,  934,  926,  930,  931,  931,  932,  935,  937,
-      929,  927,  938,  930,  936,  936,  932,  939,  937,  941,
-      938,  934,  939,  942,  944,  944,  946,  935,  941,  947,
-      947,  948,  949,  949,  948,  951,  942,  950,  950,  953,
-      954,  954,  958,  955,  953,  960,  946,  955,  959,  961,
-      962,  963,  964,  951,  965,  962,  959,  966,  969,  968,
-
-      972,  958,  968,  965,  960,  961,  970,  970,  971,  972,
-      974,  963,  971,  975,  976,  979,  969,  966,  964,  974,
-      979,  980,  980,  981,  983,  975,  984,  985,  987,  983,
-      986,  986,  981,  988,  991,  989,  990,  992,  997,  976,
-      998,  990,  985,  989,  987,  984,  993,  993,  994,  996,
-      996, 1001,  988,  994,  999,  999,  992, 1002,  997, 1003,
-      991, 1006,  998, 1000, 1000, 1004, 1004, 1005, 1005, 1002,
-     1001, 1008, 1009, 1009, 1010, 1010, 1008, 1011, 1011, 1003,
-     1006, 1012, 1013, 1013, 1015, 1015, 1012, 1017, 1017, 1018,
-     1021, 1022, 1022, 1026, 1018, 1023, 1036, 1027, 1021, 1038,
-
-     1023, 1027, 1031, 1031, 1033, 1035, 1035, 1050, 1033, 1039,
-     1039, 1036, 1044, 1026, 1040, 1040, 1052, 1038, 1042, 1042,
-     1045, 1045, 1049, 1054, 1044, 1052, 1049, 1050, 1051, 1051,
-     1055, 1056, 1057, 1057,   74,   72,   70,   67, 1054,   61,
-       56,   51,   50,   45, 1055,   40,   14,   13,    0,    0,
-     1056, 1060, 1060, 1060, 1060, 1060, 1060, 1061, 1061, 1061,
-     1061, 1061, 1061, 1062, 1062, 1062, 1062, 1062, 1062, 1063,
-     1063, 1063, 1063, 1063, 1063, 1064, 1064, 1064, 1064, 1064,
-     1064, 1066, 1066, 1066, 1066, 1066, 1066, 1067, 1067,    0,
-        0, 1067, 1067, 1068, 1068,    0, 1068,    0, 1068, 1069,
-
-        0,    0,    0,    0, 1069, 1070, 1070,    0,    0, 1070,
-     1070, 1071,    0,    0,    0,    0, 1071, 1072, 1072, 1072,
-     1072, 1072, 1072, 1073, 1073, 1073, 1073, 1073, 1073, 1059,
-     1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059,
-     1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059,
-     1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059,
-     1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059
+       85,   86,   82,   88,   85,   96,   86,  463,   83,   87,
+       84,   81,   87,   90,   91,   87,   90,   92,   91,   89,
+       90,   93,   95,   94,   92,   96,   98,   97,   99,   87,
+       94,   97,  100,  101,   93,   95,  102,   99,  103,  104,
+      104,  105,  106,  107,   98,  100,  108,  110,  101,  112,
+      112,  108,  119,  119,  114,  102,  103,  114,  124,  105,
+      104,  124,  123,  106,  135,  110,  107,  116,  135,  116,
+      116,  121,  116,  121,  121,  126,  121,  122,  122,  122,
+
+      122,  125,  122,  126,  127,  128,  125,  129,  122,  130,
+      132,  132,  129,  133,  130,  134,  136,  137,  133,  127,
+      174,  136,  138,  139,  140,  128,  131,  142,  141,  140,
+      131,  137,  142,  145,  138,  131,  174,  138,  134,  144,
+      131,  139,  143,  143,  144,  152,  131,  131,  141,  153,
+      144,  146,  147,  148,  145,  149,  146,  147,  148,  150,
+      149,  151,  154,  155,  156,  152,  150,  151,  157,  156,
+      161,  153,  158,  160,  162,  162,  163,  154,  167,  164,
+      160,  163,  166,  155,  164,  165,  168,  165,  169,  161,
+      157,  168,  158,  170,  166,  171,  120,  167,  171,  163,
+
+      172,  172,  175,  169,  165,  173,  173,  176,  177,  178,
+      176,  170,  177,  179,  180,  180,  181,  175,  178,  182,
+      183,  181,  184,  185,  182,  186,  186,  179,  187,  188,
+      189,  191,  190,  189,  195,  195,  185,  193,  192,  196,
+      183,  188,  196,  184,  190,  197,  187,  192,  198,  193,
+      194,  191,  194,  194,  202,  199,  200,  200,  201,  201,
+      204,  203,  197,  198,  199,  197,  203,  205,  206,  209,
+      207,  208,  205,  210,  202,  207,  208,  206,  211,  212,
+      204,  211,  215,  216,  214,  218,  217,  210,  219,  209,
+      218,  215,  220,  212,  233,  221,  222,  211,  213,  214,
+
+      213,  213,  225,  233,  216,  217,  223,  220,  219,  226,
+      222,  223,  213,  213,  213,  221,  224,  224,  227,  224,
+      229,  228,  225,  230,  229,  226,  231,  232,  234,  235,
+      239,  239,  234,  237,  227,  228,  232,  236,  235,  237,
+      231,  230,  236,  238,  241,  240,  242,  243,  238,  232,
+      240,  244,  243,  241,  245,  245,  247,  247,  242,  248,
+      249,  250,  251,  253,  254,  255,  256,  257,  249,  254,
+      250,  256,  244,  255,  251,  258,  259,  259,  260,  262,
+      248,  261,  264,  253,  259,  257,  261,  263,  263,  265,
+      265,  261,  259,  266,  258,  268,  269,  267,  260,  262,
+
+      270,  271,  259,  277,  272,  270,  273,  264,  266,  267,
+      273,  274,  275,  278,  268,  277,  274,  280,  269,  272,
+      271,  276,  276,  279,  283,  275,  279,  539,  278,  283,
+      280,  281,  281,  282,  282,  284,  284,  285,  285,  286,
+      287,  292,  288,  289,  286,  287,  288,  290,  289,  291,
+      293,  290,  294,  539,  291,  293,  295,  296,  296,  295,
+      297,  292,  300,  118,  295,  297,  294,  298,  295,  299,
+      298,  301,  302,  299,  303,  300,  301,  302,  304,  305,
+      303,  304,  305,  306,  307,  308,  309,  310,  306,  311,
+      313,  309,  310,  313,  311,  299,  312,  315,  317,  308,
+
+      316,  318,  307,  314,  316,  312,  319,  314,  314,  320,
+      321,  321,  322,  317,  320,  323,  322,  315,  324,  318,
+      323,  319,  325,  326,  327,  328,  331,  329,  330,  332,
+      328,  327,  329,  330,  324,  333,  326,  334,  332,  339,
+      335,  325,  334,  335,  331,  336,  336,  338,  340,  333,
+      341,  344,  338,  347,  348,  349,  340,  339,  348,  351,
+      349,  352,  347,  739,  351,  341,  353,  355,  344,  350,
+      354,  354,  360,  350,  355,  357,  350,  356,  356,  352,
+      739,  350,  358,  358,  363,  361,  359,  350,  350,  359,
+      357,  353,  360,  361,  362,  362,  364,  365,  365,  363,
+
+      366,  364,  367,  366,  368,  369,  370,  376,  367,  371,
+      372,  380,  368,  369,  371,  373,  373,  372,  374,  375,
+      380,  376,  375,  374,  370,  377,  377,  378,  381,  382,
+      378,  383,  381,  384,  387,  385,  386,  389,  378,  387,
+      383,  385,  388,  390,  391,  392,  388,  384,  382,  391,
+      386,  393,  393,  395,  394,  390,  389,  394,  397,  396,
+      398,  398,  399,  399,  400,  401,  392,  403,  404,  411,
+      405,  395,  396,  406,  407,  408,  117,  410,  397,  400,
+      408,  411,  413,  404,  405,  412,  412,  413,  407,  401,
+      402,  410,  403,  402,  406,  402,  409,  409,  415,  402,
+
+      414,  402,  416,  426,  409,  421,  402,  422,  414,  417,
+      417,  419,  415,  423,  420,  427,  419,  420,  423,  424,
+      422,  416,  409,  426,  421,  425,  428,  430,  424,  427,
+      425,  428,  431,  432,  433,  434,  439,  431,  432,  433,
+      435,  435,  430,  436,  434,  438,  438,  440,  436,  438,
+      441,  439,  442,  441,  443,  444,  445,  442,  444,  443,
+      446,  448,  447,  449,  454,  451,  448,  440,  449,  450,
+      455,  455,  450,  452,  445,  447,  451,  453,  452,  454,
+      446,  456,  453,  457,  458,  459,  460,  461,  458,  465,
+      464,  466,  467,  468,  465,  460,  466,  457,  470,  472,
+
+      456,  471,  471,  459,  464,  469,  467,  468,  475,  473,
+      469,  474,  461,  470,  476,  477,  474,  472,  473,  477,
+      478,  479,  480,  481,  482,  483,  485,  475,  484,  486,
+      490,  483,  489,  476,  488,  478,  479,  601,  486,  601,
+      489,  480,  482,  484,  481,  493,  485,  491,  488,  492,
+      490,  494,  491,  492,  492,  498,  494,  496,  493,  495,
+      495,  499,  496,  497,  497,  500,  501,  502,  507,  498,
+      500,  501,  502,  503,  504,  508,  505,  503,  506,  499,
+      505,  509,  507,  504,  510,  511,  512,  517,  504,  509,
+      504,  520,  504,  506,  508,  513,  513,  514,  514,  515,
+
+      516,  516,  510,  518,  515,  512,  521,  517,  519,  520,
+      511,  518,  521,  519,  522,  524,  527,  525,  526,  528,
+      524,  522,  525,  526,  530,  527,  529,  529,  531,  532,
+      533,  533,  534,  535,  541,  536,  538,  540,  528,  541,
+      538,  538,  542,  545,  530,  543,  544,  532,  531,  543,
+      546,  547,  534,  536,  548,  540,  547,  545,  535,  549,
+      550,  548,  542,  551,  549,  544,  552,  553,  554,  546,
+      555,  556,  551,  554,  560,  555,  556,  559,  550,  557,
+      557,  552,  559,  562,  562,  561,  563,  565,  553,  561,
+      561,  564,  565,  560,  566,  567,  568,  564,  569,  571,
+
+      573,  573,  570,  572,  574,  563,  575,  576,  574,  577,
+      577,  579,  588,  566,  567,  568,  570,  569,  572,  575,
+      571,  578,  586,  580,  581,  586,  578,  576,  580,  581,
+      587,  579,  584,  584,  589,  590,  592,  588,  594,  589,
+      591,  591,  593,  593,  595,  587,  596,  599,  595,  594,
+      590,  598,  600,  602,  603,  604,  592,  605,  602,  603,
+      608,  607,  611,  605,  612,  596,  607,  599,  609,  598,
+      618,  609,  600,  610,  610,  604,  613,  614,  615,  615,
+      611,  613,  614,  616,  612,  608,  617,  619,  616,  620,
+      618,  622,  621,  623,  624,  625,  622,  626,  741,  627,
+
+      741,  628,  633,  620,  617,  621,  631,  619,  627,  631,
+      632,  627,  626,  623,  624,  634,  625,  628,  636,  632,
+      635,  633,  638,  636,  634,  637,  637,  634,  639,  635,
+      640,  641,  642,  643,  643,  644,  652,  653,  646,  647,
+      648,  639,  638,  646,  647,  641,  648,  651,  640,  649,
+      642,  654,  649,  644,  652,  651,  653,  655,  649,  657,
+      658,  659,  661,  660,  658,  662,  659,  654,  660,  663,
+      665,  661,  664,  666,  669,  655,  672,  664,  667,  657,
+      662,  663,  665,  669,  667,  668,  668,  670,  670,  671,
+      673,  666,  674,  674,  671,  675,  675,  672,  676,  676,
+
+      677,  679,  680,  677,  681,  682,  679,  683,  683,  681,
+      673,  684,  685,  686,  687,  688,  684,  689,  690,  692,
+      680,  691,  691,  693,  685,  696,  685,  698,  695,  694,
+      682,  685,  693,  686,  687,  688,  694,  695,  689,  692,
+      697,  697,  699,  701,  690,  702,  703,  704,  701,  708,
+      702,  696,  705,  698,  704,  706,  707,  705,  699,  709,
+      710,  711,  712,  720,  706,  709,  703,  713,  708,  710,
+      714,  707,  713,  715,  714,  714,  712,  716,  715,  717,
+      718,  719,  711,  722,  717,  719,  721,  723,  720,  716,
+      725,  721,  718,  724,  724,  726,  725,  727,  728,  723,
+
+      726,  730,  734,  727,  733,  722,  744,  728,  732,  732,
+      738,  734,  746,  730,  750,  738,  740,  740,  742,  742,
+      732,  751,  733,  745,  745,  747,  744,  748,  749,  750,
+      752,  754,  753,  746,  753,  752,  755,  747,  757,  748,
+      749,  751,  756,  756,  762,  755,  758,  760,  759,  754,
+      759,  758,  760,  761,  763,  764,  765,  766,  761,  767,
+      764,  765,  762,  768,  757,  773,  774,  771,  769,  770,
+      772,  778,  115,  767,  763,  768,  766,  769,  770,  771,
+      769,  775,  774,  772,  777,  773,  779,  775,  780,  780,
+      777,  781,  782,  783,  784,  779,  778,  783,  787,  784,
+
+      781,  785,  785,  788,  788,  789,  789,  787,  790,  791,
+      793,  782,  792,  794,  791,  795,  792,  796,  794,  797,
+      790,  798,  799,  801,  802,  793,  801,  113,  803,  804,
+      804,  805,  805,  798,  795,  807,  796,  802,  806,  806,
+      797,  803,  810,  799,  808,  808,  809,  809,  807,  811,
+      811,  812,  812,  814,  815,  815,  816,  819,  814,  817,
+      817,  810,  818,  819,  820,  821,  821,  820,  822,  822,
+      823,  824,  824,  825,  825,  816,  826,  827,  827,  828,
+      818,  821,  829,  830,  832,  831,  833,  829,  834,  823,
+      831,  828,  836,  835,  838,  833,  836,  834,  835,  832,
+
+      839,  843,  826,  841,  830,  840,  840,  845,  841,  839,
+      845,  846,  851,  843,  838,  848,  846,  847,  847,  848,
+      849,  850,  850,  849,  852,  853,  854,  855,  858,  856,
+      853,  854,  851,  855,  857,  859,  858,  859,  874,  857,
+      862,  862,  865,  865,  852,  856,  868,  868,  870,  870,
+      872,  873,  873,  875,  874,  872,  876,  878,  878,  881,
+      882,  876,  882,  883,  881,  884,  884,  885,  883,  886,
+      887,  888,  889,  890,  893,  875,  891,  891,  894,  885,
+      892,  895,  887,  888,  889,  896,  897,  886,  900,  892,
+      896,  897,  904,  890,  895,  898,  898,  905,  894,  903,
+
+      893,  901,  901,  906,  907,  910,  900,  911,  903,  909,
+      904,  908,  908,  912,  909,  905,  916,  919,  917,  906,
+      910,  917,  920,  907,  918,  918,  911,  922,  922,  923,
+      924,  924,  919,  912,  926,  926,  916,  927,  928,  929,
+      920,  930,  931,  933,  929,  936,  930,  928,  923,  934,
+      931,  935,  937,  937,  934,  941,  935,  948,  933,  927,
+      936,  938,  938,  940,  943,  944,  942,  941,  940,  942,
+      945,  945,  946,  943,  944,  949,  948,  950,  950,  951,
+      953,  946,  952,  955,  956,  953,  958,  958,  951,  960,
+      952,  966,  955,  965,  949,  961,  961,  956,  962,  963,
+
+      963,  962,  964,  964,  969,  966,  972,  967,  969,  960,
+      973,  965,  967,  968,  968,  974,  975,  976,  973,  977,
+      978,  979,  976,  980,  982,  972,  983,  982,  984,  984,
+      979,  985,  975,  986,  974,  985,  988,  989,  990,  977,
+      994,  994,  986,  980,  983,  988,  978,  993,  995,  989,
+      997,  998,  993,  999, 1002,  997, 1001,  995, 1000, 1000,
+     1004, 1003, 1005,  990, 1006, 1004, 1007, 1007,  999, 1003,
+      998, 1008, 1001, 1002, 1010, 1010, 1008, 1011, 1012, 1013,
+     1013, 1014, 1014, 1006, 1015, 1017, 1016, 1020, 1005, 1018,
+     1018, 1019, 1019,  111, 1022, 1023, 1023, 1011, 1016, 1022,
+
+     1012, 1024, 1024, 1015, 1026, 1017, 1020, 1025, 1025, 1026,
+     1027, 1027, 1029, 1029, 1031, 1031, 1032, 1035, 1036, 1036,
+     1040, 1032, 1037, 1050, 1041, 1035, 1052, 1037, 1041, 1045,
+     1045, 1047, 1049, 1049, 1064, 1047, 1053, 1053, 1050, 1058,
+     1040, 1054, 1054, 1066, 1052, 1056, 1056, 1059, 1059, 1063,
+     1068, 1058, 1066, 1063, 1064, 1065, 1065, 1069, 1070, 1071,
+     1071,   74,   72,   70,   67, 1068,   61,   56,   51,   50,
+       45, 1069,   40,   14,   13,    0,    0, 1070, 1074, 1074,
+     1074, 1074, 1074, 1074, 1075, 1075, 1075, 1075, 1075, 1075,
+     1076, 1076, 1076, 1076, 1076, 1076, 1077, 1077, 1077, 1077,
+
+     1077, 1077, 1078, 1078, 1078, 1078, 1078, 1078, 1080, 1080,
+     1080, 1080, 1080, 1080, 1081, 1081,    0,    0, 1081, 1081,
+     1082, 1082,    0, 1082,    0, 1082, 1083,    0,    0,    0,
+        0, 1083, 1084, 1084,    0,    0, 1084, 1084, 1085,    0,
+        0,    0,    0, 1085, 1086, 1086, 1086, 1086, 1086, 1086,
+     1087, 1087, 1087, 1087, 1087, 1087, 1073, 1073, 1073, 1073,
+     1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073,
+     1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073,
+     1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073,
+     1073, 1073, 1073, 1073, 1073, 1073
+
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1379,7 +1391,7 @@ static void config_end_include(void)
 #define YY_NO_INPUT 1
 #endif
 
-#line 1382 "<stdout>"
+#line 1394 "<stdout>"
 
 #define INITIAL 0
 #define quotedstring 1
@@ -1566,7 +1578,7 @@ YY_DECL
     
 #line 120 "util/configlexer.lex"
 
-#line 1569 "<stdout>"
+#line 1581 "<stdout>"
 
        if ( !(yy_init) )
                {
@@ -1625,13 +1637,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 >= 1060 )
+                               if ( yy_current_state >= 1074 )
                                        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] != 2130 );
+               while ( yy_base[yy_current_state] != 2157 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -2127,40 +2139,45 @@ YY_RULE_SETUP
 { YDVAR(1, VAR_CONTROL_CERT_FILE) }
        YY_BREAK
 case 94:
-/* rule 94 can match eol */
 YY_RULE_SETUP
 #line 217 "util/configlexer.lex"
+{ YDVAR(1, VAR_DOMAIN_INSECURE) }
+       YY_BREAK
+case 95:
+/* rule 95 can match eol */
+YY_RULE_SETUP
+#line 218 "util/configlexer.lex"
 { LEXOUT(("NL\n")); cfg_parser->line++; }
        YY_BREAK
 /* Quoted strings. Strip leading and ending quotes */
-case 95:
+case 96:
 YY_RULE_SETUP
-#line 220 "util/configlexer.lex"
+#line 221 "util/configlexer.lex"
 { BEGIN(quotedstring); LEXOUT(("QS ")); }
        YY_BREAK
 case YY_STATE_EOF(quotedstring):
-#line 221 "util/configlexer.lex"
+#line 222 "util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
        if(--num_args == 0) { BEGIN(INITIAL); }
        else                { BEGIN(val); }
 }
        YY_BREAK
-case 96:
+case 97:
 YY_RULE_SETUP
-#line 226 "util/configlexer.lex"
+#line 227 "util/configlexer.lex"
 { LEXOUT(("STR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 97:
-/* rule 97 can match eol */
+case 98:
+/* rule 98 can match eol */
 YY_RULE_SETUP
-#line 227 "util/configlexer.lex"
+#line 228 "util/configlexer.lex"
 { yyerror("newline inside quoted string, no end \""); 
                          cfg_parser->line++; BEGIN(INITIAL); }
        YY_BREAK
-case 98:
+case 99:
 YY_RULE_SETUP
-#line 229 "util/configlexer.lex"
+#line 230 "util/configlexer.lex"
 {
         LEXOUT(("QE "));
        if(--num_args == 0) { BEGIN(INITIAL); }
@@ -2173,34 +2190,34 @@ YY_RULE_SETUP
 }
        YY_BREAK
 /* Single Quoted strings. Strip leading and ending quotes */
-case 99:
+case 100:
 YY_RULE_SETUP
-#line 241 "util/configlexer.lex"
+#line 242 "util/configlexer.lex"
 { BEGIN(singlequotedstr); LEXOUT(("SQS ")); }
        YY_BREAK
 case YY_STATE_EOF(singlequotedstr):
-#line 242 "util/configlexer.lex"
+#line 243 "util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
        if(--num_args == 0) { BEGIN(INITIAL); }
        else                { BEGIN(val); }
 }
        YY_BREAK
-case 100:
+case 101:
 YY_RULE_SETUP
-#line 247 "util/configlexer.lex"
+#line 248 "util/configlexer.lex"
 { LEXOUT(("STR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 101:
-/* rule 101 can match eol */
+case 102:
+/* rule 102 can match eol */
 YY_RULE_SETUP
-#line 248 "util/configlexer.lex"
+#line 249 "util/configlexer.lex"
 { yyerror("newline inside quoted string, no end '"); 
                             cfg_parser->line++; BEGIN(INITIAL); }
        YY_BREAK
-case 102:
+case 103:
 YY_RULE_SETUP
-#line 250 "util/configlexer.lex"
+#line 251 "util/configlexer.lex"
 {
         LEXOUT(("SQE "));
        if(--num_args == 0) { BEGIN(INITIAL); }
@@ -2213,38 +2230,38 @@ YY_RULE_SETUP
 }
        YY_BREAK
 /* include: directive */
-case 103:
+case 104:
 YY_RULE_SETUP
-#line 262 "util/configlexer.lex"
+#line 263 "util/configlexer.lex"
 { 
        LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); }
        YY_BREAK
 case YY_STATE_EOF(include):
-#line 264 "util/configlexer.lex"
+#line 265 "util/configlexer.lex"
 {
         yyerror("EOF inside include directive");
         BEGIN(inc_prev);
 }
        YY_BREAK
-case 104:
-YY_RULE_SETUP
-#line 268 "util/configlexer.lex"
-{ LEXOUT(("ISP ")); /* ignore */ }
-       YY_BREAK
 case 105:
-/* rule 105 can match eol */
 YY_RULE_SETUP
 #line 269 "util/configlexer.lex"
-{ LEXOUT(("NL\n")); cfg_parser->line++;}
+{ LEXOUT(("ISP ")); /* ignore */ }
        YY_BREAK
 case 106:
+/* rule 106 can match eol */
 YY_RULE_SETUP
 #line 270 "util/configlexer.lex"
-{ LEXOUT(("IQS ")); BEGIN(include_quoted); }
+{ LEXOUT(("NL\n")); cfg_parser->line++;}
        YY_BREAK
 case 107:
 YY_RULE_SETUP
 #line 271 "util/configlexer.lex"
+{ LEXOUT(("IQS ")); BEGIN(include_quoted); }
+       YY_BREAK
+case 108:
+YY_RULE_SETUP
+#line 272 "util/configlexer.lex"
 {
        LEXOUT(("Iunquotedstr(%s) ", yytext));
        config_start_include(yytext);
@@ -2252,27 +2269,27 @@ YY_RULE_SETUP
 }
        YY_BREAK
 case YY_STATE_EOF(include_quoted):
-#line 276 "util/configlexer.lex"
+#line 277 "util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
         BEGIN(inc_prev);
 }
        YY_BREAK
-case 108:
+case 109:
 YY_RULE_SETUP
-#line 280 "util/configlexer.lex"
+#line 281 "util/configlexer.lex"
 { LEXOUT(("ISTR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 109:
-/* rule 109 can match eol */
+case 110:
+/* rule 110 can match eol */
 YY_RULE_SETUP
-#line 281 "util/configlexer.lex"
+#line 282 "util/configlexer.lex"
 { yyerror("newline before \" in include name"); 
                                  cfg_parser->line++; BEGIN(inc_prev); }
        YY_BREAK
-case 110:
+case 111:
 YY_RULE_SETUP
-#line 283 "util/configlexer.lex"
+#line 284 "util/configlexer.lex"
 {
        LEXOUT(("IQE "));
        yytext[yyleng - 1] = '\0';
@@ -2282,7 +2299,7 @@ YY_RULE_SETUP
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(val):
-#line 289 "util/configlexer.lex"
+#line 290 "util/configlexer.lex"
 {
        yy_set_bol(1); /* Set beginning of line, so "^" rules match.  */
        if (config_include_stack_ptr == 0) {
@@ -2293,33 +2310,33 @@ case YY_STATE_EOF(val):
        }
 }
        YY_BREAK
-case 111:
+case 112:
 YY_RULE_SETUP
-#line 299 "util/configlexer.lex"
+#line 300 "util/configlexer.lex"
 { LEXOUT(("unquotedstr(%s) ", yytext)); 
                        if(--num_args == 0) { BEGIN(INITIAL); }
                        yylval.str = strdup(yytext); return STRING; }
        YY_BREAK
-case 112:
+case 113:
 YY_RULE_SETUP
-#line 303 "util/configlexer.lex"
+#line 304 "util/configlexer.lex"
 {
        ub_c_error_msg("unknown keyword '%s'", yytext);
        }
        YY_BREAK
-case 113:
+case 114:
 YY_RULE_SETUP
-#line 307 "util/configlexer.lex"
+#line 308 "util/configlexer.lex"
 {
        ub_c_error_msg("stray '%s'", yytext);
        }
        YY_BREAK
-case 114:
+case 115:
 YY_RULE_SETUP
-#line 311 "util/configlexer.lex"
+#line 312 "util/configlexer.lex"
 ECHO;
        YY_BREAK
-#line 2322 "<stdout>"
+#line 2339 "<stdout>"
 
        case YY_END_OF_BUFFER:
                {
@@ -2609,7 +2626,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 >= 1060 )
+                       if ( yy_current_state >= 1074 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -2637,11 +2654,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 >= 1060 )
+               if ( yy_current_state >= 1074 )
                        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 == 1059);
+       yy_is_jam = (yy_current_state == 1073);
 
        return yy_is_jam ? 0 : yy_current_state;
 }
@@ -3278,7 +3295,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 311 "util/configlexer.lex"
+#line 312 "util/configlexer.lex"
 
 
 
index 226fd6910ef453c1c6f465337bf770660d54a2b7..bed3b3a47d00146080dce1237baebfcf7a58562d 100644 (file)
@@ -214,6 +214,7 @@ server-key-file{COLON}              { YDVAR(1, VAR_SERVER_KEY_FILE) }
 server-cert-file{COLON}                { YDVAR(1, VAR_SERVER_CERT_FILE) }
 control-key-file{COLON}                { YDVAR(1, VAR_CONTROL_KEY_FILE) }
 control-cert-file{COLON}       { YDVAR(1, VAR_CONTROL_CERT_FILE) }
+domain-insecure{COLON}         { YDVAR(1, VAR_DOMAIN_INSECURE) }
 <INITIAL,val>{NEWLINE}         { LEXOUT(("NL\n")); cfg_parser->line++; }
 
        /* Quoted strings. Strip leading and ending quotes */
index 25542b8a0c70c556efe82af5641f63ad74446933..6b1fc6eeabe5d92517daf6101a1ac958f061dd36 100644 (file)
      VAR_JOSTLE_TIMEOUT = 353,
      VAR_STUB_PRIME = 354,
      VAR_UNWANTED_REPLY_THRESHOLD = 355,
-     VAR_LOG_TIME_ASCII = 356
+     VAR_LOG_TIME_ASCII = 356,
+     VAR_DOMAIN_INSECURE = 357
    };
 #endif
 /* Tokens.  */
 #define VAR_STUB_PRIME 354
 #define VAR_UNWANTED_REPLY_THRESHOLD 355
 #define VAR_LOG_TIME_ASCII 356
+#define VAR_DOMAIN_INSECURE 357
 
 
 
@@ -325,7 +327,7 @@ typedef union YYSTYPE
        char*   str;
 }
 /* Line 187 of yacc.c.  */
-#line 329 "util/configparser.c"
+#line 331 "util/configparser.c"
        YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
@@ -338,7 +340,7 @@ typedef union YYSTYPE
 
 
 /* Line 216 of yacc.c.  */
-#line 342 "util/configparser.c"
+#line 344 "util/configparser.c"
 
 #ifdef short
 # undef short
@@ -553,20 +555,20 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  2
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   182
+#define YYLAST   184
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  102
+#define YYNTOKENS  103
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  103
+#define YYNNTS  104
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  195
+#define YYNRULES  197
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  286
+#define YYNSTATES  289
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   356
+#define YYMAXUTOK   357
 
 #define YYTRANSLATE(YYX)                                               \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -609,7 +611,7 @@ static const yytype_uint8 yytranslate[] =
       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
+      95,    96,    97,    98,    99,   100,   101,   102
 };
 
 #if YYDEBUG
@@ -625,97 +627,97 @@ static const yytype_uint16 yyprhs[] =
      103,   105,   107,   109,   111,   113,   115,   117,   119,   121,
      123,   125,   127,   129,   131,   133,   135,   137,   139,   141,
      143,   145,   147,   149,   151,   153,   155,   157,   159,   161,
-     163,   165,   167,   169,   171,   173,   175,   178,   179,   181,
-     183,   185,   187,   189,   192,   193,   195,   197,   199,   202,
-     205,   208,   211,   214,   217,   220,   223,   226,   229,   232,
-     235,   238,   241,   244,   247,   250,   253,   256,   259,   262,
-     265,   268,   271,   274,   277,   280,   283,   286,   289,   292,
-     295,   298,   301,   304,   307,   310,   313,   316,   319,   322,
-     325,   328,   331,   334,   337,   340,   343,   346,   349,   352,
-     355,   358,   361,   364,   367,   370,   373,   376,   379,   383,
-     386,   389,   392,   395,   398,   401,   404,   407,   410,   413,
-     417,   420,   423,   426,   429,   432,   435,   438,   441,   444,
-     446,   449,   450,   452,   454,   456,   458,   460,   462,   464,
-     467,   470,   473,   476,   479,   482
+     163,   165,   167,   169,   171,   173,   175,   177,   180,   181,
+     183,   185,   187,   189,   191,   194,   195,   197,   199,   201,
+     204,   207,   210,   213,   216,   219,   222,   225,   228,   231,
+     234,   237,   240,   243,   246,   249,   252,   255,   258,   261,
+     264,   267,   270,   273,   276,   279,   282,   285,   288,   291,
+     294,   297,   300,   303,   306,   309,   312,   315,   318,   321,
+     324,   327,   330,   333,   336,   339,   342,   345,   348,   351,
+     354,   357,   360,   363,   366,   369,   372,   375,   378,   381,
+     384,   388,   391,   394,   397,   400,   403,   406,   409,   412,
+     415,   418,   422,   425,   428,   431,   434,   437,   440,   443,
+     446,   449,   451,   454,   455,   457,   459,   461,   463,   465,
+     467,   469,   472,   475,   478,   481,   484,   487
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int16 yyrhs[] =
 {
-     103,     0,    -1,    -1,   103,   104,    -1,   105,   106,    -1,
-     108,   109,    -1,   111,   112,    -1,   195,   196,    -1,    11,
-      -1,   106,   107,    -1,    -1,   114,    -1,   115,    -1,   119,
-      -1,   122,    -1,   128,    -1,   129,    -1,   130,    -1,   131,
-      -1,   120,    -1,   135,    -1,   136,    -1,   137,    -1,   138,
-      -1,   139,    -1,   151,    -1,   152,    -1,   153,    -1,   155,
-      -1,   156,    -1,   125,    -1,   157,    -1,   158,    -1,   161,
-      -1,   159,    -1,   160,    -1,   162,    -1,   163,    -1,   164,
-      -1,   172,    -1,   146,    -1,   147,    -1,   148,    -1,   149,
-      -1,   165,    -1,   175,    -1,   143,    -1,   145,    -1,   176,
-      -1,   178,    -1,   179,    -1,   180,    -1,   126,    -1,   150,
-      -1,   182,    -1,   183,    -1,   144,    -1,   181,    -1,   133,
-      -1,   121,    -1,   140,    -1,   173,    -1,   177,    -1,   166,
-      -1,   174,    -1,   185,    -1,   186,    -1,   127,    -1,   116,
-      -1,   132,    -1,   168,    -1,   117,    -1,   123,    -1,   124,
-      -1,   141,    -1,   142,    -1,   184,    -1,   167,    -1,   169,
-      -1,   170,    -1,   118,    -1,   187,    -1,   154,    -1,   171,
-      -1,   134,    -1,    38,    -1,   109,   110,    -1,    -1,   188,
-      -1,   189,    -1,   190,    -1,   191,    -1,    44,    -1,   112,
-     113,    -1,    -1,   192,    -1,   193,    -1,   194,    -1,    13,
-      10,    -1,    12,    10,    -1,    76,    10,    -1,    79,    10,
-      -1,    96,    10,    -1,    14,    10,    -1,    16,    10,    -1,
-      67,    10,    -1,    15,    10,    -1,    80,    10,    -1,    81,
-      10,    -1,    31,    10,    -1,    60,    10,    -1,    75,    10,
-      -1,    17,    10,    -1,    18,    10,    -1,    19,    10,    -1,
-      20,    10,    -1,    77,    10,    -1,    66,    10,    -1,   101,
-      10,    -1,    21,    10,    -1,    22,    10,    -1,    23,    10,
-      -1,    24,    10,    -1,    25,    10,    -1,    68,    10,    -1,
-      82,    10,    -1,    83,    10,    -1,    54,    10,    -1,    64,
-      10,    -1,    55,    10,    -1,    48,    10,    -1,    49,    10,
-      -1,    50,    10,    -1,    51,    10,    -1,    61,    10,    -1,
-      26,    10,    -1,    27,    10,    -1,    28,    10,    -1,    98,
-      10,    -1,    29,    10,    -1,    30,    10,    -1,    32,    10,
-      -1,    33,    10,    -1,    35,    10,    -1,    36,    10,    -1,
-      34,    10,    -1,    41,    10,    -1,    42,    10,    -1,    43,
-      10,    -1,    52,    10,    -1,    71,    10,    -1,    85,    10,
-      -1,    78,    10,    -1,    86,    10,    -1,    87,    10,    -1,
-     100,    10,    -1,    47,    10,    -1,    69,    10,    -1,    72,
-      10,    10,    -1,    53,    10,    -1,    56,    10,    -1,    70,
-      10,    -1,    57,    10,    -1,    58,    10,    -1,    59,    10,
-      -1,    65,    10,    -1,    62,    10,    -1,    63,    10,    -1,
-      84,    10,    -1,    73,    10,    10,    -1,    74,    10,    -1,
-      97,    10,    -1,    37,    10,    -1,    39,    10,    -1,    40,
-      10,    -1,    99,    10,    -1,    37,    10,    -1,    45,    10,
-      -1,    46,    10,    -1,    88,    -1,   196,   197,    -1,    -1,
-     198,    -1,   200,    -1,   199,    -1,   201,    -1,   202,    -1,
-     203,    -1,   204,    -1,    89,    10,    -1,    91,    10,    -1,
-      90,    10,    -1,    92,    10,    -1,    93,    10,    -1,    94,
-      10,    -1,    95,    10,    -1
+     104,     0,    -1,    -1,   104,   105,    -1,   106,   107,    -1,
+     109,   110,    -1,   112,   113,    -1,   197,   198,    -1,    11,
+      -1,   107,   108,    -1,    -1,   115,    -1,   116,    -1,   120,
+      -1,   123,    -1,   129,    -1,   130,    -1,   131,    -1,   132,
+      -1,   121,    -1,   136,    -1,   137,    -1,   138,    -1,   139,
+      -1,   140,    -1,   153,    -1,   154,    -1,   155,    -1,   157,
+      -1,   158,    -1,   126,    -1,   159,    -1,   160,    -1,   163,
+      -1,   161,    -1,   162,    -1,   164,    -1,   165,    -1,   166,
+      -1,   174,    -1,   148,    -1,   149,    -1,   150,    -1,   151,
+      -1,   167,    -1,   177,    -1,   144,    -1,   146,    -1,   178,
+      -1,   180,    -1,   181,    -1,   182,    -1,   127,    -1,   152,
+      -1,   184,    -1,   185,    -1,   145,    -1,   183,    -1,   134,
+      -1,   122,    -1,   141,    -1,   175,    -1,   179,    -1,   168,
+      -1,   176,    -1,   187,    -1,   188,    -1,   128,    -1,   117,
+      -1,   133,    -1,   170,    -1,   118,    -1,   124,    -1,   125,
+      -1,   142,    -1,   143,    -1,   186,    -1,   169,    -1,   171,
+      -1,   172,    -1,   119,    -1,   189,    -1,   156,    -1,   173,
+      -1,   135,    -1,   147,    -1,    38,    -1,   110,   111,    -1,
+      -1,   190,    -1,   191,    -1,   192,    -1,   193,    -1,    44,
+      -1,   113,   114,    -1,    -1,   194,    -1,   195,    -1,   196,
+      -1,    13,    10,    -1,    12,    10,    -1,    76,    10,    -1,
+      79,    10,    -1,    96,    10,    -1,    14,    10,    -1,    16,
+      10,    -1,    67,    10,    -1,    15,    10,    -1,    80,    10,
+      -1,    81,    10,    -1,    31,    10,    -1,    60,    10,    -1,
+      75,    10,    -1,    17,    10,    -1,    18,    10,    -1,    19,
+      10,    -1,    20,    10,    -1,    77,    10,    -1,    66,    10,
+      -1,   101,    10,    -1,    21,    10,    -1,    22,    10,    -1,
+      23,    10,    -1,    24,    10,    -1,    25,    10,    -1,    68,
+      10,    -1,    82,    10,    -1,    83,    10,    -1,    54,    10,
+      -1,    64,    10,    -1,    55,    10,    -1,   102,    10,    -1,
+      48,    10,    -1,    49,    10,    -1,    50,    10,    -1,    51,
+      10,    -1,    61,    10,    -1,    26,    10,    -1,    27,    10,
+      -1,    28,    10,    -1,    98,    10,    -1,    29,    10,    -1,
+      30,    10,    -1,    32,    10,    -1,    33,    10,    -1,    35,
+      10,    -1,    36,    10,    -1,    34,    10,    -1,    41,    10,
+      -1,    42,    10,    -1,    43,    10,    -1,    52,    10,    -1,
+      71,    10,    -1,    85,    10,    -1,    78,    10,    -1,    86,
+      10,    -1,    87,    10,    -1,   100,    10,    -1,    47,    10,
+      -1,    69,    10,    -1,    72,    10,    10,    -1,    53,    10,
+      -1,    56,    10,    -1,    70,    10,    -1,    57,    10,    -1,
+      58,    10,    -1,    59,    10,    -1,    65,    10,    -1,    62,
+      10,    -1,    63,    10,    -1,    84,    10,    -1,    73,    10,
+      10,    -1,    74,    10,    -1,    97,    10,    -1,    37,    10,
+      -1,    39,    10,    -1,    40,    10,    -1,    99,    10,    -1,
+      37,    10,    -1,    45,    10,    -1,    46,    10,    -1,    88,
+      -1,   198,   199,    -1,    -1,   200,    -1,   202,    -1,   201,
+      -1,   203,    -1,   204,    -1,   205,    -1,   206,    -1,    89,
+      10,    -1,    91,    10,    -1,    90,    10,    -1,    92,    10,
+      -1,    93,    10,    -1,    94,    10,    -1,    95,    10,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   102,   102,   102,   103,   103,   104,   104,   108,   113,
-     114,   115,   115,   115,   116,   116,   117,   117,   117,   118,
-     118,   118,   119,   119,   119,   120,   120,   121,   121,   122,
-     122,   123,   123,   124,   124,   125,   125,   126,   126,   127,
-     127,   128,   128,   128,   129,   129,   129,   130,   130,   130,
-     131,   131,   132,   132,   133,   133,   134,   134,   135,   135,
-     135,   136,   136,   137,   137,   138,   138,   138,   139,   139,
-     140,   140,   141,   141,   142,   142,   142,   143,   143,   144,
-     144,   145,   145,   146,   146,   148,   160,   161,   162,   162,
-     162,   162,   164,   176,   177,   178,   178,   178,   180,   189,
-     198,   209,   218,   227,   236,   249,   264,   273,   282,   291,
-     300,   309,   318,   327,   336,   345,   354,   363,   377,   386,
-     393,   400,   407,   415,   422,   429,   436,   443,   451,   459,
-     466,   475,   484,   491,   498,   509,   517,   530,   539,   548,
-     556,   569,   578,   587,   596,   605,   618,   625,   635,   645,
-     655,   665,   675,   685,   692,   699,   708,   715,   725,   739,
-     746,   764,   773,   782,   792,   802,   809,   817,   830,   838,
-     858,   865,   880,   887,   894,   901,   911,   918,   925,   932,
-     937,   938,   939,   939,   939,   940,   940,   940,   941,   943,
-     953,   962,   969,   976,   983,   990
+       0,   103,   103,   103,   104,   104,   105,   105,   109,   114,
+     115,   116,   116,   116,   117,   117,   118,   118,   118,   119,
+     119,   119,   120,   120,   120,   121,   121,   122,   122,   123,
+     123,   124,   124,   125,   125,   126,   126,   127,   127,   128,
+     128,   129,   129,   129,   130,   130,   130,   131,   131,   131,
+     132,   132,   133,   133,   134,   134,   135,   135,   136,   136,
+     136,   137,   137,   138,   138,   139,   139,   139,   140,   140,
+     141,   141,   142,   142,   143,   143,   143,   144,   144,   145,
+     145,   146,   146,   147,   147,   148,   150,   162,   163,   164,
+     164,   164,   164,   166,   178,   179,   180,   180,   180,   182,
+     191,   200,   211,   220,   229,   238,   251,   266,   275,   284,
+     293,   302,   311,   320,   329,   338,   347,   356,   365,   379,
+     388,   395,   402,   409,   417,   424,   431,   438,   445,   453,
+     461,   468,   475,   484,   493,   500,   507,   518,   526,   539,
+     548,   557,   565,   578,   587,   596,   605,   614,   627,   634,
+     644,   654,   664,   674,   684,   694,   701,   708,   717,   724,
+     734,   748,   755,   773,   782,   791,   801,   811,   818,   826,
+     839,   847,   867,   874,   889,   896,   903,   910,   920,   927,
+     934,   941,   946,   947,   948,   948,   948,   949,   949,   949,
+     950,   952,   962,   971,   978,   985,   992,   999
 };
 #endif
 
@@ -756,45 +758,46 @@ static const char *const yytname[] =
   "VAR_SERVER_CERT_FILE", "VAR_CONTROL_KEY_FILE", "VAR_CONTROL_CERT_FILE",
   "VAR_EXTENDED_STATISTICS", "VAR_LOCAL_DATA_PTR", "VAR_JOSTLE_TIMEOUT",
   "VAR_STUB_PRIME", "VAR_UNWANTED_REPLY_THRESHOLD", "VAR_LOG_TIME_ASCII",
-  "$accept", "toplevelvars", "toplevelvar", "serverstart",
-  "contents_server", "content_server", "stubstart", "contents_stub",
-  "content_stub", "forwardstart", "contents_forward", "content_forward",
-  "server_num_threads", "server_verbosity", "server_statistics_interval",
-  "server_statistics_cumulative", "server_extended_statistics",
-  "server_port", "server_interface", "server_outgoing_interface",
-  "server_outgoing_range", "server_outgoing_port_permit",
-  "server_outgoing_port_avoid", "server_outgoing_num_tcp",
-  "server_incoming_num_tcp", "server_interface_automatic", "server_do_ip4",
-  "server_do_ip6", "server_do_udp", "server_do_tcp", "server_do_daemonize",
+  "VAR_DOMAIN_INSECURE", "$accept", "toplevelvars", "toplevelvar",
+  "serverstart", "contents_server", "content_server", "stubstart",
+  "contents_stub", "content_stub", "forwardstart", "contents_forward",
+  "content_forward", "server_num_threads", "server_verbosity",
+  "server_statistics_interval", "server_statistics_cumulative",
+  "server_extended_statistics", "server_port", "server_interface",
+  "server_outgoing_interface", "server_outgoing_range",
+  "server_outgoing_port_permit", "server_outgoing_port_avoid",
+  "server_outgoing_num_tcp", "server_incoming_num_tcp",
+  "server_interface_automatic", "server_do_ip4", "server_do_ip6",
+  "server_do_udp", "server_do_tcp", "server_do_daemonize",
   "server_use_syslog", "server_log_time_ascii", "server_chroot",
   "server_username", "server_directory", "server_logfile",
   "server_pidfile", "server_root_hints", "server_dlv_anchor_file",
   "server_dlv_anchor", "server_trust_anchor_file",
   "server_trusted_keys_file", "server_trust_anchor",
-  "server_hide_identity", "server_hide_version", "server_identity",
-  "server_version", "server_msg_buffer_size", "server_msg_cache_size",
-  "server_msg_cache_slabs", "server_num_queries_per_thread",
-  "server_jostle_timeout", "server_rrset_cache_size",
-  "server_rrset_cache_slabs", "server_infra_host_ttl",
-  "server_infra_lame_ttl", "server_infra_cache_numhosts",
-  "server_infra_cache_lame_size", "server_infra_cache_slabs",
-  "server_target_fetch_policy", "server_harden_short_bufsize",
-  "server_harden_large_queries", "server_harden_glue",
-  "server_harden_dnssec_stripped", "server_harden_referral_path",
-  "server_use_caps_for_id", "server_private_address",
-  "server_private_domain", "server_unwanted_reply_threshold",
-  "server_do_not_query_address", "server_do_not_query_localhost",
-  "server_access_control", "server_module_conf",
-  "server_val_override_date", "server_cache_max_ttl", "server_bogus_ttl",
-  "server_val_clean_additional", "server_val_permissive_mode",
-  "server_val_nsec3_keysize_iterations", "server_key_cache_size",
-  "server_key_cache_slabs", "server_neg_cache_size", "server_local_zone",
-  "server_local_data", "server_local_data_ptr", "stub_name", "stub_host",
-  "stub_addr", "stub_prime", "forward_name", "forward_host",
-  "forward_addr", "rcstart", "contents_rc", "content_rc",
-  "rc_control_enable", "rc_control_port", "rc_control_interface",
-  "rc_server_key_file", "rc_server_cert_file", "rc_control_key_file",
-  "rc_control_cert_file", 0
+  "server_domain_insecure", "server_hide_identity", "server_hide_version",
+  "server_identity", "server_version", "server_msg_buffer_size",
+  "server_msg_cache_size", "server_msg_cache_slabs",
+  "server_num_queries_per_thread", "server_jostle_timeout",
+  "server_rrset_cache_size", "server_rrset_cache_slabs",
+  "server_infra_host_ttl", "server_infra_lame_ttl",
+  "server_infra_cache_numhosts", "server_infra_cache_lame_size",
+  "server_infra_cache_slabs", "server_target_fetch_policy",
+  "server_harden_short_bufsize", "server_harden_large_queries",
+  "server_harden_glue", "server_harden_dnssec_stripped",
+  "server_harden_referral_path", "server_use_caps_for_id",
+  "server_private_address", "server_private_domain",
+  "server_unwanted_reply_threshold", "server_do_not_query_address",
+  "server_do_not_query_localhost", "server_access_control",
+  "server_module_conf", "server_val_override_date", "server_cache_max_ttl",
+  "server_bogus_ttl", "server_val_clean_additional",
+  "server_val_permissive_mode", "server_val_nsec3_keysize_iterations",
+  "server_key_cache_size", "server_key_cache_slabs",
+  "server_neg_cache_size", "server_local_zone", "server_local_data",
+  "server_local_data_ptr", "stub_name", "stub_host", "stub_addr",
+  "stub_prime", "forward_name", "forward_host", "forward_addr", "rcstart",
+  "contents_rc", "content_rc", "rc_control_enable", "rc_control_port",
+  "rc_control_interface", "rc_server_key_file", "rc_server_cert_file",
+  "rc_control_key_file", "rc_control_cert_file", 0
 };
 #endif
 
@@ -813,23 +816,23 @@ static const yytype_uint16 yytoknum[] =
      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
+     355,   356,   357
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,   102,   103,   103,   104,   104,   104,   104,   105,   106,
-     106,   107,   107,   107,   107,   107,   107,   107,   107,   107,
-     107,   107,   107,   107,   107,   107,   107,   107,   107,   107,
-     107,   107,   107,   107,   107,   107,   107,   107,   107,   107,
-     107,   107,   107,   107,   107,   107,   107,   107,   107,   107,
-     107,   107,   107,   107,   107,   107,   107,   107,   107,   107,
-     107,   107,   107,   107,   107,   107,   107,   107,   107,   107,
-     107,   107,   107,   107,   107,   107,   107,   107,   107,   107,
-     107,   107,   107,   107,   107,   108,   109,   109,   110,   110,
-     110,   110,   111,   112,   112,   113,   113,   113,   114,   115,
+       0,   103,   104,   104,   105,   105,   105,   105,   106,   107,
+     107,   108,   108,   108,   108,   108,   108,   108,   108,   108,
+     108,   108,   108,   108,   108,   108,   108,   108,   108,   108,
+     108,   108,   108,   108,   108,   108,   108,   108,   108,   108,
+     108,   108,   108,   108,   108,   108,   108,   108,   108,   108,
+     108,   108,   108,   108,   108,   108,   108,   108,   108,   108,
+     108,   108,   108,   108,   108,   108,   108,   108,   108,   108,
+     108,   108,   108,   108,   108,   108,   108,   108,   108,   108,
+     108,   108,   108,   108,   108,   108,   109,   110,   110,   111,
+     111,   111,   111,   112,   113,   113,   114,   114,   114,   115,
      116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
      126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
      136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
@@ -838,8 +841,8 @@ static const yytype_uint8 yyr1[] =
      166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
      176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
      186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
-     196,   196,   197,   197,   197,   197,   197,   197,   197,   198,
-     199,   200,   201,   202,   203,   204
+     196,   197,   198,   198,   199,   199,   199,   199,   199,   199,
+     199,   200,   201,   202,   203,   204,   205,   206
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -853,18 +856,18 @@ static const yytype_uint8 yyr2[] =
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     2,     0,     1,     1,
-       1,     1,     1,     2,     0,     1,     1,     1,     2,     2,
+       1,     1,     1,     1,     1,     1,     1,     2,     0,     1,
+       1,     1,     1,     1,     2,     0,     1,     1,     1,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     3,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     3,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     1,
-       2,     0,     1,     1,     1,     1,     1,     1,     1,     2,
-       2,     2,     2,     2,     2,     2
+       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,     1,     2,     0,     1,     1,     1,     1,     1,     1,
+       1,     2,     2,     2,     2,     2,     2,     2
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -872,8 +875,8 @@ static const yytype_uint8 yyr2[] =
    means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       2,     0,     1,     8,    85,    92,   179,     3,    10,    87,
-      94,   181,     4,     5,     6,     7,     0,     0,     0,     0,
+       2,     0,     1,     8,    86,    93,   181,     3,    10,    88,
+      95,   183,     4,     5,     6,     7,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
@@ -881,42 +884,42 @@ static const yytype_uint8 yydefact[] =
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       9,    11,    12,    68,    71,    80,    13,    19,    59,    14,
-      72,    73,    30,    52,    67,    15,    16,    17,    18,    69,
-      58,    84,    20,    21,    22,    23,    24,    60,    74,    75,
-      46,    56,    47,    40,    41,    42,    43,    53,    25,    26,
-      27,    82,    28,    29,    31,    32,    34,    35,    33,    36,
-      37,    38,    44,    63,    77,    70,    78,    79,    83,    39,
-      61,    64,    45,    48,    62,    49,    50,    51,    57,    54,
-      55,    76,    65,    66,    81,     0,     0,     0,     0,    86,
-      88,    89,    90,    91,     0,     0,     0,    93,    95,    96,
-      97,     0,     0,     0,     0,     0,     0,     0,   180,   182,
-     184,   183,   185,   186,   187,   188,    99,    98,   103,   106,
-     104,   112,   113,   114,   115,   119,   120,   121,   122,   123,
-     135,   136,   137,   139,   140,   109,   141,   142,   145,   143,
-     144,   146,   147,   148,   156,   130,   131,   132,   133,   149,
-     159,   127,   129,   160,   162,   163,   164,   110,   134,   166,
-     167,   128,   165,   117,   105,   124,   157,   161,   150,     0,
-       0,   170,   111,   100,   116,   152,   101,   107,   108,   125,
-     126,   168,   151,   153,   154,   102,   171,   138,   155,   118,
-     172,   173,   174,   175,   176,   177,   178,   189,   191,   190,
-     192,   193,   194,   195,   158,   169
+       0,     9,    11,    12,    68,    71,    80,    13,    19,    59,
+      14,    72,    73,    30,    52,    67,    15,    16,    17,    18,
+      69,    58,    84,    20,    21,    22,    23,    24,    60,    74,
+      75,    46,    56,    47,    85,    40,    41,    42,    43,    53,
+      25,    26,    27,    82,    28,    29,    31,    32,    34,    35,
+      33,    36,    37,    38,    44,    63,    77,    70,    78,    79,
+      83,    39,    61,    64,    45,    48,    62,    49,    50,    51,
+      57,    54,    55,    76,    65,    66,    81,     0,     0,     0,
+       0,    87,    89,    90,    91,    92,     0,     0,     0,    94,
+      96,    97,    98,     0,     0,     0,     0,     0,     0,     0,
+     182,   184,   186,   185,   187,   188,   189,   190,   100,    99,
+     104,   107,   105,   113,   114,   115,   116,   120,   121,   122,
+     123,   124,   137,   138,   139,   141,   142,   110,   143,   144,
+     147,   145,   146,   148,   149,   150,   158,   132,   133,   134,
+     135,   151,   161,   128,   130,   162,   164,   165,   166,   111,
+     136,   168,   169,   129,   167,   118,   106,   125,   159,   163,
+     152,     0,     0,   172,   112,   101,   117,   154,   102,   108,
+     109,   126,   127,   170,   153,   155,   156,   103,   173,   140,
+     157,   119,   131,   174,   175,   176,   177,   178,   179,   180,
+     191,   193,   192,   194,   195,   196,   197,   160,   171
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,     1,     7,     8,    12,    90,     9,    13,   169,    10,
-      14,   177,    91,    92,    93,    94,    95,    96,    97,    98,
-      99,   100,   101,   102,   103,   104,   105,   106,   107,   108,
-     109,   110,   111,   112,   113,   114,   115,   116,   117,   118,
-     119,   120,   121,   122,   123,   124,   125,   126,   127,   128,
-     129,   130,   131,   132,   133,   134,   135,   136,   137,   138,
-     139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
-     149,   150,   151,   152,   153,   154,   155,   156,   157,   158,
-     159,   160,   161,   162,   163,   164,   170,   171,   172,   173,
-     178,   179,   180,    11,    15,   188,   189,   190,   191,   192,
-     193,   194,   195
+      -1,     1,     7,     8,    12,    91,     9,    13,   171,    10,
+      14,   179,    92,    93,    94,    95,    96,    97,    98,    99,
+     100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
+     110,   111,   112,   113,   114,   115,   116,   117,   118,   119,
+     120,   121,   122,   123,   124,   125,   126,   127,   128,   129,
+     130,   131,   132,   133,   134,   135,   136,   137,   138,   139,
+     140,   141,   142,   143,   144,   145,   146,   147,   148,   149,
+     150,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+     160,   161,   162,   163,   164,   165,   166,   172,   173,   174,
+     175,   180,   181,   182,    11,    15,   190,   191,   192,   193,
+     194,   195,   196,   197
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
@@ -925,34 +928,34 @@ static const yytype_int16 yydefgoto[] =
 static const yytype_int16 yypact[] =
 {
      -13,    76,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
-     -13,   -13,   -12,    40,    45,     3,    15,    16,    17,    18,
-      22,    23,    24,    68,    71,    73,    89,    90,    91,    92,
-      93,    94,    95,    96,    97,    98,    99,   100,   101,   102,
-     103,   105,   106,   107,   108,   109,   111,   112,   113,   114,
-     115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
-     125,   126,   127,   128,   130,   131,   132,   133,   134,   135,
-     136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
-     146,   147,   148,   149,   150,   151,   152,   153,   155,   156,
+     -13,   -13,   -12,    40,    46,     4,    15,    16,    17,    18,
+      22,    23,    24,    68,    71,    72,    90,    91,    92,    93,
+      94,    95,    96,    97,    98,    99,   100,   101,   102,   103,
+     105,   106,   107,   108,   109,   111,   112,   113,   114,   115,
+     116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
+     126,   127,   128,   130,   131,   132,   133,   134,   135,   136,
+     137,   138,   139,   140,   141,   142,   143,   144,   145,   146,
+     147,   148,   149,   150,   151,   152,   153,   155,   156,   157,
+     158,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
      -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
      -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
      -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
      -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
      -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
      -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
+     -13,   -13,   -13,   -13,   -13,   -13,   -13,   159,   160,   161,
+     162,   -13,   -13,   -13,   -13,   -13,   163,   164,   165,   -13,
+     -13,   -13,   -13,   166,   167,   168,   169,   170,   171,   172,
      -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
-     -13,   -13,   -13,   -13,   -13,   157,   158,   159,   160,   -13,
-     -13,   -13,   -13,   -13,   161,   162,   163,   -13,   -13,   -13,
-     -13,   164,   165,   166,   167,   168,   169,   170,   -13,   -13,
      -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
      -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
      -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
      -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
      -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
-     -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   171,
-     172,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
+     -13,   173,   174,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
      -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
      -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
-     -13,   -13,   -13,   -13,   -13,   -13
+     -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13
 };
 
 /* YYPGOTO[NTERM-NUM].  */
@@ -968,7 +971,7 @@ static const yytype_int8 yypgoto[] =
      -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
      -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
      -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
-     -13,   -13,   -13
+     -13,   -13,   -13,   -13
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -980,23 +983,23 @@ static const yytype_uint16 yytable[] =
 {
       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
       26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
-      36,    37,    38,    39,    40,   196,   197,   198,   199,    41,
-      42,    43,   200,   201,   202,    44,    45,    46,    47,    48,
+      36,    37,    38,    39,    40,   198,   199,   200,   201,    41,
+      42,    43,   202,   203,   204,    44,    45,    46,    47,    48,
       49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
       59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
       69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
-      79,    80,    81,    82,    83,    84,     2,   165,   203,   166,
-     167,   204,   174,   205,    85,    86,    87,     3,    88,    89,
-     175,   176,   181,   182,   183,   184,   185,   186,   187,   206,
-     207,   208,   209,   210,   211,   212,   213,   214,   215,   216,
-     217,   218,   219,   220,     4,   221,   222,   223,   224,   225,
-       5,   226,   227,   228,   229,   230,   231,   232,   233,   234,
-     235,   236,   237,   238,   239,   240,   241,   242,   243,   168,
-     244,   245,   246,   247,   248,   249,   250,   251,   252,   253,
-     254,   255,   256,   257,   258,   259,   260,   261,   262,   263,
-     264,   265,   266,   267,     6,   268,   269,   270,   271,   272,
-     273,   274,   275,   276,   277,   278,   279,   280,   281,   282,
-     283,   284,   285
+      79,    80,    81,    82,    83,    84,     2,   167,   205,   168,
+     169,   206,   207,   176,    85,    86,    87,     3,    88,    89,
+      90,   177,   178,   183,   184,   185,   186,   187,   188,   189,
+     208,   209,   210,   211,   212,   213,   214,   215,   216,   217,
+     218,   219,   220,   221,     4,   222,   223,   224,   225,   226,
+       5,   227,   228,   229,   230,   231,   232,   233,   234,   235,
+     236,   237,   238,   239,   240,   241,   242,   243,   244,   170,
+     245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
+     255,   256,   257,   258,   259,   260,   261,   262,   263,   264,
+     265,   266,   267,   268,     6,   269,   270,   271,   272,   273,
+     274,   275,   276,   277,   278,   279,   280,   281,   282,   283,
+     284,   285,   286,   287,   288
 };
 
 static const yytype_uint8 yycheck[] =
@@ -1009,8 +1012,8 @@ static const yytype_uint8 yycheck[] =
       62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
       72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
       82,    83,    84,    85,    86,    87,     0,    37,    10,    39,
-      40,    10,    37,    10,    96,    97,    98,    11,   100,   101,
-      45,    46,    89,    90,    91,    92,    93,    94,    95,    10,
+      40,    10,    10,    37,    96,    97,    98,    11,   100,   101,
+     102,    45,    46,    89,    90,    91,    92,    93,    94,    95,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    38,    10,    10,    10,    10,    10,
       44,    10,    10,    10,    10,    10,    10,    10,    10,    10,
@@ -1019,15 +1022,15 @@ static const yytype_uint8 yycheck[] =
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    88,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10
+      10,    10,    10,    10,    10
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    symbol of state STATE-NUM.  */
 static const yytype_uint8 yystos[] =
 {
-       0,   103,     0,    11,    38,    44,    88,   104,   105,   108,
-     111,   195,   106,   109,   112,   196,    12,    13,    14,    15,
+       0,   104,     0,    11,    38,    44,    88,   105,   106,   109,
+     112,   197,   107,   110,   113,   198,    12,    13,    14,    15,
       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
       26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
       36,    41,    42,    43,    47,    48,    49,    50,    51,    52,
@@ -1035,17 +1038,17 @@ static const yytype_uint8 yystos[] =
       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,    96,    97,    98,   100,   101,
-     107,   114,   115,   116,   117,   118,   119,   120,   121,   122,
+     102,   108,   115,   116,   117,   118,   119,   120,   121,   122,
      123,   124,   125,   126,   127,   128,   129,   130,   131,   132,
      133,   134,   135,   136,   137,   138,   139,   140,   141,   142,
      143,   144,   145,   146,   147,   148,   149,   150,   151,   152,
      153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
      163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
      173,   174,   175,   176,   177,   178,   179,   180,   181,   182,
-     183,   184,   185,   186,   187,    37,    39,    40,    99,   110,
-     188,   189,   190,   191,    37,    45,    46,   113,   192,   193,
-     194,    89,    90,    91,    92,    93,    94,    95,   197,   198,
-     199,   200,   201,   202,   203,   204,    10,    10,    10,    10,
+     183,   184,   185,   186,   187,   188,   189,    37,    39,    40,
+      99,   111,   190,   191,   192,   193,    37,    45,    46,   114,
+     194,   195,   196,    89,    90,    91,    92,    93,    94,    95,
+     199,   200,   201,   202,   203,   204,   205,   206,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
@@ -1054,7 +1057,7 @@ static const yytype_uint8 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
 };
 
 #define yyerrok                (yyerrstatus = 0)
@@ -1869,14 +1872,14 @@ yyreduce:
   switch (yyn)
     {
         case 8:
-#line 109 "util/configparser.y"
+#line 110 "util/configparser.y"
     { 
                OUTYY(("\nP(server:)\n")); 
        }
     break;
 
-  case 85:
-#line 149 "util/configparser.y"
+  case 86:
+#line 151 "util/configparser.y"
     {
                struct config_stub* s;
                OUTYY(("\nP(stub_zone:)\n")); 
@@ -1889,8 +1892,8 @@ yyreduce:
        }
     break;
 
-  case 92:
-#line 165 "util/configparser.y"
+  case 93:
+#line 167 "util/configparser.y"
     {
                struct config_stub* s;
                OUTYY(("\nP(forward_zone:)\n")); 
@@ -1903,8 +1906,8 @@ yyreduce:
        }
     break;
 
-  case 98:
-#line 181 "util/configparser.y"
+  case 99:
+#line 183 "util/configparser.y"
     { 
                OUTYY(("P(server_num_threads:%s)\n", (yyvsp[(2) - (2)].str))); 
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -1914,8 +1917,8 @@ yyreduce:
        }
     break;
 
-  case 99:
-#line 190 "util/configparser.y"
+  case 100:
+#line 192 "util/configparser.y"
     { 
                OUTYY(("P(server_verbosity:%s)\n", (yyvsp[(2) - (2)].str))); 
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -1925,8 +1928,8 @@ yyreduce:
        }
     break;
 
-  case 100:
-#line 199 "util/configparser.y"
+  case 101:
+#line 201 "util/configparser.y"
     { 
                OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[(2) - (2)].str))); 
                if(strcmp((yyvsp[(2) - (2)].str), "") == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0)
@@ -1938,8 +1941,8 @@ yyreduce:
        }
     break;
 
-  case 101:
-#line 210 "util/configparser.y"
+  case 102:
+#line 212 "util/configparser.y"
     {
                OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -1949,8 +1952,8 @@ yyreduce:
        }
     break;
 
-  case 102:
-#line 219 "util/configparser.y"
+  case 103:
+#line 221 "util/configparser.y"
     {
                OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -1960,8 +1963,8 @@ yyreduce:
        }
     break;
 
-  case 103:
-#line 228 "util/configparser.y"
+  case 104:
+#line 230 "util/configparser.y"
     {
                OUTYY(("P(server_port:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -1971,8 +1974,8 @@ yyreduce:
        }
     break;
 
-  case 104:
-#line 237 "util/configparser.y"
+  case 105:
+#line 239 "util/configparser.y"
     {
                OUTYY(("P(server_interface:%s)\n", (yyvsp[(2) - (2)].str)));
                if(cfg_parser->cfg->num_ifs == 0)
@@ -1986,8 +1989,8 @@ yyreduce:
        }
     break;
 
-  case 105:
-#line 250 "util/configparser.y"
+  case 106:
+#line 252 "util/configparser.y"
     {
                OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[(2) - (2)].str)));
                if(cfg_parser->cfg->num_out_ifs == 0)
@@ -2003,8 +2006,8 @@ yyreduce:
        }
     break;
 
-  case 106:
-#line 265 "util/configparser.y"
+  case 107:
+#line 267 "util/configparser.y"
     {
                OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2014,8 +2017,8 @@ yyreduce:
        }
     break;
 
-  case 107:
-#line 274 "util/configparser.y"
+  case 108:
+#line 276 "util/configparser.y"
     {
                OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_mark_ports((yyvsp[(2) - (2)].str), 1, 
@@ -2025,8 +2028,8 @@ yyreduce:
        }
     break;
 
-  case 108:
-#line 283 "util/configparser.y"
+  case 109:
+#line 285 "util/configparser.y"
     {
                OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_mark_ports((yyvsp[(2) - (2)].str), 0, 
@@ -2036,8 +2039,8 @@ yyreduce:
        }
     break;
 
-  case 109:
-#line 292 "util/configparser.y"
+  case 110:
+#line 294 "util/configparser.y"
     {
                OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2047,8 +2050,8 @@ yyreduce:
        }
     break;
 
-  case 110:
-#line 301 "util/configparser.y"
+  case 111:
+#line 303 "util/configparser.y"
     {
                OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2058,8 +2061,8 @@ yyreduce:
        }
     break;
 
-  case 111:
-#line 310 "util/configparser.y"
+  case 112:
+#line 312 "util/configparser.y"
     {
                OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2069,8 +2072,8 @@ yyreduce:
        }
     break;
 
-  case 112:
-#line 319 "util/configparser.y"
+  case 113:
+#line 321 "util/configparser.y"
     {
                OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2080,8 +2083,8 @@ yyreduce:
        }
     break;
 
-  case 113:
-#line 328 "util/configparser.y"
+  case 114:
+#line 330 "util/configparser.y"
     {
                OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2091,8 +2094,8 @@ yyreduce:
        }
     break;
 
-  case 114:
-#line 337 "util/configparser.y"
+  case 115:
+#line 339 "util/configparser.y"
     {
                OUTYY(("P(server_do_udp:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2102,8 +2105,8 @@ yyreduce:
        }
     break;
 
-  case 115:
-#line 346 "util/configparser.y"
+  case 116:
+#line 348 "util/configparser.y"
     {
                OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2113,8 +2116,8 @@ yyreduce:
        }
     break;
 
-  case 116:
-#line 355 "util/configparser.y"
+  case 117:
+#line 357 "util/configparser.y"
     {
                OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2124,8 +2127,8 @@ yyreduce:
        }
     break;
 
-  case 117:
-#line 364 "util/configparser.y"
+  case 118:
+#line 366 "util/configparser.y"
     {
                OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2140,8 +2143,8 @@ yyreduce:
        }
     break;
 
-  case 118:
-#line 378 "util/configparser.y"
+  case 119:
+#line 380 "util/configparser.y"
     {
                OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2151,8 +2154,8 @@ yyreduce:
        }
     break;
 
-  case 119:
-#line 387 "util/configparser.y"
+  case 120:
+#line 389 "util/configparser.y"
     {
                OUTYY(("P(server_chroot:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->chrootdir);
@@ -2160,8 +2163,8 @@ yyreduce:
        }
     break;
 
-  case 120:
-#line 394 "util/configparser.y"
+  case 121:
+#line 396 "util/configparser.y"
     {
                OUTYY(("P(server_username:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->username);
@@ -2169,8 +2172,8 @@ yyreduce:
        }
     break;
 
-  case 121:
-#line 401 "util/configparser.y"
+  case 122:
+#line 403 "util/configparser.y"
     {
                OUTYY(("P(server_directory:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->directory);
@@ -2178,8 +2181,8 @@ yyreduce:
        }
     break;
 
-  case 122:
-#line 408 "util/configparser.y"
+  case 123:
+#line 410 "util/configparser.y"
     {
                OUTYY(("P(server_logfile:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->logfile);
@@ -2188,8 +2191,8 @@ yyreduce:
        }
     break;
 
-  case 123:
-#line 416 "util/configparser.y"
+  case 124:
+#line 418 "util/configparser.y"
     {
                OUTYY(("P(server_pidfile:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->pidfile);
@@ -2197,8 +2200,8 @@ yyreduce:
        }
     break;
 
-  case 124:
-#line 423 "util/configparser.y"
+  case 125:
+#line 425 "util/configparser.y"
     {
                OUTYY(("P(server_root_hints:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[(2) - (2)].str)))
@@ -2206,8 +2209,8 @@ yyreduce:
        }
     break;
 
-  case 125:
-#line 430 "util/configparser.y"
+  case 126:
+#line 432 "util/configparser.y"
     {
                OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->dlv_anchor_file);
@@ -2215,8 +2218,8 @@ yyreduce:
        }
     break;
 
-  case 126:
-#line 437 "util/configparser.y"
+  case 127:
+#line 439 "util/configparser.y"
     {
                OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, (yyvsp[(2) - (2)].str)))
@@ -2224,8 +2227,8 @@ yyreduce:
        }
     break;
 
-  case 127:
-#line 444 "util/configparser.y"
+  case 128:
+#line 446 "util/configparser.y"
     {
                OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
@@ -2234,8 +2237,8 @@ yyreduce:
        }
     break;
 
-  case 128:
-#line 452 "util/configparser.y"
+  case 129:
+#line 454 "util/configparser.y"
     {
                OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
@@ -2244,8 +2247,8 @@ yyreduce:
        }
     break;
 
-  case 129:
-#line 460 "util/configparser.y"
+  case 130:
+#line 462 "util/configparser.y"
     {
                OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[(2) - (2)].str)))
@@ -2253,8 +2256,17 @@ yyreduce:
        }
     break;
 
-  case 130:
-#line 467 "util/configparser.y"
+  case 131:
+#line 469 "util/configparser.y"
+    {
+               OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[(2) - (2)].str)))
+                       yyerror("out of memory");
+       }
+    break;
+
+  case 132:
+#line 476 "util/configparser.y"
     {
                OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2264,8 +2276,8 @@ yyreduce:
        }
     break;
 
-  case 131:
-#line 476 "util/configparser.y"
+  case 133:
+#line 485 "util/configparser.y"
     {
                OUTYY(("P(server_hide_version:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2275,8 +2287,8 @@ yyreduce:
        }
     break;
 
-  case 132:
-#line 485 "util/configparser.y"
+  case 134:
+#line 494 "util/configparser.y"
     {
                OUTYY(("P(server_identity:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->identity);
@@ -2284,8 +2296,8 @@ yyreduce:
        }
     break;
 
-  case 133:
-#line 492 "util/configparser.y"
+  case 135:
+#line 501 "util/configparser.y"
     {
                OUTYY(("P(server_version:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->version);
@@ -2293,8 +2305,8 @@ yyreduce:
        }
     break;
 
-  case 134:
-#line 499 "util/configparser.y"
+  case 136:
+#line 508 "util/configparser.y"
     {
                OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2306,8 +2318,8 @@ yyreduce:
        }
     break;
 
-  case 135:
-#line 510 "util/configparser.y"
+  case 137:
+#line 519 "util/configparser.y"
     {
                OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->msg_cache_size))
@@ -2316,8 +2328,8 @@ yyreduce:
        }
     break;
 
-  case 136:
-#line 518 "util/configparser.y"
+  case 138:
+#line 527 "util/configparser.y"
     {
                OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2331,8 +2343,8 @@ yyreduce:
        }
     break;
 
-  case 137:
-#line 531 "util/configparser.y"
+  case 139:
+#line 540 "util/configparser.y"
     {
                OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2342,8 +2354,8 @@ yyreduce:
        }
     break;
 
-  case 138:
-#line 540 "util/configparser.y"
+  case 140:
+#line 549 "util/configparser.y"
     {
                OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2353,8 +2365,8 @@ yyreduce:
        }
     break;
 
-  case 139:
-#line 549 "util/configparser.y"
+  case 141:
+#line 558 "util/configparser.y"
     {
                OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->rrset_cache_size))
@@ -2363,8 +2375,8 @@ yyreduce:
        }
     break;
 
-  case 140:
-#line 557 "util/configparser.y"
+  case 142:
+#line 566 "util/configparser.y"
     {
                OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2378,8 +2390,8 @@ yyreduce:
        }
     break;
 
-  case 141:
-#line 570 "util/configparser.y"
+  case 143:
+#line 579 "util/configparser.y"
     {
                OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2389,8 +2401,8 @@ yyreduce:
        }
     break;
 
-  case 142:
-#line 579 "util/configparser.y"
+  case 144:
+#line 588 "util/configparser.y"
     {
                OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2400,8 +2412,8 @@ yyreduce:
        }
     break;
 
-  case 143:
-#line 588 "util/configparser.y"
+  case 145:
+#line 597 "util/configparser.y"
     {
                OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2411,8 +2423,8 @@ yyreduce:
        }
     break;
 
-  case 144:
-#line 597 "util/configparser.y"
+  case 146:
+#line 606 "util/configparser.y"
     {
                OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->
@@ -2422,8 +2434,8 @@ yyreduce:
        }
     break;
 
-  case 145:
-#line 606 "util/configparser.y"
+  case 147:
+#line 615 "util/configparser.y"
     {
                OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2437,8 +2449,8 @@ yyreduce:
        }
     break;
 
-  case 146:
-#line 619 "util/configparser.y"
+  case 148:
+#line 628 "util/configparser.y"
     {
                OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->target_fetch_policy);
@@ -2446,8 +2458,8 @@ yyreduce:
        }
     break;
 
-  case 147:
-#line 626 "util/configparser.y"
+  case 149:
+#line 635 "util/configparser.y"
     {
                OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2458,8 +2470,8 @@ yyreduce:
        }
     break;
 
-  case 148:
-#line 636 "util/configparser.y"
+  case 150:
+#line 645 "util/configparser.y"
     {
                OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2470,8 +2482,8 @@ yyreduce:
        }
     break;
 
-  case 149:
-#line 646 "util/configparser.y"
+  case 151:
+#line 655 "util/configparser.y"
     {
                OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2482,8 +2494,8 @@ yyreduce:
        }
     break;
 
-  case 150:
-#line 656 "util/configparser.y"
+  case 152:
+#line 665 "util/configparser.y"
     {
                OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2494,8 +2506,8 @@ yyreduce:
        }
     break;
 
-  case 151:
-#line 666 "util/configparser.y"
+  case 153:
+#line 675 "util/configparser.y"
     {
                OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2506,8 +2518,8 @@ yyreduce:
        }
     break;
 
-  case 152:
-#line 676 "util/configparser.y"
+  case 154:
+#line 685 "util/configparser.y"
     {
                OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2518,8 +2530,8 @@ yyreduce:
        }
     break;
 
-  case 153:
-#line 686 "util/configparser.y"
+  case 155:
+#line 695 "util/configparser.y"
     {
                OUTYY(("P(server_private_address:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[(2) - (2)].str)))
@@ -2527,8 +2539,8 @@ yyreduce:
        }
     break;
 
-  case 154:
-#line 693 "util/configparser.y"
+  case 156:
+#line 702 "util/configparser.y"
     {
                OUTYY(("P(server_private_domain:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[(2) - (2)].str)))
@@ -2536,8 +2548,8 @@ yyreduce:
        }
     break;
 
-  case 155:
-#line 700 "util/configparser.y"
+  case 157:
+#line 709 "util/configparser.y"
     {
                OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2547,8 +2559,8 @@ yyreduce:
        }
     break;
 
-  case 156:
-#line 709 "util/configparser.y"
+  case 158:
+#line 718 "util/configparser.y"
     {
                OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[(2) - (2)].str)))
@@ -2556,8 +2568,8 @@ yyreduce:
        }
     break;
 
-  case 157:
-#line 716 "util/configparser.y"
+  case 159:
+#line 725 "util/configparser.y"
     {
                OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2568,8 +2580,8 @@ yyreduce:
        }
     break;
 
-  case 158:
-#line 726 "util/configparser.y"
+  case 160:
+#line 735 "util/configparser.y"
     {
                OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)));
                if(strcmp((yyvsp[(3) - (3)].str), "deny")!=0 && strcmp((yyvsp[(3) - (3)].str), "refuse")!=0 &&
@@ -2584,8 +2596,8 @@ yyreduce:
        }
     break;
 
-  case 159:
-#line 740 "util/configparser.y"
+  case 161:
+#line 749 "util/configparser.y"
     {
                OUTYY(("P(server_module_conf:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->module_conf);
@@ -2593,8 +2605,8 @@ yyreduce:
        }
     break;
 
-  case 160:
-#line 747 "util/configparser.y"
+  case 162:
+#line 756 "util/configparser.y"
     {
                OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strlen((yyvsp[(2) - (2)].str)) == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) {
@@ -2613,8 +2625,8 @@ yyreduce:
        }
     break;
 
-  case 161:
-#line 765 "util/configparser.y"
+  case 163:
+#line 774 "util/configparser.y"
     {
                OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2624,8 +2636,8 @@ yyreduce:
        }
     break;
 
-  case 162:
-#line 774 "util/configparser.y"
+  case 164:
+#line 783 "util/configparser.y"
     {
                OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2635,8 +2647,8 @@ yyreduce:
        }
     break;
 
-  case 163:
-#line 783 "util/configparser.y"
+  case 165:
+#line 792 "util/configparser.y"
     {
                OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2647,8 +2659,8 @@ yyreduce:
        }
     break;
 
-  case 164:
-#line 793 "util/configparser.y"
+  case 166:
+#line 802 "util/configparser.y"
     {
                OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2659,8 +2671,8 @@ yyreduce:
        }
     break;
 
-  case 165:
-#line 803 "util/configparser.y"
+  case 167:
+#line 812 "util/configparser.y"
     {
                OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->val_nsec3_key_iterations);
@@ -2668,8 +2680,8 @@ yyreduce:
        }
     break;
 
-  case 166:
-#line 810 "util/configparser.y"
+  case 168:
+#line 819 "util/configparser.y"
     {
                OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->key_cache_size))
@@ -2678,8 +2690,8 @@ yyreduce:
        }
     break;
 
-  case 167:
-#line 818 "util/configparser.y"
+  case 169:
+#line 827 "util/configparser.y"
     {
                OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2693,8 +2705,8 @@ yyreduce:
        }
     break;
 
-  case 168:
-#line 831 "util/configparser.y"
+  case 170:
+#line 840 "util/configparser.y"
     {
                OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->neg_cache_size))
@@ -2703,8 +2715,8 @@ yyreduce:
        }
     break;
 
-  case 169:
-#line 839 "util/configparser.y"
+  case 171:
+#line 848 "util/configparser.y"
     {
                OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)));
                if(strcmp((yyvsp[(3) - (3)].str), "static")!=0 && strcmp((yyvsp[(3) - (3)].str), "deny")!=0 &&
@@ -2725,8 +2737,8 @@ yyreduce:
        }
     break;
 
-  case 170:
-#line 859 "util/configparser.y"
+  case 172:
+#line 868 "util/configparser.y"
     {
                OUTYY(("P(server_local_data:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[(2) - (2)].str)))
@@ -2734,8 +2746,8 @@ yyreduce:
        }
     break;
 
-  case 171:
-#line 866 "util/configparser.y"
+  case 173:
+#line 875 "util/configparser.y"
     {
                char* ptr;
                OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[(2) - (2)].str)));
@@ -2751,8 +2763,8 @@ yyreduce:
        }
     break;
 
-  case 172:
-#line 881 "util/configparser.y"
+  case 174:
+#line 890 "util/configparser.y"
     {
                OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->stubs->name);
@@ -2760,8 +2772,8 @@ yyreduce:
        }
     break;
 
-  case 173:
-#line 888 "util/configparser.y"
+  case 175:
+#line 897 "util/configparser.y"
     {
                OUTYY(("P(stub-host:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[(2) - (2)].str)))
@@ -2769,8 +2781,8 @@ yyreduce:
        }
     break;
 
-  case 174:
-#line 895 "util/configparser.y"
+  case 176:
+#line 904 "util/configparser.y"
     {
                OUTYY(("P(stub-addr:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[(2) - (2)].str)))
@@ -2778,8 +2790,8 @@ yyreduce:
        }
     break;
 
-  case 175:
-#line 902 "util/configparser.y"
+  case 177:
+#line 911 "util/configparser.y"
     {
                OUTYY(("P(stub-prime:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2790,8 +2802,8 @@ yyreduce:
        }
     break;
 
-  case 176:
-#line 912 "util/configparser.y"
+  case 178:
+#line 921 "util/configparser.y"
     {
                OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->forwards->name);
@@ -2799,8 +2811,8 @@ yyreduce:
        }
     break;
 
-  case 177:
-#line 919 "util/configparser.y"
+  case 179:
+#line 928 "util/configparser.y"
     {
                OUTYY(("P(forward-host:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[(2) - (2)].str)))
@@ -2808,8 +2820,8 @@ yyreduce:
        }
     break;
 
-  case 178:
-#line 926 "util/configparser.y"
+  case 180:
+#line 935 "util/configparser.y"
     {
                OUTYY(("P(forward-addr:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[(2) - (2)].str)))
@@ -2817,15 +2829,15 @@ yyreduce:
        }
     break;
 
-  case 179:
-#line 933 "util/configparser.y"
+  case 181:
+#line 942 "util/configparser.y"
     { 
                OUTYY(("\nP(remote-control:)\n")); 
        }
     break;
 
-  case 189:
-#line 944 "util/configparser.y"
+  case 191:
+#line 953 "util/configparser.y"
     {
                OUTYY(("P(control_enable:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2836,8 +2848,8 @@ yyreduce:
        }
     break;
 
-  case 190:
-#line 954 "util/configparser.y"
+  case 192:
+#line 963 "util/configparser.y"
     {
                OUTYY(("P(control_port:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2847,8 +2859,8 @@ yyreduce:
        }
     break;
 
-  case 191:
-#line 963 "util/configparser.y"
+  case 193:
+#line 972 "util/configparser.y"
     {
                OUTYY(("P(control_interface:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->control_ifs, (yyvsp[(2) - (2)].str)))
@@ -2856,8 +2868,8 @@ yyreduce:
        }
     break;
 
-  case 192:
-#line 970 "util/configparser.y"
+  case 194:
+#line 979 "util/configparser.y"
     {
                OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->server_key_file);
@@ -2865,8 +2877,8 @@ yyreduce:
        }
     break;
 
-  case 193:
-#line 977 "util/configparser.y"
+  case 195:
+#line 986 "util/configparser.y"
     {
                OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->server_cert_file);
@@ -2874,8 +2886,8 @@ yyreduce:
        }
     break;
 
-  case 194:
-#line 984 "util/configparser.y"
+  case 196:
+#line 993 "util/configparser.y"
     {
                OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->control_key_file);
@@ -2883,8 +2895,8 @@ yyreduce:
        }
     break;
 
-  case 195:
-#line 991 "util/configparser.y"
+  case 197:
+#line 1000 "util/configparser.y"
     {
                OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->control_cert_file);
@@ -2894,7 +2906,7 @@ yyreduce:
 
 
 /* Line 1267 of yacc.c.  */
-#line 2898 "util/configparser.c"
+#line 2910 "util/configparser.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -3108,7 +3120,7 @@ yyreturn:
 }
 
 
-#line 997 "util/configparser.y"
+#line 1006 "util/configparser.y"
 
 
 /* parse helper routines could be here */
index e1e4b4de4f3d6bf81748fbe78c399b4c7c968671..47f8a887f131c193c32302784712f19eaec99540 100644 (file)
      VAR_JOSTLE_TIMEOUT = 353,
      VAR_STUB_PRIME = 354,
      VAR_UNWANTED_REPLY_THRESHOLD = 355,
-     VAR_LOG_TIME_ASCII = 356
+     VAR_LOG_TIME_ASCII = 356,
+     VAR_DOMAIN_INSECURE = 357
    };
 #endif
 /* Tokens.  */
 #define VAR_STUB_PRIME 354
 #define VAR_UNWANTED_REPLY_THRESHOLD 355
 #define VAR_LOG_TIME_ASCII 356
+#define VAR_DOMAIN_INSECURE 357
 
 
 
@@ -251,7 +253,7 @@ typedef union YYSTYPE
        char*   str;
 }
 /* Line 1489 of yacc.c.  */
-#line 255 "util/configparser.h"
+#line 257 "util/configparser.h"
        YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
index 4318f5f4bbc76d333214ec2dcc5c33f3bf8fa59b..230c3d83853dfed045f4e78cfc28b0aff103e2b1 100644 (file)
@@ -97,6 +97,7 @@ extern struct config_parser_state* cfg_parser;
 %token VAR_SERVER_CERT_FILE VAR_CONTROL_KEY_FILE VAR_CONTROL_CERT_FILE
 %token VAR_EXTENDED_STATISTICS VAR_LOCAL_DATA_PTR VAR_JOSTLE_TIMEOUT
 %token VAR_STUB_PRIME VAR_UNWANTED_REPLY_THRESHOLD VAR_LOG_TIME_ASCII
+%token VAR_DOMAIN_INSECURE
 
 %%
 toplevelvars: /* empty */ | toplevelvars toplevelvar ;
@@ -143,7 +144,8 @@ content_server: server_num_threads | server_verbosity | server_port |
        server_harden_referral_path | server_private_address |
        server_private_domain | server_extended_statistics | 
        server_local_data_ptr | server_jostle_timeout | 
-       server_unwanted_reply_threshold | server_log_time_ascii
+       server_unwanted_reply_threshold | server_log_time_ascii | 
+       server_domain_insecure
        ;
 stubstart: VAR_STUB_ZONE
        {
@@ -463,6 +465,13 @@ server_trust_anchor: VAR_TRUST_ANCHOR STRING
                        yyerror("out of memory");
        }
        ;
+server_domain_insecure: VAR_DOMAIN_INSECURE STRING
+       {
+               OUTYY(("P(server_domain_insecure:%s)\n", $2));
+               if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, $2))
+                       yyerror("out of memory");
+       }
+       ;
 server_hide_identity: VAR_HIDE_IDENTITY STRING
        {
                OUTYY(("P(server_hide_identity:%s)\n", $2));
index 9066078c505dc7ba49af5e54ecba9b1cb7e2c66e..9c123acafbf99d479399304669aa936f7d111429 100644 (file)
@@ -206,6 +206,7 @@ anchor_new_ta_key(struct val_anchors* anchors, uint8_t* rdata, size_t rdata_len,
  * @param type: type or RR
  * @param dclass: class of RR
  * @param rdata: rdata wireformat, starting with rdlength.
+ *     If NULL, nothing is stored, but an entry is created.
  * @param rdata_len: length of rdata including rdlength.
  * @return: NULL on error, else the trust anchor.
  */
@@ -229,6 +230,8 @@ anchor_store_new_key(struct val_anchors* anchors, uint8_t* name, uint16_t type,
                if(!ta)
                        return NULL;
        }
+       if(!rdata)
+               return ta;
        /* look for duplicates */
        if(anchor_find_key(ta, rdata, rdata_len, type)) {
                return ta;
@@ -281,6 +284,27 @@ anchor_store_new_rr(struct val_anchors* anchors, ldns_buffer* buffer,
        return ta;
 }
 
+/**
+ * Insert insecure anchor
+ * @param anchors: anchor storage.
+ * @param str: the domain name.
+ * @return NULL on error, Else last trust anchor point
+ */
+static struct trust_anchor*
+anchor_insert_insecure(struct val_anchors* anchors, const char* str)
+{
+       struct trust_anchor* ta;
+       ldns_rdf* nm = ldns_dname_new_frm_str(str);
+       if(!nm) {
+               log_err("parse error in domain name '%s'", str);
+               return NULL;
+       }
+       ta = anchor_store_new_key(anchors, ldns_rdf_data(nm), LDNS_RR_TYPE_DS,
+               LDNS_RR_CLASS_IN, NULL, 0);
+       ldns_rdf_deep_free(nm);
+       return ta;
+}
+
 struct trust_anchor*
 anchor_store_str(struct val_anchors* anchors, ldns_buffer* buffer,
        const char* str)
@@ -867,6 +891,10 @@ anchors_assemble_rrsets(struct val_anchors* anchors)
        ta=(struct trust_anchor*)rbtree_first(anchors->tree);
        while((rbnode_t*)ta != RBTREE_NULL) {
                next = (struct trust_anchor*)rbtree_next(&ta->node);
+               if(ta->numDS == 0 && ta->numDNSKEY == 0) {
+                       ta = next; /* skip unsigned entries, nothing to do */
+                       continue;
+               }
                if(!anchors_assemble(anchors, ta)) {
                        log_err("out of memory");
                        return 0;
@@ -901,6 +929,15 @@ anchors_apply_cfg(struct val_anchors* anchors, struct config_file* cfg)
        struct config_strlist* f;
        char* nm;
        ldns_buffer* parsebuf = ldns_buffer_new(65535);
+       for(f = cfg->domain_insecure; f; f = f->next) {
+               if(!f->str || f->str[0] == 0) /* empty "" */
+                       continue;
+               if(!anchor_insert_insecure(anchors, f->str)) {
+                       log_err("error in domain-insecure: %s", f->str);
+                       ldns_buffer_free(parsebuf);
+                       return 0;
+               }
+       }
        for(f = cfg->trust_anchor_file_list; f; f = f->next) {
                if(!f->str || f->str[0] == 0) /* empty "" */
                        continue;
index 2997663586bb15de3d9a24504518e1e47674901f..b26de32dc38f979d5bbbab672e35649d952118f7 100644 (file)
@@ -1216,6 +1216,7 @@ processInit(struct module_qstate* qstate, struct val_qstate* vq,
                        val_mark_insecure(vq->chase_reply, 
                                vq->trust_anchor->name, 
                                qstate->env->rrset_cache, qstate->env);
+                       vq->dlv_checked=1; /* skip DLV check */
                        /* go to finished state to cache this result */
                        vq->state = VAL_FINISHED_STATE;
                        return 1;